From 86c3685f6cf811b038ef5271699df8dccd1db297 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Wed, 25 Dec 2019 23:07:34 +0100 Subject: [PATCH 001/104] sdcard support (experimental) --- README.md | 4 +-- include/sdcard.h | 16 +++++++++++ include/senddata.h | 4 +++ platformio.ini | 5 ++-- src/hal/generic.h | 8 ++++++ src/hal/ttgov1.h | 8 ++++++ src/hal/ttgov2.h | 8 ++++++ src/hal/ttgov21new.h | 8 ++++++ src/hal/ttgov21old.h | 8 ++++++ src/main.cpp | 5 ++++ src/sdcard.cpp | 67 ++++++++++++++++++++++++++++++++++++++++++++ src/senddata.cpp | 11 ++++++-- 12 files changed, 145 insertions(+), 7 deletions(-) create mode 100644 include/sdcard.h create mode 100644 src/sdcard.cpp diff --git a/README.md b/README.md index 5be48ef1..a9833124 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Paxcounter is a proof-of-concept device for metering passenger flows in realtime Intention of this project is to do this without intrusion in privacy: You don't need to track people owned devices, if you just want to count them. Therefore, Paxcounter does not persistenly store MAC adresses and does no kind of fingerprinting the scanned devices. -Data is transferred to a server via a LoRaWAN network, and/or a wired SPI slave interface. +Data is transferred to a server via a LoRaWAN network, and/or a wired SPI slave interface. It can also be stored on a local SD-card. You can build this project battery powered and reach a full day uptime with a single 18650 Li-Ion cell. @@ -33,7 +33,7 @@ This can all be done with a single small and cheap ESP32 board for less than $20 *LoRa & SPI*: - Heltec: LoRa-32 v1 and v2 -- TTGO: T1, T2, T3, T-Beam, T-Fox +- TTGO: T1*, T2*, T3*, T-Beam, T-Fox (* supports microSD-card) - Pycom: LoPy, LoPy4, FiPy - Radioshuttle.de: [ECO Power Board](https://www.radioshuttle.de/esp32-eco-power/esp32-eco-power-board/) - WeMos: LoLin32 + [LoraNode32 shield](https://github.com/hallard/LoLin32-Lora), diff --git a/include/sdcard.h b/include/sdcard.h new file mode 100644 index 00000000..051baa19 --- /dev/null +++ b/include/sdcard.h @@ -0,0 +1,16 @@ +#ifndef _SDCARD_H +#define _SDCARD_H + +#include +#include + +#include +#include + +#define SDCARD_FILE_NAME "paxcount.%02d" +#define SDCARD_FILE_HEADER "date, time, wifi, bluet" + +bool sdcardInit( void ); +void sdcardWriteData( uint16_t, uint16_t); + +#endif \ No newline at end of file diff --git a/include/senddata.h b/include/senddata.h index 0151f7e2..5022800c 100644 --- a/include/senddata.h +++ b/include/senddata.h @@ -12,6 +12,10 @@ #include "display.h" #endif +#ifdef HAS_SDCARD +#include "sdcard.h" +#endif + extern Ticker sendcycler; void SendPayload(uint8_t port, sendprio_t prio); diff --git a/platformio.ini b/platformio.ini index bd6fdaf2..c113d3c2 100644 --- a/platformio.ini +++ b/platformio.ini @@ -7,7 +7,7 @@ ; ---> SELECT THE TARGET PLATFORM HERE! <--- [board] -halfile = generic.h +;halfile = generic.h ;halfile = ebox.h ;halfile = eboxtube.h ;halfile = ecopower.h @@ -16,7 +16,7 @@ halfile = generic.h ;halfile = ttgov1.h ;halfile = ttgov2.h ;halfile = ttgov21old.h -;halfile = ttgov21new.h +halfile = ttgov21new.h ;halfile = ttgofox.h ;halfile = ttgobeam.h ;halfile = ttgobeam10.h @@ -78,6 +78,7 @@ lib_deps_basic = 274@>=2.3.3 ; #274 RTC by Michael Miller SimpleButton AXP202X_Library@>=1.1.0 ; AXP202 PMU lib by Lewis He + esp32-micro-sdcard lib_deps_all = ${common.lib_deps_basic} ${common.lib_deps_lora} diff --git a/src/hal/generic.h b/src/hal/generic.h index 1990c736..5d56e591 100644 --- a/src/hal/generic.h +++ b/src/hal/generic.h @@ -18,6 +18,14 @@ #define SPI_SCLK GPIO_NUM_18 #define SPI_CS GPIO_NUM_5 +// enable only if you want to store a local paxcount table on the device +#define HAS_SDCARD 1 // this board has an SD-card-reader/writer +// Pins for SD-card +#define SDCARD_CS (13) +#define SDCARD_MOSI (15) +#define SDCARD_MISO (2) +#define SDCARD_SCLK (14) + // enable only if device has these sensors, otherwise comment these lines // tutorial to connect BME sensor see here: // https://sbamueller.wordpress.com/2019/02/26/paxcounter-mit-umweltsensor/ diff --git a/src/hal/ttgov1.h b/src/hal/ttgov1.h index 1aaf20c3..7d96ab54 100644 --- a/src/hal/ttgov1.h +++ b/src/hal/ttgov1.h @@ -18,6 +18,14 @@ #define LED_ACTIVE_LOW 1 // Onboard LED is active when pin is LOW #define HAS_BUTTON KEY_BUILTIN +// enable only if you want to store a local paxcount table on the device +#define HAS_SDCARD 1 // this board has an SD-card-reader/writer +// Pins for SD-card +#define SDCARD_CS (13) +#define SDCARD_MOSI (15) +#define SDCARD_MISO (2) +#define SDCARD_SCLK (14) + // Pins for I2C interface of OLED Display #define MY_OLED_SDA (4) #define MY_OLED_SCL (15) diff --git a/src/hal/ttgov2.h b/src/hal/ttgov2.h index e5e784f3..9faf1249 100644 --- a/src/hal/ttgov2.h +++ b/src/hal/ttgov2.h @@ -19,6 +19,14 @@ // disable brownout detection (needed on TTGOv2 for battery powered operation) #define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature +// enable only if you want to store a local paxcount table on the device +#define HAS_SDCARD 1 // this board has an SD-card-reader/writer +// Pins for SD-card +#define SDCARD_CS (13) +#define SDCARD_MOSI (15) +#define SDCARD_MISO (2) +#define SDCARD_SCLK (14) + // Pins for I2C interface of OLED Display #define MY_OLED_SDA (21) #define MY_OLED_SCL (22) diff --git a/src/hal/ttgov21new.h b/src/hal/ttgov21new.h index 4c1cd4fc..90f93c7a 100644 --- a/src/hal/ttgov21new.h +++ b/src/hal/ttgov21new.h @@ -15,6 +15,14 @@ #define HAS_LORA 1 // comment out if device shall not send data via LoRa #define CFG_sx1276_radio 1 // HPD13A LoRa SoC +// enable only if you want to store a local paxcount table on the device +#define HAS_SDCARD 1 // this board has an SD-card-reader/writer +// Pins for SD-card +#define SDCARD_CS (13) +#define SDCARD_MOSI (15) +#define SDCARD_MISO (2) +#define SDCARD_SCLK (14) + // enable only if device has these sensors, otherwise comment these lines // BME280 sensor on I2C bus //#define HAS_BME 1 // Enable BME sensors in general diff --git a/src/hal/ttgov21old.h b/src/hal/ttgov21old.h index 20cc4a88..7b2a34b6 100644 --- a/src/hal/ttgov21old.h +++ b/src/hal/ttgov21old.h @@ -19,6 +19,14 @@ #define HAS_LED NOT_A_PIN // no usable LED on board #define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature +// enable only if you want to store a local paxcount table on the device +#define HAS_SDCARD 1 // this board has an SD-card-reader/writer +// Pins for SD-card +#define SDCARD_CS (13) +#define SDCARD_MOSI (15) +#define SDCARD_MISO (2) +#define SDCARD_SCLK (14) + #define HAS_DISPLAY 1 #define DISPLAY_FLIP 1 // rotated display //#define BAT_MEASURE_ADC ADC1_GPIO35_CHANNEL // battery probe GPIO pin -> ADC1_CHANNEL_7 diff --git a/src/main.cpp b/src/main.cpp index 6418fb36..6d371c31 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -323,6 +323,11 @@ void setup() { assert(spi_init() == ESP_OK); #endif +#if (HAS_SDCARD) + if ( sdcardInit() ) + strcat_P(features, " SD"); +#endif + #if (VENDORFILTER) strcat_P(features, " FILTER"); #endif diff --git a/src/sdcard.cpp b/src/sdcard.cpp new file mode 100644 index 00000000..67c590b4 --- /dev/null +++ b/src/sdcard.cpp @@ -0,0 +1,67 @@ +// routines for writing data to an SD-card, if present + +// Local logging tag +static const char TAG[] = __FILE__; + +#include "sdcard.h" + +static bool useSDCard; + +static void createFile(void); + +File fileSDCard; + +bool sdcardInit() { + ESP_LOGD(TAG, "looking for SD-card..."); + useSDCard = SD.begin(SDCARD_CS, SDCARD_MOSI, SDCARD_MISO, SDCARD_SCLK); + if (useSDCard) + createFile(); + return useSDCard; +} + +void sdcardWriteData(uint16_t noWifi, uint16_t noBle) { + static int counterWrites = 0; + char tempBuffer[12 + 1]; + time_t t = now(); + + if (!useSDCard) + return; + + ESP_LOGD(TAG, "writing to SD-card"); + sprintf(tempBuffer, "%02d.%02d.%4d,", day(t), month(t), year(t)); + fileSDCard.print(tempBuffer); + sprintf(tempBuffer, "%02d:%02d:%02d,", hour(t), minute(t), second(t)); + fileSDCard.print(tempBuffer); + sprintf(tempBuffer, "%d,%d", noWifi, noBle); + fileSDCard.println(tempBuffer); + + if (++counterWrites > 2) { + // force writing to SD-card + ESP_LOGD(TAG, "flushing data to card"); + fileSDCard.flush(); + counterWrites = 0; + } +} + +void createFile(void) { + char bufferFilename[8 + 1 + 3 + 1]; + + useSDCard = false; + + for (int i = 0; i < 100; i++) { + sprintf(bufferFilename, SDCARD_FILE_NAME, i); + ESP_LOGD(TAG, "SD: looking for file <%s>", bufferFilename); + bool fileExists = SD.exists(bufferFilename); + if (!fileExists) { + ESP_LOGD(TAG, "SD: file does not exist: opening"); + fileSDCard = SD.open(bufferFilename, FILE_WRITE); + if (fileSDCard) { + ESP_LOGD(TAG, "SD: name opended: <%s>", bufferFilename); + fileSDCard.println(SDCARD_FILE_HEADER); + useSDCard = true; + break; + } + } + } + return; +} \ No newline at end of file diff --git a/src/senddata.cpp b/src/senddata.cpp index 2dfcbbf3..da973f3f 100644 --- a/src/senddata.cpp +++ b/src/senddata.cpp @@ -51,6 +51,11 @@ void SendPayload(uint8_t port, sendprio_t prio) { spi_enqueuedata(&SendBuffer); #endif +// write data to sdcard, if present +#ifdef HAS_SDCARD + sdcardWriteData(macs_wifi, macs_ble); +#endif + } // SendPayload // interrupt triggered function to prepare payload to send @@ -72,7 +77,7 @@ void sendData() { if (cfg.blescan) payload.addCount(macs_ble, MAC_SNIFF_BLE); #endif -#if (HAS_GPS) +#if (HAS_GPS) if (GPSPORT == COUNTERPORT) { // send GPS position only if we have a fix if (gps.location.isValid()) { @@ -82,7 +87,7 @@ void sendData() { ESP_LOGD(TAG, "No valid GPS position"); } #endif -#if (PAYLOAD_OPENSENSEBOX) +#if (PAYLOAD_OPENSENSEBOX) if (cfg.wifiscan) payload.addCount(macs_wifi, MAC_SNIFF_WIFI); if (cfg.blescan) @@ -110,7 +115,7 @@ void sendData() { break; #endif -#if (HAS_GPS) +#if (HAS_GPS) case GPS_DATA: if (GPSPORT != COUNTERPORT) { // send GPS position only if we have a fix From 2544b371d8fe2f9d2bf5460b3a965df711a8216b Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Wed, 25 Dec 2019 23:25:51 +0100 Subject: [PATCH 002/104] code sanitization --- src/main.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 6d371c31..5e761b0e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -323,9 +323,9 @@ void setup() { assert(spi_init() == ESP_OK); #endif -#if (HAS_SDCARD) - if ( sdcardInit() ) - strcat_P(features, " SD"); +#ifdef HAS_SDCARD + if (sdcardInit()) + strcat_P(features, " SD"); #endif #if (VENDORFILTER) From fac48ed9c4805d6e5498466f75fd86a285c6a288 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Thu, 26 Dec 2019 16:55:19 +0100 Subject: [PATCH 003/104] irqhandler code optimized --- src/irqhandler.cpp | 51 ++++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/src/irqhandler.cpp b/src/irqhandler.cpp index e9bc52c6..af0721a4 100644 --- a/src/irqhandler.cpp +++ b/src/irqhandler.cpp @@ -8,8 +8,7 @@ void irqHandler(void *pvParameters) { configASSERT(((uint32_t)pvParameters) == 1); // FreeRTOS check - static uint32_t InterruptStatus = 0x00; - static bool mask_irq = false; + uint32_t InterruptStatus; // task remains in blocked state until it is notified by an irq for (;;) { @@ -19,22 +18,17 @@ void irqHandler(void *pvParameters) { portMAX_DELAY); // wait forever if (InterruptStatus & UNMASK_IRQ) // interrupt handler to be enabled? - mask_irq = false; - - // suppress processing if interrupt handler is disabled + InterruptStatus &= ~MASK_IRQ; // then clear irq mask flag + // else suppress processing if interrupt handler is disabled // or time critical lmic jobs are pending in next 100ms #if (HAS_LORA) - else if (mask_irq || os_queryTimeCriticalJobs(ms2osticks(100))) + else if ((InterruptStatus & MASK_IRQ) || + os_queryTimeCriticalJobs(ms2osticks(100))) #else - else if (mask_irq) + else if ((InterruptStatus & MASK_IRQ) #endif continue; - else if (InterruptStatus & MASK_IRQ) { // interrupt handler to be disabled? - mask_irq = true; - continue; - } - // button pressed? #ifdef HAS_BUTTON if (InterruptStatus & BUTTON_IRQ) { @@ -59,21 +53,6 @@ void irqHandler(void *pvParameters) { } #endif -// BME sensor data to be read? -#if (HAS_BME) - if (InterruptStatus & BME_IRQ) { - bme_storedata(&bme_status); - InterruptStatus &= ~BME_IRQ; - } - -#endif - - // are cyclic tasks due? - if (InterruptStatus & CYCLIC_IRQ) { - doHousekeeping(); - InterruptStatus &= ~CYCLIC_IRQ; - } - #if (TIME_SYNC_INTERVAL) // is time to be synced? if (InterruptStatus & TIMESYNC_IRQ) { @@ -83,6 +62,20 @@ void irqHandler(void *pvParameters) { } #endif +// BME sensor data to be read? +#if (HAS_BME) + if (InterruptStatus & BME_IRQ) { + bme_storedata(&bme_status); + InterruptStatus &= ~BME_IRQ; + } +#endif + + // are cyclic tasks due? + if (InterruptStatus & CYCLIC_IRQ) { + doHousekeeping(); + InterruptStatus &= ~CYCLIC_IRQ; + } + // do we have a power event? #if (HAS_PMU) if (InterruptStatus & PMU_IRQ) { @@ -96,8 +89,8 @@ void irqHandler(void *pvParameters) { sendData(); InterruptStatus &= ~SENDCYCLE_IRQ; } - } -} + } // for +} // irqHandler() // esp32 hardware timer triggered interrupt service routines // they notify the irq handler task From 985548e73e1904fb96f988c991e077aa62e23a6e Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Thu, 26 Dec 2019 16:58:42 +0100 Subject: [PATCH 004/104] irqhandler.cpp code sanitization --- src/irqhandler.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/irqhandler.cpp b/src/irqhandler.cpp index af0721a4..636fbfdb 100644 --- a/src/irqhandler.cpp +++ b/src/irqhandler.cpp @@ -19,14 +19,13 @@ void irqHandler(void *pvParameters) { if (InterruptStatus & UNMASK_IRQ) // interrupt handler to be enabled? InterruptStatus &= ~MASK_IRQ; // then clear irq mask flag - // else suppress processing if interrupt handler is disabled - // or time critical lmic jobs are pending in next 100ms -#if (HAS_LORA) - else if ((InterruptStatus & MASK_IRQ) || - os_queryTimeCriticalJobs(ms2osticks(100))) -#else + // else suppress processing if interrupt handler is disabled + // or time critical lmic jobs are pending in next 100ms else if ((InterruptStatus & MASK_IRQ) +#if (HAS_LORA) + || os_queryTimeCriticalJobs(ms2osticks(100)) #endif + ) continue; // button pressed? From b9949d8eb9fe826b49c150429ea82ab05b1a94b3 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Fri, 27 Dec 2019 12:57:22 +0100 Subject: [PATCH 005/104] bugfix in decoders plain & packed --- src/TTN/packed_decoder.js | 8 +++++--- src/TTN/plain_decoder.js | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/TTN/packed_decoder.js b/src/TTN/packed_decoder.js index 0624d885..291ee8a7 100644 --- a/src/TTN/packed_decoder.js +++ b/src/TTN/packed_decoder.js @@ -4,6 +4,8 @@ function Decoder(bytes, port) { var decoded = {}; + decoded.wifi = 0; + decoded.ble = 0; if (bytes.length === 0) { return {}; @@ -147,7 +149,7 @@ var int8 = function (bytes) { if (bytes.length !== int8.BYTES) { throw new Error('int8 must have exactly 1 byte'); } - var value = +(bytesToInt(bytes)); + var value = +(bytesToInt(bytes)); if (value > 127) { value -= 256; } @@ -159,7 +161,7 @@ var int16 = function (bytes) { if (bytes.length !== int16.BYTES) { throw new Error('int16 must have exactly 2 bytes'); } - var value = +(bytesToInt(bytes)); + var value = +(bytesToInt(bytes)); if (value > 32767) { value -= 65536; } @@ -171,7 +173,7 @@ var int32 = function (bytes) { if (bytes.length !== int32.BYTES) { throw new Error('int32 must have exactly 4 bytes'); } - var value = +(bytesToInt(bytes)); + var value = +(bytesToInt(bytes)); if (value > 2147483647) { value -= 4294967296; } diff --git a/src/TTN/plain_decoder.js b/src/TTN/plain_decoder.js index b7478b9c..4e1a7a17 100644 --- a/src/TTN/plain_decoder.js +++ b/src/TTN/plain_decoder.js @@ -3,6 +3,8 @@ function Decoder(bytes, port) { var decoded = {}; + decoded.wifi = 0; + decoded.ble = 0; if (port === 1) { var i = 0; @@ -10,7 +12,7 @@ function Decoder(bytes, port) { if (bytes.length >= 2) { decoded.wifi = (bytes[i++] << 8) | bytes[i++]; } - + if (bytes.length === 4 || bytes.length > 15) { decoded.ble = (bytes[i++] << 8) | bytes[i++]; } From 833ff79c1234029ac03af041888ba1b9b7ceaf6a Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Fri, 27 Dec 2019 18:34:05 +0100 Subject: [PATCH 006/104] platformio.ini sanitized --- platformio.ini | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/platformio.ini b/platformio.ini index bd6fdaf2..b5e07960 100644 --- a/platformio.ini +++ b/platformio.ini @@ -55,15 +55,13 @@ platform_espressif32 = espressif32@1.11.1 monitor_speed = 115200 upload_speed = 115200 lib_deps_lora = - ;MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore - https://github.com/mcci-catena/arduino-lmic.git#8a62487 + MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore lib_deps_display = - ;ss_oled@>=3.1.1 ; simple and small OLED lib by Larry Bank - https://github.com/bitbank2/ss_oled.git#246d963 + ss_oled@>=3.1.1 ; simple and small OLED lib by Larry Bank BitBang_I2C@>=1.2.0 QRCode@>=0.0.1 lib_deps_matrix_display = - https://github.com/Seeed-Studio/Ultrathin_LED_Matrix.git + Ultrathin_LED_Matrix lib_deps_rgbled = SmartLeds@>=1.1.6 lib_deps_gps = From ea097aeb4e683c9ef910e31aaea44312f1c786f0 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Sat, 28 Dec 2019 11:45:10 +0100 Subject: [PATCH 007/104] describing the handling of a SD-card --- README.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/README.md b/README.md index a9833124..e25a7bdd 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ Depending on board hardware following features are supported: - IF482 (serial) and DCF77 (gpio) time telegram generator - Switch external power / battery - LED Matrix display (similar to [this 64x16 model](https://www.instructables.com/id/64x16-RED-LED-Marquee/), can be ordered on [Aliexpress](https://www.aliexpress.com/item/P3-75-dot-matrix-led-module-3-75mm-high-clear-top1-for-text-display-304-60mm/32616683948.html)) +- SD-card (see section SD-card here) Target platform must be selected in [platformio.ini](https://github.com/cyberman54/ESP32-Paxcounter/blob/master/platformio.ini).
Hardware dependent settings (pinout etc.) are stored in board files in /hal directory. If you want to use a ESP32 board which is not yet supported, use hal file generic.h and tailor pin mappings to your needs. Pull requests for new boards welcome.
@@ -196,6 +197,43 @@ Follow all steps so far for preparing the device, use the packed payload format. There in the sensor configuration select "TheThingsNetwork" and set Decoding Profil to "LoRa serialization", enter your TTN Application and Device Id. Decoding option has to be [{"decoder":"latLng"},{"decoder":"uint16","sensor_id":"yoursensorid"}] +# SD-card +Data can be stored on an SD-card if one is availabe. Simply choose the file in src/hal and add the following lines to your hal-file: + + #define HAS_SDCARD 1 // this board has an SD-card-reader/writer + // Pins for SD-card + #define SDCARD_CS (13) // fill in the correct numbers for your board + #define SDCARD_MOSI (15) + #define SDCARD_MISO (2) + #define SDCARD_SCLK (14) + +Please choose the correct number for the connection of the reader/writer. + +This is an example of a board with SD-card: https://www.aliexpress.com/item/32990008126.html +In this case you take the file src/hal/ttgov21new.h and add the lines given above (numbers given are for this board). + +Another approach would be this tiny board: https://www.aliexpress.com/item/32424558182.html (needs 5V). +In this case you choose the correct file for your ESP32-board in the src/hal-directory and add the lines given above to the correct h-file. Please correct the numbers given in the example to the numbers used corresponding to your wiring. + +Some hints: +These cheap devices often handle SD-cards up to 32GB, not bigger ones. They can handle files in the old DOS-way, to say the filenames are in the 8.3-format. And they often cannot handle subdirectories. + +The software included here writes data in a file named PAXCOUNT.xx, where xx can range from 00 to 99. The software starts with 00, checks to see if such a file already exists and if yes it will continue with the next number (up to 99 - in this case it will return no sd-card). So an existing file will not be overwritten. + +The data is written to the card and after 3 write-operations the data is flushed to the disk. So maybe the last 3 minutes of data get lost when you disconnect the PAXCOUNTER from power. + +And finally: this is the data written to the disk: + + date, time, wifi, bluet + 00.00.1970,00:01:09,2,0 + 00.00.1970,00:02:09,1,0 + 00.00.1970,00:03:09,2,0 + +Format of the data is CSV, which can easily imported into LibreOffice, Excel, ..... + +If you want to change this please look into src/sdcard.cpp and include/sdcard.h. + + # Payload format You can select different payload formats in [paxcounter.conf](src/paxcounter.conf#L12): From a7d05db3350f3bcbbf402202fe93d3b5ea1cbb53 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Sun, 29 Dec 2019 12:37:44 +0100 Subject: [PATCH 008/104] readme.md: update credits --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e25a7bdd..f67287dd 100644 --- a/README.md +++ b/README.md @@ -545,3 +545,4 @@ Thanks to - [terrillmoore](https://github.com/mcci-catena) for maintaining the LMIC for arduino LoRaWAN stack - [sbamueller](https://github.com/sbamueller) for writing the tutorial in Make Magazine - [Stefan](https://github.com/nerdyscout) for paxcounter opensensebox integration +- [August Quint](https://github.com/AugustQu) for adding SD card data logger support From 290818787409c4be0a84b1b7516a9b995ed9510e Mon Sep 17 00:00:00 2001 From: cyberman54 Date: Mon, 30 Dec 2019 17:24:40 +0100 Subject: [PATCH 009/104] v1.9.85 --- platformio.ini | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/platformio.ini b/platformio.ini index dd56cf4c..e7ecfb92 100644 --- a/platformio.ini +++ b/platformio.ini @@ -16,10 +16,10 @@ ;halfile = ttgov1.h ;halfile = ttgov2.h ;halfile = ttgov21old.h -halfile = ttgov21new.h +;halfile = ttgov21new.h ;halfile = ttgofox.h ;halfile = ttgobeam.h -;halfile = ttgobeam10.h +halfile = ttgobeam10.h ;halfile = fipy.h ;halfile = lopy.h ;halfile = lopy4.h @@ -43,7 +43,7 @@ description = Paxcounter is a device for metering passenger flows in realtime. I [common] ; for release_version use max. 10 chars total, use any decimal format like "a.b.c" -release_version = 1.9.84 +release_version = 1.9.85 ; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running! ; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose debug_level = 3 @@ -55,10 +55,11 @@ platform_espressif32 = espressif32@1.11.1 monitor_speed = 115200 upload_speed = 115200 lib_deps_lora = - MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore + ;MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore + https://github.com/mcci-catena/arduino-lmic.git lib_deps_display = - ss_oled@>=3.1.1 ; simple and small OLED lib by Larry Bank - BitBang_I2C@>=1.2.0 + ss_oled@>=3.2.0 ; simple and small OLED lib by Larry Bank + BitBang_I2C@>=1.3.0 QRCode@>=0.0.1 lib_deps_matrix_display = Ultrathin_LED_Matrix @@ -67,12 +68,12 @@ lib_deps_rgbled = lib_deps_gps = 1655@>=1.0.2 ; #1655 TinyGPSPlus by Mikal Hart lib_deps_sensors = - Adafruit Unified Sensor@>=1.0.3 - Adafruit BME280 Library@>=1.0.10 + Adafruit Unified Sensor@>=1.1.1 + Adafruit BME280 Library@>=2.0.0 Adafruit BMP085 Library@>=1.0.1 lib_deps_basic = ArduinoJson@^5.13.1 - 76@>=1.2.2 ; #76 Timezone by Jack Christensen + 76@>=1.2.3 ; #76 Timezone by Jack Christensen 274@>=2.3.3 ; #274 RTC by Michael Miller SimpleButton AXP202X_Library@>=1.1.0 ; AXP202 PMU lib by Lewis He From b734f6213b404d03791ba271cce61015c4f3a0b2 Mon Sep 17 00:00:00 2001 From: cyberman54 Date: Mon, 30 Dec 2019 17:25:05 +0100 Subject: [PATCH 010/104] sdcard.cpp: added compiler directive --- src/sdcard.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/sdcard.cpp b/src/sdcard.cpp index 67c590b4..749944ad 100644 --- a/src/sdcard.cpp +++ b/src/sdcard.cpp @@ -1,5 +1,7 @@ // routines for writing data to an SD-card, if present +#if HAS_SDCARD) + // Local logging tag static const char TAG[] = __FILE__; @@ -64,4 +66,6 @@ void createFile(void) { } } return; -} \ No newline at end of file +} + +#endif // (HAS_SDCARD) \ No newline at end of file From 3b6d05b2afaf85be62392a145e8f50733456d0ae Mon Sep 17 00:00:00 2001 From: cyberman54 Date: Mon, 30 Dec 2019 18:10:44 +0100 Subject: [PATCH 011/104] bugfix sdcard.cpp --- src/sdcard.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sdcard.cpp b/src/sdcard.cpp index 749944ad..0633151f 100644 --- a/src/sdcard.cpp +++ b/src/sdcard.cpp @@ -1,6 +1,6 @@ // routines for writing data to an SD-card, if present -#if HAS_SDCARD) +#if (HAS_SDCARD) // Local logging tag static const char TAG[] = __FILE__; From ea40041960f380746cb51c91716b4f68bea75452 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 31 Dec 2019 11:18:20 +0100 Subject: [PATCH 012/104] lmic_config.h removed clock error default --- src/lmic_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lmic_config.h b/src/lmic_config.h index dc55260a..a65657e9 100644 --- a/src/lmic_config.h +++ b/src/lmic_config.h @@ -31,7 +31,7 @@ // so consuming more power. You may sharpen (reduce) this value if you are // limited on battery. // ATTN: VALUES > 7 WILL CAUSE RECEPTION AND JOIN PROBLEMS WITH HIGH SF RATES -#define CLOCK_ERROR_PROCENTAGE 5 +//#define CLOCK_ERROR_PROCENTAGE 5 // Set this to 1 to enable some basic debug output (using printf) about // RF settings used during transmission and reception. Set to 2 to From 0766d8beda24fe15ffa62f341f1021a0c55909e3 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 31 Dec 2019 11:21:08 +0100 Subject: [PATCH 013/104] readme.md sanitized --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f67287dd..17adaee5 100644 --- a/README.md +++ b/README.md @@ -368,11 +368,11 @@ Note: all settings are stored in NVRAM and will be reloaded when device starts. 0 LoRa: SF12 / 125 kHz 250 1 LoRa: SF11 / 125 kHz 440 2 LoRa: SF10 / 125 kHz 980 - 3 LoRa: SF9 / 125 kHz 1760 - 4 LoRa: SF8 / 125 kHz 3125 - 5 LoRa: SF7 / 125 kHz 5470 - 6* LoRa: SF7 / 250 kHz 11000 - 7* FSK: 50 kbps 50000 + 3 LoRa: SF9 / 125 kHz 1760 + 4 LoRa: SF8 / 125 kHz 3125 + 5 LoRa: SF7 / 125 kHz 5470 + 6* LoRa: SF7 / 250 kHz 11000 + 7* FSK: 50 kbps 50000 8 .. 14 reserved for future use (RFU) 15 ignored (device keeps current setting) From f878b55c4f40d317f567a1d0d5a403818bfb6c4c Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 31 Dec 2019 11:24:17 +0100 Subject: [PATCH 014/104] readme.md sanitized --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 17adaee5..5af5cf5c 100644 --- a/README.md +++ b/README.md @@ -364,17 +364,17 @@ Note: all settings are stored in NVRAM and will be reloaded when device starts. Example for EU868: - DataRate Configuration Bit/s - 0 LoRa: SF12 / 125 kHz 250 - 1 LoRa: SF11 / 125 kHz 440 - 2 LoRa: SF10 / 125 kHz 980 - 3 LoRa: SF9 / 125 kHz 1760 - 4 LoRa: SF8 / 125 kHz 3125 - 5 LoRa: SF7 / 125 kHz 5470 - 6* LoRa: SF7 / 250 kHz 11000 - 7* FSK: 50 kbps 50000 - 8 .. 14 reserved for future use (RFU) - 15 ignored (device keeps current setting) + DataRate Configuration Bit/s + 0 LoRa: SF12 / 125 kHz 250 + 1 LoRa: SF11 / 125 kHz 440 + 2 LoRa: SF10 / 125 kHz 980 + 3 LoRa: SF9 / 125 kHz 1760 + 4 LoRa: SF8 / 125 kHz 3125 + 5 LoRa: SF7 / 125 kHz 5470 + 6* LoRa: SF7 / 250 kHz 11000 + 7* FSK: 50 kbps 50000 + 8 .. 14 reserved for future use (RFU) + 15 ignored (device keeps current setting) *) not supported by TheThingsNetwork From 67ff9d9646dd81bbefce6739626b402dc32b19e4 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 31 Dec 2019 11:25:56 +0100 Subject: [PATCH 015/104] readme.md sanitized --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5af5cf5c..8f2ce8ee 100644 --- a/README.md +++ b/README.md @@ -365,16 +365,16 @@ Note: all settings are stored in NVRAM and will be reloaded when device starts. Example for EU868: DataRate Configuration Bit/s - 0 LoRa: SF12 / 125 kHz 250 - 1 LoRa: SF11 / 125 kHz 440 - 2 LoRa: SF10 / 125 kHz 980 - 3 LoRa: SF9 / 125 kHz 1760 - 4 LoRa: SF8 / 125 kHz 3125 - 5 LoRa: SF7 / 125 kHz 5470 - 6* LoRa: SF7 / 250 kHz 11000 - 7* FSK: 50 kbps 50000 - 8 .. 14 reserved for future use (RFU) - 15 ignored (device keeps current setting) + 0 LoRa: SF12 / 125 kHz 250 + 1 LoRa: SF11 / 125 kHz 440 + 2 LoRa: SF10 / 125 kHz 980 + 3 LoRa: SF9 / 125 kHz 1760 + 4 LoRa: SF8 / 125 kHz 3125 + 5 LoRa: SF7 / 125 kHz 5470 + 6* LoRa: SF7 / 250 kHz 11000 + 7* FSK: 50 kbps 50000 + 8 .. 14 reserved for future use (RFU) + 15 ignored (device keeps current setting) *) not supported by TheThingsNetwork From 5f49a72c0d2075589d1583d4de61c244025cae46 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 31 Dec 2019 11:26:40 +0100 Subject: [PATCH 016/104] readme.md sanitized --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f2ce8ee..fadba063 100644 --- a/README.md +++ b/README.md @@ -364,7 +364,7 @@ Note: all settings are stored in NVRAM and will be reloaded when device starts. Example for EU868: - DataRate Configuration Bit/s + DataRate Configuration Bit/s 0 LoRa: SF12 / 125 kHz 250 1 LoRa: SF11 / 125 kHz 440 2 LoRa: SF10 / 125 kHz 980 From 4072714f9eb12579a842e32a1330225d4951ee62 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 31 Dec 2019 11:30:18 +0100 Subject: [PATCH 017/104] platformio.ini libs update --- platformio.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index e7ecfb92..e9d5dc49 100644 --- a/platformio.ini +++ b/platformio.ini @@ -7,7 +7,7 @@ ; ---> SELECT THE TARGET PLATFORM HERE! <--- [board] -;halfile = generic.h +halfile = generic.h ;halfile = ebox.h ;halfile = eboxtube.h ;halfile = ecopower.h @@ -19,7 +19,7 @@ ;halfile = ttgov21new.h ;halfile = ttgofox.h ;halfile = ttgobeam.h -halfile = ttgobeam10.h +;halfile = ttgobeam10.h ;halfile = fipy.h ;halfile = lopy.h ;halfile = lopy4.h @@ -56,7 +56,7 @@ monitor_speed = 115200 upload_speed = 115200 lib_deps_lora = ;MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore - https://github.com/mcci-catena/arduino-lmic.git + https://github.com/mcci-catena/arduino-lmic.git#3ca90f3 lib_deps_display = ss_oled@>=3.2.0 ; simple and small OLED lib by Larry Bank BitBang_I2C@>=1.3.0 @@ -73,7 +73,7 @@ lib_deps_sensors = Adafruit BMP085 Library@>=1.0.1 lib_deps_basic = ArduinoJson@^5.13.1 - 76@>=1.2.3 ; #76 Timezone by Jack Christensen + 76@>=1.2.4 ; #76 Timezone by Jack Christensen 274@>=2.3.3 ; #274 RTC by Michael Miller SimpleButton AXP202X_Library@>=1.1.0 ; AXP202 PMU lib by Lewis He From 523a8155d5837bf04aea743f72e151f00b9cf042 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Wed, 1 Jan 2020 16:15:07 +0100 Subject: [PATCH 018/104] lolin32litelora.h: wrong pin definitions corrected --- src/hal/lolin32litelora.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/hal/lolin32litelora.h b/src/hal/lolin32litelora.h index 07af6837..7c0ebcf2 100644 --- a/src/hal/lolin32litelora.h +++ b/src/hal/lolin32litelora.h @@ -25,18 +25,18 @@ #define CFG_sx1276_radio 1 // RFM95 module // Pins for LORA chip SPI interface, reset line and interrupt lines -#define LORA_SCK (5) -#define LORA_CS (18) +#define LORA_SCK (18) +#define LORA_CS (5) #define LORA_MISO (19) -#define LORA_MOSI (27) +#define LORA_MOSI (23) #define LORA_RST (25) #define LORA_IRQ (27) #define LORA_IO1 (26) -#define LORA_IO2 LMIC_UNUSED_PIN +#define LORA_IO2 (4) // Pins for I2C interface of OLED Display -#define MY_OLED_SDA (14) -#define MY_OLED_SCL (12) +#define MY_OLED_SDA (12) +#define MY_OLED_SCL (14) #define MY_OLED_RST NOT_A_PIN // I2C config for Microchip 24AA02E64 DEVEUI unique address From f7affae89878267ae59a567869b921c3f95ba8d3 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Wed, 1 Jan 2020 16:20:01 +0100 Subject: [PATCH 019/104] lolin32lora: wrong pin definitions corrected --- src/hal/lolin32lora.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/hal/lolin32lora.h b/src/hal/lolin32lora.h index a14c9605..342a7208 100644 --- a/src/hal/lolin32lora.h +++ b/src/hal/lolin32lora.h @@ -26,15 +26,14 @@ #define CFG_sx1276_radio 1 // RFM95 module // Pins for LORA chip SPI interface, reset line and interrupt lines -#define LORA_SCK (5) -#define LORA_CS (18) -#define LORA_MISO (19) +#define LORA_SCK (18) +#define LORA_CS (5) +#define LORA_MISO (193 #define LORA_MOSI (27) #define LORA_RST (25) #define LORA_IRQ (27) #define LORA_IO1 (26) -#define LORA_IO2 LMIC_UNUSED_PIN -#define LORA_IO5 LMIC_UNUSED_PIN +#define LORA_IO2 (4) // Pins for I2C interface of OLED Display #define MY_OLED_SDA (21) From 05d489dd314b2846b9fb6004ea6ef9e5c8bc2ea4 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Wed, 1 Jan 2020 16:32:27 +0100 Subject: [PATCH 020/104] lolin32 hal files sanitized --- src/hal/lolin32litelora.h | 8 ++++---- src/hal/lolin32lora.h | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/hal/lolin32litelora.h b/src/hal/lolin32litelora.h index 7c0ebcf2..bbc52439 100644 --- a/src/hal/lolin32litelora.h +++ b/src/hal/lolin32litelora.h @@ -25,10 +25,10 @@ #define CFG_sx1276_radio 1 // RFM95 module // Pins for LORA chip SPI interface, reset line and interrupt lines -#define LORA_SCK (18) -#define LORA_CS (5) -#define LORA_MISO (19) -#define LORA_MOSI (23) +#define LORA_SCK SCK +#define LORA_CS SS +#define LORA_MISO MISO +#define LORA_MOSI MOSI #define LORA_RST (25) #define LORA_IRQ (27) #define LORA_IO1 (26) diff --git a/src/hal/lolin32lora.h b/src/hal/lolin32lora.h index 342a7208..cc3eccd2 100644 --- a/src/hal/lolin32lora.h +++ b/src/hal/lolin32lora.h @@ -26,18 +26,18 @@ #define CFG_sx1276_radio 1 // RFM95 module // Pins for LORA chip SPI interface, reset line and interrupt lines -#define LORA_SCK (18) -#define LORA_CS (5) -#define LORA_MISO (193 -#define LORA_MOSI (27) +#define LORA_SCK SCK +#define LORA_CS SS +#define LORA_MISO MISO +#define LORA_MOSI MOSI #define LORA_RST (25) #define LORA_IRQ (27) #define LORA_IO1 (26) #define LORA_IO2 (4) // Pins for I2C interface of OLED Display -#define MY_OLED_SDA (21) -#define MY_OLED_SCL (22) +#define MY_OLED_SDA SDA +#define MY_OLED_SCL SCL #define MY_OLED_RST NOT_A_PIN // I2C config for Microchip 24AA02E64 DEVEUI unique address From 2e76ae89f29f20b76ad2c49f223644afc1b3ad3b Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Wed, 1 Jan 2020 18:25:17 +0100 Subject: [PATCH 021/104] lmic_config.h updated for lmic v3.0.99.10 --- src/lmic_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lmic_config.h b/src/lmic_config.h index a65657e9..d7759a03 100644 --- a/src/lmic_config.h +++ b/src/lmic_config.h @@ -7,7 +7,7 @@ //#define CFG_eu433 1 // Europe (low band) //#define CFG_us915 1 // USA, Canada and South America //#define CFG_in866 1 // India -//#define CFG_au921 1 // Australia +//#define CFG_au915 1 // Australia //#define CFG_as923 1 // Asia //#define CFG_cn783 1 // China (high band) //#define CFG_cn490 1 // China (low band) From 1414ebd421e5df2ef04654085b1b9e3760acab5c Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Thu, 2 Jan 2020 15:44:09 +0100 Subject: [PATCH 022/104] Show pressure with BMP180/BME280 (issue 519) --- src/display.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/display.cpp b/src/display.cpp index 3262f290..e1f5f496 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -343,7 +343,10 @@ void draw_page(time_t t, uint8_t page) { #ifdef HAS_BME680 // line 6-7: IAQ dp_printf(0, 6, FONT_STRETCHED, 0, "IAQ:%-3.0f", bme_status.iaq); -#endif +#else // is BME280 or BMP180 + // line 6-7: Pre + dp_printf(0, 6, FONT_STRETCHED, 0, "PRE:%-2.1f", bme_status.pressure); +#endif // HAS_BME #else dp_printf(16, 5, FONT_STRETCHED, 1, "No BME"); From acabc8b7d6b21c10bb5102c11a94067e911bf3dd Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Fri, 3 Jan 2020 09:59:10 +0100 Subject: [PATCH 023/104] gps fix detection enhanced --- include/gpsread.h | 1 + src/display.cpp | 8 ++++---- src/gpsread.cpp | 19 ++++++++++++++++--- src/senddata.cpp | 4 ++-- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/include/gpsread.h b/include/gpsread.h index d8728b7d..edabf8a4 100644 --- a/include/gpsread.h +++ b/include/gpsread.h @@ -17,6 +17,7 @@ extern TaskHandle_t GpsTask; int gps_init(void); int gps_config(); +bool gps_hasfix(); void gps_storelocation(gpsStatus_t *gps_store); void gps_loop(void *pvParameters); time_t fetch_gpsTime(uint16_t *msec); diff --git a/src/display.cpp b/src/display.cpp index e1f5f496..2ea84393 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -255,9 +255,9 @@ void draw_page(time_t t, uint8_t page) { dp_printf(0, 4, FONT_SMALL, 0, "B:%.2fV", batt_voltage / 1000.0); #endif #if (HAS_GPS) - if (gps.location.age() < 1500) // if no fix then display Sats value inverse + if (gps_hasfix()) dp_printf(48, 4, FONT_SMALL, 0, "Sats:%.2d", gps.satellites.value()); - else + else // if no fix then display Sats value inverse dp_printf(48, 4, FONT_SMALL, 1, "Sats:%.2d", gps.satellites.value()); #endif dp_printf(96, 4, FONT_SMALL, 0, "ch:%02d", channel); @@ -305,7 +305,7 @@ void draw_page(time_t t, uint8_t page) { // page 2: GPS case 2: #if (HAS_GPS) - if (gps.location.age() < 1500) { + if (gps_hasfix()) { // line 5: clear "No fix" if (wasnofix) { dp_printf(16, 5, FONT_STRETCHED, 0, " "); @@ -343,7 +343,7 @@ void draw_page(time_t t, uint8_t page) { #ifdef HAS_BME680 // line 6-7: IAQ dp_printf(0, 6, FONT_STRETCHED, 0, "IAQ:%-3.0f", bme_status.iaq); -#else // is BME280 or BMP180 +#else // is BME280 or BMP180 // line 6-7: Pre dp_printf(0, 6, FONT_STRETCHED, 0, "PRE:%-2.1f", bme_status.pressure); #endif // HAS_BME diff --git a/src/gpsread.cpp b/src/gpsread.cpp index eab3b3b3..99d4de77 100644 --- a/src/gpsread.cpp +++ b/src/gpsread.cpp @@ -74,14 +74,27 @@ int gps_config() { void gps_storelocation(gpsStatus_t *gps_store) { if (gps.location.isUpdated() && gps.location.isValid() && (gps.location.age() < 1500)) { - gps_store->latitude = (int32_t)(gps.location.lat() * 1e6); - gps_store->longitude = (int32_t)(gps.location.lng() * 1e6); + // gps_store->latitude = (int32_t)(gps.location.lat() * 1e6); + // gps_store->longitude = (int32_t)(gps.location.lng() * 1e6); + gps_store->latitude = + (int32_t)((gps.location.lat() + 90) / 180.0) * 16777215; + gps_store->longitude = + (int32_t)((gps.location.lng() + 180) / 360.0) * 16777215; gps_store->satellites = (uint8_t)gps.satellites.value(); gps_store->hdop = (uint16_t)gps.hdop.value(); gps_store->altitude = (int16_t)gps.altitude.meters(); } } +bool gps_hasfix() { + // adapted from source: + // https://github.com/hottimuc/Lora-TTNMapper-T-Beam/blob/master/fromV08/gps.cpp + return (gps.location.isValid() && gps.location.age() < 4000 && + gps.hdop.isValid() && gps.hdop.value() <= 600 && + gps.hdop.age() < 4000 && gps.altitude.isValid() && + gps.altitude.age() < 4000); +} + // function to fetch current time from struct; note: this is costly time_t fetch_gpsTime(uint16_t *msec) { @@ -154,7 +167,7 @@ void gps_loop(void *pvParameters) { } // if // show NMEA data in verbose mode, useful for debugging GPS, bu tvery noisy - //ESP_LOGV(TAG, "GPS NMEA data: passed %u / failed: %u / with fix: %u", + // ESP_LOGV(TAG, "GPS NMEA data: passed %u / failed: %u / with fix: %u", // gps.passedChecksum(), gps.failedChecksum(), // gps.sentencesWithFix()); diff --git a/src/senddata.cpp b/src/senddata.cpp index cf4922a9..f4f6b085 100644 --- a/src/senddata.cpp +++ b/src/senddata.cpp @@ -82,7 +82,7 @@ void sendData() { #if (HAS_GPS) if (GPSPORT == COUNTERPORT) { // send GPS position only if we have a fix - if (gps.location.isValid()) { + if (gps_hasfix()) { gps_storelocation(&gps_status); payload.addGPS(gps_status); } else @@ -121,7 +121,7 @@ void sendData() { case GPS_DATA: if (GPSPORT != COUNTERPORT) { // send GPS position only if we have a fix - if (gps.location.isValid()) { + if (gps_hasfix()) { gps_storelocation(&gps_status); payload.reset(); payload.addGPS(gps_status); From b84196189409308c832c8e73d57852a20ed7e5c2 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Sat, 4 Jan 2020 19:12:50 +0100 Subject: [PATCH 024/104] hotfix gps position data wrong in payload --- src/gpsread.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/gpsread.cpp b/src/gpsread.cpp index 99d4de77..03318284 100644 --- a/src/gpsread.cpp +++ b/src/gpsread.cpp @@ -74,12 +74,8 @@ int gps_config() { void gps_storelocation(gpsStatus_t *gps_store) { if (gps.location.isUpdated() && gps.location.isValid() && (gps.location.age() < 1500)) { - // gps_store->latitude = (int32_t)(gps.location.lat() * 1e6); - // gps_store->longitude = (int32_t)(gps.location.lng() * 1e6); - gps_store->latitude = - (int32_t)((gps.location.lat() + 90) / 180.0) * 16777215; - gps_store->longitude = - (int32_t)((gps.location.lng() + 180) / 360.0) * 16777215; + gps_store->latitude = (int32_t)(gps.location.lat() * 1e6); + gps_store->longitude = (int32_t)(gps.location.lng() * 1e6); gps_store->satellites = (uint8_t)gps.satellites.value(); gps_store->hdop = (uint16_t)gps.hdop.value(); gps_store->altitude = (int16_t)gps.altitude.meters(); From 3be62fa21dfe93ea607061023a3d8d3b7ad36462 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Fri, 17 Jan 2020 19:29:47 +0100 Subject: [PATCH 025/104] lib updates --- platformio.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platformio.ini b/platformio.ini index e9d5dc49..460ec69c 100644 --- a/platformio.ini +++ b/platformio.ini @@ -56,13 +56,13 @@ monitor_speed = 115200 upload_speed = 115200 lib_deps_lora = ;MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore - https://github.com/mcci-catena/arduino-lmic.git#3ca90f3 + https://github.com/mcci-catena/arduino-lmic.git#98a1b35 lib_deps_display = ss_oled@>=3.2.0 ; simple and small OLED lib by Larry Bank BitBang_I2C@>=1.3.0 QRCode@>=0.0.1 lib_deps_matrix_display = - Ultrathin_LED_Matrix + Ultrathin_LED_Matrix@>=1.0.0 lib_deps_rgbled = SmartLeds@>=1.1.6 lib_deps_gps = From e8abe8567bca1d618a4357c2e4163f8db40535b5 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Sun, 19 Jan 2020 22:21:45 +0100 Subject: [PATCH 026/104] skip display pages with no content (issue #523) --- include/display.h | 4 ++-- src/display.cpp | 55 ++++++++++++++++++++++++++--------------------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/include/display.h b/include/display.h index 4d280500..e40ab941 100644 --- a/include/display.h +++ b/include/display.h @@ -6,10 +6,10 @@ extern uint8_t DisplayIsOn, displaybuf[]; -void refreshTheDisplay(bool nextPage = false); +void refreshTheDisplay(bool nextPage = false, bool toggle_screencycle = false); void init_display(bool verbose = false); void shutdown_display(void); -void draw_page(time_t t, uint8_t page); +void draw_page(time_t t, bool nextpage, bool cyclescreen); void dp_printf(uint16_t x, uint16_t y, uint8_t font, uint8_t inv, const char *format, ...); void dp_printqr(uint16_t offset_x, uint16_t offset_y, const char *Message); diff --git a/src/display.cpp b/src/display.cpp index 2ea84393..5aaa6abd 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -149,11 +149,14 @@ void init_display(bool verbose) { } // mutex } // init_display -void refreshTheDisplay(bool nextPage) { +void refreshTheDisplay(bool nextPage, bool toggle_screencycle) { - static uint8_t DisplayPage = 0; + static bool screencycle = false; - // update histogram if we have a display + if (toggle_screencycle) + screencycle = !screencycle; + + // update histogram oledPlotCurve(macs.size(), false); // if display is switched off we don't refresh it to relax cpu @@ -173,12 +176,7 @@ void refreshTheDisplay(bool nextPage) { oledPower(cfg.screenon); } - if (nextPage) { - DisplayPage = (DisplayPage >= DISPLAY_PAGES - 1) ? 0 : (DisplayPage + 1); - oledFill(0, 1); - } - - draw_page(t, DisplayPage); + draw_page(t, nextPage, screencycle); oledDumpBuffer(displaybuf); I2C_MUTEX_UNLOCK(); // release i2c bus access @@ -198,18 +196,24 @@ void shutdown_display(void) { } } -void draw_page(time_t t, uint8_t page) { +void draw_page(time_t t, bool nextpage, bool cyclescreen) { + static uint8_t DisplayPage = 0; char timeState; #if (HAS_GPS) static bool wasnofix = true; #endif + if (nextpage) { + DisplayPage = (DisplayPage >= DISPLAY_PAGES - 1) ? 0 : (DisplayPage + 1); + oledFill(0, 1); + } + // line 1/2: pax counter dp_printf(0, 0, FONT_STRETCHED, 0, "PAX:%-4d", macs.size()); // display number of unique macs total Wifi + BLE - switch (page % DISPLAY_PAGES) { + switch (DisplayPage) { // page 0: parameters overview // page 1: pax graph @@ -323,12 +327,10 @@ void draw_page(time_t t, uint8_t page) { dp_printf(16, 5, FONT_STRETCHED, 1, "No fix"); wasnofix = true; } - -#else - dp_printf(16, 5, FONT_STRETCHED, 1, "No GPS"); -#endif - break; // page2 +#else + DisplayPage++; // next page +#endif // page 3: BME280/680 case 3: @@ -343,16 +345,14 @@ void draw_page(time_t t, uint8_t page) { #ifdef HAS_BME680 // line 6-7: IAQ dp_printf(0, 6, FONT_STRETCHED, 0, "IAQ:%-3.0f", bme_status.iaq); -#else // is BME280 or BMP180 +#else // is BME280 or BMP180 // line 6-7: Pre dp_printf(0, 6, FONT_STRETCHED, 0, "PRE:%-2.1f", bme_status.pressure); -#endif // HAS_BME - +#endif // HAS_BME680 + break; // page 3 #else - dp_printf(16, 5, FONT_STRETCHED, 1, "No BME"); -#endif - - break; // page3 + DisplayPage++; // next page +#endif // HAS_BME // page 4: time case 4: @@ -364,8 +364,13 @@ void draw_page(time_t t, uint8_t page) { // page 5: blank screen case 5: - oledFill(0, 1); - break; + if (cyclescreen) + DisplayPage++; + else // show blank page only if we are not in screencycle mode + { + oledFill(0, 1); + break; + } default: break; // default From 5cb51b2ff07156579fc2a7dda47735ccd6e7e5b8 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Mon, 20 Jan 2020 11:12:00 +0100 Subject: [PATCH 027/104] bugfix display page flip loop --- src/display.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/display.cpp b/src/display.cpp index 5aaa6abd..8fe1b475 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -198,21 +198,27 @@ void shutdown_display(void) { void draw_page(time_t t, bool nextpage, bool cyclescreen) { + // write display content to display buffer + // nextpage = true -> flip 1 page + // cyclescreen = true -> page cycling mode + static uint8_t DisplayPage = 0; char timeState; #if (HAS_GPS) static bool wasnofix = true; #endif + // line 1/2: pax counter + dp_printf(0, 0, FONT_STRETCHED, 0, "PAX:%-4d", + macs.size()); // display number of unique macs total Wifi + BLE + +start: + if (nextpage) { DisplayPage = (DisplayPage >= DISPLAY_PAGES - 1) ? 0 : (DisplayPage + 1); oledFill(0, 1); } - // line 1/2: pax counter - dp_printf(0, 0, FONT_STRETCHED, 0, "PAX:%-4d", - macs.size()); // display number of unique macs total Wifi + BLE - switch (DisplayPage) { // page 0: parameters overview @@ -297,8 +303,7 @@ void draw_page(time_t t, bool nextpage, bool cyclescreen) { // LORA datarate, display inverse if ADR disabled dp_printf(102, 7, FONT_SMALL, !cfg.adrmode, "%-4s", getSfName(updr2rps(LMIC.datarate))); -#endif // HAS_LORA - +#endif // HAS_LORA break; // page0 // page 1: pax graph @@ -334,7 +339,6 @@ void draw_page(time_t t, bool nextpage, bool cyclescreen) { // page 3: BME280/680 case 3: - #if (HAS_BME) // line 2-3: Temp dp_printf(0, 2, FONT_STRETCHED, 0, "TMP:%-2.1f", bme_status.temperature); @@ -356,24 +360,22 @@ void draw_page(time_t t, bool nextpage, bool cyclescreen) { // page 4: time case 4: - dp_printf(0, 4, FONT_LARGE, 0, "%02d:%02d:%02d", hour(t), minute(t), second(t)); break; // page 5: blank screen case 5: - if (cyclescreen) - DisplayPage++; - else // show blank page only if we are not in screencycle mode + DisplayPage++; // next page + else // show blank page only if we are not in screencycle mode { oledFill(0, 1); break; } default: - break; // default + goto start; // start over } // switch From f960627910be691656addaf713e03b5237a20aee Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Mon, 20 Jan 2020 11:41:31 +0100 Subject: [PATCH 028/104] auto page flip mode --- include/display.h | 4 ++-- src/display.cpp | 33 ++++++++++++++++++--------------- src/paxcounter.conf | 5 +++-- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/include/display.h b/include/display.h index e40ab941..4091f0a9 100644 --- a/include/display.h +++ b/include/display.h @@ -6,10 +6,10 @@ extern uint8_t DisplayIsOn, displaybuf[]; -void refreshTheDisplay(bool nextPage = false, bool toggle_screencycle = false); +void refreshTheDisplay(bool nextPage = false); void init_display(bool verbose = false); void shutdown_display(void); -void draw_page(time_t t, bool nextpage, bool cyclescreen); +void draw_page(time_t t, bool nextpage); void dp_printf(uint16_t x, uint16_t y, uint8_t font, uint8_t inv, const char *format, ...); void dp_printqr(uint16_t offset_x, uint16_t offset_y, const char *Message); diff --git a/src/display.cpp b/src/display.cpp index 8fe1b475..0401b0cc 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -149,12 +149,9 @@ void init_display(bool verbose) { } // mutex } // init_display -void refreshTheDisplay(bool nextPage, bool toggle_screencycle) { +void refreshTheDisplay(bool nextPage) { - static bool screencycle = false; - - if (toggle_screencycle) - screencycle = !screencycle; + static uint32_t framecounter = 0; // update histogram oledPlotCurve(macs.size(), false); @@ -176,7 +173,15 @@ void refreshTheDisplay(bool nextPage, bool toggle_screencycle) { oledPower(cfg.screenon); } - draw_page(t, nextPage, screencycle); +#ifndef HAS_BUTTON + // auto flip page if we are in unattended mode + if ((++framecounter) > (DISPLAYCYCLE * 1000 / DISPLAYREFRESH_MS)) { + framecounter = 0; + nextPage = true; + } +#endif + + draw_page(t, nextPage); oledDumpBuffer(displaybuf); I2C_MUTEX_UNLOCK(); // release i2c bus access @@ -196,11 +201,10 @@ void shutdown_display(void) { } } -void draw_page(time_t t, bool nextpage, bool cyclescreen) { +void draw_page(time_t t, bool nextpage) { // write display content to display buffer // nextpage = true -> flip 1 page - // cyclescreen = true -> page cycling mode static uint8_t DisplayPage = 0; char timeState; @@ -366,13 +370,12 @@ start: // page 5: blank screen case 5: - if (cyclescreen) - DisplayPage++; // next page - else // show blank page only if we are not in screencycle mode - { - oledFill(0, 1); - break; - } +#ifdef HAS_BUTTON + oledFill(0, 1); + break; +#else // don't show blank page if we are unattended + DisplayPage++; // next page +#endif default: goto start; // start over diff --git a/src/paxcounter.conf b/src/paxcounter.conf index 0c936ed8..3dc855c9 100644 --- a/src/paxcounter.conf +++ b/src/paxcounter.conf @@ -57,6 +57,7 @@ #define RGBLUMINOSITY 30 // RGB LED luminosity [default = 30%] #define DISPLAYREFRESH_MS 40 // OLED refresh cycle in ms [default = 40] -> 1000/40 = 25 frames per second #define DISPLAYCONTRAST 80 // 0 .. 255, OLED display contrast [default = 80] +#define DISPLAYCYCLE 3 // Auto page flip delay in sec [default = 2] for devices without button #define HOMECYCLE 30 // house keeping cycle in seconds [default = 30 secs] // Settings for BME680 environmental sensor @@ -76,7 +77,7 @@ #define TIME_SYNC_INTERVAL_RETRY 10 // retry time sync after lost sync each .. minutes [default = 10], 0 means off #define TIME_SYNC_COMPILEDATE 0 // set to 1 to use compile date to initialize RTC after power outage [default = 0] #define TIME_SYNC_LORAWAN 0 // set to 1 to use LORA network as time source, 0 means off [default = 0] -#define TIME_SYNC_LORASERVER 0 // set to 1 to use LORA timeserver as time source, 0 means off [default = 0] +#define TIME_SYNC_LORASERVER 1 // set to 1 to use LORA timeserver as time source, 0 means off [default = 0] // settings for syncing time with timeserver applications #define TIME_SYNC_SAMPLES 1 // number of time requests for averaging @@ -93,7 +94,7 @@ #define RCMDPORT 2 // remote commands #define STATUSPORT 2 // remote command results #define CONFIGPORT 3 // config query results -#define GPSPORT 4 // gps - set to 1 to send combined GPS+COUNTERPORT payload +#define GPSPORT 1 // gps - set to 1 to send combined GPS+COUNTERPORT payload #define BUTTONPORT 5 // button pressed signal #define BEACONPORT 6 // beacon alarms #define BMEPORT 7 // BME680 sensor From 18eb82e96cc40cd82c4d3cb378c98f1d7088dae2 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Mon, 20 Jan 2020 11:45:11 +0100 Subject: [PATCH 029/104] bugfix auto page flip --- src/display.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/display.cpp b/src/display.cpp index 0401b0cc..2260fb4f 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -151,7 +151,9 @@ void init_display(bool verbose) { void refreshTheDisplay(bool nextPage) { +#ifndef HAS_BUTTON static uint32_t framecounter = 0; +#endif // update histogram oledPlotCurve(macs.size(), false); From 0a297954a0403e7ad37f8dba18b6c9705833dcfe Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Tue, 21 Jan 2020 14:47:13 +0100 Subject: [PATCH 030/104] initial --- lib/SDS011/src/SDS011.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 lib/SDS011/src/SDS011.h diff --git a/lib/SDS011/src/SDS011.h b/lib/SDS011/src/SDS011.h new file mode 100644 index 00000000..f8a013d5 --- /dev/null +++ b/lib/SDS011/src/SDS011.h @@ -0,0 +1,40 @@ +// SDS011 dust sensor PM2.5 and PM10 +// --------------------------------- +// +// By R. Zschiegner (rz@madavi.de) +// April 2016 +// +// Documentation: +// - The iNovaFitness SDS011 datasheet +// + +#if ARDUINO >= 100 + #include "Arduino.h" +#else + #include "WProgram.h" +#endif + +#include + +// Definition SDS011 sensor 'commands' +#define SDS_START_CMD 1 +#define SDS_STOP_CMD 2 +#define SDS_CONTINUOUS_MODE_CMD 3 +#define SDS_VERSION_DATE_CMD 4 + +class SDS011 { + public: + SDS011(void); + void begin(uint8_t pin_rx, uint8_t pin_tx); + void begin(HardwareSerial* serial); + void begin(SoftwareSerial* serial); + int read(float *p25, float *p10); + void sleep(); + void wakeup(); + void contmode( int ); + private: + void SDS_cmd(const uint8_t); + uint8_t calcChecksum( byte *); + uint8_t _pin_rx, _pin_tx; + Stream *sds_data; +}; From 4edff01a37667e39b17e2db05ec22e3d1a74e9eb Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Tue, 21 Jan 2020 14:51:41 +0100 Subject: [PATCH 031/104] initial --- lib/SDS011/src/SDS011.cpp | 191 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 lib/SDS011/src/SDS011.cpp diff --git a/lib/SDS011/src/SDS011.cpp b/lib/SDS011/src/SDS011.cpp new file mode 100644 index 00000000..31efdea4 --- /dev/null +++ b/lib/SDS011/src/SDS011.cpp @@ -0,0 +1,191 @@ +// SDS011 dust sensor PM2.5 and PM10 +// --------------------- +// +// By R. Zschiegner (rz@madavi.de) +// April 2016 +// +// Documentation: +// - The iNovaFitness SDS011 datasheet +// +// modified by AQ - 2018-11-18 +// + +#include "SDS011.h" + +static const byte SDS_SLEEP[] = { + 0xAA, // head + 0xB4, // command id + 0x06, // data byte 1 + 0x01, // data byte 2 (set mode) + 0x00, // data byte 3 (sleep) + 0x00, // data byte 4 + 0x00, // data byte 5 + 0x00, // data byte 6 + 0x00, // data byte 7 + 0x00, // data byte 8 + 0x00, // data byte 9 + 0x00, // data byte 10 + 0x00, // data byte 11 + 0x00, // data byte 12 + 0x00, // data byte 13 + 0xFF, // data byte 14 (device id byte 1) + 0xFF, // data byte 15 (device id byte 2) + 0x05, // checksum + 0xAB // tail +}; + +static const byte SDS_START[] = { + 0xAA, 0xB4, 0x06, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0xAB}; + +static const byte SDS_CONT_MODE[] = { + 0xAA, 0xB4, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xAB}; + +static const byte SDS_VERSION[] = { + 0xAA, 0xB4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0xAB}; + +const uint8_t SDS_cmd_len = 19; + +SDS011::SDS011(void) { + +} + +// -------------------------------------------------------- +// SDS011:read +// -------------------------------------------------------- +int SDS011::read(float *p25, float *p10) { + byte buffer; + int value; + int len = 0; + int pm10_serial = 0; + int pm25_serial = 0; + int checksum_is; + int checksum_ok = 0; + int error = 1; + + while ((sds_data->available() > 0) && (sds_data->available() >= (10-len))) { + buffer = sds_data->read(); + value = int(buffer); + switch (len) { + case (0): if (value != 170) { len = -1; }; break; + case (1): if (value != 192) { len = -1; }; break; + case (2): pm25_serial = value; checksum_is = value; break; + case (3): pm25_serial += (value << 8); checksum_is += value; break; + case (4): pm10_serial = value; checksum_is += value; break; + case (5): pm10_serial += (value << 8); checksum_is += value; break; + case (6): checksum_is += value; break; + case (7): checksum_is += value; break; + case (8): if (value == (checksum_is % 256)) { checksum_ok = 1; } else { len = -1; }; break; + case (9): if (value != 171) { len = -1; }; break; + } + len++; + if (len == 10 && checksum_ok == 1) { + *p10 = (float)pm10_serial/10.0; + *p25 = (float)pm25_serial/10.0; + len = 0; checksum_ok = 0; pm10_serial = 0.0; pm25_serial = 0.0; checksum_is = 0; + error = 0; + } + yield(); + } + return error; +} + +// -------------------------------------------------------- +// SDS011:sleep +// -------------------------------------------------------- +void SDS011::sleep() { + SDS_cmd(SDS_STOP_CMD); +} + +// -------------------------------------------------------- +// SDS011:wakeup +// -------------------------------------------------------- +void SDS011::wakeup() { + SDS_cmd(SDS_START_CMD); +} + +// -------------------------------------------------------- +// SDS011:continous mode +// -------------------------------------------------------- +void SDS011::contmode(int noOfMinutes) +{ + byte buffer[SDS_cmd_len]; + memcpy(buffer, SDS_CONT_MODE, SDS_cmd_len); + buffer[4] = (byte) noOfMinutes; + buffer[17] = calcChecksum( buffer ); + for (uint8_t i = 0; i < SDS_cmd_len; i++) { + sds_data->write(buffer[i]); + } + sds_data->flush(); + while (sds_data->available() > 0) { + sds_data->read(); + } +// SDS_cmd(SDS_CONTINUOUS_MODE_CMD); +} + +/***************************************************************** + * send SDS011 command (start, stop, continuous mode, version * + *****************************************************************/ +void SDS011::SDS_cmd(const uint8_t cmd) +{ + byte buf[SDS_cmd_len]; + switch (cmd) { + case SDS_START_CMD: + memcpy(buf, SDS_START, SDS_cmd_len); + break; + case SDS_STOP_CMD: + memcpy(buf, SDS_SLEEP, SDS_cmd_len); + break; + case SDS_CONTINUOUS_MODE_CMD: + memcpy(buf, SDS_CONT_MODE, SDS_cmd_len); + break; + case SDS_VERSION_DATE_CMD: + memcpy(buf, SDS_VERSION, SDS_cmd_len); + break; + default: + return; + } + for (uint8_t i = 0; i < SDS_cmd_len; i++) { + sds_data->write(buf[i]); + } + sds_data->flush(); + while (sds_data->available() > 0) { + sds_data->read(); + } + +} + +// -------------------------------------------------------- +// SDS011: calculate checksum +// -------------------------------------------------------- +uint8_t SDS011::calcChecksum( byte *buffer ) +{ + uint8_t value = 0; + + for (uint8_t i = 2; i < 17; i++ ) + { + value += buffer[i]; + value &= 0xff; + } + return value; +} + +void SDS011::begin(uint8_t pin_rx, uint8_t pin_tx) { + _pin_rx = pin_rx; + _pin_tx = pin_tx; + + SoftwareSerial *softSerial = new SoftwareSerial(_pin_rx, _pin_tx); + softSerial->begin(9600); + + sds_data = softSerial; +} + +void SDS011::begin(HardwareSerial* serial) { + Serial.println("SDS011::begin"); +// serial->begin(9600); // why do I have to remove this line? + sds_data = serial; +} + +void SDS011::begin(SoftwareSerial* serial) { + serial->begin(9600); + sds_data = serial; +} From c545136c063754844f2dac3f86119aac09d982cc Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Tue, 21 Jan 2020 14:54:35 +0100 Subject: [PATCH 032/104] plus modifications for SDS011 --- src/sdcard.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/sdcard.cpp b/src/sdcard.cpp index 0633151f..8e45ea7c 100644 --- a/src/sdcard.cpp +++ b/src/sdcard.cpp @@ -6,6 +6,12 @@ static const char TAG[] = __FILE__; #include "sdcard.h" +#if (HAS_SDS011) +#include +// the results of the sensor: +extern float pm25; +extern float pm10; +#endif static bool useSDCard; @@ -35,7 +41,13 @@ void sdcardWriteData(uint16_t noWifi, uint16_t noBle) { sprintf(tempBuffer, "%02d:%02d:%02d,", hour(t), minute(t), second(t)); fileSDCard.print(tempBuffer); sprintf(tempBuffer, "%d,%d", noWifi, noBle); - fileSDCard.println(tempBuffer); + fileSDCard.print( tempBuffer); +#if (HAS_SDS011) + ESP_LOGD(TAG, "fine-dust-values: %5.1f,%4.1f", pm10, pm25); + sprintf(tempBuffer, ",%5.1f,%4.1f", pm10, pm25); + fileSDCard.print( tempBuffer); +#endif + fileSDCard.println( ); if (++counterWrites > 2) { // force writing to SD-card @@ -58,8 +70,12 @@ void createFile(void) { ESP_LOGD(TAG, "SD: file does not exist: opening"); fileSDCard = SD.open(bufferFilename, FILE_WRITE); if (fileSDCard) { - ESP_LOGD(TAG, "SD: name opended: <%s>", bufferFilename); - fileSDCard.println(SDCARD_FILE_HEADER); + ESP_LOGD(TAG, "SD: name opened: <%s>", bufferFilename); + fileSDCard.print( SDCARD_FILE_HEADER ); +#if (HAS_SDS011) + fileSDCard.print( SDCARD_FILE_HEADER_SDS011 ); +#endif + fileSDCard.println(); useSDCard = true; break; } @@ -68,4 +84,4 @@ void createFile(void) { return; } -#endif // (HAS_SDCARD) \ No newline at end of file +#endif // (HAS_SDCARD) From aacadda01d9727b6e98e7a119f5b7a4e380f2aab Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Tue, 21 Jan 2020 14:56:02 +0100 Subject: [PATCH 033/104] initial --- src/sds011read.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/sds011read.cpp diff --git a/src/sds011read.cpp b/src/sds011read.cpp new file mode 100644 index 00000000..c55b5741 --- /dev/null +++ b/src/sds011read.cpp @@ -0,0 +1,36 @@ +// routines for fetching data from the SDS011-sensor + +// Local logging tag +static const char TAG[] = __FILE__; + +#include + +// UART(2) is unused in this project +static HardwareSerial sdsSerial(2); // so we use it here +static SDS011 sdsSensor; // fine dust sensor + +// the results of the sensor: +float pm25; +float pm10; + +// init +bool sds011_init() +{ + pm25 = pm10 = 0.0; + sdsSerial.begin(9600, SERIAL_8N1, ESP_PIN_RX, ESP_PIN_TX); + sdsSensor.begin (&sdsSerial); + sdsSensor.contmode(0); // for safety: wakeup/sleep - if we want it we do it by ourselves + sdsSensor.wakeup(); // always wake up + return true; +} +// reading data: +void sds011_loop() +{ + pm25 = pm10 = 0.0; + int sdsErrorCode = sdsSensor.read(&pm25, &pm10); + if (!sdsErrorCode) + { + ESP_LOGD(TAG, "SDS011 error: %d", sdsErrorCode); + } + return; +} From 6fad4e2e79632bdc18539b8f910d6679294576b6 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Tue, 21 Jan 2020 14:57:36 +0100 Subject: [PATCH 034/104] initial --- include/sds011read.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 include/sds011read.h diff --git a/include/sds011read.h b/include/sds011read.h new file mode 100644 index 00000000..734395a7 --- /dev/null +++ b/include/sds011read.h @@ -0,0 +1,15 @@ +#ifndef _SDS011READ_H +#define _SDS011READ_H + +#include + +// used pins on the ESP-side: +#define ESP_PIN_TX 19 // connect to RX on the SDS011 +#define ESP_PIN_RX 23 // connect to TX on the SDS011 + +#define SDCARD_FILE_HEADER_SDS011 ", PM10,PM25" + +bool sds011_init(); +void sds011_loop(); + +#endif // _SDS011READ_H From 83cf9ff23e877839ee334db44d87b775a05895cc Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Tue, 21 Jan 2020 14:58:55 +0100 Subject: [PATCH 035/104] plus modifications for SDS011 --- include/senddata.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/senddata.h b/include/senddata.h index 5022800c..324f2e1f 100644 --- a/include/senddata.h +++ b/include/senddata.h @@ -16,6 +16,10 @@ #include "sdcard.h" #endif +#if (HAS_SDS011) +#include "sds011read.h" +#endif + extern Ticker sendcycler; void SendPayload(uint8_t port, sendprio_t prio); From 788ff354dc998f8b604c693d061faf36e4cccb82 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Tue, 21 Jan 2020 15:00:35 +0100 Subject: [PATCH 036/104] plus code for SDS011 --- src/senddata.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/senddata.cpp b/src/senddata.cpp index f4f6b085..db0a4e20 100644 --- a/src/senddata.cpp +++ b/src/senddata.cpp @@ -13,6 +13,10 @@ void SendPayload(uint8_t port, sendprio_t prio) { MessageBuffer_t SendBuffer; // contains MessageSize, MessagePort, MessagePrio, Message[] +#if (HAS_SDS011) + sds011_loop(); +#endif + SendBuffer.MessageSize = payload.getSize(); SendBuffer.MessagePrio = prio; @@ -172,4 +176,4 @@ void flushQueues() { #ifdef HAS_SPI spi_queuereset(); #endif -} \ No newline at end of file +} From dbaf2dbf6dced909f8941278cf85833053f6aa71 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Tue, 21 Jan 2020 15:03:07 +0100 Subject: [PATCH 037/104] plus code for SDS011 --- src/main.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 5e761b0e..19e45152 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -328,6 +328,12 @@ void setup() { strcat_P(features, " SD"); #endif +#if (HAS_SDS011) +// ESP_LOGI(TAG, "init fine-dust-sensor"); + if ( sds011_init() ) + strcat_P(features, " SDS"); +#endif + #if (VENDORFILTER) strcat_P(features, " FILTER"); #endif From 966fd2d5abb306d4aaf680aa1d738ad9a00469e2 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 21 Jan 2020 22:47:22 +0100 Subject: [PATCH 038/104] Revert "Merge pull request #527 from AugustQu/patch-8" This reverts commit 1d152551bfca27cd78005a447ebc62e2cee5a30c, reversing changes made to db1d9e5720999cf549be4801db1548f2e1a00587. --- include/sds011read.h | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 include/sds011read.h diff --git a/include/sds011read.h b/include/sds011read.h deleted file mode 100644 index 734395a7..00000000 --- a/include/sds011read.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _SDS011READ_H -#define _SDS011READ_H - -#include - -// used pins on the ESP-side: -#define ESP_PIN_TX 19 // connect to RX on the SDS011 -#define ESP_PIN_RX 23 // connect to TX on the SDS011 - -#define SDCARD_FILE_HEADER_SDS011 ", PM10,PM25" - -bool sds011_init(); -void sds011_loop(); - -#endif // _SDS011READ_H From 4d2960ea10e8e2c5b08b4a29a61639d62749b7a3 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 21 Jan 2020 22:48:24 +0100 Subject: [PATCH 039/104] Revert "Merge pull request #526 from AugustQu/patch-9" This reverts commit db1d9e5720999cf549be4801db1548f2e1a00587, reversing changes made to 04850fd5c7bee55c8d972bb7a9c716ba13e6b4c1. --- include/senddata.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/include/senddata.h b/include/senddata.h index 324f2e1f..5022800c 100644 --- a/include/senddata.h +++ b/include/senddata.h @@ -16,10 +16,6 @@ #include "sdcard.h" #endif -#if (HAS_SDS011) -#include "sds011read.h" -#endif - extern Ticker sendcycler; void SendPayload(uint8_t port, sendprio_t prio); From 804cbfb879ee7b44ebf995883eac98b756c8a0e5 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 22 Jan 2020 15:43:13 +0100 Subject: [PATCH 042/104] added support for SDS011 --- include/senddata.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/senddata.h b/include/senddata.h index 5022800c..324f2e1f 100644 --- a/include/senddata.h +++ b/include/senddata.h @@ -16,6 +16,10 @@ #include "sdcard.h" #endif +#if (HAS_SDS011) +#include "sds011read.h" +#endif + extern Ticker sendcycler; void SendPayload(uint8_t port, sendprio_t prio); From 7a465f7c752b0a8b8fbc7ab6bcc8bda3e6f22090 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 22 Jan 2020 15:44:54 +0100 Subject: [PATCH 043/104] added support for SDS011 --- include/payload.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/include/payload.h b/include/payload.h index b41bb113..b2d5683f 100644 --- a/include/payload.h +++ b/include/payload.h @@ -3,6 +3,10 @@ #include "paxcounter.conf" +#if (HAS_SDS011) +#include "sds011read.h" +#endif + // MyDevices CayenneLPP 1.0 channels for Synamic sensor payload format // all payload goes out on LoRa FPort 1 #if (PAYLOAD_ENCODER == 3) @@ -55,6 +59,9 @@ public: void addButton(uint8_t value); void addSensor(uint8_t[]); void addTime(time_t value); + void addPM10(float value); + void addPM25(float value); + void addChars( char* string, int len); #if (PAYLOAD_ENCODER == 1) // format plain @@ -95,4 +102,4 @@ private: extern PayloadConvert payload; -#endif // _PAYLOAD_H_ \ No newline at end of file +#endif // _PAYLOAD_H_ From c1411e5c1b475213fe0e5066e65a9791bd93fd58 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 22 Jan 2020 15:49:07 +0100 Subject: [PATCH 044/104] added support for SDS011 --- src/senddata.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/senddata.cpp b/src/senddata.cpp index f4f6b085..367a5c68 100644 --- a/src/senddata.cpp +++ b/src/senddata.cpp @@ -3,6 +3,11 @@ Ticker sendcycler; +#if (HAS_SDS011) +extern float pm10; +extern float pm25; +#endif + void sendcycle() { xTaskNotifyFromISR(irqHandlerTask, SENDCYCLE_IRQ, eSetBits, NULL); } @@ -13,6 +18,10 @@ void SendPayload(uint8_t port, sendprio_t prio) { MessageBuffer_t SendBuffer; // contains MessageSize, MessagePort, MessagePrio, Message[] +#if (HAS_SDS011) + sds011_loop(); +#endif + SendBuffer.MessageSize = payload.getSize(); SendBuffer.MessagePrio = prio; @@ -94,6 +103,10 @@ void sendData() { payload.addCount(macs_wifi, MAC_SNIFF_WIFI); if (cfg.blescan) payload.addCount(macs_ble, MAC_SNIFF_BLE); +#endif +#if (HAS_SDS011) + payload.addPM10(pm10); + payload.addPM25(pm25); #endif SendPayload(COUNTERPORT, prio_normal); // clear counter if not in cumulative counter mode @@ -172,4 +185,4 @@ void flushQueues() { #ifdef HAS_SPI spi_queuereset(); #endif -} \ No newline at end of file +} From b5250a21edf33f1bf86361804ba367ab1969e73e Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 22 Jan 2020 15:51:49 +0100 Subject: [PATCH 045/104] added support for SDS011 --- src/payload.cpp | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/payload.cpp b/src/payload.cpp index 323e402b..2624c138 100644 --- a/src/payload.cpp +++ b/src/payload.cpp @@ -489,5 +489,41 @@ void PayloadConvert::addTime(time_t value) { buffer[cursor++] = (byte)((tx_period & 0x000000FF)); #endif } +#endif // PAYLOAD_ENCODER -#endif \ No newline at end of file +void PayloadConvert::addPM10( float value) { +#if (HAS_SDS011) +#if (PAYLOAD_ENCODER == 1) // plain + char tempBuffer[10+1]; + sprintf( tempBuffer, ",%5.1f", value); + addChars(tempBuffer, strlen(tempBuffer)); +#elif (PAYLOAD_ENCODER == 2 ) // packed + writeUint16( (uint16_t) (value*10) ); +#elif (PAYLOAD_ENCODER == 3 ) // Cayenne LPP dynamic + // TODO +#elif (PAYLOAD_ENCODER == 4 ) // Cayenne LPP packed + // TODO +#endif +#endif // HAS_SDS011 +} + +void PayloadConvert::addPM25( float value) { +#if (HAS_SDS011) +#if (PAYLOAD_ENCODER == 1) // plain + char tempBuffer[10+1]; + sprintf( tempBuffer, ",%5.1f", value); + addChars(tempBuffer, strlen(tempBuffer)); +#elif (PAYLOAD_ENCODER == 2 ) // packed + writeUint16( (uint16_t) (value*10) ); +#elif (PAYLOAD_ENCODER == 3 ) // Cayenne LPP dynamic + // TODO +#elif (PAYLOAD_ENCODER == 4 ) // Cayenne LPP packed + // TODO +#endif +#endif // HAS_SDS011 +} + +void PayloadConvert::addChars( char * string, int len) { + for (int i=0; i < len; i++) + addByte(string[i]); +} From edf038d6f2adc1ac637e7641bd3bc7ff209cf27c Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Mon, 27 Jan 2020 20:11:55 +0100 Subject: [PATCH 046/104] M5stack Basic core support (experimental) --- README.md | 7 ++++-- platformio.ini | 10 +++++--- src/hal/m5stack.h | 62 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 src/hal/m5stack.h diff --git a/README.md b/README.md index fadba063..c6d978ca 100644 --- a/README.md +++ b/README.md @@ -33,12 +33,15 @@ This can all be done with a single small and cheap ESP32 board for less than $20 *LoRa & SPI*: - Heltec: LoRa-32 v1 and v2 -- TTGO: T1*, T2*, T3*, T-Beam, T-Fox (* supports microSD-card) +- TTGO: T1*, T2*, T3*, T-Beam, T-Fox - Pycom: LoPy, LoPy4, FiPy - Radioshuttle.de: [ECO Power Board](https://www.radioshuttle.de/esp32-eco-power/esp32-eco-power-board/) -- WeMos: LoLin32 + [LoraNode32 shield](https://github.com/hallard/LoLin32-Lora), +- WeMos: LoLin32 + [LoraNode32 shield](https://github.com/hallard/LoLin32-Lora), LoLin32lite + [LoraNode32-Lite shield](https://github.com/hallard/LoLin32-Lite-Lora) - Adafruit ESP32 Feather + LoRa Wing + OLED Wing, #IoT Octopus32 (Octopus + ESP32 Feather) +- M5Stack: [Basic Core*](https://m5stack.com/collections/m5-core/products/basic-core-iot-development-kit) + [Lora Module RA-01H](https://m5stack.com/collections/m5-module/products/lora-module-868mhz) + +*) supports microSD-card *SPI only*: diff --git a/platformio.ini b/platformio.ini index 460ec69c..698f70de 100644 --- a/platformio.ini +++ b/platformio.ini @@ -31,6 +31,7 @@ halfile = generic.h ;halfile = octopus32.h ;halfile = tinypico.h ;halfile = tinypicomatrix.h +;halfile = m5stack.h [platformio] ; upload firmware to board with usb cable @@ -43,10 +44,10 @@ description = Paxcounter is a device for metering passenger flows in realtime. I [common] ; for release_version use max. 10 chars total, use any decimal format like "a.b.c" -release_version = 1.9.85 +release_version = 1.9.87 ; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running! ; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose -debug_level = 3 +debug_level = 5 extra_scripts = pre:build.py otakeyfile = ota.conf lorakeyfile = loraconf.h @@ -94,6 +95,7 @@ build_flags_basic = '-DLOG_LOCAL_LEVEL=${common.debug_level}' '-DPROGVERSION="${common.release_version}"' build_flags_sensors = + ;BSEC Software Library -Llib/Bosch-BSEC/src/esp32/ -lalgobsec build_flags_all = @@ -122,5 +124,5 @@ upload_protocol = esptool [env:dev] upload_protocol = esptool build_type = debug -platform = https://github.com/platformio/platform-espressif32.git#develop -platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git +platform = https://github.com/platformio/platform-espressif32.git +platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git \ No newline at end of file diff --git a/src/hal/m5stack.h b/src/hal/m5stack.h new file mode 100644 index 00000000..371d725a --- /dev/null +++ b/src/hal/m5stack.h @@ -0,0 +1,62 @@ +// clang-format off +// upload_speed 921600 +// board M5Stack-Core-ESP32 + +// EXPERIMENTAL VERSION - NOT TESTED ON M5 HARDWARE YET + +#ifndef _M5STACK_H +#define _M5STACK_H + +#include + +#define HAS_LORA 1 // comment out if device shall not send data via LoRa or has no M5 RA01 LoRa module + +// Pins for LORA chip SPI interface, reset line and interrupt lines +#define LORA_SCK SCK +#define LORA_CS SS +#define LORA_MISO MISO +#define LORA_MOSI MOSI +#define LORA_RST GPIO_NUM_36 +#define LORA_IRQ GPIO_NUM_26 +#define LORA_IO1 GPIO_NUM_34 // must be externally wired on PCB! +#define LORA_IO2 LMIC_UNUSED_PIN + + +// enable only if you want to store a local paxcount table on the device +#define HAS_SDCARD 1 // this board has an SD-card-reader/writer +// Pins for SD-card +#define SDCARD_CS GPIO_NUM_4 +#define SDCARD_MOSI MOSI +#define SDCARD_MISO MISO +#define SDCARD_SCLK SCK + +// user defined sensors +//#define HAS_SENSORS 1 // comment out if device has user defined sensors + +#define CFG_sx1276_radio 1 // select LoRa chip +#define BOARD_HAS_PSRAM // use if board has external PSRAM +#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature + +//#define HAS_DISPLAY 1 +//#define DISPLAY_FLIP 1 // use if display is rotated +//#define BAT_MEASURE_ADC ADC1_GPIO35_CHANNEL // battery probe GPIO pin -> ADC1_CHANNEL_7 +//#define BAT_VOLTAGE_DIVIDER 2 // voltage divider 100k/100k on board + +#define HAS_LED NOT_A_PIN // no on board LED (?) +#define HAS_BUTTON (39) // on board button A + +// GPS settings +#define HAS_GPS 1 // use on board GPS +#define GPS_SERIAL 9600, SERIAL_8N1, RXD2, TXD2 // UBlox NEO 6M RX, TX +#define GPS_INT GPIO_NUM_35 // 30ns accurary timepulse, to be external wired on pcb: shorten R12! + +// Pins for interface of LC Display +#define MY_OLED_CS GPIO_NUM_14 +#define MY_OLED_DC GPIO_NUM_27 +#define MY_OLED_CLK GPIO_NUM_18 +#define MY_OLED_RST GPIO_NUM_33 +#define MY_OLED_BL GPIO_NUM_32 +#define MY_OLED_MOSI GPIO_NUM_23 +#define MY_OLED_MISO GPIO_NUM_23 + +#endif \ No newline at end of file From 40d021ab9d4daa3507bbd3503ab330b61ddc0374 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 28 Jan 2020 21:41:20 +0100 Subject: [PATCH 047/104] heltecv2.h bugfix Lora SCK pin --- src/hal/heltecv2.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/heltecv2.h b/src/hal/heltecv2.h index efbb9526..3c9f51f3 100644 --- a/src/hal/heltecv2.h +++ b/src/hal/heltecv2.h @@ -43,7 +43,7 @@ #define LORA_IRQ DIO0 #define LORA_IO1 DIO1 #define LORA_IO2 DIO2 -#define LORA_SCK SCK +#define LORA_SCK GPIO_NUM_5 #define LORA_MISO MISO #define LORA_MOSI MOSI #define LORA_RST RST_LoRa From 2d04dc2bd2ed13aaf59e2382ec980e1070e19798 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 28 Jan 2020 21:42:37 +0100 Subject: [PATCH 048/104] spislave.h: bugfix missing TaskHandle declaration --- include/spislave.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/spislave.h b/include/spislave.h index 0d85a09e..cf1db7a3 100644 --- a/include/spislave.h +++ b/include/spislave.h @@ -28,6 +28,8 @@ licenses. Refer to LICENSE.txt file in repository for more details. esp_err_t spi_init(); +extern TaskHandle_t spiTask; + void spi_enqueuedata(MessageBuffer_t *message); void spi_queuereset(); From 298ded12d449b8d986c1b1ee0ea2cc15334155bd Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 28 Jan 2020 21:49:24 +0100 Subject: [PATCH 049/104] externalized Bosch BSEC library --- include/bmesensor.h | 2 +- include/globals.h | 2 +- lib/Bosch-BSEC/LICENSE | 39 - .../generic_18v_300s_28d/bsec_iaq.config | Bin 458 -> 0 bytes .../config/generic_18v_300s_28d/bsec_iaq.csv | 1 - .../bsec_serialized_configurations_iaq.c | 5 - .../bsec_serialized_configurations_iaq.h | 4 - .../generic_18v_300s_4d/bsec_iaq.config | Bin 458 -> 0 bytes .../config/generic_18v_300s_4d/bsec_iaq.csv | 1 - .../bsec_serialized_configurations_iaq.c | 5 - .../bsec_serialized_configurations_iaq.h | 4 - .../config/generic_18v_3s_28d/bsec_iaq.config | Bin 458 -> 0 bytes .../config/generic_18v_3s_28d/bsec_iaq.csv | 1 - .../bsec_serialized_configurations_iaq.c | 5 - .../bsec_serialized_configurations_iaq.h | 4 - .../config/generic_18v_3s_4d/bsec_iaq.config | Bin 458 -> 0 bytes .../config/generic_18v_3s_4d/bsec_iaq.csv | 1 - .../bsec_serialized_configurations_iaq.c | 5 - .../bsec_serialized_configurations_iaq.h | 4 - .../generic_33v_300s_28d/bsec_iaq.config | Bin 458 -> 0 bytes .../config/generic_33v_300s_28d/bsec_iaq.csv | 1 - .../bsec_serialized_configurations_iaq.c | 5 - .../bsec_serialized_configurations_iaq.h | 4 - .../generic_33v_300s_4d/bsec_iaq.config | Bin 458 -> 0 bytes .../config/generic_33v_300s_4d/bsec_iaq.csv | 1 - .../bsec_serialized_configurations_iaq.c | 5 - .../bsec_serialized_configurations_iaq.h | 4 - .../config/generic_33v_3s_28d/bsec_iaq.config | Bin 458 -> 0 bytes .../config/generic_33v_3s_28d/bsec_iaq.csv | 1 - .../bsec_serialized_configurations_iaq.c | 5 - .../bsec_serialized_configurations_iaq.h | 4 - .../config/generic_33v_3s_4d/bsec_iaq.config | Bin 458 -> 0 bytes .../config/generic_33v_3s_4d/bsec_iaq.csv | 1 - .../bsec_serialized_configurations_iaq.c | 5 - .../bsec_serialized_configurations_iaq.h | 4 - .../docs/BSEC_release_note_1.4.7.4.pdf | Bin 127408 -> 0 bytes .../BST-BME680-Integration-Guide-AN008-47.pdf | 17895 ---------------- lib/Bosch-BSEC/src/bme680/README.md | 282 - lib/Bosch-BSEC/src/bme680/bme680.c | 1367 -- lib/Bosch-BSEC/src/bme680/bme680.h | 225 - lib/Bosch-BSEC/src/bme680/bme680_defs.h | 545 - lib/Bosch-BSEC/src/bsec.cpp | 498 - lib/Bosch-BSEC/src/bsec.h | 230 - lib/Bosch-BSEC/src/inc/bsec_datatypes.h | 488 - lib/Bosch-BSEC/src/inc/bsec_interface.h | 564 - platformio.ini | 6 +- src/bmesensor.cpp | 2 +- 47 files changed, 6 insertions(+), 22219 deletions(-) delete mode 100644 lib/Bosch-BSEC/LICENSE delete mode 100644 lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_iaq.config delete mode 100644 lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_iaq.csv delete mode 100644 lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_serialized_configurations_iaq.c delete mode 100644 lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_serialized_configurations_iaq.h delete mode 100644 lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_iaq.config delete mode 100644 lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_iaq.csv delete mode 100644 lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_serialized_configurations_iaq.c delete mode 100644 lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_serialized_configurations_iaq.h delete mode 100644 lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_iaq.config delete mode 100644 lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_iaq.csv delete mode 100644 lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_serialized_configurations_iaq.c delete mode 100644 lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_serialized_configurations_iaq.h delete mode 100644 lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_iaq.config delete mode 100644 lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_iaq.csv delete mode 100644 lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_serialized_configurations_iaq.c delete mode 100644 lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_serialized_configurations_iaq.h delete mode 100644 lib/Bosch-BSEC/config/generic_33v_300s_28d/bsec_iaq.config delete mode 100644 lib/Bosch-BSEC/config/generic_33v_300s_28d/bsec_iaq.csv delete mode 100644 lib/Bosch-BSEC/config/generic_33v_300s_28d/bsec_serialized_configurations_iaq.c delete mode 100644 lib/Bosch-BSEC/config/generic_33v_300s_28d/bsec_serialized_configurations_iaq.h delete mode 100644 lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_iaq.config delete mode 100644 lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_iaq.csv delete mode 100644 lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_serialized_configurations_iaq.c delete mode 100644 lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_serialized_configurations_iaq.h delete mode 100644 lib/Bosch-BSEC/config/generic_33v_3s_28d/bsec_iaq.config delete mode 100644 lib/Bosch-BSEC/config/generic_33v_3s_28d/bsec_iaq.csv delete mode 100644 lib/Bosch-BSEC/config/generic_33v_3s_28d/bsec_serialized_configurations_iaq.c delete mode 100644 lib/Bosch-BSEC/config/generic_33v_3s_28d/bsec_serialized_configurations_iaq.h delete mode 100644 lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_iaq.config delete mode 100644 lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_iaq.csv delete mode 100644 lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_serialized_configurations_iaq.c delete mode 100644 lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_serialized_configurations_iaq.h delete mode 100644 lib/Bosch-BSEC/docs/BSEC_release_note_1.4.7.4.pdf delete mode 100644 lib/Bosch-BSEC/docs/BST-BME680-Integration-Guide-AN008-47.pdf delete mode 100644 lib/Bosch-BSEC/src/bme680/README.md delete mode 100644 lib/Bosch-BSEC/src/bme680/bme680.c delete mode 100644 lib/Bosch-BSEC/src/bme680/bme680.h delete mode 100644 lib/Bosch-BSEC/src/bme680/bme680_defs.h delete mode 100644 lib/Bosch-BSEC/src/bsec.cpp delete mode 100644 lib/Bosch-BSEC/src/bsec.h delete mode 100644 lib/Bosch-BSEC/src/inc/bsec_datatypes.h delete mode 100644 lib/Bosch-BSEC/src/inc/bsec_interface.h diff --git a/include/bmesensor.h b/include/bmesensor.h index eedb5e79..b73a712a 100644 --- a/include/bmesensor.h +++ b/include/bmesensor.h @@ -5,7 +5,7 @@ #include #ifdef HAS_BME680 -#include "../lib/Bosch-BSEC/src/bsec.h" +#include #elif defined HAS_BME280 #include #include diff --git a/include/globals.h b/include/globals.h index 43902886..41002c32 100644 --- a/include/globals.h +++ b/include/globals.h @@ -15,7 +15,7 @@ #include #include #include "mallocator.h" -#include "../lib/Bosch-BSEC/src/inc/bsec_datatypes.h" +#include // sniffing types #define MAC_SNIFF_WIFI 0 diff --git a/lib/Bosch-BSEC/LICENSE b/lib/Bosch-BSEC/LICENSE deleted file mode 100644 index ab7a8c8b..00000000 --- a/lib/Bosch-BSEC/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright (C) 2017 - 2018 Bosch Sensortec GmbH - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - -Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. - -Neither the name of the copyright holder nor the names of the -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER -OR CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, -OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - -The information provided is believed to be accurate and reliable. -The copyright holder assumes no responsibility -for the consequences of use -of such information nor for any infringement of patents or -other rights of third parties which may result from its use. -No license is granted by implication or otherwise under any patent or -patent rights of the copyright holder. \ No newline at end of file diff --git a/lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_iaq.config b/lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_iaq.config deleted file mode 100644 index ba71808c56cc0b8083584688be8d61780cb42888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmX@c$iTqD&cbNR00HZOd;!LZzif#IP`rz3;?*)wPC7#JL&Gy}tpP=*w! z76usxCI*Htj1L(k85kNI7#I{BCjbp7a0JTR3otMJHi!igLl%XwLE<`$xFH8SZdf3W8~%raJFFlG;UHKrSxnlX6y)31b_NCjmNSB1 diff --git a/lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_iaq.csv b/lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_iaq.csv deleted file mode 100644 index 25f389c8..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_iaq.csv +++ /dev/null @@ -1 +0,0 @@ -454,4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,168,19,73,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,7,240,150,61,0,0,0,0,0,0,0,0,28,124,225,61,52,128,215,63,0,0,160,64,0,0,0,0,0,0,0,0,205,204,12,62,103,213,39,62,230,63,76,192,0,0,0,0,0,0,0,0,145,237,60,191,251,58,64,63,177,80,131,64,0,0,0,0,0,0,0,0,93,254,227,62,54,60,133,191,0,0,64,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,48,117,0,0,0,0,133,135,0,0 diff --git a/lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_serialized_configurations_iaq.c b/lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_serialized_configurations_iaq.c deleted file mode 100644 index 2578ade4..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_serialized_configurations_iaq.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "bsec_serialized_configurations_iaq.h" - -const uint8_t bsec_config_iaq[454] = - {4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,168,19,73,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,7,240,150,61,0,0,0,0,0,0,0,0,28,124,225,61,52,128,215,63,0,0,160,64,0,0,0,0,0,0,0,0,205,204,12,62,103,213,39,62,230,63,76,192,0,0,0,0,0,0,0,0,145,237,60,191,251,58,64,63,177,80,131,64,0,0,0,0,0,0,0,0,93,254,227,62,54,60,133,191,0,0,64,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,48,117,0,0,0,0,133,135,0,0}; - diff --git a/lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_serialized_configurations_iaq.h b/lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_serialized_configurations_iaq.h deleted file mode 100644 index 1986e2be..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_300s_28d/bsec_serialized_configurations_iaq.h +++ /dev/null @@ -1,4 +0,0 @@ -#include - -extern const uint8_t bsec_config_iaq[454]; - diff --git a/lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_iaq.config b/lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_iaq.config deleted file mode 100644 index 255edea35b6759a9ffe7c51345bb6b9227f2b756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmX@c$iTqD&cbNR00HZOd;HE;0Tnr7hqs!;JUuphU>brH3)Muu!6NQMlf(P zuz#2avzI}p=Ao@g!*zQGh6O+)AmHp79=r6b>UPiUeGb6HCcd@V|J%yJeq%th157OT z-(x#7o7Vk62RiUDaKVHbo-+JnU}9u7C{1C|VJr}z&fda&lp%&?0;2;EPGB@Bg}@Y` zS5g=dY!C|~hAawUgT!?haYGJv+^|3#H~bF;cUVCX!a=ZLvY50%Dag0W9xyNf0JwXD Aga7~l diff --git a/lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_iaq.csv b/lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_iaq.csv deleted file mode 100644 index ec45f853..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_iaq.csv +++ /dev/null @@ -1 +0,0 @@ -454,4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,192,168,71,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,7,240,150,61,0,0,0,0,0,0,0,0,28,124,225,61,52,128,215,63,0,0,160,64,0,0,0,0,0,0,0,0,205,204,12,62,103,213,39,62,230,63,76,192,0,0,0,0,0,0,0,0,145,237,60,191,251,58,64,63,177,80,131,64,0,0,0,0,0,0,0,0,93,254,227,62,54,60,133,191,0,0,64,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,48,117,0,0,0,0,166,224,0,0 diff --git a/lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_serialized_configurations_iaq.c b/lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_serialized_configurations_iaq.c deleted file mode 100644 index 7a1b214f..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_serialized_configurations_iaq.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "bsec_serialized_configurations_iaq.h" - -const uint8_t bsec_config_iaq[454] = - {4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,192,168,71,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,7,240,150,61,0,0,0,0,0,0,0,0,28,124,225,61,52,128,215,63,0,0,160,64,0,0,0,0,0,0,0,0,205,204,12,62,103,213,39,62,230,63,76,192,0,0,0,0,0,0,0,0,145,237,60,191,251,58,64,63,177,80,131,64,0,0,0,0,0,0,0,0,93,254,227,62,54,60,133,191,0,0,64,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,48,117,0,0,0,0,166,224,0,0}; - diff --git a/lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_serialized_configurations_iaq.h b/lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_serialized_configurations_iaq.h deleted file mode 100644 index 1986e2be..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_300s_4d/bsec_serialized_configurations_iaq.h +++ /dev/null @@ -1,4 +0,0 @@ -#include - -extern const uint8_t bsec_config_iaq[454]; - diff --git a/lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_iaq.config b/lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_iaq.config deleted file mode 100644 index 0d0f06dc1182515cab969d5e9b323105ed481a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmX@c$iTqD&cbNR00HZOd;!LZzif#IP`rz3;?*)wPC7#JL&Gy}tpP=*w! z76usxCI*Htj1L(k85kNI7#I{BCjbp7a0JTR3otMJHi!igLl%XwLE<`$xFH8SZdf3W8~%raJFFlG;UHKrSxj077}5+3;(ZJZ0FYFH AfB*mh diff --git a/lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_iaq.csv b/lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_iaq.csv deleted file mode 100644 index 84c7e00f..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_iaq.csv +++ /dev/null @@ -1 +0,0 @@ -454,4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,168,19,73,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,7,240,150,61,0,0,0,0,0,0,0,0,28,124,225,61,52,128,215,63,0,0,160,64,0,0,0,0,0,0,0,0,205,204,12,62,103,213,39,62,230,63,76,192,0,0,0,0,0,0,0,0,145,237,60,191,251,58,64,63,177,80,131,64,0,0,0,0,0,0,0,0,93,254,227,62,54,60,133,191,0,0,64,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,44,1,0,0,0,0,23,142,0,0 diff --git a/lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_serialized_configurations_iaq.c b/lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_serialized_configurations_iaq.c deleted file mode 100644 index 922c4fce..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_serialized_configurations_iaq.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "bsec_serialized_configurations_iaq.h" - -const uint8_t bsec_config_iaq[454] = - {4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,168,19,73,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,7,240,150,61,0,0,0,0,0,0,0,0,28,124,225,61,52,128,215,63,0,0,160,64,0,0,0,0,0,0,0,0,205,204,12,62,103,213,39,62,230,63,76,192,0,0,0,0,0,0,0,0,145,237,60,191,251,58,64,63,177,80,131,64,0,0,0,0,0,0,0,0,93,254,227,62,54,60,133,191,0,0,64,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,44,1,0,0,0,0,23,142,0,0}; - diff --git a/lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_serialized_configurations_iaq.h b/lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_serialized_configurations_iaq.h deleted file mode 100644 index 1986e2be..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_3s_28d/bsec_serialized_configurations_iaq.h +++ /dev/null @@ -1,4 +0,0 @@ -#include - -extern const uint8_t bsec_config_iaq[454]; - diff --git a/lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_iaq.config b/lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_iaq.config deleted file mode 100644 index 565ed67ff91fec461a4d709420411c0dd703a6ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmX@c$iTqD&cbNR00HZOd;HE;0Tnr7hqs!;JUuphU>brH3)Muu!6NQMlf(P zuz#2avzI}p=Ao@g!*zQGh6O+)AmHp79=r6b>UPiUeGb6HCcd@V|J%yJeq%th157OT z-(x#7o7Vk62RiUDaKVHbo-+JnU}9u7C{1C|VJr}z&fda&lp%&?0;2;EPGB@Bg}@Y` zS5g=dY!C|~hAawUgT!?haYGJv+^|3#H~bF;cUVCX!a=ZLvY50EFr*n6OkOfD006R* Bf};Qc diff --git a/lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_iaq.csv b/lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_iaq.csv deleted file mode 100644 index 9b52849a..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_iaq.csv +++ /dev/null @@ -1 +0,0 @@ -454,4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,192,168,71,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,7,240,150,61,0,0,0,0,0,0,0,0,28,124,225,61,52,128,215,63,0,0,160,64,0,0,0,0,0,0,0,0,205,204,12,62,103,213,39,62,230,63,76,192,0,0,0,0,0,0,0,0,145,237,60,191,251,58,64,63,177,80,131,64,0,0,0,0,0,0,0,0,93,254,227,62,54,60,133,191,0,0,64,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,44,1,0,0,0,0,52,233,0,0 diff --git a/lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_serialized_configurations_iaq.c b/lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_serialized_configurations_iaq.c deleted file mode 100644 index 62fc60ef..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_serialized_configurations_iaq.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "bsec_serialized_configurations_iaq.h" - -const uint8_t bsec_config_iaq[454] = - {4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,192,168,71,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,7,240,150,61,0,0,0,0,0,0,0,0,28,124,225,61,52,128,215,63,0,0,160,64,0,0,0,0,0,0,0,0,205,204,12,62,103,213,39,62,230,63,76,192,0,0,0,0,0,0,0,0,145,237,60,191,251,58,64,63,177,80,131,64,0,0,0,0,0,0,0,0,93,254,227,62,54,60,133,191,0,0,64,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,44,1,0,0,0,0,52,233,0,0}; - diff --git a/lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_serialized_configurations_iaq.h b/lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_serialized_configurations_iaq.h deleted file mode 100644 index 1986e2be..00000000 --- a/lib/Bosch-BSEC/config/generic_18v_3s_4d/bsec_serialized_configurations_iaq.h +++ /dev/null @@ -1,4 +0,0 @@ -#include - -extern const uint8_t bsec_config_iaq[454]; - diff --git a/lib/Bosch-BSEC/config/generic_33v_300s_28d/bsec_iaq.config b/lib/Bosch-BSEC/config/generic_33v_300s_28d/bsec_iaq.config deleted file mode 100644 index 96fe3234ba08432765240858079e1c3051d632de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmX@c$iTqD&cbNR00HZOd;!LZzif#IP`rz3;?*)wPC7#JL&Gy}tpP=*w! z76usxCI*Htj1L(k85kNI7#I{BCjbp7a0JTR3otMu{ZYLd - -extern const uint8_t bsec_config_iaq[454]; - diff --git a/lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_iaq.config b/lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_iaq.config deleted file mode 100644 index 7d181b0ccb8888c90475e93d8fb5d1697859c71b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmX@c$iTqD&cbNR00HZOd;HE;0Tnr7hqs!;JUuphU>brH3)Muu!6NQMlf(P zJiVX+<>)Md$;P^3lA53g{ zrMvCYy_yGh$nACDVc>!ZGdyMZ$H2tMYEYWOpu<=oKApXV`6xpS%LGOTAe_KxPzr%5 zK(C}QAlM)lL=0IJ!Ul=!Fye+B?6_fpIBxhK3huCiAcTWp!DKOMgHn)hB_bIZ0Lf~D Ai2wiq diff --git a/lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_iaq.csv b/lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_iaq.csv deleted file mode 100644 index 2e17310e..00000000 --- a/lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_iaq.csv +++ /dev/null @@ -1 +0,0 @@ -454,4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,192,168,71,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,229,208,34,62,0,0,0,0,0,0,0,0,218,27,156,62,225,11,67,64,0,0,160,64,0,0,0,0,0,0,0,0,94,75,72,189,93,254,159,64,66,62,160,191,0,0,0,0,0,0,0,0,33,31,180,190,138,176,97,64,65,241,99,190,0,0,0,0,0,0,0,0,167,121,71,61,165,189,41,192,184,30,189,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,48,117,0,0,0,0,24,89,0,0 diff --git a/lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_serialized_configurations_iaq.c b/lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_serialized_configurations_iaq.c deleted file mode 100644 index a146e676..00000000 --- a/lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_serialized_configurations_iaq.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "bsec_serialized_configurations_iaq.h" - -const uint8_t bsec_config_iaq[454] = - {4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,192,168,71,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,229,208,34,62,0,0,0,0,0,0,0,0,218,27,156,62,225,11,67,64,0,0,160,64,0,0,0,0,0,0,0,0,94,75,72,189,93,254,159,64,66,62,160,191,0,0,0,0,0,0,0,0,33,31,180,190,138,176,97,64,65,241,99,190,0,0,0,0,0,0,0,0,167,121,71,61,165,189,41,192,184,30,189,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,48,117,0,0,0,0,24,89,0,0}; - diff --git a/lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_serialized_configurations_iaq.h b/lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_serialized_configurations_iaq.h deleted file mode 100644 index 1986e2be..00000000 --- a/lib/Bosch-BSEC/config/generic_33v_300s_4d/bsec_serialized_configurations_iaq.h +++ /dev/null @@ -1,4 +0,0 @@ -#include - -extern const uint8_t bsec_config_iaq[454]; - diff --git a/lib/Bosch-BSEC/config/generic_33v_3s_28d/bsec_iaq.config b/lib/Bosch-BSEC/config/generic_33v_3s_28d/bsec_iaq.config deleted file mode 100644 index 82a58c2716e154dcf9eefc5fdda9cdda615a074b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmX@c$iTqD&cbNR00HZOd;!LZzif#IP`rz3;?*)wPC7#JL&Gy}tpP=*w! z76usxCI*Htj1L(k85kNI7#I{BCjbp7a0JTR3otMu{ZYLd - -extern const uint8_t bsec_config_iaq[454]; - diff --git a/lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_iaq.config b/lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_iaq.config deleted file mode 100644 index 4ebfbd45c12468cdef0bb525c8244a0466f293e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmX@c$iTqD&cbNR00HZOd;HE;0Tnr7hqs!;JUuphU>brH3)Muu!6NQMlf(P zJiVX+<>)Md$;P^3lA53g{ zrMvCYy_yGh$nACDVc>!ZGdyMZ$H2tMYEYWOpu<=oKApXV`6xpS%LGOTAe_KxPzr%5 zK(C}QAlM)lL=0IJ!Ul=!Fye+B?6_fpIBxhK3huCiAcTWp!DKOM9biZ^FmwelFaQ9? C+k<)l diff --git a/lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_iaq.csv b/lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_iaq.csv deleted file mode 100644 index 687e6fb3..00000000 --- a/lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_iaq.csv +++ /dev/null @@ -1 +0,0 @@ -454,4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,192,168,71,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,229,208,34,62,0,0,0,0,0,0,0,0,218,27,156,62,225,11,67,64,0,0,160,64,0,0,0,0,0,0,0,0,94,75,72,189,93,254,159,64,66,62,160,191,0,0,0,0,0,0,0,0,33,31,180,190,138,176,97,64,65,241,99,190,0,0,0,0,0,0,0,0,167,121,71,61,165,189,41,192,184,30,189,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,44,1,0,0,0,0,138,80,0,0 diff --git a/lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_serialized_configurations_iaq.c b/lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_serialized_configurations_iaq.c deleted file mode 100644 index d53ae58a..00000000 --- a/lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_serialized_configurations_iaq.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "bsec_serialized_configurations_iaq.h" - -const uint8_t bsec_config_iaq[454] = - {4,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,0,192,168,71,64,49,119,76,0,0,225,68,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,0,0,216,85,0,100,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,229,208,34,62,0,0,0,0,0,0,0,0,218,27,156,62,225,11,67,64,0,0,160,64,0,0,0,0,0,0,0,0,94,75,72,189,93,254,159,64,66,62,160,191,0,0,0,0,0,0,0,0,33,31,180,190,138,176,97,64,65,241,99,190,0,0,0,0,0,0,0,0,167,121,71,61,165,189,41,192,184,30,189,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,44,1,0,0,0,0,138,80,0,0}; - diff --git a/lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_serialized_configurations_iaq.h b/lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_serialized_configurations_iaq.h deleted file mode 100644 index 1986e2be..00000000 --- a/lib/Bosch-BSEC/config/generic_33v_3s_4d/bsec_serialized_configurations_iaq.h +++ /dev/null @@ -1,4 +0,0 @@ -#include - -extern const uint8_t bsec_config_iaq[454]; - diff --git a/lib/Bosch-BSEC/docs/BSEC_release_note_1.4.7.4.pdf b/lib/Bosch-BSEC/docs/BSEC_release_note_1.4.7.4.pdf deleted file mode 100644 index e7242e68ba15f37da7be3b3b230cf45aa642cf0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127408 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

;0Rw=hBfS7tKm_XfyC*fXyQy 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 diff --git a/lib/Bosch-BSEC/docs/BST-BME680-Integration-Guide-AN008-47.pdf b/lib/Bosch-BSEC/docs/BST-BME680-Integration-Guide-AN008-47.pdf deleted file mode 100644 index 49804ef1..00000000 --- a/lib/Bosch-BSEC/docs/BST-BME680-Integration-Guide-AN008-47.pdf +++ /dev/null @@ -1,17895 +0,0 @@ -%PDF-1.7 -%ÐÔÅØ -4 0 obj -<< /S /GoTo /D (chapter.1) >> -endobj -7 0 obj -(\376\377\000B\000S\000E\000C\000\040\000I\000n\000t\000e\000g\000r\000a\000t\000i\000o\000n\000\040\000G\000u\000i\000d\000e\000l\000i\000n\000e) -endobj -8 0 obj -<< /S /GoTo /D (section.1.1) >> -endobj -11 0 obj -(\376\377\000O\000v\000e\000r\000v\000i\000e\000w\000\040\000o\000f\000\040\000B\000M\000E\000\040\000F\000a\000m\000i\000l\000y\000\040\000S\000e\000n\000s\000o\000r\000s) -endobj -12 0 obj -<< /S /GoTo /D (section.1.2) >> -endobj -15 0 obj -(\376\377\000T\000h\000e\000\040\000E\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000a\000l\000\040\000F\000u\000s\000i\000o\000n\000\040\000L\000i\000b\000r\000a\000r\000y\000\040\000B\000S\000E\000C) -endobj -16 0 obj -<< /S /GoTo /D (subsection.1.2.1) >> -endobj -19 0 obj -(\376\377\000B\000S\000E\000C\000\040\000L\000i\000b\000r\000a\000r\000y\000\040\000S\000o\000l\000u\000t\000i\000o\000n\000s) -endobj -20 0 obj -<< /S /GoTo /D (subsection.1.2.2) >> -endobj -23 0 obj -(\376\377\000B\000S\000E\000C\000\040\000C\000o\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n\000\040\000S\000e\000t\000t\000i\000n\000g\000s) -endobj -24 0 obj -<< /S /GoTo /D (subsection.1.2.3) >> -endobj -27 0 obj -(\376\377\000K\000e\000y\000\040\000F\000e\000a\000t\000u\000r\000e\000s) -endobj -28 0 obj -<< /S /GoTo /D (subsection.1.2.4) >> -endobj -31 0 obj -(\376\377\000S\000u\000p\000p\000o\000r\000t\000e\000d\000\040\000V\000i\000r\000t\000u\000a\000l\000\040\000S\000e\000n\000s\000o\000r\000\040\000O\000u\000t\000p\000u\000t\000\040\000S\000i\000g\000n\000a\000l\000s) -endobj -32 0 obj -<< /S /GoTo /D (section.1.3) >> -endobj -35 0 obj -(\376\377\000R\000e\000q\000u\000i\000r\000e\000m\000e\000n\000t\000s\000\040\000f\000o\000r\000\040\000I\000n\000t\000e\000g\000r\000a\000t\000i\000o\000n) -endobj -36 0 obj -<< /S /GoTo /D (subsection.1.3.1) >> -endobj -39 0 obj -(\376\377\000H\000a\000r\000d\000w\000a\000r\000e) -endobj -40 0 obj -<< /S /GoTo /D (subsection.1.3.2) >> -endobj -43 0 obj -(\376\377\000S\000o\000f\000t\000w\000a\000r\000e\000\040\000F\000r\000a\000m\000e\000w\000o\000r\000k) -endobj -44 0 obj -<< /S /GoTo /D (subsection.1.3.3) >> -endobj -47 0 obj -(\376\377\000P\000h\000y\000s\000i\000c\000a\000l\000\040\000I\000n\000p\000u\000t\000\040\000S\000e\000n\000s\000o\000r\000\040\000S\000i\000g\000n\000a\000l\000s) -endobj -48 0 obj -<< /S /GoTo /D (subsection.1.3.4) >> -endobj -51 0 obj -(\376\377\000B\000u\000i\000l\000d\000\040\000t\000h\000e\000\040\000S\000o\000l\000u\000t\000i\000o\000n) -endobj -52 0 obj -<< /S /GoTo /D (chapter.2) >> -endobj -55 0 obj -(\376\377\000B\000S\000E\000C\000\040\000S\000t\000e\000p\000-\000b\000y\000-\000s\000t\000e\000p\000\040\000E\000x\000a\000m\000p\000l\000e) -endobj -56 0 obj -<< /S /GoTo /D (section.2.1) >> -endobj -59 0 obj -(\376\377\000P\000r\000e\000r\000e\000q\000u\000i\000s\000i\000t\000e\000s) -endobj -60 0 obj -<< /S /GoTo /D (section.2.2) >> -endobj -63 0 obj -(\376\377\000S\000e\000t\000t\000i\000n\000g\000\040\000E\000v\000e\000r\000y\000t\000h\000i\000n\000g\000\040\000U\000p) -endobj -64 0 obj -<< /S /GoTo /D (section.2.3) >> -endobj -67 0 obj -(\376\377\000T\000h\000e\000\040\000E\000x\000a\000m\000p\000l\000e\000\040\000C\000o\000d\000e) -endobj -68 0 obj -<< /S /GoTo /D (section.2.4) >> -endobj -71 0 obj -(\376\377\000H\000e\000l\000l\000o\000\040\000`\000\250\000I\000n\000d\000o\000o\000r\000-\000A\000i\000r\000-\000Q\000u\000a\000l\000i\000t\000y\000`\000\250) -endobj -72 0 obj -<< /S /GoTo /D (section.2.5) >> -endobj -75 0 obj -(\376\377\000R\000e\000d\000u\000c\000i\000n\000g\000\040\000p\000o\000w\000e\000r\000\040\000c\000o\000n\000s\000u\000m\000p\000t\000i\000o\000n) -endobj -76 0 obj -<< /S /GoTo /D (section.2.6) >> -endobj -79 0 obj -(\376\377\000T\000r\000i\000g\000g\000e\000r\000\040\000U\000L\000P\000\040\000p\000l\000u\000s) -endobj -80 0 obj -<< /S /GoTo /D (section.2.7) >> -endobj -83 0 obj -(\376\377\000T\000e\000m\000p\000e\000r\000a\000t\000u\000r\000e\000\040\000o\000f\000f\000s\000e\000t\000s\000\040\000d\000u\000e\000\040\000t\000o\000\040\000h\000e\000a\000t\000\040\000s\000o\000u\000r\000c\000e\000s\000\040\000o\000n\000\040\000t\000h\000e\000\040\000b\000o\000a\000r\000d) -endobj -84 0 obj -<< /S /GoTo /D (section.2.8) >> -endobj -87 0 obj -(\376\377\000S\000i\000m\000u\000l\000a\000t\000e\000\040\000m\000u\000l\000t\000i\000p\000l\000e\000\040\000s\000e\000n\000s\000o\000r\000s\000\040\000u\000s\000i\000n\000g\000\040\000s\000i\000n\000g\000l\000e\000\040\000B\000S\000E\000C\000\040\000i\000n\000s\000t\000a\000n\000c\000e) -endobj -88 0 obj -<< /S /GoTo /D (section.2.9) >> -endobj -91 0 obj -(\376\377\000Q\000u\000i\000c\000k\000\040\000U\000l\000t\000r\000a\000-\000l\000o\000w\000\040\000P\000o\000w\000e\000r\000\040\000m\000o\000d\000e\000\040\000\050\000q\000-\000U\000L\000P\000\051) -endobj -92 0 obj -<< /S /GoTo /D (section.2.10) >> -endobj -95 0 obj -(\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n) -endobj -96 0 obj -<< /S /GoTo /D (chapter.3) >> -endobj -99 0 obj -(\376\377\000F\000A\000Q) -endobj -100 0 obj -<< /S /GoTo /D (section.3.1) >> -endobj -103 0 obj -(\376\377\000N\000o\000\040\000O\000u\000t\000p\000u\000t\000\040\000F\000r\000o\000m\000\040\000b\000s\000e\000c\000\137\000d\000o\000\137\000s\000t\000e\000p\000s\000\050\000\051) -endobj -104 0 obj -<< /S /GoTo /D (section.3.2) >> -endobj -107 0 obj -(\376\377\000I\000A\000Q\000\040\000o\000u\000t\000p\000u\000t\000\040\000d\000o\000e\000s\000\040\000n\000o\000t\000\040\000c\000h\000a\000n\000g\000e\000\040\000o\000r\000\040\000a\000c\000c\000u\000r\000a\000c\000y\000\040\000r\000e\000m\000a\000i\000n\000s\000\040\0000) -endobj -108 0 obj -<< /S /GoTo /D (section.3.3) >> -endobj -111 0 obj -(\376\377\000E\000r\000r\000o\000r\000\040\000C\000o\000d\000e\000s\000\040\000a\000n\000d\000\040\000C\000o\000r\000r\000e\000c\000t\000i\000v\000e\000\040\000M\000e\000a\000s\000u\000r\000e\000s) -endobj -112 0 obj -<< /S /GoTo /D (subsection.3.3.1) >> -endobj -115 0 obj -(\376\377\000E\000r\000r\000o\000r\000s\000\040\000R\000e\000t\000u\000r\000n\000e\000d\000\040\000b\000y\000\040\000b\000s\000e\000c\000\137\000d\000o\000\137\000s\000t\000e\000p\000s\000\050\000\051) -endobj -116 0 obj -<< /S /GoTo /D (subsection.3.3.2) >> -endobj -119 0 obj -(\376\377\000E\000r\000r\000o\000r\000s\000\040\000R\000e\000t\000u\000r\000n\000e\000d\000\040\000b\000y\000\040\000b\000s\000e\000c\000\137\000u\000p\000d\000a\000t\000e\000\137\000s\000u\000b\000s\000c\000r\000i\000p\000t\000i\000o\000n\000\050\000\051) -endobj -120 0 obj -<< /S /GoTo /D (subsection.3.3.3) >> -endobj -123 0 obj -(\376\377\000E\000r\000r\000o\000r\000s\000\040\000R\000e\000t\000u\000r\000n\000e\000d\000\040\000b\000y\000\040\000b\000s\000e\000c\000\137\000s\000e\000t\000\137\000c\000o\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n\000\050\000\051\000\040\000/\000\040\000b\000s\000e\000c\000\137\000s\000e\000t\000\137\000s\000t\000a\000t\000e\000\050\000\051) -endobj -124 0 obj -<< /S /GoTo /D (subsection.3.3.4) >> -endobj -127 0 obj -(\376\377\000E\000r\000r\000o\000r\000s\000\040\000R\000e\000t\000u\000r\000n\000e\000d\000\040\000b\000y\000\040\000b\000s\000e\000c\000\137\000s\000e\000n\000s\000o\000r\000\137\000c\000o\000n\000t\000r\000o\000l\000\050\000\051) -endobj -128 0 obj -<< /S /GoTo /D (chapter.4) >> -endobj -131 0 obj -(\376\377\000M\000o\000d\000u\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) -endobj -132 0 obj -<< /S /GoTo /D (section.4.1) >> -endobj -135 0 obj -(\376\377\000B\000S\000E\000C\000\040\000C\000\040\000I\000n\000t\000e\000r\000f\000a\000c\000e) -endobj -136 0 obj -<< /S /GoTo /D (subsection.4.1.1) >> -endobj -139 0 obj -(\376\377\000I\000n\000t\000e\000r\000f\000a\000c\000e\000\040\000U\000s\000a\000g\000e) -endobj -140 0 obj -<< /S /GoTo /D (subsection.4.1.2) >> -endobj -143 0 obj -(\376\377\000I\000n\000t\000e\000r\000f\000a\000c\000e\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000s) -endobj -144 0 obj -<< /S /GoTo /D (subsection.4.1.3) >> -endobj -147 0 obj -(\376\377\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000s) -endobj -148 0 obj -<< /S /GoTo /D (subsection.4.1.4) >> -endobj -151 0 obj -(\376\377\000D\000e\000f\000i\000n\000e\000s) -endobj -152 0 obj -<< /S /GoTo /D (chapter.5) >> -endobj -155 0 obj -(\376\377\000D\000a\000t\000a\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) -endobj -156 0 obj -<< /S /GoTo /D (section.5.1) >> -endobj -159 0 obj -(\376\377\000b\000s\000e\000c\000\137\000b\000m\000e\000\137\000s\000e\000t\000t\000i\000n\000g\000s\000\137\000t\000\040\000S\000t\000r\000u\000c\000t\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) -endobj -160 0 obj -<< /S /GoTo /D (subsection.5.1.1) >> -endobj -163 0 obj -(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) -endobj -164 0 obj -<< /S /GoTo /D (subsection.5.1.2) >> -endobj -167 0 obj -(\376\377\000F\000i\000e\000l\000d\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) -endobj -168 0 obj -<< /S /GoTo /D (section.5.2) >> -endobj -171 0 obj -(\376\377\000b\000s\000e\000c\000\137\000i\000n\000p\000u\000t\000\137\000t\000\040\000S\000t\000r\000u\000c\000t\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) -endobj -172 0 obj -<< /S /GoTo /D (subsection.5.2.1) >> -endobj -175 0 obj -(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) -endobj -176 0 obj -<< /S /GoTo /D (subsection.5.2.2) >> -endobj -179 0 obj -(\376\377\000F\000i\000e\000l\000d\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) -endobj -180 0 obj -<< /S /GoTo /D (section.5.3) >> -endobj -183 0 obj -(\376\377\000b\000s\000e\000c\000\137\000o\000u\000t\000p\000u\000t\000\137\000t\000\040\000S\000t\000r\000u\000c\000t\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) -endobj -184 0 obj -<< /S /GoTo /D (subsection.5.3.1) >> -endobj -187 0 obj -(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) -endobj -188 0 obj -<< /S /GoTo /D (subsection.5.3.2) >> -endobj -191 0 obj -(\376\377\000F\000i\000e\000l\000d\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) -endobj -192 0 obj -<< /S /GoTo /D (section.5.4) >> -endobj -195 0 obj -(\376\377\000b\000s\000e\000c\000\137\000s\000e\000n\000s\000o\000r\000\137\000c\000o\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n\000\137\000t\000\040\000S\000t\000r\000u\000c\000t\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) -endobj -196 0 obj -<< /S /GoTo /D (subsection.5.4.1) >> -endobj -199 0 obj -(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) -endobj -200 0 obj -<< /S /GoTo /D (subsection.5.4.2) >> -endobj -203 0 obj -(\376\377\000F\000i\000e\000l\000d\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) -endobj -204 0 obj -<< /S /GoTo /D (section.5.5) >> -endobj -207 0 obj -(\376\377\000b\000s\000e\000c\000\137\000v\000e\000r\000s\000i\000o\000n\000\137\000t\000\040\000S\000t\000r\000u\000c\000t\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) -endobj -208 0 obj -<< /S /GoTo /D (subsection.5.5.1) >> -endobj -211 0 obj -(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) -endobj -212 0 obj -<< /S /GoTo /D (subsection.5.5.2) >> -endobj -215 0 obj -(\376\377\000F\000i\000e\000l\000d\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) -endobj -216 0 obj -<< /S /GoTo /D [217 0 R /Fit] >> -endobj -224 0 obj -<< -/Length 1012 -/Filter /FlateDecode ->> -stream -xÚ­UKÛ6¾ûWðh%ͧDæ'Ûm¤h×zØä •h[…-9’¼ÛùñŠ’M;V½.?8â¼8¿M0´ªG­E÷ƒëW0EÊ(b¥ÅJ©D•E¡ z2ø§ÈýãXjBc…Ò-Äc„iFµ×²WœÚé‡-GïËÑŸð¹ž'Hó_æ+0¾M¢®Ä¾B†'‘2®ºeeÚãÕ»‡Gm!1Ìå #iI¸’ç‘®•!EL˜ˆP¬QŒ{XÚ;`\£Ýá@ˆ"!ùÕ;ø:"‚ -ˆæbâÖâÖ×Ë* ÷u)F"-ƒ²ŽÔ2D³â[˜Å8 D™UÂ×zj•¯çUäv(œ) 81W?‘ÌDpu+4¤z¸¿=Ë+¯ ÓBH㪙-FÓ_¥DœŸ¸B‹%â†ÄZ£JŽbz(»ª’&/‹ æ±ßïóÌN¾,>‚· -½!<8rª¼ã¬¬Óµw™—Ëæ%©¬º+žóª,¶¶h’ßz·Ù×­üÃgªèl~÷Væò Öu·8”¦ prÃLÀ/ÉñÓE¯Ÿ]˜JYO"Â#{U z~E”zŸ^ð,c?¡£ˆ†£Ó¥eÏ…ý‡ŸEÀ-¬1tÚWÏ…bbbçH±öWÿ©ÌòÏÐÔiK›Ú_kek[=Ûl‚•ŠÆßýò>i¯®÷OÛ´ñMé×t«Ž6/y³.÷AQ6yjOC•éÞqª3ØoŸlõf‚…TãÙ|1QjŒgŸî"Mq@iܲ¿ýRe|‘n@³ã Q`3$(á¢í£Ç/e û*ÎÐKk¹u¯mÐÜ]ôù#ÎÒÄDÂN4Àg/ž=¶(pÊ ¦æúÔêÆÃóC°qI¨ñ†Fnh0£¥Ñ - rîð… Þ¡Ðp\ÿĈÙ¯Q'¦h„Ï´øÌ^μ7;è/âcüsõ¹ÿiøµ+öuÌÛÚÍĈ1f$¡º%ë,Ý/”Ó-ú¨2E— -r1q¹m;›Î¤eSÚ’$¼ì÷<&ñÕŠÿ(´Â_ð‘0Žb — dc§/Aéxn‹º¬›úÇûíÓoÐâÆ´ä&,¿Ýl¼¶ÊWë¦öú~àüâTÑ8ÙÔe¯X%U–+ï“ß¼åõ®¬“Më ÆöŸÝ¦Ì›vNt[•ÝUe¶O[ÑØfy¡:ÑTùÓ>ðIjýÅö‡ìwòŸ§Y[¿aŸÝü‚K@Ø@¯Gnq#¹…¤\úÉ–ìv›üd².ËîÍ™ÙÞåï_«pØ­šoÝn±!C3î_¢õšM -endstream -endobj -217 0 obj -<< -/Type /Page -/Contents 224 0 R -/Resources 223 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 230 0 R -/Group 226 0 R ->> -endobj -220 0 obj -<< -/Type /XObject -/Subtype /Form -/FormType 1 -/PTEX.FileName (./Bosch-SupergraphicUp-Gray-Medium-top.pdf) -/PTEX.PageNumber 1 -/PTEX.InfoDict 231 0 R -/BBox [0 0 504.566101 1275.590576] -/Group 226 0 R -/Resources << -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->>/XObject << -/x5 232 0 R -/x6 233 0 R -/x7 234 0 R -/x8 235 0 R -/x9 236 0 R -/x10 237 0 R -/x11 238 0 R -/x12 239 0 R -/x13 240 0 R -/x14 241 0 R -/x15 242 0 R -/x16 243 0 R -/x17 244 0 R -/x18 245 0 R -/x19 246 0 R -/x20 247 0 R -/x21 248 0 R -/x22 249 0 R ->>>> -/Length 1151 -/Filter /FlateDecode ->> -stream -xœ­WK®7 ÜëºÀ“EI$¥½/àUÖÁÀÈf&ÁK69~ŠýUK£<ðL뵨b±ŠÔ|ºþÓEOÔb`Nžc ,â?¶òÿô¿ù?ݧ#ñÏþÿˆ¡ÄVRñ—ûö{ôüã¿ýËþû_îÇ0!RÎ-p#Ÿ8#Z©{ ýj)pUÿ:δYÅ?±'…TÙ§ZC[w=ÝMTr¢ŠžëŠ‰#[†¼cÚþ‚Õ1q Ò:EKP-& -L=²-‚ÃÒîy¥ö( Õe¦e.%ÔD Jû®òk¶fF ih•V”{¸»(ë…K°t¢Tí¸Üø{]Ž¼E9°ëÞ– /Ð=Ü­ÇýR§ØGÌ…;¥3_ëe52&¨Q ”ÞÖ«¯æMôå9¥KD¼ðÖ*%)v'¼À2lýò¹rʶÔB¢†‚âÂXЪ QÁ3á¹jHÍ?|R¤n2ÄÒÖ&¤AÕ¦Ð2ž!šV xÝ67.ù|¥ä ·Çp>e¨y;hÙD5†˜tü”p4×mÍÈ£ì ö¸RCQÛÃ%€é”BnËŽDšÑ•Bøއ¦̌£¹!"@²¡Vu¾!Yë5eü5⃠¨–å}É@ -|¶¦‹.,›)ì µ:ìÉ~Ë0ã%Jâ01p8.ž Xš‘ÿèV ´6ïž¾àL%ÚrïlT¥#ç©Î»:ÊW1u:’¸ëhL:óùùùè?+³T š„nP%¸®Ææ[(¡kRš2^ˆ  $'tAæðÙ’‘žaئ¾E©¨Ï¦?(¥Z|´²Râò÷ŠáÔVd¢ U3= qZ†+ù(‰EÀ;—"­e{N•usñ'o©tÃZPuãz±!œð¡é¨ÒèÂ×lÔÕÊ“'·oýÀ aêoÔ6 rP¬›uݱH T‘ü÷‚4B9Zw’@ËAWäç$o³ÈsÞ¥Þº4Ø_m"š,qÊuL•5 X“ô®ïm€ÝxJiJ»gb 6eö·=m°nËeª•.]«û„¸ºá5Ùe´Ól¸Í“n7åèÙÓÎfíz¤‹“âKÅ'aç•Ê -ÛhA4©‹Ù*n ,yéÀÏm‰­ÃךfLý5+×_ n’v¹ošºÛ¼­uÐÖkRߨÎI¾«¾Ý.ðQþ§3,o—ë¥J%ØM‘¦0ò-–…xÅà“vb ñ€`@ÔkÆMÅì"Å«éN…)S7ÍÜaƒçd”ÍI‡‘f¯Ýc;]î₪=øí¼ýú- É®ÓO¸nEpç`nK»´ïRÚÿû—.÷uåe?m¯Ä¿ÆÚŒ¥;«ú8ÚõnÆ?”è9Õp¬ñÆu2¸™êþCÂý‹[G, -endstream -endobj -231 0 obj -<< -/Creator (cairo 1.15.2 \(http://cairographics.org\)) -/Producer (cairo 1.15.2 \(http://cairographics.org\)) ->> -endobj -232 0 obj -<< -/Length 250 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 251 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ02SpÉç -B}†s -endstream -endobj -233 0 obj -<< -/Length 252 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 253 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ0²TpÉç -B}¡v -endstream -endobj -234 0 obj -<< -/Length 254 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 255 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ06RpÉç -B}lp -endstream -endobj -235 0 obj -<< -/Length 256 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 257 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ06UpÉç -B}‡s -endstream -endobj -236 0 obj -<< -/Length 258 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 259 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ0¶PpÉç -B}¢v -endstream -endobj -237 0 obj -<< -/Length 260 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 261 0 R ->> -stream -xœ+ä -T(ä2P04´4г47V050Ñ353SЋ˜š˜+¥*„+äqr*!„LÎåÒO4PH/VЯ01TpÉç -B x -endstream -endobj -238 0 obj -<< -/Length 262 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 263 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ01QpÉç -B}ˆs -endstream -endobj -239 0 obj -<< -/Length 264 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 265 0 R ->> -stream -xœ+ä -T(ä2P04´4г47V050Ñ353SЋ˜š˜+¥*„+äqr*!„LÎåÒO4PH/VЯªqÉç -BA~ -endstream -endobj -240 0 obj -<< -/Length 266 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 267 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ05PpÉç -B}np -endstream -endobj -241 0 obj -<< -/Length 268 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 269 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ05VpÉç -B}‰s -endstream -endobj -242 0 obj -<< -/Length 270 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 271 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ05SpÉç -B}¤v -endstream -endobj -243 0 obj -<< -/Length 272 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 273 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ0µTpÉç -B}¿y -endstream -endobj -244 0 obj -<< -/Length 274 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 275 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ03RpÉç -B}Šs -endstream -endobj -245 0 obj -<< -/Length 276 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 277 0 R ->> -stream -xœ+ä -T(ä2P04´4г47V050Ñ353SЋ˜š˜+¥*„+äqr*!„LÎåÒO4PH/VЯ03UpÉç -BC~ -endstream -endobj -246 0 obj -<< -/Length 278 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 279 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ0³PpÉç -B}Ày -endstream -endobj -247 0 obj -<< -/Length 280 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 281 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ07TpÉç -B}‹s -endstream -endobj -248 0 obj -<< -/Length 282 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 283 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ07QpÉç -B}¦v -endstream -endobj -249 0 obj -<< -/Length 284 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 285 0 R ->> -stream -xœ+ä -T(ä2P04´4г43T050Ñ353SЋ˜š*¥*„+äqr*!„LÎåÒO4PH/VЯ07WpÉç -B}Áy -endstream -endobj -250 0 obj -75 -endobj -251 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x26 286 0 R ->> ->> -endobj -252 0 obj -75 -endobj -253 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x29 287 0 R ->> ->> -endobj -254 0 obj -75 -endobj -255 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x32 288 0 R ->> ->> -endobj -256 0 obj -75 -endobj -257 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x35 289 0 R ->> ->> -endobj -258 0 obj -75 -endobj -259 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x38 290 0 R ->> ->> -endobj -260 0 obj -75 -endobj -261 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x41 291 0 R ->> ->> -endobj -262 0 obj -75 -endobj -263 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x44 292 0 R ->> ->> -endobj -264 0 obj -74 -endobj -265 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x47 293 0 R ->> ->> -endobj -266 0 obj -75 -endobj -267 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x50 294 0 R ->> ->> -endobj -268 0 obj -75 -endobj -269 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x53 295 0 R ->> ->> -endobj -270 0 obj -75 -endobj -271 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x56 296 0 R ->> ->> -endobj -272 0 obj -75 -endobj -273 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x59 297 0 R ->> ->> -endobj -274 0 obj -75 -endobj -275 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x62 298 0 R ->> ->> -endobj -276 0 obj -75 -endobj -277 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x65 299 0 R ->> ->> -endobj -278 0 obj -75 -endobj -279 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x68 300 0 R ->> ->> -endobj -280 0 obj -75 -endobj -281 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x71 301 0 R ->> ->> -endobj -282 0 obj -75 -endobj -283 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x74 302 0 R ->> ->> -endobj -284 0 obj -75 -endobj -285 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/XObject << -/x77 303 0 R ->> ->> -endobj -286 0 obj -<< -/Length 304 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 305 0 R ->> -stream -xœMÈ1 -€@ DÑ>§˜ gׄ5Ç°²mtïŠXÈo>ï”S*iH)¨Q:8M½ yÁ­àZ0âⓈò_"{ÖÜwd€j ó„y—v"ÖŠ¶n=Q7žn4º -endstream -endobj -287 0 obj -<< -/Length 306 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 307 0 R ->> -stream -xœUÈ1 -Ã@ DÑ^§˜ X[ÚÕê©R‡âÆgïYÜ™ß|Þ)§LTÒ±,IÍ0º–ÀtAñÀïƒ'á ¯­eÖÛM}­d…Yw÷ï]æñí˜ûÖ }“Ç茫 -endstream -endobj -288 0 obj -<< -/Length 308 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 309 0 R ->> -stream -xœMŒ11 {¿b?߆Øqü *j„×€täÿÕi›ÙÑj9¤PIC­IÍhpšz ü…[àûÄ )–¡m\r wµn™yÆÓ`õeI®¿0­‘Ö:oÙîÄkb›û蘻\W~:#> -endstream -endobj -289 0 obj -<< -/Length 310 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 311 0 R ->> -stream -xœUÈ1 -Ã@ DÑ^§˜ XíjÑê®R‡ìÆgï6îÌo>ïC&*é0KjFE£k L74ü¿xá'¼¨¤†yf<ž(­hé•L¸u­iîøì2¿‰u`[OŒM–«b…` -endstream -endobj -290 0 obj -<< -/Length 312 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 313 0 R ->> -stream -xœUÈ1Â@ DÑÞ§˜ Ä™Ýõ`| *j„i@ -{‰ˆýæëí¶ÛB'­½r@ Wbù"ñyàŠ·ñ ”gFÕéîý<È‚š\ª‰ûËÖñœXçVs³ËÑ}1  -endstream -endobj -291 0 obj -<< -/Length 314 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 92 505 193] -/Resources 315 0 R ->> -stream -xœMŽ1Ã@{^±/ ÀwðŒ<ÁMÜ8E’ÿKá -ËFB`µŽa³;ÔÌS<ßM°ÿH ©ìMñ† EÔ×^ÂÜØ¡=¸¥–iE]Î*ãÒÙÇíéZ&sÜc|²øŠ¹ -xÑ“þ%< -endstream -endobj -292 0 obj -<< -/Length 316 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 317 0 R ->> -stream -xœUŒ1Â@ {¿b?g³Ïø©¨B¤)Üÿ%NthšÑsÊ) •t˜µ²!è‰åŸ®x gŠ‹fEUÿs¶®æ¶¡y×6n¸¿d½Ïu•‡ì“/|” -endstream -endobj -293 0 obj -<< -/Length 318 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 289] -/Resources 319 0 R ->> -stream -xœ}‘Kà D÷9…OàÚ>FÐM³Imï/ÕäG>jˆËoÌðêKP±.bà'‘I Þ=Üý§#0A¢#×#ì }­•¨É§cM¼jP…ƶ;TTPŠÇ‚ÁØ¡VðR¤ÝŹgöø7ºRDMiwÜŽ¿- ¿$ÉZ±Fli‘¹Tþiæ]2'ÐÅèØÙmy­1¹…4áVlŒê;¶ 4#éÞŽg>d KJÁ”Óô7 av»w_W-eà -endstream -endobj -294 0 obj -<< -/Length 320 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 321 0 R ->> -stream -xœMŒ1„0 {¿b?°6¾<ƒŠ! H\þ/]Dušj¦˜GI̤Aµ2×á´ìô·ÀwÇ‚[Þ>yýØIÿÞ¤ºª(ÇÈ“U+†í’a%Ž†¡Ê‚vÊÜù¾Ø - -endstream -endobj -295 0 obj -<< -/Length 322 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 323 0 R ->> -stream -xœ]ŠA -A ïóŠþÀd;™Älž±'Ï"â^Öù?(^©KQÔÑŽÖ)¤Cµ(•A—HôoO¼n8ãÙº¦ -S«NÐ0q®ÿúÆH¡™(]e”¹%®¶\ˆûÄ2we`îmûðH0 -endstream -endobj -296 0 obj -<< -/Length 324 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 325 0 R ->> -stream -xœM‰1Â@ {¿b?pŽïÅçgPQ#„HR¸ÿK ªhšÑÌ!‡4S3½L+ݨ=Ñþ¡3ñyàŠ·4U¹UU"©£jœì´9\«6³€[§&‹+qÉr3<'–¹» Ì].?¾9#. -endstream -endobj -297 0 obj -<< -/Length 326 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 327 0 R ->> -stream -xœMŒ1 -Ã0û{Å~@ò®}gYÏH•:718ú?DvevŠ=ì°ÄL:¤Ê\Ë„ ç(HW/ø­xb·«ÏQ—vÒ}÷R!ùˆSyQõQxmxŸ†¡m’Ð6{tþ¾ -endstream -endobj -298 0 obj -<< -/Length 328 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 329 0 R ->> -stream -xœMŒA -Ã0 ïzÅ~ÀÎÊ‘*ù9õ\Bi.-¤þ?ÔäTæ´3°§œRXIƒjgí±ÂiÕånïw|äò7ïà¤üïù@ª«ZCFÖl´–Øß²<ˆ×À2Ž1Ù&?¨Žä -endstream -endobj -299 0 obj -<< -/Length 330 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 589 505 620] -/Resources 331 0 R ->> -stream -xœMÉ»€@Ñœ*¨ãs”a &šh ö?ã™8f;oO`Ê KÁݚإâ‰×†Ó¸ÝÀ轨Æ<ÐÙÈ#>ÙQ]I»cH[¿»Â ]óR -endstream -endobj -300 0 obj -<< -/Length 332 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 333 0 R ->> -stream -xœMŒ1ƒ@ {¿b?pÆ>ìøü *j„Ph‰Üÿ¥šf5+ÍAaƒj -gŒp1ö@¹…[à·aÆ—ŠŽÆZ33ÎÚZf{¬Ç]Åù¥! -ÓËZ5¬Á»cèûYGßi:ù¯à -endstream -endobj -301 0 obj -<< -/Length 334 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 335 0 R ->> -stream -xœMŠA -Ã0 ï~Å~ÀÊZ’­è=õ\JH.-¤þ?´ôæ2 s–³T -éh-)†N—¨ÿÐ=ðÙpÇ»TO“јëŠf*:43®z:CÜ©§¨¦›âù*˃Ø'–y4UÌ£Ü~|Ið. -endstream -endobj -302 0 obj -<< -/Length 336 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 337 0 R ->> -stream -xœMŒ;1Cû9…/ÙÉÄùÌ1¨¨BlÒ’ûKªµëYz‡’L͈œÃ4zA5jíHPÙñyàŠ·$¶¢ôˆ1ࡱrZ§›e(;ÚæËæÁBÜ_²Ý ωmîÙ+æ.—Õ/"t -endstream -endobj -303 0 obj -<< -/Length 338 0 R -/Filter /FlateDecode -/Type /XObject -/Subtype /Form -/BBox [ 0 0 505 1191] -/Resources 339 0 R ->> -stream -xœ]Š1 -Ã@ {½b?`Y:¸Ûg¤JŒ‰›ìû?ĸ -ašev9d25«p§)[ ­j6L·ÈÚp®xb—´®,d¿¿«eû§¡f¤y¢%µ„×p,™_†÷À<6/c“ÇÅQZQ -endstream -endobj -304 0 obj -92 -endobj -305 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh80 340 0 R ->> ->> -endobj -306 0 obj -99 -endobj -307 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh83 341 0 R ->> ->> -endobj -308 0 obj -105 -endobj -309 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh86 342 0 R ->> ->> -endobj -310 0 obj -98 -endobj -311 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh89 343 0 R ->> ->> -endobj -312 0 obj -98 -endobj -313 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh92 344 0 R ->> ->> -endobj -314 0 obj -115 -endobj -315 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> ->> -endobj -316 0 obj -99 -endobj -317 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh97 345 0 R ->> ->> -endobj -318 0 obj -194 -endobj -319 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> ->> -endobj -320 0 obj -99 -endobj -321 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh102 346 0 R ->> ->> -endobj -322 0 obj -104 -endobj -323 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh105 347 0 R ->> ->> -endobj -324 0 obj -104 -endobj -325 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh108 348 0 R ->> ->> -endobj -326 0 obj -99 -endobj -327 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh111 349 0 R ->> ->> -endobj -328 0 obj -99 -endobj -329 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh114 350 0 R ->> ->> -endobj -330 0 obj -84 -endobj -331 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> ->> -endobj -332 0 obj -105 -endobj -333 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh119 351 0 R ->> ->> -endobj -334 0 obj -106 -endobj -335 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh122 352 0 R ->> ->> -endobj -336 0 obj -105 -endobj -337 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh125 353 0 R ->> ->> -endobj -338 0 obj -103 -endobj -339 0 obj -<< -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->> -/Shading << -/sh128 354 0 R ->> ->> -endobj -340 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 355 0 R ->> -endobj -341 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 356 0 R ->> -endobj -342 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 357 0 R ->> -endobj -343 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 358 0 R ->> -endobj -344 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 359 0 R ->> -endobj -345 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 360 0 R ->> -endobj -346 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 361 0 R ->> -endobj -347 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 362 0 R ->> -endobj -348 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 363 0 R ->> -endobj -349 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 364 0 R ->> -endobj -350 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 365 0 R ->> -endobj -351 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 363 0 R ->> -endobj -352 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 366 0 R ->> -endobj -353 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 367 0 R ->> -endobj -354 0 obj -<< -/ShadingType 2 -/ColorSpace /DeviceRGB -/Coords [ 0 0 1 0] -/Domain [ 0 1] -/Extend [ true true] -/Function 368 0 R ->> -endobj -355 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 369 0 R 370 0 R 370 0 R] -/Bounds [ 0.998902 0.999891] -/Encode [ 0 1 0 1 0 1] ->> -endobj -356 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 371 0 R 372 0 R 365 0 R 373 0 R] -/Bounds [ 0.42145 0.471603 0.943808] -/Encode [ 0 1 0 1 0 1 0 1] ->> -endobj -357 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 374 0 R 375 0 R 376 0 R] -/Bounds [ 0.428836 0.829244] -/Encode [ 0 1 0 1 0 1] ->> -endobj -358 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 377 0 R 378 0 R] -/Bounds [ 0.219969] -/Encode [ 0 1 0 1] ->> -endobj -359 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 379 0 R 370 0 R] -/Bounds [ 0.445434] -/Encode [ 0 1 0 1] ->> -endobj -360 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 371 0 R 372 0 R 365 0 R 373 0 R] -/Bounds [ 0.42145 0.471603 0.943808] -/Encode [ 0 1 0 1 0 1 0 1] ->> -endobj -361 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 380 0 R 373 0 R] -/Bounds [ 0.557724] -/Encode [ 0 1 0 1] ->> -endobj -362 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 372 0 R 365 0 R] -/Bounds [ 0.16318] -/Encode [ 0 1 0 1] ->> -endobj -363 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.905882 0.909804 0.909804] -/C1 [ 0.862745 0.866667 0.870588] -/N 1 ->> -endobj -364 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 380 0 R 373 0 R] -/Bounds [ 0.900901] -/Encode [ 0 1 0 1] ->> -endobj -365 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.905882 0.909804 0.909804] -/C1 [ 0.819608 0.827451 0.831373] -/N 1 ->> -endobj -366 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 380 0 R 373 0 R] -/Bounds [ 0.900901] -/Encode [ 0 1 0 1] ->> -endobj -367 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 381 0 R 382 0 R] -/Bounds [ 0.900901] -/Encode [ 0 1 0 1] ->> -endobj -368 0 obj -<< -/FunctionType 3 -/Domain [ 0 1] -/Functions [ 369 0 R 370 0 R] -/Bounds [ 0.621891] -/Encode [ 0 1 0 1] ->> -endobj -369 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.776471 0.784314 0.792157] -/C1 [ 0.945098 0.945098 0.94902] -/N 1 ->> -endobj -370 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.945098 0.945098 0.94902] -/C1 [ 0.945098 0.945098 0.94902] -/N 1 ->> -endobj -371 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.945098 0.945098 0.94902] -/C1 [ 0.905882 0.909804 0.909804] -/N 1 ->> -endobj -372 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.905882 0.909804 0.909804] -/C1 [ 0.905882 0.909804 0.909804] -/N 1 ->> -endobj -373 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.819608 0.827451 0.831373] -/C1 [ 0.819608 0.827451 0.831373] -/N 1 ->> -endobj -374 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.921569 0.92549 0.92549] -/C1 [ 0.921569 0.92549 0.92549] -/N 1 ->> -endobj -375 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.921569 0.92549 0.92549] -/C1 [ 0.819608 0.827451 0.831373] -/N 1 ->> -endobj -376 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.819608 0.827451 0.831373] -/C1 [ 0.776471 0.784314 0.792157] -/N 1 ->> -endobj -377 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.862745 0.866667 0.870588] -/C1 [ 0.862745 0.866667 0.870588] -/N 1 ->> -endobj -378 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.862745 0.866667 0.870588] -/C1 [ 0.819608 0.827451 0.831373] -/N 1 ->> -endobj -379 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.733333 0.741176 0.752941] -/C1 [ 0.945098 0.945098 0.94902] -/N 1 ->> -endobj -380 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.945098 0.945098 0.94902] -/C1 [ 0.819608 0.827451 0.831373] -/N 1 ->> -endobj -381 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.945098 0.945098 0.94902] -/C1 [ 0.733333 0.741176 0.752941] -/N 1 ->> -endobj -382 0 obj -<< -/FunctionType 2 -/Domain [ 0 1] -/C0 [ 0.733333 0.741176 0.752941] -/C1 [ 0.733333 0.741176 0.752941] -/N 1 ->> -endobj -226 0 obj -<< -/Type /Group -/S /Transparency -/I true -/CS /DeviceRGB ->> -endobj -221 0 obj -<< -/Type /XObject -/Subtype /Form -/FormType 1 -/PTEX.FileName (C:/branch/ku_algorithm_environment/20_Documents/20_Documentation/texmfbosch/tex/generic/images/bosch/CD2016Graphics/Bosch_4C_S.pdf) -/PTEX.PageNumber 1 -/PTEX.InfoDict 383 0 R -/BBox [0 0 425.196 94.487] -/Resources << -/ColorSpace << -/Cs6 384 0 R ->>/ExtGState << -/GS1 385 0 R -/GS2 386 0 R -/GS3 387 0 R -/GS4 388 0 R ->>/ProcSet [ /PDF ] -/Shading << -/Sh1 389 0 R ->>>> -/Length 43794 -/Filter /FlateDecode ->> -stream -xÚ´½Ë®äÊ’8ϯˆ±€ùû1®AÔ@£=4JI- y”.PÂýû¶µÌIº9™IF©t{{l†Ñéô‡=–-û§þõß^?>ΧÞû«§Ojõ•Bþø^o´kxýÏÿüãÿ}ýÿöþV^?ÿöúøXC–ÁçŠ9õ×ß~Êÿ×?†×ÿ÷·ÿôò/'ÿãßT?®µ×Ï¿øÉ_?Üëíç„ðJŸK~½ƒÜ¤Ä—Ÿ&]xÇø‰Iîó#„OKÒ‰>ÁµWLŸš¤¥òäGÄÕ›øU¾iã>IáùÓåãÑtráøÈýÕú§¸ú’>dy–æäù%]Èé?M:&÷GÿŠû¸à·ÛÒYÿ %mm÷ -EF©ð™þø¯?>½†R8ãWé˜ü#wx¥òI¡îµ…Ú~ï22a|cüÎÑ_ßü\®~óòr 6Ù·¶7Çíõ[{·ÐÇüÉ=DöqüúñãrÄèÄTE„rõ¸6¥«î“rØ?1 òcûöhâ&ã×ñ‡ñ5+u:n:Ú£Gã›{WÑoß>±¡³M^WÞ{÷ÉòË[žÛË<+™ 2säãV÷&¾;~•‰VdFÈ «gw¼Ì£;hýü‘Û'T¿µKûHÏcù´Ø^Uäÿ -]–Æ»ÅO—Õƒ)áÓ«ÉczÉÝ»ë[‹ƒ¡¿¾åöY¾Wú§Ëw’nÆt ²6þ›¥£ùÕäjù4ËÃ/c€a)²|b~áyÆ¿¶¶Ç’õúgü­æ¢­è?5Æý÷’“þ.=8Z"a´†ü¿o²L -tY^ò£µŒ¡é!m-y·]–[œþêeü¥U›§ÀÂVn˜òhŽ/ÇÅþòr“ĵëÒh`(õ7l,¹ËcTÉÆùW∡rò›Þ÷éò½¡3hæº÷ukÊcK¿êñÁxÎ7¯kGSÇa¥· “¯¯©åz¡û}0F~jâµlÍŸ?¦DÚÖ’›åˆAß?èÜÍJi{OK’ Ÿ§')²­×zü]–‘ :2y¤YKg3Êâ’e-3Ã*ãØäk ûq×QN~kr&ë¯ò‡*ëM¾–åx7æåÉDjéxÒ.ÞëËøkÍ~L„Ñá}šèãlóY†½ìówuÎ÷î2Ž‘:æ»ü"O7ÚÒÂ6‚CFFkÉõ>ha¿övÿ$\œ>A–n,ÛÃèãhñyœL×í¯ò<™­&?¤•¯Å;–•±ØâȓAó2"2hAVìhÑįïñ~)ð-ÄÆ—–"_¸ÊÄ Û㎮Tœ>î3`4åj}–ýïú o>i:šÛ¨np ü12oŽ#¿€1FS:5ÞÀhq%´ž¶ö/´c/[;D»¨½©·â²ãû[Ù?ÐÎbFù¸?ʶl÷Gʼn éÛ@ÉXÓ4Ž²Í´ÚÆ0óµö—0šÜkôWþÁ¿øµò/‡Rõ}oÛ\zwDÆDÝݧÑxšÑ:&àÖÚwmëìÝÇeLí1ÈcÚW0Z?—Eò ËFN­(ß–NʹöÚ8X乂ƒtiãÏEö†„3*Bw’9'ÂÖ’UÚ8¹´ýæi|—dî¼*ê}Èâ Æ;%ý:ç’ ÿ­ÂãÊ™â â½4ËY ûLÁt«Ÿ ÛÕh9Ý·ð«ÜF¦Y•QÒ…UȤȸߓ·lÚái0ÆðtèVÚ“ pc?Ž>j/ük4ÑE9‚þþcjñ²wyUÐʧ•¾\ -=Xž§°§|, -’A•½DNº*ÓS6…¡YÞ£át‡Á¯oÙÊeà+6nŒ Ì‰¢3%¿Ý#.*3é÷w h…V€fý{P势Ëà@‡De¸äAe+ÒÙ1º¿~Ýä1§”ï¢JŸûÖpºòð«¼G]Néì9‰dV ‰Ûø‰[ÖÚ§Y‚>ø´O#~x…ŒœŒ9šÞëTµ[›:G)ŒIüko—W¾±! ÷kcïÌ>}ìxüRÝ´eÕûǯx3OYqÑ òÈi¯wÉ­«ê»µ;•ï†Yá¯Ì²màå¡$gßùWG==ű ¡Œ6µ ¬ùŠÎ®p¨bW#(è îmHO^Wl që&/— ò÷Ë|á Ç”]9³Æ#ËllØR·±Ài=6¦* ­ÉàŒ]K›cC“u‘ö­Pº”òt* Ý¦C§mó{9ãüÑÖ¾ùö¯MCííhSI[Kﳟ„ÚýÔ.9CŒÞd»§yÎ_‡Z^¹ùý55åElڜ̶^§N˜Ÿ›’>Ú›¹·¨fn×Nm¿«êz“£ÑÆ•£Íq‹½qôôçÿòãÿ‘ÿ7€çÿÃè÷0úéH8,/–R—[5¼Ùþ礒ŸÅËüöü-ÈüÅjÔÅ9šèio{óï?ÄöéPHÇy43Ô¬½•ÄŒ£ö¸}±‡ˆ1Eõá"Õɉº@ÛuÜ~åƒ*¿P_mPš%lšT™›•+oú;šMõ ¬azµ‹@u—,çO’A¡N'+\†­‰…—°3oȺ’w##é2 X˜I•D”ãÿÿŒ}&É7ƒúR<6›Ñ†JÞ¡¸M™!²½¹XT—‡ù(†7Ý0ÎEt¬ím.³0}ƒŽÅô£){{§†2>8ª÷‰º•¼ 9ExtyoÊ 0n?>øõcëÞø`z:XöaNŸº˜ÜazþXø2Í@KÚn¡$øýùG“ÏÏ.Ž¨»–r|Î(ˆƒÂö¦Ì1G‹bÿ@6jX;²|gÿäÓ1¸Ú8ž^ÛÇÃk{z´ÚkyRY–ÿFVå´ì:<t`VÏ^7'f®9‰ÖnàfKroÈÄ“0d>¬ÀñÝÑÄü¿òr7ý¿E—@ê}kÑ:Ç·GÛm_Ú|c|Þ¤g¤þ -O ŽEGÕ³ªÂŒŽŽßé ©qo'ÙDQ_-¿ò<’!ßÂÙsö»FU9'îs=—­ÅYèüÖŒò#rÅãÝHw£î&Åó%É/²Š±»ÈΟç 9ù2œ4mà:ãlMò]™%OÖ¹>dagmŽMmýü!=«j4îéå M®q—¸T¦¾/²¬¿ÿÐ_B!¢çD¶:^ƒ([ëç¼+s||ò‹Ÿ¼ôíx›éw4éLÜÚìÀh@Á¯8"÷‡ÖØ;yÇA}…ãWU·ÆÐ÷æ¦n¶O6Ùs;¦ù Ûxü/¸ct¦ƦË'–fl:9&£-òtÔF[ÆHÇt´Ý&Èí·øùÃíw?Û}ÍÝÆÄÇSɾ즇âF­è°lMÙhŒù1îEáîzꈙ5œq†Ã¬—Þá ¸;džó®éòƒu^,ìQXnËT3\9š?Ô@'ÕöbT^Ãp²ÄGk ^yFáv“Ù]½Zº A8£/2¢Æ0Ü>r–{Ù>òØGõÆöC]ÞÇ­í`±ÃDz«²{{=ó %w®@®ADf¨¶CYM|4©ìè¯XÒ18¶;ãD©ù½ÚbœÈ‰Ž:Ú¥ÁóáÚ`œÈúüp6hœH&Ü“iŠÉžz'ªŽN¤Ê@§GD`lñàqÐSµ ‡9Ý]KÇãÿ9FäJÖuK§¶qÉ6õpÒl‡zO¦h4„ÚÖ¢/4Ô¾ÿoœ>\„V¥U1·dãu~„|è'ož -+f¹Ì”ÔÊÖÚ‚>Qã©RTÝÖxU™ÃõÝyŒ4u_É]|¦§ýaT(îÝÝšt4„õÁãIiÿùz4gŸlS_7,è_Gàfý`Än~ͱô¿D™ØG‡J‚ïøè´ëÔ_8ú“š¯X# -50ŽHC˺)Á†qÄÊPÉ4š[°¡j4\48Ä ³ÉÄ-‹á ¾¤8‚G9o¯ ‘…¼½MíëþªÇ“lÜã6pJã6ÞAº°þîhÖ°9yÚÍ3ÿ¢»êŸ~Œ(ºœ69#º!݈c´qÉf)gVõ[c”Œvð|±ã‹P9Ýû-;xÍ£-‹1£ñÍÑÚ厶Þt|qôÇö–¸—ÄMÛ·ÿÚ?°Þ212#á…q}ÇPlM¢bd™mm@_°ùÊ—òÖ8žWÛòg¦ôA–?ÜÑ6£¥h—–·öÖ§ñÕ¥Ï?ìÐ?ü£¨*%H¿åGÁØ$Ùâëÿáÿ…äßÉ4ûï/Ùÿ×+½þýë?üGùè?ÁÃ-¬è¨m~Sj fdžÐ?:õ]O[noËÏƱýG™²½EÙj²IèS„Ñ„Îx.×ÿ5û3”ME]pþ¸e„_L¦·ð_Cª‡þ° YtZH…% ƒà(iÑ‹°48ô»°,›Ú.SL»zV²ÚþÐffaAN*ÏÝtæe‡8:ˆÇ^…µ®L¬¶g8X ždiÿø°V–hž„BœÒ$‹Fš¯›,‡³Ávo•%6]g8µgY8É`_ûÇCë /†|ç‹3va1çüqgy鯣WwîÀÄÉÔ -Î -C@QfJ8„½vy+HôëзˆÖ,Ú®ÿóGŒP™ª‡( Ê**ÃeM4ÚÑp´ñ Ú…1ÝžqÔ .BMðæu;YÞ@^­rL߬¬L?Zð”L¢h=3Èo^‘èz0K}š¯ÎpzR•ÛîÜàŸ:d½kõÖ@Æ,(r–:² ’åóÚä­‚DqƒÁem‡‚j9·]¼Þ»<É*,ÆNÕÞ-Âw 9vaµÈ‰¹ËäS®ÂJ†“°¶éÅJG´ÀCœÂ¼J‘•Фèe:{œtÐLãkAÔ9éLëö-Ñý'{hJóÕNK’¸ŽùêDOCóRñ<:9¨ûj×`É:ý]:šôh“ŽM-w(¿’½3²ÏëÑo(bmÙ ¾aU™«t‹°2ÒÑKÇ"KgëìÒK(a–ü_Ê®EàUöÆÀ‹ù˜çk F>{ênǵž^h¹¸ÆùùsE'åHÙ7OÙeŽl%otôuYåb3(còÖ­<„9ÞšsghÃØàæ;Š"§‰k§«1bwÏ‹çÕ­ýÔwá:Ý]ú9BtˆâºivÒ1! -c¯æÖ°zÄHa¾Úsˆª‹§«ÑQ‡'8®œW§Ñ6’)£»©»u§%"2Ì-C7¯HzE!+…õÎð*É@yã‚Á¥eß~§µG6ÞWÏDjvøµó2…DaÇâ¥Siº8‹…ET˜0ݾÜYQ»í, áZ>ñåC4×ÒÏ/& ÄýÁ+P(Ë}#Ó3OøIƘ}½1Ÿæ±†ym]î;ûâ¾ÙsYË}q‡I66ÊŠë}=§V5'í䪜‡Åôê[5ÿ½—Øf÷AÂËYz‰¿¢—±–YVŠãÆë}#îk2édH‡Â™Ö1¯f¹«lúN‚• › |}\ÏÉÐÍãfFS _.F½3³¬89aê¥I¯cˆð&—n"FF›¥;3 sxsÃ]îì¸éy3’…îÞO>µÌ0-7†qqcDŒ'Y5êø˜ÛÒ5ysú²?>˜©HÇÞ'MºìÖ³14çžEE«Í™íCc†´E–Ûò]Kô8¾‹´î5tà3’=_L&ïÑI˜C{_ùþuGã/4îÌ3B _YÞývrºdsmÒ§é½Át²¯o¹±Ç¹Š»ÉQ]ˆô2-wæøÌÉ{žÐvNWs€fµë­'\íŽnÖ¨ßæÒQ9'é4p³aMoíÖwƒ×ð æZ¤Fȵˆx­7žj¹1"”éÕX®Vš*ñ4…ˆB„¹º³ŸñØcˆO·ÎÔSäÖÁÛ Q$¯ °¡Œæj®š¸*® úÙç‹£î; -n;®žÿÒf=Ÿê‡­wàã³Dü|Ò æAYÓÆsk¼¦ˆ´J¬À$ -·Hà÷cÛ½TFºDV±ª¼œU¾°ÝEVõ”š.¸9èóxf@#˜"빆rg9Àq’=¶ Etñ¦PáIV¡©â[{f@$^PŽ™;"á ª<ÌX8PEEoYý⇜Š“ÏŒØê m™@†Y ¼õ4ÛÛ°Õ3-JdÒ3+/ŽˆÐC¶˜–¯¦¾ýYw<žZ\»Dôn¥àåšg} t“¥†Ñ&’½;ɺº!`fË®‰Àþ.‹ÆË.òlX×DƒïÄÊ‚ŒÉ_»,š“›È+Y@¬0Å&ÏG``øáøc¦«­²‹D÷N²à°o2@½Î²—Y¾²h™í"ÏÖ.R{e!04ËÝ4ÈX²h6í"/ŒÒ -˜yC´w~ÙfÆ. -f“ü€9¦O’¹Iæœ -j&Úu¥‰«»Ä³iW#‰¯Úå‡yÆ)©í²€ÍäFQ‡bè•2›‘J<É@ú…õüz:ùS?D©ŒíÇÙÝ…)0×ØÏ^»È¼JÎñÆñã¼A‘%HT±°„D0â¼Ýd©hûqá®*§Y,Ø€‚ù°¹‚zvögFk´ê5¨Ù†Õ -£j‡,nYÛ¿g{ "¦gæj£`H=!HmÄ…¼ÿ8ï1sVÖ©‰Œ§ÅxôIA-îpaÌ‚_ WM¬0ã.ÆË3Çh—¥BÔ> öi”¥ÀLmÁŒUdÉgÓ&DMÈpaBvÑ7å‹­ÝL G&lÃC’ŠP›0\Ä2»ãìÉÀ1›YÊ8ŽKÇÄR/¨ý.ì—ŽÞd¸)ðœ³(,º¾o£›5_Â…ÉÑ=A>cEÛ)¨o0vQ*C˜pautx£éÕqÕ¼ÁçaóS¯h5:Â…± ¢ fçBE|%‹£N³jHØd„ˆ&ûÊ@›W—å-|ŽùäÕòj(ø ¥\$uéqFÑlUxMùÕ¨ÅâÕRPy‹ =šàŽLfC@,¹{xJ;3‚?9ì{dÉ¥]˜DeZrõy¤«îOÙ[V$9`‘ÏcQ"*Iw²#©‡Å-$<ň(D]’BƒgQÐS|éÏÃ%]ñSS¤æ,JnîŽÀçm@’r©[‡ 9¸Úž:„§€/ž®Q{”3Ó™ImörX6¸Ü*QçótôŤ֘þ8é#uð£,ŸÆ‘IaƒÄ¢Kf €÷G ñ4b©kD7.0v_æçË’Ãåaϼ‘Ù¶ -GVßS²*,ûrbuòö¶èÎt”Nþ…m)ªç¯,ÅLW5€ÖÖ: ’–ʽ3¨DäÎÙx:i)_®Æìc&Ø|5 ?+”áM¿žÎìÙ#ê— =ËÕAëöj&A~ü:KÇ¢©Êlv2‹tÛ€]ðlÌá¬Àîج0â¼e®o¶22Û¢1 ³/àÖ\ͽ°Y«D.¸ú4¾•û{mÝ:2(;G;æ‚×óÕoM$çž5_œxuqë»kx´ÙlÂhÐ¥Þ^Ý{ßLì*àž…çó®™¿{t1²wµ­Ó†q*(ÆHì>ý¬ËÕ\hÕ; -Ð&}?Ëå@1#„™ìåÈûy±&¨Á”ŸnZL‡>]ËXrI&ìæI|¼=ß(á–Ùš¡<Úؘr\_ânï‘^†DÜ!üÂÇr -×8ÎLBBæë =Ù¾ÖóºnƒÅâþˆ4´SZ]¶ÛñH!ŽÓ‘?âoȳÑ,<ä GT÷þlqS D-/¡±HR ëD‚BÀ¬Xmw1MJ‹ùô…4É/q?F©”ÝÀ~C.Kn h–¼;÷©Qñ"öy -¾âìèz97ÑžùrBšRný±"(Vb¡˜ð7E¯=ï k{¹w t13|²Œ ÿqþô²…Dx±Y$±lœ3ëõ‘ý1ç›i P"ãiè·_-þ³—ØŽs²j´6hŠúoyl9(C]AÞ¨é,b}Äl¥ÓÍâ·Q’·¦Ð†u~¶ª&‚ÁxE®Õtq9¥{‹ˆq>.p«[ÿ½WÏ)(Ìa Àj †ô؛Τ:fÙ¸lT!3ªž{Ó‘ðÈ„­ji 3ô±7¯^S]ƒ €x† Ù]àHK"ü(6Ã(S‡cžþåãÇÉe¶¦H‡æM§@¥6C›ïýÖȶGBz‰Î†Ñ:NÀvÀ‰î½ÍLøm¯ -×”‰<Èÿi‡á~ënF*$EÝ_?^òß-däÑ?÷8ƒ1)"C½V;Q· fôÏýÄAO2dÐÛ2ŽZFWÃsç®ë²l³Ì®lƒ¾‰AßÃorçÜ ªy#¿Þ6<5l„Ãc÷.’±¿ GµA\€• ˆºÉzë“%i(pô.VÓ1AÁv8$î]©HפFbõO¦€ryîL Ê OC¦§H˜ÂR÷NЀ y,¿LÇa!Ž{/(éA0™P±¦B”J>¦ëæ·üœæCWâ°XÔLTç@Ü»/‘Òg|òÅ@]ध üëÁëëÿØÿ"ìâ«f iÑƆ;è¥sUH»½’ÀMçË=V*5Œ‡ Ó ã§Ñ¸)!%´-aÑÊ°h~Ó€ŒJ‹¹[ó›Ù] ™>†i4Æe‘rXÍAÕü˜Þ¿Ai\y˜Á*Á|ÑneÁd„ù¸¼¢Äœ}æâϦYv ‘³i´žì%³¨Qq‚aÜ¢CDT"±ŠØ’xB·ƒCÈ–Ü”tÇLBï0äI¨°MâÙKE)ªÚ”»E24"Êc  XS29˜œwDZÂgÕ³ÉÔò¦‡tV9gÓ”¡u J!Õ 9=Éú3ÉâœÍþK¥6?Pjoa΀ŽãLˆÊ9düÖøæâeùxŸÔ/«ßѯ ~‡b~Ã' - ¥l6¶è>öÆ1DõRÚ˜" Ý$ó±W'çµ›Áº¹èÒ'ú-Ž¾hTécƒ} L±Ÿ¾O¦SÞÌQÄPAVFÿçc3 áô­dëMG‚ºl¼ N֗ʬ$ƒÌC$•ð;,—WÖÙú©cåêmýÇ ¬´ˆÉ³0@°‚—[·|‘Ô&€ÝŸ™=IœÖKd„¾5­ì­;¹n²õ¶G8¹ªûÈÌìL’úÚ ]ó‚g^³ÍdužÃ¬Ÿ±O&„åêäÏI•9Ê·ÉF0¥¡\1(¸æ*²¼×Ü6§éUy‰Ë‘¬“ÞÌ.¯àÊZ㇔µøuáÆy¹ú£+“Ô/’_`´“›~†‘íÕ“aT=ú0wœl¤ÒŽô·\—‘F?,þ$¤óû‹ûjïy½ù[ésç‹i›öǹFtºf­Çì[)8!⪡¸<:–à*.>lÛt#l`É‚†«,²<óë—ûVXboR]˜@mÆq²xz¥rœ,¯|Z6Ä—5…j%%ˆéµdfzn†q$™Q¤Kb Þ1Ö×,ÅÎàD^âvtO®º=Rh˜‡d.uÊõà×™–_Ÿ¸t×1õ>MÈ¢»à¸ñ³Œ¢Í&&9&Ù4ímÜžÙf¤â¹Tx^¨¸2˜¬cr7oˆÄeý˘4ã^áÏtñea`°÷ŠtÚΨ7Úäl.ñtÚù7áU² Øï–š L†½Ù›Xc`>Úí™3XÁb↾)Á‰?º›ñb«~‰óÌJ1ay²€ÅáI2jnŽ¿ý‹Íu*Š.ëDHPÚßJsd\…ùŽ(ˆ/7E/Û,…¨ðÙp‚ÏF꺞T²óõ - §‰¹ê½5 -˜4¤àkº2vZ -âö\Ïáú¹eµLb²®y"„úi‹ -Zªn…~'…©¶XOXù Ð¿~¬'>YèWÌ:y¼ÞäÇX1þŠ©öÖ‡EŽ ú -Ö~[Z¾ÌÒV'­\]9^ýÉ¿õ6ûæ­)V¼øì”ÏÜdX5mÕ@ôÕ "hý 4ªOp[õHžS)*Ï w‚—;­MsÊø¨•>Øç®÷¨–f=!"Õ÷èW‡ûV¬ÆV%‹õœ pmˆQ ¬)Ý,‹`Ï8óQÞMP¹  …¥góDç“Ïå‹XQTr‡Œ­ßZï´ÈS˜ÜØ·/TÀçëüf™%̾ø8Ƈº=j4ž Ž}*þ I%Ì(µö<¨ çm'-¦õUÚÀÙMž[‡pBM–.²J˜òG#‡#ãöÖžtGOX÷Þx¨(*΄j7n|TÄo‘ýlcIcýqØ"Eúsapο±˜6æ?cjjú×lL0–{KzN -—ɳb®à&š ¤‰í -¸-AòÚ/ss‹¦ïèù"ÑÊÝp¸,<Áñ’*ÂU°©ò¨lZ uY¼VâŽ!ìퟌþ_°‹n\´e÷  éÏ@õƒ¿ùÂPñŒG%b°<j€·‚ø‘¸0‚­Y/È(J×ZšÉX(ÔLvåcdÈᵄj·È)”dÿÔcíÝã…PÓ‰’‚ÅÈzÚS>Þ="*x- ð°û£Mð˜[dX$~óÞÒ­*…á;¦Ú yx„Üð(-.EÄb„R$¨hë¸TÎlAá Vbð6ÊòÅGIbtÄ=þÌó„Š[EœŠ³ÜZ•îæÕ -šøKV‹ðìô;Äçt_¨‚ ’sŠ.ú¦mð–Ñ %)<ŠH““æì„Nû×ÒØžE *B¬¡¶p°>ð'ô ÷©óU}QŽö¸eÀNuÌŸsùrÌXÃYÜOˆdn_ðÈ‚‚'¡iåøIìàCMV¬ð ¾xû0fªÍ›÷d™9îY&¤Èdm_L(«Nxæ[& ‚,\ÎçáH~ÑŽÅï?.ô)”òòQë Yê˜Làû[.luZàÃnž(Îà™‰ú˜î;paÝ7“†´PøgÒ=ï3 ÝÆA‡Øféq:4ñ;Â`;qÃÝ‹q-ĸæçŒDð0%Ö>^Ò*³MÂÄ€—m’mEù. ¦“0¥¯2`‚pKÅ zIZ¦!|‘å“yZŠBT˜¦ºEës”&¡ÔÎÂ…vv@°XóãÕ²¶+ëù„¥JêYð0•žãƒéJ³Š`ª¾ø$@Iî`{ç2õóÂë@eã6ëydË/ ЄĞ¿ GסHJ,f|-¸s:Á%Gš~X(S-8pû:è¼N„ƒzÀ¶Þ` ZˆXâ9\×PLÐìÈ•G‡/½­×&u Y8YB%Ëñú5 Z•#ID[ˆˆÀވ¦;³<ýÇäp Ôܨº¦%R`åÕbî©Ð>|¸ GÝ[ ðô -w½h ¿Q$47®qñˆPÅ{ô€h4¾8gž§9Ø\¾+¸Á­JR½ )Fkï²hå#D+{z²E73—8@Î{•¤d1–,a+Ñᥤòæ4O.Y£837êðzÝ«%¥2·¿!5[ežº|z®•”¡ƒ;&xÎöNÝÄÑv«–”Æb—Í­³¡µÂ|¹þ\/)Ê;JH+«ó¬XRï@ýäYÆ,w$êì)=VKª²rÕF¦ÐÙjuŒS÷ÇjIõ4rÁ·`ýž–æ”tw«•T˜ÐQù’Œ¯ ª@â܇ZIÕ[«z˜´Bîc½¤FúRk±Ñê…Ãâ™^^J¹ˆ`-}#‹‰mð\1Y¦œBˆ[Mæ#æ”ÿÈi:.JÏ©] urpëÖ…ÒÔ/:Õ{IDU§”¿)XMh÷…{I^1 ÐVNÝÊܶ)8pï_{mc˜:Xb¬eÖ}ÎÜ´!½¦å¡ÁÀû^¾ FîÌ彦UŒéŒ'‡ÇƒäC±³òk.Ô;ž†ÍsöFÈq ‡k*Õö̽Êa™Äغ{µæ_e¡§üܽÔàꪒŒÛwß<…ð/wÎ:ˆ -=©í -+ÐHú“x¿Ìâ3@Ú¾Ê*’Xý­gÚ;‘G^®Mš¾3ÕÞw&‘î[yqäGD¢eclF#¿Wõjå –ªiF1i,Î,‡ Fdœ¹¸³Òö\ôÌÙNŸ»%ŠtF½•e%ÿ$ kÚ‘ ¦<–§^eìóÅ^ásé9رÓsRçY‰H›w/žà[¡*¯ é¤:÷BXN ®6{‹AŒtŠçÃÆÜ”\›UÕD¿·Rn®(3¥¡4ãPk'Y¯¾·ï›H• hÒ•ü–0g†=*bÖ?Ïö€o\n›UÓЕR?a¿8) dc¡É<'f`”¤«Þ<ÙŸúÌh(ÜÇg,»H -Ìü:Q:òôö`úâç@½ßZÖ¨’Œ#Ñ"2â¨)UOd› æ¾õ*M–§r·%CB!­/XŒ,¥|iù"—èMÞÜumª§Ëç30t›äÞåvù î´yÎËC¼™Z©Ï¬˜Sœ¬6ŠPépt§§Ñœ`{if(wî¢þ¸ÊX¹«êVœe±þ¬[ù÷ˆnø$›F­¹ §]9¨ie/M -ƒX/-¬äd¼2~¿¢Æeð6=ñtŽKæ7P–¥]q%>w¿~¢uÕkNv<¢…²Üs´-k"ªO´f&€À€òÃªæ™ -´€3f&¾Xò±3Eè#‘ņyýß-š£³Œ¥ÜÉé:±Ê< .Cå”Î ˆ]XÅœ¦²<÷Þy‘©«™,d¨3Lž_°ƒ9¢Ýc¢¡lÓyñž>@\½9ãaz’F?!?¦2²Uƒ9<mÉÏ4ëëwé¡ô)æ)1<žüÐ+Úœ™üæ9KÊLÐîÛ¨ÅÖõø LÅH§Ì 8ÈlJL"€¨‡bæ‘áN#쾩¨M`ƒ°([ ·2 € ·i8ÐKHš“N=ŒåEº>£x$¤Þ>‹v “8Z·(%Ì[OAÀªlâʯfMî[ô…Zæ*^lÙ‹ÏâîÒ?ÔY@"h]Ô—òÚŠ€ÍwE¨9ý‰«¶¤ÜÑê2Wæ××Ê,î·´J†}¹'<u¹2Nªl`x„Å^Uk¤~3ý¨š¼,û’ÊP®Ð†9·µ6 t´3r¡"Â@Ú«éJ¡Ãªý¹Ý‘V/^("­b-7‡˜Ø "ýåì0XbùÈ0J©ôÃ`W­££íX¸ß$¸ž•³³«åˆË8–ô¾z|Ò™eFb±ƒ£ƒ~e—N5CžÓroãpP˜† àÊIZ怾yœ0šûÎâcÈYCe4¦É¿¯{½î¡‹¤fîE'‰VkˆtêêÎùÎ;K1RIqP?(óê[#/oäsfi5Zj‰¬dø*úBýAS@Ú•à1±Æ³·±¤ïBW#šˆ,ÿxƒíÎÀëžW<®§‚ùN N…oQÜ¥Â3:U–>K«D–ptG1'¢dD.›õÏ+駱CT¥¨{Þ2"cPSyóÛˆê½6ÖÎJ§² a.+tÏ'(¢æ,á³ÔA)/-í³€g˜÷³Ôhbd¯Q-“q*õÀ­¯(µâT\ô–¥ËN4H”ë²\\¥§•¦ñ.à(²°×b[³­*5¬™=ò6à˜œ"Ë2ÁfK(Þs":(K•n£dmFfàNÇûॣ# »m7²ºök¥Ó8Õ4ê~!ð¼q:ºC¸°£JªÛÙœ¼/¼ë¸vs%]Ŭ¸2§µ÷ç5…‘˜ '—³ -07èÖ¾€ÑWÕâráã0c]ÃúEíåªuÖAcU|á{ÐB¶På9FY=UÙœ,¤dÓhs Ï£”ðxÃd1ch,$÷¾*.6GÒìÏ*"Ç*”/B”(ŽÑ4ÊÒ¬fÍwèC}÷ÒEF%£NF\[svÆ}˜®–ŸÌŽ,ij(qü6FW3(­fÀ8G?eb,¼ ”U% OÝFh*,¼È‡ò4¶`h»š¥eøkó ?Š/UÍÄ¥Ùe“‡¥ù< D°I9i;‰5IŽ€Ð¥¤¿ýüÐåÂÒ˜c(3ý‹Bh>muS²É"†_‹––ý¡-Zÿú63óÁ‡€Â"=*;6Ü!3®[—éÃ0LƒÞÖ3á©í<ü zu:¯ããÿ—ß1]àáÍ13)ÌS ìNCF¸ï^JÜxzjÐpLÀí4,óP¥n‰fit7nå͵&×z2O‘ 6PsÔß½b"Œ¦Ö[ÔFàV†x)’ŽuÕlh-ñ¥}w ›ÇPüÓ8ˆö;S–ÿúQ”Ýe´ÅTˆÔ`GÑ= );aÉ£%&ÊŒ6¶G&Zíìø]H’Tã>£õsëÇhÿB†Æh3'l’ŽîÃï¢=úñkk^Iã ìó‚,7Ù3äÛ( ú×ÖF4…o¬haåµ»ñ<;¾¿¶'Ê7l~[Úç­+pºhL§½¦‚þÚ[dÒ P "¹ÙY~füΑóú§ô|)‘RñC‹ïíµÚÖ¯£ ÝБbd©2£k!âÙ•îÍëÆ|SôÂÀ‰‰Më´Ceú=¨Ýå9=L¹ïCXx† Ç•bªŠ\õê"MaºóM§n+>@V¦¬2›^ˆ"{rðöç¥( +q´º)Ê…ä\òóÂŒóèJV>ɺs E­›pžûr"Éò9#Œ×Ê Æ~‚Çßú_b$Ðà4Qaá¹×ÂúæozvëÁ®“U˜%—D–…•çØ>«°»žýÑ%AUå|Ù«ôÜ'‚m:aw½ºuŠD)pÿºy“÷^‘¨è -ó~Ì{·H„;LwVC†x)ì– ²î……a÷준¡°°ô,œ„=áUêCXøó„}@…$vŸ’å›úÁ—=»åBJ,7IY—¢Âs dU•åîúuç$Aˆ^õŠ~'éÆKIÐļ­Ÿ|)ëÖ††˜‡0ÿga÷hX¶žÊjª˜rƒ„:–&dƒêåCã¿X”%·ƒ0[”5¥ÕòzžYûƒÂìSBˆ$:Œ)ÀŽU}̲@}o|ߊëA”Ì:ˆ*ýJÔdÐÜ'DF&®A˜ 6¶D픯TÓeAYÉÖ‹åàÇ™©áN£. -dƒ,¿ÔªåCÆéMÞ)Ô%’¨™ÀV 1ÈÛäß+Á%ñkf c¼5Ýæ©\ãV$ª·”¾`‡"çãê ‹W>¤aY ²˜Hé>e¹ÝV@e=‹i©l­•Éë7Ù‘ÈwŽ|™¾[U¸bÈ€û¼¼V|zùãþZ:éÂsíµd:á%[Êw7 ¬O‰·B‘™^›œ,í­¨?€²sù"‚˜¹+¦…tYy‘1Û¾I4,™5Øà„[HT5é‹DvÌR®GÂf)éÇ*'2èyíœM•‰,±ÐRy®)BámI ‰di¨±{0eôc¦Œ^R÷'‚ë>¤ãù/KÓ_AÑ?FFZD\nã†42@ºuPÁE%¯n øh)_Ú/ËkvÕx‘+Ó•¯¹irÈ: ÒÁdôw´äYõiF{<)Ð})í-¥kÚÇ¥èPîãR£c„‹ÓÂÉ:þ£õs ªöTíñf‡¤­¥÷y0ú±ÏƒÑË1£¶`–+ai°j|û¯­ éùˆU-Íý^[»2•OÈÑe&c‰–Ž{™þÞiÁ­”²„ä^_=ÖAô>3(ɈFôÑ8^;›0Õº/’G‚å¿ã„*ð Ž‚+ó­C•ø·Yª-¾õ¶ÿq<"¦åßÄ4"‹ EºöØßÚFÙw6[[ÙN‹ævŒ;m›ÁÖ èn}ocôI ¡…ƒw)§àÚÑkàn/ bÝÉèïö.´9¤äÕÇZ¤‚*lÜ{Ûö–Šz¿Ç<¦’¾Þñ,Û_Ã>ÑbyÙIöó»¼ÊL8ïMȳ*¨.(o13å†y–T‹ë.ä!K¹Á¢Q3'ä¹¼5LA™/ÿ°ä”è–7Æ}þNÔjðuÿ àFdУþâVÁìÎÄz‡„À>2Ò©©hZc¢^Cû2:|k³<莅½EU³ìx×ýÓÄVüøÖBJ 5uŸôásÛï\Š³}‚f {G ì”ëý$ÆOÞ0kŽãÀ ýÌ;Ì™ÆÀáŠâ }oqÌ;éôƒ_?8jHÆóš±tuÒœÖiˆ²Bû¦øݼ¾Fà6¬t䨭%2X¶óóœT‘ÇôݺßÁà‰<…ø8˸`}‡­¬57Àýâ<~",±Wu©0RˆŠ_T•Q¾qÞå%z cbØú$`ÁxN$›H»nÜ­êÑCò´ÂÒåi‰ÞzJõÞCî´Âjt^Ý0¦&O@•Í0y¿ž°§U-6žûâÕÞ캅@³­,çlö:o*Í~ àáV‰,±ÔÉsiöìi‰ŠQ*Æ‘ó3ý0˜/’*q+€á †ç¡ü’¨fB”)ÜGâæÌ\çNG,\EåØ”Œ<ôͧ^ÇDèÜ/Kæ¹ý½Ó1‘ÛwE”ŸíÕM ŸZ…Í{µܾu7FB0C‹á÷Cvh¦‘üÔÙ¨h#ž`ÍRßa‚ºÃ9{q/¥YOSp„7‹,ãç‚ÞÀš)þÞ_阚 ²_Ÿ,ô™çR×KÀ˜` ›W˜P'”ɽ¿Ò1­6‡EOÀñA„\ä :¸‡çTÖ Ö”(ý W¥£¢ŒT©y÷˃޹a†+|gi.Át‹« ™*'f¢ÂNÜ]ûIA6ã¯Á¼ºÌTk~î(©žF#ÍÎè(M³uŸC)e¿–ÚP`j¨ë‹BZ¨®ç4™ÌÐ7:áó„„¼c#S·¦¯d0ÄîèU_¿Z@íûhév›4•÷¸§[‹d§R1Ôm^e¹/¸ˆËÂê©kIOeoÊœºg”C&L³'ªÛ3MÊÒ½û6hqX5–C—&”á#ʼ8–¿>² ®o_ OA¿—2¯–¤lÛ‰ô/huƒƒ¿ ,õµ±ÝDUˆ/ï?<âd'Qx6ØùÕ֡¸»ƒ»J¿¼ÿ`øïLäAÙR‚Ð…dŸ;–ƒg¾ 8êb³Ä›žžÒúý¤£bŽ!KÔÞgz)Ÿ“m:æéËoË•µuÛ5Ì@ zC·Ò…"¡w­AåÈô®®û"{,hš8ÂrI6ºyG@CÀÇMÉ\ -¬È¤¡<(€«¥vÀé´Ü5ñ ü™;D¶¬’dmî9;`²‹‚§Òîr¦kÏÏýö²d‘Û¼Er8EcË#À& ¶Þ;¢±Ñ`¯ïËô6% Ü"f¿ã3|C‘DO„¬…ʶ{èÆ]*zÃBÖù “³ü¾>pe‘Å—í¥“žvâ ½SàÄ -D#fËÚI[ΤH¨–”%rË7ÌK8¿+õo) K~•3'-Œ‡ÐL$Å‘“v¢2½¤@›AIÏÄ`Î,K yODÆCÈPx’•øÝrzž”Ð<µ£n¯nã ~ÀÒ)ª~ÈÌŸeVªŸ¶ñÛÚ6Ð…e‚ˆ¬fe.†t¢–„k†ôà†dGÑ‹üŽÔ\ô,¼‹+8‰b>µRV{¦™h`»¶¼ã…õUüiª*ÓÄ^•3ΙþŽh‘È/Ò°·4XIÙ™ó‰R´ó˜1;õ«Ÿ#þáÏ@ÙϦ°ª™­‡UµÝúÓpä€Ï±i3‡µÒw<ñ6-Xh®%±[-_¤£'æY™8„nC“JœŸÕ#ò‘ ê€mV3ødwVrÓý‚-ÒCµV._ä5xe)€{ÒrÈVC³+Ï« ¡n†¨bc´-^P¾éxX ‘ór -2ß)Á˜’ˆà6ÖPb)@ §Û®wí~aó»Ïà¥C±¨³,`¾g -¾ûà(èbD¹§›Þ ì9øtlÓ´ídÇžK«ßæø@WtŒE’É8èÜ}“(P¡ö†Ä©]è—[æ®Ùc3ÏÎóEoÄm$+³…&Ý/×Â`hrz%àTé6`kƒ‰Y*³,ˆjùô*HåjCÚž¦z⥦-8ƒ 37fO³æ&f­ô«¦Ÿ`íƒV¶+Žj] Žp´ï™¸V.Õ•†CYì3ÁI·m,æZj|f¨pÖ*ËãÂX¬2NN3gÞv`ý´‘í;ßöe—ŠÏ"›î„dåµ\ËKã9êÒ?\›+fBæü¶s¬üÔÑÂ/M®øèõÚ|¾ý\¨÷6õ5ß Ù‘ *BiÅ×tµžîYh~­ð¦—åÎæk1`}®}v“Âåë>$g=|" ÚT?)l®œ…ø•Ót…zÏÒ?8©Fƒßm;d8o_3:zP Y1“Ni -ÛõŽxÀ§§÷UÈàM aŒ=eùœ–£Kd]´k7’lÞÇÓµt”f¯‡úĺy[ÚLtI¢ŠÔQãûd¹ÈÂ5Økëζþ¬šhH.áË6HgbtX/ëlJô§Wnà®×2¿ú9™%ü^@µËJ¶§ò©*5Ѻ £âËè÷EÕЕ€›ö¼À™=Ý•OUÛ cäŒÂƒêk( ãÁR_Ý6蔺áómG¥¶ÙgÃ"?•Ä´š -¯¦ÏÏ_F'^E}¶å¾áR°ññl‡n.º&$Sñª~¢—çñn‚|$q~šý‡ža‹DxÅÓ½ù}Ž˜–BäUýå_ÅUY9%ŸÎìVïϵ©žj—Ajh¬²žk«q!i)iî…òEò5D5-g_"Òî¦èý‹Ð §/Ñä5NqDOþlù­ˆ°JAF -fúú¸x.ÔÔÖ¢óŠ!,Æõÿ쀜ªrl̓ºŒ9þ}!•TÖ -‡º7gÝ; ëb–²D:„ûÓXC‰ó);Sœ»"ÑqNN¿wE%æ…,[¡=0ÂÔçžÙ $ñU 8MMb€ˆ_xª™ÿ™(«O5²óÀìûí±ƒv×R”º—Á´ÝÇ::K¦TÀ¬OÜÁôOþ‹Lç9]“etS–0œÄçD)˜`ìš­ZDƒjâl¿«÷ÕéácÙw˲^ÕByœæIZ‹>XºïHÃÍM‰:÷ñF’¦¢$}M§ê5õX…¢ ³°ff^!<ìSú׈Ɏ`/%žE%U²NmàйŒ5R¼ý8+!U(ÊJÒıðED¼“ŠC•Ûš³@üó8}gè -/Й1)tžREq*0 ?XÏUbÚå7•Ì ‰óÜ/3j/Ìüç ®D™)é³(–;’Ûî±$6t]rC†¬ü8¢Oän½É‰:p|–H)^ ;y.Qžƒ¸2K¿gņ™®+¬†¾Èb•ì\¯J€oÌ‹ëcû÷Õ«ù…¶»Ó•].˺º¶\ b€>yÕoóU(Æ_ËãzºÃòä²{@ôƒü«ºæ3]Û'_H¦«°d}-È,Ë“ü>u'ó[UÝZ³0œpqT°wæ ªÔïYç %ÿ E–<&üÂÁÕÊKqð'ÿgãRDžøG×ëcÛS9¶pK¨˜_'ú©G”Q=gè§1Ù¢^Ÿ ò‘zËV¨Àð^ßs£9ß±ëùÓmJB,Oë,n»È å﨓m2´îSÐ2‡w6É £ü±•«ßNom“æQ)G‰ë¾!ûs -nmH§Ä*;ÆúERî­¢,±u#²ÿìRæ^eòØ‘¦¥²o¨Ï€SÄ)mò X˜acæ6ÁTCœ½Tñä-Hø0—1)çO¶Ï“WÚ鶅õ­ôPœ¾àŒ\ok‘ë^çèEôò÷‰“,osµ :_.2pºeóU–‰ñ»KÈùHS¹[¨8}K#ê>ß–ûr¶`BokÈ_q÷!7z“7€»–%f¤åå¥-àa&,•‡¢3ªLµwdÖT™”X Õ‹–-мô›¯bê¿*%ͼØàÛšêÏÿٗăL=wÑÊ!\¹,â¨Ücª-ážLÖá öÇÂôHTÍö¾ŽïjY[,©ö¶ÙDH.ãµÙÿ ˆo.zë]ȺV“Ýyµ ¼™ü ÔS -áOxAã+"îw"¸Ïb/\05Ú’¹ªd@áÈÏñT¨Í*Mäa20ðþÒ*²¶ê#¨¦hpœaÞí LX©L¦©Ñ¦ŽD:aËÓ?†µ‰,PåÔ¨•¶&wsÂWÄàj¬’fAã…~ÝiõÞ×j¬r8eÖn³•é“ºù×­˜4_‰òR³Mö€Å¡1åŒaÉ–æäžá—Á -ÛÆŠ"kyápí¦Š¦@8ÌK[š‰žÕ $u«Í:%™cã€ã÷ -Ö.¶Mpµ{âŽN_vÕJ‡†¸®ãžúsââ΢y(é4:EM;çm-Y8Ú!Éè‘»xÕÄBÃQ4ñG &Ï¡µÜêz^‚É›&š©júŠ›ñÈ/ŒjÍ¢jñG·(óWÜÊ$N›¹Õ4íeϘað€²¼Qå΂¨©>÷DWàI )ÛmŒ ¨ÏDsr› €Ù êCÔ¦¶8_<_®á¹K ,—‹kqiÇ­‚ý³ ÔÃl,Xl=3°ç¹ÎmbŠ3ÊߊR©šò¡¬8…„n\í5ÒvUZ´õåK<²Ï2_pŒŠ"%aY´Àý˜ óÎo_µj,΂ÕÑ-7—}ºóÛÀ¬{g±±Ä©öÃ#rG?5b7ÐÀm4¡°ÎoK_dBÁÚw¤]Ͷ0}!þtÊE¸ÍϢǞD›Î"…R#Ê~ Ïã ð“)‡p²žV$ZÀÆðÏ3ÐÀ5Y›»Û"·„úÒó88!²[ŠÚT€jÿ"ÇD¦ŽTµµZ¨Ð2N¾ûHÉ‚³’GYØ)k¢O4b÷DpU×`q2ÌÐwÀô™Vû8l"²`€(&‹#L×åô4é¯""¢R,Š´©’Âmô°¢œäFX±ázò,ý•_m´iEVtÅ"GY º—çñ‘EÚ>QX½••-âq·™³" $"Ë{‹þ$¶LÉ’·Á!‘Û*—Ï‚Oeè| ^ïë·ˆ(œë9Û’7Jt78›Æ™jW~L¬ä, -Tlrn|Q£FdùQ'ÂB”INÂÐØã UE䃂 -P1Âólq…‚6(`q– ˆ£‹þ7yýFDF­×@Œ„A}¢øõ±_Ý¿*°dô0øÈ‹j½ÞVIÈrÍÞ‹w¨g}F«5Š³³™i>ÒßtG¨bDÓ@Do‘ž°Z”LøaD®9áSgÈá ìw´AV_ͦù+“«ƒ{"Š>€Æ#Ì ö¸#õç츠`%ö„9<Е·BJê§úÞs[ñi‹'TÀç› åÍ—Ïgp,¯]ø»0ÛšÎøw+/¡²”S7, (­ïK[ Äsëç„‚7É-͵8îÏœÀn½9W-‘–Œs;áQͳ…ú°ø±Ûb“FÉÉvˆ[×@ߤ¡•ÆÅHïf–äNM=vc—¾0ÞZbd7.™jÚAð5ߺR‹§%²ˆã(¯.ûÀªâ¶ Ý‘\±ŠŽú&œ »’ÞXôÅ58 ö¤÷RÈUO~Sèç«3¼m ­¢äÆ­}ĘÝù†¯Ô—bÀHÈÞΘùƨ,“ÃÛ«™Ý:`ZQ§eKyÆÚï&þÛRÎq ¶!ïùÍü=sµ¼ÉÀ³w¹ºòjóžë æÇí#¦ëPµGe?w²„JRISô¦I;AÇ3'wíËÅ4dz[_,žó½Ô·SÀK$Ïr5§A]ÞS°íì|qEÃÞ`Šëžöõ©Û]ùü͵¸4)<¿ãy7ÖNä§WûH¨\ Çãr[$½IíbJ@GædŸMá†l(|ß‘œöp¼­TU/ÕÖÒi9[â€{UaTU‡]“® ˜]UD¶í²U‡œp#çiMu0â–YOkªwÚ­jùº¦ºØ¦>…‹šêyÏ=«ªG}[TݳÛD5ÿ¨ªz£¾¬s¤`¢ªú˜|XU½CÏ:UŸ€}Ϫª“9Ûd.NUÕ×UÕ3„յؙÿ—U/êJY‹ªG-ª^¾*ª.묀•Ï5‹@d¾UTî"cœ°n‰gQõðeMõDaKÙFdº°¦zÿª¦zãCú¥Ð B[\œá«¢ê¤Œ·µOÿ¬¤zQQ}­fÀ•ùeUuð -æ fÚ迨ªº>£eûOZ8>M¼ìÏʪëSÆ»JèϪªS”·²Ò¿´ªú©_DÚg|VV]eÙª¿E«þÆ/«ªgªéNØ£ªê{Ãq)ìYUõ!,ß{VU}³²òIÖmQu•ó›"ôñË¢êCØe§¾­©^uÿÊö°¦úöç‡|\R²r¾ö°¤:…ý¹ -ýÊêºI§[a*ªa—Õã—ÕUV¼ëØÂê”uS‚þiAuÈ -ùFØ£‚ê]eÝŒ×ÊêTò¿REu -û³¬% "ñ™QBSQ]+ûçÞSÈJáJ–‹°ßû…XÆBìl(Z°<~S²Ik›BXìWËã\¤(¥6Mª¸(ñž[ ¨ÓXW0…«‡œ’‰î‹6E–€,Säš\ ¨i\ëW%ÞÁ|­ …¸Œé«AX²e¼±Az÷þU½%@¶£:Œö9¿‚ÏÃ˨ޔUZXÊ©gÎ ?Ñ’>)ôŽIÏÌëåÂÌ:RTîq(¨î9nn1@Xœ½Î -õ…¸zÖÓÒÊ¢‚f•5“È£-åÔYè}*Áð h¼—C[+ª³lù¤žß"“2‰ £ºžL=uøt¼ÃÞ£¯2´Ý¬43œkª=+ÎŽÚª¨Ð·”Ì,õîË@?õsDŪڊê~¾*ÏŽº¬Á2V²¤zÎÐgxS$WÒ1lÕ¬§NÿÛvyV›ÝQXZêp3èLµ…îÐÑY‡*,½Õ»ó¦~°Èþf„±1´4N¹ù½Á -ì¥lMQÇ+íñ27ßÐhé]öW?z±¿úÑÇ1‡Fÿ·ßÛÓù·ýUçæ—1s÷Qcã>¦M«ÊŽá­cŒš³|Sã‹úízÀ -aeª´}÷¯­µÐ,(Æ+z€Y¢(E%Ú•)j?Pñ!fM)çl¥ŸGÕh8 “þÐfÔ”ƒ_[ÓqBB#õɸjXàÐú1:=É·Fçbc )Ûu.wüäÈkô×ÖŽ]ƒUãµ6j5ãkc[‰£¹¯ÄÑÞ¦’Ê­q—}âå¨l[3ÑÍ6a<}ón4¶y7šû¼íÑù!gkñ&?—'ý…go¤#÷Ú­ìã -ÜtîÛ˜o-}!"MÛã}ýÚÛú2‡$}Íã6û >¸n3¤¾Ì1{FkA£=^ßøæxµ¶ûœ™“MP•K,ã(©dÐ~œŒ–ÜGTÍ­Õ# *Æ÷FkïÑhWMÚã÷z$û9ZœˆýhkgÆ×LGµ¾= —IS<—(ïûù?PºÞÛÒõË‘u‘ÜMîõNŠõú¶æøñóÇöAµìÆ‘‰â¶_ä"¡w£Íoµí[£µ íqÏñM§™bcÏÈLÏ(Ô -@_ž˜p¢k”Y1žHeiaJÖO\ -TÐö×BG-²ÚÑB¡U,ÉÑÎ…e^~ííLê$i9],¬®9¾£%öö/i›ËßVÖÛÞêç·í˯ãíê›Ï±?×›™Ç|ÛQx›zsüÚ6~(B¯¥A ›Ñ™gY#‚2Íã•pÂ'4¾šÈäÒ½‚ĵ/¸9˜yáá]C3ç½ë£©—ãÑö¿ëƒƒM¸MM-bös°n£hC ûÄÛð£ÎYCøvFKÞ´¾½Ñ曞®¶¢ìöY2:´Ï’Ñß1ßÆÌٸ?« -;Nc’ïÈQöÛ Û7°¾ ûþô‹ãÝÚ¥ƒÅô†~„ML¿ý×þ°“.ŠBˆ\½z˜9nLø{êsÑ -¢F"ËÞ”S6Œ«ÑƱ@—ÌþA&-è& õo°ÝŒ»Éºœ~l½ ZEhë+â˜[öY¸Wèëˆ0· öŠÑF𶆡hùm kc_ÁÚ<°¶ßFÌÛÞäX¾© "ÓýƒNf®}7p‰o›…¶öé8Úûtm+ÊÞéçò¼8˜9„a¿~p„Ë6ÂvøíÛá©s¼½_?컂Ƌ·Ùç_TݦSëk²oq|s¼bÛ}ÎØTr=fìø`<û[&ÁÙq/·ÿF=ðøƒý’•)G¶‘¼YÐ ½Z#…²Û~Álœ>Û¯¼W‰ÿ…m­,E‚£ì=~߬ÑÓèÇ¿ýÇÿê_û¯/µQ³E„í yAùÑE‰á±ºi"Y]¤‡Êvײ‡ã›£uè"Ú®éñÍ°Ú´mÉ@ê]G{ôh|Óö/ Éé½O0Ú˜?žoA”ÚÚU)mP»ÃÌצè>]g,¾6Z³*ÕU•Ù×øb´õe --NkÜr´GwÆ7mgEú7ЧœOT¿2‚ö“ Ì|£-ªÉÿüÏÔºþí?ü­¼þx7ü¿‡{ý;yÑÿGQÑþ×+½þýë?üGùè?AK—ºÄ„qP™CÌqÇ)0+vE(Õ{[~6(tÂTõEWõ¯Ö=%ûªfbSzÐÙ -Gw­{‹«ê/¯ê®W|‹ aÒs²™üÔ :ÎG§Ê0bU¯r½¢Á’7ãÎ.ãU’Ä׬²שêï®°{ Gä(mYmÇÀSã?»ËéS´šWU4J½‚{ˆUiŠ6Û1° -ú¹rnчSŸ~½‚¡ÈÔä´uÙ”þ@Él/ö -#ç2óZ‹Ëg2ä—ƒT²h¸¨* ¨^áv€ß¬l.¯Gükç,L'ÇE -nRC>‘Åu–; Iµ»(uVñÔ‹H -0»Y‹üØTdÏï,^¼ Soæ67.PSdHá1hj G¦azj´»,ÎÖ¢¡¬z0Ò´Ëm¹Oƒ8ñÛÜeqn\ÀÂ`á¼ 6Û„§j`©ƒ£_êN.ŠÉ«ç(gµ¡¿ÎŽ½‹œ¬í ¢(w-j0Ö‹jv I»SƾâßNb m!"7oø2瞯e£‘È“˜N§QnÉÔÉ®ZÜ딩?£€õä§À Ï!MŽôv[êuÏLžX„TÛ ã"µ €zS¤{ßG ø&ˆj™ÑÞÐg$ý¨Œ•ç²¬£l¦NÕ e"é (ðîLMòÆ"meJ/ƒð¾Ð&RbŒáËœéÍ¢`op+ -b›«ÚDʬQÔƒ©ÐL¸© ÎÂ4 ¡N¤ÂÄ03@YOÂ&„ŒîÍÒà"¢?Hâ1æÝËQÒn=ÔSóUÙÈ^úƒH‚îͯoý躘‹°FuÂLHTI#“X7aºZº.ã~5š$Â,¤LL ÊJ‡,Nó]äÅ<@:o†¬bq¬>w¶¯œ®;r×£_̓ÎT<3¼žÊénÙ…qjv]:ýBÌŽÃ!ÌYƒ"kò‘ßu6u.~¡ fϯ«Çg†7;²²OЮJà.ò¬ fO¶³Ã“>å¡¥vݸºNÐ~¡Àe8¬!+%ó8A)똪¸mý»ÈËPû8bÑdƒ’­†Â6YM÷‡½{úëÌvdGZQ:]p`ÓÝu+ìWú¨59^Á’7¢0‰<÷ñÚ½óÜ -û…þ–ÔPã—¢²ü!‹ºVÓI{¡¾eyýrö=‹ Y‰@Ó ~S½²]¨o¹Þ5íp–õE,¾ç@ÄIT•EÑ“-¸üfåˆ: ¦¸‰íQ/ˆFre‚BO :‡Ö7„ýžxÎ^ÃÛ©z½Æ–An‡ôA¹ ³(‚6WSIS«¤]àþrC°þKÔ‰¬¸·!jª7µ$Ú7wjwÀõ,*>*TòØÌ›"o¶¡½À‘ˆ0¸Ezâr›…UŽW:À2MUᦶD»Â]:æÍöhàw¥¬£xLUõµ©)Ñ®€7Ž~’ÀŸe%íØzªzV5ŵ+Hg!1x„ìò:Œø§IÑaM‘Oí -¬È‚àÞ̤ôÖ,mÂ^izò5µHÚ†6p-ôÈÊrFZÒ¾ä‘êýø´íYOØRY2=.*°Oh·ÊÐÍy¤Ð³v7Q HRݵıÒ†Óh¼†+^ËÄbH]a‘öÊM8 `¸Æk¸‚Ã%¾6¶Ž?sâaÆí²†§GuÿzEç¨ø®ç¦ä…ЊM¹KÎÕ@ê~°Û=w#­*TøxÌ߸ñŒ0ŒV÷dv2è^ÝÔGe¬#wúK3 ¹Juœ¦åƒ”àŽ¾o_Œ= -ÚÍÜE©CGßÚ÷ -ò¾ZeÄ$ D­q®·´y`T[¹r©•J.áV™=;Ë"Ý^84ŸÅ¥v…­,¢-²B3ƒ•ÉC7å n^5¯@Ý S­¾ÝÔ[*$D;üCz¸á¿p§‰(ÐV¶ÂèÏ\$‰~˜ÛE®ÝvV¡@s˜)Ë°|zxõ +áZعÌ]a&TôsÀÌ‹5Ûø_Q¾y–:m™èÃͬ9øí¹×ª*î¢e ÷Zš–šÇN+vÊRl »šgu§8¥d=gþà²bx‚`×¢-¢ÖXèpéÁP8MË!šÖ«oZ¸|ò~9OQyÅã¹(r´\¢i5•'¨•UÉ•pøD³ › òŠy,“†©¡o·Õªè‘?\9Y…¢:R¹bËBãß4¥FÔDø+nXÑ•uÍV•©<‹ïu=˜àNN–EeÒÒQVwc` ‡®ødÙƒU3eKÈÏ„»ú8,×÷¦ š%ûdoi*¿0¸jÆë»8ÝáIDÞùX¬(2ê†ça´aLÝÖ”ŠÔ8çâ{÷q/ˆJ îx{baï#ãqÔ ¢ãåÚ"j­]=è'—Û¹…1z›/¡Ü @õ…òVCZoÖŹ( -å©D™«IÐ8gró„Ù¦ØE ñ@Ð[‚£~y‹…´ˆ'öG§7®öÆWÏÙíj£n1çË{$¹@”ÝQ©¬o˜Ìе3„aýœW⬱.O] —c³ä…\@¤aIÐßÂÓêQ×Xm%ôÈÕýþœª—aãÒ²e’¾°Y±m^D»º'§< ¸“7·’X^ÐU*ày¾ZÃG;ñ(sÙ¡_èp8+SÆ‚Õ¼’Î -·2–‚zw¶ç²¾ÈšV2îíÆçó -ƒgN-Á™äÀpÄÂÑ06+õQ¶™Näp·{ ¡»33LÂñïI·fÔ'Žj -aeïÖ=óJÛl\Q@ίåo4ðïNä–]ñqÁj4¾¥•æblÞ/hÍÈ‹ÌÄ/¨@dåO\؃,Cu|eÐå|Wí>€ožùhôOo‹AÏñäeÙÇÞ|¥cgFæŠMYäÇ©6J0K¾Iù0hÌÕCÞ¯¬äc§¾ÒÈyƒÓÜعê7 á[OCJ™WNY$oéÁ‡öÆv2¸;.„ ž»†ìS£Ù` :…õUÖ(pe ˆ Y¶LY%™a(ë¬Ü †G=P`­ˆ'úôÁWxIá ãÝëä ¤Yƒm¾3Ï”f]3àêéÍ æ™Á£rU&BËÌúdƒƒ -DëÆR®ÐüÁÔ™ ¯ý꧀‘÷t4Í¢e•­nS2[Wz^]Úó÷\u—ƒqdBé›qãËA”üF5ÓºÐ,Òåؾ˜®¨ç_ ¼½3².è ¼è÷ ð½ÌÏh©$±)…Q~~ $s!°iiLÀ´æZM÷[MM<ìŠ(H.,e?û+®0Ü”Å86Öñu­=Þ] OK‰P…+º¾žP~”•Í=Û 'Á^>Nu/nωêF5Ú^ËR ”¡ _'-ïîÀCÂm#(ÕTD+تvzïÈ•±2a¢²(ܹ??êKÑ’+É`Ÿ>ÚGÇ’Bx7æÇŠ2–= ÖM¹/†±mé<Ž4d먖ìÔqÌIýTã,žµ@QgÉÀrŸJq哇קF †e‡h©“}r«cç†5E:÷…ôÐkQ«pº¹r·b A‘ék{l*ä"šVà®he"š9EŸÚ;Ä\‘¾&CÊϪz0dV -Oæó›EMž‚Çž[yYOLh‹EÈq©ç¼VV`HûÆWs.Sõ¨[ã€FÕÓS·¤´¾+L6œ]K§/hJ…!‹]üä„]}³ºÁ¯>ˆ\y ø`øÓE)ðd²?@÷1)N¦3›0AÓTtÝãH|º-y“ò‰1)¯é[³,OÅ!cIt;æ g“ÏôzÇœ£9`HüÒêã`òK‘xL©=2¼ZczLYpt ·M·FkÊÐ"F,é‚thQÍ>%:?îPZH¿ ]x›D†Û?‹ ¼1_ ‚#@¢ÝST´áUÇzZÝ?ÿˆÀÐÓ,]Åípç}(èq\08Éâ ªâ ÂóòC*f—-Ì!æp¸ 7B+}•zEPC*cxL -Lcõ>W§~ ¦­-nsR·Bd¡!,¡fG€'²"n|·Iì‘æb5+ð9‰Fw˜ì÷±ÕUçÊÉb¡ ¼‘æ¸ü&ts¹1¼X2s1=~ÂŽÝœõ[ÌåbŽUæUòÌh(iÂd"ÝÇ\ÖI(Bp1X˜QZSIÑ»¨Kè<éà³Ø±¨ú›‹§¸‹Ä]`0¢û0•|1ˆ¯À¢1MVÿ·“¿êÿ‘¤´.Ä V.j1jZ\pkUøŽóýÀ÷  Šîåʆ£¯’kq`’¸ãøÙQG -ûº‚ -AQ“±2› 2uѤ!G—oÊœ0CXýæ ÏÛNû»Š0"7›ô\½Úzì¬vã'dÏ-z©mLY¦hJ`ÈŒKà^R$ÚxIŽÂÒÉ3Э,ëá3+›2€PTÍN’dŸJÜX8f膌¨¶ó"ô¨EV¡Ft+ ¥uæBŠóØgéÅQÐj2Áú³Ëˆ¶<âé÷ˆ*ï˜H*²œ­o_X*tb½‡TAÍŠªtån@Ææ„ôb$n›õT¯å}²)¾1QDØ4‘î2ÛÌ¿€hyz=J˜iš9姂rÒë" f˜@â߬’Ëéžý·úr~ /ßç` k†d•¹ &p£éÊÏ,`÷À›TN¼LÁ"±öy†ÅÞ{àœA±Vݽϯ€ƒ#¾í`± D¤+ÿq~’a*•K¶©¢å/Ëóô -œ¬E‰‹mæ~줙ŠÚÞgW º¨ä&üEµÂ‡ÙŸ“+Ü¡ÌŽÁÂ"€˜Èxž[ÇLc­Ø kDVw|žZá‰0€°% I?™š¢O3+à g´c¥«Y––Û‡×ï>³‚„ Â,  ‘g*ëã¼ -˜,²Û€HÈF‹C%]ÞDŸWñœå*•V½7ƒXg û‹­1rïSi),!M8»rÍÓtÓ÷™´EžNåâ:Éš’_o3ißZH—¹Ðy‘…BG&Ñ}"-XòÊS"¼ÐÇÇÏ}"-„¡|X~ÔBg Ù|Ž\©ÛN¤E`¾àähœK¦í\'Ò"»†s싉ÌZZøØçïóhÁè d?I-D$#jNn¿Ë£}£m#^Æ Â‚ÖuRÿ›*\T8RtcC-¹×h× GV¤w­!‰ÔO¼Û•¤· ·Œ[³kqäñÅÑ:è½´"•yý"s'S¶È4Š{nÕþŒ/ÚÞ‚œLøK£%â¡v†D}kDDo×;ˆÊhËC€dg|s´T*IÃÑq‘R!ã‹ Ó!”¿ÿü1nÈ–öd|eî俈’ì·ø¡l#{ÂP†ä³y×W~‰ú…F# -ræ@ÈAN\¨=d"Y¬0½}"ã¨**<§/Cd–^žSpÄ|×XÊsøfÖ¸©HJæù¢†ÎÐÔkΘ¬6¡ˆ‰sd›™ÍqÆ©oou#Ã9+n9+’|6„1¬êš§¢·=Yã¥M”Õn”ucÅ Jgã×2$£ìÚ…â f‚ÂlˆY+ùTÏØ;¡¯ DäBW'qG³˜¦±ÌöT®:¥2óg'Q=¼„ýØ9 ¦ÌB4”³TKœS¸;—iîŒ!“¥¿cbk:ò6¼ôp§_U†pd÷l‰…8f7' lâÄØt‹ê/žáydëØtÔÀâÂÓÄÚœÕ}¸ª ¡–S‹ÆáITyšý ÅÚ,/ã¨:'ÎÊÑ=¶ìé2ËÜ™5Ÿø9Zd` Rm©ÄT4a:>Ç~ØY4}4/YäD_L ·ÐV’ãdpKâ=#!KÑo&¨2Ó×\ê”ÐÌ?‡|Às¹È܉#\_3ÐöÃ!Š -º€kIW@ 7Ês‡èO®+~qåÎÀÈN =·hŒØ©mbg3¨2p.¾â–Z0;`ôÿmß²c·Žd;÷Wä¸%ø~|F\ 4¸@ýýåZAI n9Iª'ç˜vfl‰›¢‚ë¡üçéÝãé`¾ Å–í\nöN#wû°¬€xm[‹à—ÕªÁ |íãȃøDò•¨€ iz%.A8ÙÉíEí}èÈZŸ!–ÏU¸GˆBy-ÿ‘h5'-@ýOIË®Pó¨ð÷™©þìôPšë[c@œÀ±¿sôûÈJôžáBS¸„U0RH‹Ñ ¥e-…ŒDÄi„°ó&^,‘,ù¸Át¢Ç”+Ú*X‡„éƒ#ÚΑpC3}ÙT3eÆ9ògõ¼%¸º¹È‡¬n4 _Íf¶Dî‹/H…pdk׺éˬå*€‘9_®«5l|„]4Š.òHáÌ´ ÛÜ^42åtÓŒK—iõþg¿¨ÃþÛÖ­ÎmùB¯!N±ØŽ6£åsÒbA»8{€Lùõz†{P›€<ù¿ -ÉõaUµ ›§è­ÔRX·)Z¢N /”žã]9ö¶W“í9!ËÛLød,1´ÛÍû€Ó‚W‹PVU¬ÊR³Iû‰Ÿ $s'8+é`•=Mã?æÊômNô*©Ô8y«4ÑzB®à»3YÓ ñ}?ó³žÇÔv÷õ,ð@-y?ñƒíÐÃZ âÒ0Ò`Ëv7ñ³x’É­'‹†;Ôã.3g6™¦’,‹½Æn¢h٦ÒՖxÎQ§y¤2,³?k©È›D?UECß›¨ú>x˜Ñö$Ä©sÚ¶±$”´Iš]´G‡ý2¿Ìd"AáL—e½Ð„ÜMu~´¦k{áF9óA©Ã=wܽ&Š ¹Íî#ƒN*âjf§~è935Æ‹Ù Áª­KØl²3 vE¥v"²†Lˆxñùƒ¨è„Î÷Èjtû)õwM5“’íg®¥ˆ~°<ÁÉ#WQW­ÅÙ3ÚR¨çt¿6²hÆãÙ: G÷-¡Â–ƒî| e<Þ0–†+ßvªÖ'Ú`ºùaì> uê‘‘72&%ë4¿í†m‡òí4%‘M2|ÔLJã*ÉžZW™0ý¦—jNþ@ëyž½µû}Z˜®ÂˆŽ*–#(}(6¬›ÑÞ‹³›ƒ±HõðƒOÁÏívøðÀ÷ ž*å‘ß×÷^äÁ"^qJŽË°"œ}›ð‘JÖŽ•È*•ºpW²ÖПوH4£ÒV'§bðõ]Ã_|¦•UJ¨ÞPÊ ŒúU• -Jèà;³ÍÝË\÷ÀГƒpIc­œ³öv—u8ù`C±ªÈÍPþÎvÖÌà¤ý œ’EAJï/ºµ(}XÜ¡­#¼¾?Š£*ú²%Úl~p„P¢èÔl{Zx¡_©a8C ¿ñ”ÜdM‘îDê&ü›ÊSC',´Ç=JUINªå§…Ž¦iã*gåCB×r~L°”¾áÿ¡NÚÇ¿ÄJ>øåXôÑû¯Ú (W4çt-jpidH«q€˜ý´|%M˜L?éБ*1É,q½¶ræÚA#)B¯',4Û¸6¶•”ëiÍ«”öH±ûhjœÉi‚Šåje8ç»#™žª–…(ºì©P8Ø•;w]º«8GUfkgº2rS§,LV¦/NÔXUì žƒkqû¶6®%íÀk —O‘Ê[Žoí· ÇX6iòµ3ï"ÃÚR¾ª2‡Ü¸Öôd%Ù:¿ïuä2ëH¨®;ùOlÔÚ{\ Æ: hâD·¨,ùm[W Eû Nr±,ÝéøR[×· ‡¹8€ÊªA'¦Êûß™.ûj½Ì@q?ÿ¨*v7ÈÏŽh·¢½K!Ò°b¡àz(„»±°!ç†3¡&êX^|ñ ™¹ö}š ‘P2™$ªÊ-KU‹—XJß½÷«X*‘6a“Œcå\ÔùN;øðèXø/ò¹.ê¨o¨Á6øT­E[(0üÚ~ãµN‰¡ŠÞÀ„[ý,©5'WÅ&!-»ÞéÑûЊ¨£ûV,dG µûÓNŠ”çI«/ˆD³Ä'f -Ëvwÿ³~(ðù•äj¦’$RI⇦iç¢~ -ž¡¨m2éófr>Ýí«BÂáÅsy‚+q†¬lb¡HÙ/è b -ORsž‚xº¿Ñ?Ð|ÄÂ{¾¸§AÊÚ/è-©¼N³Þµ›ê´uŒÇ„ ÍÌåéXn_ ŸÚ¶Ð=xƒÎx^¬!{+un@ŸP®%l¶†©¼|¤{eÝ„Â ¡®eQC·ø£mK)œ¿NPeVÁ£6ÁMÆÿýd~ƒh檲‘—]|þØ_àY3kÅȈÎÖؼ]  ξªke k¤AÀp }Âk¦à8­ñÅíŸw±OrJõ”_™ -‡l`½À>ɷ䓶cAÍ—4PQ6ÀO-Q4Ô?+“ìiY£ðîÿžÐZt¡8˜*ü÷ÿDê¸(zÖ)Î!†ûø'ɽ¼aëC“>Öø§,‚1Þjú¢'+ÖÒ¼éM¦æz¦¦µV ™I×HcdF–%x@L­»؈†VR±Ð¨DOáŽ%§>á-?fv-VÛ+¡ ¯1o‘2/CGoÉO‘/”eNmÀ@“3û”vt› Ôné¡N${ßuÇu’È;ë.E}*â¡(ìg‰©d Õ*ÆÃå3Ì ¶,_Þß• Z¨ÒvÉbæåP€/?{Œ’%Êw×…/ž 9DAÂî:¨G£ƒµ$x6L& ¦ŽÛÛ¯wʲL8³ìæò­¤“óèËúýŒ3[ r™uû-Ïîe_ÒŽÛ¿Ï„ÏŒå’@錺ÉòÔ¶XªñåX¥Ç7ï‹–dÏzvNÓñ v¶!ðg®H?-Å­#©lß ²(<…®zEÞc ñGw‚þC/Ýœx¶è"OîvÊN—‰n‹•˜wh¿Ä/;ܹۆ£Eæa>»Ù#“Ž?ôg6œ62±Ùi­øbˆGÆY[hýŸ{l(j|­„ˆi··(ÃÚߤvZˆ>^z’Œ•£µíJ¥Stò“Ö?°<îW±9R5MÏR¥yq.ÛEDÈ-¶EŒÝ»f}ŠÎ4U¾¯If¨”?饢z˜ùNÑ%‡ópïö+ETÚáÌ”ƒ®9Ð<½p/Ž}|øhéÜ{°%ÜoÛ“©8 [b 9NV eßǽxRD’ŸÓxU Ê4í–ëºõNrÚöâò(ûÕº"{mÂ7¯ëO‚«å Ç¿WH„ÛuiÝå…ÃB$ -ß' 0þëó–ÒÒÀŒ -õé‰ú$ã³î5z ¼³HZÈE#êçÕýNo‹– ­_Éã£á:‰¥Hû­^86€ªåµÁWK,»Ûoöµ -ûúk:š(Ô¾e»·Ã_Fx«M7šË &Ùë÷BÖ¹]|;'(•z\bMò~÷`÷õàý}Fúc§¸ßñ)°í]ÑSâ^Žñô‚»Z ÕÒ¡Á§¿ËSéüEË·Å‚•l´TÖVÁ¨ýíó~ÏbÞä4oõª8¥ßÝ~Ï·vªÓ{ÖÔ1šý¬›¾Ö^ZÐðÏ~ -–¨†ïèú¶ßŽö£w{ ²ý`Šºq‚yôxË&ÐhPÉKIX?¥Cd…m©úkp±=ûõÀQå)Vž¿zXÔÆAÅ=?Ö…¶¹#I„ÈZ­"£ âÊ7“it(Ñay -ÅP|«Ý¨ý]—!ã¶la ݳmp ô°´WL¸ ùXœ:y ׳ñç_ã‚þûŠ J@˜J7à\PúP]ad±ž{¼æìWñ¦/¦îcdQ7Üâ•0¢§/Ë! -oÛ¨×Êîy,º²Þ•»Ï@70DÀ6¯ãÛî<ÿ# é Gß–1¥h¡ßy~`Þ¬A²…Ív˜6çàQD.áHVìŽb¤)ÑÊùS•`õZH+€avÕ±æd4c)4® ¼òÆ ò`ž&-qŠämGJï¢W¡PYÉöU`¶@žï1æ£Kp):™d•Ž:NÂ^ lƒ9ÁÏÜã•q¦¹;$Ì÷H’7^(&½ HÐ’ø>0j™—(%ýeË…ØÙ0ÕcCÐﻺlâ¹L—ZPte\ oóÇ\@ówÖ;BËÈ+ÑØU)§½K OÅʨB%2LÆ–X¯è±ÄhÝ\‡:§¤äµeïY«’Üü©VÕBQC!P‡uŒ%zÙí×½ð^â•“p E’´»›—i +…i^VhïEÒT(–y‡º÷Ò·óAÒg¬·±,¢±íØv¯V Ät{Ÿ­®Ê¥T¿žbáMF?õ -öÅÜÊ™ë¨ß&´Õö-©l«â: +êF]&beæ’휤~h¯LF^ Rfú@ÂœnbýÈð•H4å¨ -xO+×U:ç3ûM7I/ªc"ch; äÎÎ"ü` -ÙEdF©eyðUˆû^ð† ¦¹…e×Awz­ÂkXÔƒ4™f -Tº- Šƒg#E2µøœ]%Ø*àûROk¥}î`‡ºFî íóH™•šHÀïÔ2uh”†d4§(ÐéÞ}Û}-_[Y‘"ÜªÌ …KƒšÝ.™ýÏìtÞE`R™LEÔó5ýÐ^`Èö´ÝOEÊÄ „˶&ò϶ú}¦2ߘ›Ñ4Öýn+²O@ÌóœÙ8R´ÂݘZ6‘}B«¯è| " "»ßœ\JvõÛê$Ɉ³å‹ž9á·¡Ê”»Ñ "î5ñ-0gGFåAƒd’j‹á…¤ -rÜD®êu2‰:ŠßÇ:´@"3fŒNp+ -vö¹²'*$;5áÁ°2îö@!È“Û\¯µKÝGû¦Â49 -¢~JWùx…}ð B9DR¦€ÈVqŒP–ä½´L.èH`¿ÉøhÄ :˜ýG(dÞ%ãö1÷c6¾ÁÒ6pºI“ý,lÈc«i"’{é¨myØñ“ï 1–‘~SŠe•luÖdwPäIŸ äšÅÑÊ¥‰IÎ…—´c¯˜tÍT49½$M²¤ù˜£¤Ó¾h@ï]DÍœGBì°¦Ílj •8’¥ÉÍ«½ò©¡ùœÅÁùyC{òúlEÕɘ±º þx‰”ÎÓ^{†3S'úé7$,¢¶5&kÎÓ)d[Â"zžFúâœJVó´“á4l¶=+øÙyÆ#'ÚDTGÏvü¶b²|K)½\?:zw°a]ù8½ž?{UŒPSM•6)}§öC |NjŽø©(eÁŠddã¿}ϬVºstÕ2ϱT:ûo² -JðâJ‰ô·|¨“ -*¾Ó¶µ"Ù&uìam‹Ê·08–¥¢Àê V$XØG´` k·`ÎO,¯hã¾v>7o­$Ý)ê[iÚ—ôo{RýËM]'G_Ìó €Š¡L>1§[~xЭl»[°âù¼¸ª+/ªtápî¶S‚dº¦òåÈcÃGJìe=ð†¯w²Ý‘5… €ß‚ ß?…Eð@YzüE ’<†¿˜Ä´q&_âHTîA<ª#±ç‹!Òƒ_‡lgG;‡¡útT'&kWñ.Qvk‚ÓŸã ®êÇX]¸bQ1 Ê'æHHž£Â‹ØrU,Ϲ$I׈#8ؼձöü -íÝMX{µ¾ÜfÂ,ÎÏí¿‘Ã¼Feèy4CkTµh~rë8HŒKäþá B?!”-:·Ù›0w -ÑKõé Ó“ÅË.T · Ìk©E¹‹èRež¢¥¶CkmÃEÊ+ åS^—,üþ€C¼púH€¥«oÎcèÿ7Î0v:ÃHæÙŽKA‹˜ZqT¥:9îâ—ˆN«®+‘YÉõƒ,™T ~ òÇ,J[¿dä##Îaæv+Ú±ëYA‰, ýý`¿ÅOW®)ÈqõO;ªA¤ƒM#Ví‚Àr¿õEôþúÐßØiûõüáŸ#KüMy³–ÿë?ÿãšzL˜î{B˜Ò؈%y„ ë?öÌg ©@ò)fç•=ÌCnõu¥fbD‰{8G¸BœxÏ1/?Ê/Ë_Ȭ±ú¼uÎÜy%œ;Î.óæî¸&ïà#§OÀ|•qí0’«øý«å*ÿœÃH¹Ö“™ÆÉüŸ_àÆ‹“ƒmW÷ÓKfø×Ê¿fVù[|•\€ï†–¥_N‚r§—±ÿJ¢ãÙGÿïWBßíúÇо7Ϩ)#|&íú›=Jç¥/‰#;ýCúè÷¯~I}üW_m=Ǹ—6çȇüþÕÇ 8²vrƒü¦'ûçv=G°@8§¢R…â¹?Ú[þ6Ξ#Þm¿fŒ¯»½Ç![d.h‰ÞïOF}Êã9þƒIörSã|Ò^f=Ò=’îã>ëÎq¿Ê©ßÁùeÊèþª¯ûîþŸïlNUšk;Þ°éÑ>¡ŽÝ4Ö# ŽÂW¶Œ¤ÂÔÓJ­Gº-nÓ-ålŽÚÜk/”ý7#>ƒBdYq»† àq|åž@¬Ä9j+Ÿùáâüªyðtè')žÉJ[?€Äa` fLÒ³§† bµwƒ)¯èR"ƒ f¤?¶“Xæ¯(¨@ÁÉU•ý®[‚ôU–`*V5t'ù^?›ÑOU&Ï.`”*Áä¦~(uô ¾«çv`Ñê›d¥c€#¡7)çÅ'oZ,ª(³5ùËCdÔ3kÜvàÅNˆ:QþK™Õóý‹éj)³>À%ÀÜbkÖ -ÅP94…u…§ç>[V¦ï•!÷Æz:Ô±‡G}i‹:üˆ‹[£®Rý4~ç4)1Kròž*^J‘—¥L(™nH¹y õ­´$ÀÓõEè:žR -»Ö.Ƶ½*{,=º7E¥È÷?„-¾²ÂbÜHݨ—Dj¢F.轤`·Ëš@Öbù~²ÔÅr›DEu¨ òQ"fô´þ#Û°f™ÈNd7oÜÛš¯…`‰oáàu‰ÛSs°åë…ÙóC¤/Áøºª«øP :¨±MŽB0Ʋ§øáƒð‚í“=bqúÍDö€Úõ1~•ë“=baÂ<ߚĴ÷áxÿWJ‚‹ïùHk-/\JI¹ã…¥2Šµ¡_x‚!V¥ÐÔT -ÔQ7;FØHáæ‰×ÅŠþ!VºÁ 'õg$Üü-Ö¤DWü>àŸlB&žŽå Åœ)L-',l W›~@ÿk°é)’`åÂM<¦o÷o›é›#O§  ’%~/™©±«ˆG$XÎ’@¿Pa0Ç`vl ÁA¬$¬¸µÄ!V¤+ŸÊ&žb-9À 'L™DꆌzŽò`(P+Æë«BR1¼üÆ–Ü)ŠñàqC5a±0ÔWå„QéCš~úÐÖð©·ÊÙ(P| ™Ø«ŽŸy¡÷ô©Àás,g°8Á`îu åô‚°BŃÞqxÖ̶áª^ÐûŒÓƒ„žh`go“ë='ƒ$oÚd*£êÚ¤Ìùw™ Bh‚¥¤M ø€ob@À.åØ``Ü&?X-(çIJŠu/pô^Ô»mòÓ éöDhì±!¼è,PÈIg­lâýP£þôÓsî“!„vu2*Œu‹&÷׳ħݱ¤Œ`Ú•¸Ë/ ^œtLU?T@°°ì¿{iS"˜öp‚?$v¢;§X·CñD¹Mu‘](’ú¼Ýôb;ÿ,×9ز?‡UûtaøI}—³’ƒW›Ô:fÛƒŠf˜ÿ!Õ_i) V‘é·Ú¬T‰õ©}ÊçúýË%Â!1…¶’Hì”´= R±2PÝT~ûHAØþ›àj*·°Dxbû°_mñ³O…ëëã~í0æòãÈAÿ¼3¼:ãÐêÁ#çÙÝÁœyÈ»ÞM.]—>þs¶µdx¶µ$Ð9’¹ÚZý2þ c\dcÚ~(æëöø»€ŠÈ½ÿùèuç4A·ÈY™B{Ž® îã>ýý7ûWÓÃö/Žƒíß+/±Ûb|.TYzÙ¢ Ö;H÷B–ñ½ûØÀäàì0#Ó¹’ûèZÉ}üçì¨õqï‘õHçèZÉ2¾WrC¢àûvÃí\È2âËm¼ÿ5Tàó6¢$\⩃"œÚܯ2E`ÅÐG÷*—±|gõßtžçW9>›yâl3aËýz0ò÷¢—r¬ç°ß¥Èñ9ºÖ|ïA^k¾…qö+Ak¸–<÷Šçðj1Êðì^RP] ^Æ÷‚ïc¹BÔõÍuõç‚?o 5ìzZÏIAmG&Ì -~O~ŸÌâäòd¢ûè~dÜ¿¤þ›ü{T~¹Q>ŸØ¿z^M:—Åù”œ‹¦ßÉù¯ý)Õ¦Ÿ‰ÿçùÈíkÕBµ”„ïaPÔŠ-Yx_çä_5Ùö"£™hõ矹” GÆqy>yª[é(vCÐÖ"À÷æÏקø!èð£:ŸªáÉ5YºUA¹‚8®nP%˜.ž³á:ÙÿEQ# “¨¥€€ìˆXÁJ°/%ÿrTtªx’A⺶ ¹™Z€W†â#ÞcÈÇ (>¿—©™å¹Â˜ècVbw‘7„<ƒ=#ìø2Ò½ ØÛsÄk¯”2‘¿øóëð¢ Ê¿ô<ö̾«¡UGdÙWs«g]ì9¦vþ¡kÇX|•j?J€fŸ†Ç@N$XÂÍã^~{!?$^¦`ˆ50´º„‹ÐÜD¼ØH€Qte’ßÓhî±æ?2_÷º˜ˆ`©/×íšp÷€(òBQ±"؆7/³‹©ôXêˆørÊzA ˆE×Õ-Þ)QLÊèÅ@ÐìPÃ]W©=_m+«#”ç&-DQß¹c=X©9[,_uյЇxèy¯‰¾¨êˆü¾:”R3”$îKJÌÏU5t -±%L\Q?¹•çúúìÄö‡Ö¬çŒX L=¿LYãj7%Ò±»Dbjê$7†F”3P¯z?°‰< ˆ•§ÂmF1‹$—m¤òõD€OÔeô-ÚWy÷Õd{¹9íŸÐ`¼´_m!êª-²å8*\yiúÛ 5V˜;FǶÀ:®°N‹0ã£óí¥ØíîŽ+„q`)Œ•Â–aM0Þ“êГh‹X±#Òˆëîv‰Þø}™y—Ûæ'KÝiÉúvq$vlˆ‡dVÑðe‘z”H¶%ë[¬ö°Ëãfít:èj¯¼$ä…±-&ÓÞ]–—U­Ò>Øû+¶%j«EJ(zD ÂePÂ;kµœDÇeÄÊZ£¡J(û> ½D²ÚBÊ a¤µ¬Eù¡C•JÛõ ¯—ùÛm‚®ŽMÔûžã)2°¹+ï#©$¶äN Öc)Œ7¼×dȸºE¾éƒÑBú(þŽh´uâdí·+ëåÞÖ6 -=é…²U¤l%S¬ô%E£¤áÕm -|µ#¾ñúùêoñaÑ,uÇDχ(mÔo„z+‡ViWéõœ&OOœ›]¼Vi dÐV)haxÜaòþ…]àYÅÒÜvTt¯'ûc_O°M(§T-Í@OÙí¾hJC˜±v„£mÑZuPĄ̈4©U¼%Ô€†\:9ÐÊLÎCZ•ÃóÁw7ßógÀ§ “罉]ËÀέ[ð΢+"‡cm7Ä:ZOG3a&?bèÆ©\¥=‚b¤5m|áŽÖb¡žŒ"¼–ÀÀjG{%ìU@2 Ž£•DE¥Sí Ó J' •‘KÇR^x^@1 òoæ[;~¡³à»ÙÈ°­¡läž~ÎíII@V­­OÈöhµÁâ0 ƒ¥À†M\e›Ìõ¡¯Õßïa.Õ ¬æE!O?ô”±,ƒ‰ÈlÜBÙ¶ ÂåoºÃ ž!Yë/à044ú£ rÎ~þRJ{g@åP/eª–—¥ ^á{ݹÙæ r%dW÷¹þk9?Ô‡ô\UêXæ;_CRPE‡»¢g²7IAy¾c.Š¾àÎ;þãá‡Í_b•¤I͆±áÖµ•r{'‰Dª:ÇiùÑ f”Á»²°Í•Œ¢yBYEû}WæD@x Uµ²´®»ìzøM[z€úœ5׺ÐÞ~Àw˜›¦Áß(–ñ{ŠT±¶ŽÊš\T-G± ÖLkX¢u®ç_µÕÉÊ!lz8ô!“†dFâ3 —$¿¬aÉ9ŸpG8sPÕÈh2¯§µ˜MnÛ ¥H‰ùP´ü­Å÷Ò¥£4 T?öJK0’{[û–%·€¥Ï*€V‹4´·×æÔ “Áw©/2Ä‚¦Ÿ¶_ZÔ€µ†§«Î"‡™ò¡©¼@hYÉ7¨&«Bñ²^Ø\ƒYX;sú‘Ï•¢­ƒCÍR_Ʊ^ŠzIM5t +ßÅYØJÕ©Ë/ÛA´umœcßÞ²ë6Īt›rå=»ž-WÔÄCªËQVgÏfKQ€:µäk¢MÔýÎ<×A÷°y8ëX†‰ÏÕê踡޿¦¬ÀXšÑaÐÄŽõÐQéÏÛ~Èß?$(_±¤"OP< ô#QN£A’ðÓ•zíÚÈZ -Á>:ÉGâÏ-Í3wA}ecšwŽŠ.í ‹†-¨ÛÆB¶Ë"‹zÓËCÞ#ß]¾ók‘ü¡<©›Zµ!Ð;UZ¬D‚Á¹éG‹"kÙðô‰r:cœB/©A¾Djårcôi«#FjëT}ƒÎP*äÖ*[c­¡n‰ÏT cÑ\,ÜçÐsÂ;âð)Q6·{HGY‹R(~˜«%ÇÉÑÔ/º.&M;z„ž¬+y —‡*i‹Ä1´ ²š{öo™ŠlË¡À½Æ“×?ÄBߎ’ïkîU‹e%–êÕ—AÃZÿÂË ±Ètj¶˜8¸–OkèH á­o«òΟÖ|° -Ó<‚mP몧ç¹éo›Çká~Qn£ôÓ‰› X:_.i_W‡ùŽƒOúš3ó–ûöû}‹ÒCÎWù$CÍØ9}QYTC¶¬(–DÏ}ŒÃô}Xp’.œ*5_… ID(åW©ð3ž66œ°°õH¢Œg ôžXvµ·fN×ݤìCY¾¢*ï)=ã5+‘å K­¶V‘lÑz0T>MûÀÝ -¬ÔJ{„»ÀcѶ7Dk+¥Ÿ×‘€'¸ÏekpEâ¡ý¬ºIDWì{|áô(ê7d +üÝ[Ë AÀ¾}Z U£žsìöWZÒô½W]‡N©³w!ºÊ›Hýï3ž™D -Õ>üØ}4¬ËÆæùwÍkJ%ðœdÃ×|Êiâü‹|JAH—ùº²º®=>¥„š =ž^›C¨]:%dÇŽÚq}ùþŸRäMž®«‡ý+Fe‹Ê Ö)GîÝ[B%“ãTQ-°÷¼Å§ô”²~âSŠÎõÐÚáSBæ Z˜I‘«¨–æ›Ê·Å§Ä[ M2þ‡°‰ñßxŧlóJŒnÑR€)¾_ð)¡¿Ÿ<ÏMJÒ"SÕ˜ðŽOi €5Uëv€ÎÀVŽ¯ø”‘ØZU9¥ùƒ ú˜[tJSDÝ:*áˆ=Dš¿¢S&j-Ù¤ØHÀm)g_Ò)©Æb³º2ø ‘ùŽM rÏúõÎ BBD\wØ”h#˜âNS±Fs·Ø”¨ç2˜×Èø¯°)³‰Á‚ÌÿÈ€\³)=ë -\îgBÒRVÙLnrÿ›ÒúË/bm±)«Ì؂۴ǧŒþó¹¼/Ì/ -P¢¾ª÷G+€«?ßê¯2ɼ¹°¶Á«DŽŒX¶.nu‹XYdÞì3½Ï¿cV™2³˜²5³R8 Ö„Qp‹Z)²svqM;ÄJ Uù*‰?ÏÖ³2[ öó׸E¬tÜÈL‰ÿbe‘·oYÌسRÈ‚³¾Ûg°5³R4ìÌþ|‚ /¤±áÑ#>;JЋ¡ÜvM5IM‡èÙpCðö6X-ò[Ɔ¡]‰(ë—eJÔHg,;Ʋå»aQ-ëæ©3$ƒN,[8æ—Zj‰? ŽF†<½ó/Ú •³„òc¨@–ƽz—èl~|jŸ%ª”Ðt©hà:9i3qBœ$Žúþ ‘™0nËÓ3–{ˆÐH8Ù•Š:_Ÿ¯'מDú*cÕ(ŠyÝ -ÖY&¿¿$“^4›ð⻘¹!ø'ÄJ -"î’g¬¸ŸJ#V–ëòê¹Dõæ%Éæîg~ á‰ãeîžÞ/òë{§Dj–=lÅ žy˜ùe9%–$+j@=d¾˜ln··«åªˆåÕ-zb¶Ë0lÈIÂ$º2–¯hÄ>`¡ð¦@¬áßdWÄ}Yž)^”jQ PD ÷Å7[¬önA¬‰_Alí ã|Â$Ÿy:)#V–XN±¢ád e - ly(ž'á–#–žxü†0߯j€ ®$yÞá“e(åu&Ɔ‚ßÙ., V»}ÄÊêI„<›˯ÁIˆ%SŸÕ’È4Ð-r3ÅP\ò9) !< âiKøp6|)ðÚ)“Hdÿ¢Ö'ˆjˆÂƒ»F¢]Ó><[¾hG”5°ôK´É·ë™p tûËÚ"’J£®ëzßbÕBï&Å-m?˜ / Ùñ„ í6lɈå‘—ŒØ8º¼yŸ´Í3ñ›¡îËIgO(H[bE{ɸ@<¥Û¯pg8PqÖxJBpÝ ¹äÒÀ}5W8ÆŽåÛÝÇÔ5 (Ãï˜ÚÚ%»>hž/iN-ºΈe6‘ñ£ è’|•AP£@Ži6lqlûìê”gé2CÂG;*'À{ix·ËyË‘˜>ˆ£hð¼e×ÚîéP–„ž œ é¸ÑK~`–Ä!ÁgOc)“ÆRžß¾´…ÖƒlÏ% b…î #{m—–ÙB±Ídõ ,°…åÔR_²E¡¹ÙÉkÐ"p™và¼-±å0‡©ECÿ,¡†·aã’§›30[¨à²FD8OWÌœ™ýÄ¢ŸœCXöÝísiévE,—Õ Zj'äêöéÚ¹vi„8†¿1“öYäYÌÙ`ƒ¦!:B©/gýM“ŸínÌ¡“´³ïÕîÉÀ53Åt^%A -ôJ³hÏX²ÿº§sMâ¬ãIæŒTÍÞ¹n"QÀNÃÑåÂ-ßÒN }v‡ HÏh0Ó^2HCqÔèË¡D¿‘! ¤ÞlƒþH‚E¬4bþ)–í¶¥°¾œˆ!'7!‹(ï.4upM¤ZŒÊÁ:¯ì«! ðÝœC¥«™dkò6$©N›„RÔ†âh°–6"Š^BÓŦr]çÖq$™â¯¢J0-pÑÆY=?sçgQZï˜øðÑ6’³Ý& $Q ÇÚÒ\XÇõ>xƒ]¬ -¡Ú<=‰þ4I%hÒ)ÙMw…{#íEñ‡«A™h p­ËðA²á~üD¡¸‰ûpN-=Ú9±¼àu=ÄÒœæÌæW¼Ë.?Û@JCÝ™…3ýý¶ú•lš+åGk)Q2Ü–ßO‚=¤¼êVYêɧ\öe‡’å± -õIwã¾ü¨6¸ÑNµÄ A7jVÑ7ðÞß7ÚÅ–„Ò4VÔ-O¸—ß‚¦[¡K³Ä½ í©·¥î9laŠ¢Æ8Añ íâ5‰ÕÚ!+ë¬@&—%zf›'jÙ6€½CPÌ-_Py'Êýz:©öé´Â0(º#Þ è»-ÏŒX±ŠÏŒ -å©èÞ°¬aØ­Su,ŠÕRÖKñb„²¼ÃZ¬…]à®’\r‘)xz -­€Aë·ÕT0Ï=3¿P'°|E٪͙Q’#%éÇ¿Éçžcsþâ¹z¬°š˜õÉámÌ_õƒÒÊ–gà>þMÿñ@yÕþÁÑ}ìüýsÌ«î¦)Šãò«üM×c—søû—|töËê¿z]ïÇü{ôŠ¸u,G†Ïlò;6À„Ù; -t.<Ǹ¥ÌŠÙõ!°×³v<äG„®|{$è/ÒîÊP¦ÊöãÜá#sºCŒhazE{n‘½àãÐÉêCyø€õ<ÿÙ3º°âÐz !½ÀŸ–±ÐzÉÉT °ò ““ÒŽEÒ"·éN<8âÂ*i=EDJÛ -…ܨtù9ê=ðºú_xvvš!THZƒÚwЊ0žC\—$­ç¿GNžiŸê£TéÛ±‰8b¿‘*¹k‰†,|…ÒÝ?œ(÷õ!n+³¯xþ;›–|¼/¯¡Ä–Ê¿hI'¾ØÃòíƒßÑþ¶D¾· Hà·‘d‰ -ï׊f4ÒëÏÐ…·mæqñ%>õðëµc‰R¬Æ æ¸þ|åúÏU¹Çò˜žrýDô°–$k)Þ£Ê#Rûñþx¬VÏ鉖¢  p<°×¿&§Þ6 ŽãùÍ/­>±¸ö€h„þs•‚—£6|2Ó^ÎmQm¢)O½†÷=ô¿ÈÄ!â‘Amˆe+|ÿ•.,¾¿5 •®ú¿Òâœ8j<Ó0ÙiçßBS¬ß¿ ™yÓ—à*û¾ÑªÂ‰¥Ã[•?;Q‡©ÜÇ_ð§#ÐfYýºÑÄL?øñíi É öñׯ˜ñ×-}}}ýÜ‹Ü -endstream -endobj -383 0 obj -<< -/Author (Werner Messinger) -/CreationDate (D:20100305103803+01'00') -/Creator (Adobe Illustrator\(R\) X) -/ModDate (D:20100305103850+01'00') -/Producer (Acrobat Distiller 9.3.0 \(Windows\)) -/Title (Bosch_4C_M.eps) ->> -endobj -384 0 obj -[/ICCBased 390 0 R] -endobj -385 0 obj -<< -/BG2 /Default -/HT /Default -/OP false -/OPM 1 -/SA false -/SM 0.02 -/Type /ExtGState -/UCR2 /Default -/op false ->> -endobj -386 0 obj -<< -/BG2 /Default -/HT /Default -/OP true -/OPM 1 -/SA false -/SM 0.02 -/Type /ExtGState -/UCR2 /Default -/op true ->> -endobj -387 0 obj -<< -/BG2 /Default -/HT /Default -/OP true -/OPM 1 -/SA true -/SM 0.02 -/Type /ExtGState -/UCR2 /Default -/op true ->> -endobj -388 0 obj -<< -/BG2 /Default -/HT /Default -/OP false -/OPM 1 -/SA true -/SM 0.02 -/Type /ExtGState -/UCR2 /Default -/op false ->> -endobj -389 0 obj -<< -/ColorSpace 384 0 R -/Coords [ 0 0 0 0 0 1] -/Extend [ true false] -/Function 391 0 R -/ShadingType 3 ->> -endobj -390 0 obj -<< -/Alternate /DeviceRGB -/Filter /FlateDecode -/Length 2597 -/N 3 ->> -stream -hÞœ–wTTׇϽwz¡Í0Òz“.0€ô. QfÊà Mlˆ¨@DE €£¡H¬ˆb!(¨`HPb0Š¨¨dFÖJ|yyïåå÷ǽßÚgïs÷Ù{Ÿµ.$O./– ™'àz8ÓW…Gбýx€¦0Y驾AîÁ@$/7zºÈ ü‹Þ Hü¾eèéO§ƒÿOÒ¬T¾È_ÄælN:KÄù"NʤŠí3"¦Æ$ŠF‰™/JPÄrbŽ[䥟}ÙQÌìd[ÄâœSÙÉl1÷ˆx{†#bÄGÄ\N¦ˆo‹X3I˜Ìñ[ql2‡™Š$¶ 8¬x›ˆ˜Ätñrp¤¸/8æ p²âC¹¤¤fó¹qñº.KnjmÍ {r2“8¡?“•Èä³é.)É©L^6‹gþ,qmé¢"[šZ[Zš™~Q¨ÿºø7%îí"½ -øÜ3ˆÖ÷‡í¯üRê`ÌŠj³ë[Ì~:¶ wÿ›æ!$E}k¿ñÅyhây‰RmŒ333¸–‘¸ ¿ë:ü }ñ=#ñv¿—‡îʉe -“tqÝX)I)B>==•ÉâÐ ÿ<Äÿ8ð¯óXȉåð9€¢yPÜõßûæƒâ›¦:±8÷Ÿýû®p‰ø‘ÎûçLg ù‹kâk Ѐ$È t!0VÀ87°ø`ֈɀ2A.Ø -@Øö‚JPêA#h'@8 .€Ëà:¸ î€`Œƒç`¼óa!2Dä!UH 2€Ì d¹A>P ECqB¹Ð¨*…*¡Z¨ú:]€®BÐ=hš‚~…ÞÃL‚©°2¬ Ã Ø ö†ƒá5pœçÀùðN¸®ƒÁíðø:|ŸÃ³@ˆ QC â‚ø!H,ÂG6 …H9R‡´ ]H/r A¦‘w( Š‚¢£ Q¶(OTŠ…JCm@£*QGQí¨Ô-Ô(jõ MF+¡ Ð6h/ô*t:]€.G7 ÛЗÐwÐãè7 ††ÑÁXa<1á˜Ì:L1æ¦s3€ÃÌb±Xy¬Öë‡ebØì~ì1ì9ì vûGÄ©âÌp‡+Ç5áÎâq¸y¼^ oƒ÷óñÙø|=¾ ?ŽŸ'Htv„`Ba3¡‚ÐB¸DxHxE$Õ‰ÖÄ"—¸‰XAàPð4Ð407°7ˆÔô&Ø9¸$øAˆnˆ0¤;T242´1t.Ì5¬4ld•ñªõ«®‡+„sÃ;#°¡ ³«ÝVï]=iY9´FgMÖš«kÖ&­=%ÅŒ:Ž‹nŠþÀôcÖ1gc¼bªcfX.¬}¬çlGv{ŠcÇ)åLÄÚÅ–ÆNÆÙÅ퉛Šwˆ/Ÿæºp+¹/<jæý$.$…%µ&ã’£“Oñdx‰¼ž•”¬”TƒÔ‚Ô‘4›´½i3|o~C:”¾&½S@ýLõ u…[…£öUo3C3OfIgñ²ú²õ³wdOä¸ç|½µŽµ®;W-wsîèz§õµ  1º7jlÌß8¾ÉcÓÑ͉̈́›È3É+Í{½%lKW¾rþ¦ü±­[› $ -øÃÛl·ÕlGmçnïßa¾cÿŽO…ìÂkE&EåEŠYÅ×¾2ýªâ«…±;ûK,KîÂìâíÚí°ûh©tiNéØß=íeô²Â²×{£ö^-_V^³°O¸o¤Â§¢s¿æþ]û?TÆWÞ©r®j­VªÞQ=w€}`ð ãÁ–嚢š÷‡¸‡îÖzÔ¶×iוÆÎ8ü´>´¾÷kÆ× - E ðŽŒ <ÚÓhÕØؤÔTÒ 7 ›§ŽE»ùë7-†-µ­´Ö¢ãà¸ðø³o£¿:á}¢û$ãdËwZßU·QÚ -Û¡öìö™ŽøŽ‘ÎðÎS+NuwÙvµ}oôý‘Ój§«ÎÈž)9K8›vá\ιÙó©ç§/Ä]ëŽê~pqÕÅÛ==ý—¼/]¹ì~ùb¯Sï¹+vWN_µ¹zêãZÇuËëí}}m?XüÐÖoÙß~ÃêFçMë›]ËÎ: ^¸åzëòm¯Û×לּ302tw8rxä.ûî佤{/ïgÜŸ°é!úaá#©Gå•×ý¨÷cëˆåÈ™Q×Ѿ'AOŒ±Æžÿ”þÓ‡ñü§ä§åª“f“§§Ü§n>[ýlüyêóùé‚Ÿ¥®~¡ûâ»_é›Y53þ’ÿrá×âWò¯Ž¼^öº{Ööñ›ä7ós…oåß}Çx×û>ìýÄ|æ쇊z»>yz¸¼°ð›÷„óû -endstream -endobj -391 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 430 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞ´‘i3BaÇ¿ª5Œe -¥ÔmÓBn»ÛN5-*Q®DRZ¥M‘;JáC8f /ò¢Ìü^=ÏyÎ9ÿßÓî¾·ÿšV÷í_xé—Æók/OnÿÔÛ/½ÔZϽ<6ht~xjßך•ÇÆ-Q/Tk7"[~H—î“…J´È ¯}3¸À€“¡¥Oàv„‚2Ò2êÇV84.<Ÿ¤ó¡Ï4sBÛY¶xÙ„)0k‘·M 0X+é5ìÃ[¦Cz®ÒÈW›amfk­Djt &Dƒ€sÇîÓ9 ¸Ñslöâ_Ðæ?-.ü,yBQ0æ$ñh:x• %²áTÄ‚ÞD¾¶ÁyîŽ(Vke¢ßQ­ñ!Àß5E* -endstream -endobj -222 0 obj -<< -/Type /XObject -/Subtype /Form -/FormType 1 -/PTEX.FileName (C:/branch/ku_algorithm_environment/20_Documents/20_Documentation/texmfbosch/tex/generic/images/bosch/CD2016Graphics/Bosch-Supergraphic.pdf) -/PTEX.PageNumber 1 -/PTEX.InfoDict 392 0 R -/BBox [0 0 1190.553 504.566] -/Resources << -/ColorSpace << -/Cs6 393 0 R ->>/ExtGState << -/GS1 394 0 R ->>/ProcSet [ /PDF ] -/Properties << -/MC1 395 0 R ->>/Shading << -/Sh1 396 0 R -/Sh10 397 0 R -/Sh11 398 0 R -/Sh12 399 0 R -/Sh13 400 0 R -/Sh2 401 0 R -/Sh3 402 0 R -/Sh4 403 0 R -/Sh5 404 0 R -/Sh6 405 0 R -/Sh7 406 0 R -/Sh8 407 0 R -/Sh9 408 0 R ->>>> -/Length 1596 -/Filter /FlateDecode ->> -stream -hÞÄ™KŽ7 †÷} -] 4¢ÞÚzdå…áEÐpâÓ’IîŸõ.UœMz íR‰?²ä§\ÿ¹}ýþ·yúô,æÃÇçËŸ1¿›‹Hs6%ãÌm7–arѦœÍ__/¿˜ï—~z]7ìºõõm²N§ÙbŽ"eÙúéç/b~{U½V5vŠX§Äøä­¯Á\o—§/ßļ~3Ÿ/ŸWkš·©–Ñšš %3~¹øZ­Ïu–fb[øò8Éٖ66%Åg+q¶ÊwV¥Úlriwz’Äò¶Î¼\b‰¶”¸Y˜Dl’:Z¸l°o¢³?|1CÁƼþÎÓIcR&£\Yœ:g„mõ;Mt¢0Ú :E{…(Å66Ø^7| ?Ä7[ˆúôùá¨üôØC¢ÀílÆÙÐöè¸]L‘’P&L92}Ž.I}îÿú=¿fs}56× P­HÉP’„âÑâº3ÀȤ¹‘&V|X»ÞÆ·ËÐÈ??åâ2$‘þYt*l f˜ŒÍûU!Ve?³EHH¤¸Ÿ`µõ°‘ýõÒeÓ>y(â÷Òé”qÄGªðæT–qˆÉ6 -þñá }>Rv¥R«Ð†ä²âR­o7§VïáczáÆ€í±Eo…!¿ÁXŸÈ =d‡¾¨¹¿Dl͔ۛÐØø¼¬Ã8§¼iÌvŽþ»î¾S|ŽÊ§|w[üUyÍ¥n×Yz„;•êäš]¶Ì3òvò…Äã“ñU½„‘ -Uªö§¾±çL:e[+dmúA²áAÜMa1â7hÖ{`U0]€+Þ"-™ø\\-@Ï{ Ï -ßP!ý‚×(Ý î p}Žhøè‰tE¡à¼Yå³c¶l'dªk£€ê@Ry¶DÙEG*‡ ¬XŒˆ^tZRD[™w*Nl.&V™£Qb]Üüzi-Ù˜ö-º"˦E] Èd-Oº'ÌÓª³陕l¼Žü¨Vͱ‚(GO©œI}˘YJ×QKz ‡ÁØïÚhF±È¡IѧØÔñnrúN8žlÁ=—¨{gS#›ÓÅóú8tÛnë »€vžy0÷<Øù†Ä=:ïäÛ³÷ûðtÑëâ‹Š¹}CÚ)eìIi×½[ÀÃ(|µ5*¨‹i÷éŠZV 7—° ÈO^õ žÄÛ,GO„2ðϪb³+›$Hm‡jÈl@q•fÅï%öc¼¨è1Ó£êq­b ÛHª!ÂÔ•¼ÛË«J˜bð&Òx´ž¢_Þ¡ -ŠfÁPC?ë¼óF“ÔÓÕJ¹ÞÀAÛ5UA6LŽI@Ù ZºÝ¤|5€J3Ð+Ö¬MR²N;*<¥?¤y/£@t¤«V Úš6 -$ÝÐCW¸oð4`ã …â_IÛýOÕ,£4ƒô“¦$0þ,Scríx_àC³. ( -@ -KÁ: -@@‰’ê=G„ý) Õ†¬À|-‰©¤¬?õœÞgôúýür -÷ËI™—wg-ÁH"xd­Úá¶KðÛ¥#€ŽîðGÏ0':P ¢~ªq稪e8‘aU¿KÈ8UÚÓ ñTXLP¹øyiü¨Ð­(S‰v­ÁÄŽ2OÿêRª#k%®Ì”w¥-~3ZÑ s ZïëåÂP¬g·Žû:n|ç€WmÓ¥x{¢š:[ŸñcAŽå ¦êoMV¦rû.‡ áùo]àÜ@m]àÖaõعG뻸®É»ÃG~9ñÏ‘–.hþs_wêûŽáÃ`õÃB¬¾üó´ƒïaHß´Ç®ËÅ¡ëù¥ËE¦ÏÖ>›ÏùÞñAÇŸ\ÑOƽ .ÍÄ'ÂUèLtë@êjI-˜2²ZÐŽE,Z½$ŽeA‰£x”¢&iiB‡¢ˆ”©ÏÙÈÂèx¥§1=°Ñ¡Ì%moø¶ç{sÌo -$çA”Ök`ùái&ÚÔn—\»;Ñ ¤SÚÆ9Ö]PÞñÆô>æ@ƨ#JáÑ£åv9ᩃ[‡Çëgì]µ¡KÇGàõ¸\ä7r7“ªãÿ*(YMœïšúôŒÿ` + -endstream -endobj -392 0 obj -<< -/Author (Freelancer) -/CreationDate (D:20160518202519+02'00') -/Creator (Adobe Illustrator CC 2015 \(Macintosh\)) -/ModDate (D:20160518202528+02'00') -/Producer (Acrobat Distiller 10.1.16 \(Windows\)) -/Title (Bosch-Supergraphic-CMYK) ->> -endobj -393 0 obj -[/ICCBased 409 0 R] -endobj -394 0 obj -<< -/BG2 /Default -/HT /Default -/OP false -/OPM 1 -/SA false -/SM 0.02 -/Type /ExtGState -/UCR2 /Default -/op false ->> -endobj -395 0 obj -<< ->> -endobj -396 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 410 0 R -/ShadingType 2 ->> -endobj -397 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 411 0 R -/ShadingType 2 ->> -endobj -398 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 412 0 R -/ShadingType 2 ->> -endobj -399 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 413 0 R -/ShadingType 2 ->> -endobj -400 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 414 0 R -/ShadingType 2 ->> -endobj -401 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 415 0 R -/ShadingType 2 ->> -endobj -402 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 416 0 R -/ShadingType 2 ->> -endobj -403 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 417 0 R -/ShadingType 2 ->> -endobj -404 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 418 0 R -/ShadingType 2 ->> -endobj -405 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 419 0 R -/ShadingType 2 ->> -endobj -406 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 420 0 R -/ShadingType 2 ->> -endobj -407 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 421 0 R -/ShadingType 2 ->> -endobj -408 0 obj -<< -/ColorSpace 393 0 R -/Coords [ 0 0 1 0] -/Extend [ true true] -/Function 422 0 R -/ShadingType 2 ->> -endobj -409 0 obj -<< -/Alternate /DeviceRGB -/Filter /FlateDecode -/Length 2597 -/N 3 ->> -stream -hÞœ–wTTׇϽwz¡Í0Òz“.0€ô. QfÊà Mlˆ¨@DE €£¡H¬ˆb!(¨`HPb0Š¨¨dFÖJ|yyïåå÷ǽßÚgïs÷Ù{Ÿµ.$O./– ™'àz8ÓW…Gбýx€¦0Y驾AîÁ@$/7zºÈ ü‹Þ Hü¾eèéO§ƒÿOÒ¬T¾È_ÄælN:KÄù"NʤŠí3"¦Æ$ŠF‰™/JPÄrbŽ[䥟}ÙQÌìd[ÄâœSÙÉl1÷ˆx{†#bÄGÄ\N¦ˆo‹X3I˜Ìñ[ql2‡™Š$¶ 8¬x›ˆ˜Ätñrp¤¸/8æ p²âC¹¤¤fó¹qñº.KnjmÍ {r2“8¡?“•Èä³é.)É©L^6‹gþ,qmé¢"[šZ[Zš™~Q¨ÿºø7%îí"½ -øÜ3ˆÖ÷‡í¯üRê`ÌŠj³ë[Ì~:¶ wÿ›æ!$E}k¿ñÅyhây‰RmŒ333¸–‘¸ ¿ë:ü }ñ=#ñv¿—‡îʉe -“tqÝX)I)B>==•ÉâÐ ÿ<Äÿ8ð¯óXȉåð9€¢yPÜõßûæƒâ›¦:±8÷Ÿýû®p‰ø‘ÎûçLg ù‹kâk Ѐ$È t!0VÀ87°ø`ֈɀ2A.Ø -@Øö‚JPêA#h'@8 .€Ëà:¸ î€`Œƒç`¼óa!2Dä!UH 2€Ì d¹A>P ECqB¹Ð¨*…*¡Z¨ú:]€®BÐ=hš‚~…ÞÃL‚©°2¬ Ã Ø ö†ƒá5pœçÀùðN¸®ƒÁíðø:|ŸÃ³@ˆ QC â‚ø!H,ÂG6 …H9R‡´ ]H/r A¦‘w( Š‚¢£ Q¶(OTŠ…JCm@£*QGQí¨Ô-Ô(jõ MF+¡ Ð6h/ô*t:]€.G7 ÛЗÐwÐãè7 ††ÑÁXa<1á˜Ì:L1æ¦s3€ÃÌb±Xy¬Öë‡ebØì~ì1ì9ì vûGÄ©âÌp‡+Ç5áÎâq¸y¼^ oƒ÷óñÙø|=¾ ?ŽŸ'Htv„`Ba3¡‚ÐB¸DxHxE$Õ‰ÖÄ"—¸‰XAàPð4Ð407°7ˆÔô&Ø9¸$øAˆnˆ0¤;T242´1t.Ì5¬4ld•ñªõ«®‡+„sÃ;#°¡ ³«ÝVï]=iY9´FgMÖš«kÖ&­=%ÅŒ:Ž‹nŠþÀôcÖ1gc¼bªcfX.¬}¬çlGv{ŠcÇ)åLÄÚÅ–ÆNÆÙÅ퉛Šwˆ/Ÿæºp+¹/<jæý$.$…%µ&ã’£“Oñdx‰¼ž•”¬”TƒÔ‚Ô‘4›´½i3|o~C:”¾&½S@ýLõ u…[…£öUo3C3OfIgñ²ú²õ³wdOä¸ç|½µŽµ®;W-wsîèz§õµ  1º7jlÌß8¾ÉcÓÑ͉̈́›È3É+Í{½%lKW¾rþ¦ü±­[› $ -øÃÛl·ÕlGmçnïßa¾cÿŽO…ìÂkE&EåEŠYÅ×¾2ýªâ«…±;ûK,KîÂìâíÚí°ûh©tiNéØß=íeô²Â²×{£ö^-_V^³°O¸o¤Â§¢s¿æþ]û?TÆWÞ©r®j­VªÞQ=w€}`ð ãÁ–嚢š÷‡¸‡îÖzÔ¶×iוÆÎ8ü´>´¾÷kÆ× - E ðŽŒ <ÚÓhÕØؤÔTÒ 7 ›§ŽE»ùë7-†-µ­´Ö¢ãà¸ðø³o£¿:á}¢û$ãdËwZßU·QÚ -Û¡öìö™ŽøŽ‘ÎðÎS+NuwÙvµ}oôý‘Ój§«ÎÈž)9K8›vá\ιÙó©ç§/Ä]ëŽê~pqÕÅÛ==ý—¼/]¹ì~ùb¯Sï¹+vWN_µ¹zêãZÇuËëí}}m?XüÐÖoÙß~ÃêFçMë›]ËÎ: ^¸åzëòm¯Û×לּ302tw8rxä.ûî佤{/ïgÜŸ°é!úaá#©Gå•×ý¨÷cëˆåÈ™Q×Ѿ'AOŒ±Æžÿ”þÓ‡ñü§ä§åª“f“§§Ü§n>[ýlüyêóùé‚Ÿ¥®~¡ûâ»_é›Y53þ’ÿrá×âWò¯Ž¼^öº{Ööñ›ä7ós…oåß}Çx×û>ìýÄ|æ쇊z»>yz¸¼°ð›÷„óû -endstream -endobj -410 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 738 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞLÂùORðïZ[[?ÔÚZ«Þã| ¤"È!‡GQZiV®Ö*³Ù]vè²QD-ë)(ò¸ä’S|dYb²µ¶Öú¡Õµ¶þš¬õCŸ}h†æ«h²†&4OFs%4GHï'éý\z/dz¯b–Cø* O$¤¾<*¨Jˆ”)±:CéòRC¡²­ldeFVªg) +®eEÕ¬PÁòe,)a ÑKžp••Q™ ÅIÉgRò…”|#©ï$õ“¤~ñ¥?„ò¯Õ'™ñ½Â²VÓ^¬=“U_Ši¯3º{ÓúÇõv§Áíøïè¿ãÃÆÉAãÔ€‰~`öôšç¯72ÝÍþsý'-L릩…Ñ ([ýŠuxV`ñTšÞÓübgÓÔ¶†É­æ‰mæñíf÷ÓØ.ÓØn“kѵÏèäœ\ƒƒWï ëGz»PoëF(íˆT3,ÓØäu6…z¨Jm­VYkTVe­µv³jH©¶)ÕÃ5uöÍÕG•ÖY¥uйúq…~BnxZix&3NIM/(-1ψ<ÂF¯°y–oññ[æÉ£~²áuˆSA¢3Ä=&ÎE¸¢Ü®XEwœÛ“à\Mrn¤ˆ[)AoFt?Kõç*rŠ'KJ[Ae_®s²wQ7¹b˜ze¦_7yW›}o,ÌÛ#¡µÖHéx¼Ô–\?‘~בÝ8µ´Ñ¹\>Sü³³X>Í–;–Ëí…ò±¥–ü»Ã¹õ¦ìº1½®M•”‹%yb{»wáÍ–È*B«¼†ÿ|+˜[§ oÞ%Ìæ0—Á\ -¾$æcðGÁDÀ„ 8àB^„g¦yŽ…§ˆN"êFÌ…¸ñ$mHbñ1R‘êCú2w¹‰ì5äzïF¡ …ó_D¾ ùKÈ]F¶Ù+È\CúÒ7‘ºÅ^,ÞEò>’}Hô#ññÄ!öQ+†°`Cda;£9r!8ö[€‡[ -endstream -endobj -411 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 117 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞ„Â -‚@†Ñ“Ja¦¦æ’KÚv+gƼ\ôcà‡çƒ÷½{xÕ=ôq§³ÜjCÓlŽ`lëõ梉ũ­`©Ìq¡…[_ºžµ‚µË67n§&Úý=icÞË‘Þà‡ú€Ïù}ý~¥¥”à -endstream -endobj -412 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 174 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞ¬ÂI aà9»pâàà H)%eIY²DäçÙÆ,†ofþ€}ßùGê}ß©™šƒ§‡ë¸?|ã/<´ó‰GVxlõÆN»HƒnÒ;¹BŸE¿€ƒÂÈϦ#dT<Á˜d>.aBÆIùSSÃ4™%3ÊæÈ‚²ƒù.’%²<ß -Ye¸Æ6°ÁÖ°®â&ÙRW°­™ïhKØÕqO_ü~`q“^ -endstream -endobj -413 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 323 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞLÈéVa€á¿1)![ö=ÙÝG)JI¤DD$¡èJ*™"d Ý]3¾eæœçÇ{^îöwa‰…»óŒ,ƒð½`œ]ÁÂÛ«c„âøë<*/ðŠ­îC+ ËoÀ - ?ÈßµC50" 5Ä¡Æúq²¨nŠÂ€ø„!E$‘–<Ò’"’($Ž’²()=…äˆ,F*bäFìPœ1Tˆòü‹¢@”qHo«ãmÕ¤Æm¢£AtIH›ü¦h.!-–êêS]bHCútϘî®&Ęé›3}S²dûæëÀ‚åhæÜ°äÖü`ófX±ÂÐVnFëíÈÆb/Ž[qì¸ÛGi‚¹Jg™æ(ÿÒ*³2÷S‹ûa¸ª3OuæjsomîA¼À¿«(Œ -endstream -endobj -414 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 313 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞdÆéVaà‰±Œe fŒ±×ý”H)©-”Vm¿¥”B$I¹¯†ïýfæœÎy~<¾›‘obúÌ\|c¿ˆ÷Râ¹ø‘󖀧4çC·àìñȸOEçÉÀ…9¿ä\GÀYì‹øbßqøƒÏÿ…ž½Ðã1.ìù¿¸½®È&ÃívÙ±bÛ\®Ãæ:¶Ü;Âd›m[·Û Æf$ÖL aÒ-Kºe¥š“jZ„ló曈Æ̯ F'9Ù0­7hŒJSâE@¯JƸúŒPHãuµR7Èè—ŸClÌ{DôKÓEkÚhÄt‰6R#Œ6 Èð½F°Ô˜&T%BU¦Jˆ`Q*Ê@…Àówˆr‚ð…¿Œ(çÊS2ŠÙ[äO€l›a½ -endstream -endobj -415 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 200 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞìÄ‹ZÁpð÷1²)c¼ -Qî·Jr)—ä®Ð†6¼sçüwÎÚCø¾ß÷Ó£[ý L×#àhƒ´µ±­„oC³}mÑ…lÎfÂìÐdc6Bê§c¯Iðc¯‚ÐGAкäê]xc_Òf-tÙd¯$Ð^€Iê¦R7Ïì )K©¹*TXÙòÛJH†‹–\<øAÁ%.r.Yâ˸<°{–G”:zmw,I$pœ¤8ò€["›žk—ØŸД, -endstream -endobj -416 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 222 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞÜÂ{OAaà3[³±f5iEE¥tq;Eîå’ÜBø6 -Ý/îäZñUý^¿÷œìØÌßž=,›eõÙ<率Ïg| -Â&KNØJ­yúbª­€ |û#ÖOv< ž:ži'}âz> -stream -hÞtÂW -1@ÑU)*–iNS±÷Þý$®Vð#¹y‡Sxºøÿà_žr~âïžv¾ùʼâÏÂS`ñ€{á.´·¸)_ W¸ÄE¤Í¹p)sŠ“®6Ç‘p»„}ì%v—f‰ -Œ1ƒÔÝǶ±•}ͦ°u¬åv+®?1m0 -endstream -endobj -418 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 203 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞŒÂkKÂ``Á"ˆZH(Š¢‘†÷ëÎQK³¬4¯?ÉÍw›?¹íçÝøð„´Sèîá{‚®FFµÓÍ1t500ɦØ4ûpý‘Í°O`¨YÐÕ›ãæ[¤%4J`”iÎê3û‚þ*økì+[Gám8áܤ-j›í°]=}:@ÿŽÜ¦F„hŽé„Nå7úŽ–w†¦sN?Ðò.äOúE—nû[þq[¿t…¶º¦ò†néÎ}Ùˇñå€öQþ`ãóB -endstream -endobj -419 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 117 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞ´ÂY‚@Àú‚+ *²ï"Wúl&|¼t'3qb¥FZó­Ù â–Ýá›ö¬£Ý“Ë°£#¶ÓÉðÌ^°™®†Ö¢Ïò +¶CöŽ…ø°øÄ\E†¯Ÿ31ÖNUb3Q©ÅÌb®/ZüïW€;Ù³I -endstream -endobj -420 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 140 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞŒÄ1ÐÞwXÜmq8îÎi”þɶÉ&/O|¿·MЇ٠…Íž(bÕ1‹¸Õ=’)í–æ2×,Èq¹ ¼R`ÎEPâÊä„*JUýSÓŽR4¸&9üµ@[ìQGé2»×'[Éõ€¡Ø ‘¶–Æ`¦d%Í<æ`!–ä+Àˆò -endstream -endobj -421 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 222 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞÄÄkoÁPàŸ³˜ÈL&–Y‹[]K¯Šº¶³_c¬ª‡®úO½ç´Žó¡>Iž<¦ÿcúKÃ_šÇo3˜1'fÞL½9˜€ÿÙ›êÀŒˆ¡;W8èýèØPÙ€LHH HQô -ºÞQ:!¹åÈm¢éH ± Õwâ™ÀÙ"gÃBÕjv¯rVÞRÝãkËŠÀâ V‡Ê3rV›úÄZì«I}0Þ7 *ÃHoê‘ÞÖÑRkŽJ2^/^®ªQ‰ÛÄïc­îó¼ªFzz„“„Q -endstream -endobj -422 0 obj -<< -/BitsPerSample 8 -/Decode [ 0 1 0 1 0 1] -/Domain [ 0 1] -/Encode [ 0 255] -/Filter /FlateDecode -/FunctionType 0 -/Length 163 -/Range [ 0 1 0 1 0 1] -/Size [ 256] ->> -stream -hÞŒÂUÂ@À½ÿ'îîZo)ÅÝ]C8 %lyo“–0b<Éïúû~‡ªÓTPùŠ^ìKg(¢ÂÉá‘É£ÜÝÃúÝÂZÝ kXYÁ2¾„¥,Ι…ŸÚÏM`vŒŽèŒyÓìÔíÓÉ3Ñ…ñŒµa´…t„nÂnm¼5›Õª?ê“Q‰x­ˆû›§]fîó%Àߎt -endstream -endobj -218 0 obj -<< -/Type /XObject -/Subtype /Image -/Width 1600 -/Height 1600 -/BitsPerComponent 8 -/ColorSpace /DeviceRGB -/SMask 423 0 R -/Length 425911 -/Filter /FlateDecode ->> -stream -xÚìÝ×r[iš&ê¾á}:gs!;f2EÐ{cw½7)eVÚª,“ÕÚë_ –Êž=SÓ]Uý<±€ E‚ÔÉß÷þÿò/ÿ`þò—¿t>üå—?$wþõ_ÿÕ›À˜ŸþùßúÐçÿ‹¯ðû?üÁÛÀÿ¡_~ù¥óáŸþôç“Ó³|±\ªT_^__?~sr~™)KÕãúÙÅéÅe©Z+”*¹b)º-”+År5ºÊÕÚÅÕõÉùE©v|z~ññÓ7?üøãúÎ^ôúŸ>y“ø÷úþûï;þî»ï qõüþåøä4_,G·Ñ3ÙB)W*çË•p•¢«\(W¢çË+«\­•«Ç¥J½\m\¥J­z|R?;?=¿¸x¼{x¼¸ºn k}úæ[ï?¿éÛß}׺ÿùóçúÙyõ¸~|rv}wŸ/UJ•ÚQ®˜-–òÅr®PÊÆW&_Ìä -‡Ùüa&ÉÄ·ÑãpŽr…裙B1[(GŸ&²*µJ­^©Ä·õR5úòg—W7§§gúÓŸ’ýîþÁ¯€È_ÿú××]K|W×¹Réêú¦T9®Ôê™|é0WŒ£ªä*fó{GÙ݃£í½ƒ­Ý½ÍÝÍíÝíÝõ­íµÍ­Öµ¾µµ±µ}(ºvöv÷3Ùès³…b¾‚¬rí¸z|]•ãz¹V¯ŸœÝ=<Öê§ß|ú&ùN^^_ý‚þËúõ×_;~úæÛl¾T?=/U åJ¶P:ÊC`•+æ -™ìÞaf{ï`sgoc{guckem}qem~yynaq~a)º]X˜¯¹ùè6zr~qiaqyqyuie5zýúæÖæÖÎÖîÞîÁáA&—É7‚¬J­^­ŸFW¹ƽÎ/¯Î.¯Z…?ýô“_ÀúóŸ;~÷Ãw…r¹R;®ÕO³…r®PNb«£|ˆ­ö²»û‡[;ûk[Û+k‹««óK˳ó S³sS33ÓÓã“SÑ5619699_Ñýñäšœš˜šžœž™š™®™Ù¹¹…Å…¥å¥•ÕÕõõÍííݽ½Ã££\>_,‡븑bEwêgç—×—W×É7yy}ëðÏíçŸî|øÓO?TÂœUµZ?ÍËѺªòÅ£¸Ìjÿ(»³¸µ»·¾µ½²¾±¸¼:»°8=7?1==619:>12>>266<]£C#Ñ5ÝGWxfl$ºÆƣ׌†kblbb|brbrjrzvjfnvn~~aqqy%™ÈÚÞÙÛ;8:Êæó¥r©o†ë¤R;99;¿¸¾I±Æ&߆À?ìZ¾{x~_«ŸÊ•rí8_ªdÓV!¶:Èäö3;û‡›;{k›ÛKkë Ë+s ‹S³sSÓ£#cãC#£ƒ##ƒÃÃCÃCéÁ¡pg(º38и?}tphxh8„ZIœ5:>]ã‘©É©é0‹5f±æ—–—W×V×7×·wvöö2ÑwR,W˵z-ÄJ®“³‹Ÿ ]^?úüø±»3êêê¦V?Í—ªùR%º ÝVùÂQ.‰­òû!¶ÚßØÞ]ÝØZZ[[XZ‰7gãØjrdllh4ÄVCÃé8³J ¤ÒáL'wÃýèvh°•e  †k4ÌbMLÄ#XÓÓ³s3sós K‹Ë+!¿ZÛ\ßÚÞÜÚÙÞÝ‹¾“0ˆU,—à V²KÝžÔOÏnn墹TÀ?œï¾ÿ¡óá÷?üX«Ÿ+µ£|1_¬dBlÕØ<ÈävŽvö÷ãi«­¥ÕµùÅå™ùùÉ™™ñ©©0m5:64:2ÄVCCqT5b«ô@*¤ÂÆ¢Ûf–5DX!Å -#X#££qx5>199=Z°æC ÖâÊêÊúÆÆæÖÖöîÎîÞöÎÞîþá^t†]Â\±\ -X'ÕúY˜ÂŠ)<=¿H~®«uXÿ`~÷»ïZ÷?þ\©ÕKql•+–ÓVù8¶:Êímï…i«Plµº:·¸437?9=3>95:>1<6–‡[Ñ•Š§­RÀªëêûÌ@H´sYƒñ.áÈPˆ¯&&&'§¦g’±«¥•µµÍ­í­ÝýýãÃLö(—Ïä -™ø”ÃãìÁaæ(“¾íøh“êÉYÒˆU®Ÿ]^%?ãÍݽ_:Àß¹¿þõ¯w­‡Ÿ?cKÕã£\1[(e Å0m•/$}ìáÁõ­ÕõÍÅ•[MÏÎÅ}ìS#cãÃccaCp8µJ’«ff•î©úš±Uóú2×J')ÖÐÐP’_…É«ÙÙ¹…pøàêÚúæöÖÎîîÞÁáQ6—/K•R¥Z©W«õèN1´r3ÙÂQ6ŸÉ ч¹„gÑ•DX­á«ÖF!Wþò—¿ä -ÕÖÃÏŸ?—ÊÕb¹§UÅ°$Š­ò™üÞav÷ îcOŽ\Y }ì3³ÓI±Õøðh3¶llƱÕÀ—sVÉ•„Wý©Tt§/ºM¥Ã•NÅOväWƒù«‘PÞ>>>9ý£Ñ?½°´²²¶±µ«L6_ˆ{®Žë§'§ç§§ççW§gÑýj­ž/–3¹B˜Ë*‹•j˜ÂŠ#¬êñi¹v|}sçÏàïÍ~ù¥óáçý\?;+–«™\ñ(_Ê„i«Âa®pÍ…i«ýƒÍݵÍí•øÁ™ù…[MMŽOıUGû@{ÔêËÝÀþîð*‰­¢û½©èJõ†+ºM7‚¬TªµH}ÍÁÁ¡¸üj|rr&´^-­¬®onîììîf²ùb)„W'ggç—W×·×·÷w÷·w×7wçWõÓóèGˆ .Ì’•ÊµPur]•ÚIô‰I„e‹à?ÝÏ?ÿÜùðåÓ§úéY±\Éä“õÀ¸=_8Ìäö2;{›»!¶ZZ]Ÿ_Zž™[ÅVqûðØøÐèh£=^ŒK×~sΪsU0 ¦úQÕo\=ý©Þþ$Ëj¶`…ðj(º†GÆFÆÆ'B÷ÕÜÂÒòêúæöN8d0[ˆ~‚Úqô“œ_†äêáéééýãóû§çOïïoîNÏ/Ë•ã\¡”‰[¼J•äDÂFV©R»½ˆÞ³XÿY~úé§Öý—×Ç'aÚê(—oÄVùÂQ¶pp”Û=<ÚÚ }ì«›K+qlŽœŸœ ÇŽŒ¦‡‡šg¦»+­úkU°X…9«Æ’`ˆªú[Wtõ„ÛTr§§/ºm¼²ñÒƒƒƒÃ#ãc“Ó!¾š_\ -ÕWÛ{‡™\¡T‰7ÏÎ//¯nnžŸžß??¿„ëîñêú¶ÿÈÑ‹³ùR>Ôd‡³“«vR,×’ -¬ÓóK-ÿ·}÷Ý÷­ûáÁãz±R}ýø±Z¯—kÇ™Üa®ÐŽ­2¹ÝƒÃ­Ý½íÕ¥ÕµäÁ‰Ö1‚£cC##ƒ¡‰}(=0ô¿ÞLB§f™U:Y lŒW5ÒªxÎ*µ -iUtÛ—dV+ùhòú¤+úÃáƒÃñøÕd8y0ì®5°Ž2ù`ÕNê'ç—×W7ww÷I~õôüá9La=ßÞ=DªŸäKåL¾˜Í—ŠåJ¥VoFX'åj½T=>»hœHøcGÜÀßD8@ð¾Ýàôùóçb¹r-¼¼¾–kÇ!¶ÊæW!³Ú?Êîmíî­on/¯o,­¬Í-„c'§gÆ&§FÆ'†GB±ÕàðH8ÝFßöàðHhrŸŠ·ÃáÆÖÎöÎþQ|a¥Z¯ŸžŸ_^_]ßÞ?<==½W_Ãá󇻇§ë›»“Ó‹rå8"¬ø,Âj­Z?il†ë¸X®^^Ûøÿ÷ý?t>¼¸¾¬ÕÏr…R¡RÍ—+‡™\ÒÊ~˜Éïe:ŽÜ\Z]›_\Žc«™±‰É‘±ñ¡Fl5ÇVƒ¿=jÕž}j/ñ%V­ÀªyõwOX5î¿ë£ªþþwoÛ®:{®’ÅÃŽó -;J´’‡]1Zc‘0™Šó«±‰‰‰é™™ù…ÅåÕÕµÍÍ­½$Á*×jõÓ“ÓpáÝýãC(rÿðþÃëû—×VÖåÕíqý¬X®fòÅL¾T(Wʵã8¿ja…-ÂÇÇ°?xquãïào¿û®óáÅåUµ~’/–sÅR¡T=Ìæ²ù0p•Éífv·w÷7¶Blµ¸²Žœ››HŽŽÏl–±§š­V­˜¨#;J½¹ZG62«°î×_eVÍÌ*™³êmµ²Ç¯L¦­£Véd°¹Ø1âõ›ç¶¶ãï­¿Ñå>808<42:2>>>99=ŠÜ—–W“¬FVåøøäüìüòúæîîþññ9Œ`}ø¶£;O¡ëüâªZ;)”*™|!zWã-“8¿J¶Ë•ZµY„õý?ú›ˆ|úöÛ·Ï/¯…R¥P -MMùR9#'Wñ´ÕÎþÁÖÎÞúæörÜÇ>·°8=;71==:19œ[ ‡Øj`0õ&¶jÎV½‰ªzš;}­å¾/Vûº÷ÛÕ»Ö“½½ïš¯OŠÜ“ ®d+0©dïkDR鮪övËV£q+yeç)‡I~•"Œ¬•Õõxëð(z³JÕêñÉÉÙÅÅåõí]{ëÃK#Âzx|}swzvQ®ç -aû2z{KÕãjý´ÖÜ",UkåjíìüÊŸ%À¯¿þÚùð»ïÈJÅJ5./f’Ø*>Cpï0³ŽÜ[ ±ÕúÂÒò\|ŒàÄÔT\l56ÇVaÔj0‰­‚öPSóÜÀ7}V}CûC„•êoPuMXõô¶c«ø™ÞžVŠÕÛÝÐÞ×ßZ9Lö{SíõÀFçU:ÝÓ˜ÅêÚ[쬋ïOt‡%g¦BV\ä>2<2:>9553½ Ë+«ÉQ„{!ÁªTkÇ'gg¡Èýîîþéáé}a½|xù]Ïï_îž®®o£×ËÑû\ÊÂ`[¥V¯Õ[„åx‹°z|zys÷/a‹Pü—ó§?ÿ¹óáÿø—|±œ/U2…B&_HN15:>Š­†C±U|ýø±T©æKå8³ -×A6—L[íƱUÜǾ¶>¿¼<3b«pŒàÄÄÐHûÁ8³ê*¶jÆDñª¤Àª™/õwøÅ)½!³ê¸úš·w’8«ùéýýI{_{70ÕÞOl•´§Ú›ƒ}Ís3ZI0Õ|囃“/Õüh|ZâÀ@²E8<:6:¯ÎÎ…-µÍÍí°E˜É†"÷J­~v~'Xq~õþÃëË맗—a=<>ßÞ=D/¨Ä[„GùBØ"¬ÔšEX¡È=zX®ÖNÏ/üÝÿô~ÿ‡?t>||z_«Ÿä ¥£\3¶Ê„%Á½æ1‚ëqûÒÊÚÜâòÌÜ|ècŸˆûØG’i«¡ô@˜¶Jw Ø,³J'MéÉ(TÒj•ŒWµìïê³êéíkM[ýÆÕÓÛøP{I°?ú”0g•nPØŸêJ¾‡ds°^õ6ç¬Z“:¬$pëíÚìèÂêììj>Ó(rŽÞŠè If°fç–W×ÖÖ7·w÷³ùb£ê'¡Çýúöþ¾Õ‚õúñåõSk‹ðúæ®~z^*W³…R6_Ê—*Ñ'Uê§q„uRŽ#¬êñÉéùeô[;»°Eü³ùþ‡:>Ü?Ÿœe ¥ÃLî(Wˆ®dÔ*ô±nîì®om¯ll„Øji9ô±OMŽO…b«á¸Øj`ð7F­šqPïÛCû;«îöö$Uo{°ª'N«’̪u¿Qo•ÔaõÇ{‚í´—õ§;§°:oÛÑVëÌÁö€VwNÕñC}y"aR¥•üà©Á¤Ë=œE866>95=7·¸´²¼º¾±µ½»p”ÍK•Z\ä~ŠÜŸž›+„!¿ -]îÏîî/.¯ããC„U(ÂaçY„õP§U?½¾¹ÿ—/Ž†øçðôü¾T­åK•ý£ìQ6]‡ñ´ÕîáÑî~ˆ­Ö6·VÖ6WVgç§fgÇCl51<:Þ,¶L77ûÚ£VéÎöö1‚É„U#ª -ƒR=½íöwëqBõuOOóaOûùäN£ÿ*9L0þûÓz«/NìKun,6J®úš6WSÓYí¬s¥Û‡¦ZÛ…éö‡RÍŸ=)ÂJŽŒ$g†+.r3Xû‡¹|±T®Öã"÷ë›»û`%~|}ýôòúéý‡—ǧ÷7·a‹°\­ÅùU1W EXÕÖáq=úP¹V»¼¹ýüù³?fàÝï:æs¾ûþûrµ–/–÷³‡Ù|ëÁÝÃÐÇÞŒ­ÖVVfBl¦­&&†ÇƆšÅVéä¾ölRg{²˜ŒWõ·Û¨z: -ìéÚ -ì눭âäªU5«ö‹“ Á¤ÛªF…!«þŽn«8žêêlOwµZµìkæ]½éÎÙ­T_ÇÌU£¤=Ý>²°dµï¤:±¢Çƒé¡áÁ¡páØøädX"\Z]ÛXÛ=XGÙ\!‰¢NÎ/.¯ooÛ#X¯¯ŸšÖëýãóõõÝÉÙE©\ÍËÙ|±PNŠÜOk'a‹°R;‰{±¢gN¢_ëåõ¿s௿þZ­×[þù÷ùråÿùoÿý»ï¿?Êå‹•êþaæ ›kÅV;‡Ûûûqlµ¼¶±°¼23¿0úاFÆLJGÇ´U8C0ÄV¡¥<ÝÞÈë:40I®’̪¯«†=©±êù2°êm¦Uä*\á«žž¯{Þ¶‡ ®Îñª8.k}õu¨³öªãTÁö0U{y°=µ>+•nÏSµ·¿8y°^ ôw­6Ò¢w,zßFFÇFÇ'ÂáìüüâÊêz`í…"÷Jõøøôôìâ*,>==½ÿáååµ1‚Õ*º¼º©ÕOó¥_EŸÔ<‹ð49‹0úÑ:=¿¸¹»÷—üûÃ/¿t=üã*ÕZ©R{~ÿ!W*çŠåƒ£ìa¦±!¸w˜ÙÙ?ÚÚÛßØÚ]]ß\Z]›_Zžž[ˆûØãb«áÑáḽ‘Yu5–7¡PÅ£V½q {oRoÕÙÁ×°÷´ç©B6•ÄSÍû½ïšVû£½}_GWOO¼cØŸDd9U;têM½-ÚJâ¦Þt×+Û' ¦åíÉÞî«=HÖªºjJØqaû¤Âæùƒ©ôÛ“ -£ûé8Ÿœ™[XXZ^[ßØÚŠ" 5Xq{(r¿¹{Eîͬa -ëÃËëSR„uqU®ÕóÅJ(rëßÃáÉYåä4z¾\=.Vj×·w¶€¿O?ýüsçÃÏŸ?WŽOŽ²…³‹Ër¥–É÷3ÙƒL.¹vvö·v÷×·vVÖ7Blµ¸<Ý8Fprxtlhd4ÞŒc«î¸¦7înboÍY¥ZsVñ†`ÿ»¸Û*¯jïýµ¢ª¯›!Õ×­ûïÂ’à×½ñðUò‰qYVo2mÕ:µ°ÕÊÞ1pÕ<а¿™AuœuØ1‚ÕÛ9g•êhµJwD[éf}Vêm={gx•êx¦ïËgâo©?Y!Š‹ÜÇÇ&&¦ffæ–VB‚µŠÜ£ßM©Z­œF¿ª«ÛÛ»ÇÇÇ­¬×ß$[„Oï¯oîONÏK•Z6_ÌŠùr¥\=®¶Ï" [„¡Oëü"úxýôÉ -àïÄ?þغÿùóçúÉi©® -åj&W88Êåâ ÁdÚê ÄV›ÛË¡}mnqyjn>ô±ÇÓV3ãQ«ö‚Í­ºäÜÀø8¿$ªj^ñÃd=°±å×׺ŸÄV­‘ªž¯Þõt_½ë -²z¾ŠÇ®ZÓVóT]û‰i«þFRÔ—~sæ`xYó›O¿™Ôêx>Õß}Nbkj«+°J½Í¯š™^£û+z7Ú»„©V•êk”` †khxdl<Ù"Œ{°–WÖÖ·â"÷l®P*׎ëgçW¡Èýþ))ryýôñÓ7¯¿IŽ#¼|ºº¾­ŸœË•d‹°ÐÚ"Œ®ãÓrµ^(U¢/“üIüå×_ýïþ}÷ÃOÎ*µz¡R)Vª¹Biÿ0»”mô±mïlîì­mn¯¬m.,¯Î-.MÍÎOM„cÇCûp[õ‡JövÏy2a•4¥‡û©VŸU³}=nµêéL«ÂÜTs€ª9[õUgBõ®§{ò*Ž°’b«f·Uo*¾íolç5쌳ڋ~ýéT_{O0Õ×µáبÆêmµ`µ¢ªÖ`ãe©®’«Tû£_ö·÷wZµ_“J´¶›3]©èÉtœ_ ÇEX¡kaiy5Ì`mïîÆMîÕZýäìââêæöîáá1¹‡¬ß$VráýÃÓÙùUõø¤P,grÅ\±R -#X'I„U©”ã"¬‹«ëèO"z™ÿ&À¼Î#•J­V?É—*ùb9ºÝ‹3«ƒ£·±ÕòÚzÜǾ853›ÄVñ†`~ú6ºâëããÓû›»û“³‹r¼EÎ",%[„'a‹ð8Ž°*µb¥zÿøýyDŸî¿ ðãã§o:㌢‡ùR¥5jÕˆ­öö7¶wV7¶–W×––g'gfÂ1‚cãCq{ȬÂ1‚ƒ±UÒÁžDUoª×ãÝÀ0aÕÛÏJõôöuVZ5K×iÕW­Jöw_N[%O6Œ¿xÇV`#¿êéK½­ºjdY©f‡UÇÁ‚qNÕÿ&°Ju­ v'WÍ1­TG±UsÞ¬>¥ºâ©¾tª«Ý½{ý°c£°u tN8Œ` …)¬‘Ñáѱ‰©é™¹ùxksk{÷à0“‹~‘ÕúÉÉùÅåõÍí}2‚õ!ÁúôéÛñÖ‡—×ǧç«ëÛãŽ-Âb9Ù"< #XÇ'Ñýèo£V?MŠÜÿø§?ùïü_ò׿þµVïZ»¼¹ÍÄÕQ6ŸÍ—öã9«½è:ÌìníîűÕæR(¶Zšž›Ÿœž‹­Æ‡GBx28”N¦“E©þÖÑ­Ì*.KïÚ l¬†*õFNÕȬތW½]üê·>lõ%eïÍÓq¯Ö–b{øª'ž¤jÏb5㬞þfVº=—Õ÷&°ênkïO쬱jEX]§¦Óý_Ldõu¯ -¶Û#X©ö°V«¾¿ë˜ÂT¼T8½ÿƒƒá,Âáá‰É©Éé™ù…Å啵ͭÝd«EŠÜoÂÖã‡/_>~ó1‰°âEÂ÷ïÃáùÅuíø$_,góÅ\±\¬Ô*µæáqØ"ŒþH¢¯ýÍììú¯üÍýòÇ?v>¼½»ÏŠùR¨<:Ì’Q«½ÃLÜÇb«õíøÁ•µ¹¥[MLMŽ‡>ö$¶ -ÅVI{È^šéPk1°ÙÁþ®yh`#³Š'¬z¢+~·T%·]‚_ÅÕW_Üïš¼Š#¯VÓ{Fµ¶ÓñT˜³êë;|Õ×ÕyÕ( -·éÔ›…Á®†«ts4+ ²Òo¨¾Ž£¯ýÔÿïÿøÑ7ßU{•j e½I®:ÿ•VŠÕ×nÁêªÀJ†Çâ'Ò¡kxt¬µEØ(rßÙÝ;<Êä ¥J«Èýþþáéùùåå%DøñÓ7Ÿ¾ùÝÇOß~xýôôüáöîáôü²\=ÎJI¤Y®6‹Ü맕j½T=Ž¾Ôýãcô÷óüáÅÿ)àoâçŸßùðéýû|±r”Ëå -‡ÙüA&¿wØÚ<ØÜÝ[ß -±ÕâJÒÇ>7>9¦­FLJ‡;úØ[uL2öž7GvÌYuž˜lù5ÊÕ¿8"°k0nµŠÓªÞîY¬[õÆ' †•ÀÆ¿ÞYf•Nf®zZ íͶöŽÓ½]'ö÷u,6«ô“W­þöds0Ý]áÞ.ÑJE?ãWïÞõ§Òã“Sû‡GóKË}9ÕoMvõ§_3YìlÍJ5·»w Õîé_…)¬¡ÑÑᑱ±‰É°D¸°¸¸¼²¾¹µ³·Ɇ«z|F°noâ"÷páËÇ_5‹°>¼¼>Ä[„õÓóR¼Cš+” -åj9Ù"<9‹¾@9Þ",UëÉá/¿üÑÿ/àÛ?üØùðêö¶T­eóGñ´Õ~6—ŒZíí„>öÝpŒàúÆüòÊl#¶š› ÓVI{ÈOú:–ïÚìñœU{C°³Éª§«Ïê뎫¯Þ½ûú]÷ÀUôL³ý«fíUã0Á°$ý+ýÍ)¯F{o1j°–VVÃI„»ûGÙ\1)r#Xwq‘ûû/_?~úôéÛOß|›ta½ÿðzÿðtyuS;>-„-ÂR¾X.U»¶£‡áK„Ô¯SCþ£ÿ^ßÿðCçÃÓ‹‹j­~ÉfóaÚ*.cOb«í½ýÍÝÕÍ­åµ…åÕÙ…pŒ`èco#8Z%c?±O2ïô®9aVI¾ôÿ±÷Þ=Ž¬i–ß|;}‚ýO @$@ÀJ€VÒB A°4ÓÝ·Í­[™IŽÞ{Aï½Iï½wUu«îížÒëâ7˜ug´ØÙÙéîç À ƒA2È$ÀÎ9dÍ tq`µâž"xÊ -:§"+l‹ µp¨U²Ë¼†ÝbhA*î¿¢<¶o‰õVBHPYi¾2¡–X]eÕRÙïŽiYbRpXc+YŽ&z¥6œLŽOŽO&³y½ÕBK*‹+Õ%³ÀJ²[Q&½>øæL/_á°KQp„PóP~…‘h"Ij°ÊF…y°ÁâEî'Ä‚u}‹[°îîïînoﯯoÏÏ/ŽO·¶÷&ÓEo0îô‡ƒ1E¸ÉºÜ§ tœÑdvxŒS„´ @ @ èÕÃã£xõðèdºX¶º8ØìôI{§ÑîÔp{£dT‹º‘-SÙ\<•ŽÄÄmò˜Ø -ÏT5ÙŒÝq“•´ò€ŒV¹¹±Êíp¹Wš¬&¤Z7W¬&vV B³ØÊÌZÜŒù¯XE¼u¹*‰‘@mq ŧ -º1lH¬Y–¥Jyì¬uYìÂ"‡]Ûp ÇÆF­>ž/OÎŽOÏdzyµÙªÔëåJ%_. #›Ï×ê tÞdB¤Åì̸¥¬b««Õ7-X²Ù-r?;¿¼º¾¹Æ,¯h—ûÕõÉ).š/6£Io0îè,BÚå¾5™Q„5›Î—ð?@ @ è—tvqÉ×oîn[Ý^§?$تGÝVu\lÕ2ª’QÉËÙB1™!ccñ@8ì låñ²>v3 -'`+™•YQÕ`µÂn+7/³€•93+f¸â—B±w[‘ v[9M?•Ëæª2Û®„í"ÂbÅìBÐLÊ’˜”-„%¢-÷Jñ»¢Èü&¶…% -Ñ×NtðD*Uk´æ›ÛÇxŽßÍd>ÇÀª\.U*]/”Jùb1™Jûƒ!tby6PV’ÙÓÎòØge6\ñ’+»óŠb+ê¹Òdk7̲T—8è0 -àa,k°Šår¥RŬþp<ž¢ç¾³³wpxtrrv~qqùµ`Ý?ÞÝ=Ð"¬£ã³­­=sá¨?ä)BR„5[Ž&óñl¾¹³>ËmH‚@ @ Âúñ³mÜÛåÕu»ßïö‡µf+²àb+ÜÇ^'}ìzšŒ$Ø*…¼ æc3)ý`ž"EvSl% &+·$>+nµÚ ÐIÀPvl%.a9œëç†Íš…-X¬ÛJ–y§¯®bWY=»ì2ç º8¹býWª'¤œJ•,–m ½¯ÉŽîªw6a—J…¬ÂÝ =aŠ­êÍöæÎîñÙÅùÕÍl±Ä«b±hÅr¹¤ë¹B!±U[êã.[»"\ -y@‰Íd¤KQWw“ìPKa,› K#F/téñùýP0ÄfæIŠ°ÖhuºƒÑxŠ=XÛ»ûGÇ'gç,ExÇøÕý#ZAWqŠð¤±kÔŒ‡ã)AXKlÁZ,'d!ZöѧñåõþCA @ úkÓ«œ]\V­›»»ó‹ËÁxÒêö ¶¢V«N½Ù®ÔéA#W,¥sùD:ccÃ[©[1â¦=ÉJ®˜¬œ´ÒŠu[ V+ž4™ÕºY½YÝr¸Ü.¬„®u«}w[‰ì"°r±J+k;ÛÍôP±CIÌ@åâ—fZ&-À%³Ž,‰Y­¬utЭ‰TºÑê,¶wNÎ/Î/¯æËÍ"AUŲ^4Œ|¹œÍ’éT §T’ÅI…2ŸW¸¯„>ö•iƒt»ÂYÖjxPç*or…ŠªáY„$HèñúýÁP8JFæÁªâQ„؃5™-7··i‘û)+r§üêž ¬›Û»Ë«›Ó³ ´Ë|±9O{}‚°&S<‹pÉfŽ'óÑt>[nÑè&¸°@ @ úëÐÊÁË«›áxºµ³»»0šÌšn­Ùæت†{ÂÄmE±#˜ Ebþ`˜[y¼ÄmŘ šÁ@É)¹MråJ”\Ѻ*‡5(еj¯øÕú[ u[1³–ÛeZ­L'•e¾bPKQÞîc% -Zeµ`™5ï´Ý] Jö)¿r‰ í4c( ‰Br™LgZÞbsçäìâôür±µS2*é|!_.qHç1ã©T0Fç–VÇËB‡•$œÏ4»ß%¡’],¿’ìµWÊ/Œ#ü&¿âó q•™ÇƒÞz:‹¤38E¨‚Õê †¸}k÷¸Ÿž]œ_\ñ,š"¼&)Âãã³í½ÉlÙÇ-X£þh2šÎ'ó%™Eˆ-Xè39žÍgËÍo~zA @ ý…IüíÿóN¦³ÅætŽSZ [µ¨áª]m6+µF¹R+”õl¡”ÊåãéL$žE£þPÈãó«^/ícgØŠZ•x »[bäÊå6ãÄd%¬ã*u[û7ŒUëÇ73ƒ¶=].ü €âmêX¹WüWœJÙ‘½¯K¶u¹[EîbGÁG.ûŒ#©ªPä®Ú—$‡"ÑV··ØÜ>9»<9;_nmÕZ*›É•Š…r9_*eóùD*å ðñÉë’VúØí í«áAÕb¸RÞ®Xv,+<ÈvÐ${ûÿ•ö6Wˆ]X<‹Ð ÑX"I‹Üõ -¶`µ»ýÑxºŠÜ/.¯®®ñ »»‡{⺽{@[Î/®N6·wÑþ]bÁàá‚X°¶°kºŽ§£élgoþ…A @ úK•8Cðëׯ½áˆZÐJ§?¬6[µ+¶Â}ìµ –L¡˜ÊäbÉt$'cC^¿ŸÎ¹Ã(Ãôÿ0ÿ’d„Š_ºÝÂÜ@†­¼qÝõJ+Üd%®B±ìŒ‹¤±¿‹V² +Ú²ÅA“e¸’ÕÐså2ƒ„Ì:%É.^Øάˆ“•7íÂDÂÕÚ+Åúa}ýôìbkkgºXµZ2“)”J%Ý(”Ê™\>žLbl¥ªè¤¹ÍÈ¡e²˜o‰·Ø””íYBÑ7¥˜¨J±u^io«Ý¿5‹Ð¼IQ!Ä,×çñùÁP$O$Ó™l½"£Zk¶»½Áh:[.·vwwq‘;zá—××·wwwO÷O··÷W׷覽ý£Årk8š¢dw8MfÄ‚ÅŠÜÇÓ9­Ôúøãè3¼½ @ @ ¿ýôóÏõF[ÄVMܬ=™Ìí^¿;ÀØ -Ç[íZ“a«’QÁn+ÒÇO¥ÉÁˆ/ôø|v[iÜ´#[™äÊ^iűՆ½PÝš(x¨D`E.ëßö\9yöÐbh&{=»lï¼R«çJʯØÝU—©Dðå6»°$åÛíÖFóà¯p1÷kIr$ûôé“^©d‹EtY6*F­Vk4‚‘ˆƒc+X¹{¥•*B-e% ø–\É«W5yµðÊüÖvme_*hwŒ°<^Ÿ×ðƒÁp#¬T:‡‹»*Õz³Ýé†x~àÖÎ-r?;¿¼º¾¹½½¿»¸Àü -»°nï/¯nЭÛ;{ÓÙ²?wúCš"œZ §GÓÙl±ùÉ‚@ @ úóÒŸþô'ôK_ÄVýá¨ÝëOæ‹F»ÓíSlզ؊ô±×KF%_*gòÔm• -ÇâAŒ­/#èáÅVtz ŽÒ2v[Ñ&+‡™ ´ç/e]ën²rñœ -0è ÕXä°[¹Lo•õd^lżX.^?e 9›"Þ*™×°³©‚–wK;øE ’ã«bðP_ÒáWF¥ŠÄ¸wK2Gò’+[`P1ù˜@®,EUÊjNP^ÙÙÞ|…¯jš9jP[é¿âóÍÝ4r|̯4¯×ëóûAìÁR„¤ ÞЧ‘¦ONNÏ//¯i åWOw÷h Kní ý{ƒQ·?Â)ÂÙ‚ð+’"œ-†cÜ©µx ÿæ @ ý9êÓ§OâÕ¯_¿Nç‹n8žÎZÝZh·¶Z5[U2F°P6rÅr&WH¦³Q:F0„‚[ÑÙv¤EŠ–±‹ñ@«ÛÊF«Ä‚¬Yýñ@ $—Äp…)Ù²á°vÃÇ1ÝV.‰r3…ó+%YŸ·f hËJºíùA+!ÈÊÛÕ•æ+·,ú¯xÒ³&tBpû–,“{À©€‰–yM’•ó‹«ýÃÃt6[®TË•JQ7¢ñ¤æõQ„%[­ìŠUÕ.v³›ÉA¡Å]kÛŪvÙ-Ô,~¥Y£•U—&.nÁz-Ä\‹Z°Ð…ñ,ÂD*›+”t£Rk´Úô3HŠÜÑ >:,XÌ‚õðD‹°ÐMûGt!º[o0Æ)B†°XŠp4ÁZ‡G'èC¾ uX @ ýêëׯ»ûÞ Ý´zýV·Ç­VÕF«Ro–1¶ÒsÅr:—§ÒxŒ`4æÇÅV’ôPRÁš ¸ÛŠ¢*Z9ÅÓgµ±J®ìÀŠ˜¬L«•ƒ{®ÖÍØ I´èvt')¶"=ð”;1x%Ó¢u—" )X1”Â+°LÜÄLVì.+Un[“•ìV,¢å¶›²Äø!zzè £ÇE§.–LVëùb©hIµ8Pjq€†Îg*“yyýÐêv3ùBÙ¨êÕj¾X -†#è-°u^ AÖa¥ØXªUÕ.+¿!ä&®ÕEùÅØ ˜+T¬ÖwîÑÂ-X‚©¯æñb~ V÷`Š%ݨ£Ï_§?Mç‹Íí}š"¼,XÏ´ëæöáòêæäô|wï`:Ç)ÂÞ`ÜŽ‡¬kkJ,X£Él8ž.·vŽ/oÐþáñþëA @ ú«>ˆW›Ûèw}»ÛïôúÍN×^lU/Wªù’‘+–RÙ\"• ÇÁHÔ yü~;¶Â”Ɖaè6ÉSVŸ•S°W¹\ë¼ÆÊi¨¬ÀÊòY±KƯÖo®èhB7¶x™©@;¡¢üGR\bb\K6reYªÐŠj¿—b‡]f;¸ÖdA(+¸ƒK’ü¡P"•n¶»›Û»G'g;û‡Ë­-_ ¨y}B[»ê~òø -z¥ÃÑøîþ!_*u½dåj5™ÉúüYÕÜf<¿—ˆ­d³Œ}µ³Ì[ÄEnÑyµ‚¶¬,å)Âçš+¬‹Ú·Ð¢z<šÇ‹^»7€g†Â‘(NæóÅ2®Ájµ;½Áx:_¢“µwptŒ-X—W7×7w´ëá/w÷7w÷—×Ç'g›[»£É¬;uz¸k<›3 žE8dzgó‹«+ø@ @ è_¦ŸžÄ«óåÖh:«·:$$دfU# A£Ö(Øm•-S9\l‰“>ö`Èã£c5YÕ$^%öYao•ÛáGºÞXY­VëÄXÅÛ«(­¢‚±•Ùs…EZI*¬žN6’ƒf]¼hÁâX -¿jæþd73’Y Áo[1ácV_w^™a@‡ÛŠFÛÝþÎÞu -õ‡#Ü„ßhæ‹¥\±äõdÍãfrå*³ÈÐF½ —W»ûû©L¦\©–*•rµŽÇ5ŸÏ-˜¯Ü+óMîÄ«®h-<:Õhÿh<žÆh_ó«`}èé ±XÖ+µ:E8šÎѹ£ëìâò -§ïîH‹; ÞÞ?\]ÝœZ)ÂIg0ìqÖ”¦›ã)CXèÅ¢‡›Û[ø~@ @ è?¡®í¿ÍÇ“ùpvÙäN¿PºN ¯ìíëÔ|%†­öuI¸Êi5V™Syç•­ Ërg©ìàŠíVIUÿîûf»}s{W®V²Åb¡T.[ £làöR¥Z(ëÁHTÅEîªÛÞeY -¥Oè™L§—W…r§R«ÇÓÏÏœWŠ…Â8ÂBw\sl•Hê•úx6Û?:9;¿ÜÜÞm¶;ÍV»R¯ç -8¼GA¥UŸÅ[ÿp–òä Vt‹Êƒ„d¡Jfz¼>ßO‹ÜC‘h<™Êä -ø‰ÔÍVg0˜L¦‹Í­1Exƒ-XOOÏϤ‹¥·wöÇd!ZXŠpNR„‹åxºNfƒñôãGœ¢ýüå |W€@ @ ôÏ©ÏŸ?¯lÙÙ;hwi«U»ÙîXتÞ0jõ"v[•Ó¹B"a}ì¡74Çj˜{0@¤P«•ã›C¹r‰Õë|> S°Wfµ†Q¦Uk´nwa±!$èv3Z%Én³uÊŨhdOb Wf •lãZ„M9m¾,yÉVéº0gÐ%v°¯TZ t‹b%—ݬ%ÙZèäh~íþá.¦ÈÜÀ\¡P(•óå2:ÿØeTÐe._ôøüè´»„ƒ0~Å#„¦ –p$z}}³ØÜJårå ->‚Q­#QÍï7ýZÔ4…_#:“.IŠ'SÕzs2_ž]\míì6Ðç¡V7êõ"~2¥L.O&CáAd¶¦÷•z+Ës¥Ù& *ßðbar¥âÀ©Í—E‹°0ÑÒ0ÂÒ¼^?ài‘{"‰>˜¥²n 'ŒC„£ )rßÛ?<>==¿À)Â[Ú‚õøôŒÖÃÓýýãÍíz]ÇËÍíÑaááx:™óY„Ô‚5E—èÄ)kð½@ @ Ð??¹úúõëÁáq»Ûkv{µf«aÃVM½R+¸ŽŒÄ¡Hc+_@#ÅV -á ˜–H²ÙÄî^h›ˆÉ•5Ð)Ô­³b+'TÄp…6n8YHn7×Ù}7¶beìÒ -†’ÙUEy“Ê͵2só(áªEœTe±¬Õ«Ö¬@ó¾òŠ)‹‡ñ­ªö·¿úÛóós‡ô‡X"žÉå«õf8Í—JÝþ Ï•0¿ÂŽ¬D:£z¼b~PäWb—;ºDï‚Q©>>>µ:l¡X&üªP*ùA…Ì"DO —绥x2‰>³ÅÖéùåùåõöî^½Õ*W«z ·œQlK$}Á ‚ã‡VbQl¸"]îío[°¾4íU6Ìų„¦ ‹§ 5UõhŸÇçGO>‡ÂáX2•ÎäЫÒ+Uôä{¸k¾ )ÂãÓÓ³ :‹[°Ÿ)Âz||¾»¼¾¹E·îíNç›ýÑ„º°FÓåW4E8šÌÐM{8Ex}s_ @ ýÇÓÊ$ÁýƒnØhukÍ6fV-ƬŒZ'Ôt#[(¥²ùxc+:FPóÑb+‚­T•S â¶ról E®œß.cçëÖÄ@ÓRµFC‚4HÖMÿÕ/¼¢Gv8qH¢œÒj“ÃM’½q]2­V’tòžv±Ú×RÙ½U£n.ÑÖE”Ë4>QE·Óz(×`E½X˜/ ~-âþrÝÜÝæŠùl¡€Îü‡Í'^^^«µzQ׈QªTòÅR ¥ôI¬pwÙp¥[8®¨x½[;»Ç''%]§UZ•z#‰zô~Eâñf§3ožž_^\Ýîìí7ZíB©\®àÐb._Hg³±dÒÒ6~IùvU»¼ZÕ®ýò´AU±)ÛÎÔ©Eh•*$'M!,$ô‡Â¡p½ŠX"™Í‹¤«Õîö£él¹µ½··||rvN-XwÄ‚õˆ]XOO/¸ëîáòꆤ÷ƳEo0êöiŠp!Ì"¤küå ¿üãáË@ @ Z=??óõ¯_¿.¶v†“i¥Ñ¬6šæÁ6Z×1¶ªJz6_Les[ÅâÁpØ j>ŸŠÃažÀ'îaleO²â)’ Æÿ™©@¶…ºª¬«5“Pá«’}à -:6lQA6IPr)fÊO¬V’Ù©Îa”bk¾ZaPB –9”dÛ„A³‰a1‚¬¨ sd1jäüWd´Ÿ•.WèðA«,K±Ï"TÔ?¼ûþìì|0uÝþøù‹×çGgu¶XÞ?>Æ“Ézµ–Îå=¾€¬j.¡J‹åøè -«´Â‡EoA<™º»N&ÙB±dT -e½Ýíž_|ùòÓùÕÕÅõÍÎþa£ÕÊä è¡ år®PJçr‘xÜëpÎÆ£‚âtÂ`QÞ "¤üJlWôÓ¥jš-ÇÒü jOz|~´øIˆ0§3¹\¾¨WªÕZ£ÝéƳI’"wÁ‚õôôôB—‡‡§ÛÛûóËk´Ï&NNÙ,Âñt2³R„#’"Mfð}@ @ иl´j¹å Gúòe:[ 'S2=°%&Í>ö2#˜‹%ÓaŒ­"¾€‰­R`øEbØÊiV² MV®·MìëVBÐ>4P0V~åà+¤ØÊÁ& ®t[­ÖRñ†vòĬö*™b¢´eᬕ´ $‹ÉÅ›²x©»da+Ñsåð”d W²²Rr% ˜KRìÙCBœ¯÷_ÿÿz:ʉL>M$nï’é´›À¢ûûÇ­T.W2 Zc'U¯WÖ0M¢,ÓŽEá’•ïC :Ÿn÷þþ¡Ffâ­R©R«MfóF«ÎfóeŒ­2…B2›Äâ>@&È׳›SÅ…|"EL’Ý‹%™îŠÝv%‘ç)¯Ô[™+öáƒæ - `Y¶h‘»ªiš×çEÏ2†"ñ.r/¢t­Ñlw{ýÑdº\nn›EîW¸È"||~zÆüêñ‰¦ïÎÎ.÷öæ‹ÍᘤÅY„s:‹§w÷öé?×O?ýß6 @ ý{éOú“xõöö¶Ù鞟§óÞp„~ËWÍZ“+VlU­cvQÄØ*‘ÎÆ©p4î…½þ€FúØ)|0]C,!È2Zår‰ÝVtbà†Iœ,fµa¹ªL·³]ñlàš9OpÍ–t±I‚¸ÞJè°‚~n¾…Äy¿úêÁ7ÉA‹MÙ2†¢YËb\nEœNh>ºe'ss™Î4p10e%Í=Uîìæ⼡¢yþÿû_l.šm#Mg …íÝÝB±€!’¬dóù—×W£Z#ôÉЫÕ\¡†dM££ÅчÔ1Å!’LfªïÑñ :&Iê¤M '‹e=“Ï'R©h<á%E£µ`œPI&¿ç *ê*Î’…-+=íoc†<9(²)Ù;Hù©Y³Ž£ZÛ1¿òø|èCK‹°Â‘h"•Éæ‹¥²Q«7[ôÙŸÌHŠpÿàøý?\^]áI„l!FXÏ/Ï·wè´ÃÎîþd¶è Ç]2‹p4 ÖÖd†S„ƒñ¤?Ÿ¢1§Ç_; @ ýÿÔÅÕ_ÿôã§F«3£ì;½Á¨ÙéUêMjµ¢cËÕZQ¯äŠ¥L>ŸÌdcÉT( l¥z½Š‡´)–m c+Öme›!¸¾Rf%Î Ü}VæåVï¿á¼2S„æ×Úpâ"q³Œ]p@Ñ–x.9Ù¬C{u•¼âÑJÝ-Ó”lË Ú†¼AKu)¶ñ‚–WŠ̓žç†Ë)½%TBÛ•éì’ÝŠ˜:dÇ1ýZVkÖoÿð‡n¯ss—ËçòÅR§ÛG.—KQ7Ü®­­ëë›d&CF­–H¥Ñ;(³¨ *´¸«’µ(”e½__ÏärÏϯí6©·"ü -ÃÌB!‹ϘìF¯NÀV’™´1(ô(dÅ-p-ºÝ©4ž¤Íi -ÙG¤UÊ›:wji‚Ë â¿æÂòx4×ã¥Eî´Dãèddó…EHÖ|¹¹½³³xtrvvyyEB„¸ W`Q-º¸¼:<—Õ¯E¹µx)2ŽUzâÉT§×ß=8üñó—J£©y½,Z(sZezØ„ž«·ÍW+ýíèªÃå–5åõë/äËòíN÷ôìüûwï$EC{zýþÛ»ûùr™É0}ªTK•J8W½^ÞÖNø•õèfR&íýúúx2¹»¿×+•’nàƒèÆ`84ªuô´-¥XÙÀU{• t+‚#ke7ÕÖŽe/(V² îowàÍW4T(kæMh‹¦Ñ"wŒ°|~ D,X‘h<‰g–ð(Bœ"Ž¦ÓÅæÖîÞþ¶`]\^]ßÞ’!çWh¹xº¹½;=¿Ü;À)ÂþhÒŒ…áæt±¤)B´e¾¹Eÿõ>|ü_G @ ‰úôé“xõëׯÃá´ÙéΗ›MŒ­zvlU/Wª…²~Éã>vŒ­2FÐë÷“Æ$M1»’¨ÏÊaŸ!(N4›¬xT›¬6Ä®uj©²U²[‹cÍ6XU²ÓÇ"ÕU²@1få’„ôŸ"†þ̺uI¡I73(Û]XŠs%K¸Z%ÞÝ6¯p¥\]ñxЩK¤3½áxwÿðüòêäì|{g·?¡“ßêõƒá:«”q¹q±Ò‚,Óg¢¸S‹¡'Z®iÿ׿û?¯o®]òz&Ÿ+W*Ï/¯¿þî7²ªQ2fTª÷fŠ°bÔj™\!ŠàY„”)™µí’bKüÑ›œ$Exu}½Üܤ¬¢)V8÷øýd¼ w^Ù€BP[>È»°¾9‹Ð9Ô{•ö†h 9AMS4ÛhBñV|XÒè®y¼š×ç ýÁP ŠÄb¸ J°zýáx:›on ÖéÙùÅåõ +rg¬çç×ÇÇç»»‡«ëÛ“³‹mš"ŒÑ2ÇÓÅ„ ,2‹p>ij§»ûð@ @ ×Ëë«xõùÃ+nÛnwѯòv§ÏB‚6ú©Ž½V+Uª]ÏðÁX2‰'‚[·•W1±àá‚)Œ­Ü"°¢Ãm!AÇ*¹Z³›¬h6ðýúÆÚ:sXÙ£‚Œ\m8pG#ˆñsZž+Ó4%¦ÅævéU+½X¡âýíßè¹róžva¡[L’IQB‘H«ÓÝ=8<>;?:=ÛÞÝíôûél.•Ëe -…f»3˜L£q:“U½^~4ýTlj¡€³¬t¡Jn¿•.éåå% æ‹ÅH<öã?þá‡w@9% ­ìíퟜžfò…’a”Œ -ú Ä“)’"Ôl)BÅ–"¤  íóÃÚz¾PüðáS½Ù,–uš"¬Tk¾PHóù¨qKzC¢V®øé Èâ ³¢É²æõ’!†Š˜d»i6ƒÖ/-[£»fõbáwjÁÂü -·`Eb‰d:S(¢—U£k2/6wv÷OÎÎH îÁ¢-XO˜_Y)«›£ã“M’"ìS„5žŽ­Y„aMGÓùõÝ=ú\nmÃw@ þjõôò"^ýúõ+ú Þé Zº¬·:•z“Y­ê sŒ žÉRÙl4‰ûØlŒ =$hb"<@U²·5\¹°2“ t®™ÅV+>«5¬ޯ¯£Åj¸Zgû¼úØ× øŒv[ñZ*«ÃJvšlÊ)Ù“€’*äüŠ7Y¡VAÛÙ-¯·ìDZêß­·¯ÜB»¤¨•jõìâr¾Ül÷úä$çòå2Íî ­—Êp<í Gzµæõé£Xs -–Ŧ²q„²eвX“ªþÝw¿º¾¹nwÛEÃð‡‚?~þŒÞDÉ $:%)–H\]ߌ&ÓL¡€žC¹RE G4¯Ï^]e[±LYªöÃúÆ|±¼»¿ÏK‚•+•\©L>0^‰‘®o$W…oÝVx!~;$·${üþX<™ÎæzýA·?À…ðÊ*­â+ -WyS–jº¼¬é„šÆK´¸GKE‹Ç£2„ 1Š'É,BB°Ð¿Ì§þ–[Û@ŸœŸ_^_]ßÞÝ=°A„Ï/Ï/¯¸Ë§ïÏ/®öÑîè^Ý>›EH,X[Ä‚EŠ°Æx -Âzýð¾¯@ @ ôצçç[ ÇÓþhÜluÛÝ~£Õ%تY!}ì:íc/•3ùB2“&RáX<Çj”YQle†]ê³r½q[arµRÃNºª˜Já•ub²²®Þ¯[[Ì ¡E· -Ã=Z4¥È‰““’(IaJRœ&n²àÕêÌAÙf©RxúlWŠtJ&Å’¾eè2#„V×:¾´Ü\·‹'ŽêÍf*›-’ÀºLårÉL&W*æËåB /Ýþ ?·{ƒP4†N¾Ó-¹ßx«LÿuC±ä oÁB+è½ûïþûÿvÿ`O¯æs¥R4™¸|ŠÄ¢,c¨²6ûN·{}s‹S„@¡ô1ðãY„±zK¶˜n\ç0 -sÅ£Ý?=š-Xè’a]Ý }ÐÎãé¼7ÄEîýÑDLŽHŠp2[ Ãý NîÀ7@ þ‚…~I‹ØªÙéuÃF«SouÐnôË»­êÍ -#H±U:ËƆ¢1ÜÇîókŸ¢yÌ„ #è&äÊ´Z‰ÀÊeV² •Vk+ë¤zoæ×i*®Öß P‹–±Ó‘‚¤ØʹҾ.¦ù$Ëõ$ìcΔ9àâJ`SŠÝ…µrü•Ö,²ÑÍGJÂTA{Ç»[˜Kè2S~.‹;©·¤ù|[Û;óå2[, #_*÷ƒj½¡àþ%O"•*Wª%²]¯V{ƒÑp:+0äÄM& šÕ[ÊJxÐDXªöÝï7šLnïîS™L¡\ŒÝ^Ãé2ÍZ¡óœ-nnïºý>AXU$ô‚GXŠ$x±¬:w²ð,ÂÅææÓÓs*›EO[¯TôJ5W,¡‹‹²òÍb+ÓÄ¥¸% }ÀО©L¶R«'ÓÓÓã³óM\k?î †ès›-äÓÙ\"ŽÄb‘X‚à5Eô\©önvYœ<¸ºnÕ¹3l¥zH®3[ô4<^Ÿ×ð‚¡p$Œ ö`•t"DÿW£É|±¹½MkÌ.//¯ÑÙ#¬—gÓ‚…S„Ï··4E¸ )ÂÁ¨;'³Él1]nMç›hl0™Žfó‹‹ôÏûôü ßf @ úKÒçÏŸÿ³õ¯Dl5œN[8Ø©5Z¼Û -]ÕFÉÀc³…R*›O¤ÒQ«Ý§yðA>–Î-ËN·D{Ñi»Ãië` -ØmØŠ›¬D?­´²‚ë Xý`¥™_ ­lЂt‘d—Û*`g±A¤’lSå¢%Ù‘×·zÚÅY„o‰ÕD¡èén¥=TâÝi¾Ï¥ØJ××®L.rz^oµ²ÅbÉ0Ê•J:—ó‚ …£12ίš/—‹†ÑìtÇÓ9zOcɤ۬Ãâs)íªo-Xè4®o¬øðÑ-;òåR«Ó=<>ýý÷ßãXŸªr×z—Ç“ÙåÕ5ž!XÂ*£†mN¿Ÿzð¸uÊ-Î}VOÏ/{ûñdJ¯T˸«Š>i4E(3“•&¤ñÙC-UÓÒÙ\­ÙMgG§gW[;»½Á=ÛJ½žÍÒ™,ÆVј?<‘¾wbfÐ>RPªlø *+Y]-¿â\‹î¦j¸Ëçøƒ¡P8'éL½W•z£Ùî F£Él±ØÚ3‹Ü/¯nnoïžp‹ûË+CXO/8Exs‡vØÝÝŸáá¸ÓÆSôJ§¶Y„StÀ­í]øN@ @ Ð_Œ~üüY¼úõë×Ùr³Ùé6ÚÝj£]k´)¶2j £VG?¹ e`«\<•ŽÄÁpÔ ò1‚nÓTƒ™Û½!Ô°›Ù@—m† ÃViÅWHݺU½n«uŽ°³Z_[_™$ˆ¯nð ¶{IÌ4euXqŠ%YW Ñâ^©7þ+Ë E\Nf âÙCÅm"&;¿’Ý«•ì²YÉ®â !cäy²c²( ±A+B(r0³×]–Ñ+ŽÆ»{%Ý@ïN‘Dö‚‘¨Çï§}ïÞ@0“ÍéÕjÑÐKº^­5Ƴy»×ÏŠŠæq’àÊB‰5º«’Pá.«žÿçÿýw¯¯¯ßÿðÛ|¹„> ÷÷›_SŽÄú²°+ÌíÏÏ/fóyQ×K¤˜«Ro„cqô9YÁe˜>)öRw‚¶Ð;˜Îæ>þÒh¶ -$Eh ç_Öá(mƒçÍWè èƒ$kžL.ßhw¦‹ÅáÉéÅõíÖÎn»ß¯5[•Z=WÀâÉd(¡V+6ˆ´ÖÛš¯u%E¨0Bõv;bÆE'ª$<¨j,](kO\§†+³ïÝå–ñbù¬, å\ÉôYQA…M´ÅýPRÄ´ Ì,Rˆ±þyY$K¬w]«±lÍíèü ò›ß~÷Ýo‹N:P-¾@½¨¿ûõ¯ÿý÷¤RÞhèæ“+NÈ3†è þ@èøø´7䊸‹ ut@Eó¿n¯J$Sè}Ä£ ËzÉ0ãÉp<©4šÞ@=œ[´u)œb©+YB—,}úô)’ˆt=‹}øðéwøõÚñøºzgõJõñé¹R¯Ì+£ZÓ|~V„¥ªobƒB±¡[è ]ln¾¼~H¤ÓFµª½ZKç -@ñx¸s¡ÏÁVÝÅrûðøôêö~kg·Õéµz¥VËÑ'6cØÊg5½3f¥ ž+M¶çesÎ ERt»dó\‰ûk -P¨Š¥XªæÁS5æñj,E -†Â$E˜Á5X:zšèß®?ij7wvp‘;µ`Ýp Öó+wa=>>£íׇ'‹Ím<\r0îiŠZ°(šõGtõøáë@ @^z~±MœÎç½ÁШ7*õVµÑ&eì ¬uŒAÒdŒ ú½ŽÅI{À#ŽTx± ºœ‚çŠ:¬6ì•VfBÐ!¤Eo•€­0¤ZÿÁ šYBëŽøPN'#è–VÈ’Ó-ÖUQƒ“ägâ«’“vùéùåàð(–Lêa•«Õp4…Šår§7Xníž_ÝÞïìí5ZJÉòÅR2‰Æh7ÍëÅeú¬$ûxÁ•¶vάޖ\ÙºÜ5M@U+¾,fÊRIó›Â^Ž¢zp„ýï`\‰MX8E˜ÎQ„•*zæýáh<™mníìœ Eîl!ua¡õû‡'’"ijç‹Mýøc½ÙÂôx¡1ßÜúüÓÏ>~¼ÆØê Þj—È !Ø*‰cs æóIì\ÙZÙWÊØ%s]²MÔÄnö·ÉAYè¶ÂÉA,E®ÈݱóŠtaaû–æ¡D |\„ IŠ0žJ¥sta£Ýí÷‡ãÙ|±^ÒáÉéÙÅåÕÍõíÝýý#µ`ñ!ºzwÿx}}{rz¾µ½;žÌzƒQ§?DwGÿÔâ,ÂÁx:ž-&‹Í¿!@ þe ý±MµF·Zµ+u‚­juôó¿¨WòÅR&—Oà1‚¸ÝûØ´1›$‹¹ÜÎU·•`µr:iúI2Ç”ˆ¡Bµ&º­~µ¶N[­ÄVv|dŽ­L$%1Ð$óä Ú"™MV’É©qr Ö)³•Ýi-[~%y0P²Å­KÉj»â™AtdôœeÕS6*óåÖùÕÍãËëùÅåt±È -‰T*›/äKå|¹”+•òx)t£¨èj¶PÏf[»ûþ šH˜5øÖB·97>º¾át…¢±ë›Ûj½^,ë%ÝÐ+ø õø²æáa@DZ,‘Äû´äŠ¥Ùrs0ךmÉZSÍ¢*‚¿TÅãý·ÿÛÿtqyQmTЫÈäó»{ûél= Ößn¿|÷~­Ùjüø)_*¢çS"ôI¯ÖTŸ_˜EȘÕJœ×[¡O×ÖöÎÓË :i•j ¿¨R)Ë£GÏ‹E]G—è9Dcñ`8ìñú(Qt+ÖŒBÙίÄI‚Òjg»¦XAÂU‡•h1STV~¢*âÎbÌŠò+šCÔˆ Ëã÷û‚ÁP4ŠþËâ©t¡ˆÛõkÍV{°fKbÁ::>;?¿ÂEîw¬ëåõº|z~y|zFÛ/.¯N–›Ûè^è¾Áh0™âY„‹Í)¶`áao8^ln£ãý N>Á÷!@ þ¥éëׯ;û{ƒW/£é´ÓÔp {“0«¶ZÕêåj­X®˜c3ÑD"‰ø¤]ó²Žk…c+7ZXY}ìÎu‡sÃáÚ°ælÅȯ´"1@ -©ÖÖX[º­Ì›ÌbvjÄâðŠÊY™P±î"ðÊÉ”¹NS„2E[’ÙŽ. ñ@!E()49hë°b„J¶5±KŠ9XP~Ó¥X‹tU¡³¡z‘Î$S©X"«¼ch‰'Òét6‹nŶ(ÃÈ‹F­Þé÷Ó¹|0¦=Ü0F E.Ù*ªÂü -Sì€z÷~­ÛëŸ_äKè8¤È½ZÆã8Ehë¶Âv,0˜/âþ%Œ°J¥v°ÜÞmvz©l›¾ìµW,K¨ª¿ýÃïç‹åýÃc4Cϳ?4Ûô’ÝÊj±Ð}|zzzvŽ˨ Å¨ÔЩ`P”í©PÞ%›à‹ó+ºEÕ<Ïϯ{ûû¬«R¡h.™ÉFb1ô‰Õ¼>‚%ÊÜ;¹RxŽÏ2\ifÕêÀA…”¹q;me ²l¼ËìlS‡–‹–·k´Ú]³,Xþú †ð,ÂX<™ÎÒ!.rïFãé}rð,ÂÓóÕ"÷×/¯qÖóëÃãÓ N^íîÎXŠpÔMFÛ,ÂÑd:OŽŽ!E@ @ ÿäúôãâÕÓ‹ ôký^lnÖÛZ£mb+š¬—Œj¡dd ¥d&Kf¢ñx ö‚íc§n+s† ÙmårˆV+Ä—f±ÁV¶ru“\QBE²ÖÖ~X_£‹±Lçñ\9Þ“©‚耸ût[ÙÈ•dåéð>¦œ"Ñ2ÍTN›« -' -YÒÐD[.Vá.”\1®%”ºË+-îVU;-HGgFóúŒj}kwïç¾ÑÅp<ÉŠñT*[(c[:‹ùYQÑCl8]fm~-šÏÅr…FO¤ÆJ¯Öp {»àÜfùë¼ÊÕ]&ÚrÖÙÙùh<¡%íè8z¥J›ö%Z¥Å+ÙeÙãó¥s9Jº -eœÎ[lï4Iù¹dÆ%“_Qøƒžðšó?ýü“Ãí@Çï {{¿÷=ëð7˯X–ŠS„áHôÇv;¾H‘;zJp„[°dÕÊ -õé&€"ûËå—×õf cÀL&‚N#žzéÃQJ¢ª¾éËbYš¹0/–‡¦}þ`0E¢èÍe,\äÞît£ñl=XGǧççW׬Èýééù…Z°ÐåóËëãÓóÝýãåÕ™"œö#´ ÇÓ ±`MKsáx¹µ}O¦þéO‚oN@ ý3HlbGºº¾êFýáh¾ØÄتÕ.WëÔjeÔ8!hT0¶Ê1¶J¥Ðïeì¶ò0¶Âu=ŠP(2Çòœ sX¡KaÝÊ®˜¬8¤Z¹ún`«5Ʋ̛6Þ›N­u'Æb¤ÛJâ-[”D‘'ÆY–ÌR•b;˜€K&ƒYlÁ(§eÄRœbC»m˜àÛÙ‚²-6Hø•[ÁuO¡h´Öhìî\ÝÜ^\^_^ߌ§Ó\¡Mij…b6‡K®B‘¨S …œL·éãRÜqZ­ˆáMVÕz³…ÞP\Š¥y]׫µf·ç „„ Â:©¬« -ø‡ÞÍ拳óóL¡P6*$EX ÇâšÏO˪·"=ünI…#E]/“Ö÷l±Ôí¦‹Ívo€>-n•=UŠ•\x–žúóÏt«Ž²aÄ’Éç——ï~÷;»ãG¶û©Ð%z/.¯ŽON³…æWda*›S½^LÕÌð ü¦YoGGÛpºÜ-¢—9ª’l‘@áÊ[“•ú¶‹÷\Él¶ ¶:LPãn+B0Õ4YqÏ©·2ýZBT+‹ï–f!,ôßç„¡0ÎÆ©L®ˆÞ*L°ºƒád:[nmï¢svŽ>]×7w÷OOë.ö!†b–¤¼Íýi¿¼Ep[i6ç•À£˜“Jp^½õ_ip©B¥•,Ç"WŒeѹ;‹má7)v –?ˆ3„áH,™ÊæòÅ’^©5š©ÁZlQ ÖÙùå¶`‘á3N¾¾~D ír¿x¼¾¹=9;ßÞÝGwê1„5áá’¦Çdá`<;>>E_hø:@ @ Ð?­îÄ«ç—è×m·?luûèwn¥Ñ$Ø -—±ë[ÊF¾¨§sy‚­’è×±?ÂØÊ‹³e‹Xn+t‰»˜\n‡ÓÅ|VN X‘**æ’bäÊLŠ@b²Zcë,!ȬV?l¬‹Œ‹T²låv;l5VfÏ•[æQA§P{e³H™í Xá—³jÐk¯lSråŽiz´sæ ]±Ù´~Xß(KÃñ8W,ÆÓél¡˜+•jf2ñø|²ª¢×µAŸ¹¬Ì…Y­dF±Du:¡36šL¶wwI »Q(éýÁ`gwo0ó..Þ|Å°•*X°´÷ëŽ|¡ôòú¡P*I V¹RMf²šÏ¯àY„V˺y_–%L¤Òè‰k«Œî2šÎã)útùÃaòp²æõÿWÿÍùôô”É'óºžL§nï|ÁwIª5CÐ͇ júH G“?f y:ѨVó¥²æõ©feºd·Hñþ+YYµc QA}™ Ä·‹ôíI‚êJ~о'ÃY²¢Éö*¯v7‘[áGÖ4‹wQ#–0  %ôxÑk÷‚Œ°b±x2™ÎŠk2],·vöŽNNÎ//®onîîî±ëåõùU@XO/4Ext|º¹µƒgƽáx8™ŽÉ,ÂÉ|s<]Œ§óþh<_lÒ"÷Ÿ~ú ¾ZA @ ôO¢Û»;¾þåË—z³Ýíín³Ý«5ÛzÇq±U­^ªT e=W,¥²¹x:'Ñ/b0äõûÑÏdúÃÜ­¨N™9‘pLÏE WÌm%.[±‚ØmÅZÙ¶ZÛ°Æ®[aÀwUYn«(ÎØÎb·•‹—Y¹Ü¼ÉÊœ’$W·[‹7VqH¥¬ò.¶Er­ÜÃÙm‘%™Ù¢8³’l;S–S–ÑyëôúýÑ Ät¨’Êå·w÷r…†‹äW˜•b²)sáE·8ôÐ ¾[[ †CGÇÇÅ2VXÐõV§}xtüÃúڛ̠mD ieg-UèíØÜÞ99=Kçr%£RÄ.¬J0Õhå”eÁRxß”×L©¡H´P*• -zÜBÙèôÓŲÕíÅ“)™Ð˜ÿñþ7w÷÷•Z9[( 3€%žLÒ™†V~Pò}Ì:¥¡O×ååÕÉéi:›ÕñÁj±¬£ŽÅX¿–€¿Äx ½*¥7,kU½ $*ödâJÞÛ´4±öŠ(˵µB¨D¿–y«ªÑ !T^ÆEÍWa¡ÆøqaùÁ`˜¤q“{“j½ÙBç}8™-61Á:<>=»¸¼¾¹¹½¿x|z~y~yÅüêFX¸Ëýñù–¤÷ŽæË-2‹pÜâY„“ùrÂf’"¬áxs{}Ÿ´:}ø‚@ @ Јvöøúׯ_«fw0lvºh¥ÞÄ!A’4Ç–õL`+\žF"¾`Ðë  _ÇdŒ žGk ˆÛ -[qTEs‚RaZåtØÊt[ Mì,úgBªwöl ë¹"n+RuµF­Vôà¤ÞM«×m‘@³·Êå–ØX@™Ï´{¨lÍW²0‘Prʲµxå»ûÿŠb"±óÊ$´p“SZéÅ2+³È­kN':ÕÛ»{õf3O Nù’^oµ£‰„× æ¨U,æ­V -«m§»¹…íœJýí¯þngg§\Ñãét2›ÝÝ?h4[·d%1?¨ð¡„üèqUçþñ©7dò’׫æŠ%o ˆ>œ_qç’H´Ð«He²%Ã(áæ´r£Õ&´I®Xöøü¿þî7ËÍÍ»û‡P$„ö醵FsÝé´eíýWt=ÿX"ñåËO½A?˧s¹X"™Lg±Æ_”S  i‡Õ[xõM#Ö/]}ë³ó†bݺmç•ÐŸ™7dJ³z®Þ\5ïeßHÑ–BGjš"ô¡³ Eîáh<–Heó¸«Þhu{Ãñd¶XšEîWW×·wwÏOϯVŠðõÃóóëÃãÓõÍÝéÙÅÎîÁt¶ '4E8ž.¦ V„5žÌ‡ãi4=?¿Dß-§ggðe @ @ /}þüY¼úòñS³Ýi÷úÍNc«Vc+ÜÇ^×y{¡˜ÊäðÁ#è q‹d&ÊyÈA·“÷±ãK-cÇÅV¶2ö5+HÇÒЮ^‡QÕeSlÈe\kÖ0Á ‚­œ[™+ÉZw ¥ënÙ%“¢u7wL)oc€d‹•$}V|\ ¸'+uç Ê-¯Nd–*±°}u‘ÝŠu1P Ëáh´Ú‹åVA×ódV` ù+øƒ!Õë£ÃÅ#›…í R¹lÅ✊éÎ"X¡Häðè¨Öh¤sù\¡4šÎ=^%<.y[Yæ+¡Õ --ëg±¬?==犸¼\Á)ÂD*ãñùeÕC˜ÇVŒb±ʲâñĉB¹\® [©Zoô†èY,kV"•j´ZŸ? DBe£Úéõ›[øáYªfãW1þq¦´îtvº½n¯ïñûÑÇUV5ò>ºÑC¯Ú¨„4âÊ„Á•Vvɵ”78KY½ª­¬Ûjb ;7Y©¯jçJ,U¶ñ…&ìò(lªz‹\YÅïèÖë  M0 …£¤+[(–J­Ùêô£ E¸O,X؃u‹‹ÜŸžD Ö'V„uÿxu}KS„8-8Ä)ÂÁ§'¬k1šÎú£ Z¡)ÂÏ_¾Àw/@ þQ}øðA¼Š~T¶{ƒF»Sou*&®dÇ“1¶*Uª%£RÀc ‰L6–J‡cñ@(â =>?ÁV˜о&Vlå¶Æò…ö±³K2IpÔ[QTµ&¸­¬êõ5^ Å9ƒŒw1üåp„ q[¹™]ÊÍ£ÔfR,`„õøø‚nº¸¼Þ?8^,·†ãiw0ê™)BR„…g° ûºÐŽnÔáK@ @¿¤gû$Á¯_¿.[õv§ÖlWÍj£I¬V8!X®TI<­œÎá1‚±dŠ`+½lÐþ«7áÁ·ÐI¶3®•` ÕÜnn§N°Õ»+¿Ä£´_2_½qUý¢ Klwçö* -µxôï[‹*T]™3=¡JËcŽ#ô0ó£X^?€‹Üƒ!Z„‹'ÓÙ\¾ˆNp¹£OÙrk{wÿàøäôâòŠ¹c Ö Døð+Š°î¯¯oOΖd!MÒ"¬Éb‰ëÜ1ÂÂ-XÃÉìËŸÐÑÇOŸàÛ@ @H"¶Œ&ÝÁШ֫V¥Ñ4p%;.¶Â Á²‘-–R¹|<‰ÄáXÜ Ñ„ ú-,©šÛ - ºyHÚ«œ.‰·²¯9lŒ khßX·ê­¸ÉjÝ©(Åzÿþ7_½OjØïÂwaÇq˜ A“AY¶+Ê£¨·Ê2\™$ÊfÁ¢f*|ñT ÁÄVv¼ÝmÂ1“k¹ù}ùv~yÅþ$Ì”W*ÖeÁŽev­[)BáîÂU‡[BïËÉéyѨI„°¨ëe£‰%лƧ Z†+~4…a«÷’¢d Åáxº½wpvqµ»Pk´Ø¡ªµ­Ý½Ï?ýôÇ¿ÿû?þéï¿üô3ºüù矿|ùòüü²¹½O$×.üœUÞeU`™ˆ gô÷öét¹RÕ«¸È=Q –¬ -BÕ't›…êhñ‚¹|A¯TK:eˆ]V*Ù|þêæVóy%« Þ>yP±wU)ö†+³ÛÊ - ’.,å €z[‡%ý2Âú¥¶vùMÆÐtOÙЖòí-«P‹Q)>£M-¤¼‹ù¬dsF!›Hè1ýWd…ñ.2ˆ§CáP8ŽF`•Œ;:žÎ—[;»¤Èýüòú掤ŸŸÍ"÷?ááë‡Ç§ç»û‡ËËkôŽ/–[ƒñÝ»7'³ÉlI»ÜÑÁ†“)Z¦³|9ƒ@ @ èöþ^ÄVõV»Ýë—«µJ½Qa!Ázc«j¡ŒÝVxŒ`2'‚‘¨/6‹­<”B¸­1‚d1‚h…%:Upm}ƒf)°Zw8°]ʬ´zÏ{××Ö)ªâœÊ‚Wèêû5q† ºÄGsll8Ý·‰­X;O Ú`‹ʲ”Ä>v>=¢§o^™C-Ï•ÌSŠuU±Mú\æMßÈ®öY1 ÷\)+®-F¢D/]AgƨÖŽqäK7Š8E¨£K?ÎxúEF:9¯·:Þ@FÉ´äqk§Xè Dbñ‡‡Çv§›+`[úàÅSi_ ¨h¬Ë-Î -¼XË’ÍëKâ,a #¬JE¯VKº‘L§÷öc‰ÚÁfÁ²7±ËoŠÖ%uuOù[c9>AÖ?œ|C¨4±¶](¹y”¦¾!Tªµý ã¢Ö)±ŒÝªÉ¢™Ak£U~E,X²âAçÖëÐY„a<‹0–H¥óØ1W§k2™/·v÷H“û%IÞ?<=>=?ÓA„>~¤ëåú`ÜÞÞŸ_îìÌæKlÁÐY„¤k¾4‹°p5ÖÎÞúvÚÜÞ¯k@ úkÓõÍ­ˆ­­N§?ЉɊa«jCŒ­ôL¾˜Ìæâ¸b«æõS‡F«™L[¶Z9]l˜ ñYY—.×:)NÇ9Á –ïã­ìV™Õ{ê³ZGüWø*Z~øáÝ·‡ n¬±¨ :²ËAÊØMtfÚ«˜ÛJdYÔdeÕ[ñçOC‚æ"€È¹Ò¸.¯[ Wâvêæ"mç¦ÛJqJo' --Xo;Ûe TÅÉ€Ú’^ce›H0]A—è\íïõ†ƒ\±T0HŠ°RMᎩ¤in³¿Ý)ËkºK¶P˜-·ŽOÏoîîŸ_?îìî6ÚíL¾PÔl¡˜H¥"ñX0önFÂ#êüþ@(£I&[, <î°XÖ‡ÓÙx¶@÷ -†#t.¡ =©¶†öN¯wuuÅLß½\©†¢1:ò+Ó‹%+;’},ñŽI -‘x=+¯Ïçp9ÑçP±wXIßÊúIßÊþì½W“#YžåÇoʾñ‘´]š‘Ok¶4ÎrÄöLUW†\À¡µÖZkZk­#EefuîÕ~¯Q½\’3ݳ÷ßÞ0‡Ãá@" ÌOó;ê­}žânÁU-d³[Ò\$ׯ Õª‰‹â„“°xaJ7ýZ£¸ëÌFepŽ,‚jwšá¸îÂÂ2둄傖׃¡P‚Ü3¹|±R«7;˜ƒµ±½³wpp|vF@¦Åýí㧗×Ïϯ`;¸¼Ç¶¶÷FcÔEØ€CLf›¤‹p »ûÃÉÑÉ ø¦z}}•_ÝräÈ‘#GŽ9räÈ‘óo~¾~ý§ØÕïߌÆV§T…$vÌc‡n«r%[,gòÅT6KfÂ1T#€5‚†Ëí0(ØŠ…Ú,[)É®Ÿr^ÂrX¡ YÁ õ%$danÕr…9W!k ï WK”ÊΊ­9AJYg+vÕ”¤4Œ´2QW\–PgBæ³âúU^²©ºè¿¢ôuÚ'hõ_i\Û à³C…ªnõe™^,¦P͵ââ<ÙC”¢úë›ÛT&“+•²¥Œ×K¾@Ðãó;øK)ª–Êä¦ë›§W×·wϯo;{{ÕzWÍ¥rP¶òƒØ…þèĽ†|_DÄSuÝár…c±l.Ÿ+QÚ´XoµÁ¥Ëëuz¼ -‘°ˆ"Ç»§À1]ÏùÅåÆæ&xPpßrµ–He¼þ xDÆ0ÝÁû©ºž‰ËíOUs`qòÇTÑjeQ¥ôE%ƒÜUC³x±ôÅ^¬y¥K un‹ö~!/RÁ©E. Ö$è+É>s7‘¨íÊ4nYMYD³b„N²8]:²`9=ð…õøü¾`8ŽFã‰D:“+€/f§ ¾QpáÁáÑé9x#q ÷—×7!D¬××ÏO/à¦Ë«›Ã£“ÍíÑdÖíA -J®ã.B˜"MúãÉuÊ‘#GŽ9räÈ‘#GŽœ“ÎMñêÛ·ñlÖ ¯®®gëµf«\k+ÕR z®JÌÊ鬌%S¡hÌ -È”­\è|ÙAàáŒmŽe+x‰xìϾ†PWˈǾŒxìoõaKUðr³ªn%™ùêj$Ø«%\&HúÁ%j´·~2 -É-Zªmª©bÙU•ù¬Ä!Rqf*»ÆŽ¦âžAÎFŬ,Ä*•mÔ…Š8¯LKa·ªlm¡NET,]ã±TT­"ÚI ª| ¡¹?¾/c0Ü?8ˆ§ÒDÂ*—é´Ëëiw;£Éôìòúæöþáñe÷à R«ÇR©t>ŸÊf‰låñ: ÃŽ‚™H§r¨s•‚X•²£Œ^2•®Õé\5–Kµz Õ.°À»pÉA…#Yƒg²9ð<*õz&ŸÏ¬øC!·×Ǫ -^áüW -­sÉDtÎÅÕE™ArGMÏ‹¥ý’]· -VœlÅh톾H°š³#­ÌÏš -UÕãóÇÉt&L?I,‘X üÓ~úùgð)°P°Bç ¹þ§œ) ï ¡ÝÅâæ -i'¤[œD¿ÂW §‚ܽä …Ãàý‘ÂU„Õz£ÝëÇ“õ­­ýƒ£“3 r‡)BhÁz1-X „n<;¿ÜÝ?œÀá¸ÓöG“áxAX(Eˆ%¬Áx:]ßÄ_e/b5ª9räÈ‘#GŽ9räÈù+ËùÝöÎnw0ÜØÞM§õV»T«¨lU¬ ·[é ®ô‡ ÛÊéñ"Ç’­L—‘JB‚àY­ ž3\a‡¡²¯­!‹hNÙ™'±CÚ ’Ýèúª#\¥˜¢“ =Ö-Íìd ƒ,?ÈS­ˆùʬ d2—ÆÒ6>H¨ëÌ®á[UÓE{ávü Lҹ̠ªò˜tÓp¥ 5‚LSX' CZ©(ÈG ¹ªA;“¶°,¦ Dw°}Õf»¼º®ÖÙBQ°JÍNïùåíׯßž_Ž‘Û*™ÌdR¹\$÷ùa›$´0a¿¢ áˆæ5©O–°¸ãÆÖN·×‡ÂIÀ|©M$ ·Ûê¤be‚è˜à]·¹¹yxxŒ)Xcwûý˜"´f5 ‹Ëjbú­àWl¡QJ]d‹Zœth<#±óOI§÷Ò¹làbÎÞNiW”åÔ W,žìô;{—×·oŸ>þòëÇÏ_¾|ýõë×o_¿}Çóë¯_ON+µСԤF¨òi%¤‹:µ˜NE­Vd#^œr……,'Ùh8݆Óåöú\^Ÿ/ …¢¡H4™Îä ¥JµÞêôúƒÑt}sgb°Îϯ ™ïîááñu~|ÅúÕÇO¸‹ðáñéúæîäô|{go<™õú°‹°?B]„³Éúæh:N`Šp8žɯw9räÈ‘#GŽ9räÈùkŸçgA¶O¦ƒÑx<]M¦ÍN·T­«L¶2yìP¶B5‚Ðmå 8½^‡ËN¨UŠ -çL6E[E>+,u*Ķ«¤Y¡Á5l»Z¢Hv(X!;öVñ9Á8$ȳ­Ðú2êDÞ-D²« -'(©&ž]¡!A•CÇ›"•Ùh³nj±e3·¨6æÅ¢w·:µ8–•‘¥R7Âe+¸ƒÍ<\7Å(ÎÓEsš:£T)s„v²Û/´IPÃrؾb·Å“©›Û»x*™CÂL¡ŽÇÃÑh(§ÓÉL¬``”™ê°,< “¾E«¹KÑ…ÅxVL#Þ=ÜCÄmÁ¸b»7ˆÄ̻œ¯˜ôþÜ¡päêú¦?¥²àMZ®Ôêà-êñùáÛR¬]×VEË"Ii"Ïj~Ÿ…+¼±J?觊j•öN*PçA–a€Ï`½ÙÏ6O.¯oÏÎ/Æ“Io0,–+Ø/M,^®Õ[Îx2~x|üöíÛoß;=;Ï -:B¯kXU3W<ÃÊAÔ*â°2¬D,*±Ø Î±¸8¡árƒ¿ˆ×€V8 -þ¬©l®PO­Ùîô!ksgoÿèz°ÈýééåùåZ°>~úøñ3XÀúÓó ¸ ìƒS„Ãñ¤Ûõ†°‹p4…±`§­µ¾ùãÇÿ²Üwå¾9räÈ‘#GŽ9räüuÍíÝu4™¶»ƒÉlÖêöºýA¡R-VjÌÎxì©\>žÎDâP¶òC¿ßpC·•Hüœl²BDtìÃAn+j»²­®ÙqTp…“­>ˆ¸u¤SA†ÕÒ -•°VV~þ°Ö—–I¢Ð ¢¼!8 öwQb•Ê‚vN¼²äMŸ•Â,Uœ`eV †•Màý³†…«¼Š¥[3ƒ ~Å Yt±™ª”.°°4®OPçIœW¦H¥ ®*“…ÖqÆSÑ­ ߤ:¿,/onmolm'!«Œ N°§/Ë‚!ü°#«¬ dI=NbÂÐ*¶ÛÁ”¤XåáññþÑ¡?.T*™|a2Ûh¶»†ËÅS°ÆŠ¹°À£7[í³³órµš+BˆV¥ÞÄj‰•^eá_q:˜•ÄŽÅ(ÝšòSçÒ*G‰g&.ýÏõ êïtªVx»a¼#ד?*×Ãñtkwokg¯Ñj'S©t&[(©Ë•r¥Z©ÖÀe¹R)•ËEˆ/+Fc±L6Ûëî¿üúõñù¥R«»½0é þQT•2Í]ÔjEK ×nGö*ž‚Eóƒ.3Hø .7–°|þ`  Çâñd:“ËCV³@îëà²pt -Aî···÷OÏψ‚‹?üHXî(Eøp~qµ¿S„Ã’°Æ0E8Û¯o û¬ÑX³…r½9räÈ‘#GŽ9räÈùËœ«›þêÆÖV½ÙŽ'v»ÕéÁö@¸T‹H¶Ê•ÊÙ| ñØÓáxÊVÈrz<à„T§Ñ-¥R(ºB+q« }͆£‚¶Õ5Ô¬ÖÖ˜QÊt[Q‡6Y‘Áeâ­Â$vF¸Z¢5‚ˈÇÝVv;x\Ñ+Å=%“¾e"­˜$E•+*RaŠ»Y¨ÛÒ®ð̓èPŠH£¢†+·e®@ß(8¦¬Äu‘Änð99ËtXi½J8šNùíP²î 9L–yLºè†óúæ®R«eò(EX*ÊåN¯'–p‰…ìøÒC^ª²X§èMº…geSìáXèáñ1‹Êð@Vkcs¼ñÀ+¦Ì%þ*d¿>xgŸllnerùL>ŸL§ãÉd8‡†+}Aÿ âÐÕ¹JAf ³$9§–ñ.êj#KXés…ú\ÞPñïLÂâÉN·'™ÎÖ›íÑd6œN!ñ>Ÿ/–ÊX¤‚ |1[(€lÏ -ùb±X*Ë`‡J©—B±‹Ç›íöåÕõóëÛõíC®Pòx½ª¦s%ƒ‚ÛÊ,+4x¨;‘°Lf;¾;Ò¬H–ÐpÔe¸ÝnŸÏøƒ¡`8‰"«¾xà+hˆ¬Ýý£cäþôüüüŠô«Oxy{û„S„7·÷''çÛ»ûãé:î"„)Âél²Ž,X¨‹°;£îîÊï9räÈ‘#GŽ9räÈù Ÿoß¿óWÁIa½Õî ‡V!ÙëD³‚`«jÖ’™l,•çþ¸FÐíó;ÝnÝé„2…)1 ‡åïÖ0˜®ØMÙÊf‡+D†+¨;áZ@¢Ve B×MÊܾÄxì–±x…/lß‚ž."7qù>J¸²Sf„дT{ Ú¶ð©T33ÈÓÚU†¨2Ó|žšNíXº•Ù®²ýù}8æ•Æ‰WL›R- -؜إjf*Pd+»EËâ\X¼`Eb}šîcÖÊÚZ©\9¿¸Š§ÓPØ,•À{¦ÙêÄ“)ÍŒ -ö*Õd[é&>RÓ-w!—†ñÇåÿôó?|úü9ëKåb¹´pèöz±¹‹–ׯ°Þ]™\ncs+‘L9ÝåÓ.'{>Ê{vÝŠ½šg¶[†úûvõ«3VYÄ+í}Ì»Îa¯ØâõÒ™\­ÕîG•Z=W(ËàUªJåL.K¦"±x0ö^°ø¸‰Æ©L&_,=‹ÈŽU®TÀ©T§Û;=»¸{|ÚÚÝEcð1‡d,ƒ– R ªÖNW;È‘Þ…¨ V·tæÝBr7‹:QÉ£× Ã!ð\“©t6ž|¼Ÿzƒñd¶¹½»,r¿¹{xxB¬7SÂúôv>¿Þß?^]ÝÂáÖÎp<í F`Œ`ŠJXÓ!LN`4qsëâê|ûmïîÉ_9räÈ‘#GŽ9räÈù‹š¯_¿òWŸ^jÍV½Õiu{ÕF³RGM‚lU(W³ÅR:_Hd²ÐmE²•?à†5‚P¶‚Õf:gþ¡2£Z‘hv[¡„ Á³3ÃÕêꥲ“®@ªPÑÁ¥_ˆT%¬%†d_&qÂ%,­­aê;x,®ÓP3Ë涢 ƒT•â˜í¦æfRÜy¶Ѹ,)BTyÉÌ -]„f½ ÂW ê:/pqy@ÒÎZÛ±¸,¡¸n瓆 {E3†ŠõQL@ï¶â¤-‡Bµ¦5EÝÙÝŸÌfñT+K™B!¹<^ðö05"‘LÅIXæ ×qëøËúÃþ×××d&S(WÒ¹\£Õš®o8=ÌÔ2Ó:'Cq‘@œgT4 ûñ}ŽÙîø3ËaJ'èuu¢Š×¦tNòÒçRê;AÂ…Þ-Qgµ€P¼ -2Ù|­Ñjvºd©Â©À4„çÇ|Á€QÈ`‹"ù‹k²Ÿé†Óíõ†"‘D:+¡ y±ÊЋUÊäòÓõõãó‹ã³ hÄòù‹ŠW.0È8íÌ—ÅàW,E((Z†ár™‰B§ <—Ûãñùý`<¡X<‘LgóEXEØêô£ÙúæöÎÞáÑ ò`Ááã#´`½¾R -Ö§ÏåþúñééåÀ½#†+LÁÂ(¿þhÜMÀQ?|ß„÷ò×AŽ9räÈ‘#GŽ9rþÕçã§OüÕû»ÇV·So´›Ýn¥Þ(×àDçó¥JóØ3Ùh2ŽÆ!Ýp{|—ÕXd°‹e‚T5Ân+͆²{6» -ÁVp±¯ØlpAlvl¸¢b B3¶Z‘ )aYXlµ²By쟥(6Ó%…³{D›"êÖ¬“UeãÐë8 ÈÈWe‚ÓÉMŠ ]·ñª1Y©Dà€W\4R˜•Æ¥ ëÔœ;KT™Ø‘9†•&Dÿ8¥Ë Ò›óª&$ bZÐ’74U,‚L§4--_^ÝÊ•L>)X•j&_ð‡BàÝBe.ä­â’ƒ*½»]ez¨hÁ¾ôC§çGÇDZD²X©Ä“©Él½\­â·"QÃ8ø9U™žˆ„Ü‘YëŸH»²(`¸ðÏ5 j‹ÜYDkÒËSV¶éûû=l;µ],ˆ·×W,Wšín½Õ΋0-ˆ÷‰TÚ瀬ª!©ŠÓבĄ^]‡M€î`$©SeÈÈ‚¡ÂJ,¹B¡Úlnïíï×›mð‡€…†Ãa˜ú•‰ÀlWN«/d)BfÇ"Û]øVÃpN—Óíqy|à9‚a,a¥Ò¤`\4ž®olííŸ^@Ö=¹›¬OäŽ@XoÏ7·÷§g[;{8EØî £ /aÁ.ÂÌ^\^Ê9räÈ‘#GŽ9räÈùׇ‡GþêÁáQ0,×õv§RoTj DeKòØóP¶Š§2ÑD*!{Àå5‚ÈmåÀ‹ãHæ,y§¬Ùì8‡s‚D³—È+E WËËK”aÅY­–M’­~1ùW„pÅÀVkP# -•™äÜVv®:»›ØÎBo Âî® -¨°Ø¥ñ.,a¬ød"¡Zi\âoØN‚6^ÎbB–>¯_ñ+Í”ž¸XŸÕj…E'Uc&+ìqâ¥'1(<Šêpµ†ú\5¡.Z³è:ø‹·ÚããD* î¥r©R5þ€fÀ˜ÌñAóà äÝV¦Ž„Ÿ'Lÿ¡›4·× Þ¨G' ¨Ï”rÅb:›+W럼2ÌjÅlj<…òƒš˜ò°ísúð[èîšÅvµH²0Þù&Aý}ÕΤ¶ßK òW Ë}­Îd¶^oµê -ú¦ -P‚.zUs@paRAÕ òØIG¡h₾*'xIÓ™l©Z«Ôê…R©\…Œ÷b ¬UF“éúÖv³Ó E"HspÂÄÔˆå4=W¾m‹B -daéô.\Š‚°B‘X,‘D’Züé»0EžÂîþþÑÉéÅåå ò`Á!oÁÂ]„`ÛýÃÓÕõíÑñéæÖÎ`4éô†¨‹pÂu®FÓÞp<]ß”¿räÈ‘#GŽ9räÈ‘ó¯2//B£ÖéÙùp<©ÔåZ½Úh"¶[UÕ¦ÌA·?àD5‚:jã´žõÄ- -É "A‰¤©Û -š¯–WVWÖP™ îä©ìH¿ú°„Ö?,Ö¬pÀÔâGQù”¹ÊœQp;Õ¶¦ÛTÓ:EÜVè ìª]!G¥*U°Z©œ·Ê²tzGÕ© ‹7GqÞ*U¤µëbú‡S©\ká|Äo.3hIü .1h§æ(A¡ÒùJwØ9ù‹mdÜ*pX§Û}pxÔŽét¾\.”*ùR9Ž¸<^&‹a°?óDY,O ->(z…#±x¹VëÇþ áW¥x2ŠFÁ‘aŽÞW™ÃªóJ‘Ê¥µÀö¹¹`Øu‡:ǶBW }õžºõ;ýƒ–*CÝjÁD­X2qswßîöó -1ØK¥voÊd¡QŠ¦üøê@¤\±¢õÒåñ¤3¹F«Ýlµs…"ª)¬–2Ö FÓõZ³ GønAÝT¨¶Z°trÕÉñ¯¸=¡lå"DwLÁrºœËë#)Âp$%Ré\< HroƒÙT°NÎÎ/¯¯oï1Èýåõ•Y°¨„õôürw÷pyy}px îî »ã!jÄ ÷Ñd:Mz£ñÞþøž¼»¿—¿räÈ‘#GŽ9räÈ‘ó/0‚Ûêùée07ÚíRµVm4KU,[U1=[(¦²ùx:‰'X¶‚áNÅ(‹½Ê4hÙù¦?‘ Nï8g¬Ò)Ñ·QqmƒŠ>×0¨›!HÝS\PTœ4‡°‘ªaœ6¥Ï®˜lEÔ3³UÙ·4M3œãÉtkg7‘N#__©T­#/ RJ•J¥3Õl¤ê|TÈi…«ÍÖh2Û?>½¼¹ÛØÜ®4`§@2CN—KÑ4EÕËbšOð©sRË**sÈw‹„µ r¸ÐF…ÌWÿ5œ«EÖ,CGβ,,<ÈeÏŸ¿ F£Â^%“Ïoïíõ;le$;3à•ƒ³c™Ê’ƒ¢«z\q:ÓÙÜÎÞÁ`4Ne²•Z½\®â‡hu:Õf3[(ùƒ!‹r…ë¹à’±ˆÉŠìàt3áËpºx Jz±+‰†É=›/”ªµF£ª¡ëàðøôìòòêöö܉ëó§Odyýø l|x|º¾¾=>)B(U Ƚ?Æ]„›ã)J‚íÃñxº¾¸üÏ?*°ª«‹ -ë8$X(C;¬Ìå“°F0Š¡Á@Ð…e+ä‚ b—ML -çbxv"[aÍjumy V®ÝSË+¿,£<à‡$'¸DmWPÔ‚&+°Þóâ±#Ùjm•Õ΢ "e³c-K3 W|u ¹µiÙUmngæžÒ­P,ª1÷·§Gx;—T9 -¹Ô,e‚ôVò•2g¸ÂMy -¯\Q•Å—e©œ[\ ±Z©\riSv*j±ûª¼ÕŠõj¼º××%‰žœžµ:T6 » Ë㇦>Fb7[u–„²•7h´Ú³­Ó‹Ë›»‡»‡‡õ­­Rê®ñTÊ -¹a`j§ŠIeÇš!¸’h8Q€êüUΩ¥ýŽEJ·nO4ãÐX†öçÈíºÃêÔÒ9Ÿ•>×c(®É+ -~ûö-£Þ@(.UªÕ½ýƒR¹²ºf#»fxË :øP¡NèëTæ"Œ,G._<=¿N¦PªÔàC€ªT[Ý^®TJåò^ć§ÍƒNªƒáð SÀ^9©ÿ - Y¶ÝÅï ; Ëíõ¹0 ¦£ÑXVBV½ÕAÀª­½ƒ£cTExs«Ÿž_^ÞÞ éW_ÀåÛÛ'°Üzqy »7¶ÃI§?‡Žgã)ë"œõG“î`ö_¤×··ò—EŽ9räÈ‘#GŽ9rþßϧϟù«?~ü¨7Zf»P®‚¼r­^ªBÙ -œíea`!‘F5‚1X#è À‰!b‰„¢jæ ¼‚ WNs‹A ES–Ùu¨ëåjíææ®Ýígr9°^*W«Úí À_6‘Îx¼^â¶r8È “­NŠ·âîD­‚V+§ <Š(îævZ°\^¯Y°¡0øîŠÆ“ÉL§»ýáh2ÛØÜÞÛ?<>9¿¼¼Æ whÁB wª_}ùøñ3ì"|z¾½{8C)Âét£?#ô†cØE8% ÷ádŠ%,ðu -¾T¿}û&häÈ‘#GŽ9räÈ‘#ç¿Q¶ú$ÈV_¿~ ǵfe!Œ½X®JÐm•)@;8µ'˜¡h ÊV¸FòØ”ä`ø#sS9àM‡Am‡÷XëßÊêÚÒÚ*&\¡2ÁÕ_–Vˆ*E¥*²,‰ÉÁeJµÂ²ÕÊê*D²ÛíTž y ‹BÚíÜn$è'x¥°G‹µ -2:¾ÉܨðÞ*ͳ²†ÙU]çd.ÝDµóH+ÎÍŘWfÏ X)ˆ3ƒ8+Ô¬=€Ê{ùAA§²PÖMà• -Ô»]g@-aÎÅ\X‘í ¾Ô^¿ÿàp4™$3Ђ•+•*õºËãñùƒ -S®TX)Øh·w÷Ï/¯ïžnîî·÷öJ•j&ŸÏ -à}ë Á½ —KAb©Šzæ†Ò­>¨y¼eÅÂ]W9”ºHYRÿë€ó+ÌF¥ -Š‹èbAµë"ÿÊÚ6h`¡Éºø@ÝÜÞ‡£‘2ò_JåF«ÕôC‘ø×™&+$+$Eȃ‹EüTN¼ƒªë½þðúæ6BB|­Œ(ñåJµÓ„£±H,þLDžbl+b¬2xÌ;tv91ËiîL“ƒ¼À…R„¨ˆ0‹ƒà_K$’©,¹Cé`4™Î6·¶÷Èý¦±ëíÓGN ,˜"¼¹=99ßÚÞŽ§Þšˆû‚A§fZø6€wÛ½8ŠF­þ+¦³-D¬«¢ÃJ›[ý™–@}Án‹v6„ºþ à=ÿÓÏ?ÿáŸÿéÿðŸÁòÏ?ÿ>GŠ¦a‰I[µ9»nU´äe8ÿñÿ^ãããX2Q®@[T±Ti¶ÛãÉ$«°|ÐaõSÁ-X›šObÔ·4Hˆ-Xàáöö/¯oR¹, -*VÊUðÍS©ÖêÅr5–JûA‚Àr0ÁÊ tw'5b™&+Nªrr*–ÓŸîPÂr»qÐë‚áP$‰'âÉTž’܇ãéÆÆöîÞÁñ MÞ?š ÷D¿ÂK¯olõ“n‚°`Šp¶1YÇ]„0EØŒPŠðôüRþúÈ‘#GŽ9räÈ‘#GÎïÌÓó3[ÿúík³ÓÝ;8<8<ŒFVœ½!¼Uƒ­ ½P€5‚)X#B²ä±£AÍpª0·µ€ÈÍNöIžËd€Ù -Wþ­Ú ä -!ÙmNõÉPVX ]YZú Yؾ‚øWËpÿÕÕmµ¶²†d+UãÐëŠÄy@æ¶Réa©¢ 9¬¸:BS£Ê«öÓØL±Ka:•ä -mš& 5Ý"UñD,…[!J º¯¢‹Žš.@ò¹«\Q n!\q=€fI‘BÊSÖyÑI£*‡Ã®¿‡É‚L•büv–ÄÇaüs…Kª}csk}s3[(ÊÈ‚U«çŠ¥_¿~{ýø ±­ž¶w÷*õz4GL¶¤/Ä ®,Z|V¦LÄE‹ËbÁÒ„…¹cò¢–>—Ô©p¤ÍéT:ç¤ÒÐGiÕfsº<©L¶Þhnnm_^]?¿¾½}úüéó—Ï_¾¼¼¾œ¶»Ý|±þÕk6Ûü¡DV•Á×Rb•óïþá_öb‰”Êåb©\o67¶¶³¹<Íš"m4¬,á þ.ƒ â{¹¼ÞÛÛ‡ýýƒD2Y©ÖÊ•*xDpYoµc©t"v¹ÝLz"B–Á’‰Njè2Í]é> -¯\öŽAî°‹ÐïC.¬p$ƒ¬l*XÍ^8™nlnïîž]\^Ý`»hÁ‚*ÖÇOŸ_ß>‚× -§w÷&³urïz¸‹X°Ö‡ãio4îFw÷ò—HŽ9räÈ‘#GŽ9rÎ  þñㄱôGÇÍN·ÕíçŠåB¹Šyì…R\Mç )䶊ēÁ”­\>"[éÐDÁ즂Aì+‡"J¬ÿjVve•‚ÙWÖÖ˜ P8ôVˆ6…Dª%3!HÁì+¤R´’݆š‘.a³›Lu.!HU,lÊb,“¾Îàê¦rŪ Æ -¯+wÝ.¦mÌvE½U,QHª©Û -rÂQ‘Ûhc.,M›³f Æ*EÓyù‹Éb¼Ť'…&ŠŠ§Zñb—Uãe.Šd7ùê–¸-4c€šY,H¬wŽÓÎÁνø:BëÎ¥ó–×Ö"±øéÙy£ÙÌäó…R9W,ÕÍÑx< «f8M¤³‘xÂë@•<®ŠKTS:s˜º™:/RY”(Ç‚-šiЮ-ê.\ r_äÅ2ÉT:ÜbñÄ`4><9½{|zE¶Ÿ_¿~»»ØÙÛO¦Ãáp¶¾~tròúúñû÷ßÀ€O:اÕé`l”¥Åg-ùD‡aüôÇŸ/¯®Ÿ<^Ö¯0_}ÿà¼Úk6õP9ø'Ä -•CÈ: sg*+£”ªë‰dêñù¹?ery$^UÊ•Z©Tiµ;Ñx2;\.p®¨xåt9‡å2ˆ½Ê0“†”‚ÅlWíN7:]—Û ð>.,¨`Åc‰d®P„ yðµ8Og›;»û‡GÄ‚uw@î¯äþ -†äþQè"<ÛÚÙM¦½!Ô¯ú8E¸¾‰@X$E8NðW18®üm’#GŽ9räÈ‘#GŽ0W7‚lUoµª­öÎî89ëôúùR -VhÉËÐmC‚Ùh2Ž%‚áˆ/€ÜV.·Žì ¨5‘Äþ5æK±SwV0— ¢ Ì .­®;öS¡¨S}ø€·ÿò˘DŠ©D—à¾È»¥X€ðR1Û‰¨¥˜¶($pÑÂAÁ©¥2•Àc§+“sÅLV{Pz/ÁLÅLSš]'“iÖR¹Ôž¦ñ…ƒ6ÆT7Å1NSRµùÄ/=ͱD»Æpú óƒfW ÎÅi« *fú”y_–x“‘Ø-þ.UÌBy‡¹õ¨[‰¯$r“ -Pà Ðí v÷öóÃ^Ê—Jà2•Í·n$óúý§"­2ËÁìÓ¬¬è*‘R¥pñýl‘›T‹¥[¥!ML.ÄOiVݪ/±çé †šíîúÖÎÑéùÍýýÙùÅx:­Ôëáx,%ÒéL.—-òÅR®PÊd³ñD¼àiu:7·w_~ýõùõc§×sºÝ:íþÓ;²Ì«+«kÝ^Ü÷§?Uj5ŒpßÞÙM¦(?È«RÐE´)Æ¿rü‚k™; ^¥a@ü¸“éôêúºP*Á#Ukp)W+Õj©Zÿø³2;R·N,†ÓÍèX°üÔ`áAx‰‰înW(EèG¬P$'’ihÁªÖî`4F ÷½Ã““³ r‡$w’"Dþ«Ï_°ŠõöñÓóó+¸õòêæàèdck{0„iÁÞp4œLF“u r!{o4ÞØÚÁ_ËoooòwJŽ9räÈ‘#GŽ9ÿ}Îׯ_#©,¿œ:•k0øS©5êíN¡T-”+ð²C‚àl-+ ¤U*Å5‚AX#ˆd+|Z­ˆQ/¬6¼›Â`vŠ4‡âÕª±­PBjPØaEÕ*Db_ÂÞª_>,á-49Hj? wÖòÚڪ͎B‚êš"úh^Ï„±ó¡?ÓRÅlW\« id˜)f»R™ÓÉÆWš~-´§YA(ÞªY®ê8NÈô(†jW„Ì €RW©JãHìBcà‚ð g¾²óU€ oe†:MåŠËŠLuÍj‘ZlÄ23€ÕŠj·Í|!ŽgY™#Pƒ€×ÍátœžuzýL.ŸÊæ°Û -óÀ5ð¯€Ò%üÛñY?eî«ê"wÓ©]@T©ó÷ÍWÚœ_KŸk´4þ“Šìàt#‘N·¿µ³·t²{pÔíõ©T -²ëKE° OT’ÕÉÕ"²H!ó!®Gb±Rµz|vvryµ½ G0°n{eѲÀ+ùó‡þöíûÏK?WjõÔ¯*ùbq0§ëPX§wƳ"@u‡“Ã^9ÐnæUStr˜í„`£]QÜ^ô’íî&S©rµYîÁW©5›àû*’H¢¨“Ja”jepv(I9YTÐ`;Na7Úîr9ÝnÃíq! -–/ †"!”"ÌäÀ+Wm4Û(E¸ÎR„ƒõøÀR„(?øIX`ý ¥ÁçW{û‡ÓÙFo0îõ¡ k4E)B$a ÆS°¥;7°üµ’#GŽ9räÈ‘#GŽ0‡Ç•j}0ž4ÛÝj£U,×ò%¶‚l+hµB5‚YpbŽÅá®4ÜX¶L)øÜ_ã¼(,vd求ñæ0*h_³Ùy*;á±c=Êl„šÑ©hT…—0Ø -ÒÝí4¨š}‚ŠÈZWT^hbÌ+zU³ w¤y@…÷S ڔݴZaŽ:K²ÇâT,aE¹Ud{ç íšn> -¯„&Á:aaé|ç Æ¥)ƒÏòCÍ¡è …D3}vs£Î˜üÌyÅéZ:¶âÐU¦­K$_™Ì+.jF-ìt¢€9¿,¯Šåñd…Tâ(o<¶âûþÌ„ ¾€²n êw]_t‘Ù¾(-¨rÑ¿÷B‚êû-„ÐÚdÞ@ X®Žx2ÝØë™\._,•Êå|©”/ÓÙl2Ž%“‘D"‹Å‰8’¶rÅ"²Ðe¹R—‰Tª7M·¶Û½~8×ÎyåŠeÍP¡®þéOJ¤“årå+µÆh¶‘Éå5A¼ršwÄU€æ¥S7÷!ù>Œ^§à,­²)J6Ÿ|zjw»Ù|±R«#V š°Íj½éñúÐ}ù"ÂE‹ÐQ(† -yó•Ëm¸À¥Ëíñ¹½>ŠÑh<‘H¥Ák ù[ð²Mfë[;»GÇfŠðééååõP°># ƒ°^ߟž¯oîONÏ·vöÆ“aõGýÑd<Ý0S„È‚¾™Ÿžžñ_¿VräÈ‘#GŽ9räÈùïa¾ÿÎ_ÝÙݯ5[ÍN·Ýí—k ps‚%¶ÊŠÉl>ž†`«P$æ …Ý¾€ÓãuÙÊ°z`æ#XQQ¨p„5+H¸Z#Tö% -]§Æªe’\B AìÂÂ0ö%¢n¡„ 䱃ã¬Ù»¢šÐu T90;³`©},ྼ¥p6-¶ÆKUŒ^¥òŠ‰%âãk̲Eº™Å‹ìϧ¹AA¶Ò9KÕÍþAM[`¦²,ªÆÐî -ÅRÙ¹H ¢q¨+M Wñö*Ò® ¼,á&«{ŠA«Ì~IÕŠ«ÒE»”.pÚù‚?*F™:•h»R4Çœ†j.ѽì¨bOáürªˆ^çßÃ#–E‰R8a–¯xKá‚à¡þ{Ú”þû…ƒÖý &^.W8Cx£ÑtV®V3¹|™¬r…b*“Æã~Ôþéòx0àK3 )Bæ FbñT6›/–Š%Øψu§|¡X©7:ýA<•„#bÝ‚pg¢–ñþÍüúõ[£ÕH¤ÒÈÐ…=]%ðÄÊ•ºËí!x+$äãt!)?x§A -ÈâyV -ü{:ö÷3Ù,xæ(´Yî¥j­?œÄâIN¡2ñYÔÄ…·»(­ó²( ׺Üôª)dï=§Çã }þ@uFãÉt6Aîõf§7Of[°Š)X(Eø€0X0EÈY° „õñÓË˸ùêúöðètcsg8švûä>%¬©™"MføKûU¦åÈ‘#GŽ9räÈ‘óozŽNNØúùÕu«Û«6ZõV»\«cÙ*_®Á|1™ÍÅRéH"ŒBÙÊãó»Ü^L‰Ñtëïe‹§·XãB’&“+*³ n«µeÔ$ø iÄôuT#ˆ¢‚D΢‚ã·sn+§Ò¸ê@S¹Zãó€ -ϳÒ_}΂ÅLSTžÒxJ ¾I€kñ—¹0cQ½¸ªA -c§þ+Ó[¥˜«yÍJûyf»n*QºhÄÒM×Ö|lPÑyúºÐÉ#Óù¥KášS¼Ò% -iàìLTšUàBŒ,‡ƒ;oêøWsB™¿øy -™¸t áÊtOéf¸ÏZ)8o²Ò­õ‚ç•þé]›ƒ½ „¢®Å;¯\O,‘l´:Þ Ñnç -…"J‚•D: ‡!Î ¥ø‡¯n²à_¾µÀ§|º©t± >ûEb‚Õ åj½ž/–‚‘ˆ×ïµ&Ç| á?ÿñ§éúúËë«æÔ+UjÁ*—kÈ ŒD¹bA"C1– aQ(SœØ#ÚÍpºVVW©äóós³ÕLgsår•€°ªµV¯×ŒÈ_¬pÐàLY|lK.—™+Ä)B§ =Ð…åóûüÁ@(‰ÅãÉT:›/–«PHìCÜÖÎÞÁáñÙùåõõ-±`½@»IÁúlvÞÝ?€÷Žfë›ýá¸7õǨ‹pº1†úê"Ž»ÃÑTš¯äÈ‘#GŽ9räÈ‘óowž_^Øú?ZÝ^©Z¯5[•z“Ø‘l…xì*[ÅHÔ s4趂®èÙbV]$óXOl™’@´DZEÊÕ -A²C¼­¯`o±Z-/#°ÕQ±À²²‚Wp¶²­áA ¨Šåç#{ŠÆüW „eçå&Êr·³ü ©S 2êÛLåÊT·¬-Bb×Må -ìtBµ²™é?>*ÈéT:؇£Z1©J Ú°¦š´+‡E*‹–ÅÄ+º•¸2Á´vAàâ‘V¢$%¢®˜%°°¸^?ê•â Nsë¼·Š‰? -³EñÈ)Q¿²Zªæì¦?j‘‹ó>éꢮ@öLJûuÁ…¥¾S#8/U©ï¸°œO<™ª!îR©ZÍ£$`¡XÌds¡HÄåñ .EUE]„L;š¯ÔLçõù[n«ÝÉ -Hw"ªJ½žÎåã© Ïr·ð¯4šü°òË÷ï¿E±bÉNÂ:Bd¸‚.¬éÆp2ë£.ÂÑtýµnloËŸ69räÈ‘#GŽ9räü›ù»{pÐhw*f©ZC²U); %p~š€_®ÕÊÕj¹\-•Ê»‡ùbIÇ-ä€Q®ÂS¨Lœ»ádä+Šyw0o‹]¯ÛãÿÒ`0ŽÆcñd:ƒS„PÁ‚ ÷-r¿¼º¹½{x|Oó•€Ü‘~…%¬7”"|x|‚)ÂãÓÍíáh -AXƒÑ`Œ@X³M”"œõG“þp2žÌ¾üx_éOÏÏò7NŽ9räÈ‘#GŽ9í³½CúÖüøyΕZ±R-V«¹R)[„ ¶ZÅÓi¶ŠÆü¡°ÉVÇît"«•aúO æß ç’ƒ‘dtŽÞƒf…ZSl…s‚++($hJR¿P»Ä7Ñe ³­ÖÖ ØŠY­×íªÉ¶¢.,»BáZLqRø@ŸP h[`ÐÒX|Oðe1Û•&ÜËÎ0즴¥òBwG*W*sI‰RÕ;0+] ©ƒ;*:uXq2OqWæ˜Z|Šé`X|Yº¹Îês)BÞIÅ …XŸ"ÀØE9Ëai!äª*çä&%åX J™õ¬4PÜY™“¼T}qŽÏ‚qû}xû<†Ý"m©#Ö¢Ø àƒšÓšôw(ð.J¦³£ñ´ÕéJ„”++•T6?¹('(6šè¿²ÈPàiƒÚÎîÞÙùE8-•«X¼‡­6û‡G¡H„ÖÐ -Y†¡hZ<™üòåWpÉY°™ªZ‹&’ŸOg®*Sž"²¦c9¨ÕŠ±œÄ|…ïåtrF,¼¶kŠýäô´?ìç -(^A Œ¶{ý½ý›¢8ØÝM’•ÓltrBvÉ• -)B'‚b!wÔ¯¼>o à†‚!(aœЃUB)ÂþÑôwÀ+wS„7wƒ,˜"übJX¨‹ðùùu^ïîÌÖ7(EØP Ö: âa4ÙÜÚ•¿qräÈ‘#GŽ9räÈùkpæÄÖÇ“)ŒÒT*ˆÄ5+X#˜ÍÇaB0D A¯?èöù ·Çc2Äó@O{afTÒÀãÆp­÷—Äìô5»}U±¯ÚìàŒ®XH.Ï^ç$,̶ZÆM‚ŒÇ¾Æ1؉ŠÅ{¢Î:ÅZ…AÓ…e›“­ˆQŠ -nÔX¥ÛéZ6.3H#{&Pݦq‚GM'>4¦5Ú3¨ý?­óoÁš+ -´ø²˜îdç)ë”|eF5KªŸ7ä!íŠ>i×T -*BÕ CL.¤µë–H €½Z䤲"ÖYˆOg.‹uŠª[ºµCPå·ëV,¯˜Í·Z¸U¿³çbc•þç|V‹ -Àgðøô¼?žàêÀ"^•*Õñt=‹+LoàÌà¼DÆ.‘^ÄKdøØzýþÏŸ¿¤²™"°W`)a­6[_Ï‹Š¦r¶+á˜l}Íf»¸¼:<: -†Ã•Z­DAîõf+’HÆI§ËŃÜu*[‘§DÍWÔ…e‚°„I¢ÊHÿßë÷__ßRéT®Pßxà¥K2—}{û¸¼ºÊ(X‹™WTÅ¢Š–Á4.‡‹…ÍB´®8Ýnr÷ûý` „!+™Jç ¥j õÇÓMHr?¬ëÛ»˜"|y…!Ÿ?ÂúÕ¯„õ -AX··÷$E8]ïöFÔEh¦dzÁxŽ ¶lnÁÿB±¹³'òäÈ‘#GŽ9räÈ‘óW7³-NÅêÛ -S­¨l•‰$RÁH4ŠxA?àòú\^?ºô9=^§ÛƒNÐÜ&âX\t$aiDã2TLSx*»5 ®­¬@ÏÎ ~À¸[p‰,¨óŠG²CÙÊe+®Ǫ«s}‚ªØ$ÈG#„Ð=Õ -¥’]‡â jD¸•H¦>~ú\­Õ²Ùîd¬P$‰ÅœxEñì¦çÊ\qbÁœ3eñÚn®Õ5›f(÷÷é\6“ÍB raÅ“Ið4tvÅ£Úy9ËÅ{® Þ E…,ÂÅB©j,jA Ëåqy¼DÁ -@ V,–Hf²9hÁj" Ötckk÷àðøôìâ -ÜŸyûç/¿‚…¤_ߟ¯oPáÖ¸w·S„}˜"\Ç]„C”"ÁÕãóKðUÿ,S„räÈ‘#GŽ9räÈù«šóËK¼²¾¹](WÒ¹B¶PJç‹©\!‘ÉÅ’éP,GÀI–?+þP¬ÂÑ`8‚–h öþ@Ѐº–áò9Jža§ùŒjŽd+De·a¼Õ–¤LÁŠØ©f…ä,Ú$ˆ—ˆdG²R·•Æ©Uš…R%ø¦8ýŠAÚíL’‚•­Kã5+fŽ"倜lµ !ȶó¹B»¦ ,RPH3†< o·2Ø5«`…ïÂù¬x W&hŠHI"¶ÝÊr׹ݹ/´/ЦLÓ‹šz”ƒ÷VéB S½Ö|¾O3}ÊÏJyG¿šß¢9¬G³8£TQì2)[ kßþ-pUé‹·[YêB~;çƒR©LÔyeüßÿðwW7·£É(ÃéWåjukg»7ü²ôa´;C©©R1œÎÿë?ýíááñÕõm<•Ä¾)¬T÷÷cñ¸ªi|Gƒi£2!x††pñ»»û§ggñdéWÄÊÛ KåH,îõXxPgf0A²º»˜.drû"âZŠ¦^__†PdCú̦2Ù»ûÇp4Ê⇺ƒÓä)ÉÊÁÍh!A`¹†‹‚ÜM(–áv³¡Ó õ+Ÿ?àqŠ0™Êdr…R¹†@îãÙúæÎ.LžŸ_¡áò`A n!„L~y{ûôüüzÿxqy½p4ÛØŒ&½Á¸7ÇShÁÂÖxÚÁáÎÞ¾üá“#GŽ9räÈ‘#GÎ_Ñ|úô¯¼}ú{¾²¹L¾”ÊÀJ"…†«h<‰ÂÑP$IÀž¬ܧpš•ÍÓÙ|*ÛÁ¹W8 „ ŠåòúÉ :õ#ælàá¨ì¤Lp” R«Õ -E²£¨ &´/SŠ -¢WW8¶¸ÄQA¢b‰­‚v&d)”¥Î×c¨ìvWŨV|BT²0 ‰ªbP¼‰ca Ý‚f&‘“³X~ب˜#k><¨YxVÄáÆÁ©˜•¨Pñ”u;—øW™¬ÄìX<§Ý‰Zd©âã~|PâK;¬LdºC0V)¢M‹±,æ+ÍÌZ‰ëšEûj1­«ÅiANPÒçt*K‡ *š¬æñYV“•ˆÀÒß±c½çƒúòø<þ‡ÿø>}þ\ª–˜x–j­¶µ½ÝhµÀê=íKçPus1@—þÃþóùÅåÑÉI&ŸƒÇ¯V €U½¼ºÿ(²¿1o'É>⛲+Š/xyý8žNc‰D¥ZƒúU,åV·_AéŒÓífú…é! ‹±ÖMN;Cí Î+†ywºÜ÷¿x8õóÅ"A`U«™\îøô,‰ ƒóF,¢\™:•Á1Þ¹ä aÁ§iœÐíõy|>¯?†C‘(ø&ÓYðÕZ©5ÚÝ>Îúí#û=¹?ûgjÁ ¬×·OO/·w0E¸w0ž¬÷†£î`Ž2žÎÀ‘&³ pÀÁxÒÂ.Bp|óoíH–9räÈ‘#GŽ9rþÒ§Õéá•nHgSùB2—‡`öT6’L…b‰`4ŠÆ£‰T -¶sU*õF­Ù§UíN¿Ùéµ:ýF«[­7‹•j¶PL¦s±D:MBa/àt{À9)ó«ã‚e+V®H™àʪ©M­`ñŠX­~Y2ãXÂB!Á5p›²($¨0ñJ!n+oeæMoÝG Y±{Ù9‡•PHB|¨nc9AEµ‹˜,$R©ÒÎåiÉ •¼8“•f& ÔhãÍ]$ñ§q™AÕnò©4K P¡š¡¦ø@_/(âÖœÅy·tñ^œ6eçV*!b Z«T݉Örò”Eªb”Æ×ÎZÊ‹r‚œ0¥p{jº•Ce‘­4‡ù„[9ì•æX¿2E­ùœ ¾8-¨¿[üg†©Ê0,;«¢ÊÄÖ —ëßÿïÿîóç/ñT´@+¿½:YߌÆàS³0*¨Íjža¥9ÀÎx||šÌfU©`q¬7Õ[íå•.0h,„À?•òåJõáá±Ñj‚/žJÅao*§×›+9C”Á·BÕˆ÷˜´ẻZ¸KÂßRÞÿíÿø÷Ãñpÿà Übˆß^Í拇DZxœ‹º¸T Ë $2oñ\9…(ËÀ‹Kè%D[PŠÐë BÁH$OÄ“éT&_(UÍ6¹Ï6¶¶aŠðìüòêúöþž¹cŠ;Ö¯>ùS„ÁÍ77wGǧ›Û»£É¬;vÃMŽ'Ãñ´?štúCpàÝ}èÂ/µü5”#GŽ9räÈ‘#GÎ_æ¼¼¾â•^˜/UÙl®rñT&œHcñ`4Ž'’™\¡\­·:Þ†P¦ëÓõ­õÍõÍíÙÆöd -Îy'í^¿ÞhËÕL®˜Heñ„?v{}ôHuHQWív„·²­¬Ùp3àzI5«%¸¾„%,Ô!ˆ¶ ~ûê2E²óí„°µ`iÌRe§ªü+eÞN÷·‹Å‚ÜUÔ¨1 Êô_Ù9Õ]¨¤²Gk§ÏM·±&AU7C…ÔIÅd1ξ¥ñM‚&KåZyЖ¦‹ u`7£ªO¾âÀ麨S õÄdåpðôuNMÒçŠ|fßdçâ„óf'Å¢Jés±>Ñ=¥9̸â‚æAÇûÄuÑyµ°êL[ãÜSÄÓ¥›RÒ{x+^ R9ˆÖšÝþÇ~þðaÍ®@ÙÄåV4 lùÃ?ýø쨚Æ@R*g{§"Ћ\nÏÿô?ÿ¯ooþ°‘+–°"„]XÕF³Öhzýþ…å€óÎ."s‘‚¸¼ßêÖíÝc±Z-ÐÞÀl¡¾@ØSÃ"Ìm¥ .,j¾B^)§Óý7û7³õÙíýC¡T*– ­\«gr¹óË«P8DE0(IéNt(§é¼‚‚¶c9( ‹êWPªBâØÇÀØv’4t‘ü ay<°‹ÐçÃáh<O&SÙB¡\ªÖÚmrÇ)£cr¿¹½‡ ÷çWœ"Ä-„_0 v~z~y½x¼¼º98<†]„£1að ¥'$E}x|òãÇùƒ(GŽ9räÈ‘#GŽœ¿Àiw»xœ¶4»½X*“Èä ä -âÙ“¡h<…b‰d:W¬ÔZþ"X¶wvöŽŽNðÖwö6·w'3HYivzàŒ/›/ÆSipþå†Ü/8kSucMn+Ķ²-#«î„"ÊâÞ@ ¹‚ëÈ|…v@{®®.¯®­Ùú³[aìvF£¢ñ@„¨‚—P]Åpx³yc­[÷1·›Ö,,”1êÑ2³ÌŽÅáÖMK WñÈ)‹áÊ TÅ«LwBµ .^Õ˜á -ëH¼lÅlW¦ØEå&“ë. -YÜŠÃÎaÛYu ¯;1{• Gñ©@*sqá_Y‚*濫—&ÎÝaí"„ܽÆîX0œ¸´EWß+4-Oº]¥¾S/8ï¶ÂF,½µ‚áHµVÛÝß¿{x~zyýúíÛŸàüÿÿí·ß¾}ÿ~{w?cÉx¨ˆµà€oåºÆO¿üq}}ãéùÅéqa‹j ¬”kµL>?¹^VÞæŒ^œXDúCÍ}T‡K¦kv§?@BS<™N'ÓÝpjº™1t„XåøíŒdE|S6»žÌùåõúæ&¬GÄ(ør YUð­†ßQ]Çj‡´r¸á”HU¬ùÔÉ-~1 —ëoÿî?mnmžŸCZW©‚X‘Xìíãg¯ßOä)§ÐIAÝVèÒíæÉí…Ò‚N®ÏÂôh9œp£AïöÁw -‚¡0¹CV¶P®ÔjÍv·?™®omïîížœž_Ááò`½½½}úô‰X°>á:B$aïîÎÎ/Á·ôt}¼\”"².ÂɬO»qŠðöþ^þ8Ê‘#GŽ9räÈ‘#ç/d¾|ùbx}x}{?[(Añ*—Q” „¡rOeŠ•j Ÿ4íì힟^œ]\sÉ‹«ë‹Ëë³ó«£“³ýÃã݃ÙÆÖp¨Šw×-Ý‚Üaç(`¯tÁFÅò‰\Z)f–  …¥ÌaÕ-`+Kšo¾yP›K Λ¬4Ç´û<ÞÊúˆNg,™Ï6OÏ.®NNOG“i6_ GÁ4“/ ¥R,ÅR±T*”ʹ|!G‰F«uyyõöéóóËÇéú†ÇÐ.,éï2‚Ö?þá»{ûàñb©$FTá€^½ÑluzÝÁ°Úhzà€0ÇG…&ÓmM_0·×W©Õ‘±g:žÍP]`_‚ekwïæöîó—_Ÿ.¯n¶wvúý^£Ñˆ'SÈiår !‹±Ü™ÅZmvü«Ï/.ÛÝnaWbIdµfs4™•kõT&‹u -¢łԗe˜,êÅ(ð „·w÷›;;Ø<ˆøWµZ¥Ö¸º¾ùçŸ~âVôŽ(ˆ®26»›ÛH˜W8?H}Yn¼Â2ƒ0TˆE-Œsw{À×&x=}äŒDc¨,#[(VÁ¦Ý&›;»{à{÷§‚õöƒÜ¿|ùõ •°Þ>âáø'Ì6¶£ LöÇØ‚5š­&ëš"<8>? ;»²‘PŽ9räÈ‘#GŽ9ÿÊóðHð¼íÞ ZoÆÓ™p<M¦Àe ó…ÂþP8Oe ¥F§7]ßÜÝ?<¨•[pZw÷ðxÿøN…îoï®oî~u¾wp¼¾¹=ž­wúÃJ½ γâÉt qy½T¼RVl6â¼Z^1%,sYý°ŠÙV°‚7BíÈŽÓ|v®OP³Z­hQ òeaùH3yVä šE¶°T ÊüZ”Ö®éø•¹®ñœ+ÃÎLYBi -äýW⥪‹Ìv¢n ŠSº”EÎ+¡XPãhíL¤¢¥vM`§3‰§µ[$)䮋 +16ÈÙ¨x¤•¢‹Õ|Q ÃŒ -ò=€x£˜ ZªnbÛ•EÑ?UÌñ).¸ 1p.0H'}5œw2d7œÁH¤Ýí¯oîžœnlïä -ÅT&‹Ušb¹R(•óÅ"øXå Ål±˜‡ ”°p€¬Ä‰b¹z|v~vu}r~M&EñÊMS³; çªÍ~pp4O²…B©ZEAÂJ¡¥ðL.®o¯®o:½ž/p{¼N7TZœ.·Ûã‹×ëõûÁ“™nlîoíìíì´{°¼ƒåþñùîþñæîþòúÜzx|º³w8ÛÜŒÆõV§X©&ÓYp?NÄöJ… ƒP¿Z£ÉAâ¶Â±A¨Y­®­®Ù×ìv!ʇ%&»²´®puŠè’"wÔ„0 "ú¬:µ4†aÇN-» xG·?‹ êŒbÕY!2GÙ,‚œÛʆc}îº5Qøž½J´ZQ¥KÑÍÈ¡)dibrq«T¦_‰Tv—ªÌ!/[Ù5ª_iB#!§eÑT ¦«sú•éÚâìN»µ.Ó¬,ü+“a¥/.T´pÆP[äÂÒÞ“¡æò€Š¾@’²”jsiAí^–ÓíIe²̽±9ž­ç -ÅL|þÊùR)[(¦3™X"‡}~¿×ðúüHÒEbñT:“/ %¨aÑ)žLå‹Åf§ G˜Z%ý棅†¢ª.·Û€#ä -¥"¹ƒ'/ô‡Ã‹Ë«OŸ?ýþýáñi}c}0 FÃÑd²½³s}w÷øt~ ¿v÷ÛÝ^®P(‹D¶BtpµP, -¥L6›H¦Éd4 †B^¿?•Í5Z­Í­-ðeòéË——Ÿ­v ¦š•W2î:|%5½P,¯oîÔMúT¡ˆW*•«õÆîÁádc«Ó³Œ$1_9ùÎA§NY†“ÀÛÁUðÂnlíî—k5T>XÏäò{û‡:‡yGX-JnwÒ¡Iµrr ²]q€,VPÅ+7t[7qa!¾Š\XPÂߢ¾`0ŠDãÉD*˃W´ÖlCá|ç‚oÞ£“ó œ"|Ä)BäÁ¬¯_P!Øðúúöôôrsswrz¾µ½7O{š"„Öúxº>Ïz´‹ƒÜ¿ÿ.4åÈ‘#GŽ9räÈ‘ó/?÷xeïàœ9†â ¸ÄÁHÌ ¹ý·œ'Å3ùR³ÝÌ6öŽNÁ©)´L9»“>pîÓêôÊÕ8ÅŠÄàœ &ÁÙ±îXSTÌl_Y[#UƒÈ…‚le#V+K!à\? ÝM[ãó€<ÿJå×5ce¥Ì}øA–%ÄTvUÈ ò¨+»Hk·Qʤ©[IV¦eS-œvTE¢‚ºˆm·òبjŽîN}VÖcr^,EciA“¥X›b¥ 5wqô*;¯G¡Ãª4$ȲtVAÈGü>H,X:¯eY¥*Ѹe…JYW Å+]úYD'KÐO.ta©& ݘß__dÁz/<ˆwöøý™\¡Ýë†ãZ£™ÍŠår¡XÊäó±Dº<ÜÁ§¨š¢‘vN—Ûãó"qðÍ£\a1‘Jûè^TæÉTü±JXàx‘X<‘N§³YX½WÆæ® -xF‰dªR«õ‡£óË‹ëXywsw~qyrzvvq¹µ½ÓéöòHv+”Êà¾H‚˧2YðOGc¡H4ÃáH–éÝò…¬öÂ¥r&›‹&ÍNçøôìþéygÿ0žL.7ÑÙ ƒã½ +™ÊôúÃj½‰AXÐ(UFD¬Zm{oÿàødg~ů ìí0xH»ƒ„X"ƒ¹Eäίv¾Xž¬o‚g‚ 9`ÅR±R‹%’vE¥Î+º˜-“âÎd+“sÅXXxË’¼!Mº¨Ëã êf¹ûƒÁ`8B@îièÊ« Öh=X{{Çèk‚Ü1Èz°°‹ ëåâÔø!r[! k¶]X`cŸ×-wÁP$ÇXÁªÖ›íLnlÁáÑéÙ%J>>=½¼` ì"ÄúÕW”"ü6’áÅÕÞþát¶ÑŽ{0E8Žgãéúxº1šÌ†ãIo4éFÇgçà÷üÈ_O9räÈ‘#GŽ9räü‹Í÷ÿÂÞ{u·åÛ¾çÞ—ût?Æm+Ë9çl+K$"3)Q¤"Ũ”s´¬ä¤äPÝ]k-¬€®:=ö>/{ý HÉ”08kÎßü׿ÐÆîÞ‡Xß@8Á%ØõÚ/ Ÿ˜¼~ãSeßàÐèÄ$LnìÕÁÑáÑÉñÉg´2¾4vî}øˆCó‹ËùÒÜèÄT*7l|®ŠõôGººýÛÈWnEípËm.si 0býJ²–Ò û%¡¸3(uæxÕ—dÎgeÚ«X…J1E*” „‘À‰ º±rEaìDø"òQ±ìn+Ù¥pâ®ùcÒ…6aŠz¢€0¥2g)cJV WTbBÁ=ίŤüÀ‘2#IY!íæ†Äà­\<>å´K¼™Š1Y)n•f íj•³T›Ì¥ZÕ*·“F„ -e…“³å)™¥»UŽÏ©L -n,O²²²Ü- +Ó—E ZemW&ÙÉãéO ŽMZT -p®†RÉÁ¡¡xoŸ×Œà²rÅÞè%!Ý Û5¬tiŒ~ʼnTN^,îHô“4NGî®`$‚\SÝ=½1¸ S\r©LÖØJ¥ú£±¸?ŠÀ°‹Z8¯c„StÝ8>ÖÛk|ïC€•ËÓ¹ÁÄÐÈØøT¾0˜JuÅb&´JŸuª‚Ö)ãâþ@0B”0ó˜Ž)3ö Ž­¬­þúíÛÙÙêúÆØØx¬§'Ž¨ºJÙ’¦{#]]=}ýƒÉ$hô3þŽKã“ÀAšÊæ2ÃÃÉTÚø~Ñ¿ÂË#B;Xkº„… 5„ºÂz5Y©¨ï4s…^H¾2õ+p¤ŽÅ+´xüÀ‚R£ E^ôP*“›˜.çæWVÖ7·àl0þFûÅwÂÖwÂ]„_O?ã» E¸Z(ÍMçT5»QŠpêWùÒ,ºküüùSÜCň#FŒ1bĈóg錱öŸzûB]Ý¡hÌX#Q_(¢yý’ª»^_¸«;‘LMMÏ-,¯‰vööö>†óñÇÃ#ãÒh»ZßÚ1Ž˜!”Ññ)ã³”ñ‰ -µ@r0âñù -H@0÷,X.X «µ½رÚÛMâºE¿â!W.·½P²eM³²¸.B ƒ]–Ù¤¡KÂzd=WæN7Çlï0•(Ù‰^EïÈ+%sµƒ—û# uÜ£B#R‘~@‹KŠš£´¥Pkë³"Bä_±F)úDŒE‰ë”m¥R´;oÍâNAÇé ¯MËB¾rª+ð+J±ªIŽ+V6±£®¤¿b¶—3\IN$«ß/¬ Ëøôö€ßÉIÖœ(hF -†# !ÈýÞÁ¥Ø´, ªŽ6‘J+Ÿ"tˆªìÅÓ§Àlñ> EÂó‹‹ý‰ALe®§¾Á®în_ `ü²Ã÷’,A“¸×Ð ¦iÄûå2P5h,þ`(•É Ž—ÂÑt|zxd4;:ŒDŒ¿XŠB i A±Œ+è^_ îéèH¤³¹d\$“ÉWJŽML..-<8øùë×·ÓÓÃCã¯ÚâòÒÂÒÒúÆæÖöî·ýýãÅåÕ©|atbÚ®€.72¾/Ýã5~H¶R~E”+N¿¢Û($,&i5!&_! ²¼4H¨ýJýƒ^jÁò„»;«§·d5³¹‘‰©™Bqnqqem}sx°`Šð+J^^ ÖHÁ ¬K”"<=7Ž0þžßç–ó…ÙIÂ*Í" «Pš¬|ÑØ?·°dÜ8úiq#FŒ1bĈ#FÌÿÍÉŽ#Q _uu"]¾`DõùÝŠÖæ’ÚݲêñE¢ñdjt|ªd|n‰¶·vövööF»>Æ—[Û+k› ‹+PbUŸLçFÉtoÿ`W¬'éôøƒà™¦ŸÁQȎЫ„…ô«¸´`;C\—x<»›v ²à)²ÇÅÉM¦ærC³º,M2‹Lô(Ó=®Æ§ühPb[án"[aó¦d;öŠ„ûPó ÛNhçY /º°HÀÐͪ[ðÉV èæðVx‹Qô"L¦±TqÝ‚¶&AúŒÖ6@^˜rcX:—øÃ{ܪâ˜(´\Ól¥ØÒ‚ŠCåŸ]þú=ªÝ‚½b‹¥ß™E³¤ü~£ei^ßÆæÎT>ŸH¥‡ ij(™ŸšNç†eå³ú¬lJ”lõti|¿BE0Z ˆ³„* -èÑÔu+•É+L$3ÙÜÔÌL±TZßÜ<8<üxpÖ‡Gk››ÓùâôLadl<™§¤³¹AÐÚã €ï uFhBJ”‡q[Y2ƒ:a^‘=º)^1 -®&ÔUļÂ-lÄ„lŠÐãó{A!p`…;»º¢ÝÝqãÏmë?Ö3ðçzyucs{ïL~þlggV –)aÁ.ÂOŸ¾ áÜü"HN¦ò EXÀ)BÒEhÜŒ{ÇÌŠ#FŒ1bĈ#FÌëìÂéìh8 -hW¡Îî ¯Âª×ïR´–¨lëT-‰Ÿ‹²ÃcSy€^XZ]YÛX]ßZÛËÊÚæÒÊÚüârqv~&_Ÿœ0>B &óª+ÖŒtì•Çk|D•±”a¦ó$ ´ºp°D[ÛÚ5_q倒ÜÎõRÛ•‹‹ZXë’)OáÄ_ñ>1w.Bh'_±J”Ć©`Õ!ó,;PåY)$*([¥-|. ­²°°˜ü bê3 AÙ -HwsvFñ¦)K$y·Øl {‰¨R|Û RÁŠõP9ñØÝ– â솲+T²M¿rÛe.ÅÙûd©~ã•’þžŸJ¶9£X¯”-cÖ.I;<>IÀz>À¼ÌŽ.¯mDãqãQæ"šýš²í¹lœ«¿³¸R–t!AfQÝIVo ïíŸ)–’°špàå{½~¿ ò£db‘¢çjŒ€f^Ù”}p¼=är»GFÇŽO€~u§4„Yš½‘ñ¡L.ÔÙi’Ûq ¡œ®B ’£¼p¸63ÂLbæ <˜îJVfxt472büüìðH¸2¦ç -1óa’Ðè¥sj•F9]Ë´ZÃL‘J%F,S³ò„ )[Ay -õ šÒ–®üÐ…å%Š–îÈ0˜" ‡"á®hW7À` inx¤-gçæ—VV7¶¶w÷÷Žq!ä`™¬ŸÈ…õëòòÇ9”°ŽO>íìí/¯®gOÍ·Õtu ê"D;Qá‘"#FŒ1bĈ#FÌç\^^ëÿëOì‹t;£ÆÚŽhþ€[âUCsËÛÆÆ÷M-ínÉ럌“° }*o|,*Í-ÌÎ/Í-,ÍÎ/g¦A»za|rfdlÂø(8”Êöbñ™1Î+d-Ö'25×sËí.$4#„`iik7¾$C"U™r×EȦ%ä­"ŠqIñ@ZHD*jyÂÂ`G+,|Y¤*V}¢—Â*ö!agZMyJbR~–’A–yEå/ãK™m”ȉ”ÊÎ¥H8‘\‡‰ª|‘ $2ð+VébÍP!ZÇáArÅø²?%át¡Õ^ÅH[኷W¹§H bõP¹UçòÁß×[K ½aPqúÒ´«àZklnùôùËìü ÈÌ¥S™t"™š_\ZX\r9H±_ÜÑÖåhÇblT$¯§’þ>>Q¨ñJ èyc½½£ã“c“Ó™Ђ‡úþ@Ð ùVŒf‘­4™X¤à6‰r¯AQZÛÛööö·wv{úúÀOâÜu&;<9SÈŽŒOÈWÄÜ¥aÒ²tvHF>¿?nWÿ@b&43Æ‹Og¡¢•É¦¨•Nÿ}ƒ‰XO_$õƒ*øÃ¥¢p"x -B»"Ï—bf»WcíØ[E4. Õâ‡P5¡ŠPW:T¨ í -^“¯¼„…%,?à ƒA aEcñXOoOßÌZÿ2ù¢ñz €ÜwPe,P°NqŠð;“"„.¬Ëï§g_¾|;<<ÞÚÞ]X\™R´`Íç!kÁ´`Í -¥yã&¢ûÂâ~*FŒ1bĈ#FŒ˜ÿî‰ÆãÁHW0Ä+_(¬ûƒ²æmu»ß77¿~÷þÅë7¯ß54¶´ºÍEc½}ƒ ájxlbtbj|rf|bzlbzdl"72–ɦ2ÃC©Lÿ`²§0ï wFý¡ˆÇÁŒE÷ú`ë „‚åBFÂjG*–ÈÝ…î’d"ÖÝX¹Â,,Æ^‘–@ -§rc*;Nrü+Ò9(+̦¯Ë2‡X—™ä D©V棎Û2_Èš¯8N;]¨ŸŠ•›†O1CÕÅÙ«,j•Ã"ñ+‰¦UÞa¥p*0”T'>GkçD*Ùr<#(¹íWsB¸[d+¹ŒÃJâ(GÖºô7Â}v™Hv²ZI6!«\¸Ï¢Aù?þø£;OÁ¬ÜP:ÎåÖÖ7†GG›[ZõÉ1ôgþ`»ÃËp¢µÛìX”OÅ 'MïŽ÷‚†ÄÉ©Ln89]éìp2“íp»Q‘"¯\1ùA•—Ë4®CPÅ)BUÓ:\®hw÷ùùEÿà¸~&‹øZÆ2:>¹µ³ÛÖÞN+æÊdCÇ2× -ä¨C -} ÔÙîììŒvG»cݱxWw¬+tEÑH öø| 'Q5I_ÃnnhÏNˆU¸ˆ1byLI -z¨pá N˜Wf¨ˆ]ج…`YšåÉEt7_Ám _y|€å„ ÷îXO¼·¿o ‘JeGF'fò¥¹ùÅå•5@-üðñððø3‚×ã¡!„.¬ïßž_|ÿvzvòéËþÇÃõíÙù¥éBqr:?°ísH¿t÷bi2_œ)”ÖÖ7ûÈòÚº¸™Š#FŒ1bĈ#æ¿c¦g -Æ:›ö…"P¼êBS ¨x|²ÒÔÖöúÝ»§/^<~öÌX¿~û®¡©Ù­¨_Ðøpë1> ¥©Ì`2ÖƒÉÔ@"Ù;ˆ÷ D㽑h·qAo ¤yý€Ùn|ÔòúŽF5d€!*’¤Ú° ‹5ba“•Åm%c© -®Ü Š -IœT@˜’žÝl ¤é?¬JuÈ$ HPWƒQºæ"~ÎjSDÔ¢ùA™æ‰Ò¥p)B·b)Tíð+"|™:•MȲEÙ^Bê†rËTSrY êü~z“È£O¡ª,M‹ØŸÜ*Ç°r[ìHõR¹'µZ§l:þ}^XøÒM~;y:¤†¡‡êÈÒ0é]'zäC]²¦™B(HDdxK· ºšNS„ÌŽì4U)s§©_™QAÏÈò -eÌCK 1¼èZÆ6:X‡Zu¯ßX‘P8ÒÙÕïéëéíJÃ*BÀÁZX4{7>~ä@î EhR°Pð'J~)ÂÏ;»ûË+ë…Ùyã“Ó…éB±Pš-ÎC{iv -[³N¾~1î&ÐÐ+FŒ1bĈ#FŒ1ÿ…s~qa¬——W=P Üåw‹7V}·¦·t¸Þ64>{õêá“'÷>|ðäÉ“çÏ_¾yÛØÜÜÖáVŒLþ ?ÔêŒFºº±ÑXOw¼/ëíìî‰Dc!HÐòøº/€Öš×È-È?ÇÑ!ªÆC`+@Á²ŠW­äî¶ -V2v[YÚIÐÍñÛ]ôtÂÈ’h®cÒ;d™³HI4ˆ&(»Y‘ŠöÊnKHèQ¼;‹kå“ Äz—)Ñ CYwq$vêÔ¢~'YµD%QÅ×-AKÐÏ©®r1@ÉfÐ"I=ÙÉp%«¼À¥p´+Çâ?ËéʺäÔhW«¤òk¥¼íJbPÊÄ m -’¦8=ªØXUÆÒÒÖ:;¿°¶¾ÑÓß@僃“;»{Æ/,ïãŽ/cñâXñD¬·¶µ556½ohx×Ð`ü·´·£\ż&‹m'*•Wœ°Ü„pUº'_(­®of†G ö -Ž¯on·´µqWÀ‹¬š -A¬¡I%ú¡`ÁmEÕ5]òìÉúÆæ×oßàèWÆ2”L$?}ùjüaQTE±6…å)ðtX}R±óJÕ1æÝB¯2Ó¦?Š{Ô­3DƒmG_ê´Pc¡îºÆhSØ@ÅÈY/ÉêÔmåU  < -ƒ¦8†š=>#ÜÁ€š˜7ôM;Jö÷'’) `MNçK³ó‹ Èý“ñ³ûz --X°‹€ÜM ë»ñÐç¯ßN6·w–@Šp -JUÓÅR¡Aî³ó3ÅYr7S„bĈ#FŒ1bĈóß4‘îP®B¨ÓŠèþ ¢{Û%¹¡¥õåÛ·ž=»óàÁí»woݽ{çþý‡Ož<õú­ñ¸ ¨X²ñù×øØäóøÐÅ4>NB‘ -~ªòúråƒ Ø6ýW(B¨Ï×™õ«v‹ÿ -ªX€‚%ñœ+S¤¢ AVËâr´dPé`"~@¿RD9…(TȸE -™pŧ3 -:ø£(ÀJæ}V|~Ð…‹‰*e2¬mÊEÅ+kà ét‚\™,V}²`Õùä OP'6*…^CT1 wö -¤IЭؠUð!År• -Y2Ÿ”Y;~ ¤]q­¬ò—Ro%—Iÿý¾(ЂFwÌ–ßÐärduM{ýîíáÑq’étbp|jjwïƒ×ïƒú•f/´Áá5ãÈ·[óxûúÇÆ'–WVOÎ./¿ÿüùãçÏó‹‹ýùB!™LvF»›ZZŒƒMs"ºó5…8úç’¤xOïÑñIiv6A)ïùxx”HAó•Ê _8ÖG‹9–ëã6@¡±Öt½±¹iv~îçÏ?â½½0?:ÉdO_ïÉçϦ -æUj¸â}SD­RY%ÊCY¦üE,U ÕŠÏ R… -©ˆ± -i\º—duÕÃ(cšnÛAû*Á¼3–-,Uk³HBU,øwÕ´xéÈ»…O÷ú`( -Cà’÷k0aüŒNLÍçæW×66·v>ìÁ*B”"4)XØ‚õ¤/.¾ŸžžúüåãÁáúæöüÂ2LRVav¾Pš5S„ÅÒüâ’qO™[X7V1bĈ#FŒ1bÄü×NfdÔŒ@ñ*â E<Áêõ»Uj¾ºÿèÑ­»w¯ßºuãö­›wnß¾wÏØóèéÓ¯_¿|óö]CcSK;R– }>P–‘á'AXõî3Å+àÂò#Eˤ`A?†„R„@œQQ· ¹ƒ:B¢_ëvÓ‚EB‚f^ñ®*7-t™ ƒ2JÒB@3ÇGSè[è@:í¤1Àæ`S›b WT¶’L‰hbXqRÙ\¡yUÃd,R)œTÅ„þˆÿÊea©–c8[ïò²´$E‘lQAV¤²$ -Y›–d+ äŒX -ÃWw¢ZɼB%;Q³¸ o©’ldu¥Œáªœfe'_ÙÚ5¥Œ„Åb¦X ‹•§NTY»”åKUÓ>yxzvÞÜñ„ã`—ß`"1>1¹µ½ŠDãׯ¬Oê윚Éoï~øôåÛùåå×o§?ýqùýÇñɧíݽ­ícãÇÏ_þùç¿árùóçúÆfw<Ž~Î,,á®jzSsK&›ýxpÍå’ 0ÎdºbÝç—ÝñGµ"µ€L6 J|)¡Êîdä/ã`Ïû††cö> BÌd’Æÿ†‡wvvß76Òd+:1À+šT±ó -ÙÀ(± -ËP¬‡JÓʘ¬Ì/5–Á׌û™” ÂòZY0Bè%Î+” ðš¨^Ä9þ•W57C…0KL­À‹E¶ž>ä,õêéééëO$ÓÙÜÈøÄt¾0·°¸¼¶¾¹³ûaÿãáÉÉçÏ_¾o¹sjÁú…ô+(aÁ.¯g'Ÿ>ïÂ.ÂÒìÂäLAŠp°ò„51“ŸÊcÄUŒ1bĈ#FŒ1ÿU³µ»k¬O¯z äƒÊ¯B!ÝR<¾vYihi}õöý£gÏïÜ¿ýÖÍ«7nÔ_¿~õúõk7oܼsçV±ž¿|õêÍÛ7ïß74574776·4µ¶5·u´»$7$Ò€Ïw^äð1vaiˆ‚ej¦àã–ÛQ„[°L#V{{[G¦¯3iA7îäÄ+ ìâºdªXæCf/!©tJ$;‹¨b@X’I²rpXYJ%z‰ø!k–›‘¶ fED'æHžÊîbvJ¼„%ñ -’›ÚºÀ¶Lpë²Âfý¬ABl¢`v•ZªÜØEPWnUµÝíäv;qÝ^h1P¹ß”[áô.tºò7,U…JqÊþÞ‚%;ëTVדì\>¨YN´§ÿȆ¦ë·ïß9=;÷eXŠô«¡Tzd|byuµ§¿äeb•¦z<½ý‹+«[ÛOOÖÖ×Ç'§â}}]]±àÄH $ÆFw,Š„{úûg -…ÍM¤W|<<L&uÇÖȽlã•6·´Žïü˜6QêÀÕ70¸óa(AÁ=¢S©ªƒZ…ØìDM"Î+&?ˆ$&|ÏïçÏ_ç‘xòƒÙl*Í—JSÓMÍͦ~E€WHk"–n‘³«•Ææé¶Æº°h½ Ò¸<Œ¥«T¹òr9A>„XX ð -u z,Ì+ó:ÈXe -\>„½BÛÈye±á \ùLýŠ€°PŠ0 -‡:£Æ?|¼§¯¯p(™6S„s K(E¸‡S„ßNOY;Ö¯ëììâë×Óã“­½…¥• NÎfŠ¥Âì<¹£!H(Î-wãþ2»°,nµbĈ#FŒ1bĈù/™XO/¯ÂÞPÈ i¾€¤ê­né}sóóׯ<~|óΫ7nÔ]»V{µ¾,Wkëë¯Ý¸qëÎ{<|òäñÓçOŸ¿|þêõ«7ïÞ¼ÿ¾©©¹¥­8²@´}ÐÓÌžw”„æ+N"T2´`t9*$E„X¿‚w—D‹©`%™Š–›(WE¯Ý&„+V³b"„½N[Y…Š¿Ž¬ðØ+…š²hTPµx¨ ™J%G2Ž)‚¨b·ÙsKªÎÅã­,Ü*–‘…ÃDïR$' ‹ËªL* ~%©N­‚ -Gk—ØsÚ•¬:\Hš“mI@7¯}ɶ -B»5Ë¥ü•GËQÈ*oÁ2+ùÕ­ò|uuy©šþòիã£ìp®0ô+cY^]Ë ¸$·ÍÙKºÞÕ›[\X^ÛØÚ^ÛØLe²Æ/øàÐP2J1“¹1&ùðÙd:Ó70ÐÛ׿°´|üéÓñç/‹Ë«]Ýq ”,pF2• µ–Ö¶ÉÉ©½½¡T:™Á×O§Ç§g&§òº×KÚ9ñÊ”³p„P5 N$ÜgîàÞCM“edlüøäKfd€â³ÙT6›L¥C ‹+ºÇK$2ÕNÔ' ¶2¶+–j¥yl—‰À²ÉZ³ðõqù >+ªY!H;¹{Y‹’Û‘0…ií„E™W(è¥È,$„_‚t¡ÏoÚ\½>Èhà À„ ,Àqÿšñ^ `¥2¹Ñ±É™|qnaieu}kgoÿãáá$¹;;;¿¼¼DÖ¯ŸÄ‚õãçÅ%H~þòíãÁÑúæ¶qîL¡815ƒS„ó0Eˆº 3…’±ÝbŒ«Šû¬1bĈ#FŒ1bþã9ùôÉXï|øà ½Aà¿ò†ÂP¼ -)º×¥hÍ®7 O_¼¼ûðáõ[·ê¯_¯­¯¯©«3–êÚÚš«uu×®;oܺuûÞ½»÷ç¿Ò4œsô¼|ýr Ñ¿¾¹ïïEW€†(ã:ÙTv8Üe Wª©/iÄ|Å Y*ƶã®@s§ŠìŒÆ -¥ùÒü¢ñˆÜžÎæŒo1™ÎtÇ{Û].*[!)É”ª4ÅKRLY¡f}T·*Z¸s઼T€"Z™Ç£Ò,!Ƴc…½ãÀ ¢œ )y1¡B¤ha baH0Û‘„å….,/ö_ù°åóùC@¿ -G: ñ¯ßÓ?S„£3…"x¯¬ol›)Br')BDqÿùËXþ@ ,"„]„{{÷Givaj¦0ºÈ¹°Ì!Ø9»¼º!nµbĈ#FŒ1bĈù/™p4æΫr^y!Í5O›¬4¶¶¿~÷Ûïß¿vëVýµkÕ@¹ª©ª­©¨©©®«­©¯«©¯7ö_¿yóæm bÝ{ðàÑ“'Ï_¾2N|×ÐØØÜÒÚÞÑî–Ý2ø¼O$,è€8w/¶`i¨ˆPC‚Dujºdº\HÂBúU *"dhWl{`ã¹ÂÝ‚ -e^I–N@ȹRö#r»ËIz2ið2Û XÆ‚E¬V4Èg y†q[a ;§_a•Œ2Ò)­]¶f±&Æ• ²l+‰Qº8ñJµv ’þAN¤b ël¡ýYåe‹Æ¥P»•»®8aØU«œe7YI¿*N.,å¯6ìÐ*Ù9]èl¸’¡ #óÊ•R&Th|ƒoß¿û÷¿ÿý®é]& ÌQ©t&144“/–æ½þ{ºñ-xÁT67<>>7¿”®­T*1”ìëïïŒF} pûhX‚: h©óûC]±Þ¾ÁD©XÆ¥a‡`ÿÀàøÔtq~a¦4;04dÉv"MIÓ|ü00400˜H§³ÈÜ^s&ç …Ã‘Nä¿¢'’â?åÓˆ¨e¨TS/B?(ÍãíŽ÷ßàT¾˜ÍåRé,x"ã’LÅz{»ºãÆŸSD²x«¬‹fÅ°kºƒÀ¥óˆû)ìYL²Z°<|Ï Ù-HÖ|0ìÑ‹d ™‡(ÂÝ,D‹˜¬åÃ-hÙòšÆ-Äî,óŸ?à†‚¨‹°;ïéƒoÌðÈØÔtavnqye u ÖgdÁ)BrÿiÌ/´˜)Âs"<:>ÙÞÙ[D)B‚]„@¿š/”`a¡(ñ KÆÍÒÒŠ¸ÛŠ#FŒ1bĈ#æ?˜?~ë•õ ÍôƒH¼Ò!ãKÕã3> -¶IJCKÛË7oï?~|ëîÝk7oÖ^½Z][[Q[s¥ºª²¶ÆØ®ª­®­¯«­¯¿zýšqÀ;·A5áãÇO_¼xùú h'lljnE)BÙ lºYG“ƒ–¡?®Ê˜ân,„Oºaú¯ –‹S«Ùʬ˜œ idxìÖ I¡,Öp…¢…„yE•Éõô @6JáJAPù§k»{{3ù™xoo&“3NpªTzt|²+‹Æzƒ‘.LÔ0äŠ@Ô©¤FÃXg“! ,$’£ã“3ù‘ñ Œ½Êßiw<î…ï…¯T‹eºªóÊœK!TvØnè*d 5 }`¯t.Wéë$Zˆ­SÈmååàíÌÂà­H–Їj ƒ–—U´T9ô¢vBè¼2Cˆ€âŽS„ä GB‘ÎHW7°za,5;lüå ³ó Ë«k›Û;{ûû‡GÇ'_¾|;=E¬ïß!ËÔ¯HŠðìüóç¯(E8;¿8S(MLf»ñö+ÎR; »ç‹³s è¦óùóqç#FŒ1bĈ#FÌÿéü?ÿïÿg¬ÃÝq”¤âД¼nUkqI¿~óàÉ“[wï^½q£¦¾¾º¶¶²ºæJueEMuemMEmUu]mm=Àa]½a ï=|øøéÓç/^½zûY°ZÚ;`Š[°€ëÀ§™Î+e|ºDà ¤Û€"Bœ"D-„$Eˆ@XínJqg*¬YQà•sÅÔʬx…/¥ðF,Éê˜êà.J_Wø´ Ch璆ĵEÓše²Ðekc Ä!ª"L¹YÆ*Sk’&¨ÊÍ›¯Ü6ÿ•U›bEªòB–#xJr"´—KJ)s)‹^õ{¤•Äw:¨,WSÊÓ±ìö*Þa¥•R”–ªé7ï\ÿõÇ?SÐ…5¥T&;5SH¥³š®£(Ÿ¬iC©ôØøääÌL"•JÆúú|ð1Bû"ìPPd:h$µ€Æƒ2äù{|þ®h 8±R„”•I¦RÙ‘‘ÜèxW<Þï)â¿‚¨yM7~ÅsÃÃ3ÙÜÀ–/5_ìO åFF£±¸ Þ{ -çt >œ1ÔMqÌx3ÿ®šéì2^ÏÄô  *Š£ã“)¨\e²Ãýƒ‰Îh·îñ¿ž -­Ä -Y ðÊÔ©8l»®:ØÀ˜ü Åv‡D!›ÔIk¡Æ©[Ø”E$,݉í[ºÊ`Þu¦ö°Ò–‰jgõ+SÃ!As¯ˆ~}ù°°²º^š]„Óy˜"œ ÷Y`Á2¾4v拳>ì‹{®1bĈ#FŒ1bþã9úxätêÁÎëWŠîíPÔæv׻Ʀg¯ß܇ðöúë×kêë€fU]u¥ª²HX@¼ª¬©®®««­«)Â[·nݾ}çÞ½?yþüÅë×oÞ½ohljjmkm‡ wE•Á'GÈ~A,”‚aô+̾F w°tH ˆX°ÅqaˆßNz²¤°vÙ.X±œâäÈZÇ§Ó V™Œ£X ¯ië£e©,óŠ+LVqÐOµs®¸Œ¡Ì0©À¢Ø°W ØJÅæ.&ÐçVl"·²ˆWl Ïm“¡Ü˜veÁUqÊ*ôjŽÚT9ÙJ±ëQŠ]1Ó”2T+¥Œ‡J*díRiËn¾RœU,MqP´Ê1²ØJ>ýñó‡…RqmcÝðGHö áðØxnd,¹Ió´ËJS[ÇÛƦg¯^ß{ôèÆíÛu×üª¢˜¯®TUþ£²Âبª®®ª­©¬«©úÕµׯݸqóÎÝ{>zòäé‹—/ß¾{×Ð,Xän¦U“*ƒõ+ -"ý -e‹ÒG",t· #„îv„åjikkw¹pHx¢ÐÂQÙ›áJ±–ò}‚²C Â!ÜݶÎA¢n¹i»ŸÊí—¡ŠÅï–­)BÜK–˜A7Ó3HÄ+—¬2B…Ô rðvžú.á !ÛÈ™©T*@¹-¶(Åý#Ò›O JeˆUÖ~@Åšï“ÿFc b Êe"»R†g%ÿ½ŠW–4'Jã-Ušìp"i„éÄ‹Zôú¸§OÕ4O›«í_ÿþSñ¨™Üp{¢€ix4ÞÛ¯{½Æ¯ÀüâÒÖîb^ …—$§“ê \±¯Ê,øÃ@*ô"£Ýñ|¡«d’Šf©ÔèøD4ÞÓÙC)Bìw2}S.wg´{m}cj&´/(µ½)™JJ¥µÍ­óËï‡GÇ‹KËãcÝñx8Ò E| ±„; ÇCÃ#cã“‹+k Êvp¼°´Ý®J¹m,,™ßfÔ'Mqº‚.%ÿvq4Vñ²•&—5GYlW/IY¢šÂ´ì-ÊomWfÐO3…¬7ïß~úôe¦Pˆõô¤3X¿ÊdÓ¹áþDH(ÏùùùøäÔ`2™Í ¸jŠôý™&+•sviô%i¬´…~é”Lvxk{'ÍÂúBŒÞJ§³#£±¾`¤×ö©Z¶\’ŧ¦ ¹‘1xþ« RÀ†€Ëg¤P,­­o|ùöíþóôôôäääðèèãÁáǃƒã““ƒ£ããã¿þ8<>YßܚΌexdÔxÈÊÕ?˜èêŽy}~ô»´+â³Rq3 Ã®Û°í¤ Ù¢t&ÈJXœHå¥Çx˜Ì qm1 ƒ@óxØ` ¦Zy¸ð T½LV:ïÑx“D]Á ²mƒØy¥3ABS³"Z´cuËç÷øýÈ‘åƒ) ´`uEcÝñÞþÄPüËNLÍKó‹K+›Û»{ûXÁ:;à wš"üã'ì"4öŸžžïOãð•µÙ¹Å©|q -væKs@šE¬ÒäLÞ¸¼qÓ1n=ÿü׿ÄýWŒ1bĈ#FŒ1gþùÏë¾Á!O ¬z*R®|ˆ|ƒ.Ek“d _½oxúòÕ½‡¡~u½éW5ÕWª€ùêJeeemUeMMUm-¤`ÕÕ_»Z¦ïÞ½ûàÁÃÇŸ<Ç ÷&˜"ìp¹d$Dh¸{Ë‹³„^ü©Ð£@ˆ ©AôVIR‡  ]&«¥½Ýø’qX1ÉA…éä}Vn»óŠRÑx WÈ»°¸B@•ÙI›©rÅø²\Šb£SuXk“Ë&F¹y''RYŒUŒ'ÊͤüÜŠ5Ög׎HÖO²E­A?ÅY³’ÊñÛ-¸*¥¬áªŒ].ï˲ËSg‹ÒœpUª]Œ’öÿ>÷'—‡±[D*§ÒCÍn”êp»û¾ž"áL6‡¤$@˜Æ{ -¥ÙÑñ‰Ý½©L6ÞÛ·½»îꂉ:÷zi --ø3õˆ¥ ?¤Je(ôϽqHç3观¾¯‘d -êW*-ÄôuãÜ`8ÒÓ×ß?848ü[™ì0PÛ Š1^™‘±Ñ±‰‰©™™•µµÝýýýÆòqgïÃÜâÒøääÔôÌØäÔðÈÈjBÌäŒ×ÐÓÛ×Ùõúý($+™M¶ )ä!팖e«&Ô‰ËÃaØIP§YB®aP£E„ÈCEã„8-hš¯Ø S¿2#„˜pE´)®|ÐI°ò‘ É¶‚!Aš(ôùtdÖ2ö{PÐkf Á%¬`(J!»€+Þƒþ±’àße"_,•fVV×·€‚õñèøäó—oßNÏÎÏ///° w’"4‚)ÂÏ E¸²V(ÍMN© -°°«4U("–që1wa1bĈ#FŒ1bÄüÉ ë`gЯ€rÀú•OñødÍãRµV·ÜÐÚfêWß@ü«:À¿ºRUõŠŠ+Õ5U•ÕUƪ[°êëaŠðÆur‡¬§Ï^¾zƒ-XÍmímn|CŽ rkè¿’ -CÉÕÞá²X°:ZÛÛ;\uLQç•-ˆÐXJÎa°³M‚ \­Sà6q1±E¹h' Bûy˶’ñJbWÄ:ñ³¢×¹µÂ¯Xó}v™«)µHÙáTŽŽ,ÙÉO%³©C[ÊOvòS)jÙ‹ØU,V RÊG ˾ºf ßÁ49LÂ{ #v1QA™3biÜ—H²ÆýÌ‹¼kjüvzžéëï‡BPiJ#ãã§ççgß‹sóCÉÔt>¿¾¹eü:Ø]U2ÅUi*í¢Î%,gÁ>O‡ÛÝÕÝ}xx”Î D²#ÔòÚ†Ù맒ö@]¡¯|é #]ñ¾¾þ$CeŒ%›Ch¬ÁD8»2@…6–‘Qã»KèVÚX¡=M$S=½ýÑî`(¬{¼ðw#¦û‹-d˜W:G†Çn+Õ”E¥*›ZES‡T³"2‰j$WHÚIŠð#H"è"¤¬_ ÖŸ¿pŠðÛÁÁÑæÖÎüâò p[ŒÅL‚ !è"œÊƧóë[ÆÝçøøX܈ň#FŒ1bĈówæÏ?ÿ G£²ñ‰ ˆWÆâ‡ØvŸ¢{eÝãRÕV·ÜØÚö¦¡ñéË×ÃþÁ›7ªëë*jª+jª®TW_©®ª¨®^¬êÊŠª*`Á2–úÚÚ«W¯^¿~íæMdÁzð蹿}óþý{ro¥²Û”ÈçA¯$D,EMI7¨‹Ð…ºiŠÐ @îä}VT¹R˜@™i”8žW>¨p ,¢J± µQÉÔO墮*ÚBˆÙ슾Îî,ú³;©ÜŒÅžk>¤:+T‚:¸¤“•Û)è˜tîT¬ê“äÄÂ*ï§ÒìÕŠ-?è¤DiŽ×Q¬Î+–R¥ê;y´ íÊÆ®•KÂSôß^GÅA?Õµ¨ -æòÉäññI¤«+“Eú°2Ù\vx$72’ÉåB‘È·Ó³DBUƒ §]Ó­Øvæéг˜5|*|4ÍóæÝÛ…ÅÅå•eã©“¦b–FÓöÎ^Ww·©wiÄ»E4%S(Ó *F¢Ñh,Þ708Òˆˆ  -ÓÙ,,ÌF¬úâ½}ÑX,ŽøƒAÝãæCI6Ö -n¤@ÓLå¨ýÁÒ'ȃª×1biԲŊQ„â®Aw–ÆÊVH×"2ˆû™5…ˆyeÒ«©±Ì+3ˆb†È^åeêÑñ`[ç9í&ÒÊçSñ)º×OÝY€ŽåǾ,¨t™,¿±xý$jy+ -†@¡ñOëé]„ÉTnx|r:_š[X\ZÝØÜÞûðñàðøÓ§/äR„—?ë×PÂúa]|?=;?ùôùÃþáÚú¦q:^aÑLÖÜT¡4™/ŽOÍ á¿DŠPŒ1bĈ#FŒ1cÂݺ?ƒ¾Š "ò•¬yeÍÓüWRc[ûÛ†Æç¯ß ¨ÙsyòïNdý;ªêä’Âz‘f3YÙñéôªš%3HüQôxYQ_™£ããB©Ô݇)Â,\ÒÉ”±Ò”/üùë¨ä#™>N¿RMm]_cu-•(]PüÒ“æiëp#Á/_¾D¢‘Þþ¾T&CÜS³óóÃ#cƯ[ùÇB੨¥ê ̨{]×}>¿?€Î„G:C‘H¨³3j¹ûœ¼ÃßJY†/MaÜSf{ †e7Ïú9Ò«(¤®‰¸d«äVøQÍBngXè,—6jL{ N -͆A6臂L¸"ºÎ "‹…\aK÷0YBHÐb€Wfó ÓK5+¿RÜäŽ,X¨‹0ÞÛÛ? -S¹Ñщ™Bqv~¤·v?ìÁ!ò`] -•°¾ÿø S„g‡GŸ¶aŠÐ8:_œÊPawNÁ.©<ÈNEŠPŒ1bĈ#FŒ1¿›Ó³3cíéó‡;T®À’ƒÀ|¥yܪޡª-RckÛÛÆæçoÞ>|úìöýû×nݪ»vµª¾î -¨ ¬¸RY Å+ aUVWUÕÖT ¦`]½~ýúÍ›·îܹsïÞƒGO?{þâõ›7¥­¹½£Í%¹dR4Z[Ï¥=D ˆ'äž‚–$,—Ûø\ÖÈ‚U¶UQŸ˜T ý1n+Ö¸¥XùWn™‘¡d®×Ï倷‚ÏK¢|²Bå#«ùJ±äøì‘@7C©r—óY9Y°L2¡¯;RÖÉCJõI)‹Cwd^Y|YJ·•Ä+WŠ“áJrÆ­kÌÍB¦’9•f'±ËN;ËÈVìÅm&+;­9Û‘w¨5¬RhÞ¹U²¢Ä{{Oúú¿dú'*›MgrÁHøׯ?t¯WÅÁ:ÖaE.ˆ%,*¨Oõ ¢$ \·´7}<ØÏærd*fÆÓŠÅùÅÅ–Ö6FòR‘ŠÅø£8Ò”ù‹¬(„¥~ÐbFqe·$*;¼³hVÕªÓô"Ö©lÎ+":éš…µÎÚ±tÞŲ­ Ã -ŠZ^KlW±tžÓn -STÅb´)ÓŽå5õ+¬§!÷©GCÝ‚:£ey½L‡ R«|Ì~ùä\ÑÌ Gn7µ,+Zåôú¾@0 ‡B‘pg´«;Þm¼½‡RÙìÈÄ$P°—W×6¶vv÷?|úòåëéééùÅÅåwbÁ2%¬?~üøuyùãììâË×o‡G'(EÔ*(UÍg‹³ È‚5](M V~}kÓ¸ ‰;²1bĈ#FŒ1b~?ž@H2>£ç•ÏÔ¯tF¿RÔ·ÒØÖñ¶±ùÅ›·ž=¿}ÿÁõÛ·ë®]«©¯¯ª­VEÅ•ªÊÿ¿âŠ±®¨®¬¬©©¬®®¬­®­¯«­¯¯ƒ)Br¿sçþ£‡ž>}úâå«7oß64646£!´`©Èg¥˜µ`AŠ; y! ‡èQƹín©€Ü! «¥½½Íåîࢂ2GtW¬-„¬fåb5(ÙŠ´rY™Wª›f Â]å¬\Ðæ$Y½XXû’m@ìÎró¡?VËrÛ­V¼E-ÛÆßá«;z¥ÊµøÉ¿adÙGó•ã•òT+Ç®@™cU•ë´ÃØ%,­|? }Û’1d¸Rüu ¾Ûéñ:›Äre¨I²±(Ë+«kkÑX ƒÜ3iè‰Jg2]ÑèÅå÷h¼GeD$6EˆmW\¢‰B|ÞPÕ‚žÆææ½½³óó‰T -;¾²©lnrjrumÃxT3ŸE'ß‹JR~ºŽD-¢§™º…Fe‚Щ¾Äu2„.ü1b!_9á­,^,ð®YaìUºìwÍز<|–n¨:§q‘ -B‚ÀÂŽ,b©²¨[˜|åµîôší„&öÊK‡\¡ä -¡Õ -z®¼~‚m ôeÁ=@ÝB]„‚ÕéêŽÅ{ã½}}0á9<:>5S(ÍÎ//¯ml .“OŸ¿š)ÂËï´ˆ ü4öŸžúüåÃþÁêÚ&ê")Â|QÜ«4 %¬ÂÄÔ̯?þ0îD?~ü·c1bĈ#FŒ1bÄ”›õí­Hw èWȼÂâÒ¯\P¿j“”¦öŽ÷Mͯ޽òâå½Gnݽ{íæͺkW«ëj+€«òJMÅ•ÊŠŠêªŠš*+¬®ªª®®ª­©©¯«½Zõ°`Ý0Aî?{öâÕë7ïÞ{kS[{;´`™–Ê|HÄŸÓ¶¡I„ÈJ@¿‚]„„…U,`ŵ 2´v'º;Ãx¸x$(*Þ£¸Ùc݉2¬T.ôÇ?ª°XuÉb»²t B¥‹‘°hÏ lCZ9lÛêíÈNiÁßÿI6 -–%ôgwOÙ ZJ©Jq°Ë KqP±4Å!-¨Ùèš9Åê]2g£ê £iN̓lHЮb©Š-BÈ´þ™n%'ÿ1\éŒ]Š -M’¤øƒÁý‡ã““ƒ‰4„œ„Tx±†Òé¹ÅåtvX,&"UŒpÚuB»R¨9Êfy‚¢PcsóîÞÞÒòJ:“C‚ÆF*›˜š,–f[ÿÊÃ(T½šN°Tº5ÝB¦Ò‰°Æ M*{O\·I“€ô›b¤'¾g®M -üXX#ÚÆ‚L- ¼ˆ‡Í;Sªc©ò` å_aÿ•N i– -YHïÒ¡¸qîô“sÓ‚ÀXåñ1n+NÂ2Ö@§òû‘fe®qS¡Y_­€¤ƒÁPX°¢±îxO¼t¦²¹Ññ‰©™âÜâÒÊÚÆÖöžñ®;>þôå ¨"¼¸¸¼d@î¿ „e¦/@ŠðøäóÎîþ2LNå “3ùéB¤giŠp -§ÁýhcSܔň#FŒ1bĈc™‹‹‹ÿÌWDkWYåJ÷‹[Õݪ†ô«æWCsëëw|õðÉÓ;÷ܸ}»þúõÚúúʺZ„Šê* eU «²¶èWuu5õuu×®^½qýÚ­›·îܽ÷ðá£'OŸ>ñò H6457µ`»)¡™9ó•¹ÆíiëÂBè* d ÛÝR‡Û ¢a»ÛMâ~ ù -kV˜dÅÆý¨ÆÅG ‰ÃŠñ\1*N†b;ËH[L ièRU¢ƒI–ë«Ø¬ÅˆN¬º…(·“·ŠdýP܆RÖLeaa™‹bÕ‹¤2qÂr+»ÀåØ6ˆÅ+˜¼D¦•§¦Ûøê’ràYñq?M+û£VY¨VTž¢¹?Ý"s©,Š -Ÿ¢šÇ¨QÀ¸Æ@M—e(•ÞØܤ¢4ЯL:4be‡G’™\ 1}HªÒiUïòbëù(‹öWCŸ¿|™šžN¦¹•ö ìî}èéí“d*åÑæA̧âƒ$ÜGèXæ/89˜æ9Ë ´ìÔmi¼ ¥ñÙ@;‹e³3"›þ# AÍbÖ"-ÉZ'!AbÍÂœ+3 hn£œ E`™,w‹ÿŠ[t‹á -¥ý$<¨³…ƒp [àQäÂB‹70c†(oèóy‘+wF»c=±ž¾ÞþÁÁ¡$LNJ E¸¾±µ»û¦?ývzvvqyñ¤¡„õ [°Œåòû³ó‹/_¾omï.€.ÂYã2S3EÂ*±]„Àšµ°´‚nLß¿wg1bĈ#FŒ1bÄØÁ¯d([Aå -¬% ‰Wº‹Õ¯ZZß64¾xóöñó÷=¾uï°`]½Z]‹««¯TU@ý -d =•5U @Xuuõõõׯ]»yãÆíÛ‚õèÑÓ§Ï_¾zõ¤››ÚÚZ;Ü@ÂRL KCš•ŽÛÄˤ¸Só’ŒBäî2S„¸ŽHX46% ãH‰ø¯dsãæ[ÝTÂ2×Ïc'J#() Y§ü8Ö:º«Te[9C®x¨;WHW|TТ_•ËýÙå#‰ÁUIê_`¯ìb”£«ìF,ÅÆiw@µ£ÐœCèÏ¡IÐR(Û,XHÏ‘1ìšS“ •¡h$P+w˜ê¤AñGR+”ÆHXºí"l¾Ï”¹ÈóǃjA]/K¥¹¹þÄ ”Lý*“ÍôôöwEc^_€Äî¾c׬f¥3š•F"{’¬d²¹¯ß¾NL ™ -àÂêêŽ}ùvŠ(UD£wtä¨cáYYë:­Ô,aËCô(;¯HÕ Ö¾tÎs…-Xð0Àx×@³ß¡œÅ&iäGIÛ ¶³†+¤Py|â¿2U,è¼òÀs _0 G‚äº{zúúÉt&7269º—VÖ6·vö>|<:ú„@îgç0DS„¿ Ëta¡.ÂS"Üÿx¸¾±57¿8],MΧ ¥Bi®8KS„“3…‰©üæÖ¶¸#‹#FŒ1bĈ#¦ÜxüA—¬)ºy®dÍ#¡…ׯZ:Ü­mï›_½kxúêÕƒ§Oï<0-XuWë+kk*jª º°þQã„Õ•Uâ^][ (Xä~X°îܽÿàÁãÇOž?ùúí›÷ï!Ƚµ¤Ý$Eh~tÅ‹îE+€¸¢`uH&ËHX ˆ ú¹œR„ŒÃŠnÎƹ›U}¦# iYL’‘W®ˆíJ±¥$^Ý2…,QEQívø뿲kVŒçÊñ“lñ=GËžò“Êã­l‹æ„ÉÒd§r@ÙA¼ÒðN*IV¹I“‡¥²$ EÊInÒì*«ÆðÕUÞ[¥9í+»=ÌÚ0X><èpŒŠ_qq·$ûƒÁùÅ¥‰é™„UGAB¸126¡ù|ñÞ^Ý㱪R˜ÙÎÆý\8hŠfX}2^‰ÏXYÛ\ßÜÎÀ‹çÒÙ\"™Ÿœš[XjhjÒ43â§h8‚gIöiMó©<]gÍTš¥м”ê$mÙ³‡¬œED-B²Ò¨™ŠV² *³-‚^„ÅOÑ5Ïi'Ž,Í’"´°Üy/«V©XÂâÊu/cÙ2ñìˆÄhÜÞ*!$P,Óvå'åƒuå'ÊÜöÃíXc_¹V(ÒÕõôöô $†Ò™ÜØøäLavn~iÍxì|ØÿxxtŒé.IŽtEg -¥ìðhb(Eô«t6—É §²¹@8ïíÓ<Ù}ùöíìô `°¾]„T¿ú»AŠðvÂáÒJ¾875 ¤ª™â,a¹ V€°JsóèÞtv~.nÐbĈ#FŒ1bĈ!£ùª8¯çÊ­zHr‰WH¿j—Õ—»©Ý,X€âÞðìÕë‡Ð‚uóÎúë×aaí•šj$¬ªüGeÅ•ÊJc£²ø²Œ‡ªëêjëë@á×oÞ¼u÷îÝû÷ï?|ôøÙó¯_¿zûþ]CcCsss[{JÊŠlÂŽ@ÐT±°„ÅRÜ)B -€°”°ÈÀ……U,¸¸I qO¹¨¢ÅîQ)‹©tqâ•j¡`qI@^¶¢ò¥µó5‚ªõ",ÉÊê¶*¹â”.…S®$›iJ*o£ú+o•sðÐÃ.9 VyVùÖ¿rž+õ·E*KŽ*³PIJvîÔœ¼X ŠŠå±óöJA¦yœ®²Êgµ¢¹?[Q Jµ/—$uuÇÆ&¦’é @a!ÿU:›L§Ç&&“™l:7Ü7˜ðú’ñFaœN–Äñ8)¦¶~Ý¡ð`25:>995“Í ›ú¸ °åtvÇŒ_4ÆÙ倫RX ‹¸4ê¶rDµó1CMsÊr®*¢\yi‰!Rœ¬,,¾.ÐÃiÕ¾tBbç‘V¬·Šåº{T6*ÈÑÚÙªAŠsG>+žgE¹X¦–eż›^,ä¡2%/r<ä }>¢Jé¦çŠj\hÐBWB–iÁ -ïo  EÂÑHW4ïííö¾á‘±©éÂìÜÂ2L~Ø?8<:ùütžŸ_\^‚áä»]\þ@]„ÆÑk KÓ…âd¾ˆ$,rŸ)©Bir:?9SX\Y·f1bĈ#FŒ1bÄAMåÑx?‘ÙJâÅ+—ªv¨j›¬¶I2Œ¶¿on}ÓÐ(X/^Ü (X×oA V}]EMíÄo‡w aUWWBýªª®Ö_»výæ›·o'Þ{ð€Ü_¼@¬÷M EØ -Aî’BXîÄ…(XØÖB ?ƒ@7s‚XÂ")ÂÖŽãS¶‹x¨ø !›þs“D¡LÌZÄ»…][2G£â‚ªÂëQ -gb{ áé.l»rÛ3ƒ3•ÅgåèÈR¬”#ªMZ|¿¯d'˜•]†¢*Ms”°”2dz{T.r¨9Û©B¥bÓ”\ÖReñki¿ ô9 22²0©¬~¥r)?¤ÍÐœJõ"öQê¤Âz”Ê– RLS9ç•®0ªº‚$+ÑîT:›H¦ŒòÕs€…•ÊLNÍLå ó‹Ë£ã“±xÜ8Ñ e,K.â¶Œ× ½>¿¿·¯?7:> âò#£c¨s0Íõ'Ý10ä’dÍc‚³lAžX¥é½°¦,]gÚ ‰¨e+$^)ÍU9‰ºÅ\hD–›4"OÙÔ-NÂÒYÐL2=‘Ä5Ýô_iä²>˜ãbaåʇýW>Þ®ûl»y² ¥Âö@ JU&¼µiAæ‰b -–%K ;½& ËÑ@(éŒvuǺ„S„ÙÜظñ^(Í/,¯‚!ì"<ùô¦/.!ÈëW¦‹é"<ùôyïÃþòÊ:ì",š]„¥Y˜"œ')™âìþá‘q{š]Xwj1bĈ#FŒ1bÄ ÑAÅëcƒ¼x¥u(¦ÿªM,hÁj¬÷ï¡ëÙÝûoܹsõÆÚ« ˆ°¢X°®TUü£°Ü+««ÀHX5@ª«3)X7oÞ¼{‚Ü?z‚@î©¹©§%”"ÄÝs&ŸÇ”°°;ËA¿BAB€s‡u„ˆ‚…R„ÈREíŒÃÊ”³$¨P¥ËêËÂâ l§ü6 ¼’ ˜]UˆÉÊ´p®‡Ò@k{ sºU°RÊ:¬¸/•ß«àñÚo|Ø?˜œžH$|`‡Ëír¹Q‰$øIodo«E»c©Lvt|ru}sium:_O¦3™Üp2Ž÷öÂaM×_Æe¯$û ËNSuÖp¥±¾,¦Ù¶X­t;ÝâÅb¤*¶CPãXšî€pwP®€·Š šÔ,î”d¿Ô(È”Òl y’74íX$0ÈjVÝ<ËëhÄÒ) ‹Ö B_–™ Ô<4TH*ºÁPÜMÓNh¼CüA `Eº€„ÕÓÛß?˜J¦aŠp¦4k¼¡V76·ww÷Ž¡ëôìüòÒ&a!ì"yñâ°`ÝG¬šúºÊÚê+5UWªÅ!°P!ˆÖýª€Ü¯]½qãÆ­[È‚õðñ“'Ï_¼xýæõ;äÞ‚S„. ,PªÂ&–Ä \2ˆê%¹X°°~åruH’=ˆNÁòË]gØVÌBÛ U ~W¨çŠE¸Ó2AB›‡B–%å';¬ÜNÄuÉ©PrŠþ)6Õc¸O*Ÿ -TèºT½î¨\Ù - 5ÇGÿvÓ¯dÆd%[)Xzy˜ñtéeâê_F ­JšÆ)]*Ö¯&HÑXdNç©ôDô¥N€THÕ >jâ2\´.P'%†t'l$Ô½^`š‰÷ô Å ‚ª’ét:—+Îͯmlž_~¿¸ü¾¹½3;¿02:ÖÓ×F»c±žÞ>ãð‰éé©éüÆÖöáñÉÞþAin~j¦A±Ál£QÝã•ào•g¥ÿÆOE¤!r¨ŽÔ-…€œâÄŠZVÈ•N3ƒˆ»®[AU6Šñe × 2ò”FÙNW¬`¥ÙÒ…p›¡WÁJA^ø"2@T×à…ê`^™ w¬¼H¤2íXxV”g…€W>ƒ\ì•Ï‹ƒ„j¸òsB–?@¶ý`(wvuFc Eh¼¥€·/;26>/Î/,­¬®omïì}8 ÷/ß¾žŸ_à.B¨\ –±çòòÇÙÙÅçÏ_ŽÖ7·g–¦ó vp*_Ì£aiÞؘ.'f@Šp~iYܣň#FŒ1bĈƒæÃþ~wO_›[Áâ• -ÊZÚUhÁr+­n€Ü[Ûß7µ¼~ßðüõ›‡OŸÞ}øðæí;°ˆðjUmmEM l!¬úì"¬¨©®¬­1ØEXg,u°‹ðLÞ¹ÿþ£ÇŸ={öâåË7oÞ¾o@¬–¶Ž6—ÄZ°X–; -c#„ - ªê@–ËM(XÆ_Ï•¹(X ÚÝ­Œ`¥Ù¹ël¾[i¿¥¸ÿÞF…Ö~¶RšþTGë”êD²²±Ö5{ …a…9QWðÇjMªNÝV”ëN󀄥ЫYé„‚Åb¦,wò\è—B÷úÁp4H$ ôˆXC©tvxdrzzaiywïÃååÿûϯßN?}:<>><:þvvöÏ?ÿÜÿx°¶±55“Ÿš)ds#ÉT&Í %£±˜?”_I1ÞZTçaqUêo³:¹r°;X¹<¼iŠ)D:•æä¡Ò<\#!#Xi¬¨¥Yúu‡ê@Bq·-&äŠÆžHùWˆÓncš¦|&¥Êä\ñ -=/~”ѯ¨)˧;¯¼~ #­(˜f53?è×|>Ú6èGœ«€*Dú•ÇǤTÚòŒwQ(Ü)Âx¼§¦klb*_œ]X\^[ßÚÙýðñàèøäóׯ§ggÎ)Â?~};=;ùôåÃþÁòêz±4gvJùÒ’°@ŠD ùâÜÒòºqŸš_X7k1bĈ#FŒ1bþ‡îʺ׭ènì¼ê€´+¤bmEE{ŠÕ&«P¿r7µA VcÓË· ˆðþã'·¡«X°ê+jj*ª«ÿªºê -L‚DaMuuYDX(X@¿¬»wëÉ“'Ïž?õêõ»÷ïš[šZÛ[Ú]í0E(™ÅvfŠP¦fÜØ"Bä3€0E(!–;Я:Ü.I–¸JAû¶B¨Vï§"Ü*v§¬:!Ù9Ë͸³8b•ÊUÚ c»’Ê8¯'Ô•\žO%9E ¥ò”u[ˆnhVʺÌiYŽm€ŽaÀ¿¿h»j•¿tÛCw®Vê®1ÊNíQl;Ö‹èe©iJ'~*+Z$Ù§`e‰hYõ†^VÓYà•)vi,ìcI)\)úRu'G£±þA b!ÕP* „¬ÜðØØÄÄääøäääÌÌL±4:11:>>=33>19<2f“LgŒ¥o`0Òõ’¢¸$I’BÊâPízyæ•#nÝîckM -Ð¥t–jÅ”rš˜Ç9úg†ø¸/5“v¥kVUJWˈT¿á·“ cÐòª˜ÊÎìÄÁ^, -UdÐòk°C̓Xì2U) V™Â”`¯PH±ÜQº‰ Wª#¤Ö, r‡úвüP¶òRå -h\~ó0Ÿ?ˆ$,ã= -Ö@_b(™A -L®mlnïí}<<<þôÜ//¿ÿøþãçO>E@X(EøíôèøÓöî‡Å¥Õ™Âd¶§‹¥"°@ŠÐx7{&¦óùâìÞöžq«:=)B1bĈ#FŒ1bþGO¸+ê aNPç+…jVt¥%¥Å%A VÛû¦æ×ïž½zóèé³»ݼ{R°®B -VMEMÕ•šŠ+•ÀˆS„Uµµ•‚U ºëë¯_»vãÆ `ÁºwïáCrùæÍ›÷ ï›[ZZÚÛÛ ñ `… u,•˜hnänú¯$´FE„R;L¶»Ü.YÆjçÂ’ì9Ahʲ”º­Ò“B¡ë<ÏÊm[“ý2©)dHV´+åwæ(»ÜÄòØ¥ò8æ™Ã´ß$-U6ÿ•ÅXÅ:µ4ÖÓU®:P¶Öe,"ñ*®çS±pÄ=£báó²£niÖØ årq{Ÿ îãœQºõ¢ê`Q‹b±…€f„`ÕM­Œ¯TÕª_q)Ex -zøüPgWwOoïÀ`*Ëd‡aAa&‘L &“‰T*™‚ÛCCC錱?™JGvÅbPH÷x¾K’P%(Wäg+.¤ú›=¨;E -¬* +N«k1Æ*û)·•V^}ò'•ÎÈb¬¥³,zÚ¦ÐuÝ4VámJµÂ‚0_Aé ±tè³Âñ0„+/[JˆD'Ò•+OÃ^)ŠgÇ,,V¢(öÊÜcjVˆj…6¼Íîõpfä -~…ö{ð²°@¡ñÞ1BÂêîŽ÷ôö.ÂT:;:61“/ÎÍ/®®nlmï~Ø?8¬ó‹ï8EøëÂúyyùýôìâË—oŽ66wæ—g -¥‰™Ât¾˜/ÍJó0E8ºg -S¢‹PŒ1bĈ#FŒ˜ÿñsyyi¬ý‘NO0äRtÒ3ˆD*»rE¶Û±«±Í¤`½|ûîÉË—°«Žµ`UWþ£ÒX®T@Š{EUe%È‚"BcA)Âë·nÞº{÷îÇ?~òìù³—/Y{K;HvH2Ž°8£³t !dP& JXíâÞá‚u„«%±N-ì²JX±c)¬2æÐHŽaýTnVòbií,ðÊÒX>ø›|Ê Z$)É液?Êx¢ÊÞi" Á.ÂîÎh,ÞÓ×7H$ÓéÌðØ8H..­¬­oíî~8€U„ß¾Ãá÷ŸHÀúÕØ‚S„§§çŸ>ƒáêúfqnÁLæK3E87Sœ5.=176ŠssÆÝjqyEܸň#FŒ1bĈù;Þ`¨CV]ªÎ†Ûñº]vÖ¯Ú$rGE„È‚)XÏî=|tóÎÝk7oÖ^­¯ª«­¨©VebaA «²²¦¦º¾®ú¯ê®Ö_½@î7oß¾}ïÞ½û÷ëùó¯Þ¼y÷¾¡±©±¹¥¹­½µÃÕî–\åÄ© v͆Š"Xu³Ž[°àÚÕ,X\*FU«HåV¬T+kôåYÙ(X&SK¥r–¥aÐ|ˆ—ìQA¥ŒuJrrU)¥w9š©ø í/Ùì<üJc}S²ÝÎl×dç¶Aý·àtVeRiÁŸmiä´#FJ¢é<o¥*ØFEt-Fãbyìª)I”:gâÒ9n1zan›•õd±0aZ;äØVŽÌsE-sMVòÒwQ‚®BI«ÿÍÞ{6µ‘µm»ÿrÙöoØ H"l0Æ6`¢²Pè^$¶qíq˜q ˆàœsÆ9Ï”ß^ùZ«[xîÚO½û}fÖU]T#µZò}sÔy—E²CŽë¹¸¶œà—ã pë7mÁÒO•;ɤ“ X¨ rCé)WN¹Š’]ëñ¹áÕß Xô\˜©œ¨&`Óæ Æ-¶pg¨€Ëa*Ž³Ţ̊Ó$Ù7dÞ*F«Y3äôÉQYX]ü_BPHÒª*¿¾Jqkú¤u(Û‚Œz!‘ÈmA⢫ÊoBi3·oZÝå?ýZ½>3KEîs˜`=ò˯ÇOž:ûû¹‹óK«kW®]¿yçîý‡ž‘;i~üD"Xßdë»Ú"|ƒ[„Ák®\»±ÔX½¸Ð¸¸¸¼¸¼º´r‰"¬"Â:?¿¸zéòõ›7ƒ/¬W¯ÖÍ·¶3f̘1cÆŒ3ÿÂùñãljßNçŠRäÌŠ{®$¼ -Õ ©ÈE°²¹‰tzd|r×ÐHÿ®][· VWW[{b3FX±Ímlᦶ͛ÚZ[cqºˆ0žH]„‰Ž-]ÝÝ=Û¶õö÷oܽgÏž±ñqÖ"Ì‘V —9&‚üŠŠÜõõ‚"ªT -%¾ÂÂrYÉSñ•òMv(vÅuXwE€,¸²šˆÖ- ¯*?;á]BTÁ¨¿)c¯DÑ7Ü<^ Xi£š8Ø•_X5ÉME+Ù…G=TßCŠ]",¡¥R{¢š'¢Jr! bÙòCJv‡÷ø¤M]B'(‘ø{¯p»0"RÍQjÐkc5zd/Á¼“Ø£'›†LÎF{²• -]XÀ>­–’ÒÌêpE ÐU9áÏ®LjAZÅï&Q°Ù纺¶≠à?PézÍž ‘+5v…éfÇØJ[)èj¸ ¹s W]ÙÄmEôVò%|o SÉÀXñ{b¬„<`+v=½˜F§(q¢„ŠÖ Y’ŠTip‹vÅ’A@-\ôkU`‘k(¿ -~õj„bUë^­NqV}zvfvßìþ¹9²‹P´—–V.]¾zã&n>~òìÅËõõ×o™Èk°4‘ûw¶‹ðn>Å-Â{k—¯.4V.,,Í/a„EZ„kK+« ¤EÁƒ/,ó­mÆŒ3f̘1cÆÌ¿sNž>;³o®€óW¨ÀWì,+|Ð+ó¬EH#X©¡Ñ±ÁÁ¾;º{i«£­=± /"ܼ©µå¿Z6o&¬–àÀ‹ã±D¢•ˆÜí][H«·¿·‡††FF±È=©ˆÜ§Ê–D‰„G"Ô‹%áR‘í"Äÿ…¼pªŒ=ð^G¾X,’NbYÍ\•m}“ t¶3ˆdI®Å¯)ò]„‘{#rYêãaãz¹Is°ÜD~EV´zßTØF…›ÃÙªh’¸©b£(* ¦ì(0eGzÔ›,[´GÅξ–ÊüŠS,…Iõº-ø•ø¡C'S£K¿ºÀPâb[é‚T•*¿B*§rÀÂA]T(–½ñj¿(¨e«:)¥§ú©œ¨U€C (œZ/¨…Á”*_TÞDTó4ïz(¬…SršG³œ¹–-ñF\·®­8DœG1¥•©ò¸ó8qâù+Ç“‹‘.¯¬"ŠKÚ ÂÂÏò2 #]Ä|år‡ePL®îW‘´µ{a±ÛÒ›<ÅqÁ¯R¹ró ËWu¬ºò ¶ªÖøƒ5Gt 1Ϊצ§I -kÿ¾¹%-“§Îü~þâÂRcõò•ë·oß»·_½zý†´?}úòåó—/_¥K ¬ŸX‹ðᣧ7nÞ^Y½´°Dw.7˜kî"¤"÷à-Ì·¶3f̘1cÆŒ3ÿÎ)ÙN jÛ+8v•/[ô'¥X¬NaQ Vvª”.àÖx*µgbb÷žQÁÚ²u+`µ!^AØÚ²)†ûƒ›c­-ñÖÖX[¼½=8bÄâÞÑÕÕÙÝÝEîÛqk7¹ ‘{&›Íò:á!,VÂñ$ˆ°p«Luîd!ÙE8Å#Xи®- -,òÕ0X¥ùØKJ[q-ꤊlVBõÀòb«¨,Vä&AH¥ÊÑ®õfÕBT‰Hd¡ˆuÒ:¥ -¦ÄM -çµT©”ÓB¡x•m#]néˆL -Ì麡3;Ô[E$ Ô?…8ݲ›,Ôc‘-Á¸$§²l¤JÚÉû:Nz²#pk Š £>r,A¹!V¨ú§P)WKiÀJ4髺´›X— jIK[)/!(W\Cv:Œ,é Jb®ùvøµn󚡺LPB-Æĺ¬ú¬Ë¢¯"JvâQw]ÐôÕh–O¯¤çÜaÅmðž _¹~•_éb¾äûÌ©EÁ”ïQ„ÅW z4CÅ -‰d!}k.x—²w‡ûÛ©¤",W¤­­ªIy»W£Nx µhÐg«Z¯×§g¦yëБ_Ž;~¬s ‹Ë«k—¯Ý¸E[„Ïž¿\_'&÷Ÿ>úBDX´Bø'EX_H‹ðãG¼‹ðÅËõ_¹rwqÚjyE°.5–×+óKs×®\ în¾¸Í˜1cÆŒ3f̘ùWÍG"oßðpmvß”…¦lÄà&W¬<(Ží Ž` ÖX254:>08Ô70ÐÓ×G¶ÒV[ Q`µünâüUÎ_ÅÛñ8É_utu']==[{{{·oïÀ"÷¡‘‘‘ñ‰ñd2™Â"wlÁ*–§péÐ9cB¹ˆ°(]/ˆùU¥‚[„DäžÇ¬bðH´çŠ°fª«d)Iª’±û¯lG¤³*¡õVZeE1«J¡*7UT阫Q÷ÓüTB·ЊêŠ¶`³j¡žÔªÈr_¸Q(‚X¶×ê§ é’ÏJÅi’É’õ=YH(LµQEål}ãž(-*ù+„àË-‚bQ(žŽï læ64\ÁÚ”b‡…œèžÖ.DêÍzˆ:° -¡*å-ÀƒÈ…Ÿ*"Í4S\`åEˆÙÅGl ºÌÐŽ”â¡'ʉ̬®`+O‘´» U‘Ä”‹hJJ½€®n¾räA®TV rÌÅ¡Ý@~¥Ü]ÈmírŸ âÊ, âi+ÚôX¬Ëõª¢fÅVÌOòƒ=E~z~ — eìªNà–·{l !yЫúµºOÖÌì¾}s>räè±cÇOœ<}úÜù‹‹KË«—¯Ü¸yçOž“;Î`a Ög²‹P‰`}ûþåË·OŸy‹ðù‹;wï_º|u±±2¿Ø˜_j,6V«¤E¸¼:ßX¾¸Ø¸0¿øàá£à›ëêõ›æKÜŒ3f̘1cÆŒ™ÕxõÛ«ÒüUÁRø•È_‰=ŠÐâŽ#XV¶XJŠ$‚•™˜Ü½[°¶õ÷ãÖ–-xaœD°°¼½m«¶µÄÚZã±X;µ¸ãþ`Gg×–žžn‚°úúû‰È]D°RXäž+ä±È×y…–ˆc9PÅÙAXŒ_UˆÅWÉ"B (™¤²eQQ¼—ž¼²¢ƒUÂm.úE¶ ›¹ªÂÂv¯¶d0l¯ŠäQ0òT…²Tó‚½ÂŠ¾(©ªv[•«o ±Š\¨ÈÕ£ê‡Hy-R붢¢‚ Kd´ º -$¦T`¥vý,¹m¯¤L¬ D*ìŠ6YÑ‹‘à6–¶7PÏP¹Ñi+'BÛ®Ö÷ܨ%€ŽâEש—x‰¤à](U`Õô\Ëˬ\è•Roålð+BšÉŠa+º•VâS—Ü!è ¬’>+ñZYès¤qfÀ¨ÕŠï$Y,ðrB¥øö@õÎ2F…á˜/£SR“Ÿ–#– òºŸ¨j Az%ÁY¾K®¤7t¹ à©cY¬XÃ^Uë[ÕÉÚAº|›Û=~îÕ§I‹p–F°ðËÃGûõø‰ßNŸýãüÅ…ÆÊÚœÁº÷àácI°>|üøé3ˆ`E·=~zóÖÝÕKWp‹p±üä-ÂK‹a]XhÌ/6î?Àëé³çæÜŒ3f̘1cÆŒ™ÉüøñãÐÑcTÞ^°¼Ê•-Ü,‹¡´`qÙ{p‰`©k,™Ú36±sp¸o`gO_³`%â›ã±M­­øhkÝLSX±Ö–Xkk<ÖFÆ;ÚÛ;ñ"®žžî­[qkçÎÝ»÷ðV:“Îå2ù¹“í%I–lÐ"TÐSÅ -¹WˆÈ¬#¤ §JÁƒÐŽ®D§¬¨Ì•­‡¯**°Š´ZE‚©2ˆ]•ÿ†ƒ}ƒþ `Sa–UQeì×–òJ”ƒ½¢l ×í ¨Tȵ®"°PM[! ¦äeVéôAu“ kÿñd ;èIº¡»i[i),Ëå¯"6§{u9•ÝD´î„­S®‚žÂá+ØïSòT»­ rPX¥ŽLL¹ú[h®-©¨Ê -•@}á #HZîKYèD¬DM¶J$å²Î ¥jGŽD[®\&¨4]W9h×O.ŠË˜¶]v—º§Ôþ l -Õ Y ƒ¢¡)º£PÖyڊű$¿òdaX°€žÝãÕBêr¯2e–ËõV mUYUÐõYÎJ>…ŸÅ+rM/%$»ëdá̾½ûæö8t‹ÜOœÀ»ÏÏ/6Ö.‚u÷Á£ÇOŸ?¹þúíÛwp‹D°¤Èý;o~ù<ûöíû—/×ï?x|õÚÍå•KóÄÙEX¸EØhœ»¸°vù*ý -û믿Ì÷¸3f̘1cÆŒ3ÿ†yòôÙÉÓg³¥ -“·SZUÆ‘ª\QP,ÇRÈ?¸Å=¸¾œ.SÙüD:½‡E°voÛÞO-X±DG°pøªeSkëû¦XKK,Ö–ˆS‘{¬=ÑÞÑѱeKg÷–-==[ûúpkç®]CCãc£XäžÎ¤³ù\¡È–ÒÚà ¡ŠŠ°*¶ì2—;ÙEX,³"a¡ˆ×âµk¶èZ:­²T¦q­¿—­*GýÜmYœn…Uå¨e‚Í:†QÛÙ¨ˆåƒMÚ ÚÑkz}ã[qïÜ1{•¬‚> yS -”8ãrt=;¯‚å}¡Ò_„>]6þ,xÍ›w¨y0´CÜÖUß5ÝÃWÈU ÑõhS8 Z8¨»ÓÁ"ÂØå„î¡FGaõ:æ+ÝC¥(å3è♨Ã]H V1ͧX€¹®"¿rAUP”þbÆï¬Ø×=™‰’Ë-¾²–ÔRW˜5hÖ¶;LTÅ6²† ïsA–p¼3Ze‹š!çW©ûÑë9×’=AÄÍWXÕŽ¤È¶ARô¥•• «ô×?§›¶òku¼Á°V÷Èã>¹OïÅ"÷ý:rä—cxᩳ¿Ÿ»°ÔXÅ»oݹŸf°Ö_¿y'v2‘ûw™Â -¡-Â7oß=}öâÎÝ—®\[¤kå.ÂK´E8¿ˆÖ[·ƒ¯°ÕË—Í÷¸3f̘1cÆŒ3ÿ†™ÙÀ«ÏˆJ &WeKä¯r0…UÑ[„ aqê•+U2…b:W˜ÌdF“É¡±ñ!fÁêìéÁ¬8‰`µµ„EvÆZƒ£-£ð -D°º:·léÞ¶ ‹Üwì "÷={ÆÆÇ'''Sét&—-Lå¦0t*r„E\XHì׃:¬ŠØÈì´EH]î•aŠ¥b¹RŽlZ?ßHM\aœUÞPW¥šÛÑÆ—m ³jbq×!UEY5¨Ä±4 • EQ%>å×ÈPoäÙMzFª€Æʱ¹:—V ­¾P‚,D)*™³r@ÈjãÌ•£s*+©,xVl¶0¬~Òª|áM‚NÈÕLHÅDa1”.Hw¢¹“Žª4ÄäDæ"Z~(ê-"‘„Z^øzšJ‚€ i—Á_Õ¨¬ -ù•X!ðr°1¿\˜Õ9ª²9¹­CöÙ` >ëyzþ -€,¼âI*üð´Så±Hraìª -‹‡òAÙ’ú2ŽEšƒÌs…±•[eævί¹"žvŸö鯤3È˃8‚EEîTŠU­M×g0¿š%¬ƒGŽþrüÄñ¿9sîÂüÒòÊÚÕk7n“!ÞE¸þæíÛ÷>|úô ,Ü"ü.a} žz÷þÃúú›ÇOžÝ¼}wuí -v^-4‚›-q„µØX_j\XŽ¥/qð>Ña™1cÆŒ3f̘1cæŸ=Õé·Z/Ú¨ÈåW8yUÂKœH{d‹Y°¬<¶`•3ta:½gG°vìܶ}µ`Å;Ú[ã±M±VÜl%ù«¶Ö–X[ æWqr$ííD„Õ¹…E°zûûûwî""÷Ñ‘‰‰ñIÚ"ÌgóSùb ‹°*´TÁðìÍqÐÄK´d÷/t¤×]8©äý9Ô"Q(ÅprV¾Yif\'—Q¥•[•˜ËUy¹Y¾ k9 EÈA–âi§¤‹²) ©ÈòªUêfgþ+~õ·Ò"¡Gø•GæWu¿V¯OÏNÏìÝ7‡Ö¡#‡ùõ׿ývúì¹ —+—._»yëÎýž<}þòåúÚ"üÄZ„_™ëO)ÂúüåÇO¯ß¼{öìÅÝ{¸Eˆ;ƒ‹Ëó¸E¸ÂZ„+ktṋ‹k¤?øÛ™ßÍwº3f̘1cÆŒ3ÿì™;X´[>XáýAʯŠÁ¢ #,Kð«B²ø"©T6?IŽŒôïÆ‹»ˆ+ÞÞÞʶljÛ¼™ä¯‚Ÿ­ñXK¼­5Ç-ÂŽöDG{Gg'¶`míéé륬݃C{FöŒ FXÙ|!7UÄ*Ð" ©ˆE -… €EÁ¢¬2·`YV¤¨ªI«Ôgƒw·6\Ztª’V…5Ve‰›üUŽ -Yi„J•±‡K‚s9º½Iï[Ö9#â¹)-£eËÆ\hÛ@N·Ê[QQÙHȯ-Oj)$JÞ -m°Ú/´ÔÏqß”£*§²A•/¬±âWZZ§ÏQ÷÷¡ª9Q±(!° -I×ù'DM‘£kÏQ8IÕüP„ZNtg0¤·¶('ÂpÁò¸á**²å6£[Ž‹ä–u™ƒ‚u?¯’è Þ.±gP")^t(žrànAÞ ôÀ ÁM1Éwa­¨œˆ`‰¦!°»Ð¹s‹{•†¸\_y7·W™ ËüŠ!,bÍâò+z k’²!S»W9¿ªÉP)R#VŸÔêä¨UëÓXä>»wvïþ9Ú"´Aòª¢2®ŠÚ ´Ô…ƒaﺭ *²²•¶à–*½ ÈÅVÍs°Ë0•…dFK€)£ÖÝ“¯²áê@$•æZ°JP¯¨p”èŠÍƒQ™+ô“n BB;ø"|Vªx -¹ºÉ -…è–RŒd\N¨0¸hršr¤ &?w›$©´F¡ QÑïúŒ¢ŽA´B‚^wÖïsE7÷"âU‘±›x¶Ç‚¹,áW(J 0H€=¡ûAòJ†£(qbî,‡'µ$¶òwR6zbyÒ‘¶: a ÏUU¨Ú•¢vëª+ ©ªRÛî±æ )úÔÙ^§z+²êìÙ*#WL~EAEXÕZ­>]Ÿž™™Ý·wÿÜÁCG=vôØñ“§p‹î"¼NZ„@‹PˆÜ±‹¹ÜÿüöíOÖ"üôùí;Ú"||íú­åÕKó l!m.á!eŸ_ZXZ¡-ÂOŸ?›¯u3f̘1cÆŒ3fþ‘süô™ý‡Ê]>˜¯È̓¹b9[¬~U!‡º[tat‘ ¬ìT /"Ì&p+982ºc÷`oÿŽ-[·u` VGkó«M1Ò"lÅ–x¬%ÖÖFXq,rO$::Ú;‰kkOOooïöíÛv 2‘{r2•J¥³ÁÊËSX„¥D° ù -ö -Ër¡…°‹°@[„–e…ÌTáì“F·4¹.°BRêeè§dÌÒÓV”…— BI;Ô­+Rw[ú¢bZQÉ+êuW<êÀ²îXªÕJ,Ôåçðqª«”H•Å´Á~@1‘RÄ—±-ýHZ„윦­8žªñ^!3·Ó[ùõ:V.¸†ÈÞk¾hÎÌÌìÝ7»wn߃9ò˯¿’]„ç.Ì7«—¯\¿uëîýž>}þ›Üq‹ðnòFX~'"¬/a}øðéÍ›wÏŸ¿¼wÿá•k×—–W/..a„%[„«4‚u~~±±º|£ý_ÿ÷ÿc¾Ö͘1cÆŒ3f̘ùGŽíù–ëmgŠËÛó%Ú¬ää!úƒ³`•Iþª‘¿ -¡° #¬üT2O¦öŒOìÞ³}ç.²ˆE°ð"®â V¼­%8ÚZcqʯp0øÙÞÑÑÑÕÕÕÓݽm+¹ï ¬¡‘‘‘q&rOeó™|!«¡¡…wŠ -^Y¡IH‚¬ -_GˆSXxap«ÿTÀIT¹I’JõY¡‰Ò½Xê}´5Â¥e®Âvª -*ýÁŠ¶ -¨lmÍH@9ä¯l[ÙÓGÈ TH'K8¬lLqÅzTÊ/‘íB …e쮯 -“.B39UXÕ“Kôn®«:Ø£|S 'UEŠª6>"TêÑAÔün( -L¹Šcêç\ Ð$´q\Jª+()tÜÙ§Ö¡·Jv •[y’h‰÷rî¸dá Ç˜•/ê~¢èÃb>$Wv¹ÜÙ. å@ÒE[$yEWW)ݪÓäCXtG!%WõiŸüZ›žÁ-½ûföîßàСÃGýz‚´Ï]¸¸¸²zùêõ›·ïÜððɳg/ÖÉ.Â÷¬Eø #¬ïÒåþ• ¬OŸ¾¼ÿqýõÛ'Ožßº}weíòüâò…ù¥à§ÜE¸²:¿´|qs­«×®_j·ïÜ5ßìf̘1cÆŒ3fÌüófÿÃ3û樼篿Â?Å “bñü•¹Ûz+YD8UJes©Ìèdr÷ÈèŽÁÁmý;º·m#‹;H…° §°ÚZÈ:BœÅj%.w\!Ä«G°º::·léêÁ¬mÛ·÷ïܹs×nÁ""w,ÂÊdÓTä>U*ö_±Bõì<Ñd5N „ÅZ„eÚ"¬ÐV³Î`¹9Â*G»Ù‘õ“ -!Ü !`×ÓVz>*ì¹Ú¸ h‡‰ /)Q+&˜‚ËY…ÛAeDÊâ*õp³+*É DËÏqÀ»Øz%0TŒ¨:Q¦t-éôÓ‚p÷rtæƒÔÔV³§´Èr#úÛ4icð…œ¿AÆÂ`-J'¥Ñ'¥¬'íRBx…à6@ø1 ç -¼ -nîSX–"f÷t’ÆZ~Âvåêö*£dÃQ†µ˜­]@'zCÒõSî@ -€üΞgÉ•"cguB—ɬԧ×—ŠhS‰²!»€”ûDàŠµAKùéŠò l"à{§‚wêl§ôI¤¶„àk¯h’ŠWkxÛ _%œŠ<ÈžåüŠ³/ü*¿6íקƒ«µi̯öíßwààEXÇOüvêìç.,.-_º|õÆÍÛwï?xüäÙ‹¯^¿~‹[„Täþ…ˆÜ¿1~…~Å"¬?¿}÷áå«õ‡ž\¿q«±²Fh•lâ]„ËláÅ¥m75_îf̘1cÆŒ3fÌüÃ&_¶-ׇòv"°Âô);UÁ?I‹0ø©l$T-XB&r/§ -SÉLn,™¤¬þ][û˜+ÖÞÞonÃ"÷Íñ6r‚SX›ã±¶x,†EXíXäÞÙѾ…ŠÜq«¯¿¿``çîÁÁ=¤E˜L&SéT–î"$"¬R¥ˆSXV‰{®ÂêõcÁ.¡êrÇK +!MzYwO1»Ð¶ÃtS%O –¥X§´k¬ˆm€Z%0zQ`ER&;$¼r€ÃŠ#,„?¤ ·"Ù„%˜¢BšÜV"%ôV:hB*qâí<ÊŠ€Tá([Õ­GP¦HC» -¯úˆÆ—ÄÝlq«'©ô"¡ÃäNÑÑ)ංåAZˆþFËÕõSÑÚöˆûxá”Ôï…»lðq’\5ÊE”PZà -ý}ˆë§ õ²Õ‚‚¹R6Å^®g´´ÏÈtiËÕ·"‘Ôâ ‰F³D& -”YÎÊv™˜Ý!Á-JŠ(Ú¢,æ²ðƒU)Åâ7 /%äQ+úkUnÄ¡,!c÷¥ÌÊ“V+WÚ®XΊi¬H¼Êa»yK†¸|ü pdñ`•´KZEýW4…EQU½îñ¤–¨r£{ŠÜ§g÷Îî#"÷CGŽ’áéÓg/\XX^Y»zõk>{ñòåk¼‹ðçOŸ¾|"wƯ¾ÿúõûçÏ_?|üôæ­hÞÀ ;Û •à¼±*[„´EhÆŒ3f̘1cÆŒ™Øüøñc¡±œ+• ¿B̾^Æi« ÃV …ÅÉ•(6àW$¦•%"÷T>?™ÎŒL&GÆvõöïèî݆‰`µÄÛ6µµâaëf,¢EÂXk["Öšh‹w`„ooïà¬ÞíýÛwìص{÷ðððÈ(Ž`M&“©L:“˦pkŠŠ°²§¢Y¬²Šžž²8¿²h‹ã/bq/w€ú¬rsÅz¤ðJ} -i¢u pAÖŠZÙQa[P*âb¤ÆŸàMâÂbþ(5(VŠÜS …e‰ƒŽ,÷Š²x®IJ®Ây'P#HŸ¨‹W•`ä²?zGÚ«ìh{U(¶„´¢ÌPi«¨ÄTôãQñ-wc?U¤ÕÊ ­&l¬r¢wù¹*Ër’x«A–)äªP ¬¨¦¡ìÊü• -}UEø¬<ñQÁÊÂÛRSaCñk|Ú„UAîlW¢¢ÒâX¶`\\ÛÎ+„vyLØNþ]4"Å”Y¤U,CÅ€˜'­ìÒñîS VMj¯ðÞ@ib‡Ö,—‡©8ûbþv¶XÐã DOšÛiP\àY–¨VëÓÂ……¯©Õüz¢­àÀ±«)Ö§ƒ+i‘°:=]›ž™Ý7·oîàþþå’Á:óû–V×._»qëÎÝû?}†=X¯ñ*Âb!‹`}g »Üƒ§Þø¸þúõ“§Ïnݾ»vùêBcåâBãâhâÖò…,r¿tåjðívõúMóoÆŒ3f̘1cÆÌ?f?~¼vù2]>X°qžŠ•™¼½Ì(Ö·`ÑXÜ¿ -í"$,, -nžÊO¥2Ò‚Õ¿k×Ö¾í]=[q /"ŒáüU[î¶aVk*´Ð ‘•’jVåÓ êaå4YÛ·q¹Ïi¸j*E÷š´š¬äsþÖ;6[ñw %ί\°©Ñm`²¢I'Ž•`Êç;¹ÆJV=ÚrÅÊ?z™­6™]l'BξHˆIâäù2$†ÄÖ)»²ªz×éæé©*¯RÄD˜Ig9`ÿ ÀVŽPµ»¾¶¬‰­|?Ô^ô¥P‹b¨jU(ß]Öd-Bi¾¢žvÙݳ’„ªÊ-îU‘¤’Îv愯I/“´×<Þ%ô”.ar­jê³êÓÄ‚5=»oßÜd!¹Ÿ>{öóKÞ"|ô„´qëýGÜ"ä,Q!d.÷/ß‚gß½ÿðêÕkÚ"\Y½DÓVóŽ°VI‹pùüüâÅÅåà²à îÇæ[ÞŒ3f̘1cÆŒ™ÆTgözõ™)Ë.Ú"7e‹À/–ùy%‡[„l!MjQ»Á²Á"BfÁÊS ÖÐÈØÀàPïŽݽ½Ý[­´BØÚB\îÄ‚ÕÚÒJúƒm‰à'_áu„TäÞÝݽukïöí};°È}×àÐðèØ^E˜Â-ÂL.“+`V±Œ×–-¾dÐ.)*Ö´ Ë’"¬’Å,XS¥r©bm`q·¢z‚°hEé­Ô­‚.!Ñ:C…AUš7m}埭HבâžRãR¶êlg¢u¸=0Ä©lyM@7{ˆkéù(×ÒÚ…º‡z||©@]WåêF,­¨ßÄÕ‘W4¹ŠäZál•|œ“ =TÑËøœ¿u¥³AûÏ ù£¢ ]Æç@èÔ|] O()Q¨&ÿ($-RêýEn -¢`úK²/è³òe°Êkþ$F³9ŒÉb 9a>+Oä©XŠÖÏçy*_¤°Q÷óX0LÜ94‘Í’9üU4dÅV§O$”åK±•ÃóTŽ `ªá -F§ÈKªü%윥àµ'WÜjŤXÔÜÎØGO´0(_5\æI—»Ü6HõVôˆàZ5fq¯’ Vuz¦>M[„sûç:tä—cÇ Âú¶¯\½~ëöÝ?}öâÅËu¼Šg°hë›Áúöï"¤-¯h‹pi·ñ.ÂÆ2ÛE¸¼º@[„‹åÕKô;níòUóEoÆŒ3f̘1cÆÌ?`¼ê´ë×K¶Säòvž¿ªîÄÈIa•s a1s¹ÕU¡¢öa«XÉV2›#¬É]Ã#ý»voݾ½sëÖvÁjßmnkÝÛŒƒX­­Á¯-Ákk‹ÇÛqÁÂ"÷ÎŽînÜ"ܶMD°÷ìŸHN&S©L&-à]„SE,rÇ",Ê£ÅSeY!Dbÿ [±¤]DˆV™Úà!ìª(ý¾põ/"‹eE¸­´;_Q´˜Ý’HJh¬(ïr¢|쎵D€ -”¡nÂ%‹Ù®T¦d+Ö)‹v÷l$+~à)™ÚRx‘Rß³C<úÂ(eºDdŽ r¢ -ƒzþ*êÞçnˆS¡æQ+É…œ(TÕ$¹„~Š°šg±Â徟Üă)åDzÅÒ½ðBqA*ŃOŽ~.x’r*Á  qÝ+ùlÈ dnÊ#4I–‘\>H¯ñAƒ/ä³ò<€&ÄK|HX­ø¯„h)åÎAVߣÑ,¸…é­@äŒmdLŒ9¯|©m§˜‹±,`zçz+A«eªÖD°Šú¬Â’íBŸ‡¯ÈþAR0dç,ÅDX,—ÅžeªJ)Û0èW}à¶ÂäŠ8Û]k1#‰]ÁÌUÝgØjÚ¯N“Ö4-çÕÚôôÌìì¾¹½sð.Â#¿üò+5¹ŸŸ'-Âë7nݽ÷àÑ#Ü"\ýæÝ»ÄäþåË×o¡á÷¯_¿O½ÿaýõÛ§Ï^ܺ}÷Òåk‹• KóåÅåâr_c-Âù¥àçòêýš{ýúù®7cÆŒ3f̘1cæô¬¿yS þcÿ\‘$¦0¿*Ûy ¦dò*3…áUF²,E„…ÃZ¼H8eé),ÄæJŠ©‹` ŽâVߎÁêŽwt´&›I‹® ü[7c~…‹„±¶CX‰Î,rïêììîêÞ¶u[__ߎ;víÚ5444222†3X“DäžÎåi‹pªˆV©"óW%¸ÒöB‘;s¹³]„8‚U;­&¶«0ÔŠ¬VxÚJkþtK r‚±+ª«²mÞ´ez -x«„ä -AÏUDŒ -0+¦m¾t¤'²œ¨e¨9Cn4tr¢²UŽÓôâ°çœíþ ×(£”³!¶jâ?ß"¡p/ì¿ -ª¿±LÐY©P€*ÊâÎjtÈJ+MoXiŒK Jy ¨«±üQîôYÏ‹*6Ê5€wyR„åi»ù»87ùÀµ. WüÃð…} ÊÅUTòJÊb±R$°»ËË<ø¾®"T'‰Â(‡c1G¤§`’ŠýJïܤŠ|vn€gJvnn÷¹ÑD³0¤â{Ìv%)ÍqaÊTBjµr‰ª²õ‚.Ó¶³¡ ʃ˜DÕëâJŒª‚kˆÝÝc™+Ž°H슞7ñiL«Z¯ÏÌÖ§gYëðÑ#ǎì3¿ÿqaa‘î"¼sÿÁ£'OŸ¿xùêµh~"wʯþú†[„ß¾|å-Âõ7´E¸¼ziì"œ—",º‹pùÜÅ……Ærpù¢7cÆŒ3f̘1cæŸ1K+«Çcòv‚›òdi èV0¹š*ó8ˆ`‘{pÐÀUD«lS –ÎãE„©ôžñÉÝ{FúwïÚ¶½¿‹D°âl!¶¸?7Ç‚£-80¼â¬DG`unÙB[„ÛúúvìÄ"÷]ÃÃ㣣ã“Éd:“Æ»I«Xšb»©žÿ-BŒ’"°*—{©bcÙBH#Xa{(°4ïºhV3•V- k¬ìl%ѓÙ•#Ò®ç}=vÎw¶³]~–­æ¦°ݵm>ñÖž€]z> -f«˜›ÝáÍQÓP2—ÂVvûR6 F®íÓdVS"RÚEO0*ò„6L:E€,/¤‚ß|E&µš%·™„ÊQ„êÊ^„­zÑ!YRÿÕÈ ñ¥Èww\;9ÊJA¤˜£º¥jÕ=­N¨˜áåUHeSvHêÎöv-î"F°’/ª|â󈀢N(úƒBºÎo0´¬sÄ„„íÊgµAeK OaÉÌ•/Ú‚ðg¨x°ªJˆV ‰ ¿†›ØkÌ‚%ÒüU•¶ü˜ªk¯X¼Šo!¬ -™a±œ•eñ¥„Rê[‡$m…‚­¦ŪÓc:xpzvïÌÞý{÷˜;xøÐÑ_ŽþrüÄÉS§Ïü~þÂ|cyíÊ5Ü"|øšÜ_¿yûîÞEø™µ¿ÓÖ_4‚EDX´Eøž´‰áüÒ2ÙE¸ÚXY#-ÂÚ"¼tåÚçO_‚oº+Wo˜¯{3f̘1cÆŒ3fþGσGˆ¼Ø×k¢åÁ -§UÌâž™* q¹s VÉf -,Õ‚%ÎÃ-Â\!™Éb ÖèøÎÁ¡ÞÁêìhK$6ÇÚ6ÅZÿ«e3é¶?q+kk'ÂŽvŒ°:Û;¶tuvoÙBvb oʹãVnª˜'«DDî%‹K®ÔE„šØJ",Z$$.÷"‹`)+-ŽUŽ¥G˜ÕÕ˜–A«ìÈÃá9+é¹+©+ %Yècé,ð²È -—Õ-bÙÿpDp+œžÊtµÜ‡¢=;3»ofïþ}s<Œ[„ÇŽŸ8yúìïçæ²Eøøéóç/××ß¼{ÿáãGÁúB#X°Eøí»ØEøúÍÛgÏ_ܾsoíòµÅå• ó‹‹Ë Ë+Ø‚Å#XçI‹peí -ý²[_m¾ñ͘1cÆŒ3f̘ùŸ;gÏÏ—+E¾*K~%€¥XØ…‹„¥p‹0ÇóWai-B*ÈÊ—¬àåéÂT2›ŸHgF&Hk×îmýý[¶nmïêŠwà–ð·onmÅ»1Šµ%èÂöàšàgpqÇ–®-=ÝÝÄ‚Õ×E††GFGÇ'&S©d:“Êd™Èˆ°D‹"¬ŠÝôš,V!$ ·+•²eYJ¼ -i.,U‡ìLUôí²XAâYGU²;"jeƒå€a…»Rd2+ù¦ü)åêJÐv"7Z0¥ù©jbPoRýs´U}Ž®OG`_¤A]/:M¢S€8!±X0|+çoD­šÇ¥¯ùŠÀ¿qç¿óÖ®§êÍAAOâ#-Ȥ­äs¡Õ\¨¨HO¹]EÅ% ’ÍTðþ(L¨ QŠ¿/ú1‘YÚËAZ³ô –-KRrå(•@Y'Ù0_vy‹î $¨Šs0À£ç+Ù-O&©`€Š„šd -¿Ö÷¡P]CUœVUùúB!f÷ePä»<Þd®ÿµªŽ¶((cÆ*µp%­¬IlUex`)¡Ö%¤‹v‰8«Æ‰–”·{U…e‘„3aa‘û¾ý>räè¯Xä~êÌçç—–W/_¹v“¬'O_¼À,L°Ô]„ßÕ]„Ÿ>}yÿþã«W¯=~zãæ•ÕKó‹XÛ>ßX^¢¬ÁÂ-Âàüá£Çæ»ÞŒ3f̘1cÆŒ™ÿ¡³¾¾NOW›ÂåA¾*[dù …µWÜ|%ÈUšF°HE°H -+_b -¬<äW6ÈbQ ¦aÅT®0™ÉŽ&“Ãcã;‡†ûv ôôövlÙ’èlÇ‹c­›Z6㣵es¬­…1œÂÂ-B¯:;::;ƒ—tõôlíííÝÞß¿sç®Ý»‡÷웜$¬ Ž`åq«P,Šåb™ó+[`u ã< È"•C¾‹°Œ#X@{…`«¢Û«l]W¥,dTª¢ -u B0@Õë¶xPkð)>>áçaᕱÎO8¯ b ÊVSXŽ®yo’¶rCÍ>'”˜‚ Á&q)ÝdånxñÏôé?eMñ«&*·‰)ËU‚pé^t‘Ðá(µâ§%£\[M^)F)¾©Wºòqs}êkfVGJCÐçPiÅ -ŒŽ W€¿»ÈJy6tO ÒE> Œ`qŠù•=»/ÏyÁTéƒèôQ'•ÈhùKsùj¯ ¬°j^R&°Ðg -9¹b|Œ³2šžâPË (©½i+±F¼ÖãoÄ _DHW£;ýTSWÉ^¡O;ƒ€tQ–ð·µ{•1+†°êTxåÕ¦©/‹úÛ×"ØŠq-—.µ0Â"-B,r?Œ#X¿žøíôéßÏ_XX^½tõÚ[wî=xôäÙÓ¯È.BÒ"¤"÷oºÈ´?~üüæí»—/×ï?x¼¼±Bv.4H‹ŠÜWçÉ. K—Ì -B3f̘1cÆŒ3fþ§Íë7ʦ?Î_þ3˯€¨J”3S%þ³”ž*²DÖ{ -¤°T~UÑ-XôÈ—‰~ŠG°Rép+–HàV¬•À«V ÂjmÅw\! ŽöÎŽöŽŽNÒ"ìîÙºµ·oûŽ~,rO&“ E˜§-Â2+–hвËöO‚X\™e­ -Õ¹—d f«äÁæýAx%ãT¶š³â&vì m)]‡üJ®ŒªïY U6ï†ø¿ÆŸBê*%@%«…–d_0(Ñ7t»NR9 .¥¢-í3èªÉ–@‰V³+ÿ£Ã‰Xø·6 Bp*ýÁ_] pwákÃb(W(§Pˆk!Œ Ù8q¹#Ø -t|QîÓDU‹Iù¹­ú¦lò"_n ¤°Kd½”Û2À%CSž\ö'n¨žò.,»åÁH•š§WB=w¡5]®dVv̵äêC‚¹×­= Ñ)팔´;"¦4ì|#¡HvUNÅ-X4dE[~t¥ ”hñ.Ô ->@í¬Ên X5è€J #è–Ç#X,^Å+„’bU)¶¢é,̣ȯU²aУ†vL«h‹µ ©ã½ŠcWøñê43bUkÓ3{IkîàC‡=vì×'Nž:ƒ[„KJ‹ðÅ«õ×oß½c-BUä®ì"üðán>£-«‹åùÅåù¥åÅåÕ%Áb- óa]½†ýWë¯M…ÐŒ3f̘1cÆŒ™ÿ£çåËWð×S§ÎÖgf²¹üT¹l{U_QÃÇVìÀá+Üþ+’ËéBI ,Á*ƒa™ñ«XAÈ–©Y«DDîÙ±djhl|çàpßÀΞ¾¾ÎîîDGGK<ÞmŠµmjÛ¼©uó¦6bÁŠáE„±D"Þž "÷v"rïê "÷žmÛ¶õõmØÉ#X#ãɹç ta¡T)”,,ªð–eW,e9 É_!εè9«2öU±U™]B]Ò.š€°*h+ÛË@!Zç¿rO;l %~µ ŒBü&É R®ê "¹dÐQ³Ra~¥ ²PÌIOam¸¤ocó¹ô_9M[„‘k‘Ó4Ž&N(ª ¨à&A¢e¹·4ú´aÊ é*ÐB,¤Î]±+#&‡9¯hœ ¨¥¤÷ ÚÑmE. ›/[Žf‘Òº~>èúüÃÈÈ“&¿BJãOä´¢äW0@En¨ä£|Õ¦î¦DìUR±N`”¶mPÜÜU$ZÂÍÊ>)ü -ìô \)üJ_8H‹„ñt–dV*õ⊚ÒjMî”V«*ÏYÑÛÖhʋЪšÜ9èùâJ—‘¨šÐ°»¼HCYʃJ£)ß©çªJ¢V>/ ú5‘Ȫ{<‹EÍW~uš>^%¿Ö¦gföîÛ»nÿÁƒs‡9zŒì"<ûû¹‹‹•ËW®Ýº}÷þƒÇdáú²‹0$rWEX¸EøáÕ:nÞ¼ygeíòÂÒòübc¡w.¯\ZZ^[h¬œ›_ üñã‡ùcÀŒ3f̘1cÆŒ™ÿ3çÙ³gð×3ü±wß¾|>ŸÍ¦ÊeOÊ•‘ øŽH‰Ì]¥éÏY”_Šœ_ñu„%±ˆÐ¢",èo§8+OîŸÇ¬rp‡d/"œÜ3ºƒF°¶mìöö6Ü"ŒÖfêÂj‰µ’-„‰x¢Š°0¿êìè$Â-[·öôõõõóÖðÈž1Ú"$ · ¹©R~ª„EX–M‹„e.Â*G´üT»PrEVð*Ý=…§Ò¬V¶ê§rxŠF§èNHf%ì„Y¡ºR'„â)'ªµ‡Îâ÷茖ÛD½Ž©Ž…´<•æŒrTµ…–*Bªàú›>-j’œŸå£šïø‹^ù*ê‘*U¥f±lÞéÏš¤0AÏãiF,–z¢âq” Å.ø“)˜†ÒÅéRÌ®J«(8räìHÏ•ãR<—åE\iºíúÂ4ÅÒSž’ª²¡¥ -¬DžV`i 'î#cD -¶rå ¥ØÊõ´ÖŠ8ñlÚ4ôÁAO„¯ª”Yé<ŠE¡øâ¿äåˆË¸,‹&²˜#Ëç« A¤ŠÕ«<£Å°)Š½‚w åKÏ•4\‘„Ž]q‡©ò+9ø¢úY±ØUMò+){¯ÁÖôÌì,nÎí;pðàá£G‘]„g¿0¿¸¼²võÚÛwî=|ôäé³ëëoÞ¾%-ÂϤE(+„rágÒ"|ûîÝ‹—ë<¾zýfceíâBƒ ¬•%Ö"\¡-ÂsÁ£«—‚ïÁ+×®›¿ ̘1cÆŒ3f̘ù?dž¿x½~ãFð_ ÅR9ÍM•JÁÏT6›Éåƒ#_,–¿¢Ës,y… -©ÈÏb*_$K>’ÎOQ–Å#XØš%[„–¹‹,íæI‹."œ$,jÁÚ¾“F°zØ‚aV+.âV¬ [ÜãñX")V{{{GGGWg¹÷ô‘ûö;vP‘ûž‘‘ñ‰ñ$ÛEüKsbaÅš*U(B-4%Z~Ì‚Uâ.,òBËjâ`·C +•\Ñè_!abÇFuR!È£,ñR:ƒ,y¥ÛÔÅ5(OÁH•^‹QR-UQ-B˜ËRNN´l -m@¢Â7‰’V¡ÿo.t7ê}Ýf†«&ŸÓU­æ,å„’ZA´\OA^ÐRÅ•P¢R§)¤”ÆŸ£ç¯¢"R®âoàˆž+Í>Çå*Å1%yQ„ž]¯|'mÁ-ßÖ<ꞧ–þ“Ç.Öåò¹b©l»XÞn¿z‰5¤"ä*“gØ*EB®è9FXEœÂÊñu„yÐ"„þ+°HË -^’.L¥p+329982ºc÷`ïŽÝ<‚Õ‚#Xm›Ú~ÕŠxË_áV¢³#øÙÕݽ¥§gk__oÿÀÀ®ÁÁÁ=BäžJ¥3Á¥ó…aá]„„_…vÊJ Bb“ ”½3–­D°H¥…²ôÞ4® c•tªÝz˜PY -Ñ¢¡,.ôÉ{:¡ V8 E´B¶ó -2+Û‰(Âúa¸èjý>WÙøwS -r~¬j¦¥ -‹Ó70®;Œ]ÉžR-t•…€ê.?ò¨³X`_j´É…[ól¥XÇË}È&AÜDïã }º+ø_ðCjÅ=u£Ÿtåê@F¥|Ų Â»¤àªA¾fue\CXªrŠ1`hçÄIr0ž°òdŠ‘.WÅM¾²(-Ï•J+O."ô«pu §LüÄØ3È<êU€­(Œªr?•ÂTž0SÕxŽ‹;á½* YUEžŠz®|¦m÷ÅÞÀg_,7Å¥î˜89`É ¨’ÀÕ´ØHÈh¶Sá„QÌ_¥ +^!TQUh !†ZaÍ`„5»NˆÜ‘]„çÄ.›wh‹ðå«õ7oq‹í"üö]ßEøýûÚ"üðq}ýÍã'Ïnݾ»ºv…í"$"¬n®ÒaðÁã´Eøç_™?̘1cÆŒ3f̘ùß?wïßçÁçBeËšL¥2ùBp¤ªÊ…W™\ŽžäË•¢íðæ …ÃT^¥òS8s•§´jŠýÊ'?ñã¼HX& ƒ©ïà"B‘¿²Ú"ü -S²üT2›K&‡ÇÇw+¬X"±9N*„-„_µa~E-Xt a¬=ŽùU¹·oéêèêêÞºµgÛ¶¾;víÞ=4<4222>>6I"Xé,wÁš*â!•Y -¡0Pe½ æWä%x#!`±fŠÞ6ˆP¨(ãX4UE‰–l *ØŠ‚¯ðVAÄ•º-§²4Q•­^ckJvWß CPHCUÎÏTçÍ(–ʲ`R 5?9¡øÓO—§&¦ Õ®êó¡®\}ÞªÓTTðÝÕœPWiK]ø=¹È¤­éâõ@›oÁ“(Ìá¡&ÇU±•Á¶\ÏVÌêœ2qÄäp‚DÿEP ;òµ®*•òAjKvúlW¼„[°\jâ¾tÞŸÿäI'N¨dðÉça*ĸ '©l É/)iâ -?‹@òJª×=Å‚…TÀÅTT^•Ûݱ Ý…åAQ<ô}ÙôÚrÀA‘³OÉäUpR忲ò`ÕapIiò 9§Ë}V¤åA˜¯èê@’Ѫ±[Ñð•_c¬fY.À\4vU ÞdÑ,B½pßlùª«ÊãûÐdÃH’*­Â¼È ȇüMqž;Zô ’1*`÷Å•Ž@F  ?€(åñ†ФƒÚˆKÉEŽ'tîìJ¾gзó¸·Êã4Ì×ÔUbG¡¨þéµDþŽŒÿ¸l‘ìÊįr $—:|‘Ÿü÷ -<å«øËãa*×÷XÐ9+¶1;}PY¶ --¹SZÅLY`àÈe±s¿JW NÓÔ#T\œUcä -ÿ*¯2Æ533»oï¾tá‘_ŽýzüäÉSgÎþqžHª®Ü¸qûÞý‡Ož<{ñrýõ›wïÞ µEëϯ߾“]„ƒ+Ÿ=yçîƒËW®/.¯ÒAXk•K‹dáŅƹùù[wp‹ð™Z´7cÆŒ3f̘1cÆÌû\¹v b«à?öII0“Îf³Ò äñ*r.û•ä0æ*–„¶=‡× RNUHf ©ÜùY`i+Á"'ä)ú`aŠ.(ä"wŠ°(Ų¿¢FwA±ò¥JžZ°ò…d&;žLc Öððö»¶ömïìîŽwt´±V+ínnü*Þš .w¼‹°½½‹Ü;:»º¿ÚDîtáØif‚ÿ}p ï"œ*M•ÊbÁÂ@X‚&öŠJäZ!,ZV…-dÒu›YÜm¡¢¢¥?šrøeŽ\5HwÒEŽ’›²à°rä&ANä¯ ÊÄsVŽî˜B.¤[Ò ®Û¨ÜP[0©r£:€òjÍr›d¥~ZtC8+ÔÔ ¿ëÇ8!®B^&¸@û©‚)%m¥v‘êNGÊ~@_ñS s»ü¾.Qš,òÈ+…5]vŇ}=þo÷Cö*öZ¤—EÊG5é@ÆU”ÉKýžnr@FËLŒ‹¶‘ø"NuñXØÉÓ 9qêU‰)UNåû4̆| ºrÁM` -\z…,ë%x‘|œ•þ€ò]ÕÓî†"Uàþ2p%–º"mŸË_‰–ŸxGÒCôùÅ<Ó%ʆìq£rÀ˜›½*3TëR™,‚%ƒTU%[ë¸Htî4^Å •GÐyŠé°H^Kn'¬ÏÌNïÝ7»ŽG°~=~â7Þ"\»|åúÍ[xáÓg/^¾z w~ûöý›Ê¯¾}§»?‹áÍÛwW/]]l¬P„µ´BZ„+k<‚µtîâm~ùúÕüEaÆŒ3f̘1cÆÌï|ûöÍ©×ůï>~Ü·±\Ng2©t& hq=ñÀù™e±+²ø³„_•©P=8°Ìª@ UŽc«fYa¥òÁyž‹s´KÈvæ(Â*±!u¹‹„´HÈ/Y¬«˜ËOf2£“ÉÁѱÁ!ÁjoMÐE„m›ÛZ7ÅZ6Ç¿j‹ÇãíñöD¢½=8!«³³{Ë–­[±‹ˆÜvãáðèèÈÄÄ8`eÔa±ŒSX›Š°J<%Eîò+\', ;ugÁ2 ²jÐáÑ,Ñlª¢˜Ë¶ÝƒU¶¾ŠL=A UŽ«ÿÔTê¯6Ôa9 -ãÒƒR´÷çêËž«0s²PiíÁ¥~á-J&J2ÕIE3Hž~gîHw¹“êB÷ ›e -° ‘æY,kùZ[É>XAè -Ç”­®Þ`)eÃP‘òÇS?¡gË|:ø1'Qǃz+Gò%‰ªl"IR©²)É \Áí~=±„çŒ)¹`™ ç)¯õAÝÏÀʉÙ!°0MÜß•-EQ-tø@†›ØgSS”bIckr¦$MìÁÍ]®®’v ò(°â9+ò¾5A´D…PV yõeÌ€áŠ=%î)ë„uÚgôk؈Š-ƒøgÕ÷ëÒŽ%¸=!Q+jÊ¢$Š±,*lg-Bft§mAü ²ðIðŽ´`X«Ï?göîÝ7·oÿ>úË/¿ž8~òÔé3¿_\XZY½tíúÍ;wï?|ôôÙó—ë´EH–*rÿ‹­#üÆÖÛw^’áµ·È.Â¥ K Ë8‚µ¸E¸ÌDX Kæï -3f̘1cÆŒ3fþ[æÓ§OâüÇç/^œššºtõê/¿þZ(ÓÙl2ÎäriÀ£¨áJJ®Ä‘#«\.Ã+„Yʯ²¹L¡ˆ¹ÓO^eóÉL.ü¤œ*G€Iaá¨0¸@Ò­|!Åw†W9bÓ¢œŠ‰°ø‰ˆ`*V¾Du[SÁ›’ÖÄΡá~ÁêêÁ‹q+à -÷––Í­­›™ÿ*Ñ–ˆÅÛñŽD¢/"äüª;8º·nŬ;v줬‘=cÜ‚•Ê¤ÒÙàߘ!-ÂB©2U®L‘üU ‡©¤«bÃý€ràp¹ÓÖaɲ+BiÅë¶l²s²"Åìáî­rBÝ@IÌUxW`˜V¡pK+jm>Gqa¡È—82 ¿¿ Ðùy+œ¡ %'µÊôH;àH°('2Q¬èrºåè;þ$€’¯Ò|²<ÈÝPìÚ“<+°Âûûl%ò$eéàKœJI—;GU¾Z$Tÿ]"¥n‹ùTHE}ì°¯’WÄ@%=QL!UåûAr¡¢ -@$—'šdPJ¬,T;‰ëú!Ä psT•S N«‚ÀI™•-”';ƒ’Œ‰Ç9¤Bb èú¾àT‚8I#–°³¦!”b9ÜÁ.ˆœ+­V¢(:ƒ5©Éòà¿Ä‘MÀ:Y=ùµàšb¢xŠ¶Ø³\„%é0_ÕõÂÑ,£<šrýVÌUçy-Ƭ<µÂŽ,B«€°}z†öƒ‘¿ -®¬c Ö~Œ°æ8|äÎ`üíôÙ³œ[X\^»tåÆÍ;÷î=|Â2Xï0ÁúøùËg(rÿK¦°¾}ÿüåë‡xáóç/ïÞ}péòµÅåÕyÁb»—VV–å.Âë7nÑoØ/_¾˜?9̘1cÆŒ3f̘ùOçí»wð×Ó¿ÿáºî±ãÇOž:U,•³…Â$Ö[ñ mæµ`UŽ® -¢0(v - û‰“ZERâ#MÀl!™ÉM¦³“™<ÁVyŒ§²äw óp¨ÅsY"¦EŠ„™b‰-"¤üªÌ–8Džä˜ÈD°Ò™Q²ˆp`p¨·€E°:È"¶6̯p‘o$l‰µ¶Æ°+F*„X„…[„Ô‚Õ½µ§§···¿ûÀÀÀÎ]»‡†÷ìÇ+•Ê䂃¦°¨È}ŠX°°’穨­]ú¯Øê@V DLäŽàz‹¥¶Šp¤#ºjI$ÅW”hÝ -h¹Ñv,GãTøJ‹!¯(TY÷ÓnTÔÊýØ”*ú¹Mlí?ÝúçFR¬‚ºuÐTyžúfœà³  (yx<¬Iw›=>e¹¡š¼•¬×)•=‚’uò«k{<줇¦DêL©òÈ—À‹%znxÇŸ VqÈ)Ñ0¤LâU<.ÅÿEU©d2v.~—7t@QÓ¶‡+{ŽŽ­|µµç# ¿b)Πä'ŸAyœÁýƒÜ—%3`ÂO¼\ð"e« kVY¶Ê÷AzJh¯D1P6þXaP0+¹[°êÈ7ðŠvk’Aù̵î33†K„•17»àNLչêÊ3W ^q;[)Há•Ç£Y§UâU¬ȶ¤–ÜEXã.wfw¯O×0Ñb ë³$‚5w`îkž8ñÛo§Ïž»0ßX^½rõú­ÛwR¼Ur©’örÁФN -‰mƒdeòq u‡ú|hbçÝ=Ñ[ö„Á)ŠGù=Ua -K1ne$ -ÞyZê‰ßJì”:t“6uñÁ`®ÌñÔ‚¾ò¯õ±€ ’1¸ÄÌí0[Å‹„F¹>×¼‹ÏP '©Xao”„Š¼Ê«ÖÙ³^Õcfu°I¿×é oz>[ÉD'KÔaE -}Ôå×jÔ O™•K½U¤ (v R½•/Ìíµzuš«š0´Ó,Ö4ÇV8sÅøÕô4-Öpmç²üi¾Âk -ÉQŸž™Ý7·w?¹=vüÄÉ'O:óÇ…‹‹+«—¯]¿…[„Ÿ<{þ’ì"ü€ Ö—Ð.Â?ÿ⻿}üôùÖ"\\šg»Wƒ_Ië"m.±á[·Íß!f̘1cÆŒ3fÌl0ÏÕýGË++Ó33~µü‘_±íd&›L¥Ó´$˜ãVv™ªÊI;€Zg‰üH^åÄÅ´c˜Äâ,»Jg'É˃䘤'Ùüd:ŸÌà_ÆY¤3ÈüWÄJæ -¢Eˆ+„E+_â"÷Šè Âþ`ð¸Eö/ÁåÄ Á¬ޞÞÞÎ-[âÄ‚ÕFÃWTÕÇ ,ÂjÇÛÛƒ#ÑÙÙŽŽŽ-[p -kÛ¶mÛûúúe‹p„µSÁ¿šî"ÌM³…b¡Xš*±aÙ’BvS—;íZT„…I”ãZHÉYY¶ckl*œ¤"¦)+²ú§D­Ô°Vx`ij®ìý!׎\D(—j››3+eŸ©Üˆ¢_ ;Ò[~¡Í€=Ç¥B*b¡ºIP P¡h­ºôGA;ºìÖ9¯à¹pwžT—Êä¨>$vzÊzAžòBq)ùÓq}hŠ-ÉÁ´$…T6Ð[!ø/â$¥”ˆ‚°„™ü3A„É•‰",[®d\ 1W•Ï[¾¨B­:>H(°Œ"5À0_B²!è)ðʇïîAòÆTð‘‰êDXUàQW¹„uJØ«|°@PÚÚÙó«ÐOå‚`•¢y÷·µ¬sI;íbœ¥Ç±˜«&ÅY -¼+뎸²Fìu©\ne÷ÉbA.xç'4‘%dìUù#taúÛ°’Û‰óÊcF,&§¥BÚ.œÙ»ïþ¹ýXä~äð/ǎǬßÏ]XX¢-B²‹ðé³/^½~ý—‰Èýë×ï˜`IfY_1Âúú‘´Ÿ=y÷ÞÃ+W¯cíÕÒò|c™Š°+« Ò"œÇv¬KW®ÒïßÏŸ?›¿I̘1cÆŒ3f̘Ù[}øôqß9ÿ‡•éLv2•Ngs)Ü,Àn äT’bN•U— -çU&§då&Óx%_2›He&Ò™ñT:8&È -~%D‹±¬I*ÅÂP+ŸäŽ,jÇ"¹¬<ïb~•¥¬’ÅEîR„EýíSgÑÕ‡¸BHʉãÉÔðøä®á=Ûwîܺ}{×Ö­TäÞ‹áýƒ˜bµnŠµµ$ð -ÂX{"ÞÞKÄí¸EHvuuuoé¦"÷þþþ;vïÞ544´gtd|bî¥Jj=P P±"!ÌYÉ.«F*„J‚ ‰‰È§ªJ :‡N‚’‰Í€à½ªHT&}Oš©x•’Ù«ø–CÐø“Á*¸‹PYÚÊ« -è7 ÂÜÃYÔpU­B÷l1ÜijX"^¥0.åWyC[žÏ -€ —UýAmq! bÕë"ý£Y4ÓEUÌßN íuÊ ê ÄŪˆ>øIåíôš*_YHEX䘡j,¾b]ÂéúììÌÞ}{ç8xøà‘£˜`øíÔÜ"\^Y»ríÆ­Û÷<Ä»_½zM2XŸ>} -E°ÂÂ-¯ï?|z%w^™_l\\À»I -k-8ÈvÂó‰ëfðEœÎ•Ì'f̘1cÆŒ3f̈yúì™8ÿñãÇôì¬çW-ÿQŸ/L% ¶Ê \¥Yz*ÓS˜V$ÚbÎ+ªÃÊ…Ú‚ü†B–… ð™l2…WãIB®’™‰ÆV©ì‡Wò Â¬äW$”•—",,ÅÂ"÷ôT)S$"wz”­|‰û¯HsPî"$ü -/",–2\c$¬äYDØ70н­·G°Ú[‰Íñئ¶습nŽ·µÆÉB‚°ôèèhïê¤-B°°È}×®ƒCƒ{ö ŽŽÒ]„©4`e ¸E˜/–q‹ì"HªÂ+„2EZ„|!çW$ˆU ó+¤E§\([{dŒÊQj‘ºyP[;è4ÛQaµBîÏ|V‘mA^BDÑ=AW¢¤°Æ -@'äj­À‡•jòôΠ#Dëbó +ÏÃÌJK@Á^ž"žá%jàȶv¤î 4 ˆÐÙƒ²Ç'ë{ŒGdM 3È‚CÐ^n»R*Å›ƒàÄ•ÎvM@¤’%'ú§è9rMº«Ò*usŸüÕ×”H4A„å¨)) ) ²,õíxzªŠÄ:BEÃZl£bUÕ[Q % ˜PW…»~zµÐ‡•À¨ë}¸x¼Ê«†cW"»%SRÜXåDÀ«š¼Ø¯A—»´¯ðåJa;¡X"”U…­Ã*Ó^ù5¡g§—ѨSiÕXòÊãTŠ†¬h’Š8²˜È®&d˧éFº_IÿO^Ué ©NÏîÙ·ÿÜ"§-B™Á»ÿä.÷o߃'d‹ðÑ“7o/¯^ºÈÖáWXíNÖüÒBcùûÁ—òõ›·Ì_)f̘1cÆŒ3fþåóäéSˆ­¼jµZà ÁrÅš*•'“©T&›áJ,LÆ"BVépþ -Ô³¹BF– -szX°èÝR^e“©ìd*3–LÇød -±RYú“…¯hµ0“$ç‚\Ñ,VŠ„¯d¯• -Y - Ã+Á"ò+ o",‚°ˆÈhäq+•™˜Ø½gOÿ®][·÷ÓVãWDÕÖBÆ[ã±X"Ñšˆ%:Úã$…EvtuunÙ²¥§‡X°¶o§»‰Èï"œHNàa:• þ7/V±P$"w‚°D¤Šï ÔUH ¬28ˆËU·"µÖç†ìëjøJáWaœ¥iÕC†v -kEæ©Ü»~CÒî6«ºŠ– -ˆ§ ’é‰)Uù®¬ùÓ^¢¯ÿk"f×òT>ØúÇ LÁÄ”®ÚÙRNN<φ»åƒ2ö#âXþ÷»§ãú’rÅŽ®Æ–€õÝQåQÒ:Åîæ©~'òÏq<OÒBJ~hŸö”jR=QQæ(G»ÌÝÊ$ -@!U™…ÀËØÄçÀÿÑ@bJùØ"Cå‚Ïà5ee.wÂCú¤ôû"W²Ä”K쪋ú8¿’ŒKÜn¬VµR¡ UÜèËM‚„AñjaU¬”‹EûÏ),fh§Q+ú,~¡ÏœWônJžJ+*`gZxú/2–ÅJ…ÌU§ðŠµ«”\MK~U• aÕ¦g¦÷îÛ»nîࡃ‡°ëד¿ývêÌï\XX\¾tùÚÍ[wîßôøÉó/×_¿yûþ}T‹ðO–ÂúÊv~~óöÝó¯îÝpùêõÆÊÚ……¥‹‹…ÆÊÒÊêEXKËç–.,4–W×èô‡Ì_,f̘1cÆŒ3fþ…óàáCˆ­òù©z½^*— Åb©b‘’`6“Suë"v•Ï)¥?­?¨=È©Tø%Ù|@½‚‹±*“ŸLeÆ'SãI|Œ?q…0Cøéfr¸H˜ÉJ#V&O"[ù$w¼óF!w¼„EEX¬HX¶p‹ˆ°¹’çW¹bG°r…àÇ’,‚Õ»c §·¯³»›X°¸?kÝÔ¶o!Œãa<‘hÇâÄåÞN&ˆÈ½³{KWO7FX}}}¤E¸spp÷ðžá‘±Ñ‰ÉàK[„äêB®Pd»q‘,"ä",J«h…nä S¬’eQ„E,Xá-~aïºaeŒQ!gÃÀU¨øµÃS$êø&^“`×­+Nu•)A›:'Qˆ†µ4õ:} -;©´W…ÑæZHu°ƒ•Ž²=šÏmíY¥åçAj„Ï…z!U‡¼U¾ ˜ÔFE¯ês9tôHñ$Z >¤¢-èzBž²˜O`+y=@Xp‘ŸãA†&#Iòß”òUMxŽ ™J…]Ψ7‰ÊDÉêíô)7DPu._^URXÁKÀº@G} ¬%²&£°QÉ €UGeq0 %tU@ù0X¥>R“9«*ˆo‡‡o<.UeCš}¢›«à¨‰Ü”W…æ«*Pqå x%­VÌÄ^­b`‡¯Å"7§&v–¿«©é6ùæÁš\/Hx¶{¸H8-ÒY4aEÏ)³À -ŸÔrYVw §gfgöíßwààÜÁÇŽÅ*÷ßN>óÇy¼‹píÊUÚ"|B[„oß¾ÿðáÓçÏ_Ô]„\ä.[„_¿~ûäÙóàµk—¯.,-ã"áRcay…¬#\ N0º¸xqqéÊõëæ3f̘1cÆŒ3ÿ¶¹uûÄVõ™™à?Ï‹år:›-V*“LÉžûsL®.òQ01¥Æ¨”Uƒ9ýš´¼XÊÞ³ð…¼`|ŒTó«±ÉTpŒ&“#äd<™&ü*MXD…ë„”há…ÂôŽ•àZl_a’î1ÌQ„UÎNUø.BKZܼ*ðÕ„¹R%[,¥óSÁ}ÆSé=8‚5Ò¿k÷¶íý[z¶¶wvÆØ"ÂØæ¶ÖMØ…ÕÚk‹·'Úq¯ڃ â¤E˜èêhï"‹{zz¶mëݾ½oÇŽ]»v í—¬t&—Î⬉`)"÷ -¹óü¬‰d±X»^&*‡ (Ù¡d”îcw¢2TÀ¦ŽÔ§ÛÜ©îDï [Ó•×z`埫DžOß Þšz0peSâ…\îó»Qz#:†Š„ZÌ.å"uu`³n l乊*žàOñÙ$lÑ›†%1F.ðD°JD2j… ûà~@ȯB˜K¤¡ b]&¯2¹!¯”'[‡Ž¾Púµ\µ:J% àVêOÑÏA!5L¥È£Q9…KU– -ƒJ\£¼¼*X2åUUÖü)ûß•‹«àÃCÉjÁ÷…X¬*´TPÛŽ»~\{媋]µ'È+¾SW -˺ô_ a»ÇIáNuEç^­zj%ýJKä<®®¢b+·*6 -;‘´×§™ðJd®„«6íW…Ú]ˆ°¦"«1ƒ–…¼]œÔȪÁºµî"$y­(Š5=CâÖÌÞYÜ"°s`×îÝÃÃC##£ãã“\äN"p¸EHø¶¸W,Á£ÂÂõ@G‘«C~Uf,ÛÁÈœLdÁ„cYn¨lØ Uý‡Ùª°‡Ê k©¤›,TÓP€_!©«Š¸X®ùƒPÈaE6•Si%>ß»\T´T ÖÅtåà†¢©ç"€}Dy—û|¥ô§®ùS‚F®"Rp“š€’‹ó@’JÁY2š·øyÐ+Þ(¥îªö\J4ÎäéHÍ e¥Ü0vü'"žÄ?@ -¯ÀN½pp T=}OS2Ú¤µ!5’Àª*ò€HJV󪎺Ðõøgæ7n+Öȃ/‡ÜɃèÉW·ò7%>vq§UjCЃ:,ßÕ+5ЬAÕXTN -ƒúá€õ‚|Õ àZU}` *­¦ea§­\~eY>9aû -1ìª «Rá _©¥B!¼"¾,Ž­jÓ" U#ðŠµIkf‹Üé.£ǎ?yêäé3¿Ÿ»°ØX¹DMîx!n¾yóîý{R"üòíë7m¡DX?~~ûö}ð‚»÷p‹pieZ°¹È=8Á¬ù¥ó––ïÝ~|ƒ¿}ûÖücÆŒ3f̘1cæ_2£ããÉt:?UÌJˆ§@¦°rܾ‚U0.¥å²¢ö fhC’.­Bð…]©l.•ÅÚ«Étvl252ž™HŽŒO?ÇH‹p,a¥(¿",‹±Rb5ap’›T5ï\–•-BZ$¤",jÁ -§°ò,‚Ŧ ÿ‹½÷~’ó¾ï<ÿŠ=K "%­$K²}çݽÓÉçµ×[¾RY{»Þ»«Úª«ÝÚº+˶E˜Ô“sè4Óa¦ót÷¤î'vr€ÉƒH€È9“&ðxÏç?ߧ²·ê~‚Ÿouuõôtšá¾êý~½ ‰L–X°¡(‹`uõõ·wuµ¶·7µ¶6øÀ‚Õèkir.­¾æV¹Åêhoïèhe"¬°`õõõ ô úýDäŽEâñØÄĹg²BäN#XÅéÙéYˆT‰·¸—eªÄOŒOD&’±D2žJÅRé¸sa:,v›€,jÇ"uB X9nz'‚÷4êºDXbˆpZ-¢¡[³¹âT¦,`k<‚5äô‚«­³Dî>"roiil!Ë×üª­÷I…€¬Ž®®îžžžþ~¹#ÁPptt,ƒ!‰`%Ó™t† D*rŸš.NÏNMC‹‹ÜËl‹[Üap°Ä‹„,…5CW …)Ë=ÿ§ŠÙ¥ÕJ«³0ø2Y•ë°,í–uìTÇ$Js5 u©ž‘¶r?^g­@]¯õ_‰A½zå[%–‰rkÕÔÒ°–J \é˜;¹ ƒJ’J‰` ˆ„lWCáº!1–Já‚gV.QyÉE–4$f§<Í0]ÂsöŽ‚©ƒ}¥/º2„‡^£¡’‹;¹XbGôZ“©§š Ò7Äù(už¯–ùèŠç¡0½ž ©ŠB¡ô—;=…-èåúCÑ©ò3ž%óThP¬TЄÉ»Á…W†*ŲÊêz`Ù/NåTo2BÅtX–ÍÞ”m²êŸóƒãt–n"Ÿ‚WÒde‰b ÌSéâ‰&3·ãåAÞ@”á+¦âÂ+±,šË"¨Ê‰,r'8Ûm6;H_Á®Î„Uµ+Ìè^ß<¿eÛVÒ"ܵgß^ºEøÞaºExæ칋—®^»ëÁƒ(Áz‚[„O¿R[„_C²&¥èGf¸=íÌg®)=d/çïÂß·ÛêÛ¥0 Âuþ¥äE.„eÔ”øjíR®<’aº"Xb€ß_rÈd¤»†ü\wºÈ˜AõSHeà?I“tžªâÑ,­æU—w f%~"¤RÄÌÀ{‚š¡æ©´JE?Ó–µD!`ÇF,Ž¡hmÐy$”øtÓÕ"d­@9)ˆsYò­‰ÆŠ r1»PcYÜ/Æ;+ÌânC^‹•MÊ©„ÚÝ¢HJ€)v›À+’­b´Šº­X笨íÊäÑ,Þ"„ –óH,X[7oݶmÇÎ;÷ìÞ»o߃ÉáòÊú©Sgο-·îÞ½ÿË`}ö)´ið+Œ°è¡óçd‹ðê©Óg–W×I‹Dî¸ExtqåðÂâÚñã' ¼ºÿà#ïïxÇ;ÞñŽw¼ãï<÷ç§ÿúOöóŸ÷ôç‹SrûOÄžvÑ L׳Kïú¤Pcåp‘. ¦È WsP$²H‚k2™Ngf -S3I8%!y›ˆÄ'x - V4‘ŠHi&ËŠ§Òt” h‘üMa±ûÉ%•LMX‹lò!‹`9×Âß.ø\¦f3…©Ôd>™É:ï>6>, g€E°`ˆ°•XÜ}MàÂòùˆ«òW$‚E-îípéîvžÕÓÛÛ;0ÀEî¡@8 ¬øx<‘€V*Ng3¼E8Yœb),ίh+E°Je¥ÐÇ[„³€¹xßïþƒªÒïÔ[ÕõViú?ȾJ’5énѺ, ªBŠ‰pXKQ¬#âDžU*«ÌJ>LÂ%¡g/I¹!LïìK*EG{sb°Ì­YôNVQÔdaPv,ùØ)¡ÒQü‰{ã¹¥ª¬(›tr™£xºIÁbºI^e™j’EìÁ.¹:ƒ]¦ `¸¯'»lš¢„*)‰)”’²q|Ñ”Îï¸á2 •Ô§ È£±æ‰¶ y;O3rUËš”0~0Zĉ&‚±Pd™”ï*±(QB”û€²£§ãh–ªØÂ~uç‡âý>¦jçBu+K+zCHÚ žÂ"†« -{ -µÄÃ'±Lñ’ 7´“Çó/ ¹âa-B¨ ž¼‚V….ʯlF´€bÙÕùM[¶mÞº}lîÙ³ïÀþÁ:rtiuýø©Óg Ex Z„ rø˜o~&,¥EøÔùZ„Ÿ}î<æ£:O9áò‰“P‘ûÂÒÚ -¹;/½° "¬…å•ËW®~ýõ×Þ_2ÞñŽw¼ãïxÇ;Þù§pþï¿ùÅ¿üŸ~òÿüâÉL&“ÏSúÄ_Iªl.ë„ÙŠ]Õ<Ø%fw«®Ðc²\Š%`W*“-•÷#-Âγ> ¹<ð«üÔŒ@XŒ_Í•T»¦ì rŠE"TõVʳj êØå^¯Xû€®ê¥=R¹RX8UUÖÝ"wį¨]T•& àZä¥jÓ\53‚Jžª„íî’Y‘¤‹W¹aVZ•‘‰‹³Hd Îñ”—âÂÒD5ÀtÓEä †·óÄÇ`‰©Újóч™(òÄv•Ú Ž½ß‚bÉ ¾9 £!¡OÇQ+SÉPa¹á®æ•Ägv_,dÍ2ä žájíÕq@‰ŸQ«©ª³€JtŠ„‘ð»˜5 D—&K€)¸QÒ”¦¡jYÇEE•˜‰.¡ŽÕUÂ7%Ø”å‚]‘Éxcé.•ÌV±¡,¦¨ÚcØH„…ÈBO8%> 8ñ¤–¯Ò„’Ý ¢ª -ý‘…ÃJ2+9D(]XÜgEéÜcÚ‘ïâÝ@W‹=Œ¿>[¤mAÑ4%Â’BÚ¤‘*çMM˦Q+‚­XgС,¹B˜«B"X›¶lÝ -[„»a‹ðÀ[‡Þ~÷ÈÑ¥•µc'NžþðÜÅËW®Ý¸yûî=h>~üäÉ“Ï>å&wT!T¶>||çî}牜ùÐy"r_]Z]_Y?¾ºvœD°V.­¾dñ؉SK««^…Ð;ÞñŽw¼ãïxÇ;ÿÎO~ú'?þÃ?úåo^Ke²’/q¦”&vášT”V¤@w‡¬8Gšãþ+VRÓtܼ+¡=¡OÇ,HÍ5ÑÄ”LÉДÄb4¦¤ ”Ë1îà3\ÌJp›®"ºŒU(ŽUv¡$»°dIS³RšË‘¥¨±þS1Ú( G¤4]Ð$«^Ð]úÓLC%KfIEpš;ÜUp¡À•éÊz±°* J²„?_®G2ZE©QYñ´›eS/<#hÉ/M”¹‚#jƒ¶¤Olõ>ÆQ+Ý°¤ÃÊ@’+ÓâBä¶2’„o&UW™´KˆrY°$¨ºÙɃIcʉä‘F‘ eS¿²Eû…¬˜‹¼ ®øæ y:DhUD: ‚UlˆÐªXVU*° <8o³P–ÐaUª›6SÖö»vìÚ³wßß~û÷,,­­Ÿ8ýÁÙ ._½vãiÁúäÓO©È*„\äþTÝ"üä‰óÐ[·ïž¿-B*ÂZX^]&",Ò"\; -¹¬•£KË7nÞvþ)?uúïïïxÇ;ÞñŽw¼ãï<¯çĉÎõ¿úÉOþø_þ«Ÿþ韎øƒ¹|û¬(°R¼X‚YÕÄ®°ÉJ¹Áw é)¹Jó±B±H˜Î朋ó¿lûZZY?óáù•µc©Ìd|"‰ƒ=4 EbÁ±H(ÑVŒ¤°ˆ‹Š°¢<‹EX’Y‘^a–¨Ý³ãiÄ‚-Bèý&+•IfsI:DX(—;`M¡ÁVµE˜~U$¬ ‰`MÐVD°Èa{[“¯¥¡¥¹¡¥©±¹¹©"X-m­>°¸Ã -akgG+T!‚ÕÞÙÙÕÛÂþ¾þÁÁÁááá@  …Aä‹OŒ' ¿JgH×2Ÿ#[„…éÙÂÔLqvvŠ"©Ri–mjîz íÊü»–p©T®­Êe$W/×1_iŠðª$½Uº[rÅ2TM[•Ê¸0hÔ˜ÕÝÄIÍG%ü]Í@t ˜•Ê»tôú†(Š?*°ý>šòb_ê"s%ÕUŠ×ÑÅÓCÌ…^æw2â„ãRg¡*_ÍåQ†J“45û„,RXåDóZ.ezÙ;¶î‡Q¡NºÒP¢fˆ‘êÚÒÕWÓ•e=‘wró¹òSkRÅïÔ l/W?°!ÙñGÕùñ S 3Ý®ªº ™š»,­&‘¥ÕÌ*?¾©ü*ð ³ÓŸÂª­òfŸ»¢è é­psPÃVv¯øÓ-bqgÍDž†²5”°ÒüŠºÜéÀŸÈVé»ÎX–)»lC¤’>+’Ñ"üÊda‘*ËvG°˜íÊRY–ÍìîTrå|$~›U+HŠÅîÔ……mí¦]_Ú$sEãXB„åܨ@‹pÛ–m;¶íܵs÷Þ}ûAäþî{Gh‹ðìÙó—®\½výÆí;÷îó-BÒ"$÷š-BÔ"üèú[gÏ]X?~´íK+¼Exl…l’!T oݸîük~çÞ=ïïxÇ;ÞñŽw¼ãï<Ççþ“?ùÁøÒ·^ù›_üm’€™¡BuÂ:+UÛže!«IᳪYdwá/bzÏ¥³à¼Ú{à­¥åµ3gÏ߸ygÏÞÉt66ž¤åÁÀèX`®ƒ„e…cñÑ8EX`t‡a’êÜ!yE¯Áëð*5‘&ýÁt–ଌˆ`‘v!a¥r,‚%¶sS€°&§ê¬ -„)Ngò°`¥3щD( ‡†‡»ûû;ººZÛèas£¯…±šZZš[Û …«XÜÛÛÚÛ[I -««§»«·"XÜ‚5†FÇ‘ÈX4ŸHL$“Ét:•Î¦³¹\¾ ¶!‚EEîÓ I•ëÃ(T!ä:÷’,j˜Yé -ÔÒjUí²åWÂI*Åß^›¼Âû}x"¨ÊŠEÑ蔎¿,Õûß`Š* ”êJj©æiŠ2+¾¸‡ÒVOÖT“|Ü»ŽdV¢¨+»Z½ AÍ ¢Û¸âÇN¦Ò§“Q(µ‹§ Ï•.É&íîÂôŽVðÜBª’âNÇÉ+Ȫ7X£ruýÜu<%qT!æcÉ{tS‘·Ët“ò°2Sš -…žõ¦5[~–° c\¦I6%”æêskCYìó[ø#¹žåâNeRÔt5¾…{…r.PjÕ–L@‰|”xNŸˆrŠ¸§L¬ÒÔ„OFñº3«SZÅÒV”›‰@²H•|®ÅTíÈënp~Å í¶è$¢W`þ+)`'q,ƒ/ -A–ɈSlUдy:‹<ÌâÂv»bw18(\îŒPU«ÜôߊU%«:/ˆVu~ó¦­€°¶ïÜEZ„ßzë÷.®¬£[„—¯\»yóöÝ»÷?þø´?e÷/èá— -Âúì³/>y"[„§NŸ]]?¾¸¼æ\–V×VÖ­®Áá -D°œw9~âýý«¯¾òþªñŽw¼ãïxÇ;ÞñÎs|^yõÛ/¾üòþàüÁ ¥OT¥žU™SJO9¬H¥º°\BÌÄÒ™lqzfçî½ K+§Ïž»zýæµë7íêæD*'F£qxÌõ‡aÇ¢Îu( GÇññ1îŠVæÓÎ…IÝ¡Ö—ç÷‰4HÝY‹OAV.‘&"wØ",f -Å,`gøà ¹ž•ðŠZ° £Ê÷©ôd!™Í§R‘qÁ -öñVk{{ƒÏ×ÐÜØÐÜÔØÒÒÐ « ¶)ÂjrE+„ÎuGw7aõõ ûþP8<‹F£ñññD2A"X©l.“$üjº0=]˜š.ÎÌL±áÉ_•%hbX‰Å±Ä¡{ˆ°žÒÊÝü¶v<#(”S´jWu²á?ŸS €(¿¤!ïº 5ñû9¹ÈŸ[ÖyÑOh¦„´JGÙ*Œž ¼XVÜV:Í©@Y”:t©XW8•XâŸGG*uÉÛQy£*•Jš²|WríôÕÞÀæsݨ#w!&ÇR—ñ\R)÷+h®!?ÝtÁ®®ø¹Ûy†Hñ¨•út–V':õ d¤íÕTêꄾç•Ž¡VÍ{™5×R!UGc¥I©'f7IxÅíëH™nº}ìj+ÐÔ2ë…ÄL7IÓÙ+ 6Åw‰ÏŠ¡-òHj¸Bêu»¢(ab礋B0'ɯxåPÐ-J¨&ÆÉŠf1ÒETºeYqÍ+„6Š]1%H'W2ÁerI»‰|V¿Ó ò+±WˆLx—Å_Ù¦„<¦eÏob[„; ‚µ‡·..¯;qú̇.\-‡-ÂÏ>ûŒL~ùôéÓ¯ž²ÖSh~ñ%k~ôðÖí;h‹pe]ˆ°Vׯ¬­/®®9_&ëÂ¥ËοæÎ{yÒxÇ;ÞñŽw¼ãïx繪ězn•n*“‚(@¥†Ì,‰#—›TbBF½"žQû­þˆ®ª‘­:„ªî=†;šUÓ -,×8Û뤉L«#}2•(TÝ0kä)Á'«ü¬Ÿ©”õjyTmºI«Éni8-†«µÆ*=˜E˜”)+~fÍÇ@),úÈ‹Î=ê:»Ÿ“([¼ýµ¬„ñ—%#UKO‰¡£Až¤²”§`ŠeXjÅOà)£æ+iÄÂÖ,&§ªh¦ù]ÔxU)ÜQàŠ¿¦)F nâ5C:ÈЖEäWR1ŠÅà•$Z\ÛîÜS%½B›¦­\ƒƒvµj2`7Lâ¿¢C„vuDîÛ¶oÛ¾sÇÎ=»÷ì?pðС·ß}ÿÈÂÊ걓¤ExåÊu¾EøLîOXë bÁb),Ô"|BZ„wï=¸|õúgέ®‡ÖÒ*i§‹¶/,‰ðÕ—_~éýUãïxÇ;ÞñŽw¼ãçïüÍ/~á\ÿë?û³—_yåŸýÞïý_ÿù¿Ô©þåÜ=Aù˜œ Oåk¿Ìò'´•§ð*| ™Ù»ÿ-çðÏ_ºuûîõ·öì?X6í©Ùòx2=Bc#ÁÐP 8ÃP$ Æ¢ÁHŒ",¾E˜OP£;Õa ŠE‹„BçÎùUF€¬d±2t‹Öd1‹X°@ä>ÃDî³a‰ᬰ`ÍÒ!ÂD°Ò±Dr"X£$‚ÕÑÝíëèhjó5‘{cK3`µúÚÚØ…ˆ°œK{'XÜ;º»aõöôö÷÷ ŽŒŒ‚Ú"ŒÅ¢ãJ‹br…ÉÂT*„sÅÙ¹)HU±V`¹&ÿÊ<‚‹„¥Y–PhÐeVG†vIÆx³O—fuž¹E<÷ž OL10åºÌáÆŸz› -ØçTôTÒä ‹Q §–®— •¡ ü!$Uª!TêSô¿º!¼è¥zÏ*»ˆ– ì5n󺸩\âÏâo¦ëp ©vÉ TI6}r…µtWʨBax¢!ÍzA«n! –ݤ?XYÓÃÛ‚Øû„TN¦òx7*+Jsw -ÿ¼2ÎdºÃWòS™&~G­îçAmAžª²ÜVySä©P¤J«dPJçï¨K2¦>ØàPË”:)þ:Ò¯._W]±ÙASv M³ž°ÝÆüŠc1[ä²(wҤ‰Ö×’ù+éf·l9,ȳR|—PZÜi4Ë@€Km‘Ôb´ŠÝÀw¢ÙAªg§ ø•-±•Å WLÞnÓŽaµÊ.ä[â1•ùMó rß¾Dî{öì;pð­Cï¼÷þÑ…åõc'a‹ð"´oß¾KZ„>“ûçŸ}þ±`¹·;?ýìs±ExáÒå§>X^;&Z„+àr__\ƒ!a8yÚùýý£KÞß6ÞñŽw¼ãïxÇ;ÞyŽÏ·^}õÅ—_þöw¿‡ ³Ê§qòªFޞŠ‹<˜»³ê„¯²<ÓEG ËÊB¾kóÖíïY8uúìÕë7ïÞÿè؉S†]-iÖÔly"•Gbþàè°?8èÐÖ0iú‰ v á£.wί’‘‰DDX‚_¥D—0žJ¹I^AøJF°œŸ"_Lç§È!EX³9R!¤™«<¦X3sd©p&¬|2“s^“Y°‚2‚åk‘{C3áWä,ªÀj£÷Ž6 -¯º:;»»Û»ºº{{Kßà ¹ƒ¡ÑÑÑH4OÐaŠˆÜ'3ùüd¡HDXP!,Î@‹ËÏ@R:saÍ•ébžv!`—­À‡?<^¥©vöʈ8I »hó•”J Qrç©ôrMgP^t]´ÿ$¼â‰1a麬 -QQNÁãe@ÖþÓëTöÊ|áq@¾È •z+ö¥¢œB",ž¤*!jT’Q+~10ÔoÄwu—,½& -¥›5ѦÚÎݳŠ²¾W§Ö§ &ĸ.y¢êîèÕ{‘gd¢e"âôºŠ*åé"”e’†ø’ìÓX*e¹üêˆDYÊÀ É°äǼK1¢£† jóa™•Ââ¤ÕJyk…nYŠ_]¤°È+-î2å¦Rè‰&GI¢Ù‡:ƒ¬HQ˜Íˆ.:÷X¶ŒÑç"Ë:þc:w›(³*¢!ȇE‹U m‹Î bõ:÷·[®Š`•% ˜!­V6hÑØ•nŠò mòt–èü[ŽU) ³¤ÞŠùØ-›«Øø Û4i"‹6Κg,fzŸ¯lÚ2¿eÛV"rßI[„‡Þy÷ý#Ë+kοngΞ¿téÊ·îܹS„ˆë³Ï¹ÈýéÓ/E -ë©sa-ÂÇŸÜ[„çÎ]p^di…´WÖa­[¢",²Exdqéæ­;Î?è×¼¡w¼ãïxÇ;ÞñŽwžÇóú† ÎõŸÿÅ_¼øòËßxá…ÿøþ“…"6Vnšt‰Ü•hVª`>¯b.ñ­|Š`+hÂæ vàÐ;«ëÇÏ_¼rçîý«×nîÚ»jv®¤[S3¥‰d&<üjh808òbÃþðXVæ©‹X°Æa%¡KHX°lŽ0–d]Âq®À¢á«ñçW©¬sÈä’€° -içR„%ùXÜç„KŠÜåa1•Ë'Ò`Á¢¬Á?‹`µ··´µ5@ *„›šZš›[}¾ö6ziëhoïèh#—Ž®.ç)==Ô‚-‘‘!¿? -…FÇÆb±ØøÄx2™H¥’éL*Ç#Xũ±`ÍÌÎÌ!„ŲUºY•Ê5.,çz®ŒbZXlå\“Ý@ÝUýse¨¤JÝ4ÜQ+Ž•ÊÒ¯ÎÚsš²ß§ºÖu¬¢0MÑX•4™Õ•8–Iñ÷Å᫒ꪒ&+‚Ô°&½ÄôV&2V™R¥Îwújb]hžOç")¶ ‡Eg_J↎BVuÊzê`<ª,Gú —“ -+°Ð¬žâqz–#½¶4çjØ)VsÃv*×ïî¡ÃSV¹.¿ÂÉTrMJùNý ìcd„&ü°GÂ#rž¨ã¸"KêF–ûgTû€˜PÁƒù§Bõ=õAB*v%Q6D®*S“fuSà#±ˆ"U6#KÒXñô”|º¡‹À•%Ú‚par~%*ì•M…AÙ4:%’TÔÙÎ/ø•Y©ˆÎ n ú$»"‹EY¸ohð B‘æÂ-)igî,º-(ÜïŒS‘† —_UDàŠ ÒÅÓYvuÓüf¹„µ{Ͼýû¼ýö»ï>²ÈZ„ç.^¹J[„>úøÑ£GOž<‘"÷/¿üê©k‹ðsÙ"tžøÁÙskÇN,,­]Z]\!"¬õã‹«ë‹ËkÐ"\\^^]£ÿ²úé§ÞŸ7ÞñŽw¼ãïxÇ;Þy^Ï«ßùÎKßzå•o'4:ÆTNY̲2`^\\-Bê{¯ _‘/Y  ÌZ““©L.ͱðÕ^»qëÞý?ËÿÿÊæ‹sš5=WžHfB£‘‘@h`hdpØ?0ìô†H‹Dî£cÎ%8"÷pŒºÜÁ‚EEXb”P …È]±`‘æ U»“!B¯ˆÈ=MEîù)%‚E(#W<‚5IåW$‚5Á#XÃÁP/`uuùÚۉȽ¡¹©¡¥‰D°ZZZiþª­­¬¿ê~Õ×ݽ½=}}½ýÃÃC¤E C‹DîÁ‚a’F°r4‚5•'kj–o Îq0U–I*Ž¤t°˜ï½\–6uÖB7„G]¤¤¼2Jî Ašª…]Fés¨ H@ k¹Û‚|(P±]¡¢ŸdbÍiu€R©Þí≮Ÿ©Ôý ›ØÉûrÜ¡)}@)ŪÎP ¡ZÙÅI:Õiüi<ñÒÕë¬EøñCð`Á¡hŠ¡XŸÖ'Ð"|tëöÝ‹—®œ<}´Wb‹píØòÚ±%²ExdaDXëÇÐsùYï¯ïxÇ;ÞñŽw¼ãï<çïùKçú¯ÿãÿþâK/½ðÒËÿîßÿ‡âôŒ;=•Ã1*>P˜ËË‚!½ŸÞ£– eŽ+ ƒƒ©L6•Î§g÷ì?°´¼vîÂ¥Ûwïݼ}×ù3¿0=›Hg§fË¿Jeá±Á‘`ÿÐpÿàpÿÐHÿ°Ÿæ¯FBc`ÁV4‰9àWôÂ[!„V’ôÓì‹Iݩȯf'Ò¹d&Ë"X0D"wƯ¦˜Å}ó«YƯ&‹3tˆF°¨+ðû{úÚ»»[;:È¡¯Ñ×LøUSS«Ï¹§¥µäWÔ„DäC„°EH"X´E8<"wˆ`E£Ññññ‰äD -Z„Ét†úðs…B¾8]˜™)ÎÎNÏ1„%ÜV%w\Êà\« ;™b©ÐRY+Q‰)¦ÒÕ˜«ïYXY| PôûjžËÀ—a᪠ Wè1 T¢ýÇI°•¨VD i¬•¢M@eUä¡-,X\ÛŽ…W(LE‰“®«Šn)ðJ4y¼ªj"iÓ¼WªèB}$£ULó.Y¶”_ÙÕy¾š'P«2¿i˦-Û¶l‡á®=ûö8xðÐ;ï¾wdieíø‰ÓÐ"¼|¦vïÞÿZ„Ÿð-Â/… !¬§Ÿñ姟~NZ„_¿qûÃóŸ„áÂòêÂÊÚ2iB‘îY9¼°|tiåÂ…Kοé|ø¡÷çw¼ãïxÇ;ÞñŽwž×óÏ¿÷½—¾õ­o}ûÛÁP˜F°Ò9 ŒE¨+‡"ñ±8ˆÜ#Ir¡)¬$­Æ¥‹Ý¦á+¤ÃÊ$Ò9šÂJeó©É¹¦9¿R繋 ,0½S„•Ìr V"XÎÇîêëkëêjikklkmð5C«¹©Ñçkjõµ´µÒüUkG vv-BpaµwuuvwC‹p`€¶ý¡P0< -"÷h V–óûLÁ’#´óÅ©âÔ XÜI Ó³‹V 1Gû€rL°CÓÅRËzŠݨ۪³¨–ÊE‡]JÆ´jà¸<ˆ zåšð’|5Ó-°’ò(öH£Þ»<;|¥–UD&Gñ” ˜éúé-—Ë]ñ> ¼ƒx—^«jçÖtN`lUWå&EjwÏT—a!¿–¥n&2L$ÍêôL‰Ðme Ðõ³È0•-vý4Õ[%ÔUrø©«äŸLd±·Zu‚˜lñ1Ä¡ŽIÉ"!MRÑŸ…߃¢V–h šÈdE¨”ÀVWlñà–$QÔÜnÛHiE«­ÒÃz‚¶2/hð{L$ÅâVvJ±ª†7+l‘ж¿ª(¯É›ƒA·×2IÂÊæÑ,Á(¿’·«ÕJuSuóÖ-Û¶o•ûžÝ{÷ï?xèÐ;ï9º´²~üäiØ"¼|åúÍ[wîÝ{ðñÇ=~ò„D°Ø!GXÜå®´¯^»þÁ™W×°Z"kmD°ÖWÖèáÂÒÊ×_íü›þøñ'Þ6ÞñŽw¼ãïxÇ;ÞyÎΛ7:׿þÍo¾ùâ‹/¿òÊÿú³ŸMÏÍÑ>`‹Ü)³Êç1§rVš0»ÊæÀ×”Î$À;žÛ¶s÷ûG–NŸùðÆÍ;wîÞïÈÂdq:ˇƢÙÉb¾0'ü¡Ñaß ð«^àWÁ;CXÐ"ƒVð«0µ¸ã"a< ,N±€VI‹{œé°È…‰Ü ¿Ê~5Y$),Á*Îp„…RX„bÑiÂÉ©Ùlµ™L<™ CklÐèèÀ¬––†–ÆÍMÎ ˆ`YÄ‚å\‘þ vww÷õö @kpxxhxx$ŽŽ†#Ñèx<611AEî™,Ù"ÌOBkª05=537-ùU‰)°xÞ‰â#I±JÚl‰UK©b¤‹‡£ Z”"mÅ’Tº \ g»b\×Õv!âNš\ ,Ðø£J¢*N±$(š’¿OQ –!ôì8e*ß’)ñ-Tèã¿’b©2]¶v@.NpÕY ”ûzz¡º¦æ²êŽÜ•Ýõ@³v¯ŒÃKªËÝÕ¹Ó\›w8ÂdZ˜•ë¹°\xJtîÊ5 -¬r­5Ý4kóQŠùÜDOYîCüA'çN7×2T–Å1ŽÛ(%%ê®´0asc.Y4¥ÿœ·ù(ÕA2+©1ƒ€zMÀ Oø¼ÐW¦O盀¢ñ'pü0,¾eŠ”˜D4Ltåc žÈ2øø¥˲ tˆ]ñ©è*%ãy*†ª4S> `‰HÑØ•ÁƒUš…ŒU¬c(æ älçEB(ñ »¡D­Œ¢›ƒ¹«•µd‘§³ì -SôËJeÞùRT mÔ+¤ÌŠJ±X«Z­nÞ²yëöÍ[wlݾc×®={öí?&÷à ‹+ëÇO-ÂËb‹ðã‡?a,¥EÈEX´Eøù'Ÿ|úÑÇnß¹-ÂS¬¬[\Z=º´²´º",‚°ˆëÈ"ã½?l¼ãïxÇ;ÞñŽw¼ó|Ÿï}ÿû/¾üò+ßùÎߟËÄ° -\)ÎvzΡž º- ƒ™ŒsL¥“©ÔD2•+wíÙ·°´ræà ·oß»zí涻Æïesþ`(™Îer…H|b$îîíèéìèé$¬á@HD°‚‘¨s Gˆ ‹R¬¥X ârr™-B€Wq ²DþŠl‹;Õa1„E"XnÁš),B® -³a9÷LÍL’!BçYÉlÎy5bÁŠC}ƒÃÝ}ýÁ"C„Ä‚ÕØÐÒÜØÚB–¯µVaˆ´;:;É"aGgWWwOOO_oï@ÿàÐàðÈp ‡Âccc±8D°’¬E[„Tä^(æÉáÔ,EX4%ôì¤Ig°3\±“½—¤Å]›ã ù¬äEº§¨À - ÒËd¼Ïy5š×*«*θȷø2`­PÝF…AñH±¨„²dYOÎ2'•aÔ¶ö³B˜‹Š­ MWþÜÏ5pUPûÝý>ý«õòWjqÏ*ÿŽÍ>.§RØ”© -ÃÍxTÕïð´sá¹ÄA§Ø(åBaš„T5É( ÊlÙï3M×mÏí8e*5=¼‘§ -¬Ä ŠJ]Ù¨ùÀ®öŸiÕÃS®GÚŠJuªë®—ÓBJü*p*Ä©,ÁL—j»]ák€–€Hèaâ½PÎʲˆÞbv†ž¸^·DŠ…£ Ü -4môl¬ºâ3‚Á²¸ÌŠ…²dIP¼²Y¶-‡yý·ü8t²ÑËRÁP:÷b!ó•Í5ºÓ/™; î¬âDî©ÚjUP,Zla°BðÛ4)àªòü‡W6µ»W«ó[¶nÞ²}ëöíÛwíÞµgïþo|ë÷]\^=qòôÙ¡Exãæ­;wî?x-B‰°¾¬×"üü ç»?yðàã7oŸ;¶X­.,­’-Âã4‚µ°¸zxayqeõÌYè^¼|ÅûÃÆ;ÞñŽw¼ãïxÇ;ÏÙiljr®û^x饗_yå/!‚U³ƒu¬VRÏ.‹„‚t¥³²0˜Je’Àˆ^Å'³%}ϾK+kΟð·ïÜ?óáçx#ñqç20<O$ÓÙðXlÈìò3ÐÓÛßÝ×ß30Ø?420â ¿"kG°Fcã4…EƒX"rw.LäÎ+„±¤ˆ`‰EÂѹ³QÂD†KG°¦ÈÔ OalÅ-îÓ¬E˜-N§éa† FGýÞΞžÖŽö¨¶¼jnnhjl„!ÂVʯ@á×D„ÕÑÑ ¬.2DØC-XÃÃC~ÿH0H#X‘X¶d‹Ðù-çrY°` „_Ñá4`±ª GÍ–5™}üŠ2.fqG>v]Ô¥¹½¬Îü•uŽ°‹‚#u7kØbKR&Ü:”Õ?¬Ð° ŒK•\V+”¤Î âM@T-ÄÕ?—óÜÕïÓ:«øÎ:¶s³^àÊàÛsa¹Ó3‚XµK|6ÂAjÒIúÒ-ô²–„TR^×:¥èžpPŠ¿ˆ¥ø ”X~ºÈw‰> ¥z¨¬gôé¢1…ÇI«µ<ñÇ"FJ@Ë~6¡rWöðýe•2¡J õGY¨ 'æÿLœ°Rý”¡sŽ‡ŠØ4e1õ:z¢ø–4?•b ©0Üì“=Aøê8©èg0%#EBŽ›ä·,¾(8w^‰ù?“- ê¶@X6ãKô¥¸™Ê@¨Š¿B…‚/¾QH•VGO´NhKHeñWfY©Š@[’nÙU<;(ìÿAªªèÚùHÍ"7*ÕM•jÕ¶ °"—JU>5 «àuŸß¼uÓ–m[wìܱ øÕþƒo½ýÎû‡.®¬‘-Âó—®\½~ëöºEøøÒ"ü "XõDX_~-ÂÏ>||µÏ9¯C¶WœW„µ¶N–sÏûGÛÎË8ÿ¬?þÄkzÇ;ÞñŽw¼ãïxçù<ßûÁ^|ùåW¿ûÝî¾¾\¡(û€5ãƒØîžæíÂ4µ]e³©,…W™d:Í’W„_Eãã¦=¿ïà¡åµc.]¹uûîÒÊšó -c±xh,ÒÓ7Æ©Ðhd`äç]½}ݽýÎŹÝ30Ø,*r9Ò"¤,–¿³-BçFd"§ù«dŒV\„•tÏ - Í_‰az’ f±È ,™¿"+ç\Š3YÁ ÖÄD8 †úGFºHËG"X -0DØØÜÜècw`Á¡sioïê¤"¬ÎîîΞîn:D8008<<ì÷ƒÈ}ll, -¬øD‚´ÓÎ/œü‡(ä -S…âLqšˆ°hKâ)†¤8€"8¨,æiLK+ÉIA ¯¸ÀŠÁ+êW²t.i§ ù¯¸€½ì¶¬3×z s$£D˜ªVfUÖ\ Š ÝÅ‘·¹Ë£^Ò ·ew ñ´Öañ]ÂU¡à–‚žä—ï®x’¤#”»ågª£†%¿+Çþlñ0ÙÑcFšq³ÆÖnZî.¡Âµ0àR[xJÙ°¦„h¨¶v$3×ëä”p.K¨ÅåNz¤­¹½å¢7–®äŽjñ—¥ -žÚÒ‰bˆÉF«‚ü õó R!ÿ´6úü¶ø­ÊŒKU1 ¥aÅ!òºËÆ#KüwdÉ@Y34me7PXÙÙKYø Κq¢PK†¯x¤ÊJvº'h3¨%ʃ„\É„£LèÅdI‹]q#Ï_q%Ø'Nü5YOЮVEÎJ½„ÀJÌb~EF“T ˲«¦¸"÷زN(øgVÕÊüfbÄš§[„r…°Ê\î`ÁÚ´y´·oÛ±sçî½{÷|‹ˆÜWŽë˯^¿~ói>|øø“Od‹ð 7¿úê Ú"|òéGY‹ðôg—W ÂZ\Y~ul™ ¬…åÕËËÀÉÖŽ{ÒxÇ;ÞñŽw¼ãïxç9>#~ÿ7^xá•W¿ýçñ3¥ãTùJúƒ£1@X$…•ˆÒ! €WlŽ0-B‘Å¢É+ʯ(ËJf&S¹|š·I .,5#/<Ѭlq:E#XéŒóâ£ñ¸ttÈ D°:šÚÚ[}4…ÕÂí‚ ¬vN±aõôt’VïÀÀÀÐÐÐÈÈH  ‡Ccc‘x<:Á#XéL*C"XùÂ$ˆÜg‹3sÅ9ˆ`±n`I£&+†° Å©.[„$‚…ÝìbRP‰]qVëÙ]dLwc(×mÊ‹JOI´eÊÒŸhÊWPüê%·V]¢§’ŽGñœ+juÌêÏ`Sô:ÖLBKõLUÏÐîŽ6!om>ËUÆè Û®x¤ªŒãX5|×åÊv©èI–ø,„ËP¾KXª„Y½vþO(c§,°›a¹ÔU8 ¥¢$—ì•e‹—î&Tnù93hábÃPè}-W›Ï ÍÔî¦F –ÈeY@ihÈO¯qXé<Í%eSH¢.‘”…ß‚¼‹ej–ø͘ҠŽR[t›®ˆ}[à,)¶2YËáá)BQ%EXœPQDÆ"U¢KhW -#Êv©×5¦À’Y,¼K(2Z¦]A=DĸتREš¬ -ýØ´ñÇ—´]I[»pdá-BÞ¬Re»SÚÚ+&kR'<¹~Se~ÍbÁ·x¯póÖmÎeëö;v‚ÈýÀCo½ýÎ{‡,.¯Q“;iÞ¾sçÞƒ“-ÂÏ–àW4‚Ŷ¡Ex“´Ÿ8E´íË Ë«‹«ëËÄ…E"X«ï/,AÒëøIú/ûÇzÞxÇ;ÞñŽw¼ãïxçy:¯oØà\ÿþ~ôÂK/ýóïÿ »·/_œá«ÜdAÑ^MN:÷Pl•…uB22˜Í¦IìŠ -¯Hµ-• ðj<™$«y){~óÁCï­®Ÿtþt¿xéÊæ­;†üp$68âoëììöGÛ½ƒ=}Ý=Ý=ÎuGO/‹` ŽFüƒþÀaA„ F¢¡h| Xã$ˆ•€Ö8XÜk‹„±„Ø"LÇ‘Ô7 -3,‚•#"÷D°(¿ÊQ‹û´ÀVÌâNA`‘!ÂɉT*2‘EbþP¸†Ûi« Dî”_5ùZšZ}¾ö6J±Ú::: |Å"XLäÎ#XaÑ"œ C„@ 3™4ü×)ä -ÅÉâTazFµ`±…AÁšDÒ‰­ r±`II;Ve̲„œJ¢'½ŒcWt×2.Ãà -téw…²PÅiÛË8+%,ëÚä%A©ÄÂ`MDŠñ.³ŒÚ‚(eh¿“>i(U¥ŽýYJÍÐízRªˆÒ å2M‰ZŸ2ê'"Lnm8~wîWÍäRŽ×ê›Yº­¤žÐm]I™Â(Dˆá²gTóʆ%âe×6Ÿˆ68¥¾×3ú}: -k)&s¾Ž§D”ÚLLÁ3$«‰ÙR%#LR±®›ØŽÎ‘eËB¸ K’7YñS“]Y²ÄgÈ8ýÌŽpÎJ˜¦tŦ%8›òŽ.i|UPhYBíN¿äa¼Hº¶$û"­@î§b‰,‚ÚĪ i V•¼%DU"pEX˜V¡ÀS`IU»sgU>ž%¯ª\¢UQˆ6¯ÚÊæ ugQÙ;O^ÁËR…{…Æ´ª›æ·lÛ¼mÛ¶»vîÞ»glB‹ðÈâʪlŠ-Bjrÿì3±EÈ"XO™Ëý)k>z|ïþƒkWo|pöÜÊúqV‹«‹«|‹pM¶–W>8sÖûÛÆ;ÞñŽw¼ãïxÇ;Ïëiok§C„öoþÍôìœ_áæ ¸¤Xòj’%¯ÒÙT*“‚Î`*Á;ƒñD"žHFap|"™´ç7ïë핵ãç/^>}æœó¿W½ƒðhßÀ`sk[gwoÿÐHOÿ`W/À«ö®nréêèîîêëïê•"¬Á@pˆ´‡©‹ ã¡h,LEX d‘9‰u¹S~Å\XTçF÷4Éb‘Fa²X´E˜t~"çG›,d -S*r'wÚ"Ìã!BçÂz…39°`A‹Ðy…X2é|†ÀØØp H-Xí]¾ö6È_ùÀßÞäóµ´¶¶´ÁÅ×Öæ\¤««,X]]¿r.}}}ƒƒýƒƒƒ$‚‡G#ccñX°’IÞ"ÌW‘; gf§ææfçJÒ‚Å–q ¶ó¸Kãù+½$-ë(yE ‚HÒ²._JW½U®Gâ6P2[%•lð¹Ê}2š%óT2s%\RP•QW±îö¨ëÌß®ý΋d”ºh¡@dYwKÔ-eƒ¯¾fÊRù•\!¬I:™åZs”QsÃ4ë©ËÝ:)Õ¥¬òáNÂ_»\/Î?ÍvÇRQ•‰ŠoøعÔä”Pðɲ] -ô:Oá@I '$­â„GoQõ“ ‰Î QË è=‚lü ¤´Â3‚g |$=Ꚍ]¡ÈG(¬Å‚X‘•’Ê”?µ¡Ôñgfù(±{ÈW -ý뺄Z–aÉÇ+‚VÅ0k W6ECx(дyDÊb!+úã˜LrUaMC¶X¡­CÆ,¡·¢dŒg«8§r>!—±+Jv‹ïZ|sÐ%¹²lª±ªŠJ ˜´©ÞŠ?‹Ö °"½Â -»¦Œ Ú…•jµº "XÛvìصg×î½ûöN¯i‹0I.@±h‘ŒX)šÅJSœ5AóWéLœ¶aåÓP!,f -Ä‚5= —â,ë Î0‹{~ 8²ŠÓˆ`aˆ"XÉp4æ‡FFzú¡I,X¤Bèkjô57òVkG»’+Ú"ì‚,–¹÷ô1‘;·`C£££‘µ`'ÂÔc.—!+_œ.Î@k†E°4R!Ô˜‰]Ð$¤RGѱ¡½v -P"#Y 4Q‘Ðt[Ó¹&«Ì }%A«0é2Lœ¶*É<•"]w7u7hҌڶàï*÷¹,ëšîz¤hçY¸Ö‡¿«)Å@KS†RUÝ –%'í” ‹IŠU[ ´ÝZrî€Rl=C9%ÛˆÒ—nº˜’ü„5Q+…²°“JIF¹"aH%xä— ” B&(»&LeÓG%Yôé6ú¨d§~rL™\?,_S]ú³y®‰YͺÅß‹ÿ°”©ñ-K0êGPˆÿ  L¤°¨r -I¨XFK˜©/«"lWrg‰Õ?!§èŒ=…«·X¹iÕm>È—-¡¢+>(BY‚q™–È;q6%«‚&ïÒ·0™>‹}*‘Â2äR!›4˜È½Â<í„,ì[B¨^eø‹e¥X¶Ê Š:¬l^d¨ÒW®@1pÞ@ú,*¹¢Sƒôu*óó6»]±çç¹ ‚X›·l Öö;vîÞ³ïÀþ‡z÷ýà Ë+ë'NÀá•+×nܸ}çî}h2“ûd‹ð©*r‡/¿ -ÂÇŸÜðñÍ[·Ï_¸tüäé¥ÕuÚ"\â",ÁZXrî\]?Fÿ}wÞÀû#Ç;ÞñŽw¼ãïxÇ;ÏÓùúë¯ÿöïþî¥o}ëåo½òù—ù©é\¾€œí´*™+–¼Ê䨪Ʈ¤ð*™$äj’Wñx$>>Æ'’füíK+kg>¼°¸´:‘Jwtw:»{šš›[Ú::Û»ºœkàWííÎ×-ím]í]ݽ½Ýýý¤E8Ò?<Ò?â ",°`F‚c‘+‚‹ˆ°XþjŒç¯èuŒ¤°Ð(!ˆ°â|‘ª±À…•Î&Ó¹ æSùbø¹“!Í_Ír…û ·`Q„•/:ÏJ¤3q°`;Ÿm(èìêíu~4_{[l6C -Ë,«¥Y°è¡ó€¶NÁ"«³»› ¬¾ÞþþþÁÁ¡‘‘a¿? -Â"-Bç ,hfÓYʯHkzvŠˆÜYKú¯L…,M¤°4ÁµDJª¤f«˜¥ªÆd¥ÌüI_º‰‚UîÕ¿a»©&©L™³rù©t£®¨ª®ÃJ«…WóîûGï¶uuŽø_57¿±±¡É×ÚÒÖîkmwn4¶Â¥©µÍ«³½› ¬¾þžþÁÞÁáþa?™# ‘-B"X€°Æ ‚ŠŽ³"a|Öx‚¤°’$|•Ž%’4‚ÅÔî¨Q8NZ„tZ„Dä[„…)"Âw¸Px•GüŠÌÎd‹$‚•ÉM¤ÒQÁ ƒ”¾§ £»»µ½½,XÄâ.¬2DØF‡i«Ýùy;;8¿‚V7ü쀰††H‹0…Ãø­ÆÆ'&’©„ó Igs"rÏ "t[!«2ÕFqCD³¿r->#@% ê¢ôÇœW˜bq»|;7€â¦„ •&¿e¸5C}W×O7´z¿gÄ¢0ªâ É°¤Ÿ\>LnùIK•Xß3°äMš¢TèJ:¹,ë -qâ/kó<¤þ6ܦ)×m…²U©_Ùî–smYHëd׺Ðë9áý¸ véˆ)éî‘>Kd™$ŒB-F8² S)ê’SU$+³*Š˜ÝFuB^3ÔE»Ðæ½BÌš$tbK‚\´n»˜• 79Ë2Ò%_Ä¢˜‹’ßý>›+š¶¢*bh—Ù*±-HVÅætK(³¶ªbç•b1Ç;Y$œ§Ïß¼•"¬»öìÙ»Ö¡wÞ;|tyyíÄ©Ξ»xLî°Eøу‡¤EøÙgÂúÖ—_© "XÎw?~òÑGoÞºsþâå'?Xâ[„KLä~Œn^X>º¸|âäiç_ö»÷îyÞxÇ;ÞñŽw¼ãïxç¹9­mmÎõOúÓ?ø£?úÆ /üðÇ°±±©8=C˜U%¯2ÐLe¨íŠÖÇ“I:5rÉ«H<>…#‘àèX,ë£3eÍù3þ­·ß[\Yß»ï sgskkߤ’666þvÆßnxã o46¼Ù豩ùÍƦ†æ–F_«¯½£µ£³­³»£‰` õôûýAƯÂc0G8ü -\î s‡‘ +2)¬h"I‚XÒèκ„)æÅ"RwÚ"„"a2KæòéÉb:_Ȧ²añK^åEpšŠ° ‚•ÊR¹üD:ã¼×h,î - V[G`Q©¶5ûZ|m,‚ýAŠ°º:;»^uö¿êîë…ÖððÐȈ?†G ŠÆ&@äN63© ‰` -“,‚5;MDî|aPŸÓŒÚž¶ó•½3âdH{É0ÜÖtÅÁN»„Ï(÷‰`•nºé5%eÔéêî½?­¦Í§ý\ ËTýQJ -ËBà˪ç}âËz&› t1(½ÎÕ˜‹75u„žjóQJŒÊBV%FBj²XJ¨ õæäÂz|Å.n˜º,»©ãznO‚`–]+ÒÔù<5à„“`äÚ²0w+¤r²\ÜIà!q’€ËÂ@«–Þ¹“ ir鯎´œÙŠŸ…ž…¸–©à¿ˆarIÂV(àd‹?I–ø ÁŠb¨Ø–Ÿèúq@¤KúTaüŠ=… òwahNH®,WðIñ_ÉBŸû[¦°¬Š»E¨\gñØ•-mí¶'%þâEBŠžæ¢c‚›ª*+„@ŸªœqU¥×ä©hµp÷eòŠ® VÙl°ÊLY6ÆYèv…„²@Ÿ57œøH‹pç®Ý{a‘-BÖ"üàìù —.Ó-Âû>~(·ëD°žò-Bh~rïþG×nÜaQ„5H\î¤EÈq¹Ç‚„_ÆÆ Â‹;Ÿ*Á‹„Ð%¤ ® Â"æ+fÄ‚QBF´Ò<‚•&-BÁšâù«i´BHSX´H"÷b:—OfrÎK9o‹ ƒ}ƒ$‚ÕÕÕÒÞÖØÚJXÂjnmmr‰°h -««³£S ,È_õ-B*rÃÁÑQç— "÷D°©4iNfòù\a*O†‹³³3$… ƒ”_Q6e*1$ê`Ÿ£s„¢fÈ“T%ÜûÓÕl•²Ⱦ¥=[–®²,£ü ýTMËϨk²Ò WÑÕú\Å=Yîà >QÄÞ*Ǫwá@£žD½î £XK1Ÿ«8Ë5l'HV3¹[xŒ8‰©»ú)#÷:²£«µAUW^’cy&v•[®\&ýêÒjÅüäµÉ+J~äg°Ü‚)þ,ùÙè+#zƒk}†ŠÂäŸÂ‘*†Ejä‰mö‰šž©"&S©ÑádŠTU Üv)Y¤' Q#®@w}€H2ãàË–½?Rã IjÕu.~G–õŠ [ò½økòסZ*¯lÛEœLÂÖDÚÊÄ)± ȦY‘P(¥ñWá¯PAÁ*J¨ègl¥4þF¶QaãƒfE>KI^±ĺª -ÃSÕª°fa™u¼Ó† ÄSLrÅ°•Ue « -LűœïB±¬MŒe‘á–m¤E¸s·óoßÞýz¶¡EøÁÙs.^¾víÆí;÷<øˆ,Ú"T#XtŽ¶I‹ðáÃGwîÞ¿tùÚ©Ógé¡ó‚K°E¸¾D[„K«G—/.­?áüËNƒXÞñŽw¼ãïxÇ;ÞñÎóqZ|>çú?ý§ÿôã?üÃo¼ðâïÿèG‹SÓ ^±´î òäáWÄÙÎàÕh$‹Âá@(4 ŽŒäò³2¿kïþwÞ?¼c÷Þ‘@°¡¹¹§¿¿“æ¯^ý׿ýík¯op.¿Ý°@Öo¾ÑÐðf¤°šÚ¨««½«§“·a‹"XþÁMaÁ¡.4ˆE[„¬HȶYEÆ“aÑ,U`±.!aYã© u¹'39‚° -©Éb¦PÌf(Âb«™Y™ÂšfEÂÈÞ§œÇ§r“8‚å|ÔžþΞîÖŽŽ–¶6(KÒB±`µ;?#TÙ -!­vv‹{wo/ˆÜˆkxx$¤-±hŒ·“Πd&¾ý|q²"÷)Ò"œ™+Í¿ÒÈP ^·‚DZ`!­º°¾ã(T-SR‚Uü[Úï,úÕoÿÕXán [3e /‘IÕ˪J]5b¹BP¦ö,xe¸úw"ª¤Œë=S%K&Z⫵¦ãÀ’­Z¤¸úID›,©:—+rXHŽIâl’A‰ ‘†Êw¢9Èšn"}dº"R– R†²÷WUr £\ €4Å„GôlÛ•›2L©‡’hÈT T*_’pL¤°DЋwQäI AÜpŽ>yµ‘ÿœÿøF”d×"&úb&+Nºt5@Å>ƒ)BM2ÝÄÙZÅ]6´$%ãª+öâ'5=ôHbe·däÉ@Þ*6)ÈCSø~µ(}âÕ?Û}м[’wÉÇX6VW‰ɬUé–ôeq\&_‡Û®*–0º3¢U5y¡¶-þx»R5d.‹ òÎ Ï\q¢Jöʼxq[ÑiBr• -²è V„QÂÊ&ÁÚì¼Â¦Í[·lÛ-»wïÙG[„ï† Öñ“l‹ðæÍÛwïÝÿèã‡Ñ-BÚ"|ZÛ"ü‚¶?a- /Ÿ8-£‹+D侶BEî«k K«‡—/,ž9{ÎùÇýÖ;Þß9ÞñŽw¼ãïxÇ;ÞyÎÎÿÇüÊ·¿ý^øwÿþ?ÄÆ'Ò™l2EG!pÅ’W^Içx†HøÊ -û¡!`pØ?žHΕ-Ûwî;xhÛŽÝÎ666vtuu÷ö645½öúë¿zí5çòë×^ûÍoûÔ 7lxóÍ7š6657ø|Mmí-íím]==]½,‚Õ74<0ô¨Kð+’Š†"1hŠ9B„°$Ë",EçÎVÓ4‘5‘Ê&29°`å -i"ÂÊg²0D¨ I‹W§áÁùB2“#¬"”,_{{S«¯¡¥‰lÅjnkmnmmí ¬vʯœßˆÜẋ¶{úûú¡Eè÷ûƒÁà(Tß9´Ð"Ҙ͒aZ„„_‘a™×º -ôs¹ë”q•t]NÒ–Ÿp°ëÿÍTê¦U*_’BN¢„h½¬f¨$ª’™(WÅ ¬Œz<Êͬð2`–EòT<[嶩Ëñ;W=•õðô–SYX6¥™u„êª -MÚ);}”PÙšˆ*1Ê„BVVm"HE@rPàKq­[¶hçiRôäîÙ¶D^2Îd©ît^¾Óëë)wš.¿SE)è©m5k0#2TU”¡0[%Z¢·ˆ •íþé„/«nÁP wY2ऱ²¡m$ä±²s{¥P=¿²‰v]ÕE¹ˆì^  &†¯ùçÔE¶ÊŸÐ&+Öll¸OÄxS.™ÎmDÁ.òe?Ò [„4%e #~ 5±c_–%¢\œeWíÎÛ(¦’+ÖDQ+"•@÷(!‹cÑxÕ|EF­(¿"+„U_ä[UJ±6mÙ¾eÛºE¸g/l¾óÞáÃGWa‹Z„W¯Ý¸uëî=ºEHZ„µ"÷§¨Eè<àñ£'÷ï|ýÆ­³çί®ŸXXZ=º´º¸²FZ„Á‚-ÂÅ•÷–Ž.­x-BïxÇ;ÞñŽw¼ãï5&òtÔ¼¼K—3vê·ƒ·Úø³páN)â~Ÿ Õ†£j$êš*hÂM=ƒ}ÈŠáŠZ™˜Y:N+áæièSi¼U'i[»³pT ÉqÞ©"À“)!>£.èU0%3\¢*LŸxKuIUt$?ÇE¯R1—Å›ŒJö©‚o`Q¹JX˜J !Üþ“+œ) D‰Ù” -¯P¤JF¼*â7cªc‚®á?U½®f±°ÅÝRYùÊ^!–UÕ-æ`Ç[„JµPEX¼$¨4¹¡½‚kƒ6ê ’¦¡ìZUñ¬<Èa×<{¸¿BÃW¬KHúƒ• -‡W[ÙüKÄ„ER[›6‘-Â-Û¶oßÅ"Xa‹ðÈÑ…åõc'Øáµ›·…ë‹Š°¾ ëh>¾{÷þå+Ð"d[„K°E¸¼v̹,®®/@‹påðÂÒÒʺóû©Óg¼¿s¼ãïxÇ;ÞñŽw¼óœÿá¾úïüwßøæÿö׉ÅRé4N^Å`»¢¶vVŒ¼¢ÎvÐ^…ÃÎ…ð« ä¯FFœù©ç^6oÛ±yÛNçYo466¶´t÷÷·´µ½þÆ¿zíµ¿ûå/Ëßÿú׿üÍo~ýÛ×_{ݹlxýÍ€°š›}¾p¹“aO_W_?Ÿ#ä+—{h4@#X aÅh‹ e‹F°`šF “‘ >GÈw £ì¶óƒgH‹ˆ°òœ_g'as»"rŸ£íÂ\q*S(¦&Y+:‘ G£#¡PÿÐpWX°¿‘{CKcCsSc«[°`‹+° ÕÝÝN"XP!ìïï Ë FGC‘ÈX,æü·ˆ'’)Ø…Le²™\~’F°¦g‹4‚U*‘;à)©´â’s·˺¡*°­½~=Õ q­ÏE´žÒ WÎJ<Ì’uÕM—“J>@«¿hªêu³7áÚ VW Läz¢Â¬t%LU—²,õÁ¶¡ '‹F•ìba-]Ñ¡×dL$SB½6Êš0‚ {®åêôI:dZ˜±ÔO:™4C…ÞZ-Ç”ñ´RE|*µâg¹&üÔ÷[~…ÙØ:.aÆPò‰È -%Ð¥X:~.Gg²Ÿˆ(–ø`*}’¥9±#™œIª&Y(Ý„~.ÛÑEàJ|Z\÷ãÙ'4zèJd º%àý¡ˆiª¢¦¹dU2%ô‹ŠýìXÉß¹‰»BK%ˆFp˜5©UAÓ®ª¡,[4 ál'Í>ü¦4 %”a ;“\Ù¼'Hs\–¸“»­ÑbýA¾<(A–ó-òëÚ¼uõº“> ”+„ó¢H(2Wó‚V‘Œ©Îo76oÙºuÛŽmÛwÂá¾ýûöÃá{ï]^];qòƒÏ]¸tåê›·îܽ÷õ`©-B5‚õÕ_|ùégŸBZ„·nC‹ð8l®Y\9º´ºD"X+¤Ex”¶.ž;wÁùÇýêõÞ_8ÞñŽw¼ãïxÇ;Þy>NÿÀ€sýõ×_ÿ÷ÿÅ—_þöw¿ÛÐÜœœœΫDÒ ¯âã4yEàU„8ÛCPxÌT¯üÃ#é\~NÓ+ó[æ·lO¤Òo6l|£acgOo[Gç†7ßüÕo_û»_ýòo Âú»_ýêïó›_½öÚkÄ…E\î>_s[;auwtC«» g€m û‡ÁA?D° …E]î´H—-ÂñÄ¿A]îÎm1Jè܈É:!³¸Ç!r",Ñ"Ì!D°¦„öjŽ¹°Xk675›šIOR¹ÉD&#¬ÀèØ ?Ð30H#XM­­Ð"lnjô57´46¶ú|­­Í€°ÚÚ¨È(°`ˆ°§»ST{aˆ‹Üί:u~ù¤E˜ç"÷ D° -¹B±05S˜ž™&,:DHBVF Á"\ß“-BÁ2\VvU½nªœÊTH”æFU5Q+ÃÝõCŠ*þ]Ã]å+©­@æl'*'S}¼»*X¯h«BeÔOW3Zxûs-ýÿc⦅ã8ó4Ïûn/bc·»ešÝ=Ó³=3·{Ó3Û3»q{»±±?ÏH"A€ -Ø‚­ -( à½!A¨JSïHxSHŠ%ŠIшF†R÷å÷5™ï›™ª”"¿‘‘ÊJdef%D|ây>ß©‡iíêÎË`Jà˜ê‚yÍÇXªÍYÄjJ>FMâáKX‚cã{^ŠÎ)W§ä+5'(hÜ'ª}1w«vØIÆèŸÎ)4àã?¯YòŽµNq -•Èò $VS®žOÔºö Í}Œ¯Œ“›8ÛVi˜ëc¼F4)) šŸxJ3;qÍ€d'õw©ª”ñ±hªëwb-ŸvZòÙ†A“@¢¤ÒÔ Y]@Bb?Se+‚mWfR©zumiùAuOÔËYlPE] 맢5Vá="Ó<Èâ­0¡] Tv=&®Så -ÖõY‘.BôÄÀ$<=³¼Œ®oÊ!ÃØiºØ´d3¤C’4D°,bÁÂ/%‰d •µ†G‡GÆÇ&¦'§¯LÍ\›_\ZY Fb›Û¸‹R„÷áó—/_&è"|E@X_~ùÕ³çÐEˆS„›ÛÐE¨œ0'–²†=Q°`­…¢8E¨œÔúUÇk¬±Æk¬±ÆšÓü»ßüæí#GþÍO~òÿþÿQS[ÉA,^5©´v̼j¬õ4¸ë<5u89èÆú•Óår ñª¢²²ÜYYᬬ«oè¹ÐYù§¯äoëèÎÊÉIM;›_P`/>Ÿ‘™œšštâÄñ'”uÒÉ“'RRN¦¤¤¤¥‘a:¤3slY¹¹Ä‚UT\Tþ«â -Gq¹£ÌYYFêkˆ~åñª -Xîžj6b5B/!ͺY¨;Zꛕ¥µ®‰Æ I–§‰„…ô«ÞŽž @Áêë§,wR>ˆ]X¨ °¿£÷BGO¨^íM­íž¦f°`¹jT –+;;Ó–“òƒ”‚•Ÿ_X§,hSÜ ìvLÁR–²Š -åÙ:«ªªjj”'ïöx<`Ájmnkkíèlë ««§Wyì„‚õþûŒË«Ó¯¼´[,X^ŽÐ>¨ã± —ÍÐU:Q‹0©Œ%ƒTkbLV\¤q€ ÷ùyŠW±p¯ ¼>#3jPù„ hL ^ö -*;­ÛcârSÝËz±TéÉ7ˆÌ6˜¯Î#žˆ‰•¶t1C&µ§ò ¨î„_Šª@$pò #€¨v)Uà+ðUÅ(Xù8_93Ÿdý`^þíHé4Çqa¬MF1Š¼”8ÿ’fµâU 6ïæS?»Ö¸çcãr>FØÑìCñiU~x,9óˆhý'û ‹úÐ#q:ž¾àOSu¼“A‰qIQ§“úÜXd÷@ˆÏŠ9›‰p§´XIûȆ< ¨ÃdéB•©ÎlˬK wÅÅú˜ÊB‰§]1•…ïãÒN(ûÙŠ¬© %0-„l¡®mP¤¶+¬t¡mI -®\®onîìyisûòà RY˜ßŽòƒœ"$ävâÝ¢w?%·S4AîÃ#ÃcÐE8>5==sõÊìüüâòÒòjX¹êÖîþÁÍÛ~üÉ=”"|ôä‹/ž¿x]„ß|ý -w‚~õ²ü^ë"üêk5EøÑÇŸ\Û¿±¾¹S„X¿Ša{ ¥#ÑP$nýnc5ÖXc5ÖXcÍiróòðÆ/~õ«Ÿ½ùæ[GŽdæØZ::›(󪱩(R༪«o¬­‡Ø` Â^³ÝU­,@¾r¹œ.°`•U8 Bèrutõ\¼tyÀ+võö妜>ž]X\’‘’vúø©SÇŽÇ‹²} S‘„uæ|:HXYÙ6èéË-(È+,*°# «¬êª~,wg»Ê]Wé®ýŠeaxEYXÍu-:¨»§C±HP²!EØÑÚ,$a]@)‹]}ý¤‹"„Ý„‚Õ)XäÞÚÑÕÜÖÑÐÒZÛÐTå®UHqyy¾Ýn+(ȲٔϮ,Ês E„¶œÐèÐgDáÁ<¤båææØ‹ ˆ°¸˜D+*”³)OÛUãVžmgÁjëììèîFú¥`]",5!¨|pNðý¯òM",MzŒ”`Ŷ^æS~—9+”™……#/ÇfWo±i±pu×Üg€YéýQ^QUŸTÁJS–´~=¶Pdõ(Fkb¤!UÚbBsfá2íB ŸJ£ ê&»­‡"‘`$ŽÅ•¿e?†´3t,”ÄDêË’©ZEèî89(†Ø¡<4䟟œžBNÆ×·vöö¯ß¸u磻÷HáS6EøŠM~÷Ý·4EøÕWß¼xñ哧_|vÿá­[ÐE¨œ -wF×!B]„ñ ŠC‘k7”îwïY)Bk¬±Æk¬±Æk~$“——¯¬ÿâ/ÿ[°þÛÿïÕ5µM­­ÔyÕHbƒõjá`-8¯jÜ•.p^~U Ê•¹°ÊΊJ°`5µ¶w÷]ì¿ìííë/)+OIK;sþ|~‘='/ÿô™3'O:vâø±¤$etâ8ƹC)áé4”"L?›ž™ž“™k³åççåÛ‹•Å^V,÷ -G‰° ´èr€ ×ÖaVR±jêQ–¯šÜõZ-ÍH¿jÅH¿"€w rVG€Ü»{;zúë"‹pWÖ„â~ô+rïkëêõ¯E9mSµÇãpU+w[TRšWX˜››¬¬ôÌŒô쬌œ,åeŽ (X¹ÈU@ÌWùv»ÚBX„ô+{i)¢`9ÐEXíB wOC#t¶´ @î: -Ö%BÁRµ)Ù¤JX$Hx™Ó¯4”ºIr:¸80»ªP±Ù=¯Ï ™~È¢]â2ëó1æ+ôº‹xE‹ jµ}\=Ÿì3*W”mÅçû„AF/ÂÂ=-ÓôǸž˜¯rN‰bRxÒ€O"p-Ñ fN#u<ðŠ³do¶›i”cSiX¢ð1/u0v6þÆEÒøú<Í(Eòw\rMY…ªP&Ϊ¤9¯|ªh& H¬ åc\æGê=`^ŸÈ¸³$VÐóqÕ¼$¥‹ 2@-ŸÀ!ª¼”O¥2æ+Ö:¥3Gé5%º€ºÂ8îº(êèX*ÕJKí L! æ€"Ò™—ÊSôŠ2§q±‘@΋…WKå_©ªÏÅ"š•z°ºæAîðJ=€&e|X²zŒ(ùÕÔ¡ò܇¾)õ_I²À뛘üìþƒÝƒƒµP8FãëãSS8E(ùý¤vPÂäv ¼bº1¿[°0‹¶â/ÉÈ‚ ¬‘Ñ‘±ñÑñ©‰©ir_\ZZ[ FâŠð!%¹¿®‹ð›W/¿üêùó?½÷ég7>¸½µ½Ž»–"Œo£ñÕpd-ýú›¯­_r¬±Æk¬±Æk¬ùñÍ‘_üâ7ß|ëí·myyM-­P5ØØèiPW89XGô«êš*WlWÕÎ*P®œ„ß^é¨t•9n§½³§çBÏÅ‹•®êÓgϦ¤Î|\QÚÙs'SS’Nžd-XÀrOMMMK;­¥Á‚• óè",.& ÷²Š’ -G™£@î•®rW£Ú .,¯ê‘~U窫 ËÓ ¬Q~°ÉYÕL-XZ¢P¯ðFck[s[GKGgkWOkwO[O_{ï…Neéë×@îXŬ>`¼w`{'X°êÁ‚Õ¬J°`! -V~vnn†-;= hö99¸ˆ0'Y°TVú°PAX”_XXh·Û‹KK(ÈÝ©Uç“ØäÄ*‡>NÓ¬q¬^Ä?yþóòF,-ñ'±i>F -“4»«e Tkò‰:þ•èã¤-ÙG]XôƒkPwö¢TwB+¦sUÉTr»ˆY’?€ \™_ †'§gØ !&®_ìiiå‹/žѵP8mîî]ÃrEQð8$(¶U€deœÄØ+í²ö×äÀP°ÆÆGÇÆ©knaqyy5‰­onï\ÿàö‡áácÒEˆR„Ô‚Eƒ„$Eø -R„ß¼|ù¥räÃÏ£áõõípt•° EH»C‘(þù~磭_r¬±Æk¬±Æk¬ùL~A²þ«ßþöí#GþíOúOÿÏ«ªq×Cæ‰W`¾ªw×y@¿¨¶ -kœ®j„uA`á!¨XUU-mݽ]}ê2srN¥¤œËÈ(°+ÛõÞ±cG“’ŽO" ¬ääS§Oƒ„uöî"LÏÎÉÊÍÍÉÏÏ-(Ì+* w`¹³]„UÕŒ„E‹±`A¢°‚„uÍî†&´Ý¬Ub!‹‰6 Vs[tâao_HX8BHe+~»³÷±`µw4µ¶«®ÞY]SêpÚKKó‹Š~•“ž™‘•ëaÙòr➟‡Å«üB$,*Ì·ƒxUB–ºËÊÊ**Êg€Ü«ÜnåÛ¡<Øú¦æ&H¶ VwOwï°`]Ĭ÷q„ðÒ+a ¬^„!íï jÝØ¥™ T ‹mýÓ«.{¿ÃJTiê¬ZuÙëÔê¬QJ‡=çÈêDhbe.¾…j>,,¥¦›´L@ëZÍŸ—9ù óUF¼’pÄOWðçÕ•ýùf8=ëds|:p·|$//F êÂkL'[«7È„æ8”È+B ×]`âÔ–L%±Çk±8Τĉ3¬ÃyÃX!È UéD/ï;¢šžä5æìt¶+ƒ§&™°ª¨F§fëF–¦í¨r–Q‰bÕ-ø¼¼¸4¨=mõ½"ëVÒÕói†% ‡.ê¥3ÞïD+ÿØsjߧÓÍqCr‚¿GÕ²T -­ds…ÔL%J’Ÿ²³D¶+PTµJfíX”d%«ºM²¤Â©”?žãS3«¡ÈöîþÎÞÁþõúû‡FFi$DEÙyppïÚþ½O? GcÁp$‰F76ûß¿ ,*^©…ƒØˆ%HØp%#~»ö%LwǦ`©¹B$aŒŽa ¬¥ÕÕ MBáÝOqŠðÉäþåWš„• ‹ð˧OŸAŠð6Nn#±H|=²B°`¡.ÂÕp4í];À?èŸ?ný¶c5ÖXc5ÖXcÍf~ñ«_½ùöÛo¾ý–-/ߣ‰W ¨pÐ㪭­®­­ó•²T;‰xÎ+G%Z# èW䮼±­£³£»·±¥­ ¨(5 ´©Üü‚܂´sçŽ#ÿHXÇ“”¤'N¤¤(KòéÓ§ÓÀ‚uæüù³(Eh˵)ï*,Ì·ƒË^Va/+G8wg©³² Ò‹Dª¬!X°Ñ»°ȽÑÝÐŒ%,lÇ-« ëW°ö4ƒ#˹?¢b¡.Ž掮ÖΞÖîÞ¶a‘.B5EˆÅ«~ª_! (Xݘ‚¥\¨ªY°ÊÊ Š‹mùÈ‚•““ž••ž•‘™“m³ ô«|œÄü+° - -° Kytö’b;*"»Óé@V5±`56 «µ­MyÚí]Ý=½Ý}z(KC`Ñ «®¨ª¤¬*ŸÎ.E0ÕjÅaá}Fè:—4Ô+Q ÏʬPKóiŠ–桸=¬”¤é`‚Ȧ[ 25sƒ<ºJ•kT¨;/I <]TIìZ²O`Bø<‚¨kdÏÉQ›4”¨£*éZÿt¦;]âY^R•(Is=‰Œ5K6×™©L\CÆDÎéOz‹;€âÊkM:¸™IÃ41v£ãŒd¬%H¦l(V¦ÓÔ$A2Q«˜ëcœZ:uËÇÜ99›OÔIL¬|¤ÊY:àù ûÑ4Of²H¢‚’žX¥“°XΓ|¤ßA|!Ï® YD¹}Ér±`H? ËïÒn˜R³bR¥-™¥]ùP¡º_ù goïúýWWƒáˆ²„£ñK¸1P Â]Y_ðàáæÎv( GcÑøúÔÕ«p9¿ŸR°P6$ -ä%ª&TS–/TÎB;epaÁþÀÐð0P°&Æ&&'§ff®ÌÍÍ/..­„€ä¾½w¦?{€S„/Œ)Âï(ë[µ‹ðëgÏ_*‡rï³7ommïFâ X…cHÂZÇ)B°`­†”'½óÑ]ë×k¬±Æk¬±Æk~4““£¬ÿá?ÿç·ùÉÏ~ö_þ韪këêk=À¼ì$Û^UáÁJª_¡ 0bUTr…+Ñ⬠V{kGgs[‡²ç\úùS©)ç33ó‹ìé™™'SRëèÑ$¢_A)!²`¥€ë,Ò¯2Îeeg"»-¿ ¯Èž@îEe8E,$¬Rî¡XX5„‚HX.$ VŠBŠÐÝØTÛ@z ùjÂV'lhÅ ÷N°`uö´u÷µCŠ°XîÔ.Â~š%ÄwЯÈQ°X –ÓY„Šsòr3m6$ae*ë,[!ÌÏ/,Äþ«{ -«Èn/&,‡ò•Çî¬úF-EØÞÞÖÙÕÑÕÝÕÛ×Ýw¡ïgÁ¢)Bõa}† ®HM¡À®tn+Ä$2†T¿òªê“¨¡Ýµ¸¢þlƒÚWõëA¨®±Ó9=j@¯8tÕ O†`ðé<ÞœãGñÐu Ž¤&ìØPžÈöÖ©µ€š -4È«¹8žÈÂÒù,¡Ä0ÆY$¸AóÑÇß$†4%™¸‰tv#&?Èí¤.#&(lK!œ -eL? ”PÉñ™Ëezý[nÌ-L¢˜H4cÄ.ã1¢IŒŽÝñf*ŸánMðò¤)Zþí¢Ï Åù ǨÿÏðþ4.?è $vÃÐå MîSd¤$3ÑcRñ,櫲-ÔÝ¡JV÷qÊ•ö€¬Å”2º– -x—UÁŠ½UäÔ’@& -äÀ0ÖŽÔ°¡òWÊÈØøã'O¢ñØÊêZ( Gc“33>£@_Bgƒï…ò®÷‚áÈÍ[·£±8PÜ£Ñøæ¶ò-`•(Z,èWÅ+¤hwÔ?¨ -\õbÄR.342:6$¬©©é+3WÁƒµ² -¬Ímð`áá’"|ñâŗȃ¥Y°¾CB,aAá×ÂRS„û×ollî„" @îë›áØúZ$¶ŽDbßþþ[åGüÁÖo;ÖXc5ÖXc5Öüh[°~úÆ9yyÀl÷ ÂÁ:À¶ƒrUãv1ú¯ª\Ä‹UUE,XÎÊr¨Xu -mí-­íÕµuY9¶”Ó©©gÒr -”“§¤¥%þ†œTÂe\SÈõjrÓeÕLå5áP½.0(°ì)ý1'±.&(0D01”êd+zŽ:ûÒ'¼F›ÒHàüí©Ö,–b¤=™(l‰}Mfºœd® ™¹¤| ^úÍg‚¤Ä>+N9L²c5Ó3¨Õ{¬vä{y̧û ¢¾GOW,øºópß&QÎ;©|gsòH_‰·Šã«¹‰!´7”ÏìxåUë"‰ûéHY˜µŽâ~d§ ù‰RßyýJ`jðVù§f®,¯†¢ñÍøÆV|skkgoçÚþîþõÝk×®+{Æ&§pàò÷ØþÁõO?ûlvq1…€pŸ„ú’²ÛØÚÜÞÝØÚŽÄÖ•Wá °‚¡ˆ²¡ì¹:¿pyÐë–;g»2RÜEYGwB.,Y’´FBˆ††GÆFGÇIŠðêìüüÒÒÊšrÅ;‹ðIÂ.Âï( ‹¦Ÿ?‰ºïßüàöÖÎn4¾ŒÄÀ…E»ð'¾ -+ûU–5ÖXc5ÖXc5ÖühæWò'o¾õöÏÞ|33'§†ÆÑüWU.-<ˆÅ+¤e–;˜¯ÿJY—U8*«©µ­¾©YÙ>Ÿ™¬´4[~A¶-7õLD“Ž{RNžHNNNMM9}úô™³ä¬ ›-§ í¨‹Ð^Z^\VQ\á(uTËY°Ë³° êq)!V±p¡º¸µ a òb‘—¸‘@îí-*ȽƒÜ/j‹L#!¤‘‹¡`Õ6" -V• 窬lDqÏÎÊÆúUÒ¯pŠXv;’³p aqQq±½´DM" M" VcKK3X°:€‚Õݬ ˆ‚õþûýŒ‹Fíج™È´ -È—´„à ‹«R“†LÙ_¢˜á ª>™z«iˆKö±ö*†ÔD#Š…>NEÝPêœ7Jñìq&ô§"»  ŠÆDC;õ&õ±…}<÷‰+ãc¼OFl” ³iâM_+þè8T:ÓŽWbÂkFÉEà¹â’¹2æKtòDÑ?Þöc°<ã{:ÅFK5ßâÓõ -ãA2Iú šà†pfaCŸÎiÆ‹K>1Á¶Äy±|‡}×8­ÌÈŠg¿ƒzG&YaìŒv¤‰‡×<è3,°¨vº‡2*–Ú(€•Ú'¨ú²ØÅÇèZ’?0·¸´¹µ»µ³ÛØ Gc+ÁàJ0¤,Ë«kK+«‘X\ÙÃÐ*å ?zôdcg{ai) -Áºõí½k»×Ö·vÖ·¶£ñP$ …×Bp†¹…Eegl}#Ž†cqå«‘QåS¨Ý‚X‰ùžAl²Â¥‡ Rù‡Tó•¦hÉ؈ž¯‘Ññ‘1$a!Mí"T>Ô¤?þäè"|ô{°¾ü -Ü¿Á]„ß2]„(E¨|íåKH*oøøã{û×o®on‡cëˆåNº£(E„a4ßüðöGÊxåzÖï9ÖXc5ÖXc5ÖüÐ'//OYÿÏÿï¾ùæ[?{óÍ¿ûû¿¯­‡ü «cÛk 9誮¬& ’°èºª -E]•¸‹°²Ìé,w:•Ã›[š[Üuž¼‚‚´³gN¥&ŸÏ -ÖùŒŒ“ÉÉGO÷èQœ"JÚqŠ°¼¸ÂQ‚‚„ˆ‚åB ,•å^KJ ë@§ÆýD>ßÇ¥†Žn"Iqú’9'\H´_ô½Æ¹d¢üø^wf3H¸‰Æe¢SID3Ñ£˜/½Fº°¡/ÊTé2~R£p¤Ïå™e}¦æ(U¢1º’tr¨·TU5ôv˜ -J:ýŠž„ÊhºÊ?‰Ëý ê~AïŒbî„+ûóræ+?e"LyEµ4PV-Áp Õv-Q¦€,™‰jƒLÉ ¶±ŠÆ×BáP$²¼¶¶¼º:¿¸8¿¸´¼º¶ Í-,†GXùë²×»¸¼úô‹/–—ÂáX8ÂÔúæÈVH¹Z][›_Xœ¾redl\”;{×î?|¨œ/[DãÁhTù!<Å ÚµžA-ĉB‡‡$¿_Y£!¬n‘—Ø34:6:¬ñÉéé+³³ä¾ GãÛ{×nܼ}8X"|üäés”"üúëo¾6·`A!¤_BáýûŸßþðãݽýø†ò! ÖÆ–òÐÚ=¾(ûh$¶±ÿSå§üãÇO¬_x¬±Æk¬±Æk¬ùq̯ÿìÏÞxë­·~þósD¿ª®!ä+Wµ²`6_áð E`¹XÅ Ve¹Ã E„uõM­­ Í-ÊöùŒ JÁ*ÌÎËK>}·¾{Q°Ž?vâÄñS§N$'ŸLIA)B¹+·q>3+#Ç–“W ,"´# V¹CYJÎRgU -"ýª,Xn0bU¡:B -uGBâÂÒ îÔ…Õˆ#„tÝ„R„m ­m­í-í]Âêêmïík –JqÇüöKÝŒ«[°(«®±I¹‡ -—«Y°lùY„âž…@X™Y¶œl›àòA¬_ØíxU¬âÒÒâ2äîr¹Ün”"ôÔ7AŠª1Ƚ»§«¯Oµ`]ºŒô+Hj®'5¿¦5úQÄ:Ådù~Š³N fšs€ òü+‘idhWúŸ¤1Ø…„ʵÁ[—9ƒŠ[ç.­ƒO4š¼¼Q -‰QL[mßÔ^òž%c_¢¨hhî v©Äo<,øýŸ!˜fò n¨„Zôš»ò™eÍ9ä{’¹ %¥^“ Bú ‰9“Ÿd¾Çø©µ}º|œÏÌëeRµV€ÒŒg’dZ¨&ìt¾)¯Èñ66Nnâ©Vº§‡‘STª :[/È_EÕñú^ýó«ï2³W©™DIu[iCz€ä Œ­¡½µpd-ZXX›œTv††‡†GGÆÆ'¦¦FFG¡1Pö °>K–•?h×ö¯ß»÷éÕÙÙh,ŽDCáèÊZpnaqæêÕñ‰Iåír`Þ\­¡§_<»~ãæâòr,Xë³ —OáWÔRå§ùA¦P¦-„2öb ÃA¶ÂºÖr!eÏÈØÄHX“䯕`0ÝØܹ¶ãƒ[wîÞ½wy°¾øâ9J~ )ÂW¯4 –FÁúöë¯_}ùMÞ»R„{ÈZ ÇÖ1È=º¾,XÐEŠÄ÷¯[wk¬±Æk¬±Æk~$c·Û•õÑ£Io¼õ–²üöoÿ¶®¡ujþ+!$F,5HÈ´‚œUîp–a -–Y°Z‡^SWŸ‹,XɧSÏgdæËÈ8qê䱤¤w{SÜU +%%å4¢`?$¬¬óYÙY¹y9yr·£a‰½¬œ°ÜAªDVuê"¬«§QÐCqX _-˃õ«]œkYµ€Ã¢)¶Ž–°Ú;SDxI²º ˆðb{Ï…VHv5µµ{š[Ü •55eNLÁ*´åçgØléÙÙ¨ˆ0ô«\RD˜—Z‹Šò BˆXîv²0Ž¨¤DYJʱËéD ÷D*«k„a3¹wv¶uu ,X—ˆëò×BȘ…ðö€ ¢«{JµQ©0vpOyµÝé¤þ+%YéKM0\>½Š—°TÔ¹*Ķ%­PíéãߢkÙãò}šx%ê;ą̀M‡¤ötI4CE Þ5h( L줬o_b±ÅˆdÊ'çÑÃÒ}f–¡„'SV•dFçµÃNz¥H2y所Nú>>£ -¤;^2M%ÊxÛÆsê1V’d¢D™ŠH `Êk¼´'¥SŒ;9.ºîTüCÓŠ5íˆÈJŒ™Jöjbs°ÈªXL6P”Yû– i´vAfüf"Ycû«q)‡ŒŒŽ¯…¡C0ÑåÕµÀJÊÉ!*(ùð -S襌óƒÔ¸%ú‡F=~ºýàÊÜ,:Il5™˜šñ “Š@t¤²}yppaiéñ“§‘X,8÷x(™˜ô D¡òD?µ`©QAĶÂrݯ°íŠ@±`[FF‡ÇÆFÇ'Ƨ¦§f®^™›Ÿ_\ZYÖÖöîuœ"¼÷Ù}ÒEøüå H²]„ ë›—_~õìÙ‹‡Ÿ?þøî½k×onlíÀ³B.,Я KXÊ“Œ­oloï)?å7wö¬_x¬±Æk¬±Æk¬ùqÌ¿ûÍoÞxë­·IN=]][W‰ WÈvUSUí®„» {±”=Î*j¾R6ª°ÿ -@XX¿Rw]}C3ØÊ++Ó‘+ùt* -æ+G“’ÞS–cǨëøñ“@Á:•ª–E„çÏŸÍÈÀ)ÂìÜ<ÔE ÷‚’Ò¢Ò²"Â*ͪ\åjP¹ÏH¢^B°`¡ÅCYX ꆻ¾ÑMõ+,dÕ6"!«±‰¤[Û›ÛäŽR„}„ÕǺ°.QìT¾ÚÖƒ,Xm­mÊÙ\u‡ËU\^¬‚ `Ùr2r²•%“RÜI„°Ü‹ -±r…U,\GhG,;ra•UT(ÏSù¾¸j€‚U[@î--ÐEØÞÞÖÑÙÙÓÛE„ý}—H!ŠúT Ëh ‹ÐÚU•±.pù>õ\i%€”‚. ðG2’”äÕ5ýùxJÝö‰ŒNŦ¡¨Û•(1H+6ÁÇ¿dÛë¸Ò=‰OIf|‡Q§¾G‡dÒè'þž+C0M<¼GÏgó&HÉ%,æ“̽Rº¸Ÿ9)ݬ O§öøDY'éRB.–Þ…ÅØ–Ôx£nÉƶ>OÉKîeòn*ÆJçn$³Ø ™N¥ÓMŠ jž¤×Íôæ+SAOÔkJ¬ãK02ÕÑóDí™k‡Ñ  W²©t&h*™²Týʇàí¢$B6Yù“-†‡‡GÇFFÇ#£Ê©.]ð1Ž/åíáH|s{/£û E¢ƒ‚€08@QZ¨¯ÐlW`ŽB.,ØVþ|-,-?|ôh5 -Eb JEbãSÓÊ~¤}ac~£Üÿþû7>¸õøÉ“ù¥%°`­o¬CR‰W’JhW–@’‚þÁ!"g¡x a© -¤­¡aÒBè(Yþ€òy‡ÇÆFÆ&&¦À‚5;¬ÕP8¶$÷7oÝùø=xð9í"Ä - ÜÍ$,H~óò%tÞðù‡w>Þ½v‡.Â8 㘂…R„ëk‘èJ0ÛØŠmí*?å•Ojýªc5ÖXc5ÖXcÍzJJK•uMuõo½õæÛoÿ_õÛúÆ&Í‚…[i~JXÕ”åŽÄ+ÔBˆXî•åNg™ÃátU×7·4‚Ë“›Ÿ¬ÔÔ3ééy…ös™'N ëèÑwŬ$°N" ëtJZZÚYTD˜™u>3;Ó–KAîEàÂ*–{yyqyEIÒ¯ ‚„Ê-Õ@#¡²v ^Â*7°°ð¢±x.–VPˆÝYˆåÞÚØÒÖÜÖ‰º [°P!0¯.P¶cõ]êè -–rdkGWs[»§©¥ÆS_US[樴—• P°²Á…–-;7[°¨„ wä²ã,!±`«¤¬¬´¼¼ @î®*—«º¶R„ roA]„í]]½}Ý.ôöƒëÒûï_`)îzƵ—bÒU»ò; 8©Çô -¬”ĪXœ$%p‘@/õnyuôuœTñSݤòZ­XDÎ÷iÚ÷¥ÃüT U£ÁIJ’/A¼.‘ò£Ã¹›tÒñ×26úm¯ó}ïÈ›7ÐI4§û T+cÍkF2ÙTIDçª2)×3µKéD¬WÊ`db®+ë”d&:™~L.‚'«‘×Ìú%°zšÄïI€@ÇZW è€êïg“ 2š™#‹>j™} ^‘8Äõ¤jq²‰ÅKdQX†’ÖšÅß Õ”$ìndY½ÉŸWYONÏÌίoîM}s{Èêʲ?»°(ÊUϽóÑÝèb­G"›;»H¿‚d¥„E'¬\‘m¿H÷PEKƬøƒë7<|8}u6_W–+³s8Ð'`B;ˆQÆ¥¬¿xúìÃ>Z\Y †Â‹++ÊÁÃ#c¤I4«€ègZÁp%S´»Ì2²ZåG !½ã ÿÐÈÐèèè8€°¦g®^½:?·°´´¼ŠÄ”G±¿ãÖí;L!—"üFaaý -u~ý J¾€᧟=@]„{át£ Âkc3ûj8ŠÆ• X¿êXc5ÖXc5ÖXócš?ûÍo~öÆG~ùË“))5µuU.F¶~;‰:4Š;HX‡UAô+dÁr‚«¦ÎÓØÒZßÔ\æpžKO?•–z*5Šóò’SR0ëŸß{@XIÇŽ%OB)ÂS)©)ig0ëlzúÙŒŒôl[†-7'R„¹…… «(XÈ‚…AX´‘P%ºÔ½ª¶®Ò][…ã„u°¦ú•ëWÕu *ÝsÝ•Xî-˜åÞÑÚÑÕÚÕÝÖÓÛÆu^b]XØ‚)ÂîÞ¶®žæöÎFDÁª®óTTU“"ÂÂBZD˜žE-XrÏ%ÂBäŽAX…àÂ*Š;*"D ,œ"¬®©­u{.)Á͘*]Fº”8‚§I=²ÙN=¾É›Hh2cd™§íŒÞ!ÑD/ò41Oyu$+þ†9“cOÒ}4Ÿq;q<РÉCž9mä -þŒš–˜4uKXq•y¼• -­R½^².~(0võ½ØÃ6·°´síàúÍ[»××·¶ƒ¡ðr0¸´²¶²Šon-¯½‚ -þ‡FÆ>ÿüÑúöv( G£»×—W}‚(0:•‚„ªŠèZòVaôº²»ÿàóƒ7®Î/D¢±ØÆÆØää (J~Š=¡rÝùù…ïÞ˜œœœž‡¤!’¤dä¤ñJbºK¦Ú2_ #/¬d?Âg†üa‰fÊv`dlxt|tlbKX"\YYkkº?¼óñ=”"|òøé³grÿ¥Iá+\Dø{MÂúú¤Ÿ¿ø¥®°¾‰S„±p º±+EV0‚ ZQë—k¬±Æk¬±Æk~ãr¹”uÿ[?ÿù›o¿ýûÛº†¿ªÿUe ªB— K[áŽô«*jÁªp8]5õM-ÊRS뱤I;~êÄ™óç+óDròѤ¤w8 Ö‰¤“'''Ÿ:}:åŒ*aeœÏÈNϱ Pçöü¢âB’",+)w@Š\XX¿Rn ‚„ÕnLt V-–°êª( ‹Wˆ‹Õ\wÅRÑîØ‚ånhò4·à!²`á!€°8 -ÖEUÅ‹Êm˜‚ÕÚ^ßÜ¢œ³Êí.u:í¥eyEv[>¹gg#Š;HXX¿ E1‹HXv$´Û•5va•”€„UQ¡‚ÜÝr¯÷4Ƚµ­­µ££­«‹^ê#,ÜBH,X& ¨L’ê•Â2‘†½¢&+E N$08ȼÔÛ±h0Ð'ª *V†bR"YI d6Tš+W‚ -Z£©êª2—g”ÏL ó6ϲ¡n¸C\^>)¡ÕÊ„ÝýmŽ`2O™¢¿a7}œP2oß;L•’x?•t¨èd¤¸3.&S;W2¨ybbKLèqòš“tÛ²ÏÈfg‚uúü¦Ä·t†Md˜ç,Â%¢³+Nn’Ô;”EæSˆ4Eè£ç r–ÀDV7|¤ey ©Èç’C¡HôÚõ›±Í5УbÁÐÔ—Wƒ«kÁµPXy‰S„È4ï½ÐéÞ§Ÿmîl#å½ÑKƒ"#7 ôHyŸP' Œ¸ñ@qW}YÊzaiE9U0G£Ñx|%Â×Âì,Ì­Â*¯O•HkÍʯf ¶Xª4‘JòSµjH¤´vê¹"D,DABr‡.Âñ‰‰©™©éÙÙ¹å±kwïàæÍÛ} ]„>zúôÙsœ"Ä1ÂWß~ûŠv~÷{¬_AŠðkH>ýâÙ”"ÜÛ¿¾¾¡<·x0G]„|Šp-¼³³÷wÿá~þ¹õ 5ÖXc5ÖXc5?Žù‹¿üËŸ¾ñÆ/ÿäO’Nœt×yª°lEÖn¤bÕTóU5­ D]„U®ŠJب¨¬¤)BDÁjjñ44–V8À‚•šz25…怂•tòä»ÇŽ½þ+Àa=~<éä‰ã'O*‡¡"Â3iÂJ?Ÿ‘•ž“V¥¼Ü‚‚¼";X°JPŠ°¬¼¸IXŽJÄrÇ,¬jlÄr¸€åŽpXÔ…Eõ+e›ªXõ8Wˆj -¡©°¦¾ ±jõ¬žÖîÞ¶îÞŽÞ ½TºØßÕIYc -VW_GÏ…6°`u·´w4´¶Ö66W×yU®’òŠÂâåþsò4 -V†-;@î¹yùØ…•WP€ùíHÂñ -ˆXv{a1 ‚UZJ@î.—«¦Æå®Ur]€Ü!EØÖÞÚÑÙÞÕÝÕÛÛ}áb_ÿ¥~DÁº4ÀQÜH¥A‘Éýa±ÈÇæõ4aÊK×^Aóha•jÐÂzÔ OMJªÒ¥fýÔ,¡×Ð÷§rΩ,Æ{¢ÞF¥¾Lä¦Dæ"uÿ ¡IÐw( ]g -J¨t%ÐyL3€ å£DÙ·DàqÉ\5J!758ñ 2ŸAu r_ó’.æf¸%Yçòš…ì^¿ˆf–§Ä4x^Õ1õ>±z”ìõA9ÕÝ$°Ê•¨–ë±æ%Ư¥ƒPi•|šˆ$¼^ú¾?‘k!äD'†¦.JF¶˜îÞÔ` –ôé0쌊e(d#{&;•3Hr`æê\8—)ººœŸŸœÖøØø„h˜¹ pRu÷õ]Û?øüóGË««¡H$Š¹:E¯S‘JËŠ~¿²ëïò€×'à{›·nòɽ«ssÑøz|csræJ`xR„*5 ùµ`ºp6‡%‚Õò3ðv?Ò»ôÉA’4¤:•ŒlWáŽüWÃXÚò††FÇF”>1=15sº—°‚µ±µ³wíàƒ[Òáã§_<ñ,X_!‹±`%JÞÿàÖH" V(àáúf8¾AîÁpôþƒ‡Ö/9ÖXc5ÖXc5ÖühæøÃÏüâ­Ÿÿüÿüÿ±®¾ÑUS‹øWn,aá…¸°¨…,XU˜‚…ô+’",­¨PŽñ46Õ75« àôÙ3§R’ÓΞË-(LÏÊ>™œü^Ò±÷Ž}÷½÷È= ŠOžª”ÀÒÚ_d¼R²AÑ’^Zû,²WÔ…òdc¤Î( -¯ûŒ‚AÒØõz…Mf¯î5Òæ©ôÄú¾XÅIG\y¸ºz?¢æ˜âZ΂Eò€"RÆDýÙ¸)ˆ &‹hGCãSH›‰C`0<26F;e¬ÿPŠlc ºr­±‰‰gÏž¯…BÁp$‰nlïv÷õú‡G˜KË"Ö¥<¨±ñÉk±­`8ª\t|zFž¿861yÿÁç×ö÷––Cá¨r;³‹Ë _Q‘ -­Qêø¬P· œÙ/9K•­üä$gÉ´jPÄ ~/ÚF_ÆçÁ˜wÿÐaaÖäøäôÔôÕ+@r_Y^ E£ëÛ;$EøÉ'"|ôHî/1É•»*aÑ.Â/qŠðÑœ"D]„ë¡H<[gS„køøÑõ üƒþÁCË…e5ÖXc5ÖXcÍ{***þ7JÁúÕ¯ýÏï¾[[__Uãv! «Z1¹½šÝk°ËIAîåÎJ:+)«Òí V]Cc…Ãy>3#95õTj*pŸòò’OŸ>vüø»ÇŽýË{cS„II˜‚u"%%9--R„gÎœO?—‘q>3;Ãf˲w ºíÅùÅÊRRT†Aî",u‚ uB!X°ªÝ‡… î* ù¯<ŒKÍrBVm#J¶ «ƒHXí=ÐEV¯*aÑ,áÅþξ‹½äÞÜÖ¡¼·®©ÅUWçp¹J** -ŠKr sòr³À‚•“ YÂ,e#[“° -pŠ0¿¨üWjaqQX°ì*Ƚ=jå»Pí®Ur]Cƒ§± ŠÛäÞÑÕÝÕÓÛƒ,X9 –È’£t°h¶ PÙÃ4Rë”i6Pàñéô0/#jEKЊ½ÚµD}럀»ž€ÊnªöèQWÆLd(1A¨P4*?:õϤ{ÎTÂ’L(õ~|f0vcúÌè3Õ¯ §#/ ”ÇÉTØ1íÔKtr1áå^k¾$“Îñ©˜èœÞ{vHhQä¬S&SÔüK‰ž?ûL¼œõK“ž>µg|¬ Ê KÅú¸Ø—œ´Å^…éD-Qæ¿#Z{ [&(jº‰ jmƒèóR,•„B|HyÄÉé+׮݈on­…#k¡ðæöÞðèÄúdÕµå÷•¬’¬ðvgOïþÁõ§OŸ.*ŽÆ6wöæãªíM *‹hxbjfs{wÿúƒë7oÞþpva eA¡ -†#ŸÜûtyuurzzdlLTÕ*TY(©*–D7üô¥_³]ièVe?FµÓ¨ Lb†²ŸˆZ=@µfaÉË?4ÖøĸrCÂZX\^]>ÕÖîžò nÝA)‡Ÿ?~òä‹çσõÕWß ¥¸§Z°@¢)Âç>úðÎݽk×ã[‘Øz8ºŽk–š"ÜÚÙÃ?î¿ýö[ëwk¬±Æk¬±Æk~èóå‹o9òÆ[oýÕ_ÿuM­Ç…¤*"X¹ª Ô­ ‹¡`aó–°Ë¡ãihªonqÕÖåäå¥+%íìÙ¼¢¢óYY'““Oú—£H¿:vì(Ö¯PáIbÁ" ÷s™8E˜›—o+(Ì-*Ê/F.¬âÒâòŠ¢²²‡CYÊ+]Ê¢áÜQ)!ÂaÁ‚X•î:œ(t ‰"«^ud)î†F"a‘!µ`u»æ¿¢÷.Lq§¬æ¶Žú–wP°À‚UV–_TdËÏå*ZÁˆ•“““E„yùù@Á*ÌÇþ+Jq',ÜEh/) «¼¬¬¼¼¢²ÒYå «¶®¶¾ÁÓ¬æÖÖÖöŽ¶Î®Žîžî¾ =û/ô_êýjðýlÁÒëWê?´ tù#Uiêö5S ¨à,Z,ÈÂØY±‹C² ¦­zFVBª¹dâžòŠ&2ˆÑ4å5hD&s]Gž¤7tó†Fÿ•‰…I”‡– ¦Á·C”()_=ÁÁß+Ž‡"ŠÂ¡'ÔÞ:ÑÀƒ9»‘@ËÌ®+$P«}ÆØ‚'ó·'û¸=ú3¼Æ&ª‘½„ÂPÖ3û€"O™1¸˜¤¡l& ÊŒN%³IFUh2êZ>J‹2h>š¢å㟧¨ªX"öB—‰ÉJFº´ Ê~åêåAå%Ä÷4~»4àõÍÍ/}þèñÎÞÞJ(ŠDgfgýC#Ôy†+ø˜‚(#ããSÓÓÓþ¡aÕñuÙë½ûɽû÷®ÃrÅoÞºŽFgçAøR"­ÿ›˜¾2»Š„£RT6"ñ dÖ¢»OùO 015 áD¿Æ³"ü+j¯RÜo(ʲÈØ®0Æ -”(YíR¹îX’ýd?ga_–ò0”1Å°°¢% ŒŽOŽOLMM_¹2;?¿°¼¼ …c›[»×ö¯ßºuçîÝOÁƒõøÉÓ/ž! ‹t¾zõ-•°~¯IXß¼R€á“/>ýôþ·>ÜÞ½¦<„µH4‹GÖ7ÕáZ$¶Ž*Ë ‹p5dáÜ­±Æk¬±Æk¬ùaÛíþ?þõ¿þsDÁú“_ÿúŸßyÇÓبFéâf@îj;¡†Ãr€ŠUIS„·§¾Y°Ê•ç23RÓNŸLIɲÙlù©gÎ$8ñÞ±cï¼÷޻ǎ -•°N¥žV-XgÓÓÏgeAŠ0/7;//¯°ƒ° -ŠKìeåörâÂ#–³²ÄáDâUuyUµÃU]…°]ƒ…xÁ)ÂJ’(TYXœ wÖ·¶6¶¶‚„…S„Ý aub «¯¿“˜¯.A¨½T¾ÔÖ݇(XM­¨ˆÐãqºª•Û+,)ÍÃE„6."#VNŽ-æa ‹jV _å#¢;¥¸ƒ«˜X°œä^][뮫««oÀ ÷–VBÁ꤬ šËËRÜÕÚ/ÜPÏúš¨~%yNƒR³{|NPß0¨vr vÁ¼PwrÍõýúôB“á¥ïГ˜»žŒ—AkÒÁÒ¹/ô%]:O0x¼bbnU"ÓTbµGMöÕ!‘ õ}TšD~*ñ0?•Ê8:ÄLu¸Là+ù)avá/'su{ü3Le$— ?Øxó2çÂbå/™1\%’¹ÌäDÁŠôIšñIà6Ì¿}š±J–yŒ#v‘¥æ¼¡‰¾Qšš¾²°¼²ŽÄ66·v÷¶÷®Ï'_ZY#úhSÒÈøø§ŸÝßÞÝ_ZVŽßØÞY\^ †#s‹K³ ‹ó‹€} -†£ÑõÍÝýƒk×o~pûÎεƒ`4>9sEòû¼ÞÑññÛ·ï|t÷^8S.¸ -ïîï\¿¹¾¹­œgy58ôóðÞþõÝkû‘X ¶°¼<:>A†«R˜vEWªÉJDQ«hrÝ)ÝݯګÚW±ÃJsg©&«F]ɈôîQ•+™DQœpdDy\¨‹pzjæêÌÕ¹ùÅåµµH4߆¦Æ Eˆº“.¯¾Ä)Âo^½Rõ+*aÑá×Ïž¿|„S„7PŠ0¶ŒÄ•u[°Ö7QŠ0¶Š¬#øÔ÷Ê5¬ßy¬±Æk¬±Æk¬ù¡Ïù¯ÿõ·ÞúÙ›oþöoÿ¶%Ô\n·š¬¢]„Nƒrå¬" w¬_!{¥³ªº®±ÉÓØ\í®Ë+(L>’œš’z&-·°0,X§ Exô(€Ü‚uü*"<‘|êDrJÊé3©ª +#3=+;3Y°ò l…”å w¤bU”:œ%L°¼ª -J ]Õå€ÃªqÖÔ:ªk×½£Ý»ÖNˆ› -±¢…,XÍžæÖúÖÖ¦Ö„…õ+¨ìdòƒ8Kˆ,Xroíènjkohi©mht¹ëÊ+«ŠËÊ pa®-Æô«ìì  ¸Ûrrss±« ?¿°€„íÄ‚…×v°`Ƚ´¼¼¬¢¢ÜéD¬êêÚÚZǃ@ÕÞÖÑÙÙÝÓÝÛ×s±Š/½,¯ï²WÀœ+oDa´,Ä’R÷¼f¥u2=Ib+ "ž˜©˜Þ@c`¶•)‰ý{JæٽÉUúj?Sºø=´c¾ïuq<¯ø="{b‚¼žøú Ÿð=!TbBvÓaŸE|}P0ÂÏ%£WêdqâìK + üCL541áSb¥!î "w@"Õ.Á“—ÜßKð 8î:6káž?¹È ³–,pž.ösq†.‚Y]™ÛÜÙ»yëÎþÁͽƒë{û›Û»;{×vv÷®ßü`ÿÆÍÝkûkáÈÐè(®5„õ­mloã¡rÀí>VÖ;×®íܸþÁ­½ýë[;»áØúj0 G6·w”ó\;¸>3;§\qÀ럜ÚÚÙ»õáG‘øF$†"kÁ°ré·n߸õáÁÍ[»×®GãëáH4¤,HDI¢¸*‘&þZå§ÜuØ–Tß–¶8‘J¦oÙ‰•«€ ¶}H¦Ç ó•Ÿ(WCÃdÑ,XpüйONLMÏ\››_\Z^[ ááÁÍ ‹ðSœ"| -)BÄÁúq°¾}¥¦qðÕ·Ên”"üê 5E¸=¶¾r>ê"TS„‘øZ$ºŒllíàŸõ¿ÿýï­_x¬±Æk¬±Æk¬ùAÏŸþÙŸ)ËO1ëw= MØsEÆZÚ ¬*"dUTQ –,X5`Áj®«o,w8Ϧ§§œN=™šœ‘m˨{ÒÉï%AỌ„uüÔ©ãɧN¦žNIKKM;sæÜù³éç3Á‚••›‡(XD¿*°—•–Ù áÜ¡Ž°¤ÂY欂 aeU…Ë…°@¿ª®ò_á8!¨UÔ‘¥ YµÊRWíi€.ÂÆæz `µ7ã.ÂNdÁêA)¾ *È/}»€Ž…ô+¹w6¶¶zš›•‡àpÕ”8E%¥yE@ÁÊ VVFVf† $¬œÜ\µ…õj w²à"B;‘°ÊÊJ+”'Š»Ýî:O­§¡¾±©±¥¥aÜÛ -Vÿ¥KäŽ"„>ÚB(ë:ÛîUfP`+uã›R‹ UÌ»ÈE9A•ï53_}µÊk°N™Äį̂S¦Œt³â?9‘8cÌ`Ž7²ßgÀÃCöÍ+š†éó\™ÉMäŽ×ÈM¾htÖ txÐ(KÊ$ô'r.&‘;R6\Wf's1Šá«X $ .ºnÍV - -Æ?h”ŠL7à­d6i³$Ý¢ú©|𜽠‰×¯ÐNYÖuâ¯ú‡†—W®°³·zh-FkØE"«¡ÈÂòòæÎîîþ~$¿2;'Ê˃^åÀ$¿q3 ÷x(]\Y]Z][^]]Y ®C«°•%Ž@ô/^Y]ÛÚÙ[Y[õ€ƒ‚ \^¹úÆÖN$¾Š “U¼X«AåÂÁHïáÈòÊêÔ̈ ìZP¥ 2YÉ”»P…)QÛ ä+$: aj–Œ,X¢ -¶ -l öeI86ˆ¥*ꪒp<1à}ù¯Ôô"z—xtht(XSS3W•‡6;¿¸Lº·÷n|pëî"|„¬"üê+ÜEø-V®¾e¹£.Â/¾|òä‹O?{€S„QhTž‘°"ëáØz(_ G—×B{ûÊÏúíÝ=ëk¬±Æk¬±Æk~èó×ó7o9òÓ7Þø¿ÿîïÊÎêÚ:!tcÍ -kYçN,XUäŽðé®òÊÊŠ*BÁª¬r~ÕÐär×榤>‘œœzöŒ­  =+ëDò©£Ç“ R„G‡áÉ“ä~§Á‚u.#óa”{Ĥ“ª| ¡ë #:ê{Á¯$óó˜VìyͺM E†.BÎ.%éÉêßß¡$’¿K|Ìáœ%³˜^Â"<«'Æ%›EêSŸ„C…)Fd–ÝÓ»€=‘I¹ÐŸ¬óY ìÿ½fö§D‘:¶PäÜV‡€ÝÇ¥öd]Û ÎãÄ_QÖ}ï -dLVl¾—ý™|p«Š© ô‹Ï•Oi—Dƒž†Å7ɘ¹:ÛØŠÄ׃áp(YZ]½277933533senaiy5ŽÄãËÁàZ(´³{mc{ûêܼ û¼>904suV9faiinqiqeuayynqqvn~zvV9ÉÄÔÔÄä¤òrskg}sK9(T±øåA¤RúEÑïÄÑñ‰é+Wç•ó¬,­¬.¯¬-¯®-.¯Ì/.]™›Ÿ˜žJA‰¬¨íJ&<+YU¨4G’’ÐF`ˆB±Ð6¼ôkÀ+™±0Îí‘UH;ai öb†AÅBì,| ÊÑe•!ûÔôô•Yå9-  u^#]„÷>{@9X/há7¯¾….Âï´!qa}ýêË/¿zþüå£ÇO>ùäÓë7ni)Â(¹# R„`Š‹>ýâ©ò³þÖ‡w¬_x¬±Æk¬±Æk¬ùNYY™²þ›¿ù›?ýõ¯¡ˆðOÿôŸßy§¾©™P°ªiŠ°šÝ  )W•¤ˆ°Š.%,s8Ë*5uOcsm}C¹³ò\F:¦$§geÛòóSÓÒ0ë_Ž¾,JÁ:¬äS©©)¨‹ð̹ógäž™ž“iËÍÉ',e)(.Q–BäÂVEEI¹ A¿ Ëå*'8¬paa¨;JbÙªRÙ¨©«¤úŠª)Ba5Õ557´´6µ¶ãaJv€~…$¬ ܹ¾‹ÊØ‚ÕÔÚV×ÔRã©wVW—V8‹0+/7Š³!B˜™““k³ååÙ -T ¯°fŲÜ1ȽDù¤Êw«¢@î.¹× a=¢`!{{{g7¤û.öö÷_¼téÒåKƒ^–â®Z>tª ¶Z‘ú¶ïí†dû_{<§q‰ ¡èFž•„Ê+é‰XF*{BO”ŠgÿÞ±5í¥(4ºðG…ûTÿ•¨* &‰3SID84ÎvÈ¥y0¸ÎÆ“0ŽÇ+6æxs£Ì(CéN+êùN’ÑïdøXq&a˜N0„E¦_Ï s©R•ùû ö'3}É(1±æ+½5Ž·Ki*–˜ (èoFf¤9]· îí$~ˆèîä`åÿ7QöOÎ\YAÝxFv€™ èÿd`£LÏ\]ßÚÞÚÙ] …Báhl}s-EMèO"A (K`xØa:B_h}áÆæÖƒÏÅ76Ö+[›Àâ›(‘ÃäÀP`hxxdttl|dl\Ù€³!Ç”H«f)ÞJ“°ïZ³hœPB„+QS«4‘J^!JöcÂU`ˆÉAü’èW‚_ጡ<4B…,¬üÊ à°¡<4¬¥'§g®ÌÍÎ/Œv죻"|øHS°¾Â$w$a}«-ˆåþ­ò5å˜gÏ^<üüñGrmÿz|s+‰ñp|#²N@îjŠ0º¾‰èõõ×Öo>ÖXc5ÖXc5Öü ç/ÿý¿ÿù‘#?ùÙÏþþ?ý®¤¼,XÕlŠ°FÝVXì‚Å+e]î¬,w8+œ•žÆ¦º†Få<¹©ii§R’SÏœ±åçŸÏÌWÞ½³w€S„Áh,_W-XÁHƒÜã[[ÊÏú©é«Ö/<ÖXc5ÖXc5Öü@Çét*ëÿõ¿þ×/~ùË7Þ|óÈ/ ¬F `!;¨X®w¥«FU´0ȸ°ª«UT¿B-„àªpÔÔz”“ÔÔÕ—9*Ïgd$§¦œJMÉÈÊÊÎËKNK;vü8}ï_°+))éĉ¤"<™zúÔé´”3gÒΞ;s>ý\fV:¤äž ¸° -ì%",)+*Å]„X¿Â,weƒ¦¡—KXªËYí†5Š¢ÅM]X _a9 ,XMµMÍžæ¶Æ¶6-EØÝÛA$¬‹]¼„]„½:z{[»z«ÍÓ,gMM¡`åäå IXÙÙY¨`!°À‚•WH,XÈ…Eú ‹1«¸Èn/.++Á,°\U555uu„‚ÕÜÒ¬TDج‹ý€‚uùÒåA΂ÅþcYö«ÿXæ%ùÀ§óÛ¦õzà¹ÑO• h”˜S±KL¬YrNñ0¼¹¡$ù¾G ÏôälbË,Ô&±nƒà#Nšâ%Ùì#‚IGj’|&ö!Ùì̲)˨VɼtÆ b"g|’3Ï•˜ÀhÄ>IÑÐÁgô#‰ÚE‰Ž$òR#ïHLO}¯ÌJ^º»Õ{ÆD½_KÿL˜/ùuOÀŒ²Å>íÑL¿R?–‰¸>A¤µx}^A”‡††FF‡GÇ##yçc¿AÊßó‹ËwîÞ A¯_4__^ ú‡†`ŠÈGÚµDùÊÜÜ“§Ï®ܘ_ZŽ®o\™›ï¿|Ήî§ù”ÿÿÁÿ90€}Y¢DHïR`h|rj%RÞx«pd5–âD"è鹿ÈPÙ)Œ‘ØÑVÞ$6!H£Ìç G"¼•?Àµ2Î+Lk'n+™HXD­ -0\wªq¡æAr¦µ«$Nˆ„,™Æ è‹pbj@î³PE¸´º¼ŠDÖ7·vnÞ¾}çî'ŸÞ ¬/ ³Ü¿áXîš„õÍ7PG¨óô‹gŸÝÿüÖí¶wö"±õµp4‡c¨Žp#D»ƒ‘ØGw>V~Üܼiýæc5ÖXc5ÖXcÍt~ó箬ÿô׿þù‘#ÿæ'?ùûßýÎ^V^Sç©‚.ÂZÎÖ¸+i–‰W5U.΋åÀ÷ªªr'ø¯•UžÆfeqÕÔæÅ=åTjZZvn>P°N%MJz÷ØÑ~(Xï%%;qâØ ÂJQŽûé³gÏœK?—‘q>+;#Ç–™››i;°òíÅùÅಗ–ã:BH:œÅȈUFêA¿GV•K%b9iKX•TÂÂ8wDǪE,¬z,aÕ5µ4´2)Brï£)ÂKL„ötô^hïF¬6°`á"Š*Úí¹ùÈ‚•¬ì¬Ìœœ,ZD¥`åÛÙ.BlÄB.¬Ò `•——WKyøÕnr¯oÀE„-mm­ír‡" ¸ˆðòÀûƒÞŸ üKÒ«—TÖ¬JI‚΂%™CÔ}f”*ŸÈ·ò™Å}ÆÜ_ýÇ+¾¦ÝO8´îðÂ>Ó"9áÐv?ŸY¹ÞkE­Äö“šÔ- ¯!hɇdÙT1„—>^c@tÚŽyN-¡æfÔX|œ¨Â©["·mâ,9÷A˜©Œ’«2ÉƇãÓKIFw5€É¬âÇÁÒEÙøñeAfÍTÜ kOXÖ;ßDƒ¼,ðß‘¿[Ý3­I” µÁç Ì\] eikwo{÷ÚÖÎîÂòòÄÔ´WEê¿’üþh|ãÑã§s‹KáH,¾±µ²ý -yö¨ÊÌQè!ˆr8}ôøÉj0ŠÆ”wH@ÿåˢ߯9µCÓ3Wg®ÎMLÍŒ  àÈØÄÕÙùõÍíõ­íP4 -%ƒ‘èìÜœr!rr­=_ˆhP‚ĵ -ª"í j0P“¤H ¨²Ü 9Aâ›Ò"„èH ÅÂûq‡ ~»&RÑý~ÜBÈY¶èW‡ü!d¾Áu„Xãò~52>161519ƒ$¬…ù…%„r' ¬[·?º{÷Þ}ÂrG9B„Ââ‚„ª„õê»o K9J9üÞ§÷oܼµ¹µFØöµH<[G)B°`){VCåKøÔ÷/^¼´~ó±Æk¬±Æk¬±æ=?ÿÅ/~öæ›Êú½¤¤º†FP®ÜÔ…UãvÕ  a baœ»ƒèW°á E„N0bU×Öy›Ýžúr‡,X§S’SSÎgfåäå>{æ؉ãï=úN;z Š5ûÉÔT¹Ÿ=w6#$,ÜE˜——“_`«¥`•”•–••©,÷2ä¿R–rȺ°.,´vÖ¸Êc¨;âºÓUR"V¥»–v6yš[ZÚHŠY°Ú{)ÈýB×E!D)ÂŽÞ " VWSk;±`U×”:1 ,XrÏÎÎÈÉ¡Í–i³ÙrȽ@îˆ|e/(²«Y¢âbaa ViiIyyY…£Va Ëãñ46b «µ­(X=½Ø‚u[°KU¨Tà3ý'¶®ƒORþI˜½nLÛñ>+ÝIL¬)}ÿåuï5ªaÂ÷Æ[™’Æe­Ë>>d'˜ Vz¼Rÿ’NóÑKs‚Á±£^B4±ñ˜Â½Ñô*HC‹ÍÇدÇù…D†°Ä[žX5L—dLD¼v¤Ò™Ø3ˆ&ê–ò¿+g03{D.c<`Ø\4·6±éKIe41r–ö^áÅ~kÒ|æyI¢ø‰²Ÿ}†4O'™©|š®åůO - _™]ˆml|pkÿÆÛ{û`ÂÖ?0;íí__ßܺ27/©Æ*YG£Ï_¼@|öh8Ÿœ¹êDø€ØR…`Y(¬‡"“¢442òàÁÃ;|ev.¶¾quaAXVýQŸ˜Œ®oÞüàÖõníìlî^ÛÝ¿¾³wmc{7¶±‰ÅW‚¡™«WeHJ"â$ õMa ‹ƒY»¬š¯P¥ ²Ôx ªYéT/I ú¹` êÂÒv¢>A³†U³ã¿RÅ+"aü%·ËCØE,XPA82Šóƒ£ã£cÐE89}ejúÊ•ÙùÙù…åÉGã›[;¨ŽðàŽ Ÿ¿|ù’°°0Î]5b×Õ*_U¾}=¹{÷ÞþÁÍõÍíµ|»ƒ‘aQ»²k}ÃúUÇk¬±Æk¬±Æšôüïÿê_)ëßüÅ_üüÈ‘ûÓŸþýï~WT\⮫s¹k+‘`¥ªXÐHùAŒs¯¡]„* Q°ŠUF)XÊ»ò ‹RϤJII=s&;/ÿ|&*"L -Pܱëøñ$ÄrG)ÂT `9“vîܹÌLÕ‚…º 0+ÏnGVY±`9ðRâp"œ{%hYN¤bA)!@Ýq)!¬«Ý$QˆÄ+Õ|…ˆXÀ ,ÔEØRßÜÚÔ -Vkg7M^0‚Ü‚Õ‹,X=Ô‚ÕÚVÛØäªE¬òò‚âb[AAv^n¦Í†ô«ÌÌììl›-Üs ‹ ä`a1àÜ•5´––‚„UVVî ,åÛ¡|›êêë=-roëèlïêîî»Ðs¡¿¯ÿRÿ¥ËýPD( ø„AA¢¹'’ÁIG/áD³Å|^‰çP‰\$U·Ø^?_Ì”7Q' ßKdÐ^SÆwe]Nd‹zÒÅèÄÜ$ŸßÛgn ’tØé½L:­IÔ‡à$6ËÆË8‡‘£Dž&pÒ“¤Ã˜"oTÿ4X¡4$¸Ùùæ’¦&™ú©è1~rK²Ì{Œ; \ÒîÊ _ù >4z²l¦k©ç÷+uþ+õ:•h¸œ@‹>Îý¥ÂçýD˜Ÿ>j”æS?sråÌåA¯rΩ™«1P>¼õáÇ;{ûÑøF8Hk¡ðZ0¼Š‘¿*¶¾1»0?@ñVÊÛGÆƾüêË¥••P4¦ ùý—eÿ°ÊÓ‰‡R °½³ûèÑãÙùù`$¯™ÙyÐ…$b£›˜ŒmlÁ ÄÖ!–E×ו{S6VÖ‚s Ãccølª?Š±r¥z®ˆ&†|bXÑ’(ØJ‚mZ/ÐŽ'P,ÆvEª›(Tô«lÏ `Ôª!\'Ä9A$Rak¦µÓÔá°„X{52:Žd«ÉщɱɩÉé™ñÉ™1Î(ß²+Wçfg–VVCá¹ܸyëÃ;ßûôþCµðÅ—„†EX¯Tœû+H*_UŽ{ððчwîî^;ˆÄÖW×Âkáh0¬o+º¾Ža –råÇýÞÁõ›5ÖXc5ÿ?{ïùIr¦yî?±C²Éæ 9ä¹äÎŽÙ¬qï¾Þ~<»±w¶G²ªP@¡ -­µJh­µL©!H¤ТtµÖUÕ’ìž[ž¿îîê>³ûRgñš[v 22ÒC ùôóü^³Ì2ˬ±ZZZÈ«¯½öÊ«¯¾ôê«—/·uuµ`ÿˆW@q' ,«µ™¶# -–¢bÿU]C#Ú £··½»§¾¡ñVÞí«×¯_¹~ýV^^AqIfÎ hDx1ãçÏŸÇÖ…Kä~ƒÜ¯à^„@ÁºyëæíÛ„‚•_\RTZ -a¹WUaV  ëê1 «ø¯j¨ 7%TŒX- -­Ä‘E¹îX¿j½XMm gÚD-KgwGo_go_Oÿ@ïàPÿÈXÿ¨’"ĬI†‚5I\XÓèÙÁ±1Òˆ°³¯¿µ«»©µµ¶±±¢(XE˜‚] r äN–àaiyY¹Š;x±dœ;íEXS)B,a547ƒ«½½­“‚Ü¡á Üˆpbjr§çæçç­¶E«Ýj·[9z3Œæ#·'N¹ÒqÔ5zÔwÂOÙŸ´jMö³¢sß‚I×[˜ÎêÁÇ·‡Ó¸›D£•‚žõmåAOº•ð( ]‘ttvQ㲪n" ôIàgâ’x+¯q‰”"ÔÈÛ‹ö3¸èrW;JP—׋ì|=ÊÎ1Q3($ÏY=: Ñ®„øøä][Ü9Ô£À¼VPÖ;XÐ!ëEViJ£S1Š“:1vVv^úS•:="A‰Ñ)ÎJpÊåX²Ùý+«‰ÔÎCðí|pçÞ,Vì¤vwc‰d ¸íõ/»½Þµ@2½‰%âÉTjg7µ·‡>"ˆd„~Å$§ëÉÓgß|+ ¦v÷Ö…%«Õf‡3#‚ ä`&F..ÚùgŸœ¥4¨.ÑXJr¹án´ÙC‘èÁÑÉv8M$‚¡p4ÄâáHlk;´¼ºêòx8°Ö£ˆ:G,Rvš -4=© „)ù…ŠÜD WŒl%»V¨Tk¶xÉ -Ý€¡`9‰2ìÚË颊–D•+l¯rÒl Ó¥$ -´ù Ûåñ¹¼0°ç -”+Æ^-¯®/¯­£kѲuÝ·²FŒXkÍ­`8D÷ ºß{ðÆ›ï¼ûÞüäéSÀa}…³„ß|ý/ßP#±Èýü M~úéç|øñ£7Þ>8<Ž'wÐåÁ -R„û)@»Cf3‚SŸŸ<ûýsÿå—_šü˜e–Yf™e–Yf™õ"¡`ýú׿~M¦`UT×XÚÛ[ÚT;µ`Yhã°Úd¹74a«¹¹¶¡±®±©½«§£ [°**2³³.^¹|ýFvaié­üü+W¯^¸˜qþÂê¬ Xºxå -ô"ÌÎÆ)ÂœœÜÜ[yù¹……%D¿*-)¯”ÛV’!€°ê`àv„Õ à¿"æ«Ú¦æúfYÂ"M -­ -‹!bµ5Aâ°ÿÕÑ©¤ä>8BR„4EHÉWŠ„ENL ʬžþbÁj V=±`–ßÆV.P° EH"„ÅX¿*•õ+E³*£ „UUKS„ M---äÞÙÑÝÓÓ×ß?0 w¬_É,•‚¥PÐé·QA•°x‘¨X°¬ßÆ¡bã¶3ySÏk2Ⱥ¹¬¼7É@k²“îfZÍÊj”°ÓEðΔ¿ŒRœH¥ÙF—Óúv¬ê6F¢‡Óm£SŒpV$η,tè H†3ô{`T2Q#"±½ÿ4MñìŒðÂÈn"£t‰ÌÄ3œ`Z’¹bb·w"ÿFü‘2/±óà)»ö…¢†úngÄ+ë™×‚u@QåMêR%2@«D›¬D1¨+Q“dÔwv¹{ ¬•‰²èà9fª³~gmöàvèƒ>¹{ÿáÎÁA<™J¦wâÉôæVз¼‚6[´ÚŸŽI;û}üq4GDãñýÃÉåQ:÷¥wv?ýô3´7´´¥Ûç³´>.‡B¦Â’— JàöÎþ!Ú8‘LïFãI§ËC#„:î¹=.·×íñº½>§Çãt¹±l%8TV•D® C°cÿ’ì¶R¢‚dt‰óÊ.0y@iAHt*‘ ±!ŠQ«ˆH…_.ˆN5fH…Dƒ"˜wÉ¥â­ä !‘¶äf…Ød%Ц„hÑé†CöÂñbÍШvÿŠeÍ¿º¶²¶¾ºV«õÀæúæÖÆæÖZl¡•«ë gÁÂF`#° ‚ð—ÞÝ?>¹óàáã·ßyïƒ?þ䓧Ÿ~úù_|E²„ß|ƒU,êÅúWô_ôãÿôõç_|ùäɳwß}ÿþýG;{袄cèrïË}z V,aEóo³Ì2Ë,³Ì2Ë,³þP¯þð‡hüàå—¯\¿÷V ¸cV;mGP÷v™åÞJÊ.¬z `5ãv„-õMhchDØÞQÛÐxóvîÕÌL4róó ŠK²nÜȸtéÎÃ8þç322 áåKX¿ºš•u ,X97nåæ`{^¦¸—–—U””W”VÅ=VT«úfa#Æaœ;à°š!BˆYXD¿"v,paYäèÞ$±p„°»­»§£§¯[°ú†Gû‡GGÇ©kbftrvDíE8‹%¬é¡ñ‰Áѱþ¡ô’®¾þö®´O4™ÊšÚR܈ô+Òˆ°°7"Ä)BBÁ‚!&_UòÀ¯ˆ–UY M «d Vm}}CSS³ÅÒ ÷ŽÎîžž^܈ppxpdtd$,™‚ú•ÜˆPþN-0`dÅ…eWŸÅ,Aϼ2@NñD¬¥oÏñtÖÓKU:¹É9e5Ö²zZ”bëÒx´ôª+àXó}“1$œ“³IÇÊ¡ËŒÍFƒâ|G¬uÇÊÉ œKt²3¦½¨ÂÛ~D=áß®K ê»m OqR½ß4YBQ³ãæª'U‰ÊSŒ7ŒA36'‡å°sC.¥Èc¬(ŒÅOéõ=›®=‚þ@èûÚI PàNˆMp¨60Aà2˜‚ UÌd,Ùíìüâ{|ôäÉÓ`8O¥â©t,‘òø–çæìL†qÉf_^Yýâ‹/ét,™Œ&’ÛáÈ’ÞuKV»èt>yúé[o¿» -'Ó;{‡GÑx|u}ËÅ*PÌÍ!JkÍ݃CüvɽƒãípTdz•|¬JiH´)â°RÅ%ÕcFœuŠbFÜVX¶ pUò£b¾d¼•oM¨èfŠ»ca©YBÁéfïrŸAð\a_–“Š]t{/v[ù=>¿×»ìõ/ûVÖü+kk›«ë4ÖõM@]mn…6ƒ¡­m4Âhac+ˆÖ£ÍVÖ։̵¶l‚ˆK¦v÷ïÞ{ðø·Þ"Ö'OŸ}iÂ/¡/!X±¾†8!ß ñÍ7úÓ7è©gŸ~þÁG¿ñæ;G'wÐB‘81paAŠ0S„h×Éôîáñ1úçmfþÍc–Yf™e–Yf™eÖ‹[¿üÕ¯^yõµïÿॿÿí®¨®iíè$‚ñ\É ,,^á5 ^AGB@¸£…ÓÃ’Q}#*«¬¢"ûÆ+×®efg–”ææ\Í̼pé⹌Œß?¬Œ /_¹+++3(X9·roææßÊ/¼ jO)4",+/©¨,©VY5e¹WÖÕWbý -w$$8¬†:9BXßlÁ.,ÚŽÛ±Z1 ËBˆî¤#!aa.VKGW[ww[7¶` BŠ,Xccƒ aMrû¨Â -Ö4Ô‚54ÜC(Xõ--ÕõõåÕÕ%ååùÅE·‹ -¡a!X° - !¦`•–––É,áŽÎ›b¾ ÖÔ€«R„-ÍèB´¶ƒ‹P°À‚5<2<:>:>,ÚˆpqnѺ°dSõ+Y¶¢–Î,„¿ØŠDÂâÔ*Î1¥·WéÜJV£Äœ¡âô]ðV6^ÅbxÚ’Ã0ÁÇ*ZªÏMâzC×wa˜ë¥»ÑJE¦P,p:_“À˜š4ÝëD­ H`õV#¢*%#‰FaC‡“ËÔ\›!%s¿¹PGÕHX|JNݹHõnK>=G'Àž ¥´!`oiöM©Â3»èyv0Æ3£K£ìA>9Š3ŠÑÊ4pu;ï Ó¨d,2K¿¢–0.2Á®èW‚öèdf»ÃíõõÇ?íî¤=™J‡bñþ¡!Ñé´+8)A$›ó -°Þ©ÀVpfnnÉfmŠÜvÇæVíçîý‘X<žHîŸÜ½ŠÆükëó‹Ksó èÓmì_]COíB³­‚¡0„í‚‚X·1,SÄ:ãùÄN-r˜XkHÊ«y£&l»@‰Uò~Ê6†Ö.J*ã]i,¨YHÖO²óTvAFZ©M 1J‹òر S­ÿ•$º\ [y¼ß -:·^ð¬–Ñ%j}e ËV[›A­‚Û›Û¡­Px; …c¡‘X0A+7·BXéÚX^]÷-C¢pum#€^%S;Gǧ÷î=”‰XOŸ=ûìóÏ¿üò˯þøÇ?ý‰ -Yß tí¾üòŸ~öùÇŸ<}û÷îÝ”ÞÝGãÛðvñXj'¹³‡éEŽ%’éÝû›ð˜e–Yf™e–Yf™õâÖÏþú¯ÿ nDøêøßÿþµ¬,Kø¯pŠ°Z°ˆ~E¸îàȲH³°‹± µ)BK[X°:»Ðrn^þõ¬¬+×®ÝÊËÏ/*¾~#;ãÒ¥s8Bø{,a] wLq¿|íÚÕÌÌë7ndçädƒ+å—€„UZ^RA)Xh”©)B°ˆÿ -›„ÕHR„&EâÖ²Ú,mÄ……ƒ„´A!@Ý[) öÞ¾®~°È}@îàÂ"™A2ä!èW" VP°Új›+ª«Ë*+‹KËò‹Šnççß.*È+*ȇh$Õ¯JÊH„#_Ñ)îDÅ",÷Úúzro!VWiDØ?8882:<¦X°æf‚µ„Aîj#B›CnòŃ°Dqd±zÑ’ý;9©äÍ„3òzš”œ–‘®Š×Ž<@[ï¶ÒÂÃuoí`TmôOgpÒÇÊ´Ì(;£Ÿ(º‡]«>é…Ñ®0Ç´‚cûaD#€’hW;âq“ÔLLc -ÒSÍ5kìmI4˜#Jظ3 ËYŠ­ˆã;i^¢Ó‚x‹š {GÙˆš†nJ -Ü!:x?•jäF{´#'èÙyAÏ®Uº̸hãUDÞâè`mQŠ ¦z±ˆ‰ ¡d—zB˜žzÊy˜_8<>ùÓ7ÿ …AÂJ§7¶¶û‡E§‹Ü3’Ë ENöc©T,•ÞÚáY*O.¯®AÆ7 Ec}òôèä4žLÅÉäÎî£7ߺÿèñþÑI4žGÐÁÑÛï¾rç^<•N¥wÐÛmln}L‰mÊÄ*znm‚ú!#NE Ò·TíU$ú'ˆ œJ’™WNf…ÝVD¢œ+QYoWY¢¢†Ùeé öOhWrŠPÖ².–¨z±dx;å\I.'ä}nŸŸD½Ë+høW×1ÞjËV›[ÁÀÖv ¸ÝVX¶ŠÄ‘x$–ˆ 3‰C|è|¢eP±B´ñúæz-@±–W1Ý}uem}3¸CçzgïäôÞýrœðɳgÏ>ûì³/>ÿâ«/¿ú#Œ/ÿøÅ_}öùÏ>ýìãOž¾ûÞ‡hct¹£±äævp,Ƕ`¥#ñT,¹sptúç?ÿý‹ÿá#ó³Ì2Ë,³Ì2Ë,³^Ðú›_ýêåW_ýþK/ýöù_kê,í$Eˆ]X‡…¡XT¶" ¬$´4B@¯™€°pŠšvtc -–¥­¸¬, [°®ge–”ä^¾výüÅ‹ç3.üîܹs.\¼ˆÆEœ";¦¸gâF„7+¿ð6PÜË„UV^Rþ+$,¯©­À ÷ÊÚúªº$l¨!´#$ ,Ù‹Õ\§±Zqœ»°Z±–D,‚s§M [»zÚº{;úú!E80Ø74èWCr'â5báÖ„ÓÓÃãƒ#"ììèí³tt6´Xªë*ª«K+* -€‚U˜WP£¨(¿F±!,/‡!V±‹¤± T,paÕTƒ«±@î-–V¹wuõôöôöƒ~5±kzrfvšZ°@ÂÂ,µÉ—ú’0|( K-X‚õ 'Õwhó§o´'R§Œ0S×ÛNàSC°¶æ…<ÚKMÞâxZ”CoûÑØ–tŒt…Ý-ês|š fŸ¬#K:D ‘Éν…À;|´yC¼F…5mvOÐKpœöÂo ß<üþ¹YÍà¬Y»†û±F&Vöá:;•w˜šÚ¹ š(ˆuJ}ôÙFEAùóÉú©D8©œIA7OQã¹Âä7» gñè¥8!Ô¡ -k¼«M&Paañ°1§-,,-=yöÙû~ŽÆR;»‘xbÉnwºÜ[ÁðþÑñã7ßyûNï> ­c‰äáñɃG>züø­w÷ö¶#Q—×s³ ›ÁÐý‡oŸJ+•€R"}çÞý=|üøàä4šH•,O®®­/ÙK6»œõsÊ7†2=Ø;!]HdŒÆ% -€KU´DÑ!(MNL¾"Ý%… E7–µ,6ý§X­ˆ6%ÈTvÄhAl%HŠŸJ`»[Ž -J¤Ï Òp=+¹~òä鳧Ï>{öégŸ~úù³O?úôÓOž<ýàÃß~çýß8:¾ƒÞÝx>‘H<Oï&vöÐc,®l2ž‚ (ùGÿ믿6ÿò1Ë,³Ì2Ë,³Ì2ë­½þú+¯½öo¿÷½¬9-ªK¦`á¡BÄBM< Ka¹C/B0µvôô¶vtÕ64ÜÎÏÏÌÎÂó Kʲrr.^¾|ît!Ä,,èE([°®]¾~ý*–°²rnfçܼ ¬|!,)(-„{y%¦¸ƒ„U^SSQ[«°Ü1«±¦¡©š4"”qî‡Õ‚ýW€ÀªoV‰î%·#„…¦¶’"Ä ÷¾N°` ô  ƒ„50J@îS$3HòƒÄ‚5<154>1 X°úÀ‚Õ›*ªkÊ*«ŠKKIŠ(XEy……ù„â ÷²ÒŠŠRl¸ª¨ª”)X0@Î")ÂêêÊ roh €ÜÛZÛ;:º»ÑèáÐàÈÈÈøÄèÄäÄôÌÔì4"$ú•Õn¥p'Ñ®Rbä¦`,|ôÉ>#RFÿx@q¾ÝRá2ÙyD¹Ž¬®o«çÐ&ªt`"ÆR%êxïZ·’œéÓÃŽ_ËÎ S¢M ýæØVšüo@tÏj°Tª{Êa`£r(Ò"hØZLÚ¾0$2‚vK­ß‰3ÿ°Ž&|‰IÔ½\TZ‘CyYÐ+H*F‰µ)Rj²43W\@"Æ2§x— -ÇKR¢HÔ§&Y]ˆ[ W‰—„‘J¸—&&¹<î[J¬ÝaçN#§h1²žF7Û$¨yvam#ðÇ?}½»O$S;;G'w¿ùÖ›ï¼÷è·vöCÑx8Å -I`}ss+"°,â:¾swmcÄjÜ@Ðãõ…‘DzÄ–$Ø„°J$Rð˜JEã‰Àö¶Ëë…6…v;kÃcÌW¢â»S‹•ª”¸ŸŒ¥bQT„9o$Ö”%SßEÚ PV¢d•ÈhS2öJRò§Kn)ȃ°¨l%9mX#Û ‹åt{ÐpcÕǷ¬jVë0V7kɾ¾µ¥¸­BáXN84^ŒÆ“Q8oi,‚f•ÞÛßÙÛGW -½ƒôî^"µM` +^l­¬nxý+.¯OtÞ‰ÞÛ¿ŠÞh{;‚ö³»{prçÞƒ‡¡Aá»ï¿ÿþG|øñ‡0>A ï¿ÿáÛï¼÷Æ›oß»ÿðàèÃüC«XXÛ -E¢ñT" ¬8zÇxz;Û=8|ãͷпø‚ËcþÙc–Yf™e–Yf™eÖ W- züÍo~óò+¯üàå—ÿîïÿ¾®±±7"$í)Ë]Ͷ5YÚšZZ5DwBq§£¹¥]¶`•–Wdß̹zýÚõìì‚’’[yùW3Á‚õ‡óçGfdœ Ö¥‹—¯\º†%¬¬¬ë7²³snÞ¸•{óv^naa^qq^1¹c;¦`Õ”WÕTT×°)BèEXOƒ„h¸°j±Š…-uMœ"l•[¶aV+ñbQ¢{[GKG'€Ü!E8Ð;0,¥áø‘°”F„Ä…5DŽŽc Ö@'¶`¡·¨Á¬’²òtЈ0?·€‚Ü‹JŠ™aEy•¥À¿ª"‰ÂŠj’Dk@¿V}}}cccss“Åb ¦`õõ÷  ŒŒOŒMNóeŠ»íá¾Qr-ÞDB¤ùVÿ•Í°c ]#jÑPžK%X¸“&'¨H4úguìw¦“Qû6íàó}úŸ`„r2üQQQ6-I³ó³ü{û‡0ŽöÑØ;8DwE"½‹§BáØfpÝ6èÞÁú•G9^4¯ßQAôh‡G§§wîßðøÑã·¿Çã·Ðòƒ‡ïÞ{przowïÍa3O×êúúæÖv$%m/âd*KEã©Ã£óϳÌ2Ë,³Ì2Ë,³^Üú«Ÿþôß` Ö˯¾úo¿÷½kYY”ER„míÔ|EYî*«ÉÒÚÈP°0‹JXh›Žî°`Õ7äæçefg+?¿°´4ûfNÆåKç3( $¬‹/\ºxñÒ¥KW®Pý -,X9"¼u ½ -KX„‚UVR^A(î@Áªª®¨‘-Xµ¸a]} PÜñÛbŠ{]S‹š"$±äv„„ˆE¡îàÂêìníîíèíï½ûe ÖàÄø¯&g€åN,X“øG `MRûàpwÿ@kwwS[[]cš[iEeQiiAq1€°Ðá¡QTX\\TRRRVZZ^VVQÁ’¯Êe;X°ÐSUU"¬®ª®­­ml¬kllljA—€HX]=½@Á€!úZJ,X8B8?»°ˆ#„v«Œ]Ò8HÞGµÖÀ—DI×ûO°Y°ôým|#< ÊÆQÓY”:ÛPÏñœÆFÙ=Ë6ç[ò9ôÄ'}ç;›†ò¤ÆëDin öØôøqÆ"ÅË/Œ„«76ÆÈÄš”l:…Š3©½ÿD5(Ç:£Õ_DÍZ‚1ʦQo½7‰³c±5ó’ƒ{k³lçÚÕI|,Qи¡XéÉa ³xÉ8™ËÀX¥jœSKÐ -hª§^ öµ',tïòÊV(K¦Ò{ûÑDj}cË·¼ìÈ$ïò²eÕãó¯on#‘ÔÎîÞáÚ,Ž gEÉ Â½uEƒ9à†}Êz#v9H^Ož?ºý–Ðï»Mýe_²ÚSéÝý×ÿŠDÑf©t:žHnÃÜÙ¶ TaG$X ­ ±FÇÀÕiЀÖtVŒ1OÞR"Â{YÙÄŸJ_—Ï- T?‹TSfUÙIHX³DQ`ƒ„¢“äåŠá(³?‹qîÄÊË¢Ëít{¼¾¯Ùíó{—W}h¬ÛjucCF²C'AE¶;f[ÕŠÈVÜI¦wST¶: ²•¬YíÁ88:98>AhýÎÞA"µ‰%ÐÍ°±\^[÷úW$·Ãð¡‰Àöѱ¹ÐÜ–WV7è½£ñºÌ»û{ûGh'‡G§Ghß985=53;37úÕ¢uÁjS(îjÇ.I±:Hª°ÃHX@ºÕ˜Ê.Øt]ÿxç—›ã¥$‡‘9Ê¥—›žZgLP:˜¶±L$(½íÎvI‰Œ&}tΡF«˜·èåw^2bžë7˜pY)*(ñ¹ÂdåT#ŒÅÆêÃÁ‰|^Œ‹õéÒåÐkDüÆŒ>v悃ë9ž.½LÐ Ö9åÐÁw7p°BçƒÀíõƒ´»O¥×7·D§saiiaqÉjÃØ+œ(\²Ù­¶¹…Åé™ô(9ÝkP$–ÚÙ‹Æþµ5ÂBǢĘÇ$Í gÞƒÒo‡#ß|ó?v÷¢`¬ÚAó%zG6 Œ&ƒ¦fûèñ›û‡Ç¤kaÔŒ$Ó‘9Õ²µ‰Èt*h]vX©sß6変¼Žq^9l—() Ú J«eÙh•¨m&¨:H)áJR=W2ÌŠìM†½KÊ„I‡AÑ I=—Ççñ-á -B‚«þUÜ -p=°º¾IB‚4!°U0 Ec8$HÙVà¶"²Õî~zW Ù -+WG'X³:=89…ÇãÓÃã;‡'wÀ…µÚÝ‹CgÀøæv½oy Íô+»°°d[°Î-Z—lVôjt¹}¾åÕÕµÀF ‰ÅžI4%#Ñd8Gk6·¶×7¶–WÖ\n/:@§Öúæv8O¢F"‰%ƒ‘ØÁÑ1úÿèôŽùgYf™e–Yf™e–Y/bý7"üÑüÒ+¯üÅ÷¿áÒeK{äÛÛÑÄ É#×”° GÉ# ¯ZZê›°»I±`uÖ64ÞÎ/¸–•yåúµœ[¹…%%Ù7s.‚+ã÷çΑá…KXÂ"¯_Gãz±`ÝÊɽM,X·‹K -AÂ*Sô«RàœcýJ¶`Ub – ÂÂ8÷&ªbáÁš¯¨„Ö¬fP®HœP!º7·wZ:»•aÏ –°FFÇÆÇ°„E\X“ -kS°°kx´op½ª­«1ôÖUuu¥Ðˆ°4¿¸øvaanAAnA~^Q¡bÁ{eE)¤1« -pîåUU \a„;Ö¯ªjj¨„…Aî-­ólïìêìééí€áð04"œœš˜ ‹Dç—¬J@ò•~­“%,ÖfãÀÍå­2×ÝÊý|”Ïaå› ²L*6I§¡ËŽ,.‹'o€CI\FO­X“Mg×Ѫ^‚ ¤ ‚‘H¥ šéâr®*Žïäà€âÙ÷È“΋Kª§È¡…~‹³“Ý¢Rƒí9$>ÕuÖp0§Â¡ -\ÊN$ ¨J Ž9xALu[)‡c¨n uø¨ -˜À4VLãçãDžKÑOd1JÖ‚"ë°2è÷ÇÎP9Ÿ9Q¸²¶´óhÔíõ-,Y!['()6¼=ü(:]ÛáÈêÆ&8²ü+èÙÙ¹ù%›ÝåñEb‰½ÃÃP$*H.–°4Lî*¨ýøȳä$KhW÷<|òìX°Ò»hJèŠOÏÎ µNáv„žÍàþáq8–xz'™Jo¶$·‡$•3©ÈJJÓ!_ ÕÔÄ¥ñiE•XÅ+Wv™m¥ÍôÑ:Unû3ÿø1Ë,³Ì2Ë,³Ì2ë­ÿüÛß¾òꫯ¼úÚÏ~ñó–V¬\µ «½¥­C±`5·«¥MQ±,Mè±Å‚À‚…[’ÑÖÙÕÞ¬²òÊ7o^ËÌD£°¤ävAÁ¥«W.\¼÷ód ô«‹W._ÆéE˜uóföÍ›7óòи]T ÷’Ò¢2*a‘¡¢_UÔR¡`#îHØTÛˆAX`¾:ù8EXLô«ŠòR칪¨&Íi„°‚*ZÀÂ"*V ¹7Ƚ ƒÜ»ººûúz D8J(XS“Ä‚5¿0¿d]°Ù±„¥°£%ÖØÀ†¼dƒdezÿYÕî{¢>È»°Ô kÁ²qÜuMC:ÞÅgYÆ”6)¦Qrt øt~-Ñ éžF_D-ÀÇ8n&èMDÇ)–66pÇ%þDê•Òz~Ý|Ô>n~JŒn#i›ý‰'X)/Ï}HìK8ˆº`¤}9T±Â!hN‚¨ÇTiTÕ7t{–%&ß'9X¬«¶éu*úF•5t“d“ŒÔPD¤~ÿ‡6)éàÕ9’˜%çÊÚz$šX^]*iÆ'HÜ=&_n› ¼ÿÁÇ|øÑÞáÁý‡ãÉÔòʪ :­VA’Ö›G'§éÝ]·ÏoµÛÎŒÜBQ+9ª3·×÷ä駿ŠÄvö¶ÃÑé¹¹…¥%—ÇóŒ'OÑ[ß¹÷ ½·ýïIÿêšAci®Ñ£¨V©¢®$n¢LV—ouB¦¢¦’”i—X>ó™CnW÷ã4.b¬Ò€ÖeÉ‹‘Î$»‚v2½§³¤Ðpy|D¹òú—}+ þ¬ØjcmÜVÐF0²i#l«H4Ál+p[¥ãÉD -ÀVX¶Úß¡²•’¤š¬@³:šՑ,^)ú1bíïî$wv£ñd0…!èW~ÁéZ² ó‹Ö™¹ù©™ÙÉ陉©™I¹¥ìüâÒ<ð mV;þ˜%qHL ƒž¢ÓfGŸÉâ¢Õ›-¡­$·oe}3Š&bIàóG©p,¹Þ5½gFÍ2Ë,³Ì2Ë,³Ìzq‹P°~ò—ùÒ˯|ï?8w!£­³ËÒF%,Å|ÕÂ@Ý[.¤-$HˆÛ6745×76·´¶wt÷ ÔÖ7ܺ}ûzVÖåk×nÞ¾]T -/]¹r.#ƒ€Ü‰+ã2Žb -ÖåÌÌkYY™97Ж7rsoååçÈ=¿¸¸ ¤´¸@î%•eUÕ0ªkÊkjA¿ÿUô"lýª±H;ÂÚ&Å…Õ\G‚óŠP°¨ Kñ_‘° EØÛ×Ù?Ð30Ø78<0 w°` kŠÑ¯&§G&¦†Ç'q#¾Á¡žþöžž–¶Žúf°`•a VA X°næC#BBÁ*¥¬òÊŠ²ŠŠ2œÄDw¬ÈtT£!§ëëÀç†)X]=½=ýr›˜šœ‘âá"–°” CnO¾ý©_eN¥©Ý ;ýÙx˜•>ÓgÓJRŒJxŸ•¨k§m`gcMj[=-rÜÆåÑ ÜS\—=‡.þfØcNàBvìS9l¥¥'Ø“tjÇVRD3AÕ ´Ž)ÉúäàIŒØ%q¶.IJb,RLß7UD5FÏXaŠÕ789KÐOIµ<9d͇÷”|Ÿƒ‡ÀkLVl8ŽVjðÐÁË\¬i»DÉÁ¢·xýJv7‘ò¡9QòxýÁpØéñ,É€)ŸU—löD*õôé³P$L‚{'w…ÀVðÎÝû;û{Ø%8˜l {Ýñ%L®P¹UÐK$¿úÓ×{‡˜´ŽÅãÉäÑéÓ{÷OîÞ?:¹³t„Þ4£·sº=‹6Û’¯ÅŸ&KI*¥ŠÓñ Pä.á«sV>FØ‹%Š¬!Š¾—TDuíˆD.H—édGTXh{§Ë#:A¶ry½ÿ2:ô™ „±Û*°µ°Õæ6´ÜG·Ù`<‰ÁVéÄÎnrw/­¸­÷ööÕJ–­ˆN…Ç1¨UwÑ#^ +A¹:ÁA£“}@`Š; °BåöúEÉmÅúÕììÂÄÌìÄÔÌØÄä(cã“ã“S“¸·ì4éÍ1¿¸°h…Ïö…%ü¸ˆÖ …™Ùùiü.Ð~’Û¿ºŽ9XÉn.Ža V4NR„ïðùÇYf™e–Yf™e–Y/hýîwÿýåW^}åµ×~ö‹_´uvâ!ª~Õ®¦@VS Íbœ;¸°ê›š[,mÝíÝh}qié›9W33Ñ(*-Í+,ºríÚ…‹Ï_Ì^D?fýêêÕ+Ø‚u-;;ëFNö­[˜‚U[X”_)Ââòr¢_A#BÙ‚.¬!¬ªk¨dŒX5 @Ä"F,$l¢.,æû¯°~UO%,¹+¬nÚ‹p@î`ÁšÀ,:H„¥¸ VW_?ÚC£ÅRÛÐXYSSZQQTRB(îÂ*‚F„…˜‚E(îeØ‚U®š¯¨~U^UE)X55•Õ55uuЋ°©©[°,íí]Ý]½½Ø‚5482:26>>¬é¹y’"\¤,‡]Éï‹2å/ÈÌJ%*h70\±LuÁÎ7ûÓiP‚®Óœ  ú¤sgÙ´O ƒ½ñØsA<»…ŸNÏD4Ž³9 ‘JÚ|ÚwáááþQ5Éö'.AÆK@~‡ç;bU)d¤ú‘Ô,˜E-qÒ“ ãTæÉ.hÅ%ArhÞ & iQ‰•¿Teƒ™Ÿ•¹‹ Ù©>7áñoÞ¹wOr¹<^ÿúx®NîÞEû!êÓv8zÿÁ£µ —LJAú’æ†QÅ+æ…ÍArºß|ëí?ú(‰¦wövövöö±5è-D°´íó/;=nM Ô€§¹…x£”]#7É7†zŒ¢f8UÕƒ½ˆDã’8qLvgÙÙ¡’.d,UòäÆ‚’úv‚L»RâSt¹$·Û9Aô­¬,ÛjM–­6›ÁÀ$ƒØmEd«P4§ˆÎ#ƒ­öÐ0v[Ÿ`ÍŠZ­ˆZ¥D¼¢¬£¹áÚazˆëáh|k;¼ØZ^]w{}‚è²ÚôY=37?9=;>9 úÕøÄÈèøèèÄèØZFkÆ'¦&§¦'&aLMÏ¢19=3 N­™ ´žhá±du¸<~ ¹Gâ"L¦p„0‰6‰™,³Ì2Ë,³Ì2Ë,³^ÜúéÏ~†þó_¼ôÊ+/¿úêïÏëèîQ5«vÕÕ"ËYjGB Œ¦–Ö&™åŽF}SÚ¦£»—4"Ì+È¿žuåúõœÜÜâòòì›7‚uñâïÎûÝ9°`‘áÅ˗ѸríÚòjfèW7oÞÈͽ ¬œ",-¤Šâ -hGXV]SF$,¥a=¨X•u¸!àÜ›p§)ËCÝåü ¬_AGBe&t˜"ìiïéíêëïS„£ a ƒKaaýjjD¡`ÉÑkÑ~ê›[°«ª¸¬,¿¸8¯°ð6:œÂ‚|¹Ƚ¬»°Ê•.„Äs¥(W$?H$¬ªÚÚêÚÚº `5Y,-rïèìîééëï% wbÁ -–mÑFIV*CF’‡üSvg¹ÐÁàZ¸ºÍ¨~F*P4Líñ+Ag”ÏR· –IW>A0tgä$&‡¡ Kx.!œíîǼ)>‡‚CGwLÀJdƒu¼T%ªÒùænçàBÚ:(k}1öA1»RM2“Sž%;»½ÈèT¢Æà ‘Ä{¨ù‹+Ó§Aɲó¨¼È‹c -úÛ¡²X뚪Î9ØŽxœLÄ«gêÆ¢Óµº‰3â@s{½þ•UÜ›O¢"¬Ùe%jaÉê[^ùàÃbÉ„ öIk;÷œ¬6 ¥êäôÞÇÁÏ%9ü[s'_ö˜9¢æ.Bûüìó/ïÜ»¿Ž¤Ó»©4Ó¶¶Ãþ•Œ”‚ÕnÇ7*wQø»…‘’T¡‰»OóŠ$ÉÁ<%;3mW•r½$'«Ëñ võ³N»äd<Ì­(P´»äö8Ý^7¦²CÿG\^ÃA¶ -@Hp+HÜVT¶ŠÄ#±$Ѹ­I*[AAʶ:¢²¶ZÊ vâ­‘êÎ]uȶ«c99xˆXûD¹:8ÞÛ?D»Mïî§vö©ô¦Û‘h ¸¦ç[^uy}˜iæÀª¹q¬PŽOŽŒ£1<:62 - bM]‹ÈYc°0‰Zcãêú‰©é¹…%»èô­¬¡C£#ƒ~Ž%BÑ8zë}lÁzã­·Í?~Ì2Ë,³Ì2Ë,³ÌzqëµþèåW_ýéÏÞJáííØ‚ÕI4+KÆa!Karei%Í–¶F ô"”-X]m`Áj+)«ÈÎÉÁ ÷ë„‚uõúõ ¸pþ÷ç¡!¥`]ºtñÊ•KW®€~••u=;;;(Xä^[X˜_\L–€ ô«ÒʪRpaÕb «+WuhTãv„à¿ÂùAâ¿"B@ÝAÂj®kV-Xʲ,dYäaWkWwg_gß@/ô"!)Â!4Æ'‡&¦†'dý -"„ÓÃD¿ïí -V?zy£¥µ¶±©¢¦ÍYmDXTˆò - ‹‹ŠKKˆ‹¶ÄB,Xÿ•üXÖTWÖÔT×ÕÕá^„`Ájmmíèhïê Vÿ@ÿà X°0kbz}‚€É’uÁªZ°ìT¿r‘AÌ ô›¾ß"'¬”•(‡ž‹ÎÚ™ÍD»¶Ý®÷bi;÷iVgÉJ‚atNÓFíL6×´Ü“ÈmIEíÊÁñ«1M‚¨ñÕ(ß蟒¤~=XTµ¼™È+<”vÎh&‚¨qÈhä,ŽÍLC§)‰œiÊa(%9T™KRÓ¾µC“Oä¶T_õ/‰L÷C‘;3lb‘WxX›¼žI)rHyÅMÄy¦çÈñÉe±H%çîþ¡ävã~¢Ëã ·E§KI€²QJ«Ý±h³9ÝÞõÀVzwÿèäîv$"ºÝèåÐ70yûw#±èò*mAøþYvHÚæì‰ -LŒw(©”{*»‰ÒÞÁáWüÓÁÑq0A»µä` lr°)Q½:våx¹‹%²duØÎìédêpˆ:_–dgˆXZ;·s'#p9ñKhºYtºÕ–‚XãÂx…› zjî_ñÊ9Á‚dl¢óÙV¶Ú -âœ`$ŠÄ"±°­â©8q[íì¦vˆÛê`[­ˆlu@­V§ -É -KU÷Ðã <’Á‰Wu…e+â¹Ú;8FwÎÎþAz÷ ™Þ‹§w1Š*ŠÆ6·Ã›[h¶ß²äB÷†¸°dŸ[œÂáÁñ‰)0_ŽÁãÈ(hy|‚®!c\~ - \h aÿíØÄääÌì‚݇¾5 rÄdÿU,–³Hô_cþÁc–Yf™e–Yf™eÖ Z¿üÕ¯þ ¶`}ÿ¥—^ûÑþùÿü¿ºúúH/ÂÖöNKGÕ²Úݽ͂-X°^aµ6·‚ « üWͲ«m_×Ðt»  óÆKW¯dߺU\V‘•““q 7"¼p Я.^ý -ƒ°HŠðjf&z P°nåBŠ° àvqqîEXTZN"„¥UU¥•Š~UW©º°€… ÷†F4j›šÐ¨ihªÃF,,X„EÄ«Ú&¢\µ*„‚Õ„ ÷"lïÁ)BÅ‚%ƒ°†Ç±k‚²Ü -ÖÚF±`¡óÐÐÜR]__^¬ rÏ+,€a1D‹JJÐúÒòò²Ê -…yUYMõ+YÂÂí«««jkѨ©««;M¶vt¢SÝÝ××70004D@îã8HB"„è»Ì¢ÍNb€J↤§ËÁ6£'+ñ·E#+Ù´*–ÈwlšŸ^SR;êT,]ÜÏ&¯±)`mM> ™Ü¡ÃMë N|Ã;5²§³6©†4NÂt-üQѵT!K#©®! #Hâ8¦ A&H«<Ž•![°TÎÚOör…ö ²ÕþAjg7‘Þ‰¥€ ûšLt Ä«àÊZÀë_vº=èÐ(¼}v~ëW£`¦šÄš–­¨`5AV#äql‚l (WÃ#£Cx@„|rzfnÞ.Jèü‚!tø˜• Ñ9Äv÷Ñ¿øï½oR°Ì2Ë,³Ì2Ë,³ÌzëµQ VK{GkaµRåª]éE¨„ -e–°0 ÷"l©o¦¬ŽÎn´²´¼2;'‡¤¡™`1¥`a Ö¹s„…~$*X°®]»š•ú•œ"¼•_˜[X$ëW¥´!¡`UÕ”×@Š°ª¾¾Baáü nDØÐTÓ*k¾- ®Ðrƒ¥­NŽ’î„hM½ÅÒhQ,X=í=}}rïÖèøÐNNNRýŠiDˆ6¶Q VceMm)¶`åãF„yè±°¸ô«ÒRäŽÝVxU]͆•.„h¡ª¦¦¦¾®ƒÜ›,­èB´wvuõôööa -ÖðÈ0X°¦'€‚57»mLqçPíѯœ.&ƒW -²ÃDµQ©¡9‡†¬®1&ÙYõIÏ•»¶õGÊrò©ðËYØÑ6B—ó쩳BR¬‘IËåf%Ö,$h}ðJg‚µ¾&^a›¸iÑOŒŠ•Œ$mªNo¼µF)6¥e¬ˆŒñIÔ™»t.NÇPùE’1šy„!°ñf0]h‘Û€ÓèIM5/g­bœˆÇj‰´5!÷Öè6óùWOîÞ_^['giemãàø4º¼^A‚¾oÐÎO”ÐúäÎîÝûï>xŽÄ’„ÖÛ€ÿÃá·Þy×ã÷-ÚlV‡°¼ºþäɳþ‘^"WNÏÎ~øÑÇÓó³^ß²Ý.°n4;Ž™¹Èé¢"„ƒ•‰Øœ ¹šNÎ -È -MŠ~å8U“}/µ3 Nå:AHÜÅâ~œJKAAtr³Å´+ºK肼14t{<¾e̶Re+tæ‰lµØÚÜ"m£ÛÉÃ(ê¶Ú•e+lE¬VÆNe+ìª:ÁÊ•"[°ž+Ø@‘­°rE WG;{‡é½ƒôÞ^2½O¦c‰t$žG £…¢›Ûá@pMM…Óãwˆ.tW,,Ùfç§fg'¦~5J€T¹šP”+vŒŒ3Ö,ô‘,^Á‡ÿÈèèÚÍ,ڭˬ­P$K„A¿JbÿU %“‚e–Yf™e–Yf™eÖ‹[?ÿÅ/Ðã_ÿâ?x饽þú?þó?wS  _GÉZÚT9 œW zýª™P°ZꛚšÛÚÛººÑuM·ó‚uõú5 `••ß¸y+ãÒ%ÒˆðX¿:wñ"¡`]º|ùâ•+W33¯ ,X·næååÞ."K -KËT{5¹ÿDk1«ž -Y5Mà‚aN¶!K1_)ABP®pŠx±-Ô‚ÕÖÝÛÑK-X}C#ý aÈ}ˆaMɬ± LÁ¢¬Žž¾–öŽ†f ¶`Uƒ«¤7",ÈÃ÷‚⢢R"a••VTÂô+ -ª¤úõ_UÖTWTƒ~U-XuÄ‚ÕÚÖÖÞÑÑÝÝS„`ÁB_a&&‚53;‹)Xj„ÐÁØ”!–°X^#Ù´ñ:†X%È\,ܡϦMŠ :K‹Ò»˜ì‚`×±ž:ê«hi—™fylHuï(=þdÈ6C®f·çRTœãGqY?³EÔa«y5I»OIó­ŸEjë].vVÌщN¼¶Ã§º^Ç€Ò(N¢Q”L3C‡š×cƒf:ÝI¿À'ãÔ}: ÞK”4Zs6D5¤¦»ìZýJ󎹌I˜Ê—ÃæÓ;{ß~φ7ó¯®Åb ×·º¾î_]± ŽÍ`(OÞ½ÿD:ít»æÑov9:ɯäv?züF"•œ]\p{|ã“SÇ'w©„ÕNÈ%›}wÿàøäÔíõÙílþQÖÓD>Ë)JL¾R“”Ô +—Ñ©d„å,;ŸÔàÖ9-Kr2ÄuÑ.Šìƶcc÷`ˆ4WQêMÖOUuìlË?‘Ç‹š¤•äÐèW:•†‹êÄ"K%õnÓ÷ô°tÝJØe R=ïDíš³ÞN8kWšžq†p²Ô)ÝœÏ>âCuø6éLÿZ­îgäø¢{]ÿ[o¿{ïáãù…EÑé -Gbo¾õnjgo=øü˯Þÿàƒ{íìï{ýþùÅ…Å%›ÍA‘Pª7O”­ÖåÕµ'Ož¹})´óÍàö_~Ž'°˜#­6?ýô3ßʪÍ.02h (iNŽ -%Rè~~ððÑñS·Ï»d³A„PrtÙ“o6A’ööNïÞs{½vAðú—ßÿàÇßt¹}З0°ùÉ'O#±ä¢ÕÆo±sò>4''@iñ_ºdŸC4º©¸¾~œŽ¤Ê³’,k«¢sy'§–åî”{CÐ -ôµj³EÙÇEg"àœ 4ôú€Ê¾ ÊÈVkk$»ÜF0 GÀm·UX ¦w°Ûj: ‚lu²ÕÑ1í!xrztŠ­Vwî²òQ«ˆl¥ ÕsuJ!W2á - W̾²ÕÎ^G£`¸ih+Þ †ÐXßÜZ ü+¾å·o™ÈV‚ävØve³Ï/Yçæ¦gçprp†U¨`yr­œœžåÇ Ùrlœx±(‹ °ˆ~504ÖÚÍÌü¢}’ûW×ÁÐv4ÎêWA4ÝÔŽùYf™e–Yf™e–Y/´x…üúë/½üÊ/þæoê›Ú»º@«£¥d i¨°¥•äISB¢bu4 â„ Íh474·´vvµut5[ZË*«2s²!˜y­ 0PhùÂ¥Kç.\ø¿Ï V‰f\¾|éêÕKW¯A„0›R°rnßƬÂܢₒҢ²òâòòâŠòR°ª±«¦²¶®B#^Õ7 @X 8?ˆX [ÉF¬º&U¹R„,9QØʃܨ„58L{Ž+ ÷)Õ‚5>E,X a uáF„Ô‚U[[VYY\ZZwhA˜WHAî%4BX®ˆWŠÿª²šB±”^„!d$,°`µµ·a{O_¶`A/ªÉ© lÁš_X°Ú¬„â.Ò/’è['(W UaýÊ%«(.²}á‚ÀÈA¥ °TúN6(éøØ T~ÔÏù½©™5ÅI%jÑÜ\jO–bÂwvƒÆ|FÚ¯½ØœøÙî ôIŒâog˜šÎ — 2ú]Ènì|D#;–ólaMüvs”¦‹Ü·+QN#‘óŒ·pIj"z:Ss~›­ËÉ¿ G”òú—?ÿ⋵-úYr¦Ò;Ož>õøüó‹‹+ëÏ>ýÜ·²¼`µŠÄV¤xŸ0œˆÀþ•ÕX‹8<ÑÉôø–½þe\_^Û¶ÕÆæúæV`3 ÁmH‚lÅ`«8ÈVÑD -ÃDzWv[ììîíAÁ“}¬YB<ðîæ±3V+P«îÜ£dáT¯\ʆ+%'xp´³Os‚‰ÔN,™ŽÄáh<¡9Á­ š6š<: -Ÿ®|8'è² ’ÕîX´Úç­s‹ÖÙ¹…™ÙùéÙYP®¦eçÕäô6\MLÃÇõôÌüÔÌÜÜüÒÜü"<.Xѧ7<š"dMNcØûÄ$&½O Ž¡ü,^ â126>93»`µKnïÊúFI¢_aÿÕV( Ç¢±¤ù7Yf™e–Yf™e–Y/týÅ÷¾÷ã×_ÿÁË/ÿò׿®©oèèên••+F¿jgèíÛAÂjiml¶Ô75×76·wu·wv7YZKÊËoäädfg_½~=Ðå%`ÁÊÈøÃ…ó¿;(î2Îg\ NU¬Ó'"±’#HΉééwß{Ñf³ C¿ o½ó΢}afnÞjw¸<ž>~²XG8ÝÉå&²ÕÞáñÝûNîÜ‹Æ¢Ó9;7·€ÑXh›»÷îõÇ?½ýÞûÞx+šH’[Îã]>¾so3ãÖ·Þu‚¤—žçXSÓÉ\Gu‚&MÉ« ‚SŽM:y9T{ƒ ²Ç‘µ$ô‘‚Î…ÓãuûüÞå¯wÜXY ¬ “àÆæÖævr‚¡°"[…Ù*©ÊV;û»˜Ç¾`+ˆ*0vŒ´º{¢æ©Z¥D¿"+œ.$†«“ƒ#Ì~˜ÞÝ×äC‘x0Ù -†[ÐOpm}s·Ã–­ « YŽ%›cÁŠÝVó‹³ó 3³à§šš$àäˆW [aÃZI„)´ÙüüÒü¢Ý9‹V؃Õ.±d³/,a ímnídóÞeŠûÉ’1<:615=·¸äÀšêÆfp+QÄ«M4ÿp‹ÙˆÐ,³Ì2Ë,³Ì2ˬºþ·ÿò_þÝ/ùƒ—_þá_ÿßÿë?ôô ´vt¶*,¬e))B²F±`5µ¶6·¶Á°´V=P°Ú;ºzЖ¤afvÖµ¬Ì¬œœâ²²· áylÁúà -Â:é¢jÁº~ýjVv&Žf -V~Qn!¶`•”––A°¢¢¤²ô«êšŠÚZ - «Ž6"TXî UõµM$EØLYU×lQ$¬: -r'YB ¹CŠ°µ«§[°z{‡0È}|(X aa ‘°`` k ½°¥½Òˆ°¤¼¼°¸8¯¨ðvô"Ì/ýª°¤¤¤ô«2u¥´ ,Çòƒòzœ1”Aî --Í-lÁêêìííéïǬ‘‘ñ‰ ô]i,X³Ø‚euV•âŽiíN¬_9©í -¾º:) ¾oº7¿83;?5=;61=:N(îãT¿›œš™[°ÚE7:Ý-|zÁvµŠb +Œ~<88Fÿè?}ö©ù—Yf™e–Yf™e–Y/\ýæ?üôøÊø£×_ÿÞ~ð›¿ý۲ʪŽž^°@¹ê”µ,jÄ"PwâÈR,XÍ­mM¸ac‹¥±¥¥¾©©½«§½³ ­/«¨Ìʹ¬L°`å+S°È-œÏÈ@k2° ‹D¯fe«¬¼‚Û _A#ÂÂ’²¢²²âò -ˆV˽¢¦¶¼¦¶‚d i/BâÂj¬nh ½k‰xÕˆYî8Kˆõ+j¾ÿU³…Ź7·ua+X°úd ‹X°ÆǨ ƒ°@Åd,X#£hKô’6BÁj VieeQYi~qÑí¢B!,)B?‚«œP° a¥š¬’¡X•„‚UY]]US¬º:ˆ6555·´´¶¶uvvtww÷öõ  ÖX°fgf•F„˜‚…³~J BÕ…E@Xø«(YßËHŒŽ®»Ÿoî¦F Ùž€QãÞQ+¾ž.eg2MvC¶ùó…)­é9~§‘­Hü®. cuål9âyAÃ4ŸSû£äûîí/¯­-X—æ±lESrÊý€~œ_\ÜÝÛß;8\^]'\wÑéEb‘XÜ*›¯õ–ÐÍÍXurV+Kêq·.?ææÁfKQ¸DÉG¯eÈ3 AEO»ž9>F§ät¡—×ç]^ñ¯ •­’=ÜÞÂB -I·…b1°ZÅ“±D:žÜIìì¦vövöv÷qHðÚî+meÙŠ°“làƒ3†l¸å -³Ù±r…ö¶x²†+ÒOp?™Þƒœ`"†+Ì<ß …7·ChÂ8'ˆû úWÞJ$²• -ÙÈ .Y Þ -ç±Ûjff[­pNp†*WÓhýìôÌÜìì<ÚxnÁº`µ-Ù˜xï´g—Çïö.{ÐðDærû$—W”€¦µhs w™ž',,@`Œ ¡‡±~528<::š’äñ-¯6¶Ð©ŽóÆàÇâf„Ð,³Ì2Ë,³Ì2ˬ»þûï~÷—õW/ëGÿðOÿÔÝ×ÏÈVTÈ¢8,ÌÂ"m -eVGKñ_ VK}s3X°ºÁ‚USߘ›ŸŸu#ûZffvÎÍ¢2 `]ºråü… ¿?îàºp.#ã<îE˜qé4"¼~ýjf&¥`åæÞ¼—[P˜[T„õ«Ò"HV Q‚õ«òP®Ê«© ‹Ñ¯ªT–;¯T„»’(ÁŠuaµ(,lÁê°tu·u÷vôöwÓáMªÖua~5¬‘±þá‘žÁÎÞ¾–ö΋¥¦¡¡¼[°JJòŠŠnäæçæc ‰VUV€ÕªºóÛY -V…ìÅ"YÂêºZ"a567Ƚ½½­³³³@îýƒƒ#£ÃЈ°*èûÔÜ"X°p#B4²§ýµ)By -Vº=ä¢z«”f‚j*PÉ”©YBüèà!êZ¸4G”²öõ3Té»ú£„ÿ7)KÒÙb”tVžËyfXÏÀƒää`M³Rkyrž=æ)UerjeU‰Ó¦Îð_Iüô”Jg)]N­@$Γ ñI²8&fJ0˜ÓB¤ÙjE—%ý™a4·3ýZ.þ…NÈéœ_\ -Gco¿ûžävIn·MÖ6‡G÷>Lïí¡_ ·Ïÿö;ïÆ’ ›Ãaµ;¨ ‰îÇ¥ëlÑãó/X­6¬V¡ß2ôc,‘”@16b[É{Àê:+Õifx®æ¤P%œ®uŠ¨þü¨ïîäÈWüýn+·»­–±lµº¼¶®²­4Höh,M(HöDj'‘ÞI’·<8ÙJm#xG¦ZÝU+춺{ÿŒ3”+BhÇÊÕ½#ÜU WG§ûG'{‡»ûjN0•–e«h0ÝÜ -‘œàÊúÆòêºwyÍã[v‚”äA—}jY‰lµˆe«ùÂZŸšDÕ$6\M6ûV±¦€|5EÀìs ³s‹s ÖÅEÚ ÔD—äÙÊã[¡L°Õ<ÐÂòʺϿ -^/§$,«½#úTÖ8F`~5B-X€À‚áÂ’Up¢ý­­‚›ÛáMì¼"# m…"ßxÛü›Ç,³Ì2Ë,³Ì2ˬ´þæW¿B?ýÙÏ~ôúëñýïÿíßý]iyEWOo5_ÁhÃ,Ðv„íí-XË¢úa5µ¶6Z,Í- MÍm]h4YZË*ªnܼy-3óêõë·¡û^ñµ¬¬ó/Å,a]¸pñâ¬_ ë:€Üs²o § n—€~½± (X5eUÕØ‚ER„õ4EB‚a¤©xÕØT×Ø,›¯ZôMv@Š÷"ìïèꛟb,XrŸŸïíêêï V[{]s3š[YeUQ)X° EX˜»Q!¡`)÷ -…‚,Ìr¯¤-™î„ÕÕä^ßÔÔRa[kGGG¶`õk˜P°ffÀ‚µ€-XT¿¨ûÂIÅ+H bµJva¹°ÿÊ#¡rHvÞûÄIO‚¶Éva5GS³KgËJÂÙ­ëžÃ›â…ˆ3AOâwixgd†‘X§“ËèIg MNãýKFy:­2ãd|Gz•ÆÉ \©Êi$äeC?§/}÷¤S»Ofu¶¥JÀQ;åMÒ©+psR±«^FÛÓ•\®M ^#ödêD9Æ4µd³§w÷ŽNOCѨär[í¯9‰¢5§÷î¯nl¤Ò»‡ÇÇ6Apû|:3›“ŽlI"¿hÞå•Í-·×gžXªE§ö:êuNÝMrvLÒI“ƒ®¤; Ô?'§_©qBò£SÂ.OF²CHpuÀVÀ¶Ú -R°E²ã6‚±D4‘Œ'ÒL·Õ>¶Zb;•­Ž€Ç~‡ôd‘Vwï?¸Cd+y >þÍû>ÏóÞ°[û£úÜ÷¼B±@àÞËÐ…¾ßÏsýÚoÄ!D°D ÖýÜÜœ¼|¹?‘{i ",/#X¿B„«ÞH¬D‹[Ü›š!|…,Ò^54CËØ"&²ZÛ[_¡üŠ&J-ÂÎF°,ÁR¶ǤÌ"œÀY„SàrÇL@k"Xì³:º,Í`Áj®QF°JK‹ÊÊÐio0TVTÀ B°`)„íõ(rGE¥Bö‘úz‰_¨EØÞÞÑÙi¶X¬=½½ýýýƒ`ÁbïcÆ'§¦È‚,'YÜ)Avô\¼ZÀP{÷ê—,îÔ"”¥ëîÏš'Ã% žNH Ÿ­7ÿte÷iq >“ΛÆäNñ;¥’œSr>ŸÙ×ózS¢>éœQ^Wñjj€¾4.w¯Úû¤BF¾ÓÙ‘òñ>-"û]›j~âU½”¸—›Ÿ”/ÔòjÃT4§©ªh¡O{5R‹Œb”Ÿâöjól^1’$“.ùy¶w÷Ÿ>{gÿðÐ ÙNöÁP$ºšLž8·UJC°•¢!È­V­zÿÃÞcûƒd~¥ÆVl?£ª Œ­ ÐuxL«£Ýƒ£í݃Í=v`k„­ÖÖ—°'Þ*‰úƒ¥­?Ú®…Eôçffç§msÓ€­ÀÊ>!¹­(y5ÍUí¶²ÍñÀÕœ}~Á±`g¿„Ásåîð¡p4ƒë–X^[^]_]ÛXKn®'·àº%·×’[ì#+¨ÞbÆ.µ×rº¼óv‡ [„£ì?@#cƒC#À¯‡G†FÇÙÁØØ#ØïñP*„+kˆ­^­ñ½±½«[Üõ¥/}éK_úÒ—¾ôõû»¾ûýï³Ûï|ï{o}éËÁ*¯¬´`«³Ëj’ƒX rWÜ·´“ »„(rV«ÉÔŒ³ÍÖžN‹µ¥½£º"Xòrîå<(*{ùƒ¼Ü›wn¿}ãƯ®]#  ¬[7oÞ†A„là Âüü\¶ ÄaYò+hB…°"X¼EXg¬®7VC…òWT$d÷ëÑâÎ[„¸erÕ†þ+©E KŠc5ÎÝ$¶¬þÞÁAŒ`Ž£È*„P$œœ¡;Óƒ£ã0ˆppØÚ×ßÙÝÓ†¬ºÆƪÚÚòªÊÒŠò¢²ÒÂÒ¹—Ê+È‚UUSƒB®À¢Y„°±EÈþ(·\äÞÔÒÒÜÖÖf2u˜!‚eíí¥A„ãã4ˆpÊf³Íà ‡ËárÑB±? -¢VlÎÂD–ÀXÁ’ýTÊ1‚iKyîß¡µç>•€ ¿£€ýtù’pºß)ÇÉ›šÃI Òœ’Jyu·‹ò©`‘vûä@”WÝêJý5–IÖ$0¥ ƒ nííù\["Ó„µ4¯èÓž¾æŽêô5ð)ìö¦Ä‡¨¾šzÀðT>åÓºÓ>§|4ŒKÓ@LC)}êŠ%Üaßáì;yeíðøäñ³g+këì¯ììÇÇí †Ãñ¥Dt)±¾µ-ƒ‘x" ð_æÆ–Û{ìSØ•-:Kƒ›Ò5"•dCMEÜ©,N~ZŸF)>.g±¼¢lMu)”`ŠŽß-¼OuqTA/åѦ|Ó°>5ËÒ~íø}˜çõÃöfgo÷à0±²æp¹aš§Ó…ËuårHLÜNôÀ³‡£ñÃãÇ{‡‡PX1ýSÞîô 4]pN¡òåõºÅgp§q É ¨‰GùøµÕ„Ö¨)^öTXÊžÝV€­Ä´`«Xb™O\__[ßXOÂAÀVT„I‚[QÚ -¬ì”¶zòΓ§ïˆi+¥ýeÎJÜã–þ¨˜*øÞÏßU’«÷PÌÎç I+³°Cb‡§í Æ¡p,Š€cŠý„Ä)ûò¹í…Þ -°8¬pž c+t[¡•}f‚ýí´mÚäjvv¦fplåÆ §ìòú©*FƒáX(Å—•ä*  oŸäîÞÑÞþñÞþÑîÞá.ж°rÂÚXJ¬²ï(Ár¸¼ìئmscÓÃ#ã¼?80„üj|ljffna=È Fã±å•¥ÂV°x»º¾¹±½£ÿkG_úÒ—¾ô¥/}éK_¿¿ë‡?úÑ`ë·Þº”™ùƒý¸¼ªÊŠƒ;-V“è¿’þ¨ôºÅb·È¯€buv6···v˜šÛÀ‚e²X[ÚÚ+kjróóïå<¸÷àAaIiiEÅý¼Ü·n]¿y“ÂW×nÂ-Toݾu÷. "ÄanA‰Ü•”>*-+*メBX][QS[Q[[U[Ï-XF²`5"¶"‹{ ‰ÜÍ-pÛÂ˃F^$óWX$$–…üJn¶všÛÁ‚Õmîí³ôõ#ÂêA‘»T!$ Ö„8ˆDîÁ0c«©µ"Xuu†ªÊRDH-Â’RƒíòÊ -DH¬Ú1y%éÜ9Ū¯c¨®««3¡EØÔÔÔÜÒÜÚÖÖab_³µÛÚÓ׋¬¡Ñ±‘ñ ööjÆ6k›—*+„~,¹ðJŒ`Q»ø{ߪø™:ôÏ´—Öjî=½Ó—N“ž*‰JŸJJõ8 Zá¹ò‘ -‚¡Š¥)©‘ò#Ê“âoÝ6åM}˜”ÚòÉ\HÖR6Ë·W­+—žG ;-¦DRŠVš7…ƒ©NM›ó‘žÇÍ©ˆÀmí‚|_}šŠX‘6O%ÎËÓ¶(ò¹U‘6_:5™bÜžlß’Ðà–ýä^uTÌE«kGLJ'O¶v÷¢±„Ãéf?PóvÇ¢Ó‰!+Ûv§sÞnwBF+ºº¾ñäÙ»Oßy7_‚ñŠÆ%—G¹EG½Xñ“®LªIŒ8•ôe§-ø”Jqî‹óòË!4ï ªø˜Of†ÊÞ%Þ÷úü¼$ån+1m•ê¶ÚfEn«=ÙmEi«£ÇORJ‚ï=C»dµÂ­aVÒÆÎ Ä®äê½ 'øî{OÈpõ”WOO³Ý;<ÞÙ½ÕæÎÞÆæÎÚÆíÚFbe•$žÞ*â ‚•Ýƒ×ýn„À•W¶¹Ûô9¶šFl51MUAt[ÁÇqž ‘+.fŸ[€‘‚˜¶b—ÔOSý¨gD©e¹²´¼¶¼BmÁ­äæÎÖÎÞÒªýöŽã>Ù‡‘ˆGÛ;û›Û{kÉÍÄÊz4¾ìEØ3³—`¯8 -¬ P` c ùÕäôÌìü<ûŽô‘Xti%¾²¶´’\ZYOÐ^…ûìÊèB}éK_úÒ—¾ô¥/}}Öo¾yùêÕ‹™¿üõo yeí6[¬fK·ÙÚMJvÚb«Ãli7›;h4a§¹µ£“‚X-ímàÂ2™­Áji)*-½Ÿ›{÷þýÜ|Œ`ß¹ÿÆ­[o_¿þëk×Þ¾qý:"¼Žƒa=xp7'çA^^nÌ"dX\RXj(2”s‘{Mˆ°jªêê+ëêªêù B Xȯ¤ðä¯ZZ^ñ!P,Ò¹7¶j£:!,©QØÖÜÑÉv›ÙÜÞeÅaŸ¥,XCýC#\ä>61<>5 kŠG°&&ÙFQäN,‹•G°Œ b ùµË †ŠòŠ*l¢KbVÜ…ò+bY5õr. 65±kÛÜÚÖÑif_KwOOßÀàÀÐÈðØøèÄ "„–}΃F=˜#,_Ú‚bKV`  /„·Àn…«*M+ÐwjSÏ+üÒª´þj!E%äÕ¶½´©'ošÖžGÙÒfÔ÷SŠ¨ƒUiZl^-ÿQÝúÔa$áÔíIeB -’ò)·[üé°^ -/R<³/¥˜rR*°¦r}/¹5'+N”’?Êú‡0*ƒ½O1’•[3=Pq "¯K{«=Ú”Ñ⃵É(_Ê÷| E—–Ož¿ÿÁÓwž°½±½³¶gck{{o²F‡ÇOÞywwÿ Š nÎ#Nœô©dR;ÏëSB'ùÈÕb+õ—@A±Ô-H·7U‡%¤ùñQ\pwšlž˜¶ -…ƒ‘h˜ÜV‰åø2º­$l…Ì*¹ Øj{gkwK‚»bÚ -ÜV'ONž³šÇ¶µR`«fõQ -¹ú@I®Þþîûï€áJì Â<Á§ìåOïïÑ<Áݽ­]vÐ\“ç ‚ =ó‡Âà÷üN¹@=A»W³s3³³Ó3À¦Ä’ º­&ygpb -ÈÕô[Í-ÌÍ/ÎÛ1på„t+ûn÷xý4U0‚´UÉéÙ—W“+«»J²K·Ç.À«ý£ýÓ£ãÇЬdûnØéœì³Ç$7vVV“ìØz„€Ýáš[`‡1:>É+„ƒÈ¯FÆÆ&§§gçÙ¹}@8Ž³/Ü*"¬uå^^ÛØÜÙÓÿµ£/}éK_úÒ—¾ô¥¯ßßõíï~—Ýþù_üÅÕ7Þ¸”™ù½þ ²¦ÆÒÓ üÊÚmêŠÅù•¨À2™e–2‚Õj2±;Ííílwu÷°Ooi飯­Ëôè~^ÎýœE%%¥ååò`!ð«·ßÆ -á BX7nß‘ûýûwsr@äžü*ÿQáâ’G%¥…¥eÀ¯ªø BŠ`Ƚ®^âWdqG–4ˆóW;–:wJaÑDÂÆ6J,âWœbÁ B¹Âêê¥A„}Ãýã ºB‘ûñ« 9‚54"÷¾¡áîþ°`™ÍMííõMÁª  ¬²Ò¢ÒÒb´qa5õÅò ¨À’²Xôq$ZÁjh¨oj’Z„f³ö³Ã‘;D°Æ§§!‚ÅÞgÙqô•[Š`ɪ+! Q¬€µˆ_yýþãºf‚ž']é)ͬ7uAIÔ<é\LRwL3ÀNz{®É,©ë„ JÁ›q¶ÙQ ‘½Ítz 2ŸH„'1üÅYøÒ9 R‚‚šJ)áCÊÇÅfÐ! íQ`%_ºU -†’)„Œk&É”Pâ+ŠÒ½T .š— - -ÉGNù•:”%å¬<2éPÃßN\ü\4¯+¸ÕWUÙ:”ŸÁ£)W -) ˧¥‚²XÞ—FÿåìNׂÃá—WW×’«ëÉÝ}DX SZZ^ñv˜.çVÀ=AvªËß±ª[Eߊv~'…t .e1PÎP)š˜ª‚ªŒj/5žÎbô°$ˆi+R²Ç–V««’]öí¶±$¸¿½·i«ãƒ£“Cr[@IÅVŒ’¢V(cG %7?þ”-JÚEÕ—\ÉböãÇÏŽ@Ì~²D« -\%7·×Poµ¼z+á[‚ÀU(‚h?ûÁw¸<‹N×ü"öIo5Ë{‚ÓX+ö¦­&yÚ -æ Šz+—Ýáv8=N·àöAÚ -¦1†¢aÄV쥹lå`ëD;w6¶v7·€û!¹:†ØÕñã£ãÇìÒ±“:9ywŽŸ=æ¬ÍÝU^!\ò -A‡ÓÍ^øÕØÄàÈ(W`áüAâWó‹.·À~ïEBñD4±BKÜëKËìòlÿ®ÀÒ—¾ô¥/}éK_úÒ×ïÿzãÍ7¯\½záÒ¥·¯ß0uYÌkò«N ±,t‡\îÁ[„íÜåÞÚaj5u¶¶›ZÚ;Øý®î^DØÔRj0äa‹0÷a~YEÅ£ââ»Áú5N!ü5‰ÜoÞ¸~ëÖÛ·oݹ-BD˜Gƒ ŠŠ–Š rÇVµ4‹°ºÞX…¬:”_A‘Dî0…°¾©v3´©TÈÇb‰)°DV+ "¤"aS[G‹‰fZ:Øé÷ôZzAä-BŠ`ŽãØÁIÞ"äüj -¢«w`ÐÒÛg²XÙ5ihn©5+ª« ••ÅÔ"4à,²²2Œ`UÕTW‘§]‚WdùhBžËb·È¯aaSkkK{{›©ÓÔÕÕ¬þÁA¹±w48ˆ½á²Ûç!‚‹,î‚ß#†¯ -b©P”b±a‘z:MPƒ°ÒVöÔ),U„&UaÊÄ÷æB*ÒQÊÒÕtBðyñ½äœ}±ÖØðÿâ—ÿåo~öã?ùÓ7ßürfÖå¬ìË/^ºx)ãâÅŒ«WßüËÿü¿ÿüüý/~ù+CE%{ÛçƒlF MœIM]4x*bJ¡Cª‡ùTȓʲ|év>%˜JûÈT4¤:ludKÑÅö©‘‘Öò>·ÊÂäSa.d¹ÕC¤ƒ‘óTiÈ[jBLeÓJwYRè™O.?*º–Ê£†ÊdÏ“Z#Õæåè§ÆéAÏ•ËÍ60a—‚72–T}ºSxQJ+S>H­K™dSIüJIÝrgPF‘nmOQ&…ê¢àóAÉARh‰§­« d_^__Mn¶ÚÞæÌ -¢Vû˜7;Ø;<Þ?:' >9yüì1ˆ­ jõ ¢V¶Ò4!dõæ¬àö£r¥Ê\AU W -1ûÉ“#ì îï€Þ -W;¸‚y‚Iœ'¸‰/…"±@(*B8Oë­Ø—lÒV‹ ·š¶Í›‚žà¤m|bzÅì$¼Â¿šBr¿Eçd+»Ó ÿ_€›ÒVÁp0z+hYÆ—ãK€­Ø–°Urç0nínAìê€Ç®^ 2W¯Ä}„üjÿàdgç€}Öêú&{¶P8† -,;vT p¦üÕÈÀð(:gfl˜¿üþP4KD–ˆ_)÷Zí[ú?uô¥/}éK_úÒ—¾ôõ9XõÓŸ^¾z5#3ëÛßû^M}½¥§ÇÜ -BÂVf«ÕÔÕe–,X|"!ñ+t¹#ÈÂÝÙÚÞÑÜÖN¬µÃTU[›ÿðaNnî½°`••W<ÈͽyûöÛ7°BH SX샷ïÞ‘;X°òr󹫠¨¨°´´È`ÀA„†ÊjŽ°ja!ð«´¸Å)„4…°™Ý§Ö y‹#lmkD¥GˆR,BX’ȽÃÒÝÙ -B+´zaakp|‡N‹A,àWƒRk`ÐÜÝÛÖÙÕÔÖ^ßÔT]_o¨¬4T`‹° \’« - W5õµu²ªk0Bmåí5Ô(ûƒµÁ2’«µµµ½]sö²öööÂÃA„Ó<‚Å-Xèäñ‰UADX~Kð -£YT! KÅ R'ýyO÷¢{Óû¦´M.ETÆ#¤RieSîÔZ¾;µž¾þ_¿}ýÏþüÍʾrùÊYÙ—Ù7sFf&»½”‘ÉöÅKì6÷…‹—g½zöµ3/¿üï~}׎OxäÈŠ’ZQ -’ò§ð(5ºÑÈ <Êp”_MføëjR[ÈRÔÐ Ù%ÈLLü,Õ+¦)Öy…Ô“u§£dJÊ$ævüŠè—Š&‰é¬ÏÆzå–bT2~ñ¥äÙVÐ\áOi\ŠÏ)~b -«RõbRÌ,M»PI8åÃNWx[~9äOëULWôª¨ž µÔìQA¤ïåã=RPy‚r -Ž£HösGÀ(·Ul)±%AÉδ Ôe‹c«M#ä -J‚‡Ðw;<99>y|òøéÉSž¶¢¨•8FðÅ A¹!ø«„­d„¥, rrŸÎž‡=áÓçïQàêäɳ£“' ·::Þ=Ày‚»{(f_Þ`bem‰ôVÑx0õÈ­à¬ÁÊîtÍSIWs3¶¹)"WS6®dŸœŸ˜á†+ì NÛlào·Í±Ïš›_\°Ã l†bOÐóÁh(Çk˜€‘‚‰Õ¥•ÕÔ¤¯&· pµ)a«ýÝÃíÝÃ}ò´Chíàøñ!$¯ž(áÕñÉSàWÇ'”¿b'ˆýÁUöÅ|A‡Ë3;¿853;2>5HýÁ¡‘ÁáÑ‘±Éqô·Ï/:‚ߌᨖт¥àWË«ÑÄ -û:ê -,}éK_úÒ—¾ô¥/}ý¾¯ïÿàìöÍ·Þº|åêù ®ß¸…!«nP`q„ÕÍo»aYÉèN),buâ,ÂÎ6ئ–“µ§—Ý765—”–ææåÝ{p?· ¿´¢Þ»‡÷뿺)¬ëÁºqƒÖî=ÈÉɡá£G‹‹À‚UƒK**p! ,ªVÕ×W×kŒ Õ bþ -DXu$‚"a Þb ¦¶¡«Õ¨WØ"Ä, %4±ÝÚincçhé6uC‹ÐÒ?Ð38Ø74<0(¶g†'¦ˆ_õô YûúLÖîVS§±¥¥ÖØPY[k¨¨(1`¡¡¬¤¬¬,Xâ Â:°¸‹ýA#¶ëkExU£°cá,BnÁ‚A„Á2[»{úaáÀÐðÈøøØÄ$ "œ›Ÿ]°óA„nT!ôˆá+Ú’ K -eù‚!PàKöçÑ(ÓSMì©­ÿ¹ØÒ",U.(M/Œ½Igïéæ U?ùÉŸ¾öÚ뀧2³²²²‘\eefe¹’vFF!,ÀY/]¸pñõsç_{ýÜ«¯žýâ_zé¥3öÑÒÖ1¿èà¬/½U)MÀI ¸´i+¿ÔKý”´½BM¨I¤R~‘~¨Ø ¯_‚W2_Ò<^™}R=† ‡úY.UÿQñr§{¼ôG·ºÈæVC!·7Íq¦Ô5Q(eS‚B¾”¢*¿ä–¹ŸÎ(%œÂ©dåNS“ôi2ršËèVu0e©üÂK¼ìRP=fQ5SR1.¯¡ß•Â¸äV ÌÄØgyIyçõü!ÀVá( Œ/-/-ƒš ’BÉ$ÇV› ¶B%;ÇVTÜ?:>€}Êæö^rø{ vvìG{Ñá¶ÍÙ'§l£c -~526:>51m£ùƒ.! °#ŒÄÃqˆ`ÅØõY^6åò*»¯¬.­®%0‚¥Wõ¥/}éK_úÒ—¾ôõû¾þúg?»|åJfvö7¿ý­ú†F³µÇÜ,qC -«ÓÂo^±[¸.wsW›©“Ï"4™ KØÞó --M­íU5µ=€VNaiYYe僼¼›·o_¿qã7ׯ“Ån©Bx÷îíû÷a¡+—[°Š K ‚U¬JCeeyu Û•„°`¡±Ö؈³›ä¶1Õ -ýA(’¿÷‘_µ’öª±•ˆ³`"as» *„Á²Â,žޮ>Þ"ì§ÖèÎ"„–8‹PÁîéèêéeק©­"XåUU¥ååņ2H”•–"¿‚X°x‹æòÜ)‹UÇ#X¢Ú½¾¡¡±¹¹©¥…]jöV‹¥§·ùÕàÈèÈø${_6=Ë-Xv'½ã,)å ªøL'Ä -¡?ò‚¢I/¼Jù§ŠW *1»D¨œÒ*U¸[™³|éÚ^RøÊP3só·ïÞýê×¾vöµ×323³²ÙºÌþ'++;S±/edˆ¬ âZpÿRÆÅK.^:wþÂ믟{õìkìIØí¾øEöƒðµ?ú£šºú¹…E§+‚†á¸SøÅÈÌ„§¹-ÝRd¨R2HBD– ª§¢W¡Q’ÊÇh>1¥W¨¨× )FàÄIcR’Øš”ÑÁ(bQÊ4(L:xùP•ô¦iDªx]J§Ò­lä §0:ù©Õ•”NV/i œât”“Ô`%wºH•Â6¦e†n±éR'9úÔ²zåĺh~EnMJ[E·ÕR”ÒV++Ð\]_]Glµ¹ cwö6·÷¶(mERzP²CLèøÉSÞDlõìyº¨Õ‡Ê† V~üâË·/>øø\}$‘«El†«g"¹lõäé!®ï¹Ú;½ÕÖÎÚÆ&ôÑÊ[ZŽÄ[B`±c¿¸[¹=‹÷¢S -\Þ -Èö‘\MLÙƧfÆ ye£y‚SH®¸ÞjÎÃQoåtSå“[Ù!\áe„žàtñ`¸!)¸±-’«è îìÂxÁ£] \!¼:‘ùÕþñÁác@‚ÇO1ˆuHóñoÙ'nAøjgu ʃ‘Ør qyý ‹0ðÈØøÛ‡Ùi“36Ûü¢’_…â‰H|%º´E„K ÅJ¬°/÷Þþ¡þO}éK_úÒ—¾ô¥/}ý¾¯ï|ï{ìöË_ùÊå«WÙ›úk7oªêîVð+BXü",«Äûƒˆ°(ˆej5Ñ Bs}cs‰ÁWïÁƒÜ‚‚²ŠŠ‡……ì>Y°®Ý¸þöõë×¹ëÖ­;w Exï "Ì  ¬Â¢GEÅàŒ*/G~UE.÷Šš°¸×ÖW׫qam#D°j‘_Õ‹ -÷º¦&Òa[Zq.¡Ø"D–Q•Âr…ã;š;LhÁêD µ{­}ý݃}ƒÁD‘û–‡'Á‚5<Ž¬Qöþb¤wpÈÒ7`²¢«¥µ®G°JËË‹pa±¡ŒÝ7TVT@ Mrð -îP "Xø·l×ÆÆF¸Å -aK·`±¯Kw/ "  "„Öü¢cÑårºâB‘_‰+@Séãl{”¾ÍöªfÆi]îªák>íà?Oª¥ÜçR½»O™L'>ž¡ÝájimÿÎw¾ûÚëç.aà*+ WÙìù•„°¤ò`†»¢FaFF–įؓ¼zåìÙW^}•í/|(Öù›ÿÚ?4DD(•A}ª·J)ñH–¥Yš*iŸÖ#HGi:3d¤ ©á’ï´Ô“|´'"?§–ÉèL KŸ4K×”gêQ¼|:)—ÝƦ¹Â€–&Æ–ò¹~åõw¥'ü»”o¼æ´_qí´__EQѯ€Z>™GñOQ€DN«”á1¿ò,Ø°/E j]JÄË€­`Þú -ÇVP¤†àÖîÞ`«ƒýÃ݃£=( >9züäøÉÓÇ0IÇ>çb«wß_ÄVšz «>z!b+isœ¥4´K†+ÄVïAàêÙ;ÇØ<<æ«mÄVì×7·W“›Ë«É¥•Õxbç Æýá¨/öŠ±F‡ÓÍ~'ÌÛÁÊ>z+ \M۸̊“+0´ÓÀV|ž b«Ù…¹yû¢ƒ¬ìnÄV_z‚ ·Š†#KÑï Bà -Éší¹ÞŠÄìÛ€­ŽvÅž `+Š]aæ -œí<ûèpL„ƒl#¬;ÜÚÞ‡ŒÙúfbe/û" -þÓå·;flóìFÆ&‡FÆGÆGdžÇ&Ʀ¦§ØY,,Ú—À~u‡áx0Š¬ørd )e±àê± ¹©ÿkG_úÒ—¾ô¥/}éK_Ÿ•“››}PÀ}ã›--]¶²(àÞïÄ?vŠF,ÉåÞ),3TÁåÞa²X:»¬0ˆ#X9ùyw€«´¼<'?-X7~}íÚ¯¯_{ûÆõk@±`áí;À¯î  "XAä^Xô¨¤¸¨¼"X••åUÕ†jقŶj!íF²¸7Èî-˜¿j1"È’XÜâY,®pÇaG3;>ˆ"X1‚Õ78202*ŠÜAÞŽ.,¶'¥VÿF°º{Û»,Ííì0(‚U¬2°`ÊŠ †ÒrCEeò«ª -¹âýAÈ_ÔЖT!dÕ`¬oÄ"¬v“¹Ób±ôôô€È}htltbbbzfÊf³ÍÍS ,.ð†×ïù•„ª$„BüF°Bn­\MÑ)ªÅ<5Ń½éì^—Öd%h"X*¶ˆplbòõkhÿ]¼H%ÁììËÙ—¯°-#,beq„•,¬ÑÊÌdÌdŸ}þÂÅóç/¼~îÜk¯Ÿ{åÕ³´_~å•—_~…ÝþÁøìÙjëî4Ü)ùÝꌆȱ(mDJ4<—Pƒ,Yˆ. ¡¸•/Íù†_ûÒê —Û›>…¥„Eœ’ù¤¦›Ÿ“%ñ–âRAÍRÄT")Åáù% ¦vÕŠ›¬^(BV¿MÙ/ÔÁˆ\=WÏß{òλ¨·zçøñS³?Æy‚‡ÛؽÕÆ;lvüñÄjt)«pÔ ³Ó„‹ãØo3ÄVŽÙL[Ùæ¦gf¹’}Z&81=Žbvv+¦­f§[Íq+»Ý¹°èr8=¨·<é­¨kBOpy)±º¼¼¾²’\áŠ0ž¶ÂÐÚþ»Œ»‡;¸Ú'f%“«º#±,vg‡G³ Åî³ .ú}¶76w’Û^-­D"K¾@˜ýD/ÂðA_MLŒM Œ³=<:1215>m›že¿Þ‹.¯[p  Å–Bñ¥p|9"n¢XìÎÖîÞ‹OþIÿ§Ž¾ô¥/}éK_úÒ—¾~ß×~øÃ?ÀVö•+ç/\øÕoÞ6[»»º{ÌV+»Å;ÝȬx—î“ ø•¨sV'*°ÚÚÛ;ÍìÙÇ›[J åù îç<ÈÍÏ7TV=,.¾sïÞ hÞ^¿u“¦¿ºÿnNÎ}D˜÷èD°JJ -K!‚UŠ #X|!Ì"4AänD—{W`¡ùŠÝi1b…˜•±™ÂWòÆÖvÈb¡‹ê„|!ò+°`Âê6YAänéèìÆ¡4‹,XSÔ%dQ "´v·vv6¶¶Õ64TÕÖ*+KÊÑân(-.++á,DH «Z‘\‘Ι•Q’_áPºº††ºb5¶´´´µµvtðV_µykÆ6ÃÞ¬¡ "XnŒ` «‚âÀAžÂ -ˆs ‘_àÝbÀ¥•i«G›Á}¯j’ çÓMÚJ° œ¢J½‡Ç¾ÁÿôŸþ7l²Å •¾"Š•¤Übg±^ñ\Ö%àWçÐuöµ×_yõ5 _}ùÕ™—_fûÿð ø…/<*dÇ&@›Ò—6UåR€m¿O‰§|€’z…þ4qU‰0JF4n‰IŸ">²& ()Ûy~OšX‘Ä©@{ÌÒ¹hs_ÊP– Ro)¥î)‘3ú+>-ÉQçĽ9ñj³–GóZš•ö 5ÅFštœºï)YÙÕy* Àô+Ckò3éf -\™æ[ˆÝñH-E¿Øîô{}¤n¢‘X<OÄD·ÕòšXÜØÚØÚø•[í ¶:<><>Al%—Ÿ>÷ÀV’4V¤VZrE±+Uàêù{Oq¤àÉSÂVOäy‚¼'¸½¶±½šÜH(z‚¡HÌ s½•WXtyì×¢svaqvÞ.•'§g[M‘ájšÒVãSÓÐ$l53Ç }jÔ[±'q8=N—×åØ3 >ö/Þ*[b/ÍõV”¶ZÛ\O"¶ÚÜÙÚÞ£y‚h¸:ÓVGràêPÆV{<‹µ»„"w(­bO²I{swckwÉÕÊÚFbàU("!ÀrÞ]˜œ¶!¿šx5696939=‹òv—ƒöý¡h Æ EÈ6§Xbkie½„þ¯}éK_úÒ—¾ô¥/}}>V4;|™í/}å«Ímm]=½"ÅêN³i:!R¬Ž.‹Ébmïìj7C‹°­ÃÔÚÑÑÚa2™-0ˆ°£ª¶ö!X°rîÜ¿ƒ++)‚õ›ë×a_»v ,î7o‹Öƒwssaá ‡ÅÅЂUl(/Å!"¬®¨©­ª«‡M.÷†èŠ"÷ZN±šÅþ `«†–6cK/¶’Ô½MDX\çÞÐ -)¬¦´`¿â-®^Š` öB‹DXÔ"$~E³‡Ç'Gy«{` «··CŒ`ÕÔ׳c.+//1 UZÊî”U”—WU š‰_Õaª¾¡]X µ¤Æ"À…,*6` ,XØ"„VÿÀÀà·`Ñ ÂyöDZàpòAZ‚Ïãx0j%ðVHJa‰ -wö†.ì†ä÷욃ÞTãºOmhOqûÒMTR j«ÉN$ V°³ûãŸüÉ…‹—¨˜™™••-Â+ W"Â"~%",e‘0CD^T*~uþ•_¥òà+¯¿„õò™3g^:sæ‹/½ô…/~‘}—²KÇ®ŒljJ×Åä̎d£æNâÇý2âÐF¶øßÒ# ^IŸåQ‡—¤Ô–GIºÇ ²/ a€£äWüµè%d„"¾º|FrJÊ#½Šâ¼Ò 6-ÕIsî~R^C5­ÒæÊün¯_aS<@—<Ê“ü*Чyr_Úæ¼H“S$Í҈뵑0­1L™LS§¶ÔŽz·,‡;^_°U -náX<º”ˆrlµ*a+h·ÁÁÍÝÍÝ=hîìîHi«Ç0Ið¹4IP!¶â A©(ªØí Ü)ðJÑ”Äì¼ó.®D1û“§¤·Ú;8ÚÞ?ØÚÙcÇ™lµ¹²¶NböH|)ùChe—ôVNÐ[ÍÙ³sö™Y\MñÀÕŒ8IÒV¸gÈÖ>Mi+`«ÙYûÜ¢}ѹèp¶ò/`+Ô[EB¸J€Þ*z«ÄòYÙ×Ö·Ö7¶ažà&˜íÑÍ+µáêhÿ€£ª}`V'ûû'Ĭà1{œ\±ÏÝÜÞÛØÚKnî&7vÖ7vÖ6¶`#¶b/Ç^:’ñåp$î"¼r{]¶ùEvc“Pãðjt|z|Ê6c›·Í;æ.vF_Ð`¿Æ#~¬£K"ÂJð:a|™½ÜæÎûý¿üË¿èÿÚÑ—¾ô¥/}éK_úÒ×ïõúÑÌnÿèë_ÏÊξxéÒ?üâ—ÖÞ¾®žsw7E°8Ȳt›ÙöGŠ`átÂ3ð«ŽN³Él!„ÕŠ"÷6“,XfsCSsqiYn~þ½œòrË*+—ÜypÞx)D°aÝD„Å#XdÁ*„E¬"Cyqy…"XÕå55ådÁª«“ùUCc±‘»Ü^ñ.!E°š¹ÿJ¾ÓB -÷VAØÞÔÞ.,)‚ÕÞeÁa¹C Eî#c rgï,Pä><1M-ÂÁñ‰þÑñáÑÞÁAk_?»\­&ˆ`Õ56VÕÖ–C -XeeÅe(r¯¬¨¨¬D‘{ ªz#«•È§B4‹7 ¤V[‡©Ãl6[¬Ý½}€° ‚5>6 ‚ߙٹ9û¢v¡¨º·T*D„òaK@n£LU¥ÉwJàJzWîw:ÈOäZrìÄÏ1’_ Øiîúñÿ„Ã+âW ¾Ê&ÖÊù寰HHȕȯè6+ërF&çW¢ÿêu„Wg_åBŽ°Î¼ü2ñ«—μô¿üáþòŽÅHøü)A,™ÆȼEÃdTÄÆ/Âù -!˜:ãä‘Y¯õ)q“‘ŸBQçÄRžSd>Jòã—˜Šž©h˜ø$ªt™xðêÓ—bWüs•÷ñÁùs¥#—±•Zs > Ýr)ç-ŠO!q-±ÿ¾Rž~Ú“Rb1U&Í£Žu©>EQœÄc”àÑdÌð°SìX~éû_ÁoÅ’ àóúýˆ­"Ðn[‚´U<]IpK‚Û»Ønƒ´ÕÑÞáñÁÑñb«“ÇOK%Áw [½¯J[)™Õ‹½™ÕG/>?¾HŸ¹zOì ¾û>b«w!põø\‘˜z‚[RO0‰¡£B7 · -„£ì½þÌu{[¹ÈÊŽn+\I=Až¶¢¶ ¨·Br5‡z«öY¸ZtòÀˆÙ}^Ò[[…¢bn-Ø -®ä̤žà&Îd¤y‚ÐO+3;;ëòå/}ù«ÍmíÀ¬ˆ_õÂÂ䂬N‹ê„ºcíDmr¹£È½>b±ëaᣜ¼¼;÷ï=*))+¯ÈÉÏ¿uûöõ›7sýú¯®]!¬Û·oòáƒ{99hÁ* VQñ£â’¢2C‘*„e•¼B(Z°_ªA„ÅEj®k€[‚Wõ„°š1‹…ðŠf"¼EîmíÒP¦v",)‚ÕÛÕÛgÅVßàp?Z°0‚%*°a O ŒÃ ¡áŠ`Y ‚el†VEuuYEµ‹ËÊJ)‚År~E±+v[ßh¬å.wañ"!çWõ MM4ˆ°Íd" ˆÜ1‚51¬Y´`-Ê,t¡ƒó*ôª‚´{Û(•ù+àWPXø ùJãÐ4!u$Ip š™FU”¢3âR#(î…FÆÆÿê¯~š!Ù×ñ=WÙYÙ2¶bû2ñ+DXRòJY!DœuùRFñ«×_ùÉÛE~uVâW€°^z ÖKgÎ?o¨¨ˆÄ–\^_:*•¬Ò¨Òr-%ÌID>5kò+¨‹:[å•ïkžMA¢T¡)U´IE®ø«{Ô1 Hgi_KõOº´•ô‰b#R‰°”×J¦CÒ‰H3•Ú+Mx,5ä&5õR®‰ú$§´)ÿJý%œåÒV •~{ŸGqx)½Q¿6q§¶¾SþMù“•ìA( †£±(w[¡K|-¹šLÊ.ñíݭݽ­½ý#¸‹ Á}L[ŸˆØꎭ¨$øîûHb+±!ˆ!+ÀVŸ°ý!Þ~ôÛODrõ‰ ¯>¢Ù‚/†«(p=Ág¸zzôøÉ!õ÷Åžàæ`œõ Ð[-¯Ä––ñ¸¤·‚ž ‡÷!mµ°8;gŸžåi+ÄSÔ œ‘°»?1=ÃþvÚVö™Ùy"Wóv§Ýá^tº8ºÂ#ÈOz«ÈR4šˆÅW‭֩*(b+\(l{ç RUpóT˜‚›[P fµ±µ绹ºšÄŠ õ¢¨U4–G—Âvú1v`ìðÜ^<}§gÎî´ÍÙÙé‚~tbzd|’’Wc“ì|Á|5;¿8ïp-ÂÙùÝrþ* -÷î(n0bA+]:¤ªr •UJJîÜ¿wãÖ-¹_‡A„hÁºu]Œ`‰"÷\°`ñaI!ð+ˆ°*+˪ªÊkd„UUW_SßùU8‹º„ÍõÍèroâ",ì¶HuB‘YA uîí’ ‹f¢Z°aõ›Ÿ”¹ƒkh¤B«ÍdfÏY×ØXYSc`_^^XVF«ÄPf¨¨+„µÔ¬kl@ÏOaQþª¦ÇÖÕóa…Fc}ˆÜ›[ÛZÛÛ!‚eµZ{{AäN¬©é Ñ‚5,·dÁ§†¨Bèçw0Ž%ó«{_©– ’Ž[ã”5@ͼ9·X LǯÒE_àðìMè¯ó›+Wß u)ƒÌW<}•%b+¾¯\•,X¿"y;öIçž ¬Ì,àWçοzöµ³gqþà«g_9ûšÔ"äüŠ"X/±ÿ=óõo|cxtÜÇ.EH¥JL)•GÐë4á"™ùÔIñå•Ÿ®J[É ¨Ÿ* fkòåÕÆ<‚êÝ -HåÑê¤T‡îNú‘xŽbr¢OÇ|š3cTªŽ¡ÚoO‡'×e@'F§¤Sp Úk¨Ì°¥||©®Rzšø ì‘š•>Í“‹ðɬ¿t¦zþP8Ž†¢1ȉØjyu2BrÚ -ÆŠäê`—§­xIðäɳÇOä´b+åAÑj…>v"T~üÉÇ¿…Íîí¯=A¬ -*ÅìbOÈôóy‚ÈvØámlï°^Mn°ãgg£ž`$G$½•ÃåE+»s°Õ‚mvz‚¶ÙÉi>Cª‚â<Ái"ZÐäz«Ǽݱ°èZ$½•‡]ä€ÄìØ„±ŒØÄy‚0“‘z‚É­äÆö$Qw³ïîŠØJ™¹ÚÝVôH[í@ÚjkÅV[»›;딶‚z`ry°U ™U$šGâìH¡(Û`÷ò…¼BÐíñ³Ó_txØéÏ/Úf¦f^qx5Å6Á«ñi»&3s ³vç¼Ãåp į°ñÙs‚‹¶a…Ù°ÃÚ?Ðÿ©£/}éK_úÒ—¾ô¥¯ÏÓʾr%ëÊå·¾ü•¦Ö6KO«^©E(űÌÇbwL]ÁÂ[‹¥C‘ V—Ålénm7UÕÔ<*Ì+(¸÷àÁââ²ÊÊÜ‚‚›·o_¿uëW×®¿‚)„7nܺyóÎàWwîÞ}ðà®Á*,Ì/,zXRRò(CiEX°ª‘_Õp~E,‘_5¼ƒX-¯[µ´¿ªçw>‚ø•hÁjk~¥¹[:Ø)c«›"XÔ"„ÖÄð8·¸Ckb¢Y#£ì1=(rï0[Z:LÆfDH¬b¬Ò,ÂÒòòr¹BXK=AÞlï°3B{M}]5>¦¦ž‹°°EØÞf2™Ì]–îžî¾¾þÁ¡Áá‘‘ñññ©i²`ÍÙÅA„øVš$Z… +äJuBvòWì}Ÿ×íë§LßÞ—ÿB%ʵãZE'D¾ÁÛUN`lhþÖ·¿ƒ$ŠòW™4[ʃ—¯\÷UDXW%–Ò|…+ W™¯22².^‚üÕù Éߎ -¬×8Å‚Ö«R…#X_|éÌK¯¾vöo~ö³èRB>rMJJ}GCœ4wRñÔ§‘+uüÉ-œŠ¶”Kû`íK´I05tR0(_ÚçOÚ„4Çæ–ë4NÛyÔà>M%SkS?›üx)µ•ŠûÒ¶/å,”42 ¬pªâXdÃk›ZÌÔ„ ÓDµ‚^ð9=ÔlŒDyI0±¼´Â±Õ -/ BÚŠcr[á$Á]t[?ÝV˜¶zn+hjÜV”¶úø¶K!+ÄVÿ¤Øˆ­T¶«ïø‚Äìh¸Ây‚¸zLØê ‰ÙïÑóo|ÃÚÓGø¹¤‰HÒâ)‘f´ -©Ó¸Š¶h‹HOèõ}ÑÒ¾ HðI£:í©>‹¡i®€êÔ4ÔÈíÓ„£$ –øxN«8—s§¤¼ÒÝú”,Q¡¾÷:Btkj’‚êëåòú”_¦TâçQÈÄßö>Þ”~pÔ„¾áý!, Ê“Å’àúÆÚ†¢$¸Ã£V¢’ýø' SÚ -±Õ³çéK‚ï“ØŠ7S•’\aWK#U«§ f'rØêõV¼'¸½ËŽv}ckeWñÄj$žÀÐø¨'ÜÆé^p8ÛÌ¡ÞjvÓV³0IPjN¼š˜´AòjÚ65 ØÊf›‡= «»sQœ'È.¬×ì÷`«P$y‚+qne_g×z‚É-Ð[míBzmko{ÒV»{\rµ»w´¯Ð[Ñbísr%º­Hɾ“Ü`J‚|†à -•Wp„"`+hG†¢>Øã ³r{ÙѲ[¤°™cnÞa3|ÁéO´Á±‰»š˜Fç$¯&ÙÍÛæç0|µèò8Ý‚K`¿€_yƒaŒ`‰;–"…µ¼¶±–Übÿ‰ÿ×ýWý_;úÒ—¾ô¥/}éK_úúܬËW ¼õå/7·µY{ûÐåŽ)¬dV==Š`YÅDéܭݘÅb·]À¯L涊`Á[Û;ªkëò>Ì+È¿sÿ^AQ¡¡ª*'/ïæÛ×nÜ^¿ -¬ë¢‹"X÷òòróóó>*(,¢A„%8ˆ°¼ªºB´`Up‘»ÂWõȯpK,Ha5·HB°`!Ñ¢æ t¥þ X'äA,E«ƒ]7oö@‹PŒ`ŽO‚k|jEXCãSˆ°Æ1‚Ŷt˜š[jŒõ•RËPVTƒ¡B(F°¨-XÇ#X u²ÎÖb‘›†õõ ÍÍl³/V[g'F°º{úÀ‚50L¬éiöž-X`qeŠ×E¬Ï_I[Ù(ä+¥|=)ª‚ªF˜ ª *ê>m¾E­$JÅN·¶Îø­o;ûòå̬,2·£Î*›ÊƒT¼rUBXW%;ñ«‹—2^áçr~••}X™.fœ;áõsç_ÇßÐ%|Dî/¿üÊ™3/#»„uæå3ç/œÿ‡_ü"–XNÁ2)y$!}0)¥fèK ÿ|fÌIÊy°b)†©|§±RHZº¢ ”Òe·„´O+Ò3àô¤»§6"ÓÞiá.%ÈR§ÔR/©²Eè³gÊP\@«óù=J#™¶¤©"Z -ѽ**¦øèQÚÏÄœ!¤­|~!‚´U,l•XZ^YZYåi«ÍäL;Û{b:J‚|’ ¸­ž<{Øêݧ8FPÄV¾÷Á‡ïË%A1gÅ£VÿtÚ–TW¢›ýc -\¶ÂÀÕ;(fò®Ž?%+;;¤mì nnï®orlµ”XE½Õ;AÔ[…Poåµ»Ü ×<ÆfçDnc›˜áVö± ÙÍ,kršW3¶Yï .bOW.·à†ž _ðAoŠ"¶JÄâ˱¥•ÄòúòÊúêÚõqžàî&Û¹1û6«#¸BœJÓ„¨nÄV°¡f¸½GcW“›8<J‚èc_²SŽ.…ÂñP8F}þD­<~vœ‹heŸ_pÎ-8gçí”4›ÆYŠS³ãp¦3P`526‰Á©Ñ öATÖcòÊ6¿h³;ç]v›Ayø•?èa/Ä.2",‘b7ó‡bJ.÷ØÒêƦþÏ}éK_úÒ—¾ô¥/}}nÖ7¿õ-vûýü #3óÊoü×ÿö߆G, Àê ¿›¦vYbu’‹Ýá,+ð+@XÀ¯0D¬–â²²‚G$r¿_VQñ¨¤ôîƒ7nݺvãƯ®]£–”ºu÷îí{÷îåäÜÏÉ}—Oƒƒ9 -,X¥•†Êª -Œ`UÖ¢ËØÀ‹„ rþª©…·›[êš°6(ú¯è~Æ®0‚ÕŠá«V’_ñA„mÀ¯ÄVW‡ÅÚÉν·Ÿ"XÐ"æ-ÂAäW¼E(E°†¡EØÝ?,³™V×Õ©"X¥¥Å<‚UUY]U,2·×“È]XxŸÃ«šº:œKX_׃AäÞÚJ,¹C«phhtltbrrfff,X ö¦¦><þ€ÀµW~EP *„APµ„¥÷øã´(¯– ÕZ·•Z®xËïW™øÇÑ|µðóÿùwo¼ùfVvö¥ŒŒK¾â Æ’­ýŠä¼R+* ¹"Š•™Åþê2"¤;ì9¹ëµ×ϱÛsxtî¿zí•W@äNê+šBH¬?ùÓ?eï¯Ùõ95Ò"¬T¼“Z©SÂ/û+!aæJP~n@ -byýéùRZŽäNaMê_šóJwjFûCYš×U Ë@ŠÍ^K>?óÙ~÷H¥yÕœG¥@ì”ú§/åš<§5+%nÉ.Z0 “crÚj5±º¶–ܱÕî&ŽÜÞÛßÞ?øÁ1*ÙÁmuÂÓV ¶zžFl%5 Fi£VŸ¤ÜÁØ•Br¥&WRàêÙ»(fvxòdÿèæ îÚç .¯­/­®FË‘ØR(ƒzˆ­ÜP”sÛ®ùEQoe››ž™š±‰i+hRî¢V|ž <€Ïœ›Ÿ³ÏÛvœCz+7XÙ}þ` Vvž¶Š/Ç+ìz./¯¯à°¿õ$HÔ“heG1ûÞö‘+@R;û¨^Wx®dfµ‹þvt[Ñ0AP»oî$“TÜX]Ý@·úØc L[-ÃqÄVa7èöøØ^tzì7D­æ¶¹…`+àuS\ä5†%AJ[ŒMN¼¢ðp­iÛäÌì4$¯ì¶y_-8Ý‹n/ȯ Ñpù‚ˆ°Àâî È tXR -+]ÂgÏßÕîúÒ—¾ô¥/}éK_úúü­+W¯f_¹òå¯~µ±¹¥»¯Éð+K/µE©»UšND—;#´¶›»:ÌÄj…ÑxÝ]Ö–¶öšzãÃG…9yywïßË/,,¯ªÎ{øÞàƒß¾qãÚMHaÈýÎÛwïR‹*„ùy=*-E‘{yqyE´A„UY[‡ §Ö7TAá^m VmZÜ›Z …ÕÜ\/’+Èb!¹ªç"w(6bìJ´¸ƒÈ,X- - –É --®Þþni!´Ç)‚5 ïȬAk_?û\v5[Zjõ•55e•Å®À*6JÊË Áªªª­… -¡Ñ(’+£”¿ª‡VˆÜqR!Ü‚#«±®‘Dî­m¦N“Ùl¶Xºûúú‡`á¤b¡Ãî¢XÜ_d~Â+x×Ró«V`"4.MQzò«£&ª––ÜL׶skBŠz}ì°¿ýï^¹úFVñ« ª¢üê²(¿’3WJçi¯¨$(ö!|EðŠ6 bïÐSÈÌ)a*-µ#š<%#Äñ” 4 +#¢'Q¢ª”è×im¾€B–HyX@CÌ´é/_ÚðUzÚ†)ñ(%|;­cèÓ¼[P]d¹8ùiH-UAŸÂµÕ—R[ìiÝ>8¯H tI ßè0>Ez¦²oùBá ˆ­â€­Ðm•än«M [íïsû¾Ô[AO0º$ l…=ÁÕäfrcæ Š†«ÍmFí îþhGQ$EDK$Wû[;ûȬ8¶B·ÕÆÊ*/ Æ«±øJ8ÊNy)ŠC1_ „Ø*àvû.ÜV³s\ÆNi+L—¹H52Îö ûï»ÃûãC£ìÂWã“X!œ›‚N¥¯ì¶yÎ$x¥_ AÊ_I›(–7[†¡HÈ#XKKìo}CÿGŽ¾ô¥/}éK_úÒ—¾>OëÏþìÏØíU,p}åk_«5{ú,½½àÂ)%²ø8BQí9+ð_YÍV(BþÊܬv“Éba»¥­½º¶¶àÑ£¼üü»9÷ó>2TUçܺs÷ÚM@X¿¾-Âë·n±},X·oß»w-XÁ*(È}ø° °–ŠÊËK**Ë*@äNB©HXm4bøª‘àÜi¤Vi¯ …ËØ‚÷VÑâÞÊ-îì#|"!N'”,X­Áê1A‹°øÕÀPßàHÿ‰ÜÇ!yE "XÐ"íé„A„&‹•,XµÆ1‚U^TVRd()Q "äBàW¯€_‰ -,.ÂÇB‘Ðh4655’«£ÃÔÕe¶vw÷ö÷ö  Œ¡ 2`ÁZt¹nö–ÐëöIwiæ`Dra‚a("",h¦ÖæÓŒ„“z…©Q«4No5êa{~Ññw÷÷Wß˃ÐDûò+J[I…A´»g‰£yìJæWØýL -_ee_ɾ|•ûÈ…‹çÏ_€¬½½#lJ“÷Ùãq˜à>Ml•Ü‚´ÕjÜV¨ó‚ù‰‘x(„£ìx¼BÐ#]n˜¢¨ˆ™¡Ž~fnÛ‘cŠb «¡ÑÁ¸¥[âWbspšbW2¼š³Û^Í-º 9èò.B¾‹fV‚ÿ -R, -b©V'b‹0OnnïìîëÿÂÑ—¾ô¥/}éK_úÒ×çoýñ|)3ó·Þú?~úÓÁ‘Q+ð«^KoŸ¥ï ¿²*(–óW]ÝÝ"ÈB„Õei7›ÛLí@T:Ì]Ʀ¦â²²¼‚°`Ý»WR^^TZzûÞ½·ný†¦Þ¸A,BX4ˆð^nî=D˜÷ðaÞÇ…ÅJÊ -Ë %å8ˆ°² -\î55µuÕuÆʺºL^Õ`‹°¦î’ÅŠ„ÆšBØRBâWĬšÚÛZÚ0‘ÕØÖ†³‘_™:›;:ÛÌævv^ìì¬=æž>Kß!,¨¢È}p|Eîèr‡û4ˆP´`õô²ghjm' –¡ªªÔ``¤¨¤¤¸¬´¤¼ÌPQQ^UUUSM`ªŽ7‰_q„ÅîÔ¢üªº®‹„uÔ1”,Xè³B«–dÁš-X4ˆgK$ÿð«Î"”æB…0¥VZ¥‰ZI‚,MúèSÄDò,<Á?7oÿË¿üÏWßx##“‡©2Äу¯Àß®˜3˜I-1v…³/\$~…P‹k¯$~•™™•u™O!¼pñÜyaÑ>{ö5Š`½Œüê‹<€Åî|ñ¿ÿŸG9¿R"#±ß'R#~¾¾O)Dè¤ûÒPä¯THŠs${ñ§¤°4µAÕ“pœ%Ýñ& -P¯í”W×6SWZ¾¤~ ˜:Ýqf%±ô)2éÔ>#R¤­>¦œÕ?ñýÛúÙ–ÉÕ'šÙ‚ðéì©Þû°\=ÇÀÕÓçÔ<x±„ÊxÚ*¹±²–¤À¤­–@o%¦­¢þ LQôA§Gpº`’à¢kvž¸Ã†+vFã¤a û¸BZð -ùîÁá1 -bAsHŒD[»m -²[¯æ^9\ N—Ý…ü -óWȯ2Âò)(–”ÅÂ"¡/ „ ‚¥+Üõ¥/}éK_úÒ—¾ôõ¹\?þñÙí›_úRFVÖ×þ㬬®î„ÕÓGðŠ±8È¢V¯¹ËÊîP -‹ø•ÉÜÕnB—{ggWw·ÙÒÝÒÞQYS[X\œ—Ÿ?7'· ÀPY•ÿèÑÍ»·¯Ý„A„o߸q]¬B‹Z„b+'??>, V±¡¼¤,XåÕ5`Áª©…)„uõÕuF(@䃛ø BŒ`ñY„Í­u˜ÅªkjiúƒbøŠäWT'$‘;D°L$roG~Õ©¶` ÂgB -kr"XãðñáQv -}ýÖîVSgCKK F° %¶K‹ ¥e†ÊòʪÖÕ9ŪÇ)„F*6i -! ,ö0#êÜá1--Ímm­f³Ùj  "ŸšfogçÀ‚åt9Ü4ˆÐ¯˜Bˆ¶«`SX‰hÁ#1ˆ`…£Š qŠwñBzƒ·ûTÝ·AHœ¶Í~ÿû?¼|ùJFF&…¯_áÎÎÌÔ®.) -ƒç/ð-R¬ IÛ~ùÊÙÙWa_¾š‘‘uéW`¿–² Bxöì+¯¼zæå—ÏHëÌ™W^}åÿùå/"K e$If;©š)ÕýéXPP’¨‘†n¥"™/I“IMŸ¼éXS*R1ZPy0©â,· g½” ‹¤RÚ¤–ªHè×Ð05U ¦Mg)N_Ëñ”O{ŠùJMü|2¸K›[; žªÙOËå[EÙwa«ÄêÚêZr ÜV¨dßÙÙÜÙån«J[q·Õb«Çˆ­ž¼ó.#È£V\É®h*K‚€§U³7])WT$7»ZÌN=ÁgìŽNÁ¾­Ý}ÄV;[­®±“ŠÆ‰³ßB ,é­ .ç+;a«©Y®·Bl5=6‰{b -ÒVbæj¬ì6ö`Àéóö¹ùÅy»Óît/:=¸òúAÌ®â’Þ -`à*Ÿ'H=A -\ml‘˜ýnÅ2 k„ w[ñz u s±Od{}c{m}‹D^ ( ®Ç+ˆ­@DOJv ,ø1måñ;\(Ùóv‡mnÑ6‹z«iL[MÌÀ -ÓVcCøkŸç¬DfÅ7®åÉ+Qx5ŽA‚W ¼bO>¿h[pöÊ á+©<èôøhc‹ÐÏ)–/%ˆŠ"¬h0DbÏß{_W¸ëK_úÒ—¾ô¥/}éëó·~ö·ûãŸü,Xo¼ñÓ¿þëÁáèB…n),„W`q‡?š»»a[­T$ìèê‚VgW›ÉÜÑÙeîîi7™MÍ¥åùæܽ¿¸ HìX°0‚õ6"”,X·îÜ¥á½ÜÜœüüÜü‚üG…ù…EŠKŠˆ_A‹°²¼ªš‹Üë`WÕדü -*„^5×6Q«©¾¥EîÂÂ8V+!,1—ÕªpaA -KaÁâ÷ö.+ˆÜ{ûaõ õã[ˆ`‹Z„C8ˆZ„}CCì‘ìrµ›»šÛÛMUuµåUU%ååÅCQi»¥CyeEyUeeM56ëIÞnlj¬o4Ö76°;¼?ÈêÜÅ°–lÁ2uB‹°»»»¯¯hNMLÏÌÌÎÚæìN`y}±BÈóW°©H&©;ò+öö'ŠÆ1qñ;Mv;]v”¶ªF:,ßÄÔÌ׿þ 0·˜b n¸B®¥ò\]¸x71(¼sóWY˜¿Êξ -üêòì6+ërffvŽ ”>E¹Ñ‚õÚ+¯ž}ùåWüê¥×Ͻ~ãÖMö>Z.Râ%ºñ*ˆ,ƒÿ¨)ý)©D+*À¥øÛ âuý©ÏŸšïë„Aµœ* .÷¥¦¼Ô§gS•¥§UÇ®”MqqTׇ}®OuU§¯ qÒ%¦R‘—rS3c^E«Qó%PB0·v”!ÏÈÁƒÕö{|ž` ‰ÄñåÕ¥* &Iɾ±¹#¹­v¨$xp´w@ÌêäàäñÑcp[á$ÁçÔÄ´1«¨!øÁÇf%c«S6z®ÔUÁ>&7;7\‘˜ý©(f‡žàÑ ;°½Cè níðžà*¢qÔ[…Iod×±&u¹¹y&ÈÅìT¤¨m( N@àjvf”P0LpÁÁ~ -,ºì·{‚^! øC\oó±ørlieyeÒVk°×Ö·Ö9¶ÚÅèn‘Jíìà$Á#JŽA[p瀛Ûw¨¸“·vE±Û›«ë›ìL¹Þji…/ŒÃ1H[ùÀEïòøÐm呔춚A+û4`«±ñéÔ[É%AØ#¼*w†9¹¢560,Á«)Tµsx5i››"[;«ÙEç¼Ã5­L·ÝéÃW>À+¿Óë‡[¸pI[Šcq„,øU0gW†}Wèÿ¼Ñ—¾ô¥/}éK_úÒ×ço={öÍ·ÞÊÈÌüú7¿UV^Ñ?4lííçKÜòhB¼c†‰„½fîr‡Y°Ú;;[;LàŲ¢«®àѣ܂üû99¹–•W »w®Ý€µa!D°Pä~ïÞDX|aAAþ£¢‡ÅÁ*4ŠË+J+°EXSSQ][UWÏSXõ ärŠ«¹ŽmÈ_ùŠŠ„4…nÑâÞNØŠf*ùV Ûš;:[L4‹v¢Ë -¬^BX£c£bkJBX£ãhÁ²öõ›0‚ÕØÒZ+F°ŠÅ»-+/¯-X5Áª¯3Öaa‘»„¯€_Õ‰¬úúúÆF@X--­íf³Åjíëë#X6›mn~Þ¾¸àt-ºÝ.¯@oç…‹2W(ž„y+…n“<•\¥+XÒ™‘©ÏÀÞý›ßÌ€lÕ¥‹ˆ¯(‚Ew(‘Å>αÒªó2¿"u‘RX ¿R”)‚ÅþH E~uñœø$¯P„ESÕ -¬—2³2äæFyþJmÔ&˜¡H§ rP †,) PÐ#z´DT>~<¨¡aj>&?^¨Iy”Ñ)eÌI²’I”âPƒŠ­=ΔC ¨¯ƒøÇôâ,*¸Ó 6õY«à˜2?&á8oÊ“¨Ÿê1 zÙåüé†3“ˆ|ÙE$¾O¬¶B%ûÕÙ¶ ÎƱÕþÁÎþ!`+µ:9lõôÜV döü½çX£V‰3Ñjõ‚êÿ,2+¶úg-¹zñ‰Ju…+>Rð]ÀVòžà;¸"lu|Bbv\íì®on¯&!p%ê­âìçà;ž¶Zp¸æ±'837?3;ØJÔ[MLÂÁ±IT²O¢•}zfr -°Õ4Šæggæçv‡{Ñ=A·Gðxá’r½U$‰&¢q4†%p˜à*»ª›¸Ú!1;0·CmsÃ41ju(O¤;;üv ª…{[{It[AÔj}Æ&®$ÿ?öÞ3º­ô<×ÎÇmŠF3ÕÛŒâ$ßç$.ñä,Çv;99ñ9N_ÎZKT—ØI‘`'‚½÷^Ñ;щB€T¡(Q}4š"iÆÎ)içWþø¼Ïó¼{c£q&ùçYû]ï` n€ E\sß×# „tÙï bIÐís8=¶Y—Åî´ ¶2˜¬:£E£5Îh Ó´²ChjFp[CÁ”°ã9«a ¶e{bˆý1>E¶+RµOýÓM¼ÂΠÖhÑ¢óÊ`áÉ+ -_¿²9Ív)°DŠE),²#–à –ûƒÁù…ÛÛwÙ?îïðTþ G^ò’—¼ä%/yÉK^Ÿ¦¥×é~û+_Ùðà¡#G~ðç10<ÒÓ?Ð#+v¾»ouî²ú1%Î"ìíZ„-$roV{wOK{‡ª¾¾¨D‘“Ÿ—›s)+ "X¥¥._Î<{ö¤È¯(…uöÌ™sçNŸ;wîÒ¥ YY³`aV^^n~A^QqA‰Bl–Và,ÂÊêŠêZLaÁ,B¶«Ujίà²XØ"l$V¼Ë)VCõc³›i7S‹VsGgkWÛì`OË ŠÜ‡Iä¬áÉIBXIJa€«W´`5·(ëªjkË*+Kpaa Z°JKKËù Âj¹«0y¥Vãæ.÷Ä®xþ -“ZÊR)‰_Õ75·°g»³³³§§·ŽŒŽM K«Û "´YN Lîø -¡ŸoO¢% ,—×'aS;‰Á%1•t†p·tV»O­Þð­7ßÜ»7###Ư(‹Å.£½‡È•Øþ{Vì”:€”‚ùƒûàµ{ø Ö9~øð1öR†\Öƒ på¯y½Æ'B…ðå]¯ ,X¸ÞøÒå•Uþ`HyŠ/úÅ3!D§œŠ‘¯# ž/I¸gi±."I$>såMÄŠq³x€–@Ÿ$w×XLxøÉP+1%½-9¬Å\n‘2Åz³®dŠ•2d•bt#?ŒDØåMxJ…ëxãïÜ›F¡ïqz`(§? ÍGaìÝw[AÚŠÌáBÚêêM¶Å’àæ-t[I°U¬$øX‚­¸Œ”VÜj•"dõTØ\uõLô\Iz‚¸Šõï=ØÆy‚7oßÙܺ}ýæ-vxk×n°^^ÝX\^‹,­„Ioåƒy‚+»ÍaBl¥7`OP‡z+ WqÃ'&§qЮ„a‚3Z=Œ`¿p me5[ì :fÝNÐ[ù¼¾€×ôñKÈO±HØËç‚Ƚ»½« gB‹"X]=0ƒ¯¹¥ªVYpåJnAÞÅlŒ`•SëBæ™3T!„A„gÎdž>M"¬³`ÁÊæÀ Â"D¨~UV®¨¨ÀV•8…*„uj°`©TdÁ’ "$—{Ž#l"„…ðŠ6Kûƒ4…Pìçl'$¯(p%ŠÙ%=ÁÇ÷ÄÀÕû[ÛwonÝÆžàMvœì€—×6–VV––¡'áØÊ “õ|ì±ÛfÞ´è`es¢’}†°«‰I, Nk¦f´3ÝŒ°è­Œf£Éj²Ø¬¶Y«}–ôVؤÀUp. „"¡ùàÂ<ÁÅeÄV f¿JUÁUt­‹e@¶7DÕ•µ¢+@CpýêÊ*ì¥[!¶Z¶Z -Ï/„ÂÑ`(2€’ Çt{æ\n?$îfÝVH7Í‚ÞÊdÕÌ4LpZ£ŸœÖ’|žÒVÃBIph»ƒÂ„Àb+è NŽNLNNƒê -RjZiapFgÔ@ÓD±+œWz^Ùìbø*†°b™bKˆcÁvšõ +„s p„üðlÏ_¿±Éþq£òß9ò’—¼ä%/yÉK^òú”­ßøÍß*™ªÅ“·Ôÿä$›WÐaíK‘¤ú„8+Mw2mþM|‰ºà•?ç áùyr[ i+œ$¸±võÚZ,m+ ÞÒVÛw[=xxïᣤØê / ¾ÇÅV‘S½÷ìÙûÏžóýôy2¹’ô9¶zûñ“G‚˜}Å»(fßâz«Û×on­ƒÞêúÊúÆ2ôAoŽ,°‡†=AÐ[Á‡2ö[™u¨·b¿/xOpFCUAÈ MLãHA®·â=A0\Ø­ÐÊn1™m«ÝjŸµ9œ§›ôVì ²/¶ -шFÄV K«KËk˹Z]¿¾ºõìTD~uíFì¼8CÌ]WW ©µ±´º­ÃŵèâJdqyžJ‚á…b+?`«€Ûn+Ž­ì13["¶šÑ¦ft„­Æ&§[M RC§­X ¶Œ \a. °Õð8ü«Ééñ)\ý›ÑMAæ -bWÓ:Ì\QgЃW¨½“W¼<(F°8Ų»aÙø¶:È‹ÅíX¼HèXįæƒóÑHtq{û>ûÇ}}ãšüŽ¼ä%/yÉK^ò’—¼>ë›ôGìô+¿ó;Ç_"X¿÷{…ÅÅCccÐ"„"!ìn<ßÕÛ×Ó×ßÙÓËX<‚uÂönjÂjÅq„í]=Ý=Í-•µµù……9y8ˆ0?"XgΟÏ<{ög§cüŠÆž=Ö… ±VAAnaa~ѕŠÜ+1‹{9E°À‚ÂjHaq—;ˆÜÕ| -!±ø8BçW0PGHþ+±BÈAV}KZ°(‚³ aõ õ A‹‹Ü^aN‘_‘kp¨ö6·uÔ56ÕÔÕUT×”VT””•‚«´ôJ)X°Ê*ÊÑ‚…ã±Bˆl -*„¸Õµuu˜¿RÖÔR—ø»"X Ájniik V_–GØ»°qD¨Õô&³Éj³Ú)‚Ý(l R…ùÅ®0…EýA",ˆ`¡È}6±6(­Ñyã§Î%iø…±>ì%äjoŠÙ +¹Ú´j×+»w½ò -ŒÜˆéå—_Ùµë¤X¯ÁF%ö÷²WíÁà -ᡘÿ ->…Ž,ª -ü*ƒó«Ý¤pçüê _üâ¾ýûKË+æBát Æ‘È[vÚÍç"5¼J`Mž¤TU2õŠ»t^¥¼Ã´·#9©ÂK©"[ q¬„”WÊ3ž` êÚéà%Ã` ä†qýAñ’)µ”­I—×çAlDl%Aš$¸º¶²¾ÎK‚×0muýf¼Ûj›§­îÞÓVÛêÑãw½Ã•ì1;oâêÙóp'«8¼ WÔDrõäÑã'ìKÜÄç n߃žàï n±#ÜôV‹Ë«ì±€Þ -ŒOaR”Ãcwº­§ÙfÇè‘Yg0iu¤·Ò¡ÞJ\M%ZÙ§f4Ó3`ngWÖê:½QÏ{‚ ·b¿Xì¼'èg_°U0 •½pF4ÆWPë#rµ‚nöÕ5ŒZá”@2\qZÅÃWØDlµ¶NØ -J‚ÔD·Õ*–IÉŽØŠ”ìè¶r¹ý'ŠèmN‹mÖl±ÑE¯ãi+P²Ã#˜Ÿ‡´Ûƒ#‚iÕÀàÈ ß¢¤] W8RPè j[Áª‚Ó|óØ•0gТ5Xu&¶ëÍq3ȯ„-F°’6â¬ØtBa(¡Ýí›õú]ð XáHˆ=ûK+[[·Ù¿ïÿôÏÿ,ÿ©#/yÉK^ò’—¼ä%¯OÓzýK_:pèЃôß~Üá«Án„W±,V?é°(‘Õ‡ q£È»ÜaÁ8Âæövvµ–ŽÎº†EYyn^^6"¬¢’’+%Š —/Ÿ9wîäéÓŸy -DX™™Ä¯Ø…g(‚u9ëRNÎåœÜì¼üÜ‚‚¼"DX¨P—‘«²¬ªª¬V%Î"ä R‹tX$oWÖ7Ô«¶&ÖáüAq× ã¥ -X„°:Z:»Z»ºIäÞÕ¬>Š`ŽÓäÁaLaˆ¬Ñq0‰ ‚‹= -Áª®U–UV’Ƚ=ȯJËËÊ*** ‚UƒÁ*‘+eoÖâhBÑ|F, bìR©ØÓÛÐÜL,nÁŸšboÐ ƒe4-VD蘅L!ôñþ a‰þ+R`B ÇñÏIußñÙnwì}Iø”XFÓè ùW?úÜç¿°w/%\íÚýêË€­+íB²ôôûv½L{׫»^A„õ -P¬Ý¯íy ZûyëÀáĽÿÀ¡}0|p¿´0(Z³âóW Àzñ¥—^|ñÅo½ù¦Û7çôø’Œå)€U„ñxP’äCOâ•Óo'îOHÆ’¿ÊÇܹç?vý”¡/oòƒ]ô’û÷$øê“#v<Â…žTLZ~L"{®hñÉ+žÛ*@%A ¶ÜVkW·ÕõM* ‚Øjë6¥­¶D·•$mØêñ“ÇOžp·•Ø”D­ØþàYŠýþ³çñ’+>XP4\!¶zçþ£Ç0OðÁÃm³ßÛÚ¾Có¯Þ¸¹~Mè .¯!¶½U€ôVþ¼žn»ÃÓ[AOЀ#yàŠ€gV“$fç%AÐ[á -°Ûz£Å€=AÔ[AOpÖÅ^´€­@o5ÁÊoØa«(®Vh¤ ˆ­VÅy‚¼'¸Î±,µV%Øjiy], ¶Â´|­Pt.ö “…’ ÇJöY³ÒVì°u4LP«Ÿ‚´•ÒV’’àˆ ¶Š/ I±Õ˜¸r5Áîaf”=o!‚~5äåAN´Bø&ˆí êE‰Pê^Xª¶]2¼’öÑ€‰Õ*ë^zùåÝ»_Ý ÁªÝ˜¶Ú…i+Ø/½ôò‹/½ü’¸d±+¼²k»&YhÁ‚VÆþƒûö! üjßÁŒ}^8Æ­Y¹ÂSœ?¸ ÙË/¼ðâž={Ø7ˆÂW©PUJlÅ?™L<™Ù!h”úþ“Ù}H5:ég“ÏHÎ{Ò˯øùT)Åñ'>dwÇ{þØìVjèŒ{VS÷ÅkJ¯àLÑ£LÌ}IÅeÀ Âó¡H”ÜV â$Á«kW¯SÚjãúÍk[yü³.&%Aî¶2-è¶2NcOpÇ&ƹ­`Œàl`V#¸Ūà0f±èR°ÍõVÓ¸Qo‰5ÑÍØjòl„­Œ ØJ¯óȯìT!4°3V [%ıBYèÅbV¯@áîóøCÞ`ض1öíˆÎGiáæÍ[òŸ:ò’—¼ä%/yÉK^òú4­ã¯¿~èÈ‘Œýûü7?éêí#lÕ‹äŠ#,* -^÷®ÞþÎðb¡È½¯£»§­³‹v ",´`u «4;/7;'çrvvQII‘BqáÒ¥Ì3¹:™™ùÖÏ~v -X`q?{öì¹sçAä~ùbvö圜læ])(.†Ú]ŠÜË+ʪªËª«Ë«¸È+„uUJ¨ÖŠþvˆ]Á™u=ʯÉ¥¬¦B‘°EÝÔB,u3ï -³É‚-BŒ`õ´÷p„¬˜È}b"XÓ”¿øÕXÿð»Zg_?`54°ƒ-Xìy(„A„ŠR°`UVVÂB~¥D –º®¾žƒ,paÕQ‘°Fa!¿RÖÕñVE°ºÙ·-Xc£““3 Z°ØX‹Ínw8íÜù#ð«9>p0†°üµAöFØ -yæ©ÜàžTæð”#ö<"3‘²v^g4ÿÍßþô3ŸùõÝ»_Û9¨]…zÒP/½L§/¼øÛ²^~YŒc½‹w _{-cïÞý2 ExdÿþCû÷Ü·ø5Ѧµg7®bÑüÁ½àoÇ/úÒK/í~õÕ¿ÿÙI/¤^O¥DO ÈhG”„g<üjI×ô|\J*ŧ$Wð$\˜.öÉhUútÙt§:0Ïǃ'È)¾ÚéMžÆ(ާ݉¨Öï÷Ám]6®d_Y$lµ¾±~•J‚›7[Ýܺ~óNÜFlu°Õ½ÒV ¢‚’`ŒY½+F­Ò0«x•>põöAÌ=Á»noßesóÖíë›·®^¿¹~õÆêúÕ¥•õ…%QoñáϯËëgÜæpYí³f›°ôZ½aF§›Æy‚(`'%ûô¸¶1ûŒ–[Ù5: ®ôF3Ì´ØÌì :ÜÔ½®`ž ÇVáÈâ|tiaq%º$®pžàÊÊÆ*H®®qfµƒW„³8¹Z»äŠc«ååu -\±ÇˆØjq”ì¼$È6`+ß輜 ó‡ì4YìF“MoD½ˆèIo¥›:ûå,Q² %AάxOP’¶æ ¶Š›'8¥ŸÖLht“¸yUPg 7{\àJ„W0mÐÊ"¹ýWzÜ€°ø&~A,<ŸÊš•&²,˜ÂŠå¯HåÇôlh>Žçỉ.¾óä=öïû¿þŸÿ#ÿ‘#/yÉK^ò’—¼ä%¯OÁúÎw¿ËN¿÷ýï=vlßþý¿õ•¯””• ŽŒöö¹”Â+jv Rw€WÁê£aˆ°ºÚºautv£«µ -#X¹ùy—²³ròóKÊÊs -Ξ?Ÿyúô[™™?;uêäéÓ\„…)¬³çλxñF°‘{aþ•bŽ°ÊQä^YE,ꊫºNˆ`©ëÅA„ÊúFAÕ(R,±Ð[Ù.›}Öb·SOôVzƒX$%;b«), rCûä4|v -J‚„­L솣Åh¶™Ùo ›ÃfG+» ·òø‚þ@h.8ó£qó!mµO2\¿ -Cׯ‹{]ìr±l)¶¢›cIp%]Ž Û -ÒV¡H 8+}gÙ‘€ÛJÀVfL[éMVÞŒi+=<^|°cdeŸB;Õ)g%«!‚WcƒÃ o‡ Vv[Mrl51Íç Nj9¶šz‚Z ØÊ‚ç…̕ɪ…m#m;ß&›˜ÂÂü•H±ì©Ýä*Ư„3„…ù+R`Ùãî¾9ÃóÑìÈòêºüGŽ¼ä%/yÉK^ò’—¼>}ëøñ㇎Ù³oßßüô§Ý=}ƒƒB«¿w`¼XØ%ìçuÂ>šKØßÉî==½€­º ‹Eƒ[Ú;ëË**sòó³r²/ee—\))¹pùræ™3§NŸ~ëäÉ·a¿ÂÖlžƒA„YhÁ"‘{QA1´‹JËJ+@ä^ZƒiK+„Õ*5œ!–8…°í¦Z>‹°IÕØX×$Î"l¢tò+¾ ^Q«¡µM´`á,B°`uCkh`x-XB…pz˜[°&Ђ"÷Î>DØÚªjh¬¦VYÙ•R¹_‘{©¢¢¬¼ª²¢ºª²-XT!T«ë^ñ ð+uˆÜAáBvZC¬zuCSSskkk{Â{z(‚5ƒÙ»-a¡…,X”†ry}^ŸŸÓ*Ê_¡³-âWÁ¾A~²È'M¸(íP÷‹/~ñ…¾Àþcç^ä´ŠpÖ_`Ÿz‘μðÂK/ð:á.2ºC%[{öfìÍØ—‘q`Ïž}³zu/û,”wífW…kÂ…õÃWš½ôò±ã'Œ«ÛçŸõ|Ž|—ÝóÃÇï<Ä´Õݶï=ؾ{ŸÉÍÛÛ›[·ÙABOðêõ•µ«`e_Zž_X ÍGçB *’ãXGÃ[¢ÜHVö-XÙAÉŽ{|rz3WlCIˆ`+ž¶2é &½Ñl4 z+XÙÙ³ ØÊã÷øþ@xôV‘P$Æy‚‘…¥…¥ÕEܸZ†‘‚ȬL%”1g/¶;¤­V6Hɾ´ -Øjai>º‚’`Ĥ’ ”"ŸÃé…’ z‘ì f›ÞhÑ[ÛŠ† NΠ’} -ÒV£ãÜ^“‡E+;Ûý Vöá1( ‚Þj±Õ”¡Y Ì -¬ììεÔ4Ì ¹ÒèM3 †+nhçi+~Æd•R,aéc-B¯ô–ØPÂÅ‚^¡ƒz…†xŠE"w¨r…;T¥ -¬çWðýºvã&û÷} ä?rä%/yÉK^ò’—¼äõ)Xoþñ³Ó3§N:|xß'Þø’¢¼bpd¤w`PÜb -‹òWb -«(V?·`uÃ8ÂÖNDØÑÙ…Ó !‚¥T\¹¬ììÜüEyy. "<—yæÌ[™™êä)Iëô¹³g/œ?w #XÙ9Y9y9y¹……Å%ùWŠ‹¥(r~…ƒ¡B),%¤°ª•¿‚–ZÍv5Ž#TÖ7ÄòWèŠË_áB!E¬)Åjhmolë !D°`a÷E°F¹kb’Z„<‚5>546>8 --B>ˆPÁ*«¨(~¥(,a§¤"XUU•(r'±a+vÊù "—{-ò«ZGX üª^ÝØ(¶»±û98442>>65=­Ñ±·´“Ùl³[ ‚åš% –X! „Xù¤kŽWçBaÀ;n÷¸G–.¸…Ë_Q]}àÐÁÏüúg¿ð…/~ñ‹/¼ À+âW_|á%‚WT*;æ¯v½²{÷«¯‘Õ*¯öíö½ûwï~íå—w㆛PåêŠl¿ò*»ç£ÇŽMku.¯//JÙû“~Ö›xµ”GJ ”)%§Ú!j•ŒÔŽÓåMý¥“\Šœ•'uþ*îq¥çQÒHq'ðbó¤»a2(KfhÉõCg|ØÏål%Á(”#‹K K+Ë«ë d߸º~ÜV›W¯o^‡¨ÕÖõ­[›[·Pɾ Jö;÷î܇’`\Ú -Ç>Ž/ Æ¢Vˆ§ž§úðiÒá•X¤›#¶Š³?|û.ÍDl«­Û×`žàæÚ5ÀVK+k„­°'HVö9Ô[¹ãØ„­tF³VoÔhõ3TÄ×[ñÓiÈ\M¹bW@½•N«5ètFÁŒ+«Åj·:œ`ewzØ3ìöÍyÀ‚ç68â©ÅÐüB4Ê­ì Ë«‹Ë(f_1;¸Ù×áT’¹¢é×Wñt±ö -7Ä’`ÓVì># d_ -’=F|ìëÎ…Àmåõ;ax¢‡¤­lb+Þ¬Õ™[itS`¡Å€Ô¤ž / #³FÉœUÙÕÐÊÎ6è­Æ§(mz+ -\iøŽ°[„-mí=}­]*°`•åäåeçæ^Îɹ¢PŸ¿|éô¹³'±BøVf&;sòt&ò«sgiaVF°r„Vaþ•+Ü‚…÷ÒʪrâW Âj¥P!Äþ F°ø,ÂX°SX0‹XpªfŠc!ÈjÁ%)¬æVD(¶;ØC†!",X4‹-X“)#XMmmì+V© ‚¥ –¢DÐ",/¯¬©B‹{­’ʃ<…UOBv*L!$Š…Y,´ ëÔêúÆƦæ–Ö¶öŽ®îžþþ~X£ r×h¦u:WXl|¡Ëíô@XÅëòüm¸ÐäýAŠ`‰ƒùb!™”­1O,ê“NÁv<ìýxiyžýû?óë¿þäW\{…§µzÞ!s…•À×öìÙ³°Uƾýûö ½ÿÀA¶<Ä6ÙðÐÞŒ}» Ÿ¸ -ƒ ‡æ ûB¿ùÛ_1Z¬1¢’žIYP2w•ô©²´ó…³©rPbŽK„]R¶dKÆJü¼{§XºÃK—K—(›M¦ažB\éŽ<1ÿ–jD# ôÏÂó󑞶’L\¿*`+( ¶;Ÿ$i«Ûw[ÝlEi«Ç”¶Blõ^jlŸ³JÂV&WIÌ.®[=xôøþÃG÷îCà -{‚¨·z‚+ëW—W×—V#‹P ƒž`0Ì~$#»PQnw˜­vŽ­€¥n+ˆ Ŭì“R+»V°²ë5:=»»­Áh1!¶²POæ  t{ÉÊŽóCÑ·²/G–Ù)¦­ jµŒ*„W¸ºFÙ*Y¡‰)q-L[’Ý|ay5º¸ŒØŠºQ¶±$n+/àöÌÁ$AH[¹[aÚʪÓ[¦QÉÎ6¸­Æ'‡Ç ²í?Ô[‰Ý@VÃý¼08:›'(+n¸šœáØj†[Ù'µúI&ÃV&Þ䧸2ó÷´K˜Yñ—àÖ q¬ËÌA„²D5±hX¡Ã(U`9\6‡d¡©c 4‡ØŠ½xæ£ ¡p$<¿°²*Ï"”—¼ä%/yÉK^ò’קmýò—¿hö‚È}dt-X NÁüÕèä4ð«1γ`ut Bu=;ÔRŒ`ÇÃA„Šò²R°`UVÖT‘«F¥òW„°H„B¶«k~….w°`544677·¶µuvv ¬áѱ‰©iÛè z“Ùdµ[í³±–×/ð+Ê_¡;%/¡V 4,OªäŒgçÖX‚Å=9\^öf¹¾±ùÈÑcŸýìg±$Ü -Œî»vcIðÕ]¯ìf§ä`'lµ7##cß¾}[ fuðÐaq:|„ï#G9š±ïÀ®]»ánwíþìg?÷ƒ?ÿ < i£JÉ &žJŽZ%# 8/)&g·DFWHV)©q³ä£yWJ`˜xT„†â³O.OŠdW‚ºJz¹xN=;•%wx\âir8- paÚ*foÌ#4Ip™»­V±$¸qí(Ù¯#¶Ú±Õö­Ûwomƒ’ý.¤­Þ$–…1‚ï¾÷#øÁ»ÀÁd`õLØ;À+îf'r«wcbö‡oß{ðèîý‡"¶ºÁ{‚7Ö@oµ¾¸"è­æ£sО º1€dwºÁÊnµ›¬6½É¢½”æ¦IÉ>½9µŠí™Iš'¨Ñ±ß3:°²ë &\™¬&˜'è°Úfíç¬Óërû=ÞÌnðs½U0 LÒ[¡•}FROIT,jµAØêš”bQ rVkˆ­–ù$Aöý"·U8² -GÙžC·•×ôø`˜ Ó =A›Ãm±ÍZ¬03Y©$¨Ñ¦Ôa#rftbzxl{BÚ -³U„­úÙ¯eÁÐ.ôñ”÷yA^kbš† òy‚¨·âä -æ0’›ÝVÒ¶ O^YyaÎ$ÀÊ(t cËãWF‘e%űŠ¥·Š,K¨Šù+>‚ÐÍù*°f~E -wz†¡N‹"¸µõ«ô¯üÿþÇ”ÿÔ‘—¼ä%/yÉK^ò’ׯúú“ï|‡?q,Xý·?íèîîfÕÇÉÕ¹âR÷^auŠù+@X`noïì†a{ggO_[gw]}C±¢47??;7çÒåËWJ zƒÏž=•™ùVæ)¶–™É+„gÏR -XÙ<‚•¬‚+%`Á*+/A„UVYCXÀ¯êªa‘Ë]šÂDXÂV‰]Âz<ÃùU³À²0ÕÔR,¶Ûpa\«›=|öÌ á B˜´.¹ÈŸ‘»0ˆ°»±µµ®¡‘ayu5",-TC—°T¡(/+§!"¤VÎT7à™úzU "Dy;Ì"¬xEB¨b‹°±¥¥#XÝ}}}hÁgom53dÁ²€‹½vˆ,âWTN)‘åúƒPØ 9Ùûèô³äfB8îÔ(#Q|$œ÷Îlç_üç¿ÌÈØ·{÷î—XQÔêÕ× m…äj{MîÝ·oßþýD®bØê02«#GÙëöÐá#‡=|ôèá#ÇŽ…}˜ö‘£ì&ÇŽ¯­«÷úçœI (Ñ^åòÆ—S‘¨&J…\ÞÄžàlÀ1N -2æM£’€#Wê@—/¸¼q_EzIŠÇKpd%à/)ps}à¶î‹»Ow\Z,ášn¯Ÿ½CóÑȦ­VÓ§­nÝØbûöæ­Û·noß¾swûîý;„­ $øÓV¢ØŠûØß}ÿ© dçz«§Ïž'`«gI+n°àÏ%ØJÒ|„ØêÁÃÛwïAOðÖÍ­[×6·6pžà -Ì\[X\™.†"Ñ@hÞ=ÁÀ¬€­,6‡z‚[i´À£ p…¤ñ‰iØ“pË\Mkhž è­tÞd0š&«ÒVì7€Óæp9œžYÏåõû|Ab«`˜ë’æ£K‚˜}5º¸ÂW°¡ý#ÑsEØ -Tí¹‚8Öú51Jv ^ˆ­`’àRx~ÜVóQ?a+Ðã ¸=~ÄV¶²Ø¸ÎKo´ê vä€H¨ó‚´Õ ¤­F'xIphL´Zõá)’+ÀV£Ò‘‚¸±Ÿ'8…ØJ\Móž >Öd_]'1\ImWÒž ¸pI -ƒFK\ÁPYÆȲXVmütB½%¶cF,›]GhÆ -!(ÜQ%ð+T¸Ï…|ì÷vx¾›ð …ïi²X‹·nÝ‘ÿΑ—¼ä%/yÉK^ò’קl8thÿÁƒG¯Q©ú‡úûaõKèP«¿#XÜâÞÛ+T{:zzÈ‚ÕÞ8«¡¹¥ª¶¶ ¨('/ïRVlá9ˆ`}+óÔß‹w¬²}æÂù³—.¿Œ÷Ü<DÈv¡BQTZVR^^¬Êòªê -D¨¬€A„*HaÕ¿ª©‘;öÕ¼jTÒ)M!lÕ¤lD£{ƒ soŽÉ¯ÄM.÷†Öv¹#Âêéèí"X#ȯÆFƆÀ‚5É+„“Ë VÏÀ`{O/{6ê››Ù1TÖÔ–UT””•¡«¨TQ\ZZZQVQUYU üŠ,Xªzµº¾^ÝЀ«^¥~U[§b§ pW‘Ë‹ÜÕõ(roïìììééí‡ ÖðèØød°´Á²X­ˆ`9<Wl -aÐ'(°|Aj…;"¬ð<½¡Nî&(žÒŽ«s§Î/‰žsv?ó‹‹ìEòõ¯óØñ{öfàÞ»7#CÐ[!¹Âžàƒ:Äö¡ÃGŽ=F!«#ÇŽeû8Û'Ø>vüu¶?Î.?ñÆ—~ç÷¾záRÖ¬Ûã pP2 r%#o"ª¯™Œq¤Iªt¼HÌ,%€ éMRÞsŠ›H‹;®ÏèJú¢ ¹¦Ä§Â›ˆ³’?LþTÂuœt©î*?†ÎËI0ˆÚØ‹0Ž`Úji—q’ ¦­®Æ”ì[ÝD%ûí;÷¶ïÞ¿{J‚„­Þ‘`+ð±CÔêý§ï~ð˜ÕÓä´ÕG’ý¡pšä¹zúœÝCBàJè ¾}ïÁÃí»nݹ·µ}gŒñ[W¡'xz‚ K+deçØʇ$—Û6ë²Øìf«Íh¶èQo5Cz+&8>53 «)1jE…AÂVÓ0O{‚¸2³››ÌD® 'hŸÅy‚^¿ÇË~öƒss¹ -s1;`+\­RÚj‰“«uArEÅ@°¯"¼¢Ë±!È£Y]Þlå Ù‹°ÕO[AIÓVX¼q ÒVȬnñ’àÖöÛw $xçžè¶JL[½#i‚¨Š—?|ŠäêY"¶Šñ«§ñ™+ÀVOŸ%®>~çöïÞÄŽW›[Û7(puíÆ*ÇVI -G‚ó0eÏ3`?\ìGÒîtYí³&+¤­ô&3¤t€­ '8eÀ‰©™1ÈÅJ‚ãS3ìBö©i W:v}Þˆó-8Oò–‚ÞÊ‹Ã缈8¨'ˆ–o H[­°Íç -Ø -%Wœ\3¤z ÇVÂA`VKKë‹Kk K+ÑÅ•a+°¾¶ -ˆi+_Ðí™s!¶²;°i±ƒ’ÝdÕíÑg[éØC#l5L¢ªiIpd`ˆ¢VCýƒ¢¡Äì„­€\‘Þ -ÉÕôèÄÌè¤fª‚š r…iÄž ^³²›5¢˜à•AJ¥Ì± gVVa™Oõñä*¶ãW¿Ò™mZܱ–96‘Æ‚ÿŠîÐ"D~åGÎz Bè †Ù¯» VÙO ¬|£ÙOû9¢ëÿáüOùyÉK^ò’—¼ä%/y}:ä[>täˆJ]ÏùÕ + ¼è“t I„E ;{z;{úHäÞÞ .÷öîÞú¦–ÊšÚ‚¢+9ùù—²³ròòaaAY°Nbù·`A [„¸+/;/?·,X%Å`Á*«P È½¬ºRXÀ¯”lWÖªª”*²`ÕŠ -¬úúŽ°1‚…B¢XP$äðJÝÄ˃R"¬¶†Ö6²`µtvµvõ`‹°¯³[°úAäkPàWÓˆ°páÐpOÿ`{O»9D°ÔêªÚÚ²ÊJ!‚UR¤P””–––——UVTVWãlAöÜ×C1ÃWuÂ)»-ð+ʯjkkj•Ø(侬†¦¦¦––ÖŽXkhtllrŠ½Öêõz¯ÚfÁ‚Å#Xs®À -°[„À¯BaâWìMo.ƒÞiŠ%J¥’r> ©$qû,ûŠì}}CSËÿ÷wÿýÛßùî׿ñÍ7¾ôå‡íC„uèðáÃGŽ¹:vìèñãÇŽŸ8À -ÈÕ±'Ž¿þÆoå+_ûÆ7ÿôÏ~ðÓ¿ûïå•ÕF‹50?ƒÛb E<ª8´"ÍM혀JÉ…œ©ÀQBw/kJ—¿Jwµ&%…KÇÁR&¾’`)ïsîÜÉÌÌ·NA‹PàW  Î_ºt!;›"XÀ¯Š®\~UTVVRQ¡ÀA„¢«Z„JàWÂRS -«VbÁ-î°…:¡Š&B…“+Þ"ä:w@X ­$rç,DX} ÂbÏÆàPÿÐE° …5194!¤°¤¬¾þ6ˆ`µc«Ž–”•A#R¡¸RZR\ª(­(¯¨ª¬®©©U)ë°Bˆ",¯T|¡ï‚Âtî<‚%X°Ú;»ºúúú‡GFÆØ[Þ™™XËn›u²÷’.¯×íC‹;2+?ñ+4_ù’òW r÷ú“ƒU"zJDzҴK‘n’0ö¥ÃѨËëëîíË+(üëŸüäû?øÁw¾÷§ßzóÿàë_ÿêþáWÿà~ÿÿðkßøÆ›ÿé?}÷ûßÿá_üç¿ú¯?þéÿÿwÙ9¹-m&›$Ø(ŸwÅg¢„}©QüçŽÐ鑨V)ËŒIÛ—.¯%\ß—²÷·øJ—׊Uüïøð}Ò»udz©”ÏFü÷ ªo.È^`8IpÒV«¤dGluÓV›˜¶’`+˜$HØê¹­ÞN* ¾÷‚€Øêi [%欀Yýü¹°ŸÑŽ#WRàŠÝÏ“(põ®žHW€­@Ì«Û×on]½¾¹vz‚KËk(€Z -bOýd±×$VçÜ6®·²Lf]O°²OaÚ -2HqJöi/ˆ=AŽ­ôA§3ê–˜•Ý>k'½•Ûç‚ÀŸ'H=A2PAOpq9º¸²°™+ÄVkÒ©‚è`ßX]»«®¬‹Ø -ÅV”¶A•ç[‘’=˜g_°•à¶²Ïºmˆ­Ì;*Ù9¶šK‘“3£ãSÃcà¶Bl5*ÈØã‚"¹‘‚‚•}pl2†­&qž „Ó4¤·šÐbOPi+œ'hÐèÚDle‰3\‰a*C²äJúÙTðʯøÆ ÓÜÊ"ñb ù+‰Å]/i¿2‰üÊé¶BËãðøœ^¿ p -÷HlÏGç£ kWŸ>}ökr‹P^ò’—¼ä%/yÉK^Ÿ¢EY—ƒ‡+ÕêXk îL/± H80À¶ÄÂVŸàÂênC û°©µ­ºVYPXƒq° -Xç/^<}æÌÏ@äžù3Œ`ež=+ "<üêòåK4ˆ0??¯°0¯°¨ Dا -Xˆ°øU¶«Uê*•Š‚X‹»¯g¡‹º„À¯›Ô<‹%N$T77£KÚ"„A„í=`Áêâ,jŽO¡ÿ*Ö"ÄA„ì)êìëC V‹R]_‰,EYY‘"XÅ¥Š¨¿ªª©!O;¥ªÔ ´ ‘ðªNY§ªSXÊZDÈ.a×ihnÆVD°¸klbjJÃ-Xf«ÍjwØg]„¼þ¹˜+Ûdtç -,hÅÞzÇ¢¼‰*gzŸùÇ6Ý3<±ñƒ¡H$žwy|Zƒ±wp°±¥Užquê:èK¶µwwŽŒ²7ò³.7*¾#sÁÇïw¦²?lñ¦fJ‰ŒhÇãü´ö>a­Oz‰;MÁ0™Yíøå|Éú¬ÑÇü¿k;SQ»YÇ…%Aï\`±¤­$Jö5P²cÚJP²o¢ýæíí­ÛwnÅÒVïIK‚OD%;÷±‹b+Ñgõ÷³?z.aVx—?±®Þ{ú Wï=}òîûßåbvÀVÞf€=Áû ·ºµÍŽ“ôV«`e__X^‰,@.ž÷•}Îåñ¶šuZl4\Ï¢3š4z&i+-¦­fÆ'¦ØÏìØø×[AIpfjF35i+Qoe0Y«Ù -Ã'`+—×åöy¼€­üH®‚Øœ@Újž‹Ù¹áJL[n}•bW³Ú@«¤­VV6–xÔ -ÒVRl%¤­¢¥­[Ûj°• ­ì¶‚ž ëÀ1ÅK‚SROƒÛjŒ—„’à 'WCý±ØÕ7\ÁoZvåñ!š'8>9ŒÃG'gF[‘˜}’=¥ZÝ”ŽÄì¸Òµ:®´q@‰ðT³² -))ibjgZ• -[}"%ð1äW4‘¶!6…ó+cŒ_¡kîB…ÐïòÎ+)Ö 2+La çQ%·¶¾A"¬ÿñ?ÿ—ü§Ž¼ä%/yÉK^ò’—¼~¥×øCvú¿õ[ûÜwàÀŸýà‡Ã#Ȭ@VŒb Fw@XýÀ¯:zz;{û;º{Ñ‚Õüª—[°JÊÊr òsóó.f]{y‰ârvö™sg3aý ‹„§Î€ËøÕ¹‹Ï_¾|-X€° -`a~ñ•Â’¹“«RÁª –ª®J¥–º^GX«®W64¿¤î¨so; aaGÈK…° V›Á V{O_g`ñY„X°„áÀÈhßÐPW?D°šÚÚÙW©QÕUTW—VT\á÷’â²REyYYU»¼ª¦ºº¶£VubþŠ[°`ƒ‹RXÕµ5€°TÊš:®†Æææ–vˆ`u÷ B$XÁÒë &E°BËëG„ð ,ˆ±|˜¿"XóìDG$ùœ„™}qºroj÷xâ‡éäQ8JOz‰Ûçóøç|)åqñaç1èñûÙÈIò<¾Tt%–nrJ¡xÎÇsJéÁQÊín˜ê‹úâÏûD¢åNÈŠ†4 åŒe¨|);€;s§Mj%¤¶vìTRäOH[E¢K¶Z^]' ’’ý(Ù· j%b«mÀV·%i«‡o'+ÙElõ<[}HÌêçÏwÜØää -{‚0ŽPj¸zôΓ‡o?Žõï‰=Á[×nl­_»±ºquymcae5Bz«pôVà*÷Ϻ¼v§ËbŸ5á0A½† Îè0p…$ÊVស˜‚= mAü”V2OШC½•ôV6‹ÝÁ~í³®Y—Çébßîôýqz«pdà•džàÒÊÚêÙ…À•è`ÇÓµe^ÜV˵ZEfµ<]LÀV^ȃuH1meµñ’ 1[MÏè&§µ¶š˜D·ÕŸ$8<:ÀCVùç BàJ³’˜­ìÓ0OprfŒôVÓ€­°$È Wð$k ¨·"%;µùL)z|K\ªj‡„2([%¦­tüÌL쌑×ÙyÉã^Š«Æî4…P¯0‚…#c -,'ñ«@XVÀ¯‚Bþ*Œ,kaiåÎÝûòŸ:ò’—¼ä%/yÉK^òú4­‡Á‚Åv²®"FqäªO -² H8ØÃuX¼HH)¬Žî^ˆ`uvµá ÂÆŒ`åæçgådgçå–”–眻x,X§O¿b;óÌi¹Ÿ;öF°²²À‚•“‹-‚‚+Ø",+-)/WTT(**˪$"÷ÚÚ*¥ª²,XD®ªU¤p§V}­º»°y…O!¤çW¯„E°ZÀ‚ÕÙÒÙ‰ƒ{¥"wÁ‚5e–‰ÂŸ@ ÖHwÿ`G/"l¡–²¬²²,X -²`—•–V”—WVVÖTW+k•(l¯ÃüU}c#wa!ÂRª‘_©Tìù¬©­­UÁDBDXÏ®ÙÔÔÒÚÒÖÖÑÕÝÓ×?04<Œ¬)V£ –‰"XN!´`¹+Äù¹°$BxûÏKËeÀIM3>Ö§”øa*EÒ'9Ó„”¤÷:ÑäÙ¡çs YŠû`‘;ÍÒp'¸<éS¾”ýÁ4“îxØõcw#é’vãO}ÒgïjçÓc.Ó øÑlŽ,@Ipeà –ׯŰÜƶھ+(Ù1mõvœÛŠc«žbCð6AÆ.ʬ€M}ôóçþ‚Ÿù(%¹úm.f÷óîR1û“Gؼ÷ðÑ]ÂVwîݼ ó¯onm\ß\½z}ymcqeua ØWƒóìŠë­`Hܬ٠-º'ÔQáVö‰iÍö!m%³ƒáŠÏÔÍh°'h ½b+Û¬Õ6ks ¶rûÜÔôýp 8 ¡•=Bz+0\E—V Þ&ö© («u.c_Y°N$·+jbÚ*<¿HØj. -/¯?àñιÜsèfݶ²:ØfÇ é2ƒ°•V?5­%lÅæèؤ¨dG*+ ö ÌJ8ÅO ¡›}Åì4O† Nóy‚Sšñ), Îð’  fgO²‘È•0L0]w/^E%䬒»~ɨJ+f®65ƒØJV¦i\MKNg„C‚Û¦âW<…%P, W®p7ØìR~eî¨Àr ¿rûØŸÑdÉy>ˆÚ£a¤X«k76¡?xëö¶ü§Ž¼ä%/yÉK^ò’—¼~¥×Ÿ~ÿûìô«¿ÿûûD°ŠKŠKK/çäœ>{öð«Ì·2O< ù«ÓçÎÅýÜ9²¸_ÈÊ~•›—[PWXÄv¡¢´¸¬¬VieeyuÜ B˜E¨ª«R‚ȽJU¬z©È½!>‚ŃXuÍjž¼â,:»…Z„m¢È½½§¯£Z„½ðÌPKhB‘p’WǸ‹=?mÝ=<‚UÇ#XÅeP!ÄA„ -DXYAüª¶f Røª¾±ŸbK©V‹¬šÚZvåj XÁjl V[[g'û.°ïË D8ÃÞk FöVšG°Üä͆&—o.Hüj™•”_aä)D„å™›û$źOÆ|éD; ÌEŠ’Às$ìË—æþEX»¹35J—JäH ÷&^ÁíMÌ;¹9PcTqWv'mÂW‰¿‚/ ×’ŒÏùI)“ïßù)_:Â&)6zœ(X#lŠD£‹0Ip& n¬l\]»†%Áë7)m…äêöÍ­mP²Ã$Á»Ûwïݹwÿîý‡÷D%û;O?yƾûþ»bÚ*6CÅVÀ¬lõÑ/$;Ž_ ¡,q¤à‡ïaàêÉûA1;ê­¨'z«;›·n³CÝ@½ÕòúÆÒ - Ý‹,,±E|s!·oÎé½Ì׳9Lfì ŒÐÔaOpZ39 „jl’Ï“ˆÙ'9¶ÒNCOРÕõFì šmf‹Ýj›µÏ‚ÞÊ =Aœ'èúQÌÎ~<Ñ‘\E–bOp3T¼*§ë²T…Ø -úƒËëË\l:÷hBIp+q%Á¹ ôœ.b+•ÍV»Ñi+œœh`{ -{‚“šÑ‰©‘ñIp[  n+QÆäj [³¢ÀÕÈØÐèø0®ÐÊ>ÃöØ$¤­ÆIo¥ÑMbÚŠ÷µ†iiàŠ¸Sjx%ñY%õ¥©T5@ÀS"°JÀSì¦uì0Œ°u|Óå3솜q‰]Bs*‘»Á²H–Í(Q`™mNÊ_YnÛ,ò+À¯æP‚Ú ±Â~šg/•èõ›=bÿÐÿüÿ ÿÍ#/yÉK^ò’—¼ä%¯OÁ:|ä "¬¬U Óÿâ.÷$VÂêîë“Œ#ì[„ì X°ZZ«0‚•WP•“});»¸¬<¯°ðü¥K§Ïž=y:ó­“'Ùé©3g؇Á:þìl^ºÄ®œ››“—Ÿ“_WTTP¬(R”¿RH*„¿‚üU•üWÕjr¹ "wµÁâ.wž¿â.÷fj¢‹·ë@ägZâ,Xmݽí0ˆ°#Xƒð拽Aƒ±ƒ0‹\î²Æx‹]­£·¿µ³«¡¥UÕÐP]«,¯ª*)//R( -%E%%%¥ŠÒòòrDX5P!¬S5Ô«êêÀÕP¯nl¨olD~UW˶JÅX`q~U‹Ê¬ú¦¦Æ–––ööÌw÷ö²ïÚðÈ{95£Ñ,›}ÖîtãŒ<XÜçÐâŽù+dV±:!Uöh ;D°|¾SO;‰˜’TÊ’Ý¿‹™HCD©1”;)Ô”ãO)/w§ -;%§§Ü‰H*î¼+ s¹wbA¾„€–X!¤ìœ;é>]q¤+ñ†iÐ_b²Ëèù\;á>Ô‹aOÐ;„ÂáèW²¯¬­¬o ’ÒVˆ­nŠ“·oJÓV÷©$øèÁ£·©$ø˜»­[ñ1‚ϞŰՇRlõ‹´›®ÈÜN#?$1»Ø|ûɻؤy‚Ù‘Äæ ‚ÞjsíZÙWAol'²@TÇã›sy|³.·Íá„ž °•Þ`Ò¨;ýŒ–°•±Õ´¸‚’àvažà´fzF;=£c?¢ZÄ/ˆ­0peuØlNǬ¸‚y‚Aqž åùÈb4ºDnvP 8Rz‚¸À•Õ«"¶Z¢Ë—c A؈­" ËhîZ c-„‰è¶šc_Z´²Û.«mÖlu9£3³;-0+öˆÆ& %…ØjŒ§­„¨Õ¦­h zö¾El…ócÃòÍŒMá0A¶5ÚI W”¶â#5ÂæÀŠŸš?¶(L iUjl%6)dÅ.áx -¡+ƒäCØSâ©pC1©ß"”†¯¬¯b-B« p·‰üÊaF„e±#¿B–ƒ½½þ¿ -s~Åûƒa¢XhÄŠDWV؉°ä%/yÉK^ò’—¼ä%¯_éõg?ø;ýÖ›oîÛ¿ÿБ#üíoOLN‰ù+²„D–aA—°‡§°ºúú;Á…ÕÓÑÓ ³Ñ‚ÕÚÑI¬œ¼¼Ü‚ü —/å)Ê*.eq ÖIìžDîg(‚uᤰ B˜sEî¹……WŠ KJ®ðVeY%¯–×P‹P wDXì´F­,Xj"W"¼ªm66Èâ§Mj˜EØó1Ž…‰¬zHaµ5¶µ7wÂjíênëîéq=µ…ò«a>‹§°Ð‚5Ü=0ÐÞÓÓÔÞ®n-XåWJK…A„$r ÌT)•j®À"~¥"XµuÀ¯a±«Õ*±B¨¬ï õÍMÁêèìêííígo‡GÆƹËhÂA„DèF‹;VÙàßįhþ`0¥ÿ•ï „¤¢ªø¶ZZ•Sr¦ 89ã®éKÙÂKUÐó¹R´ðv¨ ¦¸wŠ²^\ê)þ’¢åKuØ1r去øH•;‘qy¥°ËÁŠ¿Ÿ‚‰ÏL’&Ë› -”¥}rR«”÷÷bòÍ7˜ †Ã‘hdqiaie‰ÜV趺~£V d¿qóöæÖ­›€­îØêw[=z›§­HÉŽ>v^äi«ŸrlEö8lõáÏñ\Üñä - W8Uïäý§Ïz‚yOæ Þ¹ûàÖ6ôolÝfÇÌ~uãÚòêú"Î GaT?Í¡ÞÊé!+;õ½•~J££êÜÄ”f˜Õ¤ˆ­ $=A¸b?˜`e×›õF‹Ñl5#¶²²R‡‹Ý¿Ø„Rè ”àUAÝåbv‰›3W¼- -ØjeèŽ\#5V4ºÌî*Y`?ãbÚÊï{ýA—˜Û¶²;­v'`+PÐ[[a´lJp[AIp|j„—Ç!F5(¸­b=Áxr…i«!Ò[áÂ1 ¹‚Š¥fŒ‹ÙÁm5o¸â >JÚdµ”>•ÀJŸ²˜VÀ.«f$!«A‚ªŒ"­JyFÜ1V a‰ó9ÂÒ ù+E°,V|Ë"L!´9½R¸û?üψ@x¢VdÁ -ó -apžDXìe³°¼º¦ln–ÿÚ‘—¼ä%/yÉK^ò’קfQëèñãÕ5ÃÿŠ‘«¾${w¹‹)¬Žî XÝ=0—°*UdÁÊÎ˽”UR^‘_XtæüùS§O¿:…÷Ó™™gy‹Dî²².p V^nA! ¬âbÁ*//% VM ¤°ªÁ‚UY«ª‘;+ bAòŠRXÊúÆÚzîrº„ˆ°¸üJ…É+Ê_án¡Ëë[Zpa[S{Š°º[»{Ú{{AäŽ-Â>ˆ`q–Ð"F°†GÙuØ•[;»[ÛTõ UJˆ`±ã'„ÅN¡EX«šÖ© …U¯V×s~¥®„Å.A–-X5èr¯„…,uSSSk+ˆÜ»ºÙw½aE –,XF³Ùf³90‚…IŒ`°0° ‘S`Ꮈ|isSîcGé¥å‰I¡x°ãMLJ¾BzÒâK¦‘QR2* ¥âW‰÷¿óN|ÉŒNØþtwâÚ)蕘1s'=pwŠ'ÁŸôü$’1wâ“ãÁW‚Ÿ½Tæ1mµ°¼Jöu[]Û·ÕæÍë7IÉ~ ÝVwn‰Jöûî=|ø€°ÕÛï¼ý¸­¨$HØŠ|ìOã‚?‚þ…Ã*µŒ] (ÖúD‡TõwŠ0]îw%¥¡’ï'CI)–;íu|;3(:õ¨Ê•s¥VîDøæOÊJC±¼éŽ -Ÿo2sz<`e†ÐmØjiuML[¡Ûj£V‚’ý6N¼}çö{¶lõè>(ÙßyØêÝ·Ÿ$+Ù¡â÷L#›!ø@*BU‰äêç‚íŠW~ÄG ->}þž fg_å±Ð|ðè1Íd‡tkûîæ­mÔ[ÝdauýêÒÊztie> -‘$ö#à @‡ŽôV¸Bl…z+­Då±a‚\i…™+N®ÆQo=A ÌÔj Z0\™ôF³‰ôVv§Íá²Ïº"¶ò[Íaç .¹B½5þˆY‘áJ»ëËȬHlE>vvóH[…Èmç¼?0ïŸ ûÐm%–q˜ Ãb›5¶Ò›µ:{ög§Nýý©Sì”*„§ÏA‹ð,U_A+'?Ÿí¼¢¢üââBE ,aá ÂQ„U"÷*•8‹DXT$¤Ø±`+dÁBR`ayPÝÜ, ÈU“À¯Z@äÞÜÚÐÚÞØüª¹V[D°ºú a ÷ŽŽ‰"wØ¢«wpˆ='­]-mªŒ`UV–`‹",~UQUUYSƒ,uæ¯êë›Ñ…ÕÀ>T©ë”j1+aaK©$ë;D°ZZZÛ;:ºººzaáÐÈØhl¡Ù$X°Fa;)gÎÁfgÂs± -¡ÁŠF“«v®ØÊ›ÔhK•Ü©U2{I©:w§: w -•×•*ò”>k´C€ÊŸ2Œ”bûü;ÜI<åw‚WRåЗ*õ‰nëNª4º“ ZqÀÐãõøæØ‹$‰@gmiyquUZ¼zãæµ[ñ“ïlmßEluÿ.¸­[=|û1ÇV˜¶zòÞûOÞÿ‚qi«bÀ*UÔ*[ý<®*( \=CÕØ„ÀÕƒGïóy‚ fß¼µÍŽ–ùúÕ«ëW—Qo!½ô [yg]Ò[Í0_Ok0ņ j $8.&HmAì Bk -j…´•Qgà=A“Åf†žà¬mÖ e^Ð[ù[ùCl£á -S4ó ‘È®°'ˆnöг¯¤cWµZ_ŒùØqŒàÒ -Ý|>Jö0b«˜’ÝGØ -”ì§×fwYmNÀV›ÞŒŽ³Fkài+|¤£c“BIp K‚ÒI‚Ø1ê{‚#¼'8LböñÁÄ’ †J‚à¶Bró…ÀÕö1m%+„Gé)s%aAú°›R«Øè@^œJUóT“@Õ SUø•>©<( n%«xÚ&éš$üÊœÀ¯bù+iË.Q`yØë'ÆÌUÌâÎEît¹G8Åb¯ö_ƒA„wä?uä%/yÉK^ò’—¼äõ+½~øçÎN¿ÿg–±ÿ‘cǾùæ›ã“SR~E+Á…E8K‚°ú»zaÅêê¡V[G—,XÁÊ/,¼œ_¬,D˜‰w²`A„uö,ð«óçÏc‹0+'÷rNNNAAnaa~QqaIiQYé•2°`a‹°º¬ºŠ„55•JUU­ -øæ¯ Û ÍÍÍmm­==½CÃãcãSìm¨^k0‚Ën·;]dq÷À BœB$`E{ž…PBAýo <ïL’ǧ•üI„*…0j‡ÌRBjÈ&_”€¡ÒD•¼ŸŒ y“ÎûÝi˜˜41µé’\'õ•ñ -~éÚñúÉÁªtCïÇ0)1síHÒèï\ 8fEJöµµ«×[aIðÆ®6o ØêöÝÛÛ8Iðþƒ»”¶B·ÕÛâ$Á÷Þ÷ý§bÚêéóç1lEõÀCVþâ>üEªÌ•àfçØ -ɉÙElõðíÇ=ºûàÑö½·îÜc¹¹uûê›Ø¼ÆÎâÊjdq)]"¶òúç\^?ûé°Ï:­v‡É‚¢rÒ[i¡úG+jÏK¬ì$fG½•ôVìÊZ¥­t f·¶²ØìÇÏ>ëžuJÎã HÅì”u Í/PU0å#±*¸¶$VWxÈ -ÒVœ\­!Ú‚kBI0ºÌn¢Vච-γš !¹ -Àctym7W²[ìlƒÛŠ2N:ãô ¥­à‘Ž%Aö{lpxThKë„°„ª `eǪ ”‘\ÀPÂ)î¶b°¦­ÐÊ>% !jSÒJ™Þ,=#]Å'¬L;(­â•ìñõÀÄ•^¬¤9+½ô|B"+¾c( tI2cêò–U2‚·u¢ÂÝãW&Ae±;-‰ÂX>äWX!äÿÓç£b‘p>²À^äÀ²ð¥Î~H þBþ›G^ò’—¼ä%/yÉK^¿Òë»ßû;=þúëzýK_Î+,±•èÂêH„W½4‘P¹ƒ«§·½³§³§—}ØØÒZ£Råääåäå]̺\RV^X\|þҥ̳gÅ -áÉÓ™™gÎ` -‹[°paÎålb -XŠ+X!T”Wˆ",!‚U[¥TU©ÔH±êÄüU ¶ÁÜŽæ+^Ä)„ì<õÉy%Š°Ô¼KØ"EXÍ]lÂêèíïêä"w@XcƒBkxbJ°¸õp VWWc[,‚¥¨¨ ÿò+…¢¼¼¬²¢ª¦,îu¨ÀÂò Z°aÕ³ãl€j¯T8‚P‰:,ˆl±Í®ÓÔÒÒÒÖ,ˆ` €krF£ÑêõF“Ùf³:b,¯úJÁšãÚ«ù?¦·BaE£ìݽØ"üØìSºZ_*r’ØtK¥lJ¸¡ß•*z$°#z -ä÷¤OII¿Žpeñ4ñ¶ßÇ­¤Kü鮓 -gùÓ?¨OšÚr¥ýÒ)<ó.XÙÙ[ÝèâÒÂòÊâ -¦­Öq’àõM¶¯cÚê:ÇV·[ݹuçÞöÝûwî=¸ûà὇„´ÇVO[ñ´•DÉ.b«TÌ -öG ðJRÄž [½/³¿ýç ’Þ -æ Šz«õ«7VÖ7–VÖ¢K+ô^ž½Ô½sA·Ï?ëö°Ÿ +4šm(*7j`˜ è­&¦AÀŽi+Ú“£“ãPœ€ž –È»2°b®LV ¥­N¨îBOc+³Ï…‚¡Šæ űÕ³‹zö%‚W+|tàÒ*¾ñjx“eJ[¹Šð´Õ\h”ì°×€´˜çIÉÎ' šD%»Ž¢eúÉa+P²‹%Á¡1R²ã?Ã}ÜÇNgúãG -r+;ŠÙ! -UAt[!¶âz«i°M²/§Ñ!áaO²QÐ[IJ‚¼6ßF¦ÂVf)ªâ´Š3+ö¡[I-UBì*¾¨—d®ô’Sº0²¦Òر¦%ú÷i<Œù«8 –ƦZp!!,ÁeŠÏ_qü2–/ -ÎG EˆÌ*ýA^ä1Ú0d±èÌ¿ü뿲èomË),yÉK^ò’—¼ä%/yýʯ¿ú/ÿeÿ‡ýÆ·¾5:1504Ķ 3‰Ë_õ FwYý¢««·¯«¯ÆB‘ŒâmÝõMÍŠ²òÜü¼üÂÂKY—s - ®”–eçæ9wîÔéÓo:ÅöÉÓ§‰_ñA„/ž»tébVÖÅìlί ‚UTP¢(*-»R^^ƒ«ÅA„•5J°¸Ã,B€WÕ*µ¿j¨©Eî µõ˜È„Õ$=‹„"¶’¶AäÞÆ[„-Ýl·÷ôuö÷w lhd`dtplœM!„5:ƒ‡ÙÕÚ»{›Û1‚¥Vƒëÿ²÷æÏm¥é}oþ†ÛÓ-õôL;3vâšÄq9©øVîJrmÇK]燛²ãr¹»%j§Ä}¸$Apßwb%nì A‚‹DŠ%QÔ.uKj­Ý3±{\vÙã¾ïó<ï{Î{P=“ßTuÞ:…:±„x>ú~?OUuy¥òWee¥ȯªªªjª«ëj!‚üª¹Ùb6C - º„X$lnTÕ¨D°jÀ…"÷Œ`µ´¶ZÀ‚ÕÕÝ×ß7884:::aµ:®IvT ƒgÀ‚µÈŽÖ1‚“-î¯VÀSî+¼?¸ ÿ¡Ÿ\::òôQù[„QoÙB*º9J'þ^ ¦ç ¢? _j¬pPsïÊ­Ee´ttø*¤ýn( ³J»…hF1zÄŲ<¯%õºé13ùe|Kþ]=³Ÿ»’¶Ú¼²½µ³#°ÕõÝý¤d¿ÆK‚l» ØꦭîÉi+.¶b¥­žRÚêù Åm•ÞÔ+~šÞL \¡˜] \=úìsÔ[!¶ºË±Ì¼Ž=ÁÝk[Wv`žàÆå$YÙWV"ñeö¬QoµäŸ_˜E+»g -±tn®·•CœbàÊÎWŠ•°Õô¬ozv¬ìóþÀYÙ—ÂK!üuƒÀ·²sÃU2E‰©5´T¶ZßÚàØJaVÛTÄ1‚¸ƒFg -®›Dl+œ$K$#ñ•–CheŸ_€.äÜÌLœž øPoEn+'ŽM´9&Ám…Bu \ql5<2Æ“·C#ìÓ±YUçÕ®Æ&pc€vê ¢ÞŠ´¹ÜV, Ú pE™+r[ù&‰/¡¤ø•;-gåU°UzCÐ%E›$lÅ¿TLViØ*«ÉJkµÒ$¯Òø•6Žå=ªrè”(–œ¿âO!S5®À"‹ûŽ äBž¿Zò/(üŠX R`-cæ*³…Å $¨Y¬ÕûE ë?úLÿƒG_úÒ—¾ô¥/}éK_ïîúÃ?üCvúÝ>zïرïÿê¯æOX‡D0aeÎ%”[„ÁêéÅY„ý–¶ŽºSaI1¤° - .\ºXf0òÖ©Sį>ÆVŽˆ`A ÖÙÜÜó/^,(È+(Ì+‹{X°*JFœEXe¬®!;xUo‚XÜÁ‚…E¦ú&>ŽÅji´´ -rð -7‹$ookjmmR,Xm0ˆP¹wô’ "XÐ"¥ˆÜá Î&\îÜ‚5ÜÝ/š[jL•µµŠ +„†JcU-Z°êšÐjenn¦ -¡¥¥©…\îÍ&àoìdÁªC–E"wö]h¶·wôôôö°ŸËð˜4ˆP²`!ôPøf®V ’€SraáAÐ*Ï_-¯¥"ñ„D¢Ò›ƒÁoò/ipŠ.ý ñ¤`øg ;E³ÝxT"9±£3ZYóNÑÌPž¾í¡² „²34Ê€Eð_eö£âQEƒY“f‘¬P+ª`´¥·¤¿"‘p4Æ{WÖR ¿¼Mi+á¶Úß½¦Läi«›·HÉ~÷¦­îÞ `«‡ŸÈ%A𱋴ÕsH[½JŸ!(hUÚ™«7RæJŒ„À‰Ù[=þüi†ÞêîÍÃ;ìA²¼»cgwÿòö.`+ê ®¦bheGAý4¿ò/,ÍúSÔôN»¹ÞÊVv'«DàÊÁvÆ­ä¹rZ±*=AÄV“nŸÛ †«)´²Cà*°0Vöù¥p0Ä^pœ'[‰&Vð÷ 0ɵõäj*¹º.°«õÍËëWÖE%pClÄJm^Æ‹mÒU’€­Ø¬CUJ‚ˆ­bìÙ%Bá{‚‹à¶RÒVš$ˆ¹²ip[¹ is¸Õ´Õ8”[a’jX%W¸¶âbv$WXÁ«à‘q¡·Bleu@ÔJ2\¹‘\y\ïÈm¾LCÔÛ‚M1P¾©8•™Œ:Új;v I94û*¿rj;†N©W˜9©P}0Ùž lÓsaAþÊs´Å}ZQ`!Â"…;TCáEökŽ -wA¸Â'®¡®-Áù‰Üd%iáÍúÿ§?ý©þg¾ô¥/}éK_úÒ—¾ÞÝŽD~øþìØûÿ?ÿã° óddD¢XÊ„t^*”'ö #¿‚æ`wo_Wo_/~ÙÔb)7ò - -Š -/æå啹ùù0ˆ"XŸ~LwÁ¯N‰ṋ/äå]Ê/¸TPOƒ+*J †£±\©Ò B´¸×64V×› 9H÷¦¦úæflÂÂ+¾ñ„ä¿"y»a©,+ma[wo{/ "ìì„528264Š¬ Ûˆ’¿â-BÁê`×m²´Ö75W×׫ªÊŒFDXQ^\^^f4TÖTWÕÖ@7°ÑÄ+„¯Øf†ÍÒl6ƒ«¹I±¸³ ÓÆ®Òh6›AäÞÞÞÙÅ^ùþ¡A°`AË…¬)ßìì\`Þ¿°ÈŽßÃÈw@Xįˆ°’‹RXÁHtém–òðÒÏã0[¤ -øOv0%+¤´„'’­÷'}‰ŠHR,”qkáHLÙô‰.SRˆ]&¢ìkîW½.ÝT$”ÎÑ^ JËkE2/–59 jž{LVüêp¿rÃ1&ž»t ¶ŠEãËËk©ÔÖ¤­.o¶ÚÅI‚×ö!mµ/+ÙoÝD%û­;÷ØvçÞƒ;ˆ­î?|„%A1F—Ÿ?}®*Ù!m%Í”CVØJ]Q@ F - -1»’¶R±ÕÃGwˆž b+öh÷ö¯ïìí_ÙÙݼ²½ŽÀgeu=¾’dïðP”Œå!ÿüÒ¬ÚsÞéY°Õ$ZÙ®Iiž å¬øfCá•ÀV@® måöúf|S3SÓs3sÒ[Í/…–$1{l9Çi˜f„ÀÆ¥8¶bL Dr%+²µs±•±'¸ -Øj“°Á m%”ìÁp|1HJöPÜV‹¼$¹²Yt[M;'½vañ·9±$HVvœ$öâQ«aq:" Wì’°AI]qÜ::a'Ãöa˜à„ª‚À¬Ðpåàó}˜°¬DÝ@øãU.ï”ÌvÞî°ÒjØ•Sé33V²ã#AZÅ‘”¯’ÏV®,É«Ì€–#‹ÿJݤ£ZuÔL!œ"ÿÕM!ôHðJµ`q~5 -,©BH -÷%T`±w{Kð¹±+«Ô\QÔ q¼&²Øw<|Äþ¹¿º»§ÿÍ£/}éK_úÒ—¾ô¥¯wzýó_øŠ`ýê¯ýZ^a¡•Z„ÜÜ;<42ª€,Rc)F,Ž°†zú±EØ-BY}ýl¿¥µ ç朿t©Ì`()/?— ¬OOžüEX4ˆðäéS4ˆð4"dF VA^a´KËŠ+ ¥Fc¹±ÒPUe¨‘;ù¯ØiMC#¸Ü©EÈX| -!%¯p‡‹°Ì–F³÷±B(RX&î¿â;M–VDXÁêêF„ÕÓÑ×ßÅž¦:ˆ[„ãŠËÆEîbaÏÀ`GO/F°ÌÁª©UùUYi©ÑPQYYY]]SW[oj çW-„°€_5¢È½¡±‘mu&˜Bˆ",¹³sšaµvttvw÷ô÷³£Îáѱqö#¤ÖÔôôœ"XK AŠ`©Sã¼~"(ÖŠÐJ#¿bG@Ñøò[bN¡,ZrSѬIª4Ø¢ñ²4éÞÇŠJñ*5z¤ù2"cŸ¨€K•JI· ‘+~]úVX¥^xN$vTðI¾€|³!7E4_¦_Wóð+ƒÇË tÉÔ+$îZ%WÒ«l•`?âÔÆÖ¤­¶/ï\+ûîˆÍ¯°•P² luK‚÷i’àƒGp·ÕSt[ñI‚Ï[!tR' zÅ6 U½†í+<Í W/yU±ÕK¥'¨è­Ø½+=A\ݺÍêõ¯îmm_E½Õ&è­’«Ñ°ö -,Ãþ…%Ô[AOÐˇ b{0 äQ+* ZíãV;‚,'®&.kÒË~ƒ&%½Õ̬è bàjq)LØ*MDc+$f&"èm¡¢js-…Õ¿µÍ”2UpW[Û -°Â† 쬮#¶Z¥¨Õ -˜$Èžšâ¶ -Å—" ‹!ÿ|p°U`zF \AÚŠ»­ì“ìé@ÚjÜƇ ¢h}PìFÔ’ Ä®F½ÕÈ\q½•u„Ý΄}Ü(lÂ!W.ÌY‰ž ê­€\©))”´«I*Ÿ`Vi¼ wæ(x%§¶ »K°§å d6¥¸â3¿”cWr(Ë¡¥[v©3èÈr_:,þ8§be‡WÒB…_ióWSb -!Ž \œ  Â}ç¯B‘¥*°âË Ír„µ’ä",Yâ"ðXÖêZj}óÿñØ?÷?û\ÿ›G_úÒ—¾ô¥/}éK_ïôúÍ÷ïß?vüýãÇøŸÿóàÈèÈè˜2yjhxX‰`É£ á ©‹‹°PäÞÑÝÛ;0ÄN›Ì-ÆÊ‚bD¬Â¢r°`Aë““'?>qâ““°€Ö©œÓ§O>Í#X¹¹çÉâ^P˜_T\XRZ\^^b0+¹Å½ºV‰`U×7p VY°pa#¯rx… ‹S,µK(å¯ZøfxÕ&"Xæv%‚"÷Î>hö’kU0V>(fچǭÁVWkW»5Š`(‚e¨()//5T”ŒÆªªêÚ¤R¦ÆææFs3¥°Ì ð+aA‹°© ,îÐxEE†FB^J«,X##cV«Ãát»ÝÞ)ïôì,;è^Xš‡A„hqO$¢¨ÀŠ)³×Q„×æ¯Vàÿî×ÒÒMßÔø“·˜6:¥)ÄI,+LO"¥¢¨vJ£CJ³/#…;‘´(T4“5…„æ]½qΚbj+"®IriB\=ñû¥ G1‹(¬I¢m‘tŒ”¢_A‰¡É]B‰V‰F!ÞÎR8ÌN#Qh‰.¯®®­oRÔj ”컚’à̓·c«û8IðágŸ?%û³Ï$lõœLo¾z-+[}õ:3s…W$1ûÏ1põÅsvûrà -ÅìîÜ»Ïç ‚Þê€=øí½kìm\¾’Úؽï &‚‘ØB0Xΰ@7=뛚qû¦HúdwMÚ°'¨–5+H[É=AÔ[M{0m5=;G=Aÿðqž •£¡$ˆó­ŽQ)peu¸Ár A·’¶"½Ò \ 7»[L”|ì?CàÊ£…Wî©Ì¤SfP*#F¥!Q2’ÊHdÉW÷¥…µÇû[š‰¯$„%{æ5S1ÅEî¯ÜÂò‘È]ï B8Ç+„VDŒ äÿï@ÌŠ××è"ˆ\­`…½Áv÷®Ñ?÷÷÷¯ÿÍ£/}éK_úÒ—¾ô¥¯wqý¿ôGìôÛßýÎw>úè[ï¿ÿýù«ç/^²ÚÀ¯FƇ6Ü…5"vÒ-X„°ºûû;¡EØϾ´´ƒ« ,Xy¹—ò }TVv-XŸœä -¬99àr?sÖÙ³gÎ;{ṋsóò/åä—–”£È½DjaÕÖ‰A„8‹°±N-¢¹]Q¸¿A,raQþÊÔ¢ò+Y~%±|o¡X²KqÈËSU„%U¹+Mä.õÅB´¸/°wx"XpIµ3d—a@@RüO×aA‘šƒ)öq\K!ÈJ±ë7n²îÙŽþ—¾ô¥/}éK_úÒ—¾Þéõ/ÿÕ¿zÿøño½ÿþùßîc6pø3"ű¨T¨•º«¬¡^(ò -agOoïà;m4› UUùE…EEdÁ*¬§rh -á§'aå Ö©³gÏ’È]DXRPRZT^Ql0p‘;´kŒ5µÆÚZ-¿"V3;%‹;T›Ì(r·Ð©4‚DîYÀ²š ‹e]Bˆ`Á Âv>ˆ°µ‹"X]ýƒ€°†Aä‰aYi!V­ÃhÁêÃV[gwsk[Y°ª«¡GiŽWZ"wcuUummmC·`µ@%PAXÍ4ˆÐÜ üª ¦B«¡ž‹ÜùUZZÚÚÚ;;»z{ûÙOgdœ¯»œn´`ÍÌÎ`á< "„ÙsQ!TøvOðhˆ*'˜¿‚mu-gÍJI½¿l5:M²("y™øwÓµQõL…¥ÙË%¬S·°‘’ï‚I*ðQ©QXº«ˆœžRnPœ -N¥æ¯xKy„âºa‚iîH½ý˜ÌÁð*ªkKyâa‘ø - -L'ÌWâF´‚÷0a«äêjjccëÊÖöÕË;»X¼&& ÞÜØJ¤­nܾ{ˆJvt[=D%{¦ÛJøعÕêõKÂVœY}õJVo¾zó%b«/Ux…PWD®^}ñâÎ|.÷<ú\`«‡wï#¶:ܧžàÞõí½Í+;ë[WØdÇàÐ+{‚½“¡C·ÀõV>Ô[Mz§lEÞ'+àǸÕ>²q€WÀ¬[¹ÜN—ÛåÆÀX٧ـ˜ôV sÅÀB®Bì•G@̾‹¯Ä`¸¢ž`r`«uN®¶â +ØÁ39¹BÀõÀÕT2¹NÚm#¸­D¢¨d€Û -& .†æ >¶4;7?#ÒVˆ0M9)Wæ ·•"RãÖH[Cû°ÕÈ "c[ÿÐ°è Žˆ‘‚c¼$8Æ>²l¸²Jó­ÎÉ ·²ÛÜÐgŠO$rÅáÕô¤TýSŠ»òhLìið -õV‚2ᕬO—âRi0Êg?Lý<ðJ]ü¾œšùƒÙGf–ÓâdªÂÝ'O!œS¦z4üJ«p÷ …ûB(Ö"üîƒ+AÃW¿RuîÔ%„`-)Ü“¯’këë[Ï_¼`ÿܳßzýo}éK_úÒ—¾ô¥/}½‹ë÷ÿàØé¯ÿÆo|÷£_þÖ{ïïW~%7/ßæpQë„L¿P$ÍÔ¹+[ßàpÂêêíëêëïlik¯­o(*--(**(,ÌÍ»TZQÁ¾<{áü©3§?Í;=™“óé©œ“§O>sfž?æÂ…óÁÊ‹;»nI X°4¬hr‹{}5Dh" ›ÐâNƒÍ&àWf%y%a+‹Ò"lâ.wè6ª³;E«§­»·£"XÐ"â¬Q´`[‡q -¡bÁ‚ÖbÁêl4[ê(‚UYIÂâ -h*+«jj L!wnÁB#– EXõ`Áªç.÷†:äW"‚Õ,D84:,X°öëȬØvëð.`«»¶zøøÁ#J[=IÃVÏ3°ÏYÉœêKÀVÊÆW_RaðÍ‹7_¾+)øüåÓçóbOðÁÃÛ½Õ«{ûÛ»×Ho•Zß\Y['½U(g¯ÀÂR(Øj°•×7íö¢ÞÊå±Ã¼I4Yªbv+õ.¡·r»ÀÔ=A·wôV3s3³þY`ο€ž`p1–W ³'V¹˜è®Ä–Zßðê21+2±ó´ÕÚ&]ÝV¤*Bl•Œ’’=š€´U0JØ -J‚R²£ÛÊGOsÊ5éuàÓD…LÁi€øß ØتP3(V) RÚjhxTÒ[QOæ âHA×8õÙ½`OІz+5på!l%Fò¸ÑTžâžv„ª¤V f`_6Z¥%EÞ¬ÙªŒÍósò+yò ¼ùD‘g®Òš¶´(!,5¥­CfáW~5‚•ž¿â¬)ž¿Z˜%Öbˆm À‚ÿ~ÅÞ?Ë@®°EHS’<|E-BÒ¹+á«•5ˆc]¾²óõ×_³ñò“ŸèüèK_úÒ—¾ô¥/}éëÝ]ßûþ÷}ðÁ/½÷ÞïþÞïu÷õŒO óäÕè0gYT')GX’Ë]¤°°EØ7ÐÙÓǾììí355*« -ŠŠ -‹‹.æç— óóO={òTÎ'(r?!øUð«ÓX!Ì=—{#XÁ*).,))B~U&R *„õ0ˆ°º¡¡XµØ"4!¿‚„¸5‘üŠWMD±ËÒˆ°Øik[E°ZÛÌíB„ÕÝÖÕÛÞÓ׳y EîÜ⛕»Ü‡'¬Ãcƒ#ÁhëR#X•Õ5$r/©(+7*ŒFcuUUMuM]LlnjnùƒxjiikE~e6555"¿b—Áq„¢BØ؈ÅCsKkkE°Ð‚,»,X¾©©Ù9vlî_X\…‚íD≨ÁRd¿b|F°àx‡¤³ÓhRðµRD1ûóÏŸ}ñÙÓg"p%°Õ½û·nß»yxûú­[×n Þj7Moµ_IFb ·Z ¡•}õV`eŸ!lEí9œ$i« L[Ûìã€bìxXÙyàjÒãâ†+\MMÏQàŠôV³¶‚ÀU J|q \×%ÃU -õV˜¹J©UAàT|t `­Q—çBCpm®Ž¨W˜¶‚¨–¶š_òÏ/ÎÌÑsôû0mÅõV.Ýᆴ•U`+( Nà|À1rŠ„UÆ)û¸&ÕleÇžà0ê­Æ0p5ÁnÜ>iuLÚ¨'¨b+8U¬ìªž]³¿µ!˜Þ $U”{Ê©™ñ'—õ¼;¾l´Êcû&fõ³„¯2ï¾ –²²§—5A,¡ÀJŽÈ_Íeë¿òIüŠXP!\‚ -!*Üqa"K¬Ç‹>Ã)‚µ¢‚, -_!ÂZ]c»» Âúî¯ü†þ7¾ô¥/}éK_úÒ—¾ÞÅE¬ßùÝßý"üè{ßË+,²ÚÃìxgttXµ`a -‹z…)¬þAŽ°haWoWo_wÿD°LE%%EEùÁ*.//*-;Ÿ››súô§99`Á„uòÄ©œOOÂ:…÷3hÁº—w± Ÿ=žü¢DXl0–añ¡ˆ`È(–ÉÄ-XR«Ž× [Há›Ùb¢M´ÙNƒøRId™ÛÛ©HHB!rç,BX ¼WE‡ƒ`Áéêèí³tt6¶È,C‰¡¼´¢¢ÌPa¬‚A„ÕÁ~EþöK‹¥µ¥µÕÜji¶€Å½ [„ ¦ÚUE«¬ï0ˆ°£»»ÀáD°ØpÒƒgfüpX -.Aé,†ü -"Xp@­hÛ“ki -w8êIm°¢p4. U,(÷är\fÍ ¯øh’BGÁ” -pÔJ6›“TéWÑ^8,c«´Ñ"¼…(ÝNDÙâêš»Ger¥ÅPÚL— ¾¢üõ‘yW˜Ýˆš‹³»g`+dIy­H8O$W“)H[m^Ùái«½k;{趂´ÕÍë·ÕÉmu÷ÁÃûqlõDSäØê…H[½~-‚_f†¬Þ|õ#™\)ØŠ W/^)°ŽäóŸ}öäé£Ï>øøóûß}ðèÎý ·:¼sãàpÿÆ­=EouôV[•}9/†ÀÊTÇ@½Õ ô=8Lp’c+¡d‡I‚RòÊ9awR‘Ð9éæØJí BàjÎz«ùàˆÙ#ðÞ±?Ž%bñˆ#R"±®¨*(ôìD®ÔMø¯ÈÇž±0+´¥"mE%;»£¥Pt±•~i.°8‹i+Ÿ$8 -/J[9Ü6;M´Ò$AÀV¤[PeìjÚªŸF -«z+è ŽŽ‹´äØÊVv»‹æ Z]œ\©†+Nè x”¢º’uëžé´´Õ7*­œäœ— ÕÏF¢Xi±ÕÏŠ°²ÊÛºŒãˆy…Y€•¦BÈ£er…ЭL!$–OAX~MKåW~Ì_¸+ *„‹8…0^ ÃÂ(Ž¼Ä6+ò+aÁ>Å®ÐÜ¥Âc­R%<µyùÊãÏž°ñïܽ«ÿñ£/}éK_úÒ—¾ô¥¯ww}ôË¿|üÛßþ¥÷Þû½?øÃΞÞѱ‰áQ:ðS\îƒüTS$ì׈°»Q„¬þA´`µTTVåæ^ºÄvJ+ y…gΟ‘û‰O?á+çÄ)a>}îûî٠‚UP˜‡ƒ‹Ê EXf¨,«¬4ÖÔ«k*k¡EXY§ð+°¸×*üŠ"l‚Æ®š[„ÂJ…’ÂÝ‚s ‰_µ -‰°:H„eéìjëîƉ܇т¥¹Cþ -[„8ˆ"XƒCìÕhïê6·µ74›kØ#/3ËŒ†RHa•WØ"¬®k¨G…wK +E„ÕuBàW치L¼Bˆ³y«¥ÅÒÖÖÖÙÙÙÓÓË-X0ˆŠòV XXZ†Ú$È‚…‡çš–B±ˆ_Ñ‘8¸²y[PKŸ"±ôLTXŽ'E¶ kP•µÂñ$yGK®²pªðQßÆ2sSòµä[çÄÃÚ „3.Ÿ aÅÂß´ÉɱÌoÉw­ð+z¹"1°Ü¬¦6Ø1' ܹº½‹%Á½ë|’àõû7o^¿ ØêàðŸ$xçÞí»÷î’ý•…ÛꦭxI|ìÏ_¶RÒV߲٘+mà -±®^:Jöá‘ p[a›[UZ j°¯ -¢§]XÌœ€y‚ìFÆm£è胞 `«I4\¹mìî`ž Ç.ÏNòÉ´6œ<.P:_6±Ü-)Z?Ly”ð•vçgeË_e1LÏY}CþJ¼nâE›IÏ_M©ù+š?¨Z°fq! ,)%O!D~µiXP¸KÌjOa%Èd˜DKÆ® :¨ŠÜ×/_æ-¿ýÛ¿ÕÿìÑ—¾ô¥/}éK_úÒ×;·þè¿ý7v‹…>üÎwÞ{ÿ؇}TTVÆŽ ^qŠ¥±†)”•îrG"¬~au÷õwõô÷ YÚ;jêëKÊÊ -ŠŠ.äçæå•”ƒÀüì… 9§O¼b§'sr`£Ö™3gÎ;—›{þ⥠—ò.æå+,nq¯ª1ÔÔÀ BaU‹¡( B.r'—{s³„°„ÈÝÌ+„»RíXÅ‚¬–öÎÖήVàW½½}}ý݃=ƒÀ¯D‹Ð -‰öa«2‹–bÁ²tt5[,õÁ2TU•a!ZÜËȯ BØ`¢A„ÍȯÌm––V¬Z,ææÆf¹7šø,BŠ`5šLdÁ²´·wtuñA„£ìÀ×fs²#xD83ð`áR(Œõ¨D,¡U`))¬œBÈ#Xë«Ð~Z K"µÜ'œ ª¢âÒª07±§î¤h“ÒõÓœÂÑpVXN?Gš˜ý*aÁ²²b¨p:¼ŠgERéWÆÕÛŒjÙWT9G[Œfãrâ®Ó­\ÑXœý Ö7Ö [m_%%;w[]‡´Õ>è­„’ýΑ“1mõ䦭ž¿x¦‰Z½Q£ViØJeVÚÀnC“+ÂV+àc‡ß••5Õm]†Ÿ/b«´ÁCI0°4`O005í÷N͹!¢#J‚N7„Êl®ñ û¥­Æ&†i’ b+¥¸­«ÅÊÎÓVT÷Fl…=Á‘qÛè7\¡•Ý%°–qS +ÃÊNª«,äÊ£aVô¥²ãÌ"°â"ôoäHi­@p½L¥}7ýÂŽŸ'—åК۵±+¯ö‰¨>y§f@¡Àw “Fz¥„Be~5«L!\Kð«Eί–Âñ{Ç®$±?ˆ38ШFØŠšàìÓ›>Ï!ˆ•\C»Nû©­Ý]ö/þoþæÿ­ÿñ£/}éK_úÒ—¾ô¥¯ww}ô/þD°¾õ­ÿúÐÑÓ3:nE„…ðjT1º #×¹«¬ÞÁ¡>°¸óZ܇ºzûÍ-Á*ÊÍ»”_TTZ^q)/ÿ̹s'±Bø æ¯Nž:uòôi¶:sæ4X°.º˜—ŸÂâ‚â’bDXb¨,3+*« ÕÕ•5œ_q„U,Øš¸ «©‰úƒ f3R,ªš˲4bK(°H‡e‹;F³ÀâÞ -B¹wc…°WáW™,Haq‘»ux|bpt,X}íÝ=Ímm ÍÍ58ˆ°Ôh(5  –ÁXUUSWW×P-B´¸·¶´´µ¶v´a…Ђ Š„ MlC VCÉ„³ MÍÍ4ˆ°µ£³«‡²ŸÒ„Õáp¹=ž)D蟧"LD5‰§ñ«UÑ"üj¯oB0F$ÒåQRÚ*Ý•Þé‹fKiìåÊ™Á°‘¢R8*šŽ§4hHº$ïèE UQG±x:°‚[ÈÈbE¹Ê’×¢{‰k@4ãa˯ž¯yAðE‹³£Ð`«+W¸ÛjïÚU( Â$Ák4IÜV -¶ºwxGq[¥c+ž¶·Õ‹/¸¦¾|“‰­~”Ž­´üŠ2W‚\½a·£öŸSOW ·züÇV0OðÞMì ‚ÞjÿÆöîÞÖöÕÍËÛ ·lE=Á{Ø{’ë­üöFõL‘•ÝãÄa‚6T9¶š°óÀ•p³ÃHAé­´=Á™¹iÔ[ù‹¤·ZX /†"K¡RÖ8®`ž ”°ð·@Ñ[É’+ά”S€Zhb‡† #¨*Ù“ˆ­TH\XŠÌ/†q˜àâœãd~ï4º­µÒ«´S-)ÊJ¢Ô<•mÒCðjRŽ]eõ_yŽâ`›:ÍP;ÐPæҚƒÚ3ߢÀšJ­ù$~åÓ ,êò -á ñ+ÿŸBÈ–àW| -áûlŒ//'SqÊ_Ë}‡$ùt€Ä -ÒÔU%IKá+³°såÊÕÃ[·Ù¿øìÃDÿ³G_úÒ—¾ô¥/}éK_ïÜúÿþû§oøáûǽwüxi…'ÃFkt ¥X0î -gµ Œ`PEXl§w`¨òWÐ"ìî„ÕÚÞQÛÐPTŠ¬‚‚‹yyÅåEe`Á:uæ̧9 r'„õéÉ“X!T#XlËÍ˃!",´`U” "‚¥ŠÜ«ëªêêk8¿RàAXÇ#Xf¡À2³S“€WBäŽåAHaµ6µÂ&RXíæöΖ¨b‹Pµ`a U3ìàQjr£û¸uˆ,XÜ‚ÕdieŠG° †RVqaeMuM}]]Cƒ‰,XØlikµ´µ!¿ji2›!…enn‘{#ö_ÕÖ׳/››Ùå!‚…¬~ˆ`AKD˜,CáXÜi -¡P`aæJFXb -á:;rg_FTê"®P!~k/‘óK;癚){Ø´»&mvÒ[Ù9¶²¶Â’ Õaµ;­0OÐmw¹ÂÊîõM{§ p53z+p¾ÍçB8O0‚éÁD„m±åhbøí -L­ ÞŠ$WéäJ- r{rM`+ŒZÅ—“jÚ*š`ïmvG`î%;=;î¶bŒÒV®I|ŽN7/ N Û -ÄVc[Ò$AµRÈ•RäØj„J…¼$¨ôÙ BÚʉ«IÒ[Ù\JæÊ#QôH­7·”¤ÊfbWÊq4…P0«)©è•wæóÖ–)Xq6eã„J|9™½Q(®’Y9Ž^I0Ê«•\ÉüJ¾@v–ò|‰\‰ý©lþvò_¥‹ÜÓ¦BИ,MPU`E¡?¸²coãør|,îˆa×+XD{† Sär§7-ûO këÊÎÓ/Ø¿øý7£ÿý£/}éK_úÒ—¾ô¥¯wtýò÷¾G¬ÿúû¿ßÑÝ;ÇD^)§Ð"r…sÛG†x -kD¡XýP$îêêíëED°ªª Š‹ -ŠŠ.\ºÄNˌƼ‚œ3§sNŸþøäÉ??qâÏOž8q -SX§N‚Y„gÎœ?þâEÅ‚•Ï®^RRTVŽþsc™±²LXÜ!…%fB…°Þ”¦p¯oBxÕÜRA, Û©on1µ´ ¿²˜,\áÞhæåÁ&ì‚Vº«—,XÝC½@íF±E8†üÊ:lµ)üŠZŽÂ ÂîAvEsk» "X •55••Á*/5TTTU•Uµ5u¦zSS#T[ Ø‚›¥ SX-0—]½¡øE°jÉ‚e2)¬¶Î®Îžž¾~Š`±C;À÷x§|³³³yÿüâB0Š€^)º¼Ìm?«ÚmM(°RëpØž‚;J -eôû²¶íBjÏ..Ñž¸¶[‡²¬hLÔ£ii¥tò£\2*"Oj’*  ÅCi **S©xzé/óÂQÍ-k’Wĸ4,žŽ³bqMiQܸŒÔ[Eã숕ìÛ˜¶Â’ b«½RÚ -K‚·nß•J‚ï=”ÒVŸ?ýì©:IðÙó—_¼|ùB‹­^¥c«½mãS¿Ô®¹bwÁîÒVŸ?yøÙç}v­ì¼'xë=æ½ë7¯î]¿²³·y¬ììÍ#ôV+Üʾœ›_œ øfæ¼ìX°•¬ì¸²‚±VVŽ­ÆÆm`e·:¬6§ÍÎç :&Ý\oå›ñM± æ ²Ûœó/æ—Ø6¿^ † [±Ÿ;ÒÇ‘mÉøòZb™ÔÖlƒ$³S¼*¥"¬U‘¹ÂÃp[-cÚJ!W€­b„­âä¶ZX ûK˜¶Zœž›÷NÃôx !Øj’J‚¶·:U%û0#ˆØŠg«ú°êLÓ[ càj|XÒ[ñÀ{­À æÃ*Ù\MÂ&ÒVœ\iª‚j pJþR5·{¦å’ ä¶šJë*'›2=_©´ -È•[:Ui•Œ­¤}Ï[¥î?¯öÊg×&¬äœ•]û¼l%5 ½š½2Ê+)篔VZ‹P²¸ûæØi-îE5@~… -¬{…#Áhù•Z!¤,ȯV`þ Û‡ ÊF¬* ‹„kë©Ík×®ëðèK_úÒ—¾ô¥/}éë]_ï?þþ±ã¿ø­o«kF'¬À¬(…ÿÑOÿÝ/tXÃ4 kD™H¨˜„Ù1Ì"Ä VßÀPkGgM}}QII~aA~aáÅK—ŠÊ`á¹ÜÜœ3gTÀ+°¸ŸÂA„Ð"ÌÍ…)„ùy— - -ò -_––a‹°ÔXY^UUQYe¨®¦–±Š„5hqç"w¹cþŠ‚‹àUv ëÍ<ˆ…ó[¸Ë"¦âPBÌbµ5ña'Î"ì¬!¶õñÖØÐØ8oZE -k$6ã½Cýý­]<‚UWg¨ª*7Êy‹VuU "äËBs+·`5™ÍÍ-P!lljjl‘{-Taa}#ˆ³Øùj«·¯o€ ŽYÙÿ¤Rka~)´>v¨PK;¸²&ñ«µÔæ¯ØÆá#±„V0•RUé-?‘}’"R= X$C!‰¥³¯h¦]*®Eiaª¨¶¾§ù– O1e_z0Ê~L|“N•M¾®ò-öÊ(à‹ÎÄÔïÊ\‡ ¦6.omïÛjJ‚Ümµ/°ÕMŽ­°$x÷Þí»÷ïÜã%Á -¶·Õ󧘶‚ÀÕ‹—/^¼zñêÍ -¶z}³ú7[‰žàWJO WJOð ¡·úìɃGŸ±G¢ê­nݾ~pxíúͫ׮_ÞÙÛº²³±u%µ¾•LAOb³×'¨è­ó3stè¦Ýè :&!Fe¥’ ‰­”À•ÕA,‹½‰yÚÊ…ØÊís{¦=ÞiïÔìöqž õC ‹a—¦ž` ÈU\„R–\e]èÙ [Ñè@¾%i†àˆå[!@fµAfűU$¾Œ,…¢Å°!8ç_œ[À´ÕœÇ7ÞÛ3ŪÃhÎ昇§ã€ÀÕ˜uddu‚¸–¢Vò& -ƒD®s *Ø -YVÑtÒ¿Äžb+?*Ùgü¶òθÝì z](ãÃl5<<Î6üÌU† ­êî§M,ˆ§v…kq+ûð8`+°²‹´Õ8è­&mN· G -Ú‘ö8`Ë6 O´ÿXq~¥ by§å’ Â¬d¥äŽ‘}ƒ•}2­Hûn¹9(%¯ä:! /%ae˘9˜ž×‚[þ¹òW2¹Ê‚à²Ú®ìÚ"a†kJX°Tu˜Û7£Ma¥[Üi"!(°ˆ_i+„³óKs¤À -a0O¬À[4†“dã| -á*e±¨ÜJÀŠ'¯Ø;Ÿæq¤  EBÌqeûêÝ{ô¿|ô¥/}éK_úÒ—¾ôõN¯>üðØüÂ/ýRUm½Ê¯Ò(ÖèØÐè(%²(E KÕ¹“Ƚo § "Xu&S1 ",Ì/,<Ÿ›[\VξGlõ„J‚O¿xþô ˆZ±í9ZÙ_¾â“U·•&aõãÌ-[æJ®@Ìþ’ÈÕçϸ•ýácµ'xx÷®n³ÏžÅÕÝ}ö¼6[¥[•=¶ŒÁ¤põVvh˜ † ²w#é­hž ¤­&[!³ràæ¤À•ÒdW„´Õô,ˆÙg³só³þyÀV AÈ’˜=E¹Þ -z‚P­Zr%$W`¯â’v²Â3IlûX, t²P1´U& #‹Ká…Å~iο83˜™›gÉ7ÍW€†&=§Û -%A˜$H%Aè bÚjˆôVìsR„¬°j À_6\á´Ah%¶b×ÃEO[Ù[ị»­`’ w[³úld§ýƒÃR=°OÙ×f®0š5†+¬ -Š´Õ¨Õbv, NØ''Ô’ 2)#µQ+±¥ó+¤+ÂjåV5d•R:‚Y¥Y­¼Êè@¬Tϕ¯ÜD«lé,7?‡±ÜêÌAµW(ß…Äú™“W¾4œ•!rOgVâÕðeu¹ÓÕU¾²i5ø –¯füHaÍñ)„Y+„óK³X! àÂ%öq³Â>œ7¢¨pAŒve"XIÌbñΠh¦D³ÜäDO7·®î]ûgz…P_úÒ—¾ô¥/}éK_ïòúö‡ÿàƒþ‹¿X][üj|bd\À+dY\„5ŠR¬Ñ±A¥E8L-‘þ¡!Þ"$„ÕÖÑUÛ`*.-Í/,,(*<—{¡¬ÂPBƒaa‹ðä‰S9'rT„E¬³¹¹¹—òróó/åƒÈ½¼‚,îå0ˆ°ÆXBT`A - Üæ4ˆ°‰íðaS¥°pþ XÁ¢þ &¯j!ÅjÅ:a,¢X¤À"„ÕÚÕÓÞÓÛÙ×ßÕ?Ø;D"÷‘‘1¹E(‹Ü ‚5Ì.,Á2ŠVIEE™Á¬j1ˆ«˜Ä£Ž¢[Y˜X,ýî´ á«ëë[—/ïì^i««×®kÒV·nݾux•ì¼$HÃ<ú É*ÙŸ}ñäÙsÂVÏ_¼B%ûë¯ß¼zÍ£Vi+‰VÉ›L®ðZ¯Þ|%z‚¯•ž »/Ñü\™'xûîƒ[·až ÇVûûìIq½ÕÆVrm­ìËheÏ“ÞÊ?`¬ì“¯ÒV.¶‘Þ -VV¸l5açªv›ƒ°•Ãåq‚•z‚ÄVìÖfæìfçüóùE0\AO0J0a¤`œW¹"‹µrØ®®’謦sfÅA+ÑŠCÔJ”c‰P8 ǖ±Š¦­[±03ð‘’Ý7íö΀K‚$³:©$ȱÕW²Ã‡!úy=°oØ>çWÂÖ>ÀG -rlŸ!ÐäÃÇ päjÂ=A ¶õ=N®4"7‰Yõ÷cO–¨ -Òç$Îãi+®·²aÚÊi+¦­“4RPXÙ•‘‚¾47»‚¤&•’ ™l•®d'äåP9Œ7“á¤õø²…¦Ûö®ß¼vã`ÿæ-è Þ9¸}•ì÷ÐmÅ•ìñI‚ -¶RÒVÏ!m%|ì_fb+5jõ•´É«/3W¯^+óŸjWBoÅ{‚7n³¿·sgoÿòÎîæåmöCçØjy%K#±…¥p`z‚ì½äÅa‚¤·²¶¢´•µBÃÕ®¬ö »Óæpql"w/ÌôNy}3¾é9ê â<ÁÅÀ|ÄìÁ0õñ†«ØJúÒ—¾ô¥/}éK_úz·ÖŸþ韲Óüàï;öþñãÿþ?ü0_)B kL5ºãD‘ô·P)f˜Z„½P!„Ó¾fKkEeU~QQaqqnÞ¥K…åÆʼÂBDø©àW°É÷óçÏ^¼xþÒ¥‹ùÐ",,,().,)-®¨(¥A„UÕÁª–øU}CM½ ,î¦&Š`©ù+5|…üʬ*°D"”üí¼EØÜÚ®´‘;Ì"dÏnp¨Eîp@šŽ°¬Ccãƒ#c}0ˆp°£‡"XÁª¬,3K Œ` U r¯©¯«7™››š!m#[ÛÛ¨BH-ÂFj‚öÊB´`Õ™L hw7ƒÈ½£½«»§€ý,ØhÜæp¸Ü“4ˆp.X .Ð Âx"¶¼²ŒS•üLZKæWk››ìKMÅ/zD´)š&˜:‚YEÙcQ¸$!)u'[0*c¨Dzµ0óËh"ÛK_Æü‚xüÙ½‡î>xxûÞý[wîÞÙ¿y°wýæÎîþ•«»[WvÖ7·V×7–WSÐŒ“Þ*<¿œ›_$½•wj†½œ`ew¶²Ú[YU`E%A¶Y!mz+°²»@oåöøÜ^ŸgJôQÌ>‡#yO0ÃCaè †£Ë¢*˜T W+BÏ.2WpŠs1a²†uÂTby-±,ÜVñd„»­`† (Ùƒr[A ÜV”¶šó¢’}ºx^wÙ]VN+;|ú \}htp& r\ÏK‚C¸ „En+ž¶ÂA#ô±iE1»õVö1!f§Àb«I;.7+eËÌüи@XiºlY”ì2Q¬V{ö·d²Ê P½=^õ–Kzm—]ÆbZ~E#¹ Ëíšw˜i赧7 -v Ö‘Õ´Ç¡Qc¥U½$j~"bþà´Ë;•Eå›…-³E(!,ß, "”"X¨ÀbÛ|0a¿“©Íg_¼üÉOþ6µ±â &¡…:m2ÉÿWÃWoÅDÂý¦°óUšE¸sUÿËG_úÒ—¾ô¥/}éK_ïôúö‡;~ü—Þ{¯¨´lÌj),9Ž%*„įF©HÈ6jr—;Š°zûÙñ]['X°ŠJJ -ŠŠ -KŠÏçæ–”———ŸËÍ=…ƒ?Á"!!¬“§Oçœ9ëÜ9)‚•ŸWP˜_ üªHTË¡B"÷JÑ"D‘» ,î ¦ºFBXMȯ̰57+ù«úf^µPì -K…4‹°XªÑ]D°aµvuS‹øUÿ "rÄ‘a0‹PcÁš¬á®¾þ¶®îæÖ¶ú¦¦šúŠ`•*0‚e¨¨4VB‹°¶¶¡ÞÔÔÔl¶ F°ÚZ”Y„Ž°4,°¸C…ƒã ÛÚ::ºz{û0‚5†,§ÛãÁA„þù˜ÝF¬ÄrBXÜ¿ZWZ„~…¬øòŠ·˦–’ë{RŠpP,¡aVr€J&H*ûRÎI¤Ç«²ŸJQ«¬‘ªxÚÕãGð+þ]ÂVlXMá0ÁmR²_½FJv^$·N¼{ˆ%ÁÛi«G¨dÿœc+L[½|ùÅV¶RK‚¢HJ+ UD®~%®4ó¿Tz‚ÏžcOðé3.füÙýGï>xtçÞƒCÄV×÷®°§ƒØêêúÖö³æz«8é­€ðøçgü©™Y/ô§&Ñþdwñ´•Zœà!,* ²ËØ)på+»Û3åöNû°'ˆ«À\`ÁX¢ÀÕâRxÉU8 o!vd·žÇÕ80ç‡çȯVÄÁå•oN‘Ø -J‚ÉŒL„”† °¸©àÙ½‹’ )ÙéÙaÚ -[䶃ž š³’Æ -±U/’«^‚WRà -ÇBà ->'G'¨*ØJ'èwL²M* òa‚ö r% ‰¶­æNï:„ÏÊ©5gmfd«$ݺûBVÖoàWÙ7»ªºJ/f`4ü8m“™•Æ·!,ÛÏÑ"T3iiíB‡Fó®F³œrøJÛ"äK…WP$œäüjF ¬9M‘PaùfX$TEîdÁ -,±ßŒ•XbõþƒG_ýõ“§ÏÂÑX$– V\¤°ÐÅóW a{Crµ–1E®‰[K­­oìa}”éùèK_úÒ—¾ô¥/}éëÝZüÇÌNë·~ëØñãÇ?øà_ÿÛ;aw ¶²jøÕ(ÄP¡::ãEB?Ü?<„ã9¿êîë7·¶«ª Š‹‹KK/åç]Ìϯ0V‚ëìÙ“§NÈÉ¡ÖIaÁÊ9s"XçνpáüÅ‹óòÙ…óŠŠòKJ -Á‚e(5V‚«ªÊP]-šZa DîxÚØHƒëÐâ® ¬3GX0š°ÅbB¥K(@ßšÛÚ›Û:¨Eˆüª»£·VÏà0‰ÜÑ‚5¡Ì"T;¿x"X½}Áª35’«Ôh(©(/­(/3 U••5Õ5uÁjn2¿jµ´µ[ÚÛ a±sØù&¹ªm¨ŠÕ,v­f(¶wtu“È}xllÜfç¬aÁ -†Áƒ¬ì(µA…_#EÊ_¥0–ƒ!–˜V™ž8B$¥EOÑ̘S<_æûñ4¦”I«â÷—³\>®½©o¸ ¾B7{t™ó¥Øß¼¼}ygwû*w[±c½}ÀV¢$xëΦ­HÉ~çb«G>&·U&¶‚1‚/_cÚJõ±‹‚r1˜•²i«‚„¹DOðKì ¾lõRé òy‚¼'øðñûï‚ÞŠ=ìýëì¹l_ÝÛÚ&lµµ²¶ž+û -{–BÑÄV¼'ˆØÊ…Vv˜µçtYíNŽ­`† W²Ãô=u¤ ôÙ…0OPè­|3SÓþ)ÂV"m5¿ZlUÁP8#±ÜGbvl ®ñÌï¦Òø Ä‚<ãÉm‰yÚ*º¸a÷åŸ_šó/΀Ûj~zÆïƒ,Ùì$HÎ [ñQ‰6°²£Ûjbxd|p˜}¬k}ˆìëâت¨Wƒ­†„á -°ÕàÈèð0äµ[¹·qlE+³COÐêr“ÛÊ. êRCP¸ò¤«\R103måÐD­|òô@Ùšþv eueVÖ·£-WæØÁ,^,™>‰Ø•,‡÷*É+ûäÍ®mf»Ì7ó+§Ê¯#–OžN˜Õ÷.)¤.§¤ÇŸ>Òâ®d±´.,âWäš‚Í"„ -!̘_ -,…CÑD(’`;_ýõ?üãO÷®Ý€+d°¼Çó„Ô™åŸí¸%’«<‚…sfqÌ€¬ÔúÖƒÇÙ¿û?úñõ?ô¥/}éK_úÒ—¾ôõ.®¿ûÝc|ðÞñc…%%ã6Çè„àÕè¸udl‚z…ªË}øˆÜGFT; QäE¾Á¡ö®î:ScqiIAqQaiÉ…K‹KËJÊ+Î_¼xêôiˆ`8üêÔ)Á¯ÎP‹ð,E°.òÊ+,Ì/‚A„ÅåhÁª,¯„¡±¦øU¤° ‚Õ`ª„),Þ"D–įZaY”ò+8m0s‹»‰«ÝåVÛP䫽"X}ýÝC=쨖=å‘Ñ!zqaYíįØìà(DH,aÁªa¿”=‘ŠŠrŒ`««ªkkjëÙãå0Êüª Z„|!ºÜÍfea¤°aÕ75™š›Íæˆ`uvöô²WžýDØÏnÂápy<ž©inÁZ -Å B_Åm BÈSX«<ˆ…,‰_±øJ#?éZªÌÓx${Ò)¡¥L”ZÖ^}9[yp9íÖ"ñ„JÃŽ@[‘xæ=ò-bvÐ[¶Ú¸²}eçê6W²ßPÒV×oÞºypxóðÎÁáL[ݿͱգû(mõäñçO>{n«'„­ž¿D±Ulõ™Õ—Y•^iF -~ù£× -¹z•mž ö!pEVö»÷oݾ{ãè­v÷oìì]»¼suõVì络L±ƒ_öšÉʾ°8 +û¬Ç73éeGå`e·9]vÇ„ôVrÔÊ&† :1»sÒÃÅìÞ)³Ï¶=AÈ>-,†ƒ‘ ÀVðD1;;'VyU0)g®Rê—²ZYÕ6W@Éi«xɤ­[Í/ýè¶"låÅ’ ‚­ì.Ýéi+XÙ [éWÓV¬ú‡ú¹âUAUÌŽ“XG0pÅç\PO®leuBOÐêäHÇÎÝV™™(ÊE*ƒP92PŽTfäe¥=^zÒ4VGJ×­.ί²îÈtë›"XÚpu5c -•ïzµ±+Ï;nõIa­¬±+Û7 ,ßÃÓ]îZ–OJgùÔùƒÒBÜ™¡ü‰°&eÖ”Èb‰Y„À¯æ(‚Û´~[„sh.Ebñåµ½ý›ÿë¯ÿæ믿þÉOþ6±¼‚1Å•øJr*„IDX«„°$Ì»&'¯x+ÉSX[—·õ¿yô¥/}éK_úÒ—¾ôõ.®œœvúÿüöo¿ìØñoû¿þëìÐudóWxŠA,ë°¬sW¤îcˆ°ø8BlÐ Q‹í÷ô4µX*«« - KŠó /\ºT^Y¬óçOž>õ©4ˆ,XgÀ‚Å6ˆ`åæB+#X…EùÅÅÅeeÅb!F°”üUU]Cu}CU}}M½©Æd"‹{­àW‚b‘ «¥ƒX*Åj±Ô7·plE"w„W&‹…*„°µwˆA„Ü‚Õ ,àWÐ"U#X#¨ÀÆ×m"X#=dÁêèhji©kä¬2#XÜK*ÊË`!X°jëëMÍÐ"4·ZÀ‚ÕÖf"a›ÙbA‘{K“hÖ5@‹P€¬ ^ »pGwwO?û ŽBË5éöúÀ‚å—É‚…õ8Ò‘,X8Ám]U¸op„E DîY -€G¥âÙÚñl‰c«lŒK¹.AªxÖ"á2çWñD$íFØ9ñe‰t-ó/Ùi4Óã‰ev8·±i«í«;»×¶w÷¯^ã%Áý˜¶ºux@“oß;ÄI‚wù$ÁGb’ ¤­>+ûóg_ˆ´ÕË×/_‘Øê+­¾ÒD­Þ‚­€\ýÏ/%½‘+ÀVopžà«×_¼xõôŸ?Qç ~vÿáã{he¿uçÞÍÃÛÐÜ¿z«ÝMÐ[]fO•ƲŸ{4¾ Vö`d~)4X˜ž x±'HVv‡ õV„­lö1+Ъ±q+'WV®&l f·;]ì æšä=AoƇz«é?{¿Íùæ‹þù¥³G‚A)SÄì0R0ÃpÅ·ÕÔòr¹"fW‰"¹Š°Û‰‚ª+åûÂRx~ÄVþÀ¬aš”ìS³^ß´Ç‹Ø -˜•Ç¦b+ûˆÀV4L°Õ€Â¬T`%a+4\ Ðø†!­˜}Œ‹ÙG&@oű'W\Ì.PX±S—È\¹´UÁÌ¡NA«ÒÔLéÖ䨕Êv¾IQeu¹iâ¡5 ae\ìçìò»³f']»v²¡”ªR¿«œóVU»'³{˜¸:ÚÜ®Ž#”¸Vš¹Ý§u¼{剄N%¥ZÜ%l•u£üß …åã"wHa -,Å}‰}l­¤Ö7®°ßúŸþÓ×ÿôõ×/_¾fŸä‘X"!Z„ ÂBr%&@ì*©ñ_ÎZ[]Ý œ•Jm^½zý»ã†Þ"Ô—¾ô¥/}éK_úÒ×;¹¾ýá‡ï?þÁ‡ææåÂÇ Â+²€\Q ö‡°B8<¢´!Š@ù+ð õ µuuÕ›L…¥¥…  ‚UTVFƒs(‚uòäÇ”ÂÒ"<{þö¯”‚G5ô–Ì•\½|óå ¸z«/>{Jz«Ïï?zŒóܺ}ïàðöõ›·ö®ß¼ºwýÊUÀV› ·b‡« ¡·Z½•°²ÏÎy|Sn/ô“d‚<ÕZÙ·]‘˜/`³»ìNÐ[±·Ö¤nÁã›öMÏNÍøgf[ù[‘˜}1†ÀU$Ž$8%°*ȱUB–\ii«UÅ…À*¾aÚ*šÙ;Q¸ÅpÜV¶š%»J‚ÓXôNOz¦ÀÜåtÛî ›sÌꀨ–q’ ~j s%;‰­YáŠ!±aÚŠä=AÔ[«z+ ¶r*VvN®¤ž C"'Î “RÚf—8‰#ÛŒ¼4 »¸Êp∉Ó$—:Q¼*óK%võ~u4×ò(6xåÁH_j–ÈS)û´“ň¥~Kryýœ.÷Œð• -¸YY^‰nye–(+° y…),y¡dqWN¥,éܧPäN‹§°ægüóįÙ§ÛÊÚêÚæþþÁ_ý¯¿þé?}ýÓŸþÓîµ}ö1G…{b9™Àß‘å$ü¦sOa³bŸðËI%ˆ•bŸð¤ÆJ¥6>xÄþÝñò•þǾô¥/}éK_úÒ—¾Þ¡õçÌNÿìÏþì½÷ß?öÁ¿öƒØ''G¡CüJ bK),R`q ;¦¥èbPäÞ78ØÓ?`nm3TU•”ääæ]* Váé³gsNŸ>yê "ä-BDX§ÎžeÛ¹Ü\¹çå`‹°¨ ¤¬¸ÂPl0”ñVµ¡ºøUm„¯Lp -z¨FÌ_5*SëŠÅ-Xf2+jÒB2b5aòŠ*„&Ž°¸Ki - Ö@÷ ŠÜ‡FØQ- ,lŽX5"wö­ž¡ÎÞ~ E°À‚U‡,c ÄÉ*ÊŒÐ"¬ª­©–‰DîįÚ:Ú[ÛÛ-¼Ehij17™Í hÁ‚„ õ°ÈÛÛÛ;;{úú(‚eµÙ]““/`-@ V|™[°T‹ûÆZjgTÁŽ\!\ß¼,"X¢µ‡½ˆ ‹´Ý@Í9R§O¦TÄ´L|IMUÅ–lJÞ‰ð{á7Ñ+­âË -¶ -Åâ±åäêúÆ&”AÉŽØ -ÒV¨·ºuý&L„´ÕáÝ[wîQCðîý‡i“ÉmõD¸­^¼T±Õë7Ȭ !ø0(mIðG?þ :U¶¬äêÖpz«W¯Ÿ=ù ÒVØüüéCÒ[!¶:¼{ÿàöÝ·¯]?`Og{÷Úåí«ë—¯¤6¶Ø””æ¡hãIdeŸŸšõ{§gÁ[ŽØ -PN\Ù€Pa™Î:6aW$WH®ÀÙnsÀHAç¤Wì ú`ž ‰Ù)pűUz‚ ¡bï´Hœ®xOëìX{yoÉ5%jÅíËYÄV(a‹SÔj1´¸­‚s~pvÍ°£~, ‚’ôæ^* RÚjÌæ r„yxlhûΘ¶©*ž¶ÂÙ4O3W -¶óÙ¯9ÍD·Õ0b«Ñ ;»‹q`+«Ãž¶šL³²§«®ŽØ»y9Žd2²rêÈœ•-I)û’§°\Ù–Õ•ÁÞÚ"TÚ‚š–Á¯¼êùràÊ-S)6NæÑf®Þž¼zÛ¤ÂÌ -¡»òfæ¯ìRg3ËPHQ$B•_Á>œ²ý9…_MÊ),ËDî¾9ö;ÅÞÛ‹ó‹ì7xe}óÊr2õðÑgÿð?ýéOÿéïþîïƒ0ˆ”q“ôëC[µu» -ù+šÖ±J#;×6x[|N7·¶¿þúkýï}éK_úÒ—¾ô¥/}½£ëÛ~øÞ±cßù裳ç/Ø]n…\!˲(R÷1iá(pFéÀ…0CØ"„"!Ûéìî©£VQQQiIn^^aIiY…ñ|n.X°Nå||âÄ'Ð"7–¥wšóacbã´RwWfVWu·Fš‘B#ÍîìÌŽ4ÒÎ?Òª¬dzCb=á½¥÷ÞÛ$Ó2½÷ÞTuùª–ö¼ï{νç`VµæKWÄ=qq ‚,‚¸Oý~Ï ­ºþ¡°²÷B$)ÖÙ Ø*ŠVv&è `ÚÊG†+\R[J‚ච-†ÁÊŽ†¤ž`,ÞÝ%æ ö²äŠhcàjbt{‚3㓳¤¨×ôôœÈ\¡âA”Y±3n~>»€7žÇŸ–}9ûóQÚJ¸­[ Žöq·ÕÞ/p[¶¢ -$0«ˆK‚àN'%»ÃÃÇLؼ(a+IråhŸ+'®Ttz5äÊÏç *Vv?)•5ã -¶ -ÂJE®‚Ú-R1™˜vŒ`l;{‚®*X%_“ú³˜×J¸ò‡W “@VT.ŠO±ß˜\R÷HÂ8¨ÓŠÄSq­ï;˜a% ÔjÞãRPS'Ôò+5v¥n©3(KÝ©`ȃXìRX½j -‹\îðÌ‚‘c“3K+0saeõø«Wo(‚uïþáá1ÞGlÇôሰ¶Æ>+5ÍÁj@ŠÕ ˆÜkÐâÎnYÅî`Mu%¶k †:´`YššZÚÚÚmv»ËÍ#XqÁê' F°&gæaQ©„È•ˆ`©þ+¥E8=7/1+™;MK­=+Í’‡JA^‚\¥PSÊ-囩mA -Yin ~Càc¹šžš–àòÚñõ§©$ˆØêÜ™s€­Îã$A( ^º²uåê¥+0\E‚áûö…Ñ8̌ƻâ]½€­zÙ™õ `«¡ÁÑÁá1\OŽMà­| -¶ÂKÅU¥N ”‚:ÛÅ®ä‰xÁT Á”3øÞ!cWÁ”U)mA_Òmä–7”ˆ¿~È ÂïÛ á+‚Wq)m%ßGêBŠë£±”¿“w3«øYÊ_%CE‡HÊÒ´¥ü•bÁâw$Wt¬²,ú,A-i!í.h²ËÁþÁö,˜_XÙ8q†½¾m]¾òõ7ßþö·ÿøÝo»¸¼2ÍÁï<{ÁS†ÎÌQsp‰@–:…kƒó¸#Ö<Ý—VÖ®]½Îþéúì¹þ.H_úÒ—¾ô¥/}éK_?¢µ{÷îÿ ¾·cLJ¿úÕž}ûÙ¹%¯\^ˆ]¹Ðˆ%Œîb"¡[Ì%#`Qz,Xp2èlhl©6ròó¡E˜—sèè‘ÌÜÜüââÃGîÝ¿Ͼ}‘Å}ÏžÝÁÚ—¶ßþö<¸ïСCÇŽ±ÍEîÙ9Y¹yÙù…Ù……Á*.-~UN,àW‚ À«šÚÊZ£4ˆ°Ž‹Üñ¸†ÌWFS­ ]Xø!gVxPSϧÖÖ7Ì 4‹°ÎÒ(DîÍįÛx DîN7ü60yÅEîÁb»Ínojk·4·P«¢¦¦´¢¢°¸8¯¨0¯  ¿°°°¤¸t^eÁª3B«Þd‚aCB‹Ðh2Õ•V »½bÁb××Õ×›-Vks3`¹=¾@(F;»zháèØÈø8Y°¸)G«óä!,v,òWJkqyUFUÓYúDJ0%à• N3Z<¥°)© 8¥(Ù=W äJº†ùäô,»;+«ëX;·´¾qzaquvnñÅ‹Wßýö¿ûî·Ÿþeÿà0öaá“k^å¸ W rŸ_„჊Îûƒ+óèÂZY=N- ››ú» }éK_úÒ—¾ô¥/}ý¸Ö¡ƒwìÜùÞÎùWåÄð•*Âòú©»<ŽÐéöÚ\¿—;ÅÀ|.Œ`ÙØ)ak‡­®^‰`åeäd9v,¿¨(#+{ÿ¡C{÷ïß½7í×Ø"TDX{„uà ¯¦§Ë‹{zvNfn^vAXÜ!‚E -¬Šâ -Œ`a‹° -î5ØÄþ L!¬ýAAò«:žÂ2rx…#•ä•Â¯Ì‚_ñ!Z°Zš[­­m`Áê°µ¿â³1å,²`¹;ΛÍÚÚZßØd0›« Á*.ÃA„…ùùÅ…Å…E¥%¥eÄ£jx˜ŠüíÔ"„mª7Q„Uk4VÕÖâ,ÂêŠÊJ²`a‹Ðdj VSkk›ÍÆþ(.Ÿ?,eáèÐèØèÄäÄôÌ;ß™_ ‹û‚„°`/Ëüj}eu}yíøì¢bhx*EtJ!Tbz &j%£*)a¥AR){‚ÛÝ@ÜÂââ -Ä­Nœ<½ØêôÙó¶:á<”7/l]ÞÜBl¥) ªØêÖ{wî=r…%Áž<¦I‚Ïž?yŽ%AˆZIi«í˜UJx…äJŒ|ñô’+©'¨è­n¢ÞŠ÷Aouùüæ»#§Qoµ¶qrempÎ/.³ÕÉ™9´²O‚Þj„ýq»zúb4L#Iae÷ø¹Ò -°•FÌDlòBõ£[Å»c]½ì$š®ú`¤ààðÛ#8OpD¸Ù;MÎNLÍ!žšŸR9¡ª¼®‡¨Õ,Y­°$ˆØŠ}“Ññ)öÝFÙ}ï‚I‚ƒ#}0I°¿ ”ìä¶"lEwM¤­¼´²{!êpÙìÈ϶’ÅV˜¶RŽímívP`ٸኽd!¶bßÅìê8†€ËÀž`ØlåUz‚aáfž«êf'×åD1€¹'ŠV±wÍþ 'ò+™M)x*ÎJ¢U — 럕³Šú@m¯Æ"$O˜9¨ÜwM©P•ºÇ…)+þY)ïr0UìJ±¸ËÑ8µQ(þ¾]²Kö_É"÷„kø5Kt Ù£½«7Ž—ì‘Ï^±§¦ç×7N¯?1:>yåêõ¯¿þæ»ï~ûíw¿eÇ#ãe„ Öä4o…ã„: -wÞ%d/äÅ‚ØíÂòÜâ"{µ_[]§ýïÞ ¿Ò—¾ô¥/}éK_úÒ×eíÙ³çÿøƒ?øù¼·cÇ/~õ«øøã`$F-B8í–åC–ÁÂKéÜe´Ûè Ñáhln­ª©Í+(ÈÊÉÉ-È?|ìXVnn~QÑá£GÓöíKÃþàGii³Ÿ`/ ,ª ÂÇ=ÊöQD˜ž•™“›•——ST”W\\€"÷âr°`•TT–áBäWµ8…6GX”¼BŠKèÜë•ÉƒJaPö·³cί̬*¬KKkc·`µ9Nˆ`Ù]ŠËÏ-XnŠ`9Ø-!‚e±ÔÔÕU€«‚ýü¹……y…yÁ*--«¨¨¬©Â‘‚uuõŠËÒ`µ¿‚–ÙH³†j*Vs‹;`™)‚ÕÒ "wZ°B!DØ ƒGÆGЂ5…¬¨fÂkƒD®–W…û"æ¯VÖ€_±4SÍŒo—Z~2³JÐ’öÌDêë5œj‚6¿fnz$ÄÇ7Nž8uæÄiž¶:}ŽÜV!mu ÜV[—¯n)i+°²ß”ÜVˆ­ ¶zô˜[Ù!mõŒ+Ù_¤H[%0«WÛ‘«—¯Ÿ+äJê >’{‚÷ ÞêÞ[ˆ­®¶½Õ™óÙÝÙ8}æø‰S+k‹`e}ÍÔÌ<ûÛŒO’Þª°»·/ÖÝãÈvÂ*¶RP•¸bOaš'ȶ?Vö@(Œâ<ÁXœ=Jbq¸êéëïí1ûˆÙ†Ç†FÇ‘\MŽó´UqcæJL T¢Vt%ÊØ繌fÂÁññi, N¢Ûjbp(ûo±ÿ(*ÙûØÉ;ÚæyÚ -ç$F½ daÔÊ ü{."W@¢lªØJ…W^µÁ1W`q7»3)p=Aa+®ÂÜp%°•[ÅBˆM¤N™’ÌI¾ -hZ29QÌä)}Vò5ÔþójY“WâQ -­ò'דÌW)!XJº•2v%Ñ­Øö¬hÂHD¥è×b:Ùë%$“=WïŒ`ýÎ ïRc¿RÿR2Tþ¾Ä£BQ¾ -˜ê‘ë„x}¾ÂÊ¡†zEÙg¼X=±®žÞþ!öd9¾qzeuƒ=ƒ–W_¿ùøÕ·ß}ýõ· 3œžEù ô¤ä•r°(f.-,,±×y$WËǢɘÅZY;~q‹+°¾ùæý¾ô¥/}éK_úÒ—¾~DëÿûŸÿsÇ®]?}ï½ÿëÿù/v2TüíNdYJˉ",'way!½àtÛP„…³æ^µvØØ"D°Ì %åÁÊÉÎÈÎ:š‘‘[P˜™“³ïÀšBøÑžw§íù8mïž}Á‚A„ -Â:Œ-BœB˜›•ŸŸ]X”ƒ‹ KÊ -paIe%Y°(UV,¹×ª°HX¥laÁª\Ö‘{• -²¸ÂÝù+ÚÁ26P«©¡¹-XmmÁ²ÛÛšA„„åò´“«­ÝÜØľgU­¡¬²²¸¬¬ ¸8· Š„E……%%¥åÕUÕ†ZC±®Þdj¨¯Gÿ•"Â2£K‰`) -,öUU5µ5$rG VSKk»Ífw¹Ü^Ÿ°`õAfhxht|lbjO|D…pIm -„Eù+%‚µ²¶>·¸œ‚Pms©~vf{05ó}üjÉ•J±æ¦fçç—–×ÖOlœ<}RQ²ŸÃ’à…Íó›[p’ –!p…i«›W!mu °ÕmT²ßS' >x%AH[=}öA“¬ž§´Z lõ*¼b·”±Õ3[=}ú{‚¸zðý JOðʵ›—¯^Ûº|åÂæå³6ÙÝawêø‰S«Ç7Ø/¬ìó ·bwt|’ýí¶êäØ*Œ@ÚŠ¬ì0IÐ#°+/‘+Ž­üAöh`7æ+ÂV0O°›æ "¹èëì1ûèøÔØäÌØ$š±sç© ªâ™Ã=OóÙ%R¯iø&c8I°Õ…Çúú‡Ø#³»ÓV]˜¶bgýp‚cw ' F<¾ ¤­ØÊ/5§H[Á0A³·+J+›’¶â»ÃFD‹ë­[Ù˜¶R­ì>Q züa?â ¨†+¸¢¶ Ü#SÆÒÅ¢VJõ,”BiOž —µŠm§IO¦RrŠÈ^å «+ •Ò*ï6,KcÉ6øw$¯ÑX’¿=±ÿ(fFZ•ÁR›ƒ‰á«Ä„~8+®ý?a¥þP;Rv”%" Ǻá#XZ–&vF_–Ú'ÝC5ŽÇcø°³«w`htrmãÔâìѱ‰7oóíwß}÷Ûo¾ùöîÝûƒÃ£€‹gægÉåŽ Éë>+™¯Ø‡^AìŠX½ì³——Wßðýë?11­¿Ò—¾ô¥/}éK_úÒ×h½ÿÁþò—?,vòåöñ"!ò+JaIEBÈ_yh¡·"Âêp°³E{›Ínsº¬Í-Uµµ¹ùù™YY9yyGÒedgçB ÖÇ{÷’k·Ò"Ü"¬}î?tèÀáÃ`ÁJ‡A„P!ÌÍ.(È)ÄVIIaiYQYE°¸ Vy5ä¯*k ª%xUA,£@X‘Â2š0…äJt 1‹eâ),i¡E²`Á ÂƶŠ`a‹ÐÙ,į|$u·9ÝìĹ¹Ýfmn55XkêL5ÕÅ8ˆZ„E0‹° ¸¨¤´´¤¼¬²ººÚPk¬7ÕÕƒö -Dî°`™Èë^g†ä¯ µUµ5ìöUÕ@±Ø5µÆ:nÁjjnmÛã C‘h´³»«·,X#cÁ ÖÜÌ<ï˜@kyU³¥„+kë«Ç7ØÁäìÜ÷f¥’[~ãß÷%) ‘+ŒoM²´¹yöC²°Õ[9ñ¬‚­ muåÒÕ«—¡'xC”5ØêÞ}ž¶"·b«çOžó´Õs[½LŒZ)ÀêÕ›·¯ø•¨ -¢á*Qo•Ô¼O=AÐ[]+û…­Ëç.BOÝ© Ð[$áØì‚ Ô[Môü»o ÞÝÃþ”¨.‡´YÙïð’ +µá±®|Ð[BÚž`g7`«Þž^Ž­ú‡†ÆGƇF'FFÇG!p5¥Tqš$‘«¹©éy´]Ía -Ð"a+p[aIz…³¢$¨`«ñ~#8Ò ØŠÝ£Á. W}Qt[…#¤íŠ@Ûñ -lå„a‚|Ú)Ô“IÆnãÓqÛšÛ;8°jC~…Y,ÕÊ.Ä쇰²ã0Aš'èö=>ì ²ÿ(V…˜=¦öUvàB -_ÅÔz`òN ÈyËöV«”%ÁxE A¯Ä¬”Î ]/ã,ÂVïÖa¥$c¾w–¿o!GOÚJV’+aL¡ÆZ¯± ¦ -†ß¯¤?“F~Të„ñ 6b§åWÚÌUW8‘_áŽvþ£ÈòA.‹B1dž‘X8Úïì]^Ý™ÕÜ"{=\YÛøôÓÏ€_}ûÝW_}=37?Eÿ'bŽ\X¾B~E‹"X<|µDýA(ò,Ö2”Ç—ÖŽoëá£Gú» }éK_úÒ—¾ô¥/}ýˆÖŸýÇÿ¸c×®Ÿüìgÿå¿ý·6›Ýòæ 2‘У±x…ÐÍ)N$tÛD‹SXv@µwÍæÒòŠÌœìœÜ\vy$ýXnAAfNÎþC‡h!¹ïÝËŽ¡WHƒ:x˜[°Žfd¨ƒ -s -‹ò±BXT",DXQYR‰¬ªê -œBHþv¨òð•‘ꄾ2Ô‘ SX^ÕÑ\B ea w½bÁ26Xë›LÖ&âWÖV¨6³3e»ƒ"X\äîñqŠ…üÊîòР¦¶vsS³#X¥Á¢A„¹Á**-.‹;"¬«3šL&Þ«•Ùj©o~eÂY„X!¬­ª‘;ˆ°ªª¸ ¿ÊÒØÄ-XÁÂA„±xœ AkrœEpFƒwµ?¸²Ê§"ÂZÁüÕêÚÆêñ ˆ`Q%Pnó½;a5“"R¥MU¥ø”íaçb0Lðøñõ“§[•ÒV7/ln]Dlµ)”ì—…’ýÚ[7nݾyûÞ­;÷Émuÿ‚­žÀ$A[=!a«Wˆ­^§ÀV¯ß*ä*!pÅç >l¥’«ÇÏüÕ¯vïÝŽÅÑ:w8m2B-taù8¢Y„Iäîp¶ „emn©6YegçäÍÈÈÄÖácÇ`!ò«س磴={öíýxï^àWöSëàÑ£\äž™™‘ü*¿ § (·¸$¯˜"XÜ‚UŠüª¼º–òWœbx…¤îjþÊÈ‹„¬¨BˆR÷ZÚdÁ¢–T!”*¬f›@XN`IÛîöØœn°`uØØ—˜,ÖÚ:SyUuiEE ","V~QQQiIYEµ&“¹÷-Ö«•‚X&3ä²`¡Ñ Ì"„"!º°Ä B‹¥©©¥½½Ã!"XÑX¬³«ŒÀä8Û‡,úñŠ¹·Qµ$XJkzna\€©•‚hÍH{ZºqÊ/œâ%ÁivÎ…­–õ§ $xö쩳çÎœ%Aš$¸uy“+Ù¯+Jök7o]l%ÜV[=lõäécœ$øô™¤d—ÒVD®49+e¿~«$¯¹†+è "¹z«‡ê<ÁؼËõVheß¼t™°Õ©³çOœ:süÄÉ•ãëK¨·"+;ê­À…Ø -¬ìñ®žH¼Kµ²Ã[áó‘È•:RÐËç úü!b+˜'Gbñh¼+ÞÙþ[gw_wï@Oß ;5îCl+è ‚˜G -NMÌLLÎLLˆª ‘«Hß‘ÌŠ–Š­Èj5136>=6652ŠQ«Q#Jvö"·U2+ö“ÄbÝQvví †b b÷ ' :=P„´ Dl…b+r[³ÂUsZ±ƒfÞz+N®¨'èBlå7›ý®Ðpå º|!iž`Ä'q›Á„ˆ\R‹'!,>IP)—)7–Ò5Zßx -xÛ®˜’GÉ%ÁÄ-©«4)¬”ßçÝõÃT“ G‘{,1‚•b„b¢ðÊ/:ƒsÉ¿·¸åŠÊ7VàUq7†íØ—õ°—Ü…ÅÕᑉé™ùá‘ñ /}ùå×T!üüó/Øk5{ÒBLaAZU´!ˆ5Gþvˆc-ñRá""Äüí¹ù¥µõËW¯²7Ë+kú{!}éK_úÒ—¾ô¥/}ý(Öÿþ/ÿ%»üð¿Øùþû?ùÙÏþöïþ®±¥O™ -Â~…q,Ž°Ü s'E°N<ñtº¨EÈN<Ùéd›Ífj°”VTfdgçäåede9v,'?ŸG°0vµ{OÚî´=»ÓÒ ……+‹Üaá ÂŒôì¬ °¸çç@l©8–`«¢¨¼¦VV•UW—UÕTpŠe¨€ -!§X•¼H(ÆÖÕ —»IT¹KŒ ”+„l[0ˆPm - –‹Ü1‚eç#Ì|Ê%`Ù­`Á2š*kkË*+ÙOü -VA^aAQIqqiIyUE°paCƒÕÒÐh5[­ H±L f¶¦:vƒZ£ÖTC‘°¦Æ¢þÝd6[¬M-Árº}>( ¬îÞžþ¡Ñá± °`ÍÌR ‹$+Jì -äí+J…üW¿b{ay%ɦ®9žœÙ–_©ÔkZb_3³HÒ`~ÖxÈ6N|LØêñÓçOq’às­TfõÒV<^¥Ð* ¼R3WjO WOižàÓ瀭?¥ÀÕÝû ·ºyç.ûy®Ý¼=Á«×¶.]½°yéÜ…ÍSg8¶Z=~‚ýnçIo537153:1542604ÒÓ?ØÕ Ø*ÚÉNx…ÞŠ¬ì¾€[ù\ø¤SÈ•Çë÷úB¾@Ðó#Áp”}!û“GcÑxw¼°®zû{û‰\ \‚ÀÕ8{0ŒÂ@Þ„ဠöC¹$˜:µ]ì*œIir_ÍŠ¨¿%[¥ù’È÷ä²’¼Xq©Q—;ƒÄ‚a4!ˆ%ƒ&™_)q¬@$ydáÿÒ¦.v&]Ÿ€°`£¿½uî<”Áڠأä•/ÃÈ_„ŠÊ{p²G)ý;ë Fb]=ì)6¿°208Be^vüæí§ß¢ÅýË/¿b¯uýƒÃ³s‹XÅMq,²`ÂZšCr=Äy>‚PBXp°°´ròô™'O³7wïé³õ¥/}éK_úÒ—¾ôõ#Xû÷ïg—ó÷ÿÁ‡¾·cÇ®>ض7]Çç—–ŸúƒNŸÏá¥.¡¨º=dÁ³a4X[‡TB«ÖWP˜ +÷hFzFŽˆ`¡ÈX8‹pÏÞ4hîç÷ý8rD‰`¥gà Bˆ`æç—”€Å½´¼¤¢RX r¯ÆaMYu ò+,Ö*),cU-‰°Œ¬ŒD®8¶ÒcøŠtî3\¢ËZgmD‘;DhmmçË®Z°ìn¯ XèÂr{m.7ûl3D°ZLK­ÉTQSSZQQ("X9ù…%ÅE%ÅeªÈ½F -¿BxE)¬z¹×ëMÀ¯ ‚US…"÷ªj˜EÈ®4bËÚÔĺݴ`Å4,Œ`Í’K(°øäÁTüŠíõ•ãë³ ‹ !«I-•âlj&1¦•øY0·ÏÌ`Újiíø <}J- ^ài«­Ë›—¸’]I[‘’ýúÍÛÉJvmÚ -•ì¢$øâ%„¬[½IäTo’°Õ$WP”F -¢˜ý õAoEóÓ<ÁÛ0OõV7@oµyåÊÅ­Ëì^œ9{áäé³ë ·‚žàÂÒ*û¢•°ZÙ†ºóô‚•°U,¨¦­‚|(6ÑpåSÉônùƒ(ŠÄ‘X°³slÕ7#…˜}`hŒæ Bàj|j\1\MÎR[ÈWMÏrû$ø¬øW±Õ0ÇV¶êd÷e¸§o »òc±ÎÂV`®ŽÄBaÀV~8Ogw*€ØÊë„’ a+G‡ ÈD­Ú”¨U+å.1ŽÕ.†œÚܹóN&¸|0<Ò;0HØ*ÖÙzœ˜&õ:Z‘ÞÊ‹üJÁVl£Þ*Àç †#d¸º2O}óÞ~ÄVC£¸Ç†FÇGF'¸˜ÈÀ( -Sqr%˜Õ8ɬ&é`–rVã`µ‚°úØ'i@á¹­[ v÷ñÚ#Ndçò¶ -†c~P²‡=þ*Ù€˜xÚ -J‚툡ˆJá ÁÂVʦ©‚Xd7À’ “¸²SO«‚¸Â²sç *Ø*BÜ@Õ[I]3[…´‘›€ÄÒò˜vz ÒqS•Vïø½Û#c+ÍŽ¤äT©óZÁDÒ•Ru¥ÄÀ”TXòOžÄJf\©jƒÑííô±ä­)Zj-X~i@¡_k€—¢nJ^+ÁŸèÏÿ]#XÚ¡„ÁÄ.¡øóË.EŠ%p~Ž!¼Šzüa—/èÄÎ,m‡‡ÿKA£ -Ø«6{âô¶šïîéë럘î<aë‹/¾úö[¨þæ7Ÿ_¸¸5<:>= c¨983Ëî”Å‚üÕÂ"UÅy…PL'œ_àA¬…ÅåÙù…Õãë[ˆ°ÆÆ'õ·BúÒ—¾ô¥/}éK_úúý_‡f—µ–š÷þó÷vìرkçC‡ƒÑ¨›/ûÙù lˆ`ù#±„AòWnlÂr²STâW$R¶6·TÖÔæddeåæçMOÏÌÎÖQ´`aëHäŽ-´ýÀ¯öØOüêàÑ£‡ÓÓÓ³²2spa^~NAQNQQ^1ð«¢òò’òJ´¸+"¬šräW^ H÷Z0º×¿‚VMJ®ä„¢EØPÃuXÈ¯Ì uR…D°ÚšÚ!‚ÕÊN«ñœ#XÂâ,W›ÃÑL,kcm]}E5F°JJ°EX[˜ŸƒKJ!‚U]k0ëM4‚V# ,ˆ`Y­Áª¯7˜LÐÑC -KQ`U 5F£Ñ_hmjnQ"Xþ`vñÖ(·`MÍÎc --Xr‹ïµ~Åö좜ªš˜œEB%_*{–‡µÆ§Á¸ÅNš–V×Ø7!+;a«3jÚêÒæ%ÂV×.¶ºÁöUi’à­»÷îÜ—ÓVO·ÇVÔÝ%Aá¶êŠ°3zÄVPôŽ ‚7Ï…§ç.Rl·Q˜ÊÆ{‚m¶$l…†«»Ò„ª 'W4ößÌJíi&Ä«8Wüçõ -•œUJº%+°’Ç’ÿŠÃ«çZ¼ üŠ"X™Ù\䞬ܢ’ÂDX\V^\QÁ¶Ê¯a•s„…µA>‹°®RaÕÕ!¹ª…q,iþ`}m½r D°,ŠÅ6E°PäÞ‚"÷G¿âã½|¡ÓÕj·7µµ74µ`ËP^U]RV^,°`å ÂÒÒò²²ÊJò±#Â2ÓBàWX'´XêÍæ:³ÙÀ~lƒø•P`Ñ B%‚emnnë°Ùì\,X¡(;" Ö·`‰çWËœ\-­®Q -k‰G°8¿ZÛ8±¸º65;¯Ðª©YmìjVƒ°°'8;3¿È¾`+´²Ÿ:sîôYÂVÏÃ0A>Ip ÒV×®H“Ámuçî­;BÉž¢$¨(Ù_=‡¸Ôë—Ú†àkq©ìx•4OðåóçØDlõøɳG¼'(æ Þ¹wãö]ne¿zmóò®·:{~ƒë­6Po¥XÙgÀÊ>J¨ž¾Îž¾8d“:Ãì˜ÌBÚ*ˆz+Ž­H(Gƒ>5=A³û1;ï Ê«¾žÞÞ¾Áþá~³¹ƪ 'W˜¡"Ï ª J^aÎJ®NLc@ Ʋ³f¶Il%Aò±÷ãÁ^#ØÙ£ñˆ1( Š´–½—°•S(ٶ’ E­Z°R1{‡Ý¬ÝXÅV ·‚ˆ£è :Ýhe÷<>( z4O0*YÙÜÀ­ô‚:’z=’ÙEDÓY“@M -r¥Ä™Rd®Jñ`·ñ¨íd®å E’éVr4+!…åK°¸+-Ä')‹„ò•Ûu“‡¾cRa*…»z½d‹‰|xMTUµkç ÆIR,©‡W²pÚ?«Ò(Œý¯X°‚)®I´¸kùUWHjªÅC|Âà ÍA'è:z>v‘¶zIØêÅËW(WOœÈÕÛO^¿¡­…W"sű®žK=ÁÇÐäØ -õV7HoVöë›—¡'xöÂæés¼'¸º~biõøüòÊìÂ;mD+ûäÐ(ê­ÀÊÞWôVÁû‚ò«ŸüìgÿïßüÙÚ¬@ЊÅ.Ý>5ŽEEB—ÈbñÜêÜíN•_µÛíìÀd¶””•C+77#;ëHzzNAafNÎC‡ÒöíûHé¦ÁPÂ4Œ`¥Â:|øÀ‘#<‚•••-Âœ‚‚œBá—_\ZXZVTV^\F,P¸—Wa‹";@–üWD®ÐånA,M‹êÍÕu˜¿â ‹"XVSc£‰#¬VKK[c[{s‡­…†‘» Eî^á¯Å†f0D¬æºKµÑXVUU\V†-ÂÂ\Àq…%`Áª¨ª¬ª¥V=E°p¡¥¡©‘m³Åb¶4˜êÍF“©Öh@~Å#Xì²Z "l°665·¶vt°¿‚ÓíeçAaD¬þ¡á‘±ññÉ鉙Y8ëYÔD°–_Ñ^^=¾²º®ð«Õ'–Wק1‚5%°±¬ ÈbÍLÏ·ZÛ8±~êô‰ÓgO=úÜ…3çxÚêüæÖŭ˨d'luã -¹­n¶ºqûÎí»”¶zpÿÁ£û?|Di+ÀVÏÐÇ®ÅV0Cðejl%Ç®>Ñ«7/ØF;ZÙµz+ì *z«[wî^Wz‚W®q½Õ9è nœ:³¶~ryí8»¿s ËìŽ#¶š`¿^v¦‰ ¥ÞXWwØùC_ÜVn&èáVv‚WPD=;{Zyý„­Âp±Ÿ'‹w£½·«Äì=h¸ê"½•¸Ÿ[èÙ'fƨ085+ÒVx=ıÈÄ®Ô'GÆAli«þáÞ>R²cÚª«—ý š$Õ¼?ñúC0IšLô80mÏúØÄ£Àm%a«¦Övµ-ˆ=AH[ÁY<®8¶¢y‚øž<–†%A_ÐEØÊV²L²ÊIKW ír+/;m\G#±@„0…¢¤¬Ô¥PZ% ))yQ«@Dý¬–G%d«<2éÚ^–å oÇR‹¡eF¥0èÓ"¬D.I¡vO)ÅJ§)ô/g%^“&r`•ª`˜¨|W•YJÓP§ŠÉà ߉4åþ @RR+”‚_©Êwz@úB¾ò‡\¾ Ãåeÿà|^ˆ#Ò„Í–6[SKÛmí6öªíñØ‹6{Að‚]ìÙ>4Â^L.\Üúìó/¾F~õÙg_ܽ{l|r†÷ffægçÐܾ¸43œ -\Xó óx@ù+ \-Ρù½X/Ë}ayqi…]ž={ž½¸vã†þ.H_úÒ—¾ô¥/}éK_¿ÿkÏž=t°s×û;vîúÃ?ú£Œ¬,8ïFñÀ+Œ`‘γX¢BSÒøŠ°<(ÂrÙnz—Î[Z« †Üüü̬¬œ¼¼£ÁÊÊ-(<š‘¬4°`}” ,î{÷ƒ:vìð±ôc™‚_Áä¾"¹ ²âr_¡K²`¡Â½ÍW¼HB~)§°Ø%…¯ªÅDBÞTSXJ‹ÐZßبD°E«…[°PäB0¯ƒüöècWB«CD°êë+jjJÊË‹JJò`! ¬‚â"@Xåe•5Õ5Dh‘»µ©ÉÒ)¬zäWìzÈ_a…°ŠàU.BX&“©¡¡¡±±©• ÙíšVïÀ LeŸ˜œ˜3Õ JQ”–̯ B¸¶¾²¾ÎùÕƉµ“ì|G`«9ܳì›Ì/-³Ûlœ:½qêÌ©ÓJÚJ) r·*Ùo\U°Õ­Û7oßQJ‚÷<ºÿðÑÃGO?~¦¸­øAÂVH®dl¥Bª·I[‹­DæŠë­”žà#1OðÞÃGwEOðæm²²ß¸¤`«óNÁž je_f¿ºÉéÙQ´²cOp¨§·¿³§7óx˜º†[)n+§ÀVìVè­ÃöavÒª¤­"QÔ[uvǺz:»ûº{ú{ú[ SU°Õð8µühªà(ƨˆMqÕä ÏYMÈB¥(ÜGÆ'àrlrxL#808*|ìý]=°[Aí±;‰CIÇÊn+T²SIÜVB%¥­l[ñÀÙ®ÈÍÞJ†« -\9y ×éÆ×øE9p˜ ZÙCBÌñÃ>aÖtàNÖ£Øv)Ù¶¤°-rIa¸J==0¨-ú!XS‚ž€¨ -Š+ •Gq‰‰¬w ¬°¦løœµÝ „J`òg½aRyÿSæ*–À¬R°¬HB—Pa‰ŠÒ*&Äer%™µâ i+ŠØULktKZøø?o MV§6”ÅÍÿ¡⬘‚° óèc©@˜=˜í./{œ¼‚Ù€s›ZÚ›Ùn±4·4¶¶µ±g‚Ë  Ûíe/ ìõ¤o`½¤¬Ÿ8õæí§_ýÍ—_}ýùç_²—J¨ ÎÌÞ¥!X°Øåìü""DŠã— *¾—”¿â,La-.®(]ÂÛwï²7_|ñ…þvH_úÒ—¾ô¥/}éK_?–õ§ög;ßÿ§ï½÷ßÿöo¬Í­Â‚ôx—P–by¸ÔšP®s÷²÷ß·Û),èkì›ÓUo±–”—eåäääçgæä>v,'¿€<|8m/X°þaÏÇíÙókÌbíÁ!D°8pøð!´¸K,D˜STTüGAXÁ*©¬,«ª&„ŧ  s7ˆ -!×aÑðA1‚) -ÛëŠ%…¯^IüJDhmmoD ´!‚Åî)Šz”ýBÜ‚ÕÞÁ¾ -#XuhÁ*+*)É-,Ì),Ì'~UVZZQ^),Xf+”­ÍM ¢EXoi0Ã8ÂC½©Ö`¬®­Åð¹W#ø2™Íf«•µtt°ß¿ËëõÁ‚ïî¥ÖðØøØä4(ªæÀâ¾°¸²¸¤*°”½Bwð·Ÿ  -áêñ °`A‹pŽ Û -ÒVgÐÊØêì…‹ç.lß¼táÒ•‹—¯(n««rÚê`«Ûwï lõøÁ£Ç²’}Û´•B®$TõFƒ­$rEUA1RðùKÀV¸z -«‡¢'ȱÕÝ{7oß¹vãö•ë7.aOÝv_N;âôYvæ¸r|}q…°ÕâÔôÜÄÔ,x•‡ øðé{Єl·²{|Ôô*i+ -(ⱟbK0O0ôåy‚Üp^t4\¹+;«ÈG ŽŒMŒ äŠª‚ä­r…ª+Vì/ÚxE·ç>vÄVT$·ûouqfEÅw[EAÉNn+/ bÂ’ y§©$Ø"”ìš´U «v¸j‘ÄìJOÐÆG -z¸áŠ}ÂVìwèC·U@ \Q «óþDìŠ{«‚惘ŴT$¶­ô)Iƾz=Bˆ‰âUU"2§âŸRøU ¢¶ÕoJ¦¬møUg†µé¬pêtVB(KM^…ç j²X©„퉓¬÷ƒ@Vê(Sµ·%®dÖ$W;åZ¢Ü”>Œû%fµ}"ëÝMÃXR«3 ÆSJت+ ‰aʃðXõ"4yþ·Ú®`¶fkGck›µ©¥¡±ÙÂv\6·¶Ùì0Æ—ý3êñùÙ°§¯Ÿ].-¯¾|ù櫯¿~õÙ—Ïž½Xß8919óçI䙫ÙyDÉ+\¾šã"w_q‹û¢D±ðŸ€…¥öj¯¿ÿÑ—¾ô¥/}éK_úÒ×níرkÇÎ]ÿöÿ0'¯À«`+,³òlGˆü -+„xiwº‰_Ñ Â–öŽjƒ1'??+''7?ïHú1¨æçI VÚ¾}¿þøãÑ‚µSXìš=X!¤!D°ÒÓee¥gggääfåçS…0¯¸¸°,îEeåÊ ÂÒª*ªVJåAbYªÔ¦øÕ±³몌‰ƒy7ûP ,«ÉÚ¤±`Ââ¬6Á¢A„¢Bèõ¿j·;i!Z°ê+kÁ‚U\VÆEîEEÅ%0ˆ°¼ªŠ’Tuf UJþ -–Ål±˜ÌFS¡ÎXc4TÁ šÊj°jkkFŠ`5·QË…¬X¬«»-X#c#ã“Ó3€¡æ±B¸¤V—W«BšBˆð -7ôæØ•ë'OŸ<}ö䙳P<¯–/l]Þ¼¤¤­[q%{¶z%AÀVyIðé3[=—£V i+Á¬Þ$’«¤ÀÕ«70ŽðeROð‘è Þ§žà½ë·n]…ž `« ›—ΣÞJ`«¥°²³ßÒÔì‹(Ö©3çè=À§¿ùL#¤/}éK_úÒ—¾ô¥¯ßó•žžÎ.ÿü/þ|ÇÎ?}ï½ÿû¿þ×æ¶vNc…»„AEç.(E° …Åž°Û]4ˆÐIƒï;haYyVnNnA^fvö‘cÇr ³òò> µAˆ`íùûƒ<µoß^Š`:„ƒÓQäž÷¼¼ì|D˜ST”_³aay‰Üy«ª¦¬ºýWµdn'ŠUe¨“âX&ìšè ÆTϤ)„P$4PKTMÖFe!E°¬­¼EØfWZ„t>Ž"wœ–ns‚³—Ý ©­ÃÂ#XFö–”—””äB…° ¿ˆW+ª_ÕÖÉâ¬&ˆ`5ÈVÙl¬«35FcUm-!¬ªjèÖuæúk£µ¹¹¹­ýòÙ…ýÃQÅ‚5B¬ÉD8‡ç/À¯D…pæ_RøÕ:ﮟ<i+Ð[£´Õù ›ç7/]lueëʵKXÄžàÍk d¿…ØêîmR²?xˆ%ÁÇ?yÄ' -l AŠZ½~™¨d×D­’á•fª :RðÇVÏž?‚ÀÕÞ¼ÿ°ûÁÈʾuùêÅK—Ï]Ü<#YÙ—W×–V؉è­¦gÇ&'‡GdžGzõ ¶Šu¶"½ôÁ¾NÀŠ3+L$:Ý4OmÂVh¸ -FÙ×r1{”®:»ÐpÕÓdi¨¯WPr’+¥*(Ç®DøŠ] -«•‚­@52ž¶bß¼§wPeVµ -£’ýHì ‚ÞÊz+§ËGÒ1+J‚˜³’ÆB -™USK»ª·R«‚»0såTF -bUPÌëDråòÝ`e+bv¶ý‰+Ñ$¼ d®"±”é)™“:¤ÂœÐ6b+¥¨6µ0Š„á³ø“ó+yÚ ¿FÎbñ¨•µd;V0Á‚…_7 §_%°¬äQ‰É‰,oÂA8ÑßîÓ¯bï _ý.)¬¨Bã²öJžüˆªj,…&%L!”“ZþäÂ`jûvÂÔI--+Ó±”ïJ»åí1?6LÝþ0ä¯\ ogÏ f^µ[›[-MÍfK“ÙÚhn°²—ì {©‡Vk{û“½nÑîÞþ`(2<2vïþÃ/¾ü -øÕo>g¯Š—®\›€¶àìüÔì -Û¡98óX `nGBE8kŽ†.Qs‡¯d-.­,@‘®¿ríšþFH_úÒ—¾ô¥/}éK_?–õ«?ùv¹sçλvýëûo²ró¼Â‚%Æ• JjÀYÄBÉ…¯hÛq>¸Í “Èì.ws[{µÁ˜WX˜•›››Ÿ4==#;'§ àȱc{÷ïG;ß{ö -‘ûþý{ A„‡¥MÏ8š‘™ž™““•WSP”ST\PRJ¢2h–VU—Š -a¶yæJ ¬*¥HH -,l¢ó -»„ŠK´ù,B¸T[„"…ÕÒÐ ,äW¶V»ˆ`¾óˆsaÁÌôv‡«Åfojk¯·6D«¨´4¿³dE……%ÅÅX!,¯ª¬68²X¨<ØØÒlmj2£Ô½EXƺºZàW<E›ôY¦†KSSSKkœq VLD8 -ƒ§f¦fç©T¬•U¯ÖÙ¦ -áêq_­Ÿ8uòôÙÓgÏŸ=J‚·[m]¾º%ÒV[ݸuã(Ù!mØêÁ½4I0UIpl•µJÄVšª )øêõs™\q½ÕÂV¤·º=Á[—¯]ߺr•ôVg/lr+ûÆIv¯—Wç—¦çæ'§gÇ&¦†G'†Fú†ØYd¼«7ÚÙŽ!ä½UØë z4Vv2\yèC‡ õì>¿ÓVì\ԌȆ+!fGîzúû†až`¿’¹â+¤R㓲BNEØ -òW¼$HÌ -ÓV³‚o50‚™1, ö¢’½»/ïa?@4Ö†’ H[³ -°‡‹Ó…š=˜íà¶ÂÀ•=–ÐÇ®™$HäªI’\q1;®€YÙ cˆ=A2ãy8¶r‹‘‚„­@oÅ{‚>MOP“á!Ë:ñ‰\i²:š´UDÉk¥PZÉÀʧ•P_R@‘+7B*v![â&ŠE +Õ\\K9–cWJaPšN¨$²’fF¼¡m[êõÒÌAo8ÅhBgÑ5 UÁÄÎ`8Eñ0ÕÁ¢É’n&ÍT{‚šI‚q­óJá]Q¹9(¹ÜóW~MHOv¶«×ø£‰6­TÕEÞC”Dî²K Ð׊í üŠ=ÚmN7¥›Û,Ø474Ö7XëÍ–ú‹ÙÒh¶Xaµ´·³gÛb/=}¾@ˆ=y¯]¿ùÙg_|þÅ—Ÿ~ú{d²¨i$WÐœ]˜žƒ=;›W3sH´æ8Å -!gY‚_-ð!ˆÙ%{ÍÿGœExöüýí¾ô¥/}éK_úÒ—¾~ë/þâ/ÞÛ¹óg;vüå_ý5;oõb NÃÁí#ø•dÄB–ŸŠ„ÁÂ!Ì"taKÈÙád§ÀNöF½´¼"3;;'??'/÷hú±Ü¢̜ÜýíÝ¿ÿ#ìR‹ðã4.rß»ÿÀ¾÷:tàÈ‘#ÇЂ…ü -bþª”mP`•UP«´²²´ªª *„58…‹ÜEìJ‘·³¾"V¥°H„eB WD±ˆ_!Âj¬g§ÁjÆA„Mí-6¹·É"w‰Ü}4Ÿ‘ýÚŽ¦v[CS‹©ÁZS‡¬òòBÁ*¬Ò²ŠŠÊšêZ£øUXÜ››0…eµÀ B²`A‹Pq¹“ RXX!4šLf‹… -Ñ™ˆ`ÅâÝÝ=ýý|áD°T –È_‘ùŠÂWk'AÌ~öüÙ /ln]¼t…íÍË”¶z‡ÛJÁVO8¶zúü `+Ñä%Á×Éb«7ÛoeÂ`‚á -±Uâ<Áû±ŸáÎ}Ž­®ß¼Vö«×6/]½Õy&xúø‰Sìn.®¬±s7ö«˜œž+;é­†zúÀÊÞÕ‰ÆÙ¹$f“Po帼>·‡ú³^·£ð^ãöúqB_Їð - W‘(ûýG©'ïŽuõÆ»{»zú{zû{ÑÍÞ×?<†«Ñá1‘¹š›ä›®hO#³šR˜Õè8¯ Áá1 `RO°»•ì4I°³‡& ’ÛÊàJv#ˆã¨ÐSÒlvdVŽD«UK;5Ù¶4µ6i íÍØ(lë°+óm$fw·b+¶IÌî „Ü~`>\oŠ*+cRD"T’€]í j<~L¿púÞ†Yi)Ö[•€§ÂĬ8¹JhJ7S®OüA^yƒ²2K;¾0ÁâþŽ-ß,Õz‡K¦[šßŒ”ÔJb%(°R’®ÈJA˜Ö -$†¬âRÙ0Ю„p­ˆÓ£´%¡ªXr.K"WQMy0’œÝêL˜Àn#æƃ~ ׇc>¶ÙÚr²Ç¼‚¸¿jé€ðUc‹ÙÚdn°² êÌ uõ õ –zz­oik·±'‡=Cc]ŸŸ½D\¾rýí'Ÿ~öÙì’½ú±×Û©™¹©™ùin¾"‹;´g(p…ÌŠ“«¹EšNHðjnQÑa--,­ÎbR -k}ã½ xûöý½¾ô¥/}éK_úÒ—¾~Ï×ü«Å.w¾ÿ>Ûÿæßý»Œì8(;¨",Àñ®s½³HaqØrØ ¬ƒ‚XÍ­í5†º¼ÂÂÌìlvy,3=#;;·°èHX°ö¤¥}ô1XÜw§Â}N!LÛ/Z„‡ùôÙ ­ž*z«[wïݸ}÷ú­ÛJOðÂÖås6O½Õñ“+[MÏ/LÎÌŽONŽO ŽŒõ ÷ôslw ÎâåY`VUQÔ]h¸òxAoåñ}þP !7;; Cà*1;ö»ûºz¸áŠÜì#ƒC0Rp£SÃ#쇱«)Ô°sxÀ -‚XœYÒ—Œ ¢ÚíþÁaöm{û[õöuöت[(Ù£OðÅ«g[=ôäÙ#ÄV÷p½ÕMÄV짽ríè­¶@oÅîËI°²Ÿ^]?¹D=Á…¥©™¹ñ)°²r+û`WO_¬K½ç†}deç A 覆¬,f÷³Û`0ˆ=Áp0e¿k1OP³Cª»W® ÖØjWcãBrºuÊVñÑ"‚5‚ÌŠßRI[ “Øj¤·¨§oF"BI°³—ë­ mg?Š­ÂÀŽ|A˜$ˆn+®dw ’ÒVÐlQÓV"p¥Ä®DøŠÄì¶rtØ©/ z+‡‚­ÜìÕÀØ -WJÚ -ÁŽ/¤‚&MÈ*K•~I W)`ˆ/9S”TÁK†H²¢J¤­FÁ¿ÆV˜•øT8a%ô -%œ•ú?§eÿ•| d¤K­&£ª„–\! K½ÂPbÎJÉbùé½î‰,g…ßÕ=܆\i‘TTX X¤Ñ¿‹dTL’±Ge†)ô'vN¥Ì"Œ¥Ò£E%-|,¡l˜ÀÊ¤àŸ¬Ã’¤XD_C0|Ð㸼A§[ø¯ÚmÖ¦V³…½Œ[ëê-F{7êÌÁ2ãk}sk[{{aa/ìUÈárwv÷nn]yóæ“·Ÿü†½>þòúÛóø -FåAH^á,B¶)p5C, ê„ÜÜÀJ»—0”ýAjB—|eeuãÖ»ìmÀiat×—¾ô¥/}éK_úÒ—¾~o×Ï?ü]~ðá‡;víúÃÿóŽ¤gøC0^ ûƒj - ŠTH±8¼B—»“ä?=rc Ni!‚E¬ƒ1·  +'›,XéYY¹…EÇ22ö<˜¶oßî´´Ý4ˆPèÜIäÎ>{àð‘GMÏHÏÈÌÈÊÎÌÍÍÎ/ ‘{^1ˆ°ŠËÊJ*¸ÅÛ¯øüAQ!¤ã*M!4qN! ËT‹BD("X¿²ÖY¬ŠÈr‹;E°:¸T –kSnDXg«ÍÞØÖfnl2Ô›« †2ua!ÛùÅEE%Å¥åehÁª5šL8OEîÍ4ŽDî8ˆ°Îl6˜L†:cum ·¸×Ȫª­5!‚Õ`mlnim³ÙìNvþä†#Ñήβ`â Bvâ3·¸´¸ ðêø‰“'N¹‚y‚[W¯^½~ãúÍ[7‘Vݺ{ïö{·îÞ¿}ïþ{X|ôøácÉmÅö‹P|ñŠœT*¶Âöß›7Ÿ¤ÀVŸ$ò+[½ÑôŸI=AÒ[Ý—õV·@ouåú­+×HouæüÅ“gÎmœ<½¶z«…e(Ë°3¾ñ©™±‰)&8ا ôV=±Î®;egß!* ÉmE&v²º¹Ä<i«áÑq©p\ †¬Hl512 -WQI¾‚àæê…´ÕPwï@'b+vªëD±U´3‰CÑ|øØ1°`e¡Å=7/+"XȯJ UVÎ6 ,°`)üª¶¢º–ʃèÂ2*FwA®êx‹XJyPU`™i"!ò+‹àWÖ:Œ`a -K‰`Ù[mP!Ü6‚åpµ9àÁ[š[L°`UTW—VT «(·° ¯°  ¸¨¤¼¬¼²²ª¶†æ šê-dÁâ-ÂÆF³ÅÂNwaÕAËP ),йWU J ,XmívˆÑ±?X°ºzºûúû`áÄøð«ù¥åe„W'OŸ=sþÂùÍK—._½rýÆõ[·nݹ{‡|tÿ!íÇ)°•Úä A^õöÍ›·­úw -lõF)i+ÄV/[½xñäù UoõèñÝ€­n#¶º~óö•ë7/]¹¶yùÊùÍ­³çÉÊ~¬ìkë Ë«³€­&¦gÆ&§†FÇ[ ¶êìî…a‚ˆ­Ø­lE´ -¢VnÂ2.7ZÂV¶l„"¸Š`O®ºã]@“Ðp5 °Õpÿ ®EO$Wì’àÕ]q–5ŒØ -nƱÕ85û†[õ‚ïÜVq˜$Ø‹ AÀVAÞyi<û!Ñm€{áôØQ¢ÞalEÑ©VÑT˜UsK{csÛŠ›ÝV6ÄV¶mઃôVˆ­ì¸%»­ìbž _0Bz+oHˆÙÃÄ1¢2CPᕶ–ˆA¢¢5“ûDÉ#JyÞàv¢*ÂS!…>©ÛOi+é V"X‚t)ß$YçžÀ²"î@‚S+ì ¦Ja&M>¨N?Œj2WÁ¨lzO˜–˜lÄJPc)¿"Ÿ¾òjÑŸ F›ƒ©½î©×;îœUjCYQYr%s$™A©•CÉ”%±üš(—"RSfÒÂè,šˆ¹ÞEØ8h E;阃,|xûðaïñ‡]Þ {öuر?ØÒnmjm°4™ÌȯêÌc½¡®¾–Ùl±B}Ðî`¯*¡hÌåöÚŽ®žÞ3gÏ?}öÒ§Ï_>~òìòÕëìu›&ÂåZÜ…°}–6%¯øÂYšHHEÂÅ%áoçB˜Nˆ#ÐåÎö©ÓgõwAúÒ—¾ô¥/}éK_úúQ¬_â ŸðÁ{;wþÑO~ràÐ!ö^ùÀ+`ÑPBnÄb—J -Ë%æî9Ü4‹ÏšQ ÕÒÞQ[gÊ-(@ VAzfæ±ÌŒü¢¢£ÁÚ+"XX!Là -á^°`8°ïàÁ0‹ð»å±ÌLhfçdççç¿"„UƒË‹Ë‘_UV•W#ÂB—{e­±¢ÆX!#¬¢8Z°ª‘_U×Q - ´WJ£P _a—P`¹‹Z„-ÖÖvkk[s‡­™Ýc"EEXÜ‚,Ëær£ËÞØÖÎ#Xµ†òªªâ²2°`°ß VKJËË‘DÕ…ËÒØØÔÜ ƒ›1…eåƒ õ¦ÚººjàWµ˜Âª¢²/3([ØQ‡ÝÉN†üp8ïììéퟜž]XZ\Y]xuîì…‹/]a'G×nܺyûîÝ{î?|ôð1×°­û³çZl…VvP²ó´•¦Èì·Òqrà굦'z+vÆÆÎÚž`Oðáã§÷Qou÷þƒÛwïƒÞêæí«7HouåÂæe&xî‰ÓgÖ¹•}Uµ²OLŽö à >Ð[uGâAvL%AÔ¸avâì@%;¦­œ4M£donor…Ì -V#\üJ)ˆØÊAz+|l“˜W^Œ¨ùEOÈ®ü@i[ù7»@Ojª*¢%jøJZ"Ú¼V$•ÏŠPÅ«BsŠò“:}©Bê„]xà›®Tà•z«™+åûR¨±xÔ*Áë.w ‰xN®B(uD%™¼f(a‚5Kþ,'W’ Þ—*—%c+¯a%f±DFËÙ†M%_~‡öJ[!Œ¦¶`%è§ Jž/©|‡hTû(ŠkGF•–bbuQü$’z+šÔp” ]ÚÑ„HÒLˆ(†¡?Èöœ_¹¼ìùžDìéfmj­oh4™¡R*„¨À’ùÕ‘tDˆü*+7Ÿ}mNAQ´9¿*ÂA„%•UehÁ—{5Z°jk+¿ª4Ô±­4!y…"wjÖÔ™¸ ‹#Ô ,y¡°`µ`‹°½©ÝF-Âvn­ƒyËÇ>„)êv'Y°L `Áª©¡V~QQNaa^QaQ ˆÜË**ªkj ¦:vf͈`57µÂâ-B+E°@ä^k„A„ÕB„Å.y‹557·µ·CËÃþX8–½¦ŽOLͲ—•Õµ§Ïž=ñâÖåË×®_¿yûÖû÷¹â +h¾ÄI¯(õü¥„­xIðí+YÆŽQ«·[½M…­Þ`©Pé rl¥í >z­젷º‡z+ÂV×®“Þ -z‚€­Î"¶:±¼v|~ief~ôV8L­ì4L°/ÖÕ†a‚ñ{$[!çqPÚŠÜVN~‰z+¶³ßš×iCzð¹ŠÄˆ\ñy‚`¸ÂÀU/®ú¸á -W#¼-È™•Ø#ÊñÈćZpö¡Q>Fg²ØžÞ oÝýñîþX°U4Ú‰ÅQÕ…n+Ýž€ •ìNÙç\’·0+ÚbŒ`›RTÈï *Ø -Åìm6»B®$låÙB¿Ë‡z+¸ò$f%»Ù5Œ"š Á–gÌÉ·O´ˆ‡´V« Ö µP³&Ž­R!zrùƒ.ª[­‚£œÈò`K¶]ñ›i[‡ÚüUØ“Àµ‚œkySÍ.T‹Ú‘…Jø*^q@’qVTÓ= jǦP(«Ý“³XÉ&±wûÛäõNx•˜¸Ó¢¤Ä˜S’¨_C´’]ÉV4A¥â)2`ÑXÒ—ÇRŽDLü"ÒC¢Ugñùƒáh€øUù•ÇOüª­ÃÑÔÒamD~Õ ð+SÁh¨3³k‹µ©­Ãæ „áˆËíµÙN—‹½˜ln]yüø)¸þ>¾}çþ…‹[“Ó³8‚pAÖ<,€Tˆ­`0ä¯0ˆµ°H¬9Œ`ÍÎ/PyÌW¯—V)… kg.­¬öê{'ðòå+ýí¾ô¥/}éK_úÒ—¾~Ÿ×‡¿ø»üÅ/~ñÞÎ?}ï½öì‰Ä»€_!¼–›#,baþ -»„0”ò*8ŽàŠ°àÌ× «¥­½¶Î”WP˜•““_\”‘•u$ýXnaÑÑÌÌ}‚È}ïÞÝÔ"B˜BxðàþC‡Ø>tôèácÇŽeffäädæäfææ‘+¿¤´¨óWb!¥°aÕ”×Ô€«¦¶RôÙ:‹(–QL!åAQ!ä-B¸„ƒDX ² Vk[c[E°a±ó}·Íéá,¯Ÿø•dÁjohl6˜!‚UVUU\ -¬ßÄt~l<72 -‘† þЂÜýˆRËU‹È´U”z‚H®âØÔ“Z2Åî=Aƒ÷³0OPôÇ[O±41ƒÿ¦¦ça¤ ¯ -.¡¡®f±08¿¸ôÐ#>öwÿ÷ù± tÒB…JSø±h(!¥°”q„¨°… Z„ìÜ7ìéhp4A«±ñlÕ¹S•gêM•çªŽâ Â'~âС'Ì -!ò«ãÇ¡ExêÔqDXÁª®>[¬êE°ÏŸ§¡:ˆ°µ³«w{O´»`!ð+éoÇ(Ü… ‹ 1p¥€,I±œ=ƒƒ&¿r[Z„Þ`øU(³£ÑP,ίýÅ1c+â:=žÞAggOo ·`9ÀHïh¬G VK[[kû|»Á‚58è”,äWn¹ õ;=ý<‚ÕÎûƒÝ݈°zû!‚åñù‡Ãa`ÙÑñÉ™ù¥•uÀWìRèú­Ûwž~ö¹^zùÕ×(yõÞ»ú˜ÈÕç_|þÅ—Ÿùë/¾ü5;Âù_~vZU -¯”ÀÕǤ·úÉ•Ú|ïýwL½|íõ—^yíÅ—¥Þê¹'ï> z«›O^¹vó•«»/±K«Íí½µÍÕBa {‚3s “3³ãS¦•=Ã.<¡ñš‰Ë4 +N6ÞC;„ÌUBƒ´S™4®²F–c«XÙ'`žàøôØ8‘«i W3sÓ³˜¹šY˜Åê…©HºŽ±+Ð^͈å¬fç—ÀjÅÇrlž-ã[AC0?Æ>®˜Š˜ƒ’`2Õìqœ$ÕPÉi«aŽ­">©dÝ@¶‡¼~¶MråWG -†ümV1‚«â(M!dûØÉ“ÇO&„uúܹÊêê³µµUõõ0¿ÏÑT¬óŽóhqok?ßÖÁVWWkGW[wOk'Z°º{ÛzzÚaµSˆV?¦°úÌ„x‹"Âì Ñ‚w!r÷¡ÈZ„žá/ñ‡Â0F°b UäŠÅÃfËß?4ÔÕßßÖÕÝÜÖæh>«±¡Îш"wˆ`utuB’j ß94är»]˜Â–ŽN·Dî}ƒ½=ÝÝìkA‘{'ÛdÁt¹Ø=ÁP,Á.pscS³ KìÚggÿÂ¥«7nݹûôsÏ¿Ù«·Þ~÷½÷^}òÙgD®¾øò×_þú7rÁAQ¬/kUТ·óß/Ñ[½…z«×^Çž ÀVÏ>ç©gn=y÷ú­'¯Ü¸yñ*XÙÙ'¼¹ z«ÕBqym}~iyfø`«‰Éü踑GÚ“l¥Q°•%j%7®t³ë)³'3I)=Aö$ˆ­Fò|žàÄèØ$ÌœØ - WsÈ ¦ç ú7¿ö*H^-Íá9Ô祉º„˜³ZœF±{ᶚ†’àØ$ŒD%{K‚äHgÑmeÞ -¿vmKn+lÒ$Av]ÌŠº[I„……AÂV”¶ -ú†\±gŠa‚l‡#øã -îz”¶i¸’Ø -ût‰´p[ 'Rª,µRæ):`ëeJ¥`u@æJ‰0•¤¤ØŽ"¡Š²oº%sçQ¯Ø‰ürîÍ2¡Vª4‹Å>®‰³Ô"!Y˜Q!•É¸’¥MøY04„ïýÀûà›¶N0Të„NK”$²ÄÂòÌ•åQÉ<(¯u/¨u ëÀÂ`9ò:°T¨ªë,`FKìèÞ¬ƒ^’;ÉO£ôgÒ¬Câ»0c&Œñ&ÈÊ!¶Ê«UGlŽBm0Çíì$“5rcv£‘O#ûö陸–‰‚ÿ*6Š°_R·' üíNöê 5o4_±÷b¨2Cs0‰†£Ñ|~tg÷§ž}æÙçŸ~æù;wŸ¹~ãözaüWëP¸ÃÌÁ·`ñ:!’«Mr¶ãDX"Ž]ÂÍ­‚hm¢ÔÝŒcQø -uîlïì]°ÃWö²—½ìe/{ÙË^öúXßüqvüÁ~ôàC?ö½ïýâoÿvt|*™ÉÒ&~¥É:aÚBA±Øů…q„ Ó‚‰Fãš?êîë¯w8ªjkë«kªO=SÛØx¦ªªâı#G>qäÈ/:täµ=z¤¢¢âøñŠ“`q?qæÌ©ÊJ¶¡EXC"÷ÆZ‡¦67ó -a[›Œ`µˆV[wõÛºz”„½‚bI4 -¥¿ÝL^‰.¡D"w¬RËüŠZ„a8"÷h,Ä­Aš´¸£+æ@kP`µ¶òA„Ð"~¬ÎŒQõ ‚Å}ÈéBr",¯×åõ  È½w` »¯—vtv¶u´³v`«opÐ…ü*gׯ¹Ñ‰©¹¥åõÍ=ÄWOÞ}úù_zùÕ×ßxûíwßÿàÃ>ùäS^ýú7ÿDûKÚ‚b•±¤ž]ö?&½ÕG¼'¨b«·Þy÷·Þ!½¦­ 'ø ê­îBOðîõ›O^½ØêÂ¥+Ûû7w÷ŠdeG½ÕìÂâÔÌ ½Õ|ž b«÷ÞÂy‚¯¾þæ+¯AàŠ}HÀVϽpWXٯݼuåÚÍ‹W®îíƒÞª¸½³¶±±²V\X^+û,XÙÇ&§òc¹‘±L.Ÿf¡ìGNO'4àQѸ©·Âž`ÄV1îf§ž û!Äy‚i³³ŸáL6Ÿá†«±|Äì[ñª ®f‰A!¼BC;Ä®° ˆœ -¢V³f1”V³BlEn+hN ¶Ÿ¢´•Îœ|ÛŽ[áAøB¨l a á¶"r%J‚h_÷JôVxÂŽÂÍŽþv<0,°UDÎ Q&Mê­`˜` -K‚XšDðJÙ{a+éc/·d+["öõ‚YÉÑ{iE!%øO¬ÄÄ®`(Ü)ÊMÉÌUŒß„JÒ­˜Èe•”ØE'%wHÇÔ¹#ԲĴRæ»Äçoe³Xß{e®°ŸhN6,g•À” Zù@FõKÂÍÚ¼W¯ð+×½¦–¿©¸°,¸éÞ­{Ýr¯ÍÒEÍ—-I¨²Rc•—²zK+#òctKFð+DX)CR,ÑTüWÐÌqD°2y¶¡Bˆù+˜­0a¿•¿rzú]lºÜnö+‰F:`ê8Ûáå+‹Fãi#»´¼¶»wáÒåkW®Þ¼ríÆÅKWW× -kt^6‰_AÈjƒZ„[dÁÂòàÑ*šB¸¾±Iƒ‹lolmnr`…v¬m>¸Eá«­])ÅÚÜÙÙÚÙÛÆ}çÎSÿú¯ÿÊþxòîSö_Dö²—½ìe/{ÙË^öú:Ã+v|øÑG|øáŸýÑùL~4‰",La Š%#Xi™ÂJ#¼J±«ã‰°`_"Ò8B—ÇÓÒÑq®ººº®®¡É¬ÚÚꆆã§O=vìpÅÑ_>üËCÂ:tøð¡£Ð"<\QQqâÛì>'¡Exö´%‚ÕP‡ü -,î`ÁÂ!¬ŽŽÖNàW¤À‚"aOaµó"¡btG~ÕÙÛß ðª¿³¯O*Üe—màWˆ°ä B§fº|Ô" V Â[„àJ„…Y P4>Žú‚Áêrc«ë|{»ãüù:‡£^lGsskG[;Z°ú\Nò_¹}¯ÏÇö×ãt±Ûûƒ½”Âêì„ÅvWOOO_ß ‹}RÃì?edÇ&§€_mm_`EOÞÁƒ¯¾öæÛï¼÷þ‡¾á«ßXàð+™¿Rà{ÀGl‹y‚ÜÊ.{‚ˆ­ 'øõ_Ážà O=ûÜ“O=Í>úõ›·/³ë²+W÷.^ÞÞÛg—Kk0¾È­ìó‹S3sã“3`e…¨RÚl¥§0m• * \Eã¢'˜ˆ@I­ì1-×xÚ*™ÃU:›ÊäÈpEäŠæ "¹šƒ©‚Rr…™+N®HuÅ™¯ .R=±ÕmœBÈÝVãS³¦ÄV9Ïȳ.<]0I}zàc‡†#|!¡pT–ýÐõ ’’Ýë—n+?uùbWÔ¶’’+/’+³cOWѸ³al#Fâ¸â=Á–ò(íÃGÚa[Ð,ýf=ðÞ#áÔÁmŠ=I$Ĭ4«ÕJ€ÑÔ³¤´é°ÒShåJÉ­²¬¨Â©èΠŋ¥¢*^-œÊš×R5ïf4 nd`•¶-Åñ®2«˜0bÁ—–TÓV2…%…i÷ KÁVx®©ÍÁtÎÂÁÄ·¬´ZÈÿÁJa¥ÿP¬ß’ÎRqVùÉ2ý{9áü -øiUW™ï- €å0nYÊŒùÒ¼œd“fç1_òT‚h¡=ÃÎy Š„’+c„àÏ_a‘ø»"™k™Xæ†Â±a¯À~[œîA—ÇÉ^¸Ùïv(¼:7“W@àcñ¸Î^ŽÖÖ7v÷.î_¼|áÒvÜÜÞ%óÕ -„¯ŠRxµVØ@xµ%RX@´È‚µÎEX˜¿Ú$¢µMc -7d: ÍW¤p'®…ƒw·wöháÖÎ. #¼|ÕþsÈ^ö²—½ìe/{ÙË^_ÿõãŸþô?úÑw|ð{?þþâ#ã“”¿;f±tÑ(”C ᪜ÝM;ЛŒ`iP¸§¿¿Áá8{î\½Ãq®ºúT噚ÆÆÊ*1ˆðС_:ô+Ì_=qøÐ!´`9vŒ‹°NŸ>qZ„g«0‚U_Ï[çhªmjnh>O,Gk+·`µC°¥Eî]aQþŠÃ+àWýœ\õ‘˽‡BòªóWØ.ìïwŒ` —;E°€_k8è †üá0Ÿé†-Ba),Ïð°Óãëtuöö¶vt6µ´6‚«‘,X MM-mmm]]½ýýÎAç‹ÂW¿Ïã‡Y„èu„"á Ž#„…«ƒ[}ìþ@(Ê®Œ±Éé…¥ÕâööEàWwŸ}þ…—_}ý­·ßyïɯ~ýçW*Â’ðê7Ôü3Wø§þçìÂÙ€V6IüÊ., Wæ,B-•f"XäÂÒxu.‡¿ÏÙ_éѸær{Û»ºªjkAäÞÔxúl噪ªš††“gÎ=~ìðÑ#O ¿zâðáÃ"ƒ©Eˆ"÷“•gÏœ«ª„VmU]}m££®©¹®Y "lkƒY„íaÁ,ÂÎ.°`A‹°›"Xíݽ\‡"¬þŽÞ^P`ñɃÔ¢¥ä¯(‚Åî†,3‚EƒE zƒ¹ÂRj(rÇV$ê …Ñ‚åîìè:Gc=ÛMr!ÌZG –Óåv{|>¶±B ŽË,kÀéììéëƒ,VOOw__¿ÓéñûCvEž˜œ[Z.nï\¼rõ–àWo"¿úH䯈_ýú7ù»‡þú³Ï¿üä³Ï¡-H«÷©'øžÀVo©z«gŸñéçž¿ûô3·ï…YÅøHA$Wˆ³´¨)¨§2zÒÀÀU6e ›=—'½U^ˆÙG'`öU'8¶šŸž™›æª+ô\¡ÃʬòœÕüÔ4b+h¶âäjtL¸­rcF.OŦ­4dV€­´`+¨ÓÆa’`8‚ÃÃþ 6þü¢'ÈÅV~7V!ëÙ=·è rÃÕ0t Õž é­ på«ÇViQv¢‰š®Pˆ’ÌUùxÁRUÑb+5d«SK1“\©á( ³Š$’D±JÞ4!•–ŠZÚ…©˜ž*÷bÉQµ%K«Žw‘K[K…FùXC ß”ð˜Èe%KÜYU–+3eI`EøË*È2(gG(ð#Y¥Õv¡Qµ,xJ e¥K#X\}Vž¿J—Î%,oª7ªý>™Î*H •J¤Éúj¥¼™W+«òx »^Î#Ha[v:i+ƒ×ålAz~l‚ÞŠÈ;ðk>–1F :–¥ùƒØÔ’00Ê~V£œ_A 8f¿ãþ@8å¨ -§ Æä\ è>ÇìEcvnq½°±¹Cw÷.®olBì -˜Uqµ€üª°¡(°aAU¡Å®èò_6¶p4áVqsK…ÄÂRá6a+¾ÚÚÝÜüñ+¸qsâX;{›[;wî>ý{v…Ð^ö²—½ìe/{ÙË^_ûõgþçdÁzìûßÿÅßþ_#㔿JÑEnÆLaq©;×a¥qC -‹òW\¯O°‹kvÎ.´{úûëMgªÎ58Õµ5§*+kçjjŽ8q¤¢‚Fþ#¥°€bq„ÅùX°Àâ~¦ªêluMÖk뛚a‘ŽMáWØ"ìÂ"a‘«ÞöžØݽíJ…°³Ë¯x‹‹ÜU±ÌA„CýC\äîôR úBajOˆÅÃРÔÂa¿ -FcpÄBËéêêëkíìlnmmhjªu8jÀ‚ÕØÔDƒ»zº{úûÀ‚54äöx¼~?F°|ž€ß Îò¹ý>—Çãt¹úÙÙ?/¦¶œC^û×fߎ‘±‰¹…¥Â&ø¯nܾóÌó/¼ôÊko¼õÎ{ïKÿÕŸùk‰°,µÁ/¿üì³/ 3øñ§(¹rõÖ»ï½Øêµ7Þ|ùµ7^|åUöŒÏ¾€ÃŸA½ôo]¾zýÂå«».!¶ÚaY+ë…¥•µ¹Ååé¹…‰é¹±‰éÄV 37‚&SqÞ<Õ8§ÂrM° ®âK2ö9zÈb«qµ"b«<»†¥’ ûèÉ`+­l’ ¹­¡0¹­ð˜•[µZ!¶ry|´…ÞÊOzv³$Hi«`dXÒ {þh/u û˜ôP1˜ -™+MºÙÓæ5~’Ì—«{ô³8”°¢ ìQXŠÀ,r$Ÿ`>†ª¢ŠÊl•SáNšÙ*„oQ²”Ûuåhr-Ü’ +Y,W¾G”ñ…1³ˆïUúƒ–Ž¡(–Z°RfòJpBθæ}ØK¢a‘º ¨¥V•€–0k•¨±TH¥¢ªLNC-e•b)ßw•z•¦°Ò÷½§¿ª]X~R’ÈRoQI”D[%s tþ—0­,Ž%geòàAÑ/+ãÊb+OÜ ƒÂ|ÅYü¤‘_y’\’¿ÝÈfsãl³“´Aæ+·ë©\\ËÿU,Š¢ÎÀ2½j°=a¯i -Ŷ<O¦Œ±ñÉ…å•Õõbqs{{gckgyµ í« -bÁ›«a­7ÈsU V ¶ÑŽe",Þ,|s PÕ–9|uX¢þ Í(d{gÞ}Dîo½ýŽýG‘½ìe/{ÙË^ö²—½¾žëÇ?ù ;>úØc}ï{|÷»þ—ét{r£c)Ù*+Ez"ˆ`¸¡HH +.š_dÁ‚)„Ñ8;qy¼í]•ÕUÕuµõ §*+ÏÖÔÔòÖñCGÉ‚u@Öˆ`9ÆVœ8yì$D°ØCÎœ‘ûÙšÚªzDèhªoj®‡!ˆÜy…,X-m]Ý­]m]²BØ#úƒÄ¯ú;a.¡Ð^õa…P± 9{@ê°z(‚5„,¹ûÐâ,o,XÁñWB¤°0VÁr‹VD°ê¡Eè¨ÃY„ŽóM-í8ˆ°·§|ìChÁòxý> ƒáP ýÃÃ@Xn¶ÁˆÕßß?8ˆüÊ…âz’}ãfæÙµÌþÅË7nÝyêÙç_zå5 `À’óaÅÂäêÓ/¾üä³/>þ;ƒ~üÞû¾ýî{¸‚ž ieþîÓÏr½Õ­ÛW®ß¸péÚÞEè¿°‹ õ­•õââÊÚüâÊÌÜÂäÌìøäôÈø8XÙ³y* ²˜¸–„´UBNÄŸÜá(O[…áP'lE†+ÀVp확z«\n4' W£c€­Æ&ÅTAt³cŒ -Ž¦¤]Ȭ¦…††BÔjj†7'Ql5:1‚b«|~‚Âmˆ]>'3 -O$c˜¬SÚ* Á5l8€q)_ õ@­\^2+n¿8Ê©‚8RÐd›¬ì¾`8Á-´²³ dª©FÑp• 1» \¥IvZâ‹,õ¿dz*yô‹Åƒ]îc7”ZZ©¶•KÏN"Ɉ8§JF¬Ø*‚byÓve¹ƒz»å\ö -…#«¤HÑ,ü¸tž¶Ò­”üĬY,Êt¥+—ørò‘*Œi¥J¦f” -ˉu !ïÆÕ‡À–9+ƒ3+kžÍ2ÄÐx³” -S\•H•šÞKÚ…<>'Yij¥ïmÇ2~‹/Ë$QÖf!,³ñg”ÞÁBºŒÒ™‰ò§‘ߢ|þå™1jI½[FŒÔÌp—{:+ÌW¸u^!%jƒ£)#ŸÍQ “W£|þ`:—LÝNú¯è×?Ìy;ÈîbÅZ*™6Ø랦S&3Î^.Ø‹ÉìüÂÒÊÚêz±PÜÚÜÚY-—×0v…“W•ØÕš8aïe¯êkÅ *Ë* -»;b‰Y„èrç™+¡pßFŠµC8 µW{$ÂBŠ8kcsçêµ$rÿÿå_ì?ìe/{ÙË^ö²—½ìõµ]ÿùþŸÿázä‘G¾÷½¿ý»¿Ë§²9BX)êf9ÂjwÃta%StŒizTÌÃQ(M ‡£½ƒÎ†¦¦³ÕÕõŽÆªÚÚ“•gjêÎÕÔ;yòHEõŸ8rX"ä"÷ãÇ+Nœ8qêÔÉ3•gÎB fÖÕU×7Ô8õÍhÁjimjiƒA„ˆ°Z:ºZ::Û:‰_ _õqÀ«>Þ„ -á  ;±0åÁþAYf‘P­‚‹G°pa è …aa8:‰^ˆ'dþ*×C±x0 „#žá ËëcOÒÕ×ßÚÑÙÜÒâhn®krÔ46Ô56649 ‚ÕÑÑÙ -ÂDè ‚áP(G#`ÿFCá0»Å‰,¿Óí¯ûÀ@¿ÓéòxÁPTÓŒüÈÔÌìÊzawÿÒµ›·ï>ý,°Þ~÷=R`}üégŸ~öùgŸñÙbþ+»bw{ç½Þzç]"W/¾òêó/¾$ôVÏÜzò)ne¿| ­ì6¶÷[m,­®Ï-.ÏÌ-N‚•}¬ì#cdeOf 2™ÇÈmWÅV±°¬ -¢Ä ‹6D®ÐÍžÊàHAŽ­ °(²ëJ"W¢*H+¬ -Bì -ÆRæjŠ’W‚SMOcÔ -XhbŸƒœÕäÌÔa€ )ÙQl5Ò›ìÛø%À8L[K’XžýœcI0:Œ6uÐ[B^ÄVœ\•sV^Y¹¶’ƒÝìn~ê "¶æØ -z‚a>O°U8¦ƒ˜]KÒHÁ8*Ê)m…Õ3ó²ÝÒÉ2Šu†½”Y©4ª¦¬ Ê)!+5¿T¢¥²+ªò’`Ôô´[ï`Q¸[°•…\I~e‚,Õ‹…Ñ,-¥æ¯$×’ù+%Ž¥«dºÄ‹+›oLJÇÍ‚!õ%ÊÓ%"[Ò‘•¦,5vU¬Êϥ߅ƒìX©¬uR¡E–•P˜•™ËRAúæ½vÚ‚žJx—Û»×(Ã{·TxuAŠj[ ÝXiñÀ*mAñI¦ðM]¤­tñËc39R¸S.Kj¯¨HHB#;–6ÐånŒPøŠúƒ1-E+g¯ 0u‚àU4¦¥3¹Ä5Ùý¸¦Ó+^*m°—©9ÀW Q›[ë…ÍåÕõ•õâ -š¯Vש9X¤ž î†DÈÞäÃÉèn’«MN®@áŽ{cs›ØíMŽª¶i!½¹Å{ĵ¶wöÙË;û{àÚµ›öEö²—½ìe/{ÙË^öúz®ÿô§ìøø~øØ÷¾ÿíï|ç/ÿú¯û®!,lr–•Í¦PRËÐ3b(!waA …¦ñ±q±DTÓÙÅ{[gWUM D°Ž38R"Xį`:ÄùÕÓâ~ôرc'Ož8 ¬ÓÁ" VMCcMSs}Ss#ŠÜÙV#X­ŠKø¯Ú{zÙyG/€,aõñ„lwñÊÛy…p€ª…èrè„aŸËEüªßíqz½N¯_"ô¡Eƒ#± ,øò a…a cŒ"Xnÿð ÛC¬–vÁr8€_A«¹¥­µ½³³«·›"XnŸ7 "¼ŠÆâ±X"×´X"ÇØáÇïƒÑ„Nç Ëår£08Æ®w³ãSÓK«ë[»û—®^¿ýÔÓϽðÒ˯½þÆ[ï¼óÞûï}øчòÑÇŸ~üégŸ|öù'8aðãO>… ƒ@®>âäê­w^ÅÌÕs/¾Ä÷égoݹ{ýÖ“WoܼtåÚþ¥Ë;{7wv ›Û«… &¸ Ãgç؇Fl5jäG ^z+ÀVЄzªH,Lz+ØÂs7;b+dV4R±U -±U.$Gry^ÌcUpª‚Óãd¸ÂÌñˆž+άæ0ˆÅ4QÆ>R÷™1>FpŠ=g~Æfó£Y$Wô£ØJOƒ¤+‘„À”!kA%Aœ$A·U}Ã0p…V+/ïºÙÑí#låâµÁÇVª•=òSà -ç †ð_ K‚Z˜æ ªØ -Uä‰$L¼ågp¶`*cY%žvµÌU -LÍ»¬§‰ÁyÊ–ƒü,A& Eºš˜J¢ÉJ­ù«h9×Rýí–ÈVéÃé1ñá"J'‘ðTDçÕˆŠ¶´TyµP¡UfýÐjÄ’CJ™çdá¼Båö´"Â’á4C‰o±T†S,º%• %×âiºxR¼ie\ì{€,ÍJ´L©{JѼg8«„73*ÎRîŸþmó -ËŠ~Ò­äAÆ*UªVúð´WÓåÏœU+“â˜3mWFž `Î*O"¬$ª®tú;H±r8pVÚ@s;¦­€Ye1{iÐ-p#Ži~•Ð„ž_ÆþJj©0ŽÕسŒŒOàdUö2˜Ð“ðŠÁÞ¡§FÇ&ffç— <yªL\^-¬¼¢ðo®ÀyUù+ÊY™ýA/H{sÇr µ yàjw‚[¼?ˆRwaÁ-<|%Ú…ÊÚÞÝååWZ„oÛÙË^ö²—½ìe/{Ùëk»ŒQýûßü¡‡yè‘Gþï¿ÿû h@[Á1mP+KC Ɉ¥‹¹„€)¸È]™R `ELÓÑ‚5ÐØÔ\USƒ¬ÚÓg+kÏVWW?~¸¢â Y!„u;»¢¢âäÉã§OŸœEˆ¬þ~Yx>€ç@®:Ɉ…‹øŠÜa!F°|"‚5ì †ýa¹“È=¦… Á -F ‚åEJ"XM--uÁj¬m¨¯s4:š›Ï·¶¶wuu÷¿òúýÁp(i)öoœÉæsÙ\–íLÎH¦S±D<‰ø‡‡Ý^Jèr»½¾@(Óôl~tjfny­°½·åÚÛwŸ~æ¹a½ñæÛo½ ë÷>x÷ýðä}ð\½# -rõô37Ÿ¼{íú­‹W®í_¼¼µ»_ÜÚaP+k…ÅåÕ¹Å%Ð[MÏŽML±‹²ìÈX:Ç.ë@oÅcxq-*& rZÇ(O[ñQòÒã†+ ÈLºää*gdó”ƒb×€¹üèÈÈøèØ䮹šäjNð+n²¢óIq‡‰é* ‚ØjbjtÇVµÊ¤³ìÊÆꈭ`’`”ìš$\ -CÔ* û8¶öÂASÆ.}ìåbvP²#¹òúƒ¶i+ W ·Âa‚Éš¬d¤”h u¯wé©r÷»I½L ¼9—P½…‚[1“Vñчê-âh´¢ºÊ¯J(V0”à`JåÐrSŒX&°¢PV2+co’qYôïÜÏ+Š‰ÿš¤–4À› ËHÐCÙ¨•?3ªÞÚõ³Ž>Ô3ÖZ"šÙJÙ—riëR í¼Çja_¦øSÑœ>º‘àU–òW83—“[jêiV9Š]‰¡„¨dO“˜=›Ä W™‘¤àWpÌäRX¤»iPÔ3|¹c¯Zìegqymeµ0·°42:Á^Éï§'Óù±‰É™Ù¹öò¹NQ+è ®‘ª“«Uá¿¢½&(ÖzäíÄ*laÔ  aÅ* ªX6Ù-[&ËäŠî¦‹@–pamîìn uõú ö÷Àµv‹Ð^ö²—½ìe/{ÙË^_ëõÈc=üè£ßyðÁøÕ¯2¹|šm°R‚_ñÑ„B„ &A±¤ÈìÜ H×Ä4m8í¨otTVU±cm}ÝéÊJ´`Õ@ëèQˆ`Å:räî#˜Â:zü8E°Na‹=ülM͹ZaÁj:_ßÔŒwàWMmm2‚ÕÒAS©HH",ô_õ¹xÅN„«'ŠY„¾êæj,âW4ˆÐäW”ÂB  ,ί ‚…’m²¸‹"!D°"0ˆÐ  "Xým]ÍmmÁr4Ö66Ô9À‚å8ßÜÚÞÖÝÛëò³GDâz"IgGò#c£cccãc£ã£Ù|6m°m-‰ø~·×ãt¹<_`8e—°Ùщ©ù¥ev ³wáòÕ·ž$„õò+/½úÚ«¯¿ùúo½þæÛ´_{ã­W_ãåW_ñ¥Wž{ñ¥gž{þɧž¹ùä¨ -^½¾·Oó·ÉÊήͦfçÙU¨¢Æ j—½`+šA£”h…‚ÍW°a° ¸"ÉٓF2…böl. «<ˆÙs£ìk†©‚cbªà8VÑs5i…T”¼š!«Iô·³»Q=±Õ4=4ˆeó$¶âÓÄ’ìâWOcŽ"%«Ž¡(6yIPb+Y †]†¬h™ØÊïòøÝsõóZX\:j½?Ý!fAv)N«¬³#øä±’Z¢R3$M>[¦ä]1a‰üÝ(ÝYiÈ—ùÄ߬Œ‚³JÄï*Ë2¬xCQ¾÷Ó*ÅwN›DË22@Æ´Rjñ³)%â%¡“øQÄ$!ä œÅÊE8+%+ËH®dN,E±«,á²$=•Y)ÅâN·@©ì9MÜMKfµ¤¡ãH±ò©(j•É‚ó -›†ydbô¨<{H,žŒ²ÿÂééѱÉåÕuöRY(nÍ/,³—=™†ÜiŒ½4fØk÷ÔÌÜÜÂÒÒê:ï ®­¯¬ˆ_­prEÀŠÞ,ÂÀAEáŽon`ìj6ï¤ÚáF,<ª"wvÀYbò a+q²#ìXpT`í©ûÞöÞÞ+¯½Îþxᥗí?Šìe/{ÙË^ö²—½ìõ5\?øáÙñ'?ûÙ£0ˆð;ñWÕ7èÌŽ§s˜¿Êš"¬¹Ü³V—{ ‚ U*ÐÅٛ좾­£ë\mmummcSSe”«ëëaá±c‡ýå¡CÿpèéÜÙZ„įŽÆA„X!¬¬ÆV}CuCc­£©,X-ç[šZÛ›Eþê|{'ºÜ»Z$¿êB‘;",¹;{Yup–ÔaAæŠüí¯¸ÈÝDX.7!,Ñ"¤´ aq"s… !‚vÁèèéméèlji©orÔ:€_Á Âæ&àW}=Î!—8‰³ëÝd6Ÿ››œšœžžžaÿ3ÉÞÌåÙõT*–ˆÃAa ¹ ‚ Åô¤12:9;Ë®•6¶w/\¾zõ:˜ÜŸzöùgŸñù_~ñåW^|ùÕ—^y•°Ë”\ÁTAvŸ·Ÿ¼zý{Èî…‹›;{¸š_Z™_l59=26‘ÇZMN§Ü¸­4µ$A`"lÅ{‚q’\ÅÁß®ÇõdBOë)ƒv*%A#7’Íd‰\a­O¸Ù§qªàÌøÄ4z«xªŠ4V&°Ý@[M“ÕŠdì[¡’=?hm²[é¢$ˆ>vçBZŒ‹­Ba©d‡a‚`¬²0+§Û˶¬ -â%;ŠÙyOÐc®¸ÛŠTi!:#8O¢V4>/ÎþUy0/ÒE «O©N!ÝʲD‚EÉYYR7†€JH4eŸNeA&_úŠz` Å*çQ_Ù² -²ÊÙ@ò¤uF¡Õ‘%‰dy.«•1®´ ˜Éì–ˆ]¥U!¼ U™˜L^•¼Wx(²[fR‹Ú‚ª>K௃”ïI™Î2$­²Œ;Lè‡7J&H&Ò&ÀäÅŽ'’‡hé{Í@´à/LLš2Ü0QÒFTÝ™>4"2C5YñðUŠÇ´h{“ÓґÅÓVô(C7+„8dþ#•Ã¢ƆéfÅ7™¬a±;¤ a¥'sÈÕm¹Jñ¼ Ù‡‹kéHTc¯ìUeaqeskwoÿ{Íœ_Ze·°ºû_œý‡1Ç^»ÙëçÂò - \]+.­¬­¬—W×—WÖád­°^ÜBU´ª@åA~N¨j½HF¬­bq» "X¾¢“M¯ -À¬vaq<.¬]9”œí;¦¿}kgŸlïnoc—Z„{»û©EøÏÿüÏö_Gö²—½ìe/{ÙË^öúÚ®G¿÷½‡}ôþ8täh*›ÃôÓ2ÅEÐüÿÚ#·`ñ"aLÇ ’0Tµ`$Ú7èlln>WUÕÐ䨮«9UYYC¬'=Ê-î¾"—û¡ŠŠ£ˆ°Ðâ,@XUUçjê0‚ÕXãpÔQ‹,î­ŽÖ¶æVÞ"líèjAŸBØÝÓ-BAH¬~9Ž»Ü…ÈòW@±údq£;ò+nÁêw¿ò8½>§—"$‘»?ÌEîMÁ‹'(‚姖Ïßçru÷÷·wuoksœ?_ÛÔXÓÐPç VK[KWOÏ€ËéDã±T&•ÍONMÌÌÍÌ/Î-,-°ãÌìÌÄä»]KéáHÄ y܃.X°ü`$¢§3ùÑñ™ù…¥Õuv©²wñòåk7®ß|òÖ»wžzúî3Ï>õÌó¸ŸÃÕ§nܾsíæíKWArµ³w]ã°‹©åÕÍœ˜½U~2K- † ¦cp–Àz¯ -½U4ŽÃUé–KhñDRÓS -¥¡áŠ]Ù¡á*odQ̪1ÀVœ\AIPJ®ÐÐn¥UÓ³ãS"jE9«‰i2ºrfÅ>g‰á& 3–qŒ ¦­[a_OøØ#Aîc·ú؃(c‡öŸ$W°Ý^—Ç ËãU;ƒCž€Ç i+4\…Ù·Û'z‚”¶’óyà -9Y˜Po…P"­b+S(Dñ*Mm f„­Ý8H¬-Е6˜(C-¯EMä’’y¤¨Úã#ç`*\’³RéÔ‡uRéÄ®|”–<8»U"{/g¥JÎKpÖ=Y–ìVZ5k©÷WgªXç¯ø¹‰³"Ê{‰SE­–ˆcq½|L¤³,*-î„·XâEK2.U¨•15ïØ4”Ê}Åý.´Zm)àK=Æ]üÁÒxñãKe7šÕ©e¦¼Ì\‡±j ™›Œi*hUÞÔ¸™ÍàÎ7ú5I^I/}ŠW)L½ÂdVç+î]§N®´4ò+v’AŠÅnÏ%4õV˜È‚;IÁÄ`ôd šÅ©LŽ½¢*¸453?>9 z«üHšDg †"%;ÎŲ!ˆ+º…W¢'%ÕždO¦²©tÉU.›Á äŠÜì•Ÿ’+”VÁžšž‹„ºÇ\–¨ˆ­ÐÇž>F>vPâ°«]LË°Ù'…ª##–Jö0ýDCÐMV+êz¼2pÅŽüv2_¡áJÎD+{D) J+{Bö#Âm=A3…’.Ë\)æµøØÊ‚dØjJìG ágýÊ#RfžJaV¾©·€²Þ/aYå}Ã{q-+ÑR£_%i.U´UÊ2ccJÌî2jÉÒ°YY£P",•G ‡<æ¯dñ!•|ˆœQXÚ[q,dPd´¤ÞDXĬR–¥&¯,*-ԦŹM+£M®¼«„pÊ[”¸—è2y—¸] _•¦³ØUn7‰ü”âgÂ~bÙ3ÈÁ1=Љr\ò9Ór&¦¥Bƒ4Yð®$")á¤â -,êú³J¢k8•œ*®¥iÇÀ¯ØI4žŒá›ì<¡!È¢g#„žFÌ\±ßb=™a¯KëÅÍ —®^¹vó⥫ëÅ­ñ‰i-Éî¯{ìglbjv~iqiG BŒjym}ÕÊ8Û%¹Z+×DyPV¹‚6¹­"X¯69³‚ðÕA-ÈVmòùƒÜyµÉW¸B`ŹÞAAX\E·Ñ‚ÿÇãÚÅËWGÇ&Nž>mÿ]d/{ÙË^ö²—½ìe¯¯ùzø‘G~ôÑû¾õÍÃÇ’ÃŒ`ÉVÖÒ%d[3ùw¹C - .f5 -á„¢ñ>§³±ùüÙªêºÆ†êÚÚSgÎÔÔ7@ëرÇ°<ø毞8|ˆ#¬c'Ђuòä©ÊÊS•Ü‚UUW_Óè¨q8jMõMÍçÏÃ,ÂÖÖ&BX\äÞÒÑÙ†«µ‹úƒ²EØG³»PEÍAšEhµ`É)„²Bèb»ˆ"¤áø•g8ä …ÉâN³C1Ž°ÂqÓ‚åÅV¿k,XÁbŸ|]“£¶±¡ÁÑÔÜr¾½«³pÀðÇq#kLNMÌ/Ì-­,­àRf½¸¾º¶²´¼85=•ÍëI= {|Þ§³o` opÐåñúƒÁhŒ]¢yvM5;Õ•Bþÿ÷½í½ »û÷ö/íì_ÚÞƒÿŸ}sk—]±+¦…åÕùÅ•™¹…‰©™üx¢Œ\ÈÄê–#±–±6È{‚„­7»žf—{°` ;=¾žÁΞ>Š`Õ9µµŽFàW}ƒ¾€?¡%Œœ19=¹¸4¿¶¾RÜ(loonnÙeÍÊêÒÜüìøÄXÚH‡£Ä¯{úz»{{{û‡Üþ \l%3F6?:69==7?·¸Ä.©–ÖÖ—× ìú Â…ÅÕµù¥•¹…¥éÙù‰©™‘ñIÄV£i¨ä°‹¾O[Ñ$Áh4b F­"*¿"½»g,®³Ë®â4=EØŠlÿ™l>“ÍAÚ*?JmA¸BÉ•œ*(ÙÔ„ Xüdö˜Øä¶â3!mŸ³‘1r4,L`+œ$¢$È>ia‘ £¨¥­|þ×åv{ÊA¬<üH=A§)è)³cO0Lä -J‚¡ôF[‰´ÇV¢,FI9âÍt³êœ5‹óÊr‹éÚœ!ÈáU2kñ)™ÁÓ줘£f×-À„ÌP©xJB-A«â -³²Ð*õ©þk¶~°þ^ú÷’V‰(¾ÜÙuÐÔ¨–< ²eugE­-ñfÚR04ëŠêíü]’FĹâÆO©ª|ÓRê‡ôíã'‚’eDš.³x·ˆYeÄÜC@^ jÉ 1ÇP , bŽYî–2äÏ ÄÒY•¤™}F…YÅÈߥþp"zJàPEšœ(šŒ†¼EãŒîiˆò ƒ9¿JfòH« 18Xœ‘;ÅAebZ&šHs6¥ª(ÛD®b ž‹á›…wAþ -‹„qöÍ‚rq"‰²W¶üèäÊjñÂÅ+×oܾqóÉËWnllîNNϱÿÞ±W•XBc/¶Ós Ë«Ë«ëëÅM -;­ ¹Z^- ðjmÌíEÔ^WÄ^/l²ãQ,jb‹P , YAþjƒ§°6!…U$„….,(nñj¡˜<ÈÓV›hÁR§Âí[8ˆóW[»нxyÀéú_ÿæûƒ?øƒo~ëþû¿ým¶Ie/{ÙË^ö²—½ìe/{}m×þøÇìø"¼ï›ß¬8~2™†2«<†[räÅâù+#+uîºE„•¢±t2Ã.Ø_ÈÍÍg««5 õ§Ïž­®¯?‡¬#‡Žù‡C‡0… -¬ÃG‚ëر -´`?}údeå´`A«¶,XŽÚ&¨R [„í°Û;šqa[WO«˜BH›ƒ$‚Y„4|æÊ4_õ›þ«~žÂê~Õçês¹ûP„åôR+PbÁ‚ ,G°bò«Øp8ê †Øýû‡ÜÝ}ýíÝÝçÛÚ Bèh¨ç -¬Ö¾>Ÿß‹Ç²ÙìäôÄâò»¦ÙÜ‚zÇλîØX/¬±'¦&²9#žˆù‡NgogOOgw7¦°<^ ‹ÇõTÚÈ#£#ãã“Ó“Ó3“³s°g`OLÏŒNÂ0AvåU;øf€:&¤Ì<Âvˆ+­ $‚7ÙŠÙ;Èp•€\¦­’ W`¸Je 'Èž–ª‚¤¢¢ª ©gWàg¤ðJŽ4™Ì=œB±TÉÇnäFà3ÏæQ°,ÜVìªc‹ÄCÀ”"ì ƒØÊǾMþa, Ë1‚¬Jö!%p%ÈÛnì ¢ÞjØú†Ã · -F4¦Cwa‚I½U’æ FµTçÊ v~InNé†u¶`ÚäW–"¡\[§Å -VpKÍMâg­tn`“T&ž2#UjÚJS™Þ_+ËSéb„AÉóÈh–ÎSU÷Ê_ÅõfÞK½e~Eª/+Y -èeB­ÒóÒv!=Jõh©‰5¥˜RYDÆdIàyi”\ýéò\T†²ˆSöT -‰ -‡¤ÈVòQj¾Ë,$ê8Öoa?-" –)!œüM]}—@Røã”8(ÓEï…<ö{G÷b–¥&`œ€’(ÙI”•UeŽ€I«èQ²Û@¸ɬ°<ˆi«W¯įا×1j!«tPUÚL[ÅSpŒ%‰\…£GX0 ÞI ^†_Õ ®¢‰`^®£q½Ô,.¯í_ruóÖ+WolmïÏÍ-¦2Yš[‘6òS3s‹+««kEz¥ÞÜÞ]/n.­¬."Î~µ².WÂU¤hÀ«ÂÆjqƒ‚X«ìå¢V\Þ¾fZÜ‘e×Ýjƒ;¯66gQÈ -Ø!¬±Ø'#¥X´qò \;{FFÇùË'î¿ÿÿðíøößaÇoÝÿío~ë[öŸCö²—½ìe/{ÙË^öúX?ÿùÏzä‘~øúÏo䱓•ƒ9qįҀ°ÄPBSêžã+mà,¤°`Áå|LKzü¶Nˆ`ÕÖ×5679{ölu5 "¬¬<\QÁö?>ñįþåaίóA„Á:~ú4GXç`|áÙšZöÀZ¨:êaµœ‡ -!D°:šÛÍ!ä¯aQþ -]î=”¼’),$WÒå>ÐÉ¥XƒÍê“ãI„5Ø3H,÷ÀgÐíuùT VÈÇ"͈Qñø0´£ìž.¯¯wÐÙÙÓÓÒÞÁ>yöU€«±¡¥­µ§¯×ë÷Eb#›™šž\ZY*×wv·v÷vv÷¶···66ØÕÐâÌìT.Ÿ‹kqÿ°À9ÐÙÝÕÞÑÑÚÞÞÞÕÝÓ×?àt y}P8„á7-¡_rJUBì“Ê:T>ù·)D£ñÀf;ˆb¨ îP$¢x®Ðp…òsA®ÒìûNØ*(OSs¹Ñ,¶%¶’ä -7f«&Íä -5ìÀ¬Ì1‚yì ¢,KŒDÄÿÒ9”Û¤ãìÚ“]Æ5j2â$AˆZ \ùPÉnb+/¹­¼jOppÈcv1mEVv¡·Â´U è †IÌ®®b¼'(Js&y`Ÿüã˜íz{ˆD•¦ªT~…Óõ²z –‘: C´´28FÐÌÉX=K[’ -ÒaG+Jâã2y\*,ÔUH¥žÂy ²t“lJSlWºšÚŠÄ“V-‘­¸šÝ:H·u@”K?øjÔ*n}S»—:Þ:Qò«DR¤³”€–h†—wŽ)­C®ÒÂJU™UD5Ù¥¤ã$õR9¤¼›:‘÷EÚ -¡“4n™…D sÅ›H«T2–R‡'F‘Jqè”L›ŒÔDsi‘Ô2{‘ì“Lˆ¦¡ø¬2‚ÜbsP7§(ŠP ÌQ ƒU9¥˜ƒ •–Á4X7ðÄ@èdPÎ -Q˜¬¢D¥â©UE´pTcG8êh²‚ ±+ì‚+w†c0p! m@öʳ¼ZÜÛ¿tõÚ­›7Ÿ¼ríæöî…¹…å´‘g//ÑX"ÉMÎÌ..¯®aàj{wŸíâÖöÒòÚÂâÊÒÊú¶‰_-­¬-c…PD°°<çv¾Z(®7ÖÖ‹ë[6U OqÕ¬"ΤF!ÇV[dqÇð•8n€ã}»HÂ+G¸½ƒ7n-.­6oùã?þ“÷ßý»ÿpß}÷ûeûï|÷GÿOÖgŸ}fÿ9d/{ÙË^ö²—½ìe¯¯ó¢á÷ü‘Ç»ï›ßüÕá#dÁ¢-]Xå",:"¼Ê`þŠ]¹C‹4æÁŠ%ú®Æ¦¦ªšGssm}Ý©Ógja᱓'¡ExäÈ?<ñY°~uøð!a‡á©S'Ïœ9}öleÕ9Áªk¨q€«+„Ò‚E-B¡À‚äUW7Ûˆ°Ìa'Ï_õq‘;_ °s2º«-Be!ˆ°0…"w§×çòÔA„¾P$ Ò…?±B±8»e8ñ…ÂÁr¹»úúÙgSjêëê ç[[:{º\î¡P$d䌩™©¥åÅâFaww{ÿÂîÞþÎÎÞöÆVqumyfv*?’Kh ÿ°¿p ³««µ½ý|k+ ¬ÎÎΞžÞèº}~ÿp†ë…£‘X\˜Õ5LX±Ï'Ä0Õp0„•º o8è}þa_ €ávv‡P8Ø - W‰HW0LPOkÉŒž2HƒÆ.ë Wy¸¢Ì•˜*¨èÙ'§ÇÆ!aEÉ+ÁÀJ`+YÌf»e€¹åR@F%Çd<‘”i«0)ÙÁm…i+[ù‰YAûÏM‰S !³"l5d’+´²ûEà*èõ#¶ÁhBÅÍRW‚¨ÀðMÔÅ’f¼D±²£ÉGUW¥³Ø3æíRê^2ëM ›3ÝG2gU’²ÔëL²DЉülš©d¶+¯”/Í| A­˜f",3pE!.s°áÕΫ’Ûõƒ(–~@¯°”z%®Jü–¼‡^SV‰}É CqcTMy%’",UEß—˜E¢ey—:ôP9¦K)–F>yéÈRfGj<åeMv™íQE±•–vz³œhšê¹’(Œ½xšKÔ3šQ®Œ1C…¿š‡ˆÀ*C’+zþ¸`Vq -†aèK“‚wž°…©*0º‹„…¬@fÅތƓñ¤ ¯"œY%£QmŠZ[ÆsA®ð!^ ÿ1ÙCØoñp( -ä*Ä~ƒ3“3«ëû®\»~ûúÛ—¯ÜØÞÞŸ_\ÉdG tK¤ÜÔÌüòZ¡°±µ¹½»³wŒ‚K«kó‹Ë‹Ë«Ð×^Y[^]_b{y•¯¬¤ÂòW¯V…¹}½@ª+îr_/Ê.áÆ_™»€Ú+\›EaaÈ -cWÅMöùˆÂ w¹“ój­PdŸÛÇû¿ÿ—ÿrß}ßø·ÿö¿eÿ}ÿÖýÐüéœíï>øÐÿðóŸÛ ÙË^ö²—½ìe/{Ùëweut´=üÈ£=òÈ÷ðƒáP˜´Ø† X˜ÅÊK/–éÂBŽ¡gØeoÆØå6•Ç»ŒÂ1'‚ùÑŒ‘Ç#ûé­/ ²OÚy1´ÊG8IÇÆ[É/m؃i+—P²»LTåá'C°±$è'½®z[‚Þ -„`ð#ÍÉ•f®âfÔÄÀ–Ÿ2U"UÖ¨?7±UŽgT¤áJ™$(Ó/»2‹iÒmUB®Jy„Rul¶jfõÏÌYql%”&ãRḬRZa3uf¶â`ˆH±˜V¦É*—n)G Ë*ƒ]q½ÌÖUÞ=L–@,ÿ7)ÂG„W%~øƒfàÓ’%ƨE´•´b«´õ©R&’¡&ëlÄ”j˜çs%ÅÔÆ3“]pÔ©xhNWähK}Bs"§[4f‘ËçEÑDaº™ï"fEL¤°`G5d\\%:ƒìF]ÜUDƒwqn 'WºÅ`VIf•‰ÅS¨±âõ@5[…Ø*Aü -ŽÀ™uúEr•bÿ=ÂÿC!À8%»=“ÍOÍÌ6¶/\ºzõÚ­+×n]¸xe­°15=—LáX<‡ÉÓ³ k¸ÚÙ»ˆ™«…åUv·¹Åå…¥V«kË+kËËkT\þv* ¢¹†¢°œ„4…Ø””·¯o¿*1ˆUàäŠ#,ØÜâ^Ø)eÑBˆ`mm¢¤ÝgjfŽ½`ž8yúñü€ýÇý߃äê[´¿Ïïÿæý÷ëþûÉõgögö_Aö²—½ìe/{ÙË^öúXùWÅŽ?øÑ~ôÑo|ó[O9JÀŠªgžÅ¢ c¨ÃÂ! a‰VÙ%À€kÈqþü¹šjGSSM}ýÉÓ§«*«ª*N?|ìØ¡#G~)Dîdq?RQA¬c'Ož8}æ$"<[]]Y]]U[,œEØÐ|¾áüùƲ`¼jnï8ßÑ),äWmÝÀ¯ÐåüªóWbwâf'ȯúÌðõû¤ËÝ ýAœEØ?äF‘»WŠÜ%¿b-î¼E&PBC~cïò…B.¯wp}ç[ÛØ?Ecû×hhr´¶·öôû>-©OŒ-,έÖ¶¶7wÁ³»Küjumevnfd$×âìžýƒ]Í--ìáõìŸÂáp47#Åjkëìììîéîëëíìpö:œÎAçР‹¶ÛérÐ $‘€t y|nÏÞùU0G¢ÑX"žHRæ -\ýél:›ÃNbžz‚¹‘QI®ò -¹’©*i»‚dVt^„¨ÕE¶²yJ[³JÃGl… ApÔÄÁ*G:øØAo…+t[=~ô±ûndVNkCÐIi+gV¦äÊësCà -2WL[y!œ'ö›i«8Ì„«à„„*²'˜¾ë„"f7ÉÁ¨ 7\™Î+ëIBÖS¸2rT\J©h‰ö–ìŽYAŠ2³ÏLFI0¥SÚ*,ÃW""Hº*âQf¶Ê‚­Èg%ÅC\š¥`(òZa~·Òv¡‰ÈxQ1YšÈ² 2³’–G™ìŠ'KµZê3Ñ*]é¦Lãž«¯\ü½ê`DHÜ)ê­ƒ|\ ë0Dý£åøQ³8µ¤p^ÕÅ+JyΗ"ê{¹}F1'ÑÔÑ'#Êó˜)>j;ÊI‹Ö£ÒL˦¤dY”ÈR•’r-`S¨™âÖw=h Ë€T¹EÌ¥ãÐ@<Â/~"Az«U!°"’ ¿˜‘D8Œ;‚Ì*B¯ñH«‚0ÊAƒ‡àw0E8aÔSÆøÄôòja{÷Â¥+×/_¹qñÒµ­íýÅå5ö:–Ð’ì¥&®%ó£ãó‹Ëë[Û»û{.³ÍNØ›3s #c“Ó³s‹Ë‹Kà¼ZX^Y\^ç® ?¸F=A¤XXÄQƒ«8pµW\x%RX…âÖšDX‹; ¬âÆ6DG–P¸aø l¬nîìnï챯ejz.¡'Ï·´ýüüÏ¿ÿû¿ÿoþÍóßÿ‡ÿxß7¾yß7¾ñï»ö}÷}ƒÞÄã7Øî¿ù-hþµ¿²—½ìe/{ÙË^ö²×ïÔú_þæozøáÿ½7Žäºî|-É"{§I6Ù »¹‹EJ²ìñØ’,G–µŒm=Z<3f“ltc_kP€Â¾j¯ÊÊZQ…¥ÑØ»±w7IÉ¿¾ˆ÷þ‘ñâEøÝsν7o@½Ž™yãqž¸‘‘••™••Êªüô÷û=×_¹qãµWÙý;ÏM)XįJŹg0Ë=•ÍK„EüJKgôL6‰úúú(ËÝæ©k¨o°ÙÍ͵õõw‘_A„;¦¸ƒ‘ð.ò«J r¯©©¬©­®¯¯! –ÝÞäp@#ÂrǬöLq÷pýU7ð+ŸÙHˆƒaáTF`¶â+.ÄÂéPïà0=J#BtŽ‘k$ „¤‹R°ÐBá.ÂTBA$Á a0402ÖÝ?àíòµ¶µÙ[ší.§«¥ÅÛéíè †‚©´>=3µ´²¸±µÎîKöð¾ä€ÝËl³Û£{‹ ”ߺº»Ümm®–fG³ËÙÒâjmeƒ-ióz½]]>Ÿ¯»·»§·»·¯§¯¿w` o`°!6††‡m ŽŒr„5…"±šš†ÁL.‹d’Z -È'8= ðjRÀ«i#çjÊue n DÆ%zÎQwÂâå±Of'&³ùb&‡m3¼@ÙØÉ!ˆCáe[‘ÔŠû!½J2«ÀÈèø0cã„­Øü×bA¼XE¼Uí- Ŷ‚ìw6[™írYž§ òLãQ­‚JKA1-žâT’ØÓŠ7¬‚:…c‹¬l%\ˆÀy¼Õ)©MŠ$).$RœY 6•Ø*.üƒrO%¥µ0#5„ĬøS°+0s¢²sÁ”Ò‚z €¦¾(‘(•’)¨ W–0s&¼˜?ÝŸ˜Ê–B°TÉj%ÎÄ’Ôi¦ÔŸXbÙÝ?dK—Ùw"À«¥•¥ûV¬ƒàjcgm̓Ô|PôÜäðJ2+N®¸‘ð!^í¡—{·v¨)¡b|$ÄWȯ ­øÕ.a±#¸¿po>_Èkº6ïëï÷vu´¶¹ÙÉdg•†Ý «¹Õínkoóv´wtvÈêîêîéêéõËêíïí'–5Ô?ÈùÕÈØ8ò«p0}¦µëél&W –‚ìß}4W䜣q2¡}ZV|°ybVSs\j59S,NO[¡I½J}C˜i“Mr6ýc\m…Ø* A'Á(J­ÂZ‘ì`õ£Èj ÕVˆ­X ~%®FÇ)á -M‚¨¶ -ñV„­’1N®Rš”!‘¼$Ó³dƒb7àŠÈª˜Q!U^X©1ìÈ©Ô‘“ñVJ[·lA¶‡+5ˆ©\‚s•œš^Åa”`S1MBª½A«R¶"î¤ãSƒä¶‚}Iº7„[™­Ÿ”†D>“Эø>åN„¯0®`4ƒñ LË ©˜¤’é„êsh•ÜU)Ôʞå*²N>ujÊÖç¥o}ž|KFiýö^ŠÆP˜9ƒKÍ™×NxåúšÐw©|Ì”fN°× o#¶PL‰% -‹Óø!ORÂ?k(¯H@…i]´$ŠΚ œ•LOª2¦Ø=b¬ô\RG§0¦Z°¢)ûl"XNÇãzŒF"‹' d%ÈÞK9¸2º€ãÑxRgÚâôÒʃ‡{‡ÇOŸ~ò›§Ÿþæèñ'ìáÒò*»iÐÉ"•ÎäØWÞýwA–õøégO?ýõÁñ“ÍGK+«…ÉéT6Ï®Zì¢7oéÞòý•Õõûk(»Ú„¨vɯ¤ìj““+p ’òjë!…_¼¢,0îpB…áíj BŒpD!WœY‘ìŠ}1=~º·TœœêîéûàþþÞûìëûK¿û».^$lE¨êÂ6. °‚qöìÙsçϳg/]zî…^|ëí·¿ÿgÿNþ`ß Ö!«¬²Ê*«¬²Ê*«þÕ­;w®^¿~ýÆë7^‰%’Ôˆ° zØŒPw¹IшƒÜÙL;£µ -z²Û ÅaÑîÞ^»Óép9Ýímõõ¶&WKk]ccEUÕŠŠïܹ]VV†îFŠ;!¬ÚÚ*`5`»½Éé´¹ ˉ¬Ö¶vHÁòª)XÝ^t!D#að«žÞ.î"DåÕÀ€„Aî=< «{`XºEð+’`a#B.ÁB„%‚Üy#Â8J°@½~•Š§ˆ ¤bZ2O"±‘ñ@ÿðHWo¯ÛëuºÝHït¶¸Ý]CÃCÑX$“ËÌÎÏ,ß_ÚØ„.„ìg{{s}cmåþ[žÍg£ñØèøXO_o{‡—mhw8m66ðW²3ìjnmm&Ga»·½£ÓÛÙåíòurÕ#Ö ‡ÁZ826î€0ŽÅP|¥ ñ•ÈfGÁ•€W*¶âžA[!×Ò¬9k'g -œYql…j+ÞFc+4 B{B#ÁW[…b¼ ;ÛãØF#Ù¡ ŸÓ*•Yá ÇV£¸¾ì'8éî12 òx+3¶J˜W¼¡2ú *ñV“We¸EÂUJ‘`ñ$vÑFǶxÃl+ž’ÍCàUb@C÷œúÈ4uøë"*yk)¢O*€:^1-ÅyQ‰4ësÖWh•¡6”Z¥«qÆkËyEy%µ^J¾VZ®läqé§fsѶH‡Ø&©ŒBÃÌ Š/1®¸®d…)’0sí÷a<-¤ë´À®töDÿÄŒIëu22«aeOz•`45ˆ>•-U¥²%ÆF-}ªÅÒˆ»s3fFÝŸÑi?ÜVIüJ"._ºê$©â:+dYi>C­$ ®ô³Jå0®*Cî?Š±Šqm•!µŠÆ“8´hL8|¹à -ÕV ˆ· -EÐ'˜LM¦î-ol><8zòô“_òéoŽŸ|öhï`eu½85«³7)ìS;µ¸|kçáþáññÓO?ýõ?>ùô×;»ûË«&§guö–JSO“É™¹Ùù{÷–VWV1öjklƒ[뛂_m~"+œnsZ%mƒÛÁ’-vqçŠ,hD(rÚ!Û -JfE™W ¼ÚÝ?8züä“ÏV¬ ŒÞ-¯üÎw¾{þÂ…/|á gÏClõœTX]¸HØê<{êÌ™³l°‡—.=÷â‹/^¹zõ7ßT¿÷›¬?VYe•UVYe•UVý˪·ßy‡M¿òÎ;W¯_¿üòËûó_°ßê„­ŠSÓB‹%sݹ— 'Š¸V^´#x¥³»ïdjX¤`µ¶y\-ÍUuµŽ–›ÓY][[^YyçîÝ1Åø ¬Šò»•˜‚UY[)Xȯ@‚…ËÑâv¸A‚Eüª­³ FL1 „X=¯:¿R-„ ÄêãAX>jG(’Û©a·¥ò«Ñ‘1`ñ ÷àX(ìGƣЈ0'¡”`¡ -KOAhpB Fã£ÁàÀÈ({õ¶ŽNWk+é¦\--o{oo 8žÔµBqbaqauun6¬­?¸¿ºæÁ©b*“…ÃC#Ã]~ÕÎ6´;6[=;3MM¶&Pa9Žf—£¹¹Ùínõ´y€bu Åâ‹…}ýƒ*¿B‘H4ŽmâÓì–-›È ÷Lv”!WbæÞŒV[ i©­ŠØC°ˆ= [!³yìP[A;D.ë 0 & ’]¨­(’SØC¤VoE=9¶õ­âÌJ„\‰lvLeF0˜ý¹"µUD«¸ fGdw⹤¸—T©¼ÀV¹¢Ò1pRê¬(=Åþþ'Шj®„Ó  Œ·Jò¦o&§˜Yj%}j9îãK¥ ù“àQ1-#·#fVÇ4EdʼnPJb®“H*qÂQhìA?‰¹ÌLHeÖk˜K¼z&.aW2#M…¦$y²–Éá˜J«žÄ„)nKˆÁÈÒÈS³TŠ•U²ë aeðyþPÕ€™Ý‹œž¥•x.s¸½²Jsï tV’ßeÞVÄ—ÅKQÕç¨ÂÒ椯S/æNKËÄOöyÔÍr5hÏ—1u“Ïj)|)µ`IN†eq+¢YH¥P^Å>éyÐ\¥ÑL›'sü„h[Q(’Ø‘MÁ4ÓX ZóœcÒž±lµP8ŠÄÙ|&_˜[\]ÛÜÝCŸàg¿x«ƒc¶dzv>•ÎÅPbÊ.Gs KkÛ$gzòéo>ùì÷—VV'gæÒÙ|¯z:Ǿ×&Š““Ó³3s ÷––@|µ¶Šâ«5l§Ø+~µ±ýp] ¿ÚØæj«uçÎÖQÖ'Z8ÿHu ò,ì3øðÑþîþᓧŸííFb‰êÚºüð‡¯¾öÚ—¿üÌ—ŸyæÂÅ‹Â!xQ2+H®Îœ/áï]¾üÒå—^~åÆ¿ùÙÏä7þ_ÿõ_[?{¬²Ê*«¬²Ê*«¬ú—^×H‚uóF(›œ†¢âÔLajº Œ„E…B,®ÂbÓÌDâ°ò„ÅnjØMFC„ŠD»ûúÀãæryÚÛë› ÒÊÑÚÚÐÔD¬Û„u÷N™pÞÁ ¬ÊêšÊÚÚêú†š††úƦz›­R°\öf#«µÝ묶®.JÁê€F„==}^œR -–„EÂ>é"”¬Á™Bn$ì„5ŒB’`AŠ;¹¿" V,â¬d,  4À¯R•ð‡ÃCcþîþ~¯¯«Õã±;6‡Ýît´xܾßðH°RéÔÔôä½Åùå•Å••e6]¸7?5=•ÍeãZ̃°¹Ûîr6Úmp&Ù™ih@„ek*,¨°Aô¨ -Ÿ`Šã,MÁP1.’ŠÑ -8Ä&|Âx˜>b¥Tn×O¬  QIó~¸¤*•0çt\šñZ‰¤WûT榛¾dþ¼€i²%¢âp”­[¢JÛJ—”8%gbüDî–&yÚiD+®›»(ÊŽÉ´ÑÛÑ€K§éÁL}O “¼NÑ¡Å“¥ûª - É¡ñ‡G5¢ü˜ÑÜ'‰\J>äÇP:Å­…œb¥ò‰¬RHÆHd•ÌŠ¦iŒdϳŠë‚\ÑL -š_Dáâ?¹qÞR; -Ã1 û8€ñ™]µ&§çWV×>:8:þ|‚O}pôdsëáüüb&7MKÙ7R~zvþþÚúΣýý£'ÇO?ýä3°² ÙwÛI8†áb˜ÔÓÐw572Tv &ñÕâòÒÊêÊêy¬oRlûOnߦžƒ„EáWð,çT<‹-GÁ*¯_m »<ƒ;dGB6s†Ç_³¶Ùù£}íݯ_¸xé‹_úÙ‰\GÁÕù  luöì³gÎ\¸x: ^¾|ãæÍo}ûÛêWü÷ÿìϬß9VYe•UVYe•UVýK¯ßÿƒ?`Ó7Þ|óʵkW¯]ÿÉø«…¥eTÑL¦à7¼ôr#!†oÂ*ð8wJÁ¢ ÷$da¡‹0‡ÇÆ<^o“ÃÑêñ´xÜ5 õ¶æf»«¹ª¶æNEyY9H°nßá.Â;Ô…%X”‚U__‹«‚ÜQ‚å)Xmí`!DZ!«Ã×X ¿’üªÏˆp—‹G` ÊðöžA‚W„…,ÀYÀ¯†Gú‡G aƒÜ aq ¦`i@H’©H°R±$è¯ØSã‘(Ûªw`Èëënmo‡0x/vgs3¥¸ÇZ<7‘šžœ›Ÿ™[˜›™š™ÊO°{Àd(éîíióz]--Mv[CSc]CC]C=ð+ЧÁÉ*¬f—ÛÝÚÖæ¡8¬NˆÃêòõø0 «¯ -r†Ø-[$ŠáW:ð« çW ¼šž]WSlìhT€NÁ!ˆyìì€'sùb–ý1H©•ž7ž:f[±{ÒD„°Þ¹ -Füãa’Z‡F8¶RÔVÒ-(²Ù)³È¤²‡Á$Š¹bûÍ¥Ú*fV[áÝ7¶8äÁìd,ª²«´ ³Ê—j®8³"–•/!Wi…IìyšY™zÒT×虄•QDVb("+3¼R—(z*R‹¥0¢¸fÖ\"ÄJ•j®4A·4^™÷ ›µarŸR¯uÒ–ÈßééžG¾z Jèzu òÃ͉äUL±]§¿¢šS§LQêÆs·â†KA[†*,Û0šTÜÉkòiÒðZ -U˜ˆÁW;Æî¥{£lõ¨â)©|“È‹ÿ‘Ç å˜‰¶Å×:Á¾¤A•bÇT×\ÑLV ©l2ͧÿ˜s? Fùð(ÄJ`ž‡W2+%z’¬„70I:+R^E^Å“øÉ…œ+³¶ŠÂÑ0ûl'Ó…éÅ¥ÕÍíG‡Ü'HñV÷ï³/&ÀVl›T¶8=»¸²º±ýp÷àðð1¬ùäÓ_¯ml±KäeEâc¡Æ_aZdÙ•.ƒ ‹ËKË«Ë÷×–W׬oÂçàæ6™I‚%“Ûe~û¦pÂÂnƒ»Û;<ójk‡ƒ¬-° BøÕþÁ;¼G{û>_ÏòÓo|ë[/_¹òågž9sö¬\³â‚«óç¹Uð™gŸe3Ï¿ð•«Wo¾úꫯ½ñƒÿêW|MMõ;Ç*«¬²Ê*«¬²ÊªÿÅêÆÍ›×oÜxåæÍ@(<9=[D:Áù§XSEÑ—²° -“yŒsÏ@¢u‘ø•žÍA;ª° +óõõ9€Y9=Þö[S]SSs«§ž§`•\Vö1ö",»{÷",6€_UUUÕÕU¿ÕV£ÝÞèp49œvlDØÜÖÖÚÞîözeV[Wv!ÄwàW}Ø‹°—"°ÀHÊ«~LÁê—ðª›2¯¸àŠË®†‡E -–©!¥¸ùÁB(ø2“GX(ÁJ‰äTTK²…hld<Ø?4ÒÙÓãñz­­M;DW9ì­wWw×ÐÈ`0Ô´D:›Îòì”Oò¹‰\2¥³{µQÿhßà@GW'i·Ù l¨¯­‡Qd]„į”`¹[<ˆsoïðv¿êîê~Å#°_Œúýίؽ»qKesÐvpZOr…Õ \!¼’>ÁÙ‚`Vl51Éîø(Ø*€ô3º F“`œòØ1Ø -ÕV±`°•Ñˆ¦ÆC£¢‡ pª.µR†4WH®ÆÍ>Aê'aƒûÉ*w¯¨èHHÁõ_S±@Oy“ÔJò«” ¹*}JÕ\¶B`ÅS­¤ÔJ •¢¬â;™j%%F\Eô†dT’eIÝ1!©Ã•“"$Aʵ¤ÔJFi)L¼bZt -“+ %"âTU:#ÿ´W4%ÃáXÂèP~û\W£j6Ì”´VLȦ%„M/ ûJI%˜¬ÒqsßFƒÿ˜`’#©+¨éú õÀÌOQÓR!?£ã̘þÌÞÏ„±IŠÛ-¹´)]âsäÄ5K'cœH²>ÎÖTMÎ ÝŠÈ•°Cf)ü -V“Ò¬d6™ÊÅq 2+ÂVYhÈO²©U\ÇÖ¢ZL‚¤¶f…#APKƳƒà -%šì3ÎæÙÕã­vöö?ÁÕ㧟=Ú;\¹¿Æ®Kì󺕚˜œ¾·´²¾¹ýh÷`ÿèÉÑ“Oc¼û^c/EÀ˜<`@vEŠ%´DR§élb¯ŠS“S3Ó³ só‹Ä¯VV×î?@~µ¾¹¾ÅÃÛ7amml -!–šE,rÇÌv[Û†ypCB­Ýý#ö~ý¡pìƒ[¾ÿþ7^¹qãü… *¶’ W0Î_8w°Õ³Ïžyö̶Ƶk×_}íµ+W¯~ã›ßT¿ÐÿúoþÆúUc•UVYe•UVYeÕÿzõ6"|÷ë_ùêÕë7nüðG?f¿ØÉBÈ…X€°f„ - ÄWl*ì„(Ä‚Ž„„… {¦²šžñû=^o½­±ÕãimóÔÖÕÛœÎ&§³ª¶îneÅn!¼kH°PUÎS°j«ëêëë›lįlÎfGK«Óí¡a¡ UX˜âFÂÞ>jGHK¡X=ƒƒÝý0dçA¶„”W¢)!ø{‡FØLÿÈ(¹ÇÆE -–°bñ  ÷þ:M#h! „GÇ|}}m.·›½÷zDW9[\ííݽ=ã#áh˜ÝEáÿÿ§S™T2•ŒÅcþàøàР¯§ÛÓÞîlnn´Ûëjêë^q~ÕØ؈]ín!lq{ZÉBü -"°|Õß×?€ú«‘Á¡ÑaɯØË¿Ê€þ* ü -ÂÛ‰_ax{‘ ®f ”ÇŽ¼œ‚­ÒÙ \AÊ ´¼O]¼-Ø -ì9± tŒø1_]FWú&©ÕÈøЈŸB®xÎÕd¶³ÕƸO0ä—ñVžÊñVpò5t!¶¢xgÊ –&AÙì:ÆÀœÐ\M{ !¬œô JµUÁP[åPqfyÁd&gê!Xš­€øÄL0*e™8¶Ò¨•"úa¬¢`¿2±/‰ŒhÏr,Æá‰i} Ž4U¸…ÛJ]ÖÉ­ŒWIÇ ð¥ätqU˜Y÷% Oë2qªLL3Ü… ³mˆ“"ÐÓ®ieNáE'YÙ©_šÂÐôR]™>–]}*ïTµ„•1Ø—8à ݄))dRÓ•äJ©xPEs&ì)}¦)é–åR“²ºIL1¥rç _ÑžL¡„R2*<$°"©U’DVÒ!˜!o`‚N#×Y±Ïc&ŠÝ1k”Q‚ViQ³ WÀÍbñ$û\uGØ^2¹™Ù{«6vw¶zòô³ýÃÇëÛSÓó첆üv-›/Ìß[z°¾¹óhïàøàøÉÑ“OöWس$ÝcדñP„]”±x4®ÅµdBÓ“é NL û*9 íàÒÊòêÛçʃuÀV›à$fEÚªõMƒYa<ûŽT^míIp—=ÜBZEYî[øpoÿè“Ï~³´|¿ÉfÿÆ7¾qíúõ/_>{B×…OÐÀV2áêÌÙ³$¸ºŠzé7Þxãíw¾òWe¤Zýå_þ¥õ“Æ*«¬²Ê*«¬²Êª Å~B_{å•›¯¿>0<2=;AX(ÁâÓ)ÈÅ*LMQ(Q¬\‘g¹¿"a.Ÿ‚®ëÐÏ]ÏæÙ=BO_¿ÝÕlw:Ú¼^6­khp¶´Ö55UTWßÅF„l”¡‹Bº{EEEeeUm]U]5"¬ –Óæt9ZZœnO³§­¹½V[g—§£“"°¼Ý½=}Ý<¿ÍãLW_Ÿ¯¯O„·sŠEÎA®ÂØŠTX$¾ê$á",HÁB –@X¡°?A ð+@(š`%9¿ -Åc¡ðਟ½n{—¯ÙÝfs9ššš›¶fw‹·«£oí{4 -„#ì¦ÝˆEÙM›Ü?4<äëéiïìh†Æ…¶UM}}ummU]mM]]­°6b -– õWNÔ_y<íЈ#°ºD„{oß@oÿ@ÿÀÐD`Q~{ÚÍkì†QOeÓ™‰l~,„“Ó“<Ïj†ÔVà-"¥ÌO"³¢l«¼4¡?(= ’“+Z…YÁp“ ¶©VÓƇFýÃ#œY Èò£I ®üö&Á(&\Å^©ý %‰ W:W[å•Lu¡x»@.²J) -+(ÐR}‚E='í¼ fŒœ|Q£Áœ)b(S⼋•äP)<Ê4¯h™ M•Vˆꬴ Xi•S)#3DS2 ë&WS1O“HJ,WqY©yÐü.TýX4!û'*˜K9Ô¸|¿ÉRD¦X)S&থͺ/³×R7§u©þDålˆ“£îV={ÁIŽD[éõ2ù4U/¤ŒSþY…Ž.­E•“`œRù/«žgÁýtþǓЕӨ ½ý 1OèÁÅQÝd TúEò Ð -¡U¼ßŸ@XĬâ˜FÅfð£Ç‚‰µ„À*®KH…@²Ã%"Œj+øðb<;³oŮ슌ÄÙ…¥89³rýá£ý£ã§O>ù5‡ÇO·vvçï-³KPcîôtvznaåÁ:[þhÿpÿðøðñ“ƒã'Ö7“©ÌÐðô­aWUÔm²—ˆDãê®%Ó© 4ÉäÁ@Í®xEŒmŸ_X¼·¸²tmemýþƒõÕõ Ô_m­oIç &_mílî<Ü`c : ’‹Öúæ!,Á¯` -ïåñÓÝý#v)þî÷¾wõÚõ^¼LœŠ3« 0luáÜ9\a2ûó/¼píú+ï¾ûî›o½õÎW¿&¿»ŸñÅúúzë7ŒUVYe•UVYe•Uÿê½÷ßgÓ·¿ò•+W¯ÝxõÕÿ?\º¿: QÞÀ¬&§1εX2ȦEÞ‘âÜ! UX¢a&Ë'RéÀííÇ4Ès×64@»ÓU]WW^YY†,„WwÉEˆ)X••Õ5µµ•uuÕįšš1ÅÝÑÒêpS#¶VÔ_y¼!Á„«Çëëéèa£—R°„yp@L¬„5Ü£d¹ÂAjD8‚,?ê¯x -ÖX(âGxŠ;oD¨I!†k¡Xb<ö÷uŠ¬F› ¸“­Éîa‡¯³¯¿oht»Žû~6?04àëöy;:ZZ[íGCScM}]u] ð«ÚšjäWµìŽ…7"´Q–ÓÕÜLú«v/D`utvR„{O/E¸¿†Cáh,®AOùd:™Êf²…l®87qD®r µÊB°ZDAj•Ãl«4Ïc‡;eT['°0«P$ÀNN <ˆŒà*8ê²›Gn $“ +P[˜CÚeÂU®ÐO0á©ì„­"qqª5½„\aÒˆ ’ðG˜7|‚’YŒ’´Š#¬bI{ÚD® -Ü!ˆüJ’+_):«tÎè -§+äN¨€D¸ºMI‰¡€MI(M€dåÐd;|}Îs4 -Á>iB4öYâLTVÐå~¢š.v’†²‡šGŒWL˜À”„-üí(ª$±Ü„³Ì(³¬hÂ0áÊ£Ø.il”o6®'ÓS‰óSê¥Ð³”qbKEki–œC3¿—t,š8q6øú:gêéâ/ͶՑވ…@¥Òü]+ˆ/¦HãTI}”£åúχ™ºúo-P'ÔS­‚€).~ãÚ*ñ$J°SË)²’óÕ“±QO…R+$WhDŸ`8ª…ñBÁö‚øÉ…—f[A ^8 Eãìµó“ ‹+›Ûö!µê³'O}tüÉÃGË+kùÂ$¬fŸþTqjvyu}kçÑ£½ƒýƒc¶òÁÑã‡û¹Âä¨?¢Óáþ¡‘Aè¸ -N Ä®K¡0d¿³K(¯’éTáUÔ§“ðe735;?=·0·°H±í«Ôspc{ ó¯È*ˆöÀ‡<ks âÙ)­dW»À¬¶`Ü‚[ÓÎ;Èã'…âÔ/ù÷7nÞ¼xéÒ¥çž+q^€HvEpuWÏ>ûìÅ‹_zùå7ßzëÍ·Þf_Ð÷w'¿»ÿÓÏný€±Ê*«¬²Ê*«¬²ê_g½róÆÕ민þÖ[ÃÃ3s EBX\ˆÅí„Š5e$ºc"–â"D V$X„°Ø톯·ßÌÊÙæmo²Û«kk­­õÔˆ°¼üö;ä~×į*Ø@!I°ØÊõ6[£Ó¬æ‡›7"t·{ݼ!ùÁBØÓkòb -–¯UX¿¢.„$¾¢ ¬ÞA1â,Raõô!¨°FÑ`h,&„ˆ%ŒF„p÷p<ˆÆÙÊ}Ã#]½½o‡£¥¥Ñn¯ol¬k¨o´5ÙœöæÖ–Ž®N LýýƒƒÃCìÆË×Óãíèlv·Ú\Ž¶r}}Um •µÕU`«$ v!llj´Ù›ÀBg†"°<ííį¼åëî•-ûÙ ø¥ tp÷šÒÓ¹tv"“+¶Êä'Ó¤¶ÊRˆ­ôTV£l+˜Ò¢˜m‰&¨‘} D(Õ -±UˆÔV¦Hö1$W[A¶•ÏÎVŽ`;®B‘q0 ‚O0%Ÿ aiL1Ú¨÷£x«T–ã&ÑU°hî*(‚EÞIPè¯Ò'š b'AoEÁ¤”]!(SR­”Hv€¥¡¥vT2$?AHe2÷ŧ¯Lö@uåhB®¬#  UôQfM—ècÑR¥/ªJ¿ˆ‡$å:zL;ˆÁËô̤ûRŒ¯ )þAžˆEFÆ— séFM(Ä&©¬Ÿ0Pž"}4Q»š§Š Jh |-™`Ѽ˜òNqèˆøä+ $–L‰vIèr?ò$óãÄmÅeð,>•TþNtz9ñ¯Ië$M[iÈÏ‹%$ãèRÀ´DJ¤¬‹D,MLµ 'ZÄ©€Tg4LµŠ'Ä®À˜yìh1ì ‹Š j&“`  [H W -f—ñV±™‹Ù³©L~v~qm}{wÿèøñ§O>lµ·Ä–LMϳMpµDn¢xoùþúÖÎÎÞþÞÁÑþáñÞáñ£½Ã¹{KãÁH§¯§»wÈÕàðàð»ÎŒ¼ -ì -ƒò$¼Òô4Dÿer™ÜD._œ(N¦f¦f ¶}naqqieiyõþýµL¾z°¾Qí›;k›²Õ ƶó´+6ot„,¬íÍmð n?ÜÝÝ?`{p5·~ã›ßúÒ—~b­ž{îÂÅK8.–³Ë–‚Rpõúëo¼÷þûåw¯^»þ³ÿh«þð‡Ö/«¬²Ê*«¬²Ê*«þ5û|åêÕ¯¾úç?øÁâýûäN*,BX8?CB‰°r“<Ë=[(RGÂT6ŸÊæ_’©Ì𘿽³«¾©‰$XÕµ56—ËætUC -Vår r/+++/„…)îl9¨°¿VÓdk°;šœN»³ÅÞÒê‚F„”‚ÕÑÖÑÕÖÙÕÖEËçõõx‰b¡þª³§úváP%_ÑBHŽÂÞ!™ë>ÌS°ÌGƒá±P„ HÁŠÆ‘X8b#B”¯$_A„{|4€¬~oWW‹ÇÓäpÔ56Ö¢®¬ÑÖèlq±sÒæm÷õø:|]ìö«£«ËÓÞÖÂ3Û9¼ª¨ª„Q]UYSU‰,™‚Õh³5aŠ;´ lõ´º=nO[[»ù•¯³ "Ü»{ûºI‚54<4Xc㺧‹@û-°Ò@W*‹ä¡`:;¡grlI’›Ù½j2žÙ`4¢6‚!0 úÁ$ˆØj5T\d…„jn$‡FX l5*±U`”c+ê' „b(¸BŸ`Lé'Hš Mi£¦$\‰öȯƒÂ$+ÐS¥s2†Ýȶ*‘]!³Û ÒIpBC5—–‘Þ@œI™™•9áJ&G)J‚~h*áT„ -A3Ò†pd5°’n¢L »8£b*Ý„ªøKèô,²ŠÕÒUIRTxý$ì’¥‰O9<08œ‰jz ²Sd` -ò­82r´R1…™<‰IzïºT(ã2Þ¾xݸŠÑI0Ð8š.™[ !Tf+©à1%8’¡ƒˆ'Áš¢ROEÇIJ6ã_UBª×Š»¨È¢§ˆG EÇÌÒ»ˆðð=”pWÐU€MS W’(ešÖó.]Åí„ 2"¤â¨Šž…$v Q•N2ª(%±Ë`«8©1IjEr,˜çÔ+™aÇÄL<f`¦85»²º¾óhÿðèéñ“O?ýìàðÉÖöîÜÂR*“ ÃÊQ¢[6¶vv[íï±-î¯m°·ãëékïèêé„ÿ郫Ü»Ô°Ë »ªÐ aàU/wzBO±¯'j8˜+Ù÷Wqrj -ƒ3ó ó‹K‹Ë÷—î?x°¶ñ`csÆ&$·“sYÖ6±,rJQ9 -QˆÓh4þƒ¿øá™3gžyæ -¶24Wà¼(™ùApuæ [çúõWÞùÊWÿÿý“ßÎÿðÿ`ýD±Ê*«¬²Ê*«¬²Ê*ª÷¿ñßùÂnܼyåÚµ·¿úUv#0»por˜¦yÏbþïHÈsݱa¾8E.BhGȃ° ‹ -¬H<ÑÛ?`onnr8Ú;;ìNgmCƒ£¥•–WT”ݽû1¹«¬ªêŠêjHq¯¯¯©¯¯ojl°ÙíN›«ÙÞÒâr»[Ú¸Ëãí¤.„˜âNÂîNÁ¯xBjDˆÉW„³€_ ¡kùoJˆäJæ_ õ ôà”ôW”‚5< á(J°Æ) %XBX‰d(‡÷h"°ÆülWì¨ØÛ\®ú¦¦š†úêúºº†ú†¦F›Ëálmnmó¸a´µxÜ®–f{³ 2¯êê^Ý­¬(¯~²4àWµ² acSð+;F`µ´4»Ýî6ŒÀjïôvvuúŠõöu÷ö÷öö‚§fhxlýŠÁP4Lš4²›VŒsGfÅ…©ª­Ø -‘8„ó6‚è@Á1vüd Ⱦddw‘8üC’_Ëüö?¤²ó–‚!<¨‘ l…VAÂVÜ,–íÒ46¥¹*pÜdä«£ôcBv•+m&¨æ±ë9Ž¼Dk‚Éð*A&A>TÁu|ãèD¸))ÝìL™„¤é*ƒŠ*øB€,]ôH‚$/~Ãe¯%`I NR"úÒË>MˆIã M’¨Y:E®ÅRˆœ4ª$Gà2ó[ÓL@)®Iež9Ô43‚ìEÑz)ïE²;qxêÉQÀQJå?QCû¤ž%]À«$Ñ$.‘’€ÎøÇ’ÿòÎ@—òÍJĤ×Ô+)=«É§(^/ʦpF&$Kò ã¥9Td“má‘𶒠¡²‹ë³âØŠ£ª„ U„¹ø±`!I­"` ÔÂQ|I„"B|‚+ˆºÂx+.º‹Æ’ Ô Ã$¦%s“÷ïom?:8zòøégŸ|vtüÉöÎÞâòýüÄd,ž °k–*NÝÚ~¸·»´wx¼wpôpwÿÁÆV®0É®cm¾vec[¬ŽRv}cW$à»d± ûb×1ð>£Ö[¦æ³¹"á§Ð987»°8oùÞÀ+ˆ½ZÛ€Øöuˆm—ØJ评ìjë!mß~´ùð겶fçî}|ûÎå—.á _8{­.ñx+ô ²§[={îÌ™3çΟñòå×Þ|ó¿ü¥ü^þÉO~bý8±Ê*«¬²Ê*«¬²Êª“õGÿöß¾ûõ¯_¹zíÚ+¯ü»ü`aiyrÈ•3F_©™ÂÔ44"œ"!À«|‘R° -™üõ"Lesé|Ý2Œ‚]]Mv{‹Çãno¯©¯kr:l®æšºú -”`‹ƒ°n£‹ôWÀ¯Ø¨««®¯Á",hDèj¶·¶:A‚ÕÞÚÞáñ¢…° $X<ˇ-{zÙBn$ìåUpüjP4"&9Vz i ›!~Õ7ÌŠ÷©°üá(aÅ „EùWÔ‚=;äô ³ƒq{½ÎÖÖ»½êúÚšºÚÚººú¦†F»Íîr8ZšÍÍ6—Óæ°746ÖÔÕ±·_Q]U^YL°^UEMUUmmM}=!,ŒÀ²SÛ¼ä\mž6²vy»€_ùz€_¡‹p°œ5ì.olÔ€¨dè#Ï(èZ2…R«$)@j± {¿AÄVlØj,Àrf%—]©j«aÄVÌà+̃ÙÃÌÙì'ÔV"Þ*-5NJWÁ¼nÂV†Oâ­ä yÙ¼®®cNe§AÑLPSQŸR+¥µœµ®=#œ?©8…°FL²•?h&1•Y¤›wbÈ„¢É1”H*Â">£B¤ˆ[õ—D.ÂgÀ(]Ù99 Üd¼Á¤€HIE&zlšw²É—VÅf'ß"™ÞˆùM Aš¦®TÞ é_-b÷„Op'ñl2jØ÷ä’¤ò/˜4†¦+ϦðïÜØ\7â:^=ˆS%°¢§’¹Û„F´3YIÚ0"(–!BKÌ(TsÒØHt‹<ƒ°©VD«bqÅ”ŠaÄ’4f ¦Ü'—Áì ×CQè' Åbq=“-ÌÎß[ÛØŸà“O?ýôðñÓ‡{‡÷l'g´d:‰EãZ®P\\^ÝÜyDØj÷àhgw}sgf~!Š¶wøÚØ¥ ®iƒ=ìšÖ?ÔG†ÁQlý€`|<„¼Š%â`”†+›žÊê™4Dµp±¦xöM7ƒ±W÷—A|µüê>š!ÿjò¯¸Ú -û‚Ôjs‡4W”Ó¾²º>·°ÔÜêþã?þû2ýò3Ï\¸¨v¤aX[‰ÁV¸qãæüáÊïâïýéŸZ?H¬²Ê*«¬²Ê*«¬²ê·×Õk×^}íµ—¯^ýê×ßíðuÏß[4ñ+Ðb‰8,4Êv„è"œÊy -±&ÀEÈîòÑ„Ö×?èhnv8íí§³¦¾ÞÑÒRo³S#Bž‚uçÎòrn!¬¨VSUUUWWMqOM ؈°Ñá²c{³,„äîåüÊ°BŠ;¨°ÈBËÈÂèêí—í»y„»0  õ IG¡Èr§.„Јp¹(k4&~ˆ&BÑDƒô`!DGA¶­¯¿¿­³Óåö4: #«ª««j •Ì€ ¦Âh¬†Ú†z¶¼²ºº¼²ò.¶e¼SÁei`«¬ª®¬­®1,„M M<ÂÝár¹ZÝ­›ºvtz;}¾n‰°(kºŽŽùã´ì±½H,CS?N J:¡“ 4 zR<›¡âÀŠ „c8?z"•}î+Ç‚ˆ­ØIãÁìq®¶J$0Û*If1J“Fd”Æ„+l)˜Ø -ƒÙuÌ.,…t^F]AzŠ‡±ã&°¢Hvœ -l%¤V&{`FöLˆ`+¼BT¦<R’QÃÔÆ Ï>Ò$­‚§"FÌQR•ÐÜÉGJ™)MÊ€0 -çQw"#á"")=ÒKašT™Üj©¨"OŠ(GhÈŠLäÊ,ƒ÷kÞD‰u2бۤ8“¥Z¬¨±$izãÆ«§ÌØGE È“T]ÒXb¼/ ¦RbMMUFET%°•xJ“{– *×"\Ò„æ*6 ˜†kâE#NëhÆúHH…ÈYV\Sö“„ýÄÕ³—äxPü»+‚+Õ]ÈÃêESÂ4Ù Õ<ö˜Ø4òl«¨Š€w8ŒýÙç—¤V¤ÅGaÁG»ÔOðøñ§»ûGkÛÓ³ z:Gœ<˜›_z°¹ýp÷"Ù?Ú;\ÛÜ^XZa{ðõ´y;;»{|½ýÝ}½}ƒu5±~ˆÊ‰\±Ë¤Áã e`¯’)MOCo\POPÃAöåUœšžž™›ž›Ÿ™»·°¸|“¯VV:>8 ÞÀAn£‡‚hQ0»ÀVãð\mE©ì‘x(†¸,ž µ†ÑL0I)èž7•lÅãÙ>aKÁ¬ÄSr*VAC…¥ ‡ e[•è¬’Ìž„$vÊc7[ñ‡Je7h•.2Àÿqƒ(oȨª˜’†É@IRp•2Q¦S DUI™w¤±–3I‰’%š.å“R; :©Ú' F~«À)i~wI¹sUߥj– ã›àc&2¦é§O)Jâû`Mî_S!RÔäÔÓN%Q@kšÅQ&¼V²Ž`SZ)}*IRO¹ɨP´IqyìY˜"¹Â5ãÉH<~¥áT²,]ÙU’Çp¢/©×JƆŠr'fZ@T]ꬰ] þa`ë@ê!HÑëD®ˆP±ÁÛ€’I0’†¹ò -Z y&ä¥~‚1¶Ž–LŠÓ÷–V·¶wž>~òéñ“O÷Ž7¶.,®äòE0&³Õ³S3ó«k˜Ê~¼>Á­{Ë÷3ù»˜x;º<ìúÞÓßÓ7€c°·¨o`x`ht`x”RõèRKÃh‹r<ŠÎ踦¼ÂÀvPç&Šì›‹}—±/¸éÙ_-,.¿‚΃ë«ë›ëë[kÛhÜY#!ÖXîîmlï§gC‘hEeÕ›o½Í¾:÷Ë_¾pñ" ®.Øê‚Œd?ƒØŠ .<ÿ ×_¹ñ§ßÿ¾õ“Ã*«¬²Ê*«¬²Ê*«þyõûßþ6›¾rãÆÍW_}éÊËï¾÷^gwÏÂâòäôÀ«™¹"wÎ(^™ÂÔƹ !a5ƒ#¬d:—™(€kpÈÕÚjƒ¬Ngs3¦`A?¾J”`•)« EGä",Ǭ*.Á" ¡Ãær9Z[­n¥¸£‹§¸#ÂêèîÅ ¬žrbV§È¢,äWЈ$Xý0€\ K…)X0íŠU¯ü"È]iD+.BÐT„â‰`,>Š ³ýtRB´ÖÔ×CüWeE9Å[Ñ›ïTܽS'Ï žpV²sRQAýk Ž,„ <ÅÝá€þŒ­.·»Õíñ´I Vð+_VoÿÂ"#á(ô—õC‹y¼û ㈌³7ùCèäÀŠ²­YŠÈÕ H¸âÙìlM? ®‚$¸"l‚+h)h¤²‹x«$ÅFQ¾4e³k¦`ö¼žAÁh®¤†Ê€T©|ÁœÄ.¹VVNŠt÷$’+›Œ‘Ô -fR¥ÁVx0H«¸Ô*¥4ž3™?g¤~ûSR#1 nÞsªDerÃ%¤ÐK?}’fEÓI“ªbJž„W¿fY™¸ÍÉ*ÁA&ÂsBaeÊzR_3zŠšÔSrŸZ´” q~¥Ê“è]D”0§Ni"fÊ@Xª\JaSƕЪp‚ˆSR|ä+†B¡”œ†ð²@r,âN0OkÊ]Å9¶¢ÍÅL"êÄd(Æ÷p‰ïGãÖBî×Ó)ú U[2° Bí¸ü€:+KœÅ¯tJ_‡ÖQÀV”d¢`+1ƒ#N íѸΓˆ­Œx«¸žËç–Ö7¶÷ö!•ýɧ‡·¶w—îç S‰dš½P"™š(N-Ý°õpwïàøàèñÁñc6¿¸ò`¢0ŒÄ:|½î6¯¯·ß×;€h`ïlô¢apÒ®¸gp,= ^g0ŠWq-Ž—öYN¦³z:›Î¹ÊŠ…âh‰§g§ffç^Ý[¢¶ƒ+Ö çàÚ抯Øtcs{csgûáî£ýÃù…¥H4fs8ÿä;ß½pñÂïpÁÕ¥‹%ýÏ£Iðü9N®Øc¤[—_zéëï¿ÿOÿôOòk÷ÿäO¬ßVYe•UVYe•UVYõÏ+öÓú­·ß¾výú•k×þêg?›ž›Ÿš'~…ƒ#¬"Ú )«€íó““EÙ‹p2“/@/B_åÒ¹<›b -–¯Énoõx<ííõMMv‡­¹¹ºŽ7"¤ü«ÛBkTVQÁG"ȽøÛÊÞèp | ¶´µ¹Û½äÞÑééìlëì" çWݽ½½]½auõ"¿Rö‘"Ü{¸‹c«^Ñ‚S,E‚E)X#ž‚åS -ð+¸W¥[T0 -A BöX‡ÁBÈŽs“ÓYÓÐPY[}·ªâNyªÎʅȪü6«;Ô–m•eDöè´€³ƒ°x -–‘âî°;œW‹«Õݬv7¦`yÙ wé"¤^„C}ýCýCC#ƒÃ£Ã#~$T aÁŽó„­†Çü㎭ÄäÊ”p5†ƒÀV!ÄVÔOc+Š·â©ìqn¿ñV²éql…ä -  -®ôl!•5²Öq¾$É -Z( •0v¡¹ÒP¾"+ÞI0GžDsAÐôŒjäÁãjã¹ÔsºLÈ$OŠŽ³’ÇQ;Í`MŸ?LÙJfò# O RIWRгäilJ7±#M? ¦JŒuE°9R•'Η¢¦ µˆù½DJ…OêküÑÅ[.Q=iQe>lZh(\žˆž®ž:©­Ò8‰R•TqMP©DÄ Wp)ñKò(œÒõÖľ„ªhh!¾„.!„%RL)²8Îâ(ØÈr`—À¹ùf„ÅåŽ)Ü6É#ÙcˆÂ¢šÐ\i$¯âÀ*ÁQ, ¹¡X)HeB?Á`(Æ–¤³Ó3 ««wŸ>~úÙáÑÓ‡VV×&§f“z–­×ôl¾0¿¸¼±ÅÖ:Úlõdwïheu½05ÃŽ°w`ØÝÆ.\¾®nv½âj+Ò†AI®†1§=ƒ!Jót4ŽªN Ù¸žHêz:Ǿ€Rél6_ÌN'ŠSè‚Ÿžš™›ž]˜å8Ù`ÇyÿÁÆ*ñ«u@XÛwÉçKh®–ÖŸýÇ¿½ùêk¿ƒ WK®ruöܳÉN\ëÅË—_}íõï~Ï\½ýÎ;·nݲ~oXe•UVYe•UVYeÕ?»¾õûßbÓ·Þ~ûÕ×^{éÊ•wß{Ïëë^XZQR°Œ8¬É)ί$šÀ,wPa`¤1ÈàU%Xñ„!Áêð:š]5õ Žæ–ú¦&zB V™”`±)çWØtäFÈjššl¶F‡£Éé´7ƒ‹Ðåikmkw·yy;¨°|^ŸOê¯HyÕÙƒÓ^®¿Âé F¸óüŠa Ó u!¤%}Ã#½8íQ’…p, ¡‹0ç÷§âî5‡£lÁQÏà`GwOk»×ÞÜ\ßd«ª¯+¯ªdo³¬üîí»wnß)û°ìöÇwî|Tvû£Û³ùÊÊ>Â){ªLAXålÏ%X ì´ËËål a«§ øU{G;8+!È\„¾ž>6zúøý ÈF0Ë/ܼ fX)ÁV -¶âš«Q#›}”§²³{IÂV‘ôDlEE‡r—ͳ£…ÚŠ“+lö'c©¨± ˆg7 "§2÷À5A¤ 7™ ÍÙIg¥© •H+>£§¹ÚŠ3+Ѓ©aé‘SØ”^Ò9.ò9lÇ Ž’'4Kú‰½•®RSÄüZ'ç…"¨Ôþf^ˆµdÄÔð®ô€Å&r‡šùJߣŠÎ$>*Qa˜‘X‰’ɵSù˜D[a15Q¦dôîÄv\ød,1ó(.‚âÛˆ y‰vR[…b*¡žv®•"<…œ6 Ü > …SêUJOÁGC`+\A Ñ<—]!ãŠÒ¼&;rÒG)’0È•åøaè“aVQ -`CÓ@r  wjሆÆÀ¸dä)ž]’g¶>;ø`òñÂìo”}'g—Vlïì==~òéñãOv÷Ž¬mNÏ.¤ÒyŒ‚Ofr³ ‹6¶î¶:8z̧ç´d|‚Ýmí]ݽÝ}lø°k*Ê®†{@sÕ?42€ {Ã#pÙñBl@á EblPàU,¡ñÀvP^e ™H&Ï^=; 'á;kfj -2ÛgæïÍ-,-,-/.Ý_Z^…ØöµÕµÍíG`f"VY™<-\‚…)X5uõÂYik²Ûí‚Õìlu‚F„Þ¶öŽ6o'õ"ììêéòõÅêíïÁ8wÑw~˜Ý’ q*?›ac`– *‚«!ÞOwûBŸ`Ø€Tv fql…*’‚Püx‚WDPm•eTN6£H0Jt ,â¼É9(ÎLH“ –yÚ9WX¶JS¤•×ÒåŒÔYÑ Žx¥Ñâ‚”“t3€:)*A[úoÁP'%F%)bfGÂ1§Ÿ„B§­¬ª‰DN”¦:ïJV6Hˆl©y(™ÈRÔ¤VJ†‚·˜VH*(L›eN1%¥º)zš*,½{ñ¤šAIfE󰟤˜Ñ kžàQ†ï/A*!…RDUD“h9'KŠÆ’(“ªŒ"B’#ž 9Ô‚)¤ V±i\ÙPã pÈÏ­€ÚEæA -¼"1•lê,L²â« yQdP(¬ŠÃ0I‰™„ÔÁ³‘h‚ C3Á(ò¢xBKç S ‹+[ööòøñ§{×7wææ—2Ù‰h ^4™˜™]¸ÿ`}‡­uˆØêøÉö£½Ùù{šžav9jóvuúz»{ûAp…ØŠk®À-8Ø?4‚²«‘A„êØót|d<àG³s  CƒTLkO$â ì$åU -lƒ™\*—gßD¹B‘ö™œšš™cÀÆü"8Á<ˆm·v=ž¿·Ô×7ð_ÿáƒ?ü7ôâåË_üŸ={F¶”ImÅÆ™³gŸ}WÏ=ÿüó/¼ø‹—_ý_þÂcÿ“ï|Çú]a•UVYe•UVYe•Uÿmë÷ÿàØô+_ùÊ›7_ºråíwÞiëè\X¾_ʯf Å]Ú 'E;BDX<‹x» ˆÝÍcZ²x¸Ùív¸œí.!59ZZl¶Šª*Ir¸]®‚Ûå «ªŠ,„Õ ˆ°lvð:ö–‡Ûíò@;¸‘_y: aõtøz(È\„=^Å,Šs a÷ÀE`uðwίDŠ;Í á˜â" ŽÃc¡0ò+äÎG0Äü¡ÈÈxmÅ^Åëë& V]SSU]my÷N~XVvëöÇ·nôÁÇ~ðÑG·>þÆínѺ ëD{J°jë)ÅÝÖhs`#BpV:ÁE,O;GXÞ®® Âêêîí’*,bõ sm»OŠÅóØIg%ÕV\pÅ®d¼³G úFø…DDÃi\ñV-eÄ[Q”:‰¦R¤2É®d ;Wd¡Ú*™UòØ)à}‚‹#c[é$µ¢H«OµBc ›ù\w^©aPœð÷ENHªN¬c@›HSdNšº¡Â¯´3]Iöø Ž” ›ÜpÉãrå’…¥ÊœõÿšO®IÁR؈„*9’dجƒ’Q2É\Ùƒ¤arµ„j¸SŽAJ¡RE=Œõ¤ -™b¦R:%…O\g%°•Á¯b$¬2À-!EZ© r'I±àaŒ}.œlƒìŠ:;Ä jiÃ(Mm©(Œ‚ÜIÍ…žAÞ©;¡ ÿ@ ;§Lä sW `Çl«HL¸£à - b ;×YE¹Ú*(¯"< öÉ€}ÀÁŠ±‡™|an~im}ëÑÞÑÑ1®ŸlíìÞ[¢Tvh%SöM±|ÿÁæt< ŸàøS™¼?îòvv{;} -ErÅ‘+u…×¥A¤ëÃÜ38ŠñzcÕ—ôN¥–©ÑD‚½l"™âÊ«TàU6ðj¢˜+L*¶Áy6ææçï-Í/./­¬®®±ÃÜß~¸ŽÆ?üøöw¾û½×_óËÏ<ó̳Ïb$»É'xîü…³çx0û³gÎœ9{öâ¥çžáÅ/¿ôÊÍ›_ï}ãûô÷¿mý¨°Ê*«¬²Ê*«¬²ÊªÿÞõÊ×®_áòåŸÿò—¹âäÔÜ‚àWó%YX¤Â*L)ƒ·#œÄ ¬f¹cV…X™ü„?¬&‡½$Xí ‚e·¹\¼aEñ+6î`Š{™”ÕÔTa#B°Ë¡ËætÙš›­­‚_Q;¦`uù¼]åë!VO°BøW^Á ñU?å·ûh*̃½Â<ÈÉÕX{‡‡ûG8ÂB~@ V©°a©ü -#°"£ÐàØXïÐPW/H°\n{ ˜‚Us·²²¬üîGee¤¼úàö­[}ôÁ‡·>ø˜Ù’[·osÖ;–e¤`Õp VCcSc“ :A‚Õâv !!,2B;BŸ0BúþPañ[EéÐ!x5hX¹O÷„À5Þ*†ý¡á*C@ØÃ{œ)Ø -"§(>=Ãq÷ æN÷ J–…áí„ÅÝ…”Ä.ì6-òØy÷ÀlI¶•9ÒJôaé<ûº4lA…bÔI@©·é0uš“rˆLÊAò FIy¥ÅÐm€¦§µTFOgSÙ|v2¯r{5ɾ›ØWÕÔÌüÌüÂ쉯–×Ö·¶íONÏV×Ô~ÿÏþìw¾zñÒ¥/?ó ¤W‰`v)¸:wþ‚ÀVgŸ=s†-ù½çŸ¿üÒKW®^}ýÍ7cѨüýñlýŠ°Ê*«¬²Ê*«¬²ÊªÿÞõî{_gÓo|ó›¯Ü¼ùòÕ«o¼õ64"\Z™š™›œÅ1#¦JÏrG#áÄät~r -%XE Â*¤óÐ?.;1Ó’}C Á‚,¯×ÙÜ\×Øèhnn°Û+kj !E`ݽËË«ª*«k*aÕÖ7`»[›A‚åĬ–¶vwGò+jDBo7L;{ÀEðŠ§¸÷ùÌþA²ŠŽ„\…¦Â!~…)XIJŒ wa! ±1.Â(wŠ,wÈ¿Â;ÖÑ`˜­Ì6ìîèðõ´¶«Áf¯®¯¯¨®¾SQÎÞõ‡e·oݾ ëÃ?øèC@XlF¨°¤‹­|‡K°ª*ªáœÔaVCcS“Íns8A‚ålq¶¸eÏÂò -„EYX½}>ˆsèéìC„ERî¤Àö1?a+Ì6ú ò„+ºÝN’O«­x0;XQm••  ´RèTEVfÍUA<[LÉ$vjD˜Í›ÚÒ> Á•Ê¬²$µâö@Ã$˜Šä -×8iúÉL'5Tê4ÜÉÎtÉMôtÕgb§d‰›w«È!?Å(%XḠ-¦ô’ÐróÎK&JIwØ%ä -‹d‹½“[Iä%ÅTQ¥ŸGÜ'BËCJ~”*”RtP&¾¤æŸ—ª¤‹Ÿ@'´RÁ˜§BŠ˜J¥FXqéT jZ4Q„¤BOÅ†àŠžŠÑT‚,Ž³Ø«€˜ E´\"¬ ÚùQár´br{ O¦èÚI,‹Ì€2¿GÌÅ0ÉŠ¶Ý#QÁH" ÐªÒª@0 -MCðA&äE WlÊ–ÀÇ<ˆ>Ád¦09³¸¼º¹½»ðøøøoµ553¯éÙp4K°uqþÞòÚ&Æ[ Ÿà£½ƒé¹öŽØµ¥»w e±¾ž~L¸xÞÓOØ -®Ø”z CH;8—ѳ nÁ±ÀèxÀ/ÈU.>±öŒÆÀáÈ®< ¼J¦’©l2Mer©L>;tò fœÂ¯§)î\¸·´²ÊõþƒuO›÷'?ýé[o¿ýÒK/ñô*ȵ*ÁV ¶:wîüÙ³gIpué¹ç^¾råêÕkW®]}ïý÷Õ/ÐïÿûÖ¯«¬²Ê*«¬²Ê*«¬ú\7nÞ¼þÊ+/¼øâ/~õ÷™|az–÷"4Åa‹pÎÈÂÂ,Jt'#!faÓ¹‰TŽR°&ÆCáöή&‡£ÙÝêñ‚ËæpÚ\®Ú†C‚…F9Þ‹°²ò.j*ªkÀEXWWÛØX!ÅÝÖÜât{\n!,rÂ" V»ÏçåüŠ›QÕÎA˜P¼„lÈw„Wh!„΃Â<,Kð«þ)Á -‚+,Ô_ÅÆù=l‚Dl!{Š­68ægûé V—ËÓÖätÕƒ‹°®¼ªêÎÝ»C„;ºÁBx‹[}x ¼„À¯8ºSfô"ä)Xu5u u ìL64ÙÑEˆËÅÎ aµs–—g¹w˜ÚBTroò+Œ7Œ€­Æ¡! ®ü¡0¨­Hp%ƒÙ_@3A¸yLsÁ•LeŸ · -ƒJ‘UP¦¯²+Ñ7#,lEö@’]70“—yì¸ÿ¬)’_:®g¤ÔJ0«tÌ,¸:BeDŽ—´ÌS’ê×;£NÉ"Ú%tŠx)yšœ)‰Ÿ5%£¥+'ÍôéT‹Ÿ<^¢Ë*=û2b "†dK",©æ’+î¼HBSæ!Æ*ÄÝ|¦¦ªeÏØ0!ȇ] -ãŠiʆF,UH%W -­âÀ* -‰èA3§B¡ÔɧM†˜Šo…ЉTœX4Sq~—+kFhÍI­°ùf‚Ï“þJtä”=ˆe°Ÿ,šH\OHyÏ]GžÈ³£üa(œ€ž€$¬âÌŠ+¯¡Ø8AöA†y’f¡Ž ˆl'ãÁ¨? £±8ûØ’ÚØÜÙÝ;::zztüÉÁÁã­‡s oE¯›JçfçÀJû{‡ÇÇOŸì=^Y]×ôLÿàHOß@Ww_‡¯‚ÙÁ$Ø—êAnABXÂÂÌÕV£[ìŠ7ô ð*‰…¸E”¨vÈÖÓSØ“)³Ay…™Wð=…ÿÕ¾Å\í°Íù«¿gßqW®^ý½çïìÙ³ç/\ “àIr‚«³gž=s†­©ìW¯² ß|ë­_ýç¿—_—ï½÷žõ›Á*«¬²Ê*«¬²Ê*«þÇ×7¾ùM6ýó?ÿóë7n\¹víæk¯õÍ/.O „…B¬ùSݧg ç, ÂB!6",¤à†¢KêƒÃ#­Ýélóz]-ЂÐÑÜÒhã,"Weå"Ž¼¼œ"°PkTUW_SëÑEhoi±9]N76"ôzÝ8 aG©°¸øª»—Ý=ax{ŸôR»¦¨¼2TXF/Bòõ!¿B;á‚,àW" RÜA‚Å-„Q¢X†#gOC$Ábûo÷ùØq:[[íöºÆÆÊÚZt²7ýX}Hú«[læe¹£‹$Xh®,+G oÎH)XMàÇ$¡Ó üªÙíjõ´ð Áb§%XÝÒE(l; ¾ê†„d¸mŸ`Èð ‚Ú*Dÿר©ì„­d4:’%ÔJ “`Û‚ pC®Š‚S•<ö ÒNQW”gES²ÒŒ‘Ç^ª¶â9¹ÒRQ ¶‚þk0oÂV'’£J”TÚiA岡ž=áõ35ó†‰d$’’•”\è4Ÿ¦„GøK¦<™ w -VRRÍUŸÁÖÂfw!6ãK˜bÒã²Pæäó„äNÜdp'bJ‘„‘vNÏš#Г!Ù€ÏBUšO(ç§Ñª¸`SBÔ$3¦8ŠóXª`T,)ÌJ¬f(¦NaSRFð -W©pp0%Q윖³‡áÛ8‡¤Â -£=0Ìcµ0²•C¸Zç½ùÊü!&e…[ÑSD“x¼[£©Ð˜@ø§%!¤d²·4: ƒOЈ„Â1=ŸžYx°¶ùp÷àà|‚‡ÇOwî--¯æ'&£±$[‡}êÙwÁý;»{»‡G`<~²ô˜m3Qœõwõôuõô«i{ä¤x+HeÁ`v¼ò Ž àÅgr® ½ W~rr ‡#Á0¤]!Í£>ƒìT$_qÏ `+¸Èä29ȼʦ -EP^Mb·Av´l¦²ºú+ï¼sùòKÏ¿ðâ¹óçUfEý9¶:ØêìYJ¸:÷üó/\½víí·ß~ñå—L-¿øÅýèGÖo«¬²Ê*«¬²Ê*«¬úÿ½P‚uãy’`åòÓs aÁ@„ÌJÆaͧ8¼*¬©l¡˜-LfDP¸«»Ûîr¶x<žö¶º†zHÁrb#BT[• ]„l …¦`±u aâ›½Ñ ËÝW[[K[[k»×ÓÑÕÖ ÄW>rB{go/ð+.ÁR‚°úhÚ-’ÛÕw²I‚…vBäÞ?â—¬Ñ`˜†àWÒ@r¬±PºbŠ{ïà4"ìêjik·c|={;•55å•·Ëï|„*¬nüÁmT^}ôæºßf ‰_‰|û -JÁª¬&~U_‡mäÞdw€…°Ù,Á¯°!À¯^±;Êž¾AT^  ƒgpº -R0{$ °˜›¢Â¾j«$@¡„&AT[qÁ™ñ+®¼RTU4#û ê<ŒÛuŽ­Pg…Ì*¡:ÓjªUF`+dVº‰Y™|‚º’»~jðxio¾ÏžÒ/|úæ†×/|Jº”•D*÷ÜÏ~n2•ÔS©¡è2ñÉH,¤(¡>$Ðî?~ †°Ê¯Œõ1iÊP†ÁP¤N%LÄÉèߧ¨§B<„2q(:.tVRs%dW‰qYø¬XâYå…£šê -Œ¢ì*ÈGceBUl}²Ø‡bä †â!@Xø_‹$Xa3¶ -O0℃¡˜¦gŠSs+÷×·wv÷C¼ÕÑÓG»«k›“S³ - G£ñäDajiumûáîîÁñáñÓƒ#ÀVö—Ù -¾î¾Ž®ž.Œ×óA'Á!v…á"Ï~˜¨=̹ëErÍO¹g™: RcSlA†A™v†´+´ bÚU\ÓAs¥òJÏäØHS·Á‰É|2¯Ø÷Ñܽ…{˾îï|ç{Ï¿ð¤Z]º$±Õ… &ÁÁ«³çÏ9‚«‹/B¶Õo<ÿü ¯½þú/~e´üî÷¾gýB°Ê*«¬²Ê*«¬²ÊªÿêÛ؈poçêµël\¹vmxtlîÞ"Á+Ta!¹š6õ%¤Öää>19•›ä*¬L¾Èn+¨T\O ·x<Ј°ÃëhvÕ75:[[l6ž‚…²+5ewp”WVVb#Â*hDˆ)XvhDhw5£Ëãôxˆ_¹Û½/I°|˜âAîЈ°ÒTD¸Ë÷áNk%X˜âNqX2ÈUX2k`T¦¸£‹0,ºÕG„ÅnlÇB‘Hq÷ó¬îOGg³§ÍæboßV]_O*¬Ûåå—¡‘°ìö­²9¼¢!SÜ•F„ Â:vBàœ4Šwg³ÃX¯E¦¸ã9ñB„;»Á„40H¾BÛàØàˆ˜Ý6Bjg6j\ å1+A±¢þ`YwÂ|¹F+Ýù<Ȩâ\‚åSj H­!Ê\´aò¬€YqU<æfÀ`‚ãèèDhx¸©·oYÈ^‘â­l.¡çò“‹Ë«›w÷ŽÁ'¸·¼¾¹3;¿¨§raÀ×ñtvb~qycû!6|rpôôàú >ØØÒôLoÿP{§c« â"äj ¯¸wEžýâ¥à`«¡Q¸Ç®¨IÄz–Qÿ = ‚-í!ÌžA6e/­éi=Å´ö\:›Ïä -Ù<üIajfnaq<úù/~ùÒË/Ÿ9s± £™ h)ˆj«sçÎœ=ûì³gØÌ‹—/_åÆW¿öµ7ÞxC\Ñ7£UVYe•UVYe•UVYõ?Uý›?ú#6½ùê«×oÜxñ¥—~þ«_e'ŠÓs Ósó¤ÂR‚°æ¥‹°I#"Î}rzB´#„ ¬ ÂJçÙýE!‰vøºí.W‹ÛÝîõÖ75’Ê媩«+IÁºƒYîÄjîVV–CâSmM}¤`áVMg“ÓeG V3¦¸·¶·{::Û»|$ÁjG„ÕÑm¸i¨^BäWª˜U7ùq(‹ ±a)Bî"ÃÛ^¸±Æx"V„ó«áñ@ÿÈXÏ4"dGÅŽÓånkr¹êm6lGXKo¿ìî¢X–ÝÆP,¼B¾g诪êê!Ö¾¡¡¾ø6gtÚ]ÍŽ–Vñ«v¯›3²{ÌÞŽðŠÝ?aH2»m[Nü†šÐø¡I$ÌpÉú¶Ê뙼Q‘’Š÷Dÿ ÏcG–5!tVF6»äWZ&+óعæJJ­p&.ÕVÉe[ÅMÀªÄ!øyèé„È*^Ú\ÏÄ âÚ‰Ø(cæ„qOÍž*…Kas¦zX±ã…Íâ«°IF%÷#Ì€q©³2XXp'N“þöÞû;®ìºó]êÄØd34Id7[Ô-[¶’•ÜÖHV°¬Û=o<ÖXV“MD -9Båº÷Ö½u« -9ç@`0çî–æ—÷Özÿ‹ßÙ{Ÿsî¹öò{ëM°ì³×Q­‹ª° ”ðYßïgg³)@Oø4×çÖŽ®Æ¶¶Ú†&LaU„gi #p<<¿"xEüêÌYÜÌ(V––•”•—VУ¿ªÚºÚ@} ±™¯ ÄðU[Gg[¯öðÚ ¯Ø®,ð\áV/J[Il+[õ;ÊÉÀZÙéÖë ŠCÉ+ÁòV -Žç‰­p“àh6X©¶*V«!©·Ê ØŠë­ðSUVÙm@@ù¤åöçø¦lEQ¥æ£x†*“už£dÏÚ>U»[y¶s2>Ù>Õ9¿–BÉ”R²‘G‰)Ò¡Óg•Q0o椟*Å}é9©œ’¢uU{îOdù’m>K©ø©E?I´ì¼M¯¨¶ü:¥”> z?÷œ+@šr2yÀ -á¨ÔÌ•‚­XI}ºA‘*›3%ñ]éò””ÃùÜÉ/\ùdzÇ$*àŒ] ¶b×–C,+n² Y|»AŒ ?Ž… >a¼ßäl -· boQð«f®x 8•¸kzÙt‹äÊrñÈ :Xø¥À•›Åo -ØKhÉÀ•†žàÌÜê…Ë×Ä>Av{c}sõâåñ©Ùlÿ e»Ž›˜Z]»¼¾‰ -¬{ ÀÚ¼}ïúÍÍåóØçÓÑliïê ’Ø*$áUO_á¹RêÉqØ OÀbAöc'š’vÅsepÕì´°3hóÎ`"qrP^±JýC#ãÃcãC#ìŒ öö…ÿÝ~¸sç®_zi,ôa+vË™•³¶Ú½ÄìozëJ¼êƒ/Yÿ=zôèÑ£G=z~Wæ[ßþ»=ùæ›……ú«ÿøÙ/5¾ü»UÖ4aÍbknbvÂ";Y°G@äžJ§;‚Áê@ ±¹¹µ½½¼ª²ª¶–—Ÿ-)9#ûƒhÁ:--X°ˆ"X%ååç*@ä^YSSÔÔ7Ô65K,"„ -a·¸S‹°¶v·cy+„"wîoá+È_ xÁðP, -_¿¢u„}±x8‘Œ$ 8†'r'—»W>rx…0nÚѤŠ'ØïtÁPˆ}J€°ZZk›ªj¡HXZQY\VEÅC;slög?Flõ1q­3g1ŠF;Ï•• VVÓZÆÚº†Ú†& _ñ¿ -Ü<(àU“Wðë$t¹í -·¡¥Ð±CbvÈ8A/oˆg®|z«1»RàºÙÇ=ɕаón WÃ5‚p+9¿âÀjhظ꧞ ¸"`%2WÞ®@©@÷˜Ò¶TÕ6'U¿_Q®Š­ÄýoIŸ­8 Úê··%¬dæJý¸z],æã+C(l›Ê·ÐËD¥òVøea¹žúdnP÷«rªüÜ‹TyÍßæS„TÖ盩䱞Ǧ|=AùfZYÿ—~ÎââtWII©kþ¼“Ulê®Xí'ÊzÜI%BS%ìºÞlW(ª¼UÉU2E¬‰ˆVÚà9+^ ¤TU)Ý~eø‚¼%´Ó2sE",Kø¯,$WP$Dºl ª&vÁ²DÔŠìRÆ·–k­ÂØUÒ€´ôìÞ1”Ö,À#j³R®›ŸZZ¾xõÚÆÖ­»wP]usóöÚåkÓ³‹ƒC£6Ú±†FÆ––W!’…Øêîý‡·îÜ»±±¹ºvehd¼7kníèèêéêîTÕK>öp’+ŠZñ’ û ‰×!v¨¢žPŒG£¹Š ¼Š«ª+Ó1Que:ì‹ul‡wA՞ɹ¹\&‡«û§÷Ž Cap`x4“0LëoÿÿòÖßf/X;¼ª ÇV»÷äïܵk7ÝîßÿÚñÂÂwÞ}O¾ê½ýöÛú¥_=zôèÑ£GžßÝVaáþ’fjz~Z„ <5C)¬Y/…5 EB^!d·²E"¬É©áñ bMôEâ ´`Õµ¶·êëK+*j*kjŠÏû˜/"¤¸ÑR`‘ݸ͹Òâ²²s<‚šúúÚ¦¦ÚƦúæ–z¬6µµç!¬ö.²¸÷¶w÷vt÷p~)¬Y‚_õ…ƒª¿û¯¸ùªW4 -{#T!L„âWR„…+bgG*°¢†ÅžŠ%ØG`4ûLšÛ;Ø'Ì>ÿª K++Q‡‹}±gØa_øÙ"‚x˜C+:[\"“WçÊáªº4ø?¼jimo퀎Ogw/X”…ð*GU»eC,„oCZbv¸Rz‚Y¨ -‚•}@nT -€ƒ¼8!ï,ZDè÷±“Œ]É\ yVöÌe®”¨U.ŸYI%û6ÉyîyEY/“Û¶æ¯_Tç²^OPD¡„$*k{n_(d숃”­ü}ý ø²¢ 'þЬ×ì³ý†s•D ©TΟžÊåEª¶_lûÊ…ëõ·7ûÔ¶úPÆo ’¦©´oµŸé_ê稞›˜¢H•+i•«ýˆ)ù•b¯RŠ~€­’¶«Bc.°¢{|9«4Á+ÞõË$Ñ'ÇMXø›…Ç\ìM+Ǥ"§[”È¢wÇàÙÚí }4Z&(ZÐøKñ&`Æwòb l ﺊ¹Hl•D«•a:X´ÙIšNÒB†PË%z™Îô£ø=kbÚŠ=긹ᑉ¹…åKW®olÞ¹}çÁí;÷ÙÅå+7—ÎŽã6ÃlÿàûI~éêõÍÛwïÞxïÁ£;÷ÞؼµvùÚäô\³úöMÊC™¼J ‚¤²äK—ñ*“ïøÕ›ÍQy„Š÷IgpZåªZuóTáæ>µ¸k—õx[P8©ÄB@Ê\Ñ¢Òĸ›JËCöu¸@¨•0Y§ÐØL'°6È"‚WpËž/?C®¥"%– bžÊ…Ût/àûŽg±\Q1™Ð*ž³Â‹¤‰10¼x+×r[af’c+K‚VšÔôÌüêÅË7Ö·nݾwû΃ͭ»W®ß\Z¹061íft6Û?493wáÒ•›[·ïÞtïÁ#vË./]½>¿´Â~tv÷¶´vt{ºû !HÕã¸Br‡dì`eG1{( -äª/‹Db± ôé ¼Â ™Jš)Ór,øïå ǃ lDáUpz&;@üj`xdxtœÝÃ>fCCóòÓ}¯½Æ^žÐpµ/Ÿ  Wä¶b·ìMvÿþý¯œ8ñãýD¾Æ}ík_Ó/ôzôèÑ£G=zôükš£……‡Ž¼nXöÌÂÒÌüR,$WaM©"¬™yÒ¹OLÏLL{", Xã“Ãc“£SýCÑx¢¾±©¦¶¶­££¾±¡´¼¬¦¡¡²º¦¨¤„G°NŸ– -w:įÎb…°DAXU@u}}@ò«–¶æöv<à-ç"¬ !¬©p§[ίdE…7Âõƒ¡ˆL^¼’ÂP<¡",%…eÓ/¿ -Ârb–3R‘„-Âw¹#Âjlk 47×44Vê*jj+ªªË*«J+*Ï•WÀ[^QŒÌŠ]œ«¨ä«ªjö×UY X}cm5(Aضö®`ØÚ¡ ¥žh<O²Ï0ŽAðó¸ âIÓï‰Ô”[‡¹›]¶û¤Ú¦^Y=±Õ˜B«(s5¢(ÙUl5è5}i+™¹ò˜Õóöælµµ‡ Û¹"¡R;€Â Eæ(Ìžõs•·žO¸Íé9Ye7ŸHU!tò;¬2¹í1*éHÏOù"RÊÎ>µ˜zÞò8Uj[¿Ïò3+ÕIµÝgÅþl_¨@*¯å'TT>EE?ÏIåJ$¥Òª<„ågSOä.RXj‹pŠ„#“#ãÀ¯F'&Ù/,Áîš@ ¡¹¹­½½¬²¢¢¦¦¶±©´¢âlqñ@}„ÞòÓÁ:Í t%gÏ+.++)+£E„Õ5•µµÕz¨Î57š!€Ä-îíÐ"T-X rïéa r‡Ó‡Fw™Ââ"¬nÌ_!ŠÊ.!D°0|¥*°úØom‰$Ue -‹ëÜSN±¸åÄLoöA-1Â~Olö°O²©­½¾¥5ÐØTSßP¨¯¬ TTC‹2¸­*«¬b·å€­jQÕ`_uM}c»“ -mM­í»b}]ÔdŸs(‡Î üò¿¤›ì·EÏvEž+Š]É­‚ãh¸“œJÁVc2yÕ¯\@ÚjHTe=ÐǬ(mÅZn¿× ”b+<*¶J‹…€ª³©Œ×òS2WY¿Û\)ëm_ÛÇëYÕˆe+HJêÍåÇ÷ô‹ÏAªm¢ª”´¯+b+Ú˜WèS‹~ær•‡g°&xtÿÑ“ûžnݽþâ%öÓ˜}ÞP´¹µƒýTìê&·®èpx…™«P”ÒVØÄž`ˆúÈ€­Ñ×[±‰'\%[ŠгÇMËråPæŠv ¦Ò¯ì´âiÏö÷³W…±Iöuµ¶wýò~õÃýèøñÂ_zñå—_Æ‚ûöŠ¨?PÜM=Av[8xðÈÑ£_ùŠ/dõÁè×q=zôèÑ£G=zþuÏ7ÿè›ìöÝ÷Þ;ZPÀ·ßÿþÊêÚÌÂÒ,?àrG„µÈ—Î)]™YºOC -k|j"XBä¬ñÉ”“îìî®®­ilnnë訨®¬¨ªªmh(«¨8[RB÷ÀðŠÝ~Ì .",//«¬¬¬¡V]mCS ©©¾¥¥©µ­ -X`qïè, Wìpå¯ä"¾>ɯDø -úƒAR¸‡_ÎRù",àW„°ÂI#j˜‘$ˆ°¢f*¦ð«¸ø½8fÚøa…b ö …Õ„Õlí 6·w²Ï¼±µ­¾¹¥®©9ÐÔ̾.øÒ›Ùa÷Ô7µ¶ÓÏ\Ea°}ò=aTµÇ\VÂJÁŠ4Œ]Ù|=Ù®¨38œ#§:¦§Èj5:!õV>rEÌj„®U «õÀ<±Õp–4ìÔD±•›p³JC0ׯ”û•ìSλÎ(»ÿÖD[ü¢E®u¾×Ï‘ªsÑô´TÙ<ú”Ke|¤K]áçQ&ñ‡¦\ßB@ù'ë«ï}n­Ï}>¿òSi%7¥À«¼#ØTFFªL¤RêáÏñRUD½T•/m•Ÿ¤â}@^©a*¾Ð6uo! , ª‡”ìµbÑOÅ»ÎãUÏVYiË& O[‰x•ÿ{M4þÒ“DYI%0a´‚÷ƒ‘ÉŽ›Þ£ðaM%pEò«”h/YÊ°'à–@Œ`¡³š€²3(ð«”“…À•-”VœVQÔ -/ ì ¢§ðîÄoN>Ó6LÛfß$#SÓs+çר'xëÎý[w®`pdl2›dß Àš¿°vy}“=þðÁ£'=½ûàñ¥«×§fæÙ·8–„Ÿ6AÀV¸I°»'Ô˱UDn„’ ]DHÌΗ FbÉ0&¯[ñ´Š]a[07¬¤aSæÊLa抰•Ã±|“ºÙ4´û‡GÆØkDOoèlqÉ~ü“÷Þ{çÎ]/¾øÒ®Ý{„Þj¯ W{Po>vöœ;w²§ìÛÏ浇½yêÔßÿÝßÉׯ<Š¥G=zôèÑ£Gž s´ àxaá‘cDZøüòÊìÂ2Q,ÔaA"‹ó«ùÅmEBJaÍŒOOã:ÂéLa¡+šL667W×Ú::››JÊJkë*kkKJK?F‘;´?>s¹¿*9W„-ÂR\DX^]Müª¦®>À‡B«¥ƒG°Z±BØÑÕÓŽ¬vίÐ…[ÙmP¤°‚è¿ês—{O„Þä-BÙ¬„Œ`±5¨H!«1+%|%"XE°ŠÁÑîì郒cW7û„Ù§ÝÜÞA «¡¥Ý6¶¶ã­ˆ–µã×ÕlC‡ŸX“ö™$1v•r&¤\\ì•íOƒ[FÆ®FxøjdLØ«[MôË‚Ò…5™•·=ŸQiµÊ°3ÈWªÕ -Ú‚Ù·ßËY¥i`Æ—ƒrÔ~Ÿ’¹RóNrÓŸZ t¤=ã7±ûUTþ0UÑx÷ln›ÊSH=?p¥®êÛ–¤ò)§¥ê§òÌê*ûâg{Pnýs3”¢w—²)éW÷ª‚2jåzoÊžàöHa(n²rT •@Wèªòë~ù@y§\‰“öš€N×ù¥©-˜'W÷"U–# -}ü͘Iy*"ìBbÌi•).€J¥b– X‚SÅ +f¤¨-È>2x®üÕBê ’Ë »{Ê¥ƒÀ -@–)îä - ƒ´S/%LVPt š€˜°r ÓIìØqÃÆ G®¨O‡>*K²ÏÖ°Ù»³ï ±‰éÅåÕËWollݾuûþÖ­{××7ϯ®MLÎdû‡ìt6;0415½²ºÆî¿}÷Áý‡O>~zÿñÓ›[·ç—3ýƒ±„ì µu;º{°$ê&;O[q·ZÙ¹Ø -2œQp[…#qÄV‰¨°²SOP®¨-7,Ãâ!1î¹Bi˜e»6´ÙmV¶û‡Æ&§3¹ŠÊªŸþÙÏ>øòï=vì…^ܹs×éc÷•¹ÞjÇŽìâÕW÷íÛ¿ÿà¡CÇéƒ÷å«Õ©S§ôJA=zôèÑ£G=zþ Îw¾û]vûþ—¿Ì~³(8qâÛßýî…KWfæ)‚å7ºs#Ö4µ)ˆ….wÙ"šƒu„`ÁŸd¿Ý{ûªjMMí•Õà-¯ml*¯¨„¥{EÁúÇÓ§?:ãñ+BXÀ¯ BX^2ójˆ`ÕuuµµMÍu--­¼U×ÜÁ¡ž®Ö®.ê"ÂêA…{_g¯P`ñ XÜ»x‹úƒ²úàVõ_ –?‚•@v„,èÒoÍü—kþ+v wƵ¸|ôVwîÝøäÁã§?»sï!{ZÿÐHÜ°zÃÑ\`ÑÕÝì A¿8íÁ[Ð[ ·e®ÀÄN%ÁhLÕ[…ñ6ž´[%[E1mŶx®@ە ƮpabWp «Ññ‘±‰ÖöÎ?ÿù¿ÿƒ?üjቓ@¥vîÄž _#Hdz²ï†'°ÃžqàÀï¿~ðàÁ'O®.ÌÈW+½RP=zôèÑ£G=lŽŸ8QPXXxòdkGçÂʪ¨"¿ZXœá, 7bÍÍOSkuî"…‹¡E89:1=0<K--5uÁjji.)-­©¯¯Ô—”•ž)*úˆ"Xį°B(øU);%eåÁÂ}|•µª@]M}C-,"”¬¹jC «n¨v#¿êéëì“ -¬¾®>»ÂÀ!,JaEa ax;¿JôÅ“t‹V«d\XÞFBÙTùU\¤°d«7§ßÍþÄÞ¥ÂÀÓŸgÚ|ìì†æ#®Ø“9¹“¼Aè ~UOÙh»^ag¸ÝÍb• ꪳçW¯j‰‡¨!¨ˆ­ xÈK‚H«ˆ\ ¿’&vWQZ‰Ã›€ª*¥–•Ý|2‘å3JùíëÊ›¹¼{|‰)÷9}@Ç¿¤o»D};³²ÔÊãTy«ý,5OåúíUù5ÀŒ‚­¼ˆ”ØúçÃYy®dÈÊ£X¥èÝ)×úDU^éÏ«*ât±ÐQ…T$¡JûÓSÞ5§R¢ ÈkwâΤgY']•Cëüd0)€•ß¬îH¦Ä9•‚ªLŪÏI!ªB!–x|SXR,|È ÿU*.>Ñ-@d†M™«5­´’³’mAàT$¹‚{,—º„”;†«tÂ@–áÄ“©$e®8Ë"¡¸³>}æÌé¢"àWÅÅg‹ŠÙ£%eÁ*­¨(­¨¬¨®®Â -amS3;õÁj$ V{gKg' AálíêjÃüU{°Eî}¾ðUC ¼B €¬P¤;‘÷ÞhÔǯø- ±E),¹Žݹ¼®‘b¥ÈåA,_ô¡z£q d˜ø’>¥^Òsá'C»ìÙïžì—Mö›f܈$àÏŠÓÞ4a»ÂØ mí¼Î+^ðJ\Œ’]ìÉ\AÚj(ãa«A™¶’™+êªk§:ï÷)•À\JÙЧlëËÉ\“èúùRVuUeE0¿ý·½9˜/žR{jÐõÁ+[AX*žÊ»&¬dûA–ú¾¹OZ”¡Â‚'¡'éTWVzJ¢->Y¾$•/Ue8.¯¦%˜Ê˜žºJ©â…€Tì:mzP‹ÌTòQE®.ÂW|? ²ìUr! W c•ŒJ‚^ÑÑ®È\aïoª×á)ŠTIB‘*‘¹‚¨•x]CQ\Ä’ÂÂÌ•%°ÖM$Kˆ§°é¨vú\^$ï:õ‘_‘‰òWè³rHiE +r[Å“v,‘Jòª !,(Z¨·BlËš¥â†i¦Ò¹þ¡É©Ù••‹W¯Ý¼¹q{óÖÝÍ­;×®ß\Z¹0:>™vûSN&70<3·¸våÚÆÖ;÷=|ôô;Ÿnݹ7¿¸Â>x/0ðpg°§«»/Øb§§¶ -RO­VpBÑD_8ŽÂ.TR²ó5‚òÄ“±¤´²sl¨ -õVȬ|[!Kf;øíq· Â+ÛÍdØW5:Ö?4\UøîwÿøXÁñƒ‡íÙ»w×îÝÀ¬^å>v^i+ -\±yõUX&xä(›co½õEýŠ¬G=zôèÑ£GžvŽŸ8qìøñ7ßz«¥½cùÂEàWa±³ÈY–\Jˆëç¡H83/"X³Ó r§áøäÌàð(E°ªkkÛ;;šZ›‹Ëʪëê«ëêJÊÊ>..† -á™3¿¦E„gÎP‹ðlII.",*+;WQQ^YU¬ª@ ¶¡¡NF°ÚÚšÚÛ›Û:¨WyŽÏ—ž•{•ò k>§ë—õ{«òãUmyútÅ£N9+§çå¬è~ÚÈ·þy„ÊáI…YÉ`•!sVD«ðùx¡XÖ‰e¡P—r¦%ª&+£âØÊñøÿf!cUJæ©’eIle¤¢`a²°?›A›‰ìþ„x&11ÄVx¶vþ&]ù -:ÛQŸî¡À”•ÆU³U6á) `I.³¢ž ;±dŠ]³“$Ã6ᛂýK`ÿíR.4”aÙéLntljañü¥Ë×nÞ¼µ±ugëÖÝë[«.ONÏesƒ);íf&¦fW/‚•ýîý‡÷ÑÊ.Å칡î^¤Üì‡\„»Qˆ× -ó´®BÑx_ˆz‚QdVècáX‚½!·Uœ»­âì(ÝÀ¸a&(pe¦¸áÊä -ÓV&`Ï40+!¹Ê ³?ëg?ÿù±‚‚îÛ¿Ÿ8•t[É’ $W¸bo8xðhAAቯ9ò‡_ýªúbôþûïëWd=zôèÑ£G=zôlŸ?ùþ÷Ùí}ë[GŽÅÖ7.^¾:»¸<ÇÎÒòìâÒœ¬ nÁ~E.÷9ÚEˆëÁ‹'¦œL¶#X ÍMÁ®ªššÒŠŠšú†òêê³%%gÎÂþÁ_Ÿ>ýklz[‹KØ£Åee%Á*«ªªÀE„5uu5 ¦fBXMmíMíÁjï„ä!,aÁ¢ðU'Š°¸¼úƒhÁQŒX;Ø-B¥<ØËýW^‹DXRçˆ_ñãˆD`‰ –…F,qP…b”ËJà=Ç mÔþ.osvÚ¥ú˜ØͶvšúyìŠÎ<£ŠÈ]2+^)%Aú8BÌ.i,b+¹LP-ýñî ¬àÓSjƒ)ÏžÛšò±¯l¾8ݳcIBå~N¼jûî?¿A] Ve¼|TZVþ=€>oUÚ—°²„P·]šRÊó%€’×)!°Áª¬ÁõéD·§r2yO3y†Ê•ºuo  ’°’kE+Pm*UAÛ“®Ë ”—¼²y†Êµd70åðc§ãŠqí \ù³Raɵ€òMù4I¨â€¤D° -¾ƒO‘qŽßƒßS=Óâ,+ ‹äWÔ%”ž«$ï§Á¾4JAõÂWñ¢e:de§xB*G¬„’ «‘«Â4 -q¥Ø?¤t†H©‰'eJ˜Ø™]º¸võÆÍÍÍ­;[·ï­oÜZ»tufv¡pœçNfxd|qåÂõ›ìÁ÷•ýÁ£§÷>aÏŸŠÄ’]PĨ5C°INo¤/ë Ca”V‘8©®HÉNUAöîTÄ´•%á$Lµ$HQ+¨^&ù5.^DÉ• †vÓv¨*h§³ì6ͲOžý øåûÕ»ï}iï« Z>ö½¾žàn\íܵ‹ WûöãÇ Ož<ù曥ç*å+Ñ_þ²~9Ö£G=zôèÑ£GÏÿ›)ÄÖ[o¿ÝÔÚ¶raG°q!ÞÎx^,´`Q‹ gÙ™˜ž™˜šŸÖðøäÄôìàÈXÂ0Ù¬ª©iïìhni9W^V]WW¨+.-=‹‹?:sæ×BÅn?Æ"aQɹ¢’öœ’òò²ÊÊ -¹ˆ°¾!À#X- ˆ°`aŸ°¸¿j ‘_õtöö!Åê¥D°0vÅ‚c -|²<(ûƒ¹òWû_IEù(øZð+Q´•¥„òðÜ&Q… .y¢tà~^Hädqù·UU;‘%²µƒ°œWž¹üW‚YxÐâÏç+ž¶Âz ö=r5 ˜U?á©”¿¬'ñ‘#ƒOÛ -}–ûüuD„ì¬W̯û¹ù„Êö³)UKe稶•ûT•w§©,ïóÞ%ý<õº_]å-þãY,Ω,%Ueyu?_·=lå‹T)©*W­»æs€]yëmE`%¥ëØD%J‚T OH #M -ÃýÛó¤U@ºøC„¤dž -P­T©#R3W1•e™vÔ$ e+¼—š€v”¢†Ôþã,+å…²Uá·©X°¸ö -rY 3.8{!•B7;]§“ÂyEõ@ˆWáí HeðÌU,‘JÀ-ªDÒ&ZE+ª(¹²]Ü»‡I¿4ï &`C_:×?<95·²ºvõúÍMè nlݹru}qiudl‚½ {ÇÜàðìÂâ•ë·îÞ¿ÿðñƒÇO>yvïá“­;÷–WÙçÜÞÙÝìÅM‚áç6Áp=Á8ê­à–°ñ«¸Ùã2mK˜ìrVhhçðŠ€®`¢™"+;Ü:iª -Úi7åÀqÜl&7004R¨ÿðûßßÅ‚¬^åi+ê ªbö]H®vì`~ýõã'N|é½÷vìÚõÖ©SòuçÝ÷´áJ=zôèÑ£G=ÿßæ?üðõ£G - ¿ö¯¯®]ž[ò"X¼Kˆ·3 dÄZ’.÷©Y¾ŽRXÁ ÖÈÄäÈøÔøä´“Íõô… ‚ÕÔØ ÖÔÊ*+j+ªªŠÎ;þ«3¿>}@R¬Ó”Â*.>[r®¨´´¤¬¬´¢²¼º"X5ª@}M,"¬o~ÅXÜÛ:Z;ºd‘°=ˆ-ÂÜB[üz;q÷_i¦¸‹ÖF±?‘Y¬žH´/FBŽ­äE°aqxötî<"¢þb.Z„j:+…‹.,âZ1クˆ Ø´âXGÊ¥e|<•ÎP¿jƒÜ|EÚvv‘¸’€k8Û?$±•Ì\¹˜ãr³ƒÂjÅÃ^9®I÷oTsM)ŸM] _e¶&…k¥üM@¼?—G®òLéyu¿<Ÿ••Và•ò.² ¨r-ŸÛ -"4ùäÊ‹Z¥óDUR‰å€žÿJª[ª\][™ù÷»yn+Ó#WäQâN£¤}]tUfå5“‚hIN•§^‡ißÈE ;EªÀ|žWúC<¥. -Œįœ¸"ó2W¢'È1O[Ñ¿yd¿Ø -ŒJB…7*Èp ™U4ß, “¿/@’\±Î9UB”¡ˆ­@BR*³¢Uƒ”¶¢V’ê~¯âÄ©`¥ ºØ0éMú˜fʵ]èÐÁ\öW -ͤ}‚#c“‹‹«—¯ÜX߸µ¹ugcóöµ7WV×Æ'g2™~Ãr77>5³vùêæí{÷!¶zúŒ]ܾûðòÕëC#ÁžP[G0H>vÁ¬zzÙm¬ÍxT„áðŠ€-dW´R0ŠµAvÈmEäŠûع’˜U’ýgÅ7!m…bv:$¹²1ZÆnÝl?û8ýŸþöðáï¼ü2å¬(j%“W¯vC抮[íܵkÿkŽ=úλïÊ]Ô£G=zôèÑ£GÏÿŸùw?øÁ˯¼râäÉ£o¿ûnm}Ãù‹kP~µ<,kV±f–É…5ÅÖ ¬Ù"œ›Â]„““3³C£cÑd²¹¥µª¦º­££¹­õ\YYU PU(.-‹»$W¯ÎȽ¨èì¹s$Â*.++¯¬*¯ª®¬©­® T×5Ô64Õ577 È"XÂêìjéèlë -vt÷´ùF?vP~…ë!ðŠbWdÁB¢ë»ÃT!äüŠÈf±<„%LìÐø;b™Q$uBO„¥üFÏuÖ*Ô¢7i}¡Üì&Ê_ËËQqOM^ñД¨ -N58,»ô¦¬¼À•‡DÈj ëpŒËØó„T^¿Ïõ9Ï?¯¾÷\{Uj¹²3ÏJÏéfüäJQRK¥ä ¼ˆT^1Ð[ðçz¼ËL{•@SD°=Iu -¹CPš©$ªÙª¬¨Jå*Èk»·ÊçWWWâZÙ(ïWwæI«¼úç*Õ¿4YÖ=œ…ÏFŠ×ð¯Î–ëùEB×MU´Î)V\þÖí?e`Ìàæ7ùo^$¬°M¦DÈеAS!W¦0\­Š&y ²O‰°,.u§ž Ay-›ïþCxGË:R¬tïR$æ¬ r¹³ûq{ (ßA`e³Š%,ÌP˜=Ž±+¶óø– y¤ ýûGY–M,(åd††Çfç×._»¶¾ VöÍ;××7/¬]™™[ì¡üÒàÈØòêÅõÍ[÷>~øäv$½UðòS Zey*F)»àJ«d,o`VÙ (,ë¾`UþÒ@bV¢ -šQß%[Ù²˜6¼5‚ÔûÇDòÊv¦åÚó®ÝB´·<6åu…Ï*.ª‚D\ [Q†P6•H¡ç°¢ÜAÚ¸ÌVü~)‹ŠŒ¢t»ñÀ•ô±'Îâ÷ó'@뀌) Wb5!V ‘þBºçÒ*G¸­`o H×ÉÄÎß´ -\!¼Âx•Åð+ü€\u•¢•‚)‡ÔO°O$ZøiÓ>Á¹ó«k×®ollÝÙܺssãÖÚåkó +Ã#Àö­6<·¸tm}ãÎý‡ž<{ôôÓGO>a×ë›·Ø;²ÜÑÕÝÒÞì õô -±•è ÂRº`·¬ÀgEVv¤UÐ Œpp †+¼&f>vvË£Vœã[AÏŽðŠ}’T´lг³OÙ´xÒhhjùÑzààAöÒÀ«‚²'¸g¯çfß½g×.άvB§p÷k/ü½ßÿŠ|eQ)–=zôèÑ£G=zôü™#G¾ñæ›Áªª©]½ten ÃWò,b#XÜèŽ º„³Þ. hNC‹pjbzfxtlåѤœŒ]©&+UxžWÓÛ^Ù“Bx¯m*%¬•Ûf\ÏñL”,¦}+u‡ ‡¤\ÙàSüTêî?WWÒ²îú‚>Z…”)%6 úJŽ‚³Ø¾´¦”%€€žø“éN˜J…WªŠ2T^CPü#Iò®ÜˆÕ?µâÁªDŠã,5XåY­R\c%Ó€^ÈJ",^úã°ˆîä+uç&]‰¬¬ÐÒ=œeY2[#ù›Ákªi+øö‰œ\á!º¥ª Àb(cgŸdASJ&©’ؤ& •ù5¿MÓê@ÒXÅV4nÁö@ö‘ñDã&P,úøȯ̔k¢›÷ "¶‚ûMƒý'ÌŽO/.ç=ÁÍ;ë7·®\½±¸¼:>1“ɤœ »œž[»rýÖÝûž<}ôìÓGO?½÷ðñÍ­Û/]ëé‹´´utv÷ªJv¨ -¼Š Þ -넪[Å‘h’dìш­¤ÛŠ2WQ\)HmA -_¿‚n =‡2W¼$ˆQ+:€­ØwœãFâ‰Ööοû¯¿ŠÅaGXò9žzÝIK„e,Ô#Þ%Vr(jq“åúòMì²(ø'T¦÷¦—°²dC¯ääÊfuo9 -  xŨÄw@X~feq6•ä÷ ÝBx•0’‰8­Œó¨•rKUÁ$ß'(h•-V’ÕŠ¾K3Z‰ÑvÅŠòü•©*Ó6xO0KbvøÛf'I+iÙN:7<21·°tñÒÕ7·nnÞfçêuÐ[MÍÌ÷Œ°wIgúGÇ'Ï_XÛغsÿÑÓÇÏ>}ò쳇Ÿmݾ{éÊuö4ö¡ZÚ;Û:‚À©ú@fÕÝæ>öPT®ÈÇä -ºÉ0a«(¤­Ø ·leÅâ¼*åmA±OÐð¬ì”¶‚¨•6Sp,;•F³nn€ý¬ˆÆ“í]•|íëßxù•W¾ð…/PàÊÃV¢*(— îÜ Q+ö?öЃOœ<ù­oÛ{Ñ›õèÑ£G=zôèÑó?s¾÷½ï±[ö›ÈÉ7Þ8rìØßy§¢ªúâå«óJ‹.$Â’:w:Ss´‹pžøºÜ§‰_ Ž%L«¹ ¶¶··´µ•UVb°î\yyQIÉÇg‹>:sæ#ÑDÖYjR -‹¢ÈÖA«¶©©øU[{û°Ð"‹»_uv÷t¢ Eº¼.÷îp-X!ô_Å(%Vß6–Õ«„¯Ô¥„ÁÂ_Òù­ÄRá•àWD$ÄŽ9A¼Å|ž¼~•C~…ýÁ¼–›óêùGQ²Kr¥º­RÙü¥êª¾”»Mlõ<«}¶yeÃÔsõS -ÂÊC^rÁ"/²2ÓÏÙý'VF&¬Dt*«J«”H•Ï[¥,ôc(‰ª€(º>×:‰ª¶× ‘­’Í>S]¨ÄêžÇ²ò­VIÇõ‹ªÜ¤·@ÐU¥ët !`—öu5à÷r%îQVŽÜ÷-°1a%tëù>+BR)e·¦ Tä]G*Ið•šbæÅî‰ÄpÜ z OdÉý› xfÜËn‘‹ïþ#ŠÅa”_ÑÎA2_q¿:¤¤È¾Ž´ -ß7‘´)a‰a‘D*3áN¬%&°ohQOÐ…´x¢°v—r2ýƒ#Ó3óм±±±y{cóεõÕ‹Wff—‡F7çf†FÆ–Ï_¿¹y÷áãGO?}òÉo?ûìν‡W®®Ï-,;™\Ww_K{¬ì ÷ô†€Võ­`•‚À¬â!Iy§¼ûÓ -JûÐSj[\jû®@ÊPYÔ"Tð”o àNê*À¦§L…P)í?©ò¯®%£V®—òV<—%ÈB~ex ãz:Oºþ9ǦÌÊVÿ»‹x•ÍÙÏY!Þ]B¡GUSž¶Jy'Á‹iIGã~ÉI«¼& ÈÊ倨·RË€)[‰™”§Š"=Åi•¥º­8ª"~«ÀVt˾5à Úâ÷pÞEþ+ _‘Ø*…dÉGq[Yé*À5éªø~@H[º -yáÃBÎÊü -bK`ÓÂÚ Ÿ³Ã±]´EÁG0mö­3861³´¼zåêúúÆ­››·oÜØ\[»:;·442î²ï2ö-74:3¿xùêÛ÷{úéo?ûtãÖŕաщ„‘êö¶vƒ=!ÏpòÄìá(­XEâ`²Šq±# -Ÿ-VÑÐ_ Ö)-ÆÞä=AC•Kz+vMn+vJg2ýƒC£†åTV×þõßüí׿ñÍ}û÷á…^Ù±ƒÒV»Yíå›eOpç®;@ʾ$Xûö¿öÚëGŽ¼¯ ª÷ß_¿hêÑ£G=zôèÑ£çïœzë­Œ`ýè'?[^]„µ¼¼€·Äš]’kifuXóKš›‡33?%-Xˆ°Æ§fÙ¯Q=¡pm}}]CCGWgM} ´²²#XEçΪ**ú5!, b ~U\,¨–J V-ŠÜÑ‚hn¦aS[[sG(°:…Å=Ø ‹{ ?Ø ,ºíƒ"!ñ«P$æþv¾0ïåi«¸/…÷ùÛñž$܉‹7 -ñBÖ é7ý˜’Â"1Qž¶Ýs1 j䈢Ÿèýõ#˜¢œÕ€g ˆG}>vú¶\íGµDWÙýçz¸É[í'}S™m½?Uùò=!lJu[ù‘«ŒOl•–kþò›€rQ`Þ@Ëñ´í¢Á—Žt^´òJ‚aya*øƒ µ ·70’4„M]‰WT„HÝKZâTIï9ˆ°ð9¬¢‚bEðd"WRÕÎÍZȯÄbAQäB›\UÂge reEEÎ -€Òª(³ÓV>3‘bvÓVì?û d_2{È°möÝ52>3»°záÒµë7oÞº¹qëêõõ••‹ã3ÙþÁ´›e·ã“3+ÖÖ7oÝøøÉ'Ÿ=ýô·Ï>ý-»¾°vutbÊ´Ó=¡H{g7ï "°B±U¬/Å’`,Q¶ŠàÇVˆª" ^`´ þê”´U - 0+‚W(ìò5X)…kÝ\ÿÐH¶¨¹µýïþë/¿ó½ïž8ñÒË/³ƒ+Eoµ{Ï®=P¤}‚;vîd‡Ý¿oÿ~v:LFw9º*¨G=zôèÑ£Gžÿíó“Ÿþ„Ý~íþðäo-8VxòD ¾áÂåËó"y5¿¼"¯EPF°d -‹Š„sˆ°¦'¦gÆ&§Ç&gF'&“Vª¥½½º¶†Ý¶v´WTWVÖÖÖЂ…ë×¢BxZV‹‹‹JJ@„UVv®¢,XUÕ55ÕºjXD«¡¥•¦Öv¬Â.Bnqǃ-žÎÞ>Laõ*ÂßBØÇùU/æ¯üåÁø¶–z"Ââ‰,ƒøU8K¨­ó,X€&ˆ~(¶pG)oýŸÌ_IB¥¹ÕÊá>ö~Ç+ ~Ž]É\I`åKIåeŸ¼¼‡Z¾§‘=ãóSI•r3V^þ*í%¬TÙ—´¯s„%÷:@©¡¬m‰©¬Ú -4yÅ/Ë/ίŒ|„Å]UŸs‘É_¨4Qu%·z­@’¨'…ÀŠó+åðn Ç¬D°Š»Ö)v•V%ix§+ŠN‰€²(OÌðJïºz+¶5Â’`ŠÚ"yÁ*¢RH¨ø†Mµ(¯ã^Ô -SXàEµACÆ®„犛ÛQ~eQU0‚‹zì$0††vKT²x0nqŸ¹Œ=nFbF8Šëùb¤Š2i}a‚z‚X4Øß6”AÅîéžœf?ÕÖ®\]'1ûµ«ÈÊ>丹t¦dlrqeôV÷=~öé³Oûì³ß² öÌÉ™¹T:‰'»ºûÚ:!pE;½ƒzv[á -øÐ*n¸ŠûôV±¤)ÒV^C0nòM‚ ™³J¥%¹ÊãW–C=ÁÁ¡ÑqöÁÿÛ¯þñ»ßûã·ßywßþ×^xñ…»vå-$·ÕîÝ{ $¸k×+¯ì`oìÛ·oÿþý,(,üï~U¾:?þÞ{ïéWI=zôèÑ£G=zôü‹š7Þ|£ ðøÁÇú³Ÿ ŽŒ.akayE",2ºC‘Z„‹\ç>3-Br¹OÏNLÏŒ“È}rjjf6;0ØŽjëë:»:ù"††Êššâ²²‹‹=‹;ò+¾ˆ°¸ølqIQE°*Ê°EX€VS ¹"X­mÍí-¤Àêìj â ò«îžönÏ‚Å#X}¡`(‚þ«0çWQ¿RZ„Û±•¸ˆ¢ÿJ܉ù+C¦°¨K…Ä€{‡þ -¡,¦ «Âø(pZ¨¿ñ'G…ä*–LEdm=-f`4Ë[üTJ-R²Ã»@Îâ,AœR¡áÊB7”‰!«d$jPÚ -cW&’.‹z‚ž•ýu%á½’†í¸¹áщ¹ù¥ ._»~s}cëÆÍ­KW®/.­ŽŒM¥Ýþ”ëÙ¯µ+׶îÜðä`+ \=xütõâålÿPvZ}˜°ø&AJ£P„ØU -‰†¬,´²³[ÛeŸÔÈÈødskû¿ÿ‹¿|ïKï+(ص{ÏŽ;¨'ˆ›¼Ú½K‚ˆ­vî|eÇö”×^;pà Ìñ'ÿà«_“¯'O¾¡_õèÑ£G=zôèÑó/Nœ³°L-Âé9paq„5;?9=+#Xìšýz؉êõõ]Á`]}}yUUMÜ;w+„¿>}šà;ìž3g!‚,âWdÁª®†E„õõ5õõ¦¦º¦fR`5µ¶C«ÃCX˜¿ê¥ -!y,XÝþýƒBáÏs^= ¡LdÅ=‹{(¡ŠÜU—{ -[„i±Î•ü*¯èÁ*89ª²’YÑò=SF­\ßDZ¶¹Öy\*­*Ó3¾kU¥ѺW3Ìø«…jŒJÑ[ùöÊ•2U%ÿ¸ÏQ©«tKX­Ô 'ªòn]Ó»ßUÊ€µ$hæ—3²hzä*íõ½x•KE?ƒé?¢ËMìŠ=I%Å6@u- ¼–Iû:R,;Æ!•Cÿfü2+[ZÙ•ûù²O±î­óTU”•@ W ÿº@”´KxæØJêÙãÂÎ`8n„ÅÜÇ÷B<¥Ú®¢¸ -à’Œ`=žW"mEb+JXÉõ@x3n…£ÉH pV(šÄë¤Ì_ÅQên"ÞA½U:Ž°+ž´L+Ý?82=³¸²ºvåÚúõ­õ›·®^»¹rþâøäL&7˜²3™ìÀÄÔì…KW6nݽÿèÉ“O>{ö`«'Ï>]ß¼=2>7¬žP´»/ì w÷¡Þ* Ø -€w[¡Ò -W‰°8²E­€\QIÐUA¢U´FP®x=Ðb_o’Œc„i"WŽ›Íä†G'Ø›¿úèôïå+GŽÛÿÚ» X>v™¹Ú-¬ìb™à+˜¸zuß¾ƒ‡>üúë¯Q•VÇ Oè—?=zôèÑ£G=zôüNÌŸýìgìöÿþ¿þÏÂ'Ž8t°=ؽraMD°–e‹ß’Ë}+„¿â",Á¯æ&±H8¬ÙÑÉiö+E°ZÚ[[;Úa!$©À‚u¶¸,X§Oc°è4aÚ½¨¤¤Â*­¬¬¨®‚E„@-XÜ_Õ577¶¶6)‹‹{7_AØÛ×ÉwR‹§°T~EmÁÞXl›óJ½Hø †ÐìT! 'ůÿ"‚Gä¯ ‡¬´²Ao{+ëð‚2%Åì9µi˜ç¶J¹~xåå¯2)…;¥ü¾t™³J¹ÊÊ?N±2"¸•QÖÿù ˜çWW\U–R4¼U€®åÕ•t–H£Yb-£º(P†¬<ú”ö!,_P[‰Î 仼-R¡k9¶âí?qA÷;Ä©5|%Üì®l&SžØ*™â¥¿|HÅ…WBi[)dåðz©YI6%óWpmZÅì)UºÆuŠ`IBå]ÈkN®Dû/€ÅãZ^ -ÙT2*PORÅEþJð+‰°è ´a0‚½?Ú0ȱUÎâÅ@¨ûa°Š¶zÞuÐ[¼Šq%{8j ³Â´UÜäQ®ôAoÅþµØdeOA®)n&ûv˜˜œ]Z^½|õôoÞºv}cõÂåiÐ[ ƒ0Êv‡GÆ—Ï_¼±qëþÃ'Ðüì7O?ûí“O>»óàÑÜÒŠa9ÁÞPO_´»7LVvÈY…``¹­¢|“`Hæ¬b”³JDâ öËM\$c‡/˜‘+•_ÁFEX4É÷ š©4Ø“´*…™+:v:›î©olþöw¾óú‘#¯8°gï^ÀV{=f%K‚»°$è®öî9pðà‘£Ç:|ìøñïÿðò'ÿ©S§ôËŸ=zôèÑ£G=z~çÔ[o/,„E„?ýéðèØòù ²E¸°|^°,žÂ Ö —¥Î[„³th!»'78Ä~ 44Ô54tƒµuueµ¸ˆ°¤´ô㢢Ξ¥ü ¹‹"Xˆ°J+*ÊÁ‚U¬º†šúúÚ¦¦zXDØÒØÚÚØÖ.,îA¹sVogU! -¬P¸³—§°DyÐCX´…-%¤üUï6xEBÚB(åWì–GYPBÆŽa;Ln!ä±aˆüP˜ÊöZ„2vÕ/âXȵ²œqÉ'§2ýüJm࢔”"˜ÊwU©ìËÌkºê–Àm6ue"r‰Gá½µèá)/”ådç•+pS&O±¾íQª -údì=¹~7»ÀSj[Ðvó;€Žr-ÿK¥|ÿÕd¶ŠZ„Â[•N¦|‘*~¸ÀŠ Ø%³¢À‡Tt§A’+[ YÙ"UE}@ÂV\l¥’+Ïme•ºÚ ô°™Ø-z(Ì €†Ð[™ô&¸Å°¬BÀdÄÎA¬ ÂCI¸Â[èÂ@C`+Ës¶“¤=a’˜–Æ ÂÂÐ* T€ª A¥Y¤ ~3B5 ‚’2,'…ÿÌ m…ØŠ{#“›œ_X¾¸våúúÆúÍ[××·Ö._[˜_·Ù¿1‹}3 Í-,_»±q÷ZÙ)mõÉgŸ<[»|=Ó?ì uõôõ„¢ÁÞpo(bßûaP²÷E⽑h_à-Œ`Œ]°?>=ŒZáÞCP²G| ¸ 3!Â?-¸¶=fe§ÉÍnÂ?<‡”ìvÚ#WélÿàH$žøË¿úʼn“'!eµ÷Ué¶B„µ‡¯TÉÕÎ]; pµsßþýG+øûÄž`,a˜©ôÀÀÈôìÂê…ËW®Ý\_ߺ±¾uù꥕ cãSŽ›c?vœtvbjvíÊõÛ÷>zúÉ“O?#+û£§Ÿnܺ;2>Õ‰w{º{ý}´@0Ê}ìÑD_XTcPdÏ cÚ*ǃ±+Äz úÒâI2}ñ‚t›”9+ÞLË‚´F¬VpḎ›µ1påæÒ™Üé3gï÷¿òâ‹/îBZ%ÓV>7;.ô®öî=xèPÁñÂS§NíØ·ïý÷ß—?çO¾ñ¦~±Ó£G=zôèÑ£GÏïúüüç?g·o}ñ‹Ç 9òýü`d|rùüê"ò«E _-r~E:,u#!Š°æØ/¿—ûØÔôäÌ\ÿÐp( Ôƒ«3 4Ô—VTÔ44VTU—–~\\|†üígÏžVE°JKÏÁ"ÂʲJ°¸ó-„ 5X$‘{[«€WP!ä"¬`7寺H䮈°Ø‘þvvÔmƒÁâ),ygL eI~G V½î†Ü?N˜^……)ÔIêÚ»´—¿ò²RY¯l¬<#–í9²rž°=ó92vŸçÊ'¿òöz¡)ßÓ,•ÊæÅ«|<ÊÙæ`÷ï -¤§Už¥*£@GýÏqežÊàNu¹1ÐWD»_)´ -– ¦üV+KÑ­Ë`•X(LVâM¬R1Ó·7ÒVœYYÒv%oeìÊŠñð -ÿ-yÁ¨’ªâ™+ÃäÆ*L=yêu¡açXUñ9œb±ç„bI ¬¨*ˆ÷ðE„¡h‚žá‘-j 1ƒ€WÀp¬Hœ›ÛA]…z+IŸh{`”®LRZÏ*†Ø*‚\ùÝÅä{f€OÚ´AÌnÒ>Alûæ{ÕòÊÅK—¯ßXß¼qsëêµ›ç/\šœšËæ†L˱Ré¡Ñ±•Õµ­Û÷>ýäÙ§¿ùä³ß>ýì7Ÿ}rçþÃ¥•Õ¤i·uyC01»^Å1j!«YÙq×!¾iHrEd‡"z(&’)éfW— ¢ÛJúØÑm…8ŽÈ]Ø鬓βÛt¶¿#Øóý÷ƒ={÷¾üÊ+*¶R™¤­vÉÀÕÎW^ÙÁ®÷¿öZÁñÂwß{OþT× A=zôèÑ£G=zôü+ž‚ÂBvöîÛ×/ŠüÕ"ž…_‘ Š„K²Hðjf@‰Ü'¦Aä>:÷ËI·uvÖm¥Š«¤„:ƒr !ñ«³ÅÅì¡âÒÒâ²²sÞ"ÂÚªÚT›hÁjhmknë „%øUw[°»Z„<‚ÕE.,_…‚¾Š*ûeIPÂ+¯H¨Ò­íGVÙ-ù¯ÂÂ>DYš¸×1~ÅuO=q±•°] [;uó’ÚR›€JÑ/¡—­r³æóÒSy^w‰ª¤ØÊð‡©¬ôóïÏt†‡­ÒrE oW _®žDgõç«’}re¼Ê·0•&ºE¢u¸ÇcV¸ -_È5V¨&;"åÞÀ¤•ŽKle©9+ÁJ'D+ÿ‡{¥ÆJ[ù剭¼‚6¯ -ú¢úÛ \y+jŠ®Ÿ•É(¼'ŒŠ¨Aªˆ(BnPŒ¡Aö&~ö齇/_»Ñ?4ÒÕÓ×ÞÕ Àª/ÚËMì RZ‘žÞ$rE‹¡'ˆmAê ’’\ñ ”Yaæ*•4²²óc9\ÌŽk 2W–íò´¤3¶›qÜ -¯ÜX"ù·ÿù¿+(xá…wìÜ•G®öìÙ»½'ˆUÁ{_}õÈÑ£§Þò‚êµ=zôèÑ£G=zôüë›_üâìö÷Þ=~¢ðȱcßýðà \âµÈùÕ -»]Zñê„Ò…,/…µ8åE°Pä>=393/"X uõ ]=Ýu õçÊ˹«¬ìlqñ´`±ÃYU1‚%,îåUÕÐ"¬©­®#~ÕT×ÒÒÀ ,nq§]„íÝÐ"ÄÛžÎ^HaaòªæíÜælÏ“_I¨•¯pÇðUB _¿2„ÂùB©ZRðN6/ÅCV -\Éþ ÝŶ ÛóEëžM]‰])9+?¿ÊK[eýÙ*ì:Ùçq*¹(PyH¾©˜¯¶ã,S1\I•ôº~¿´J=D·”& 0Y©’Pñ$ñ+„Ty9B`Å•V©’V:ÏÁ.öòí$³ò¬V<_Ü)î1+p³³G£žÌJMXYRÃ%Á$*Y´HºŽwzi+¬ŠU€ò$°©Ê›}f˜{®L³XbW À+rµ!­J`73E¸HlÅ÷ Ά w¹‹n 9¯OÅya'¯ Ð—’i«·¯‘¨q–ÅÓVáD(BÀÊ#¿‚8SÌ$le€Ã{‚ì¯+iÁþ¾8p«ÁáÑÙù¥ó«kW®®_¿±qíÆÆÚ¥k K«£ãSn¦ß°'“›˜ž½|õú½ž~úÙ§¿ùïì<ùä³ûßØÜb?ŽØŸÒÖÑÕÕÝKv.fÄzC¸R0 …¹˜ãU¨dÇ[¾R¾@b“`ŠÆ1pe(2v -\±k[Y$¶â%A¾L0McU=Ê>ZqiÙ7þè[/½ôÒ‹/½´[T[qx’+Ü'¸ ÅìPܱƒÝƒ=ÁãßýÎ÷èøñ·ß~[¿éÑ£G=zôèÑ£çßÎ?q‚öKS(]@fµ¸² -)¬<2‹¥¬#œ¡Ö¢ØE8·€.¬ÙÉ©™ v¦Á‚•J»Áªkíhïèì,­(¯©««©E¬Óèo§üD°ŠŠ>..þX ¬¼VmCcmSS ùÿaï=¼äºÎ+_‘"Ñ "6r)J²¨h›–FšÙY¶¥ÑÈ~c[²dû‰$:çœCåtoåØ9ç™3 90ØïOy÷û¾sÎ=·Êš÷ìÛ:›gÕº]]èÜÅÕ{íýÛÍm]Ý´Bhœ®>PÜiˆ#X½N§qAð+ÁÂüó¯ÞŽA,æhY"X²g•Åo§äöY…˜B`,¿øíd‰˜¥6Ùð‘ðé"^EmA^$d¶•\Œ¥ _¥ä† Õô"PÛûãH«´x­dj¥eÊz¶%õ€…–l+kP´Sræ*Ë°bÇ–…peB®äõÀ¤X”_…³€æc8½*ŠI„ö(+¢O%'¯:·õˆ °B#Ëê_Ei.˃ḹhYE¤x•5pÅFv8*G­È§âV„ÃØ#&jƒðcFôuž˜’aìȶò`ÔÊx<°Ðuhò ySÐrSeí)Ì_…=HJ‡_UÙ¼ Æ\2?ßÄÅ=hú5A¾ŠøЪÂxÞxÔŠ|*xwdX…Ü~³‡°„ÓÃq´­ÆWm+ðˆºžŸœY^ÝÜÚ¹xñÒ+.¾´}îâòÊúÄäl¦(Š´óáщÕíW_ëý+×®^¿yíÆ­«×o¼óÞ—_~mym#OõÚœ]=6^Ä%A YåàµF‡Ë³¼¶¾¸²Š.Ö*Y–EÂåeâbÈÎÌüR°8kjfrf"X‡°765AËf«ª©IA¢`UTœ•#XÅÅà_!ņy«®º®®¦¾†¡BØÞÑÚ ,AÁb,;Ú!Õç"„»‹úƒv?«?ÈÉíx-âXxí&ÿêa,Áò(Û4¯(?C‘›˜ÔD'Gr“¬ÎÃ[Q -+žÎˆ´U4™mde‘ÛÍéÀ(îR›/™ Š?i~0g·®²ü++ØJ$©­V¦m•°‚ÖSYþU'¯„…%^¤l•iUEÙª#ÃUÅÃ*”xVzŒ±ª¤ÇXK‚Ñg°K'Ì ía‹O%V¢Èw±ÈŽ”°"Û -}-°²ÀØCaÓ¿ -Š%AFhe@_<«°\™þ•ÆWT¤x•½,²³Ð˜¢ž`CÈðŠéå“ÒVؘÃ;„´ÒB¼†ü^ ä9+ ±»}´Ü§¹!vü(h ba­¡ˆ´¦­4„h´0â­2CÃã³sK°'xîÒù‹/Ÿ»ð’q=3·842œ¨X230<=»°sþÒ›o¿wåÚÍk7o_¿yçʵ¯¾ñÖÆöù‰©Ù`8ÖÕcïís8=~· +0¯¸sE AŒ~‰jEc‚ˆØ - ¶ÚV,mÅǑdžx•qM9+AeÇyÔ*Nž8ld[qzpH …;ºz^x±ø¾ýO°9ÿØc»kµwÏž½–1AB²ïÞÎÕn b=±ÿþ#G´n*çJIIIIIIIIIII)K4D¸ÿàÁŽîžµõ É¿B Ët±h—¦°¸‹5=·8=K,÷yÁŠ%S½vG]CCwo¯Íᨪ©©ihhhm5. EXVú¼4Ax¶´”(X%eÐ"Š{ °‚ÕC„Í-­roéè «»§£)X6[¶{®‡ #X´Bè1nl‚0 ¯tæ\™,“…åfC𮳠-!ϱŠ»ÔŒ -nŸ·3SX‚:þ•LÁâ'ú@…0,2WfgÐŒ`ÉþQ°$Ã*ùT»3m YÉÝ@k…0‘”'ƒô¹H+«Jy*Ó¶Êv±L/+ƺ,C…ómà8ŤÀU”ì 6ˆ_äPŒSÙ#Ò±n -“Š!Ù#Yž;fÔ*ÕÂq³('¬Xà*Âm«ˆ¯b¼@Pz1ÈJ‚ŒjÅî ÑP Ç[±xzV¬(UdXnBVœg%*hLéÜÅ·@êT™TøoÑ´¡€V˜jƒÄ`‡å×™» £aÅ«ˆÌ°b0+8Æ›õHJwAÒIs{1y僌“í,ŒôEÑóÁÈ£²ƒqŽ&ÒýCã3 ‹«[çvÎ_:wþòæöùÅe ²§Ò±„—ÆƧVÖ6^~õuÀ²ß¼uãÖ·î~põÚÅË/ÏÎ/¥†Œµ§ÏÑG`vŸ†Î•F»ìà’ ËYᆠÎ&­Fˆxò¬À°bK‚Æ6Á­"˜ FâtÁ0ìÆŽ†§²§2™Á¡ÁáQ·×_V^ùãŸüôw¾òlNnî#>š»{÷Þ}û²ÙV» o«]99Ƶñ˜}ûö𬠅ܪ ÈYyxC.0…Ε‹…à# Û©æ a[ï]7^NöNÌÍ/¯mìlï\<áòö¹K+«“³éþ¡X<Of†GÇ—×.¾ôÊÛï]ùðúÍ7o߸u÷Úõ[¯¾ñ–ñl30——E­hRÐ{‚>öIé>±$¨‡˜ß—ß2À[·z0Jþ¦­â!µ‚ AÌY^ž—“ȶ"ó* '™JõÔ„ñ€º†ÆŸüô/¾ù­o>|äÑÏ~×®]2á -ܪ=OPæŠxì999¹¹»ìÛoèÀ±ãÇÏ<õ”x*>yJÙ•”””””””””””þyæ>z¤¹½}ck,¬åµ%ad×]b¹c…Z„s‹pfæÉÂZ˜š™#ûÔìüÄô¬ñw_Í^×ØØÝÛkw:kêj«ëZ ‚UZQQRVv¶¸øÞ4Aî8DXRQQQ]SYS[UˆZÛLÿª³»½»§³§¯³+„HÁ–#XHq·áþ ÃësaÐogEB‘¯L.–åHåAs‹ÐÍ÷¹³þã2I‹9I¬‡€°R–iB+¤=ɳ[-©¤…Ù²øTÉJ^ Œ[*ÙªzØý ZÅóTÉG¬‡ØÒbÒ2(]HÐuË1ƒjV3*(q«dçÊ YEâZÄš¼b†UL°„7¯È°Š›Ý@Ët ŸdT+K7¥ª¬–À°Ël+, Òª 3¯|A3^åC»Éü×C`eZX”³æÝãÓxþŠ^ËâX,…EÔtÉ°‚ÙAe¨H¦–%æ«RÈÊ#Z¶ò³ÌÙV.O€ŽqípûÐ8B:¦¶°s±¥ ñ57¾øAÑxjpxljf~÷ÏiûÜ¥Õµ­é™…ÁÑ86ï†Fæ–w.\zã­w¯\»qýæ·ïݸuç½+W×6¶‡G'Œ7ëöúì.‡Ë «(‚aÅfÙ§aÃQÇÏ–…gEl+YaCP†|”ÂWÔ Exæ -¬Â³Šð´xVÉ´q¢ø'R™þáÑÁ‘±ž>Çÿü«¿ùÝßûý“'Oåää<öØc»‘¸Îoò1Ap®rPÀ¶Ú¿ÿÀƒy‡ž<ÙmëϽ§”s¥¤¤¤¤¤¤¤¤¤¤¤ôèÇ?þ±qûÜ·ŸƒVQÑSÏÇ÷…$¯ - -Ã*&ÁÛå„’…•´®~f°Šãª²CSÜŠ™÷FP¶§’RûOÌ&²Ú‚æ> iL™èu À*b†¬BVÛŠì,íÁ2 Õ­'*BÝÀ¸ìSYì3a¥Éõ@”±2 ´hã,y%mòæs…ÃyœÁ1ÑUº`°Ó I÷cÚ*`²­] -\…eU:‡Yé¼BtûqÑ®á~»òòà‹f™ñ*Óž‡ÞY[^ˆFù€ Žôuñ؉jåDt¹‚7¨AñVñ`$¡£„–‚ž`,Ñ?0<15»´²¾¹u~çü¥s—66ÏÍÍ/•=žŽD“©ÌàôìüæÎù×Þxûý+׮݀´ÕÛw?¼qëüÅ—F'¦ÃÑ„O :\^»Óë‚w -{‚ØRdˆx–°/Ê\é¯B°•ñá!áJŒ RÚ -¢V4&(‚¢0‰§È°Š˜¶3¯b‰tf`ˆW¿záì|û;gžzzÿ=þxNîî,°E­è–z‚¹¹¹{÷í;˜——wèбãÇŸúÂÓòsï“Và•’’’’’’’’’’’’Òo¢SO>™Ÿ_p9³¶¹ýÊëo¾÷Á‡Þ¸E¶Õõ[wÞ|ç=ã $Ozß5ßæð8=>°­ð×ÐC"ìéëuy\5õuÕuµMííÕuue••¥åå/b‹ðlII µËÊŒ‹²°*«*ª««ä^_ÓÐP×ÔÔÐÚJ ÷–ŽÎö®žöînŠ`Ñé¶Û{λ“W %í 4ÕþØ«ìÇßåÑBn)‚%ç¯0ÿ×XþJÔëÈP’î °²°Wt-e®x‹yVÒ¶ HXYêb+^ ÿÊÚû³Þ™jƒÂÔâ+üM…dG+*%¯Tc»z”Õuq¿Ä³2V–¨ULXU"I%Å«â̤ŠÄ,©*³ hq´X¤ -ÃTâñdU1·*l^ ΕøV_=(å¬ØEˆÝbO6éBr«X¥0DC{VVütJ[á nzYÐàCºšŸ¹Xäk‘7…¶ Ôù=0;(e±BìaƳ­Bèó„e¡¯#íŽ×t#ÒÊåö£sÅ®y[0@„«@ˆí "•=Læô#ñþAè .Ï ÛÔ¼¸¶¾==»Ð?8‰&C‘XªpnqåÂå—ßz÷ý«×o\‡1Á;×oÞ¹zý楗^0Þ½;–¶b%A°­¨'ÈL¹€è<ÞÊøŽ°z dK‚̶b0v@ÊÃreœÅ®¸s‰%MÃ*‘Š§ÒñTƸM¤Ò©ÌÀÐèx"ÕÿbqÉ—¿ò•C‡8xª‡§­¸sµ µwß>ãŸ9rô@ÞÁüÂÂþàÄóªšTRRRRRRRRRRRú—ÒÏþsãö'?ùɉ‚‚ü‚‚§ŸyÆøÛte¶ñ°.!‹`-Ó"ág¹¯Š"¡ð¯¦gç±E83»°8<6¡‡#-ííÍM—³«·»¬²¢¡¥¥¡© "Xeà_Aþª¤¸'Y -«¼¼¤¼¼´¢²¬ªº¢ºº#Xµ -­MÁjî¤!Ân"ìëà –½Ëfë±Q‹Ð‰B¯•E),]¢¸,†U@“jƒO^ _!Ô³&£ÁÒcqK.µó˜%ÀìÉTÄ -Â’M-¹?ÈW)‰¦Eo–{SVV¼ÔøKšøô¸ôâƒxv* FE=0›%G°ØEݪ(«r†UÜ\c‚ª’J‚ð°H6˜ÙPè\1~$Î (½Nq,îMeWY0DHv–³¢¹@ ÌÎêb%Pl2ORä¬Ì[“jåÕÉJšä–p®¼æEˆÛV‚µÎ‚Xø*°­\>æM¡OE+Ý ò AÚÑ;Âê]°`Uˆ“¯8zÝOù+ô¬ü¼Èü+¹`x+·Ÿîtó]?ãMùõ0Aˆ7×C1x>Íç‡=ÁTfplbzaqucz‚Û;7¶Î/ŽŽO%’™P8O¤'¦g·Ï_|óm ²_»y›œ«k7n½õÎûs‹+Z0js¸)Üåö¼¢×È1ƒ©É6Ã>XZ "Ò*ŒTö0Q­ $†’ ì bUâU€dÇ gK†£Æ-ì =ƒž q€ÇŽ±«D*ƒi«T<Î  ŽŒutõ|ÿûxøÈc·xV¦s%ÒV99¹»ví2î9˜—wäèÑã'N;~¼¨è¤xR-((PÿgQRRRRRRRRRRRúWD°òóO9óüÙ³ç.òÖ³°è  YXÌ‚:áüÒ -øWKR *„³3sóÓ³óÉT¿Ãí®khèµÙ.W]cCeMMcKKummiEy1zV/œ=ûb1³°JËËK‚UZYU^U]VU] ¬ºÚ†h¶´4¶·ÅùWDÁbw䯸e÷ø>?·°DÈ*@®” u—Y1>Èû†AÂýAÈêßÒ>‚ßnBË%|zJ ºBNHF–¸²¯8t=%V¼!˜ Ú 9 h¥o™÷W*nxVÜÂbFV4Á^”·£œ—²UQaRQO0Nõ@¼â†?›ŒÂ¤QÙ…1E®”x¾y 5m+ Æn<Ò/<+æ\±;Á¿¢† ¥­øV ¹X2ÒÊ+Wƒ&ØŠ"X&ÏÊÜ -dv› Ä{tæY6 ~~0[åá+–^,º)‘…~¢Ñyé _ ˆ-Bjÿáô^ü+öÍÄe@à±»¼Â¿Ò„m…Q+8X àµÏé©'xg sPšqW"3<:>·°=Ás·Ï]ÚÜ:¿¼²115›Ê ЖŸñ€ÕíWßx냯]»yûÆm( ^»qëý«×Î]¸O¤_{»Óãòú]4bˆöšÅÏ4Ö Ô‚Ä¶" ‹<+ZÔ‚aA²‚ÛP4dü …£l@£²Ç’‘Ûó -yìQ[!ÛÊx1þU:Ìd2ƒÃÆ[þÙÏ‘_Pðø®]Û -©ìŒÍâÎ"°rss÷íÛøÈÑ|0üó?þ•¯|…žBOœÈWÿQRRRRRRRRRRRú×ÖŸÿèG'òóççùÙ¯,­¬­®or ‹ùWŒ…µ -þű–WпŠû²°f–¦°B8=·01=;;¿0Ï_9}²[`Ù*3ˆEG¤³tÞ”½,²°B¢VÆ1àQMZÍãæ•™›ü+1Dh‚Ü“nŠð•ð R€kö%¤† yƒ=ÎPê4H}À`,k.0”ðìY+ÎZ›fnû‡¬ÈûƒdFÉ£A3‚ۂ¡¢û©!HÍA‚YÑcd€w«"üæSiü–9CRÈŠÓ®DIPøW˜°Šøؘ [ôóüÞrô:–‰µîÕÌÔúpÿζ‚꟎xvŒêa¶JðØi: ú9¡ãòi._€Ú‚X„‡¹ ¤Do9È.ðŒÇî£Ý@°ª\RCå¬(jåÑœ.æ\ ÛÊ É«€ÇG`öˆñ7~6 '¨GŒO -ʃz8MôOMÏÞàö…ó—¶Ï]\]ßšž]‹D“ÁH<•œ_\¾ôòkï~p•ÙV·ïW>¼þÊkoNL͹<¾n›W8@ƒ7>_†dwÍ«€ñ-ÀwJ¶8Wt¡³=Aê ßÍ ÙVÆÏ[8?ü¼Jâ’ ³­" €±“§âÉŒXĶ`:™Î$Òpg}có׿ñÍ]»rŒÿžØ³×8¦%&w?a:W»Á¹2^›wèñ$yZZ,:yRý¿CIIIIIIIIIIIé›~ñË_=~ìÔ“§9ó¿ðâÎÅËh^mr–ûºp±ø"!Ô Ñ -›#\\š]Xš–;LNÏÍOÍ-$3ND°ºz{nW}cCUm]CKkummyeeÖ!á°¨HXRQQVYU^] ÷ººš††ú¦¦úæ `ut`…°§½«[B`9pˆ']à·ûL~»%e‰]ÉC„‰…¥‹ ðÀÐ@OÃÌí¿ý+sÐÒÔ#Ê:·¤² -ƒr‹Þò]"\ñ¨UJ¶°‚f¤JÆ[!ƒ+–¹)Á¹ -ÆÌ–˜Ķ£…ÓÎPWÆ.1Øã´Œ° „{'ˆOešW,vÉ+ƶâ!+ò¬ tIù+~göt p±BQËŒ`Øt«à‚¿Èoሠð²|º»¢„ÁØ1J!Û -Š¬!ÈÁV¬!Ȫt'ýt,rWÓ‹¨+–ž$+r±ü:g[á–¥_ã ƒx'ùNØ -d†« -ꄱòR+mºD+иå}@ÂXQì -ý«\‘åpzáN„·{üAìâE•£=L †bOpaqeccgûÜÅ­‹ëÛ³óKÃ#±D&‰Ç©ÉéÙí ß~ï¼}÷æ{×oݹríúï¼gü;=ëìîsº|PD犂ƭ ]:vC4#èÇ‹€¦ 4¬À­ -?-! ZQæ -ØVp q/ \…ÏNÝ@ZŒ&’Ñ$¬¢ Fb'${"•I¦ú“™þ86ûì®üðÏ<ø¹GÉݽ;+s%;WbO0''׸ݷÿÀÑcÇd«J- *)))))))))))ýÔw¿÷½üÂÂcÇO|ãw¿5»¸´º¹…þÕ¦Ér_Û,,Ú"\ZYå[„+s „µ8=oaêÎ.,ŒM·vv645:Ü®®Þžòšªúæ–º&ˆ`•–—SìŠ\,:T!,)//«‚aeu5B…°¡(î@qïhëêêèîíè… öÙ»0‚es¹íÈ¿rxý˜¼–5ye1¯c¹S‹·ÑÂòêÿ*À:n¬:'•øR"…%’WÚVY¦–upP2Á,5À¤´ÈnÃĹŠ ‡ÊLUYHVhd±•ÀX’íJ3‚ r%Á¬ÏŠ®ti4Pû€|:ç©ÄÌÅ -g®8’=ÆÛ‚q-i#ÏJ€Ù…`V>,5×ÍØ«þ­Ùä!+ä›T+–© 3çJ—xVZPÔ=š °â0+†é˜i= -Yùu™¹{ -ÀVÜ›# cW»V9yV.9?ÌÚ¢¬Íb¸UX^Xt¡…åtc=Ðåsºüô"áµ^LQO¼ 2QÚŠ÷Óãæžà6ØV;‹KkcãS©Ì¥†FÇ×6¶_ë«×oÞ¼}÷ÖÝû7nß½ríÆ[﾿}îbÿàH¯ÍÕçp¹<~"±Ó­ðȶ -QCl««† ÀŽ¨+øÞéÆCîÑÂ6#Ž‡"ØŒ&iO0±­ …HΕñ)°´ØV˜¶Êô'R™p4î è?ÿÅ/Ÿyæ‹ÆSÜc?.ã­²œ+‘¶¢ÀÕž½{ó*(,Ï9O<ñ¤¾RRRRRRRRRRRRRú?¢ÓÆßfgÎPë…³Åç ‚µ¹¼Î-,³H\à(á"XX«¸EHÖÒ ‚°fæ—&gçfæ¦ç’ý·»¾©©³»Ûåñ447UÖÖ6¶µU××—VTP‹ð,™W˜¿‚ð°Ê+Àª®©â,¨¶¶6µ·7µ« )XÆéêE"Ü‘å Ëãwù²úƒZÖ¡œÎrf¹Xd^Aÿ+˜…À’&‰1n1¯ÀbJ$e3J¦¸?üpì¯J+`¶üÊŒc™­À¨…¸.HìA ÉnAZÅX˜*$îᆕ¨@R€*(Ðëb+®ÅV`\—}*¯ŠPª*Ž†•x•µ¢Þ¥c{Æ.VÞÓŒÈMÀ€‰d‘ªÑ®|¼H3‚–z gïËHvºfßY Ñèl+0(WG¯NmAÉcUAƹrû…— Aøé"žY:àeX. cWÔt£‘eö½º; í)Ê\Qž -9íNµò‚sÅ W>ØV^|ÖýpO0=Áp |ÈpŒÑÑýz@Gã©Á‘éãwcsëüÖÎÅÍóKËë“S³°'ˆí¼þÁáÅåµ—^}ýƒ¯ß@ÛÊ8×nÞ~ûÝ.½ôêÄô¬ñöô9.~ÌØ -Ô‚×bl+¸Õ‘gÅHìÆ÷Ü*j†Øa„+ qÅ€¬…?–´$"ÈU4ÁÀVø#I0*;Ô‘p•€†`ª Õ?ŠÄÜ]}ãúîw{ìqãÉ W{²!WÛÊf®Œ{‚]$vvËxV̹ŠRò* ÃÎCV|.0lVùt`Ä‚a—gYÂJr´‚]÷‹þ Ž™+¾÷h!¯´$(ÖEæÊì ƒL$ªò%AÝ#嬄Iå&lšOtÕŠyYµbY,HOQì -òT^þODOƒXnáY‰Ý`+HX¹—©V>»Ë T+Yte®°©ÇWºñõ7¾VÆ'å׌ÛP$–œYX\]ßØÙÚ¹¸¹uÎøužžY?ñdªpzváÜÅ—Þyÿê[wnß½ëÞG7nß}÷ý+—_yÍø}Æ’½vgOŸ?òä™3âùðä©Sê -JJJJJJJJJJJJÿ¦ô×ó7ÆíSO=uê4P°ŠNzþų;.­llA ŽÀaAK°°—¡KÈ,,rg,`¹/LÏÍÏÌ/¤nO}SSGw—Ûãijm©¬­mjk«©¯/¯¬”Aî”Å:‹8w¨VV–VU™þUµ‰‚ÕÙÖÙÕÑÝÓÞÝÂÞ¾n\!$~;UA`QsßúNK‹0@-™Ün’ŽX…ùW Öa$fõH(ª¤(>d0Û¹äötÈf—VIÙ¡Ê"±›lvΪbÀ¬2`Ì, r¤UB J£Yñ*Nb€=@2©dèzL³ð¬"ZÞŠ;TRàÊ4µ˜‹e®XŠr;Ô -ô…ÌÝ@Q„xG²ÛÊÇû€ ÃÎ.¸sůØJD§äª y˜fΊ~0(åÓ¾@ŸŠùWÒ‹š‹ÙPÜÔòëÜÂÒc£à_!À -!ç´HÓV~1 èÂΕÛgwzÉ°·N0¸¸åÇWÐÅ mEõ½`(–HõŽMÎbOpsûÂæÖùյ͙ÙÅ¡‘ñdºßxµñ€±É™íó¯¿ýî‡×oݺ{ÿö½îÜûèʵ/½úúÊÚfÿШÛèìés¸½Æ…—#¼ø’ N%Áë †=@™+ò¯ÆN†¤­‚áXV@µ"Ã*ÄÆ“d^™†^ıO¦eÛªpØxnñizkGçÏþö—_yö«?+Ø”¨ì¶ʅEÁ'rswçää¤ÝxÝž=óòŽŸÈÿ½çžχ§OŸVÿSPRRRRRRRRRRRú·¬/|ñ‹EE‡Žùƒï|§xdc#X¦……8w¼Ö*c¹ kn‰XîÔ"\šž[˜š™3^›œFc== MM—«×ÖW][[×ÔTßÔTUS¬²22¯ EHD¬’ð¯²(îõõuDqokl'Š{W[WWg_ ÂÝéÿÊãµ{|‚e†¯ZV"ë¡ü+Anç9œ ÝÑ-ü+Ù¿˜)¾JŠÖCkƒä\±Û8ÀÞ%|VRVÁm\, ~Ɖš±+ó†±Jˆn ð¬XUðœ•laiXU‚Êb+lú‰QÆyì"gåáÁ*\ Ên•›Á¬‚=³@=ÁÍí këÛs‹+£ˆ·ŠÆ’ÆFÆ&_óW^{óƒoܼsïÎýoßÿøÆí;¯¾ñöÆÖÎèÄ”Šôô9ûœnö‘Þ ŽÎ–1|i+¤ÁÓ€ V1¼Å’ Tó*Ãœ•è ši+²­È³¢O'CžU"•1Nf`ppxÔxUK[Çßÿï¾÷ŸÿËá#G>—¸²¦­ p•›»+:‚àn=±gÿþGŽ=-® åçç«ÿ ()))))))))))ý[ÖÏ~ö3ãöë_ûÚÉS§Nä—•mŸ¿¸²±g}se}kE´9ÔpX Ë«‹++Œå¾¼<»¸„,waMÍÌOÍÎÏÌ/¥†]^oSsKgw·ñwpSKsUmmCssM]]™ˆ`•”œ-†[j–”——§Z„Õ5•Œ‚ÕX×ÔÜÐÚÖØÖÞ̆»;zzLÿÊÁúƒ/ã_1{*`f®Ømà3],‘×åAL^a«Žy&ÁŠñðRBšˆõ¬`U–‹ÅîÒk™g• -ɵA3sÅ—YÂ*Î{‚W7“Tâ#‘[ôO4o%†c–V ZX­£C%ª‚b=P‡…8Ù¿ŠYcWr‹%¬dçJ„¬ÐŠHÅ@ÉË -†)|å—v)s%ÀVäPù8ŒÅ®°-HG®|ÆÎØì¼(î4'ÙŒ ‹Ø9®Ê¼&Ÿ -¼,ŠZù˜såbÎU_+ W¦¯Ei%§×Ïm+³¢A'Väb9]»rùÀ§Â[²­ÀÂÂ['ö -OSÐc@³Çîž×¯´P$šèž˜œY\^[ßÜÙÜ:OTöñÉ™tÿP4žŠ'SC#cÆk/]~å½®Þ¸}÷νïÞÿøö½ÞyïÊÖ¹ S3sÑDÚéöõÚœ.¯ß‹Ÿe®¨!H„+?31vÅ»P8 ƒg…•@àn‘[%.pI‚¹¢ª` -¨ì‰$Å®lÅÆDZ+°­ÒýƒÆÇ<04ÚÝkûÕ gðÃ?=yêô#‚r1Je±­vs¦­Œ¦ÕÞ½{÷í;˜——_P`ëmÏ~ò¼ ’’’’’’’’’’’’Ò¿ yúé‚¢¢¼Ã‡¿óÝ閭6Ï] ky»„¦…),^$D‹ü+œ#\„"!€Ü„þÕøät0íìîiln¶;Áª¯«ÇVEuuYEEqié gϾXŒð+ã …-ŠRŒ`UÖÖV!Ž(XÁjnooîèlëê† -aøWÝ6;ùW6kðaG{صfu±ÈÊÐxþŠÁÀ¥þ`$À¹ådaV*ÅùWi‚Y=˜¿b8¬¤ù²¼u%˜WI -\é,IMÀK[1ÃÊL^‰ò lgE¤ ¯’`VìþO[ÅÌ´•´n•x‘ÀVVoJ.²ª C²C\MðØM*»ð©„mbvt±-âÜuª¢—%j€> Ãî ‚O% -ƒ¬(¨V¢$ˆT¤{à{p¿b}@Ú „;ƒ Qå§}@Võ@P¡……i+8œÍ®‰Cþ2£n²âQ+^tzüäSц Íá!óŠÙVHJ÷úud¡G)Ô† ï CÑx*=8:>=7¿¼º¶¹¹u~cë¼ñ{:53ß?0'“™[º{ÿã»÷?ùðÆ­ —^6™Loª×ø-uûpQ§¶ ®Ì=A/ ¢mÅIìQƶ -G°!#z<ØlÂÝÀQ­âI´­RÑD:J`«d*.J‚ä_¥3ÉtÿÐÈØÄ´7 •–Wþà‡úåßùÊÞ}û>÷È#9¹0(ÛVŒÍÎñV»°(¶ÕÞ}û8zìØžyF<ר'|%%%%%%%%%%%¥wúû¿ÿ{ãöÇþçEÁ:rìXyeõÆÎù•­Õmba­…µ¾azYÌÂZ§-¶E]Br‡ÖìÂRf"X ÍÍ].‹`5¶¶«ªª¤¼ü,ß|‘S°p…(X匂UW]‡¬&j‚ÕÒÙÙÞþD°lŽ^'÷¯…0Ú ©@0 ÈtãN?ö“™á‘ñ)ÜÜØÜÙØ:·²¶ITö(¦›’™É™¹­ó¯¿ùÎÕk7oݽwçþGw?úäÖÝû¯½ùÎÜÂRºHE.ñÙ$"zV?¼ ˜D¸–qk2Øo._äH«[¡y·¸!ˆx«põQ°¾ó½ï¥†6wDk“/n0(XXëË,‚µj²Ü1……, `Çøybz&¶ww767;\ΞÞÞªššº¦¦ºÆÆŠêjªžw<Å¥e%e奥•Áª©­®­3‡ÛÚ›Û;Z:;[»º:º¨BhÇ B·Ýíq<À¿úMü+jJ¼w“ßîa†IØ‚;?srb2üœó¯L„{(! JEB^LüŠ/&ÙÈ ä_…¢‚a•à «‡ÈÃ/ E(ÁØåJ ƒwQ7ÕÅ5ƒ±£˶¤,i«†©(–ú€ØeJH,¬E¶EÈçÈÂZœ†ábÿаÓãmjmig¬–ªº:Œ`5”UT——üª¸˜ì,è––A…°‚Q°äΆ1‚Õ whvôôvõÙzíNÌ_ÂÝéó?`aiVԻߙMq¸-+„,Å˃t J$øíèb™Î±RrOPà°dr;&µ˜Å,/Œ`aݪ˜´µÔ7>·ÌF¬>‡·‹b 1¯°ýÇ ­’XUÜ›b6”äY‰íE]ÅT>ê #Þ´>&l~Í„UH®DCìÔ ¤åGiV¯5Ö „Â`€ ’ÙÐéô¬4·_‚±Ë!+°C[Œ)øiñù-Ý@b[y‰Öà^ã·ƒ…öÙV.³rûn¯ËãwP7—pºÝ@¯ ZÙœãØ{\”Á¿2ÞˆñÏQ ј`ŠX?ôôP$žÊ O/,­¿†kÛëÛ KkãÓ©ô¬øEƒÃ£Æ¯äåW^{ïʇ×o‰žàÇ7oß½øÒ+C#ãz(êÓ‚dÁaQCç*Äz‚Àµü|_È°¢%A ¿­:[ŒêæŒ ÚV‘xÄøÑ…ÀñØÉ­JÆØ€` -OOŠØV̶JgŒ¼pxlbʸçųÅßþö*:yrÿþ»ºnF­žØ#—áäî†ÀUt æåå:tøðiuBQÙ•”””””””””””þƒêÌSO9zô¹o;3¬µÍíU°°6Î}ƒ›W”ÂZå.áÜ—×æ1…5 w`¹OÏ.ÌÌ/NNφcñNŒ`Ù]Ξ¾ÞÊššúæ–:1DHãƒ<…e\”`‹°´¢¢¬ªü«šÚªÚºšºŒ`µ4´´¶vB…(X]6{·ÝÙëÿ -ùW¦må|8ªÝÄ2cWìš& Ý"Ï£‡d–˜ äá«d…¯áDVþJkyý+ Ûž0™íTŒ1;K^EX ¡®bü)XÅVM{ -féxÚJ²°øž KX™`+´³B<]f6£9Ue’Øeôz”¼)þ`æõùXYrÂÊø’C>¾'·£Z ;Ñ«,Tö÷²8íJtÅ-÷ɼb´+Ñ t’Eí?B¬?$¾ Yy™‹…Þ”ßÉ*»U~–Âò’£Tv Y¹ýnZXÞ€·ɪr=Å +e«lüÎ>‡ÛŽ×f÷¡mx+ H…bŸ‡wýA-I¤2#c“3sKË+ëë;kÛÆÅÔì|:31~$ÂÑTfÀøu»pùåwÞ»ríÆíÛwï“suçÞÇo¼ý®ñk¨‡€ôîöo¥É(º1+ÒŠYæP ïrK*Î+© Hù+ÁWÑgGa*, rÐzÀœä„+©h¹*l=0ñI_Iþ*Yy¹yåV•Î‚U`U¡1Á*1`œ+o@ØV¼ï ¸åž`v0@ÜuãµNò£„‘åÓx¥ ‡Š_ I…Y,¦ª€aÅoyì -ŽbT~¶ˆFV·Í\8<ĶBÛ -XXÀH§=Aê`Âg =A7à×BÑXrphtjfnqyum}{}sgemsfvqph,KjÁp,‘ŸœÞ:wñÍ·ßûðÆ­[wïß½Ïl««×o®nlÅ’ã#';¼Yì "á - @ìý¼*¨…ȹ -Û -xìØäöÕÙ€ œh"büHãŒ`,™Ï*‘Ž¥ $0v6#˜fl«4³­úO`bÊx#õ×?+,,ÌËËÛ·ÿMÊx+kÚ*—®rr÷íßwèðáÃGŽä:TPh!\Z_TRRRRRRRRRRRRúª¢“'ó -Ž?þ­ßÿ½Á‘±ó«h^­np# ‰X&Ô}\,ò¯–åC„K+ó˸E¸°4…¬É™Yã¯Ý"t¹zm¶ªÚچ斆–– -Œ`•”•¿P\lZXÔ",‡aY%T+¡BX_S¬æÖÆV¨6wvvtuwõÙz å²¹Üv˜ ôö¡öÙðv‘¼¢ñAò¯‚|…ÐD¸Óþ 0Žt>(!ÜSÜÅ2¸3dÁ^%¨6”Qí2YëÎs¥xªŠÒV’¥E°U”q×™….VHb°[ü+3XÅo#òkE1Wå† ÙPѯô ¶ä¯B¿2¾€~–¶ -‘%6½ØÐäx«°W³võ0¬è7¯ -²’ ³ª4â\Ñ=̉ÂömòÌ[ dÙ*¼l(¬"ž»‡bQ.l ‚såeä+'ïâ-ÂØq7ÂTf= +0¯úì.»"ÎqÝÁ¶T,ŒzѶÂA-Š¥û‡Æ'ßžÕÕõÍuã÷nmknaetl2‘ÌÃÑp4>4:¶º¾õú›o_½vóæ{w°$xûîG7nß½üòkC#ãËrûámúŒ/ß8ºÇ¯Áu€¦ #€·ÒCäV 0¦ª ŽéĶŠÄoÅ—kŠ] žPÙ£‰x*³ª q Skk{W—Ëãnnm­®­khi­­¯¯¨®.­¬,.-}áìY¶EX\\Ì+„¥•¥HÁbwˆ`57´´€ÕÑÙÚÑ…„ö»Óæ‚üÕ¯õ¯,ÎiiVÿŠ,‘ °°áÎ˃á(` „»œ›JÊ•ÄÊŠ`IfK^™«‚œÖŒ²2 .¹ ˆñ€éh1*»™°b§( ÆyÎJò¯X7P‚VQàŠ7ýRòJ³¦i1ÐBkG »€_ùп"‡Š†)‹å´+^dæÙÈ$ðì:aØ%ª•à\±ÉH3Gç'0» f[¡g…À+—Ÿs×¹IE u€ÖYL‹º45 +—‡¹U 2ŽÍáÅ@&¬XÈÊÝg‡C+˜Ī ÚVØ €e¤ßãË¢A}l+Ÿ¦CO°tlrvÞøÚXßØY]ßZ\ZœšMgƒh(¥úæ—V.¿òÚ•ýö½ûh[Ý¿yûÞ[ï¾oü®ùõñ¾˜så×¼H[ù¯!B®üؤ%ÁZX~¼T+[Ñž`$ -ÇYÔ*Êf‰mMÀt úWéH" †U‚)j•L÷cÔªŸNº 3044:ÞkwüðÏ´gï^[1ç -/²œ+Â[Aàj×.ãzÿ‡-,*zb÷ž‚¢Â¿û뿦gª½û÷?ùä“ê©[IIIIIIIIIIIé·MgÏž5nO?ù䉂‚ãùùÏ~ík£““ëÛçdÿŠAÝבåN)¬U©HˆÖ<æ¯æ ˆ ·³ Æß¿==M­-v—£×n«¬­©oi©ohª¨®)«¨()+{óW`^•”œ…üU¹qJ++K«ª`ˆG°ê›šš››Ú±BØÑÕÑÓÛi³÷8œ6—Ûæñþ†þ•ŒÉ’øíº•ßþ ÿ*,òK2Â=(õCÙØ+»J›á« ñÁA"®#ùŠÝj–Å@DZEÙz ‡±ó­@ -Y1ªU\ÊYIlöÏXô‡"bj?;ÙÈ - È•xÑ‹èu¾ÂV`X¼–ØV>¹"‡ÊÇ—Š]ypCHV|a­ -²Â`@²ªmÅ3Wè4rŸÊÃQíÆkYÂÊo¤@Cí²­”ƒ¢’ d¨ð€µE£Ôôyå‡Ý@·Ïn§ÇéB»‹!ÙmVNOŸÍEÉ+Ê\‘yEÆ8H˜nÒ°Gé£ßƒá¨h{‚Ó KËë+k[këÛ‹+kÓ3óC#‘xRFbñÔÄÔì¹ —ßyÿÊ[w•ýÆí»W>¼¾}þb4ž6Þ‘ñî°h|é‚TK¤õ@㞀†[HXašŽç¬èãA;w®ÂÜ°B0;ÌÆ’„\·ÑxÊøhc°$È¢V1Â[¥3ÆE’bWØL¥ûS™TfÈøW¿zþÅS§O?ŽK‚°‚óDvU0‡÷w!˜=ïСcÇŽïþ3=AÉxv%%%%%%%%%%%%¥ßfoskkU]]Sk[u}}yeeIY9•Ï––Š -a©IÁª& -Vu]=V[[[ÁÂjïÀ ¾»CÞ¤ó›˜WÒ -a¶EÑ ·&úƒD`qÈ9øWføJì²IAl -çêAæUÈü‡ ³*IèV0ûÃ"Xq²ª8k=. ëZØ4²DøJ<=«˜ÃNèuópŠVÞáÙ*fL z•ÜD“ŠÍ ò> Üúõ°p®’/ R7ÐË6ƒÂ­òyL'ÏŠæ]b=À@UÌ·³²­ Iå pç - +$¯ðUv§‹=JU!ÒÊgÃUP~´ª|,|ådTvèÚÜÆ!ÿªÏî¢CØ+»Ë¶•O'(:®ŒÏ{‚~¯ö¡'81³°¸ºº¶eœ•ÕÍ™¹¥‘щx2 -Ç¢±äðèøÚæÎo¿wýÖ»÷?¾÷Ñ'4&xåÚW^{ktbÊxk=Ƈè ø¸Ue[ù€jÅVÎÒ‹X «JãâBZé‘(PÙ£ j"‰±­ˆgE‰4¦­ÌN=ÁTz ™éO¥û;7·¶ÿþsßÎÉÉ}ôóŸ—£VYÎUînP. -Vwï>—wôøq¹!xìØqõ䬤¤¤¤¤¤¤¤¤¤¤¤”¥S§NÏÏ?QPðågŸ˜[ÛÚ,w)‹ÅŒ, -bAþj )X«p—×–—ç)‚µþ•q;53güÜÙÓÛÔÚât»úvˆ`¡U]SSVYYRZöbq1¥°ŠKJKJK©EXŒV‹`ÕU×7Ô56Õ7Ž¥£î}„pwÛ\û?ƒp×È¿zXþÊlJù«™#âüv¾âg‚ª¨ý'œ«¬¡ u§Î è/ÿ–,,ØÎ&#&ðŠ½_‹=e!YA’Šm Z8Wþ¸@¶³­XmõÃQ+ 2 ‚XAi=ÐDµc[0dñ¬D¤ -¿JÒb ßô™x+Þ$ +ÀØVhdi¢ˆ^–Æ WèVQÚÊDN;5¹…pùȘb+Ê_¹ùh üTx”°ο‡Ù³ -p’•ßáÁ,–Ë+¨V‰Ýmw`¼Êæ‚c·v‰s£~zVüÂQšöc=A¿Ž{‚ã“3s‹K+«kÛ+k›s +㓳©ôfŸâýÃóK«—_yãêõwît÷£Oî}ôÉí»÷¯^»ùÆÛï¿\z8ÖÙc7>B°þÉîámA2²ZX@®´ ß4¾Ñz_Œjh©’l«P,Ž3‚ŒjEβ­ø¤`8W˜¶JAU0Q«þtÿ`"ÕoüC›ÃõãŸü”˜T»rsžØ›íYa•µ*ˆ¬«½ûö>rä´µ¨ìJJJJJJJJJJJJJ¿F…EEù……Æ_-­«›[`aÑÙ„[ bm‘‘µÂæÎ}i],agü+ˆ`Í.,Í/¯Œ{|Æ––Ž®N·×ÛÔÒRS‹¬ºº²ÊÊÒòòâ²²!yU&¶KË ‚URQþ R ü«¶æŽŽöîîÎÞ¾n›£Ïé–ÏáýgbWà_=ÌÚâ %‹…eå·›B†œŠ&tɌʂ´gÁÛ¹EƒƒIŠoéœy%#ÙµhœEªèEþîÌÎ`Œ'¬^%¢Y±ïêJDªÌTÙY&ÒÊä\ÉΕ`X!ÀŠ%¬(jeÖ5³$H9+Ÿä_ùL¶³SaÐ,âž `°»…UE/b˜Ê4¯èahL¹™gå +x°—סèÅãö!ÕÊO´+³‹ Aò¯ ôçöÚ,vãxÑ¡BÛ -sV½6WÍÉ<+;à­ˆÐNŒŒ#°­Â¿æñÁ1^Œ%Ò¸'8¿°´¶¼º¹º¶¹°´:15Û?8¥B‘X"Õ?93wþÒå÷¯|xëîý{}zÿãOïÞÿøÚ[o½óÞÖÎ…DzÀx¿½vŒ bnñصCxÀu„ÀùT¡â­bÓÃQ ±£g%AÌY!Þ*‰=A¸_ƳÇ0|%ØV \dl«T:l«ôÀP(sº¼/œ-ù¯kUÑëøÕÐÂÁîôuñ³ðØ©*¨ƒµÅÒVA³0È^¤AÙ¿‚„•‡YXèJ™öêÃöIHv١ˆZP2¬Xl<¸Òˆs>•‡Ç®8ðJws;ùTòo“—0ìÆÎœ+fRá­¹'è { -©ìN~èNê -T»rShCÑ…ÍÉ+ V¡gåÄÀ•³§ÏÑKAt·hRÐíÃÍÏÑR^ãsñmåñkÁp,™ê›œ…žàúòêæ"ØV‹Ã#ã‰T&KDã©áÑ ã÷å•7Þ¼vóÖ½ûßÿøÓ>ùÇ»÷?~ïÊÕ —_ž]XŽ&R}0ʨè `Î -=+¿3‚0 ‰ÅÏ+ Ræ -êA¤’`0¨ìHbO’me\`Ί¢V²¢¶ !Ùã)ÀXŸ‚°­ŒÛÌÀññ§û‡\]CÓŸÿè¿SÝ W{dÂUÖž Ù Ò¾gïÞƒyy…EEâ©æé/}iÿþýê)WIIIIIIIIIIIIéIeeeŸã¬‚¢¢S§Ÿ\X^]ßÞÞØÞYÛ–Š„ÜÅZÙØZÞÿ -#X›f‹pemai•"X`aÍ/Î/­LÏ-D“©®Þ¾†¦&§Ûíp9+kªë›š[!‚%*„T,.-3G`A«¼º)îuµ uÆ¿jkkíìV¯M䯰BhRÜ?#mõkYf‹÷ÃÒî;Ë$øW²•’(X¢Q˜àkƒ “ EvÊ\=*½a^E¬Á*Ù¿ŠL{„8W~¶²âÙ-n•/hÞú¹Iå +9ãvÖ +îb™0vMæY±ã „¨ŒéÖ 5ÄìEÅPXC»RÓ‰‘s…«‚ñ`$‰%Ch^Á˜`fa…,<ö Ú#:#\YÒV¶ÔÛdÌ+– -ØŠ‡Öˆj…>Ç[¹Í† ZUæY!ÀŠ{† Æ®Q¼ -Ý*üV’…F‘ØñæYA -ñVT dv<äbaIŽÇAþÚVv§ð¬áªrVNÖ„€r¸éMa}HS0&HTvë &G&¦ŒŸñU°­V7æ–Ç&¦ÓýƒQÄL¥2Æ+Ï]¸ôö{ܼ}ÒVŸþÓÇŸþÓ{÷_{óíÕõíá± -éÃ÷eÎ’mÅÙVä˜ÁŒ ý äŠl+V Ç(^%A<‘D -3WI[EÉ(ó¯ÀªŠIž‚­2tæUfÐøŒFÆ'3Cm]¿ø»øÎw¿wøðáGyä±Ç—ÇMÿj7®rwç ˆ‚e(ïÐ!9p¥¤¤¤¤¤¤¤¤¤¤¤¤¤ô/¨/?û,E°ŠNš]XÚØÞaÖ–yø"!°°–7¨B,8+ëX!\áòʬÁŠ§2Ý6[CS“ÃåryÜUµÕµ ­­UÕÕ¥••Åååg‹KÌVD°Œ¬Jˆ`U×ÖŽ¡¡¾¹µ©î}è_9Mÿ* {EýÁ‡yY1¯¸…%õ)§Ä\ “ßN|u´¢† Õ¶2_ø¾µÁhBçù+óMqèº&ŠÜ¡¢Î ?,“¬Da0J+3mŒˆ1A5ƒ–’ Ï _…È°B?Š‡¯„E{‚Ò˜ Ž†<ZE­@ƶÒä=€å¬0vef®\þ¬’ ¢®Øn Ÿ¡×Ñž’RX’UE%Aœ49ín¸baìv* ÒŒ Ë+ª½ˆ´êëc©ªÞ>ÈYõÀ-\Ëda9Ààr"u -ðVhù4˜ü¼•'àÃ0¦Fǧfæ–––×ûùÅÕ©©¹þ‘(„âÆúÄÔìæö¹7Þ~çÚÍÛw?úä£O0põÉ?¾ûþÕõÍíщéh"åòømÛ§%áŒ`Â]ÐÄÄwïØVTD0{”ê¡hœBVÆÇc\‡clI­ª4•1geã#${"‰CટÀì©ô@ºpdlblbÊéöþêùþë÷ÿðÉ3gvåä>òè£\GÏ -÷iLØVh[å‚mµm«}û‘Ÿôرxþ… —_&ÿ -¬¬–Äs„kP$\X¦Tgávayed| âa—/àoïì(¯ªjhm­mh¨¨®.)¯(.)ÖYaaUTP‹(îµµÕõõõÍ-Mí­„p·Û{.›Ëãðø8êJ¯¸‹å7í¬Ï@¸#‚‰ç¯ÐÂ2áí¢BˆvS÷©ú—  -!/ Š9¬“ð*©óÌ›4+¹‚ ¿„±õ@V“³Ï\qÊ^Ô¹[ -ËèuÞäŒ/]r«Êî“HìX¨ I>•N+7ÏYY¢V”¿òëhX<cçvM¶°hXW>“ÍNþ|S¨?­ÀSlzî7¬`þÏí'¦:¥­½/äªÏá&óŠV6ãÖÝÓ瀄c[9YìŠØì‚rû^¿î×!æ_ãSÀCì F©þ¡Ññééù…ÅÕ¥åõÅ¥Õ©™ù¡¡Ñh< G£ñäðØäêÆÖ«¯¿yõúÍ;÷>"ÛÊ8×oÝ*ûä´ñ|ZÐÃ…~¯?è×¾pÃ(g…‡!Ù iEK‚Æ‹A¤²#XŒÄC[…0åÅsV)ãÈ% È«‚¼$ˆ0ö˜W™°­2¶Je‡G'¦fã‰tiYÅþÑéw~'//ï‘GÙ…a*fçΕ89¹¹ÆŒÛ={öì3´ÞáÃ'­ÝÀ£Gª'U%%%%%%%%%%%%¥qUTT·ßüÖ·ò - -ŠŠNž:=;¿¸¹sŽÌ«ÏêÒ.!bm,¯­/®0;€°pˆp"XéL·ÍÞÐÜäp»\^OUmMMCCcK[UmmiyEiyùY2¯$øWåååÕ@q‡ -a]}]SSS{{K'G¸;œ6¨2„»”¼âG„²üÜ'‘,,$/$ÿJù+™a§°ˆ`ʼnd…æm &EOÐâ\ÅØA³+.Ç·$ÿŠÒV1XEÆ*åèõȯ󯂬ÈØVúC8W˜ÏYA -'y -‹ùWdR1$»ÈYñü•WfUÐ##Ùܹ2.|XDóŠyS‡ã£,y…%A·Ÿ1¯hLм¥b ­|ŒÊŽF–ÍìzŒCVÐ;Øi7°—Ü*¸rŠä”ñUÆcnà­üºÍ=øšøƒn¯f¼#ãSè¡h<584653?¿¸²¸¼¾°´:3·8<:‘Hf‚áh85~à/¿üêûW>¼u÷ÞýO>ÛêÿŸ;÷?~õ·¦ç“éãÍ€)ç ßžÀV`a!•] F´ VÓ³2£Vtx+ÈYű$žUˆ!ÙÕ -ÃWcO‚[çQ+ã–¢V æ\Aòj`pxlbz|r¦µ£ó‡úgÏ~õkÇìñÇßµ :€{öR=õwKTöœœ]»v¯Ø·ÿÁƒyû÷ï?vìø“O™ÎU‘ª *))))))))))))ý+ëÉ3gèöx~þ‰‚‚¿ýåß]~å5Ê_që ÎRKÌ.®pÿjiyv#X+«ÁÒƒM­­m>-ÐÑÕUVYÙÐÒRÛØXQUUŠC„/ - ·KÊËK++K«*+Àª©®«7ÜØÚÖÒÑÙÙÓÛe³÷86—Ûþ•Ÿ*„äbIi+¿é_ù-tw¹EÈ-¬ [˜6æ!ó”TôcèuÓž/& 3( -†h^IÉ«½)vÅ™WœXEÂY‡ÙPPŒˆaAB] h•;Z>‘¿â±+3j%%¯|¢!h…Y¹E[IìhXinÐígH+šk$»¬b+îJq$»—™Wb7Mšl+VDÃÊkL[Áú:Þãp‰Ø•ÇΗm./D§(mew±ã`+l:zzÝ}Žî^›¸§e®ÜÀ[•!`€· -¸Ü~—Çç —½`xlrfv~yiymie}n~ilb:• …cAãÕéþÙù¥ —^z÷ý+7oß½÷ѧ¢'øÁ‡×—V׌GÁ,òx¡PéEÏ - -‰E­ü̹ÏJC°UQ­b:F­B‘8[‰¨Ž F)B²Ç’»Jq°U&–H'Ó°°ÒéTf AQ« °­’H¸2>§é9—×ÿ·¿øåW¿þõ‚‚Â={÷=¾kõMûn<‚Êž›»kWNNîn* <˜wøÈ‘Ó§MÛêˆJ[)))))))))))))ýïÕÿ·?Ì/(Ì/,|¨aïÞúÆÆC‡ ŽŒ.ž_–ü«ór‹pv-ÉÂB -Ï_A…pnZ„rŸ>;9þÕÔìØÙ ök»ËÝ¥T:Ý.¯ß×­ìiëììÑêÚŠæ¶6^!lj:uº SXP!d×ÃB>ˆ°“=îF#"°È¿âB—T!\¾ú¥±+Nw_maEdËWÍ5É#Ã*)ùWi,(·köt¸Ææ ->„jç£ã|æ ÔäÓÑÑ¢„•Äfç%A¿`Çb tŽDe•—¢V5ž•7‘ÁVÞ ÜÊß`Ý9ÌÁì!9jU³’†3‚»U‚{J`voŒ¬`Mmv§7ञ Ý>³’1V2’ðûhd‰Ýƒv·Ïáäv"\UÅ~ËX dgÀN +:ð´•\DT»Ýw§Ççõ‡ÈD¢ž ÆVË Çé|¾Ü?82~l«ÉIè ö esÅÚMélaüì¹Ë×^z÷ƒ¯vS. Þøâö]Ÿž]H¤²ì-øØÏ`ìÈc—ÒV‹0øË\÷¬u´À¥qóðUH¶t¨”Wå¨K¬ªÚü•¼¸…• `;]¬Þ*‘¯jhW1Þä}À0Í ¬6ù•‘˜dXUV~ †ù"U¤Uys;WXáŸ-Šb0"W}Rà -/Ê<«^¤ÀÔk`VäS¡µå"{ »’' ºª†Í VaìD»òÒŠz‚vœ-Hõ@`°»`˜ ç -‚°Û¸[…Ëi²ØåÝRÓdwA² Æ kz‚à¤yüû‰&³yê ž=;151É>¥ÓC#¹B9žH¶}pxìüÅ•7ß}ÿ“Oo|þPÙoÞÛê“O?¿|íåRo?9cìù©èDüH¸b×Ђ†`5mp®ûœ@æŠØViŽ´b‡ä¬È§J¤3 ɼ¢PÙ3¹ ´ɹ*`I°Í•xøªPb¯¿ØÛW® ¨uÆ?øÃ?Z³f ðØѹ’—L¸ª'¸m+vý–­[wîÚEö‡BV¹úw¥½ûö5îÝËÖž††§ž~º·oàüòe°°–`Í®*.ÍÌs kFJa!Î}Ž³ÜÏÍœ97u"Xà_OœcÿÐv¸ÜÝJ¥ËíÆ–²½³³[­f{3„äZX'OŸ>ÍÎ@ÁjmnkkéèhW(:{án4Ì“Ýnu:­.Ô :k"Xr—s±ðºÃª%Óȹ…æHsªJ– "óŠFÊ AyÔ`$™‘Bg°ÕŽg™|•œ+ò¬xKQ® Æ¿>@°ÖÅB˜¸U`@I.–Lb÷Õe•<7Œ,JR­â\‘d%QÙ«“!vUe°óåñ‚àPÀ -HV’…^"± È.:Ü|t ì°ÃEhÚin V°rpĺÍ(iŒ [v¨Œ`X9L»Éj—SX¹r¸Ùó³i¨ö.Ù{G¼•“]ï ñT&Wîí?3qnbrúìÄÔðè™Ro_z‚±h,Y*÷ÍÎ/½úÆ[úÙç_ܾ ¶Õ]vøä³Ï_ëÑ3“Þ@ØÁÞ-¦­|°_³“QFH+ä±Ç#h[…¡˜GrOÑ0Áð¬€ÇN™+"\AÚ -û€©4RÙéŒl+L[oUÀ„Uz‚9d³gѹ*”ûØkû/ÿõ¯·lÝúØcÕzV°çÎUmÚ -z‚ë@›6mÞµ»noÍô@áV ýû×á#‡>ñÄžú†}ü÷ýèÊK/ÏCøŠ§°¤.!±ÜÁš]XªZXsÜ¿šœšA; Ñšœœ™ë‰Äâ½^«×ûƒA‹ÍÚÒÞ,•ª¹½½©µíTs7¯ÐËb;€Ü¡EØÖÞ¡Ptuw©Ôj½Qo²˜$–ÝM!¬±|{%u W™W®*¿=TÃw’+uò¨>JCÅkÆ&(O%Å«xà*\ _¥"‰T(–’“Zµ}x¶`„l«8¯’U%‘¯8C^Š]ù° H`+Þ ÉVUäaÂRè½ò›Ây‚’‹…I³`íXU‘Ôi%RÙD:OgØ¢I‚ìÀ°gyaØV°gÁ³¢z ¸X¸Ê—zóÅÞt®Àž\­ÕÿOþtݺõì KÃî Ê™«õ’sÅî½~=õ8(ß’]HHHHHHHHHHHHèWPÏ<ûìÁC‡ö44À ŸüÃ¥k/-.]¤ -áŸHXJ8»°4³ŸE8¿@ã‰å>953Aã'ÏMÍÎ FãIѤÑi}Á€ÅfkS(ºUª®ek{Gsk+§`ÅòW-§[ZZÚÛ[;:]]]*•J§Ó›,F«ÍlwXn›Ûƒ¬µɼrúWw ¿†Ã’óW<‚õðÂYÁªò¯hQ¶JJX;Á9WUæ܇FʆÕƒœÖγU~î_­j újÌ+™Ê^S ¼…œdöÕL¤k8ɪֹ -H™+y«çê ÁYÕŽ4OP2µ”³BÛ -jƒ¯rzÀ×ÂxVn¯ÍåáV[Á5ðû";&¯Ø-‹¹ë€±ršmNp«Ø²¬Z¾²ÚÙ=¡'èòº½o€ÛV~ö+ós*»Ç†£©L¾ÔÛ?846~æØVãC£…b%‘ÌFbÉD2ÝÛ?0;¿ôú›o_ºÕÝ[wî±uãæ­÷>üøåW_?39Š&,6—Û·ŠxìTÄs «0úT|ñû0Ð<Á$¹Uq²­ÉžKQ«$F­’8:¨Uͪd{¾X)–*Ù\1KXmΟüã?74BÅï±5kdÃj•mµC®È¶"±;lÛ¾Xã\‰ª Ð¯¤9òÀr?ÀÖ®ºÝßþÎwØ?¥—/]]Xº°°tAv±ä¡„h^ÁÎ#XX$„–šœš={"XÓ@tÏK·[©V[í_  T«:`¡¶½³³Z„­§áá+DY¬æövÈ_uuu)UJ °Œ€pwX.›Ëm÷x^Ö«,w¹3ø¹Ý-E³ˆòäæÄ'>…G˜ª‘'RIS%Š{2ŒÎg¹Ç«á+ɶ"f»4|ÏŒ¢ÜË’m+ ¬#+^ò¬b>©(ûWUª¼Ü”®¡êÚkÌ«šœUØ+we/KB²ÓA -_WÇ®‚nÉ°‚‚Õ]f°ûå¶ YXDb§z NôÚœn;·°lÅ.Z.¨Ú]V› ¢V6‡w0¦lNÈYYì´›ˆpEΕ Yì±Øàóyü!$\!•=vy ÷åöúÁH<‘.”*C££cãgÏŸ™+–ú’él$šˆ±[‹•‰©™—^yíÃO>½yëέ»÷oß½óö÷?üø•×ßœ]XÊäKì…áŠJ‚Hb÷s +N¶Û#¼˜ -ÇQö«ç<ö”4F0-¯8¤­²°§²4R0™É&3¼'˜ÌÞ*ŸÉJžU¾@†U®P΂mÕ[ìígï)OÚÝ›Ù—ñ‘Gù ¸ÚôKœ«Ç—ÙVì@^Ö–-[÷Ô×?ûÜsòw¼AØVBBBBBBBBBBBBBÿ!ôÜ7ŸÛàÀžÆÆúÆÆø§¾xéÊâù‹ K´.ÔD°ÎK)¬Å™E `ñÖÜBE¬sg&&Ù5Ã@ÁÒŒjŽ(Xí -E·(Xm4ˆÂWä_5ƒÕÔÒÒÚÑÑÑÙÅî毜ܿÂ!˜WP!ô»ø€'Ò9Îf—2Wµ‚I‚DbçTv²­À¹ªU±ÜWJüO[Gç÷ÿäO÷ì©gßÊ5kÖl”m«Ç¿Ö”WP›6oÞ±sçÁƒ‡ä/õ§žª¯¯Ü„„„„„„„„„„„„„þcèÐáÃlßðàÞýûwîÚýßþíd:³råÚâÒEÙÅš¯q±$GH-B¨r–ûìÄÔ  ³'Ïš>{n:_*;=¥Fíp:}¿J£îèîîÑh;:»À¿ji9 w)ÕÔÔ„¬ŽÎN»›Z£Ö f‹Ù,‹ÓEB²˜dx{ ÅÆò‰„«ùWrÌ«j -Ë'õø ô±«8äT+¢`AÚ*UƒÀJ…ªþ•4p˜ä…ANk¯…\álÁH5îµj˜ Äfç&U(ÂóTœÊÎÏ5Î[hU=F -JH«€|à Aɹ’¼>7¬œ¾jCãUXÌ„)~^'8W>:W0@{‚Ô´91j%¹U˜¶r³‹¶²“g%-«Ól©"Ù&-na‘sE=Ajù=~)„y|Ö¡ÇçõC‘x:“/Wú‡ÇÆÎLŽŸ972z¶·o(›+Æ©h<™É†GÆ–.¬¼ñö»×oܼuçÞ{_Þ¾÷%;½ýÞç—/ŒOÄ’‡ ØïòÈ#œpõxu˜ 5«¶úVàjmÚ´uë¶=õõßüÖ·äotíxA!!!!!!!!!!!!!¡ÿHúñßý÷ýÖ76{þè‹V.-]Xÿêá /òÖBuáYXÓ`aa -kj|òÜäìÜÐèX$žÐjÖ -ÚööÎÎ.•ºK©dÿl‡ -ak멦fNÁjnnnmmiog÷Qtqÿ -î€À2ÃB^!ÄBÅ«S¹9³š’W¡‡pXrù®va°šžJÈT+šB(”™Wµ©6äù+9p…ž•„d(jETv(VµB«*ÄË€5Kb³Ëæ[`UÚ -0VÁ0QÙ«æ•?$ƒÙ«%A)j…þºU^n^9Ý~ò‘€Êî•J‚Ž´²SÔJnÚ]6^tÓô@b[AV³ì°L6~ <;zYìž`[¹½ìe°×ïEØòÂììòønŸÛ„¢ HTõ Ž@OðÌäÈØÙþá\¾Od"±D2ífŸÃW^{óãëŸÝ¼uçν/Á¹º{ÿî/_¾vfr*_êuû‚ìõû‚aäY9I!+Z˜³"·*EŒÆyà*Ž<«x2†U2›Hq{*Ëܿç -ðV©ç\I=ÁšÀU±Ì^OoßààðX,‘êìVþø'ÿðíßúÎúõf_»nÝ/¥²K`vÞÜÈ´iӦ͛wí®;t¸¸Ú#ÒVBBBBBBBBBBBBBÿ¡EÁO<¬]¿õÝﲪ¯\½¶xþâ¢äbÍ \¬Ú"ጜ‚q„Ô"œ‡áôÌÙ©é3ç¦Ø>95S(÷:=^¥Zms8ü`©Õ­íÍmm'›NSyð4îìÌ_õt«Õjžü+ž¿BÿÊŽÑ É¹ò;}µÖ*óJæ_É΂°dÿ*$÷òNŽS´äN,wÙ¶JÖÐÝù!P3g0ÈÓVo%§­À§úzO0H`öHµ(VRC0ì^5L–û¡Ø•¯‚7å“J‚¾‚­h’ è&>@l+¿[Ê\áŽ!+7˜WšH+ž¹b;¦­œ èÀ1‚¶¢‚6'ç®C°Ê&ã­Ø2˜­“2W0UîÆ—Óx« á­|ØV8ÖЃ¶U,žÆžàðÈØÙ±3“£cƒ£…R%‘Ê„£ñx2]®ô³ÛÕ—^yÿÃOn|qûöÝûä\±óµ—_eŸÀb¹/K:ó”rVñP4Šñ¨e®Â`UaÎJr®¢ âYeä¶ ¥­’éжJge¤Õª´•´rèYesEJ[勽¹b™½¤‘1ö®Øè'ÿøO¿÷ü~Ýž=<úÈc­!“ -l«Ü­â«õ8O‘¬M›7oÙòu0;»·ø#&$$$$$$$$$$$$ôk¢_üâûhØ»wûÎÇNžZ¼°¼taü+²°å^ uŸ•Z„3óäbUgr ëÜôÙÉ©s3sÃcã±DJo6©50`µÛ:º ‚Õ­Rµ+:«,ÉÂjjmmëP(º»»”*µÎ 3q„»Åî„üÇÃBà\ù^á¬5²œU +(q±jë„ÁwHò¯¨E¸Šâ."Lk ƒÒ -ðäÜŸWR[° -¼òQE1Ä]¬*½Ì.›W|t Ÿ*æ+n»Iüy°š³òWÙVn¾S"\QO}*â±;°}I0v8{8•~°X„¨•ÛKæÌ„éh[Ù]@edž Ùî$hÕM‡qnåòÕwÞûàÓÏ¿¸…¶ÕÝ/°Ã[ï¼753_,÷Ç’öÌìÍúƒ‘`$Îyìä±G°Êž -xìIiOFivŽ%ÒQ¶'3Qâ±cObWo•ÊÑ<Át6=A¸Êä J[åq’`—!vU(J•ÊÀðàèx8–xþèÑ?úÞ÷9²áñÇyä‘uë7Ô¦­ª¶¦­Ö­_¿fíZ¶oÜ´iË–­[¶nÝU·çСÃâ/•Ð¯­Ž<ù$Û¿ñÌ3ûع{÷³ßüf"…,ð¯Vä7²/P‹Gˆ)¬s3óS4Ž@XÁš-–+N¯W©ÑXív#X=ÝJ­NÑÕÝÒÞN ¬S8‹° óWí -Ù¿ÒéŒ&esyˆòíðxk‡>´À´©1¯\èêT-,)‹Å.òhS(ÌGJãe;YÒÀÁDy•ð -Ì+Ü5œvhú¥œG²£Cå£î4L篤¹^9m%ç¯À¶ -Ö.B²»x%°v¤`€'¬üجDJ»èàCܳrËTv/ŽôñÑn/ýlmN7‚­o…ËêpƒsewÊceà -=+^4 yÅv“™®Ø‚1n/{^š'Äa‚PWô±åñB‘x2…xÒÐèÈØÄèØÄÈØÙÞ¾ÁT:ŽÄCáX:[?¿|é·Þùä³Ï¿¸s÷ö½/ïÞp÷ÞƒO>»Á>Ÿ•þ¡D:ŒÄÝ^Ètm‰Â1 ˜á™ì/b[ñz Å«À°JsÃ*†L¤‰ÇÎ{‚4I0•É³3&¬ÌžÍgsÅ ®l^²­Š¸àÐ[f/kd¼P®4·µïûò§ŸÞ¾cÇckÖ¬…0MDçJ[I+À[­]·vãÆ[¶nݼeë¶mÛ÷îÝ÷‹_üBþ¶644ˆ?YBBBBBBBBBBBBB¿ÎÚ·ãÞ½ìÎ'›šæ–Î/]¼$E°x‹ îó’‹5÷°…E¬YaMÏBëÜôäÌÜÈø™X2e4›qaÀî´+ˆ‚¥Rutv¶´·7µ´œ8uúts3ûÇ~Sk[›¢³£««[¥Rëô:£‘ûWv‡ÍéÆv¦ƒ¼>0dÈ¥ ðð•Ç -ÊuBvpjYXÜù‘æò‚G©‡£²yE8wt±’ÁhMKêdÚÛ%㫶!ȱWµþ•„½’kƒîCž¯9WÕ`U@jÏ -2ÆÊÍ[ȳ‚ª`€ºxW‰T–BÚ -ñVÁh<‚i«0²­B8>2 -HvZIr®gE•@X±ÌdÏ–Lç0@‚¸“sUSÌÒ9ÞϪPÊåËx(ç‹D¸ê-÷ MfsGxú™gwí®ÛºmA×!põøƯ!Ù oµ~íZv¯u7nÚ²uëÎ]»Ø£ê?x÷]ù»)l+!!!!!!!!!!!!!¡‡Ô¸o[ìŸÒÇOžšž[XZ¾­ +‹KÙ,w„ºÏ/‡ÖŸH¬ùE˜E8;ÏöÉ陉©i¶ÎÍÌž™ˆ'Óz“Y­Ó ‚åèèêìV©»•ª¶Ek{;øWÍͧ›[šZZZÚÛ]]]===Ö`0š-¾rÚ]€þvúhþ Tä؉sùe Kv´F»»y( ý+2||hCnÉS’¸ëT¤I‚q)…U³Cà -2WÜé’€íèYÅäðÆ®¾f[U‹!©9¬¥²?ÔtI3e Î%Q­Ð­ò»ˆs%® X9+ˆ¨AàŠ³ÙmNá­¸"ç -²a%A³ÕYµ­ä† Ä«¬FzVF«ÁhÑͲmÅîI-ö„P ”{‚~è ÂëqzØo*§2ùroßÀàèÈØYÄ[—ÊýÉt6ŽÂÑt¶0~öÜ¥«/½÷ÁGŸ~~ó‹Ûм}÷þí{÷¯öù…‹—²ùQ­ü¡h °d«`±ç¦z úWñh<+2¬b@²Ê•‚‰T&šÌ€a…0+™Êž¬VÕ‚), Bà*W`ÿw\E¬ -Â*+ùbo±·¯x´ohD©Ö~÷·ÿӮݻ·nÛ†&Õª´á­ä¶à:œ'¸fíÚLJÀÕŽ;·nÝÆöÃGŽÈßĺ={ÄŸ#!!!!!!!!!!!!!¡‡ôô3Ï°ý™çžkØ»·®¾þà¡Cìßæ.]Y\^Yº ü«‹U¨û"XXçÏÏ׶1‚,÷™9`¹sÖ4F°ú]^¿J«±:€‚¥T«ÝÝj­^ÑÕÂÖV˜?ØÜÜÔÖÆ.vtvv)•*V«7!e³ÿÊ ä+ŸóW!÷úì/aÉ¿–ÂâÉù‘o¢Ê!e´dƒH®"ƒ=Žá+p¨|áXÍ,„Œv§[1¦•8íßâ„öÕƒ#4@P2¬Âd[I†gXU#X>ž¤’ç :¥œ•S¢ZñÎ Øw~^ Äesy`ž Ë+Ç®ÉX ;°­Àt²;­v· Æ:db%©È›2`=ЀΕÎ`f;Íä\Ù mÙ-·Ãíõ˜=â‡7i1€k9½N·Ï=ÁB±·ptdd|dììÐÈ™JÿP&[ ±Ÿ3û!ÆSýƒ#ìÓõÖ;ï]ÿìs²­(mõù­;¯½ñ»5†W  „¢)d…þÌ|ŒH#Á­‚z`2Kð† Ÿ'˜F ª‚ ŒWQUPÂ[Áž–‚4Lvœ!X¢ž`¾X†ÌU©—í…8W¥¾‘1_0ôýõß466Ê0öU%A9m%;W¸Z¿~ØV»vîܵmûöúúzùkØÐØ(þ ýOµwÿþ¤`;~bz~áüÊ¥¥ep®–ä–la-Ñ},,ØÉÂbk -YîdaMRkvvôÌD"6˜ÍZƒ! -ÚÎv…¢G£éQkÍ­­M­­-mmloïèPtuu+•JFg0-³Õf…ü•ËéÆå£Æáõ’geÿeþ•|&ÿÊI=<¦å¬±¶\þ<Ð 6Tm -‹*„q Š•Æx»Ð–QŽ´’œ+cW¨*¢Um ‚σé¯*€3W>¢²‡($Æ]¾`Õ¹âTv>IZžž•Óc‡’ Ÿ$HSÿht#!Ù9Œ‹~0CÐ ž•-, ±[lìâYé!gÅ£Vue¶­6\! W^?â­"Ðô•Ýîô8\ЌĒÙ\±Ò7=Á±‰áÑ3}ÃÅR%žLûqÚ`¡\™ž[xõÍ·>ùìØVؼu÷>;ðñuöɉ&Óì÷0öP4Ž…¢DbO…xÔ -v^äTöM« -‹ñ;ÀÁdš¢VYš!H<«T6ŸÌ Õ*ƒc³9ÈYAO°Í!jEUA o•/UØk.”zËýƒìÖS§›Ÿ|ê©G{”<«‡m« ×Ì„ÀÕºuëÖ®]Ëî¶mûö]»wﮫ۶}g}}ƾk×.ñÇGHHHHHHHHHHHHHèÿ¡¾óÝï644Ô³ÕØØ78táÒå%)‚µTÛ%”æb -ë"áÜÁ¿š‡55,÷¹Ok†{+ýnˆ`i.W0RkµŠž•NßÕ£líèhÅY„À¿ÿª» ý+^o4›m‡Ã嶳åv;=^÷ |Ä @ÝÑұÙYUSË+ùW>˜ÇWkvQ -K"¨‡|Âò‡)UÅYî¼KX¶skK® úB_3¯« -ƒUB»T$çÊ㯆¯Ðª"¼¼4IÐëç±+ä`v»Û묙*hç“ùAh J%AÚ¡!ˆ++»Ãdu˜lvB²ÞJæ±KΕ… W£Åh¶˜,à\Y.»Ëó¼'èñù4C—Çíñ‡#ñT:WêíôÕxÿÀH©·/™ÊC‘@0’ÎæÇÏž»zí•?A*»”¶bçO>½±|éj®ØË^¶×¢xLŒÄiAI0ž¢a‚&9+2¯â)²Â¶`4™N¤r‰tŽæ  Á46!j•O¦³ÐÌ(v•Í—p°`‚˜¹B*{o•Í^,çK½è_õ±àýñ÷Ö¯ßðØš5¿$mµAb³sçj=U×­[¿eëÖÝuulÉ_4Ñú§o<ýôo «aïÞÍ[·¾xüÄÜâÒÒÊ -·°–W¶°–ùDB bÍJÖÔÜoË}jfjvnìÌD25˜Í:£1 ;\ÎŽN…J«íQ«[Šv…¢M¡híèhikƒþ`OJ£Ñ¡?h±ÙmN§Óíqy½è_ùX´{¼V—ÇÎÏ>ÄâèòªO%ùZÕ»±³ÍÍ-/Œ9Õ "”Ê€0Ž°&…%&„‹x%Å´øìÂPM -‹wC5Á`-ۊ篤قÉåÅ’ _B²û‚”°ÛŠü7„}ÉÁ$;Ï_ITvt«.>XP¢²›mN‹ÕI A‚±Û -l+ ·­ RæJg0L¢µ³»AÚÊéF?z‚0OÐÓ }—×åöCL*‘.”*}Ã#cÃ#g†FK½ýéL>KÀ­©ôÀÐÈùåËï¾ÿÑ/nߺs¨ì7oݹþÙ篿ùÎÈØY?ÄÞ){ò– fE±«P$!ñØ9Ø -ç ¦¢ ð¬`Œ w®2±LLIÝ@à±K;ÕqŒ`aìXäžøTYJ[å‰ÊŽ=Ár%_#+šHýݼk÷nöíX·nÝ/ \Õô×ÁXA\˜}ûŽõ {ñ‹_ÐWlÿÁƒ›7oj„„„„„„„„„„„„„„þ?껿ýÝúú††Æ½ CccçW.Q‹P^µÖÂyhâ8 s‹À¿Z”Z„rÇá̹éYˆ`õø‚!•Vkw:ƒá"ìTë =*•¢««]¡hiooS(ˆß®Âþ Éb±Øívð¯ÜnŸÏ…ýA$“{ÑÅ‚8毼6žÂªcy¥ÝG†[67–윅6—4ˆ,,@¯ia¬¦Ež•Ä¼Šññ‚a™Ó‘Í+9|El+vÀ'犻XRaÇ 8í -1ìnoÝ*_¹ª^œsEQ+»¼\¼6VF­°$<ö*•Ý&ÛVܹ‚eâ Að¬mExv#´ùú(Œ܈mAyžà†‡m«õë7¬E0û–­[wÕÕ=ýÌÓò×jß¾}âo‹ÐÿyòI¶¹¼îvEG·Z­Òj]]íÄR`þªG­Ö’år¸¨<èsûýn€Ì+9WnYX<‰äö’…eƒ³Ç†5C´­0¤„0s«Ó‚D“Gû‘ÝDæ•7Äç Öö¥sÌ/;WÒZÕ„ÅsV¸“[";9WNo  -i÷ñü•“v ÆŽË'ÇÉì.R­<°ÉŽ A^´9Üf›ƒFJ A;í¸¢‰2ºzƒY'™WH¸²PÚŠÏôúiž ¼5ö"=€·b«Ú,÷ žëëÊ{ãÉL‹~Ù|éì¹ék¯¼öÑõÏnݹG¶Õû_~zl«åË×Ê•Aöœ7Ì&ÄI‚É Å®¢ âYa -+¬F¡-Ó£¸âSÓHµ’gBÔ*ÉÓ9•£ÌòØóÅ,6Á§ÊËT«r¶XÂn Ô‹½ýå¾ÁL¾Ä^Voüóüå¦M”Z·~½ìY=4Ul+,®'ÿŠ=dç®]O:Tµ­öïU„„„„„„„„„„„„„„þÿÐ?üã?bkïÑñ3ä\A -keåü׃Xçy -k —f`ÕÎ"œÀ)„S³ó½ýƒ¾ À¯.W(QëÀ¹Rëõ]J¥¢»»£³SÑÙÙÙÝ]õ¯Ìf«ç¯<>ŸÇçwûÀÂç -)²t¬NSnyy冂!¹XV—›–ÅÉ6¶0 å”"Xî€ÌrçUmì¬p¬Ú$Û*Eó -!í8^Ð-‡¬5¶•÷á"¶iIœ._Í[·o¯Û³ç¯þë_È_¢ºÚ•ÐÿZ}û·~‹íO>\ßظmûöŸüã?-_¾rqåÊ…•ËV.]ê„ç—e¨;Ž#ÄÅAX K³`a-NÏ/"ȧ°¦ææÇ&&SÙ< "Ô냑ÛëéèììT©ÐÂRuvw“yÕ­Tª´Z­Á`2›mØt¸]n¯—- `ÁÎ+p«\‹ý(«`¹O0Of(vnU<'Û*™–ÁìcGÿŠ2W°¡ÈÂâñªÚžàjH{ çª&vå’ + ÌNmA'þ/$*;†¬$¼V^Zv´ãhAáÑ骕ì8 Zá$A‹‚´È¿ÏÊd3bI->:ª‚fr®¨*Hæu )¸ÅþˆŽú‚a¶\”ûrzœn¯‡ý’"ñT&_*÷õ Œ Ž”{û3ÙB$ -pªX<]®ôOÍοüÚzãöÝû÷¾üêþƒŸÝ{ð³ëŸ}þÊkoÌ.,•ûýÁ¨½çPG -á -¢V¶‚€ÙÙK}W™X*‹Hölœ'¬ d•D¶ØVR[P‚±Ñ°*bæ -W˜¹óŠ¼ØV0C°ÒÛ7804R,Wì.Ï©ÓÍþƒÔ×7°üc=VÛ||5áj4L]+¸Û¶mÛþäÇòWfïÞ½âï†Ðÿ6}óÛÀ¬~âðá= ;wïþÛýèê˯JþU5…u^MÈqîdd]œ_„.áÜâyÀ¹/à8¹…É鹉©™™¹Å3“S™\Þlµ!+è;{ºä®Wj4]J¥R­VkµìÌî`²X¬6›ÃåB~»×ë÷yü~'F°ì.2¯œ‡ÓÌ–Ýi²;ȶ/Ë× så4‚s…Ëj7Zm°lvö( `¹šµÊ -¹á˜yYUÔ¤­‚¡šÂ <Ä ª â­$ Ë飂Õéq.“/šmvN‰ESé”ÁllioSétjƒA©Õª0|¥3Œf³Íaw¸œN·Ëáry|€ÀÿÊå²9]f›ÍbÛÊh±­vySHXÁn³Á5¸ôf˜ÃÜdf èO+æµ Ä%G°¨åGí?°Þ -í,p´À°¢›àÖ€Û‡H+ŸŸ‚Ï -ÓVHb·cCЉ†²­¼¼´HÃ%$;-h´Ž4Û1meq€m%­øAž¶“J£3²U%\Lzƒîl±™¬vè ºCP§7á2jôF°€þóH[!‚l{+ÅJßÐèÈø{þ£ÇŽÿÁþÑÁƒOlÜ´é±5k ¸ññ ’m%{VU¼ä­Ö±;oÞ²uË–­;ví|âÐ!ù»ÐÐØ(þ  ý{Ó7ž~šíÏ<ûlÝž=õüýï¿ñö»`^]’ÖJ Ôã°.-"шX K|"áÜÒyÎrŸ]˜œž[X:;5/—]^ŸZ« †ÃÅrÉë÷¶+:„ePëõjÎ`2™­à_ÙD¸»\^±Ü­v»cW³EgWJ »Ie0jОÒp·Ê¤ÒÕƒÊ`PŒJ½A¥3¨Ø®7jÁò²-6Œ9Q - ¦B6ÉEB§Ì`§ƒ?D#%¶¯ÚÝ•A©ÕõhµJ;€C¥Ôêaé J^…{7`µØ}tÝjMFËî£6˜´&³-,Ghu¹mä;AKêB£0Hc’mEŸ8K¤C‘x(š`{8–Œ°…õ@Øat GZɶÌLfc©4Å®påȢؙWél.›/¤9تH Á,[…R¶ˆ A˜!X¡ä$ÏŠ­bo€ÙÇΔ+Gxú駷ïعyËr¨ª+©*¸‡ òy‚@¸ZûøÆ[·mÛ]WÇö=õõ‡Ÿ|²j[íÝ+¾ûBBBBBBBBBBBBBB¿ZúÅ/~Ѹoßž††Æ’©k¯¼ºråêòå«+—¯¬€—u… X¤.aÕ¢‰„Èź,,´°ÎÍ.LͲ+V&§gË}N¯Wg4¦Ò鑱‘B1¯ÖjšZZz4­Ñ¨1ôF£Ñd²áB›ÝfwØ­6›Éb1˜ÍìVµ^ß­Vw£[¥èV*º{==tèìQvtÙ¸ð"\ߥRõhtJ°°LÄrGàÜÉŲ¹=V,‚bñ…˜ÎÂåµbÔÊ -@v|>–-³¸ë`ç&•ÕNH+>-‚|ž ͪ•Õ`²PÔ -2W“ +­–JkÐbKg0‘ˆÅn¢½† #¾`Ø… .Yèt;]ÀeO$³¹|¹\Ûª20\,÷e2ùH,áóƒáh¡Ø;5»ðêëo]ÿìó[wîÝ}ðÕ½?»‡¶Õ§7n²ßN:Sð#”³ -†ÙãñT8`«H<M¦£ñ4– ÆžE*;ì‰4íiE+•%¼U>ÉcÎ -Vc'¶U^‚±ʵžÛ å>ZÅÞ¾R¥¿hdäÌ„J«ûãïÿÉ–-[7nÚT cçï™'ˆ¶ÕºuëÖ kË–-;wíbkûŽŸxBþœ×Õ×ïرC|ß…„„„„„„„„„„„„„~åô[ÁúÆÓO×íÙÓ°wï|ï{o¾óî -˜WWW®P -‹V‡E,,u¿È‡b‘ðü°Ügæ¦ææÎ_`×Ìä -f¸R½}½g'ÆÓÙT—²ûtkK·J¥E‡Jg0ŒFba±»±ƒÑdbWª4šn¥²«GÙÑÕÕÖÙÙ¦èjïd¶³sg«¢³£«».ÒêÄgE²S©îVkUzƒÆhÒ›Ìz°°l&› ('9QV—Çâ+ºVܼÂ;»MÑršÈ°‚å0€Ÿ ++Ý„Q+›Él—& b ì8IIìH¸2¨Ô­ÎH^–ÞÈ{‚f«ÃjwÙø<Áˆ7vùüJ‚f÷ùC‘h"›/–+ý•þ¡þÁ‘re ›+Æâ)0ì„S™ÜØ™‰+/½òáÇŸ•ýþ´­¾º{ÿÁç·ï¾üڥʀ?Èž9Š&‚‘8[Ñx*ŠÍA ZÅjSÈ*CˆZÞ*'0{ÓVh^¥2@b‡ÀU&—!0{6/—i¤ e®r¥^^„‚P”¨ìàY±½Ü7882Æ^Ìÿþ';wíZ»2T´¾–¶Z¹Z³´qÓ¦;wÖ74ìرcwÝžZ{CCƒø¦ ýJë™gŸeÿêß·?Õ¬áÈK¯½¶r"XËèb-_¾"±d ëÂÊ¥¥•šKHÖâù‹ Â:?»°85,vÿÙ…¥Á‘±d&k²X|ÀèøØÄäD"•èVvŸnnîRª´“Æ`Ôèõ“ÑY,£ÉbÖ K¯T«»Á¼êìèìlëèléP´´w4µ·7·w°s3»¨P´):Ù¡•Ù®€½½|-EOO—JM),`a9Î'‡Ñ†Y,°§0UewbÈ - +¼ˆV¹U°›ÙC0R¥7YŒ–·U1ìf¬âIÎèYÉÝ@vQš'H¶UrV@¸Ê³%e® -²JãÊäò¹|rV`[•hª Ì,‚…=Ár… -eH^˸*Wè"{›ò§¶eËVö9\¿a¥­V™Wè_­C*ûz´­ÖÖoÚ´yçÎ]õ «ì»wï_g!!!!!!!!!!!!!¡ÿ¨ÚS_¿wß¾ÝuuO=ýt ~ùõ×e kE¶°._­%ºc…Pö¯V–ªÖžÂš_¹r=jzn¡xÄ YíöR¹4¿077?“J']§››]Ý*Ne0ô¨5j­V©VCòJ©Ttuµ+Í­mM-­§š[N55Ÿ<}úÄéÓ'O7dç¦&\ͧ›[Ù5àhµ´nimjmoéèhS@—°£»§K©îQk{´:•Þ 2µd:a\JÏÚSËBS ­-›©’M*\x¸I£7ªtF¹ ÈÁªÒ™ôh^é€meRªõjíd[a"‹÷qž {‚a?äön/»Òn¼•×ŠÆ’él¡ÔÛWé®ôËý™l!OÃQ¶2¹âø™É+/½òñõÏîÜ»“ös¶qûîõÏ>õõ·ú‡FÙÓ:ÙY¡yTö07¬À§¼UB&\eɹJJ0vª -R%B70_ÈRÎ -l+b[3¹*ç*‹+Â[‘g%O,õö—û`geoá'ÿôÏO:Ì>{­YóPOp}í}üÔéc'O?yò8ÛÙùì´N°¦¸X§š!š%YXÝ@tWªº5ÚöÌZ=± FHF™L:xS#œµèP±kð ¦ å§Ö›T:ƒR«ïÑèá Ñ© ÓeP7Å*­AÃM-“ -£Vp«Æ Åk(¦e0[LV»Åó?öƒ.oÀéõÁ@C»Óáò¸=ÐL¦²ùbooe­Ro._Š%ÒÁP”­D*38<Ê~þïøñwîmõÕÏÙºsïËëŸ}þÖ;ïMÍÎÇSi‡ÛçE«Ãã©pTÊ\ÅSñd W ^Ã*›K¤³q \±§ª`–{V)´­ä´®Ð­*”3µÊ‘[UÒV%B²ƒsE ÁÞ¡Þþ!öØ`$¦Ôè÷÷~ï‘GeŸºõë7Tm+RMIp=V$vÞ´yóÎ;Ÿ8tHþÐÖÕÕ‰o®Ð¯‰ž}î9¶7îÝ ¬={¾ñÌ3nŸ¿¶E¸ÂAXX'¼Äí,$º_^å_A -¬Å óKæ–ÎOÏ/,­¬¼ôêëË—¯œ›™+ôöº¼^o 04<´¼raéÂB¾UkÔ'N:ÕÒ¢èQ÷hõ=jm·J `v…¢©µíTs3»õøÉSÇNœ8zìøÑcÇ^øù¿Þÿêg7nÞzë÷Ï/_*UÜÞ {þpÆRæ*OG)¢²=‘ž _ Zé,/ Õ*Ï WY"\ÒYÈYexà -F -¢gUe[åÆ%A˜!˜/WØ*öö³×Sêa÷doNg0ýçÿü_¶ãÀÿIàjý†µèXmÀØÕÆ·mßÎ>™òÇõÀ¡C¹úõÔX¥räÉ'ëwîÚýß~øÕ+W/]{iåêµ•Ú Jxåâׇ.K ¬óœå>¿tav@XW^zåå×Þ`w;7;WªôC8(>sfìò•KË+*•^½AìÔÉã§Nµttvk4J­¶K©Rtu·tt4·¶8uêÅã`^½ðâ‹?}áèó/¾ø±cÏ;vô؉Žá؉Oœ8ƽ¬S'N>yú4·°ÚÚ[ÚrKÑ£Tt+Ù3wö¨º”Ún0ÊЛRÓÒu©5àqÁõZð»”êN¥º ¼/eg·RÑÕÃÎËÎݪ®\JuRÓ­Ô¨´µÖMC¬²Ýh¶Ypž Óíó€mb»Óã·;Á¶‚‘‚./ûIÄél®X,÷•+lå ½ÉT.CÑH4Q(õNNϾüêë×?ûüîý_~õsp®~öó[wî¾ýî—®¾42>Ž%à[Å¢‰t8Ž9«x:’€œUÁV [±=žæÙª8ÙV°2’s•Ã¨U.S Yå9:ƒ0FP²­È°*õb7°Àì ÉÎÞEÿÐh¥8OLæÿýOž~æYúŒáêñ«‡ ®* ’sÅôøãoÙºuw]Ýá#Gäè®]»Ä÷THHHHHHHHHHHHHè×Vßþö·Ù~èðáý쪫{òßp{ý¯¾ù¸Xµæ•„ú¸re™&^Zma-¯,a«:Žpq‰­×Þ|ûåWßX¾|uf~¡ØÛçöù¢ñèÙ‰ñKWV._^4[ͧšN¿püØéæ–¶®.2‘Ý=mŠSÍ­ÇO>züøO_8úÏÏ?ÿÓçŸÿ—ŽþË /€—uôèó/ÿé±c/;~ôø‰£'N;yòÄ©S')…ÕÜzº¥½©½ƒ&¶wv±FVWOGwºRàeu‚¯…î\´::»Û»ºÏîÌ좢‹-v€k:áI:»•]=ª•F©Ö+µÀ¶›Ì4OÐjwÙ]·/àöayDeGÛÊ8õH<™ÎŠ•rï[…R%-„£‰`(ŠÄ²ùâøÙÉK—¯½ÿÑÇ·îÞÿò«ŸõóÿñÕÏÿõÞƒŸ}ðÑÇW®½<95›ÊÜ> \aI2W4Fxì8=0>vqŒ –3T”CV¼$˜Ës$;ÖÉÅÏŠ‚y\à_õ拶C= +ð¬ -°CO°o`xht_êõø|‘XttläÒeöL+cã#Ÿ§£Sqôر^|±©­ ²R*Mgª½³»¥­ýTSó±'!yõÂÑúéOÿ…­çŸgûO_xñ_^xáù£Çž‡v!¸XÇ¢ VSÓ©æf„º·5·ÁhÂæ” -;:[;¸Õ¦è"k« ‹p†wË«Îìþ -Èq±Ç²G):;]Š®îÎîžn¥F©Ñ©õà\錓Ån¶:ì.à­ü!Ne÷ÞÊæpAOÐㆣ ©'Xî(–ú2¹R,ž -…£¡p,•É ŽŒ-]\yûÝ÷?ÿâöý?{ðóýÙ¿þ¶zã‹—^y}rz¶\ENo c70«á­bÈ`SIðV#˜Îb1#­¤•Kƒm m«Bg"Œœ«2ÙVÈc/³®ÇN Aô¯ú*#ããÃc6‡ûÄÉÓñƒ¿„ºßoþæ#>úKG -ÖÚVkÉ·Â:á–-[ëëëÿ÷ÿ ö¹gÏñ­"}ë[ßbû¡#G‚½-_ ôêoñ -áC-B)‹uñÒ©HÈqîKr‘‚Xi"áÌü⥫/½ûÁ‡¯¿õîµ—_[<_ªôùƒÁP$<4:×^?8+Å -…!ȺeÈÍaÆ{XS˜l*Œ¾BØWŸ!ñõ–pŸz‡»ý¶;îvûÃï -®î ±ÕèûBlußø ã'Nž8åÁ)NK¦²OŸ5gÚÌÙ=<ó©ÓS}‚Óž1kμù‹/]±bemuíê°L°*LeŸ=g^ô¡Gæ-\Y»jÇžxæ¹^ó­·Ï¼÷nRpu潧ž}¾¾©eͺK—¯œ=wÁ¬0+^&¸0¬ŒN¼Fpé‚x¶Õ‚ÅË“yVIZ•l\¼lyªU0 ¯âÀ*\Å¥VË’‚+j’š«è[¶²:I®âyV!³Z^æ\Å­‚!¹ª®[4 Ö­Y·yÛŽšUkï}ïßÿÃ?~é’/—„*©N;w”Zuí–žm•\å&WsrB½U^^=ò -JJ˾òµ¯gþöÊË+üüo|éK_Š®—^ziŸ~ýŠKKûöï?wÞ‚c'Ní?t¸-I®’^ÂTœ•ê%lMf¹§a…¬$Âjm‹aµ64µ4ijÜ÷6í;~òô“ÏåÁ‡BÁՃӧϘ=gîüEK–/_QS]½ªºfõŠ•µ‹—¬ˆžœ1kÎìGæ-[±rËö·?ùô³¯¼öÆ›ïœyçÌûï¾öÝ÷ξòú¯ÚY»~ÓÒå+ç-XÁù —†ØjÁ’°Ipñ²…a`’V… -«pâ&ÁEé>ÁÅñö¤apiªæªjI<’=ÕX•žmîk–W×ųÙk’:«¤à*žÇž:Õu!¶Z¿iëÆ-Û£ï?ÿâ²/_ú•ŠÊÊ.¹¹çuê”›Û53á*7Ó$˜š»tMÅVÑü¼¼‚ÂÂ=zõì9ðüó3xeb+àÿPEŸ>eE…—_yÕžúƃGÚÛ9'Å:˜²â¬ä´Äã°’YîMñ,÷Æ}aœ{þֆ¦}aaCS<Ü驧Ÿ{ቧž9ýø“GŽØ¾{˧Ϙ1gîœêšê­Û6oÛ¾uÍÚÕÑÃq÷»u諯½æ—]vÙå—_uÍ5×Ýpã­Ã†¿sÄ#G†r¬»GÝ1bäð0ŸêΡ·ß!Æß:ô¶[Âzó!7 zË¡7Ç÷ñ8¬aCB#áð!Æ >ü¶á¡s0N«îŠwŽ ÇÜ7òÞûÆŒÚÇO;aâý“¦Lœüà”©Óxèá©Óg>4}fX#8íá)¡Ôê¡ISœ8é)<ôдPoµ`á’¥ËWV­¬[Y³ºªºvɲª¹ó͘õHô±…‹–®Û°9úý<öÄS/½òÚo‡>Áwß{ÿÝ÷ξùΙS>¾yëŽès.Z6û‘³ç†ñVq“àâ°FpáÒx‡`joà‚ÅK3‹–®èX ˜¾Y²}ztÎé†Wuë–=˜=µL07T[Eí7 -vëÞ=¿G¢¢ÂÂÂ0+‹>AàÿÔ_~=4s}õ«_­èÓ§´¬¬¤¬lÑ’eíÇN´e¦`ý/Æa…*¬É8÷©*¬–ÐER¬tV}SóÞ†¦æýžxúÙç_z9I±Nœ~´±¥uÍú Ì[0}æÌy æ×®ª]½fuuMõ¼ó&LžtÇ]w]sýõ—]qù?_ö‹Ÿ_ö‹Ë.ÿåµ×¾ñæ[n:ô¶Ûï~ç]wÜÖ†6†Ý‚wFÏ„/9*õüÝ£FÜšGÜ3zÄè1£ÆÜ;rÌ}£ÇŽGU÷Ÿ˜TXÝ?iÊ„)¡ÈjÒƒS'O6eêô§Íx`ÚÃ<éS¦N›}hʃ¢—MœÝL}húŒYsæÎ_¸d銪•µaBTuݲªšè‰Y³çNûÖ®^[ß´ïÔ£¿ðÒ+¿zóíwÞ='Wa¥àó/¾²koãòªšdžU¼LpQÒ!8Qtͬ ;ãÊ«0=äWqc`¼CpEÇ&Á¬R«èÇYšÙ!˜Ú˜ ¯jã Wq{`ˆ­VÅËWWÕ$³­ÖD÷5ukjW¯Û°y뺛ÇOœü­¿þNyEEQÏ^]»u C×CX•µR0k™`nÒ'عst“ߣ gÏ^……={õUpUn¥ ðoVÙ§Oy(Á*ºâª«÷4„¬TýÕ¡ÃiKßgÏrOåWq VtmÎÌrOCjVs²ŽðÉgž{ñåWŸ{ᥧŸ}þñ§ž>rìÄŽÝ{–®X9cÖ¬é3ž·`þ¢%‹/Yüȼ¹S˜2rÔ¨›‡ÜzÕ5Wÿâ—¿üÙÏþó_ü⿼ì²+®¸2TdÝpÓ!C† :üö°ðî‘w‡AUcFŽ¾wÔ˜±÷Ü7vô¸ñ÷Œ?zìý£S=€ÆM˜4vÂÄñ'›8yü¤)&?0aJ8˜:ùÁ‡¢3eê´äfÒS'Ny0zÁýÑ‹ïŸ8þþIã'LºÂäèáä¦N›>3äV‹—-_Q½²¦.ÄV+ª.^úgΞ9û‘å+kvìÚsôø©g_xéõ7Þz;[½÷Ι÷õæÛÑo¬nõºÙÌŸ·pÉÜù‹ã>Á°@0lò«…q`ߤˮ–,_¼dùÂtr•,\’Ú¸"Ug϶Š“«•ÉJÁ0Û*_ų­ê’j«x°UªÚje]Ø'X®á¬^·aãæmÑðO?ýYEeeaaa÷¼¼$¡úTfÕ5[%'.¸ÊéÞ½{aQQqqqïÞÅå•óƒïeþ®¢?*ÿsÿF—|ùËÑõšk¯-¯¨(-+ëÙ³gUuí¡ö£méت-a¥­¬+ÌÂ:Ô²ÿ@R…"¬ýû›[ÛR³Ü÷ÅUXÍ{ê÷ío{êÙç^zõÕ^zåù_~æ¹{òéÖ‡ÖnØ8wþ‚©Ó§Oyðiӧ͘5óáOœ2iÔè{†Ü6ôº_qÕ•¿¼üòŸÿâŸ~Ùe?ÿçþù/~ñË+®ˆž¼2ú‰ßpýÍ7Ý<ô¶[‡ ¿íŽ; «»G…ucî AÖØñcÆÝïø ÷Ý?1Ž°&Ÿ8iÜ„Éã&N?iòØø™±ã'Þ7n½cǾoü˜±÷G×øŒ»/î%wÿ¤I“CÁÕÃ3ÃôõÅK–/_Vµ¢ª&:ÑýÜy gÌœýðŒ9 /ݸyÛÃíO?ûü«¿zã­0Þ*dVoŸyïÍwÞ=ýøS›·ì˜=oÁܤÔjÑÒ¹qåÕ‚Åq©U¼I0y¦¯Ç±U2˜}ñ²Ð'¸$Ω/[žoæ±W-[^lŒK­âaì©k<}eÒ^Oe_Y³jEMa¥Ç[ÕÔ…ÁèÔ®^õ›¶®Y¿ñÖ¡Ã.¾ø É~ÀÌ`«néÁVéÁìYÉU—ÜÎs¢‡…E½‹KJJK - ³ ®¾ÿÃFŸå.àßWß¾}Ë++‹zõºì—WÔ7î;xøh:¿:’n'<´ÿ÷ª°â+些[4gª°Â,¬ýõÉ8÷†Æèù§Ÿ}þ•×~õòk¯¿üêë/¾òê³Ï¿xüäé½Í«×­Ÿ»`Á”©S'Lœ4iò¤qãï}ï½#FÞ}Ûðaƒo¼áªk®¾üÊ+.¿âòÈ/¯¼ü—ÿò—_þÏ—]?yÅåW^yÕ5×\sÝu×ßF¸ßpóÍ7 rëmÃnN<¡ýÎÛï1üÎÑõö;GÜ1âî¤÷ð®»GEgÄÈ{BäuϘQcÆŽ¾wì½cǻ҄‰S¦L6}ÆÌ™³çηhá¢0)=„K‹–Ì»pÖìy3B)Ö¢U«×EÿÒÇŸ|ú•×ßxóíwÃ>Á3ï¿óî{o½óî /½ýó.Y>sμGæ/J†±§×.‰wÆû—¤:—ÄiU²I04ÆíqHUµdÙÊèaœYU%™Õ²¤Î*Ó*êš+ë–'ã­VfÖÆíµ©R«x*{h¬[³nÍúë7m™úxô¡UkÖÍydÞ”wÿø{ÆŒ1òîÛï¼ó¶áÃn¾õ–ëo¸ášë®»êÚ«¯ºæšY]uÕåW†v«®¾êÊ«¯ŠžLNôšk¯½îÚë'K oHo!¼eÈÐxÛàíÑ qÖwÝ9âîwº;N®F;fÜø±ã'ŒŸ0iâ¤)L6íá™3fÍ™9{Þ#óÂ6ÀÙsæϘõÈÃ3gGgÎÜùË«jvìÞ{üÔ£/½òÚ›o¿óλñTö3ï½õö»¯¼þÆѧjêÖ̘=wÖœùÑçÎ]°8©³ -½‹–ÌO÷FÏÄ™XØ$¸hÙò…K“M‚!Šó«0äjÙò•‹—…‘ìK–…9WËâ&Áø$M‚5ÉÃYUÕT…•‚µÉT«•µ«Bc`¼Fpe*¿Z“Ô\­^»aéòªË¯¼²¸¸¤Sçι¡A°{&¹êznÍU¦O0''§sNNô²¢¢žÅ%%•é®ÀÒòò’’ÿïÿ ¾þ0Ƚ_¿~å••={õúéÏÞÔÒÒv¸ýà¡°‹ð@|mË„•ZM˜µ”0N±šãüª9=Î=ίâ‰îMÉ8¬¦]õ>þä+¯ÿêõ7ÞzýÍp~õæÛÑý /½ròÑÇꛚ׬߰pñ’©Ó¦Ý7~üÝ£F »ãŽ¡Ã†Ýrë­ƒo¼ñºÁƒ£s͵×^sÝu×\}tíàÁW_{íu×G¾áÆè5ƒo¼ip[Ý|ë[‡ 2tèmÆ~ÇðÛï¸ýλîq÷Ý#Cl5jô½cî±ãïÿÄû'„Ù쓦<ðàCÓ§MŸ9ýáYÑ5œ‡Ã5î\P][·c÷Þ#ÇN<÷ÂË!¶:6 ¾{æý[½öÆO?»mÇîGæ/xhú¬xûÒ‹Â<«¤Újaz{8qxµ0Þ'çWËRÃØ—%‹ãyìé Wa¥`Uuj™`UuX#«_­kkWÔ¬ŠoBU^ÕUÕ&#Ù×ÔÆ}‚ukÖE×êºÕ+ªëF¾ï’K¾Ü)èœXe'Wñ>Á¤à*œœ0½=7¿GÞÅ%YìÄVÀÿ¿ûÝïJËËÊ+*»çå­^»>®¿j?pøHR…§X™üêPÇ,¬¸‹0µ”0ŒÃJµ6µîonMR¬Ö†æ–t„Õ¼}מöc'_~õõ_½õö›o¿ûÖ;gÞ~7:ï½ñÖ;/¾òÚ“Ï4íáY³æÌ]´tYÍêµÛv슾û©Çžxé•×ß~÷½3ï:ï}ý·¢Ÿ¼ýøÉÕë6Ìœ3wÚÌ9a`º°*¾Y¾`ñÒ8ÈŠ·¦¢ª0Ïjqª7pE2ó*³=0 ¶J汇 -«ôlöd{Um2ØjÅÊÚx«`j¶ÕÊø„²«ºÕ5«Ödb«Uk7D×ÅKWLŸ9ëÆ›npþÀèmýìyç…FÁîy°Ú*]p•=ìQPPZV6pPÇ`+›€?¡«¬¬¼²²[÷îukÖŒ[“ü*}${(֧ƹ'%X­R%X¡‘°ut:"¬æP‹Uß´ow}㮽 '}ü¥W_ûÌ{gÞ;ÎÙÞÿàó|]ßyïý7ÞzûåW_{úÙç:ÝÔÚ¶eÛŽšºÕK–-Ÿ=oþÔ‡¦Oœ4ù¾ñ÷sïÈ{î¹ûž{âœjä]wß=âî‘#FÞs÷ÈQ#G9êžQ£ÇÜ3æÞ{ïwï¸ñcÇM?abô‰“§$‹gÏ™7ñ’eU5uë6lÚµ§!ú§=úÄS/¾üêo¿óî{gß’÷Ï~øÞÙß|ûÝç_|ùÔ£oßµgÑÒÓž=wþ¢Ð!zCl -«’òªe˳J­R½I3à’eãIì©í©IìU5©5‚UÕ™´*¯ÂÁ5u+kWU…k<Ò*¾Ö¬ZS»zmÝêµkÖmX»~Ó’åU3f?ý¾ùWßêÔ©ÓgÒWÝR+ãÊ«®Ý:f³çv͉«X×îyyE½zöí×7ûO¢RýðGã‹—|)º8ÿü²òòÞ%%ßÿÁµ=˜$WY…XYã°Ž¤a¥"¬xÖÁè¦eÿÁt#a[óþŽüª1ίâkëÞ¦æ»öFŸxê™×ÞxóÌû¼öÃ÷?øèƒ?úð£?üè“?ç쇽ûþÙ7ÞzûÅ—_}êÙçO=úøá£ÇšZÚvìÞ»nãæÚÕk«jj—®¨Z¸xéœyógÌ~dÆœGfÌžnfÏ™9gÎÌÙÌ™;þÂÅ‹–®X^U½²¦vÕšµ7oݵ§¾¹uô¥N?þÄ3Ï¿øêko¼õΙ÷>øðƒ?NŸ¢&zò¹_>yú±è®Yµvæì¹³ç.X/ ÛCo`˜jÝ'OÆ3¬Ògi8I‡à’xªU’\-]±2 ¶J– &óØ“SU³"Þb«°I°&žgU—*¸Jo ±Ufûº°I0ú%DÿÌQ÷ŒùÑRÙ'¤OçÅWÙ‚qfÕ-kŸ`˜m•<ìÖ­{~AAIiÙ%_ú‹ÌCYY™ÿ#€?Zeååå••y=òWT×n?~ððуGÚÃõðу饄I/aª‹ðPaes?˜‰°š÷ïoÚ¿¿1ž…•êÞÜZ߸¯¾i_CÓ¾0k÷Þ¶ÃGž|úÙ×^ã½³!A:ûáG|ôñGòÑ'¿þø׿ùä7¿ýø׿ýø“_øñ'|øÑ™÷?xëí3¯ýêÍ^~å¹_zòÙç{ò©“§k?vüà‘£áÄ[[<¹+ºi?vâø©GO?þäO?ûÌó/¼øò«Ñç¾õΙ3ïŸ=ûÁG~ôÉGÿ:9~ôqô}CböÞÙç_|ù؉SÑO¸z݆ù‹–ÌzdÞ¼…K. ‘Tjo`rÒ÷‹SÉö8¶Zº"™Çž>+SeWUÕé‚«¤æ*•\%¥VU5¡Ôªª63á*³Lpmf`]ô3mÚ²q˶¹ Ýsï}¿¼âª‹¿ð…ä½ë’› -®²†\¥÷ vKš“‚«¸«[^~~ï’âþýt¼õb+àÛ7¾ùÍè:pРҲ²Òòòoü?ÿÏѧRÉÕáT aˆ°RåXç6J rߟ^G˜:qVSè%ìØKØÐÜÒçW!ÅjnÙµ·aÇîúÖ‡â‘S¯½÷þ|œª¿ÊDX¿þÍoó/ÿó·¿ý—èú›ßþ˯£ó›ßÆÑÖo¢×$¹ÓÙ¸Ý/4ý}šþ¢/óþ‡žMUsýúãäKýú·Ÿ˜ÄVÑ7ú(z½ùö»O<ýlûñ“{›×oܲhéò9sç/X¼tIÜý·xYV6ªªª§b«tŸ`ªÎª*žs•‰­Â«ø„"«e+k–u´†Øª*iŒOUÒ$X»je|âØju2Û*I®ÖnܼyÛŽ•5«ÆŽŸpíõƒ¿þoö((ˆÞ²N;wdV];F²§ ®ºÆû»„$«{÷nyy……ÙQÕÀÄ_àOEiyyyEEaÏžK–­h?vâà‘£‡·:]C–•É¯œ³—ðPºëÜ*¬x)as<+5+ÝK]ë÷…vÂ8ÈÚ¹·aûî½Í­mGŸ|âég^ýÕg?øð£O~œLôY!ÅúmrþgtþßèüK|ÂÃô‡~“œßþÏ_ÿö_>IgVò›¤²ëÃýÁGŸ¼wöƒç_zù؉ÓÑ÷ݶc÷êu—­¨ž;oÑÂÅKãr©êdÄz¦0äWÉ¢À8›Z²,ùPظtÅÊôHö•©Ìª*]d:kâyìé̪&Þ$˜™mU“άRËW×Ô­© ±U¨¹ZµvýÆ-ÛÖoÚ:}Ƭn¼éÛý>}ûž×é¼Ïžw^ÒxÎHö®Ý²§²ç„FÁP”•——Ÿß£G¯ââ¾ýûw¼Ñ -®€?5_ùêW£ëç/¼°¤´´¬¢âkùõã§N‡Ø*DXGIGX‡2C±’vÂt-ÖÁÙqî©ë@2+Ta…B¬–PˆÕØJ°B/aSkcSKc\Žµ·±yocÓ®½ ÛwíÝ]ßÔÜÚvàpû©ÇùÕ×Þ}ÿì‡q„P©›OâDë“ß$ÕYÿŸTmU8©‡ê¬T‡à'¿þð£OÞÿà£_½ùö“O?Û~ìdô-¶ïܳnã–êÚÕKVT/X¼li2ª*TI…ôiEͲåÕK—¯\²¢jI¦žjÅÊ$ªÊ,Œ_“É"¯x {2‰}ùÊšåÕñ&Á•ÕIÁUˆ°¢gâIì+kR5WÑ}UÕ®Nõ F§nͺu7oÙ¾+zýÐÛ†÷{ßÿü…åçç&Ìz»*¹J¦²çvÉÍ͉[£ä‡ÔªGaQQyÅ9“Ø{ûkþ¤•WV–WT–”–Î~dÞ±§BröpgLMò«¤©°-bí?t(ÝNx8‰°Ò{ SK £ÓÔÚÖGX™qXa5aSk}S(ÇÚR¬æÝõ;÷Ôoß½gW}c}Ó¾æ–ý-mž8õèãO½øÊ«o¿ûÞûg?üàãS¥YŸ$9Õo’‡~œº¾ÿÁGïœyÿõ7Þ|úÙNž~, ~ß·ÛÎ=·l[»asíšõU5«/«Zº¢zEu]<5½nùÊÌÀÔdª8‰ŠS©åÕIrÚ«ªã¤«*™Á¾¢ª&Ž³V¤ª­â/²<Æ'W¡Î*5ÞªvUôd¼I0dVÉUoµ¶6ίÂ`öõ›6oÛ±i뎱÷OøÑOþî _ø‹Þ½‹;uêÜ9'';¶J%W¹ÉIÇV99Ñ“¡Üª  GAAqIɾøÅÌÛZVQQTTäÏø“öõo|#º~ùÒK‹KKË++¿òÕ¯~â©Lx•t:’ªÂ:çWYK wLÄ:˜U‚Õv(i$Ü—ÕHظ/Ž°ZÒVcKCsk}ª+ÔbíilÞÝиcwýÖ»·íܳc×Þè~÷Þ¦ÝõM;÷4ìÞÛ¸§¡9ú -m¢ïؾÿÀáè[„¯ßz ¡¹%úÄÍÛvnÚ²#é¼[»aóªµjV­]Y»:­N®¨¥Pq+_mèæKJ¤Âµ:dÕĵXÕIrµ<ûÉOÕ$5WéíñM¨¹ -±Uô½VDß®fU²F0ë[¯‰ë¬Ö$UÝÚõÑuÕÚõ6oÛ¾kïìGæ]yõ5^tQYEE·îÝ;Ç‘T¦O0žpÕ-»Ú*Þ'˜“Ó¥K÷x¶Ur¢÷.ûm-))ñ· üS^YYZ^Þ§_¿š~âÔcÖ‘ŽF¬éîGÓã°Bµ¿£ -ëpzVj"Vsz¢{sz¨{cRˆ•Šµ¿¡©%‰°ö44ínhÚSß—c5ìÜ]¿}Wý¶»·nßµyû®M[¶‡„jÛŽäºiëŽ ›·mز}ãæmë6nY»aóêµëëÖ¬_µvêµëW¯[_?¬]½®fU¸Æ7ëªëÖÄó¦Ö®¬]*¦ªëâ¬)œåÕµ™Jª$§ª -7u©6ÀИ4¦j«âø«6Þ¤UÉ—ªËÔY%ß«.|ßd$ûº¤a0úÁ¢ŸvÛÎ=Uµ«†Ý~Ç¿ø¥²òò¢žÉ®ÀŽØ*»U0™pÕ%\%EY……={õ*,,,)-ï߯_æM[ÿ%ýõw¾]¿úµ¯—–VTö¹äÒK}âé^eçWq Væ&5+=Î=5Ô={VȯÂ;ýZÚâ‰î­™+uS¬PŽUß´¯¾1œ]õM{šv5Ä×8ÅJª°¶ïس}çž­;voÞ¾3iµÛ¸uû¦m;6lÙ¶aÓ¶u¶¬ß´mýÆ-ëÖoZ·!:›×¬ß°z݆ÚgeY!G -áU]—’|ieºD*ÌW¯YUWd…¨jemz]`ÜX]½2[Å\©Ä%^uÕu«Â—«¼²×†ÌjͺèÔ­YýH·l‹Îä§~ëÛß)))+(,êÖ- `OҪ욫¬ä*T\…fÂ.]òòó‹ŠzöêÕ»WïÞ}úöͼƒb+࿉òŠŠÒòò~L˜4ù䣇ÎÁö£Ÿ*Ä:x¸=¹&„q V{º‘ðH*ÂÊYq#a|ͬ& ã°’½„ÉD¬¦}­ Í­ÍI!Ö¾¤£0b5†¶Áaí®ÖÎ=ÛvìÚ¾sï–;7oß±qËöälØmë7l^¿ië†M[×mØ´6amŒÎêuB~µ6\k×d -±’ kMr’.¿¸ïouumµªjÓ €¡Úª.XÅ!ìªë˜gï \“ݘÔY%óØëÖÄéY¨Û¸iëŽe+V^~åUý Íyyç”Zu=7¶êšZ)˜““Ó9'§[÷î…E={÷êÝ»wqIÿçgÞ²¾Y)Àaßþë¿þL< «wIIiyù—.¹äøÉG=–ªÂÊœsʱÚSC±R)ÖáéF¶Cqx§X­©ðê`k[²šðà¾ý“Z¬dÅ%X Í­ M-ÉÙÛØ\߸/ê]{ÃI"¬8ÅÚ»uÇ®èlÙw&í„[w¬ß´uݦ-6mnÖoؼ6_­Z·!:«×‡ëª¸«fUjüTaÕÔ­ 'g%uY!˜Š®U©6ÀÌì¬T¥Vº 1•YU‡aì©ä*ÉÇV…¯¾æêõë×oÚ²z݆»ïsÉ—/íܹs¨´êÞ={${[uÍ^)Ø%™Íê­r{ô#ÙKJK?c4èó™·¬¼¢Âß-ðßÊw¾ûݲòò~ýû—”• 4èÞ±ãN?þÄ¡£G?aµÍÔeeö¶¥R¬d–{2+®ÅjKbµ†Yë“,k_Ç\÷IGaè"Lo'Ìê¾owCc&Å -ùÕ®½Ûwîݶc×Öí»·îؽ%ÓKƶoOÆa­ß¸eý†ÍIarÖ® AÖšuâ¦ÂÐQ˜œ¤8*3+DO«Ö%YVmÇЪ5É5dVqº¯\“ùPf{ªWqM8«×…o´zýÆGæ/üÛþ(/?ÿ¼NÒ›»ŸSpÕ1á*i rrrºçåõ,)+ÍëÖ5ywú PXXè¯øoîŠ+¯¼ô+_).-Î7¾ùÍ#ÇŽ‡¬ä|ª -«ýèÁÌP÷Ž ëÈÃYë3±v¤XI#aŠµ?5+ŒÃjiKz â‰î{›ö…Z¬æ–ÝÉ8÷ä„k{ˆ°ölÛ±;Ìu«°6oÛj±¶¦: -“¬[v¬ßçWa´û¦¤‘0®ÂJ¼oˆ'½¯&]~I`U·&X­MÆO®Orª¤È*I¨êÖ®¯Y½&ùÜT ¶.ÄVñxöuË«ª¯½~ðÀAD¿Ò¤ûï\u”]ÅWsºDÏ—”|þ 3oJQQ‘¿L€ŒÒÒÒ>}û–”•?hÐÈ{FŸzüÉ?_eY¤®™¡î饄‡;öLV¦&º·Æ§%ì% ã°âZ¬M­¡«¡¹5 ²ê›ZÂiÜ·§¡)bÕ7îªOÃÚµ7:ÛvîN 7oÛ¹uG(ÄÚ¸5´nؼmã–í¡‹pÓ–p )V<k}8k×o\¦QmX³ncf´{È Ö­Ïôý%τªp“š—•<Œ_°.ùÄxËa˜‡ckêV/«ª5æÞo};tbþÙg?eÿC˳š“‚«è&/?¿WïâŠ>ì*ûôñ×ðýÅ¿XRZÚ³wï¿úÖ·[:rüD*ÂJz ³¯Y£ÝS ;: -´J×bJ×bHMÄjM/(LMÄjM5&sÝ“½„ M-é^Â=Í»ö6î®oŠ®;£“ôîJ uß²cç–í»âAXa)áÆ-Û£›ÐN_CGáÆ-í„qŠUkׯݰiu<+=æ=IÅ%Uë’ªªø£©ÅõZë׬/™Ø¦ÍÑË–,¯zà¡i?ûç_ôìÕ+úíuêܹ[ªU°£OðÓÉUœYåäæF*(,¬ìÓçw¿û]òË/-+÷ð¿òÝï}/ºö0 LÁ*-xÁãîŸpú‰'g—`uÜdEXíéÕ„IVa8|$tÊê( 'u“Tae"¬ÐN˜¤X-û“Z¬PŽ—`ÅãÜ›ö4„b5ÆK à ùÕÎÝÑÙ²=©ÅJOts±¶%M…a´ûÆP‹µaó¶uñh÷µ6%)Öšd4Öúkã­èáêu©'3¹ÖêµÉà¬I~}hݦÍk7nZ²lùô™³oºeèÅ_ø‹óÎëýÞR³Ù³'\e…W!°Šc«.¹áa~½‹‹ûöëç¯à_áó^XZ^^XTôýü ©¥õè‰Sé¬c‡ãÓQŽÕž½‘03Ô=+Å:§+¾¦FcnM§X-qŠ [$« CŠÕÒÖØÜšœd#a¼š0ì% ùUˆ°â¥„qÖÖ»¶%µXÛC-ÖÖPŽµ#5Ý=¤XÛ2…Xɦ¤¯04ÆEYaä{¸ß˜<¹6jmLÚ£‡Ñë7nÞºiÛöÚUkž1ëö;F|ëÛß)Œ'SuÊéÜ­Û¹±Õ¹ƒÙã‘ì]rÃÄ«na0{Ïž•Y}‚‘’’rÿ?}ïûß®\pAßxaßþýî7þTXDx<+¹:vN!Vr¤£ë`Ö\÷d;a2ݽ-Ü'%Xé“êžÌuOF»‡ +n$lK5†¥„-õ!¼ -µX{›÷4Ä„q„†b…^Â=Ûwî Û ãB¬P‹o'L"¬ä„+žîj±Âh¬d@VÜ]¸1bÅ¥YYë 7mØ´eÛŽ]ÑeÎÜùwÜ5âŸ~öóþ|&žpÕ5)¸ÊžÍ~nŸ`NNNnnn·ð¡î=zô..8h`æW]QQéï à_mДWVýàoÿvçî=ÇNž:œ.¾:|ôø¡L–•ÝK˜=×ýpÖ‚ÂÃíÑýCÑ ÝÃ\÷ƒÑ9Ô–TaH uoÙ°5«+N±ÂP¬$ÅjljiŒÛ “B¬Ý M»’qX»¢ëŽ= ;wׇ +^M˜.ÄꈰÂj° pÛÆÍq-Öæ­™,+u6fn°¬ ›¶lݾsçžú¥Ë«ÆÜ7ö—W\ùÅ/]r^§ó¢ßLN—.ŸŠ­r³6 æv‰û£×ÄS°òó zöîݧoÿìßmqq±?0€µ¿û»¿‹®_þÊWB ViYtÆO˜xê±Ç‡¬Ô9”dµ§Ë±~/ÅJYaV{ö\÷èaXPxðp[Ç\¬ôv¶ƒ-ûãr¬dAak[cKf¨{kcSKCã¾ôP÷¦]õ»öÄùU(Ç -µXqÖží;ölÛ‘ZP˜ -²ÂvÂí›·ïLj±6†,kû†M[Ãuó¶ ñt¬õ›B´µeû®ÝõMk7lš2õ¡«®¹öëßøfIiégþì3çuêÔ53˜=”^e:;Æ[åää$]‚ù="¥åå_ùÊW3¿Ø~¦]ü»ê׿yEEAQÑ~ò“¡ët^9zâHH®Žg•c=”]Žun„uèpê„+>É8¬$ËJfaE[“…é‰X!Îj;ÔÜÚ—cµ%VCsK8M-õMûÂ8÷ôI†º'…ÛwíݾsÏŽ0+ŒvOR¬tʱ¶„M…©º¬pݯ,ܶcמ†Ýõó.¹öúÁõí¿>àÀœ.]>{ÞyaO`[uëÖ=žb•îÌMÆ[åvΉ^˜Û=/¯GAAtzöê=ðüA™_cß¾b+€góƒD×o}ë[}úö--/ïÕ»÷S§8õØ‘T~uüð>I„ŸŽû¬B¬P…•íž*ÇjO"¬¶Ž¡XI-ÖÁÖ[Úìk;¸/ÝQ–îk { ›[ãÕ„ÍI;ážx;ᮽÉÙ¹»aÇ®½ÉÉ,(Lš -·îµXÛÂt÷ÐZ¸e{µ¶íÚÓÐܲnã–»îõ½ïÿÍŸû\~çuêÔ9§KÖ`«ÔÉÔ\Åã­ºtÎɉ>š—ߣ  °g¯^}úÜtË­™_cïÞ½ý-ü‡ê; yEeaÏž?üÑ·ïÚsìÄé#GOõW'’Ê«¸ëXôðP¸ïh*ì¨ÈÊö~$;Ë:š uOR¬x.ÖáýÉIª°Úâ^Âôt÷°”0êžÌu‡º‡Õ„{3…XõM{ê›vÆsÝS×sR¬ÐW˜4Æ3²vmÛ¹;©æš9û‘ü§Ÿž?hPqIIn×®!’Š?=Û*nì\åÄ óòò -ŠŠŠzöìÙ«×€óÏÏþ½iø–”`¿\EeeYyy÷üüsæ?yºý؉ö^o?v2n$L²¬ãÉ53+5à½ýÜM…I#aj®{{de†b¥ -±RÞ“¹XévÂÖ°—0Ôb¥ª°’qXq~•ôîk±ö46ínhÜ]w&Öžú»S)ÖŽd4ÖÎ={¢Oh=°j݆ë®üù‹.*-+ëQPÐ9Ž¤’&Á?[Å®:wî½ °(T[–UT|ëÛßÎüÒÄVÿùú P^YÙ³wï¿ýÑvím8zâTœ\…À*‰°§’«8Ë:–ºÏó~<=Ý=k@Ö‘x;a|JEXâqXYC±âü*êÞÒ¯& UXÑ9×bűâ++ÅÚ·»¡)l'¬o ±ö†ÑîÑ5)ÁÚ} ¥-ºÞsïØ/]rIï’’]ãxª£O0Ý-Ø‘\u‰'\u››ß£ g¯^Å%%½z÷î׿c¥`eŸ>Zþóýä'?InÊ**¢“Ó¥Ë#ó=~êȱ\…"¬p2…XYVö¦ÂŽ¢¬Oo'þþ$”•——WVž×©Ó¼ ÛŸHò«èÚ~, ²²"¬ìº¬¸ÍðS­…çÈJ¦»‡Z¬ÌP÷ƒ¡£0ÙNx$bµï?x8®È -í„­; -±öí?°§¡iã–m÷ÿ•¯~5úQ?ûÙÏžXÅ‚];š3ƒÙSòóó‹KJ.ºøâÌ?¶´¬Ì;ð§âŸ~úÓèúù /,«¨(-/ÿò¥—¶<œ„W©ëDêþSùUÒQxN-Ö±“Éh¬t~†b…AX©éXɉ«°'Öу‡Ž¦S¬x;a(Ä:rðH{tê›ömÞº}ÞÂEÿÿ˜“Óå3¡àªKf¼Õ§g³Ç±Uô‚¤U°K(ÍêÞ³W¯þYìþâ’KŠ‹‹½ã¢Ê+*Ê+*;uî<Ñâ£'NµïH®2ùUGu<ÕH˜}Ê++s»u›>sÖ‰Ó¦’«L„•e¥&ƒ°’YG㢬#™©ï±:: -ãvÂÔ€÷è+œ|ôñƒ‡®¬©»oÜøÿñÓŸ•––F?Æy:%±Õ9ÉU×L«`ˆ­rrºt«­¢×••Wüð‡?îø‡TVz7þ+ùÙÏ~]/ºøâdû  .hOª“¿aø½g’¬Ì¼¬ø¾=ÝE˜>™¡î¡IðÔcOž~üɵë7NšòàUW_{ÑŸáÏþìÏ>“5áêœnÁÌ>ÁÜÜœœœ0Û*úp^~‚‚^½‹ûö;§7°_VýÿõôéÛ·¬¢¢ °ðþ‰“N?þÄÑì+;Â:yê'ZÇÓùUj4Ö‰#G3Ý…'O=úÄ“Ï<ßÜÚ6sÎ#×\{ýW¿öµÂ¢¢è›vîœ2«nŸZ)Ø­#¶ -W9Ñ3Ýóóò{ôˆ>«O¿þ7ß1,óc÷íÛ×{ð_Ûe—]]/¹ôÒÒ²²Š>}œ~{’S%ùU¸Éœt¢•|ôSùÕ‰Sé›T„uüä£O>ýü©ÇžX¶båõƒoøÎw¿×/¨~ÞyB`¨¶êvÎ2Áô>Á.]r;çäD÷yùù=zõ.-ýÜç?Ÿù™û¨¶øï§o¿~eååÅ%%#G~ü©gS9Uæd7v\é\ëDG¢uìä©ÇžxúÙ^Þ±kÏwÝý½ïÿÍ AŸËíÚõ¼NÂ`önÙ‚SÙCl•b«¤—0T[õìÙçÜ -« .¸À;ðßÍW\]¿óÝï”–••WV8ðèÉÓ™äêXvŠ•:¿mÅçä£=óü GŸœ>cÖôãƒõìÙ+‰¤²7 v,Ì SÙ“ñVqÁUn~={÷.,*ê]R2èÂŽ‚«Aƒy›èÛ¯_a ¿ýŽ§žyþX:¼:vòô±¬D+;× -:uú±§ž~ò™g×oÜ|ùW4¨¸¤´k·nIlõ¿©¶JúsrºtÏë^PXXÔ³g¯Þ½ûŸ¾7€O¹üòË£ëßüÍß”UT”•WÄ‹O?õh’\ûtf•ºžzü‰'Ÿ}îPû±{Fßû…/üE¯^½óó{„ìݺ}j™`vÁUnèìÒ¹sÌ^PPسWïòòò¢ž½ ú\ö=é}àSú PZVÖ·ÿ[‡Üöôs/K_eª°BluüÔ£=ùôO?;kÎ#?úÉOºwïž—ŸŸVý^lª­2­‚9]ºäç÷(.)).)ÍëžW^Q9ê®;3?€•‚üAƒŽ®?úñË**ŠKK/¼øâ–¶C'O?ž.ÁzôèÉÓ'N?öØ“OíÞÛpÃM7åæævÏËûT©UG«`n¦O0蜓½¬g¯^Å%¥çŸ~aÏž•}:¢ªz øß»õÖ[œþÀAƒJËÊúŸþmÆ?õì I~uâÔc‡Ÿ0yÊ Ï}®SçÎ]â-]»}:¹úÔ„«œ8¶Šnz—” ÌÃ.°à_áw¿ûÝw¿÷½ŠÊÊÞ%%_¼ä’Æ––öã'WT×þø'ßµk×?ûÌŸ…áVqÁUÇ>Á®éš«ÜìÙìA÷¼¼¢^½úöí—ùúŒgàߦ´¼¼O¼ˆ°_ÿþ_ûË¿¼è¢‹£';u­BrõV -&ã­’š«èaaQQyEÅÅ!óe³S,ø·øÒ%—”WT”UTåä„2ªdÎÕ§Z“k(´JgÏï³÷0 û«]xá…~¥ü»¸á†¢ëÀ .‹ËË{wíÖ-;¹Š«­rss»ætéJ­âÒ«è……•}úýèÇ?Ê|©ìiWðï뢋/.¯¬Lò«Žä*·kn—Üœx${µºvíž—WRR2è‚ 2ŸØ¯¿=þã\ýõÑõó^ØÀ€ÞÅŹ魂ñDöèQÐ=/¯wqIŸ¾}3Ÿ•“—ׯŸ Wüç¹ðÏ/.)+ÍíÚ5ÉÞ½{÷¼üü‚ÂÂâ’’/ùË™—‰­øOvóÍ7G×Ë®¸²´´,??¿GAAô_¯Þ½œ~öËÎ?÷!ü'«(//)-íÓ¯ß×þòkOöé3pà@¿þ/:tèï?yÑEùÍðGâºë®ûÔ üíÁ!€ ÿ¯a8ècê -endstream -endobj -423 0 obj -<< -/Type /XObject -/Subtype /Image -/Width 1600 -/Height 1600 -/BitsPerComponent 8 -/ColorSpace /DeviceGray -/Length 10253 -/Filter /FlateDecode ->> -stream -xÚí݇ß×ãþðîÕ.¥4Q¡ÌPÆI¶Ž™•uÌó32"ó8¶8Ö±ŽÎ1"‡ƒY9²RFI©DÒÐÐîî®ûþþŽ3q÷¾ßŸïçùü>×õz]ë³®ZµX•¼úus]J#'77¯~·óo¸ïÕ/K2ÿ4áù›/ùyãÜÜW€•Ê¯Ûh»+N̬ÌÈþ=šÔv‰ø©zMÛŸü‡%™Õ˜rëM-!ü@Ãuw»zxfÍ^íݾž«À?4é´ÏõŸgJiÆ…æ»d´Øº×€±™²wZ;— ÝZv?é¡O3e6´GžkZmzô4.S.S/jáú¤RÛCû=?1SnËŸÞÞ5H–G÷ý›LÅŒïå:¤kçqâÃïLÏTܬ_¹–©±ÞICFÏÊTŽy»ž©°nï׿˜›©<ËntM²çqÁð 3•kÅ®+@VkÑÛ —•d*ßµ®-@ÖZ¿ß˜LqU,ß;ÓõÈ>9¹ym®ú4S•Vìê2dÙâQ»^×ßÎÈTµy›ºÔY´x4X{‡ßMÉT‡Ï[ºÜY¢Éz{Þüu¦º¼ä`[€lÐ|“ž¿Ÿ©F…ý\t€¤kõ³£ŽÏT³o÷uá’lÝ=O{ä«L x¯½‹TíúÍ3Ó35£¸¿G ‰ÔîÈ›^ž™©934‰³ÑI÷ «ÉÅã{ïnfe“3ž9;Sónmh,c›3‡|67ÂRÇ$D—+Þþz^&Œ61$ñuºáã9K2¡ÜÔȰĶÙõŸ,-Ê„ÓÓK¼m}Ý”’âLD_¶3:åäæt¹åÛL\56HÑäÖi¸ÇíßebÛË,€X‹GÃf{Ý9+ÞìÖÆ - ŒœfxÿôL" ªc¼bhµu¯Çff¢$sŒ ÝŽÇ?>;“$ :5€Öa¿sŸKÖâñ½Wr@ êxè•/.È$Ñy ¦lyì€×æfjî &lwê#ïÏÉ$Øðú ºmîscæf’mÅÆ Zíxùëçg’oúþÆ Úlwýˆi‹2Ùax+ã P-~vëع…™¬±ü6C -Põv¼ëë%E™¬òÍᆠjíÝNqI&ë¼ÞÞÐT‘œÜ‚}f²Ô- *äÖirÀÀÅ™ì5çƒ PÙò·9àÑ™ì6t# P™òšoúËÁó2Ùïwõ 6@e)h»í±O.ͤÂÒCŒ7@¥¨Ýa·¾ÏeRã9@…åozÀUCR´x|¯¿;X´å‘· [œI›âž9† üv8ýî·fÒèóõŒ>@9u?oð'‹3iõ P9;_ýÂg 3iv¤YPV»>yi&åf»ƒP&{Ü=zƲ ™—Ì€R߶:øî/¿+²tüCÉ&@©ô‡ùK—[7þcq;s`MòùÓ²%ÖŒyß¼XÝM«Ü½žñÄc%Š.3;Vµï¨Ûú¸¡nZ­Â¼mÍ€•¨Ý¤Ã /¸iµïù ÀOÕiµÙC¬«Wx£‰ðCu×ßöœ—-k6½‡Éðoõ6ùù¥C- ¥óz à·­º~Ã[–…Ò¿ƒu£G µ -ºŸ4`¤5¡L¦hÞi_j›«AÊiR]ù4Û] R^·Ê¤XÝ‹µ 嶿Az5òúå÷eK‚Ôjú†¤ü‰¤V«BHù,CV¨@*âóÍ…Ò)w? HE”<•/FJµ¯Ô€TÈ¢¾b©T÷HÅ|æ0[H¥¢¢žh$HB´~ë|A‚ê ý¨°q»H¤NαʊûƒÃl!ur¯×}T‚Ód Ò&ïÕG%˜º“0AÚÖoT•á±VÒéROñQ9úˆ¤ÊvzÊ1Ûa¶.§ê=*Éæòir³Ú£²\(O"‡k=*Ëân)±áQ·¾¶LëQi>¨/U†Åãä{þ6SãQ©®,Èvëõ~tämGe[²·pA6k}æscçª:ªÂÄY»ó8ûÉóÔU僬Ôîì·f.RqT¡EÇÈd ú|° °DÁQµ¾j*kUÚôQTlñ ê­xFÜ [äæ¶>ûmµFu™w†ÐA6(¨ßæì7UÕiü†‚IW·I»óßRgT·'e’½x´î|ÑKªŒ0÷tùƒÄªÓ¡ûùn[QSFw•AH¤Ú›üâ7~«KMúcC9„ÄÉßò°k†{Q—šµØ,HÚâ±Í1·¼S¤½¨qc·GHŽÜmμoÄbÍE6IH†Ý.||T¡Ö"Š’Þùb ‰ðË/—¨,"™ÚE,!zë+‚yn-¹„$ت¾"˜>‚ °Ã'êŠ`–l.˜}0H8o×–LˆoíÁÚŠpúæˆ&Äw»²"ž%â»ZWÏø<Ñ„ðö¯¬ˆçJÑ„øîÓUÔ]4!þd’®"ž eÂûƒ®"ž’{DÂÛá+eEÁ(‡Y¿Pˆì'ÙÕ› -(¶© aÝ[_B!°ß©)‚š‚€B`Ǫ)¢ÑYB!ò¤PMÕý³…ÀÚLÔRDUt¼ÿ(Bä È25ET¶’Pˆko´a=ÖHD!®k–k)Â:.OD!¬z³•a}»¡ˆB\W•h)Â’/¢`åp¦ˆB\}uquQ+o¦’"®wEâ:]GØ%" -aåNÓQÄUâ+B+ç$E`cê -)DU÷ Eà È­2 -Q壣li!…¨šŽÖQöQ3!…¨£U-¿KH!ªVïé(ûî(!… r{©("{oc)… Ö{CEÙ=R -A§¡ˆlþ B -Auª¢ˆlD)… Ž×P„v§Ãl!¨ _ÒPD¶Ì;XUo Ehu–Rºñ„Øú7SˆéœŠÐÉS©Ýk -ŠÐ&tSˆé×K5¡ÝVOL!¤–o*(bÛUL!èd±‚"´×Sií÷‘•d.SˆéBb+ôˆ©á' -ŠØÞÌ•S©¯W°îl1…ò?ÓOÄ6³…œBH½—+(b»NL!¦±ú‰àuÅB:F?ÛòÛÅb­ ˆmÚúb -!¦ŸˆmÙmb -1QPÄöe;1…öÖOĶô1…˜>PPÄ6¶­˜BD9ûé'b[p¡œBHùÎ!¸—ü BÊý¹~"øô}äBj0DAZÉMb -1Ÿ€Ø€Ü›^á…˜šþYAÚ¼ÅbÚWAÛ]9b -!5\AÚ;ÅbÚßA„„¶â$)…˜Z=¡¡íŽúb -1ºPCÙ+¤bjiBh3÷’Rê˜E*ŠÈNRªÙ“ŠÈîl"¥Ô±sTýmc!… š<«¢lþ.B -QhBdÇË(DÕàEE`÷4Rˆêx{{…¨ -^ÖQĵ¸‹ŒBX‡}§¤ˆkO…¸^+QR„uv…°Z¬¤뾦" -q½\¬¥ˆjXk …¸ö*ÒRDµd# …À†yBX]Û]IÖ ù - ÕRDu{…À¶ÒRDõ‚_¸ChÏ©)‚šÛJ>!²mÔQuOmš"¨rå"ÛZMÔµå"ËXOÓ²íäBëì'&õncù„ÈêÝ«§ªŸ|BhÛø /Qí!ŸYƒ[ÔA}Ö\@!²n"$ª‡ä"khBTKz (D¶Û,=EPŸ®+ ù ÈmjŠ ŠPˆl¯izŠ ¾ë- XjŠ¨>q-D¶ï5ETî`Ad9wk)ÂÞÁ:MB!òd²š"ª:K(ö–"¬êJ(ĵßWZŠ¨–z "{\KÖû]$âÚsª–"¬»×QˆëO%ZŠ¨–#¢ÖNþ‚E\c6Qˆë©ZŠ°¬/¢V×…JŠ¸ŽÏ•Që ⚶¡ˆBX))âú‹Gè×#^Á"°EÂj§¢lq{…°îÕQ6RD!¬6*ŠÈ~#£Ö]*ŠÀŠ×—Qˆª¹Š"²Q2 -QåÜ¢¢lÅUB -aŸ€,ÑQ¶h;!… ò¯VQV2¼”BPíè([Þ_H!¨:—«("›¹·”BP¾QQDöZK)… ‹4‘ÝàGŠTçI*ŠÐw°‘Rˆ©ö¯5¡½ê(ªëX Ehý -ÄBʽDAÚ‚}Åbêö©†"´W:ˆ)ÄÔOAÛeõÄBÚácEh+vSˆé&El¬'¦Òv*(b»Ê,ˆéVýDp»‰)„Ôu´~"¶O[É)„tÇ -ElòäBn@&ê'‚ÛON!¤»—ë'b›êOîÒ&_ê'‚{@N!¤;‹ô±Ÿ §Q[Ý”Ž‚ -Ýê,¢"§Qó9ê‰à -/¬å4[¨_‰~"¸‰j°H=þ–³!"Þ¢‹*X¨žˆnÜÎ’ -ýF;ÞSu$â©=K;Ý’³%âÉ9K;ÿÖn¢ -ñ4˜¡ï‰æ¢ -á䟡œˆïLQ…xšLPN„÷y7Q…xc•Ñ•džl&«N«OÔñ/«nr¢n"¾9ÛÊ*„Óa„r"¾¿Ö—Uˆ&çdÝDœçGîN§áº‰ø–l.«Î麉ø(OV!šM‡é&à:Y…pÎVM$ÀŠd¢Ùüoº‰˜(«ÎEª‰((«ÍFoê&`Ùî -Ñ\²L7‘Ÿ5V¦ý»ª‰$B§œæ¿uç!õEÒëyIQ ü•?ëBºí´@RVß<Þg{(O@l@(ÛÛºC.Ú½¥àµº.׈”Þ˜ßþ¼C®Øß{ªD)R: é¹q‘þ¥“Z¤TFœ°±_”?4X3²Fß^Ý¥‰Ãhk¯Yƒ'öiP )ÀÿxD?²ºGæg­ãP`eÚªHV®¤dî›H°*9w)JV²x,[òlOñV§ƒ®ä§Šæ¼¤¹l«Wp«ºäG挸ƒ`kÖ±Pcò Ç?}tS©J£ÎµJ“=õøü¯¿î,@im²PqòwÓ^¹qwqÊ þÕª“·û÷j% @Ùl5C}¦Ü÷è¾PŽ È5 -4Í– >s§†b”G·¯”hj ¿p—6"”SmO@RêË[wëP[€òÛqœ*M¡?ïס±ÉTHîõÊ4m>î³áZ£*l—ÏjšÌ»»k}'B•âfš%ïÞØ¡@eÙÍ$kÇò¯/ooº•É9 )X< ->°«©T²=&è×ìV8û½Óëšè@å¨a³ØòoG_¿‘IT‰n“´l¶š3fà¾f8PeX¡h³QјÁ§¶4½*ÔyŠ®Í>þrÙ6æ6PÅ.W·Ùå»7®Þk-¨rgiÜl2âæ#76«jq¿' YcêÀã·ö{+ º¬?_ïf‡OÝ®™ù T£;JToò¾´Ûº¶@õZ§Pû&ܲ»÷l[ÏLªßð&ÛГZ4ôg] &4²I®i×up¨Pc®QÃÉTô§]ëzèÔ zKTq┬uÚÚæ.P³r/VÇÉR\øuÿ­L\ æ­5S%'È¢é/bÒ!䟧”“¢pÚˆ¾­MY Š–Ós"zÌøðæMW ‚>º9¾…#é3A ˜õDݘÁçt0QxÞ -:ôg‚Ï^Ü=Ï4"ê8FI‡õz¿ý[™¢@Pùgªé˜F 8ból³Qª:žý²³ÃhàÎÕÖѼ{Ú6-ML ¼-ÞQØ‘|ûÛŸµ.0-$¸PgÇ1ø u|ê$Eç·Õv ŸÙ²Žÿ² r©æ`ñ€Ír-@²lù¾ö®YÅÅ/å(Z ®-Qá5gEáØËš™„@"m6R‹×’…_=¼“$w²L“ׄE_½x\CÓH° >ÖåÕ¿õøê­K;›{@Â]W¨Ï«×ŒáwïeÞÉ×v¼F¯ÎwuGýáØæf®÷¤ÚLtFW3ÈÍ&ëõj±ð™ zxdd“ËVèöª÷öµû´5×€ìRoŠv¯b_Ýsà&~ŽdŸó|•zîØÍ}ed¥üé:¾ÊŒºx«~Žd«sÔ|ÕøîÞšÕ5¿€ì•;UÕWaG4«íߺ@v;YÙWúWæWv¨eñ²â¬JTR\ôÈ& -9¿Ôú•¥hÉÈÞy¦u&)þÊ°|Þäë:™N@Šä¡û+nþä‡÷3—€”iô¡ú¯à}«IÏ÷ii"©“” B(yí¦mÍ" •Öy×"PîÏß¹ýÀF¦R¹½¬åóá½'njþ)Öö5KAÙ}óøYÛ›;@Êm5(ëÛº/_°{ H½õÿjE(‹ñ×íµYðw'–XJý¶îur-À¿6 /XJç¥S7lj¾üÇ)E–†5ûâ†M›˜,?Ðî%«Ãšî[=±cãÚf -ÀOôYj…XNižãP€•l@^·F¬BIÉôÛ¶4CVá¬VŠ•YöÝ_6;V­å0kÅÿ.s?>o}s`µÎ[h½øñ}«9îÜżX“ÆÃ-?°püŸŽs-@iô±ù·â‰/_¸‘P:õGX8þaÚ«×îaëPz½}ò÷­Çð[kc.”EÁ{©ÿ☻ÿo  ¬~¹"Õ‹ÇìÁ§þÌŸuÊ!ïýo@Þ=wg÷­Êé¨Ô>2ÿ]ùÆ ¼rG¦rõøóaë52ø±wúÑ}Û5ö¶.@E½›®Å£°—zN„¨{¦iõøkÏ‚\CP)rßNÉÏ3c¯lm¸*MÎÎiX< -¿}¤›±¨Tµ_ÈöÕcéìaÇ40Е½Ù!«3>ºÊa´U¡áÓYü‡’ÑþÂTÑd×,]<}êä¶Æ Ê4y"WÉ9{c P¥öʺßð.xùš}ëX€*Öì‘,û³nÿÃÛU€j°ß’ìY<¦|ôÖ Œ @d]â­CÏéÜÂÀD÷L¬Åãëk»´¬cTâÛ4Òêñø/ZÕ7$Éðx”ÅcÄ™mëø/;@blbñ˜}û9ŽH’ÜküP¥Ãz€¤éX£‹ÇòÅ“.hn¨öÀš;jþŒ{÷0 µq ­‹¾~æhW ¹ê ¨‰­Ç”·.kïÚ$ÚV˪{õ˜ù;@Ò5¸©z£qß1­\u€,°ÍwÕ·zŒÔgKW ;4º¹º>|þ×»­åzd]fVÇêñîeû´w­²Iý[ª|ñ˜2àÐMó\i€,³Ûäª}[÷©c7iâ*dŸ‚Ûªpõøä¢-šÙzd§½¾¨¢Å£p@·¦u]_€¬õû*Y=^8¼QÿeÈê È„J_<&÷kgñÈv•úÞ’’…o뚤Áž+mõ(ZôÖ±\Q€”x¬’ÞÕ7áÆ]M€ôØýËJX=æMzê— ]—TpñXÈÕ`U -._Éê±lÞ»øL€Õi5÷¾ôs—ÃhXƒ:ýøD¨ñÏVßU`6˜ñŸÅcù„ÏÞ 4êþ{2íå«÷p9(­M&}í[ý[ǵ ôj_”wÏq›»”Íú¿Ú¡«”Òÿ}¼² -endstream -endobj -219 0 obj -<> -endobj -225 0 obj -<< -/D [217 0 R /XYZ -13.423 915.745 null] ->> -endobj -227 0 obj -<< -/D [217 0 R /XYZ 29.788 737.428 null] ->> -endobj -223 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F44 228 0 R /F45 229 0 R >> -/XObject << /Im2 220 0 R /Im3 221 0 R /Im4 222 0 R /Im1 218 0 R >> -/ProcSet [ /PDF /Text /ImageC ] ->> -endobj -426 0 obj -<< -/Length 26 -/Filter /FlateDecode ->> -stream -xÚÓ -0TH/æ2PHW0PpÇIºp; -endstream -endobj -425 0 obj -<< -/Type /Page -/Contents 426 0 R -/Resources 424 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 230 0 R ->> -endobj -427 0 obj -<< -/D [425 0 R /XYZ -13.423 915.745 null] ->> -endobj -424 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/ProcSet [ /PDF ] ->> -endobj -471 0 obj -<< -/Length 2380 -/Filter /FlateDecode ->> -stream -xÚí\Ýsœ8÷_AíÓ¸êÀútoÉÚN²·ÙMlïÝC²•ÂŒ<æ–‰{]uüµ4ÃÀL9vHü‘©’hõOÝên}œ¼ÃÞ¬ÚCÞÌCÞ«=¸ñ0\?ÃäqÁ±3DŒ{Jz{ï™ –€ëjÖ‹q„\ôK¸o®¾…=]Lÿx0½tÞ# œõkÚvuÕ1˜†^ã€c¢+ÕúðŽÄˆ5qCʈ®û?^ám­ôó^@…ÚtÝd[éª탃7sê–@êvbooƶfù®]aÌ:Í2ìBˆx"à,Ñ­­Zîc\BØT)Ä©ië*¹¥­ì¶¶®Št>òþÎ "cJ,B]þåÙÞÁ1tJLÁ¢È;»ðˆ¢8ö"að>›z&/Ë*½Ü÷IONeQ•ª–éþŸg¿ìuƒo{x ài¬ëÿð'ò¦ðòS‰wÝfëì@õrï´Û†€ÌcÈK#¡k è„n5ó¶½:yµ© ˜‡‰p¯§G?›6¼)j9SI•…yðªÉ¦²mÐ]ûÓmW Œy|®)ƒ,¦À,ˆ¹!íç(*êj ÐX¡®¡@†ýg'öSøŒ@öáS€4ÃÀ¦È|ïû‚±[¹gÅfNxœ"`*¤Ûêø×ÒÊ»´ú\£‡B` ©–ä@Ñä÷+©®2ymè,/ÌõåÛ#“8NæY~ÓíŸëœô>ø Ðñ$Ø÷Að„x€ÏöYÁÀ÷e°µ*n b:»”†ýGÅU¦Êb½9É-:Mµìb¿fç*Qª¶+q -4,ÂûaAx ¥§H+3QØô5¦Ÿ–y£E~ !¡^@›ñ!ŠK+0kè€îÿÖƬéªâSY×Y1‚DÅQñ I+Ç2©%œçD<ñxÂÀE__áÆ n§Íb¡ÍÑ©Aïßû8ždªnÜàcÌ“þ½©MmŸg³"É( JŸ#×ãûqÝß<ÄP3æŸÈÏM¦ä¼5\[¦^8NwMË=±`;Yù6pmA˯5½N”h¶8|‚šíyJ¢g †Óò¢nÑ3£”JæòºTõ?NÃx}!Db4ˆ¬ ñîò¦ÊR7ò¼)VƒMgÚ2ð`D⎘ñ FãXÔY/›,·VAí¼Sçü<8÷Ÿ\_«j#U¢O\c&éG¬Nk¹ðÏoü -®6Üðw2_äÛVPYŒ˜‹Xá}t¶B1dZ×ÄE­Þ)©´TeõПˆž¤?ñTÌ(@±Þ÷SòÄŹ¬_n;ß•T7õåòþÅä˜î|$Ò~¤Òª„™ìbJÅNG/ÈûqûÅ×2ÏKÝOoŠiY*ÿE¦ü÷à÷gõÍOƒÎ„Ä®;ÁEG’:îbÓ&]*ÊEy-­9œ–EÕÌ›Œ2º‹Ü - ¦Ð*Ç}MT6›9xþøõ…,o†Áh°§vFËȈ†#!9D1Æ9_HÕƵí êGDh%]ÜnÚØçµÕ©—2±®kU6*•6Ÿ›XúSçe¢¦ƒxR?qß& ƒØټɓÚò Òu¶4<*;]ÝÞ4ÕREê”˳r€²¢ª“"†ðâÝ>Ç<†ãï›,ýËj°¼V‰Ÿ—víÀ»ÕÐ3×6_›úˆ8ú샮ƒÞ0#-~l•$íû”3=ã™æfQÀàsèy:ÅÓ¯ ßà0 ![ßP¾9~ñ~{x†tÂ3bìÐLĽРu¡™ßÊá”à±*çvX«dúiZ~Òq¦J+‡Mz<ßþÑ ãÕ©‹·¼ÎcLPÓÒ$Ei¥—I1sÆÕïIš6*Ií¼¾’ó†Osƒ†¾>ßÁÐN©‹™)嘪%–‰I1uÏ”’i]YÞʤڴ„"ÄñN8Fš×¥«y݋ɉ#¿p«!Îoî ÏXDŸßAK-gg¿ƒf1?àSÕœW©ÊÚ¨Ç68¾dJꑲ—ÑØKïÄ^ðh?¥ëËé–ìmsô2ƒ7UËmP.š‘|4F²;2R{¥š—µ*ó­ BÑ3T$ú†3›fLã·å´qNþa™6íªéA(t›ÁL¾ƒÁÌœÁÜY¯ºZâ¥.’a,âû­àþ52¢Í`:›a…ž ’TÉl¤ˆè¤ï¢E6¢uÜéÆ%üô±KÞc³È) *g© ÅéQ<^î03˜âÛjȬMt(µÁXlX¢ÃÉ.ðøm@düÛ/ãÆÈ:LêÄ-SMºšû‹ d–`Pªl\SËEK»:„;K«5ÀÏçR;(í Ou—|g»_H%‹ÖûA»Ôˆ–_YJ‡²N²ÜyI‡r鸢[ ï„ÿ~H¹Ýߌ -â­_Ú­ßžŸlØr}¯Ýã­lFˆPO“„Aä¶gƒŸ–é1"µãºÏx8Q²’êJw Éäæb”~]5çÿ•Z\õžW×W¦Öé묾,›¡(ëL›wݪ¬z²šù¹TÿÜ÷NpÆÎôZVÿåÛ£0F~g·ßîáö_ü†Pìk.ëaO"¤vØÛìÜ®mãg,ÃPË3‡ t7ñs‚;›ø£€£å&þ;Âç¶í¯xÏA*cìé òÌÒ{¨§Í·¨f-aá£Ð'½ù¬;Òíw­§4 8ò°HhŽ…ðö¶ó¶~G÷E½çÚÓÅá•P2(Ð|sw8ˆi ½Ð];™l2õöüÞ[¿WØï”ÒÙ]¶åûMýUýý×ýòëÕ_ê¦!׎ӶmË#5p É PÜ.mNý×M§sï~\]~‰‚½Mô8Š»Y¬z“Íc³´½iyfÅìµ<ú<ÕGLk–7æWxÝ\¾í/þªÃl E´§P`}òÃÚzÚiu ܲɫùùkóB÷m­F1›¼ÈsóLe³K½j§M[ô¸eñ$É«Ò½˜%jÚ.%Ñ·IqcªžfÕ¢¬’¼- &òïE^fÆü±”\¨rÚ¤ËGñDN3m…Ø PE­²ó¦S&iíf­e" ‰V6öÀk™Û½0IåÖ¯ôÉ«VÃuOuH‹<[jÚµm…Y1mô÷Ý v!UíføZÞ¬8}ËËžaŒõn–k­tŽÿ%“•w -endstream -endobj -470 0 obj -<< -/Type /Page -/Contents 471 0 R -/Resources 469 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 230 0 R -/Annots [ 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R ] ->> -endobj -428 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 632.024 189.599 644.56] -/A << /S /GoTo /D (chapter.1) >> ->> -endobj -429 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 618.633 234.697 631.136] -/A << /S /GoTo /D (section.1.1) >> ->> -endobj -430 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 605.084 268.668 617.314] -/A << /S /GoTo /D (section.1.2) >> ->> -endobj -431 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 591.534 221.126 603.765] -/A << /S /GoTo /D (subsection.1.2.1) >> ->> -endobj -432 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 577.985 247.21 590.489] -/A << /S /GoTo /D (subsection.1.2.2) >> ->> -endobj -433 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 564.436 172.024 576.356] -/A << /S /GoTo /D (subsection.1.2.3) >> ->> -endobj -434 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 550.887 303.413 563.117] -/A << /S /GoTo /D (subsection.1.2.4) >> ->> -endobj -435 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 537.338 210.479 549.841] -/A << /S /GoTo /D (section.1.3) >> ->> -endobj -436 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 525.774 154.428 536.019] -/A << /S /GoTo /D (subsection.1.3.1) >> ->> -endobj -437 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 512.225 207.773 522.743] -/A << /S /GoTo /D (subsection.1.3.2) >> ->> -endobj -438 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 496.69 251.453 508.921] -/A << /S /GoTo /D (subsection.1.3.3) >> ->> -endobj -439 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 485.126 192.042 495.371] -/A << /S /GoTo /D (subsection.1.3.4) >> ->> -endobj -440 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 458.71 194.453 471.06] -/A << /S /GoTo /D (chapter.2) >> ->> -endobj -441 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 445.133 135.893 457.053] -/A << /S /GoTo /D (section.2.1) >> ->> -endobj -442 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 431.584 177.741 443.815] -/A << /S /GoTo /D (section.2.2) >> ->> -endobj -443 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 418.035 165.61 430.266] -/A << /S /GoTo /D (section.2.3) >> ->> -endobj -444 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 404.486 193.341 416.716] -/A << /S /GoTo /D (section.2.4) >> ->> -endobj -445 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 390.937 215.933 403.167] -/A << /S /GoTo /D (section.2.5) >> ->> -endobj -446 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 377.387 153.675 389.618] -/A << /S /GoTo /D (section.2.6) >> ->> -endobj -447 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 363.838 332.856 376.342] -/A << /S /GoTo /D (section.2.7) >> ->> -endobj -448 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 350.289 333.544 362.52] -/A << /S /GoTo /D (section.2.8) >> ->> -endobj -449 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 336.74 251.661 349.243] -/A << /S /GoTo /D (section.2.9) >> ->> -endobj -450 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 325.176 126.195 335.421] -/A << /S /GoTo /D (section.2.10) >> ->> -endobj -451 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 300.047 70.177 310.685] -/A << /S /GoTo /D (chapter.3) >> ->> -endobj -452 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 285.183 234.119 297.686] -/A << /S /GoTo /D (section.3.1) >> ->> -endobj -453 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 271.634 318.424 283.865] -/A << /S /GoTo /D (section.3.2) >> ->> -endobj -454 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 260.07 255.926 270.315] -/A << /S /GoTo /D (section.3.3) >> ->> -endobj -455 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 244.535 282.97 257.039] -/A << /S /GoTo /D (subsection.3.3.1) >> ->> -endobj -456 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 230.986 336.326 243.49] -/A << /S /GoTo /D (subsection.3.3.2) >> ->> -endobj -457 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 217.437 411.511 229.94] -/A << /S /GoTo /D (subsection.3.3.3) >> ->> -endobj -458 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 203.888 310.242 216.391] -/A << /S /GoTo /D (subsection.3.3.4) >> ->> -endobj -459 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 181.399 167.759 191.808] -/A << /S /GoTo /D (chapter.4) >> ->> -endobj -460 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 167.866 158.333 178.384] -/A << /S /GoTo /D (section.4.1) >> ->> -endobj -461 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 152.331 184.155 164.835] -/A << /S /GoTo /D (subsection.4.1.1) >> ->> -endobj -462 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 140.767 199.919 151.285] -/A << /S /GoTo /D (subsection.4.1.2) >> ->> -endobj -463 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 127.218 174.446 137.153] -/A << /S /GoTo /D (subsection.4.1.3) >> ->> -endobj -464 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 113.669 144.13 124.187] -/A << /S /GoTo /D (subsection.4.1.4) >> ->> -endobj -465 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 89.194 204.741 99.603] -/A << /S /GoTo /D (chapter.5) >> ->> -endobj -466 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 73.676 260.202 86.18] -/A << /S /GoTo /D (section.5.1) >> ->> -endobj -467 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 60.127 204.752 72.358] -/A << /S /GoTo /D (subsection.5.1.1) >> ->> -endobj -472 0 obj -<< -/D [470 0 R /XYZ -13.423 915.745 null] ->> -endobj -473 0 obj -<< -/D [470 0 R /XYZ 29.788 737.428 null] ->> -endobj -469 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -488 0 obj -<< -/Length 1287 -/Filter /FlateDecode ->> -stream -xÚíYKoã6¾ûWð(%çHö¶i²é.°E71ÐCº™±UØ’W’³]`|‡¢dËŽ…Ôi‚ú`À _Ãá ¿á'‰s6ºþ¡i9 hŠ(º@1(¿BEÊ*bCFr¢¥B…CƒÏO„Ï@ Q^Íö4ÅI¬ìvÍÍZ ùiþ¿V†HËP²Ø1€p%w5õ•­:)4a"FÚ0¢÷J½Ƹ!Öxã ÇBr¯û”¡^¥_DPÚ¼îNµVºq î8û°è"Sû}Þ>·pë—b$6²ãVØ.J9²DIcõ³^m ÇŒÃ.QÔA*|ÝT{|•Ïùº™ÒYäóÁŽƒ‘FÂlìçŸgï!(™ VjFˆ[¢AÚ¼Gtçe2b®Mtã²2/*— ¿Œ>.Gg˜Tu„kcaO×û…¢ ~D6•£oµè‹ƒ ÍÑM×"8Sd…æ -BƒH°ÂjŠú†®¯öùÀTL¸f;NÜ\þ|øUnZŒ«4ÏBÇÕ*¸Ú¡Cã©¿ ¥¦ÊØÒàÃn,‡Í¡p`Árl¡Ü s8­*X®#|ˆ­Ž£÷©›O‚Ñy²Z¸¬ -~tG·X2‘!†°;¶BZûÿ­¾³KFªHÑàÿps@ -@ÃwJÚ)£Ñ}é’»4[®ª»ª98U±Jšúµ{p…Ë÷Ä +NxõÅ^T§õâ„…uáªq:wí™reR¤Ë}'*–ìt¢Þ(úä,XïØ0êa=Ña½|UJ{Ü°`}HñÿN{ N¼÷vH‰Wâ=qâ½cè‡÷d‡÷ÊúËè.ɳ?áëqº -ñ ~<"“¯øþ&OA¼Ñ¿;¼;[ýÌ»F[?njßÖé8F¬…pã„š:1ÅIÿ×­' ô²]]¯$X%aEM˜6Ý$Ø&š™F¤Ž¦u¾k ö–ŒÏÅm Þ¬‘ðËPW -7ñ‚7³Ç[g°¶ÙJÆ ¡:É8hÊèjqÿkð±íÉ”ÉèÝ|úŠt:«Ê¦Þ°ÐOД&Ï˼˜Ž‹IšMCsœ}ª'i¹ÌËñ¼ž`#÷÷rž§á‘ÖtnYäxUl»Lä&iªPQéýª3g\²a-cmšlÝ7çíöç„ê2m’uÕÌ…Š{¬yÎWó‡Fv¹œ§k¾õ=yÑNŸ¬¼ãF-X»tEõ=´Âæl?xvssžÜ•‚ó-á‘ß|‰n*AxüZà’ -endstream -endobj -487 0 obj -<< -/Type /Page -/Contents 488 0 R -/Resources 486 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 230 0 R -/Annots [ 468 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R ] ->> -endobj -468 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 728.179 207.184 738.424] -/A << /S /GoTo /D (subsection.5.1.2) >> ->> -endobj -474 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 712.644 218.977 725.148] -/A << /S /GoTo /D (section.5.2) >> ->> -endobj -475 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 699.095 204.752 711.326] -/A << /S /GoTo /D (subsection.5.2.1) >> ->> -endobj -476 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 687.531 207.184 697.776] -/A << /S /GoTo /D (subsection.5.2.2) >> ->> -endobj -477 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 671.997 225.653 684.5] -/A << /S /GoTo /D (section.5.3) >> ->> -endobj -478 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 658.447 204.752 670.678] -/A << /S /GoTo /D (subsection.5.3.1) >> ->> -endobj -479 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 646.884 207.184 657.129] -/A << /S /GoTo /D (subsection.5.3.2) >> ->> -endobj -480 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 631.349 296.584 643.852] -/A << /S /GoTo /D (section.5.4) >> ->> -endobj -481 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 617.8 204.752 630.03] -/A << /S /GoTo /D (subsection.5.4.1) >> ->> -endobj -482 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 606.236 207.184 616.481] -/A << /S /GoTo /D (subsection.5.4.2) >> ->> -endobj -483 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.156 590.701 230.486 603.205] -/A << /S /GoTo /D (section.5.5) >> ->> -endobj -484 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 577.152 204.752 589.383] -/A << /S /GoTo /D (subsection.5.5.1) >> ->> -endobj -485 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.247 565.588 207.184 575.834] -/A << /S /GoTo /D (subsection.5.5.2) >> ->> -endobj -489 0 obj -<< -/D [487 0 R /XYZ -13.423 915.745 null] ->> -endobj -486 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -492 0 obj -<< -/Length 2556 -/Filter /FlateDecode ->> -stream -xÚÍYK“ܶ¾ï¯à‘[Ñ` ÁÜ,ëa»b[–6ÉAöCbg˜"‰»Þ”|h€/ÍhµNU*U+ ¦4úù¡ssûþ ý  Þ^Á—€Áç' Ð@d‚dŒ2æ$EЩàîê—Ïß" ›õ6ÁI"²í®æ| Ì6ó*$‰3ÍFÂE¼åtéÓ³‹£”°( RɈ`Ü05î`ŽK’I# ’$Š¹áýÏ  .2ýtE"7Ã{1´Lg,áæû& -^iõ²°O«qI­×K0’Èx¡š‹RdDÄ2KŸÔj|Ç8X‰2d#*"Ôu^Ð5~J×yËâ_ž­8)£ˆ°,1û_Þ^ݼ dÉâ4 nïž‘TÊ ÍÐß·eð1|©ûâx½ã© ?¨¶×Ý Šëßn¸z}»P†ÅÂFx*3°©4ü?þFƒ&(•vic–ƒ QP–:ˆ3!am”r¡AbÂê\šzÿöœL$„§l£Ä‡×ߢß·ƒ:tùPé oǪTV¡çÆÓSŸ Yp -ùÁ…‘ "$%4d,%œÅ(»ÞA„<)b]µçÅ´Ç°˜D1ØŽ¡D¤‚<#Yä îŸïUw_©ä«ïðóå¯qð&oªúqéì~u$ÚÜIbŒ­ -0 v`R€ÿc· {{T†WìˆÂÞ2EâÝtXó‰{¥Z•ª¯­*qÁ ‘ªÚ|_;®§NõýØ©n‰jN -Ìæ)qx›ª¬†Gü–·Ž×ÁÖ¨ÜìoT;X=·êÁ(c õ¸ D*ЬF¿_©  Z")ð“4Ômý4F®wQ,½ú™ÓºÇEEÞâ`ïfµ•Ú* -ÔÊÍ–Õ¯”GªÙpY£Á"8ןTÓ”¯6™ƒÆÓ©®<õ¨òRu86«kÕ[ÉÒðvdõ{Þœj°×ís“Y{ "á$’µÿûßÞ¡=dhP2÷H×ãp—ùã(pm_ë¤í  ðÞù«©Úª©þ]µœ<é« Ýöcs2b5¢3ηªkÖ.$ŽÕá¨\¸ÍØóÎ)¼Q6–DÂ-a•-tÑvÒmÙcz`@ÊÅr–P®%¼ZëÄ‹”óÔ'Ne]Í t -‡’‡U]#ùÔéûÊZ¾Tíîš|^—ïµµ;Ì Çi‚ -_Æ$ Ž•ÅxæÂcKYh2ó⪀TWû.ïÜ<&˜9¿îµ#}»’Ôi¾ï*åPIŸÅ*¢![Püc$ñ°Ož ľÛk4,Áí‹Ø#¹4Ž2€o6à$yçr,ÆÒa̻̭|—÷N`õ -¿ U£únëÑW’ÂÌ„˜0ùP ÇÊ ¸ |ã°'1`"ÈhçåY¤½cßè±5“çÓn<sW¨ó æmæøQëbº¡R@©Ó¥º¯ -;N€è÷"z÷øå uéXV´Ž²6ƒÙù{qÌÛƒ²é{hM×a}nc?yúœƒ£Â&Œ‰ -ãdgï$0§†„HBëFávž‡H}D‚ Z]õÎ…./Ž‘ ëÑã—àá÷ÃÚ§®jòïG ûd\œ©z\`á&òf_áe± £ó¾ækÍ£ úæ4·GŒáaf°2kÄàÓ@h{f‰IP»ô¨a°ÀhVO`cèæÚAAñXDèÉ3G°åíŒ\ò¢»¼xÄéªÿ -l‰ ñ‘I†j­¯M@ª0Å£¶GywëÈéÚaTjø Œpàüc+DŸ…Qï\%óp‚ædyD4ƒO® -¯t*‘V¹`Ç–`ý7c‰IªÞ§£ûÜÛhu\öy§5tUñùruÆ2ît¦´9¬ì˜×X÷¥˜rsãJ0I©så -«›ÓÊM¸tðùoòÓ&Ÿ‹A̺I¯ЦØêTLÕx[E®„[€ú:¬žŽZ¸C NÕÿI¾W5¤ò½cöÝ¢nþêpä«pä41ô*³UAž-B%[„c¶¹Ú¨÷C³ÝBÔ-Ç;ˆLQüÀ*- ¡§Ç@Láüi¥Ó½c›» _ÎMG`œÅ2Dç¬ÎÜQXú8Y ÚÅI%\U -‹x1*¸º|7¸’é/Rà‚Åj¶Xmc–ù˜eK H¶Y¾ŠYæb–¯böéxd)ø4v*þ߀æÛ¼V1'WÊhÕý*@Á>ØJº(»Ø¢ì¢áÜî±¹“+Õ5—¯x±¹ëtîÊç)&(šñ½œw»sœïçJíOÇ∟Ƽžü|ç;8ˆÖÞ ªUA‡p!nÓµS3J¸t>Ý+p-­cVå{W¸I§* öÎw¨²÷ßþqUþÉÙLö–-ê±t÷Údoí¾éî·xH[R@yê,Ó\ÿãçoM?ŸÜÐgå•éاeýX¿²ƒM’ºîÃG„¶yªKu|,•9í’ë¼ø4‚q_`kÏÄ™±û5 ÝlQ+PÃ_ø6¼wœîÆ®­z¡ƒ§˜>9ÆòX„êÓXLÂ:^‡zœ¶æåQõvýW:51¯{‹"Î"[]裮{',v¯ Ù2À¤ È€éÊ-ÛTOÙôè0xŽ_‚l‚ÌÁbãS@@ ´^Ú â”e;š@þWQú{í£ˆDÐ3(¹üý ¸º°-¸xŽ ËL -°”ÙÀ”›ê‚»ùoÌÜRàÿ¹Xä†EpµÛÌî6›w‹]f¹_6ÍŸ[¸›ùo§·û×ìF5êõø`u›~{ë<ƒpã„Jû+s+Í¿å¸h‚?gÕ餈T1œ˜–Êå/s4¹5n‰¦éÇÉÙ«5懗ùÔfRf𠕋«v.^vsÀœ%³?W0l¹úå%ŠÄâ—ø‡o›ýw8ab]°8üÆ<ZM•¹íØ¡Ð |’Æ—9œ8ÖZ 6_óöY— xo_P£83ÏIµ® ŽÔ©S§Ë±˜H2TP€+·XÀ ¹{òÁn/ÊØ -mlÉ‚÷N¡-W÷ÓÝä‹ÈÜÜ°ÞÚò@w~{9rǤ…ËÚw3hòÅjQD€a"5?ªˆØU›bµÂã?q -endstream -endobj -491 0 obj -<< -/Type /Page -/Contents 492 0 R -/Resources 490 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 230 0 R ->> -endobj -493 0 obj -<< -/D [491 0 R /XYZ -13.423 915.745 null] ->> -endobj -5 0 obj -<< -/D [491 0 R /XYZ 29.788 737.428 null] ->> -endobj -494 0 obj -<< -/D [491 0 R /XYZ 29.788 645.141 null] ->> -endobj -495 0 obj -<< -/D [491 0 R /XYZ 29.788 645.141 null] ->> -endobj -9 0 obj -<< -/D [491 0 R /XYZ 29.788 645.141 null] ->> -endobj -496 0 obj -<< -/D [491 0 R /XYZ 29.788 483.33 null] ->> -endobj -497 0 obj -<< -/D [491 0 R /XYZ 29.788 353.522 null] ->> -endobj -498 0 obj -<< -/D [491 0 R /XYZ 29.788 250.812 null] ->> -endobj -499 0 obj -<< -/D [491 0 R /XYZ 29.788 148.102 null] ->> -endobj -500 0 obj -<< -/D [491 0 R /XYZ 568.097 63.19 null] ->> -endobj -490 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -507 0 obj -<< -/Length 3217 -/Filter /FlateDecode ->> -stream -xÚÍkoã6ò{~…>*ÀŠ‘DR¢ú-Û}4‡í]۽ݢe&ÖÁ–¼’œìúão†Cêe;ï¢8E‘Ãysfȳ«_~Š¼›ö$ôn¼Ðûx/^Ï/Ðz2“,‹"O‰˜¥Bzö®O~Þ|P˜D0Ói2f‰Ìæ³ÎÜšÃZ‘‡Óð*Yä›,–béØÓýòñ ‘LXœF3".ßO4\T¾iò®¬+êø¸+—ÚôT}zè ˜ ` ãÌ@C&÷‚D²0æ„ZÄâÓTÄ¿ZiÂè}u[6uµÑU—¯©ëîíþT.š¼ùF/†°CÈÓâˤ4‹ƒìyÄÒ$¡U?êJ7ú;ÝM¹5<Ã"Ö‚ôBð(ÈZFÜ -ܪJ’¤,ƒ6#&KÿºGWúë]é¯ò– ­í÷¢® -½ívùºü¯^R_Wã3ñ·M}‹Ò¡¹åÍJ7ÁZßê5õ´åM•Û6 -tÛ–Õ ½çÕr—뺱 ¬,з?¾G’PÏ• È”mœJá³Ó@(A¢%ˆÅ—Fº¼Õ-½õf óò‰Ä Å´oóõÎ ¼nê µ:v<ôü§ F­‹Žž–t7¿Ÿ…´§‡!Sqd)35€”ÿ9”aYQ°_”•5gþ]Ù­è“]OùùrYâ ¾×ÛñÛRß–…Iµ°@daÔµøp£¿w,ãÔˆ°Æ®Û#.NÁXý¼¨pèXÃÄHg{Ò±;o´ÓÎͦ®ÖV}‹|½&ãñ’dfôöŒÃzÄÁÈ8™¢´]}kËÂé°eË -ɳ„¥| -5BÿÞ~[þÊõµUz ú¥¬ ýÀö_MÑQáK]Õ«¨!`Ÿ†MØ(ê²2âqF†$?hTùƶêSÐïÙWGµy!0VÌØßèv«‹ÌÉN2Üÿ<§0BÚÖmÙišd¾9ÄGh©tFd²(Ö¾U°fWÀ àûm}ÝÝÍÁ"o #è…œŒŽm2e$c+#èvR€¦Õ0˜H‚ƒ®1·iÖ˜‘À–7¡ä -5kÊ ©V츱…§=ba7§PÎç2e¢Àefꧦ$åTÖöŒ±/¬¿V~YQ·êM2ëwº”û†Q¡ÓkåÃÞX’f£Í½ý^bC½E^Í0¯–ºi»º^ÒÚŠÀmÑcâáð;Y‹Ö\èu}÷ÂV¡¬Ñà&ÉiŒ„u›b:[t»F÷(lalÕµÓ-ýY¡ÑÙ•MâÅbÀÜŸã$=8ìYŒÓ³˜Eèã “JÚMÿÇ÷‰ -­}XÇŒmÜ<¶`µ-PgÍ(ß‚³é\ðW» {gu¿·ž›Ün ørFX'ž®óŒ Ô×gí\þÀgn-èÑlŽbf"#œwv¯D¥ Ö†aõ±LÆ„² \¯OS@=Og&Ä\:­”— xpÛ†@æÿïÁ­\¢oáýí˜ïmY65S‘p–„ÖLÿåb±Ã{b?WÅ[ðéÜï0¸þù(¼3²ì•4í‚©™fo¬ÿŒ’:œc­Á³Z]Xé¼³²Þ5…n lYÍ\ðrdN§ÌÖßËgZÎr™I>4³Y©Yd÷*HÉXDIÙ “´ë²^ï(z _ -Õ°ŽˆoG ­sŽÀÒ~ ˆj,Xê·;Xjw0ˆ²Vu«m_NJÌ\ÝQ±7…íUKý9 c»ý$.)JA&Nc»íi1cºUn­ò[»°] a}í§ÑzI¿Þµ62np4ÂÄfTo) âR™CBP·ƒ½zƒ -‚½6hé­ìì³¥±°‹®*Œ£1ŒÂ m¹Xkz3Ù<¯w ©ÜrNúFBÞhm—ÁгDâ‹jÇ`õ öAo@6Y Â=k??¤‚å:7¨ƒ!5“2¡÷^’q.Rƒy2/ÂpØÈ]F$ äT†yuR$£JÀ¨î£%Q®ÄR‰Æ„S€é ©nJ&문I¥!1–MJÙ ç¡©ûÑîäLn¿¤s¡Î+RS¾G†üñdD¨[ÑŒŽ‹ªXï–.Ît¶¸O•Œ!8Iä3¨ÚWô™ñË4Èü!,Ö#Ñü&Rå på"²–ôéÓ=}…E{ŒW½¨–uÝyÙ_°ža'¤ØvÌ!½€Ð~oO<…¨˜Ø´]¹1Yˆ×äwÖØ‚Ãq‘>•®}‰„X¼H¢q†G /–(Úi {e”8ÞžÿLî–Ç9(–f}È>š—ûk æä>Åí>¹·£ðÃœ>ã*ÅèñŠðdB÷!„/sþ€) Ó×QˆJ3¹°ü‡{Dü -‹¢ˆ¹œ­zþ—[ï“QßZš²ý£—'íú #ƒ©YÛè)•GSã>T ®6 -l¥ý<Œº>™Â ©ÊéÆ&rXmX·µm¹ë;ªÐ/ äÖ0çóL¸‹ ˆÌ5éäE½´­Ö–Ø*[z6z¹+ôÒV*ºÈw­ÒÑsYk;¸ªmWIÛú‘zœ]~ñ˜©ÄÒIe'°-ˆ4†³$ )-÷A>êýF'3­.þ€àþ¢®0æ½ÙÑifu{Y•™“ ‡-ÏZ3¡5o`Ͷ®_ OsªÂDÁ¦â ²jGŠÄ2ñnݽ¡—Ò&(wåÚ؉­¸ -yÂøØi \?"Ä#ðQ<0}®ÛÒ¡-cÚj»†üÆ ¥ø^i½l§y®«¶6-¥Å†mÓ亯ñ+¿¼¾'‹ÞÖwÚ%îËú®b÷fÍxŠ¨Œ{wg—îôrHT¾Ÿê;:îpç»?_ÆBÄL£# Ñ]ʧŒ™_cnñÎa™qúk¹(×Ö#g}±y,Ó餱¤²AR™ïºÆ’Êf’ÊHRF•;¯6*(Û|>Cí{X­"ž1å -ñë:ïcûyRÆ2ºÕ©§Z:2Éáœúº^¯ë»>žiˆI½çå÷‘–Yy;ñ‹J•»ívm·òÛzÝå73«êMˆj±sŽ´Çæ—H;ßéÊ–¶Æ¶«××Á$0Ü[Ì7KŸ½ç2oɘqÑS‡· "ǹˆ©__·À.òLÑN0?òë_Qµ‹âè¹Lk_¯F›ük¹Ù¹c"4²ÞöËMÕÝÙ;Ð}W¿À r¡èšz½¿ç*sêÝÎ5ÍØ›> ãôÿràŠÌ3y7ŒX–†“‚9ÐJÚÛ4?ÖKrÎî˜Z$æðX7·ÈÃŒGþŸøˆýwy—Óçv·ø.:zAïŠÏb•Wh½"‘æ¦ÞÙC˜ÍaüIßÕÅnc²3`·YèbÉï`\^¡Ýä/‚Ñí£À\< -Îÿ Q\à*‚1d;Ñ"GV£I!Èb^É] ÇÝTsH 3 û‹WO¡Ë”þKø‚Â*°ì‡qÈ!Œ­*Åa”a"{‘:ýŽzv ¹Ä`qBWù¼“#Ó¼£ëœ˜E§p:üh 2ä›{ÇHÆ=Gƒl³ðN‚Ù×`69ÍÂánXÿýÐÀ`€?ÿ<Ÿ?¿BÒBGÇ¥¡­¿ a]ê³P™T?²#ñoÜ.6Þó¸Ú¯Ä#ÀJÀŠ)‹R5¾|8h“c‡mêïöžŒÁ;Ã"DMO |¡_åGV_‚Aa ’™›ƒÞÖ›\‚ä\Ž.A«ð?n?ÐÔmd$üsL8°¯)oVæЂËÞ ½¡X‘òOúp“7öÎ Ç›kßô²l!?É×fBæë¯Ûu]v®º€]Þ65¤•}—ò5ÒU7v€èšr±ÍÉ[r6° …"½Ív·=Ü݈½8}ÛWA\˜’CÌSöþ–ÃÆM_îwdØnuãŠ%ÄvoJ 9ø0™â5JéŽI’É Pÿé -endstream -endobj -506 0 obj -<< -/Type /Page -/Contents 507 0 R -/Resources 505 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 230 0 R -/Annots [ 501 0 R 502 0 R 503 0 R 504 0 R ] ->> -endobj -501 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [47.105 229.798 169.497 242.301] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -502 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [210.217 229.798 294.11 242.301] -/A << /S /GoTo /D (group__bsec__interface_gac79a471c6e20fd8c17577f6f69a9469f) >> ->> -endobj -503 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.417 136.761 247.853 149.264] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -504 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [241.213 62.194 343.853 74.425] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -508 0 obj -<< -/D [506 0 R /XYZ -13.423 915.745 null] ->> -endobj -13 0 obj -<< -/D [506 0 R /XYZ 29.788 737.428 null] ->> -endobj -509 0 obj -<< -/D [506 0 R /XYZ 29.788 708.67 null] ->> -endobj -512 0 obj -<< -/D [506 0 R /XYZ 29.788 461.522 null] ->> -endobj -17 0 obj -<< -/D [506 0 R /XYZ 29.788 442.979 null] ->> -endobj -513 0 obj -<< -/D [506 0 R /XYZ 29.788 342.236 null] ->> -endobj -515 0 obj -<< -/D [506 0 R /XYZ 532.587 219.312 null] ->> -endobj -21 0 obj -<< -/D [506 0 R /XYZ 29.788 197.739 null] ->> -endobj -505 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F97 510 0 R /F89 511 0 R /F32 514 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -528 0 obj -<< -/Length 2887 -/Filter /FlateDecode ->> -stream -xÚå[ÙrÛ8}÷W°úI® -a¬\æÍÙÓ3™JbOÏCÒ•¢$Xâ„‹ÂÅŽ§úãç‚!’Ú,‹éqUWÅ!wÃÁÁ^\ú@œEy†…ƒ7gðÃ!pý%Ø¡@!!NÀ)ò¹p -éÜœ}ܨ|RPbúÍEž‡­.Zk]ÄQÍÔÿ¾‰3K *øPÒ®k+Ž3æ9~@ T UºðŒ( ”qpãyŒS%ûßNæìúý 1Ì@š’ݹm„®h -.Þ¥Ìy™ƒ©»=ìÆ.·ÜÖ/AðŽ[:\S'D‚¡Ыµá.¡%L´8¸Ã‚i_×·;|å‡|]7é(ùx´ã`dÀ"¡§Ú?¿>»x  $ …Ü÷뇆ÈÇu_ÏÏ“çy9[ž»Ô&W2+ó¢’³ó߯={uÝq†pÑ ÜBˆi äþ;sxø«ƒ!¨Ô¹kª¦ª:ØÀœÄ¹êú€%"€ºÌ§ 8Ø °Z8»}z³Í"<öYè\§*+/:‰ÎÉ$9wÕd’ß™Ríe@&å}YÉÔæ¦,‘r¥‹tX l-ÐÔD -JšH5Eq¦Kòb. ]”ÆYœÆÿ•ƒÆ«üN³<+ëteð Ïò›ueˆÊúðB >ã¿vë™îÀi]é›y.MßgyÕƒËÃÑ2:n¸T‚SÀÛI"ÂÇóaS‚T$®Ûž^Æe•÷:²†4LÐ%Š½K&Q]å)ÊLW˜F³o‹"¯³¹i%ñԒΠӚ›w—û ˜G÷%:w™À`]TxÈ(+Èe”- §ötyë©'Êo<³¶ãvôÇ©éЕ,â|®ïïâ$ÑwqöcVËl&Ð6ÃÍm”Ô?üñ#»»Oz\…Ò ¼ Ü®§„µ¯m?M¢Ò€Ÿ›1õ]Ó‘ê -ÁëL*›LÙEˆn]„(Ík„ §Æ£ýpÒ`ÄxÒàÏ -hà <Äàòœ(øÆI4Mäа Oµc Œ ¿õÒ“8‰ÐC¦—AöÃÂÀf?‚yˆ1÷:ÿ]F¨d°ðöÉÀ'ˆ+š4 ùBu¿ºtW C%¿+°)§@)B´"Ë -”ñ.„À`âqG Ä5±Ñï–œR¨œ’Œè’ò oT8iøpoˆG £ úî\Á$™ÀÌÁ1™ÜæI-¤ú¡¹^>¯Éš1ÇG¡ÍØâ0Jy;¸¾`ŽM-ܩ價~[Ç5œß3 Váf‚d°t uÕW^€·•"î…#ÆUIô¼àäÀÒV“06{}ýˆÓÒ/æyf¶RwSYÝI™îã>†!/Äš‡e@‹ÍŒÒ‰Ï´”³¯e³ªù -£½*òä þH‡í€\’r3°†ŸZ\X%‘õ%>*°œA{6ìµ"¿&ž°¾`–¬å¼)à ç*æËY0Ün¶Ý ‹€$¤üaÙ$GÁQCá$rda“í5ƒ€É-®27 spIÇd!3H f_»ýªV_a¦ÜCjcXa‰¨cCì·=c~ µv˜vÕªµÏî1†Zb泞Ú^±yG«ßDSë…§eÊ õ ã àÛ=¾ycXa‘×5ãôÆÐk¡×Ó»{cèmÔøË„½£ÕobD`NOÃö¡{„"ʶÑÞ!Òà ½® 7†^ ½žÞ}ÀC«%½®Ö²ÞÑú7‘‡Õ›r~òxH§Þ(Èã¡J|‚­ÈÛÇy£ØЯgÄ~ࢷ^_ïࢵe¼žÖ1Þñê7p§DPzZžÇ} ÇÁ]‹ X]õpG‚‡$z£˜¡ çÚ·ƒ `ôÆÐk¡×Õ»ºEoËz=½c½ãõo¢D0rZ®ÇE=6N®Ç=.±èÛË{cXaÁ×5ãøÆÐkÁ×Õ{|cèµÌ×Õû0æ;Zý&ö@'§åzœ3äãqr=Ρ°·{‡xo #,ôºV€Þz-ôºz÷N¹chµ¬×Õú@Ö;Zÿ&ò@„€uõIÈ£>òÑr=F‘[‘·—óÆ°Á¯kÄà¡×¯«w/ðÆÐj¯«õaŒw´úMÜú'mšüŸdlí@ ’怚©ãºÝ²šË›¨Nª­»KºP½}ŽnªvÇL½gŽ³Åqï¸?ëý0õj;Îâªÿ"[m1bvïš³ jÃn·G|¶íâMåÐb97ÚMä_¶d%¿ô72õ+iXA Aõž|óV™ùÈóh;¾(bç®Àxòwy¯%¿ÖG -Êí'tF9[€Є0Ýk½vWæC!gq)m¿Íê¤Ó¯í®f”Nc™Dq»§)Óf·Ó´ÉëJ½ŠìxÎåm<û)‡+´'jg”üOŽB!U•[ÓfY§ñ<®îÿq¨Ò¼\-ÕÀ1'0èå_q6ÏÛ]};¾×Qb»_±á»ËÍvœ>8 oerdp†¼ÓºÙ%žËÕ*‰gf—ÿ§ 9%¶oe”TËöÐð{^À qa8[&‰;•jÊ°¼‹ŠÌrsûs.—÷óîücä,eÔýªŠü›ÜØ}jˆ{›§ƒc!­Gf[÷g[ÏN±þ…±ÑÆ:èÙ-0¤ºøüîõ:ùío—/ÖÃ$Ú ç'Ömo¢ÔºÑ3Zöø›l]ÄìÞÖ¬òû§í–:c\d²êó]µž¶á -ˆòG›žs@VW>m“mrÝŸ;õ¡ŽöI~ SÅð´óMž$ùEÕÍÖDs¼cŒð³wîîU¶Œ²™LmâÔâê͇+s^7ºƒÅ„D ôl}ÐÓ­rWåðEY5×f*NUŒÙÏÚ™!š»0kˆÆ–I¾²m%gJÕ˜SÃö‹ ×^àÞuòŒm!Räb+X¿ŒËRŽ¨ÚxºÅkÎBêô/Ë[Ê?÷­€ú䳇¤i€a¢ö>ŸÇª«-µrσ< ”Å­:é22ùC]èäeTEúqYOÿŽêj•È=aNë²»¸Z浩å•Jºh‰/óY­‘ÚT¨Ó©,þvîú”À -óú\ˆ‰ûü½:æv¾Çp›O1ÜËb¸úÌ&FT}úÐü•Øþ»«bæP8Þx+ @ëW°äÇöS”#û°]ý¯;@ÀCè)ê5ú{!¨Û¿.1ëtŠIèbºì$<ÿöÈ&CŒø õôÇMÎÙŽfÎN=gÍ‹‘RÍáSÎ@Rqk°z¦½v*™Û™s枺ƒÆn§•ªÞV³Ï·Ut×ò‡‡íûâ—Ê5ÜúqÕøf? ƒUBp£Í+-bjª¿îý,uU«‰°ŠƒF?è~ŽµF“©cªèƒ‡í›8ÛÙ½:ê«°µíužè™Ó­å¼¸kÀl1%l¾¥"ì ÷Yc¢óYüä“7éô­~ °Î]AøäR½LReE¼Xªš{ÃBÀµŒC‘”yûÀ.SÔÏ(»×¢çq¹ÊË(i„ùc•äq¾VE…„™l^ÏlP¸Ê—›9LUUOëN›¨Ôd3&¤Ç6jAe²¡²]µÒy»1#o¦²öø:,zke@”ØÜd%‹vÁ«ƒ³ñÞ¬7¹ &`|s$Úcì}Nxüì¦;£ -endstream -endobj -527 0 obj -<< -/Type /Page -/Contents 528 0 R -/Resources 526 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 535 0 R -/Annots [ 523 0 R 525 0 R ] ->> -endobj -523 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [297.649 568.316 416.641 580.852] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -525 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.995 393.76 259.035 406.263] -/A << /S /GoTo /D (group__bsec__interface_ga51bcd13812ea62b35749284385a72f98) >> ->> -endobj -529 0 obj -<< -/D [527 0 R /XYZ -13.423 915.745 null] ->> -endobj -530 0 obj -<< -/D [527 0 R /XYZ 29.788 596.638 null] ->> -endobj -533 0 obj -<< -/D [527 0 R /XYZ 562.881 396.823 null] ->> -endobj -25 0 obj -<< -/D [527 0 R /XYZ 29.788 375.876 null] ->> -endobj -534 0 obj -<< -/D [527 0 R /XYZ 29.788 253.285 null] ->> -endobj -526 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F89 511 0 R /F44 228 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -572 0 obj -<< -/Length 3284 -/Filter /FlateDecode ->> -stream -xÚÍ[msœ8þî_Á—«W-2ˆ—ýrå$ÞÄWIìµÇ»u—l¹0#¹Y`ìxküµÞc 1›K•@Hý"õÓj1ÝGó‹sl-ËÇZZŽõö, ×? Å±hDQ„±zµ -fÝüÜé|TådšÃ(A>Ú£Ž4Ï/lñaüÿ€†È‹°•¬[ B½6¥§®šœç»¾„QL8Q.  ïHˆ¢ 7¾ïz„ÓþÕʬ'‰þq€\Çjœ¶q+ˆî G§k×z“ƒ¨O û¼O©ek½(F~èjÉérbEˆza<«ÕNp˜%KrpçPW꺻}BWï9]wC &?V„ ]áÈçã_ÍŽ~£Ä.Š¼ °æ·‰P†VÉõž/¬O³Wy™ÜÚ$g—,+ó¢bÉáoóœÌ e°G……asrúŸ~s¬¼ü—åÀ¤ëAt]óî ƒk­¬KSäLCèë„‚i ä³ZZO½ºx»OL}DÜRâòäµÔá4«Ø²ˆ«4ÏdÃÛmº`B¡±öôìõ«T:ú)ŒÀüàÉçêØ{ײ}¦RŸÏÄöÊ,g&Ü'Àg£Àç‹$†m«EžRñ,¾O—b"~ +––ۂɇ8[È›rK^ªÆÍf•&bLÙd?‘ªBX‡ˆx/Óô×CÎX\Ý1¥ím^°$.«ï[ìw,^U -mI\¯…9í¢å³C†–è½Fi‘¯YU< ü}«øË!¥3VT ÐJJÏVy’Vò)ÍJ×½ªiÉŽÊ4û]kÎØ¢£4Hàq¶¥DÈO8†@~îøC_ -r¼¸³*^²r?ú¿~â ÝÁå…Ž;vÎû£´Š¸X<Ä]dæ·Õ®9Éí+ÓeVÛ»¼É7UºÖS½a¼XÇY¦²Ch[Jý•Vbjü:_oV¬bû½Ý–µq”ùj+Lå{Væd•®Ó,®˜o&ÛZ¤ã ؤÙrŸŽ¦ö©jM¶e/>;n è–ì;›ˆ‹ü¤V O‹j«Í²…²×mµÙê Goúgg¾À¯w\c¿PJHq0"È;´!<›]n7|›Ó|~ệ)à¥!à™PµÞâUÙfÝœñ¤Œ’T|:¸„К¯ëÐÄ¥ÎlSä÷°„%ÂREÞœ+~¼±TüÄ‹ezÏ2Ùžf²©TÅ7+&ßÝ€e=Ro†@׀̎W+ÙÇ †g·°ÈæzeC¥øNÅ\¤3]3›O@Gï–ÒØ„ÒIžUi¶Í·µé*QÄCÌÁ¿hÚ;ûâ´´¬Àe+¾ºKÅŠ{Žºq©fî{€ÒKÝ(¬ÃRêúÈu)ÜËÀtr§áApŠÃ>Ð;@€D£€r»âó¤ç:ÂŽ z¼@tïI¡uÚ“±²g.ˆ‹}Ïòà )Q!MZ‡ˆk¶gN}…72„Ïlඵñ97 U†‚@ ©ÍU–V] \‡Â:¹S.EÔ%m (Ђc÷à凅qÐÔà8IÐ?¾<+@QàÈΰÔ~dÁÁ‡ƒJø³=ŠÂaÈ é„ŠòÓUèµ =àh„ÝÁYz6=Íö+ -Ð!„šŠ’®¢ qÈtŠr‚žƒÛŠú”n“žÀµlòý¹„×:_ìuqÄŸLN°ã*hÛÒpÓ¤pÂöA†"ÏèÁçŠ|…›èz^ à€y½Èó‚ÇtÜç¤Ö& &ò'€«92jj·™Ÿ ºnÕõPäí>@\Ÿ]Íϯæ×Ç¿^Ÿ_œ\^^]œ4"‡ý^v¬à{ª]£!ÑyÜã'àÉY‹e–÷x¨)Xúðq'`ð<~ÿ^OVw¯.ßõx á°w‚¦à#×q$ÿOïþü­÷Àáêòµ)@/{ ×±ì»p…kè¾® @H¿-\á€øûá:?ùp~rq<†Ø±²÷!ÖjÁÔéður'à­‘k°îEî,5r žã‘; 5r A†#wjä6„ܱì»Èå»<}rÝ(‘·D®C ÷#÷ÝÕ‡Ó7§ó?Ûт!à†Dÿx­S°Ôh58ö¡u–­ÏÑhB­† ƒÑ:…5Z› Aëhö´r -^ðB´†p̉¾)ZÝÐGODÅo/àt¬È=Û«!ËÙݺ¨ðT@5Xöât -Ž -§Ëñ0@ SCŽá(€¿Fi“ÿ ŽåÞ)P ýž)Hãâo RÁQ¦`6 :Và>ˆš’8ük}L'à«aj²}T¿îGêL5RM® ¬ö tþ5BMþÃ1:5F[ BéXþ]”Œ_ˆR—B ðŒœ‰^SãG%XÊžˆv?*iÄ^ž|¼<»¸~wr<¿~}öá\~b´ì>±Öšp3pZ´>;ž£Æ8ÆèIýËÞÞ€l‚Ä“¨lX[ê©5iŽç'oÆ©ÇÏmŸGÑÚ =TOÂ]û“yo0 SíWL®CýÊÔŽÅ`¸c™B„Ú³´DäYF Ðu-@ _¥ƒ!†ýçò¿Õµüë4žÅ õ79–'þÑÓÚsäך=w䟂§ö%Ë^W2 OíJ ¦C=ÉükObðîH¦ v$M ù‘Ñü»~Høþ‹ÜáɹAô-Ï$òÀâî9âr~üêôýéŽç§gùÓüjÀÙ´=a@C´Ç£ìiÌNÁUA¶Á´³“ðTm0ˆÙ)økÈ6øÆìhȶ%‚ÙÑü;å^úŽ.ò¢o‹Ù Üûîêãõ騎¼ª;‰ú:O ÔË^˜NÁQÃtÇr(H'à^ƒtÇ}8D'à_C´Á@Çrï((zQZàÿ‰FàtáqC0OFÛóCìD³\&mÆÉ]ÊîëÑR¥—.ã²ö‰Íœq°I7¨SSñl[2Õ©¼‹W*e4Ëu²êCZñÒ!É£z`:[•ç )x&;¿¹Ò-<“H‰°Ø"ZçÂ>ŸaJ .óy… Ww•Þ2{—#šßª|ayQ©³Fî1¥3TóØFl^|fäÀȳkËðb Ë6²ÔŽ“d[ĉ*k(«¸ÒÙ®ñ}œ®d‚®®p(™NÝæ½­ObèMÉ’k™—{]ýøc¬YšÞYœ´(Þ§ "8“NnÝóÊfÉj»h'éêt|´'bfÏWÕ°à®m/DÔ×'räÊ\ì žê[°5Ëtxömo=‘}ÞÈúv@fO¤`jK&uIŸÌíˆ5ßLÜ&!=pØð›rÃ’ô³ãÐÀ>ôg²(CÌô¨r5$/~×-K¦Ê” 7@æN¶ëº;¸eÙ}Z䟑™Ë9é„t#l›SIñ|臓/_¾ÈûÛx‚(áéßnàÏ>æûVàŽC09¡j®tãR>ȪÞªóç‘,8ìÎrùFluÇX^’<+Ó²b"™;$-Ã{(eZ •›á·7¬&Åg| ,êÍ£¼ê"³´*Ùêv€ …P•˜óت5o×t&Ê-}h¥Z×<¾ÈWÜtª˜Tw‘Þ~' µŠ;<7"Vó"*;ö´_LWØp ¼¼ 섪ò¦ùB™¿ªUó|V0Ø%îùâD.žýÅ/dö&®bùºÜÞü—%•|àðà×ä.ΖŒßS‰|«:Àæ’&LÒøKR|“'Ûµ°$Ña»¾aŇv@0XÀœ;vᇎm¸[”}ÚÇ'ߘjO/ªÞ¤:Þþ—V(Ë Ñ Ù­ œl„"> -endobj -555 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [35.168 431.876 215.371 443.796] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea5f42ad42c6bb71627b5ce91d4c410985) >> ->> -endobj -556 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [35.168 415.696 237.789 427.616] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea792b0fbeffceea19513cc0bd31ce7ef7) >> ->> -endobj -557 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [35.168 399.516 208.084 411.436] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfeab9d6e7e5bb1c5f99d339a649d588b3cc) >> ->> -endobj -558 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [35.168 383.336 178.4 395.256] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea64d14f069c838de2d2c1f3f436ef6108) >> ->> -endobj -559 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [35.168 367.156 142.64 379.076] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea2368e219ebbce4e1ede7209486283a6e) >> ->> -endobj -560 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [35.168 350.976 258.693 362.896] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea4e05ab48912e70486351f5199910fcb9) >> ->> -endobj -577 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [35.168 337.427 177.179 349.346] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea4e05ab48912e70486351f5199910fcb9) >> ->> -endobj -561 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [35.168 321.246 258.693 333.166] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea1c0eee38a61b05c5239c871f9cdc85a4) >> ->> -endobj -578 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [35.168 307.697 147.473 319.617] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea1c0eee38a61b05c5239c871f9cdc85a4) >> ->> -endobj -562 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [35.168 291.517 253.575 303.437] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea9fe6dbe27991e3f9f1a444c40b30af3d) >> ->> -endobj -563 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [35.168 275.337 213.549 287.257] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea1aac5358fbe12702647de81cacd6d062) >> ->> -endobj -564 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [186.891 201.605 307.126 215.366] -/A << /S /GoTo /D (structbsec__output__t_ac4e7ef20f713075472bc953efb13957f) >> ->> -endobj -565 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [112.486 62.194 222.391 74.698] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -573 0 obj -<< -/D [571 0 R /XYZ -13.423 915.745 null] ->> -endobj -574 0 obj -<< -/D [571 0 R /XYZ 29.788 651.283 null] ->> -endobj -575 0 obj -<< -/D [571 0 R /XYZ 29.788 550.741 null] ->> -endobj -29 0 obj -<< -/D [571 0 R /XYZ 29.788 535.188 null] ->> -endobj -576 0 obj -<< -/D [571 0 R /XYZ 29.788 464.237 null] ->> -endobj -579 0 obj -<< -/D [571 0 R /XYZ 420.936 204.669 null] ->> -endobj -33 0 obj -<< -/D [571 0 R /XYZ 29.788 178.402 null] ->> -endobj -580 0 obj -<< -/D [571 0 R /XYZ 29.788 139.204 null] ->> -endobj -37 0 obj -<< -/D [571 0 R /XYZ 29.788 139.204 null] ->> -endobj -581 0 obj -<< -/D [571 0 R /XYZ 269.297 65.258 null] ->> -endobj -570 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F89 511 0 R /F44 228 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -595 0 obj -<< -/Length 2033 -/Filter /FlateDecode ->> -stream -xÚ¥XYsÜ6~ׯ`ù‰ª!H"oöÚò&µÙM,¥òà¤\ ÍpÍ!ǭ؆Nµn¿¦]áî˶²ÊB;H#i,…;#@îËÌY£æI˜àËÐÆ(ð>·Ê?iÆË«(ò"“Ð8it@d$”ºè‡Ž'\ð$$ØÂR` ]OIòÙõ:obÔÉ„EVð°/à¹OÝpÛåm¹×÷G(BüèÁ‘‚ôB; öÙ·º²ÞØeV»ç~_•ù¸Âo¹üu¸#À‚|¿Ce©KÄ}{—厶*?«Cù¯ë¢mÊÂR/6#ÇŒ×q—®ŒSBgü˜oÒî[gUõdã:×nÙfhǨ*ûNSzRÿÎeyÞ´…sA:Eˆ³4=DÀ›¡ß½EM¡«ãU‡.9"»TÁñTлlU=Åñ‹âïˆwÒhåÁI̸õŽ T›Ÿà¾mª¡t þ^µeSè£4NÄ8Ï…35€9óæçwvmw:±¯}!Bÿõ]o•úê^µO–WËŸÄ¿4ýÀõíV™€×ûlÕ‰Ìb+ïqÀa½W«G}b25–ò{4ÿKΛtÛf¨ -»õ­²£7ªb¨Ô~rú˜s‡ÑxÖYp·Wy©nd,ëc«ú¡­-ZŽGxÌY+O±„[Ouªï‘DËŒ¾rUä«Ým}%“QNÐ[íðBX(¹ îÅÚ 9°¹y&)¶˜qÄ8ãLS˜“ÌâÇn. Ú{l’HbtÑDê‘Ñ–ã«Ò<Œ¢„þ`Ws‹ÿbú¾TÏuÎ4>蜺;³Ô5N-O{W>‘Å`g†Î¾ºþFÇ„cþ«ëJ©½]u_ºTÚ©¬ƒ²;U÷W: úðë²Cô¼²ÛùÁb@ - ñÙÔÅzÏüb»¦p›guaQìß7e¥¸¥DÔzà7³‹LÌ.¨œ†Ú+|ö -pK¯ÈØi¸‹âdö -°£WS”åNYô×’ÑfÝg›‰­šÇm£ u$€Ö‘€2’~CÆHIhÊÆ„ý¦…± ã <¿u2þÆ™ê’ë(çoKVrjŠX)”`JqâÊ -J|•ÙUýÌ·Y½Qz-ü‡²G{tuÓ—zÒÔ2þ²ß6ù`« !v·ªEåNf•ká˜Yâ4 7´À\΂×ÿ ÃÔ á¸¤† ;0-šÓ£ýìàzÊ9f€ÈCSâöò¼¼œ -F—SôÏpºœ¾ðôÆ6»^‰3Ò?îÚœzü¾i®1¨)!•A£vÿ_‘´èã¸óG4ñ¨$,¶Ÿ;¼³lÞÉ}t(J„Ѓ§Ùñ¡L_>‰öÛøFI¥8™ñ¹ rËÜ; VØ`Å,¸4ùH6á³ü5zÍ(~«M G;®mÓ‚Û»D¸1¦æ£ u”ú·\ç;ïû¼:íQhűc‚kTº‡æhr4ŽÄDÓô-f:ìýhÞÄZ3Œý«½%Uàâ%˜æˆ*Ò|]¡ú‹ÆÁ‡¢(‹ExåþûÝíß-BÇ6*± Ü­‘†µåfÛwníªÐ…®Ö(¼U׌ˆMæn„ú5«Ÿ¬è¢ìöM—U†A¢ÿí«¦ìMñp V¡ÔC>R_¥ž‹Dômy;,x0¦›bƒVRzPm”m ©å—=il-¸Sýª/´ó}z=#”u1h²jjL¸ðõ®‘Y篎²"B ÈoNw5^p <þ 0mq -endstream -endobj -594 0 obj -<< -/Type /Page -/Contents 595 0 R -/Resources 593 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 535 0 R -/Annots [ 566 0 R 597 0 R 567 0 R 568 0 R 569 0 R ] ->> -endobj -592 0 obj -<< -/Type /XObject -/Subtype /Image -/Width 924 -/Height 679 -/BitsPerComponent 8 -/ColorSpace /DeviceRGB -/SMask 600 0 R -/Length 26176 -/Filter /FlateDecode ->> -stream -xÚíÝϯ$g•ÿyþ,zÁ¢HH°`Áb¤^°`ê‹^°@Bb–^|¥YŒZ-„$ ƒ`„Èn1- !É߯¦§[è‹Öµm\÷ÞrµñýQȦ cÊuoU¹}ÇC¹°‹ªšçÖ±""##ofƈ|½uTªÊŠŒ_™ñ‰Ož8ÏyÞóhæþýû÷þ’û@Ô¿~®J°¨•å©0L—ËÜ€*Vöè·ŸØ>zèÉ?ý½½}㹿úÇgßûÿ.Do‘¾ré‹—¾~éKøø3¯^=y«bn]³ ¤Ì€¼yç;¿xõ“½ÀS‰¡Å'¾û«onýþäöÎ4Úôçí;w“›ý뇷y'1äøÀ—/$g›¾®ù«ë*`ÃI–àîÝSo°õâÉG¿~‘_c‰~eûþ[ rõì·~~õ}_x†M£‹G~ö»\‡àŠ`c í»÷zòEÖHŒ7>÷ƒËøãŸØZ6d¢ä€¡ˆÏôÈO À´=íGÝåyÄäÃ1¦JÜå¹ÁÓžVžð´B𴀧‚§€§‚§<­<-ài…àiO+O O+O xZ!xZÀÓ -ÁÓ€É{Ú¼–v;ý¹ÆìÃ_ÝÝ»v+>¸ÇŸyµ|=½’þk“OO OÛs|ê±êÆl}ž6ÞRáµ[w¶_~#íI}ù´WWOÞŠÅÞ|ûnãbÿ¯ÿy6»—V›iXÐöÃON5ídÚ¼õ´'ùí>õJ¹æ8™ñ´iÏO,O ¦äiôÜõìëÎËÓfËúùþº\¸ô%¥‡\ÔÓ–ùÕ -isÝ=múgzKe‡SÄÊÓòCð´a°‡–+æiàiWÉ›½tãv8±Ezgö´•·$g;PºÊd\Ãèæ jÚ½x{z1™ÆŠ§MGÑebC±ÚXIú3ý=½²Ð±ÌúÈòž ÁÓ³þ§€§]m$3ÊÃ@þè¹ëçâis DéKcÉzI@z=ùðäcÏài#oY±Äå©hü¯îž¶<<-O OÛO<ýÒIvqé/WOÞª?s{˜(MfÝ2Eµ@ZíúÒdtã¦3œÎLeýiáô®È§ÅÒòy( )s×¹ø¹’ij‡Ê§Rîd>?åg:«D™§#ò´ai²¿­—T|Q-kÅ ÆZªRgyÚ´Ñ( ( eÃ:¦=,S²KzÚeÎsO[þ.ˆ#ÍÜ«v?ÿÃ_‡›-Io ƒ6™ÏzñsÞb¤—½ÑÓ¦5×w©^ÉÌÓ€±xÚxP^qG•kÅA¥·$k”ýOiPã±~öcg#Vù•×¦+™Þäè­W˱³Yß.~¸¾þJýF>ÒœûÍŽ´2Ð,gJÓ†áÌŸB,—O'!È? -b³ŠFf%ÒÓJâLæ_õ=O Fái“½)s€ñh¾òJcABÝ2…žkhÛ=mÚtÝÖ&Ó• [™r¬ÓÇÓ–…ùH+Yë8Øÿü+ ±µZ™úΖ5ªÒ[òQ´î«xÚ¼òÊÇÎyn>œ§Có´15@¥ ’~e.4|W´o­§°Léãz»ØX{;”Ͳó±QÜX¥0wëëö´ÿßx¤¥§UZ\.ûmÖâ‡C:ð0ºy£•Ÿ!-g{Öèy(O O»ÚÎ¥]Ú´&+¹ÁÈ‘–£œrÒ5ì\—!]-ö©c3Õœ^Ô¬†_¾ž¶ñŸõÆ+ñ´áZSä_é(rÑHc¹O 6ÇÓ6þÊu–'ŒljeTXÙ< ©K=m£} -Çÿ%õR„F?¹ª¾i‹{×nÍ-Õîi#wZ¾wUž6ª ¢…oœù8ÕioÃåÎ:K<-˜¶§ SÔØ  ¼Ù\›Tº²œ'Œ‚ÒvkÔbŸÂ¡eO;«[lþ¯Õö§M¯DUìâ‡vO›Ì|¥`®§tk{=mÞçòäÄæ’ÅMk›õ¤qr¦zõ´;ûÇ»‡Ç[W®¸üài—™·Ñ¸Æãì°»éïÉ픕´Éö„ñkÌ4†-l¯‰m¯§­ç'c²Kû¹ÖÒ/T(®²>Xøº–çø-ž¶±`®§íÒ÷ ôð•F¸ñJûŒÆñAÇ2q°Ãé{°{p=ÅÎÁq2·Ï>“ÀÓža>Ü–ü^îá?«æ¶R{PÚ¶ÆÁþûTÞ˜v`VD¥ÁBK߃º×mYm»?lñ´õƒŽž¶½?m¥d¢ž¼[Àf»<·ÃéOžöÝHÎöúî夞v¡ùp[lg¤òÂ,¥…£åWî£U#VÚ¶üÖƒìYž6™½F{–^Ì}b±úT_ yÚ¼ÚÒÙÎÚzGO[/<èèiã ç¬Ì#V))$›Õ¹S€¥ÆÊó'žÖŸ?ÓsœGì/=íõwÓ¶×/r¶ð´¢ï˜Û|@t÷´ïÄþñöþY`÷ŽSð´b…ÑXx –ò´6·G[[:$Ðàiw÷OŸo^˜³åiÇ…b5žöA5B -í¨p:åÝ{åîÁPžoò´‚§—.½NÁøsªöฬÜÛÀ˜žVð´r¶§¿äl¨¤jKg»{®cRxZÁÓ.êl¨¦jÿrL -O»9¶Êy¯§=­:<¦f©ÚÙC­Oï•=gX¬öfY+™¸ìûê„ÝÓžûïP†žª-²@½Uî±Xí“š-¹’˜E¢œéÀ ŸŽ§LU<ƒKÕV*÷ÖïlY¬µ ÔgïrÂ'åißýzaO5`ã¸ð Wm÷DÐZû±X<-O»g»ý"g ظTíñ¢}„ÖälÏ×b%³·wíVìÃÕ“·æÕFCøôK'o¾}7–yô©Wê«Û/¿ ¤?ÓßËúÕ¼–^OÆJR”›Žw%Òß³óL¹ÿ—”ÿ•wøµ[wÒjç:¨L,O{e qP¥éH§"½ž¨uËI¨NDÚbÚ(¨ˆ*ÕÂñzz±üD*+)÷*¿<Օݨ/0볘†§}§—êîå«$ UÛæl×ðˆó=m2H÷k$GTñ´ÙDeJƒ—ø¡Úéº`!v÷†WoðçØں߳§Í&“-J2'ÙI–”Ž1=W(qsVHíî÷–߇ìT+Ëdën­B9ÖiÖQd[k(—é~€õ ÜtãÑ•½ÂÓÖw/–iñ´ù-Ù¦¶o«îicùz£ƒðç+)6Oû aG`El]¹2ü_—Y­§ ÞìGÏ]Ï)Íìa’? s’–Iî%Yšlä’±¬äEÓ[¡e?Ž+ý¯¤?£ïSÇ4æJö![ÐØhìCù|T ^£Í‹€d/Ó9©;±YƒéJçv¶qXaŒËrÖÆ£k«Õh »xÚÊÍÝÖ9zÚ÷ĤÕÉÖ&gËÖãÝþc"Ýi¢ÕzÚúP©Šo‰ÁG‘ÄKÆ/>êâ'WÕZa™}èâisUC²ß‘8MÉËõyÚ¹ïâi³§ vŽ;ÀsÑ„í¥K¯“h@NçSÕíoçðƹçi[\VT™–•s÷$žé¯ª­ÓÙö¡£§­6ÚQcÛfÑ€MewÌmzÀÓŠ¡E”¿vëNTÒvý·VOûž(²óÀ1Âѱ!ShÀžbëÊ•Mó´ñœºG'ÎìiƒÓ"Ûýëc¬JJ†|Oy-lIð§áf ÆÓ::žváG9—oŒ2g»ýÒá5RÓf:“¿¿›“Ù@O+D?ž68í÷5Â"¥í¶&Ëç››ái…X«§ßÂcüÁ»«&ihO›ÐŽ¬I×ÜÞ9ØÄÚ!zö´ïhȃjŸq Ûak`Z쌮 íþé@ÝÃ97Ð…æ|çiO»${ï(Éñ˜l­f0™ í¨R+§éÙwÛ§Ïm+ôìó7yZ!zó´ï&lÆÖ­€q“<áîØê *}xZRµ; ¶XçiO»BmW³¯ýã´Ïn -0FöÆÕâàA2yÆ­s¦­åi…8Ol\ÓºÀЖéÙK—^Ÿu,»ûG<­ô´ïÛ¼ciW[¤ÀЮ<=[µµ«¨‘ãiO»&voŒ¥ngÿø‚l-Œ ãiqОž›ªÝ^0O{ïÞ½t—ÿÈ£» àiWNº–Ç4õò 7 ¸¡Ѭ - ZC#¯ÃÅîJái?þíç1íøÐ#;é«ž¾ðýKÐÅ‘L:vº“²µÀÐ.]Ò¶P®Y©ÚE‡{„§ý»ÞçyÄ´#ýp;/O{š°=¼¶;!bk€¡]¦ÞàÌu–IófOûГ/òüÓ˜Î>ò³ß1BbñÅ_‰/ö(<í{Ô! ÜÖ.:û6 #Cïô¸ÎÚõÙÚÏ~ÿcOoïÎÝ{#2´™¡·ùºÌÖÀFÚãem£­MüáúÌL‘µ¡M_ã±T4ÙÚ£gk/(B€ÕqúnȃÂFû„.RµŠĨKîܽ7^C\<t#—=¶Vdh‡\opéðÚ¨Oo<®M–à_^¸©‚W—ƒ<(lÔ†6xöù›»ûÃÍÖŽ¨° -Ë`‡Q¤›Fú"×Öþázäg¿3ƒþÄ -_úÉo£m×Ý»w'`hƒ`k`’†v÷`Rã²­M½ñÖÃ?}ùcßxŽwC‹~ýbúrÆLa“ÉÐŽè±”[LËÐ_Ü?šä /mâ77oí©W>÷ƒËûO{yt÷¯þñYžJôœM_¼ôõK_ÂôUÜ?º•¿œƒ)l% ¶BÒd7&X”ä‡YW¶3õž9ýu÷Þe†ö][;Ðf;ýEëÒó½ÁölÜ =/-—‹st°å×o£dpSèïhƒ•üò!*ù&½011fa­™s ƒ†_`mÚ%ÇôÏ¥ÃkC”ăëÛ×|:0‹aέpºK—¯útœ ö†9^Ìc0“aZsè8_ÚºvÿXÓZh0´ƒìÜE± ÄÖêîÃg€»h5€A1Ìê¬>عkÇŒ9ÉðiokZ CíÜås0\ÙZà@«C›Î…Ó¦âÇ -,hkW¬uéÒë>›ÉÖÖýv§ñ¹`kÏÖ%Æ Z`J˜NœQÔ… ²L–A–…4Ó•‹ÁÊ)YÈ20‹Šf½ñöÛG=ùâgž8øø·ŸÿÈ£»ïý‡¢ÏHߺôÝû»ÞOßÃÇŸyõêÉ[uÙ‚, A–Æ$ÀÉ›w¾ó‹W?ùØ ®\1ÀøÄwõͭߧo) Yb@²|›,c(Ê™þ¼}çn’Í¿~xÛ*øò…$¡é›¿½.de!È26üÁÖÝ»§ßÀ­O>úõ‹®J1¢øàW¶ÿçáÑOLQ–ï‘eA–…”3ž|ëçWß÷…g\ŒbŒñÈÏ~—x¹¨A–… ËØLå¼s÷ÞCO¾è£ŽÏýàòþø'ú ²,YƦ‘¾fQr@9Å4â3OxÚ²,YƦ)g|Ǿõó«.:1±§]ôdY²Œz¼µõâ‰b-1±ø—nzÔ²,YƆ(gâö»†ÓŠI¹ -.9e!È26!ð_¼êBÓ~ÔåbY‚,cªÄ¥“7ïèà-&Ü÷ûè·è'ȲC’å·É2d„X4þéËÄdY²ŒÉ‹§IÃÅ´ãcßxŽx‚, A–1í'\Go¼íâ“ßܼmHȲdÎ<±}äÊ“¯=õŠœÈ²dO3ÔˆMˆÏýà2ñY‚,cÂâù™'\Ybòñ‰ïþŠxb,²üéïí¹fYÏô¥re‰ÉLJÙ!ž‹,ÿ/ÿÇ%׬ ËÀ¢âù‘Gw]Yb‚xb,²ü/_pÁŠ ‘ecÄ°â»äšÄ ËBeO!ˆ'@–… Ë žBO€, ² O!ˆ'ȲdÄSâ e!È2ˆ§Ä ËBeO!ˆ'È2Yd žBOe!È2ˆ§Ä ËBeO!ˆ'@–… Ë žBOe!È20RñüûýÏ´3/ݸ½ Wñ^K›þ$hÄàiYF$žŸzì…í—ßxóí»±Ñ«'o=þÌ«Óö´þên:êü÷×nÝI‡¯ ÇÓ~þ‡¿>óQO€§‚,c£Ä3§ìfK’³ª§MŽ½t­ô´ñ¡´Ÿðö£ žO+YÆF‰gò®iC{×ne/ôèS¯Ä‹Ù/MÌÓ¶»Ö!xÚ.'|b5ÄdY² â¹ä—öµ[wêµß|ûîöËoð´<-ñxZÁÓ#õ´],VzqïÚ­ØÏ´†º¹JÆ8½˜þ+–I W -Dãõ´X^O}™ÆK¬åż«9Û\ÉB§ÿ*K,â Ê5ÌõŠ±†´þ\„œŽñGÏ]¯Ÿ´Yç'v2½7{Å£>ýÒIü¥dÖ>´Eyâ#HF™t:ÃyÇÒ!”ûÐåS#ž ËBð´ÀÅ3ÜQÝÛ´{Ú(æ¬P.Ö–-eIZUåz©,Ö^ÚÑÓÖ+„³o_•§­o¢X7÷üÄV’cÌ´±“a)Wåië;™¼wåÅE?5â ²,O PõJÅßVWg«=˜ubâ‰Êg&o·Ë§Fögµž¶Ëù©¬$®áÐÀ\eÑ2#FûQœÍÓvùÔxZåe§Ú¶vµO¨'àiËóVÙÚø8,)Xü ?›§­´‚É®µ}?+½kêŸfcCžÄsM½Ò%™ÍLºî’‡)/ê¹óˆÅDº/Z™‘*­¿±ÿUîïÚqÖª<1Vl´R®ÐÅÓÆ+a×äiÛÏOž2¬1?¹šrþ¯±šugó´]>5ždùlU-—s‡ŠêÆ+y¦ÂüЧråæ«5ºæXõgëuM(/ö¨\M[L ¤¿·È~ùbþgR‰J©Cz¥¬8-máJ½^9Ÿ‘DMv÷Ìž6NÅ¢ûYñ´E\•ó3ë;Т½§°ÌŸiú3-ÌÓbÓ<íùö 1.UOL^–²ÉùÔŸ%““mR¬­¾Lü¼íèiʤuÆ2Ý=m¹-%©íÇÞ¸¹<¯b™Èž6œd™K‰déìÍÓÆï(µ*gl/7‘v)Ž7™ÉœˆWb±XI½n¹>íNÝ·Ÿ´.SXÖÏ||Ê<-xZžVð´ÀJd¹{;”œÓ+'C g’­]òU<‹/=^eo+¦1ì_žU0jþË,ewO›ç+̯’›Íû¿P]Y9Pý×AZ>6T&*“oŒÌí,OÛ>eyìCÚÕŠo¬TÄÕqĬ‘í 繦:N9‰g]™4ž;…e>‡qNÊg <-xZžVð´@Ïž6»ÍÆ<^i*…î•M´{ÚF‹kXÔÓV -4Z‹³jñ´•^XÙÓƸƒ|¢¢- ð2ž¶qÆöòT7ö=È œÙÓÎúÎtŸÂ2lå'@¼‹§OËÓ -žèÙÓÎ2?åZiGO[ÉÓ–™ÞE=mcÝþ\Ù±ž6w‚ÍYßÒÓ†‹‹$j.AçÜþ´‘Å­¬¶ôÒݧ°lüVð´àiÅè"IëòS5*gL|·•¸;,zÏ"žØpYζ+óˆ…*×wì{°Œ§m“p+¯2ã\O›+NsÖ7w^m)'ž[O[™Ü<¯*'Àë-Îàió´e³Æˆå.jõzÚz‹³îóˆÅw ÚGä3¶híA}4}ÀÓŠ‘FÈWÇfA‹zÚrzèиک<‰'6A–gÍÛ˜^,¯¸Žýi—¬=È-XgõΪ÷ -h4ou#ÚXZîÿB}½<]ù—Â\O;‹ö¹ËŸ³&[¬ôûª÷Fh©%n<üÈ!´'ŸëŸrýÌËÓ‚§SªX~=•1åô”<-Èò¢SÊé¢bÞÆzãÖdk“I›;Ø’}*r‘3ŠõÉ -cºÔÓÖç«ïwOeÆõc/÷¼>üêÌž¶>½Ú¬)2Ë£Ë3¸UJdóJºXÊœ‘Ιü´Îò@:NaY~dié´ÄDod<­àisΡTÅp¹+œ¾œxb£dy£2½hØ*r*È2†ìiËÒš²š«ãoêròñøéZÿYZ®$mbQsµä>´O€^_ìl?Šx=½Xf¡Deûš—™Þ½Þ?'Ò³ö¶}[uO[¬|s'"ž Ë·+y²…\MÊÎ ²Œ!{ÚJ PYüÓøP¦uÛXÜU)§l, ê>Œhù}hŸý½Å<Ý-;Ùxe~2o·Þš»K±ë¬M/9½{»§­ìíÜmU<í¬”lnL`épb„l{£˜–~#g؇¹ çn*y Qh”½\e‚˜¼‰Òÿg˜W²ÐxçYçg%Ó»×ó«{;w[•õ¬pªGâ ²<œHr”KvC(’¬êÉ‹àiõyÚ–Éþ¢À~–=›eiʲ«XCÅÞ,¤ËïÃÜ Ðçöcllt5ÙÚd\ëþ¹ñœWÝÙ>—öó³ªiƒfyÚE·ÅÓ<­dÃô´uCR¯™Lf2^ŒáWÙ€uñ“«jq³Ì>tq}Ñ/%7Ò Ýƒ§mOK<ÁÓÊÆ°s‚,cDyÚ–¾OÑ%/‘v±.Q‘µÂB¬3ìCGO[ZèxK®FXŸ§m??<-ñO»ò ó#°…¶ÅÓN Òº’Û1YÆ0=mûÖ³êWî4N>¾P½è2óHv߇E=m¹@YÑ¥žvÑci??«šÞ½‹§í²-}€sô´«š0 -ºÚ§¯ªo‹§ÀпUeÈ2ëi“É}´D߃˜é/}ÿóÏùÜ!_ñ¤>-_Ú°(xïŒ ¾cŽ}W²s]_´‡-+isë€EûœMdZÎÏJ¦wçÕqŒ{»h߃YýiãEýiA–‡9yJË$_-ÛâiÇ+|‚F–1dOÛØŸ¶±[iÅÈÍZ¦ÌÑÍíì:7Ÿ°ä>Ìu}³ú1–:ö§]U7ȼæ•Lïž-z^sãÞ.ÚŸ¶1%ÉÛöÌ9ñYæiO ¬PX’jEÖYóˆ¥ÿJ¾.›ÞÊø¬³ÍÀÑ…ê–܇.®/íR¥c}"°r"ïYóˆù‘PËùY~z÷ò#nñ´s·U¿ÍE´òæû³ªÂ≒å)kœ<%Ô#.Ì,å#’l_Óbñå¹ßÿ•Uͺè'j)Å$?ã«æx0”5¤Ëž”$ŽdBl(NEú¯ŠæÇò8¢Æ0cö ([f¨l´ý•³ö¦Nû™¢£¤¯éójóù/? ü% ÚÑeL,! ÄrG1#[RÝU c!žØYnŸÐ°Ñg6>å)gQ V®¶Þ+f!O[y®×ØæºB»}ªÌi˜Ÿ‘Õ 惊š´YnÊ -¨–=iŸ¡²»§Í{ž_oüPJo¿¦Cn\mþ€xZð´BtÉ,åñ&!ò åá‰'Èri™Z&4¬?(IÿU6îNo,‹çË™ -“ÑJ Ǫ–©=HÎ*6—‡6ä‘ !1: 6”÷§åÁMeNìZŽ_ÈÊ•ì_%Q™Ö_¦‘þ+½X–¨Uš·ÏPÙÝÓV†*äÁ¶YóÀ„Y“N®êç~@jÀÓ -Ñ}8m}F3⠲ܽAû„†]êi˶0¥O^U=mcaC‹eŠ^:-Ûª¯¶2 -8(›Ì”9ÌÒõµœœØ½ÊÈÙ…f¨l<Þö9Ë®2-“N®äÏö‘eð´«}l=‹U58utš{£åö ýR¤j“C+ŸMgÓÅ›yŒXe=íŠ×}*‡ú¦cCÑ'gžçêjtOk+ëÊÄlË • ÕÓ¶”m4>î_Ó!Ïý€xZð´\Ÿ£ãiÞd¹eBÃÆAš%¸“ô´±¡Ž¯±²·nzgÍP9O»Ð!ó´ài§4Íb¡T;”µöùYÉ—xb3e¹>¡aÝù„¡Ý»v+9áðcìßÓ.Újìl¯}磊#N]Z¾Ë¤“•*ë]ò´ý2O ⹞vù™yZžèM–Ë +×xø®J/è(Ý<Oå-õÀ+1xy²Ë–æ*QŒZٓؽé®”"Gò¶.þí±qÒÉ™§ñÜ4O»’™yZžX‡,Ïа2!`Ìo’|WÙg;w7mQÅ0ÃÑso–Mê2ù`eåy*íÜè5j}Ó.ÕÛ}ŸÙàåªã²ùj:¢ôÏ´@¤,BêscØòI}—*ãLææ5´[ÄúÔÑs8íq^þ»|@qyžP² žvÔžv%v”§åiuÈòÜ ëÖKX˶÷Y͆­Þ¡’êlŸ¨¥¾òÆ*Ö´­ú ¬e<í¬f­¹Ac§ß83q2»ÌPYo`›ölüË ×qÈ]> \’±|ƒ² ž–§åi‰'Èrû±– ë–3OåI»¢si{)fÚP C›åi»L>8«°!ÏcUŸ×l%ž¶>©V:Q•¸•é´¢ ,?è2CeZ²<·Ýå·ÌP¶¾Cîòå#âiÁÓ®jÚÁúÕ¿šËßÈ]fÔªþ£ºà´w!(ÿf¡è¢ÀYÇÊ›B]ÖæÎc8w’ÜÊô»sÏù\O;wÎÊò.ÚyZ`sR Bel x.9í`ÅqåÙgJ×7wzÁúC®Êƒ¡.ž¶ñNû“²8´ú»Êñ]æ1ìøä1;ù¹ç¼ÝÓγ²þ0.ñxZ!È2&)žKN;X:®lÿÊÿ;½`.—Štbc—²\xŸ'¬T£ÍZI˜Øʦóáw™Ç°±p¢<•¡»Ïy£§í2ge¼=ªHëÉ—x<­d"ž M;X:®ÆÙÀçN/˜‡µ¶4Z™ëió(ÝÊ~†Wœ•SmÜJxãe¦nŒóP©èR‘WØâiçÎYÙx*²Í&žO+YÆTÅs™i󑟶WœÞÜ©XMÚ¢cÄf-ß> -,þ·bÂ˞ݧn¬éöšÛösÞâiçÎï3ëTð´O+YÆ„ÅsÉiK× TÊßÓVLøæ1\Ô=Î=ç<-ÀÓ -A–A<*¦]rÚÁ|ED˾ÈÖ–-kæãÐò´g˜Ç°±]ä¬bƒ.ç|®§m¡ÆÓ<­d›&ž«šv0WoæÙpr1çÜé+ó?ž­žvÖ„ƒg¨§­´=ì2áBõ´]Îy‹§;geìs¥X=-ÀÓ -A–1añ\É´ƒ•££˜M×Üés߃´éî}ê3.Ó÷ ·‡ÍUùx»ÌcØxVËCŽi.£*cî9ŸÛ÷`ñöÜžW߀§‚,cÚâ¹’i+G‘×™˜;½`½¾4\Y‹§­Ï ØsÚö©[9ÏÔ~ÎÏÖŸ¶<Òú§–«p‰'ÀÓ -A–1Iñ\~ÚÁúQÔŸé·ÏDöÞbzǘG,­?½½å û{›fŒ‚Þî󈥽J[I.4X}ùóˆU¦N›{ΚG¬ñHã–óˆ¥.ZL†/Ëéëêš<-°¨x~üÛÏ»¬Ää#ývãi1YþØ7žsÍŠÉLJÙ!ËX­xþÝ?ﻲÄäãoÿixb,²üéïí¹fÅäããß~ž,cµâùГ/º²Ääãs?¸L³7†‰çv¥÷XLë×+à<ît}>Ž¼¾µe* ož}þfÏMœs@Ïô|§óD8‡Ë¼ßÊùmžÐ;úîRËÓ}Óó1?]çs¿ëµÐNèÿï³Äˆ¡lÂýŽ§¦| - -8/úžyÁŒ™@¤+ÎŒ€M ï †o8ç@?Zû½À5=œÛ-ïòUÃÄ€É^àýÚ¤'Î9àÜîz}–x4 ôÈN¯W·_¬€s½ë ð´ˆFήv^ÀÙÚº¿»o€`c¸æ„kb÷àH1-`ƒïƒ×û 'XýÎ (I Ø\OkP °>’ÏìqÈ'O Ú}𺉇€)\Ë®e€û <ÀïÓîµñ®eÀ°è³—ç•À4<íÎá '0(úìÿcz\`¿OûìËw¨‡ `x·Â}}€qséÒë}zÚ­+WœsÀÐèó‘å³ÏßtÂÕ{ÚÃkælº§5Ÿ&0ö«øð†æ´žÖpi`Ôô:y -O ¦§í³U»§–À:<í¡Ážž¶Ïv^î†À:®âë<-`ãï†Gî†À¸¯â^'sy7ìµE­Ú`¿LUÅ6þnØãˆi£K€uÐg’Ö$b€aÒggKõ´ÀZ~™öXo1À0Ù3=.0zOk1zœ—§Æ| ûY -2}&yœm`µl]¹âQ ïé·ÐÓã+¥Ï’x­K<­&À:Ø=8Òº€÷ô[{î¿N8°ÊëW;>z÷´š[ãõ´êi<­Iˆ€upQ;>Þñ´ýÝw=»VIº¦xZzö´î‰À˜=­ß¤÷D÷D`ÜׯÓ÷DžXËõ{ v€S¶{Lò¨=VKŸµC÷õâ øž¨ÀÓêÅàiyZàœè³ö€§ ™ ú[ãýMÚcé‹{êiÃåÒá5žàiçFÒ -'ÀÓò´O O  æiyZzö´»úÓ+e—§€§xZžÀÓò´O O €§€§xZžÀÓò´ÀhÙ9ÐË ž¹§ÕŸžàiyZOËÓ<-<-žžàiyZOÛ£§Ý9¸î„#õ´»GN8€§=õ´û<-0VO»sxà ð´<-°O{ÌÓØÝ;æižv~ª‡ øžxx£GOëžð´¬ážØkžÖ=«§ÝÙ7F 0\vyZ`¼žöºë€Ó{âAÏ.õòü&`žV=0Z.îñ´$vxZ`´¿I{ãé9 `À÷Ä>ç!âiÕþ&Õ‹€Þ=­žíÀj1·5ïxÚž+Ï>³¿ç,êif·Ç1byZ`å—pžVžà†x—¯9áÀª–êÅ@¯õ´[[÷p`¼—°³ ,½%y 0Öãiû+zöù›N8`€\ºôºF@ÀÈ–öçi/ì&äÝðò €€QÓgë’íý#'0Ä»a¯“Éðk¸ŠM›ØxÒJí0Ç<íîO æݧÆMŸcÄTêi÷ex€±{Ú#¿L›îiTâãæâÞ±éqNŸ#¦/ê¬íƒk¦Çlº§íµö@ `õìõ™§UO $}Ž»txÍ Öòã´Ç Ù ×€ÁÚËWûLïl]¹âœk¹–û|àrù†Êð€iÐg;/倡ÑçMÐ$bÀ4®ežÀÓXϵ|ì™ `sïƒû<-0.ö9í‚<-``ìx^ Lã÷éžéq|4®˜—¯õÚÃD;/À`غr¥×q%úÿký‰êrl$½6òÒœX3ýÎ è± `0wÀ>çÓ4@ X÷­<°‘ôÛü‡§Ö|EïkçØDúœxH#/`J¿Rµ> ÉÓöù¤’§Öìiµ¨ð´kŽmw@`Ýžöò>¥õ —.½Þçp’‹‡:ÿë·µ=–¸¨C Ýúô´ÉB;çÀÚ=mŸ³]+( €>Ûþ¸÷=yÚ>Ûyi}½¯Ï|Ž¦@?¿U53¸÷­ñÞ'Ÿôr]÷:‘Êõ­­ûÎ9àIw¢]Óh“ãBŸžö´ŸÉ5ç°97¾ã£~~®^¹Òk?“ý#çpŽ\ì±7»¦@Ÿ(©¸ë)¦Fu(+¸ë™Cû/Vmú<­§“À¸Ù=ìµZþâž p>l\ë·1»Q$@ôg^p·~ŸKºßÓö´×·®\qÎ=³µuß1`ÚôÜ€z×01@ïìôz³ÓÈ 8OÛïDJjçái{½Ù]À΃¯t?]çq§ë5{£Ð8Ÿ+}¿WO»µuß9ôFÏÅ´æÍ6ÁÓ>]jýÑs1-O œßÅ~]‡ÀtosýNši‚!àœ¸téu£ASeÇ b€ëÝì*€1Ó{gZy`ƒ~Ãjr臾;Óò´À9_ò×ÕϦxƒ;î×Ó*¦Γ‹‡7”Ô¦GÏ"w/ßpÎ’{÷îÝ¿ÿ^Á} _ê_?&È2YYº¿±®\ YN]ª ËYZd3Ksóö·~~õ¡'_üÛÚûè×/¾ÿ‹¿|ï?ü»}FúÖ¥ï^ú¦ïá7·~ÿëëo–**?²L%Y*ϳ²l¾ü_ü⯤o¬+W 0Ò7óþí?ӽ̸„A–… Ë@VΓ7ï|é'¿õÃ_ ?Þ÷…g’„¦olúÞÞ½{WfÓ“åøb“e12Y¾²,a‹ó4´ÿý?nüõÃÛ®J1¢øÀ—/<±}”{¹œA–… ËØXåL_¹;wï}ñÇW\‰b¤ñßþÇKwî¾3ÜE ²,YÆf*çÉ›w>ý½= u|⻿:zã-ie!È26óÙVúE9ÅdôSZdY²Œ TÎô5ólKL)zòECÆ0^YŽ¯.YS”eCÆ°ÞÇ[ÿý?n¸ÜÄÄâñg^•Y‚,cˆâ–“7ïN+&9ä6*¸è'Ȳƒ‘å·É2Ö— øÒO~ëB“Œÿíÿþél@–… ËØ„lÀËÿõG¼Å„û~Ç\r ËBeL;` ‚˜|kDâ ²,YÆäÅÓ¤ábÚñÁ¯l{β,YÆ´•ó77o»¸Ääcûå7ôúY‚,c’Äwé[?¿êÊ“‡ú²ç\ ËBeL8!ðГ/º²Ääã³ß?$ž ËBeLX<ÿîŸ÷]Ybòñño?O<1YþÛ2® ËÀÂâù7ßúW–Øœñ.| _– d8ƒx~è‘W–Ø„ ž‹,ëL+6G–ÃJˆï’kJO€, A–A<… žY‚,ƒx -A<²,È2@<… ž ËBeO!ˆ'@–… Ë žBO€, A–A<… ž ËdYe€x -AýÒI:œX ý%ýsÉã"žàiIÄ~|ðZyá§VTqzžöó?üuþûÞµ[éè}êž²§ ’ÿái#™%…z­ž¶ñãKRœÝlIr¶ËxÚ¤ç«M/–âO,“Ê&žàiO¿t¿ˆ³Pä ¿ÔÒ)yÚ¹w -ž §H>§îvxÚá{ÚY™äx8XO¶$çYÉèv?ºxìØø%‰»ÛJ¾?Ä<í0 eë™ÒëÉèæ³<-O ÁÓÆõž$_Ë?ójؘœ”KÿîeV}fYsö©"ƒå¢"«¥d«¾‰òíë¯GÎO¦åÓÊëJëÌÔÓß+æ°$v8ö3?Œk,-k?óñÏœë¨ä@Öäi—qìé4¶¬3jwWr/#žàiÇâiçŠIYÕŠ]×Éö›B^çÓ/Äz’Tæ€îšVy1þ™Ö“w/múGÏ]/“<•*¬ÊxZ`yÚp}eÙd,“ìe{gcÍUYpÕ¸†ú£« -IÊJãÝ^ÐU‰úcóFw©.\O›]÷¬éèi뵩íwÆ/j*…²q&ï gó´½eò‰'xÚ¡E\þIdÚª"&Uý•"¥Ž7…ú¥ÅÖv÷´õÝ‹, -OK–1RO[¯§ÍÖ1QèO’²x1ý’Wò»²¶„$¿ëI‹ÅOàP‰´†ô÷øg^gü<ÏÉØŠŸLkN2’³Ä±þô–üöôJËжxÔ^Z»´óuÍL/æ-F6¶Ò¢i—Ò>gyOÿ¬$´;zÚ$Ôñ–´ªíö‘z³Fr¥=¬x×ò÷EúKú]Nf£¿5FìÌe·ÄdyzƒBáÓßKœ¥¹€?–ÌêšU®ËM!›Ïx%n+ñÊJÛž7&i++ŒÝ˜›S]tàC¬¶e™FO[Þºú¶|uËOÖʬrúÛïð´O;w”h2ešdaV߃Y‚oï~SˆuV– M›%GÝ=m¥¶­üXyZ²Œ‘zÚJÙj£Ͳ4y÷"‘;÷·s{Ϩp¡éwzc r¹,¶ãó²Š6]Ú\ò~•=l?öȧÿ*cË£ùFO»èàµÆ/C.Ê­üâ¨ìm:Æüï f•§6ÜÓ–R¿—+Õ_¥JÔß׋»ºÜKy£Ã,½íîi+Ëð´dc¯=è8Þs®§kÉ:öA-SÑÏ¿Ì+F¥DÒ•þÒ’¶íâigõ]l÷´³ªpÏÅÓ–‰‹¹_€J‹Åîfµý&BO»Py?OK–ÁÓ.éi£yiËXûE}¹ÐwV5BÎOβµ]ð!?ÇO/Faîªu{ÚRùÓ ™•³­ïçJúÄ#E½¼@–'Yr.íÆÁÕª{ÚvMè">yÚö•‡ªó´<-xÚYæ*ÒtËÔÓ6®¡cý@{ê,6¬ò¿•zÚØçJ*¸ÝÓVRÓ˜ëö´q eñsãÎÄå–5«êO[úA¦äisÃØŽóˆUz]&‹¤_~{}ŒX²—¥k#–÷9ÏkUai ¥ù¬L|–6—¼’Îj\™ÿ+ö¡½ü`}ž6ÚEÖs¤é•²ñN,Vwž yÚ<1Pùu™Íx‚,=[[ÊoRËhPÓ}±ú,]n -yIZ;Î#w5nC‹ÖÓ–÷ž–,ƒx -A…õEhxž°8íIŠr& žài§áfç*í’ž6æßÉS÷ò´O»iž¶ËaëKÒV6©Ú¬É<-ÀÓN#zPÚžo<-ˆ'OËÓ–¥_• ÖÃåÆl<-ÀÓò´<-YO›øðWwãYLžV»Rztõä­øßd¢~|ðZå‘w9xÌô]&^®¤qºð¹Ïzò&ÒU\Ÿø;–IûS{×'︕¼†˜‘<ÛÈÈ‹–4Z}ó|†ódèõ3Ü>UzŠØ¥ÊY.zŒ<-pYÁIWw)•qIfÑHÖŸ†—Wwèg]cå³.ÿv}h<ŠòÅlÓ†b?³þ´ïÛš¹\mHzZ&?rjQÚ/WÞƒæÞb*ëO[¬¸èüÏ´“åm«å´·FyoÓ¶ê‡Üý«Òå>H–ÁÓæË6_’ùz¬+L,_©}ª,P)õÌ’XÒ½*­ª¾‡¡¨ùZ®/‹-4¤+ßYJž~é¤Ei­Ô¢¹g8ô³¾çyY)ÙØt™¼åiµzÚŠÖ¥ë:ž¡””£‹”)3Rêç\}èèiË=ï¸ok:äÆÕf);ƒ§ñÝo1=m}¥×ÏpËg{[¿C•ê=÷¼u¹’eð´q©ÆE‘®Á¸jÒ¯ÅòbÌ&-YÄô_å•˧âúTgÙ %_ïù]é÷iöŠ]"V˜®ßÊN–×rÜÒëabÓ2ñƒ·{Ù>yIã·ð¬'biJn6-SIŸæÁ¬3G— iôJÙ^fÖ“¸xcý·H–ÁÓ6>ÔGšå"œ^™L¨\泈5T*¸V5­þ;}y×O"]wÝõ­´{^lîŽ'Jé$Ç#0ž¬§-¯ÐÆ 02i-µLõGꑪM²S>YÎ×û\}è^O;·Îª²ok:äÆTÀ2ž6?§K¶6Y¾.»xÚÊ´xÚ¹ŸÑÜCîrÞæÞÉ2xÚF騗ß'ÉÍOO’zdƒÚÅÓ.ì½yÚððIãæ’¼hú{¥°í žveé¦?ºÓ_Êã<-0"O»QiP/¤lч!xÚ…yž6¥{S¤P" Ó›§ûñ´àiÏ1OÛr™Ä8Ð\ýÞÅVÅ5¾Ìðü>=mE£Êj„Yžvµg8*–ËgL<-0^OÛî7J ¹‚vGWׇXÃÙ«V»Eœ»ok:ä.¯®´íGt/+icÐVožvîg4÷»œ·.÷A² ž¶¥{ê¬Z¯²óÞ¬eÊüacÆî Æƾ|•­Ë÷§mlXqÅùH³!o<´ô–¬®íg¸q·ëÍë)ÙÐÀ…:•ñ´@Ÿžv–ª”ºT/¤,ŒwчzsÔü–ö´gÇ}[Ó!·¼F¥mù8E¸·Úƒ.ŸQ—Cž{ÞºÜÉ26ÜÓ¦k-úøÍšG,ýW3U#Ö}—öɶ:Î#–GOÄH®²yl^f™yÄÒÚòêcÄ"‹’gÏé8ÏZ—™Úò¼¼@åüTædfáñOÛq†©rf¨d]ÊÓ8v|”ßqö«Õrƒ×¨´-GZ>Ï:—1bíŸQ—Cî2¡d—û YÆ&{ZÑ»[í¼ÞQFÏæxZ€, A–A<ÅXQ^H–YÎ žûG·\YbòñÌ•ÿ—x‚, A–1íTíGÝuq‰M‰`€-ȲdÏÿýÿùO×—˜p<ô䋲 ËBeL^<sóöû¾ðŒKLL5~õêˆ'ȲdrBL à Ȳd&†$ÜüÃÛøòš˜X¼ÿ‹¿¼zòGÙe!†$Ëo‘e¬5'ð>{͵&&ßÜú=åY‚,csÄ3ôó¿ý—\nb2ñ¿þ_¿å$ž£,ß½{—, ² œíQ×»÷>ñÝ_¹èÄâo¾õøãŸâ‹íY‚,cÓôóè·è§˜€r¦o²Ç[ ËBelìÓ®H ˜m\ŒúÙV¤ ªY‚,cÃӉǟyõ¯þñYW¢×pÚ}@9A–… Ë@2vôÆ[ÿí¼¤ï·KÃÃܶ‹lbz²CÆȲ›,¿E–1[›Ø?º•$ôƒ_ÙvyŠÆ_?¼d3¦¤1œdY² ´Khbûå7þéËŸýþá'{á#î¾ÿ‹¿t办ã}_x&}÷Ò70}Ó·ñ™+ÿoþ~’Me²,È20‹ü,Uå÷Ó ² e`®Š–_TrŠó•Jš eeëfçàúîÀ‡`D MBwö©(€Mdkë>[ gãâþÑÐ íÖ•+>›ÉÞÞñÎþ1[ ±³—”sXâyaïØç`£S ÉÖ°µ0ZC»ýâá Ÿ lŸ>Ack`>»‡ƒËÐ^Ü?ò¹À;i‡†±µ†hh‡§“Æ…@ÍÖ³µ0"‘Ü9¸¾µ¥'üIw¨ØûF=8yÜÙ`†öxϸ0hb÷òÕv÷Ú•ˆp~ìí ñÖi-C ³Ù>¸6D[+àœ í%1í’F0—ݽãÝýÚÚë¾hFQ j:Ñ œKôÂ0Åðàx[£èÆÛ‰G¶v÷òôSÙKðT¦ËÝs›Ôf˜#g· ž€…lí »{Ó˜n¶¶beÞxû‰í£‡ž|ñ3O|üÛÏäÑÝ÷þÿ Ñ[¤¯\úâýÝ?ï§/áãϼzõä­Š¹°n\f í®a³p[;DIßI19[[fÀNÞ¼ó_¼úÉÇ^à©ÄÐâßýÕ7·~rûδíÎáaŽ–Õ–°µÃð{:ŸïÄ múóö»ÉÍþõÃÛ¼“r|àË’³M_×üÕ”è=P˜a&iÝ’àÌœ6­æ¸÷ œád îÞ=õ[/ž|ôëù%1–øàW¶ÿçáMÉÖZîöµ4€åu~g¨:¿³}ëÊ•QÚx†û­Ÿ_}ßža“Äèâ‘Ÿý.×!ŒZèv/_ðï÷ëšÀJlËñ(0{öù›ã5´wîÞ{èÉY#1ÞøÜ.ÿáµ­=mq0à_îZXIT‡Z[û ƦùÉDÉC+&Ÿyâ`¼E9«ÂŸã²¹`õ©Œ!×ÖîŒgE¾ûëçWÙ!1¥"„ÑÙÚÃÁúk}ç`Ê­ àü³µNhìŒdEÜ÷·^bªñ±o<7@O{a bÅÐ[Ûz§8ÞÝDym½ñ6Û#¦¿¹y{P#Å^oÀÐ[»Pœû,º‘¤}bûˆçÓŽ¯=õÊ@RµÃ¯7`h€­=ClœgBxZ‡‰M˜-wžöÂt‰¡¶öl·ó«COû™'x1íøÄwuîžvøõ -°µK÷C8¾téõóò´évÏóˆiLJÙ9GO;Šz†ØÚUM7vñðƹxÚ<ºËóˆÉÇyÛ=8Ç/냡Ïxؽ|cw÷”ã}ž™¸Ës;‚§][W®ì¼s]!C{ù†› ŸgŸ¿¹3†g½5°åiO»ÆôìH4'í§ -Œ*[{u,Owô°åi…£§ÝÚºÿÀÍEmöZ{c2–Ž­9aËÓ -žvµ\ØÍó †FÍ») [žVð´››ž_ÍiŸÝ`Ôìì_S.e]Ã7xZÁÓn`z6jhÝ`ìŽd<ò»•µ$UxZÁÓn\zöô¹À¤²µ{#»­‹äiOûž˜âvÿxì×ø®a€¹¶öò±ÛÚwêlÿÒÙò´bÃ=íé|+S¼´˜mk¯NÂÖž>Ì3 -ñ´bc=í…w¦Y™‚§U@ XØÙ>°…£¿ žÎ>vœîé<­Ø@Oû I×õÝýÑ[YhËpñðÆÎþV¦{:OÛ=þþ_ÿ3«—nÜ>ƒêo?ÿÃ__=y+múͷ樂ûøòg‘.Þõœ²7þ%#ò´÷›xíÖ§_:ùðWw§äiÓá|ê±–ÜÛtfòYêçüŒå+4 7«Þ°BN»²ïó´çéiƒ«'oõ`Ûúñ´?ójZþǯ-³«É‡áçf§çiÕÖÁƒ@ËÓVV;«•DùÞú2qÆÊ:xKÎr󴫘ÀZz a»)µy@ViÞºxÚd+å ½yÚY¥¼-ž¶^¦;LO;ü6 cñ´TÏ$l7¬ž6¾ærÓºãªG8ádk“ÃÌKöàiÓNæ1Viùx _ÙV}Óq€iŸ}ê•8̹’§§§•žHØnn߃¨ÿÌã¿’] Óزªp‰eÅB¥éVcÏÛözÚXCeø¥ž6êN+û;<ËÓ† ®TöÎmÉÛÑÓF²ºK=-O»þêÙã݃#R °ÝXOOóóè§üÕÝôbLt{6O›|rŠ²Ø í@=K\®'6Zn.¹å2qt‰ežvEÁ”ΰ;‡7xÚs÷´ñzÅ%>þÌ«éÅdAÏæiÓÿ¦eö®ÝjYf®§•\=y«~‰ežÖ@0ΑÝý£žvÍž6YÁ¨=(ó±á*£fµ|â…áÏæi#÷›ö!-±imO¿tR¦mëÅ Q{Ýu¬$½«žV~°BO›®>SÜ°N#ó´ë#V)0Èž6j Ê€hSÐâië”.:ö¡¾d%é&¶$½%ûÞY çŽÅ{ZÚÇÓ®´öàÃ_ÝMf2Æmå§öÙÓ¦Hö2—äƒ3×Ä>TƈEn.è C›»æ¦%ó»âžv}ž6ý~$5ôælyÚŽË®2ÿWéiËòƒä6óð®eûýCž€i{ÚïüâUžGL;¾öÔ+<-S%FÍ\=y‹çÓŽý£[ƈ0ùTí'¾û+¶GL5>úõ‹‘¤åi˜¶§ýæÖï91Õxø§/+<`ÚÄÙ“7ï|à˘1½xÿyôÆÛ<-RµBŒ7¾ô“ß*<`s<íí;w?ø•mHL)>ðå 'oÞ1: €²µÿ¶ÿ$¦?Ø=VuÀæÎ>ò³ß1BbñÅ_‰/6O ÀÚÚÏ~ÿcOoïÎÝ{ -›ikøãŸ>óÄS$FmhÓ×XÕK¤j!ˆQ—ܹ{¡€­ gû//ÜÔ AŒ«ËAÆЀ\[û‡?þé‘ŸýÎt bø+|é'¿¶]wïÞeh@ÅÖ&ŽÞxû៾ü±o<Ç;‰¡ÅG¿~1}9c¦0Z0×Ù&~sóöמzås?¸ü‰ïþêCì0T¢ÿøàW¶?þíç?ûýÃôUÜ?º•¿œf -]œminpï]Z°¨¹eqqî&6]˜ùÿVÔ+ø -endstream -endobj -600 0 obj -<< -/Type /XObject -/Subtype /Image -/Width 924 -/Height 679 -/BitsPerComponent 8 -/ColorSpace /DeviceGray -/Length 7343 -/Filter /FlateDecode ->> -stream -xÚíÝ-P\I߆ñ#ˆ"@ b@D "Dˆ  -ˆ@D ˆ@ D@ ¼UĤ -1Uœw7»Ï~daèó10}úw©ç‰¶þWߧOœîF½dluçèâ>«íË£Õ v-Ó[WY¹Ùžá12~œÕž“IžC;,öÞs¨˜¸É“Èfv;Í6"báG– E¾ +YRl0ŽXzÍ´¢ù˜-qŽ8Æš?²Äès"ŠÚ›,9nGxGÿ³“%Èïè{Æ;)†Ó[-úžã,IΘGŸ3%Ê÷èo¶RÍæ.÷èo®RÍæ÷èkƲd1„¾f5ÝlÚ¹‡¾f;Ýlî³~æ0Ýlž²~æ,Ýl^³~æ:Ýlf죟ÉdMÙdS6!›² ȦlB6eMÙdS6!›² ȦlB6eMÙ„lÊ& ›² ȦlB6eMÙ„lÊ& ›² ȦlB6eMÙ„lÊ& ›=ãûâ€ÙìKî·Þk;¤³;¦@6û“ÃIͲٟœÌhè-³£²YŒóù¦æƒ2úp8!›Å¸Z2i‹²ûÛèiJ6‹q»òN BÏ:ÎÎ–l\RY×w¢‡çï霗͢}§q'zØqþœÛÍ‚ãÎE­=ì8ãb±)›çl5#ô°ãüÙ Èf±õΖ†„vœ?GO²Yl¯Ð„–„ª~ø×ÜÆê;Ù,Ä„ŠÙúu]àlÚ¿5¤1¡‡çïéü2,›…–;—-¨ —ço/¶xëŽóg:[²éÅoÈjø–Áób‹Wcä[÷W´yÙôb‹·àSûÅÍÜs²™+Âßv¢\§yÐÎ.e³—ºN§¹Òie‡²©ëÄ«2vÖȾȦ®¯Ùi®>6±%ÙÔuâõ˜8 naS²©ëÄ«ušëðö5$›ºN¼ÖôìYŽÖu×M]'^‡í—Í߆›%~ðÐöÚtgÊ7È›†l>ŸÍFcì´Ä/^Œh¤i2|ZAƒ<’Í®Ùl4–KŒèo}Ó™$eöýÍWÙ|!›á¯'íi 5=¦‹/__ÿý¿?ÉæKÙl4ænŠïú ©¦Æ‡â“_ÿþ?³²ùr6ƒ_ χw|5–«Å;ÍV£Ñ¼úëÿ¾—Í€l6SÅ·xXKIjíäkᆲûs^ÿ¯Ž³ÝÍ l6šŸ ¿©ìØ]›ÎÚIáíd7^QÝüß<Ò¹lf³Ñ/¼OÈBg2Ñ,¼v²û×7ùóþËlg³ÑüRô§O† š!æOΟ ÉfWZE'l/}—’Ã¥;Ítœ¿nȾ–Í®¼Û/º ÁI%õfÁ·s¿üÐç¯_2¥Í›0 nº· A4Ÿð¼ÿõ—þè8¤8L7›g -FNlBuÑÜ|bÿ÷Žóö×ÜN7›Á+XkáÄ/Œ]jwOüö{Çyòë?®¦›ÍÍpW‰G³Ø§¾ÿ}Ÿý«ãÜþO«K7›­rÉ¥>re“>rÉ¥>rÉ¥O6É¥>rÉ¥O6É•MúÈ%—>úÈ•Múd“\úè#—\úd“\úè#—\úè#W6é#—\úè#—\úd“\úè#—\úd“\Ù¤\ré£\Ù¤O6É¥>rÉ¥O6É¥>rÉ¥>re“>rÉ¥>rÉ¥O6É¥>rÉ¥O6É•MúÈ%—>úÈ•Múd“\úè#—\úd“\úè#—\úd“\Ù¤\ré£\Ù¤O6É¥>rÉ¥O6É¥>rÉ¥>re“>rÉ¥>rÉ¥O6É¥>rÉ¥O6É•MúÈ%—>úÈ•Múd“\úè#—\úd“\úè#—\úè#W6é#—\úè#—\úd“\úè#—\úd“\Ù¤\ré£\Ù¤O6É¥>rÉ¥O6É¥>rÉ¥>re“>rÉ¥>rÉ¥O6É¥>rÉ¥O6É•MúÈ%—>úÈ•Múd“\úè#—\úd“\úè#—\úd“\Ù¤\ré£ÜÄå^'l¯]÷lÞËfÌœ%lïªîÙ¼HXîMüúÖwR÷l%,÷,~}Û ëÛ«{6w–{¿¾Õ„õmÖ=›äFÍDÂúZuÏ&¹qs“¬½ûfݳI®§á&¹äVÏL²úêŸMrãæ$Q{çõ¥%7r&Õ7“@4Éœ½$í}k$¹Q3r› ½öhÙ$7n¦;ÉÙëÌ6ܸYÌ“’÷˜­4’ܸÙHìɺÕHrãf)¥7ŸÎJ#)È|X’ÎœA{¶‘Óÿ—ŒÜu”;rÊüúh#9ÈýéšÂç3$!7ræwïjíî~o¡ÙHr£¾nì\µë7Ƽ:ÙÛl¥LrSá]HÅÎÔ /²Ò”fÔ)üõÈ"ªa1¤)}V§`¶B -:¯Nx‘Ѧt¨NÁœ‡ô:áeBÖÕï”)”Á}&çê„öCžó#êȬá&ªb9¤1}P§@6 7QcôUrRÎauB!;"N•)ë©.• A„ÜÈó`cAïCºÍmuB+!ÍiB‚Úy° N"èbˆOêÄgÃM¼òiW™* Ü(*lOÊÄ•]V¨U»ÌªâÝɨ’ ­,-u -`:¤”sê„@†LUEÐœ÷:!”[B¿*S;¦‚P)!“A'ÊÀwSA¨” Ÿ‰UCóÁT*eÞDm5Œ› -BµmR§ùh*²3hY™^ä‹© ṮO8+áÈTÞàyÿM™^äÊTÞ`œt­L/rŽ×¬2!Aó‹ƒêôA牎ªòrĤ2½ÀLÈõ¤Ê„\„xüQ™^ äÈBÛ!!׃n*Ó |1M‹ÊÙÔª^é ÷E™‹%oc¯42°…ùù&ø^™^ dFmZ™‹a»Ý_©ˆÎØCùãÊÔ•©+¾• =*ù¸©;!»«¾+rr`£4ë5ÜW&ä$deC™º²§†è!‹({ÊÔ•3W¡ „,¢8Ϋ;׎ùEö•XiB–PF” y 9!N•ºt߀:¡/dï•© #öV¡'œÚoV’–ÛäÑM2–dÎtzBÈMkÊÔ…EW £'„ljq_Q7B®“÷}:ò³ì©_’SV” ¹ùàˆÚ’ì±£'´Ìd”äض ô„Õ9§’tã»mAè ƒ6í•äÚ¶ ô†€M{ªT®€.F¯ûªô<^<Ð#B6í9ˆªÜ€Ý–=áÐTF)¦Lt£G„,ϹWþy,Bá-³ÙR¦RÙ´± -EØ´­¥³²‰²Ù}Q™žeÑVw¼a6?+S©l®+´­¾¬ŸÏPЫ¶µ£LϲfL€±`.£çc‚Ê„Xè}6[ÊÙ|u6d=bB6K²wcT™P€Ùìy6G” ²)›Müä›lâ ³é;Šç9‘MȦlB6eS6!›² ȦlB6“aO6!›}‰õMȦlB6eS6!›² Ȧl¢nÙ®N¨¶IµÔéE‚>ø¨Næ£iÚŠ¹ƒÓ'êgËÝ›qPÉceB0!ßO*S›£P)퀵®L„Ü”˜ª ú°z^˜TJTÉBHƒQ§BV£6Ô |1HªŒ]>RG(ÇÚSe„Ly?øL a4Ûå*#h©xZÄTHsZR§ FCŠé „rÊM6¡Na„\ÂéÌ „rÝ‚“4B ¹è¯íST6ÜáÌ¦Ô U 7·Õ)‹L³UuBUÃMß5…t,šÍɨj¸iWP8Wvrà‡›> gÏ´7^q¸é¬ pVB -ê€T4Ü\V§`& 8ñŠÃMºþñŽ±¶{|2ˆ‹‡«“ÝõirÉ•™›¬ÎÜí$|m/¹Ó:ÍêÏy+Íd’1£‡Y'xx.¹13ÛÎRáGr¦Ìþ 7âU‘N–ëiE“ܘùš¥Å^JÑ$7êkö˜˜¿„zNr£ŽtR³—e ÉŒ5;¹ñNâµÓ³—ýHd»ïèr#æ0K‘DNU$7êUéì1IIlje¹ñrš¨¾‹N4"7ff²TI`:ˆÜ¨ÙIV_‹œäFÍM²ú8¦“ܘ™ÊÒe¦îÑ$7jÖÖWû pÈ5"‰”ýºgs7a¹58ç[Âúj¿ýà8a¹ßã×÷=a}µ?öô2a¹·fòbæ¡îÙl',7‹__F_}!—>úÈ%—>úÈ•MúÈ%—>úÈ%—>Ù$—>úÈ%—>Ù$W6é#—\úè#W6é“Mré£\ré“Mré£\ré£\Ù¤\ré£\ré“Mré£\ré“Mre“>rÉ¥>re“>Ù$—>úÈ%—>Ù$—>úÈ%—>úÈ•MúÈ%—>úÈ%—>Ù$—>úÈ%—>Ù$W6é#—\úè#W6é“Mré£\ré“Mré£\ré“Mre“>rÉ¥>re“>Ù$—>úÈ%—>Ù$—>úÈ%—>úÈ•MúÈ%—>úÈ%—>Ù$—>úÈ%—>Ù$W6é#—\úè#W6é“Mré£\ré“Mré£\ré£\Ù¤\ré£\ré“Mré£\ré“Mre“>rÉ¥>re“>Ù$—>úÈ%—>Ù$—>úÈ%—>úÈ•MúÈ%—>úÈ%—>Ù$—>úÈ%—>Ù$W6é#—\úè#W6é“Mré£\ré“Mré£\ré“Mre“>rÉ}5n¶×©{6d3fζw]÷l^%,÷6~}G ë;­{6O–û=~}» ë;¨{6S–{¿¾Ï ëûZ÷l®“3Ó ë›­{6É›»díµêžMrãfÇp³¾5sÉê[¨6ɵÂ#WÍúg“ܸieIêû@4“›‘1ÇIÚ;k$¹Q3ÞNÐ^g2lŽÿ 7fæ““÷˜-6ÜØ÷¤6äÜj$Cz›ƒê%w/±ëA3l’ëáÓƒ5¥h’; éLu‰±ðƒÜ˜™4’„ܸi.ì×ûͶ}°Ðl$ -¹±30óuÿäº~g@u®O¾Î4’†\¼Ä—œµ_Q²>c%§Á]%‹åõêH8£æcÞ}Z4 ^ -gÄ|èä³w;¬fñ0z/œÉDóaRÍbb¦#œ‘²˜WÝG5‹‹åL8“˜Ê6Õ,6v„3F¶òj;j*Zl4so#ÛR´7—¶›WÚå ªÅÇPî›t<‚ß–Áƒ¼ÊnGU-FòŸ…râ!ü¦Ñ<ͽÎm¤LçÞ>vQõJÙØêöáÙuÝ6±]Ÿn¯NT­k8÷vùÎŒF+yWʲìf¬ÊgÃV­/¨¼Ù®4c—¹ÿ 4ñxɽ’’ÝMWöJÀñ'Õ½SŽç¿á|U™üW ¶«ùFoh§“¥ÀÞûjDµò`f^=rr¯—eOüÙ‰›TŽ¼­äEc)ÿ“ì@㎜æAþæ¶Qú¯&t€N'è4· ¼N[ðŠ?œ§ù½ï–üæh%KŠ²Ï²¡#ósË]5`°À]WßK¢ÒŠæc¶Tn‚¶ÀlöµÏÂjÁpþÉùR£¨‰ä®é”sÎ8fèvL³®c·š[á¾`è&KŽÛ‘ÂrÖ -Ìg·§5êº0Q丂“ IÞ³^tÒt`7Í´™.γBcšñN’W‹Ëð™h -g‘pÞNøKi^[ì¶ØÉÑD±p>,æÿ;Y¢Ìåw²ü š(ÎìkÞAçVªÙÌ}Dìà~&š(ÎÓœ3W©fó.ïüÜ•h¢\8ïçs-×dÉ’/5…ÞgES8ÿÍvŽ|«éf3Ïνbï³¢)œÿÙ»9ü¶ÓÍæ~¯ßgES8ŸhË¡à0Ýlžöø}V4…óéNá]Ø›Íë޾ϊ¦p>×òÂN߸N7›Y˜€©‚3Ù·oÝ)²ñýw:k!¿žÉfW¾<ªåÊ—' ðþ²`Û;‘Í’Ùœ*ZûKßk&ÁÐiÁÒþ$›e²Ù\/z¾Ù©Sa°ðlêɈlÎæÄyÑ_>ÍdhþÆò¥®S6«ï4³}Çv¥Äfáx6&›²Y¼Ótmj¬~Š?¬6e3g6KtšÙšÆš:½è:e³âN³³¬©¦GÑ]]»NÙü/ﶊ?;4Ô¿-Þ/Z²˜Í%Ê|kŸ^¢Œ^”h‰ûïe3 ›ã§%~ñ|D#M•Áo%ÎÃçÙ|!›e^g-k&ÎF™Æx5'›]³Yæu¶Š+£5ÛešÏѨl>›ÍR¯³YÛ¥ÔÉ3YêÙÞÙ”Í'³Yîu6»Ô41\î{èÛ²ùßl6—K=ò -ž©º1°W®MžÏÈæ/Ù\(yèÞ€f‰Ÿ¬uÊ5¥“–lþ#›­ór?Ôù¬Iâ̵K¶Ëà Ùü³–'%§=§AâoÆJŸÇ~0*›¿1zPögÎG5Gü“¡Ò§WvvG’ÏæðN§ì¯ljâWVJ7«‡­á¤³ùnó¡ìoXÕÄSL^—nž)gsó¾ôOxŸÅÓ=Õá}ϲü o†÷YtcâBFÞï³xá½vWJ¼Ï¢?Yl Š÷Yô%cç²òÊœyŸE_¥å5ézª(ð/Z×óz¦+ÂgJH×ùJtÖušÐuöãʉ+o¡ëÔiB׉0.§42è:û°Óüb»t:Mè:¶¦ùY§‰²LÛþ^=G6¡š+÷ÂT)7vÏ¢"†÷ä©Â9 ­wš¼Øöá=·)À‹mrïŽxx±íGö†4$x±íÃ%Í–F/¶ýÇí’ͳèá‹ínGÈ -Ñ^wCç$Íhž{¥E¿3™f6g˜Gß³—b4¿ñŽþgä6½h¶GyGLwR‹fg–uDÁbö˜R2³Î iu›[Œ#–z­íè5Õ˜3™ ¡Æšˆl¶ö ‘Å3´ˆ¯ëLà „s[%ó»wµþòdoÁF=ÄÛynìŸÕð³±›³ƒÍ–`ö–ÿ_: -endstream -endobj -566 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [526.874 692.208 567.119 704.712] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -597 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 678.659 136.095 691.163] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -567 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 651.561 136.862 664.064] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -568 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [438.144 651.561 546.214 664.064] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -569 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [85.756 638.012 197.82 650.515] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -596 0 obj -<< -/D [594 0 R /XYZ -13.423 915.745 null] ->> -endobj -41 0 obj -<< -/D [594 0 R /XYZ 29.788 737.428 null] ->> -endobj -598 0 obj -<< -/D [594 0 R /XYZ 297.956 214.77 null] ->> -endobj -599 0 obj -<< -/D [594 0 R /XYZ 524.558 63.19 null] ->> -endobj -593 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R /Im5 592 0 R >> -/ProcSet [ /PDF /Text /ImageC /ImageI ] ->> -endobj -604 0 obj -<< -/Length 1942 -/Filter /FlateDecode ->> -stream -xÚÅXëÛ6ÿî¿‚µ@Å_zô[sÉm[ ‡61p’¢%ÚÖU–=v×@ÿø›!)YÒڻݤ‡6!MÎ çñãpF·ë¿0²kWÙ‘€Ü­àa0~•€¨DÑ„1KN#©H£Évõëâ[BŠ™³)NC•,¹n‡3Ïg1‚lø¤b*F²ÃBÊ•\Jº6⤈(!‰bFã(ôaÇ4‰Q9˜„¡eÿ›TäªÐ/+*ÒPödj„ž 0 ·?y[ƒª×•}ÙŒkfùƒ]ŠÑ0–³¬»‚€“„*'Ñ‹V÷/ÌŠƒY „µõ<½b«|ÉÖ3Ëä__m8( AY"ÿ›õêöŸJ&h"£ˆ¬·„'4Šc%6Þëœ|òÞÔm¶¿ñy{uÕÖM§³›ßÖ?¯Þ­'Æ0© £8ŸÆ(ÿÓoÉaóg€S9y0¤$)ÉÇ© Tp¦b W *AO€ÕŽ\ÛúpwɦBÊ#¶0âã»X~ª:½kÒ®¨+»p×¹6½O/ ™$ŒÑD)ŽšBB*cAüPP§£‚Š âý²?µE––ƒžÇ¾›ºÝÍ‹]•–íL_ëprÎYìÂ24@Ô$d}8û"–^ÑÚ1×-ˆÕ9þ^WÛÕ¶cßÚééǬìÛâ^—'»ÐÕ;}ün¯»ðPt{;kÒî€zëè÷Úžñæý»ÇÇG»¸MŒ”÷ÝlûÌ IÛŸD>NhãôÝ›ð-½Àæ.ãˆî­Þ¿ ã€^ä¢ œ!ŒLYÖ÷u£ë{0WI£n$¼ô°)tebŽNŽàÕ7ÚíV¹ìûC‘ÝÉÒé¶+# -…wHÝF£¿ôÅÈœÐXP¯@P´–pÛÔ»j½ƒGÔ­S£=µ ‰Û®¯ÊvÂÅa¡³3«ÁŽªM;ãxåmëfˆk¹õ÷T¯vvK¸ÐYçb•¥`”·9ÙqŒ_mœc­†u‹‹É¾³–r}_dšÞø"’Þzo¡ªœŸ»`1wÚèçÜù ¯qÈØàj°ÁØöÇ£8Ìïë²Kwú;û+Û§ÍÎÚt„Ùñ ×3/Úc™ž¦tyWg9R2>FqxNÒ¦ƒ7}QæV 0Üþºì#¯^ÿ§‘U<Ò<š^Á…¹þ8溄;Ý`ÐçƸœÚáØhÑP”–@»ŠÌÎËbÓ¤ÍÉrbæÀEÌv³úc`JwiQap áÞQØxe\^®‹Ê.duŽá‡W¯秽c*D±5Ùa¥]xs[—eý0Æ@kÇÏP”Ãþ0Ri=Ĥ¶ãÆ sg¸Ý´¬±.%Âìü^ÃÇ4û0F/<ªžºP¥«pù¨ -Hóã*”„¬¯`nŸÕÿ… HJžä! 0Þw)*w ‰1<≸‘D ì aQ®ÚÇ^΢/j,[ í%úñI Ÿº–³˜*ÎþFƒPb4—ˆP°@ù’üu“8~8~fÒ[ÝfMqïþÌ)Êeò¶\@ ÈâAÅóZà-M­„±ˆ»˜ÃÆs¨”³7zÓêìw›„ ð²C…3ÍX*0sÆô9ã &< T\ÆÑþ¥Üâ‹Ð·>”™ -m(óÒàé¨[º^ß)p¸ËC¨‚K:•Ë>¹FØWú{1Y†dÕéf›fC"ì« ¡Õ>ƒ­WrY !²Ë×CKÆxÉ^D8‹Ÿ–ÓLÜW†<^y.¢ƒCDg¼ÕY™NûS}U¬^«âÓX¡4ö›œÿ—sG)EÂÉ|0íä…õÚ¸oêHÏùÅU$Cd l°ß×yW4Km(}†Pù·º¹Ç«šæý‰w·Û~ó¨²í¬>p„Š´‚ æÊuïªJ4meüi%¾­³þ`CÐ6ºùþƇ7 *“õRžo#Ò#û¦=öøWÄ&7? œC›P´Ø˜#£‹ýóœð®ÀÃÂxáI81ÂglFðîŸ^ħGB¨°õ†ó‡ìy¹ã'ŸÌãKü „ÖbNõJ]ÀþÁz¹›E„%”‡öƒY]a#WÏYÜ+ð²ÃŸÀÊŽ è·áƒì†…Õ0NˆÜ4#+±ë/˜ý ’dãþ%Bÿ,¹½äŸ‹ß£iÁ`ÇGcÛø±z¥àÆi›â•9Jü7gòu^OÐ}q 'BCÅÓOdg49GbÐ4~ ƒ=£Á/uçC¬5£1°cÿ*2¥ò^ü3`.¨’˜ï[ ¿)Í>Õ ¡&Ÿêà§ôî›íbÚ*Ť÷CYÚµ¦Øí±}7s—… å™¶6vi“›n ¦ÕÉŠÆ–·nÓÒ0$ž~<–uÑ™äá–}lê¼ÏÆ¥ØÓø]£Ú9Ñ5ŦŸð¤­M6ðlŒÍ²Íƒ.ËyÇ^T‹ÎNß»2çg4…¦¾ó­mÿš=ïQáÓh{ÔMçj%ëúlË­àEǯîLB}èr< f,€ÿU*‘¢ -endstream -endobj -603 0 obj -<< -/Type /Page -/Contents 604 0 R -/Resources 602 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 535 0 R ->> -endobj -605 0 obj -<< -/D [603 0 R /XYZ -13.423 915.745 null] ->> -endobj -45 0 obj -<< -/D [603 0 R /XYZ 29.788 737.428 null] ->> -endobj -606 0 obj -<< -/D [603 0 R /XYZ 305.067 642.616 null] ->> -endobj -49 0 obj -<< -/D [603 0 R /XYZ 29.788 622.006 null] ->> -endobj -607 0 obj -<< -/D [603 0 R /XYZ 29.788 551.055 null] ->> -endobj -602 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -615 0 obj -<< -/Length 3103 -/Filter /FlateDecode ->> -stream -xÚÍZ[oܶ~÷¯ú$#R7ªoiã¤.ÐÓ6vч¦8ÐJô®Z­´ÑÅ[ýñgÈê–Ý8I]àNDñ:C~3ó µ/îÞþÄmwá;[ÇwÞ\À‹Ãáùj|'J#–rîÈP°$ŒœV9÷?ÐùÌÂ"=ÍrX$X¥ëQ/ìšÓZÜÑÃôÿI$Y˜r'߯`" -×3{Úé a<ˆDrq¡'ÕzÐ&$K¥ -q„BÏý«S;g'}Á?€Ùôܳ¢™tRÀT¼¸ÙΫD=/ìÓjœS˳zEœÅ2œ©…ÛåûÂIYÊ4yR«Ip Ø%ŸãtPò£uŠgt ŸÒu2[äçÏV„”AÀxëñßÜ]¼x  äKÃ$qîDJ'Iñ¼ï -ç7÷›¦Ëw—žH¤{«ê®i{•_þ~÷ýÅõÝLFá‰LaO¥žÿ·ß}§€Æï6U8GÓu¯»ƒ S9·sX x$¡oˆ ÁB`µuÎ5½}sJÅL$|¥Äíõ·¨ÃMÝ«m›õeScÅ›¡,”QèsñôÔ$ áƒ}ˆHK‰Y((ðdã(›¸ô!3o{uð6^O¬¹þ+Ûª¥”¨7l­æ®g‡í $€\ —8õÝ%çÜUûƒ‡V]ééRw7ìË¢ì/“н²ºÀ¶~§°æЪNÕ¹Âê柹jû¬¤­Ûfê°>«*¬+ëw¾ ÓÈqÂ÷CVéEgóIÛ -”-ÖmEKã6­Êú]YoÙ¥„ œ Þ‡µúœù<"0ŒcÏ tîö°0ƒ5pYõ§×ïÚfØJѳD5·S¦J¸»æˆ5}ƒÏ¡£Î£a3ÃÀ–®céãøÎ4uvŽ­[»ZOãi‚ @sßõœÒu¥§3.#Ôóåf[Ú:”Yº{•uƒÝϲ.š¦õ`ýّH÷ù7/†gk¤…`à,Áè`yp#aÈdœ~GÿÔªV½Ê®ìÃ*”Àï.”ˆtD‰%*ñºl»¤’E†`WXóØ XE§UµRuÊñd@'€Íý.£y  &oêZå=Ž§S†g†­û2oèÒ7UeŽ šô>ýðí/¸O¦×9>h‚j,XÑBwCM›i‰3ø V[^<n‰¢m :c‹—ÈmŒe“/‹Éª"ÛOºC%™xL¨ˆÀ›\uÝjÊi /·uVuØPÚEÚBÑ”8SìBEù l·SðŠi8ÊvZ±RßçL&¨½ª mý`O?Þã.æÍÐvÆ¡Éä$@ìëVàAÚ‡KðŠUsØ«ºÇ:U?”mSO÷d–‡Ž„U ù®)sEÞÔv Å˜B÷m„Ý›3êûñ¤!:”êoSlÝÏìŒ_¶ÅPÖ·É4ÄÐì D†‰ŸÀ3N} ¢ëº·Ú,¹ðO9ƒ<áB‚Ÿ’šÇ1KÀ'Ìå}s–®Àùͽi²¶@E¬Œg~ÐZÛ/FìäÕP(ÂoS{f¸‰°ß÷X €Â¡ÊkÖ.îÁ|›#„»uewJ(¥K †IÈ B†¾iËÌÌ·bC‰â»]¶§ÒÄÓÞû -_ Ÿ¾›É AR{„rYw};äÚŒ;¬i¨½DC+¨~8`‘ŽƒåÍ«k¬%Øú#ú|ÚêgÁpÉt¹-»'¶2â x²¤Zµ‚…kŽSâqÒž™x:B@«¹]f‘ä.¸ËaSÑKÑëªÉ -ÄÀth|D"»áp€0Ž/S …—‡2;?lŸÕб½Œ"栆ΛOç }ÀVX ,€d´Ó™ÀÙ¢ý>îá´Xœ¨®ÆQ…$Lº÷m³ÿg S ÚØßœh¾Hl²ÿnØ|hÞÒ-@—¼¯ ÃdŸæîC I“·éã‘XËH;³wº…ü†tÑkbKf·â´àðgÞZfÞž,Ô²N -š;ɶ¥Êí[<²³ÍJéX‰Õ~ÂAB|œ"ܾéz«M?_lTOÎü£¤0ýõ ¢6³ÇÀÎ’OëCZ÷)“6ó×l;A@ “8w_þtƒM†ž)æpH\üÕšÙ0 -ʹd€œå¨‡¬¬²ÑôÑ™r÷Í)´j¸n€¤:ÐÕúö™Büð*#2ìf¿ê2·ä Æ#Ü´kȺ2»à Æ^œÈ·4ë#(±g¤,LÉ»YŸ?¹7„’¡s˜ûSoHQoJ´Ë(ŠŠ°;Y·ò¡,†Œ2¹VmKHA[ ýz‘±-ÑhÈX‚°Òƒ,"Št dßmþðQXÎ9†Ý’؇0D®Â¦LÑ3bQúLBüZ¬“=E€dÌb/ÍÚs‰¦Ü1Ö¹#°Ñٽʇà„^–F˜PÀ“ -]óhk–¬|–2D§øý*}3àðýzUÈèžä”9¦«‚8âäÙ†•Q¥€Âd4'³m&C(Hfv…ä^Œ5£y)2½~ºë ±h”Ð\¦–Œ7 HȪ"ß}ü‰ü‰ëÍøx³J mÂRÖ`9÷Ž™ò3qŸR‚Š?†®_2²Ê”bhzÑ©Ãä'õŠM­Ó²z{…@v¢]O»Br|ñ+„ä'ø#ž²4 Dýv¯§°jÈ·Õ }ÈWìrfI  °òv¿îJëÄi×àè7=Ä}¹ÝÑ&uÍ`ºköêHi>×çPÂQÃÑÓFpÚb1íT5ä>Úepà|»dꄉ¶aŽbX`A«é¶î  ô½<l†_X>R§[=Zol"9ãŒ|ÿ~¼w«‡ýFµKâ°oŠR{{ŒRÝ2 Œd¥¤g;Ôõ,¬·§…ju¤[A°"ÀÌþÓnˆFOwœ·ªïÇ%®Tûh.öðý—ÃSq`Æ¡Mø1ädow—ÜO]P-1ª¦ €tp«Å•Ž˜h[º½š.éÍ17M¦³²í;°µòÒƒ£‡Ânê -D›¦BO®ë 0uò…Žæ Z´c]²vŒâ–jš9Hî ÊŠbݤ9à™lhÅ£90!ttØ67”!u_cü™Óš•ºZz!{uÂ)åZ4ì‚À36ææðÆv ¿ë»,·DÑì¹Ù›ÚæÃZò"mw CõÏKÁ?‘hs P2•K¾ 'M\ lyd;Ygo£­¼Çš÷ÊTm¢rÌl–a-MýÕ«ºXRõ/ûÜñâ5DÚóÿˆ““_2>$:‚™Ïo˜ÅÕùsÉ¡As mNò>C4€[Ù6Êÿ;Û=¿ -ø|âj:Ñ?ì»áÌ=2.¬¼É?:y‚r÷ÿüôÉîß@ò̯M+ ´Ã^<Œ´'êßžø´ø… -ë/³,ÕéõA"÷¡à?¬¹BÇ®þØ>hï›Üý[?„û -àÍÝ°ÑÑ_´·ÓÏ|—ÕúÚ,Œñj×\g膺éKíkõ㌯š|À[ÓÁP˜¯/½Dè8p§/Ô< PÞì³­g¾Øz/ÿãûÒÓ»«?} -Y¥9ST'<}z‹oÖ@QÂ0pDÄBü¢>ÿbÁM_¬ùãëÏg¨˜;ÞªÕ[ öf£twÛml?ÕÑ›æ_7¯Ç/§ßiÕ|«Ç­ÑmüýÖpÌ—æ—œzêór¾w¾lWÇ•R…°bQ^ε1¡‰úPƒ¦ñãa/úèL‹ 6£2Ђµ3ïå^¼ 0'DIÍO.¸þ™Ãâ×#AÍ?’Aè¾Ùo¾Ãmà…Ý—†™C]«s»ŽÊä…®ð~ÙÆmÖ╾~ÍêGœº(»CÓeÕÒ^õסjÊÞ8ªj0㿹дª()IÔ`Š¾-7ÃlLÖ¡³ßïs¾ð6K´¼±\ß–©‡ñöÙ¦gÙáP•‹Ü ³q¼‹´6iªµ_êqs>~m[iª³²($Ïõu<_ Œü™mcë -endstream -endobj -614 0 obj -<< -/Type /Page -/Contents 615 0 R -/Resources 613 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 535 0 R -/Annots [ 608 0 R 609 0 R 610 0 R 611 0 R 612 0 R ] ->> -endobj -608 0 obj -<< -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [160.043 485.257 200.094 497.76] -/Subtype/Link/A<> ->> -endobj -609 0 obj -<< -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [510.593 471.708 533.919 484.211] -/Subtype/Link/A<> ->> -endobj -610 0 obj -<< -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [76.072 444.609 109.253 457.113] -/Subtype/Link/A<> ->> -endobj -611 0 obj -<< -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [111.704 389.978 207.551 402.481] -/Subtype/Link/A<> ->> -endobj -612 0 obj -<< -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [79.903 357.522 235.74 370.026] -/Subtype/Link/A<> ->> -endobj -616 0 obj -<< -/D [614 0 R /XYZ -13.423 915.745 null] ->> -endobj -53 0 obj -<< -/D [614 0 R /XYZ 29.788 737.428 null] ->> -endobj -617 0 obj -<< -/D [614 0 R /XYZ 29.788 648.325 null] ->> -endobj -618 0 obj -<< -/D [614 0 R /XYZ 245.013 606.185 null] ->> -endobj -57 0 obj -<< -/D [614 0 R /XYZ 29.788 582.541 null] ->> -endobj -620 0 obj -<< -/D [614 0 R /XYZ 29.788 411.866 null] ->> -endobj -621 0 obj -<< -/D [614 0 R /XYZ 29.788 377.425 null] ->> -endobj -622 0 obj -<< -/D [614 0 R /XYZ 467.558 284.213 null] ->> -endobj -61 0 obj -<< -/D [614 0 R /XYZ 29.788 260.57 null] ->> -endobj -613 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R /F89 511 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -626 0 obj -<< -/Length 3653 -/Filter /FlateDecode ->> -stream -xÚ­ksÛ6ò»?Ê“&€»¹n^M'iÓØ››¤ã¡$ZâE$U>¬ú®ýï·‹]P$-YN¯™$„X`ß»x\Þ|ü œUsæ;+ÇwÞœÁGÀ÷W€øŽN´—áÄ*ð"¥:sîÎ~z4øfñ4N3FÓêdŠui×ܯ%DÃÿ#{*΢˜àZMg:öµÓ)yB†N O‹'E]è b/‰‘8h„¡TÎýO§tŽNúë™'} ³á܃¦™tÏ€\¾-¤ó²R{šcl¹–/-¼0V¶H\¾8‰§UœD'¹ÚîŠ¤ä šZ¾–Äë¾y„WuŠ×=Ê`‘Ÿ¾šq 2–ÒIˆøßÞœ]¾£ÒKT97wNxQ;QBú¾Y:ŸfßVÍb}îQ<»ÎʦªÛlqþËÍ÷g¯nÌ¥…Gq2qþO¿øÎ:¿w|jàìÌЇ ÒÙ8×C<ÃXLÃS@'˜ÕÊ9ÖõñÍ!„½ &®_½ Þ–m¶ªÓ6¯J¼éòefúZ{:ùýS,]¾Ž0?ø";®ÊtÜPx -Îðó9£ƒ4_¾$îC@q/ -QKoÞd‹Û¼jo³ßÒb»É<£JáÇó…dÅ‚I¨LÂG K禀Y®g9CŠd -5KïÓ|“Î7u¤< ¥Ï¶ÎÜEUlóM¶$È0þfC £8™W÷Ü,²#MÆX¤Å†úò²åÕRúÜU›eVÓÈ2-é)ÝZi*Hb*Šî}H|C“zM@ðFQÆ*åžT‹0øð`W#ŒciàÉsrÚìfÍÚzÅ«™/ªI8}dMŽ+CЛ¦é~d§ŒÙããYZ›F2kÈÉãY·½ Æ&k?û2jè×:½ç‘)wWÕž£=,¼Dz„³¯ ‡~X[¤Ý:· 1gB8œ€Ý•›õ;`l—£­à8KyLþߢZæwCXb‚Ðã¸A’x1Ô.ä9­8›6ÎRWÿæȇ¢b˜~Õ•e^®L Ô³'`Žé‰AÒ–œuÊåü]Te›æ%sšk€.-+¡ÆöµÿÄ!Bù%¡¶âÑw]¹Ø§ã”gÛ1hžmªÝ¹Öc¤YL¤¨ £&J¯#ÐG›#/‰|Cƒ+Áδm©=©Ñ>9ZÃùäê@?bá…èâOÈvü_B|1Ž€*]ºzrå:kÿÎS6R'ºJñ€mâò›sƒöÂD%l¡-™/š(6öâÆ_lÌØÌ˼ÍÓMþ P# -Òز9i¤‡Ã”AÕIc(!¦íz—·vMK(ØÝV;Œ~FÞ&Jc˘16ÀÈïs --SY±Í ˜ëjî¨îîLÐÀö7—cºŠXèµûúôñe -ç L´Šå .å{þ7ç]s»«ó6ü®³tÉ?›M–AüC³‹=&#™6mÚf·›ª îz—¯ ­ÕO³rŒ–ú_Hµ;˜ÕãÝ![DÔ€Ù üƒöÐDèEàÃ5zS¥¤Jjm­)²%²ý½Æ>k¸>f“‡”þ$ãcú³®.ŸòApµÇlüñ—xgV.¡.h¬3TÛ¾ŠæÑ<öÌa½w™¶)Û”U˱¿5f'gÛm ¢9"ÀcŒ DgùºFcd òt $:^;»Ï¬– ø¾oG`æm.ñXdiÙ<‰ÊËJËÇ¢y³¶ãŠ¼ìZ”‹ ~ü‘>û€Z@‹g÷3AB¾mó"¯+¶·%ºêÚmן}°Nkü¹¿°tßgzäÄlŽ[¦oí2òt¤F:ùãtéŒå#”í^ÆT>~—ÕH® ©d‘Š*Öºiñ” ÁYy.fyïž8f^µkj™Œ«o©a¬qû.r\lYÇ…=T':Œf¯Ñ&i"4 lm»z[5S²úl€SK‚íÅŒ¨ ˆduóœ:aO›ª¡m4>²2… "ÇöVjŒ|ñär1Ö=–CÃ9µšÒ D8]ö]¾òS늒ÕÕ˜õÉE“ÀR1!f=)Sê*5Áy”X•†ÃÕØc -=‘°G:‡½GÃ5w¯i’…ÝP—Ýk²U"¨/ÜmŠÁ6ïóœ6ž:Ü‹jJÜEWæ  -¥À*Û¸‡°î!â>ü"<{+ê„P2þÐ@¥3•°þL÷~å²­« óƒ:ˆKEÑì}Ug°)­ÏµB£‘Ò'WñÀ•xÉ#ÖU€â0œ/³&¯°Cˆ…¦ £r>¤J­4¤ w†ìÛعHÛi¶H¢cpTâO´™wŒÕôóSy -°²+²¿¡uÒzÕáþ›:!åV»Æ.B_³Ï‚oÓÍÛ:]´Ç RMx zŸ¦°! +QTŸý@Ò~ÝÕUAÆÅÇ;00 -€Êö.mûc­Þ\¡±îŠ|™·lØéF!.l>#m]uδ”6¬zÁ:kÚR™±ïÒ¦½8bô~2a6NIìÙÇó<òA:|k+{Ö÷TœHB/­ìh¶}5{Š¡#ˆ2jŒ>ÜIÚ3Ie |ɧ€7kÛa-«-"³‰´Ý8+°NžhÎg…6¢ì94”Òqg®yŸWÝä|TcÏ8 |H*«Y£‰¡0.Ýû -”–Ûcƒ"+ªúa|„ðÅD„ÁyD<3ZaÖ`+Ÿš”»ßl#Yo¸Í!Þ·OÏjæ=/(ˆ¾>ŸìýýÖ>A…¡”c¬Gå׉"îïBÈ«Éx"Š1òLgÌ! -`Û*4Ž ˆ pG8‚íY4ÁYój‰áÅñ„‹pĨº–`6²c+psn%†µ9ö³ƒäG" CÈ|¶Ùä+Ðes1Lb¤ÖM3Œ.Q_ ñˆ¡cô óé,©-‘Ñx}ªs©^y8Å€„‚EgŽfØ­³‹y"¤ÌvDíUdT}ÀAþj áÎx)Å8–Á.{Æý…‘#Þ¥úLEŸòzÏU#©g‰/š"Œ§žîN’§Ii8‰=„S} ›†e/@”U¹ì«úÈSlmÀcîŠ|QCM õ²1ò¥³ÜgÕï8iÃw Z!FÑf—Ùû~{Ëž—“T›³²¤Ûí&ïã­ÙNVµE_vH€=`j¡økù\‚„ã=ùDʼWXqŒÁìãs€¦ -endstream -endobj -625 0 obj -<< -/Type /Page -/Contents 626 0 R -/Resources 624 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 535 0 R -/Annots [ 623 0 R ] ->> -endobj -623 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.215 442.815 210.71 451.526] -/A << /S /GoTo /D (group__bsec__interface_ga157748484a31501acfeee3df656adf54) >> ->> -endobj -627 0 obj -<< -/D [625 0 R /XYZ -13.423 915.745 null] ->> -endobj -628 0 obj -<< -/D [625 0 R /XYZ 124.457 641.626 null] ->> -endobj -65 0 obj -<< -/D [625 0 R /XYZ 29.788 611.515 null] ->> -endobj -629 0 obj -<< -/D [625 0 R /XYZ 247.26 63.19 null] ->> -endobj -624 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F89 511 0 R /F120 619 0 R /F44 228 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -634 0 obj -<< -/Length 2884 -/Filter /FlateDecode ->> -stream -xÚÍZYsÜ6~ׯ`y_F‰H x­³[¥µG©d˶Tå'5ÅB®9䄇'ÚÍþ÷íF¼†£‘“‡l•-‚8}|胘˻÷o™õPŸ¹ÖƒåZoÎàÅbðüz\Ë}'fÌŠwBá[•´îÏÞL¾*ŽdÆË|î~<]uiöì÷b.ÿ¡9"fÖz;aÀᾘR:ö4ä„:Ì ¬0bŽÏ8Emã‘GÈ4‚Ài° -ë(Ñ_ÎÏõ€Ò4Ñ^Õqy³õ¬×%°zœÙÓbË6rùÌ "1‹ÔåºÜŠ_DqxRªžq›qВˈ´\ß#YûæYÅ)Yû%ƒMÞ}±àÀdäy‹\ÿ»³Ëo”Ìsb†ÖݽÅc'Œ"+ŒÉÞw©õqñ²^oÎmF‹[YÔeÕÈõùÏwߟ]ß „aÂW£t!ý?»V -ƒß[.(•[{5u‹ÓÏÊ­Û¡ ŽÇ™Á\/ä>@ÃÀ'ÀêÁ:6ôþÍœ ̲‰·×¯H†›¢‘UÒdeAoÚ,•J /ÅÓ©'p&@1Ž'€Yà 8"ò,;ð—{ÄwĹ Y|'ó¼$ž^ÜiYVöUVÙïÚ$ÏšÇ#IhЫ gHC €L¦ÐF Ë€ën ›ÜfÅZíÈ[ìÕS,öIÑPOSÒ³­õ”f£çÈ_“í9[ìÎm¶È¡a–f͆f^Ui›zýÍëë‹ÉYžSÏ&ù,Ç»­Ëⳬš¨wôÔŽ»\¿¼23SM/+Ìê¤1`£vfµ€®+䤅u¹ÝåWDŸ/êO²QØŽØâ'8õ¹tÎmÏwß–Íh6Y}AM’‰-Ö›¤xfX7h5M(’­î-ï‘­Ëow‡Æ2gÆcÜñ6æqUËõ2+›¥Ö„³&Çí-¸àГ==µµð\-'vFÞØœ¤ÃÙDÍI‘5Gòq^%{U¡&Ÿb8 Ñf´>CûÜ_l“¬øÉõ]øÏNqÌDèTúÒ}[¬µG^Êžb†»dY0¦ñ¹ÌRb§–M»{.?<É„7¦¥`ÈWÍfM¹ë5ñ: F`å‹$M©ÁiZž²6´Œ´Y“‹ù·œ¼á¯Ž1?1ª/ -b}Wª3 -t')µÔVøLòOÔÒZe[Q£VÁ…ÚI­§Iå?=Äš^×ÔF©Ìý$ç6Ø›œÛ £’=«7Wï¨ñ9É[©·Z%àñÖŸÆ«:v7e­¿}åÓÓ@Q‚ƒ¢tr­(2.3úçZ([¹Ú¸ƒ‘‘qYç‰ -©Œ3KzVr[’ŸuOž(€ã3Ut«‚`잒ʃØæŠxL¡+âŇs-4ŸI^—Ä“†#ÓîdÞîšÇ“ž*Ž'læeyò€.ÈéE|LÀ(l]ɤ1l$rÙÈ9ºlbOBJâk{v¡8Eg>­v€CîÃ)Ãu½Ç - 8tµH°ÚÜw¸ëSâ Îpëã¼ûĤÀu ÿG 0ôcÔ/¨Ÿ°¤s°Dß@`€þ—´*¨Å55[•ÿBIÀc"sù-»é 7Q ŒšO:ÁØ¥oÛ"[ë¼ »¾º çŽøÿUÒYɇÞñ¿¤˜3’æVmÑÏcÌçn?û …y•äš]„zâ ÅF@ðm¿É0­Àfï]ëÉJI±•g«*©Ç`™çL8,òGŠÐ¼Ý‚G5{6òroïʽ¬t”TiÔÈ»ªüœ™Þ‡RB†ÜVz ¼¿LÍ[ÅpÔCˆæþ]^º@+h -Æ‹Ð áÄ.%úÓ>™’÷åíÕo¸^¾¿º»^þðv‚ûÅ…vYŽ{¯›«¶^‘ƒw8ì©~­s)w -2à‚x¤Óº§°ÌËn6äª÷Ùƒê‚}Œ2Ž²R÷†\ÛªZ/ÙýÜiE…€ÆœÕV‘»Ä­Ûº;¹îá¡= 8!x‘áŽpË6O‘Ì.ê+4þx Û?çäé3µ«€B^ŒìÉ”Ó.møNv|q]UeÕ‘\NŽHV< ™y15ò3UïÎ8´)©—Ú/t¦Åûï—n ózR>>µ–Œ~ -x`þ4 ¸¥ÿLLùúsáñÇâ¤z¹¬kã¦1«2Š ãª}÷h˜¸’&M¢=]¢ïa$0¹µNÐj=k×ã‚ t`äºmTî¤ì¥ÉÕPæë½%T÷QZ@ ,pX;ˆ7¤øFÓw猱…ÎìW’ž }E‚V£G°pȦɊ -25ž":°¹7D¨2‚–®å†+SӱѳïËR:¥K|ÍŠuÞ¦†R3™LŸ - ¡ªÉáˆùÒ5_›ø~G=ó• :IUš¤±¿t¼¡)¾QÉúæïO~ÁdpÎþ¼âa`9ÇõuyõA1ð ÚêTƒ§eAº ºOkUc†ˆÒ=5tmúZÇ€ôE[€žVªè‰O*ìÚϱ «ïSÝËwfDåžÔì0ûtE‰ŸRX̵¨ŠÔä}‹ˆ¨^ÆgU%c»®›nVmàEŸMúž„Bµ:ga•ŠBCØ'«4–P„mM9˜4Œ‘ A´l&)9žÔv8’ÊÏKäF;ÏÑð|tì+ÄÈ·Ü5à ,è(ã`.‹ÙZX©…jÌ» -bÓ6«k°"2oø=Vwª•¨F‚“uçG›CÜèã«ìU Í¦<§1ÛÐßj³)jÌ6vœŸK`>–GåkŸo>|ißÃÑ9’Il¤/Á3„²"•¿Žr÷åùtä›1P†¾þº'$‡á¡­ ?*"?³€ÃÔüyõÆÐ*³)k§8:¸§b 2Í)xŸ••tÆ^Ì­ñCq8ÓÿþÍÜ·®ßq«§œä0ÀD^n”i.,Ó ã¹g8 á€bjY©ü3öØâ7|ðÅk…S®Ûտ亡<ø4·9 ¿òïe«'@n“á•Òø(¾.×- =¡Ý®dõ×s;ä ª“; 6U®öà’ÑV÷‹öÕ?]7¢[*àË•Bq•8"œõ­£V!!< œ« ûßáýªÏÙà~¬êv÷«_hAs£Ú«ß‡A°Þ] -}gù:iæ¯LÑ…A°à.‹m7°yô‡Ðòwwežã±â£Ãº±·ÎŽ,³ŽîƒpŒB{ —Ã? Ê!Cz3o àeÌs0I7×Ö™=µ'‹íÁ*œn¦uãsížþtxº~L~ƒ¢¹FŽ[%[÷kæÄ1À;n¤îý™ž‰ÿ‡íõÖú}Zívòp%”[aa4üA&=GOQhê~NÐ_ŒçàOúMHšN¡…5œek¼Ø=`fX‰Õ^Ê~ëàyþà·ð*o¶«ïh± ÉžÏÄâ -Ó,쫲‡MSë¶öB˜šŸ’*U‘_¡0"ÒiVïÊ:É/èæDþºËˬIô…vUŠý´]w]ÑB¦*Èë @¢©²U;X™¹x0-c#os˜fŤF€ -¼hÆyf²ÛåYço©©Ìò´EM¸Ýɪщ*)Çy2û÷¹P?[bÂñ…öñÌ-|üi¹ ¬ -endstream -endobj -633 0 obj -<< -/Type /Page -/Contents 634 0 R -/Resources 632 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 636 0 R -/Annots [ 631 0 R ] ->> -endobj -631 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.215 505.197 210.71 513.909] -/A << /S /GoTo /D (group__bsec__interface_ga157748484a31501acfeee3df656adf54) >> ->> -endobj -635 0 obj -<< -/D [633 0 R /XYZ -13.423 915.745 null] ->> -endobj -69 0 obj -<< -/D [633 0 R /XYZ 29.788 737.428 null] ->> -endobj -632 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -640 0 obj -<< -/Length 2645 -/Filter /FlateDecode ->> -stream -xÚµÙnÜ8òÝ_!Ì“<É¢ní`’Mâx€,&¶yð Z¢»5ÑÑÖa±Ùß*©–dµÄØ&E‹u±ÒG秿3cÝ8ÆÚpŒãø0´×0âAØ cFì»väF#Œ«ƒO÷€‹ šé²ÀµÃ ™¯:Ò{îöb.ÿQÛ~ÂŒ´œ`»?Ç´¯Õè|/²™QÌ쀹ˆ ´`Îí$Fâ †žï"îÏFeìEz}`{ŽØ÷¨+‘îG'¥g¼­ÔýÄ>ÎÆ>¶,ÍWÀì0öGl‘¸Ç5;ðã$z”«ásAJ#tÐsxÝu÷ðê?ÆënÉh“OÏfˆŒ=ÏfIˆëßœ½£džøQdœ_nbGqlD éû<3.Ì7u›n-7ŠÍ3QµuÓ‰ôðËùoïÎGÌ0?Å È4Fü_#ƒÉß „ê·´Dp Á3 -ãl̃í¹,ˆÖ‹ÜLÃöN0«µ±oêôx‰„¶±gïþE<œTX7¼Ë늎û<’¡çÚÓ¾–(¦8ˆ@XFhû±gX¡knL$¨ýSÞ -êÕWÔv5ОQ絛R$ù}Þ*€Ë¾i»{°M]νùø.Œ ¸ÎÛN4ôUò­½ÈüÑ{æ‚;±“È‘L€íAäõyÕÅ+Ø:p ¢]áö8Ó'2q³âYÖ¼¢ÏɱwîgœÌxÇWÛn ÀÂ3N¢‚-’2¶Ã$œØ~‰ÿ• ü!£ñÒÓº<m_¨ÏRãü*—:tŸóFØ— ¼ê¼áU[æm -Až5›HÌd¥?ZyÛä@hÍø ¦È£!Mº`ÚÆ…ÅÜ1~&ªÎÄNtJƒø…¸DÛÒGWSÛv¼ y–Wkú Û2>š¨}Æì²\$#¢Êæ˜0OÜ„Ðd¢àwó´©[‘ÖUÖ"4-ØÏ{œÀ†šõß‘òoî4[í¶®ðè¥ÁF26ÖE#®{ÑvïAcý)K™1Ò96µGhvÙH]§´ÉÎ^ÉŸ†ŽÍ46ƒ¿äî&C§ÄÄX®@Ý”É ‰;¯2ñׂ%Ã.q¬h• _§÷4»É ±„Å"¥Çox^ðËBhÕëCø°!‚9ß(¥µ¿ôw“§ª_jM¶`jÔ+v¾á•6)_‘í´¦Ü¡¶zI×lB9ŠÐŽ@ðcYŒÝÐ…î—ûçA{¾}§_®ûå—_•›º¿Ëÿž¤¢±úÑõMµ¤¤áÜêí"é²ÇôÈíæ! -Bj’–çÈ„SÂ2ÆÌšÂD^n QŠJ›¶b;L¼È»»ÃÈ7g!ªä_U¯ßç^7¸šð3¢ÌMb›AwFE‹{‰r ×Óàšºå÷´Ã7„–çƒz 7œÄ›:Ï–4"E¥]ŠçêÀÓ­Êö{‚×À¿F° èàE3³[ÊÙT¶ç3HÝ ‹ŽE×ÉháF‘ɱ Í./á ñrK£yKÃö”{œ¼•&`‚Œóƒ8d`«¯ˆ "ÒfJõ/iœ ä9@Ÿ?¥¯Ì‹"o2€1‡žÙ(hq‚BÛ‘ÓÕDÍZt2]Ñ0íOÁLÁWÙ"3!;®í2ÍÐ|[Ü©$Nµsˆ]/v͓ן°ÃÌ^@rBƒdãBàiÇ+R[­ª¨%ÎUOÄY¾“UÀ`Z÷…Â!nD5Æ=YÎÀ ]4Ì(xÙªo^´õ—PZ+¿E¶›½d4užFAÛ¾“eæÝÈ5¨`ªÝÔ+僞”Sâ«¢æËÉ4¿^ªMaxÅÓ´oxz÷’ÛÍ­ò…Ðjk}N™¤Fºwml/ItÃoW“<õwÉä¼kÞ*t˜Kû‘A&]`ÍÇal{a2 †—ÊWE~Ù@‘»¢“½ZÜL‚Áwý(‡„SEÉRas/êžIÏmËX‡i œI–•ÆßRæO?ÍÈ1÷U=ó-†#zÄDxoÑҥʲóPûýTîŒîÅiü¦ -Ó?J¤6ß¿‹Bb?J"8ɧnWæ?NV°—¬Áw?…•¢z…ˆòÚžS£¼T‡£­B0e„nh\fƒÐk;¬Å±w«æT~ -=™âýJMß2øãP±U*QÀ± ïtO s·.û¼È,Ô<׳½hB&x1^¬ktT6„GßaÀd8[ÞÈ›¾1ÍE^}Õ|Ýnd4â9­Ë­º¹ZØ‹EÓ¬&ÄWÚKåŸ0[ÿ)RL½¡l4ÿS]ÕM×W¼C €P: u>•÷R8¬1i¾ÝP² ÀMž~½£>‘Œ0¹š’…ZNŸ;Ü„ÈÁ“·ïlþ|È"SPÿ(oÕ­¿§4=Æ€ÓU6»cô½Ä5¦ s ã§ÇK‰Ýw<ÍH-ìò¼y¥Ú¾>ÖYŽd§òU$â‡!–²¢¹Aî™ß°qÍ·²VÂ鶿DeÑòŽmºáÕZ`?¥—Ìýq¢ª;y½ˆ8¾Æ·uÚS&úòR4àö"—Aj~~¦E¯&ÖèÅÈ’EÖë;NlÑ¡àÊBÙ–gÚÓãÉs™ïCBànR`óDzÀe£Ç2pÎðXöLMê籘}áƒì/é¡.¿á6ÔK®ÃË -7þ!«þ‡þN$Kl7¤çWã`Ï2cï>h–I€¤p9üR¼c£Üô³c/Íèv¤º©q`Íf­Ùbk´ -Á5Ø0¿híðϧçë§è7Èš£ù8“¼ O×ÌN07×vbùˆË$þŽûii|ŸT‡<Tù2j±(?ï¬IÁ(z9Òoò'0øn½Û„¸˜ú©Œ1”¥ìÅÚÌ)‰|íeøÒ:y¸ö¼`ôp Ÿ¾y\^~  ´m¼ka¾ùº(h¬É×›®U}å…ðÈ©fVkÞл~òêŽPgy»­[^ȉ)þÚuÞqõv‹C€À‘õé0›Ò9@¥ÄË~´jxÊ @µŒM¼Í­(Ô oõ]Ìì¯ ºéÕ;ßn‹|ð·ò¿nôò¬GôÕP 9q§.)I8Ó €y¼ \_þ -óíÀW‰ó'KÀ>þŸ¡” -endstream -endobj -639 0 obj -<< -/Type /Page -/Contents 640 0 R -/Resources 638 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 636 0 R -/Annots [ 637 0 R ] ->> -endobj -637 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [53.898 228.11 143.761 236.821] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -641 0 obj -<< -/D [639 0 R /XYZ -13.423 915.745 null] ->> -endobj -638 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F120 619 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -646 0 obj -<< -/Length 3484 -/Filter /FlateDecode ->> -stream -xÚ­isÛ6ö»÷Ý a xt·;ã4NšNÒ¤¶:™¤ã¡(Hâ†"UQ¼Ó¿ïá H™²ì´3NxÞM\Ì®ßSgÕœùÎÊñWgðáðüf|G$‚$”:qÀH§–Îòì×{À° ¸Íx™`$É᪠‹s‹:¸ ÿDL‚„:Ùæ€ÂDp¸Ó±§Ý.à¡™q 2æœÐ$ÄõÏgg/A))'IEÎlé°„DqìD‰>ïÙÂùè>¯šl}î±(vodÙTu+³óßg?Ÿ]ÍÌÐ@( âdãþ÷¼üÙñA¨ÌÙ)Ð ‚ Ü)œ›!„3*b€å $:A­VαWׯ¦x "$,¢LÜ\ý¨yx]¶rU§m^•zâU—/¤bè©útì©)¦}0D¤ˆø~läæ þHÙOàÌ6@Ün-k‰Ä„n»VáΫ´^蹦ÛnAêz~›fŸÓ•^Vµž­ºZÏ –å~——M›…\sìÔ}Wê÷òrQíšgª]køÐͪ®0[Ì 1Oèʯéf[H»1Jíâ%KFÌFplcFÿ¥PæW€ÃŠ¬QõÛÍÕµ†â܉Hù -†1·@ŸüÀ7@þ("¾ˆ,Œ7‰Ë< B€±r0ðDƒÞþôîíÕ/èÛ”—R`ÿ>Mý'ʃËíöEÚ¦8|Sei¡æêE——øÃaƒcÙlc†8\ÃÉíÒZj,c ò• µ`¹@KÉRA.´dÕÅüÄ™ð웎W>âL.¯_üöú—w·×ïÞͦ¶c±è‰bz,»‚†$ì¢* TåLj¾wG÷žrm>%qêm–UW¢ªÇÌìTÀ™¡sx¦çwfº”ÒBVzf+k°‹Íh9ƒ-‹¢ÚååJ5­Ü6†Ú÷…LöYÊmbjf“kR8앶»¶i½’­Á›¶ëÆ®Y­ è"ÿä3.ë)1бÀ=Î#-‚¦À=Š;í r+Ë…¦~Zi¼Rì^ݼGuÕ?®(v¿Èºé]ê]ÕéAZ›×]›’‘—*ƒÑa9Ä6ÊŒQÒ{Ї>•Ù,% < NF„ŸUl}8§±+ÑáQst8£ÃgVmïpäkÎpêýBNªnâ"ŸDI2F4Ï˴ε1ƒŸmó¬ÈçøÈ -‡0“«jÞÈŒ¤“4`Æç?¸YÖÕÆp éõM@éþðG^Zò!n¬ÔW9¦ÂcmòÀ31‰ƒ¶ª -Íéâ³alŠæ'„ÑÀZ;˜ÄS÷aðã$ -#pÎ1a°¥ZÍÖ4ñŽ88 -j"ÎLin»E^~–µ›³†qÔ»˜«{ðø…Oâ(ïÿd‰-dº*$I·[ò%$YµÙT%˜{ăYöbðûþ~ÔíF“¯ü<熳MµðN)›‘ØäòzÇ|©]¸ó;ý„BÖ­q -uŠÔ¨Äù)…¡~4ÞdÏ'Å L‰^eFóý'D_ä­¬Óâ܃ÄÂ%­üÚš¡yA¦HAâ!ßç GSp<1³`j÷Éý yàapr»/@==uPèa3’Tºl•Â>Eä,cH/¿MäëF©×!ÏßžzÑ"¸N½Œqÿ…£¥A˜ŒªÓ‰O|Ò_BH* ¢C¾ŽI  •Ä°Ø&1,ÑÎf²uZªŽskÖûJ˜„Ä£ÛȲÅ8ÀȢОàØ»s^fE·0­ˆ~?Ó…B4E¶ÎåMY¬½Î.LÂâ},»/†W&¢FÚtë #!Ç ½ÂzŸSh)XnB£ñr!sÊÞlÁ|F íqa›²&‘ÅlaÞüàm^±Ê2c%„œ¢’'‚0q >ùÝW ÇR’àP¸D¾ ';CQÎÿf/b 8j·EÚbBNÚ¯í”@bäãOÉÌ$Ë"O -øϯ—}µ¡‹‚j§ug²x]ˆc–^Wÿ•™IÙS+èl-³Ïf¼]¨É¬stƒ8~[•yk«:ô’ƒã‚4ofç”r“ SȲÖÜ5¥§þñúÅú¬gC6˜›¥¶‘òõƒ€²˜%&Iu~_Êl Æéj©ÌNM€› 7ÕØzmê ®`hU©ò¬̳YW;³b.¡¦ºŸ@îÝ#*É^°’?]uÔÚ@pT'4.ö#âû¿k;š}¯ŸRÿO=®2“ 47“¯/µ³¸\ñˆ¸UУâ<Ÿ€*¼*ÐPí¹ -¡b᪘ÞG’|WÉÓP÷P-Gì1\QvÕ”“é³bኊc¨h2…ê>Wàë¢G¢ -¦PE÷QÅ$~ÄY‹`( ¡q£7]–ɦùÇD‚Ñ5df 8yÕkÕå™ô¾ï^ËE—õƒmµÓÉ+:€²é6[Õp=QÑûáÞÓ,v8ÃbX;šÿœ'ÔÕ}γ(tG²¬ äªq£´owz »'0Ñ=3Ðr³…ì²ílïU{i¬»M¾ÈÛ;ýk‘¶©é²–SïÂBíÂBëÂT•Û$§ïÂb+5K»fÐå=íg9¼¢Ü„ÛAçEº°>Õ8Ëm-= +Û0´0}›Êv_ øÎHh¿0S­a='ë êÍ{¥QÚµÖca39 %ƒ6ÛKǨ›A™êÀD](‹\÷ÚšQ³º›ôNviÙ»nÔ­QÍ ˜ œ´×6D1Ð6µ¹0ñ—Ú³Ä}ÒVÖÛÔ’‚™®hëÔÛKdº€*¬b;´Ö´¼”>ÜäFu„›·V™tÓM¸múYš^}Z›(cHèc=Ú\êgÖÕµ‰«¡éÍÁPÅt%ÚøBa7퇀…TÙÅ°¡_Tåʃ"kc¾:¤mk4[h©ÊÅ#4•A¥OÝŠVVòW¼ ÷ygT®í'ŸG6¼K«ÂK£›V¹SõûÚdØÜ«¾Uîb¯±=”µÙX39Q~[.À‹>Õ" ¸U­r-NCÝ=„© œ—™QÒÆ9M+gÚû¨É´ÔpM¶{7„ÔcÝÍ´Ûºiõl_¶¨Wv³mÚ\@ÇÃ=¦Rí;XËÜæU{›CZ‰&ñˆ®„à”„0;ÚÈ -á·7VÂ÷öðýô‡6"Ô:õ­O¯O¦ußé¸÷cZ˜ÖÒ¦ž(V,»2ÓžíÖ9~ÈÄ!JRíühx£%º¯Š#(¸êlaDð$¡N•…\CÛ dù§%Cy–Û¯ÅIm­8R®PA|ÉíliY-µërÙHÓ/ùîbD,ê=]&ç¨-ìúqO/Ì>|‘µh€¯?ÂÎ!ãúÃêíÍåÛ÷o®n¯/gW·F1öT|Ä.⇶4Ãy×Üî꼕ƒßµLægSH¹µã,Ä…/1±ÍbÉHÖàò—ùJ VÿóD7ˆBHið¿qÕÖ²f‘©èÐÏêO«Ñ ¢Û'‘›®  =z°Ðz°Èú¸þ³nÔ;&ü̺1ÙRd*£ÐÝtúK;¬ì½ZŸ—D¶dÄt„e>ÚD&$šÜÅƈӶI¹ÛŒl³¡›gk|ø@V¤‡÷] KŒ^=½à¢â^J¸8Ž7>‚7ÆÃGdô4¼ÀÛ¿qxoØ×@÷ë# W`˜ÑûÇócˆYПÂC›s8È€'Ì?”·œ˜¿ž¸BñM·@”¦ux‹ o+ü8ê3“kž{A‚Ñ4²VMÇ„Sä?áÌ}¡¬_7Ý\;þÀ¸‚Oº{e‹Ugl‚{ü©w|Qe&ˆ+€n3—5È6b\æ {Þó·Waì{ƒ )žº‹â]þâû±j9žOã(rdU±D“:ºà«! Õw…†wq°…·¿‹8]{牧goßìE/à¥À„PáWô‚P§¯×8•×d>M@f˜9gÞÁ[ï`±7X…à¬?èí÷?|}¸~¼ýYó-7Š·þfUéšÇ öPwĨÄÃq¶q¾Mª=&ôÄ,Œ¡Q<¼6øô¤a ˆööêYØ#¼·G¢¹é™7ú¯t†PžÑo¯0¤$ê2ÅŽG÷â8ƒ{qð3p_mæ?é¨ÛP ¸—˜¥â\.36^ ü]4•}±Jký¦åÞz‘7ÛªI µ qå×mQå­½°‚Sµ„D‚~*vå"ÇÏ·¶hë|Þ Ö¤v6,ø”Ž¼ÍNêN˾/›^ -‘_úfoej¹am¯gLʼn˶sckÂZ8ý›ðŠ+ 6OÅh èÇÿ06g# -endstream -endobj -645 0 obj -<< -/Type /Page -/Contents 646 0 R -/Resources 644 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 636 0 R -/Annots [ 643 0 R ] ->> -endobj -643 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [112.478 186.253 198.157 194.964] -/A << /S /GoTo /D (group__bsec__interface_gacf6a5816306dfc1e3c0b26a6d459fc71) >> ->> -endobj -647 0 obj -<< -/D [645 0 R /XYZ -13.423 915.745 null] ->> -endobj -649 0 obj -<< -/D [645 0 R /XYZ 29.788 683.386 null] ->> -endobj -650 0 obj -<< -/D [645 0 R /XYZ 29.788 651.837 null] ->> -endobj -651 0 obj -<< -/D [645 0 R /XYZ 29.788 606.952 null] ->> -endobj -652 0 obj -<< -/D [645 0 R /XYZ 74.046 397.525 null] ->> -endobj -73 0 obj -<< -/D [645 0 R /XYZ 29.788 377.594 null] ->> -endobj -653 0 obj -<< -/D [645 0 R /XYZ 29.788 51.866 null] ->> -endobj -644 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F29 648 0 R /F120 619 0 R /F33 531 0 R /F30 532 0 R /F44 228 0 R /F32 514 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -671 0 obj -<< -/Length 3125 -/Filter /FlateDecode ->> -stream -xÚ­isÛ6ö»§;³#gLˆïvöƒ“¸iÚ8Mmeº;IFCSÄ E*<¢ºÛþ÷}ÀФÙ™±EÇûð.b¾¸zCMybÃ2^œÀ‹Aáù z,à ]Rj#¾ã7Ö'¿Ý™<(Ä`ôe.#žWÍ›=»½¨!–‰_ß ˆR#Þ  Ìu†¦ž 8Çö µ=Ã(q)@‚&Œ±€„@žg;LÀþÝÈŒI ŸNˆmÙMÀî5%ÐŽÙ1¹³ç9 :ì—ɘ"Ëlèr)ñ§G²Ë²˜× Bÿ‹Tuˆ›”—,Šà e¹6ÒÚ5'hu¾Dk·¤·ÉoGH¶Mhè‰õO'óA)©MBÇ÷ÅÚ`!ñƒÀðC”÷be¼›=ÍËx{j2?˜]ó¬Ì‹ŠÇ§?Ÿ\,zÄPÇ•î!ð4ðß}°Œ þlXÀTfäÔ˜8ØFj\÷i 6£nsmŸ¹ ÄU£ÀÕJJœVÖIÝ4ãë¼€ÙÒY^Vø’¯qô6¯Õ¼ºTóâ¨äå´Ý`vSWí<µK•¤)ö¢LV9V ODg”á“ÿQ‘àÉЂc«ó"°Hú#y±ãQY|ÇÅ6‚¹‡-WšTc[ ‡“ãƒÁÓ ½·lÿKXPÛ%cë KÜ2ã|ÅWgøe+Ñg9ßc—ä³TüШEœge½Ûw)`i~ÀõMÇ>/ËD -ON«0AòªU%;Nc½ÙyÑLK@`c !– 8ìù`ÑC$MJ•ùÈ<ÆÔÑP[{B|<ÊñmÍ£ -d‚/‰Z$Žì÷ØTÁ“AâiÃ9Æ®¼X!c<©0òÙ"Wa£EKð[>@«¼§ž€j,FQÔûjBÐÁðè¹ (ž3œ„X؈^àÌ¢]À˜¢Ä^µÅÃŽÔuÑ…º.»6R´Ð§«1ŒÜðêÀ¹ZQ´‚oê4*p -²Q_,ÙéڳŖ7›¡=¸ç$4t:a[HB×uK”ë(³ú J˜ôöÒàÕé~)¹D¾/÷/Ë÷–kÁ?Ý×vCÕòr›”~oQá%yè€#Ô¨{Y7n+jÎw+HmQÕ·¹Í܆çÐìq‹Œû b çÄ\ø¡ð‹.Këº6[pÅ'¡oQô>àŠaphÊQ}Γ•¶‰ñÎt™ûe¦<âùà[BâxûB‚ÐRN¢…M@Ç (Rœîâôù“S¹×ïŸq$Œ²hÝ”<^Öû¸‡eYß”q‘HûÓ" g‰“+žêHŠ¦à1•UQǾ¡7îïyŠ¿Ã—HÁQ2MMÝåõEPOq]ú Öëòg„Û 4N(FtöSn•ìT«Ló¯‚liø<™´âÇm/´0ÒöIüBä !7 –H)ñ%øƒu²©1¦YVcÚSðO5/+¾Z~NŠªŽRµ¶|G?ü ùgiô×pT‚¥bq¶œ\Žþ…úƒÚú+éÒ¹óŠ’0RKJ^UI¶)߇ƒ}¨‘.tsyyþï囟þsýòÙù«åõÅëë_¯HÌßÌg’yc˜6¼; -ßwíùù&·'4¹)¢âˆ=!Š²ïýhr~ýeûÉ£Õ?éZ({ÒÚti+ð!ÝŸ<Ö`GÏ°yP'ZixgSdãåùoØPj¯N¿”£ZŸT[m“rÏãdÄêMÅÖr [K»š¯Tk`GbúÔZÈ‘ŒVX/ǽË#Äövñæíb)85&¾N}[Š$s—’¯§éî9–ô]Ÿ_¾yu±¼:_\,A–—ç×o¯../^/–¿¾^>¿¸<ýü(Ím,Ƙú>;Òã6î“g"G›¯’2êÜÕV×môNèry¯6*Ù=ú˜O‘4äž qRQdF2"¬{œÔÙé½ãìNü þç´í¸_È ÂWÆ&ŒT#™>K;£pÈëTɪâ>$jZ²—®Z©iQó=ð‚(CÖŒ'­~µËÿËãV7î@ïÛº… ƒŸ±+J ­nÛpðQÑWk¯wÀš³&´œ@´ ÎVÉzÍ žÅ¼¡T%F=n•:EU®ÎäE¥¶Z7{©ŒˆŒ“QYè³áy(ÚÌ…¼†aõ:¯dâ"hÂL½Í{Ñca+)U~š¥·j¬—ä»möÜ.Ì“)³?;OË\ͺ·Òa[±üPÇoªÒÑ#˶Ba¾¶Náñ%ú©º;Kóh…­h’déRß[‹UYAXA‹mÔ(¸úls6•›w·!Õ²Agµ³Ã6Á Ñ›mꨈ ;ä¥V(ë÷sâS:KNM:ãÐȪ¦¶‘¦°/¾ k—bYeïdÊmŠm{Ä·áAˆ\yÚÏ'«ƒ=>ØnHBwÀˆuSô¸[g gçw™îÍD3U$c$Z¶Ø.ú#ÙÕ»¯;,”<Å,ðÛSûM¸†„9¡¾ÕC™Ù§€1âCâ®ÁŠQ" `M¤%g'í­è«K,÷…Vé kÅ…+¼‘E)x•'8ðdýíX7+ÖÇÛ,1ôªBœ¾GÚ`ƒ¨P8­àt1[ØÌê+Ê>,p ¥N«:»¨RåQþÕ -Œ}¥ ”Ò ^¹³W¼&E-UÂÞZÏÉvlá³|û5û Š„Knén"È@1ô2_aŽåÔt<ˆZ9xžÏâ$„6ý%lö<ª"† /Â-ˆ'Ù†‹6Ö¾òZM€¤0—€ñB|žÇ5ìå„zwËïOMŸQ†üØm>½¼ðËì}“7åçxóüµe&*ˆE“f^*ÉqüQ‡¤]HplR¯Kô¯#¸Œö®#€Zíu„#¥×\@èXï ÈH|êwÔ'þçÃU¯T%”ˆY44-‚±GiÐߦp6±©oP|=¼àbœL,3&÷ª‚ - ±þ(ƒÃhÁ·æ¹ @2ͳ7I5cãÄŒšƒÅfo•˜ÞLkÇÇ&šüáðp½~+H³:®%míå JÂÔ+×d¨š)þûíxg<Œ«íN`ÊlæH Hý %§Ó&5GM‘ÚÔÞ¾i…­Í7ƒºMš–Á¿ÌèÏ2•¾˜ÂŒ Êû4TÜaѮٶۻ¯ÎìÅîæ'º-J'Ô™Ë;¶¼ä²Iƒl++$î†8`e6ÃÊ@C¼FÙ-‚^%å>/£ô óSþÇ>Í“JÕUp0Ö«:n»‚_%•,È |ýMÝ[•Êh)Õ¬ÍAáú-Ò&üs{¤I‚¢ý>MZ{+zÖÍÍŠ$[Õ(m]Ëž•Êj9äÞ¨ßeŽ¼åGâ:ÊÆSO[úñ¤b  -endstream -endobj -670 0 obj -<< -/Type /Page -/Contents 671 0 R -/Resources 669 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 636 0 R -/Annots [ 655 0 R 656 0 R 657 0 R 658 0 R 659 0 R 660 0 R 661 0 R 662 0 R 663 0 R 664 0 R 665 0 R 666 0 R 667 0 R 668 0 R ] ->> -endobj -655 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.529 544.141 160.498 552.932] -/A << /S /GoTo /D (structbsec__sensor__configuration__t) >> ->> -endobj -656 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.529 525.212 160.498 534.003] -/A << /S /GoTo /D (structbsec__sensor__configuration__t) >> ->> -endobj -657 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [53.898 516.074 156.314 524.538] -/A << /S /GoTo /D (group__bsec__interface_ga847070d3ecfa970cb2f716a2d11fe219) >> ->> -endobj -658 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.349 506.283 302.764 514.859] -/A << /S /GoTo /D (group__bsec__interface_ga847070d3ecfa970cb2f716a2d11fe219) >> ->> -endobj -659 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [45.529 496.898 135.392 505.609] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -660 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [175.243 496.898 206.525 505.609] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a06af666972edcebef3302d015f1d56c5) >> ->> -endobj -661 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [166.874 468.505 206.525 477.216] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a92665e4f2f3cd5237814488774c0f546) >> ->> -endobj -662 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [217.086 468.505 281.843 477.216] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea2368e219ebbce4e1ede7209486283a6e) >> ->> -endobj -663 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [166.874 459.04 214.894 467.751] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a150ba3a737fb75f56052c60d55246ae4) >> ->> -endobj -664 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [53.898 449.823 231.631 457.825] -/A << /S /GoTo /D (group__bsec__interface_ga6c18af8c9be0813f7d8e3547e58428db) >> ->> -endobj -665 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [83.188 421.182 185.604 429.893] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -666 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [235.738 309.149 358.003 321.653] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -667 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.253 295.6 220.518 308.103] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -668 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [427.86 295.6 466.962 308.103] -/A << /S /GoTo /D (index_intguideBSECConfiguration) >> ->> -endobj -672 0 obj -<< -/D [670 0 R /XYZ -13.423 915.745 null] ->> -endobj -77 0 obj -<< -/D [670 0 R /XYZ 29.788 737.428 null] ->> -endobj -669 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -683 0 obj -<< -/Length 3271 -/Filter /FlateDecode ->> -stream -xÚ­ZYsÜ6~ׯ`åi”)€77»µ¥øTJN)Ö¸ò`§T3à M”Íþ÷í’"-;»U¶Ý ôõ¡Îåúý-7vÍ3v3ÞœÁ‹Ááùô0Ë<+âÜ]Û -\Ϩ…±=ûé ñ%H±<3fólË÷¢)×¥žó47 ÿ^h¹7’b²ËöÜ©¤¥§ç:ÅßBnyÜF¡¸@ÆìЊB\4|ßqm”ý³Q‹B;³æ€4”=hJ¡'dÇåuá/+XêòbŸWcI-SëåqËÝZÊ\ŒÙFdynÏjuZ¸Ém°ãJ´˜ç(]OÍ]Ýçt=± &ù髇E†ŽcñÈGþï×g—¯!(¹cEnë­aGV†F)¯SããêûªIö禄«;Q6UÝŠäü—õg¯Öe¸ëÉÂl¢ü¿0#…Á Fµ£$-Öà¹q7ÔÁrlî…@붡a¹°N«±4ôþÍœÜó-;à%î^½P:\—­ØÕq›U¥êxÓe© -}m<}ñÓrpñ¶8üU*º@•Ë×܆üµ¢Ü z@<ù–:†éE–"U–Žk|4=Û[5¢íŸ˜Çà?Gà·ü¸Ù÷ó¿ç-Çà$\±»Š=+Û¹©kÑ~G‚=éb)P5Q¦ …))—ßžK¶ë2k©e¿P¸LÏI›:‹sÕNª¢èÊ,!—a×·—ãu°‘–?gµ°6b—•ÚryšŠ”¹“Sœè8÷lv¢þJeîÐüª¹éÚV/,&êº;¢mEÏ:ÛíD­^>ÜܪÆ!ïš/Ñï•ïªTà¢í ²à·Ö÷·nn>Ü.)·mœì¯õŠ=ÍvYç·Y¹®F6 -!Ù]~¸Ç¥Ý+Åîµh{}ussý㛿jµqžO,³ª±íÊääðã>C R&ÍZp\ö‡h&,*DZ•g›:®ÇI=¿2×â¡72¯öè1kõœz]ÞÖñ}^ÍCuÔþ+À“ð=ÔÕC¦{K­š(€§«i Ún!kç=nÖEþ«5í?(ΑÜgU{A§‘@G7`<ýˆ)üœö¡â -ïï®ÞÝÞ¼ºµ~u‘8Îïù™Yl{¡Ã»¹?ÖY+﵈Szmr!2üBËñ£‘i›6nد§Nªr›ídÏ0†Â|$Õ¿á²ÍT KÛ9TB‹€Éz8d³H8Ü·ÀÃá}ÄV]žj¿¶}’«€¤0|÷ʹ¸^ -Í/ÈsB¨C äåÈÃ\"5a÷ð]yö›Wu­§†ÔÉÅ$u²r÷ùµ~3ƒ/ô›FlW—SQßÑî402)üŸÿ „ˆ2Í¡ÈÜUuxP0x›§ œ€ 1iÜÆíq#Ò1(4²(Òí¶ãÎÃø²b3v‡©Bn#qMü çBLJÜdLSÐý≎…ˆËf†•øhN§—#’f„5ž)²²kÑ,Âñ™øí -€áKØ íD{ßf…H(÷^sÕµ‡®•€ò¨E‚*Ñ/û´Ç™<°¼ÀÙPÆ‘* ¡òd‘,§°ˆ@…ò7²u¡pÎÕPU`S9Øê)«£jô»5¾ÄêmÈ %‘ìȈ}#Ú£ô"·&lÔb×å1‰¨Ê„ºÉØôH®¶/¾ÈÊ`2[cÍ–ªÓâ‘ÉÒׄz>$£X–5S|6æc¿(ë®ÿ¦ƒ„©æŸ”(oiȆC’7º¾úé4¦c]î,àïGî-ÍË-Ç[ž7\˜7ÝýÏÌÛëë3Æmgv^¾4/(Ü…y!,ß™N,_ÿnš³š‡ ¹Ãf-ú‹+ì¥ÀÊ=÷ T·ùg&fË;KÛnŸó5EÞ V]΋–ãÂcªÀrG‘Û†c«õyஆE“LžOÌvf)EÒŽúýñ¹1edSuu¢S©šf䦊ëtº¬ `DaD§[:Û¡kùp]°ÎÑÎáLwâ‹7fùÄœ`›NS¹>DA4æC%B¾ÚªV¬¬¿R*2Ò:FÕ¦¤À½MJéŠ,ÍÚGõöç ùGMªyj‘ˆìAV øº­«‚¤«i˜2£un:n´ºZ˜¹ÚÒÐnAû(œ:€ld‘Ò¾Ýgµ\n­R8» åÔˆT‚FÓ©ŠHÁs†9ªF-r87J³ÁÛ@uä¢ I2ª¤ÁꌪTFyíHn-¶¢„ßš¡.ªBÀÉéÜó°XÆÞ#Ò–é-éãvÉÓPó`_ó• ‰š ­?+S!ÒÁ­¶âøÄd:MÀÙn/õõW/+mO¹<½á”½ŠÄ9ž;êë5#Ï;ƒ‹úâ’ú™\Ñ:CÎÀ9\)•q’t0¡øç’É‚»k;à‘)'Ù¯’¶ƒÒðQ…iY]¨FFy¢7^ð,Í¢Ii¯mFùÄžª/~“V3!Äxíš¼J@zª:% Åóçû®=…ÇySÍZ΂cÜØx0:18¹Ã(O¡¬ƒŽ¦€ÛNä©pÂN…’0&†¢jZ5˜Š‡LÂ'vÃ9­³’ÞyE¤ÐVõÚâ îÂÚYø¬Þ½øp¡~Î^g$qŸh8ÍšC?žöJö„¸cà^vqm{µÞÏG¢¦;6‡2ÀÉTô’j{;SprÉ#.åPQ°OººâA,¹2ud5(åÊV÷4Y*ð²[GX%­™äŠb#ÒT¤K25Ô²dFô®l%Éê¡sƒ†«úW¼Æ"’R7¦95åkD¾5F¡äa+‹àªj3’-p:¡»41ZíQ3úv¼¤÷DmY§½s²×±ÞeðæGTC°þ› -ëã›ÞÇ Ù†˜›nÓÖ¡ª>aºŠôûÚ‚=*»9q]£éu$U …j;‘ÙƒÎó˜ù–ã“îxó@Õ_(wE|Ež/áÄ@~þ‚óÏúœs¶’kô` ÙgB•¡žÌ… ÕTµ¢{r_0¸=–ŒêQV¥ù‡¨+E=±—7tò4zn]ªxãz×ék êö`îÂiÜjõäÖYú¦¦1]ØÀ½À6LîXµA›}uì/L°X‡êYVAÞê-Àõ…6;QSn`èÂdTÝj3ÿ¶¢¨ÕS&W'–ëD¶1~È»¹™þ÷³_õþÂKi¦Á=aâ;$û¼«Òìc¶úØZ¹¾!ÙˆZ^ýEÇcxäØ«—òJ‡Á:ÿ’á/˜øL`·Ü l{¹ªŽ`—’†2þT_V E„$è0k(›CŠ¯Ñ5¦*åÍÁ·SS~65¯~d,T×&³l[~oDU¥:n0{Y5úp 5¿ë:pÞ±\õY{øÙسùà³1œˆXÿÙø+½§?ŸLº >¬.]=¼ÄíjnÅÆGG6ã‘É|Öÿ)’@­½ãX nµl_ýÁ8[`3çÁPŒ „Ž²Ã? -[P Ýô‡ãAžÑÏ5ãÌœŒšfsÀ…䚬Ÿ#4Oò§ÃSþ±ø=ªÆ´wR·þGj`7Ûb¡ü9'Jü?l'…ñ׬ÚÏ„W’¶+¯šy:qŠ&¢!Mý¯$zghð§I”6½20¢þ•Æʤx1O3³”H^þrüõÀè'Žã ~¯îêM±y«0¶‚=î®®pÏžŽ:xÓ&Û„BX{º!ÔÀŠt¹gâk\>*Ñx¬«š8¿P§[ñû!¯²V‚uÕ¶º´Kú.@jزA€ˆ¶Î6Ý€'nèÚŸÉ«‚!Úà.=Þ·Ÿü°ë {Y~#-ÔJY·£mJõ“XX-l»-ÝØ+ãXŸ½CôlWþ‹»–çÆó1(B|ü¶h± -endstream -endobj -682 0 obj -<< -/Type /Page -/Contents 683 0 R -/Resources 681 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 636 0 R -/Annots [ 679 0 R ] ->> -endobj -679 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.215 597.21 214.894 605.921] -/A << /S /GoTo /D (group__bsec__interface_gacf6a5816306dfc1e3c0b26a6d459fc71) >> ->> -endobj -684 0 obj -<< -/D [682 0 R /XYZ -13.423 915.745 null] ->> -endobj -685 0 obj -<< -/D [682 0 R /XYZ 29.788 351.113 null] ->> -endobj -81 0 obj -<< -/D [682 0 R /XYZ 29.788 342.087 null] ->> -endobj -681 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F120 619 0 R /F44 228 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -688 0 obj -<< -/Length 2471 -/Filter /FlateDecode ->> -stream -xÚ­]sÜ6îÝ¿Bë6âŠÔw{÷à$nšNÒslg:7IgG+q×¼ÓJŠ´Šë´÷ß H­¤¬ã8w3¶‚ €ø"½¼¾¼àζ;ñœ­ã9/N`àpø~Œç„iÈRÎ$,B§•ÎæäÍgÄKàÂBd3] -…é|ÕÒîyØ‹;¸ ÿÆa‚”;ùn&a0çtßײ ü˜q?rℳ dŠº0'–&(QäyÿæTνL?œ0ßóòšéAX¾ÜùÎóD½_؇ոO-×êr%ÁH-2—ç 'ea¤ñƒZw¹+yœØä…>ézïÑ5xH×Ã’Ñ&o­8™ø>ãi„ëŸ^Ÿ,§ä>Kƒ8v®7ŽHYœ$NœÒy_λÅÓºËoN]'‹+Yuu»—ùéï׿œœ_”áA¨=ÀÓoª+ÃT×bXÕItTŸi>S›G -©½êÛÁ¾k #kÔYÒj:Ùµ›C@ýp4wͳ ¤~H/œ[Ït²ê›= B°Ë[Õ w t%ây<¼ÓÞ¹\šàÏv& »l×”ZzA°ªº˜E{Ýï›~o"zS›´0¤6kêIy—‡0n•üRëèبR>^æ6r“ÁaâÍ‚-*rLŽ`dÀ¢ßíîVE ÂÈæëÄà@5ÈaVÒ ’²è¦)~mÄÁÍd1³ZÓÖM¬C¦Ï… ÞÌ’¾IõŒFuCQq<µ¨ªé»´½MÐäÿš­Î}O üÐg³2õI¶õ“ññ‰‹©”:›¾üõâíõêúüõÅ9dÔ·—çób¡¶•åd+ΪÀH-slƒõð´Ôj,‘© ÞFÀÉäßÌd7#úþ{<ù?¿Þ²ŒËºn0b?žœæÿYASle^·…5V6趠V<œ¸(ñtZìÇËyhF-£oHÙß梗†ÙÿÅMç³0&ÖúÏ[*%Šº£JlG•RGõ¦Wù¿©X¿µ½0 /¨!Ö–nˆB‹|p¡…<˜ãžÞ ŒësæGfÃ7¸yDº qŒ]4?f­ÊÀôó,Πĸõ™+b¡¨|„ëeT - -&Zœõà˦•]‡ÀM¿S@vgØB{ؤù’&øÒ?Ú}Ö ^Ì’0¦–èçOÐLñhñç—`PB뙧Є۬3豈@9ð rx-1G«3ýó4åШР¯û² ð½ç‰ÊÀÚ¯…ü›i‰ ‘”¡¥‹¨I|¸ôSp./!Ý[‰½®ñè ÙvO“(gêr?8k‹^U5‚¸~×Y§òUŽ­œ'¶&æÀZ+0‡¶”}Ù£çÞÌ=rçgu•—z »x ±çþA§@€NîíO:iÏ -wh`òLw´D$¹c¨»zý5´`„;¢ÁB¯gL;,ih/¦S@ʧ¯Ï£Ä#äÙÅËaYMÓ´)L‘ýhÐ@ê…̱3bdfû[Y–f•ÁX1Œ}[ûî4 3¨ª¨ëÖÍTëbƒÑûx[‰?Ž2ƒ!µo1ÄZ,è‘XüvÊ“"áÐ9t5ª TWïÌ$ŠBŸÈuØV&µ£"Bþ¡º=]A=¸7Ƚ‘HU_áË"õ™ -­0–)“óÈzÉ"¿Éª­ñnÚï”ÃGíp#µ‹LúJìIf zÚLŽ Q¿÷„U›Í<?Îô£ËÐü属oy»Òö›ÞЈ%¦ò¼žWE:Ù~Ä‚Ÿú|ñ~Äâ¹¾Ñâ4Øà_M€4 ~­¡ëö½î tT -/«Èã/âø¼Î{J™š ß­eûé Av}† —"Ë=£¹úÍ=ûÕóW·o®Ç„ЪªÕ â£×ÔÉb°…Y@/œãÄPðÑ "TjoxA|äéÙ7ÃéC˜„3Â÷7LT(ïss5úLbèGБ„ÇS׋ þ'Oý­ö¾Ï|;î,½I;'÷,sîÝ]1MB°.‡`* <=†v³#}K'c¿#"æΉ;›ug‹ÝÑ*$·dÃü1B÷À>=_?eƒªyV+­ÛðžÏYš‚» æ%úe›JüÃùÎù6«;aç%Ý*ò8¿¢¼ÉÐjºíƒùpØ|Ì?lBÚ ÊÀ ýTΘÊ5þâæˆ(©~çø°Äµj{ƒ76YH¿Â%¦êÐÄ6k ¾q˜UwĺP]SwY©¤PUš²V{< ª•Ðy}>  ¦aïYm °€ÝÖ˜»¢ %Èã|’mlÍNLÍNtG6©4p‡¨L± Þh¨=‡ò¨»®Ö./z 3léñ…šÞć}±3 -E ÿ1ÍV˜›Ÿ&ðÿ›Áÿ -endstream -endobj -687 0 obj -<< -/Type /Page -/Contents 688 0 R -/Resources 686 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 636 0 R -/Annots [ 680 0 R ] ->> -endobj -680 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [112.478 710.784 198.157 719.495] -/A << /S /GoTo /D (group__bsec__interface_gacf6a5816306dfc1e3c0b26a6d459fc71) >> ->> -endobj -689 0 obj -<< -/D [687 0 R /XYZ -13.423 915.745 null] ->> -endobj -690 0 obj -<< -/D [687 0 R /XYZ 29.788 690.281 null] ->> -endobj -85 0 obj -<< -/D [687 0 R /XYZ 29.788 682.267 null] ->> -endobj -691 0 obj -<< -/D [687 0 R /XYZ 29.788 482.42 null] ->> -endobj -89 0 obj -<< -/D [687 0 R /XYZ 29.788 474.406 null] ->> -endobj -692 0 obj -<< -/D [687 0 R /XYZ 337.74 394.308 null] ->> -endobj -93 0 obj -<< -/D [687 0 R /XYZ 29.788 372.272 null] ->> -endobj -686 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F120 619 0 R /F44 228 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -705 0 obj -<< -/Length 2432 -/Filter /FlateDecode ->> -stream -xÚÕYYoÛH~÷¯àË4¶Ù¯¼9ñ±l2I¬ÝyHE¶%.$RáaÅÀüø­êC<"ű“³@5û¨®«¿ª®>›}xGesâ;KÇw®Oàáðûz|'H’PêÄ‚‘HN-»“÷_M>*$@2ãe#aLWÙ=û½¨ƒËðÿ(ˆ‰H¨“m& ˆ)¥c¿–œà¡ÂùØ«¹Ûæi+çM·h²ºØ¢«ÔøÏÕ›§ •—üååÞ“šbY¦ëÆZÿsWÔVUwV¥í*mÓº¬åDíÛºº‡hˆµÕ³ÕþMïþ…ºþ9ŽÚÙ´éfkt¼M›æW+ÅLL­Mòn».2ð]³¯µZú•Ñ -žeZV°MUæÖ3šjÝ)p`Ëìþ h`²b€Œi » ÔÛ,¯äô¼f«´\Ê §YÖÕiö`¹Ù¤EiÖùß…vÇÁîWbÝ“+K›*bG -Û :Õ)ÝbS”K r«;-ÈRc^än@¢´#ËÖôcíFî®hWÚÊ‘øÿ0j¾ÓíÞkÓz)ÍŠûtÝɆœz<àHäÊ/àÓkù¿w·’†fÝ•¥a0¶ô"‹ ƒC2²Ò-¢b-ŽÜuµó¶ÀŠþÜT¹Ô-MüRã |5ŠÝÞʺ¨L¿’?1«i(FÌ [°Ôô„ÈÍÒfºC^|òd+3©©,d»“Ò®ÝUf)DL™Áé¸WùÆW.õD`82ŒS-ñÔf‰»éšvdµ´-õáM\:±Z¢dƒcéݪÐy]bŒŸ¸‚²•©û‡1W¬´¨Ò&m²DeTƨ…C&«»¬ÐèŸ vi’m]díúA÷ÞUk°œ²ó±}À²Øˆm´Ì õæ±ê—OÃÊÍa¤–mW—Úô°èáÉ( -4Šj·œƒÛºZÅR˜®ýRôl×7²E6óöåËR~iµpîD$‰|}²*Èb#*ƺøä ߬ñk"â‘ (Þ!×òÆÀ“À ‡‹›y–®MŒþw¹Î‰²¤§Ë'ãðöºªk™õióF¶«*ÿ[%€_pK…Í”ò.Kôdž™0Ñš/ ½§Ôí£/Sè§[¥éé#Û Ý!›­D7×.MÝô¾*r=TÝË4Ê«Y¬O ³8GÕ–µ3¿EÓtr²=uCá-ŠöMéDV±Ô7²¦u ÀDEö ôcÙñi2a†„Óxj&¾O(µâžœ=íð¢[@óÜ]O´8«jk­%Ìô©Ò>ÝœÈ4ˆsÅÑÐsÌfß#¥þpPÈŠø8ŽÀÙ×x2Œ ±Û ZÕÉVÖër”À•oNM×ýžîÉ3²Lsݾ¬k›4¾†¤Á°˜ÚDÖÂݽáèÞµùf9@ –cL00F˜©‚‹3×m‹ç?v* [Kµ€–»ÝçŸØ?þÊ@Œßˆ åÂtVu®ék]cšä‹n*=«és4‰ÊÜXHŒÐp!Bæž—ßB!S9b:¨oF¼/än˜… Œ,{ d½¬³ 2ö¹Ç³¯?ëbQ§õÃ\góvr*ÝCD!fûR‹Oü(ÙûŽ-¶(ï1œ~è³ Üöáô‰WR½ë(þ±Nf8ØÕî‹Y×ür~ñûíìòÝíüæíÎÿusqóöÝ¿g]oÍèÿ±˜s-KYÛj8Š-ª¼|ª[p|·ÿF!3äh2#yaaEeš¬¯³`šë>uèb> aK:0r»zhàÆ¿VÎ9¡Âú¦ßO¯A…ï ± ˆð«o2ûDšá­Ò -S›û>ŒZÍôÑ´;«“4<’8…XתTQ§é˃úònªZFW}e+&8êà sÆ?Êaô¸þi>‡õ÷}p·.ÇÀUâ@»Ü› -ïª>ËTýT.Â3[Ài:áÔý ˜{‘¶©nºÅ!Þè &økk/" T²Zuf¤À[0ÒøKS¼¨²ƒ‹™Ðm²~yêEŒÂaœ¡ö¼Wo.ÃØ÷µyO•å½ó·¾{úV↉HB[¦‡ÏÏèaBðMî0ÌŽéôY²›Á³DDÿ,ñDÚ‡ˆ^ÿ ‚¡°ä/L¥ÿ¯‡86!‹Ajìù!8ï¹Èo¥ç=häì°P?t9'G–9G÷ALÀ…v.‡KM°A½Ù/Jbƒeìï`’ifΉ7õ&‹½Á*œn§íÇMôzúÓáéú1ùŠæ[9n•lûGBHp7€­žË¨™‰Ãv¶qž§ÕýNKwx7âáÓ\ïMfŽ™¢¼iÿ -·7öh¾ö›hiöÂÀˆþW:ÃYžñ¯w˜¬$ê]â[Ö艮 ƒ'BøîõfñO=€¾™$î¹Jx¡¯.–+¬Ù¨¶A¡:kM×Me–i«Ò~¦åƒ& $ÆéZ-ÀÊ×v]mjnèØUËm]å]¶ï‚œ3/ðÊb&‰¶.Ý`MÚ˜˜–ÒÚ줽Ýا#[ïSÚ{…sÃt7ÝꚺÆÛÑ{IQæ2`Sàv+ëÖ¯•rÈ7ÓºîxµKO ÆÓd´üã­ÔÐ -endstream -endobj -704 0 obj -<< -/Type /Page -/Contents 705 0 R -/Resources 703 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 714 0 R -/Annots [ 693 0 R 694 0 R 695 0 R 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R 701 0 R ] ->> -endobj -693 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [230.326 573.642 366.315 586.145] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -694 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [376.453 554.554 459.085 567.057] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -695 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [172.115 535.465 254.748 547.969] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -696 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [279.238 397.618 386.985 410.121] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -697 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.453 313.254 231.408 325.758] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -698 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [254.018 313.254 338.183 325.758] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -699 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [214.922 208.045 319.373 220.548] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -700 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 92.765 326.998 104.995] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a17bf2f98e8c59e29a8eda42c692e5b3d) >> ->> -endobj -701 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [300.146 73.676 381.73 86.18] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -706 0 obj -<< -/D [704 0 R /XYZ -13.423 915.745 null] ->> -endobj -97 0 obj -<< -/D [704 0 R /XYZ 29.788 737.428 null] ->> -endobj -707 0 obj -<< -/D [704 0 R /XYZ 29.788 650.461 null] ->> -endobj -708 0 obj -<< -/D [704 0 R /XYZ 29.788 650.461 null] ->> -endobj -101 0 obj -<< -/D [704 0 R /XYZ 29.788 650.461 null] ->> -endobj -709 0 obj -<< -/D [704 0 R /XYZ 29.788 536.461 null] ->> -endobj -105 0 obj -<< -/D [704 0 R /XYZ 29.788 514.443 null] ->> -endobj -710 0 obj -<< -/D [704 0 R /XYZ 29.788 300.701 null] ->> -endobj -109 0 obj -<< -/D [704 0 R /XYZ 29.788 278.683 null] ->> -endobj -711 0 obj -<< -/D [704 0 R /XYZ 321.409 211.108 null] ->> -endobj -113 0 obj -<< -/D [704 0 R /XYZ 29.788 188.449 null] ->> -endobj -712 0 obj -<< -/D [704 0 R /XYZ 29.788 159.622 null] ->> -endobj -713 0 obj -<< -/D [704 0 R /XYZ 29.788 159.622 null] ->> -endobj -703 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F89 511 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -732 0 obj -<< -/Length 2170 -/Filter /FlateDecode ->> -stream -xÚíYësÛ6ÿî¿ŸnäiãI‚éôƒ«®;qãZòÝt’Œ†–™7©ð7þñ]<ø´TÛŠ}—›9m‚v±ß.ÄÑôò‚¢eq@Ðtz/ˆÂóô$C‰CJ‘ B¢ -Å’2ÍT èÁS8TZ8hø>LóþJÑN¦Ÿ0'¸iÞ¦aÚ*`:ŽÎÖd ênaïWc—Z^­—¤ØW¢£–5! …X -÷jÕ -îQV"Ô²ƒ‘ÜêÚ6wè*îÓµ%é,òë£!瘆¾¦5=8ú@I9E éGÄB(…‚Ðú{º@ïF¯²b~sè±@&qZdyÏ?L>O;ÊP! ‚M•æÿîA ü0*C·fêZO8Z¡IWÌ• -æò€I€ 'Àj‰v ]žnÓJ³€”˜Œ_[ÎÒ2^æQ™d©í8­’Elz,žî}î¥ÒÑ*DLF ŒAÀ•…âÈó–LY…Þ3?Ø*´5GK­Ð¯ã™a*À½&xš®Ñô&¶vH«õuœëv8Ê>Ú¾$ÝTeaÛ›¨(â…/3·6È-ÀÓ‰ÕlØ*¡w†ÃuÏg‹lV”ñ¦xO$?ÚSÂL G‰[r™ÇQieR£ò&JÝêµÈѼ¬¢Õnñ7Ù¦Z‡EG;£(ój^X¯>´X‹„­µÆxùr‡Ù)ƒì‹Ã€X³ƒßfLZwYC¾#pabh–€L’ÉÑö9ç{ÍWÓ…XøwÉ’eªUíÐ0Ù#C’2YÇ`ëh½qe±mtV{¹Ã›oc ¼Êª™÷Hh¢Ži@XI^Ø%jÁÜkV•·¤3סAôý6?Bà`Hòƒµ¼Îò<ž·±¿ŽË›lQ \ú$a«>>VU|>è õ`'T娃!°añjaÇ’Ôv–õä6†…ƒ}•»¡6¤Å^!-Ò°òMVÕ"^»å³4¶kGë,]Ú>'¶hƒUdln¾Éô(T¡Æ&„îQÚ ã^æøc,ÔîlL‘֥ʹTÑ©””}ïB£)( m - -Õ§ê Qí…Fõ04Ž^$8Ƈ7’?âÝòtƒ†\ʃ”6Ûò¦«ü%Q˜BmnìÇ1Ôé˜Á†Kˆ© gãÙÉÛÉt|1™ýóøÍÕøÍÙùÙt2ä/Û p2ßúö"+Šäz×I/*²ô›Ù~mt¡s§q^—‹¸Iì/ëi.äC÷\y}ØêÙ¢9#|ŽV•kÖ5vSŒ7¶º»aÛmÏ$×vålÿ`¡ž÷`¡šƒEš•ýí·ìh˜8YLzÇu\£éN{TÒPg¿\\MgÓñùÅøòxzu9æŽ=ŽäùÎôÿgŠÿFRÃ`®ÞÉ™ÄAÈ:E‡ü^‡vhϺ«ˆn·ELÐQ£;Ëš¸ö¶¡:„j®ÙŠtOà†äÑ®©à Y½É¢F8+uÔ(š¸.Â=0¸1Äýç -þgÂíÑj•ÝÞù¸ÐË’u‰¨OY>È5ýs‰{®’¢ù`qÇR>]Ùbxó÷ÆTk>mv…NâiÒ¾çË&“›'eòŽ³žDÏIãq8"˯Ò䧫󳓳éo­d !ÿ%Ä×ùãâr<™ôœ1ЂóóÍ»ãôxªœM¦o/[]h0ô gÿê¼…€Ï»ЋN¸p,Sñw\õµû®¸£à°†÷˜À”Q}°ƒJ;°«Úâo-ÞO®.Þœ½>žŽMñíÖï_[·>g ÿ76l-!8ì³ý‡1Öþ˧»?Ð×0MÚT,>ðϳE¢7ô¹¹8 -ßgqþYo=!§£?õƒN¢2²ÃEuýo(sì‹F©~Îoìþ…ßè6º§r ÀNæ±åñ§åx’Í«uœÖÌéúå¡0 -¦ê]Î{u>öñ:W4ž¹ñŽ!D™È#PSs]Cj}:b;4z÷SB€_9‚ÒGØÛ³î프àio§,Is;õHÖ÷Q­ý% ‚£ôŽ®´¼`ÔíNî” =âÃ1~X“ô¯µç h€ ¢˜oï;ÑÁ2´sÇ t‹49üS¦?À`m·úbÅx¦~v&¹æxƒQo@ìu¨ôôzZ3¾m¢×òéûìo´j¤ÖcbtkîŠ)C€ÃD™[Sêfê¿n{¾FûYµY‰Cºfú«\€i º7´-šÜ7Å ©¹ŒmœÝ›£/ŠÛE¬620bSÔå9¼x-`¶ˆšëUª/'{7ÅœËÎM1¼ŠÑéúú'; ± ·¤bt¼ZÙ¾þ³¹õ -endstream -endobj -731 0 obj -<< -/Type /Page -/Contents 732 0 R -/Resources 730 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 714 0 R -/Annots [ 702 0 R 717 0 R 718 0 R 719 0 R 720 0 R 721 0 R 734 0 R 722 0 R 723 0 R 724 0 R 725 0 R 726 0 R 727 0 R 728 0 R ] ->> -endobj -702 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.997 725.921 279.307 738.424] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -717 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [78.811 651.573 135.199 660.285] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -718 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [288.613 609.527 369.633 622.03] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -719 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.861 595.978 303.849 608.481] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -720 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [287.251 576.977 368.271 589.481] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -721 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [488.579 576.977 567.119 589.481] -/A << /S /GoTo /D (group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) >> ->> -endobj -734 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [41.152 563.428 90.435 574.873] -/A << /S /GoTo /D (group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) >> ->> -endobj -722 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.073 544.428 409.98 556.931] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -723 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 458.123 322.766 470.354] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a81fd5b4436be253e0ef3ebdf51b3d193) >> ->> -endobj -724 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [316.431 439.123 399.063 451.626] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -725 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.207 402.633 227.254 411.345] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a3eb936f08a8f6f01d4c683a6ba0c9d3a) >> ->> -endobj -726 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [78.811 364.775 135.199 373.487] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -727 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [324.603 322.729 408.848 335.232] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -728 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 60.127 345.784 72.358] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a5946f4a20c9ba0cd83fed96ce3103c06) >> ->> -endobj -733 0 obj -<< -/D [731 0 R /XYZ -13.423 915.745 null] ->> -endobj -735 0 obj -<< -/D [731 0 R /XYZ 29.788 545.424 null] ->> -endobj -736 0 obj -<< -/D [731 0 R /XYZ 29.788 525.046 null] ->> -endobj -737 0 obj -<< -/D [731 0 R /XYZ 29.788 149.495 null] ->> -endobj -738 0 obj -<< -/D [731 0 R /XYZ 29.788 129.117 null] ->> -endobj -730 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F89 511 0 R /F120 619 0 R /F33 531 0 R /F30 532 0 R /F44 228 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -759 0 obj -<< -/Length 1954 -/Filter /FlateDecode ->> -stream -xÚíZYo9~÷¯àÓBLÓ<ûÈbœXöz°q<’‚Y „¶ÄH½Pw+}$`~ü>#Å£$»“Á°C6b}dU}¤+ç‹ÙE›òŒ  "èú >…ò-´$#‰#JQ(„D…BoÎ~ùhð9HÁR‹N“ û2Ï:oÖìÖ¢HOÓÿ2Ä"¢h•ŽÀLŠ±¤ce#NðSî£ ¤XR¦…j=èc!ŽB­T|Ÿ ¦eÿŠ2tTèÛ3Ì iZv¯j„vLÃùMÊÑeªWöaÇ`y .I±Š,»]„0a)Â(xU§¸Gì¡VÔˆäkW=‚U<„µ›Ò[ä—“ƒ’!ç˜F¾žÿdqv~FI9ŽD ÅÄ"„! -"{Þ‹5z9y’—«í#ád®²2/*µzôzñóÙtÑC…4„ìi¨å¿|MÐ:F6•¡÷fhª‡ƒíмsFecyÀ$˜ '˜Õëš]Â@¥Y@G æÓ§ÃMV©MWIžÙ†ë:Y+èT{z°ü,HçWa„(l7<`W>!GžÏ°d¡ôŠùÁA¥ívtÓ)ÃÆÑ̬Ëz¿KVq¥,ô$Ûו­¾"’ì·JèÝAÚÖÒ¸¼.m%.Üô}\–jmëUî´$" ”~D,Öq€D/ͬûR­–ë|YVj_jÌÒ}X 4Ö ÆÁB2w S¼y|?eqƒ_ÏÓ_nž\¾$¯±Å¶L€dròÓ©úëIÚ¬–7·w/ËÅôÙÝtv±x1›Žü½aá‹ôH6Y¼k”0“ƒ)r<¥JR{§{7¡*?±ýÓ°Êôø+'ŸVý!¬nli§ ÷ñhUÕålÄÀhÇøµ[M~´K4Š¹Ï¼®z_Ë–®A¾Ñvì¿žu`1L POó¢P«.„¥ªÚæërä_%ú4nÇ¿$ìLã†ANŒ8ÿË8c—ßæõÎ-uïÂ\%ok…î8tJ<ÄïB4Ç@sXÀIâ¼gyù|¾˜ÞÍ—·ÏŸ¿X€+ÍgSð¢Û‹'ÿœŽåËÑ1°.ZÔŠ¾ËË2¹ß9 —yö_=~ö%Ç­2Uh·×Ê®U¹*’½6Þǧ%òÔüê\lŽù³\jas±f˜Š‰P·S§ gž§úw\ôÊÿ8•ÿ‘-ü†Hü›úCÿfð.÷ƒ`Àâï{ï{oÐlÈâÐaY*Yî**ËëÍÖÖ[J‡zÒˆêQ:´ñ€7”5xŸÒá«¥t­¨¥ô‡œ‰Sý ´#ÿÿ.¾-mñm±û©¼þÓ?“Ó©Oq¤{¿³zÕ»òWãuÿ ¯/æ7·‹ÙÅåÍÕ0Óó«ÙÅíõ·ýTçß*¿?¼•Ý†14,ÌnhŸ}½?¼ëüEk¨m°ÛÝ_ŸåëDûÓÊäÀÅ„ïÙ–ªx§=,âtò».Øä2®bÛ]Ö÷ÿ†g?´kërµ³Òu9yŸ@Ä«Ý`þd¥¬Œß­ÄË|U§*k÷üÈ …^<’râ=y6õCâõržIkx·„„ÆËG0ãÒÐx qØB‰!àx9b ›vê§uÀS{iKÒ¦uN<Â&‘Óí¿„N©oWf}›¾Ð™‹C;ÿg„Fñ=Žüë4]ƒžCl ¢f¾M¢³#ÓÐÑu´=F`Bï‘ž? ”ó¬÷­ù‚˜ÇC8™¦ì rÕ:óF½Þh²×›¥‡7ÃÚþC½Nþ¸{<(~«¡‘ÇÜ`k“¬š -ÀÜt¼5éFêFêß~}•¢ÏÛÕv%NA+a.m4û©ÍΚÜ7ÄXS›Ål{0FgX»E,š ôØŸ õGyÎ^¼Î`¨™¼$ÕY½AŠ•sÙK±Â§˜\§÷ÿ°Ú¶1P“‹ÝζÉf«o¦î¢ÜƸáaPæMÇ&.ì%]ÆÙ+zÀí½ŒwfB4Q¿íwyR™àáš -µ/òu½j›€a×I¢ÜQ ¼Zº9qiƒ  ¡tmÞ«#–¸l²íƒÁVÔ;çtÕ^m`ìÞ¦,m¼5/‡6?­k­@ÃW í^ÕGµfsð'¹Z2aþ·pÑp1ž _`ÿ ±e -endstream -endobj -758 0 obj -<< -/Type /Page -/Contents 759 0 R -/Resources 757 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 714 0 R -/Annots [ 729 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 763 0 R 751 0 R 752 0 R 753 0 R 754 0 R 766 0 R 755 0 R ] ->> -endobj -729 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [287.915 725.921 370.547 738.424] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -743 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.207 689.863 227.254 698.574] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a3eb936f08a8f6f01d4c683a6ba0c9d3a) >> ->> -endobj -744 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.207 661.47 227.254 670.181] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a3eb936f08a8f6f01d4c683a6ba0c9d3a) >> ->> -endobj -745 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [78.811 623.611 135.199 632.323] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -746 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [243.057 581.997 325.689 594.5] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -747 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 496.745 389.42 508.976] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ab87b5a5abeadc975488850bece3dbf84) >> ->> -endobj -748 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [198.788 464.374 281.42 476.877] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -749 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [78.811 418.852 135.199 427.563] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -750 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [526.35 377.237 567.119 389.74] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -763 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [41.152 363.688 119.868 375.918] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -751 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 278.436 351.238 290.667] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a0a7f6e18d053c4af5f26f3852ef6ae14) >> ->> -endobj -752 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [253.355 246.065 335.987 258.568] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -753 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.442 200.542 126.831 209.254] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -754 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [526.35 158.928 567.119 171.431] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -766 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [41.152 145.378 119.868 157.609] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -755 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 60.127 402.74 72.358] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a6d707845ea3200a1a45726c2700333e5) >> ->> -endobj -760 0 obj -<< -/D [758 0 R /XYZ -13.423 915.745 null] ->> -endobj -761 0 obj -<< -/D [758 0 R /XYZ 29.788 582.993 null] ->> -endobj -762 0 obj -<< -/D [758 0 R /XYZ 29.788 563.047 null] ->> -endobj -764 0 obj -<< -/D [758 0 R /XYZ 29.788 364.684 null] ->> -endobj -765 0 obj -<< -/D [758 0 R /XYZ 29.788 344.738 null] ->> -endobj -767 0 obj -<< -/D [758 0 R /XYZ 29.788 146.375 null] ->> -endobj -768 0 obj -<< -/D [758 0 R /XYZ 29.788 126.429 null] ->> -endobj -757 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F89 511 0 R /F120 619 0 R /F44 228 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -789 0 obj -<< -/Length 1983 -/Filter /FlateDecode ->> -stream -xÚíZ[oÛÆ~÷¯Ø§BÂõ^ÉeŠóàÄ®ë"i][9yH¦‰…D*¼ØmÑßÙ ¯‘ËqÑœIÈÝ™™ùÄÉñìê’¢eyDÐt~Dáùf’¡Ä!¥H †!Q‘ ÷G¿~D| R°Ôb†l’a_†c®ãfÏn/Š4›þ7 -‹¢x3R3)Æ’ö=q‚˜rŠbI™ªô`)*­¼ø>LË~2´Wè‡#Ì iZvïÕí 0ÇŽNsPu¿²Ÿ7cŸY^c—¤ØW¢g–u! …X -ŸµªSÜ£ ¼D¨oDrkk÷ºÇVñ9[;–Þ&¿l8(©8Ç4ô5ÿ³ÙÑñ””ãPš½G,ÄR(íyÏèÍäY^Æ«©Ç5¹N²2/ª$ž¾›ýtt6ëC…4¨|ª´ü7ïZÀâOˆ€Sº3¤M:p´F×}0gT* å“X€žVK´oéê|— Tú˜tdÄõÙskÃEV%Ë"ªÒ<³çuºHŒA‡ÆÓgŸ2éø" -.#pÁˆ+ Å‘ç3,™²½e~°Si뎎bBDsŸ¦Ž×\^fô¼.Š$«´/‚I•n’²Š6[;Ìß»éUb_Òl[W¥õÛ6*Ëdár§ Ø!ÀÓ‰µt<&¢7†ë¦Lâù"Ÿ—U²-ßIà/åÓÒnSF§HTŽ4ÛÉmš×n:ÏÜtYå…URMÞçňÉȃý>òÙÈ_TbÁ¥õ—uÖlúh0¤ª.Òžçàϸ ¯MR­òEùtxXÄíÌ £5±\úÈç홫É[È~Éڹ̀j<¦PVEWu‘ŒãA=(Ô}ãv^åu£âÛ¾ÎÒu‚ä`¸@”âPJæ®’9/®0%î¼8æ˜M=ÈÑ“³¢È gÜU–e=7L; ëí"ªÀgõMéVõNe‡Z Ž˜AïÀÔª óÔül~ýjþúê—ŸÏOOf'W'³³±Ur‡<+í2/ËôfíœR$Q™gÿhð±/ ¾ó$KŠhm•]$­?Ÿ>\È{ùîÑSswÿ¿èþwJárUÝ8£4¥ÖcT´ç 1×Ã…å]Z¹Ê9.¸Æë4[:jSG¸J›ž–Ž,¯Üx½Îï’Å;JðOW‰Mu£ã>Ã˧{¬¤ P(Ò†I€¥sN«ÿüÖ;wv¾Žçq^gÕ;lìIæÖÉää?öA¾o” -±ðÅ…ÛQºhDsšÉÄÜ/¯f—¯fó«“×óó“ëQš T•VUÈ·•®UÞw_"o®Ó^¿<1š1 ÉÐx2›‚Çì¯×S¨¬Kˤª îšåffl]:M~¿«èzÊ…ŠÂõ©ü×ªé¡ ÞÔ0!`_‹f¦t*>IJžè*- ÒÌ>«†|ï 8i½â öøj‡_à:¨´9W‡w&¼…räNp¸ÜxeU6!…m ”ÒXئ±*„ö™«Êaè4c¤³˜".mN¥?1é+pî—ßöm Í4±i§ÌqÀóǤ¨þí–Dên7ËQÞI -È…Œ¹ÈX§]&O³hY9‡B§*Ò5tùw¡‹\»€È>ac,r}òòòÅ™.¦/.^^Ì®¿Á‘ƒàÈ'Ý÷"ö¯"’¬‰ìØæð}eˆ/øÃð `È]Uû«S%UÜ‚ŒCw}Th±ÅèÀ‡_´ÿ3?Ôw@ Ëÿ-N¡aÑÿÿ -¨âØç_!´}hÁÇÐâôÕå‹‹çPÏïù™£ùlò Y|Ò{_+¬8­ávÄ퇉ۃFµ*òz¹zð÷ÅCòþh\g¦FÜ¥`ÁC††ãêóW×1З5‡Å|(Wv_æ‹T'¸Ø4>ÀÅPÁ³eRÜjdžœNþÒ69ªÈ.ƒ‹~3¸M ó›g¼Š²e¢ß¥I¯yí²¼JãÄÊøËJ<Íãzcz † ÞÜ$ÅÓ©0 -!<›J9ñž½<óñzMÏôc¼“Ÿ QžýÊNà7×(BÛkÌ»#oБ‚ßàBpýyCØ~Y¿%–tý(¤íGx„Mªó¿„E8(ݵ.PNuÀïÒØEdµÐ#>Ô™/ -'°¿±žC¾¥TFÌ|ÛáDG{ØÐÞ}t<†BwH³ÃÊàR¬ýÖŒ(V\ÁÉ4Ï‘{Ñ‘7ZõFÌ^K“7díú.B¯“?^óů´i¤±ãÚØÖv‡) 7†‰2}Rê(õßþ{¼Aój»§ •0¿`h ú=Ù.š#1ÑÔ¶_ÛÃÐèÖp·‰µ¦5VìŸ õ©</^0;T Mö§º9è s.{½aŠÉùææG» c“¤br²^Û¹"]®tɼ»,ôD£*ýºÌ›…eT, ”ÒÃ(ûÊ^¤å6/£µaÌôûv§•InªH¶E¾¨ãvJM’Eª#8QéMÝã‰J×Òƒ£¥tmî’µ«PQ9ÆT®H%·®‡ÚõÌ¢­­t6ßöš}QkšÂÚn º&“uþ$’L˜ÿæA–ÂåxÆ,Dv -endstream -endobj -788 0 obj -<< -/Type /Page -/Contents 789 0 R -/Resources 787 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 714 0 R -/Annots [ 756 0 R 773 0 R 774 0 R 775 0 R 776 0 R 777 0 R 778 0 R 779 0 R 780 0 R 781 0 R 782 0 R 783 0 R 784 0 R 785 0 R ] ->> -endobj -756 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [247.454 725.921 330.409 738.424] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -773 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [281.871 675.347 364.504 687.85] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -774 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 564.331 316.068 576.562] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a465d9fc420b12cfe3d24e937c5e5f110) >> ->> -endobj -775 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.21 501.049 373.705 509.76] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea64d14f069c838de2d2c1f3f436ef6108) >> ->> -endobj -776 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [78.811 491.584 181.227 500.295] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -777 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [399.12 441.257 532.563 453.76] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -778 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [101.174 416.144 126.817 426.389] -/A << /S /GoTo /D (index_intguideLibraryOutputs) >> ->> -endobj -779 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 330.741 323.366 342.972] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858aa5de81322b446f028934aa30c4826610) >> ->> -endobj -780 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.21 267.459 373.705 276.17] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea64d14f069c838de2d2c1f3f436ef6108) >> ->> -endobj -781 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [74.626 257.994 177.042 266.706] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -782 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [399.12 207.667 532.563 220.17] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -783 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [101.174 182.554 126.817 192.799] -/A << /S /GoTo /D (index_intguideLibraryOutputs) >> ->> -endobj -784 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 97.151 305.78 109.382] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a178d85d77cf448057897e9b0e0932e33) >> ->> -endobj -785 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [273.373 78.639 409.362 91.143] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -790 0 obj -<< -/D [788 0 R /XYZ -13.423 915.745 null] ->> -endobj -791 0 obj -<< -/D [788 0 R /XYZ 29.788 676.343 null] ->> -endobj -117 0 obj -<< -/D [788 0 R /XYZ 29.788 657.151 null] ->> -endobj -792 0 obj -<< -/D [788 0 R /XYZ 29.788 629.181 null] ->> -endobj -793 0 obj -<< -/D [788 0 R /XYZ 29.788 629.181 null] ->> -endobj -794 0 obj -<< -/D [788 0 R /XYZ 29.788 417.14 null] ->> -endobj -795 0 obj -<< -/D [788 0 R /XYZ 29.788 397.948 null] ->> -endobj -796 0 obj -<< -/D [788 0 R /XYZ 29.788 183.55 null] ->> -endobj -797 0 obj -<< -/D [788 0 R /XYZ 29.788 164.358 null] ->> -endobj -787 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F89 511 0 R /F44 228 0 R /F120 619 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -817 0 obj -<< -/Length 2068 -/Filter /FlateDecode ->> -stream -xÚíZYoÛ¸~ϯàÓÀÁT I‘’ØÁ<¸‰›fФÛ™ma(¶bk`K®–äöb~ü.²–Úiœt.Ú‹iHŠäáٿðGãá%Eóü€ 9"èôˆBû¾$¤À’Rp†}.P¡›ƒ_?Y|T°PdÚÛÞÝ]GÕ™õY©mê·/Ì%EÓU‡ÌïRÚÕVä¸ëcêzÈ(”)¢ŠAæX€e ˜ƒŽç¹œ)Ú¿£í$úá»ÄjŠv£«‰ÖèGg+¤Àênf?/Æ.±œJ.A±ð†XF]„0$±àô?+U͸Ch‰PCzD¸FÖº»CVþ9Yë-C~Ý[p`2p]L¥§ö¿½§¤.–Ü÷Ñø1‰ý @¾4öÏÐÛÞ‹4Ÿ.æ½Q”äiVDÓÃ÷ã_ã†0” íá~ A§¢ÿö=A3˜üP*CwzéJ-\´D£¦ ØeT°Öõ™×Àø·š£]SÃÓm2PáaæÓŽ£Á±‘á,)¢yqš˜§e<‹´@ûúÓCÛ£—”Adbéƒá€C‡RŽ)s‘#$æ¾e1‹>”Q^D³Émœe¸œäZÝùÛöx2Mˤxópµ^F%:t½ŸMCRÂ([qO<’¸ųŠ´Ñhžûć֓Äئû Œ‚ÞêMJç“7WãË«ñdØÿ}rÚµÔ lV‚ÐürÃï6®~üÑJV¯ÿ¦êø7 º¶•ó",Êü ç^çÑtR®g ˜I^^çÓ,^ëHéþŽ²S/Ï4gL`J¼–&“É={ôùj>Î`Ú*1Š"NæV¤g? -ÛVGÆz&@Æ!Òäzî#*qz†‘ã4Ë¢iVQ±HgùóvxTB:zÈæñ -‘}«‚wÌó·æš.ÛâU0Ì0åò\•h¼BãEdxo¸›¾ðŠ–v[ùŠjñNý[ZEVN‹2³«×ažGš”ìé¾þ¤(ìò'å?Êb¿2L,ÒØbJÚÑXÔó:®-Ëeƒ„¸EÈð–GP†ü•cß5vq±‹æàg„˜èLFW“³‹ßú¯ÏNFýóË׃a<è[3(,¸µõešçñõr£ú0O“¯ËÇ´ˆÙu%Q. ³³hcªçûÚÝåâÁü²z¨ ûteÔÑ¥ò‹µ¡ ÕKovE–Úðj†hÞŽÉ$-Lç..Ÿêm¸¬"z¯âWÙ¾)ÛÏŸï­]p¨}ý/ —„|sµFÛ¿VÀOL;ýdÀ„ Þ·‚˜Ð :Á©Àk!fàöZî¬>Ô˜ ŠÐÕòû0SQk`& 7˜©Hì™°koÌTLìÄLèIÑÑ -a˜øV+«°0·;©‘{“†d+ýÉMú“€JgIUܤYµ1TY- 6ç -¯‡ü*¥Ê^¸\¦wÕÎOPbjç4ŸLf”½WQVü·sZV¬ÛÓÌŽüµƒîäZ˸ÎÛu"6dö-xŠP~'ø[Žˆn9r -øyüæêb<øãx0Pû‡’õþ|PYâ~/KîפÏ;šüZË“A’–óE•‰WiöÑzoÞ©-T¬MÃwCBÒí"­núrXR-\/>æñ´]¿X„Ehz7YºúÜ z_¦ôñšˆºûŠi+ò½Xø¿¾]«ZÁm#•Ë -îs…n5Ê“G¡½h«²Ô.E_—=an’ €¡´•m-*Â|Ç{Qt«ó\ó/Þá°b“oõE°ºÆɬT Tµ -p»Ž²Â^Nrð½uš`\ÿïÊ¡€´9ž¹­-àÿ2`Íš -endstream -endobj -816 0 obj -<< -/Type /Page -/Contents 817 0 R -/Resources 815 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 714 0 R -/Annots [ 786 0 R 801 0 R 802 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R ] ->> -endobj -786 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.21 720.248 373.705 728.96] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea64d14f069c838de2d2c1f3f436ef6108) >> ->> -endobj -801 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.21 691.855 373.705 700.566] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea64d14f069c838de2d2c1f3f436ef6108) >> ->> -endobj -802 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [78.811 682.39 181.227 691.101] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -803 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [394.944 632.155 531.737 644.659] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -804 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 535.416 330.642 547.646] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a2175fa185bbcaafb28b5c73ca8ff2394) >> ->> -endobj -805 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.21 472.264 373.705 480.976] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea64d14f069c838de2d2c1f3f436ef6108) >> ->> -endobj -806 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [78.811 462.8 181.227 471.511] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -807 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [399.12 412.565 532.563 425.068] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -808 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [101.174 387.452 126.817 397.697] -/A << /S /GoTo /D (index_intguideLibraryOutputs) >> ->> -endobj -809 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 302.276 372.249 314.507] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a1ba36727b09433f1ae925646864d8a61) >> ->> -endobj -810 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [424.965 283.802 560.954 296.305] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -811 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [78.811 239.125 181.227 247.836] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -812 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [226 188.89 359.711 201.393] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -813 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 92.15 360.129 104.381] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858aa1a59666f0af5463087f528473d4ff8c) >> ->> -endobj -814 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [257.093 73.676 390.669 86.18] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -818 0 obj -<< -/D [816 0 R /XYZ -13.423 915.745 null] ->> -endobj -819 0 obj -<< -/D [816 0 R /XYZ 29.788 619.603 null] ->> -endobj -820 0 obj -<< -/D [816 0 R /XYZ 29.788 600.503 null] ->> -endobj -821 0 obj -<< -/D [816 0 R /XYZ 29.788 388.448 null] ->> -endobj -822 0 obj -<< -/D [816 0 R /XYZ 29.788 369.349 null] ->> -endobj -823 0 obj -<< -/D [816 0 R /XYZ 29.788 176.337 null] ->> -endobj -824 0 obj -<< -/D [816 0 R /XYZ 29.788 157.238 null] ->> -endobj -815 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F120 619 0 R /F89 511 0 R /F44 228 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -840 0 obj -<< -/Length 2008 -/Filter /FlateDecode ->> -stream -xÚíYYoÛH~÷¯è§… „í>yd°ÎØãx&q2¶)Xj1Ãn’a_Fã^G혛±(ÒÝôÿ@†XD%«‘˜I1–´+mÅ `Ê}„KÊ´P­ u,ÄQ¨•ƒŒïsÁ´ìw(G;…~>Àœp¦e÷²Fè€)8:_qtR€ª»•}Æ.X^‹KR쇢Ëš‹†",E¢Ú(îQV"ÔŠƒ‘ÜbÝdw`aÝté òûÞÀAÉsL#_÷1=8úœ’r‰ @ÓOˆE8CDv¾§)z?yQTÉâÐcA8¹RyU”µJ?N=8öÀP!‡a6 µü÷ J¡òWDÀ¨ Ý™¦+Ýtàh‰®ú0gT†Ð–L‚k`z‚[ÍÑ®ªË³m¨ô1 èÄÕéÏÃy^«y×Y‘Û‚³&K•´¯?íJ­Fš@ ‚Fà>!GžÏ ¥Uéç¢,U²Ñc¥êE‘Vχª<É*G¿„Q_˜wF0 ÜȘlÆ•n®MqùvÈpk‚}?†Mlm5õFaÓ–¨ìÔT-뙈5³4b5;IšÞì$Y¨Må:-â[×z·á´… ŸJQᘢ^žŸ½|yz<=½|sqr}y<=sñ(–b³Ôãø=ÕVºØZ•Y‘îX—ûÄÔy¿[Ûº¸SeùH@ÚôwL­üØ&IŠ¨ZµWM©V@=ÿ?ÄÑí}äªg®„ù¸H—ýHz‘þN;éõÅooÞ]¼¹ž¾½†5uzúw˜?>ÌaÁï5Æ/‡ñz›•õfeé-BY: â¼pQ}/³ÿæúo¸˜ 0Ôì<.šÕ*ÎìÞŠ3¾® -ôÊ~¬ãªÒÒùºØÛK@öM¥’Y³N!bgUsÓ¹Ü" üèèŒaFÊÜèsˆ§Ú*ËaE4aêLœlÔÎ;\Üá2{Cï;3$!¢ÈÚ8[«æLb4ìyD5¢zK¾£Ø<Åóç;¦Š2‚¤iá =«vRgnô™ôýð{–M^ĆÕÌî•%““ztŸÐŸZµ",ü§J·_ÚûlPB:á4Ä‹¬ô|¶Sþ ?¨æ¶`U×M×nO'Óv9Ùø«gv§žÏŒfLbJü徂í™UÚmiÓÖ„•ªkX¬ÚêX ÛZhûi›z< 4 pŠgAÇ„øÃð¢Àf‚Óþy¯‹§YK®ajyïòb¼µºï[FV]6@홢%-DO --a_Ò2J,Š lì/¡&J_Å gþ½?Ù¦±sLFhä¦ì¿r'ÀߢçpÒ£‚½óíÃ:ØÑ íGûcJ°”î ”AdÝÚ/ŠCÂÌ´i¯‘Ë&èÀÕz£Î^¯—nÞ6ëê·5ô6òÇÕãþCñ ´8® ¶îÑŽâ(wc˜„æùŠº–ú×Ï'+ô4«v#q -Z 1À4ûOeorm\ãMÝ«X7Ùƒ6úÅn3ˆEÓû—£~+Ïù‹·q˜-ªDæ‹ê7¦Á“ç²÷dŸbr¶ºyi+´oëJ*&ÇË¥-+³ùBߊš¼c¡gš™Y—UÑVÌã25ú3οXÑiV­‹*^šÑDý{½,²Ú‡+*Õº,Ò&éŠ`‰O3½Ùt @D]f7M¯O\¹K$˜ZJls§–îLÜ^ÐÞÛ«¨[ÃsƒK«õz™u|«K>uÇé> -endobj -828 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [249.122 706.118 274.766 718.622] -/A << /S /GoTo /D (index_intguideLibraryOutputs) >> ->> -endobj -829 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 613.457 335.486 625.687] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ab78d6a66fc7a4205a6caf69ce4f161e4) >> ->> -endobj -830 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 447.021 359.704 459.252] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ab810ba8e0fc4425c37aa460e57dc8129) >> ->> -endobj -831 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 294.135 349.995 306.365] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ac5899ebab7738c4c99b19ad9d934f8d1) >> ->> -endobj -832 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.305 253.985 363.974 266.488] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -833 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [78.811 163.483 181.227 172.195] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -834 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [394.944 109.368 531.737 121.871] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -835 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.09 95.818 237.184 108.322] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -836 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [41.152 62.194 177.141 74.698] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -841 0 obj -<< -/D [839 0 R /XYZ -13.423 915.745 null] ->> -endobj -842 0 obj -<< -/D [839 0 R /XYZ 29.788 707.115 null] ->> -endobj -843 0 obj -<< -/D [839 0 R /XYZ 29.788 684.125 null] ->> -endobj -844 0 obj -<< -/D [839 0 R /XYZ 29.788 540.679 null] ->> -endobj -845 0 obj -<< -/D [839 0 R /XYZ 29.788 517.69 null] ->> -endobj -846 0 obj -<< -/D [839 0 R /XYZ 29.788 387.793 null] ->> -endobj -847 0 obj -<< -/D [839 0 R /XYZ 29.788 364.803 null] ->> -endobj -848 0 obj -<< -/D [839 0 R /XYZ 29.788 63.19 null] ->> -endobj -838 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F89 511 0 R /F44 228 0 R /F120 619 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -867 0 obj -<< -/Length 2249 -/Filter /FlateDecode ->> -stream -xÚíZ[oÛ¸~ϯÐÓ TŒH‘ÕÅyH7›Å&éÆîö¡- ÙflØ’«KzºØ†7IVì$NÚÅ`§¢xÎ g¾™{<¾y‡Eyä; ÇwÎàÅÁðü=¾Ãb†bŒN Š(s -áÜývoò1PAL’Ù^Æ -YÜ_ul÷l÷ÂŽ\&ÿG4ÆÎlÝcFû”ö=-9D¡qŒ&’¨dЃ1ÂQÌ%sÐÀIûƒ“9{‰~9B5I»ÓTD[TÇñÅ:pÎr`u?³‹±O,ÏÊÅ0 -9툥Õåûĉ£<Ž•ªeÜôäcMZ> ´¬ms¬ô1YÛ%M~;Xp`’Âq(ןŽŽß‚QâÅ4Šœñ­CbqîD±>ïñÜùèžæål9ðHÄÝ‘Èʼ¨ÄlðyüËÑpÜS¦,<â1è”Kú?ûÎq|P*q¾ª©k9xœ•3êÊ€‚‡¹AD˜¢À'˜ÕÂÙ7ts¾KÌBD"Üb4|£e¸È*±(’*Í3Ýq^§s¡:Ôž{gÔÁ ¼ œ…„ˆòÀñBŒbÉ­d-@"ûìD1:¹˜ŒÞÃïtôææâtxvý~üîýøüd<mñ©%oéÃñÂÆÓ„ßåe™NWB‹Yˆ¤Ì³òõ¶¤ÏRúñ[÷÷…i\oû‰„ÑNuöÙÅ)P«ÎE&Šd¥y‹rV¤yF–_ØžF~Ï0ö5ƒý>àÌù蔤Äï« -O ¥ôÅ/QÈU®u‘×Õ¦®tû“Ïü»´¨êdM¬;Kå”ö¿Ô¢¬Ä\¿VË"¯ËCU(—NK1›Ô›yR‰IYO›ó,¨½ÿlSÈ÷½À«(wÂ""ѵÔj½ž -¥¬ÐÍoå3ÚVZØQx¸Ká¡Qx©o’²´+«üpM‡‡iÚ¬IÍîˆ"×{‹;‘éÖ×¥mUKQ(d»§¥ž†E<"ZCIa£Ì×â ,{6ˆäÖ¬3 Ñâõž“ÄÒ€/¿*Ø,kˆNÌæ³çÇí÷É,¯³ê3*“õf%&€ó #Ìý÷ÀÃÀº‹ßÿÉr#Ògî ßÒ¹¥àÑËE -§40MnN>LÎOF½Óv·X5ÀžMö2Û+;å,«¤ªË0½Ï^ûœKKÙËç+Åa÷§ÊöJ3-ÇÓ†Í ”¢ªÒla‡ÿ¥)ìš! ö§]þàA>HC 9&GFQoò¢³6OX‹j™Ïd=<` ¿çÊ¢(6®ü€•(«ŠzVÕÚߟ‡^ìYèU.óze0sjvßä›z•fî×´Z6 ¦°EÒn=ô8ºQΡA«i‡¨´âÂLmùçn–›Î©K±ÞTßuÑ0”—„FhÅ´§š0B<4ªyUÇ­ØÐVÒrâ -•´AW•›§:0hd6ÖB[™|ZÃÚû—›twìFfx½K“ƒMTò*MTJt"ŒµC„é¶6>ùÔ7kºQ)B>‹lŠæíÄZH ɇš„QãÒO÷÷•¶£ dšeú‡Ä·½»Ë³ù¶gséEbLòév,S Ô/7è.c¤P<Þ*fŒ¹¸SÐ|¹øåõÙÅÕÕõû_ßýSÅ<¹ŠyHs×Òe< «N Q@صÑ3)Á ×"3vfÃê\¬“lÞb0ÈÚâošYë̼zµ1¤r]¯ïBÃÿ M¶a˜ÄÈT(ìԎ3€ÒDj+¦X„îÄŽu–i Ã¥+èÔz‚†Ò“Rå!ôˆ,ÑžÔN£Í4è*%±C6~FÛNÅmþ¤ê„pÈC“ÒT=³kÙQÅŒ‘F1¿óÁ%Ðà4,Š4o ffSƒé·A[C i?ˆã“E­¿5¢©YǽÉ2É–Ê}0í¡žâu!t8ys}õöâ|òûðftq}uy1º<¿ùù,}2–>I…«„÷¾eàNf)_ø}À î/J v<À^tºh@€n“Q·gÂzä -Ú›¸Á x*ó½?Ü|ë€þgT @áQoê…fêà‚v§'$~[ZýΉß~$hS½B”´îÄJ¥i¦{ž‹²—œ­“Ê~‹··wg5?_ï´e {‘Ò¬¿>T¾®§UbÓÄÈ›¯7`>  i[ýÑu×Ër£Ãz²2Èöœ²ÛDš˜·9æýå6XJ›å/ÀÆž`46ù‚½VþÙ×) bâl?”Bwôßœ7h•×KC6GÂgVîe>O%¬ÌÓà<4 ¥w‰âNâV`÷Où î™ú˜ ‡!_ù¸~‘5¬|ΖI¶²­?Eäµ™ž˜Î„¦ñ§¦x–ÏjÖª ªè}=ð"‚!êŒe%ä^Cî{«'OÝ:y'W¾Ï=í¢>"<ŠBsiEwÛ×Ö½$6”òKÕ·‚Ý[7@¤Î­[)PsëvàÚ{¶Vÿ á ä5ê?“QcÇƉcÏáÈ^dN ¿•>€, GŽ õ=®s´g™³wi1g )¹~@”€ëúHê;aÄ'cŸI¦9sŽ¼Þ¨×[ìuVÉévZ3¾k¢×Òï÷×o“_JÑ|+ÇHÉÖÜCŽƒ¹äsuŒÍLù×mÏÖÎó´Úì`àŠÂŽÂïÞ<·Ödæ˜)ÊššKææ°·æÈ ðv-M# Œè_ætgyÆ^¼Ö`v°«kc,¯j·nÀƒ€unÀᕺçëéÏz@Ú6‚tS÷DB»ìƒZeY•¦mPè•ülUæv`‘s•cÉ×$û¦IÏÓr“—ÉJ-ˆ]ñßÍ*O+¦«›"Ÿ×³¦‹»bžÊ/Ýf€ˆ8­;k’Òäp´PqvÑæ«°!))·«ï&VÈK¦jûKT²Ù¬ÒoeÏ­½ŒL³y-°9> -endobj -837 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 676.117 363.358 688.348] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a7f2cea23dbdaeddb2d91d861c608f239) >> ->> -endobj -852 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [258.22 655.737 394.209 668.241] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -853 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [311.624 635.358 448.014 647.861] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -854 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.21 572.512 373.705 581.223] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea64d14f069c838de2d2c1f3f436ef6108) >> ->> -endobj -855 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [78.811 553.583 181.227 562.294] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -856 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.528 498.728 368.856 511.232] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -857 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [526.787 464.799 567.119 477.303] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -870 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [41.152 451.25 148.035 463.754] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -858 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 356.787 291.817 369.017] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a87428d7a4a5d52e48af8db92ab71c83e) >> ->> -endobj -859 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.626 295.648 532.295 308.151] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -860 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 157.261 349.406 169.492] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ac2600415df086d1a9b36105ac29396de) >> ->> -endobj -861 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [373.81 136.882 493.215 149.385] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -862 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [506.839 136.882 567.119 149.385] -/A << /S /GoTo /D (group__bsec__interface_ga70e68dbe60e2ba462537540d60192a2e) >> ->> -endobj -876 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [41.152 123.333 74.061 135.836] -/A << /S /GoTo /D (group__bsec__interface_ga70e68dbe60e2ba462537540d60192a2e) >> ->> -endobj -863 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [82.988 62.194 177.741 74.698] -/A << /S /GoTo /D (group__bsec__interface_gae8fc6d614d6a40f0088262dccbb960dc) >> ->> -endobj -868 0 obj -<< -/D [866 0 R /XYZ -13.423 915.745 null] ->> -endobj -869 0 obj -<< -/D [866 0 R /XYZ 29.788 737.428 null] ->> -endobj -871 0 obj -<< -/D [866 0 R /XYZ 29.788 452.247 null] ->> -endobj -872 0 obj -<< -/D [866 0 R /XYZ 29.788 428.517 null] ->> -endobj -873 0 obj -<< -/D [866 0 R /XYZ 29.788 283.095 null] ->> -endobj -121 0 obj -<< -/D [866 0 R /XYZ 29.788 259.365 null] ->> -endobj -874 0 obj -<< -/D [866 0 R /XYZ 29.788 228.62 null] ->> -endobj -875 0 obj -<< -/D [866 0 R /XYZ 29.788 228.62 null] ->> -endobj -877 0 obj -<< -/D [866 0 R /XYZ 29.788 63.19 null] ->> -endobj -865 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F89 511 0 R /F120 619 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -901 0 obj -<< -/Length 1953 -/Filter /FlateDecode ->> -stream -xÚíZYsã6~÷¯À#]µ„qòÈ›Ùq6;²²9Æ)%Òw%RÃcœ¤òã·A€§¥xdÏnìÝ)îFwãëÆÅ£Éø†¢E~@Ðtq/ˆÂóÔ$}‰}J‘'v…DY„î¾{D|R°Tbúl’aGúC®£ºÏ¶/Š›úïJ Ÿ¢ùz fR %ízÖâw1år=Š%eJ¨RІ6æaßSÊAÁq¸`Jö(A;…~8Àœp¦dwŠ•ÐÖ€ªâèrÍÑY -ªîVöi3v™e×vIŠOtÌÒî"„!Káùî“VµŠÛ”—Õâ D$׶¶Å¶Š§lmY:|··á ¤Ç9¦¾£øO&GçJʱ/\Mîó±ëyÈõõxOBôÞ:IóùòÐf®gÝFIžfE4?üeòÍÁhÒ1† -Y!Üõ|ð©§ä¿ÿ… ¿AœÊÐCEºVä G+tÛµsF¥´Üe è °Z ]Mã‹m6Pé`æÒ·£SmÃeRD‹,(â4ÑeF•Aûâé©'h&ã $hq°ð8²Š}¥­RcõÃm€I¥çt4=½~w~y1=O¾®.o¯Ž'§_÷”Ôf·Âal™‹…#´Ô›4ÏãÙ*Ò6fQ§IþUßÌgyüèÜóýRH¾îöŽ9îV_Õ¥ Wñ_q]DI”+­kåó,Þ¨ªõ…î…K\x:>Ñ -ë@3ôÞæBîáÂÏë[›ôÊø¿XI]2C“Ç¿›R-Ê -Œúu“¥ãf½A:à‹ŠFì=8çoEÃ})OþŸ¯hz^øL+áÿ•K±mI3ºº™üôe1³ÿbæ±ãÞ@rlCè3[?§iÚI®}1³:›6ØxÔ¢ƒUÖseVÏŠo4{v}=+‚8Ùekó,F$Ëm‘|ùîöûóóËÓËÑ»É×ã¿ŸÀÛhü%´÷íOðä+õo£dQǤ÷f-—fÿ2XêíËÖ\ðÌ“©=¶"õŠø%==:ÈʯSÕ*ÊóáÚ/‹>”qVÛ ±YF¯zYûŒæâ¿6š‹ÿÔh¾Í™„¨Ë¾þ:Ü……¨9xøÇ¡+-e!¨ïq x&S‡i„©ÙÓx¬…P=ÀµwpO„/êêÏñ”°î(W¡6qfœ–Æ‹¤1v}Êù¶º¢Ó®]¿ÆërÝA‘.VSÂÕñÓ›ñõÍh<ùizòíõÉôöòçÑ0iî3ÔT˜ÙR?¾ølSˆº -lv"5æ`Æ3§Wi«‘›Wãñ#¢&²Ê[>§ÖêÁ¬³ ts^Îþ ¢_ÔN=çsêDC8²:îOKC¤E¬N”Œ?´Ä³t^ê½tEP®gQöÕ¡í2 -JiÙ'W#Ç#vçšÐ®níãw„x¶Ža‚™Ú5ùXÙ[™#¶RïŽTÀGLb¡op»7¤°ëܺX’æ†tÏ!¬ïD[ÿKh„R·Ð¥ï™ÚoÓØä6F¨oPû"8ýµõÖ†ÔEÔÇÌÑwîè`ÚÙ£z@Š~A(ƒ ‚Ý0ø­~£ØãŒLýì™â؃V{Àlw¸yMÖ´o#´[ùÃæ!_üR™Fj;n+Ûšï(ö}€ÃÄ«nî©¡TÝò|žçÕ¦'NA+=º˜º^÷+M†Æè#ƒúƒ€f°{4êc…¶mMc ´èßu©lƒ»ÌUüꊟªkõÞ× -œËÎ× -ð*¬‹õìkÝ °a“B…u¼Zéº,^,‹Ü”Mú¼ -Ø-­ò´nXYXíWÕkü¦E‡q¾Ió`U1øVôëf•ÆúÈTeÑ&KÃrÞTyVƈ2 6]³²ÃäfÁCKi/Û> -endobj -864 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 680.317 351.217 692.548] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ae5d8b5de70152c09b4153bcb41997ee7) >> ->> -endobj -884 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [361.93 661.627 483.843 674.131] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -885 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [505.397 610.698 567.119 623.201] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -904 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [41.152 597.149 112.864 609.652] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -886 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 512.681 323.933 524.911] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a89e2eec8486c2880912af108bbed3593) >> ->> -endobj -887 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.927 493.991 416.752 506.494] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -888 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [505.397 386.992 567.119 399.495] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -907 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [41.152 373.442 112.864 385.946] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -889 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 288.974 279.708 301.205] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a76ee5462e14060fcc889bd889b6f7b3c) >> ->> -endobj -890 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 148.436 394.853 160.667] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ab5356ac211454109eac007fcc458a6dd) >> ->> -endobj -891 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [198.079 129.746 319.515 142.249] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -892 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [333.286 129.746 415.918 142.249] -/A << /S /GoTo /D (group__bsec__interface_ga70e68dbe60e2ba462537540d60192a2e) >> ->> -endobj -893 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [198.079 111.056 320.126 123.559] -/A << /S /GoTo /D (group__bsec__interface_ga8798390d842b820e79e9cbf8ba4d516e) >> ->> -endobj -894 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [333.897 111.056 417.14 123.559] -/A << /S /GoTo /D (group__bsec__interface_gac79a471c6e20fd8c17577f6f69a9469f) >> ->> -endobj -895 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [230.002 73.676 349.766 86.18] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -896 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.8 73.676 453.303 86.18] -/A << /S /GoTo /D (group__bsec__interface_ga70e68dbe60e2ba462537540d60192a2e) >> ->> -endobj -902 0 obj -<< -/D [900 0 R /XYZ -13.423 915.745 null] ->> -endobj -903 0 obj -<< -/D [900 0 R /XYZ 29.788 737.428 null] ->> -endobj -905 0 obj -<< -/D [900 0 R /XYZ 29.788 598.145 null] ->> -endobj -906 0 obj -<< -/D [900 0 R /XYZ 29.788 578.521 null] ->> -endobj -908 0 obj -<< -/D [900 0 R /XYZ 29.788 374.439 null] ->> -endobj -909 0 obj -<< -/D [900 0 R /XYZ 29.788 354.815 null] ->> -endobj -910 0 obj -<< -/D [900 0 R /XYZ 29.788 233.901 null] ->> -endobj -911 0 obj -<< -/D [900 0 R /XYZ 29.788 214.277 null] ->> -endobj -899 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F89 511 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -929 0 obj -<< -/Length 2198 -/Filter /FlateDecode ->> -stream -xÚíZYsÛ8~÷¯àËTIUKˆ8xå͇ìÕ”Œ­Mv&žRQ,sF$Q¼5?~OK±e;5y˜Šm€ºn|}ÈhzýËüÀ2–†eœÀ‡¡ü -–aû6ò166¸·DlÖç´«¬Ø1ê"LÃõ0²1LÅMè#ò=±8¨8eDðþh$ÆN¦Ÿµ(p¼[UÉ´@6Œ&15NRXêîÅ>-Æ.±ÌJ.#Çc-±”º,‹>²™ç»OJÕ,ÜÄ´daÅj–M•¬Mu‡¬ì)Y’Ö$¿ì-8,Ò£aßôGÓƒÑ)€Sä3×5¦wñ‘ëy†ë«ýž.ŒOƒ£4ï‡&q½Á Oò4+x8ü}úóÁxÚ3["Üõ|Щ'øúÝ2Ðù³aR‰±‘Cc1Ö@•qÓ–Q‚mÆR—Ø Ä`«¥±«ëúl› ØvqqOˆ›ñ±’a’|™E”&ªá¬Œ\ -´/žž,_$ÒèÔó *³ÀŒAÀ•ƒ˜G Ó!È&žè–8îÖE+u4äšµ9„ì®´]fLcàóaèÒA°*ùФÔ¤wªLf›4ûs6/o-By¦×Ažó…ª©žVÎ\Ë…Òñ-%[¿ „2>IªyÎÃÙ’³0MnÁÌ–¥Ú‰[˶àw$Ò4A²xÕTyü[ä÷i¹Òb͵@Òh™ÔÂÞK€9¹™^O.Ï÷>óŽ$àˆ‹£ŠïûÄŸ¯ô’3äi’¿ëÂíM°-¼¦ž–ì j© KQñ„gÁJ-vÁó0‹ÖTïö† ³÷Òâ›Û¹Ü`©ü…ÜY”,…>üAý«OÂtˆAA õ%ªì™âHÚ‹&–Œr¥ÙÊúEÇþÖ/¨¤IæÏ·~A3Ú"¯™è›¶/Ø/Rž‹v‰D -Š÷• -“´PRÇAQE¿MTèšð²„EY!/¯µîÕZ÷À‘æ<‹‚4,Ä’ -¡ÐQ·µRx[ÇžÐq5Y®»ïÊ$ -Ë¥«è"F›Ðqše¢JqØvTtú”SHPSÏíg>Èõ[Ï|.²­ú™oÏÝ«öÕÛÐ {$êT÷DÜn[±Ž0ľi9“¼ -I %=ÿˆ]ûˆ8êáØ8ØAfìœG@Ñm A?À”€ÁYHè­úÂÈ£ìLU¶éjh˜½^³Gl¶¨ÄðjXÝ¿m Ùðïw÷é»ìï…hV%Ç”­~tÇò mdyòùë‘â·]cãeZ­g¢VÅ`Fa×k?u7hÒcôuGZ½j×›Ý#^Ü›I”4µ0У~£=ÊÔx1ÀlYŠ/ß©±xåí<¹Sj·žÜá“ Îâù¿U‡À6‚0ÙàP$º¢-‹–÷E®ëÚ A.A™Hò´êXÙB¦×â3HëE”CˆV’Àð¯ëUU>"š2ÙÊ¢ ë&He‘¸ïЀE‘Eó²ET^¶㎷Ùð*AòiÿR‡š*Ù ÖëUTû[y;•fù¢ ¨Â¶Ê­ -å+å o¦,6aòÏ`ÁIûxÒuŠ€ÿâ ’2 -endstream -endobj -928 0 obj -<< -/Type /Page -/Contents 929 0 R -/Resources 927 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 878 0 R -/Annots [ 897 0 R 898 0 R 917 0 R 918 0 R 919 0 R 920 0 R 933 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 926 0 R ] ->> -endobj -897 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.584 725.921 338.032 738.424] -/A << /S /GoTo /D (group__bsec__interface_ga8798390d842b820e79e9cbf8ba4d516e) >> ->> -endobj -898 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [362.1 725.921 446.968 738.424] -/A << /S /GoTo /D (group__bsec__interface_gac79a471c6e20fd8c17577f6f69a9469f) >> ->> -endobj -917 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 628.782 350.028 641.012] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a3975b1dfa3c35829ce97814e04c143ce) >> ->> -endobj -918 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [329.238 610.24 450.674 622.744] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -919 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [457.795 610.24 540.428 622.744] -/A << /S /GoTo /D (group__bsec__interface_ga70e68dbe60e2ba462537540d60192a2e) >> ->> -endobj -920 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [505.397 559.608 567.119 572.112] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -933 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [41.152 546.059 112.864 558.562] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -921 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 462.469 360.915 474.7] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ac2eca8b900ce91ee50004c549a409024) >> ->> -endobj -922 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [382.47 443.928 504.396 456.431] -/A << /S /GoTo /D (group__bsec__interface_ga8798390d842b820e79e9cbf8ba4d516e) >> ->> -endobj -923 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [380.503 393.296 501.709 405.799] -/A << /S /GoTo /D (group__bsec__interface_ga8798390d842b820e79e9cbf8ba4d516e) >> ->> -endobj -924 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 268.515 353.671 280.745] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ada34397de8a8e88ad72e8546748866cd) >> ->> -endobj -925 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [186.657 199.341 296.562 211.844] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -926 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 97.21 371.813 109.441] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858aa238cfe9b905deda6f1823ca32378f91) >> ->> -endobj -930 0 obj -<< -/D [928 0 R /XYZ -13.423 915.745 null] ->> -endobj -931 0 obj -<< -/D [928 0 R /XYZ 29.788 713.368 null] ->> -endobj -932 0 obj -<< -/D [928 0 R /XYZ 29.788 694.105 null] ->> -endobj -934 0 obj -<< -/D [928 0 R /XYZ 29.788 547.055 null] ->> -endobj -935 0 obj -<< -/D [928 0 R /XYZ 29.788 527.792 null] ->> -endobj -936 0 obj -<< -/D [928 0 R /XYZ 29.788 380.743 null] ->> -endobj -125 0 obj -<< -/D [928 0 R /XYZ 29.788 361.48 null] ->> -endobj -937 0 obj -<< -/D [928 0 R /XYZ 29.788 333.466 null] ->> -endobj -938 0 obj -<< -/D [928 0 R /XYZ 29.788 333.466 null] ->> -endobj -939 0 obj -<< -/D [928 0 R /XYZ 29.788 181.796 null] ->> -endobj -940 0 obj -<< -/D [928 0 R /XYZ 29.788 162.533 null] ->> -endobj -927 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F89 511 0 R /F44 228 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -948 0 obj -<< -/Length 1286 -/Filter /FlateDecode ->> -stream -xÚÍX]oÛ6}÷¯à£L ?%²oMâf.š-M½_£¿OG£³¿Þ]NÆ£wã‹ñ¤ï|6HhS„{¿—EUeÓEpiâªÈ«W»þ”Ó²y@aÁ¼à˜ÎMnÊxáƒMM•”ÙÊ -¶ ö‰  5ñöÇ 4tp!ŸÅâOW®;à—2Î ñ€ü£ïÄyºQµï,âªn϶^Ä¥2|g ª€·b [àÿA¿¹ùò,6öÆZ”¥I¶¹tiêy‘þº/ÖÞü×䫺Ìf3Söˆ{Èêy–÷¸KÍ-Ô¹Iûä—q>ûnR|’ëª/=Á5C»#nÏøÕÏ»‚ìMŽuDv”+¡lŠÂ&£^ifYHÜU -×…C€W™ò³åEs:üf6<‹ëØOWëé? ÿ`y·m2÷¤‰P:¶‹ucu–ïã›÷xV$륽3X/§¦|uDŒBš›I9 N.F¡"AçšÜ ¼þƒx)Ì\¨[ÀŽØ¯¦Gȱ1‰…¯ÀºŽd´SáDP¤m*œgža[Ól@Â$œ”­DC?º¿h¬o%ÅÕ ¦^¤'Àߢ‡Â‘ÓQYèkf48° ÜÇ -R+ LÙåðN¼¨[ÞÚ'ŠWp2mÛ1jº ½Ù ·8謲æ­Ùf~Ÿa°õߟî¯ßu?·ÐH‹ãÚaÛ|oP¬5Èa¢\åMKûÛí'Kôc¬nv⢰#|àDª[åoÕÔØ4&NM›‚~sØ;6öcc»‰G³3þ'G]« ÑK°ÌžP´+Ñ©-pw¾68—¯ xÃóåôw?aµ¡D¤bøz±ðc¼çuÕô›,ô< -¸ûUÑNÌâ2Íò™Œó¯ÞušU«¢Šnš/«E‘Õ.y4C¥Y•EºN6CjhÒ¬W¸€ dºî¬‰«æÞ„£…Oðn¶y0‹¦º‹›BûÑc>o.÷â¾±]­Ù&ßÚ‘û¢l—§k@[4B´+SÖ_›[Ç‘ƒ¿[0K&Ü?¨€/ßæ’í%ÐÇGÖä -endstream -endobj -947 0 obj -<< -/Type /Page -/Contents 948 0 R -/Resources 946 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 878 0 R -/Annots [ 945 0 R ] ->> -endobj -945 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.53 644.085 363.348 656.315] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ae8e920ecde96d7d79b8962da38233880) >> ->> -endobj -949 0 obj -<< -/D [947 0 R /XYZ -13.423 915.745 null] ->> -endobj -950 0 obj -<< -/D [947 0 R /XYZ 29.788 728.902 null] ->> -endobj -951 0 obj -<< -/D [947 0 R /XYZ 29.788 710.36 null] ->> -endobj -946 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F89 511 0 R /F44 228 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -976 0 obj -<< -/Length 2821 -/Filter /FlateDecode ->> -stream -xÚÅ[YoÛÆ~÷¯à£ ”cÎÎé[Ò,7r‘ÆîíCR”DË,$Ráb7Eü=³Q$MI¦¥ @Rœ™g?g'W7?à`U]DÁ*ˆ‚·ð#Àpý -O¢€+ŽÆAÌ’ŒeÜ^üöhò  ®aúË8A‚«áª+ÿÎÝ»p —é%S8Xl ÂÙißÕÃ1*¦"1F ª aŒÄHÅš8¸‚2¢±ÿò`/è× D# -h»sk@w ˜Wï64xU©û‰=ÎÆ>¶BÏÇHĬÖW‘@!Îb%rµ#<Ĥa w§–×Ýí^Ù1^wK:/ùm2ã@dL)ÂJèõ/o.®Þ€QbŠ“2¸¹ ˆB2Ž©¬¾o–Á§ÙË¢ZÜ]†DƳë4¯Š²N—Þüzñú¦Ã fÜX¸ŒÈ4ÖøŸþŒ‚% þD T<˜©=h Á:¸îò€(Á<†¹T¦Ð fµ -ö }|;Ææ‰L\¿þÅòð.¯ÓU™ÔY‘Ûo›l™†¦ÚÓ±+PÆ®) ‘(`€3sK» Á@fï‹e³N-I¯ŠE³IóÚR9FšÊ@!.c0l"0‹‹°EÞñÞAy›,ÒÐ)Î-tRŒ¤-¬ÞáØß«dÕ‡´ªíG‘,(Ž¨…j×W ¸µ×ÁU¶Ê“µ½ß–̬²|e¯³y™”ß.%›¡á[Ùà­T»î¿ÕÂ4G©VpKÁúìò›;·ð¶X¯‹‡– ï ɱ’8úïÀ]s÷iyŸ¥î—3¾Ú£Õ߶Ù³ZlÓ®…Vé×&Íí{˘úœ?χ®ÞĪËoè!Ôêtõ™¹Ï\zÒ™ÀîdÕY²ÎþépãµÜ²îù8¦@n¡BLшaH¡*nC -¥ -a©udƒÊù18Ø?‹Á—A @`:¸ ‘>¸!ɵœôåíQ -ÞEÔ$ˆCBrƒlmc]Ï´1eu)àpÈ -ÎÀ¯ët[=–&¥\ç´3r¡eÑ @¸ÐhOæ‚2ˆ/„÷¹xÓä‹6üõaBBÜãÏ`dÄ,ƒQv¢]†?NŽD›µF4)¢œwŸ½^Óêy*U‘ -LF®BE6l ŸusÔÏ«tñ%>G<‚¿¸?ÆU:•æ -[ꞦQC q&r¨v¤“ÉïÛeR»¸·(òÏPj®š~¬¯kÈ).hÉ[=š¬[ Žk{*ÅçÐv—3£m þË€­ ʟʈò"’§*Ÿ©3)*¥œˆ>¦U]”é ýUuk{SãTc˜ÊÁ9Œ¡Ëik †¹ &0•ð€ì+vbµðƒ@ΰê×rnCÇ °Àê”Jn_Ù{ëÓ´ù•¹¸•ì:]:c.ì5Í“¹ßàM½mênïëæÜ­Z¦:ˆä;gÉ\Õ[%›íº}}ÙúÎÕhé¼)–)©,Á†‡‰uã †EŒŒªùLLcHÅÕY*K˜%XЖšÖ˜L(, A¼ŒJ‰9VXB çdB#R2dB·ÇêJð.¢L¨+¥BL>‡£ ~¤ -9n¶§V!^‘s.<¿î¸b/ÅX¿t¾øÕ®ïSmÓE¦ýÑû´v«†0•îSÒ×q—?“~Sj}©šyµ(³íkoSY1€ ’\~È÷JD”‚6åi‰È'™zgÄËTëxî»/mý´I²|O÷¨(¶#‰AE P âàêĆZ+æ#b?¨¤&M æô -€”Ó´yA!…ùÓCª· * A8’‡ÓÖªgäA#ÆðlÀV̸þÓóÌŒ!À÷¸ØŸx¤«jõ FÙ„†ˆ·ŽÛDŒQtb·Á©‘Ä:£¶»“ºÌÒ{¿+1­þ±=©¯çæm²Â~íO¥ö”\àôÚcËmE47zkZ—ÅúxhU>•úÇ#CÓI ìþ<‡!ÑüÒîÔG”ÞVâ`«UêžnÒ¤‚éúãÄŸÞV—]‚¯SGèË÷¯EÙûÞ (NÿÖ{„¶Ë¢›òûz*­5 Bž¨aƒa“³h˜SÄó>8™”iÕ¬}ew[›žÆ÷«ò „µªìRö=T9•ÖǪdúãù‰ª¤Ä+?Y•TBMåö!-o‹rsð»Ø~5N%êQ¸K½‰ÂËâK¥k… ñw*ÝU -P‰TÉý ŒïUƒë¯L"šÜ ‚ºÆo’ lbœþÀžÞÚÖ¦b³ê®1ƒþEgËâ!·ÏmYªo`›Ÿô埲٢)KW,†ëŠÂlÓ…Gî³04¤HõKKLÙb lJçG#FŒ°­‚Án–Ø‹EF°#_2Ý~»Ÿ¿ÄÏ -_¥t÷ í6~† +&ö›ÁTªOúâ4ÜåÎä½Õ„!^ïS Q;@ÆN (?ä€'¹,¦”>C6ØÇt"q[BîLdojÓífF|‡éúHQ²n†Ç’î“2Ó-§Êï×E¾jJ>ò'Ã3LY´§w¿×Zfú¸ÐÒÏñËëw³*‹f[ýü=Î÷x~C¢WM=à郟ýÄ(cë>ÊÆJ;éÙŒÊÆ2*ä"zëòÂù·íÛÁ¨ÙüÛX‘{ˆ$ÝÒ’l£Á˜t>5ÅÔéÏéëë]zˆjÝàÖ_ˆ»Ø£_ñòŽQªO¡êÒEC—!åxöÎœÜ'ÙZÛÜO–fgU0b+¸™§O¨\GŒc@°·¾¹¯Ýl7gØýO|®êbãí'Å¡Ã uÙÖ<;f6iý‹1à‘çGW>ÓôÙT¤dä\À´”A€f«bà}±´ ÀH˜zÛœ–¦®TÏþÕ2{•Ô‰®šù_颶?´éëâ.ÉW©¾çFŠEã&€‰g:hŒ-¢?éé&4›yZþ|J‚A×7—œÏB»A;çVCsd5|ñß(ŠC-Ü „9THókÏiŽ{s?Û0“dGÌ)î†g‘{—k$âQ{dw¢ -}²ÜÉŸÃ (Šó~Cï«a”ö×à“±%aFTv’9ÿ;o†Ô -B‘=\ìYì}Ï…Éc$¥—Ãýå|ê›ÿÉÆ íLr·‹à"Œ†ƒÅag•žî§µãcÃþpx¸¾§Y‹<׆·ö=FJ¹Az·g*±›©ÿvï›àyRmߤÏBíbiJtŽ­ï¬ÉÍqSŒ5µ'Ôwî}z~÷ËMË ŒØ?yÐ:{ w3BŠ2ý -ý7”wŽÏÃO6{»™ÿÇhÛ†ÈÏ1›½X¯í³2[Ýé~¹wQ²e×UáVI¹45ˆþ™äß,ô2«¶E•¬Í5KÿÞ®‹Ì'wÊRê²Y´âYºÌô®ÝMˆÞó¦³&©l°<aÜ‹6éÚµ£’Ê—4ƒ"Êz_ÂûŠ*Ùn×Yo{‡›³|Ùh:]®mZÖ®°ÂA«:N˜ùŸ0˜!îËq¢†¥÷ÿ„b -endstream -endobj -975 0 obj -<< -/Type /Page -/Contents 976 0 R -/Resources 974 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 878 0 R -/Annots [ 959 0 R 960 0 R 961 0 R 964 0 R 969 0 R 970 0 R 973 0 R ] ->> -endobj -959 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [340.729 466.292 393.034 478.795] -/A << /S /GoTo /D (group__bsec__interface_ga51bcd13812ea62b35749284385a72f98) >> ->> -endobj -960 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [340.729 450.111 462.165 462.615] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -961 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [340.729 433.931 423.361 446.435] -/A << /S /GoTo /D (group__bsec__interface_ga70e68dbe60e2ba462537540d60192a2e) >> ->> -endobj -964 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [338.302 358.411 474.29 370.915] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -969 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.856 282.891 425.761 295.394] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -970 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.856 234.351 398.489 246.854] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -973 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.267 145.281 428.51 157.785] -/A << /S /GoTo /D (group__bsec__interface_gac79a471c6e20fd8c17577f6f69a9469f) >> ->> -endobj -977 0 obj -<< -/D [975 0 R /XYZ -13.423 915.745 null] ->> -endobj -129 0 obj -<< -/D [975 0 R /XYZ 29.788 737.428 null] ->> -endobj -978 0 obj -<< -/D [975 0 R /XYZ 29.788 653.104 null] ->> -endobj -133 0 obj -<< -/D [975 0 R /XYZ 29.788 653.104 null] ->> -endobj -137 0 obj -<< -/D [975 0 R /XYZ 29.788 617.41 null] ->> -endobj -979 0 obj -<< -/D [975 0 R /XYZ 29.788 548.854 null] ->> -endobj -980 0 obj -<< -/D [975 0 R /XYZ 29.788 497.059 null] ->> -endobj -981 0 obj -<< -/D [975 0 R /XYZ 29.788 389.179 null] ->> -endobj -982 0 obj -<< -/D [975 0 R /XYZ 29.788 313.659 null] ->> -endobj -983 0 obj -<< -/D [975 0 R /XYZ 29.788 176.049 null] ->> -endobj -984 0 obj -<< -/D [975 0 R /XYZ 29.788 112.679 null] ->> -endobj -974 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F89 511 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -993 0 obj -<< -/Length 3445 -/Filter /FlateDecode ->> -stream -xÚÍÙnä6òÝ_¡Ç60­ERGÞf2G A2cì>$Á@ÝͶµè–:’ÚŽùø­b%JVÛã#Øî!Å£Xwy}ñég\¶gQpDÁÇ3ø”@Kè\‡¹A¦â0U:hL°=ûåÎà×%Ôfÿý⇳÷1Bi«ái–O3„ÿëïQ°Î‚˜7vè‡2ØŸ}B ÁX™ÆT#T€'¨ÕepªëÓÇ9„NÂ8">¿ÿ–hø¾êÌeSte]QÃÇc¹1– ÇêÓƒå“Hzý!Ë,‹ÀŒЫ$T™ –Iê8#‚~‹“tibÇ0]„ ÍlÎq(H×Ú® -.öç_ç©\»£iLV£É<3ÍÃh:óxØÙœ/¥Ì›cSV—Xχ¦^›¶Åoy -Ÿ8VÖþF`‹Æ ˜x±7û•i°.õ–Úº+sšÀÓ0-l;@“°¼lêãá¤$ø:!õFx¾Ô"Y|.®™J±(ª áÔ˜¶«õ1£*,ª¶¡_ßöÍ,µl"!¡C8صYuµZ”-–rQäoÑÜRsWS¹/ʪƒ}s]ÖÇvwK“ËrOÃîÖš2O¬7f×RÝ’…ãWEkveexéj[7{g5ÐpsUZ¯à¡UîàŠª›åð„ÂH„Y–…[‹˜â -¤ÚÁ4vÁjm¨ÙŠ¥e+V.‹–*=%8êØŽ]Ž-BV±øx†ö‚ï_ -\[ÓOug¾ÊšPV9“~F¥q€YfPúÂÊâÅ®\5$"øX×U[¶]K_–(‹MqèÊkÃ_»KP£îjÏ£‡¡Ú (‹™P!@¥gÀxˆ£©¯ *Ýâ>gï·GŸÊÁYI¢ZV;‹¤6xÕšõ—Mý°=´¿E:‚Ÿ˜@…à¨Ò(…2É# -ŸÓ67Eà´“DͬjbÉ}iLwlª/Ýh¡à×¥Žõ£sÛ„xáÐ ¡‚äk é†V9FÛv€¾S¡²‡5A(Äz R*%ÑëPä"I;¦WYwM‚Q‰ôFAT‹A:<̮޾šn2ã|–X‹þ¢Möev‘²hëFìœê‹·Ì“Źd #t, Éé?ÀÃ1JGˆƒ§Ú â`2ÏT‡±H MãÇ ­V•èìQ«WLW;+ëò5À#“™ú°¥ÐG@´ÅX+FóÇÂ9¢¶¼¬ -vX^Òf¿·láãè‹áÍ:»ßñ€þ<™~'\[ð—åèMù†uRh’wxb±?ì O,ÛQ¦à\àêö±¦hg=è…l8Î*^"¹Ÿ°ñY½’ äè9E¨ JreyÄyG¾ (•!A/)uì6VC͆è=mky m7¥PíX•y좪®ÝŽMÃ`sÀØÍV¬ÐBúàVc{}€mSï­‚ÍP‰sâÃÕm[®Qw¥N8jéãæÊØ„N9‡6ÎluKeG© -s„c³ ¯XYñÔõU à©^4«²³ ƒì·€ïwõÁœòàW0*M‰»=\šyU\3<ÌHþ *#0s-˜NÈàJÞe”Y¾£íbh‹¬„ 7•®6QÖ< ³Dn¹¥áa)6@†Rzñ†g…ùÂõ[ëì -õdñ^°u_^^ur{Üq½¬¾b? sðT'ÑÇjcPªÞ¨ 0°„Wë¿Å -½-Á“LQLöo ¡Ð©o‹©òÝ—bÿ¦Ø¡â%•Ú…Ò0r‘Äå¬j½B}j…д®Ç¡®6ì]yˈ%á¦=7«|ÿ¬NlY{éÁ..M™HÚK!½×eyõÎßœ±«fÓÅ…>YŸ‰>½™Ïеâvœ{¶©þ6‰²ìÅüµTtNz:þmÐü@†`iuDÅÒyÛÆcn u-N”œ¥npžÃ49¨¤…ä‰Ç–Ñí<¼Íט¹…Lt¼Ã8—šø›!§èžflëÝ®¾é“«î»MûÍ?Î7عœ¦}ö*|3}1¬sÈãäYi…ÓD8„?ôØÚù øs Ĉ²ßÔvµOÐöö¡´å‡Qžì–³¸^'½#gË’é{Qæ½1sð|ä¦)»ÎTw>ú5ì{Ð{%0ã¶ÿÙ¸8—cíûƒðœ'â9Õ‡£éê#VQ¨3eß‚çåcìÇHPŠèë$ˆÙœ0Kƒ/ʬ Òü°I«ßëRK!oÔT®xœ—?ÂW±«í)5Tɧ2̲á*%¸ºåæ<â|à˜Ì“ Ža3*yã!¾¢Œ‚òM¬qþ’©k ÷n®¸RWöŒ:Mî› •5ù<íSñâ“9˜®t‘C³Ô?ËÒ}èÐC¦Cù2ŽìXyô <´Üü}®'š[·ßð9_1aYÔgÁq&(°a'7…ÝëZZò1-™àZ´¸¦‹[wm}Æ÷ -æ´UuÇK­{Gm±274ru.·<‰aö'È=Òó²jÌ‘ƒm+Þ¬Pì–‹¹. :¤óØ-µ³ð4|êKz ½ÔS:eé"éÛºZ›þLÀ໵ âÎ+ú*øDx¸™°Í[SÀ|ãÎ_"6›% ð¼Gq'³Šü§"Yü²Ë×ù–C1Vr”s;P½ ô€In8~½>B&ÏW" -6•¼Îʸ)Ž³V¯"ÜÕ ßáX£÷¤nŽú43ÅÔû‘ÄÄL²u&kkà ùø"hU˜ ->mþ¹hÀ4;ܶønrtËìp‘쯒é%³Ì³þ’YK–D“¥k懑# Ø«ƒû»Fd׋saï«ñ,Ïc4¬"à5o’ò…T9' €úCÄêî’zØÖï}s¾Lc±xûùå¸|ûãû$‹–Þ«¾¥}з|óSeK«KÈ8c,í9¿A˜?q)„R°¹—A¬íÿDœ:žB¤`œýƒÆG -ñ.û5t‚¨ðÙŸâ× ïŠ”ø(ŽD¾ŒØÁMm‡ Ðß¿¥“¡„Ô\äaœÐÙàìÄ´àä:gVï5p -§ÃEÛ;¾¹/f2ɸÒÄÕup¶œô.'“—Þ,î†õýs—üi÷tþü’9:>[ÚúçÅ"ÌsP7¼/°û Á#ñç××ûài\íW’°R°bŠ4óõÚÄcx½âpÞ¯öh ¾-!jzb ‡þªÀµd}Y -3ƒJn_ä -|Ï:z\ ÎÐ{\ Ÿjñq¿úŽ:P·íLµxcïV¡­Á»Æ–ëì…ðþUAhØáë)ê¸,š ¿Ìħ[½)ÛCÝ»Wtúbþ<ìê’n!¸ #Q½9®û&ˆT›¯±y€èšruôæ-9ˆž‘#oCw+6nµã{ŽþŒÒ\÷a°q‡Ã®\')ÙðP²¬6GDÀ{½q0MÇA•˜sçÁ×8s­7þ?¡`ëÂ>^FÓ÷ÿ…“Øi -endstream -endobj -992 0 obj -<< -/Type /Page -/Contents 993 0 R -/Resources 991 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 878 0 R -/Annots [ 985 0 R 986 0 R 987 0 R 988 0 R 989 0 R 990 0 R ] ->> -endobj -985 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 542.488 129.639 552.039] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -986 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.436 528.938 176.917 538.489] -/A << /S /GoTo /D (structbsec__input__t) >> ->> -endobj -987 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [90.192 501.84 153.38 511.391] -/A << /S /GoTo /D (structbsec__output__t) >> ->> -endobj -988 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [414.427 451.231 497.059 463.734] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -989 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.363 274.015 262.996 286.518] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -990 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [66.247 237.525 150.492 250.028] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -994 0 obj -<< -/D [992 0 R /XYZ -13.423 915.745 null] ->> -endobj -141 0 obj -<< -/D [992 0 R /XYZ 29.788 615.164 null] ->> -endobj -715 0 obj -<< -/D [992 0 R /XYZ 29.788 589.922 null] ->> -endobj -995 0 obj -<< -/D [992 0 R /XYZ 29.788 589.922 null] ->> -endobj -998 0 obj -<< -/D [992 0 R /XYZ 29.788 158.82 null] ->> -endobj -991 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F89 511 0 R /F44 228 0 R /F120 619 0 R /F159 996 0 R /F163 997 0 R /F97 510 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1022 0 obj -<< -/Length 2319 -/Filter /FlateDecode ->> -stream -xÚåZëoÛ8ÿž¿BŸ6bÄ—Ûë‡ôšM½‡tSÇÅb/ŠLÛºZ’«GÒÞíþï7|H–9‰“.Pà€Ô¢ÄáÌoÉO'ØZŽµ´ëì^, ÏÏðűxÀQ€±å3‚<Æ­\X‹ƒ÷ˆ â’Mw'ÈåAÔq-s+ [r˜üõ¸X€­(é@„³>§]Ïš£ÂÔµ<#Ž‰d*ÚÐG|ø4\—2"yÿj¥ÖN¦Ÿu(p“¼[MÅt«€úp®Æ.µìZ/Ž‘ë³–ZÚ\ŽC¬qæÞ£ZmÛ˜€•¬ÙAËáTëºmîЕ=¦ëvHKȇ½>¥®ÿfzpü%¦(`žgM çû–hOçÖÕèMVD«C›xþèR¤E–—":¼žþ|p:m)ƒWîùØÔ—ü¯®k?[•XwŠ4‘ä€Zkë²­¢sh©G8„b€Âjiíêšœ 逹‹ˆ‡{J\žþCë0NK±ÌÃ2ÎRýᬊçB)´o<í|Â\“Mù83øÀLKÀqâ"æSËvò¼@¼ó0¥È‹”Žkï`y.뛘~cbN]D)‡¶6òwÉ#<àúñjBÖ3,”Ç1qÚ&)€xGÄwµAciǾí!F Ä‘¦H²ª¼ÉÈÏo-qžsÕëâJg uS•ÅÀ¢q˜›Ï”ÝUS¢‹v…_Å鵎ú÷Ur#rÝÎú®×Y–bn>+œº]”y•Å‘~»‚.Ã'àS+¨^rQVy -<ï©Ë]H¶„=CÝû¡,°¼,œ÷ç1<áœaD¸ 1s±öÅD¦Ì<¤¹2Ùrcœ÷/‘gÚ¦w+a’WQE‘(ŠEµ6®ÉÊ•ÈïâB—:‘ç™ñR”íJwˆ+=UÆÕÍÉ™™l -ŒM÷]‘‡Áa‡;M:zMö‡Ôv™Â´Žoò0ÿ:Ós~[Q†eUaû‡ÄE¶©ÖMH@°ß‹mªR‘RU§Ëýy®ÂÛšUœÀ–lôëï`œ²€_|ô”(î:¨» ƒINº‹"Ai$¶’&Z"’€¥Ê[ÓAü+Ðl—_·dù;IgÈnÃxÞ¬ÅøY ¿eÝÛ0%ÓnÞ˜?z~8×h¿°º2¶šÅó¡èy½'75H³ñû‹ÓÙÙÉåäôr|9ýeÒc?š+ÏW"^¦ázXõ˜tĽÔf2xg:z{Zqe±[=üùhzz~q:9™~œœ>è#þR%óÑô›Úl_uÔ#ß™Þ}<¿O{ú$"ƒòwßÔbOõÐcëñ¡j¤ÝT:No³O&¡'aœêÖ&ÏdùÖ¬Oz›*[‹*Ôõ‘4«—ÓÃç;U-Üó ô›¢¯·\SZKÀQ§¢9j—`æåou=ѬIøÙKý¸”Ë`³ÒçYµ\õ–ñ­½ÚRça<ñ¢7"‚MŽY“eé,æbÞ[}ß TP›·^•XÇöbÈd§<ªýòÏæXE¼‘ ›»v$ü×Øùü`e†;øP• ù\³¢¾ÞÓÀÆ~õILç“ž7PPVÈ’×yuØþú÷:”´ãêÎ~hTtöÖÎEÀk«WÜÅe´ÒДÈñ5jòä %{ÉQXˆçmEÚðq*“íøäC_…šTm8½Š6y,nûå³”P§Õº4¡»È³¤=»”µîçäýJʺxgff‰(WM‡õ'¹œÎ{ÌÑîV)á§ÁEêa.öS\:ઓó7ãÓ÷æ»*Lnb‘–;ö -ÿ?þ³lJózkÇŸ&;¶Rïöxˆ{Ýþg‡ÿñOŒµnžtó‘¯Éˆ º9Ž^=—¢œEYú»ãe¥–eŠ©óÉÞ)@¹€V®„¸&!.òÉž;í6¶E\#Ûn•A\Œ¤ )â̘¨ ^õQ:IÅ.ma’gw­RµÈ¡G†¶ƒß6Ä1]ÞÈè­Ì!ª»¨nþ-¢R¿”™~F«0] -ÙÖHì«Ž4+cyÐ"yü¡9¾Í¢*QT¨óëm`ÈäÓCÎGö›óS×wìÖU‘­n‰ì“÷ŽãÛ:“@DT&5Ö™Á’2y5VduÇ2ÌçªÞ‘¯aúU³žÇÅ&+µŒÄ—Í:‹K•<̧\Àv^EÍ'$æ±\7 °€’ï¦j S¶€k1îd›;!q«KsÕ›ËUy©[Ÿ[•ç:w|›Í:nò­ü²¨/†ât^I¡a h¡¸”ÇËêOõk¥îõ*aê?Ÿ`‹«Éñ÷/´ÿW<) -endstream -endobj -1021 0 obj -<< -/Type /Page -/Contents 1022 0 R -/Resources 1020 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1025 0 R -/Annots [ 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R 1009 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R ] ->> -endobj -1001 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 588.189 80.996 596.9] -/A << /S /GoTo /D (structbsec__input__t) >> ->> -endobj -1002 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 569.26 85.181 577.971] -/A << /S /GoTo /D (structbsec__output__t) >> ->> -endobj -1003 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 540.867 118.655 549.578] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -1004 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [66.451 493.544 106.102 502.255] -/A << /S /GoTo /D (structbsec__input__t_a916867811b65988853b69f729b91c262) >> ->> -endobj -1005 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.662 493.544 210.71 502.255] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650ad30626f0de1be98802cb5e50c8b67207) >> ->> -endobj -1006 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [66.451 484 93.549 492.791] -/A << /S /GoTo /D (structbsec__input__t_a000803d39a2be521f2b5e7017c31303b) >> ->> -endobj -1007 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [66.451 474.615 110.286 483.326] -/A << /S /GoTo /D (structbsec__input__t_a90d515d57b274dfde74a281de469a3ad) >> ->> -endobj -1008 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [66.451 465.15 106.102 473.862] -/A << /S /GoTo /D (structbsec__input__t_a916867811b65988853b69f729b91c262) >> ->> -endobj -1009 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.662 465.15 210.71 473.862] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a3eb936f08a8f6f01d4c683a6ba0c9d3a) >> ->> -endobj -1010 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [66.451 455.606 93.549 464.397] -/A << /S /GoTo /D (structbsec__input__t_a000803d39a2be521f2b5e7017c31303b) >> ->> -endobj -1011 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [66.451 446.221 110.286 454.933] -/A << /S /GoTo /D (structbsec__input__t_a90d515d57b274dfde74a281de469a3ad) >> ->> -endobj -1012 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [66.451 436.757 106.102 445.468] -/A << /S /GoTo /D (structbsec__input__t_a916867811b65988853b69f729b91c262) >> ->> -endobj -1013 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.662 436.757 198.157 445.468] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a381b968290256e77d50c4f7e92bfb27c) >> ->> -endobj -1014 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [66.451 427.213 93.549 436.004] -/A << /S /GoTo /D (structbsec__input__t_a000803d39a2be521f2b5e7017c31303b) >> ->> -endobj -1015 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [66.451 417.828 110.286 426.539] -/A << /S /GoTo /D (structbsec__input__t_a90d515d57b274dfde74a281de469a3ad) >> ->> -endobj -1016 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [66.451 379.97 122.839 388.681] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1017 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [83.188 351.911 114.471 360.288] -/A << /S /GoTo /D (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a06af666972edcebef3302d015f1d56c5) >> ->> -endobj -1018 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [99.925 295.036 164.682 303.285] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea2368e219ebbce4e1ede7209486283a6e) >> ->> -endobj -1019 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 114.804 129.639 124.445] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -1023 0 obj -<< -/D [1021 0 R /XYZ -13.423 915.745 null] ->> -endobj -916 0 obj -<< -/D [1021 0 R /XYZ 29.788 180.037 null] ->> -endobj -1024 0 obj -<< -/D [1021 0 R /XYZ 29.788 161.467 null] ->> -endobj -1020 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F120 619 0 R /F97 510 0 R /F44 228 0 R /F163 997 0 R /F159 996 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1045 0 obj -<< -/Length 2771 -/Filter /FlateDecode ->> -stream -xÚÅZëoÛFÿî¿‚Ÿ®2`®÷Å×÷!nÜ\Š¦M½kEK¼“H‡8)úÇwfwùiY’NH-wg3ûÛ™ÙÇåíÍ;f­Š3j­,j½>ƒƒçg(¡–8$`Ìò%'žt¬<¶îÎ~Ý©| RˆƒbúÍN\'¶º¬ûlûb6Ãÿ=Ç'2`V´ Ü‘CISÏZœaµ<Ÿ‡qŠmøÆ}ø^\WHŽ²³RkRèç3"¨i(»óª„¶ -¨‚Ë7[a½Êê4ØýjL©e×z9Œ¸¾ì¨¥ÍE)·âH?ðöjÕ·+Q¦ÅÁu„Öµ}ÐUîÓµmÒéä׃¾„.¶¿º=»üHÉ ¤çY·wˆçû–èñ¾]ZfWY­Ïmîù³÷qZdyGçŸn<»¾í(ä£îùØÔGù>Qk ´(•[ªê«am¬÷]ˆàÌñ¡®ð¸Ô p­VÖÔ§›×c:0Ç%Üc%Þ_¯ux“–ñ*Ë$KuÁë*YÆJ¡Cù4õ¼üqjÁq]‰ˆl×!Ôçð¤ì¤EYZ”ç¶ÃY•¤¥àóA@[WtÚz”¸hcÕ&?dùÿç‹êî.Î/Lõ~Wº¾ öpLGé0eÛêà–„ëÖâ?R*Æ0D0§ÅPÄyn’?â%¼–e’®Š1(Œ†ûGê0] ‡ AÁK!bÎ\âJ˜}ÂkëÜÄežÄ_b=DåÚ¼DUžÇi©l’EæßÌ—,ø|Ué¡%c]ÁŒ‚æ«aº žMpàͶ%‰/gáf“=øîÌÊL—å-$,U ¸…¥ºFU€‰ Á€ºÒ£<Ý€jrË€ÕÖÕpQÄÑ|—óX0%­ÍÙð“s[8.Ú®ÊÓÂh¢‹$Õ¦‹M¶Ð¥qeKnh,60”ëÏóµ¡ÆÇcWy(¼óp—q^èßÙÝ`H{£˜˜V¡~Üeù6l¤oïAîbcÚ=$åú`£B;eÔâ£ö\„Q|Å|¦Šµ.õ5kÎÊqObqWE›.êêÚ·µ îª4R;V§sD[ÙŒE®’<^šÉôsaPUEý†A¿,ãEµZ!aôØVù}VÄõȦ›oçžœMN=iþ™_v™CÀ­kF½DBŠº7CØê#å"ÎM9¶z+°\F‰™rrV€#ÒŸ”Zð쨅 ]êâuh¾×zaÚÝçÙ¦Úâ›þj&¸hGGýŠÀ5hTÒ`$'XÂÈ_Ç&xké ($ à• j·ÚLžÀ`Çùp¿ù¦Ë’²;\A=‘‚þD2-±ºžm¶¬6q>Bú³w›8,Ú>œyò–ó·/ÿ3wóË»ë›Ûÿί~úåjþþÍï×=ÒM9cÇ÷Æ7LC¬BËÀ[ô)‹coæg^ÚÍ|¯UÏ·w­+êâë¥1ÆÛ9ªÍ‡YŒü&‹q„K„À°¨ó˜g—  ð¤JÈ ª?*!Â@ܱ8ô &;ƒ³ÔÆHÆ( -)÷›@¿›äy.ˆcAA2ÝéÊó!õú˜j6O–»}sHi8“Çö¾;½F0ä7PÜ@A"¾Y‚ƒIMœœ ‰MÅ}© -‘ù—ý7›„iÔåæ*rÇ˦ò¦Á£±¹†ÎH‰+­…ýçY¿›¼—T¡ìý@ÉîH8Îü˜‘Ø# B0yÚ<;Q†šg«Ì\ÈS°fÿ<£>ñ…q:ÙÞyV•“í8Tã­ j"ƒŸ˜pÇ¡èkÜ0µ ãªñ–®³Íràõ[¼}ÆšÙƒùì4K†¿Ë0á±à4–ž(Y*}+âyX*Ë-vr48Ô(I{˜FšómøušªGb§jÌÛðk²­¶Æs~ “MجDLÚ“Ìžn5_×a‡k(‚ñÓ¼ê©2_=ª(ô<|õâJ÷É|½È¦ë‘ÀÆ9ÛÅe¶gŒ[›æéqýy -®Ô ú~;g¨EzÆžƒmtµ«…Åy1Übiv -özÖõØeˆpøižõTŠ©Ž$L<—gu+ïÓ=ëq ÆYÚÅÔl#îåéq&üiÂOqº*×[BøÝÆÛ"w—Š{È{°j»Äs ³'ºÙe(ò -Àâå™È+9‘Î3$¯G¢goÔäô‡Ã±Ëa*XÈ˨¬ÂÍ0Øas½¨{<•í-¾öP÷`vi"„8Ñï.c|uÌÞº Dº~s$ ¶µ÷ﯚ3„ß›ðÃ:®—µUÅEqWm.ÌpÁ8åICS/ÎóÚ»DÙÔñq”žê„J¿ÞÔ‡? ¸ì¿¡A9¬°p@ð®ÄS/h€JqžÖ)rï|RA­nõ*Œ”ߌܾ9ê‘R¶ÍÖ¨Ê×<ß0ÿm¶Ôg<ÊUCà® =Øö †Ž@°ÙŸøà³WaêÏEµø_•úî´à3Z‡é*ÆwGfãæ”úfeÅZÆŸZâ«,ª¶ÊˆªBµ]Äù?Ïm3j·çŽ3³¯Þ^»>µ;w™luÉ~ù3¥¾­\ÄMκ|TU»bo4‘í­2¤O+0`H}ͬ›Ü# Ú5,ChsëÀÑ«“þÖôx\ -cæÇþÞWáÔ} -}‘SØÔ¿“@ÿZ{!`Áˆîê‹ÖÙD3k²Ÿ3µ -rÀRØþ@(‡¹D Ú­þň/|™úÙ©d^#ëÌ|µíN+¬^Wk¾U´[ùÃÏÃö}ñkTÖz¼Wº5—*„| 'ÔW× ™©‰ÿºïÑÖ:ΪMOïl¡¯öóüîUÆ–M¦Ž©¢Ýy½¤n»WoT¶hmeà‹þK­n-ÛðÅn 3%P÷aE.ýÞ•JXw®TÂO9{½]ü[@n>Lâ²N—åÉj÷9Ô»ñBúBG¸)²úÃ*ÌÕ­.õ3L¿iÑˤ¸ÏŠp£³øëý&KJå> -endobj -1031 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.91 678.264 411.796 690.767] -/A << /S /GoTo /D (group__bsec__interface_ga8798390d842b820e79e9cbf8ba4d516e) >> ->> -endobj -1032 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [403.485 664.715 524.921 677.218] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -1033 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.541 625.701 240.588 658.026] -/A << /S /GoTo /D (group__bsec__interface_ga8798390d842b820e79e9cbf8ba4d516e) >> ->> -endobj -1034 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.68 598.603 567.119 610.833] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1035 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.953 319.384 260.921 328.175] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1036 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [183.611 309.919 298.58 318.495] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1037 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [112.478 300.782 227.447 309.246] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1038 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.4 291.317 248.368 299.781] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1039 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 253.132 122.839 261.923] -/A << /S /GoTo /D (group__bsec__interface_ga8798390d842b820e79e9cbf8ba4d516e) >> ->> -endobj -1040 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 161.172 129.639 170.812] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -1046 0 obj -<< -/D [1044 0 R /XYZ -13.423 915.745 null] ->> -endobj -1047 0 obj -<< -/D [1044 0 R /XYZ 29.788 571.106 null] ->> -endobj -517 0 obj -<< -/D [1044 0 R /XYZ 29.788 230.97 null] ->> -endobj -1048 0 obj -<< -/D [1044 0 R /XYZ 29.788 209.939 null] ->> -endobj -1043 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F120 619 0 R /F163 997 0 R /F159 996 0 R /F97 510 0 R /F44 228 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1062 0 obj -<< -/Length 2807 -/Filter /FlateDecode ->> -stream -xÚ½ZéoÛFÿî¿‚Ÿ¶2`ŽçäÑ`?Ø7›¢iÓØ@M¢Æw%Q!); úÇ7)[’Q GäÌ›wüÞ1Çå݇÷ÄYägØY8Øys?Ï/ð;"($Ä 8E>N&û³ß{/ -ŠL{˜ ÈawÔe9g=qÔ0õ¿/ÄCâÄëˆ -Þ¥4ö,Éqæ#Â<Ç„*¢ŠA¾Ñ…bžÇ8U´ÿp6Î(Ñ/gˆaÔíFS­Ð/.ß®™ó:VÇ™}ZŒ1±ÜR.Að†XF]S'D‚¡ÿ¤T5ã.¡ %L 9haÁŒ¬usDVþ”¬õÆ$¿,800†Hè©ñ×wg—?( C!÷}çîÞ¡!òƒÀñCcﻹóqræñòÜ¥~0¹•›<Í -Ÿ¾ûùìæ®! áB#ÜBÐi èüŒ9|üÙÁ Tê<ê®kÕx`ÎʹmÊ€%"€¾Ì§ 8ð °Z8cŸ>¼’QŸt„¸½ù—‘áí¦‹,*’tc^¼Ù%s©:OcOÃÁ#h…VM¥‚µûpçn]óI´Z¥¹jãI‘šw™,²D>Hó«XÚF¼Ë2¹)Lß¼ˆ -™›é}EË4òd±‰V¦ã6Kc™çÉfa¾­ÓùnUŽŒ6óÖ$¸Á™éhÚ;=Þ( LÁ}ìÃÓ ±1V÷XÉù¨ÉÍrOÕÀËŸs|úXë§ÄËù„·µó slÇàÆaS뺦C[뮨‡ÇdàÌ¡éºÅT«ëþHËòлŒ‹ÉÝ2É >*£¨¶ydHd…ù¡O£5h´”¬Ý2댟¥éØðü[^ȵiϾ™g L£tEB)=Zê–@²PMõ€Ï*¶A”ÇQá¯i1ì/¸+ZÛzˆûÔñ|xRbL{¥ðD'iö?ƒ¬Ùî¦L+K½OŠ¥…°zÏãÄž¦¿[0j+Á›L~Ù%™œ· L'ËÈ~/Ýi&Ío0Òø½í¯õ¬z•îu¿ÛÄ6DÀk¥þ’«’Ð\Æéz›æ²9B‚0!xðÔ*Èe–D«ä{<Ë»jl·«o¦™æ©'÷E o²JfY”}ëŒLŠÜ4¬kLóÉû•Œr;p—ËÃÑäéˆ0}wõŸéíÝÕÝÍôú—ß®§·oÿ¼éàI÷½O³A•tÔÁCį̈CùZQTžSùDúÊCÀú°m ºÔÓ z!{®ï£,ZKpÁ¼Åd+{Ù°ì(x/y±0¨’—`bL@Û¤¯§ 0àŸï£%#疄΃„⦢aâqÇÃßè"2$n”¡tÓOí>nå J¨ÆT~Å‹ßbI‡% ’ù@Y†Ìž½üRÓXÆÊ…¾·s0É'(ÿJgW6ÅÆ­Œu‡Øþ–E3ëÒF&î‡Èä»l#ç¯l×e•¢Ëße–¶ÇVÙ#•¢ˆÐ_ÆVC[9‹æõU+<¨u)?Bµ=Ì+‹“üæTÚo<¨ëq¸_n¨|ÒoàS›óÒ'gWŒzÎq\ zN‹©2yȹIî{Üç8ÚâV8kòp]§l°Só\¦«y·¬©˜µ%MºQŽd#ýl•Îö@ô`öûðò²€„OOçi$46‰k†— -£”"Ê_ ŒÇÔ0.›õîq½Qö v£èòòÜTLn¾Fë­ŠZê¼lw\u$Áõ6iHÃ6¹«Õ*ìõ¯‡05[ɶÊ;>DœÚ¸j²)‚iaFu]èã{wÏÝ·›|~¥Þ¨_ÅŠ¨Ya´äe¤ª×ßþy螢ô\ÞZ¬ñ.k <lþf¾Ä€õlú¾¿—Ùßj¾1µøÑÁðïÑÑqÞ³H³¤X®­#Ô6U;ÿæUªw†õ»yþÐ…Á`ñL!ni «SªC¤®˜êx_ ûìÅ>÷¹AÊ…¶'ˆ`¯eÔ¾-‰ô'P>¯Z¬Bhç­³²r ¿,ú8"ˆ"d1®å~P½©½›ƒ¤çêÕ„c°¶§Ä¹Wx…@`Öб=Ù˜š”<-º' JÖ.SFŠµÃ°ìHPÄ6ílÉv&îEØàÞJ¤¬°>aÌLF<Öèê9 ¾µÝ[éÐ4zîpRB`éiÏ¡\4Sr§°©¤~$¨Å×#ð²ªOÉËs%ŸOOZ”Å8òËMüÎXˆÏÐÞÕБã%ÎiT N8Pâ‰-o ½§Kpèñ)=¥°ªðücÙj×àC <¸ÅUoçïGÔój´=ûÀ½=³ë}’×:o7ðîß ¡ê:RÞÎ)ˆ ‡·)ä¼î¦t^d»¸(‹Ï¤¼ÔRžó—Ýfå1~ºÝ­ zÚâßžF?Ë©zó@rcá>úÞit8CW Pj °Ì$Ï_%xÝUBrò¡QíÃR—Ûu+Ë‘«<ýñÐÚG]Ù“"jmqR§ýÐÕÏÀû7ŠŽº¥MR{®É®~`óûtnŽ05VüÜóÔ™=(¬‡ŒLþR:y‘ùœïfÿ•ÊwÔå(ê/£ÍBª¶ÐÞ¡ölõ‡MZ$±44þ2_§ñn­¯oè»õLf?ž»>%tîÎ…˜¸×ïn¼»ûY®¾šå^ýŠqàKîT„0îYWçþ æÛîÇÁ†L•Q÷p% çó‘ÀÕÕ´­WzC­zÁF ~^úÂëhäöŒ½¯C1 ]ì¹4è,<ãä/¥g Q“¢¼¹ìèœ sFç9ÓáA€¦ÔpøD)x> -endobj -1041 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [526.903 725.921 567.119 738.424] -/A << /S /GoTo /D (group__bsec__interface_gac79a471c6e20fd8c17577f6f69a9469f) >> ->> -endobj -1064 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 712.371 82.93 724.875] -/A << /S /GoTo /D (group__bsec__interface_gac79a471c6e20fd8c17577f6f69a9469f) >> ->> -endobj -1042 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [458.194 712.371 540.827 724.875] -/A << /S /GoTo /D (group__bsec__interface_ga70e68dbe60e2ba462537540d60192a2e) >> ->> -endobj -1050 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.448 659.809 551.391 672.312] -/A << /S /GoTo /D (group__bsec__interface_gab2122fa3909f67a2c786ecd2d8993977) >> ->> -endobj -1051 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.4 388.862 235.816 397.327] -/A << /S /GoTo /D (group__bsec__interface_gab2122fa3909f67a2c786ecd2d8993977) >> ->> -endobj -1052 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [171.058 379.398 273.474 387.647] -/A << /S /GoTo /D (group__bsec__interface_gab2122fa3909f67a2c786ecd2d8993977) >> ->> -endobj -1053 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.506 369.933 260.921 378.183] -/A << /S /GoTo /D (group__bsec__interface_gab2122fa3909f67a2c786ecd2d8993977) >> ->> -endobj -1054 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.584 360.469 240 368.933] -/A << /S /GoTo /D (group__bsec__interface_gab2122fa3909f67a2c786ecd2d8993977) >> ->> -endobj -1055 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.506 351.004 260.921 359.469] -/A << /S /GoTo /D (group__bsec__interface_gab2122fa3909f67a2c786ecd2d8993977) >> ->> -endobj -1056 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 322.284 89.365 331.075] -/A << /S /GoTo /D (group__bsec__interface_gac79a471c6e20fd8c17577f6f69a9469f) >> ->> -endobj -1057 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 237.097 129.639 246.738] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -1058 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [90.192 223.638 158.088 233.189] -/A << /S /GoTo /D (structbsec__version__t) >> ->> -endobj -1059 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [78.035 60.127 153.391 72.358] -/A << /S /GoTo /D (structbsec__version__t) >> ->> -endobj -1063 0 obj -<< -/D [1061 0 R /XYZ -13.423 915.745 null] ->> -endobj -1065 0 obj -<< -/D [1061 0 R /XYZ 29.788 632.312 null] ->> -endobj -883 0 obj -<< -/D [1061 0 R /XYZ 29.788 302.187 null] ->> -endobj -1066 0 obj -<< -/D [1061 0 R /XYZ 29.788 283.645 null] ->> -endobj -1067 0 obj -<< -/D [1061 0 R /XYZ 29.788 193.864 null] ->> -endobj -1060 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F33 531 0 R /F30 532 0 R /F120 619 0 R /F97 510 0 R /F44 228 0 R /F159 996 0 R /F163 997 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1086 0 obj -<< -/Length 2323 -/Filter /FlateDecode ->> -stream -xÚÍYëoÜ6ÿî¿Bp… T´ø¥öSÒ<.z—8Û¨[Z-w­bWÚêa'Eÿø¾$JÞ­½n°¶(r8œÎüfH],.ßá`ÓžÅÁ&ˆƒ7gð`xþ=qÀ3Ž2Œƒ”$¬ÏÞß#¾.ˆ+6Óiœ „góYnÍq-¨iê¿à)bŠÝLD8›s:ötìÓ$)FÅT ÁIQ–*á ‘$”Åûç  -Ž2ýã ј7ÅÛkj¦£ºãâíŽ/kõ¸°«qL­ÈéÅ1JRæ©eÌÇ$Ègi&Ôj<¬cÃZ1§F×±yDWö®ão‘÷'+B¦”"œ%jþ‹ÅÙÅkpJLQÆ„ë€dH¤i 2³ß‹Up¾¨Ûâæ<"" ?Ȫ­›Nç¿-¾?{µð”ÁŒki6Mÿ«ßâ`ƒß1•wšt§ÈAlƒ¾ˆÌS ¥‚pp Ä@Np«MplèòÍ!0Ox¦Ä‡WßÞVÜ4yWÖ•éxÓ—+©:ÕŸý„ØVªkULD¿x Ä+Êl'È þ“ –Ò âb -~qqqÂÃWóÝ~+Í tNå‹0 x&Yll6ïƒÕþë„ÖËV×·²iÁ×Ý„cpá˜Ç¡ýÖž¶ ó–ÙÈÎ-5[(üúÊŽAëÅf¢î›²êÖŠr°$€š“bx¿Ô\Ÿ™WÖ²¼¿1oÿZ!÷{6åkKŠNÓ÷*Üå¿×Í=n“åOçYVŸ™'áÇÉds´à×Ë~³.?~ ù°öyLj¯ 0Eœ™hp²p…iˆ rűñ«²*;åŠá“bÂD!$³D™d­üÂ0©ç¼ÛrÙäͧëFv}s T”•iŒÑœ« F â;€â,3LoërunÌÉm@ÌS˜—"Âl¼öe¾-ÿ”¹ºÛ°ž ¢CÜ •Zœ¶Ï“qHo‹Ïסb’…yµ2F¶²3ÍzmžL¡U¶æ¹—ͺnvÒÎY~2Ï"ßnËjs¢ç»» 4:(áwv =©»q­ûª• l¿w”ÊtI -êm}­wµwnAŒ@º©9G1KA‡`J6U®ßh¸«WýV¶H”ò°¶¯5ÄM_E]¹“†x%÷²Zɪ3ƒnOõXÛ囥wFO—F/E õQ…јlz—âÔè0Eó1}j35;ýÂ3møcfµ“i[n´²ª½oêB¶­Ù x·Ê[W­Ís%×y¿íZôH# -Ní²|LKÏ@£O¦±îнQ/<ì[©m-œ=˜oFîú¶3­¥÷dÅ2.´)nPìôn½î&·3íV3¹«ck`îmt6Ã"æ¹’jk*ˆ’G<†ǧ氩«RmgëL]Bj˜vn}m mñ¼ËÑU–ܘdi²5€L§d.5ȵ ¢ Q̸pÖ~‘•¡\[¯è %˺ß~m:jµEwe+læ)›Æ©QÔÇj°ÇÕNƒ` ˜OK'6ÕûX Ρܺ—j^ÅW}¶rKgˆÐà 1¶©ø©0ñR¡†ƒëºïöý—I‰ì))їꩱM ;#¡žpfKÔ!À¶ú(r]ÚXšJÌŠs¤Gs,fà-”N“ì¥ÍwÊOmhåMWý6·¾z[6]ïPÏÈaÝ\ky Ú°‡m0H!ÀÁ&À èÁüÄ%¨›úÎŽ´{Y” -@ -3æ‰Á<1¨ÃÎ2ø@5à©w½:wÆ°ªíÜɼ²Èaƒê|¦IŸ™N“œ,O']çæ{¢=ŒlD±Ebw&yT Z0ÈRÔëY¥óöù{ßÖ_šqÏ”*%ÿ`ðpàà\ÑÏa°è›Fg`½ý»e9¼ŒlÁôˆ†ƉÞåM¾“P -Lqtrbvæ€0 Ùü¼L!׺ó2ÁàùÚ{̉ùs³È Š@üX;®pçv}òVaçí4…x‚$Ea”eànòµþ(ƒ-¥úóÛÅ.xšU‡• gRÉ#©ÿÈ+ %ÑÞ4|ë6{B£¾C‹me`ÄüªÀ§Š¬¿D£Ã%Ó_o°ú&2ù¥®ÒÆQðÊÂ7»å¿Í€òm8MpÌÂçú¢úšrs£ïÉTÛ¢º&bs·mí6y³ÒÇõjî—€õªl÷u›oõ„,”÷Ûºì4xØ®Fî›zÕC¤puT¨6–XtM¹ì½9ykÀÒT µ©6wrkë´ÜžcÊjvJ‘·Ã±Äòý~[x«zÖ®ˆ(«U¯ðîéö²éìõ1šgÐiµGõM3(f-ÆS6?Ùü†Z© -endstream -endobj -1085 0 obj -<< -/Type /Page -/Contents 1086 0 R -/Resources 1084 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1025 0 R -/Annots [ 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1075 0 R 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R 1082 0 R ] ->> -endobj -1070 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 720.495 89.365 728.96] -/A << /S /GoTo /D (structbsec__version__t) >> ->> -endobj -1071 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 710.704 97.733 719.495] -/A << /S /GoTo /D (group__bsec__interface_gae8fc6d614d6a40f0088262dccbb960dc) >> ->> -endobj -1072 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [208.717 701.239 231.631 710.031] -/A << /S /GoTo /D (structbsec__version__t_af823001b85e62b90279f9e6f3c478c23) >> ->> -endobj -1073 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [271.482 701.239 294.396 710.031] -/A << /S /GoTo /D (structbsec__version__t_a9d47d254d17740222791fa0f53c7ac52) >> ->> -endobj -1074 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [53.898 691.775 106.102 700.566] -/A << /S /GoTo /D (structbsec__version__t_a3d9b11a72027026f492a438342a2efbd) >> ->> -endobj -1075 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.953 691.775 198.157 700.566] -/A << /S /GoTo /D (structbsec__version__t_a5daac4534748c6f0be9f009273613b02) >> ->> -endobj -1076 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 616.142 129.639 625.693] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -1077 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [288.17 565.533 339.469 578.037] -/A << /S /GoTo /D (group__bsec__interface_ga51bcd13812ea62b35749284385a72f98) >> ->> -endobj -1078 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 433.03 68.443 441.495] -/A << /S /GoTo /D (group__bsec__interface_ga51bcd13812ea62b35749284385a72f98) >> ->> -endobj -1079 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 357.071 129.639 366.622] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -1080 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 137.485 101.918 146.197] -/A << /S /GoTo /D (group__bsec__interface_gae89eedb131288b72c267c02ec9dea8e5) >> ->> -endobj -1081 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [104.11 137.485 168.867 146.197] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea2368e219ebbce4e1ede7209486283a6e) >> ->> -endobj -1082 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 60.697 129.639 70.248] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -1087 0 obj -<< -/D [1085 0 R /XYZ -13.423 915.745 null] ->> -endobj -536 0 obj -<< -/D [1085 0 R /XYZ 29.788 680.816 null] ->> -endobj -1088 0 obj -<< -/D [1085 0 R /XYZ 29.788 662.273 null] ->> -endobj -1089 0 obj -<< -/D [1085 0 R /XYZ 29.788 422.071 null] ->> -endobj -1090 0 obj -<< -/D [1085 0 R /XYZ 29.788 403.529 null] ->> -endobj -1091 0 obj -<< -/D [1085 0 R /XYZ 29.788 281.954 null] ->> -endobj -518 0 obj -<< -/D [1085 0 R /XYZ 29.788 126.25 null] ->> -endobj -1092 0 obj -<< -/D [1085 0 R /XYZ 29.788 107.312 null] ->> -endobj -1084 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F120 619 0 R /F44 228 0 R /F163 997 0 R /F97 510 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1110 0 obj -<< -/Length 3240 -/Filter /FlateDecode ->> -stream -xÚÍksÛ6ò»?Ê3&L€ù7KçÒ¦¶oî®IFCQÄ+Eª|Äq§?þvñ Hš²#9éŒBÀb±»Xì ¸¼½þ@u}æ9kÇsÞžÁ‡Â÷wèñ SêDœ‘ §’Îêì—À—€…D3œ& D<žui×ܯEœ†ÿ‡""<¦Nº@˜àcL‡¾÷CBýÀ #Jeˆ taŒE$Ž8hÏâþ·S8‘þ~F|Ïlˆ»×TH÷ ¨ŽËw[ßyU©‡‰}šCl¹–/AIñ[Z\žÇœ˜Åá“\í w))yT£ƒ–'|Íë¾y€Wþ¯û)½E~9šq 2ò}Bãç_Ýž]¾¥¤>‰y:·+‡Å$Œ"'Œõ~ß.³«²N7ç. £Ù,ê²jdzþùödz׷=f(JÃÃ(™FˆÿãgÏYÂàŽBeÎÝ"8Ðà;¹sÓçøŒŠ`ý P ÂNP«µshèúíT„…tÄÄÍë4ïŠF®«¤ÉÊBw¼m³¥T «O‡¾—o(ó8 AÀ‘"7Ä‹˜ãŠ˜Äž¯)JË¢nÎ]ÁÄ,+š€Ï¤¦~o*ÌŒA==§É¶r^7ÉvwaQðÐ á  -kÜw=M¹ 6!4îE-Óùñ˦Ɋu­ ê3§}#æ„òÀRöÉóü)úcâSaj¥>Ý~@Y(`B´Ç*¨†Â--òÀ²!ýŒ{À\Æ ײ©2ùEê]½zÿúëׯº­×Õí ¤^µ)nM¦pC+¶J Ç´~AìÜna•Û%½<[TIËø€´)ñËfF¦—ÄF¹“ö”ªŸ+ ÜÃë†Ù]ÁgäÜ5‚-ByùFn’mw`¶’¢13²"•bÔ,ª½›äKV¶æ§Å¶M²"¿G¦§¸œp°:ŠÍ¥„íÛf…\ž»œ…³Å½þnÊ;lš ìÉŒ5²ØQY™±Zƒ|àx±5ìôXŒ<:»=§^4+õ8P®”çà®âWïj%IGIâ€6‰¤´Óò'.ffëûº‘Û‹c‚Ïýc‚ÏâÙ]–£b@ Ôî jõCkïÍRPi”—†m6º• Â[«=Б,ʶéO…FÚV•,Lo·ý8ÐÉ[c8`$‘€XîÉ×j6‰:rž9ºtVH<4J÷±ŽßU›ãZy®¡ÌƒiÅ®5*ù{›Ur ´\KYe_Pc†ªÜœö´vœa/0¨ê=.Y7z.}ɒ㙧÷°Ý-AUçZ:¾ï„$=mŒ`8âò¡d>yÜ3s¼Þœx"´fß´ù"—8òN«nuZe;ܧj4SV^Åg=gñÎ8ÿ]•€/HÓЄF[›†2ªjDm$´Vm‘z“¨½ƒæÂLI,`©¬í‹ahqR”sù&Šê7dæ ÂÉæqfÄï\öHù±»|áÊün“Ùð±’à­ -#žääµ R ˜vñä/¼«Exšø¡E6µb>EpFb #}6®’Úžj¥_CƒÐ3iØ¢O´‹ÑãvBfκÂÅÈ6t±Pg›¼ƒÑ=Ia,DbŒLY¥rénË¥!g ¦ÕF©Ã5 Œ¸…$Aø&’‚hm½–zI ÌVVIö& -wüþ¯ÕÑÙßNKz¾×Š (‹¹ÛÏ:v‰™Ùjl ¶;ºí9ÏÓè> œ–Û]ʺ|PA¿Žñ¨ÉN¦*]ŒÕúeÚÚ bs!5†]R×v2x»ãҕǵ¦šJj§—%dErW?f‡”ÇE‹5œ¤‘Áï\ål€û÷Ó¾¹R¡âä‹cfÄz«²ÍÍÁªs)wÆÛM–ïç}»üâE!¿6ótïe†Û©¬ÊdÍé¯íéOÒ †¹j -agá&ZÉ1aE¨eð!©’-FÛõ`‘AiÂh<ðHDù¸2áÇQW™à4ËÃ|U×&¾;´ÿœC¦@£Çpt@(D˜…*r`žÜÓ eæ2lŠF6e‚ Y—P 7"Dá©TÁ¯ÞZO Ƶ¯YLbœºøèlF¼x´ú](<¡s&†ûXÔŸÒÆ#_Ýãi{¨5€‚Ñøyš÷LJódâ±x‚ØÆ¿Aó ÷à((1—Oj^ÛV½ÓÈšV½>Uõ¦úwô¯OÂ]{àƒlª`}dìå‡wÃ]‘KYI3ÎMPÁ÷e®#…Ãz}4Ïuâ’H×’O×ëãqìýqß=LìˆYÂcæwUB•ƒLy[‡ê>Àeàè<㛕•Ùˆ»´Y_›¢S…äݸÛüfu—Ù¬11p²ªìf¥å¨È ÄòaMÓ,îÕ¡qoœPÂHtî -ϳAm3(&£žSKÞ"$²Ujµ¦©ÚÍuþö0åÂvŸ¸UÖÕNÔ¨’ð€‚\©Îàyü ÞfEuuðAµyXïU›ÄsxÅш'jÒ #/¾/JWY’gÈeg(.¦p»qDBÁ%ÞgÓUüäM;<ÿæ%õ¼ÁŠÈÈI ¢£*òweõÛ|Ñ®V²š¦€$‡5—Óxî­4¯õ©Õ¢˜pÈŸ,þ3ŠeùAý/U2§/_—UÖl¶öä ËyÆòÚ¸‘|[Â{€©ïêÒ© ,Õº•à'˜-å*ióF÷=X;WºÌØR¶˜AÞÖæL½õäíVÏ fVM°ÂêBÁdEÖdI®&WKÓXÈÇtË¥>ÌëÓ¶nÊ-ªéwHÅ¿Íj©|Üõ¹0Eü~j`j©ª}6Yüoœ¦ ²]+C» 姲‘ß\¬á6P DyLÅQJ:/õmêµ.•,ÚOó¥¹:ÑÅhUqÁ~žf¦T‚‰ö¦cïuL‰×Ö\tñ…Í6öþFW‹©Žô Ö üâ~t[Ó+QâõŠ)‘÷-%VÊZîg¨r³‘¸>£úÀرî\ņvÜ­Ý.¿×}YÓhb››ÆûÛ ½½K n6Ü ¥ÑìC.“ºWž=Zculçï_þgþáú篯oÿ;¿úçÏWó›w¿¾»æÉCbeà Y´V]0–ç¥:££ü»·µªÌð‡œÎm»Ð#„X'8:¹çêÑ(ÊGŽÄž‰FDIìÇO¦J^ø ™mQˆŸ‘؆ ÒÀIæaDèSŸ¢ >‘^À ÁÙ‰4Œt0f$„ü¯OÄ0¹Ø“4Ìc½³¢;k‹¼\LdCAFt<¹T 0„üYÊø< ±º…„Ÿ* Ä2,`ÏÖÅÓHšÔÅ>E“åam<Šimì“q£ÝÚàÒ¬ËZûŠú¸öMÞÝ ˆèåÙ‡àÛ˜3ü¨òîDÿõÄ g½aÚ߆ÚÄ5ا¡ïË¥ªÇ§ÊÙâË€ ç;¯n‚cŸÎþÄ›½JšD×íâKôøC]ñÃ7Ý$Å_ B)êbŠR_„"Ž?5ÆWeÚê+Ðn²zqî† _™Üž 1s¯Þ¿"Ïí½ªrÕƒ*÷åOž©›\ÇõTþíÂÁ´Ê§ëÝCààÈ}‡ •4Ž¶S0ÚSˆE÷ ìÈM|(~ƒ°Uà’q}Eï«ä@Øh¢\æÑØõˆ¦F±èq´ÿ–{PQŸÂÑá„é'ŠÎÙiÎÁuÎ”Þ N‡?@ÊðyA¹Ù_”D?°îÛ2ÍÔ9sG£îh²Û›…ଟt÷øÇÃãùCôdͳ|Ü(Þºçà¿bP7He"UX¢ÿõÛéÖ9MªÝJ>ª°&FýG•{m20D§ÐÖüu›=€Á·ûE4730¢ÿ -§å}q÷ -3AJ¬^D‚ùäÑàq§ï‹ÞãNøÉgo·‹èÔmÂå³—ê–úªl½Á8]µºÐz’×¥X'ÕRÅÄø)Ôˬ†Ü#ÉÕ„x&¿îò2k”ñ0]•„g©Ÿé´r™5ú~ ESe‹¶7'©µ±7åQ:°6wÒ>Ò°3lí¿sQòKwM`ݦ0Ygoõ“Žîá²EzW†;Y5&¼ÒÂ!æ‚qõN›rpÊÆÆûbçÿ L$ -endstream -endobj -1109 0 obj -<< -/Type /Page -/Contents 1110 0 R -/Resources 1108 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1025 0 R -/Annots [ 1083 0 R 1097 0 R 1098 0 R 1099 0 R 1112 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R ] ->> -endobj -1083 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [90.192 715.476 181.624 725.117] -/A << /S /GoTo /D (structbsec__bme__settings__t) >> ->> -endobj -1097 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [50.126 678.506 159.06 691.009] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -1098 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [70.944 637.858 183.008 650.362] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -1099 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [487.392 624.309 567.119 636.812] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1112 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 610.76 96.25 623.263] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1100 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [62.97 574.27 172.875 586.773] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -1101 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [250.911 574.27 355.984 586.773] -/A << /S /GoTo /D (structbsec__bme__settings__t) >> ->> -endobj -1102 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [161.817 542.476 271.722 554.979] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -1103 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [41.152 510.682 123.784 523.185] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1104 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [290.969 492.437 445.154 504.94] -/A << /S /GoTo /D (structbsec__bme__settings__t_a300b00f9580b9af76d441cd4db8d7083) >> ->> -endobj -1105 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 303.655 129.639 313.296] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -1106 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [101.545 198.939 222.98 211.442] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -1107 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.68 146.376 567.119 158.606] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1111 0 obj -<< -/D [1109 0 R /XYZ -13.423 915.745 null] ->> -endobj -1113 0 obj -<< -/D [1109 0 R /XYZ 29.788 481.478 null] ->> -endobj -516 0 obj -<< -/D [1109 0 R /XYZ 29.788 368.274 null] ->> -endobj -1114 0 obj -<< -/D [1109 0 R /XYZ 29.788 349.732 null] ->> -endobj -1115 0 obj -<< -/D [1109 0 R /XYZ 29.788 118.879 null] ->> -endobj -1108 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F120 619 0 R /F163 997 0 R /F159 996 0 R /F33 531 0 R /F30 532 0 R /F89 511 0 R /F97 510 0 R /F44 228 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1129 0 obj -<< -/Length 2721 -/Filter /FlateDecode ->> -stream -xÚÍZmsÛ6þî_ÁòŒ ãyû\|n:MëÚžé]“Œ†– ™w©”túão)’¢lKò]oÆ !`±x°x°X,y~{}żyyB½¹G½Ëøá1x~êq@bƼHr¢dàÚ›ü²%|ZH€jºÝN î÷:¯ÇÜŒÅ<ì†ÿ« "2fÞdÙ@x ûšv=kuR(ÂD詈‘€qTŠ}hã‰#…0’£î_½ÌÛ©ôË T€6ÔÝ*¥› ˜Šó÷Ká½Ëên°ÏOc×´üz^#a$[Ӳ梔{1 d«ggµî3V¢Ìªƒ „릸c®ò¹¹nº´ùeï‰ÈHÂâû¿½=9ÿ;’ K¥¼Û™Çc¢¢ÈS±]ïÛ©÷qô6/'÷§>WÑèFge^Tzrúùö‡“‹ÛÖd˜ ÃUƒM#Ôÿñ3õ¦ÐøƒGÁ¨Ü{4¢K Â[x7í9ÁY¬P<j 8VsoWÓõåÐX®Xo7³sxŸUz^$Ušg¶ârNµ™Ð¾|Úù„½†E|\:|` -ÛðOB"#áù¡$JÅàUR$K]é¢ì@éظ^ʾ‰E5&–°ÊZÊùÿRGŒ:(t£§t€t”UN…YqÆiÛ¤ˆ¢áQh š¢û¶Žrà‘•ÈÎòuµÍdʼn‡ƒ_­áT{Uuq=æÅ¿ÇwëO” ] ì£(Ïÿ;]sÂiØðë)‹F²¿Ab~­K=µ¥*·ÏUR”ÚUÝ»ÂÝ"¿ÛF.CØÕèöF¾Í,PÁÂø8v©ÙFv¨xv‚W$!Ö¼»˜y ¨Afv0eã7Çeú»ÞMÐalT±¸‹ãGÍ+wâä³÷w07yHÒEr·pb³¼Øð7Íæ{1xÿ©m±Uê8ÿz€ŽáhÀðõÂ8êì~­«u‘•ƒG¡g†J>‡Ã—:Oò›.œ—x¼×î4-ד‰.ËÙzqæVŒ^<¦µIœœ.Šz‰&ù®óbbœ§ lñúÒí/EbEíyÚ@ƒa…v~~ê<]|M–+$þ€ÊÎ0ƒê! „ðÔ10 »êÞ,ù$©œ¾‡¤H‘r]“y®LdèЬӬŠÆ•íUjèµ€½5—ºª€œåG§zJÛ’Âf 6ôé×!BÎŒ?¼ùÇøêúç«‹ëÛŽßþøóÛñÍûß.ºX>Ž>‡5ú! ¹$x(`/“¯¶ù¯{¢3ö@Ø8d1ç–f3]üé–jaùZç®~¯ ÇÓÇú™.¶´È“©-%ö±*òƒ]å$ÏféÜѵ*ŒÿÄ2Ø"ßIâ—ì-ºc[­V‹o¶h\ôÃÚEê]÷ðB[ooÄ»ROðx·vúD:0Á³gvËÙ[Ï ¡x@¸Ì6«:<‚áØw à­eçÊP«w­¤°:$a„“¥t3±²÷„@­™ÍúWX¥ÑÎpÍÀ³FT´L¸Hø6.Ì‘1®z4vèB²¶A`Æ&!ƒcnâ Ï/«–¤tÛ¬Þý&FbAÜBÂpº é¥ÂIu0KÒ&’²Š­T(ZR<" íÄÚ«ŠˆÏ†û1¬@ -p"7îb`86fMx7~Ùx¶Sg¸'¬# ƒhÀ: 1,¨…útÝB C8jÅk̸5T\ö‡‹`—ˆx3Kâ­;4ç@ Àx.ƒ:~)«¼è_Vž.²dáÂËÅÁÐÒ‘úTÉJQ7BœC„c¹I1°oQ%–zW¬˜êY²^T¶®†õ6JE9tÌXS¦s‹Êà“1”²Ñ+-óéza5‡GMm­…5õøµ 9õG·§Œ‰QnetV®…@*_Ué²Kf™d“š‡½@Pö&OcB¹´“×åJO€ÎèƹRθamÜp4OJÛRš’­œ­³ :`ØØ]ŒÎl}ZYÙ´´¿ =É—KMííT¹Û)6À餴«­kVYÁZ ýö<¢Q‡q_ó'=ª‘T£;=CÚ 3®«ñ8 R9«­3<ˆû×ÕfâYÍÛ¼häóÔ1w¾Ü\{–mv«Q–gþC¾€s®¾-õ2ïè¶T2Kc³ö Ñ¡T/9’Œdô„{7"1k¼B—ëew¶.ð¢á&tneøžÝé;îM.\Á£Ä8˜Ÿòjø¢2ä)¤ƒ„°ÞÜã’›$¨þ`D¼¾ËF¬}—ÅúÔ\¡¾Äz9IuVÙ&ã6M“ÙPSè/ë´0jíZBõ}âÚÍVÁ!´ý½‰ôLí7'uïÔÖ[ÒVO`GרjESÜŒ«¼Ô›ž;¨Ï{&€U¡3A}ú5Ë×<BÚpëjÚ ×K7KØf0Š—ŽäÖW¢”Ñèj¡“ú -Îy6Ç/ŽØw1¸¶ HÄ܉Ñ$)ÀÊykë5Òy˜äô@ýõÐ'Ç|²yYUçNà6@ÝÚ~ȧé'JùÄ\… "“!&6àD~@¿ 6ú|ô.©Û\®ïþ¥'•ý^ Ÿ“û$›k,æ -‰^Ü4dy•N´Õñ‡Õø.Ÿ¬—æViÖË;]üåÔWœÁMçö4FþÛaDýÖ÷2¾ùTÆó¥‘oÒ¸>\A¸ÀÔ6Îئ¥Õà¹Ë* ×,‰qi?ej¯fÀY‹S -6eó©Ðž‹¸m~7$,~€S§Ñß%;.õ.9Á)‹}Â]·—)Ø Ì¿ž=;‚£‰!R±Ÿy';ºy;Ç91´ÀRØþ@)B Ú­þÛE`<^?[B®8ñNü^«ßëì·z¡x-Ö´ úýýæ~ÿ®ú{œ­çqcæÖ|¸ÇÀ%ÝÀEæ6æ$ñ_»]Ošªh¤§)æ>œ¨¨ŠônÝê“”ÖÙÀ)Iëx›G½p™ý¤¬óý½ƒM?ØìYëèÄSÚøÛÎá˜fÓ5¨_Ú•.*wûµÆ!Of|.͸L’ ~5!Â~æ?×Rú -endstream -endobj -1128 0 obj -<< -/Type /Page -/Contents 1129 0 R -/Resources 1127 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1025 0 R -/Annots [ 1118 0 R 1119 0 R 1120 0 R 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R ] ->> -endobj -1118 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.953 571.579 260.921 580.37] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1119 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [183.611 562.115 298.58 570.691] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1120 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [112.478 552.977 227.447 561.441] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1121 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.4 543.512 248.368 551.977] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1122 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 495.863 122.839 504.654] -/A << /S /GoTo /D (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) >> ->> -endobj -1123 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 410.766 129.639 420.317] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -1124 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [449.242 305.96 532.972 318.464] -/A << /S /GoTo /D (group__bsec__interface_gac79a471c6e20fd8c17577f6f69a9469f) >> ->> -endobj -1125 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [450.874 292.411 533.265 304.914] -/A << /S /GoTo /D (group__bsec__interface_ga70e68dbe60e2ba462537540d60192a2e) >> ->> -endobj -1126 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.68 226.299 567.119 238.53] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1130 0 obj -<< -/D [1128 0 R /XYZ -13.423 915.745 null] ->> -endobj -882 0 obj -<< -/D [1128 0 R /XYZ 29.788 475.767 null] ->> -endobj -1131 0 obj -<< -/D [1128 0 R /XYZ 29.788 457.224 null] ->> -endobj -1132 0 obj -<< -/D [1128 0 R /XYZ 29.788 198.802 null] ->> -endobj -1127 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F120 619 0 R /F97 510 0 R /F44 228 0 R /F159 996 0 R /F163 997 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1150 0 obj -<< -/Length 3172 -/Filter /FlateDecode ->> -stream -xÚÍÛrÛ6öÝ_ÁGy&¤ €°}°7nšNÒ¦¶vºÛ´£¡%Èæ.Eª¼ØõN?~p(–[ÍìtÆ q=8÷ „³ùÕæݶ'¡wë…Þ›èx ¾¿ÁHèÅYdŒy2âAÅ^£¼õÉOŸ” Ö`ÆÛb$q6ÝufÏÜÅ<½MÿŸÆ2ˆ2æ-7GSH‡¾\$Ò€‰ÄK% bÆ5P s\™ÔÈA#IDÄ5쟼Ê;ô·“@„ iØNÓÝ`ÎÞn„÷ºT#ûy2‘å[ºb$2rÈBv…!÷² Žd–~–ªâ>ãÀ¥!8h…±@ZwÍ´FŸ£u·Å9äÇHJ!–%zÿÅüäìPJ&‚,JSo¾öx¤Rzi†òž¯¼³‹º]Þú<•³kUµuÓ©åé¯óïN.ç1,Š†§2žJ ÿ㯡·‚É8ʽ³t£—Â+½k—†@pKX+Rƒjà ju뚺z³'OÙ„ˆëË¿# o«NÝ6yWԼ鋕2½TŸ>û›ÓMýyCx+B0OÀô% ")lÐúêsà@˜à†ŸUS#!wŠHjûåRµíº/_á@ÝÝ©æ¡hvsZ§š¦n°¹¬1“–›‘6¯41Œƒ³ ²4DbÔDr¢åììÔy<»ü=ßlK…³<Ø"ÈÀ1p3<ƒ;/Ëz™wï>oŠü¦Tc–y´? ¢$Æí}QurÑá®VÁ®²ø¯Z-Ú`}¤Ý°-JþI¢òMÇ4z¨P‹÷çÿ\|¸úáÃåÕü_‹‹w?\,®ßþ|9Fäãìׯõˆ6>M´ÃFp ãpV-¦!ž{!^fÓ p¡¶QuóŸÅM¿^«æ¯Â©JÀ°ÿ#§ŽQ×oUC(>ØoQ–Ø*ë|…­œôr'ú¶kŠêÛë¦ÞŒÖmu_Ô}‹½¾¥=õút ë9f"Êbb`ÛmùˆMðûtÐìêÉÊeß4ªêDÈâÚVûܱy¦´k&­¸iÕl¦#c™ëД©A½B<žZÚ«š>l˜*@g_Žß¹¾ø -ñ0L(úD xÀB†ˆz¿]Á‹¶¿i—M±ÕáH#­AÅ"tÈ ËDsÈ`.Y†ÂaWYÜ4yó¸hLŒ‹sÍP{9ä…Fј(„¬<¿q7ŽHá—uÕvÇX!ÉRç ².n{ ÐFH8w4²$ B8=Äó C¡×OYI(í¢IX•g䱄HËõ[¯ÚTä¾hº>/ ¿öÕ¾|–q=ñ#vOBû$ºçØN`[->}ðÑêàÓ9#ÍwÁ@³â=|‘–‚Å.C‹F›ž¦Û{;Äψl‚혉#„ Obù"|Óû0Ú‡ãifÎ h¥OR:.â J¹ñª<"E¸F3º¡ä«£t¬;$lJßP┺õݶïÚ`ßyЂpJÝ!3 7ÜÀÉÿhÕK푧ÙËíAª²YJßôË‘·iwÉiUDf‚”Ùr§°±mj®ªÍŠ±Ý·U^+ò†6 F‚ݼsÏØÃ'6áQÆÀSäQK¹©>´_§}ÅPëÁ;‰¼›îSG«®mæßçE©3Ø=jñ)á³Àø ‡.!Á$Gº.rÃP‘”J‰ázÀ។OÏ Ê§gè|ˆ„"ã$M½3½dw¯ë'3\T@Õ†j+=›ßÔZ’zŽÏO€ÃۻǶXÂáû)œHN¤J… ÉL5£"8™T&rU&¢DàIF(I‹Þ!Q¢+0ëŠÎ(¸ÏP»­«•Ià Rƒ–EŽ–±Ùü®h-ïÌMlûFA:v€?S€Kb]K4ËÛ£Y± Tœl&l¶ß+D¤'º›û†@†9¹õVi­,WF[„£=zx“W•jNãhføÎæ§,µÅµ«¢µv”Æ1Ä,ñDn^DȽ=.ù4Žg¯ì¹8ÂL>q$coo*ëó÷Þ].®Îç—‹×o¯Ï/Þ]¾~†mÃœ€ô$•b67¦tŽ4Êzmœí[­~/·ÞøRÿ¯ÖâÓ{ómÞtØÄ¢EOvÂÆ6±M^ߘˆ^TW´HÇý¥]¸ý@ô‹'êÏ–ü6µN¿¸ gÅf[7]^QwÝWKMÚ`6{KãyYÖ-¶Øà«*Ò =vG•jI¡³ó×Ðüµ<·ì‰v{§šMQ):ˆFh~ÆN=d :f= Ìvf%Ý -  YèZ‘¤ø)w1Zo³Ê mRfIA^Ñ­ú¥¼# ;ƒ‘Nÿ>»8¤kŠ§r)Q@»yÔCØ@ÂuÕkM?uùÉ\á -£°dÇx=ÞÐÝš™Bw­‡é¶L9[ðb$…-n6ŒÔ£ «Ò®h{ð„”ê­©sœºWÍã!!¤ÅÑèj*ø¬µÊ»ÁkZ9xO '/ª!Ä`ZŽ®lT¾z$ksOr˜®‚ŠÙ7}£/GSØYæäxo†Ãœ” Ó&r±«ö)'´BÙFnj/ ”D€î”màoµÂ©Û¦î·¾½¹`ÁjUØP)ÈÉ -—t1!»ô #ý3â]^ݹæïÇûª½ Ð8i–ªgä˜BI”‘+BÑH?9ÁOºøI¶“©“ë÷f™®qB{ó}Ý©g\ Sy2X7D-‹ðÜFY)¤KÕXÍsCà§H•ªj -š¶B¶ËóMmA6ꦮW=r¸ ž¦Np„¨ -¸Ùu¾Ü‘ôâÌ'=¢’Ö¹¶ˆÆÀœ¾Ío 5do -n¤É[—å©“FC1ËmYN L}nÁXqB}ù¬ª‡£I¹D.åVä »wy;‘¨>^•«v”¡†®TÕfÞ2Õj&DH¦Ý ö.¿W“s!Â@تýj¢øÇüJtö ¤Nãë9·@ÿ…'é^{ù„æE"“4?6E6ßþaˆyÂse ƒN„äN•3›¾¥Æ4`Úu¸0ŒÉœ™é«¦pØ•Òªù^m›58t„îkLžQÊ>Íü¿Œ„¦º+@\‚t÷Ùâb<0¿1!¿.q¡ðjš2øvìí¦ÌÜ]9<©Ò‡êݤ]8C÷ô6g°‘‘k´÷Þ}yæúȘãl`ÄÔ·ŸàØ ¦š°¼ì-X)½~pú7B dTk a+ -óËåïàÜ+L”ÿ²Ü¹ž^-a“lÝ ƒt‰bÃ`ë0m¼þ4¡Y½äÏ8AÆ‚4a–Æóʦ6P<©Õ§JáµÖº¢êë¾-Ý v7¹Î/N±O¨ º“8q®m<‹Ãƒ¾½"Ú]è2„«Ò0ø ôIkâÓn»¾ģH@11þ&í¿Ú÷dá8>ë—Îc€(`øÌe cú ì}½2ŽbiR 3JrPÃÝkz2Áf蟽λ§!ãú·Òwɺ£™§¿”‚C;Þ¥ñzÜD¡³= ã„øº^öãñÍ‚¢bóÕ©Ÿr6»¸žëëÿâýe"Cßyâ›!þù÷a(}Sµùhs¡Ìʱ£ýJ3zEZ…Çcó[ÙäEL Ú½ˆIƒ8^ļP†ö ÌN1LƺÜ2çcøËÕ˜´òe~˜€Èþ”>ý–z!ÁReOð•wr`›w𭙌Sz;üPöšo¶Ç)$¨¢ý:‹¨¹ôNüɬ?Ùì;»ôr»l˜ß·ÐßÁŸNO÷ÁßiÒBKǵ¡mxŸÆ‚ j9Ÿ¡4/µ­ÔÿÜörãÇÕá$Á+ýp! X*ÝWa;m¢5´Û´ÀaÖèÇi»Cš˜Á¿ÊsWù¤/þNaö ’™']L'Ý£×iBÄÎë4èF³7››oqBë6Ô 1‹ôÛ!kŠÛ;s›£Ûä…ô P¤CY[Û‰Û¼ÁK|ÝÍ«G nx[·yù -ïùÔïÛ².:ãq…Ãœ¼~hÊ¢ ¶±TŒ"èÇÿXÞÙø -endstream -endobj -1149 0 obj -<< -/Type /Page -/Contents 1150 0 R -/Resources 1148 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1153 0 R -/Annots [ 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1144 0 R 1145 0 R 1146 0 R 1147 0 R ] ->> -endobj -1133 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.4 655.664 248.368 664.128] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1134 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.506 646.199 273.474 654.448] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1135 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.584 636.735 252.553 645.199] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1136 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.506 627.27 273.474 635.735] -/A << /S /GoTo /D (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) >> ->> -endobj -1137 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 579.948 89.365 588.412] -/A << /S /GoTo /D (group__bsec__interface_ga70e68dbe60e2ba462537540d60192a2e) >> ->> -endobj -1138 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 507.669 129.639 517.22] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -1139 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.436 494.03 247.527 503.671] -/A << /S /GoTo /D (structbsec__sensor__configuration__t) >> ->> -endobj -1140 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [90.192 466.932 219.283 476.573] -/A << /S /GoTo /D (structbsec__sensor__configuration__t) >> ->> -endobj -1141 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [51.163 416.413 186.75 428.916] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1142 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [120.472 402.863 228.566 415.367] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1143 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.536 371.069 273.103 383.573] -/A << /S /GoTo /D (group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) >> ->> -endobj -1144 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [109.688 357.52 220.888 370.023] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -1145 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.35 325.726 320.019 338.229] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1146 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [105.688 185.213 238.997 197.717] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1147 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [458.318 153.419 564.29 165.923] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1151 0 obj -<< -/D [1149 0 R /XYZ -13.423 915.745 null] ->> -endobj -601 0 obj -<< -/D [1149 0 R /XYZ 29.788 572.08 null] ->> -endobj -1152 0 obj -<< -/D [1149 0 R /XYZ 29.788 554.127 null] ->> -endobj -1148 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F120 619 0 R /F44 228 0 R /F159 996 0 R /F163 997 0 R /F89 511 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1179 0 obj -<< -/Length 2744 -/Filter /FlateDecode ->> -stream -xÚÝZmoÛ8þž_¡Oˆ‘"%j{€Ûx»Y4m»Ø»K C¶[·¶äê%ÙöÇßðE²$ËqlwqÅqDQäp^gH^Žîn±5ÏÎkn9Ö›3x±0<¿@c±€¡c‹S‚|ʬTXg¶_Ä$™f7FÇ‚v¯ËrÌÍXØ’ÝäŸqDlMW-a´Mi׳$G]a׳|ŽÃD• ÚðppÉ<Ï¥DÒþÍŠ­D¿œ!×qš¤]+*¢TÅåõʵ®`u7³ûÅØ%–]ÊÅ0ò8­‰¥Õå8Ä -£<ð÷JµaÜÆ´ä`MJsµ¬›âYé>Y7]jƒ|8Xp`’».Â'û¿]þ  Ä. -¨ï[£‹ÈçÜòmïÑ̺ï½J²éâÜ&>ï Eœ%i.¦çŸG¿ž F5a0e -á>@§\Ò¿ÿìX3øø«å€R‰õ¤š®dsàÁµ–Ö°.r fÚº>a DO€ÕÜÚõéîM— ˜yˆø¸%ÄpðZËpçbž†y”ĺâMÍ„èP<í}Âœ“EùxcøU80=OÀ‹‡(w-ÛÃÀ<ÕŒ¾Kònf,h-ÁjßñtëÑBh!²pU–”t‹óèàY¤™® -SÓ.\f‰.™˜éÒS”/"£–¼$ýPÄS©­Ì°ÃSßñá鎶O» cݫΓLLdzdœåb}r˜?ܤ@²ó‘C<1".m XdáÜ×iO£õR‘’‡£9+Ö³0㬘dÓ4ZK1w0Y*qŽíåÏ<¨#š¸ðÀˆ(¹?Ïï„AE˜ åGU¯+°5qE*­.┈FUR¸ ta4/¿4d¿Gñܼ„ORäë"ÏJ<„y Óò))–CËèwó97øš.Âx.”N5* ŬX¯¥7™¡¿@§¶VÌqJ…wË5 L¹åÁZAÁJ£ºŽÃe$æ´—Š/…È”š¸+Á¨j7ºƒJ=é 6šÇI*¶]æöúz -Bƒ¨ì‹&­k¨0£ˆYy¥P¨,âð1Œ–ád).ÌÀËe7ÓC2 -ÙUKvX.9¨WÉ^²^¿‰#Ê£•08 JÂ4®PV¢ y‘Æß'ÚR†ÅMzj©ˆÑ9Ƥ§ èôfQ&Õ.E -Ôbs¡‹ÚP¨Í¥ —-ªú‰Ð´L[9‹•‚ýÞ{3Eƒžˆå¦‰œÈÆkMĬœ[­aá£á(7lNÌ»a×{ZDËáÀñ0-~¸LE83î£N¯å7fÆ Ä‰JÉÕÆALDñÇzM£ä÷iÏÀ£±¢Vö%ùØ×ö½ S€`.¼º•ÁŠ s˜sÚ Ú±Šð*Va®ΙAYG+ßœF iP ÁŸ#á¨áH`(¨¨§n+{Ôb hºXë"ê2*Äi„—+F¼Éù S÷Hž `®äsUý&K•?Fi^„˱X²mFˆ4+ð~+Û•t]xƒ@£âKÂù6‰ 0”Ë'fºpiøµîIÓ“žB¿T¡´—TÏ39áûTF™:üÌt­\nŸ™{·Pĉæ¶r·Ëh’†é×må12BWÞ6Âáø´Yr" 5K0F.#ßhš@CO“ã˜êž'užâñ13å8nš‚W€«³ó®XMÊ`OMxn°ßJ;²<-¦¥ÿ_«‰e|úD!U%Ë.$ØÁÁ>¡‚õÁ’ncH`ÈËOÂõ‰4$®)‡¹Aè·Á5 BñM¨“ìÅu‘ïö‘\u»Á”4v¤±1<ò‚ÂgP}$+ݨnð²qúµh¤tú5¤—<D/¾fÑ´ ø¾žOI¯Ýÿ½>üplU’p h:ì§ÒP`‡4ÊÑÛOßìžÜ¥ó_ìÄ/’gð~cÝx¯ó¥ùˆ?Ž™ˆ¯ssߥ%™éøU¸á¢€±M/•óÅÏF(Pì7»|Þ;å˜f¯aô“¡è©§¨dV ÈN]êÆjêB¶pñl6Ã=n 9ò^ÅP­Ý¿P»FbE;P1 ê}ÜêWëo`ö»öÅ‹”ó̆Å~'U¦áÏx¡ƒA¹íA˜ƒä¦úI^èpÝû±]SFábÌ$,wJ1ÙË÷dÿ%R³’<-D\nuM§"ËŠe¹ókAúeåf¬i'Òtc¦ö®t+÷-dž ëP3öPÔww»÷´_¸KÚͬ—jÏÔ̼ŒÆyk¸ÓZ Õå[ué:ïÍør‹p{û^gŒjÏIÕ“\Œ|øŽÞc*E]„±Ù¶¾¼<·a½Ááj-·…ä T6íÙEÞ²å~U{V šä^«T]võ£ -ÂåK6«µEôåòðF¾_÷?èBÏt! Ÿt!«µ;©!nÿ]?å‰b]?Ö)€x»ÑÃÃÖ†ùˤ¥ õºAö퀘u¯…Ø•<Ü»Ÿ,Ã-IÞ˜¦€)Õù¹,K5øÉ(»¢T7Ëî¡ÏèÀ3 c»q4ëò§CO8d'¹ 9~ÿqtûq4–Æoº4”Ãþ -‰öÇ`<ñmeöonßÆwýÑ`üñíí³‚Ñ}‚áïÍTwýßÆ£ÁÍíäûx78ÍløÿÕlä{4ÛíÝ`8<Ùfä;µÙÕõ°ÿêíàªSºc–³¾‰íͲdÖ0µy¤Ë*sV ÔÂ4ªÂT½U™øfõ+˵ë³(u¥)÷‡‚0„!¬¬Ïe•›þ?Æ·¿üsxýºÿv<¼¾¿kŬ}vk­€"„çòÓ±ó.†Îku€&K{Ïñ5€ýÔ‡h—Õq] \ÕÞþÎÐêT<Ñž:¸n+HJ±ÓS\ì bTlu``—Í É¿íF…Ôé­@–º±šeËŽú»®8û¸³^yÛ¨†!!÷¹‘ò&™©Û/Ó2Ó¥ž¢g"}”F\ÜûS>Hï*ÌCý¬ño!|‘°‘Ï© ¼Aê’ŒÌûÕ‡8É£©Ð4þÔ¯’i±qÙ@%î?œÛ>Á0-Fç çW7;ví*’­n!ÙýwŽÃm=s!Ñ#®4šX‰C»®Ù:¥?Wšœ:[ç-ŒàZ®î#æT·°´a™> -endobj -1154 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [356.816 706.099 439.449 738.424] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1155 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [144.264 684.865 280.253 697.368] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1156 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 319.63 196.93 352.266] -/A << /S /GoTo /D (structbsec__sensor__configuration__t) >> ->> -endobj -1157 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 306.081 173.879 318.312] -/A << /S /GoTo /D (group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) >> ->> -endobj -1158 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 292.532 163.57 304.763] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1159 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 221.68 143.761 230.471] -/A << /S /GoTo /D (structbsec__sensor__configuration__t) >> ->> -endobj -1160 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.137 193.366 189.788 202.078] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a92665e4f2f3cd5237814488774c0f546) >> ->> -endobj -1161 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.349 193.366 265.106 202.078] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea2368e219ebbce4e1ede7209486283a6e) >> ->> -endobj -1162 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.137 183.902 198.157 192.613] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a150ba3a737fb75f56052c60d55246ae4) >> ->> -endobj -1163 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [208.717 183.902 294.396 192.613] -/A << /S /GoTo /D (group__bsec__interface_gacf6a5816306dfc1e3c0b26a6d459fc71) >> ->> -endobj -1164 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.137 174.437 189.788 183.149] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a92665e4f2f3cd5237814488774c0f546) >> ->> -endobj -1165 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.349 174.437 315.317 183.149] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea792b0fbeffceea19513cc0bd31ce7ef7) >> ->> -endobj -1166 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.137 164.973 198.157 173.684] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a150ba3a737fb75f56052c60d55246ae4) >> ->> -endobj -1167 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [208.717 164.973 294.396 173.684] -/A << /S /GoTo /D (group__bsec__interface_gacf6a5816306dfc1e3c0b26a6d459fc71) >> ->> -endobj -1168 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.137 155.508 189.788 164.22] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a92665e4f2f3cd5237814488774c0f546) >> ->> -endobj -1169 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.349 155.508 302.764 164.22] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea5f42ad42c6bb71627b5ce91d4c410985) >> ->> -endobj -1170 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.137 146.044 198.157 154.755] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a150ba3a737fb75f56052c60d55246ae4) >> ->> -endobj -1171 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [208.717 146.044 315.317 154.755] -/A << /S /GoTo /D (group__bsec__interface_ga216b6f4807227a2c6a183aaa9a8b8d7c) >> ->> -endobj -1172 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 117.571 143.761 126.362] -/A << /S /GoTo /D (structbsec__sensor__configuration__t) >> ->> -endobj -1173 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [53.898 108.433 156.314 116.897] -/A << /S /GoTo /D (group__bsec__interface_ga847070d3ecfa970cb2f716a2d11fe219) >> ->> -endobj -1174 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.796 98.642 290.212 107.217] -/A << /S /GoTo /D (group__bsec__interface_ga847070d3ecfa970cb2f716a2d11fe219) >> ->> -endobj -1175 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 70.328 131.208 79.039] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1180 0 obj -<< -/D [1178 0 R /XYZ -13.423 915.745 null] ->> -endobj -1181 0 obj -<< -/D [1178 0 R /XYZ 29.788 592.073 null] ->> -endobj -1177 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F89 511 0 R /F120 619 0 R /F97 510 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1233 0 obj -<< -/Length 2738 -/Filter /FlateDecode ->> -stream -xÚå[[oã6~ϯÐcT ¯¹Ø>x&Nê6qRÛ™i1- ÇVb-lË#ÙsYôÇï!u—|‰Fžb™ÑúxùE_ŽÄz‰Î°õbaëæ .,Çp[B ¤±$§Èå -=ëùì×ZãK@ABÔ_9BUߺLûÌû"–~Mÿï -‰¸"ÖtYQÁ«HûŽ)g."̱\I TƒjmxF%RR 'ŽÃ8ÕØï­•µôãb˜šÆ.œÐ\sã²·dÖU¢îö¸ûÔ²S½AŽäµâá˜Z - .•{T«\p›P%Lb88Âźæ§{tåÇtÍ_)tòkcÅAHÉ"ÊÑï¿]^) CŠ»®5z¶¨B®”–«âùͬço‚h:¿°©+χÞ* -Â7½øsôóYwTP†paîJc*5þ‡?±5ƒ‡?[•ZŸMÓ¥n20ka ‹: F‰Ð–¹T59V/Ö¾Gƒ›]:á ê’ŠÃîÛX‡Þj㽄“¬â7[æ…šòéØ$ã!H AµdÀqÉ,Ûa(Œ#‚Ø… 9﮶K/–,Ú)OŒƒ‰ÁÀ¦%f(Db°§È›ŽþS8 ¿ŽCo³ WãM õòšPl;ßæ4I{oîbŽŽÂñŒTïÁTXlAÅ«:ÖVRƒHDá¦é¸0 ñ=ar²]MóÛ1v|> f^„â^ÀÑéŽô„ÒZïe´ E‘JTNŒÀ¡ ¹N•ÈLɌȂ9ˆ1ç1•O ¡4v“‡  ±ƒˆL2ƒÈÇ—r `ŽC(¢²`ãû_ê†L• „uNÑ1Ã@IÆÊ_—&ÑûâM·ùe´N½(zÞ.ê‚ |3å«Ï -IÚÍlK =µZ!GªÃšp‚¨bûǘ`¥c©‰\nj»fr»ã«ûá¨û0÷úï:·½«^ÿáq´ÂO"N:å%qz«õvOðXàõükäO' 8'É´›¸Ÿû³ø¸žD‘—œo‚¦žH¿e<Ñ,GoéŽM‡E³7®‡A¤W± ~÷· -qý„—›¹Ÿ|š,RÃÉê%¹›Êž½Wh–y¯Ðû¸õ@–™’ R¬Üý'?Ül'‹Ò˜ì5ƒæÓU#±†à‡!ŽB[ cL áêèþ¨:`z$uN'8ÂÅ°_00ƒÇîmï®7°ƒSH&‰\˜ß’4ï.\~>YlSÖ<§$k`‘ÿ²J)ÒÆD@!§Ì¾W˜KlWß`%ûYÜx°ë æÐv,n‰aXŒÁÀõµâ³ºPø1$¡2ÙEâ«Ç‡ÛÞÛΨ{ÌŸŸBžÌŸºÚ®ÀÐ÷ üõgQ¼“¨ˆ¤ÝcÅ1¯°›“®Î'€ Œ·ãdK ÍIhÇU¤:\K^åœìeœìßß?Ž€ÃAwô8èwÞÜv÷ó$B¥Ä,IÕb-½e~M¸µXš«¹Ÿ4Çy°˜ÕëˆOÚ;'d|ƒ†nîPÏH˜<”œ®ÆÁvvˆñãñïw¢Í´F6 Ap»j§-†!,ƒr‰œ! ýìå†;@ ¨²5VNØ÷a»¿½í‡ iPõâdT-ÊÓOƒ§· -¶/óÓðv‡çlÎâW'Ï‡É M/¯pÅM2Dˆ‚·hÿŽÛTÓ8€2m²œ|ñ—ñ:¨¥8r˜[Öêù'/,'Ty¦ß6å*I³«ñ):``iP7€pq»,¥-†10¾‚ÒVu=œÉ•Ið*ÂâʨѲnj£a¯?t®z××`o÷׃NÿæPt8€™Å¥bíÈZ6þ82Y®£¿¯ÞÜM®¦ -×y„²vÜj‰¡¹ÅÀñ‚‘¶¬ãôœAÚá‚rÒ5Á$>Žßîû7WQgð~DSÄ©Š(£´È‰€; ofŒJÝOV5ðCÆsÃ課w+fÎ'"èv=‰ÇÑö)š†þZ¯½½¦Øû¯ûdóá®IŽ”­HÜÃXÅU ª—œZŒ HAÍ\fÂY…ÄÃÎÝÃmW3øØbÄI¤Iy\’æoá±ø¡ñ,ØekËÉ&ýÊõÙßÌ+#`ÆÈ_½¤kéPé$í³W]éÛÌ';«ØcKzÍ'»nú(Úžm1´Q¥¤NËPÀ0’ ýyHÜ+[Q¶rs0œD”4£(‰RÉ(^™gVÖAÊËÂÕuyhªƒïm%;éØ|àjTÒmWV¶Å0tä ud±\8 ®<ô©E xǃD$¡œŽÉW–Ü· ä)ÄI½zIœXvrÔ­?ƒ‡Î½zm¡úe<¥«éKejÍر¯fi\È+P\jµ˜p ‚l>ãu;ˆvŽ½‚¶#âR„•{X #‚ù~â:aA- -Õ,Qµ_;ó·÷ý‘^¢é‚9 ýÝä÷ýæt©R_ëT«4éó|Û®€9¾x¶1ùæÅÉÝ|^opåÕž]F7Ö.ŽÙ8› XÈîÅ æ"‡•ƒ^­Muòì­$!Õ]ç·ñÃO¿!S¸»ýáýàxèkΨš±— ©d+ƒm‹aL’(~lqøØg}×A0$q‹î¬fzýÑ;ý_÷¦;¸{¼Õ{àÛÔI„J`Qªhu®ãÝ‹œaèM7ûÃRóy¨s hË/m14Ï¥‰¨<ºDKÝCÆH '‘¬Btàõè¦3Ìù¾Ÿà§&ãwQšïBðÒ„¡ì+1èóÜOËâĹGÕ*ýx›XƒY ¨î€4ÙJ¥†I¬KUvÃÔ4eõáÎKý>yYv¬õ¦¿¸ÆÚm '¬Fb@´ÑF˜|ë+gŠZåƒÙ÷ºãþ`Ç~ÓV[g°.&…Ý¿ ¥ö fî‚™ÿÆtšlKµ¹ã"/ü¤y¥9ÿKèù•ÉMôcp^ÿÑ^Ç\è‰ÖÇé<Þ.ÅaRñ`›4vøS/Æø+F¼ -¦Û¥·J˜/<ÿº°]JÀGšaö›»®#±]ØÌk›}¼v§±´³-VHþÁIwÛº;7Ö–Á9xhÈŒBí“^Ž(dHàlsÃI¬¿€‡0Uz0OvÎ]iòï’8ñÿecǦ²Üª¡, ª=cˆ×" -Q'ÞoíyÍÚÛϙὀ‘үÀRpjà``ÜÒ+Èm˜„™I…FÉéÔ:³+OíÊËvá-Ý?WŒß“u¼ªûÛÒ²¿šmµÙÀP¶MR‹Æƒƒîµ”›Ÿ6ññLU ¢ÿ^!5' -endstream -endobj -1232 0 obj -<< -/Type /Page -/Contents 1233 0 R -/Resources 1231 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1153 0 R -/Annots [ 1176 0 R 1215 0 R 1216 0 R 1217 0 R 1218 0 R 1219 0 R 1220 0 R 1221 0 R 1222 0 R 1223 0 R 1224 0 R 1225 0 R 1226 0 R 1227 0 R ] ->> -endobj -1176 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [52.329 672.212 153.175 681.763] -/A << /S /GoTo /D (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) >> ->> -endobj -1215 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [477.758 592.64 560.39 605.143] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1216 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [303.136 537.399 385.769 549.903] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1217 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.267 507.271 397.899 519.775] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1218 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [303.136 477.143 385.769 489.647] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1219 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [327.987 447.288 410.619 459.792] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1220 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [460.772 417.161 543.405 429.664] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1221 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [389.242 387.033 525.23 399.536] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1222 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [389.242 356.905 525.23 369.408] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1223 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.162 301.664 479.15 314.167] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1224 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [389.242 271.536 525.23 284.04] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1225 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [303.136 201.034 439.125 213.537] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1226 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [303.136 173.935 476.696 185.855] -/A << /S /GoTo /D (group__bsec__interface_ga847070d3ecfa970cb2f716a2d11fe219) >> ->> -endobj -1227 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [389.242 143.807 525.23 156.311] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1234 0 obj -<< -/D [1232 0 R /XYZ -13.423 915.745 null] ->> -endobj -145 0 obj -<< -/D [1232 0 R /XYZ 29.788 737.428 null] ->> -endobj -642 0 obj -<< -/D [1232 0 R /XYZ 29.788 719.646 null] ->> -endobj -1235 0 obj -<< -/D [1232 0 R /XYZ 29.788 719.646 null] ->> -endobj -1236 0 obj -<< -/D [1232 0 R /XYZ 29.788 644.424 null] ->> -endobj -675 0 obj -<< -/D [1232 0 R /XYZ 237.212 612.282 null] ->> -endobj -716 0 obj -<< -/D [1232 0 R /XYZ 106.27 595.703 null] ->> -endobj -740 0 obj -<< -/D [1232 0 R /XYZ 110.503 554.012 null] ->> -endobj -742 0 obj -<< -/D [1232 0 R /XYZ 87.485 523.884 null] ->> -endobj -769 0 obj -<< -/D [1232 0 R /XYZ 43.848 493.756 null] ->> -endobj -771 0 obj -<< -/D [1232 0 R /XYZ 82.03 463.901 null] ->> -endobj -772 0 obj -<< -/D [1232 0 R /XYZ 36.164 420.224 null] ->> -endobj -798 0 obj -<< -/D [1232 0 R /XYZ 117.201 403.645 null] ->> -endobj -799 0 obj -<< -/D [1232 0 R /XYZ 109.903 373.518 null] ->> -endobj -800 0 obj -<< -/D [1232 0 R /XYZ 127.488 318.277 null] ->> -endobj -825 0 obj -<< -/D [1232 0 R /XYZ 102.627 288.149 null] ->> -endobj -826 0 obj -<< -/D [1232 0 R /XYZ 61.019 231.195 null] ->> -endobj -827 0 obj -<< -/D [1232 0 R /XYZ 73.139 160.42 null] ->> -endobj -849 0 obj -<< -/D [1232 0 R /XYZ 97.783 118.728 null] ->> -endobj -1231 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R /F29 648 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1240 0 obj -<< -/Length 3173 -/Filter /FlateDecode ->> -stream -xÚÍ[YsÛF~ׯÀ£\eŒ0Ø­Ú*š¢d&¥”]ÅÅ‚HˆBB4i“Êß\ÄMÓàf·J6†ÀLOO÷7}Ìq1ŸÞceœiÊZÑ”ë3ø¡`x~…7šÂMŽLŒƒ$W|[y>û©Vù¨ .É”›q‚tnV[]d}îûŠl&ÿÜ@ÌÄÊr[aΪ”Úž9FÂTW„ÇD• ªðÈ4$sPÐuʈ¤ýYq•V¢_ÏÕ(P“´ Řè~ñ‹‹ñ–*—°ÚÎìáa´ KÍÆÅ1Ò VV".M#Š‰83LqpT{ÆUL@JNÈAIã4ë¾Ø2Vvh¬û&…N~:zàÀ¤A)¦.Û˜Ÿ]\(1E&B™?+ÄDÂ0a&úž¯”Çó^°|y§aœÏl7ðüÐ^¾û2ÿál4/ 3#\&ÈÔô¿hÊ ->þ h T¢¼ÅU·²:ð@•2+ŽQ‚¹u©  ð °Z+mŸ¦×McÀ\GDàÊ f£a2†±Úkß -ÏM^\GÎÊŽt,žZŸ0×dQ>®Sþ@LKàp¢#fPEÕÂL¹ÑÖ¶<¿ÄJIÆ™v°Ž„Ϊ"¦¦‘‹˜SQÊ¡œùÿ’† 4tCGTè ¡Åý3%‘k|/Q¡#SUhCß+|1ZÌÇ×?ŽóÑônrù0ÌÇw“:~‰) Ø: C`Ü0Y™£ù‹náç=§O7ý¼µ­ òí­í†É 'HžÏ]Û~R_,7+Åà•aáÉp¿9ßD<å—`‡»‚aÐèÖI†W͘ˆÆ«sþöîr<)sß1ÙOÁG®û"²Ûdo¢TÁËÌ+ä“éÉ®ª¾4Ç\ÏU£Í.õ<^5#ãèÔÕ*?­_ÔÑ—†Ä7€†èu9A%$¤uŒ%4ffÃéøÃèrïfí(9 G9JŠ,M¼4¾8Æ5€·’Ò›í7#èÕ±þ:WÑÈãeV7@‰¢_|Ò—F HN‘ÆD?õ3:\`x¥0ø~0A0<Êàwôóp4ºœ}¾›þøá!ñ8À¡Ðb:„ad™œÇ$~ј–ÖÒ -µÒ¸Èê¨MŽK…<ƒë+©ýêj4혧C6 J‚požÿÛâ)úE#Ôöó‡Ýþ4B5°ÃÅãRâS#ë4‚¿B€ï—²eÓȾØÒ‘|«U=~Äur‚ fôqO1ˆ¡Ó„3⎨ƒÎ0tƒ’ø"ˆ‡w“«ñõâj0¾é@Ð ˜ÈTdbXV}¢âgËÙtESGsSW P Ý+·' ©\°,Hˆ8y“vfP† :"@Ë$MÊý4šÎÀDÝŽg·ƒùðc»žO” ~^CÎ.èž9^zÇù¹í©ÂŹí.!HªQí;¢üéDWÏ8Ø£xU·ÐÃcK‘óÅ8„ Œ•[1 -!“ÔÕ)‡ˆ‘C³Ró/‡:•µu°J¥V©¡ü†ÒD 6Š›…irœ]yv5/ÜZáò%¶ÏªT4MŒt ¿9aºH¹Œ|?_;yM•×:CÇQmzI\ô³¿}iÄS” -î¹ÈÁ‘ “±U£õ æÓÑ7LÐSp“ªÀÎȵž6Ù |¶­0ò3¤T'gƒ+/LÕÇò$úò߉ZqœD×µ }”0¼qž|Ëÿ=Öv·‰×/ÔŽë£Å_Ç$ œôÃuO1®5¡ý‚BŒ ¢:#‚[Öíátø °>39¬‹ÌüåÐÌÞ–žïG»ÎU¡ãG]G ¤_îß—†D@Ãì™iË=&¹5å®—Þ„¦ÑíýüŸí8: ŽJl¸‹ÿ’2W¼x~X~õTZËmÚñb©D’ÐÌ~9}_1И@Xï›ÓCÈiñèØhÂÙx2{¸ºÇ£ÉÛ(¨ìÓBý2pciÝ~^샻E³/Î1x´ˆêø‘ûïF¿º/ƒrÏY˜=7ñåUÓb`D Ü›ÑäzÞ‘ùŸ„—yE^:‘ס磪ëHn¦÷‹g{’Z–›> gFÜ[ H¹j –j ÃÁÍÍb>¾…8vñi|wsààIÊU]déÒIŒįv6ñÃ7Ûvë± åfÊ–æíãkðTÙ¡¾ 7RGmÑ?£_y`ñoè{›®ó[k߆ ¯x.±nç¬ÍÆ{ëZ`:^â5 JÌè·SÖ—FŒf¹}N‡Œ‹îÃ%Ä"ý§Áªp¾½»L6ñnîÕà9oÇó8Ÿ‚£ Î%–Ž Õ’üL÷)Ú—Vd™OŠúôüT-mª„ý5÷–¡ç¥^73•oÎ&7¡õ[¶³¿±–öóx±Ôñ$tÚ/VëK#Æ–6¦o¬&Ϻ- -×0WZjŒçz¨;O9êŠLõC]ãùŒ9ζq™©¸D8¹åÞXË µîh‰ÔÁ‚åõ~ÙwÐØßl`Ô$JùßÐhx?mºÑç’GáˆRº–¦#–†¼õVŽô“K+IûU¦ëç¾ ÙÞ«ÔIñùŸòAÎ/ã„O~¢§_íe˜ü·|._äcYæñr¥8ŽÔ½¤ñgBñÒ[F‰}Š+ÄgyÿöNÃÌ™ËÃê‡Û‘nhjáÚ‰ß8QM3Ôl?›ª¨0™õôXWRJ¸’‡S¤P[ÆàP%@ãù›#•X?‡ *y…eMºðSã8 -2UMW‰Q®u$/0þ|ù -¢_,lÆ+òf•rÖÒLiíç,Æ=IÉæðD ˜ I¹e¿¤Ÿ0@3Ù³P)-.•3µòU­4V ­dõ¬Zþ½©¢º§_ý\m_&ÿ"‡¦eã˜ÅcËï¿adÊãiI~†Óšò_±¼Ü*ß'Õ¼'Š+= -„“ã u4¥uÒ*ÉþwfDse—êÈËoûN’Ñäƒ/ÉŸ«k©)^Ô=`X1ã+cX^Ð*Ý~cX¸ý?ÙùõöécòAb½S9fç…Èw¾³~ ƒ´œZ¡÷ð“I×xÙ‡µå¯âÅ,ùÓrOH¯œ`çÖ&n`žÛÿÞm<'ÙñO_ùöÎ÷VÑ2yãÊ‘‹°i úÎSThc%Ëß*¸W ã’µy³³èÉ -Z.aد¹ŸÌÖ>¬$"¹½WÐò»%î*’ dÉ p»³ý0=Ä•,AÕóË£Gr3pÄ©O¢áS¢G -endstream -endobj -1239 0 obj -<< -/Type /Page -/Contents 1240 0 R -/Resources 1238 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1153 0 R -/Annots [ 1228 0 R 1229 0 R 1230 0 R ] ->> -endobj -1228 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [303.136 658.546 439.125 671.049] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1229 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [303.136 585.013 439.125 597.517] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1230 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [358.914 185.09 468.819 197.593] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -1241 0 obj -<< -/D [1239 0 R /XYZ -13.423 915.745 null] ->> -endobj -850 0 obj -<< -/D [1239 0 R /XYZ 73.565 705.286 null] ->> -endobj -851 0 obj -<< -/D [1239 0 R /XYZ 83.274 675.158 null] ->> -endobj -880 0 obj -<< -/D [1239 0 R /XYZ 141.452 618.205 null] ->> -endobj -879 0 obj -<< -/D [1239 0 R /XYZ 69.91 601.626 null] ->> -endobj -1242 0 obj -<< -/D [1239 0 R /XYZ 37.461 571.498 null] ->> -endobj -1243 0 obj -<< -/D [1239 0 R /XYZ 168.103 541.371 null] ->> -endobj -881 0 obj -<< -/D [1239 0 R /XYZ 83.863 524.792 null] ->> -endobj -912 0 obj -<< -/D [1239 0 R /XYZ 82.052 483.1 null] ->> -endobj -913 0 obj -<< -/D [1239 0 R /XYZ 109.336 425.874 null] ->> -endobj -914 0 obj -<< -/D [1239 0 R /XYZ 153.561 395.746 null] ->> -endobj -915 0 obj -<< -/D [1239 0 R /XYZ 38.416 365.618 null] ->> -endobj -941 0 obj -<< -/D [1239 0 R /XYZ 83.241 335.491 null] ->> -endobj -942 0 obj -<< -/D [1239 0 R /XYZ 72.354 278.264 null] ->> -endobj -1244 0 obj -<< -/D [1239 0 R /XYZ 57.179 248.137 null] ->> -endobj -1245 0 obj -<< -/D [1239 0 R /XYZ 125.666 218.281 null] ->> -endobj -943 0 obj -<< -/D [1239 0 R /XYZ 79.598 201.703 null] ->> -endobj -952 0 obj -<< -/D [1239 0 R /XYZ 69.921 160.284 null] ->> -endobj -944 0 obj -<< -/D [1239 0 R /XYZ 61.456 130.156 null] ->> -endobj -739 0 obj -<< -/D [1239 0 R /XYZ 29.788 63.19 null] ->> -endobj -1238 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F29 648 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1268 0 obj -<< -/Length 2150 -/Filter /FlateDecode ->> -stream -xÚÝYYoÜ8~÷¯àËm ¢ÅK¢ò–ÄÇ$ñ¸;;x C–èn-º¥Ž'æÇoQ¤Ô:úðµ/ ´MŠG],~U$OfW—Í‹#Í‘‹Îà(@‹‹D p@’œbŸ ”+tôÇhð PÁB“éO{"Î:ixnx¤§éÿ¾˜E«˜ ->¤´«lÈqæcÂ<äK‚¡š¨Ð>*q µpPñ<Æ©¦ý'JÑN¢?Ž0sPÓ´;ÕšèFºáäbÅÐi¢îö°»Ôr½ÁžäµŒ¹\—¢ .ÿ VÁBÁJ.1ä æ -ftÝTwèÊ麙Òaòdz!%c˜žžÿqvtò8%a8à¾f÷ˆØ—ùYïYŒ®'³"Z;Ô—“©J‹,/Ut|3ûýèlÖQ†pQ{¸/°©Ôô¯o\CçïÈ£Rô³ºÒÃA†–hÚÕ3J„„±Ì§\sÜjŽvu]oÓSŸ ”˜ž}2:\¤¥šça™d©i8¯’XÕ -=ן• G”waC‚dà!æ’!Ç£˜»V4Ž f˜;à&“»BE·ëÅc‘Dáò¶¨í}[ö¤;ùPÁöó<®©Â¢YérCN¥ÕÊŽ;qßõ¡ô×XrØ&D׎ âiœµ¥7úhŸ—˜BcÍù 8«®eï³ÜT’t]•¦ú·+܆ Ô‰i5ì -¬Ù ¹ r'³îéyKâ¡Ù -¸~/T|ì0îOÊL—Þd­«eXªçZAÓ¨­P‹{[¾o­Ä=3S «å¹“‹ÒpL -#A¸,¬ U+U’¾XË>ÊÒ¿’敱í>ÁjÞE™WQYlµåÀ`¨çC檬òT‹m–Ì”åB™Ê:ÌÕ*•]Ò\ý¨’\Å…*Ë$¦7»®ÒzV­tµŽaín‹ê®ˆòd­5Ö>SûÊhz»"œ®êºs$0Î9UVz¶ïö' - »MG ‡BŸk}ïz Ø=‘V€aÑe`sŸÚN+}w°3a?v§öܺ„ðöÉ¿Y [üÌÃŒ ¨s¦ñ„±` ía`c(´‘ ãíuI -B€u8ÙD‚Û‹¯—ßg·—WgÓé÷«³q4£’a¾"¢„•èIq™«¢¨rÕ…?»uª²KØFuùñËÙ¯_¿Lýú2¼Ác‰`b@ùó%¯P û)ö€WÒÐÀ$d¿Ä;¤ …ä€ïñ°:@) ïñ<:òÏß¿\œ^ÌþÚío#Gë]9>W«$NÊÇxÁ¿n¡ÕÎoÑïkVnOq ˜±>˜])ŸÉƒuÎE_È2ÏÒùÒ~Åj­Ò¸ýNÈ^+Õj­1¨uzê‰U1±$V*Ô»ÂÆ °Ô¨uu¬­‡„½d‡v9r«5ñƒÊ‹6Ñ B/¦d³:ìÙ} OC=VI¤ða0ëê¤[ü"Q³x^'P<$yYíJã¶âÆ ¼|´ë5 NüW!Çkihä . àü€.>$‘>ÛƒÚª°ḣ6ŒcvöåòìêÃloyQ\}Ön)˜CÎÖŠ¥s·Ù1!lÒófI7€õPtýÞ”Pöä‰$Rô™]o›Ñ‘û|IögÅpêRª0œ?©e‘T{ST!à@ Fé¹9ÄZYÃloÖ¾=º3C¶x͸ĮG ¡'¨݉³fÀΞtûHwFŽY(+ódµRñ»oªb/òŒ`«9î ·;Àâã6Êaé¬UYÌíʇpY©>Í°Cº®-38ãm‰äW*-GÄÂÔbZоkØ褚U*šðp·Uõ Î()06ÁK…–I‘Uy¤Šÿ¼~°Œ°VÓ àþ¯Áë×ÒÐxMx€=Föë"€ûàšcWD –?‚ëóSH÷/¦³oW»áúM$i £'ÉyXŒ÷*’¢ Á¥Ÿ˜õ}[¬n:{s‹ûIvöV´Ó¹²bÄMk“=„ù#àÍÇ¿¿}Ú‘PE°k͹¶Ø¤q-Ö,’ù¢¹!h{³úÊAªWEš«f怡½>C£x7 ·Ì~ŽX µnaD§h-.¡É'wžž¿ü£ý Iðý$†ûaFœõ‹úúsKûÕ–kÇWÝ ú8ð]Ò¹)ÛÁ—,NôFÔ¬<÷¨ëbò3)Ye¤YY/•¦ñ¡xšE• õ€ju§ò÷ÇŽO ìëÙ±ÇÄ6§s§ëÔ׹·¯®+Æ­(ЬiÎ]Üߊã=Ÿàð›!*À -£å”t<ÂÇÂm¯³Ÿ¹ˆcó vJ+4ÿZÞÓpWÞa.ΨKÇõ µD·çÉú7ÚCd…“SÏ< £ÓÐN>Gµß °”ž? J#]¬íÖ|,™„•iÊÎ [Б3èu“Î,=¼Ööoèl軇óûäZ5·ÑcZëÖ>.:ÆC4ªSÄŽÔÝz´B/³jˉ‘ú4æ_vŸt6ÞdÇØ!Ål»7F¿,m˜mZe ÇüRÔåXq6³E” ~!ú ¤÷´`ØyZ‚O>9_Ý}6Ú·õu;á“Ë¥iË!Ì”…­[z§Ã¢l®àëŽy˜ÇuHÓŸaúhHÇI±ÎŠpYO _\/³¤¬ÁÃ6åjg˜Ú&9Qq¢¯·í )û]Õ™l p é¡ÍOµ´Ùh“Œ.×ÕC› 7¡1\¯—IԴ甸Ò4I.H ÙysCcŒƒ÷¾ÜH–ô+1ák-Æs2Ì:ÿ ÁÁ2 -endstream -endobj -1267 0 obj -<< -/Type /Page -/Contents 1268 0 R -/Resources 1266 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1153 0 R -/Annots [ 1237 0 R 1246 0 R 1247 0 R 1248 0 R 1249 0 R 1250 0 R 1261 0 R 1262 0 R ] ->> -endobj -1237 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [52.329 699.813 157.883 709.364] -/A << /S /GoTo /D (group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) >> ->> -endobj -1246 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.296 662.753 237.803 675.256] -/A << /S /GoTo /D (structbsec__input__t_a916867811b65988853b69f729b91c262) >> ->> -endobj -1247 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [331.827 662.753 530.494 675.256] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a92665e4f2f3cd5237814488774c0f546) >> ->> -endobj -1248 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.551 649.204 428.54 661.707] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1249 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 609.879 196.93 642.515] -/A << /S /GoTo /D (structbsec__sensor__configuration__t) >> ->> -endobj -1250 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 596.33 119.322 608.561] -/A << /S /GoTo /D (structbsec__input__t) >> ->> -endobj -1261 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.492 393.102 423.586 425.738] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1262 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.492 216.83 423.586 249.466] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1269 0 obj -<< -/D [1267 0 R /XYZ -13.423 915.745 null] ->> -endobj -1270 0 obj -<< -/D [1267 0 R /XYZ 29.788 737.428 null] ->> -endobj -1271 0 obj -<< -/D [1267 0 R /XYZ 29.788 582.382 null] ->> -endobj -1272 0 obj -<< -/D [1267 0 R /XYZ 139.844 550.241 null] ->> -endobj -1030 0 obj -<< -/D [1267 0 R /XYZ 147.131 533.662 null] ->> -endobj -741 0 obj -<< -/D [1267 0 R /XYZ 117.426 370.939 null] ->> -endobj -1027 0 obj -<< -/D [1267 0 R /XYZ 121.048 194.667 null] ->> -endobj -1266 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1311 0 obj -<< -/Length 2413 -/Filter /FlateDecode ->> -stream -xÚÍY[oÛ:~ϯУT I‘ºØ'qsr¶MÚØÙ}H‹@‘G[YrtIN€óãwxÓÍVZ7]`´¢Er8×of¨£ÅÕgb­Êl­,lÀ‹ÀóÞ`‹„X>£ÈcÜ*bëþàËÖâ# ‚¸ ÓßÆ)ry0ÜudÎlÏ"–Ø&þ÷¸X@¬h=`QΆ”Æž†s€SÌó¬Å½Eäù¾åÊÞ‹¥u39ÎËèáЦž?™ÇY™U~[üy0[t„!ŒK÷ütê ú7ß°µ„É?- J¥Ö³\ºËÇJ­yWäPÂ}Xëx”ƒk |‚[­¬±©«³]2î"ê‘óÙ‰’á<«âUVIž©gu²Œ¥@ûúÓèbM ÅãLó*À–Àø‰‹˜ïX¶ËçŠÁYV¯c`+/z¬ôtl¬C\ä¹l¨b'ðsÇEŽÃa¬”üI#ܧÈñÉk4„»0D|ã0É[• -ñL™åaŽ¨ï¶&¿=¿ø|½¸ýc6]Ì/¯¯NfÛŽK}¹ôwqBÁý™ƒ.'Óå2þ¦Êã’lSWjxö–ƒeü”D±?Ä¡žŽòõbNz+:´Æ'çÓ/BÁš ¾äNi*ó´ ß«…‹Mî)Lk=LJõ,뻪£*^j6Š|­ý‚‹y؃§`~Ãwwï:gw”½˜}ú<»š.®¯f=W¶näQUÞŠVWñÛO½¼^ˆc糋ùå•4õíÉ%°p1Ÿ.f§‚þÑDZ<xXÙR$¥“D¾b†õ*ÜYå!Ì=³ÆV L]ŽDŽƒb¦NšÇz_˜–ùèý¤-Å\bæ°öô»2ŽnŸ’¢ªÃô¶”Ùâ¶4 - n!ö¶ÐHÐ >}¢½•†D4EìuQ8CPŽ£ˆ@Žö,îa@²a§çóéñÇÙíñt>ûx~1»]\MOþ9»zÜ~S0òyCWÁ\Ãázs>i`ÎÇæà]sðR;4¼íÂœšóÚqÜDÀŽð#^|às‘k^v‹¯¯àqõ`ö-“2¼Kc ˜wa§I«îG¯@Òïq±k -«Ý¶z\äÅÚœIz3³§8«ztlžn[¹ £}­¼Ô#o ¢ýipP^Çz UeE˜êbp9È9´¡°þ È9ú@(¶ _q¡XŽ,\FCb •×~YèÆæ”ÿÔÁƒç€ÔÃx¿äk*ѦÈëªñȯ˜c} - µw¨ãJ´3.@Q}‹0ì#P@FÆu)“~àªLðÉ&ßÔi¸o*¾‘4¤»·Õû÷Z Ér;õÙ {“óJ)ëØ.³|S7l%Ù/3¢òì+ôp«Z)÷5ÆäÙeUÔQU¾ -2J“ô‡D”ìB“›°,M•d?4ÔlÂ"\ÇU¬-ZÄu\B½5ð /ùýÞ2 P2×›%Øî*º2*’X¸Œô•]õÇh­ 3 Áÿ¦P`ºPàBaÌ\ƒãö« »Ç|Mn»aÏk“íݘƒr7!æIˆªÃÅP¸¼Žü”1YyŽwQ>4ÎA$¡=çÎv‰­[¡ f†¦üwp A Vïqpž-ó¼°Ã¤°!p’êE9&„S²°%Ý`‘ ¾™&i{ÈÎvÛ4qSüs bµÈºJžLÎ3ÛË$êÀ4k?Ö‹àöéÆæ!ÌVq »{µp}—4)}ñ¯Ë“Ò´UܶewZÔãO3×Ç? -_J‘o®.òj÷F¿l×ZhZEaa•`¢05Ò qÊNŸ(G¸ÍNQUÂ[UšNì2Ô¾QƒØ¥ÚS’jI7y -‘_“ÓF=­‹$[iltæ|7¦àt•Iõ°6Ƭ«¼ ™š³`˜Ü…™9unªn5§µö^CØø‡‘¯ñƒêe#èk÷Ìéól VÖëŸâbwi(@ì·êJR£¡°­Ð;ÝæëXŸóâû& £øÝ®#’¬·\J>#~qÈùDo«I]/’¡ÊL }_y-w`”ÙD ˆRªš²ò¼Izñ_ DA´S)Ê2¦ ’Æ5aÓ½(¤aÜtt™Ø¶ß¦È£¸,ÍõƒÔHQnÅrÔ¹ŽC!ƒ0á.AQ ^ZÀý5Gõ¦ï"÷Єè_ÊíQÊêèjÇq €Pn¸/@·›<[}±ë‚«[Ðø[Q<Í£Zº²ZP¯ïââý¡íQI~!ìh«> -endobj -1263 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [288.809 675.124 447.794 687.044] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a3eb936f08a8f6f01d4c683a6ba0c9d3a) >> ->> -endobj -1264 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [288.809 661.575 560.743 673.495] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea4e05ab48912e70486351f5199910fcb9) >> ->> -endobj -1314 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [288.809 648.026 378.685 659.946] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea4e05ab48912e70486351f5199910fcb9) >> ->> -endobj -1265 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.492 592.867 423.586 625.503] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1273 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [52.329 443.666 153.175 452.276] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1274 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.593 405.665 242.91 418.168] -/A << /S /GoTo /D (structbsec__output__t_ab188da3e58d458f4b94a64379404da46) >> ->> -endobj -1275 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [332.395 405.665 531.061 418.168] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a92665e4f2f3cd5237814488774c0f546) >> ->> -endobj -1276 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.551 392.116 428.54 404.619] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1277 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 352.791 196.93 385.427] -/A << /S /GoTo /D (structbsec__sensor__configuration__t) >> ->> -endobj -1278 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 339.242 125.999 351.473] -/A << /S /GoTo /D (structbsec__output__t) >> ->> -endobj -1312 0 obj -<< -/D [1310 0 R /XYZ -13.423 915.745 null] ->> -endobj -1313 0 obj -<< -/D [1310 0 R /XYZ 124.091 705.286 null] ->> -endobj -1315 0 obj -<< -/D [1310 0 R /XYZ 36.164 570.705 null] ->> -endobj -770 0 obj -<< -/D [1310 0 R /XYZ 29.788 508.809 null] ->> -endobj -1316 0 obj -<< -/D [1310 0 R /XYZ 29.788 490.267 null] ->> -endobj -1317 0 obj -<< -/D [1310 0 R /XYZ 29.788 325.294 null] ->> -endobj -586 0 obj -<< -/D [1310 0 R /XYZ 183.266 293.153 null] ->> -endobj -1309 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F33 531 0 R /F30 532 0 R /F44 228 0 R /F120 619 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1321 0 obj -<< -/Length 2273 -/Filter /FlateDecode ->> -stream -xÚÕZ[o£H~ϯàe$·ÔTêÊeޜěöh:I;dF³™("˜¶YÙàœž^ÍßSTÁ€Ýn²Ò®ä„‚ª:u.ß¹Ź7»#Æ";ÃÆÂÀÆõÜ®_à 6„+KˆápŠl.Œ44>Ÿ}j >*HH2Íi‚"K¸û³ÎË5wkCN“ÿmá î#Xï1€¨àû”ú®%9ÎlD˜eØA‚PIT2hBuëHæ aYŒSIûw#6z‰~9C 3 &iךÑŃóéšW °ÚÏìq1úÄ2K¹A–Ãkb)uaL  î¸öQ©vŒ›„‚–0Qä …S²îš=²òc²î¦Ôùt²àÀ¤Ã"®%ç_xgçÿP†\nÛ†÷Ù .²Ç°]eoon<Ž.’,X¾3©íŒîÃ8KÒ< Þ=y¿œM¼š0„‹á¶ã‚NIÿñ sèüÅÀ Tj|-†®åpà+ã¾.b”Æ2› -€âÀ'ÀjaôuÍ®»d ÂBÔ&{BÜO.• Ó8©ŸGI¬\o£yXt*žz¯àk²)/ך?P·þ'â3L‹#Ûvƒ“x»­$m°ÒÐqib!Ûâû*f®S©X0 1& ­”ü?IÕ40†g¢£Á)±­ITßi”p‚8‹c„pw¾}ðî¼ç{oìM/Ÿ§ãOmàR×F.€êM8a˜²Y““‡8 üU8Wp‹ây’¤¦¥æ—­¿Šòoêy˜åÑÚÏÃ6‡Â‚U)ÿÛ&\8ÃÌ>†4;D]„mçˆ("Ϋc2Z2µ~yKŸ'Ÿ¦¿Üxý† ^J»×y ª-ûe½â|ÏÒÅÝãf³~ê7úÉܵìe9 9f†Ø|(Âæ– 5Î- P‰„lŠ8¦m‹_Ì&cïÃóo·—ßgøÁ Uf¯sô’†~®&°¢A€zÞ9 §ñÚ6 Ìgà 0ˆ‚€°d"?¿0$›÷ë²:†Xp(kc`6þýÙ›|¼›ÌÆÞÃlÒoý·áÊXd»¼É÷Ž2 -י究pVOº-b¥-?‡z$ 3uw®²h›=!ÉùþjÐrµÕ°³ À¡·Ö ÓæÂÍ£4 òÕ7u·ý ºd6rðèE?½ø8±¬ÚQ¬ç|uñA*&4þa•™bBK€š%U£$’…(ÅÈþ …Ý$ywf@©dÉR Fs,´z—‘VDÕ­Önù(H“,3£øOŒÙ6§Ói÷E§Ù|Ù4¬ZÔî ê}¯—à¿Q¼PÃüX˜‡¯QPÎÝ„A+Ð@Ýë¨ßm-”4`ß5È‹‡Ò(ü˜K"W£îÜ-õ ¡öXPÒn7¾›MîïûðpNJ78¹KÃ,;î¸w>¸©É¸Ø›P9\ \»5ïëeå†E¡¨®wþ!\¨6 ¨ó%˜8ãH¨÷ý"À®œ’h’±DÂ8Hô%…§WSï~4½+Ðrì½èX±%£ã,\A¬xÕ¡y¹]Gsµ€`\ z4Ð_)Çb¤Iþ±'mTLAå.ß×4gýtpËALؘñtt› *=¼>«ð·Oß‘h\Ý2ÛÕò¸ÉxÖOGs-ªÞSr”õÿ›£NÆ+H -Ì¥ƒÊP2¨0 hÐ#›&ËEŽu ´##Á\ƒ -\»£Êõø¾? ¼ %ôl\ûÙ‘Üt»\—É© I*Êr?.!R¹LÀšÎõ]îK"¯°¿–rƒŽ…‚¥/Êêw^ºJž”ÓÒoλwSzêŸX`É^OÙ¼”™u³e«H²Œ˰Т[ŠèvmْϪ t¶ 4[®d+{¿7y•| Óï‰h ¢«M4yŸö*ßù÷k˜f>Mxôél¹£$Aè°·Ci.md‘#[`D`L¯/Ù1K¬8W!ï /¦¿Nÿ9ö¦·7Å[ÇCîý,U8¨óÔíÞ¹ÿ­¢×ðò­úø’$«ÐK¯ŸÆó(ðs𬧋â(ÊXq„°}Í÷]Ü…«p Þòs×j ”©0‰IåßÒ…±„´îë<ªœÓ8Ê–:†™ }«¹¶¤IŽ¹ÉɆlC\¾Œ> -endobj -1322 0 obj -<< -/D [1320 0 R /XYZ -13.423 915.745 null] ->> -endobj -1323 0 obj -<< -/D [1320 0 R /XYZ 138.408 705.559 null] ->> -endobj -1324 0 obj -<< -/D [1320 0 R /XYZ 104.459 688.98 null] ->> -endobj -1325 0 obj -<< -/D [1320 0 R /XYZ 52.936 672.402 null] ->> -endobj -583 0 obj -<< -/D [1320 0 R /XYZ 88.117 655.823 null] ->> -endobj -582 0 obj -<< -/D [1320 0 R /XYZ 110.536 548.651 null] ->> -endobj -584 0 obj -<< -/D [1320 0 R /XYZ 117.823 518.523 null] ->> -endobj -585 0 obj -<< -/D [1320 0 R /XYZ 147.506 422.914 null] ->> -endobj -589 0 obj -<< -/D [1320 0 R /XYZ 72.332 352.651 null] ->> -endobj -590 0 obj -<< -/D [1320 0 R /XYZ 112.357 295.938 null] ->> -endobj -1319 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1329 0 obj -<< -/Length 2047 -/Filter /FlateDecode ->> -stream -xÚÍYKoÜ6¾ûWð(ͧzp’ë¢Iïº=$ÁB^Ñ»*´’³’ìèïP¤ž«µcׇ¶I‘Ãá<>Î éÓÅÕ%Eë∠5"èü>…ö;Œ$C‰CJQ ö…D;…n>ïŸ,5›á2É°'ÃñªÓfÏn/Šô2ý×—!E«íH̤s:Ô6ì÷1åòŠ%eš©Ð…9à0ÐÂAÇó¸`š÷(C™~?Âœpà¦y÷º5ÓNzàôbËÑ»D=,ìÓjRËmô’{è©eÌEC!–"ý'µêw)+jØAHntíºtOéÚ-émòùÙŠƒ瘆ž^ÿfqtú@I9…ï£Å-b!öƒù¡ñ÷"F_œ7y±Ú»Ìœ¹ÊŠ|WªÕñ·Å¯G³EO*dp?Á¦æÿåA1LþŠ•¡‡št«ÉAŽR4ïë€9£2Zî3 ÐÀäX­Ñ¡©«ó)¨ô0óéH‰ùì­Ñá"+Õz•Iž™ó*‰U­Ðsñt°…³¦»º9·ò Kpâapäzû~hœeÕVXùn ÊÀÆw¨‡}OŒMÌà5±äæ\BßùÉ#Ìóq(Ùc<b xÒðh]Þ™”‡˜…ùDbxÇ—Ÿ®—׋å|öqþéjùËìl±|ûéÃ%|ž-´OßsŽ@ŸÔ|˜à˜ø:,Õ,¾A,éQù˜H¿¡q ÁØÅ„‚D:âHãâwËÅ 6¿:[\_Íö µ-¼×² pÈøÐ(æÜoTTšÞ*ßÞÁDTªØ ” -ŒÕN™/1œ¥Š)e¡p«B³©gÏçp·°é[•I5¹¶Qkr¸îÛ“»AVåÔ®ÂÇ.—ÔYSÊw¶**à#6_7ë–9o>̼€˜±‡MRG;è&‹Ü¨ê˜’ëÍ÷,yÛX»ÜXS&ÙWBx¥²•ÈoM[ô|ó•H¢ý£vУÍB-Nhz 2Ž1ÖÐÚB:‹fÇB¥·Ë“lÝð+wy\­QkkXI{I³‘Æ®,L+P6n6µì6î4ÊkG´Aw›ÇjJ(‹aRTww©ó>OËh­ð0r"¯fΚû1/§ýÈ:hP¨B]ByÆÏgŸ FŠ<­´V?iÔ1H.f8ŠãDŸèOa•ñáÁ‚™¼*ïªòñ£a÷ö‰ù*²v¼QŽpã͆°*ïÅ -Ȳ†ð>J+ã -bŒ7t‡Æ¡µ$]¡÷'Ø ‰IËã1ÈÇMà½ø¨ã®¸óO×Wog³£/  ­@mlAwÓúœòæ„Bw§îv -R#ÐÄê>iÎWq§V‰Vy58}8\{.°1ƒÏ´*-aÈ›ª8mb,78«(]Uiç…¨hÂ@šæÅO#°¾¤â9}„C¬Bð¬q.©ò_!ƒüÎ)üÍvÓÚ`-¦kXRFúk<¨®hÐ,z4ËNdX -ËIø‚;’Âe1¸7Ê°:­²¬+™t~~†Gézœ¿{ˆÖû¸f»Û*[iêÓcÃ×òzQ/ÒñÄt›W÷mÈÓ}òLJ0û½D/¹§Ösúº@u Ú RåAjGp7Äj{´~Ì{xò}¨ ~ÕS˜–{u‘û |S¬NÔŽ#ìýüJXøÿ@|²°f B8Ñ ÐqG5ÎÕ‡ ž{§}~öáò·ÙÌ0[^ÿv9 ò™Z§É:¹IU¯ÒÚ¯˜^ Í’ŒцÓ×ñq­Iqð{[¨¡½Q[_><[^Äê6ªÒÒTÇÚÅYnú+íqÂÖÍ a©2ýú^%PYkÏÕ%8q.nÍ”­~h¯ÎfNš§ -l(“ ¨Ø{¢Ú„cþûqÈœq²¾È`¿%_šiÜÓD[r¥é„›ò -ª§ïßؤ'qÈÄKnl{·iÍ×ü9·é.> 24lêà<1~uþJñ½¹sö®ÏFRkÀylj¯ïà#áyŽ®Ùv÷¶!§Î?ºaλ¨ŒÌtQÝü©V¥ù(sÓ®6Q¦}-<é<$å -g3‘åe]êiÿŽïòUµ…ªÐTÛµƒÝgÁùâXB3Pt{Anýäž}$$p›z˜1ˆÆ!Ö×êˆél5…¸B‡êQ˜wº¾;%£=HøP`¶ï`Ïtâ¾ù%LJ ¤zÿZ^0êôÇ–àŒÐÐ%œÈQeúK-¥þí÷W[ô2«¶;q -R ØÑÇÔúoÁš,%©ÑÔ>û¶ÎÐè'én£M« ̘Ÿ õ©\‹·Ì„(aýKõ³éàM‚aïM>…s¾½ùÅLhlC&’T8gÜë±]²ÞèËbÝ·QèD'q¸ª¥EÞL¬£yÖПQö·a'Å]^Di½ tÔ_wiž”‘½çë!}ÕO*íPà(ý­-°(wÉMÕ[™‹¯ P:ˆ6JËÝ¿G&ã'u_ǹþ;R2iãí 0H²¸ÒD–-H ¥Hió©1ÎðAeœœ%õ¿—¨€:ÅÆx!ÆOÖÿ ¬[ -endstream -endobj -1328 0 obj -<< -/Type /Page -/Contents 1329 0 R -/Resources 1327 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1326 0 R -/Annots [ 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1331 0 R 1303 0 R ] ->> -endobj -1299 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [333.093 564.094 485.412 576.597] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650aaf8083737123a5c4d012783ee10a522d) >> ->> -endobj -1300 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.496 462.581 443.488 473.312] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a3eb936f08a8f6f01d4c683a6ba0c9d3a) >> ->> -endobj -1301 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.496 436.17 437.761 445.58] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650aaf8083737123a5c4d012783ee10a522d) >> ->> -endobj -1302 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.234 413.654 560.743 424.494] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea4e05ab48912e70486351f5199910fcb9) >> ->> -endobj -1331 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.496 400.105 432.034 409.516] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea4e05ab48912e70486351f5199910fcb9) >> ->> -endobj -1303 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.496 385.869 443.488 396.599] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a3eb936f08a8f6f01d4c683a6ba0c9d3a) >> ->> -endobj -1330 0 obj -<< -/D [1328 0 R /XYZ -13.423 915.745 null] ->> -endobj -587 0 obj -<< -/D [1328 0 R /XYZ 36.261 705.286 null] ->> -endobj -1327 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F33 531 0 R /F30 532 0 R /F89 511 0 R /F120 619 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1337 0 obj -<< -/Length 2076 -/Filter /FlateDecode ->> -stream -xÚÝYëoÛ8ÿž¿‚ÀaX1|êqßœÄM³·IZÛÁn·- ÙfÝÙ’«GÒö¿¡(Ê’l'›88H+Z$‡3ó›'u2~ h‘´@]ÁDáù Þ$‰J‘/ö„D©BwG·Ÿ,5™ö6É°+ƒî®{ææ,Šô6ý¿'},Šf«˜IÑ¥´ïiÉ îaÊ]äùKÊ4QÍ sÌǯ™ƒërÁ4íßPŒöýv„9á@MÓn K¢Ê'—+ŽÎ`u?³Ï‹±O,ÇÊ%)v}Ñ˨‹†,…xÏJµaÜ¡ ´D¨!#"¹‘u3Ü#«xNÖÍ–Æ!_,80ésŽiàêý§ã£“w`””ã@xß!`Ï÷‘¼Çsô¹wšd³ûc‡y~o¤â,Is5;þ:þåh0nC…,-ÜóЩ¯éþJÐ&A”ÊÐc¹t¥—-Ѩ)æŒJÖrI0 ,€O0«Ú75¼Ø%•.fí1œ.ã\-Ò0’ؼ¸(¢¹*z©=í}‚¯é¡~\Tü -¸%ðvâbásä¸{^`ÄÅJ[IÚb¥¥c‹u±çŠ®Šyà×*–ÜÅœK%ÿOÒ€†“=Eƒ FÁ]¥5˜òJy€Y G$f¾»A|rs;þp;žŒ×£›áäý ?žœÝ\}€Ÿý±ÖóÉ;Α‡”t˜à˜x:,•$¾AªU¤±ÊÃDzvct öÀô@šC±ŸOÞß^]ž_Ž?m{ €X׊ žLãpiýkZ,ªôTäë"ú3¸šÏ`Ú= ùi”È».–Ì{FS¿ª¡ëÂ>Ü vl‡ÛÚˆågƒëqÿbððoÀL{“Ž3çá¢S¬lÆ•M¬Âï¶!l öaeV¡ù!\ª®±ž0’— -³/PàÌ?ÌF^NÆC£\(p$k4™.¡­ú3P7Çtʽs¥µ«lgÂ5Ä6HéDíC;4è`j(•ÖsÕÿ}òáý§ÑåYÿ×*u´Ÿ¼£Œ .´2Ûÿ6WwQ PI&÷,guíé—eçŽD¢³B€¹_%b5UiÛŒÖ÷?²hf‰)jëjÔÖë±²¦.—ÉlS=gëÐæõ©‚l[Þ2Š¯©;¦™šMŠõΘdÅ4›¥ÑZ'-¦•ò¯À#€²×‚‡uáÞ€c?MN½9Œ.ÿ¼BÛ4k„ ¦«ð{´*V•†£«M“a}~ú#W٦װ`êþÁ$„0«•ËdZá™*(²âFÃôZx*ŸÌ4$„- -s©q8<¼Ïh Ùö-±é¬¡<ø?&ËÁu‡CtàøíføÓÛwïÃ7‚£K°†ƒáÿ×ðxLÒU+‹²{H;ý™à,ÚònpÇûá®;¹×\/–Roú­N’WÕ]%sÓ?•Ž&yLÈV‡§½?õƒõÎKcÓÓIÿ ‘ù}xùœÝ‡±®*„+¡™Êï¡t4q’—횦ñ§¡xžÌŠ”!Õ‚2‘@é1 -ˆŽ¥ì9ææÅiÜt:å%§Ó¿&Ä/ûä@§Ë o…ε9ØÛi¤­ºD€= -Ž˜„n—vëÉh£*ñ°$õ%ï ѳ%ÙFõÐç ÀH_Âù%¿ Ô=M¹qDFhà<à Kù­ôœcN=†Ï̽ç7t´gÚ{ÎQY8IДÞ@”S¬õfQìs±ÏÆ¢j8CGNgÖélv»ôr»¬žßµÐÙÐïNw÷·Éßkш•cTÊVrò/Ð×$˜øe¯A«•ú_s<[¡×iµ>‰SàJßAÓìùÍkªÖTKÌý†-Âk°[kô÷–Í!FšZ˜11j®r*{q6³ƒ• üJAõ7Ö¨¦\à§è]¬¦ïÍ„¶m ‘šŠ^__¾èwi´¸×÷—帊B?ë›'],f‰X„é\—„åÏ0þaHÏ£ldá²ÜôÔ÷õ2‰r{Û£_¥j&óbV¿ò{jå@ªZ$ò4š=af‚ $Bi+Ú<*{id{"›)ê” Ê8×Láz½ŒêxÛºÚŠây¡°4p ›½É6ÊÁlÙÎi’‰òÛ)XŠ*Æ Ùýó*ýéa -endstream -endobj -1336 0 obj -<< -/Type /Page -/Contents 1337 0 R -/Resources 1335 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1326 0 R -/Annots [ 1304 0 R 1305 0 R 1306 0 R 1339 0 R 1307 0 R 1308 0 R 1340 0 R 1332 0 R 1333 0 R 1334 0 R ] ->> -endobj -1304 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [374.689 661.575 503.968 674.078] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a381b968290256e77d50c4f7e92bfb27c) >> ->> -endobj -1305 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [364.98 648.026 523.965 659.946] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a3eb936f08a8f6f01d4c683a6ba0c9d3a) >> ->> -endobj -1306 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [364.98 634.477 560.743 646.396] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea4e05ab48912e70486351f5199910fcb9) >> ->> -endobj -1339 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [303.136 620.927 469.998 632.847] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea4e05ab48912e70486351f5199910fcb9) >> ->> -endobj -1307 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [405.136 577.643 557.456 609.969] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650aaf8083737123a5c4d012783ee10a522d) >> ->> -endobj -1308 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [329.82 536.996 560.743 548.915] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea1c0eee38a61b05c5239c871f9cdc85a4) >> ->> -endobj -1340 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [329.82 523.446 434.849 535.366] -/A << /S /GoTo /D (group__bsec__interface_gga832388c889417ed197609d9965625bfea1c0eee38a61b05c5239c871f9cdc85a4) >> ->> -endobj -1332 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [361.671 325.771 497.66 338.274] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1333 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.318 237.223 413.365 249.726] -/A << /S /GoTo /D (group__bsec__interface_ga8798390d842b820e79e9cbf8ba4d516e) >> ->> -endobj -1334 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.318 148.675 374.562 161.178] -/A << /S /GoTo /D (group__bsec__interface_gac79a471c6e20fd8c17577f6f69a9469f) >> ->> -endobj -1338 0 obj -<< -/D [1336 0 R /XYZ -13.423 915.745 null] ->> -endobj -588 0 obj -<< -/D [1336 0 R /XYZ 36.261 705.286 null] ->> -endobj -1341 0 obj -<< -/D [1336 0 R /XYZ 88.706 488.007 null] ->> -endobj -1342 0 obj -<< -/D [1336 0 R /XYZ 97.794 471.429 null] ->> -endobj -149 0 obj -<< -/D [1336 0 R /XYZ 29.788 424.97 null] ->> -endobj -674 0 obj -<< -/D [1336 0 R /XYZ 29.788 395.975 null] ->> -endobj -1343 0 obj -<< -/D [1336 0 R /XYZ 29.788 395.975 null] ->> -endobj -1049 0 obj -<< -/D [1336 0 R /XYZ 499.696 328.834 null] ->> -endobj -1344 0 obj -<< -/D [1336 0 R /XYZ 29.788 305.467 null] ->> -endobj -1068 0 obj -<< -/D [1336 0 R /XYZ 415.402 240.286 null] ->> -endobj -1345 0 obj -<< -/D [1336 0 R /XYZ 29.788 216.919 null] ->> -endobj -1346 0 obj -<< -/D [1336 0 R /XYZ 376.598 151.738 null] ->> -endobj -1347 0 obj -<< -/D [1336 0 R /XYZ 29.788 128.371 null] ->> -endobj -1348 0 obj -<< -/D [1336 0 R /XYZ 238.806 63.19 null] ->> -endobj -1335 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F33 531 0 R /F30 532 0 R /F44 228 0 R /F120 619 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1359 0 obj -<< -/Length 1535 -/Filter /FlateDecode ->> -stream -xÚÕXÛnÛ8}÷Wب^%jÑ—¤qÓMšÚ‹¶0‰±µ°%×’›-Ðß¡(Y—Êë¤ ŠpBR$çr8äðx:¾¦hž š#‚ÎÐ@ÊOð… éKìSŠ”`Øm4º¼ûfð1 `i`ÚÓ$îô»³Ž«5ëµ(2ÓÌO*,|ŠÂUG̤è"í++8Á=L¹‹_¬8:KAÔýÂVcŸZN¥—¤ØU¢¡–5! ùX -å{µªw(+já F$·ºÖÕ=ºŠCºÖS‹¼{´â ¤âSß5óO§ƒã—@Jʱ/<Mïó±§ò|ëïi„ÞOÓ,\9ÌSÉN²t“ëðèãôõ`4m(C…,î)lª þûEÐù0*C÷ÅЕ2p´D“¦˜3*Œå“@ ,@N ÕíëŸ÷é@¥‹™G;JLF/¬I®ç› ÓÄ~8ßÆ‘.z,Ÿ• ™@”'°!A2`ˆ‹…âÈq)ö´F4)X9@“BÎÙÕÍåéh<{{3½¾™NZ¢¿¤Œ Ø{®+ $x6 ç¾Åú#Òwq¢‹É^¬¢ã øO ¶µ_-¥a²,!¯¶«[½±¦JïÊr›¯·yö̶"½ÖI'ó²³´k–.·…•Ûò·M‹ p+M[¸ [XÁgW/ÞÜœÎ~Ì]°ÚŒåòšä6Î?@ŒÐËÈjš/‚ÜÖb°Cä:³ÍûE\mÒd¶lt5>\n#U­ -Oÿ¨ ½† ¯Ço_Œ&“ÙùɃ¸$öY¯‰S[ÎÚËlωrŠ1á½€zþ¼ÔZ,JàØ(ǬR:ØÞÂ#”®Olè~ƒ_njp¦q)È4M.&Ó·ã–Ž0Ê¡Æ­û\ëPI°ªô°²Ò¬7i¨³ly`]Ñõy˜&Y$¥ßïÒr‡ÌƒÒÅY*ÛaŽ`S5HfÌ ~óË5Ñ¥Óƒe–î G´ Ds¬x^°œÍt8»]éY¦óöj6Ë{ù&fU`‚cÏ¥MŽ©Ž½º¹¼8»˜þýcûô´t“óšJÿC7þDtëUó\óæJ¶£Éwsm±]ÅQœùH&Ÿ’d¬I2¿‡d×°Õ'7ãÑÓl‡ö«‘¬WÍŸM²õ¦m7ú!$£¿k$£¤‡eÓÑåõh|2} Ñ›M¼Ts}, úó¨¶O×°M)ÈG¼'b[®Wk —óß’p0ÅÚvQ¤/=ßÇ=iÃwe@…GWà™ªl *«!8^§3ÙiÌ2ëa»þ¾NßíîÎoÃ/Œj¤ÒcRè¶{‚Äܺ1 ù ±-Gš¿f=\¡ï³ên%È‘8æ¼ÆÔSÍ™šMå˜rHÁ¦ÝÛËÎÙ­1æ]¨^Äj³Szì/AÍQNɧ&L(~ñšBÍ FëaˆsÙx‚¦ž¯n_ÙÃm ÇÓåÒ~ÛÄó…É„‹z…žAS”¼ì˜û¨`šAòÅBGq¶N³`YLð‡úßõ2ó"x”Ÿ6ŽŸhî>©¡†k2@•"ßÄ·ÛÆÈÚŠ`'¡´m»8]²=iºþ¬«“¬z! Öëe¼‹·­3.N¢­ XV7¬Î<¸Æ-kÜÍø[‡®d¢xã¥KQ^½…Ûšüø¬™7Š -endstream -endobj -1358 0 obj -<< -/Type /Page -/Contents 1359 0 R -/Resources 1357 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1326 0 R -/Annots [ 1349 0 R 1350 0 R 1351 0 R 1352 0 R 1353 0 R 1354 0 R 1355 0 R 1356 0 R ] ->> -endobj -1349 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [184.347 523.174 289.901 532.349] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650ad30626f0de1be98802cb5e50c8b67207) >> ->> -endobj -1350 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 462.152 160.548 494.788] -/A << /S /GoTo /D (structbsec__bme__settings__t) >> ->> -endobj -1351 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [207.884 390.998 299.316 400.172] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a381b968290256e77d50c4f7e92bfb27c) >> ->> -endobj -1352 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 329.975 160.548 362.611] -/A << /S /GoTo /D (structbsec__bme__settings__t) >> ->> -endobj -1353 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [207.884 258.821 299.316 267.995] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a9202c1504b464b16f432da6a4dd582a2) >> ->> -endobj -1354 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 197.798 160.548 230.435] -/A << /S /GoTo /D (structbsec__bme__settings__t) >> ->> -endobj -1355 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [222.006 126.644 327.56 135.819] -/A << /S /GoTo /D (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a3eb936f08a8f6f01d4c683a6ba0c9d3a) >> ->> -endobj -1356 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 65.622 160.548 98.258] -/A << /S /GoTo /D (structbsec__bme__settings__t) >> ->> -endobj -1360 0 obj -<< -/D [1358 0 R /XYZ -13.423 915.745 null] ->> -endobj -1361 0 obj -<< -/D [1358 0 R /XYZ 29.788 737.428 null] ->> -endobj -1362 0 obj -<< -/D [1358 0 R /XYZ 235.359 681.917 null] ->> -endobj -1363 0 obj -<< -/D [1358 0 R /XYZ 29.788 658.795 null] ->> -endobj -1364 0 obj -<< -/D [1358 0 R /XYZ 334.184 593.965 null] ->> -endobj -1365 0 obj -<< -/D [1358 0 R /XYZ 29.788 570.842 null] ->> -endobj -1367 0 obj -<< -/D [1358 0 R /XYZ 29.788 459.721 null] ->> -endobj -1368 0 obj -<< -/D [1358 0 R /XYZ 29.788 438.666 null] ->> -endobj -1369 0 obj -<< -/D [1358 0 R /XYZ 29.788 327.544 null] ->> -endobj -1370 0 obj -<< -/D [1358 0 R /XYZ 29.788 306.489 null] ->> -endobj -1371 0 obj -<< -/D [1358 0 R /XYZ 29.788 195.367 null] ->> -endobj -1372 0 obj -<< -/D [1358 0 R /XYZ 29.788 174.312 null] ->> -endobj -1182 0 obj -<< -/D [1358 0 R /XYZ 29.788 63.19 null] ->> -endobj -1357 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R /F158 1366 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1375 0 obj -<< -/Length 1310 -/Filter /FlateDecode ->> -stream -xÚµW]sâ6}çWh¦/0S }ÚrßȦ٠iÈô!»Ã8àwŒÍú#éÎìï•dãB“lÒ D²tutïѱîe¸˜]S´É{mAç=x@Úo0Bô%ö)EJ0ì ‰²Ý÷>ÿËx(Xj˜Ãe’aWúÝUÃzÏý^éeú¿'>E«mÇ̤è"jk8Á=L¹‹pª4þíW‚Ö0ù  •¡'cºÕæàG1š·cÀœQ©À–{L‚4°?AVtjjv~,*]Ì<Ú b>ù`c¸HŠp“E”&v༌֡ èµzz®Ï¢<<…¸X(Ž—b_{«]˜bø¤ìÓZ1Î.ç£éõåd9-&ËñÅ|tv9x9üHAðº®Ðèp¸¯·°¿¬Ãû( ‘Éÿ@4Ó_ˆ$®”\br}ª÷±´î×W˜Á ŸÛ]Zͪ—ÞÛ6°Í:ʃ»8\ۧܨ§Ã!C° wÛÔ°´\^¿!€ÕP:Óo£"ªäµ -ò9—é“í\§Oaf»Ó´£Á—1ÃO0sóžÔÜrCÈÿÊÎM\dÁ;uøv‰ÓD-§“Ñüf6™N®Ë?®–ãÉttõ²WM¼¾[´I})É®,,A\Vä•yý’iÕfÑfS“Tl‡7Ünà /³m˜T`Ú sÐúa—yíÏ+‰–m¢³›‹åÕh:y£[@v4·9èY²Š0K‚¸ºŠ¬\Uá&Á¶sçcÁ}†“{ŽŒÏŽÜù?•¾ŒÿäÒPÊö¸oý±G_ Y™t•áºý,ÌÃìQŸ·Ïiÿ‡nXÎË»¿B¦~ÐjÐíê!H6¡îËþST<¤ee¤E´ --Æ‹8NW¥Õ…1(·waöÛÀñ…ÃXè4åœM'®"N+•:&‹:£+B”£‰…j -3©ÎÇ:V+ïhš=¨#„ÀBpÄ$¶ÊiW’ÑVáA!ÔT¯<¾ºnØs/aIghQ q¬¯«c£[#"F¨ï×aêMR‚øëè¡8ãÔCÔÇ̵u)êX†Nè+ LéåðPïÜ2À[ýD±â -N¦n[FUw…zNgÖé,vZ«´ymÖÌ3töøÝéîúCø©ã˜›Øšš**äÆ0Q¦º¥•¥þ¶û«-ú9V›8¯ì?"<Õ®¤÷jªl*£¦¦hnûÀFôûMl4M00c? j[9•^œ½`Ž¸â›2˜êÒó ¢ç\¶*zxýóíÝïvBkÃeKEÇv RÊC‘Wýêúd˜8Oë‰M­£dcƒä»…†Zp—æAløŠvqæò¨†²p—¥k¸¢ë!HXë¨¨Ê ­Ý•­5An/È~æ¶o›§0®.~0:(:Š‡*m†Mþk*×Ý.ŽšûVܧY½|]jê|Þî¬ø^Õ6†ÜM™éI2a~œS¿.åÑKôñýcº‡ -endstream -endobj -1374 0 obj -<< -/Type /Page -/Contents 1375 0 R -/Resources 1373 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1326 0 R ->> -endobj -1376 0 obj -<< -/D [1374 0 R /XYZ -13.423 915.745 null] ->> -endobj -1377 0 obj -<< -/D [1374 0 R /XYZ 29.788 737.428 null] ->> -endobj -630 0 obj -<< -/D [1374 0 R /XYZ 192.29 684.487 null] ->> -endobj -1378 0 obj -<< -/D [1374 0 R /XYZ 29.788 663.877 null] ->> -endobj -654 0 obj -<< -/D [1374 0 R /XYZ 228.66 602.651 null] ->> -endobj -1379 0 obj -<< -/D [1374 0 R /XYZ 29.788 582.041 null] ->> -endobj -678 0 obj -<< -/D [1374 0 R /XYZ 254.722 520.815 null] ->> -endobj -1380 0 obj -<< -/D [1374 0 R /XYZ 29.788 500.205 null] ->> -endobj -1381 0 obj -<< -/D [1374 0 R /XYZ 319.609 438.979 null] ->> -endobj -1382 0 obj -<< -/D [1374 0 R /XYZ 29.788 418.369 null] ->> -endobj -1373 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1385 0 obj -<< -/Length 26 -/Filter /FlateDecode ->> -stream -xÚÓ -0TH/æ2PHW0PpÇIºp; -endstream -endobj -1384 0 obj -<< -/Type /Page -/Contents 1385 0 R -/Resources 1383 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1326 0 R ->> -endobj -1386 0 obj -<< -/D [1384 0 R /XYZ -13.423 915.745 null] ->> -endobj -1383 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/ProcSet [ /PDF ] ->> -endobj -1407 0 obj -<< -/Length 2057 -/Filter /FlateDecode ->> -stream -xÚí]oÛ8ò=¿‚2P1"Eê£À=4›6í{ØmÜCZ²ÄØ:X’WI -ì¿’’eÅN.v‡½; )r¾g8’ç7_edÙœydI¹¬@Ôþ¬Æ!µÜ^/Éh‰‘ZÆ\žÇIL¥ˆâðE­¶‚»Œƒ•¼¥kÞ¨±mñ—°dtœ!뮜/“æTû},“ÅÚ#’ÓB% „(îûväÖ;gßÿù<:6C2çÕ½ªØ×S'šöWKÔî•cÊv³4uPoaWþ‡ë(󽩑¡~áÎ4«þÛzÕy–·?ÞÔП-Ñÿ[£¹Î—K¨F‰òô@…cÈÚﮪӾ”³3EaÞ®†¼Qû9+M˜µ‚~ÙÓ\ü8ºXÝ={ì-Y{ïÙj@±ä^²\üòñññq|”™Iéh›=‰$ -˜ÛSœ“x76+Й+¬Ì}éÁ‘jÐ?Qº$/ûÉÁSøÕ®’ÖôŠ®±½…Åët9¯¡ªÒVx=1cÎÊö{EÆ"!– -ó‘˜Æ—[T™E„sQ݉~x/Ãü%6 -öaHgnûÎÀŽÙn|â@³ª:<Ð`¿*×?LO+{ŽzTi×*;Ÿß½ÖõšÖÓ[…÷ï_ZžWûZfµørwHu. #YÍ«w€å sèõ9ŸäBù¾ÀȦ3Ú->SÏBß±CI™èÍP>h’½%¡¿PK]ÌÙV$8žÞç™Ê&âì‰cèEl¢-LGUwK‰G¡“—¯^žQtÀGÿNA¼{3Ž/o‹š&€^x ß'éaפqH}¼ D‹î•íåÔʦ3f³Qi›ß+XP°iÊO(àXˆ0 ¡02|ÑG¤ÀI³ix•óêÄì×eßÉDÃKço†{gZ{oô' Ïººo² f£Á¤£ôa%3ƒýÞ7"3ë)ªkÂ.é.ôv¼)%˜‰±%¿y³Þ#¤ž ûBÃÝç 6ZX{XøTJ¹®Ï_Eؽìµ:Þ1Ÿ,çÎ汇ŸÖvÂ9Ùmta·güëÕ›Ý!áÿ`sO×/admùK•å¸C¦Zˆ/¸vT}!ûÌùnïqºéÿTx˜U±MWI¹TØ—:èªÎ”U›§ÊÐøÃPì¯Ë-@W,Tý~憜/®o°špao"Ï=¸úÀýðwÏ‹ÌîëB½Ä!4tÉhÔû+ÜwÛ”ð —T˜Wšñ+ˆälô -Õ³7¼‚¼Ò{ý»ÇÖô&ÁGø üá2~ÿÝ™ $î±Øõȶ'EèßkëÉg!a1Ôšæ]œ@#ù`(ÆBÑáˆrX±E»õ_ŒF~žéÛí¦äÌ̺dw„…à=Ø0¿ÐÝÒŸNOñwɯP5¯×ãZë6¼I †pãÔ‹ôë³ø÷Ó‚gÕ“Ï@*¡o,ŒÆ/Ûh²0DGÓðè78{$·LŒ6ƒ20cþJ2†rm¼¸Û€Ù#J¬Ÿñ>í¼Hú¾½HêÊíªX|6ÛPSJ&œøV‚cP’®ð6M÷mÂ’O@_7U?±LêÌÔ‘ð™”? é,o6U“¬5B …óf]åæMÎÕ -6¿ ŽýPä((v€”P/ºŽÙ£ÁàZÆv²Íƒêßxú;Á¼œ¼õ¨ûáÚ¿%¨[†|kO¯=zÖ¡‰% Ò¶Ö_'ãÐg‘‹p\>‚Jas¼ˆwP >þï"ÝŽ -endstream -endobj -1406 0 obj -<< -/Type /Page -/Contents 1407 0 R -/Resources 1405 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1411 0 R -/Annots [ 1387 0 R 1388 0 R 1389 0 R 1390 0 R 1391 0 R 1392 0 R 1393 0 R 1394 0 R 1395 0 R 1396 0 R 1397 0 R 1398 0 R 1399 0 R 1400 0 R 1401 0 R 1402 0 R 1403 0 R 1410 0 R 1404 0 R ] ->> -endobj -1387 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 555.914 121.973 568.145] -/A << /S /GoTo /D (structbsec__bme__settings__t_a300b00f9580b9af76d441cd4db8d7083) >> ->> -endobj -1388 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [82.999 519.353 150.479 531.584] -/A << /S /GoTo /D (structbsec__bme__settings__t_aa197109b334a2a443d9349812865bff1) >> ->> -endobj -1389 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [270.179 500.539 345.816 512.036] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1390 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [82.999 482.792 180.795 495.022] -/A << /S /GoTo /D (structbsec__bme__settings__t_a500cfa825fa7c6ead38eba7bf7b4b955) >> ->> -endobj -1391 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [82.999 446.23 166.253 458.461] -/A << /S /GoTo /D (structbsec__bme__settings__t_afc3ab51b88f259e5cb76c10ee0732e5b) >> ->> -endobj -1392 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 409.669 118.341 421.589] -/A << /S /GoTo /D (structbsec__bme__settings__t_a4407b04a0d403a9fb35fd322999113a9) >> ->> -endobj -1393 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 373.108 192.293 385.339] -/A << /S /GoTo /D (structbsec__bme__settings__t_aecd99f57df2bc07663a7de83f877228e) >> ->> -endobj -1394 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 336.547 208.668 348.777] -/A << /S /GoTo /D (structbsec__bme__settings__t_aed0450820cd910e06e26fba04256bc24) >> ->> -endobj -1395 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 299.985 190.471 312.216] -/A << /S /GoTo /D (structbsec__bme__settings__t_a7984769929826a36f59e7b9dfd6e7447) >> ->> -endobj -1396 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 263.424 182.595 275.344] -/A << /S /GoTo /D (structbsec__bme__settings__t_aa4a1eeae4e7fe44a8093a3862996fbac) >> ->> -endobj -1397 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.294 169.017 244.198 181.52] -/A << /S /GoTo /D (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) >> ->> -endobj -1398 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [308.144 134.896 527.207 147.399] -/A << /S /GoTo /D (structbsec__bme__settings__t_aa4a1eeae4e7fe44a8093a3862996fbac) >> ->> -endobj -1399 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [84.31 107.797 320.65 120.028] -/A << /S /GoTo /D (structbsec__bme__settings__t_aed0450820cd910e06e26fba04256bc24) >> ->> -endobj -1400 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [324.718 107.797 543.208 120.028] -/A << /S /GoTo /D (structbsec__bme__settings__t_a7984769929826a36f59e7b9dfd6e7447) >> ->> -endobj -1401 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 94.248 253.297 106.479] -/A << /S /GoTo /D (structbsec__bme__settings__t_aecd99f57df2bc07663a7de83f877228e) >> ->> -endobj -1402 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [79.408 73.676 231 86.18] -/A << /S /GoTo /D (structbsec__bme__settings__t_a4407b04a0d403a9fb35fd322999113a9) >> ->> -endobj -1403 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [498.934 73.676 567.119 86.18] -/A << /S /GoTo /D (structbsec__bme__settings__t_a500cfa825fa7c6ead38eba7bf7b4b955) >> ->> -endobj -1410 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 60.127 179.344 72.358] -/A << /S /GoTo /D (structbsec__bme__settings__t_a500cfa825fa7c6ead38eba7bf7b4b955) >> ->> -endobj -1404 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [201.613 60.127 394.012 72.358] -/A << /S /GoTo /D (structbsec__bme__settings__t_afc3ab51b88f259e5cb76c10ee0732e5b) >> ->> -endobj -1408 0 obj -<< -/D [1406 0 R /XYZ -13.423 915.745 null] ->> -endobj -153 0 obj -<< -/D [1406 0 R /XYZ 29.788 737.428 null] ->> -endobj -1116 0 obj -<< -/D [1406 0 R /XYZ 29.788 649.232 null] ->> -endobj -157 0 obj -<< -/D [1406 0 R /XYZ 29.788 649.232 null] ->> -endobj -1409 0 obj -<< -/D [1406 0 R /XYZ 29.788 603.186 null] ->> -endobj -161 0 obj -<< -/D [1406 0 R /XYZ 29.788 221.409 null] ->> -endobj -1405 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F89 511 0 R /F97 510 0 R /F33 531 0 R /F30 532 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1423 0 obj -<< -/Length 1484 -/Filter /FlateDecode ->> -stream -xÚµXÙnÛ8}÷WðÑF´¸ié[Ó¦i ÌL˜‡´0d‰±5°$WKÓýø¹\´Æ®áL $!EòÞsyH^f±ºû@жš¹h‹\t;ƒD ü-.¡À!!(àû\ R¢‡ÙÇ'ƒ€‚…‚› Š=N­íœý\)3õ×æ!Aq6qSÁ§H§ÊŽ3æ!? Xª@•ƒôчr*žÇ8UØÿ ý2ÃÌe€¦°U ÚÐ ‹wC¯ põ´³çiœ¢å´¼Á^À´L¸\—¢ „þYV½ã¡%—8¨¹‚®}õW~Žko2˜äãÅÄÁÉ€1LBOÙ_¯f‹7 JÂpÈ}­ ±ÈÍz¯t?¿.ªxwåP?˜/e^e-ã«Ï«÷³›Õ€ áB+ÜBˆi ðï?»(Î÷È… Rô¨‡fj8øÀÐ-‡0£D0–ùT€40?AV[tªëîö"Y˜‘‹ÄâÓ¸oÁ á¡©n¸O`•¤¬Ì×+¹¯Ò¦úŒ'Ž?‰'ØW,úÐ>0Û:iʧAý5˜Â_¿³3ä³gQe–j“¥IZ__eYEÙa¯¦¹oðsº§¦8ÅYXÎÖÎÐë–v×ω7qÈå·zGûý%ܺÇÊ};åëÀÅ‚ñB¯®˜?O3+ìªÆ–ÿƒÿÎö)hSÓøÇUú^ÇE^—ÅþLxŒ7OC$Lˆ¥¬*Øs¿Q*'§8³=>X»ß+¯CÃtë$ª£Ké3z†ÿú íëÔ*àd!Ý}È*.ÓMGþq—¶w²ÆÕµÔÆ¢.L¹±±;DU%“®ÏЃ;”û®¥ºæ–¶ÁõŠî ’"–몖‡ê“+\ø%ǯLH3UU`®ÂT»ý—Òºí«â¨=‚R¥dÊŒ»^y¯?Üýýêf¹\›2:Œ!dm$P™ˆ‘c?U‚ÎÔ yA̼`(ߢlòõ6ª~íV€žQÁMmö6VÊBW2© ¡ò‚Nõ 2Q=„… Ci¿;’»<+ Ót|ún—ŒxIÚeÿ³HR%çX_qà;÷¼9loY~Uº ™ÿP¿ÖbVÝU³ùWƵùPŠVe¼‹ò­Tu1Lë]ÑØyQ§±4? b›BÙM¶‘å‹+ǧô´ºbî\ÿyã®3È :/ÿrÝÀQqU:¥±…XQÕt¸Tº£t˜sØK Q*&ÓdXP2H†}Èç»døÂÕkÓß>ô:aT¢ ók!¨Çó[»»©KBÇõ@ÌÿKIÀ¿eo F|Š¦žy^¡Ù 3tr%Eur<"e?Ja·¸XÅ­ý‚ÌX™¶ ²ÕÍœI¯31vVjx;¬ë?6Ðéñ§ÝSû1üNQs[KÍ­{šÂk!¹Qìú‘FìHõ;¬Çz^T»™¯à¤%ðöƒáƒ°W“c‡h5uo¿n±GcÔ»´ŸÄ°éÈ@ùÉÑp”cõâô‚9âJ¨_sD½ FSÆÄàa -Ÿ|~›mÞš¥m G2áó—*£RmeºÝ©T×í)ô|r{/ÙŽmT&úÂUŸQþÝ@'iu(ªh¯ ¹üvØ©y§Ù¦R•Ÿ4q×Ì%ä¼eD —y3°1—––Ñió(ÛL°½Ò|’ʯúœf‹ÑR¥î¼U-EÙš'r ²°à-<½ÚœÜçI&5º¬åúL„cÁí/Ü‘ èã?¥ù•M -endstream -endobj -1422 0 obj -<< -/Type /Page -/Contents 1423 0 R -/Resources 1421 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1411 0 R -/Annots [ 1420 0 R ] ->> -endobj -1420 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [264.057 195.541 346.689 208.044] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1424 0 obj -<< -/D [1422 0 R /XYZ -13.423 915.745 null] ->> -endobj -165 0 obj -<< -/D [1422 0 R /XYZ 29.788 737.428 null] ->> -endobj -1413 0 obj -<< -/D [1422 0 R /XYZ 29.788 718.941 null] ->> -endobj -1425 0 obj -<< -/D [1422 0 R /XYZ 29.788 718.941 null] ->> -endobj -1414 0 obj -<< -/D [1422 0 R /XYZ 29.788 648.631 null] ->> -endobj -1426 0 obj -<< -/D [1422 0 R /XYZ 29.788 626.563 null] ->> -endobj -1418 0 obj -<< -/D [1422 0 R /XYZ 29.788 558.212 null] ->> -endobj -1427 0 obj -<< -/D [1422 0 R /XYZ 29.788 536.144 null] ->> -endobj -1117 0 obj -<< -/D [1422 0 R /XYZ 29.788 467.793 null] ->> -endobj -1428 0 obj -<< -/D [1422 0 R /XYZ 29.788 445.725 null] ->> -endobj -1416 0 obj -<< -/D [1422 0 R /XYZ 29.788 377.375 null] ->> -endobj -1429 0 obj -<< -/D [1422 0 R /XYZ 29.788 355.307 null] ->> -endobj -1412 0 obj -<< -/D [1422 0 R /XYZ 29.788 286.956 null] ->> -endobj -1430 0 obj -<< -/D [1422 0 R /XYZ 29.788 264.888 null] ->> -endobj -1415 0 obj -<< -/D [1422 0 R /XYZ 29.788 151.542 null] ->> -endobj -1431 0 obj -<< -/D [1422 0 R /XYZ 29.788 129.474 null] ->> -endobj -1417 0 obj -<< -/D [1422 0 R /XYZ 29.788 61.123 null] ->> -endobj -1421 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R /F32 514 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1443 0 obj -<< -/Length 2050 -/Filter /FlateDecode ->> -stream -xÚÝYYoÜ8~÷¯àcˆØ¤­ö2WEÖÌߦ7]ðåeœLIKåùžFï ýõ.òMÖç‘°Â=9Þ=.çuÙ2K`Ls³n>¦6YfÃ|t 7¶=ÔÕ=$ž™]aÙ`}žÊicg,ÿl¡Š>m`.~1›býÈa¨®ÓGÛµÆâwþÐöñ ðyÀElÓ¸zyÎéâàŽÛw#´QGŒÎ(ƒbðé2¢óØ)C³ÉÙÊ8KFP†µ#ÈÅçªV:}<—bñNóÇY‰ä6m•ÝÒ:V5Ÿš¤‰ ºÓtØ|ïŒjôB«k·*­•ã jÝHQTÊñ‘Z†tV³ò rÃ5Â]Ñ6S@ñÞ¦êÚ­m•)z¯¬xì2uµ˽7)]VA>¢Ž›O¢ð‰_6Ì1x¿N­h+}xBt¾ZžyBFêaíXºmí:êÑÚ šðQdöÃ:™jU½ÏÈzÇæq ñJÉõ¶q2{q1ÿÌR:å|°W· aêªiòMñ:^òNáǬ"MmËû´èTã½(;ꀚòºC”Ct; -{Þ£òòÍþäCýÚ±ÛÎ:ÔG™Ô]ÝÀ´®ƒ€"<^+Ç_Z4Õ túAKt±&`0Gù`ø9l2ô 6…6¹ç’yÉ8`ª¶Ž½éh:ùŽB”!ëAoÞ ^ýr÷ª¬¿Q_ ðR>1¶à CÓÆdL3ã_®~ÙP–p/“ 8Š„•és•‰¶ÆËøv´Èu·è,8š Ž6£]z¹_ÖÏÏ- úÇÓÇû§äï´hÄËqmdë ßþp7†IlJÀÔ­Ô¿ãþvÞ¦Õþ$@A΄y]Ð(—›orkÜãM}e¹7öd®z‡Xiza`Æþ”h¼*pþ 3ÃJbjÅT×g'eoÎå¨ì ŸbqµßüÓNhßÖ,‹ßôTÕùîNg…¦ï¢Ð;›r t»´ÎlfŸiùhIgys¨š´0’…úëPT¹Å7T+ÈÇ3ÈöýäšY®Ë…nh!èF{ÒÆÀ/ðq´yPþéœ6'J#꾯Vz°H67íý=/³N3à‘¸=¨º}ti¯Q~öy'™0ÿÁ‚÷©@§Y-øÇI’. -endstream -endobj -1442 0 obj -<< -/Type /Page -/Contents 1443 0 R -/Resources 1441 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1411 0 R -/Annots [ 1432 0 R 1433 0 R 1434 0 R 1435 0 R 1436 0 R 1437 0 R 1438 0 R 1439 0 R 1440 0 R ] ->> -endobj -1432 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 489.708 135.304 501.628] -/A << /S /GoTo /D (structbsec__input__t_a90d515d57b274dfde74a281de469a3ad) >> ->> -endobj -1433 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [64.803 456.681 95.29 469.185] -/A << /S /GoTo /D (structbsec__input__t_a000803d39a2be521f2b5e7017c31303b) >> ->> -endobj -1434 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 423.655 168.653 435.885] -/A << /S /GoTo /D (structbsec__input__t_ab535651a26b2e2c44c83e441385e3def) >> ->> -endobj -1435 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 390.628 126.217 402.859] -/A << /S /GoTo /D (structbsec__input__t_a916867811b65988853b69f729b91c262) >> ->> -endobj -1436 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [241.606 260.773 324.238 273.276] -/A << /S /GoTo /D (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) >> ->> -endobj -1437 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [329.183 241.968 448.691 254.471] -/A << /S /GoTo /D (structbsec__input__t_a916867811b65988853b69f729b91c262) >> ->> -endobj -1438 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [28.792 228.419 145.995 240.649] -/A << /S /GoTo /D (structbsec__input__t_a916867811b65988853b69f729b91c262) >> ->> -endobj -1439 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [373.813 228.419 492.216 240.649] -/A << /S /GoTo /D (group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) >> ->> -endobj -1440 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 188.297 173.879 220.933] -/A << /S /GoTo /D (group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) >> ->> -endobj -1444 0 obj -<< -/D [1442 0 R /XYZ -13.423 915.745 null] ->> -endobj -1445 0 obj -<< -/D [1442 0 R /XYZ 29.788 737.428 null] ->> -endobj -1419 0 obj -<< -/D [1442 0 R /XYZ 29.788 680.603 null] ->> -endobj -1446 0 obj -<< -/D [1442 0 R /XYZ 29.788 660.7 null] ->> -endobj -999 0 obj -<< -/D [1442 0 R /XYZ 29.788 595.455 null] ->> -endobj -169 0 obj -<< -/D [1442 0 R /XYZ 29.788 574.126 null] ->> -endobj -1447 0 obj -<< -/D [1442 0 R /XYZ 29.788 534.354 null] ->> -endobj -173 0 obj -<< -/D [1442 0 R /XYZ 29.788 354.675 null] ->> -endobj -177 0 obj -<< -/D [1442 0 R /XYZ 29.788 169.39 null] ->> -endobj -1026 0 obj -<< -/D [1442 0 R /XYZ 29.788 143.316 null] ->> -endobj -1448 0 obj -<< -/D [1442 0 R /XYZ 29.788 143.316 null] ->> -endobj -1441 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R /F89 511 0 R /F97 510 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1463 0 obj -<< -/Length 1721 -/Filter /FlateDecode ->> -stream -xÚÝYYoÛ8~÷¯à£T4Oyk¶M¶ºØ&ö!-EblíÚ’«#Ùýñ;e`%B-;èÉ­®}÷€®â1]û%ƒM>>Yq2âÓ8ÐëO³ù)€’r‹0D‹ÄbF -cëïE†.½“²NWG> #ïBuY5*=ú¼x?{»(C…4£liþ—Ÿ Ê`ò="`T†î éF“ƒ ­ÑÅPÌ•ÐòI€ 'Àj‰MŸíÓʳN”¸xû“Õá]Ѩe•4yYس6Ï”Qè©xz´…˜Ó]Ýœ99ÁÂä¼XDù -i½PÊŠ•¬ëò€T ¿Imk¡é˜{nŸÁ ,ûëZ¥WÛÕ}§Éúª6þ¼jöîòŠ‘¼?BèÇ–ŸÄLÿ9òã^/‹d=b6?¥Œ ÈA 4@ ` âʬ¾Y—Ik™´‚åŶm®šããžÓÔjÄèÃÃÎ\–ÐX¬N6Ûµ³^îœÛ¬Ü@[äíeêx¡2ûySVÒJÕ[•6ù­ûvVÊ3<¶ÓÈ»F0ŠcH²ÿ_?ò¡¯²||!Nê'¸´Í‹&ºú†S'lù7xèßÁBóý‰H¾RÕí_Þ´M[už¯Õ+çÈU²v¼®w¾u¨hJÛRàJ'úŽí -I -'¬åñªnˆO0X,ûM6æ÷ ƒ€¡x4ˆÅ=XåÔ3KGQ$E {”E¶C{¹nûtxYÔŸñ¾Ý(&—&Ûƒô0É¥„1Øx3ØØli<x›¶nlÏÚ;ð¶Uy é6³_‰£+ʯÔVAV.–nªp4y‘V*©w·ÉºU5>ò¡æð+uo‡Ó¤°Urëö‚€Î+Û%þ¶3»í'T}_7j³W×^O}rAAßÀ* - -V4Ü÷ìÍ0w€:?]—éj;÷h+¼ÄŸ„úqHÜ96¿˜˜ 8&P$ì0é"Ù ©l'w†7U›ºþ¹ºQ•*RõÄ¡sšì6áÇÜ©o’Æé{š«uVïOrÏ:Õ秗&I¡—O, <ö"d4]cŽ¢Ì.ü›©÷rç°=Qýp{Ä X`v˜†pºÓ0D»èŒ_œ‰K}Ã0êGMÚ˜Dñwö„><$×Z…˜G/rÄ×Çÿ3²§ÐxŠ3Ø?R;òCF½“‹Å‘”žòámðzà›‡ÿõ/„D¾¶®®Ç}Œ›¬:b?”FO'p›‚#&ázG§'’ÑÁÃIˆ%Ù=œ<чÝSIï “à)ý ûwEÝþbÐa•û$ðYô"<þöœcNCDcÌû‡f–¡ƒûh@Æ¡;¤—Ø2ˆR‚µÝº/Š#gºv@äº)šù“Y²Ø¬ÒäÙn~¡ßóŸNO×Ù¯´j¤ÓãÂè¶{Æ„Ò<ÖáƒIdô¨£Ô‡ýtƒžgÕÝNœ‚TÂäIFÃÇÃMŽÆ‘4íÞ wÎÑè7Ì~«ÍN˜±¿ ©|‡¿ÌQbóòGõûÚè“s9xÄ„Oám®¶Ûp¯”Tx¯õ1¯Çª|¹Ò×FÓwY蕾{º‡7±LªÌÜPõgRÜ[ÖY^oË:Y›±§þܮ˼1Éà Á¥·*3¸uC‘§²\ß‚°hªüº¬Ij›là$"”Ž²ÍêÊ“þJ0)PÕ­ÉsÃ7Ùn×ù.ߎʠ¼ÈZ-@wƒ´[U5ÆÁÓ›éè”L˜ÿ€K -—ã%-|ügºåb -endstream -endobj -1462 0 obj -<< -/Type /Page -/Contents 1463 0 R -/Resources 1461 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1411 0 R -/Annots [ 1450 0 R 1451 0 R 1452 0 R 1453 0 R 1454 0 R 1455 0 R 1456 0 R 1457 0 R ] ->> -endobj -1450 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 705.788 173.879 738.424] -/A << /S /GoTo /D (group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) >> ->> -endobj -1451 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 565.094 173.879 597.73] -/A << /S /GoTo /D (group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) >> ->> -endobj -1452 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 223.584 135.304 235.504] -/A << /S /GoTo /D (structbsec__output__t_a74a917725569b67eb14e78a34fa9c55d) >> ->> -endobj -1453 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [64.803 187.415 95.29 199.918] -/A << /S /GoTo /D (structbsec__output__t_a1a046572bcb85189df10c9ac8f362999) >> ->> -endobj -1454 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [281.258 168.798 394.563 180.295] -/A << /S /GoTo /D (structbsec__output__t_ab188da3e58d458f4b94a64379404da46) >> ->> -endobj -1455 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 151.246 168.653 163.477] -/A << /S /GoTo /D (structbsec__output__t_a91006cd8f20e88a5ff2b6ebfbecdeb95) >> ->> -endobj -1456 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 115.077 126.217 127.308] -/A << /S /GoTo /D (structbsec__output__t_ab188da3e58d458f4b94a64379404da46) >> ->> -endobj -1457 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 78.909 122.573 90.828] -/A << /S /GoTo /D (structbsec__output__t_ac4e7ef20f713075472bc953efb13957f) >> ->> -endobj -1464 0 obj -<< -/D [1462 0 R /XYZ -13.423 915.745 null] ->> -endobj -1028 0 obj -<< -/D [1462 0 R /XYZ 29.788 702.891 null] ->> -endobj -1465 0 obj -<< -/D [1462 0 R /XYZ 29.788 679.17 null] ->> -endobj -1449 0 obj -<< -/D [1462 0 R /XYZ 29.788 562.197 null] ->> -endobj -1466 0 obj -<< -/D [1462 0 R /XYZ 29.788 538.476 null] ->> -endobj -1029 0 obj -<< -/D [1462 0 R /XYZ 29.788 467.755 null] ->> -endobj -1467 0 obj -<< -/D [1462 0 R /XYZ 29.788 444.035 null] ->> -endobj -1000 0 obj -<< -/D [1462 0 R /XYZ 345.082 341.456 null] ->> -endobj -181 0 obj -<< -/D [1462 0 R /XYZ 29.788 314.241 null] ->> -endobj -1468 0 obj -<< -/D [1462 0 R /XYZ 29.788 270.565 null] ->> -endobj -1461 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R /F89 511 0 R /F97 510 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1475 0 obj -<< -/Length 3305 -/Filter /FlateDecode ->> -stream -xÚÅ[YsÛF~ׯÀ#UeŒæ0~“mÙq*Îa)›ÚŠS.„H삃ò·òã·ç ©TÉ83èk¾ééžãêîãÏÄ[•Ø[yØ{w?<Ï?¡{B -$ ñ"NQÈ…W$ÞýÅ/¯€ -ŠL÷3AQ dÿ«+ÇsÏ‹xê3õ("Ä%ñ›žˆ -Þ§4ôtä8 aF BQ% u4B2RÂÁK0Níß¼­7HôÏ Ä0jŠvëUÝ+  ®Þo˜÷&Q‡…}\!µ|§— (ˆxK-c.Œ©'‘à‘ Õj/¸O(X CÞ°`F×ý뀮ü1]÷Ÿ´˜ü2Zq2b ¨ï_Ý]\½P†$CïîÞ£…Qä…Òô÷ÝÒû}ö*/ëKŸ†Ñì6Ù–yQ%‹Ë?¸¹k)C¸Ð# 6ýßÿÀÞ*¿÷0•zºéF5˜—y·m£DDЖ…T49V+o¨êã»c: ’ž·7¯ï·U²*â*Í·¦à].­ÐX<=öɸG’BP% $@ªf†ÞmUÔ‹ª.Ce©©ÌÓíÊüŽ­Òy]íêʼ—ñf—Ùöù½yVk[¥ó".¾]†|†”ì‘”›®ø\½|Yêý9]v Rk àÙÏyY¦óÌJn»p4[ò4¶}Ë’½U ¼Æ5 ¬U¿ÄY”Ó{°ï ?ÓíhQá+-ê—´¨ê8ûl­ÍÓñ0·ªWõ€jx†;ÌDÚQ™Xã¬Ì|Í¥„Á®æ,ŸB†üã2º$GN͈Q°÷IÔø¤·©§rHù¢VÃ+>pI]⇮‰·È:g/u/¾õ@(öÀnò¾­N·UŠù‚Š>¤Úôú@òaât‡Pn-víšJÕMØgCŽ.êsˆ€iIò6ßè.Æ3Ûð#3Ó¥©Ùù5×è±m­€lÚ¦[Sd}oËFºÚú -529Lc÷®±vêó²÷ù".“ê•îË6I¼µ“6® ¾lj÷î(Ä ½Øҿϳ,(_ÎýjÂcñz˜…ý©ŸÝÜÔ“â”»™ü'§Á\HDÈ)Ð8@˜†.A¡¿¡èDÓ@/à¬EOS`DŽB/¢6ñHgÄSˆ¥aΗ‘…ßñ&9CE &™N~EO`ÙS€ƒãÈÓå·€´ì(ð¯K!fºZPˆPI §SCd`ñ®Œ„H>] -ŽDBÞѢ떽ˆ«‹q&u·Öêâ"Ò)ÙYçLG§Å€¡$…%ÑʇÀä"ÎGÿúãÇ›Þ_¿úáfžSðV âQØeŽO€i -¦”†ˆñ ËÔä4qÛØÁÎõ¶H²4†èE/0.[ßmêÒÆÒs[»ˆuà\Ù(í8”Fëtˆ% ¡b£³°V‰pô¨‡c‰QPÉö‡Ÿ~û|ýúõ¯¯_ÿ{LS0×*¢îä–¦àÙ`©­qþ`£<çW kzq—r×.ª˜Ñ‚H0%œˆ=êIô8^ ™°Ñ݇›7ïýðÈLÀ¾q?-þôb&`Ù¦­r²LëÍ“0ãðÑ,[lb;m¥WZí’â>/6ñv‘œÀÑXuaøi -ÂÜ -é4nC‚DíŠÊwïß}÷8Š¦àÞ ¨Íž Ãh -ž Œ:*§«uEƒ?ZˆƒÎW%gÅùÿc5É D¹ÖžoݨK¾ê•ª—½tÿ9+•Wo#ÙOŽ ¢Ì†!Ÿh%Õ]ÐQ¤ÎM»™§fÅK…&Ɇ¼_ü‹;á­ i–I‘~qk$vM9˜u¼]%ÍÊI7Ø9 íZëŒÒm]%èô­uÕ2Cx2­,€ÌOéî‰hHE ÉÅI ÃàÃ6A]NŠ{zZ„^a*Ì£MnEÀÀna?YsçˆH9¡VŠ¢ú¬§Öè”Q`„!,í©5˜2’H ,¦ìE‘Šƒþa‘Ò$¡‰Ä(⴫ɘ´ÜŠ¤üš⟨Frþ©äzoäœ@ÆB–JH„CúˆÄì’(˜±0节‡á5Oµ :º -2ÜóW wn™~”%E¢b1½ -®&ÔĵԲ~ǵ¶¶VEé@a -«µÞ¹bn©'Pߣ›omqÇÃhmˆ0* -8<Œa„N§"CB4 IaCêЈ")é`îØ@hŽ5m–wn¦í¡¦5ÕÆ'çz7»gIYºÉÛmöqç¨,dZD dšüdžÝY1!$¯òLÄIrbFR8åu‚æz:˜<6™€¥ƒL›åß -6džÝ[2@ $gBFK`gAf$…SgÀ†Å2°ti³ü[!C§€Ì³{ËAFÎJ4þ!„éf˜N"QaåÈ4BQw -Œ"Â[tT”óþú—KŸÞÊ1aÐáËtW*}V•i–™·m^¥÷¶‘Î*Ua]&…)zX'[SV®“+WïÖI å´J!²\Í£³(¦ZíŠ|ÐD—>èìu¿::ÁÉž®X!²[»vMÍM‰ë*ßQ`žé£Ì`­“(óxñßU‘×[ûMzo6 š¥½æ ›%_wyé¸T¹=z’%±¥j ežeuÕÈ“Z:÷† ›Å;°ÃׄL²£⤫-‘…TmnU;Ê“x±Îî Líó³̹4”¯'0_ÐÓ+ã²ûAUq$ܘµ‰ c“{µŸN)9,–ZNî)P&j '÷|:8« Š²KÑ(P -Fì «ï']Mž‘Ü×ìþ@‡Ñyðç¦ÏJîÕ+ЈIi/)_? Ï ˜ª3­8ìqÅ'4Oœ2Öåy[Åó4Kÿ×Úf¹2¢Þúûhf•«34Ãx+ß!¸²î™pPKVÁ#»<ŠxþƒØ×õîhG»›qÉÔâ¨α]÷NÁ´u\«éjÇÓìÕF¢µï&f/̬+fEbÏ­ŠÙÚì­´Z~Â3ø¼ØÁä\&¦ÖÌÞê=hÍîв°-ñUž/-ÅÔ6R$´B§&ëF ªÚÃ¥uµÌÝfPSR¹ƒ¾nƒ9^6Õæ¥aæ3.fóü«)~H«µÛõXÇÍ9ä¹Z†Zï ß7ì ò«"ÝlN†3`èF Áy£AªÝ¯gíz¹±0–Â)G‡9ØäÄÒ S°t¨i³<¶ïüÒÀ¡Û«OówÏ·­í` ¹þYý1$;«ƒG“8ÑÃQ„¸ɾíàIXÚn³|Ò†°í½3,g»(0q^øÿØgÜœIêu:Ý>RþñÈ}³®®„H†¸»½?Ùý!WK5˜.tHRª¼6€Ù g½…+™ý¥töFŸ]SÕe=ÿO¢î:¨jÒQO·½Ë¡=}^Û*3W3”¢ñ—¡èNzÛõfžàBªncÜ©Hßõá&ˆ°ßºLãë{4þõG¾B›:vM)ó| Îñðã‹\BèÃ9ó¨+øµß¿‡¥J›{D#;ñÐüBmÑ©UGÍ_Ëû&®Ž_ ²—(&ÒÇÌá½ãdý›ÌPL ð’úº/æ] |æ ò¹Ð¸`)õ9üQ -Þ#e7÷‹ ˆEÐ3îÙjd_Þ…ß«õ{û­¯Ts׬©?ÖÐßÓïW÷¿ï’_+Õ°ÓãVëÖÜê7(náHÏFĶTÿÚï‹÷<«6œ©8p 1IÛ!šlÛD£©¹6×tv§ºÒ·gb´i”ó·õÚ­|‹˜#¢H}Ž¨ÓJ;}à [wúà'Ÿ½ÛÌ¿3 -Û# -Âg×zÊ -˜WªÒ¾[/ôÂ\HÐ7[lÅ*.–:|P?ãí7Cz™–"Ç™þ@ª€9ËSsÄɮȗõ¢)‚Xt™ª›^¶€Ød^·¾‰Kãlˆ:r@:Þæ!Éì"K\lI¾4‹Ýîê[¬nW5þ¶ò¦Ûe­pk7 í.)*»V`ŒƒNÞi”ëë¹rwE°Î'€ÿX´á -endstream -endobj -1474 0 obj -<< -/Type /Page -/Contents 1475 0 R -/Resources 1473 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1411 0 R -/Annots [ 1458 0 R 1459 0 R 1460 0 R 1472 0 R ] ->> -endobj -1458 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [238.801 666.651 361.949 679.154] -/A << /S /GoTo /D (structbsec__output__t_ab188da3e58d458f4b94a64379404da46) >> ->> -endobj -1459 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [443.971 666.651 567.119 679.154] -/A << /S /GoTo /D (structbsec__output__t_ab188da3e58d458f4b94a64379404da46) >> ->> -endobj -1460 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.21 653.102 240.304 665.605] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1472 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 613.777 163.57 646.414] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1476 0 obj -<< -/D [1474 0 R /XYZ -13.423 915.745 null] ->> -endobj -185 0 obj -<< -/D [1474 0 R /XYZ 29.788 737.428 null] ->> -endobj -189 0 obj -<< -/D [1474 0 R /XYZ 29.788 596.231 null] ->> -endobj -591 0 obj -<< -/D [1474 0 R /XYZ 29.788 570.989 null] ->> -endobj -1477 0 obj -<< -/D [1474 0 R /XYZ 29.788 570.989 null] ->> -endobj -1478 0 obj -<< -/D [1474 0 R /XYZ 29.788 475.536 null] ->> -endobj -1479 0 obj -<< -/D [1474 0 R /XYZ 29.788 326.877 null] ->> -endobj -1480 0 obj -<< -/D [1474 0 R /XYZ 29.788 177.703 null] ->> -endobj -1318 0 obj -<< -/D [1474 0 R /XYZ 29.788 63.19 null] ->> -endobj -1473 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R /F89 511 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1489 0 obj -<< -/Length 1772 -/Filter /FlateDecode ->> -stream -xÚµXYoÛ8~÷¯à£¬hž:úÖnš´v± ìC²ÅØZØ’«#Ýýñ;LÞ.zÊP! ƒ0›†šÿíA l~@ŒÊÐst¯ƒ íм¯æŒÊÎò€I€ 'ÀjƒÎmÝ\ŸÒJ³€Ž”˜¿ýÝêð>«Ô¦ˆ«4ÏìÂu&Ê(ô\<=5‚dQPž@@‚d€‹#ÏgX'šÄ3Ì.<€É´4^¦É@ ÙeAÄù¾ÐŒÀvRsÕê4«Âe˜œ®Jµ^æuu¨«eõêÕ€¡5U'm„…-Ÿ÷‰ÊªôÀ_Ö6ù½Ò¢ªã}°,/¤œâ¡Ù Åè©®'†9äXæs¥,y¼+ó3æÇŠ€0ú±®¯ÏXQ‡­Ç`HËÞ¨íÄ\:¥«“¯9òJÃNÀï;…;§¤› ”†Gîwy|Æ-¯'œ1·­ÅãýaçÌ—:ØV[·Pgieg‰Ò¾ËTbïóbt´PåA­«ô¡Áûÿ4ø­¡~ Y­a@ò§Pnó9ûµ¨ð!*DË$Ý_È&åO ÙSŒÏ¡%8FKÐ<"’€çUñp„Œûºª‹G¥úÍÁmﯕjbÞa¬ÊíH+i<´ H(tâ}ÛIk» -D\–Àú9F›ùâŒÑ†ÇÖò tðp`‹ LÊ)hH–ÅY/ɳ¤ž|Ww…#vö=ù”d¸šf ™Þfå>a+¹€2¦µâ ¬ÅšÃ™QÔa„Ñ!¾©m[ºÌ«¢^»ùºW…ÊÖê˜SIÉœ…¡!Ò9é2®bËæ*U»¤<‘/ªÔ³«0Á£ïÛOÌÎIÒ·IÁÛÊ}ºŽ¹äÊ<âCRù!$þöÐ7p h©˜o¿¡ É2tö=Š@è Òäð¦ B‹`m·æ‰â‡à™fìrÓ5šx£]oDìõ¨ôñæX»ê ×ñoé‡ì·Z5Òè17ºµßŸ xD7†Ih¾ÄPwRÿõçë=z™UÛ7q¨IL˜òHƒ°ÿÕ§C“;ãŽ4µxZgÎèOÝK¬6­2°cêŸò^¼0'D‰Ì'݆„ƒ¯OœËÞ×'xÓëýêÝÐØÆPl©˜¾Ö½V¤›­Nñfî²\o¸pWM·±‰‹Ä”Qýg_-ë$-yï A4UÿvyZ™äá– -]å¯Y -§*I+`å (#«ºG—6Ù@ù ”²ÍÕ\¸ºëèv@Eʪaa‡]ÚæÛAýH³¤Ö4Õ¤=@ùÕÕcüh"™0’¡Á’Âåx)$€ÿÏÄu{ -endstream -endobj -1488 0 obj -<< -/Type /Page -/Contents 1489 0 R -/Resources 1487 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1411 0 R -/Annots [ 1481 0 R 1482 0 R 1483 0 R 1484 0 R 1485 0 R 1486 0 R ] ->> -endobj -1481 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 638.955 163.57 671.591] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1482 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [276.188 546.503 400.067 559.007] -/A << /S /GoTo /D (structbsec__output__t_ab188da3e58d458f4b94a64379404da46) >> ->> -endobj -1483 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 505.466 163.57 538.102] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1484 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [64.803 215.194 126.817 227.697] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a150ba3a737fb75f56052c60d55246ae4) >> ->> -endobj -1485 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 180.881 126.217 193.111] -/A << /S /GoTo /D (structbsec__sensor__configuration__t_a92665e4f2f3cd5237814488774c0f546) >> ->> -endobj -1486 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [193.933 73.676 327.241 86.18] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1490 0 obj -<< -/D [1488 0 R /XYZ -13.423 915.745 null] ->> -endobj -1491 0 obj -<< -/D [1488 0 R /XYZ 29.788 737.428 null] ->> -endobj -1470 0 obj -<< -/D [1488 0 R /XYZ 29.788 636.452 null] ->> -endobj -1492 0 obj -<< -/D [1488 0 R /XYZ 29.788 614.986 null] ->> -endobj -1471 0 obj -<< -/D [1488 0 R /XYZ 29.788 502.963 null] ->> -endobj -1493 0 obj -<< -/D [1488 0 R /XYZ 29.788 481.497 null] ->> -endobj -1469 0 obj -<< -/D [1488 0 R /XYZ 29.788 414.01 null] ->> -endobj -1494 0 obj -<< -/D [1488 0 R /XYZ 29.788 392.544 null] ->> -endobj -673 0 obj -<< -/D [1488 0 R /XYZ 29.788 325.058 null] ->> -endobj -193 0 obj -<< -/D [1488 0 R /XYZ 29.788 302.166 null] ->> -endobj -1495 0 obj -<< -/D [1488 0 R /XYZ 29.788 260.796 null] ->> -endobj -197 0 obj -<< -/D [1488 0 R /XYZ 29.788 142.722 null] ->> -endobj -1487 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R /F89 511 0 R /F97 510 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1517 0 obj -<< -/Length 2069 -/Filter /FlateDecode ->> -stream -xÚåÛnܶòÝ_ÁÇ pD‹7‰Ê[s;)ÐÓ66Ї$0d-½V±+m$mœýøÎÔÕZÛkû ¼&E‡sãpfx|ñá7FVõQHV$$gGðA´_`$$*Q4aŒhÉi,© ¹>úýð1`¡ -ÑŒ—)N#•LW·{ö{1‚Ëð¬4• #ÙfBåJN1ík[tRÄ”‰ˆÄšQÅ8"E˜ãš&‰ƒN É÷¤ {‘~9¢"€ qºiÏ€8~¿ä¤R÷û0ûØ -Z¾£‘–¶œ¸Â“„*©“øA®zÂÆAJ!sè *áxí»{x•ñÚ/lòûÁŒ‘ZÊ’׿¹8:>£d‚&2ŽÉÅ5á µ&qâô}±$oÊ:»yðX/ÎMQ—Uc²WŸ/~>z{1`†Ie-<Ö ÈT#þŸC²„ÉŸIBåäÖ‚nhdM·O`áLÄ/¤Î(¦¡HzuÎ:ãýÚ<˜–—Ðæf«Í68DS>£Îâh¡Ÿw÷üSHú‡;ÿÊ™»#$´<òþñÜtág]îÉST@X‰ùnÀa.Œ­ÔGãÇS@âœ<öôƒhI…Œ\¦ÔR*¡íRå¢h‡ÖTµ {}fjƒ;×ÿ`®MeŠÌܳUŸ”a¼43¿ËIÚ¤MÇêy?)W=>ÕÉ4eÓT)ævþÄ£xÅc©-Œ²ƒ'—›ôOˆïK|O“˜$˜ðÈn,mL€?ÓÜ›Ï/‰ËœJÆéÑˈ -íA ÜhÁÿ)åÅ3{Y$ÿ¡q\^íVÔ}{AS”}´øíßd~Ï—æ];|´4ï´Z¹H¡uÒùé¶ðt{¾nË+'¦Kl¦XÕœ_ôןõ컶“•àtå‚qµÂÜæ ×eµ±IÃlaz çîq²a.uÿmmÒñj¶(J[£Ò!l…å0Ë05 y[{qƒi±tºIÛ%uSù *Ó._Z™ ÎÒÏù¥[“Ù¢Læ¾{¦¶Ûà6_¯;â\çÊo˜f™Ùº‚Ž~wmiË!÷×/‹–%cîdà·®ÇÅ!¬£NO˜(ËQc×Ìø‡³»K±ÖL“8ôúDºmÙ,jí»\:IZ2Š ê®MõÅ“¶ø î¯|œ†ÜûOƒa~ j°u'ì+|sSî<?‡ ÃâøËalë¶`·¹2ÕëWAÌHîëdÁ›_ÞF: eèÀV ƒŸþ†:°Ëøáp¬ì vìÈy_3Ž·%¸A¸‚èŽMãSÆÝGÛ˜‘ôYÿalãÖ^ü -&AOXÝ–}5ygÆC–aæù,kþ»lC,£ÚG ¥¦Å‡¿xP§ -endstream -endobj -1516 0 obj -<< -/Type /Page -/Contents 1517 0 R -/Resources 1515 0 R -/MediaBox [0 0 595.911 842.745] -/Parent 1523 0 R -/Annots [ 1496 0 R 1505 0 R 1507 0 R 1508 0 R 1509 0 R 1510 0 R 1511 0 R 1512 0 R 1513 0 R 1514 0 R ] ->> -endobj -1496 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [90.035 521.522 226.024 534.025] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1505 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.505 495.79 263.981 508.326] -/A << /S /GoTo /D (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) >> ->> -endobj -1507 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [327.076 479.883 435.17 492.113] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1508 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [327.076 463.975 445.479 476.206] -/A << /S /GoTo /D (group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) >> ->> -endobj -1509 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 405.792 173.879 438.429] -/A << /S /GoTo /D (group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) >> ->> -endobj -1510 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.476 392.243 163.57 404.474] -/A << /S /GoTo /D (group__bsec__interface_ga832388c889417ed197609d9965625bfe) >> ->> -endobj -1511 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 283.55 106.199 295.47] -/A << /S /GoTo /D (structbsec__version__t_af823001b85e62b90279f9e6f3c478c23) >> ->> -endobj -1512 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 249.291 106.199 261.211] -/A << /S /GoTo /D (structbsec__version__t_a9d47d254d17740222791fa0f53c7ac52) >> ->> -endobj -1513 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 215.033 141.37 227.536] -/A << /S /GoTo /D (structbsec__version__t_a3d9b11a72027026f492a438342a2efbd) >> ->> -endobj -1514 0 obj -<< -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [76.934 180.774 141.37 193.278] -/A << /S /GoTo /D (structbsec__version__t_a5daac4534748c6f0be9f009273613b02) >> ->> -endobj -1518 0 obj -<< -/D [1516 0 R /XYZ -13.423 915.745 null] ->> -endobj -201 0 obj -<< -/D [1516 0 R /XYZ 29.788 737.428 null] ->> -endobj -677 0 obj -<< -/D [1516 0 R /XYZ 29.788 719.646 null] ->> -endobj -1519 0 obj -<< -/D [1516 0 R /XYZ 29.788 719.646 null] ->> -endobj -676 0 obj -<< -/D [1516 0 R /XYZ 234.846 638.216 null] ->> -endobj -1520 0 obj -<< -/D [1516 0 R /XYZ 29.788 617.606 null] ->> -endobj -1521 0 obj -<< -/D [1516 0 R /XYZ 29.788 510.563 null] ->> -endobj -1069 0 obj -<< -/D [1516 0 R /XYZ 29.788 389.752 null] ->> -endobj -205 0 obj -<< -/D [1516 0 R /XYZ 29.788 370.414 null] ->> -endobj -1522 0 obj -<< -/D [1516 0 R /XYZ 29.788 329.111 null] ->> -endobj -209 0 obj -<< -/D [1516 0 R /XYZ 29.788 142.709 null] ->> -endobj -1515 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R /F89 511 0 R /F97 510 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1526 0 obj -<< -/Length 1144 -/Filter /FlateDecode ->> -stream -xÚµWÛnÛ8}÷WðQV4¯™·fsÙè¢M ìC¶d™¶UØ’+ÉI -ôãwHêfÇFš¦ $ámæpÎp43™Lo>Q´¬F-A×#X -ã7Ø!Hj‰5¥H †c!QiÐbôù™ðP°´0ûj’áHêC­I{gEVÍþ¥ÂBS”n ÀLŠC¤Sc 'xŒ)P¬(–”YPk`gLa­¬q0‰".˜Åþåè$è·æ„šÅLhOÀmLÞo8º(ÀÔÓƾLã­°å%)Ž”Ðòî"„!¥P:~‘UoxHx‰P3"¹çÚOOp/qíU—|~5q0RqŽ©Ž¬þùt4¹‚ ¤kÇhº@LãX)kÿÞÓ9º ΋*]C«àÖäUQÖ&™~]Nd¨.Âc¥Á§Êâß}!h‡§2ôèD7Vlàhn‡0gT*å1“X€VKtêèæú*#Ìbz@âöòOÏá}^›e™ÔY‘ûë]67ŽÐkãé¥,ˆR¬¥dÖ2ˆ ÅQqÜ&±ÄlBˆW™YϽMEºÛ˜¼öf³Ícƒc |ì€ O àŠð,¦x“|-Ê=”ÉeÁ'Eâˆö.Ëku_ƒ6“Á¬2éýƒ)+0å¾>;ëмã÷L  -3Øt œ£Óhãž1à‘ ¿6`p?Û-ÿ…oóé÷R±°‹ìéuŒ@ÇO¼AodÉ–Yþ;ß©E{‰•“{#1`ð?¼S û“ïÔ3úéw‚œÂ5CûƒË=GöoŽ|ó¿”¾‘ë˜t®…­< ‘bžYÃS—ªq(¢((MeÊ™Bsü° .’:ñÇÕnöÕ¤µ_Ô…ÓU’/Ëà1«WŮȋ:KÇøáÛÜÓì63SžÃ˜QÈ¢Ó±”Axþñ2R$¤ÒÐeÑðÝß„¨Ð:ª)f RÆ–«£#⣩l¯Ž…àˆI,|•VÉè ŠÄP»*òÊçkëFï{ ‡ðH6C‹&&Á©Ç ºsÄÕ!‰B¦ÞJÀ¿eÅ™ÓQYäû4:¡†NÞccQ+ ž²êð  >‚­ßÚÅŠ+x™v5ÓƒÓð@9hYñV¬;?&öø‡Ç‡úûð+K´> -endobj -1527 0 obj -<< -/D [1525 0 R /XYZ -13.423 915.745 null] ->> -endobj -213 0 obj -<< -/D [1525 0 R /XYZ 29.788 737.428 null] ->> -endobj -1093 0 obj -<< -/D [1525 0 R /XYZ 29.788 719.646 null] ->> -endobj -1528 0 obj -<< -/D [1525 0 R /XYZ 29.788 719.646 null] ->> -endobj -1095 0 obj -<< -/D [1525 0 R /XYZ 29.788 654.393 null] ->> -endobj -1529 0 obj -<< -/D [1525 0 R /XYZ 29.788 635.851 null] ->> -endobj -1094 0 obj -<< -/D [1525 0 R /XYZ 29.788 572.558 null] ->> -endobj -1530 0 obj -<< -/D [1525 0 R /XYZ 29.788 554.015 null] ->> -endobj -1096 0 obj -<< -/D [1525 0 R /XYZ 29.788 492.707 null] ->> -endobj -1531 0 obj -<< -/D [1525 0 R /XYZ 29.788 474.164 null] ->> -endobj -1524 0 obj -<< - /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ExtGState<>/TRP.5<>>> -/Font << /F45 229 0 R /F44 228 0 R /F120 619 0 R >> -/XObject << /Im3 221 0 R /Im4 222 0 R >> -/ProcSet [ /PDF /Text ] ->> -endobj -1 0 obj -<<>> -endobj -2 0 obj -<<>> -endobj -3 0 obj -<< /pgfprgb [/Pattern /DeviceRGB] >> -endobj -1532 0 obj -[799.4] -endobj -1533 0 obj -[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -endobj -1534 0 obj -[513.9] -endobj -1535 0 obj -[777.8 500 777.8] -endobj -1536 0 obj -[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] -endobj -1537 0 obj -[295.1] -endobj -1538 0 obj -[1062.5] -endobj -1539 0 obj -[500] -endobj -1540 0 obj -[633] -endobj -1542 0 obj -[500 500 167 333 556 222 333 333 0 333 584 0 611 500 333 278 222 655 789 811 549 713 549 549 494 713 823 670 333 191 278 278 355 556 556 889 667 222 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 222 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500] -endobj -1543 0 obj -[500 500 167 333 556 222 333 333 0 333 584 0 611 500 333 278 222 655 789 811 549 713 549 549 494 713 823 690 333 191 278 278 355 556 556 889 667 222 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 222 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 334 260] -endobj -1544 0 obj -[611 611 167 333 611 278 333 333 0 333 584 0 611 500 333 278 278 744 1042 1083 549 713 549 549 494 713 823 766 333 238 278 333 474 556 556 889 722 278 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611 975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556 278 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 611 611 389 556 333 611 556 778 556 556] -endobj -1545 0 obj -<< -/Length1 1416 -/Length2 6052 -/Length3 0 -/Length 7019 -/Filter /FlateDecode ->> -stream -xÚwT“ÛÒ6Ò„ RE:QCHè½÷*¥† ”$$‘Š ½IïU©*½ƒH‘* H¥ƒ)*J/_PϽ÷Üÿ_ëûVÖJÞ™yföÌÞϳ×Λwøí‘v05$ËI•uu5Á $, 89áXWØß~§) #RÿPFà X¼O‚Åu‘ ÖW X“‹K@@!Hòo -TxÀíº@-$†p*#QÞh¸£¿Îß@n(,))~çW:PÑ ††C! .ësï…¸P8 ëýÜ2NX,JJPÐÓÓSâ†@¢åxî=áX' ! C{Àì#õ n°?£ 8ÆNpÌï€Òë AÀx‡+ -C`ð)ö04¿:ÐHS¨‚!~ƒu~îÿl,þW¹?Ù…àˆ_É(醂 ¼áG ÜÔWÓÀzaï!û ăÄçC< pWˆð«uPMÑÁOøg>  Ga1¸ëÅŒ‚eðÛ¬Š°WFº¹ÁX à¢?8Åï»·àŸÃuA =>[p„½ÃÅöP‚&¸û˜¦Ê Þø·Ï†Š‚$Ä…%D0w Ì ê$x±€±7 -ö+¾pãgðóA!Q@ü0?¸ ÿðÁ@<`@,úÌÏç?ÿ´`0ÐÅí`ŽpàßÕñn˜Ãoþh¸Ð„§ºøüëÉ -Ï0{$ÂÕûßð_G,htOí®’)ߟ‘ÿTRBz}ø……€üB¢ $"Ç?øý³Î]üOÿ‘«‰p@/Š]ô‹ß¨¿{öøCî? -áþ³˜O]ûßL·‰‚ ø/ðÿ™ï¿Rþ4¿¨ò¿2ý¿;R{àêú+ÎýðÿÄ!npWï??»Úš#»]ÜÄùþ¥ñDŸ–[”OÌR”ؤŠÑÝwY£¨ÚÉåí»8)}ÿªîü˜èÉEW¢&®Ò¢×Ú^Y’¥CÏ"iúå“!¶É®ÏxEt—á¯ÜOn±AKÑ–©z·´eZ žT ½ý}3Ô]¬QZV¾s„b©U¥ûXTD.W˜Î<½ö3·Øc3ƒÆÇNVaÓ¾ûÅ8‘³§;­­J\SîQˆšhÜBÍŒoFÁ“ã-°à›ZhzU´2ÎÓmqß·ÂkÑJ§× YèW†kqýºðúq4R -Èžól£-28†A 9âVÙôRWø[)aœ=A‰^Þ‹ãÝ@ú·=Èa€GI`ôñ&ît“0¨@ÕâHžß½.m:Úæ(Öû´›‚PnòÎù¹æTý-7EÐà©¡pýD/]ŸO+ßSúæeIêÅøƒ•aݤe}J'?~ÚiîÇWÑô­'ÄF·(.ì6åFñŒU1½ÒR"H& ùìsÖæ®°#3ÓN–ì5v‹Vös»s¤ÍõïJ,¦óÇ=.×o›ÝbÿÊH¸\Ÿùz²½Ž¼¯†Ñç N*àܲÚnòŒÖ{Y6¦!·§â·÷l:;¾û^òµ–¯µU`çûåAŽ%×HÛÀv­MYZÏ!¾¶­N1Åvy:<ïmA-¸@ÎIß«Í Ä½´iNŒF !O¹HúÑ ÎøG7&¬“ @7³«Ît}g a¸³ÐÆjS¨¨á%Äù¦Ä'›Á$y÷¦g*…=žÇÇƺäݱŽ¶KÈøŽh"ƒP „ˆØ(‘.mÐ’ÐÌœô ƒ·øF¦¨Ç.Q~1««êG!³TN²^DµzÉõ;|Ш9¶`·2VÝïpÎ0ì‹ôä;¡X^¦ßf¤QͺJ,ãÌgPÕ»¹™Ù7MfíëoÖHÛ‹<Í7.¤œ•º³tìAwªË;3!͇¾~Ù<º‚wÕx£À`lÞ³[âÞc'¶ŽÑïi™èyßç¨MùØ¿lq ýô5¯Ì'Bgt“+¼½Ðož-¹Ô_´p|ð­n^N>vj¹Ö8ïcò›¡gÆØ¢ Œ-Ö´Ü&h^ceé` ÷>ùÚxÍ/8/ »:eþ4¨ù–xÀ¶;6xÁáدfu$‰§2T‚ØÈpÌ<ÙûL¦VÈ9Yߺe1¨™Š³ýJ¬IvsÈ‚ÜxŒ`^iÅ3e7äü -hˆ³Ôï jú†ýg'z¹HšÈËÖž*Eß`»ö׺ˆ6 pû{#Ö -muòd¨+pai–ê@¥î&EVØÉ [ïîÞ¢‘[eÚÐõU`Wî盟ÆÈÙ^ÚÆ7ÇÞ“·Q´¤é&C,¢€ê€lQ¡ûÂR Ù Ì}2÷ÔG|À‡çPSMÆJ"1n´î­Ãlˆ}@@Ðìs½ÍP!+(²¸/²s.»ÅúþÒÃ{ºÂÉš·CC{²Ê×r÷ã½OÚ:&ÝÍ|á;¼u]‘¢~Ï %‹nTæÞƒ´ÔR_ƒÝ[Ïð‹#{&ä§úfcZI?ô2úòô `±X»ÿ@hÛE)!¼çÌõ›œgÂœù†Ì'{1•=Ä^4¯hý–Õø92oeÚÑÝä®Ã¹¨Úa¥kz¯­;4ve»P,ë1î‹”‘Š¥ïÎ×Ìœ;+òfÚ:Ž†<¯ª&ç.ú,=XipÕ„=Xe·öVAú°S™@¶Î¥fÁxú3ä(î¨H~ˆ!Mù5­¥Ùf·<ä2õ¨ƒ>™ÙÜ;Â¥’Ü’G ÙƒøÁ„r® -ѽ+oFKŽêÞ$¬âŸ×¹gzÿ¹Ýó‹AЃAgz9Õq—ê€ê›æÝí:q­õ‡OzãMR+÷3—€ºa®ÇÆ,}ˆÑ3ïÌ.˜IOÏùOLˆ"ñLV$2D˜}È׊Xa•¾¼ÊŒk -œÕ+çJfJRoV¨ ”$”îѼ´1¬†Kâ(j 0ù(¨MHäúÁAÌË}!•ÜPíéWõHCC°†—óxÚ.Ù%±âç½*o¤×»zçòo©^ùÕF¯Òˆ,½ëx7ä›sL×iÕ3²‘ò±÷1»@Bò,èq3ƒiU4©4yg-e uiè…Çx8[~<+§Jt^^¯ÏMÒfÉÿf4#[ΦV'@ƒ‡m°WÇj ºŸÿИÁNÇOPnHÔ…æ ìçSý3qzÑŸá·™¥’?ÜyjbC¯sW>¾®·ÿ†žrùª‘îþ{øÖû«SrÉר{†ÂW®¬üæýà|Û¬3[eCb-Šc{Ìw;çfƒZä|ÿ`dãÓú”N¢´ÍC€½AŠ–&G}sJç½>î ôn†îk´ùZ þTD’wR^ˆÕ|ºa>Îó÷R¼Ü|Æbt‡D+DF±3¡8Þ=ïíÊýhIçRÓ0öe;Ñ–IÍ·/käíŒ/ÜFyéOâŒé$ã¦U› Íôù§R&:¢)+5ÖQ« × ¤l·È,q§¯©GÇØ‚UMI|²Á;àÁ ãªdSÓQQo3m_\ÀèÎRêwß©zìåg%ûõSÙrܤðT»ñ„–˪EukÝÙ{aÛS¼3drE×Ôìyæ¾ÀgÚ{üصô´õʲj!\öûñÁ…a#1,¸ÎµkÖö¥]Æj$An3æ&ý« Oöýôq•ê5#ìÕB¨è—·Ê‹ -QÝ¢T½^:*oÛÓ"ëžvë±¾3$êD}ÍrèñZRáNy4ˆÈ«žšÈš†ÏÄ<y¹Ú9ÙôéX=GVIĶ£jñŒŸ¨ô´áËÞµµ ’@Ü«”•Xt9 åÆÂ(G¡Òs -BÁȸÏRJô{À‰¹\êÌ9£Càb +Œm a7Ù7£9‘»Š^$w¾˜{ý»Rõ)?µKË˦œž—ÂÅÝ“—ÚlånQ³ -s6Š­~h¿ß<ÖNCv‡ÃFî6®bATÓƒòø^þ=‚‚Ô|&QñTÂM7¹÷9‹Ø¾UOúÖrº?éHBI+j¾e?õz#£²zѵ€D½w¹•»æ}¥Ú—¿‰Qµ+ÎŒ÷ÚÚ.·:K RÞ ¸_p~fRÄÉ{,Ælùq§^iu1q*^¦cån4ŠÈ¹, ½gݳÂ/™ƒ—h=Ïiø9|eRØ=ð³v¯9Û9Äï)Àò5VCyãòVÿ[º @eqø²ŸÜëZº’NT*󤂹ucøÔ÷µ€O*´2Ìõô8?œ»˜~ê¡2Yß··,,“÷ÏP@®TbÊZÕç j1n<ó7æ -„IJ±ó†+ðLW§—ËÍSåt©ÉõÏ6Cü/ý\üuF>-}}u@]¶Ëú…ÓÇ —ŠÌ&8¹„ÝXü¡ÆúÆ¡—ú¹@|(å&ƒþAhÆý¨oÎKjtÆ3-ï®Þá€l1NWc’jó >Zº@]ÀÈ*¾Õ‡daƒ«óĪav[Qw”ËÝw:¹BOÍi75ó3{Æӈѯ,§ë_?zsþéĆ´õHXlFÛß@É/¯Èrx¯*t|Ç…ôiÐPŸb;÷¤•î2ãjJr*ºý™8ëÀ²‘÷úÉU®³Ãï¼eYvK¬q¢ªÑŒ8Ž³GЯs £HTì+Åï„NÅh EÈ«p[­·‰g.Q-MƒêªNã\kò׃B€ù´ å̶ÉÙK -’Q7Ó– -:‰ãT+C,ÅJ\[Å_L¼&Ò¡üª#L+!‰È—ÆvŸfÛD—+Ú~¾Jj•{ñEÛË]¸³pá ¶˜µ,s=îïˆÙÎpPþ ìªj¼BEs’À–õº¦P*—›UC®¶6uwp¶f\ºâàcï‡'Á~nfYëü?êt‡p[Œ_\Nôäi'¦QÎ&Ó"H˜š³¤ÞL©Ÿ úúEªë·¨9'Ku[»Kû6‰‚Œî¹í>kaÚ -÷ŒÚñ½­¥e’[/Î=Ú¢÷œÏ¨ bäÓrgYÇVEJ0R­V½ÌÒBå!¯ªå]Ûj«¡t4Ëgw voÂÈò§7ø±àÇ™{ãídB“gN]NW|æI×G’™Cy´Á±o{ˆ–¾J¨sRG †ZÞlö4èþK>Fœ¾æ€l2‹Þ|žÓ JŽü4¥r3¥ÞY…|춄ô•‡O¶kÏw0Ĭ¹Ö•²ŽÊߟÆ×ÎÊ­m~À]–Ž±±JlAûãÿj$VDbRt)?Ww|Ü”vô†YŠòHIV’cïòÞMŽLÞ±ø½ã>'4åÞÍ rvX©ôÚÀµ€Q³n{ÿõ3jÚâ9AÁœx¹¾0Æ ^iúÜýJü`cÅ‹¤2ª ÔgǽKžÞVó–Y3!w·ogò9 µë÷¥}ööŒ›DQ…¶ç¾Ž-Ö{º5Nµ@Úê²¹Ðe¿àÕ¡é¤*ÛT^h•`…'´û]mþ¦ùèäk¦Ð,cùí«…aÄégÝä•©€÷ ЧÞM&†. Dqø7’ºþæoÛBƒ}[ÌïŽç™¾êæ^ÇÍl¸ùx¼zÜ©‡åÍü‘¥"PI¯dJ °‘ƺŒÏñgfoˆ°rד¨•m¥3^9œýZÍt‰HQ?—»<óÆ¡Š“{æ5¤2­qKˆ‹$I¡½å_a·´+|SöêŽÁzR*÷¦ŠŒtseWÃñü¤æÊ‘†Žõiýü‰b­c¨zâ[=£ÞHhÐøÏæhÐÙ%ñ÷Ê­••ò£Ö*édgÑq#¶)ÛtY®îeÜBV³méz0ælíµ$P ëùâQ8åà…uLÚö5ºëÔ¶wýÎÙeµgÏåUVµ™33¹jøv"òÑ–B䢽&P­›Ÿî™<)u"©ã%´ÍCŸ(R”%šHôôv#ãxQ˜+,GWU ÷]]Ší|;ƒÒ†ñшœ„!ïáÐ -úàÉz?¶—kÚëµMƒn¿`ZŒÎIF©JµzögçŒÐ«Bi(s;K;e5÷Ö#Šµzm¿¿I2ç1ôÚšKX#êò"˜r*¹MÖ¬¢Á¸‘; ê#„Öùw4Ñk^Y -mÜ -,”r'¦ïésòÖž­=S“–¹wžû.䧧ïö‹†yòqjÚ]cAtÛi{Å–b—ÝFKo~íɲk)§+n”ñÇ|NT¹«¬'¢mY?»½*¯zû‡!bô ùÖÆ¢ËíÙÜÝ£¼c_- -žó] KbfR:¿;I£&ò*2<)[V™§ß’_~O(ý4·®þ®—º#‘„ !ØcMSwÑ;Š C‚^DP—Õ·²¡ív®¬­S !I<ö*í„K?üé©ŒÝQrVnÓ%ÀR.C8›´ìÕLbõé‡qTâFhWh5G„ËÞò[…%²º¢´(ˆn@øë”t·û«a¾'i»vŸØÒ)®`uÂ$Fª@©ýá¾Ãc­úl<óîïV¨Ô’±ä)ú¹„ù²^Õ…ÍÝ$QSW?Ù¬vËž'Rò¥VŒêK®„*ú 2<±¤Xô¶¦¼#ëeÝñ„äelûü1}²0g¥©% ùùàÏ+*$/câY,ïz«$M¶]v3+²¹`9Oñõä¡Ö´] ,ë„C ¾Ì+~­lcÔ-á>E®Uo…W_é?=$% !lOA -îÇbG˜(¼(’wöøéyÅë·4†m dvÀý€¦ ãK5Ó.ïESíÍ1Ç)«‚ì]ÌPâ+îÞ†£2½l‹^²»üYáÄ?Õ‡éü*ï5}ÃAÓÇw+†ùyà„?ÜL'æ¹Ku2R–Ì£ž]:CÉ -VQ¶qÕŒýT­~´?™/6âdáÒmôŽÉ¿§\Dnw´ÔXÃG®èy];pð -ÈRŸEž¯*¶Ìêj†“!9;Ôí·a²2O÷ÿ+Í£‚õDÞÀà¼ò.§`1éaEš/%T‡Š8x·Ö˜˜:÷οšš0ëœYç˜)T|¼°Lï~û@®RtÕ|dÛ†l#/×` ±ø ÿ‡aq·ÓFzÚ\“_K°_¯g¯î~Õè¤uÒPÔ‘Çò”Û9æÜn…—^ÖÍ|:š¢é¹6lUÖ¾ÅȘ6{”ö‚G“ž°ó²Çª1m§ò—tN×Q?Ä!Eƒú -g^ÔØ—Q©>L<éçê¤{ô‘´§¸àð¡N“€<¨v–ÿýÒ”‘­ò‚Gâî0ãŒúb»B - -[Ý07Z‰56Ó· eý." ïÅá•àõ™úÇãCóFƼÒG mu:›o š›È]\‘YÐ÷Á¸T/©Y ß6qªvMKÛÏ cbÏÏÏ0îaÆ¥­NÄÐSÛ:‰\Rf÷"»ZÒãKŽÏ êtìå¢#µ/g^U8~oùÍHOJâI>ý_ŽÄëEód&òs<Ëã†vœ#'SÈ膀´5¹H±«K]½þ»v¦ÌXÎHIœò¤'ÀµŸj«gÄÒŸÑï:‡G'2E¥0}Ê1tžìÌ;ðh#o Â~峊½Æ»5¸_ŽË+w: š<´ä*êæ -k?_ÿé.PÕÈÚ6û®0ìF×Páf¯k’©—ðžqöó+ûœ:v8&R;#ÜX­ R*î½Ñ+„𠸧ï]Ý÷'Qו™ e™\oáuF«Ã<.ëùølrNñ[D/åð§ñå6Ñ X¦Kœ”aªQ¹®_]ÞÈ’pëq@@äu£†U†¬¤²kˆØ#Œ$™Õ„`§X÷¼ø©cKptzy錔–åø AIBûζt36â ¸|²Eé[ý³ðîÏ>¡vî圱ý5GD-?\TÊu¶¼ -Z$™É"ŸÝqr›Úç,ú8jLÄË­„ò®Å…K;J´2pœrÝ·»‡©¸\s~­¥ØË© a~ÅѲ$:©cNLJ”‘–à j³ux™L>¦µ Í‹³âŸyíÍÏ->”‘j©èÅynþ¤À¤c>áyR†ìX PHiød”{ëäG‹ %ŸÅºø¬ÍíQxz õqKʽø®ý¥w‡–ûÇŸÖ;V>|³F‘‘àúÙz`G¤®ÿaž¯…¸¸\³èx®¨æ•Âm‰è®ñËI6.ðrûÂø‘vèõ …kzÃ7ÙŒãÝ(IÉùþÚ(›^ -endstream -endobj -1546 0 obj -<< -/Type /FontDescriptor -/FontName /SYFPBV+CMMI10 -/Flags 4 -/FontBBox [-32 -250 1048 750] -/Ascent 694 -/CapHeight 683 -/Descent -194 -/ItalicAngle -14 -/StemV 72 -/XHeight 431 -/CharSet (/greater/less) -/FontFile 1545 0 R ->> -endobj -1547 0 obj -<< -/Length1 1398 -/Length2 5932 -/Length3 0 -/Length 6896 -/Filter /FlateDecode ->> -stream -xÚtTSíÒ.‚HSiJ‘â†ÐkiÒ‹téEZ!ºôÞ¤éM" ¨ M@ªô"‚Š4é",çœÿ;÷®uïÊZ;{fž™wæçÙœlw ì0¶U 'KJÚÚê,*‹sr"q(Ä_79§1‹Ġ¥þ@ÉÃá}Ê0§A(" -@Ä¥ ·¤À`@ –üã.(Ã<‘v€¶ A#°äœJWw¤ƒ#Ì¿^8/‘”¼%ð;PpA¸#á04  Ã9"\ð'Âa(ÀG"p>ÿ(Á#ãˆÃ¹J {yy Á\°BwY^À ‰sôX„»'Âø50 sAü™Lˆœ0tDbÿø 0ö8/˜;À;PH8Ågx íîþpÀ@] ÐuE ÿ€µþ€¿w@„ ÿ.÷7ûW!$úw2 Ǹ¸ÂÐ>H´`D!]U-!œ7N€¡í~a(,Ÿó„!Q0[<àwç0@UA€áü;îŽtÅa…°HÔ¯…•Áß² -ÚN ãâ‚@ã°ä¿úSFº#àøk÷þ³Yg4Æ í÷×°G¢íì açá*l„Fºy Ô•ÿBð.òÿø8 -–¸%*! - Ü„7ÜQøWyCWÄï ä—?¿Ÿ+Æ°ÇðGÚ#ðä~X˜'À¹{ üýþwàŸ9Ø!á8Àá€D“ÿ§:Þ°ÿcã—ïŽôîñ܃à_¿¿Yâée‡A£|þÿ½_a5#CUþ?ÿ;¦¨ˆñüEÄA(€@ `àþÅÿŸeîÂÛÿ'Wmðøßíâïé_-{þeÏ_uðÿ,¦ƒÁÓðü‡å`(Ž@þ¿¹þ;åÿFñ_Uþ_,ÿï†T=P¨ßažßñÿ# sA¢|þð¬õÀá ÁëýßPÄÕj#ì.ÿUÇÁðJP@;àÙ,‹ýñ#±ªHo„Ý]$îø‡3üF¿´†B¢w1Xä¯ > þ¯^`pgü‹'æŸ ‹Wî÷Ù¼žþÙ‡ -Ž±û%<¨8sw‡ùãW· €¯P;„÷ojÂBh Ÿàgöì1îä¿Ö,„ñY/G ÆùÏñqòœ÷pwÇ7ñ›øþeÿV:ဓ¿›ÂÀ¥ÃœêÂZŽj˜¼WÞÊoe™Š¾-¶"Åu«ŒY/&<ʙլP}×QµrjÓQt;Êý0½ç·\³ÁGì@ð¦êšÃMÛÄ©óƒ )~‡ÌìS”Ï -LÒY¥ÊÜ» î²ÄRµ“ÉÙ9tpRÞç®{=“âÅu­\õ–Fx‹Nk{myŽ³¤ñ×%}Ü Û^Ãèwî¼%—„ÐOqÑ:Yìš2­ÇäÉ^5T oú{稻X:bƒ5bŠ¶ ‹†Ï ¦8|¡ÉñÎí.ÞÍl —2r%nëŠkeìúØ°z1—_J dòPw^¥VðÌëˆ÷ˆ7ˆ[BFˆß-g&5vŒe¾þ)ò{ kôÔ'F).•iî)ž²H‰Ùr¿˜¤€îË$ûU¬×$ob¯Þ¾“kÇâæg»$óYPÁ ȱ¢Bšpt“ƒÏ=)øäuóŒ» T*«3þh-Åý-˜‹ØTb¯™…€šáû÷„µu¢/ 23ž ·µÙ™.×T zöñªpMMà‚(‹Ö$—&2*R×”cÕmIî_²¦xp[z.#0¢³¯®ã”hýÃÓC°ÂÙKíXPÖ«‡¼¼È†šÊ|è©x‚Jgi1…†u‘ P¿ü°•|m‰X–üâô®Tvé­|.¡ ˆ€ûˆþÓÞœýpCl;byÊÆ»‹d M¿¡!•³-êÅAõå¤ä*62muuãóUÎûÅAßsGŸ=œ¬à<¿’­KÅ^óÕËØ«¬ñðç# RëÙZ•–E¦Æoö»a=”w©ÉÖAýz8·ö&Y8˜Ÿ£ž'µ9)Õçw ¸àsAú´úlILD3ìqchÃËÊƼ‰¯S¡Ã -›S¼ÂÅ÷LJ=Hf ¨/º Ì÷ø¨Þsë|GÙÓ™Aˆr -'_?X)#HÉYeNàu{XŠ%’E•Õ2•§‹ÔU8|Í$v5\m“'Õö»×lûM¢c’{öŠ…éÄjG¤\ÆÒÇñ~Wz±+N@à,¼j£QÑL*šyÉ¿]ïV+Vh¸/Æëz{ÊZu[bú1$-ßl+¤àÞ•FM‰‚X\5£odÞ°ÃÐF'",~w{ä¦æœûÏâŸQiztqÎ^/l†Ê[+Â2ù¶ˆ'üŒ’[²Ciß<Ÿ'T+Œ¨„th1ECÚUÁë§ca²Úúô—/LSŽ@xíÜra2Ó!7õÓÓÆ:ËÌßYÔ¥ç7½˜8‚H?î3¹~ÂgiúXîôŠÜ!);¦ùó¨Ð'y= îPćfÜ’ió³àµç2stWgŽ_~Is^¥ò;èà -šæ¸¸¹…»w©Ó¸ÌO¸à„%ay:×b/9ÀÍ·è&T#í«Y”ï£Ê7´ÍŽ;ªNÂk³Ëümj¶C>åÔ:rÐg­rd%Þé¤á–yí`­jê+å²|8xxÚJ¸÷ˆQª)€ü¶E¹ÊÁòþx¥íbJ’/ï*½çøìœqŽ€Ì?@¹Ø¹#fkü©Ã;žÜûü9àjðb}óÒ"^ÿMƒñЩÍÍ &¾Â-@¦Ã o¤—ù>¯MP7JmÑtæ¸o¹î`·!OÈ¿CØï†eq⊡º‘Œ~´ŒšŽCÏSelÜøóBYžüÀf'ágf~NÉãñ3#jð.cÏÇçÚp²×K]Ía¯ Vg5—§©'ì*™Íîs‡¦‡VÊüønFG§B¥[,£ Èq±.‘»o>®ƒJׂ®ü¸UQ]éârH`í}¯8‰Åz£ìñöü½b}ù§òBŠyþåKâÄ CƒCDú‹ ÃtË»2…06í\±\M6Öy£°Ì¥>1(¢Ù;¡ˆŸ—/o'PÌcdŸþª”l’Cï?ï¡úÆ$ÙÔñNwÌ-¡Í%NC¸{3¶÷žR–ºþ CSLC?÷”éŒÝ[ñjît«]ÙX¤ƒ$ý…vãioÐnŽ¬KìË©l®…KûÞ//åmŦ'æ°~'õÉp>nl=Ÿpö¾3vKÔ:öËLôä3+pyH¢Á0ç|úlåí §KÞPS3åœÂ5¶¨ýç2<ÁLj)Ç×âñÑEÏ›ò§OåI®3F毊ènôé_ça[gмÆW;WÃúà,óy*îu¿Õg’™«;›ìÒl`>¦~òK8µúSòÖszT„†eâýäÙ›ä/+¡š’±a ,[“4s;».9$fãß ¢¯ª½‡²‚r¼ì½e—š$Sß\bç+÷rº2A;àp40›Æ˜‡ÉÑZéà4 4×8뤮”ä6$>¼ÜÜó¹Þ>|Uw-w­…í.[ë0*öSíÀmp›nç&5Ö$ìRÑ&š–[\ÁíO Dñü ÈÓ½él^NA–õ!{£@¬.oi-I7ÌÊåS…íG)LôgˆòE-Ê{; ÈÞ÷n_žÎ{7:ÞŸ>Í«;%£ÞÉHmúÝxÒ8î¢TxÊÒ©S ¥ïLsBéì–˜[l±~F…âŸÕej9‘SM5k'„™ }»ãúh£ Î•;EvKþ˜ïT¡RÂzŸÌþGmþ5Ï«â´Äa‘#W;Œ$¾°¿êz4ÂêÙ„­Ïß#šì•z'ù s¶ -¡ _Þ@Iò1ë¯uZÓ½h†¬bsZ¤h?ª]9•10Ýñ*ðC>ð†¤îe‰$ ¦ˆÛj‰W£ØÆB¾ê7;­“~NØÖˆw3t³ž™L^Émµ ×|}=gÙ¹òä{èwPdø3òÓ ¸ãÅÁ­Õ›ú™³CÖZìƒÆ2{¡èÊNôWGø“óòBôž -4Þ\,ÄAòÃ_”»½´©ªKûmKi@Än¡ÃÄüQ¦ÞZyÃú=¡ÅD)!vÆ'aÍõ%ÞäÌ1Îæ­ßŸ.ÌprÐZ«ºj”ݽ]Aô¢UI9¼ð…{¶‡Ñ.‰šÿã½ú𲳊P)é=‚î9Ý—¾ÐÕk‡Tº#¼Ø; =—õF\éV.ý´:ìjB¿Õªg#()°cèðe–I½Ùù`~+t»õ3çUr%ƒ{Ñ;ï*ÑŒÊ_ÈvcOEnÍp‰â6jgµœ÷û$!Þ’ £&eW…öŽ$äDÊÄ[\-Õ[ëîSß½vÁØ"Ù¨ˆ8  Ò4†þ|G‚­ã@4¾«¸ý°ª(VRɃ³3@'èuo#Þ»/Û‰ýâÁRÉ jl r»z+ãØ#ôª$mG˜ºâ]ÿ¸y!vR‰Üîú>èű÷xÞÚ#ŸZS„B¥›RøÈœ/SùÔø®èv½¥|ûÞó)øÄþØ|RPuÄúî‚fItŸ–& ÂaÔyIí…Û|®6Qûaüêåâ«eô eûÜ/ߺTœ^Xq 4k`Z÷è+Ò¾áÉbWúµÄ~Kçt®?L­þȇ€P~}NNùtÇ8 è#'¦Æ­ø[º=¶ÿÃÃq½ô“•yÏÖ7±®lUô!˜“±4Î9ØG§qÁ©EÂ)ÇÔ‡YÇ!Ú&1Í".åÏAï'X–HÒ b̨(ý¦sÇ9Ûv½“,C=“ødRFJnòÝq\럔„N¹Ñ&Å¡7ve-èOÁ0S¶Æoþ–Þ?B<õí›xqETEX­·kŧóJØGñÖ&ò ®µg·ºé­mý¦eïRq\~$A¶È±Âæf3´q‡ÛÅç!ƒù l¦¡Œ ÷0›C‹¼~XØ+å–Gi-G)ó5Äò#7ÆÜ Tž]æ'¨xFN’|Rš®lòSµŽ="Ré|H9·zo"ƒLžh3@"8õÆ7Î31·B(†ÖÞ¨žã -…•w—ŸË:A½Mă˜“› µ`ó÷+C;gz§?õëò«†g/ö\‰Š¢¬q³†ôÂ7Á‹Íj……«B³ã«Òïo~Kݨ•8Àú|ikäÞ3·¤Rð®ï÷2ŸÚpbR{–««Þq+¦T`º‚Y=xü±íi§Ì˜³|)'VÝÂÆFA=ô©ª`Ú/„Ÿh™mmž,~AžH€iZKv8ß뽈·rÍîéòÁZ¦Öˆe ×3Ñ¿KðhS"Y¯ßã½wÍÀ<ÈmÛÕf´š±h;8¥\½:ö,&¨ï5ÇN“:£™Ùè¼>ö4ì»Ý#À ¦5¤EJêEòc¬ KÓjJgäÁy…íNïB[š^&&­Z÷ý“Qà£[!«ŸÎ©¢ø†ÔÊÅ:!î‰.Öϯlåܶyª.³GÅg\u›g@¢ðÄÄ¿âsk]-7©¬„-Q«ú)-š{}ñ'”ÈŠÏ©7çΗc£ šµ[8“ªÖ‹°ÞÆ 1;Ù¡Bž ö„;Æ|dzśLeõuˬoÚK׋c ã{9Ûå¼'õÝ,ôë枪Š/µ®ªeHxŠT¶`PSòÏÃoÄfÃr¿KÙéôÉ‹f[Hšàr²j¦ µ©·9¥6—éƲfŠF&L‰$÷©-ü¸¬W!7loùûrET‚Ä,ío\ë»å©EÉ<¾|iˆ¼]™KÐ’¶öBþ¸ôÓ$ÝîL}ñÝÖ”áé¢äL 4ý'삘ps‡à=ß]Wk»Œú%ƒ7Ë"+a¯î>ÀðúÂü#dg?‡e:«mÍ(gBÛv YByKõVë±Æ”'d[]ߘkŠ+4ŠkC0_c¬.ö%»4 G°bb[ce\·H‚5Lä_TpvgÌÏç:`®yF,ÏÇ1ï‡!ç.Wª÷6Ä<_Ù¯sB¯Déµáº^Íèªþ‰Sß5R¸Ànún#ûùàiÔœ°¢ÕqQB\šüU4(fŒ’~ëNLJùµâT0駆fûŽ)w©e;ÖÅøÝÁ9ö§a_¶Ü^ñgbÈQ ‹Ëi^Äõ+'SgjÅÕì’ù&+½ªrbO—’Äù”+© üÜÑøX83â]9V“¥=Ìf+Û]ûÁ3Â’6‘)»4뀵<|+Áb#Msi¢ŠÎ˜àöóùGçºðG) †$G¦Ú4|iƒVï|¿ÀãiêFÃUx+ôÓ.·±eˆ_ìöjÜ)_ڹɔ=!šNýŠ›[œÛ×ê²Ê¢ns çtñ> µß¦Oáq€lRý$^Õ㢿¢þ™å¥׸Gäi&Ÿ‡ñ|Â6)ðt2JíÞáÇh–…´¿0ýÚÛ“ÙÓI‚(rûBáNJqj݃ŸÔ¤ÑèPÃOƒ’™÷ãO-u§ˆßؤ:U­¿«‡PñGEf™\å¶+ÕÉúôî5O\êc7¤¢Z±oV™ÁÊr±¨Å—t—¿CK¬’QH£÷ЈÆ<ŽµbÿšZVŠ"kËù•¹cî‚oûe?ÜÆ©Ó.;y®u„ò> «§ûV»suüêHl #âþ$3²» eãA*»šJŒiöµž©7$äµ2 d G{ùŸ PD™ë¢tá{Í!…E¼>1â™oçÄÁ¶h˶‘Å5h䤛ãò·3‘ð!ý;rôB@kxi¨ƒ_‡ª“>ãd!{w·Èáýžz/§×cù‹Ñ‚•µ%Õ]KbOßu6Nø5½Š/1Û¾Ç@ÿZ÷›cX‰Êãȸ¼u jF>EïhB¥©‘‡ Çƒ<c Û=7†“®ì§¼î1µ(ëòYÐ{Û]ÿZa}æÊ¥íŒ6И²²Þ.O4¹O3m[õ˜fŒ)|ðáJNò§G…¼¹4=©'Še·¾Qª…=ÕT~C©¬¼un};`Q?¨Þ[¶kÆ'äˆÎL“âÛ)[mˆ‘דËJ }vW…A9È`Ï¢&öäñ0?“¿œWRV£TÏp²¾§í¨§—’7æ­=œñPÙsÆr=®9úà¤z¬´rQ£‚ï…áR!hŽ}oÌñ=SøôÒÄJÛÿ0íLsÈ°¼âÆÇ4(’ ò…ñÆ7 ¸'c›ÂŒFìò9èõmÂÄaû]“%PmÂ:®Ç‰Ë®¾`*ψËîþø|¡15ðFp-ßÉÖ·W„ܲ6,YTÏŒy6‰°˜ -¢pµ°Ný‚ðvÒIwCçÒI~±@n¦›ø„µpúsôî·WƒW¹ÒnE _¯Îa¬Ë:øJ®’âÍg–MCr¸UÎ1³ÒÙ=_Ú¾?^Xš¿™»÷-°"b ’ -=ïeȱ½^:~àX Z…ŒªÆ[äÚ(T9“¼1sz~g)}FŠßà²r“”%ÿÃn(ýµÎXûëIÆ RýUûàÞ­êÇK@ªúXΟüuFùµ3å.ö\–¢ŽµKyæLbîúÑ? µ·b ¿Uh!Ôq`šÿa¾wCj}Xš&*«qˆâƒ?ˆÌ7CÚNîöÚº»©"evaÏ]<¸“íÇÛ=˳Áñ™—Uà1Y"‰~=•_Þ®6AÆq9FÄNODÅ°›5a… È{G½ªÙ£±¶îòƒ.o­Gí#ÔZ±ê‘zé½ÚgY¤Ža=U´O&Ë“2L s"DyD«1•Ó1ྡྷ”GdíÅ»/iKè¢g©ÍžrßÎ(Lrh€wXU½ð— È^¦¥Þ­ØwºI`j•|?ñN™XÅQÜÓ¸sܲDyƒã°M¢ë™•sT&.]²·“ -L)ÓéÚkRõͶÄU!œ;±+®ßti^&¾E=g­ÝЗ½G¬Zz™Aìl•rS_«NYÕ-0z{²×ú<±b˜¦Çç’QôJXýÀƒ=×Ë°¶r³O R¨òÏÚúÝewF䢺0äE1µyãe«‡Ã¯ò‚[È³Ö ieŸRa)i )ñchZž”—[¶M? -ª!ª™ŠÉqDµºúâÛØS¬çŒ¡¿UÚØ–ÔÂf$ -‚D7´ó×oZñ -endstream -endobj -1548 0 obj -<< -/Type /FontDescriptor -/FontName /GNUTFA+CMMI8 -/Flags 4 -/FontBBox [-24 -250 1110 750] -/Ascent 694 -/CapHeight 683 -/Descent -194 -/ItalicAngle -14 -/StemV 78 -/XHeight 431 -/CharSet (/arrowhookright) -/FontFile 1547 0 R ->> -endobj -1549 0 obj -<< -/Length1 1388 -/Length2 5940 -/Length3 0 -/Length 6890 -/Filter /FlateDecode ->> -stream -xÚtTTïú.‚€€ˆC -"0tHw‡„HÃ0À303”€´ ]Ò©€t§t#ÒHÇ H©tüÇ8çüçÞµî]{­½¿·ß÷{Ÿg³3ëêóÈYí ÊpŠ‡Ÿ(PÐÒR‚¼@  ;»åù«&a7‚ P8Lâ9( F§Baü´à0€º«#€_À/"Á/*€@ñ9ÂEÔ Å P‡Ã Hv¸³'jk‡Â”ù×À æð‹‹‹>üs‚  `  BÙAœ0Á G€> … <ÿ‘‚SÒ…r–àãswwç9!yá[i®‡w(Êð‚„ Ü Ö€_´AN?“ñ’° ì È?z}¸ Ê„€0 -G(Cb"\aÖS ¯¦ Ðq†Àþ8kþqxø{7~^þ§ûý+ö;ÃœA0O(Ì`u„t”5yQ¨‡Ìú—#È ÇăÜ@PGÆáwç €²œ„ðïxH0êŒBò"¡Ž¿Fäû•sËJ0k¸“†B’üêOŠ€€1×îÉ÷g³0¸;Ìë¯`…YÛüÂÚÕ™Ïuq…¨)þuÁ¨Hþ£³… Â@1QA1!ÄñÛñýJoàé ùmäÿ¥ÆLàãå wØ`†€ø@m ˜‰ä ®¯ÿmø§DÂÏ°†‚Q+ˆ-FòŸì5ÄæŒY>ê0b°Çþzþ}2ÇÀËsôüûïýòéi©*qÿ™øß6yy¸À‹G@À# ðE…¢˜ƒÏ?Óè‚ Ûþ'V fÇDüisOÿjÙí/8ÿ²ƒ ðÏdÚp l!Îÿ Ü ( c^üÿßXÿòƒø¯,ÿ/”ÿwCÊ®ŽŽ¿Íœ¿íÿ‡äuôüë€A­+ -Ã-8†°ÿv}ùÃZ-ˆ5ÔÕé¿­j(† r0[ šyø…xBôP¤2Ôb­ Eíþ`æÞðס0ˆ. ýõsÁDÿeà ì€ù 1Àüc!1lCý^ã/‚áÓ?ûP‚áÖ¿ˆ' ,! OÌê1’0À‹ÃPkˆÇohøxap&€™Ù`GüZ³Àçø« FKòÌ`WSú7 0eÿ%ÿæ7â“|ž‚ƒÙW5ŸTÈÝqçY–ÄßK>1àÎ}F„êQ³X‰ÓÏHŸÕ(RþÜͯü̾M[Þå$sqú»ºú^§ÐÏ=åMÛ{V1S×GØñ^ÇŒ,S X9Oå™$Þ!z°tï†ßl'–±¶íÑg§ð¾_Õ5ïÎA] ,ªܬÝÚ^Q®IË(n´³úÕhÕo°.üƒî~ÖªStàZ„Ù«$íT ÉÖS’8÷ò›Ë}ýó”Ýw;ÂýÕÝÖ÷Ù^¢(•õ3* -–Í¿!¿Èzç¶Jåe¥rKvÛº§x‰+ñ¤JûÐ}¸mÎüÀ¥;³ž®›h'OS%îEjNÔ@œìPlÅ÷X³©’Ø"µÿp›ŒCŽŸG9ý AXÔé˼`yA þf4𼂖m{åsÙ.R8íž#G…À¡GOo`I›±­È¢]òA¯­¾—òŒ7Gß³+œgúZ\\³ÃƤˆõ3u…Ê&·4‰3±Ãctå¾’øZ•ØLÞVÂÒ99IB¾sÐÇ‚u3Î(~ûÌÕµ…#™\KÇ;™véQå³]×a±µža0ùóÃ’'ù8=¾Ò{N¥žâëE§óVîÍàô˜¶vaÏ`Ç+"ÖÚ^SæÙv”:•~°î¸AóW?ÎåªýLæ\>Ùu­]æÚ½<¼\(ƒµ4ùËwÚjH!ÕÝÊaiã ÌaÔieá 0Èd5…[Ôè¶FÔȇ>1€ŠÍcÄÇâh^4ÿЧÅX:‹çöËúv,ý[ê6YÈS}[1×^{&û]Ûù¥A‡EéÌWYW™¨Xl³ð’çð5žvÞ«Ú¨Ÿ°Ér¾"ån5ýÄaƒx»ÓQ¥ÆÃÙ¢%>AŠ«C×eön™˜äb0ÇTó³þž‡oc°¡;ž«Ç”4Oe9…¤¾›ßÆ÷ä•TihÂ6…ª¯}›úÖ©ŽÅÎy¥,ÈÎ|f}r5Ô®Þe9g1su¨øö[›t0É}˜ÂÏcùrõ]ÒTn°êo²´O× ®™'5b¶cüèbI¡›\„óÊ(Ãü-Áž_ùzÕ†ý”¾ÒíÔr"]må§jùÇ/Å’[ƺƒîŽ¥±+é‘œyº5?áÚ;þnÜñl ìN¹ -K—°žâÅÕDÕ0¯¬¡-­Aq…Ð -yôìÍ )Ù²‘ÎæئK… GE7syì¼²Nüúlpi>Ÿ½°~Ïœ±ÆÞ\þ*í¸ý$±›y_“zÏÃØÂÖ3󛸘OÞ&ïêXÖËc?\=Î`JÞ;;â$.YÄõ2TÄŸ±¶l3XMW©Ö%š÷mØ—A”S—±qÓ -cFø¡Mnڸķé¹×ð\xý’… гòÁ¶ŸxŠpŠ'3Ð]VŽr<9w,9@¦ÇH"š>ž9ü]h”üðbûÍ]Š¯w<”ŒA´/ëwNè™( eܾçj‹ÝµÌ>;ºz9õâ¹ÕwWx -ðTð¸L‚·+êQ¡„Z>Пbò¬¥·OiwÌ¢©<ÇûÑë…kTî®D*ÛÕ8òHú™÷6€…ÞšøµúgÏ,Ú®UUSŒ½Õ Ãz.!¬1ÍyØ°hìQoëÞVÁøâÊX fR`Ÿ-…Vž‡‚ô1ž-íñî\—Û.q@ˆkèÃ=ü!ç^\¢ãXÀµvä¤ðêè«"=U°}ìÚ“;™Ó-å? H‚eßß÷À D€úª“%ÒîQÒ°lk{æË‘Þâ­{”\7xr‚'͈G?vñÜ? -NìˆÜwüjÞï|ã‡,jlCü±·wCL¡ÄŠJCªèjb-¼Œø#‡¥®ù¬¤­âÖWÊ° l–Úý,¢dŽ)9ÜоU_…¨¹¾5 ×”¥ÎÎ1œ+îµRÓÆçwR&¹ˆý–úÅÜôǼ%›È™$Gw ¢òé[p'@l$5üÒ?FçÓ¹Þò#C6RNÇ[ Ô7®c¹W:® õQõ -®1Îd&¯¾qpu5~¦ážþöýýOK¬r?Él‡\á%€T\Õ‹RC¦¼‚À¤ÂQ¯õ ±àtEåÉÅ[ò6E€¡t¸Ð÷uÜ‚†‡æyDÉÇGЧžy^ÉK»ï…—›~Âgºû\C‚pƒ®¥ø~¶=ŽQÄÍÕ ~Ò×mk .ý¬±ó¤v¢`úžp“Xœ>Õ{¿µQÏÙ×öô­ä½¶™¹ª¹á¤?î±!ùÚ´µ'Çeò¹Òâ$d‹éiÊ)O]4"ϨÁô{6iä5‡©ôË'àxŽ‡µcTßdcJ®c„ð÷´W³6eZXCMÞžÛ½˜]“8s=ø©ê2-Á‡Ï­ÿ“ò›ò {¨]^C„ÈR³ªI_Ýsâ!é‹äV6•#„azsi;uTk k@°¤ÄLÞ™æ Üû‹Ûs.¡4Œ’‰õG*è½mívÝS,˜ØˆüLlSQø…¯¡IÀeO˜×o£™ÚTà›jÞûÈh¼Ž¡ê¡b,^ââ fIÒ]¢àh7%šùw/Ý°[ÖÍo8̶O!d£‚ðí GBÔÆrC­8ëëÓcô›‹º•6 à«hš4_žú%ƒ4ÉúŽìÓeƧo^o¼a/Êõf_L»Ê«¬&®Ä1È´OÚªŒêdfL\y)”:cÄoqLì‹;±^RŠMÛ²&â{¯XdåíGC¿8·ðDŒ¶ÖU9 )2_!8L¤Iò–Åaæ€CÚz¯¹©!4Ýnz:ÏcŠx'âÌoÅ¿Òr<ô:i­Éã+ã.`$»`?)…ÄÔ¶¨Øœ|+ÓT<_ -²00x`±Ì¦Ï7.-ÎrÄzSmڽĥ>YätS²tw"ÜV?ôHë÷Î-ÜÈ’`Ÿw _&?£YôÒS¨·̨ö Öë;Ú‡-8µS™P)39Ÿ IH&M¤ï5øãÄl·^y_Ó‰¸Ž[¤…–(æI–Ë:g¯8ÜâÐõý¸ö°ÜÕÚ@Ípd:ÿ¹zHêýñ«0;ôù(îr%µ‚܈M -±ãª¿iË£ ó²·-4 -E÷„ypçº;Oºúù»ß¤Á‹l13jÌ |å‚8Œ}ÙòI¹~h•g¸Ú®RUz]R«õž\$ʈ6Qj*9½GPKü@L¢}BµŸ‡©‚²–¨ýs¸&/”.ê¿øýTlN¨Ë”39)Ì/¶îSÞÕzî/nMÞyç ¤$@â^]ÊIX½6ßð–É:5áµWÞ¦m¼X™÷Ô;—!”èñ!SºÊ}þòBª/´<Ͼù`m)‚Ôx¢ãS š‘»UR½”½˜%¤D.z2/üˆYFmÕô¾lO‚pDyL©•n~©“-|FcÉ·&‡ÖPWË}Ñ/óä%M+c¹œ&‚úÑ™Wt/únäkЙJe”>À}ð¸lÙ Dý4ÚÉM/jÖ¶~씡”bÞêbl¿øÇsep /,uzÜÆJkGÛø©dô4ÔèóÁ©hWTüÓÐ~Ï@a°Oóø¥Kè㳞Iø+€Ù'R‡ÑZ¿ö ¾ªá‡„Â+ÁÞéÖ¡è¥sj¶HhQ² ߀‡ÑÙr†§›ØÆŸ -ëX¨Ï½áᜲ÷îìû­Âš) µL… -2œKÇ›»9£g]§¦Å}Ù ðpú•Kÿ\ªæøÎË©1ñŒ¤òjaÙ=É`7µÕ$I’páxwŠ•É oÊ(™êè’iÃÐô3R‰~$²Uñ¬Õœá*«myIädþvÇñ…õEyÓ»H@ʦÂÓ+o8Èn™øÒÉ wa |yÇi¿//°ú¢Öv¯ÀI¾GÀn3…a½B!Þ’‹"ðG§Ã†Z’ÏW—Þ…€Ù¯%2ôã9®6ŒSÚx³•yÂÕ°r*b4såÓaQ*üL¦IuÐ*x(Aæ§þ ¨ä[ôI7vc3‹®:wœì‰UŒáN÷@i@Za`"çç©€€ã±Ö&•O<0…𚎂>ÜÁà¶ÙWW¿ã+ri?‰ä°‚N v¥S"è‚Úî«›sªi¥ŸÕ‡ßŒ™¢·>âNžd?€<Ëø×Þ*ÓëÄjÞÆ(>ð’rü}˜@ÿ°”\³¡þë|iÂ8í6`šÛ>µreX5á0$rrå5ºSJÕe±ÃqŽ+âuÙÆ6%ÏŽëåú“ ÷‘r•²WZ’†š þ‰ø¤”ßÇ ù˜ß%]Ú1ö0U8* ¾XºÿÙŸˆû°È#™üái¾ÐTqÀ¢#å 8'Y\øD à{øæÃKko<Ø !íÖòsÚ7 Óˆ‡*>)ºç™PFêòÌ\ØSQ¾8V“ ñÆû"p—煮…xÿåzXõÎîÆ{‰š°m“èü&ˤãÔÒ3¾ãÁéëî“=@“9×zÚ#"d}û³œH×Ã5 ¶Bqxã„ÔZŠ\"°<Í™Þü¹óO^ºèT€Ò-ã›*æÝ)&–»Ÿ‡£H©ÏÅðìóðûBF¿ú>‰á,,û°ª4ÂÑ$m³x_ðràQFRW3©²N½Ú¹ô×·Ç4_®NÃ.ïr¹Zú>ÙÁ…ÎI†p™/„ÅwCì:OÉV×ôHðSØ#¥O‡=ÆÔ‚ 4kË+àÁóÓ»¯p ßH+°Ÿwdõšv;µ~)U§Wþ<|Kõ“©²¼Ë$)Ü„äÉÅ)úh*ª¢cwWŒß§•)ãFÙÚµd]¡Àu)®Zg…*Ú†o‘¯D“¿@Çn–`Éö±-)—=ÀµPz“¾øÞ}%ìÁŸÓA@I°*NnÌÅ:\îÒ {ŒÐ÷‘'Éܼ]„²‰ËåTÞš6uŽofOvüÎA×’!o$Šiàá¾Í,晵J3—3[¯ßQg1{zÞ‘º™Wií[™ÀH»«áy=6Ô8?g\ðÞm° O2Å7BO­fp—+ -Ðú¦ÃÙÄ!ƒè¶× u”Ÿ@Èn£&ǃ¡Ÿ.wRq/æIàÞš¤;•¯_é,lV>Óð»yMb¡^O[$Ô^'lw ¾ÂM¥h#Ý{Šz7&ô£9Õl‚Ö²áì,vù³WÐÞ«%4U”‡¼9Pa÷ œ¹‘/sÀË­nðE0UJ ma¢’Rá±yC~M¹ú†Ôh† ’ UÚULcg$øz·Þ‚ý+ב¦˜¡ìÊd1—â&åg‚µÙ=nGÙE*ŠMž5Üyýó¬Iž7ÝEâzõbAËiÛ·)àãKÏé-àZ§qV½èsP1ïeQ°ÛŒŽ¶«y®çN°´røè2`ÖÅ¡šŽ¼EgÖºUËÓo¬«ˆ}ò½q~¶ã§l¬m–-p´Èhª¦ìŠ„óÆØw®•Z³ûŽ›U ¤?L&VÉhm¿IhlZ¬Ÿ·+1 -Ç‹hΠ+ -I—sdÖ&3·óiðÏV´*#âîcÇÀè%lp?dЇÎk.…^7wÍ%Ýknng½¿øƒáÔˆ>É·»€¯/Õˆ· TOUï=ýhìÈÉøˆª×O'_c¦OÑIä¹7£ð9ü©‚â¨Ò©Rî’äÈу’¨0Ýl«°DEÍÞ÷Gæî˜&Êîèl0œ»ÏÍS;‡•-µµ¼Ý+a@“ÄÕÔ¶ßZå&¼rCwAÝÄÄD}IÒù´$Zœ¯.ôß P~z-¾?hffdý1í<­èêVíH!$îŽP›Ì˶çÑ&N~ßxÑkâðÑÝvëÃö:ö/g÷Z(®Ñß6› -we“i~~ôeà î–¢»WMFgv“¦ß$uƒ;Örº8ï—*y£F³ÞQœ•  ì»”µ!ÚÙÆòeÝóвö³3)71Ç’š™ž{:¬ïsr2’Ô¼Wâd'3RoÈRÔ5µvF±6ßz|x$À -9±âN¹ð, Î²ç®I˜X+v¹uÓ‹B“)¤ôñôþFý›WÐVçë¬ûâ¡eò¯Gg ÝÊðg¶L‹F^:8*ÕÏ;ŠO"Ôç㺔ý,nªbUkâ<"¼ká N_uªø´Ë¯G ûœîòÕ_'XkÜkÝAæƒr„>‰jÇÀÎtN§á½}ç°}š¥ÊªÇ\3YQÙã@jMŠƒ 7 Ã!{/TyV:zõ›ögŠÝõϺt>Y> -endobj -1551 0 obj -<< -/Length1 1386 -/Length2 6039 -/Length3 0 -/Length 6990 -/Filter /FlateDecode ->> -stream -xÚxTSÛº5Ò¤#H7 ½& ½wÞAjHB‚$t^¥7éJé]©Ò¤(]zQA^ôxî½çþÿìõ}ókk͹÷ád30T‚¢`ê($F$”¨è[‚€ PT!áä4c°¿í$œf04…”þ„Š ŒÁÚTÁ,P…ÜóD@¢¸4HBˆRQÒU° -ÐÜC!ahN”»¯ÜɃ­ó÷%€ IIIü(¹Á<à0  Æ8ÃÜ°!`ÀÃ0¾ÿHÁ#ëŒÁ¸K {{{ ÝÐB('y^€7ã 0‚¡a^0(à×È=°ìÏhB$œg8ú/‡1Êã ö€°C¢±!žH(Ì€­0ÖÒè»Ãuþþl$úWº?Ñ¿Á‘¿ƒÁÊÍŒô…#Žp  ¯®#„ñÁÀHè/ FaãÁ^`8ì€ün PW2€±þ™ ñ€»cÐBh8â׌¿Ò`·Y UA¹¹Á4ɯþTá0vß}…ÿ®+åôÿ{åGBõt6EÂx´Tÿ`°&’Ûœ`€PJ\\ €=À| ο -˜øºÃ~;›±3ú»£ÜŽØ1`pGö‡Ä ö‚0ž°@ÿÿtüsE pàs‚#Iþk†9þµÆž¿Ü`ÄÒþúüëÊË0( -‰ðý7ü÷ ›ªiÝ·4çÿ3ò¿œÊÊ(€¿ ˆ@PJ@â 1@à?ó€áúøX-¤# - õW»Ø}ú»e¯?àù#^À?sé¡°Ì…xþMtk ‚ýýŸéþ;äÿÇò_YþW¢ÿwGêžÄo?Ï_€ÿÇvƒ#|ÿ °ÌõÄ`U ‹ÂjùßPsØ_ÒÕ…AážnÿíÕ€±jPB:a-º+¼û—ŽV‡ûÀ p Äù/Öüe7ý¥7 3@¡á¿î0Ø( ð¿|X‘A\±w4–š¿]0¬†þYW AA‰MDLöðû’`Ï»øƒ°ª„Â|~“ ,„Da°!ìŒG”ɯƒƒÑØ™áhWì98ÿr’ü£ÄÓë¶ßLÀVÿ{ý[Ú0˜ B2?‹‚È„»¼ï8¯UbòüæPæ¬âœgîÕˆ" -zñéXõ]ï¯t§Q¥eg–:¸ Mq„ÃDm¿LПÛÇg'ƒDlÒå’ƒŸž*‹ XÝGÍ.dÓ4Œœ4Zxzl.Ëž#w„NžöÃ+-n§"7Z^w ÷Dí£8¾²ÐN…$Ytfo÷m%7k‰¾¥2ãSÇÔi¿CuÛñ&æ'Näã´wiÈÜW”š›`O4¥(4¡zg¢³Ž“©Gl)¡ð†ô {x1¢²)Q¬MåãmŒ©ÕX§ã¸…È£çcÓñ7RÕ™ÌݵwÛF½=÷”UÔÜsR¢«ÕºÁ\Rþø¤ÑfAªd'’Ôdà‰ÆP‘Y¤Ž³cÉBA{®hÛŠãQK,Uýw ÷ýÓ^æ4muÌÂ÷ý gxÅ¡ê’?¼ D?|¶Ðí«„ê®ûúp{ÝÆü“j¨n+A´åݥңȪ"ËÄ™7Ejû:—"«v"­7ª[ËQšéþ$ [>S 7‡¶¸»;<ÚQdç§ßÍõn³e«¥–ìfµ&NãÿàJ[ÍDÜV¿¢³Ò¡Â5r=gUÏw8(©äB©œÛJŠß÷ð…3{9ΠÂøÇésu·woמ!˜!|‹Ñì_«mƒŒª¾ØT¸E®Q¾…—†kWèM%°i݈{1ýâÇ:ý‰ÕO;Ì´¹LV÷›ƒÌAOEž;¾7¥4Ó7LŸäú¬žœ‚E?«—!ðÒ»Ž$}𫘟MaR4Í•ÊzªWdêÙÌ'~’©´ ß 3CÕ?~ïÕ–¿“¢ÐSŸv[&-·Nn䃼@øÀjie—5{å·¦ôì[“F»×½ŒTÒçŠñs UIȧíòéFr):]©éâëJZ綸õYÞóÙ4%P­!M?WÈ™h˜Ï$ÖØ¡ãaS­zGí±òQ4cé×QËšŽÂ]á¯W‰ãV…­?æX[t8õ ·³4Ã"S©e ¸î=yä•<#0ÀÑÀîlZª«p\¿­°œêÎ7.áEþî–Ü{:pUƒ"Uñ™^Š˜í¾hzŒÉçzIǶH£¯aITX«>oxYPbúË'yq¸é³ï)F~OiŽŽ7ý£&l©T?Ë®ùge­(§lÍ~90ŸqäV9ò]\©µ|>ý\ÑÂ*™Z‡d”xÀÆðåšvôÅ]W}¹[»?+gM)e Pjo}qÅ}›ÅG.AôÏj`çì{óØÜÆ´5ª=ÔöG3WÜç£C*IDzâZ3º•+<ü•pÒÊŠ-o6›Éç¾`0ÙîrÕ×ù‰úeºNcöB™Äô O[ã%±Ã,qe9ª÷E^È÷Y&«DÕY‰uãì“gå46£‚AþÑ“CŠÓü˜³áä×.Ë!à1wäÐûÕ†éO3þdzå¡8{Îœèo›ûùœÖwËzÏèB×>W™-¬ †uƒË³mŽ7fHqw0…ˆÔLgJñä+ýh¯»R£Í7õRIÆ[<ƒ]6C÷3âWILg­âg¯dŠëïglt¬yͱJ¹’úR%Ð5j¦øºË0ª½[¤º0ì‚r'¤÷Âmª>æ8øi¨(°s†À>{³mÔeŒŠÇlp|in•¾ê|Ë;Ô™ vgn£Ê]Õû¹›I°µ‰ôµŽ0S?€ó !0j¾›)nîÃ-R·‘ˆšûŒ}E:ä’ã/çã!#G㨛ó¸U±9:šÅoÛ´?5åófž>Èç÷bé›Þ?Ú^\s„ÆN÷MÜ¥½ b=!ÚŒà’‰û8w¼nâ´c\6ôŒªð±Î‚Ÿ†'Ì2,¢ïÌUϼÑòå®úœì†r`}Ʀkýû^Â%£]ž…™q[‘9NJ ®ÒÅåŽ[x;NÜÅ&"À- 5ýz§ü.ƒáç6ÚêðBß<š€ÔįÛÔ{ü“ž°ö¥©5BÞ¾˜ÇKÑØ~'\}ÊB·™‹À»Ð„eGΨ4lzé}]g×$-Ù!ûJXoÓ*Tº•ô2.?`½–g­Õlæ`)V£¬ -!ªíÈd~ÓoÑ£ÀnW?wÅÝ‘H ]@ O7}oz]䃟ð‡ú¦y¿)Þûá­1ª×Xî -R|[ªíº7Å2Þ7þÞr¤4¸UE]ÿz™a®Ei-­õU'ÑU7¦yYh…câƒÓ-b‰0ˆákxƒ•'–8–táx».Dѳžk‚x%ˆÊáìñ½{¡@–¹Ÿ! •½f -ðnjê¿£uÉþ€îbyè•‹¯Iv|Ho£™Ûà—ÇË Jß8© 3$%ïͽl˾&åw½ý³I´Êbpæa[rfäõR ßîc©¸ñ­G…(—Ó]íS—Â6!b‚Ñs~Píì‹Ò^­„ªÎžá}<ѳ&A$ê¸ã°“[v²s‰&¸>'+‰ãS»óuð •áo£R!ÏñOØωm"šï)ª gúºKì[A½!»£Å£Õ¨CÉÄ~moC§ñî¹| [òP¡ÙØè¼±ží:R³˜‡Ç¯¯.ÎÝÈn"Àcd6œ7w„ØKì“ÚËíž6Ùƒ×Ü_žö'°¢SpÅ|…,Âñ˜§FŸó|a.2)ÜÅ)9…‚´ Š\++ßĺ| ª,"bBýnUhMïEëœÅ3Æ¢QŒ–/°¯ë©þô˜~«Ô;ÏXÂT悔 Mqw¯Qç«,;©[ÌôÚóП†Ž!%7žQMá9J…ñÕ0íXHŸt­ËvdKó.ê°8âŽÆÓöJ¥pS\døYüiÛQļ J)N½µÚ|[!Ú=¸ïÍš¸ýæï½QbYà%F~=¿Q?cÒ‘FÕ›•ô^gl‰üÞöÞ᦭*¼ìÒªd_-›÷¡E¤‡íàæ¢iÔ÷€œŒ;ßÄÌ·'Mc·„ž]LÈ]ÅecßgzÄô z 6ÐÙR¥¬ kŸSùHXøÜ•‚j^ɸTŠˆQ© …JäœÌ¦ìeÔ4>žc¦ ÚV/cbje`Œr—Ûbq…Ø™½a¤ÎŒ ÝäÁO`k³nî‡_ïE¡këV2B®ìö·”¦‚DKW i7»•YÍŽrìK©µÑ%¹È‘<²QTnäù{_¯±£=+Vÿê4Ý]7O9kc-gG©¬’z¹óÁ‹ñýŠÛK/'ï6ƲF=Kšø -znàHÿ–¸êH`Ö¸¿@üxµã:óg¥VÉ_yÙ"íh¬ûë¸;ÈçLƒãª€)¼xk\(°°uìÆ›´æ²[Æ»ÔG³Ò µuÙÉ¡rôÕ¯Ùn]»Í7ÒY!D ¼îMÐc$ÙÆ£8?ÿ(Û ÒÒ©Ø«Ç¥åö8ÿãSy ¶×né°ƒaÅ1¹ùû”™ŠæÆyžä[×[3É×e}Ïsõ<ÉÀi„[ÅeýB%{¸½†â¾h„È ÊW%-›(Þ[ºçAMÆE_®,3æ‘Œ¡ñY‰3\e|¶ ,ƒÉÜEŠú ®æ¡Ù¥±þgϺX'wk©¯¶æ+øÓ äÕÁM²…}¹ÝvвY¦›!Rîlv]¸¥† 'kÜ%z9 {Ë×3åÉqûËF_ºØ4P#D-äïú)Ì«îËéG\ët@’±Äû?¸å`É#Ï>/É·ñ¨khÔµÌWôµ{Žó|£¹ÚC–¨ê½Òznó,˜´“)‰vúÄ_-…v¸¸÷‘wÈ<Ãr•­Ùòº3#&÷ÔÏ•ÃÕ•Ãæîv -þ>ı¥ð{ e» -¾y†âáÈÑѼÓÇî·†5OR ¿dÅà;,—Ñ -»]kAˆÛáª\âÍ8]ÃvîÓn>ºËÁ&ׇY¦™8×Ca"…r7Þü‘qÇãÖšÝôå•¢sß;<«5öœ þL”¥l†¬¹Â@.ô’Oë±ãºr%Ռǣ=µ¥=+Ìä‚“¾6s¼áSŽï/än2~ -}—«°U…ðRÚˆV0foÍ0Ïàpòéj2÷2fmç˨@Ÿ.g^òpïd¨Ýt¹,P§b¤ìŽ†D Y0é»Üg+*Ömî¼øÕ¼§?síngSñÖÍð´~Ï)n¼¡«ÛFÒXNö`À‹«©føLe鳨N“Î}t½·‰§2º£m¼öÜ ÿ¿`^uy¡é£Çuê'¦çìíÚc‘‘ü•S–]0 `%Oú)ÊÄ”­Ó ãäJ(õŠšÇRK0)aÿüä«Œý íú¥ "Mé†çO–-5Y@©+횃þ-ÞaƒF¶–“Ù ä$O8ÔËÞfhªÎš1*¸úN>n½i°È©.×Ú38 Ep:Z¨¡=gà\ÿP¯Áª_kØn+:X…hß„ÎoqÊ‘xXv:#-î"äšý]ìSY 4{»ãrù#‡} 1E(áBuY0ÕŠžˆ«cøåyOB4/ˆr«áÐky«û8Hû½¹®îô¢¨Â»ÄørÝC›oÒæ 27©¼n'EPf^·X‘¹®|;…8¦Ô‚&QÈ`YKF¡€ÍäY4@èF3šnïÔÔfíyXŠÜ¤EìÏ—)b /cƒ=‚u1ò¾r5‘|«!*x]mÉ:1ýLJu…î¦óþ’ô‹£kÖÇgsCÌ:!¸Ûa…©\ †ŸŒ¶ÓÝ…£ÉxV™fO^öÍz™ïŒÓ3z¼:Gö/NTÖ+tß kNQg7ªʯàóÐ6œ2°OWNÊm‡ 7wÃ|P÷l–ßU°½ñ¾×ÿ(ø(?³=$Fµ_d¶2R^Ï_EUÜ\Uýò‚E"¶Þšý|¶|Àwýóp_*¡IAœŠØ…†‡ÓŠ)A¥ØŽÄ¨Çq\µ‰Ý±DÓ?jT¬ÍIæ?Þ"+¬!Ðõú¼Äãr S¶º ;/BìæØŒÙôâ¾1§ÐŸKfŒv#Š{šP½OldÕuk"¥'ërç ÑOîÐõ¾P5ÍùK™ÀÛûÖºAyYé9XbÂiDä*Íý¬»¬ÚÑNQøåýÏzÊ×)hãrMªÒ3ÜàSvÎí{CíÀOE¯W=U#sScȸ‚/û$¥„.gKÛ×½”!üAjÝü -¤Cb%Ñ\©c‹Vù ¤Ó1±–úº´B&m.‰ÀØT 2@î"¢âfUü©R_B>ÄÕü»kqQy'îˆE wØ‹¯,%t¹´=²¦¥/Þé½—ÔAA]ޣߑ‹RFÉ“fÝab<ȘÄp[¤Ci¥øÕ$êöõÖˆ² q’þý6‡qn­yÂQ 7(óÛß%ÐC½YâFXfœþ¼ír§9ÞÌbËRë3È“PW@Ñ÷¹PH­V³ç¼rJUŽÍ‹ëŸ7øšp,£lk˜¨_ž*ú­›Où†h}˜'²£yIk€|ëªÀNŸöÓþ-ÉíLŽ—Kö¡‚R´†Â}ÅŸuëaÁù -s¯‡¶¦j¯±Rî8¯áÙÄ–8ìw_n¶oUÚm‰ÈNžf ðãSî`˜{*j­Æsë¢îþ,×W|Æ©›¬º¸I†)iœó"‹œ±flvXì=Ô5S§Š]ñ»j}1—’wÌ,oPNœ÷5‹b¢š*¯Ú -]*"KzØK¾Mš%)²¢Ö‰u.ÀM°¤¦­çC‰I¸Ò.ýL½ÃD¨™b#På3pŒ®Aûìkæ˪kS­®EÍ]Ýu.½Ñz_|‚>ÇM`qÒÙXÐü>u"9ÞØ=zîæÚ³a¹²µÞzŸóêÁˆ -éŽs}±%ƒµpï^»‰5`,›ö¢hÌÄ»íçÉoN~JëÕxdÜÙå~;BÞ å¸j wgTF¶CVc‰õ¿lÛS•º§dú·,•i‰ßRÉоTÁö®Ís»IXùaØø-Çsì“*:ÇEGÉ-t>™ÞÄŸºJX"Ô[s®s‘=d_SK• h’±Ç§è'õúÁy~{¡ÆÄj2K`³ -Ãe×xlÊè¿TIî»ñò™‘ö„&ÓyÞ÷µ»ùÂÊžZñÔý•~¤Í¢Æç·¸÷᪸ŠÊnUmV}B†WQŽ9MÏDôÇ`ŒÏ¾ôq²„ìòn» ž/ο¬`§iô$ÉTƒ¥ˆó÷Í×¢Kïr3ݬk-=Éü´îmø‚ñx¿ÖA]àÒ -Hb`ô#ôbÀ¡\ ^yÈ)D£íg­w³06|ýbõŒNm‹P`f&2E%§{ EÃ{S0ädÐìÓ3é)FÓy‘Éù!Pô»×©ì݆æmOÂô/O&“ïòéûýh‚´¹@Ò*-¹.–>ÌÍÓ$îlÉmKP§YÒg5œž¿ÞßPCk-©Ç¦ ç*\¼‰ÍZ&³£…ôøÖ_˜´Õ&¥’®F›äLX§?±o¸-X«œ®=ñ¨8ô‚~ÔóÁô­ñ8 ¨.æåÜì±+ëÙð"õ=`¦Yδçßœ7W@áCe‚+Ÿ37qåã¼®TÊÓêµw¥ª;?Fúzûä0| ëïëî‹/™|;‰ Á«õÍû™ùôܘú:Ãýo›) ƒDsþ =ìK-õaÞé´¨\ÅgWñ„Eá <ÕËÝÑo4Ž'ÑAuë@ -ŸÌUw[¢¥Ž%R±Ó*ã·:Æñf a¦‡£€ܱ@4ÊùH«Ö¥öUöµ¨#–O³›Ùv5*©¥Î“?$ÎhÖt½*ú¢²üc‰¢¡¼Ò¦ø ˆÖ[îO[ñ“íMã¯;/:׈/ŽØŠ -ýË+a´ê“F•ÑÊüm8’ë¼5w8àðdS¿iMfTöí]!×I¯çX6›œêÆJèÂÓx#ü»DúÊWGœjoL6Sssf#S"˜¸ -©Ž‘ R{:D¢qYõdü•_¢ÓÒ(Ûü0WëTìÔ6„åTÖv™A©¸êØa¸ì#I5ÖDöÐ1H¼¤_mÊŽ—AŒÆ‡à°Ÿkßwé„XÁDÃg]ô?ÇK‹ -endstream -endobj -1552 0 obj -<< -/Type /FontDescriptor -/FontName /UEIZYW+CMSY10 -/Flags 4 -/FontBBox [-29 -960 1116 775] -/Ascent 750 -/CapHeight 683 -/Descent -194 -/ItalicAngle -14 -/StemV 40 -/XHeight 431 -/CharSet (/asteriskmath) -/FontFile 1551 0 R ->> -endobj -1553 0 obj -<< -/Length1 1376 -/Length2 5989 -/Length3 0 -/Length 6936 -/Filter /FlateDecode ->> -stream -xÚUXÓ}»FJœ ÊèF7ÒHKƒ0@Ç6ƈ ¶ÑÝ) Ò J(ˆ¤€ÈKIw#!‚(HHJ·gÆ÷½çýι®s®]×öÿ=ÏýÔï¹ïÿ¸Ù M„T`h;ø4 -'$ -‘ªé›XÊEDÄA""bnnS$ÎþÇ à6‡c°H4Jî¿Ô0poS‡àð8}4 -¨ãî ŠJɉJˉˆÅDDdÿDcä€ê$ ¨ê Qp,€[ íêA"pø2ÿzòAù¢²²Ò‚¿Â*.p  -Aõ!8¸ ¾"â 4AC‘pœ÷?Rð)8àp®ržžž ˆ „Æ ùžHœÐŽ…c<à0àÏw!.ðß“Ü@S$ö·Ýmó„`à@¼Á …£°øw Žâ‹M´õ€®pÔo°Þo€ ðÏÝEA¢ÿN÷'úg"$êW0 -E»¸BPÞHht† îèp^8A û „8cÑøxˆé ±Ã~uÞQ1Bðþ Å ]qXéüsDáŸi𷬂©¡]\à(ð³?u$Å_»·ðïÍ:¡Ðž(ß?{$ -fÿs˜»«° -éæ×VÿÁ›ÛpPRDVJJBw½ Â?Ó›z»Â9Ešñøûº¢]öø!àþH{8þà‹…xÀ8Œ;Üß÷¿;þyˆŠaH(hG Q€¿³ãÍpûßgüò1H/ XÏ=Q ÈÏÏ¿Ÿlðô‚¡QÎÞÃíWXËÔBEO÷Öï‰ÿíSUE{}…ÄE€B²’’@QQI ´´,ÐÿŸi !È?mˆü«²Gew‹¿¦uìñ‡|ÄÁüg®»h¼¾ Nø÷ÏË_.8^>ÿ¬«‚¢a?u&&)„`0o€žNbø}ûŠâ ƒ{ýb2P„Bãð!@üŒþ@{4ðs­âb@a|ÚÓnûéü#=ÔƒÁËì ðµÿuþ¥i8Ü LO ¡òaŽ¯ÃŽ*TX<…¾~úÜhÙ%‰ã™|æë w9SsÔMõ¬ôz_šáÔˈ‘ ?Í£A/ë–ìà¹T­§8ŽÕm¡ÜžãÝü& ÍŒ’N‹^ Þzdtƒò˜ÌûØbâ,\ºU|¹l©à¼ »l%»t¾8 bOeÁ=TÉiZ#ŒµdçúŒëµ´¦Š§Á€ÓÝMµÍ†Î c‘ñ‡ª qLÇÞ àøŒÞÙÙîìÎŽ4ñ<ݶr©ÒZ&:öœ¾¤.&úGÙ:µXUɵ—)‰LÏ]"xæˆ mÓ`Ùºw«8Söå‡[öîÔÞa'Vf7MêÁüí¶;^Ï\q -¦m؈ʅ&Ìné¬òÕ~U4IÅûõHèÄ7ìÎKØ›³>RìR£$£Èe–ÿÐ_çUßâhܨ‚€E) q˽ê)ýŸÍê£ÒvèáU¹OJYA«d|nQžGÍÃRÿ2™V2ÝìXÙÏDzÍ[~ß -twÏ«æuªy¤ž‚«› ë>Ô3n¥ nDìÍñ%ºí¤G|m†`)žØÀ_ÅidÝ*Ê¿ýÒYݱY4ô °¤%©s¥‘çÙ×ÎBëÛqu³ŽYÏãk¿Ãœ&û6û®¦Þîþ<ÆaUÍŸ—"y‘ÆpóC‘£íÀ|ŠP Ò7Ÿá¶©«aw0>åk[n—î Cg(ê&nÍ=£¸ï¹P¶Œÿ &¸jö6ˆ¤­Ò;ѪBSØɧJš}çóðõ£Âƒ‚N‘ Ï—°<­V‡nI6žÍïÁ%1$!‰bŠ -2›Â„¥bû£½i=ÛUë«üÔsŸ­êp•¥*âká&¨×¬çñ ªp,œ3 G?}¼@Ÿ@¨±Fóì¾zž‹Ú1vÐ!”•È¦ð? Ì rMâIÒä[w‰Y’Ξ&‡¸°ÛÞNŽS\ƒVÇ8Bns\ýðÞµ3¨ljYëæÙ¹F h›r\ÎÔØLªî“ÕâÈj4Ù0c³©AQ› òÒ™CzrEB¿;$tˆÛÈ×;Tyî_$°ÁV»dJFûF9R1HÈ}Nf¤>ŠÚ‘…l©J5ÒG1 žM+œº}fm¡Šá?¤ýìø:ÈYÚ[ÁUõ-X^ˬtìÜC-À*"1z+KÌ«êiI(ƒ'·±}0N>˜FÔËL檥ÄåZµodÔ.Ά8ƒarÂÖ oÊIeêÿÈl¾,þ^­Ýœ-Pí“U`¼ÈsÝQ[’í¬ô4µ›žÄHyò¸ÝePW*x.GÉf 8êa‰Á -×®_o·±Á­bó‰rÜ}Ÿèø?& È¥)™~Â^´ìúj9L¿˜TÒlÀ]@1Ùv Œ6Svè—„ƒ¬ëæt Œ -¥0W­>Æpžuõ­ùtž˜¶í±+D -x3بNå¾ñ:í)ºw³È˪iàˆ-ºG6SXT]ðù¥Ç­ LQ–DÌ×óȹ0ÞÏD¶RC}ƒÍ)4Ö–.ß-•ž{×g²k%aܹIÔëº3ûv? -÷k^ƒ‰´å5™«€6gí„AÍ¥zL™W÷Š¡9wÇjâ–)¬‚ |†ÉEÁ‡ò‹Á®¶+5w·\O‹ÝTÕ4”¼SÑG3ô¼#粩ï%·?tªö+XÒ$ 6Jé4¬Zýp^Ñ®Á"Õl›@Ù¸R7’;û‡÷¬ÕÿƒEh[t_ºÎJ#ÿ}gÏH.0Û×­\óG¦ÔåGR7¢ìio;n|ú„øŒhaA áËWr¤k©žÐn¬²è–ìkÞ~˜|crí0Ót—3´~’¦ä¸Qd1¥ŸùQP­oó•Û÷‚¶©(Ýò)Óûˆbˆø¢,Z‹ì·}]ŸvÔŸ½œäyíÀÞ9ú2:nj˜yÃí‡-°’ÀR£{J¡²ðœ$@Ú¼o|¼#U5Åë,d´‡X_]Lj„õt±€Ù»ñV.'|=2ŽšC}(Oë¹³›ÙÊKPŸa¡`´öÆòÜvê÷·*TÑÜ]ˆe¬süx¼¸¾8‘f|ÌV^¶ýÖe›'áõëN›µÈ(‹Ðë]ÐüÅç’< פ8ÎL>Z=PŸ,;8yq85Riùý) WçTÏLYÎŽ:ƒ¢ç´ñYpWU$䯺¯2í -†Ø¢9þ£8ŽgRRœo=[‹ G9\þ3RgÚX–" -—Ówºaí\¤üIó£­¡|W-·I<•¿´5‰;€ÛÍ’;ë¯pF4ï…'ÚA3jüMì ùõÌ+ïG,Âk|Ž¡„’ö¤©Ìµ†py*]߬ˆfPaäs¼,‰§.5h%­Q^†*Ž&jˆ]›™Ðβyc¼ØÕ|«;±M/Ý^îJž(ö -‹A“$Ò¨7ÛCtNg¯`E™|’y'™ž­ÁÄ{`DuÝQÖºÕÓmòéÓYê§Ã‹npϤpÖ%HÆVœ*hšææ9¿q—軜‰ÏÑOËŸ—¥ÉµÞs?]|U±ôî­OÍÖ™z†ç¼#æâBß\‘&‡ÍB‚Â߫lÂBXR£øˆE= oòˆ9°Æì¸2ˆi3ÜÐ=ÏUåñÔ ídŽ|P‹IÖNYÚ£KŸnïê9¾ç[Ùô&$µ£‡—¥¶Ž¸tòm½®O“‡7<±ÁÉd/±›qE®Fµ@Ðj ~§¡’%GÉF±!÷áØ+Êûiß‹çD;ßTA42^ÓÙM^­Ä -¾>„J'GxO2ÓN&f@îÍ7¥<å»ÛwA™ëuëÔâc1’>†z|=bÜ#³ið}›Tª°4Dáw±Â´¦{oø&ºÈ5|c2&¿"pê“5íKÓfAJ–{b\Èž¢“·'ÒIè -̓>Qm7×%2gÏ"3-m]rm·|ó‚J›ú46ÊùÍ7oh±+coFt‚?Â#` kRjÃs|IeV‡'ŸõdÇî+S3Yº)> dòj'¾!œ“²’—fðQ&»¼ø&)‡bæ—“½ ’b{¡×A¼´×yô-³ŒÏzageUûì,9ëÃÊ›4ìQ„nœE÷:„šÜ5ŸÔ=Å}zº…üN,Ø‚ä!@ß«–ý~ ¢ˆµ=0ŠÆå&ŽÝÝø&Ñ>OѪùr„Ëêž_Mj~@·¬ N8/zð#»´$BšÀ~šFUòé‘”!õÚôÁ½>gY® sFÀE ¦ºùíÂÁ]MÖ6T¶iÊ7¬¨‘~’Z\s¸Ï0'>[¢‡æóÖÑ-´Ø=L¸½rÉD±Øu*Dc¡ æ&µDÒ‡ñ†ûœ`ù'_–·µ¤fÏ¥g/LO -nú/ŽlDz÷'9ϳ¢cŸ'%*|‰­m$Оϟ¹a„Œ|é+Ò8i]ç[H*±A<èóW~f(B’Tlz™<¥´H‘xN(Ü^¬™x-¤>+w<:@X9­Ë{ýÛă æcý´HëåÚ|ôjØCfá–‹{Í}‡É…¦¨ÄÊ£ Üx -šbú‹>Šg}oôš“2 À¨ÒÇõDU]Ä3¥ùX5Ðh†r…ÙIC¥¾mÿû[Ï»Ÿ"«–Fj5®(«™HëOE>¶h¡Zɳ¦/Œ#¥# -7)ŒmóÌðxç}ÈÝR -]Íãšä^ß´(ŽUð°Æ~V²­¡àÆ™6מ®ìÒ0ÝPØêó8½­ú5µ‡)ôçF,*ý5—ñù0Û])l¶g—ßþÀ¦oå…]ÖÛ²FÔ稯Œ7žÇî_bù4ÙÑQ¼Ç`ªê:¶ Fc½¥%™Ô©Göu dNʸ7ô­í:çV>t4 fÖÁW®²»{¼Â¦úÓbÙRc˦-ïu¶¼¼¥¹D vPO䮩R¹CôXŒãý-‘5tÙW›ŽÃ3 -&ÈŒ—(=GžúqxtŸ›n .~¤Ñº\Ô_f¼s9íiÝ@]¹ËÙÄaVÕCuõUJoÓ «Ÿyp±Õ/µ3îƒ §?iZ3[ûþˆ!kC“øjSNCžŒ'ŽC2¥é*ïu¬ù$þãT¼2÷¡ -éäZ¹­wšœ=ÚÛì–g¯üeÂÒ‹«-˜ÓðI}†ý!-ë}FNäɹ‡¥ê{òëws<:œÈåÂMfú -¯ý`ˆ‘3²îö›¡Xˆú`*^ÞŸg„¼äG1¯•· ¡ÝU!œCÔ…@ø›©i¸×„w—¾ª_{®ä?dEr¥ú@±#Õ=÷~HƒÔ[„à•…º:}3׎>f¡JЇÂp—|—ü×b²r§M߱ʒÀ=Ï¡-K­ÜŠùðꤹÔÜDqNÉz½04“§Eü”6™¾1DÙà!æ)éÇÊ'åÍ=Bœ®[ýëei:Åt@še v²ªÓ[S?$,Ó? ñ -IXÛ*]šµO[¥8t$ã|”\ïìé›òÒpˆÖ]ã“Jôγ¯Ü)˜OÁÑzpMNE3„Ù0ÃþÂhctë¿2%w~>|TæYh—¥ñht¦V4X]™‚í‚×ë*7”ªRã^2Á·k8Îr“’¦‚úýde$ÌÿjÛÑ{õ0º Ñ’-Üýø´vÿ¾˜ñÅYßdýŒÅübµ9ïùILØù5ÖBÂ6Ô¬WnòZ‚]†J 4&¢­"uísŽ -s¥.qÒ]ø Á*”îIX@9}5´„Þ¿ÚÃÖ7ó:1 ¿£µ9çIíȈ×2¥"n¾–AáÛÂm`®q¸‘¸âº/ˆf@IEõ)6]Û¦ò'!~Eo»ëÖDíjþæÜŒ•@Óu%¾«ÛDc¸ïæÙæ7ty„d¦NÇÿ¥TRÝ#éØYm¡Îç³v®<Ó—qª!Fœç÷=*î]IU}ÝàtÊI‚l‰”7Í|U^èGéxWʱ’AÁ¶uÙŽÊ@««"d91ÿ-¸kÈd©ÈêKÔ³2Ê©–ÿüÎŽRû‹ASÊdŽâ;ÙQ¢b4õæ튋Ìu—ù<¶üþ¾¤ÍÒðž@!©WÒL°¹ÊSžZ]Hv;¸Ã€[r%Âa0¢y¢ßxã–ŽˆbÆæ0!V¦Q<Ò]$N-œ­†8ðeNPr•<šMŠÝ"ýŠkÙ{ÜðKêí‡C«­XÕFYKäøä®èU½ÁkXž‰±wµçM‹ò‘Þã½q6¬Lï,Ù"x¯Hïw Ѽóp5¸ltÈ°†x¿ú0¸Ñe³òXµ´?MþNô9“êÂAEÓ_÷-ÞÇäIØr­Í]ÉQ¹‘UªÚ jÌ>¥`Lg‚†,Okºõåzä‡2^¶¨j¬%Ð/ Hm¶é"U‹î˜ÈJûxsü¥ñ #øýu§`§úöda’Õñ¤£K¢Q®,äqqç{ÑO¶{̹/íP¿O6Ý7']ÜŸÑPDö¥p¯$EéÃIŠužaçëõ/ jàÔj8õˆÙõñ/'¡˯Ðz’b>°w´LpL‚ë¸Ñ;"b¿å<•m<ÒýB ›Ê¥­Fý8…+ú€Ù­?H_q2U{‘´nðÔÞP•{°~XˆU@#¹VR¢´s¹»ÏžL9ž«´Åešm§Ôså³+ úsS–ù6ÏÒû -:u†ëµ‰ÕWoé˜ë[ˆ‘P\ÒYTI°÷»!÷B»F•¾_àú‰f–$—I}tVˆÍ:´,;©þ¬ÜNË” -}ÃõŽ•ä–Àñ.Ï0À³_€ì>HÏÝê]ù¥Qí1ÁÜQõ.†búìõ†¨0…9@èdVM+IN?rôÞ‹Üá¥ÈòVa›ãù>¿I#ìF- :Ù?c1×àÖGOªZFÚé«îå%ÏŠª…ó -ÊÁ„V%ݳ*ªC[wªû±8¶‚e•A2†îoMɲrGs?`sÅå'xÑ´ž›ïLn){ŠAÛ@£oÌuMX¼¨ï šUÖ\èÕÿðlŸ¦ÿäÿ„n#³ý~K7½×áã‘àIݸžé¹ÔeÛµ¿zöø–áá]vœ¸¢ÞíÕ—J¼.yÁ¼pœ3‰†¸gG³^z¬´x(L¯Y׉×=qw‚ð ½Ç÷:)²¢½=›KÕDÉN²Jþ Ü,Ò€Kå²* ¦‘#¢ü©ïÛ§·KæÝ™~|=!½™7I}ÜωXΞaäiv‚-²ÔÆF%´>”Äð™lr -CMo’ª-”μaê¹½/Ór©Âà~Tš¥W蘣d2W!ù^:À]%JølU±¿¨£ ‚A2@lõæ¬òîîiSÕ(Úv–­¦ßŠ¢º ‹¨$ß$ñ+x¥ÈO¶Ô2hgÞúWõ7m½vwÍu¹Ö$oPž„â-ÀÄmÇ{ÿ¬dŸšÍ½íÛd1›žÉäA†³[«—íTvk -I 2®*‡Þkä@ûVV¿~wÚ)nbh1?µ/kîØ:Kž×ØcM¯¢, „ȼ³š½«yçÒ#{Q~H?ž+i¥úøº=áþEcOäú[ §î,ìŠ*¡k\ü‹ªšGÁ8Ú¦ÙkaØ‹k9nG“P -$Åe¦¹ôÎím@óE|^ ±Êê£ëÍ\Ÿ0A´ßMÒF#8¬I[k&µ%Ì9‰CO«IÈDÅ2Kºt72=Œ{_±N1` -ÿ&l™ÂúÆÆ6ýjLu²×F"f+ ën9zjÇywJ ya0Ý›òz»×L®­ü.b÷1It£ú ÜXêê™vð°Áó«cÚƒnÕ¼%çrJÝY‹³ïà2‰Ý•˜â÷oR–Üoð}®uIM7øðÓæ4û 8Fž-Qˆf‰OY4ÆqÞ~à‡…iÃíóœëY7r“ˆÚ Wî &l¼}®'e²ÖZ\¿%ÁÎù…÷P5X3A‘$"yõû˜Ü[7’èýÿr> -endobj -1555 0 obj -<< -/Length1 1378 -/Length2 6048 -/Length3 0 -/Length 6992 -/Filter /FlateDecode ->> -stream -xÚtTTßú¶”à RÒ5(*1t7R’Ò’ÃÌÃÌ03t"HK§ÒÝ!¡¤„H«¨(-ÝòãÞûÿÝï[ëûÖY뜳ß÷ykïçÙ<œú†üJP”L …Äñ €¤*:†æR@HDððÁqØ_3€Ç†ÁÂQHéÿPÁÀÀ8¼MŒÃãtPH –($—’€Â Ô¿€(Œ4Pì‡u€Z($ àQA¡½0pG¾Ì¿~¼Û@!)) ¾ßá@%#:`œ#Ì_F Q8 çõ¼²Ž8ZZPÐÃÃCì‚@aäoó=à8Gà†q‡A¿ê‚]`&ðáØ?vC”=ÎŒñCbñnH( ÄjjõÐ0ä°öðïÞ…„þîoô¯Dpäï`0‚rAƒ‘^p¤ÐŽ€õÔ´pž8>  ý#°(|<Ø G€íð€ßƒjJ@0~À¿ãa!8‡À¿Fü•¿Ë÷P”‹ ‰Ã~õ§ -ÇÀ øm÷üs²ÎH”ÒçïÂŽ„Úÿê†4FÂ]Ý`šª!xà?6(’a®@˜'ÄQðWz#/4ì·Sè—?Ÿ…Ú㇀ùÁíaøÀ v‡q7˜ŸÏÿvüsBáÐæGþ“o†ÙÿYã÷Z€ðÜ‚~=ÿþ³ÂÓ ŠB"¼þÿ}¾‚êZ&FƺwÿLüoŸ²2ÊèÃ/,ä—“ - ‰Š%$$€~ÿL£†ÿmôŸXM¤= -(õ§[ü6ý«c÷¿àý+ŽÛÀæÒEáY òþ‡ä– 1ÿúÿ¦úïÿÃeù‘ü¿RsC ~»yûÿ7ØŽðú À“Ö ‡€ -/äCMaD«ƒÂÝ\þÛ«‰ã… „tÀ“™_HT$úÇǪÁ=aP}8âø‡2ìÆ¿¤†€#aú(,ü×Ý‚þˇ×Ä`ñ¼üí‚áåóϺ÷ô—΄ÅÄ` ìáé$,&ô  -óüÍd  …Çñ3úíQÀ¯c -‚±ø™áXgü)8þrþQâ†Áà…ö›øêÿZÿV5 æ ƒ¾|BAdž8ÕªRbñàÿ1pyj¦5,Ƽ;T ws<ËÇQ›4M}ÔUÙZÎØŸ¬ÿ¹8dä“/Ë£AOË7Ï'“42q—îuÏ)oñg÷ï¾q€±CQÌCÉasÔ›±l”¶Ä·âM?Ktˆ,V,ä·bJ­]€TœI,¸(¥ŒÖUÂsNî\Ÿ¹%U4 Æ"ÅÍHÓxèœ0}¨ÜÉtì5gÚ÷ýû»ço»“EvrîwVŠ—‡Ð2]÷ÖâÌèëa¢‹}®Õ€½tSYì@¥81æS¾KÈÍI"[‰ÉÓ±œ·M±="nuº*äzþïëÝjáéâ~(Å,F^Ž¢Ž±Ú[ê %IîÁ];t Æ«1jü•½*Ó}–Ò˜3Êù8Ó&ží~îTį́Û|¹QzŸ;üÂö§í‰G2gk§ÁGåÒÍû3Ç3dº¢[5q-Ye㺤5ØÂ%´ ^Å%±I68}.ÜÝ8åï¼þ-”Q-zUy¾!–w{%…ÙÛGÊ6±DùàÆe]þ*! -úgCVÆS}ƒcõ^cÖÔ•ÝÔtS_´‡æKújš8ôÞ+QílˆŠ¸¤$úÞýÞÔc'É#äô‹]Ü÷ë@CAUÕN™úT1õmlb CºxÞÞÆD§ÐŠ˜ßPãêqIÙTÛzÞ£—Ý-öS{n«¯ßg!«"“ȵÑ5ÁžÓ-vŶÊFŸø‡Þ‹¦—roË<¼dèF}$ØKû{3E$wÚâ$¿U;D…ÿP÷ênÛa½DßÖ8Ÿ•[×ÍDÛxîßHäʬ5äLNÙ,²-ºt35‚_٣ΡÏs{fê>뮧¯[`ß6kF"ãêðKÄxQÒÔ6×õT¢‘ûŒ¼ç`…¾âóòš&Ûk -ìªÎŸöQ!¹0×ø(m§œWFÏ iû‹mJk¤˜Uã6¹&J­Qðʵ¬‡ÉàZ$UéA—¼†dþ™Gó0æ’rWÜÏŠÉý˺Q-ÓvÞ÷¡ºœ?ÓuŒež}·b=ÉLtfâ3æ©c_[€ Ÿ¾Fqo® p\Î ýñå‡ëBujVDþ~‚åÖá+ÎÆ< s€œAC }½Š""O¢Í4B24ß$æN¤Þ:Ö%cfz¾Â›!ó‘×a‚_þ(™Œ—:¬]ÒYÍ_Þ¹•ýÎý»x,ÚU¦î¡/öi· [Ru¢D'û¹ƒä*ãî€Õ”Ÿœ4mëÃå×o™Íý—1TQš³,;ùîæ“gbÛ^#–E;SÓ¾k¨dK§öyv#±'Ï÷Usû afÖ¼Z[ÞEõNMÝx?8y¨3Ö®2gînÔQ ãÌηÈVësñ¸fã+>)T!¿ö~ç±ÖâÒ;ÿ²u3³ creeŽ'¯ -ZõM¯ݯ×*2M ÓàÚÓ”r¨î¹‘Ž–,úéíý#€Vs¨hoW­ÑÎ âS”ãcíÞ„É ³”£b5)˜ï"ÓWýl²H4¼ð^ow2xFèêmrª¿Üòî«r&%@YñM+ç­«/^ߣù~µ²Rbïujî;s/-HF{aè ’Ç¹Z«·å†)¥vÇJ†qýt)7w Äúræçp“rû£¶!Úée¹ÇNèm)³Ž„ÄÑ; -`B{ØC+Âq‘žšQRŠuTúG,oâ”h9´[;ÜÇîÔn¬ù#¾ì¤¥í=ývâÀ|«VÖ30š[ '¨­Aëëb†äm¨Æ8›ˆ`:y‰˜–LRÝ=*6ìº×:6X3ÊWJ‹ZüÖbôü~€²RÓ© aœ­è'XGʦ‡jæD%•²lPPm¬”ë?µÓý)”Dhïª -×õùÏÂ}zßã¶Ö4ìH1á‰×²Š‡Ê\N_ÂzœBoõxReGÐÊ ZÞ.çžr”ÃßMHÐËÙY ¦"õ<< ’ÔYí™ë²”׿Oï©Ièž­Äj¾Z_¡r¥ÒOÂæöŽk׺ˆRvh²Ï—HÃ,Ú›S¹Ô¨E ×ɉ7†DN¬1EÑÍ®ô37ô?½~¶¿–*E‚:b’5ÍãÓ;û.¹ ïªÐ¿Ä‡;ôJ¿64`½B¡¡ë,)AÎ#J•öÎIz^”gDyœ|´³C=è—ö:|7â( Ä‹7Gžo1Ò<àÅ_BäèNæ6Dâñ|‚Ëû#_(n°ÐRþg¿t¨Ö$+Ùx:Òy¥H-ñ©-p{‚·À¦ÑU¶ãˆŸ·j¢´[BÕbì\8Û1·Ûë½±jÿm*ÿtþ öÛ5ï­… X{Š3:wo¢V*Kdþ‰)Ãâ¢^¦,q'suóó8dSFj<\ÿgu¶ Â( ÎË#€9ª´_])¾BÂЂßýh¤²Z|uç¾™<¢wÆ&•ÅÂù"N¶–yÎu~áéý¹%{*:n‰cûP“fNò~béÑãU»T·” µI›'añi„mC]×£@†OdYÄè1¿³íËÙ¦õ™¨ÒÉ#ç£Z¤™JÏ(xÐë\”d€7_ŽmÌ2ßcæò`b\•Á²1 Ž©=SyÜ6ç÷®ï ƒJ„ìGð­>%xé‘Ø,ë‹jÕ=Ïîä‘>6å2m‘‹×ìg~×WÇ€žÎB9dÄÞÛ(¬\ ]U ÇÀÞ|w% noG²$u‡sØn^Ë,ÈôÈM/uï ^g”`îÜÚgbâûöµØ"íA®È~êt$q 'Ôµã¹Ñéì|£¾]Šó÷ÛgOrÈ p}ŠƒË¥óÖ&-}f¬ó`uõ•2Ù, Á¹oŽRkå|·L½bb|`9fh±D½Üƒ„c>ÏÁ©•®½L}Ï¡—;[³æU°Zæ=„ÙFA¹ëRÞwæ>Í©0- È~È¥{HÇ™bR§çÙ|¹––v‚#ÿø¬¥‚ºœ2EFç5«cä‡ûê~ žWG’YÐùªtiZ©’š„Ä&…ÜÎ_WÆÈ©åû#]ŒãÒ$á ÍjT%KWg,±PcŽÇÉäŒÂ§jŒÅAþ¼É| ›ÐvGa³µÑ×TKÑtŽ5ëKNi~•z´Êea|—1«:g¯¼;¹ì2µÝÛ—7l{µ¯ðæs;Qôj zî<¨z”g«ûÄß?‚‹KÄÝàÐþñ¥s½áŠñØ;ûgeCIƒ^dÆMò8v>‘רI½º˜¾H,,¿ ãIÀUȼ]ͬ´—kAê ŸHr)0ìCU/iÀ¶Â˜ÖÛÌͦ ¶ŸýäëgÎÔÓ =¬§üÈ´G¯°L«-CüOÉŠOnd©ü…>ä×P •å¤“D^táYL§ÜȘO„Crì¡žˆ–0ƦkyßÉlŽVw90NìÄ`ãPÆ)²ÔBêlÚ²vÓ­“’Dkì»V—sV@2qŠ¥ð-³Ùó•qÅwŸâT¨œ—ǪÍûqfÏ”#–jOëódÝÅÄoßGbhûºd.'8ÐüØøv˜ÍÙôº•êÏ/ÔÃ?NöŸýÔ"»¼0–œ‹ - -ÅÊ ®vòwQÈúü¨t!|¼šFõä„7»‰KTÕ9 -Ä&ömO)u*"j*R¿3讵¹Æ¨„æÓ\ƒÚšSN–˜©Éžß÷(A‡§²3ÑæfI‡,<\"ûÇS¬•DÎ*Ë—fQŠPžéóöÖáÓs8-½ÑL‹ ¹!kˆu`ÀÌ ©ë‡ Q=§ú¡i×#ïp½¹Iþ+œÇRÁµ#¤ Ãå¯ÚÀˆ¢-p6·nl¬­£ -(Ã%÷{EþU\R¡ÿŽ2ꨧqÔÏP’,e‰m7Û`sÊ3r È6dy—ÓããÂü—í^•†yFÎ$žùæÑPKsÍQ^úŠP×];RHKMo–Zöž²Œ/ ϼËû†Î>}óžW\áåÏ5b)³Ê!FŽµé«!Øð¹ÃHó ¢5n"¤¦SÍBòC#é¬úîqp³¡ÄK…Ô,Yfôìgæ ®'Oè.p虃[åµóâÓÅãíYJ¬ôx}ÁA¸&Çîsòõhº1½>bVÞ -§Æ91v¶çW4x?iE÷]u[ñ; N–™P¬WµCýFZ]dþîƒ Œ²©•›óÙH˜½ð&-½·!……ãWꯜ½ÛEKæÂ#¿æ•žÈ(ů´¶0ßÄ÷ >MZo”ßGåÉ·rn«›6P¾ž’.Yp{¸|k<Ý5äMæÚyÓ01Û÷w¯álõw‡¬¹|* -åUÚ [>:~)¯IUÿðU\î‰ãø'`}‹xÒ“ŸW`-A!ÆQ†ž›“ÀT:†IãJ#üÎËòs;šü…KÏG!Ø-•x©D®PÌËYžø3ÞÄæ@Ýf]k“ñf•WFÛ¢oow!á[뎡´d=òH©/ÍØUeÜSZ)BqSå³57³Pæz·-¯A¢¢ÂJ&ämòF’Ô—¯H4ÊÞÿ”!ü=} â’ú’åLˆ)#ut¿rÖÈgáû2u;¨rÂ;#Ù×æï7Ê‚¿œXUö®y.З ‡¿É×@É;t¢¸•kÆ7‘wݯ‘,“¿wÓ”»çÝ÷ðPNêÆΪûõCkÓ·å°Á.óµ@òµH8Û–8IãÇâ´ÃÃ+ío³£s+/ ñ¨Õ|÷~³' Ç¨JqÂtýÕÖÈË{%“ýëJ‚F•K‘vZBWZLBFêŒo‘ÐrXÀ-™%r®þÈþ<ªä…Œ7úY)O -Õ\“Å -Öz8ï‡Ù÷µÐWAÜ, o_:“.VE^ÙT }’hsÀ«Í™ ùtñ¤Ä}é¤6Ý•ÿê±ãö00£6‘ºËbâã1ÅžÁa m*á~zÖßÒšÿ¾ÝÎ#„r»AÎ@'9µžzúQ[uª1ö5LxtwS%³uÄW‡ÍÓ zÀXÜ[Ä¡;–)ä„ìoÜfMm>ebrUJ­&½AþB‘M»E¡~ûˆíþ ø­ ÛBÁk¡)áAÖq[ ?¿&0ÄNË: ªv|ÀfŠÒõ[»¥^½XŸØ¡ø´Ö5:ÃEÔ S¸×ä7˜â=?Ö0­óüO1M•v—Oo@f¼4D iÇm”sªUŸ)WبL¼’».ù³9³ê1¦t =I²Öôo ‘·¿•¦ò@Á{?š¥ð´#àæ^|ÖIPJ‚¥“0—>Xä½I\l£Q -C‘ñ „*ð‚ø?^OS!æõTÙ*_²Ä¸ö–Ðë‰im…¯à„!ün6 PÚë\ÈÅf{œòFåêu‹°¨v­ /PÊQ­:ƒ«ªT¨W®ž¾“lü>*ñ8n¨Zy³ßR¦tººš¿i&vWɼ t¼•ÌÃ7°‰Xz—$°½l X('Þ6ïüõfáÁWZ¦Úy0\zÄØàñ‹ ò± ‰Æ–Èr™ðj9sðÚÐ(ª˜V«O÷ ¹3bîYndÙ‘_×êlý„`¦u °j\n”5î_L1°¾º.Cíw?n¡µQÃ>¬ÿ!€šß -endstream -endobj -1556 0 obj -<< -/Type /FontDescriptor -/FontName /GJVTUN+CMSY9 -/Flags 4 -/FontBBox [-29 -958 1146 777] -/Ascent 750 -/CapHeight 683 -/Descent -194 -/ItalicAngle -14 -/StemV 43 -/XHeight 431 -/CharSet (/asteriskmath) -/FontFile 1555 0 R ->> -endobj -1557 0 obj -<< -/Length1 1894 -/Length2 113985 -/Length3 0 -/Length 113889 -/Filter /FlateDecode ->> -stream -xÚtšs|¤ÛÒï3ÁĶ;¶mÛ¶m{âdb;›Ûœ8™Ø¶mÜì³ßsf¿çÞÛõ·VÕªúÕzžê~úÓ$òJ4Æv†&¢v¶Î4 ´ôœA;'#s9SS #%['A;kc#=3ÀРøéêèü·@ÌÆPŠ„DÈÑÄÀÙÂÎVØÀÙ„ êh3r028˜9™èÿŠf…"ÙÙº~F›ÿµ“³³)£½3€‰–™–™î“>Íœ84C€©¡!»í¿HDl…ìllLl ÆŸ MÌ,l¡èþ*\ÂÖÔÀñ·ÙØÅþßKŸÉœ>ë«þÏFZf -Àg¹Æv¶ÖcS(:Y;çO¥òÿ¯Âÿu±¶–5°ù ùÛçïVþêà¯^ý_þ6ÖÿŸˆÿvV3±03wþËñÿÞHÂÙÀÚÂHÀÖÌÚ@OKÿ¯×ß+N¢î&ÆòΟ»›X;™ümW±56q´¶°5‘·s²øëˆ4 , ÿµ¦lnadekâäôy^ÿZ3±5þo ŸMþ—:5EQ5i ªÿçEò/Wy [geûÏÿ6(9;ÚY™¨Y;›ÿÛô×vÿraøÃ2ÎŽî­¿”1|:ÒþóNç—  ;À‹†@Ãô)Ÿ‘ƒå³n6ïÿªXÄÖÈÎØÂÖ ÀÈ -0pt4ð€úôþ$€ÀâS¼;ÀÄý³]t´¶vΟ!{go€©#Ô_W+ €Nà/ÓßÄ - üCl:¡?Ä þC:‘ÿ=€Nô1èÄþ#€Nü1è$þÐgv©?ô™]ú}f—ùCŸÙeÿÐgv¹ÿûgvù?ô™]á}fWüCŸÙ•þ3€Nù}Ö¢ò‡>kQýCŸµ¨ý¡ÏZÔÿÐg-ÿ!ŽÏZ4ÿÐgœÁúŒ3üCŸqFÿ!†Ï3¦3þ~ª0ù~-Ýß7̇Oa¦>…™Z¸þ#â¯e;Ç|º˜ý?Å›ÿ™?Å›{Ø››ØþÃãÓfñü¬Áòø)Íêø©Íúø)Îæ2|Šû³3Ëg¨íç ùõOµvŠù ¶û_ËŸbìÿ,nfoàhbkmbú§!Ì ÿcuü_}bþ¬ÚÞÄÑÂî½eøì„ß+ù/r1qú×Øø·‘‰ù/£Ýç7ü‡ªÏÁI÷Ž2|6È骿ÈÄõdùtwú¼ÕÿS˧n'k'ólñYÞŸb?G³¹£É?ŽñS«³›Ý?>÷pùs }ætùk¾9Ù9þ³aŸ§áúül¨ÛdüÜÔýø™ÕãO‘Ÿ¡ž&Ž§ü_£ÆÈÅñ³½ÎÿúðùœœÿfS‹Ï1mbânbµ4ogÄd™ú#͹={pLX«‡Q·ùÚy¸pÌÈù¢;Í1ÁDÃ2\\Ó?Ñ"ê÷ÖÁû¦K´÷*ŸyÛêH¿Íú(‚Y|>gE™‚"íáÃÍÀ èÐU"ý%Í™d[t¬õöµµ¿í}Ïý¥£ŒššÄ€æÑâ8›}"ëö5‹äKqŠ8Š£³¼!ôC‚ˆÃaš|lEªÉü~£›­á·Ç ´ö£˜^è«8Œ‹{dK惞E< ïP´‚ýµ;™ßáú4¦€•Ke{Õy+È­s©É‚” vPËY®µ½¦[9U:𱲈ôâÙèÒŒ0©ß -¦ÓUÝ>Q~±\ý¬Ùv=׌Â}…Ù~]4XÙ@x:¯>I®¬kÀAF ï%EJdrþ£J ì ‡ã%±Î$;¿@ã×ætf5,‡×ºxwûMئgEœá'–{δ‚h,é±ôÝ¢Éqiz°yƒÆ: `J^ð-‰S­8÷ÖÊ¢ƒ@”¬JM®݇êWyŠrïtïö‰64i¸€bÓd^fŒ›ÍÔr!ï"ÄÆ7íNw˜W™¿ìFÇ&6µË5BÒoË> ”Ž—ñ¨3,6!SDÅ7Âöw¢ÉÍs·½ûY±ÔŠâVÑ>7øóÆ<‰žï$.áQNÓ$-A~Óe»â§ôtªî®î¿Ü±÷µ߸rÇ.ç¤ËT<¸Úl^ÞÁ{Ã4ß:ß8¥]ײ-†[ú8DÞ’œ"«‡ßÛyà”åËbä -€Õ-DRØA¡Ú’1•bßá ‰Tغ÷3—Ãæ/“½"÷Ÿ_A„šª¡x²Ü9·A” -ÜYlc›—÷Õ†¢~6!:_yÊ•þ\Û}PM:–¦Ë¨¯xÏ(2í·ö°F³^ 3Ê$]S“VÊÿ.]I· Ú'Êà´t\·†aÉ÷]}[c B¡¶2Ùô-.3p#¸UN -e¾Ø^ØÕ…£ç9¢¼ç§tõ;-i'T Úk6Lù…Ãô÷ÍŠ%¼*á- D­Û' -Öt,›¾ZŸ1Æ•~V%ùn:$p\»Æלi’¢F»ŸfÂ[죒9—<©QýÛñj¿Å¥ µ¿RÅEEt.$u:ŠÊ¿<’úÚ>$ŒL·¨Gm&ü|d†³èsÚÓ^;ÍÝ~}²Â<³£r¿f»0—6 Õ±^Ä]„î +ÚãÒÌÔI²h( rZ‹E§ú¸7Å‹áûú:¿ŽdˆÆ‘çýxÞ;w›³–1Æ¢20yUû“¾B]]á]U³–=mÜc#L³y#UiH)fmnÆ1 ¨‹žcÒ(Aãgi>®—oj›ùëCÚs•°f-˵võ0†™¯©ûÂwUO]’ßžû?"«\")ÍLÊq¦nÎf”'('×#+æx’c5-@ä}N3¡êbÆoüì­.ú´mëÑ[éû|¹4‹YƒòH$Þ…_eáysjF)‰øa¦MLÂlím2ózwËÖêMfó°Á²HÔä|ö÷*ôg$Æ8$=[ZŒoÑB ‹…KßvåRYñ¡u­#e‚óZJ¸1>r6ó}‰)¿wù—±Å3¬èp3Ñ!Bæ<ÞÏ91óŽP³‡—º‹“´q4ÛÂû“6\|§èÑ€¢*dçwLØFÒÞ·;¯N¬²¼• ‘Åüñ§^,q¼ÕêÀ©o}êËüâa¨ƒjU€o åâhDÓ MkhƒFÚˆPs=2 ¡L8­Õtz¹"hÝî¯eܘ¦^’Ùµ›“ÉG OÖ+Î €•Š~ègj-&yp§šŒSꎎáq vƒÇŒÇcÐóñ·rŸŽ«%TäÚÛ\²V7 -ç·ÍË~•ä©bm~ÀT?æô6q°ÁVÜż!sÇN9Ç‚ÐåoÁ =SéÊ$O:¯ èIøsïÃñ צÑ8|ó´GÌâ îHlÓྷ^ÆáH3 Ž‹ŠGéâê M³ïöÔÐ4(t&2°Öw!µà#0æ7ûß´ç0E¸—ˆãéjTü½vžÊŠR°ÛÜ"ZíÃ˨iœÎNò}›F@FQ>¿¾$êËÂ2âÆÑ;/Ú>ã~¤÷¤ª“=¹K± “.žTödŸ2­™¿çO±%;NPÉò ×7,Z(D ‰¤Öã–!éëaðhÑîÆŒMÖ»Ûb–H̱òìëX÷wïZ“ïL ^! /Úš:郄öL»¶ŒÊyiˆÝã›Þ2|ÍÙo6º+Ùõ¯Ð¾µhûÞtO8—7´Þ‹ÑiUÆÈ‚ö,OÆß4ò>ÐIæ[Ô¹ì\3V‰G@çÄ\ßw €ZÀ8]}X|kœ·ˆ$‹Q„ØEµi‰›jF¹!v.²ºìW뱄´r:¸¨›ø§ -&bxP¯óWLå -©~d±qîQ·vÞçå)º‰Ä²½Éïè-H }0À]²qZú’Ø&(Þ­=ßWG ‡‘°z•Tî&§zò*HyÓÃ"ëƘW»ŽÕX£jnXr¨8*ÿ=1 -¸™²¿F¬ùs4h(ˆ´O®mÿö|ÙPqKÅÞdA~w*åð|Š!ýiudKô.t½D,º¬?7¨ÿÉfCmBðêÞÆJª“•y½†Ž{RCEx10ÛNÒü¥õA!XˆÙílj’'Q$jàŒIŽ@ጫ“ñÜrûhÜÎ=f—˜xHK¼ËÄ­h’_ò3¬ö²wÍ`ÄcÌhµ€6øKMR‚æ§r·“‰©ÇðJÿ"UAÔ[€©ái¬!èY¬þåÂ(ý- -)m;c‰D’Ƴð„i‹Á…zK¼oh´ßˆtoÕÞsz¡OW±«"Ž.m‡sÃÜ+hêM@nËŸ=e5¸É¨Oùð‹{º2Wœ¬™ä€ÖTfM”#)ßÓ{~¦ï¦.0Û‹`¨±´­: --ü) i°r£Í ä¯^~î§'´'TåÖÎ÷}…Ü˽‹ãpï¶>Ñ_ð>SN*³øýõø¥ƒM½|¸Ì™a^#y1o<´z5-KÑýîmèÊy‡°›S5–ÌÏŽ¿N4O -å“<1g…CrµÒ7w–qö…Ç'l;¡Ǿ4êMW¬“'9TOßì,‚qþjå:šk8Šsiëõ‘RÕòlA Ú;q­X¸ ¾<\̧D˜Á Å·ëBôÞ‚ú™bÿåŠUÈ M8CÖÑ`¾1Q™ë†iÄ.³îÆà<• Žâü‡Tºù\‚ôk÷yïÌ—ß‚R°Ú)ª)ÇÈtÛö0©š¸Gw>È*ªªÄ4g£Yx<*]>YõL/‰ä߸Ð#sKUf¨\”Ér¾¤ß@ɹhÍ,83_B—fwÁ«{\©£º=‡ë­ÑSˆ:]wóÞé«×_.£g1f¦T­ðš-ßÕ Ö'ªÉ^ertæ²hNo^cÍ«è1¦?gÕ†² 0øº¬­PV×*‰™Û2CÒ¸w"Ӫɕ$.o#Ï:û(I4ó&žÖœu©‰m|íp†¬?–î ¡“yÊ,ÚFŽZWÊPrÆùæõ;³]DA×'”¦w°|ù&²8®f>á(Úʺ¨ ú=5ŽÜ6Xzמ5>ÔÀøcZwz5B[QÃA‹‚“Ç'HÌøQ*t)¥UÛË‘*T^ÔßÈP®×6Ô%¼'µÁ†¦ÍE|1jžÙÝwkC±.†÷Lß- Y2‡·ôÉiçvï*W¶+À{„}ô©@ÚE]ÞoÆ÷75KЫ@éÀ¯B®[(ïM 1P(q¤pÚ;¬Æõžq¦„®¾ë2Ç׋ÂÎó·jLyMõyÍh›7uÞ£@꣄œo]ØSZæ!OP•×3|±ç¯bE׫**ª¾]Í,MtIr>Uï,IB3Û°tERjºæ‘ZëËÞ[¨ÇIŠ9²Ð²V,)‡?U`§woà'Ñû¾W©óÕNvqÜÚô6¶¯4Oü/$Öð: ?gœä¯Ž_¤%¹eÇý-9°FM‰£íOæ¹øb°}åUK%•[×Iæã'me3=VeôìC+‹¾ºØ'<–Á±¼†ÒÉùÿl n¨•‹¯?PNSåÏû²ÄJ§fƒäƒY\œ4¢2[“áXËõŠÙò5bM‡EÄpˆ$û×_ÚûvcK~Ùxfgr‚#DèIKÎú¹«ÜôBüü¹EZS]*ÚMQ¬¨ÂdýeÂfæB•å…ép#Ãñ½UŠàçcEqaU†J,ñC€BÄkÆ5ÇvÁ=Ÿ­é x 7v“Ç–,—vTÔamï¯Kë7Ú † ¨íïN˜_9ƒ.¤ ªº¾+õ”ÚÅ”á^._a­ŸA®PÛÄ—§ÞˆYø Ü“9ô¬3}1¸Zý¡£p/¸4¹ÊÖzAv rRÜÞÞ´›-옻°g†[öŒçª-„ÇRrÈp!4I˜zyH¦†–â„Y¦ËLôÔ®0i+×¼Ú¥Þþz^ûe€Î>ô¡s]Só’+'c£ ñ¡&ëÇ¢!HWl%¸‘¿ÞfM-(çj¹~åÛºJ°ë®üø–—(|‘ë*º´…÷È’wQN#ÅoI:RÅYWÏQ_af,.dü2±RB£±<—™µŽôK¢ö_CdÊwKê[7A~#,®ktr_¶b×ÈëåÁ™X¼I–O«¨…¡5÷fÈêÅ%)90Š¸ðp]3Š|ôðwýµm¢Â)ÿ¼È_„žTjíÉ=%Û®»’­A°X_ -‰Í§êæ÷b†ÏºDG ñ“2Xœ…çÌ*êQ_4~.DE5xùUŠI t_÷LÅLv2‚zÖJ’Z\TrF@V-ÿd.ÍÑ”Ÿâl3Áü¢>Î_<¹“Û†©D;ÎøÍòÍ¢j[s‹ÿ½Áù# “AÔ_jÍÕye<» -…tóª¬wFøKÈÐ; ¦r®@f¤6Y”‘¼)bØÉ_@ù,«¤ýôe[–‘3d –BĤÖXx3pÄ{kFOMo‰àà–Ò( ¼åM—2ââc+6 -ñµŸ"cø½—¸0äýå]Ÿ/Z2 ª—‡±ðœSíùÓTÙMůW7kÙ§™â`iÏbMèâödÁ`æÓ/ê­â¸¹»+R”Þ‘±ª{ØOáôÕ8Œn)[ÞõJÏA–oÐmm¿e5Q”«/ç×ÖiŒàô©Ø¿[Ú½.yŸVW"O—ú( -^2-›ÍkýÎiìÕÎúm.qIèó X’·ëvQ ªÖcï+q½;ì Úh«~VÓèB®×¯É@®è[îÝûÕíp¦"1Ö1\/ÙÜës5 öŸƒçmq»¥AâŸ#©lÊ‹%ìïáÉ–YU( ƒCκÀ¿}¹i`y*s^Ež6ÿcÕ‹~ºÊ\îI”#wI7ÝUb»‹H ú·§M:õå÷"Ô× #¢ÇÁlãrâ“š–‚¡Î,¦ã•G4I¨Çè‡ý¥A‘é €•©yø(Š½êصR–ÕVë|ÖºU/Zñéh0^ûèm‹n¢7F£~y¸;]¼7Z}e‚šôкî1Ý>³sµQÍÆûû›+,6ÁPfùcKp!¡ íH.y½ÞÖî²ö=¨g°6¿;wÂ×e£}x<'x>\ˆ½¯´N -‰×AË’®Àó£¡ãà»éøY}0‘~h<"|4 …a{§X=ñû‡°Y§ÊìX\Òê@FÀ/Ù9“´ì›¹iZõ-ÖÞ¥›õtkâ&PU‚Íb(lSÎ|Óº7㮶h)µlˆ=bîûv¥Üøk8*V­Ç -³¸ ÉC8@Žkÿ hÒ$%‹hÙÕÛéVÔäþ¤5Åmÿ¤§Ù¢‹P8çÌúbâè$<ð[›BSeŽº‚“¸ø“§j°)rüû}ßùÅlñ/Ç;ïþ,qL æx ýЪ*Ï_qQäkÑöFáãÍ[Ú!?Ät11¤îÊ7—^½¡•5ƒ­rT™£'‚¹ã›PT|âåiø•»Õ=_X »cúT“[ÓAe€œol݆1åIN*Ý8(qÈ!H*X´­’eˆ¤/ÑKÇ„ {\×î.Œî‰S[zûåR„G®ºÅ:*aÖ¶¨±ˆk¯'„àåŸ%ÑÍ/1©+ÕËÈÍh'ì9B¤°xã·w¾•³«Æn~ûE3hÖd¢¥yƒÙš"ï¡:Ý3VD}ñZ$µ±™RõÜÖwž.²V1œ ²ß¹À˜Sš ½üÅÎœU§E«Ð~NðŠª5‰@üFvQÚTÕÞËiýµêM ¬OUÌ Ç>æOfÁc½‹'!?`ñËV]d˜Ð8åÔßfš¾‘+Ù`Fö€HÈ Ĺ#Á4Ùmúa»\ƒ1åñ*C—›¼ØÉH¸Ê÷šOää‡k„TÜzètJä@údg83É»‡S¯Ê¿žJéM#°ê•”é‰'GüZÝki¹ýŠüÞMedÏE<Vƒ|\=ï©Ja¢+îsÜdŒÓ¹/2ţöà/ˆ;0Ö.èN#§ ‘¹0bªºŸM×ò1kucÆQ·Óp¢úK¾G+2Ä,j aÁ ,ð§]µƒ=r4“s*¶¹ª¨ÁôJ­»ÕÃ&ÊñèƒQœùJÅnst$A8G°áöþNÀNÈ–L@–8„¤ž…Ý£õucŠs¹eŸ,ÕäA+ VZMúƒ‰!N1ãV¸ ¤ºCB|wRÂÈ?˜7~žâ'y†3h>Î`l¿ÍQ¤¨o È„·uˆ\+š¿·òcUMµî ÄZýO;î‡É«/J&hØën.1rit3Ï[NH}!'0L wk…÷-ƒ_dŒd–«ù˜LWÏKX^Ál¹†¶™Æo:ý9³HT¨Ds˜“`³5—¢Ë2&¥ Žrü™#·]׋cI7¥ð¾«ß˜7‘ìÓj¥A7l -¦‰=Ïã¨,¾·äù%c@ÚÜMj‹ÆÒ–BPÌqQ$Û‹Ò¹Ø^RB¯j$s¥î…6*ù\ß'=\ljS Dk^|J9èNTõï'„xP>"Y Ó6ÜF¿ý}zŠ×íI`…sÃͬ/¾*Ò3±á‡v}:Iš¢€µ·%Ö.?}’Áô… ÉpÚ¥–­.þt›ð¶_D+r?‘,œÛ~­Å/ ¬éw²:EÓ@ý®ñ*¬Ÿô«*ÎÔÙ#Ø…UÚÍœ·áÅÑÏÉbg‚\7"Ê%©<7*é:6YÖÂüÒ#g®ì釰3¢z\ò=ª¶døüƒÎÍ LÅÒ?õ!p½,wSFÛÓÝ’x@åÒUæëþa5™ö—æÆ„ ¸«ü#_Õ"åÿ×6žR3šÅ.ŠN+ñŠ’d—ï¯ -,1b ¦A¯‹?ÃÂ/y¢Ö1Kdm¯Cˆä·Ù¯Â -Õ†Î{m7‘”ÀA%¸µaq¥äà±#ÂüÖÂv½ØèÎs:ù•ÚáÐ,áè¸ó0,ÆŽw ìüÉË2“t* Nô*Ø°å¶Y×Öt=b`\éî.ó"#1˜6æûŠRuÑŠ£hZ ¡ ­ËÕ>æ%õ*b}Š³ùZ¯õö—Žêàã‘âùÂÄ÷JFY¡9)ïJíéu˜„uwòEöŒeèh¢ÞÀq vaÞí\ÓÂz÷meÞ:Úïî½ø{Ök¥æþ³£œPüH -oîr÷µ -õ|t³ue6MëຖT+ñð} SOU§àø’CưDzñÁƒ+Úªµµjlëi3jM´Oã³ ï¾êô,.4HŽÃQÿ=äŠChPzøÛ0n¼õ/Û:¶ÓÏ}f(¶ÒTË/ˆF¿ã•Ýã⎋ô:ÁñCÞŒ4M…®É郄ö€ì„À§Zþâ^¯«w5Cf`bb#Ò9ÿ©ÌF¢’9ëª.#£]™$”_ÙytØåÅ·LÝ'FcS×hv]+¢Í°”^07«<‰„ñ5’óuó ªÑyÆk6iùìÕW’Zt©•É0㑶Š#šRÿÇ‚M¼p®ùIøž}~Sÿýlb T² ÜZ×3í¸I§L¬ôÈ%yÃà§O9Î×Å´b!rTV anþ{nÙjѨY<±€¾E !Œ Ý f!5 êh%Ά=«KçÒ LjÏ4—æ{S–²çùîáMÂؘËæfÊsl†@žáovµlGÎ=qTDï§'¸è$&t0à4°•¨¥iãšqäÕü™`ŸðÔ`uOQàšø©û®åC:»ð$̳ŽYd+¿#)uBïYwß;ÖCç¼éÍØ ‹ ~‚;ÇøU7óSá’„bÜÙ—ºüŸý¥‘ÛØ”žw±à¶º%@óËO$<% |ô Â7´¯õ+™¢F—$ATðq÷»r…„L\^B+Z9t3¹äª£2ì’Àj`DÅq# …ß@‰Ž§ÓbòE1,åÖG²¼WÇYvŸ$DWiüÍ=Ôž;Rž»"Zào¢‚±ƒÏP® v[nÔ â€’»ˆ‡è8(‹ý½ßã…FKr‡PÒùyûké¼d›F³²±F:M; -¼p®[ˆœ^c6q½½ï¾í°Ñ‹jU¾íÒCÉÞ’Œð"U ÏO`Þ«°ÇqîiØt~ˆcpÑT¼¢8¦¨½aƒº2{ Ìô„X©›“ä Ø9˜¾“!3Í.1Aãp™“…JYˆÂ:•®[dV]¹Ö÷‰¯læ}Õú–Û¹wìµñ9GYáõ__¯ŠŒè8|¢~vÒ…"«ØNuÛ±n¶û;ˆ“•é:q©Õ QÓØ”‡‚O •H]KŠQ\ðéÕ7u;}Š«é#dÁN´#cpÉÇîZÕ -pú!¬žÏ+ÒNF5FÐЂ`’_ÙäøvÖ¥2¢à¼1ï„ ôŒòu |Ç”…º˜Â§ýö]PAÀµ˜õoœ2œÞ\<uÏ×yôdŽ¡"ªm£MC]¬ ùY,mÚ@ëD,¿ûAÝ{hÄøQ†ú/{[ª‘ïа?é‡ ;};Æh+%$·NE©\ÆsR€õņµUq˜½@ÂgŠRÃÕŠâ>,‹™áX®ÅÔo¶7e‰ïBBÙ1(2qdsK²Mc¹Ë³­„uð”5?µFdk¼ºgrlÁ <Šˬ¯…ÿ%!#(FÌól¿¦‡ÿC¾ëmoo*H}í6Y+Ž!=¢)Æÿ]pcv¾zÒB¼ð­Ç„Ib÷Ià¥ÕøÌ¡#¸"ù¢Ç˜Ð*ƒöØ*Ù”B-" € bO‰¹d^eq‹½[M»r6s4E&‡5^mÌ€Ê&ë‚ÌÚQËé~›ª r\XbžORCß2¦G£¯0Þ4sdxµTuû0oŒ“ÈÔwO×N#à rdõ ŠŽáH>r„EbfSzÄ3äGŠÙÖ"º8Í­L]2!Lû9*ÅaÍ€ŽÖ}–¿¼—‰ù£[ÔRÇeÞqP*,J‹È×þ% Od¿nSR¼yöpœíú¨âB¸µä¸]I…;=lö~µì%6ØÌ“ú†œ÷KG<¸F…$庸Y­X·ª.Ôùª5wâØõVqç $èÛͨӡ˗Õ,iRr 8€)`s25TJªmÕ°ÖÂu0U‚ú¯¸æ0÷’›½ödDÖ M`ñ_~èLh-;?.¿.µÙ®O”¯ç|LÌzŸ–I w‡ã|¹XfùŠu”AFN(‹°fšV²±Îôf² c¡2Á—ߣ£[‡’臉– CSVûŸ¿†Ñp5¦‘O×7·Ôºÿò}”§°L µ$JiU„3·þX¿ceO{òLÈÞ Zä¹ JÁJƒÝJÀÑX4gͲÞ@aª˜¦÷7¿ -Â…AUH­£x剪m}§|ã±Î -¦•Ã!°ÜZ÷»Æ‹¥¿•¤–õ_9§fˆðÓ½ÃÑæóêÉkªÈÔÕ -Y¯rÌ þ©µ†v’ž2¥7ÛÔ¸© šç[í{I#ð~™h¨€nÜ—5§SYGæ>r$4a™f–>æ×DÞä ~‘ À×Æð -A#ƒ×Ÿl¿ €xôP+ÊÕsÛÚfý Å=kyïGî¸l¨Âd3q‹ÐÊšÛb¢In Wd\/Hй 1¢³õòÊ2ÀíÕyçcâ7S5×ögl“J’J> ª•G*?%Š0p{d¥½0ºÅRLìâjt‰3ñ–,¯sž‡ÕÆ÷¯-ŒS¶ÈÕm±YÏ"H5„>6ˆÎcÞÜG?„Âp®x¼‘ú ÞUž°¨! Ú>::ˆè_çp+Ê –ƒ®BðSWáÊBÄr 3®Êä0sLiw¶"ã©òH<Ì„™ÃæºîÓiGéEØ1›Œ ÕÇWÿ(Ô÷¤6â®I‚í¤‡}A†‹Ë–&{"²÷<âÕÍ&úôD›Š£õtd×d¼ÞNa¤W‘¦ö2`e§±žš‰-µ4ß)ãÚºFƒìUþù²üDûx‚…ˆ¢à˜Nnî=û¯K_Rr‰ÓfhJÈy ,Ð6|äׇSŒÅ«ñM"‰PD%Š)AYƒ7‹®Uè}s†ïõµõìE-4Í 9|XßçÜI ™ˆÂ‡¾ÏsìJs'‹½@_6ÕR(vŠ«Ôsuç̤9ËúGJ˜…ïáÜ a&pw’®C¬? -;Ú!J‡H•£ƒf¬lÓÛ+«2N(6Ó=h™0¥Eü€Ñ|¬‰†´fz u6FR@Æ´õ®ëÐ +(ÒÛÝŠ<±NJ0¿úñ ³©Y*ò0Y•…({b6¡²Ë¿y¢ñ%%îjq-Õ´xbƒÇÕÁkÎ8ŽËQÀ ¡ŸCSYùÿ´íò:ïÊdäRΨTÇG_Atð=¶~ãøÂ&¡Wk‹o€™@¸¹Db™RŸ‹©kËÕóLäþC"†Â0òKèSÞªª›û—6ÑùT^ø‚Í‚ <‚⫃ —¾é³ÞƒÞ»é¡Éû·|'›Ò¬÷Ä–·.~“Wë"+`Õ[™Ÿ®±ï–£ÈêUeôÃØìR¹<Àöœííeràk¾gZ¤*Vç—öã¨ïx¶y(â8üÝ -ÚáªNµœ[ȵ߂`(µ _`ÊZ†Âø»y<úË«¿¤A?VC¼¾ßiÓGÐái?jbôë±Éõ©Þ¿&š(ü5iFÂQ -ILø¨"¸gj‚¹ÔvÀË„ê>‘ôh[½Y'‚a6!N)þû‚ ×¢Rõ|R²]U×óÁ4§´ÒqbîTü~9šUŒ÷ƒï¡æý|øœù¨Lø´É8‹I DY¢}‰•1æ¬a@yJu„ˆ>¡ìYù£ŠÛMKÔÖl æ¹£$òá‡T -åþ£^ -“ý@X£í…DcðŠJßiOs̾ë÷B½£:Ùq¤Œðçè.°UÂÍ FÞÇ铹yIŠ|§íµ$šúš:Û7Ñ»(ÿ1ÿUÇá{u˜M%÷kQnÖð(Ô÷èÚ #ÍmÓ3dÞ‰y¦Ö 4®|•e}‘!ÔÇÕ$B acf°þ¥‹O©’d`YH®Ìd‡+úÍ-ÒÎW’>Õ~"ß´GsÒ¨ï@Ƙf—ä¸+Q¢<£°1â[uuì>5ÿ†äÌgÕ›b˜]{š¦²tWÝw§èg1Œ½õ«Ÿ»eQÀ¢6;=>þJ?{þ1ûÚ„XÉÏkÓ—$èÆ -ˆ,ÅÛŠ­6ÀÇø¦ÔuW@Ï“?îP*o_ú.T92m)ýÕÒóXö GÂä:¾º;»ìÇríKeÙƒ=iåà–ç:ªñn…N~’ÆÀdãæŠzÁu¼ƒŠ5X×)$Èk:`K6á.­¼]-‰>l.᥽‡°¦Ïx­ËE[Ø_õèd¯ë©—d4§$¥<¡ü+W¿$üEÅ*põš¶û—JÛÎO«€}Á&è)ê¦YªŽÛëuœéô"¬t‘§…À:nº–€m¼@²ºQªë Å‚ènèœÛÿvÇDÜü‚=g&YŠIøÚRÔšxŠæGÓ|‰š -âqs¢µð¨ïˆ™ËíBâ9tãsâDÐMséç1ª³=QE|²–Ý -¦2#ø³†j[˜`üþªœÖˆHA%ï(:ØrV>º`&b#;ac¦ZÙ½“™ÝJN¢‡8ù¢…ôÆ_ǵ–”U–‹SÍóÑÐù’ÿ­ýWÎ:à>ÅÐS»–ªî{P,¨yZ×—Ië)Y¿÷ÈÃWbx&¢ã$ȳð ’U –ÌŸ”ò-áµÓ3EX à´]°ÛðÎ2´Cùp­Q¤w0R¾•š@ -ÖAÖ-Ò}}³ñÊ«!¥Cx™•ç c``ÕÜä 9SÕÝŠã®X²!h(ÂÍàŽßD"ÉIsyØc#ÛqyÔ௞B‰«n¸Ì•3v$×®uén¸ó¦T™Z/®éE7Dü€ÊœÝ:“„?$2¢ì~tÁë×s²GËâ`ÃÕØ5öoeí‚ÈßN×´©ì -Y›÷â¥}±HnU²€ò:Ìah8<›Ó!Üð=òy¯<±$VU¡¦©þ2÷´ô¬kòFÆÞaõ‹XØ‚é0Þ—³b_jß»|·»ñ{EÀÚLÝXãiÛ”^3Ñ›ÇyëôÓe¾ -“ÿÀŽbýBYh-ËÐálåC>æÑñ ‘_¯ÔhùW¥X¦è1‰ P^fK™VÓ¦³#Æ%wzœe}•bÜs þ „pT&ô­\±í„1A[vN´íâ³û9 #"·„•*jˆí5tHJ1»[½ÜÜÉ°h¾[ž ³ !Í%V·&°v9Z‘`Ù„‘( C xæí|Û—EåGóö„/3\Eöp§_»éW…j‰õ2‰g°.mÛM¨Cà »Vˆ…0¿c°¢wa^4,_©\&yƒDØ t¹ÙÔŠš_Þjˆ8ïp¸[=¯{|Œ–™~=Œ¯ÝÅBç,Œm¦%‘ÜÌ;¿›ÃÞ¤€PiA åò-•îæ¾ ªr6?!Ó…éxÚæÁ¿œ\eé?j·¨†—FBè†ÔÑ®V½žÑ•ædð ˜8JÛ©z¨g‚ñHGþPŠ£%ðR8‚G. »UL°ôˆ¨¼5è‡É](¥•îö·~Zóà„¦~pSL–3:©AâDBõÞR7CE=|!¦}R »² "¨FBËý©¼fAïa…InXÉäUiÝmèî–gëóSÏAHTUvn×tpIØÓ@ÔØhIsõ²•†ŠÔ[-ß!:¸¶À8t¬ŸE®öè†Hô*_· KßðõEŒ±ö0†ž=áâQâ]½(ø ~0£äkn¾XsMóœ`ç ÃÐ×L؛ƛˆ8s T™T!o«NéèSçÆ¥6o«x©§rèn¡H½ôj»¢ÐþHË òýtVŠØ*ü©«‹Ë$„ôXCb{ÿþ? -Æ{EŒŠ¨ÃäD`2s Þ¤&a&Ú…[~œ»¼ÀºcwÝCb*ÞKm0 -%^ „Høædùj}ð8L¬ÍéÞ9וùb¾únGÊŠêð¶ƹý¾$¯oƇ?2$7¾¤É’Ùa•Šjµqª– ý–5læ½\ñ“Ûú¢$êÛ]5¬Ð(²7V>¨²Ï²"Êu@yEÈó5v­9Ò»t.NœQö[Ž=± š8Æâöýö»pÓí¯ÜÁˆšÀâÀ·Éà¦PK_+[94HÓ*²&)‚á›ùPZÞØL¿MWjõÓþm¡±#¬Dã=ÑÁ]¦Â–o­”ëúZà'‘¡¾ÒÈøžÜAFÂ`¸I‘t¯ã¨ fÊóW2ä~^ŸÄP鯌™Ìp§ggêÕzÅR‰oÒ 1 'oºíÆü!æ½ÌjO-`š¿é¯ÜDÙÙ+<¤U\Qb,Iµ»¢ùâL›^Uq=9r©à®ÞNü|Fk̇á7ý ÞÛ 8üm#Bº=6Š´aÁ¿…ª÷Y9G¶Q¢Ñ [(…—„§B<Ç¡Ì¢ðÏ°|Xð¡FÑžÎG¼…A¥x=°®hÕ·*’Ä ‰tÀ@?Nдf:ÊC ¾"¬s¨²ïا߷úlw:ÖúªA%%7µQ¨—n¢=™AÅ•óÝ2ÑlÅGÙø~¢„ØÝëÑv!(¾g÷°ÙȇX‹M³LËu.é*\0ŒÖù9ƒ<]ÉاqÁu§­ÝI'Ë‘tºNiÌ…ö½÷÷q{ÕÈŽÐOR‹¡†ºÈàšòÅáØfè!ã»;ÕVSVP‹…á«Á¹šŠñl¸Ò·šØm3ðñÍ­ÚT-ý·&˜E”`Å-_Ê£Ý_Fy,”®¬ùßQ¹}œíæU–á ¾„O2Oþ(\(eûÙyÔ?«Iê×:Èœ20 N^C)È“ÿ T$ßÓßÏ0¹íIP0:»²7²¡Jü1ÑûÇóõ/¼µäÂ`ꬉùטÔ>U9Áé‡k}”u¶þÕQ+ú€q‡Át<,ΚŠ¨+ª)ÞŠ &’·YlC„IÝ}ÛNzj³ïS:‰h´ÇSí#F¨s PÝžï)—,ß¹2rvKædÀk$Ž»†ô`½¼r*"4cÿý;*T`ZøDS¾¯C[¤4Äƨ° dÒ¨NQ`0ëÍ;4û©Wcò¹žû  ª`˜ÈçÓù47–F^¢Ì°ã­°ó(‹“Ÿs{Ëû.ø·îþL‡àF¢\!¼¡øßmIÊ3"bþ*B2æ]íÌ9Σ\C=.¢† 3¯ †f®šòóJ¯|ù/r9•Ù¤éisò¬vCRñâc“ùP>ñφQ`¦ÀÇëvT¼hÑ[Õ?Û([{[ dR±‘T¸?=éŸnJì/µ§ªçŸq—áºMÖ(Å€Õã›[±\‚ÓŒt)Ö¶ÅVÍ·êAܺ›Ï÷/ªMBq[ßÖ‚Ñãïå݉3hø¯dip"K™à5姦ÛÄA¢tJÚÃ!‰TVÂØcÙéºaïIAnÏŸ¼¹«‹4u†}Ì•ÙXžÑôZ“€´0³ô½x8’ÎZ":#ÛAN´ 6oニä”^é•Ìk9ÇÂn'µø¿´.Š.ïËÄ•y½ÌfT~àþª Œó\ ¯Óùžñ"‰/>â±IÒ7'&”_=™+Jòrí|ã!*»’¤ØI­âìýùtŽ£‡E‰}ß½­F™c(ßÙå<>È?G‹ì…ÛøÞhø#–óOÅX[µ«ÅQ¨²ßŸ/ˆfWz‰…ÀÀÝ#6óû õµ_ZP(žšiÄs®±\)á«ju #+U©éÚ.Ö~þ4\3™X¿/Æj0Š½»¿Ý[<Ü&Ý!ÎD>WaéŒVÇg“ ™‚ MHÉ”™ýÍkQ‹. &fƒ{†Ù{™¿[½ÊÉû·%ìB º¢á] ¦ýï\)×å­i -¿—ä1P!®K‰û³žuöH+ª¶$ÂCí¯‘ao½IÝ V%‘%±úó ßþô.kÊ£«àɾl•ÆsMþmÂPx>cM_†:h£”Ú#òsu/À˜CéqUVʣƨ;Fé§;1·âì&m@A¤Ÿ–(‡ñMN[ l°‹m[r0Šÿ±lrhSr@ä㔳¿\R¬ãÏB·pd4I5lÂßó˜©pNAøAwY`@¶Aoºé>’äK3’Â|¤\ùµà&I”Þe¥’RI G½þ˜’A¥§ÇòD ¾¡/ÆPÔkŠn@däg°À’ -é¶n[k¾’3'ð±qû­™ñMC²oRã8¾…K¢¬që`újað­"Y,@A£Ì>uºöœùk>¬ßCF^åš Ë1¾my˜$ÙÇ'Ž•‰G²\@l\è<#¿ÃŒ0K³…‡LÈ[™=½<©üº¸÷ÊF-fP žVÕqfþàvɃ©ëið¼ùVòÕ#¶§B#å å@‘û¬6ILŽõ œ9Á^ßužNšßk[±ácòŽŽ\e¨Š¬â-íx–¹½×­ÀO×îkä5*Î"ÍFq&Ãe}Ž¸ž“Ô†öÜ¡JPíl*KŸÌv•£×Pºú—®jLzþ¡M¥¾«sèê²rasÌ„Œ`×:ŸSB´+=ÂÄôAu' «-ä›l9Þ…§;m‚9,›G´˜ðS§½ú§&DÕ:µ{RˆØ>R%„Ì‚•â8”b`÷Å¢¶!3ÀðµKÓ)·É ø3Ræxr- –4ˆp›Rz¶äÃÈXɼL”u:,›Äà5° kT¨ZÅô5¼ªvÂR¿7’®(bü”¬ƒ¢béºÌî×GÝ^‹yƒÐÙ–Ê~-µð aÇÑÉ—gÍÍ.ûƒ\;GƒÀ(Ø2øs¾æÐö–›ÿ¦ªéQ1‰‰¨ð»¯âŒ#X¼šó;uxƒèÈ#ý³À±Ý1¦šµçžs½Ov3&¦LâΙÄø-ÒÉ2ä§!ùá TÜ0+=à éo¯Ò|Â.˜¤>˜{Ó¨*ueS)"›‡Ï’P݃׺ ÓÕ¸ Ãhy,ËÄzª¯„œDdzÓ§pÑÏDb¬J¾IÔŸ¾ÆÕ¢ctOtgÀ¿Nc$“3SÂëÈ•>€*}(–)ß¼ÕOr=ã+x0{¡• |í¼:Úà+JöµÓŽG›û¥¢[žC§Ïž•øhYvÝt´ƒZ£öØi}ÁÌ+~üØ:§mQËnãlÛ¶mÛ¶mÛ¶mÛ¶mÛ¶muõCW¿Ü_ÈÈgVPJ—k4e H²õ=ç8±µsùôc÷ÖÕk¤Ý\<²Ìµ"–3úýÝwÔ×Qóµ~ÆÀþ”D×5/Æþu¼Ç¿îä´)tªåRël§³*Ο͈ÊýGeCÜkò(l/yXoB’{N0YcNE‚óbº®1ê;Ó¹ ¶9êÛîâUKrBdnÁé/òø2ü[òïV…ÁêjÇœÃc7tšJ>7ǾROiƒq ·ÌrL÷´5äfö”9·wØF)3n@«±ãhÍFÌ[‰ü(¡v—Ð >UÀìTC¥ÚCŠ:`à¤Ö -+båß5²"*Um»iƒ÷©[ °—Å­½Ò’äh6MWÇ@­ã‡ X¯ÚçtHÀoGFŒ“?;Ž£–j“‚ lˆì}$Ik£à‘MåÃ. - ©ó“¢hEß_¹Š %Œx¨ඖ 3"‰aÜ¥^ë:þo®*Ò”PU`„ž—ï¹ÁÓcýÙCKã%n4#5*¦¥Ð×úÖÎY¯$æR¸bVÿ[Xljzå0Î%Õ] ¸©ë×(û;½ ù:Ü -iž ¨××¥Ñ'Œ5p'W¾û‹ÞȦx!â?·S·u}1B±Œþ6xu^ž=ò’PU;m%|…ßÑ%‰ê\íÇrä˜lE3ÖŽxt8ëùŠ}ã­Š{‘¸#í|ô„]˜™=Rö”|±PA÷Š_t’ºÇÎea2aîýƒ¥ïìiüª]„¯l¯"uÃnY,y’Ê=tHÓÆx†²¼£‚éÍ}Þó9Xü³e§—‘x—ŽžÙo)“ܤÎ9‘…ât7,Àú©ª“>Zkæêíݵ¿ç _Ç[Ïœø¥[Êb!Ã8´”}whJ}¦~§ìö¨É|^\Çþ%ï²í —ŸÏuÌBø’l»-täx{ MÄï]aS©—«ÏHÿÅ…F®dr±Ÿ#•-nŽ»¼™^ê „Tæ3~þÓ³³´ƒÈ·]|ÇšòÈ\ ø]»ZBŒ&¿ï€ÍL“ÞÂÈU ê÷oó©SWãúßTëtÆPH§$É<Àaše9¾Ñ -ÉtC©šå_U³úÄWŸÔ`4ê|0ªô¤Ý,ÿ>I,ë:‰6,‹×ÚÞ³W¼Ž¶æRî¿2húC!ÚDÉ ›JÆŽVÖa*ù‡»"Åò½­+0»ä! k­„žwœ¹p\I5$íƒ[žHë¨$vö{%s4Ž˜~ú}2y…s€ùkÏ6xÆ^  ®Ï’mrÝ"8<ÅǶˣ¯}òäqOóžJt°J5°qJ’q*L”Ÿ5œ\ŒƒÓËÐ÷¾E5óU… <µƼŒû©kš6••¥“l< -…’µ çÃM¢í×jÅ›¤ë0 ׉Þ$“%ÄãMΕ³–—ãSåawRÔ«“]vw*f+|zׇ<Ž¯¨ûÙ‰éöą̈„‘´îÂ_ ΊŠ2§eG“ó<«ÑÚqÄÕ†E– £‘ù퉇*Ýi£AR¬ÚÏ/C96O±Ë‡.xŸññp£8¹ŠGrâ“y7)k¬˜^XzãPr•ÁNójÄ)WqÍñ•«âÊœ¿Âæ¸Þ«L Vc>)¨/‚ j:Ð(7ÏRóï9n.M¤šB($+÷j’õb`¾{ƒþ^ÜûÐýzÖëžØAJ0Ñ~„h¼S”4=Ý'¾"G0Wô Ãtžcb/±Ø?л2çüÐg¼æ‘sÇÍÒ1ää¹Ï‘üŽ¼m×KÔv"¥8h~ Çvî]–ã8ç}Ýï%sG#=­¶ä˜Ê¹õ¿nn>}¿ï†Óɳ!/KMñyFÐ$¿•LÌÏ%£ìì%ÉÄÜÁµ»&$Ž»Ÿ‹æ÷‚Á³£´Äö(ÇèÊFxìQHd­u–ןfñ4€ò.F´Î›º‹yÐlóÜ°:h]&s¥_Ê‘-UÈöÔ¨[Vyc¥Ý¥.dŸpÔeþú"a˜¯k+ÌãY'ÁÚ;›†«Ø_YÿËY9øt•U\:†è¹î* -ÀX\,H>ß2ÜÅj¢·R××ØÈìb,à`!Í/‡÷´âëÑÙ¥î•=P -ÆrKØU•—‰ßÔžb¨cîß^Ù—ý ôt¢íàÐ…0†ì‡¹3‰‹:OÜÐþ l‘594ßü«Ë½Ô™Ò[i%{6#y­‰¶A¡mCöáôý¡ciè²ØtÖêá¼ÛP‹ªAµó¡TNøX†‚$ŸGGoõ“ý’f0{Ž Œßâ‹?ÀFj¸k7‚fã2\(ëÄ8~Pu—xZµµá}Ÿq>lß9s6q&vü…DžüM¡ÉÌ"ZrA)'­½kj¿à˜ð"WywVp“Ó7c¸e⃉V 8žÒê›QãÄ5+Ê/Ý‹‰ÇÀ`¬x²/)áLŽ†ê~­bSe8öð -ß’§…†v ýû¯`Ïv7ÈÊåï¡;~Ê Hf¯)nˆÂ{wa À続5Ó‡”ò²(²üÁµ"nœ©õJO­h¼VtѧN:läkú©w^5Š‡~çå3‘o«"iï'™Á‘¥„Ï@È­ÑAµ‚RM) ÀS(K¤©þ+Ž:¸Ü9”üGô&Óà¿K•ƒX¨®ö1sU*ÙyþzyG$€£Âb.ï!´ü8AŒ(Hµ4ÿ樋~$[X<¸ú¢&Ïå̦¯êº<ß4Ý5 ñú³ôš¥üEÖ‰óWµX."öþ|Ô4]þ¸ºªüÍ êUD©tàkÿœ6߹Ѡ¾K¤gÈ«SKUõHFhq?f’p%)XcNPcÞÈ `ŠsÆ{Ô²¯ùkŸXãy¤ø‹ ºÖO‚d®Š¡J‘ U~3¯)ÖàBa.°qÞVq­Ô€â¶+«Òá=zopP/a·R¨jnõÔìE© «Hœ‘Vwµ€ÑMá&Þh¨T©ö¢r#é€ÎvTÁ¬MÂÇ|º'漜~è=¨²´‰SÔ!LuÍSñ(ª§\«XÜÜÜþÃfBàÓ{r#ªò;Z;q¡°ú3mTÀü/u¤,UJ¢&‚.-Z LŠ¸"QR L²÷F‘£/ƒÈ¬e‹*N„ùó%Ûr[É­è‘^³. ªVèiˆhSÛ"ù.8ƒÓ„ÅYZ2nçà'Ò°Y‚ròç #%º¬ÝßNêzÐjQJCØìn@fî§YP0Hÿ…5?… x›©Ó¯q};~/ÈŒ_ºò¸–{œÏ“®aHC%º±¼]€/jÀ\ä2Á<°^5~»oë´á¯í%ÍÿˆYeíœsºiî—nŒâ«¦ZãÊa¸Ž…`³óþÔÄż™è>Ù ·gŒ%lsî|¦=N3å¡6ÙÏTvž¬Ø»Å±| —t˜”ôÌ Ï sÈçi+0^Ïê%†™mê5ħ¡Á™| î´?>_×JþÐúîì5ºá¶èAú)N I”ëmv(*||sÕâ‚sáAÒ¤­:p丱¸¶¶BÂ"´µù©© —Wo*¼de½å¶ Ê·`Ä¢&Q–ŽQç­™Â-Ëð‡:¤TG…ÝÉѱC9eÄ»Ÿ‹7ÇçNôn>¾ŠÊ•7Åñº±‡[üSÆÏ’¤ôÎ>2„Ó;&I+pt «‘ÿul‹íÃ'¾xc”ˆI&OÇ.¤ùJ&—#¯¬µ•zdæ]ÞFîš+U[kpR ø:íös¹iÛ4ã&:HKz_Åžvâ•ÊOûv, nL¥q¸ÞѹNÌ÷{°¯Æ](P áËj; -|9:¨³ÚÇíŽ1µcEÜó‚²îTÈ|æÅ,ØùÛð_Ö‰*]G -°qí^êZ驧 k‰!¥ìÙq,ŠÜ13*aíôD혶X¶gc‘ç¤p_‘u©idº½g»ð‰ÚC‰é,cÃÓîIÁx;P#™AØÁM -’$¥F*‰(äm3Ú5˶c[Ä\5[,Ãp”AyÖǾԌ™œä ÒÁ'¥[ãR¤í×ÊEzK”¨—ÇZYƒØfBij€µ!%ÖÆ›£(¢!±ïòH›¡ÐÕóëV-ì0Oˆa„EåpÞOðã0xVìv:Ü®÷øιS4Á &µHø=å4;Z]¤&ÖÏ8㙘˜Ú_î³eP)¶¦MîÕ¼Ô^/bËõòè°»ÊvºEtÖسJ3™êÅÊ°¨ã”ù¸Ù`ÖrN=Îe?P}iιä ÙZ4Ò/,T§PM!(‰,3ݽÕw” Hå[†=ëAbð§âÿ3QÃõÑQÅ'â/âz?‘ò@&lüuWjK0(Æ/+ƒG$JÎô˜ó9m‘7ñNèc@½õA½P dœ}gã?SªUq £ÕÖª~7_·ôÇš»¨S‡„à)Kû•OåBºÏe§f¼0—¶Íâ]9tuúÃQ2\–™½7"’Û¾‡zíëx,^´þPŸzåc›ÄU aH6|Ê tS:¾Jkö'×e¥ý}Oµs‡g­1I+¹T}^æ˲-ð©Ñ4M/y¾,¾Fmæ4©T¤õ}ú6`^yC ‹É@‚Ù‹Çu¯ Œë¨ªæýí)Ë¿¯ÄV®W»¡ÖÈäÁ"~dàcJoNdG&Üñº*CÍK΂ ‘LWJŸË9­swIÎP¼uúj¢|³L†:`ɾÿ"Àj†Ø`¡õ•ÕÙ„XŠ~Ü×TC\HXÅĸÔpfÕy´M ‚Âà’ -øSʹi…)Äm¡.B¶Æø̲"5XqáõRRCÙÒŒ>¡e…ýÒ… €ûªè9òoõ?(×Í ËI–ÝzíXÎÓ7ÈÕ§Ñ.aøtxå´|¶â”oîo'jP_- Q ôU0ñjX¤Çu¥©˜¥@²?*`Ò‘—¼!âœálnBÊ;ÆlUû â  NŒ5¹X†#Ï4È,'† èÐY´ÿ‹.´²c/fª&Ï“9½Ù}Rý›f<2²Y"¸¦C(ê èdB‹©Éhì%ÀMýf«ÛËeªÿ×~¢=ª€ú·š%\{}©jòB9›Àò£z¿èo”’û')Zn루$©â@v Ëû!&Ô…öXà_™9ñ)(¦_¦¨˜«~¿-¬»ò”©ÇWÕÃÂ]\aÊ Kƒ¸ðãFÊN}­3ÐS*;¹‡…ØÊ@7ÁÆ BÏVH™‡Í€,è!fwÙ±‰E\ø°§ýéLnãîä§i/èå¥l½¢ÞAñ;Ð}‹žp™ª4ú²H–ΈÓJ:w¨C7ìð‹d–§Ÿât(À’~¤ -‹eg‰M€¿à®¡£šµµ‚S‹ H -Ç `/äLÐùî;µý  Àá6¸í‡Ñ%=ÊÞ¥jg¦nñl]À@¤ÂÃá -¢±£[Çl\ƒ @„U{Ô¿X®c—Öº|Õ>>EB#“Â=?DZ¥î+sùeúñéH„˜<ílùPixMÒ‹B”«mUÅ•åt±òL@½‘×ðìÝJû ý#8PÍ­í±ŸWÄy…e8´?O¢“+ZPw¢ØΙ3V´zI0°‡¬V•´ÁnžÄ;ˆñ¤ú¥"<,í©µÐ\Éöó - Ò&ž¸4¹ Ü/¥†Kß᲌Á¸Väh´&&c³V)ïýn9N|Jx¯ì8A»äêg ¯ÇÏWzU䯜hOáz‘ž‰ºéV -(µ%^îê†üÑ>Ó0I+H—M²N»#ó…Lê%Í _æQùy -˜ -íoÿÀŽ˜%ëË ¾¯F|ÎYª4ü‹¶NœUXay)ƒàÿ9»Ýk`Íñ~óÞhŒ5ƒƒd·°Ó×ù"¿×5þóÎœøúUEæìç„[ðO–ö©Ò©.9°+ðîåKsd†{g¾$€ºŸ^:LÖ`d¥Ñ®<üO«FÄÐÇþe<þ ,N¡L•b¢ŒÙt¨ëÑÕ4ÿYÞs.ÿ]š“-T¬ÃàÕÍ¢ÿA¸—±?4Xîuìž¿© ¤†7¯*ˆ®ÔݪKŽ×ôªõg‡±þé \’t¿Z‹âHÿ™nó°û(ÆxUa\Ùt¨)z¿ï‡¬„pæE²lÿu_b‘FS@X2žŒÆ##"ÂÓX¬ Gg!\Ó8ú.#³£—·<å‹Ì6é”O’ì £ŽÏ¨J/Î ””û‹5n‰äjb=µÄwøÛ"ž'7ì•Ÿ_cáGn®AzÿÐìh6|+I.íÒ4ÐVuk/f¹¶âý¶áˆ†Ý×ÛˆT…ÀÓŠceÞ/LúM“„bƒ•ëP½9Hµ8ŒÉeú½yÉSãõ=5†$ö¶„¼XŒÊå£p™ÉjÃ+MWÃÂÔ?Ü„¢SH#˜L.z¥yY­]ª!“ç£[ã6ëxA݆!V8Ctçz -ÒÏUƒ!Õ9E§øª/Ó[ðæ~Ì[îQçìãA]ÂzG,]çÔ‡¿Õk\ ”Jäe–|Üj´ƒ bÍŽ¼Äkò,ЭFÿýÆ–¤føô“‹XbÃÏWïøvoûã>àUNÖúg5¥ÊÔ°âÏl“ÀU½˜r)¼¤#Ró½˜úN·§å"žÑÓ“Uþœ§›“㔘г>Å-e/ªS”ð!¶@Øà·}ÕøŠ«ûf–w0fƒºO -× ¢ -ô6Qç ZÍ#ŠF1á8W.µ'æPÕˆÈòh9g•®À·¬ Œ1x/ßé4O0”[hgæFŽÞ ±ýNǕÇ‘Ÿì!¦nAþêµxƒƒÉªà½•‰÷ÙŽ:›Ÿ0p®@¹·Ô…»€Ì -%ûríÊʹí"5, ËŠƒ¦æ~9Y(Z?–(´™°hÝV\t0íII¡±9™mîhÕkaYêDÓ™Ziî-&ÛÚ9‡ F•?]']^öÌG4Á¸Ø6€{¯¯jJV|µðÀ¢Íµ:Lõm2 êw°¥îEãéü]žvëb{çd¯³îIñ.ë-å ÁrرÌ2•A¤é4²«çdFjšžÇz„®2f‘8fǃ{w^Õ´Ø]8£U4cÔ'ÀlÚ"éz#´øà‘ y7ÙËgú=-±- -`ž,r$7 sü8PÅ ÆíRûœ*jb Ïä@6 -•íQ\£‘ð–æ›?†þ_ÖiŽÇ¿Wâj+š´JÊ’Â8Çì2p`4±Aq²fÊÖúªSsVúK®5_KF Ä9c¾¤9}Ÿ$¹J^² Yí€æùÞIyïÕþ¦Q7¾ÝŠ¼?™ PÛtYúòAXÛtrTø›oDD<ë`ÀÕBZ&µRìx1—ÜȶRLÿ—HßñÛÜ.Ý_ôÚ‹•k‡&_È–ìØ& ;ƒw礄/ö…ìþ®"=F¬Eùc^x†AS c—‹{ã²QÁɦ º–Xzh£Ø;ÈMp ·Käâ›Jdhnä¶O)ôÓí~lè»–…J“”ÇÉ};÷|¡i|Pkí9©âÕäþóºL…Bè…‡†¥zµè}Ó9Qý•Å´•~‚_Ä(HÌ´¸yuRó¬® Þwý#ìdÎ}¦(¬©ú4¡´MgË 9§{®,^24§aããOâ_Úº1ÓŠºKuIz›ÆOVäÃ';ÊÆEßù:«#ïq ´ 6„‰°O„³ý…ß`%Ť¦ }ZÍË-^‹7PZà—»È7˜ŒMf¾Ît¬ˆ÷`O&²ŽÈ_Ü“yùLµ”éBMé:à,üqìZ*ïœAN b'Kȼ5º†aRõ×úÀlƒq|ñ4º ØP -|žQ™ŸEd[|òØ®’ñ_Wu ¨ë%-§Ê½®É:é¼sÜrÊÀÇGsXfFw},£ 8T¤csS/I=À -"® ÷S|3Üík‡òåë‰j*þlÓ»EÊ`À²LæKµ>ž -LÀ+íKoˆÝ–P£ ð‚Ã<Òr|þ­e°4ÔóÍèîRÔª8="ñŽ×K¬ªvŠèôPâE4Eºò<ÐÕ_(9ºNâÄi´ -<”‹ÑÒi^÷´1²­îkÑ•ì_‚ÇÇù œ×1Bì4õ0œæ…sð‘–Y@‚ÆÛR¥‘ Ýrßó—[$Ó‚xi!¸ž™ -kÑ}åB6mÇ¿G½P¶r½¿NJú­Ô*¯Õ1²mŸ¥$LÔ,××6!Dßj_5¼9Œ‘iE 1WTÍíë7¯Í€íÓ€®v‹µz)úCÿ†Â‡çiQ±‚”4e-†<åÝË̬t¶o_[q ò?o^¦)FÉNü)=]ËúwÚÅBk+z{ZUæA€Ôtêþ‚¸e4’R˜ƒæM¹’Ð+ÍŽ0Ÿ]W&»i°v…P§.ïJËì˜ïþwbØ/>—în4%Eqc5Ö—Æl…€Y’ç1á+Ój]Qå ±Hxp ZV½GÞeý@I|ó¡D^¯²¶¿€ò3Üty E¦ÎVçü¨Å.þ_ 'üñUÉ&ø|SðeâÍ"L»ÛG£3ôê¿È ~)‡ ¼Ä•¬}'wÆøüKvqÈ9:\}Z?:]š¹£#®µàôhÒÊUÞE*ˆEÕMKé²Ã À$Š\ÙC°ŒgVèþDOnq¬ö‰®Œ3ÂØ5›:ƒ§•Ã‹ÊŠóïöcèÕáO‹9NÂEÅÚNSS¡DG(¸÷Vå„ËYŸ“ñÂòÎq²Qø0J_‡íb8 Ñ R[ð©×T¹Ë'ƬªC5Ñ•|\±(ò›FQ¦çAáŽ2 kšf‰hØ͊Ǥ3RIBL‚Í}gVÿR[ºÖMØ"1B³ò–+Åè·óídB/—F#â¹s©¶t#ꬹĔw¯ßØc³éÚ{ùk–QÛ­qÁ~¥5Ä" ~8w#$ûÈûu°@¢ÙÒwÏ\fª -ÔCÃ{üj¡jÀ­¨U FºùKdÂ_ÂÆJ{¶=бš;UÓL|œb—'ùÙݘ0ür˜……ÏñÞçåNêÈnCžxÛ1#êz—Žy¤ R+Bn[9M‹å -rÀº\,T¿u>k‹Ê€`´õÏcö«rlÕ> ´® <¥q¤Ù™ „8nó!„ –Ô ü¼loÝë^ÿç{zÏÑ [ÙwIç Ê”¹$DðTè¬óÄŒ´x@+ Ö5Œ?«qðd…Ò|Ä´‰ZÀh^%Š_“E‘sükÀ”‹,[±©ƒ¥Ôp$éD(¾ƒ0‚~ÆУ -ŠP"ƒ]vØúÚÉ‘ð'¯½¼Ë¶w-“M[|Aón‘ºÄŸb<æ6·Mg~Âx–⾫.hÂ{ïu1{±„+xóù¢­v¡Éw‹‚Bߊ(A×t3Çã.Ò•¤Ô²—˜Œ -(¡©h±¤ÜÇ'$ñåXñÅ®§¶ÓÈÐź,Ââ0Í©œýŒ;¹»oçÿòwbj0[T­'úç¥ürðÍhÇë)~+ÍîX×L…×y|ƒÐwµÆ/:~®}d©HŽz¡ Â08°BµJaœà-3D ‘ó]üu#ë²>–öþDÝñ>@Œš¶Œê7}ÏMš³™7ù]$Ñf°ùPk Žü™ Û¿¤¼ºyÒýÌH™’5P±~‹ŸÃœ…ƯâtäøŒO›Vk’‰¢Mø¤Õ^o€±_Ÿ0vg™ð_H<óz!·‹Íu¯3¦Î©ù†Ì¯†êw°°Uvîw'òJÀLQÔƒ¡Ä“ÕH¾<6‰v9ã†Ä;ÈZZ9ŽÅÿ€|Dí™yï5JìÝK'ÈóúªâcC#ÐæÚF²ö«Þ.›¿c&é)ý—ê}çÝڨ웄6u»Ì6’q“àŸ¢ñl§—«fÁÒžF3~T||¹·ê‡¹šwß$ãkª¸ŸPn:ô>fûKìÜËoÑY²=Ló>I¯Õ¶ÆëM‡fdè®Éb.Át¡.û­Ñ†ÀÏN Ñ*/áA·¤¶Ó"£Ž×m5ZÐ’îö‹çŒ#¶[³ö¥öbù^ÿ4“¹oþèöõóÊö ¶ôP®Ñ-\BrÁòìân‹y Êx+h1®ì’K ‡œr]_ÐÀéžmßÊšsòÂÏÔám'UFæ2çSö{RèWPó4¾þٮŎyÞ79šÅA—d;~-ˆ°ÀØ~²œ+±h&·î×aªŠ^Æ^gÝ¢ÔFö8Tw5Úò -ã\åi®þ€"äç¹û¿—`¹=ûKñbŸTlÑ×âë÷‰…mnÅÛxXqo^_´&ÁkÛ‡Þ˜ÎLC'RÞiðA"’ö(ÉK -ðgtÆ‚G¯_³'À€žTÖWûIvÌrÕâ¦ÒÇßá½JwéMs^Ã7£5eeki™eó_ÛÄ%hÖ¥(Gz‹ü"¶$0Wq[P›Š}6P>Õîm‚ƒI`bêï42øpû7”A9T*¹ –ÖæýsøÑä†v2F¦_•ÉIê€Ïÿòåòù»ówèxè+Vn¥´ÄKŸ–~Ì“/—’(V!ÑçÓ¾ësIH BtÕàc›n}ÎK•ë¸©ŠÛÕ|ª'Ãú÷Qò5í‚éc”Ë8bÑbþ€èd;®yÁy†Û~TÖÀÂqHÀ´4 ,b@åIªa9°3€K¤FI§]¥]îëiš„¼ÑüÚ¹˜jrp'óa\ï|ÙÍ@=¼Ô9@Pìug¶åüñÔâ]í@nÔF†¥3l CŽåô¼™È)·jŽn21{ËË ô]E/?éRN›t­Å˜‹dYr6‡&Û´&®oáE¢íl‡b?å2ë^͹D´i­ìhÄ „„5±R$ö¿±· /2$”y_X>bÇ£ö¾ç¸Òîééî`¦ϳM«ÄÄ_%D/!ÑÊõáikÓå¢ÚPØ 1•ŸØ÷Õ¿- tí)a&¡•6¼¿ûÏ?^$jaüí_‰ªá¢ã ­†¥Ê ç„×Èèáx\“~à¸m0Ìã6eìC®ø5í«yÁÅ´×íærõ™/¢¬¯7mžˆwÝD`ö™ËÀËb!šÄ)Š­ë-ñ ˆŽ-yVK;\âÎ?Nbp7¨²©\9Ý"äFu¶Csõq“ÿçEÅE'DM–”-ÏXu8fjV2¬ž%1 ½!’AúÂG#‘OOM -—]A “š3è:²! -œÉ½‚h»“tè}vÔ_1ªGm@ì0fà Ë}?Úü¨ü0ã¼ZÃ0¹{^jo)Ê5Q›Á”õFõ$/'0‚Gз°S!¼{0„3]pˆgzÎúnÙùή‚J±]Ý1lwk;SpÄy¶ÔHðõÛ¬U̱V$çü%É#ì•þŠ!b‰CÕË9KŸgêŠCÝÞ=]º|q?½Ó^?TG‡Ï£}Œú «]%5`_Ðý'{Æ8ʬ?Ÿo³M«ÑW.†LP{–ƒêÛƒÝÊ@}ΠԔŦŸº,õÙòáb/G¦è7‹4àGöœ’o“]]ÍôÂuÉoféÚô úΆ?˜VgØ3ÜB…‹XÑÚŒ‰XL¬Â·€g%²nØï™ÉÍ°¾{`§íú,UáEEpŽ»‰ó}^Yo ‚Wcô¾EÿþK¢‡TQr'N(FVQq\ÇrUèræÛ”ª ñ;´ÖÔ;–È‚œ‰C4-zk3Ùƒpò¨‰9€l+O³‡Ál?i€ëY§•±¥Ëš3PÃ& çöè,lž¬Í8‘ ¯uÝætV Ûüs׿frsá@ÖEHp‚¥~ho·©ó±g¬4†Ø%›¶Ä""}®Czújõ+Œ%ž'ä‡Òξ"®£‰»Ì;ßw=€ŽìPJmþpÓV(ݧß;J^÷{¬LlM%—ÔÚÊ÷$!n¬PÞrýë¥lA΀ûb/ݺ–T+ Z•®ð¦÷k3{Dý'Ù †ù?MUð)¿P𔽽ŸD²’œ ëñJèÀé îÂÀÓÍî~†Ò쟞õfZ·Ãöô9Ñïk[ -@zQݲ ¡@AÊ䨽ö÷R#,‚¿1ª\@6Ë…<”W|ñ—.ª4³û§ï‹ÉÏt=Ç!I2C¿ÞU¦ÍA- b´ )íëH+Ô:™}²íSKÞ%8,1&¢âA=˜ˆ)PräutÓs‰ÍAêÌI[Ú ÎÙ0Ñ°Êgd²¿eeOf6&ÑYA^æ̸JÁÍìÞésÀŽ>‚Fƒ+ç]žMúK‰2óº„’ç˜ ÃèR ÔßƳ3Wãµä∺uAœ³i‡R×Öœ ß²_I3Æ°Lü[–øJöŽ¶p©ãGà?3›€ –Ó_µ‘Üšœ -?4øÙ¢ÊÃ!êC¼ÌZᣋ{qŸ~ž^ïjê>úI§gýøU†;°î,à -½3cµœýi-9ð¼~Ñ+ø;q;èMb?‚%è¢BÛÖËå& aÒœÚföˆ±E(ß««×4ŸOÖ—V¤Ô¨Üm¼*ûðŠí«!ŽÞÏ*tÉê Š×šÚ;]¯gA2$•Ó©i |ýôgþ“¢¹’2¼˜FXäm°x90ÿÊ+´h9é…$ïHA[2¾Áè -ÃÎŽ׆C -†j½ÖîÞchTÛáOòjïˆÓÚ¢C~éê`V/¹«ðÅBzö6ØÂHÙm™µso!Lƒ0¥Ó1v§T§ï¸}"?ËÈõZüC½ÎóìM¯pF¹Ÿ®º¶ ÑE[WD|_f’ÌÈcI÷·'wž÷ï3—ÑH:¢)VG)%‹bX½N#GÆh°0 CuWðêd{]xÏzèg‡Ó©Þ)8=uxî orÒÈ[ñé5ç–Ô èûº®ò?KÁkv¤¶à 8C¡ %+J5£ð=¥“݃ٙ”¤PÊ™Yû”ÝÖˆ‚!(-»F_érXcà’†UðpÌM3*Õ·¥¼ÐøåÛÆ?Wlz¯—°õ’æ iŠpWI”¦r›ÊÄ$ï¼Ý.ö#>Á9(ÊŸ ÝÕÔÜ(RÓÄaTÞ*_ocn†1äà×»R¢,øÍ1/凋840ôO¾~Ñdñ-ö"ƒ Κ lõç û«Ôqàîf' t÷QšíÑ<ÖÉnÐÏ´:/ˆ•å½:›õû »R:œ¿V%BÜT?3PEŠÿR'ØÝt6ÿìØ7£´”Õ@òXV -¨†Ás²BÙnD¢-©÷NîçDŽäxÍìÔ"h½‚/‚ dW -z\vþR^Œ¯<ËÔ±¿ÀŠBÑÂ)Ò@v\ŸmÚ+£i×´sH­™rA‚,“ݳí{0ãËœ*|"TKµ_ûbø(ÊÙ,á´nnlÂy]è»´èjFš$wÁ„û_Ä÷Y ”âô£“jî…‡²KôÛ»âf¤ºœJñ¼Í593˜?Ž×Ϋ}ç¥UÞ<4VÒQ*"#n:ÿÖ‘¨ÍÓ¤¨[7—ˆ0“õ!œÐ_>BH‘‘–™E°:[4ªåo˜ ·­÷Úæ—KhäXóq>G|Yžà”èÝ~>mÚ¹{y;x·!Úþ>P·AMçÏ.ßñ—q>g0¦•˜ÇÂÀx/Ìþé²èXàBÆàµúx:5Ò600F¦rx¯B ÒG§6Ç ø¥£¸ÍôE–uyaTS0 .i„üEEÊ8Š.J¤¢<Ä&§˜6ö`ž¨4b’ÃM1Œ[ìŒTî *UÃygä$ýiçùüËw ý&@x±QªëµX݆¾\.Ëvs¦¾˜<µ@Z*OéèîâòþñÈrV-çBƒ`¶¸eõx]53¼I"úw(‰’3o»·É'y\Ý$uw—o˜?€SŒ¦•gDwÓ¦éÍìl -§]Ê!PªçT»!¯ÐÃÄMÒµ˜⢠TÎTÅhÜ¢ \m3³cIɉˆÒÒE-qSÖjõyúK>ŽSSb“Ø.öy-‹ªdE¿¦Ãlx%Š­Ÿ#v:#”矃²éÆñÙ²¾ÏµþôeÎ8¨‰ñ¡©8ëlO_Äb×IkŠ„‘P\ÅYEºâgô‰'l|°%At,…˜Átô È$öL?^’~B™ëÄM¢ÐR‘È«Xûþfò“‹8h’Éþþʨ ¡cáÍ]!ÐN¡tqÉ€Òô]àíL“ó³(Ù嵪óÆÝP+#_˜¯âÅ'w(÷ ÐÎH•S¢Y±°Ž{†2¥æ-óM"NI–_bÕ.í%JVé[ž~žy ƒLê7„ú«ûŽx$b$ü)›“œkÙWû™4t_z¦çÝZWÛyµ–q¿jÈGù@‰r› Ù‹æcé”Vî°ƒð‰ã~òó|Qÿùé«Vr %”í0Ú«P1!“ý~m[—¡3êäÊÓYýs¬o°Ò©9½~Ó˜(3Hü×cËmlNŒ×zˆ¨øêÉ _óYñûòØ^%¼pQËæ -ojkڇΣµtõføe»"=qŒkb8Õü´ÇX«Ê<.àU²{÷èkîS£ÊmÿÙ]ý$——¢"7ú}+͸üðQ - Ü6ší¤‹.úȱúÖ-µ[ÅâÑbOÜðبgt«L^½^SÖ¤\Ù’t*QÜ}SDd^w¡›€Ü\­k3Y«å’RFSuYìCHhœ{Úªý…²¼Ë¸‹`5reüi×/A†Üõ¡X|ç†t7èi‘¢²²=ñ£/¾S9†Ì°·‚1b#Ê,°?¸'4'Á L¯ö]atÌCw)í¼®j.¢Ìñ5?2[<‡µ«kçt Þt¶ psU‡e}ÿÙÿwi+ï/dÀf‚…ÇP1>e!z=B1¦çpu\îÕǼ…J`™£½7ÔdúVödð!­»Å?ç%ôïƒ<ô/ƒ×Õæm‘„qÎKB7ùðPtF=Å>«Σõo1þÅ}£:Ó,_™ÌÊÙ;ÜepâîêÀ’·Ø¦„ðä-*|¦Zõè »Ýà Ïê ô¹ Ò¤Hy¾}eë“»d(”‚ŒÐÐovÙ…ö?îú©û²-¼uËì m'ëúM”4›¨hD’pá* -¦8p`Úïóòn×#™¡ƒLêd‚¤H„(UDçÅ»r;…ªºÊñi„ ‘YVûa^᳅ܵ’˜l“r›ÿÅ`.§…NHæ¿qåÏ…, µÍ¶ }ï-­þª_5;ñ°ˆa - W;quPCâ0„S7ïñÉÙ¹½¦Ñ'Ú nÈ1®%•¶ªˆ—±¿öé½Å(ðBï•3£º%š*¼4½›Ú²æÈ›S&båkûÀ¼¸Ëê"Íƈ±(~oŠË½0RÙtŠ ºütú§”x®äà­¿ItŸðø×#´‘iÐEAXδë7´Ëtôªÿë FEÅ;Be*½)@?1êþ¿ëª|Œ` a%ýqø`¸8PQ™Œ¨$¨@§).²äZHœ5“L™ãݺ |‰ŒÞø©³aËø— js;D¦'èïJ‡4ÐR›"yü¦xÏ8,H‡q¹.Ž—/"E[=ª´f€ýì:•û“¸I0Zûg{®~à˜ lÜ -A~& žnIyîa!:ü°°†Îⵚ y~§ƒý¿ÏÝ]½fKUÁý?4å5pHDŸ#º ×c2Y¶f•¯¬ÞÄGç×ƦgÎ'ÓUìï{l[U:Ó* (³hªésŒ”¡T͈p6 ®¢V,¯ ÿÈŽv%ØgPV>«›®¯²±œIX»ÖzÈßG»k1&à>„¢QÿOí’­Œ¬«Å{¾k¢+-TÄ[˜ÝKÙ=O¯³Á²~ÿrË "׳><,&P²ar'¹€ nëñ“UäMH’õ™®<‹íkøhœÓÓ»ñÄ¥õPmb\ĆŒ™[µX ü§~%c⟗¶¨ÊÒ›¥ð«A:¦kLa†¬µr—ÛKk9q‚ùâéEG蜩tH4q {Dñ²,ø‡tÕ¶vJ}¬f;gA¥¡öØz§.M˜¨Ë6mÛ¶+m›OÚ¶mVZ•¶mÛ¶mÛ6Ïwzt÷E÷ÄUŒµ"öžs˜P6%K\¯Þ‘$hˆÆ½ÆÃ¥ÝaQN^ïÃdPJR˜¤üëtk¬9Öì#5KBØ)0”ô0¥–EõYÕgŠ±†}/hHD÷ß>„g×7LÒFhÄßò2¡‰5—+nËa½¦Dã[÷j[°·ÉÂò}ͳÙ÷ÕÃÿ ¿ߘLäž«’™š*ûÐ`B»Û©hcåͽ´ë§Œ5"­Ï”M'¹˜6)¬ì¥ÕÄrù/<@òÅ­óïôPÔ@¦~7p/i”+¿gë '+«w¦ú,nB¾˜2¨h7]œý5è ËãWxîô2ák€ûrl*HÕuvË=ºµþaÌjjÔ¢!»‚)ñ¥räAŒ‰¯WR/àÑÞaÓ=Æ€ùŒÕ­ÍE\زª¸7àÙçUhA¦k—e4¨k‘zs¿®OkdBÌk²ÅS º} S¨Õ¦„ ²•2â´×+b[åؤ?AÁs=ó¹µu ‹ø}Ì4p'φPX¿q0û"}4ðúÛøY¼ÂÜfC‰ :Ø.Z‰-úñ¶[wר…+_ºou„Ùèë [Êuœ@7¨øŸnD{àýÁäûíö@ÆsèÌ^dÓiv̨\׎u·&‹+ÕÝÜ(÷ß/”R‘Qä@¨áêœæÍgP­®ú¨•@RIÏÁ±EÎ|RuªÚxµÉy‘ -ÏÞ_Ãc°¾g† -ZAJG˜a$+ªùkÌ:o<÷3ï~ÁGÜýÀǧX”TÁBÍ-?éœÅñyx ñíJ_Ñç§Z¤°0l%càÃÛB«Õ¯Èô­0·¿7ÕmÖ@"iëS«ÆÏ›Æ`Iáƒéᙢښ¥ÁÅç¦ÄÅ¢ÂV—‚ÆÙgŽh_IÆJùJ|7B.‘¼Þ®GR!pýCê M-ÕÊ tæ ‡Oñeó)vjèm”¢8o2è›bïdÝšH4äN–òßù!pÎ÷2Ïÿ±I¡øý)ZO9ü"¯¢ë×né»ûæýÇÝl§#ÞZMÀÂ]²‘âånyµç) í„·òƒU÷ë†sÜ¡ÖNñ’Cy-l!9s+Âðb7¨Æ8_Ë7û2— õ¡3£6.ŒÅb5ä³Áõß|]ïõÃàÊÖ –?&ñùÏAÔÞÿïv†ÉYñ†ÎÑ’Z#Ýõ “ßý¶`K—R@efòGM,LWvëaDá”ýê@€sþeLÑPÆáÄê;…V&zätèÑÁ$«8l·ŽöÚçztZÕ…x­j¢ž|”0¦ûuIï{KLÖ„XŽ*õõðb}© •&v 6ÕA@!0Ê4ßÁä7 Ë’|i”ƒ¨G¼0­”‰OÒQ¤rØ$OToŠ]A‚Ü7Ù{ °^ú?RÈ´G1ã´_v´i– &Uw„_s) Ú¹£¦q&Ϩšá†BÛºýT¤+ÊÎëmòÚï¢á’”V{óê‰nj!ŠW²T+qïv‹JøzÒ¹±•¦¿8O±¦…Ö é…{ÅÞ–ú¹yKÀô» M“Þþã3éßR6”(š+ÙîÊî„2™AZF‰´i»¶†(D@å[L§é=; -dz€#™ì l4|D³K¬ÿ”Š7iÌCm_­oÝ#x‰l®ÍL²g7ðú9ú/Êò)™ýÓ{Ý•R¬á]«¿YÔè´HúÝ_¡% -¦k#DsÕ˜v 7° JòÐÁÀoPÈÁ`z_ý*\/ÖNê"M6]eq’xqÝ"Å Mâx|ÝžHä¼Ù[&Îä»nìýê¤Yx]5ñ6w™ M¦üKOUûÕVª]:³²ž;S=0 ŸEMTÈP#1À0|OÝfç7ú’öÅ·JW™Ü†µ˜˜°&QçèEÒ§%,Ú©·nî  ü2-G"æÛ°7|aÿŒÆ4XKsÊ̓bú}±Šê«j¾k24&Z7ñO ÷ ÔjÇ %l °4Bÿ3U嘘¼.|^¨èýþI¸A½ÀíM!*ã½&T®,GÀtíD9>†ØazPÜf <¬€^~¾@Cx@WÚ„ˆ”_JéäÕ{Ç …ÑÚZîóq%θøÇGÐvXQüòÀ±{ò²w-´ë…ri: \L¨ðG¥~Î9óB<ôzäØoó­Ù«±(u˜îÍuQ(“¤#°å”E@Û¤LV¿Åœã|üAÿä¯Æ³Y['\|îbNͽ ;G’·HŽ¿o¦p5éanõÜGI?-Z?][t˜¿(6u`( d"哬9'À‹ õ£§!ßìÊÀûÝNvT5S,R…ô5i¦Ój,¢lîmêeÇHHs‰±!.ÝÉ;ÕØÁ,~ŸÛ41;·=ÑljHK>¥óíêï&Ž`ze%sª·4À$ù÷Ç!ž««q®šrP.—”4{RÓ»9ýÂW0%wÈ ðäNþ•d)¤!?*êôá“P­«ŒQfúˆí%‘â «±—ÄyYž{µ²ˆ<[à°)^%„iËUÔi=;î¥2eS¤kÛ {ûH9cM·"c䜺x°ž3@}ßüåî¼äö|AO2?ÇL¡+Œ«¤u²Éà+ÓK,_º¤€w³T,Ç,n—Ü:Y0 -ñ´)ã7ß>ÎeŃ‹k »i¿LDQ®³¡$Ék"kª0åQ™þ¸w$ãÞ{`†ó‰Ò¥«åÉ6 n[×í SèEînFÉ–NË[žÂÔAòÙ$ÜçÚZ¸êÜþqIm€;r²Éz.¸ ,Ž¢ÒúeÕ|Ždfu$õ¡„+¨BŸ †c·³òÇÓJ±ro¼þraüÌG}/¡ÀÚî.Ó§}ÄFüÕff¿—rW±ÆçÕŸÙž{RÑëRÕDa¶’-‚kV-êÀað€k³7HÌB…'š¬Î)ö”n4¤ÈOÏóY$ŸàírJÂHµ~)€íYö±A\Ó ]-š‰F­¸¯Æ†(“ôÅ8NöPï|£Mì4‰,zäˆ}dbŽ®àAtL æun#ëpt>{Ç©k§ iå¾P家“Vo*@+ƒýM¼,Ù,â)@|!+Î=XƒõÕjüþ{¾‚@è÷:Þ;WH´ü¹j›™¨;ï‚ µëBv¶V¡ü4uèpOŽ¼—OhŒü\vN7N~8S3W7%‚eˆŠ†Œ¢®÷V„3_‡W Kkç"ñ•×Ë¢+Þ;‘Iš.#›$$Ó•¶A%[mðÐ鞢€&Œ„ˆòO<†Ý\Ú\š$„V¥ÎWUÅm>Ž—½æVägZX °-•%‡^,.%­b'õÏN^ÿU±Ï’Æ®ÝúÛÇK])¢x˜§[?mç5)v1Xîb#ÀeM{#ÃPW‡Yxì+ñ4ÞÆrýü3ÕÔ$Dé¤CvQUR³†«d|'¥¬¸âE¾¢ÛüÎs¨qàóŸósKi Ùþ¹P Ô|åM8cTŒ/s{³B@àvB`çÌ™Á†urçN6‹ðæáô‰à:9ŒÑßòôD.ƒ èÃõ²û™ ¾©.užON¼ØŸ†vïÊ°.Ýþõk›ðK9ü§ê–8ÂýÙÅôɇ´k_¯6Ú£höæeçth |VÚ«ûÖ'¿è³;ÑUË|)qDõí@TƒÎ‹¢ÿÄèœÞ:zqŽ7HÒõÊ÷âè9” €a¼Äv÷N%a“ß…atö’/¦ød!¡Òx¨n¶ü4,ç÷ÎE¥vhó'áB¿À¨ ›OöU£(ÀX×vP®#iþ'yôÜaÛ3Õ«{–00Zi‹•Á0qncþAV;”ÐF‰l;BQzôÔç!¤´er.Îzßi¦~(‡%aŒˆ|„|a#d„·Œ5ö^…´}H`]ñ&*vå¿8c&ßåM™‹Ãx¶6!ÔúÖĽ¼é„¾D7KV™å?àσ>ç2.™ýmBÄký „¬^ª§“¥ íÏsï$ =Ɖ_Ñx%´?ÖyQÏ Ëÿ‡øN¿®vUExÇÏ¥ï_fÚ"±>Ä’6L>}' ÆaB5ןŦ.wO´WœVa< »çJyvýô"“²©†ž@Ÿ1*7³‡f÷à?Jÿ'è“ÐçÐA6´ -º7R8û=¶ŠK¦ékÛ?IHúki»ú%‹œ‰ÇiŠÌŒà’¥ÒÄžö·TX^ „ù{0|ü€›D1ãß$Œo¸ýt3š>ÂÚÆÚ²¾…ÛžÈÉBàH†X«2ï&6ÌÎ2? yÍö1Âñ8M™À¥zà»®2?œRq¾9Š_LË¢±ÅèŸ+Å”ËÍüG0ËWôB—}0•ÏÕ» ÇÚ‹Ä÷ÏšŠÁÆâ)¼TQr6óÒ P#ª*2¿"ÇsþÏ;†æ„Üéæ°? gòtŠÝŸ>– ­Ykü‚Ô¤èu·§È}ºbçEÙ÷¥O.ü¿Zž+í´F÷¦xA/â °x¿âq–ô›'‘ ¥4ÙÁŽÔž\V²eH%€xÝ™˜ãŽ¬Ssýt©¯ƒ•¦Ñ’Ë0%Ý<ö¸r¬ˆä¯”üÁQ }]µ^šL±ÝŽãL?ÂF%´Y›*—¤ÐË´æq¬;Ôtæ0«((–¨%TÙhÓ†ÏY9èÝÛÑ8×ë‘Jº=ο”äË ÄQE -Q "3µÅ®qí`‘nzH›/úë@äQû¦Tâ‡kùÌb.óßà…¢žéTMîahÌ`ÿ׳ö×?Gѵ¯Zª¼ßI‘ I«“yEáóPBk¤qg0d8‘Ç~ÿr ¢—Êt8˜C-z•õ¶·ÌXR522=-T'ÊÖïÐ¥>ØœÚðï˃–OL—„ÔÁQ[%^Æ+Ñ×ùV®÷¼.’^&ù›ÿKf˜Ð3˨¬ÍÊ·%Êo«nOŠÂpÆà¾+ºéfj2ÙOÉ`éBÿr{x‰Êt®{®Ã@tñ¹ä›´Jö¼Q@e¥rheã'¼¡àê<Ç5r)¹¿Rfê·5ûÙöܧië;q&¦~à‚©Á¥@Zqëãõ´Ë§^ ô/ì¦B€Ô´KbZê‹ô ¨bä²ò>>x›ngYqW‚4…‡Ù…)ï"¹ö°~2Å¡¢zd¸Š^+i²2¨rfS¨¸êž‡ƒŽd-ø‰Zæiûƽ”#ðÏ¢ýžøÒ@?(´ûÂþÊÍ(Hhõ8þ™/°Ë–˜‡î¿O°úŒÈ6Û>êó¢Sv‘â)×*42¾‰)XÙë]é"é+ jmÌÙèÍ­g™%¥ùZ8LœÄ@s´S‘½àÓÞºCˆ¨,_°8 :CÑQ ²Áºþ3¨ÿh§¦€ôìZ±+&ˆ·w8BÒ”9 ò5iŽ·@M•@±®Ùíc³ÅPüs›ï¼ÙÝ›aÚ;Q'>~8 ˜¦·‚ÿÀéç•”ÓšF‘ûW̺-êWªÌ$Z.·ù/©G¯HYöïn“|Ѹs+JîzÔåù·Ã}©sAcµÞ×ðÖwm 2l'ú\¤a”Yÿ^ Z[!kwÊ*4Øg¢"ïaàíöFõÇ=û)Ƥ*ú½~ú€Ù:1³ÑÜ®§V«qØ:ØRãPy. G ÝdÁI–R‡PZyväUN%ïŽüáD1/¨³Š³ßb!qkÓ`v3N4 w‡Ü·®ù¬R -ŒƆ‘¡½­w…yK{gJ®ã¯ž%JÀv±J*õ¼Ä $0Êí{-"vþËEÜîøÒrÚ„ˆÙÇæ=A¤Ò's¸ŽJbÅc5¢˜}ôdãK÷rá~e G^QG†I Š@ÿgHŠ?X¬¤ö€’õs—j±Áæeä -—òÓBÑ׆äÁ´×¦/dÅ—™*£=‰ê…L}A)×÷Öù`xÔ¯1=øD[¦2Ç‹é¸iò)`ÿµ£ÒÌ*Âì™{o̺ .E?0~@ݨ FãLG]P€™–¨'dW+äß®)ßY!×ý­¼vü}–* ;쯸8lFLzð&qL†0AúGŒè³Ôµl9£ƒÉø¡œu,¡ô?ß…W÷Òc•CÝUÆ&LK)§Nõ¬çæe>®Ûu³¶¤‹o>3udÂL -Êð" Ò:ëW±îäÐþÁúÝïž~ªô‰Žƒ£Wôߌ¢¯T„éaÝ¢pQÂáÓiSzj[r¨,›eßeAfy@ðFÄ‘ŽÜñÂFûgŽá™z»e¿Œžâ“θ*÷ÆÁË‚ñlÄï ‰!„_«t÷ ~…Ú1Ø1¬þ‰jÈè®s -5}AÄœ­×f¬µ{ R–9ÄäÐÝ8ƒµ±¢…„t§›v õèZ¤†ÐÓDr1Õk¶Ñ—þ”"öO½¶ŸõÒñUÂÞYV žÁÌàÕn¬}6CPŠÎM1§fÜŒ ’¸³„ÏÊÊëÍîÅ ÄZu¸¨ÕkzõKA¦Þ%[Žó÷kMÅ?ù†ÁÁ%Eš2Tä+0pòÀ5†ÜÐÊAõ<뇫7×=AéGºU¾ÝL>žœ:ï9íË‹j Ê‹t{ ùÙÀ/ `Évš áY*‘ÿI$Éù -£š“ȹú\=«°óø¦Épc¸šêËV +&òXÝÔ>m¯þÛà¨U““Ž’#¼¶ïAä.éM'6SªêögT–:SÇôMªvcÇÕ×òôŒ³sBw·¡ô‚rI1À.3©p¤«õg‚ÑÙÅFÈ’à´Ô»Þ£;Ï{OjѤ;øi^~à8¨nR¬O¹'†¯%K-h&I'e;÷1§S™»OÉnôêmJ¶ú AYM>õšÜI‡üv+BM˜±g?å78‰“M”ÛE"ŸÝBQAºzš¸í×Õõ.•oÖ oð³ÁQ¤Ð¥Ö(ùÁæÀ.î½å?Ÿ1€ TfUXeŽ„9ø.–—˜Ë¡kTe}sf¼÷CðqÃ’ϨVʽý³maÚz‹ÕL__“`C?Ñ2-I,¦·`‘g­p@©ïŠK¥ÖÀ:ðŽì³ðDјôùX ÃvmÆå‰X-ÀJ– žèžƒQ,_ã#+^JªÁøF»g„r—Äj­&°A 꿃f@fÀ9.n¾ -3×!<_E:TB&¨å©ÉrÎwP§ÓýË¢°@ßëšýßø³ñýÌ…ê¥22Få®j -W i0P”¦@–HD¸CÏ@PÊšÃ,I]½˜À4žãÑTzþ6Ô¯ò€ñ§NA§oäjõáG 7uH]\£ðÌ´óú6wšIKk–W\<Ñ_­Ì”Z+ ËÙ*”u[ÔXsw[rÄí‚è9¼’Ç7Ζç÷4øÆÚÄQ %2AØèRß šyˆñô^§#öŸ Ap´†m]8òtç'XEñèFVtÞâ<ÉG£JžƒèÔ—Y¸ÿã°1–šÑÍêU¨#1V&ŠÓÞô‹¶°­ þƒ1îâ¤ëp›[Üf!b¯=”ýôúÉ—G£~ñ‚…Rô }¸!Fàj *__˜ÌfÃÏ^!Ùãþ_KÖföhèLÍRdQ¤¨Q©ùÖ¥8ýÒ.ÖÑ µV ZxhÙæmÑ“Æ­l>˜9Û–~‚=‚ç‹ ¶äëH«îàA5öýˉ´ñ/F‰i¥À'=-ËŒØêÀ 7@{‡?ôx†ÀÉÌ'„º(Gü"/{\â/¨—sÅÎùß À“È©é»Á¢SA÷µÞ¤ÊºêPú`PEF­Æ™H=ŒÛzæ»ËL…hØ&¦¾&MüµÒ“U’ôµKw[Blžë•×Ûa¸B¢‡¦EÈœýÖ“ý7ŒõîÊ):"æ[:¤ yæÛ¤`»·”®ÌQRBXp(þÑtε??Ó‰MïjWMÆ™s;ƒ^Vî\ñuàCOɾ…e˜BE;ÿmÉ4Ÿ‰£†æã,äÎ蔲d?˜çB8ïôT6QÙ_"ÝEÏÇ„óQãX¸¡¤…pƒÿß½¡V¶‘Æ-ßýhÜ(Õ̓NùöB`¾UÊx«p¦âbraùÝÓ9€ºîô…md(Ù×BFnùˆ -ëóϸÚÿ•Ô×a­EGôìjl´°(HYj£¯–òz«HqÞ• Þy³ss]©Ç%m‹ÈÒ¯_{R $X}˜&¾ð\®“¸å¯ápyÉ<'%çËÁT–¦Œã—´alæmŠ\×í¹r'cüÆ*ŒœÝ‡À­³ð -x n”‚ΦÆcg¥ŸnB1S<édð?N€KÃ/U¹Æë¸Q÷k6ŽòÆÁ”ï„[qzº°oŠ.~ÜÅIÜèée V ={àœ#äHSàp· ¨e˜îÕ’lA4[Ý¡ÿÖòÓp LN[¹† "ÉŸŸ=°2˜CNU—PÂIéÖËèHá´gê~ê„y凊פ|¾ÅŽÃ_ïfJ=Ý>ëä­ØÜK¬Ù 8#{!ÍO{(?ˆ¸›”mŒÏÄ5Êò$:þmݶšvì.Ÿ¬&¨\kái©Ÿ^Î9&£¸a‡²a -wï™—¤k~ýüñ#ddœÄh‡¾¿÷ß[ üì¹Pº†ŽS¿šÐ>ÄEX¤‚vÝqç€å–õÆþô =ßña¿íÍ^ãn™ -–võ¾žØŸtbxäÂÉžXºr…8¯hÿH¿’Jcùºùí„h+ÁìæùVõ i÷‘?æŠ]Tr¤‹Ç5ðÆhã«“½§càIÑH£s´Ô\°÷ªžšÅqv¡übÚy+ÒVIM:úð†óí1âÝÎu;R@ö¼8ádvÝ Ü»(À!ás˜´õ,{ Òg~ꟻw÷Ž×Râáâ»o°öŒ“7q{0÷‚{ç - l…o»«E;ÓJEA ¯2e|#íV‰€1ìSµ¸N¶fs‰Z<•ÁÊ-^Ç¿jPüu¨‘n$å6¨yà¶TrbÄk2’æM|kX®°£<ôSŽþFý,Ð÷ÊÙ3ñWßX†µO…¶‹Õ®FÍ(›îÏHN¡'ì –SZ}¨¤†¾ŽˆMsa;ö,ýõ%ð‚›QUº^N±â¤ì )Âì¦w›´[O1òÙÁ=òFÁàYµ¤p Õ¤¦ìÎNfM¤2“èH9°~:G8cÙÝ—éPVâUŒ“4_%½¬bøøF¨Úf ÍšåÐVm‹³É€Ñ9Ò½i#—Wö¬”zÿV[ZÙàfæQX© Ó¯ -nj¯„±—iÔU½ùršµ¶â$ÈvVANŔܫdõ¤SçQ!(AK†”:ÓÚ&éûS€‰FŽÛ#7?ù%qǹ\¬r"Ý«BüÍ‹Ùlt®ÚtIÛøp*X6øºî;|.™´Âí`›¤Y³‘ßI̽n@Y”Vn¾7ìt›ÿŸ'qAýyOW ·Ub×9Â}í.F÷é¨dîëW1ëcéìÿú1ë%`&5¸Ò½H~Gê¹TŸ} óé ZÉòSÙh©Â„ðk·æœ<_´kÍÑåR—;Ž–¨ ƒ%I4²9LŠþÝ«cwñ“Çv½S4"üÙ§¯¼;CôáŒñ—ƒÜäSÀ¨!îZÊWPˆû™èš;ðãË®|×Ù'žÒ_+óÓG£ó@rš­¥gq4&ÅnPÞl¤q¶‹UkœâÚ0rØ­*4$ØlÙpó± ÀÒ[æÚ±_žVAAã‚BlòMÍt @KLÕ_Ù'œƒùÙIQÒ,¼ÒX<ér¤^màT€”™îÜ*kx‘riÅrª£Tꀖ ˜É«Û›Ž Ü -¤{móHšÙÍþ*íôçc–B‰&–"-µ™¹"A´…ùËiqñ:¹`î?+dV¢éâ;N+*XÐ^— dRü§Aæ:sé¨ÇL^à ’Q‰Ûc6ôݽގA\ù†Âàëêf9Ý WGÞ,°UË×ÿ©cND - ào§Ë~Ù¸,8)ë™`}®ºŠm -ìÂb/`60 AÄq(ÀŠ+ä¢öT¥ÑUÑ/‘ûíG—|ÂÓ×?Þ‹A é+l‡†U)Wmq{æ!zŽý•Õ2˜zÞVœâ›Qü·€´‰¿>ýHL]ÏD°¿þZ´(†,ÌöÔA•LKèÞfÔ~|b|ª›à6øÕî”6¦¸ù ÉÑуJU‰ÜÄ<½ƒûx·y4þ‚§`Û)_wÜ%ÿv ØkJŒCr›Ad$WEꛎm…B9Iû$Ûœ?–Ï©(WAOʤ" wcòÓrLÞÊå‘XÁ—˜SŠlßôˆ)¥hÜœ‹]ÂõÐ Ò…š…9kä?ÇÊÑGjú†ŠZìá!BM•…öÝ›åùZªÁøËÎa¸Z.–¦ÆÅ»ßß„Ë㱄GMs‹uÑDNO-q;ÿêòðÇÿêe5“ïZ;ÑC pBtk—|òèËùuÄnc@ t }cÈ,ËÎX(ÆÜcGã6i÷yõ‹ï¹æÕ=;6"¼™÷am~’sQÉPz´Þþˆ½3WÉåµ)?;´m†YXhŒ†Kk¥š§ÅÉ,þ>YDÌ„’ø÷,Sy'[j~[µƒº®B¾“]Ñi€ªãÕ;ÁìÊ6g@:¼aOû DºÏº/ÄTÍ"÷Cê9³‚>€ü¨õïzq`ÁèxÒi8€ÃÊNœ3|õAþ[Égí_~JÜŠ2‘5ÐH0A×q‹ê·Ä|Š™ œÓïY†$-à­•Df|¥`47o5£tâqé\P~ã=ýµcÓ˜ƒ®‚dU¢Þ \=Í® :n/Ñq´€o·§G÷öFF"|Õ¸”¤£‰Ðoùèê¾ã”.ð ræ$S•”Ü,˜ò¨ù.,¤•ÿzYjÚ†÷9–(ýîÔÙªr6çX71:‡ÅM9òÖtù"é‹ Ѽã½iR¤Áª½íꉱX·0 »¼¯®3íb±¹º²i$µx·¢õsíUK_HnNæ)""|R{9ÄÙIs$erKºhE°ÒÀe»0…y¶¢CµÝÑBä‘ÇQd]H„¹üçRW:c§¡ª0­ÍL^ËâWÕ`zëz>‹™XK=ï•n i/9›·zoXV¬ƒñh1“é…þÄÇŠÿè§^ÊsKF¼§2n㼟s{•"¡^£¦¬c5µqñH6üᇽÑ>Ý¢y6wóy+oï”ÂM»ÿSS$wÓÕš^BÙשýÿ¾Ž<þŒéŽÈTÿÀac(êøÁáp*'¢ Ö¢u¥øÛ&-BQcOL3uf~ð«yrñç›Û"ÒΚCðÚÂObË ]Cêœ3|ÚO™/,–E[èÀÜ<þÓeÍåŠ4·îpð>J§:½\fÁüTœúWuKÙÆêk^ÊKˆ,Z#ÇogáZÎb†æHÍÕúTLPvUYêëÅÍ?S‰M!ĵÕ7›•Èìú„~”拨)•Ž¨Ð‹q¤‰£µÐÕ_„ÉÇY¿‹¬’œôÞ’z›°kn!«Éd€'pH. ø1xÚ0ŒúV%­±~Hc!ÑtîØ,czK¶ÖÞ)"¹ë7ü­äñ8PÌ…B:TÜt¿O3æ1ælßÁÈæ'lƒv=7Jhß¾TYaÌ`ºÍÁp %âŸ"¨UI§ì–fØYŒÛ4ò— ¸£*8¥ Wù®ñœú9l:_R¦}”h‰I\çîøȾR´/7ù2 ígHvëÅk)Æ/6tõO,P Ÿ6Ç2̃ÒùŸà”V;%ÉÂ)ÕqÇ|TëߺdlpÖÈ™ œ¦ MD‰ð+ðp¼ìqw’!ÑE>3O­)ݱ,E r–÷G‹ìÜè‚ÞÇ÷Å¿“œ‘è¿ëˆ!zÊYí¹’©Ž\iV£¼;Mn&±`%}δ˩Tš-¨®Z…ÔT¥z èpÊâÉÁ5h4üh3Z'Zt¤¬i¶#nA£˜ºIj3ªÆ[ &TL·„æÜ<ÿîÂ!v¦þ&j‚ùj^~ܵѦM¤ÿ%çëdþÀÞýX/}-™Â½`–˜U#>¥AÔ{×KÏ&]jæóOª¬† ï. –¡ðvC*™W¿àÞðyá¯ÁÛéY¨ÖdQÁéý1 /‘†E[/y’bع•À3\k4R¿öÙ³*/Ðßþó jz}j™¾ª g§fº‹ÍÌò)ÎòÓl‹ÙFu3’ËG–à¾C¨åÞkƒPUÏWóM -TP}>ö(f|rØ'kÉ˾ç3D¡¿–Âì -NüPÎL;ÐÎß¿gÕ hªG'聆wƒ ˯΄ã.Xþ‡w,’5íä3¼,[Äá•jÍ^w#ÿHÈÏ þ%¸(coÑñB¨Ž—þÌîKŸ?²È><Í8eü•}1È0È_á}ÚÖè}˜Ò/…síä¤Ý16oÇ2üéŠ(î·¼8áê`…,¯øæ5`¦rm\£‡[j¼‚u!î¦uL`ù\n#°ÈÐÉa[Ñ–çAå@¥~½Ý -û¿þêài°Lªâ¬ôîÞ»ˆ¡ ˆYKï¡õDæ+Ð-÷Ç,–}!&rø­…9ÍoÚm»3Šy›Ö£ó4ûÙàÍà£)êš_Y|š£ÿÆ/¥ÏøðZŽvUì»â¥íïø÷º®7mœX6Âà®á›3ä1y•»à+jÇ \šê2°2³yí£ šP“«W?Árïöë³NÚžõÆÝ8m„•84c3~ÉDû6ˆG1%÷zŒQ@É&qyÜ´o™câL›}Xðv¾;~xiÄb;ak—!PÚC*pÛJ_¡»;ÌÁ×{ajÁ¬£áL“Úµùb¶`¦)þ!=)ï×RÛº'ï‹ú¾8?Rö -©µ½7"gP7Ðœ:åÉUöXD³ ìÑ_+ÜÒšÏà3Ëÿ”ÄŽ±]PïU´,&…{O7\Úɼxçõ2½51EW9©ZT)gÒÌ× A[îÅÛY«jÿ1‡sý˜™ -‚}ÿÒ,?XÄCCpûœ²±Z1Ù×üù“–Ô2Ù(¡¡Ÿ‰0ÅÛQ½Îw’æˆ<>6©ªkF•“Ô Œ×±Ù3ŒTeô‡0“Znì wNL)¸6¤¾”7y‚t -ì‡|ý|MᘩK´8â½”oªª“µiU€èœÑýËÆ…1ëòž®-x<¬ßõwËI~˜Åü~0bZñ´¡ëÊMIrà͸S‹Ikõnb§BFË'|7a¡xEMñân<ž9¥o@ -B”%ÃÞ?“õ¶kÌ*œä’””ëñkÕ1^Še¢×P1·ð˜º±âUXv!éœûßQCŽÝ÷DþãÁaÃsc‚6)ã_|·N4¶Ž=âÊ7­x˧-lª÷£BãÝÿT8˽hÅ¡h™r—Ð]y¸¨3<Àýl®}ë ‘aY,¶ + s#8Öé´[ŽÈ©òôÝçmõñÐZc›?€.B‚œzõÑûó¿+0¥‡Ûm×ÿú]œözÙœ WŠžnÂOŒ%L¾©ð9×îݳŽÝ6‡øò—éÝÖA6•d¬)\ðÇ~£&L] y¤jÙÈ4 "dˆàh¨¥OȵG3kÐÚJÕ-Ô½6}*˜{³u¨=— V¢Zv'€ÙæjbõÔ÷|îòRìf“,‰bÛ¦ŒB„ZF5úO©È®À?åû o%OmŠ }šÔ/bg áê3@棋Ä#Ž×ƹTóæVò¿ Åœ:–}EëÝ >p¹™Q J‚£õ5ÔkYÝÃœÖ@ÓÍ*öª>:Ó’ TæëeqÓôAÍ2Ul!6Ç÷·O1†òÕã‰Tݺ+¡Ž{÷K¿fØ6Ê'ýj5Ï!ÑÉ m·h±³^㮌À¸MèÍŠå0Óß¿39Ä׃ê:s0\+„Ú_ùe#L׳.Å‹cþ>W$.HÿO43ÚöÉÏ·ŸÏ@†¬†·§- ',¾-K¥úPž2N:%ïϾCôm’ú»÷ƒ<-¬¦Ò¹ôF3•K§XÛŒÓqBv 8}àáÿ Aª‰âÿN™5£“GOñô“®œqSëôžŒü{R=–Ù¤öW‹-Kšƒ?æÅÀS kCð‘RŠhGÀ³_äŽìòF‡À³j¼Ó­µßMz}=l§HÙ’017^9ø÷F©·ä»ò=¶vGþM¦³Šb÷smŠtôû5ÅǦ¥ÀëÝö Œúì¹Ùõ_ƒÞefö·¥$€W¥pá/ŽuÜP }Þ!kÔÄ^%ÙâZ_4ˆ·|¸ƒù„«Ãñ@,´{ -Ìdò,'PsòC¿*cu9“SEÁ|î]ýFŸùh3'/ŽBz nhû b>˜]Ø¡[­Ðìã ¦ &ÞËÓN¸|ZMØ\ÄŠeøyéÉö˜×ŸâgA"×…$“׫>'¬·Äe5X¿À -hªìè`wßAr–ùzNܪíî:þ|Ð:ju¹šÀSE;Ø’‰ö3MÁíÇ-ÛØrýòw¼t&ä †þ„¥õ«,;|h ‹¾<œ™æ$º"ò/Ihejìù|v9?¾›ºkåÂ,£®êTá$¸^;Ôú’ÉiÁ\½ÐIéKxú /mâpFÝÔU½P,ªcZCØR—׆Ü‹×迺š± îæ–VŽGÀƒ«·…/q–€S OœoDá ~ˆ-~"_‰Ò‡Õ@Ù·è ’DóÙLë³|ŒÑQHó²ÓýÄÉp‹“HÉ”2ÒUˆ¤)í ‰Ûî5åRwÝM ªÂʽ–VÆ4§F®kÿ¸`Ÿ)ÂÚáiŠ˜ ¦K¡×QG×`¤ÓyÌdó¦x±Øé9ÿ)b –º?öýÜ€—y$fž -o`™ ËVÝIÖŸá¿ÇßáâEÊU¼V£Û {˜IŒŽ¯pLÎ*¤/÷|£ÏÀºå`ÕÞ.w$9ÅK›Z3½»3XáTìêøÌ™’iŽ•èþ`æÕ#r0K“fk#ò(ÏLJQ&KÎEBp'8Ó3t¥ÛWNeLsÉÝbD¨nµòkgªcW0 -( $×X±Jˆœ€ë>»ÈcÃö®µp óðF_L*>µT¾s.Ú—~tøË'Íy¡ÒºíìŸ?†Y‰%©?ç–€3~¡(¥œD­¢*ú æ®ßÎà -Óc4jD¿f‰WBËË^êƒón`š‰‹5•~öý>Uú;¯³eýCTCÖ1Ú{T[0®_mòb^Ÿº ýæR÷4L»/º‰Kú=У@-‹ô˜A™|{Ùw<±¿ÖýhÖ¸­¥ -ïŒÂΖåTÓFà Ä4ÓÒ3f:‰t!µn{ñ¸™BTac,;yÆÄzL{Lòݽ^ƆHÝl¯d’<ô%<­=H}äÝmÉ–Iœ»éÓ¿'%€ŒË|=±•€ÊÉ›Ž©Šúæ2Ç0Žþƒ?3í-GöKâ?1@_NLÄé«#DHµû´¢±L)BR÷6@“Ö!¦‰€ø95²p[ Ø_ˆ2×GáÉ<èLÒ -<5Þ¾eÆ@Åkã‰ñØȆ*Î`G¤öÅ•°îœ¯býòljéýâ§uBÔQDÉ Ú­øZz³³€E2V+a=ŽåŸ¬a]“¾7¼úñMz¸w`±5ý⃮V®Y^‘qkl/ÖÊ“ß›ÿ¨dú¼™/“)ÄM€òìO–_€FØ8½÷œý_êC‰ÉÜ¥/ÏÈ”¯Ù1UnÛÖùè+Ñé²3¿W±„–·Bð×\½¬—âwò‘]úrìn\MÄVqWÐZ¸v÷f8r¥ÞNü751ï†‡Ó Ã!2 IÁ~”Èãw“V#<]}û]º§r’9¯Ž¤éƒéŸu²¹í]θ2÷‘š‡`t˜²ê_6æ¦ lO§ý#M2œBiZžß L«µV½Æ£màCœÕ=‘‡‚1ÇDŒxKðxinòJ!ñ7ýyÇ=˜9|š† ݘaEt ød;ÄÄáÆ@#œDI¥€•xÇ3"³àÅ­î UŽÊ±fö%'§¿¥¥‡Çås¨ï`î°„ ™.Êoæ[í*ôi`ÕÚЕ]üDì•xNß—š x»áÆ!’…v ‚s]QºP°ÉÓŸû{”ªM‡_£À¢¨jWëO‡]Œ[÷í$,gǯ!´ºj§dÍ…rÙ/ɪã­(6Íf.„l™¦ø’Ú¹D¹ÿõ -êWÙ©» †:Po§ çûçªkE¿¾´ -4³Å¡ˆ¡‡é¡&ÚyÅàLê*¨Ò\Øÿ¾þ3ïyu©QWž¬JùeÕÎüjÙjÉ…0ýZ??8E{)éž0Ä™¤’qÃÑ»«æ-€¦ÉM.Ì~øßÚqÏvª¨Gè™üûiõ@¨­Î~Ûñ•ãXžÀ© R©E¢m'²Ñ½Ug1"–¹b(wx° S?çq€5o!€xá¥ç‹—¬£lÌQDì,»-6°×Ù«ÉÒ\ìéEf·ÙÙl97ÝЈìb/ Á,“7™A¤Ëë¨Y©¸ûl¦_Ä «ëÜ)ç4!ó6ýBržudÿ\œ7ìÁàâ<í—Å!/åzΗ»Hÿs&ž>ÆYuAµ2Õ§oø7'›N\ÏY£$>/¸âX¸F#þ‘BQI†=Ϙ©æ'’Uó¾úÄ—ûõ9 Ap—¿¬Òî=ƒqÂâfëu¿Ð.°«AO±þOéL €¬TÜ;µ ÓøˆØ[¡_få«Ñ M`JJ{ÀËG3ø@#è†@+1Q!i†cÑÿ"T!…S‚p:Eƒ»ÊßuOE9”10Ö`ÕVŠ….n«@ø»{®o@dû&UØÆ“gÙV *j4á{ìHOK¾ÁÂË•ßËák0J> ñÎù!XjËئŒËÉ{Ø`mYÍêlE’Б¯®>EÂ$-´ð—;îüMüM`·j—´sw( ÙxŸŠlÎ ¬/8çgVxVÑ…;K¥#û#D茬J™íÇH“õ,õúƒ«©OÿuŽ®÷ä:ñÕÁ Òoi±ÒÒ}Íûl.¢Û,•=ÚžÍû0@²=2Ÿƒ™}rsÜÃíwKÖþz1°rðñNådÑ‹‡ØŽü:.ä‘"úh:•>Ñ3W”5éAÉËòèߧù}ïÓõ 2ªu+hB´¤Ë--—5'”!ﳤgqµ9¦ämI$ûR¢nt›sæágx¬p‡*¹W(C—Õ÷rŽs™D¹„B5õ‡zª+ƒ—?ÅV€Gƒµõ_—C!"ùÝϽ€nØû úD ™†v6kzi“÷{ú°¦§×3qŸuVi¼Ö MÎ^`ärìðx˜ß6EûÖÑ€ã ÿ&œŠvø ³’[ ½?æñóòxt -¬€‡s¾ÉÙìu#x(=ÚEKyVã‹=ò#«õHc™€â­%b MThh“ EU]fdø>0`98¬8õŒ ©[ x¦eγ'ülI.?¾ãªú:s½@-À- ªÐÐÛµ9¤ÁA„]7œoá>mê„g]Õüz›Ït³9D<[%nÎ;5÷/`SµÆÌÓ}vûˆUÛa -Ãs5êræíæ•e)§ì„$Á^pK»Ÿ³>±×Í=£¼kÖÈ ŠhV§ì¸£ØÕ$vªrƒVÌàTÍF¢jô$~>e¦1p¡ê\ljûÊ{‘¾´gWEãEäVA:À÷®os!.ü ˜°ÛüÉÈÿëåÏ1‘1óŠè®&˜ÉF‚®iQØ>êODçL ¯Ê˜D‹ -òÍS½CýBz ¯§aÉVÚ+8ë T`EÎ •v ój&ò“vÇ:ø@ÿ.Õ¥¸‘6ÎA¤‡˜WgŽ•r9s×:ù˜»ß¹ž—:½ìµe^tƒy£›µòŽ74Ÿ¯tÉÞÜM­—?I7†í·PQgf²}Qæ©v§¹RäÀ×ax¦(F)@¢Q!Û4åvõš¿Úù•û Ͻq܉£Ýaê#Ôm5ÌŸ®i¥MÿsìžpY.„CÑÏqZÉn›»«&w©¸Ïá*ÊbV¶Ô`.“=jv²0;’6ˆ‡·ª?U‹"C2ÞõGbd°ä¦çõär;ÐDVÆKÁ—ÝLà;¾è•ÊÖ•Ãåé!X(—%s<†Þ›…t®1¯]–Éù·ÛóC_¢‰ã}b+.âÅ¥€­}[ƒ:€Ì|M@b#ŽÈ붬ÙYâÒ•¶1Ê/J}TBÇ<ÔX¢Û›ê‘ÍvðNL3 ›ÔrDÈ/ê_ÚôÖ Öº‘‚iƒMêû4¥Ñ„ÆËKè¼|j˜Ê'Ø’í›Uà®Â+ ê“IGà Û‡º2ºðÔáN‰‰$l*ï\'…8t4r_Ñpƒë[:Àü ±1íà`[K‡¤«-Ê]pâÛwËc]2êÑJvYfÃB/×7ÍzÔÆ„Ç0Ÿ%€Ód•:Ä)6jrÁ±’ 3"܇BÒßb´WÈ!°çе°8:‘íP‡ÁøŒ7Ê9a®NO†K¹òœ¦æ»"¸úE9$ΗBÿßÕ-œ‰î‡äøU¯|…=„D]* – ‰!b<ž ™:Þ§>ò ;3;tÕ|qìf…Ê/"y>_µ)£ßÑš`;±‹Nz'ã/¥.!;ävÎ|bõÀL±xx„̪Ðð‰å²½©§%o @¹W ‚ÚiG[írÆÚ^äÂä}¿ú‰ßö¶ 'ÔŸEKê@âp¤cÓˆi.d™ÎFA§`¼sß6À·Z’o"œm%S\ñ¢1õ`åqUFw¿,;OWv8j˜bòš„·YzÜpI³D¥y¹¾eHsÚ¥U¥ é±ßtv žd9L›øš@—=\÷Beój]%²À v}îNoêú=‚ÉÈö¨>-ãI×í¾÷é*Ù*!4eÄ~’ u:äF´ƒP6 œ[íY÷K"D­¤\ n%ôÂÁ&ŽÏ(£=·ôê -Œh¨M#M‡ˆù¶Œ¹)KºÊ‘_¨!Œ£µø¥I«“ݘæª §¼†[„¨ÓÐìq*[jÉ2qÍ›:ZB¹e?ýõvù‹ Ù=Mæ áš´~'‚K eH°Á›‚’5òÀU@…ÇJ¼·»5½+à‹öáA%ªj;›Ûçàß L¹ý¿ Y0æRBÞÒr Í‘‹¾¬ÂÉØ5'œ’AøŠJ>9c©î|“T¤Á~ù‘WêÁTµzÛ§æÛ³^C.Lµá…oŠÌ@ä„ZòÜë9¢ªv"×aúrÖtÅÙF™ˆïüMd=Âi1.Ü_}¸j;Î_Q',©cxKx|&ÝAn•¥‚>‰kqÝ+“†Ù˺%ªS¶þ’zòa°£C½¼u8y íA‰2n-ö-ñ[ì…0X™à=M‘*$v" -0«uWtiH§ùVÚ`<Œø>ïK2ª/SglFö¬Bê—’µ ³3±‹n[Š6ùÛûnQEÝ•AÎÞŒmâ8´^K«~Œlárxéå=°/V4ãZWºµV3,¢©²ö£ù›k“=¼´. -w9OwžÃ¢ØqŠq û‡x…N7ßZÿ´¿6ßäZͨ–›2µIK¹lkQ¥~Î2eGÚÕ.cÆ P¼f„0l ܉º,7`0ði§õkÎ%—¦ûþ§»íÁ°£ë¼¾“Ü*7›ÿ­slÎ…a‚tîØö‰mÛ¶mÛ¶mÛ¶mÛ<±m;9Ùw·öãó¦zjº¦fú’9“•\1 î°\­Ð9ÁÛ4À±Ÿ5vAî,„é7Fã‹Û‰^+“5cÌÚ/€ 6zp»<1·áU9î/ÙKy÷NH?" š†¬fÈÜìв-Š®£Cbd«¨[„ƒs%wuNØ÷‚•ž o·Šä*S]ŸU†+wmåú5%h½œ0¸ ¢ @ ï.šƒÍB!°}Ü„?TL¸èr$n8Ò¶¦»”éSîΔ}øãȬí6f@±x·–=6¸ÁìdÓO26$'àô‚ZiyJ Ã×cVªõ޻ÀtÔxÙH¹vÉ£Ú›´¡—±ëØ\mW!Æ|l’Øśʘ›–àÉÕÌžµ1Jåq'«É‹Ïв$1ÿ8NÁó1HTW1Lµ1·#p¬&3ì(%Òó"¥C^¦ôÈÄÀY…cù¦Ñ#Îäz¡0:­ã¯$SÝ* ÖµPM¦ŒtÚ -Ÿdt¤bcƒƒ&æ5§è…L\¯+áÎ¥½1z@üGò¤SeÂÏåôvTøuÊ–twË®µ ×­ €$©E¼Pw{(’WÔí`B¾äu­j-†,G Ûw'%î¥SY¤¿ZÚ ùòàŸ{äWJò‚½q¶O›âƒìóÄjÈš³M¬Ã„:ø¶¬ølAéÉy3ð%|Â,J½"æ¡à¿c7¼ÈéªóVWÖBýËAƒÎZ¦ÇòíöýWú¶§²VjrWçª×®¸Þ;UøzaßÃrÇgJç£á€äº#M–©¾#Cɾ¢—ª¤Oƒ¼Oâ9W4Â\P­þ†3üf ©Ìàbž|¼+öb×…DÇû»¯BèÞ];YqVî¨Ì’OfÔ‰Ÿ|ì8“2#†b¤£ %ê:8{óU0V¡“ÔaìË¡-ÅÖß7[~ù¡Ò7¯œ™4“¹·ê›sV‹1¢OÅ$6Ä=ˆll1ˆBÌ_¬Á©/°…ÂH4—¤_'˜S-Í?˜Ú1«ÇQf%Œ0A¿ðbß &Î@Fs-=Ô-ÞŠÙ _ü‹±Žªèíbù0ÁOéAV3á6Z¦ÒɦF‰dBù‰(ï›YdlõÆââèâß»@Ђ‚zcXU„"öÁS÷ýqe'hš×F»†5‹ôiäÊQÌ‹U|û^ÖŽI=¶9«}jÖ®;S196YÈc–n/ÎêS5+àÄÇݦJ/`Ôÿ°©å¬B ÀÇgÍò,Áe @^BIíôÐBþ•Þ&ƒ”÷GlL™c5ìÞ?•‘¢û{ïˆV}MV¯/ßÇ$¹ê«ÆßêŒ!ðÕ8l¡ƒˆ Ÿ Hñy¬–×¢©ijânƒŠI²ëPϹ¥ìÅVL=Ç/¾–l¡õMu5¸’ÝO¥/lÅ®CN²E!' êbBí¿çel|Ã1¬PW ˜«ÉBl¸9j5¯{WàÃÓÅô1“–¨¾›«å ±Êz;éÐQs,Á8À|£‘÷þdôW.D`ÖÛZã`p8±§F§ÿÁ$Y–íi¢Ú„jxW‹¯VœÙબêI –fÓá|~δ}Š[9týSL0Oò!óçœáËXr~>lÓÇ#:©ì<)|†;ôÉ{«_^kÃœé'`èê‚+™†Üs¸²^¬þM<ð^ôhùÁ×$鱕‚–IjÇMB1"<ðç›tö]3~ ’0x;UÔÊ ]u%æÒ¨L›c-j'”áõ -wLÙÑOÞ-Ñ"~+N/ÝrŸŽ -˜ó€GóîVkOSõHNÏ3AUŠO›b770wd´i698ÙôIþ~ØÈeÞŠ}ÞH§ýïçdƒú¬Go8Ü’²ˆÒx«jzÁqØï*PÜX?[ûÔ[Σ7)–ÿ…ÎÙÒÞï´²lTrýéMi-kßlÍ…§meWŠ ¥ºƒÖæ)¢ˆsUFé_ùjqzøíÂ8?×æ4-œbí9çÜyªhÈL2ÿ°ÐÉX -j{ƒR‹dÓà ÒíäÝ(Ž° *<ÜѲJ·«rðÙ#ñÕëè çéÍ™ œè‡{ h&W?ïØÄ‚ËLrýêÅ'’A—þÚ¿œÓdÄáàS•m}ìXjdPßów\z×çiÑl -Ÿb9íûU$Oê3ìÈ»ß~ʦƒ™í5ù“gÎOP²¼§Ö -lòÓØ®X+‚\)Ùyz>=‰£ƒÐ0‹SÍ“C Ndö„Î3ü¸îÄ¢ "Ü ®›êôñ½Û¾ž Tº=…Øám‚Eô›M0ß/sÑÉÊAî·ßíò.˜ ”•›Ss k—ø*°Ã}®ò'x?ÔNå8y ¨6.©Ó5ä.*É’ôÈÙ¦Q}áŒX7„¹uš¥n"~gv?Û"BEc?´Ï µ‹µåBª‹]¨6Žb#rÁãú˜¸I÷»€=àÍ›:¾ Šÿõ”ŒY†¸“Ó“:–Fw”–jÄ¿µ×‚6/« -ÙÏ£)Ö¤Ôñ¥4ÇÔú¥ éÚ9¼´¾ž±ô=Àà}ÊîÌN¾pUG˜À‹¿•Çž4xg£CWi£eò•n¿Qâ:¤öCê<ÈYʺ+ð,u_•6~R¡U]2&WRV"­r³‚±Žµk n‹{ÜÉ•Ž½ÄÒb’rq~&çú"•KUjCÚ‰5?wbmþÿ#¥Ô÷*JY®[ž¬À7‹œ, â)éC΋+Ý wL‰°†ÆümØUûRÉ„OW§û¹ßÔŠ ûÔ_bß+ý|±ÛzUý{ì´}'fw£\6*V~ô%¸>¹ÿE±ÝFMWm0€HÄÂÞ_ZuÛú[Îß2àþX\áË+©²€»áb yÓFÚùm¢›ëÕ}gçPÃâ…N‘ÀøMÄ‘vW­Ý_¦œ6>F'¨{½ïƒÃ€@! l´4cŒ!ÅÝŽ\T\³9ÑZ^c¸¯B}Óý6Òb¤Pr‡«öå< tÃÚÜÑRÊ!jZCFÏÌ%xó*ÉÀ§ÃRHLbј‡¬‹é¤}]¼ªÀD$ßÒ˜vkr‡s¹™—ý«™?Ñ`(·±&a ¯Ó2É …±#®œO{«U•ôŽQìÙ’Ø”:¡ä2ÐÒ ˆeø©Ìyi™¹"ç{ 7ÓÅi7À}’ÎD&I'àoÚ‡|J©Ëʹ}Úyâ­t‚¾SøY4<ø5ý8ßqA›—MŽÒAÑTT–`y½TΚ1â¸n\º?e‹÷÷ÀÆ«)VE!„Wìú°¿Zù7Áÿ›VK->ÊÑ\igy» -É©@ND‹ûÑÀ·ÿç³÷{jÔ³v:Š&Ä·—.Ëïàœ'n¹`i]ø/IÈ{J6ÍE‡oÎ-èÞ;õƒ$cÇpͺ- æ6ÙéøsÚ-–íiÔððnµj'zñƒÐ”ÇãÎmS ðl†®R¶‰{´GrÓÙrë%<“É=/MHn¹éïvÕºYõòì3ñß›Š ôñ²UÍb«ÇÖ„¦‡.~œ¼X1Õ­¦J†’Jö!ÓŠ -¾›xžt\Û—Rh#¨/J‚ßèù=\Fúo€Ñ³ËúˆìÈMxë®í®bÁåN÷}ÏEÔ™:ëî rå,Ä’uÿ˜Zt²ƒoWôà[Øö´ÔÏÇV¦éÎ?ìÛ-Fv/w¡ŽÆ·8;ti:‚Oâ}RTë$NIÖ¹çΕeb%vØSó†ÞòWljñÐŒÉá&cu@Ö1s½°•=Å/gknD’Ï°Û\ʼ hDkC“\Ã+Z‡=BÊ4‘Pga¡åÆûctÄ|rt4òPSŒB¯ØLðÎÓÄ¥YÓÛ-@ÿ4÷±åqiš4®nÆLJýùâ¾^à¡€-Lú̜܅?ɬ¿¹W(Ú¼'Šh“´‹é%¦ÐÿÁ£ì¹U8ìâ'ÎYÂø'y -gÉæ%¹œÉ˜ºröñ3Í!Q_LàIB$p®8âlLøwoŽ…§=[qêl§éïSC©|Ù#¦‘—ÙuP…^ Ð,9וÇÌ!”ÚÃs¬c¶§î©ÜòT[ûê£i_ƞ+Ÿ×ÃÉÂÙµäκ1Þ’‹hIÈjŒÇÍë)ì8pÑ,(Öè~Ü*‹Ô7aºõ"Ï3¶éIÒÂ;Kf÷@ÕX4ñ((Td -Eg…ÏaBZ½º5Í€†–×ìé³8¯¬ãMlSä…–%´»Eôíz Ñ­‰IýCB¨ -³cüo¿Ž)ÿ7Þ¿÷4¯õ°Å9×+þJ)Vý.9¹ÌŠ@d­ÄJĶ è¸fÌ63§²³ÊT]²uoUgi ªk=3a(×Gó¤Ý°rg°Õ>ºå“=Û_æmV2Ø<Æ\µé° ­c¦í\-ñ›·ëV¨¸°“â­‘ØßÌI99·A#»³)PÇIŸ¥,¥OÍå߸‡:!£ÉñÂÒO - ¬b}¢º!9õÞÞèÂ<)'Ä‘ÒÁD‡Á&ÓÁçŒu]ÞÛuŠ_‘Ì+âÄSh}ø£ª«9J5—âÎ ©0ù¥»õ|9.ƒÑQÏò/ T!rÌ[ÐÒZBàœæ´‰_n³›â‰ØNy žZa…]êÈpûèÆ÷E‹,# Ÿ˜D: P´î¨ýä›AÔ1ïçÜeTÆ‹‹ÉÚ½½¶NÊ,+|8„µV±¢ñVßß+ô.™En"4&¾áÍäËüt(LÕSé”/:Kò$÷ʪ.蛞 -½%xÈåüs·ãxß±™ •‰Ä+ÔáBuxFÐóó<Òý÷Y Øÿrm8öùüýRWìv“Þ+[`ªÑ\†L#Œ¢Á”êFcY@JÐ…Zc^äRž¶&YÑŒNè3)Ù0^‘ËhÁCS¶Ñè4‚Ô#Ùo8`ÇJsŠ"8 1(iŸ˜÷öuÿj¨†Æ„þò3´]+ÄfË«8eœê­M{)3ñ-Z©´WX8 ùŸ8‹NÀß6ι›[@˜”ìihU\Šázg=qRÎNñÅ”„ߤ†Ád€AÇ(—k·.Ó±dÁ’7›¦õ)sðQj€g%رö)áOwçxöÜ-o# ŒD(¶ŽŠÚJñq‰ÊôU[•ø -ðí’æ¹·Âq$°›”Þ>#.ß¿@ÀŠ°ë¥B.[¬ùðºp:Ÿ Zõ³;ýoÂÓq7?Ï^ÕX¡,É€¯éa¬ÎW lUŸ/¢L`‹ámh|‚[qìp6|ŠzP‘\}~ÉóÌ‚À$" t ÛrÛ¶ÝÒeÿÞ”/§ÆÍfÖ©Uº9Dý«¦¼(ŸÞïIX8ÖH2É«T‰Fùý&S<´ŒdÉ™H,ÎâËÙÎê†OùRYÍIê%\K× j¨Vœ¢)Šï–œ‹ -¶CÒÇQ!ðâWË2ûc•¹'@'À2)ªEEžÑ,7¯cî…¿3¼To4Ö]Í&¶˜‰ bçña> ðtNƒ¼àg;zW29®„Í72@½ÖCm¼áMA"Œ³dŒ×ê”Âýè ûnU#~ñMõµ|}–•7Êr&8{ --ÛºÞû 1rÚäò"ûQƒc&.z‹fŸ„ÄD3bÑýlˆ'´Ï–t÷¦[ÓAfFu¡X›ñþ -ß`1ÒxÉ‘0… auß3tó„~iéü oÔDð,x¡å͘ëYÁ¨¬?'zl³Òà]ÐËzq¿(¯Òû¿|ªÓTÐò Îæ#šÄ¢×蹋ñIôˆôƒ\÷3&Ôixéì -ª†È7U®Ø´eÖe&7v„¦Î;:|¦C¹~â¼w‡{ÏŸ × gò#-‹ÈéRé´1…BAå•ßÜNZŒzG_eÉú -` ì¹¹3NZä ,V+S•>jngÉd9Ëã¸v`¢õÎUÊÀOPw8JBM,ÕöØÕÝ٥χ$îƒ1ŸÝ›<ÌWÆ6cÕ(vFîþ½:zRáÝ:ðn{憪ò†¢¹/dùEƒ]Ô³Y¢£ãŠ3  ûÐzõ<791w¨\µ~9µ‘Øi¢õû)cîÓ8M÷+ÞDÞše -©°oOßüÌ[Dso×Ó7ʳ£ÞY¹â2á*CßáæØh¶ô¹™¨’——FThZ4‡ðšÔ¥@qŒJÿGtÉ»R–S‘yƾϤʽX·‘ç÷~¤è¬]6ß‘ÅL«nÊ_Nv‡BsؼA›5'Ò½Äá¹†!À˜¼Ú¼TÉÁc¥ ct¡‡‰9»CêA2‘ö⌡q Ô¾ÉähýfkãUlÿe»7vöÖßJ&iz_Z´61n&S4BÒÁŒÝÉbÙ5ÚBGž=û*â*A=¿¡&(’™çèZˆØEPØyµvÏhÅãúZÇzgH‘ž8°'Öñ pèóÎçq<ãÄ -ü' ëFL‚,¡4K¿T½'oç UòòòaóÇ)[œ®u»ò|'óW2H öÄ»é÷ׅ݈³Ï{öJ é±î˜c+©>ãõPãÃÓÜ0G*®iñ¨9ð(tŽ÷5—Ijë ~NíbËj¡‚Jµ(áe£$°F‚)̈¥¨¬ö£ðB«ønÃó{‰iX bX,ýhž3l2§Ç#8²b-_²ü»9³(köýÚQwtZ“¥aÅwÐ9e sä÷«„ÌZå‚€ð{Ï!Ä«µ9lfØú23Òßµ,è‚ZÈóV×(õ %+ÏðŶBhYsÓ`Ýk¹}ñB ÞCÓd™6p}t)%¡ë^ -räSè}0"!‹SÁ}K§R2œµ×G0÷sF·¦‰…nËzóí²åG0ÿEn7óxW¯Á¥*Ð;.–áûÀû]]²rz‰ôüÀÙjýîû¯x²+7;/¼EÔøŒ.—+b‚ørÜHâ1(Í ‰Êž¨Ö¹J;n]uãH9¢^”þÜ+ÎR)”ϼ‚‘5æÁŒ<>|i£Ô^~ š»¸ -õb¨·½‚ÁÊ”ê.U`Gm21Œ¼€OêLeÈFBºÌ¬ü;° Å+6Õûñ«æqsÏÖfvH&>WaŠåѱpö Y¹½ÁV4Ù3tñ5à2óef˜¿â‘ ÈoÔì•«h­ß¦”+&œµ»^±(ø ÇšM\Qej–´ÀÇå_%ER;gfJÕ«³vwá{#+¡¬»Yv– † gJä•‚Ö·Ü*äJ5Ev³™­;ˆ<9 þÓD{„ò¿x4jáXÒô3CÎYf”!¬z½îµ7‡‹šÙEjkÖ¼E{y°´hG~.ú¨{¦y‰ùŠyãí}»žëyŸÅ‹pÒâoº`s´[à”NØI§žËä -oñÅA@¬Þ[ƒ9Ι`/³EE¯+mÙ›ú¤ÎÜŸ[à}Ú?Ê*@ûÝå«$·2Ú:ö#ºó×0Õ…‹mÈZ*X(Ág~i¼5b&âÀñ(¹9vµÚïÔߎþÂÇæ¤Nõ -Z¹y¥ˆ'ÛéLŽ4=`p‡>ˆJÜ 3eb„#¥´ü¶Š¯íçRºÝÕÉ;<é(°õ놵^ªí¶ ñß&+³•Kã´/SñýŠl•a¾qiy‰„’ÅBéòª)ÞÒ´Mèü>µ=²^†¶6`[õÓjVqbAº­/\]ˆé™ƒ¤Ÿt*j;ºû¶û0Ñ…q%/NAéŸsŸØM 8?¨µ[cP­¥„g— j< ‹ŽGœœ4Öö9c@J`ðppl -€ Ú…}éØ?; ×ÃÔ”krM|'öRb_µ..ÉÇ ËB«<º=„H¨—ç’ –ã(fZ qOÆ+K]ÁW:$ê—àÿß³±ý…±,ª4Ãí. t-SS!½°ÝpXÇ•Ý?jPFÀ7E\ÈšÞ—îòˆKhûÊ`´žG9;¶aÕÓÀ8xÍlXuÛ2±ñ™¨É-´ÙÙÕ¢-~:y¤±iõ‹(‰¦gE#ßtMXƒ4`¾ù†<°BZ‡ -˜_˜AY²‰äÔ³k~Ú7ßst§‡ˆ=0r›ƒ1ñ !÷Eñ­a‹Ù 7rÃäi–@'_ wM ¹Êg¡ãyà/íl³ÀÈ°ßÖ³¯ý#u÷/-‰í®ýx¼ÖgqÝKÁ„vû³Og„Øê6x³þ!b üÙeN™7ÓwÁJyü±‘|1ŠEXûˆ¡„B•a(€¶À\}šÝyî÷—gÞEF· A¼Ðe…ÿÚ­×9}I?IP&‘ð}¬%}[WxmDÁÔM.?x]ÌB,£8U(ÊD˜½¤®î¨¦yý’ºèéÆl¥*¢•´i‹N"¥Û4}ÕS ¢]×mó}ð2lh7§Ÿøkn͵ÓÅçñ%†¨ÖvF=_ƒÀí-ôs ‘yQì¡°(üÌ_Q8âžh“œ²s¸W‹¹¯}ª9ÔAö}ÆiÇÌÛMµµžPÆHÔø¡,bÑiü+R·§×ÉÍámü@þ•«Ç@×ï÷ïNª^I‹¥Èr¦?C~J&þ¶‚±iwvyúX@W¢È<ò%ÑÄ:áý š<MíÚíýÝrK*†!ˆêlÝæ¡T‚j¾˜h Ó£æS—ÊËìLt8F‡Û5Í­i¼×¨VÉï«{¡Ø. iã+˜öIîËç€üví~%s,½¶P´Tø -½Üg1ý¹AöqÀÍØGxÀ´þ Ê“óÈmCeèfs²%U¿ÀJ´ŒÐ¬Éb)%ŽÅ9|´Øê>[²“Õ•š—ᬊTcŒ PÑé²Oè¸(¬øí˜á¼Üz¦ªõÞ>X‡J¥º JõL¤ÔQÆáDÏfÍ~3Š—)Göøäö!(˜ÚˆùŒ£«TôýÅÎc®UòTu¶ŽRÛ€I~3=ÆéÞè#b£D¡ÍucÜ!‡(Ëà³mU?ñž”RФЖP}8eˆ·–y»™ZL0wƸ4ªGÙ*–´Ðs–$ë!>ÀTõëWU‰—é2éÉKý×ÕL,äîýC¢ân#w_d Cè2»S Høû–·˜¨À¼<0 -±Pš,Ò’çÊTj KúpPãWïúö˜ÏÃTñùrËqÕN£ë< ¼Â§¨Ùe'YâÖÊ6ƒQ×~df|9•þ@4vWÜy;”ŒV·”À")DqWF¸1Ój’P:‘g.¾o•ú~—Ò‹YÐÅLf}g’—M”JEÎì|CA:n}ðehÔa¹Mo2x»:vÕ RÌY‰¥€-¨°F¥myÈñ×éÍ^qk ;é¸PEmÇ¡$ô0ìš½XÁÜÚIC–¾Ø…{Ýt7Û7\„1»fò´ˆ»æŒ‚ ý!ý‰iÞ”êâ -Œ ŠÙk­Õv“°Uئ4°´+šTÄþ Ž }e › $)È&Ýît*†ëo¹8‹ŒÄ"ªcöj³>^âôÅÈOo.3>AÈ éåöü|ÇÎ]\²Vjl’B3åÓÞ/*Ê©Aaõtg*·Pt®m»t,Ú‹³¸Uƒ—õ¶ë©Fk{èRµ…qúß‘ ºãz¯Z?=Ëqu)¤†1ª›±/_(:÷ø8ãö;Í#BWpXcõ"ºÅ’à°ÊM¨¾?ÀQ¬X+Äö#ÎsŽeì~L{qr/©ÀîLuž…2ëîrñÉIˆ­ÂÉ/zƒ+¥šÆN”¸xâ§Ä!ϼ‘¤¡š>mö:3¬^väÝÈ¿Ùœ¹õÒ•¥ªÀ/z2óî ÊÂAêÝü)©õL–™ +Dùž~ž<°?aÈäœó4ãü‘Azá£Ý†c“?¤t¾[-â¹W ʇºiŠ²ûºÜ¥év² ÃóÁã(Ûk%E†{79,¯‰x°·1_ø“ÎIŸÚ Ü1ÿÆ|²ûíº  ÏŸ¡œPš9^åAŠ,Øb!?¸!ã=²*Ÿòù$nFÏcíºî…<¡ïLFi`âŒî>‹¾°ñµ¦öó*ÖÑÒTÔðCÐ2ê¢ÑKJ;£ãдsÛ!*Å»•ÛG-ÅϲV ^´„Ñ+a·lÉC{][.lßh2±¿°üÎk[òx}7tÔax§– -„7,îÈ–™eý,|²YÎÖ"ÜI‡õjn*\8¤½beÅNxxQ¤Í¢DyÚ~97´‰R±ÐfU0\l £êJÔx*î—FceÐzÜ‹ÝLPJj“õã"5 -¸ñBY@(þ{jÖRµ°ÌJÿœÌå¯GíLÏàÙ‘0š³+ÄʬojaõmVßñ|ëô`/üÃmï$§ŸÉƒ"åd@Ò^ý¥j*|Õ ‚4±Úë+þ ̈¡†ò –S±`‰hÏüðÙ.¨9úJBËÓ¤U9Ä ÏÁ‹ª_ÉC)heRc*è d7³aáÖYËÔïŽBoF¸c¡:)ß4CM8à}Áu±õNI—G• ©Õºâxu¹Á§&kso±Š+ä+–ˆmPu†»O ¡ë‘ XAZâM»ˆElQ‘v^ö)ùº€n¹¾®‘õ'Ž• çN.1°jv…TTUøŽªÀ ¬mõBOy§–  À'[®Œ :ZÂ7ŽÔÏ@jŒ5IÝŽÁ'Al+ž™…නäEX¥cû…lï¤Ö¾3k -\ -ÀBuÔ˜£+,žÂ‰Ò<Ýž¼'Ì&{éy,ÞÀáó^mK϶§Þ÷æF h­Óé>ă‰õò5O“Ó†µF |ä;lOâêØIÒ";ugÔ ÔoéÁbm`~äíe»:& $ - -Íåa!ã—úZb¡˜§¿»|µî_ãóZDuñ¼.ÕÜ^ßž ãÓIÖ‹JËøF“Ç¢ü1 †Ù®¼'5ƒíçm¶3â%:ô%ÐÓÙ%3ÐÄ -EÝÞ7‰U‹z*©j:7LIô¾k EÚ»ß1³Hƒf;Ô>|f„ ¦ - ö¥?`oÂÍÉ=ŠûXñ4. ÏÑÉ誖~˜yüœ×íÿªoÂC¢æYæ³K×êuëEo¥·Ðc»âȯrKX×ò&•€‘c«æƒÌ Èš‘éس€™¨˜´ïÐ?,tÙ6óßNû…2N$þ ècc£EZÐÒÌ¥­¨Õ*Ooõû™#ý™¾¤™{ɱZŒSKÁ2/€¥M²áwÀAâ>:¼Û}O|Ô(™2ˆs{/Ëa&jJ 6~Þ削±?¿¼fŸøz¿æ¿¥¯}cãÿµôrMùµÉPß¹àEàÝAFGŸ ÜáÒ”‚þÏö ‰¡ -X†ª;™OÛI¼mNÙKGÜÓ-*Ã6Yjø!¥öŠK„ãj±$;tñ«Z‹¶®Æ÷à£qš¨ê—°NÍ -k™{ú¥)gåyÆÁŠßÜ¥±€U{ -Y¡F3RœBåfCŠû"‰îûÉ”¯>HRv‰£?ÑÔêï÷{êï,}O×x8j|ä$—#Zra÷áè†,°gVÅ U¸vsO,=–(ÆBDI‘§”®ŒÇk·1>¯í«Tˆõß!ñaÿ8Ïáé?ÿî@©E܉níoJôQ6ÄS‡lÍÁ^9R3×â‹ B¶%´^¬2¢†”ù|å"Ò|âî”lZ"<^“‰95˜~ÀˆáaI¿Ó®¢ø5Q%›f´žÂwìvìq©J¹›hŸp3”5œk-D"1:RØì×àχL¦+I7\•;h†r60ò.—Á€½Æ‹~I÷ÆeÒÑΔƇ,oÊäfŠ`f¼IÍPëeçÔ°M"k–¼Ð8J]QxËÕú^9#:bSϾùÇ‚m£‡õØÿ…ûFóºh1•Ú†TL¢ÌÁúW8D¼‘UÅ$QÆ‚ßÝÆ]-ÚЇʆP>ßTl¹ðÜ&jª’…zh=Æ€è7DÔ¾.›iâ&”òÌsˆ·tlܶ }U£ŸòÁ…ãèÒ$ÖpÆÂÎ@*Åè½pEy‡¬95wè ·µr&“Mì&ÿÑ_ÅWÓ" ŠíÇ–25¹O”óV^ázU¸îÔÿÖ¶÷…‹ØךJ,<Þˆ¡‘ø×.#ŽÆO"-¥Üú%ž›…`˜Ô%"^ïÀr(YfÒõÆ%òî+ÕN<ô²ìÿ8ÜLJH³¤ƒÈ |³òµíd÷ÒBp Àût8ÜÚõ8ø\öÆùCº“o*ÎßÙÒÛ‹è´õFÏÈl7L S{r»ˆJ_9!’F çÆYSSâDÁÕ+Âê½óâ@ÒcZ -eC“‘µ1ýPBòƒT ó'o.,~‡Ð­á˜T]¥ªµMË+×x#ørtÏ!=tÈP]¤ÿ|yóB -µvcQéÕ·ô·àe5à ù SŠÂôKr;Øÿ‘1Y÷^žæ—2]ýþxyå ƒðÞ¦’x9ç{2QTÑ5A>†NÈÏ*©àÚûç}7•¬K®%“ZK‰Ã½¼t¹“•{ÏY¯ZµÜ?ÛfBs®"fNw[U,tIÇvx+À8 Å.Êq+)‰vPfth×¹Ïx®ë5“sÌ"?ʘæšÑ–a¦PÖ½b¥º÷s%,´;ú±½˜V\ßéPåcïÅ!øCË›`¿ò;ÍúéÚ庴7ulå½¥:Z–Z¾Ix÷,®Ñ< ý¢Mº' rÝîÎ+þ™£«ÁwùÝ­å™ÏM2ë3žÂfkizò%ùÈÂ>¶&rÄähf$YU¨|Ø -é&À¼ájpÌ-÷ˆD {!£Èd3QÈ‘üï¾FÈXˆ€Ý¿]*š%Pš„Ú›¬Œê*»ˆ¡ÁáÔ|±§ßëÌ`NÒ>hó㸑ô¤éZYOÌ°V"W0Š”áÜZcºÉØêöML\¹í©w;GØoö?….WDuF›Ÿ9–/a{£¼Zªæ~öÀEâµFþ3â]”[L€ai…–±xHëpôý.”ñdZQ9Ó™a5þNʾoÈ9Nð€•OßÁT%[Fá§jüݽ„N}‚‘ïä@Ôœ¬¦“~©M·&ÿé*£ËI£Y·Â‚:åCÈà“øñŽA>òÑ`˜Ñð Ka2&–Ò/äf…öD'”,…ÒÕpY-4=ˆÔÕp¿è;kÊ„ ß8® s.wë*U'/´š–1Êäu6FÆÓ""dØ×CæõʨÞÚƒ Ù“p|XB#@4‡Ç§JpÙÌ?æ¸'‰­:e壣O WñŽTÞý| ‰ìØE0°„7Çx=ÞçóãDý÷ŒÅ[çÛ¸öÍÞTÉé m_†2ÍÎnãÙ„è•ÀQºIÿ*)FCw“ö¹¼:Dè‚-]HÏtþt k Ù)6¸Ù˜Ï‡šDg¨¤SÔ¾#3þ‚Á{ 3•øÙ}JYúþA€¯Éc€øì•Öv‚f´¦ „—Çà9s%Mtú?:K4Î^@ˆ =Ä -¦CÏÛ¢[thÿz{>ÀhÀjBÿOA<ÑW…ˆÞš¥:#øª*cئAÙýGš sBÿè9î|‚|/³HV rCa¶œþÈ$ÝÍØeŨ':&ÐÖœ9œcã+¶ÃHžààéAe-*‘\ƒàâ3AÉÞIð!ææÏϱr'¬]Ikâç -~ï£Ø -2çÉ·Äñ™¤ñaò W—9½jtšß¶J×!ÚÇa5'Io˜Ÿ¥í¹Œf.³™_,HXÕý~U|FrÍ?SMÿ¸®˜¤H“’·$´8Ó 6O@¿žÃÊ\ŒßZ"kŸÁ@zýùÀv#=œrdìé#ƒ2ïM~4 ¦S-Í.+þ=Í¿¸š¸4¼&•ØÁ?[µw7Š[áò•’;ÞÃH1Ñ%@âÛ¦ OI -a! -wpÀ‘2-ûn©iñÓ8Ѓ  Õ¯ÔÃø¡Ã)d«;Yÿ±X`ÚÍ&>èo5§báÙˆi&¨ÆÌSËÓ`áÑíûíµÒ®L`^eµýe¨x¼½”Ë„ob2sSÅïib¿(ý·wŒȬþD¿¶ÜCž:Ey„øûz»ôêjÑÅDföÚ¿JSÜH\ ÖË+é\T•$!›km¶¨ ‰ô]d -B´.xïh«RÌŸþ» ÏvšÍ/̬IJMóIÍ©Z¸üï)ñ™3ðEÜoFH³aÚžKÕÖ9ˆ¥Ô£æ²ö À{¥ÝŒêcQ½bì›,.˜Kl2cÉ´÷‡l4³¯£°ËÑÉÕez -ôd[¶¥Ô‰_¼¸ù$ž‘¡?®¹.ê>ö}©¬¥\(![m!yçnÕ‹KO]þcu{¨fAöNx±ûhmñËõãŽÞŸ¿}‹fs’p^uóõ  üœ,ö‰jAæ -åž» nÀg+m¦µOØXI¢‘̈3-߬bÝÀÏrUZ¦Ed+ „w•èXÙ¼„¼ãS’²vg—ϧ7@(ÏAÀ'[^KôÐ|ÌsYf›Ýžlú+I !„p×Kq—†[?hÛßf|&û‹·CsôÆ&Ê_”»t‡˜L&ÎÒ}dÀ—Š3à2‚Z‹Á7²Àƒî¼¸‚´} ²Hl ‹ ÐYÏ8 6~ö‘»?ÒàÕ¦*2…cЬû)â†sî(öŒ‘ÚØÍj¿2ÃD(.YÃõœ×{èüÉÔÌÖÔ³çÊ”ÿi|ROr¿C ÞlTÞQ¥¶o„sÈøê©Ò N¦®ªeL–¦'‚‡VöOWX,+ÕB«É– êÆX¥]}†•Y¾:6Y+OSDÖ…F4hQ¿‰¯Z&°±ûc›(;Ì›¤¯¯N…¹͉}á ‹&zEܱg‘¦ˆ™UVùÝ@ÓäŽÆÀãÕÓ}¶òÅh4Á‹Ã|ÏßÁÑü«ó—:ØX; ý -SÛ˜ìKt»÷h`¨ÅËþÕ¸^sž×ä8³Õó`g$9ï÷¨.S,ÈÖtÜçãÄ%ì.ÚkÆÅ(ÜÆ–Mo¦`Ùú’¼`/¨á+\®M³§ÒbÃç»È÷®}Õ‚Õ¬Å赇L<ä5Á‘~_7|Íš rŸÊFDiXZå÷yü¦õãñ¬’g' lqˆâÅm䄤Ný™û²?ÿ.ܯn·½ùèàjÌõòÔ£ÞÛ:6SÉ»pÉ’3D:Š›ÌW¯ÕB” ËR›g¶ÓE@-ÃRË£ŽÉsÆýy"kâщH ö)ÅÍ6» YdGNóAÀ°òõ:c#Ûx†¿î#eL³ ïÁƾ -.@L-ºÝÜk{îo÷5®µ¯á¯!Gm™èN# Û[7†|4ª„é Pû ¤‚ƒó!O›­ ›Æ2§oUÓân{«SkÆÄŠgì…ׄž²¼ -p¢\Àá°a­U³’? ³Ô=¼Qr¯ój(­}dAykˆjŽ­¥…Wu*÷Uù`.ø#¤0º\°‡ŽÝŸæ‹ÿ^¸–,Á7¢"/¨J\UÍL‘£3‡€“ò:çÆÐTÿ@T­Oè¦mS@Ø<”Íõ÷†#šžàÜ• FQ‹Òù´#‚f¸ k?}5®è†×{Ž«</{ª½Ý©Æ#ýgMF5ÄÇ@uáfæç‡å4±±Q7¬ÌS}éŒû…3—£Ó;¤†©2räVÿ§Œj8Æ|rÛ2¼‹ôÊ?é'©klÌÐâáº^œG½v5Á`•°ð_ºéCâ]Èy9‰³já9ÒÛéÔ_Éyr¦Æðûle$Ž…¬ÉÔ¦¢Ÿš¹kÓÓ’?ù?dj³èJ®”ˆ°–i@ô £e^8¿ÿ¶sb\SïË$5žZ“Qd- ªìaQ¬ûþîL)\j“÷üÛØ:ÜO‡áí1å«2 ¬_Ä@ŽÜメHX=Ñáµ{̓cvò­S7Ãtº•#iÇ "$6tC((.ÃêzycÓ{g¥â¦e’ ‡Ç2¡¶ðxŸN€;˜óñB¡ÑÌ—áRéé©ôŒƒý‘’lšǸœ}âZÄ¿K­í>÷¦2 á»NÞ6ç òPÄL®0(dþpˆ+tîûŠäéÓ Mpk­:OK?ºú¶A4â9Ï IlÞV‹–`-M—WEE»zYôríÅG¬=‡HÅ—Ê=q$¸dç6¶´GôÕõ:3øºïñ›)èÙ˜zÖ‡‡bî}ñ]f™)Î ÝÖz7”jnp¼'ÖSõFyʲ~P‘…4r!ˆI¿·7(³æÊWªîpf±iíjÅÁA47Ki¾2æ¿»KÊøuˆ¥õ´ìüoʺ Jôñ šbI¸zË"o®žÊ ”8§dìRM=HQ…«Ó¦ªê(§(Ë8dûÂ]Ÿ4ÓSs®GJ8p‰/Õ.až5œb—UçxhzÀ]çí¦V ²Yð¹]Ó²»¾RéÐŒF 7‡°„¡-ûÊ@E©ÂØ[Á‚P~×q¥.RŒ† e†ÿFDCpª —J³´Ã2¸>0½ê-6G[i›{SÜ#²]fVç°JaÕ7“€} ý¯h|Œ—^l’ÿ^Is ãlt9TŒ§ªFÒëÊËÞmhžZ"}Ÿ ŠÐShì’››+‡OE,’Ì'ìe/`¾*ôQϘWúgIʽE%wœ‹þ¹·ö¶ŽræWÆ5äÀ Þ¥Ð8KüÎ%'Ql~‹uÝÚ>2„Buˆ¨±—[ê¹(6O"† üÛ¹¾JþEü÷̸×*cë9ýzÅí"¤cí'è4šÆ}kSrl|ê7òô-¯‹´{ªpä!‡O÷*8Eu:£xðg b$—Jö2渟©J½r£o•Üg'¿ bùòË_†Ql·ðŽËýÝQòÏÐf¼°sB ,¨|Kl–°€DŽâ{ŸDPöÓlʽ -‘±&H]+]üp7ÖZ4rﶢ+ˆ0Z†„š¨Àu@ö‡Å-#!7ˆÈ€$Þ -A<•1ÒlÂöÎ…¦®Çò^ÐfÓ÷qþ®`p@¡Õ5¬ÂT‹7Vž*¶q}»rYñÈÞG—rÓØ“˜ÂéÖöË»¾?™mj-þ€(M!:gêÄCÐm5÷lÖ H««înž)Þ†´Ì–T©(…Þßô¿É¨ý‘>³'Sû\Þ ,¤e«ÉÁ7±éCå)›[„†`5"ø®âŠqBfUµ&ÕÛQ“¶w”£!'l üíìø¸ïë"ÝâX*y„rìšÑ³êŽ‚ý%^ž px«çÖÛ8·üÓ ÇÝÝE>ð¢çÎgœ¤žŠ˜ŠÀŽÃå‹Â$^ý8§Œãâ°1® «¡=R ¶Î3+ ©„ásW®ª^îÖ†í¡éKåw2ÙÜÑŠÎÌÆ´÷ùØéËdT“‹uK4tµ[ØׇWÍp?8xpPc÷uí挷d´bäÛñÁy×7Q (÷•þ‹·/ÓpÅÜ'bzÉŒ«up"qS³»m§kÕâX¯ —ˆqÝÚWÃwbÚ»+³;eÀ.ÎþbŽæ)/¢n%ëk£Odç•MBýŠàZÑ&ì37žr`åX-€pJçH–Ÿ„b#xÑ-(›ˆSÞ•C·ÆmT\Ln¾ßòt½²v2 8u0«>3™YMÛ\uþÍjùZ}±z“'°„ëõB¸øzg‡Sy^½1'k3÷Z°©l¬šSûk&a¼D¶‚–þðÅüáO烻ҜMý·×‰ØÆŽJ4»àd ¤³êQHƒcÞKÉTJ"óOô_£bréÕ5’¹ŸŽÑ±}ÊšêÙÞ_«¼˜”¥±ã#°„cDy×g­[æ‰ó¡µäÒê¤zëVáf|oÕ²Hw1:KÏì¹ÚdhœŸ“â#vƒš€JZ|ž¡[ý×*2Q¦a`”Ê•²rŸø*oÃúVÄcûb¦É09Æ\žQõõb( -A(”ç$$!8‚ívàD 5ECÆV™Êë4ÖØ›ºóô‚ýf„/Óœfªg_æÕÌ ƒ¶Bxd§‹ÞòÛ -ìßšSº:³+ÜG1ü€Á)ŸÑ\Q´ÔŽ9K¡HÙø$&Å™‘ù~ià¹AÜÛQø?aƒT]»•ßAÑÔàDla¼„u$ðÃ:§*Ç¿‹îA¯6IcK5ùˆ‹rƒÁ”Aîš’ ñŠþ?ÛÈN"×GÅn´¿r£>Ž:%÷‡ï×\E0îž*'¦´} 1þ ñý¸œjxó0Ž(rkÔÅ£)Ui« ÇâO!åûR:KßÁõòœY¯šÀñ›Ë™ç.‚2$mšç÷Ë{gIÒ3ƒR0[÷ˆhC¦(V:w3ˆø¡Õ³¿úvèur%óhõ -¯Í£›[ôûz%#Zk~u—¹v_£±…øoCÚÜá]ìWÅ7Àúâ®.i& pƒüx‹²¸1vn_’Ô 3ñÁƒÜ36Dó@t/¼§ -É?ýúÖÖí•øvóU3Áîþ9Íò߉ ¶á†eîIfUR,ÖhÎ÷ä$NÔÙ.Y?á§ì”qt36nmäe@}`ð&Úך[¨e·3VOÉÓ°=£pÝ-×A!ƨˆ+h6Bp\W‘e(ú½è(+ºì[‡ÎW+«¤‹Á­ùn“ÑÂ{öœÉ3ãyŘÃA0\•õÍl!®Ñ?$ŒüÌ-IH¹þ|Q› #Td‰¼]”2KzÜÝô¥¼Ä -ÔE]‹égœƒ…×nðý3Ï9¾¦“{ß`+d¹‘G O^SD€Ý}îPG{ªz xÕJÓÓ¬…‡k(†¡'!€pÐ#Ž†…úôå]Y=Ëüï.F·é´ÁÈÖû¿“pò»’jÏÑEµ×bÈhÙ¨YeÛ÷: N·n¸l2&ù’ÈÃ-ÔÊ¡³frç0»j'NAF‘Ë «ýõO‘ŽçÿÃÖ95çÂð -´¶mÛ¶Ý]Û¶mÛ¶wmÛöSìÚ¶mœïúÌûr‘L’IÖ’ç‡AæT[L€MË[”Ëü;/„³ˆnÍã…{zÌ|Æþ®½÷A ²;`£'ÇÎ3ôb¥md¼ì¬ø˸‹Ð òp¿ý:yKø:{H)=‰Æ> ÁJHþt·ÓeœÚ—z¿Ý̨Óò³ Î}^¡¦@ZFú•}µxv»<€ÍqÇÇr`Ÿ¡¬^Ÿ`9À­Cf:¸”‰ ¿ôg¥ûp„CæߘB.!Ê:« K.Ï%: ÜÃXÛ™$‰ã“C ‚ÉcêÈ„(l/!³J79í´ŠçèOxªè”«ÞÌlQX ¼„9aO¹Rd42wÚZÄÍWegÙ_ÀûÅò9yýÓai)’ʯӭ‰ÖS°÷ƒ?R¸Ùû¼y«H‰Ò9ÂÚkUßYÕZ% è˜@)ŠqO~ô}kY°`m¯{eÎq,"ö '+©FqX±…ŸÕ5ã㺄nݨ9Ü=±Äˆ*vŠPÎ?éxÆYzHØEÑE¼«ä›„Uˆ=nÈ'&ã«>³XÙ >o–t™1Ý¢[Â"<ÝŸ1Œ æ0QÉCùrš¾ÐcQ¡Ÿàö½2b Ç £nr†w‚ã(“ŽØ ¤¨Ò4×0÷Y²”‚û„5QùªUþ¶Òm•ûEÿEn´ì)J·‚Ô¨ˆÇ§rá[´ñØT—„SžÅ‘ñSöâši¡ƒ¢d$93ŒÝÚ -ÖïI…®g*Ïm½ŽIµ°í2n­Z!Ž×ÃR@w'ãŒþ3Ç”Óamဠ-ŸbJX DÀ ’¨NœÑnoŸ -\ª³_Ï -W«¥ÎH¢‚øÖ“èÈ`ÀË^¹ælíGwš°|7P²C”·—ð‰,øÿ”7Ð1ÇÑ»†K<Չ؅xa.?8Î6z~Ü7߯#¸Âàiù@ø̺ :¤_ëWxÍ’Umw „"Áéy!i Š}@8nóÖåðvÈRRãöòEø;ÐÐÙÚ¾æV(•^"§§xfZñ*ìã4¨_&A~Àg`”ûüÖ³ Ä¯ù_RÍ‘&úB=æ9± -£ÙjW÷¢Ã¼àüÂAÔ®¶®µ=QäØ{=¾ ÇÚrí I  · µ¯(;h< `ª°Ð‘Üÿà™Š,Ò'?‰Àžî•'tQÒY½‹¥¬ú?¬8ê¹ Íd£r[ºl¹ -· fèÂSüÁø/JÀ4Ǿ¥;2Í"0¸º°ÏÎW2u ‹=ý=‹"…KOz\ã„ŽN¶èþ`„Ráí~“>æÛÆb!È©l!{3ÿŠCÂ<.†Çú_—cedW‘5]åÙzV¾ðÀ#ƒÞ‚Dr0óàÄ÷C‰áȈˆ{'Ùe–?§‹kœ¢-Ñ#˜ -ÒSˆÖl›qà#l2ÌBíDE8l#¢¼lBEÎÈ®nf.­2Ìÿð6U ºùŠG†z4f^†ƒóì#]q‰¸#9­‹oë}P›dY3­luÄÛE,62Cþ:Hn!ÍÊázÓ?;pd7±«‘‰Á€Í°.BÜil”Ê[”¹=7óÔ•oÚ)lråT.oQ‘®¼&“{ÇËá›â9|ÄCÎì4Keï~lé€1©-h§@ºß¹à^°Jôbó„|˜ÙÚÖ]ó‚Áû6ѺüH¼nõ6¥ÈÎ^^á‘ ±NO‡+VrTrR$d8ËÄåùSP€ílìqµ/æʤlÍlò¯%Ú h–‹|ÍXY·ô$]8o^?AÄÊ +,k5j7Í)ÍÌ è%áÊ%B¡ÿ·BMŽ^*Ü–™ØxKÇŽ Ãã £.’붷tµ•|H€Î[L’“0‘I´-òá×Z–[ØËxo'#g•þ6û=»4zF@ë]ÔTì[’Z%¦’{¸‚ö»E®n}º [¤Ö–Us!¥æ¶mÿd9|A> Â!ÇùÈ, -uq3·ËÑÝà1¾¥E‡”ù¸i.®rÌQ¼–¾/Š§¤ÌŠêÊU>׶2]ßnî&‹Åö^íÅté®Å´ÓIsSGT>>äÑý~¾hfb?x»A‚蘠^ÁâÓþ¡;xl%ýˆ¯è±XÓ$—ÏÆ"XÂ8k°Œ@ßÿ ;³¥ë,öúêÆKàº=~EƒdÂ24mLƒDsRds‚›þ»‡'mX§¾{‹OîË¢àO£9W`€'5Bá câZ5$øÚ¢z¢RÄ?p…ñ$`¬óÄ^r K. -Ó5ô›žXïÀ‰˜Xå—fmgwæXpÛ€ÛÞØû¬ææHFªüé„R•Irk#€Q¬Þ¨HCNõøCäHǦ¸pma-éŒW&|« úø;8ºâ*¨Å~i9«ÆŒm:ËŽ/PÈßJ3öR8ü¶¬¿—ÇÚÇV,^Ž%ÿ×®wVÀ œ$Ð’pEˆÙWÑw“ò"Íyéló„.s·áÏ'˜äÙŒ]ÂFS¿Lá—ôìkVæ° XÚ@‰Æ=™¬¾Wº‹ciä‘@y¿|îMÙeo$>ÎÇY–VߤjIÐ}VÆÕ‡ÈÔ [»Hƒ²-¾M ÎÚ‡L¹ Êè ZÕ |Xbq‘¥êµÒHeá ·Š ª¿¯BSkEí´ e-¥­ïZý€í2ùà=`">a»Üõró´RåoÇe–†þÃUÕ¸iRJ(¿•¼mi -ÖÊ9»¸mE,ÇÓÐ×õT*P‰£dp$ñÀ§ºs»zÙ¦RQ!s+F2¿î¸D õK^øuXüoåjû{†é¡SìsÕê¥q·f¢ %¹Ç‚[Åë§-Áø1Œ„êuΖÚjÃ;ŒF{ -ì`íÁc‹îãÈýôuˆj°ŒSnŒ†Ájè†{äU€£ÕR„®ÔKÛÝÒ)š[@™­ÝOý=þa ûÃñ¤i•Êšg”Á‡›â@tÔ葸û®ï>Sºt6dGá Z -`U_ÍúÙ°Xˆøyèµ¾:yÈvFþJV¦lšÛ´ þKÄ3éƒä•³P¼˜/ñ>ØC-ÎÈÖ DÿÄà²Ù`6æ#Þ|k²:]ÔnÍ;=WÖÁÏþôBE01Dæf7)lVÉjp\¾3!jqö¥AD‰B€<;þ$.™ã>SD­ËQ—Hd8Ú¿xO7&öm‘°Óâ1T›Ÿe×=ljG¯ „š¶ðǸ辿lu\šLõÅëtú3΋c윑Á\=lÿôõî/xo±€Ä¥ãò~׬«uö‰ËѽEL£Ì¦ô?:õ&¿“ -ÉÞŸë¨ÎÄƆ/^×£;™Î-2^½/CŠ’]I·vþ$¡[—P hÄL¿È1˜VƒŽA&é~ƒáú/‰¼ª:7ÓSéëÍ ÄþÔgô”}Ç°ÊhªÐûKÿ ;6üàAý]Aéó\JYÈÝW”?0Û§÷1Àa@HÕ5›UÝd“?KJ„‘ó -Êy½K¿ŒIÄô‰b{/òoÀØvŽÇã -’€éûîd7Ò3¡µ¥hã?]¦8çq0Ü!t)­áS-nÒ›‰¬_–Ý£<«™ˆ) ¯Èð0d::uAˆüÕÖÎf Ì[ÆgÙ¾ö&‰Tׯ8³ŽDG1Š?œäuX Ó .‚ÓŸOæ…@(»)mgŸ_a¥ƒlñ",'Ç¢…­‰n2‹»‡B[úûÊ|g -é'5&‹]ìºp€™Ü×÷†¹µß%’ü³ðcSèuˆ:˜½[ªÈgO„‡'¬JJ nµ¶¸kB“CË -5&|;hŽÚQ«iã?¦AWøä¢>_‹Øõ ±ëÎ}âÙtæ¶]7;•6%UþöwFÙƒ-ª *&XNÙ0š¹ðxm†HPú☆k‘f{éž‹Åã&_?n%³Å¡ƒìjn¡ìP,½Â|~ò8U‡Ý¸]ˆÜõšèfs‘xhGÆÍ3­ˆAjlq«tŸêò¶»ËuRƒGêì²uϘtƒÃtûÁS¸žù¼Yà+¯Þ’F¸›°y„¯7ŸÚÓ‘´µ@åK±ktNÉMëgvà(¡`hX/ŒàÖg_Î˜/d{hay–ÂñõJ¤Ðª|GVhÙ=”QYÈŠÖ&kIEaŸ…È¥Sô! ß?¤èŒ[|ç°—–†¸K:ZJ/:¶0‘QwáD£XmÚAv+áªs¶DÕO£ó¦¹z"³?üÇ®v¸nÆ%7WDzZ±¥¥ -'uí½#yb‘é®Öž;\%MÅ’j#j& _œ™ž›GsZ܀ŋNЖ¸ Ùú)°1ø˜¦°Qt@wóØ`êOñä{´8_~Þï&óÏÂ'`Î\lååDž¥ùžª†"ÂÙSK\”1Vpú½#ïa¹C¹A&ýèÞþìð¼Í³òŶó!ÌÞ£dƒ\©¾6”ú5 ñ‚•Î¯¢lœ9°ÂìÝZì:&r—\ §ba£6Û38C–øÌ-Nš¤¤ÉpT›¹ -›{žÊr€JÙjþÁ?¢ Ë.ßX˜¨Ûâ8º_Ý'L`è‰Öú¼X´ÀåÈ‹¬H«âjogl¸010Dz3~ú‰¿ -rA±FÔæ…Ë]â“%Ëv¬ËZIû©ÏpïG—@4“•Ë©vfaa&™ÛLKkÊ«]*m"Æ=Yó†K¸ÜGÁÄf0L„„¸¹…å-Oô%´}Åî‚þÉyµmqà.«5tûIÛNí4ÎÌ“Û -³Çs“Fßó•·;¥ÿ{O~mºl­Üm Oý¿0•§Ì˜xZ(Õ‡©~„Ïs·/âJ[Ž1j¸SôŠd.jGñTH¯ÙÒ_ -L¡ì=$ÿ ©úâ¶n©=iyÜ4†- Ôðià,„ÏdÔdeŸ¦˜ ¼yò~ôkÜiQ™Ø”UyCÅ«µRÁ“s}Åöè—uMƒƒ½#—Qþùº[”ÆUû„aìúhs¾íš¡|T/:.sÉ°­Ä¶ì#@[â_ÂüÍË‹–3¦ãVQ@1’‡¿W[e$hR ö²À ùò>ñƒì_ªõów½»SÒÀÜ÷Ñu=/ ±vé…òø„„ü†û \ø…“oÎfþŠ+}*Æ<5“h‘é¦ÔGB/h[CHaI[íw¨Ï›vâÙ2VB¯0\HÀb{{¢x\)ÊF-µže$ -0¾yòBöÈÔ"N’UýQÛ=5—DÓÌ:m=öÄ–®e{I@ã€r×Fˆx P(Uþàœ§Ü–è³€Â ‰I è¹7ã35j™T‹$EV'Ê1ˆ˜\¯’Z]ì¤× ßü*^+…€c#µF47òC4w©&q±¥ù…hAê8æ°±‘·[ñ?0Â;]§ýÞ÷~®'²IŒÓ`/–æoD©áág¶á)&FVÖH&d?ë»ûÇÍö$\aÝþ1T]%kEO»Õpfh¥A oäë* -t˜–;÷ëªê8ž -¥@Ü_¼Ü•¯šÒõ -Žü`$¢ò€s¶õSVéÆ[ÓÊP—ìGµ?²*©ê‰ƒq·À Â8”ˆ<Ô1ï=Xñm*ªAåCäúš,Ud¡êD«êøj“{Ýš>l0ìÑfµ›çga.Ø'[f›Nµwü­fÓ,žÏM|ÌZ9t1û•±ôªÇ,½ -‰ÖÏ ÃJ4ES% a鉴9Ú‘€oT¾¤ÁËk8ƒÿ /@êI7ï„!ú¿NöÏ-¿A.ßÕ‹ÔoþI‹l*cDaè:XBGm¾¤ÒПw¤ûÖ{w‡¡lÈ!n@3¤ïÜÖxáaÒ?ÞÞEFÕF-‘“ÆŠ= ž˜hYZoý…1*aØQÎå|ÌŽÝ–Víèøþ¹ãÿGkS‰‘ŒµŠðæç_6ÝO¤ïA‡ö³Hc‡”n,âñ!#z ž‰W4·ñ¾˜ƒŸÂàJƒm¯çõ׌T´MLµâûà8Šüï¤üÛÆú`jhI¡Ÿ™¸º8p¤Ì¸Ø¢åœÚ€Iå´(½,'ÐH>4a“‚IÑŸÊh ‡ 1î[~BW¢šV\ ts Ê“!‚Õ^ô¨.%._óA®ëÄ«U1›À{qî·øÏ¢LϺŒIÇ€ˆj{¦˜ÙO3Øý·NË·çZ>±Å¹Çe,˜ÛI¿Œ©e®˜)¶'ßo2ö˜DPœÙŒUæj×{|îe<ŒƒœU‰²KKÒ·òídŒc; ;à"#*Fhb[A¡®v×Å¿¿ -qqÞg&1BAŸ‡‰ÁUÕDˆºÛÖB’õP Ô¶9ŬuÍ--q:2w‡éôÏàJo-Ñù¥Ì1šáÄÔ”+²FdÔ(´·ŠÔN¦ °Ÿ9è.±"`¬èš*Á^NäÜÂz †ÿHgµ·t§hŽ¨dši:+W­8$&<¤¤ÜM88äîDZª’c¢£*–µS¶(j.ƒí!ò˜Ñ§à’ÙüMüïGr}¬]ºµL«/‡œ0€¿s±DPöý—ÀŽ[+jX·iñ¸?gõM”ºc£Yt’D”!™ûO¶]½\7Å•Ú²Þ@nÚdŒü+{©°\¦¶IŽž4ï\­1´#/D+íÒe›ƒçÁ`¤þE³‚˜–šÁ1»çoÑq\~¥Z™FÛÝuÜGNÌ™øÜû¤½¬ýK‰Ã1Œq7´pJš^ÀLÜ=ï‹îÏùï(ØõõK’Áta¤lZ#pV’©íè­^æ -Ž0ÚµÞÇŒ,¨±K•K9rl à’ZUÆÐþ7Ü ÕU -Îá¤Þ¯—üÓ -KÛ–‡at]Éö"QÉø -çŒRñuÄ[ÂÌ7?VDû¯¸»É€ <ÙšRf-ZHšx#d×*µ÷Çûȯk»ˆ.1ÖfÀ -´ü8„εWEUa=Fjõ!ú×MvŸánU" -fßhuĬ‚Ñœo ºD{©#È´:sÍÛÙÚï´ÀCœÓÊáàˆ ŸçÏî“Ü-Ë¥ö@QË¡Û¼³.c…¨b¬*OQ&G!ä,ÁZšxãƒÚ~ìHõÇw:bKûPßT\*\øyØ®â¤÷õ{¬­Ô%ýcüªîë¨Êš”F™]ŸÚEçF}Õ0”~“)¸!}Qóù1‘uJ«;£õDµN|´‚‹pz=Em>©mõÃïP¬›´u‹"t¤Æð:idŠÞ¢ËKÒ¶dñÁ#X Ϩ<3ÞÆ”Ã×é•€?®ÛÙÚ«Ù·RŽv »XÐÖ1i^…zsÝ5*“ÛgìïMrÞòùw‘qI“âßùÎÑ|RÊo¢«ЛäRE˜Îþöæ3XŒìŽ¼ BlI«árÇš¶Å‡V ´o97³ï"wYЫ–™¼Ô^„¢­”¾¯öí&ý³2… Qã<˜Ïš>Ah&à ¼! Wð&Ë ÊHkœ¯Qƒ0} ‚øÕWXÞ¢å‘Þ—9ÝÿCxÐæe5ݵ6÷‚ÛöI*ð9;g$í‘šU' ­Wš’ó!jplhˆŒPxþK ÈÞ3÷ÊgeÎ>ä¸^ü¼1·¸.«'›®u̬·ÆÚÊ9$×+бÉ죎æÎZ'°ž©‰D$¢_Àýö<>mb™IsÜY¢¯C^àwËЇ’»“ J›³wžHÎSY)–GñUn”†Nž#}Á\‚'…®Æ¸ö¾m•´¢ãƒ®E°Å—²SÐúD×Æ^áɘnûÞšÞÓMŽZ*”Ϻ7f$¯-¥$˜3o.åË>W•ž¬Ðí9÷Aä^7 Vb?Ã}qÉï]ú¦Ô;-œ6mý×ú‘ ’çû2zý¯7t> _öœFLôPO ~ªÕ\Ð ý,òx£÷‰‡Ó‚Æé*³s\-Àd僔ç":!4ã°6“ûVw»~—jì^ £Ç@jå7ºû–~‹±ÌÀ1ÎÐ’$ -8€KŒ«u€^&µÐѲÄ|àŒ•DC»—~½2ô·â–-EÃÅ_>až ?™æ¥âL¯¬ u%k9Q “6&-nôÁ·Ñ1™„mÄ yÙ ×Sàa¥â¦5à×- —¿?,ÒÂÄ”žÿØ_…íNEÌöyišÌ¬ÛÔï9qûVeÆk”ÒÀTCpÊ ^âÇh_y [âG.o3ÕrÚ<”)h÷ä‹ú,È|“/5ÉÖ¹=QßúWø^í»ïMABA,+µÌ®[Û'M9­YŸÊ±ZaĘðÅú-'ÅJK?"ÉÛÖþÖ+ýBNš·ác²^Íèž aWOýã%å–·2ïÆo <9a¢þ:˜Qº!mš®âvî©®†@÷ëoŒæqu(Fb¨OútŒ]ŠyÎ&6³C­k­žµA!¿07†3Uv‡¨ûcþz ¡+`ß’öðYm2PsE=y¢ý\T"ü³Óxž8ï»àŒ„+©Ñïˆ lI±’¥Š°õ¥Rs ƒ#Gù‡ú†q<‰wDΪ¹žñ`¦Ý¸8F -|´s:ÎMu2rÍžºøQÙM©mõmô7¼"ÙwK-ª±j'=P:Kº@6y>XÔá’zŸ¾€t!îƒzOÝfD†·.Ú3âÑDÀûXëzùeÀ•2¹oèKk—KaN=·,Ùÿ”aOãêûce ™‹SNgê6!Ž“xÎJ‘q5ðßøtŽf \œÀ*÷wƒ5š@;;2Eì¼%¶›ÕÖ¸ÍËëÚÒxGê"¾7YȆ¥Ú8¼—7‰ŠMɘ¨¹3Vt(õ÷J* âÕlj¤t+û_Î2À‰"²>Ü[üþ²F÷¢:!TÐûðõÚèKƒÆì¾zZŒZ6"Òs‘˜ôä!í‘liö -ã¿ðsœöuaÓåó_?g‘€€ïÛéeg ÿÖ½à í*Á©ið ÅË ^k?˜Ùð>·¡vq_Žþl(‰¿£@þqÎ5‹Œ±È’jào>[ÄÀõ1…IÞÔ¶´Eð.]8¨H0˜EàpúöñãÿÖ[ÿh°2xÙPÊ›.â³éN Ì}]Å…ô\š¿E±èº°ß·ÌEëÙ4 ZQÚââ`›×Ò_r‰ÑXz„‡ŸNÁ1  ÿ€ñ‘×uFµ:w_°çö‘‰tóR˜,›ŠuŽš › ÕëL‡€ð“r¢M`d=¸¦#Dèøk‡ û!îO#vžhŒÜèqéu^Èå­åx¹Ôb#&p¦ÖáÔC™7Vgæ¤z~´Û d[t ôÐ-2q‡W}%‚R´òò3}1é8|j—µÒíÌËF/ ¦È6²§Z×n^m¦ü-JÏ"ØÌÅ=äÚé`ó°ëtŠ”Já[à=ª>~*×/#ÌFà¥íø¬Ù6J$Gö4[mð>W€ÆImJY…jöÎì\‘熛UÿãëŒÈKñ©^íï5&Âþv|y]þ#±eµPÿ±ÌáëN·¿Ôœ¾P=*þáD9ˆf(+ª/d5?{ÍwkQF4$¤xÉùŒ¥p¬¾ç7¤ãž€ÕÙü“Únk¾ -r@§Q-ì¶c,ÛIGZÅ–ß)~IOÓŸXÓB‹)iXY÷á -@ž´ì I¶•ê•l”¤]öbN†ÿí0ÅÄC³„Ì¥¤í‡é†£F‡ß×›^Z%ÖþŒŒÈÅŒ”Ä"¥íEöµ?¶fQ¨”Ú4 éx Hp4l‘wk-.€X‹Ä¨0¨Î¸^¬åΫ4^RPT÷³Ü ‰3Õ¼zLº!?c’+&ÿi¦S›N‰GB†Í,”pà 4úL«ædmüHYjDçÍ)R•6& Ø˜Åô׈ï7œ‰°Ìw×Ñ0E“ëÈõ—© ºïÚ øÖ¦‘…ËÊY^'5æßÕâr!ËÖ§[o(Þž¦lhvÎcT èŒÃó‡Cǧ{iŸæ)5 &¿“f4¶uü=L%Ó’!îÀÁÔ t|Ñ¥”â]<¶ý—Ý)z»ÙMã•æn6ª{:ÁPŸ(Ê—x{Oˆ’ª `HM2iʶ~Iœºˆ–€WáÒ´ZÑ…ÌÑÔh¡ÿæ­µ :¥c™ÆLb%]ÜiI•¤C—C·šßy óîLªì\5˜u>Aì÷fÚ¾š*#oªàþ´¹r?*§ZõíÕ[ìбS»T–gãÕ狤’UZD -ØßA:*&ïs+ÿ‡ Véî©8¨â?'/õt=AN@ëØSAºBçuuÂŽöc%.Pàœ¸ç!9Eƒ3CZÄã±OØTD­A:ñ)E¯l—÷YÈ>þçô©¤ë¹Ð<*,¯éàEp¯˜¸š. .68¤@­(Áp÷¼X>ù0Y5ôðCœM6`qi±,Æ;¸q„HÉ—еxl ¼I¼›Ø¢íò¨M™ɽªŸ*×›•þ㪇ºšÒ¸ÃÌ‘³ˆZõ¤œbíSûd4"5*W8?NÖ•eà¨t‡ÑÞäÊ¥¹œ¡©,ðEÒ'uÌ“%,]P0¾Hnæ௖Ë87-ÂÍ»µ(}-°Ëe´®·jhG¤³‰ã)¢b’ù{dÅëV‰Z`'¤w$ÄíÆ.°ªò sV(f!¡=T/ýE®qûAûª&Sî]éI§Sý7öI×£P½öй0T…ú¤Rvº_9(ðÑzikáýCò#SŠ¤¢ù³ú4-ÿµ‡ðú½(PœËvSJõÔqÍ1¿£«/ùIÏv€}Ôä¼Î™ñ;Æ©“Kžº [·ãM!Xù·¦®žà¤E—Ìõ›]„uÈœÔQÑë9¹æ±BÖ/ZZ¡Ìaû¤9šÌ>•hôoëئ‰¤#Y í¤sÎñjŠOQäÉëó­¶ýY(Ý¥rãnx1 ´Dq/AüR»ÈE¢¢Œ¦ÝQAC ÄGq7-\X«Å£S¡æ;Ï\8ç–zƒMôŠj1‹ö è„ãá¸RSOhò¼HïÞ¸(^Ú—¦¦Ü¤Ñÿ¹JE|¸É$¤§Tc¦Í<@Q”œ-8)îPZb2󦹞@ÜÍ)öÙtÒ—a‡W kFlø ®Âý7ù :×0õ”óçWd/h]OcÆ5$ïÜuôŸÆåË™vyÔÔöc”;€F‰e¹ˆÂ9§ÖÕjÜ8Íõ+;:“ñ’š~ÿ|e®SXè8V‚²rɾEj‘öá\†ùp ã¼×»×•o«SG£áÆû`Úg²óeK«‚KÕ¼&ãù퉿ÊÜÒ:êpdXo±çL°?ùk˜–˜~]=N­2¤[bw]÷ék¾ùZ¾Uñ„%_Šès•wÀ.ìX{?õjŒ92=:Ç]Â(É&„|VºÒ4’ýªº .ê›VñvEö$Ì*ÈŽ -ÞBMYÒâgž¾ËiÂÑè&æ™t9 ›iÜ‹èÆflë߯þN¶Ž=WÏðxü¨ü õß08tÄ„Ù3o×wfZ)“n;ò¤<ö??‹¾ Ñe¸m…óšøÖ<ì~‡|ìÅ¡èøÖfy'å·¦Q…[ÅCf!ÕuyíúÜYäåÐ`•peï~-‰VQ»[èÎÄ%îØñ¶=@)]¯íZhŠÂ Ñë¢_/r9qg…|ÓC¡5­I~װȽ›v9piÞ5¥ëóEÚLŒP¥Ñlõ£õO;h»ª·á“»U”ÿ6C„[ÔlØ[«‹‘Þ¿Wk_i«æ—:º¨N^¡¬4úÖ1(ª÷Á·kTjñ„nÒ”ò´Yȇ¬ƒi/Õ•CHAÚª<ÕxãCw]îÙ‡g”Š¤öeؤI[«*ñd©OØ•ú'j™U–œëÔ!mqÐM«,:àÂàh`Î ß:ù’ÌXMr)kƒøm¾™Ï°ódcS©š)¡_^ëÅ1<ùþ.GHºe*Ü£R+Éï}÷ŠÎgãä»Pd”aïvˆA,0ZŒ#È~R€Ï5ô\ç¶x€Þ=P³‹6ãÚ"yÍîéGO±4½ íï^‡æì!¦ÆZÝÖ©£Mîù `—yWצé÷ì4ŸZ«¯m¤7(/ðc‡gçù³º¢öú}§;”Dþ‡ËØÔ-v$†tü,ˆÚÄŠqD/ÉO»% ÎrVÒGˆ\ööi´x«òêØd¨eMYÎzé¶÷ƒ¼¬›ô:G„p©J†:l!÷F´ï€3»:$›Ù0t1´±ˆ\Î@â-e]÷•7þŒE|µX…âô\e«ngï ¢-MBDh¨ur6 ÷Ÿ’šïü -m:%t†LÖð_žÒ©}ò[D^×C5ÃùŽSÕ†0pa1ÚcÞÞ_Èê%³ò5´´ÏP6ÚC¾ÄÁ±tñÓÖ‰Ié;}r!†”XàPf´Ëù@têÍÛ"¼—!“ÀÝŠT0Ë<¥\` ø°Få óUi©FB~µ‚ÊxÜ•]É1ד7vZÊž§_vÔU™æo8 ½ÒÔᓽÆ_ˆÙ•àßzÍAhòŸôB0óä÷µÎÉ2[^dE1[X£z {'›â l÷?F'†* Ôv^‘Nó¦ð0ÐÚ¥¬«`=…qëî/=ðý òËPìÁ¿¨ùÈg -É&oqØÓ¨’Fð!ú?S ‡ pÂhîª ¾ÆU%RÏõ­_|}Ô›ñŸT{³€É3ráã£OÁÉÞ_ë Lk VwjtltBØ/JÊè#>qI' -ævYºæÙ+|=UA5¥~Â…¿ê²³ÙàhX´YlÇÚWï‘ï$¨®kŠ9YaëÉ›c¢ÐëƒÄ"Š¼#©ÞPøôéœ *i°d µÞu£‡éJÈ¿š"Œ?»òŸf5õJ¼ÊåÖ ´oàý3¡oˆ°Û5\—e‡%J‡Ö±´)J)a£œÑÃo|¶ùµòc‚æ1ŽÛï´ú®êò@»±?Ú1þAiÕážKp¼škå/z9%ù ’C®ÌRãP§Y§87ÿë¥M{sÞiq¼&Ç¡A{AÈ,È‘ÿ7Á3e®þP³Ÿ0f)næjüXå®ßMõ]ÜUúL¡ ¶³^ã7Nµ#"0éùïø¿kǦ9Äeêï:Iv’*l\Þ¹3‡ð. šž8ª³å§²NýÛ0£À½"ïMµòËFÔKc‡‰4¤$"‚?Я¨DîÉáê0+Ua]Ÿª€@-T¨×ƒ/a‰CQnŸç{X@³™Ù(ߨ4DSÉà ‡eB ùú½½tàÁOãTÙ5l&#PCïù6`Mj½ñ¹áÆ;ù‘E¥! µN€ |·o&…lJ»:Mfá´( åñ²a(q5õž:?Ú~Š ›CGápÈ]­â¬iD##œ¸]D0W¦›!ݶÜ)í«+‡M‹¬îÅWáÝO*Q³tT#,úÕÊïB< ®°CÆYéì—û=t—r´*¸s”Ýêk$×5#nˆBõéñe·%óD|á‹‹T^¥ÏRW¯:™e é¿K¬õÒ-Ó‰èê'¼+ܸ|||#’ºÃƒ»tgv›lZ1±uËmAeã’ªT®¯ÄÚ¯›:½!­lôÆõc]”‹ä»ˆöÄ)GEÉ¡ßtÙBa[bd‰gܼ!ï@‹Jb©¾B­kãÚ‚8ZÓº¿K›U…|Ý)b¬ òó5ìÈe†?rq…ÞlóE<|ufTš_óêYA"«(:Aá‰ò+’”6œCç‹j/)?‚ºšÐˆÈÆÄûSq1ÍE—ø -2g¯Ïé6M%Šg&Ú‚Þ½õ¥~ÎóH(v>O§/‚¸J6qB0 `•F™Ylù¥®tàywÕÇo‚ÌïYàFôbѦûÔ9N<ÈJõ ÒLRZÌIXÂD¡àbT+Jÿ‚”qw†pk{ÙùZªv«ÍdIø¼¤‡Á^‚ùXà¥Î0­Z¬,ÔXžÇ)µ>=¤߮?¤´–oÉØUQ÷Užˆ¾ÏÀûléJOøãú'£÷›±.M„qiÀUÉõ,¼Ç+üÐÔ‰‚-êxãA*oàoA3þO\Nį —<Ùý¨¯•#Ö9–éÖê¾×}Ö|ˆVÙg‘è +—d>0™3•‚å .æþi¢f[ˆnCËoö’U—]âD(îú{Õ€(!êØïÉ‹·-¦úy/Ž‚ê3z¼ZÔÓýV•?|MØÅiÁb’ü?ãvÈ•Þ5Réj¯Ÿ1N"ùG‰Øæðј8Óìu½†¹b¤gHód éæSê·í¾¸¼–* `PßYwô!¦þß¹ì7u·#ÂÚŽüT¸`ÅGŸú 23€ƒS°Üëê˜ÊLüùF3°´Ò–g_ü°£ü@_¬Á=°ç# -%±Ïy2«ÊaÆ“žp ÷öodz*PÒ‘¯Ë -€=—;ÿ–qw`OýÈøXÜ*¦†LR …N{Ð~½ÛÇÞ²šÁè—ð&§>ZIYt -„É´:ÌWš½g¼ –˜²H+SF¤£‹³LÕ`˜¼+¨Øé$,¥ðÚ¨ìÈè/ÕɬV¾Ò\¶PK²½¢+h¢Ñ*5z$O…èšÚ[dª‡¸Ž3lúBx‹£ë¥_x]V®hN•`ÆÆÌËÓCQ©ÕF}ë*Î÷h´ðJFá1¸±îr6±·°mTŽ!ª¦7Ù&é Î*‡4s¡m#’+ ›bþ—efƒT艶ÆÝe JhµSº=ƒ,‰!iÝq$Ý´Í|²&†K•’k¾)­Ü(#[®N9cþíµˆŽ©0ÄêS “=X~Cá Ûì(7å©ðx‚®@´\ ú§™€kÈã¾ëÍoc£>Þ_¦ªsGm‚ÃÆS…:ïW«ÏRÂqh“[E¨¿ÉacÎþäÎTNvš~ ¾è~Ë L”$N3ix˜¡s-(b•¸3¢Aöûr–_/ý…,]>#Uu,»Ø½·´ÀÍp؉pª®ÒT†JƤÀ6ïF§&£cîCÐüãs¾ÉjB›Rô"I¶ùé?`i#&³ð¿®ã™ó·ËDȧ?~Êéü±µ‹Îó+{;IƒäpÒ{†ëQ-QÿºôX¿{`q£Ñ†ƒ@úç"œ–Æ‘¯¾sôÛs_.xåx¢Çü -8r® ljKu;FG<ÄKÚ$aîwäû’Ѓ.xÏòe7Š¥Ë¦“[EGˆ^kz÷M¢ìx5bHEgÚ'¼«éº;*|¡¹9‰UÁKŽÖijŽL¼P–Ô³ÌxJ’½Å µºÂÒÍr£Ë’èN-se°2™nâÐ^à`#¶—‚6$ã;D#÷Ò¯;V^ž¡®µnHü¬ÙiÎÍQàÓ¹¸„™ZÙç5òœýj ÒýÔ»»–þÕKʱkUÄ®â/q2œo®Ó`ƒ&:õ3Úš÷Øç=i“Iy•HgˆLs\²èåˆ[Ì2üj·¢y/ŸõNMj\@^Z)¤d“5fFÕ™åt3èÙ<êd@[wo¤8†£Zã,y.“ j©’j1—zàÈW¤šDx‘âÐÓ0ÿêšñ%}‰.¶›jòd¹ªw¤¼È@’Ö·pwRÑD9 d´VU”X7 ºû;ùTÆßVÃzÈ÷Gk’„žkÊn6‹‚go²Áý¦Jîá´ð(Pý¥µžÁ?–Ãe„.®TÿкonŸD¹÷).ò‰ÐHY[Lƒ¥Üh®"‹ýÂu§uº }.¡Tãþ¼•r& Ž,ÔoíDw s"«u‹‹»œN†\ø^§·zÐ’j~ -ÁÿL;ùòEòï1âÝÎ÷:Q@÷½8c‘©Æâ霩˼Ç3,.ì„3ÄÖM.¨å•”á!¸5£§m'èÐÝÑ«:ù‚de‚ÂU·R–õ£±vz¢àòé8 -CÎñs΀¨“wbTÆ|³¡S¨^Ó*]¤?·¥ª#ÃfÇôl„) *dðu¥ÂÔ‰c—†5,#€ÅØÑY¾MïqR%SP¨ÞÃÃFUyD‰2_“÷[©íóÿmYŸcï‚'$ùh’±¹ËÔØ’}M=Â7œý‹û×{r}Y™îF)ŒœýŽDð<2»7ÃkÚžP}Í-¬MíæM“¸M®Erzt2‰¹…ãÐÊ@™–§€€‚^½Áe‰Ž¯oOEI?beZ¦O¦LàaÎoɺ _9úÙ Äè -£âùRU?|‰NˆF¿]¢ôÒç¸"ˆ3dbóZYíüeAàæ‡ÀeoËÌ „ðèÚEÂú÷ѵêò'«gw‘¡Mr=b_„ L\LÔ™ˆˆmëG³EÛiéü{w:ÊGbeðÁ˜ÁŒ,{çÇ“8â”Ëì4`šcêþ¹ŸG‘ò)}  c/IäÊ5ÝeD÷ ︱ ›ÞÃe ?Ô¦9¤ 1æaÂ]`D:ÃìÓ*þu¿ ž`e”¸|Õ7t8§æË¿èßü€|í=€Ñ ;+Ë ºc…‡‚B<>’Ũª^ÛS•åp(D½Q,œÔ^fD³+M#Ó⨠ëü‰‘[E½LD }ŒdWˆ0±hz?¬þ|Y¶Ë“6¸âsÄÑ›?W‘üíüqÌçÏå°,'(;,…jG@æK¶LˆØ´yìv\‘5<¶àǤWþ\Q?'Þ„y3y½Ï~æˆþ«¶Øì„uc|ûFžQãô‹6Ù-ó'Σ‡$ -mc×r÷äfƒÙç1Y–‰¬{ “|±#º -=M'šl‘ø}qÖºZª>àW|„¡1M·Ve}vp½“¦ñq ˆ“Ôºž¢If®Î-)•Geþe£WLÎkû: €±Ëô=$ÏIËOÁ§ÐX.¸˜LîÁÙÈ°xg%ò÷: ­§¨Ö°glÄì®›Š~˜$çÌŽÙ úSÃÊHËš]@ì'âEBváGgW²ìã:l+¦ iM‚mºGç×È‚?ÓO){ÁÕØ…,iž@õf¿ [æSë‘ý§(- ÜêÇn9K ET Lp+ùc9uš™éiPl¸Y ôÿ~^»C{ýeç€ùi¤ô:éE Ï]¹zuà]ÃüøúP‰âÇaÑ–%ÀïºiR´¦ÛˆrO6àƒáë;!ƒƒ?‡8­vA0ÈÏ%VpA¦†Ù¡·ü‡ˆ‚®DVðÄs•Gó}Hß ÷JU¯g…Lö• ¡…,ƒSîéÊ>h†TV9ƒaéY’îï:* -÷èu¢ñ+Xݶø¿Ê kB×į†Ë¥³²Q-«´Ó!_÷jR·N4¥³K7²óä°Tr ioø#Y­U1µÜÉÅÓÂÊži¼Õ [Ê#Ì«Ÿ%â^E-R:ÊÚ=ÊF”ä*ßZï{w ‰Ù`†’Ê’Þ$ÃKŒÂ:êßåYÒ,çÇÿ_ì| Çî.Rút°´£+ÊBT"¶Câopù(å,Oƒl„—¨íiã –:>¿oÒ©sÛÔ&˜ƒû’Um 瑹ÅËÿ¤qßn:ñÐØ¢8X™~0˧ÆyÉ«Hšê ½'͉(ãývFÇØ­`SÆ Wðo(¹Û°DnÕï٪ɷjiç£OHO>ébá@)ð #…\Ôdæ=ê¬ÑÚ¤Ø˯ró:»"D†bOŽ‚"Üò£ ¥œIÄ.ÿ™ 43 åªOGk@ ÷Wã?°9Àõ]jœQŒ¯Z`láÀG½z‘# ×vJ‚T;šRŸû3®JŸÖ¬nøêÝ üµÄ{‚„«å‹BÍDœsÜ–»p¹Ieq±oÆc†>å=Ÿ¢ØäçÁM€H²8›uIv+"¥o†~€¤ÌÅ9Ûæ‰Ë»‘ݾ¡-ïs‰ÏH>y}/Òb¼01ÅÙù=¯mTµu©š$” Ulq*µÑjAÏ.OŒÍôJ¶^ ½›ØYó ðz—þÈô£Uñ[AuŽ”ÿpë+RJ5“$f87Ptñ"õëÁ/kCh÷ ŒH0<³´W·YD»µ§O‡Ä€)«˜B¬Cè"¿"¡Ñë!3Zº”—ê5Òcú©:f¦Êµ›ô‹¼ÑYöÒEÁˆ*óœX°?‘¹ÑB(sÄA4aŠåujàŠµjÚAÚ¾ÉóaÝN ÿÍÿú0É80´1—)MƒoôÞ$úÞÐéQ -žk3g®/ù xŸ‰_¢P ”Çš‘ò÷VWéóŸ¼ËÿˆœDr¸pc-°öqiÏÄË„hˆ -ÂÓy~¨¨ý\=Õ¹P`UNí‹©9W#®¤E',†–çÌ3|­4'\»Øðñ:?ý .&Hv€—ád—'žCTy|úiKª|)ââ¹(@E†‚ï@ßã`Í1Þ&wÚÔW_öéXñY¾?²ª®—»Zné¢ñ¦þƒÏwLFì-¯ÄÈáÿÎ-^S¾«¨Hr]Nñ «4׎ïÖšo× -(´Á+é/óYÓ*å5RÞš½dNeÇH‰¶noŠÉ5 Ÿ ~a†ð.'–Š"äs†»Äùòxͧ—A2ª”㥚†âàzA]DÍü®$®';±\é3t䪾ùJ‡{w¡Ñ0rÑ®$åÏC/<â!"Ô ;.ÈDÐl^¶ #@_%4/ÂWò§ê9ߥ71سQ®@œØ…ȦzneÌ«Ñ/Ô•›Ë5ɯLLáÞ~µŽ±o"(†›eñCG¯Ò•ià&)è¿~™Á¤¸ÃTÎ@Þ·°W &>µˆ#°W6ÂÛ‹’0*#YE×ìo—L$5R±ÎÅJI³½qIä0 ºzm=]½M èÃm”ÁH’쇫‹Þ-kò¶1† ë4òˆÖ¹Z°Û8‘oˆ“¾ ¸6ˆ½ã‚W¨/·âªñoü #(-K ¥§ÃY´/¼‘Qàƒ¬A®{+>“[oÕÛFè#×+@Æ@Aø24?JÕÏèfç²Oæ/º´8&çw5´EŒQ2ìþ'SÃ.OËÿ€Ðy­;qnf¹¸©‚T†7™l²<•>‡?ž²Òë1v¯„tHnLN|iÄ”ÙS ;2±b@üƒÛJ<×klª¼RBYýZ2ï´,˜^@¾zè”ÒÃù»xz¥ì‹º´˜>ºVkùiM™}?Jà, -‡£<= ðwË}Ç'V•ê¯‹Q¼ñ*S©GyΞɣÍ8ý¢pëgRl!ÍOý×’-Íþi-|¯ð/Io3G!ES_½‰¢P‘7l>qãñv -35e’¿c%·šb n;ÅøóeM<ÖjAüaòOJ«¥q£â7¬¶ãk’…D¼%lj_ø©âùÆëÄs¡u¾‚Þ¥¿«-¨×—cˆ¦Êwƒõúnú‡ŒQ Œv`ä^\µeZåÕLG×òÖWñWÙ£ ÿ¥PosAÊ×ö¢Ïfu^‚“O³}Û -oOØ]³-ÝÓ';®é”õCL|ô²Ç‡ »Ú³‚ð…ȬeßÃwMS²‚Ž_› ßD{©ü¬.vx€÷WÌÏ~±•oúµ±Æ‹thï×xÉwÙ(üˆÌŒÙ`aº7îOZ¹ßƒîÐ7šˆt7”],–6éÐ9O%ßÞÅËkÄ+—^ -áû‰<ÞL¡ñsøÕ~‚µ§.îå3Dwº ää2È«[Ï­#<šT'}ØØf(.Е‹Í«Â'kð£gÊsk„„$T_Z÷¥`K‹±£êãK^Žhpo¾YvÅ&\@ £e`w÷é®ÈÉv©ž WðñIR:îçì0ãüf#‰ž/¸¶±£øži¿SbÁ½FRG7ôE…·Ç,409]ôcõö:"­—OL«(ϵ>Šðk$DJ3ÇÇ-A¸Ø¥§#ô\øúng$@DDrÛ­˜ðý\áE±j’Å[·úÃÐŽ ­‘ZÑO­1Jqˆr]˜×h‹qm6¥TftN“’ÆNÉ^@%4Ë"’ ËQ8BG»³ÙÜîB¹ÔñÛs˜{N¤Dcôå h—)xšK(œ¹ª@âלž¨|Gº(í½GvuÊ 2Ôƒˆ+&èÈ¥ à›z°˜¥nK0º’^„S‹ô´$±äÂŒë‡%©Sõ<ÙJ-+.ü¿–4’¤¤…â®ÙÝÿk‡væ%I–`ÑA~–W]ø©wèªmødæÔµŒˆvcC«ÒŸ‡WA#êE݆‡„|-‹Äs÷÷šv§ñ«±ZQépËà[™£Ünê+…¥FÚQ~ò°þh6Æ æ¼Wõ·¯h -Ä]H˜¾Ýé$×SÝmÕÎsž_yÄ­ÝÎÞPjôrÌ S³ôÆbYBž{f½fH\#âïgÎ[åkè㾤Õç -#ëñ¡AÐÉc‘ºÓó×-CÌ]‰ÂDºI¿T?,ÜçKØOR%v²û •`m.åjµïÏï7.=£ÜX#šç?´ª^1Šë. -K\hÕh—á’‚$çˆr¶÷=e—ò -µ†§–¾Ó¸>ÃDA Z9­½‡ÿ [}RÿáƒòíÈÏ$/üí8Édý` E/LùÊ. 9â$v –­)’P4Ìø Ÿ¹Ún)܇€är¾‚£Ÿ˜ƒm(6PÞ²ÉE`)ß¼fGÓï•H´LÁ„“ÕNø‰ó0,‰x4^&CVïa#Û¦Þ@B?ŠŒ”5ÙB‰!0l…Ÿê¾{]‰„›®‘íÕ[sYIjd¨Y)ê1¹¡ËcHWv½ Ã#|D$ó®j#ä+¼öc"x ÆkØ.¹Iàµówìs—®Aoz” È Þ²é¹@*¸˜›÷Åaô4g&ñT-~0…!ï4VeÙ”q¢!Yx®´*´x;݃Æ@Çh’ðºñ&—å nÌÌ’…|tânÔ•˜Úeà7>¹ÂJyn„‡ -’GC¤ÅÏCýù%ëâÓNA™DIsZ?Øš»÷ŸQÚâ„*¯»t¶åjó™¬T^JâÚ=oX%íÝ\ÑH%RÛÇ.œPP=ÏÄ}Þ—ü¤h H(„2Ü9E `†ÂòÞ±ûÔ=¢•–\DX‘¥ŠìÁí–F²§ÏQfêêX¼Bµ!Ç¡x^PIÅÝÜÐ@¿C¶ -J÷LŽŽ"ð£)ÚÐ'•ùêa!6¥Ñ‹o#äßîa¸ØìêînGbózt3¦ ~{ÒÞŸüDZY buØ:'ès׳÷«jÁÑÅ•Â-ì%fhÛËmU6%Ó›üq×— «²Ç‚ÌÉ„þ‰n–(£Õ…ÍÝo¸E -;uÈ/võ$ ‰;‡4;eÀž<æµ¼“®¿i{/ŒÛÆÇѸ®‹Á²Ž.°$0¯ºÕÆ/žŠ|1Û>i¯4E¾ýƘ•UÐúº,}mô¶Y*˜ð.Œ¿oÙ„ï1²1^DwtjÑ»_óä*yó(ªº®72~–﫤óåû¯¼@:ÄÊ€0 7ß$<0AsŒ¤;ÔgØÇìààNž ¡0™òÂLônïNt-tøs—²-A’9Æ/»¯á×z(¥ò)ä¬íËSE´YgÏ Æp¨ZËZÊ–MÊqS$r#ËOUV?"ÖÅh|}gC¨G„/á(­þ€RèŽ%’åB0ïZÑãg’¬šºÀ¹ L`‚Ž¥nb±)Ÿ¸~aÒkÍ\W sÅr(¸*Z :,&T^#´ÍI- :Íóêj¿Þ­*æ³ì“çàHü—QÒšójSIóg,r#v¤6²ó‰Öw‡ìÉE“rÖt½†*ÄÃÝ(wX?žiU’Wr=:vEÚnbŠï‰´‘òE`öî?c+^ó[üÿ”ŒÜŸöŽÊâµD´Næ'³·døkg£½Iå­g=aæãÉÂî©$A¤j‡–†f‡dŠi²àýˆgéüœA—Áë].ãÓîߟõóçœJNe¹sÝè íñ¾ì_r­O#œ™Ss{ýk­˜7 ’8Ÿ2 .¼¾úV†í,+ÎmÓS‹]®¨]PHXªÕ˜1§:·2ÏKï”m&§…Sä莱öؘgܱeîp -×Za‘°ÿýÜÛ`:òdßÿ¯'Š¼ß&žõÝ ]¨Ç§ ·âЈz i,Âi=Gþò{J$'¢I_¯¡¼!“L¦ ßzí´ä¿-Äq¾Cë¼vNl‘r„eò -U¾Êð†W¤?Ù3·w¢Û‹U(ÉÅÓjhJÛÓó骨åÑÞ@>IÜÆgi9XtPAdþʾ -,"aÊÜŒG¾¢„X“Ù†úµ÷áÖ®`êéþõú6mAÛ'ÎÐl• `‘… ,óŸ3õ×Ìõi‘f?G.H½S±q1YÍŽ²]„xºæp¿æLçrë] -ô‡«¸êIúEþ¿¦3 þ‡Û>Ñ´^.ßé·®vwÊfUæ]Š¸…ü0jÕw&­ ðMí%ÝÚ¡· Jž5uÒ.qšöµÒ‡ußž1›Ú:©FâÄÏÍËÕÑÙ½#–$Ô%›kÑe†!0‹Ëg¾— …ö¯©ÐùÜÑüÑC‡¸€ÕâZöцõÊÿdu;Õ6ûcÀiûfC‰oŸt£vlq È¦4wËßòïTa_h„•¼+‘éïjšuÂk Çj‹UiAYmÉ< -UP³Uöº•ÚX=|*„@yó掞ó¯Ÿn’8¿¶?HQ<Võg“½ Ò£Vç¤K Sæ°Ç® -ÜäÈ×pN“£‘ðèÝ, -ñ6§›òÅ4W´‘³:¸ÃI°í÷B_↉7ì4æÄ>2‘=q@±ŽÇh2PÒü>„è6m½ÙÍt±zÔÝ4bÃLs”·†±Þ ÄÇüØ|‰ÝÚyNÿ%‰`iuÿ—óÁf¢Î&se〗GfUv¦Ô§¤•“³zò^f’Eà°¢¡fp§¶Ý#ØÙ€9£]A ò’åUø_5¬z(Ë.°<·_yœÔH }à¶s¢>Õ»‡JÙ{š€ 0ò 5'áIL/‚XåËjiT,;Ô¯0÷æÆóÍÓÄ -á K—Ü -Då™ê/º£•ºSÅíßú ù¡:Û´Á¶üj4ô¥V•gõÃß{ߊl¾4¢h¿ùHU+š9|¥<-Ltï~†Î,2›ƒf‚8®–¼ò 9žžXtÂ$“g?} -çäÞSúñ3¹ÐqFVd.œ1õäºØ"Í´Kr®Àă[ñ>ÂJ=k ‹1«ûœˆ†Â²9ûꬿÍ#ª «Op#öéØa c²¢Iný´ñ¤Œìã3¢9Í-ù.dš÷tZïsý}2¯;Í'¨-´ˆà \Âh—DezlŽ8PÂ”Ç z_aÌβw6G? 6nÌóº|ÿp^~ŠšÛ¸¦´×[¬¿Îæ 2)[µÈÏÙw¯ÎŽfª‘ ŸÄÝ$€8Fà¶ä™é×ÓjMo®'¯w ¿Àº™‘¯ñA·¸n'›ã…¢ø6oSëòY`uŽXdÚìùKß®Ê÷¶’±ø¹šJ©v_/Èš–1)&éb3ã”ëÅON °3–IŠI ¶‹NE|2Ü@lÆ…w}ÒÌ3žN‹çwKËñc›àPvÀäÁ‚àÉ>Ÿ.RLIˆ±˜²?hŸê›–ß_E7 +´hqÉÑé.ì…¶ üï~ñËdüvBa°l¯yÅ·ÀÏrª*÷åj xzªUL‚\le¬(>–aÕgÀ$òím“¯17ŸÍÇ:íÑŸ»š„LéQ×~£Ø¢9c*Ù³)ÉÕöLÆlË©{Ç°8"§‡¼lÆa€^k«Ãýé”8ÕƒÌVË´ë¤8 üH}ðOÅ©O¡žº÷-fXd%r¾ÿ­$b´ñ±6ÚgRF[ºV€qB1bc9Îp96Ø?QHÃÃLA¬ õY×|¶é¨„Òˆ -'+þë¼ ½ W!*(Å'fžµ¹‘±ÖÀkÝnj ùM¦/ߌVæ܆',C‚=\ص>:,Y¥#¨í\ß3€¤XPI‹¾þ)֌ڂÀ™EèÙzênrT~%é–zÇw<ö³‚Ñ‚ü¹ŽeóüUÞtÌÐÄ4’$®³íÈ”]Ù†¥;³„Š°G¯øM kùxýD1`"ë]êC3;ãü‰Av{ȺZ1rÁ†.€15Ü—–±P÷¢u ö^ Á°ü´¼Ì§]œ¬F@¬‰ÞäìD%SzÀ´«Çžt=²P&Ã8´XQNÑÏÌjƒ Gi¹©ï*‰»€^­[ó*0ù€Ö‹2á‰)jz î½^à8'‹ªïTƈÏÉŽho-Ì4:Ý•ö([å]jN€Š²‚Nþñ¼1E„`Ÿl=E9§¨R’#©Þ±}RÜ ‘Í1.mؤ÷Õ*˺et}TÁæ“’Fw+;ý¹¥XAÂAìu/BöÚ<Ú“)¨ÁËîè¤B{Iã¡í¢æv–L–³<‰k"Úè\¥ üq‡N¡i›g-ÒxÛÕï®MUKq±¹žÕ€œåhM@"lÜa0«ûM:þj?A·­ër°bQç­B,‰ìðâ±"ˆËih†÷CÆŽG"ÈßåÀœŒáÔ]®ÝÑ[lŽ×¶Y§ -ìè¯@"&‚–râI© Ù8B̙Ȩ;œ¢µ[E¤ò3_Ç(´Ä·Ê|µ.¢<ÞI0~ÞV˜'ãÖÉŒû2Ís3÷+„fù3‹ë÷øRÞ÷xù®7Bsv•ÎXÀ¤ -8 -®wûÜΖ¹ì “üÑëY&ß­÷_÷ie9—ׄŒW½|¦¶-p r¢¨ê>R¡„Yô<ßÞ¨W.å°SËŠhŒ‰ÏÂ_¹ÇŽo~ÿr©“‡•¢‘ ܾ¥aŒÐ{ÁÑá øJÓ¦!ÞñõÎúæë©Ÿ÷5–•QŠûÌW+ìÄ*Aõ÷DLÜÜÂ#ÜÐLáuuÇ5 T‡Rí«¡²£G€ÝÔ6¶Ç„«¡ˆvêTH”´,|\,]Ÿ¬ØMˆKI_~(츄$•i?QoÈÂ×Y;PãðÕ2ž§JòÓ§uF¾¤QC È­ªRz¹ôv½y£™•nÜžÀ:ºµÉ¸1à(-ói.pIAÚî UíœdÀÄèŒi¶N“ü>Zk/» -WÒmÂ1` …©Äˆ†ä£7/h¸FÐwè[ß±â*úLyo2û§ý1ÖBWæèÂpV¢ ¢F©Ì þ]âœfSÔÊÛŒ¦IÝb¾··ÈER*Ìd¾q9êˆâÆΚö|êSqœ_™:V¸ÚÙnЊWX¹Œ¨î@6ž”D"|.}Ëva³FnÎ>-”fWˆ×’äqøÅæZâí¾©L9cõŸJ©©µG_ ¼º<‡¹×>&R3ÛrsÛ7å” $í[1‹Ó~Á gr˵ý&!{R:^ª«Öøa¤ò §tâ3f<›éV±¤‚¦µ#“Ï’Iž$M2ˆHH"‘5sˆYÿt±DRÕ€;u yP?¼ÇÁ— J`Ãc /4j  µô >[Qù[O w-qRu"™&LÜž]{ˆ^"Ï ƒ‚½| š½ -ö¶É‘×KHw®h…t÷Ž-b¾¬“Š•pcÍ|¿i,,ÛóØ—u+´ØÏ™ˆ—Ì÷ ,Û-´îßoÏîGºtUµQß“ûSûCm+ ¡lËr'{ÍòÈ%t(Þ\%Ý sÏâÃV®ôn«MÿÛwÁ5Óã<¸F¡çîñÄ2rZ+ÒïßÚ3jE•Y‰´zg¬‘;Û¦ôЧò­ÔK{F¶6çù_Ð\ÄPôtT¡D]go~¢± -ÆÊ 4’úY°¨üm~œÏ\œbL3¢æX}ßUTíƒc€Bî?Ú6ÍÚÅ™|¤µ TQI•$ÃÓ$4ö¤´¥(噓5? fÁ°pK…ˉ®íÅx›BÌ•–Pei·aŒØ¶«Ù£ -´×%S‡ž“³FDwÕ®ï°îéõaì‚ çã¥þXæm$†æ«r}Ý÷ÍÛÃÖXŇåñã£à]ͪÚdê[a )ëÖ=f¦!KZ¡™ŽþyXV]l¹š+ 9þßùvŽ•%Ÿ°mêbqçYåíãM[Fl³îÌaÇF×~¸3WA+ƒE $¤a—*d@„HC¼%S=À­`€“ÚÎRëåtÓD©ódeÃ…Ö$°Õ#ël‚˜BÝó¨þ„kë¢ê QÚVŸV9:®ð]îÒú“h[ñ†÷ÉQЬŠP -†WZ m|'ö oñÈáGøjÓôïÓš\*ågÕ1ŒýÛ옹w“pu™%ÛÞ-ØäËöú¾(€CWô‚ËØN|G2†ùÙ `; º‹ºBœŽ¯whØÅzw8ê@–vAáGª»å€”xãc6D]1EˆU ä;}ÜЕ=ÕÿQöß³ˆÄÕáӜ܌»ªiò‡Û|²O3—:&¸”ëlt;ËÒB‚¨ïLj'[ÅK;ç!JÓH®yÏí`(YØ4žS:>±ŒvÙ°~™åóÁC=!$'wâÕ,àö‡ƒ 'ò3BMa@¤§€£ãúÏ (.¦GáòÍöªß%¾û¼¦¥ü_û}ÖÞîd°G"§§Õº=a>v«¡h %m²³täy¥£m¿0LYÄ|-ž'¶åóVl>tq(UhIm¿Ñl¤n}AÊîCÃÖň(–sp^±aç×¢‰ðÀå৹t±™|ô D‘ïA1À›jI=Ì\–ƒpý ÎÔsº²] 48(ɸ¹dÕ¸”È^ãâÕÁ1ïÆ„S1-ºÞ$Ï»¶×ì1©N!…Ñì¾l,ÜD5U/‰üöÍA†!<ë%Z×êê/†Š 7©D1`Tj>ów’G_'È…ï› 4™ž%$"+c´v -ȸXĶ©ñÔѨ«Ä½%†:rëÑ'¿Ž‰Ú»Ä¾t ó‡"ó8]ßIr‰›"Íɶ•9LÙ?™è™wÞ†oNczX¨U¸¬ñÁä‰(™'~+NŽx+J{¡1¶j=ô é;Bcß?FÄžÀT4E§ßå²eò˜>Ám¬VòØ€ŒÞEä{À•ŸIB¯3Ÿ¿.¿s6ÀÐÇΔh“®/ÁßfÐW¬f­ÿÉàÍ27EËË/Yb›'¬OÅün¶\MÁ7z›?œÌΊꣂ>ûâáã4Bªîƒ¹F1Ò1¦àô)ªáÏÏ6t^m´˜<ØŸWUSÑÙôÑÕP;vP@›‰BiXDÌÚLoTÕP ¶8ò.g–¿CŽÎÞ\jóú×­V(/OÛž\`7ã¨3—sÔúB#Òªµ?¬ dîljØòß°øí>Gp‰û¥ñ™5ÝÎ_Æ4Oc‹üJ$ÅíU‡ ˜a =*@#/ƒ íE×|•GcpA… Ïž­õ\N.k@÷^L8õ"YÂnß½8š½Òµ/@FÕx¿yÌ'Ь’õhFíÜ:Þhš3Ò׿ƒ/ïS¾ -ýØ@=¢¤•ÎPQØC9Ǥ *iëc·ä=!ºl:ªõ¬ýE° É2óËñæw |ä?©¡q¾‹µ -é÷¸¹_Hå4.:\Ç ª”+yÁ(”“9˜øÁšës÷\ÙßÐPQ{'&,¾¬>k¯+Qã&!W| æª·>Ak³._ÑÀ˃ÃemÇy§Kt™’f˜M8z¥DÛ'~”Ô½$k¶9eºí,ÈM…PYm Û‹•{vAHZjÿÕ£Ù€‰Œ -ìý+o½)2 S"…kñ¨d¼õ¸ž¹3M\È×õ¢»Å×ÖjoߔւDáûTŽ½•ïõvÞÌ©ZIú¶~WÎ0ÐEî¾KEfI÷ó¿*BͧΠUæFE”‰%jòÎ2ë-uôºsŽx{ÿç!R½_ݯ^òõ1ºdX"9ˆ±·ý‹Öÿ¨§]Ácùw1ÐwܪØ}N3óG›?¯ã›O´Âœâ~Å€›h¶œv }FÑ™M½nKNßóÎ.ÌÔk©ü·UóÍav<"µ w¾°_ÚW¶ï‘f4<Ÿõû#À"h¼é©÷(„½zêÏÞ8àbA Ò`5`|Ôq[˜7\{J¢»Fnÿxß%ôPæ´e2#[Tü/È6™É4¾” éu2z0TQî,ÒHÝótvEÍÕÂt§½†™0z -£¡câåÊ«a}œH-6’N(ìß6c‡û× µœÞHàÆ¿»ðfô3 €;+4dœ"ª®7=3§Óü(Ùµd€Ì7íU,¥~Øôf™œ›Zé+©õ¿'S^zf\{‹ÒŬ¼æ/dÝübÍÜÓ6ÅÑD[F<ù_»ø‰¶Ó}_SMžyX»ßÂ][Yg‘Ø®ºÑÃ:þZ´'ä'»ÍIª!­½“ ñ¬Ebw»M³j@;ËêœÔH@'hm¬ËÏ.µ6Ëy’k)ø-ªfƒë\ÂE2Râ L½Iš;¢Š–S²Á°ë5'ZÔü¶!£ Kúí¹~LÛÇþãž™é¶cŸj/Ø¿˜–gÜÏÊLö(ؕ•E&‘Á %‰¢ð‹¢Ô+€Ý¢Õ‹yf -ô ØͲäÒi—ü£d!Yj%¶û\tO¹'HI±à2Pû;õV¬£°Çëãþr}1$‹Å^zå{Åò¸“ÕäÅ@ç¨Y’ØΆSp| ’ -ç6Ï—ˆP Ü0‘Ö Kö¬Hã&maŸµ¥>Mõ¼Í'ÐÿŽhÅJ1ÆÛÚÅ-Tèê@hQÂkJP–ÅÑ{(ýÑ$ïJY³t/Èù>úÏanyF$¹>Þ™R{CœÙR„ûoš€ì#?¢.b×Ñ¥C<ü ©¹TT9§©4‚©*iKŸä1ýø¾Q?jÈ;¿Y¬Øi4Kê çnxxGºµ­"«=…ã)zeÉáÕ+5-Ó“²ßÃÎÅh;îÿìåc ø\*憰k»F˵ëìlTñÌÙŽ f¶Öxò;º÷Â-éÓ<AæHÕrðù•Òˣʒg‹Çª©—ýNŸjBÙU0ëãyŠ}Ü°xº=&n$춱;­ó°PÀGÍnïé¬þ´lÌ?uªãð·‡þõzªÇÿm2Õ9‚šmøiY\žx/Á)Ís~GØ×lEáç…k6Ⱥäýxþ<õMTø¹`Ûï#hJ0åŠ6|ò¿%óªÔI°Ã EJ˜ü¸Éz«dQVƒ)KˆsÒ%·zRéPÇÔ“Ô.¬ -UhM5^|_šÃbÈ Žxp¹{d3iznÄ.Çv¤-ƒcŒ<÷³”5‰KË.ÎBµ×Òôp0N$ìoéJÙ9"©…¯Žˆ¬ñB™O€T™_ÕP4W§øóÅìåËŽ"h®fîm”ÿuIݬݾ^ŽC¬«¨Co å5u!êeDG?q÷FÝó·!`?QíH%>[újå§K¨ÍɃ •¯ò"qî·œŠšÚgM -´t•û±­bÂ<­ý‰&ãm01 *·qN‹!¬Þ5áƒûÅPðþ„NúãQ¿¼Å!L+”’µ7±®¿òÁ„ŒÉ£RX¡ž7›°EÙá^±^ë_‡Ù÷ 6drR~}œìP…ÌN ¥FõlsîYP‹~£æDZh#³n×:•"RU'´ð*å–¥ò`aLÀ†\U« 3å¡wJغÊïK8­«àq ´ ->Œ…x@Œ»ó-ôŒ2~G§½¬7J‘M" 0÷ ˜¶‡OïWöê|£Ïò0¸m…J·7_dálíî‘ù¦*zkÒ XÖizÜáœâPM°ìaF鎡jæ†G ›‡îRªï…î0ô¨ºmi`¿Ë`4v…Zz¿7ÆfK°_3YŠÇÞ¿ ƒ(爒œñÛ‘¿O ŽÖÀÓG 1j€âj‡4Ïâ'º©ž£ÉJ…Oÿ"ƒµyÛE$?¬#¼«%ŠòÇ௷¨r‹[æ¿_?™çìí í« -Ã&ª´º$ F­Ý[ÇÌ8|<ØjÕL!¬“i²öœA5éM£ ¬eËcŠæÿûqNl¼q¢x}[—¼±Gl{]L¥lÐê»Å/˜]M©ÂæÎqâ­Œ¢D¡IÉer™˜ iFÕøBQ; €Ðap= K­…ÆzF¢%Úrc­ýqï -;è ²°T°k#“ä¾lì½á§iÛ¶ÖHÔßÑärqüq¶fd3¡Î‡¥Àˆ/ÿîVóg/ã&—ÑUÚؘýÛ¥TÕÐÛ} œ¹£tN‡rd¤Hµ!v·¡»Pö$ë9̦ˆ¼84ûZVùiu#×¹4&Œt–^†õíë-¾·i˜µ–r[¦™ȱ«þœÄ<)²t˜àÂ˳ŠI@”ï -­VÃpfÄ;ѳ;|Žœê±lbl`F&ƒ·ûUéE -ZàEÉ—BÂ4ooš6¸Z­Éé’¨ÂVYÕÏÔÜÞæâÕ\ ωÂt%Ù ¥—oùþ@µö¨ž<ûØ @«Q¯¯_·³ß–HB®VysèPºäIç1õÆÌ -€îÊuGÝoB_j.ü!RÛ§Sås,·%$kô”xµÕl¾ê‡$Ud¼Æå"•?'òˆløÐz61²¡E<¸{Ó)®äê?âÞ¥ a¯a2íÕd\ |MŠÌbÄ -|(/DØ[÷4Qn½>µO¸èßh8QÏá9—ÅÎJ‹&€¼•ƒK¡úÞi8N.}„dr3¤Jód·1чöMù(gû¼o8{'k7’³ÏÙlñ˜È\²óˆO†ê¤óò\ì?¾ -¥.!¶$ GhÚ¸jIÏÅ|ª¡HðŒ øð[æN®ü" ‚Í'ô¹¡ýÉ(òuÛiÂiÃŒB:⧯ ‰;½Öx€–ÁzŸ’«WZ~(ÊnW?ŠPõ˜|ˆRj5T.›ù÷Ég˜ßÒ ˆˆ°AÐ|è—Tßgñ^Ïàß`zcpAÊLZ„û¶` ¦t¿|¨ÝÀ!ƒÐ -náxË?¹yÙà”¹Z=ÃõÙ$|Uæ!l´Ÿè¦‘Õ_s¦¦æ#½¼°Quœ ?èÇ=%¿ŽqmÆÚø‡Å_.jnD!Jî=©-‡¸þ§C±a:ï9ëŠP|¦­Äg`›’‰”:Ê8œh¹@¬ÙoFñ2åHŸünloé_5džýûl*8U[®êÒÔ{Kjˆ7ÀÑq^lò„ $Bš ¯âXº`é^ÝÄz!™%âY¹½2Ti’(š€¶ÁZ—[¸”àD2&¹ „ÓÕ(§Á 7ò&5ðœ2ç]ax2xyí;ˆkêY(Øìm '{DC’âÃH†ûQÉur6®Ù½"gÿAZ”V„î%æ"œ î†ÿÎÆ&³B+¥+ÅÉjâù©·‘Ò¡ª²™b™ŒçcAaÊèô+L×@».a5Ÿ  Ê”ãw{^œ=ä˜J{É$á-þe¼vúÕbýü¸«ôѯ@àèÀ d¤ÂU{#s{0Ÿ5°ÜÊuŸº’Ì&P›ô¢Æ‰©µ‘¬2í=ãýš¿êÕ)b±%äZAŸù÷ÊqC!=šéõÞ\Wì­£Ëè9ÔÙ¡ˆË*+1ÝÝÆ8ä7É› Q›³Ã ´€ëȱÁô½hEÕ‚¡bœ™ºXO¨‘ â×D…ßD¦¢ªS•ñ+:°!õdm§¢Â-ˆªb8Á8ûœ2Ôz2@u.¼+ÿÿ"&•ù'j€{eüC”^~‚öÜm4@ƒäž,º‰Èiـ̽0õÖÛYÈ/y¤ë}Ö¸ž§ -Õˆ[ÑH_ßyþ.Ui ÈAQû­Ž“Ð’Ëi‚ï'gZo—˜^Ðöã¬J;ߨ¿W»ê¢¤Ä¢hóßœ±£!|`pÇŒ·Ë©©,<Ç^4ã0¹}ÿx‹/áB”ß–‹Å¸úG6*¨RÖÄi#ôy>W²;mKt®ÑŸ÷Àäå6Ï@) Q HÒ2*iyôâEÉ©À]ÐõgE¿™0K´§xsøÜ0ƘhÉìWþ|wC-ÀÞw‚ó‰<v¹Ù…ü‹ÚxTnJRuV¬€–X/3‹çƒvÖ˜ÊN_'WI—çBà7ÖDJâ`Ô,Œ«,88jl$ÖFªUNMàdÖ«HJêÌñðMd‚6 ÄÝKCéKÚÒÇuªöÑ»M*1ÆêTLËù@ªâd† §~64£iÞóukY"M¼=jî"¤šÚ£â¾€­(ƒ^ÝŒ+uŒ˜ñȯ €›´ÿtp2Ë€¯q -ÄæÅdç„üÂ.„"#ƱæÒëK—cûtÔö‘ðÓ1j»`K²ù.šâI¶ƒAÉüó§Ÿc@×âJ˜³+‘ü¢¼—ÅÚl¬†™[1þP®ú¯‹fƒ j}‡[›éìiµï*ŠÖûå4ºÛIR2×F.wÞ¡Ÿé¨”Tÿ#@ñe'pÄc5ìs×׫?îÄ3VÙ/Th4så¬ã‘„ö?’€ ÿ̳ ÷ ¿bßÖ^ªľOÂ=øä@™„ çS£q÷°/?Â⃤"Æ%ÿôͼý6à€–w¯v Z«°ÎF"ë:gúukdúâŸ!è†NüHQÈí òD*ÇyÍ™3ôQ¯à»ÿ¡œ¹mAASã^°©ˆÆ( ÇÀŸöP¾e‚0£Ër­“o¨¦Š “À7le`7D‹ž U"È”Ódñ>-ÎÃTºõ>ðaÜS®ÑT@ó%VùKß,¹Ó2ÐŽ¿9/ÛtÌÇÅÒuÛ ØýèKWRµ¼ZéÊýûØO#˜# ¢Ý8ž‚Û^8P\¥ŠÉ+x }<ÍÀ6í¼»‡„ŽÚÅÁÖp8oæ—ؤ¤ñS,˜p¥]V¾røV-K'Z©`¾óoѦ¶ZÝrÝègЈö}ÝÉBוÒÀ~äLÔ­£!1\ÅP¼»’ã¬÷7vUõ> z #A)¿›—ÄÍäBÚᢛ|tg šV–¬•dkö6vžg÷ -YqvÒsgt,leòŸ™ÂɧCÂëU¯¾D-€%oÞ B›ÀqLKùÍL¦+ù«¿”ì–Ú·˜O‰?aÊN¿ŸµÆuÞáÍ´¦t`0"ÎÂxNxî´æ"GÍ TòNEÝI‰¬ãÿÓÖ9ìˆ(H´mÛ¶mÛ¶mÛ¶mÛ¶mÛömÛ=³y‹É¼Ÿ¨¤R9§°'+ƒÛÚBK÷“n òžFjO–Á”73bü·ËŒY:RûK sQò.ù{ÆÈ©^$»Zls3Í}¤´ÒÃ`sÑP5|-Jj¼œ@DA'„Jš„h6à=åWØõ{ç+{دŽoÁ%gH5t`vKܸê- ÉZ>7«”4í:Q¡htX¡Æo«ƒÖä³ôÚÊÕJ”NjyRöÊŒÚYè~&¡¹§Z#+ÂD„AÿN| Öíyr ëƒ4Tôßú˜Ü(ÓÂù £e zB–v×ê™°æ ;uL¹² SºB­H8ãKÒã×%]Ò^añlg»e°ïü¹è” —hâÂ4œÛKðÐœÞSPΘ‘ìõ%Jf“no·´Z&ùÛÚ>v±£eRœß›?|ÿ´9Ìþ5½’œ$È§ï¿ -€w.NP>þËf.ÃV|áûñq²ø'š¨‘ -Šrq4õ.>ù¢ÛešÕ9À¥§ó÷Üg`$GPs™–¨³Ëj^ã¢|Z•-¾Ù)ðt"2&n9jëÜ÷_u@Èu–«IÕ )ì'IölçJ[¬4ÁÉÓIøåÂ:65غ\¥¤&*_°†(ÒÀál¬75%æ—UÂÒ'@Û.ŬÚâCŒd’× L±NÙ)ã¾0QRnÓH/²M$Z®¨cTDWw@LCÿ¾.”Ä^Uï ø+ôžÙˆ’ÇWNLâÙ>ª<ë[ä,$sÚý±”ù²RÞxÝ3ÆxÍ"©‚E¦¥ ê¦?¶E~’Bªi ó•>m{z\h`sžÚiÁ—Jµü×øˆX­×J;åLTðo2>ö#Ë'&¬U'Yþ¯ 1®x³S¾~X’G{‘çe¯7ÀMm¼u ÙÕœ>–#v´VÒfs¬Œ~Cƒ¾7¬úéme» &O•»·È‡,È»ÿØ*PË>¶Zl›T†Å1-&Š¥œþjvsbôÀ £ƾÿd ]‰ÏmüܧX1(ì'ÔKÚ•K™¤Ù.½dhô°¢bþr¡¸¶¨. XÀÃÁ¤T«BÎb’çœñ8¦ñ“?ã]“j È‚ÛŠù3‘#м¯Z¨fÄX[ NM°Jã'&¦FÎP뎉Äiå†HÚ“œŠ›ÖSèûkKâ5êÅ*‘â -ûªê4þ‘ϢĉçÊîÔ’á‘Ôz×ë< ä4m\a²ÅK·îã5(ò{´Ý‚ÈPÅ1—Í¥®èY«„È&Mo:xê„7~Cáx‘QJ8êI¥ÁŸZ -¯}¨ÌP6s”ö LŠE«R¼¶îDgñ*g†­ÃØ]þJ?ÝØδ·¾WOæÒBÕ8tªH?fŠ¿V'çžqAÉüzæáÌ™Ö@!ËÓ°ú๙uåa!­SÌÚ Jª>TåÁ=Š˜hÂZ6‚Ö=25Ê|«è×iX_tÿEë {nü<«ƒ\FñŽ@8Ž¨µûlúˆ*¡vô îÖÐk~ÌÅe)Fêv>ž!‹²£Î+;mäBv;{^©¡¯îœ+º[7 éyý‹ÅQ¯@š1ï‚ÿ¿\ÓR -ߪWsÅR(#BtÁþu Ä'ÇæHýŠ~¡XÜË»“(1è/’Ìóëþ¢}ƒ ï—¹²RC¥DY ýI¼Îç ë"#^~éÇΪw~Τv’è!B2d=©'’³ ŒW¤÷Súä¡:ݬ3#êôM«@~tnúš ˆåZƒД -’Ž©Žÿë~Æa“¿·üõÒR=‰!Lý|d6~nÓùÌ3EmYšþ{"B«t2×vÔžUltJò–¥|ÊŽù ð¯¡Ú’H>0gÉêz—óþ’Œç¯ÎYØ”ö³ja§œŒ ÜÛv€’RxvFAbÒxtƒ¦ ÈB¾ÔàŠ0\V©é­c¹1 -9,³­§Ç¤Ìí°x†~¤ZR^Âiv+û-è³VFöEÆÎc6r4§“'ͤµµí ¡îìL„Èî`ëÃçÎù÷67ÿ…ŽµWNjŠ=횢"Ÿ‰ù´Àü ~ !ªëeR»|³Dd0Mâõ2Q¤õÕì:’ø²}¬LpI¨‹Ç׌6ÌÑ[x²Îe¸nìѼQ«u~" Í¥éŒËÄ€ @¾$RÃéw½çTIx[yÐœ›þz{„FK¬+œ¼Œ˜1#3Å[ãˆÂqÄ ×®í’AíÐö<¬ÝÃ%C'0>øn\Ô­î¬cƒlˆ­³ý:a m¾9«4ùêÌzp(ýñm7¼ÓŠŽú7 -4¶‚•cxƒÖpIm¶Ð:pýX ,)ý¦ç°K±H,€¹tDÒº|¯(–®c—m­šg¶Ï„ö {:¹Q$y³þÔæöB,êTèH€@q ¹Ó-âZˆÐDulŠáªC_CÈz‘õ†˜t1 qdðk²ÐþÖS\0Mbc…øÊpRî¬Ä3æÇæ„gu_¿ù¯ÚÙÝÎçæ˜üv3˜– µ¹q0À‘ZÊ^Ú¯ÂAt¦‚_áï>Ø_QOügµë k>1Î…™=:Ti;|6‚ëDÕ•C¡Œ]Mù|ÐóMVÓê™%ʶùþîG‡ÁË'T]£ƒPeÀ­É˜….ÊÒ=ÃÏî‹w©ÏîîBÜňØ'zœ.U2øw¯ŸrÄâÝ!¯Œ¼}OÅêä@¾<«'P£ziT'ôú/bÚ|—ÌLõèÏšÌk6¥ BäæóØ羕|Q Y¾Àÿz¢’XH'Gmeª¢ÙŠ°ë ¾²ÜÕèÎÈz­£<Oðwr&íNça©!;JáìºÃ$à3Áéä4Œ`þkbìIá‘:¤)ÅI™ê˜ÍfÑô,眢OZó”€eÇ5"ÜÚ¡L«<£ÙÊ8çdîXÛù[ÀõîðCå-þcYJðŠä¼¨¦Í45)#CÆ[öšâ ƒGlg“ N¸îø–§%Iõêª4é9Á¿“ŽhÁÁqÝše»Ó^3Oñßpñ@ Dšñ"`×à&"ÊŒ£ñWÆi J ý¿=[ìÐWŸþ`jé‚‘¢+o­gk:‡](Ýu£Kª¦s±‘°e@ÛŠ×bTÞ&öi5BQÌ~¡(óézF9,ês ½¡ÏA­—8D”y7$êüfCœý0ŠÑœ/fZÜVñúùŸâ8ïʋFðª£ßy|K¾]­Äv1GCŽ2[×hFç&M’ÿÀÇ -âˆfn®ý ZºqécÔZ1¬Ö9 æþŠÉ\e<ª¤‘Ùl>¨èû<\s§¦f©Dé¤]1‚·­t£gO0&Ü…Š|>(ÿ„‚ 5ig ”·ñêBÿEÏ?>ðµÛÏÏlv9¶LŽ¨Šs!Uv~)íxô¹_z˜ó1—Êü„âjëÚ¤¡¥<> û:”ÆxÕ™žB®ù¼§6䬜v„W_?ú·Å¼¾`í蛵P›ÀœÇœìº%~z‚âÓt ™çÀocëÄnŠN«LÖß!íÁ?«uädÀ'KpÞô× -2úõB½`™š_‹èÎ2¦~T _kB-©0©?t|ßÒ£øž9FV¾mÑ~;­w]ÊI7z©Á#t)®z ¡’Æ˦ÄVcå¨6SbƒÑ•ªð¹…6iŒzIFƒÂÕÁÌìq¢x²õáïËm$Q£ø+PÞ€Y…jj¦3#Ôáó-C‹дS˜vܬDÀÞ:°%ó´ÑÙCˆƒ(’ßð;cãu‰Îá6¢KAYLw%øÙª­Ð2+<çSµm@|iÿØ›,?2¦Ü «'óì\Tô~¡ó2ÏÝ'ì0cXe±ÀùCúºV·Õ'O)é3wú}\ƒì¶&ŒA܇ZDDáv,€†°U ·³?EFM‘ùÝ“õI.b¸ð{•dá’iг1âù®&ßSwkW८„ -ɤå\E‚Úv–ŒF¦x‹¨O³|:R¤W³ÛµÄz_åÆ(vƒL>U ÌGÖCRRŽ7BiÝÿüÍx£0´¼|…犜ïÞL§Ýhï“t&2 L lnën&×b®üRÌpùäd·Fæöûª÷ÏD9•,­ -ï3.wÉOyû/#üñ¨÷þÑά´ íð|LM®/^ÓôB3Å”-bH.zëVܘx{V ÒA(Š+ö¬»S2FzHMƭ𤚢å&–êô”ÐsÓ o!"GÌQmc;'´ŒÚ0ĉ¤§™s«@ zdó ùcÈF&.5_›Ýá²'g|Å\ªÒFEÖþC«ŪþVg8ñ`Ë£ŸÈ§§´8ëŒx³¬Wöúmˆ`Vä¤@™3Ô4"É|´ã絈ÜV²ùZóBͨp»ÁhÓÛ˜'ÃäéõÓx¥i„¼ µùÖ¥2ÚÂà´EnB`PÆ© -A ØYª)†5ö„¢‘Äç`Ì+]“Ö¯A‘Ų§þͲ݋ê4Ɉ$ìF²ÿµ>âD8\xäÊTy£O4Ò×Á±b“c(V_cRCèK£\íˆ+Eyå‚xˆŒgøJ`Üj#I+Î+h·å¾ñÊØ9ØãØò^GÇßÃlðäUâkƒØí1í™ 8nNNÜÒ€´`ø²ùÚ± ªöÇî@GfÏ<­ÇlRM«ˆXW†>`ÛØ“ë&¬vRLVý-òO–*`ü§qdî5Vwº20I@hˆs †¸ðOóéc¼JV2W¸¢ Ö ¶“ƒŽG)çúúÚÑ€NÛ¹BÌN*T§—*b@¢ÂQz*ôñ¢ VLŠ‚;§U¤A® ™ùaœg‘”yùµ¿à ¹…’„KåHqn¿+z\ÏmYÀǨ¿~´°Ôϧ<åqüBôXÎ*‹à¦îÌßÂSë^ïÄÎ<_½0¯ §ÈoZÎ¥3ãÍ¡ÈÖ©è)¡ƒ¦^ûú_A8DñZ{ÐUH ’¦h½+t1ù>¿¼v;Jš© $I2’ÿÿ±2`’¨wRÄ]‡´Û2ªôD‹0Ò³Æ÷Üüú—G¶íTþPÀŠƒ õš# AK«ß£hç°‚¶‚²L¸Î9ªÊªE—L™Ð=Pº;lXÌhÚ9{)±\âUŽR…=¥]3«_ŠÇ2)ÖÌÀ•}çγ{Ê9† Èx_t ㊠XÏh¬³¿-qþ;¾=,ùl;³âÞ9w«‰zY®Ü‹_ÃìbÇÕ°‰}‰(0Då2ÆEâövy{C´EФIÔ"æCPª=‹ àqÃ(ïØ@—^„Locjè“zkS½ñDåÔÂRÚÝxËZg÷…ã*Mìhi ú„Ùh¨•èOïtJ* $ÓŸ,ÙFm4>j -íž?”IÀPÞ¤ìÉâÍ?•‹Æª}"öPp9º'ž'SqªíVTöû¤ƒ~r§Öñn…t2þì~LÐ6žçÄÚ¢}0ž|Tx‰Ž·€œó¶í=RtiKÌ™ˆoÐ Ç.7Ø5« 4Ì!‹µ¤€¡U„2Öm•!Áº¯°ÉE)rgËÓòz›æÈM€ÝOÉ1hDÏ6鈥õàÍDÙŽ46ž´Åaø»™›ý¤¨TÜUB¬Y ¹Kz¸© ™X°‡Ñ+Ó8<ò @ôø˜{i -è‹e—Š•(„&GÞ_¦½ê¢ä»,L«`!fnUõc7I-¬ô_ÆòŸž‹¨ø(¤ëø.…}憎º±2 Tj£SLÚ%'“ì•kow M¶¶£Ž_T˜_0£e „˜·$š´ZÛï²ÖëF躿( YY‹°à[êðP¹¬îSÏ2÷É´ßÄ^/?ðW¿èÕ%L¦3`ðHÃ=3­¾)ñ&”q®Ï j¿w–ºx”äÎjQöÇ^ -wo)‰oxBkÍóîÌëq%ÜÒ®{¯[î8b'˜J©jòƒ åë%ö×ßn ú:^•‘* áA}ïuF‰‹Ð&šÔ/ÎË– Þ%¥&ƒ|ÿh÷ϹWZÜ¢%QüZãg\ PÄÍó‚dòþÔ7Þƒ*ð ¦'{@Ü›úÆt*3e¦˜ÓË -ž®–LŒW JAô…¡rÄèÕm¸ùnŽë´°­Ý–íNžat‚‰¾ñîËJ¦T<@„¤bVn'ñ…ãþ88̸^ûM!JK‹¸f¦ÁÇxÓõ*„¿ -™cE%<Âó¡w«‡~È…¤q”»a|ž&ÈX(¨{«¬”¿º2YˆX]¥ÓgÂä’Gµ° ×m —¨ Æzµ Ôƒ|0ÿSê¬b\K‹e$¯Ñ4ôK{]V¢±RQ2‰0¤ÀÊÁ8{Âç›ÈíÓ‡u˜WZBƒ?Tÿÿ.ªQã€näÝ%›LIï½ö†ªž¨ -š#†aË€@­Úƒù5)Tª W  ãà5Ñ÷b—aºÆÉD˜'¶ù+®>ø¼|(I…dD¤síw0ÕÈ:ÿ”/!ÿÛTch.¿ž3ßXºç÷.éOÍ|ßÈ+rs¨ç“(à2 -Š¾P,Ó¢9~6ûò^5'K±OZ€QbÙ#8æâè~&^c¼9a<$M§J»<›ÁØë¶ÃJøut˜b$¡¯´UÙGK¦Î3);GÝà;IA -)Ä]ѹP=:÷9:W×ÇÛ0Þ>\žˆþüÖrª°>‘É;œJϧÎ÷@º†7%'¢í„uE㩆¶–‰P•þªø[dÈÀ«]”ööò}ôÀ[Ÿ´‹W8!–é@+BM³NCGî†ç´Er2± "Õ¸·enž0 Å\Y¤dI¢sÑb&ÀuYØkÑ5™zq†'ÅÌa%êjn2˜ÆE2V«gZLJ2×°¾ky€ãÆVž—û:&Žyµ—.º\#kCHXãã$ã!0=$ÝÑöŒ8‡ØºjÀðZ\ô𥗠‹¡ôÏ?]ƒ5s¾Çi©¸µo/îÉÙ(“^F·ƒ¸ß“S[Ùµ¢L¦/~æM¿+©zÅKϱ‘–H¶Ôål@L¨qÌ2ŒÌÐoóCÁßwpAö™*•4âo¥LÔ&´ŽÈ)Å-Ù)]>í”QŒt ÊYTÃ~¢‹P˜ä­Hqè:œwóÌùp¯…÷]¨E½„g—¿Ÿ¡õ»¥-NöÔ’àš·Ñé žÞu@:³Äb&ÃHÒØΫ¥e§NÜ×á6W¥Y"]L]kuuØFYãVÙA$µ“˜i»¤Úöè1TÅ9~páý÷vµAzŒXý>æfIQ"o´õ Ï×cº=?ùêåÛ>{SÈ?là]‚gbúô, Ùl´©.zG·3áN–FR«¯URžÞA’ýC¹Aº£‡j Z¤ƒ;3&…Þ–„ø±4úh$//¬6¨ÕRZùÀb3«j/€ãËÊÙÚû¦cn4ë}?ªW -¸c0tÿ¦C“XZ&ÉAh>ÿìï3¸§ {h´‚âl2ñ ãÚÕ”Û ”é)žòüF³lCý#g´Y÷›&sJø„¥öw‹m ´<²]—þL±,ýr\~RiÃàRZ[ h”ZÈœ€¿AòÆF£"«¼fŠê¯&«–|¦Åák\Ú‘°Ý)ùí:ËL|ïÃni+”ÿðˆÌzõUñÊ3£-ŒÑ'{À·´Æ0ãkã¶è6±£ã¿v´º/6®Î›ÎÜ–Z*aœQf«ÆòHø˜3š6¯ðÁŠwÉÒåî(°Øù¯%œL)ŽlÂ@ÕÜÎÇÅ~§bÙx\p2#UXV•ÖîóNºséãRý ¹HUßãÊ´0 –IŠ¦<^ú}_êg¯Fyä”+û˜øW ÷ü’`8õ|Á=²ÐT98„;l‚kÐz IÂjú•D«òCíƒËméÖAnK²‚õÔÝöqht´¡ðC@Û}§“CÓ”+Ùóìђ߆8f…`y~ðb™®Þw¬nBjlL-ÁÈ¢œª;¦£öð(x>•½ÛˆÚÔ -ÐÞ)Èyhöø“IÐl¶íb!˜aŠù·ø²ÆÐìYŽp!v?b˜7n—a¿zbk2-cÊÉt`ãîÓ÷D„­2L7ÃHÄ*V»™|½Ð›v¥}tº ë×~”3‡Šƒ37áMÃ#-EY÷BV6O’õRZv8<)ÃE\”æ7~á:ã¡O½•ÍŠýêº5Ýó"¤…Ù íD ÈYy!‘IÔ²Kl -/·ZÂ榼†ˆßõÜnfÎDè²KEkÔÅ&ª§Š …¸ž2°Kxù -†–Gê~0-†Ú  Áò[Š®t2µ‘¡ -ÿè>±‰+àO©ïû¼Î+±”økm‡©9yí {)’à œ -yY¼~%ŠÉ’Ä’¾ùì5oU„ý˜P@\¬oÇ¥[ŽAm=|`{Ù“Í©ÅTž™½Q°ÆŸŒ@ºûr* -9“廊ÎÞº÷+2.2q˜1qR„/ñÆøª\¶w0ªI(îmYŒ!»œìRðÊ#“É~‹Ì†ÀL‡ÇLtƒÍ‚Öܪ57]^ÛaWÁú%Ð]‡xSdu€)PPìZÿ%uã{ÅH`¹X~Ôÿ:Ã&·ÜÇRñV•;Î*â‰gÈÀY‡Ðç¡å›|¹Ÿðl·0¥J -«ŠT(*Y”ô3c÷G¾,NÊ¥hÄ¡³[B=âάiCóFUbª?ßý“Ž›`±G>›³Ú†œ)i€}° -‘9(*_âÔãµÓphЖe¥*hßo…ow$$ŠN6Þao'ª{‰ÿ%[ÊXÜ¿xÀ´ úÎ8éÑYÅ~ZE¨ÌÅ<Ùš»=5#Ðn8ó´)Š›>Žœ›ÅñÑ‚åè ¶9+u{¥ç&|“1ñšX“šŠP¬î,7âÈb“ -íŸÆ–C¥ð™%yƸ¤‚À¦Cˆ3‡ÁíÄšZç,!:¶ª¬spGY\ª˜àKDª*'¯à“¬»UÿCô¶}F7óˆàÒømv}‘?ö…†ý›K¬àüÀÀJßïõ"ºr ^<V¸W»ß°…Cí‚Y¨¢ ®±Og¨éuÜÍÔYØC-ªSø¡,Š!"'¡m‹uºucž‰jBµ§.†‹v2ûã§\«ù-ß>‚R3¿ßVÅ„É’å\4n¦Ã¦·l§Œ¢giËš_ö Å3GÚ9[ç…ÁÚ ìI—…Ò;Ñ¿JhbÖ1q6jQ~†®¨äGB6¼†“{ò§OøÕR4•êË©–YcÏN:ùZ÷Ú³t‚Cþû¦ø¨Ìퟮz=GõÄé8¬jÙÆðÝB‚ LöÁû¸ŒúÕ“(D¡(Ps¸) S"žÉçf®v?óÿˆ@[ƒùóBBös8ÿªC»Ç”hy>‚±ìNÕFßÃCà¶wïÉŠû¨SŸ&´’Îgnú_@Дz˜H*vÅ"?«êr.‡‚h1; 2 -B9´¥ãÚéåä5IBæ+šŽ³Z`9‹s#•fÓù°;·`ll÷üdÇp%æ2Ò‚ç<$û)Ý Õ]½!Íòº[BÎY ÍÈvŒ‚EÎ20ÞðkŠò9|–£»« ·ðË85ceK®ÉnLë+ÚTó‰ª @¹uÆíÍtk :¿4»šCû}1I¤¨Ílj@¸Ç"¢‚¬j›&4µÖ Žq3PDTqS’¦},.”LƒãnäqÒL“ÔänÔià|Âî¬Ä Îû?ö6!›W~/ǬM¯HW|Y©øI1v¶Ò*ÁÒœ½|®€yÔÝÞÉð»‰r¤ô¤–Ñ2€™MÌ _¶^Ÿçl# Ò]ߣ©µøÛfKwq€ÿÔ…LÄÎùë½µü×,Çÿ}‰ía#÷©“6c̈©¼Þ¦=Z4ì^!Éq­ - }4]A˜eSµpoØÊIÍDÁ_ Œ²UØ ¶«Á eSO …mêKùŠâx/ ®”z9—:A/ð˜Æ$•e"! ðÊ7ê1ÝÅ­_;)ö s&)$¸WLÊ“&%oKhq¦.$ër2–ÏZÜíʸÈ.Î>¹[BÚ­Æaeþb׶äcþÌŒ °lmÎÈîfï.š2fpÃÎŒ£V¬mß(7‰óÛ£QÆMhó£!¥=«GùФë!°‘sgï$@„•C˜AòÜÀ¨lv¸^êT ýCvÂM”B3“ì ôñb¬ RÂ$`g“òZ‡Rw`¶èì|@0·8Zïªüô@@Œm@*8…:ãynE÷?UBBº”^R¿½2¨Ü êãÃù%¢”›(x‚GÝÉÈïÓwÁ[™Ò*W—;ªÀa 5x¿PKKšfæ̧¨0Øk~1˜ô8…š>Š‘<šlJmÌ´=G‰.š™W/ýxoŠv‚é4.vÏP&j[=­nŠzC‘úTƒ.ŽÈî ýüxŽ4CHê±–N/vxwŠ?@‡ØU áé`ô!ݹyؘ–ÑY<Åy¾‚·ÖM‚`p¿Üæ>‚÷G•'*kÅä…N´è§`r(Ëy³3"XOÁæ TД•wùI)(̵ì= 2k£Oy u’C|~ÁµÍ‘~s^©¶‹¿_Ý}•Ÿ"fH®úTù+ÊÆÎYg³ß cK„¡d{OÙ“N冬;„˜ÒŽ¸oæxýWjô'nz‹Vzó™ºÝâ+{F²$»Ý†u £O£xdÊùú¨Ž%EåBþYÐj$íMú—e~ê Ó­ÖSèOPø@­¥¼f.²­H`‘³eÇÕÒqÃ[íµšX ûú>Ú-{1¤3ô묌X¹‡–me#ÜØw®ÑÅí×ìÑjQM`Ñ™ÂlʇUïrQÉX#Q*Öj{Ù pùÍW@[@öC)OpƒßqÊ>‡*â#:(Z×õõüÏRC³« Fg`Ð;ø~®2ã¹çoêPŒJ³ÐPXÀSž¦(rvü©HšúÎóó»Ïky7Tí­„Ú“Ý®9¸¦’ûÝ´ƒã˜ˆÅ À…¾M»Žb_d±é‡•Äþýož–ï…r„›]8¾Œ•îh籄ҽÇh’þÅŸ1‚nŠ›­‘! ø¦©\èK}XÅcëþNóìÅå—· -z‰ò"§ñ²ûÊ!ÅÌ¥ìOûg:ª+Ü º~r,=xéÚÕ$[‚°syýë(܈*ÁµÐž †}›(Åóï!]¸²m€â H‰†„è›+‘òŒñË4ïV6#--Î3)ó÷ãBßÃûF.Â1.î|­ »N‹>šÌFA·‡‚`Í¥ç›S|KTö-¢ô’ -þÓgðD;F¹vòÅ>Ýeg¼¥ß*M¶µ‡Ý=“$î$}0_á÷–W…Ñt!ébÍwÄWH'¢Â7DöYÕ4sóˆk—LÄD²To8 ‚T}0}èTsqážË‹ò~/ùŸ¬Ûä4c×0S‰ …üèSM2'#¾¡ÿHÆαÔ1’WV¡q”˜Nÿ!GÕÞÇÃ?eÜì ¦‹' -†©Ãˆi)¡å ¤æñË Ç¥ü:¹ôµ#ÿwÜ$ýz:åÙ’Ò³>0TïHZSB— z´Ñ»‰Úê,Ê3¡÷£Ò1¸’@K[ -ÂR”Ÿæ¹øäÇÐ}»¢{ªñ´ðI@³Ü€ï|‚zÌfáù~k$³þv»‰;|ûZ“…‚† -u‘f#†ýú (ž‚;ÂÒá2”DÛš `ÌËDÈgìéågÃÍD o6N¡m®âŸœ­¨’TÉ<Æ‹-]vg׊«×þßÝàÞ`ES^R†”ðX›ð˹kÚоÑGcÃ÷Ûó íÔe7µ¾MÊ<@‚”šJ(EÏ9KÄæËîL€¦ö”zäÍ:´— _QAòˆ·5øùSRé€z)Ö6ÆØSƒy&.*+ïRí<“¥Ô_³Hb®2ó@©x¿o‘ØXɘC´‡Tàl€ªÊ¨›OÀœÚKÝåb’Ì~/ŸÈ›«LA„ÎEFû,­*Å@qà­@íX-õQ¨Þgã­Ý“!¼µÓ?o–Wëg/4áh˜”òßÀÂy(Â!e焯öYÖjÑEº.ãt1£"pÊ"ÖPð™ú†Õ*ã~Ò$o2sÁâ"ÓfÌÞ{ãnGO…»Í¿˜^ÉG}HçÛà×ÈaüÑÖ?èÇHc{Ê…[–`£xaáÛ ‹1œlÎOXZŒã«,7Ÿæãn0’D´v€ä®-ˆº^2û[So*ì{Jw{n…5 ßdzÝäÝ7§biÀZM5L|Çxyy›õ¶Ã`s¡ Šü½ UÒ˜è2àëÞ sn€LÙŸi·²zú:„NÉÒôãXª,–¸FÉY‰d{dFxãnÚœûTO²ˆcsB°+UâÌNï.ãý«.4_jÑ<§TÐÍAîýA¢PÆÃfSáÓeP› Û³žñì½jæØf•þÅÈà@üq4 -Ñ¿ö5],,}£ÂvJ°Æ¹žaí,xµ¯‡?ï„>»2rV­°²r…ÚRGþЖùfó¶"›¯Bïµ–ŸÀYõí_PÔ³éMEjÕ;EÖ˜,Û–a"¼w)úR‹Ó´ó¼&„ÖÛ˜ÿ˜Y³u_8@úݦñ¸A­ïÌGƒ³Â¬3*¸6Œc“-Ô3:îõyŒŒG¸}«¶Ss&7ú2Ycþ¶7̺rУz{Æ8dHŒfG*F‘u½’ØîØ-1Uñz³ã¥ -8ôO£é(žjÖ«xInŽçÏ5©H:á`ª;Ä5-2Ø>OcϹ©ü¾ð6(ƒz)Þ<‘û[RØ-~ÓB]!g¦ÖEÿtÁÄ°1÷ÝÛqlà‹þ™ÛVÌ4<%ŒÍ5ì(Ð&Þ2‚6*.Ìa#Jlˆ~ä#¶>fl²É•Õ¨¡¤xuDVQÐ` |aΤ»†i÷’èËX.¶ßÔ·ŽÎ®@òåwëO;Nš(3 ¡“Úno$7ÐèeÛðÕº - RB#/ }goÂ~ådq‡åÉwX½Tƒi(e¥¢ß.¯-£‹Öh”1;ؾ`ó'=[à áý¶oœãrÁ"ÔÅ¿*¯ 5¢ðÍoùD;Q;KÓ>%rˆØ;ؽcÒ à* ¬ÏˆýžÞ*ÛýÖ¾ö_én»—Á¼¢@"VN½¦iŠþ%^=b!QP[ÈFH3£ò5w<˜’Ý~¤‘%‘)¦l_s‡4bÜzQ`ÁÎuòŸ;·rˆNëJ@á[P-‡ƒÀÂÅ =]!;¸»Î»¾<¤)§#H~)ŠwÞiˆù0 A3[Ô,–×g†8ð,KÈ1™3¨ÚŽ-&'«ûf”cÖr+h¢/--Ä©i6™î<ĸ[æ©Ü„ÃôWERyi£”®4]ã²R"”Y šê0D--<4çúæ¬n¶§VTÖ Ü¶'Õâ‰ÿÝYéð«"fÚÏFëK>[ŠÁ¹@È+gùÿˆùK_]Õ•f×:’–+‘k%6¬$À‘+´ÎÌÊè^>‰ä8­RJïÅü C£ÿò{`x{`@×n6>¨ ›ºÛõ¤¸¨”p¢Z)5‹;,ƒË™Ù­ -°3ì¢<ãÖH¬a8µq½J×Ѩ!|·ËcûÆJücmg\;æ§w&éKZeXå¹Úï­ù=¶ÎI$–^Vú²G¥d(hMÄÁ1·‹8å¯.Ññ´@Â/Ð’+Ý„kUŠ’@(•j<ÆÔ…{-ÔuyHœ9Ó>WþJÐ5c}ç.3çœ<ó€^†˜7œkíø÷È_ËîoÆçëÚtK/1*0oä™$tÈ@¸ PßÜ)Ïú+u •LŸ¯™…d»s’òE(Â×^6+I„y1µ/ªÊÝý¹træ“ÖDï’â¼K]í³ÆÔ{ÙŸŠ÷üýÄÀËênSÁ‰fŠlÇ£Ž™éÆ(©þº³$¿ŠÈ-XjÑ¡Îz1Røÿs#œåÂØ|qyô¤Þ¹üŽ'r]hLœÿ¸ÓõZj0éÖ³G+åø—koc1¹yEÅúB¸ wô®ÔÈU&»’£xAÈТ˜/W2‘Ô3]C¦VN‡Ùpú¨\¬rK½^”ØàpÿÉ„( ÉµéSs2CÇ[^Ç·z~êŽ"Ÿ9rÈ7À&_•ò8‚óâ3ð¥»Ç{K­A3ÏÜíë\“87´±ãÞÖ¤ÏÄËv9÷­Ìšš¯_-íR3 ›–~ºt÷èJáøáÝeðs÷C¿Æž€ÿµß\ÐY™Š°<Êøèq>2*fÔ_HÀ5XúC~ î55Ž+ô û=„>Ë“Kšòï ³kpÅÇ4´ßMž;ù¦žz‰ÆÀëQ4¼Ñl§¯Ù©Å‚ø¥n'w]À;³þ» oHge”xŠ¥À…)wZ¡Âáj†Q Ïxß<䉚´Õ²±2|åXfé¤Ú¦c8 -D£39ˆ'¤0Y.àFßÈÛW‡‘ÜQEó°.u8˜‘X¹ü™ðí$ziØD"†äMÉêÂê.þáD2LI˸ÇI6p1zFÑ‚zDTrÚÅ®õÑ¿}XÜZØbéèÀ3M>¾íT½ äayÎmÐL1"·G?…¾<¹ê! -Á]íÉšöîægpÑ'*q…4o²ÕÊN—±ÖÚP,¾†“CßÀÓSd%U, HÞ;«'2l¯3òÔKgM^aÍ6þ/Ô6JIh«úæàø–6±dwå€[¢÷€º4¦^:`ûub©§ ½ÈÍÀQ7jŠçPËb¢wUwØ­˜?% åMßÎ=:ªç-*¸ÛÓ8UJ" Ý“’!?dy[+\?‡©³ÖÄ6=›v;”Øî* òJ7¿àø=OŽlqºäDU©ùB‘6Q$ÜÅÄ„£_ÅïY›704ŠÒb¹3ôS“ ØלÅnq^ ÆÔ'ƒp<.)E\9\¶P"¨-ñÑ‚g%FƒßÛ˜#¥ÝÕC5ÚþÍ°œkwÊ¥™Ûƒ‘‰âdÏ,J bL‚óÛ]¶n­T0‹möøöà&2'[=ó.ª‹‡h‡Ý¢Ù -üòÔü\¼Ú·¬ÅžO “·,#Áˆ»l€FÇ”ï'£S¢{vaöÜþúë -åòhµ¤Ì ³n`*éJQ¤ 4ïi,äÙ$ ½Þ9xBXά„Íkà+ M†-‡Øw)^¤^òˆò¼oê±ú–Ÿ… Q&Ö¿;K·¿¼m>ó/¥Ù©ŸhËßXªü$/œÑ3Žä wË’[•«Ý3Q78«@ K“}Kš¾?”¡œÃžûå{ëÚ3æªEÏßùêôPB«ëØƃË"naÝZh0‹‡Sþp7ÒYòàNõxººÚóïk†,²ª”sGM3ÏÖéä{j´ÎÖ4}jVí¼Š¢AôÈVÙ'©Ô0¬ÈüH qÏáÉù½o`çen?.ªF… ž²w> -endobj -1559 0 obj -<< -/Length1 2170 -/Length2 105555 -/Length3 0 -/Length 106088 -/Filter /FlateDecode ->> -stream -xÚŒ·eT]Û²®»»3qwwww'ØÄ‚»»Kp·àÁ]‚CÐÜ-¸»;\ÖÚç쬽¿{[ûæ¯ùTU¯þVU}´AA¢¬Æ bfo”´·sa`adæˆÚ;›Z*™›[™ÕŒíœT®6ÆNVfv€‰'@õ#ÚÉå_a)[i8 - -1' ±‹•½¸±  édP2u°²XXxYØyÙ˜ÿZÍ G³·sûX 4û+“‹‹9«ƒ €‘‘éƒ>Dœ,œy Æ€¹‰½·1ãß - ;31{[[ ‹3 +ÀÌêc …•Ó_ÚeìÌí<ÿ2›¹:ü¯ëc3ç]jÍÿùÃÊÈÎBøkfogã 0šÃ1)Ú»|  þVøß $]mlm?–ü+æ_ÝüÕ®ÿO¨±­•çÿÏ`- •…¥ €úZþßnc+S;  €™‘ùïß¿uK+ÓÏv@gg'×ß. ÙWñÑá¿k`×Ñ‘”¡û’¿£•­ì\Ô=>TþË æâdÿ¨eeæbù¿¦¿2þÂò‡Œ]œ¬<zÕÆòÈ ø÷?ƒ?Q¢¢öo.vÛGXXy8>Î ·ï‰–°3µ7³²³°rpŒœŒ=á>¢?ˆàÍ°ú(ßôøh£½ËÇ€ƒ«‹/ÀÜÞ î¯ÄÉñQí_¦'€Iôq˜Äþ7€Iüñ˜$þM\Ì&É?Ä`’úC¬&é?Ä`’ùCì&Ù?ô¡Eî}h‘ÿCZþЇÅ?ô¡EéßÄý¡Eù}hQùCZTÿЇµ?ô¡Eý}hÑøCZ4ÿЇ­?ô¡Eû}hÑù7ñ|hÑýCëŒÿÐÇ:“?ô¡ÌÄØô³³±³å¿­,¬ì™þ„}”câôt±š»ü±³ýÛîô÷ÓõoLJÓÇÇž¦ö6OÈÿZØÙÿ²ØÚþÑÅòqÚ˜Ìþ[ÿdøèð?vàüËïèjlóo Û‡˜#gclû,õ™ÿÉòanåö´¹í]þ±à#Äâø¡óO_Ø?¦céé` ´ûGćÍêø!ÔúøÑûÏÿÀFØü?ºô±,ø“™ãc©ÝÇ òÿGÉöÄ|,¶ÿ÷G1ÜÉŒ€vÿ10v–ÿ±þç¸Ø>ör:™~¼þ„rþm³²ÿ3öæ8ظ:ÿcϋ㟙üE®@ç¿/ÃçfÿËhÿñZ2ùǬxþÇèlõ÷û'áGô?ÆÁòÑÝ?Ûq|¬rÚZýçYâø+èö¡p|$qþ¸ìþ­û£¼ÿ:á,Õý©•ã£-.–NÀœŒö¹¸ÛÿcÁG×?çûcO׿îxgS{§Êÿ°Û?ðC°û?«¤ÿÀ]=ÿóóú£ù#“Ðé_ -þãî5uuú Ëßoã·Éÿ²¹ÕG@ )ÜÒ¼½)_ˆuzV†K-vÞà/q½^VÃÖ+—5òâiHS3ôóž §$ Žu”*´®‰p8*.ðÚ)FŠÐ-Ùw@WHŽ¾ewhÔî͈.=_@°¢NC “qÿînì rà&“ùœáB1æìþ%Þ‚~ëÊ&ÐÞî®÷îÂIAKKf@÷pq œË!™s_ÿŠCö¹4MÃÉEÙþ>EÂå C 9¾2x¼×ìîÃgæÛ­îù=¼¦Ó¶íˆáD4!?)ýüI=Ä4*ÖlÄŠbóà}Ìðkäæü<.»=zGpª+ð¾O‘Ü>©a…{µ~ÿÀÿ6Fo¶Žç¸toÍÏc~ÔsôR=[O®„ù×H‹kD§¾d²õiɯ ã©Ö‚ -Dyø½9›ýS;"j˜‡9@hƳmI;¸¹–»¿mLLN»QãÅr–äuÜ߃>ÅÖEV‰fu[P»AÃ_æöxGÔ@®S3 °ý÷.) ÙáMö‰ÂE%ôÕ7Èh%5ÚJ”d®^Í?:– iRbËV¥?œ.À.‚¬v6aÖw7h3%”ëü‚JK6ー‰E:²5"Û~ÊBñïAŽTT~%ö½|’¨€A\e¢#z™-åÏž¨<ªÃ«_¨ƒMVœ2Š D¹µóßs…Áù¢~Ââ6n«ô¸iAŽyÿÝȸoŸ¥4ë °±çžBæ‘sØ“‰¸Þ½€ JÛ„§4¡zÍê—Û´•ü]#E³Ì¥58}f£ž……R(D wk­U á·ï‹Â -*œ×ÛP!QׯITÔÜ‚(Þ¸"%'ãh£÷ï,ûxKùQâ'¼uŸ‘U8ÚÊ% ±*ô²JÙ5ªPŒr1œQ9Rl×zß›ù,J’iŽˆÝ$0–¼ÂÍ®îó -RÄn)ÛËë¼á*ìOð ƧK8”?µ -`?[æh4꟠3)[¥OJœ¼|aÜ®”Œ‹güD9½«1úÅŸ]ï>ý 0b¤ …ƒÇ2?Ô+þn5þ¤Ê$o›Ä“Ã\Xẋ«º2ïûÀû-óEhÄ¥‘·÷)!¬àj « gͽLëÀ΋÷ù ôözë|buŽ1ÖÅ×,+œÖóøž-Iu¨Ó’S}9㊃}Þ†ß?ì‘`L)?oHûZÊÓ÷6` N ýù -žbý> ¯ÿÎÜ“¶ -Q'HqêkÒ’M€8<ÄÊ먋e;’¿?¢'lÕï9ÃËhC7ˆÈÙ«=¤T9ßZ&c®8óøSµ}1±móvf)©ò½j„è ×~˜Ô'þ¡æO¾]ê1¬)òF.Ni ØRR‚ó#Ý$R£Î; bUÝh0\°§}Æ’WZ‚U¸Œ…K{ZÃdü«°QÛÄêÕIÛùd“3ù`ÜOŽ¦Bȇe]ùˆæœÂߌÒ ¯YD³Ï¿œZÎ,׺›>*»?•–Ñ*sãíÜ´’6', 뱄úK!ñQæÚoäÕuö4TÝRë‡GN»NÖv&É …eVÛβڱ|圔ŸQ¡eGùfEŽ6*+¦Ì®@èÅΆG'ó½Bájô¨  mê²v½Ùô®)…ªtX8B6„^ÓÜÀ³2©Œrq8 øtÖ;oÓï«X¶ôh]®àu#¶ M.KhÔÉ«ã—°ð£Ä†ÙÝû5é±P 2`¥O꿾||:n.s_‹ÏYaàÏÁüya*=*J6˜ê7=¤„=c7äɸ7ã¸Ø´ ˆÝ(5oP”wÈì¶SC«!H/RsOåð§:Åþ6[TvÞ™¦éof2a*z8—Ìð†¡& >¡ñI'‘ß]÷¼lI#gð&t«š‚y>SÚ$3ÁL;v=¶bóÚH#½eXÍXf -êÂûâdΘ®9w¸úçÌhêŽüÒ$¯Üi±¦f¶«ëÙ†÷ìþl¯‘€ þ|”àzãPÒ“—ÉÃBÍÿ㤗ĞíN “?!ìî­ðSdýëÊ?ë_©cc4õƒEu«`3ÕgÉFà^´zoj˜upqé%º~‘e$Ô(ÔPš¿Þ‹äÚœÕkqP0³ŸÇ§¿ÏÿDlr¢„œ1­OLRk $t±¦‡-Ûwregõë­õwA^“G¾¡MAo/ƒ<Þ¸öûìÊ·ä½¼Þ]¹Fì5íœrˬ¥o¿ÜQ¡:N!‡¤Øç’¦L£êúº'‘CD…¼Ýý/k÷…fúÔ~Õèk1T]<*‹2¨©ŽL ½@-ØÙ>¿gAé~àñgˆ8tƒQkù[=#XîBtVÁóÍÞÄÂwO°ñÂíëxòÇcrÒïTØÒÍ>õF°’æ  -£Ã5¾ýIY……d68óê¢/Ř"+Ðø ¹,I³Ûò•x5P_íä'ºÕ{v-c‘º*ßeâ3ë3§W=-̸î¡Ë~òxüØ=Ý`"Ç¢f‡ÃàQH;ŒiÄ20¯˜„ì‰ ô‹Â0Zé¡>fþ9)v“+%lÞ8ªÇ±NÔæb‡EJX5ìï­7™ñ#ø—LžC³ W£ê†Ù‰~G%]xxÐS| -1JRúìOÕßu1°Ý={Ü¿uVÁŸOßß;<Еl—=.žÒ¿FÞ³"âg4‹ìp´…lð\ü<€¿®až§‘2Qó -ù 1qhqä¢XágéZúÈzWöð>“÷ÓúälÖá¶ô}ÓÎÈÓÕ]ïI!ÜÉØ‚G¾DpPX…gx Íø"­At¡¥ú2³V£Ÿ œÒTÝá«Q²—Ä$#4¡–ïeU—ñ•²…âôСߥ¶1g‰§í^ý‘¬„äˉž·Uø£@ïx¬4Nÿ˜L@Mᔎt‡Óub1 ]|€K lòñÄn­·DÌÑ|±~×[¬ÁaׂN<ó™ýâ.Ô49l¯ÚÅk*.ᦿ£ -ÄúÍ/$æm£I‘׆æ]ǯÐ_£ Á¡7=ôÙh^º“§ žµ Ë}ò>ƒ !§ZÉ#oÔ %Dð`7±9Qddèð€%ªMnç[ï9 Màc«gÃö”KA'äjC¶_·)%xÆru¸#‰o¼¹T¿¸O4V›“ˆÀðZT@«åôÍBW9¼&ÅÑ4IÅò«¡ˆÌ¬#ŠýwœF¤ õ!JdgyÎgüRâÜœ„§CcV‹ÑoO'à‰U¾b%`•ûP‘·yE¯s‡¡x]jß<öZ×ÃǹßÃcHŒ®(ðJœÖ«ø§j¢ùýôè'‹uTñÍ7•‚'(bÊ'ó¢å‹ïÁLƒzûÉZÓ -L¡ÄåvŒ¦VT¦$h•qŠLÝ5Ö#¼CI „)âŸ&ˆ†þÖ·¦€Îa¢*D=tlùÛHÌu†âHž•wÜ‚ð] -×ÎFªês¤ˆJ9C.ñ{%‰±ÿßs²¿ÝõÙýš°ŽÝ«ÔÒtÃ{ -Ì,ÎÏÓðÜvn’>ëZøýˆvÚª•Æßâ¥ýC¥iRí:œ=eP©äŒšú5îïœ10 -Ϋ+ø·û|lôÅ}õxÜ¢ Œ˜6n>ÒåPYuë _öÞ6û@b£œ]s5ÂhpkÀÏÔÓOÁÊÇq‹o‰¥ŽköRì |·´žo_DûfÜë&®Ôè¹™N' ,ú8”¯ÜóÝz•Ÿ¾4œ@š%¦™üƸ¼.eêë/Ó‡úrß8\¾ˆ qÛõûþ*úÅ,Z?#IÎÒ¡Ž¤3)Œ^§?©»OŽLÏ´þ&vÂëDµ¶ržUÉV|­Br[IÓï©Üû¥€FÍÄ·}²5<“¨{uþš*ÛzÆ׋|øY™¬q±ëÛ ´A¶óæ͇\ÿëøʆE)‰A„¤¶}È8:ƒ$ˆÅøí®ìÌÒS[¸Äž/rž§X‚¼L¿SwNÿZ5,”]âfÔ˜t®põÕŸ™ŸÐEΈ"ZÔŸ¨{O5‡ˆAžYB+¹«ÑzQÙbgüÔµƒ™û¨G ¿Â bLIío~H/ -RI/u—ÑYg˜‹Àß­ÉjLŧðw ›àLŽÔÛe£1O¤0ºß ö«‘¼æ~ ÌÕµUª?²î°L'ÌÝî½Ô‡ÙÇúGkŸ0÷uˆ -Ü¿½V!ú¨ËE©ÔšùhµJ@B× -KÞ^-­ÛÍ•qwêØø‚¤=±ðäv`ýà]l5˜ÁÄýj¡ñõàçyçJ>þ¡“ë˜rûZŠ*Å2õIä¾î´÷PoNZŸÄ”‚Vì½|”—ìøÉšQo %E©å)`Îyò¾sÖŸfz™q¦ÏúÜ -ÈS|ÂþYs¼!o°è½Q©ŠeÆíúó"O¯ñÍ˹À²b¸*'ãÉ.¹B«™¡À+±DÇ÷·hŸžþ Ö–936Ùk®¦ÔK€‚H³QƒÃúw.uŒ: 0$”h6:X)ÃBUöRº&™RÅ Ûç=g#’oÔï½e9]+›QžµÙ+G>ÈÒþŃ¿dOµØaàµ6Yu2¨Þ¤È1u¾`8àÚɽšÛv¢Îfi#[P¼ð3íf®‡_„Óå h³óá¦ð)|Þ¯éÏ»u;^¶éPW[ -óM_ªBòœLÆV -ùŸìÄáàšƒuõ¦¸Ëä€à¤ÙŒB$›ƒƒ -er„«ÏÍM¶7˜AÂèªíWø†A7Âç–O}e¨T)cˆÎÑÎZ. -«7Qže¨†+"ÐPP »0¯7ÌwL…a&$?8•Ôç!ùeÑ}6اðÚÆì2¥‡ŒJÍ—êk:hßiUÚ6ù¦ØÂgÊäµA®ÔiDýédþŽK4ì7˽¼à³É\òȯŠÝI!åÞS`å‚´-ˆ5—gTkù”®Lå=ç–®ÍØÖ‹!MáöyhÚò­s/‡¬;´¢œ¨ãSG¶QWµd7…ô£·žPvvÖ#ö׺#ç.ɨž­½5&´K 2rþ}<(9ö®vIÖ›…}âþ9Ú"æ;”c$»!d·Þàkv§>Ç)ÂÍõ¡C‹»ß?Ü_JC°¹–ªÃ8.Òã®ãCÞP±SH6£‡&ØÎr[3“ Lж¯Û«Ù!j„‹Ï‹m(¶DÂzÛ5À«ˆC¨”Ž˜¾šåºë²Ú\X¿Eá9Ì4ª”ÚCEåõa ußH€h*øüþ kÙFG~t!µ•xÔõúNÄÉÈê¶n~·\G¢ùü i–¤õ·òaÛÏóãi’«@›†™Š9š&Ëê÷p°¤þ³Œ“î/6F ïH8ò_O›XýÂ$n¤KÅ6íwõÃB•M“".ÊVO_Ñg|Y:NÓ­©01nšÒ¹k»ÌìD.6‡SuÖjÞŒÉÆ‘ÓqÐ]÷ICŽù…šwÉÝÄ20Î ,÷ ÞÕø¬ Å‘×Jžå\yÆÜ8¬UUO­Í5»Á>í#-xÃsƒ§‘]ïÀÙó PÒŒ„r{CÂ/nºÓÔú¢Zˆ‡ÚYf^Ø‘~2ÿA½ó 2¹]nF…oˆ³Ž"è¸(Hçkö³€ÿÀV‡ïuG¹d·DÜ´ .vìó›8™SmË,VK´£*„¦™±t(‘.f½ Næ!ï¯*^ˆ€Ú{ج.ZNÒÄfì5cp09˜]’­œÃ#f-gß:wØ™“.HUÌÈÔ˜1èAtx5ËŠtÃùI¥j8 ü]"C,%0íZ˜‚Ý8Y½Ì…ßiDäðiN%aB¼P=vz½pû7Šb=ƒ‰>ÑMFﱆð83rÃb§Ò㜿ÌF_gbãu¶¨D|ãå\iu|Ÿ)X“'BF©ÖIþÎêUL`y™%ˆ/À/×fÂf Ï*hØ -••CiJ±HŠ‚´j ÊLç~‡õTˆ™kú̬Í{Õ -o]=÷LF¿@–Mª¦tf&{h£…³3óU™Øf`â_’¶9&B ±¸ÐïI-˜çrxÄ>§›{,?{ Ñ—*=kO%ÒPܨÀD&Q7dŽ“×.±D-¾¦ZnXt8…('uo‰’õý`îö@bÔºgñÎØÔæ<ôµ‘‘|ÞÉÐ^§[Ž}ÜÙÀÓÿ$;J ét}A1àP.ÏõÉ÷RóG¾°·ª‹òm¨=9׌àøÉüÜs£»ª®mÆÛÄçrHæ-®Ÿö‘¿Ð,¨=®§‚ýJm{?8lá}S×k£îbvúx/իüìÐÝÞ=¶¼»Y?ÒF#àî9š¡S[ÌíQÑ$cÒÄÀ\ÏVMñ ž™úDî©[•ÌúÆêmÖL)ÊqÉO¯>ñD$cEW¿}¨Վݜ€õ½•Ò>ˆ'…í\¿Rð¾¾²qzBIXPEs¤úfŽú0á;ö,òÑuì€ÁÎ’{ÚLáÙŽÊc¨ÝLü8>• Å„þuûË„<‰$ž,¨yC5”s=ö<¾ëñCÞ4èâÎôŠ<„î0Á8Gz -Ì&©A:µY÷P%ÕŠ‡}bÖÓ^Þxð{‚¬"Ôó·Ô«¶6ËXë‡ØËš |NÑTB‰P²–£€ë×ÁhbSÆ°…ØÐ;+&ØHÂíÆ• -4C4^¶JqQ - 4×´ó—€Û“~¹êúÉÍt‘G»Ž•T c/$tÊaÏ4ÚîÕAœëK“ŒŸ)ÄãݪÁìÊWÁp¼Y8pÔŠ Ê¢pŸ.%]çÖ½u¹‰6{Ma•1ê´ò<:gœT’ˆ<+R²ž• PÉ¿Ðô0s2aDZà}Ù‘Ø8-ÄΔÕDÿ9eO¶gþŽyÅ°7B.p¯3?Ge¨O6XŠ™=ú€·Dýu8+îŽE¥Ý¤]Pߣ‰‹)©6CÕ²†eQåYÑ;–œì9±8²Þâ»%iâZמ -‘D‚*—Ö]5 •àIÅ'5È»H¾ŽÐª§‹e}tp 5&ý¨ù†i0ý6ÍÞ ¿ð—LD®¹•ûf¥ŠÐKD‹pÜO&©œ–ì,=ß÷òZ¤°ÊÜ^Xw‘]„oF°‘¼Ú\²w]“ÃÅC70]¼O†Ëâš \fDK•#`茔pè-L/×-;*èNèk_'?gzaåèÚXœQsåÏÖí“d¡¼Ö¤Äž²6JÚ(g5uøš§š‚ -6Ý󯊱jÑç_ÐUþÞ6VÐTØE6õ)çñ¸"5cí^i²Ö.ßV)×Ç3t¸?Oؽ ‡ÈÓa:—Æ¥ø[1έãØ_ˆ&‰ÎlKgôÊãKj+îªÜ-Â%gDÊògÓŽdcîÿИ<&ßOɉÛa +‹Ã(¦”3qoŠhPÚkyoRËÔõhL‹ÙáwÈm/äÖÈõÑ¢³E/§f°J’CȨ¢E¹«ú§Ðú.Dˆ˜“0cÎI™ÒðFFFòl&ê"ê6XfúpeÀ_Ÿ.Ž;<4ï̉kè¢ìÁjìòŽ9Âòv÷ ½Ü‘…h{ôµahT¦%ÛóK î»Sµ4~.þÌ–¸ñ-fú4Íá YÇon² ß@ÕB™è[žn›àq¢8Þí×Á÷#ýÁðÑhÒAJwžÙ¢[JŒöáUÃéNX¯<ëgÎD|TÃëãBë]G#ý „äÇb‡0Šð´C{ -ö๺úÆ`úˀ…ƒ£_Õ¤\[ ‚žúkréëbqQë€ca#ÇBqe¹Ó¹ “˜”T¼4–Í-UV<Ù¸T:‹©ùýsP‰Ó…ëf·[2‰@vÛ\cY%Œß~ú‹G¿Æ1Kº.ǵÑšSðêÙ$,R¯*º.«iEÛ&2p±ìä5CWHu)è滦@ˆ#Á4ÇÇ$¦Óá¼ò`´Ûp<9Úøª"4ìIX)¬©'30æ71ê±|SxùÔ]lµÂp&RµpŽ%ш•Qcm1mÝ5¶5Þˆt•húYH¾>¹HžiaèŒ\é¥púÓB³òÌêí!ãÎ&æÚýVÍW’’&ö´ªrÛ,ù>E(A¼óÁBlÈj¾Lñíåó›m7¸èWá5Æ8¿/ÊÂÕ¥%TÞ¶sFu9‘K7\¥Ø^[™å³Öj HÈŸ1/äÞGâ©BHlí¸@§y©!”E²ÀôsܘrÔð„uŽ\«îyÎñeš¨;Š¢ËG{`8BN5ÕåBØŸ¾ásì«<Ç9cØBèµcÙg,‘ìÓéúm1£Ç_zUw`ì‘Z1#Ž¯ÈÐÜIÓž}TBÆÙa¿™zÃÄ"ñÒë~'.Æ.øšGÇe%L¹àì{†’,‡—«Å‚'×ež~Ð%ƒ&ÙÅVþÚ¯LÞò°—ß;qy¿—‰nÂx“µ‰‰ØˆG>ˆ¹À¼"¤ƒÚ$†!Ž?Ðö¶Î¹"#äwïû5Rcö·AÅϵvGï o”¸zÂý>OLƒ³ÀÇ{ëé–_%˘|Jé}7$L­[emÎÁŒ“&6XÒàÈç @*>X: Òî©š/QNX?ü |…ØŽÔØ—Ìtœ- -ªPÌð§»ìËAH0ðÄN$ â³ñe ÆçkŽxpî+( Óñ Ìö[xúa¢(nUn=p2YCwÆ—‘€iŸXßú¨û…kNÓðClÝA½\R?‡×@¸kÃܶDj\yó¯:únU­ˆòYÔºÓÉ%×5ŠwOæ³gÀϺ+'äÚ þ­Ú8{=lßSª„¸Æ0 ™$"ê|¡™G åÒW¦†SâWÅègòµ•˜‹/†ñm´çÂâgQ1é-Ò\ž#‚˜Åtì9Æ-Ô½”ÆËšyd9sy•×zW'ÔG°ý=D[à­+8ºéqÖT;¨ÓF’Utí`•æ±(9ÜÖƒNê(gnÍôi´(ú™ûü®~‹×´vÿË’jGÜáâjþµÓ’Ðãø=kq‰-©u1@Ë°ËÐŽ’ -ñÙMTyMô&Ñâ.˜Ø -ãä-_R‹ª*Õƒœby—™æB º=»úh¹[ËV‘ä’IêXKÎkÁe-̘É]ìÙÀxõóëöZW°¿Ž!¶ûµ.Ï=³/’7ÉHn„Y”µlº‡LäŒðÍáâ½—y…*<ó -U¢î’Û0óë9Y)ç·äËãêJœQ9_Üàaƒ#¤§–Bšm5È÷!4ÔãÚý8ÄñL\êscáwŽ®âá§78´ƒõƒcS‹®nušAmµ7ÑõMù†øÁÌŽá,[s»ÃjH.5ÂÁ>AUÞo,ü´ŠsÒÅ]ô©†Ò&ö²˜;=™t“ôßÊX¿ÍÅd)qEOjñö8ŸÃÅ…%WK=>?z½I,qxxxÆç¼ñƒÒ_d„D)§ïqi9÷=^mõ0‰1x‚e²ýJdËtŒÓ/äÀ™ë›¥3qÊŸßà³Ç¸q+Ÿ¿°ë¨¬ï¼aO§ž,ÙK¾ñ2ßòÔßêpR¥ç¿¼={WÔ‚ö²8!Ÿôó~&-6Ãðh€­ªKt ?¹Ô×£ªŸtÕ'¨*Ê™16ƒQÖÅÃ;‡Z -ëWÈ—–9'‹ÃšÀn™’£ÌÕóRFݬ•LsàO•$¾ bo¾!¬’²(æQOpQªHN·HS&ôKûßÞèe*Â)§).§š‡,Šô:¥rÎL®Ž\ó˜x4Žp°&ÎëdF-D˜{/œ’·ük'D‰a–E–‘µÓËCã¹Â‹JØÍ•cáb´ƒ&•Nãá ÐopàX–N”pqËNþ½fÊ0ß ÊsDÌ~|ÎÍ‘hʸ0{Õ6uN±2?úövÓ7|뙎F²æß·W ¡’ä^;YõXq°ý`³ä#É@2c¡ä‹Ð«[•†oZ+F -õ{ñÌ=h ÌÙUM§àC ºö¢287xÏDfíK‘·Ìª•E+ ïVõ•z¯bϧNiÖö9Zí·zç£eh)¯1×={LØïÄß"V÷É9nOF–ËÅþdZ&ýxàá£ðKà–õ Ù¨Øugpý1ß(Ö¼(‡r)ì’xCöHí­}{n¹ûÍ1aåš žB2,_ª¥ hX??qrk3[öÉ{;N ‹#ðµa§{]| Sx ÇxB”(\}JÄ¥ßûù•Þ\ÚW­ Ù*Îfö¼ªü»Û±§ôÉÈ…aCm+ïØþEÓþ#‰B»ôû´…"-žtï:´­Ö¥a ¢âªÉÚšñ®Ÿ ~ØŠ>³¥3ÁWº³\y1dõ}¹ jê¢~Xœ_ðÉ6ìào\^]ïŠy‹#°%»Œ@·t\'Ü-…×0ÈŸIHü`TÁñ|ýY:"3N¨7!D=h¨îè€!VÉNL!Ÿ€¢âzeB¹ØùAü¤dÙ©‚Oß5h;”0ª¦²yòw·$Õ˲ž¨½b2$_±öL!ò=îáÞÏòøHW#Wl‹¡¢= -#̈òO J‘¥Ü0(*Ù+—?B8ƒ#c7  Ï7-B%U±$é‡äžfbh‹¯Æê;Í©d^ߣŸãWW6*Ò’R±°ôòœœÔÊú‰UƒÅðžV-¨ózU¶Z>þ#Hl7½¤£™|(¬¯´Gê›\`€¯Ã{x‡›EN¦S¥Oöþé­m#jí¸þm|e{E`ëµí˜,*üµÏÌ׳p×FN·†"F]Èo'­ùh[ÅöçZ¼ê'e© 4áúÕ·«wOØI[ÈOEf3Ãu{Úqäî ó0-E-"K±öÌôuZÑHkzH£ó HLxLX#qBö4£iÀ¤ Vð¢±ùžDèröúÊñWñàô¼‡¥ù¨&ù·ÎC éÝ9ÀuQ™S­·¡mAV1nËV+5Ý©sâP±Q1 äâd•A³XàYp•t׶]_Ÿí§äD;o¿¦€ û„TD…" ‘ -[öo×öØÕ¥ |[=C‘†ëŸA»¢(Ž$ -6ѵåàJׯÌ>ßßëˆÓV’¿Øsª¾5tDsmîžÃp}w߈NF5ï=§²J»z5 îÍäÖqç…û¹7ý©Žs–Y%›ÖX2¶™ÄØnàLøØÊë…ÊY6.å)zj3vÿøý»—ƒrü:àM:=Œ&KLæ‚{¢RÒPH×ùB©}ׄz¯R§­B›$÷hk*"Í;Ë%TwücÈS·]Þe1§ìã%Mì6}›Þ0ÞɼȠÿŒÖfUòPIV~XÁZ-Ë¿)O8¼2ôr\½PÔ¨1iÖˆ j˜ D±Ÿå³w‘†F -Âk¦Ó„úŽø-|;‡ø¥- s¾Ïd -x˜Îë ³Vv¹u™†ˆ_øéH÷N ùöí•™ƒN²ùÙ>ÍûZ©áˆ^¸"C´»(×y—ê°D:ªÖ¥Íæ -)å|2ÂŒJÔ5£>+DSö8A­©é1çv71´pÜPüÛ–;¯5¿¶¸Væ§ zQ¤’ -DSHÄšs:º4¤ÂQ»ˆÛüŸ"kx2¼ u¬ *à­õ’¤z´ö!6{ÚV,q{¿mb>Muáëåøòã‰tóÓ Òõ‰,ŽæhªΉw N);X¢Š1ì-°¢å1ˆüö‘Urà°1…‡ÐéP¦ ‹Ñ²Ri– tÙ9|£Ë2¹§‰È\骬‹ÃÆ/>kºÛAÕË?!>™óò»ÇšUgûM®œ1Ñ4¾å3à–Z8 Þ¤ž30êÚîEß…—¼£[Ã|:ç%Ž²Èo6?\î¬Ò¬=##{0r­e#_ê¶ß ÖˆÎz‰Ú¯õg~QÌ=ù²Š'ƒ%Aá:Ôpëœ'Y¡EPWþî+ãj è igWaœ–0úr±ÊÑ^ÃáÅ:6"u¹k¹ÚÜ©LešòbÇ0âµß™®ØysÑL“÷ ˆÎàÅuë¥> ø¹‰¡fÖùKËtêë³³…T´sË©ž·" H“­m>“Ñ‘‘jü/)0Žë1†^ -?úS΢$ßàŒ‡D¿«QR?¡g913=go–¬åM Å4À1%å&¸+,3µÅàë[­fˆü®ßì”ÂR¥bƘ®=¹–Fá~­»8e¢qÄ|Pû¶<„p -‰…$Ò bN‘77)W'x²ÔáÈl·#Ñ -{uêQuºÜ°¬”ºUú¦Õ;ëWż£ …8ìöÕf{BЃdþŒù¤ÿù—;û‘¨'S?“Â(WÔ·äý©ï!a d+*S ¿>íUóE>ø¡j_Ð{PÎ7Ú¬7‰ÊWeQ©m{îHê>ù)¹Ù=¸ù=<)s¾ê”c­(ÊÙ{?\õ<Òÿ”é¬ÔlWªnÙÂÉGú¸ê/8¡Ùà,6H¯VbrOß!"%¯+áµ™xaÌñ«S¸iêÓÃòi¥ŠÙõâ(yƒ¥… 1ããkàüb5?¦Yf;¡žÉÀ¿€¼‚q^ƒV€ÜÈX4d/^ÊCá ó£®¾ ñ^ðð»=› -ÉUIÙX\c¢ÄAqŽ‚„%¸ä²&Þùô´ÄùõVXXÀ—%Æ БMk‰SÌÎ8gŽ»ëÛk§¹o²”kt €ã -†’Èc¡ºÚ¸µxå﨟Sβ²!Ÿi¢ ñ³ -…éÉõroÜš|{ƒ4Ñéb¦÷æ*OæM„׫Õ:¥×ÉåÀ'¿bbKoLäÆ®ã6ßÅuíqÖæ¡ÐYx±\¯ãÃÒß&ÏS‡¶€£\!ö7°èŸ¦Šï˜¼<°rŠuB1µ¸€Š·[lÙ`}D=¿an—2zøž¯‹«‹4ÇvÐÏJ„G½ëßíO;)©mâmÖNS_£û³Tó„cB|ÈÐlübXä j@íäªÆD_jªº¾ öD?ó›OVÃIíÈ)ÆH#.Q¼8Á^l™,{… p—«G;J§ôêÒ“üôɼcßvp‚´*cÏ2¶W±`RNl_QV^ëRìò¬òrl¾IÓ¥óðôqAôìÞÕ FPóšt¾«œú€O?Ûà9µàW '!ân’C}l( eóÕˆPò0n³e0B§ocØZS«ä[9Û–?‡^ÎÁä—}Ïàk?ÚTÝFq.¼‚\ð´|¶Ý=“MÙ™ãV8HpØò7mg¯Bu‰XyïZKrÌ©õçvJÕ$%–Ï¡¾‹ˆðw'àlTXc*¶& Á›ù‡Kþ)žï«!RØ¥w2‰]S¬F¸ÉƒþÖÐWÜû-FCï½gÉ¢™Ó*@ÒÏ2 ˆâ5ÐÔ°ôÖ’òßà˜2Ÿ‡9¥™bÅgˆAHo(Ñ©‚Ó•Úæ›ûÎáÑqíNÒF5{ÆäÇ…ŒZ@‚ë´ú»b÷®ž)ttÅÙï)ШkÍP—ù0óhœ x¶ìAŒ ùV~áP"8Êv›BVÅRï…»>cöÃÌ*Ú·Ql“<ª£tz^ØúMö[ e©²&P`~XrÁël+ö4¼Õ}ÛdÞ~í ˆõZ ]»ß@ž-4 ¦Ñ^àXtÂû+©\ j‰šÕþÓœ•iŠ+á{7ï,¿}àžQ{-ÑöÔøØ·ÊÚNß&r8¡v‚ò¾/Cœ -Q2þíšb°Z0à›N¯¤ºß>·Þü&V…¼Êbt#”bõEŸA” žUG?í:ÞmkkäSûaäˆÔî8ì2 O¸Î0w.Mœ†¤ãÄÖ~LýŒ—Ä7x»o'I¦ý2v@"}…—ô%«Ý ãðã`l%—¸<};Ÿ\‰~2oŒGC¥ w³üõ ~ǽ°ïŸ”F[Í}×X¥TqƒS’G²L­M9·é…5Ü÷6|Ñ\Æk­[ŸWeû*PÝ -‡’ÐP^ëˆØƒÊ÷LVµ°Ž‘ùû6MÎÙ™SÖç0úŒœÔ“2C`S“á’Ñ•7crÝp)P^)!^ÌŠBl©Êaã··ÕÞ]ö²A€ƒ:ǾRP èg>×RFJ¥ ²¤ä˜”Û²«97ÅÞ€0AlÝHqEºÝ’G– Iù.Q#rΧ;” (F‚Œ­Ý‹ -Z¦+¤¿oõâ­ .+O‰F= Oð0&Bb*½Èä·”A3â#Åÿ¥ñà `J¡vöæ¯íôvä”v¦eö -ày‘UÿT7µµ?ÙÓ —°±ýz§Éþ “b~G¨¶ ÅGÃÕgÝ[–!xâ÷vÂá#å¢ÖÆ-€DPå,ªŽÑ$‚µ2ç³µµa|f/I#67VÑŸ%{Hë©bC_Ô4—r?lN—ƒ8¾Ú0ß°w u‚vG›½€Ô.¼Úß–.ÏŒò-,qöŠñ…u ×€~²BnSýîg4™Òö•é£rð¹†/럹ŒĆ¿›ÃÌ)ÉÌ_µÍ¼õ+>ƒmŸ'î¯5Š±ÝN‹ý¿|·hЙFÂn+‰a¸YeLùUFS£3Ðý¬º$l8ô"ÌM¯•rÏ‘QÈ`Æ5Ó" -GC)£®ÎO4ÔÈï3‰eñDó#;ãûUŸõ{zó§ôT¹zF¯8Þ0®F›"I/”YEÆ#î·Z²s;©£­ O NY¸:¹áX©e—~Ïßå7ús¬Ö;DÆ‚¾£ Ï ª½‹q$*³jŒJ>t¯«fª —™zŽhìˆSŒ&°€ò¹×c½aÊÔd³+ýJ›»‡be³%ð×­ï< ©Q!xcÕmÝ؛سÙlìmÞìÎM‚AñãC!âD·wÅu1¡×ß`ÀÁùny-ÿf7`†“Ò-»½—äÉÀVSH–æýd€òD!¿™ˆ UÄu™\Œt çfc™1q!Æ*ðž û)‹eI6ÃÐ}ƪ™âüRk -RŽštd{W„œ¾m¯nòkújk¦MdF]’E~q®9ò@}ÝVª -©²SÀoˆ…žcMòo v­/ÅÍ´hø\z¢Þ[<ëð!¯Õ´¾|ö‰ºTtÞœlaÎÌ'íi10qâ¦K̈ˆ2²~2A¸*Ù†MZ˜Ë[‰ÎÎ.LÑe飯ílê¿_@”?»YÕdÕTN’DûÒVã‹ZQ¸JÃz8¹‡>{%Ó¨-û"\ÖÛFÞøí,Èà>-¨Þ±sÙò “S`ÏÝá$¤' V9[F4/¸)vñ²mKaÿÂZÚvÿû9û„ŸÝM¢v .r¨É߉Ÿ`›¾‡úªÈ«1ßnŠ Š/cáǹᖩ @oXÅ׸IÆÄ”"&ëè) -IÙ)plêØ|>·‘üÐ3ë@ÕBÔ¬öv<Âgö+²(òMtR˸C¥¬ú¶:Lõ´¢äbËA¯“Ël­x>£Í+­!/§±„(¼}ÈZœ¢5Ýc¢'Òv‹ßo¯5MœU+±‰ÜÙ›*ϯsýÑïvPÙp -ó”ç?Œ;¤A:y;j'‰r!GqÚ¡6EE¸Àø/Ëîós{Y*>O”ÎhcíÍåªÛè-&#]:À©sÁ¼&,TíJ?ߢ ¡œÆ«ÄÒú~•®ð@# - s ¢Ž;†*j4ÇŠ^©‡æ?V@´£/K¨1Ìü©@Ù˜’ÓÿË„¹Öm6Œ(äëé*†”aîNc -ùª`mR§€W õæ‚ûBô,Â!¬EÙœ]A©‚'Ú_y€j²Ž7,·\/>2Jj{4lͶR–9Ò»˜üØjê/ŠÃ[ùÕ\Ü%ãcßa)nk‰Ýã‘MŠ¯`%›pí-?&M¯$lTî!'-`<:RW†‡©XÊöŸÙ­snZj/@Ät†«J_Ð["nbøt]H!Éb¾rï6”*¬’;úw$tv>úXÏ6ÅqÃmȯŽ2fž^Ü% -%*¹ÔÕo «í!@–¹$ƒÜ#MÛòqœûº çÉÉR t§ûì9&Œ÷|ŒÒ¹2é -ˆ`¤ ÷o õä½!lñ BxìcàÖ -lêi¡ö ÃÛpÑrª¦HÀþºsnoíCêÄz­"¸¾èzÍQX½6BO]5ê‰oéOK:U¦T“9Ý`ˆ‘Ê6STð‚çÛ[b®¼Ô`y·žMI°LÙÇ«f•—HYt³¨ÏYEƒ$W\ä |(ž÷OÐåO‚6ãµ8Qè°× Zã“YùœßÝÌ꘥šü¶‚,Ÿ„H@k®£ó¼hl芎2æ1Í]4qoããg˜¾{{cH’Ú†¶,ºªŒ‡Ín­¸A_Ÿ~‚v›I#üè)ýæ+kÅ©á©E¸g¯ ç*Š8JÞ}ïCÈ­«9ò£ Øwc¥žmÈdÂ,Äî„J„Jf›¦ºdù&‰r¥z¤ürî‹ΘÓ/¹Z-±lðQý\wgÂÉv îY4/Ÿé¬âU›¬Ù ®Ùø…]B|>†J0Öš–C€ºé@~¿cs“x7•OïÃÉ.eû˵bË@€¢‹ôR¦µݲÏVN.Ü=\…ùz{L¬É2úÕOÓúì·g'µgÚ‰a*ZÓ¹ÏÕðw -Ü»fGeZåðlöˆ‰òbÝ'jÀÄ£ðìߟ=nzµïÓ¿@JþÚ¾ÕÞÀOaáĦÍâV’‡UB H¾½Ëš¯þ„ldÊrczˆ×+Ç·Eoë#ÿî#¥0xR«›FÊBzù‰ˆèàè5³nP‚³A~ˆØ®bþè ä›kÒ>Lßïh'ñ m3ƒÂ…¬Là¬^Z¥p,Qø>Œâ2|jÃ5)M±&_EáL²“;]±Æé0ª,ä -)Áv¥ÅØ}ó÷Ý‹^¦Ù—1>3z8jñ²ÜMAÝQÉ(?ZÚò¶é)¾œÐZTíHÄŸÁü’I7›Î¦aò¿¶èÏð/ ué™$Ær båtÉées©Öô''¶¡d/ñ@>VBD×ôR«Jz»y!ô'T8ê¾µÊCÝð°ôi -Õ¹UZì Þª i#¾Î^«°‘量hÉüœ¾~ŽéAî¨Zuä]GÀ¡,RÈÑÓ!dFpk9Ö|_EhPÆHªn¸¯/o*²ý"-wÁˆŽ—Ê4ñÌ«þ¶^{NÌ"Hâ¿(g -7n”Y¢§‚FíÃÊDXJÅzVD+¿tÐÅæf@Ý4íúoßi"”Å~âÑí&9¤H–»«s•l =„7·"uÇ  1Ú@ƒ3¦AÆ,WþÁ¢`sûÔN×2Zµ–Ê•Y0>4‚ˆÁÿɾJPV( ï…Κ¨HHŠ(¸tÖ̼a"þଫvO-,Ùvõðò'd9X{9Ý™Be"Òµã[5惰c½°)Èåшæþ£×ZîúFú‹ÊcüIì·«ùäñQõ®‰=ób+þ”Tëþ<–♎_±n$%{bªÉx°uFªìßg.b• +MCû{¹ÎhP\ÝR\r”·jDsZƒUá*ÒüÀ5y?å*7«èÖؾÏm£hÿ™ß™-hpˆ®1š^tIy8‘ŒÂûÖ‘H­—+ô’}¬¯Åööj¿¹—ø×w‡PàÚ.„ÿƒtÖoµÅ¬Ú— üË ú„^™ã^Ó^1ó±nþÀ«M·{±.@¶º×½<'8ŒÞ‹²it]†Hº´¼•Õƒköþãy°³[(’qÔ:6»,ùo -ÌN¥€²eyËFê'çúyLa:¨¾ÑúÑ„FuªÝ"·ÄB„eÓ[£{M=šÛ ™å e—âLÆ„‰Š—»ÏK«u™ÚjTì¡ûLÀïÞñ³ñ7 \¾`=HÈÐ#NîuÎUyñ„”̻ܯÈqm‚(éAM=§«ÅÃ"f’Ñh:ðvGHx¸c詤,þ¯ŒÏë`K!½ÃÙð÷@…ï§̪Ôm1À$˵ㄈ4G g†*4Ê7eIÀ“ìûLíB8W®ç¥e“~×ϘÿÃÖ75 £è@ŽmÛ¶¿±mÛ¶mÛ¶mÛ¶mÛöì©ÚÚ}º?!]ÝIºC‰{§ ˆ_NRCÿ aOäyø¢ÕSÓæZȵÞaú3x=„ÞGð©"ÀHº8Ër¯ú_z󯎲ÔÁ¿ˆjÀ`NhþPà™qz½ôî9ê‘6‘¢¬¬!£ÛTl,Âö+­*¤¦–‡ºl~“Éá²üaŸ‘Qúöx€±s|-K1ÍïŸèòxµ"¦®~$ôuí¼/kÏ ØÏîÑ4`XQ±¶@J¸¿·7º’¬ÚþbûàÇ^=»Ï:Öö>)ñÌ|AÌ¢•xP%3˜ïNëY¯õô¬^1ßâ*]…œ•G!ÃÒ¸m>¬ÎÓ?HÂi ú éO®ßñë¥Añ6+jÕ³ªÊí«©ñv„–¥Óã÷ô#y1J^¢ÃùuA æqð‰…qÌXŠÕʬz( xœÁ¢Ü&?2è¶H„ÎH á¤åZdF \^¸ýHBÓûYž_ã…/20¦“[­vÎíÍÖç"€cáLh;ÎÄ¡gÕŸÀßâUðdkÎVpÞJ Î{t™GˆEò‡Ëd×çöGÒÊÃ×’W¶àl.¶Ç¬ù9Ú§'rãËKKÛ;_™ÀQ§å52z¹Ÿ¬BÇÌ}òVº¸1pü´Œû-FR…? ¯:ê 6Ù–åÄÇÎ<â´Št¸—¹0Žb©ô$²R¼e‚þm¸ìRØ2úà ¹ˆ)ÉÜÖ'²ñ/bAOÄÌ°£”ib‚/IèÏ’ú7N›mTôX[k¡¯=3å¹<ÙE¿œB!W¿íü’ì#MN(JYͤ)©ÿú»m‰ûcêë&(,Pb:.Åq.g,;…&’ÒýiÎ3éË&/ª2 ŸÎ±ãã爇FÚ¯v6Fku±kúRkh 6~"ïý!¾Üäz"Ì…ú©Ðx.‡[;ËfÖž¿gÐ.´„ê3Qçmô†ŒÀ׋ÇWƼIh€Šo)`®kË~Óàä; =,‹Ï-!чo?:lÇõü ¦UÞÌ`ª5wÎ"EZ×F'‚Í«K³¶iøÑ$‘Ç„Ñôµ²K¶âp‘Ìc•nÆï3É ¿Ïúù@] ¤úñÛt{aüTJ¦,„ØœHY,$1D8âs“G°/+$õ’ègi6¬Ë€ÿÆѼíy\{ã_‡ËãÀ"¼VÈrÅ×ùë„;LÀm­i½?«Esp”oèûìàŸüÅ¢”>I`¾÷´ÝY#Ñ.Þu'\b,'ã2ËJò(ÈGÝ}Û; RÕÀ2ÅÒ2ñ÷JMæL߶˜r!Î> .8a#u|Ÿ9=»·ÈºCèuö¹x ™o“©š£${¶ j ‡9<|CÛc&¬o¬¨¦ðŨÖvF<^ÁìÌõ²¡xÐóñz­YU¸éƒb$q²$5e“ÄEDÝùë¥Ùë†)zË-; -;^s‹¹&ªCÝÃä†Ä­tÇÝóW6»¼ð,ésÜ{å®YWj™Ãw.j ëN0ž».Ðƽµ  -g¡\=*UF¡ºËé-!YÄÊWU>Ñà4^bô9sþI9ž*`ϧ{ÙJâw®PÔ4 ñÉþeË›`^qW•Â5›Ä¿ÏOT”µ²Ão4m%Å彡c~¤÷@ü9x™ qävË`ì2¶VZ‚3Å6«š÷Jæ@z8]å ÀŃý8,ÛqWkŠPž¹«bÍC»”öÑËh„Ê…F‚$¹îRVq†åèAjÆ…v  {yhq8?é»%ü;‹}#zëF«ì”SXÚaÅ%±ØAÓ¿à8hŠþ2”ŒÙxºè4Áq!ªÊ†\‰p;[+»|„^±ÜI-ÊÎs«tëÌnœÌ”§m›å:@0¶$ª€ -έlªlî ˜ÎlFM.+½VìëÓ6à R³.Å¿"8ÉSébT´¸‡WƒN9Jܱ¾( W42çDAi[†Sîf&½¿ÎÁý÷êªÑ—©–ØË“~å¿S)áÜoexïš˜Í (YšUE½hå³úÅ®Lû4ênŠ£þI2¿;XçñNÔ-~ ƒdT_ÎR9®8œ(÷8 œ$w!PœrÂRËqœÔC2öÊgÕß7Jè¹È'EÙÊB(i¨rw«æúÒïêz= ‰åÁEm:]”‚¥•+—î Q^‚%º‹å á€À4˜Àƒe˜.}\¾—MKÚ «/!ü¾Ìª'pÁ¢‹—ìƒl:ýl‚ÍÇ}'ç -Üúj¾#µrPMQ ¼[Y2YÆWêGÅÙéåY$Âh¯oÃÓŸÙÑûyÎQXð+tSkà_Vò§>õXƒÝ#ô’™©%QÔ5œõ«ŒN’0!,ÂX²8ú2(ò:‰ 2N²ˆR†ý,ù7»ÞDÈTx6ÐÁõP80÷Š=«Ä¤nþ†¶·˜Ä£’ß%R¥ç*JJWÝMq³ÞEó5&ÀÿA€¹Tž} pÇ1J¾!‚#˧]8“BQ‘íRÙ`Ñ& -°XÞFXÁÚ rêmŽ¿ÿùÉ¿0À¯:´ûdÌHÓs]ðˆG•Ÿr›.ÄE«ÓKÖc;F¤írPvŒwhÅðÅÑãj:;ê#ŠÌ{øÔÇuŒÿ &,ØÎ`’ƒ¨1ÇKáo‹¦yKlp:Ô=ÃÞg]PÒ"qygú -Ôî -Þ‚¼_Ó -B—±™ÖsÀ{^ó,[ÌnÒ|£47(^\V7ÄOôö¿ýD%¡iyßÚ@ÞŒ± wT*?Ó"€ÍJàmG­„Òü7v$‰k‡ÈÞ–Có´¾71òÎÑ‚hñ·aƒš~<Þt âèâ¿õ¬ë -´ÝsLÙêå35ž„=ILl˜§uRñXt ²< 7[~mnÐéº&G1 é…ýÇf«&9’ÐùÃK@Ç€R’.)lµÍúŠ½$>&qXSÆSRê7¤jfñ’%øÍT ée*õkºþ_Šƒ§ïp\§°@»Øé.ãÆ”_ÜÀÌ^_`7eÞÛÃÀÙÛIéyùLzãNãbâ•›;ñÅ\?Ú2–•™õ–Ü&74kX&#áz÷‹ÌÑ<´LU~(!ð9²,gÉÛ7ÏéxzKmÍœ2}Ib¹­Ož¥ì ‡¨: ¹‡G,]…ßË!sxn…S:¯A"¶+»Ô¿”dæB³¤eù3 -|÷8ªa„B–çl7 =wÆöƒ*´Ê[#Š¹5"ñ¬ð)®ö_ƒŒ›Ð†ýA9uÜžö -É ohÀl9'ÇNœ—/P ´ø«H[Fµº“L^×”/çß™@õ†0|æ(Áß{ö—ߦÊØvr^¬Hc¶þö¨tb 17«þµ¿ý3&—ÛaúÙÒ Õ-6uFæ³Ý¦œè1—¥W"w< Ž½ÎÏÈW¤»H;%6ÕYr40ĽÚî³¢]ï­_Ùˆê´7åE–ª@g­DKU½(Œ¯˹X®¹[®&IW`=É!˜nþdñ(ã†F9»²iuÚËû3n¥©¹eÄÑðXÎ8¿“•ölê‹gÚ;c0¥úi«rÞƒaç~D F"\<•^Vgìy#(Èþ{þ60oR=)nqÆ4íªÔþDáár-»fŸõ8àC¬š=ëKêP¬™ãOqØw¿Öa “âÈ”6§wfº~}ê&°;àu ¡`üöHÙ~nv`c† -aæRžžw|¶Ì&˜‡G“k²•YVâCÓSÃIšÌj d,³fÛ©«xå¹ _\€Þ¬w,ø`1i,úª:A†w±˜>?WTÄ’É¡¯Ø<…g9²@ W«HýÚ‡ç1ߧš¦ˆ c€Ý†Æ¬iNÚ±:ËïÈÜÔóN§1ÎzAj6ÿ‡÷<Ù5x¿w Uåû™†VÅ– W‰µN:ÒWNj`[Ôâ(B.¢òŒUE*ÍüöpýÁ}ÿÁâ U±‡™daI©€)zéjÝ^µL×-IÙÄbÎÇŸ -å«ßËÃÏׂdãò½>Ÿ¤R%*D•¡ÄZ¶ùÝ;³½k¼3N+‚¿“! ÌÈ1‘]h@];gnÈ,Ç¥oUáॲ8Zo™> -UŸªT -<ëBx‚ÆÓþE´’Ë¿¯=2bù&')ÓÑÎ Ýž½Üð9Äų¯·Œ3›h;¨dŒÒåwÒgc!tLý¬aD¥E,mË·¤hþá¸tÝ&-ÙgºU+®A#q~–Š=‡q¥(à9ŒP "†XÍç—kÎ3œxU™# q8Ý/ oUîÁÅ[rj0gX¯À¶f¸:¯qy?~Y ˜ܾ˽ÇÕ»M¶Ûâ›[ˆËegüŒ½‚tÂT~2Ìe´Š8}òz 鎋‰ÏGh×Õ™ù­º‡ÒB#JÍÁíÃSþÄíõb^{è­hF•ì(5eo»©&M`³Yn.´RÅ ‡©)04}†Û ;f’4 -óñð}[¼yjrÏú¸ÙÞRf@6GÌ•s!!Ö5[pð!Û•“Ák_ wîÒfD³Ø)­´@èð‚(;Ýì@k¿ì¦Œ$‹ñÞÒNr×äæJïྫ‘vÝ0ljüúCq_+TR6^¼HçØŠtªnÒ΂ª“LñgÓ ÚDûðÕšÕ‡”ößd³Ò¤÷½pùÌ3žÂ«§K&7ß²„à™CÓžŒY\JWàøqìéê³wj|ýµÐDìO+ZÔIÁXYD `6xLÏ‘…îz§? Óž$Œ å ¾rsIR>aÚ}¿ÃþbOª›3“¿öyϯ © -F¾£ëìMŸ³³?O..·•å:›M #Â;–±õ -›×ÿ jÿ8álվßñ^÷瑆hÌY/oƒè*}´¬Z6êÇ~û–Ñ€ƒÞõ:Zó n‘›_d -ú×—÷Æ´áQôz»ÄE-·¼ÏYØ87;ϹǮcTAf%Þºxù+V|+ûûsRJ­Ç„7’½FÊ>6­¼êBq̸¤Í>ÑOðBŽñ,©˜qTE|¼Œýµ·dþPçv£«WxRã :(†œ–„£nl=àìE:Èüà.³Î ˜©Î­Çÿ‡ u&hàcíèÓoÒ7Dý/v7 ±÷ºt¶¶òã2x3JMnÅê¹bªn»g0Όƨ£àÊÕpù‘ñ'5Ûsy³ºá:ýà'¿í„àG·÷.h5µÿ“¼ÝDÌ“h28qÖaXöÜ^ú&…ÅÙ® ú„ ÿo‘vÚº&Ç’Y‹z®t lÄãÒöþzw fIˆ}úQc­Ç䜥ˆÝãú8>SÓ¨R:Y¡©½°s¦ü7~ÂYRñ$I Ævü8koÃQ š,Ž(nk$çøU¼õõC5¶í÷ŽŽ®øvO:Ë©B{ bWÃß½ÏD ®ºð€³Ù¹*±nQ&ý‰ú.4®Ý¿1‹ã8ØîxõrnrFE b‚­þhÒMŠ¿¢asot¤ü#Ä_vøœãÈÂ=…ßEtç6qpì6éØÅ;}äpô°LêðH“Ûl†ûåNH¢ig7º§¤n‹Ä8¢¸S‘× -C)éåPä0y_ý©áK+".Ú¸H…G¶zªV]Va…iäYÖùÈ‚ÍhhÀZ>ÂáŒ{AŠöYâ+òýdÒžÛ7CL•° ×æUrÿlОœØ¤m„X9˜14qÇ„LµòBÚ—OÖ…¬ "LþvñâOœXФÙ%K~Qj qsD‹jŠ¹µù4©`Aý&Ýt[kr2Í9™IrêäŽÉ¯½µÈ9Þ;6“"YÛãÇOŽü¥)#‡p‘[ÞÜ/*†…ÁP€qÁ-%­P×,¦ùÖËÀf#޿σÍ<80÷aÀK–v´+ºx -Ó‘zUK1ÆæBžk|B½Íz#mëQ”²9t™=6âX%ø&º+<† ú8C‰JN]ÖCÀ·ý;€f%Â/©Ñ›àšýt·Ù%f–5ÈTòn$w¤@ìKÈS³~< “¹ýý}eÚcw÷R`¬‚z¢]ü_ƒpåa9#6–Ã4§ç—[ëFs¡\É0ó]!P, µWmÍ­yÏF…õhÿÛÉï‰ÈjMJl×+˜·3,˜ÿÃþ„d‹|öB¢Ç¬'ñ¦Ñ“¡ÒR‚Ó«:›°¬$ -{>~~RlÈ)‡±MJwAŽrckÂ@½æh -\î<¾éš3/7Në<ò®$*rU£C+œ+jg‹|ùþ“ ౿úšQßls¹»kQ9)D,†ÏKö9_ÚRÑÁZ§9ç™wMLÑWY¡Mz±¹ñ»Øó$ÙyàòŸP—sm8•2´¿eWèpm÷<굓å% ½ò7Ÿx¤ü¡º£ƒ†™rž©® ãgļ_ž—C¾è§óŸ¼ò ¤Üˆ„ëô+»­'®Do8™+Q“‰Õ -*Ε:Û¤p,rîŠÊvR@Én*Ó›³½ÊÚÂs%XG}ù€§åM˜€¦$¸0éU ®‰4Úaê—/@t¿¡°_Gí¥­ÁÁ[Äv#u´c7o^C/Ȫ©\ œ+\ÌÐi¶XÒ{q ìv…P¶³c0㓱*Ž°Qs¡ž|9ý?œ&8shçUÉËJÊJßúéA*kHØ[KX–ÄŠ5Kf¿ @š_ ;*‚‰}‚·µæÏÛqkfWÚóíâЇñ˜T¼‘9q³u“ÎÓœZ6ííÒÎK#¡uv}d¬+‘‹M Áéi#ÐØ°b(eÀ¯£²mõÖLÛh¤y&hÅÒgÈëU˜®žˆM˜žüs;ÅóŠ4#|(<·^ÈÐW§²–O»–ŸªÌº`Ò[äÓM§=“Hï™øè‹BQo'ïË9}’òÈ?8knI\ù,-5oT×äÑ3g"º÷j¸÷(\63íºÞ` -RÍtäP=ïe´ŒÔ-“€ùä’öKÞwÿC-FÍ3–_`쨥šûú'(æ(Éø£l#ª%)!Æ0d‚ÅŃ7ö¬ÞáVñ䀴ý˲ -ÿ¦.û­» -õÚèêÀûš§Nõ1¸h¶ KXí§Pë0†gå–ÚÚ"GþÛ°ñ ‘Œ¬>3"î¸hÞ,ºŠr¯Ï ÂR}ÂDÈý-hè—è#8Ñßò˜¨ú›sßEîS‹`Áæô8ñÞýØÝQŒÒ[QçÂáòlðÙ›ðEL#]CXÅ ±±ÙÐM-$.¿’½#_sŒyKhÙÇòBfDYgÉ=I#žLR7¥-¢“²…Í>WHªbåÔ6&Ó˜o>.HÓÐIÛ¯#Jþ]nD¶Ä÷#\ihêΡK|ãGf×¾//tõ1Õ¹õŸs8 ùÑb”yêÕúÄâH!³ I›„†„ï‚?ð,$Øu T£æVҫר˜}Ƕñ»¹KpJTታ Võ€´ -Š²@’'YK[þ²iœä*äPdõ§HJï;¿é­#¬.Ð'=&B½C‚>Pà;*ë­y‚ÍóåêïEmF®pÿײ5ðÅhþqz‡ÆHÝVÉ[$®­}7e„S%¸â–½BãZ¦yð®;sRB…9´Ï(t?¬ˆ[n¼ÆÚLvW´>Ï›ÒÁôóÛé_µôú­W$ª;ºE&½%%9”ÆÿçqÿÃó°-Af^£Ÿêç‘ Ù™?>ÅtJ߶ƔÖjÊ¿ëÈkYÝÚƒKÖd‘üðÓU§äŽ¶rê¯0q¡“dŸY$æùT*ö½0©ßehSÛߢEl«I–ÀYÁ>éê¤!ŠÛÌtUšÂWa?»}ÔZ –WÀ¼|HOƒÏ'2Sô¼¢ ì°pä–û2‹q @‰’9{ÆõÙ5ÏÞK}ûtOösIä9þ"fð¢Êfꢼ<ȽQ¯o­>g?L!?,H·"óàÔí<7–zÌ~rsäšáßÒ:Ív´U¬wY`tÊþ‹pßÐ*ÐOôÛ9‚l×õ´¬™½[!ð -ÏxK¹ºšÔ/–ìomî(•íŒ!É£R­ëù÷­?»Ç̘HZç¯;]cêéx#@À˜»ú0«êHÊŒ/ÌGÇ„k’8éÙy~V-.;³‰µÇº4ÙNÚ²a3s3¼;ÛAÖÄlYJá“ú q ê‹Û|À ÇXsmOÉÂÜ_m×ÑÉ}»GvÌ›ý¼vµa—3ÍGJ¶ÇLDÏŒ A˜Š½ì\-ô¨#¯*4üæËyxáq§²SLñ ÅõBÌfº.÷©ßr©bä¬SïÿÐöðz0›ç^þ80JÖXÿï–Ÿ;6ç q)P3µv¤ç ·£YTdó¹ ®žî¥$kóe Æ|œïÞÍ£#\“ öøø·\AÄz…a­†ˆíÀ4>0aŒÌ”~9Æ­ 30¿}’îD‚CŠ\=@ÔªX±xù,åu]8jü'ÃNrwôœ^Š=ÍRÖ›•ØÍÍŒ&É‘èUmu³Û¿(øF;ÑéKyŒ‹cÖà(_9w¬hwï%£¢tÐÈå¦}Ÿ,%ÍÕ5Ë)µC¶9¿Á£UÁ0£p‚oMò×#ùGÛËvݲê:gW×ã(aœ‡3a_X6úæµ¥Ý}z͈z•½¯¨±‚Úý«s×Ýf#S[(B+[]©Rê¤FìŒt¥G*)C\ØxZö‹q׎µCŒ0—ø1‹|]ž³§ì’â]‹yG»Q½MÊ›/ÎM„¦üpÛÑŽóØ;údÐÓÍs›Œ73JØlò'ì&¬¹üåt¡#%ô™ð |·ÎÓy«†*¨ËˆVsÞ/'¡K•žº—Ÿ’ÍPi˜°×äÊGƒw±G@›$ˆx=.;)/ÆWžeê8_`E¡èá”yÙ¦#)>²åˆ”·©Œœø¿>íZ'U,„±V¤çü%É#ì•þŠ!b‰CÅéËóZpÞ^[BÄB÷;ßB<ø™×ó8’x=JZe'³¢†Î/ÏGI›TýÑmP=œ®ß‡Ç`sÌy`&6’¶8g>f”œ]µ˜råú}†¹UßwU1½ Œl’þŠ ›Á©-ÉƯúà˜Ò[5ñj -Ƹ·qhFbùiÏÁù“x·±5L"äØsøuWQ’¾±½Ï7ЂÙûÄ5ús4›·wW ádKd\`<’9s® µøL‡%¤zþ‚€Œ/ó8чÄÔ+vø¤ŒÔ ¤ÍÅ6Å*°0dH¨É«ß^QÎÖR„’âzÙ'®‚ÏTÀ„æÁ|U&Œ‘:cÆ‘¢u—¾…]Øg¸—„dOà†éáúY†mS%£•u-7ê.ž V«K³È)xm¬’â\B`¸+Ãꑽ³ 1îz¯\r™Ã1Uã{ÔËû -b5»@'Eý'Ï÷Ƶ’_[(à‹ã•’yD¤aùz÷Etª¹æÌä;BMe-Áïb€R­džLÕSsZa?yl9Ng~H5]uë¼ÏqF*–ˆúÆij,7¼¡À ÒuÔsέá­ÀÇ[C/ÿúëj†Æ©Å¹ª!7«(˜œœ#ë6|Á++ìdß]D:­d•úÀ v³×NúKx$Îh=â`”D؇|-¨³1¢‹Jœ¶peÜ|+Y{|î4•çåa®0†oÕ]:ØxSP·\NNpÓinÈ*Ý8qM¶{+iKÛw¯Yëhx‘Ì$•šjîdtû i,|>VOR´+å~áÁv”²âùtÞ1Ú@ÍX)ìô®cúh°€¶óÕïÔi.clbpÿ‰“r -ö­··ºcâžõ5ü>èÎ}`‰7ÞCRaBT²ê ooŸ:Ö7ùÀÄÉæ’¯|™)ww: ¹·Ÿé™ˆŠÎÍ‚®œ´Þ³þÇ÷/gÊÖ¡c IÏtõ*Rçd…šéÖú™°Ã˜Ñž§¼§<,¥'§â Œ±OÇF¿(…§ eþcyÛžÜ/­udg9÷Æø CNd6‘³ófˆÙ"‰Õ¸3AÞ´íØž2¦f"y±Ü;Ð -U’ÚÚV’QBÖ€ñ[`«U¦Vâ³½ñOÏkÐ ¼´ú￲è¥y@gÍ£Ù5pì‡V‡$ÀB-od›"G…O{Å1¯‹Ë†ñ˜¨N[hõ¸4·rï˜uÈâc‰O°–Î'zÅø¹]|·(‰ ë0u,k !"Ö§àî¥SðRÄ’–PîÙû™ à†+Üoƒ¹òÐÂúÔÆ šÝ?kœwñ(o¥½òäWe[)ËHψfýÞÂÆ`%”ÂÁâÄc¤SOíöä!¹´Æ@·7Zó)=wU³Qù;ò½Ôºw’KQWÈíºà»š [E‰†Ô)ÈßTd¡+‰â!è3ôÉj† F]k4êϹƃ{jèÜOkÆú-†­Dup£½£—£^2 Mlk[ªf­HC/Mõã;Èñtwt.+¼Æ­“CìÁ8˜)qÝ«T¨_tI7bŠœÊ>é∎íN´x¡ÃQq Uo$EHÙæã‹ßÔèV&!é³Ï‘"kiuÃúN‘Ú4ÐõÓûgIŒW…ôS[‚5ùäåw‹3T¹C¹!&ä¼Kû^ ÁøÚóc¦×À°V8cß癳 -rÍ«£×Mw‘–0¤– ->$¯ éqN‰Jú&Áös„ü½\Ü=Ïñ*¢XÖ7¯+züó\ÉN¸D·T'^S-æ–U¦+ËjN€yZü¸Üs]4ƒ=’gŽ ,=”ÅcçxßšÀrugfY}F§¦ñö»½"-ûê‡Gë\‰´@¦ô¼›Ó©BaniºàuL‚¨š¦»è6˜AÖ!JvE©¹mðСQÌ6¨Q§Ó?ËVQE‘Š?P£Ã •ÖĜӠYhÊÒÿ*mù-|TE╈|r’¿ŠÄ’HØ„Û‹x‹8^Z ·8u¸ú{UN†®¶*Ñžm­ì±1xÏ—ã3ší$㙾¿5æÂ+¨Úq?NÇ‰Í –eEéMrþZ¥ùÅI‡¨{g€‹'Uy›•žyFóSx&8ša"Çkz¦! Êלà -î±}-e˜ ”òÁ¾ˆw Ý(3ºFfHÈ—67Nyª|Y©˜¨;_w C“ ¨Ü’œÕÅœ³íǶ÷.…l®Ä’«×‰'#ÑAú¿hXÈTìjø‹%‡/úÈÚ¸Ð[t›ŒXzKÆÓmŸ«¤Ó ©pÑÑ2O?û¸<ƒ -W²¯Œ˜c+ó©ø{:õÞcBÉâM\5î9¸XÎhNýAhJƒˆóUbbkæü&>qÞ,ž Kw€y,a­Èç*^”ô®0Ì -­¨ˆÎ -;õ2ÿå¹³h#òN3'Y¶fOŸæÐdÕÏé´ûί 'Àìj0h9=*pTÆé7±F¶T²ÒïÁkЭ4]ÒlWd'L²´e$š Rí*&î¶%ßôÑU»@S6rm8û]OÉZ é /;¦°Ø?üxæµL¬‡÷ωʦTÃÓ…ªPAFïóÍCÛqôŸ!”p46þ¥µ î@xˆXcLß´‘ÇBéëÐl¶Á_wÕ/JhÏ0ب]©>:ô éÖSjø ¶ã{¶ie~ ôµœ kyÔa– èm0¶M\f•f?:3*0Ñ“ã}Õß÷ÄwÆÁØm €ò3Âá[ÁÂÆæ`ê­ÈaäÏó³^[‚æþÊ7ê OîA¤Ÿ^r*þ  á­Ù]¥%¥vyD„çòȈFOd"÷¤åü§˜+q[KŒÏ%j5÷Ûewbv½y°õ^mûQŸÚå#·ïì»ànÇ)IF<¢ [Fg»\µ"¯×‹"—¢é/ÒžU)äå8ìN‘öÕhijK‚’˜N yXÛ&5ðU”–IéÁÂé‚¿^e—NZá·/2ôüÇ+TÝAx»qz¸;EXq „ø§ú²i`¡±\O§$>×2²k.«%`ÒÜŠ%£ˆ%TT¢ê1ŒŒ[Áÿäú,Ь×ÈrÈvÔ¤U ŠB¥kèAú9ËäÎCÚB‹VæGª mKãâ|8µ6(ïò¦É°‰>Oo9ßÕ ‡Œ ØÀì…™‰1;èˆL‹à³w3tÁÊéàxdÀÐno9î²7„ñ_Šš(¡'u”‘ ÖwC €ýë>{™>ì.'vÙ©.á8¿­ˆ”«¾P}o®%÷ÁTGD%›!p×âMÃÚ©9«[Ùë×…ÃÚº.7àN|o"$P(ÐE%ã/Ih7ö–/iK”Шh›îæÝÀ6”ŒWͨZçþˆþ&ðíh¬(ü£¯²VÏq"IP´ú½õÓ+ê{õ W¿È˜2éáÖÚ$jbi²å}6±ïgÒ£ŒeÆ8á~+­£êMËF MYgh%âíkžåà9åf=…b(Ÿ·(Ì*¾í¸lJçP)s} ;W‚ærcàfc‡½;Vqô4ÄIð‚=Õ°Zý Á ¨_¶ û‡¹t$k»ß*DóÖðë‹O¦ãàf®}Ú¥EÔ3òü¿ŠšîÚÆB£Ê‰¤ƒÈªOïoµöp$S–Z3‡Iƒ_Zó¢l¹ àBa“ØaCH{®,¯¦a”¢òÄÄNBµ:®ÓØ‹ ìR1Ê:§ìMaìõGÏZîx;Èáv¬+›=B‹6ïyù³ž7±ªcªÃˆEÙRÉgß -‘ãVÕƒôF«1Æ=f¼¦zyñ´Ê=yž}àd_1œ³uïƒ+³_iãöŸaò zßIég°-‹Ãq©ˆãÿÝV›'ßsG‡:ôÌH¨˜^güêW*±LuÄH†¿›*B¦<„›ÇÜñw…èE”~”Cg„<NŒ=]V™sp`¨ãéðSoߟÅéãÛEÍ?!k‹b‚ßùÌi¤¤_Ö°kµë¸¤Ó£{cô IÍváš Fš—\„6 Öa]D[÷é´¿BôKÆ~yªŸuM@‘Å×Lr£ -EŸt‘«êÓNZ¥™~”^Ó˜„ˆ‰û ¶ Aüƒä[¿šRtI ÁF*8øRúÉb17>­3 ÜJ8âÞ˜OB8ó“ ¨º‹ ³©©a@‰,ÔÇNØ™…):iQ€´Yq%Œ8ïàsŽ;¥Hr" û¢¨Èf”Y¢BÔóg‡9½qþ>òd -9$v¨¸ì?3 C}½®7‰»Ï¸5iKå­ã7±IZÅÎ1t¦LLP=d£@Ä0ËDG«Mwf¡¡¶„yý†Bç–õÜïHa×TmÄ/q’Z¯t˜~4âÝ®í(@7âêѯ/Ëü]I¢ÔÌ*`âÙ…ÞB‚°Y 0Ø<°U$µøxIµ¶e¥5É+}²çËD†"#~’ ÈšO¦…bÜZ&IZÜ‹ä·Q>cñÜQœT*œÃÜ·N楨ÐÇÏ"±ÆýÏ3 -¡Bj6@é²úùá"Xä›\û.‘s‰žÍ¸ª½WfÑ3ÂnIfÆT¬†³û½þrJžÒ¿¥è‰¨ kL-ˆæÓ²7G"Oݦ‡ò͹‰J•Å÷r#eðÓ_Ö§­¹P:$´dv~‰è«öƒ¼[,…y»Þ¥Ûu$³Tkð¨|Á†yÖSôZA~ÔiܤT×¢b‘&¶KE”)ý6ïÒÃö´‹@õ¾î2Hôõ1A+ÊfÑ0.“2¥ˆA˜Æˆ×˜ŽŠoö7Ä”¹6‚Šlßj_H°kâàÇx¥L§Õ¼Nа%KT®†A€Q®¸:.˜™šxŸ„m¬±“{W -66`ò…²3ßñK[Úi i‹î·à‚Ù¯·”båÙ•ZgœË=±x¯)ög›ÄKxÿ¨fêf“ÿþ,`‡i…ÉO¨ü\#‰J¤öó»BˆžHXNvMP-\>÷>;^’”R‰%úȱúÖ-µ[ÅêÑbÏpÜðب½2¢ÐV‡Mµ§þ3ÿKEŠª«›ù©Â?æ$&ñtÍf}ï0ì4[çW*Êh\™lÖý özoëÕÙ=b%=ÈH(Ýh‹ÌGb¾iVA_Ñ|ÞåéFÙ•PnRÆÒ6GìVÿ¯þ+ŸHE ~…0¿U¿òÄŠÚWW4JFò¢ß»×4›*¨>ÚjWKŽ· –¾ÿ_(Œ²Äªbq—çh$™D-áõ¬nöp ]DZü|Üï¥ -Ï´7LÒi KL}³;uérä­ÿ’ÇÜ-âñÃLne¯”ð=5ÇsKÙšÖßyð@ŽnÕ?Ù:¹a€£¢s«t^¯¢†t_œ[ɘyx`’Ɔº®1 é.rµP¤bkðù>JNEÍâÓ?/ÞÎÑHubo-(B‡¸ÿX«'Ëà -C ³Îc;KðˆT'OË*½—2’#c'®Šq?"B]EOã*Ÿ÷ø‰ÇäìŒÂŒÁ9­Î<™‹…RÖ4TXt³d–4 =nç9ì’—m×X>h*:ƒ2d+c£‡r;Ö-:¦ûÁsRÔ¶ØÉÙ9ßrÈ:àEõ›Õ" -Øö%þòo]eƒC’ÈJÙ^0Y,JÚWR6¯@å½vDð" ý%"oýPqGóƒ>r¼ý“C€]ý¼rágKÉ:‘NGy\16Rê*®*Ô=R 0D[¬Lâ€_ƒB+§mƒé·ièE²9:·A²2M‘‚7y³üž=%¤ ß g½ú‡õ‘4œ -˜Å8B—¾J¼¶ÖÇQek©V§*½áD{}Ýd}”ØôËX@Îqð y§¥‰–•³‰'B¢Ã ‘-D¨‹YŸÑ.©0ï‚;×]\ÿ$‘‰–ÖÔ­àÑÌ´2kðT®†^a‘0b©öçËý5^É°B.–‡j -Šó-6û¦é^`ƸSô¸˜7¤·LÓVÒÚ)i¥·_¨Ã`„ž?Ff«Èš™PÚ Þ§ 4ôŠx" JÝ Øb+ ÜŠÂÇK©¯2©É– ÙRþ v]{)åÏQéø*­ÙŸB—}”î÷=ÕέV(X)äK/¤H}‹DÒ¦ÒåÒr~¥à«/|&t±Dwý¥‘Px&þeþõ’®ñòõsõ -n6ò,áf K챊£èÖeÚLZjû7;=¨¥…iRôë=ŒP:¯ûÜ»²ú+,ãtÒËŒ– -• €¶ÉÔ=Ťu¹6SU¡€‘¨Shƒ ‹{yã?Š²«§ÃpÅôÑ™C638 ¨OÀßÝþ×µ±þ>lU$Ž7|J‰ *Ea-)c’±ÓÅÔÎ '» ©ð¢áÒ£MÜ«pÊ]ãJX¥’ÑË%³¶!ÌU’Ð /ÅÛõ‹>^*jå³Èè¶ÿ؆má©¥RŠ•Oùµ®Þ++¬Æ’u¶]…  š”>IÏ{¯5?ÒìØ$Öc)£=_ˆ|ô?uç_ã·?±•P¥8ŠJåšåºßÏ” _¥¼ÎV’ÈÃkS,Õ‰KСùm¹ŒäL©ÿÐv ¿…D1R“DF¼.FC¶¥CŠï\Êz‚éÊMm°Ø˜i ÉGZ }µš+1þíy k¥¨ï¼Ùýl×ÉP ÇÌ2¿Áf¥™¼+–¶T•yY:4ĹۥÌ[ÁCK8ï6ÎÏIö äÎ,.ê4»!·sÊ+½W‹x»&£Å>LÅÚ۪̥ìßNôßB´æÚ‰‚³qI%Uú!ï²Ù@³qÏјÛ$—¤j'èTó£X©¤yg˯€úl´ È°Õšw­vÓz%ÛÐ[¢³ã裄ÞÅ?6¼É-xó&&Y£ÁQ-#vPý}.çÛ»Ý~>÷[Ë -´;áâ1dÜœÇÊt˜™/V肱§9üÉý÷¾Üõû‚õñ!üç†=H†gÁõšk‘WÁÈpÒ¥«Ïxb™Œ2¼­øv!ÿêÒÈ…Qóe%›d,Ef»ðVfÎÔ‚©¥Uh~ºÒÖ Ê -’s@–àŒ£¯`þ×Tbo‡xF(O¢bó”…—V“ÚI9ÎñBF~T6ˆºÍñª·¶~G}¢ùú:GÐõV—Fƒï Ý”ï`BÙ<ôCE„ÜES=莻Uø¨é]§,5€šžÕc´ ¼ÔC¢úûTü?OŒâ›¥ÈíèQíÖ¤Ñ)-‚mcHaÂôu|þ%µ9Á'¢ð_¯H \UȨ>t%š$n£½%™£Y«ÊȾ—á!ë´AÊEì°o[“~ÄþIì‹e«&0%!@çEÅ£O7cËZÙQ™@–Þæ®Ù«òœ$:•éŠáDRôOêE††ýY×Èaº*ðúWµ¶€ z:ƒ„¥G:f½GAÑ-$k£´$jYnÁžþ hLôª]µ_\–IÓàÔÍÈ?Ú¦.NÙòÝئQÑœôòå$Ÿ÷Æ4ªrÆi!a|Fzз‹»]jµ«e³!ÉíÂÊæƹµS¢k"Döà<"(H›,bq¸BZ¤k.T0V¶º‚*pþ7Z•óDYwÖ‹-Þw‡œ³cª/ —:ù?r‹å;Ð7AÙKYÒbz3Ãá\Œ âŪüšV»]Â@šA:ÉG¿žvÍσW—Ç æDÏ’ÚÕ´“^ß+XLZºLC gœ´zúºÌ õ‡?øòÒ²ºe9¢ˆ•·eÔ8Dtæv<3ê]ñÊüû5Ï&•ÙÐ]] ²šˆH'8üCþž€Ì~Å`\a Φþ2–Uð]|WmÄVHp/òÂgò!Ìèº)eƒòK¹‘¿‰•¾­téQ°Ügâia„^Ó3é£N„ýÚ¿1™ 6 »aä?Þø£l»¬UŠÃq-‰yÄ/U@reü#çf}´YJ€ì;Šªaëm¨ÇçŽD„1^1}SÈå~ p„T -”UtÅÖœ¥-ñ“SÿÕ³FøJø Ø&\HýÏT4´x'LŸK&À*ds—¢ÔÓùÉòH5✴ÝÄ\{ÃcUðGlÍÌ»F+°Y9jîð±kƒo÷œðÃÙÔþo{ŠsBû5kNŽ]æ‚×غ)ɤyÝ%%~*<{—I¼3ÏŸ圉é%¢œ’¼j`g4åîÇù ¼=s„n“´ÇÔ5Õ¦'^pÃí=­8IwƒŽ6 ×õŸü±¬ºžt„BÆ -Û®j­¯)o€ *G‰3éöƒFƒ´îÍvãùÒ)C\³¼’}9…ʵÓ²_Þcª¢|¢Ô¤çÃbÓ¹³ˆEb•¿Î;Ë- šsÑ-™Èf¼ ­zjÀpB[‡³rH8œåyñóhr—UeŠNî_×yd¥>áÓ®óµ ­wç™?èx ²Ì"„Z;É¿‘¨i)@ ת­ieàI÷&Wc6•¬p [œf?¥@F+v™™f;›® K©b5oöñåMYÔ8ѤÿÃÖ96WÂJ:ÎĶ'¶mÛ¶mÛ¶mÛ¶íœ$Û¶qoÕÖ~Ù}Eã©®þFôÊ^™1x¼/8kêÉúV0gÔÄüGoV"lýrQKdÜŽ·é&éê0ùÇðñêS1ŒNÔÐû‹mÁ/ ^d¾H í±Ý -qø"Ê£àQsdÐ)Õð,ÄÅ×N—j»ÿúç9m”¤™<-ËQ4?[²®ÁÊÂ0+©2j¶Ý‰ŽÒ-é Ó:Ϥ÷V<讪˜ äd7¸ŽöA?‘:NX_,i DýžDÆZOˆ#ÍÙ¡4∯<Ð7¥aÆL@4=¦Ž¯“Ê\¿Ì§5>4àŸßÑÞ/™=ë© ðËÄd(Ò>ìî(švY=xøòþkµ,h¥‚ùÖù¢%äÉ·Qe¹s))ŒáøNø´ ÌîQ¨V‚8wúþ±¬XŸIhüÎ@Ñ^lkåòÂý>åkš;ì¹×þÅIÜi~5ö.`ÖzÅDûmVëê÷vÞy έ‚m$¢^-¨|xtâ`Q.1EÝP»²ÔÑNB"µrí5›õŠ{Æ]IæX\úéÂÌ¿ÆîÃT_½iî}ļ7 -·q‰‘Bª)Ô©™ª%ê(pw0¦UnÜ>Õ -äFœBñý\ % O’h,7 ¶û±ò9¨‰Txß"«fÍ?¾ÑäO¯ÃJ;–ÔβÊMŽ«­þÊ+/ºrš(JÑ¥jÃÅ.E¿ò®lDHGÆPøTS+ôj]3œ";M‚÷ßYú}ÇF0òE…~ºÉÓ¹A`w£Kçö"~1KÜü(”ûwøÅHzÇj^½¼™ŠÏŠÁS0 âþ(<7Îüá-L‘y‹ëæ^ò±¡$î‘©u¨¬Nh²ÃU£ôšßÀ½g‰ÊÀGû= F*Ó$Š—Ÿnêç9 -íñ5VFÿæx®Ù `ºH…»¦ÛZpk‚µP?x4±4r†Z·œHd¯lÚîöJYÞñ¼¥¦ÎULc~šÁ?zU P„@‡bžÄ |'Jâiè9=´c¶ƒ=¥ñâà¬oG·¶uån·­ú‚›osèÁF˼öq¶rb\SïŽÊ|àââk¸Û’dñ(° -–m4[x  -Ü¡6`QØÿÕò²„ÿ–X«´ÄÂbÖ´R`ËßÅʽq/ˆ4v­<שü¶¯¯a¤¼Ç7­±S6'?q -£èù@.êºÛ!÷ÕÆd5/KDd·¡šÓ\ƒÑÁäE@)øТP'{Aö ›`e,Rz§ ¡hõãMÄÕÐ’©HÔ¬wŽˆff€¢Ao!b1Ž.ÑrfˆJ=<×ö«¼4Ÿwk»4 -8³ã4DK†ï’ó(fUú4ˈTú"Ê?ÃÉZˆaäcÃCç~êKRÏØTïž³žÈàj;©èèëúV)½ÞAàÚô•¨XL›Ë?hú,¤Þû¬àšé¾‰`=De´Ý”%ðÀ˜•9†sZ”à„LNV©.cÄ@LÆŒ÷fÔ’è®ß@^œ…À‹‰DŽù¤üšécî4TÞ³!Þžr÷¹Ðݲ¡¿ÆNå)¸w³) ½ûãz*ð£ [½ÿj€ø˜‡ØWô­1‘¼ýöJU§œEÇd'·îh¶çHœ–пgGù4„ 1[àSé ÂP‡6ùK}À¦ì«w/c”yN¹O•tW·×oÜI•ñèE?ÛîÂDÆ•¼8j¥¿Ï|b7D´sU UŠ (½GÒV«¨*óé×qFR}¼ar±ž³Òøòž*ÄBÙ½…þ?2&%c£‡!Ø“âA¯_ãF•\™ž9fÊ›¶£€ØóGÚ$[ÜSk—Zï±ìq2Q(îx9€ Üw¤ÏMªuÒ‡õFü0]ÁÛU™G+ ¢1f®àècdDˆ rúç[æyQÊ—˜0‘'p´:Ûé!À,|{u',7ü B±_÷˜m~‡ŸÑ[ÃAyõéä9ƒ\žR{’KxG¡Ÿû²I"òðv|à”ð‹&UÆÄÒÿòû@‡|Æ"Hyä½¹|ë«a -DL§»ê3¢Ïéå[ 'æï¢Õ}©zv óŸÕ€ÐÒs,8ÕrÉ?á50, ŒæX Pùô×Ìð€Ö|Œ+©t¢"”š!ë){ùˆ®VµÄLÈ"ÿúÛ™R6ƒv¡8gˆIvï·Œ–;|…n¯\OÛD”˜Da «E&%C\@F>\ê^ì(ö{;J§ÓN¿®â8NïòÅôŠ4ÃF EÌfÌè©mÉ¢0oV|W5$áÔ­ŸÔýHÐMŸÓøAfã߸–ÌY ÄÂœ°ÍîDðá¶Ô¾KËþîƒlþÙãN­Gh)Ã5/Q¥1K_:ÓîuULõißl€-=ÈT[;I³çÝÝØ-e¤áÐG&F¨7ܨîkº¡Ô*ñc~géªI²6ð‰EžVgcÍ­+Õ2_c üvâðgjó5*[ÙèÑ’,ò80?§ öþRÇrH;Lj¥]}Ìð^•ñ”õQk'–0ñ’-‰Ÿ‘'÷]è”é™™ÆЈ¿†}EâŒI£K ©Þ’¥¶,šâÊ© Èžò!ܘ> è@Ï­n´‰~ÁÙ@ -ÿa];>L \ÝÙ8Rx'­cäâŠT%a—qݼ҃†Ñà@ÿv#‹qõÌ\gÀšÿqÖb—wžsLp;‰+v}˜‘¡¢º€ƒÕ@OK/·5ÙPE_k=NÊSP”áMlÖün¤wp´ cN^5Lô‡ïø\ÄL›åƒ*ž@ú9&É o)ߪån¼S銠kR0èïVù”«–~þ«ÏDê@ñ«˜Ž1ð™¾Íœ¾÷Ò1¤Me´õÖ‘»ßôèV*ΰÜ.y±#´X¬zZ~uyQÆÿð/Vvu¯J4¥ù¡ÀžIŒgT¹‡QÐÔ‘ÇHL¢¾ÄA+ý(ŽÀÈ=Z"¹O êòâ©ü10ýiðòK;Ä[sî°‚lÿ$–9{ßȼ%ù|ͬ¹e‚߽̿fô¶#öbmuÜTâ=6‚rý£Ig?‡¯è,oØžÉÐ4š6sF q(æéÅ&1„Þír»d¦¤ßf_þžçÙ?—Œz ÓyEÊ+Üá5°Ò}jHíÆ8,q%°s:Œn„ìñZRƒ58‘’bþ âp~.2:Ê¥U×Ò¨dàQÏ)ÅG$SÉZ>,\D_ÖK5@”làÿXâp²ºø äšOˆÇù%Ð5C~E¡#}Ó!l[ õùì€m«ŒI¢Œ…¸½‰»|ØЇʆP>Ýè]+|±í’<Åæ¶kw…Rà -2‰vÍhxÛîÙîÍòåm8y8+.©¼)kÜsV¾å×'~Þ[C.Cý{÷û°ï®¢ -M95{í1K“_^É»|½Ì)¹$Zîš7‡­±‹=öËãÇG!»šUµÉT˜w¬¡ƒ–Éåý߆oß5bªÏ Ô„%'É.ĵ¯2.1ûön•|úåÇÑv>>ÂT¦]D›—ÐÁ_f0ç¢GÔ¨:\¾Àê¹1VÌn˜î´þîïI=;/Ë£â.üÛ^]vµ©ºª qÆ{­8w¸”vK‹{ àÔñy”-_'Ñl¹[Sغ˜Eƒ0MSiåÝUTÞ'°hÄÆJH4¹¡åžÇÂý16ËEÉûþŒEÜj©)g˜ºÖRƒýäG÷zF\i2bžÂÆj€@C³áÊê498´èRßAòÝx|òî¿Ù†åÓ؃O"S†ª°Áknº„Ǿp2H=ˆ$ÁJˆ»[´ÛOÃ}v´szp ƒïY²÷EhEœÇþdBOÇÈÅ;j}·¦Ô lœÀñÏíñÊbk -Ûf04Óïâ ȃ!205¡>ÆŠf«x’Y‚v£ì½wÌ«Ò©™·ØuGwj·›±7¶4˜ZfX—QÐP`]Ïq¢\tœ0× ®÷物BÚ|»ãÚŠO`T­ÎÙ‰]e})=¥Ìm#×(>Ý»ò«ÁXöWÒ2$€2áû¸q÷å¿9ó³sÓñ\óu¹lÓ~ï;E¿t%½eÞÎzÿ)#V¸\$ïÚ ·ß³ñ†Eëù1À»Î:OËèÎÚônw#‡,Û¯üX­! þ¶4-Siõo‰D9§/q+^¬…Ò㌖BMÞè»RÃ(O´=O(»QV=JrAq~%e§ÞÊûrwEQA‡¶Íyçmú>v““2"÷1«©*Bh(õ<ãSÏk$˜Lbe5FùÀ*ˆ6¡@ÅãcÍ\Áßk\ú½<è÷’…úÈýaJØu­Í‹€(R|Ž÷‰f°*à0#ÕÁ³ÀÛ3;rÇqFÞèœVè=®›TÚ~ì¯ÜݘS*Å¢Y¡ºÒ6K)“f–iW˜¶’b„aŽØ^qëô¸Û¡¥:íeƒ~·Iš:žn&1±P§7)ßoÒ¸VW§Þ )INgê: ,“ûÈMþ&ÉKw­[ŒXÉuìh²ê Éß»ó´ü¡äé]×9¯œ}¹Ó QZo“l:„‰ºfÓJ^{Eׇ|LŒÈïo³äÜÌÞË”Ÿè<„ÎàGõ°'`V!öH–9sÑTèAè©ðœf5ižƒb¿n0—§’w¾PwÍ ºçè]w¬^ê••Y.Â…uÕ—ü5~ü¼ö½ÓK¦ŠgÆ_=V]K|¨X‚6_ß”ÓÚÓ’­6WÞÙP–Oš&è(SËú‹-·Ø¦7FÙßV1 ¬eáé ÏŒ@D ÕªþÿÏ°Vy‚ ï Ð^=‘ ÍÁ -3,P?i4"¬ -nÌ}ê¸Ònÿ–A)Ÿ`þªÇh„4MfÔ‡nêõœ¸~«0â6Šªc¨ß þÅú¬fÇ¡)¥o”z­®éq˘žÀ”ßÄ oåeA£óJW… !,Ñmø~:ÉíòÌwa 7`”(EÏŒ`"*É´†ÖÞbL™²u‰&èpœôòøA›;‚N¯Æ·û{£¥1ÞÜZb†PTª¯­gÅ  ¯TT”Ö`ÿÈÈ2QJ€<~hªR3ü¬‚‡ówÎó2³â ŠøÒ5‘…úÐ$Ey£ /î­P&ã„éß> îW.t¦—]NÄ23Ám÷ê€.õ%$Êã-ù™ÒmF€:3ÎÑo'«±¿&àjÃ)sVéT¾êâQΛN‡¿40⣾=©’j|;h‘ªTñ<:dV «æ3Ì+ºØgÛ.8\"fÐ&W´µßBàÊ6èÔÞøEÌzXÇX¯Vm‹j«K€ëŽ°™ý–-½òV5rÒ‘»á;m þ†:‡Ž±­¶ý`¤+†påñ±3WŽ.Šqáë{› - Šè§Ò¯²)”GW©™¿ŠÿBv‰x;wjÝ‹ÿ3i’êÜ@·£DÜüU~šN©‘õ†÷žÇ;)ÞóT[v«}¤Ã -cwÞËm~P_ËXhªµãèþœf7ëŒ5C7cmåN×­®™]ïþJ’ãÊ/æ#®´ŒÝ EŸmjÖh“ö¬A%¥NÖ2½Âdmø0´‹YQsÎÕ?ÈßW.xC+Ï ëun}¸À»7‘¡ H‹DÂpHg^eƒ„ÁMYu•iIõÕý£Ù{Õ¯-_±S T?M€¿ÿ¡ñ•k¶`ƒunrä÷õÛL¬Öw³ñŧøä`Ï©N®>p—DuøÍ€êÀx.6ÀüÑ2¿úÎ-Ç)vÙQ!ÀE“ˆò€§ñë‚è3Bo=榚}årRç+\oejz¢ßë±èŠÂUàŸI‰±þ4´ñ$á½m„§tÁ˜ÃÂ)Úu2žy'Ë(ßu»‰¢CYYÛ`….F’¡Æ?4tüyØxwmw)l»:÷æÚÛNN¦}u2+c¼­îkfS"pî•yGáèWf¨® šÁgòšÏŽ¦Íþ‚ƒB¥Ì*GÿüfpÍ–à6¯öB½Á}³[úKüRx`{ÖǃM£8.&ˆvïÝUW“ÊÌÖç™!ÜŸÇPrOì* T(ýÕ¢)úÿ„H(${‰FsZ©Çƒ  ‰',¬´‡?’!‘liøèÞÚß%^§WÚ–Òæ[05͹[úø+‰™ÎRµÏ4ª¯ÅIZXRˆî±ðgÀš§¢ÝÁE¡Ó|ë1[l¥2Ƭ侓ðÈ™D,frÈìé“ [q=ußTw)žE¼Ë7Ë㶯ò«îUXvº E)i{”ݘ¥#O+mû…aË¢´S·ðH4%´ú­à”6!׳©;}¬k´ÝL2 „ÞÀ®œaVxíÁɆE…”–ÂrÙ÷üáÄ\âsZ uâ""-´ZÒ­…rÈiÐjGíÏfz/-Šö4 * ƒ¾ÏÕC×(-Ü¢šcñà—RrYo†mËý¦á)‡‡×ü¢Tág²îpÍSuÒãÀoæ -mCËeOi<çX¤Ó.ÑÏã°¾èþ³ÖgöÜøyV¹Œâu†|aþCBZ“{ÿÒ\辤¹ ŸY°©„«ÒËÉ0kPýŸËÒ*÷ÁDÇ& -Ø)Fíä»»­úW¿ý‹(°ì¨¼ÌXÐcAâUÌ2Ôå u¢³ª÷Bþr£¦Œ :DMtS;¹ÄÂ5—Ð[ãï‹äܦl· è9ËÓƒñ¬¶ùÞWèU)ºc½€‡°š%Üf½êÏí×»ØØÆæXMq_EýÈ,Š„ƒâ§8i}FUd5ú”qÿP‰dÍ íê†è%q(<âP¼clìŽK#)ØÚëK 8îþum³bÇe¥fåß@d(^°©nÙ^4šëx6¶“—oùKp™P6óÔ­½ÎkåµÓsòý6\ôŠÝ%–qÞNÇ0ž¹\cͧkÐsÁ¦ /pê¤Ü擼½WçL®Å»s~›—ï±kËôÐÁåÑ?µþÔÖë’ªÙ"–\û@wcÒàxÁp7GùÖäÛœUŸë -=®®s™Ñì'š2%M°*u¶Ÿ°¥Ç<­Í*§$lí½“‡ü¶Òt9è^[µ·‘OénÀB’àØU›;G“ùò/¶ûá­Äƒ§ûQ’÷2® ÞÆ®Ó{/ÈÜwG¢àß:s&þ™ðC)lcÐ1¹sŠÜ~K‚ËñºMRŽôÐøÌ5ßOo -ëYæ;,Š©ps^«“ÜÈò)Oª­^\ätφ㾂 }ü F8×—85[`@È|Ú5ƒkí³râú˜á©(óÊj[³Rg¨~,ìT×âÄI}Nž‚H•ÒKº„j‚ï…¶/ˆ‚]d™GèX i‚w6°ƒ4v@ݧ“[Ô6€€ ¯4Ãn(è #äöJ‘£ÖV*Lrv>b2Ž¤*mÜfB_¯eC#ýpÖ$_»~EÙÊ&î²P'`=·k:™¥™,†>’Ÿ¿Hí—/j#UH>™ÑúÊJE¸þpËü[,6c»Öÿ«3’4/¡âÇ%Z²G½¼K}tp¿¹=×БAøÚëè¾\.E5²!»SªÔ5]ºV9´²ï+«ñÊL«—†Æ—"Ê!Õì­·—Q[3xŠÍC\!~—¡?· ˆJ›ž,–¦ƒÄ»WAJljګfñ¤šPçVÁ/CIH…Æ_múÕH.6‚",…7}Ôx§°ŽyÚØpÀ_¶-¶¾ð}ÛS˜m^Þt^ýøß<ô·p¶ä\Å”p¢Þw$°ìÉqÞ£5Ÿ -Õ6xXTòõ´ý$'ùÓÖuî×ѯ¾ëéÊ›²AãÒEµ§Ô¤#˜Å¡½æ·ç9J­ç þU'L*ZÃ.mZh~øiÔVœ~¾uRèYÑ¿ -#ÜsÇ”©×cƒÉ¤­Ñ ]Ê®1úºvï ö{ïêÑi•ÔŸ [§¦ -ÿÇ>óöCÐ÷ÿÅ>üòeFK -5íÁGý~^_˜Š¨ ÷ª–½¾É€„ê[ö³RÇ×Ûq}]Ûa±ý Ê_žê°'1’ïHØ/&œV2ã§ÎV`çÌ{Ðݺíñ[i-“%L Àx¥0‡s9ßÄæÏ°iÛÇ<Í=cˆŽÉdK!ÆÜv|kÇ£Âð79ØUIèyš¦Ë©B-ÿ05Ì„?÷pÌæcº#ï>ƒ7yÐ%ì‹rEì>ßɇ6g°*è§ÇŒg¬°íý8|Ýþ=ÙA…£Z -ÎÃm¬\@`ërøüöÊ&Ot»Ö#Q-ý@J{ž¼ú¦k+òá`¹ò )ÜIº;Nô÷QÑ@‰bTÝyŠÇ»÷ñöî¬[¤×•J–5y”ÕˆdtŒ\\¡í %l9·9~Ç>È‚>#ÛÓ9éÐZ¸V_íêÙ C#ÿUrïÌ„ú™^ÒtÅ-Ù2EÜ¡#Ô"ìyE%?hb²Ä–ˆ+Xõ IÞ…ñÉÙi W†uõSk£e,fVvІ—ÊëZ×c‹GÔ‚p`0õ5ujøZ+œ¼¶œo,zr´“¨:sþüª£¿a˜øä'ŠíôÏo·×LK£™™é­ü4ì.˜áå/ýv#ìªM—@¥7o±«I†›­„˜ -h~ð cû2D$ ß3†1+~ØV@à1KÒHAµÉ*¡hó2"»õ™ÂNRVºÈžÇ¿DV5Rö.$yùzíSìy·Ãü³ý™e·­Kx~´;ŠÛÝw=çQ§ê¬Ûs´uúA¨ÅžhåК mÿ9 -:½Æ®Ø櫨`ŒUéI3ß±~Ä †´YSM}ϾˑFÀØU²éÏŸ%§LUCúÞ$â÷Cñeÿb¾³˜O‚™¡¢6B¼ Õi$>’)*I³3Cÿ@€t>•Úî§Íî“F³§?ã.€TsÿåÄ™1 ¾.c×ÑR·§oŽaNá˜vˆa‹Z½h”€ÎO©:ípo‡k_™@cöõ’ ´Ÿ¤lý Ð ¾ì]œv“É̶ªþ&“åz*urQ˃Øpî`iBþç¡xîÜDßp[n;òéàsFpN÷è‡1nË2.­¦ùÔfhV³k X´ -¨×^(ëgœY­”ülÝÔ€ß0¡-62’ýó¶º/Sʯlu9“MM¶s&æCq¨8K,A&¯äÞ£w\Á™X“Kÿ$È÷Q›x>\ÙSj žoÂ6eƃ&àól£˜¤z,@jóÝ´åÐô7û/Î]í«ôõˆæýÐnx¯{ÿZÆmŽëu#L(ÀÛ£3íîL¼”FºÚ˜YŠ›þ ¹É6Í^˜#§ ;À E=x“ªä—;‡4Üßã{zQ){˶¸5—ØJÚÙñ“eØ%ÜÁý>Ð#Ñ!W¤IL‚ g­ö·—,0VÖODÃAµþj…°»(b(PÆe·ÚZ¶¨ú8Í,Q))Ç‘Ì~%t/ÈÎÜ^P«HK½#ù…­vüs³b†¥œÓqÏ,©(ê{<¼‹[Zh¯ÑU(™cy¬ˆqgê¼±§‰i -n´*p‰#²M]aV¤ô4 ©õàçê¼Ç-WG>®ûÞýbŸš~ш&ƒ{¶‡$ŽDä͆,¢P\#v-øQ4 #‘6W¯•žRƒž~ -³²¨ß߉mž£zÐÕ…v¡þá›óFá/OYèÌÁåíVð]1ع”{ûÓ¼&YˆÔ† #HÂ6í_|^“‰95˜~àÃ’ž#æÊ6<)â¢#@çyQUq&ðÒ;þ¯½Tm„evï$àêú(KZ<´ìþ³.9Í=ú1=ÅAÍ˲å}vj¹lK”*Öð#ÛÆÑhLΚ«è¢?¿yÄ*+ ³ñ/Nè}9ë@©³Á$Oü ‡/¬uqS‘c‘l¾ûNÛ˜“ãƒÀó;ö&D©N1i{–œL²W®½Ý14Ù~Ø:Ý­LËý:µB¡Z5ÄO&ëZ如5:²HáùnM”>Oê£ÿó}U÷¬”Và³È/Ï?ÑU?è— »_©²À’Ò1®‰éóŽDdžõ^3psÒþ%7^–¤¿x”UÑ{k›‘ ÚþY“ ­žlåÝȤ¹pénXz@ÿ<@}ƒ¤iwP„ú:lÅ#´ƒÌ•ÐóŸ±ÓÒv›ç1]¸V;N9Ö„:¬ìð Žcµq%¼dUº¹ô™ o™U™¶y¥<½ÍìiPq\ôܦ°HÍÅZ!¨: -×ÞðÔ!33¨nOoÈ --<ÇௌÉâ2´ BžP=Ý"AKÛùPæê¸̶¶°ìzK?ëÅx±ñNŠ·â½€ùŸÃd€¢J†²Hѱ£¨žÞEnvì`ÚÆQÌsèÿ´S©níAY<÷"7x8à?sŽK*ñ¸Z+ªê…º/§e|¤ñÆÉ  M˜ lâªÃw·Ë>}AKÂÔhôg?ȳK8¹ç¿ü B[ÃKŒ ¦qš_ÍÊÖ=Á¼ÏqÿŠ8©VæÌÉ œµ`Rˆ(™BOÞ+‰0î_Tÿ@ä±lvÄ‘œàß—ég•§¶>öEw%6°•°Ýõ•[BÏKÄ*NMêfåvŸ¸îÏÀãÀÃŒÿj¿è#dÈÅ¿2¼T¯5Ö\Í&¶î™ÿBÆÍã'1r–œÎjœç±¹s«áê,Ý Ê ÓR—-1?Ö\s¸É¸–i4ϘÃ4¬mZ+»8{‚ºšq‡6÷íB°× ì¥…åîQ0¶bSÓsÄ°Ër73=}ñ꞊} Û§Bnî>.ÅîZ:“º­]£­Ôˆ}iQxÙÖûÃÌ'¶ø‚§°ô^®¹-x)®{¸ŸRwóK1±dl)p;_^ÀQ ¨H€ieíÿ­¦~ztXW— õ…¨O“í:“ÃF‰-šÚ Ïôëìðy]{ôyÜS=ñ'ë«Û SË+%¤gÛý{Ç—ÆÁ4p‘ËC2b ®¿–Ͳ˜g®ƒûx¥¼€p·æ=í(TÕDìšgŸ&\í*½ÌO6¤üïˆ{-œ:·±›/ÏAa9+“„j©u˜Ñ_žNÀÌÈKñìÔæª0.Hvæ;]ü=Ö‘C9Üã…Ÿ æÂÔ9WW /6°A SDïðŒñŽÀ £YÆ=ŸKs\´ûOð%:ü´ìÆPÐX(–üëì9wáNâ5@Û`pÑ2"Ä{ZpÀž‡ p¸—„~MÆâ.€®6ÚÜŸ/Ò>÷’ÐËÊ{£ä?@vwÈ·Ó”}­Eï?úñ©S²¤å“q @,ÈÕѨ¨ÔÁ»JC„µ~šúbÙ¥b% -aÈQv´]”|Wœ Îq ²Ž 7>&ñ$VŸã†)$°Žç·å!Z\nÐ -Þ¼\=JÚ¬Éð)Ã’zÉÐ6û®I°tãÍÚ%Ñ#Ë%¼ûSÕú­fϘkÔh•°ª°;Ù»:­ÿÌ›MÃÂ.j–¹]±1»Ëf4«4á„Ùd¨#¡«}êo V!^cü÷UÈ`®£b²3š¦wË‘ÒŽ]n¢;zúqpáw¤cöïì&¨ƒ^ÀYB¼+% 2ßTt¸ ƒ€e¬9y·ÞÂÛÁ_~¹Õ|çœuNØ£èÖQîe ‡œ ”ù믈É5–ø< Ðy—þÊš÷<ñr,kØŽI˜N+½.‹»ƒûǨ¥q -ÕW!ë³ ±«ÁOi’r®ç3{ئAèeü6ÐÆ¥ú.‹«!µè ’•¡,‰´Z3»lÂî˜+˜ªjD|û;x̓©ôM5X0¡J±{?"xÔÝ@¹"ŽºÙ:8"”]ý«ÑiêÝ‚4ý“T2¶µd‰=îÑá°Âé‹3 ,‰ÊCØ»*ø HEtI¸®Ôky0ë2—ÿRmê·îU– éÍŽu±Á*™×BP3<0ÖÈmSúèSùRꥌÆ;![Îè‰,PßëP bSùfŒ,S.lo\«GÐ{„ú„»B"v¥3®=x䆗dælX-RŸ¡€u$B©µxîG‚ùŽoO³«Lâ’™w†SÞ6Tè^ÿ¡·i;J„þOA§ ½ºÍ•UÂÙƒÍéB '©VºììÍu˃¶ãÈZh*]„]Á€ò{UC 6B0¯cÄó_…¼®P¢“óH lœ‘"H#—\ëA@‚x¡b¼¢óÉ›Þ%Ó7ÿ×ÜŽ5iè.ϯ¥®+1"¾Wœ¥vAÀ’Ž”ßÙsÛ¡*]Üõ#6Áœß¡ñYZ%¹H9 Þò‡v°€®ààÌÁà˧˜eÓ뻋ÞÂh­Í͹uAÜ3oÔM ¹·î4€ÂÚ¯6Ü_Y˜ÎøÞÈÐö(ÓëQ1Ò‘Ê»Ÿ4‘}»–èú¿ÇûÌ—!Îãx ƒ»9¥Á)h6ÿxp…öÑÎG Ø'þôR*¦ÕUé“o¶#òÓm\aN-ÿ[ç°,Š$ÁcÛ¶mÛ¶mÛ¶m[÷ضmÛ¶™Íl&ÞOtTtedšÝü –>I~dfë -¼ö¹ÒeëcVù¬hL¬îþhÔgB gÃ÷H/ZŒR£JV"û âTªrËÀz -¡§I6”ºõþ^\-¯Ö±5ÌÙwJ˜¶dvQpð´Œÿ×QNXëS~Ôð>>€ÙýRÖ„w9‹òà/ßiÙÚÛ"ͨò;‘ÀäÖɵè‘Js­’P·ñ‡›rÿæܶ"ú¦„C ,ðL]íÎ_»RI&üí³º{òcžv±6ò÷~iÖ/ÀôOe»/Bð7p)YsŸ8ì2Ù¨«¢ilÂv—_&GítâÍn!™C À jòtQ¿Šm™A1‡ÊÎÛv/}åî/‰ÎÞ?tßA½QìZÓ弸ºR…Õ®ñÖî=‘Ǻ‚ñ#9ÇqþÝ`6õG'‡ÉЉM -^ª–v] §»WËê4ø¶VkQËÒV)õãßËCó.BX¢‹áXžcÿÉ y}™‘2^Oq‚ÌTÅÛ?ÙªýgƒT·Ž±§f»—k*ãñn1Ìœ>5­¯ -%ª–PüP—œ?ÖÀ¯nÜoÇ_ÙS¡¢Û—ì}ªÕÔÿ -™Ñåi‹x¬@]ÿ¶ß2¢<á In9Gž…ÔºR¶6ž Ÿà#°EâYw—O­çÐÑ=²"Œò˜·létªÓ7&ýtf‡‘ÈV»Û<É÷&TÐ~Föô¢Q4Åì;⃢*åË+2¼²Aî`™¯¶,”Ü7A*빡ŸjPÌÎŽ2—ã¡ -¢$+Ä>ûÒö®gBƒ´¾í—¹bHÇ Ï¶ ÷”$?'¿`+yD‹’–B Ã/ÄpÃ7§öï[—½,°óMVíE»Øʽ¡Ô„`äᨂŠ±{È r‹S ®²WŠ+ãakô*›‡º²ªVŽæÈëo.œ>»™”Ÿ€RâɺEW;{8òƳ& V»Ñå¦VR§±[q³gGGMU/Oõ™ú‡žõ÷@õ´–[>¸ŒÞJBú·Ã—iøe¦Pó÷#$>Î$Wî?³VËŸ1/Oð»>`©( ¯€±þ8шRÕB„H‚²<-˜/ŸÖC¿Ë÷šPhº )cF¤æ‰3}Ä ×3¥}[8à+ïRØK£1ä­3}|¿íg$ `6\ùÌ]k;¬¡].FÊTJ­uÕ?†‹ÁœGGþ­ª0¹QÒ®öá ¼–Ö¥ý96|©O±Ë“»ÏßuÌé Ó±ÏÚMÖM¦ïF½ʸ@O¹Ç€‘~6ì¬è#˜Ë!ÁÀ¥Iƒû'ÑTìZž5gZ×>vVè-vEŠˆ¡Ê|R(ÑúîºÚƒbðˆ§Ð0ÌÛd)’qÎé jèäA4¾õ!¶ƒæD'ø)“^ÆR†Öyç£\Òø(Bš¶9-¢;œ—T—Vej9†¥h’g,hz3T¤ïÊN£ðo“o Mø'ú|Ê(.òYVY.ºŽšß[ Ð&šä|?ÀJð$Á§ƒ²›‡ðä‘ÓRí n ?ô`· þXœ±•˜Ê}åx(·L Ï[o^˜ž"ëÝÓ( ÜQÉ$Ìž‰¾CìËÌìv;Ò"µwš0¨[w7•øzŸü^@Ìdv-t_‡[6˜¶¸·R²²&Âb>†3¿M×Mž¶€ë7ÔÔ§÷#xé¦UÚ]}Fˆc¯‘—ˆ˜7šÄ¦öÖ¦”ú%%¯}üÊ)”X¬-…—¥1qÈ:º½˜×k¡¬“l"ÓV¾C[_b"«e}‚º/Á" „àߦÕS6{S5y€žRM†d…™^¬EEyÚ} Fó b¸/Áó’«ñþ“§ªP¥Æi2ÜÈm'Ò]÷ñÄï_Õ{¦†‚B³ž5@Y/»oMše;ê|¿Rúl2/·ÖÉ9Ý“ ?Á~%þÅS}ÚT¥ñÏ~Å}2 Ø·Ò®y©åæ4Óào‡ÇìàÊðÏb/Ñìc<¡^^]l ±`º  9Ùú÷ŸXQo‘›X*(¿o_œ¹Fx g‚»ðTƒ€àR>¡k.TÞ.Ñ52^#»î‰¨#ÞOÛ|æªÆiÝQâóc<*R ¶ÕC ±'Á&Î óBïä£jb¬ÆÛÉ& Ó±Ä᢫¬KäîzãfA'7Z -Ã? qOF¢bÌÜœ?ÿ‚(þüÿÜÍ#õë郸iêj¡sÔ#%&=ÃïÔ5tÑÞkA‰¨³ç&Y@nN Ëõ‡I0Þ­>έfož¸R('5d$‰*+ŽD­Vá*ÅE¡Ù£:«U6øAYýKê!KðÌ?¯£îçN«ÅÖe¶Âl7}‚îìLlêj­%ôð'Ŷ90½eä†\?K_Qú_þ¬<,¨Ýí×ùE²Þ¬#êEUÖ˜WS“˜$3h°ì`à5&¢É$I5Gs‚S>eèýò¦ÕÅG“ÒÚ2“(•±Mñd2ê{À*C÷ª¸ÖÓ\²ßgÔ={ª -XbÄúN§Åt%K,pE¡¿R+óß’Ieèyáèü“ƒJˆ½e#‘D¯\ö——•f…2†â˜:t=‰›Kù,•p㢊+8Ø`€T½¡àcùf°A­X‡<„†“v¸eñâ²Q9›ßY/5í·ÏK×I¥ø.—`í¼JN„lëƒOrʦÜÞ`Ï!Û,nÐ:6allwýdÅ‹H@}P4¸ÃvÝñÄd¯ùºðä¾MëxÆUI tÉÛ ¬¶°2½D`È_›–•Õözë(Lé7ÃÍÔÈýúí'pDÙ+akŠ!u\õä.ÙÙ¬n…asKÚ)-w;‡âÚi^£þ)®*Q D,»ç>¬‡4Y™ß“”/CšgFHÆ)„´?½?J‡" 8%€•ez1/ÜÚ»üõ¬j(²Œ]È"oœ?Õ V?ïÝ&žÆ®þÇ÷<kî-÷…Æ”ŒñóçðÇ•¡Djúõ䱆 zúwµ¡BÌe9‡<VM¬ñ„jî⹕”‘ûY×vΊF8dÑ)ðÜq*ªd覌ÞãÞToú ÈÕkŒ¦Õ‰ª¢(vC?EXÏ¢…Ïü”W—y¬øÞ -VðÈ’áPþ'š®}ÂñµŽMœ#WØÌÁ(L¯+ÓÍ3 Òš¯`dWUyÁ¯¦mwçþ- ¡jKøRÈøw=Ï^ ˜€{Œ­Q¥$±ZÓ“ì 9Ò†Fìÿ&zLÿœB¾d±y+‡¤ÚGÉž^؃_ÙQG]%ê3êƬ3*NWàiÄ]˜G³5.¥á»ŽS?|²yÓqÓÝÍ]­Ïæ -Ÿ›·ø,¸^pεF -‘çÑ¢ÖŠkÙ#ªdñr;z1ô¸¼Øݬƒh-¯; Ó»ukr+³&G¼ÁeùEƒ$3½h!¸½mq‹m³¤BUÂNä×¹>ŽwÆ ü%ú½T‚™DaŽf -óSêsgy*’ÕÎrÝ|!†Š0¨ÇIÆUqÏM8ð¬>8Ý@­ ÀO?æÑòå•ËŽSÙQ^TlWe]öd(+ü\™Í¹°òqS•?{äj=RfžK\°VÁÏUhú ‘¶\ > £šÅáH†_(ágêJÊƇ· Jé’ - ÐAB—ïð}`ªOÁ¶—Œ}me¤SÀ¡Ñ¦›Í _2ô<Kƒ‹Â0Îœ°ÇÁSÇLݨΡ³ow ¥|j塈ùO"‡Ÿ´œ¸<ÆÏßÄ#uv&mRŠ¾>øؘߠW•ˆG-!3—6Á­aT6ËÎù¥Sêƒ[VSäös4á}“WÚz2ÊšÍùnRˆéJˆæ§j:ü71[Õ¨c%R“Ús•¹Bf±áAB.l¿~ØÏÝY(Ý”T¾ÔZ=ºJîA5Y„²$†¶ŸO…©#¼¢¯ýonòIÓ=2Y¼DÌI–ŒäCT  ýVaן‡òG@I´sÄB½Þš pÚlä#6ó´œûWVy3‹“ÊþÜbG$ݹçÊq“}²œqp€Ë²Ú\Ôñª=U†+ávÐäQSá;q~OÚ¬µF @ºÂéÚvlâ¸æÊODá)VX®(XY>ƒVø)•Ï?z’Õ@uÿï­wÈÍB=6ÌŸ¼©°ø\¤šcBui„–‰ê3lyX{˘ð2?%œ‡å/wÇÆ_|§0T‡öËŸb’Ì—ÁtÍ}?Ò®Bî?¸e¡M_%ÅOš„×Ö¹€Èø*éšß‹`÷JY™úïy0ñ—Zv½„*Ün^bêñÓK.§Í‚Ö°îe¡W²¹’dŽBðÔoï&‰¶i‰Ü‰JOŽ˜„>û0¢ƒ#J›*»\»å.RYeL7ˆ¬ÌÞò:flã‡<Õ›¹º.ÕÙ»‡É´™eýƒIÓ ø—dÜš{Þ’¨¯PÃo:G€ìÊ c„WÖZCåƒ(P”Z™¹‹eY“Ó¥.o\PÒ²@ŒõÏñFjIÅFo6>ý¢7)LÖdb&ÜætÕ¶uþG/ ¾ƒ£ÁPÝ1·Úð±à ë#ÀÞPÁùÐæöxޘײømÌR“Å—ËÎ@< Øì)Ò¯Êç‹óWuã9Ò¶½›\¶SËe'@îçÑ#ÖÑ*[Ö|CWeµ¥¯PÒ\ÉáØ*}MCC–èõ¾˜N}hï$£ð5ï/Ù ‰`ÊC>ÖjÙie±ž·¡Ø€XùsÏ -¸s–ßë®âù’÷ƒŒÅi Ò4¦Ú'©¤œ¯Üân‡m03Byoq~:4Áˆõü˜Ûì.Ô§°Ã‹y/H î L`€…*nòtT;HØwÄ1@!Rc,)äÀr߬| {®»[uöûŒëÈ~’½~fÎãdÉâr?ü„í/¿¿u¬5ï-›kŸ”%Þg¹n•)"Ý6fÖ7²;ŒN0î¤ãræzâ·­¿^7d‘am‘®±”›TÀè6™t@ùv• çØçþ—äÝ TÁÛ„ºhCD”YKti°‡st<9²Â‡˜÷I÷¯·b|Å£.§AߣGÕ#†ø} é‚ÿ¼†Ö#%CÒYN>vtZú.uý‚`QÚS…Fê²$Q!k—$½:ÿ /=1&Ó¡™EN¯4­Õ×Ú˜3‰ŽFÜ­ùçM~fþX Ù -[GÞÿ½xmËúŠáM•+§~B9^F½±ˆ>6-Ô {µë9œUà“uO\õ§Û«ÖÙwoÔÁ¡¹ Í÷À!cßè°¤~¿ÐÌÖ)I¾Yߤž4‚¸è¸‡ß†Ì‰~¡˜GÂagÀê÷â˜ÛÒ’oýéáL) ˜ßÌyîˆWÔ5Ø3‚{<Ј@ŠCy¿^çËꬋ{F\„Yi“ËZJt`9}&GEòQªòï{ùŠÓ<¡¤µÈ lE:eŽ/!“{¬£wÄtXüÇ^]X’âL0{a»ò?i*t*/b-Ö°³> Ÿ”B§†nŒ­ƒŠÏ6vÒjVuë4¹5ˆ§œÜú ­Y–Rëiò^X ¥á*OÀ?ïuÒ¶¤Dè#ÓíZx˜L I:ï[ÄbéÛuíj‡?åg:_“äö V4Ô;ëxé°AÆ@€…βÆ|LšËÊLÅ1q‚uùç[&㯼ôÚ¿¿;äâ4ߊŒºšPy•“ÙM¨'[!R"lSVbkH ±ÈU§/šM—-¬¯†GKµêVsŽ -Ía`œG¹:6Êx°ñ ma¶žãð9Í# -¸[b10bÚF}ï»/± -‚}(í·@tëÞƒ¾‰Ö³7~C·Ðy­cÀ1„ókà2Ù1Ú8ašœJëà77V¡ƒób²ØÑ_÷~´C‹-PvªšJ û¬`ìBôlºb:Öý¼É /r˜¥n{à!#]Ø{‘Ÿ)Ôo†sÜ~¸*k>+Äl8ŸÚDÕÜÑÒ¦ÎF†Ðè;¤~VନBÇ`Î7³^#WE\C/'oRá¦.#^$Ÿÿ|gJwìµzêöà#€¿pÁ³,Õ¿ÈC¦ãÍŒÉR[ÆW”U3¸$œ°£\ ûãc2ú1­Ýu¤êáa%çÊGáÔˆe~ Yfq0—øÛ¼êgòl[í%= ÇørŽÏo2¯¶C£Þ0¬WAxr¹³m¨ Ý@mN¶¤êæYi†ù"¹áC¥÷†%oDe1ý¢9êÔ#P¤­.ÞibmÄ&Ùúq®‹0ïaž ½‘Î+¤ º $á"-f€ÜhöiÚÈÛ[Ÿº¡™?mŠ²Ï« ªÏ61_àkáZ³b<ô¶úªA3hý½Íu¬QFDàyW -ƒžªSK¬ø‹_{±ÓâìÑŠØóÌ‹ñǯò¬RªºbùBŒ™¶ýJ¦æôA&\ëž'\¥Åô8Hô(8 äxõg§b¼ÕOÖi\îÆá›rö/O™HW–ëôÇK¥¼°mP ¹Á•÷EÆBÀ9¿4ë­¥¿#CeŒD©˜{©:ÒFNV¬eZÉGe®Åš@WýtHy¶ÂUHè†P¤çJï;ÄýìMú+aôñ»IÚ\%NmŽU¢Ù3H‰ü×dÑÛOäë(…#‚â&ÿCC3€N…íÞeOXËÉçáÈÓ£8^±{ imeX -o­R &_kó[HIæ}Û=)PâéÇi¿F&ïS`=XUüq½YÿÚùkUÜ×QBŸÕ'ñc¹HñFt¼:Ã+1=†4¬¶%Ì™ge‰Q^&Mw›'Þ§ß"þG7Ø‹ÊlƒM`[Œ¨^ÇJ˜8¤3_ŽÞÒ¨èÁ¹‚ÀКZK:WÖ{[T1ëà¼OLrQ„¥ý¸ÍràNéI# 1ÜüÝrÓl„¡~´6B.•8Љ‚: vtÇP×?o½¢®±dïÁ7f H2NÇP6Â3] ›Ç£Äk -æxp£úÞò[+®ŠÌÍÕBO'*™XF_Ïâ\6Yo Ë«áÁ(€4Ùn¾6ç86öëÑ‚Æ#ƒ½Êœ2g¦ï‚™òøc#ù b ?š6Ù±‚_!H~#%_Ç6C¾ÉÓÅÊŸTI§ MËÖ-V(– -Yúiñ«ÛA-Å©ù}XQdÓdã‰$ 5£ÎŸÖ»aý_œ¨¾=-¹ ÎuÙcªõýãöž2YOXpË)_nõ½8hÎmWGÄ…r5"³Y·_1å¾ÉVŽhü‘NFâ.ìÌdžÆDôlWpÓ˜ Ó-¾à87!_W7œm‹G9ßì:©¶^êr)ª3´þxF_©º‘pTd€7‰a•R„»o‹ë€‡’ŠJ®Ëx“ ¢½pux™Cê»Â)Çnœ¯e±ºJÏÎ -bnšU•êòRä'¥Fé 㘰`y•\þc@vÄ*§6§û|ƒÁäu4U0äB*'Þ¬Øäb€EVEº~ä´VPñäv:I'%ƒgqküƮَéC#®r:p™µŠyá÷îCðSý×hŒ},^ƒ¾§ÈÞô6…ôÖUã˜k¥;Jûä|‚Ù³„™íÖ˜Q÷6Ù8Aä–Œ¨3ì˜FK6¹ ´•’M7qE̵`5K ÷¯Cq€Õn.92T"]¡¿k‘¥’;wä»1@/ãÈTÕÕÈ\ñ’&ËÄû°Ù +9û‡ CëÌÏ¿ -i9§[ -‘ŠÁ”ƆØ,:… m—¯eªË ì³D²­Úö ÷¤p'æwìX„hŸcP¹Ë|¡ÖÝ‹†Þ;~98:c{÷ç‚ÙM TAš$€‘J°Ýµ†‡­jËXåD\®±ë ?©tv6¾Ž¢­õ4Ë>vl3Wò h¨$ c$ñ?¸‹àE΢ÛÒáP)«¼bË8~G£rZ -§â%šÖF.s'R%T {€ô¯Û6ªáœ;W]†³.ƒ 2ËÇø77YT‚04ÀÎYÑÉñ"À—Ü% FJ‡³•¤Œ8•x\ µLz;N)aJóG±Øs©áˆ.ëôóUÐ@TÙšÕÉË2…b|Cs1\A-ŠÆ¸WgÙì¨5)BwËéVÓ‡Œ3ÞÚÛóÆù€i2V¹Rà%¥‹Ï`ö‚SÁ^ø¹E žª:@¦ë49Ø!€„ûD¹ cùQf¯tzä¤zß$ÄéV NNd²9¹DvRléCÇûYp¤å&ÿù]AqP¿ ì»g‰«Å§Ý? ¸sUÓä ña©ßc+Òv·¯¼C£/’kðÉ|r8›ä¶µeì5Nv†K úwb “Û~2±s‘ŽC6¶ó­«Ó{y(Ž5ŠZcçô§ÈÛ*øLåá«z¥£x ª¡ MØz½J[©€„Ä - ÅûnìñÏõ@´Zƒÿ,dƲCÔ”kJ¿HNpv[I{ -…Á‘;#MÂkªŽœ®Šµ—Œ˜nV|wˆ©Í‚äÿ CXažÓéq·“ÏÙŠžÎ‰!m‰[l&úé®Í÷ae°ùC­h=Óƒ‘xOEe2'ãHçåöYâ̼ ¸Þw*-@>?¦  òí¾Â!«5-~¡ +²(gÁgƒ.­ÑѶ²çPÀh‡-ªp -?Ã!¼]¨„2¼¼ ž‹ç ŽÐ^“Îî›|:Ïä¹GþXPZö{ÈhR‹/ddÄÞ.ŒVKsåœÅNV\tdÇ7î ‰ÅbX¥ ¢Zf€.hVõÏüü~c³Ò5ª«Á³„¾ pßnà+ ãWr.ƒ•L¾H‹ãî7ZŸCÑp¼‚Åç•Û[²®Láÿ{ýݗÔu'QÕÅÍai;Ç o£_ˆW1…´‹ÞúöA=ºl0Š· +Î¥§µ¬„Æ\kÅçí¸¹Jûb%MÆ~ôÔœM×A9Á!0HçºzV°ó9[ ›“<¬~?±>À˜Näc&Ísz¸BÁ“ÃÕR±Í„}±6:’þ’&gá¬ð𙀛êº`¦6˜JFÐ;}€dÎ/Î5¯#6ÃKañ(ü”2VåO¸'lB 6f“7 ß…~àùG³Ñéš\cù w3YTÔ¸”âðlžköU»÷êl±&$óp³7—è6ýím·­É¼Á½«-+c®YëhøÌ¥”›Ê@^­üf»Ml 1'þòQmyA3%Nc»«©ù*âµ6%´L¤XfàZjþmOÚÙ¡¹‹I½yAسuù»Zx9øÕä/>$»®žt“žÿ©UŠ>¨K'{ çëŸnA¸‚~ßágÖ¿‰™–èÔ²;1%VÒ»¸ÊÆͳܒ9©9ÁÚ׫m –ÿËbãÏ`ijÁµ§C2m©×QÆéÃ3Ì->D,ÏCÛÕ†a§+ß4ñNe7Ñ‚Š1“±w¦·Å3Àá­âãÅ÷3§8<‹¶–0ÿ€8þs1àÌLJøˆTtN}«^Þkãë¤W™þ5¯Ùȉ5“ó¼¤Xx¼HSÅ·,(3ªˆY:ñ`·±ü¨z–—~ÚSAtÐp:M¯wAò ÝÌ#dïªWpñóU¤Ï1§´icFMÛÍU ’…¸œ[Ð@βÈÞ”Ûê!UÒéãŠ,©Rrï£"Ò>•ƒ -Ÿ''º®ítçÓ–̇OøQ‚ß«)…î ˆdü1Ö2~Ü¢þ{š_àÛ?y¦­ÃæÙpˆGº§i¿Ù³9w8#z5þ/8øóD13Ãá¾³å -;W¥ëL“G´ý3y´úì]°ß`-,ûÓš5TJ<šˆîù™ã\;‰ük¾ú¯EðV>9æi±-&¼þªdãYŸ6iîÒÄË¢ü&ão)PhÍÊ5 bu|ƒŽk‰º ‰¥ï[Ž -£áΠd^¨Ë…ZÂU6`pâW“ü¤¹ÆƒªF{D˜¼ª±:¼{©®Óuó ‘ôê8ÅÑT‡ðV…1'QQkü¶Ó‹ht²ðÜcºYœܸNú.h›Ø+ A³Û¤±Apd4F´ ËÑ;0XŠøE.zÒ= O ¼¼&À¥²Ç -ìñ_^ê9‰ZbHXºzÖ%¤ãý …¢L×{*ÚÙhð†ã©d6²ý„ÎjÄÛJÊjÞ‚e“&Ê ¾¢'§Ÿ‰Šónò%Á{¥t N¥ðGÊ$6o$”Àê"ÈJ#%Á?ÙIËó.¡F¾œÿAh®N(á±÷'îU©Â^ÿSK\n¾ªÃðÕ(;¿vBw䤫BÀiÒ@¦Ž¼J¸yï‘Zß¿éha+{*B³ªn:gÑ@û>!Ž$m¾-:¼ó.¯§nIXâUÖâè+{ü+9ñtÅ{÷bîd¶ ð7;;RDR­/9AËuÒÊþ0+€—âó•a­±eò !\ -!x(D£´ö :I"m÷ò@3·H¡9?ÄõjÍZÕû·…n©¡´ˆ©Ò e>:vÏ;—”cò‘—H¥"lbº…×Â&¿¥ßýuºûÝß9Ο“ÿò¸_]³ºH‹X¤,Ã3Úsc~e·käå ™ø¬ÃS×;Ä£Ô^ˆÞco"U|êšÃ`uóhÞÍ-Úþ˜ìÅR­ÔNf=ú¤¤>Àß@F}<6’xó`Üž9{·©ŸlWB?¦|† -ªp%¹ì3(îõZë)=×á]iË×diïÕ¯hFá ʵf -êÁÍüÍçËØø»Ëœæûæ6¥\9#6î°™c=btýhÀáX»‡Sèʨnõ#¸Ý>ŽP3/*Ç>aÁO Ö·Ç‚Œ ØÔ(g~ð‰JˆÌ™z›Bà}¨Í½s)É>'š—†8“ ðAøöÍ’v 8=(-ªú|1­¸¬®¬eÇïH¢̽÷šâ¯‚R_¡ðÀ–PÅY¼¦å³ L”Á¶°ë“œ0?¨¹flžª¯Qð–Š?׶~™È12Êî寘Unáø}B{q-ïîÀìÇ®nÏiÌöMJ}Êô=€NíDœÛùÝáK½ívÆ»ó ›Ï¢ðêFíÕo“C(ì« l{ÇÔ(jd3‹á ùr Ô ƒI“Ð)Oæ†4€RGë~Ç·‚$Ýlð±åàÅxF$ã{ƒŽM j |%$aJµ®0?7t•¸ÏóGk+$chë;ÍÕ¼1äRåFl)‚7¯NVΠ‰õ2 4lŒM +g…‡WjLuÜo(Œo)-ªç’^ÄFðgø8e)½g?Òê“Ò,ß%V=é-µTÜ`R‰8öS®g›×…*Fº”àÊïå"Ö“tùEAŒºd qħXKç½â<®~[TkË[ƒ+Ó´žÖe“ØÉŸäÁQ]ò%É€·+÷+…fý«* Ñ"cºy>rE|Ǹq $Éj3KQNÐæÒ®$Ê Ï»)]­iUÉ bËK¸¶\“/âô`\19ÞA¡­‡ÊÀ轸G„ZiîBûùÑr ºL®¡U`‚f¥‚ûKÔüÏ5¯öÎÌ5 Ñ¨÷j23ö[ûi¨Ïs -€Ý!QÔ“.ÎX½5Ø*€oXk7HýNÝž·ÅT–¿Ì)¦ü¶Tÿ„Ð_¼ ö¥…ƒM“´uS©ð‘+šBœ$—W7¹˜¸åWkVÂs~S2Š˜Üÿð˜78‘³àÏ[ƒ¨<½7ÊzÁ`š„|F.M–½f÷“ïkŽ¢ý^¦³s¡ÑGŠþºm†“Ñ­P÷ņœ•Qåv˜‰Šê?a°Ú Ñ62·ž,tU­Æ¥sÏþ ¥øs4që² öƪÞ$Bæ½ÏÖÛ3aàK©¸rRKã'5“h¹Ølã ç­"Š<;ÉÍÝëï÷.û¦¨¹Ñþ‘ÃAÚï%MrhºÀcb&uîiw'íôçmFÚÍ}eŠ\ù]îŽõÒq1ÞmY¤HŽn¸Tøj]Š)éhº“Ò+ûñ:½j//?Lñ,¯Öª–G=ZƒqªXvd!•šÀvIŠ9|c€, -È\=}–!ƒ"up!W¨s]‘¸ "Þ®rT?’àâ¢{ÈT³ýU—(öZVž…€Î/uG³ÓÅ™l»èx:NO<%y‘”î‹H‚Š„·j•7& £’ìÌš¾î&!”ZG(>¤éš™NåèŠ*ESß̢˴XÙ Ý«œ &=6à§Ö’ë{fÌA ÝµO’ˆ^vsùúHXÅ0äÀQ“ ³Qñ—òc|åÞ¤‰ÃÁ¹txå)ís¼ÊÜÄÍ)<¤]Ô§G».?Ù[®•>îêÏZ»ž‹¢ûSš,–ñvàó¢ÒøfÃ<è»­‹J<‚W[8Ý›B†ã‰+þ1­¢y-•÷ìéØR{´ùâ3M¬j@‰ëk¥Ìß_uÕ³Qo/.š®´,6ã‡`Ë€@­Ú‚ù4)T* —¡`íN/s1»¹6 È£J2*Ì×SÙÚ¬éÊ­îdñj2ŠjTJ`Îö ̯–Jˆæô’¶(@rA{w€ -ÝN_YD§.vjµíErx‰s!ˆl0N[‰D¸°ñÓyoø¸]^Âj÷v ·›v -LùdùBë³C~k°eÃ"¯Æ0ñc^¼‡ÀdjWF§ }L_h+M>XH iù3?ÕÎÅÄL™ê·6Íq&{-M©¼à$fŒfgsäƒ-k˜°Üã­ü¥‡BÍB\dôºxR»)¬(ÛÀK±,½d£Ø`Ð1G~Öò¸¥ÈšÙÝúXº¿R7z»Kj ¬õ+:`´e‘vvÏ÷f/Y©˜ÎÃ…Š– dYýàÇä°fL=ÿmÂ,Ðÿ¶™°H"¤RŽHƒ*Z°3ø¶WãÀÕÔJÃ, LΑF<Io%s4#ãM˜Hb’)V4+†¦Á-É¥Bß&ÿÍüÛöQ7œS¾ãRÇEŠŸ¿üëP½r퉉FmMòýÁ>O:†´Ö®ŠÓ©…†š›í˜Ëó-¿êº¿û†¥>cÎה뢡nLG\ÄÉ(²b}°|ûë-CS+‰“ÝgÚ=pÔ”œ¸©iÁðe%òµmÇÛÌòZeÌL†‘ƒªÇk£ùJu…м™âP QÑMÝæÁþ¤—®´f›ç…p­fô”–Àå×& -UÔ=ÊÑݺÈcgß^Ù}§ˆù€G·Íù'Û ì¿{9×6ªhdº‘9Vm߆#ð~;SÌFš]0Š;ÅOQjnHJùœx‡ò´kÞ»nªá\š”Ž´Ò5ìÞSnÀr`Ó?îV?ïtÙÙv!ªïá~Ó— ¤š" æÊP9sïÈ鸅¶ÑÛLJk>†1X¢©à:o…w\0 ÀŒ"¾­dOÒÖçú?lÝÓ’(Ú`ѲmÛ¶mÛ¶mÛU»lÛ¶mÛ¶möí—~è8?±22"×qŸå­{è_²üéÿ[mêÿœK¼YéP˜gbI=ŒÉ~€(— î &`©°“h”Bêž¿¼Öýë -&ø|lðXýùñdà£,&á²*™îy‘)rêî.Niµx¯^Š@ß²i@ddL‹RÞîûbéÔS,øÉ—7œ³°´LÁÎQ½Ê-;k_Lžíf±è6ì>ç§Ï=êRVß,Á¢SŸÁräÏPoC"ŒÿùHð¦sKÖK'Ï -펚2‰V,ƒ4aøÂ_™Î©i%P™ÊѲvm"ä¬a`û´fÅÒ7),B4‹G’(SK$ÇH“®ã¿Vdrw®å@‹3S@h*¸üͳïëê”P½Èå¼cÓ<Í«E:…kàº.¥gs/[Áa~4[w|S½cºÐdysx&ï$_ iæ:¦¼üª©ÑèÍ8-²²ÛG<qv³,èé>œ yl«œ´j'–2Â5 ½¸?F,JNÔá¥^ÿ£!úȃ3Y²%¶2B`2È\h+cÕš¯Šjš›Ï)HFéæ*EU½íH¤*¾ø`ÓM˜ý$ÉNí+ÂÏ £¢™@( /©TlË®Û^(™†6| ú ê0‚ -è´Æo„ÌÛ?PèY ØY³ ÜБWQ05 ÀÁ úÈ‘Šâ½<ˆ"‹ç2e¼“'‹SŸWj$«0Ì(ÎEs bA4Ï÷¶.ª4Ìh•DLíÚUðÿ óMB Hó°¦2 WêåM­uÕ}>Û…î‹}öƒ|;pšðj±gÆêÀïW† -k›ð1´ãä­cU.a -¤<  Ç¨•«Ö‰M1Ãéícg‰è„›&²A-µqE`†GAßÄï}ĨgRyRì Ö?g[†i™2׆0ÑB®…a">^Œˆ±ÿ áÆ{ªœäŸ=ðñ`%Î^' -˜ŠØ½žbNQ P!¤ê™Ã—Ý…Ýѱ¡é ¦“U‰€®#“aŒ•ÇÌeIŸ ÁÍÀîÙíÛ¬óבõÔì…Ú-øi½)¤ëÿVÎ|~ÿBœÃ÷ w2Q·VÛ¼duߪÇãü)Í4ÂÓ8`ïôíúX ÑàW£eÏ7Ò1Õ9“7ªæ°HW/Áú§¹›öž [âÉz æôoVK0Ðnf/m›æßœNôô4ð%UCÎü•ÌÃÛø°ðF”j’ÆXI£QëéEÔ•÷›Uï6©+l¸+Ln²ˆ° g#‘uI:xñIÓ4@Œâ«ÁƒàÅa3‹«zì +à¼eÌ‚²õcóå®oŠYt¯Ó-#;^®£ÅÝ QTbáä Ü‚÷ÛQžGkáÿlÊT¯ª5Þ]¥a¡ÀAœ¤MÜmѲï3E‰ñœŒš»!÷er'ˆ÷¦y tóIC¸òžÆDÀ>n«¤kÎÜL‚¢Ú(´˜ü§©ós¬Ò®#8:‡5—¥ûõ©HéêK3]‰l&×ÀßÒÂ(n@ËѸ×x™-š&û!ÓímÄ"Ÿ+Ã`—6}ÍH“Ô.˜Hÿ«£„õر’õ¨ë_¦Åí -Ο>E?ü¨Û]yŒÂæ4øÍg¥³‘—>‰ûlcÀ5:>ìÅ⹈æå±âÉ´>ü@QUU% š‹±çÔi3"kø]Nš¼. -ÌÀa<$eOrëË œHhÏ û‘Úk)‘aøÜAòµ3`q“Þ1éÔÁ) ï7ÂÚû~:ß’íúÊ›Ž€ K_¾ˆk›ÎNŠ_âóHHg0¯V5bÙQ0+0~IÞ¯V ŽÚ†Ù1ì¬ðSO+ø=6åÍK?ø%”°™K %Vu)Þ©<¨¹›‹ ÒéÉà -´õŠ†dÔãõ€dÉCwd¢ôYî4kcµ˜VÞ ©˜‚¸uQ@á YŸA"rzάm–uœö*‘Ø4@’°0`í3O º‡?@Ó„â}Þ<‘ÒÒV¥˜« tGI–HU*™Ì3ÞÕuy~3èzk@õg993ÐOV®Tõ¸(¤`{lŽ‡B\ÛLg·hZhOj”RM" ¸~3ˆ•ò/²w¾«ƒš¬¼5œ-iv¡t×½xŒ,íÈ—‚‘ôò5¢9’¦^;!ôO« ( Mþ°¨Ì"+LÆ~®ÅÄÞÀ$[CoÈÄÅä ‹ÁžÇ¿°JQG‰?®/󨀰Ií±¹ÏQN|œmמKA4ö¢¥5º*Ap÷|™ÄµiI‚o*83dÉ÷™¢e¶üÙº½ -áW D»Ä˜™cÔ’øïâæ¢`ü±Fbna°ð4É8$:yè)MGàuæZ9ú}úÄE„¦ê‰( ‹@î©ÿ=hýÆpµO‰"M78LV܈ƒ&c@úxŒVÎw}4íO/„ÕžºnêYÚ÷åKâç3Ðs lý× (1ñ˹¡ú+Xž$LÂ6-u»Ïr1^¤¦ú4Ü$Ý€o”n†Ø&8O5Ýw (AÁWCg„¿ª+ÌÚ;]Œdm‘aÒî7M|ÎÉŠ†ôç° Ü?þdeóãȨH·„Á¸uæŒ -Ò]ÂG¸ILpÑ£ðT†n¢ÜÜöêä1(¦^ã´6á^ @ƒa ÛŸnÆ ‰Ã*P>×Õ­UÝ×ó&uÍêZý×C¬XäYþë§/üóµÀü¹¹ÿ£³9ˆz‰.yî~tiE}L–x)€GÅ…Ôæß'èÍnd6ÚúÔàG廧´N³ðú¼Ýͽ漏U ð’z x%n]“œæ¥z¥»q=p¥WŠT ÓPQ¯&@×î‰3qŠÞ}#Ÿ -àyŸÕøÔ°px@qÕËÏ/L oã… ³Û1Uµ6sл\û„;à±ÇJ¶‡ -+¹9 öÝB|¾útþ/}­u®ø“*Õ§EÚ)æ ØÆý†êñO¨Œ‚ï=©Üu&0I~3¡i1Z»ý_ÐwffLÄìc®5r‡Zâ ˜/ù¤n‚&õ‹¨ü¹ãœ0Ѓ*¼Zk²CÛÉTq¦íÿÖ¬– Uv‹š!ƒL4–úÁÖMåêàÜâFÎ °ÅR>‹›8Œ^qƺ>¸Ä±Âîyƒ¡@jë¸Ø?ñŸÛ…¹ŒËA0­2h&‹ ¼înPÁ¬U\†_<ጢaÜ×Øz1UÊ ¨”¡'¶Ôýç$ª2.æY¤šðà90xÍCk9aä¹ û*Ø|E/‹Ü‰¥šÇâèO*fÃ8·™ëfHá,E†óö¦eØjÇùŽ_ï -ꈙƒ)¬ŸM¦¿­˜æ8¸?*ÌßOPê’Ï ñ¯®øõä8•û1JïÏÙ"ŸS½©G§þ¨Ò{͹@yÍêñÜt…N™‡ÏÒ²YÓc -Þ4D–í‘‘„}Ôa»¤z¿¯Ô;)ò -=g#–éSÆ…€^mG(»ÇÁÕVN$L2Ÿ¾YÖS¨ÁRίe)ÞZJ¬Ü9,xó¤%~š -1ƒ`ÒgƒäÄ6 m#” és’|[¬›enòk-WùÃAý²èÕ \(s‹7*²§¿f·bX0‡– ` ˜œo$¼0o·èY=Ü:ßâì@.Ó8f/"Cˆ«Šð峎}߇c‚˲ö¾‚Õ ç²QJCc±RÖµdP‚.¶ðøw¢É4—,¾¤|Î`(ès)§e“ésá\\iŽ ’ %Ñ“óI³‡U¼‚ çRü=¹tæÃ{ïȧےj„ý¡OçX SÊj.f3?G;5¨ùYG[0qç†Ct‰¡$à1À†[$’’-xËТô‰£Ù ÿšé`ÎmU¥!6ô[ 5R·¡BÄ"whP,Ý2˜ -â…¸w¶h™?!¬˜Ôl¥†ÿÆ÷²i•'wØÒyäg‚íoÆ!M×o)¡¸: 7«X fÐŒ’d=ÜFÛrq\ÀÌëåsÚúJCÛ‹øú0PuŸ@Š#ùi@~>§§Z‘¢¬à–ª,Ef•s {œGÄbævVZ ªH¹²ÞóÑ]Ι¤H“¶$´8Ó -6O@¿ãŸÃ*Û~á+BcjJ”€8"ÍâdøBT@uŸ®ˆëèèÓ#Z'»ßø0 “î®J®a¦‘l•aTx<ŽÜ¨rÊ[´u,]ê±ó‘IKHVÝаQ–ܶˆÝ0 íÆá HÈ©ÌÜá\Ëß¾lðÆN ÄT®)ΊÇ-×v÷ÈcŸ~¤Ú%›g(þYõÉÆ1§º­ue~È÷"Õ©D,7½´P–|'Ú0ßß…ìóô: ‡¬™MÆTï~×eRIñpªíë,F.;Œð÷Øñ;™Auª¦œ«ZÎ?ú…7bØ&á ´cšŸDõ©ye>ß9€~–Õ¥×í¹°f™âJh€ÒÙÿW¶mV³»LšP½fWW_q¹Å½ÝÛ"ל§i”nMu§çº«mèk[4ð-påŽC̨a¶û<~žc³«ÐÁûJâý~"Ü5²¬€›dãý˜åïJÁ¯$ŽÝF}ºN(µýÄaõ -©«ó"l- xR€Û±d~¢K›™jýßžËTÔ| øÈÇŒä”ïõ7£Æks>‘û²r£‰=5 -è;!‘í Žñ¦‹Äö=}WÆu5%ÈJLŸÎÓ Œ#‚eE]ŒŒZSÕ€”-0Fó½~lð8{}m.¯Ñ7>XêÏ–ë1®k ¤ÂuqÌ+WÚÍ"Ï~Däg¹TÃp@ª‰çn¦O_ @†‰}1-`íšØ)º…ø?šÿÐqÅ’uÁ‚6Pà‹ÜA•r7>x.'+rÚŒÕ1ð¢.UòpçºüèÂ0LÐP¯‚ô¤°ßjé4çs˜-aå|q—†Ò÷" züeÐñ8+‹Ã "î1+­|Ù‰½¹]kK? -®¥ÏŠiê¨ Í‘¡µ.í¢hªŒ -COJ­Ñ\"#Åw_¹VÁ=ÜU1o« †–œü!Æ°Šu ²O7P”ªxá–èw Õids ²N(>u 36 -¸¨ÏD|©¦—‰¢p?œ÷µUÇÛ‚7¡R>}¿4#7ùg’UK•bLºü2F]ó®t‹ç˜#ŠðÀ­¬}<<½÷ª˜à›¡á^ÖC°jù›*–À퀽"4í÷–ËÂQé%Ô@ìì§K;kšŽ1BÈ ÝrÐ[×ÇeßÛƒ÷ÐúÄñÈSÏq ¯Å[¨=ýd“õ®d÷“ió[!•ÿv¢Âž~q½SGÐ6}%úluÆý&D“kQ¦ƒåÏdXñªºÙbUyŸ*‹“@ðõ#%®ABšŠÍ±¤^ÜX(‘”uJNÃœT¥ì³@êð¬¹?t·¼ëù%ÕÆh'"r‘#mB¾òûdõŽ_›¢Yjgöí¸ÁÃ6)ŠqÀȹ=ß…^ŽÆj†ÈE½kUf -°} L»È»¾ÓåøßÏ樚Ṫ_\Ü~d|_€ü³1ÿŒ„ëÿÉ´‡à6I=öÐSKÔ’ñݱ#ót¦°Õb·SÕK@÷!̱sI"Û5—2¯êárÚ'²°”´ñA8í„?kÍÝþÀB{ÚÖýqÛA2½Ýi'¥"\”𨨅倖c‚i´£^ìHZHԑ🆠ëËÐi•Ål\áÙ’>ÝÀÐgÏo„ ŒöYÛäRKÜ^Ü×!Jâ£loig[u­@!š(†cR~\”Ü^ûyàWV<Oïd ê½ -=.ÂC—­`I¸¥«:íνF†0Óáê–*½²œyœ}"®ìëGu$Û!ÌÏU±ÂžàFÓ¾ôÔ;ð{xbò$/Çå*m~"c#mjÔ0€.óオ¬ÂrÃû4:P#!@}­*éþí0ÙвÝ´nS©j4Ûy"ºµÒÜ‹žâüzýÍŽ kHYÁm¿¨` ÅR9V?­·›ó‚Óa¢8Ò rZ‹óÿª¢ ·'Û^Újp¹ÂÍü< -‚=Óƒ£HУ5¸TøƒçÀi/÷ÿœ*J~LΓWeñOÝÔÔO×–°ß£íÛn3™…¾ÇV‚ŠÊRšÂ†s–Û£GŸ—óún«øéòN+ºßI8Äè4³8„†€ÇêA»,>xzvÈZ®‰hYñrÔìò¥Bp6PHòÆi®ÊXµÏKc¢¸*!¿åOÁÄΪœáô¹„(_°Ëô”$G~ìÌÆYf=½)ª‹g°†¤CA¾":QÛöžz\ðøï_¡¦=£ïw§Á­@[V—ÉDs–åÚ „šc±·áOî%õU’ð\Î=…ÜÞÕ`*EQwÍЬ×÷VFÍb Žyü®sì²±Õôg{Ór˜X²2XSh2>Å<ˆÅzKÔNbG–Ù\K% d‹Èr!ÉF™CXÓäú ¥aÖ ·Ž ­ß²°MBÂÈÌz¼VðŒ6E¼Ú°À 3ú<2–ñ 蘬†èPI¯ò»}ÛLrC´±ˆÔäùp9ž†2bR÷Çu¡G‰q>k–dgË>ÉÕrÖDàN†ä>ás¡ÌòV$Ýz±= k™ƒ»"ŸŸb„?Ùx'Á ÀcIBn}¦ï­ù/p‘j#e÷*YûŠ«ÑHô±ýÁöÓ2ªË»äÔ"ï÷ a£pMäûHýbõßEž Ï"MW¹ùËztç®-¶«ÙeFâ”ífWÙvä72­D©7}sr¡Þ衪Ìöºb¢#É1hÊΠþ´Qê©]§æcY7×Oáè-rIFÌ‚d¢.²çàò»QÀžf°EüÅ°çU¯sÍU  ªµ&öÊ8pô!3 ˜ÛAaPXHð¶˜yq§ÂhG„g…`?‰EL”.÷\Çü±<úëëS]s, -³^Œ¬9È)(‡³Ü7ÕÖ‡D3ï’Ô’s—gì(Ãé3õÜjGéç𥦵b+óW6‡T^ÔD—a³W¥e³ Ðåü‹£W`q»{øzÏÞ§ûõA¦ÿýŸ9”Åäu÷ˆw7<¡y·É {?i¦¡Ç²9J}bRµ4¹srº¿ F­$ ®ƒÉ=>MrÌÈzÔý8v}¼òT`! ¤‹çPï> žÝ“É›RèÏ‘hÅٷƧbU‰éñšÏìÒ-ìôM-ap•¢^L ¯ÑÊ_ŽÁUô–)`Kæ˜a,ª6OØ6tź7ë*µ‚ˆJ…ÅVOQ/[bÓ¯w$u+òYћѰxíÞÏ8€8%ökŽtI^v¾L:6DômÛž]*æ -¯)~XˆÐ|é%× °Ôaâa®Ã¯=;µýL˧êHž¨áäبEÞ½£ÅÆ-V?ï‚ln ÆXt³1aÒÿ%‡ -!MfW^'êKUâªËi*訢˞,rgÐú»Šxΰ¥aRº¡ æ²C¾.{§'¥);ß’ PŽbÁ]H|›ä±¾36ëÓ‡š‰]LYêú0ÞÊȉI¡pc`Д»¡Ñ…×2­<³>ýA¾ê½â LòÍFÛI혳h—Ž+Ê~—©k›•Ó#àÆ]áô3†L…úÄ~2õôv¼ &˜à™‘"–ð%ÿÐ…MfîtüU§ê­¡³¡@Á -Ö¨#SŽýªT O÷Æõ&ÑÞ’ßQÛà‰×“u®+HN£T\6&¬â¿+‚9ƒÖ×4‰¼¥ñkÕ†#Ñï¹s¼…ydG®;óÎÎï*>Ãõ' B˜Ò4¬Q>é†âXffûƒEÝÜÿ]ù®CSÝ×ñMÅE›…Ýì1]@]z3 +¬$Z?U¶Í‰QLjMœZÑP DÞËܲö7cˆã pEm{¬åh"󅇀ôº2Üð{)úùË&ŽUù¶ Ï:ÅÍí.|‹*õ·¡Ü^ôQ‹åŽÏÊID(ùlöŽº4°‘õþ”/\z‚ÑÝòŸÑŒÚYqY’°,/õÚ­nv Þç z¶øR_ìŒâÀeÝz­ìøe’N§JÅõzD ¡„1Z”z..°¯zÉ"ÙÉlò53~Ûàv½eptšvö»EvÖ8°É0›éÇʲjà–ùºÛâª×!N·Ççfÿ»¦(ý j6ü²áR‹ô¸ý'79ª®¡#,ošÇ­®ipjqñ18LÐ(ÿP‡=%žç]²G1´ÍG:!Óü ËÿÏ0§M»3”GI´s–CSçíNÂôé@¥*÷É̉8-Ì÷Ñ@êÎKGoV;’» ¿úÖÉk†H×Ú"ïÕˆMò˜ç7èøuMªÈÒv9H!#!Ædot¥^-¬Ð.:%4ÏíNCku¶LaŒÕãCX*Ô N<³l¿d¼ÉàÑË€£…,,Ä­EAÈÆÚú!Êl¬Œ‰È"ìпŸQ*¨1–!}í—’õ”>½ù?ª­·r–PH.¶æÉ-—Wžh´bè_×Q:ĶyÒŠò¿ËI&‹çè¨gÿÞ÷¶K‚oÜ’8Ââ9[Ìù1z¹+@ö.}Ùx¦q.âÂ4 -ÈŸ³[ªçüÖaîä/ì/L$Õ"±ºª<šñm!ǹ!\w¬'µÛfûïýÝÍv !ѬÕxc#2×îøÎ\tM >ĈªírÜ}mLùðß¾/Š¬Úä£ç¯M_ùüØT„æ.}¼®âO(\ÙKµ@üD§~ÿ]FìM±9ëOÑ8[ú5+í_;ù 8ŽXPË.§½ ÷`™Ocú˜» ·µ‚÷Vú|Ò¯Î_Îj¢pD -`€SB΃3­á›Å ÄUãÛGç÷Œ:Ï&¸Zå¦?‡»©‰yž(RÒã$é“Ic8PTÆñ.ÝwÛõ; -~Œlߤz™ïº˜¶ÝX5;òÑV$‘í8íÉD¨õ`/+F+Éñ£¼ Džî—xY­6‰åÈï…ŸÃ\us܆‡ß}¾/À¾Ç8ÇöÜ ªÐÅr\™}™’†£D(ÿ‚ßcmÿlQúm̤C£ÄŒ˜¾éñsˆ‰l£RáƒìÏ„P3ëúç[8+#~˜A&~|ȹAZŸLõiJäëX‘ì{)<]_ác£ -Ó¡¢˜ túxÙÊÅNk£^ÿïÍ¢¡Ÿ=fuQrú;ÿåE²îN G]Ð2ƒÎM'î¡j‡žØöèq’½)K÷²ïÌiw´ôÇm=ѧë"Æ軈 ç/G5•oGDwwrõÒ#¡ËÆýµȤÈLfns=úF‹ñUC¬9&AiÖ΢‹~Ó¹ø“ëº;´NõA›fÛŽXâWk4?»šçS»;…ˆ`¦bE~‹EI'®R‰¡>Gd [èG@åúëüÛõÅY}ÙÏŒ¶&A™œë†”/\ʱw?§ -ñ\2åh¨ßFþ†ƒ¬¯ã$­•Àp…V©õE¤ù U¨n=dÚ;½k®­MÔeX1ÞË‹²ªš í)e6ã·-±u±ŽR9Vå -çì¿3ýŽ?Om€;æ_`‚&C^íïIï¹ñ‰/—R©ZC‰oô¯·‘²o$*iTöâCn ØÁR?Qý@à#B’(,&™ss7¶CÛ ‡ÿ.t8[uÆR÷Á”5èÍÉ—_`JŽ §7h%r6âúq¦&¿p ͈½¶"FŠŠw–å´ ‰/[þæ[4\î,º1ÀJ#3Ùc*dkºßjæU[Kå«…k&Ÿ;É3@Ï6²èÓ/krÝ9"P̈u€§ëi6Ênà§Ý„¹˜gQnÙg·2Ï›…üÚ)Aõ¿…5‰hJ;Â|W †ûÓŽ_ òA'BÛÔ‰)E2©œÒ1ur÷AmIìF$Ŧ­ ÓÓ­*E+™Qß[Ïnå²øæC[ɼ^A•^øéò”ñ¶Ïœ]êvG¿­‚M\œè<u3Ok¹RO†ãZu\Äb—I¿Þ ‚ÒŽ«d½\ÇÛ÷'®2¡ÅRÿï|©¦ îjehgmÉEtc[u¾ÜÂ5LhÖs S*í²Ëõ”¾\Ú›ÓL_úE"íÙrI9¥“ëýj«5ŒñðmàO‡uúºQýZ¼ÂÎÃêyÉÂ%ï­Ÿ^¦_šÖ`çuÒˆ"VÎ> eÌ%;ŒI' {>ùÒ·Üh›—Ï„l™È³!”— Ç’¼ J;Kúk¦Ý ÖIÝŠìs–‹ÎbZt¡6vWúZÊHÄ¡L„àßÔUQ"I™ª¬ûäÒ_Ôóû 7¹Ev˜„J»‰q!‡F&pc4pÉœ=¹÷Qu\}ÉýÖ/fCFó¥Þû-0Çëö1fˆ×ôyìM~0ë[úª5C Ÿ;L&ºxZgî½ûÑ’sqIºÅMÓè=Ü£EãoÔОi{) ¾ §J/Yÿ†×›·RHæw -ýû²¯ïäÙ>c·M¥ÁÐÑ L{ÿr«”yƸHnÚO~e¦]´[ŸÉXµÚϸ”—AF§‘#¤ S‰f¡ -Ôݾ‚ƒ(Ã9ÆpvøÍ»<ѧ—™6`¢CŒTs»1Õ+¼©ñ CÎK"q<œ_$½o2¹òÈ'ìšôlI‰!@·UZqè‹;í¨Ga±ôòa/ܧyܼ°ŠE–k„2Gsá&?w7º/‘ ½‰Ç÷º&ÍžÃs½X¶­âÁýv$Yî¦a™9ZÆ•u -«WXîϲü] ­‘ ’¾£Â´RŽôb`X3¾LÑ)U·h <©Ù „7¬hÛÁ2ü¤øZr\¹¢@<Æö¿‹ÿWÆ;Ðo¹‰­Åƒ9*6sá( (hsÄac»›~”2!]«ý‡ -Ž€…fèðYÍD®¢Úãm -Ié‰Ât!Ð,ŒYcØÐíx &úž‹4µ#]Õ\â Ïy[1Ó¯:^‡3$‘µhb͔έ ìä€ÿí‚æ‰él@È…üœ+8b6‡ëÁ7Ö -ÌPä?1ÐG<+zÓ˜úH®R‡zúj«YÉà†q»hÍÿTßa8]¡ -²c,Äý -Ü ¢Ù6šÐg¯ÞÙy§dwÕ9MÎðµÚÀ1D_Íœ6ç¬}‡2w_£@…ê¨øf¤gLiǤGÃâê¡ÖÄ.¾úÝñ¿@ÏØoR4\/f -¥Ä¸äÇ«¢Ì0˜,wT§ -ºÃXNÕÎã(;ßÌ&¯’$Ò´¸„8T¿æB÷á'Ë7`=ÅC£Î‹Fž´›Ð)þBq{f²Q—³æ†žo•2Úù¶9¹›‹È Ê¡äÀYí…)Ó¨]PÄò|vñaóÁfÐÓ%‘×2Ò·Hb~ÔÖvKB:m|¦d%ä’QW'5cc%®ìœ–Lòö ýJ4þÚ@NgÅú@ìـȋtå M).^n°‘éxN¸þa&“ö²Dé‹ã¼åÏ=rŒ ,â“ Lz8 kƒ÷*"^ÃaÚ Ÿ• n¥F¸Õ¤OÔ][å3h¾¿ìñS¹Íñs¤82ÿùÚÊUÅbùܼ…)aß<°„jÂ}¡›lØNy*þk1y–žî¡_d°U ;ï)ú=t¿ó¨ÒzßGìB"Þ™ÖXrø ”~ -~|:TžÎ‡g²³–—* Øûí}¢­ïÑá‰MúõpyÛlDB¾þbÅß1 wÙ®¡ºÿšL~vÏS£ìèˆàOCÌx<ûWBÞOÒM  €tuGˆU '_~m~ƒÂ¿Â$å0¦ýð—J¦¿cWQ Í}ºUE©]'Ÿ®-YšáÂàÊØ_G»¶Æ‘o;R¡QÇœõñ81Ã2€[¥vÇF¥ÈJR]¸aÁôRx@À~Ü{c8ÎVD@"êl¢Å;t×pÖã‡2º£Ië•TÎJ–›C5Æ(|Ë~rF-„qƒ´4¤…k-*ʾ%Gcà,ù»kÑ nÓžjK®°ŒøVÓY -ã -iÆGe«â}Ø-Ć½eYüB’>Þ{¥†¥“µË.™ñu4eL!xŽW‰°“ª÷‡z¶‹oõ$ŒíjûÃðõ´w¹ÀTo›qušÀ˜lìT]ÛmÞÒýà=ð[‰ã&É€¬#¾Y$‚ŒÞò?\ÃJª8vm!ïCÎ=èŸZ*_nûD-rjŸ»ËÄÄt+³ÙéD&Ù‰ÆÖA-îÛ]ÃÌEúª¨÷©x võ’ jé†Ðú‹Eë¿:W“‰É•*dÔú£¡"„…ž79eçïe$_|¹Jª–K‹e•|¼¬5­ëžCAÈƶ Ä¶²þ.9ºp¸ ¥8è±›ðMiˆ½ŸPo¹ÿøÅC]"sgSÏ–÷†Å×`÷9ŒK´Ð'Ï 6Ë!?C—¨Ö<€Ã*˵•š7ä¿S7E]§[F÷«²˜ìöoŸpg lÌîÍÇÎí`•\_õâb f|ü#ð@´æ3&{ãÄöïÐDEã-ÃöÖ¥æsI(,>XÖtM—X³•¦Z¤÷B§d®œR6Ъ¾9MptŠ÷ÿ+±|Ù“æåðísBÔÑüÐIB¤ã+VË™½ø9½ç9í’T¹äÒîü•B*Ÿbü©Ò)e¡Ãý´$(ALæhžk~³˜ !ñdè¬ÅÚ¶.9@<‰®Qõ䀙Ý?ŒÈs¬íœïFWì -ïÇ3ÖÏÜ`Co+É–ç4î‚G±ïN#Nìá~û>å›êB|D³JQ~æ¦ÒŽj¯HÛü9‰Ï*±]!·=œhuÔf³Zâ'Ô@Ø;7û¤Wèf3Wg¶c½±Lqƒc伜­N þºµsï4ξî«\Äj.h…÷ïMl0=:xÄЙæ{}ÐË…’]*2œÅ;}q5ÖÙXúÆ?¸df,0d?—ºWÊdc˜=×yÌ\k[æÈ~gðÒ^»üà‹Y>]r›¨ì®“[¾\ìÍ81¶Tÿ|˜Ö´ç¢#²õª0÷èä¾n¶ò,Š’ç—jà汑lXisõZü‡ø'Ѥ‚]ØÛÄî6­Zõ#ýY9Oâƒr¨8rQRõ @*ŒX§!]cࣼ®oT…5Kë¯F2§¼ bÅvפ­t¯Ž| æâ°Î—ì‰+ÆéøÊAì@·ø´ 0*nO†4,Ÿ¯UÀ¹‚¨V†U1–G1üÉ^–±Ñÿt›\Ét4÷Ï?€[?­”«µ:ÂI}Éïz Õ­L))k>Û­fFqHPCõòëN0>™Àà—ø`‡ Iª1¢±šwƒ¹'ŸµAÈøîñþÓƒûÉc»Û·Àr½bF†)Ð -#oàëé¬{d³D”†0T- - -ý8“Ï©Ã0™šaæßµÐwòÄ, -ɹ5Dˆ}<Í2ÀÂ[6Ü?€“~Ó -JEjãÁ’ñ -ŸWƒ=•Ð¾s˜d{ÈÍîý3©‘uçAI„Òe¥Šc¯j|(Ÿ ÷˜ÑØ_Ϊàó[úë-•eû+À„È|gK–Qls+t¬âv;_d4Ž¥iç ºbnåHÉÑz~K MJ±…°5éoÀÓðONÕ2Öì¿\â-ÅÀáJgı6êž -Ó4E jvæ¸|4ÏSÙœ'ˆ­Í[å¤aõ`ùX™1$NæÄT:|–—…e?jŽ›d“Cßg£Nÿr™!)N~ö+†TÐÝ(HݵE(‹/‹Ìˆ-“€ý¡ÍœÙ™P·°¯ìÞ±Ü<²øleŒ+P‚„‰°è¢&hv·`. ‘†£¦8z.Sæ“Ë-Àµü‡QBÀµjH \ÆÕžŠ³ÍÇ -8ö*¹„Ѐ¯Œx™XyÖ,¤0Ëi-QRË!k˜È–úýÕŠ‹Ù5’KRöÌè'æd±ô™ZOï·È {Ÿ˜ƒ«}¯Z…®ÐŒRYMÊšátߟc„ytJŽ»×}©Ó’Žgf"ÜžF¿!<†Œëlí¦MãË"eJ?°ç¤P,9YãK€ôLÎG<üs˜ôÐq—ûFøèØàÐrn|K«ê׺k( –*–Ò¬óÉÛ<ëTBzþa?¶óýÕ[Ð䫈 -x̯ªÚ(N.µ" ]?–kàøù¹ÄÎSã»ÒSŒ¸WPlÁ…Î}BðòÉ|NR2 #ùVH öË3WMýH¨¯ºa³mfZ9Ãr:Z -öýPóÑ ë,b2ìH ]­ã¹Ž¤ƒº†aíØAz±ÿZ¹¢ó5ø] ˜3Åx¸rý…ÈÕ8Gw-Mž |âÑl3Ñ:°^ðõÞ€sB±½ýMA ðÄ$_6Á)#™·.uÊDúVå|þ9p˜§°N†ç†¿0Cxç‡KE‘?ò9CÇ7Z…`—™²µÒœ)µY×¼W2ÑCÏÅ]©Þ6v n—¬@ù±"5‘’òßžô‚^³ƒFàäL¸ ‹,ñšyjMëNºX.'mѹ3ý‚§>¬GÀ &hÁ" 'r†ã>Ãu¹Þ2:&´ÚÕ¢ÏMçDQ· -„ñÊŒN4b¤VÿY64!ŽäÙ?„@çÄæ•ÆDÜ=År«+AIJ4«ƒÛBŸN0íÛ]*‹–VÝpc\¯<Ð30ý8 -c\* -ët£úѧê®i/Á ÑÕ8½}E•ì7“†x>±„<¤ vpaÑê$ckÇö.øtdÒ¨‰ÏGÎý¾£=˦žßM©Âà ÛT«ãƒ÷«BQÚØñDºùÖ({Æñé¸u"ZtÛw§| €b~±ã¥u†‹ÉàÎÞÄLxzÐeàµk]6ljYHÌ”¥IlÓÓ9˜ƒØ²ÚÜ'B‹*¾飷Ý.?‰™êT9+í¯ßß³„H¨¦ÅÚ’ÚäÄ‘ä%T ˜'$€&¬±6f¥Âåº:Ìœ¦8èÕÇ´í%÷,‰Bî|˜BÄe iWÎa0O ëçáöv÷×P]dþH:ª…™MÅb¼5^ÔS挣#ÊaèOmf5¡ñøý;ãhBHFwjÊèe¾7r¿Ã$éŠßrÆëÂXD„0NFD\ªœj:Ê}è*ó°W­x?g‡Ëg2(˨7^Ü( »êÊi…è2Ï -41ñ×CÍ $Á|šYr¾¨J¼XôYºaÍñL7H×ê+£·¨]_gÊ[ØYÁÛKÊK‘Çi¤‡Te„€F ®›ù¬šÞÂi<5Õô¹ôÍ›vÀ{M8ìÎ@Ô„pw×4U^´ZÊ3k¹¿l/,ö*ïLcÅîÉr=áÑ“â<@æe”8‰ªGά)\óÈ=(HRÌ•ÅO† ÎÖPrU4÷Q¯´<¶cw¬§Í˜&ê>ÓŠŸW_I¢Ã¡¿åª:¿ î¨ChjÔ‡¼(°]¢;Åoy+™=Vú½åX·g'å/]ªCÛ—X¶Æ!’å~bæ*øÌœi7]„çsÂ/N5þ7©Ûd=` <0ö•@ƒ3‹fšiˆMÝç‚Cõà ñeø\kþ  ë[ê c¨Ç²ÞC¥7Þ&[6÷SdQ¥HŒ¥9c( -}Wܺ›¡£¥|Ã:jYÉ@ËìFœ><*áA¤·Ÿ.´`v‡X9{¬û‚Ú Áæ}æ6½Œ"G÷Ä]TQ~¤Yj{ß1“‚`uîkT°t‹t,£æ5ÉŸ^·°jÏ«]îFѯÏI“ægà!åJE”‘¥ ·—Ñ(¥2¿“ÒgÿnI6M†`Y€×ÝÆ ¬ÀðÌÀ|Õîÿ¦89–_‘€‘{Á#‹SËnm7°CÆ•îÂZ¹·ÔukóüðTkb6|J¹æÊa>&_›'E#V„a7’ùKo)3åwŒî¥8_H„ò™øW‰X¡. ¡Ë¢s"Šâ9UNlÔ -§€ÒN'r äÿŒcrZ>Þ==Eæ×/ÚF yôšù¯Ew-›pàC(C©¬î)™u’:#s{µ‹úðêàòî݉ØûVw&‰‡…¾ý è]TšôÏM­ÒúUù… [ü61»¦ïÓ÷Àß½‘Dàà›DZÍV\E|®óÈuò1:psð•øXßlIÂ]¾àÙH—ÈÑ¥Rtƒm0’ -ÄxR뜲][:yLë:ÿ2dŠ·ì`Æ,9/’œg{|Ñçź ¥ ¶·'_¶-SkÊÁ.Å4üƒ»¶Ø°« Êõð²YD½#Œ£ ¡W)g÷ýÀö‚ åè§J Œ0ð½ÀƒC -±Vi-ÌgE†ª -5½ÀHÚL·“ËI¦ÈûŽï†Ñð#_”É]o2§6*zE©]«Šh*•†«c†®GYS©-ô=rŽÏRné‰[q{€Z]í‰÷àÝ X*ÆÍ{Þß'™©;°¡Ì«¦…©OGìyžÑÊÛ¸ãú‘ž,™Û0å7žŽ/ŸD 7êÐóV;þíÓô*5ûaÉ#óÛÐ#v#©Õçº({®šèBBT¼ìš¾Õ²êP©“zö[ýìMÅë­3^ëåmšà÷È‚B “u+þn;Èضaoðzã½îƒÖ…F@1—ãyÃ5Ó¢t­ö¿ ›þÞž´Ø -²æe¥Àu@û;ÞMþfH}춳PaÅÈx å®ƒæ£uŽl>¶"5¦@`½åX)Lòî/ÝÂÞè†|ø¢±hY¸}ƒr3åU -  -¤)šþ±4—N£û¡›?»²F¨½ ™xø®w{ÃtE/p}~•RTfÜ3ÂË‚Jç• -ª -BP¬[ÿóÑ!­‰Ÿ¤sÌD¡ {Ð:J.;‹NUrx¥ 2˾´ñ%ƒéŸFG)8‘Lpò_­&iA· d8Ç’ð¢$݄Ç›Y·$BÃè½ñ0ÓësÄI3mGíλ~ÈOÚÏÕó'B‡Ä[iaˆ"'N>NúÖ}ÆøYQFÎRT* î˜t˸øm¬\-òFïÅ°M÷ÈŒÍ5¥¹h^଀ïÇ&g/#¦c¾æòZµv¾53dŸÎÉR”¦2ªò?¯î:³rß„ ­·Ú[ÃD 0¯0O,ÊÅØ"Øä4ÁxÉÊHõÆžéè¤?ï‘o/öZPâ;”ìÍkvˆÚ?.8;õïˆg¼×@§ýy4@ƒÅ(‹ðÙ[u[AÄ­Ÿ¹‹&Ñ8rZ 5fH¤!HK—mlЗM™“Ä$üGgFóÆ)ßB¨Î„?hžDót†W…¦·ÓøxƦfI®÷W&ˆ“Î -„Ä-ûÝã:)4%ÆôÆ}½q—^±JŒßGSgòedÅtŸ1jÒ<ÌB‹®Òö| - -õ›`XÌÄ8:2–­£•«/2@jÀw¾0'õ`bBáwIGîçÊ¿³óO §¸Ì»¡-¾À–+2îTwë·£¿Ù_ܵ3ØÚø6Õ”À´"VTåe'+Š‘i¼°× DË ¡15û¾PªO>í»ÞÉ$"i:‘”|ÛLj´Mžf/ªR`2ÊîÉjñÿî:ãØòñL·lbšÝž÷zÆ×#Éô×çqñ½!¢÷ô€ É_üTZŸ‹Ccîò¿¹ž¤Qðà{;·Çýìþé5»`ÏüsSŠM‚5¯]k”‡TŠ0‰âŒýðXÀµz†úCÕëù¨¢å¦b”lëD‹)Ž(›ž¥@ü&~Ú}9Oiµ¹wÑ©°˜:Uo  u:[ÝÒ“k€ÝÞ~FUê;Ù‡ükÏêy€›sì×òI@"]ó #ÈØFE«JÙNbª‚!Z6 -Ó -Fƒ1ò£OçµÆ¬hfm¢#‹ÑQØL¹ã‡OšöÛ´:;oNbóÁ®âîPœ\±émH7êFø&¼lP%e¡q<4CCGe¢â$düJ™:ÕÓì’%~§§8u ç¶ÌØÒÃ’iè³²7ôtíNu Röá™5#ä24no–ÉŒ‹åV\d“EñRZÙ[á[ª–mØD‚t¬gq?—¦ ÇnóJÝô1ä-Ä<·ˆ}DŒÓÌÈ(秳Nc™f¹ƒ…­*ãÇõxG†ƒ’ÖŽªÚøI`£?"°f-è{Î Ö¦@jûýˆ³ þªœãs—Þ¶4côô4 ßÎ¥zï"SÊobÝÂçaÎd¸XØÁµö’Ñ -5eï·wí¬'i úÜÄã<Â蘚$A n—Aµˆ14-ï}P{­ƒuö¥½wA-H÷{߀n “ß íL´6×(•!¯L¢Š ¨TˆÑ‰¹/&B*Tib\‘ðÝÚ&ß®töÌI‚c‘›„½ÔH-»&D§©ô7t§ê16ˆBÂöªÝûbv„¯ÔdŠfÓ|Ñ,9ELXe6’wÄ÷ÈUî‰Ò*,%°ïF¦—êÓnsýWà«L®.)ïœã ½JÄvì3>¢_ -L*¿;ˆñ}ië⃙–ÂK»¯Š‚ð‚GTwkÆIÁ/tvןWå—é^`Žo‰ÿû«’ôu©ß°h.,hmKÐèÕœÕe}•|µÍË<ÞÊŸ¼iN“B ø¥Æù¿ñ¿2ñ±kÁU6Çwig› ât»‚dzµ LZ&û™±½÷»ÅLÞEd7üfý”4Olìa{ùj™`ði<Á“\gj.ˆí«yÇöÇþ,Eü 3¢¨>áÑgl¸¤ z‹C ʼéÞ$©Ãv++Pual’úš¶¸§$د#’óïD<¡9kƒêȬß7H\rYùûý… LƒæÝmðµ_»d¹z=eÈÿ@«‚ÿ0Èkf_Lš…’ËÓDÇŸ5çä¨pÿifÅù¢[:¯É8Ý(L?#­:ÂD©>ýÂBÑ—ˆgp¸A&–/˜/\Yg®fq᧤×ÿTA”6—‹y»„¿¥XûceÊnCë¤Òú§ üþ×å>?ÈíµVÕS¬Nss5`URÔ›Îug¸ZJë'Vöu@}ð= ½aÜÑ•+®•ž‘ÚM"]g>©ze¯šë~˜tÐÁÄ›É'µ«ÃxÖè‰Fóÿ°uÁ¢(ʒݶmÛ¶mmÛ¶mÛ¶mÛ¶mÛø7º§oX³šU­ŒŒL2þ9œL(rluçg Hlp©lÐo@IÑûñ­ПÁHæý6³Å™»'âk›+.¹µÕôë…XôÞŠØ7CsnJv/y?úXÄÅ1Ùu:`K`œ€ê!™(DJÐ×sÓòbJ<–ÝÝ(Î ùWQµryÜÎÒŠ» 2 a™ -ð -,ËîíÄôòtÿ*Q²é…óàf<‡Po/ÇêËw`@Ãøˆ¿.uþº¬ÎsAe#Oyfõæ–¥’ú%†…p60ñ&“ þ$âáŒ2ÈPÑÜ¥O8Ja漸<ô€Í]#o? 4½jý9`­z—¤Ü¯Ö¢8ÓÆ$>49g•}_X€£HOú·Sbÿ8i¾€—D¢1÷õX€Ì(óçr©Ò¸Õk!`Õ€ "²ÒÍ`to¿#¥±5LŠœšÏïV1ÔxwûçÏ!‘—ÈÖ&Ô]LJY¦0A´«]…bË£~lVÔRÕþiäqîn±mòäåŠ"†¡Ão7,Nfä "î’ßàeL4ÔÕ!/kvÆCŸÃÄ!Ï5¥ÄÈÛ‚Sì‰Z„$eÛ”½ó•Œ Þ| Ï€´É?T‘1k¤P¦ö‹qØøF³HËU½Uà%CaæI<írL³‹ˆ@3|1öZ›—}k@¦ÅTö ¤²Â+ZЖž0Ý ÿ}NÐWº†ž9ïÜœ²øÍ&>OC}]…ÌØU¸*ò7¦£µ9B@úÊ*] -ö#Ôe¯…/S|• K\4ŒˆGfñ•Önf€Ÿ‰—äg)¸_žÓjâõG <·êÀ©ö~_°É‚ËÇÑjļ[š©ÏîTÞóAÞî2·jš-ø_è–ªÓ–ÝÀ?R2€Qgˆ]trx¾íI¶þa‡"»Û©F>rçÅÈâ ð‹*è ¶H¤x Èý÷l²ôoX†eª÷Í1eÂL}Ë­ïc×7ÈûVµAà^Ã×›º™âÝ–…茸åäøE‡ûÈåÀ[À’“[©= ›b?2½÷ï¼{ŠÊÆÏí*¿~pEº)‘5„Ä¢¹± ¼Ò‡ʽ7º®©„ä¸É}~Þ§ÓT•¹FJÇ#oü¨ ÒgGÿ†?{›Ó‘ÝYÌØmO­«ƒ€NÉÞªn*íµƒÚÇi¤‹N¯’l àËøR¼Î\^Yˆ© ´jWÞøNpÌ[çĄþÑRš(ëÕy×PJVbê3Î:Øó¿ÁÔï¥Ã/!E Öeæ¿¢œéïóñ -…ÑæiöÝñ%ªdHH[^_Êc…û"T,Ÿ>¬%D}—6ñ¹FÓiañ#¹2ªÞàaßÀ¶ýR‚¦±€ÌÈ¥8. úD†^aºTšÖÌ\ªÚŽÿrš­Ñ¶`„çY¹¼‡ŠRÇ:ßs; í†`£ó`ÄÛvìøkãäÑÙ¦~¸/|òÖ\Ï{`B„¡8ãÿfZþ[Ÿ¤ÞÑw£˜R²‹_Íd]»í!ÍY ô—8@K׋8Z‹½¦Hm§oÁói¾YIÇçö¡˜8§8‡øšºåêv¾’ç9r¬™A…oé .€Ÿ†ÐMä®)^r,ê¤ÀýÈOþ ‰€aØ’ü¡!APBzûLëjcµÙ²«Ó ªº×ÿÇ“3É$ßM>ºáÞG9½5RØ´_L}5›Xr,ƒV ÃÞÙ¡ë&,Iå£7^ù¼ ý‚¬º°aÇ"Ÿ€£|ÅÐöÑ`ÇîêL¢!Õ';¾Ž’Ò·ÒíˆÚx«1m´ncå Û™Sã-ŸG“CI›îláqpmùî'•}Þâ?Ùr‘ê½³ðÒ捻Ӭßë'\䞶1€'¡4­­’å f,MaÉ·éX•¹ÌN‡fŸgN•èžzÕ% -íë*/éêÐàF±^ù2I®Äy¿®Æåå}œ€Ý—…(–£…üÖš‘µAR añ@Ò½¡T"ÙOðÁŠŒK["¾žBkkløq+NÛPVüjòWv¿áÏÓÊ…º÷¬…×¢Š*Q(ö+mùñÖdê¿¿šPÛ*4¥ì †;ÑÝPa¡^‰f×y©™¾þpÑ ×õ}¹éÙHRÊcÙnÀÔ!(!½&ŸÌÁžòI¡áèÁí3× yÖµÊ8=¤EzÞR÷œc ÔVh‰kpï>^¨ni~I¶ÅÐà $cf’•c®P"» §o¶*YËÍjöÜÏÇ¡ÄcÂmbó—:ö‚ 2 -«ª&û&›[/(›I2\¿€Œ s˜×ÅeCƒxLT§ƒ­N´úF܃$~yÿË-ŽrMÅã$ TàLÞyÞõ-L¥Ç;~½¶n3DЯwõc`šR½ ÍšN-‰oLJù•ø‡)´§+Ì/v!²¶ZgËv¸„òûýäP>fX§µ6œ¦šQõ¡gψ™H‡6C_j€¬Án©6ed|Uh{ýïQ-‰½C«Z!'ܤKhîv°ÛÎ»Ò 0ŠB­¹ @‹aÀ@ê²°vÔofº‰p«¯jH0 S“]ÁjÐé;;É2DM‹ÙC¼}a¾g`ÓÑËœ\' ’hÃW§Ìùj,-ºç¦TÇœ·ÎŸ£ŸGM0ÈT °6á9Êoô*Íìï4_gÖd¬#tNÌÊ2ˆ“°4Eè¢Ëáå(Ÿ&:<€´E9–+r…ZyBáí ¡ÿÏÃ÷|Šìå݇¨Ý´TÜ%¤)ÍŠá@™'!ž ½6ÉbûÚà9¡ètïU\ªJ%Ë‘œ;vwð¦PŸÕ».3«Ïˆ¼tU{ïU_O~j"sÅ_Ý1Âåæû8h¬î²è0@‰kV¼¼‰qf ÿ“M–àRõ1cf¾OZMÈH}d@jKS¦Ùù,^„ú;£`Ï©«}’ -:$ó6.]Y¡¹#=ºq1` Ê÷£­Ú‰ÉãÝ?‡„øj(™@üCÓжŒÚÕH–ø ÇÑlÎìøâ(=2$0ÀÒ—÷Í”µñ«.™ñOEë*ñ?38ážD5[8UÓÉ‘3÷¿ÿ"ˆ}HŸ<õÔH\l[}S€³ÀP* â–¡A¡o[$Q´Žgu¸Üô°Hóƒ -Ù[àJKe©á@u‰‡½·`Ï„)zpç¦uU¸¹p–S5¿Һ©ž‡1Ù6+ÃtqNËá¢<„¶¨ŠÙõÓ6·pHByQxñ‡á-i‘D“Uvî' þµƒX‚ø´2Ž<’©ël#ÍúÃsÔ†šºèÁ!ªÏcÒiH!awTê#²‘mêpG7êµíÜŽSñT*†®¬¡¡àøÏzÏÝùÏÅ+&ªÖ_ŸN ÷kÕ„ÀévèÞÌ'À$LgÍÚø¶c§W$ ³xa“­­>tóÓZó`úŠ½´óÂ×õ3­ñÔ«’:µPl¯)8[¹-N}>º'_uöÀ2rpRÊøˆÀ~ -5…Ö…TAÜ3-?g¼ž#J¸¼é¯ -üª¢rl Ê1;´T†íY¿ NÚ]'®ÉÕl«Ú/]‹ ¦¿(rúûyt ãû¸ã°½ò‡ŠÏ0Š*¦¼bÎÂÛGÃÙë‹ê Žñý7›¦èûöåûnFt=‹(ö÷sŸ×A‡>o…îÝï·ÜE=JN­æ9o`¹SX`<¾ çgÆßk‡ô¥¨õÊÓ±XÌ’0ÜãázaGUL¸ -¹»WÑ ™Š×JIòf9u¶˜ûŠSZæ£Ã(,Ù*·AÈ-îi/§ÊˆD¥>KlÃj‡p±œÄ¦ê¹Ì_K\ä#q$½žŸ7n´µ¸ n¼NC5/ ñ¡EÑ‹FŽ>eˆºGDEð ØžÆP@ö6˜!B+ýûD:ZËç_®;Õ“¶ÈÀ‡»*y+=‡ýÀ¤Ã³ë‹æЕ²*×Ê°Bi)ÂK`;ð0Óe{ ipÜn¤hÙU†ÅÁ>sý"DcOºÚ=ö5u˹@–ý’’°Ÿ$Î"ðIäz¥Þ€º¥ I·”ó±Å·¡Õ&ì\¹½K¥I³h4æ†rò ¹. ÈˆgUÍn…$>Fã½ïìžù â]f,¸ÈYRØr݀Ŝé¦ôšPF ¿ó¥•?†P¤Ì.)}9ŸôO´VZöù¯Ä2dßœsÁ¢ú†…œ„è‘[ž!ü씺O>0[öü¶Ê…ûÓwuʇw÷HÁ¤?°Éï^¿uË¥Ž€Ã育ܾ®ÙOãñÔÎ7ð63项yÅ·œ)Ù/0ðrU q öê© g©ó‰Ï -ƒÃcŠÓU›Öek>É{š=1ætàÕ©ßXñuêibMÏtœ/\ÍNv]öˆ+¿ì¸øUÊV›“ƒð‘ÝwPáÅ̾PEn!ñ <Œù+ -IdÚÞBTTD6…&Ž÷âW¸Í/Æw&Uäø S9QðêRY¾®ÈÑis½·Û‚r<•ð0Áz‹€µìª´ -õ)€ØFÝMû :…¸t‚ÙœQÑ»ÑÕøZ„Í÷çæ-Œ@(ÌR\miQZ€Þ°ÛÂ¥-ã‰b‚×ò"‚ð8©Ðš° &#¨ÂjÊ ”’Z†Ë T´4`Ó´*¨yƒW~dA²¬2k¯çCwÖøèòéÙ·ÜÔÒ¥a4 `¿ÏšL`c¿EHײµÿ± M"vp’Ò=8šG~ÒË\»£ëcA`luTÀŒ°”õ]©ìIŽ'þZ4óÑä{:s*|¡ÀÓTÄ‘K¨ÆLúÀG,.Sº -ÎY P Z +ŠÞtõëœH$ÕÜ\\)Ï|·ô#×lcÙHÈQu1‘Ön¹³˜S ®ÖwÜ3àásn2Ô^íE'BÓtÏ‚>§œ»oƒ .Îí EgOàŸ‹Hè?n~W¤üÒøÞÞ+¾õ·mÚèÑ‚Ñ}§þ8[v)"ÇSEìùt/[)üΊšfa.à»ÿÑÄ&ó2>{aௗäIuY¿éLLŽqmϧ/ßýîO¨%‹7Xf¿\༖5cÜŽ&gýæ›Ð{ãs~bˆ»à Ôíƒ×èÒÕúìãÜ#.dñÁ¶X 4 ßÆ_´;wŠ6·Š¡ûO§¥ö¦–XàÝÞ" ¹jì3„<’Phn~Ç !à›†ZÞ¥ñ VÂûŒ­AΪ_úþDŽ`WŸ¸Á2Y àµSp¶uÞ£›JfßT,½×ëHí ªÄ¹ƒÔ=%K}ä¢Ÿë ŒsÄ4e^39ð¯¦|Û%ØÏ媋4Q¬¾>ÂÀØ~Â/[¦ìØͪïÒ•%ÄæU(`bVG½I&G0ÓáŸêUì®»õ7µ÷¯¬­–€[3‡1ÐOkhaIç]©\o ‰ÿŸî‡P”™¦Ñ³–v×"+€ºG[¯r»K=~ZQ S‘ ¹˜ j¯]ˆÌ`s¤.ö€L²y‹Rœ–Îxoíƒøv²CÖ(ïXCè yCg‡&34Ô­ŸÔ“«Áž‚<ÊN"®Ñ åxÛl"ôÐ]÷ Þx”íÕÈJò ®òψ"êöð¤‹J€ä’7Ìi’šîÅœŸ$ãÙ«S&Ρ±½|é5Q¿Xµvc÷È6¸Éï¨4?´ÖŸI¥øJÖnúÞ™1CU¦þc )’çIf94”ÕÄŽ¹'F'é’÷ ÌòIGƒ%Ð8™¢õÝ™%Áp›ß €]2úb¶ÛqŠ61vçÎÚC¦û¯ŽÀ÷s`–ö‹W4nulRö½ß,W£ÿk 9 ±|0§Jå­4ÏuN/âÁÍ5hùغÅad»ï»+@Äò@†™npr9ôþߌE­‡‡¨Ú@Èz]ÿµpòO¿ýr -þ‰·Û(XÚßizztá‘0ÔC8WÑ9íçéÚÔ =YT{ßEÚ -ª‰¶žK®áSÚæ­h¬þ)häN%Ê¥G8 1×vkÓIãQÑÊ *6uÒ3çm<„Ájë'`$°Jg˜›»µÄ.”Ü(Üþ©Jü}·¢bãdÚBÝ2øÖó9o£{K0îÚ‘r€ÄcUzÜcÙ‚¿êÍãGÍ8"é`}§ -òZj?DáõŠ.ÍÞºžIµ_Ÿï}a-ò×ö`x©_=k«­y­¼øï€ñ²´ðÎ¥PìlV)ÓAOgFm·i[^—LÿÎ=)4TåÚ!¹‘I²æ_ê½madú2ì_¦\}ô¡lâàí;Ô½%4—½·GJ«“+ʼn…µã*ŸãµˆWÍJzý¿ì5{Î\,é X=»>)~ÿÁojK¼b-w¸U¨ž”€g^ þj)ø# m_úŠqÎÅ/®’nÁ"W£>¶(Že -BltÎ Ãýz=…rã\®ÎZÇÕóžiœBÆ–QÓÐICÖŽ•ú‹.Y¼v[íÑ<UeëF¢ÖŠo ófîo5 Ý©[ãㄈʒMÖ°3>Ç`KŹõûÆ“öÓf[utIê9Yå¹ï”ÔUBì@Û*'ô[E;ú.®ˆð41ù¯ öi‘À>4Õä‘l;PUyVÁ{Ýêît8Pò›3ÜÐËkÃÔÒP*Û²Mú8‚[ã#þ5«!Ã@•¤czšÞ²ñ\lÞÛm2ª}AªˆR=¦Þ~×à¨ïòe>Ü&k¼­’üG±@›ƒ æÖ¤5Úû=å6ÖúôäË Nö‹X™§uêu*OrKŸÑ/.¶ -'¹BŸÎÿ@vm`,XbNºõDøú-±{cŠ#saA 'è~K2»‘œ–‡¡ÜVwàƒxÉÛ殬/óíntGáõ¬›1Õ„1—y óÿek9g$ìs~=pXª°Ð€4>W¬W|Å®y°7»™ÒLŸyÕT‚­` E”ºì弈õ=‘ÈÄ;qøŠxB‰Bä E30oo*F¶Wz4¡ Àá¦Ä™¬[«o9{’¨4ãy7­Š[$È;>Ó…‰^î9¶¯è÷¾I´’ü¢ß£í²'ýîVKjö*A³ÊÐÊ ©ï /ù#EÎ>'ŽcßÜ  DÛ4TR†zÍEm¬uúï¬g¿µfñT‹xÒÒô s;§è,Äܤ­E˜'‘Û‚ã!  œÚ)£VämkŠÓâ)|™Ú^ÌèQiÐHRF½¶ö‡ÿÊçµ°%Nò×TµgŸ ]:qì+ΧN \0öÖ;Wæ2u}²¡& gž>íaÇg®š»í×ë|ÅíIoÊâõü³Ð*+8™3t~yŽ8JÚ¤š|ªU˜KZQ™{^¤Á&>bô ŽJwvxr_7bé¿î·©­†D‰5"°|ÇËÚ.g';xZÝL‹qè‚RP̾¶Åd©ÒLàDÝ"€Óœ>SšŸLXñ=ûV€•>ÚtQXš…·)0ÖJ0u(ßwø™›†8ĆËB°l˜ åñ…·Æ¿H•|$_M¢Nx5LJ/<ím]¡ÇT ºÎO®·å¾Çå²D(ùåȺG¾šú£ž•TSŠ¥º¨j¼!N®œW4Yx¤ÆÒ=<ýÀ"ÙñÕpIU¾ú¼ˆÄ!ág‹ä·ë߶†VÚÈ~O3>rˆ~ù—Ä2CõƒÛPøÏrqÂ$OŸÈB\碞ÎÒ(ݲëÃ6ræ™Öãô …<²…笀díuyošÉtEiÛÇýÏn³Ç:@áK®Î$ÎÎW(.–“éøÅјzȾ.ì.wx¦h°šKls­,ûŽÊЮ“¾Åêì—„êýÒºÿäqõXëy£~£sÖ¥Þ‚àŠ½(vÍýU¹òÆb}¡'Á:Ð8OŽôp¸(z¦»”'Ðñ•>qFè®\Ó§þí -J8)"ê•$ôWvªf¬p†ˆ¤ë“<>e§LLÈ JáÁæ¾Ë%[qÐæŠâüõ6Ïå:—W<º Zp˜y©]xÅú'xhc\ÝB¶H.>%2·¸æ#û¯²œàõ—¸¢Rú}ä¦/\kS˜R?±XE`-B!J)F?nðî‰3aÁ´¶Àr8Ø;µ´f©¦g–mÆïŠÒDìÆɆ2Iç÷¿»bªø‚t‰€ ,s.¸žê"Ù‡5áðþ+×ûR±°'ÞtqO_:4òîà©1ö%¸Üüåà ÆЯäPn/–ð#§¿«Öd¼Žg>¡5â¾dM„abìüEîÛðÚqúÕ}ÅÇÍEºiýc -gdÜò;ºSÔŠ4½Û$p弸×V/r€ -¤d,%f»AðVf®Ô‚©¿µ1Ö[WR¾Ìeh -ïïW¡Ñr ‘ÂsFÞh}‘žb¢vk’J¹_]d…rÚ¢¾àÄøš0DÏÓ??†D ïÅålm<ÞAG`‹Ä³nΟšN!c¡ lQ؆£³£BãqÆtä‚$ŸmH¼¹÷6ÏÆ4KîÝ@p…W_ãÔÛî?!DX?uŠ¬Ìü×Ó\Â¥×,×+JÉBêOrBx_÷¯úpŸx>åÝVE ¶#í{k‘äd’²z²É{³PΤo£<ÓcË길¬¾JŒXäMGhÍyfœÊ㳕&=½¹ð¸t–ò¦…9BƒÏÊKª™P¹()ÏôÙ-楘ÝBü. '©9®=ÇßiúΫϸGÏ+À¬}£ñÝÛ8AÎêR›h“€¼3P§ëÒ`¿ Âêy.à ‰cU9,£6ÉEÐaë·>J#É­þ姩Ó#áKm¤¦×Ã,rνÖk_z&ü”Ù÷!Ž,}#å‘ÿ†Ýe›É“«£ø¥Èø%ÈxÈëta¼ÄÞ­¹›æ"W™0ðˆãMŽ¨Ñk›È”ÀK¨]4"†|x²ò#!|(&þV»3ÙÇ=½Ø‘sðšœtÄg,µè¶3Ä -ÉÍ«Ç:"Q¼¾YS4¼¹fNóÖDÇ¥ã)k% 3¼Lc<5ú=„KƆ{±5 €„Ýn'ó#èS”ó6°¹.j†2aê ©Ù¦W4ù_'ˆÅ/zŠ»~b_EBÖ ÂE„_åØ«1›-DñfëÿmǶl†Œe)­ð×?úèm²ä(Å;#/8|’|€û‘kÊ_°«ŒgÎÒc=ÛþôLP ûÜñȵ[e$çNaÂò$6k¼ÛÒ¾AZÏÈs˜Á€Ž—ÓÓ)Ð[­´\$¸t ú -ôK7nŽ)²èj柸ëÑIeÁûŠ¤¿®$}åV6ú„ðõûémµ~¯ÈH­cáHd²—^ÿ ãó.ýÐõ·:>W"dgÇäeSˆB|6¡{rá:þJÐÄÒÙ:чTQæV¹Mõpo|»zb4HQ‚ã³îªIeÈ‚Í®E]?I?㫬Î=èÅœˆo8NþÇœÜ1û' -™[šbxõô=û€¨…è`Ý\çÙt¢:4ÄxëïÕIAÔP'¦ðêµ_?¹)7¦o@åðÑÑ¿•þTeª‹)Ç MŒ30>Å!üØ'Ž1uäÈnŸžÐÜ'f¯ íâ3 UúÕØdkÔ/ýAT¥|gŸ¡ÃDC:.äMYö©Ò\‘Íü„ Ð%ÎÏJvÜ¥!À]˜ž@§üQ W·y“ØQ^¢_Í_N*7ÒRµSUº8ÃÃD ¾$<"ð•ÄÌA/±ò;2‡‡W(i½ªŠ»ð:{W‰5ßRä fЀ¤ëø!Eˆ3õª„1ENúÃ7I/ÃÀ#X‡ðXD]Ý؈¦Ê^ vÿ!ÿ=M*DêÑIEÍ—ìÊê|‘;àë „\\,m é²ÁáV]…)Âå5vÎπŖ7ëVª¨ç/x,p_&ö¬œÐŽš„2¦÷ûKʃŠf¥i6E³Û¬?¶q¦Î&0öê(Gþ›+Q¨¾ajão«<4Eá…D—º\èó€ÿeÉÜ;'‚_“[Ì Ê•Æ˜ÊΓ‘‡·_ôlEÐ7"ŽD@Üý¹â/lE?RQ¢ uQÀ‰÷ú·±G]H'êÑÉü­8t:bþcìŠØèK˜±¬d! ŒbqëUäRp5É'?•Eº:F»ïôQ>!ŸÛ å`¿sƒ³¡*ÉÀÌÉ¢^ 5vFÿït· c0uJ[)š_©]uàâ¿uÒ¤#ƒ7“:å˜#Å -œXf®  Ý§lsögÜ‘Z9_·T<‰¾â\§ò‹R‰ÈzçN_LˆrF"*’R§´›vŠBµ"Ó9ŠHò'ê®fHr—,ú1µ -Z=8†®ÕôÛ5T4ódæq ƒ ®Cû‘(xŠ •¿È7[´Ô|üóq^ƒå¾X™Û `oq¤o²á¨^¾Gïn;¤Kn2ÿxä¤ß°jâÜ:Z‡ÚÛ ÜU~ |d<¤’$>1o2æFËÜ@f¿ÊvÙøèlû}õ™×QÞ’‰æL"7š"ö*<Ãß°•DOŒÓ3Ò1EÏS{‰ëýŠZ*Д$;g©·ßÒéJ/0I£¨èˆT?#5•>aF 9ÕŠì—dªÅÝÖÐñ'ý^~g2Ä¢]ÄÜ‚9’CúVˆ ’«C£Ø‰bHú;+è´éÛ:{å°)€a1è…™Ìyù½yC\ö´þ‘U ?’í‘G¢{ûgòMІ)‚GP:tû)w Ž>| –væ/oð"xš Ëa Žâþzíæ ÃdI»-yµM2¨â£ÃÖ$¬ÈWÓ9Ôtd±·Ún&àSë!WL³Š†öø,¯€ìSöhø;¼]h=œ*êõF¡%émÁ -¸RØXÐêúœ¸ÈƒvÍÁh—Ÿ"êbpœÊYîØ=-\iJÅ6Qºôá‚I+?ƒ‘‘~v¥×îhe*úÔÉ17Ö"q}}éÁü«XÕ"J·Gï¦é¢Ü(òÛI';ôÌözks¾Ó¥±­V¸Úg½Ål?u±{ÔÅRÌfè`„”!¸ò|k/Ú„ùòX6ïhq…6ѾíIµëÿ,àëüµxfÎ*·æ-¼¦sP –Õ‰flYý¶} 1ht¸Oû›9Üš ©ÖÔïµósû_ Êº!ŸÀ<½ax‡Í|¢…?‡ :‚´`ñš[ï-ø³&;Vð+IÀ`¤äëØfÈ7y:`jd9#rl f+Ò9 Ö ªldÔ4nowÚâþ”6:rÿl©†ÌSúI’Î~0½ìßAÂê ¹É8EïˆNCGº¾aíëâÕŠ˜ºú‘ÐwÔµój¼¬=/@`¿ŒË–J"ç-K,pÒÓø4¥&zÂú -ï}_‰Nùg¥)U*ÆRàì…×\ÀÌ’ 7¡3>¬æ4ˆ±€l¸ø#@\<~(º>6tÓ¤™=ò¢Adå‚ÚÌö.¨ ]Á›«Y•Ò36u™°°ØPßòwÙNÛ:T³B!¸¢ÿ0I±qÙY[ýžgÔ(Õ(*4>Ƴ튳­"(QÓ; -Ý<'WÕöÄ/Vh¤&å÷‹Êä¤Ä, ‡eDqÙ¹ÂjÅ™«æQf8`î¼¾Z£·¼ã—­ÜA4O̱2T’%-ÂÌi­ˆ«®»Ö){'ÅXîõ!ôN®ùÑLÕµäñËܵ%zå½\atù— -évMnêˆÂÑß©æ;ö.g˜UdÈ#Àgô5IJ(<Aqdí^ôüQFI¼[Ê‘’dF-ô¸>l‘Ï–,¬ö}¹mÝÂé›Î2Q±$zEÍ€C4+Ù7ˉYZÛQ¹˜VuÓ9‰(Øõ q$¢¹¤îj«Sˤ·±1t˜£°mdî‚̾CBLÿù3™;]=½±ëYŽóI’ÆOà÷»x¸º§:ÏRíå0ÊüíûûÃø ÔËÖ„Í(V°z]«b -øÞÙÇ8TÑ‹³9öýztÙdÔhŽŠŽÿªs~£“6¨B3¬N± 9“ß x¬võ1"à Ú+›?˜A:tn£›n“Êææ\Ã6Þ, ðpÐRº ¼ò¢ ëÀDÎfÐiQ¾7‡·¾”ßÅXü~à!3ñ×ÚVîJ2‰ûàs–ñ{Ï H *žÓØÅÔäÌ:+ù3ûu ì\ /ªð»?ÓPþ«µHü&N:Ĥ´t bÆ:§6-üÐQÖ ïÚôFÓPZW#¢²×ó‘oL'ߧˆºqºcµð'ÑýÛ|%#tIÀ©T ‚!ÐäšïZ¬OžËûw@DšÿõØC¿zÒا9iìy'[œµ¯„{"mö‚ÒäŒ]*!ÔéÞ -b1EaÓ9p)a€Ó ³ú¼îÖEéñ£ã 2WžCMø¯î©ª¢ê¡æ, ‹M²-..#Uȳ@¯\Û)$ÍÛïú7rœÃ7X¤Ž„jÂÕ3Õš­Ž»…¸*Eh¸ã>ÔMƒW“ ÎÏBa¥`8#ã#'ÒîW= $/8³Aït*[Ë»-cJ–[r ¤)"!‘:v% †}™MF4þßÌ1A¥Ü{üb(+À8MŸ¹ýÌè„m©ñÿðhúƒ·bÔ¾{?gA–‹‘J¡¥:ì|¤¼Ÿï3k”u.˜ÃöFÓÉP}r{ù³ŸèH/êÍ[™Ñ©h:êÔvEyëÈQVZ«:æÏ”Oð+)òTùÐNž;ïåê®rÀ`>=y.L(Ü”ja0C7«î$,‹=½¬ïžj’Ök—À²‹ÒìD•/^0KºÐ&Ðvpí<]î9øÐö-p|µÎcåLFum#'÷“ÏCÖ|(ÀñâìíR‰rùߺõfjQ'I*i•e¿Çûdw•‹¢F‡ûmzfVI®nÔ Ô¥F$êémàÁ³æQ;Ütáë~MÏ×Wƒ ‘| n;¦i¢ï¾1 -ÕT0*ÞzDlYeÄ;'ÁˆRÏîË×)+ ›¸ì>+?8üäžw‡…Ýúè’Û( ±ŒIƒC\”ÏìNUÁ -ºg¤#ÿ<ÍK˜}ïµ íý~Q°ä7úÓÕ  c‡~û¢'¨<&I@ÃöšÐÓoub‘utGp rˆE?²œã‹ë™J §™ã^ ¡.BZZkmÙ !ݯ¼t ÄaUâxòôK\‡¼ûMq•êïdWtg/­Â|·ž‹„ÁX ÃÏßìfD‘n0¢¥™OÈä´ŒÊ+×,):Ä WåŽÙ%½ØšõœíVbT—çpŸ–&²nÆú­Ú|5²à=O•µN.²g¿ãAÎÙ[T‘h)ØnÀjþH)|º¢ðÚʱ*Ÿ6üüd¯­è^(A¨­« ¯ß?2›/Óª[NÎ¥zqÿéñ_.ªð%pg‰@1È+B8¥'l?†ÙÇt¦^0¨•|o“GúC_ ü{Uc.9[¬»aB6 xv]ʫú^ãçõœÇSí]Jfw7“yÚCSŠ÷Êö¥£ÕtEÔé».´ {Y]lÒÈýåÚä#¥,+:­lÊè÷žÔ6ød#™1Òù¼þXã„`‹Ö;FÑdhMïN`£¤L/#¥¾‚—VˆÅÐTúà8ìÌ›‡»ˆCý;sðÆÇ&ï¨&Š9D›A3¬ܦÔh*‹¡Q4cÞ´8~ŠÎ_’ú -D»¾ 5Ž½ss»ÇÕ”…´ê†¸ïºÇÈüžöY2·(ðâ·¢®™‚lVk 3ᨗiò¢šØxˆ.'ÃÜP3®’MF¥š -ÈŒîYPÂj¬Ä1Ú5ôîqfQ^0¡ƒNä•ê%ÃŽ;„[vb8HÍ f1—U,tÃ8Eœ*¥[ ˆªôðÒªÑ÷ÖJ®ß¤ä:G‘ÅA&C¢\â•ñá»NÒ§·¶ä{¼ºœ¦¦®¡x•«!&Ž €»ÎRUÖó# vŒ!Ï0UA}:ë”Ħ)âþMN|,/ØÔ25Q…*¤ -l”#;¹èØñà:8CÈZ"d‡k6"QAw«½æ:|W‘Ô°Ë ->¶—­ÚåÏ KiõâÒý`7D¯ß:ëöRa~+¾òÉ}p1XËaâmCb*ŽqˆŒŽ--â(ë0]¬J{3Áâ„ìI9´ýTŽï•¸LAÿ<Ñ!17Y“ŸÒß}3 &þ‚&“ƒÿ÷2ª¦‘  ±Žßº£þÚ&¡ ÖFd~øð±É”´a%zª@Û"ó"ôoÚž×g&˜ ¢ ÍmÔI%`dî²h\u‡ØœegNz—ÏŒ‘š™"TM1›Œ ‡BŒi>a¤i½Í6=Þ)ć‡ðÙ+·°ý–Ó& M±–™k£Ê ¹â†¨\ã¥d5Êì}†_Hܳ2k×Ràí—jÂsZ‰ÜQU7j©'Â|èB‚ÔW‡\28š -ú-£k]yšzÖ=[ü|“^›Ls‡; lÂõÒe7r·†ç3¡ïÀ€Î ݈À)dJº4XÅ‹[æ¼Á(² ÍA›È7[$¦"fUlOÖ~6³kZlAyÍ?ø¼‰Ç”ÍFåÑÿu÷'ÔP¬GZTÑ2•äf'e¿¶ÓqûlKkM -ÔAÊ4¤‘:½evÙ‚}h±)¯½iCÛ@È â¥þý®Æô>ùRR³ÚÌ-”Ž™'­ÚM°o3Ý&z#¯Ð‹°ôW,ôŒÈÊŒö€(2Ì› XÈ)ã ü®)œaT­‰€ì®-I -ä8q­áZýá‘£á:º$KÛ°`ðŒ•|‚E˜ÝYîìi]‚™HÆ·)zšüìNà&ø©¿|¦ñص\º2Ù ïΧ‚ºã ¤c}9,Ìo¸ªv´*êMÊÙà*0õ¬¾ -çT©9‡¿5:Q Ÿ.é?ºa­1ʉ dà¬NæŠ|#˜ÊÉ[Üaò›î“_dH-S—Ó†<àJ=‡2ÒV/F!ÉMœ‹ÆÇLn'V¥SZ'­e9_)…Ó£¾íyšæ‹]–ˆƒ^^×h¡‘Ï -ˆVV¼Í"Ñ^TÃmLs@: -0zÓn¤¡„¼õÍäÿ{{³|H·ÌHYNÅà¥JÇ5 ©Šd90Þ2ïI9æÅÀAß‹vzZ&‚$yÑeqÛb‰'C&ç£3„°ë0:-ÚüSŒËphá˜j¥½`û!¾Þ&ÛÙðr¤`¹ûø,ëÆX“m%uCÛj:/çú&åZfTûæU<ô—«—u[1-ïU'ˆžùÂeód$pG·€{®C@"j3Gœ b<(‹˜÷ÿöÛÍåá"¡d€`{ëDëwM_ÌÕ[´„tø º¡sT“æV·\:©U@œ×²3½òÉ©ÓJ¾-Qo·O£³Ï×…ãâøæ°‚€¦RDQAÒz ·e1Ódëµ0D>šìÉ‘ºsÏ£·}¢.š©ù–¸ÎG)ú¨†$…]’9ùÌuÔH4Äw …êøëTédNµœòåÙMuïÀM«¥š¸ŒïU -)W“À~^9à)‚† -x‡GÀÓÑøEª+áfÑÚ·¸¢z.ðÇ+W¾÷? ³¡«@âO%D Œ”.AXsª±kñv»üG‹Q®NF"·”<Ð7w:bX -ÄgȇìNP<ä$8M«Vödwµ+†)”S óSëø-<ðû?6Xúp/ 7²ö;¤VN/CõÝ1†"±žMõ}Y7üQŒ`æ]#€²¡Ë !ÃÚÀ^e&¼²Ô¦…|ìäWûöMßY™„ض:ÙÜKaØíÊjŒëwÒC<Nt÷‰Ãà fêÑ o ßQ:ã­ã¾bø›Â€²–\<¸hv÷æ‚p¶EçµkMõ(¨>œð‘«¿öKìpZyÕÄãfËþ¨Ð|ó¹jHŸOðˆ½¼›âuXXnú«ü%aðnWɱí\OŒòñ4Syf>Ðx¿×±SD7†£wÝ-&Tw*®¥þsc9‹Ï6¹‹{x‹\f8_{ìűúo×q²Ô1:Åi?Ôö4±ÍÄl¹…Cž+š3XªW•IÇZ5lÏ)­åÜž@$ÒNõ•ó‚R4h 2 '­e ¸²r[ícÅl£ò?ÀŒ%uä•éðíS‚ -Žì\„À/Q̯í¢æѶ©Í`Ò-‡F8Þw¥=)üGD0Ó—ô—tٮ͙5¦äÓ¶¦ã½AcÇ!8ã§ô°áÆ´²ód³ñ4mÅnÑ劶®™›xµÉƒ¹ æoÒ7¢yLGÕ³rÏ!\Ö@«Š«jRA\T¹EÚáƒîóšífNñ©¡Ñ–éÄßÚG`)±$yÆâ.úܯcº¥@r-jFyâRRaXÐSÕš¿ÄÆ -KÒÄ,Ûâ—ŸòªC¬öÖáØ|;L \•8éì][)Ðq=ß|#ßH[öÀ¿È]€W©Ù;ke+þÔŽùEÆk I¬sL¤ýÂç*©£'ºÛ»'´¨ÿl\Iö/ôÓKhAR€uz|õÜõ‚Öü´Mjž6Nç_šù?tIɨÈ&¼äBr¸ŒÐ¹Kì–~dö¡눱&»ÐALᶓ_c0ÐûÎÓ4Ø›“"ÆÑáh nÂ1³ùÌpÚ±€¶oE˜ £/3'›-DîÜdª U¡V8ôµ¨T¯ý.›óIfSl†jiIúh B²2äÂr¿KÑò¦ÒŠœëÄçn]uŬÆ``íqÅ4YuEÛm‘¯Å¶O\öí¯Ë÷’3„?¨4Ç"bñËI¾‡BöKÂ_­å ’ŒuæCáüeX†È,$I«l®YàÇŸ {#Tc¸>dUkÉéa°€~!.•—mdŽµ"ß&ÞÀTZásrÝ¥7ío¿Yð(²4¨ì‚Ýÿ˜ †gª <åáWpãµØœ¨«UŸ‰ròF^ýpÆ¢ôÉ+1Í‘†È«±ævŠ |Vý&-á'VúéÐüâúãm“¨ÉA‰Ä%ña[ÌÎÙŽ–YÝñžÅÙ½(áB5Ç8–åÂp6úÞ?âÕ€ Ftöç‘n̸ÓæÃÆ£bàc ›5ÖħyqÛc$»×…PÝÎ#XÜþ‘rW{÷)†8•Á£*«öþí‹uPB[GÝΑה7MÖüg0éÏΙãM¥«JÞÒ:ÙqL€ T÷®ÉŒWÙtÞutßÂS¹„ŽþâLX)'æôó:K^GߺÃp´äµ7xþÃÈdiÎ"®SÆyÚ¤À¦Õ©€åý夻ÚŦ1«ÿÑ.ð^Ltµ‘% «½ -WLàÉ-e+s!S¾oŽNH÷Œu×\™ýák‚øNTwˆö§7tó4Äå­D¿5­Yü j«ÞÃzyÁe~ñŽ«br>ˆ â5ªÞö Ýûí¶ú©÷JÁoÛÙõw°º“È)ËÎóÈ?\Ó/ðy¢Êòì£pB¿J ¨ßÖ4X –‚È­µ³àîbâᤛoM]Qaó‚ûåùñ(N»}³g^¦D+]ž#„– -Ž"(¼±t_£ÿøL~?|2…†ÄEé;G&Ø^vùU‡Ež!»å’q»ðòºAÝ”yÅØm+ÿÜ® ’ VKUx6{!e;–úsYîIˆžÅŽÇ¯¼L"‹n)6¾BÇn;KV·%yk×Û;±êp–Üs·;DkÎZ® ð¤„Èdx`´äÎtö4y1óÂ0 Ï\Ãe>léÙŽX,€‡<æ¡Ð˜lïe4Z¡+à ÄT¶j|0 Þ²CË^P¸U—ÒÀëlœ%è&0œ I ß1æÏæ˺#öš«„ÄÒ³´]²>æLšÚwM™2‹X,H~öš:4öµQz¼òN¬ÿév³Þ;A`CœWjŒýB¼$WÛ<¾8¹ ¯{ý”õ/•R‘¼Ôé—¢{F=;©*IëÐK™BžR•Ð¨ÔÕTAéR‡ˆ„÷hYЂutBjé6!§A0ð»ï-f-Õ ëÄ_/DDJ#7É,wÇH|Òùr€.HJø&= -êjA u"H1xNŽÎxX$²ùÐÆ/té1Êø§á½M ¥ÚjMg¨þ.rÎ&Ÿ„(OÖCÕ”…uTBP×?ÉŸ—ŠSc.¡<¥Í)Ûj‰èÙŸVï¥`sÒýpã&= ÞS}ZŽ4«¬t Ë°­žN§¢£…àÃj•~'E C~ oÝ­¤eÂý&wBóî4ü+™6­·³!5Ðf4L\èõ}Ì—Y*õJNêˆ3œÒlrSßA§†èZXHO[pôµiÿïÔ†ò¾î$Œµ"Èw7{¾#ç`‹ v,¥èøÊð0w¹ +T0G_Lžä…ʾÓI‘ÿ»éI+œ£³àí¬7@âL¦Xí8ýl¥Ñï‰?Å0‹ë‰WÅeß«Ô±&d®ÐI]›ËãpTšNÝàîÿÎßtpDä$1×7S.ɺ ”N7È©§¿‰ÄïÿžD{—)ë•·™{ôUörš§iy~ÉS -HýðÈpìŠó®}Õq3Âs¢¾§ùŠ¬ëúZ‹Z€i„UÛD¢Ýîˆ##ŽïÌy0×Ä°Fê»H ›·bßÜ&³ªw+­—Pÿüw ÞÁíFÔ@0û& Kƒ¡ëwXaäa£¢I÷<Ä«ñ¬°×ÊÒÓImDpïèA ˜¼xØiÁ‰]ƒ’BXn=òˆQÎp¾f UšGh4ÓàžQÓŸ†Ž˜X[Ù:úCøÙÍüçÔšh[×5Gæˆi(ÏÈî†ZcªErk’Ý -Ú—3¬Þ&›L†ª{ÚÖ`¶ÖÙFA)HVyÑؤ`Ì´±Ë 6 Ó±×So܀͟µ†ÚmøÔ“œÎÛeRKÊ3vAu&²ñãq½¿®Í–•§p èeHî|sÚOOÌ”#ÖVãl­ œ€oþ^Ž£-ã…Œ(sFéÍÃ9³^²Äì2PXÁ0ˆÈÅlnÙ%ÊñÀ‰DÞ˜/£¢åÍOQ3ò54gzÛð ƒ*ð§-’œ„¿(æ¼òŒûÚGƒ0Ý%à ŒšæK2wÌS› à~$”©ÎëÙöƒ¤Pƒ_(î}¹òvQôØ-ròû”i¿ŒzIزf¹,Ô"œÌéCϘ;[2¢+Èýh§ò¨†ÛñÄç_ ²ÙÊs‘<ÇíÏü-/^4‚ÔÓî"w,…”+¶Ë²–û'dk;joÛƒÈ}%ô6ø™ªó•¨o®›|þ%®×óBåT¡Ã—:%%µWSE«·Q4ÔRW±ê ãÓªá±i«²» ~´û,2¢Œx÷®ð½ ÂáQx#ÐULzUÊ}j6µ)ŽÞa˜³®‡”[úç{5!æ/Ó\®€Y/í¯”ªüBº¸‚ž…nOßÆÈ:…ƒp:ïXT½#†iþð@°5xn¨üÝ’SGwžéÕÊ4j1z—LU•'ãëë8û Ô„%VŸæqÚI2™W§òÛ;K}X -²ˆç„yahÒMœøS]Š.yÇÅVáÌÆOËq IåÖ*n¬­4Ñ;u—›”Zÿ‡Ð96!º—ý¦&¬d ø[;)jOÜ)[Á*\õ¶í¦ ¤ÛUt ‹›•88â.½¨Y†~0ÃËcâ£ó+˜€'Ç/jшD6NòŽ®KíbS¥¢÷N‘—„ÓqSÒ55YQác&äAXX1Éîw»$³V4éN„âáÄZ{?cL ûçž24RyAt`ÏX®ÍÎ5Sorظ%èµÛÑè£ä¸ET½ˆç'ëî{€é{ù? [€å&a’ Vˆ„zsöî)/äRð@{;–Ÿ¨qeëš2VþÛ‰y˜*ÞYÞºŽq9ƒ¹’¿ùvQ‡«a­«¶š±Æ07`ÓT3¢…Í…ãã2à& †‘'k¾JÊN… ‹ŠÀ<£ï…¶ªZ9(?Lû§rNhîÞn¾#õÍÚG÷Ù—Äv++ 3^C®˜hî’J°®;râ ‘kqÊM`&ÀuahÂ@øg³Ÿw.à˜t²84c°|â{ pM²ÂN¢ÒØ +Eø[WºC 7Ýå¸ðì?®lÖÕ Ûë¸0à O²`‡fÀlx;Fñ| ÔbÄqÇÌvré|áÿ¯àèÆî`f ÉCÆG)öº+‹]8»á¥XDZÑÿ…ø‹ ÉPŠúËEOä,½3.T = ú ïÃ@zPXa ŽÙ멪GNx³È™£Ò¤C»;‰2J~ÊD®6%ßÆ_j‰Â§Õlè2£Ì…ò/×]ºÐk°EædÕnêÆ×) Lrælò'ßÑ9öôL=¸Þgª.Z -}ˆ[0÷‘(Á8žnü:y ŠeY5íæY“ÈhÉáì^ \i܈­íNU§™,0<¶’DQ9"ŠèX>8¢}Š>~tÇ4èŽc3fOÛ3ZÏ ö²-Üu‘ÝÖ‰iï¶È(wÞ Ù•Ã[®sPúôÆ–œæoñbåyÖKî8L2$|Õ|¥.,Ù›­Ï=´I½ÕŸðùê¡Eöoɼ§ƒ`¤ðzc˜ýB‹ÐäYçCËB­ Ý•X¤v,#æá£t)t6’üYŠâ: -BÖ³ÓÄìu­$‹7ýÔXêá8u³i×n>´¡öß¾ ·N5EqOƒ˜âÔ9W·G®žXG§ÿÎ^]“ô÷%n8Ø\ÿ‡+u¶ûq«.ä,‘¬õ0‚ín-óËNÃ9EÄ*í º` ÿãæ­.ÍèX>箚²\c`êhLL­’ -˜E ²7ÔÖÚqc354·¾²Y>Ô-Š?ŠHV¶,¾KæÀ½ÒÓÞdña`ÿ{#Ï©Êd@O~AKok¼Öþ¢å€Ýq*UÎ]|dNëoÉÑny³©i¡Uäû#¦—Ã\¸›ª–tÝËßðÆÕNkäáÎCƒ@VMF©jeï šû$Ñau‰b|ý@dÛ]ý€£˜¶û¸>T} 0¹¸©Ó4ëèCV7á¡à£m} Dp‚¿Ð¦4íg"†´¿*…ìÞ[õ¤½šBìÔÂ<¬Æ:Raïö:‹ÖÌVÓ %„ˆÊ£~~Â7Î…À=L?  §9.®†«Àõãé­Ú.8mÜ·O°˜%Øö ,xÅ’ÜÀ‚ ªU{ceö—É ‹õa9o´þ…÷[ q•–HK G¾êJ\_HBVzZ„ ¡:ì›t÷>æ”måÆÓO&,~îÚ¼î®À\Œ*œáKÀFö´*‘M¿WÅ¥í -\Y(šõö¢â»QbÈöò$Côꃊ•êsŠØéÍrŒpbåƒíÄJ¡¿äï{†Ž>ÈS›Xf—šTug¢µ’ª—u왾¨¬…ª®”C“öR;¯%î/<[vŒ‹› â)Î ?È5·G…´:JpýXžÏ¡h`Ç”·bá6¥-€½¶Ÿ–ãÛÀ1ÚtÑ}<ÑÓD -endstream -endobj -1560 0 obj -<< -/Type /FontDescriptor -/FontName /ADYYFI+BoschOfficeSans-Regular -/Flags 4 -/FontBBox [-174 -300 1295 1118] -/Ascent 769 -/CapHeight 733 -/Descent -198 -/ItalicAngle 0 -/StemV 93 -/XHeight 523 -/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/b/backslash/bar/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/exclam/f/ff/ffi/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/question/quotedbl/quotesingle/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 1559 0 R ->> -endobj -1561 0 obj -<< -/Length1 1664 -/Length2 94813 -/Length3 0 -/Length 94701 -/Filter /FlateDecode ->> -stream -xÚtšs|dÝ–°“ŽmÛ¶m§cÛ¶mÛ¶­Žm;ÛvÒqòåÞ;÷¾ïÌ7SõO=Ëkí}v:¿"!S¤0²50µµq¢a ¥çÄ´u44“51174VÔ·q¤‘pÒ·27Äg¤g`Æ7pÇWø6vpú—¾˜µ8$ ‰ƒ±¾“¹­°¾“1'¾¨ƒ9¾¬¡>#>'3'ý?¼Y!Ið…lm\¾½þÉÉÉ„ÑΉŸ‰–™–™î›¾ L9ñiôñi ðM lÌÙõiÿ©!±1²µ¶6¶qr„d`Ä72ÿÎ``ljnI÷Ú%lLlñ9þ%6r¶û·ê;›ãwaøä*ÿõ‘–™ÿ»^#[+w|#cH:[§ïfñÉÿÏÿ§ƒ¨³••Œ¾õ·Ë¿lþ5-üŒ ÿ_ãúÿ<ô­Í­ÜÿŸÿi¬jlnjæ„Oþ¿‡ú—TÀÆÔÊŸ†á{Éþùú—ÎÜQÔÜÍØHÎÜé;ƒ‰¾•£ñ¿äÊ6FÆVæ6Ær¶ŽæÿX©oOVæÿ¡S237´´1vtÄgeû§ÊØÆè¶ñ=é6A'¦.,¯(Hõl–Ëé›Û8)¹ÛãÿWuŠN¶–ƪæFNfÿý#à?MþâŸúNænøšôß­1|~¿ÿýIû/+AA[7|O6V|¦ïþ˜ØX¾÷‡÷ÿ¨YÄÆÐÖÈÜÆŸ‘…_ßÁAßòÛú›Xð=ðÍ¿»wÃ7vûž­­Ó· ¾³“7¾‰­ä?6+ >À?Dÿ"V|:Á¿ˆ ŸNè/âÀ§ù±1âÓ‰ÿELøtÑ·ßÏ¿èÛOö?ÄNO'÷}û)þEÌøtJÿ!Žï(ú;>Á_ÄðMú†–ÆNVÆ&NÉ™þ#wøç&ûâ»ÃÿËw0C[«ï}òo 3ó?$ÖÖ%dø:Ñßð;¥ñß𻓿~ç51wù»þ[bú7üŽoöW¶ï¡›¹Û™ÛüÍâ[fþ7ü^ ‹¿á÷0,ÿ†ß Xý ¿»³þ ¾+ÿ[d†ïÊmÿÊýmkkó·J¿O:»¿Ôß¾vúÆ6ÿm®Ì ÿ%ýïSeþ.ÒÎØÁÜöosbønÜþoøݸÃßð»KÇ¿ü¿»r´Òw4û›ÁwÈ¿°|çu2s0þ{¹ß>έëw<ç\ᎆ¶·úËßð»i׿ñ»I·¿áw÷¿á÷@<þªñ;’‡±Ã¿øß.=Cg‡ï‰8ýóLþ>KþÍ&æß'—±±›±!äê’­!WEZfºSZîð¤°f£NëÓ&qñ<6ˆ¡ÒuoºC¢±ºE„˜†(‚1>¨ßGo!thÿ U!1Òžä©^‡ Ôi$-’øRöº)xúÓ—«¾'À‰‹DÆ[ºÉbˆ£kLœ)õÞ•¿­ÍŸ¾?7?UU%†4NW¦€Øì’XµîX$ßJSÅ‘œä  žràE|NÒ…àâªÒŒŸàŽš]½¸Œ¼{”ÜÛBk»¬ÛÏØ¡/“¡óÓ®_•‚ #’!ŒÆÌIvO¾Ž€€ËÇÌéº^[%c‰~T]ä^Ö\7¿jq`Å.0²¶›Ô3¢ú1e®×=”¦³Ä)ÃpèÃë.~ÒŽU¥~(¦vÜ¡GУ°DÚì¯ðì0Âå#MGIXµÈkb_ð™µ&3½"°&Ðœ.wBU‡ŸóÚÍ­»¨û®üŠ:Lõl3 ÄÀdÞ^%Êq¥è‡ÉÜ1ê+BÀ}²Šj”æPT+}†e¾}9¡ãú•?/ÇÛ—ºÓGËý F [Üáââ’vº -”">4Ⱦ^¤ž!!On±Ð>·Á!YÛÂbøÃÒj¥l2(Ô®ž€f׿˯òÀÑBgD¿ÖGum9sCÎÖ¤©*óÉãyüàé×»Z$-ØwÐóKý¥æ\HéÕZøÂÿŒ™_!€oG-Ô2º­®‹áNÝ&jZ›ü$ÎmljÒ-tç/GÓ† ïhfÈöø/(îÓ461†ûjlBhè/ Æ]‰÷,“ÍéÁAš\—”Åg¥Âðw‡µÄAoÂ=BðËú5«ü³/,OyA<ã‚Òw¤–ˆØ±œ®ÂÅìD‘‡¦XË^6h„ùÂ…&ؤy0DNM÷JßUXÊ ™Î+7+ò)¡ð/}ƒéßá+4Ô*#è"‹(ÁÌWÄ¥ìkÜÀT—cÕwã-«¿BØGv$’&…Ù…nK–~]dÔ¯Š¤ƒræzq-O/Xõ p²fb¼Ù@JÒŽîó:ª&¿&› ¦ÛANwcœ]÷½Ä"–fßÆ>§Îª¹"èÍxkJãÜ>À×7ö ³©ÈTM»„"/ AíhÅ­D?À:³¢|IѶëÄÑdé,€¢ øòsnjR"« @„&¡ díìgÖ–ÅT¸Ñ'c{vÊYT4×óySÆoã -g©?»dÛŒÍF·QÎG‡Þ†ÍÜŠ«Ã]\ÅdZ™Ì>0˜ªF È‘` ;5»N7÷ËL ``ûоH]dºÞ‘&úz˜ B¾ƒ½%_|¸Õ_Öµ¬Ô¤“Œ-äç'—0Q¼Ì6:Ò[çK9P×åãq˜öTáuG"(p= ©‡ ä¬t©H$E÷«f¯·”°ˆnzT‚m^KŽkÑ´d8/1»L5TÞþ€^vuZND0Hi \ÞŠ¿ñÆOXz‚åI‹%Üb&í…ݾ -º‰9Ž• uëÚFs& ±V\1˾ÑPÇ‚_ñgÍ ÃI©)€u‘$ðÄMöòey£‹“Š\|O±ÿ!°K’nVŠÎ¾ƒŒf@®¥àF~¸tO^¬ÑÈ”æI˜š•ÃHˆˆEÜæÝbuHå?#¼¦Pµâ‡{—…Ëjð‹õNbÜÖßF,| -FÈHøCŒB1²œc Œê£QjLõÉ×X¦U†*s5dÐïê -§!š¢é šFÁ­Èa¾šfåKþɆöd*ç)¨2ZØ°-yÆÐ} ¶M£¸åÅÿŠ 6Q ÛÐÈá1HãŒxÙ‹7+D8[í2Û‹ëWnƒljm–Ìç!î]ZÓ Î,†Öƒi,æ+Bl*Ð= Þn²À¾;ÿ5‰š~È}é†Æè_9ÕQdØ .Wxü.Ì"î²cë|X Ë>Z3`U‘"ýe¬ë½4É1æx.[7ÚŠp$À¬TÊ“¡,b†ùþ/Ë-“’\!ÛYŽ3Ðï?Æaµ[Ôj”b#ÓRLEZÁô¯U’p½füè «ú Ø—çV!®ž1ËóµGü(pRŽ8L³JÖ”Ô¯ê@_ß `sx–ø#¾nîâx¿|æˆoX,ãÕâ­î[¨î?F·Tv˜ŒYá+w‘"‹†¬v¹Äjª`ãz¼èŸ¬…V(F%nž\²A–ç^Î3AÉ3?ì”°G‹GÀ6äç?õ íµþpŠ˜>½Ížz§ÃUªF ×õQÆÇ¡°^þ-¥¯aÕÇ]†fÈ–k(=(‹£tÁà2m-û²kJŒòÔ¦§ßLï/…¶"}ÁÁ~yØ&䘸üæ:&yoi£¤Ä%€¬¤?Êî?õÔß"X¹ ±:¨æ1˜¬ -c'/ìGõ|+Üwï¶ÔW¿Ã€Ïý׈áôMhÏ„v¨¶c•ÿpLçrñœðœ„îuÎUoRZ|Ïêûeú_s«´Cã#62|±Ò“rOãÇç¬=@ë¼ÎkRcv–¡ N -í>ùã9U"Bˆ8ÓÐcîï$Hn[Ãã}¦Àª;°8uØUät°Ä -ñGåEW˜uÚY@oÎ)Yv§WQÝ;ïå;Â*AN2Þ,]èNÚ{é‚qäè…:¨áƒ‹¡kç”%˜ -빘—º 9qÙg#à5,k¿»I¤EõÈ„ ˜$Ÿ0qC#¢ó@gSˆt` Ë$FÜ/¹DM‰:â)9:*Ÿm–%}æ_„WÔËó𑛥3?äôïðåÉղ_úT²Ý' ÏÀÊM‡ñùÇɃ5VUwjùNm]k¹c²îÅÆ›¦Ââ°ê+ìñ¼ÆŽ Î4”¯qÁ &JQæÄóï(ùcñ>Îs%à—¨ˆ¡ýÙý¢bìtßj*Ù^ij” v jn(¨ûÀorRë"!ó‹žÔ²k¯I?ü:Zã$ºÁé$O·s÷å¦w¦€E!o,{êhÒšk[MUU”ÃBÕÙ¯{©„ÍŠj?Fì‚ÍUK²»hÂ{~a‹r|ÿ)P8] ÿáìßµAC¬VèQÅyˆ}ý{œ”ofµSêv§ãjbuY‹¤~+®IlIµ c:=¡vÕŸ•M¨\$M…ƒ{·¯‹Ë\š`tùu¾ºÞ¿ÙC^BY¨b,W"q…¤;•Áj>{ñD Ì¡6ì03·HI6úBLæ‘ʸ£{mñìX…æ³Ç´ŠŠ¼.m=îXéÏÆð,!œåýÅXß6'…½©‡ís±\äÜtàé"ÿÐÈÉçsv.|ŠšmY¤aˆÊ\ba§§Í°GúÅ°Ð5YϳÝû„fÅ;¾R™ñg_Ñœjªý!„È<Õî÷"øÏû0pŠ”$ØLžŽpÛQH½ñ¥ß‡G°*ħ[i‰‘–aÏ+ÒÇ»×É©Âz_S -°±DÚ:´ÕÚȈ×m¤±±±ÅrøŸuå –&…eè³áÁ¶:î€Âœ­rÕxÕh"5K¨é¾†!K& áf6q !„O¡jiru‚ƒ­ô9îÝ9Tsy‚»açH[ SXâÕæ<9´ qç/¾$^ IÜw>ü´ÔPi×èÝŠ¼Ó_/®ÎGñþ„ñÇÈ¢#%Œ7®…Â\‰¬I–Õêç ;”ÓÕð»gÌ£ˆ€P}šdÁ²6Oæ  ýÍ\ÛáòDj'×÷ÚÞuΉò -¡Ç®2¿Ñ¨ß™`¡¶Âœ±¨M=ôF\^|f^¤‰Àι…/B}Ç„áª\_…Z³”‹nу,íü8⪠/V÷•Ò2å©Yü&åï{¢›Z [ܵ®Ïgˈ• ÜQ`V£»fYFîgTEnnB”&ÓÒº¡_{–af³•f=‹Îœ` ÌùoyÓï1õm®ú.%‚#zÇà -Ý4WèÙc‘/`;kYuoºx÷`Šž û­%`þÏú¹çi†a' Š$/M…É(qÂÉU—¥»å1JÅ& -rÞáÎ e¯êù¼O‹@aCaªóObz{Ôv™n¦¿a3¿ˆg˜!’ÅZÎR¹;|{Q›®5¶0RVKFÍÌS@K]¹‰£]”ËÀhcu,ø>i©^:—é@õ\RΫª±jÝ DHCº²aôIKs-"W`1¾Æ=/6³ÀÖj}|†šõ£ÔO”¡ÕÚ—èwcºšÈ^* ß-9€ÎÓüL?Ú“‹ÆEž™”©ÅVEŒ3ÞÊn†\FS?iX¬WÉmÙÎ[8ý±NÁL+¾JÞs³œJVNÎúümL¶är ”ÀJèÒ 2ô2W6A5š+LåEÖ9”x¨ gæb ¦¬ð˜¦†y× r1úö ÖÝ6ªÖ ‘Ã{ÒÂÏŽ§*EZ4øuo˜î¢¥p…Òrý¼°¢l}ÌCïØòl³Ö_â°‘õ,ã^””üïU¢ÙØJWýst=¶pŽ~b‘Š¯DjÒ1‚/õætÁTÍ©§[‚{nt—2ðé+†Œ/ïO;i }õç^3jDv¿Ãâ[—Hn`Ï›_µÝÝ«z‚¥«±¦Ê¨;)>·öÕäÛÃõ -¶AiSß> ñ -é†`ì©ìÞcàŒ{oÍI…6XIO Œ.ì"ïu/\­”÷#o&ܘYÕ¦ómì ðje¤K?é»%K¬ºgM…ÎëNu»Ò¼%´JÑ1Q~"±·l,ÇP–^žì\ŒkÈë."dµcs3¤rgNÍù]Z ³Ï P èà SŽ6°Çþn„Äí¼Õ¢ ñ=MäÁÍàJ"L\`Náï?—7,T†û h=[ŠòÞ½ü³–ÛosìÑ`Fó‡ÕX@Ej;ÞÃY›eyýAñlë¦MuŽ•^sùWðïdDíl¯KlºÈ—¢Ù(#º,°Ý -èm¯ÉøR¨³Ù)ù ½Üº¬5Sº§gP¦û¶S=Û+4 €ŸKf³¨Sb£ƒæÅÞëa³ …9)ë|Í"pòÊD”#sï@ªê‹Âо²SðmT±éA~^íb "FÆÁÀ èEÕzúµ”>‚²ôù¤˜)„·”Ë5üû7ÓMä š¤§¨v"“jsT®üŒÍ¯”¥ÏU–ê{˜Ws½9~P4z{ì))=Ô„>‘àg .—/®¤Ü˜~+TòògÝŽrjüg°ñŸ«‘ÔOn•Û6ê|[Ø5F_Q<ÜY, \l«Km{*ö/U¯Â‚ ›»ÄrkÒï5‰ås:ÍEêH¶še®ê„”¹Êg®¡…‘k)FN(6(ãcIÂÇCºæ%Ñœ.–=ËHÈmPâEÁB~…Ó!³<‡%ú”»ÔIÝ69þ#ä–h¿TWO±õ‘®¹ÝÁ=“¡$. ® 'Ô4“• -VúÖ©Ñ£šgðm0q‘‚ù³P!õ©`½áqJìÕKÜÒ‚ c/éËZ¡øàÁûîd)^»”ülNV¸“ׂ‘¢¼["qe@t> YºI‡ ™ -k¼WrVkªÖÔ0mƒr3bú#lõøºÙÓÎ[p(Íj¬ù̹{ßÇ ¯ÑfÓÇÀù©?¤ÓUâ ¶æ$_êmŒ»ÕxQϺr5ç—­Ù« ¤G,õŸ3׋dˆå…†±FíÅ á.¯›ùI¬ˆB¹€uò&`”Ô²bWzÑÜŒˆ F]O©œj‡†Ý>IIÍ55§'X‡IžÆTÍ®5¯ûþ/V‹^3 -‡‘*mgòœ°úÒ{cåX3Öý)F®¨Š9zU`5è (°Ów¹õü”û(í&ï#e^ËyC€?CM8R•‰›Ü·©HpôÔô!uSΊÔW4á.OÁÑì¡4“rTŽ§˜¥wY(:üéón˱%CÁ…Ðê~`VkbNÐv<×F™ -Òðû’ª˜,«f2þdXŠƒŒd˜GÒþ 5õÞ!ɨCGÔLi…*Þ%mþÇÀM£BÝg->†B™Ü,ŽÉ×|!ùµÅ<>Ü>ùi7oap„䟰›¢'ODÞ¢ãÛ©xœ‰ôP‰Ÿ%Š‚Æ eáÞSF'uV ¾Ìoâ|î©?ïtÇ? û&'Ä pi@žó'ššS©¸*K„ §»Ä ÖÙŒ -&¤å‡0¹È§ƒ‹®8.c[„-\ƒ¬åŒ¤¾v] -Íúñ°ÅÆÕ“É&Çƶ Qž¯,’“ -ÆÒúB †Ìh²×3‹u¸ë½¨dzîoY-ÄîNeëáø²ÈÊ8wµù“9{(1Y×ÀiµûŸäοNx!tÝíËNe­æè¦"ù­“d˜~X¤ù#@t5wZ©”ˆ£ šïåà=WÌ -Î)øA> ·-Ób@{còU%BRsS¡WF‡²þì Q#†$«ñ¶G}²¿eŽÚäÆ+eØ®ƒÐÚŽ1ºEVΈ½ÕÎ)$/]7o ŸQW'Ç¢·ïÄJ-קë›ÝZƒ‡½½xzåôÓõFð[Þt“g w¨ º¤ë?àäê¯O¦ õé|Ö*tcDÇ‹îOìÉcš¦Äá• -—‘xh-Ìæ§èüâijø•Jˆ2¾CÕ°–ñµÅw…αRlË„+Õ'<‚ùuxT­,á;(ß¹Þ!Fe -9öI%©DüŠñ• [”Ø·—Qv°ÜMð£(2×3oHÔfUÓ4Òz €ÿg£ý”$[ hÛ]¤ÎË~X†?óvÙR: Ï6ªäÂõ–]•ó•›WzÄmà1´FïôÏ>Ú£h%ÅG\w^.XúPw&Í^r.†à}øÐ?¾ù-?–õ†8VÖƒÊߥÖ;¶ vï2léùmæÀÓrÖµžã9]§ôØR‡Ë€ŒJVS€ˆ¹åkuHúdo!%Gסdú¼ªDæ"éh)‰-åWEö¦12$[ªåEz2ѺóŽ0+JÅ_ mî®ô˜‰sóØ)ûKÜ"zA%ªêœÎøJ0ÿqÌÀ Ÿòb#jÇ9aè»ÆîÄ[[€ 4w@ý:û’4Ùi¤Ët¡{ŽÓ¬À²ˆY(®têÆxÐúmò~|f„[å¨r»EÝÑpß°pß “x(Bé=;h†^,#¤v÷ÎR­Ãz”¿G¢TËh½‚oíK¤¯:¼ÂÅÄÀhrÛ™ªïäx^mñfd«4=b1âÖ$cà ÏÛ¡’R…¾¢‰U¨?Cewc!üõIHwÇ®ËÁ?Ð(Ö^”äG7.‹Í [,)âí:‚É®ÅéºEYmŒ$-ÎÇò«Ó‰z0 -.ÛrGÏAÉij¬í¸W o/³J¨Œžc<%MÃ¥‡ ŒÀ¬€žä#àñ3‡ ÔL·¿tm’ùÐÎjÇa s͹§y $tà Ó -œ •3(§‘ÒYFÎÞ6¥UnéKYÖâß_§þ4nqî§g²G2e¾KGRí¦Ô¼¤w¢ò¹8ñòdðËÏÚj,ÇBºUuJë×£ÑãUÖ_`â/º›£ÏnËÆꪷsËŒ»í=’ˆkNê„ØžUÖ?äTÍxKîÕaRfãüåÙ‰y)Ô@3âlXº•Þa‰ŠwÁŸrã.¨©„tçãˆb.›2 °æîõó:8vÑ~É@ôûI–€Ù_À]卑% &Tß¡ à).ʪû\"ÂuÂ`Ôµ–Ÿ£e³yÆAŒ_µ³I¢ì•å -F¬àEÑßI¼¾<²€÷¼ÝL–öHU·þ®D†³ùŠVI´ú¸Q`¤%xwÎw&9z3ŸÂãÎ(ÚÄ#¤¥þý•¶áë>>Ù2^þÚ>³W€qŸ_—ãnðÊÑN€¼å>¿2ô沚ü€"»îÊéCñ)z`tôc -ߨÃý«\JÆáŠ\Z¸¼?©¡>:ƒVn\£´ÍÔ Î)S–½j; ‚#9øòýwð¸e»YÐã'?$·ÞÑØH Z]ÒùmÜ{(ÎGïœQÝî?¶'¤Dë—þ,‹Ë¡»¶Ilc×°mˆZ+õÎ)G_Û2d|þyu0ž ¿âµåªK¹™TŽ,¥ÿhSm©¶Á3¦ucªeÓþæ*õ ÔÆréÂÄ{Rm71Ö[œäø€ç -QS‘ßÎS±¸‹OV|×µ'TkÍo«èéÍ8ë·#2ß"sã¶:y ð¢T´ÈZõò*eRÒ˜´Áp+ù ý4²rÀ–yu'ÙÍ”¨Û~h߀I¬°Ð›%^ˆA^öj"ô¾ü¨ãM3¤ñ.‡úF-Å«ö–˜Zn …O›ÙP†âš×nAèËôCL–ì ÞRhËïçÇŸƒyð:ä—6°×Ó0dAػހrr«æF·ó¨&êNœ²¥1]Uä†0kHvRÔÔóg™ìŠ}°ÊÁ 6`Ã,7žV#z.¸w*A&¼D7“°¾ÅQ'8ëø”ž*Ì){NïØ3…lÀ80­%é%2õhf‰³ê´øX>vâ%¼·VÝ –@|›¼ò©cã#?1©ÜÔèD竨T\‚ =NñÞ‘˜³û³ÝÖ¤ŸžúSDËÕª®›¢Uø½³dqW$›F¥OÉ•Õén«ò€ œÃ¸G ð®U›Ë·¤Êh«Uy -ÆÃVï×!Þâ~åRƒC¥®:\–ö䷚àNÉÂc`kX’6»nŸö `³aW1WGI‘†¨g<ÙY#eô‹ÂfSf£ýÃÕ¼X%ÔÔ‹ý´E$"³#!A€®àmgJâzKa§Sw:i.¹kA¯ikÅòæ…òùaó±±"mûCµ˜—ªûDT«@î¿Š-f‘ƒ(:­WŸ³ÝiÊ*”è L(L<שÜKÆ<•Z{N(q­}ù.£A66Æ7Ì÷RjêË@o ÏDÕ|¨âÝÁ5h‚ïo«p?M]ya‹aywøãß5ë”8Hkï¯Òè Ö¦zèˆ>½ô¨[ÔÖ:(I¯ÄÍÅã½ÔÊxÿ¼¶Úû˜M³rašÑæ=Å~ü(ôkë(ü°4[w"ÄyO8$ä-^mAk!™Ÿô-°¹éU‡€kãT»,v ?–°c ·'xãí9¦”J0Û½Ÿ5>éœÕè¾wÏ¿ýÔèz>Œs^¡¨4Þ­ñu¤ÛkdzX§L^4ªÏ gÙó5yŽL-f£ZQvÛ]â‹™a6˜¨`ø³&Š¼³5³7b.jŽˆ£B”€…3q$~„'3‰@&~Ýø‹±ÔÓÔ~%)?¨KÓ`iŽ«c%}§õtª›²âN¢v±-¸«µô ¢«Ýd®|¢ÂÓXÊYÚí OqŸ]|yÙ0ü0Øq†Ï`Úz;0^$3bb®!(±±²¶ÿ´~/”Ê]ì7<„åÁ –똚y¦ûªKv'=çµ_“¦0zuk2§’j²IÄ÷µF%7åÓƒonYÎ ¯ŠU ‘)Šðš %᫽ZÏ þ -|ì 3B%vا‘âOsÈZoȨ'Š,ÐÆÐèä^6B UWر-‰ÉÒŸËVs¢!J‰o'.+CÀÁ´Xh 3†äºÎ8µ—û ‹xúµTð²Df™} Sí/ }™®óE~Πa¬Cà8¡†–µ—ÈÜHúìý‹}€HÂ!• ù¯þçvd™ePi$xñõ¹pºz°ú¶ú‰ù/r‚z«0¬d¬J,צ¢>õ@nˆ½(už6 µ’jMøů¦äÙÏÐp:¥«Gî3‚S -+"÷âs‰hyjEï}JÓHGŠ9ùÎp¨Zm‰bøL¿¯&jô—ÏœÅs^Õ:½º:tîøÆb?º'=¿"RŠ6rêŸriMÓif‘ŽÕ8(?~©ª.á+ð£Z Æ´”p3{ËÓTãfRÊ`ò/×,PêÃíH¨¢8q'cT[`, WsnX92Ù\ˆbû·"FäÜœØ÷eÙ…&—ØžyJø—Lo\|¨X/Ÿnþ¤nâÃ+õ) ôIØ<·;-·‡5#Jw˜¼g4 -ÛüµXk|Ðh¶ú£bÔZ@¥ ‚ªõ ©b²I«Äí1¾®|¬j·fÁf?SD ®¡3ˆ'Aý“㌥ÒB¨É rLëB¶Ã`ˆ›²nyggÌÂaÔÿ(ipèOÁiÕcEiõ㱂´C"È »I.4™ºÚìïÙjí^G¡~ü7Þ ÂCë--&]Vç6‚uQ`j ñgÎé¯ÒpŠ‡™¦q#1â~ÚZH§{ñŒÈ…ÝËõ´-=äÕK†1äneêàÔpWÚ[C·ÞF0¢QÅi+%…}IŽÍW×™†ŠÆRª¦åŽ -bð t·Z051H‡——£Vp®<ø_Ãjè´´¦ÊBTþH ×Ìú\ßà ÿfT9uÀÌôïÐ`×ç«EâªïLÂüX½ÿ©ÏôBeÛ9$ ¯>T°AŒB=!J¥F¿ "3–KBÜZÿkcÿá -–sæ@-/Xºîzcëûhqì<‹Ï“1’…Ÿç¢ƒÕ0=åùÈ u¡<2I[ÙQÒáÁoº` ÖÝ׊ûk»¯¦ /fñþ‘Ñà)R•;k ðoks¨Ê>Ç&ÁäëúÉȼQ÷ØÚðÜù»zöKÆ¿JK…jw{¡ZüÃ)=€#¢Ÿ¤p(‰M8KÊ­»Twì¡Ñû̻̽4=«2"Æ£S¹¶=/ñ¸´Õµ]Ýãj˜q§ìgBð,ÒÁ³2KÄsrÓ¼y¨óù€â,ïqg—“WüŠ°ÿðé£Z®l/›DéðØÓû\dÛda©¨ã݇\­Î&[É÷Gèo­¥©ïÀ+ú:„…_)§ôê@ðj)XŽpƒÁÛDn iÓî­‹Ô1ß~êé)‚¡g©K„ ÀŒ7!˜YP›'ÿšráÎ' >|-ü=¡ƒÆè¼TÆ"/kÐßeò½>r±æΧèÑŒJœ ¤vµSÝÓVæÄA+Ìf -l+õBywad¥(Mo*ãÇ®yˆWî$ß>OTâ¼TJؼÆÉx¢¦~sw cª2‡i§å³#“ÌH5៤òúf 9z¸¡Öز´¦I¶x(A¨þ‰x^ŽQõîW«&€Xmv/lAWÝ?N…X1!GÓžš…nT¨=ã.N?n£¥„’',/¥¶®¥ÑLèNÂÒ8œµ£°—?ÖkÁ†TEi´‰ÎlÓØåž>¤¤ÆÐH’³-,9’SmWŠíÉ2—²*@åÀœ˜M®A@azLHrg¥êy/VûÃì~uùY$uÛ¼‘;rïgÝÇ­TnIÖ+÷\½  -U›Tü¤®!kð@‚?å»]h€Eð3âC•õÏb9•ƒòŒ+êã8e¹WîÖÆ‹ÿj—$¢2{KÀ¨¿Íç–oñ$ÜUkG£Úg×ߨå¡=zÿÉp´—ç„~ÓI¡Ò͇¦/8~w®D¢XO!‰&C)’^T~&rÛ4YB² -ÑA¤”¾R4*†ž‘Ý%Mù•"¬hÛ½ {­ª ™ŒR5‚ `™ð#7ñ3ãZ\]2Ø2 H 1ªh¦íÞcÇö¥Ê+ç~¶ÎÇsÕ¾¦×“–…“6…XÃ’8$¿–Ái #ÌKog×pÒš÷xltÕ wkÅ›3"µÉ… .ÍÓÇæÀ>±É˳ƒIGW„¨¥”ÐTQfw}’*¤|Ë5=ís<·e3ìé»2¶0ªaW£*D§»²áàTŽw©áìD¡«…€ ^æõààý}zÛVFï;íd¾OxÙ§®8ÐÇÛÓëÚNÜC”&¦Ó/jÚ,¢_×t­°ü†”ÉÈéDV•ÕNáï”A”HiSèLB?N¨L -žk¸ÿ¤Yå’€­D4[xÁå£6x¯'¤­€ÍW{4*n2r9£Á5y¢s2àá<¯wˆa(åÈ°©GN©Ú ´EcÐùªðíXíàx/EÔOÊÇVÌò³¶ÚM7 î<ÐÙ&o9ÚMÞ…*EÞüÀg -‡5q .1èaWÆ’Û–E¼²r`!p\•y­ ¸ç.Á --F¢.:¡cyÙþ™æhÌâÄY„7_ºñC¸².åý`͸hš›±34C` î#¾”¤Æ+—°‹Ó¥Ðü‰®Pw=G Âz&“X‰‚›y2mb&h?k¿^€ÜB=i\95“Ÿ¾ýÖ“ˆRÍõ!>qÀ€àYðŽƒŽD!Ž¹ÐS6B:Ì8«m¾YJR\—ô¨ ®M»Àå Ge¼BW-bíY¹U˜©k«6A¢ü7>Q›´”­ö®~ëÖ$¨V ÇKæ¶7MMº9_XÎñ˜éÒë”Ö\¿@6±à®ßA½ËONÊþN -âK&<È"ïÒO¢òhb@:àH1½’þ#Z°Ýd•~Þ ?`¸쳄A©AÏ)“ÁybÃ%þ`2å2.(AJ/P ó„bH_⟲¸Uˆí)bÚœ÷¦6ÌG<æ<V÷'¶²à¬–ú×èF2~‡ÞcÚœòr‘Ú´R'ZÄ«œ×?Ú¯j´Ðר‰v_Žªò– [=wŠVg`‰4-=sïO~`¿ð†“^ÆølEy`‰J[âÓF-¹…½Ðk–ùê4Ì«ß’Ä -¤êB?~ˆÿqÆûù}3b[^·ºÆ©’°1¿£;D˜ÈKÑ(ÖÔÊ:+@•±&GõŠgh %Œ ôý8¿~î3wÇõîè7»ÔQ'‡ŒýкÿU"›J!?â)Ø£‡fœçˆ?Õ°§¡ì‘ÚÂøÛÏ¡™~!£×Á><ºà6ý¥5å³·k1À¸t$2X½O¢ÝµôGqFÁñ•Jì û‡£à¡ç‚lu3«˜ŽÞÁ ƒà2{™f€Œ,Ðí -:úhU þœ·ŠÃUkcWÞîhóмJƒ‰þ©’0(bÛy¥LºÓmb÷è:§ ˆ»+_“ÔÐ&°%é/©Z@kdJìf±ñx »Þ›œî[uÏèi ›©íÔ êè­ÈÉI 3èt0Ò§þta2Ñ`p¨Ï{’á^¿2õ|’Ó_nv&äN?›éÕ¢4Jz‰,‚u2xåèô!‰”à˜ø¡$r”‹湯ì¿<ºÉÇ°0L‘¥e ŽIÀé8q=,ÂÛa¸7ðÞç®ÆU-0A8ÚJó"g!‚O§Ÿ7vÕg˜mØršÿáX קNü••wAê8s¶R‹YQúEÔA/˜š­ˆjklW§•73&9qj´Ž5Å:S÷ -anr Ý -Å~T€'/š‹Sƒ×;¡—NœH{é €Ê0&«â†cjÒ.É¿i+d5þˆ¸3µ!þ&ÚU4qPÑQÑ E:XaU:…õQèãA¥ôõŽOÛŸñX¡%ûcšÚ¬"zïtýè$t¹Ö³(æ-žºâ£™R˜3g‰dYbâÖî…Íänìtýœãuˆa”Ý;ÄLÛ^/'ÇÎL ¡lÉiù¨ÒJ£nuäoÛ¿@™çl€h6±2W·´Ã«Óð}‰I§¡;SßpÝf\Íø7‘ýˆß` |À€0½}YBµô%8uZz­ööBfÝ×-Å㺿èw#½g_q÷°Óìeå+Õ~Yá¶ä§eXÇC ÷JÚÁ"ŠTWðŽk‚àò”Ö ˆŒõœÃ*Xó‡"¶"ž ${<ßÁPð¡=*à0!ÐÇù9fì}†Ì µPñÚÁ¥îŠ`ÿ,ÉK2™=ùòEßušºn–u¢kˆXR. 8®W¥$ücfdÉxw=ÅÈ+Eij¤kò1ïwsæš®‰#—øë:èËhwë®VUšÔ½…ÃO_q‰f\)‘ äP«ÇÊ\âóüÔ‘À†æµ¥¥Õ©¬˜Ð«¯ -GŽǯ…ñû.‚A‘?Í/’rèüSS)ЩªíÁta ‰«˜ØÕœ’ÇÙÌóBX@€ÐÂÁ9~¸µóGLj Ç*œÌ¨Xҫ쯀Š„)ùëXçã¶VÛÝeTãâë¿©vñ'æŽÚ%žaÞèú’Õ‡HeaJâˇz·W¬êeÅd²­FFßž-9b/Q—¼Ÿ %õ2Šõ@öµé¬øE}x]l -÷Ç+.»Ó†sÑfFäuŸMÉø3^]¬à®{ ˜?–[ñ-Ð6==íu™uøe¿^ZŽTÂÆeS?G,íÉò„@i0ÇÈ]?Ï}©C²MÀÜ[Æ’½›`á.æ=o7DÖ<ƒ†.±s»Y„ŸÜ¤êÑùQÈ®–Ä´v5² wRÏ*·–â - --)[ukXu;‚¢p™”žì -û‡þªêá”õT0Ñvß>cÿéDÓSºØüÀ. D}ÖÓŸmã”HºeúóE7ÿbr®¾@(çÎDÇ)sÛ¢S–(‹¢=NÕ¤ºášøìÇLjýÊî<ù1ƒ#žš~))xjœð+ÿ'‹Š:S"]î¼.N‡B3s +/ø£6¸ãæœO #œè -ý”¢H8ׇ†'«ˆwx<V[?d¬r¡ò£ð@à¢x¸9ªùò›KoMEë4Ñ*çnF4}ßPHz[R¡x©Gó3¼¬22×°×-…8Msø] -4'x<]©¼å݃’~•å\×xEvdÜŒæ\ ô6ðÍz“ÑúŸ?dj!ûÆ›§[ô«"$$q]La{ÕÝ)×økÝFn¢R¦«¶pÃó¿¤Rþ©RÈmm×5ûüM³ô£ÜH:¨ÿÒÙy@{Ï_Ð4ŒÀQÚ_ù éyš*†…rØå¥þNáyöòGŽ>ôG{„SíámiIé^MÞ½BÛ˜\£Ç¶1doúìõ®ã¯Þ!ÉÞ`ötQ±Ž¸…„ú^Ð4˜Š÷)ÆVmÛš?üÓr%n|PÚNèe 3ç_j5سz‘àò´¸9¿,RÃVÊD×ry¸¢§%LÁ“G:‹á?ùxòh‡Ø¥eäÔ>'u~ueœ=P-d8GQº 8 ¿x&xò•ƒœÄ…ð•xs­ìð D —%Èh&q}€›½¿ÿ<ûšbÕå^%RzØd6L\IÖAâ.Éø@FTËhž–c%EE{³&}E])o«]íá3E›µz3¯ÄERµÜ6sóêü™å`ÕÓÕÔ(Ó§ì»Ñ¸3™^…¿A«Én¬’þgù…°UÝ$ñc#D,¡YfQν¥tiP‹^[F‡1'žY†Š·Eûiê£ ¸Klàw"/—0˜ñºPCÊMæ-ÇXóceêy/än)tæU“×UŽ¥÷È6V1 ÆfcŠCüÊCߤ­²ÙjQei¦ºsE;–ž4©¥ÛGÈœå‘+]@M¬šÀã®VËޙǤ¼T’T3ÍÇŒŽ‡MÎ"aA¾ ÙûpV/&]îÝàþó[IcÊ…²tݺ“X/OŒøà·*¤*µW—ºcëy 7–Ms6kûÌøXf]è—u -1E -àI „ò¼ œ7{ú+‡s&$yØuœ‡è¨ÝÁAqaÙñŸ[eå­/Ö×IãSÀ?_Ñ -6/<R9œk‚ÔLÒNÌLYØu‘´˜¸B8N†üeÆJK5a”6$3 æOYMYîÒø¼EÍ´ãB.]üüF¢}b@°ÒOµñ5Vç]™; ¤Š+B®ÀÄV>WzÖÉÜAzX -¡úKO,\¢EÛÝ:—õ´Ä=¦ÈýÂØL¬QÕ7O®LÞé—a™™ÏžÁÙjÕÍ÷öeø«C)¢ÌM ç –`e£Ä$cšÄPrbY‚œ·h©^t´žæ‚>{#)†«Íÿ‘n÷&Ù„&¤ÇÐ$%ÚL@È?iìy9k::QH…{@¢gX5ZóK”zQ?µû­áÍKþõÆ6ÞêB×4¨àÊÁÈ2('‚­ »+£8¡øâN¤O†ÖÎ"î¨%>q ükD«5Ú®²Éò+Å¢y” ¾I±¿=¼ý…ëNlUyhi´ßœ%ùt ª Ѣߦ<¨ÈŽp!N]¡às–™ýqù“jcN§º{‹ÝY{û Ž£é<ñ‰Ûô3Þ3Ž^’:#›08‰)@wq†›?'_n0Ñ<ÖŒ”ÏÊ¢s!Ú‰ê×T)솢 ±â¦j s™Xæø9ÍfB*íʱ[ÎKxúÃFhØfÇ–âm©üµ7—Ñä…s_;¶£;s:‰·QNL (šaCX¡É€‚è‰É©¸Ö‰r—Á¸á ²jz·À–øõ,<}àx,y ÌGàGµƒ1JöÈ•›»[ÞŸ€õJrAw•áM']Ù©‰³S“Ó¹ïú_ߊ1í·ª_g¶©ô¤`^ž)ÿbÄ2¿qã±?¿^(-Ãœ‡2aŒ•ðÞÞK­êfˆá×ÜTm‡æ¸LÚWÅ^¡¶êæ9ü¾í’…-Ô§]ï§Ã@ˆXsG ¢ëbµnFÛ÷êb¢mráw›A;!ÜOváÙ'Ý ÷DX - 7Î4¯¥?øÌ-«‰½¶¾×ÀIöÉú@é@ðÔŠ»i$N)ÌÉßovÜ zJd8u«×TÄX·hÕ aƒz¦>Ї`ìLnÛüíUÊÍAÖ·Ë¿ÆGFâK2coe¦âñ£^×ète¢3 nCû¶Q?Žn•§'ÕØ>­ìGsÄc"¸žÐ -ÍU¾ƒ¨‚Ç6ÚL¾zôõ+ñRÚÂkàåðž0|„G¸³ç-.´L˜3,] —Ø”ÉF€Ñ4jêqq%ào2Þ¯ró ·Ü‚{o‡~”ôœÁ>òá \çó‰ú})Žÿåz¥øFõk·1Üèø´r³Wé“?u¯…Ç )ä²wÈ -KÝÏr9˜nZ“‚Y@†{\µZNhÑ›—¼¼ÓWØ= |ƒHÒA#°q/I‡~|yfýÉ”xbÃŒReÉOñ•:åæØÒLz‘L¡6¼(>Óz;…äõ<£d˜¡ÒåàÄYÿ"„ߘÁýÚG+¡ÉWaÛ×iϪÈ2‰ ¦„µ[YQì¾(7F÷îGèÜ"Åà°NdSóNí¹øÆTÅ4M{è(À©CW¡ kµÄ"¿Ã wÚ ˜<óÍ̘‘–_›©ôHO©•‚Ä•$È"Q蝹•VY1ѸOź¼î7â²®¯ ñœ‰\]îqÌøì Ö­ØGÝi˜M¦”õ© laó¬/ï¤jqã ½×IUX¶Îñ€¿P /ñ»}øú‚àùýâöC¶!%BŒl‡<ªd~Ó{^T—w\K$0HÃ.|ìrX¯¡ ^`h8J¤ÓÞÓ?P’èQ&Ø’ÍhÃÞ WÔß16åï\Ä1ð;G_rÙ«°ûâFÏ~žl੹óµõ¼MÌ‘œ¢¶ŒéQ½°ãHœ5¢e^8—„ê{–Ôò¾;770N³ùǪªsµÕÃè|€Fù­k)K|(¤î´.,#âÆâß¡ 3Õ$ôõ7iy< >7$‡ˆ:hǾ¼ãŠáÜ­¬ß~üÑÂ8 ¥’0‚ïOâà»;Ð ÝÌ\ph”ZèsÑ[š/RËŠ ¿Ô0è¸äziéa^’òú‘Y´¢Ñ©NП•ª–—Ãè=Í€råÖ\8™Uñ*BÛÀ³<Óänò0¼ùǶŸ¦ÀŠ¶SH 2|r³è, ¬|Õ9“IyÌå‚ŽAv¾_2·J›Dã¦Ø§j,§ƒ£ãýªÚYNkx‡»6&Æ.Qáá÷"SÛ½!å.,½”9'ŽÛû@’˜ª¯B)«ƒ6%Aû“çæ$ü6)˜¡ÛJïŸ!wÊN¡Ô?UŸ­À®»<ÎÅ)}À^ÞÀ`ع>LäHk»§U¥y¿¢†¾5Ûyätp"M5ш¿}ð“L@Òì‘asgòVfo¥_ïFjÀc׶ÇÑJDRôL¶qávêlÝüïaKI&$®Ã·Jv_ -(—‘Œó9—ÛÿNÖŽ@óq £•þ)ÅPbæÉ岞7[€ß¸jêÙP{àêŠFÉH^ô{÷úƒfSÕG[‡ñÅ<™R‘@¦àÔT°¼GX–»“‘ì7·|!PØ“ q´Õ‘™á”}Ôü @(=bFz%«#+:ÇÚ7Ov7“ߠЪ´åÝ êŒAeéßvÒSÝËY˜èÅô&ÁÃ2à’œóÞˆjó‘ñmºÇŠ@.Gg)òÚùœø¤+vŒYi;:³ /c©ªÚ* ÞøÌd5u•är¢ûêýI&‚B*Ç[ΚbßSŸ„Š­7û?HådjDD“Él0>4¡ÞâÑ—Èr¤Ù3¢Z‡Ù"%ºø¤$Ãüc·ºÄ4ÈaF‚u/éZxÞ4QÆõʬÆ9÷SNUƒ;!™ÉÎûßÙˆð“Tº Aj´$J¹X#° LrW2.ùÀyapÕÉÛj³”ms›ç¢%øñ]ãí1£_Ý !VÕ¡7ª§&ò¹±ÈÜ9̓Û%õ›ŒÎœPñKs—ëD•‡§Àß`k…6lï ËØ{Û¢²üv{X{³|€µ»¯ªLt ·£œãlÖBbŠÎ]ÏA4`§ìµC¶áüÓ" )áñ®ßfÒ=èç»ߢ‡ß´QHS´\sš–;1¡!’UqZ­¸£7 ÕÎÞ³S®×J_¥7JÒPŽ“xÙ1rÁT_e•ƒØcJÿt…"ŽkX ¼¢†Tq`†Ÿ-…‘Îpƒò -¶³°)©OYE©ÿ¾"›ª-—±k½šû§^XÿÖ3zç˜ÕÒ' ~‹–YâD³"Há†4úÑ*FôH>2Øþ{‚mü#¡MDk~ø~¯,}˜ÇIY©ž“}ër$åñ’ø“œÅfÖsæÐm(¢ðÐЊqŒ2Ù~ÙGkÏ}ØWù®àxªŠ™þ30ÓÚ’›Ìdøxz×Hܨv_Gþâó}1‚4ÉèäUÝPéãc q¾„p›J`Í£/'4Žª¯µø >S^ñiGfVÈz™Eƒ³Ôù…d -içwo76¨ÃÐ'¤·áïzÅ æ#¢íóH‘}9‚´Eñ6‘ºRšwªPÆ>Ñ×9™ylX@Ïz¬êô…„‡µ¦GPþ|Þ˜°ü¨Ì-Oý”—2=ŸMP7iªÌóåx3"¬£ü¤{º—§¼6qšË±IµGë˃}|å>P¡ýû²Ê¤ˆj‡<› -GóžóP-6Å@´ä‚gå@üå À‡*¨šÄ-î7eÊ‚ýLoy ÒÙL&„.Q[™j¤TFg$–Ó·ÿå/XîÄÔ39<4M|ðœ ã{Öûrx®o„³³À¢*oF\þFÖ‹ýÔ÷ r5×}(Ý¥¥°o˜ÚY¨v³ªÉþÍ«iG‡GÑ´áœßŠ -¡šŸþ»’Whù¸0[CÒø¾K¯ ÁöE›ª±Œ|ò’Œì¹HîîùÜK*¿jçúzr¼X §TazÁ?vc+ºþ›6„¼Î+Ž”ðÖ–vÚQ÷É—!Ÿ ],´mpÈZñ0-^ž›{-2Dß’g‹e鎚?Ò¸ -&æ” “xg;&ÛiÝ 5ô=sˆœ7tE—P{Ìîû„çC9AÒD|¯ü[4"q‰Ôj†¦˜x9nã£O1Œ•Ê‡ÑÊLդúOÞ ²c?ëø )ž»ªiûR:Í1©nl6¨ò9튾ÚIq6‘[sßßpÞ]…îÑ„Ì!Š`Rlfÿ«yoúÚîI}t4ú¸ ·úÜQU±×–i€6‰0‹u‹¯A¬ª8àY·.mMÕ¦-@­— l­ýìæpËí­…HÚ6Úãš<]ÂC4úŽÞs!îÃZ}ExŽQ¯¸h›š’¨_'ÅE1é£2"¢…K§8` -ØíHÅÓ¾I)t|åו¨PAj‰ë«cgJ-Îc##t.‹ÂÕ"s»ûT7ÃDÇ‚|²¦³÷5àF‚zS¦&ÖW‰ae|€]ðKéËùñš-ßgásnÝÎ[ÆÎîíñ=ÚòšH±ƒÅ^›dÎ8-™#mö÷VZa0*@ ŽíNBÀ\µŠèw&cÇÚZBF1PÖ»›¡jÿËk>â$S‚{‹7Z™ÑÜDï5¹…pÏ%©ZÄ:ðü>RÈ´¨vok£Ë“cO§åÀ~ÿc,ϨTs/×õDÞµÅP½`5ÅÇ´­xü½¼z#Âh¨‹|Ï=TíÅ ýüâ4dD:ïsýÌì;αöÀáÁ½œtÈwU’~ˆë:ÚCÛ[ZÍLÅàßœI/Ô”óïEÕvpƒók´Ð XïPó,<ʘp9ñ©©šãÁYÜáZ>•ö5›fõ…éRÝ0 '»)²'7!}‰¹ñx¢iO‚š=ÁþW¯è˜Ýò{Õ]£œY ¹‰e{IÈÛHûò‰PÈ€l« -û¦Q¢Êx=™UkND—¢t½#?ž¦gÀ¾šQR@î€|}âíóßn ½GÀ„‹8ßUºaÁ(7°ÉZÓK¶øgä:tf“ë;®‹ËÑ’]v¨=é@õFÙÃPCB‹3Òœ›V‡Ë„þ¼ç[•˜³³Î™yRží%#…]Žšz¢à’FípúǶHyVjÛÁSQkJ#ˆ9š;K]iÒ0‰íYo­=À#tKÞ9»„þ= =eK,¡j !Š%©$ä§d<8Uq:ñÓîê=ì.ì"§è ºɆ¶ÖøÇ{æ§vA—d(L*;CS›2Bó/Ñ8C+£28 Í€ %'È`§ÝD9 -øL²L)ŽkÚZS( Üéhâž³PuätU¬½ÄÕx¥Ã¢ZþOÀÜu€ë¤b¿žÇÛ_’dÁ_ÇûÑ7*43íP[UÔ_ÞR…ûΰ±ñ‹T%&i'TÞ5 ÂOÅ`ü\”Qݱ­JÊejƒ¤ºêLµnü‡#nþʺ!Šz†‹S EVóŠw64¿ÉÆ6"2Á7Å ÚòW6‹°-S» `š*ë`ûa¹¿ˆkÖNÂ06 µ ãm >YÔ—ü¢Ï’]ƒö5K9삧TÃà -{s qñyYf;óÙ<¤S`WHëßöO~XoÚÎüéñ¼M"Lµ†³ŠÆ³© -²á]„à|Œ‚QÉ·Ôœi³´”AÅŠzù‰·©3s²ê’2¹Ã›¸Z½•3K¡•+@|BêJWH!™'¿§ÆÀ»R£ n/ -é,]µhù(@J;g‹ê¥:}1,Dé¸Åf8îÇ÷Fq3RË¿>P2ÈŒ<_†á½ÝÌK½BqõÃýÐX+çÈ#Îð#þÞù·$SV±:'cÏÞèˆÌ,Ýa¨äê/!ä3#óUŽN¹Û¢|þýqDnÎS‘%ðvRJ/êrwÑ—ð¦S¬°i¥Ùhw.B•päûMò ßêÞ³g±¼´ ÍKxZv/õgsñ¹¯¨–V)ù@Å…‰ƒ5ƬJL±nÀ‰4Ћ6¼žµu‹ö~øóš¥mõ­‡lÓB¤×hêù7þªÞ™†GMn´«t&ÁË ÂÜÿ ¶qº'Uò&å–!š:âJQ0%Ê…>'¢üvIqík"Ý/r k îöEoÖq÷nîjM9õÔ‹tôªh=I<Ã0F^ô–’ÃG]¼E`:µÙžžÅÐSèþ2t‹bÑCˬR¿H&å<|øÏë„0£Fú` -†á Ýˆõýã×ì P<úDÂÏÚi»Œh,÷Õ~î :o…6¤ö{¨RÔû-Ô³Èã×F_­^ÇP¥2…°“G•À<™È~¥òáÍzÅ%_úî"5²?-Æ'Ð)ºó3U’…aÆ©\hcW&Ç„Í]™·Xe¡qnXô&5—æN{ògÙ¿‚ü»‡„Wû*M‚&tº9û\&ɯûKë@Y¯€éÁ…`)ÄBÕm8}T¬› -¡ó"‘jTyÑ©o“vÿM hövº=çõ´kd=7Ü•¿Ù{Sùâhµ; -]²Si¹þâ´ãÇŠ*GsͽBœÔ“›H4ú­-s®6“G[´ÔGq§nhLþrgHßÚ×9±Zäð¬iÏ0ÉÔ’eÀá3Iì›8$RLùÚ%>¸r–êÂZ¨œ¼Múæ·‚ûcxlØj4ttöÓ,ùc)š®º#Œd®N¤R¹Ù†3=PòºÑ {ÈüNg‘aõ6'+–O ¿ÞRe¶\ßâ¯>—”Tæ?{Ä®Ž¦ 9ä³ë›ò: U r§Ã™ç~¨\úl“¦¶Prg/lƒíd¯H,~ r!G ÜúhÇkj3¦z†´î<ÚT}iÅïѦú§˜!xú¹`#Àœ¡Â¤hÒ¿bî\¸¤¶5øYÀäg<ˆf¶Wå«ê&¨§òÇtÌwFõF’6G dZÞ[œvn¦N…‰\t!–#Ž-¦âÆM_¦Þv. E«Cá}'ÐÓîd¶Øõ–(/ÿ½}Ý^hk:ìÆA.‹õÕlTU•6UáŒØ•5ÂYň2¦Ææv…’ͱGý{è•èeƒÚOÉ'èS¶â¼Îh2+7ø-T—BJžÂ ü\ëSÙý¯á§šr -9¿ä“rM‡Ï稼*XdÛ ÇƒuÞgÈ ÉRð2•Sо¤4PÎmŽñ!"¼7ìRÍÑè¬ »U#g—[ïv7Éþ]–Àg¢wŒ±F_à'Ë_®@ºò'N!‡A ù wò¤5çCWõ:îñ­jyÃTH®¦ÕNÔ“ú˜a—Îp¿ùG R½ îÃßyÖ­úÎèjÇc؇\Ëj´[ëO®¥É»T\¨Ó¥EÐ ¾<À1ùîc<³MfX0Îm OÁ–-MD±؆!ICb+‚òñ(Iˆ¸Ð VÊú£Õâ£,»b¦!¦ÏUeaC -]¼ >ëWˆ -íË”Üv‰+µÕŸüì”ÕY4±Bc¬9!çÚíS©hÊ¿Ø-X¯çÃÃW…6ÉahÌÿšö‡^ø tÅóQVÚEbƒ-L°D)Mº€sÓþÖ‰_±„W4À£ÚªPH)vÄøÞý£ƒ˜2s‰.öpŽŽ'»Bæß!æ½yâWŠ‚w¿,9]·LݼûáHtŸ?–Ÿ™}ÐMÙÉC£QZQdûv)~U7|t“36è] yʪÙÒqŠ‡ÝatÖ9’`íª¥ò#DWF@V9¼ä‹´(vcX)B]ÈñÓì­AO*¤:áFùªÛF<…èËí]1qWíh]Ñ¡EОeª.©[>îçˆ/뼃ÛϧM;O/銎ä­Â¯’{~ßKîƼ¤Ía˜í<‘J™yf ”ª”EŽ¸BM7àìÒ2˜ÖW¤„~Îô»pµ/0yœj¾7 ÝYÙ=ö»U[66»Yo?'/©ClÌr‹5µ;%',+Î9zî©|ýÆ(˜}~Lˆt—câœN LV»¸èšª‰Phí²:ÒP ßÆÂ÷Ÿ•Â]éŠóINOµ?J‹þz–|½ÛÞü&à—Z|Ƽo™S%Õˆb!2¼®Ç²p p¾/R¬¶Ì–›ê‘0×mÜÅ2àËȹU0‘ºf¾kYÄK¯†Î’xnŠ¤(Äo² x;V[Å®© Þ†óù‹ý¾`|¾’5nyQÊMíd’‚´ÄÞÁª³K7ŠLuüÊ5¤š=¥>ºfü‰ñ¿ÆLKAÍ›!Â\'dfÏ ü^Kë:ìÖ JMŽÈ)ç  \} ’›‹gGŠ£ëS»Åªí³êmðÙuç'bc§ô['Wã–5çöBÖuÄO¿`«÷©i°Êž;YŠêï^ÿMå‹úRd¹yop›~ÄK(Vf Êçüšœym.@'¿Ì5}½L€ÂÌ !ÛFü=ß÷àÀ9ŽÛ9£3EK!猺:ÉkK1%§´d’Ÿ%§µÙ3­„&›& ‡™¦t ±léŽï/&s/ià"OsX|ÃÔ®!¡ §t¢|ý¼$] kÒ`o§,ÛË5_Õ-Ì” b†ÄŠÕ2JßFýJ%„è00¬Ûu„œ°¡æ±“Cý`õqÉ©¦úfnöœ³Lms¥Eêœ úË JÄÿ€Œ‘_lQ·ÖÞº™›¤ž®Œ×›ñŒ -cÓbŽ¬¯ÿºFê@k™ð6D¢¤š•Iê$ bW9¤ÑÑC¡»Œyࢯ½ÞS}¦µ +}­âêQ$Cñ”šöF“BÈt»è4²}Ó?Iš -rò:YvèŒ3õ,ÊJ%>Jªn8RGÃd¬ÉÄž>¼Âóõ´­‡@㧀Võa³q¶Êxõ£9<&å‹gUk;ÁDß=Ó'4&Q¸ÄÔ„‰‰£U•Šúò(&{fwËéîP#Åz"Ž‚gi)¡×SvÞê•X_.zÖ‡ŠËiè4‚€N$8„~HÝQ~PïºH#Š‰8¡ . õ«4„}€ø ñÄ è}•Ýs~Ùx˜tY'ÓÓ2¶: -6Ðam†{ÙY­áš^ètÕHª\ Qš_öèàÍal¾w¡.ž C˜áºÄêAᙢ×,ØiOœâ§ùh©{ˆ€)Ï-ÍÿwÒ9žÎ}RT“Õç|Û-ˆ -âsÊãû‘ -Be5«×F,0#´ó¾GÛ·QLcù•V!Ž Ý›Yf ÷õ†e±ß&‡®›% Ãë‰çá_‡Ê2û]¨T€o Cr*ô'Æøü¢üÿjÛ´KŒ#‡™wˆèëa”öÒ›UÒˆ3qEž¨öôË÷Ù)᪫ô†6`òQ$æŸÎdJ Ãå«Û‚Ž‰|ß^™ -¨ ÆÉÉf”íiÁñS¯|XêQxØÊ¡¹©Á&Ð*¢ :äåç+Š-vC{ ÏùélŒš(ÿØ–ÝÏNì¬z„]1P½þ6¶˜äXžñý¦®-²‰§…ÀD«¶dXc£b¶™.Ñ©hÏ •ˆØ•Eg‡ðçÃ÷‹ò3ÞÁ!]×”C¶:ríŠöÃÄVìõ„±øhâ#Æ E7)[¤¯™_1Ú'Ù¾7™~úÓ2@…kèIÖ˜ñ[L”ã%—É΃³™hŒDo%ù%±-áç ŒŠ!çñí[l&4v/D½ÓIµØ°¿ÌêHþðç`„¸BG¼;Ï?ÞéLnº§ÐE³å|®Ùm¦‡ø±Ñ(y{÷M²–Õ†½ýìaó™ó’Á·ïäY^• ¬v¹j= -¤×Ýdã’Zþ%½èrø,צÀ=ï$¡ôÿšâ¼›Gó*=RUwŠX<>&ιØU“oN,Õ×w-až-­]É|ÍÁXMäíµÉ9ƒzŒ‹Â×úÓé6ì»35l•…A%çŠOlZ‰5 ¼ ³ÃñÏÍ—þ[z•¼5˽ª²_&U_”8d›û·££GìgœÜÇV„¾¦öëüF²xíköÍÏí³É–¶ Ñ9m1{•I(‰±b©ÿÊãÄWškÁ3=!o]½ÎÄÝs~÷„Q×iŬþgÙ˜Ch>3èîÅg +ð¤ð†Ê¼=9̆ª¶Áñ-yy™^ ÿŠ·œ{«ã®Àb{-úÀø]C^M±£Sú Ú˜©N|™œ&¤!xÍenÆC‹Eª?¨l9³=ê·)¦‹L"²lFVº¬]¹ùèKìô‘ÆF»‰–¿Æ×ÖêN Ÿ^ó¯ôÑŒ…æ„;ØT>£2Â:Ö ¹~ÔrIÿlO‘ÀÓHù/gbÆúHÍöѽ’@jt¯Þ5ÂVe½êÿLjµ)­:\LX¼Q?¡Ï¶ŠJ3$ !鉩˜v£$ ”ù¯¯l)Œ?r -,± ¡:«G&ˆƒÄC/1ò^:ˆ%ím¸¡5q^B³)Tµ>wíH9@|Ž±*=î±lÁ_õæP»z¹×;˜±€”­Ùþ÷ZWÃ+›tãø5*2›†«JSA·ÐgmÓÿ·}3æ¿dMå„.@oé>Ü”éÑß¹Qv¶¦~¹I†Á’%sÕ'¹›ÉK]¤øYè4DšÆOõá[+7ã'IðèwPßïœw ›ÌËœ'ÙBªâÈöÞ©CïA¥ûYÑé¼·ÄßWw[úðLi §6Ð}ˆÔez”ØÈ -˜ÐŸ ´Gw² ˆ”#dg·|¶ÊåÛ²Vî·N‚ ÔHKÇf0Á9V`Cì½0T*döÍy¶5â[Eõ#´fl:C„˜f·‡ Õò—­ù!qéŸ*q~Ò$Ð8V6*z/ܲá&“¡™¾mÌ.“ˆÃ¦OÃ5”2ŠcR÷—ë¨ÔorL¦›ûã"#JÎû“o›×pIÈI%mr¯BAº• -{ÒÎS­†|¸ÚÀCdw½¹@£¸Î»Èž‘°V£?î?Zd㯥„p›»”‹q‹ÉÎÒ²”PÉêlQx3aE‘0“Íu_Œ¥–ˆ|`†ME4äÿ‘tN–äÿqBÅÞÇŒ࿳´˜¬SžÑ‹ø‰XP‰ƒ5¤½ÑQ˜tºyóˆü—ömEñ¶×F¯žRÚuþº•fˆ b‡ü½ ø—ä?â;Òè÷‰Fóõ -}ÓcÏæW·;!r©ŒÀÙeáXL~§…¥Îñè*È’äðûîI€™d’Œï&ÝpÞ©lZûv-ŽQÛ ø -d¨nµCP€!;]œ®V.%Ë­a.Ô€&Ì׈:y¾ˆ³ß4VžË†ºëvjñã|s×&•59 £žíqyÒ–Sî5ñ ({+ú G§³åé“Å}îmIÙU÷õëÂé¼¾3¿³"oA§ÅEk‹bZ¨> ûHšÆÈ -’Ó—‘v9n„>uá„Ë>¹x-V>©Ã¸€é¬è‚Ú2ÏnÒ÷×ÕHhw»ã©i¾þñ PE,wO왾\U™ÐÄ™“Ôà kéy†åÐñ°ôÈXIVèÎYøœˆðˆèÜ’ ïƒúÒó³8𧦊»“»Ã¥ÿS‡9Si—‡)˜éôë=9BßÔ¹Ý#`gó}…"­Ï®ë¡598 €X2 ü)¹:8€¾õIIEtYW•°|µd0sRйzÓw™yƒsœ‘¾xÈé:O¨våwôÅâC'-³ÑÍ'þר -×/Ÿ×è³>²ñ£Û‹bt“ó„h:tDH°üe¥ií`ߤ¾!×ëÆ/nÒut4]LØåz¼ØxÏõ#«+|5; -¾×¯ú[=éÉlö•òƒ¹re¼ö¤»î aË -—K5‡¤Ôv Ÿó”¨èº£Íÿ÷èÒ¥¿Q·I ¯ÂJÒõgïé‰u -,UùWªWfiÚeÖ²<¨K(š4«ºÿT˜®‡êsØ<ÏÎ?¤¹¨¼™Xm’lüˆv¯Wãi74¶u ˆnVßëx…éä*,¡¾·ªÉ¹ Z#Ö+ Úk/Á!¢r‚–½ùÛï`¦œ«—¥T•V²9s® µøL‡%¤zþB€Œ/ó8Á -VQ^âc+ïÒÔ3`*G_|E;ûâ%o¢y$±äøG1Mí$eQf4Ç{¿hÈù -[!ê§8‡£Z“Š­ñÏk}^Dæ:aí²s¤ -î‹‹Ãmo!¾~*®ôþLîö]j¶G¿­‚M\œè<u3O+DöxdJõ°¾â’á…â?èpžàš*r9SöŠ X–é¸õ£«òÙ=2ŒÇ"ïS„°þk@"êGWŽ÷ØÂüj^4%Ï:ÐÊW oc÷a¹v•l Kȧm½öýôTóK=‘Í-v¤È)of_qNÌþ;ˆŽ 7ærrÐœ8Í1T…g@x”œÏ¬Ÿ^áAþñ)çáoÀ}¾‘¦¦ ãaìpZRZ!¡Å8@KFÞºŸâ!ßQxØw Bc<:y‚–d†ßs·âg‰¤ó«¸hæq™bUo{ ØÙø«Ov µg=±@w¹òHµš ¢Toif~Ç[d¡Pó0ššì³ 7×¾}õ§)sÆjsÐxT –*næ?£‡ÔÛx‰²8v»Õ¹^Âàqíâß ŒÔ¹<ŸËßܪ#G®ëB,á³òbbv,¿ u¶ L…a\³½ÒI^Ö¾•g <ÂÔØ$áÍÈ:±¸Žfá¨?jMá²ûÞnrCövI®Úc#0—ÒÃ~Ø"Vjs¥ƒf™ºð­w>žÍúæ_Û‡|bÝ–Ùê'œò[ÇLëòÖ虄½¤áøIï…™5hr&"ˆ]1 -ò¡Ïj-µF’'cN «b¼e#Œê1‡ywsÀ Ú £‚‚ ‰˜ß@±Œš]qsðk¨còG>‡gùõ9&î3z©ý ˈäŸvódž+¡‹”±6 4Š¶ƒÉ„[rw+Þ‹õmŽxuÔ„uù‡Í¾!ç¼.3«E¼y@tç†ÔÜi£€¸¾ÿñé"/™ñ‘^ë¶ -”ôüý°û³ïˆßkÆ4î»ÑÊù戒A6‡w.¥9Ïn už/ÑÞ¹£HÆ3ÏÍgyVo+°%6n/,OµQ¶>º12Ð ¤«p,L S~ÂàÐÞ i"_ÉAåRóÆy‡-Ѻè¤BèkÅÔhÂ.ôjñ"ªæÂ.B—AsbÒr·³R¼Ö\D¾H±Ü€„máæî\üs)F)t&Î'ýî‹Žiˆç´(]¼Úù•ø‡)´§û_ôBxmµÎ2–2dÉ#o)/Ü€öM''Ä'÷k1¢þ#ÕwnD2ùY¬ÂÁå È©¬b0QçÚpÊ{ï®ÌcBpˆ6WRew–T]ÂÖü ;‘S’P5²ÄÅŠÀq E]æóšýIk±Ë)äB‚‰ÌÚK¨½9ûBi¯ÂÜ©ñ^E…/TOn< ¡1¾Êõj‹m òA]HŽÌ7 ™(Ï‹«“A%'WÊ -¬ò•}D²Y®ëΘ­²hTÑÖ¦uÔ3Gn‡{Jîã*êÅdnÔTIÿ ïÍ8Þ&úPNšÜû(ÄÑ_í=©û<‘ˆ%Æ{Ïö?ÞÕ\ù½RâÑ·‹D{¡¥&êfÇí©€]ûšøc›—E¹îÇÄý–BDZ -à]ºu~?€)A›Ýy,/;·:V~éáNÖ?Ê“›ûÊgç‡ÑŒ÷¼´ºµQïø†Í: -k­r±þ„keAÐÿ•:íÜ‘ŠíP2ïÎv‹ á>Á\ió*¼DÕóøØMç˜+® )ô¡¨6ÔIåÍZ1sËF%¦H›=ÝÊ ÛBIO<ûê†á˜YpÞ?Ïþr ‰\€K…²—çûÖe%}^ø™¸¹q~ ݲ‘L¦)·–7q÷kò¸Ýi2ï ê–3K>Z?2ß1 ¤Œ^äþÝG1ý‘Üô}¤DÔ¾—¥ú&OU½?bä@Ä‘0ןO8LÚbû „¦ñ ’­£®©š(ênýzÄZš«Ã/Oxxq4n;,§·¤Ç/}¨ý¿>ŽÈxïå¡i÷ÑB²zŸ± -ŠWîH” ÿ³Þe1^ -ÞÄúÔ×µü -MÛu6zŒ„ð ÖðÚ°SÒ]µ\0Ü®¶Á#x•lŽw™ãìM–}⾑‡­ÓüDz¬ض儦Jô~õZ?þ3Ï‚]²l]h”Žp„)–tÀl¡ªúêP«Ÿ%¥x UÍ·:?àÕ ±1?g!ܺ?ú˜%ISPiiþ¼¨oƒ>îÔ’q±Ú=g ÌÍ­SX÷3g¾‹öŽŠòRÖÎ „º„ -aÜñ1Ä‚ÜbFSÿ²˜,Ñèóg-¯¢7ÎÈ.~ëÝÖ¸™ƒªv#)ªu)·4ÿ|¥{TÔÈp3n`ÎKr٨找b~«ó³wv§k‡5áZˆÓl€!ÂK±ˆÀÊÂÓa6ã¼×uÄrÕ©wè×ç10LtV¦ºS×ÃÒX>f•Ø*ÍŽ©v½!Ë#QbO—8°ô'.»ÜåÎ0S•‘Ï`HspŲétˆB¥FkÒyH’æÐÅ ¸o1ÓpHh96b<”RÖñ¨¬ Ldý„œ:õÇ‹Ê')©˜·üÁè8fÎøk²ƒÍë‰n£Šsü.41‡Ó_¢ÏêNÊÿâi4r>X?£¶9¡ò¦¢ö.âÉž"õ?UÕºì{…ÚÑŸý0%?˜æVxqß^M“¼B¬lÖÂê³Ôãüð_Œëµ†w|wΡ -L¡³)8q -ÌôN4»šEzÍÀXVwº}зNëúTJ}&!Ɠò…ÈJˆ´¶oÚe×ö¯ FþcL„In슉(„ªßàÓ.P¿õÎú@ƒ7P…¸e³e*@2óF¸” <ó³%,Ã…a̵4ÇŠâ†7]ýº'N57SÌ3ß-ýr#¨æ>K1¢ýPuÔÿ¿=$O`*Nœ¿jhïèÆÞy ¢»ú}s;mecùÈ29uŸ|}Ö9V²Y>>£Ö²œsžªÞ“´x,(‡8핪¹æ½ç¥»ã{If§ù:³&c¡s¢V–Aô˜„¥i)OÙ3Z>A„ù…¸DcŸ«¢×èócD½Ði<ÂM÷ª¨¶ž£ÊxTsBi”Õö[GþFLÖìs‘l5=ûkZ0>8€Lø7)Å|÷C‰ =PŠJhÉ<¶hÕ«6’þ|ä™<—LO°Qi¨ý “ïó>܇m=cmCe èÏob¹7âÈ!¢á K*JM*½¹}R›#a'éìâŽá-ê¾K&ÿQ^"äMóš azDzcnÛ#V‚ÞuìêBöÑÑèmž„# »GIƒT¿,cP‹tÁkÙçBwdN”lZiÚCL -Ï$Wr¸Tÿ’W4&!v¼ùB€ HX¯@ßKk3åÝõÆ@£¨uµ -ͳNÌÜû¦Ç‘ß-OQ ’Æ'^†Ÿ³‰Ž¼¼˜p”D‡¯¶š³ ©dèò Žƒ ØÁ´•=4BoiLœZí‰ô½ -îÙÕ­×)¥ J’ŽO1öi4HqÍ÷Ž«‚ƒòz½ΓÑXó¿µÔ"—]Lç0˜‰ Ö9ró€0ÔÅJØ9÷MÑ‚ !$±ƒ!kൗ0ÛoáM0Ú NC”½\Š§ ŽšÅÜŵ­Ûs-=ä°„§®§ùsUðœrý$¯Å¢ËœëgêÌHŠÂ¹‚O®m8BäÀš±Ž¯À—Nò~y ™½F<}GB -\+‡­Åд.°çd Á„²04‡)™í@m?Ä7ɯ2ÓÀŠ²ì¸ÂSÒ•¤AØ Ä]¨÷óàYOÊ$.ï .¦f"ñjpÆAf1;m³sÞ¤áMð¶¦f7–!ö'ëh? %Ò¢>C„·F<ø!ÿ‡ìö\T3¹u (´CO_‹QW=&º´£ æçæ±± –ã“'>‡ÎHvô3çã€[Í'â/ôÅíCû=ô  ­ÒR—÷­¹ÃK­Uv`Üpw1çdÒ I ¶Å^ÞËÁj8‹‰€ Rpûy0ß™û9ëæ¯yjHª e™]wî<îà[@ í>‚IÍć‚*³òE·Ì®2°›¥%™€É\ž¼U¤‚Ó£¦`¼/<}p¥74å’s"E!’ù¸CIÜ-®VëZôãý$Ç9Ó¡?Ø&Åê2¥?PœÉ#k,0}kä‚ñ@פЪ ¨G¨#*¨ÞR»+p¿#ËÕ:;¯Ó½ëÊ”§JvÊÛËÛâ%ÍGÈ‚Ã ÇI"ÁÔ½îKYY¤\Õ[ˆôBv†ç–øÐL·É:À -àOó(^ÐœŽFMR5#±†ªI1Ö/ÇÅ´3MÃ<Ò³Ö%ŸíÌ—Ä(ŠéMb5,UÄ—_ÂIZÐÖ•÷‘@óò^B²s¼~þ/ïµ·A4³`Hòß#S´ú6¹Dº÷ú<û^|…ä,zĵ=Ÿ¾\÷»?¡– ÞóüDÃIß²i˜m÷¨$gì¦>bØ«ê ò1%K0ܬ qg€¦ê+ OAüéB?ñć%°–NèíܤK±î¸]ÎaÎwµGCÿ¬¶ÄÁÈâíÍÎÅB¦¸ŒN,2Yô²ƒ¶ÖŽ„kÿ¸2_ÁiÛâAçú@!ñÖöà^¨°ùö»•Ùä|Ñn'l²TÁ=ÿd剽»»óó*ò);˜Ûëb&KÔ†Ze_€7gü¡û+).W컼æìTëfõuŒFØß1ÅV¨ˆ¾ÕE¡.P%6µ@Ï‹av¥=È›Üs>Ë}ÙÆ_²Ìô}M±m¯¤™»”úN¤ƒe'8 •pÌž{­Àœ ö¬Ž½…â°±®)I8à§Õ7ì6†ÛB< ÒŒWçÆüŤ¥Š“Æy•j•G¬ÊB(j ’¥—d[T®¤F¡n3š›0Þf Œ ‹:ШËuý.Ã:ƒ±)î\dÐê ßü0U„¨w)l)§nŤ·¦– ¼3ÅD ‡š(ä —Áhpá›í9¨3&˜"s? xŽßKbô¸Xu1¤{Ò¥¸•êË]H4|Í•×A™AzäžFË[ߊn< ´pçŽÚ¦ [ŽÜƒëáûø'f—¹¶O‰¶.t:bŒŠ~sf6ÐñP4¬øô€—õ²švÑ‚Æ8`#ßÅ‚îÐ&2êeÊгaòlé‰0§ˆÑ¢LtØ/<9ÑWµ»k,‰ŸEsÔÍCÒŠËMJ—ÊrÉ_Þêmé ­†»âË[ƒío˜ Ñœ é)ª¤†rï“œO‘*»°ŒIÖeúŠ1– =±p*V— -qKÕNâÅŽÍ›c®mºšÉÙ¸ÛAÑ1÷){t†©©,Òøk@oà°¦b%ß¼o[ãØx…3ìyšÁE6D²[Ëq¾7,õÝ¿n<öò•Dš\Í°fk?K0ÖçU^MÍÓ!KÜcwÚŸÓ¼N*Ä|°J02ã:™„Ú-Fú‚ŠyÇy´B–N=n_àà?0_þ‹ß¯pÇȾÎZ¦G˜PtØ0㟎`ôbÿ»Ñ ‡šD°Ÿ#îöSÐÍ arï4ž¹µ©¼´fp‘ B¢öÑá°_•'WÅ7wIT8>çÁ½•”º2ªœýé”,¤Fì Ä^‹3p@Y-"l;?.Z(R ûFØì]3 !CŸ? öï(š9ø&bxy—û¨Œ0ú\md‡²Ö»ætÍ! AÒsÏ×ë š€ ýtäÞªqúf Ä÷Í:×WÏúO{úÒû½J–uCórÌ”Nå-"ÂnFMîAPg¸Ñª+Q¶C -’×Va“[ypÍYÞø¶¡²h4çäZšÓ›2«—7‚QxÜ^•2°rj¹1JðçÖÈ<Üo5…f9²3Ûúgö& ¨Ó¥¨lù–Éy>¸(O„WÓüñP’Ž4ÅBÒ_)&Ë=ÚÀ-2ÝA<À2›ª¼ -ÄÃPõÜÅu,«‰¦wÇȲK1qö"¿ïªIFâ d{‰•[m‚ì ÜÞŒUǽÝëú -=¶îÓ¬”x̸φX -£w¼šïZ”êœj”RÞqÞæïwha9ŶJ ‘Ð`¼tßqwCwo¾½=½ëù‘Ù¤Ôà÷‹Ð qær Œ?p@³Î°ƒä..ôú¼Õ™v©ƒÿRDæ#ԥø†”w¡,Å?ÉoÂ\½%ú¨ÛÓ·".Xºz䘀ç¹ú™w -·Z›²‘Ò«Œ˜ÇÀõVÿIîvpá.Ô*H‰úåׯ»(‘ Q@ ÙA²øaĘÉþ„7¹| ç¹­‰ ôlC6~^”ý5)†v<¸[ý£ù÷4Ɔèð'–×üó7ŽâªRãSŸ½éN[¶‰–iÏúïãÜ\MBÈ6³÷R„ ï®ì¸’K‰­f‰ ¤â¨SnC,‚U'üæq©;†”ñ|Kä°]† /i¶Óh¿ÉŸ~<°G€h&«öË¿?Ü•dq»Ÿÿfpi›í{ZÔ1Pf2ˆ\?E†fVLŠKl¤å¾çÉô?šŒñðè—Õ¢OÛR°ƒß€ -€šÄ~ï#í¦ö9ÿ©¢Kk«èÔèÞv B›/L«{:Ñu=¶$îý XÂœâXq(”¯¨™É䟳‚ûÁ´sãáë…rÉ©¨W8“Ëš·Ò®.¥¾XaUü±±“éÙõìEϽv6•w¿£ìÔ±ïvþFÀ–Üã;ñ†‡Þþ5uSÍ›P„´g<€µ:¨úI¥ BWµÂw>8ël•4Ypð!Æ9ŸgæÞ° ÐÂ]E>¼°£î šûŸ½ÔO«õ,"±ÜÎ&_A1Ë›ðÁ˜IÈ"§O¬U+§»ñ%Î3ædò1kÀi±tâµÁ AÆ ORYNvy€PO¹XÅæólz2•šIÃ,Lt#ÙC_zž²ËCVœåD;¤ŸX(׸ÒÁõi˜*šrÆ5~òºE£ÆN’u¡Ã„žWŽ´ÃàBèçŽg_ܱGŒ’oˆÐHÆòiÏg×õuïz.$Îlšëkæ’‘Ƭ\w8‚ª*9”’­N?±M¡(R#!*èöì}Hc-ñ.C&ü+L9U B¯ª£¶È0d>¤™ §Ós.Xöw÷èÓ³p¨ÇåC¿?ÝW\Ýâdš{`EÁ9Ü×^øÆò?îó&ys)¬5G2´f·é_9ÉÑ›f4V[?ÒÒvIL¹é@ôÐ⼎rVÁÝÚj¢"û²Ãýð´Ù‚øiÙK3Á³| “ÇÄúþ¼Ê¬,B -í{eÙ³3»'*–¯d‹ãé9’CEö˽Ši:Ñ;b©Bm÷)î]Ï ŽÿaëžštašpA·mÛ¶mÛv?mÛv÷jÛ¶mÛ¶µÚ«mÏw0û`ϼ "ê "3+2îK0˜˜25˜hðÅ%_¨1 ã¯J+ùŸÒd‹f÷lŽÊQóÆ€ßÞ[‰ªÔ}ìÈâ¹JZýQåM@ƒrÍ‚m¤ãbýÒv#`BbÿUsdË‘NfÐQ{ÛKÿ›fŒ†"ð½"åÿIa®¹c )VäÌ·<–,öÚ¥œéuMJ‰ký@Ê”©÷¢9©Pj¶TOÔ+üð(-÷}z˜qv½‘D¯%ïo¦cTg) 3R`7Û\øHàFò4™ebhð¿¦Ár´ -ê†f³—˜¡Šù*¼I×AÒ¼ÛÈ>‚_p –·ûGzò¹˜;od?ö­@<"ÆçJªÌ’ñoÅ.ìuÈfÎrö¡´¤aÐìHÔÅÕÕÑÎ˯O(äY)WÂî 0þãá1eÇb¬]5é ŽhéÅq?s­Q™Ñ×SZ=0Å°¢w/•c!P…X””À:ÞZßI¿ãñé q G†ZxufPÍk%ªãe®º× -ð¾´•gY¢±û‚2Àýv©‹Z\©® è™ó#HXéÿ¢Ë}òò‹®–ž¤ãDF&§mŸêJ}+‰¤Ñ¤²*¶1î±ì2‰уÉ:q§6¸ -ØAÒ¼uŠP(‹43‹oò±f1],î?˜¼%Säz©tòЄ+‚ØrïakC’ˆÊºféªÒ¾¿ãù÷9_U^²ˆ“Â@!ÃÖù9q[çÁ¹=?Õ“ê¸7&´OíÆnòë­h’XI…ó«8Á€ÌxT†bbá±Òÿ"„¥gŸ4‰e_^‰è!M S¿3Ù89øê~¢Ùër™2UânZ®vå±¢:iî3Âa$ Ræ xh¦v¢Ç\öóúW‚ÜAUë&ÕØÜ#ÉÒhˆâðý)ß;ø+/¡Yú ´€áëNµ=²Û} -tw›åyÿv_£W -|9|ûÔŽé÷FÞƒ*›äjQLGTõx7Wâ:Ë´Z»šs=Åa´Á¦ð2\–Ò?2ú8Æ÷…9îü ‘U–ãò7|(Wí÷JI¬ŒuAƒˆeÚÊuV<ÕÑuKî$A@è›@ ’ˆO5êÝhˆ‚†‚ùqp„·Är@äÒ"ßóÑ%C±ñÍé=ÄüõÄNàÎÎÓà·û§Oë7`hs=NYØêu³ºþf¤IôI¯$ŠA_‰\<Ô›&üµFèo.¢‹EŽç{%âó…ÃƵö^+üº‚£­-…¡b£¡uL.~eVT4³OÍVtÕ¼2—%d8K•ÇG,{!ÀaÆsÌ´¸/»æþGÅ“ijmXÛ•f) XKL¶7‚ÓÁ¨%¢"03¬x÷åóPÒzgxF^¬ÂË]dç»1å°O2\JÈ&ããôrÞÇÉNJ±»ç—þ#€‹ŽƒnI¥lHÕ‹ §íÖìÿ¨è_Jòÿá”Ð=h8‰Ïœ -™3ÙdÔmœMdd¼î’×ʉB“%Ó©üK(pWH \Ã;IŽFÁ“‚&e¬*`/e5˜ÿªu]„Ë ·´l1Ñ5qUïËJ²õŽzÒù©YýS^ùA[Ä;s4"K'¬{écP#<M~4µJ'“ýk¼Y‘¼ì1ÕîÓò,Nk†¶Ù©Hê>ec·û+@WtœéÓßVýC§/–ÅÍà;)V -ü›mg¹!'‹¤²œä÷žB‰KÈÝM­iïœhýÔqñJ‹?q ß¶èRH,¨ºÿ=“-2[S_ÓÀÝVãüð¿çÁ<ÌBn²y—ô0ÜFsëèÑñ¡ ‹bÓ𸯬Mý±,®ÔÖI)Ý3Kº5j€Ä+®*ó¾Ê±¿^.$~‰%:?¬[]6_®î»+»P^‹=-º×¤"ü!oVPÙQ‡3íOb¾+ëÐè9¶ÖñVQ‹K²isÓí£ˆœª`ž{(›à[-ǧ¢”G.‘¬'A]\«II Q{SÈUv/±×K±¥BûÓK Ž“ä~I ±ctˆ ÀȸÍ×Ì!È¥jÇ!³ãû«`ö¨IxG’ËòAˆ¯+ÌjtÖ 80õ‹sVp7p»×ìÌT—€Ò— W‚У‘)ÃcV‰qW¼\v…ÐÃ{#9ÂjÚ¢í¿Óe ðDê;ëQjç©´s+qLj?Šò}Œ½Ý -éú™V~‘ÿ”•ÏÈrÌTµ¤D0Šbt‡)Ûq'.,ؤÆÆ®_B L/jIü;â(3QÚ¸4xp•¦ÙQ£ƒSKÛN§Jf 8ñÅÍþ%¤›(Ÿ à,rwºQ9|  Z½VŸÊ¦b¡L‘nœžVOhEî€çö=Áš%Ë,ýÝç£oxIZ¿ -– ­üw{©DÊùi‚`æOè.¼â“ã핸ØUQ†iZc0вC[¤üJƪ¢ý>;þíïA¡&¼Ý‘“±| ã£u×\Ž„4=<=baâ°½*‚KÔ b–JÒÿñ[½¥míy:²ºLÉ<œLKI*[ þé'l5ÖWÂÑÏ_Ðfý>”’ÁkPVÀ°iÍx™½#Zr#P÷-¨}V¡:ðwïïbžš1>©Mäj¹î:'ŸÊyš´o¶ä·ç4r gTióÇœdµâl–X°œxbæàcÚ À »•2R¬­ k“qjKJ&Q)ªí¬.„'kÉKl•¶ÖË‚F-Ú­™½uG4Îõù"=Hé^‚K‹ ´ú<‚R`œ,ø? Vÿ+ÙÆ—”?‹dHS]öƧŹsYýŽµítçã’-°Oµµá·º7Áz‚a°öÁ{yÍ4¿×BQè*O¦£]L% )“™ëoÛMg‡úa)_Έý0q Û#Cnˆê¬ý÷«yµA_”Ý©ôlŒèÉU Ñ´ Qï4 ê‰£äuö1³GO ´Ov–£ËÀ9Ñ´Ñæ.ƒsÈŠ ã¨ß_Ï°ÊäPCã •p¤I¢Cv–Y‘†´~ -"ß|Ïy¡©°Åt/Èàãn§‘¦Pâ¢s@Æñc‡äcèȬ·ÓwöÔ_ËÚÊ˼½©ðí§1¾-Ô!*YÜúÏg–_ŠðtàžåË¢\u#ü¼gH/˜ª‰/ÜEGYÒÆx4iݪ¯QŒÆ¼ƒ œßvÞxT¸V¹Ð>„vû@A‘µñÖ¾ÀýZc±',¤7#Ò?ÞÑϾèÛÅáÞÑr$è‰#ðh.»F¿S9½AŒ "¦ÝC[šF ÑÐfù²ë©ÈX®~Úˆæö¯EZÕYôOÞ'˜µ57‘ê£ ݼzú³}ù¹¨b‡S=K¤£–ÝèäƒÍe=Wˆ -¦-kÝKõ9´B‘+¹÷¡ÍÖwd¥#+ÐĦ®tú'9 -Úƒ¯ñŒbæIÇ›ÛH&’-2¾êqZæ½²0<½Œñ¹F¨W_·'\ã–ìT¼ÝͶW縓¹¦Áa¿ßåÎÐÉÙÏ‚Zá`Ö9Ý]·góëQ£›ïVµVŸã9;ÂíÎÁ‰ ß‘¤8ð¾'¡§å€wS Ó×»…”¼*oUýÿÃzj\û±‹P’X/úk*>n÷ƒÚEåârÝMë“#<ûsXS–ÑMÂk.ÅfWM/åáSæÀøÄ“ÎèD¼Ž˜»_¾.Àæ‚–Š¡‘þÐÔè¨R}W8Ò—Õ¦# ì°eþ¥õA½ Ž<žhÖʬJ´Ã_)áz~ÊÚ˜Qm_¬1ÿ¶ßM¥{tìù%qÈb–lÅۙ˼gŸT§_„²÷[a@—\Њ0à>…“ÌpbZ“N…„e|–/Y§Üé\ŽK›º²wd3D€Áå,ÏNû÷}£šZÚM¸'S|<$ªs]ùWSÒòmï~'܆ñqÐPÞ–ï~>œYœ±2sd¸;8y­èhú‡]𜄡Üúð¾ô·­ -ûÆ¢e4 -º#f‡5—ðPÛ 3¸‚ÓC´]Sÿ’CoU#aM{‰íÄtßÍ/kÝÄËpjì ÊÈF[–ìõòmB´ÐN8Ãy¦gaõXDï+–Óé@WX˜VÐåë àú£ºJrP¾ÖÀVNT‰ä·CxWaw3–µDeÉÄ)Ûúqê"Z\Å+Ójh%'“Î@zˆÚ\Ö8!¦ Ò]3ýIRƒ'…äéeÌ ÿAg#ŽCÙ1éŽ-®È¼;u^ê*˜¡Kiß”Áõ¾Ãzd«.95:] M®DëÞ#VìK¿ùóðˆz hçN5¡Di«Â‡àÒõÉŠÝ„–Ò\vrè‚€4Òš’4ƒŸ¯R‡½ -Öö×\÷j¾„,êø朵n²²Á?ˇÝçÚºò¢Á ¦Døš‚ÚÍ=ÖîAÏÇеX½]‘D¯B|µ²ånkRue§sµ—xë² ÒËl²“}ÂÊ2=ºBTº-ÿM9 øü6n Õh¹7A­…ùù‚ÑM¿BjÊ€ŸYÚÝ 6 HÆèôY¤u/73óŠT i Ë¿ý…Ž!9)PâvCÁhÿÆX‘$›Äð HÈÒBj¡Ýœ4¾yÙ¦a®*¥÷ãU)HACP——²|ËòkL ÷:;V+Ýêòˉ{.T¬Øÿ YQ!—³Îé~͵cÈ‚; -=Ä(ÒM•þvSDzŒmux5|çáQ‹¢¾Ì9Ä&ð‘ÙïÐ-Hîúñ?fϤ(WoÄB󅈧¤^†æL»ErÔßÊÚ‡XIGܤfûýøórmÔ·@•k¤+NP)ŒtŽÏ. Š‹¼Ûß³C={ mÙíHíÍ:7¼3h#µ–d)ÑSàýäÜd8~P×~OÃçn`m"ýeRfm "áèo¡ÊÃ\oZ5÷QåŠW¢‹xòüM• :‹*Çr…M‡mòr%ÌtöÝÕ{ŠUœ â5—Ó4R¶Ù-b„¤¹@W|ÓŠ\Õ¯'5kD]`‚ÞP<Þºl°€,šÞOcÔ©v³4Žà[¶`¼®`t§ÿ¤¹é„\!ÚðáGÂxOÞý²ý‡ÛÒƒŸ~T7ÌU(h×W_oÕ®Ú_)„YËÕñhƒà½Ù˺¸IxÚ†ƒÞEfa”êÇ{`èÞ¼C©—zcXÏcaÆѪ ù¼¦UÙ%ÝÖ}Å -ÏäБéCÃADÅ,© §b‚7}›À€˜£ûˆqô§]†Üù¬ƒÖ³ätùÑjròëì¬]¹Áö9Jÿ17Ú¼ü3ÍÆé %/Þ)ÌFœ¶iòH„ ur:³à¹î¼ Ú!䯚^³}k9.¶ ‰&6vU¶.X/{!Ìmö+U@ïn´âãýâ6U3Øü´ãÇç´wð'íV«•´þptEPHs´“)C*f1¡änO]žµVSÄV2„Ë•/Üõ¢õØàÝ#Ç:–jàᲄƒSÖ´[9¨E¢ U×îj ñÚ Õ¢RÈ_‚Õ›n󤥑`LQÙâ?1LçÇ´ÝCê=€”­™jušcñ=;ÅYª±v,òû„:×ÎÃ;}_¸š¡ExŠÄÃðJ©_Á{â×Îãij™ÄÔ,=“iû¸á~~5¸61\Ðý¡ ØãF߶ zg“½$Ex^ÞÔö„g}rÜ2÷?¿xaÊçäÉÄYÍÙ` á%ôs¶ª›`¬‚œ¼QêÖ4x8X©8Ÿ¶iÖ1ÉçЪö 3ÐHÖ"¥)˜ìé…p1k -dϘ×,FL_U,€ý© Þ 䛳àámî!gl¢%8kžªKWIÅÆ‘µ¡Õz/›²)ÜäÊÁ?ŽAÝZr(DOÙý‚ÿ¿°¡FA«t{l¿h©Émå§/ÒcÌ1Ïš{]þmˆ‘õSuÐHTchBEÍä(Oã]Mß³u œqU[ãtu_ø ïâM«Xt&Çý44„xi“g™ÛX«îÑïš­#cZâNS'DÚ6¢7’i­‰#Ü,1d™Þ'Ûè»ÒÁãa½éÚ{4Òæþ×>vÞ})‚j%öò€lÛ í¹Š˜9ƒ  z(ÛãZÞÎÝ‹0,(VùEe óýÞ"]—2XÕ•»‘¹ìüûr)ÄÀ2˜qšEÜ2hƪÅîØqmeðýžT”Ê¡MT\Fr臱y§úfþØÇê½*:yÞ­WZ²\yØlñ¿Îd<¿‘ xà”•µ{_FïêcïЩ‡Q:5eÎM¬ †Å‚Ä_ÐEüìSã/DÞ£.ÔöáÎhõ7´c‹a„‰¬x¿/íÝ’÷¥Xë5oÊ‚Æßs{ö±Wx¶´{“§—»—&± -”'ןsƒ³Î4µeÛ,îrb¸Kcq‰ùÍ®ßfŸšFd% H‘h€ï_JïðÝMS×××]v "øWÓËûæCe§`Ë=y€Cí·ãžX«q?^4NК''À»ØÍž}lBÛ8ªEJ±èlt=eA}å°µBpÿn†€ËD»uyŽ’hqxRÒÉ÷ K[$E£/:Ûî6æ3EРüiTÅ؃¦]»×–’qs’½!´;’ -‰Á~·@´sºyÀï蛹6caÛ-i%+éžíÜØ”Œu›s³Ð%°L§€¼wëߎRÝçM-cÔî½¹m᤺ÌDiï$jÈM S -Âu§¢§gØÅÑ-”D¤X;ŠèŸ+`¸áåöÂ_¦YÆ"ÈWWÅ ´D`?Lô9ÅÔ/eYŽæçâ—?$Iî“Óê—Xú“Í(‡_Èñq£ ƒ”Xêög*oO èaâÀ›±0~DjFÞß>}—…î(WCÅQuMÁŸ(µz—&fhâQ¤à„¯‚…«±å ÒÔì\sÒ¬ø\ ó Ocs/ùà{^‡Y…™¡/ÜúÑÅ‚IÒÄbïÁ&‰c™¯ÉJë!€€(Âü I‰zœ;¸!TB«÷ÑáDˆ -éçÓª¿fŽŽëÐéÙU:‚ΉÔo³qYuúø˜ûáV{½¬»X…HR#žv_þeØ€Úê‚=ÖâÌàÐ×4þ ‚ꘞ6Ü^jhLGçIgÎu3näÒ~ F1ÝÒ©<à#Jë2¸ßÓ’èúéÝLèÑ:U­‚u³8 ¤R…]`{Ä#mP¸@œ ­&R=ßµ*ú§ ˆ×©’…ºðÑ]–°µL‡P“x5c“¸ëWàGYçpqº¼ïé뽡 Éj‘ÛђߥnniU‰yxåžf¯4Oaÿ LŠè†‘ÙUßÙè2öYÍ*}VkºÿqýUR[†ƒV•vŸyá÷´÷Æ—n'>Bwuz‚)ÆJÛ£Q{ØÊU˜í ¢*À¼ mCIð@prX•Üï‹»ºðöËþ¯íNÛÊ¢%Ûwe¥„éAÎ)eræÄÀcÆùr{ÎßÓ@i\ývT­:µøèÜ «~Ü`/ìß¿€¤sP0ÃñõkJ”œ‹T3–%”–¯ò­·¸õ¦YJäœ~ïÂäB©+Etú*†iÄ]y‘‚—¢¯´«kì `C¢~Ïw4VGÇ[¢˜(œ„¸á­C< -6F±ázo9ëÊ0f­H¤ÇßþÚ -×pñå "­TÏÖuÙ_‘[ OÑ+ ©ã©r¢=h°'Ò;8x -¨[þ:SxÊ3²fULx‰•&¶){†gYÒÝœ˜¼6ð ?2pš-Ô)ƒž‚·mÑ º 1£çâejØ)}5T¢½pcÐÀ -”EHâ~Qnÿ(Í’©0Hû°2–VÃ:bÖ¼ÿµ¼W9œöÍ3 H;Ìðì éÆÝ„Å+RÍ&ÃL ™BÇøùú‚Ùž!J‘Æ#€u]wr¶à¬ë S§Z§Ç~`ûÇMÏt‘ÙhÄŠûíô×iL†æKÛ ˆ¨“¼Èçòû€º]îug™ú [>´Æ¶ÀrlÆx Gƒ «ßðö\Q¼V=Ï°Ñ -÷)¿xŠN‘\­×PÎê¯m ìsñ“6ÇåÌŽQÊp¨íøÀZ§øƒÉíÄúŠø¸…%—+[×‰Æ „ŒÑVúÙ}›Àg1dÆJ%’¸oÇþ&èÃÎëyxþµY²UƵJõLH–«ÖÉ$ Ã1“+Òb‰MPñMŠÂÙfòrOwy±çŸ!>áý#Ëx IÊ>¼ýügÒk¼Gì Å«’æWç¿PœÚ@LÛ­)Þ‘œzQÿÙðÎÅoxþ÷Ü®ê²ÜJT~.ÊʼnQ’‹¤Á;W=Á/¯öi¥ØÙ­UnA–(¯YPÚË=¢àÖ¥JËF9lÔç—qMRyÿ]¬YV®ì†½½t †ñ+ª'Gl¾B~Hö ?™#twìDýR'ín×¹¬ò# ý·nläˆE_d}jÿŸÓ­¨¼7i„–qó¢%áZÆ<V»uP³È ÊI:èFÙ¦ ïâÔ[{¼?Y]¡b¼7ÓöðÕTé¹Sù÷gÍ•‡Q™ÓÃ$OBÝA`¼Q,2?ØA^¹—Æ~ï–칞‡uÏÆ­[òuÜñÇd† ÈáE’$t•Â´XŽgâ|™çˆ=:ýwæÁê}q#H~‘ïâ&î.#¤ñʃ§|ä#·F*\s,ßÀ7¥4'UH NÁíyݦ%±£'×ή 7t®'¿N›ì(o%WÛ—ªúë ƶ ']ɺd£Q¤f[ŸL²`BƽËFÿïò¶R_WñˆmXài^çЭŸÒpÙ‹g¨“[RãI-c#v¼LŒÌ•ÐZ¨fO,<Ö½©_k.y/° P 1W¿šÿ“.r\ÿ<¾®‚ëÐPwŽWÏíò²ÐH¤r머L‘wÒ²È^3ƒjÎZB ®Iq«ä×KF»î?ÒŸL&_¥ñã!‰ÓŒ1mAdxZ<¡Hd0Õ²°bêp¿ ³¹àv81Þó¯š}0Ñ¢”§ò»ÑL šÑoÃæ¡ç½Yûºew‰”ƒYùé 0FV¯ûqÈ”ŸÿvMú¢b¬8 u¨$Ï!¯zÔÒlüûÄ:áøH -¥ÀRÀ¾#‹q¬ÕÜ(ÏkÌûm^‚䊭åx—ÞfÝOdåÞÔv‰ðN„í?\RŸS“¿“«d5¸“†ó.åsvéCÆLO§Ã®¶ÿÕˆ¤m[Ãzd° ؃¼ü´RY>ÁÓ42àg*º^Dƒ1»”‰gÌCµðÍËA«ŽØóà©úªëõ«rð1üÆX–%s<ñÔjÇWÍj¬\‹ßIÄ'vOãf¬xøú S-„¶R‡ŽŠÌ„Êâøkõ.‹àw¶ªÓSšÓ00tóU+G•H/[á‹ò›€)1kø¦¿ù×NÄý °?ÔãøÖ:(+¶ ‡%ìúõJ4©.ÈÈ_ ·- ï°Ð¬IÝàmç#^4[ŒE ‰õož²S³N§-$‘…@¢·=ÞN6÷¤ùxtä2Yêb ò@0™1 \e¨Æætlè…Gå”–L^úB=©n#©2³vÎÆ -ƒ±öµ|VÙî¨ý9ПNcÛz×î;¿[<€á, ݲòqeéÆ(ǽ*Ikeþƒ:Íõ3’('—eq3ª½ðEÉúãШ×q/ûœ5•þÿYÝV{{W#bK«ZË/fK–ž4ÛÑQÅ:À˜PŸ’ -»ˆKõØKZf<›¹¡ü•¯+°ÐâF¡†¼+ÞD„ t¹@ìI 6áÕÏP°ê7“ößE3ÃHç\ܽ{%×ëÛÖ»¾ÁÕf&o±¿šLÒ„§³R¤ï8(€‚{ÚŸš;Q¨Hà­æòBˆ öæøù¨Ì¦å´YA™T¸¡‰lÐôütŠ£®Ùœë§dÚ@ùÞ]À莎" ¦Ö4GŠ¶Ù–8qT(¹ÐDN9*ywU¢®¼1¡EÅ®w"ú§ª–øV Y™åø×,u&ýȼ¯$W\HH,®l°Gí:UÇí„›öŠŠ·–ŒÿçY8Ñ‹ñ¦ª”°Ýô™ë"`­±›¦Éžt´âôñ.ÔS€ßãšÖÝ*ØàÎ\£ -‡×@rüy ‹ÔpÛ $“âXú%êî”6vš줤\þŽwR“pN¨4#™ëhVÃVtÕC«°©Ë—e_ƒ$~Ò²á:T™W©ž+–’•@*Nÿ¬ Y»–ÖE)aUßàí&×ÝCfÃç¡´\]f@¥$ÅHѸmçØXJ›ø)0Çö|£âåá³£1¯"QQ\ ßnä¿'J•câ;a‡~/' õ•U/7½w„ƒ©,SFÜ^3Š0¬œ q%† -b·ñßÿ>ªÝ϶O±ŽŸÃ×!¯Cµ xI„¶ËLv¬ÏÍÑæo©¥ò<—ÅFJgjFœÒâH"ÂüØ[øE%_¶¿¡Ð.ÿ¶”á Lüa€vG¾;§í!ŠT*‚º5lßi™È9’-R¸^{Ï ƒ;zFÜKé§:dÏ£sm?2x¹»ò=V°¢íôm>úXPÐh¸©œpªþ ‹Æ*'£uÅ¡¾v úYQ¢~=ˆW· ÊáX*ˆúC9¡ÊÄ -/-wN¡“Þ»èÜÓô/¢ðI¼ßö\/¤;nKýÍP›5xNàüX Ü÷Y]ûÌj[Ä-S´ç/ð>~ûôŒÙ”_ó_¤mœöª÷–’m^VvGõ‘sª5|/ο·lÀØNþG •Þð° -ûÓ*ž›Àí®õΕø¾<§ ÛE¹cÖ¤ï,>‹§Ð>J” -%¥Š¾ö4| 0Åšþkì{nþnXÝGwÿ½–Ã&½ßê_Í l].¥j̜ˊë”òÞR¼3<©»Vnô£.†AX! \éäZYècæEsú‚#rìŒY¸oŽé¨ßqJó z?Ðf,ÏÏÆWá:Ú{ÚcÅ"í0x$üЧ©E4dÎÁo=«ñˆÉÉ]–ØSrÓMÝ~ÁÃÃRœ{* -IË!­˜C”²¥êY×??«O4ÿ:CÎEŒe9ŠÂ§C{õ ëC­ þÅe5.ùg«¬ 6<øn±åª$¸¢.:½ulߪQÕlÔ–7ƒ¨€Vµ&ŸJ—ô\ÓaƒÌ—ä=½BÂß‚†:3Ñj]w¨ÛËÿÈ‚· ø|’záh¯zà&PIÌôŸÆ~.â@lF›G ’Çì˜e²d>=ߧ| ==«·”–þ+¯hqÏëØ6RÀ…Š3å^þ»±ä«¹íᾩðö y¤ö à|fõ}þƒ?ô¤#î X¹²."ç€Pêïmpsârg¢¬†`)•__A4L˜:pÍKoÅÚ+ÔTžÍ‡ì ¶ -yÓþ=¡#lôö9nS|5ð8$@’”ª«mÃCI¸8@HïT|Í4’~ì~<®&–RÐ/ÌÄšÿ Soฅ–. ÿ%Uº¢:v,‚ç#–82nm³üœ› ߈]¿ÜífoØAÊ©€ ¨¬Y³Ÿ“7³újÓêWªóɶþ–ïL jÆŒ ’ eÇ•é‰Æø@‘MV*ì™t’:Ô'U½9ê ËtU -ÂßìÍÚ.äÚ{i¨nnäHäP/pÿê9,&4‚!FäÊÕÖë°C×èÁlîê$*а~HLSý€2t"Ñê(ì¬êiV¯ÞjñCc‘&áòšî¥;úñ[3ŒÆ1NÞ¯ŒÆ»Ìz£9ªÒ«T)ð:ü«É”ÏÊLeЦëj•‘ÛËí£ß‚ž†8¦—ò5@7Ô„ÑRW[ïœÈ¹@2(¢—L5lôMøƒàõ€rŸC£öžöÅS-¤\»ÿ岊qè/ä-ÞÊåEG(‚>‘Šçi/» ’·>‘@À–PÚÎ*äÆÓ˜Ž;7 ¸j-l8!ÝÔÏÃÚÏfX»ÎbàWÎhéÜm§ž‹ j„?=0–ª™"=kêj,—„ÖëƒÔRÑĽEƒø›6­(å¢8ÎöýÐç„O.áÆÕI÷9,ѱöKÕ ÏÇs®ÏE4ÓëZ Z}¤ä<éŽq/öG¶_à`J†¸¼”ã¢Ó¯«ÑØú¥¬y5õÀNj$ -ØiBo(á¿»/'¥zù)¾c}Õé [5RLýµòe4—\rǤä–s±*]¢Òóž Ö=O\¸ÎëlYivK;«ËŸ¯jÔ¶-úsVä¤ÅBëy.lºÀZèH˜ÎJÊ5’~Ùl»BÜ9Ÿ^hÜKSUaSgkFêM= <|ßìú´ÏG.e%‹ss].Ó~B+iÖN°Ô÷½‚y”à?&LmÛ±ý/fÇ©æ >üÙwë¬4W’>@Å*ÞMÓÎADjÞKZ5³ñ=i&öUmîgÊ2H³á'ÜÌ ¼ÛöÀÒ2ö€`Qå“ówõxeo®}­ëæ: é>}ü|ÃPyéÈR×O”Ù]ETIb¾dJõJûˆÅ~CrQðã¡¢&w¹×ï"Ì}ÌìäÃXa·›Ãfq3áŸÆKO6/€õó…IõÂÔôïM©_ÉJ¤Ès§Pޓ‚ðOü×ú=®™Èã—NÙïæïÏsÜŸËSZ«¨úr™®3—Q¶mÐsêö­ÆŒ×(¤‰©y a5áa×Dö•úÏ×HÉ âú ^öü¿ˆÚ|zWùr,‡²ãþ -Üvì å”a4V¡rÞáÛjdnp—š¹ )ȃHÀÐ02~ qåEÿœúùâöEµ‘v¹8+sô¦ш›¾:+Õvý€;¸=­²# ?’frN¥_ð±+º}ÁÁd²zbfr¼gÕbRG´±‘H9½™žŽ6'Fç-Uc -¼à›«ß4ðm{ÖU£r:ÞüW;í) zNâØ”B`xÀ²÷Ç.z©£¥€0=`obýXu¥š]»¢¬^T¿ )´ ž¼[niÞ.Çn»(V§…V0zÉ›—!y“áJp©I¹ÚÁûʃ“ȆæÒÜ<5ÂÄbn„÷Ô¾®_#ð°$u(a’µuwì´ }é@u ZÉ>‰=ÄNÐBö=§Vo]Øãxç‘î“Ä -Õ75îßZDÖf’I¾ÚÞ;„- 5‰òm›eÀêT|eRuºjZá¬v5Xîô⎠}±§"iûòÌž篋OÈ&P×\§IÀÖdbԇ̀¡û¼H3þñHìÒ%¼”ìw!ÊðÓYÆÝMÄÌ™^_™:ºtˆ®,8]0‘|FÉb-ãZ¹ÞåzYShl¤AÌÄt²VKDpúxÉà$ov5v§ÏoB«âYÞüÍÒªßNH¹°$ÅWµõQ #·ú02œ2÷5˜~‚@ïNÓFj`‘9wÞÑN§²°ðÉ31üí×ý¯r´ R®“;ßPÒg%ùå‰H/Ó'‰¶#W4Ð+H÷ÊÇ}½&¯ýrš±P¦^L{’#Âi½Ž]›¿áº­[‹aÛœMôW=ô:¦;2Ž¨`æo¦*¢–‚#tTûPäÏü?™¶÷ æ—Î||ã­éÃý΃²uúÚÏÚ.À¤Õ‚ΪųF¿´%ø.'F;Ú¤v¨P»9ÂrZ«NNè»0ox!о—Tû¤‚yªÑÏÔ89˜¶’¯5ª°B9EÝï(Û-ê ædÞFtèëIϬÒë¼ÎÕ`÷\ö;ƒíÐp‰MAñq„w¬xa $ðÔXªFëñâ™Ðc”Ä|uš¦"Pes?CGqã*äMk¦óµ8,‘JE#û>âznLF(¬Z›: ÐmHøPcÎÎë19»f%ò‡½Ž’•Ìò”Z5Át:ü -îB˜01—o¬¸cÁ`TŠŠÒ™O'J QÆOòòrRFyv7tžù˜;àpSés¿WÂIКËÚsfè6Ä`¿®: Eþ9ãb„êý©qß‚%Ê#ÊûÔÆ’¯«üȼÑ;ùÇuOôÿE`ÿœ¥A¦¢ÃJK, QK‘Ò ‚Ö¥O‹xŽ@@2&,oé4¨m¨i h°¸2kî_?úYàÜé¹1Э¦,è¢còë„•ÆÜêH Ø¿+!üþUŲ‡|ÀlnÙÖÏUSI«#›x÷êXYœÉG*Ó„A\8Cм¸–kýCŒ™o?0úr–N‘óáÞKöñVŠëWEO¼/µ÷# )3젔ʄ_±/ß_¡Å·¦¯ã&ïNÆ$Êcm»#ئbÕíæ¿ÝN ÿ¼ixàz-…wÝt¬ ``#QTöéÙd,^ÜDs—.Mº3 =SŠÙ„w$`c©}éÎ/@'˜0Œ*Îg»´gäábD€±3nSGói~Ê3ËZÓ¬¿î™‘« OÞoM„–¾îéê˜TŒÇÆÀm@c¥ÔHJ±[ÜÂV}Û¬¯U‡Ÿ²:›†Ñ·'÷êaœ C¡Í”VI3­ð•¨ íD[sÊ8Ÿ*ã.døØËv­RÕ¶ˆrµ‘ÆÝaª[£Ü¾áŠY,ë¥â$\[iÖ"9m!HH„§–Lùá⾬ÔÐb Þf`®ðK+m‚¯Õ·pÊ1yUH„î–«Õz9ªüñF‡„Uê7Îò{8 -0æáä8t±§€sEÑö2»l…Z eãSã—ÜëV.mþ{B@4¥/:ßAp%l<#ŠQaéÍ/KŠtbczÄ àÎNu³Éïz'`¨òU!âùò¶õÏÖ {ýe.MödoXÎÖû.œcµÌKœ.­™jùl=v#–™­ë¯y†jYÇ «¦¶WaÕúB8®Í¾ni ‡›l#,Z…µÓ>oïëKVÅÖpd~õ™‘BsÇ^ýpé†ëõØÿÏ5P(s= -öü;®5&ìO‡.¹‰x³ä ÑÍ(\©ÓÏ)a+e¿©ˆDQ€óLÅh¹iÝ”í¼ezR„*ËÊÌÙŒg³¸£ o‚[CJœ -Úh@ŽSªÜjÙn.¹”Æ¿ÃØ»© -[ôDygb8Xë.ß±Cºgô#£Å§Hk&†÷Ò*ÛYkp­¡Ëq\TíØQÜ/74\xyrLÁâk;ku—NúØÄKš,éG}\õúEC<~>èT½îQTú¥ÅtýÐÈ tî)ërž°][ob§¬ôzŽÝ© RšP’ž´NØå&úÌ43•aO-ãÿëvêä¿Df:‡ ÉO®]$/&Ní˜Î˜lLbÿo¥&™ptþr‘ ÄÄœ†æ7]SFt~¸„X§ë)§¥”ZךðŸ©>%±°bVžÕ9–ª=8)©ˆvà-â ùº~Лe{Ï ¿MáýÅÀÙëA3W;Z¤36œzuê;Œ·Æ¸ ºl³Kñ¸žÿäûܽ^×`Úv¤¹JèR“9ÌóÙ1¦›c« áEöÑ©Iàùî·ZºaN쩶»à}®3š§µÉejY{—°sû±„èXKÛ€¾Ì…«D ÌMÌÝ•»å¯X£Ç‰ïÿ Izk"Ï÷WŘüu†‡ÐB •,hGIé— Þà\tÄÒÃõìqÞ¿Í)H. qxG‚Yb©¥a:•‹;XgèÓš¾ò_äR4”Åü²úOðß·ž½ºïë9ñ®Š$ò¥çÞsþÇž1Heþƒ\T¨ ~ÜW(£ðPÀ«ôÑ.ƒ- O²„PÉ03¥2~ªe®Î¡~ÐÇf1v¼)zÁ—<³ àZc¿KÍÿ6wb:+7¥ñŸhÂ=ûšõ9é¹áËÀ{§n¿-àq:w¬uîèäP÷ €Øv~´ZtœV.¾÷§£|$Ö&®¦ððß §–z샨 –a¥ˆïëÓbõ'Ä_’ñ¤ÿe®®Ä#Œ•\"€6j¨ÇZ}Zå¼ÆMÛ -€,ŠÏfvd[sîù‚Ïfã9‹MÌ'7ôبʽUTi ;ý;ë-:grpŒ°Z~GpÖŒíýÍŸ<ýN·Ð Y&29(xó·ÒÓÂpLƒwDÏ|»ÿ²Ç¬øòÒjZu<ö¥P6žhÞ=”ÿeWÏa#Y±@£Õñ7û¾Ýࢋ›gˆ%dù¯L·<&¯Ðö 5Y#·eƒÁc¥€•Çôb7m &Ò­7êÚ-vbÅ‘¿hYÜ)Ö`°-~Q;7’8X4DúamÛf†¦›¤›drO7”ô^luX<9"žVÕS19î*Ô¬ÿƒžÙØ @žGÏAûÕù–¿<.e…(õ§®“SxÉõÄœé0KMz¨üðÓK°#!b¥D_õ¹ ômT ëS ;çZU‡:€m’Û†IB&˜¾#¦¾‰½·‡àõé\–€»ÏÇ û4 ëÑÚf“±ëv»´^˜.$Ýpm£ö K|ëÎúqe¬4Õ8döwò«k ¹Å:e{qç¿yί=#‹&&<¥óä<'=Ø)´Áhàáð­ö$/´šÒàVN fýž/š ¶7ÏÕú!.uªŠÖÂû0Ì?L8•òìÀp§ìÀ¾8®inPV£–v2òqì•ó‚ð(ÞýC7Ê#䇞Ùl±b˶üœl+ÝßíZ%ÉêðÂœ5ʶ¤™aŸvNÄôûoK^³=œ9<y׌B£êBÎ_PÁ¢*¢Ê$sŒO‘½¹H*Î 058FbYvæÙo+íÅþô¨HßIcó¨,–§k>{u]òJR˜.†_¬ŒÊš4žÿO!(šÑ´Šßsj(áç_[ÿþç¬##Ó Êà"ÆksKΣ–×– â‚‘ “Í„N%Æĉ‰qÉY–o|`¨0µÇ¾³iWYázüˆ}xW}Œ±Ø:¡ãwœMÊOr24×u"_Ÿk{ˆ1²Éý¤°Þy°Þ¤ó˜B7Õ“§´–369}°", :72*€=Žø5JÕ·_-‚oHœS™¼ W_ÎÛÕ áÔxC‡r齎ڵ”„lðûnÓI›¯2‚sÖ´[Mþò‡­ÕêN¢Åý -é«ðn@è<¾ogšíòÀ½Þ`f÷òêi}IrÂö‹¸÷€¬ïH Nxw…,h_C°¯FHƒ6*‹3:èõ>/ËBÍR --lÚæíñ¹:Ç ƒüâ©xª\À„n„µD+îÀâŽÇ5åÝfî8šåUߤF:¾cŽ,Ïž×ûc´œÆc«®µÎ6„R?( -ù¥ÀÂk¿ž-ûÍKyy:Öù¯wÓA˜KÌ3BÅغÔ-•¿lNÇÚEh¢ ­‘ò¥s±zÿâ›xÌIÑ }¡ 3ëÛ< $Ö* mNWíǽó$s¦L:ƒí#Æ&qਦò»1S0¯Ýy¤4n¨’£Zƒm>÷q°xS°\·ªƒØóIBJi‚%ŒníÑ‘ŠK¬e˜Ai ¨7ˆ¼ -ø¸Ðfšc»H…ȯ¡¼§Þõ÷U­W6ÝZ}ÖËܣΠÓFOá ¤oX×üćZ×[‘$ìëA`|×ÑÔŠ±'ŠÁÿÈñµ ¸VÑqSDH׺=•ãªËÆ6ƒŸ¼¾†çw”ržœ7ò²e‚hz÷A4MoiùÙë’àÌy ó"H=ø;Ûƒ ó',z%ˆØ?7µ -è%ä‘lTJǘëÀœëÂÇçÞ"=ãâÇþÑËTæa -¿P0&ú’R·"ôÄ›qË@­H¤Ea¿øCwqÒõî]2ØAMæâ4¢*ÿ¶ÎiIEI¢mÛ¶mÛ¶mÛ¶mÛ¶mÛÝ»mÛœû>ç**cE$Þvv­Úùì6eå·£on*°dóÖ'ƸkêßËðíuó¥*>#a±ušBd–<0ëǾÀYF†„7÷àrÁJ°9m¯îR~´5ìÆ×Îb ¢É‘ƒ_žvi‡mU—ùoW fဖ{ÃR›WˆòWߢì1•Ém¢?cƒÿ™{Zóq£©pE—+Z!.'>b­%)®ì¸že㌨Éåz‰M3N»¨B©¶MK1ZÖºp=JK8ì‰n—¤N0-ð=ÊMƒs² °^烙R gýÇö>Æ+ëbÓµ sêGçÙ˜õLFä=P1v‡FÑÃ׉”²›–€ší&ÂCÖÒùšÍRš %ªùBàÊ›eë,çå*›©U©=Û4vrE]žðR¿k*èéÉ0Ù©ífõ§‹tëô¾’ñ‡Õ² `!PZ“²Cék4%Ÿµòv*ÒÜøÝ 5à;_˜“z01¡ð»¤#÷‹®ÏTß,w¾KY.È2o¬…ùÅûœâͦ -°¬P8ðRmÒÔ†éQCå°A4mr,ÏzŠ¡@܆ØRøÐ9Ât>í -Áë’(oƒ:íR!©BÓ¶þ˜HxaæjNë?# 0“Ša*Íó­Áã4ŸçÂ:ÀiÄôL¸½‘™à‡zl«Tµ•©Šf+ÂF¬ýúÊnpW ;#·K,­Â~!_l–Y~üæ kHƒŠÎ§íÀ ¨ªƒI©SWa6A#ò²8ñ#¨Þd9ÂjITpZgZp~ùù ~»$zWì üéjùBrZ‚µÞCoÓtS6e£Wü ßLê/?2Jgž¬¾8øõ«À -¶îδu›-¸â©í2‰ôå ~M;©ðž[¯¡ò×ÎVwÓÓm¤º^}/ŸEÆcíÄurÚ,- …|Œñ¬§Û/’ÍÚ†é**ÎF¿/^öíJ•N̾G¦ É?b¥&ÌQ˜x<«µp¯¬öø…Éågs>ýCGs¢ÓnEœÔö>Ü^o:·µç,f;~·FøaÁŽV;Þêx÷³fæ'<“ˆx”`$Ûœ_ž¿Ÿ¾´å»Sˆa^^ËH]”Mcj-øõ¤¹ÅVF¦¦¶ÝÒoˆ¦Ž -†90^æ2Û®ý¢©ÚH­Ÿøšõ¸`ÞØBß”9˜(ä@!¦ü×Óô¹7ß4¼8(× Óï|ê”.+¦eI‹ 9ÏeîU29fÁõ³×š%–9yÊÛišÙ’שáVÊ­«;B"NvþàõÆEÓ€š´‰0Úwö‰jéþuêLEÿå+¸ù$þµ’ßÁÛúi×éUKJ­s»Ï,Ï“CÌVV›[7}ã·dUdî<3”$)ÒpMÌ‹]¸9ÉqiI,x ÑTzXwp¯áþÒ[èî~”; ãÅEk§ÜÖh3gÄx u3¥ý¢žGàšTΡ÷" ¿¾Åq”ßKO²²f1/©Õ‡5ž¶ì~T@_C½Q·(µÉèÒge$ùGÆ9Ææ€ #ï„ØÚ:ÅϤÏ'ªŒÜðê,ÓÖ$WÿœRíA`®d‚9í³¼¤¥µC4ÀX„ŽBÝ'°8ý-Õ¿,W™y~c…ȨåI¦Kt*E.ãâ±üÄéó3)3#RCsX£GT­>1è¹NpÐÈ <]0ì7¤Ø+JêDòÅQƒð±°øËddiVI‡ðÅë¬üU_ I ¿gd÷q¦0î ëÅÕݨ…⯠‚D>rè"ñ&;Ž­Ö.n%±ºŒžÝÙÚyb4'Ü@/…äç“1†º¥Ô´%x[Xfñ‡í­(„¯gZTþÜ:êsIVó¿ž!á—Ñ­q#5«ÉTèDJ”ÀÅvŽ#üzK7TK…! YzÏú-žÁÝ›@a‘ú&L·^äyÆ2=I¤²B$‡ÇÅÕ‚‘p—£ãC†øÀ|I¤<:VüR”…¿ë~xaëÀ›Õ/ •L¶qcãCõ±SŠå„ZDÔçˆ-Ë ñ˜ˆY¼ã g$J‰f5áowòоL÷l˜òÝ .Õm*GAÞí˜D=). Ü“ü7“@H;GvÌf²µÌeØ‚A 0ÆÚÂ^w¨°Ûeâ§ÖøA÷±ŸéyYÿ2iÔ©‰@d€‘кº?27”ÉÅ'ÑàƒU­a¤Òc‰b,D”yúGéÊxŒ1wãó_û‘?ôîâq‰ÕµxBfÙ ªÎÖ"T˜‰ÍÄ0ˆÌ«a¢›ªçÁƒ_ü-¯"UÑ@\yOðå=ùÝ°î´çüÙëÝaÂCâÌÍfb¸MX°¶Zü)趕ªˆ`3ƒyŠ_ßvj8(øÄø*é{Jkad'Ö?—jÛ¼%U…«&ó%3ßR'¢ÊæfÅÍÝÉ­Aˆì㾎¥:yXÅË»5(Ý~!ÅYe„¨)½&Ôð¿ÅÐÍ©Oo7ý?ðŠ -`¹KipÌ{)™JId~eQ@~û}Ü’ N«à-ØõÊ"¥Éuɺ¯ u{ +÷AXzû$œh@M$´ËÖn"¯(Ð^Ÿ¼ïœ)5v<ª0ÿˆß¡1â3-çd‘ï /qQ"DxˆŒâÌ>–m¢9­5(ˆ…„vá›.dû÷¢<ÒòŸBvºî˜·˜¿¸†Tj‚á—5·?€ëµ±°%¾ÀØs¹Är³ZA;婃zŒ¤U#]ï&Uˆ²¶FRùnßU«ê­°¨ÜJlŠNR½§àŽÈ:a"è| -@qꤗÂx~ŸNæöƒp,¾2åä^·ÏFÍêåΤoO.µ¥¾“ƾŽÖ©Â[ËNG& æî”Zªµ<ÜBRŸ ZíÎB)2;«F¡é‡á¶ë²ßí—¶ÝA„Ü8Q™dõæ'[h¯p³Kv<ÕrÏýùOª˜ˆ/2‹ý.ëeC®œ®ÙZ§¶ ,í97?‹þcW¥Ôžï[MŠÌ”sÝ/§aÃ[@_ùšŒp ¦‚PûÀ‚Ñ­ªw¹¬ÂŬ[šªêŽEÚ.ˆ«q¥ ‰+FTûôN»ã`"Øq'¿ bùòË_†Ql·ðŽË -íÝ%IoX 9Á.w—læ!MÏíØåÈ^4.LS ü9{©µfÞoæNþÂþR‘ÔƺÍ‘­Ð8u¥'ëìÅŸ”~¦y{?Nq‚ÍÔxþfÒ³V>s@1*Ô~ÂÊ=üNírÊó4Ö}ÈÜ9$_ü2ò†ÄSD+EclÐÌ¢SB0îÇ¿]„ÎRõ¨ÙðÂÚÀ¥£ˆÄ½ƃQnO^Ø0œö“ÆôJduÚŒz¿)|͉oñò£#j­r¦õõ~ÀP†igA>?†mŽûšîeHb—ÍêtkM¿ -HÀM-½ê{Iê©îS¡€2AćÖ½0á‹Íp£õy -U—韎~óÔECw ^{m‚b¸q›4´íÞ¯?¡ÎŸácUK‡ãötÎǯL-±ð)ÍÁ0+YùᾺ++ïÍ2{ê<ü6;,kÔ–ü§;é ¶"qu\2ŠÙ,,5z”ÀC§]ÞêˆÄxLó* ÷óMÇÔxÞ€Êã¡‚2ñ•Ñ™=íÝa!oå!mì]”š"]Jñ‘/Á‘ -|Ñ“¾‘4vþýgÚ•Í{Ul·qFg2ÐA‚D)ÃwOð¥¹î…ÈÆHÞ7âgiUoâÎ=}«"磬r"…7¥¡oöMì0q}žñ6¹Xh<£‘ôŠÑAgGY0~²Éår.2#ßèTlür–I¾,Þ]†{œd„²Pûy?<òiä½Z8ÒXÃæ‘{ŽUš ŸÖŸv†­°É)IBÜoóßg¶×u%r‹\¿5ØTy‘j±¿ðñÉo‹ªú^¦áÈ'£Ôú,7¯âÊ+:ò„÷F\³!Zwð뺯5Á èQL(iê»FWÈY55€#g8efÉó‰ÜÄ{äsš/©‡†Ë€ÿT/M?²ÿ6¦žÿü'°ô1ù8þ¨&èc 3Z2¶<\g‘rtðÐlåK¯E'™"Ñ#ë€þ£òÿ±,%xIrVTÓfšš”‘!ãKS ‘ý ˜bÈÿT|n!Ów5—×C} 0ËY;ˆ_–»­@0Ãr9gØszí•“P+±†€ùŒølõÿÌK|C>©!„)ó°h~‘y,k]SìߪÏUýœdq e~J×’AâÄ{-Êð§<@,ºâ\è²¹eR&~$â7[%HI*¢E‰ßzäPmVÇÄ—_ÑûøºÙ1¨0¢ÏåÄΊ΅GŠuŒ|8Eå®*šÊ ÔÓ-ƒjNPÉ™ -_—Ô<ßeû1Þ`‹kŽfÑ´šè.h²Eký•¹ÚSXÁ‡Bv4»œ¤ëoþ2í'Ô¹XæbHi Œ’½L~3E]ÒÖWÀâ-V£Áý¤„xa_=쥺]: ¸ìszAyŒQ¨” “0èÄnäÂ#íB¦W_ÓOÄXÖè¡»‚_É7{K†qt;ècóO~DÐ=ùÊØ„ÚwgF§>¦ôdÛ…v¡„ÂAÉöï“+5zÔâÍÒÙ7ع} ãv¥¥ Qnž«ò¨sR°“Ä~'NÕÏD±i‰áRµåÓƒ(¡;öæ‹ÉHcKǬ^ü‚¯‚í¬1ÿ»V³ö‘éWŒ  ²CË3"ôÕ„™e -•s•)µÌZBîõ-A…óz/Þ<º–±Q‰3©Á‚œ^V~ô¼¦&9ö(ƒµDvz¥!ýàÂî¦ZR‚³÷÷Ç­ì †à0»^ eLç^±Í©]qõ´-÷ܲܰĺ'û¤ëËÆ0Ùu¥šP¡=Š«Ržn§€ÿ.,,×ÃhPäÒ5S‹ÙNvýC ˆÆ¡«Õ…HLŒÕ¢ñÀžtpèa0³‡)H»²Ç»#¾¤dY ¾z˜BêtÙ@á\ †Þ¿zƒ«Bµ77úMÿˆ:M ÏïÞÈ)r(,lN÷@¦Œx£zµn¢×Ù½ ÄŠ]‹™º€†¿w?E©ž—åât‚,þÃ-; ¶d¼†éi¼Ë¶ N4*l9(·¼Ô~3Ê­#X”‡é¼PƒLÅéë^¹ W´S3^Vp®}¡%韟æ®H 7;u‘“g(xÝ.*³× •ª$Þ‰ÓÈ«ýç游a Iâô÷  ¡»eQ8ø—á¸ý;9­H - -Ë´sÈ$¥TÞ¡ŽÖúzu -;n…G2ľºR¾çæ;H~¤vAe—Zpum*Ðãå0µ5ùe×éÅAö~‹®}JáÏ;X¶£yॳÑ8®ËŒ\ÇÀ5öR‹1ÔöÄH! -ïqC*a:T3!."[¹¸mÔ›'ë¥6íÎôr³¾‡ŒdGÉêï>ÉÖc>v}.[›µ¸?9Y™(¨B/B@ -øE¿ãý?2{Ö3á׉ÉPÄk<*x“‚³ÿ(õè‰Õ`¬Ù{ö+î—IÀ¾•†pÍK­0§™ÕääÒ^õG›ò,×6‚I‡÷4Rœ¨ìýôq?/Šd¬‘(cUÀùZ ’V‘ŸCïŠ"·,´”*fÃÖ†Ê1ÕŸ8¡E¾Î¯6*a1ên¾³y懴VÆa;bÍ:«jJŠæ·½ã“@ -ôœÐ3œh'PͰÁžßüúðtʸ*"‰¸´¿°¤¦™Oš×-Z%àÞ×ëÒaG‘|XÕV‘=ˆñÐ@êIV fÉ[ž¢P‹xü4nŒ„-“^§ šêÒª æ$*jMÜö¬œ;èðÎîÝdøDW´ÓZLYKÂeÂ]Ù)qdö‡4XùçJÍ( »l„³|-B)¼½Í„Þ’Ö‡¸‘qæTá$&̧q$Q´¹—Kı i~ïàÅ&S|;9¼õÏjt»_³tF/B¦‰Áœìœ$N“Œ/f¸ý¿šÊ 7£ÞĨÜNpGŒ¡+¥+r;W Í?`Ö÷}äFëdRÒ‹üÈy_} -2 ‰«ë•}c' êMdg;½›˜QEð¢¥Iá»°ã>ë<#vÃ%hŸÚM؉¢é¾ Tè§h,“ÙM¬t ãÄ'Å×E¡pDø ܃¬­»;«ÄB 8±u£È+ìA]ÖôIÚÒšþý“Ç%¡žÐ¥–ÐfgЫ ™íA"NüÓR”euºWç°{-ÑFêGŽDÏ ÎóxïcĸšxK¬ —¸Fn¥¡/iu;K²Y„Ï=–½é* ,\?ó´^Ÿ+%¡U9ôOza^X ç½ôÜडÜÕÅÛT²ÓáXj‰ÕÝË¡±“‡¶tsÚì«êF~ë -Ÿä$!m­û È‹SÔ¹ÔØ<(4".4€¸ŠßásìXV&É8×M>Ü÷±ÐbðáÀ1O^U—zˆ:-ù‰Œ€•Šš óÕ²ƒ_’X³Ës{¼TXß¹{ÊÛën±M­bè>˜!+ÂÓžÙÔ‰ ¥ÂÕûš$~äv6 Ð7H:ñ¥_£e`ýŽÅy/9yé6újôŒc@8&þw*[âyn=Éc^Öz™„ã 螦)ÕçÊ€6=Fhœ¶MŸÄˆÖåØŽ0ÿäÑÒzõçAÝ£«ð›@i:©JÔ ÷â øPËœ 0ø,†ÈÀ ªPǶ[#-¦ ¸D~Ìi_$F8+‚!ìQž1ƒà陶¨ÿ¹Å0épêp¿zy¾7ÖPÒsTÓ='=òp˦p ­ -šúk¼2¨(ŒTL8ä”IðÕþbIæEPÈÒ·Š´÷¶±‡‹Ö†¨T©~LÝ3¸wP«4¤Ÿ„ ž H‹‹,ø±Å„˜áÅŠÃÄÏ͇n]à$iÐi  ü»™¦ÑxÖ™`úÛ8,Jõz„¥äGQÂeF|×Ù¡«Ш£fœ)Lž¹cÎ9Û¤X§"üÎv8Kž=O}›X |¥ç9œür!«ßjÑr”y¹T¦ª»õ'ΓÝ]ƒ‡oPõœëútB¯qØØ\ )}€»aáÌ1É Mªt‡@Þ£ÆVÎѺžOî™GŠgÑÄ`È>š®9¦/I¨éµ¯j;’*®³Îzà"]”›Ñ[ÜëyŸ»¦Qúº}ÿéq(VU,0Éìæô”é|¾Y÷r®w±çõ\p|\( \ úg Á¤L¥9tLõ_TÞ*}L<„À¡¿N¿+«xxú¹ŒíûŸÓCPOÊõwŽÝb®p!äswÏw‡TÐwGÑ1&2//´òèX“–Y9¡>m5¥ãÖð¤~&ª!åqJð09÷QNÂà b„Ó|¦ÞN¥rr“^ÂŽ - iþÁ|ÝÕÌ¡‚u×°ç£Ü'¿Ÿ-pÊÄ¥®àÁoù ×4ÔÂúK ÄqW“]Ý¢´×“.29 - jwymnÒòáç¹…c+^ï–"± œÿ/Fû°ü¬;îuÑ,É终kܲy¤‘ßƲ5‚«æ¡\ò’„̪^ê €vп !HPP5ôHù²â­IfRŠýÖÙ×Èl¨I‘iÎЦXæTDª'•lŸ£ÁZý£jBø`ŠèIùOì„éMµbˆ¥Ð VvÆ™M;»T/Á©×J¤÷-?4‰&²Ê,Ëã·ÁaõTl–Y–·ò/t‹›o;_~†0†AKç¹SHX9¢v¤·ËX%Góܧ­\Xôq‚ù®¾…™‚à«t -—o>¼àée~§Nb ™xOÆçÐl ^—=>e0DbÁŽa´+;/ÿË„h‡² Î×Ðgb'x@NyòbX±Ó+²Zµt$„: -÷|ÿé»U¾Ÿ iøV|Ù—i¯ç–r»¨qà!žQNä^ „ -éäzòžÑ~â@¢ÿ,¼t]ù¹¡a<7Ø6âY¸Óœ\ߘ/wSÁþÔ¦PþM"ƒã æ %Ø»Nå)|™²=ÎÈÎÝmìzéÕtcÿ´ø â,•'6°)͉øWÂÚ¢ÛHå^3 <C[Œ - ¢Í7ocÀú|7°GU®ûk{™©ºùÒ0|–¨`¹„Œ}0>ÂÓ¹é˜ï1ŽËÚ×ôàMwæEŠàøÁ-ƒ²y¥ÌžT‡R2¯a9hï -/ÑÖ<<än+»KÚk+ÚÀ?ð£¤K¸¨™ûh^bdhûóf:`ì·œâsïæjê>¥¦i! K6ˆ TPòN§§D##JiÈïÙ·% ÎÅËA+ùÏÝ6=¶o`ÿ_Ž¬6oéøÞ/Ôë?úÜÉàÆ,!P¦ ƒ_^%Aâ«_î%ÿzÕ!N¹FÞ¨…/õñ|ô÷ÿ¶¢BPémiAT¼]dAÈ£2·iÍÁ¹ÙÝFFÀÉÔÔ­&Q3ÉKÁójnÄ–éGÇ$fíT¹C´˜/.j¡â¹ýs ¯^äG"†šc‰À0¦øJd1È`È1ƒUÑÐ.B±kB5%,HÎË‘‹}®`ÞQ„+k‡¦> -6i‹ ©æŸÑºcÿçu±Ç„š¨S ‰YÎòL¶">û~·=8Q•Ä?&¨ª ccõôÀ©ü¡L#øÖQXª¸˜ ª^ÙmŒi¹çÉй–làñöAwL»‡%)Å8¹ÚZ'ô,߀¤TÄ*v)“ÌŽX¥(÷Žˆ½$ù #ØÝlÕc”n—ú7ú!±Ýºm]ÅÑÂJà}á;n@ÒшÿÉmX®9ÞëÛù¹gÉvákécÂúÑšÅS-ÂFè¨`hNÐp¸Á{Í1C,HPzyë¼vNsöl¼Ówã¿ñ¦©ÃÀÅ©Ñ8¥xÒÀf Òo‹ Ií]0ÌuõS´É/ü‡b5Cî8‘ÜiÚYÉæï½ áÊÎ\)wÌ^»Ôx !¶ßN¿æM踡‡©Ð>ÊT‹³Ð=·.×:[h’ëLÏòîN>2ï±:ú€"ÕÛ"FÂí®£)û>Û[°—OABŠ‰eÙÓ¼Àþ”é¥y§/òó'ÊÌ>–‘5ŸŸQ+˜ø« ê…É¡Ð:Š£m‚6ëî£Z"Ü9â4ë@¤Ú'4°b Y¼‘ôÎEd2òEI^SKuµ]ùS@_¯Iú?Ù0ÄôA˜Á]‰¾{šC°à¾Ì¸¢öÁ—KÞGñí¹Ÿx¹)(Ÿ[ólÒÅBÃ&RlbU¤ÃEçr‹ãîû&§MKyêÚ•–©W`Gü/Ë‹Tç ùÊ;O£Á eös>ƒ)è¥üÕCª²~Í“ j‚çh9I@ž/ŠfO@{•ÆÙ6$Òå„«Ôa^Ö„ÚÀ…êØ•æ6iw¡¦}õ«åÏíóÛöÇ}ˆ©OÒîŽTæ =ôkœó*Àfé<&-’Ò¬úƒ"a)™–4£%à).´òôÀï N˜Ñ\LFÎ$(MbZáDÈ'UÆd?=+”ôýÔ²ÿHF­oJâà‚‰H¢6ꌯ¡Z1Óëj}sÚþh}ƒ¶0-Ò‚Gtóœ-gË¢¹òõ÷}–ƒ–“Šx•1Ð"'.×}2ñkÝì&ÐÛ S"(—ˆÅk¡¤²˜q…%‡ïÏßÕ"ð>ÇÔÃ1+œ ïD®G’*;»ž ¶÷aa)-œ›Óº•2Ö#£ŸNÏþ±´ÜMu6e³¬Ñò«Ç8ìåº×åA¡Á*mmm°”ðŽN+Âóa ‡Å}nïD”ž #^v˜GðÍDÏÎÞ´Uø(“ÏBÛÔO˜-@m¼ž&smŸb›LE3äý^¤HÚ#š=Ãê­. 7ßèiMqÀ309iA‚ô´^ù §*>¿J5CÊo¯T9îîÀÛêO‚ŽæýYÞþÑ2xÙkû* ·A~Mü`–F› fš’²õ º}´Þb$çêÁ;•®;ƒ¯”>É)îÒ£_á¡l~óä{¶¤4;­ÐgÇùÐüH!û ÷¨IÀX®ŒŒü’à•“/c‰“ƒÐ'ô{/­ÍÆÎè” ¿Dâ=ÉÞór.sHÑ£]r_¶B_Oˆ¾­§]+í¬Ñ(!Õ¬Ôœ™N2Mh½—ǃèÝ4ôW#@±È$⚦°Uô®fŠ4ˆÌ›™³M™òœú¹SàüR—Sr:E‰ƒ7TvÊ~ßÇŠ/¡’7n@xè;9+R€³6ê²5×@C$Ñ=ø¾!ye¾uuÆÞIõÕ„+:ÏðìñÈ:Ÿ» óÊbMì` êþ…Ńò¶áî•“³¥×9ƒDyúáÁB+2òº0ôANÂFì3œÛ繶Œ|’AÏ(·Û4´ú]ðÊ‹ý¿†&xh’nT%ÓÃK ~ôëu$ÌB;-l¤!ÂÈòrÙrWÒ3JLá/g$8ݶQÍ»FÅt¾ÊÞó/ÿ`q†ƒ<±1,ÈÙ9÷/,"¨E9¼:‡¹·çȾ!]îWH=(Sþy¸ë­YRe“R,¹Ùn“Éí eïp•…š2=RèËÂ;þ£J­`ˆ™ÄüFB\™zêž /šŠo\{JÎyíqLßlðd`üÉåè8O‡pª²õ!ÙqˆéZôê÷ ³ì•¥ÆGÑ}|6#;̳í®…¢>Œ`_Œà1¼{f±À™šÑ’§dÈ:G/ïʽ٪Ùò~¼Ü…ì ßÝ,“‹îjäîqØGo\Õô߈ž­¥$?ƒ—ŠKÓm+"¥1Ówl¼D†’Ôº-óÂ¥†Ê‚G¥½‘¸Ü•T.9­3îŒwnªã?tM»NT(V¨ñÛê 5ù,½¶ÂŽÉaõGáxbaàÝx?Ù}HGÊQà7ÛÌVêPPÆÐ:›E Ñ.ŸÑ(˜SlK• ÇtŒÈR7ùx(š©%7(o²bX~ÞÌ%åB-™¼4+8î‰öSOäc$£ Dƒ4#Œ,o…ë{ í¤A‘n¡¦–ŸK>øÅ=¯ú>Ø[ñ8-0;àÑÔŒ”ÐfO'G²q&sâuWþË¿ŽÒƒtŠš³ÈÛHìùCµÌ$u6é ËàQ~ÿÔO&èÀ²amÙ”ÀVxž?%˜Ûháç6 ìQN‡ÜUx¥ -¤S”Ô ­ËUåÒRÙצþ‡ÄIL)N¬JBx].vhD¸Å±–5ó­[Ô¥©Íö`Ò>Úóð;·þëvÜDYóÔf”X‘>+ˆj@â- ‚ ô×жìòØ­Ûi­ä¯ÉO -¶n“ò±õ®+ÿѪÃBÎë´N’~õaõi–¸rÒVò åã¡j€;¬Eh‚Æ2e“mƒs×'sÜšŸ‘z½›oúäé¤NÐYëù)í¢Ô4¾Ñœ¬a`ÜcÄ«¸š|ýÙwzb“ -KU ,õ;õ„;N'ࡼXþåò­ñ®¢Ž¦ÕtùϘÁÕ|£·ùÃÉì´A 9*¸´ãÄy€SŒ'tm–ŽßŽ7žRX¶Íšýrá_íीÜg}ô¢Û±ë…î{¿û0Ý{û®à.¶ i˜Ðw½ŠÎ@ÆÑ~ úŸ©‹+ºHeŠzßÔ,›€lºÿN§ÄÙ⨛ò#ÎÌ×äÁßó0ƒI œÔ -~š_ß¿H¥,bêÿ¬"·™ª-œ¯x,ß{A×Ê/^?|fÝE$¬­i„!à÷[9ˆ?ý8}!oo2òW.BGúÚùç  5\læw;SO3‹!•h¿k^Áâóªí²®Láõ®~î+a‹ÊzŸâ›,3ú< ùþ• -æ Ãâ*NÜ[wT€®ê‰šDІNé#¼Ÿè-»<ÇæxT}¥k -Ê®£<8*.EÕƒA]Ô)Cf SƒÈÄ^­3Àß$@kŒ xèp(=5Pzq˜ßS¯}íPçß)ÝHÒú Ю4Ÿ~ -å所âH¼Æ›Æ2í©–j.Œ£o*F·ÿFÁwàø“¥Ë"g2/ˆ£ñ8»däë°§÷]ëSËÇãã¨À†É[!€!ÔNÎ{ý…3ƒî©$ø3NdŽÞ4'BÖ‚¡¾ð]x -U¥jþ‹¥ú'æü¡„Á1‚"‘eÒ“ÝL;þTxQ ¸S3Ë~¼ãßjÁ/ÖÃÏVzÉ}’Îðê—‘pCÝ“ï™â d¬Ž:@-Gà‡œDÙÓ@ä±É-ðƒô‰ÞéT×!¢Á¤Ïkä…%K¤j÷üBî)›óÁ·õ)IjΛ=E͘Î~°J.üzEcïƒ-¿þ‹ºPÞþKw’¬³’Ä„€È‰5\¼‰µÞqsÀG >=hãµ|·ù4õ”Ôå»lë@Þ¡ò·åiSÇ\@kÏî3Ã^ÉÒ{ë_L﨟=]£Îý¾Rüížpg g÷†³Èƒ©<0F7£LͦÝáÆßdK1^jë{âQÌwÔÄVb~èÄdÿ-ÆÿÌt÷ý„öæž)Ñ}¹CÀe -žæ -g:­Ìàc€»(í—K -éMúÞkÛ‰Tö |й[¿à½¿•ã%CÛ ùa>@Ê&¦ñ2¨ú”3Ô!6gÁ@å”6 ‚ ªĄ́ê­r^‹ $òœÔo/y;ØQÞMWæQH­ó¿EÖŽ5ÜëíÓ¤B*/mV¿ªÆÂÈ’`|Uü",¶“±×ù¦Yæ‰,Él4K[;_3û÷ìÍAù~%,„?v*-¿T#*ü'ÃüX]‹é1µ w‰Ü #ÓOHrƒµÒšï‰ ×V:Ë´ªU|Š;urâ•Ëµ¼»òp„£µ“Þ€Eš‘é$ijvœô7ÞátQÛÆÿ¨dÿ\ñ¤qŒY´ï6^ ø¹g'kN‹ &àkùÊ|2Þžsá÷ɤË+¸ÇåÍ—¡¡ú«„ 歷® îåøùu8©Ø$U5û@ÙÔÂŬg7Bf+^òšàó9èó™mEÆW¬Wbpd‡?C²€#í¢áVú«‰ç5'‡²ªe×ÿORw•<1Ý´iÚfæ‰*ÝõÆ·\œEZbÅ1{µY‡¡Å6Òð^W;x®yøÅý±Ð0bIrâG’<“×dAbŽE ºpÄð°¤ß‘*úõÙ¶ò`Db/Q–ܬ֓{ÃB–†AwÜ×a¡x—pªÃ}=}¨¡x!9@뺜{†¾%2©+ÑW;ñû;§vŸ‰ÞŸhj_óTÿ›G7J=‚adÃIG|!¥N‰w)‡DALC‰˜hç&Fº%7 |to¬”I$¦&““ö²g-ÄV{M«rc=¡W²iï‹÷~¨B·]({H¨PÂå'ê¬ÁŸá[.ï:nKM”Ôu¼ùYŠaÝëóΓÌ5<½k¾×gí«ÿ­Û¤Ä1I è„w³ik( ˜³„ÞŠ…¾¾3ë/iÉë’xÌ÷ ïq˜Z™4Úú¹¤BÍćI ¸å†J2¨ÌÀ8…Þð :ÇFœr]|( î@—À,ba;Œëbͱ» -X.† ôv¿mÓâÞ)K ¯«Û¼³ õx_U_„ê -¹—|åpíÆ¿‘¡Ã„ ­y)Z3´0 -_OD¹D!,˜ ž–¼xçõOd7:s@ÿúשò s?')G’ðšü_Ö›kOÄñ?^ô˜Åã)kÀ¸1„Ùžô,2ûbˆN6e (0¬IuÁ&MTQ%·øYyoÕ(–Ày‡«l T¦OÒ“U+¥n#XJT.,¥)S®rMµy½/näˆÄð@ƒd)ðE.¥¼hõü³³Î¢ÜGkŸémµJ:-°NÆå#Ú<×Àð«£úFeæ3‹à(ê§.©nYM‘Ûϱ„?ô-^ië©({ØâlùsæA˜…PÙåŸI¦$EoBV_;O hºŠ\ñhß !]æäX™/"=XOe>³AŽ›„ëuëä™âœÑ¿ð÷fLüÇöï觺h{½œ ÿLz5ëñÓ+’Æ9¼ð©¶6 _º…í¦pä]†—FåÍŽ (ÎИ‘Yag¿ÍTÿÍÆ(z’Æ2.›ùo†À\¿& ÙçÖ!m4¯'˜ÇæüdBðí{g–F•BëÕ×ⶾéYA*_+øäRÎÃ~¨¬ X0¹&8˜laɽQÛâ‹X9K öéXÒ­llu¬¡é•KÚ–ae¯Ó”2CùY'CãÏšJ¬|v«ןGêœÜ[%œe%£¦Â^¸ÑZj“1²rCÏ–*9zôF *ûœÉâ ‰G;žp·êì§^='ç³M¿DwcCï\ÇÄšðó³úáøÀC´%zuÒKé¾unwÍ[pÙ ÄFM~ó¾‡OÀÈ*¶³¤Jš†ŽÑkù”Ó»@¹Æ®üÕöÒÏëͺ€G…¨Ü¬’ƈ@õ`6„–{Ù¼`*_áw½2Þ®üvA,±õÑäOpÕ{qRoú¢††=îM‚Jy%!Xk¥bAJæ ÄßÌ•E³‘]= b²õ?~¦ –kkcÂÔ¼ÍÌe<÷FDœò ­¸Ì:¿WH-N×\¹ˆ|ÏžƒwæsÂZ›lîí =(òt¢¡_`C.Ù*W¦ônÆp\Fm\¬F¥‚" W™!ä`IÇn‡5vì‡ý¢•[~oÝ8i¶d°ÄÓ_“adñ7Eƒô‚v±ª‘Eh⺮·6‘B ®ÍÿfYÞ18â¾ 9è×Ó)…¬è,­W^÷Øò6M+ÓŠÙ¿ÛÎüOÎTTìª|p=ióJŒ‡¾Üz"’ -dÂê€wJ–Aq~’ñÎDufäªïlœÛ¶Žf0õý”óÞ‹‚iÜFo+tÇ6›˜×x‡³G#3ÁÔ®Ëu¿ÝˆÕäâ?ÒÕUÃî~¦†\íRóJÊdE´¯Ç¹:Q -,8êFÏUì”aדBø`ýå9®‡3›vÜspÊXJâ"SÈæóƇY~¾¼×ÓL¬t—kJÐmïëx· 7ö CW–Dß‹WÉ£µÌbïMŒ °Þ™OJT Ÿß༹IWĽ¹µìñîÚì½ Ûô× ·Â¯I´¦Œ(›ÀN%«Af/®Ç>êû»8²ëD›2r @”å6û Ü€ž«iKUxï¶Ù0dHÉÚaËH7ûü=f{.ž_8«ÅŒ˜v{/ÎUR"ÓÒ©ãeäg«°Ò vvžîªA±”°!íŸÅ™<–ƒ±UtTÂ'bì®}¤Tf3ðÈ-Ÿ™!H§y·5'ý& ~Í7!ÐhÓ1–¢?.À65‘œ9=—Dª¶EŽryªZï®öì9ñÐ -„Æò6H¡³µ(Åõlc< <"»`ïO„@*¾æj‹0å½ç½êÔrîP­¯=èD 9i¦È£X%5ôRHtóüŒ¯Dï=ƒïþx[37-9ž~žpV2ò‚kë~Õ2>âšjÀÊnô k·ÝœY©E…v¾Cw®Y€P_ÁÙ¯wlÂÝd4‡î¾H3š¢tY¡ª ÃMÞ¬œXªa࣯\fÒã"n ¦ž³=-BÚÿ±™ñs;±ª³˜CB Éf$lQ“}(òá½o‰Ï§¯t€I;s†û^´,Ÿ>ñ‰-ðQ7‹ª˜/¡»ûY-4ô -QdÂiú~wŸ[è3bŠJ;ÑO\ëþú™4¶­°,D'xžìF® &„"QÇröúÍ¿;08.|Ä£¤öúË=ÑZ¦€w‡füéÙ”¥2DÚˆìÐÙ=½b»eIý‘6™®(6~ñ=Fßž)A,U¨Õƒ®`ˆBï\ä¹›CÀÑr®gß`½iϼp2±[j'"H:ðü]ù&ˆ3°æ:}á›5–e“<žÉö>^™†eZ>š²`r4¯uz²PN KK±>QåꮞÆ9P$kæ~©!õ‰ˆ[‰äížÏ”V%NæKÇeFQ(zùIUÉÀõÉ̎ЈãÞ­`)nxM‰~¸‹!xz —1sß’¦ˆ—cuDv ò !wNß:%M=Oäp–FZcFϸ=:‡Í-ÅÆ×ó÷Ë$=Âf!Yµ÷ÂÖ^é²Òt’©04X «¼•Wߤg À×B{R£”úkIÄõ›E¬’‘½óÝTCj´–fVׂ9­á㑨Ã,+ôO ¹ù½}§P4a•\£Î}¸ ¨×º×*óÔH4¡Êšg8,)92ÎüÀ|PLÔÑÞ¼^ŽC¬«¨Co å5u!êeDG?èá-tsü]ùìÙrsÖ ï°ŠÍ)1×Í=–Œ^‹&!\ ïøds$ž¿Eاñ3¦àev1ç¯/Q»‰¡¬øàfû4îbä iÄ ïèÑyÉ7iOØÚÕp5Tå6tûmdI7âÄ ·`re×?‰Ón:æúÞÉ_6×Çñéä\Å™ðB ;;PW Äîñgµ»‡åf’þÝÏÙñ[ú/©ÖNÏGö†/¾ø×î™õ,×…úš–N`ësSòþ„—O²Š@zïm3T[ÿ2¡Õ“ B[WTeXËíÿò±nô—óŒ r/Ça.ˆÖ)çåë&$±ÎÑZ™/ûÖSå¼Óü̵‘$pv½œ·e1p4Ñ"l(î¸ÿùµé™=3´¥;ô‘Â~4õe -<8B½Ôïv¬«»©Q9Ý -qwÉmîÉߣZ,–äúÄÏù”g¥ó§´UchFFgaà‚‹Ç{Ýľۆ"® ¡ðCþÅKÜìÛQp…<‰Bè*‰g;:™KGZ$’f—ØÖ -(j´àzìJÍJ¼CÃÊ™Y¦”@µ¶¸F=ÑGbJ5Œ}÷”\½¶Ãme_–ŸAËÀè4ø}öo¼³-Šà¯¶†¸¤3ÇÁÔŒöÞH°¡2ô7;R [hJ{'ìûŒÓŽ™·›jk=!‘èæhV71¬›%OœÐÒ÷²ÔöÀJÌù2Ä¼ï± v¡ñ=X°ö»ñ·g*h?6ü¨YJ V¬á×Ï4r±£vÕ‹>+FüÕù^ÙBß*„[ÊT–ØüÛ(E®8š| ±¢m‘ŒÛª|L>#“"Â"ÔÚwáµóJv®â2Z ¥à6Š¹0èØ´l²€¶³¯EF.Úò†?ûð‚Ž‘ç¯µ+Mô(ˆkÄ’ÅI/ãh1‚“ÐÊ´™›]Zki•Ó*"H±Hî>ž¦ðžOIv#±_Ð^ýµ"0Æ ¹n&ˆ¡ÕúV@û¢‘f@#yPèÄ€›™q×°ãÔ°mŸV–Å.VBdP$½*èñm7É ÑÆ"R“7æÃå¬\2÷*û C§ŽS˜ÏÄ.ï~õýÊÖúäGƒÒU¦¡Ïtâ™ã”…>LÁæ­V´Å£ñ,—ˆÎQé›yqèF&œÙÿU{÷ô} Ø‚ƒ’Gþz„&Ý{ ÃA~d{¦À\¥ßž9_¤,P÷¸´“”׆ÏcèlñQaÈ>`;ôb§zžÓ2Åâ`ö¥_2¢á²½ÅÏ*©˵"‘6V~d%Â5™ZF»AÞžLWŸ*Qú<¶­v+&’®Ž6s³Õž~ÃgÔlmܬ§äÑî…Z˜¾ ¯³µ(`¶¾¹^Fôþ?¶ÎiAEW¶mÛ¶mÛ¶mÛ¶9Û¶mÛ¶mÛî>û>ßõ©¤2’º’iÜfïa@$´çz%5Eœ“¿hz:ÓÔ‡.'rç=S' ⟠?HæpkßÆ|t°¾iÑݺ{ni¾.ÒG <öYÛÊ:#’”V„î!æ"œ î‚ÿÎÆ&2jÈEHä'Õ">· -‡°‘œ+ ©%„Èd’jñE] T¾QæÃÀf‹ÉøDn5œ¸™ÃÚ1¦GøÄÁÖH¾: -¯u¶Ùž:ÖÌþE(-wìL—GÐѨþ'EÜ›1áK ”¸ÉÚÐRüàÙ -¿„N+aèIº&8ÿÖŽŒ‹Vk/¿Dƒá"ìÃÉ©aª¶M(î0ŠeÒfüo'³,÷+‚Ç£X6D~b³5ä[‡ñF’çñD‡}càª7E3!s|Jæ/_°8ŸIÚ?Óǵ}µ?)ÅŒž¼DîvõsèV÷~ —V7…e–÷ðê(„,Cäß\ž^-xjVN_Pï=&°Ô©Ï-¤ÊÔëÀ ¨¶ó†ï÷þ²ݹk‹íjv™‘xeE»äUöPÄHsD·dd.& u<`úr1Dm‡`°œ£¡¿åª:¿ î¨ChjÔ‡¼(ðj¢ Q.Ê;Gmð¶˜R¡50ÁÛšH+µœt`ͳ}±Ã„ ûû…·Pm!kœ›`(­¶¹o¤ˆ½È^.Õ²Ò1‡å·s“ïÓÉrÜS#@/RË&¼"ÄbZ sÏdSÕCeÐr1¸„4e­k"fÚkÃôjáôO:\›ƒ§ôêΞ–Ý»¿ç]ûô+­ÐÛÙæŽÆ‹q_òñÖ+K¤8j+Œ2kj úC`}ÔÙêaoe:*˜µŠ ónƒ;¨ýƒùû|n÷Ÿ\4sùkðõ³B"ÜSîÀ˜mLÓ–ºÄñ–ųV“¸Yûþ̓³H³1Zà·ª¾’Z º»4IÁQá«5ï0®ÚífõÊv9 a·DÇJ`“(Î^%³¥=[ ´3”¹WÉ4Ï:ËÝ|Ý'ëçW1³»~e ,Á))³³£(í˜éJ£ä|ŠjƒàÏ«ë†*õÜûÏg¶n,Uih^NПkû\+#ͤ×ÑÅš°Kª:tÒ­€i_LÒñµÿIêÉÓ®1ßÃßà€ÒîØmP>2Ûc&¿#ÝBZsSPg¹oª­‰fÞ%©%箬yzþ«eÁ›qœW -wÁ·Ê€ÈÎ*•ÈÍ=Óò’ü4Y6 –í'ôNX¥¬CÇøÏR0ù³ëá÷Ø -†ˆÑ[„¾d¿±Óç¿ŽWꦫªÓˆþê¿¿…oŸ¼ù‚ ÄI,+‡ ?ß&„å=¨ä¢w—v³­5ŒÙØFd1 ïNóI³V’žOBD+Èó¨B†þQG$¯ñ =ÎÚFÏ0çÕ¿¾§Àüo2Ö¾c2…˘-=ró½è \£E ¾Y•ˆ¤’Æ-ÐǨu£— G=Eµ  èÔÑ¡SÔãb–ŠŒ0 Zoï`½Io𴱠厂õ+íO¢á•sS~:$ûŠK^F“øñ0ëš!r‘݈o%’hp!´Z<¶TøéꆫÛåc·Í%+6ñ‘Žwo“@ FuȵŠ¥Ïz JÓ¬¯~x4¨Î@`Jߧ9*,cŠJÔ¸Ÿ:§ -¥ lˆ:ç÷§ÄÍgFÔ…w¦&¢÷½é Az²ôLéößbS¤Ãl/^Y ¯® È¥Ä\ßt&ªóÙĦ}†GÐ'•`,"Lh~$YîŽóó^‡ÜÃhªÔêóçm´½NvüLYQ¹²Kª[Š¹¤%6\vO·Ùà§ejŽÊt-¹ž¤* ©ÝÝ aP<9e¡ - =ŸyU¬¼` =É3~‹)Á€ -ð?©e²ólÎ@*+àoÏ|ö±½Ñ©qÒÊHÏAN ?§8Ùœ³gþWȤ?F?*hÇ%ö]z¿¼ƒc² ¸¦¹Õ¨EͤVb#™½t=&W´Ò‰ü‘é½BES"þz†UÁúuckIèZ„Ú”©ÊF •&•0å¹È3×'ŠF¨kȶ¶Õ´ÒiVíÃëÛ<(+mOYÄí ÿ•£‡ŠT£ÝK»òCBPxvQ-)­=Ž Anóƒö)Ú·³=‹fìíóØoVAíÄõçœ^µ¾á¶˜¤»íóWäñŠG[Ü“iVE¬î°d¦ÑZȵÊ,Y{ãÚÜ¥/‹‘uO@á¶ñ¿íî蔇vϘ;v§IûcÖ†WÚꃢsÊ‚‘'q :àù}¤Ði1qìÞÖF×'§ž>Ë ÆíC¾~½võrÓIJpÇ’^AV¡gÕ[u±z°¼txæ•Ía#3g%Þ&ÒÿéÂ|†ÛÀ—5SLöp£oa\Útyy0bJM¾„í˱;¾”›ÊøÏP ó±¼àD‚™Z9æíçåؾMörÆ3/ÉyAÅШR -¦mc4–2ƹÅÒ]׿•¸»ÿ&w}Àóìý…3²eƒ]A¾ßR˶T. (.:2­ÁGŒÀ[)Í?ý -Òá,pºÆŽwîËÔ‰D-í|P‰",ÎÀ-n7sÙy*LûTe\Ý 5®Õ|Ô u“—ë¢Ë… B¤éž@-ƒIÄÜ^?öêÀå#6|¤OÙ»·ƒ¸`@ÐÉ¢:Õhbf+w›ÒùpŠMÞ”š‡‘q¤z>RËýOwºàý™{e uÎ1A}‰ËŸ}Yê2`°ýõŽ=—J£µ°Âø"nØþRш´¦ÈL±šï¼ùlæ'xÉì—­§–Y‹åã…?v/­%ÔRtž©úUóQ‚‰SE_'”ÃÞ½³ŽTEÇ?¢'ôËù“M½§`ò«ãâ5tÆ~­¿B±ú×é°¨.š“ÆÑÍÃV¤8›žD$œ@ž¯˜ã²´³× äh¬åØ‹¢—–=þã¹á(Á0cØ2³Ú(õU…B²}‹CakìéÉI=ZÖ#nOùur)Ùl2á«k$Á 5·î‰§ËL Þû.įKåR!ÀF[C'Éìé—ÊQªd?ZóÒ¿•]ŒÚ™ô.ŠŠñ„X Ï&…±I¢Aß`Àè앉“±¾e3fRW$–¦ë†—`ÙÉLuñÔ -Ø0>ªê¸3‰ÒPY,¡ê ·¼Éð&:ãIåU/ÿï~vRCmpØÅg’@’—£~ùÔFýt¬”袚I„­Øc¾7'<Ï)Ì ‰ÝüÁä*`Ÿ‡@‡Â¤pSÞÜ,CèñU/Fø-à—[¨SìÚ?úþ ó×ÝI'÷ï2¾töšõƳ#¿ö-Q]zÞKôœâ¯!Ú©‰4ÝlfQ—lxæÔŽék ‡s -t|M'Å“ $!€J,N¨KÆŽí•ŒVÑ×ðoÈî±V -ë î$côê ’•Rü!äE¤…ÒnO«‚ó»ÎSÂçyY6m×Ñ LOצño] µáâÁL‡÷3œ£ÄÝL¥eV앸±ÆÙ¯6ý KYOW 7œN†/ãÿˆ`×Y“mÅI×»% s!ú ¢¾:‘5á÷¡T¦ö´„Rß]ë‹:›É©ŽÒãraÑ®’5ÅzD—6uÖ ÉN;Ò ˜"7Hn¬+åV\> /4ÔÝÎ -—Þè,¹™ô|žŸkù–£Qö鯓‘ȸðî5Y "Œ`3ÂV6Ü ¦QdEùWzÛÎ} ² ßnÍ{Ù©ïÑÈT‰äd\.ÊûÑÖ.¼?©ž#¾lšØö¢G¬Ü sÌöI»|·M­ µ¦`L…”9rÿ9cs…TsÓ5öö©zû(IÚø³a¢Hm?泉B¼O¿i‡Ê¿¸ò)o¼)†þÆàyA¢g3bvûH?TÝI¬­Óý^ç“®ƒ‘úªùq.I}«öŽZ~|„,F^l—§» I¾Ö‘cÆ;¦Ö>LÖ¶Œ,ϸˆŒ˜ü‹¾zN^1·DZ9·8puÒ=ô'2'4B’ T}CþË‹¤Ç1åÎ×%¾X`ÎÐþ cYØ¿XL|r1ÞC=û _p2¢w”Ÿ,f”˜”ìQ¹h#ÐØ5ÏÞ\Ú‰wú&Ìö³\XŽ´Âà>J¹ò²Ü>°zóÜÒ’l¹%ÎXÊ}f›*‚k(=ö ­:ú -n¢Y‡÷t–_`×èf¿< ®¤ph,¯6,†¯®\¦Jù2p°Î/8(.ïù‡ºÉü3 ÆòÝr¿_"Èòë-5y¡bóÛôòôñÏ6”šï×aûÏUÑŒ”#Øùö–^i$H{,Æ £îÍ@?^¿ïž>0¢²>¢K,Ú²Ô žÒÇ ,ìú²â‘ÙßÊmîk÷jpGíPä …¤÷ïGR ½ î#ÀeÖ­úÎèj5'LàØ ‘ùi=-í­øèÌúUeð.åιFÛvÌgyjè›Ja÷Ä+ ~4üi8WÔ2´ ƒ'!,ª6Ïì¶mÉЭ–°P -j„˜¡he+<Ù¦Ÿ‹‡Œ_X¼vÙbv7²@TŠ\BJÙ©)ЊÖHÿ%î²WÉ8¥®»œ~’¡ÔXj¡ç`mz¡Â¹Òÿ´<¸(pØ¢çNüä -]’8uö™û38À‡8í‘anåJZš}d@9Îu@d­¦#þïÁ?iÅï ä™’×W{^@ k"RFIÖ«Ó**>#ÍÏ*áîm……È£sǶ¾ÄŒ7Êøî¹ýoéœ -ŸãéÁøÍï)ýI}¼Îå¢é›DÏ"¢D,Õ>Ç-“ç|WV¿¾jõJnu@×SªïF³ÊaPï žÔõ— öNâd îR>âß\‘ç¥Æ2Pu܉¾U«ìX”Ën°Ucû‰&û¢A x¢PŠYß‹*û3îH²ŠqÒAcu¬•xeõ$w§¼6£¤;Ô’Gƒc’ÂÜ/À¾D¥Âeo@½WõŽœìtØÒ(ýže“ÖÕ´NÃ[-Žd²y‘ŠÃãBïËÚ1©Ç6g•OM¨Þ|TîÒ1=‹½Íšý•´¬ pÛ ÄÉ»i7Ðbg[U c²2IÈÐã q”†¦úûæ BЙ€Lkïª}ü3,–‚ 3“뫨"«Š?ÂI^®d’XãA YØxø£¼Ù¸¿/Ý©c€§Ra{Œ©ýu0 `&.}‘=øU- ?çb¢´T¡B7‚Ò„½z—¬ 7Ö ¢þ^û´IÍöùÆñ¯©/AdîùàŒšY¼«íHÇNxWF;TZËÈêVâc¿†<ݪÒñ{ã–_3Ç],†ôœ•ŽÔê?Y‹ÑYbÔ]R×¥ìI>É83'ØÃW¼7ÛÈ[»xÚŸù<ÓgƒKÁQx!À,o •VØ>™¯”­ÄÐ?‡Õêå'ÒaîŸQ6— d‚°3ÞäUÄÇr[딡¼ZŠòiü¦§|ìä²YW6âß@'|&WÞ›“’õº´>\oDH/ãi«W-ÃÛÈM _Sûê0šh—‹<† ܽu'¬àÑ †w Áf¡àX>nÂ*¦ç¬õEDËǤ·¯ÑAA– ¡Â”_÷ Å6´k'ZEÂA‹ËÎ3õ Ïxr‚ALy)Uâ‚…©`Üoõ¸úÖÔÏqxý’/)Æáá9¦–‹ÇÔ¬ø¥QRö¢D‘sTJIòmnò¬j—WÄÇš}Ñr"VŠ_ðôÒóW.®G©ãŠhåÄþwíæa㪄äêT^¥çžZéÆUiqBúûR-…–0˜ìiŸ#ÉPÃ\em¤-™Dþ^}» cõþ,}å­ôåhW@ļ†o”òsù5`/\КYyåÞJr·bòtº[>˜¾YÌScALRÑç&l•E£Jv¶­  ^9²v?²®ÏD{?ÜN碘 ƒÌ¿Ë ïú¸osP{¹9ѽEן|Ë6´:͆øŸå Ö%Á×$œ±j¯Š#Þå^DëÄ{8î¤&r¯²ãì€aÀ­Ù7Òâ7š[4 ÔÁøNX=ˆV–ñd†Êg?à*žBß|…m“[ö&º=\,ϨIO••ÊL6Tl‰ïG¸2ÐÔC%Vø&¢Ìn}PãI%á árBbýeLXçŒIð/aåZŽî‹h+{‰6"ª¿þS$S⃱€ØÖç1j7²º|•+<èÏ]„[(q&#€ºú?¿*:Þ0d >OÖ‚¦}þ”Á!m¿fd Òô ¾{˜Äb]Ï¥÷"ÓÉV¢–]½þšKšï«/««þŸÔ¤–ï•eœÂÔ*<á0‹zŽw”ö£¶H€×±s£(Ìø^ Ío釟 ¢nïظ±ëj2dÁHÙ T3Í^×Gv✠ƒw“cûlï¤Ö¾Óùk -\à -@BµT¹+cj4èRoº3û1Éþ*Æ™^Îm1Þ"$åÿPöy|f/X Èü³¦TB#âø]ØèbôCŽÎ<°5ÇxËÅ 3åíŠ~vÅ÷„oâGÒš€Réêf SŸ2ù?ŒØB(t7ÃßÃùØ2’ƒúDóÛ1;Hà€ÅÆ…ëÀ5*µ¨ ‘(¥±°”ù*ü>h‡ÔüM|>ؘÛðî Ô,AÉ‹¯Xu¸Wç¦=mpÀËï]‡ÇB%ËY—ñ6Zx†)§»3yøRmù¹…ÑXÚb»Š`åÕõ —¯føê«rB.Â[åe¦öÿ957Ÿ•Òˆ©~ê?x£Üc Ÿ÷î‘Ës]µþyþ ¬EU+¹ÞšïºÃͧòˆâ€v^ÃS´Vzí-ÿ„×ðt„Ütè)4lH! n⣂Î,¹«zÚ¬|+û¥ñåì)ó·­$F‰0 A)ñNIÖ}|ÓçÌyÈ×r:HêÀÅZ÷fäúq/kÇþ Ãhÿä]e¦¾r ú(õ Á&‹kN fèÖ|iS².d9XõŒžKçFw·! hi_ꯦ·êrebÙ5úM`üPäÖS¬áv¡ æÎ4>Åí1O;uâXÅÞdø)P¯a³Åð‹*Y ²–÷aìµhÜDFI›;ãà¹ÈæË>Óº®>±0ÔÏ©…&OéÜtvÀÞD¼dIyû§œÈç; §GFJWù_»7³Z¿SàÓR'«¾"#r5zœ¯{2üüè¤wØ…¥T4Žjs€ïrþØbLwˆ~“°[‰>î²RÓëVÊÔÄfÎö‘2ÏèÊžB¥ ¤>ÀŠºžLQ~AŒp{‚Øuö#òoB´A=Ò´AMçÏ.ß ”q`ð»Z+ªê…ºÏ§¦¦òÆÉ Ž› É•î.ƒoÓPvB‰[`æÞ´0a¢˜87y26ðzƒ$×Ö#ꢜÙ ”0\ä1¶;CÝTã¹9Ó ~ÔÇs*”µËCídUÁëöfA$Q3Oû\œŠs] @_kbƒ.#l™ÃTèôXD«¯È×ÃX9˜·ûÖYÅ -7ŠœZ… -ût¸æ”B‹IÄ ¹ÐÒMD?ßÈìÅnºgüQEÕ‰™Äm5r÷¯—Mì Æ­¡!B1X¬ näzø“é*oßwrX÷Aìï#ž×|•Cˆ¤ g¤.¤ö)îÈÎ"c½)ú.SzPß3¯Ê¥íºr2W?ù// Lg’ŽmxQ¤p”÷µ! ÝrdìÊÈŠÃM¹;Ig[´NÍÐr¨–ã?’ŠaR‘Wš± _GŒl©Q<ãNiÙÙøó¼ª@—cŠ*‚¾žB‘hsr -ê±C6œ V03¤óÈÏ,ÛߌC0š®7ÞR¨ÐÃø9ÕïýÌè’ò-½ÊX0(a2QÐrŸy‡ØdÝšEèÔ«— ½Íf³\IàoC¸©HGØž†bý 9nËu®R©øÔ÷µ8©<g>m'xëkV `f˜I3!³mðR¹ „¹¾ƒ7óTc¥ôª•)¢3Àü˜úf[°¡w`(ÄÝ€ ¬³µÝe¶•ÖÏ NKç$²1ìûióEŸß(E¤¾_+\ ÿ1ÞnâdÏ&#Å耄 3ÊÕê”ÑaŸ`õd¦ rÞÝpíQ6ðÛRžòø«±[Mþñšö 嬛ٯӔVqÁÅ/Xc€xC5^õÇòšqb†êÎäŬŽû)š?‹aõùe5ݼg¼%]O2·=ÒWÌÑp¡ÍÒR/êuâ'vÙ¢ÎLe`N+±ˆƒ…õY˜ýÓcյăŒÅoõ_æÙã¬Ëi¼VÒ´™ªïÖ²Q ħ3•Ã^ QuìúÖ"çëв‡Á©^–eR¼Ûº7„„Û¯]g0þ¹?ñ®>Ÿ”,R#G²ÎðvKMÊ£æO+ÜT^Ü3 +H7Ð9žŒ»>Qyô\……Bz!“”£ÚZÏnÑì ý)¹Î'é[ƒ_vê«~Zdí?[)Æ銚ÀÕuC&Z²é0!W* n^çMÞ˜ní¿ Kõ[A[A¤RÃ|!ÅPhsî¨=ÛS"§Yr kÛŒº‚øyÃd. Éó8ˆÛ!Ê8õþ¸³éçþMR±B‡ÇÃö׉@‘ˆ4÷f\š™yýu§x Ž´I ƒÀNw( yDZ!ŒM§š™èÌ¡Â&ä&¨¿ê£Î?ò=Ü!—În7h©Áºï}À?×ó  ¢CEðf“IÅ™Lè*˜“ü»L@þéõ^&Ái®ËõíuÛl¡{<ÚÖš5îÜä@KäÅJRg´t\×i²»Z’k’À5»ÝO¾ÞaŒHÊr3L°¦#•¬0G }&gH MÎîÆí<‘_€fÕöF:=òýLƒ ¶dÖªT.^OØá)S^øêdåÞs–À«R`-óϲל-™Õ¡&¸ ¿ÒÅ”£ÇpàùµØ ÏÐ2¶)š‹=HšÑrËÁû ïp¥J§‹>ª]îã"‰ž¸cŸoí¶õW#×Rÿ:ÌåÇ$ÇÀßM™e?| -æXªá_’&rß 6pkØ»˜¾1÷>7ÊÞJ§ÑoÁXÅgžG°ï Äš%eÙÖE^ØÉŸ[uCEÕÔ¹´™ƒxZVKêÃ=i}û̉ªawÔ•ªèÑJz3A¡aÏ@fâŽṫoÆ:W}íÄŸ¿Rjì5TxJÇI”`q™Ã’ô¬,G¢Èbqùp×ÔwQ6·²ê’e}¾ëâb¤½ø©1tõP/åP”2ò†Ø]Ä3ô‚Â81¬ã¨ËeyÜo¨]Yí ‚ôîÍÔ*±¸õt'FPüdØ~ >œe ~¡Cr„}!mÕ­ˆØ -Ò1.sÞ’ÙTûÀdЩ6a¬;.N³n÷mwŽ1ZŽÁ"ö°q _q?œŽz3¿cKž‹ÐÏLDÄš¥Û©§ë"g úAwªˆÑ5z{"ëÕ Þ•P¸ìé¾>sãÂ/ïˆNÃsµÿeWeN…·€ i0ë4ðùoî1:û³¡\€ïN† )Z½Œ,¼Äœ`Vnl«Ëft8¯æ;°ž´>Nï] 0¬ád³úáÔ&¤ZéC²›Õ<ˆ÷YO]à#´dƒ8¬dÀn4O¦‘MŽÉ„òQÞ7±ú•”YËž1E¤”NÙ+…‹_¹¬L?0Âr0XÒÍü&$f˜i`JÄ—œ÷”6º+…Øë\ÜøóïD:3€ü(?;c·rh=¼9÷S3õzîvNŽ”î­à[+ˆ‡º¸Æi4!Õ8±†‚ÄŠX¯qBÕap’O¹Ù`NŸñÓ«1s-²ŒSR9ÁNÒ-¥‘‹Ãúú`-‡%ùì3ã*‘$?%õŠ­¤~Z%R›‘º>r+·6ŠÖ]i U%þNsÉ´ùÇyè0Ž‰‰r\Úã„»ð"¨ˆ -7 £Z¼ŠyEfÜHhÍK(“LŸP¿ã۽׿2ç^Rê~§RNZ€:x0…&²B6~jÁM"–°Ou,š'\w ;®}R@ÅÇ=\I=3îTØ™Ùíú©,œÎ_©¾=ºWe§ôÌëÈ KÔ®U³VÖõ ÉvJ\óø^n;*$mb¥Öùå st½ô.BÄ=E´H p‹€‰®ÑÖÜá -ßUgš(ª•}Eqà -¼üªEì".˽N® #w: PÙö[_­ênÌi¼Zè’†c¦vo4±Àƒ8G0c?h;Ò?ƒFµ¸%ÉZyáÄSänî~BÎÚª{ÚÕËĵ™ä3ý©[’¨_ï¹{vÔ…;†+iw‰`ª|]µÔ=Àñ„ ¾˜×ÄèêƒÙì€ÅËËö#Àº#uxYÿ²¿ó }bÉ"5^¬x¶l}ìm¯ïV¹áøùÖ¸%ï9D¼é_}Úä,ÿb¼ê„ÕP3ÇIïW@r>] -ò8ºbš6sW±Õn‘  -þº ÿfÇOQVK„9Û"p½øÍ¿´Ö¦ä=ŒýΟõ=!À:Ä€ÉÒá*ÊOÉw¯ö4¤Tgu¥©€ÝÈÞHƒ+1ùWvbÈÙÙ®ë'†T -/‘Z'eIÜ{eG0÷pêÆvA 5¾t ɉ ÇÌh’'‚æHͳå+}Ëw(2` )_ÀÝväóîòÑ’…>QPP\0zr+ù…梥 -%äœüø쑼b¨¯.Ü<°iÅ!øƒÃ;\znv‘Ò}àD·WCo"DÌåpUû¦åN1 -‘söDKí„õ©œOs䧥°&¦ÇŠ²!JÈ&U–Rc?È9`–3ý á ŠõA¨–ºîðYÀ¦©é/¢UŒY«˜ø6yŽ¤"{6ˆÉ}J¢uk±Ò -±fò®–N§¼¨¥P†á×þLàñAÁUÐù#bô*(„?“¡ˆ âá4¡9ÐVºL“©”ÍFÃËÇv:DUÒÐ:ߨ1.dƒR¸EžˆhÅO…Ù÷Þ³úwv ì}™VŠËÏ [$—ôfì•Èø³oøÕåËá·+¥½°qi6V¹'4ß6©¢”YÉ° ñÒjB_X&a71åìÌ‹ôðð°}v§§žKðfvñHG@t’:­ÃY Eè¯I*¡”‰Ò$ô¸Ò[šìa Ù“}:C6ý&œ›ñ0&@z¢bÑùÖS×$Úr:}Óšö¼êÓë¦B±Ö6Óó¬< QAž.Ì'y¦6÷©DÎòž6vbn<”žF&k-¬\?õ­SS“–¿V%—Òj½¶födOºÃ;"-©ìµdQÇÐ<$¤xö_ö6…ðÃêÂZ0'¶Qs­cÎÇïU@®÷àñ(¸ØPû­›¥2ïkGV-1S åt¨Úùy@ž~)®ª{æšÇŒw~™qÎÜä-ëœ5³É¦iüuc’>®Œ£>x;G4Žùb=¯ü¢ÉĆœòž‡ ¬þ,\Ú’ŒYÔ%inhè™pÂî"WëP2к÷2jc0ÒD_¤°Ë9a±a_®ôS^Úkë—šÿ]ŒP@´ÛG¡¾ßòw©]B£“¿"WÉŽ¦jŒðý”ûÃ%¨A§°E(-JÌÍyòˆ)'¢{µ‘<ðàÑ}š•é–†kü¤$F76ìD‹†¡ùÙkŸ- éîMµ¤Oèè?)»ÒÒ™Ù‰(· HÄS_„”"Îñn=s´«™ ÁÄ<¦ººü[ý ì4ÍsY‘Z _†ƒ©Š{=²\ZPÓ×ØËNj[ëßJPBž³ûsçŽ{®¡ºwêÍŒ°1v|’pŒ(ëü¬qË8q>´–\\2‰×S,¦$ ‰“~óòpóÌÂ_W«¬?ÏÄûâ³ÆÁàðœâtÓ¡uÝšCò™fOŒL|ª„b i]}Ñ“Ä763A˜‰Š$ „Å“oA,r"o'6UñŠ†Aû= -UÕÈ“²×b“ÈFˆfa·0ç÷ž® Fà–ÐVÅþw<0œû û‹é¼ïƒöq öŸêZÃØÅš¡©0Prò-åFä´"™s” ·x³b¯l¥1¸¦m¦õ¦÷[÷0IÕ™ÏÅÕvù[µÈr˜“y$í'q×V2»4qµ±—’]Î=Ñôú˜ÌíÔ¡" iYð8X²6Q¾ó/.Ua‰!É·*k觯Z=JIû½Ã ‘öoLräQË0ibΡÙy!Ó‡WF–Ò|ÊûTýÖ&ýƒŽ+p¼—¸÷¸íná•H¹ÛöÈ"&ÙÑ› ¤ë¢ˆhÄòW¼M=hIàØò€SDû‚6în -a).:÷€‡„€²‘>B3b 4n…ðcck­+¢_ ¹Á86Äñ.@8¾ž¶„2m™kÏ!6;BÃÙGõ|½ØI$ej2<;&ž8i>°Ø q+tP÷t¨{=<å6bó ûà<°Üþ Sœ™—×›âN¥Èç» Õ«@šÇ¦G!=’­fºåvòàà=9ª#Hl¶«E>†Åè/%ÕÁ%5BQã²È,5p4ÐóÕE²Ö4¤…£ˆ(¥[ëìˆçØuxjüÊí; /ÑEq«jε3=‡­ü‰hS÷áìo!Í‚«ðs†=g®7;>Dc Uû½w¹2ÔϨ­ vÚ Ât¯ÃVá,<×ižSÇ,דö_n®û¸ pBÛYj­ŒnŠ(eŽ¬t¼Jx Hx­:[ÞfÅKR®”«‰ 'ïØßPY*Õ8¸2Ïç$ÉUIÙrÒJ5ëÂòD£½ª—E%º€ö±Laœê¶ˆµ¥çðÆ`¿ŽŒ*‹8ƒ$ÑÈ6€ß±pÛ3pœÖ¾ ø‚ÙÙÙþݘ‚È°ÜÀ¼ÆÏm€r@êwÖT)È7ŸQ¨–©+ƽM´ÝT02•ÁþÝYD™I*œ‹Üæ|$ÂiåÊ Ï ;ƒ*obâØ ”&à›ŠSŸ)j]Ó9æÀS€Uû´?× -ä­à¿2†ïTÑ,0ïÚÅkâ ãë;ŸÔ1‰Ïár¼´Y°~dÅ>(5RHAmøì¼z¡5|B¼e™6Tùþ«œ Œþ^=×/GYCÇ®sÒN'—Á}ÐÜ[lƒ«Â÷+J")÷ž5oÖzBî›P¹Sä;‚îÎÙ-‚?gþrçW:òÊâЋ¢ø“ V å}»|[ÞÕŽ/«ã×¹h·4*)0P+¦|‘f§jð…uåÿ–Òˆq`¤Õ—IaoРÿf”©U EoUl°pk°±@½pŸTPä-G½`U%…i,ÇbG™„ûµ/;¸5^Äè _ÍŠ¿~Œª¯g wŠzо³ë¾ÙÆìxÛ"EjSÌ¿Fç6ŠŠö’ 0D=ô{Dû¾Ž»©å•¼JU¯vFúœˆôW»Ü§*WýÓ -±\µ[ɤdeÞ%j̼IJ:¢;Ä´‡#râ©V}^!6£pN[¿ÓšQ]õ¬2Œ‚ Ô â…vÖÜ¿j¹·„³~XÒìÖƶydò -Ó€õ1ó4 œ¡1°)Wœa9@9œsþWweïŸk Y†”9Cûï–_úF‘7×p‘ñ¼DÙ Bv?J¡›U˜pB®¹‰>ÇÄprë‡Á[Œ÷¶;Oƒ?üÐ'-øÞ°R­gÿ˜¦a†7>fsþO’ - X|HnbÙ^ò6Ò¾B"²! Ûê*±Yíë{¥}aµ~‡)÷R:…Ÿp&\PÿÏ|FFŠ8 զ洞zíÔ..÷’#^×ÉKϽÎú$P-¸±!˦ƒ!x¯MÍôò/I×~Déß „âïeäh+ä_îB‡Dõú…[Ó.÷€v ÐëC·´hdÝ…0š¯‰Y05Ó6°îç+àá•êÙì“4 ¯ =¹×\ÒøpÑ‘þ+u/ª~Ô/§%UœÂ"31g,0#ÈgËB(1nñÅße× 5îµzOí>þÔëw@ÞCÐjd`í²Ì¤»ÏR½ÂMµj&<%„ìºÍ.-×h¤¼œªè_B¡'Ò+ì>äëÍš µvG{ï¤ CEÏŠ`—ÆŸ¾ï]G¶’ót±ä׈?6”_¼}ëp0í)òaTÃ"¤°3ÄÕ­)0 V'‰Ô(Þ•ê§P|ÂñÙùw½ŒT -,ü$zÑ5Kg‘Rƒ¼(Y¶I joR×gŽlº'ã§Å5{³.ú~°œµïøDQ®[ôhÁ2°iD`Å dƒtãºWQÊN”-OKƒ€OÉŽšb¦v9j\wн€Âô}¡¬¯5ÊQ [ -¥Râô­z‘©´Ÿ‘aRVĽ£+Ó±gìœ.}nW)PïN°{UÜî˜õÏ+ô6n}²9zHǽ´¹W~Þ·Nc²à(Z-µÊ1¥TløKËÐ6Â’ê½ô“¬Í‚,U닶•(Ó¨æ˜ðP Nç>Bq/øx*_yNÞÕW -TVYX¸8çþ-¼œ-QñEöÛ}ðFZ]h0Ý'›ë‡=¾”;‡_ùµ`ˆ²áwÍÔô¿°*YÈ#Ífœ7©m×~„Ðsæ“óÙ‚»X²ãïKÁX/ÙÙç‚ÓUYy”ù`0y±Ò]ÆÀrN¥x¯ö°ÿ 'XÜhê›]J]°O[íáúÏxÙ9S­Í8ÕÁZ( Ÿ<š˜Ùƒ-ÛN$òò3BÇ97cÕûêr¸Eî1Ú5ÎÞTôÏ¥¥•ÁµÔ ý£@'á§Lâé6C¹Ô»(ˆ;/û”|·\_×HúãÇJ-„á’u°†ã…7Qtæ+˜£00»ÂÕ_s}ài#–)ÆÂçUé^›û;ÔÖÑýÕ³ÀUSV{ÅWàÕl"¼™ÚûωäsòØ7üwåÂD߆%´öf½<ûaèÅQâ«ÌÛºúKG"¥(ïídŽ>‘7Ã0Œn9ƒ–”:|?mf#jé‰Ëõ[eY\ö–ä œaÔþãÍ‚‡þ%¬µØE£O*þb`¦xá¿QÞå­P½|>ÝöH—Üdÿ“~ë‰sKxl‘6ÕÅX”ÌP˜òZ»„.R#P~Ç9ö#‘õ;ê­¾ì|ðôK*R±X6¡½¿¹žèf½¾F¢/­Ã)± Œn”†ù‹œŠ˜/÷se¥b%UWÞÆum¨Õ¬œî—T„í•#Ý‘Ö¸{!~Ý$lá$†§Å˜/²lÒæS¶¹?„©Ó o&€)'êØ;*‘6ªJNh›ä}ïP¼Y‰¢æù£Ú ³Ðq¿ÛǶ˜ÐÈëNÈ™–J Xq–7yzšc´¨ýßåiÍÌ>,<Î<@1“tà«uòâ¢é®H¬ÿ6âGfÝà?Ç€QÍÇúÞC]JÔŒ œò;]%'ð*tȃ¢O bŸ]Þö;¨5Åh¦ñB••¸ßÃ8æmѹÍWªi”_ -Ž?Ì3DŸî€¿OQÃêO+¶íü`ÀÐp:®ñ^ä ;óIJ¸Ô%þŠ:B.épþæZÞ¾²7ªø×,—ÞDªøÔ5‡ÁêæѼ›[´ý1Ó*.'4P¨¦ xËÄ7Hz\ŠàðOàj»é]egßó¾„Ñ8ì¬_¾Š>,R¿£ñLÃÛò• sO}—åøºˆ;n;ëHTR¥ôþúQ\ñ ¼!ëFÎ#Á™HÓE"¿ F€.Š”6„9*ýNÔ×®×¼¾ Î2D¨¡ü_G^d£C€–<ɦvbŒ> ->[ä—Q(NËçè§4é{õÒ¥Rl¿È«§a só·ÐÖþáü~RÉs%3×BƒÈSÄÞ^Þ*ÏØ*¬d-ÝÜ2}ÿéá%îýj>É›ž'ow㔞­ÜbÎ*dáŽU«'k_`˜…ið—·1«çœWžCŒ§®¿ÖúÝ}@²~yÁX‹4ù¤"œø3Ú:òr3tè væKü#Îàq‹'Eš{ŠÏÐf‘ßcnf7EZ×7­a8fØ.,SVbÍ«Ü’a¾}è²HÏü ÜÅù3Þx4w1ËöMCÚp5—”ȳ¹Ú¶…¹M4ðÍnônÅ–÷¯YâÌG X—d½]|Í@gKò´Oè+عÆ4•¬:Œplά£Ä¨„ø°Ç=§ásŒcVûjøÆ¥jJ‡uá`³êá Ôs¶¼šâk Ì•èx(Ñïì!ëÃèQÕxÍÎÃØ"{'/mûåQš—Ì´`'ǹü - ÞEùS¹ ÷’€‘°!ïÿ@95½XŸ·FÖå5í,OÁöuŽFx¹@WŠÌËäÁ*Q§Ð‰[…ü±1¯ëˆïÙ¹vÜ g/—®¡`¨Œd7Q–T"G-m­KArVêöIEš›rd¢]G¬yÒËjD8–RGHª#J´ØÖggÖzþÎ'÷-œ”˜L÷ £ßÂqÈ×<4l Û±SŸZg– ˆq‡—\B¾Ó£—æå>ŠÍkþ°¡QÑÄ ]ò%?A€"NÆR/,¹æ7þ1ÚŒ„—}âsÍÐ `tû‘¡EÃÄpKôÙ€ï¡TLÓL¿!N߯á’ÿg‰j“”!™8B¶9óÞ»žò˜EÈî1릥¯ÇØÖ髼ƒ0[³9EPeýݳ¡ËDâÑ&¡}1nщdKÇöÉqXæ«`r‹a:\©R ¤:v!%襉ƒ- C‹0k…ãÂò;„õ‚RSâÍÂh ¾­·gÕJÔE«“ Ûþ§¢ÈAT–D‹„Ù«¤eøw‚N{ù”µ-Ð4KQÑ÷úuv6×rfKx«.ë"ýU -?H—*sõ‚4Hñ<7´é˜-›Æ4Øi/q÷¯÷Zù<¾f‹ÃÂîY‡Œã–JÃ9²ÖN%d8P¼:ƒ¬ø°g¤ñ$”è9؇t¹ˆÕ’g»°§§Ëûf*. ˆ¼ÜçÂp§ªM²Oº€ØÛ‹#CŒodS®ªïê¿r€º4†Œ¨“!2z5å•F‡² ÀöÞ -2¼öwô¡–ƒÙþ:sÁñpu§{RÃ' «ÅÐúñ£Ze¿), ÄÂo´R«ð?¦å…îzQ¨€XÂé¡„-~o¿ðž}:Ê>30Q/‡wº±¸egƒÉ†àt Û¾òÂâæ±´¡u#9ÛdES¯~'ØÒâóýÌÝqœ•ßkpi?îס¢.Ìö¡íηµlzøX\ŠZRpÁ &Bkº¤Õ¬’ø‰[Ð-¬jÖã7ÿÜüï¼Xyj±¿ïWÀÒt§Uþ Î"“H>p¬ŸGŠ[ÕödÆM9X”]gO“+‡DV¦_©Í›dÏ9º*iýÇuËÆÖWÉnŒÇ¢›]µ}È8HëÞr%ëÓÆŒ¡ É‘¼3šcº;Lyn™Ž¨a<š¿^Rùa?'ûÏZ*T0Ócks¼|Þl=­Wª¶nßyµüøZ©êüz¨©•Ÿšd‰V´ÂjkdüŠ~•¢‹:"n¿|“½é ¥@)½TóÌ®©³Ö³ª±žöÃ` Χ´3ê7b¸íÌÆñ)Ýs§»¦.z± ÙB& 9.}'0úB!|5×ߥænwO”7Œ¥#Å3hÛ^qú`Ž—¡vnö/‘Ù$M4 ÕtA¹s ,©DìÁ:Ù‡d7ý’1)™ýÅ¢.óy N½Ôg}¨ù¶$b:˜ÖYÆUûºíÄ··?Éï9P,º§§)ÿ]ã; æóO†@òõ‰ý¤á)Ff|´gOc:rµxƨyÜCí ª=Ð3ʨ=÷HaÆÒ>KÕÞüæY0.AWCõ³RøsC€ i‚¬Fç -I²ÐT–#îj×m©ü ;Û·‚½r&å…SÇáüT¯*ô^48X:˜ ‘Sð¶<Áô/udéåcø>J¿Ð¡'á»*äQÉݵ˜_©-2p8±·c¥Þ©‚ï#©ª™²Y–Ûb’ÕrzJ¼š*6_õ’JB†}2ˆÉÝ6,„ffù’’VÓý¦§j§WÁÉ1pòG™–ÇF¾¤¢)n£_, N®¸wò¶õ|ŠPt kùúOÆšry§èÇ"ƒ".q>[ã%uošŒ’g]ÈŸ•˜ã1 /W—ØŽÚ¹EwnïÇVÚ²úDŒšêZ,Ö ÌµâàO ÞiuzùPà–¸ÆÊYå+]«]ýbëdÍ̘5ÛÃö®/E[Åe‘] ¦tUb!b¢Û¥> ÌëñÉ’} Fàz•V«@ÒlᢰÄÄ“ŸçÖ²½¼¢ü%·Pk6c)'GøñÍ”L3*çQéÛJfË ì@#ÿ);#ê¨Qè°„òÿZû˜Û8¸–Ÿâ™S™¤n¦m˜Kš{Zýp‚ ™BÀ)jžà™ÉQ?g\[Àó¢LoÂÇõf÷†d…EÊ®©þcœÒ&¶€þ—©û$:oªÄa ¹’yD)¥7¶ ¯\ÍÔä?6gíËG7²ÉÃQ¿ð¡ÇkŒ8¼øŠÔB‡ðWr¼œéê†^…›åâ  œŒ -2ÃGqn)q«à-ŽNë­TŸN|c›Q7‘-=q”§& cßvÙí]kXä¬ÔJ§˜¸3CN&Ù#×Öæšd?dIþ ”VIÍ­W ÂX–Õ •ôqäAŸÿÐz<`¥Ke‘¿¶ËóüÈÁñ^é‡<Ë>õ!<°62»¦NœànƒÌ!Ë[á5…þÈ’õÈ×·ú¶±l & e Äz#ÍŠk!§áÙýŽÙ“ÿ¢&UöJPòkG¶aÈÎM_M“±Tcš\N'ÿn±SÔ)QÁAˆ{¸ t¢Þ¢,ÃWÊ• óÊ<šc’¿Ä{mcƒqôÉ„±àoy ûX"Ök»°2×—Réî†*UN‹2Œ®Ø&9)…µÔ9Ÿ ð æžuj}¸´ÌŒ7+Ã}·š!‚oCñþ7ºs)ëûfK:u8CÓZþ²WªWתºGÖòò'Žè§—ùUœ]+’*“&±™¹™v"¸¿ó…ΫŸ­˜Ûü;olŒÄLã²× ÍØ“n>”rÝî°½þ…ß<*‚­Ïâ졯8‘{½ Èqüö²ïàp ˜õÍzËõâóUä <›½à´ÀñÏ\îJ™R†mÌ2–¡“ë SºÃÞó°Þc§Òš|˜95XŽÍ */áá2W0+£«É}ä%gL0Gxžܸß’è• ;)âžÝ[ød;çTF*µ¼l÷6õ6Õ;ÜŽI3 Oˆ5îÐÕS{ $ýÿÚ:§æJ†[ÆöŽ9±mÛ¶mÛ¶mÛ¶mkbÛv&øžªswêýÝ«j5;S¡¤…É3äG–E­W]ضÀFˆŠêóSe|ú°½ÔÃÉ•žs8ÐwóúrjÖÃSÓ–.侤‘ ÷jc`?ô–ß;(°s»Š)Bh=»É_$úÊ 8^zuƒ‘J·géê$s_h ¿“:XἯ`ŸÌ¢¯»´Öñºp/ÖÍü/à>0Ê+ˆ ¸Ûw^éXÇÄZÌ—‚Ÿ‘oõ†H‚.:×^]] è¬MÏC²i) #cïœ'0óÓ8šÑŒ'Í‘]­¥½í/ÐSø;¹—ŒÆÓ§pëwìÇn?ZÐq~¤7”Ïý,ÐLnGH7 Š±T¾Õ(ø£ÄätXb%íÝF1ŸÃÐŒ@ÁÚðø-moÓ^CQebÜ3@¸Í–” -PÏWº{¡Îie£±Sã!ËPh„7Ïôo‹åȪU -ƒmaô“:—‘˜ey§™ýeÍO6Ùòí ì A"¸…àKÊú±ÏúÅ#yãµ÷1z»Î£6\@PÖ¡šœ -x ûò܉IÁ4d©gÙŸb´î‘®¯ÌèÛE7P¿ôÑ·ã>ºíjÈk¼qª‰+zL|ññ>žåÃÈgó–2(³ò+ÃÙm,q¡õû¯CÜ+&yº7+9•ïKë߉f ×{$fÀ¼5’…Ø£Øì›÷S^0Îû,h ýŽÊsRÉBÜ-W÷n§÷¥ñç;«¼óälĬ^Xx=ïõÒ|q>CºñÚ|Ùö3¤ær©Ú¾ˆÚ‡4«(ÙÓeûZ…R/?þæí&ô”ª³ÐF›dŸðm6o|5gì>Õó#ºUõùËlâÙ?EÞñWOü"pxÞë¼¢êæߨQª^3¦¹‡>Ô츈ÒJaßé¸i&Þf§ý…ª¥}¶¤¾ϱgT€.|èD3zÒ¢º­!. Zàëên½j°VùŒ0™¿øÄrqÝè\ÌK•ÞÀ®.?>ê­LrÞNçîÝz.äÑÓälDŒ­1 }›E0ßbº°)ÿk´¸apHäoó7ÃQœE3Løâf5cúÞFõÝŒ]2o)˜š¥§=jÊo¿r¤Œ€Ì~N#€^–¶À—ïlµ¢EFØ—ŽeHÓ· ÊhÚ¬hO9Òê‰6Ü€SÚT+†×M€–kÏ~Ð,Ó¦¢«ù¢_å>7/3©GHÀ‘ithà‘·fé*&}‚®i‘îe?qX½Béîº[Kà’Ag„geÌ£1—l˜ð+ŽÐï†ÑËb2ÖôqRš3ä>W1I8ë÷3¦a^Å XùR¤—Ñ¿:y w!Ÿ§X˜m}Ý4Ó‘D׉™Ê¼/²Íœ·ÒE$É@³:àS#¿“9}à<æÀåƒ1)Ôâ·¹mG?èBÆ,°ÉñVw„5Ï&g;Ä4Lê•¢gD.ì@­¨n¦n¦1$$]Ñ >â ¨ îªB·ö Áv7EJØÛødž»È¼4d”«Õ7èªØ¾Æf*°qø%`h·°ŒòÝ´›(:”•µ Vèi$j¬4†ó•ñˆ´“׫hqß$vt3 ÆQ°7j ÷ ú,‘SÍ'ÛôH$õ€¿M÷sŒŽã¥4þÚ¥ÁBrPƒE‘} Årø1c$žÜ¢Îß×*üAsT|3Ò3¦´cÒ£aqZ4 šæGŽÙW…ñ£DÐɪ°´Ñ"¬›°ã¾Çã²B*ýáÈƾ\MÿR€dy´Üq^ë 2/ÊЉÉ^Fpyô±5>=ÓuÂl#JÏöɲ«)Oy*±3W…Ü´ïVGqQMË<ƒ[žÎŒúyñÉ88{šéÐ ô+M€ç’ƒg‚rq°zÆêàË›2ÌqDgÝ7±LaÁbzÜ7ªrýK6i„ع²“ m8î<6¬[ãSàß8¦Zæ¾’îÕÀ+©ñ/fÞŸ7Ýò‰¬Ò¬.ë!¨òˆ( n—ê±&š­´"½¿ ÕSü8²×ÿ0O: [ØÎÕÁµóö™ixM™wÉ`¸ œP3,vØÅ€ÊjÞ[~òVšK—ö =ðÙÁ7 -·úzJRLI–zýúl¢ù¶–yVVx„<„Bu—°–TSøYýñßC»Ëý¾, }µTK™ls㜅0À÷à֪Ʃ2Ÿ×IÞm™g"{vŸÌR9WŽT© lç“уÓÅ¥¿bþ¾âË/‹©ŽéTâMJÖ¢®sö?æ ¯«à£äKb°;0?z`¤{‘dü´ÔfË(aâSm쎖A¨kOó{•¾¸4NÕ…{BOþ¡]Abf(ŠhÚò“™ëufŸûïkç;€NdŠR™CÇóRADù³kÏáñŽ¼¢ždsêâe¯­Cb?µªþv—€UJh§AÄH3ö®G¹ãï£Vçu/Ï´\q‘‘²è_,JÜL 2ÉÄ}ÖÜ-ëí¥¤[Ð?mõªlÕuÒñ; Öf¬zš…ñÊ–¾¢nÀæ¢\²3‘´Ðnxmj™ -8H|ê™®Ïy°9ÙÖŠq âæôRA6´ÒgeY\ÿeeL£ »‰6‹±Ù$UR(ìJðü@ƒ3Ä•ÕG:#‰}NÚ8”¬Ó‰NŠ ÷*q_Èîà åréhÉ ‡0êP -p\ó Y½.É‘ïl¸X]ìºR„à*˜P òz¾Â†RmˆâŒ[09-oˆ_Y€ÁìöÍb DŽ¤/ƒÖêä,­v΃€ ÌfX­¿ùË}ÞÍG[W_–F,÷îè]'4Uhi¼ÑbûÓ„æÖ]/ïEœTC4N«aï?Ðzû9 QÖµÑb—õ!#­•áŒ"có±î\äNF0JȹAhŒmZôòA¼[b éÅqûís h:Ú;Ör[„õŠxþÙ®*“ªÈ#3ï‚<è‚Ç^¾¥½ò -Ü Õ?Yëñˆ«^*ÍF<4º)tªÌÞRÌVÇ¿ßMl²L8Ÿør4à=‡³;ܽÁ¿ígÓ0—ËK¸"z -ÄP.éµl¢¼‚IW>O÷¥7Ø·¤„~‰÷ãQsóç4ÖÞFåÌ §ŸK·kíYžÈ[´Å°‰dUpðzHé=h¿$ÖœÌ {ß«Ôƒ\ÿG×PEâÌçÜ“×m¸HÝÅœ„f K¼y*›GìÄt`Õ*“«ëIºI¸k—z™É4ÎIÝ?]¢ð²…H9áa{b‘eÒ ØŸ ì‘etð´:TPéÔuPÜjÑ`Q»TŸzL¥²ƒ¦€tíÂùL¾§þVÕ­·ê¤ÿ ükŽu³"ùdÚ¯þû‘ks`Â6Çì¸C•¥ð({eþ½™ÙFWj}c -¸‰×qæs]bpã'QV²bòavŒÝiè“"Ü_Éž€¦—‚"—ä.M!å¦Ó÷!S%W%”ª‚ÐO¢©¡«©ÊvÔ¯)žë(cækY^ë„ŸÌP1¶ú…úl+w‡~W†RQ±7[À£ëS`>>L§p†_kØ3X_§§¸ó6¼ˆz©/`îÆ9ÚìÈ9.ÞÜÓ³PåÓO"Ø·èzš´Àpn€­¥s»*ÌåöEP8Õ¥dwªoÂùñiOþflâ0Ÿ@J4›îJ¡33¸n†+,ØVôê-<&²)ŸnuÈQgÁf¥ÙÆçòEª¹kRÓ?yòÿŠ6¼Èæ6HöQ±‹lMüâF† d8« -wó\!³S݃âÌ}ªèËÑ…Æ?Z¡®ÎøcàCúž+c;.ˆE—ûCÈùÒÉ%éX„ï´?Ù)âݘcjlõŠ¸½¹D …þ¡/‡(fñ‚O^;–‘çúSÄx -~¼9¾¯ð÷Z|˜ÈËOxïïB‘U‚2 ×sx÷•¡s(À ’ŒÎ˜Ðé{! Û‰bÒW”yTÂ'èœYÏ2SÐs ªP -zσÀ»qæ£õÒ‹/tZ¤Lñ”· p{•u¦+yÉÒr_5w/³þÐ"""W$º)“x¨=‰4ñÏ_–•6¾®šÒW5í4ëW…àJÄ!«ÒEÇL+Z¡}©UEH)ÿŽÛÚ‹ˆ7$ïÞýøÑëx\(]ºN-ö¿6ÁÅ.=Bê3Æ)g¤ƒ¹÷ˆ¾-’û?ȳBjj8Ó&¤§þ´Õ~¨§0ä2ƒ ÐÒA?#Ì’Ù5*?1‡"MñÏ|™y?v”-géŸ% Pþ2xóçÞ îû›U{¶¼øR¡† w\ä¯ÄðÔ\e¶ÒY,¯ ’ä¿F„ ™%B<\3€óæX;{Ü$ùï¼”v{»Îõl4/~²¾J›VM:ße8o®íjƒZ·Ó™ÒÓa÷ØbïÜï˜øºGqS´@ø4†ÄÄ#Šn›q÷ \L±ËŒú“…‰M³>3óì¨ßω=A?bäö÷Ìjãxt{&\¦0‘¢±ºäÊ7†&Ú¯)iáøúÊ`±i©C‚Þà‡ þ­e…˜P¶õXökÍÜËÁ'Ÿ4ܯˆM¾j^,•–¤–d@¯^>kʆ½/«Nß +qšÉùýûœÓ'ã}ÿÌ98G9vÌçvÚ_x4ðH+”~àŠ³Ø5W•Kt›Fu¦Å¸ÏW)äd9“——CQ“ Ò¨¯9€?¤ÔDà:Pš½UB†˜‹€aë)ua ÒÔV:àŒÃ (´,›è;sgE²pq-.8]ü³—ß°ÞÇ[ˆ±QÚóz 7“Ÿ'QƒMmïÓ=UBœÄEÀ†gRìòå ú7BýÕHC¡¾ŠM„49’dêÚó8œ‘ñH”âú‹ã*Á».Jpüëtä :w¸)B5ïY½o‰|P1Øbû®|å¢3NGÖuÿôÖfÄ)ŠOš+-«7f`.9¸‹‡–€SzÉtíªëß ŸïuÁw¡}÷ÇcNÇ¥0¯â0èй±ýq`KܺŽvÖ!TCùÁ  -„qv¿^Ò“],¡ŠÉÉíþ&â…4VOC¿¤Y‰ˆG¹‡Jmð“•Rô  „dM0c~wEN‚x‹B‡Gˆ3Øoô·H¤*é*ŠÖ«L>k<•¦u¿Ÿ‘<êÆà|ñEb\Äüc§a»¥õöҩ°·MsƒÉø¹ÅÐþzEú×Sî!Õ¤½š—©Õ16*}ÕúׇdðœcTµ±QÄvGèˆ:†dìW W=åf‰Ò‹÷¾’`äFO‰™|Ø;€®-ô¢AÌ}ž4;¼Ðqœ)<`”¡‹û…XBT/¤lFÁ½ÛEy„à’>U¥Ø϶4ë’¾¯/‹ÃÖ}%°"| mŠ<2rN‰éM¹yi) _†L»6ÞÆAÂff Tå΃O½?¿®NÁÖYþÎg®ñ¤‹ø‘n¬YúJ'2ìž«eÒ¡©ð0гN?{ÕŽÀÑ:éê©ûGŒ·êÓo0¢°œÐnühe3èôËÿ¼øïù<åUžî aásˆc“§é§+Éå -À¶ª í(þÐGùzk]/BŸœæó×>ÎIF;CâB¼Ž+pdP•ЦØÍ Ì] mšMN6Eù€’ǃpÊ‹!Ïbk¶G'ŒÏ/ΟŒZW æ6ÉÏo§WÒ¦ÑÙ¨•´¤Ö%ÏÖ¼Aƒ -ÂÊøíg -~ÜôÎÖÁEŸÉW½r¯²k-àŸ¿†·öl'f¡ºü‹™Øèt¨‘¢rRõQ‘?Äù™C ^ÑG (˜î”*¨ˆ±ØQK£›ýEVüéžke/GLál=—Ä—°<n¥_D ¨ºÉÊÑhýƒÅÄüOŒù§}^ äòKu©ÛrYŸÊ&™ìÊ3ƻے3ØÑ­of}¥ñј÷ _-œöÉàEŒK^|tû/ç¹ÒGÓ:w -k‡g#Žغ_ï1¨^ÿ‚ˆk‘³ñÒ•¿‘îÉÛ?Fl£f„O¢Iš?'âÕîk„‰CÍ‹°û)ØÊÎ|(S5­”YÏMM£®ù3W«§›cnVÏZ$ô÷)/Á3·¥N0w”®5¸”îOίÅ)U n…Lœ¯ø ®Vªtå©R­ê–¾³ìNœÃQRoz›Å¿F½7»ÀÞ ÿ{=©ô-6ò?9x²ª§·L©7/9:Ó¸ó1KO40æÆÎojú¡£TØé«÷D(×h³çó)ùÖn¶í<ë.¢fîQŽŽ5‰„竈*³¯=gFN$O#Îø‰wm-fT›Ê㩞⧹ç™QJ€ŸŠCë„£Zy¥ýÄ'¨\£Já´Š:¡ ¥u‚BéÜf‰ü~¨ ÷K¹·î¢Çk'zã&áYA!*K^/< 1-¬ßôóô v‡i²Q‰ÚðiiyÛgìr¾¯ð >$íÌ‹ìçÅà‘ì–G˜–ybLP:®{è9ÞTî¬þÏXõAVõþQñö©ß5L—ß7§†äx¯·’þ;Õò7™~Ë(é’‚"bvF ¥à¾~Rþ4ãú]BØ’ƒ6_vÞK¬}7VU­4{Q“VÑ6Ýû)Æ!~KtGhþK^º¬ç‚í ߶Aoþ„T Î9ŒØ`è%ÅoÑpLtˆ ¨_Qy×óCüp?5qoÓ°±_¾ÑëëËôC)ó«ˆÄmkbÜý¸‚¦¹ë´æF=p¸CܦX&Às¸Þa·Ö^‰ TÕ C¤:;õ@Üeœ^uîtXøá >3éS7”¢1À€sö;É"¦G•4ÿª1GÙ\½4>õ‘¬è}ë£(¢¾¥]Ÿ³X·swùølo)~ñžn*¼ 8ôì‡ÞN~NDR ¦)²ýl- àŒóXî "ö¶á‚@­ ¡%Æ©§o’Ðè:PïuzÈå& •êwq$“‰Œ§ØˆKî ^_ñ¸qÑ(5Û½GkeasÁEE€>S*azFÁGbÆÍqÈ<¾ƒð¢Žñ⺿®ò­å½ýü7PÎ觪ðlkr6Þx¢j€é!Ëc1ç6äÁ-÷T+©M%y 8«,ÓêÁ9k˜Š›¯²AMm$ù)ôRH›J12©³Ìjº-wõ‹Pë ØM½RBœÂ^â~ÜM`2ü./¾hÐÝQ¬µöµµZÂ/Àá©[¦¯gŒ7‡»ŠbÅ…%üø×h®³@Ä\Ô«²/&nËX€åÃ?ÀJüAN}¾4¼=×i`b1¡0ãuè¹™šò[ #Þ‚‘Qí1[›ánÝ•µ4mø„ë™±0»ú€ªµ§<½..’ßãd®Ècvfû®±=î%'S9ºâŸîä{å½ÇŽÝ!Ý4W9¡Á¹ëΘZUs~6g°‰¹’ú«öy­Z-¬È£$´}ªé¸s¹ý)å98w,Ö$•á¦—’e‡Ö¾.Þ;lí#f¼^ß.JʤNšÑÔ­ -wžnÿa Ɖ¥s:§Šý˜þš=K ¦c=¹@LN"2‰Ò`|¬Ï˜N{˜:‹–}ÉŽœ.¯Ûªœ=¦a›©WGЮž©È§ê’L|gyøCe¼Y½˜:žÊžîåûÜa%š{…S(%È+57”¼‹ìîTlÜ…”º±a(™¸yåð=fv³,‰0ˆB½Tvñè3ÐPZ>Õ'S÷™tÏr¤Ïdý«úÝwÜ—¨GWÜyZ‹N%¹€ºÞ¥ -}=m$T#b·zRzõj‚êöâ¸AuÿnÐØ{äİΔu¨3ˆ]üeEŽ'g©D!)òR•JƒcY$;MÀãËú¶§† p÷r ÑÔÈŒÂÓñŽHY³…Y¥Q™¥Y¥N[oÁS™ ;U9ë[ ³»°JA‡‚5î?T¡çT3ˆ‹o#/ŽK=È -¦T°8ô$ÒdŸNùB_ÿ¡§¥V) ñW^G©tÚØcÆ) ädtlÍé0q¾Z>âꆕ¸ð‡"Èš5dÓÇñm ­í߬âøWÏ(oy9"¼ƒÖ²ÎÃhº}Õ½šÑå¹S¸²’ÄA"±’¥K2Ï•È™Z`@¡X&bÜzbJ³C.·fSiç_r„¹53î”yÎãájåT[Ðê= »ë ÏVY‹…y²Ñ¯4_¡X;R”˜€`UÿÐùYµ«ªðÀ5¯ “€z· s~ùÈW½ÎÈ{¤¨|ßY»ÚÄÄe–Žý˜e{ €Þì—›W<0ùÇ“Ù´ë¬[EqÆø@²1ð©m}¸¤<ÿÜ/³×Š¢:"*¨$ “V†ÙníA ¼j´hqÒ@g—§R‚Fú¢™ïçwÎØ‘(›æï#1å -ñËöÕÞiò»XFçóMŠ$zR:_›zû¯¤!€cy½‰B@Ö¯&Uqc,C°&ñ Ðc+ü¼ßAÌË®§ƒÞ_Ôþ7øª…Oå¢a¿ KL~¾³R{MãaMQGÕ<ûž‚1Bñ^\Ù×5Vèågáu4cïšpxtµpÄ ÎÆàò±"9Ÿ>vÃ…‹óÑÞH°0ɾXˆ½}¢¡¡{›’pQÖl¯–½Å::Eüþ/'¦Äϸ%ŸAx"˜zÆ@I5!IqÑ,Ëè­§ÎS©ÆÝÀc³¢ZÙ|2 ¹¤µžEÅócs ïLÔHkí©ß§<9Ðv‡\µ&û„DS4O ‰Ï@/¸€ø}¼¢?§S¢&ÓðaÅå4æèôúKë•Å•®%%¹°i22?øÂ{¼iíå"jdžݩ5Lžö«pš.½Ä?½ÄÆc'À4}kY\Âó+$œ 5ýÑ$¢Hú{,ÂÖUÐü5Ã+ºIú$™/ˆÂâRéÊéŽv¼ïµ¡d=9ßËÏüò"õ}>²=aÛîÖƒG‚T”¨¹ -e§¾&ÑË\R]G­OüC ?ï`¶«Ô¸Ù½láG\y@\±‚Q9µ!/|¤åˆÇÚ_d/ NIS¦0ݵ'ëÏÆa²Éù–W.+^8²ù¤sQhÛ…xqŸ¸œÝi[è®U7 ³*h¥Ý÷ÀéL^€a¦7ÛÏsØDÇáඞ´{:\(Ú÷êá$hšý ºz±>vÔ/Á;_Ϧa­“‚ô,‘F$4Âø!di {k ÛhAÝI -IFÚ ú‚ÐP%ReÏï=`„ÄíúrÖÔ M‘7úg2Œ Å5;Mevd[ï`&÷eç<ë9ÅKM-|Q‡ÒŽŠœg\ŸŽ¢įnE‡'nšfÏ:b ¿¶>sàd{_ÐúÐ@\'a«ÕqÓ}ÌõÒøÑDNìg áï–5¨´±»eg]¹JË0¨KPÀÜCŒ³#‚Aïÿ†å%¹ƒ»–nµ¨t(óʧr±D4ÿÅ¥j -·ÏLÓµ -$Ú‘Ã-G„S¿òXacc{@vëµÍ†Þ*ì°+ªuøp½V2 ÃCüLËšø«,ùõ|Î#õ…”Tq)ü=JÉÔ³£Æƒ”4Ô¼i*eÿùÌø[*ð*2Y=BÁ3º¶G§ýRÚC+<(ƒëÅ#e'k6¾4ÓDCÙ—ùª‚tÕ|ÍkëêÛ$07N'™u:$̘dRŽÀ6Ÿj]÷’RŒ”«µ¼É’¦Ô,€…ˆ<©<<áckéÊ”©¹ÅŽD,–½ÛÏÿøâÔl¶â/B…«b³"#!’ÉÒR½ ×új:ç[X౨Ní -_,A‘l²Bù°¯ƒù3tï+mi¾îÅh£ö.bª9'¶2‰ÈŸ\5\H%ûb5&Pt”ªFÖh52 ëœÖòº€•=§ëÍE­8p¶q1çÌ`pQ‰¢k[¼r…i‹åó°”Ã8¯9ÐgàOT$C‚šLYvP/¿™HÎâuÄ€°ƒêhtì’t¾Nì­†ãGÏaͦ®NëAm–fkmû™pà{¨9ô]UÀqÃ÷3x¼:ðPÞÊú `}7íËîÕUlDJ7:NiíýùB@¾9\ lS0¸)è˜ü‡è¢Ìà¯K›§ŒÚqWhþ„èa2Û²gH«a#GÈƇéXO¤`*qC9°;Ç“¡¥í˦ -%Äaû9Ñã Û\U?ëµÅn}‰F\àŸ»©_îý.Ž(s(®E_·Bc%4I±±¾±gÉ$ëx)û.–s)ÌØÍê®q.3±ëÄU(—^Ýæž º½ø6…+óCàm4ß-D¯p%àºò-jÄ|€ýs«pÝI8>q‰]¬ Ñ“$F\N™§ -¹W¢¡ôØ÷\†iÁÍt}WmOË<î‘2S>KæCyq-oHQªavQ6¯ -[¨øªCØz_^ú½˜õ\ÚØóE³g $ý¹B$¬\±óŸœ|ÞC„îk‰Ö;Ó|̤ -‰£÷gYcú–ûZ¶çÀƒºÍé|p «Z®©c¬¼á¬ór£2Å‚Ù M¿Ì?°-YoðäôѯUuþŸŽÿ.Qý¸gíßé+ÛÅsFtäÔ†¬ Æ3¥íN7ƒp) ƒáeb±4FO;Lv:’¡'%/¬~_C­ÃK–”¤À>䎋ÝM`˜S³ûᮥ•ëH”¯Å!fxü8ë -µ_f¸ )ûížÿÌÔ=ˆ¦XàL¸H’¹¾[]9JÓѾ„/1Ô‰§ 'ð˜vÊ‹A(Œ Çɘ,¸ð ›:‡8«Át‰ ᖃ׷ÏT’mÝìã™{!ãÆEEäf¦5tã\ÞÍýŒî«ÕNHxàz>Loœe1ãÄÒE°ådÀŽƒ¬µ™[þF/|•¯Û§~•H´[\^&¤ø)¦ ºüZ„ X[¥óÕÔ´lÄô+ƒÈ“ï•áŸŒ’ÚùüÆÆ:è=Ð ¾ž™¨qЛ°GĪLüB"”S6:}ŸÚÁ×»÷ÃÇÙ'”Ò§¾øú?裎çxV•žÌwM·ú_ ÚT.¾zc(…Y{Èæ:È€{&"'ü¸µV_žeÏž7û¼r86^ØÀnb—ã÷SëAëí{9œüX‚w‚¾.›•‡Zv‘™AïÔÛ¹Üו&êFíWÙÎ7-ò1#æ[Ç- ‰04˜½ü Rû×ÖÅŽnÿ£ -äHž]÷ÿezòçW´»‡lt8EÎöS¹æàç¦éG_2 î-ˆ úáÓ™œ®i>…"8Ï Ù”9›“$sûÚÞ„—‰†“z²Ž -ctö‚tä@O/°9ü›_ëæ ¿ËŒýPFé_ɯ”’ÅŸ.Ù‡1+˜ ƒHúCMÞ±ÆEKF˜²_}l U6"f³É³-ÙÿL‹ó†1ú,§¸¯Yj,F€üàÚ»L{!Þ3>Š(µãO:I©ü*gôR¡dªß–²¨¾^c§\N—2`Høt1L<q¨AÜt€'É‚Û¥è‹ÄîVðn#zÚº´‚¹¨-ƒ'ñ¸¬ˆÊ -endstream -endobj -1562 0 obj -<< -/Type /FontDescriptor -/FontName /GYDQSB+BoschOfficeSans-Italic -/Flags 4 -/FontBBox [-176 -300 1375 1139] -/Ascent 766 -/CapHeight 728 -/Descent -198 -/ItalicAngle -11 -/StemV 93 -/XHeight 523 -/CharSet (/A/B/C/E/H/I/M/O/P/S/T/a/b/bracketleft/bracketright/c/colon/comma/d/e/f/ff/fi/five/g/h/hyphen/i/j/k/l/m/n/o/one/p/parenleft/parenright/period/q/r/s/slash/t/three/u/underscore/v/w/x/y/z/zero) -/FontFile 1561 0 R ->> -endobj -1563 0 obj -<< -/Length1 1199 -/Length2 806 -/Length3 0 -/Length 1564 -/Filter /FlateDecode ->> -stream -xÚ•T{TMY×0˜+dHŠÍªdÜî=çÖíe<—’ÜTò(œ{ξ·£sϹÎÙ÷5É”A&†u½·(Y–L2c¬å1™i–Á“Â`E‘!rìA„ à ¢çì€z™2^@¸' ðÕãöÐœ™ayî$+a‘µ`±,XY”œÔ$³É$ˆHþ1í— lë(^!ˆ¥)àl®=M™ãâ)c+ÑÖlŸÿ.”‘åìé”YC:S¡ÁÌQb{8QKGñBA¸¾V„•4¬ 2ZÑé@Oq¸J×}²SŽå¡VX×퀤t–Îà¡$½E žãv•`í\u(SbµS“§WŽ ÖR,’ì&Ø:‰BLa\+ñ>„Ë„|žL!‘µYÎBHlH€w»´÷VcÇ -6¤S ‚ ¼D¨ÔYíHŽçiÁ5'*u(ž‘²ËœM¥VƒL8_¢ @G©à„]€ÉŒ²œ¿™sæÉð`€ó‰VJdœˆì?Ñi³(â×ãz!XŸ¶³žÅ}€ÐiÙÕj±x^Á:ØoËoÆÍ*WÍ>Ú€®ûíüÓçSšñ|tÊ!®…3æåMí2S7&ׂŽšìW'G-â^¦9]7|»Ÿg '«Ÿ{ÜÒ­~¹Âsbõ>×’†tu<{c¥2;ÔYbÖ·8ÕRɺrµA^ÓÀå|SyÓcqrJJÌ™™õW.v 3}z7µAÛ²;biuÝžmî5~!Yçˆî¹z|Ö³öˆuÁ&«,É~,·ø¤ñ§{áîÆþà¾mmÁ£Iß$©O2öI 4¹g°iËhͲ†’£œO–û˜óÞ„ÏÔcØfpsÆ=àa¹×ÊùÙEô˜³†7FnÕiS‹šç$tU*åY'.¤þº#°Ûæ̽ûb“÷©û«ŽînüŦI'¶u.·“÷ý6{#||aWUNoÑÇ‘K.ï"©Sbbmv/\•µ$nçÇÀ»£ˆEžã죅©ýj=+¿:¸ûTEB—Ü¢f^Uïе"íU2ÕëÉŠ]æF6¦¦¥VR;Š™–ƧŽ×³†’¥Û8Ðé¹÷­£n>K»јãoÍ/6ý(S¤êH•Ú¶Nkª-õ"¼o4/«QÔlp×W5lï^R{;äéï–ÞÞòücŠS ë--/N:„”çæê"›®ÖôíÛëöÉË“ƒ]Ä„+#û—.­Ðx¼Þ¸q¿;<{yÍá-•ö—ˆ×d¬¡ï|E>y(NöuíÃÏŠ‹ó6ËN­‘yRn¡Õ·’‰ÿ§q™Gîô }90¨óÏò£ôçk¼WzgØçh¯_b-ÍæÏžBõêÁÌ+éD „Gî°jÓéÛ“_…þE_4°ä—Í#u£Æ”7®Qu.[r,Pª(œ°lQ‚f×ý;]sû-TUœ9óÝ:#ÿ²%~]N‡ˆW6{îÎõT}V±2]‰Ü*µ×MÖúÙ:Ÿ›~éå¿Äèàö|’Gsá›Ù±w¯\Œíã{oí¦>ÖkÌuÙÑ{.ž ^>÷QÝú<¿™Ý^îÌ[ð ûñ<‡<»á×ùû×”n"ÝÇö÷ì‚!kª'r¾srö‡m웨ˆ³<ÈZ%þ x0 -endstream -endobj -1564 0 obj -<< -/Type /FontDescriptor -/FontName /WJPRUX+MarVoSym -/Flags 4 -/FontBBox [-572 -214 3014 925] -/Ascent 733 -/CapHeight 733 -/Descent 0 -/ItalicAngle 0 -/StemV 16 -/XHeight 400 -/CharSet (/Forward) -/FontFile 1563 0 R ->> -endobj -1565 0 obj -<< -/Length1 2139 -/Length2 9316 -/Length3 0 -/Length 10476 -/Filter /FlateDecode ->> -stream -xÚ}uuT”k÷6 ÝCJÃÐ Ò)Ý’2ÀÐ0ÄÐÝ’‚4"ÒR’Ò!ÝÝÒÝ©ÒßxÎû<ïo­o=ÿ<×®kÇ}ï›FM“]Âb -–…8@Ù\Â(Ð -ðpp¡10H9ƒAPkˆƒ4 -¹9¼œÜ\\\†„a?jÊ03eWåo .n^·€//7ÀÜÚ -0[Z; qþŽ¯à`ùÿ–›»:þWçvv‘˜`¤Ì¥9ÄÁÎ`¶€ù¹ÚÙ©€ìÁ¦¿òú?j½µçÿÇ@lmi0)ƒÍ­]íÿW«ÙY›I8XÚ\‹¬]d­=ÀæjÖP3+ÔÙü·XÛÁìlgíVƒ¸Xÿn €ÈÅõ?:-+k3[°‹ €ï?*ÔÚ –›ÎJ„UÈSSúßDÀö°Þý7ÈÅ ìþ›ƒÿpÿGv0ÿß6ÀºûW8%UUueYÿâ_:3ˆ¹µƒ%€›rvy¢q€0Äð¬a¹{À°b99 P˜ ÀÑê °€8£ýž?€Sâ·èoÄ£xDN©G$à”~DBN™€SöœrˆÀ)ÿˆxœ -Æ®øˆ`ìJÆ®üˆ`ì*Æ®ú„±«="»ú#‚±k<"»æ#âpj="X.ÚÆ®ûˆ`쯌]ï$c×D0?Ð?ˆæ²w„l¨ÿ•òÂr¹@ÁÎÖ.¶Ž0SÓG31™ÙºØ\¬þ‘a×&vþC+ÈÔd¶[@ÿóýGìü×õø'*ðo±-ú/{!žäÿã«ÔìÄKÑ b;çÿTÂû[boÿXñï[Ãiþ„Q‚#À& þÿo½“+ÈîXí.°Ü,¬Ýþˆñ[ qý£ \0ËLj0½åïÅþÓ–ècyaí±òt´;üa“Yÿa™ÚüacµýÂ:ñ˜1?¬d»ßkáQë›ý# ©ø`±`ëäñ”À¨\íM/Ë?RÂzyLò‡+ÔñQ ãp9ƒþ5Y^à¤ÿž+,Ø©ükíücÊÿ—ÌòÇA…5ÖÑÎõ€0‰ÓcXW\!P°¹éc7x„þ#ü7%3þc"@XÑù`N.`{ë/¾ß6`·?ÆÄ âbíñ˜!¬ÿ¹#°ˆó‘–Ö¨•3øókÔò‡,†ë㑇qºþÞø.fç?» ¹Û–°ûÔãcõüÂ&åõ˜3,’Øùï þ½èÕ@ÖP-OÇž«ß›ÿ/ ükB!¶`]ks¨ÕŸ&Ê ØÅõ0àâà‚Ý7®ßßÿŒþïK") ñðf烽p°uäƒÙ rsûþËÎÌÕvf ½ä°çè¿ØÂö‚Á`3´¹iˆÙó›Ê¦_äîì›CÈË«-qz]oø Œ3YÞVJOÓåÆ$MÌKIRÔf‹ÂƦ}ÈYŽ~ {¶g.%Ë„ÂÉt­Kž°g÷]·[‚©Ì!d–#)ë¸Çñê”Ø&ˆÏt§oC:x¶Ë¶rïZ\¶õ…öö€ü84ÉäЉ̖}„(=úUh¿ž!N,ž³Aª«–‚öÈBˆÝÁ^âˆa¿p¿Qh„½Í .3ÀNtçü¾oµý Oùr_«Íý§¡Ã—h -3gÔ!ÉŒ“,'9%E±Šq“NΨ¯"¾µE,MM;™]*œr£ÏÐgGåp÷R ×W&½‚ ]Úó«ªä¡ï΋kå¿ : -µrô„¦Œ;¸'PóVxÕžBü'¶!œÅ{Ùb‰éŠð¯¶¿¾Tå1|÷Übñ|´ˆÿ§dH·t-»ñ¹ß=ïÅ´]nº\cdÖ¥x"תûÈ:9‹^3'Çs(ÎßÜ­$xMx>fÖfýÝ2Ñ%¥&qèH±èäÀÀ³øI`j ›¸ªýë\}\sPÄeöÂYá>äšW ë -Ã;ìã2*¯®P³_7¶œÐ¼Üg£ö™Ù¥¸›Àá´í‚ *>x£ÙÒ¾ÜÛýR%棹é„ÜtC­º}ÓÏwŒÇš‚¬±„§.–;wï©wıYD[š?.S6LkyîwüKŽIÝ‘Oa&–õÃéAwñm†¡{Â×8œwXét {'±)^ÛGÌŽŸ|IbQ<+â¾ôH³k9Èß{u’ÊÓõÙX Ž% ÖnŸÕ+÷˜œ{à¦}²k§¦-¸~±Bœ©Ã`ÆfaQ`öeÆ\¢M!ñâ|ãä ¥ù(Q‰Ž{Àà×»IÿJê NZ -Q0Dû‹e»ä7ç[8¢âDNnÎÝK]8)¾Òhöž.§Õ -’êé"ÑÝ6’"¬ïÝMÞŸnv;h§ }˜¾ÉÆüùˆd‚-kœëÆOž(ƒWC@ˆJÉãëõ¾^}(H CxŸlˆLK³KîJÂP¹2j5ÈØ eBø•ªc^Œ÷Õ ¾díÎÂï=âÔËm;Æ€'chZxhæÆõÿ²DFmGãî„õÃ8?ÝŸƒ":CröàÇe2""à%:øÀ~»øÜàVB)Özm^‹²Jmz•Gù:[‹ë:ùƒ`‹’hs\±ì»á=PwC‘8Ìb’:QÜ ÀH À_ ,A”1”áý¢å»Wbó11x#q¤ãéf¾cz:àjº†ÆR¸ÇŒGW·ØÒ©áàÔ1‹gQ>ï\ÚY»(cX¥Íí¤ ±WâVÏê0Yð˜–4Ø–Æj1_q“g»¨Ý’2¼|‚z„r^pÈNiHU/äë—!@š§oÌ==©|•^þ6mÇÖº¤+crofPBáØR߃ Aº aÑO¡u:2†!£édXèöÚú;î7µ»ÊÉ ¡Ó¦‹1Ž¼9õ´C/$wì”û8!Zñç|ä<¢ ôÈCÕŽoWÅi‰ßœÂÇ¢…ZÈ¿§|j -joœÄgØÖCBÞHDžbå×Ó¼ºÐ°e¥ØÞÌú:"3¢ºä»ô,€wg¥ªÃ=1s”AÛ¾“]FOû=¦ŠÿI !ª*”YßKÓi<©¼·ÍwrÍ;ÌÖ½ñþæÎï£Áj‹ßÏAÉÕàÉþ[îÛöém-•Åû%×&ÞIÙˤw¬3>)Ó´»ldo=ë>ØM.ÿ©³`8)»\ýÞ&-ƤaßpÊ@ç›Ågr1‘ó8 -aëÐgž@Þqí 6SÏjkñ¸=íÏ¢›9ülµ«N;Ž ]ÑÑúû¶ó=F•øÝþ‘¦³áŽMúÝk¡žÕï$ÃñIR2wA]I‹ÏŽÀrrgß•–ÊæÎpÅ=ôÃÑlôõëî…5)²N7uMgËö¯¾¿·gJÀ)©ÂتfÙSÌ9Y5·õèžnu†mÙQR§¡’R!üŒ};¬3ûΦó8îã6‹­­ß6>b~jã ¨öð±I®Nd éxrU]Nâ©0y3 -(/Ã׸1<É¡ü^˜3ž¦ƒGÄ,h×B³Ls¦l8ƒ†àÝh0Õm€’ùÑ¿Þ1¾Îï´Ÿ›cåC%‹ 'âBé¥K#4?ý`si;ȨŒ  «öŠ#Rò­øGÛÜß6) Y8$%„SÙ¬a@Á1n•¯],¿èClÕ)\ƒjWtTkn=Lkp}|]ËbV\Á$jÃwþ¾¶V .6Ø8·0,t1™íZþe¨çº»°Ue‡¤È¼£ý³xM…œî • —Dâ÷ËÖnsÜdc÷´Þ¡šÆ·y‹}SR2¹7"í§!Q1õ|¶ Ô›² o±²àQ¢w?¢TRE`Íb¢}*%Ok\@p©}õ½åH5¶=[‡¨Ñu¯ýûÙ ì•Ù§/°fŒNÂIY”€pB³9.[…Òøhš^Æþ,Ã$5ü/*$!~\=·W||dÚ¢ýgNÉP…¤7´Q ‰Õ,AyŒà_½!í§o´Ã0ýÎG~8‚ØU™Ñ!vêþ.{\Fþ„N3ÌË~þc'ƒb ŠÎð®V2#Þ+°>ñÇ:†KgÏ(„%ã»ÏÇ©‹GGr¾½é­s» ¥Ò æ‹øΫÞÅpã¶[ ž-|¼€K:Îã%xÐ’àÙmŒ ú›±þ:6ì ª“1Õs£Ét¸kÍó:&ðnì ù·}ß¼—köOÚÒë˜ÀºÕ;¸»øeµ×Ð3±¸ ¬uÏ›÷®½CwrÁÃåOé« ˜.:×û…(cۆˎ -¹Å=]b4ËÂͤÁŒõÔ\?²…hÛÏ9Li|©eô»Ä›Ú>~½Hú¼nÑHáÀ3îý¹Î@û G‰82vE퓉œ"¾ÑôhlÞoÚòIVO¤M5u›m…å¼õh„Ç̪ñ•Hk_>£«éR`e\a匠³ù¾¿Zè”ÿ¯ü+@WpS¸³ÆFNuFƈƒd`äΉ£ß‚t¼2ïÝ,+™Ïq1r‚õ0ç…ÓçFœúS‡Ž©rµ UƒÃÎA¸tÖáµ±êýíÜ×çi»wV -îBú6N½7ÛVeïËÉÜäÝU#f²íŸ°}g/°ñª²FØx)0ÍÖç“JIÝ£Gxz?2Ï\ 'KÊõz¸4Ή.¢gî·ÐOòRt‡—ÜqéŒ×î*†¾ú3¥ô»Û*tÖHô§,-Dv§$继á~Ý´W™;òLŠæ=Cjð5 Ö6%i²u«×s>®H˜;÷‹¸µž´×•¯Ïœ£r^JžÎœŸQåNœ -ì l·ÎãVpË–¶¨Ú†Š ƒˆ±ø {=+žé.Ÿ¡8«lds²¢07=ªŒ[àØÍWýn3Vi(i®³µ«-" -nåäçÄùßÒ¯–ÕmÂMo¸ûX"]Û„f·27ð¥%ñGO\E¶¿ã·¤jyßã¡qœ¢ ÉÐfßPmûÎ[2¾òË›gZZïf*×2‹ªÄOó[ -«O‰ü7¶Ó¯|ìÉ©9 -þÒä *ñ„—;tÔphjÚÏÍ#^S|U2õ‚k$óŒ 1ÿ._1€s-j u<ˆ1"vš%h’öAô•õ•´F¼æâOŸ^âdSº/rFä®6hnáVIH”؉ì•á’ÎÙå2? ‹pûÛìg‰¯^ÛY,)häV]¾Öÿñ+{l¾ž:ûŠDpa¿Ñ>°ŠÝèXÁÍlÿrœaàËŠ=5šäËb>¨cQÏŒ”¿ð”˜PÖ‹,¥ÚG|wPC>ÃÌQ€”ý„iݸGšû«¥H¥šÝ7?K#Y“¼†¤Ñ5B§.yj5…Í+#Sr dmi5ÈÔG] -Q~|Ô%u¢{õþ^w³»I\´‡¢‘wm˜pSÊ—’×ì -j¬e©ø¡g¥ -ÆÒTE±ø*læòöÞwj6÷5_‚µQ†ð3ƒ¦8œQ+—»z²B¦’.åÉe*táã ¤0Õ>÷Œ_ð0ÝÍro‘´Ñ¾Ô´»=™¹7wbþ²ô=C¶m{‹%QIÄéøkf‹ß°Ý×lªuP"UÂ&Õ»ËÛ’Tôyu^YØ\—?]÷„ÜT—28ÅÛ•Â ^¶?ß]¹wòmpnl™‘ |E7Ý8j£)ƒ,æç×pô¦®ºu^ Ç™qø :•zÿ¤•Ù•´ÙµÒòþ¡Mcñ -ŽF9r ëËÇúQ<Ì”ù­‚¥î—C¼i k)¤Lž§RÌÃG®9Áûo$rsÙ[´>Ùð¼ê᮲q'<_i$Þ›ÿ=:‡™Gñá~h›E ”G´Î·Ë1Ó!­aTÿG5Ó«üÇÚøü|iÙÝpßȺ8=«ËöÓQ©Îrº–ÚþVù._Ï,´Ù2í”·õ¥þ/+¯VŸÈô쩽ç\œ}0!pÇCôNÑWdôNÕ(5v1VJHZ¬“wŒ}Âë[Yì@¯àGƒÚ¨d¥~iS­µÞÑg¢¹yæôê6y=pqÊÛÊmÐïì+‹Á³tðÝ*B¸‚J!ßÒkCßJ¥…Ï´Þééý"}µÕÚËÙf¹ Ô›`8 ~YßIZ*·iúÁÞ¯¹3x§F…ûl€tÜå/¹V]î­ò’$]ѸšX/Hëƒð@ ñmbâ7m)‡¡çѦüZEÂM’yª> GVmjýôv.ûo@r<}̉Cø°òQ›ã%q¼ûòÃ!ª>èK1Q܇°OîOVwPÏß/Æúá|Ôª‰ÛŒìV•Œ5ß«†s‚¡†[1ŒàÏ¡œ']Ì-}ä æ%ÒzÓŒN0¤j|&VKZ;·—»±†ù •3.5îJåD«àþ¦¤ÝÁQH(Œ_”\¯©Ê ‘|vží¼è‰^Wé+‘Õ:\ŽÃ NŠ ]PgO@ò$ÈÅÁòœ°êƒFséäP©ªŠd½±mDE­`*’¡:e‘DûSɼÛ0EÔ5]©˜ý§?T›§f9L6½çŠ‚{2á%w«J‘€ ×tcËDb$¬_$y[Ô§™àòP¤rYeÇ{I¡ów¸NÀçÓy™¤e ¸#¿áŸºÑ¯r_bâÊ”Ñfm‰¶—2bKÐ4E¦$Ð)Pg´7?7šÅvœ>Ʊ`©î”§ž’μÉHsö¨ó*eäÔ‘©”ÌþªÇú¦:ÏÛVºµÑ*<<œ­`Q¨”SuÏP©½)•ÄT„DK¨àÜÝDÒéÂÚ^ä±6fíåOT©úï2º­]ruý3ü|úp³Ä^—nˆÉÑnDµØšwÕÕ©éÁ”ÛÉŸm–?+¼¾òa:ž` kT€{Ñ·ís°Qøí[ïþ¶fë–€0½Ó€+¡ƒÙEûËŒ¹ì‰¥w<5> Ç/2þ5R½×w½õêz ahÛ1èà‹œbá .´jô0ÏðÄÌ÷ýòŒ¨þHK ç÷5Þ§²xâu6Iç’mM#u½îÙŠæD‹Í;7²òc¤7r +òc9[CзèIÖØÁƒ{óÝ×8åæh'bÁ/?É/0\YòølÆsàDê‹÷;ƒý‘B·"!-ê¶x³oõP¦2%¡U0¢œþüÈ™¥ •‹MæÇ£±ÆólÌãc­Ñ˜ÚŒÝ¤#¬'Ä'¯¡ý%óúz›Ø¡ý-g€FÃÚ½’϶QÄüîèö/ç+ ¯Z@ȯ©ªŠPÞž^L8ÒÎL™Æ5ˆùÌú *ÇÌ_ETò§ž‹AßXDÓ±©âmS~+%4#ÔÉ·‹û¶ä\ Ê/aääÒç“&(ì¿ùr»ÜW|F’‚8æÕVØ' d*z˳‰¨Õp=îÁ*ºÌÌø4ÔtüÓè.º‹÷™ˆ‚¦y˜$ã ¦Ñ"i£û¼’%œÈHkµ»ÑøñùfrçŒÝ·ËVÌ#zÌ|¤©úõO pÍXíÉ‚ýû©•Þ”_­Mø‚$ñ•H*K¤+¼ýÃíºqüÐ~Žg}á’<²]£¿uAÐR][a«B†H0ª¢õzæo Å[ñF ùwT®F6¾ÅOþ˜G„‹Ü¾ùœÂÞ“ ™ø -ÀÛò"w«;Ù¾ã‘ßfªøѬAv®˜!f*ql™XBQ½ð7c¸È…fqë\A)Ya¹Fì'=é` xヌ‚F-éšö06‘ÏV¯PÛÑwÕ¼L¼=otüLÂr¨ÎyÙÇ"¾TÔ•;£Ñj$3/r+¥N“‹4Æ]Klâ=ì'©ÃÙnÚV~¾ëéàÀŽV¡ h‚ƒOŒ]•Ê""‹óòº2Ø5  -£¢áqôoó6´…&Ä—·Û3ÕçqKêyTªéíÓë×Ó8 -mnF»zà™[–Þ-\÷ò -v~«]”,I ÍeıAltà -}ÑÅùÆÜY’é “º½|à†¨E7µý¹"¹ w ßß—»¿"àºÊsÂ"jf•ÙlQ/觚^BEþ0Ùÿ\CÊ%„f+¢t½ÙØ¡n•z8a"„åí}Â*yQÿÏžÓt§¤ÝwU"—/CÎmݩኳâÏ|zXsž4Ñ‚Þ‡UW\3ë4à¼Wšw`¶( yÉ´Ñm7#:eEKbrÜ4{Ë®ÿ1Tü0£IHŸÉ®0"M¦Ì'ñù»Õ¹¥l—{çœó¸¯lŽ„Qƒ5íß$§ˆb@«Y'/¶¿÷ç"6Î3™Ö›Õ²•Šk­)~µ.à-,(C¢tEµÂÄ çÀ•N˜ñb€Ô£TMgèíú -ЩWŒ?G'*^߇{j»ozulŠ‹ÚÆš]2QÍ —‡kÂÕå_‡+Ü¿Gp:ž!Ý"º ¸zò~Ÿ¦E1ˆ€²UËTQz׃ÈÆU‚õL½}³Qää^ï“æ¨J¦ÙŽ™™—TÂOPHûìJ Ÿ±—s`ÈëÝÐT‡|ýÅGÚcùˆBügÓë#¿$@\„sd…˜ö‹Ów[2jÝJþ\º„^èf¤íÇEJ.rNÍå.¿oÖA@/Ô)GšÌ=Kn«ŽP -·R~Mú†Vv±Í‰˜•U‘ŒG7°«3óJÑ “ù&"žÎð´>ïÖés=×Cž8Yå²~ÉsO^~ ÁÒŽ fÏÑìib²EhK6\ÄŒWL-j\¶œù4Q¬Óª&ÿñ, ‡lîRãÕ¡I$Ë·ëÍ_§ý*ö£º:‚œÈÍp(MÜ4)Èœ è;Q.½a'¾žõÁè• 5›±ÜÎË/Gþ`q6åÐ0ÒMlòËA—ÑM„ ,-µu‰ÉPú¡ž£Iîþîêu ÊW_Q³SÛ]%¤«FðLlU¦íyEéÃËìæÅ»‰û,/®ÊÇ[oœ¼Øs}Œ¿‡…¿Ìò8xv*!—wâm̵»u1e£M”WžŽcJ¬¤œTj㯨ï-€ZgاÌ9 …Ä#ìâZ•xس H!UÎKb+Ÿ¥.Y£ù(á°l漉öRF˜çŠ[giƒÌ›'쨅ûI¥­µXaüR®Yjâ½›¾ -!¸+Œ=Á²/ iN„S ¦Sý^¬@«ZH5U´pqeÀu»ˆ5™–WéD  GDê;ul½K”“0ºH)0 -Ç.“ ®ëšÌŽò–DÓf©$µÿäÅÍÚzxݹE»>Â'øÅâANÂ…NU -P&>1<¿VI’eýVÒäWÊ›«ÄKíLÄ LÙ Þ¡O7‘–Ÿ -÷ï}w+¨%ø, &/9e«[;-Í°šIï‡~Ùè0÷·ZɃ1&+k÷åܹ%â\´©4“ø1GVt¢Í˜•Æšw)bIÔÐE=Š8íúý/R(,§´iòiÕʽph–ü÷Óžoiû\¶æŠêÒVø±Od>_£ úV'C˜ôàí…Oâ‘‘´tRÄVl±“:ƒrHyzB†Áý]ª×|šKSèR*诘ðŽ33i„g× (äT38¾©lD¿×uÐ}bßÆÓËŸåì?àLp7Lo¯£RÅóÌŽÑ‘Ïb`ø#öÈŽIÜ«uÂfŸ¨OG<ÔF!4°“SîŠóçto‡MxN/{I“X¦ïÝÓ1Ûh^»n;å:´ú¦úCÆiFq„ªi?æ°ƒ'³©ˆ\¤æÃ|”¢Ù/ðPZ(qLÑ?ÚŒó—ʉ#w³˜&LW.Óvß*.–3"ù×KðÅ^¼o×Mä¢i˜J†ŸÐãžAl“ ùQ˜ù¿zž#ÙËGÕĤ'˜àˆnÄ~Ì4îkXjZ-êdk)v §`Iì[?§o!? -zjeF“}iyið4£;»\¯ù‰d’HMm&ÁÄIAn`fšžvûpZ½±àhõ'†¥«)ï -¿Wm2v[¸šzHb©f|>[…{ê,FÕf±ÜQ'þ‘(4»SµñˆWº(˽ùÀN¦´ê$¶¤Ñ(wŸÆ§‚ºv¢Þú;UÍ·æðAÑ|,X¹×„6[Y9£‘%ÎdüÍuNZŽR Yv%JË'ö)ù;»õBKÜHïJ¸»¿šoÕÊVH=o(€ˆ(~ÅÙ_ãn>ø´\¨RûT3èE]ÙklŒ+xØë0¾øF>wÑðéó!N¸·?‡ÕÇÏ}#œ»µÞÛ?$ah'cn›ý0X¨çÉ™ -w'Jð‚ú -Ø*XÆù2)ä²ÎÝ5I zËOîánmnˆˆñò~2¶©¥˜ú²ÃXîi$~×™5[6=9úúµ,Ý-¼„à¡dVÚûSD2åˆ?S‘}¿Ž¤ÕÏΆ0éÀoœàý°¬ÜD×sfy®>Ӏ馴¾bøÏ6=I×)1¥luØ$êˆoU›v§§\ œLú5¸á)wu12®>½s êN{ª¹ÛNÀæ$0yòÍY‘‹«ØÓþÊ@ Ô’9©’4º_ -šÙœ}O…Ó]îà¦XçÐÜSµtvj°JYš|ª®ÎTüíSžÑŒ‹|ìÜÐQç­€ð‡Ü‹×Ó¤¨hJáòóâ÷zRZu¥ƒ4%e1­ÆžÕ¬N³åL3ϤʭS|Àk~É#rÍ~»Åÿùÿ9ÚV -endstream -endobj -1566 0 obj -<< -/Type /FontDescriptor -/FontName /BOOWFK+t1xtt -/Flags 4 -/FontBBox [-5 -183 1501 822] -/Ascent 676 -/CapHeight 618 -/Descent -167 -/ItalicAngle 0 -/StemV 84 -/XHeight 461 -/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/W/X/Y/Z/a/ampersand/asterisk/b/backslash/bar/braceleft/braceright/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/numbersign/o/one/p/parenleft/parenright/percent/period/plus/q/quotedbl/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 1565 0 R ->> -endobj -1567 0 obj -<< -/Length1 1134 -/Length2 3354 -/Length3 0 -/Length 4068 -/Filter /FlateDecode ->> -stream -xÚ}“y<”}÷Çm)Ú,uY"ÛŒcWû¾o¥2Ì`2 c&[dÏÙG¶²< -‰PI’-al Q²EŒlEöøMußOîûy½~]×ûœs]çs>ßó=-dn%£‰"8£u x’ ,« ¾$ –å8}Z‹ˆF’0¼6’„V 0ÉÊÊHTè/æ&ô2[²7Òíg…, Àáp˜,€Â¸g´Ïùù¼+€*üŽ£Èž箢‰Þô&ÀzS €ÞEÀcýÚ•þ‹5EâÐÀ™_ºþ'Äa°~ÿOãæNΘ Q2îßY‹qÑÄ»aÑ€Œ2®$«ü;ñÖÅø¢Qæ’‹;@"’Ñ¿Ã6xšˆÅàÑæoÌOc(Ý„æ¬Ý1.x´·7 ÿWÊ”@¸ÐÚþ5(}Ni@ÏÜøßrÐ8ºƒÿéí‚Æ“¥¿…þ€ý@ãQÿ6ƒîñ/+ VzÆÆ+©_ŽÈXa‘xÒe¨‚âï*¼ …Á»0yI$"ý8d(ä(€¡Oá  }écCÀx‰þ àI&®"ÇÏ3SV ÈŸ¡ß¤@œÿ2qù/Áát"àpªzAíA(AïAq݃rÄmÊ̤ëð؃t!Ø=HW‚ûƒPz_ü¤÷%ìAz_Ï=Hïëµéc÷ ]†÷T ¤=HWEþã½–üs-¼]Ä=ƒBéb¯îAºXŸ?H¿9ß=HWçÿ ÿyÚæH ždíç‰dÿÿ/†þf+‘à¶Ã Hî{KL$"Æ÷‚,X–n¿,ðó)ûs9þ.þïZ!ßyúº+ÉPyz¡ ø:2‘HßÏ_—›¾›³+†~·Ðh_´ ÇÐÁE5üJExíz¹&¿ÌT'ëèx]t‚ë(y’Ø»»îÆlz½^'Téq*Å|°(òÍÀ5~É…õ._dž¬‘4ý;$WŸK2¹mË nè“(Ÿ[·"%úÓáÅD A.§ ,Ä“í¶#å¦~.øQç=}^ù € -W¹…ÒøIqš9u_˜b„DÇIíŽÜñ â…t²µM÷¦pE‘¼³)ÝŽ‘ -*í#j 2õA'xFr‚±çf–wÚÆòFë÷IëzŸ5Gü£›.DöNDÖÒ]/=c#õò^§fHlµZà“"ÉÚZ«C;É]f¹PBo\(cØÑB’íZ•4áåÊ´ÎÄá βõ F!^÷×_†¿Ž ô/Íù$Ÿ‚SÇàæl„ëo“©ÓHñl®zJ†£ýtµ¡™œc’ªëðrO‘Â"¼Eû‰Ì¥å øʶ CïyÌÝï4RdÇýe:Õ>ñK:¼€€UIr¶+òCÛô„Êû¸Á+Ÿ’FÎ - -Z‹è.B.Ía¹á|Å~jױʆê¡g y¡Ñßs?lðÝÿBØ„«Úà ˆüÊù=6T/rߪÝ.¾ìªìÚ[Î'â.ß5Ñ-¼ø¯õ+|$Ž-«º´Ê÷YÚ£JõkVS^¬µ[§Ì¦·ÚåARVË…zVüÐŽŸÃxªH¸´°Wça—°Ûâ Åu½3Î,òï⥲¿Îµog9ú$W'p'Êi¬™]Š§øO/Hxæ‚hïXâ›vAçÍä#z'$ظúÁ4æ¼á›¥M0ÞbªZW|\ö€qò+ÿÑËmC-ÄUŠü˜l^8ºGq¸ÐQ¡’yÚ]M‰gœ×ßH^–H ç+•˜ 3Çâ—nsûÆŠ圠H¶œƒ_høOúß)ÞòyÑá·tÃò®öànzõ1s¯P¸uY†ï'±GáEÞ%Á›ýÙ¾Ã9]{Ycfh«r–õÚòÎA²ðu½Œo÷å$°sôU>2§ØpM«„'^z&áU…ÈR)”3ÞýRq¼õ“Ÿ[â´Ú½ÍȲúÚVøt(uZP°ìƒà+¼lóÑèˆ7)maÂü”á±SnE2ÎlÖœ±>2·)ù´Æ¥r¡ëœ=ÚvXHϳ%jfâæ…Ž‡ýŠayžF‰Øz³þµcüçOj÷äÛñxZ³~~¾ÈGÕ‹<ä’^m¢<ÑÃ?\¿^óì7†ÛZÙé“ïäV¢N©¼U³ßxD½÷¦K†Gµo“a?—æ töVÝŒ›s<Í9 ÙÖ³ý¸ÿOç@‘hžxZ¬— sðœh!Êmæìjj@_[QU~ͽ¦Ï3웧‚ûù¯Î<ƒß@¸N;˜U1Î×ABÛ–•VbS•ãA“øùË¥U÷à範Ä:(<'óPük"ÔÞÛ€®_2C^¼Í’l_`‚ÌÈp˜å®såR ®2%·Îv³ç®»Ñ±ûª<0?¾§U¾Ò`ÿªc7…8òuAªŽl?Þ » -I^Ž²¼ø%mä²×Ù2¨WAX½ë¥-r0ââb††u”뼑éakÛÔXY©b>ƒžÝµüª}ö´äôõ\­ÏRËŽZ|f,bA»Ì‡”ªì …­xpP·ºÇ». »Ô¶¾5G§æ³¹êqŠß@î†ëûÑݯŸx)n9x†ˆ•PøèÏKZ®]UGP ´Oˆ -ÐJô G Å}âx¤Ùnnm¾Îûqãýú‰ -Í« ׊qq3š8ÄØç6®Cžê‹ê×p«f2{^¿=)‘õBb‘YXZt<Â_]ƒ$U)¿iŽPü³ŸçÄaumý“œÓ‹4yAÅ -óÆgýpþK£fÕ¡Ç>Šã…ÆNݪUQŠ5¯ÏöÃQ«*sŒü‘}ªí#œï¼’" ö±#™ºð]iÏ9² G×F¤Ë«ª_ávi£Ãú©OÞ-0Ÿîûfôa5–§Ùš5fª¥ï~îÒ-¯FÕ„|Énµ¯!“Ѷ¸îZwË7Þ1KÅv ~%œ¶mTQ¹RF)©zøzRà\û?Wq’¬,Šf)‘ -åû ¸,ÖÃJ†ÇÜŒ< xÝ2*|+Û¨^áýþ7ÙŽY‹î™;8è³ -¼Ø‚ød£{å³|y'©’ã=ªéÍ"a/t©ú‰§<ÜGg¼6ÙÊ-kÁí-ÃÇXòŸ„6 -kØš®(Sws’-%ÿÓ¾¾“:ôÎn5«D;™é°šQøl]€€µîc@h™;ɵ)ºümÜþ£ê=X^ØV`»x_Ї³³£y‡—ú›V^A9ø”&®µa‚‚ˆ `›¸ŽÒ˜Vx†#Â6ênõ­—\)²!ø_‹Ç3 Ö‚c„b4XÔÒ£wæçmP™&šGÅû¥ê«œÙ§üdx¤ò»J .9¬&¿PÓOmü²Í6®Îë=Ôd­vDqûUÄǺZÐ*¤·Âðj‰þ–Ÿ§ñ3Wך rãhÊêŸG²Þ|ƒö½›ê¾¬ÿFßùHÁ½¯NQÿY‚ ²­ìÃ?úë¼ê¹Ôû8ÎÂNz£"Éä^Mq •Ä;0˜™ªjtÝ<Î`]óõÇŽtk~m—þAHÙ•\šRb7+« okŒ~úœ´älÕåIê]-|Õ¦aûÙ¥µ ?ôžŠe¶ (`Æ M¦;ÄÙyc{uòÆÛçÊøÛ¨ßê"F6º?ÝñÏT¸WQÁ¾›]˜?ÎÖb?ªøðŠÚÛ6|“â^yCÞ«|™j!¼zü8m R„cXÙ:?X©ëš\ñœ%9Ð{,õxoŒb²#‡+`ËzKQXC¹Y{«'eŸŸšý ¢–éa“gÞšÍÙÎhVæT®»w_0o:$/ÝIE‰ ~Nºj.¥Lòi%¶›QS*gUq^±­¸Ý—b¤P÷dŒ/Øwé~›sôÌÔùIñgFƒô”E¢žÈئéá-]q)IøÎȬ7]ˆø}±ðO§mvÃ!Ý”TÚ­jLÞDóc¶¶:3»Öܼô‰§ Ò"¤óèƒgóÚ_YœMˆ øüøþ혶ul®ÈRy2´³óŽp^cÈ­ÞçM£ Þ–õ¯Ñ%2±jç~ˆ5Œxš™Ñ±Šà±áU±§=™Ë -üñp)0Ɖ¬\hÿÚ^ÉöÙL·b5ë ë#äºy^G<ÌË]ô`òïÞ;iš#ÑÅyÿ=“Ôû÷G{ÂÔÅBIƒøMÁk@Ù¥õ(Œ¿M;dו­ŸF%o²ZÀ£DŸØ[‰‰¬ͺWt¶= ÔŠˆo\½øQÌü–NÈÚ5„F{YâG)œ%7³/J=é›N(Ãp,Xɶxf3z%T7Ý_ûü[þA#ÆûŠ'z? ôªzj–¶ÄðB ÜQ>/{0Z‹ðݨ÷î¡‚ŸPq“ÊÔùÿuC³Ä’0 ž±·y‚€°sñÁ¾ÀôÈÈÅjíÔLz±åù¶Èœ™±¢ë -·6Çwžéá„æaa3ÞtS HÄYËÁÉWÛ ð¦ÖBÚ ¢<pÜ'y:C94 žyN -ÜÆÿ¢ÖÍ¢¶Z XÝìZEÒ±-C33Ö¬¶Ï¾Sïm‹»ÎNIð=®²Žû:,ýÍ¢2ÅJsc…góO+isŸÂh™'ºU61ŽöÍ¿ÔÐ^škW:ª'ý\´ˆA7|Ê¥µïË6\ÿˆ×òŽ¶™psÈú:× ñƒkŒ6Š:'à7îŠIlÂãË©û ›ïëÑãªáölH7vp6xrÈ5TÝyuþ,¤ûþ"NÌ<=¶Ìi±´Âk*|ga¨–t—ø@+I±)VŠ=ö¨¹«Þ¶xzèÃ=?Lç‹è"\ ôÙïï¾ÖjG> -endobj -1541 0 obj -<< -/Type /Encoding -/Differences [2/fi/fl 19/ff/ffi 31/quotesingle 33/exclam/quotedbl 37/percent 40/parenleft/parenright 43/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 61/equal 63/question 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright 95/underscore 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 124/bar] ->> -endobj -648 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /SYFPBV+CMMI10 -/FontDescriptor 1546 0 R -/FirstChar 60 -/LastChar 62 -/Widths 1535 0 R ->> -endobj -532 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /GNUTFA+CMMI8 -/FontDescriptor 1548 0 R -/FirstChar 45 -/LastChar 45 -/Widths 1537 0 R ->> -endobj -1366 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /QMHUCV+CMMI9 -/FontDescriptor 1550 0 R -/FirstChar 60 -/LastChar 60 -/Widths 1532 0 R ->> -endobj -514 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /UEIZYW+CMSY10 -/FontDescriptor 1552 0 R -/FirstChar 3 -/LastChar 3 -/Widths 1539 0 R ->> -endobj -531 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /HTWALK+CMSY8 -/FontDescriptor 1554 0 R -/FirstChar 32 -/LastChar 32 -/Widths 1538 0 R ->> -endobj -996 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /GJVTUN+CMSY9 -/FontDescriptor 1556 0 R -/FirstChar 3 -/LastChar 3 -/Widths 1534 0 R ->> -endobj -228 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /WRFWLY+BoschOfficeSans-Bold -/FontDescriptor 1558 0 R -/FirstChar 2 -/LastChar 121 -/Widths 1544 0 R -/Encoding 1541 0 R ->> -endobj -229 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /ADYYFI+BoschOfficeSans-Regular -/FontDescriptor 1560 0 R -/FirstChar 2 -/LastChar 124 -/Widths 1543 0 R -/Encoding 1541 0 R ->> -endobj -510 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /GYDQSB+BoschOfficeSans-Italic -/FontDescriptor 1562 0 R -/FirstChar 2 -/LastChar 122 -/Widths 1542 0 R -/Encoding 1541 0 R ->> -endobj -619 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /BOOWFK+t1xtt -/FontDescriptor 1566 0 R -/FirstChar 34 -/LastChar 125 -/Widths 1536 0 R ->> -endobj -997 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /SGLLBS+t1xtt-Slant_167 -/FontDescriptor 1568 0 R -/FirstChar 44 -/LastChar 122 -/Widths 1533 0 R ->> -endobj -511 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /WJPRUX+MarVoSym -/FontDescriptor 1564 0 R -/FirstChar 183 -/LastChar 183 -/Widths 1540 0 R ->> -endobj -230 0 obj -<< -/Type /Pages -/Count 6 -/Parent 1569 0 R -/Kids [217 0 R 425 0 R 470 0 R 487 0 R 491 0 R 506 0 R] ->> -endobj -535 0 obj -<< -/Type /Pages -/Count 6 -/Parent 1569 0 R -/Kids [527 0 R 571 0 R 594 0 R 603 0 R 614 0 R 625 0 R] ->> -endobj -636 0 obj -<< -/Type /Pages -/Count 6 -/Parent 1569 0 R -/Kids [633 0 R 639 0 R 645 0 R 670 0 R 682 0 R 687 0 R] ->> -endobj -714 0 obj -<< -/Type /Pages -/Count 6 -/Parent 1569 0 R -/Kids [704 0 R 731 0 R 758 0 R 788 0 R 816 0 R 839 0 R] ->> -endobj -878 0 obj -<< -/Type /Pages -/Count 6 -/Parent 1569 0 R -/Kids [866 0 R 900 0 R 928 0 R 947 0 R 975 0 R 992 0 R] ->> -endobj -1025 0 obj -<< -/Type /Pages -/Count 6 -/Parent 1569 0 R -/Kids [1021 0 R 1044 0 R 1061 0 R 1085 0 R 1109 0 R 1128 0 R] ->> -endobj -1153 0 obj -<< -/Type /Pages -/Count 6 -/Parent 1570 0 R -/Kids [1149 0 R 1178 0 R 1232 0 R 1239 0 R 1267 0 R 1310 0 R] ->> -endobj -1326 0 obj -<< -/Type /Pages -/Count 6 -/Parent 1570 0 R -/Kids [1320 0 R 1328 0 R 1336 0 R 1358 0 R 1374 0 R 1384 0 R] ->> -endobj -1411 0 obj -<< -/Type /Pages -/Count 6 -/Parent 1570 0 R -/Kids [1406 0 R 1422 0 R 1442 0 R 1462 0 R 1474 0 R 1488 0 R] ->> -endobj -1523 0 obj -<< -/Type /Pages -/Count 2 -/Parent 1570 0 R -/Kids [1516 0 R 1525 0 R] ->> -endobj -1569 0 obj -<< -/Type /Pages -/Count 36 -/Parent 1571 0 R -/Kids [230 0 R 535 0 R 636 0 R 714 0 R 878 0 R 1025 0 R] ->> -endobj -1570 0 obj -<< -/Type /Pages -/Count 20 -/Parent 1571 0 R -/Kids [1153 0 R 1326 0 R 1411 0 R 1523 0 R] ->> -endobj -1571 0 obj -<< -/Type /Pages -/Count 56 -/Kids [1569 0 R 1570 0 R] ->> -endobj -1572 0 obj -<< -/Type /Outlines -/First 6 0 R -/Last 154 0 R -/Count 5 ->> -endobj -214 0 obj -<< -/Title 215 0 R -/A 212 0 R -/Parent 206 0 R -/Prev 210 0 R ->> -endobj -210 0 obj -<< -/Title 211 0 R -/A 208 0 R -/Parent 206 0 R -/Next 214 0 R ->> -endobj -206 0 obj -<< -/Title 207 0 R -/A 204 0 R -/Parent 154 0 R -/Prev 194 0 R -/First 210 0 R -/Last 214 0 R -/Count -2 ->> -endobj -202 0 obj -<< -/Title 203 0 R -/A 200 0 R -/Parent 194 0 R -/Prev 198 0 R ->> -endobj -198 0 obj -<< -/Title 199 0 R -/A 196 0 R -/Parent 194 0 R -/Next 202 0 R ->> -endobj -194 0 obj -<< -/Title 195 0 R -/A 192 0 R -/Parent 154 0 R -/Prev 182 0 R -/Next 206 0 R -/First 198 0 R -/Last 202 0 R -/Count -2 ->> -endobj -190 0 obj -<< -/Title 191 0 R -/A 188 0 R -/Parent 182 0 R -/Prev 186 0 R ->> -endobj -186 0 obj -<< -/Title 187 0 R -/A 184 0 R -/Parent 182 0 R -/Next 190 0 R ->> -endobj -182 0 obj -<< -/Title 183 0 R -/A 180 0 R -/Parent 154 0 R -/Prev 170 0 R -/Next 194 0 R -/First 186 0 R -/Last 190 0 R -/Count -2 ->> -endobj -178 0 obj -<< -/Title 179 0 R -/A 176 0 R -/Parent 170 0 R -/Prev 174 0 R ->> -endobj -174 0 obj -<< -/Title 175 0 R -/A 172 0 R -/Parent 170 0 R -/Next 178 0 R ->> -endobj -170 0 obj -<< -/Title 171 0 R -/A 168 0 R -/Parent 154 0 R -/Prev 158 0 R -/Next 182 0 R -/First 174 0 R -/Last 178 0 R -/Count -2 ->> -endobj -166 0 obj -<< -/Title 167 0 R -/A 164 0 R -/Parent 158 0 R -/Prev 162 0 R ->> -endobj -162 0 obj -<< -/Title 163 0 R -/A 160 0 R -/Parent 158 0 R -/Next 166 0 R ->> -endobj -158 0 obj -<< -/Title 159 0 R -/A 156 0 R -/Parent 154 0 R -/Next 170 0 R -/First 162 0 R -/Last 166 0 R -/Count -2 ->> -endobj -154 0 obj -<< -/Title 155 0 R -/A 152 0 R -/Parent 1572 0 R -/Prev 130 0 R -/First 158 0 R -/Last 206 0 R -/Count -5 ->> -endobj -150 0 obj -<< -/Title 151 0 R -/A 148 0 R -/Parent 134 0 R -/Prev 146 0 R ->> -endobj -146 0 obj -<< -/Title 147 0 R -/A 144 0 R -/Parent 134 0 R -/Prev 142 0 R -/Next 150 0 R ->> -endobj -142 0 obj -<< -/Title 143 0 R -/A 140 0 R -/Parent 134 0 R -/Prev 138 0 R -/Next 146 0 R ->> -endobj -138 0 obj -<< -/Title 139 0 R -/A 136 0 R -/Parent 134 0 R -/Next 142 0 R ->> -endobj -134 0 obj -<< -/Title 135 0 R -/A 132 0 R -/Parent 130 0 R -/First 138 0 R -/Last 150 0 R -/Count -4 ->> -endobj -130 0 obj -<< -/Title 131 0 R -/A 128 0 R -/Parent 1572 0 R -/Prev 98 0 R -/Next 154 0 R -/First 134 0 R -/Last 134 0 R -/Count -1 ->> -endobj -126 0 obj -<< -/Title 127 0 R -/A 124 0 R -/Parent 110 0 R -/Prev 122 0 R ->> -endobj -122 0 obj -<< -/Title 123 0 R -/A 120 0 R -/Parent 110 0 R -/Prev 118 0 R -/Next 126 0 R ->> -endobj -118 0 obj -<< -/Title 119 0 R -/A 116 0 R -/Parent 110 0 R -/Prev 114 0 R -/Next 122 0 R ->> -endobj -114 0 obj -<< -/Title 115 0 R -/A 112 0 R -/Parent 110 0 R -/Next 118 0 R ->> -endobj -110 0 obj -<< -/Title 111 0 R -/A 108 0 R -/Parent 98 0 R -/Prev 106 0 R -/First 114 0 R -/Last 126 0 R -/Count -4 ->> -endobj -106 0 obj -<< -/Title 107 0 R -/A 104 0 R -/Parent 98 0 R -/Prev 102 0 R -/Next 110 0 R ->> -endobj -102 0 obj -<< -/Title 103 0 R -/A 100 0 R -/Parent 98 0 R -/Next 106 0 R ->> -endobj -98 0 obj -<< -/Title 99 0 R -/A 96 0 R -/Parent 1572 0 R -/Prev 54 0 R -/Next 130 0 R -/First 102 0 R -/Last 110 0 R -/Count -3 ->> -endobj -94 0 obj -<< -/Title 95 0 R -/A 92 0 R -/Parent 54 0 R -/Prev 90 0 R ->> -endobj -90 0 obj -<< -/Title 91 0 R -/A 88 0 R -/Parent 54 0 R -/Prev 86 0 R -/Next 94 0 R ->> -endobj -86 0 obj -<< -/Title 87 0 R -/A 84 0 R -/Parent 54 0 R -/Prev 82 0 R -/Next 90 0 R ->> -endobj -82 0 obj -<< -/Title 83 0 R -/A 80 0 R -/Parent 54 0 R -/Prev 78 0 R -/Next 86 0 R ->> -endobj -78 0 obj -<< -/Title 79 0 R -/A 76 0 R -/Parent 54 0 R -/Prev 74 0 R -/Next 82 0 R ->> -endobj -74 0 obj -<< -/Title 75 0 R -/A 72 0 R -/Parent 54 0 R -/Prev 70 0 R -/Next 78 0 R ->> -endobj -70 0 obj -<< -/Title 71 0 R -/A 68 0 R -/Parent 54 0 R -/Prev 66 0 R -/Next 74 0 R ->> -endobj -66 0 obj -<< -/Title 67 0 R -/A 64 0 R -/Parent 54 0 R -/Prev 62 0 R -/Next 70 0 R ->> -endobj -62 0 obj -<< -/Title 63 0 R -/A 60 0 R -/Parent 54 0 R -/Prev 58 0 R -/Next 66 0 R ->> -endobj -58 0 obj -<< -/Title 59 0 R -/A 56 0 R -/Parent 54 0 R -/Next 62 0 R ->> -endobj -54 0 obj -<< -/Title 55 0 R -/A 52 0 R -/Parent 1572 0 R -/Prev 6 0 R -/Next 98 0 R -/First 58 0 R -/Last 94 0 R -/Count -10 ->> -endobj -50 0 obj -<< -/Title 51 0 R -/A 48 0 R -/Parent 34 0 R -/Prev 46 0 R ->> -endobj -46 0 obj -<< -/Title 47 0 R -/A 44 0 R -/Parent 34 0 R -/Prev 42 0 R -/Next 50 0 R ->> -endobj -42 0 obj -<< -/Title 43 0 R -/A 40 0 R -/Parent 34 0 R -/Prev 38 0 R -/Next 46 0 R ->> -endobj -38 0 obj -<< -/Title 39 0 R -/A 36 0 R -/Parent 34 0 R -/Next 42 0 R ->> -endobj -34 0 obj -<< -/Title 35 0 R -/A 32 0 R -/Parent 6 0 R -/Prev 14 0 R -/First 38 0 R -/Last 50 0 R -/Count -4 ->> -endobj -30 0 obj -<< -/Title 31 0 R -/A 28 0 R -/Parent 14 0 R -/Prev 26 0 R ->> -endobj -26 0 obj -<< -/Title 27 0 R -/A 24 0 R -/Parent 14 0 R -/Prev 22 0 R -/Next 30 0 R ->> -endobj -22 0 obj -<< -/Title 23 0 R -/A 20 0 R -/Parent 14 0 R -/Prev 18 0 R -/Next 26 0 R ->> -endobj -18 0 obj -<< -/Title 19 0 R -/A 16 0 R -/Parent 14 0 R -/Next 22 0 R ->> -endobj -14 0 obj -<< -/Title 15 0 R -/A 12 0 R -/Parent 6 0 R -/Prev 10 0 R -/Next 34 0 R -/First 18 0 R -/Last 30 0 R -/Count -4 ->> -endobj -10 0 obj -<< -/Title 11 0 R -/A 8 0 R -/Parent 6 0 R -/Next 14 0 R ->> -endobj -6 0 obj -<< -/Title 7 0 R -/A 4 0 R -/Parent 1572 0 R -/Next 54 0 R -/First 10 0 R -/Last 34 0 R -/Count -3 ->> -endobj -1573 0 obj -<< -/Names [(Doc-Start) 227 0 R (Item.1) 620 0 R (Item.2) 621 0 R (Item.3) 649 0 R (Item.4) 650 0 R (Item.5) 651 0 R] -/Limits [(Doc-Start) (Item.5)] ->> -endobj -1574 0 obj -<< -/Names [(chapter*.1) 473 0 R (chapter.1) 5 0 R (chapter.2) 53 0 R (chapter.3) 97 0 R (chapter.4) 129 0 R (chapter.5) 153 0 R] -/Limits [(chapter*.1) (chapter.5)] ->> -endobj -1575 0 obj -<< -/Names [(ex_step_by_step) 617 0 R (ex_step_by_step_exConclusion) 692 0 R (ex_step_by_step_exDataRate) 652 0 R (ex_step_by_step_exExampleCode) 628 0 R (ex_step_by_step_exHelloIaq) 629 0 R (ex_step_by_step_exMod) 653 0 R] -/Limits [(ex_step_by_step) (ex_step_by_step_exMod)] ->> -endobj -1576 0 obj -<< -/Names [(ex_step_by_step_exPrereq) 618 0 R (ex_step_by_step_exSelfHeating) 685 0 R (ex_step_by_step_exSetup) 622 0 R (ex_step_by_step_exSimMultSensors) 690 0 R (ex_step_by_step_exqULP) 691 0 R (faq) 707 0 R] -/Limits [(ex_step_by_step_exPrereq) (faq)] ->> -endobj -1577 0 obj -<< -/Names [(faq_faqErrorSensorControl) 936 0 R (faq_faqErrorSet) 873 0 R (faq_faqErrorUpdateSubscription) 791 0 R (faq_faqError_BSEC_E_CONFIG_CRCMISMATCH) 905 0 R (faq_faqError_BSEC_E_CONFIG_EMPTY) 908 0 R (faq_faqError_BSEC_E_CONFIG_FEATUREMISMATCH) 877 0 R] -/Limits [(faq_faqErrorSensorControl) (faq_faqError_BSEC_E_CONFIG_FEATUREMISMATCH)] ->> -endobj -1578 0 obj -<< -/Names [(faq_faqError_BSEC_E_CONFIG_INSUFFICIENTBUFFER) 934 0 R (faq_faqError_BSEC_E_CONFIG_INSUFFICIENTWORKBUFFER) 910 0 R (faq_faqError_BSEC_E_CONFIG_INVALIDSTRINGSIZE) 931 0 R (faq_faqError_BSEC_E_CONFIG_VERSIONMISMATCH) 874 0 R (faq_faqError_BSEC_E_DOSTEPS_DUPLICATEINPUT) 737 0 R (faq_faqError_BSEC_E_DOSTEPS_INVALIDINPUT) 712 0 R] -/Limits [(faq_faqError_BSEC_E_CONFIG_INSUFFICIENTBUFFER) (faq_faqError_BSEC_E_DOSTEPS_INVALIDINPUT)] ->> -endobj -1579 0 obj -<< -/Names [(faq_faqError_BSEC_E_DOSTEPS_VALUELIMITS) 735 0 R (faq_faqError_BSEC_E_SU_DUPLICATEGATE) 796 0 R (faq_faqError_BSEC_E_SU_GATECOUNTEXCEEDSARRAY) 821 0 R (faq_faqError_BSEC_E_SU_HIGHHEATERONDURATION) 844 0 R (faq_faqError_BSEC_E_SU_INVALIDSAMPLERATE) 819 0 R (faq_faqError_BSEC_E_SU_MULTGASSAMPLINTVL) 842 0 R] -/Limits [(faq_faqError_BSEC_E_DOSTEPS_VALUELIMITS) (faq_faqError_BSEC_E_SU_MULTGASSAMPLINTVL)] ->> -endobj -1580 0 obj -<< -/Names [(faq_faqError_BSEC_E_SU_SAMPLERATELIMITS) 794 0 R (faq_faqError_BSEC_E_SU_SAMPLINTVLINTEGERMULT) 823 0 R (faq_faqError_BSEC_E_SU_WRONGDATARATE) 792 0 R (faq_faqError_BSEC_I_DOSTEPS_NOOUTPUTSRETURNABLE) 761 0 R (faq_faqError_BSEC_I_SU_SUBSCRIBEDOUTPUTGATES) 848 0 R (faq_faqError_BSEC_W_DOSTEPS_EXCESSOUTPUTS) 764 0 R] -/Limits [(faq_faqError_BSEC_E_SU_SAMPLERATELIMITS) (faq_faqError_BSEC_W_DOSTEPS_EXCESSOUTPUTS)] ->> -endobj -1581 0 obj -<< -/Names [(faq_faqError_BSEC_W_DOSTEPS_TSINTRADIFFOUTOFRANGE) 767 0 R (faq_faqError_BSEC_W_SC_CALL_TIMING_VIOLATION) 937 0 R (faq_faqError_BSEC_W_SC_MODEXCEEDULPTIMELIMIT) 950 0 R (faq_faqError_BSEC_W_SC_MODINSUFFICIENTWAITTIME) 939 0 R (faq_faqError_BSEC_W_SU_MODINNOULP) 871 0 R (faq_faqError_BSEC_W_SU_UNKNOWNOUTPUTGATE) 846 0 R] -/Limits [(faq_faqError_BSEC_W_DOSTEPS_TSINTRADIFFOUTOFRANGE) (faq_faqError_BSEC_W_SU_UNKNOWNOUTPUTGATE)] ->> -endobj -1582 0 obj -<< -/Names [(faq_faqErrors) 710 0 R (faq_faqErrorsDoSteps) 711 0 R (faq_faqNoOutput) 708 0 R (faq_faqOutputZero) 709 0 R (figure.1.1) 598 0 R (group__bsec__interface) 978 0 R] -/Limits [(faq_faqErrors) (group__bsec__interface)] ->> -endobj -1583 0 obj -<< -/Names [(group__bsec__interface_ga109bf6e051d8635725da5bedeecf9eb2) 1346 0 R (group__bsec__interface_ga157748484a31501acfeee3df656adf54) 630 0 R (group__bsec__interface_ga216b6f4807227a2c6a183aaa9a8b8d7c) 1182 0 R (group__bsec__interface_ga339df4596b1c0e02eede5d54aa0f2858) 642 0 R (group__bsec__interface_ga49210a8ceb36d8610075b9220a0cdec6) 601 0 R (group__bsec__interface_ga51bcd13812ea62b35749284385a72f98) 536 0 R] -/Limits [(group__bsec__interface_ga109bf6e051d8635725da5bedeecf9eb2) (group__bsec__interface_ga51bcd13812ea62b35749284385a72f98)] ->> -endobj -1584 0 obj -<< -/Names [(group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) 739 0 R (group__bsec__interface_ga6c18af8c9be0813f7d8e3547e58428db) 678 0 R (group__bsec__interface_ga70e68dbe60e2ba462537540d60192a2e) 882 0 R (group__bsec__interface_ga78ceba2853489683f274831b41460d3e) 1348 0 R (group__bsec__interface_ga7a53a20ee206f9b4c30c1d63395b3c49) 1371 0 R (group__bsec__interface_ga832388c889417ed197609d9965625bfe) 770 0 R] -/Limits [(group__bsec__interface_ga5e4d504611e1c4a0219861bbcf2ad650) (group__bsec__interface_ga832388c889417ed197609d9965625bfe)] ->> -endobj -1585 0 obj -<< -/Names [(group__bsec__interface_ga847070d3ecfa970cb2f716a2d11fe219) 674 0 R (group__bsec__interface_ga853243e7f08cc25be117fca5c8216d99) 1049 0 R (group__bsec__interface_ga8798390d842b820e79e9cbf8ba4d516e) 916 0 R (group__bsec__interface_ga8967694b8e412412977488e3e6fdb3ed) 1362 0 R (group__bsec__interface_ga91d06ad8cd57ceae529b66dd30ca4d8c) 715 0 R (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8) 516 0 R] -/Limits [(group__bsec__interface_ga847070d3ecfa970cb2f716a2d11fe219) (group__bsec__interface_ga9de59ebc6a2504f15ba51d6d983faae8)] ->> -endobj -1586 0 obj -<< -/Names [(group__bsec__interface_ga9e190b85f103d75ede9477227567e799) 1364 0 R (group__bsec__interface_gaa8bb29e07b5b96d6f576962aef094466) 1369 0 R (group__bsec__interface_gab2122fa3909f67a2c786ecd2d8993977) 1068 0 R (group__bsec__interface_gac182d75bb2ca95c32ba4b98a136ad081) 1381 0 R (group__bsec__interface_gac4726411862aa2d383e3d3b9ca279a5d) 518 0 R (group__bsec__interface_gac79a471c6e20fd8c17577f6f69a9469f) 517 0 R] -/Limits [(group__bsec__interface_ga9e190b85f103d75ede9477227567e799) (group__bsec__interface_gac79a471c6e20fd8c17577f6f69a9469f)] ->> -endobj -1587 0 obj -<< -/Names [(group__bsec__interface_gacf6a5816306dfc1e3c0b26a6d459fc71) 654 0 R (group__bsec__interface_gad8f5b300b8cf00c73d837660a05e0507) 1367 0 R (group__bsec__interface_gae89eedb131288b72c267c02ec9dea8e5) 1089 0 R (group__bsec__interface_gae8fc6d614d6a40f0088262dccbb960dc) 883 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a06af666972edcebef3302d015f1d56c5) 675 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a0a7f6e18d053c4af5f26f3852ef6ae14) 771 0 R] -/Limits [(group__bsec__interface_gacf6a5816306dfc1e3c0b26a6d459fc71) (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a0a7f6e18d053c4af5f26f3852ef6ae14)] ->> -endobj -1588 0 obj -<< -/Names [(group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a178d85d77cf448057897e9b0e0932e33) 800 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a17bf2f98e8c59e29a8eda42c692e5b3d) 716 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a1ba36727b09433f1ae925646864d8a61) 826 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a2175fa185bbcaafb28b5c73ca8ff2394) 825 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a360b54bd3d53b377010d3afa29e04b89) 1243 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a3975b1dfa3c35829ce97814e04c143ce) 941 0 R] -/Limits [(group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a178d85d77cf448057897e9b0e0932e33) (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a3975b1dfa3c35829ce97814e04c143ce)] ->> -endobj -1589 0 obj -<< -/Names [(group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a465d9fc420b12cfe3d24e937c5e5f110) 798 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a5946f4a20c9ba0cd83fed96ce3103c06) 742 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a5fa05dbfcae3caa309d9f62422eb61f3) 1242 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a6d707845ea3200a1a45726c2700333e5) 772 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a76ee5462e14060fcc889bd889b6f7b3c) 914 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a7f2cea23dbdaeddb2d91d861c608f239) 879 0 R] -/Limits [(group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a465d9fc420b12cfe3d24e937c5e5f110) (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a7f2cea23dbdaeddb2d91d861c608f239)] ->> -endobj -1590 0 obj -<< -/Names [(group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a81fd5b4436be253e0ef3ebdf51b3d193) 740 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a87428d7a4a5d52e48af8db92ab71c83e) 880 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a89e2eec8486c2880912af108bbed3593) 913 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a8d7a8938ef9616b935094ed223122914) 1244 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a978a12de4397b9c0814e07650f8a1b46) 1245 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858aa1a59666f0af5463087f528473d4ff8c) 827 0 R] -/Limits [(group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858a81fd5b4436be253e0ef3ebdf51b3d193) (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858aa1a59666f0af5463087f528473d4ff8c)] ->> -endobj -1591 0 obj -<< -/Names [(group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858aa238cfe9b905deda6f1823ca32378f91) 944 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858aa5de81322b446f028934aa30c4826610) 799 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ab5356ac211454109eac007fcc458a6dd) 915 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ab78d6a66fc7a4205a6caf69ce4f161e4) 849 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ab810ba8e0fc4425c37aa460e57dc8129) 850 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ab87b5a5abeadc975488850bece3dbf84) 769 0 R] -/Limits [(group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858aa238cfe9b905deda6f1823ca32378f91) (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ab87b5a5abeadc975488850bece3dbf84)] ->> -endobj -1592 0 obj -<< -/Names [(group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ac2600415df086d1a9b36105ac29396de) 881 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ac2eca8b900ce91ee50004c549a409024) 942 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ac5899ebab7738c4c99b19ad9d934f8d1) 851 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ada34397de8a8e88ad72e8546748866cd) 943 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ae5d8b5de70152c09b4153bcb41997ee7) 912 0 R (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ae8e920ecde96d7d79b8962da38233880) 952 0 R] -/Limits [(group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ac2600415df086d1a9b36105ac29396de) (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858ae8e920ecde96d7d79b8962da38233880)] ->> -endobj -1593 0 obj -<< -/Names [(group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a161b8c7ebab8fcea5590d37295d31b35) 1315 0 R (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a381b968290256e77d50c4f7e92bfb27c) 1030 0 R (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a3eb936f08a8f6f01d4c683a6ba0c9d3a) 741 0 R (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a9202c1504b464b16f432da6a4dd582a2) 1272 0 R (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650aaf8083737123a5c4d012783ee10a522d) 1313 0 R (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650ad30626f0de1be98802cb5e50c8b67207) 1027 0 R] -/Limits [(group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650a161b8c7ebab8fcea5590d37295d31b35) (group__bsec__interface_gga5e4d504611e1c4a0219861bbcf2ad650ad30626f0de1be98802cb5e50c8b67207)] ->> -endobj -1594 0 obj -<< -/Names [(group__bsec__interface_gga832388c889417ed197609d9965625bfea134c7c7f7bd544e304209368ec72467a) 1324 0 R (group__bsec__interface_gga832388c889417ed197609d9965625bfea1369c4abd0a13602b197dfc94ae6ff7d) 1325 0 R (group__bsec__interface_gga832388c889417ed197609d9965625bfea1aac5358fbe12702647de81cacd6d062) 590 0 R (group__bsec__interface_gga832388c889417ed197609d9965625bfea1c0eee38a61b05c5239c871f9cdc85a4) 588 0 R (group__bsec__interface_gga832388c889417ed197609d9965625bfea2368e219ebbce4e1ede7209486283a6e) 586 0 R (group__bsec__interface_gga832388c889417ed197609d9965625bfea4e05ab48912e70486351f5199910fcb9) 587 0 R] -/Limits [(group__bsec__interface_gga832388c889417ed197609d9965625bfea134c7c7f7bd544e304209368ec72467a) (group__bsec__interface_gga832388c889417ed197609d9965625bfea4e05ab48912e70486351f5199910fcb9)] ->> -endobj -1595 0 obj -<< -/Names [(group__bsec__interface_gga832388c889417ed197609d9965625bfea5f42ad42c6bb71627b5ce91d4c410985) 582 0 R (group__bsec__interface_gga832388c889417ed197609d9965625bfea64d14f069c838de2d2c1f3f436ef6108) 585 0 R (group__bsec__interface_gga832388c889417ed197609d9965625bfea684dc07fef8c1723e60211068365b30a) 1323 0 R (group__bsec__interface_gga832388c889417ed197609d9965625bfea78b917ecbffc8eac6875644c4136a26d) 1342 0 R (group__bsec__interface_gga832388c889417ed197609d9965625bfea792b0fbeffceea19513cc0bd31ce7ef7) 583 0 R (group__bsec__interface_gga832388c889417ed197609d9965625bfea9fe6dbe27991e3f9f1a444c40b30af3d) 589 0 R] -/Limits [(group__bsec__interface_gga832388c889417ed197609d9965625bfea5f42ad42c6bb71627b5ce91d4c410985) (group__bsec__interface_gga832388c889417ed197609d9965625bfea9fe6dbe27991e3f9f1a444c40b30af3d)] ->> -endobj -1596 0 obj -<< -/Names [(group__bsec__interface_gga832388c889417ed197609d9965625bfeab9d6e7e5bb1c5f99d339a649d588b3cc) 584 0 R (group__bsec__interface_gga832388c889417ed197609d9965625bfeaf2cfe69583f70b1196660122ab5a94b6) 1341 0 R (index) 494 0 R (index_intguideBSECConfiguration) 515 0 R (index_intguideBSECSolutions) 512 0 R (index_intguideLibrary) 500 0 R] -/Limits [(group__bsec__interface_gga832388c889417ed197609d9965625bfeab9d6e7e5bb1c5f99d339a649d588b3cc) (index_intguideLibrary)] ->> -endobj -1597 0 obj -<< -/Names [(index_intguideLibraryOutputs) 575 0 R (index_intguideOverviewSensors) 495 0 R (index_intguideQuickintroCodeBuild) 606 0 R (index_intguideRequirements) 579 0 R (index_intguideRequirementsFramework) 581 0 R (index_intguideRequirementsHardware) 580 0 R] -/Limits [(index_intguideLibraryOutputs) (index_intguideRequirementsHardware)] ->> -endobj -1598 0 obj -<< -/Names [(index_intguideRequirementsInputs) 599 0 R (index_intguideSolutionKeyfeature) 533 0 R (page.1) 225 0 R (page.10) 605 0 R (page.11) 616 0 R (page.12) 627 0 R] -/Limits [(index_intguideRequirementsInputs) (page.12)] ->> -endobj -1599 0 obj -<< -/Names [(page.13) 635 0 R (page.14) 641 0 R (page.15) 647 0 R (page.16) 672 0 R (page.17) 684 0 R (page.18) 689 0 R] -/Limits [(page.13) (page.18)] ->> -endobj -1600 0 obj -<< -/Names [(page.19) 706 0 R (page.2) 427 0 R (page.20) 733 0 R (page.21) 760 0 R (page.22) 790 0 R (page.23) 818 0 R] -/Limits [(page.19) (page.23)] ->> -endobj -1601 0 obj -<< -/Names [(page.24) 841 0 R (page.25) 868 0 R (page.26) 902 0 R (page.27) 930 0 R (page.28) 949 0 R (page.29) 977 0 R] -/Limits [(page.24) (page.29)] ->> -endobj -1602 0 obj -<< -/Names [(page.3) 472 0 R (page.30) 994 0 R (page.31) 1023 0 R (page.32) 1046 0 R (page.33) 1063 0 R (page.34) 1087 0 R] -/Limits [(page.3) (page.34)] ->> -endobj -1603 0 obj -<< -/Names [(page.35) 1111 0 R (page.36) 1130 0 R (page.37) 1151 0 R (page.38) 1180 0 R (page.39) 1234 0 R (page.4) 489 0 R] -/Limits [(page.35) (page.4)] ->> -endobj -1604 0 obj -<< -/Names [(page.40) 1241 0 R (page.41) 1269 0 R (page.42) 1312 0 R (page.43) 1322 0 R (page.44) 1330 0 R (page.45) 1338 0 R] -/Limits [(page.40) (page.45)] ->> -endobj -1605 0 obj -<< -/Names [(page.46) 1360 0 R (page.47) 1376 0 R (page.48) 1386 0 R (page.49) 1408 0 R (page.5) 493 0 R (page.50) 1424 0 R] -/Limits [(page.46) (page.50)] ->> -endobj -1606 0 obj -<< -/Names [(page.51) 1444 0 R (page.52) 1464 0 R (page.53) 1476 0 R (page.54) 1490 0 R (page.55) 1518 0 R (page.56) 1527 0 R] -/Limits [(page.51) (page.56)] ->> -endobj -1607 0 obj -<< -/Names [(page.6) 508 0 R (page.7) 529 0 R (page.8) 573 0 R (page.9) 596 0 R (section*.10) 984 0 R (section*.11) 1409 0 R] -/Limits [(page.6) (section*.11)] ->> -endobj -1608 0 obj -<< -/Names [(section*.12) 1447 0 R (section*.13) 1468 0 R (section*.14) 1495 0 R (section*.15) 1522 0 R (section*.2) 496 0 R (section*.3) 497 0 R] -/Limits [(section*.12) (section*.3)] ->> -endobj -1609 0 obj -<< -/Names [(section*.4) 498 0 R (section*.5) 499 0 R (section*.6) 509 0 R (section*.7) 534 0 R (section*.8) 574 0 R (section*.9) 979 0 R] -/Limits [(section*.4) (section*.9)] ->> -endobj -1610 0 obj -<< -/Names [(section.1.1) 9 0 R (section.1.2) 13 0 R (section.1.3) 33 0 R (section.2.1) 57 0 R (section.2.10) 93 0 R (section.2.2) 61 0 R] -/Limits [(section.1.1) (section.2.2)] ->> -endobj -1611 0 obj -<< -/Names [(section.2.3) 65 0 R (section.2.4) 69 0 R (section.2.5) 73 0 R (section.2.6) 77 0 R (section.2.7) 81 0 R (section.2.8) 85 0 R] -/Limits [(section.2.3) (section.2.8)] ->> -endobj -1612 0 obj -<< -/Names [(section.2.9) 89 0 R (section.3.1) 101 0 R (section.3.2) 105 0 R (section.3.3) 109 0 R (section.4.1) 133 0 R (section.5.1) 157 0 R] -/Limits [(section.2.9) (section.5.1)] ->> -endobj -1613 0 obj -<< -/Names [(section.5.2) 169 0 R (section.5.3) 181 0 R (section.5.4) 193 0 R (section.5.5) 205 0 R (structbsec__bme__settings__t) 1116 0 R (structbsec__bme__settings__t_a300b00f9580b9af76d441cd4db8d7083) 1117 0 R] -/Limits [(section.5.2) (structbsec__bme__settings__t_a300b00f9580b9af76d441cd4db8d7083)] ->> -endobj -1614 0 obj -<< -/Names [(structbsec__bme__settings__t_a4407b04a0d403a9fb35fd322999113a9) 1415 0 R (structbsec__bme__settings__t_a500cfa825fa7c6ead38eba7bf7b4b955) 1413 0 R (structbsec__bme__settings__t_a7984769929826a36f59e7b9dfd6e7447) 1418 0 R (structbsec__bme__settings__t_aa197109b334a2a443d9349812865bff1) 1412 0 R (structbsec__bme__settings__t_aa4a1eeae4e7fe44a8093a3862996fbac) 1419 0 R (structbsec__bme__settings__t_aecd99f57df2bc07663a7de83f877228e) 1416 0 R] -/Limits [(structbsec__bme__settings__t_a4407b04a0d403a9fb35fd322999113a9) (structbsec__bme__settings__t_aecd99f57df2bc07663a7de83f877228e)] ->> -endobj -1615 0 obj -<< -/Names [(structbsec__bme__settings__t_aed0450820cd910e06e26fba04256bc24) 1417 0 R (structbsec__bme__settings__t_afc3ab51b88f259e5cb76c10ee0732e5b) 1414 0 R (structbsec__input__t) 999 0 R (structbsec__input__t_a000803d39a2be521f2b5e7017c31303b) 1028 0 R (structbsec__input__t_a90d515d57b274dfde74a281de469a3ad) 1029 0 R (structbsec__input__t_a916867811b65988853b69f729b91c262) 1026 0 R] -/Limits [(structbsec__bme__settings__t_aed0450820cd910e06e26fba04256bc24) (structbsec__input__t_a916867811b65988853b69f729b91c262)] ->> -endobj -1616 0 obj -<< -/Names [(structbsec__input__t_ab535651a26b2e2c44c83e441385e3def) 1449 0 R (structbsec__output__t) 1000 0 R (structbsec__output__t_a1a046572bcb85189df10c9ac8f362999) 1470 0 R (structbsec__output__t_a74a917725569b67eb14e78a34fa9c55d) 1469 0 R (structbsec__output__t_a91006cd8f20e88a5ff2b6ebfbecdeb95) 1471 0 R (structbsec__output__t_ab188da3e58d458f4b94a64379404da46) 1318 0 R] -/Limits [(structbsec__input__t_ab535651a26b2e2c44c83e441385e3def) (structbsec__output__t_ab188da3e58d458f4b94a64379404da46)] ->> -endobj -1617 0 obj -<< -/Names [(structbsec__output__t_ac4e7ef20f713075472bc953efb13957f) 591 0 R (structbsec__sensor__configuration__t) 673 0 R (structbsec__sensor__configuration__t_a150ba3a737fb75f56052c60d55246ae4) 677 0 R (structbsec__sensor__configuration__t_a92665e4f2f3cd5237814488774c0f546) 676 0 R (structbsec__version__t) 1069 0 R (structbsec__version__t_a3d9b11a72027026f492a438342a2efbd) 1095 0 R] -/Limits [(structbsec__output__t_ac4e7ef20f713075472bc953efb13957f) (structbsec__version__t_a3d9b11a72027026f492a438342a2efbd)] ->> -endobj -1618 0 obj -<< -/Names [(structbsec__version__t_a5daac4534748c6f0be9f009273613b02) 1096 0 R (structbsec__version__t_a9d47d254d17740222791fa0f53c7ac52) 1094 0 R (structbsec__version__t_af823001b85e62b90279f9e6f3c478c23) 1093 0 R (subsection.1.2.1) 17 0 R (subsection.1.2.2) 21 0 R (subsection.1.2.3) 25 0 R] -/Limits [(structbsec__version__t_a5daac4534748c6f0be9f009273613b02) (subsection.1.2.3)] ->> -endobj -1619 0 obj -<< -/Names [(subsection.1.2.4) 29 0 R (subsection.1.3.1) 37 0 R (subsection.1.3.2) 41 0 R (subsection.1.3.3) 45 0 R (subsection.1.3.4) 49 0 R (subsection.3.3.1) 113 0 R] -/Limits [(subsection.1.2.4) (subsection.3.3.1)] ->> -endobj -1620 0 obj -<< -/Names [(subsection.3.3.2) 117 0 R (subsection.3.3.3) 121 0 R (subsection.3.3.4) 125 0 R (subsection.4.1.1) 137 0 R (subsection.4.1.2) 141 0 R (subsection.4.1.3) 145 0 R] -/Limits [(subsection.3.3.2) (subsection.4.1.3)] ->> -endobj -1621 0 obj -<< -/Names [(subsection.4.1.4) 149 0 R (subsection.5.1.1) 161 0 R (subsection.5.1.2) 165 0 R (subsection.5.2.1) 173 0 R (subsection.5.2.2) 177 0 R (subsection.5.3.1) 185 0 R] -/Limits [(subsection.4.1.4) (subsection.5.3.1)] ->> -endobj -1622 0 obj -<< -/Names [(subsection.5.3.2) 189 0 R (subsection.5.4.1) 197 0 R (subsection.5.4.2) 201 0 R (subsection.5.5.1) 209 0 R (subsection.5.5.2) 213 0 R (subsubsection.3.3.1.1) 713 0 R] -/Limits [(subsection.5.3.2) (subsubsection.3.3.1.1)] ->> -endobj -1623 0 obj -<< -/Names [(subsubsection.3.3.1.2) 736 0 R (subsubsection.3.3.1.3) 738 0 R (subsubsection.3.3.1.4) 762 0 R (subsubsection.3.3.1.5) 765 0 R (subsubsection.3.3.1.6) 768 0 R (subsubsection.3.3.2.1) 793 0 R] -/Limits [(subsubsection.3.3.1.2) (subsubsection.3.3.2.1)] ->> -endobj -1624 0 obj -<< -/Names [(subsubsection.3.3.2.10) 869 0 R (subsubsection.3.3.2.11) 872 0 R (subsubsection.3.3.2.2) 795 0 R (subsubsection.3.3.2.3) 797 0 R (subsubsection.3.3.2.4) 820 0 R (subsubsection.3.3.2.5) 822 0 R] -/Limits [(subsubsection.3.3.2.10) (subsubsection.3.3.2.5)] ->> -endobj -1625 0 obj -<< -/Names [(subsubsection.3.3.2.6) 824 0 R (subsubsection.3.3.2.7) 843 0 R (subsubsection.3.3.2.8) 845 0 R (subsubsection.3.3.2.9) 847 0 R (subsubsection.3.3.3.1) 875 0 R (subsubsection.3.3.3.2) 903 0 R] -/Limits [(subsubsection.3.3.2.6) (subsubsection.3.3.3.2)] ->> -endobj -1626 0 obj -<< -/Names [(subsubsection.3.3.3.3) 906 0 R (subsubsection.3.3.3.4) 909 0 R (subsubsection.3.3.3.5) 911 0 R (subsubsection.3.3.3.6) 932 0 R (subsubsection.3.3.3.7) 935 0 R (subsubsection.3.3.4.1) 938 0 R] -/Limits [(subsubsection.3.3.3.3) (subsubsection.3.3.4.1)] ->> -endobj -1627 0 obj -<< -/Names [(subsubsection.3.3.4.2) 940 0 R (subsubsection.3.3.4.3) 951 0 R (subsubsection.4.1.2.1) 995 0 R (subsubsection.4.1.2.10) 1152 0 R (subsubsection.4.1.2.2) 1024 0 R (subsubsection.4.1.2.3) 1048 0 R] -/Limits [(subsubsection.3.3.4.2) (subsubsection.4.1.2.3)] ->> -endobj -1628 0 obj -<< -/Names [(subsubsection.4.1.2.4) 1066 0 R (subsubsection.4.1.2.5) 1088 0 R (subsubsection.4.1.2.6) 1090 0 R (subsubsection.4.1.2.7) 1092 0 R (subsubsection.4.1.2.8) 1114 0 R (subsubsection.4.1.2.9) 1131 0 R] -/Limits [(subsubsection.4.1.2.4) (subsubsection.4.1.2.9)] ->> -endobj -1629 0 obj -<< -/Names [(subsubsection.4.1.3.1) 1235 0 R (subsubsection.4.1.3.2) 1270 0 R (subsubsection.4.1.3.3) 1316 0 R (subsubsection.4.1.4.1) 1343 0 R (subsubsection.4.1.4.10) 1372 0 R (subsubsection.4.1.4.11) 1377 0 R] -/Limits [(subsubsection.4.1.3.1) (subsubsection.4.1.4.11)] ->> -endobj -1630 0 obj -<< -/Names [(subsubsection.4.1.4.12) 1378 0 R (subsubsection.4.1.4.13) 1379 0 R (subsubsection.4.1.4.14) 1380 0 R (subsubsection.4.1.4.15) 1382 0 R (subsubsection.4.1.4.2) 1344 0 R (subsubsection.4.1.4.3) 1345 0 R] -/Limits [(subsubsection.4.1.4.12) (subsubsection.4.1.4.3)] ->> -endobj -1631 0 obj -<< -/Names [(subsubsection.4.1.4.4) 1347 0 R (subsubsection.4.1.4.5) 1361 0 R (subsubsection.4.1.4.6) 1363 0 R (subsubsection.4.1.4.7) 1365 0 R (subsubsection.4.1.4.8) 1368 0 R (subsubsection.4.1.4.9) 1370 0 R] -/Limits [(subsubsection.4.1.4.4) (subsubsection.4.1.4.9)] ->> -endobj -1632 0 obj -<< -/Names [(subsubsection.5.1.2.1) 1425 0 R (subsubsection.5.1.2.2) 1426 0 R (subsubsection.5.1.2.3) 1427 0 R (subsubsection.5.1.2.4) 1428 0 R (subsubsection.5.1.2.5) 1429 0 R (subsubsection.5.1.2.6) 1430 0 R] -/Limits [(subsubsection.5.1.2.1) (subsubsection.5.1.2.6)] ->> -endobj -1633 0 obj -<< -/Names [(subsubsection.5.1.2.7) 1431 0 R (subsubsection.5.1.2.8) 1445 0 R (subsubsection.5.1.2.9) 1446 0 R (subsubsection.5.2.2.1) 1448 0 R (subsubsection.5.2.2.2) 1465 0 R (subsubsection.5.2.2.3) 1466 0 R] -/Limits [(subsubsection.5.1.2.7) (subsubsection.5.2.2.3)] ->> -endobj -1634 0 obj -<< -/Names [(subsubsection.5.2.2.4) 1467 0 R (subsubsection.5.3.2.1) 1477 0 R (subsubsection.5.3.2.2) 1491 0 R (subsubsection.5.3.2.3) 1492 0 R (subsubsection.5.3.2.4) 1493 0 R (subsubsection.5.3.2.5) 1494 0 R] -/Limits [(subsubsection.5.2.2.4) (subsubsection.5.3.2.5)] ->> -endobj -1635 0 obj -<< -/Names [(subsubsection.5.4.2.1) 1519 0 R (subsubsection.5.4.2.2) 1520 0 R (subsubsection.5.5.2.1) 1528 0 R (subsubsection.5.5.2.2) 1529 0 R (subsubsection.5.5.2.3) 1530 0 R (subsubsection.5.5.2.4) 1531 0 R] -/Limits [(subsubsection.5.4.2.1) (subsubsection.5.5.2.4)] ->> -endobj -1636 0 obj -<< -/Names [(table.1.1) 513 0 R (table.1.2) 530 0 R (table.1.3) 576 0 R (table.1.4) 607 0 R (table.4.1) 980 0 R (table.4.10) 1113 0 R] -/Limits [(table.1.1) (table.4.10)] ->> -endobj -1637 0 obj -<< -/Names [(table.4.11) 1115 0 R (table.4.12) 1132 0 R (table.4.13) 1181 0 R (table.4.14) 1236 0 R (table.4.15) 1271 0 R (table.4.16) 1317 0 R] -/Limits [(table.4.11) (table.4.16)] ->> -endobj -1638 0 obj -<< -/Names [(table.4.2) 981 0 R (table.4.3) 982 0 R (table.4.4) 983 0 R (table.4.5) 998 0 R (table.4.6) 1047 0 R (table.4.7) 1065 0 R] -/Limits [(table.4.2) (table.4.7)] ->> -endobj -1639 0 obj -<< -/Names [(table.4.8) 1067 0 R (table.4.9) 1091 0 R (table.5.1) 1478 0 R (table.5.2) 1479 0 R (table.5.3) 1480 0 R (table.5.4) 1521 0 R] -/Limits [(table.4.8) (table.5.4)] ->> -endobj -1640 0 obj -<< -/Kids [1573 0 R 1574 0 R 1575 0 R 1576 0 R 1577 0 R 1578 0 R] -/Limits [(Doc-Start) (faq_faqError_BSEC_E_DOSTEPS_INVALIDINPUT)] ->> -endobj -1641 0 obj -<< -/Kids [1579 0 R 1580 0 R 1581 0 R 1582 0 R 1583 0 R 1584 0 R] -/Limits [(faq_faqError_BSEC_E_DOSTEPS_VALUELIMITS) (group__bsec__interface_ga832388c889417ed197609d9965625bfe)] ->> -endobj -1642 0 obj -<< -/Kids [1585 0 R 1586 0 R 1587 0 R 1588 0 R 1589 0 R 1590 0 R] -/Limits [(group__bsec__interface_ga847070d3ecfa970cb2f716a2d11fe219) (group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858aa1a59666f0af5463087f528473d4ff8c)] ->> -endobj -1643 0 obj -<< -/Kids [1591 0 R 1592 0 R 1593 0 R 1594 0 R 1595 0 R 1596 0 R] -/Limits [(group__bsec__interface_gga339df4596b1c0e02eede5d54aa0f2858aa238cfe9b905deda6f1823ca32378f91) (index_intguideLibrary)] ->> -endobj -1644 0 obj -<< -/Kids [1597 0 R 1598 0 R 1599 0 R 1600 0 R 1601 0 R 1602 0 R] -/Limits [(index_intguideLibraryOutputs) (page.34)] ->> -endobj -1645 0 obj -<< -/Kids [1603 0 R 1604 0 R 1605 0 R 1606 0 R 1607 0 R 1608 0 R] -/Limits [(page.35) (section*.3)] ->> -endobj -1646 0 obj -<< -/Kids [1609 0 R 1610 0 R 1611 0 R 1612 0 R 1613 0 R 1614 0 R] -/Limits [(section*.4) (structbsec__bme__settings__t_aecd99f57df2bc07663a7de83f877228e)] ->> -endobj -1647 0 obj -<< -/Kids [1615 0 R 1616 0 R 1617 0 R 1618 0 R 1619 0 R 1620 0 R] -/Limits [(structbsec__bme__settings__t_aed0450820cd910e06e26fba04256bc24) (subsection.4.1.3)] ->> -endobj -1648 0 obj -<< -/Kids [1621 0 R 1622 0 R 1623 0 R 1624 0 R 1625 0 R 1626 0 R] -/Limits [(subsection.4.1.4) (subsubsection.3.3.4.1)] ->> -endobj -1649 0 obj -<< -/Kids [1627 0 R 1628 0 R 1629 0 R 1630 0 R 1631 0 R 1632 0 R] -/Limits [(subsubsection.3.3.4.2) (subsubsection.5.1.2.6)] ->> -endobj -1650 0 obj -<< -/Kids [1633 0 R 1634 0 R 1635 0 R 1636 0 R 1637 0 R 1638 0 R] -/Limits [(subsubsection.5.1.2.7) (table.4.7)] ->> -endobj -1651 0 obj -<< -/Kids [1639 0 R] -/Limits [(table.4.8) (table.5.4)] ->> -endobj -1652 0 obj -<< -/Kids [1640 0 R 1641 0 R 1642 0 R 1643 0 R 1644 0 R 1645 0 R] -/Limits [(Doc-Start) (section*.3)] ->> -endobj -1653 0 obj -<< -/Kids [1646 0 R 1647 0 R 1648 0 R 1649 0 R 1650 0 R 1651 0 R] -/Limits [(section*.4) (table.5.4)] ->> -endobj -1654 0 obj -<< -/Kids [1652 0 R 1653 0 R] -/Limits [(Doc-Start) (table.5.4)] ->> -endobj -1655 0 obj -<< -/Dests 1654 0 R ->> -endobj -1656 0 obj -<< -/Type /Catalog -/Pages 1571 0 R -/Outlines 1572 0 R -/Names 1655 0 R -/PageMode/UseOutlines -/OpenAction 216 0 R ->> -endobj -1657 0 obj -<< -/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.18)/Keywords() -/CreationDate (D:20190628134145+08'00') -/ModDate (D:20190628134145+08'00') -/Trapped /False -/PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.9.6362 (1.40.18)) ->> -endobj -xref -0 1658 -0000000519 65535 f -0000840812 00000 n -0000840832 00000 n -0000840852 00000 n -0000000015 00000 n -0000547474 00000 n -0001229897 00000 n -0000000060 00000 n -0000000222 00000 n -0000547655 00000 n -0001229825 00000 n -0000000269 00000 n -0000000458 00000 n -0000552570 00000 n -0001229702 00000 n -0000000506 00000 n -0000000730 00000 n -0000552751 00000 n -0001229628 00000 n -0000000783 00000 n -0000000926 00000 n -0000552934 00000 n -0001229541 00000 n -0000000979 00000 n -0000001147 00000 n -0000556966 00000 n -0001229454 00000 n -0000001200 00000 n -0000001290 00000 n -0000564100 00000 n -0001229380 00000 n -0000001343 00000 n -0000001577 00000 n -0000564283 00000 n -0001229270 00000 n -0000001625 00000 n -0000001798 00000 n -0000564404 00000 n -0001229196 00000 n -0000001851 00000 n -0000001918 00000 n -0000602032 00000 n -0001229109 00000 n -0000001971 00000 n -0000002091 00000 n -0000604706 00000 n -0001229022 00000 n -0000002144 00000 n -0000002325 00000 n -0000604828 00000 n -0001228948 00000 n -0000002378 00000 n -0000002501 00000 n -0000609616 00000 n -0001228822 00000 n -0000002547 00000 n -0000002705 00000 n -0000609799 00000 n -0001228748 00000 n -0000002753 00000 n -0000002845 00000 n -0000610043 00000 n -0001228661 00000 n -0000002893 00000 n -0000003031 00000 n -0000614559 00000 n -0001228574 00000 n -0000003079 00000 n -0000003192 00000 n -0000618304 00000 n -0001228487 00000 n -0000003240 00000 n -0000003416 00000 n -0000626182 00000 n -0001228400 00000 n -0000003464 00000 n -0000003627 00000 n -0000632926 00000 n -0001228313 00000 n -0000003675 00000 n -0000003788 00000 n -0000637047 00000 n -0001228226 00000 n -0000003836 00000 n -0000004147 00000 n -0000640369 00000 n -0001228139 00000 n -0000004195 00000 n -0000004500 00000 n -0000640489 00000 n -0001228052 00000 n -0000004548 00000 n -0000004763 00000 n -0000640610 00000 n -0001227978 00000 n -0000004812 00000 n -0000004889 00000 n -0000645524 00000 n -0001227849 00000 n -0000004935 00000 n -0000004977 00000 n -0000645706 00000 n -0001227771 00000 n -0000005026 00000 n -0000005225 00000 n -0000645828 00000 n -0001227679 00000 n -0000005274 00000 n -0000005566 00000 n -0000645950 00000 n -0001227562 00000 n -0000005615 00000 n -0000005830 00000 n -0000646073 00000 n -0001227483 00000 n -0000005884 00000 n -0000006103 00000 n -0000664192 00000 n -0001227390 00000 n -0000006157 00000 n -0000006431 00000 n -0000682056 00000 n -0001227297 00000 n -0000006485 00000 n -0000006862 00000 n -0000694561 00000 n -0001227218 00000 n -0000006916 00000 n -0000007165 00000 n -0000701856 00000 n -0001227086 00000 n -0000007212 00000 n -0000007343 00000 n -0000701978 00000 n -0001226982 00000 n -0000007392 00000 n -0000007506 00000 n -0000702039 00000 n -0001226903 00000 n -0000007560 00000 n -0000007666 00000 n -0000707601 00000 n -0001226810 00000 n -0000007720 00000 n -0000007846 00000 n -0000766265 00000 n -0001226717 00000 n -0000007900 00000 n -0000007988 00000 n -0000795693 00000 n -0001226638 00000 n -0000008042 00000 n -0000008105 00000 n -0000810346 00000 n -0001226519 00000 n -0000008152 00000 n -0000008326 00000 n -0000810471 00000 n -0001226401 00000 n -0000008375 00000 n -0000008598 00000 n -0000810596 00000 n -0001226322 00000 n -0000008652 00000 n -0000008783 00000 n -0000812920 00000 n -0001226243 00000 n -0000008837 00000 n -0000008963 00000 n -0000818632 00000 n -0001226111 00000 n -0000009012 00000 n -0000009197 00000 n -0000818757 00000 n -0001226032 00000 n -0000009251 00000 n -0000009382 00000 n -0000818819 00000 n -0001225953 00000 n -0000009436 00000 n -0000009562 00000 n -0000823380 00000 n -0001225821 00000 n -0000009611 00000 n -0000009801 00000 n -0000828199 00000 n -0001225742 00000 n -0000009855 00000 n -0000009986 00000 n -0000828261 00000 n -0001225663 00000 n -0000010040 00000 n -0000010166 00000 n -0000832790 00000 n -0001225531 00000 n -0000010215 00000 n -0000010478 00000 n -0000832915 00000 n -0001225452 00000 n -0000010532 00000 n -0000010663 00000 n -0000837684 00000 n -0001225373 00000 n -0000010717 00000 n -0000010843 00000 n -0000838123 00000 n -0001225255 00000 n -0000010892 00000 n -0000011087 00000 n -0000838248 00000 n -0001225176 00000 n -0000011141 00000 n -0000011272 00000 n -0000839998 00000 n -0001225097 00000 n -0000011326 00000 n -0000011452 00000 n -0000012595 00000 n -0000093858 00000 n -0000530398 00000 n -0000012730 00000 n -0000032812 00000 n -0000081329 00000 n -0000530592 00000 n -0000011502 00000 n -0000530469 00000 n -0000032736 00000 n -0000530531 00000 n -0001222552 00000 n -0001222730 00000 n -0001223540 00000 n -0000014448 00000 n -0000014578 00000 n -0000014802 00000 n -0000015026 00000 n -0000015250 00000 n -0000015474 00000 n -0000015698 00000 n -0000015922 00000 n -0000016146 00000 n -0000016369 00000 n -0000016593 00000 n -0000016817 00000 n -0000017041 00000 n -0000017265 00000 n -0000017489 00000 n -0000017713 00000 n -0000017937 00000 n -0000018161 00000 n -0000018385 00000 n -0000018609 00000 n -0000018629 00000 n -0000018719 00000 n -0000018739 00000 n -0000018829 00000 n -0000018849 00000 n -0000018939 00000 n -0000018959 00000 n -0000019049 00000 n -0000019069 00000 n -0000019159 00000 n -0000019179 00000 n -0000019269 00000 n -0000019289 00000 n -0000019379 00000 n -0000019399 00000 n -0000019489 00000 n -0000019509 00000 n -0000019599 00000 n -0000019619 00000 n -0000019709 00000 n -0000019729 00000 n -0000019819 00000 n -0000019839 00000 n -0000019929 00000 n -0000019949 00000 n -0000020039 00000 n -0000020059 00000 n -0000020149 00000 n -0000020169 00000 n -0000020259 00000 n -0000020279 00000 n -0000020369 00000 n -0000020389 00000 n -0000020479 00000 n -0000020499 00000 n -0000020589 00000 n -0000020830 00000 n -0000021078 00000 n -0000021332 00000 n -0000021579 00000 n -0000021826 00000 n -0000022090 00000 n -0000022338 00000 n -0000022680 00000 n -0000022928 00000 n -0000023181 00000 n -0000023434 00000 n -0000023682 00000 n -0000023930 00000 n -0000024164 00000 n -0000024418 00000 n -0000024673 00000 n -0000024927 00000 n -0000025179 00000 n -0000025199 00000 n -0000025290 00000 n -0000025310 00000 n -0000025401 00000 n -0000025422 00000 n -0000025513 00000 n -0000025533 00000 n -0000025624 00000 n -0000025644 00000 n -0000025735 00000 n -0000025756 00000 n -0000025818 00000 n -0000025838 00000 n -0000025929 00000 n -0000025950 00000 n -0000026012 00000 n -0000026032 00000 n -0000026124 00000 n -0000026145 00000 n -0000026237 00000 n -0000026258 00000 n -0000026350 00000 n -0000026370 00000 n -0000026462 00000 n -0000026482 00000 n -0000026574 00000 n -0000026594 00000 n -0000026656 00000 n -0000026677 00000 n -0000026769 00000 n -0000026790 00000 n -0000026882 00000 n -0000026903 00000 n -0000026995 00000 n -0000027016 00000 n -0000027108 00000 n -0000027242 00000 n -0000027376 00000 n -0000027510 00000 n -0000027644 00000 n -0000027778 00000 n -0000027912 00000 n -0000028046 00000 n -0000028180 00000 n -0000028314 00000 n -0000028448 00000 n -0000028582 00000 n -0000028716 00000 n -0000028850 00000 n -0000028984 00000 n -0000029118 00000 n -0000029262 00000 n -0000029426 00000 n -0000029570 00000 n -0000029693 00000 n -0000029816 00000 n -0000029980 00000 n -0000030103 00000 n -0000030225 00000 n -0000030352 00000 n -0000030475 00000 n -0000030602 00000 n -0000030725 00000 n -0000030848 00000 n -0000030971 00000 n -0000031097 00000 n -0000031222 00000 n -0000031348 00000 n -0000031475 00000 n -0000031602 00000 n -0000031725 00000 n -0000031850 00000 n -0000031977 00000 n -0000032104 00000 n -0000032231 00000 n -0000032357 00000 n -0000032483 00000 n -0000032609 00000 n -0000077106 00000 n -0000077339 00000 n -0000077376 00000 n -0000077504 00000 n -0000077630 00000 n -0000077755 00000 n -0000077882 00000 n -0000078003 00000 n -0000080702 00000 n -0000083580 00000 n -0000083833 00000 n -0000083870 00000 n -0000083998 00000 n -0000084021 00000 n -0000084137 00000 n -0000084253 00000 n -0000084369 00000 n -0000084485 00000 n -0000084601 00000 n -0000084717 00000 n -0000084833 00000 n -0000084949 00000 n -0000085065 00000 n -0000085181 00000 n -0000085297 00000 n -0000085413 00000 n -0000085529 00000 n -0000088228 00000 n -0000089163 00000 n -0000089477 00000 n -0000089848 00000 n -0000090368 00000 n -0000090878 00000 n -0000091275 00000 n -0000091694 00000 n -0000092028 00000 n -0000092428 00000 n -0000092742 00000 n -0000093079 00000 n -0000093498 00000 n -0000519964 00000 n -0000531148 00000 n -0000530966 00000 n -0000530859 00000 n -0000531086 00000 n -0000534209 00000 n -0000534359 00000 n -0000534512 00000 n -0000534665 00000 n -0000534823 00000 n -0000534980 00000 n -0000535138 00000 n -0000535296 00000 n -0000535449 00000 n -0000535607 00000 n -0000535765 00000 n -0000535922 00000 n -0000536080 00000 n -0000536229 00000 n -0000536382 00000 n -0000536535 00000 n -0000536687 00000 n -0000536840 00000 n -0000536993 00000 n -0000537146 00000 n -0000537299 00000 n -0000537451 00000 n -0000537603 00000 n -0000537757 00000 n -0000537907 00000 n -0000538060 00000 n -0000538213 00000 n -0000538365 00000 n -0000538522 00000 n -0000538679 00000 n -0000538836 00000 n -0000538994 00000 n -0000539145 00000 n -0000539298 00000 n -0000539456 00000 n -0000539614 00000 n -0000539772 00000 n -0000539929 00000 n -0000540078 00000 n -0000540228 00000 n -0000542344 00000 n -0000540507 00000 n -0000533757 00000 n -0000531296 00000 n -0000540384 00000 n -0000540446 00000 n -0000542502 00000 n -0000542655 00000 n -0000542813 00000 n -0000542971 00000 n -0000543122 00000 n -0000543280 00000 n -0000543438 00000 n -0000543591 00000 n -0000543746 00000 n -0000543904 00000 n -0000544057 00000 n -0000544215 00000 n -0000544435 00000 n -0000542108 00000 n -0000540740 00000 n -0000544373 00000 n -0000548017 00000 n -0000547292 00000 n -0000544655 00000 n -0000547412 00000 n -0000547533 00000 n -0000547594 00000 n -0000547714 00000 n -0000547774 00000 n -0000547835 00000 n -0000547896 00000 n -0000547957 00000 n -0000551712 00000 n -0000551911 00000 n -0000552110 00000 n -0000552310 00000 n -0000552994 00000 n -0000551548 00000 n -0000548250 00000 n -0000552508 00000 n -0000552630 00000 n -0001222911 00000 n -0001223391 00000 n -0000552690 00000 n -0000552811 00000 n -0001222123 00000 n -0000552872 00000 n -0000739405 00000 n -0000720396 00000 n -0000732735 00000 n -0000000520 00000 f -0000000521 00000 f -0000000522 00000 f -0000000524 00000 f -0000556382 00000 n -0000000537 00000 f -0000556582 00000 n -0000557087 00000 n -0000556234 00000 n -0000553266 00000 n -0000556781 00000 n -0000556843 00000 n -0001222266 00000 n -0001221834 00000 n -0000556904 00000 n -0000557026 00000 n -0001223658 00000 n -0000732421 00000 n -0000000538 00000 f -0000000539 00000 f -0000000540 00000 f -0000000541 00000 f -0000000542 00000 f -0000000543 00000 f -0000000544 00000 f -0000000545 00000 f -0000000546 00000 f -0000000547 00000 f -0000000548 00000 f -0000000549 00000 f -0000000550 00000 f -0000000551 00000 f -0000000552 00000 f -0000000553 00000 f -0000000554 00000 f -0000000953 00000 f -0000560960 00000 n -0000561193 00000 n -0000561426 00000 n -0000561659 00000 n -0000561890 00000 n -0000562122 00000 n -0000562588 00000 n -0000563054 00000 n -0000563287 00000 n -0000563520 00000 n -0000563718 00000 n -0000600974 00000 n -0000601373 00000 n -0000601572 00000 n -0000601772 00000 n -0000564525 00000 n -0000560724 00000 n -0000557359 00000 n -0000563916 00000 n -0000563978 00000 n -0000564039 00000 n -0000564160 00000 n -0000562355 00000 n -0000562821 00000 n -0000564221 00000 n -0000564343 00000 n -0000564464 00000 n -0000786152 00000 n -0000786090 00000 n -0000786215 00000 n -0000786278 00000 n -0000783020 00000 n -0000790478 00000 n -0000795505 00000 n -0000786341 00000 n -0000786403 00000 n -0000828323 00000 n -0000567083 00000 n -0000602213 00000 n -0000566911 00000 n -0000564797 00000 n -0000601970 00000 n -0000601174 00000 n -0000602092 00000 n -0000602153 00000 n -0000593452 00000 n -0000751830 00000 n -0000604949 00000 n -0000604524 00000 n -0000602501 00000 n -0000604644 00000 n -0000604766 00000 n -0000604888 00000 n -0000608564 00000 n -0000608737 00000 n -0000608961 00000 n -0000609142 00000 n -0000609346 00000 n -0000610102 00000 n -0000608392 00000 n -0000605208 00000 n -0000609554 00000 n -0000609676 00000 n -0000609737 00000 n -0001223091 00000 n -0000609859 00000 n -0000609920 00000 n -0000609981 00000 n -0000614236 00000 n -0000614678 00000 n -0000614096 00000 n -0000610362 00000 n -0000614435 00000 n -0000614497 00000 n -0000614619 00000 n -0000802768 00000 n -0000618043 00000 n -0000618364 00000 n -0000617903 00000 n -0000614938 00000 n -0000618242 00000 n -0001223776 00000 n -0000621477 00000 n -0000621737 00000 n -0000621337 00000 n -0000618611 00000 n -0000621675 00000 n -0000766327 00000 n -0000625676 00000 n -0000626302 00000 n -0000625536 00000 n -0000621971 00000 n -0000625876 00000 n -0001221689 00000 n -0000625938 00000 n -0000625999 00000 n -0000626060 00000 n -0000626121 00000 n -0000626242 00000 n -0000802893 00000 n -0000630051 00000 n -0000630229 00000 n -0000630407 00000 n -0000630606 00000 n -0000630806 00000 n -0000631005 00000 n -0000631239 00000 n -0000631452 00000 n -0000631686 00000 n -0000631898 00000 n -0000632097 00000 n -0000632296 00000 n -0000632496 00000 n -0000632693 00000 n -0000632986 00000 n -0000629807 00000 n -0000626601 00000 n -0000632864 00000 n -0000832728 00000 n -0000795754 00000 n -0000766515 00000 n -0000837871 00000 n -0000837746 00000 n -0000803018 00000 n -0000636725 00000 n -0000640046 00000 n -0000637107 00000 n -0000636585 00000 n -0000633233 00000 n -0000636924 00000 n -0000636986 00000 n -0000640670 00000 n -0000639906 00000 n -0000637354 00000 n -0000640246 00000 n -0000640308 00000 n -0000640429 00000 n -0000640549 00000 n -0000643634 00000 n -0000643834 00000 n -0000644034 00000 n -0000644234 00000 n -0000644434 00000 n -0000644634 00000 n -0000644834 00000 n -0000645034 00000 n -0000645266 00000 n -0000649023 00000 n -0000646256 00000 n -0000643430 00000 n -0000640917 00000 n -0000645462 00000 n -0000645584 00000 n -0000645645 00000 n -0000645767 00000 n -0000645889 00000 n -0000646011 00000 n -0000646134 00000 n -0000646195 00000 n -0001223894 00000 n -0000707662 00000 n -0000766578 00000 n -0000649223 00000 n -0000649422 00000 n -0000649621 00000 n -0000649821 00000 n -0000650021 00000 n -0000650419 00000 n -0000650618 00000 n -0000650851 00000 n -0000651051 00000 n -0000651285 00000 n -0000651484 00000 n -0000651684 00000 n -0000654802 00000 n -0000652221 00000 n -0000648779 00000 n -0000646528 00000 n -0000651915 00000 n -0000650221 00000 n -0000651977 00000 n -0000652038 00000 n -0000652099 00000 n -0000652160 00000 n -0000772854 00000 n -0000766640 00000 n -0000777485 00000 n -0000766703 00000 n -0000655002 00000 n -0000655236 00000 n -0000655469 00000 n -0000655668 00000 n -0000655866 00000 n -0000656098 00000 n -0000656297 00000 n -0000656496 00000 n -0000656893 00000 n -0000657126 00000 n -0000657326 00000 n -0000657525 00000 n -0000657923 00000 n -0000661175 00000 n -0000658581 00000 n -0000654542 00000 n -0000652507 00000 n -0000658153 00000 n -0000658215 00000 n -0000658276 00000 n -0000656694 00000 n -0000658337 00000 n -0000658398 00000 n -0000657724 00000 n -0000658459 00000 n -0000658520 00000 n -0000766765 00000 n -0000782832 00000 n -0000766827 00000 n -0000766888 00000 n -0000661375 00000 n -0000661574 00000 n -0000661807 00000 n -0000662039 00000 n -0000662238 00000 n -0000662436 00000 n -0000662607 00000 n -0000662840 00000 n -0000663072 00000 n -0000663271 00000 n -0000663469 00000 n -0000663640 00000 n -0000663871 00000 n -0000667278 00000 n -0000664617 00000 n -0000660931 00000 n -0000658867 00000 n -0000664069 00000 n -0000664131 00000 n -0000664253 00000 n -0000664314 00000 n -0000664375 00000 n -0000664435 00000 n -0000664496 00000 n -0000664556 00000 n -0000766950 00000 n -0000767013 00000 n -0000767076 00000 n -0000667510 00000 n -0000667743 00000 n -0000667941 00000 n -0000668141 00000 n -0000668374 00000 n -0000668607 00000 n -0000668804 00000 n -0000669003 00000 n -0000669174 00000 n -0000669407 00000 n -0000669607 00000 n -0000669806 00000 n -0000670001 00000 n -0000670232 00000 n -0000670857 00000 n -0000667026 00000 n -0000664877 00000 n -0000670429 00000 n -0000670491 00000 n -0000670552 00000 n -0000670613 00000 n -0000670674 00000 n -0000670735 00000 n -0000670796 00000 n -0000767139 00000 n -0000767202 00000 n -0000767264 00000 n -0000673436 00000 n -0000673607 00000 n -0000673840 00000 n -0000674073 00000 n -0000674306 00000 n -0000674506 00000 n -0000674705 00000 n -0000674905 00000 n -0000675103 00000 n -0000678628 00000 n -0000675786 00000 n -0000673232 00000 n -0000671143 00000 n -0000675300 00000 n -0000675362 00000 n -0000675423 00000 n -0000675484 00000 n -0000675545 00000 n -0000675605 00000 n -0000675666 00000 n -0000675727 00000 n -0000767325 00000 n -0000771732 00000 n -0000771794 00000 n -0000678861 00000 n -0000679060 00000 n -0000679260 00000 n -0000679493 00000 n -0000679692 00000 n -0000679892 00000 n -0000680290 00000 n -0000680523 00000 n -0000680723 00000 n -0000680956 00000 n -0000681155 00000 n -0000681553 00000 n -0000684876 00000 n -0000682296 00000 n -0000678376 00000 n -0000676046 00000 n -0000681750 00000 n -0000681812 00000 n -0000680092 00000 n -0000681873 00000 n -0000681934 00000 n -0000681995 00000 n -0000682117 00000 n -0000682177 00000 n -0000681355 00000 n -0000682237 00000 n -0001224012 00000 n -0000771919 00000 n -0000771856 00000 n -0000772107 00000 n -0000744805 00000 n -0000726605 00000 n -0000685109 00000 n -0000685308 00000 n -0000685707 00000 n -0000685940 00000 n -0000686140 00000 n -0000686539 00000 n -0000686772 00000 n -0000687005 00000 n -0000687205 00000 n -0000687405 00000 n -0000687605 00000 n -0000687804 00000 n -0000688001 00000 n -0000691472 00000 n -0000691672 00000 n -0000688685 00000 n -0000684616 00000 n -0000682582 00000 n -0000688196 00000 n -0000688258 00000 n -0000685508 00000 n -0000688319 00000 n -0000688380 00000 n -0000686340 00000 n -0000688441 00000 n -0000688502 00000 n -0000688563 00000 n -0000688624 00000 n -0000772169 00000 n -0000772229 00000 n -0000772292 00000 n -0000772355 00000 n -0000714773 00000 n -0000691870 00000 n -0000692103 00000 n -0000692302 00000 n -0000692501 00000 n -0000692900 00000 n -0000693131 00000 n -0000693330 00000 n -0000693530 00000 n -0000693763 00000 n -0000693963 00000 n -0000694865 00000 n -0000691236 00000 n -0000688957 00000 n -0000694194 00000 n -0000694256 00000 n -0000694317 00000 n -0000692701 00000 n -0000694378 00000 n -0000694439 00000 n -0000694500 00000 n -0000694621 00000 n -0000694682 00000 n -0000694743 00000 n -0000694804 00000 n -0000772417 00000 n -0000772479 00000 n -0000772668 00000 n -0000772792 00000 n -0000696644 00000 n -0000697060 00000 n -0000696504 00000 n -0000695137 00000 n -0000696877 00000 n -0000696939 00000 n -0000697000 00000 n -0000772730 00000 n -0000000954 00000 f -0000000955 00000 f -0000000956 00000 f -0000000957 00000 f -0000000958 00000 f -0000000962 00000 f -0000700396 00000 n -0000700596 00000 n -0000700796 00000 n -0000000963 00000 f -0000000965 00000 f -0000700996 00000 n -0000000966 00000 f -0000000967 00000 f -0000000968 00000 f -0000000971 00000 f -0000701195 00000 n -0000701395 00000 n -0000000972 00000 f -0000001183 00000 f -0000701595 00000 n -0000702465 00000 n -0000700208 00000 n -0000697306 00000 n -0000701794 00000 n -0000701917 00000 n -0000702099 00000 n -0000702160 00000 n -0000702221 00000 n -0000702282 00000 n -0000702343 00000 n -0000702404 00000 n -0000706417 00000 n -0000706616 00000 n -0000706779 00000 n -0000706940 00000 n -0000707140 00000 n -0000707340 00000 n -0000707844 00000 n -0000706237 00000 n -0000702711 00000 n -0000707539 00000 n -0000707723 00000 n -0001222410 00000 n -0001223236 00000 n -0000707784 00000 n -0000818570 00000 n -0000823316 00000 n -0000710853 00000 n -0000711013 00000 n -0000711175 00000 n -0000711375 00000 n -0000711572 00000 n -0000711806 00000 n -0000711998 00000 n -0000712195 00000 n -0000712391 00000 n -0000712624 00000 n -0000712820 00000 n -0000713017 00000 n -0000713214 00000 n -0000713449 00000 n -0000713645 00000 n -0000713842 00000 n -0000714041 00000 n -0000714275 00000 n -0000714509 00000 n -0000714898 00000 n -0000710546 00000 n -0000708145 00000 n -0000714709 00000 n -0000714835 00000 n -0001224130 00000 n -0000818880 00000 n -0000777548 00000 n -0000822939 00000 n -0000823190 00000 n -0000777421 00000 n -0000718266 00000 n -0000718466 00000 n -0000718667 00000 n -0000718868 00000 n -0000719068 00000 n -0000719269 00000 n -0000719469 00000 n -0000719670 00000 n -0000719869 00000 n -0000720069 00000 n -0000723951 00000 n -0000724350 00000 n -0000720520 00000 n -0000718040 00000 n -0000715187 00000 n -0000720269 00000 n -0000720333 00000 n -0000720457 00000 n -0000795879 00000 n -0000724551 00000 n -0000724752 00000 n -0000724951 00000 n -0000725152 00000 n -0000725353 00000 n -0000725550 00000 n -0000725751 00000 n -0000725950 00000 n -0000726150 00000 n -0000726315 00000 n -0000726793 00000 n -0000723698 00000 n -0000720809 00000 n -0000726478 00000 n -0000724152 00000 n -0000726542 00000 n -0000726667 00000 n -0000726730 00000 n -0000796006 00000 n -0000838060 00000 n -0000729766 00000 n -0000729929 00000 n -0000730128 00000 n -0000730328 00000 n -0000730528 00000 n -0000730727 00000 n -0000730927 00000 n -0000731127 00000 n -0000731327 00000 n -0000731525 00000 n -0000731725 00000 n -0000731925 00000 n -0000732159 00000 n -0000736735 00000 n -0000732859 00000 n -0000729513 00000 n -0000727108 00000 n -0000732357 00000 n -0000732483 00000 n -0000732546 00000 n -0000732609 00000 n -0000732672 00000 n -0000732796 00000 n -0000840060 00000 n -0000840312 00000 n -0000840186 00000 n -0000840438 00000 n -0000736906 00000 n -0000737105 00000 n -0000737305 00000 n -0000737703 00000 n -0000737901 00000 n -0000738072 00000 n -0000738273 00000 n -0000738473 00000 n -0000738678 00000 n -0000738878 00000 n -0000739078 00000 n -0000739593 00000 n -0000736482 00000 n -0000733160 00000 n -0000739278 00000 n -0000737506 00000 n -0000739342 00000 n -0000739467 00000 n -0000739530 00000 n -0000810408 00000 n -0000813360 00000 n -0000742941 00000 n -0000743141 00000 n -0000743341 00000 n -0000743542 00000 n -0000743741 00000 n -0000743941 00000 n -0000744141 00000 n -0000744341 00000 n -0000744542 00000 n -0000744993 00000 n -0000742724 00000 n -0000739921 00000 n -0000744741 00000 n -0000744867 00000 n -0000744930 00000 n -0000748807 00000 n -0000749006 00000 n -0000749207 00000 n -0000749408 00000 n -0000749608 00000 n -0000749807 00000 n -0000750006 00000 n -0000750185 00000 n -0000750364 00000 n -0000750563 00000 n -0000750764 00000 n -0000750965 00000 n -0000751165 00000 n -0000751365 00000 n -0000751566 00000 n -0000751954 00000 n -0000748536 00000 n -0000745282 00000 n -0000751766 00000 n -0000751891 00000 n -0001224255 00000 n -0000755403 00000 n -0000755604 00000 n -0000755805 00000 n -0000755982 00000 n -0000756182 00000 n -0000756381 00000 n -0000756559 00000 n -0000756773 00000 n -0000757008 00000 n -0000757222 00000 n -0000757423 00000 n -0000757637 00000 n -0000757872 00000 n -0000758086 00000 n -0000758287 00000 n -0000758500 00000 n -0000758734 00000 n -0000758948 00000 n -0000759149 00000 n -0000759328 00000 n -0000759528 00000 n -0000759728 00000 n -0000763396 00000 n -0000760053 00000 n -0000755069 00000 n -0000752243 00000 n -0000759926 00000 n -0000759990 00000 n -0000800801 00000 n -0000001184 00000 f -0000001185 00000 f -0000001186 00000 f -0000001187 00000 f -0000001188 00000 f -0000001189 00000 f -0000001190 00000 f -0000001191 00000 f -0000001192 00000 f -0000001193 00000 f -0000001194 00000 f -0000001195 00000 f -0000001196 00000 f -0000001197 00000 f -0000001198 00000 f -0000001199 00000 f -0000001200 00000 f -0000001201 00000 f -0000001202 00000 f -0000001203 00000 f -0000001204 00000 f -0000001205 00000 f -0000001206 00000 f -0000001207 00000 f -0000001208 00000 f -0000001209 00000 f -0000001210 00000 f -0000001211 00000 f -0000001212 00000 f -0000001213 00000 f -0000001214 00000 f -0000001251 00000 f -0000763596 00000 n -0000763795 00000 n -0000763996 00000 n -0000764197 00000 n -0000764398 00000 n -0000764599 00000 n -0000764800 00000 n -0000765000 00000 n -0000765200 00000 n -0000765400 00000 n -0000765599 00000 n -0000765800 00000 n -0000766001 00000 n -0000771066 00000 n -0000771267 00000 n -0000771468 00000 n -0000767387 00000 n -0000763134 00000 n -0000760314 00000 n -0000766201 00000 n -0000766389 00000 n -0000766452 00000 n -0000775614 00000 n -0000772914 00000 n -0000770903 00000 n -0000767648 00000 n -0000771668 00000 n -0000771980 00000 n -0000772043 00000 n -0000772541 00000 n -0000772604 00000 n -0000775814 00000 n -0000776012 00000 n -0000776226 00000 n -0000776426 00000 n -0000776604 00000 n -0000001252 00000 f -0000001253 00000 f -0000001254 00000 f -0000001255 00000 f -0000001256 00000 f -0000001257 00000 f -0000001258 00000 f -0000001259 00000 f -0000001260 00000 f -0000001279 00000 f -0000776766 00000 n -0000776967 00000 n -0000780581 00000 n -0000780816 00000 n -0000781286 00000 n -0000777612 00000 n -0000775406 00000 n -0000773174 00000 n -0000777167 00000 n -0000777231 00000 n -0000777294 00000 n -0000777357 00000 n -0000781487 00000 n -0000781687 00000 n -0000781885 00000 n -0000782099 00000 n -0000782299 00000 n -0000782477 00000 n -0000001280 00000 f -0000001281 00000 f -0000001282 00000 f -0000001283 00000 f -0000001284 00000 f -0000001285 00000 f -0000001286 00000 f -0000001287 00000 f -0000001288 00000 f -0000001289 00000 f -0000001290 00000 f -0000001291 00000 f -0000001292 00000 f -0000001293 00000 f -0000001294 00000 f -0000001295 00000 f -0000001296 00000 f -0000001297 00000 f -0000001298 00000 f -0000001497 00000 f -0000789006 00000 n -0000789241 00000 n -0000789476 00000 n -0000789709 00000 n -0000790179 00000 n -0000793198 00000 n -0000793433 00000 n -0000793667 00000 n -0000794136 00000 n -0000794371 00000 n -0000783083 00000 n -0000780355 00000 n -0000777860 00000 n -0000782641 00000 n -0000782705 00000 n -0000781051 00000 n -0000782769 00000 n -0000782894 00000 n -0000782957 00000 n -0000828637 00000 n -0000786466 00000 n -0000785712 00000 n -0000783357 00000 n -0000785836 00000 n -0000785900 00000 n -0000785964 00000 n -0000786027 00000 n -0001224380 00000 n -0000790540 00000 n -0000788816 00000 n -0000786687 00000 n -0000790414 00000 n -0000789944 00000 n -0000794839 00000 n -0000795039 00000 n -0000795240 00000 n -0000796322 00000 n -0000792972 00000 n -0000790814 00000 n -0000795441 00000 n -0000793901 00000 n -0000794605 00000 n -0000795567 00000 n -0000795630 00000 n -0000795816 00000 n -0000795943 00000 n -0000796070 00000 n -0000796133 00000 n -0000796197 00000 n -0000796260 00000 n -0000798421 00000 n -0000798656 00000 n -0000798827 00000 n -0000799062 00000 n -0000799233 00000 n -0000799468 00000 n -0000799639 00000 n -0000799873 00000 n -0000800862 00000 n -0000798213 00000 n -0000796596 00000 n -0000800042 00000 n -0000800106 00000 n -0000800169 00000 n -0000800233 00000 n -0000800296 00000 n -0000800360 00000 n -0001221978 00000 n -0000800423 00000 n -0000800486 00000 n -0000800549 00000 n -0000800612 00000 n -0000800675 00000 n -0000800738 00000 n -0000803271 00000 n -0000802517 00000 n -0000801125 00000 n -0000802641 00000 n -0000802705 00000 n -0000802830 00000 n -0000802955 00000 n -0000803081 00000 n -0000803144 00000 n -0000803208 00000 n -0000803815 00000 n -0000803627 00000 n -0000803519 00000 n -0000803751 00000 n -0000806410 00000 n -0000806615 00000 n -0000806820 00000 n -0000807021 00000 n -0000807226 00000 n -0000807430 00000 n -0000807635 00000 n -0000807840 00000 n -0000808045 00000 n -0000808250 00000 n -0000808455 00000 n -0000808655 00000 n -0000808861 00000 n -0000809064 00000 n -0000809270 00000 n -0000809474 00000 n -0000809672 00000 n -0000810078 00000 n -0000810658 00000 n -0000806103 00000 n -0000803964 00000 n -0000810282 00000 n -0000810533 00000 n -0000809875 00000 n -0001224505 00000 n -0000813612 00000 n -0000812982 00000 n -0000813108 00000 n -0000813738 00000 n -0000813486 00000 n -0000813864 00000 n -0000813234 00000 n -0000818446 00000 n -0000812655 00000 n -0000813926 00000 n -0000812510 00000 n -0000810944 00000 n -0000812856 00000 n -0000813045 00000 n -0000813171 00000 n -0000813297 00000 n -0000813423 00000 n -0000813549 00000 n -0000813675 00000 n -0000813801 00000 n -0000816536 00000 n -0000816733 00000 n -0000816928 00000 n -0000817125 00000 n -0000817322 00000 n -0000817523 00000 n -0000817721 00000 n -0000817918 00000 n -0000818119 00000 n -0000819006 00000 n -0000816319 00000 n -0000814187 00000 n -0000818319 00000 n -0000818383 00000 n -0000818509 00000 n -0000818694 00000 n -0000818943 00000 n -0000823064 00000 n -0000821291 00000 n -0000821491 00000 n -0000821690 00000 n -0000821888 00000 n -0000822084 00000 n -0000822283 00000 n -0000822481 00000 n -0000822679 00000 n -0000827338 00000 n -0000827537 00000 n -0000827736 00000 n -0000823505 00000 n -0000821083 00000 n -0000819280 00000 n -0000822875 00000 n -0000823002 00000 n -0000823127 00000 n -0000823253 00000 n -0000823442 00000 n -0000832603 00000 n -0000832351 00000 n -0000832477 00000 n -0000827936 00000 n -0000828698 00000 n -0000827166 00000 n -0000823779 00000 n -0000828135 00000 n -0000828385 00000 n -0000828448 00000 n -0000828511 00000 n -0000828574 00000 n -0000831003 00000 n -0000831202 00000 n -0000831401 00000 n -0000831600 00000 n -0000831813 00000 n -0000832026 00000 n -0000832977 00000 n -0000830813 00000 n -0000828959 00000 n -0000832224 00000 n -0000832288 00000 n -0000832414 00000 n -0000832540 00000 n -0000832665 00000 n -0000832852 00000 n -0000835628 00000 n -0000001498 00000 f -0000001499 00000 f -0000001500 00000 f -0000001501 00000 f -0000001502 00000 f -0000001503 00000 f -0000001504 00000 f -0000001506 00000 f -0000835828 00000 n -0000000000 00000 f -0000836028 00000 n -0000836228 00000 n -0000836429 00000 n -0000836629 00000 n -0000836828 00000 n -0000837025 00000 n -0000837224 00000 n -0000837422 00000 n -0000838310 00000 n -0000835402 00000 n -0000833251 00000 n -0000837620 00000 n -0000837808 00000 n -0000837934 00000 n -0000837997 00000 n -0000838185 00000 n -0001224630 00000 n -0000840564 00000 n -0000839810 00000 n -0000838584 00000 n -0000839934 00000 n -0000840123 00000 n -0000840249 00000 n -0000840375 00000 n -0000840501 00000 n -0000840905 00000 n -0000840931 00000 n -0000841267 00000 n -0000841293 00000 n -0000841329 00000 n -0000841717 00000 n -0000841743 00000 n -0000841770 00000 n -0000841794 00000 n -0001221259 00000 n -0000841818 00000 n -0000842319 00000 n -0000842828 00000 n -0000843326 00000 n -0000850466 00000 n -0000850701 00000 n -0000857718 00000 n -0000857954 00000 n -0000864965 00000 n -0000865191 00000 n -0000872302 00000 n -0000872537 00000 n -0000879594 00000 n -0000879825 00000 n -0000886938 00000 n -0000887172 00000 n -0001001184 00000 n -0001001647 00000 n -0001107858 00000 n -0001108433 00000 n -0001203256 00000 n -0001203685 00000 n -0001205369 00000 n -0001205597 00000 n -0001216194 00000 n -0001216778 00000 n -0001220967 00000 n -0001224719 00000 n -0001224840 00000 n -0001224948 00000 n -0001225021 00000 n -0001230007 00000 n -0001230176 00000 n -0001230361 00000 n -0001230657 00000 n -0001230932 00000 n -0001231296 00000 n -0001231758 00000 n -0001232194 00000 n -0001232640 00000 n -0001233100 00000 n -0001233347 00000 n -0001233920 00000 n -0001234493 00000 n -0001235066 00000 n -0001235641 00000 n -0001236316 00000 n -0001237160 00000 n -0001238004 00000 n -0001238849 00000 n -0001239692 00000 n -0001240535 00000 n -0001241383 00000 n -0001242228 00000 n -0001243073 00000 n -0001243567 00000 n -0001243929 00000 n -0001244174 00000 n -0001244345 00000 n -0001244515 00000 n -0001244686 00000 n -0001244859 00000 n -0001245033 00000 n -0001245210 00000 n -0001245385 00000 n -0001245562 00000 n -0001245741 00000 n -0001245945 00000 n -0001246140 00000 n -0001246337 00000 n -0001246534 00000 n -0001246736 00000 n -0001247060 00000 n -0001247677 00000 n -0001248219 00000 n -0001248744 00000 n -0001249281 00000 n -0001249684 00000 n -0001249922 00000 n -0001250165 00000 n -0001250408 00000 n -0001250661 00000 n -0001250944 00000 n -0001251230 00000 n -0001251513 00000 n -0001251796 00000 n -0001252083 00000 n -0001252372 00000 n -0001252664 00000 n -0001252958 00000 n -0001253247 00000 n -0001253536 00000 n -0001253825 00000 n -0001254114 00000 n -0001254403 00000 n -0001254593 00000 n -0001254794 00000 n -0001254983 00000 n -0001255176 00000 n -0001255327 00000 n -0001255525 00000 n -0001255775 00000 n -0001255989 00000 n -0001256126 00000 n -0001256245 00000 n -0001256419 00000 n -0001256599 00000 n -0001256738 00000 n -0001256882 00000 n -0001257014 00000 n -0001257089 00000 n -0001257210 00000 n -0001257331 00000 n -0001257415 00000 n -0001257455 00000 n -0001257587 00000 n -trailer -<< /Size 1658 -/Root 1656 0 R -/Info 1657 0 R -/ID [ ] >> -startxref -1257863 -%%EOF diff --git a/lib/Bosch-BSEC/src/bme680/README.md b/lib/Bosch-BSEC/src/bme680/README.md deleted file mode 100644 index 0a7e0ee4..00000000 --- a/lib/Bosch-BSEC/src/bme680/README.md +++ /dev/null @@ -1,282 +0,0 @@ -# BME680 sensor API - -## Introduction - -This package contains the Bosch Sensortec's BME680 gas sensor API - -The sensor driver package includes bme680.h, bme680.c and bme680_defs.h files - -## Version - -File | Version | Date ---------------|---------|------------- -bme680.c | 3.5.9 | 19 Jun 2018 -bme680.h | 3.5.9 | 19 Jun 2018 -bme680_defs.h | 3.5.9 | 19 Jun 2018 - -## Integration details - -* Integrate bme680.h, bme680_defs.h and bme680.c file in to your project. -* Include the bme680.h file in your code like below. - -``` c -#include "bme680.h" -``` - -## File information - -* bme680_defs.h : This header file has the constants, macros and datatype declarations. -* bme680.h : This header file contains the declarations of the sensor driver APIs. -* bme680.c : This source file contains the definitions of the sensor driver APIs. - -## Supported sensor interfaces - -* SPI 4-wire -* I2C - -## Usage guide - -### Initializing the sensor - -To initialize the sensor, you will first need to create a device structure. You -can do this by creating an instance of the structure bme680_dev. Then go on to -fill in the various parameters as shown below - -#### Example for SPI 4-Wire - -``` c - struct bme680_dev gas_sensor; - - /* You may assign a chip select identifier to be handled later */ - gas_sensor.dev_id = 0; - gas_sensor.intf = BME680_SPI_INTF; - gas_sensor.read = user_spi_read; - gas_sensor.write = user_spi_write; - gas_sensor.delay_ms = user_delay_ms; - /* amb_temp can be set to 25 prior to configuring the gas sensor - * or by performing a few temperature readings without operating the gas sensor. - */ - gas_sensor.amb_temp = 25; - - int8_t rslt = BME680_OK; - rslt = bme680_init(&gas_sensor); -``` - -#### Example for I2C - -``` c - struct bme680_dev gas_sensor; - - gas_sensor.dev_id = BME680_I2C_ADDR_PRIMARY; - gas_sensor.intf = BME680_I2C_INTF; - gas_sensor.read = i2c_read; - gas_sensor.write = i2c_write; - gas_sensor.delay_ms = user_delay_ms; - /* amb_temp can be set to 25 prior to configuring the gas sensor - * or by performing a few temperature readings without operating the gas sensor. - */ - gas_sensor.amb_temp = 25; - - - int8_t rslt = BME680_OK; - rslt = bme680_init(&gas_sensor); -``` - -Regarding compensation functions for temperature, pressure, humidity and gas we have two implementations. - - - Integer version - - floating point version - -By default, Integer version is used in the API - -If the user needs the floating point version, the user has to un-comment BME680_FLOAT_POINT_COMPENSATION macro -in bme680_defs.h file or to add it in the compiler flags. - -### Configuring the sensor - -#### Example for configuring the sensor in forced mode - -``` c - uint8_t set_required_settings; - - /* Set the temperature, pressure and humidity settings */ - gas_sensor.tph_sett.os_hum = BME680_OS_2X; - gas_sensor.tph_sett.os_pres = BME680_OS_4X; - gas_sensor.tph_sett.os_temp = BME680_OS_8X; - gas_sensor.tph_sett.filter = BME680_FILTER_SIZE_3; - - /* Set the remaining gas sensor settings and link the heating profile */ - gas_sensor.gas_sett.run_gas = BME680_ENABLE_GAS_MEAS; - /* Create a ramp heat waveform in 3 steps */ - gas_sensor.gas_sett.heatr_temp = 320; /* degree Celsius */ - gas_sensor.gas_sett.heatr_dur = 150; /* milliseconds */ - - /* Select the power mode */ - /* Must be set before writing the sensor configuration */ - gas_sensor.power_mode = BME680_FORCED_MODE; - - /* Set the required sensor settings needed */ - set_required_settings = BME680_OST_SEL | BME680_OSP_SEL | BME680_OSH_SEL | BME680_FILTER_SEL - | BME680_GAS_SENSOR_SEL; - - /* Set the desired sensor configuration */ - rslt = bme680_set_sensor_settings(set_required_settings,&gas_sensor); - - /* Set the power mode */ - rslt = bme680_set_sensor_mode(&gas_sensor); - - -``` - -### Reading sensor data - -#### Example for reading all sensor data - -``` c - /* Get the total measurement duration so as to sleep or wait till the - * measurement is complete */ - uint16_t meas_period; - bme680_get_profile_dur(&meas_period, &gas_sensor); - - struct bme680_field_data data; - - while(1) - { - user_delay_ms(meas_period); /* Delay till the measurement is ready */ - - rslt = bme680_get_sensor_data(&data, &gas_sensor); - - printf("T: %.2f degC, P: %.2f hPa, H %.2f %%rH ", data.temperature / 100.0f, - data.pressure / 100.0f, data.humidity / 1000.0f ); - /* Avoid using measurements from an unstable heating setup */ - if(data.status & BME680_GASM_VALID_MSK) - printf(", G: %d ohms", data.gas_resistance); - - printf("\r\n"); - - /* Trigger the next measurement if you would like to read data out continuously */ - if (gas_sensor.power_mode == BME680_FORCED_MODE) { - rslt = bme680_set_sensor_mode(&gas_sensor); - } - } -``` - -### Templates for function pointers - -``` c - -void user_delay_ms(uint32_t period) -{ - /* - * Return control or wait, - * for a period amount of milliseconds - */ -} - -int8_t user_spi_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) -{ - int8_t rslt = 0; /* Return 0 for Success, non-zero for failure */ - - /* - * The parameter dev_id can be used as a variable to select which Chip Select pin has - * to be set low to activate the relevant device on the SPI bus - */ - - /* - * Data on the bus should be like - * |----------------+---------------------+-------------| - * | MOSI | MISO | Chip Select | - * |----------------+---------------------|-------------| - * | (don't care) | (don't care) | HIGH | - * | (reg_addr) | (don't care) | LOW | - * | (don't care) | (reg_data[0]) | LOW | - * | (....) | (....) | LOW | - * | (don't care) | (reg_data[len - 1]) | LOW | - * | (don't care) | (don't care) | HIGH | - * |----------------+---------------------|-------------| - */ - - return rslt; -} - -int8_t user_spi_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) -{ - int8_t rslt = 0; /* Return 0 for Success, non-zero for failure */ - - /* - * The parameter dev_id can be used as a variable to select which Chip Select pin has - * to be set low to activate the relevant device on the SPI bus - */ - - /* - * Data on the bus should be like - * |---------------------+--------------+-------------| - * | MOSI | MISO | Chip Select | - * |---------------------+--------------|-------------| - * | (don't care) | (don't care) | HIGH | - * | (reg_addr) | (don't care) | LOW | - * | (reg_data[0]) | (don't care) | LOW | - * | (....) | (....) | LOW | - * | (reg_data[len - 1]) | (don't care) | LOW | - * | (don't care) | (don't care) | HIGH | - * |---------------------+--------------|-------------| - */ - - return rslt; -} - -int8_t i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) -{ - int8_t rslt = 0; /* Return 0 for Success, non-zero for failure */ - - /* - * The parameter dev_id can be used as a variable to store the I2C address of the device - */ - - /* - * Data on the bus should be like - * |------------+---------------------| - * | I2C action | Data | - * |------------+---------------------| - * | Start | - | - * | Write | (reg_addr) | - * | Stop | - | - * | Start | - | - * | Read | (reg_data[0]) | - * | Read | (....) | - * | Read | (reg_data[len - 1]) | - * | Stop | - | - * |------------+---------------------| - */ - - return rslt; -} - -int8_t i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) -{ - int8_t rslt = 0; /* Return 0 for Success, non-zero for failure */ - - /* - * The parameter dev_id can be used as a variable to store the I2C address of the device - */ - - /* - * Data on the bus should be like - * |------------+---------------------| - * | I2C action | Data | - * |------------+---------------------| - * | Start | - | - * | Write | (reg_addr) | - * | Write | (reg_data[0]) | - * | Write | (....) | - * | Write | (reg_data[len - 1]) | - * | Stop | - | - * |------------+---------------------| - */ - - return rslt; -} - -``` - -## Copyright (C) 2017 - 2018 Bosch Sensortec GmbH \ No newline at end of file diff --git a/lib/Bosch-BSEC/src/bme680/bme680.c b/lib/Bosch-BSEC/src/bme680/bme680.c deleted file mode 100644 index 6067725a..00000000 --- a/lib/Bosch-BSEC/src/bme680/bme680.c +++ /dev/null @@ -1,1367 +0,0 @@ -/**\mainpage - * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of the copyright holder nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER - * OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - * The information provided is believed to be accurate and reliable. - * The copyright holder assumes no responsibility - * for the consequences of use - * of such information nor for any infringement of patents or - * other rights of third parties which may result from its use. - * No license is granted by implication or otherwise under any patent or - * patent rights of the copyright holder. - * - * File bme680.c - * @date 19 Jun 2018 - * @version 3.5.9 - * - */ - -/*! @file bme680.c - @brief Sensor driver for BME680 sensor */ -#include "bme680.h" - -/*! - * @brief This internal API is used to read the calibrated data from the sensor. - * - * This function is used to retrieve the calibration - * data from the image registers of the sensor. - * - * @note Registers 89h to A1h for calibration data 1 to 24 - * from bit 0 to 7 - * @note Registers E1h to F0h for calibration data 25 to 40 - * from bit 0 to 7 - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status. - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t get_calib_data(struct bme680_dev *dev); - -/*! - * @brief This internal API is used to set the gas configuration of the sensor. - * - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status. - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t set_gas_config(struct bme680_dev *dev); - -/*! - * @brief This internal API is used to get the gas configuration of the sensor. - * @note heatr_temp and heatr_dur values are currently register data - * and not the actual values set - * - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status. - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t get_gas_config(struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the Heat duration value. - * - * @param[in] dur :Value of the duration to be shared. - * - * @return uint8_t threshold duration after calculation. - */ -static uint8_t calc_heater_dur(uint16_t dur); - -#ifndef BME680_FLOAT_POINT_COMPENSATION - -/*! - * @brief This internal API is used to calculate the temperature value. - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] temp_adc :Contains the temperature ADC value . - * - * @return uint32_t calculated temperature. - */ -static int16_t calc_temperature(uint32_t temp_adc, struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the pressure value. - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] pres_adc :Contains the pressure ADC value . - * - * @return uint32_t calculated pressure. - */ -static uint32_t calc_pressure(uint32_t pres_adc, const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the humidity value. - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] hum_adc :Contains the humidity ADC value. - * - * @return uint32_t calculated humidity. - */ -static uint32_t calc_humidity(uint16_t hum_adc, const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the Gas Resistance value. - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] gas_res_adc :Contains the Gas Resistance ADC value. - * @param[in] gas_range :Contains the range of gas values. - * - * @return uint32_t calculated gas resistance. - */ -static uint32_t calc_gas_resistance(uint16_t gas_res_adc, uint8_t gas_range, const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the Heat Resistance value. - * - * @param[in] dev : Structure instance of bme680_dev - * @param[in] temp : Contains the target temperature value. - * - * @return uint8_t calculated heater resistance. - */ -static uint8_t calc_heater_res(uint16_t temp, const struct bme680_dev *dev); - -#else -/*! - * @brief This internal API is used to calculate the - * temperature value value in float format - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] temp_adc :Contains the temperature ADC value . - * - * @return Calculated temperature in float - */ -static float calc_temperature(uint32_t temp_adc, struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the - * pressure value value in float format - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] pres_adc :Contains the pressure ADC value . - * - * @return Calculated pressure in float. - */ -static float calc_pressure(uint32_t pres_adc, const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the - * humidity value value in float format - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] hum_adc :Contains the humidity ADC value. - * - * @return Calculated humidity in float. - */ -static float calc_humidity(uint16_t hum_adc, const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the - * gas resistance value value in float format - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] gas_res_adc :Contains the Gas Resistance ADC value. - * @param[in] gas_range :Contains the range of gas values. - * - * @return Calculated gas resistance in float. - */ -static float calc_gas_resistance(uint16_t gas_res_adc, uint8_t gas_range, const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to calculate the - * heater resistance value in float format - * - * @param[in] temp : Contains the target temperature value. - * @param[in] dev : Structure instance of bme680_dev. - * - * @return Calculated heater resistance in float. - */ -static float calc_heater_res(uint16_t temp, const struct bme680_dev *dev); - -#endif - -/*! - * @brief This internal API is used to calculate the field data of sensor. - * - * @param[out] data :Structure instance to hold the data - * @param[in] dev :Structure instance of bme680_dev. - * - * @return int8_t result of the field data from sensor. - */ -static int8_t read_field_data(struct bme680_field_data *data, struct bme680_dev *dev); - -/*! - * @brief This internal API is used to set the memory page - * based on register address. - * - * The value of memory page - * value | Description - * --------|-------------- - * 0 | BME680_PAGE0_SPI - * 1 | BME680_PAGE1_SPI - * - * @param[in] dev :Structure instance of bme680_dev. - * @param[in] reg_addr :Contains the register address array. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t set_mem_page(uint8_t reg_addr, struct bme680_dev *dev); - -/*! - * @brief This internal API is used to get the memory page based - * on register address. - * - * The value of memory page - * value | Description - * --------|-------------- - * 0 | BME680_PAGE0_SPI - * 1 | BME680_PAGE1_SPI - * - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t get_mem_page(struct bme680_dev *dev); - -/*! - * @brief This internal API is used to validate the device pointer for - * null conditions. - * - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t null_ptr_check(const struct bme680_dev *dev); - -/*! - * @brief This internal API is used to check the boundary - * conditions. - * - * @param[in] value :pointer to the value. - * @param[in] min :minimum value. - * @param[in] max :maximum value. - * @param[in] dev :Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -static int8_t boundary_check(uint8_t *value, uint8_t min, uint8_t max, struct bme680_dev *dev); - -/****************** Global Function Definitions *******************************/ -/*! - *@brief This API is the entry point. - *It reads the chip-id and calibration data from the sensor. - */ -int8_t bme680_init(struct bme680_dev *dev) -{ - int8_t rslt; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - /* Soft reset to restore it to default values*/ - rslt = bme680_soft_reset(dev); - if (rslt == BME680_OK) { - rslt = bme680_get_regs(BME680_CHIP_ID_ADDR, &dev->chip_id, 1, dev); - if (rslt == BME680_OK) { - if (dev->chip_id == BME680_CHIP_ID) { - /* Get the Calibration data */ - rslt = get_calib_data(dev); - } else { - rslt = BME680_E_DEV_NOT_FOUND; - } - } - } - } - - return rslt; -} - -/*! - * @brief This API reads the data from the given register address of the sensor. - */ -int8_t bme680_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct bme680_dev *dev) -{ - int8_t rslt; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if (dev->intf == BME680_SPI_INTF) { - /* Set the memory page */ - rslt = set_mem_page(reg_addr, dev); - if (rslt == BME680_OK) - reg_addr = reg_addr | BME680_SPI_RD_MSK; - } - dev->com_rslt = dev->read(dev->dev_id, reg_addr, reg_data, len); - if (dev->com_rslt != 0) - rslt = BME680_E_COM_FAIL; - } - - return rslt; -} - -/*! - * @brief This API writes the given data to the register address - * of the sensor. - */ -int8_t bme680_set_regs(const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct bme680_dev *dev) -{ - int8_t rslt; - /* Length of the temporary buffer is 2*(length of register)*/ - uint8_t tmp_buff[BME680_TMP_BUFFER_LENGTH] = { 0 }; - uint16_t index; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if ((len > 0) && (len < BME680_TMP_BUFFER_LENGTH / 2)) { - /* Interleave the 2 arrays */ - for (index = 0; index < len; index++) { - if (dev->intf == BME680_SPI_INTF) { - /* Set the memory page */ - rslt = set_mem_page(reg_addr[index], dev); - tmp_buff[(2 * index)] = reg_addr[index] & BME680_SPI_WR_MSK; - } else { - tmp_buff[(2 * index)] = reg_addr[index]; - } - tmp_buff[(2 * index) + 1] = reg_data[index]; - } - /* Write the interleaved array */ - if (rslt == BME680_OK) { - dev->com_rslt = dev->write(dev->dev_id, tmp_buff[0], &tmp_buff[1], (2 * len) - 1); - if (dev->com_rslt != 0) - rslt = BME680_E_COM_FAIL; - } - } else { - rslt = BME680_E_INVALID_LENGTH; - } - } - - return rslt; -} - -/*! - * @brief This API performs the soft reset of the sensor. - */ -int8_t bme680_soft_reset(struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t reg_addr = BME680_SOFT_RESET_ADDR; - /* 0xb6 is the soft reset command */ - uint8_t soft_rst_cmd = BME680_SOFT_RESET_CMD; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if (dev->intf == BME680_SPI_INTF) - rslt = get_mem_page(dev); - - /* Reset the device */ - if (rslt == BME680_OK) { - rslt = bme680_set_regs(®_addr, &soft_rst_cmd, 1, dev); - /* Wait for 5ms */ - dev->delay_ms(BME680_RESET_PERIOD); - - if (rslt == BME680_OK) { - /* After reset get the memory page */ - if (dev->intf == BME680_SPI_INTF) - rslt = get_mem_page(dev); - } - } - } - - return rslt; -} - -/*! - * @brief This API is used to set the oversampling, filter and T,P,H, gas selection - * settings in the sensor. - */ -int8_t bme680_set_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t reg_addr; - uint8_t data = 0; - uint8_t count = 0; - uint8_t reg_array[BME680_REG_BUFFER_LENGTH] = { 0 }; - uint8_t data_array[BME680_REG_BUFFER_LENGTH] = { 0 }; - uint8_t intended_power_mode = dev->power_mode; /* Save intended power mode */ - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if (desired_settings & BME680_GAS_MEAS_SEL) - rslt = set_gas_config(dev); - - dev->power_mode = BME680_SLEEP_MODE; - if (rslt == BME680_OK) - rslt = bme680_set_sensor_mode(dev); - - /* Selecting the filter */ - if (desired_settings & BME680_FILTER_SEL) { - rslt = boundary_check(&dev->tph_sett.filter, BME680_FILTER_SIZE_0, BME680_FILTER_SIZE_127, dev); - reg_addr = BME680_CONF_ODR_FILT_ADDR; - - if (rslt == BME680_OK) - rslt = bme680_get_regs(reg_addr, &data, 1, dev); - - if (desired_settings & BME680_FILTER_SEL) - data = BME680_SET_BITS(data, BME680_FILTER, dev->tph_sett.filter); - - reg_array[count] = reg_addr; /* Append configuration */ - data_array[count] = data; - count++; - } - - /* Selecting heater control for the sensor */ - if (desired_settings & BME680_HCNTRL_SEL) { - rslt = boundary_check(&dev->gas_sett.heatr_ctrl, BME680_ENABLE_HEATER, - BME680_DISABLE_HEATER, dev); - reg_addr = BME680_CONF_HEAT_CTRL_ADDR; - - if (rslt == BME680_OK) - rslt = bme680_get_regs(reg_addr, &data, 1, dev); - data = BME680_SET_BITS_POS_0(data, BME680_HCTRL, dev->gas_sett.heatr_ctrl); - - reg_array[count] = reg_addr; /* Append configuration */ - data_array[count] = data; - count++; - } - - /* Selecting heater T,P oversampling for the sensor */ - if (desired_settings & (BME680_OST_SEL | BME680_OSP_SEL)) { - rslt = boundary_check(&dev->tph_sett.os_temp, BME680_OS_NONE, BME680_OS_16X, dev); - reg_addr = BME680_CONF_T_P_MODE_ADDR; - - if (rslt == BME680_OK) - rslt = bme680_get_regs(reg_addr, &data, 1, dev); - - if (desired_settings & BME680_OST_SEL) - data = BME680_SET_BITS(data, BME680_OST, dev->tph_sett.os_temp); - - if (desired_settings & BME680_OSP_SEL) - data = BME680_SET_BITS(data, BME680_OSP, dev->tph_sett.os_pres); - - reg_array[count] = reg_addr; - data_array[count] = data; - count++; - } - - /* Selecting humidity oversampling for the sensor */ - if (desired_settings & BME680_OSH_SEL) { - rslt = boundary_check(&dev->tph_sett.os_hum, BME680_OS_NONE, BME680_OS_16X, dev); - reg_addr = BME680_CONF_OS_H_ADDR; - - if (rslt == BME680_OK) - rslt = bme680_get_regs(reg_addr, &data, 1, dev); - data = BME680_SET_BITS_POS_0(data, BME680_OSH, dev->tph_sett.os_hum); - - reg_array[count] = reg_addr; /* Append configuration */ - data_array[count] = data; - count++; - } - - /* Selecting the runGas and NB conversion settings for the sensor */ - if (desired_settings & (BME680_RUN_GAS_SEL | BME680_NBCONV_SEL)) { - rslt = boundary_check(&dev->gas_sett.run_gas, BME680_RUN_GAS_DISABLE, - BME680_RUN_GAS_ENABLE, dev); - if (rslt == BME680_OK) { - /* Validate boundary conditions */ - rslt = boundary_check(&dev->gas_sett.nb_conv, BME680_NBCONV_MIN, - BME680_NBCONV_MAX, dev); - } - - reg_addr = BME680_CONF_ODR_RUN_GAS_NBC_ADDR; - - if (rslt == BME680_OK) - rslt = bme680_get_regs(reg_addr, &data, 1, dev); - - if (desired_settings & BME680_RUN_GAS_SEL) - data = BME680_SET_BITS(data, BME680_RUN_GAS, dev->gas_sett.run_gas); - - if (desired_settings & BME680_NBCONV_SEL) - data = BME680_SET_BITS_POS_0(data, BME680_NBCONV, dev->gas_sett.nb_conv); - - reg_array[count] = reg_addr; /* Append configuration */ - data_array[count] = data; - count++; - } - - if (rslt == BME680_OK) - rslt = bme680_set_regs(reg_array, data_array, count, dev); - - /* Restore previous intended power mode */ - dev->power_mode = intended_power_mode; - } - - return rslt; -} - -/*! - * @brief This API is used to get the oversampling, filter and T,P,H, gas selection - * settings in the sensor. - */ -int8_t bme680_get_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev) -{ - int8_t rslt; - /* starting address of the register array for burst read*/ - uint8_t reg_addr = BME680_CONF_HEAT_CTRL_ADDR; - uint8_t data_array[BME680_REG_BUFFER_LENGTH] = { 0 }; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - rslt = bme680_get_regs(reg_addr, data_array, BME680_REG_BUFFER_LENGTH, dev); - - if (rslt == BME680_OK) { - if (desired_settings & BME680_GAS_MEAS_SEL) - rslt = get_gas_config(dev); - - /* get the T,P,H ,Filter,ODR settings here */ - if (desired_settings & BME680_FILTER_SEL) - dev->tph_sett.filter = BME680_GET_BITS(data_array[BME680_REG_FILTER_INDEX], - BME680_FILTER); - - if (desired_settings & (BME680_OST_SEL | BME680_OSP_SEL)) { - dev->tph_sett.os_temp = BME680_GET_BITS(data_array[BME680_REG_TEMP_INDEX], BME680_OST); - dev->tph_sett.os_pres = BME680_GET_BITS(data_array[BME680_REG_PRES_INDEX], BME680_OSP); - } - - if (desired_settings & BME680_OSH_SEL) - dev->tph_sett.os_hum = BME680_GET_BITS_POS_0(data_array[BME680_REG_HUM_INDEX], - BME680_OSH); - - /* get the gas related settings */ - if (desired_settings & BME680_HCNTRL_SEL) - dev->gas_sett.heatr_ctrl = BME680_GET_BITS_POS_0(data_array[BME680_REG_HCTRL_INDEX], - BME680_HCTRL); - - if (desired_settings & (BME680_RUN_GAS_SEL | BME680_NBCONV_SEL)) { - dev->gas_sett.nb_conv = BME680_GET_BITS_POS_0(data_array[BME680_REG_NBCONV_INDEX], - BME680_NBCONV); - dev->gas_sett.run_gas = BME680_GET_BITS(data_array[BME680_REG_RUN_GAS_INDEX], - BME680_RUN_GAS); - } - } - } else { - rslt = BME680_E_NULL_PTR; - } - - return rslt; -} - -/*! - * @brief This API is used to set the power mode of the sensor. - */ -int8_t bme680_set_sensor_mode(struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t tmp_pow_mode; - uint8_t pow_mode = 0; - uint8_t reg_addr = BME680_CONF_T_P_MODE_ADDR; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - /* Call repeatedly until in sleep */ - do { - rslt = bme680_get_regs(BME680_CONF_T_P_MODE_ADDR, &tmp_pow_mode, 1, dev); - if (rslt == BME680_OK) { - /* Put to sleep before changing mode */ - pow_mode = (tmp_pow_mode & BME680_MODE_MSK); - - if (pow_mode != BME680_SLEEP_MODE) { - tmp_pow_mode = tmp_pow_mode & (~BME680_MODE_MSK); /* Set to sleep */ - rslt = bme680_set_regs(®_addr, &tmp_pow_mode, 1, dev); - dev->delay_ms(BME680_POLL_PERIOD_MS); - } - } - } while (pow_mode != BME680_SLEEP_MODE); - - /* Already in sleep */ - if (dev->power_mode != BME680_SLEEP_MODE) { - tmp_pow_mode = (tmp_pow_mode & ~BME680_MODE_MSK) | (dev->power_mode & BME680_MODE_MSK); - if (rslt == BME680_OK) - rslt = bme680_set_regs(®_addr, &tmp_pow_mode, 1, dev); - } - } - - return rslt; -} - -/*! - * @brief This API is used to get the power mode of the sensor. - */ -int8_t bme680_get_sensor_mode(struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t mode; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - rslt = bme680_get_regs(BME680_CONF_T_P_MODE_ADDR, &mode, 1, dev); - /* Masking the other register bit info*/ - dev->power_mode = mode & BME680_MODE_MSK; - } - - return rslt; -} - -/*! - * @brief This API is used to set the profile duration of the sensor. - */ -void bme680_set_profile_dur(uint16_t duration, struct bme680_dev *dev) -{ - uint32_t tph_dur; /* Calculate in us */ - uint32_t meas_cycles; - uint8_t os_to_meas_cycles[6] = {0, 1, 2, 4, 8, 16}; - - meas_cycles = os_to_meas_cycles[dev->tph_sett.os_temp]; - meas_cycles += os_to_meas_cycles[dev->tph_sett.os_pres]; - meas_cycles += os_to_meas_cycles[dev->tph_sett.os_hum]; - - /* TPH measurement duration */ - tph_dur = meas_cycles * UINT32_C(1963); - tph_dur += UINT32_C(477 * 4); /* TPH switching duration */ - tph_dur += UINT32_C(477 * 5); /* Gas measurement duration */ - tph_dur += UINT32_C(500); /* Get it to the closest whole number.*/ - tph_dur /= UINT32_C(1000); /* Convert to ms */ - - tph_dur += UINT32_C(1); /* Wake up duration of 1ms */ - /* The remaining time should be used for heating */ - dev->gas_sett.heatr_dur = duration - (uint16_t) tph_dur; -} - -/*! - * @brief This API is used to get the profile duration of the sensor. - */ -void bme680_get_profile_dur(uint16_t *duration, const struct bme680_dev *dev) -{ - uint32_t tph_dur; /* Calculate in us */ - uint32_t meas_cycles; - uint8_t os_to_meas_cycles[6] = {0, 1, 2, 4, 8, 16}; - - meas_cycles = os_to_meas_cycles[dev->tph_sett.os_temp]; - meas_cycles += os_to_meas_cycles[dev->tph_sett.os_pres]; - meas_cycles += os_to_meas_cycles[dev->tph_sett.os_hum]; - - /* TPH measurement duration */ - tph_dur = meas_cycles * UINT32_C(1963); - tph_dur += UINT32_C(477 * 4); /* TPH switching duration */ - tph_dur += UINT32_C(477 * 5); /* Gas measurement duration */ - tph_dur += UINT32_C(500); /* Get it to the closest whole number.*/ - tph_dur /= UINT32_C(1000); /* Convert to ms */ - - tph_dur += UINT32_C(1); /* Wake up duration of 1ms */ - - *duration = (uint16_t) tph_dur; - - /* Get the gas duration only when the run gas is enabled */ - if (dev->gas_sett.run_gas) { - /* The remaining time should be used for heating */ - *duration += dev->gas_sett.heatr_dur; - } -} - -/*! - * @brief This API reads the pressure, temperature and humidity and gas data - * from the sensor, compensates the data and store it in the bme680_data - * structure instance passed by the user. - */ -int8_t bme680_get_sensor_data(struct bme680_field_data *data, struct bme680_dev *dev) -{ - int8_t rslt; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - /* Reading the sensor data in forced mode only */ - rslt = read_field_data(data, dev); - if (rslt == BME680_OK) { - if (data->status & BME680_NEW_DATA_MSK) - dev->new_fields = 1; - else - dev->new_fields = 0; - } - } - - return rslt; -} - -/*! - * @brief This internal API is used to read the calibrated data from the sensor. - */ -static int8_t get_calib_data(struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t coeff_array[BME680_COEFF_SIZE] = { 0 }; - uint8_t temp_var = 0; /* Temporary variable */ - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - rslt = bme680_get_regs(BME680_COEFF_ADDR1, coeff_array, BME680_COEFF_ADDR1_LEN, dev); - /* Append the second half in the same array */ - if (rslt == BME680_OK) - rslt = bme680_get_regs(BME680_COEFF_ADDR2, &coeff_array[BME680_COEFF_ADDR1_LEN] - , BME680_COEFF_ADDR2_LEN, dev); - - /* Temperature related coefficients */ - dev->calib.par_t1 = (uint16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_T1_MSB_REG], - coeff_array[BME680_T1_LSB_REG])); - dev->calib.par_t2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_T2_MSB_REG], - coeff_array[BME680_T2_LSB_REG])); - dev->calib.par_t3 = (int8_t) (coeff_array[BME680_T3_REG]); - - /* Pressure related coefficients */ - dev->calib.par_p1 = (uint16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P1_MSB_REG], - coeff_array[BME680_P1_LSB_REG])); - dev->calib.par_p2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P2_MSB_REG], - coeff_array[BME680_P2_LSB_REG])); - dev->calib.par_p3 = (int8_t) coeff_array[BME680_P3_REG]; - dev->calib.par_p4 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P4_MSB_REG], - coeff_array[BME680_P4_LSB_REG])); - dev->calib.par_p5 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P5_MSB_REG], - coeff_array[BME680_P5_LSB_REG])); - dev->calib.par_p6 = (int8_t) (coeff_array[BME680_P6_REG]); - dev->calib.par_p7 = (int8_t) (coeff_array[BME680_P7_REG]); - dev->calib.par_p8 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P8_MSB_REG], - coeff_array[BME680_P8_LSB_REG])); - dev->calib.par_p9 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_P9_MSB_REG], - coeff_array[BME680_P9_LSB_REG])); - dev->calib.par_p10 = (uint8_t) (coeff_array[BME680_P10_REG]); - - /* Humidity related coefficients */ - dev->calib.par_h1 = (uint16_t) (((uint16_t) coeff_array[BME680_H1_MSB_REG] << BME680_HUM_REG_SHIFT_VAL) - | (coeff_array[BME680_H1_LSB_REG] & BME680_BIT_H1_DATA_MSK)); - dev->calib.par_h2 = (uint16_t) (((uint16_t) coeff_array[BME680_H2_MSB_REG] << BME680_HUM_REG_SHIFT_VAL) - | ((coeff_array[BME680_H2_LSB_REG]) >> BME680_HUM_REG_SHIFT_VAL)); - dev->calib.par_h3 = (int8_t) coeff_array[BME680_H3_REG]; - dev->calib.par_h4 = (int8_t) coeff_array[BME680_H4_REG]; - dev->calib.par_h5 = (int8_t) coeff_array[BME680_H5_REG]; - dev->calib.par_h6 = (uint8_t) coeff_array[BME680_H6_REG]; - dev->calib.par_h7 = (int8_t) coeff_array[BME680_H7_REG]; - - /* Gas heater related coefficients */ - dev->calib.par_gh1 = (int8_t) coeff_array[BME680_GH1_REG]; - dev->calib.par_gh2 = (int16_t) (BME680_CONCAT_BYTES(coeff_array[BME680_GH2_MSB_REG], - coeff_array[BME680_GH2_LSB_REG])); - dev->calib.par_gh3 = (int8_t) coeff_array[BME680_GH3_REG]; - - /* Other coefficients */ - if (rslt == BME680_OK) { - rslt = bme680_get_regs(BME680_ADDR_RES_HEAT_RANGE_ADDR, &temp_var, 1, dev); - - dev->calib.res_heat_range = ((temp_var & BME680_RHRANGE_MSK) / 16); - if (rslt == BME680_OK) { - rslt = bme680_get_regs(BME680_ADDR_RES_HEAT_VAL_ADDR, &temp_var, 1, dev); - - dev->calib.res_heat_val = (int8_t) temp_var; - if (rslt == BME680_OK) - rslt = bme680_get_regs(BME680_ADDR_RANGE_SW_ERR_ADDR, &temp_var, 1, dev); - } - } - dev->calib.range_sw_err = ((int8_t) temp_var & (int8_t) BME680_RSERROR_MSK) / 16; - } - - return rslt; -} - -/*! - * @brief This internal API is used to set the gas configuration of the sensor. - */ -static int8_t set_gas_config(struct bme680_dev *dev) -{ - int8_t rslt; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - - uint8_t reg_addr[2] = {0}; - uint8_t reg_data[2] = {0}; - - if (dev->power_mode == BME680_FORCED_MODE) { - reg_addr[0] = BME680_RES_HEAT0_ADDR; - reg_data[0] = calc_heater_res(dev->gas_sett.heatr_temp, dev); - reg_addr[1] = BME680_GAS_WAIT0_ADDR; - reg_data[1] = calc_heater_dur(dev->gas_sett.heatr_dur); - dev->gas_sett.nb_conv = 0; - } else { - rslt = BME680_W_DEFINE_PWR_MODE; - } - if (rslt == BME680_OK) - rslt = bme680_set_regs(reg_addr, reg_data, 2, dev); - } - - return rslt; -} - -/*! - * @brief This internal API is used to get the gas configuration of the sensor. - * @note heatr_temp and heatr_dur values are currently register data - * and not the actual values set - */ -static int8_t get_gas_config(struct bme680_dev *dev) -{ - int8_t rslt; - /* starting address of the register array for burst read*/ - uint8_t reg_addr1 = BME680_ADDR_SENS_CONF_START; - uint8_t reg_addr2 = BME680_ADDR_GAS_CONF_START; - uint8_t reg_data = 0; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if (BME680_SPI_INTF == dev->intf) { - /* Memory page switch the SPI address*/ - rslt = set_mem_page(reg_addr1, dev); - } - - if (rslt == BME680_OK) { - rslt = bme680_get_regs(reg_addr1, ®_data, 1, dev); - if (rslt == BME680_OK) { - dev->gas_sett.heatr_temp = reg_data; - rslt = bme680_get_regs(reg_addr2, ®_data, 1, dev); - if (rslt == BME680_OK) { - /* Heating duration register value */ - dev->gas_sett.heatr_dur = reg_data; - } - } - } - } - - return rslt; -} - -#ifndef BME680_FLOAT_POINT_COMPENSATION - -/*! - * @brief This internal API is used to calculate the temperature value. - */ -static int16_t calc_temperature(uint32_t temp_adc, struct bme680_dev *dev) -{ - int64_t var1; - int64_t var2; - int64_t var3; - int16_t calc_temp; - - var1 = ((int32_t) temp_adc >> 3) - ((int32_t) dev->calib.par_t1 << 1); - var2 = (var1 * (int32_t) dev->calib.par_t2) >> 11; - var3 = ((var1 >> 1) * (var1 >> 1)) >> 12; - var3 = ((var3) * ((int32_t) dev->calib.par_t3 << 4)) >> 14; - dev->calib.t_fine = (int32_t) (var2 + var3); - calc_temp = (int16_t) (((dev->calib.t_fine * 5) + 128) >> 8); - - return calc_temp; -} - -/*! - * @brief This internal API is used to calculate the pressure value. - */ -static uint32_t calc_pressure(uint32_t pres_adc, const struct bme680_dev *dev) -{ - int32_t var1; - int32_t var2; - int32_t var3; - int32_t pressure_comp; - - var1 = (((int32_t)dev->calib.t_fine) >> 1) - 64000; - var2 = ((((var1 >> 2) * (var1 >> 2)) >> 11) * - (int32_t)dev->calib.par_p6) >> 2; - var2 = var2 + ((var1 * (int32_t)dev->calib.par_p5) << 1); - var2 = (var2 >> 2) + ((int32_t)dev->calib.par_p4 << 16); - var1 = (((((var1 >> 2) * (var1 >> 2)) >> 13) * - ((int32_t)dev->calib.par_p3 << 5)) >> 3) + - (((int32_t)dev->calib.par_p2 * var1) >> 1); - var1 = var1 >> 18; - var1 = ((32768 + var1) * (int32_t)dev->calib.par_p1) >> 15; - pressure_comp = 1048576 - pres_adc; - pressure_comp = (int32_t)((pressure_comp - (var2 >> 12)) * ((uint32_t)3125)); - if (pressure_comp >= BME680_MAX_OVERFLOW_VAL) - pressure_comp = ((pressure_comp / var1) << 1); - else - pressure_comp = ((pressure_comp << 1) / var1); - var1 = ((int32_t)dev->calib.par_p9 * (int32_t)(((pressure_comp >> 3) * - (pressure_comp >> 3)) >> 13)) >> 12; - var2 = ((int32_t)(pressure_comp >> 2) * - (int32_t)dev->calib.par_p8) >> 13; - var3 = ((int32_t)(pressure_comp >> 8) * (int32_t)(pressure_comp >> 8) * - (int32_t)(pressure_comp >> 8) * - (int32_t)dev->calib.par_p10) >> 17; - - pressure_comp = (int32_t)(pressure_comp) + ((var1 + var2 + var3 + - ((int32_t)dev->calib.par_p7 << 7)) >> 4); - - return (uint32_t)pressure_comp; - -} - -/*! - * @brief This internal API is used to calculate the humidity value. - */ -static uint32_t calc_humidity(uint16_t hum_adc, const struct bme680_dev *dev) -{ - int32_t var1; - int32_t var2; - int32_t var3; - int32_t var4; - int32_t var5; - int32_t var6; - int32_t temp_scaled; - int32_t calc_hum; - - temp_scaled = (((int32_t) dev->calib.t_fine * 5) + 128) >> 8; - var1 = (int32_t) (hum_adc - ((int32_t) ((int32_t) dev->calib.par_h1 * 16))) - - (((temp_scaled * (int32_t) dev->calib.par_h3) / ((int32_t) 100)) >> 1); - var2 = ((int32_t) dev->calib.par_h2 - * (((temp_scaled * (int32_t) dev->calib.par_h4) / ((int32_t) 100)) - + (((temp_scaled * ((temp_scaled * (int32_t) dev->calib.par_h5) / ((int32_t) 100))) >> 6) - / ((int32_t) 100)) + (int32_t) (1 << 14))) >> 10; - var3 = var1 * var2; - var4 = (int32_t) dev->calib.par_h6 << 7; - var4 = ((var4) + ((temp_scaled * (int32_t) dev->calib.par_h7) / ((int32_t) 100))) >> 4; - var5 = ((var3 >> 14) * (var3 >> 14)) >> 10; - var6 = (var4 * var5) >> 1; - calc_hum = (((var3 + var6) >> 10) * ((int32_t) 1000)) >> 12; - - if (calc_hum > 100000) /* Cap at 100%rH */ - calc_hum = 100000; - else if (calc_hum < 0) - calc_hum = 0; - - return (uint32_t) calc_hum; -} - -/*! - * @brief This internal API is used to calculate the Gas Resistance value. - */ -static uint32_t calc_gas_resistance(uint16_t gas_res_adc, uint8_t gas_range, const struct bme680_dev *dev) -{ - int64_t var1; - uint64_t var2; - int64_t var3; - uint32_t calc_gas_res; - /**Look up table 1 for the possible gas range values */ - uint32_t lookupTable1[16] = { UINT32_C(2147483647), UINT32_C(2147483647), UINT32_C(2147483647), UINT32_C(2147483647), - UINT32_C(2147483647), UINT32_C(2126008810), UINT32_C(2147483647), UINT32_C(2130303777), - UINT32_C(2147483647), UINT32_C(2147483647), UINT32_C(2143188679), UINT32_C(2136746228), - UINT32_C(2147483647), UINT32_C(2126008810), UINT32_C(2147483647), UINT32_C(2147483647) }; - /**Look up table 2 for the possible gas range values */ - uint32_t lookupTable2[16] = { UINT32_C(4096000000), UINT32_C(2048000000), UINT32_C(1024000000), UINT32_C(512000000), - UINT32_C(255744255), UINT32_C(127110228), UINT32_C(64000000), UINT32_C(32258064), UINT32_C(16016016), - UINT32_C(8000000), UINT32_C(4000000), UINT32_C(2000000), UINT32_C(1000000), UINT32_C(500000), - UINT32_C(250000), UINT32_C(125000) }; - - var1 = (int64_t) ((1340 + (5 * (int64_t) dev->calib.range_sw_err)) * - ((int64_t) lookupTable1[gas_range])) >> 16; - var2 = (((int64_t) ((int64_t) gas_res_adc << 15) - (int64_t) (16777216)) + var1); - var3 = (((int64_t) lookupTable2[gas_range] * (int64_t) var1) >> 9); - calc_gas_res = (uint32_t) ((var3 + ((int64_t) var2 >> 1)) / (int64_t) var2); - - return calc_gas_res; -} - -/*! - * @brief This internal API is used to calculate the Heat Resistance value. - */ -static uint8_t calc_heater_res(uint16_t temp, const struct bme680_dev *dev) -{ - uint8_t heatr_res; - int32_t var1; - int32_t var2; - int32_t var3; - int32_t var4; - int32_t var5; - int32_t heatr_res_x100; - - if (temp > 400) /* Cap temperature */ - temp = 400; - - var1 = (((int32_t) dev->amb_temp * dev->calib.par_gh3) / 1000) * 256; - var2 = (dev->calib.par_gh1 + 784) * (((((dev->calib.par_gh2 + 154009) * temp * 5) / 100) + 3276800) / 10); - var3 = var1 + (var2 / 2); - var4 = (var3 / (dev->calib.res_heat_range + 4)); - var5 = (131 * dev->calib.res_heat_val) + 65536; - heatr_res_x100 = (int32_t) (((var4 / var5) - 250) * 34); - heatr_res = (uint8_t) ((heatr_res_x100 + 50) / 100); - - return heatr_res; -} - -#else - - -/*! - * @brief This internal API is used to calculate the - * temperature value in float format - */ -static float calc_temperature(uint32_t temp_adc, struct bme680_dev *dev) -{ - float var1 = 0; - float var2 = 0; - float calc_temp = 0; - - /* calculate var1 data */ - var1 = ((((float)temp_adc / 16384.0f) - ((float)dev->calib.par_t1 / 1024.0f)) - * ((float)dev->calib.par_t2)); - - /* calculate var2 data */ - var2 = (((((float)temp_adc / 131072.0f) - ((float)dev->calib.par_t1 / 8192.0f)) * - (((float)temp_adc / 131072.0f) - ((float)dev->calib.par_t1 / 8192.0f))) * - ((float)dev->calib.par_t3 * 16.0f)); - - /* t_fine value*/ - dev->calib.t_fine = (var1 + var2); - - /* compensated temperature data*/ - calc_temp = ((dev->calib.t_fine) / 5120.0f); - - return calc_temp; -} - -/*! - * @brief This internal API is used to calculate the - * pressure value in float format - */ -static float calc_pressure(uint32_t pres_adc, const struct bme680_dev *dev) -{ - float var1 = 0; - float var2 = 0; - float var3 = 0; - float calc_pres = 0; - - var1 = (((float)dev->calib.t_fine / 2.0f) - 64000.0f); - var2 = var1 * var1 * (((float)dev->calib.par_p6) / (131072.0f)); - var2 = var2 + (var1 * ((float)dev->calib.par_p5) * 2.0f); - var2 = (var2 / 4.0f) + (((float)dev->calib.par_p4) * 65536.0f); - var1 = (((((float)dev->calib.par_p3 * var1 * var1) / 16384.0f) - + ((float)dev->calib.par_p2 * var1)) / 524288.0f); - var1 = ((1.0f + (var1 / 32768.0f)) * ((float)dev->calib.par_p1)); - calc_pres = (1048576.0f - ((float)pres_adc)); - - /* Avoid exception caused by division by zero */ - if ((int)var1 != 0) { - calc_pres = (((calc_pres - (var2 / 4096.0f)) * 6250.0f) / var1); - var1 = (((float)dev->calib.par_p9) * calc_pres * calc_pres) / 2147483648.0f; - var2 = calc_pres * (((float)dev->calib.par_p8) / 32768.0f); - var3 = ((calc_pres / 256.0f) * (calc_pres / 256.0f) * (calc_pres / 256.0f) - * (dev->calib.par_p10 / 131072.0f)); - calc_pres = (calc_pres + (var1 + var2 + var3 + ((float)dev->calib.par_p7 * 128.0f)) / 16.0f); - } else { - calc_pres = 0; - } - - return calc_pres; -} - -/*! - * @brief This internal API is used to calculate the - * humidity value in float format - */ -static float calc_humidity(uint16_t hum_adc, const struct bme680_dev *dev) -{ - float calc_hum = 0; - float var1 = 0; - float var2 = 0; - float var3 = 0; - float var4 = 0; - float temp_comp; - - /* compensated temperature data*/ - temp_comp = ((dev->calib.t_fine) / 5120.0f); - - var1 = (float)((float)hum_adc) - (((float)dev->calib.par_h1 * 16.0f) + (((float)dev->calib.par_h3 / 2.0f) - * temp_comp)); - - var2 = var1 * ((float)(((float) dev->calib.par_h2 / 262144.0f) * (1.0f + (((float)dev->calib.par_h4 / 16384.0f) - * temp_comp) + (((float)dev->calib.par_h5 / 1048576.0f) * temp_comp * temp_comp)))); - - var3 = (float) dev->calib.par_h6 / 16384.0f; - - var4 = (float) dev->calib.par_h7 / 2097152.0f; - - calc_hum = var2 + ((var3 + (var4 * temp_comp)) * var2 * var2); - - if (calc_hum > 100.0f) - calc_hum = 100.0f; - else if (calc_hum < 0.0f) - calc_hum = 0.0f; - - return calc_hum; -} - -/*! - * @brief This internal API is used to calculate the - * gas resistance value in float format - */ -static float calc_gas_resistance(uint16_t gas_res_adc, uint8_t gas_range, const struct bme680_dev *dev) -{ - float calc_gas_res; - float var1 = 0; - float var2 = 0; - float var3 = 0; - - const float lookup_k1_range[16] = { - 0.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, -0.8, - 0.0, 0.0, -0.2, -0.5, 0.0, -1.0, 0.0, 0.0}; - const float lookup_k2_range[16] = { - 0.0, 0.0, 0.0, 0.0, 0.1, 0.7, 0.0, -0.8, - -0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; - - var1 = (1340.0f + (5.0f * dev->calib.range_sw_err)); - var2 = (var1) * (1.0f + lookup_k1_range[gas_range]/100.0f); - var3 = 1.0f + (lookup_k2_range[gas_range]/100.0f); - - calc_gas_res = 1.0f / (float)(var3 * (0.000000125f) * (float)(1 << gas_range) * (((((float)gas_res_adc) - - 512.0f)/var2) + 1.0f)); - - return calc_gas_res; -} - -/*! - * @brief This internal API is used to calculate the - * heater resistance value in float format - */ -static float calc_heater_res(uint16_t temp, const struct bme680_dev *dev) -{ - float var1 = 0; - float var2 = 0; - float var3 = 0; - float var4 = 0; - float var5 = 0; - float res_heat = 0; - - if (temp > 400) /* Cap temperature */ - temp = 400; - - var1 = (((float)dev->calib.par_gh1 / (16.0f)) + 49.0f); - var2 = ((((float)dev->calib.par_gh2 / (32768.0f)) * (0.0005f)) + 0.00235f); - var3 = ((float)dev->calib.par_gh3 / (1024.0f)); - var4 = (var1 * (1.0f + (var2 * (float)temp))); - var5 = (var4 + (var3 * (float)dev->amb_temp)); - res_heat = (uint8_t)(3.4f * ((var5 * (4 / (4 + (float)dev->calib.res_heat_range)) * - (1/(1 + ((float) dev->calib.res_heat_val * 0.002f)))) - 25)); - - return res_heat; -} - -#endif - -/*! - * @brief This internal API is used to calculate the Heat duration value. - */ -static uint8_t calc_heater_dur(uint16_t dur) -{ - uint8_t factor = 0; - uint8_t durval; - - if (dur >= 0xfc0) { - durval = 0xff; /* Max duration*/ - } else { - while (dur > 0x3F) { - dur = dur / 4; - factor += 1; - } - durval = (uint8_t) (dur + (factor * 64)); - } - - return durval; -} - -/*! - * @brief This internal API is used to calculate the field data of sensor. - */ -static int8_t read_field_data(struct bme680_field_data *data, struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t buff[BME680_FIELD_LENGTH] = { 0 }; - uint8_t gas_range; - uint32_t adc_temp; - uint32_t adc_pres; - uint16_t adc_hum; - uint16_t adc_gas_res; - uint8_t tries = 10; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - do { - if (rslt == BME680_OK) { - rslt = bme680_get_regs(((uint8_t) (BME680_FIELD0_ADDR)), buff, (uint16_t) BME680_FIELD_LENGTH, - dev); - - data->status = buff[0] & BME680_NEW_DATA_MSK; - data->gas_index = buff[0] & BME680_GAS_INDEX_MSK; - data->meas_index = buff[1]; - - /* read the raw data from the sensor */ - adc_pres = (uint32_t) (((uint32_t) buff[2] * 4096) | ((uint32_t) buff[3] * 16) - | ((uint32_t) buff[4] / 16)); - adc_temp = (uint32_t) (((uint32_t) buff[5] * 4096) | ((uint32_t) buff[6] * 16) - | ((uint32_t) buff[7] / 16)); - adc_hum = (uint16_t) (((uint32_t) buff[8] * 256) | (uint32_t) buff[9]); - adc_gas_res = (uint16_t) ((uint32_t) buff[13] * 4 | (((uint32_t) buff[14]) / 64)); - gas_range = buff[14] & BME680_GAS_RANGE_MSK; - - data->status |= buff[14] & BME680_GASM_VALID_MSK; - data->status |= buff[14] & BME680_HEAT_STAB_MSK; - - if (data->status & BME680_NEW_DATA_MSK) { - data->temperature = calc_temperature(adc_temp, dev); - data->pressure = calc_pressure(adc_pres, dev); - data->humidity = calc_humidity(adc_hum, dev); - data->gas_resistance = calc_gas_resistance(adc_gas_res, gas_range, dev); - break; - } - /* Delay to poll the data */ - dev->delay_ms(BME680_POLL_PERIOD_MS); - } - tries--; - } while (tries); - - if (!tries) - rslt = BME680_W_NO_NEW_DATA; - - return rslt; -} - -/*! - * @brief This internal API is used to set the memory page based on register address. - */ -static int8_t set_mem_page(uint8_t reg_addr, struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t reg; - uint8_t mem_page; - - /* Check for null pointers in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - if (reg_addr > 0x7f) - mem_page = BME680_MEM_PAGE1; - else - mem_page = BME680_MEM_PAGE0; - - if (mem_page != dev->mem_page) { - dev->mem_page = mem_page; - - dev->com_rslt = dev->read(dev->dev_id, BME680_MEM_PAGE_ADDR | BME680_SPI_RD_MSK, ®, 1); - if (dev->com_rslt != 0) - rslt = BME680_E_COM_FAIL; - - if (rslt == BME680_OK) { - reg = reg & (~BME680_MEM_PAGE_MSK); - reg = reg | (dev->mem_page & BME680_MEM_PAGE_MSK); - - dev->com_rslt = dev->write(dev->dev_id, BME680_MEM_PAGE_ADDR & BME680_SPI_WR_MSK, - ®, 1); - if (dev->com_rslt != 0) - rslt = BME680_E_COM_FAIL; - } - } - } - - return rslt; -} - -/*! - * @brief This internal API is used to get the memory page based on register address. - */ -static int8_t get_mem_page(struct bme680_dev *dev) -{ - int8_t rslt; - uint8_t reg; - - /* Check for null pointer in the device structure*/ - rslt = null_ptr_check(dev); - if (rslt == BME680_OK) { - dev->com_rslt = dev->read(dev->dev_id, BME680_MEM_PAGE_ADDR | BME680_SPI_RD_MSK, ®, 1); - if (dev->com_rslt != 0) - rslt = BME680_E_COM_FAIL; - else - dev->mem_page = reg & BME680_MEM_PAGE_MSK; - } - - return rslt; -} - -/*! - * @brief This internal API is used to validate the boundary - * conditions. - */ -static int8_t boundary_check(uint8_t *value, uint8_t min, uint8_t max, struct bme680_dev *dev) -{ - int8_t rslt = BME680_OK; - - if (value != NULL) { - /* Check if value is below minimum value */ - if (*value < min) { - /* Auto correct the invalid value to minimum value */ - *value = min; - dev->info_msg |= BME680_I_MIN_CORRECTION; - } - /* Check if value is above maximum value */ - if (*value > max) { - /* Auto correct the invalid value to maximum value */ - *value = max; - dev->info_msg |= BME680_I_MAX_CORRECTION; - } - } else { - rslt = BME680_E_NULL_PTR; - } - - return rslt; -} - -/*! - * @brief This internal API is used to validate the device structure pointer for - * null conditions. - */ -static int8_t null_ptr_check(const struct bme680_dev *dev) -{ - int8_t rslt; - - if ((dev == NULL) || (dev->read == NULL) || (dev->write == NULL) || (dev->delay_ms == NULL)) { - /* Device structure pointer is not valid */ - rslt = BME680_E_NULL_PTR; - } else { - /* Device structure is fine */ - rslt = BME680_OK; - } - - return rslt; -} diff --git a/lib/Bosch-BSEC/src/bme680/bme680.h b/lib/Bosch-BSEC/src/bme680/bme680.h deleted file mode 100644 index 7c59be0f..00000000 --- a/lib/Bosch-BSEC/src/bme680/bme680.h +++ /dev/null @@ -1,225 +0,0 @@ -/** - * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of the copyright holder nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER - * OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - * The information provided is believed to be accurate and reliable. - * The copyright holder assumes no responsibility - * for the consequences of use - * of such information nor for any infringement of patents or - * other rights of third parties which may result from its use. - * No license is granted by implication or otherwise under any patent or - * patent rights of the copyright holder. - * - * @file bme680.h - * @date 19 Jun 2018 - * @version 3.5.9 - * @brief - * - */ -/*! @file bme680.h - @brief Sensor driver for BME680 sensor */ -/*! - * @defgroup BME680 SENSOR API - * @{*/ -#ifndef BME680_H_ -#define BME680_H_ - -/*! CPP guard */ -#ifdef __cplusplus -extern "C" -{ -#endif - -/* Header includes */ -#include "bme680_defs.h" - -/* function prototype declarations */ -/*! - * @brief This API is the entry point. - * It reads the chip-id and calibration data from the sensor. - * - * @param[in,out] dev : Structure instance of bme680_dev - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_init(struct bme680_dev *dev); - -/*! - * @brief This API writes the given data to the register address - * of the sensor. - * - * @param[in] reg_addr : Register address from where the data to be written. - * @param[in] reg_data : Pointer to data buffer which is to be written - * in the sensor. - * @param[in] len : No of bytes of data to write.. - * @param[in] dev : Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_set_regs(const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct bme680_dev *dev); - -/*! - * @brief This API reads the data from the given register address of the sensor. - * - * @param[in] reg_addr : Register address from where the data to be read - * @param[out] reg_data : Pointer to data buffer to store the read data. - * @param[in] len : No of bytes of data to be read. - * @param[in] dev : Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct bme680_dev *dev); - -/*! - * @brief This API performs the soft reset of the sensor. - * - * @param[in] dev : Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. - */ -int8_t bme680_soft_reset(struct bme680_dev *dev); - -/*! - * @brief This API is used to set the power mode of the sensor. - * - * @param[in] dev : Structure instance of bme680_dev - * @note : Pass the value to bme680_dev.power_mode structure variable. - * - * value | mode - * -------------|------------------ - * 0x00 | BME680_SLEEP_MODE - * 0x01 | BME680_FORCED_MODE - * - * * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_set_sensor_mode(struct bme680_dev *dev); - -/*! - * @brief This API is used to get the power mode of the sensor. - * - * @param[in] dev : Structure instance of bme680_dev - * @note : bme680_dev.power_mode structure variable hold the power mode. - * - * value | mode - * ---------|------------------ - * 0x00 | BME680_SLEEP_MODE - * 0x01 | BME680_FORCED_MODE - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_get_sensor_mode(struct bme680_dev *dev); - -/*! - * @brief This API is used to set the profile duration of the sensor. - * - * @param[in] dev : Structure instance of bme680_dev. - * @param[in] duration : Duration of the measurement in ms. - * - * @return Nothing - */ -void bme680_set_profile_dur(uint16_t duration, struct bme680_dev *dev); - -/*! - * @brief This API is used to get the profile duration of the sensor. - * - * @param[in] dev : Structure instance of bme680_dev. - * @param[in] duration : Duration of the measurement in ms. - * - * @return Nothing - */ -void bme680_get_profile_dur(uint16_t *duration, const struct bme680_dev *dev); - -/*! - * @brief This API reads the pressure, temperature and humidity and gas data - * from the sensor, compensates the data and store it in the bme680_data - * structure instance passed by the user. - * - * @param[out] data: Structure instance to hold the data. - * @param[in] dev : Structure instance of bme680_dev. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error - */ -int8_t bme680_get_sensor_data(struct bme680_field_data *data, struct bme680_dev *dev); - -/*! - * @brief This API is used to set the oversampling, filter and T,P,H, gas selection - * settings in the sensor. - * - * @param[in] dev : Structure instance of bme680_dev. - * @param[in] desired_settings : Variable used to select the settings which - * are to be set in the sensor. - * - * Macros | Functionality - *---------------------------------|---------------------------------------------- - * BME680_OST_SEL | To set temperature oversampling. - * BME680_OSP_SEL | To set pressure oversampling. - * BME680_OSH_SEL | To set humidity oversampling. - * BME680_GAS_MEAS_SEL | To set gas measurement setting. - * BME680_FILTER_SEL | To set filter setting. - * BME680_HCNTRL_SEL | To set humidity control setting. - * BME680_RUN_GAS_SEL | To set run gas setting. - * BME680_NBCONV_SEL | To set NB conversion setting. - * BME680_GAS_SENSOR_SEL | To set all gas sensor related settings - * - * @note : Below are the macros to be used by the user for selecting the - * desired settings. User can do OR operation of these macros for configuring - * multiple settings. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. - */ -int8_t bme680_set_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev); - -/*! - * @brief This API is used to get the oversampling, filter and T,P,H, gas selection - * settings in the sensor. - * - * @param[in] dev : Structure instance of bme680_dev. - * @param[in] desired_settings : Variable used to select the settings which - * are to be get from the sensor. - * - * @return Result of API execution status - * @retval zero -> Success / +ve value -> Warning / -ve value -> Error. - */ -int8_t bme680_get_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev); -#ifdef __cplusplus -} -#endif /* End of CPP guard */ -#endif /* BME680_H_ */ -/** @}*/ diff --git a/lib/Bosch-BSEC/src/bme680/bme680_defs.h b/lib/Bosch-BSEC/src/bme680/bme680_defs.h deleted file mode 100644 index 79fd7782..00000000 --- a/lib/Bosch-BSEC/src/bme680/bme680_defs.h +++ /dev/null @@ -1,545 +0,0 @@ -/** - * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of the copyright holder nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER - * OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - * The information provided is believed to be accurate and reliable. - * The copyright holder assumes no responsibility - * for the consequences of use - * of such information nor for any infringement of patents or - * other rights of third parties which may result from its use. - * No license is granted by implication or otherwise under any patent or - * patent rights of the copyright holder. - * - * @file bme680_defs.h - * @date 19 Jun 2018 - * @version 3.5.9 - * @brief - * - */ - -/*! @file bme680_defs.h - @brief Sensor driver for BME680 sensor */ -/*! - * @defgroup BME680 SENSOR API - * @brief - * @{*/ -#ifndef BME680_DEFS_H_ -#define BME680_DEFS_H_ - -/********************************************************/ -/* header includes */ -#ifdef __KERNEL__ -#include -#include -#else -#include -#include -#endif - -/******************************************************************************/ -/*! @name Common macros */ -/******************************************************************************/ - -#if !defined(UINT8_C) && !defined(INT8_C) -#define INT8_C(x) S8_C(x) -#define UINT8_C(x) U8_C(x) -#endif - -#if !defined(UINT16_C) && !defined(INT16_C) -#define INT16_C(x) S16_C(x) -#define UINT16_C(x) U16_C(x) -#endif - -#if !defined(INT32_C) && !defined(UINT32_C) -#define INT32_C(x) S32_C(x) -#define UINT32_C(x) U32_C(x) -#endif - -#if !defined(INT64_C) && !defined(UINT64_C) -#define INT64_C(x) S64_C(x) -#define UINT64_C(x) U64_C(x) -#endif - -/**@}*/ - -/**\name C standard macros */ -#ifndef NULL -#ifdef __cplusplus -#define NULL 0 -#else -#define NULL ((void *) 0) -#endif -#endif - -/** BME680 configuration macros */ -/** Enable or un-comment the macro to provide floating point data output */ -#ifndef BME680_FLOAT_POINT_COMPENSATION -//#define BME680_FLOAT_POINT_COMPENSATION -#endif - -/** BME680 General config */ -#define BME680_POLL_PERIOD_MS UINT8_C(10) - -/** BME680 I2C addresses */ -#define BME680_I2C_ADDR_PRIMARY UINT8_C(0x76) -#define BME680_I2C_ADDR_SECONDARY UINT8_C(0x77) - -/** BME680 unique chip identifier */ -#define BME680_CHIP_ID UINT8_C(0x61) - -/** BME680 coefficients related defines */ -#define BME680_COEFF_SIZE UINT8_C(41) -#define BME680_COEFF_ADDR1_LEN UINT8_C(25) -#define BME680_COEFF_ADDR2_LEN UINT8_C(16) - -/** BME680 field_x related defines */ -#define BME680_FIELD_LENGTH UINT8_C(15) -#define BME680_FIELD_ADDR_OFFSET UINT8_C(17) - -/** Soft reset command */ -#define BME680_SOFT_RESET_CMD UINT8_C(0xb6) - -/** Error code definitions */ -#define BME680_OK INT8_C(0) -/* Errors */ -#define BME680_E_NULL_PTR INT8_C(-1) -#define BME680_E_COM_FAIL INT8_C(-2) -#define BME680_E_DEV_NOT_FOUND INT8_C(-3) -#define BME680_E_INVALID_LENGTH INT8_C(-4) - -/* Warnings */ -#define BME680_W_DEFINE_PWR_MODE INT8_C(1) -#define BME680_W_NO_NEW_DATA INT8_C(2) - -/* Info's */ -#define BME680_I_MIN_CORRECTION UINT8_C(1) -#define BME680_I_MAX_CORRECTION UINT8_C(2) - -/** Register map */ -/** Other coefficient's address */ -#define BME680_ADDR_RES_HEAT_VAL_ADDR UINT8_C(0x00) -#define BME680_ADDR_RES_HEAT_RANGE_ADDR UINT8_C(0x02) -#define BME680_ADDR_RANGE_SW_ERR_ADDR UINT8_C(0x04) -#define BME680_ADDR_SENS_CONF_START UINT8_C(0x5A) -#define BME680_ADDR_GAS_CONF_START UINT8_C(0x64) - -/** Field settings */ -#define BME680_FIELD0_ADDR UINT8_C(0x1d) - -/** Heater settings */ -#define BME680_RES_HEAT0_ADDR UINT8_C(0x5a) -#define BME680_GAS_WAIT0_ADDR UINT8_C(0x64) - -/** Sensor configuration registers */ -#define BME680_CONF_HEAT_CTRL_ADDR UINT8_C(0x70) -#define BME680_CONF_ODR_RUN_GAS_NBC_ADDR UINT8_C(0x71) -#define BME680_CONF_OS_H_ADDR UINT8_C(0x72) -#define BME680_MEM_PAGE_ADDR UINT8_C(0xf3) -#define BME680_CONF_T_P_MODE_ADDR UINT8_C(0x74) -#define BME680_CONF_ODR_FILT_ADDR UINT8_C(0x75) - -/** Coefficient's address */ -#define BME680_COEFF_ADDR1 UINT8_C(0x89) -#define BME680_COEFF_ADDR2 UINT8_C(0xe1) - -/** Chip identifier */ -#define BME680_CHIP_ID_ADDR UINT8_C(0xd0) - -/** Soft reset register */ -#define BME680_SOFT_RESET_ADDR UINT8_C(0xe0) - -/** Heater control settings */ -#define BME680_ENABLE_HEATER UINT8_C(0x00) -#define BME680_DISABLE_HEATER UINT8_C(0x08) - -/** Gas measurement settings */ -#define BME680_DISABLE_GAS_MEAS UINT8_C(0x00) -#define BME680_ENABLE_GAS_MEAS UINT8_C(0x01) - -/** Over-sampling settings */ -#define BME680_OS_NONE UINT8_C(0) -#define BME680_OS_1X UINT8_C(1) -#define BME680_OS_2X UINT8_C(2) -#define BME680_OS_4X UINT8_C(3) -#define BME680_OS_8X UINT8_C(4) -#define BME680_OS_16X UINT8_C(5) - -/** IIR filter settings */ -#define BME680_FILTER_SIZE_0 UINT8_C(0) -#define BME680_FILTER_SIZE_1 UINT8_C(1) -#define BME680_FILTER_SIZE_3 UINT8_C(2) -#define BME680_FILTER_SIZE_7 UINT8_C(3) -#define BME680_FILTER_SIZE_15 UINT8_C(4) -#define BME680_FILTER_SIZE_31 UINT8_C(5) -#define BME680_FILTER_SIZE_63 UINT8_C(6) -#define BME680_FILTER_SIZE_127 UINT8_C(7) - -/** Power mode settings */ -#define BME680_SLEEP_MODE UINT8_C(0) -#define BME680_FORCED_MODE UINT8_C(1) - -/** Delay related macro declaration */ -#define BME680_RESET_PERIOD UINT32_C(10) - -/** SPI memory page settings */ -#define BME680_MEM_PAGE0 UINT8_C(0x10) -#define BME680_MEM_PAGE1 UINT8_C(0x00) - -/** Ambient humidity shift value for compensation */ -#define BME680_HUM_REG_SHIFT_VAL UINT8_C(4) - -/** Run gas enable and disable settings */ -#define BME680_RUN_GAS_DISABLE UINT8_C(0) -#define BME680_RUN_GAS_ENABLE UINT8_C(1) - -/** Buffer length macro declaration */ -#define BME680_TMP_BUFFER_LENGTH UINT8_C(40) -#define BME680_REG_BUFFER_LENGTH UINT8_C(6) -#define BME680_FIELD_DATA_LENGTH UINT8_C(3) -#define BME680_GAS_REG_BUF_LENGTH UINT8_C(20) - -/** Settings selector */ -#define BME680_OST_SEL UINT16_C(1) -#define BME680_OSP_SEL UINT16_C(2) -#define BME680_OSH_SEL UINT16_C(4) -#define BME680_GAS_MEAS_SEL UINT16_C(8) -#define BME680_FILTER_SEL UINT16_C(16) -#define BME680_HCNTRL_SEL UINT16_C(32) -#define BME680_RUN_GAS_SEL UINT16_C(64) -#define BME680_NBCONV_SEL UINT16_C(128) -#define BME680_GAS_SENSOR_SEL (BME680_GAS_MEAS_SEL | BME680_RUN_GAS_SEL | BME680_NBCONV_SEL) - -/** Number of conversion settings*/ -#define BME680_NBCONV_MIN UINT8_C(0) -#define BME680_NBCONV_MAX UINT8_C(10) - -/** Mask definitions */ -#define BME680_GAS_MEAS_MSK UINT8_C(0x30) -#define BME680_NBCONV_MSK UINT8_C(0X0F) -#define BME680_FILTER_MSK UINT8_C(0X1C) -#define BME680_OST_MSK UINT8_C(0XE0) -#define BME680_OSP_MSK UINT8_C(0X1C) -#define BME680_OSH_MSK UINT8_C(0X07) -#define BME680_HCTRL_MSK UINT8_C(0x08) -#define BME680_RUN_GAS_MSK UINT8_C(0x10) -#define BME680_MODE_MSK UINT8_C(0x03) -#define BME680_RHRANGE_MSK UINT8_C(0x30) -#define BME680_RSERROR_MSK UINT8_C(0xf0) -#define BME680_NEW_DATA_MSK UINT8_C(0x80) -#define BME680_GAS_INDEX_MSK UINT8_C(0x0f) -#define BME680_GAS_RANGE_MSK UINT8_C(0x0f) -#define BME680_GASM_VALID_MSK UINT8_C(0x20) -#define BME680_HEAT_STAB_MSK UINT8_C(0x10) -#define BME680_MEM_PAGE_MSK UINT8_C(0x10) -#define BME680_SPI_RD_MSK UINT8_C(0x80) -#define BME680_SPI_WR_MSK UINT8_C(0x7f) -#define BME680_BIT_H1_DATA_MSK UINT8_C(0x0F) - -/** Bit position definitions for sensor settings */ -#define BME680_GAS_MEAS_POS UINT8_C(4) -#define BME680_FILTER_POS UINT8_C(2) -#define BME680_OST_POS UINT8_C(5) -#define BME680_OSP_POS UINT8_C(2) -#define BME680_RUN_GAS_POS UINT8_C(4) - -/** Array Index to Field data mapping for Calibration Data*/ -#define BME680_T2_LSB_REG (1) -#define BME680_T2_MSB_REG (2) -#define BME680_T3_REG (3) -#define BME680_P1_LSB_REG (5) -#define BME680_P1_MSB_REG (6) -#define BME680_P2_LSB_REG (7) -#define BME680_P2_MSB_REG (8) -#define BME680_P3_REG (9) -#define BME680_P4_LSB_REG (11) -#define BME680_P4_MSB_REG (12) -#define BME680_P5_LSB_REG (13) -#define BME680_P5_MSB_REG (14) -#define BME680_P7_REG (15) -#define BME680_P6_REG (16) -#define BME680_P8_LSB_REG (19) -#define BME680_P8_MSB_REG (20) -#define BME680_P9_LSB_REG (21) -#define BME680_P9_MSB_REG (22) -#define BME680_P10_REG (23) -#define BME680_H2_MSB_REG (25) -#define BME680_H2_LSB_REG (26) -#define BME680_H1_LSB_REG (26) -#define BME680_H1_MSB_REG (27) -#define BME680_H3_REG (28) -#define BME680_H4_REG (29) -#define BME680_H5_REG (30) -#define BME680_H6_REG (31) -#define BME680_H7_REG (32) -#define BME680_T1_LSB_REG (33) -#define BME680_T1_MSB_REG (34) -#define BME680_GH2_LSB_REG (35) -#define BME680_GH2_MSB_REG (36) -#define BME680_GH1_REG (37) -#define BME680_GH3_REG (38) - -/** BME680 register buffer index settings*/ -#define BME680_REG_FILTER_INDEX UINT8_C(5) -#define BME680_REG_TEMP_INDEX UINT8_C(4) -#define BME680_REG_PRES_INDEX UINT8_C(4) -#define BME680_REG_HUM_INDEX UINT8_C(2) -#define BME680_REG_NBCONV_INDEX UINT8_C(1) -#define BME680_REG_RUN_GAS_INDEX UINT8_C(1) -#define BME680_REG_HCTRL_INDEX UINT8_C(0) - -/** BME680 pressure calculation macros */ -/*! This max value is used to provide precedence to multiplication or division - * in pressure compensation equation to achieve least loss of precision and - * avoiding overflows. - * i.e Comparing value, BME680_MAX_OVERFLOW_VAL = INT32_C(1 << 30) - */ -#define BME680_MAX_OVERFLOW_VAL INT32_C(0x40000000) - -/** Macro to combine two 8 bit data's to form a 16 bit data */ -#define BME680_CONCAT_BYTES(msb, lsb) (((uint16_t)msb << 8) | (uint16_t)lsb) - -/** Macro to SET and GET BITS of a register */ -#define BME680_SET_BITS(reg_data, bitname, data) \ - ((reg_data & ~(bitname##_MSK)) | \ - ((data << bitname##_POS) & bitname##_MSK)) -#define BME680_GET_BITS(reg_data, bitname) ((reg_data & (bitname##_MSK)) >> \ - (bitname##_POS)) - -/** Macro variant to handle the bitname position if it is zero */ -#define BME680_SET_BITS_POS_0(reg_data, bitname, data) \ - ((reg_data & ~(bitname##_MSK)) | \ - (data & bitname##_MSK)) -#define BME680_GET_BITS_POS_0(reg_data, bitname) (reg_data & (bitname##_MSK)) - -/** Type definitions */ -/*! - * Generic communication function pointer - * @param[in] dev_id: Place holder to store the id of the device structure - * Can be used to store the index of the Chip select or - * I2C address of the device. - * @param[in] reg_addr: Used to select the register the where data needs to - * be read from or written to. - * @param[in/out] reg_data: Data array to read/write - * @param[in] len: Length of the data array - */ -typedef int8_t (*bme680_com_fptr_t)(uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len); - -/*! - * Delay function pointer - * @param[in] period: Time period in milliseconds - */ -typedef void (*bme680_delay_fptr_t)(uint32_t period); - -/*! - * @brief Interface selection Enumerations - */ -enum bme680_intf { - /*! SPI interface */ - BME680_SPI_INTF, - /*! I2C interface */ - BME680_I2C_INTF -}; - -/* structure definitions */ -/*! - * @brief Sensor field data structure - */ -struct bme680_field_data { - /*! Contains new_data, gasm_valid & heat_stab */ - uint8_t status; - /*! The index of the heater profile used */ - uint8_t gas_index; - /*! Measurement index to track order */ - uint8_t meas_index; - -#ifndef BME680_FLOAT_POINT_COMPENSATION - /*! Temperature in degree celsius x100 */ - int16_t temperature; - /*! Pressure in Pascal */ - uint32_t pressure; - /*! Humidity in % relative humidity x1000 */ - uint32_t humidity; - /*! Gas resistance in Ohms */ - uint32_t gas_resistance; -#else - /*! Temperature in degree celsius */ - float temperature; - /*! Pressure in Pascal */ - float pressure; - /*! Humidity in % relative humidity x1000 */ - float humidity; - /*! Gas resistance in Ohms */ - float gas_resistance; - -#endif - -}; - -/*! - * @brief Structure to hold the Calibration data - */ -struct bme680_calib_data { - /*! Variable to store calibrated humidity data */ - uint16_t par_h1; - /*! Variable to store calibrated humidity data */ - uint16_t par_h2; - /*! Variable to store calibrated humidity data */ - int8_t par_h3; - /*! Variable to store calibrated humidity data */ - int8_t par_h4; - /*! Variable to store calibrated humidity data */ - int8_t par_h5; - /*! Variable to store calibrated humidity data */ - uint8_t par_h6; - /*! Variable to store calibrated humidity data */ - int8_t par_h7; - /*! Variable to store calibrated gas data */ - int8_t par_gh1; - /*! Variable to store calibrated gas data */ - int16_t par_gh2; - /*! Variable to store calibrated gas data */ - int8_t par_gh3; - /*! Variable to store calibrated temperature data */ - uint16_t par_t1; - /*! Variable to store calibrated temperature data */ - int16_t par_t2; - /*! Variable to store calibrated temperature data */ - int8_t par_t3; - /*! Variable to store calibrated pressure data */ - uint16_t par_p1; - /*! Variable to store calibrated pressure data */ - int16_t par_p2; - /*! Variable to store calibrated pressure data */ - int8_t par_p3; - /*! Variable to store calibrated pressure data */ - int16_t par_p4; - /*! Variable to store calibrated pressure data */ - int16_t par_p5; - /*! Variable to store calibrated pressure data */ - int8_t par_p6; - /*! Variable to store calibrated pressure data */ - int8_t par_p7; - /*! Variable to store calibrated pressure data */ - int16_t par_p8; - /*! Variable to store calibrated pressure data */ - int16_t par_p9; - /*! Variable to store calibrated pressure data */ - uint8_t par_p10; - -#ifndef BME680_FLOAT_POINT_COMPENSATION - /*! Variable to store t_fine size */ - int32_t t_fine; -#else - /*! Variable to store t_fine size */ - float t_fine; -#endif - /*! Variable to store heater resistance range */ - uint8_t res_heat_range; - /*! Variable to store heater resistance value */ - int8_t res_heat_val; - /*! Variable to store error range */ - int8_t range_sw_err; -}; - -/*! - * @brief BME680 sensor settings structure which comprises of ODR, - * over-sampling and filter settings. - */ -struct bme680_tph_sett { - /*! Humidity oversampling */ - uint8_t os_hum; - /*! Temperature oversampling */ - uint8_t os_temp; - /*! Pressure oversampling */ - uint8_t os_pres; - /*! Filter coefficient */ - uint8_t filter; -}; - -/*! - * @brief BME680 gas sensor which comprises of gas settings - * and status parameters - */ -struct bme680_gas_sett { - /*! Variable to store nb conversion */ - uint8_t nb_conv; - /*! Variable to store heater control */ - uint8_t heatr_ctrl; - /*! Run gas enable value */ - uint8_t run_gas; - /*! Heater temperature value */ - uint16_t heatr_temp; - /*! Duration profile value */ - uint16_t heatr_dur; -}; - -/*! - * @brief BME680 device structure - */ -struct bme680_dev { - /*! Chip Id */ - uint8_t chip_id; - /*! Device Id */ - uint8_t dev_id; - /*! SPI/I2C interface */ - enum bme680_intf intf; - /*! Memory page used */ - uint8_t mem_page; - /*! Ambient temperature in Degree C */ - int8_t amb_temp; - /*! Sensor calibration data */ - struct bme680_calib_data calib; - /*! Sensor settings */ - struct bme680_tph_sett tph_sett; - /*! Gas Sensor settings */ - struct bme680_gas_sett gas_sett; - /*! Sensor power modes */ - uint8_t power_mode; - /*! New sensor fields */ - uint8_t new_fields; - /*! Store the info messages */ - uint8_t info_msg; - /*! Bus read function pointer */ - bme680_com_fptr_t read; - /*! Bus write function pointer */ - bme680_com_fptr_t write; - /*! delay function pointer */ - bme680_delay_fptr_t delay_ms; - /*! Communication function result */ - int8_t com_rslt; -}; - - - -#endif /* BME680_DEFS_H_ */ -/** @}*/ -/** @}*/ diff --git a/lib/Bosch-BSEC/src/bsec.cpp b/lib/Bosch-BSEC/src/bsec.cpp deleted file mode 100644 index cf85d77f..00000000 --- a/lib/Bosch-BSEC/src/bsec.cpp +++ /dev/null @@ -1,498 +0,0 @@ -/** - * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of the copyright holder nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER - * OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - * The information provided is believed to be accurate and reliable. - * The copyright holder assumes no responsibility - * for the consequences of use - * of such information nor for any infringement of patents or - * other rights of third parties which may result from its use. - * No license is granted by implication or otherwise under any patent or - * patent rights of the copyright holder. - * - * @file bsec.cpp - * @date 31 Jan 2018 - * @version 1.0 - * - */ - -#include "bsec.h" - -TwoWire *Bsec::wireObj = NULL; -SPIClass *Bsec::spiObj = NULL; - -/** - * @brief Constructor - */ -Bsec::Bsec() { - nextCall = 0; - version.major = 0; - version.minor = 0; - version.major_bugfix = 0; - version.minor_bugfix = 0; - millisOverflowCounter = 0; - lastTime = 0; - bme680Status = BME680_OK; - outputTimestamp = 0; - _tempOffset = 0.0f; - status = BSEC_OK; - zeroOutputs(); -} - -/** - * @brief Function to initialize the BSEC library and the BME680 sensor - */ -void Bsec::begin(uint8_t devId, enum bme680_intf intf, bme680_com_fptr_t read, - bme680_com_fptr_t write, bme680_delay_fptr_t idleTask) { - _bme680.dev_id = devId; - _bme680.intf = intf; - _bme680.read = read; - _bme680.write = write; - _bme680.delay_ms = idleTask; - _bme680.amb_temp = 25; - _bme680.power_mode = BME680_FORCED_MODE; - - beginCommon(); -} - -/** - * @brief Function to initialize the BSEC library and the BME680 sensor - */ -void Bsec::begin(uint8_t i2cAddr, TwoWire &i2c) { - _bme680.dev_id = i2cAddr; - _bme680.intf = BME680_I2C_INTF; - _bme680.read = Bsec::i2cRead; - _bme680.write = Bsec::i2cWrite; - _bme680.delay_ms = Bsec::delay_ms; - _bme680.amb_temp = 25; - _bme680.power_mode = BME680_FORCED_MODE; - - Bsec::wireObj = &i2c; - Bsec::wireObj->begin(); - - beginCommon(); -} - -/** - * @brief Function to initialize the BSEC library and the BME680 sensor - */ -void Bsec::begin(uint8_t chipSelect, SPIClass &spi) { - _bme680.dev_id = chipSelect; - _bme680.intf = BME680_SPI_INTF; - _bme680.read = Bsec::spiTransfer; - _bme680.write = Bsec::spiTransfer; - _bme680.delay_ms = Bsec::delay_ms; - _bme680.amb_temp = 25; - _bme680.power_mode = BME680_FORCED_MODE; - - pinMode(chipSelect, OUTPUT); - digitalWrite(chipSelect, HIGH); - Bsec::spiObj = &spi; - Bsec::spiObj->begin(); - - beginCommon(); -} - -/** - * @brief Common code for the begin function - */ -void Bsec::beginCommon(void) { - status = bsec_init(); - - getVersion(); - - bme680Status = bme680_init(&_bme680); -} - -/** - * @brief Function that sets the desired sensors and the sample rates - */ -void Bsec::updateSubscription(bsec_virtual_sensor_t sensorList[], - uint8_t nSensors, float sampleRate) { - bsec_sensor_configuration_t virtualSensors[BSEC_NUMBER_OUTPUTS], - sensorSettings[BSEC_MAX_PHYSICAL_SENSOR]; - uint8_t nVirtualSensors = 0, nSensorSettings = BSEC_MAX_PHYSICAL_SENSOR; - - for (uint8_t i = 0; i < nSensors; i++) { - virtualSensors[nVirtualSensors].sensor_id = sensorList[i]; - virtualSensors[nVirtualSensors].sample_rate = sampleRate; - nVirtualSensors++; - } - - status = bsec_update_subscription(virtualSensors, nVirtualSensors, - sensorSettings, &nSensorSettings); - return; -} - -/** - * @brief Callback from the user to trigger reading of data from the BME680, - * process and store outputs - */ -bool Bsec::run(void) { - bool newData = false; - /* Check if the time has arrived to call do_steps() */ - int64_t callTimeMs = getTimeMs(); - - if (callTimeMs >= nextCall) { - - bsec_bme_settings_t bme680Settings; - - int64_t callTimeNs = callTimeMs * INT64_C(1000000); - - status = bsec_sensor_control(callTimeNs, &bme680Settings); - if (status < BSEC_OK) - return false; - - nextCall = - bme680Settings.next_call / INT64_C(1000000); // Convert from ns to ms - - bme680Status = setBme680Config(bme680Settings); - if (bme680Status != BME680_OK) { - return false; - } - - bme680Status = bme680_set_sensor_mode(&_bme680); - if (bme680Status != BME680_OK) { - return false; - } - - /* Wait for measurement to complete */ - uint16_t meas_dur = 0; - - bme680_get_profile_dur(&meas_dur, &_bme680); - delay_ms(meas_dur); - - newData = readProcessData(callTimeNs, bme680Settings); - } - - return newData; -} - -/** - * @brief Function to get the state of the algorithm to save to non-volatile - * memory - */ -void Bsec::getState(uint8_t *state) { - uint8_t workBuffer[BSEC_MAX_STATE_BLOB_SIZE]; - uint32_t n_serialized_state = BSEC_MAX_STATE_BLOB_SIZE; - status = bsec_get_state(0, state, BSEC_MAX_STATE_BLOB_SIZE, workBuffer, - BSEC_MAX_STATE_BLOB_SIZE, &n_serialized_state); -} - -/** - * @brief Function to set the state of the algorithm from non-volatile memory - */ -void Bsec::setState(uint8_t *state) { - uint8_t workBuffer[BSEC_MAX_STATE_BLOB_SIZE]; - - status = bsec_set_state(state, BSEC_MAX_STATE_BLOB_SIZE, workBuffer, - BSEC_MAX_STATE_BLOB_SIZE); -} - -/** - * @brief Function to set the configuration of the algorithm from memory - */ -void Bsec::setConfig(const uint8_t *state) { - uint8_t workBuffer[BSEC_MAX_PROPERTY_BLOB_SIZE]; - - status = bsec_set_configuration(state, BSEC_MAX_PROPERTY_BLOB_SIZE, - workBuffer, sizeof(workBuffer)); -} - -/* Private functions */ - -/** - * @brief Get the version of the BSEC library - */ -void Bsec::getVersion(void) { bsec_get_version(&version); } - -/** - * @brief Read data from the BME680 and process it - */ -bool Bsec::readProcessData(int64_t currTimeNs, - bsec_bme_settings_t bme680Settings) { - bme680Status = bme680_get_sensor_data(&_data, &_bme680); - if (bme680Status != BME680_OK) { - return false; - } - - bsec_input_t inputs[BSEC_MAX_PHYSICAL_SENSOR]; // Temp, Pres, Hum & Gas - uint8_t nInputs = 0, nOutputs = 0; - - if (_data.status & BME680_NEW_DATA_MSK) { - if (bme680Settings.process_data & BSEC_PROCESS_TEMPERATURE) { - inputs[nInputs].sensor_id = BSEC_INPUT_TEMPERATURE; -#ifdef BME680_FLOAT_POINT_COMPENSATION - inputs[nInputs].signal = _data.temperature; -#else - inputs[nInputs].signal = _data.temperature / 100.0f; -#endif - inputs[nInputs].time_stamp = currTimeNs; - nInputs++; - /* Temperature offset from the real temperature due to external heat - * sources */ - inputs[nInputs].sensor_id = BSEC_INPUT_HEATSOURCE; - inputs[nInputs].signal = _tempOffset; - inputs[nInputs].time_stamp = currTimeNs; - nInputs++; - } - if (bme680Settings.process_data & BSEC_PROCESS_HUMIDITY) { - inputs[nInputs].sensor_id = BSEC_INPUT_HUMIDITY; -#ifdef BME680_FLOAT_POINT_COMPENSATION - inputs[nInputs].signal = _data.humidity; -#else - inputs[nInputs].signal = _data.humidity / 1000.0f; -#endif - inputs[nInputs].time_stamp = currTimeNs; - nInputs++; - } - if (bme680Settings.process_data & BSEC_PROCESS_PRESSURE) { - inputs[nInputs].sensor_id = BSEC_INPUT_PRESSURE; - inputs[nInputs].signal = _data.pressure; - inputs[nInputs].time_stamp = currTimeNs; - nInputs++; - } - if (bme680Settings.process_data & BSEC_PROCESS_GAS) { - inputs[nInputs].sensor_id = BSEC_INPUT_GASRESISTOR; - inputs[nInputs].signal = _data.gas_resistance; - inputs[nInputs].time_stamp = currTimeNs; - nInputs++; - } - } - - if (nInputs > 0) { - nOutputs = BSEC_NUMBER_OUTPUTS; - bsec_output_t _outputs[BSEC_NUMBER_OUTPUTS]; - - status = bsec_do_steps(inputs, nInputs, _outputs, &nOutputs); - if (status != BSEC_OK) - return false; - - zeroOutputs(); - - if (nOutputs > 0) { - outputTimestamp = - _outputs[0].time_stamp / 1000000; // Convert from ns to ms - - for (uint8_t i = 0; i < nOutputs; i++) { - switch (_outputs[i].sensor_id) { - case BSEC_OUTPUT_IAQ: - iaqEstimate = _outputs[i].signal; - iaqAccuracy = _outputs[i].accuracy; - break; - case BSEC_OUTPUT_STATIC_IAQ: - staticIaq = _outputs[i].signal; - staticIaqAccuracy = _outputs[i].accuracy; - break; - case BSEC_OUTPUT_CO2_EQUIVALENT: - co2Equivalent = _outputs[i].signal; - co2Accuracy = _outputs[i].accuracy; - break; - case BSEC_OUTPUT_BREATH_VOC_EQUIVALENT: - breathVocEquivalent = _outputs[i].signal; - breathVocAccuracy = _outputs[i].accuracy; - break; - case BSEC_OUTPUT_RAW_TEMPERATURE: - rawTemperature = _outputs[i].signal; - break; - case BSEC_OUTPUT_RAW_PRESSURE: - pressure = _outputs[i].signal; - break; - case BSEC_OUTPUT_RAW_HUMIDITY: - rawHumidity = _outputs[i].signal; - break; - case BSEC_OUTPUT_RAW_GAS: - gasResistance = _outputs[i].signal; - break; - case BSEC_OUTPUT_STABILIZATION_STATUS: - stabStatus = _outputs[i].signal; - break; - case BSEC_OUTPUT_RUN_IN_STATUS: - runInStatus = _outputs[i].signal; - break; - case BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE: - temperature = _outputs[i].signal; - break; - case BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY: - humidity = _outputs[i].signal; - break; - case BSEC_OUTPUT_COMPENSATED_GAS: - compGasValue = _outputs[i].signal; - compGasAccuracy = _outputs[i].accuracy; - break; - case BSEC_OUTPUT_GAS_PERCENTAGE: - gasPercentage = _outputs[i].signal; - gasPercentageAcccuracy = _outputs[i].accuracy; - break; - default: - break; - } - } - return true; - } - } - - return false; -} - -/** - * @brief Set the BME680 sensor's configuration - */ -int8_t Bsec::setBme680Config(bsec_bme_settings_t bme680Settings) { - _bme680.gas_sett.run_gas = bme680Settings.run_gas; - _bme680.tph_sett.os_hum = bme680Settings.humidity_oversampling; - _bme680.tph_sett.os_temp = bme680Settings.temperature_oversampling; - _bme680.tph_sett.os_pres = bme680Settings.pressure_oversampling; - _bme680.gas_sett.heatr_temp = bme680Settings.heater_temperature; - _bme680.gas_sett.heatr_dur = bme680Settings.heating_duration; - uint16_t desired_settings = BME680_OST_SEL | BME680_OSP_SEL | BME680_OSH_SEL | - BME680_FILTER_SEL | BME680_GAS_SENSOR_SEL; - return bme680_set_sensor_settings(desired_settings, &_bme680); -} - -/** - * @brief Function to zero the outputs - */ -void Bsec::zeroOutputs(void) { - temperature = 0.0f; - pressure = 0.0f; - humidity = 0.0f; - gasResistance = 0.0f; - rawTemperature = 0.0f; - rawHumidity = 0.0f; - stabStatus = 0.0f; - runInStatus = 0.0f; - iaqEstimate = 0.0f; - iaqAccuracy = 0; - staticIaq = 0.0f; - staticIaqAccuracy = 0; - co2Equivalent = 0.0f; - co2Accuracy = 0; - breathVocEquivalent = 0.0f; - breathVocAccuracy = 0; - compGasValue = 0.0f; - compGasAccuracy = 0; - gasPercentage = 0.0f; - gasPercentageAcccuracy = 0; -} - -/** - * @brief Function to calculate an int64_t timestamp in milliseconds - */ -int64_t Bsec::getTimeMs(void) { - int64_t timeMs = millis(); - - if (lastTime > timeMs) { // An overflow occured - lastTime = timeMs; - millisOverflowCounter++; - } - - return timeMs + (millisOverflowCounter * 0xFFFFFFFF); -} - -/** - @brief Task that delays for a ms period of time - */ -void Bsec::delay_ms(uint32_t period) { - // Wait for a period amount of ms - // The system may simply idle, sleep or even perform background tasks - delay(period); -} - -/** - @brief Callback function for reading registers over I2C - */ -int8_t Bsec::i2cRead(uint8_t devId, uint8_t regAddr, uint8_t *regData, - uint16_t length) { - uint16_t i; - int8_t rslt = 0; - if (Bsec::wireObj) { - Bsec::wireObj->beginTransmission(devId); - Bsec::wireObj->write(regAddr); - rslt = Bsec::wireObj->endTransmission(); - Bsec::wireObj->requestFrom((int)devId, (int)length); - for (i = 0; (i < length) && Bsec::wireObj->available(); i++) { - regData[i] = Bsec::wireObj->read(); - } - } else { - rslt = -1; - } - return rslt; -} - -/** - * @brief Callback function for writing registers over I2C - */ -int8_t Bsec::i2cWrite(uint8_t devId, uint8_t regAddr, uint8_t *regData, - uint16_t length) { - uint16_t i; - int8_t rslt = 0; - if (Bsec::wireObj) { - Bsec::wireObj->beginTransmission(devId); - Bsec::wireObj->write(regAddr); - for (i = 0; i < length; i++) { - Bsec::wireObj->write(regData[i]); - } - rslt = Bsec::wireObj->endTransmission(); - } else { - rslt = -1; - } - - return rslt; -} - -/** - * @brief Callback function for reading and writing registers over SPI - */ -int8_t Bsec::spiTransfer(uint8_t devId, uint8_t regAddr, uint8_t *regData, - uint16_t length) { - int8_t rslt = 0; - if (Bsec::spiObj) { - Bsec::spiObj->beginTransaction( - SPISettings(4000000, MSBFIRST, SPI_MODE0)); // Can be upto 10MHz - - digitalWrite(devId, LOW); - - Bsec::spiObj->transfer( - regAddr); // Write the register address, ignore the return - for (uint16_t i = 0; i < length; i++) - regData[i] = Bsec::spiObj->transfer(regData[i]); - - digitalWrite(devId, HIGH); - Bsec::spiObj->endTransaction(); - } else { - rslt = -1; - } - - return rslt; - ; -} \ No newline at end of file diff --git a/lib/Bosch-BSEC/src/bsec.h b/lib/Bosch-BSEC/src/bsec.h deleted file mode 100644 index bf2c0a61..00000000 --- a/lib/Bosch-BSEC/src/bsec.h +++ /dev/null @@ -1,230 +0,0 @@ -/** - * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of the copyright holder nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER - * OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - * The information provided is believed to be accurate and reliable. - * The copyright holder assumes no responsibility - * for the consequences of use - * of such information nor for any infringement of patents or - * other rights of third parties which may result from its use. - * No license is granted by implication or otherwise under any patent or - * patent rights of the copyright holder. - * - * @file bsec.h - * @date 31 Jan 2018 - * @version 1.0 - * - */ - -#ifndef BSEC_CLASS_H -#define BSEC_CLASS_H - -/* Includes */ -#include "Arduino.h" -#include "Wire.h" -#include "SPI.h" -#include "inc/bsec_datatypes.h" -#include "inc/bsec_interface.h" -#include "bme680/bme680.h" - -/* BSEC class definition */ -class Bsec -{ -public: - /* Public variables */ - bsec_version_t version; // Stores the version of the BSEC algorithm - int64_t nextCall; // Stores the time when the algorithm has to be called next in ms - int8_t bme680Status; // Placeholder for the BME680 driver's error codes - bsec_library_return_t status; - float iaqEstimate, rawTemperature, pressure, rawHumidity, gasResistance, stabStatus, runInStatus, temperature, humidity, - staticIaq, co2Equivalent, breathVocEquivalent, compGasValue, gasPercentage; - uint8_t iaqAccuracy, staticIaqAccuracy, co2Accuracy, breathVocAccuracy, compGasAccuracy, gasPercentageAcccuracy; - int64_t outputTimestamp; // Timestamp in ms of the output - static TwoWire *wireObj; - static SPIClass *spiObj; - - /* Public APIs */ - /** - * @brief Constructor - */ - Bsec(); - - /** - * @brief Function to initialize the BSEC library and the BME680 sensor - * @param devId : Device identifier parameter for the read/write interface functions - * @param intf : Physical communication interface - * @param read : Pointer to the read function - * @param write : Pointer to the write function - * @param idleTask : Pointer to the idling task - */ - void begin(uint8_t devId, enum bme680_intf intf, bme680_com_fptr_t read, bme680_com_fptr_t write, bme680_delay_fptr_t idleTask); - - /** - * @brief Function to initialize the BSEC library and the BME680 sensor - * @param i2cAddr : I2C address - * @param i2c : Pointer to the TwoWire object - */ - void begin(uint8_t i2cAddr, TwoWire &i2c); - - /** - * @brief Function to initialize the BSEC library and the BME680 sensor - * @param chipSelect : SPI chip select - * @param spi : Pointer to the SPIClass object - */ - void begin(uint8_t chipSelect, SPIClass &spi); - - /** - * @brief Function that sets the desired sensors and the sample rates - * @param sensorList : The list of output sensors - * @param nSensors : Number of outputs requested - * @param sampleRate : The sample rate of requested sensors - */ - void updateSubscription(bsec_virtual_sensor_t sensorList[], uint8_t nSensors, float sampleRate = BSEC_SAMPLE_RATE_ULP); - - /** - * @brief Callback from the user to trigger reading of data from the BME680, process and store outputs - * @return true if there are new outputs. false otherwise - */ - bool run(void); - - /** - * @brief Function to get the state of the algorithm to save to non-volatile memory - * @param state : Pointer to a memory location that contains the state - */ - void getState(uint8_t *state); - - /** - * @brief Function to set the state of the algorithm from non-volatile memory - * @param state : Pointer to a memory location that contains the state - */ - void setState(uint8_t *state); - - /** - * @brief Function to set the configuration of the algorithm from memory - * @param state : Pointer to a memory location that contains the configuration - */ - void setConfig(const uint8_t *config); - - /** - * @brief Function to set the temperature offset - * @param tempOffset : Temperature offset in degree Celsius - */ - void setTemperatureOffset(float tempOffset) - { - _tempOffset = tempOffset; - } - - - /** - * @brief Function to calculate an int64_t timestamp in milliseconds - */ - int64_t getTimeMs(void); - - /** - * @brief Task that delays for a ms period of time - * @param period : Period of time in ms - */ - static void delay_ms(uint32_t period); - - /** - * @brief Callback function for reading registers over I2C - * @param devId : Library agnostic parameter to identify the device to communicate with - * @param regAddr : Register address - * @param regData : Pointer to the array containing the data to be read - * @param length : Length of the array of data - * @return Zero for success, non-zero otherwise - */ - static int8_t i2cRead(uint8_t devId, uint8_t regAddr, uint8_t *regData, uint16_t length); - - /** - * @brief Callback function for writing registers over I2C - * @param devId : Library agnostic parameter to identify the device to communicate with - * @param regAddr : Register address - * @param regData : Pointer to the array containing the data to be written - * @param length : Length of the array of data - * @return Zero for success, non-zero otherwise - */ - static int8_t i2cWrite(uint8_t devId, uint8_t regAddr, uint8_t *regData, uint16_t length); - - /** - * @brief Callback function for reading and writing registers over SPI - * @param devId : Library agnostic parameter to identify the device to communicate with - * @param regAddr : Register address - * @param regData : Pointer to the array containing the data to be read or written - * @param length : Length of the array of data - * @return Zero for success, non-zero otherwise - */ - static int8_t spiTransfer(uint8_t devId, uint8_t regAddr, uint8_t *regData, uint16_t length); - -private: - /* Private variables */ - struct bme680_dev _bme680; - struct bme680_field_data _data; - float _tempOffset; - // Global variables to help create a millisecond timestamp that doesn't overflow every 51 days. - // If it overflows, it will have a negative value. Something that should never happen. - uint32_t millisOverflowCounter; - uint32_t lastTime; - - /* Private APIs */ - /** - * @brief Get the version of the BSEC library - */ - void getVersion(void); - - /** - * @brief Read data from the BME680 and process it - * @param currTimeNs: Current time in ns - * @param bme680Settings: BME680 sensor's settings - * @return true if there are new outputs. false otherwise - */ - bool readProcessData(int64_t currTimeNs, bsec_bme_settings_t bme680Settings); - - /** - * @brief Set the BME680 sensor's configuration - * @param bme680Settings: Settings to configure the BME680 - * @return BME680 return code. BME680_OK for success, failure otherwise - */ - int8_t setBme680Config(bsec_bme_settings_t bme680Settings); - - /** - * @brief Common code for the begin function - */ - void beginCommon(void); - - /** - * @brief Function to zero the outputs - */ - void zeroOutputs(void); -}; - -#endif diff --git a/lib/Bosch-BSEC/src/inc/bsec_datatypes.h b/lib/Bosch-BSEC/src/inc/bsec_datatypes.h deleted file mode 100644 index adc5a031..00000000 --- a/lib/Bosch-BSEC/src/inc/bsec_datatypes.h +++ /dev/null @@ -1,488 +0,0 @@ -/* - * Copyright (C) 2015, 2016, 2017 Robert Bosch. All Rights Reserved. - * - * Disclaimer - * - * Common: - * Bosch Sensortec products are developed for the consumer goods industry. They may only be used - * within the parameters of the respective valid product data sheet. Bosch Sensortec products are - * provided with the express understanding that there is no warranty of fitness for a particular purpose. - * They are not fit for use in life-sustaining, safety or security sensitive systems or any system or device - * that may lead to bodily harm or property damage if the system or device malfunctions. In addition, - * Bosch Sensortec products are not fit for use in products which interact with motor vehicle systems. - * The resale and/or use of products are at the purchasers own risk and his own responsibility. The - * examination of fitness for the intended use is the sole responsibility of the Purchaser. - * - * The purchaser shall indemnify Bosch Sensortec from all third party claims, including any claims for - * incidental, or consequential damages, arising from any product use not covered by the parameters of - * the respective valid product data sheet or not approved by Bosch Sensortec and reimburse Bosch - * Sensortec for all costs in connection with such claims. - * - * The purchaser must monitor the market for the purchased products, particularly with regard to - * product safety and inform Bosch Sensortec without delay of all security relevant incidents. - * - * Engineering Samples are marked with an asterisk (*) or (e). Samples may vary from the valid - * technical specifications of the product series. They are therefore not intended or fit for resale to third - * parties or for use in end products. Their sole purpose is internal client testing. The testing of an - * engineering sample may in no way replace the testing of a product series. Bosch Sensortec - * assumes no liability for the use of engineering samples. By accepting the engineering samples, the - * Purchaser agrees to indemnify Bosch Sensortec from all claims arising from the use of engineering - * samples. - * - * Special: - * This software module (hereinafter called "Software") and any information on application-sheets - * (hereinafter called "Information") is provided free of charge for the sole purpose to support your - * application work. The Software and Information is subject to the following terms and conditions: - * - * The Software is specifically designed for the exclusive use for Bosch Sensortec products by - * personnel who have special experience and training. Do not use this Software if you do not have the - * proper experience or training. - * - * This Software package is provided `` as is `` and without any expressed or implied warranties, - * including without limitation, the implied warranties of merchantability and fitness for a particular - * purpose. - * - * Bosch Sensortec and their representatives and agents deny any liability for the functional impairment - * of this Software in terms of fitness, performance and safety. Bosch Sensortec and their - * representatives and agents shall not be liable for any direct or indirect damages or injury, except as - * otherwise stipulated in mandatory applicable law. - * - * The Information provided is believed to be accurate and reliable. Bosch Sensortec assumes no - * responsibility for the consequences of use of such Information nor for any infringement of patents or - * other rights of third parties which may result from its use. No license is granted by implication or - * otherwise under any patent or patent rights of Bosch. Specifications mentioned in the Information are - * subject to change without notice. - * - * It is not allowed to deliver the source code of the Software to any third party without permission of - * Bosch Sensortec. - * - */ - - /** - * @file bsec_datatypes.h - * - * @brief - * Contains the data types used by BSEC - * - */ - -#ifndef __BSEC_DATATYPES_H__ -#define __BSEC_DATATYPES_H__ - -#ifdef __cplusplus -extern "C" -{ -#endif - -/*! - * @addtogroup bsec_interface BSEC C Interface - * @{*/ - -#ifdef __KERNEL__ -#include -#endif -#include -#include - -#define BSEC_MAX_WORKBUFFER_SIZE (2048) /*!< Maximum size (in bytes) of the work buffer */ -#define BSEC_MAX_PHYSICAL_SENSOR (8) /*!< Number of physical sensors that need allocated space before calling bsec_update_subscription() */ -#define BSEC_MAX_PROPERTY_BLOB_SIZE (454) /*!< Maximum size (in bytes) of the data blobs returned by bsec_get_configuration() */ -#define BSEC_MAX_STATE_BLOB_SIZE (139) /*!< Maximum size (in bytes) of the data blobs returned by bsec_get_state()*/ -#define BSEC_SAMPLE_RATE_DISABLED (65535.0f) /*!< Sample rate of a disabled sensor */ -#define BSEC_SAMPLE_RATE_ULP (0.0033333f) /*!< Sample rate in case of Ultra Low Power Mode */ -#define BSEC_SAMPLE_RATE_LP (0.33333f) /*!< Sample rate in case of Low Power Mode */ -#define BSEC_SAMPLE_RATE_ULP_MEASUREMENT_ON_DEMAND (0.0f) /*!< Input value used to trigger an extra measurment (ULP plus) */ - -#define BSEC_PROCESS_PRESSURE (1 << (BSEC_INPUT_PRESSURE-1)) /*!< process_data bitfield constant for pressure @sa bsec_bme_settings_t */ -#define BSEC_PROCESS_TEMPERATURE (1 << (BSEC_INPUT_TEMPERATURE-1)) /*!< process_data bitfield constant for temperature @sa bsec_bme_settings_t */ -#define BSEC_PROCESS_HUMIDITY (1 << (BSEC_INPUT_HUMIDITY-1)) /*!< process_data bitfield constant for humidity @sa bsec_bme_settings_t */ -#define BSEC_PROCESS_GAS (1 << (BSEC_INPUT_GASRESISTOR-1)) /*!< process_data bitfield constant for gas sensor @sa bsec_bme_settings_t */ -#define BSEC_NUMBER_OUTPUTS (14) /*!< Number of outputs, depending on solution */ -#define BSEC_OUTPUT_INCLUDED (1210863) /*!< bitfield that indicates which outputs are included in the solution */ - -/*! - * @brief Enumeration for input (physical) sensors. - * - * Used to populate bsec_input_t::sensor_id. It is also used in bsec_sensor_configuration_t::sensor_id structs - * returned in the parameter required_sensor_settings of bsec_update_subscription(). - * - * @sa bsec_sensor_configuration_t @sa bsec_input_t - */ -typedef enum -{ - /** - * @brief Pressure sensor output of BMExxx [Pa] - */ - BSEC_INPUT_PRESSURE = 1, - - /** - * @brief Humidity sensor output of BMExxx [%] - * - * @note Relative humidity strongly depends on the temperature (it is measured at). It may require a conversion to - * the temperature outside of the device. - * - * @sa bsec_virtual_sensor_t - */ - BSEC_INPUT_HUMIDITY = 2, - - /** - * @brief Temperature sensor output of BMExxx [degrees Celsius] - * - * @note The BME680 is factory trimmed, thus the temperature sensor of the BME680 is very accurate. - * The temperature value is a very local measurement value and can be influenced by external heat sources. - * - * @sa bsec_virtual_sensor_t - */ - BSEC_INPUT_TEMPERATURE = 3, - - /** - * @brief Gas sensor resistance output of BMExxx [Ohm] - * - * The resistance value changes due to varying VOC concentrations (the higher the concentration of reducing VOCs, - * the lower the resistance and vice versa). - */ - BSEC_INPUT_GASRESISTOR = 4, /*!< */ - - /** - * @brief Additional input for device heat compensation - * - * IAQ solution: The value is subtracted from ::BSEC_INPUT_TEMPERATURE to compute - * ::BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE. - * - * ALL solution: Generic heat source 1 - * - * @sa bsec_virtual_sensor_t - */ - BSEC_INPUT_HEATSOURCE = 14, - - /** - * @brief Additional input for device heat compensation 8 - * - * Generic heat source 8 - */ - - - /** - * @brief Additional input that disables baseline tracker - * - * 0 - Normal - * 1 - Event 1 - * 2 - Event 2 - */ - BSEC_INPUT_DISABLE_BASELINE_TRACKER = 23, - -} bsec_physical_sensor_t; - -/*! - * @brief Enumeration for output (virtual) sensors - * - * Used to populate bsec_output_t::sensor_id. It is also used in bsec_sensor_configuration_t::sensor_id structs - * passed in the parameter requested_virtual_sensors of bsec_update_subscription(). - * - * @sa bsec_sensor_configuration_t @sa bsec_output_t - */ -typedef enum -{ - /** - * @brief Indoor-air-quality estimate [0-500] - * - * Indoor-air-quality (IAQ) gives an indication of the relative change in ambient TVOCs detected by BME680. - * - * @note The IAQ scale ranges from 0 (clean air) to 500 (heavily polluted air). During operation, algorithms - * automatically calibrate and adapt themselves to the typical environments where the sensor is operated - * (e.g., home, workplace, inside a car, etc.).This automatic background calibration ensures that users experience - * consistent IAQ performance. The calibration process considers the recent measurement history (typ. up to four - * days) to ensure that IAQ=25 corresponds to typical good air and IAQ=250 indicates typical polluted air. - */ - BSEC_OUTPUT_IAQ = 1, - BSEC_OUTPUT_STATIC_IAQ = 2, /*!< Unscaled indoor-air-quality estimate */ - BSEC_OUTPUT_CO2_EQUIVALENT = 3, /*!< co2 equivalent estimate [ppm] */ - BSEC_OUTPUT_BREATH_VOC_EQUIVALENT = 4, /*!< breath VOC concentration estimate [ppm] */ - - /** - * @brief Temperature sensor signal [degrees Celsius] - * - * Temperature directly measured by BME680 in degree Celsius. - * - * @note This value is cross-influenced by the sensor heating and device specific heating. - */ - BSEC_OUTPUT_RAW_TEMPERATURE = 6, - - /** - * @brief Pressure sensor signal [Pa] - * - * Pressure directly measured by the BME680 in Pa. - */ - BSEC_OUTPUT_RAW_PRESSURE = 7, - - /** - * @brief Relative humidity sensor signal [%] - * - * Relative humidity directly measured by the BME680 in %. - * - * @note This value is cross-influenced by the sensor heating and device specific heating. - */ - BSEC_OUTPUT_RAW_HUMIDITY = 8, - - /** - * @brief Gas sensor signal [Ohm] - * - * Gas resistance measured directly by the BME680 in Ohm.The resistance value changes due to varying VOC - * concentrations (the higher the concentration of reducing VOCs, the lower the resistance and vice versa). - */ - BSEC_OUTPUT_RAW_GAS = 9, - - /** - * @brief Gas sensor stabilization status [boolean] - * - * Indicates initial stabilization status of the gas sensor element: stabilization is ongoing (0) or stabilization - * is finished (1). - */ - BSEC_OUTPUT_STABILIZATION_STATUS = 12, - - /** - * @brief Gas sensor run-in status [boolean] - * - * Indicates power-on stabilization status of the gas sensor element: stabilization is ongoing (0) or stabilization - * is finished (1). - */ - BSEC_OUTPUT_RUN_IN_STATUS = 13, - - /** - * @brief Sensor heat compensated temperature [degrees Celsius] - * - * Temperature measured by BME680 which is compensated for the influence of sensor (heater) in degree Celsius. - * The self heating introduced by the heater is depending on the sensor operation mode and the sensor supply voltage. - * - * - * @note IAQ solution: In addition, the temperature output can be compensated by an user defined value - * (::BSEC_INPUT_HEATSOURCE in degrees Celsius), which represents the device specific self-heating. - * - * Thus, the value is calculated as follows: - * * IAQ solution: ```BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE = ::BSEC_INPUT_TEMPERATURE - function(sensor operation mode, sensor supply voltage) - ::BSEC_INPUT_HEATSOURCE``` - * * other solutions: ```::BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE = ::BSEC_INPUT_TEMPERATURE - function(sensor operation mode, sensor supply voltage)``` - * - * The self-heating in operation mode BSEC_SAMPLE_RATE_ULP is negligible. - * The self-heating in operation mode BSEC_SAMPLE_RATE_LP is supported for 1.8V by default (no config file required). If the BME680 sensor supply voltage is 3.3V, the IoT_LP_3_3V.config shall be used. - */ - BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE = 14, - - /** - * @brief Sensor heat compensated humidity [%] - * - * Relative measured by BME680 which is compensated for the influence of sensor (heater) in %. - * - * It converts the ::BSEC_INPUT_HUMIDITY from temperature ::BSEC_INPUT_TEMPERATURE to temperature - * ::BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE. - * - * @note IAQ solution: If ::BSEC_INPUT_HEATSOURCE is used for device specific temperature compensation, it will be - * effective for ::BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY too. - */ - BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY = 15, - - BSEC_OUTPUT_COMPENSATED_GAS = 18, /*!< Reserved internal debug output */ - BSEC_OUTPUT_GAS_PERCENTAGE = 21 /*!< percentage of min and max filtered gas value [%] */ -} bsec_virtual_sensor_t; - -/*! - * @brief Enumeration for function return codes - */ -typedef enum -{ - BSEC_OK = 0, /*!< Function execution successful */ - BSEC_E_DOSTEPS_INVALIDINPUT = -1, /*!< Input (physical) sensor id passed to bsec_do_steps() is not in the valid range or not valid for requested virtual sensor */ - BSEC_E_DOSTEPS_VALUELIMITS = -2, /*!< Value of input (physical) sensor signal passed to bsec_do_steps() is not in the valid range */ - BSEC_E_DOSTEPS_DUPLICATEINPUT = -6, /*!< Duplicate input (physical) sensor ids passed as input to bsec_do_steps() */ - BSEC_I_DOSTEPS_NOOUTPUTSRETURNABLE = 2, /*!< No memory allocated to hold return values from bsec_do_steps(), i.e., n_outputs == 0 */ - BSEC_W_DOSTEPS_EXCESSOUTPUTS = 3, /*!< Not enough memory allocated to hold return values from bsec_do_steps(), i.e., n_outputs < maximum number of requested output (virtual) sensors */ - BSEC_W_DOSTEPS_TSINTRADIFFOUTOFRANGE = 4, /*!< Duplicate timestamps passed to bsec_do_steps() */ - BSEC_E_SU_WRONGDATARATE = -10, /*!< The sample_rate of the requested output (virtual) sensor passed to bsec_update_subscription() is zero */ - BSEC_E_SU_SAMPLERATELIMITS = -12, /*!< The sample_rate of the requested output (virtual) sensor passed to bsec_update_subscription() does not match with the sampling rate allowed for that sensor */ - BSEC_E_SU_DUPLICATEGATE = -13, /*!< Duplicate output (virtual) sensor ids requested through bsec_update_subscription() */ - BSEC_E_SU_INVALIDSAMPLERATE = -14, /*!< The sample_rate of the requested output (virtual) sensor passed to bsec_update_subscription() does not fall within the global minimum and maximum sampling rates */ - BSEC_E_SU_GATECOUNTEXCEEDSARRAY = -15, /*!< Not enough memory allocated to hold returned input (physical) sensor data from bsec_update_subscription(), i.e., n_required_sensor_settings < #BSEC_MAX_PHYSICAL_SENSOR */ - BSEC_E_SU_SAMPLINTVLINTEGERMULT = -16, /*!< The sample_rate of the requested output (virtual) sensor passed to bsec_update_subscription() is not correct */ - BSEC_E_SU_MULTGASSAMPLINTVL = -17, /*!< The sample_rate of the requested output (virtual), which requires the gas sensor, is not equal to the sample_rate that the gas sensor is being operated */ - BSEC_E_SU_HIGHHEATERONDURATION = -18, /*!< The duration of one measurement is longer than the requested sampling interval */ - BSEC_W_SU_UNKNOWNOUTPUTGATE = 10, /*!< Output (virtual) sensor id passed to bsec_update_subscription() is not in the valid range; e.g., n_requested_virtual_sensors > actual number of output (virtual) sensors requested */ - BSEC_W_SU_MODINNOULP = 11, /*!< ULP plus can not be requested in non-ulp mode */ /*MOD_ONLY*/ - BSEC_I_SU_SUBSCRIBEDOUTPUTGATES = 12, /*!< No output (virtual) sensor data were requested via bsec_update_subscription() */ - BSEC_E_PARSE_SECTIONEXCEEDSWORKBUFFER = -32, /*!< n_work_buffer_size passed to bsec_set_[configuration/state]() not sufficient */ - BSEC_E_CONFIG_FAIL = -33, /*!< Configuration failed */ - BSEC_E_CONFIG_VERSIONMISMATCH = -34, /*!< Version encoded in serialized_[settings/state] passed to bsec_set_[configuration/state]() does not match with current version */ - BSEC_E_CONFIG_FEATUREMISMATCH = -35, /*!< Enabled features encoded in serialized_[settings/state] passed to bsec_set_[configuration/state]() does not match with current library implementation */ - BSEC_E_CONFIG_CRCMISMATCH = -36, /*!< serialized_[settings/state] passed to bsec_set_[configuration/state]() is corrupted */ - BSEC_E_CONFIG_EMPTY = -37, /*!< n_serialized_[settings/state] passed to bsec_set_[configuration/state]() is to short to be valid */ - BSEC_E_CONFIG_INSUFFICIENTWORKBUFFER = -38, /*!< Provided work_buffer is not large enough to hold the desired string */ - BSEC_E_CONFIG_INVALIDSTRINGSIZE = -40, /*!< String size encoded in configuration/state strings passed to bsec_set_[configuration/state]() does not match with the actual string size n_serialized_[settings/state] passed to these functions */ - BSEC_E_CONFIG_INSUFFICIENTBUFFER = -41, /*!< String buffer insufficient to hold serialized data from BSEC library */ - BSEC_E_SET_INVALIDCHANNELIDENTIFIER = -100, /*!< Internal error code, size of work buffer in setConfig must be set to BSEC_MAX_WORKBUFFER_SIZE */ - BSEC_E_SET_INVALIDLENGTH = -104, /*!< Internal error code */ - BSEC_W_SC_CALL_TIMING_VIOLATION = 100, /*!< Difference between actual and defined sampling intervals of bsec_sensor_control() greater than allowed */ - BSEC_W_SC_MODEXCEEDULPTIMELIMIT = 101, /*!< ULP plus is not allowed because an ULP measurement just took or will take place */ /*MOD_ONLY*/ - BSEC_W_SC_MODINSUFFICIENTWAITTIME = 102 /*!< ULP plus is not allowed because not sufficient time passed since last ULP plus */ /*MOD_ONLY*/ -} bsec_library_return_t; - -/*! - * @brief Structure containing the version information - * - * Please note that configuration and state strings are coded to a specific version and will not be accepted by other - * versions of BSEC. - * - */ -typedef struct -{ - uint8_t major; /**< @brief Major version */ - uint8_t minor; /**< @brief Minor version */ - uint8_t major_bugfix; /**< @brief Major bug fix version */ - uint8_t minor_bugfix; /**< @brief Minor bug fix version */ -} bsec_version_t; - -/*! - * @brief Structure describing an input sample to the library - * - * Each input sample is provided to BSEC as an element in a struct array of this type. Timestamps must be provided - * in nanosecond resolution. Moreover, duplicate timestamps for subsequent samples are not allowed and will results in - * an error code being returned from bsec_do_steps(). - * - * The meaning unit of the signal field are determined by the bsec_input_t::sensor_id field content. Possible - * bsec_input_t::sensor_id values and and their meaning are described in ::bsec_physical_sensor_t. - * - * @sa bsec_physical_sensor_t - * - */ -typedef struct -{ - /** - * @brief Time stamp in nanosecond resolution [ns] - * - * Timestamps must be provided as non-repeating and increasing values. They can have their 0-points at system start or - * at a defined wall-clock time (e.g., 01-Jan-1970 00:00:00) - */ - int64_t time_stamp; - float signal; /*!< @brief Signal sample in the unit defined for the respective sensor_id @sa bsec_physical_sensor_t */ - uint8_t signal_dimensions; /*!< @brief Signal dimensions (reserved for future use, shall be set to 1) */ - uint8_t sensor_id; /*!< @brief Identifier of physical sensor @sa bsec_physical_sensor_t */ -} bsec_input_t; - -/*! - * @brief Structure describing an output sample of the library - * - * Each output sample is returned from BSEC by populating the element of a struct array of this type. The contents of - * the signal field is defined by the supplied bsec_output_t::sensor_id. Possible output - * bsec_output_t::sensor_id values are defined in ::bsec_virtual_sensor_t. - * - * @sa bsec_virtual_sensor_t - */ -typedef struct -{ - int64_t time_stamp; /*!< @brief Time stamp in nanosecond resolution as provided as input [ns] */ - float signal; /*!< @brief Signal sample in the unit defined for the respective bsec_output_t::sensor_id @sa bsec_virtual_sensor_t */ - uint8_t signal_dimensions; /*!< @brief Signal dimensions (reserved for future use, shall be set to 1) */ - uint8_t sensor_id; /*!< @brief Identifier of virtual sensor @sa bsec_virtual_sensor_t */ - - /** - * @brief Accuracy status 0-3 - * - * Some virtual sensors provide a value in the accuracy field. If this is the case, the meaning of the field is as - * follows: - * - * | Name | Value | Accuracy description | - * |----------------------------|-------|-------------------------------------------------------------| - * | UNRELIABLE | 0 | Sensor data is unreliable, the sensor must be calibrated | - * | LOW_ACCURACY | 1 | Low accuracy, sensor should be calibrated | - * | MEDIUM_ACCURACY | 2 | Medium accuracy, sensor calibration may improve performance | - * | HIGH_ACCURACY | 3 | High accuracy | - * - * For example: - * - * - Ambient temperature accuracy is derived from change in the temperature in 1 minute. - * - * | Virtual sensor | Value | Accuracy description | - * |--------------------- |-------|------------------------------------------------------------------------------| - * | Ambient temperature | 0 | The difference in ambient temperature is greater than 4 degree in one minute | - * | | 1 | The difference in ambient temperature is less than 4 degree in one minute | - * | | 2 | The difference in ambient temperature is less than 3 degree in one minute | - * | | 3 | The difference in ambient temperature is less than 2 degree in one minute | - * - * - IAQ accuracy indicator will notify the user when she/he should initiate a calibration process. Calibration is - * performed automatically in the background if the sensor is exposed to clean and polluted air for approximately - * 30 minutes each. - * - * | Virtual sensor | Value | Accuracy description | - * |----------------------------|-------|-----------------------------------------------------------------| - * | IAQ | 0 | The sensor is not yet stabilized or in a run-in status | - * | | 1 | Calibration required | - * | | 2 | Calibration on-going | - * | | 3 | Calibration is done, now IAQ estimate achieves best performance | - */ - uint8_t accuracy; -} bsec_output_t; - -/*! - * @brief Structure describing sample rate of physical/virtual sensors - * - * This structure is used together with bsec_update_subscription() to enable BSEC outputs and to retrieve information - * about the sample rates used for BSEC inputs. - */ -typedef struct -{ - /** - * @brief Sample rate of the virtual or physical sensor in Hertz [Hz] - * - * Only supported sample rates are allowed. - */ - float sample_rate; - - /** - * @brief Identifier of the virtual or physical sensor - * - * The meaning of this field changes depending on whether the structs are as the requested_virtual_sensors argument - * to bsec_update_subscription() or as the required_sensor_settings argument. - * - * | bsec_update_subscription() argument | sensor_id field interpretation | - * |-------------------------------------|--------------------------------| - * | requested_virtual_sensors | ::bsec_virtual_sensor_t | - * | required_sensor_settings | ::bsec_physical_sensor_t | - * - * @sa bsec_physical_sensor_t - * @sa bsec_virtual_sensor_t - */ - uint8_t sensor_id; -} bsec_sensor_configuration_t; - -/*! - * @brief Structure returned by bsec_sensor_control() to configure BMExxx sensor - * - * This structure contains settings that must be used to configure the BMExxx to perform a forced-mode measurement. - * A measurement should only be executed if bsec_bme_settings_t::trigger_measurement is 1. If so, the oversampling - * settings for temperature, humidity, and pressure should be set to the provided settings provided in - * bsec_bme_settings_t::temperature_oversampling, bsec_bme_settings_t::humidity_oversampling, and - * bsec_bme_settings_t::pressure_oversampling, respectively. - * - * In case of bsec_bme_settings_t::run_gas = 1, the gas sensor must be enabled with the provided - * bsec_bme_settings_t::heater_temperature and bsec_bme_settings_t::heating_duration settings. - */ -typedef struct -{ - int64_t next_call; /*!< @brief Time stamp of the next call of the sensor_control*/ - uint32_t process_data; /*!< @brief Bit field describing which data is to be passed to bsec_do_steps() @sa BSEC_PROCESS_* */ - uint16_t heater_temperature; /*!< @brief Heating temperature [degrees Celsius] */ - uint16_t heating_duration; /*!< @brief Heating duration [ms] */ - uint8_t run_gas; /*!< @brief Enable gas measurements [0/1] */ - uint8_t pressure_oversampling; /*!< @brief Pressure oversampling settings [0-5] */ - uint8_t temperature_oversampling; /*!< @brief Temperature oversampling settings [0-5] */ - uint8_t humidity_oversampling; /*!< @brief Humidity oversampling settings [0-5] */ - uint8_t trigger_measurement; /*!< @brief Trigger a forced measurement with these settings now [0/1] */ -} bsec_bme_settings_t; - -/* internal defines and backward compatibility */ -#define BSEC_STRUCT_NAME Bsec /*!< Internal struct name */ - -/*@}*/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/lib/Bosch-BSEC/src/inc/bsec_interface.h b/lib/Bosch-BSEC/src/inc/bsec_interface.h deleted file mode 100644 index ef68eb15..00000000 --- a/lib/Bosch-BSEC/src/inc/bsec_interface.h +++ /dev/null @@ -1,564 +0,0 @@ -/* - * Copyright (C) 2015, 2016, 2017 Robert Bosch. All Rights Reserved. - * - * Disclaimer - * - * Common: - * Bosch Sensortec products are developed for the consumer goods industry. They may only be used - * within the parameters of the respective valid product data sheet. Bosch Sensortec products are - * provided with the express understanding that there is no warranty of fitness for a particular purpose. - * They are not fit for use in life-sustaining, safety or security sensitive systems or any system or device - * that may lead to bodily harm or property damage if the system or device malfunctions. In addition, - * Bosch Sensortec products are not fit for use in products which interact with motor vehicle systems. - * The resale and/or use of products are at the purchasers own risk and his own responsibility. The - * examination of fitness for the intended use is the sole responsibility of the Purchaser. - * - * The purchaser shall indemnify Bosch Sensortec from all third party claims, including any claims for - * incidental, or consequential damages, arising from any product use not covered by the parameters of - * the respective valid product data sheet or not approved by Bosch Sensortec and reimburse Bosch - * Sensortec for all costs in connection with such claims. - * - * The purchaser must monitor the market for the purchased products, particularly with regard to - * product safety and inform Bosch Sensortec without delay of all security relevant incidents. - * - * Engineering Samples are marked with an asterisk (*) or (e). Samples may vary from the valid - * technical specifications of the product series. They are therefore not intended or fit for resale to third - * parties or for use in end products. Their sole purpose is internal client testing. The testing of an - * engineering sample may in no way replace the testing of a product series. Bosch Sensortec - * assumes no liability for the use of engineering samples. By accepting the engineering samples, the - * Purchaser agrees to indemnify Bosch Sensortec from all claims arising from the use of engineering - * samples. - * - * Special: - * This software module (hereinafter called "Software") and any information on application-sheets - * (hereinafter called "Information") is provided free of charge for the sole purpose to support your - * application work. The Software and Information is subject to the following terms and conditions: - * - * The Software is specifically designed for the exclusive use for Bosch Sensortec products by - * personnel who have special experience and training. Do not use this Software if you do not have the - * proper experience or training. - * - * This Software package is provided `` as is `` and without any expressed or implied warranties, - * including without limitation, the implied warranties of merchantability and fitness for a particular - * purpose. - * - * Bosch Sensortec and their representatives and agents deny any liability for the functional impairment - * of this Software in terms of fitness, performance and safety. Bosch Sensortec and their - * representatives and agents shall not be liable for any direct or indirect damages or injury, except as - * otherwise stipulated in mandatory applicable law. - * - * The Information provided is believed to be accurate and reliable. Bosch Sensortec assumes no - * responsibility for the consequences of use of such Information nor for any infringement of patents or - * other rights of third parties which may result from its use. No license is granted by implication or - * otherwise under any patent or patent rights of Bosch. Specifications mentioned in the Information are - * subject to change without notice. - * - * It is not allowed to deliver the source code of the Software to any third party without permission of - * Bosch Sensortec. - * - */ - /*! - * - * @file bsec_interface.h - * - * @brief - * Contains the API for BSEC - * - */ - - -#ifndef __BSEC_INTERFACE_H__ -#define __BSEC_INTERFACE_H__ - -#include "bsec_datatypes.h" - -#ifdef __cplusplus - extern "C" { -#endif - - - /*! @addtogroup bsec_interface BSEC C Interface - * @brief Interfaces of BSEC signal processing library - * - * ### Interface usage - * - * The following provides a short overview on the typical operation sequence for BSEC. - * - * - Initialization of the library - * - * | Steps | Function | - * |---------------------------------------------------------------------|--------------------------| - * | Initialization of library | bsec_init() | - * | Update configuration settings (optional) | bsec_set_configuration() | - * | Restore the state of the library (optional) | bsec_set_state() | - * - * - * - The following function is called to enable output signals and define their sampling rate / operation mode. - * - * | Steps | Function | - * |---------------------------------------------|----------------------------| - * | Enable library outputs with specified mode | bsec_update_subscription() | - * - * - * - This table describes the main processing loop. - * - * | Steps | Function | - * |-------------------------------------------|----------------------------------| - * | Retrieve sensor settings to be used | bsec_sensor_control() | - * | Configure sensor and trigger measurement | See BME680 API and example codes | - * | Read results from sensor | See BME680 API and example codes | - * | Perform signal processing | bsec_do_steps() | - * - * - * - Before shutting down the system, the current state of BSEC can be retrieved and can then be used during - * re-initialization to continue processing. - * - * | Steps | Function | - * |----------------------------------------|-------------------| - * | To retrieve the current library state | bsec_get_state() | - * - * - * - * ### Configuration and state - * - * Values of variables belonging to a BSEC instance are divided into two groups: - * - Values **not updated by processing** of signals belong to the **configuration group**. If available, BSEC can be - * configured before use with a customer specific configuration string. - * - Values **updated during processing** are member of the **state group**. Saving and restoring of the state of BSEC - * is necessary to maintain previously estimated sensor models and baseline information which is important for best - * performance of the gas sensor outputs. - * - * @note BSEC library consists of adaptive algorithms which models the gas sensor which improves its performance over - * the time. These will be lost if library is initialized due to system reset. In order to avoid this situation - * library state shall be stored in non volatile memory so that it can be loaded after system reset. - * - * - * @{ - */ - - -/*! - * @brief Return the version information of BSEC library - * - * @param [out] bsec_version_p pointer to struct which is to be populated with the version information - * - * @return Zero if successful, otherwise an error code - * - * See also: bsec_version_t - * - \code{.c} - // Example // - bsec_version_t version; - bsec_get_version(&version); - printf("BSEC version: %d.%d.%d.%d",version.major, version.minor, version.major_bugfix, version.minor_bugfix); - - \endcode -*/ - -bsec_library_return_t bsec_get_version(bsec_version_t * bsec_version_p); - - -/*! - * @brief Initialize the library - * - * Initialization and reset of BSEC is performed by calling bsec_init(). Calling this function sets up the relation - * among all internal modules, initializes run-time dependent library states and resets the configuration and state - * of all BSEC signal processing modules to defaults. - * - * Before any further use, the library must be initialized. This ensure that all memory and states are in defined - * conditions prior to processing any data. - * - * @return Zero if successful, otherwise an error code - * - \code{.c} - - // Initialize BSEC library before further use - bsec_init(); - - \endcode -*/ - -bsec_library_return_t bsec_init(void); - -/*! - * @brief Subscribe to library virtual sensors outputs - * - * Use bsec_update_subscription() to instruct BSEC which of the processed output signals are requested at which sample rates. - * See ::bsec_virtual_sensor_t for available library outputs. - * - * Based on the requested virtual sensors outputs, BSEC will provide information about the required physical sensor input signals - * (see ::bsec_physical_sensor_t) with corresponding sample rates. This information is purely informational as bsec_sensor_control() - * will ensure the sensor is operated in the required manner. To disable a virtual sensor, set the sample rate to BSEC_SAMPLE_RATE_DISABLED. - * - * The subscription update using bsec_update_subscription() is apart from the signal processing one of the the most - * important functions. It allows to enable the desired library outputs. The function determines which physical input - * sensor signals are required at which sample rate to produce the virtual output sensor signals requested by the user. - * When this function returns with success, the requested outputs are called subscribed. A very important feature is the - * retaining of already subscribed outputs. Further outputs can be requested or disabled both individually and - * group-wise in addition to already subscribed outputs without changing them unless a change of already subscribed - * outputs is requested. - * - * @note The state of the library concerning the subscribed outputs cannot be retained among reboots. - * - * The interface of bsec_update_subscription() requires the usage of arrays of sensor configuration structures. - * Such a structure has the fields sensor identifier and sample rate. These fields have the properties: - * - Output signals of virtual sensors must be requested using unique identifiers (Member of ::bsec_virtual_sensor_t) - * - Different sets of identifiers are available for inputs of physical sensors and outputs of virtual sensors - * - Identifiers are unique values defined by the library, not from external - * - Sample rates must be provided as value of - * - An allowed sample rate for continuously sampled signals - * - 65535.0f (BSEC_SAMPLE_RATE_DISABLED) to turn off outputs and identify disabled inputs - * - * @note The same sensor identifiers are also used within the functions bsec_do_steps(). - * - * The usage principles of bsec_update_subscription() are: - * - Differential updates (i.e., only asking for outputs that the user would like to change) is supported. - * - Invalid requests of outputs are ignored. Also if one of the requested outputs is unavailable, all the requests - * are ignored. At the same time, a warning is returned. - * - To disable BSEC, all outputs shall be turned off. Only enabled (subscribed) outputs have to be disabled while - * already disabled outputs do not have to be disabled explicitly. - * - * @param[in] requested_virtual_sensors Pointer to array of requested virtual sensor (output) configurations for the library - * @param[in] n_requested_virtual_sensors Number of virtual sensor structs pointed by requested_virtual_sensors - * @param[out] required_sensor_settings Pointer to array of required physical sensor configurations for the library - * @param[in,out] n_required_sensor_settings [in] Size of allocated required_sensor_settings array, [out] number of sensor configurations returned - * - * @return Zero when successful, otherwise an error code - * - * @sa bsec_sensor_configuration_t - * @sa bsec_physical_sensor_t - * @sa bsec_virtual_sensor_t - * - \code{.c} - // Example // - - // Change 3 virtual sensors (switch IAQ and raw temperature -> on / pressure -> off) - bsec_sensor_configuration_t requested_virtual_sensors[3]; - uint8_t n_requested_virtual_sensors = 3; - - requested_virtual_sensors[0].sensor_id = BSEC_OUTPUT_IAQ; - requested_virtual_sensors[0].sample_rate = BSEC_SAMPLE_RATE_ULP; - requested_virtual_sensors[1].sensor_id = BSEC_OUTPUT_RAW_TEMPERATURE; - requested_virtual_sensors[1].sample_rate = BSEC_SAMPLE_RATE_ULP; - requested_virtual_sensors[2].sensor_id = BSEC_OUTPUT_RAW_PRESSURE; - requested_virtual_sensors[2].sample_rate = BSEC_SAMPLE_RATE_DISABLED; - - // Allocate a struct for the returned physical sensor settings - bsec_sensor_configuration_t required_sensor_settings[BSEC_MAX_PHYSICAL_SENSOR]; - uint8_t n_required_sensor_settings = BSEC_MAX_PHYSICAL_SENSOR; - - // Call bsec_update_subscription() to enable/disable the requested virtual sensors - bsec_update_subscription(requested_virtual_sensors, n_requested_virtual_sensors, required_sensor_settings, &n_required_sensor_settings); - \endcode - * - */ -bsec_library_return_t bsec_update_subscription(const bsec_sensor_configuration_t * const requested_virtual_sensors, - const uint8_t n_requested_virtual_sensors, bsec_sensor_configuration_t * required_sensor_settings, - uint8_t * n_required_sensor_settings); - - -/*! - * @brief Main signal processing function of BSEC - * - * - * Processing of the input signals and returning of output samples is performed by bsec_do_steps(). - * - The samples of all library inputs must be passed with unique identifiers representing the input signals from - * physical sensors where the order of these inputs can be chosen arbitrary. However, all input have to be provided - * within the same time period as they are read. A sequential provision to the library might result in undefined - * behavior. - * - The samples of all library outputs are returned with unique identifiers corresponding to the output signals of - * virtual sensors where the order of the returned outputs may be arbitrary. - * - The samples of all input as well as output signals of physical as well as virtual sensors use the same - * representation in memory with the following fields: - * - Sensor identifier: - * - For inputs: required to identify the input signal from a physical sensor - * - For output: overwritten by bsec_do_steps() to identify the returned signal from a virtual sensor - * - Time stamp of the sample - * - * Calling bsec_do_steps() requires the samples of the input signals to be provided along with their time stamp when - * they are recorded and only when they are acquired. Repetition of samples with the same time stamp are ignored and - * result in a warning. Repetition of values of samples which are not acquired anew by a sensor result in deviations - * of the computed output signals. Concerning the returned output samples, an important feature is, that a value is - * returned for an output only when a new occurrence has been computed. A sample of an output signal is returned only - * once. - * - * - * @param[in] inputs Array of input data samples. Each array element represents a sample of a different physical sensor. - * @param[in] n_inputs Number of passed input data structs. - * @param[out] outputs Array of output data samples. Each array element represents a sample of a different virtual sensor. - * @param[in,out] n_outputs [in] Number of allocated output structs, [out] number of outputs returned - * - * @return Zero when successful, otherwise an error code - * - - \code{.c} - // Example // - - // Allocate input and output memory - bsec_input_t input[3]; - uint8_t n_input = 3; - bsec_output_t output[2]; - uint8_t n_output=2; - - bsec_library_return_t status; - - // Populate the input structs, assuming the we have timestamp (ts), - // gas sensor resistance (R), temperature (T), and humidity (rH) available - // as input variables - input[0].sensor_id = BSEC_INPUT_GASRESISTOR; - input[0].signal = R; - input[0].time_stamp= ts; - input[1].sensor_id = BSEC_INPUT_TEMPERATURE; - input[1].signal = T; - input[1].time_stamp= ts; - input[2].sensor_id = BSEC_INPUT_HUMIDITY; - input[2].signal = rH; - input[2].time_stamp= ts; - - - // Invoke main processing BSEC function - status = bsec_do_steps( input, n_input, output, &n_output ); - - // Iterate through the BSEC output data, if the call succeeded - if(status == BSEC_OK) - { - for(int i = 0; i < n_output; i++) - { - switch(output[i].sensor_id) - { - case BSEC_OUTPUT_IAQ: - // Retrieve the IAQ results from output[i].signal - // and do something with the data - break; - case BSEC_OUTPUT_AMBIENT_TEMPERATURE: - // Retrieve the ambient temperature results from output[i].signal - // and do something with the data - break; - - } - } - } - - \endcode - */ - -bsec_library_return_t bsec_do_steps(const bsec_input_t * const inputs, const uint8_t n_inputs, bsec_output_t * outputs, uint8_t * n_outputs); - - -/*! - * @brief Reset a particular virtual sensor output - * - * This function allows specific virtual sensor outputs to be reset. The meaning of "reset" depends on the specific - * output. In case of the IAQ output, reset means zeroing the output to the current ambient conditions. - * - * @param[in] sensor_id Virtual sensor to be reset - * - * @return Zero when successful, otherwise an error code - * - * - \code{.c} - // Example // - bsec_reset_output(BSEC_OUTPUT_IAQ); - - \endcode - */ - -bsec_library_return_t bsec_reset_output(uint8_t sensor_id); - - -/*! - * @brief Update algorithm configuration parameters - * - * BSEC uses a default configuration for the modules and common settings. The initial configuration can be customized - * by bsec_set_configuration(). This is an optional step. - * - * @note A work buffer with sufficient size is required and has to be provided by the function caller to decompose - * the serialization and apply it to the library and its modules. Please use #BSEC_MAX_PROPERTY_BLOB_SIZE for allotting - * the required size. - * - * @param[in] serialized_settings Settings serialized to a binary blob - * @param[in] n_serialized_settings Size of the settings blob - * @param[in,out] work_buffer Work buffer used to parse the blob - * @param[in] n_work_buffer_size Length of the work buffer available for parsing the blob - * - * @return Zero when successful, otherwise an error code - * - \code{.c} - // Example // - - // Allocate variables - uint8_t serialized_settings[BSEC_MAX_PROPERTY_BLOB_SIZE]; - uint32_t n_serialized_settings_max = BSEC_MAX_PROPERTY_BLOB_SIZE; - uint8_t work_buffer[BSEC_MAX_PROPERTY_BLOB_SIZE]; - uint32_t n_work_buffer = BSEC_MAX_PROPERTY_BLOB_SIZE; - - // Here we will load a provided config string into serialized_settings - - // Apply the configuration - bsec_set_configuration(serialized_settings, n_serialized_settings_max, work_buffer, n_work_buffer); - - \endcode - */ - -bsec_library_return_t bsec_set_configuration(const uint8_t * const serialized_settings, - const uint32_t n_serialized_settings, uint8_t * work_buffer, - const uint32_t n_work_buffer_size); - - -/*! - * @brief Restore the internal state of the library - * - * BSEC uses a default state for all signal processing modules and the BSEC module. To ensure optimal performance, - * especially of the gas sensor functionality, it is recommended to retrieve the state using bsec_get_state() - * before unloading the library, storing it in some form of non-volatile memory, and setting it using bsec_set_state() - * before resuming further operation of the library. - * - * @note A work buffer with sufficient size is required and has to be provided by the function caller to decompose the - * serialization and apply it to the library and its modules. Please use #BSEC_MAX_PROPERTY_BLOB_SIZE for allotting the - * required size. - * - * @param[in] serialized_state States serialized to a binary blob - * @param[in] n_serialized_state Size of the state blob - * @param[in,out] work_buffer Work buffer used to parse the blob - * @param[in] n_work_buffer_size Length of the work buffer available for parsing the blob - * - * @return Zero when successful, otherwise an error code - * - \code{.c} - // Example // - - // Allocate variables - uint8_t serialized_state[BSEC_MAX_PROPERTY_BLOB_SIZE]; - uint32_t n_serialized_state = BSEC_MAX_PROPERTY_BLOB_SIZE; - uint8_t work_buffer_state[BSEC_MAX_PROPERTY_BLOB_SIZE]; - uint32_t n_work_buffer_size = BSEC_MAX_PROPERTY_BLOB_SIZE; - - // Here we will load a state string from a previous use of BSEC - - // Apply the previous state to the current BSEC session - bsec_set_state(serialized_state, n_serialized_state, work_buffer_state, n_work_buffer_size); - - \endcode -*/ - -bsec_library_return_t bsec_set_state(const uint8_t * const serialized_state, const uint32_t n_serialized_state, - uint8_t * work_buffer, const uint32_t n_work_buffer_size); - - -/*! - * @brief Retrieve the current library configuration - * - * BSEC allows to retrieve the current configuration using bsec_get_configuration(). Returns a binary blob encoding - * the current configuration parameters of the library in a format compatible with bsec_set_configuration(). - * - * @note The function bsec_get_configuration() is required to be used for debugging purposes only. - * @note A work buffer with sufficient size is required and has to be provided by the function caller to decompose the - * serialization and apply it to the library and its modules. Please use #BSEC_MAX_PROPERTY_BLOB_SIZE for allotting the - * required size. - * - * - * @param[in] config_id Identifier for a specific set of configuration settings to be returned; - * shall be zero to retrieve all configuration settings. - * @param[out] serialized_settings Buffer to hold the serialized config blob - * @param[in] n_serialized_settings_max Maximum available size for the serialized settings - * @param[in,out] work_buffer Work buffer used to parse the binary blob - * @param[in] n_work_buffer Length of the work buffer available for parsing the blob - * @param[out] n_serialized_settings Actual size of the returned serialized configuration blob - * - * @return Zero when successful, otherwise an error code - * - \code{.c} - // Example // - - // Allocate variables - uint8_t serialized_settings[BSEC_MAX_PROPERTY_BLOB_SIZE]; - uint32_t n_serialized_settings_max = BSEC_MAX_PROPERTY_BLOB_SIZE; - uint8_t work_buffer[BSEC_MAX_PROPERTY_BLOB_SIZE]; - uint32_t n_work_buffer = BSEC_MAX_PROPERTY_BLOB_SIZE; - uint32_t n_serialized_settings = 0; - - // Configuration of BSEC algorithm is stored in 'serialized_settings' - bsec_get_configuration(0, serialized_settings, n_serialized_settings_max, work_buffer, n_work_buffer, &n_serialized_settings); - - \endcode - */ - -bsec_library_return_t bsec_get_configuration(const uint8_t config_id, uint8_t * serialized_settings, const uint32_t n_serialized_settings_max, - uint8_t * work_buffer, const uint32_t n_work_buffer, uint32_t * n_serialized_settings); - - -/*! - *@brief Retrieve the current internal library state - * - * BSEC allows to retrieve the current states of all signal processing modules and the BSEC module using - * bsec_get_state(). This allows a restart of the processing after a reboot of the system by calling bsec_set_state(). - * - * @note A work buffer with sufficient size is required and has to be provided by the function caller to decompose the - * serialization and apply it to the library and its modules. Please use #BSEC_MAX_STATE_BLOB_SIZE for allotting the - * required size. - * - * - * @param[in] state_set_id Identifier for a specific set of states to be returned; shall be - * zero to retrieve all states. - * @param[out] serialized_state Buffer to hold the serialized config blob - * @param[in] n_serialized_state_max Maximum available size for the serialized states - * @param[in,out] work_buffer Work buffer used to parse the blob - * @param[in] n_work_buffer Length of the work buffer available for parsing the blob - * @param[out] n_serialized_state Actual size of the returned serialized blob - * - * @return Zero when successful, otherwise an error code - * - \code{.c} - // Example // - - // Allocate variables - uint8_t serialized_state[BSEC_MAX_STATE_BLOB_SIZE]; - uint32_t n_serialized_state_max = BSEC_MAX_STATE_BLOB_SIZE; - uint32_t n_serialized_state = BSEC_MAX_STATE_BLOB_SIZE; - uint8_t work_buffer_state[BSEC_MAX_STATE_BLOB_SIZE]; - uint32_t n_work_buffer_size = BSEC_MAX_STATE_BLOB_SIZE; - - // Algorithm state is stored in 'serialized_state' - bsec_get_state(0, serialized_state, n_serialized_state_max, work_buffer_state, n_work_buffer_size, &n_serialized_state); - - \endcode - */ - -bsec_library_return_t bsec_get_state(const uint8_t state_set_id, uint8_t * serialized_state, - const uint32_t n_serialized_state_max, uint8_t * work_buffer, const uint32_t n_work_buffer, - uint32_t * n_serialized_state); - -/*! - * @brief Retrieve BMExxx sensor instructions - * - * The bsec_sensor_control() interface is a key feature of BSEC, as it allows an easy way for the signal processing - * library to control the operation of the BME sensor. This is important since gas sensor behaviour is mainly - * determined by how the integrated heater is configured. To ensure an easy integration of BSEC into any system, - * bsec_sensor_control() will provide the caller with information about the current sensor configuration that is - * necessary to fulfill the input requirements derived from the current outputs requested via - * bsec_update_subscription(). - * - * In practice the use of this function shall be as follows: - * - Call bsec_sensor_control() which returns a bsec_bme_settings_t struct. - * - Based on the information contained in this struct, the sensor is configured and a forced-mode measurement is - * triggered if requested by bsec_sensor_control(). - * - Once this forced-mode measurement is complete, the signals specified in this struct shall be passed to - * bsec_do_steps() to perform the signal processing. - * - After processing, the process should sleep until the bsec_bme_settings_t::next_call timestamp is reached. - * - * - * @param [in] time_stamp Current timestamp in [ns] - * @param[out] sensor_settings Settings to be passed to API to operate sensor at this time instance - * - * @return Zero when successful, otherwise an error code - */ - -bsec_library_return_t bsec_sensor_control(const int64_t time_stamp, bsec_bme_settings_t *sensor_settings); - -/*@}*/ //BSEC Interface - -#ifdef __cplusplus - } -#endif - -#endif /* __BSEC_INTERFACE_H__ */ diff --git a/platformio.ini b/platformio.ini index 698f70de..074837ec 100644 --- a/platformio.ini +++ b/platformio.ini @@ -44,10 +44,10 @@ description = Paxcounter is a device for metering passenger flows in realtime. I [common] ; for release_version use max. 10 chars total, use any decimal format like "a.b.c" -release_version = 1.9.87 +release_version = 1.9.88 ; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running! ; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose -debug_level = 5 +debug_level = 3 extra_scripts = pre:build.py otakeyfile = ota.conf lorakeyfile = loraconf.h @@ -72,6 +72,7 @@ lib_deps_sensors = Adafruit Unified Sensor@>=1.1.1 Adafruit BME280 Library@>=2.0.0 Adafruit BMP085 Library@>=1.0.1 + BSEC Software Library@>=1.5.1474 lib_deps_basic = ArduinoJson@^5.13.1 76@>=1.2.4 ; #76 Timezone by Jack Christensen @@ -95,7 +96,6 @@ build_flags_basic = '-DLOG_LOCAL_LEVEL=${common.debug_level}' '-DPROGVERSION="${common.release_version}"' build_flags_sensors = - ;BSEC Software Library -Llib/Bosch-BSEC/src/esp32/ -lalgobsec build_flags_all = diff --git a/src/bmesensor.cpp b/src/bmesensor.cpp index 1e5e65e5..8e3f57ba 100644 --- a/src/bmesensor.cpp +++ b/src/bmesensor.cpp @@ -180,7 +180,7 @@ void bme_storedata(bmeStatus_t *bme_store) { iaqSensor.humidity; // humidity in % relative humidity x1000 bme_store->pressure = // pressure in Pascal (iaqSensor.pressure / 100.0); // conversion Pa -> hPa - bme_store->iaq = iaqSensor.iaqEstimate; + bme_store->iaq = iaqSensor.iaq; bme_store->iaq_accuracy = iaqSensor.iaqAccuracy; bme_store->gas = iaqSensor.gasResistance; // gas resistance in ohms updateState(); From 0bc7afe02380c1989989e1c4e1d1a005984b0407 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Mon, 3 Feb 2020 15:22:33 +0100 Subject: [PATCH 050/104] Update sdcard.h --- include/sdcard.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/sdcard.h b/include/sdcard.h index 051baa19..99e784cb 100644 --- a/include/sdcard.h +++ b/include/sdcard.h @@ -10,7 +10,7 @@ #define SDCARD_FILE_NAME "paxcount.%02d" #define SDCARD_FILE_HEADER "date, time, wifi, bluet" -bool sdcardInit( void ); +bool sdcard_init( void ); void sdcardWriteData( uint16_t, uint16_t); -#endif \ No newline at end of file +#endif From 6eccb475e352e2d0cb50b70086d46d85caf94f9c Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Mon, 3 Feb 2020 15:23:13 +0100 Subject: [PATCH 051/104] Update cyclic.h --- include/cyclic.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/cyclic.h b/include/cyclic.h index 4b402360..ccadbb65 100644 --- a/include/cyclic.h +++ b/include/cyclic.h @@ -18,6 +18,15 @@ #include "display.h" #endif +#if (HAS_SDS011) +#include "sds011read.h" +#endif + +#if (HAS_SDCARD) +#include "sdcard.h" +#endif + + extern Ticker housekeeper; void housekeeping(void); From 1ec0f8f3f7fd50d4d6e43ba13ec50e7b8d983b16 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Mon, 3 Feb 2020 15:24:07 +0100 Subject: [PATCH 052/104] Update payload.h --- include/payload.h | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/include/payload.h b/include/payload.h index b2d5683f..328c0b4e 100644 --- a/include/payload.h +++ b/include/payload.h @@ -61,6 +61,62 @@ public: void addTime(time_t value); void addPM10(float value); void addPM25(float value); +private: + void addChars( char* string, int len); + +#if (PAYLOAD_ENCODER == 1) // format plain + +private: + uint8_t *buffer; + uint8_t cursor; + +#elif (PAYLOAD_ENCODER == 2) // format packed + +private: + uint8_t *buffer; + uint8_t cursor; + void uintToBytes(uint64_t i, uint8_t byteSize); + void writeUptime(uint64_t unixtime); + void writeLatLng(double latitude, double longitude); + void writeUint64(uint64_t i); + void writeUint32(uint32_t i); + void writeUint16(uint16_t i); + void writeUint8(uint8_t i); + void writeFloat(float value); + void writeUFloat(float value); + void writePressure(float value); + void writeVersion(char *version); + void writeBitmap(bool a, bool b, bool c, bool d, bool e, bool f, bool g, + bool h); + +#elif ((PAYLOAD_ENCODER == 3) || (PAYLOAD_ENCODER == 4)) // format cayenne lpp + +private: + uint8_t *buffer; + uint8_t maxsize; + uint8_t cursor; + +#else +#error No valid payload converter defined! +#endif +}; + +extern PayloadConvert payload; + +#endif // _PAYLOAD_H_ + void addCount(uint16_t value, uint8_t sniffytpe); + void addConfig(configData_t value); + void addStatus(uint16_t voltage, uint64_t uptime, float cputemp, uint32_t mem, + uint8_t reset1, uint8_t reset2); + void addAlarm(int8_t rssi, uint8_t message); + void addVoltage(uint16_t value); + void addGPS(gpsStatus_t value); + void addBME(bmeStatus_t value); + void addButton(uint8_t value); + void addSensor(uint8_t[]); + void addTime(time_t value); + void addPM10(float value); + void addPM25(float value); void addChars( char* string, int len); #if (PAYLOAD_ENCODER == 1) // format plain From acf42ef27b31ea716160df3b5930221597c876d4 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Mon, 3 Feb 2020 15:24:49 +0100 Subject: [PATCH 053/104] Update sds011read.h --- include/sds011read.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/sds011read.h b/include/sds011read.h index 734395a7..d278a5fd 100644 --- a/include/sds011read.h +++ b/include/sds011read.h @@ -11,5 +11,7 @@ bool sds011_init(); void sds011_loop(); +void sds011_sleep(void); +void sds011_wakeup(void); #endif // _SDS011READ_H From 8fe69a9130ca6fa3e28e0f9b6bc803a7bd00ae21 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Mon, 3 Feb 2020 15:26:57 +0100 Subject: [PATCH 055/104] Update sds011read.cpp --- src/sds011read.cpp | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/src/sds011read.cpp b/src/sds011read.cpp index c55b5741..cf6dccdf 100644 --- a/src/sds011read.cpp +++ b/src/sds011read.cpp @@ -6,12 +6,16 @@ static const char TAG[] = __FILE__; #include // UART(2) is unused in this project +#if (HAS_IF482) +#error cannot use IF482 together with SDS011 (both use UART#2) +#endif static HardwareSerial sdsSerial(2); // so we use it here static SDS011 sdsSensor; // fine dust sensor // the results of the sensor: float pm25; float pm10; +boolean isSDS011Active; // init bool sds011_init() @@ -19,18 +23,40 @@ bool sds011_init() pm25 = pm10 = 0.0; sdsSerial.begin(9600, SERIAL_8N1, ESP_PIN_RX, ESP_PIN_TX); sdsSensor.begin (&sdsSerial); - sdsSensor.contmode(0); // for safety: wakeup/sleep - if we want it we do it by ourselves - sdsSensor.wakeup(); // always wake up + sdsSensor.contmode(0); // for safety: no wakeup/sleep by the sensor + sds011_sleep(); // we do it by ourselves return true; } // reading data: void sds011_loop() { - pm25 = pm10 = 0.0; - int sdsErrorCode = sdsSensor.read(&pm25, &pm10); - if (!sdsErrorCode) - { - ESP_LOGD(TAG, "SDS011 error: %d", sdsErrorCode); - } + if ( isSDS011Active ) { + int sdsErrorCode = sdsSensor.read(&pm25, &pm10); + if (sdsErrorCode) { + pm25 = pm10 = 0.0; + ESP_LOGI(TAG, "SDS011 error: %d", sdsErrorCode); + } + else { + ESP_LOGI(TAG, "fine-dust-values: %5.1f,%4.1f", pm10, pm25); + } + sds011_sleep(); + } return; } + +// putting the SDS-sensor to sleep +void sds011_sleep(void) +{ + sdsSensor.sleep(); + isSDS011Active = false; +} + +// start the SDS-sensor +// needs 30 seconds for warming up +void sds011_wakeup() +{ + if ( !isSDS011Active ) { + sdsSensor.wakeup(); + isSDS011Active = true; + } +} From 14baacc4bf1bc3b39a7cafb82373366e9e67b359 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Mon, 3 Feb 2020 15:27:49 +0100 Subject: [PATCH 056/104] Update sdcard.cpp --- src/sdcard.cpp | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/src/sdcard.cpp b/src/sdcard.cpp index 8e45ea7c..1c1256a4 100644 --- a/src/sdcard.cpp +++ b/src/sdcard.cpp @@ -19,7 +19,7 @@ static void createFile(void); File fileSDCard; -bool sdcardInit() { +bool sdcard_init() { ESP_LOGD(TAG, "looking for SD-card..."); useSDCard = SD.begin(SDCARD_CS, SDCARD_MOSI, SDCARD_MISO, SDCARD_SCLK); if (useSDCard) @@ -43,7 +43,6 @@ void sdcardWriteData(uint16_t noWifi, uint16_t noBle) { sprintf(tempBuffer, "%d,%d", noWifi, noBle); fileSDCard.print( tempBuffer); #if (HAS_SDS011) - ESP_LOGD(TAG, "fine-dust-values: %5.1f,%4.1f", pm10, pm25); sprintf(tempBuffer, ",%5.1f,%4.1f", pm10, pm25); fileSDCard.print( tempBuffer); #endif @@ -84,4 +83,41 @@ void createFile(void) { return; } +#endif // (HAS_SDCARD) + + if (++counterWrites > 2) { + // force writing to SD-card + ESP_LOGD(TAG, "flushing data to card"); + fileSDCard.flush(); + counterWrites = 0; + } +} + +void createFile(void) { + char bufferFilename[8 + 1 + 3 + 1]; + + useSDCard = false; + + for (int i = 0; i < 100; i++) { + sprintf(bufferFilename, SDCARD_FILE_NAME, i); + ESP_LOGD(TAG, "SD: looking for file <%s>", bufferFilename); + bool fileExists = SD.exists(bufferFilename); + if (!fileExists) { + ESP_LOGD(TAG, "SD: file does not exist: opening"); + fileSDCard = SD.open(bufferFilename, FILE_WRITE); + if (fileSDCard) { + ESP_LOGD(TAG, "SD: name opened: <%s>", bufferFilename); + fileSDCard.print( SDCARD_FILE_HEADER ); +#if (HAS_SDS011) + fileSDCard.print( SDCARD_FILE_HEADER_SDS011 ); +#endif + fileSDCard.println(); + useSDCard = true; + break; + } + } + } + return; +} + #endif // (HAS_SDCARD) From 9e1cb5fbc0d70fbdc78da322c25564eee4dcbdcd Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Mon, 3 Feb 2020 15:28:45 +0100 Subject: [PATCH 057/104] Update timekeeper.cpp --- src/timekeeper.cpp | 273 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 273 insertions(+) diff --git a/src/timekeeper.cpp b/src/timekeeper.cpp index 85f62864..c6540286 100644 --- a/src/timekeeper.cpp +++ b/src/timekeeper.cpp @@ -16,6 +16,9 @@ static const char TAG[] = __FILE__; const char timeSetSymbols[] = {'G', 'R', 'L', '?'}; #ifdef HAS_IF482 +#if (HAS_SDS011) +#error cannot use IF482 together with SDS011 (both use UART#2) +#endif HardwareSerial IF482(2); // use UART #2 (#1 may be in use for serial GPS) #endif @@ -317,4 +320,274 @@ void clock_loop(void *taskparameter) { // ClockTask } // for } // clock_loop() +#endif // HAS_IF482 || defined HAS_DCF77 + if (t) { + timeSource = _rtc; + goto finish; + } +#endif + + goto finish; + +finish: + + setMyTime((uint32_t)t, t_msec, timeSource); // set time + +} // calibrateTime() + +// adjust system time, calibrate RTC and RTC_INT pps +void IRAM_ATTR setMyTime(uint32_t t_sec, uint16_t t_msec, + timesource_t mytimesource) { + + // called with invalid timesource? + if (mytimesource == _unsynced) + return; + + // increment t_sec only if t_msec > 1000 + time_t time_to_set = (time_t)(t_sec + t_msec / 1000); + + // do we have a valid time? + if (timeIsValid(time_to_set)) { + + // if we have msec fraction, then wait until top of second with + // millisecond precision + if (t_msec % 1000) { + time_to_set++; + vTaskDelay(pdMS_TO_TICKS(1000 - t_msec % 1000)); + } + + ESP_LOGD(TAG, "[%0.3f] UTC epoch time: %d.%03d sec", millis() / 1000.0, + time_to_set, t_msec % 1000); + +// if we have got an external timesource, set RTC time and shift RTC_INT pulse +// to top of second +#ifdef HAS_RTC + if ((mytimesource == _gps) || (mytimesource == _lora)) + set_rtctime(time_to_set); +#endif + +// if we have a software pps timer, shift it to top of second +#if (!defined GPS_INT && !defined RTC_INT) + timerWrite(ppsIRQ, 0); // reset pps timer + CLOCKIRQ(); // fire clock pps, this advances time 1 sec +#endif + + setTime(time_to_set); // set the time on top of second + + timeSource = mytimesource; // set global variable + timesyncer.attach(TIME_SYNC_INTERVAL * 60, timeSync); + ESP_LOGI(TAG, "[%0.3f] Timesync finished, time was set | source: %c", + millis() / 1000.0, timeSetSymbols[timeSource]); + } else { + timesyncer.attach(TIME_SYNC_INTERVAL_RETRY * 60, timeSync); + ESP_LOGI(TAG, "[%0.3f] Timesync failed, invalid time fetched | source: %c", + millis() / 1000.0, timeSetSymbols[timeSource]); + } +} + +// helper function to setup a pulse per second for time synchronisation +uint8_t timepulse_init() { + +// use time pulse from GPS as time base with fixed 1Hz frequency +#ifdef GPS_INT + + // setup external interupt pin for rising edge GPS INT + pinMode(GPS_INT, INPUT_PULLDOWN); + // setup external rtc 1Hz clock as pulse per second clock + ESP_LOGI(TAG, "Timepulse: external (GPS)"); + return 1; // success + +// use pulse from on board RTC chip as time base with fixed frequency +#elif defined RTC_INT + + // setup external interupt pin for falling edge RTC INT + pinMode(RTC_INT, INPUT_PULLUP); + + // setup external rtc 1Hz clock as pulse per second clock + if (I2C_MUTEX_LOCK()) { + Rtc.SetSquareWavePinClockFrequency(DS3231SquareWaveClock_1Hz); + Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeClock); + I2C_MUTEX_UNLOCK(); + ESP_LOGI(TAG, "Timepulse: external (RTC)"); + return 1; // success + } else { + ESP_LOGE(TAG, "RTC initialization error, I2C bus busy"); + return 0; // failure + } + return 1; // success + +#else + // use ESP32 hardware timer as time base with adjustable frequency + ppsIRQ = timerBegin(1, 8000, true); // set 80 MHz prescaler to 1/10000 sec + timerAlarmWrite(ppsIRQ, 10000, true); // 1000ms + ESP_LOGI(TAG, "Timepulse: internal (ESP32 hardware timer)"); + return 1; // success + +#endif +} // timepulse_init + +void timepulse_start(void) { + +#ifdef GPS_INT // start external clock gps pps line + attachInterrupt(digitalPinToInterrupt(GPS_INT), CLOCKIRQ, RISING); +#elif defined RTC_INT // start external clock rtc + attachInterrupt(digitalPinToInterrupt(RTC_INT), CLOCKIRQ, FALLING); +#else // start internal clock esp32 hardware timer + timerAttachInterrupt(ppsIRQ, &CLOCKIRQ, true); + timerAlarmEnable(ppsIRQ); +#endif + + // start cyclic time sync + timeSync(); // init systime by RTC or GPS or LORA + timesyncer.attach(TIME_SYNC_INTERVAL * 60, timeSync); +} + +// interrupt service routine triggered by either pps or esp32 hardware timer +void IRAM_ATTR CLOCKIRQ(void) { + + BaseType_t xHigherPriorityTaskWoken = pdFALSE; + + SyncToPPS(); // advance systime, see microTime.h + +// advance wall clock, if we have +#if (defined HAS_IF482 || defined HAS_DCF77) + xTaskNotifyFromISR(ClockTask, uint32_t(now()), eSetBits, + &xHigherPriorityTaskWoken); +#endif + +// flip time pulse ticker, if needed +#ifdef HAS_DISPLAY +#if (defined GPS_INT || defined RTC_INT) + TimePulseTick = !TimePulseTick; // flip pulse ticker +#endif +#endif + + // yield only if we should + if (xHigherPriorityTaskWoken) + portYIELD_FROM_ISR(); +} + +// helper function to check plausibility of a time +time_t timeIsValid(time_t const t) { + // is it a time in the past? we use compile date to guess + return (t >= compiledUTC() ? t : 0); +} + +// helper function to convert compile time to UTC time +time_t compiledUTC(void) { + static time_t t = myTZ.toUTC(RtcDateTime(__DATE__, __TIME__).Epoch32Time()); + return t; +} + +// helper function to calculate serial transmit time +TickType_t tx_Ticks(uint32_t framesize, unsigned long baud, uint32_t config, + int8_t rxPin, int8_t txPins) { + + uint32_t databits = ((config & 0x0c) >> 2) + 5; + uint32_t stopbits = ((config & 0x20) >> 5) + 1; + uint32_t txTime = (databits + stopbits + 1) * framesize * 1000.0 / baud; + // +1 for the startbit + + return round(txTime); +} + +#if (defined HAS_IF482 || defined HAS_DCF77) + +#if (defined HAS_DCF77 && defined HAS_IF482) +#error You must define at most one of IF482 or DCF77! +#endif + +void clock_init(void) { + +// setup clock output interface +#ifdef HAS_IF482 + IF482.begin(HAS_IF482); +#elif defined HAS_DCF77 + pinMode(HAS_DCF77, OUTPUT); +#endif + + userUTCTime = now(); + + xTaskCreatePinnedToCore(clock_loop, // task function + "clockloop", // name of task + 2048, // stack size of task + (void *)&userUTCTime, // start time as task parameter + 4, // priority of the task + &ClockTask, // task handle + 1); // CPU core + + assert(ClockTask); // has clock task started? +} // clock_init + +void clock_loop(void *taskparameter) { // ClockTask + + // caveat: don't use now() in this task, it will cause a race condition + // due to concurrent access to i2c bus when reading/writing from/to rtc chip! + +#define nextmin(t) (t + DCF77_FRAME_SIZE + 1) // next minute + +#ifdef HAS_TWO_LED + static bool led1_state = false; +#endif + uint32_t printtime; + time_t t = *((time_t *)taskparameter), last_printtime = 0; // UTC time seconds + +#ifdef HAS_DCF77 + uint8_t *DCFpulse; // pointer on array with DCF pulse bits + DCFpulse = DCF77_Frame(nextmin(t)); // load first DCF frame before start +#elif defined HAS_IF482 + static TickType_t txDelay = pdMS_TO_TICKS(1000 - IF482_SYNC_FIXUP) - + tx_Ticks(IF482_FRAME_SIZE, HAS_IF482); +#endif + + // output the next second's pulse/telegram after pps arrived + for (;;) { + + // wait for timepulse and store UTC time in seconds got + xTaskNotifyWait(0x00, ULONG_MAX, &printtime, portMAX_DELAY); + t = time_t(printtime); + + // no confident or no recent time -> suppress clock output + if ((timeStatus() == timeNotSet) || !(timeIsValid(t)) || + (t == last_printtime)) + continue; + +#if defined HAS_IF482 + + // wait until moment to fire. Normally we won't get notified during this + // timespan, except when next pps pulse arrives while waiting, because pps + // was adjusted by recent time sync + if (xTaskNotifyWait(0x00, ULONG_MAX, &printtime, txDelay) == pdTRUE) + t = time_t(printtime); // new adjusted UTC time seconds + + // send IF482 telegram + IF482.print(IF482_Frame(t + 1)); // note: telegram is for *next* second + +#elif defined HAS_DCF77 + + if (second(t) == DCF77_FRAME_SIZE - 1) // is it time to load new frame? + DCFpulse = DCF77_Frame(nextmin(t)); // generate frame for next minute + + if (minute(nextmin(t)) == // do we still have a recent frame? + DCFpulse[DCF77_FRAME_SIZE]) // (timepulses could be missed!) + DCF77_Pulse(t, DCFpulse); // then output current second's pulse + + // else we have no recent frame, thus suppressing clock output + +#endif + +// pps blink on secondary LED if we have one +#ifdef HAS_TWO_LED + if (led1_state) + switch_LED1(LED_OFF); + else + switch_LED1(LED_ON); + led1_state = !led1_state; +#endif + + last_printtime = t; + + } // for +} // clock_loop() + #endif // HAS_IF482 || defined HAS_DCF77 From 766ef6c8885f5cfb895bd330cbcf7f9747fd6946 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Mon, 3 Feb 2020 15:29:32 +0100 Subject: [PATCH 058/104] Update cyclic.cpp --- src/cyclic.cpp | 116 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 2 deletions(-) diff --git a/src/cyclic.cpp b/src/cyclic.cpp index 89f8e3e2..6a13a217 100644 --- a/src/cyclic.cpp +++ b/src/cyclic.cpp @@ -9,8 +9,14 @@ static const char TAG[] = __FILE__; Ticker housekeeper; +#if (HAS_SDS011) +extern boolean isSDS011Active; +#endif + void housekeeping() { + static int counter = 0; xTaskNotifyFromISR(irqHandlerTask, CYCLIC_IRQ, eSetBits, NULL); +ESP_LOGI( TAG, "in Housekeeping(): %d", counter++); } // do all housekeeping @@ -18,7 +24,6 @@ void doHousekeeping() { // update uptime counter uptime(); - // check if update mode trigger switch was set if (RTC_runmode == RUNMODE_UPDATE) { // check battery status if we can before doing ota @@ -112,6 +117,113 @@ void doHousekeeping() { } #endif +#if (HAS_SDS011) + if ( isSDS011Active ) { + ESP_LOGD(TAG, "SDS011: go to sleep"); + sds011_loop(); + } + else { + ESP_LOGD(TAG, "SDS011: wakeup"); + sds011_wakeup(); + } +#endif + +} // doHousekeeping() + +// uptime counter 64bit to prevent millis() rollover after 49 days +uint64_t uptime() { + static uint32_t low32, high32; + uint32_t new_low32 = millis(); + if (new_low32 < low32) + high32++; + low32 = new_low32; + return (uint64_t)high32 << 32 | low32; +} + +uint32_t getFreeRAM() { +#ifndef BOARD_HAS_PSRAM + return ESP.getFreeHeap(); +#else + return ESP.getFreePsram(); +#endif +} + +void reset_counters() { +#if ((WIFICOUNTER) || (BLECOUNTER)) + macs.clear(); // clear all macs container + macs_total = 0; // reset all counters + macs_wifi = 0; + macs_ble = 0; +#ifdef HAS_DISPLAY + oledPlotCurve(0, true); +#endif + +#endif +} +#endif + +#if (defined HAS_DCF77 || defined HAS_IF482) + ESP_LOGD(TAG, "Clockloop %d bytes left | Taskstate = %d", + uxTaskGetStackHighWaterMark(ClockTask), eTaskGetState(ClockTask)); +#endif + +#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED) + ESP_LOGD(TAG, "LEDloop %d bytes left | Taskstate = %d", + uxTaskGetStackHighWaterMark(ledLoopTask), + eTaskGetState(ledLoopTask)); +#endif + +// read battery voltage into global variable +#if (defined BAT_MEASURE_ADC || defined HAS_PMU) + batt_voltage = read_voltage(); + if (batt_voltage == 0xffff) + ESP_LOGI(TAG, "Battery: external power"); + else + ESP_LOGI(TAG, "Battery: %dmV", batt_voltage); +#ifdef HAS_PMU + AXP192_showstatus(); +#endif +#endif + +// display BME680/280 sensor data +#if (HAS_BME) +#ifdef HAS_BME680 + ESP_LOGI(TAG, "BME680 Temp: %.2f°C | IAQ: %.2f | IAQacc: %d", + bme_status.temperature, bme_status.iaq, bme_status.iaq_accuracy); +#elif defined HAS_BME280 + ESP_LOGI(TAG, "BME280 Temp: %.2f°C | Humidity: %.2f | Pressure: %.0f", + bme_status.temperature, bme_status.humidity, bme_status.pressure); +#elif defined HAS_BMP180 + ESP_LOGI(TAG, "BMP180 Temp: %.2f°C | Pressure: %.0f", bme_status.temperature, + bme_status.pressure); +#endif +#endif + + // check free heap memory + if (ESP.getMinFreeHeap() <= MEM_LOW) { + ESP_LOGI(TAG, + "Memory full, counter cleared (heap low water mark = %d Bytes / " + "free heap = %d bytes)", + ESP.getMinFreeHeap(), ESP.getFreeHeap()); + reset_counters(); // clear macs container and reset all counters + get_salt(); // get new salt for salting hashes + + if (ESP.getMinFreeHeap() <= MEM_LOW) // check again + do_reset(true); // memory leak, reset device + } + +// check free PSRAM memory +#ifdef BOARD_HAS_PSRAM + if (ESP.getMinFreePsram() <= MEM_LOW) { + ESP_LOGI(TAG, "PSRAM full, counter cleared"); + reset_counters(); // clear macs container and reset all counters + get_salt(); // get new salt for salting hashes + + if (ESP.getMinFreePsram() <= MEM_LOW) // check again + do_reset(true); // memory leak, reset device + } +#endif + } // doHousekeeping() // uptime counter 64bit to prevent millis() rollover after 49 days @@ -143,4 +255,4 @@ void reset_counters() { #endif #endif -} \ No newline at end of file +} From f35014cab84003eeaee66491b5424e0eff3b3b8f Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Mon, 3 Feb 2020 15:30:15 +0100 Subject: [PATCH 059/104] Update senddata.cpp --- src/senddata.cpp | 147 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 3 deletions(-) diff --git a/src/senddata.cpp b/src/senddata.cpp index 367a5c68..f89710ca 100644 --- a/src/senddata.cpp +++ b/src/senddata.cpp @@ -9,7 +9,10 @@ extern float pm25; #endif void sendcycle() { + static int counter = 0; xTaskNotifyFromISR(irqHandlerTask, SENDCYCLE_IRQ, eSetBits, NULL); +ESP_LOGI( TAG, "in sendcycle(): %d", counter++); + } // put data to send in RTos Queues used for transmit over channels Lora and SPI @@ -18,9 +21,9 @@ void SendPayload(uint8_t port, sendprio_t prio) { MessageBuffer_t SendBuffer; // contains MessageSize, MessagePort, MessagePrio, Message[] -#if (HAS_SDS011) - sds011_loop(); -#endif +//#if (HAS_SDS011) +// sds011_loop(); +//#endif SendBuffer.MessageSize = payload.getSize(); SendBuffer.MessagePrio = prio; @@ -178,6 +181,144 @@ void sendData() { } // sendData() +void flushQueues() { +#if (HAS_LORA) + lora_queuereset(); +#endif +#ifdef HAS_SPI + spi_queuereset(); +#endif +} + SendBuffer.MessagePort = port; + } + memcpy(SendBuffer.Message, payload.getBuffer(), SendBuffer.MessageSize); + +// enqueue message in device's send queues +#if (HAS_LORA) + lora_enqueuedata(&SendBuffer); +#endif +#ifdef HAS_SPI + spi_enqueuedata(&SendBuffer); +#endif + +// write data to sdcard, if present +#ifdef HAS_SDCARD + sdcardWriteData(macs_wifi, macs_ble); +#endif + +} // SendPayload + +// interrupt triggered function to prepare payload to send +void sendData() { + + uint8_t bitmask = cfg.payloadmask; + uint8_t mask = 1; + #if (HAS_GPS) + gpsStatus_t gps_status; + #endif + + while (bitmask) { + switch (bitmask & mask) { + +#if ((WIFICOUNTER) || (BLECOUNTER)) + case COUNT_DATA: + payload.reset(); +#if !(PAYLOAD_OPENSENSEBOX) + if (cfg.wifiscan) + payload.addCount(macs_wifi, MAC_SNIFF_WIFI); + if (cfg.blescan) + payload.addCount(macs_ble, MAC_SNIFF_BLE); +#endif +#if (HAS_GPS) + if (GPSPORT == COUNTERPORT) { + // send GPS position only if we have a fix + if (gps_hasfix()) { + gps_storelocation(&gps_status); + payload.addGPS(gps_status); + } else + ESP_LOGD(TAG, "No valid GPS position"); + } +#endif +#if (PAYLOAD_OPENSENSEBOX) + if (cfg.wifiscan) + payload.addCount(macs_wifi, MAC_SNIFF_WIFI); + if (cfg.blescan) + payload.addCount(macs_ble, MAC_SNIFF_BLE); +#endif +#if (HAS_SDS011) + payload.addPM10(pm10); + payload.addPM25(pm25); +#endif + SendPayload(COUNTERPORT, prio_normal); + // clear counter if not in cumulative counter mode + if (cfg.countermode != 1) { + reset_counters(); // clear macs container and reset all counters + get_salt(); // get new salt for salting hashes + ESP_LOGI(TAG, "Counter cleared"); + } +#ifdef HAS_DISPLAY + else + oledPlotCurve(macs.size(), true); +#endif + break; +#endif + +#if (HAS_BME) + case MEMS_DATA: + payload.reset(); + payload.addBME(bme_status); + SendPayload(BMEPORT, prio_normal); + break; +#endif + +#if (HAS_GPS) + case GPS_DATA: + if (GPSPORT != COUNTERPORT) { + // send GPS position only if we have a fix + if (gps_hasfix()) { + gps_storelocation(&gps_status); + payload.reset(); + payload.addGPS(gps_status); + SendPayload(GPSPORT, prio_high); + } else + ESP_LOGD(TAG, "No valid GPS position"); + } + break; +#endif + +#if (HAS_SENSORS) + case SENSOR1_DATA: + payload.reset(); + payload.addSensor(sensor_read(1)); + SendPayload(SENSOR1PORT, prio_normal); + break; + case SENSOR2_DATA: + payload.reset(); + payload.addSensor(sensor_read(2)); + SendPayload(SENSOR2PORT, prio_normal); + break; + case SENSOR3_DATA: + payload.reset(); + payload.addSensor(sensor_read(3)); + SendPayload(SENSOR3PORT, prio_normal); + break; +#endif + +#if (defined BAT_MEASURE_ADC || defined HAS_PMU) + case BATT_DATA: + payload.reset(); + payload.addVoltage(read_voltage()); + SendPayload(BATTPORT, prio_normal); + break; +#endif + + } // switch + bitmask &= ~mask; + mask <<= 1; + } // while (bitmask) + +} // sendData() + void flushQueues() { #if (HAS_LORA) lora_queuereset(); From 3621cfcc52db19f8965999aa2ff866b201e17f7b Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Mon, 3 Feb 2020 15:31:06 +0100 Subject: [PATCH 060/104] Update payload.cpp --- src/payload.cpp | 468 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 468 insertions(+) diff --git a/src/payload.cpp b/src/payload.cpp index 2624c138..05924897 100644 --- a/src/payload.cpp +++ b/src/payload.cpp @@ -491,6 +491,474 @@ void PayloadConvert::addTime(time_t value) { } #endif // PAYLOAD_ENCODER +void PayloadConvert::addPM10( float value) { +#if (HAS_SDS011) +#if (PAYLOAD_ENCODER == 1) // plain + char tempBuffer[10+1]; + sprintf( tempBuffer, ",%5.1f", value); + addChars(tempBuffer, strlen(tempBuffer)); +#elif (PAYLOAD_ENCODER == 2 ) // packed + writeUint16( (uint16_t) (value*10) ); +#elif (PAYLOAD_ENCODER == 3 ) // Cayenne LPP dynamic +#error not implemented yet +#elif (PAYLOAD_ENCODER == 4 ) // Cayenne LPP packed +#error not implemented yet +#endif +#endif // HAS_SDS011 +} + +void PayloadConvert::addPM25( float value) { +#if (HAS_SDS011) +#if (PAYLOAD_ENCODER == 1) // plain + char tempBuffer[10+1]; + sprintf( tempBuffer, ",%5.1f", value); + addChars(tempBuffer, strlen(tempBuffer)); +#elif (PAYLOAD_ENCODER == 2 ) // packed + writeUint16( (uint16_t) (value*10) ); +#elif (PAYLOAD_ENCODER == 3 ) // Cayenne LPP dynamic +#error not implemented yet +#elif (PAYLOAD_ENCODER == 4 ) // Cayenne LPP packed +#error not implemented yet +#endif +#endif // HAS_SDS011 +} + +void PayloadConvert::addChars( char * string, int len) { + for (int i=0; i < len; i++) + addByte(string[i]); +} + + buffer[cursor++] = highByte(voltage); + buffer[cursor++] = lowByte(voltage); + buffer[cursor++] = (byte)((uptime & 0xFF00000000000000) >> 56); + buffer[cursor++] = (byte)((uptime & 0x00FF000000000000) >> 48); + buffer[cursor++] = (byte)((uptime & 0x0000FF0000000000) >> 40); + buffer[cursor++] = (byte)((uptime & 0x000000FF00000000) >> 32); + buffer[cursor++] = (byte)((uptime & 0x00000000FF000000) >> 24); + buffer[cursor++] = (byte)((uptime & 0x0000000000FF0000) >> 16); + buffer[cursor++] = (byte)((uptime & 0x000000000000FF00) >> 8); + buffer[cursor++] = (byte)((uptime & 0x00000000000000FF)); + buffer[cursor++] = (byte)(cputemp); + buffer[cursor++] = (byte)((mem & 0xFF000000) >> 24); + buffer[cursor++] = (byte)((mem & 0x00FF0000) >> 16); + buffer[cursor++] = (byte)((mem & 0x0000FF00) >> 8); + buffer[cursor++] = (byte)((mem & 0x000000FF)); + buffer[cursor++] = (byte)(reset1); + buffer[cursor++] = (byte)(reset2); +} + +void PayloadConvert::addGPS(gpsStatus_t value) { +#if(HAS_GPS) + buffer[cursor++] = (byte)((value.latitude & 0xFF000000) >> 24); + buffer[cursor++] = (byte)((value.latitude & 0x00FF0000) >> 16); + buffer[cursor++] = (byte)((value.latitude & 0x0000FF00) >> 8); + buffer[cursor++] = (byte)((value.latitude & 0x000000FF)); + buffer[cursor++] = (byte)((value.longitude & 0xFF000000) >> 24); + buffer[cursor++] = (byte)((value.longitude & 0x00FF0000) >> 16); + buffer[cursor++] = (byte)((value.longitude & 0x0000FF00) >> 8); + buffer[cursor++] = (byte)((value.longitude & 0x000000FF)); +#if (!PAYLOAD_OPENSENSEBOX) + buffer[cursor++] = value.satellites; + buffer[cursor++] = highByte(value.hdop); + buffer[cursor++] = lowByte(value.hdop); + buffer[cursor++] = highByte(value.altitude); + buffer[cursor++] = lowByte(value.altitude); +#endif +#endif +} + +void PayloadConvert::addSensor(uint8_t buf[]) { +#if(HAS_SENSORS) + uint8_t length = buf[0]; + memcpy(buffer, buf + 1, length); + cursor += length; // length of buffer +#endif +} + +void PayloadConvert::addBME(bmeStatus_t value) { +#if(HAS_BME) + int16_t temperature = (int16_t)(value.temperature); // float -> int + uint16_t humidity = (uint16_t)(value.humidity); // float -> int + uint16_t pressure = (uint16_t)(value.pressure); // float -> int + uint16_t iaq = (uint16_t)(value.iaq); // float -> int + buffer[cursor++] = highByte(temperature); + buffer[cursor++] = lowByte(temperature); + buffer[cursor++] = highByte(pressure); + buffer[cursor++] = lowByte(pressure); + buffer[cursor++] = highByte(humidity); + buffer[cursor++] = lowByte(humidity); + buffer[cursor++] = highByte(iaq); + buffer[cursor++] = lowByte(iaq); +#endif +} + +void PayloadConvert::addButton(uint8_t value) { +#ifdef HAS_BUTTON + buffer[cursor++] = value; +#endif +} + +void PayloadConvert::addTime(time_t value) { + uint32_t time = (uint32_t)value; + buffer[cursor++] = (byte)((time & 0xFF000000) >> 24); + buffer[cursor++] = (byte)((time & 0x00FF0000) >> 16); + buffer[cursor++] = (byte)((time & 0x0000FF00) >> 8); + buffer[cursor++] = (byte)((time & 0x000000FF)); +} + +/* ---------------- packed format with LoRa serialization Encoder ---------- + */ +// derived from +// https://github.com/thesolarnomad/lora-serialization/blob/master/src/LoraEncoder.cpp + +#elif (PAYLOAD_ENCODER == 2) + +void PayloadConvert::addByte(uint8_t value) { writeUint8(value); } + +void PayloadConvert::addCount(uint16_t value, uint8_t snifftype) { + writeUint16(value); +} + +void PayloadConvert::addAlarm(int8_t rssi, uint8_t msg) { + writeUint8(rssi); + writeUint8(msg); +} + +void PayloadConvert::addVoltage(uint16_t value) { writeUint16(value); } + +void PayloadConvert::addConfig(configData_t value) { + writeUint8(value.loradr); + writeUint8(value.txpower); + writeUint16(value.rssilimit); + writeUint8(value.sendcycle); + writeUint8(value.wifichancycle); + writeUint8(value.blescantime); + writeUint8(value.rgblum); + writeBitmap(value.adrmode ? true : false, value.screensaver ? true : false, + value.screenon ? true : false, value.countermode ? true : false, + value.blescan ? true : false, value.wifiant ? true : false, + value.vendorfilter ? true : false, + value.monitormode ? true : false); + writeBitmap(value.payloadmask && GPS_DATA ? true : false, + value.payloadmask && ALARM_DATA ? true : false, + value.payloadmask && MEMS_DATA ? true : false, + value.payloadmask && COUNT_DATA ? true : false, + value.payloadmask && SENSOR1_DATA ? true : false, + value.payloadmask && SENSOR2_DATA ? true : false, + value.payloadmask && SENSOR3_DATA ? true : false, + value.payloadmask && BATT_DATA ? true : false); + writeVersion(value.version); +} + +void PayloadConvert::addStatus(uint16_t voltage, uint64_t uptime, float cputemp, + uint32_t mem, uint8_t reset1, uint8_t reset2) { + writeUint16(voltage); + writeUptime(uptime); + writeUint8((byte)cputemp); + writeUint32(mem); + writeUint8(reset1); + writeUint8(reset2); +} + +void PayloadConvert::addGPS(gpsStatus_t value) { +#if(HAS_GPS) + writeLatLng(value.latitude, value.longitude); +#if (!PAYLOAD_OPENSENSEBOX) + writeUint8(value.satellites); + writeUint16(value.hdop); + writeUint16(value.altitude); +#endif +#endif +} + +void PayloadConvert::addSensor(uint8_t buf[]) { +#if(HAS_SENSORS) + uint8_t length = buf[0]; + memcpy(buffer, buf + 1, length); + cursor += length; // length of buffer +#endif +} + +void PayloadConvert::addBME(bmeStatus_t value) { +#if(HAS_BME) + writeFloat(value.temperature); + writePressure(value.pressure); + writeUFloat(value.humidity); + writeUFloat(value.iaq); +#endif +} + +void PayloadConvert::addButton(uint8_t value) { +#ifdef HAS_BUTTON + writeUint8(value); +#endif +} + +void PayloadConvert::addTime(time_t value) { + uint32_t time = (uint32_t)value; + writeUint32(time); +} + +void PayloadConvert::uintToBytes(uint64_t value, uint8_t byteSize) { + for (uint8_t x = 0; x < byteSize; x++) { + byte next = 0; + if (sizeof(value) > x) { + next = static_cast((value >> (x * 8)) & 0xFF); + } + buffer[cursor] = next; + ++cursor; + } +} + +void PayloadConvert::writeUptime(uint64_t uptime) { + writeUint64(uptime); +} + +void PayloadConvert::writeVersion(char *version) { + memcpy(buffer + cursor, version, 10); + cursor += 10; +} + +void PayloadConvert::writeLatLng(double latitude, double longitude) { + // Tested to at least work with int32_t, which are processed correctly. + writeUint32(latitude); + writeUint32(longitude); +} + +void PayloadConvert::writeUint64(uint64_t i) { uintToBytes(i, 8); } + +void PayloadConvert::writeUint32(uint32_t i) { uintToBytes(i, 4); } + +void PayloadConvert::writeUint16(uint16_t i) { uintToBytes(i, 2); } + +void PayloadConvert::writeUint8(uint8_t i) { uintToBytes(i, 1); } + +void PayloadConvert::writeUFloat(float value) { + writeUint16(value * 100); +} + +void PayloadConvert::writePressure(float value) { + writeUint16(value * 10); +} + +/** + * Uses a 16bit two's complement with two decimals, so the range is + * -327.68 to +327.67 degrees + */ +void PayloadConvert::writeFloat(float value) { + int16_t t = (int16_t)(value * 100); + if (value < 0) { + t = ~-t; + t = t + 1; + } + buffer[cursor++] = (byte)((t >> 8) & 0xFF); + buffer[cursor++] = (byte)t & 0xFF; +} + +void PayloadConvert::writeBitmap(bool a, bool b, bool c, bool d, bool e, bool f, + bool g, bool h) { + uint8_t bitmap = 0; + // LSB first + bitmap |= (a & 1) << 7; + bitmap |= (b & 1) << 6; + bitmap |= (c & 1) << 5; + bitmap |= (d & 1) << 4; + bitmap |= (e & 1) << 3; + bitmap |= (f & 1) << 2; + bitmap |= (g & 1) << 1; + bitmap |= (h & 1) << 0; + writeUint8(bitmap); +} + +/* ---------------- Cayenne LPP 2.0 format ---------- */ +// see specs +// http://community.mydevices.com/t/cayenne-lpp-2-0/7510 (LPP 2.0) +// https://github.com/myDevicesIoT/cayenne-docs/blob/master/docs/LORA.md +// (LPP 1.0) PAYLOAD_ENCODER == 3 -> Dynamic Sensor Payload, using channels -> +// FPort 1 PAYLOAD_ENCODER == 4 -> Packed Sensor Payload, not using channels -> +// FPort 2 + +#elif ((PAYLOAD_ENCODER == 3) || (PAYLOAD_ENCODER == 4)) + +void PayloadConvert::addByte(uint8_t value) { + /* + not implemented + */ } + +void PayloadConvert::addCount(uint16_t value, uint8_t snifftype) { + switch (snifftype) { + case MAC_SNIFF_WIFI: +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_COUNT_WIFI_CHANNEL; +#endif + buffer[cursor++] = + LPP_LUMINOSITY; // workaround since cayenne has no data type meter + buffer[cursor++] = highByte(value); + buffer[cursor++] = lowByte(value); + break; + case MAC_SNIFF_BLE: +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_COUNT_BLE_CHANNEL; +#endif + buffer[cursor++] = + LPP_LUMINOSITY; // workaround since cayenne has no data type meter + buffer[cursor++] = highByte(value); + buffer[cursor++] = lowByte(value); + break; + } +} + +void PayloadConvert::addAlarm(int8_t rssi, uint8_t msg) { +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_ALARM_CHANNEL; +#endif + buffer[cursor++] = LPP_PRESENCE; + buffer[cursor++] = msg; +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_MSG_CHANNEL; +#endif + buffer[cursor++] = LPP_ANALOG_INPUT; + buffer[cursor++] = rssi; +} + +void PayloadConvert::addVoltage(uint16_t value) { + uint16_t volt = value / 10; +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_BATT_CHANNEL; +#endif + buffer[cursor++] = LPP_ANALOG_INPUT; + buffer[cursor++] = highByte(volt); + buffer[cursor++] = lowByte(volt); +} + +void PayloadConvert::addConfig(configData_t value) { +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_ADR_CHANNEL; +#endif + buffer[cursor++] = LPP_DIGITAL_INPUT; + buffer[cursor++] = value.adrmode; +} + +void PayloadConvert::addStatus(uint16_t voltage, uint64_t uptime, float celsius, + uint32_t mem, uint8_t reset1, uint8_t reset2) { + uint16_t temp = celsius * 10; + uint16_t volt = voltage / 10; +#if (defined BAT_MEASURE_ADC || defined HAS_PMU) +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_BATT_CHANNEL; +#endif + buffer[cursor++] = LPP_ANALOG_INPUT; + buffer[cursor++] = highByte(volt); + buffer[cursor++] = lowByte(volt); +#endif // BAT_MEASURE_ADC + +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_TEMPERATURE_CHANNEL; +#endif + buffer[cursor++] = LPP_TEMPERATURE; + buffer[cursor++] = highByte(temp); + buffer[cursor++] = lowByte(temp); +} + +void PayloadConvert::addGPS(gpsStatus_t value) { +#if(HAS_GPS) + int32_t lat = value.latitude / 100; + int32_t lon = value.longitude / 100; + int32_t alt = value.altitude * 100; +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_GPS_CHANNEL; +#endif + buffer[cursor++] = LPP_GPS; + buffer[cursor++] = (byte)((lat & 0xFF0000) >> 16); + buffer[cursor++] = (byte)((lat & 0x00FF00) >> 8); + buffer[cursor++] = (byte)((lat & 0x0000FF)); + buffer[cursor++] = (byte)((lon & 0xFF0000) >> 16); + buffer[cursor++] = (byte)((lon & 0x00FF00) >> 8); + buffer[cursor++] = (byte)(lon & 0x0000FF); + buffer[cursor++] = (byte)((alt & 0xFF0000) >> 16); + buffer[cursor++] = (byte)((alt & 0x00FF00) >> 8); + buffer[cursor++] = (byte)(alt & 0x0000FF); +#endif // HAS_GPS +} + +void PayloadConvert::addSensor(uint8_t buf[]) { +#if(HAS_SENSORS) +// to come +/* + uint8_t length = buf[0]; + memcpy(buffer, buf+1, length); + cursor += length; // length of buffer +*/ +#endif // HAS_SENSORS +} + +void PayloadConvert::addBME(bmeStatus_t value) { +#if(HAS_BME) + + // data value conversions to meet cayenne data type definition + // 0.1°C per bit => -3276,7 .. +3276,7 °C + int16_t temperature = (int16_t)(value.temperature * 10.0); + // 0.1 hPa per bit => 0 .. 6553,6 hPa + uint16_t pressure = (uint16_t)(value.pressure * 10); + // 0.5% per bit => 0 .. 128 %C + uint8_t humidity = (uint8_t)(value.humidity * 2.0); + int16_t iaq = (int16_t)(value.iaq); + +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_TEMPERATURE_CHANNEL; +#endif + buffer[cursor++] = LPP_TEMPERATURE; // 2 bytes 0.1 °C Signed MSB + buffer[cursor++] = highByte(temperature); + buffer[cursor++] = lowByte(temperature); +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_BAROMETER_CHANNEL; +#endif + buffer[cursor++] = LPP_BAROMETER; // 2 bytes 0.1 hPa Unsigned MSB + buffer[cursor++] = highByte(pressure); + buffer[cursor++] = lowByte(pressure); +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_HUMIDITY_CHANNEL; +#endif + buffer[cursor++] = LPP_HUMIDITY; // 1 byte 0.5 % Unsigned + buffer[cursor++] = humidity; +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_AIR_CHANNEL; +#endif + buffer[cursor++] = LPP_LUMINOSITY; // 2 bytes, 1.0 unsigned + buffer[cursor++] = highByte(iaq); + buffer[cursor++] = lowByte(iaq); +#endif // HAS_BME +} + +void PayloadConvert::addButton(uint8_t value) { +#ifdef HAS_BUTTON +#if (PAYLOAD_ENCODER == 3) + buffer[cursor++] = LPP_BUTTON_CHANNEL; +#endif + buffer[cursor++] = LPP_DIGITAL_INPUT; + buffer[cursor++] = value; +#endif // HAS_BUTTON +} + +void PayloadConvert::addTime(time_t value) { +#if (PAYLOAD_ENCODER == 4) + uint32_t t = (uint32_t)value; + uint32_t tx_period = (uint32_t)SENDCYCLE * 2; + buffer[cursor++] = 0x03; // set config mask to UTCTime + TXPeriod + // UTCTime in seconds + buffer[cursor++] = (byte)((t & 0xFF000000) >> 24); + buffer[cursor++] = (byte)((t & 0x00FF0000) >> 16); + buffer[cursor++] = (byte)((t & 0x0000FF00) >> 8); + buffer[cursor++] = (byte)((t & 0x000000FF)); + // TXPeriod in seconds + buffer[cursor++] = (byte)((tx_period & 0xFF000000) >> 24); + buffer[cursor++] = (byte)((tx_period & 0x00FF0000) >> 16); + buffer[cursor++] = (byte)((tx_period & 0x0000FF00) >> 8); + buffer[cursor++] = (byte)((tx_period & 0x000000FF)); +#endif +} +#endif // PAYLOAD_ENCODER + void PayloadConvert::addPM10( float value) { #if (HAS_SDS011) #if (PAYLOAD_ENCODER == 1) // plain From 1cfe16b33cfef273e8eb86cffcdf833e67bab267 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Mon, 3 Feb 2020 15:31:49 +0100 Subject: [PATCH 061/104] Update main.cpp --- src/main.cpp | 437 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 437 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 19e45152..09aa66c4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -323,6 +323,443 @@ void setup() { assert(spi_init() == ESP_OK); #endif +#ifdef HAS_SDCARD + if (sdcard_init()) + strcat_P(features, " SD"); +#endif + +#if (HAS_SDS011) + ESP_LOGI(TAG, "init fine-dust-sensor"); + if ( sds011_init() ) + strcat_P(features, " SDS"); +#endif + +#if (VENDORFILTER) + strcat_P(features, " FILTER"); +#endif + +// initialize matrix display +#ifdef HAS_MATRIX_DISPLAY + strcat_P(features, " LED_MATRIX"); + MatrixDisplayIsOn = cfg.screenon; + init_matrix_display(); // note: blocking call +#endif + +// show payload encoder +#if PAYLOAD_ENCODER == 1 + strcat_P(features, " PLAIN"); +#elif PAYLOAD_ENCODER == 2 + strcat_P(features, " PACKED"); +#elif PAYLOAD_ENCODER == 3 + strcat_P(features, " LPPDYN"); +#elif PAYLOAD_ENCODER == 4 + strcat_P(features, " LPPPKD"); +#endif + +// initialize RTC +#ifdef HAS_RTC + strcat_P(features, " RTC"); + assert(rtc_init()); +#endif + +#if defined HAS_DCF77 + strcat_P(features, " DCF77"); +#endif + +#if defined HAS_IF482 + strcat_P(features, " IF482"); +#endif + +#if (WIFICOUNTER) + strcat_P(features, " WIFI"); + // start wifi in monitor mode and start channel rotation timer + ESP_LOGI(TAG, "Starting Wifi..."); + wifi_sniffer_init(); +#else + // switch off wifi + esp_wifi_deinit(); +#endif + + // initialize salt value using esp_random() called by random() in + // arduino-esp32 core. Note: do this *after* wifi has started, since + // function gets it's seed from RF noise + get_salt(); // get new 16bit for salting hashes + + // start state machine + ESP_LOGI(TAG, "Starting Interrupt Handler..."); + xTaskCreatePinnedToCore(irqHandler, // task function + "irqhandler", // name of task + 4096, // stack size of task + (void *)1, // parameter of the task + 2, // priority of the task + &irqHandlerTask, // task handle + 1); // CPU core + +// initialize BME sensor (BME280/BME680) +#if (HAS_BME) +#ifdef HAS_BME680 + strcat_P(features, " BME680"); +#elif defined HAS_BME280 + strcat_P(features, " BME280"); +#elif defined HAS_BMP180 + strcat_P(features, " BMP180"); +#endif + if (bme_init()) + ESP_LOGI(TAG, "Starting BME sensor..."); +#endif + + // starting timers and interrupts + assert(irqHandlerTask != NULL); // has interrupt handler task started? + ESP_LOGI(TAG, "Starting Timers..."); + +// display interrupt +#ifdef HAS_DISPLAY + // https://techtutorialsx.com/2017/10/07/esp32-arduino-timer-interrupts/ + // prescaler 80 -> divides 80 MHz CPU freq to 1 MHz, timer 0, count up + displayIRQ = timerBegin(0, 80, true); + timerAttachInterrupt(displayIRQ, &DisplayIRQ, true); + timerAlarmWrite(displayIRQ, DISPLAYREFRESH_MS * 1000, true); + timerAlarmEnable(displayIRQ); +#endif + +// LED Matrix display interrupt +#ifdef HAS_MATRIX_DISPLAY + // https://techtutorialsx.com/2017/10/07/esp32-arduino-timer-interrupts/ + // prescaler 80 -> divides 80 MHz CPU freq to 1 MHz, timer 3, count up + matrixDisplayIRQ = timerBegin(3, 80, true); + timerAttachInterrupt(matrixDisplayIRQ, &MatrixDisplayIRQ, true); + timerAlarmWrite(matrixDisplayIRQ, MATRIX_DISPLAY_SCAN_US, true); + timerAlarmEnable(matrixDisplayIRQ); +#endif + +// initialize button +#ifdef HAS_BUTTON + strcat_P(features, " BTN_"); +#ifdef BUTTON_PULLUP + strcat_P(features, "PU"); +#else + strcat_P(features, "PD"); +#endif // BUTTON_PULLUP + button_init(HAS_BUTTON); +#endif // HAS_BUTTON + + // cyclic function interrupts + sendcycler.attach(SENDCYCLE * 2, sendcycle); + housekeeper.attach(HOMECYCLE, housekeeping); + +#if (TIME_SYNC_INTERVAL) + +#if (!(TIME_SYNC_LORAWAN) && !(TIME_SYNC_LORASERVER) && !defined HAS_GPS && \ + !defined HAS_RTC) +#warning you did not specify a time source, time will not be synched +#endif + +// initialize gps time +#if (HAS_GPS) + fetch_gpsTime(); +#endif + +#if (defined HAS_IF482 || defined HAS_DCF77) + ESP_LOGI(TAG, "Starting Clock Controller..."); + clock_init(); +#endif + +#if (TIME_SYNC_LORASERVER) + timesync_init(); // create loraserver time sync task +#endif + + ESP_LOGI(TAG, "Starting Timekeeper..."); + assert(timepulse_init()); // setup pps timepulse + timepulse_start(); // starts pps and cyclic time sync + +#endif // TIME_SYNC_INTERVAL + + // show compiled features + ESP_LOGI(TAG, "Features:%s", features); + + // set runmode to normal + RTC_runmode = RUNMODE_NORMAL; + + vTaskDelete(NULL); + +} // setup() + +void loop() { vTaskDelete(NULL); } +3 MatrixDisplayIRQ -> matrix mux cycle -> 0,5ms (MATRIX_DISPLAY_SCAN_US) + + +// Interrupt routines +------------------------------------------------------------------------------- + +fired by hardware +DisplayIRQ -> esp32 timer 0 -> irqHandlerTask (Core 1) +CLOCKIRQ -> esp32 timer 1 -> ClockTask (Core 1) +ButtonIRQ -> external gpio -> irqHandlerTask (Core 1) +PMUIRQ -> PMU chip gpio -> irqHandlerTask (Core 1) + +fired by software (Ticker.h) +TIMESYNC_IRQ -> timeSync() -> irqHandlerTask (Core 1) +CYCLIC_IRQ -> housekeeping() -> irqHandlerTask (Core 1) +SENDCYCLE_IRQ -> sendcycle() -> irqHandlerTask (Core 1) +BME_IRQ -> bmecycle() -> irqHandlerTask (Core 1) + + +// External RTC timer (if present) +------------------------------------------------------------------------------- +triggers pps 1 sec impulse + +*/ + +// Basic Config +#include "main.h" + +configData_t cfg; // struct holds current device configuration +char lmic_event_msg[LMIC_EVENTMSG_LEN]; // display buffer for LMIC event message +uint8_t volatile channel = 0; // channel rotation counter +uint16_t volatile macs_total = 0, macs_wifi = 0, macs_ble = 0, + batt_voltage = 0; // globals for display + +hw_timer_t *ppsIRQ = NULL, *displayIRQ = NULL, *matrixDisplayIRQ = NULL; + +TaskHandle_t irqHandlerTask = NULL, ClockTask = NULL; +SemaphoreHandle_t I2Caccess; +bool volatile TimePulseTick = false; +time_t userUTCTime = 0; +timesource_t timeSource = _unsynced; + +// container holding unique MAC address hashes with Memory Alloctor using PSRAM, +// if present +std::set, Mallocator> macs; + +// initialize payload encoder +PayloadConvert payload(PAYLOAD_BUFFER_SIZE); + +// set Time Zone for user setting from paxcounter.conf +TimeChangeRule myDST = DAYLIGHT_TIME; +TimeChangeRule mySTD = STANDARD_TIME; +Timezone myTZ(myDST, mySTD); + +// local Tag for logging +static const char TAG[] = __FILE__; + +void setup() { + + char features[100] = ""; + + // create some semaphores for syncing / mutexing tasks + I2Caccess = xSemaphoreCreateMutex(); // for access management of i2c bus + assert(I2Caccess != NULL); + I2C_MUTEX_UNLOCK(); + + // disable brownout detection +#ifdef DISABLE_BROWNOUT + // register with brownout is at address DR_REG_RTCCNTL_BASE + 0xd4 + (*((uint32_t volatile *)ETS_UNCACHED_ADDR((DR_REG_RTCCNTL_BASE + 0xd4)))) = 0; +#endif + + // setup debug output or silence device +#if (VERBOSE) + Serial.begin(115200); + esp_log_level_set("*", ESP_LOG_VERBOSE); +#else + // mute logs completely by redirecting them to silence function + esp_log_level_set("*", ESP_LOG_NONE); +#endif + + do_after_reset(rtc_get_reset_reason(0)); + + // print chip information on startup if in verbose mode after coldstart +#if (VERBOSE) + + if (RTC_runmode == RUNMODE_POWERCYCLE) { + esp_chip_info_t chip_info; + esp_chip_info(&chip_info); + ESP_LOGI(TAG, + "This is ESP32 chip with %d CPU cores, WiFi%s%s, silicon revision " + "%d, %dMB %s Flash", + chip_info.cores, + (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "", + (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "", + chip_info.revision, spi_flash_get_chip_size() / (1024 * 1024), + (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" + : "external"); + ESP_LOGI(TAG, "Internal Total heap %d, internal Free Heap %d", + ESP.getHeapSize(), ESP.getFreeHeap()); +#ifdef BOARD_HAS_PSRAM + ESP_LOGI(TAG, "SPIRam Total heap %d, SPIRam Free Heap %d", + ESP.getPsramSize(), ESP.getFreePsram()); +#endif + ESP_LOGI(TAG, "ChipRevision %d, Cpu Freq %d, SDK Version %s", + ESP.getChipRevision(), ESP.getCpuFreqMHz(), ESP.getSdkVersion()); + ESP_LOGI(TAG, "Flash Size %d, Flash Speed %d", ESP.getFlashChipSize(), + ESP.getFlashChipSpeed()); + ESP_LOGI(TAG, "Wifi/BT software coexist version %s", + esp_coex_version_get()); + +#if (HAS_LORA) + ESP_LOGI(TAG, "IBM LMIC version %d.%d.%d", LMIC_VERSION_MAJOR, + LMIC_VERSION_MINOR, LMIC_VERSION_BUILD); + ESP_LOGI(TAG, "Arduino LMIC version %d.%d.%d.%d", + ARDUINO_LMIC_VERSION_GET_MAJOR(ARDUINO_LMIC_VERSION), + ARDUINO_LMIC_VERSION_GET_MINOR(ARDUINO_LMIC_VERSION), + ARDUINO_LMIC_VERSION_GET_PATCH(ARDUINO_LMIC_VERSION), + ARDUINO_LMIC_VERSION_GET_LOCAL(ARDUINO_LMIC_VERSION)); + showLoraKeys(); +#endif // HAS_LORA + +#if (HAS_GPS) + ESP_LOGI(TAG, "TinyGPS+ version %s", TinyGPSPlus::libraryVersion()); +#endif + } +#endif // VERBOSE + + // open i2c bus + i2c_init(); + +// setup power on boards with power management logic +#ifdef EXT_POWER_SW + pinMode(EXT_POWER_SW, OUTPUT); + digitalWrite(EXT_POWER_SW, EXT_POWER_ON); + strcat_P(features, " VEXT"); +#endif +#ifdef HAS_PMU + AXP192_init(); + strcat_P(features, " PMU"); +#endif + + // read (and initialize on first run) runtime settings from NVRAM + loadConfig(); // includes initialize if necessary + +// initialize display +#ifdef HAS_DISPLAY + strcat_P(features, " OLED"); + DisplayIsOn = cfg.screenon; + // display verbose info only after a coldstart (note: blocking call!) + init_display(RTC_runmode == RUNMODE_POWERCYCLE ? true : false); +#endif + + // scan i2c bus for devices + i2c_scan(); + +#ifdef BOARD_HAS_PSRAM + assert(psramFound()); + ESP_LOGI(TAG, "PSRAM found and initialized"); + strcat_P(features, " PSRAM"); +#endif + +#ifdef BAT_MEASURE_EN + pinMode(BAT_MEASURE_EN, OUTPUT); +#endif + +// initialize leds +#if (HAS_LED != NOT_A_PIN) + pinMode(HAS_LED, OUTPUT); + strcat_P(features, " LED"); + +#ifdef LED_POWER_SW + pinMode(LED_POWER_SW, OUTPUT); + digitalWrite(LED_POWER_SW, LED_POWER_ON); +#endif + +#ifdef HAS_TWO_LED + pinMode(HAS_TWO_LED, OUTPUT); + strcat_P(features, " LED1"); +#endif + +// use LED for power display if we have additional RGB LED, else for status +#ifdef HAS_RGB_LED + switch_LED(LED_ON); + strcat_P(features, " RGB"); + rgb_set_color(COLOR_PINK); +#endif + +#endif // HAS_LED + +#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED) + // start led loop + ESP_LOGI(TAG, "Starting LED Controller..."); + xTaskCreatePinnedToCore(ledLoop, // task function + "ledloop", // name of task + 1024, // stack size of task + (void *)1, // parameter of the task + 3, // priority of the task + &ledLoopTask, // task handle + 0); // CPU core +#endif + +// initialize wifi antenna +#ifdef HAS_ANTENNA_SWITCH + strcat_P(features, " ANT"); + antenna_init(); + antenna_select(cfg.wifiant); +#endif + +// initialize battery status +#if (defined BAT_MEASURE_ADC || defined HAS_PMU) + strcat_P(features, " BATT"); + calibrate_voltage(); + batt_voltage = read_voltage(); +#endif + +#if (USE_OTA) + strcat_P(features, " OTA"); + // reboot to firmware update mode if ota trigger switch is set + if (RTC_runmode == RUNMODE_UPDATE) + start_ota_update(); +#endif + +// start BLE scan callback if BLE function is enabled in NVRAM configuration +// or switch off bluetooth, if not compiled +#if (BLECOUNTER) + strcat_P(features, " BLE"); + if (cfg.blescan) { + ESP_LOGI(TAG, "Starting Bluetooth..."); + start_BLEscan(); + } else + btStop(); +#else + // remove bluetooth stack to gain more free memory + btStop(); + ESP_ERROR_CHECK(esp_bt_mem_release(ESP_BT_MODE_BTDM)); + ESP_ERROR_CHECK(esp_coex_preference_set( + ESP_COEX_PREFER_WIFI)); // configure Wifi/BT coexist lib +#endif + +// initialize gps +#if (HAS_GPS) + strcat_P(features, " GPS"); + if (gps_init()) { + ESP_LOGI(TAG, "Starting GPS Feed..."); + xTaskCreatePinnedToCore(gps_loop, // task function + "gpsloop", // name of task + 2048, // stack size of task + (void *)1, // parameter of the task + 1, // priority of the task + &GpsTask, // task handle + 1); // CPU core + } +#endif + +// initialize sensors +#if (HAS_SENSORS) + strcat_P(features, " SENS"); + sensor_init(); +#endif + +// initialize LoRa +#if (HAS_LORA) + strcat_P(features, " LORA"); + // kick off join, except we come from sleep + assert(lora_stack_init(RTC_runmode == RUNMODE_WAKEUP ? false : true) == + ESP_OK); +#endif + +// initialize SPI +#ifdef HAS_SPI + strcat_P(features, " SPI"); + assert(spi_init() == ESP_OK); +#endif + #ifdef HAS_SDCARD if (sdcardInit()) strcat_P(features, " SD"); From 4ee9ff7bf5455fa31c680775e5f6dc16e624a3c1 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Tue, 4 Feb 2020 14:05:46 +0100 Subject: [PATCH 062/104] SS_OLED library update --- platformio.ini | 8 ++++---- src/display.cpp | 6 ++++-- src/ota.cpp | 7 +++++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/platformio.ini b/platformio.ini index 074837ec..9cba5684 100644 --- a/platformio.ini +++ b/platformio.ini @@ -44,7 +44,7 @@ description = Paxcounter is a device for metering passenger flows in realtime. I [common] ; for release_version use max. 10 chars total, use any decimal format like "a.b.c" -release_version = 1.9.88 +release_version = 1.9.89 ; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running! ; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose debug_level = 3 @@ -59,7 +59,7 @@ lib_deps_lora = ;MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore https://github.com/mcci-catena/arduino-lmic.git#98a1b35 lib_deps_display = - ss_oled@>=3.2.0 ; simple and small OLED lib by Larry Bank + ss_oled@3.3.0 ; simple and small OLED lib by Larry Bank BitBang_I2C@>=1.3.0 QRCode@>=0.0.1 lib_deps_matrix_display = @@ -72,7 +72,7 @@ lib_deps_sensors = Adafruit Unified Sensor@>=1.1.1 Adafruit BME280 Library@>=2.0.0 Adafruit BMP085 Library@>=1.0.1 - BSEC Software Library@>=1.5.1474 + BSEC Software Library@1.5.1474 lib_deps_basic = ArduinoJson@^5.13.1 76@>=1.2.4 ; #76 Timezone by Jack Christensen @@ -124,5 +124,5 @@ upload_protocol = esptool [env:dev] upload_protocol = esptool build_type = debug -platform = https://github.com/platformio/platform-espressif32.git +platform = https://github.com/platformio/platform-espressif32.git#develop platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git \ No newline at end of file diff --git a/src/display.cpp b/src/display.cpp index 2260fb4f..95bf30a2 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -78,9 +78,11 @@ void init_display(bool verbose) { // init display #ifndef DISPLAY_FLIP - oledInit(OLED_128x64, false, false, -1, -1, 400000L); + oledInit(OLED_128x64, false, false, -1, -1, + MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); #else - oledInit(OLED_128x64, true, false, -1, -1, 400000L); + oledInit(OLED_128x64, true, false, -1, -1, + MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); #endif // set display buffer diff --git a/src/ota.cpp b/src/ota.cpp index 10a9ed43..a9fa8ba2 100644 --- a/src/ota.cpp +++ b/src/ota.cpp @@ -44,10 +44,13 @@ void start_ota_update() { // init display #ifdef HAS_DISPLAY + #ifndef DISPLAY_FLIP - oledInit(OLED_128x64, ANGLE_0, false, -1, -1, 400000L); + oledInit(OLED_128x64, false, false, -1, -1, + MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); #else - oledInit(OLED_128x64, ANGLE_FLIPY, false, -1, -1, 400000L); + oledInit(OLED_128x64, true, false, -1, -1, + MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); #endif // set display buffer From 5aefaf2b2f1ed1da3ca5977412da968603dc28d7 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 15:54:06 +0100 Subject: [PATCH 063/104] Update payload.h copy+paste-error corrected --- include/payload.h | 55 ----------------------------------------------- 1 file changed, 55 deletions(-) diff --git a/include/payload.h b/include/payload.h index 328c0b4e..719d59ec 100644 --- a/include/payload.h +++ b/include/payload.h @@ -103,59 +103,4 @@ private: extern PayloadConvert payload; -#endif // _PAYLOAD_H_ - void addCount(uint16_t value, uint8_t sniffytpe); - void addConfig(configData_t value); - void addStatus(uint16_t voltage, uint64_t uptime, float cputemp, uint32_t mem, - uint8_t reset1, uint8_t reset2); - void addAlarm(int8_t rssi, uint8_t message); - void addVoltage(uint16_t value); - void addGPS(gpsStatus_t value); - void addBME(bmeStatus_t value); - void addButton(uint8_t value); - void addSensor(uint8_t[]); - void addTime(time_t value); - void addPM10(float value); - void addPM25(float value); - void addChars( char* string, int len); - -#if (PAYLOAD_ENCODER == 1) // format plain - -private: - uint8_t *buffer; - uint8_t cursor; - -#elif (PAYLOAD_ENCODER == 2) // format packed - -private: - uint8_t *buffer; - uint8_t cursor; - void uintToBytes(uint64_t i, uint8_t byteSize); - void writeUptime(uint64_t unixtime); - void writeLatLng(double latitude, double longitude); - void writeUint64(uint64_t i); - void writeUint32(uint32_t i); - void writeUint16(uint16_t i); - void writeUint8(uint8_t i); - void writeFloat(float value); - void writeUFloat(float value); - void writePressure(float value); - void writeVersion(char *version); - void writeBitmap(bool a, bool b, bool c, bool d, bool e, bool f, bool g, - bool h); - -#elif ((PAYLOAD_ENCODER == 3) || (PAYLOAD_ENCODER == 4)) // format cayenne lpp - -private: - uint8_t *buffer; - uint8_t maxsize; - uint8_t cursor; - -#else -#error No valid payload converter defined! -#endif -}; - -extern PayloadConvert payload; - #endif // _PAYLOAD_H_ From f5faf31a2a4b43199f408c2131ca634cff0d5394 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 15:55:54 +0100 Subject: [PATCH 064/104] Update cyclic.cpp copy+paste-error corrected --- src/cyclic.cpp | 96 -------------------------------------------------- 1 file changed, 96 deletions(-) diff --git a/src/cyclic.cpp b/src/cyclic.cpp index 6a13a217..2fd00037 100644 --- a/src/cyclic.cpp +++ b/src/cyclic.cpp @@ -160,99 +160,3 @@ void reset_counters() { #endif } -#endif - -#if (defined HAS_DCF77 || defined HAS_IF482) - ESP_LOGD(TAG, "Clockloop %d bytes left | Taskstate = %d", - uxTaskGetStackHighWaterMark(ClockTask), eTaskGetState(ClockTask)); -#endif - -#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED) - ESP_LOGD(TAG, "LEDloop %d bytes left | Taskstate = %d", - uxTaskGetStackHighWaterMark(ledLoopTask), - eTaskGetState(ledLoopTask)); -#endif - -// read battery voltage into global variable -#if (defined BAT_MEASURE_ADC || defined HAS_PMU) - batt_voltage = read_voltage(); - if (batt_voltage == 0xffff) - ESP_LOGI(TAG, "Battery: external power"); - else - ESP_LOGI(TAG, "Battery: %dmV", batt_voltage); -#ifdef HAS_PMU - AXP192_showstatus(); -#endif -#endif - -// display BME680/280 sensor data -#if (HAS_BME) -#ifdef HAS_BME680 - ESP_LOGI(TAG, "BME680 Temp: %.2f°C | IAQ: %.2f | IAQacc: %d", - bme_status.temperature, bme_status.iaq, bme_status.iaq_accuracy); -#elif defined HAS_BME280 - ESP_LOGI(TAG, "BME280 Temp: %.2f°C | Humidity: %.2f | Pressure: %.0f", - bme_status.temperature, bme_status.humidity, bme_status.pressure); -#elif defined HAS_BMP180 - ESP_LOGI(TAG, "BMP180 Temp: %.2f°C | Pressure: %.0f", bme_status.temperature, - bme_status.pressure); -#endif -#endif - - // check free heap memory - if (ESP.getMinFreeHeap() <= MEM_LOW) { - ESP_LOGI(TAG, - "Memory full, counter cleared (heap low water mark = %d Bytes / " - "free heap = %d bytes)", - ESP.getMinFreeHeap(), ESP.getFreeHeap()); - reset_counters(); // clear macs container and reset all counters - get_salt(); // get new salt for salting hashes - - if (ESP.getMinFreeHeap() <= MEM_LOW) // check again - do_reset(true); // memory leak, reset device - } - -// check free PSRAM memory -#ifdef BOARD_HAS_PSRAM - if (ESP.getMinFreePsram() <= MEM_LOW) { - ESP_LOGI(TAG, "PSRAM full, counter cleared"); - reset_counters(); // clear macs container and reset all counters - get_salt(); // get new salt for salting hashes - - if (ESP.getMinFreePsram() <= MEM_LOW) // check again - do_reset(true); // memory leak, reset device - } -#endif - -} // doHousekeeping() - -// uptime counter 64bit to prevent millis() rollover after 49 days -uint64_t uptime() { - static uint32_t low32, high32; - uint32_t new_low32 = millis(); - if (new_low32 < low32) - high32++; - low32 = new_low32; - return (uint64_t)high32 << 32 | low32; -} - -uint32_t getFreeRAM() { -#ifndef BOARD_HAS_PSRAM - return ESP.getFreeHeap(); -#else - return ESP.getFreePsram(); -#endif -} - -void reset_counters() { -#if ((WIFICOUNTER) || (BLECOUNTER)) - macs.clear(); // clear all macs container - macs_total = 0; // reset all counters - macs_wifi = 0; - macs_ble = 0; -#ifdef HAS_DISPLAY - oledPlotCurve(0, true); -#endif - -#endif -} From d6e4ba16e70b0537f28a35a0be919e0e9c1a3b14 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 15:57:33 +0100 Subject: [PATCH 065/104] Update payload.cpp copy+paste-error corrected --- src/payload.cpp | 468 ------------------------------------------------ 1 file changed, 468 deletions(-) diff --git a/src/payload.cpp b/src/payload.cpp index 05924897..57428234 100644 --- a/src/payload.cpp +++ b/src/payload.cpp @@ -523,474 +523,6 @@ void PayloadConvert::addPM25( float value) { #endif // HAS_SDS011 } -void PayloadConvert::addChars( char * string, int len) { - for (int i=0; i < len; i++) - addByte(string[i]); -} - - buffer[cursor++] = highByte(voltage); - buffer[cursor++] = lowByte(voltage); - buffer[cursor++] = (byte)((uptime & 0xFF00000000000000) >> 56); - buffer[cursor++] = (byte)((uptime & 0x00FF000000000000) >> 48); - buffer[cursor++] = (byte)((uptime & 0x0000FF0000000000) >> 40); - buffer[cursor++] = (byte)((uptime & 0x000000FF00000000) >> 32); - buffer[cursor++] = (byte)((uptime & 0x00000000FF000000) >> 24); - buffer[cursor++] = (byte)((uptime & 0x0000000000FF0000) >> 16); - buffer[cursor++] = (byte)((uptime & 0x000000000000FF00) >> 8); - buffer[cursor++] = (byte)((uptime & 0x00000000000000FF)); - buffer[cursor++] = (byte)(cputemp); - buffer[cursor++] = (byte)((mem & 0xFF000000) >> 24); - buffer[cursor++] = (byte)((mem & 0x00FF0000) >> 16); - buffer[cursor++] = (byte)((mem & 0x0000FF00) >> 8); - buffer[cursor++] = (byte)((mem & 0x000000FF)); - buffer[cursor++] = (byte)(reset1); - buffer[cursor++] = (byte)(reset2); -} - -void PayloadConvert::addGPS(gpsStatus_t value) { -#if(HAS_GPS) - buffer[cursor++] = (byte)((value.latitude & 0xFF000000) >> 24); - buffer[cursor++] = (byte)((value.latitude & 0x00FF0000) >> 16); - buffer[cursor++] = (byte)((value.latitude & 0x0000FF00) >> 8); - buffer[cursor++] = (byte)((value.latitude & 0x000000FF)); - buffer[cursor++] = (byte)((value.longitude & 0xFF000000) >> 24); - buffer[cursor++] = (byte)((value.longitude & 0x00FF0000) >> 16); - buffer[cursor++] = (byte)((value.longitude & 0x0000FF00) >> 8); - buffer[cursor++] = (byte)((value.longitude & 0x000000FF)); -#if (!PAYLOAD_OPENSENSEBOX) - buffer[cursor++] = value.satellites; - buffer[cursor++] = highByte(value.hdop); - buffer[cursor++] = lowByte(value.hdop); - buffer[cursor++] = highByte(value.altitude); - buffer[cursor++] = lowByte(value.altitude); -#endif -#endif -} - -void PayloadConvert::addSensor(uint8_t buf[]) { -#if(HAS_SENSORS) - uint8_t length = buf[0]; - memcpy(buffer, buf + 1, length); - cursor += length; // length of buffer -#endif -} - -void PayloadConvert::addBME(bmeStatus_t value) { -#if(HAS_BME) - int16_t temperature = (int16_t)(value.temperature); // float -> int - uint16_t humidity = (uint16_t)(value.humidity); // float -> int - uint16_t pressure = (uint16_t)(value.pressure); // float -> int - uint16_t iaq = (uint16_t)(value.iaq); // float -> int - buffer[cursor++] = highByte(temperature); - buffer[cursor++] = lowByte(temperature); - buffer[cursor++] = highByte(pressure); - buffer[cursor++] = lowByte(pressure); - buffer[cursor++] = highByte(humidity); - buffer[cursor++] = lowByte(humidity); - buffer[cursor++] = highByte(iaq); - buffer[cursor++] = lowByte(iaq); -#endif -} - -void PayloadConvert::addButton(uint8_t value) { -#ifdef HAS_BUTTON - buffer[cursor++] = value; -#endif -} - -void PayloadConvert::addTime(time_t value) { - uint32_t time = (uint32_t)value; - buffer[cursor++] = (byte)((time & 0xFF000000) >> 24); - buffer[cursor++] = (byte)((time & 0x00FF0000) >> 16); - buffer[cursor++] = (byte)((time & 0x0000FF00) >> 8); - buffer[cursor++] = (byte)((time & 0x000000FF)); -} - -/* ---------------- packed format with LoRa serialization Encoder ---------- - */ -// derived from -// https://github.com/thesolarnomad/lora-serialization/blob/master/src/LoraEncoder.cpp - -#elif (PAYLOAD_ENCODER == 2) - -void PayloadConvert::addByte(uint8_t value) { writeUint8(value); } - -void PayloadConvert::addCount(uint16_t value, uint8_t snifftype) { - writeUint16(value); -} - -void PayloadConvert::addAlarm(int8_t rssi, uint8_t msg) { - writeUint8(rssi); - writeUint8(msg); -} - -void PayloadConvert::addVoltage(uint16_t value) { writeUint16(value); } - -void PayloadConvert::addConfig(configData_t value) { - writeUint8(value.loradr); - writeUint8(value.txpower); - writeUint16(value.rssilimit); - writeUint8(value.sendcycle); - writeUint8(value.wifichancycle); - writeUint8(value.blescantime); - writeUint8(value.rgblum); - writeBitmap(value.adrmode ? true : false, value.screensaver ? true : false, - value.screenon ? true : false, value.countermode ? true : false, - value.blescan ? true : false, value.wifiant ? true : false, - value.vendorfilter ? true : false, - value.monitormode ? true : false); - writeBitmap(value.payloadmask && GPS_DATA ? true : false, - value.payloadmask && ALARM_DATA ? true : false, - value.payloadmask && MEMS_DATA ? true : false, - value.payloadmask && COUNT_DATA ? true : false, - value.payloadmask && SENSOR1_DATA ? true : false, - value.payloadmask && SENSOR2_DATA ? true : false, - value.payloadmask && SENSOR3_DATA ? true : false, - value.payloadmask && BATT_DATA ? true : false); - writeVersion(value.version); -} - -void PayloadConvert::addStatus(uint16_t voltage, uint64_t uptime, float cputemp, - uint32_t mem, uint8_t reset1, uint8_t reset2) { - writeUint16(voltage); - writeUptime(uptime); - writeUint8((byte)cputemp); - writeUint32(mem); - writeUint8(reset1); - writeUint8(reset2); -} - -void PayloadConvert::addGPS(gpsStatus_t value) { -#if(HAS_GPS) - writeLatLng(value.latitude, value.longitude); -#if (!PAYLOAD_OPENSENSEBOX) - writeUint8(value.satellites); - writeUint16(value.hdop); - writeUint16(value.altitude); -#endif -#endif -} - -void PayloadConvert::addSensor(uint8_t buf[]) { -#if(HAS_SENSORS) - uint8_t length = buf[0]; - memcpy(buffer, buf + 1, length); - cursor += length; // length of buffer -#endif -} - -void PayloadConvert::addBME(bmeStatus_t value) { -#if(HAS_BME) - writeFloat(value.temperature); - writePressure(value.pressure); - writeUFloat(value.humidity); - writeUFloat(value.iaq); -#endif -} - -void PayloadConvert::addButton(uint8_t value) { -#ifdef HAS_BUTTON - writeUint8(value); -#endif -} - -void PayloadConvert::addTime(time_t value) { - uint32_t time = (uint32_t)value; - writeUint32(time); -} - -void PayloadConvert::uintToBytes(uint64_t value, uint8_t byteSize) { - for (uint8_t x = 0; x < byteSize; x++) { - byte next = 0; - if (sizeof(value) > x) { - next = static_cast((value >> (x * 8)) & 0xFF); - } - buffer[cursor] = next; - ++cursor; - } -} - -void PayloadConvert::writeUptime(uint64_t uptime) { - writeUint64(uptime); -} - -void PayloadConvert::writeVersion(char *version) { - memcpy(buffer + cursor, version, 10); - cursor += 10; -} - -void PayloadConvert::writeLatLng(double latitude, double longitude) { - // Tested to at least work with int32_t, which are processed correctly. - writeUint32(latitude); - writeUint32(longitude); -} - -void PayloadConvert::writeUint64(uint64_t i) { uintToBytes(i, 8); } - -void PayloadConvert::writeUint32(uint32_t i) { uintToBytes(i, 4); } - -void PayloadConvert::writeUint16(uint16_t i) { uintToBytes(i, 2); } - -void PayloadConvert::writeUint8(uint8_t i) { uintToBytes(i, 1); } - -void PayloadConvert::writeUFloat(float value) { - writeUint16(value * 100); -} - -void PayloadConvert::writePressure(float value) { - writeUint16(value * 10); -} - -/** - * Uses a 16bit two's complement with two decimals, so the range is - * -327.68 to +327.67 degrees - */ -void PayloadConvert::writeFloat(float value) { - int16_t t = (int16_t)(value * 100); - if (value < 0) { - t = ~-t; - t = t + 1; - } - buffer[cursor++] = (byte)((t >> 8) & 0xFF); - buffer[cursor++] = (byte)t & 0xFF; -} - -void PayloadConvert::writeBitmap(bool a, bool b, bool c, bool d, bool e, bool f, - bool g, bool h) { - uint8_t bitmap = 0; - // LSB first - bitmap |= (a & 1) << 7; - bitmap |= (b & 1) << 6; - bitmap |= (c & 1) << 5; - bitmap |= (d & 1) << 4; - bitmap |= (e & 1) << 3; - bitmap |= (f & 1) << 2; - bitmap |= (g & 1) << 1; - bitmap |= (h & 1) << 0; - writeUint8(bitmap); -} - -/* ---------------- Cayenne LPP 2.0 format ---------- */ -// see specs -// http://community.mydevices.com/t/cayenne-lpp-2-0/7510 (LPP 2.0) -// https://github.com/myDevicesIoT/cayenne-docs/blob/master/docs/LORA.md -// (LPP 1.0) PAYLOAD_ENCODER == 3 -> Dynamic Sensor Payload, using channels -> -// FPort 1 PAYLOAD_ENCODER == 4 -> Packed Sensor Payload, not using channels -> -// FPort 2 - -#elif ((PAYLOAD_ENCODER == 3) || (PAYLOAD_ENCODER == 4)) - -void PayloadConvert::addByte(uint8_t value) { - /* - not implemented - */ } - -void PayloadConvert::addCount(uint16_t value, uint8_t snifftype) { - switch (snifftype) { - case MAC_SNIFF_WIFI: -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_COUNT_WIFI_CHANNEL; -#endif - buffer[cursor++] = - LPP_LUMINOSITY; // workaround since cayenne has no data type meter - buffer[cursor++] = highByte(value); - buffer[cursor++] = lowByte(value); - break; - case MAC_SNIFF_BLE: -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_COUNT_BLE_CHANNEL; -#endif - buffer[cursor++] = - LPP_LUMINOSITY; // workaround since cayenne has no data type meter - buffer[cursor++] = highByte(value); - buffer[cursor++] = lowByte(value); - break; - } -} - -void PayloadConvert::addAlarm(int8_t rssi, uint8_t msg) { -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_ALARM_CHANNEL; -#endif - buffer[cursor++] = LPP_PRESENCE; - buffer[cursor++] = msg; -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_MSG_CHANNEL; -#endif - buffer[cursor++] = LPP_ANALOG_INPUT; - buffer[cursor++] = rssi; -} - -void PayloadConvert::addVoltage(uint16_t value) { - uint16_t volt = value / 10; -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_BATT_CHANNEL; -#endif - buffer[cursor++] = LPP_ANALOG_INPUT; - buffer[cursor++] = highByte(volt); - buffer[cursor++] = lowByte(volt); -} - -void PayloadConvert::addConfig(configData_t value) { -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_ADR_CHANNEL; -#endif - buffer[cursor++] = LPP_DIGITAL_INPUT; - buffer[cursor++] = value.adrmode; -} - -void PayloadConvert::addStatus(uint16_t voltage, uint64_t uptime, float celsius, - uint32_t mem, uint8_t reset1, uint8_t reset2) { - uint16_t temp = celsius * 10; - uint16_t volt = voltage / 10; -#if (defined BAT_MEASURE_ADC || defined HAS_PMU) -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_BATT_CHANNEL; -#endif - buffer[cursor++] = LPP_ANALOG_INPUT; - buffer[cursor++] = highByte(volt); - buffer[cursor++] = lowByte(volt); -#endif // BAT_MEASURE_ADC - -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_TEMPERATURE_CHANNEL; -#endif - buffer[cursor++] = LPP_TEMPERATURE; - buffer[cursor++] = highByte(temp); - buffer[cursor++] = lowByte(temp); -} - -void PayloadConvert::addGPS(gpsStatus_t value) { -#if(HAS_GPS) - int32_t lat = value.latitude / 100; - int32_t lon = value.longitude / 100; - int32_t alt = value.altitude * 100; -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_GPS_CHANNEL; -#endif - buffer[cursor++] = LPP_GPS; - buffer[cursor++] = (byte)((lat & 0xFF0000) >> 16); - buffer[cursor++] = (byte)((lat & 0x00FF00) >> 8); - buffer[cursor++] = (byte)((lat & 0x0000FF)); - buffer[cursor++] = (byte)((lon & 0xFF0000) >> 16); - buffer[cursor++] = (byte)((lon & 0x00FF00) >> 8); - buffer[cursor++] = (byte)(lon & 0x0000FF); - buffer[cursor++] = (byte)((alt & 0xFF0000) >> 16); - buffer[cursor++] = (byte)((alt & 0x00FF00) >> 8); - buffer[cursor++] = (byte)(alt & 0x0000FF); -#endif // HAS_GPS -} - -void PayloadConvert::addSensor(uint8_t buf[]) { -#if(HAS_SENSORS) -// to come -/* - uint8_t length = buf[0]; - memcpy(buffer, buf+1, length); - cursor += length; // length of buffer -*/ -#endif // HAS_SENSORS -} - -void PayloadConvert::addBME(bmeStatus_t value) { -#if(HAS_BME) - - // data value conversions to meet cayenne data type definition - // 0.1°C per bit => -3276,7 .. +3276,7 °C - int16_t temperature = (int16_t)(value.temperature * 10.0); - // 0.1 hPa per bit => 0 .. 6553,6 hPa - uint16_t pressure = (uint16_t)(value.pressure * 10); - // 0.5% per bit => 0 .. 128 %C - uint8_t humidity = (uint8_t)(value.humidity * 2.0); - int16_t iaq = (int16_t)(value.iaq); - -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_TEMPERATURE_CHANNEL; -#endif - buffer[cursor++] = LPP_TEMPERATURE; // 2 bytes 0.1 °C Signed MSB - buffer[cursor++] = highByte(temperature); - buffer[cursor++] = lowByte(temperature); -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_BAROMETER_CHANNEL; -#endif - buffer[cursor++] = LPP_BAROMETER; // 2 bytes 0.1 hPa Unsigned MSB - buffer[cursor++] = highByte(pressure); - buffer[cursor++] = lowByte(pressure); -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_HUMIDITY_CHANNEL; -#endif - buffer[cursor++] = LPP_HUMIDITY; // 1 byte 0.5 % Unsigned - buffer[cursor++] = humidity; -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_AIR_CHANNEL; -#endif - buffer[cursor++] = LPP_LUMINOSITY; // 2 bytes, 1.0 unsigned - buffer[cursor++] = highByte(iaq); - buffer[cursor++] = lowByte(iaq); -#endif // HAS_BME -} - -void PayloadConvert::addButton(uint8_t value) { -#ifdef HAS_BUTTON -#if (PAYLOAD_ENCODER == 3) - buffer[cursor++] = LPP_BUTTON_CHANNEL; -#endif - buffer[cursor++] = LPP_DIGITAL_INPUT; - buffer[cursor++] = value; -#endif // HAS_BUTTON -} - -void PayloadConvert::addTime(time_t value) { -#if (PAYLOAD_ENCODER == 4) - uint32_t t = (uint32_t)value; - uint32_t tx_period = (uint32_t)SENDCYCLE * 2; - buffer[cursor++] = 0x03; // set config mask to UTCTime + TXPeriod - // UTCTime in seconds - buffer[cursor++] = (byte)((t & 0xFF000000) >> 24); - buffer[cursor++] = (byte)((t & 0x00FF0000) >> 16); - buffer[cursor++] = (byte)((t & 0x0000FF00) >> 8); - buffer[cursor++] = (byte)((t & 0x000000FF)); - // TXPeriod in seconds - buffer[cursor++] = (byte)((tx_period & 0xFF000000) >> 24); - buffer[cursor++] = (byte)((tx_period & 0x00FF0000) >> 16); - buffer[cursor++] = (byte)((tx_period & 0x0000FF00) >> 8); - buffer[cursor++] = (byte)((tx_period & 0x000000FF)); -#endif -} -#endif // PAYLOAD_ENCODER - -void PayloadConvert::addPM10( float value) { -#if (HAS_SDS011) -#if (PAYLOAD_ENCODER == 1) // plain - char tempBuffer[10+1]; - sprintf( tempBuffer, ",%5.1f", value); - addChars(tempBuffer, strlen(tempBuffer)); -#elif (PAYLOAD_ENCODER == 2 ) // packed - writeUint16( (uint16_t) (value*10) ); -#elif (PAYLOAD_ENCODER == 3 ) // Cayenne LPP dynamic - // TODO -#elif (PAYLOAD_ENCODER == 4 ) // Cayenne LPP packed - // TODO -#endif -#endif // HAS_SDS011 -} - -void PayloadConvert::addPM25( float value) { -#if (HAS_SDS011) -#if (PAYLOAD_ENCODER == 1) // plain - char tempBuffer[10+1]; - sprintf( tempBuffer, ",%5.1f", value); - addChars(tempBuffer, strlen(tempBuffer)); -#elif (PAYLOAD_ENCODER == 2 ) // packed - writeUint16( (uint16_t) (value*10) ); -#elif (PAYLOAD_ENCODER == 3 ) // Cayenne LPP dynamic - // TODO -#elif (PAYLOAD_ENCODER == 4 ) // Cayenne LPP packed - // TODO -#endif -#endif // HAS_SDS011 -} - void PayloadConvert::addChars( char * string, int len) { for (int i=0; i < len; i++) addByte(string[i]); From 18a0c5f54705172577fc41713f5145c0664e7616 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 15:58:32 +0100 Subject: [PATCH 066/104] Update sdcard.cpp copy+paste-error corrected --- src/sdcard.cpp | 36 ------------------------------------ 1 file changed, 36 deletions(-) diff --git a/src/sdcard.cpp b/src/sdcard.cpp index 1c1256a4..780efef9 100644 --- a/src/sdcard.cpp +++ b/src/sdcard.cpp @@ -85,39 +85,3 @@ void createFile(void) { #endif // (HAS_SDCARD) - if (++counterWrites > 2) { - // force writing to SD-card - ESP_LOGD(TAG, "flushing data to card"); - fileSDCard.flush(); - counterWrites = 0; - } -} - -void createFile(void) { - char bufferFilename[8 + 1 + 3 + 1]; - - useSDCard = false; - - for (int i = 0; i < 100; i++) { - sprintf(bufferFilename, SDCARD_FILE_NAME, i); - ESP_LOGD(TAG, "SD: looking for file <%s>", bufferFilename); - bool fileExists = SD.exists(bufferFilename); - if (!fileExists) { - ESP_LOGD(TAG, "SD: file does not exist: opening"); - fileSDCard = SD.open(bufferFilename, FILE_WRITE); - if (fileSDCard) { - ESP_LOGD(TAG, "SD: name opened: <%s>", bufferFilename); - fileSDCard.print( SDCARD_FILE_HEADER ); -#if (HAS_SDS011) - fileSDCard.print( SDCARD_FILE_HEADER_SDS011 ); -#endif - fileSDCard.println(); - useSDCard = true; - break; - } - } - } - return; -} - -#endif // (HAS_SDCARD) From c80e7aa7a5cc698eccc04a3afcaf29d497a48a5d Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:02:04 +0100 Subject: [PATCH 067/104] Update main.cpp copy+paste-error corrected --- src/main.cpp | 437 --------------------------------------------------- 1 file changed, 437 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 09aa66c4..c8f3af3d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -485,440 +485,3 @@ void setup() { } // setup() void loop() { vTaskDelete(NULL); } -3 MatrixDisplayIRQ -> matrix mux cycle -> 0,5ms (MATRIX_DISPLAY_SCAN_US) - - -// Interrupt routines -------------------------------------------------------------------------------- - -fired by hardware -DisplayIRQ -> esp32 timer 0 -> irqHandlerTask (Core 1) -CLOCKIRQ -> esp32 timer 1 -> ClockTask (Core 1) -ButtonIRQ -> external gpio -> irqHandlerTask (Core 1) -PMUIRQ -> PMU chip gpio -> irqHandlerTask (Core 1) - -fired by software (Ticker.h) -TIMESYNC_IRQ -> timeSync() -> irqHandlerTask (Core 1) -CYCLIC_IRQ -> housekeeping() -> irqHandlerTask (Core 1) -SENDCYCLE_IRQ -> sendcycle() -> irqHandlerTask (Core 1) -BME_IRQ -> bmecycle() -> irqHandlerTask (Core 1) - - -// External RTC timer (if present) -------------------------------------------------------------------------------- -triggers pps 1 sec impulse - -*/ - -// Basic Config -#include "main.h" - -configData_t cfg; // struct holds current device configuration -char lmic_event_msg[LMIC_EVENTMSG_LEN]; // display buffer for LMIC event message -uint8_t volatile channel = 0; // channel rotation counter -uint16_t volatile macs_total = 0, macs_wifi = 0, macs_ble = 0, - batt_voltage = 0; // globals for display - -hw_timer_t *ppsIRQ = NULL, *displayIRQ = NULL, *matrixDisplayIRQ = NULL; - -TaskHandle_t irqHandlerTask = NULL, ClockTask = NULL; -SemaphoreHandle_t I2Caccess; -bool volatile TimePulseTick = false; -time_t userUTCTime = 0; -timesource_t timeSource = _unsynced; - -// container holding unique MAC address hashes with Memory Alloctor using PSRAM, -// if present -std::set, Mallocator> macs; - -// initialize payload encoder -PayloadConvert payload(PAYLOAD_BUFFER_SIZE); - -// set Time Zone for user setting from paxcounter.conf -TimeChangeRule myDST = DAYLIGHT_TIME; -TimeChangeRule mySTD = STANDARD_TIME; -Timezone myTZ(myDST, mySTD); - -// local Tag for logging -static const char TAG[] = __FILE__; - -void setup() { - - char features[100] = ""; - - // create some semaphores for syncing / mutexing tasks - I2Caccess = xSemaphoreCreateMutex(); // for access management of i2c bus - assert(I2Caccess != NULL); - I2C_MUTEX_UNLOCK(); - - // disable brownout detection -#ifdef DISABLE_BROWNOUT - // register with brownout is at address DR_REG_RTCCNTL_BASE + 0xd4 - (*((uint32_t volatile *)ETS_UNCACHED_ADDR((DR_REG_RTCCNTL_BASE + 0xd4)))) = 0; -#endif - - // setup debug output or silence device -#if (VERBOSE) - Serial.begin(115200); - esp_log_level_set("*", ESP_LOG_VERBOSE); -#else - // mute logs completely by redirecting them to silence function - esp_log_level_set("*", ESP_LOG_NONE); -#endif - - do_after_reset(rtc_get_reset_reason(0)); - - // print chip information on startup if in verbose mode after coldstart -#if (VERBOSE) - - if (RTC_runmode == RUNMODE_POWERCYCLE) { - esp_chip_info_t chip_info; - esp_chip_info(&chip_info); - ESP_LOGI(TAG, - "This is ESP32 chip with %d CPU cores, WiFi%s%s, silicon revision " - "%d, %dMB %s Flash", - chip_info.cores, - (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "", - (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "", - chip_info.revision, spi_flash_get_chip_size() / (1024 * 1024), - (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" - : "external"); - ESP_LOGI(TAG, "Internal Total heap %d, internal Free Heap %d", - ESP.getHeapSize(), ESP.getFreeHeap()); -#ifdef BOARD_HAS_PSRAM - ESP_LOGI(TAG, "SPIRam Total heap %d, SPIRam Free Heap %d", - ESP.getPsramSize(), ESP.getFreePsram()); -#endif - ESP_LOGI(TAG, "ChipRevision %d, Cpu Freq %d, SDK Version %s", - ESP.getChipRevision(), ESP.getCpuFreqMHz(), ESP.getSdkVersion()); - ESP_LOGI(TAG, "Flash Size %d, Flash Speed %d", ESP.getFlashChipSize(), - ESP.getFlashChipSpeed()); - ESP_LOGI(TAG, "Wifi/BT software coexist version %s", - esp_coex_version_get()); - -#if (HAS_LORA) - ESP_LOGI(TAG, "IBM LMIC version %d.%d.%d", LMIC_VERSION_MAJOR, - LMIC_VERSION_MINOR, LMIC_VERSION_BUILD); - ESP_LOGI(TAG, "Arduino LMIC version %d.%d.%d.%d", - ARDUINO_LMIC_VERSION_GET_MAJOR(ARDUINO_LMIC_VERSION), - ARDUINO_LMIC_VERSION_GET_MINOR(ARDUINO_LMIC_VERSION), - ARDUINO_LMIC_VERSION_GET_PATCH(ARDUINO_LMIC_VERSION), - ARDUINO_LMIC_VERSION_GET_LOCAL(ARDUINO_LMIC_VERSION)); - showLoraKeys(); -#endif // HAS_LORA - -#if (HAS_GPS) - ESP_LOGI(TAG, "TinyGPS+ version %s", TinyGPSPlus::libraryVersion()); -#endif - } -#endif // VERBOSE - - // open i2c bus - i2c_init(); - -// setup power on boards with power management logic -#ifdef EXT_POWER_SW - pinMode(EXT_POWER_SW, OUTPUT); - digitalWrite(EXT_POWER_SW, EXT_POWER_ON); - strcat_P(features, " VEXT"); -#endif -#ifdef HAS_PMU - AXP192_init(); - strcat_P(features, " PMU"); -#endif - - // read (and initialize on first run) runtime settings from NVRAM - loadConfig(); // includes initialize if necessary - -// initialize display -#ifdef HAS_DISPLAY - strcat_P(features, " OLED"); - DisplayIsOn = cfg.screenon; - // display verbose info only after a coldstart (note: blocking call!) - init_display(RTC_runmode == RUNMODE_POWERCYCLE ? true : false); -#endif - - // scan i2c bus for devices - i2c_scan(); - -#ifdef BOARD_HAS_PSRAM - assert(psramFound()); - ESP_LOGI(TAG, "PSRAM found and initialized"); - strcat_P(features, " PSRAM"); -#endif - -#ifdef BAT_MEASURE_EN - pinMode(BAT_MEASURE_EN, OUTPUT); -#endif - -// initialize leds -#if (HAS_LED != NOT_A_PIN) - pinMode(HAS_LED, OUTPUT); - strcat_P(features, " LED"); - -#ifdef LED_POWER_SW - pinMode(LED_POWER_SW, OUTPUT); - digitalWrite(LED_POWER_SW, LED_POWER_ON); -#endif - -#ifdef HAS_TWO_LED - pinMode(HAS_TWO_LED, OUTPUT); - strcat_P(features, " LED1"); -#endif - -// use LED for power display if we have additional RGB LED, else for status -#ifdef HAS_RGB_LED - switch_LED(LED_ON); - strcat_P(features, " RGB"); - rgb_set_color(COLOR_PINK); -#endif - -#endif // HAS_LED - -#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED) - // start led loop - ESP_LOGI(TAG, "Starting LED Controller..."); - xTaskCreatePinnedToCore(ledLoop, // task function - "ledloop", // name of task - 1024, // stack size of task - (void *)1, // parameter of the task - 3, // priority of the task - &ledLoopTask, // task handle - 0); // CPU core -#endif - -// initialize wifi antenna -#ifdef HAS_ANTENNA_SWITCH - strcat_P(features, " ANT"); - antenna_init(); - antenna_select(cfg.wifiant); -#endif - -// initialize battery status -#if (defined BAT_MEASURE_ADC || defined HAS_PMU) - strcat_P(features, " BATT"); - calibrate_voltage(); - batt_voltage = read_voltage(); -#endif - -#if (USE_OTA) - strcat_P(features, " OTA"); - // reboot to firmware update mode if ota trigger switch is set - if (RTC_runmode == RUNMODE_UPDATE) - start_ota_update(); -#endif - -// start BLE scan callback if BLE function is enabled in NVRAM configuration -// or switch off bluetooth, if not compiled -#if (BLECOUNTER) - strcat_P(features, " BLE"); - if (cfg.blescan) { - ESP_LOGI(TAG, "Starting Bluetooth..."); - start_BLEscan(); - } else - btStop(); -#else - // remove bluetooth stack to gain more free memory - btStop(); - ESP_ERROR_CHECK(esp_bt_mem_release(ESP_BT_MODE_BTDM)); - ESP_ERROR_CHECK(esp_coex_preference_set( - ESP_COEX_PREFER_WIFI)); // configure Wifi/BT coexist lib -#endif - -// initialize gps -#if (HAS_GPS) - strcat_P(features, " GPS"); - if (gps_init()) { - ESP_LOGI(TAG, "Starting GPS Feed..."); - xTaskCreatePinnedToCore(gps_loop, // task function - "gpsloop", // name of task - 2048, // stack size of task - (void *)1, // parameter of the task - 1, // priority of the task - &GpsTask, // task handle - 1); // CPU core - } -#endif - -// initialize sensors -#if (HAS_SENSORS) - strcat_P(features, " SENS"); - sensor_init(); -#endif - -// initialize LoRa -#if (HAS_LORA) - strcat_P(features, " LORA"); - // kick off join, except we come from sleep - assert(lora_stack_init(RTC_runmode == RUNMODE_WAKEUP ? false : true) == - ESP_OK); -#endif - -// initialize SPI -#ifdef HAS_SPI - strcat_P(features, " SPI"); - assert(spi_init() == ESP_OK); -#endif - -#ifdef HAS_SDCARD - if (sdcardInit()) - strcat_P(features, " SD"); -#endif - -#if (HAS_SDS011) -// ESP_LOGI(TAG, "init fine-dust-sensor"); - if ( sds011_init() ) - strcat_P(features, " SDS"); -#endif - -#if (VENDORFILTER) - strcat_P(features, " FILTER"); -#endif - -// initialize matrix display -#ifdef HAS_MATRIX_DISPLAY - strcat_P(features, " LED_MATRIX"); - MatrixDisplayIsOn = cfg.screenon; - init_matrix_display(); // note: blocking call -#endif - -// show payload encoder -#if PAYLOAD_ENCODER == 1 - strcat_P(features, " PLAIN"); -#elif PAYLOAD_ENCODER == 2 - strcat_P(features, " PACKED"); -#elif PAYLOAD_ENCODER == 3 - strcat_P(features, " LPPDYN"); -#elif PAYLOAD_ENCODER == 4 - strcat_P(features, " LPPPKD"); -#endif - -// initialize RTC -#ifdef HAS_RTC - strcat_P(features, " RTC"); - assert(rtc_init()); -#endif - -#if defined HAS_DCF77 - strcat_P(features, " DCF77"); -#endif - -#if defined HAS_IF482 - strcat_P(features, " IF482"); -#endif - -#if (WIFICOUNTER) - strcat_P(features, " WIFI"); - // start wifi in monitor mode and start channel rotation timer - ESP_LOGI(TAG, "Starting Wifi..."); - wifi_sniffer_init(); -#else - // switch off wifi - esp_wifi_deinit(); -#endif - - // initialize salt value using esp_random() called by random() in - // arduino-esp32 core. Note: do this *after* wifi has started, since - // function gets it's seed from RF noise - get_salt(); // get new 16bit for salting hashes - - // start state machine - ESP_LOGI(TAG, "Starting Interrupt Handler..."); - xTaskCreatePinnedToCore(irqHandler, // task function - "irqhandler", // name of task - 4096, // stack size of task - (void *)1, // parameter of the task - 2, // priority of the task - &irqHandlerTask, // task handle - 1); // CPU core - -// initialize BME sensor (BME280/BME680) -#if (HAS_BME) -#ifdef HAS_BME680 - strcat_P(features, " BME680"); -#elif defined HAS_BME280 - strcat_P(features, " BME280"); -#elif defined HAS_BMP180 - strcat_P(features, " BMP180"); -#endif - if (bme_init()) - ESP_LOGI(TAG, "Starting BME sensor..."); -#endif - - // starting timers and interrupts - assert(irqHandlerTask != NULL); // has interrupt handler task started? - ESP_LOGI(TAG, "Starting Timers..."); - -// display interrupt -#ifdef HAS_DISPLAY - // https://techtutorialsx.com/2017/10/07/esp32-arduino-timer-interrupts/ - // prescaler 80 -> divides 80 MHz CPU freq to 1 MHz, timer 0, count up - displayIRQ = timerBegin(0, 80, true); - timerAttachInterrupt(displayIRQ, &DisplayIRQ, true); - timerAlarmWrite(displayIRQ, DISPLAYREFRESH_MS * 1000, true); - timerAlarmEnable(displayIRQ); -#endif - -// LED Matrix display interrupt -#ifdef HAS_MATRIX_DISPLAY - // https://techtutorialsx.com/2017/10/07/esp32-arduino-timer-interrupts/ - // prescaler 80 -> divides 80 MHz CPU freq to 1 MHz, timer 3, count up - matrixDisplayIRQ = timerBegin(3, 80, true); - timerAttachInterrupt(matrixDisplayIRQ, &MatrixDisplayIRQ, true); - timerAlarmWrite(matrixDisplayIRQ, MATRIX_DISPLAY_SCAN_US, true); - timerAlarmEnable(matrixDisplayIRQ); -#endif - -// initialize button -#ifdef HAS_BUTTON - strcat_P(features, " BTN_"); -#ifdef BUTTON_PULLUP - strcat_P(features, "PU"); -#else - strcat_P(features, "PD"); -#endif // BUTTON_PULLUP - button_init(HAS_BUTTON); -#endif // HAS_BUTTON - - // cyclic function interrupts - sendcycler.attach(SENDCYCLE * 2, sendcycle); - housekeeper.attach(HOMECYCLE, housekeeping); - -#if (TIME_SYNC_INTERVAL) - -#if (!(TIME_SYNC_LORAWAN) && !(TIME_SYNC_LORASERVER) && !defined HAS_GPS && \ - !defined HAS_RTC) -#warning you did not specify a time source, time will not be synched -#endif - -// initialize gps time -#if (HAS_GPS) - fetch_gpsTime(); -#endif - -#if (defined HAS_IF482 || defined HAS_DCF77) - ESP_LOGI(TAG, "Starting Clock Controller..."); - clock_init(); -#endif - -#if (TIME_SYNC_LORASERVER) - timesync_init(); // create loraserver time sync task -#endif - - ESP_LOGI(TAG, "Starting Timekeeper..."); - assert(timepulse_init()); // setup pps timepulse - timepulse_start(); // starts pps and cyclic time sync - -#endif // TIME_SYNC_INTERVAL - - // show compiled features - ESP_LOGI(TAG, "Features:%s", features); - - // set runmode to normal - RTC_runmode = RUNMODE_NORMAL; - - vTaskDelete(NULL); - -} // setup() - -void loop() { vTaskDelete(NULL); } From ddf06b491327c4e3daaf4d5e279acf838059574a Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:03:29 +0100 Subject: [PATCH 068/104] Update timekeeper.cpp copy+paste-error corrected --- src/timekeeper.cpp | 270 --------------------------------------------- 1 file changed, 270 deletions(-) diff --git a/src/timekeeper.cpp b/src/timekeeper.cpp index c6540286..f95a97ab 100644 --- a/src/timekeeper.cpp +++ b/src/timekeeper.cpp @@ -320,274 +320,4 @@ void clock_loop(void *taskparameter) { // ClockTask } // for } // clock_loop() -#endif // HAS_IF482 || defined HAS_DCF77 - if (t) { - timeSource = _rtc; - goto finish; - } -#endif - - goto finish; - -finish: - - setMyTime((uint32_t)t, t_msec, timeSource); // set time - -} // calibrateTime() - -// adjust system time, calibrate RTC and RTC_INT pps -void IRAM_ATTR setMyTime(uint32_t t_sec, uint16_t t_msec, - timesource_t mytimesource) { - - // called with invalid timesource? - if (mytimesource == _unsynced) - return; - - // increment t_sec only if t_msec > 1000 - time_t time_to_set = (time_t)(t_sec + t_msec / 1000); - - // do we have a valid time? - if (timeIsValid(time_to_set)) { - - // if we have msec fraction, then wait until top of second with - // millisecond precision - if (t_msec % 1000) { - time_to_set++; - vTaskDelay(pdMS_TO_TICKS(1000 - t_msec % 1000)); - } - - ESP_LOGD(TAG, "[%0.3f] UTC epoch time: %d.%03d sec", millis() / 1000.0, - time_to_set, t_msec % 1000); - -// if we have got an external timesource, set RTC time and shift RTC_INT pulse -// to top of second -#ifdef HAS_RTC - if ((mytimesource == _gps) || (mytimesource == _lora)) - set_rtctime(time_to_set); -#endif - -// if we have a software pps timer, shift it to top of second -#if (!defined GPS_INT && !defined RTC_INT) - timerWrite(ppsIRQ, 0); // reset pps timer - CLOCKIRQ(); // fire clock pps, this advances time 1 sec -#endif - - setTime(time_to_set); // set the time on top of second - - timeSource = mytimesource; // set global variable - timesyncer.attach(TIME_SYNC_INTERVAL * 60, timeSync); - ESP_LOGI(TAG, "[%0.3f] Timesync finished, time was set | source: %c", - millis() / 1000.0, timeSetSymbols[timeSource]); - } else { - timesyncer.attach(TIME_SYNC_INTERVAL_RETRY * 60, timeSync); - ESP_LOGI(TAG, "[%0.3f] Timesync failed, invalid time fetched | source: %c", - millis() / 1000.0, timeSetSymbols[timeSource]); - } -} - -// helper function to setup a pulse per second for time synchronisation -uint8_t timepulse_init() { - -// use time pulse from GPS as time base with fixed 1Hz frequency -#ifdef GPS_INT - - // setup external interupt pin for rising edge GPS INT - pinMode(GPS_INT, INPUT_PULLDOWN); - // setup external rtc 1Hz clock as pulse per second clock - ESP_LOGI(TAG, "Timepulse: external (GPS)"); - return 1; // success - -// use pulse from on board RTC chip as time base with fixed frequency -#elif defined RTC_INT - - // setup external interupt pin for falling edge RTC INT - pinMode(RTC_INT, INPUT_PULLUP); - - // setup external rtc 1Hz clock as pulse per second clock - if (I2C_MUTEX_LOCK()) { - Rtc.SetSquareWavePinClockFrequency(DS3231SquareWaveClock_1Hz); - Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeClock); - I2C_MUTEX_UNLOCK(); - ESP_LOGI(TAG, "Timepulse: external (RTC)"); - return 1; // success - } else { - ESP_LOGE(TAG, "RTC initialization error, I2C bus busy"); - return 0; // failure - } - return 1; // success - -#else - // use ESP32 hardware timer as time base with adjustable frequency - ppsIRQ = timerBegin(1, 8000, true); // set 80 MHz prescaler to 1/10000 sec - timerAlarmWrite(ppsIRQ, 10000, true); // 1000ms - ESP_LOGI(TAG, "Timepulse: internal (ESP32 hardware timer)"); - return 1; // success - -#endif -} // timepulse_init - -void timepulse_start(void) { - -#ifdef GPS_INT // start external clock gps pps line - attachInterrupt(digitalPinToInterrupt(GPS_INT), CLOCKIRQ, RISING); -#elif defined RTC_INT // start external clock rtc - attachInterrupt(digitalPinToInterrupt(RTC_INT), CLOCKIRQ, FALLING); -#else // start internal clock esp32 hardware timer - timerAttachInterrupt(ppsIRQ, &CLOCKIRQ, true); - timerAlarmEnable(ppsIRQ); -#endif - - // start cyclic time sync - timeSync(); // init systime by RTC or GPS or LORA - timesyncer.attach(TIME_SYNC_INTERVAL * 60, timeSync); -} - -// interrupt service routine triggered by either pps or esp32 hardware timer -void IRAM_ATTR CLOCKIRQ(void) { - - BaseType_t xHigherPriorityTaskWoken = pdFALSE; - - SyncToPPS(); // advance systime, see microTime.h - -// advance wall clock, if we have -#if (defined HAS_IF482 || defined HAS_DCF77) - xTaskNotifyFromISR(ClockTask, uint32_t(now()), eSetBits, - &xHigherPriorityTaskWoken); -#endif - -// flip time pulse ticker, if needed -#ifdef HAS_DISPLAY -#if (defined GPS_INT || defined RTC_INT) - TimePulseTick = !TimePulseTick; // flip pulse ticker -#endif -#endif - - // yield only if we should - if (xHigherPriorityTaskWoken) - portYIELD_FROM_ISR(); -} - -// helper function to check plausibility of a time -time_t timeIsValid(time_t const t) { - // is it a time in the past? we use compile date to guess - return (t >= compiledUTC() ? t : 0); -} - -// helper function to convert compile time to UTC time -time_t compiledUTC(void) { - static time_t t = myTZ.toUTC(RtcDateTime(__DATE__, __TIME__).Epoch32Time()); - return t; -} - -// helper function to calculate serial transmit time -TickType_t tx_Ticks(uint32_t framesize, unsigned long baud, uint32_t config, - int8_t rxPin, int8_t txPins) { - - uint32_t databits = ((config & 0x0c) >> 2) + 5; - uint32_t stopbits = ((config & 0x20) >> 5) + 1; - uint32_t txTime = (databits + stopbits + 1) * framesize * 1000.0 / baud; - // +1 for the startbit - - return round(txTime); -} - -#if (defined HAS_IF482 || defined HAS_DCF77) - -#if (defined HAS_DCF77 && defined HAS_IF482) -#error You must define at most one of IF482 or DCF77! -#endif - -void clock_init(void) { - -// setup clock output interface -#ifdef HAS_IF482 - IF482.begin(HAS_IF482); -#elif defined HAS_DCF77 - pinMode(HAS_DCF77, OUTPUT); -#endif - - userUTCTime = now(); - - xTaskCreatePinnedToCore(clock_loop, // task function - "clockloop", // name of task - 2048, // stack size of task - (void *)&userUTCTime, // start time as task parameter - 4, // priority of the task - &ClockTask, // task handle - 1); // CPU core - - assert(ClockTask); // has clock task started? -} // clock_init - -void clock_loop(void *taskparameter) { // ClockTask - - // caveat: don't use now() in this task, it will cause a race condition - // due to concurrent access to i2c bus when reading/writing from/to rtc chip! - -#define nextmin(t) (t + DCF77_FRAME_SIZE + 1) // next minute - -#ifdef HAS_TWO_LED - static bool led1_state = false; -#endif - uint32_t printtime; - time_t t = *((time_t *)taskparameter), last_printtime = 0; // UTC time seconds - -#ifdef HAS_DCF77 - uint8_t *DCFpulse; // pointer on array with DCF pulse bits - DCFpulse = DCF77_Frame(nextmin(t)); // load first DCF frame before start -#elif defined HAS_IF482 - static TickType_t txDelay = pdMS_TO_TICKS(1000 - IF482_SYNC_FIXUP) - - tx_Ticks(IF482_FRAME_SIZE, HAS_IF482); -#endif - - // output the next second's pulse/telegram after pps arrived - for (;;) { - - // wait for timepulse and store UTC time in seconds got - xTaskNotifyWait(0x00, ULONG_MAX, &printtime, portMAX_DELAY); - t = time_t(printtime); - - // no confident or no recent time -> suppress clock output - if ((timeStatus() == timeNotSet) || !(timeIsValid(t)) || - (t == last_printtime)) - continue; - -#if defined HAS_IF482 - - // wait until moment to fire. Normally we won't get notified during this - // timespan, except when next pps pulse arrives while waiting, because pps - // was adjusted by recent time sync - if (xTaskNotifyWait(0x00, ULONG_MAX, &printtime, txDelay) == pdTRUE) - t = time_t(printtime); // new adjusted UTC time seconds - - // send IF482 telegram - IF482.print(IF482_Frame(t + 1)); // note: telegram is for *next* second - -#elif defined HAS_DCF77 - - if (second(t) == DCF77_FRAME_SIZE - 1) // is it time to load new frame? - DCFpulse = DCF77_Frame(nextmin(t)); // generate frame for next minute - - if (minute(nextmin(t)) == // do we still have a recent frame? - DCFpulse[DCF77_FRAME_SIZE]) // (timepulses could be missed!) - DCF77_Pulse(t, DCFpulse); // then output current second's pulse - - // else we have no recent frame, thus suppressing clock output - -#endif - -// pps blink on secondary LED if we have one -#ifdef HAS_TWO_LED - if (led1_state) - switch_LED1(LED_OFF); - else - switch_LED1(LED_ON); - led1_state = !led1_state; -#endif - - last_printtime = t; - - } // for -} // clock_loop() - #endif // HAS_IF482 || defined HAS_DCF77 From 090a1c6e3554c077e1849312c85adc9223a34e52 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:25:25 +0100 Subject: [PATCH 069/104] Update senddata.cpp copy+paste-error corrected --- src/senddata.cpp | 138 ----------------------------------------------- 1 file changed, 138 deletions(-) diff --git a/src/senddata.cpp b/src/senddata.cpp index f89710ca..00986562 100644 --- a/src/senddata.cpp +++ b/src/senddata.cpp @@ -181,144 +181,6 @@ void sendData() { } // sendData() -void flushQueues() { -#if (HAS_LORA) - lora_queuereset(); -#endif -#ifdef HAS_SPI - spi_queuereset(); -#endif -} - SendBuffer.MessagePort = port; - } - memcpy(SendBuffer.Message, payload.getBuffer(), SendBuffer.MessageSize); - -// enqueue message in device's send queues -#if (HAS_LORA) - lora_enqueuedata(&SendBuffer); -#endif -#ifdef HAS_SPI - spi_enqueuedata(&SendBuffer); -#endif - -// write data to sdcard, if present -#ifdef HAS_SDCARD - sdcardWriteData(macs_wifi, macs_ble); -#endif - -} // SendPayload - -// interrupt triggered function to prepare payload to send -void sendData() { - - uint8_t bitmask = cfg.payloadmask; - uint8_t mask = 1; - #if (HAS_GPS) - gpsStatus_t gps_status; - #endif - - while (bitmask) { - switch (bitmask & mask) { - -#if ((WIFICOUNTER) || (BLECOUNTER)) - case COUNT_DATA: - payload.reset(); -#if !(PAYLOAD_OPENSENSEBOX) - if (cfg.wifiscan) - payload.addCount(macs_wifi, MAC_SNIFF_WIFI); - if (cfg.blescan) - payload.addCount(macs_ble, MAC_SNIFF_BLE); -#endif -#if (HAS_GPS) - if (GPSPORT == COUNTERPORT) { - // send GPS position only if we have a fix - if (gps_hasfix()) { - gps_storelocation(&gps_status); - payload.addGPS(gps_status); - } else - ESP_LOGD(TAG, "No valid GPS position"); - } -#endif -#if (PAYLOAD_OPENSENSEBOX) - if (cfg.wifiscan) - payload.addCount(macs_wifi, MAC_SNIFF_WIFI); - if (cfg.blescan) - payload.addCount(macs_ble, MAC_SNIFF_BLE); -#endif -#if (HAS_SDS011) - payload.addPM10(pm10); - payload.addPM25(pm25); -#endif - SendPayload(COUNTERPORT, prio_normal); - // clear counter if not in cumulative counter mode - if (cfg.countermode != 1) { - reset_counters(); // clear macs container and reset all counters - get_salt(); // get new salt for salting hashes - ESP_LOGI(TAG, "Counter cleared"); - } -#ifdef HAS_DISPLAY - else - oledPlotCurve(macs.size(), true); -#endif - break; -#endif - -#if (HAS_BME) - case MEMS_DATA: - payload.reset(); - payload.addBME(bme_status); - SendPayload(BMEPORT, prio_normal); - break; -#endif - -#if (HAS_GPS) - case GPS_DATA: - if (GPSPORT != COUNTERPORT) { - // send GPS position only if we have a fix - if (gps_hasfix()) { - gps_storelocation(&gps_status); - payload.reset(); - payload.addGPS(gps_status); - SendPayload(GPSPORT, prio_high); - } else - ESP_LOGD(TAG, "No valid GPS position"); - } - break; -#endif - -#if (HAS_SENSORS) - case SENSOR1_DATA: - payload.reset(); - payload.addSensor(sensor_read(1)); - SendPayload(SENSOR1PORT, prio_normal); - break; - case SENSOR2_DATA: - payload.reset(); - payload.addSensor(sensor_read(2)); - SendPayload(SENSOR2PORT, prio_normal); - break; - case SENSOR3_DATA: - payload.reset(); - payload.addSensor(sensor_read(3)); - SendPayload(SENSOR3PORT, prio_normal); - break; -#endif - -#if (defined BAT_MEASURE_ADC || defined HAS_PMU) - case BATT_DATA: - payload.reset(); - payload.addVoltage(read_voltage()); - SendPayload(BATTPORT, prio_normal); - break; -#endif - - } // switch - bitmask &= ~mask; - mask <<= 1; - } // while (bitmask) - -} // sendData() - void flushQueues() { #if (HAS_LORA) lora_queuereset(); From 8e8d2bf8eec51059c832cd0f54260b75c73f2aac Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:34:37 +0100 Subject: [PATCH 070/104] Add files via upload --- EspSoftwareSerial/LICENSE | 502 +++++ EspSoftwareSerial/README.md | 124 ++ .../examples/loopback/loopback.ino | 263 +++ .../examples/onewiretest/onewiretest.ino | 48 + .../examples/repeater/repeater.ino | 183 ++ .../examples/servoTester/servoTester.ino | 115 ++ .../examples/swsertest/swsertest.ino | 47 + EspSoftwareSerial/keywords.txt | 43 + EspSoftwareSerial/library.json | 15 + EspSoftwareSerial/library.properties | 9 + EspSoftwareSerial/src/SoftwareSerial.cpp | 542 +++++ EspSoftwareSerial/src/SoftwareSerial.h | 255 +++ .../src/circular_queue/Delegate.h | 1786 +++++++++++++++++ .../src/circular_queue/MultiDelegate.h | 503 +++++ .../src/circular_queue/circular_queue.h | 399 ++++ .../src/circular_queue/circular_queue_mp.h | 200 ++ EspSoftwareSerial/src/circular_queue/ghostl.h | 92 + 17 files changed, 5126 insertions(+) create mode 100644 EspSoftwareSerial/LICENSE create mode 100644 EspSoftwareSerial/README.md create mode 100644 EspSoftwareSerial/examples/loopback/loopback.ino create mode 100644 EspSoftwareSerial/examples/onewiretest/onewiretest.ino create mode 100644 EspSoftwareSerial/examples/repeater/repeater.ino create mode 100644 EspSoftwareSerial/examples/servoTester/servoTester.ino create mode 100644 EspSoftwareSerial/examples/swsertest/swsertest.ino create mode 100644 EspSoftwareSerial/keywords.txt create mode 100644 EspSoftwareSerial/library.json create mode 100644 EspSoftwareSerial/library.properties create mode 100644 EspSoftwareSerial/src/SoftwareSerial.cpp create mode 100644 EspSoftwareSerial/src/SoftwareSerial.h create mode 100644 EspSoftwareSerial/src/circular_queue/Delegate.h create mode 100644 EspSoftwareSerial/src/circular_queue/MultiDelegate.h create mode 100644 EspSoftwareSerial/src/circular_queue/circular_queue.h create mode 100644 EspSoftwareSerial/src/circular_queue/circular_queue_mp.h create mode 100644 EspSoftwareSerial/src/circular_queue/ghostl.h diff --git a/EspSoftwareSerial/LICENSE b/EspSoftwareSerial/LICENSE new file mode 100644 index 00000000..f166cc57 --- /dev/null +++ b/EspSoftwareSerial/LICENSE @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! \ No newline at end of file diff --git a/EspSoftwareSerial/README.md b/EspSoftwareSerial/README.md new file mode 100644 index 00000000..2d14c9e6 --- /dev/null +++ b/EspSoftwareSerial/README.md @@ -0,0 +1,124 @@ +# EspSoftwareSerial + +## Implementation of the Arduino software serial library for the ESP8266 / ESP32 + +This fork implements interrupt service routine best practice. +In the receive interrupt, instead of blocking for whole bytes +at a time - voiding any near-realtime behavior of the CPU - only level +change and timestamp are recorded. The more time consuming phase +detection and byte assembly are done in the main code. + +Except at high bitrates, depending on other ongoing activity, +interrupts in particular, this software serial adapter +supports full duplex receive and send. At high bitrates (115200bps) +send bit timing can be improved at the expense of blocking concurrent +full duplex receives, with the ``SoftwareSerial::enableIntTx(false)`` function call. + +The same functionality is given as the corresponding AVR library but +several instances can be active at the same time. Speed up to 115200 baud +is supported. Besides a constructor compatible to the AVR SoftwareSerial class, +and updated constructor that takes no arguments exists, instead the ``begin()`` +function can handle the pin assignments and logic inversion. +It also has optional input buffer capacity arguments for byte buffer and ISR bit buffer. +This way, it is a better drop-in replacement for the hardware serial APIs on the ESP MCUs. + +Please note that due to the fact that the ESPs always have other activities +ongoing, there will be some inexactness in interrupt timings. This may +lead to inevitable, but few, bit errors when having heavy data traffic +at high baud rates. + +## Resource optimization + +The memory footprint can be optimized to just fit the amount of expected +incoming asynchronous data. +For this, the ``SoftwareSerial`` constructor provides two arguments. First, the +octet buffer capacity for assembled received octets can be set. Read calls are +satisfied from this buffer, freeing it in return. +Second, the signal edge detection buffer of 32bit fields can be resized. +One octet may require up to to 10 fields, but fewer may be needed, +depending on the bit pattern. Any read or write calls check this buffer +to assemble received octets, thus promoting completed octets to the octet +buffer, freeing fields in the edge detection buffer. + +Look at the swsertest.ino example. There, on reset, ASCII characters ' ' to 'z' +are sent. This happens not as a block write, but in a single write call per +character. As the example uses a local loopback wire, every outgoing bit is +immediately received back. Therefore, any single write call causes up to +10 fields - depending on the exact bit pattern - to be occupied in the signal +edge detection buffer. In turn, as explained before, each single write call +also causes received bit assembly to be performed, promoting these bits from +the signal edge detection buffer to the octet buffer as soon as possible. +Explaining by way of contrast, if during a a single write call, perhaps because +of using block writing, more than a single octet is received, there will be a +need for more than 10 fields in the signal edge detection buffer. +The necessary capacity of the octet buffer only depends on the amount of incoming +data until the next read call. + +For the swsertest.ino example, this results in the following optimized +constructor arguments to spend only the minimum RAM on buffers required: + +The octet buffer capacity (``bufCapacity``) is 93 (91 characters net plus two tolerance). +The signal edge detection buffer capacity (``isrBufCapacity``) is 10, as each octet has +10 bits on the wire, which are immediately received during the write, and each +write call causes the signal edge detection to promote the previously sent and +received bits to the octet buffer. + +In a more generalized scenario, calculate the bits (use message size in octets +times 10) that may be asynchronously received to determine the value for +``isrBufCapacity`` in the constructor. Also use the number of received octets +that must be buffered for reading as the value of ``bufCapacity``. +The more frequently your code calls write or read functions, the greater the +chances are that you can reduce the ``isrBufCapacity`` footprint without losing data, +and each time you call read to fetch from the octet buffer, you reduce the +need for space there. + +## SoftwareSerialConfig and parity +The configuration of the data stream is done via a ``SoftwareSerialConfig`` +argument to ``begin()``. Word lengths can be set to between 5 and 8 bits, parity +can be N(one), O(dd) or E(ven) and 1 or 2 stop bits can be used. The default is +``SWSERIAL_8N1`` using 8 bits, no parity and 1 stop bit but any combination can +be used, e.g. ``SWSERIAL_7E2``. If using EVEN or ODD parity, any parity errors +can be detected with the ``peekParityError()`` function. Note that parity +checking must be done before ``read()``, as the parity information is removed +from the buffer when reading the corresponding byte. + +To allow flexible 9-bit and data/addressing protocols, the additional parity +modes MARK and SPACE are also available. Furthermore, the parity mode can be +individually set in each call to ``write()``. + +This allows a simple implementation of protocols where the parity bit is used to +distinguish between data and addresses/commands ("9-bit" protocols). First set +up SoftwareSerial with parity mode SPACE, e.g. ``SWSERIAL_8S1``. This will add a +parity bit to every byte sent, setting it to logical zero (SPACE parity). + +To detect incoming bytes with the parity bit set (MARK parity), use the +``peekParityError()`` function. To send a byte with the parity bit set, just add +``MARK`` as the second argument when writing, e.g. ``write(ch, MARK)``. + +## Using and updating EspSoftwareSerial in the esp8266com/esp8266 Arduino build environment + +EspSoftwareSerial is both part of the BSP download for ESP8266 in Arduino, +and it is set up as a Git submodule in the esp8266 source tree, +specifically in ``.../esp8266/libraries/SoftwareSerial`` when using a Github +repository clone in your Arduino sketchbook hardware directory. +This supersedes any version of EspSoftwareSerial installed for instance via +the Arduino library manager, it is not required to install EspSoftwareSerial +for the ESP8266 separately at all, but doing so has ill effect. + +The responsible maintainer of the esp8266 repository has kindly shared the +following command line instructions to use, if one wishes to manually +update EspSoftwareSerial to a newer release than pulled in via the ESP8266 Arduino BSP: + +To update esp8266/arduino SoftwareSerial submodule to lastest master: + +Clean it (optional): +```shell +$ rm -rf libraries/SoftwareSerial +$ git submodule update --init +``` +Now update it: +```shell +$ cd libraries/SoftwareSerial +$ git checkout master +$ git pull +``` diff --git a/EspSoftwareSerial/examples/loopback/loopback.ino b/EspSoftwareSerial/examples/loopback/loopback.ino new file mode 100644 index 00000000..b612bdec --- /dev/null +++ b/EspSoftwareSerial/examples/loopback/loopback.ino @@ -0,0 +1,263 @@ +#include + +// On ESP8266: +// Local SoftwareSerial loopback, connect D5 (rx) and D6 (tx). +// For local hardware loopback, connect D5 to D8 (tx), D6 to D7 (rx). +// For hardware send/sink, connect D7 (rx) and D8 (tx). +// Hint: The logger is run at 9600bps such that enableIntTx(true) can remain unchanged. Blocking +// interrupts severely impacts the ability of the SoftwareSerial devices to operate concurrently +// and/or in duplex mode. +// Operating in software serial full duplex mode, runs at 19200bps and few errors (~2.5%). +// Operating in software serial half duplex mode (both loopback and repeater), +// runs at 57600bps with nearly no errors. +// Operating loopback in full duplex, and repeater in half duplex, runs at 38400bps with nearly no errors. +// On ESP32: +// For SoftwareSerial or hardware send/sink, connect D5 (rx) and D6 (tx). +// Hardware Serial2 defaults to D4 (rx), D3 (tx). +// For local hardware loopback, connect D5 (rx) to D3 (tx), D6 (tx) to D4 (rx). + +#if defined(ESP8266) && !defined(D5) +#define D5 (14) +#define D6 (12) +#define D7 (13) +#define D8 (15) +#define TX (1) +#endif + +// Pick only one of HWLOOPBACK, HWSOURCESWSINK, or HWSOURCESINK +//#define HWLOOPBACK 1 +//#define HWSOURCESWSINK 1 +//#define HWSOURCESINK 1 +#define HALFDUPLEX 1 + +#ifdef ESP32 +constexpr int IUTBITRATE = 19200; +#else +constexpr int IUTBITRATE = 19200; +#endif + +#if defined(ESP8266) +constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; +constexpr SerialConfig hwSerialConfig = SERIAL_8E1; +#elif defined(ESP32) +constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; +constexpr uint32_t hwSerialConfig = SERIAL_8E1; +#else +constexpr unsigned swSerialConfig = 3; +#endif +constexpr bool invert = false; + +constexpr int BLOCKSIZE = 16; // use fractions of 256 + +unsigned long start; +String effTxTxt("eff. tx: "); +String effRxTxt("eff. rx: "); +int txCount; +int rxCount; +int expected; +int rxErrors; +int rxParityErrors; +constexpr int ReportInterval = IUTBITRATE / 8; + +#if defined(ESP8266) +#if defined(HWLOOPBACK) || defined(HWSOURCESWSINK) +HardwareSerial& hwSerial(Serial); +SoftwareSerial serialIUT; +SoftwareSerial logger; +#elif defined(HWSOURCESINK) +HardwareSerial& serialIUT(Serial); +SoftwareSerial logger; +#else +SoftwareSerial serialIUT; +HardwareSerial& logger(Serial); +#endif +#elif defined(ESP32) +#if defined(HWLOOPBACK) || defined (HWSOURCESWSINK) +HardwareSerial& hwSerial(Serial2); +SoftwareSerial serialIUT; +#elif defined(HWSOURCESINK) +HardwareSerial& serialIUT(Serial2); +#else +SoftwareSerial serialIUT; +#endif +HardwareSerial& logger(Serial); +#else +SoftwareSerial serialIUT(14, 12); +HardwareSerial& logger(Serial); +#endif + +void setup() { +#if defined(ESP8266) +#if defined(HWLOOPBACK) || defined(HWSOURCESINK) || defined(HWSOURCESWSINK) + Serial.begin(IUTBITRATE, hwSerialConfig, SERIAL_FULL, 1, invert); + Serial.swap(); + Serial.setRxBufferSize(2 * BLOCKSIZE); + logger.begin(9600, SWSERIAL_8N1, -1, TX); +#else + logger.begin(9600); +#endif +#if !defined(HWSOURCESINK) + serialIUT.begin(IUTBITRATE, swSerialConfig, D5, D6, invert, 2 * BLOCKSIZE); +#ifdef HALFDUPLEX + serialIUT.enableIntTx(false); +#endif +#endif +#elif defined(ESP32) +#if defined(HWLOOPBACK) || defined(HWSOURCESWSINK) + Serial2.begin(IUTBITRATE, hwSerialConfig, D4, D3, invert); + Serial2.setRxBufferSize(2 * BLOCKSIZE); +#elif defined(HWSOURCESINK) + serialIUT.begin(IUTBITRATE, hwSerialConfig, D5, D6, invert); + serialIUT.setRxBufferSize(2 * BLOCKSIZE); +#endif +#if !defined(HWSOURCESINK) + serialIUT.begin(IUTBITRATE, swSerialConfig, D5, D6, invert, 2 * BLOCKSIZE); +#ifdef HALFDUPLEX + serialIUT.enableIntTx(false); +#endif +#endif + logger.begin(9600); +#else +#if !defined(HWSOURCESINK) + serialIUT.begin(IUTBITRATE); +#endif + logger.begin(9600); +#endif + + logger.println("Loopback example for EspSoftwareSerial"); + + start = micros(); + txCount = 0; + rxCount = 0; + rxErrors = 0; + rxParityErrors = 0; + expected = -1; +} + +unsigned char c = 0; + +void loop() { +#ifdef HALFDUPLEX + char block[BLOCKSIZE]; +#endif + char inBuf[BLOCKSIZE]; + for (int i = 0; i < BLOCKSIZE; ++i) { +#ifndef HALFDUPLEX +#ifdef HWSOURCESWSINK + hwSerial.write(c); +#else + serialIUT.write(c); +#endif +#ifdef HWLOOPBACK + int avail = hwSerial.available(); + while ((0 == (i % 8)) && avail > 0) { + int inCnt = hwSerial.read(inBuf, min(avail, min(BLOCKSIZE, hwSerial.availableForWrite()))); + hwSerial.write(inBuf, inCnt); + avail -= inCnt; + } +#endif +#else + block[i] = c; +#endif + c = (c + 1) % 256; + ++txCount; + } +#ifdef HALFDUPLEX +#ifdef HWSOURCESWSINK + hwSerial.write(block, BLOCKSIZE); +#else + serialIUT.write(block, BLOCKSIZE); +#endif +#endif +#ifdef HWSOURCESINK +#if defined(ESP8266) + if (serialIUT.hasOverrun()) { logger.println("serialIUT.overrun"); } +#endif +#else + if (serialIUT.overflow()) { logger.println("serialIUT.overflow"); } +#endif + + int inCnt; + uint32_t deadlineStart; + +#ifdef HWLOOPBACK + // starting deadline for the first bytes to become readable + deadlineStart = ESP.getCycleCount(); + inCnt = 0; + while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 24 * ESP.getCpuFreqMHz()) { + int avail = hwSerial.available(); + inCnt += hwSerial.read(&inBuf[inCnt], min(avail, min(BLOCKSIZE - inCnt, hwSerial.availableForWrite()))); + if (inCnt >= BLOCKSIZE) { break; } + // wait for more outstanding bytes to trickle in + if (avail) deadlineStart = ESP.getCycleCount(); + } + hwSerial.write(inBuf, inCnt); +#endif + + // starting deadline for the first bytes to come in + deadlineStart = ESP.getCycleCount(); + inCnt = 0; + while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 8 * ESP.getCpuFreqMHz()) { + int avail; + if (0 != (swSerialConfig & 070)) + avail = serialIUT.available(); + else + avail = serialIUT.read(inBuf, BLOCKSIZE); + for (int i = 0; i < avail; ++i) + { + unsigned char r; + if (0 != (swSerialConfig & 070)) + r = serialIUT.read(); + else + r = inBuf[i]; + if (expected == -1) { expected = r; } + else { + expected = (expected + 1) % (1UL << (5 + swSerialConfig % 4)); + } + if (r != expected) { + ++rxErrors; + expected = -1; + } +#ifndef HWSOURCESINK + if (serialIUT.readParity() != (static_cast(swSerialConfig & 010) ? serialIUT.parityOdd(r) : serialIUT.parityEven(r))) + { + ++rxParityErrors; + } +#endif + ++rxCount; + ++inCnt; + } + + if (inCnt >= BLOCKSIZE) { break; } + // wait for more outstanding bytes to trickle in + if (avail) deadlineStart = ESP.getCycleCount(); + } + + const uint32_t interval = micros() - start; + if (txCount >= ReportInterval && interval) { + uint8_t wordBits = (5 + swSerialConfig % 4) + static_cast(swSerialConfig & 070) + 1 + ((swSerialConfig & 0300) ? 1 : 0); + logger.println(String("tx/rx: ") + txCount + "/" + rxCount); + const long txCps = txCount * (1000000.0 / interval); + const long rxCps = rxCount * (1000000.0 / interval); + logger.print(effTxTxt + wordBits * txCps + "bps, " + + effRxTxt + wordBits * rxCps + "bps, " + + rxErrors + " errors (" + 100.0 * rxErrors / (!rxErrors ? 1 : rxCount) + "%)"); + if (0 != (swSerialConfig & 070)) + { + logger.print(" ("); logger.print(rxParityErrors); logger.println(" parity errors)"); + } + else + { + logger.println(); + } + txCount = 0; + rxCount = 0; + rxErrors = 0; + rxParityErrors = 0; + expected = -1; + // resync + delay(1000UL * 12 * BLOCKSIZE / IUTBITRATE * 16); + serialIUT.flush(); + start = micros(); + } +} diff --git a/EspSoftwareSerial/examples/onewiretest/onewiretest.ino b/EspSoftwareSerial/examples/onewiretest/onewiretest.ino new file mode 100644 index 00000000..3e96401b --- /dev/null +++ b/EspSoftwareSerial/examples/onewiretest/onewiretest.ino @@ -0,0 +1,48 @@ +#include +#include "SoftwareSerial.h" + +SoftwareSerial swSer1; +SoftwareSerial swSer2; + +void setup() { + delay(2000); + Serial.begin(115200); + Serial.println("\nOne Wire Half Duplex Serial Tester"); + swSer1.begin(115200, SWSERIAL_8N1, 12, 12, false, 256); + swSer1.enableIntTx(true); + swSer2.begin(115200, SWSERIAL_8N1, 14, 14, false, 256); + swSer2.enableIntTx(true); +} + +void loop() { + Serial.println("\n\nTesting on swSer1"); + Serial.print("Enter something to send using swSer1."); + checkSwSerial(&swSer1); + + Serial.println("\n\nTesting on swSer2"); + Serial.print("Enter something to send using swSer2."); + checkSwSerial(&swSer2); + +} + +void checkSwSerial(SoftwareSerial* ss) { + byte ch; + while (!Serial.available()); + ss->enableTx(true); + while (Serial.available()) { + ch = Serial.read(); + ss->write(ch); + } + ss->enableTx(false); + // wait 1 second for the reply from SOftwareSerial if any + delay(1000); + if (ss->available()) { + Serial.print("\nResult:"); + while (ss->available()) { + ch = (byte)ss->read(); + Serial.print(ch < 0x01 ? " 0" : " "); + Serial.print(ch, HEX); + } + Serial.println(); + } +} diff --git a/EspSoftwareSerial/examples/repeater/repeater.ino b/EspSoftwareSerial/examples/repeater/repeater.ino new file mode 100644 index 00000000..fa5566de --- /dev/null +++ b/EspSoftwareSerial/examples/repeater/repeater.ino @@ -0,0 +1,183 @@ +#include + +// On ESP8266: +// SoftwareSerial loopback for remote source (loopback.ino), or hardware loopback. +// Connect source D5 (rx) to local D8 (tx), source D6 (tx) to local D7 (rx). +// Hint: The logger is run at 9600bps such that enableIntTx(true) can remain unchanged. Blocking +// interrupts severely impacts the ability of the SoftwareSerial devices to operate concurrently +// and/or in duplex mode. +// On ESP32: +// For software or hardware loopback, connect source rx to local D8 (tx), source tx to local D7 (rx). + +#if defined(ESP8266) && !defined(D5) +#define D5 (14) +#define D6 (12) +#define D7 (13) +#define D8 (15) +#define TX (1) +#endif + +#define HWLOOPBACK 1 +#define HALFDUPLEX 1 + +#ifdef ESP32 +constexpr int IUTBITRATE = 19200; +#else +constexpr int IUTBITRATE = 19200; +#endif + +#if defined(ESP8266) +constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; +constexpr SerialConfig hwSerialConfig = SERIAL_8E1; +#elif defined(ESP32) +constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; +constexpr uint32_t hwSerialConfig = SERIAL_8E1; +#else +constexpr unsigned swSerialConfig = 3; +#endif +constexpr bool invert = false; + +constexpr int BLOCKSIZE = 16; // use fractions of 256 + +unsigned long start; +String bitRateTxt("Effective data rate: "); +int rxCount; +int seqErrors; +int parityErrors; +int expected; +constexpr int ReportInterval = IUTBITRATE / 8; + +#if defined(ESP8266) +#if defined(HWLOOPBACK) +HardwareSerial& repeater(Serial); +SoftwareSerial logger; +#else +SoftwareSerial repeater; +HardwareSerial& logger(Serial); +#endif +#elif defined(ESP32) +#if defined(HWLOOPBACK) +HardwareSerial& repeater(Serial2); +#else +SoftwareSerial repeater; +#endif +HardwareSerial& logger(Serial); +#else +SoftwareSerial repeater(14, 12); +HardwareSerial& logger(Serial); +#endif + +void setup() { +#if defined(ESP8266) +#if defined(HWLOOPBACK) + repeater.begin(IUTBITRATE, hwSerialConfig, SERIAL_FULL, 1, invert); + repeater.swap(); + repeater.setRxBufferSize(2 * BLOCKSIZE); + logger.begin(9600, SWSERIAL_8N1, -1, TX); +#else + repeater.begin(IUTBITRATE, swSerialConfig, D7, D8, invert, 4 * BLOCKSIZE); +#ifdef HALFDUPLEX + repeater.enableIntTx(false); +#endif + logger.begin(9600); +#endif +#elif defined(ESP32) +#if defined(HWLOOPBACK) + repeater.begin(IUTBITRATE, hwSerialConfig, D7, D8, invert); + repeater.setRxBufferSize(2 * BLOCKSIZE); +#else + repeater.begin(IUTBITRATE, swSerialConfig, D7, D8, invert, 4 * BLOCKSIZE); +#ifdef HALFDUPLEX + repeater.enableIntTx(false); +#endif +#endif + logger.begin(9600); +#else + repeater.begin(IUTBITRATE); + logger.begin(9600); +#endif + + logger.println("Repeater example for EspSoftwareSerial"); + start = micros(); + rxCount = 0; + seqErrors = 0; + parityErrors = 0; + expected = -1; +} + +void loop() { +#ifdef HWLOOPBACK +#if defined(ESP8266) + if (repeater.hasOverrun()) { logger.println("repeater.overrun"); } +#endif +#else + if (repeater.overflow()) { logger.println("repeater.overflow"); } +#endif + +#ifdef HALFDUPLEX + char block[BLOCKSIZE]; +#endif + // starting deadline for the first bytes to come in + uint32_t deadlineStart = ESP.getCycleCount(); + int inCnt = 0; + while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 24 * ESP.getCpuFreqMHz()) { + int avail = repeater.available(); + for (int i = 0; i < avail; ++i) + { + int r = repeater.read(); + if (r == -1) { logger.println("read() == -1"); } + if (expected == -1) { expected = r; } + else { + expected = (expected + 1) % (1UL << (5 + swSerialConfig % 4)); + } + if (r != expected) { + ++seqErrors; + expected = -1; + } +#ifndef HWLOOPBACK + if (repeater.readParity() != (static_cast(swSerialConfig & 010) ? repeater.parityOdd(r) : repeater.parityEven(r))) + { + ++parityErrors; + } +#endif + ++rxCount; +#ifdef HALFDUPLEX + block[inCnt] = r; +#else + repeater.write(r); +#endif + if (++inCnt >= BLOCKSIZE) { break; } + } + if (inCnt >= BLOCKSIZE) { break; } + // wait for more outstanding bytes to trickle in + if (avail) deadlineStart = ESP.getCycleCount(); + } + +#ifdef HALFDUPLEX + repeater.write(block, inCnt); +#endif + + if (rxCount >= ReportInterval) { + auto end = micros(); + unsigned long interval = end - start; + long cps = rxCount * (1000000.0 / interval); + long seqErrorsps = seqErrors * (1000000.0 / interval); + logger.print(bitRateTxt + 10 * cps + "bps, " + + seqErrorsps + "cps seq. errors (" + 100.0 * seqErrors / rxCount + "%)"); +#ifndef HWLOOPBACK + if (0 != (swSerialConfig & 070)) + { + logger.print(" ("); logger.print(parityErrors); logger.print(" parity errors)"); + } + else +#endif + { + logger.println(); + } + start = end; + rxCount = 0; + seqErrors = 0; + parityErrors = 0; + expected = -1; + } +} diff --git a/EspSoftwareSerial/examples/servoTester/servoTester.ino b/EspSoftwareSerial/examples/servoTester/servoTester.ino new file mode 100644 index 00000000..cbc784d8 --- /dev/null +++ b/EspSoftwareSerial/examples/servoTester/servoTester.ino @@ -0,0 +1,115 @@ +#include +#include + +SoftwareSerial swSer; + +byte buf[10] = { 0xFA, 0xAF,0x00,0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0xED }; +byte cmd[10] = { 0xFA, 0xAF,0x00,0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0xED }; +byte ver[10] = { 0xFC, 0xCF,0x00,0xAA,0x41, 0x16, 0x51, 0x01, 0x00, 0xED }; + + +void setup() { + delay(2000); + Serial.begin(115200); + Serial.println("\nAlpha 1S Servo Tester"); + swSer.begin(115200, SWSERIAL_8N1, 12, 12, false, 256); +} + +void loop() { + for (int i = 1; i <= 32; i++) { + GetVersion(i); + delay(100); + } + SetLED(1, 0); + GoPos(1, 0, 50); + delay(1000); + GoPos(1, 90, 50); + delay(1000); + GoPos(1, 100, 50); + delay(1000); + SetLED(1, 1); + delay(2000); +} + + + + +void GetVersion(byte id) { + memcpy(buf, cmd, 10); + buf[0] = 0xFC; + buf[1] = 0xCF; + buf[2] = id; + buf[3] = 0x01; + SendCommand(); +} + + +void GoPos(byte id, byte Pos, byte Time) { + memcpy(buf, cmd, 10); + buf[2] = id; + buf[3] = 0x01; + buf[4] = Pos; + buf[5] = Time; + buf[6] = 0x00; + buf[7] = Time; + SendCommand(); +} + +void GetPos(byte id) { + memcpy(buf, cmd, 10); + buf[2] = id; + buf[3] = 0x02; + SendCommand(); +} + + +void SetLED(byte id, byte mode) { + memcpy(buf, cmd, 10); + buf[2] = id; + buf[3] = 0x04; + buf[4] = mode; + SendCommand(); +} + +void SendCommand() { + SendCommand(true); +} + +void SendCommand(bool checkResult) { + byte sum = 0; + for (int i = 2; i < 8; i++) { + sum += buf[i]; + } + buf[8] = sum; + ShowCommand(); + swSer.flush(); + swSer.enableTx(true); + swSer.write(buf, 10); + swSer.enableTx(false); + if (checkResult) checkReturn(); +} + +void ShowCommand() { + Serial.print(millis()); + Serial.print(" OUT>>"); + for (int i = 0; i < 10; i++) { + Serial.print((buf[i] < 0x10 ? " 0" : " ")); + Serial.print(buf[i], HEX); + } + Serial.println(); +} + +void checkReturn() { + unsigned long startMs = millis(); + while (((millis() - startMs) < 500) && (!swSer.available())); + if (swSer.available()) { + Serial.print(millis()); + Serial.print(" IN>>>"); + while (swSer.available()) { + byte ch = (byte)swSer.read(); + Serial.print((ch < 0x10 ? " 0" : " ")); + Serial.print(ch, HEX); + } + Serial.println(); + } +} diff --git a/EspSoftwareSerial/examples/swsertest/swsertest.ino b/EspSoftwareSerial/examples/swsertest/swsertest.ino new file mode 100644 index 00000000..a047c1be --- /dev/null +++ b/EspSoftwareSerial/examples/swsertest/swsertest.ino @@ -0,0 +1,47 @@ +// On ESP8266: +// At 80MHz runs up 57600ps, and at 160MHz CPU frequency up to 115200bps with only negligible errors. +// Connect pin 12 to 14. + +#include + +#if defined(ESP8266) && !defined(D5) +#define D5 (14) +#define D6 (12) +#define D7 (13) +#define D8 (15) +#endif + +#ifdef ESP32 +#define BAUD_RATE 57600 +#else +#define BAUD_RATE 57600 +#endif + +// Reminder: the buffer size optimizations here, in particular the isrBufSize that only accommodates +// a single 8N1 word, are on the basis that any char written to the loopback SoftwareSerial adapter gets read +// before another write is performed. Block writes with a size greater than 1 would usually fail. +SoftwareSerial swSer; + +void setup() { + Serial.begin(115200); + swSer.begin(BAUD_RATE, SWSERIAL_8N1, D5, D6, false, 95, 11); + + Serial.println("\nSoftware serial test started"); + + for (char ch = ' '; ch <= 'z'; ch++) { + swSer.write(ch); + } + swSer.println(""); +} + +void loop() { + while (swSer.available() > 0) { + Serial.write(swSer.read()); + yield(); + } + while (Serial.available() > 0) { + swSer.write(Serial.read()); + yield(); + } + +} diff --git a/EspSoftwareSerial/keywords.txt b/EspSoftwareSerial/keywords.txt new file mode 100644 index 00000000..52d48ab3 --- /dev/null +++ b/EspSoftwareSerial/keywords.txt @@ -0,0 +1,43 @@ +####################################### +# Syntax Coloring Map for SoftwareSerial +# (esp8266) +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +SoftwareSerial KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +baudRate KEYWORD2 +setTransmitEnablePin KEYWORD2 +enableIntTx KEYWORD2 +overflow KEYWORD2 +available KEYWORD2 +peek KEYWORD2 +read KEYWORD2 +flush KEYWORD2 +write KEYWORD2 +enableRx KEYWORD2 +enableTx KEYWORD2 +listen KEYWORD2 +end KEYWORD2 +isListening KEYWORD2 +stopListening KEYWORD2 +onReceive KEYWORD2 +perform_work KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + +SW_SERIAL_UNUSED_PIN LITERAL1 +SWSERIAL_5N1 LITERAL1 +SWSERIAL_6N1 LITERAL1 +SWSERIAL_7N1 LITERAL1 +SWSERIAL_8N1 LITERAL1 diff --git a/EspSoftwareSerial/library.json b/EspSoftwareSerial/library.json new file mode 100644 index 00000000..3415b056 --- /dev/null +++ b/EspSoftwareSerial/library.json @@ -0,0 +1,15 @@ +{ + "name": "EspSoftwareSerial", + "version": "6.6.1", + "keywords": [ + "serial", "io", "softwareserial" + ], + "description": "Implementation of the Arduino software serial for ESP8266/ESP32.", + "repository": + { + "type": "git", + "url": "https://github.com/plerup/espsoftwareserial" + }, + "frameworks": "arduino", + "platforms": "*" +} diff --git a/EspSoftwareSerial/library.properties b/EspSoftwareSerial/library.properties new file mode 100644 index 00000000..bd052153 --- /dev/null +++ b/EspSoftwareSerial/library.properties @@ -0,0 +1,9 @@ +name=EspSoftwareSerial +version=6.6.1 +author=Peter Lerup, Dirk Kaar +maintainer=Peter Lerup +sentence=Implementation of the Arduino software serial for ESP8266/ESP32. +paragraph= +category=Signal Input/Output +url=https://github.com/plerup/espsoftwareserial/ +architectures=esp8266,esp32 diff --git a/EspSoftwareSerial/src/SoftwareSerial.cpp b/EspSoftwareSerial/src/SoftwareSerial.cpp new file mode 100644 index 00000000..0e7b8e08 --- /dev/null +++ b/EspSoftwareSerial/src/SoftwareSerial.cpp @@ -0,0 +1,542 @@ +/* + +SoftwareSerial.cpp - Implementation of the Arduino software serial for ESP8266/ESP32. +Copyright (c) 2015-2016 Peter Lerup. All rights reserved. +Copyright (c) 2018-2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#include "SoftwareSerial.h" +#include + +#ifdef ESP32 +#define xt_rsil(a) (a) +#define xt_wsr_ps(a) +#endif + +constexpr uint8_t BYTE_ALL_BITS_SET = ~static_cast(0); + +SoftwareSerial::SoftwareSerial() { + m_isrOverflow = false; +} + +SoftwareSerial::SoftwareSerial(int8_t rxPin, int8_t txPin, bool invert) +{ + m_isrOverflow = false; + m_rxPin = rxPin; + m_txPin = txPin; + m_invert = invert; +} + +SoftwareSerial::~SoftwareSerial() { + end(); +} + +bool SoftwareSerial::isValidGPIOpin(int8_t pin) { +#if defined(ESP8266) + return (pin >= 0 && pin <= 5) || (pin >= 12 && pin <= 15); +#elif defined(ESP32) + return pin == 0 || pin == 2 || (pin >= 4 && pin <= 5) || (pin >= 12 && pin <= 19) || + (pin >= 21 && pin <= 23) || (pin >= 25 && pin <= 27) || (pin >= 32 && pin <= 35); +#else + return true; +#endif +} + +void SoftwareSerial::begin(uint32_t baud, SoftwareSerialConfig config, + int8_t rxPin, int8_t txPin, + bool invert, int bufCapacity, int isrBufCapacity) { + if (-1 != rxPin) m_rxPin = rxPin; + if (-1 != txPin) m_txPin = txPin; + m_oneWire = (m_rxPin == m_txPin); + m_invert = invert; + m_dataBits = 5 + (config & 07); + m_parityMode = static_cast(config & 070); + m_stopBits = 1 + ((config & 0300) ? 1 : 0); + m_pduBits = m_dataBits + static_cast(m_parityMode) + m_stopBits; + m_bitCycles = (ESP.getCpuFreqMHz() * 1000000UL + baud / 2) / baud; + m_intTxEnabled = true; + if (isValidGPIOpin(m_rxPin)) { + std::unique_ptr > buffer(new circular_queue((bufCapacity > 0) ? bufCapacity : 64)); + m_buffer = move(buffer); + if (m_parityMode) + { + std::unique_ptr > parityBuffer(new circular_queue((bufCapacity > 0) ? (bufCapacity + 7) / 8 : 8)); + m_parityBuffer = move(parityBuffer); + m_parityInPos = m_parityOutPos = 1; + } + std::unique_ptr > isrBuffer(new circular_queue((isrBufCapacity > 0) ? isrBufCapacity : (sizeof(uint8_t) * 8 + 2) * bufCapacity)); + m_isrBuffer = move(isrBuffer); + if (m_buffer && (!m_parityMode || m_parityBuffer) && m_isrBuffer) { + m_rxValid = true; + pinMode(m_rxPin, INPUT_PULLUP); + } + } + if (isValidGPIOpin(m_txPin) +#ifdef ESP8266 + || ((m_txPin == 16) && !m_oneWire)) { +#else + ) { +#endif + m_txValid = true; + if (!m_oneWire) { + pinMode(m_txPin, OUTPUT); + digitalWrite(m_txPin, !m_invert); + } + } + if (!m_rxEnabled) { enableRx(true); } +} + +void SoftwareSerial::end() +{ + enableRx(false); + m_txValid = false; + if (m_buffer) { + m_buffer.reset(); + } + m_parityBuffer.reset(); + if (m_isrBuffer) { + m_isrBuffer.reset(); + } +} + +uint32_t SoftwareSerial::baudRate() { + return ESP.getCpuFreqMHz() * 1000000UL / m_bitCycles; +} + +void SoftwareSerial::setTransmitEnablePin(int8_t txEnablePin) { + if (isValidGPIOpin(txEnablePin)) { + m_txEnableValid = true; + m_txEnablePin = txEnablePin; + pinMode(m_txEnablePin, OUTPUT); + digitalWrite(m_txEnablePin, LOW); + } + else { + m_txEnableValid = false; + } +} + +void SoftwareSerial::enableIntTx(bool on) { + m_intTxEnabled = on; +} + +void SoftwareSerial::enableTx(bool on) { + if (m_txValid && m_oneWire) { + if (on) { + enableRx(false); + pinMode(m_txPin, OUTPUT); + digitalWrite(m_txPin, !m_invert); + } + else { + pinMode(m_rxPin, INPUT_PULLUP); + enableRx(true); + } + } +} + +void SoftwareSerial::enableRx(bool on) { + if (m_rxValid) { + if (on) { + m_rxCurBit = m_pduBits - 1; + // Init to stop bit level and current cycle + m_isrLastCycle = (ESP.getCycleCount() | 1) ^ m_invert; + if (m_bitCycles >= (ESP.getCpuFreqMHz() * 1000000UL) / 74880UL) + attachInterruptArg(digitalPinToInterrupt(m_rxPin), reinterpret_cast(rxBitISR), this, CHANGE); + else + attachInterruptArg(digitalPinToInterrupt(m_rxPin), reinterpret_cast(rxBitSyncISR), this, m_invert ? RISING : FALLING); + } + else { + detachInterrupt(digitalPinToInterrupt(m_rxPin)); + } + m_rxEnabled = on; + } +} + +int SoftwareSerial::read() { + if (!m_rxValid) { return -1; } + if (!m_buffer->available()) { + rxBits(); + if (!m_buffer->available()) { return -1; } + } + auto val = m_buffer->pop(); + if (m_parityBuffer) + { + m_lastReadParity = m_parityBuffer->peek() & m_parityOutPos; + m_parityOutPos <<= 1; + if (!m_parityOutPos) + { + m_parityOutPos = 1; + m_parityBuffer->pop(); + } + } + return val; +} + +size_t SoftwareSerial::read(uint8_t * buffer, size_t size) { + if (!m_rxValid) { return 0; } + size_t avail; + if (0 == (avail = m_buffer->pop_n(buffer, size))) { + rxBits(); + avail = m_buffer->pop_n(buffer, size); + } + if (!avail) return 0; + if (m_parityBuffer) { + uint32_t parityBits = avail; + while (m_parityOutPos >>= 1) ++parityBits; + m_parityOutPos = (1 << (parityBits % 8)); + m_parityBuffer->pop_n(nullptr, parityBits / 8); + } + return avail; +} + +size_t SoftwareSerial::readBytes(uint8_t * buffer, size_t size) { + if (!m_rxValid || !size) { return 0; } + size_t count = 0; + const auto start = millis(); + do { + count += read(&buffer[count], size - count); + if (count >= size) break; + yield(); + } while (millis() - start < _timeout); + return count; +} + +int SoftwareSerial::available() { + if (!m_rxValid) { return 0; } + rxBits(); + int avail = m_buffer->available(); + if (!avail) { + optimistic_yield(10000UL); + } + return avail; +} + +void ICACHE_RAM_ATTR SoftwareSerial::preciseDelay(bool sync) { + if (!sync) + { + // Reenable interrupts while delaying to avoid other tasks piling up + if (!m_intTxEnabled) { xt_wsr_ps(m_savedPS); } + auto expired = ESP.getCycleCount() - m_periodStart; + if (expired < m_periodDuration) + { + auto ms = (m_periodDuration - expired) / ESP.getCpuFreqMHz() / 1000UL; + if (ms) delay(ms); + } + while ((ESP.getCycleCount() - m_periodStart) < m_periodDuration) { optimistic_yield(10000); } + // Disable interrupts again + if (!m_intTxEnabled) { m_savedPS = xt_rsil(15); } + } + else + { + while ((ESP.getCycleCount() - m_periodStart) < m_periodDuration) {} + } + m_periodDuration = 0; + m_periodStart = ESP.getCycleCount(); +} + +void ICACHE_RAM_ATTR SoftwareSerial::writePeriod( + uint32_t dutyCycle, uint32_t offCycle, bool withStopBit) { + preciseDelay(true); + if (dutyCycle) + { + digitalWrite(m_txPin, HIGH); + m_periodDuration += dutyCycle; + if (offCycle || (withStopBit && !m_invert)) preciseDelay(!withStopBit || m_invert); + } + if (offCycle) + { + digitalWrite(m_txPin, LOW); + m_periodDuration += offCycle; + if (withStopBit && m_invert) preciseDelay(false); + } +} + +size_t SoftwareSerial::write(uint8_t byte) { + return write(&byte, 1); +} + +size_t SoftwareSerial::write(uint8_t byte, SoftwareSerialParity parity) { + return write(&byte, 1, parity); +} + +size_t SoftwareSerial::write(const uint8_t * buffer, size_t size) { + return write(buffer, size, m_parityMode); +} + +size_t ICACHE_RAM_ATTR SoftwareSerial::write(const uint8_t * buffer, size_t size, SoftwareSerialParity parity) { + if (m_rxValid) { rxBits(); } + if (!m_txValid) { return -1; } + + if (m_txEnableValid) { + digitalWrite(m_txEnablePin, HIGH); + } + // Stop bit: if inverted, LOW, otherwise HIGH + bool b = !m_invert; + uint32_t dutyCycle = 0; + uint32_t offCycle = 0; + if (!m_intTxEnabled) { + // Disable interrupts in order to get a clean transmit timing + m_savedPS = xt_rsil(15); + } + const uint32_t dataMask = ((1UL << m_dataBits) - 1); + bool withStopBit = true; + m_periodDuration = 0; + m_periodStart = ESP.getCycleCount(); + for (size_t cnt = 0; cnt < size; ++cnt) { + uint8_t byte = ~buffer[cnt] & dataMask; + // push LSB start-data-parity-stop bit pattern into uint32_t + // Stop bits: HIGH + uint32_t word = ~0UL; + // parity bit, if any + if (parity && m_parityMode) + { + uint32_t parityBit; + switch (parity) + { + case SWSERIAL_PARITY_EVEN: + // from inverted, so use odd parity + parityBit = byte; + parityBit ^= parityBit >> 4; + parityBit &= 0xf; + parityBit = (0x9669 >> parityBit) & 1; + break; + case SWSERIAL_PARITY_ODD: + // from inverted, so use even parity + parityBit = byte; + parityBit ^= parityBit >> 4; + parityBit &= 0xf; + parityBit = (0x6996 >> parityBit) & 1; + break; + case SWSERIAL_PARITY_MARK: + parityBit = false; + break; + case SWSERIAL_PARITY_SPACE: + // suppresses warning parityBit uninitialized + default: + parityBit = true; + break; + } + word ^= parityBit << m_dataBits; + } + word ^= byte; + // Stop bit: LOW + word <<= 1; + if (m_invert) word = ~word; + for (int i = 0; i <= m_pduBits; ++i) { + bool pb = b; + b = word & (1UL << i); + if (!pb && b) { + writePeriod(dutyCycle, offCycle, withStopBit); + withStopBit = false; + dutyCycle = offCycle = 0; + } + if (b) { + dutyCycle += m_bitCycles; + } + else { + offCycle += m_bitCycles; + } + } + withStopBit = true; + } + writePeriod(dutyCycle, offCycle, true); + if (!m_intTxEnabled) { + // restore the interrupt state + xt_wsr_ps(m_savedPS); + } + if (m_txEnableValid) { + digitalWrite(m_txEnablePin, LOW); + } + return size; +} + +void SoftwareSerial::flush() { + if (!m_rxValid) { return; } + m_buffer->flush(); + if (m_parityBuffer) + { + m_parityInPos = m_parityOutPos = 1; + m_parityBuffer->flush(); + } +} + +bool SoftwareSerial::overflow() { + bool res = m_overflow; + m_overflow = false; + return res; +} + +int SoftwareSerial::peek() { + if (!m_rxValid) { return -1; } + if (!m_buffer->available()) { + rxBits(); + if (!m_buffer->available()) return -1; + } + auto val = m_buffer->peek(); + if (m_parityBuffer) m_lastReadParity = m_parityBuffer->peek() & m_parityOutPos; + return val; +} + +void SoftwareSerial::rxBits() { + int isrAvail = m_isrBuffer->available(); +#ifdef ESP8266 + if (m_isrOverflow.load()) { + m_overflow = true; + m_isrOverflow.store(false); + } +#else + if (m_isrOverflow.exchange(false)) { + m_overflow = true; + } +#endif + + // stop bit can go undetected if leading data bits are at same level + // and there was also no next start bit yet, so one byte may be pending. + // low-cost check first + if (!isrAvail && m_rxCurBit >= -1 && m_rxCurBit < m_pduBits - m_stopBits) { + uint32_t detectionCycles = (m_pduBits - m_stopBits - m_rxCurBit) * m_bitCycles; + if (ESP.getCycleCount() - m_isrLastCycle > detectionCycles) { + // Produce faux stop bit level, prevents start bit maldetection + // cycle's LSB is repurposed for the level bit + rxBits(((m_isrLastCycle + detectionCycles) | 1) ^ m_invert); + } + } + + m_isrBuffer->for_each([this](const uint32_t& isrCycle) { rxBits(isrCycle); }); +} + +void SoftwareSerial::rxBits(const uint32_t & isrCycle) { + bool level = (m_isrLastCycle & 1) ^ m_invert; + + // error introduced by edge value in LSB of isrCycle is negligible + int32_t cycles = isrCycle - m_isrLastCycle; + m_isrLastCycle = isrCycle; + + uint8_t bits = cycles / m_bitCycles; + if (cycles % m_bitCycles > (m_bitCycles >> 1)) ++bits; + while (bits > 0) { + // start bit detection + if (m_rxCurBit >= (m_pduBits - 1)) { + // leading edge of start bit + if (level) break; + m_rxCurBit = -1; + --bits; + continue; + } + // data bits + if (m_rxCurBit >= -1 && m_rxCurBit < (m_dataBits - 1)) { + int8_t dataBits = min(bits, static_cast(m_dataBits - 1 - m_rxCurBit)); + m_rxCurBit += dataBits; + bits -= dataBits; + m_rxCurByte >>= dataBits; + if (level) { m_rxCurByte |= (BYTE_ALL_BITS_SET << (8 - dataBits)); } + continue; + } + // parity bit + if (m_parityMode && m_rxCurBit == (m_dataBits - 1)) { + ++m_rxCurBit; + --bits; + m_rxCurParity = level; + continue; + } + // stop bits + if (m_rxCurBit < (m_pduBits - m_stopBits - 1)) { + ++m_rxCurBit; + --bits; + continue; + } + if (m_rxCurBit == (m_pduBits - m_stopBits - 1)) { + // Store the received value in the buffer unless we have an overflow + // if not high stop bit level, discard word + if (level) + { + m_rxCurByte >>= (sizeof(uint8_t) * 8 - m_dataBits); + if (!m_buffer->push(m_rxCurByte)) { + m_overflow = true; + } + else { + if (m_parityBuffer) + { + if (m_rxCurParity) { + m_parityBuffer->pushpeek() |= m_parityInPos; + } + else { + m_parityBuffer->pushpeek() &= ~m_parityInPos; + } + m_parityInPos <<= 1; + if (!m_parityInPos) + { + m_parityBuffer->push(); + m_parityInPos = 1; + } + } + } + } + m_rxCurBit = m_pduBits; + // reset to 0 is important for masked bit logic + m_rxCurByte = 0; + m_rxCurParity = false; + break; + } + break; + } +} + +void ICACHE_RAM_ATTR SoftwareSerial::rxBitISR(SoftwareSerial * self) { + uint32_t curCycle = ESP.getCycleCount(); + bool level = digitalRead(self->m_rxPin); + + // Store level and cycle in the buffer unless we have an overflow + // cycle's LSB is repurposed for the level bit + if (!self->m_isrBuffer->push((curCycle | 1U) ^ !level)) self->m_isrOverflow.store(true); +} + +void ICACHE_RAM_ATTR SoftwareSerial::rxBitSyncISR(SoftwareSerial * self) { + uint32_t start = ESP.getCycleCount(); + uint32_t wait = self->m_bitCycles - 172U; + + bool level = self->m_invert; + // Store level and cycle in the buffer unless we have an overflow + // cycle's LSB is repurposed for the level bit + if (!self->m_isrBuffer->push(((start + wait) | 1U) ^ !level)) self->m_isrOverflow.store(true); + + for (uint32_t i = 0; i < self->m_pduBits; ++i) { + while (ESP.getCycleCount() - start < wait) {}; + wait += self->m_bitCycles; + + // Store level and cycle in the buffer unless we have an overflow + // cycle's LSB is repurposed for the level bit + if (digitalRead(self->m_rxPin) != level) + { + if (!self->m_isrBuffer->push(((start + wait) | 1U) ^ level)) self->m_isrOverflow.store(true); + level = !level; + } + } +} + +void SoftwareSerial::onReceive(Delegate handler) { + receiveHandler = handler; +} + +void SoftwareSerial::perform_work() { + if (!m_rxValid) { return; } + rxBits(); + if (receiveHandler) { + int avail = m_buffer->available(); + if (avail) { receiveHandler(avail); } + } +} diff --git a/EspSoftwareSerial/src/SoftwareSerial.h b/EspSoftwareSerial/src/SoftwareSerial.h new file mode 100644 index 00000000..371e3731 --- /dev/null +++ b/EspSoftwareSerial/src/SoftwareSerial.h @@ -0,0 +1,255 @@ +/* +SoftwareSerial.h + +SoftwareSerial.cpp - Implementation of the Arduino software serial for ESP8266/ESP32. +Copyright (c) 2015-2016 Peter Lerup. All rights reserved. +Copyright (c) 2018-2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#ifndef __SoftwareSerial_h +#define __SoftwareSerial_h + +#include "circular_queue/circular_queue.h" +#include + +enum SoftwareSerialParity : uint8_t { + SWSERIAL_PARITY_NONE = 000, + SWSERIAL_PARITY_EVEN = 020, + SWSERIAL_PARITY_ODD = 030, + SWSERIAL_PARITY_MARK = 040, + SWSERIAL_PARITY_SPACE = 070, +}; + +enum SoftwareSerialConfig { + SWSERIAL_5N1 = SWSERIAL_PARITY_NONE, + SWSERIAL_6N1, + SWSERIAL_7N1, + SWSERIAL_8N1, + SWSERIAL_5E1 = SWSERIAL_PARITY_EVEN, + SWSERIAL_6E1, + SWSERIAL_7E1, + SWSERIAL_8E1, + SWSERIAL_5O1 = SWSERIAL_PARITY_ODD, + SWSERIAL_6O1, + SWSERIAL_7O1, + SWSERIAL_8O1, + SWSERIAL_5M1 = SWSERIAL_PARITY_MARK, + SWSERIAL_6M1, + SWSERIAL_7M1, + SWSERIAL_8M1, + SWSERIAL_5S1 = SWSERIAL_PARITY_SPACE, + SWSERIAL_6S1, + SWSERIAL_7S1, + SWSERIAL_8S1, + SWSERIAL_5N2 = 0200 | SWSERIAL_PARITY_NONE, + SWSERIAL_6N2, + SWSERIAL_7N2, + SWSERIAL_8N2, + SWSERIAL_5E2 = 0200 | SWSERIAL_PARITY_EVEN, + SWSERIAL_6E2, + SWSERIAL_7E2, + SWSERIAL_8E2, + SWSERIAL_5O2 = 0200 | SWSERIAL_PARITY_ODD, + SWSERIAL_6O2, + SWSERIAL_7O2, + SWSERIAL_8O2, + SWSERIAL_5M2 = 0200 | SWSERIAL_PARITY_MARK, + SWSERIAL_6M2, + SWSERIAL_7M2, + SWSERIAL_8M2, + SWSERIAL_5S2 = 0200 | SWSERIAL_PARITY_SPACE, + SWSERIAL_6S2, + SWSERIAL_7S2, + SWSERIAL_8S2, +}; + +/// This class is compatible with the corresponding AVR one, however, +/// the constructor takes no arguments, for compatibility with the +/// HardwareSerial class. +/// Instead, the begin() function handles pin assignments and logic inversion. +/// It also has optional input buffer capacity arguments for byte buffer and ISR bit buffer. +/// Bitrates up to at least 115200 can be used. +class SoftwareSerial : public Stream { +public: + SoftwareSerial(); + /// Ctor to set defaults for pins. + /// @param rxPin the GPIO pin used for RX + /// @param txPin -1 for onewire protocol, GPIO pin used for twowire TX + SoftwareSerial(int8_t rxPin, int8_t txPin = -1, bool invert = false); + SoftwareSerial(const SoftwareSerial&) = delete; + SoftwareSerial& operator= (const SoftwareSerial&) = delete; + virtual ~SoftwareSerial(); + /// Configure the SoftwareSerial object for use. + /// @param baud the TX/RX bitrate + /// @param config sets databits, parity, and stop bit count + /// @param rxPin -1 or default: either no RX pin, or keeps the rxPin set in the ctor + /// @param txPin -1 or default: either no TX pin (onewire), or keeps the txPin set in the ctor + /// @param invert true: uses invert line level logic + /// @param bufCapacity the capacity for the received bytes buffer + /// @param isrBufCapacity 0: derived from bufCapacity. The capacity of the internal asynchronous + /// bit receive buffer, a suggested size is bufCapacity times the sum of + /// start, data, parity and stop bit count. + void begin(uint32_t baud, SoftwareSerialConfig config, + int8_t rxPin, int8_t txPin, bool invert, + int bufCapacity = 64, int isrBufCapacity = 0); + void begin(uint32_t baud, SoftwareSerialConfig config, + int8_t rxPin, int8_t txPin) { + begin(baud, config, rxPin, txPin, m_invert); + } + void begin(uint32_t baud, SoftwareSerialConfig config, + int8_t rxPin) { + begin(baud, config, rxPin, m_txPin, m_invert); + } + void begin(uint32_t baud, SoftwareSerialConfig config = SWSERIAL_8N1) { + begin(baud, config, m_rxPin, m_txPin, m_invert); + } + + uint32_t baudRate(); + /// Transmit control pin. + void setTransmitEnablePin(int8_t txEnablePin); + /// Enable or disable interrupts during tx. + void enableIntTx(bool on); + + bool overflow(); + + int available() override; + int availableForWrite() { + if (!m_txValid) return 0; + return 1; + } + int peek() override; + int read() override; + /// @returns The verbatim parity bit associated with the last read() or peek() call + bool readParity() + { + return m_lastReadParity; + } + /// @returns The calculated bit for even parity of the parameter byte + static bool parityEven(uint8_t byte) { + byte ^= byte >> 4; + byte &= 0xf; + return (0x6996 >> byte) & 1; + } + /// @returns The calculated bit for odd parity of the parameter byte + static bool parityOdd(uint8_t byte) { + byte ^= byte >> 4; + byte &= 0xf; + return (0x9669 >> byte) & 1; + } + /// The read(buffer, size) functions are non-blocking, the same as readBytes but without timeout + size_t read(uint8_t* buffer, size_t size); + /// The read(buffer, size) functions are non-blocking, the same as readBytes but without timeout + size_t read(char* buffer, size_t size) { + return read(reinterpret_cast(buffer), size); + } + /// @returns The number of bytes read into buffer, up to size. Times out if the limit set through + /// Stream::setTimeout() is reached. + size_t readBytes(uint8_t* buffer, size_t size) override; + /// @returns The number of bytes read into buffer, up to size. Times out if the limit set through + /// Stream::setTimeout() is reached. + size_t readBytes(char* buffer, size_t size) override { + return readBytes(reinterpret_cast(buffer), size); + } + void flush() override; + size_t write(uint8_t byte) override; + size_t write(uint8_t byte, SoftwareSerialParity parity); + size_t write(const uint8_t* buffer, size_t size) override; + size_t write(const char* buffer, size_t size) { + return write(reinterpret_cast(buffer), size); + } + size_t write(const uint8_t* buffer, size_t size, SoftwareSerialParity parity); + size_t write(const char* buffer, size_t size, SoftwareSerialParity parity) { + return write(reinterpret_cast(buffer), size, parity); + } + operator bool() const { return m_rxValid || m_txValid; } + + /// Disable or enable interrupts on the rx pin. + void enableRx(bool on); + /// One wire control. + void enableTx(bool on); + + // AVR compatibility methods. + bool listen() { enableRx(true); return true; } + void end(); + bool isListening() { return m_rxEnabled; } + bool stopListening() { enableRx(false); return true; } + + /// Set an event handler for received data. + void onReceive(Delegate handler); + + /// Run the internal processing and event engine. Can be iteratively called + /// from loop, or otherwise scheduled. + void perform_work(); + + using Print::write; + +private: + // If sync is false, it's legal to exceed the deadline, for instance, + // by enabling interrupts. + void preciseDelay(bool sync); + // If withStopBit is set, either cycle contains a stop bit. + // If dutyCycle == 0, the level is not forced to HIGH. + // If offCycle == 0, the level remains unchanged from dutyCycle. + void writePeriod( + uint32_t dutyCycle, uint32_t offCycle, bool withStopBit); + bool isValidGPIOpin(int8_t pin); + /* check m_rxValid that calling is safe */ + void rxBits(); + void rxBits(const uint32_t& isrCycle); + + static void rxBitISR(SoftwareSerial* self); + static void rxBitSyncISR(SoftwareSerial* self); + + // Member variables + int8_t m_rxPin = -1; + int8_t m_txPin = -1; + int8_t m_txEnablePin = -1; + uint8_t m_dataBits; + bool m_oneWire; + bool m_rxValid = false; + bool m_rxEnabled = false; + bool m_txValid = false; + bool m_txEnableValid = false; + bool m_invert; + /// PDU bits include data, parity and stop bits; the start bit is not counted. + uint8_t m_pduBits; + bool m_intTxEnabled; + SoftwareSerialParity m_parityMode; + uint8_t m_stopBits; + bool m_lastReadParity; + bool m_overflow = false; + uint32_t m_bitCycles; + uint8_t m_parityInPos; + uint8_t m_parityOutPos; + int8_t m_rxCurBit; // 0 thru (m_pduBits - m_stopBits - 1): data/parity bits. -1: start bit. (m_pduBits - 1): stop bit. + uint8_t m_rxCurByte = 0; + std::unique_ptr > m_buffer; + std::unique_ptr > m_parityBuffer; + uint32_t m_periodStart; + uint32_t m_periodDuration; + uint32_t m_savedPS = 0; + // the ISR stores the relative bit times in the buffer. The inversion corrected level is used as sign bit (2's complement): + // 1 = positive including 0, 0 = negative. + std::unique_ptr > m_isrBuffer; + std::atomic m_isrOverflow; + uint32_t m_isrLastCycle; + bool m_rxCurParity = false; + Delegate receiveHandler; +}; + +#endif // __SoftwareSerial_h diff --git a/EspSoftwareSerial/src/circular_queue/Delegate.h b/EspSoftwareSerial/src/circular_queue/Delegate.h new file mode 100644 index 00000000..bd19c66e --- /dev/null +++ b/EspSoftwareSerial/src/circular_queue/Delegate.h @@ -0,0 +1,1786 @@ +/* +Delegate.h - An efficient interchangeable C function ptr and C++ std::function delegate +Copyright (c) 2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __Delegate_h +#define __Delegate_h + +#if defined(ESP8266) +#include +#elif defined(ESP32) +#include +#else +#define ICACHE_RAM_ATTR +#define IRAM_ATTR +#endif + +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) +#include +#include +#else +#include "circular_queue/ghostl.h" +#endif + +namespace detail +{ + template + static R IRAM_ATTR vPtrToFunPtrExec(void* fn, P... args) + { + using target_type = R(P...); + return reinterpret_cast(fn)(std::forward(args...)); + } + +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + template + class DelegatePImpl { + public: + using target_type = R(P...); + protected: + using FunPtr = target_type*; + using FunAPtr = R(*)(A, P...); + using FunVPPtr = R(*)(void*, P...); + using FunctionType = std::function; + public: + DelegatePImpl() + { + kind = FP; + fn = nullptr; + } + + DelegatePImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + ~DelegatePImpl() + { + if (FUNC == kind) + functional.~FunctionType(); + else if (FPA == kind) + obj.~A(); + } + + DelegatePImpl(const DelegatePImpl& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(del.functional); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + new (&obj) A(del.obj); + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(DelegatePImpl&& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(std::move(del.functional)); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + new (&obj) A(std::move(del.obj)); + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(FunAPtr fnA, const A& obj) + { + kind = FPA; + DelegatePImpl::fnA = fnA; + new (&this->obj) A(obj); + } + + DelegatePImpl(FunAPtr fnA, A&& obj) + { + kind = FPA; + DelegatePImpl::fnA = fnA; + new (&this->obj) A(std::move(obj)); + } + + DelegatePImpl(FunPtr fn) + { + kind = FP; + DelegatePImpl::fn = fn; + } + + template DelegatePImpl(F functional) + { + kind = FUNC; + new (&this->functional) FunctionType(std::forward(functional)); + } + + DelegatePImpl& operator=(const DelegatePImpl& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + if (FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + else if (FPA == del.kind) + { + new (&obj) A; + } + kind = del.kind; + } + if (FUNC == del.kind) + { + functional = del.functional; + } + else if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(DelegatePImpl&& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + if (FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + else if (FPA == del.kind) + { + new (&obj) A; + } + kind = del.kind; + } + if (FUNC == del.kind) + { + functional = std::move(del.functional); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(FunPtr fn) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + kind = FP; + this->fn = fn; + return *this; + } + + DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else if (FPA == kind) + { + return fnA; + } + else + { + return functional ? true : false; + } + } + + static R IRAM_ATTR vPtrToFunAPtrExec(void* self, P... args) + { + return static_cast(self)->fnA( + static_cast(self)->obj, + std::forward(args...)); + }; + + operator FunVPPtr() const + { + if (FP == kind) + { + return vPtrToFunPtrExec; + } + else if (FPA == kind) + { + return vPtrToFunAPtrExec; + } + else + { + return [](void* self, P... args) -> R + { + return static_cast(self)->functional(std::forward(args...)); + }; + } + } + + void* arg() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else + { + return const_cast(this); + } + } + + operator FunctionType() const + { + if (FP == kind) + { + return fn; + } + else if (FPA == kind) + { + return [this](P... args) { return fnA(obj, std::forward(args...)); }; + } + else + { + return functional; + } + } + + R IRAM_ATTR operator()(P... args) const + { + if (FP == kind) + { + return fn(std::forward(args...)); + } + else if (FPA == kind) + { + return fnA(obj, std::forward(args...)); + } + else + { + return functional(std::forward(args...)); + } + } + + protected: + enum { FUNC, FP, FPA } kind; + union { + FunctionType functional; + FunPtr fn; + struct { + FunAPtr fnA; + A obj; + }; + }; + }; +#else + template + class DelegatePImpl { + public: + using target_type = R(P...); + protected: + using FunPtr = target_type*; + using FunAPtr = R(*)(A, P...); + using FunVPPtr = R(*)(void*, P...); + public: + DelegatePImpl() + { + kind = FP; + fn = nullptr; + } + + DelegatePImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + DelegatePImpl(const DelegatePImpl& del) + { + kind = del.kind; + if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(DelegatePImpl&& del) + { + kind = del.kind; + if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(FunAPtr fnA, const A& obj) + { + kind = FPA; + DelegatePImpl::fnA = fnA; + this->obj = obj; + } + + DelegatePImpl(FunAPtr fnA, A&& obj) + { + kind = FPA; + DelegatePImpl::fnA = fnA; + this->obj = std::move(obj); + } + + DelegatePImpl(FunPtr fn) + { + kind = FP; + DelegatePImpl::fn = fn; + } + + template DelegatePImpl(F fn) + { + kind = FP; + DelegatePImpl::fn = std::forward(fn); + } + + DelegatePImpl& operator=(const DelegatePImpl& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FPA == kind) + { + obj = {}; + } + kind = del.kind; + } + if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(DelegatePImpl&& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FPA == kind) + { + obj = {}; + } + kind = del.kind; + } + if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(FunPtr fn) + { + if (FPA == kind) + { + obj = {}; + } + kind = FP; + this->fn = fn; + return *this; + } + + DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FPA == kind) + { + obj = {}; + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else + { + return fnA; + } + } + + static R IRAM_ATTR vPtrToFunAPtrExec(void* self, P... args) + { + return static_cast(self)->fnA( + static_cast(self)->obj, + std::forward(args...)); + }; + + operator FunVPPtr() const + { + if (FP == kind) + { + return vPtrToFunPtrExec; + } + else + { + return vPtrToFunAPtrExec; + } + } + + void* arg() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else + { + return const_cast(this); + } + } + + R IRAM_ATTR operator()(P... args) const + { + if (FP == kind) + { + return fn(std::forward(args...)); + } + else + { + return fnA(obj, std::forward(args...)); + } + } + + protected: + enum { FP, FPA } kind; + union { + FunPtr fn; + FunAPtr fnA; + }; + A obj; + }; +#endif + +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + template + class DelegatePImpl { + public: + using target_type = R(P...); + protected: + using FunPtr = target_type*; + using FunctionType = std::function; + using FunVPPtr = R(*)(void*, P...); + public: + DelegatePImpl() + { + kind = FP; + fn = nullptr; + } + + DelegatePImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + ~DelegatePImpl() + { + if (FUNC == kind) + functional.~FunctionType(); + } + + DelegatePImpl(const DelegatePImpl& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(del.functional); + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(DelegatePImpl&& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(std::move(del.functional)); + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(FunPtr fn) + { + kind = FP; + DelegatePImpl::fn = fn; + } + + template DelegatePImpl(F functional) + { + kind = FUNC; + new (&this->functional) FunctionType(std::forward(functional)); + } + + DelegatePImpl& operator=(const DelegatePImpl& del) + { + if (this == &del) return *this; + if (FUNC == kind && FUNC != del.kind) + { + functional.~FunctionType(); + } + else if (FUNC != kind && FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + kind = del.kind; + if (FUNC == del.kind) + { + functional = del.functional; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(DelegatePImpl&& del) + { + if (this == &del) return *this; + if (FUNC == kind && FUNC != del.kind) + { + functional.~FunctionType(); + } + else if (FUNC != kind && FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + kind = del.kind; + if (FUNC == del.kind) + { + functional = std::move(del.functional); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(FunPtr fn) + { + if (FUNC == kind) + { + functional.~FunctionType(); + kind = FP; + } + DelegatePImpl::fn = fn; + return *this; + } + + DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else + { + return functional ? true : false; + } + } + + operator FunVPPtr() const + { + if (FP == kind) + { + return vPtrToFunPtrExec; + } + else + { + return [](void* self, P... args) -> R + { + return static_cast(self)->functional(std::forward(args...)); + }; + } + } + + void* arg() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else + { + return const_cast(this); + } + } + + operator FunctionType() const + { + if (FP == kind) + { + return fn; + } + else + { + return functional; + } + } + + R IRAM_ATTR operator()(P... args) const + { + if (FP == kind) + { + return fn(std::forward(args...)); + } + else + { + return functional(std::forward(args...)); + } + } + + protected: + enum { FUNC, FP } kind; + union { + FunctionType functional; + FunPtr fn; + }; + }; +#else + template + class DelegatePImpl { + public: + using target_type = R(P...); + protected: + using FunPtr = target_type*; + using FunVPPtr = R(*)(void*, P...); + public: + DelegatePImpl() + { + fn = nullptr; + } + + DelegatePImpl(std::nullptr_t) + { + fn = nullptr; + } + + DelegatePImpl(const DelegatePImpl& del) + { + fn = del.fn; + } + + DelegatePImpl(DelegatePImpl&& del) + { + fn = std::move(del.fn); + } + + DelegatePImpl(FunPtr fn) + { + DelegatePImpl::fn = fn; + } + + template DelegatePImpl(F fn) + { + DelegatePImpl::fn = std::forward(fn); + } + + DelegatePImpl& operator=(const DelegatePImpl& del) + { + if (this == &del) return *this; + fn = del.fn; + return *this; + } + + DelegatePImpl& operator=(DelegatePImpl&& del) + { + if (this == &del) return *this; + fn = std::move(del.fn); + return *this; + } + + DelegatePImpl& operator=(FunPtr fn) + { + DelegatePImpl::fn = fn; + return *this; + } + + DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) + { + fn = nullptr; + return *this; + } + + operator bool() const + { + return fn; + } + + operator FunVPPtr() const + { + return vPtrToFunPtrExec; + } + + void* arg() const + { + return reinterpret_cast(fn); + } + + R IRAM_ATTR operator()(P... args) const + { + return fn(std::forward(args...)); + } + + protected: + FunPtr fn; + }; +#endif + +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + template + class DelegateImpl { + public: + using target_type = R(); + protected: + using FunPtr = target_type*; + using FunAPtr = R(*)(A); + using FunctionType = std::function; + using FunVPPtr = R(*)(void*); + public: + DelegateImpl() + { + kind = FP; + fn = nullptr; + } + + DelegateImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + ~DelegateImpl() + { + if (FUNC == kind) + functional.~FunctionType(); + else if (FPA == kind) + obj.~A(); + } + + DelegateImpl(const DelegateImpl& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(del.functional); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + new (&obj) A(del.obj); + } + else + { + fn = del.fn; + } + } + + DelegateImpl(DelegateImpl&& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(std::move(del.functional)); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + new (&obj) A(std::move(del.obj)); + } + else + { + fn = del.fn; + } + } + + DelegateImpl(FunAPtr fnA, const A& obj) + { + kind = FPA; + DelegateImpl::fnA = fnA; + new (&this->obj) A(obj); + } + + DelegateImpl(FunAPtr fnA, A&& obj) + { + kind = FPA; + DelegateImpl::fnA = fnA; + new (&this->obj) A(std::move(obj)); + } + + DelegateImpl(FunPtr fn) + { + kind = FP; + DelegateImpl::fn = fn; + } + + template DelegateImpl(F functional) + { + kind = FUNC; + new (&this->functional) FunctionType(std::forward(functional)); + } + + DelegateImpl& operator=(const DelegateImpl& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + if (FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + else if (FPA == del.kind) + { + new (&obj) A; + } + kind = del.kind; + } + if (FUNC == del.kind) + { + functional = del.functional; + } + else if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(DelegateImpl&& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + if (FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + else if (FPA == del.kind) + { + new (&obj) A; + } + kind = del.kind; + } + if (FUNC == del.kind) + { + functional = std::move(del.functional); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(FunPtr fn) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + kind = FP; + this->fn = fn; + return *this; + } + + DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else if (FPA == kind) + { + return fnA; + } + else + { + return functional ? true : false; + } + } + + static R IRAM_ATTR vPtrToFunAPtrExec(void* self) + { + return static_cast(self)->fnA( + static_cast(self)->obj); + }; + + operator FunVPPtr() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else if (FPA == kind) + { + return vPtrToFunAPtrExec; + } + else + { + return [](void* self) -> R + { + return static_cast(self)->functional(); + }; + } + } + + void* arg() const + { + if (FP == kind) + { + return nullptr; + } + else + { + return const_cast(this); + } + } + + operator FunctionType() const + { + if (FP == kind) + { + return fn; + } + else if (FPA == kind) + { + return [this]() { return fnA(obj); }; + } + else + { + return functional; + } + } + + R IRAM_ATTR operator()() const + { + if (FP == kind) + { + return fn(); + } + else if (FPA == kind) + { + return fnA(obj); + } + else + { + return functional(); + } + } + + protected: + enum { FUNC, FP, FPA } kind; + union { + FunctionType functional; + FunPtr fn; + struct { + FunAPtr fnA; + A obj; + }; + }; + }; +#else + template + class DelegateImpl { + public: + using target_type = R(); + protected: + using FunPtr = target_type*; + using FunAPtr = R(*)(A); + using FunVPPtr = R(*)(void*); + public: + DelegateImpl() + { + kind = FP; + fn = nullptr; + } + + DelegateImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + DelegateImpl(const DelegateImpl& del) + { + kind = del.kind; + if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + } + + DelegateImpl(DelegateImpl&& del) + { + kind = del.kind; + if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + } + + DelegateImpl(FunAPtr fnA, const A& obj) + { + kind = FPA; + DelegateImpl::fnA = fnA; + this->obj = obj; + } + + DelegateImpl(FunAPtr fnA, A&& obj) + { + kind = FPA; + DelegateImpl::fnA = fnA; + this->obj = std::move(obj); + } + + DelegateImpl(FunPtr fn) + { + kind = FP; + DelegateImpl::fn = fn; + } + + template DelegateImpl(F fn) + { + kind = FP; + DelegateImpl::fn = std::forward(fn); + } + + DelegateImpl& operator=(const DelegateImpl& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FPA == kind) + { + obj = {}; + } + kind = del.kind; + } + if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(DelegateImpl&& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FPA == kind) + { + obj = {}; + } + kind = del.kind; + } + if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(FunPtr fn) + { + if (FPA == kind) + { + obj = {}; + } + kind = FP; + this->fn = fn; + return *this; + } + + DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FPA == kind) + { + obj = {}; + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else + { + return fnA; + } + } + + static R IRAM_ATTR vPtrToFunAPtrExec(void* self) + { + return static_cast(self)->fnA( + static_cast(self)->obj); + }; + + operator FunVPPtr() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else + { + return vPtrToFunAPtrExec; + } + } + + void* arg() const + { + if (FP == kind) + { + return nullptr; + } + else + { + return const_cast(this); + } + } + + R IRAM_ATTR operator()() const + { + if (FP == kind) + { + return fn(); + } + else + { + return fnA(obj); + } + } + + protected: + enum { FP, FPA } kind; + union { + FunPtr fn; + FunAPtr fnA; + }; + A obj; + }; +#endif + +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + template + class DelegateImpl { + public: + using target_type = R(); + protected: + using FunPtr = target_type*; + using FunctionType = std::function; + using FunVPPtr = R(*)(void*); + public: + DelegateImpl() + { + kind = FP; + fn = nullptr; + } + + DelegateImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + ~DelegateImpl() + { + if (FUNC == kind) + functional.~FunctionType(); + } + + DelegateImpl(const DelegateImpl& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(del.functional); + } + else + { + fn = del.fn; + } + } + + DelegateImpl(DelegateImpl&& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(std::move(del.functional)); + } + else + { + fn = del.fn; + } + } + + DelegateImpl(FunPtr fn) + { + kind = FP; + DelegateImpl::fn = fn; + } + + template DelegateImpl(F functional) + { + kind = FUNC; + new (&this->functional) FunctionType(std::forward(functional)); + } + + DelegateImpl& operator=(const DelegateImpl& del) + { + if (this == &del) return *this; + if (FUNC == kind && FUNC != del.kind) + { + functional.~FunctionType(); + } + else if (FUNC != kind && FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + kind = del.kind; + if (FUNC == del.kind) + { + functional = del.functional; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(DelegateImpl&& del) + { + if (this == &del) return *this; + if (FUNC == kind && FUNC != del.kind) + { + functional.~FunctionType(); + } + else if (FUNC != kind && FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + kind = del.kind; + if (FUNC == del.kind) + { + functional = std::move(del.functional); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(FunPtr fn) + { + if (FUNC == kind) + { + functional.~FunctionType(); + kind = FP; + } + DelegateImpl::fn = fn; + return *this; + } + + DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else + { + return functional ? true : false; + } + } + + operator FunVPPtr() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else + { + return [](void* self) -> R + { + return static_cast(self)->functional(); + }; + } + } + + void* arg() const + { + if (FP == kind) + { + return nullptr; + } + else + { + return const_cast(this); + } + } + + operator FunctionType() const + { + if (FP == kind) + { + return fn; + } + else + { + return functional; + } + } + + R IRAM_ATTR operator()() const + { + if (FP == kind) + { + return fn(); + } + else + { + return functional(); + } + } + + protected: + enum { FUNC, FP } kind; + union { + FunctionType functional; + FunPtr fn; + }; + }; +#else + template + class DelegateImpl { + public: + using target_type = R(); + protected: + using FunPtr = target_type*; + using FunVPPtr = R(*)(void*); + public: + DelegateImpl() + { + fn = nullptr; + } + + DelegateImpl(std::nullptr_t) + { + fn = nullptr; + } + + DelegateImpl(const DelegateImpl& del) + { + fn = del.fn; + } + + DelegateImpl(DelegateImpl&& del) + { + fn = std::move(del.fn); + } + + DelegateImpl(FunPtr fn) + { + DelegateImpl::fn = fn; + } + + template DelegateImpl(F fn) + { + DelegateImpl::fn = std::forward(fn); + } + + DelegateImpl& operator=(const DelegateImpl& del) + { + if (this == &del) return *this; + fn = del.fn; + return *this; + } + + DelegateImpl& operator=(DelegateImpl&& del) + { + if (this == &del) return *this; + fn = std::move(del.fn); + return *this; + } + + DelegateImpl& operator=(FunPtr fn) + { + DelegateImpl::fn = fn; + return *this; + } + + DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) + { + fn = nullptr; + return *this; + } + + operator bool() const + { + return fn; + } + + operator FunVPPtr() const + { + return reinterpret_cast(fn); + } + + void* arg() const + { + return nullptr; + } + + R IRAM_ATTR operator()() const + { + return fn(); + } + + protected: + FunPtr fn; + }; +#endif + + template + class Delegate : private detail::DelegatePImpl + { + private: + using typename detail::DelegatePImpl::FunVPPtr; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using typename detail::DelegatePImpl::FunctionType; +#endif + public: + using detail::DelegatePImpl::target_type; + using detail::DelegatePImpl::DelegatePImpl; + using detail::DelegatePImpl::operator=; + using detail::DelegatePImpl::operator bool; + using detail::DelegatePImpl::operator FunVPPtr; + using detail::DelegatePImpl::arg; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using detail::DelegatePImpl::operator FunctionType; +#endif + using detail::DelegatePImpl::operator(); + }; + + template + class Delegate : private detail::DelegatePImpl + { + private: + using typename detail::DelegatePImpl::FunVPPtr; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using typename detail::DelegatePImpl::FunctionType; +#endif + public: + using detail::DelegatePImpl::target_type; + using detail::DelegatePImpl::DelegatePImpl; + using detail::DelegatePImpl::operator=; + using detail::DelegatePImpl::operator bool; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using detail::DelegatePImpl::operator FunctionType; +#endif + using detail::DelegatePImpl::operator(); + operator FunVPPtr() const + { + if (detail::DelegatePImpl::FPA == detail::DelegatePImpl::kind) + { + return reinterpret_cast(detail::DelegatePImpl::fnA); + } + else + { + return detail::DelegatePImpl::operator FunVPPtr(); + } + } + void* arg() const + { + if (detail::DelegatePImpl::FPA == detail::DelegatePImpl::kind) + { + return detail::DelegatePImpl::obj; + } + else + { + return detail::DelegatePImpl::arg(); + } + } + }; + + template + class Delegate : private detail::DelegateImpl + { + private: + using typename detail::DelegateImpl::FunVPPtr; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using typename detail::DelegateImpl::FunctionType; +#endif + public: + using detail::DelegateImpl::target_type; + using detail::DelegateImpl::DelegateImpl; + using detail::DelegateImpl::operator=; + using detail::DelegateImpl::operator bool; + using detail::DelegateImpl::operator FunVPPtr; + using detail::DelegateImpl::arg; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using detail::DelegateImpl::operator FunctionType; +#endif + using detail::DelegateImpl::operator(); + }; + + template + class Delegate : private detail::DelegateImpl + { + private: + using typename detail::DelegateImpl::FunVPPtr; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using typename detail::DelegateImpl::FunctionType; +#endif + public: + using detail::DelegateImpl::target_type; + using detail::DelegateImpl::DelegateImpl; + using detail::DelegateImpl::operator=; + using detail::DelegateImpl::operator bool; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using detail::DelegateImpl::operator FunctionType; +#endif + using detail::DelegateImpl::operator(); + operator FunVPPtr() const + { + if (detail::DelegateImpl::FPA == detail::DelegateImpl::kind) + { + return reinterpret_cast(detail::DelegateImpl::fnA); + } + else + { + return detail::DelegateImpl::operator FunVPPtr(); + } + } + void* arg() const + { + if (detail::DelegateImpl::FPA == detail::DelegateImpl::kind) + { + return detail::DelegateImpl::obj; + } + else + { + return detail::DelegateImpl::arg(); + } + } + }; + +} + +template class Delegate; +template class Delegate : public detail::Delegate +{ +public: + using detail::Delegate::Delegate; +}; +template class Delegate : public detail::Delegate +{ +public: + using detail::Delegate::Delegate; +}; + +#endif // __Delegate_h diff --git a/EspSoftwareSerial/src/circular_queue/MultiDelegate.h b/EspSoftwareSerial/src/circular_queue/MultiDelegate.h new file mode 100644 index 00000000..1fd4188d --- /dev/null +++ b/EspSoftwareSerial/src/circular_queue/MultiDelegate.h @@ -0,0 +1,503 @@ +/* +MultiDelegate.h - A queue or event multiplexer based on the efficient Delegate +class +Copyright (c) 2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __MULTIDELEGATE_H +#define __MULTIDELEGATE_H + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +#include +#else +#include "circular_queue/ghostl.h" +#endif + +#if defined(ESP8266) +#include +using esp8266::InterruptLock; +#elif defined(ARDUINO) +class InterruptLock { +public: + InterruptLock() { + noInterrupts(); + } + ~InterruptLock() { + interrupts(); + } +}; +#else +#include +#endif + +namespace detail +{ + namespace + { + template< typename Delegate, typename R, bool ISQUEUE = false, typename... P> + struct CallP + { + static R execute(Delegate& del, P... args) + { + return del(std::forward(args...)) ? !ISQUEUE : ISQUEUE; + } + }; + + template< typename Delegate, bool ISQUEUE, typename... P> + struct CallP + { + static bool execute(Delegate& del, P... args) + { + del(std::forward(args...)); + return !ISQUEUE; + } + }; + + template< typename Delegate, typename R, bool ISQUEUE = false> + struct Call + { + static R execute(Delegate& del) + { + return del() ? !ISQUEUE : ISQUEUE; + } + }; + + template< typename Delegate, bool ISQUEUE> + struct Call + { + static bool execute(Delegate& del) + { + del(); + return !ISQUEUE; + } + }; + }; + + template< typename Delegate, typename R = void, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32, typename... P> + class MultiDelegatePImpl + { + public: + MultiDelegatePImpl() = default; + ~MultiDelegatePImpl() + { + *this = nullptr; + } + + MultiDelegatePImpl(const MultiDelegatePImpl&) = delete; + MultiDelegatePImpl& operator=(const MultiDelegatePImpl&) = delete; + + MultiDelegatePImpl(MultiDelegatePImpl&& md) + { + first = md.first; + last = md.last; + unused = md.unused; + nodeCount = md.nodeCount; + md.first = nullptr; + md.last = nullptr; + md.unused = nullptr; + md.nodeCount = 0; + } + + MultiDelegatePImpl(const Delegate& del) + { + add(del); + } + + MultiDelegatePImpl(Delegate&& del) + { + add(std::move(del)); + } + + MultiDelegatePImpl& operator=(MultiDelegatePImpl&& md) + { + first = md.first; + last = md.last; + unused = md.unused; + nodeCount = md.nodeCount; + md.first = nullptr; + md.last = nullptr; + md.unused = nullptr; + md.nodeCount = 0; + return *this; + } + + MultiDelegatePImpl& operator=(std::nullptr_t) + { + if (last) + last->mNext = unused; + if (first) + unused = first; + while (unused) + { + auto to_delete = unused; + unused = unused->mNext; + delete(to_delete); + } + return *this; + } + + MultiDelegatePImpl& operator+=(const Delegate& del) + { + add(del); + return *this; + } + + MultiDelegatePImpl& operator+=(Delegate&& del) + { + add(std::move(del)); + return *this; + } + + protected: + struct Node_t + { + ~Node_t() + { + mDelegate = nullptr; // special overload in Delegate + } + Node_t* mNext = nullptr; + Delegate mDelegate; + }; + + Node_t* first = nullptr; + Node_t* last = nullptr; + Node_t* unused = nullptr; + uint32_t nodeCount = 0; + + // Returns a pointer to an unused Node_t, + // or if none are available allocates a new one, + // or nullptr if limit is reached + Node_t* IRAM_ATTR get_node_unsafe() + { + Node_t* result = nullptr; + // try to get an item from unused items list + if (unused) + { + result = unused; + unused = unused->mNext; + } + // if no unused items, and count not too high, allocate a new one + else if (nodeCount < QUEUE_CAPACITY) + { +#if defined(ESP8266) || defined(ESP32) + result = new (std::nothrow) Node_t; +#else + result = new Node_t; +#endif + if (result) + ++nodeCount; + } + return result; + } + + void recycle_node_unsafe(Node_t* node) + { + node->mDelegate = nullptr; // special overload in Delegate + node->mNext = unused; + unused = node; + } + +#ifndef ARDUINO + std::mutex mutex_unused; +#endif + public: + const Delegate* IRAM_ATTR add(const Delegate& del) + { + return add(Delegate(del)); + } + + const Delegate* IRAM_ATTR add(Delegate&& del) + { + if (!del) + return nullptr; + +#ifdef ARDUINO + InterruptLock lockAllInterruptsInThisScope; +#else + std::lock_guard lock(mutex_unused); +#endif + + Node_t* item = ISQUEUE ? get_node_unsafe() : +#if defined(ESP8266) || defined(ESP32) + new (std::nothrow) Node_t; +#else + new Node_t; +#endif + if (!item) + return nullptr; + + item->mDelegate = std::move(del); + item->mNext = nullptr; + + if (last) + last->mNext = item; + else + first = item; + last = item; + + return &item->mDelegate; + } + + bool remove(const Delegate* del) + { + auto current = first; + if (!current) + return false; + + Node_t* prev = nullptr; + do + { + if (del == ¤t->mDelegate) + { + // remove callback from stack +#ifdef ARDUINO + InterruptLock lockAllInterruptsInThisScope; +#else + std::lock_guard lock(mutex_unused); +#endif + + auto to_recycle = current; + + // removing rLast + if (last == current) + last = prev; + + current = current->mNext; + if (prev) + { + prev->mNext = current; + } + else + { + first = current; + } + + if (ISQUEUE) + recycle_node_unsafe(to_recycle); + else + delete to_recycle; + return true; + } + else + { + prev = current; + current = current->mNext; + } + } while (current); + return false; + } + + void operator()(P... args) + { + auto current = first; + if (!current) + return; + + static std::atomic fence(false); + // prevent recursive calls +#if defined(ARDUINO) && !defined(ESP32) + if (fence.load()) return; + fence.store(true); +#else + if (fence.exchange(true)) return; +#endif + + Node_t* prev = nullptr; + // prevent execution of new callbacks during this run + auto stop = last; + + bool done; + do + { + done = current == stop; + if (!CallP::execute(current->mDelegate, args...)) + { + // remove callback from stack +#ifdef ARDUINO + InterruptLock lockAllInterruptsInThisScope; +#else + std::lock_guard lock(mutex_unused); +#endif + + auto to_recycle = current; + + // removing rLast + if (last == current) + last = prev; + + current = current->mNext; + if (prev) + { + prev->mNext = current; + } + else + { + first = current; + } + + if (ISQUEUE) + recycle_node_unsafe(to_recycle); + else + delete to_recycle; + } + else + { + prev = current; + current = current->mNext; + } + +#if defined(ESP8266) || defined(ESP32) + // running callbacks might last too long for watchdog etc. + optimistic_yield(10000); +#endif + } while (current && !done); + + fence.store(false); + } + }; + + template< typename Delegate, typename R = void, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32> + class MultiDelegateImpl : public MultiDelegatePImpl + { + protected: + using typename MultiDelegatePImpl::Node_t; + using MultiDelegatePImpl::first; + using MultiDelegatePImpl::last; + using MultiDelegatePImpl::unused; + using MultiDelegatePImpl::nodeCount; + using MultiDelegatePImpl::recycle_node_unsafe; +#ifndef ARDUINO + using MultiDelegatePImpl::mutex_unused; +#endif + + public: + using MultiDelegatePImpl::MultiDelegatePImpl; + + void operator()() + { + auto current = first; + if (!current) + return; + + static std::atomic fence(false); + // prevent recursive calls +#if defined(ARDUINO) && !defined(ESP32) + if (fence.load()) return; + fence.store(true); +#else + if (fence.exchange(true)) return; +#endif + + Node_t* prev = nullptr; + // prevent execution of new callbacks during this run + auto stop = last; + + bool done; + do + { + done = current == stop; + if (!Call::execute(current->mDelegate)) + { + // remove callback from stack +#ifdef ARDUINO + InterruptLock lockAllInterruptsInThisScope; +#else + std::lock_guard lock(mutex_unused); +#endif + + auto to_recycle = current; + + // removing rLast + if (last == current) + last = prev; + + current = current->mNext; + if (prev) + { + prev->mNext = current; + } + else + { + first = current; + } + + if (ISQUEUE) + recycle_node_unsafe(to_recycle); + else + delete to_recycle; + } + else + { + prev = current; + current = current->mNext; + } + +#if defined(ESP8266) || defined(ESP32) + // running callbacks might last too long for watchdog etc. + optimistic_yield(10000); +#endif + } while (current && !done); + + fence.store(false); + } + }; + + template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY, typename... P> class MultiDelegate; + + template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY, typename... P> + class MultiDelegate : public MultiDelegatePImpl + { + public: + using MultiDelegatePImpl::MultiDelegatePImpl; + }; + + template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY> + class MultiDelegate : public MultiDelegateImpl + { + public: + using MultiDelegateImpl::MultiDelegateImpl; + }; +}; + +/** +The MultiDelegate class template can be specialized to either a queue or an event multiplexer. +It is designed to be used with Delegate, the efficient runtime wrapper for C function ptr and C++ std::function. +@tparam Delegate specifies the concrete type that MultiDelegate bases the queue or event multiplexer on. +@tparam ISQUEUE modifies the generated MultiDelegate class in subtle ways. In queue mode (ISQUEUE == true), + the value of QUEUE_CAPACITY enforces the maximum number of simultaneous items the queue can contain. + This is exploited to minimize the use of new and delete by reusing already allocated items, thus + reducing heap fragmentation. In event multiplexer mode (ISQUEUE = false), new and delete are + used for allocation of the event handler items. + If the result type of the function call operator of Delegate is void, calling a MultiDelegate queue + removes each item after calling it; a Multidelegate event multiplexer keeps event handlers until + explicitly removed. + If the result type of the function call operator of Delegate is non-void, the type-conversion to bool + of that result determines if the item is immediately removed or kept after each call: a Multidelegate + queue removes an item only if true is returned, but a Multidelegate event multiplexer removes event + handlers that return false. +@tparam QUEUE_CAPACITY is only used if ISQUEUE == true. Then, it sets the maximum capacity that the queue dynamically + allocates from the heap. Unused items are not returned to the heap, but are managed by the MultiDelegate + instance during its own lifetime for efficiency. +*/ +template< typename Delegate, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32> +class MultiDelegate : public detail::MultiDelegate +{ +public: + using detail::MultiDelegate::MultiDelegate; +}; + +#endif // __MULTIDELEGATE_H diff --git a/EspSoftwareSerial/src/circular_queue/circular_queue.h b/EspSoftwareSerial/src/circular_queue/circular_queue.h new file mode 100644 index 00000000..46e3f66e --- /dev/null +++ b/EspSoftwareSerial/src/circular_queue/circular_queue.h @@ -0,0 +1,399 @@ +/* +circular_queue.h - Implementation of a lock-free circular queue for EspSoftwareSerial. +Copyright (c) 2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __circular_queue_h +#define __circular_queue_h + +#ifdef ARDUINO +#include +#endif + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +#include +#include +#include +#include "Delegate.h" +using std::min; +#else +#include "ghostl.h" +#endif + +#if !defined(ESP32) && !defined(ESP8266) +#define ICACHE_RAM_ATTR +#define IRAM_ATTR +#endif + +/*! + @brief Instance class for a single-producer, single-consumer circular queue / ring buffer (FIFO). + This implementation is lock-free between producer and consumer for the available(), peek(), + pop(), and push() type functions. +*/ +template< typename T, typename ForEachArg = void > +class circular_queue +{ +public: + /*! + @brief Constructs a valid, but zero-capacity dummy queue. + */ + circular_queue() : m_bufSize(1) + { + m_inPos.store(0); + m_outPos.store(0); + } + /*! + @brief Constructs a queue of the given maximum capacity. + */ + circular_queue(const size_t capacity) : m_bufSize(capacity + 1), m_buffer(new T[m_bufSize]) + { + m_inPos.store(0); + m_outPos.store(0); + } + circular_queue(circular_queue&& cq) : + m_bufSize(cq.m_bufSize), m_buffer(cq.m_buffer), m_inPos(cq.m_inPos.load()), m_outPos(cq.m_outPos.load()) + {} + ~circular_queue() + { + m_buffer.reset(); + } + circular_queue(const circular_queue&) = delete; + circular_queue& operator=(circular_queue&& cq) + { + m_bufSize = cq.m_bufSize; + m_buffer = cq.m_buffer; + m_inPos.store(cq.m_inPos.load()); + m_outPos.store(cq.m_outPos.load()); + } + circular_queue& operator=(const circular_queue&) = delete; + + /*! + @brief Get the numer of elements the queue can hold at most. + */ + size_t capacity() const + { + return m_bufSize - 1; + } + + /*! + @brief Resize the queue. The available elements in the queue are preserved. + This is not lock-free and concurrent producer or consumer access + will lead to corruption. + @return True if the new capacity could accommodate the present elements in + the queue, otherwise nothing is done and false is returned. + */ + bool capacity(const size_t cap); + + /*! + @brief Discard all data in the queue. + */ + void flush() + { + m_outPos.store(m_inPos.load()); + } + + /*! + @brief Get a snapshot number of elements that can be retrieved by pop. + */ + size_t available() const + { + int avail = static_cast(m_inPos.load() - m_outPos.load()); + if (avail < 0) avail += m_bufSize; + return avail; + } + + /*! + @brief Get the remaining free elementes for pushing. + */ + size_t available_for_push() const + { + int avail = static_cast(m_outPos.load() - m_inPos.load()) - 1; + if (avail < 0) avail += m_bufSize; + return avail; + } + + /*! + @brief Peek at the next element pop will return without removing it from the queue. + @return An rvalue copy of the next element that can be popped. If the queue is empty, + return an rvalue copy of the element that is pending the next push. + */ + T peek() const + { + const auto outPos = m_outPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + return m_buffer[outPos]; + } + + /*! + @brief Peek at the next pending input value. + @return A reference to the next element that can be pushed. + */ + T& IRAM_ATTR pushpeek() + { + const auto inPos = m_inPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + return m_buffer[inPos]; + } + + /*! + @brief Release the next pending input value, accessible by pushpeek(), into the queue. + @return true if the queue accepted the value, false if the queue + was full. + */ + bool IRAM_ATTR push(); + + /*! + @brief Move the rvalue parameter into the queue. + @return true if the queue accepted the value, false if the queue + was full. + */ + bool IRAM_ATTR push(T&& val); + + /*! + @brief Push a copy of the parameter into the queue. + @return true if the queue accepted the value, false if the queue + was full. + */ + bool IRAM_ATTR push(const T& val) + { + return push(T(val)); + } + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) + /*! + @brief Push copies of multiple elements from a buffer into the queue, + in order, beginning at buffer's head. + @return The number of elements actually copied into the queue, counted + from the buffer head. + */ + size_t push_n(const T* buffer, size_t size); +#endif + + /*! + @brief Pop the next available element from the queue. + @return An rvalue copy of the popped element, or a default + value of type T if the queue is empty. + */ + T pop(); + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) + /*! + @brief Pop multiple elements in ordered sequence from the queue to a buffer. + If buffer is nullptr, simply discards up to size elements from the queue. + @return The number of elements actually popped from the queue to + buffer. + */ + size_t pop_n(T* buffer, size_t size); +#endif + + /*! + @brief Iterate over and remove each available element from queue, + calling back fun with an rvalue reference of every single element. + */ +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) + void for_each(const Delegate& fun); +#else + void for_each(Delegate fun); +#endif + + /*! + @brief In reverse order, iterate over, pop and optionally requeue each available element from the queue, + calling back fun with a reference of every single element. + Requeuing is dependent on the return boolean of the callback function. If it + returns true, the requeue occurs. + */ +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) + bool for_each_rev_requeue(const Delegate& fun); +#else + bool for_each_rev_requeue(Delegate fun); +#endif + +protected: + const T defaultValue = {}; + unsigned m_bufSize; +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) + std::unique_ptr m_buffer; +#else + std::unique_ptr m_buffer; +#endif + std::atomic m_inPos; + std::atomic m_outPos; +}; + +template< typename T, typename ForEachArg > +bool circular_queue::capacity(const size_t cap) +{ + if (cap + 1 == m_bufSize) return true; + else if (available() > cap) return false; + std::unique_ptr buffer(new T[cap + 1]); + const auto available = pop_n(buffer, cap); + m_buffer.reset(buffer); + m_bufSize = cap + 1; + std::atomic_thread_fence(std::memory_order_release); + m_inPos.store(available, std::memory_order_relaxed); + m_outPos.store(0, std::memory_order_release); + return true; +} + +template< typename T, typename ForEachArg > +bool IRAM_ATTR circular_queue::push() +{ + const auto inPos = m_inPos.load(std::memory_order_acquire); + const unsigned next = (inPos + 1) % m_bufSize; + if (next == m_outPos.load(std::memory_order_relaxed)) { + return false; + } + + std::atomic_thread_fence(std::memory_order_acquire); + + m_inPos.store(next, std::memory_order_release); + return true; +} + +template< typename T, typename ForEachArg > +bool IRAM_ATTR circular_queue::push(T&& val) +{ + const auto inPos = m_inPos.load(std::memory_order_acquire); + const unsigned next = (inPos + 1) % m_bufSize; + if (next == m_outPos.load(std::memory_order_relaxed)) { + return false; + } + + std::atomic_thread_fence(std::memory_order_acquire); + + m_buffer[inPos] = std::move(val); + + std::atomic_thread_fence(std::memory_order_release); + + m_inPos.store(next, std::memory_order_release); + return true; +} + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +template< typename T, typename ForEachArg > +size_t circular_queue::push_n(const T* buffer, size_t size) +{ + const auto inPos = m_inPos.load(std::memory_order_acquire); + const auto outPos = m_outPos.load(std::memory_order_relaxed); + + size_t blockSize = (outPos > inPos) ? outPos - 1 - inPos : (outPos == 0) ? m_bufSize - 1 - inPos : m_bufSize - inPos; + blockSize = min(size, blockSize); + if (!blockSize) return 0; + int next = (inPos + blockSize) % m_bufSize; + + std::atomic_thread_fence(std::memory_order_acquire); + + auto dest = m_buffer.get() + inPos; + std::copy_n(std::make_move_iterator(buffer), blockSize, dest); + size = min(size - blockSize, outPos > 1 ? static_cast(outPos - next - 1) : 0); + next += size; + dest = m_buffer.get(); + std::copy_n(std::make_move_iterator(buffer + blockSize), size, dest); + + std::atomic_thread_fence(std::memory_order_release); + + m_inPos.store(next, std::memory_order_release); + return blockSize + size; +} +#endif + +template< typename T, typename ForEachArg > +T circular_queue::pop() +{ + const auto outPos = m_outPos.load(std::memory_order_acquire); + if (m_inPos.load(std::memory_order_relaxed) == outPos) return defaultValue; + + std::atomic_thread_fence(std::memory_order_acquire); + + auto val = std::move(m_buffer[outPos]); + + std::atomic_thread_fence(std::memory_order_release); + + m_outPos.store((outPos + 1) % m_bufSize, std::memory_order_release); + return val; +} + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +template< typename T, typename ForEachArg > +size_t circular_queue::pop_n(T* buffer, size_t size) { + size_t avail = size = min(size, available()); + if (!avail) return 0; + const auto outPos = m_outPos.load(std::memory_order_acquire); + size_t n = min(avail, static_cast(m_bufSize - outPos)); + + std::atomic_thread_fence(std::memory_order_acquire); + + if (buffer) { + buffer = std::copy_n(std::make_move_iterator(m_buffer.get() + outPos), n, buffer); + avail -= n; + std::copy_n(std::make_move_iterator(m_buffer.get()), avail, buffer); + } + + std::atomic_thread_fence(std::memory_order_release); + + m_outPos.store((outPos + size) % m_bufSize, std::memory_order_release); + return size; +} +#endif + +template< typename T, typename ForEachArg > +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +void circular_queue::for_each(const Delegate& fun) +#else +void circular_queue::for_each(Delegate fun) +#endif +{ + auto outPos = m_outPos.load(std::memory_order_acquire); + const auto inPos = m_inPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + while (outPos != inPos) + { + fun(std::move(m_buffer[outPos])); + std::atomic_thread_fence(std::memory_order_release); + outPos = (outPos + 1) % m_bufSize; + m_outPos.store(outPos, std::memory_order_release); + } +} + +template< typename T, typename ForEachArg > +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +bool circular_queue::for_each_rev_requeue(const Delegate& fun) +#else +bool circular_queue::for_each_rev_requeue(Delegate fun) +#endif +{ + auto inPos0 = circular_queue::m_inPos.load(std::memory_order_acquire); + auto outPos = circular_queue::m_outPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + if (outPos == inPos0) return false; + auto pos = inPos0; + auto outPos1 = inPos0; + const auto posDecr = circular_queue::m_bufSize - 1; + do { + pos = (pos + posDecr) % circular_queue::m_bufSize; + T&& val = std::move(circular_queue::m_buffer[pos]); + if (fun(val)) + { + outPos1 = (outPos1 + posDecr) % circular_queue::m_bufSize; + if (outPos1 != pos) circular_queue::m_buffer[outPos1] = std::move(val); + } + } while (pos != outPos); + circular_queue::m_outPos.store(outPos1, std::memory_order_release); + return true; +} + +#endif // __circular_queue_h diff --git a/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h b/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h new file mode 100644 index 00000000..7024247a --- /dev/null +++ b/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h @@ -0,0 +1,200 @@ +/* +circular_queue_mp.h - Implementation of a lock-free circular queue for EspSoftwareSerial. +Copyright (c) 2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __circular_queue_mp_h +#define __circular_queue_mp_h + +#include "circular_queue.h" + +#ifdef ESP8266 +#include "interrupts.h" +#else +#include +#endif + +/*! + @brief Instance class for a multi-producer, single-consumer circular queue / ring buffer (FIFO). + This implementation is lock-free between producers and consumer for the available(), peek(), + pop(), and push() type functions, but is guarded to safely allow only a single producer + at any instant. +*/ +template< typename T, typename ForEachArg = void > +class circular_queue_mp : protected circular_queue +{ +public: + circular_queue_mp() = default; + circular_queue_mp(const size_t capacity) : circular_queue(capacity) + {} + circular_queue_mp(circular_queue&& cq) : circular_queue(std::move(cq)) + {} + using circular_queue::operator=; + using circular_queue::capacity; + using circular_queue::flush; + using circular_queue::available; + using circular_queue::available_for_push; + using circular_queue::peek; + using circular_queue::pop; + using circular_queue::pop_n; + using circular_queue::for_each; + using circular_queue::for_each_rev_requeue; + + /*! + @brief Resize the queue. The available elements in the queue are preserved. + This is not lock-free, but safe, concurrent producer or consumer access + is guarded. + @return True if the new capacity could accommodate the present elements in + the queue, otherwise nothing is done and false is returned. + */ + bool capacity(const size_t cap) + { +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + return circular_queue::capacity(cap); + } + + bool IRAM_ATTR push() = delete; + + /*! + @brief Move the rvalue parameter into the queue, guarded + for multiple concurrent producers. + @return true if the queue accepted the value, false if the queue + was full. + */ + bool IRAM_ATTR push(T&& val) + { +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + return circular_queue::push(std::move(val)); + } + + /*! + @brief Push a copy of the parameter into the queue, guarded + for multiple concurrent producers. + @return true if the queue accepted the value, false if the queue + was full. + */ + bool IRAM_ATTR push(const T& val) + { +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + return circular_queue::push(val); + } + + /*! + @brief Push copies of multiple elements from a buffer into the queue, + in order, beginning at buffer's head. This is guarded for + multiple producers, push_n() is atomic. + @return The number of elements actually copied into the queue, counted + from the buffer head. + */ + size_t push_n(const T* buffer, size_t size) + { +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + return circular_queue::push_n(buffer, size); + } + + /*! + @brief Pops the next available element from the queue, requeues + it immediately. + @return A reference to the just requeued element, or the default + value of type T if the queue is empty. + */ + T& pop_requeue(); + + /*! + @brief Iterate over, pop and optionally requeue each available element from the queue, + calling back fun with a reference of every single element. + Requeuing is dependent on the return boolean of the callback function. If it + returns true, the requeue occurs. + */ + bool for_each_requeue(const Delegate& fun); + +#ifndef ESP8266 +protected: + std::mutex m_pushMtx; +#endif +}; + +template< typename T, typename ForEachArg > +T& circular_queue_mp::pop_requeue() +{ +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + const auto outPos = circular_queue::m_outPos.load(std::memory_order_acquire); + const auto inPos = circular_queue::m_inPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + if (inPos == outPos) return circular_queue::defaultValue; + T& val = circular_queue::m_buffer[inPos] = std::move(circular_queue::m_buffer[outPos]); + const auto bufSize = circular_queue::m_bufSize; + std::atomic_thread_fence(std::memory_order_release); + circular_queue::m_outPos.store((outPos + 1) % bufSize, std::memory_order_relaxed); + circular_queue::m_inPos.store((inPos + 1) % bufSize, std::memory_order_release); + return val; +} + +template< typename T, typename ForEachArg > +bool circular_queue_mp::for_each_requeue(const Delegate& fun) +{ + auto inPos0 = circular_queue::m_inPos.load(std::memory_order_acquire); + auto outPos = circular_queue::m_outPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + if (outPos == inPos0) return false; + do { + T&& val = std::move(circular_queue::m_buffer[outPos]); + if (fun(val)) + { +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + std::atomic_thread_fence(std::memory_order_release); + auto inPos = circular_queue::m_inPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + circular_queue::m_buffer[inPos] = std::move(val); + std::atomic_thread_fence(std::memory_order_release); + circular_queue::m_inPos.store((inPos + 1) % circular_queue::m_bufSize, std::memory_order_release); + } + else + { + std::atomic_thread_fence(std::memory_order_release); + } + outPos = (outPos + 1) % circular_queue::m_bufSize; + circular_queue::m_outPos.store(outPos, std::memory_order_release); + } while (outPos != inPos0); + return true; +} + +#endif // __circular_queue_mp_h diff --git a/EspSoftwareSerial/src/circular_queue/ghostl.h b/EspSoftwareSerial/src/circular_queue/ghostl.h new file mode 100644 index 00000000..11683805 --- /dev/null +++ b/EspSoftwareSerial/src/circular_queue/ghostl.h @@ -0,0 +1,92 @@ +/* +ghostl.h - Implementation of a bare-bones, mostly no-op, C++ STL shell + that allows building some Arduino ESP8266/ESP32 + libraries on Aruduino AVR. +Copyright (c) 2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __ghostl_h +#define __ghostl_h + +#if defined(ARDUINO_ARCH_SAMD) +#include +#endif + +namespace std +{ +#if !defined(ARDUINO_ARCH_SAMD) + typedef enum memory_order { + memory_order_relaxed, + memory_order_acquire, + memory_order_release, + memory_order_seq_cst + } memory_order; + template< typename T > class atomic { + private: + T value; + public: + atomic() {} + atomic(T desired) { value = desired; } + void store(T desired, std::memory_order = std::memory_order_seq_cst) volatile noexcept { value = desired; } + T load(std::memory_order = std::memory_order_seq_cst) const volatile noexcept { return value; } + }; + inline void atomic_thread_fence(std::memory_order order) noexcept {} + template< typename T > T&& move(T& t) noexcept { return static_cast(t); } +#endif + + template< typename T, unsigned long N > struct array + { + T _M_elems[N]; + decltype(sizeof(0)) size() const { return N; } + T& operator[](decltype(sizeof(0)) i) { return _M_elems[i]; } + const T& operator[](decltype(sizeof(0)) i) const { return _M_elems[i]; } + }; + + template< typename T > class unique_ptr + { + public: + using pointer = T*; + unique_ptr() noexcept : ptr(nullptr) {} + unique_ptr(pointer p) : ptr(p) {} + pointer operator->() const noexcept { return ptr; } + T& operator[](decltype(sizeof(0)) i) const { return ptr[i]; } + void reset(pointer p = pointer()) noexcept + { + delete ptr; + ptr = p; + } + T& operator*() const { return *ptr; } + private: + pointer ptr; + }; + + template< typename T > using function = T*; + using nullptr_t = decltype(nullptr); + + template + struct identity { + typedef T type; + }; + + template + inline T&& forward(typename identity::type& t) noexcept + { + return static_cast::type&&>(t); + } +} + +#endif // __ghostl_h From 714a39904a2f7e974b2440e3bf91170d05da49e1 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:38:30 +0100 Subject: [PATCH 071/104] Create keywords.txt --- lib/EspSoftwareSerial/keywords.txt | 43 ++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 lib/EspSoftwareSerial/keywords.txt diff --git a/lib/EspSoftwareSerial/keywords.txt b/lib/EspSoftwareSerial/keywords.txt new file mode 100644 index 00000000..52d48ab3 --- /dev/null +++ b/lib/EspSoftwareSerial/keywords.txt @@ -0,0 +1,43 @@ +####################################### +# Syntax Coloring Map for SoftwareSerial +# (esp8266) +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +SoftwareSerial KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +baudRate KEYWORD2 +setTransmitEnablePin KEYWORD2 +enableIntTx KEYWORD2 +overflow KEYWORD2 +available KEYWORD2 +peek KEYWORD2 +read KEYWORD2 +flush KEYWORD2 +write KEYWORD2 +enableRx KEYWORD2 +enableTx KEYWORD2 +listen KEYWORD2 +end KEYWORD2 +isListening KEYWORD2 +stopListening KEYWORD2 +onReceive KEYWORD2 +perform_work KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + +SW_SERIAL_UNUSED_PIN LITERAL1 +SWSERIAL_5N1 LITERAL1 +SWSERIAL_6N1 LITERAL1 +SWSERIAL_7N1 LITERAL1 +SWSERIAL_8N1 LITERAL1 From a21bd9c4469a9cc45726002636e08cd1e0fb2b6a Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:39:04 +0100 Subject: [PATCH 072/104] Add files via upload --- lib/EspSoftwareSerial/LICENSE | 502 +++++++++++++++++++++++ lib/EspSoftwareSerial/README.md | 124 ++++++ lib/EspSoftwareSerial/library.json | 15 + lib/EspSoftwareSerial/library.properties | 9 + 4 files changed, 650 insertions(+) create mode 100644 lib/EspSoftwareSerial/LICENSE create mode 100644 lib/EspSoftwareSerial/README.md create mode 100644 lib/EspSoftwareSerial/library.json create mode 100644 lib/EspSoftwareSerial/library.properties diff --git a/lib/EspSoftwareSerial/LICENSE b/lib/EspSoftwareSerial/LICENSE new file mode 100644 index 00000000..f166cc57 --- /dev/null +++ b/lib/EspSoftwareSerial/LICENSE @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! \ No newline at end of file diff --git a/lib/EspSoftwareSerial/README.md b/lib/EspSoftwareSerial/README.md new file mode 100644 index 00000000..2d14c9e6 --- /dev/null +++ b/lib/EspSoftwareSerial/README.md @@ -0,0 +1,124 @@ +# EspSoftwareSerial + +## Implementation of the Arduino software serial library for the ESP8266 / ESP32 + +This fork implements interrupt service routine best practice. +In the receive interrupt, instead of blocking for whole bytes +at a time - voiding any near-realtime behavior of the CPU - only level +change and timestamp are recorded. The more time consuming phase +detection and byte assembly are done in the main code. + +Except at high bitrates, depending on other ongoing activity, +interrupts in particular, this software serial adapter +supports full duplex receive and send. At high bitrates (115200bps) +send bit timing can be improved at the expense of blocking concurrent +full duplex receives, with the ``SoftwareSerial::enableIntTx(false)`` function call. + +The same functionality is given as the corresponding AVR library but +several instances can be active at the same time. Speed up to 115200 baud +is supported. Besides a constructor compatible to the AVR SoftwareSerial class, +and updated constructor that takes no arguments exists, instead the ``begin()`` +function can handle the pin assignments and logic inversion. +It also has optional input buffer capacity arguments for byte buffer and ISR bit buffer. +This way, it is a better drop-in replacement for the hardware serial APIs on the ESP MCUs. + +Please note that due to the fact that the ESPs always have other activities +ongoing, there will be some inexactness in interrupt timings. This may +lead to inevitable, but few, bit errors when having heavy data traffic +at high baud rates. + +## Resource optimization + +The memory footprint can be optimized to just fit the amount of expected +incoming asynchronous data. +For this, the ``SoftwareSerial`` constructor provides two arguments. First, the +octet buffer capacity for assembled received octets can be set. Read calls are +satisfied from this buffer, freeing it in return. +Second, the signal edge detection buffer of 32bit fields can be resized. +One octet may require up to to 10 fields, but fewer may be needed, +depending on the bit pattern. Any read or write calls check this buffer +to assemble received octets, thus promoting completed octets to the octet +buffer, freeing fields in the edge detection buffer. + +Look at the swsertest.ino example. There, on reset, ASCII characters ' ' to 'z' +are sent. This happens not as a block write, but in a single write call per +character. As the example uses a local loopback wire, every outgoing bit is +immediately received back. Therefore, any single write call causes up to +10 fields - depending on the exact bit pattern - to be occupied in the signal +edge detection buffer. In turn, as explained before, each single write call +also causes received bit assembly to be performed, promoting these bits from +the signal edge detection buffer to the octet buffer as soon as possible. +Explaining by way of contrast, if during a a single write call, perhaps because +of using block writing, more than a single octet is received, there will be a +need for more than 10 fields in the signal edge detection buffer. +The necessary capacity of the octet buffer only depends on the amount of incoming +data until the next read call. + +For the swsertest.ino example, this results in the following optimized +constructor arguments to spend only the minimum RAM on buffers required: + +The octet buffer capacity (``bufCapacity``) is 93 (91 characters net plus two tolerance). +The signal edge detection buffer capacity (``isrBufCapacity``) is 10, as each octet has +10 bits on the wire, which are immediately received during the write, and each +write call causes the signal edge detection to promote the previously sent and +received bits to the octet buffer. + +In a more generalized scenario, calculate the bits (use message size in octets +times 10) that may be asynchronously received to determine the value for +``isrBufCapacity`` in the constructor. Also use the number of received octets +that must be buffered for reading as the value of ``bufCapacity``. +The more frequently your code calls write or read functions, the greater the +chances are that you can reduce the ``isrBufCapacity`` footprint without losing data, +and each time you call read to fetch from the octet buffer, you reduce the +need for space there. + +## SoftwareSerialConfig and parity +The configuration of the data stream is done via a ``SoftwareSerialConfig`` +argument to ``begin()``. Word lengths can be set to between 5 and 8 bits, parity +can be N(one), O(dd) or E(ven) and 1 or 2 stop bits can be used. The default is +``SWSERIAL_8N1`` using 8 bits, no parity and 1 stop bit but any combination can +be used, e.g. ``SWSERIAL_7E2``. If using EVEN or ODD parity, any parity errors +can be detected with the ``peekParityError()`` function. Note that parity +checking must be done before ``read()``, as the parity information is removed +from the buffer when reading the corresponding byte. + +To allow flexible 9-bit and data/addressing protocols, the additional parity +modes MARK and SPACE are also available. Furthermore, the parity mode can be +individually set in each call to ``write()``. + +This allows a simple implementation of protocols where the parity bit is used to +distinguish between data and addresses/commands ("9-bit" protocols). First set +up SoftwareSerial with parity mode SPACE, e.g. ``SWSERIAL_8S1``. This will add a +parity bit to every byte sent, setting it to logical zero (SPACE parity). + +To detect incoming bytes with the parity bit set (MARK parity), use the +``peekParityError()`` function. To send a byte with the parity bit set, just add +``MARK`` as the second argument when writing, e.g. ``write(ch, MARK)``. + +## Using and updating EspSoftwareSerial in the esp8266com/esp8266 Arduino build environment + +EspSoftwareSerial is both part of the BSP download for ESP8266 in Arduino, +and it is set up as a Git submodule in the esp8266 source tree, +specifically in ``.../esp8266/libraries/SoftwareSerial`` when using a Github +repository clone in your Arduino sketchbook hardware directory. +This supersedes any version of EspSoftwareSerial installed for instance via +the Arduino library manager, it is not required to install EspSoftwareSerial +for the ESP8266 separately at all, but doing so has ill effect. + +The responsible maintainer of the esp8266 repository has kindly shared the +following command line instructions to use, if one wishes to manually +update EspSoftwareSerial to a newer release than pulled in via the ESP8266 Arduino BSP: + +To update esp8266/arduino SoftwareSerial submodule to lastest master: + +Clean it (optional): +```shell +$ rm -rf libraries/SoftwareSerial +$ git submodule update --init +``` +Now update it: +```shell +$ cd libraries/SoftwareSerial +$ git checkout master +$ git pull +``` diff --git a/lib/EspSoftwareSerial/library.json b/lib/EspSoftwareSerial/library.json new file mode 100644 index 00000000..3415b056 --- /dev/null +++ b/lib/EspSoftwareSerial/library.json @@ -0,0 +1,15 @@ +{ + "name": "EspSoftwareSerial", + "version": "6.6.1", + "keywords": [ + "serial", "io", "softwareserial" + ], + "description": "Implementation of the Arduino software serial for ESP8266/ESP32.", + "repository": + { + "type": "git", + "url": "https://github.com/plerup/espsoftwareserial" + }, + "frameworks": "arduino", + "platforms": "*" +} diff --git a/lib/EspSoftwareSerial/library.properties b/lib/EspSoftwareSerial/library.properties new file mode 100644 index 00000000..bd052153 --- /dev/null +++ b/lib/EspSoftwareSerial/library.properties @@ -0,0 +1,9 @@ +name=EspSoftwareSerial +version=6.6.1 +author=Peter Lerup, Dirk Kaar +maintainer=Peter Lerup +sentence=Implementation of the Arduino software serial for ESP8266/ESP32. +paragraph= +category=Signal Input/Output +url=https://github.com/plerup/espsoftwareserial/ +architectures=esp8266,esp32 From 8f322e536740c3908b4af9913c7723a452cc2a45 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:39:42 +0100 Subject: [PATCH 073/104] Delete LICENSE --- EspSoftwareSerial/LICENSE | 502 -------------------------------------- 1 file changed, 502 deletions(-) delete mode 100644 EspSoftwareSerial/LICENSE diff --git a/EspSoftwareSerial/LICENSE b/EspSoftwareSerial/LICENSE deleted file mode 100644 index f166cc57..00000000 --- a/EspSoftwareSerial/LICENSE +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! \ No newline at end of file From c7cf26185e43c2270f6eb0d08a9807a32a621d9f Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:40:15 +0100 Subject: [PATCH 074/104] Delete README.md --- EspSoftwareSerial/README.md | 124 ------------------------------------ 1 file changed, 124 deletions(-) delete mode 100644 EspSoftwareSerial/README.md diff --git a/EspSoftwareSerial/README.md b/EspSoftwareSerial/README.md deleted file mode 100644 index 2d14c9e6..00000000 --- a/EspSoftwareSerial/README.md +++ /dev/null @@ -1,124 +0,0 @@ -# EspSoftwareSerial - -## Implementation of the Arduino software serial library for the ESP8266 / ESP32 - -This fork implements interrupt service routine best practice. -In the receive interrupt, instead of blocking for whole bytes -at a time - voiding any near-realtime behavior of the CPU - only level -change and timestamp are recorded. The more time consuming phase -detection and byte assembly are done in the main code. - -Except at high bitrates, depending on other ongoing activity, -interrupts in particular, this software serial adapter -supports full duplex receive and send. At high bitrates (115200bps) -send bit timing can be improved at the expense of blocking concurrent -full duplex receives, with the ``SoftwareSerial::enableIntTx(false)`` function call. - -The same functionality is given as the corresponding AVR library but -several instances can be active at the same time. Speed up to 115200 baud -is supported. Besides a constructor compatible to the AVR SoftwareSerial class, -and updated constructor that takes no arguments exists, instead the ``begin()`` -function can handle the pin assignments and logic inversion. -It also has optional input buffer capacity arguments for byte buffer and ISR bit buffer. -This way, it is a better drop-in replacement for the hardware serial APIs on the ESP MCUs. - -Please note that due to the fact that the ESPs always have other activities -ongoing, there will be some inexactness in interrupt timings. This may -lead to inevitable, but few, bit errors when having heavy data traffic -at high baud rates. - -## Resource optimization - -The memory footprint can be optimized to just fit the amount of expected -incoming asynchronous data. -For this, the ``SoftwareSerial`` constructor provides two arguments. First, the -octet buffer capacity for assembled received octets can be set. Read calls are -satisfied from this buffer, freeing it in return. -Second, the signal edge detection buffer of 32bit fields can be resized. -One octet may require up to to 10 fields, but fewer may be needed, -depending on the bit pattern. Any read or write calls check this buffer -to assemble received octets, thus promoting completed octets to the octet -buffer, freeing fields in the edge detection buffer. - -Look at the swsertest.ino example. There, on reset, ASCII characters ' ' to 'z' -are sent. This happens not as a block write, but in a single write call per -character. As the example uses a local loopback wire, every outgoing bit is -immediately received back. Therefore, any single write call causes up to -10 fields - depending on the exact bit pattern - to be occupied in the signal -edge detection buffer. In turn, as explained before, each single write call -also causes received bit assembly to be performed, promoting these bits from -the signal edge detection buffer to the octet buffer as soon as possible. -Explaining by way of contrast, if during a a single write call, perhaps because -of using block writing, more than a single octet is received, there will be a -need for more than 10 fields in the signal edge detection buffer. -The necessary capacity of the octet buffer only depends on the amount of incoming -data until the next read call. - -For the swsertest.ino example, this results in the following optimized -constructor arguments to spend only the minimum RAM on buffers required: - -The octet buffer capacity (``bufCapacity``) is 93 (91 characters net plus two tolerance). -The signal edge detection buffer capacity (``isrBufCapacity``) is 10, as each octet has -10 bits on the wire, which are immediately received during the write, and each -write call causes the signal edge detection to promote the previously sent and -received bits to the octet buffer. - -In a more generalized scenario, calculate the bits (use message size in octets -times 10) that may be asynchronously received to determine the value for -``isrBufCapacity`` in the constructor. Also use the number of received octets -that must be buffered for reading as the value of ``bufCapacity``. -The more frequently your code calls write or read functions, the greater the -chances are that you can reduce the ``isrBufCapacity`` footprint without losing data, -and each time you call read to fetch from the octet buffer, you reduce the -need for space there. - -## SoftwareSerialConfig and parity -The configuration of the data stream is done via a ``SoftwareSerialConfig`` -argument to ``begin()``. Word lengths can be set to between 5 and 8 bits, parity -can be N(one), O(dd) or E(ven) and 1 or 2 stop bits can be used. The default is -``SWSERIAL_8N1`` using 8 bits, no parity and 1 stop bit but any combination can -be used, e.g. ``SWSERIAL_7E2``. If using EVEN or ODD parity, any parity errors -can be detected with the ``peekParityError()`` function. Note that parity -checking must be done before ``read()``, as the parity information is removed -from the buffer when reading the corresponding byte. - -To allow flexible 9-bit and data/addressing protocols, the additional parity -modes MARK and SPACE are also available. Furthermore, the parity mode can be -individually set in each call to ``write()``. - -This allows a simple implementation of protocols where the parity bit is used to -distinguish between data and addresses/commands ("9-bit" protocols). First set -up SoftwareSerial with parity mode SPACE, e.g. ``SWSERIAL_8S1``. This will add a -parity bit to every byte sent, setting it to logical zero (SPACE parity). - -To detect incoming bytes with the parity bit set (MARK parity), use the -``peekParityError()`` function. To send a byte with the parity bit set, just add -``MARK`` as the second argument when writing, e.g. ``write(ch, MARK)``. - -## Using and updating EspSoftwareSerial in the esp8266com/esp8266 Arduino build environment - -EspSoftwareSerial is both part of the BSP download for ESP8266 in Arduino, -and it is set up as a Git submodule in the esp8266 source tree, -specifically in ``.../esp8266/libraries/SoftwareSerial`` when using a Github -repository clone in your Arduino sketchbook hardware directory. -This supersedes any version of EspSoftwareSerial installed for instance via -the Arduino library manager, it is not required to install EspSoftwareSerial -for the ESP8266 separately at all, but doing so has ill effect. - -The responsible maintainer of the esp8266 repository has kindly shared the -following command line instructions to use, if one wishes to manually -update EspSoftwareSerial to a newer release than pulled in via the ESP8266 Arduino BSP: - -To update esp8266/arduino SoftwareSerial submodule to lastest master: - -Clean it (optional): -```shell -$ rm -rf libraries/SoftwareSerial -$ git submodule update --init -``` -Now update it: -```shell -$ cd libraries/SoftwareSerial -$ git checkout master -$ git pull -``` From 2848011af3292aef43acc8f4634b0efe07fecd2e Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:40:31 +0100 Subject: [PATCH 075/104] Delete keywords.txt --- EspSoftwareSerial/keywords.txt | 43 ---------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 EspSoftwareSerial/keywords.txt diff --git a/EspSoftwareSerial/keywords.txt b/EspSoftwareSerial/keywords.txt deleted file mode 100644 index 52d48ab3..00000000 --- a/EspSoftwareSerial/keywords.txt +++ /dev/null @@ -1,43 +0,0 @@ -####################################### -# Syntax Coloring Map for SoftwareSerial -# (esp8266) -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -SoftwareSerial KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -begin KEYWORD2 -baudRate KEYWORD2 -setTransmitEnablePin KEYWORD2 -enableIntTx KEYWORD2 -overflow KEYWORD2 -available KEYWORD2 -peek KEYWORD2 -read KEYWORD2 -flush KEYWORD2 -write KEYWORD2 -enableRx KEYWORD2 -enableTx KEYWORD2 -listen KEYWORD2 -end KEYWORD2 -isListening KEYWORD2 -stopListening KEYWORD2 -onReceive KEYWORD2 -perform_work KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### - -SW_SERIAL_UNUSED_PIN LITERAL1 -SWSERIAL_5N1 LITERAL1 -SWSERIAL_6N1 LITERAL1 -SWSERIAL_7N1 LITERAL1 -SWSERIAL_8N1 LITERAL1 From 2c1851fa1914a1552f09a67ad128f5bd09890f16 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:40:46 +0100 Subject: [PATCH 076/104] Delete library.json --- EspSoftwareSerial/library.json | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 EspSoftwareSerial/library.json diff --git a/EspSoftwareSerial/library.json b/EspSoftwareSerial/library.json deleted file mode 100644 index 3415b056..00000000 --- a/EspSoftwareSerial/library.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "EspSoftwareSerial", - "version": "6.6.1", - "keywords": [ - "serial", "io", "softwareserial" - ], - "description": "Implementation of the Arduino software serial for ESP8266/ESP32.", - "repository": - { - "type": "git", - "url": "https://github.com/plerup/espsoftwareserial" - }, - "frameworks": "arduino", - "platforms": "*" -} From 73823ec0705f4ea7784374e63f169773abdffae5 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:40:56 +0100 Subject: [PATCH 077/104] Delete library.properties --- EspSoftwareSerial/library.properties | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 EspSoftwareSerial/library.properties diff --git a/EspSoftwareSerial/library.properties b/EspSoftwareSerial/library.properties deleted file mode 100644 index bd052153..00000000 --- a/EspSoftwareSerial/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=EspSoftwareSerial -version=6.6.1 -author=Peter Lerup, Dirk Kaar -maintainer=Peter Lerup -sentence=Implementation of the Arduino software serial for ESP8266/ESP32. -paragraph= -category=Signal Input/Output -url=https://github.com/plerup/espsoftwareserial/ -architectures=esp8266,esp32 From 92da9d96850e7fb92e2361ae880505c4995d007a Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:41:35 +0100 Subject: [PATCH 078/104] Delete loopback.ino --- .../examples/loopback/loopback.ino | 263 ------------------ 1 file changed, 263 deletions(-) delete mode 100644 EspSoftwareSerial/examples/loopback/loopback.ino diff --git a/EspSoftwareSerial/examples/loopback/loopback.ino b/EspSoftwareSerial/examples/loopback/loopback.ino deleted file mode 100644 index b612bdec..00000000 --- a/EspSoftwareSerial/examples/loopback/loopback.ino +++ /dev/null @@ -1,263 +0,0 @@ -#include - -// On ESP8266: -// Local SoftwareSerial loopback, connect D5 (rx) and D6 (tx). -// For local hardware loopback, connect D5 to D8 (tx), D6 to D7 (rx). -// For hardware send/sink, connect D7 (rx) and D8 (tx). -// Hint: The logger is run at 9600bps such that enableIntTx(true) can remain unchanged. Blocking -// interrupts severely impacts the ability of the SoftwareSerial devices to operate concurrently -// and/or in duplex mode. -// Operating in software serial full duplex mode, runs at 19200bps and few errors (~2.5%). -// Operating in software serial half duplex mode (both loopback and repeater), -// runs at 57600bps with nearly no errors. -// Operating loopback in full duplex, and repeater in half duplex, runs at 38400bps with nearly no errors. -// On ESP32: -// For SoftwareSerial or hardware send/sink, connect D5 (rx) and D6 (tx). -// Hardware Serial2 defaults to D4 (rx), D3 (tx). -// For local hardware loopback, connect D5 (rx) to D3 (tx), D6 (tx) to D4 (rx). - -#if defined(ESP8266) && !defined(D5) -#define D5 (14) -#define D6 (12) -#define D7 (13) -#define D8 (15) -#define TX (1) -#endif - -// Pick only one of HWLOOPBACK, HWSOURCESWSINK, or HWSOURCESINK -//#define HWLOOPBACK 1 -//#define HWSOURCESWSINK 1 -//#define HWSOURCESINK 1 -#define HALFDUPLEX 1 - -#ifdef ESP32 -constexpr int IUTBITRATE = 19200; -#else -constexpr int IUTBITRATE = 19200; -#endif - -#if defined(ESP8266) -constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; -constexpr SerialConfig hwSerialConfig = SERIAL_8E1; -#elif defined(ESP32) -constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; -constexpr uint32_t hwSerialConfig = SERIAL_8E1; -#else -constexpr unsigned swSerialConfig = 3; -#endif -constexpr bool invert = false; - -constexpr int BLOCKSIZE = 16; // use fractions of 256 - -unsigned long start; -String effTxTxt("eff. tx: "); -String effRxTxt("eff. rx: "); -int txCount; -int rxCount; -int expected; -int rxErrors; -int rxParityErrors; -constexpr int ReportInterval = IUTBITRATE / 8; - -#if defined(ESP8266) -#if defined(HWLOOPBACK) || defined(HWSOURCESWSINK) -HardwareSerial& hwSerial(Serial); -SoftwareSerial serialIUT; -SoftwareSerial logger; -#elif defined(HWSOURCESINK) -HardwareSerial& serialIUT(Serial); -SoftwareSerial logger; -#else -SoftwareSerial serialIUT; -HardwareSerial& logger(Serial); -#endif -#elif defined(ESP32) -#if defined(HWLOOPBACK) || defined (HWSOURCESWSINK) -HardwareSerial& hwSerial(Serial2); -SoftwareSerial serialIUT; -#elif defined(HWSOURCESINK) -HardwareSerial& serialIUT(Serial2); -#else -SoftwareSerial serialIUT; -#endif -HardwareSerial& logger(Serial); -#else -SoftwareSerial serialIUT(14, 12); -HardwareSerial& logger(Serial); -#endif - -void setup() { -#if defined(ESP8266) -#if defined(HWLOOPBACK) || defined(HWSOURCESINK) || defined(HWSOURCESWSINK) - Serial.begin(IUTBITRATE, hwSerialConfig, SERIAL_FULL, 1, invert); - Serial.swap(); - Serial.setRxBufferSize(2 * BLOCKSIZE); - logger.begin(9600, SWSERIAL_8N1, -1, TX); -#else - logger.begin(9600); -#endif -#if !defined(HWSOURCESINK) - serialIUT.begin(IUTBITRATE, swSerialConfig, D5, D6, invert, 2 * BLOCKSIZE); -#ifdef HALFDUPLEX - serialIUT.enableIntTx(false); -#endif -#endif -#elif defined(ESP32) -#if defined(HWLOOPBACK) || defined(HWSOURCESWSINK) - Serial2.begin(IUTBITRATE, hwSerialConfig, D4, D3, invert); - Serial2.setRxBufferSize(2 * BLOCKSIZE); -#elif defined(HWSOURCESINK) - serialIUT.begin(IUTBITRATE, hwSerialConfig, D5, D6, invert); - serialIUT.setRxBufferSize(2 * BLOCKSIZE); -#endif -#if !defined(HWSOURCESINK) - serialIUT.begin(IUTBITRATE, swSerialConfig, D5, D6, invert, 2 * BLOCKSIZE); -#ifdef HALFDUPLEX - serialIUT.enableIntTx(false); -#endif -#endif - logger.begin(9600); -#else -#if !defined(HWSOURCESINK) - serialIUT.begin(IUTBITRATE); -#endif - logger.begin(9600); -#endif - - logger.println("Loopback example for EspSoftwareSerial"); - - start = micros(); - txCount = 0; - rxCount = 0; - rxErrors = 0; - rxParityErrors = 0; - expected = -1; -} - -unsigned char c = 0; - -void loop() { -#ifdef HALFDUPLEX - char block[BLOCKSIZE]; -#endif - char inBuf[BLOCKSIZE]; - for (int i = 0; i < BLOCKSIZE; ++i) { -#ifndef HALFDUPLEX -#ifdef HWSOURCESWSINK - hwSerial.write(c); -#else - serialIUT.write(c); -#endif -#ifdef HWLOOPBACK - int avail = hwSerial.available(); - while ((0 == (i % 8)) && avail > 0) { - int inCnt = hwSerial.read(inBuf, min(avail, min(BLOCKSIZE, hwSerial.availableForWrite()))); - hwSerial.write(inBuf, inCnt); - avail -= inCnt; - } -#endif -#else - block[i] = c; -#endif - c = (c + 1) % 256; - ++txCount; - } -#ifdef HALFDUPLEX -#ifdef HWSOURCESWSINK - hwSerial.write(block, BLOCKSIZE); -#else - serialIUT.write(block, BLOCKSIZE); -#endif -#endif -#ifdef HWSOURCESINK -#if defined(ESP8266) - if (serialIUT.hasOverrun()) { logger.println("serialIUT.overrun"); } -#endif -#else - if (serialIUT.overflow()) { logger.println("serialIUT.overflow"); } -#endif - - int inCnt; - uint32_t deadlineStart; - -#ifdef HWLOOPBACK - // starting deadline for the first bytes to become readable - deadlineStart = ESP.getCycleCount(); - inCnt = 0; - while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 24 * ESP.getCpuFreqMHz()) { - int avail = hwSerial.available(); - inCnt += hwSerial.read(&inBuf[inCnt], min(avail, min(BLOCKSIZE - inCnt, hwSerial.availableForWrite()))); - if (inCnt >= BLOCKSIZE) { break; } - // wait for more outstanding bytes to trickle in - if (avail) deadlineStart = ESP.getCycleCount(); - } - hwSerial.write(inBuf, inCnt); -#endif - - // starting deadline for the first bytes to come in - deadlineStart = ESP.getCycleCount(); - inCnt = 0; - while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 8 * ESP.getCpuFreqMHz()) { - int avail; - if (0 != (swSerialConfig & 070)) - avail = serialIUT.available(); - else - avail = serialIUT.read(inBuf, BLOCKSIZE); - for (int i = 0; i < avail; ++i) - { - unsigned char r; - if (0 != (swSerialConfig & 070)) - r = serialIUT.read(); - else - r = inBuf[i]; - if (expected == -1) { expected = r; } - else { - expected = (expected + 1) % (1UL << (5 + swSerialConfig % 4)); - } - if (r != expected) { - ++rxErrors; - expected = -1; - } -#ifndef HWSOURCESINK - if (serialIUT.readParity() != (static_cast(swSerialConfig & 010) ? serialIUT.parityOdd(r) : serialIUT.parityEven(r))) - { - ++rxParityErrors; - } -#endif - ++rxCount; - ++inCnt; - } - - if (inCnt >= BLOCKSIZE) { break; } - // wait for more outstanding bytes to trickle in - if (avail) deadlineStart = ESP.getCycleCount(); - } - - const uint32_t interval = micros() - start; - if (txCount >= ReportInterval && interval) { - uint8_t wordBits = (5 + swSerialConfig % 4) + static_cast(swSerialConfig & 070) + 1 + ((swSerialConfig & 0300) ? 1 : 0); - logger.println(String("tx/rx: ") + txCount + "/" + rxCount); - const long txCps = txCount * (1000000.0 / interval); - const long rxCps = rxCount * (1000000.0 / interval); - logger.print(effTxTxt + wordBits * txCps + "bps, " - + effRxTxt + wordBits * rxCps + "bps, " - + rxErrors + " errors (" + 100.0 * rxErrors / (!rxErrors ? 1 : rxCount) + "%)"); - if (0 != (swSerialConfig & 070)) - { - logger.print(" ("); logger.print(rxParityErrors); logger.println(" parity errors)"); - } - else - { - logger.println(); - } - txCount = 0; - rxCount = 0; - rxErrors = 0; - rxParityErrors = 0; - expected = -1; - // resync - delay(1000UL * 12 * BLOCKSIZE / IUTBITRATE * 16); - serialIUT.flush(); - start = micros(); - } -} From 72bf6ad6c6efc11ba35737e47b7c6d8c8e58bdcd Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:41:48 +0100 Subject: [PATCH 079/104] Delete onewiretest.ino --- .../examples/onewiretest/onewiretest.ino | 48 ------------------- 1 file changed, 48 deletions(-) delete mode 100644 EspSoftwareSerial/examples/onewiretest/onewiretest.ino diff --git a/EspSoftwareSerial/examples/onewiretest/onewiretest.ino b/EspSoftwareSerial/examples/onewiretest/onewiretest.ino deleted file mode 100644 index 3e96401b..00000000 --- a/EspSoftwareSerial/examples/onewiretest/onewiretest.ino +++ /dev/null @@ -1,48 +0,0 @@ -#include -#include "SoftwareSerial.h" - -SoftwareSerial swSer1; -SoftwareSerial swSer2; - -void setup() { - delay(2000); - Serial.begin(115200); - Serial.println("\nOne Wire Half Duplex Serial Tester"); - swSer1.begin(115200, SWSERIAL_8N1, 12, 12, false, 256); - swSer1.enableIntTx(true); - swSer2.begin(115200, SWSERIAL_8N1, 14, 14, false, 256); - swSer2.enableIntTx(true); -} - -void loop() { - Serial.println("\n\nTesting on swSer1"); - Serial.print("Enter something to send using swSer1."); - checkSwSerial(&swSer1); - - Serial.println("\n\nTesting on swSer2"); - Serial.print("Enter something to send using swSer2."); - checkSwSerial(&swSer2); - -} - -void checkSwSerial(SoftwareSerial* ss) { - byte ch; - while (!Serial.available()); - ss->enableTx(true); - while (Serial.available()) { - ch = Serial.read(); - ss->write(ch); - } - ss->enableTx(false); - // wait 1 second for the reply from SOftwareSerial if any - delay(1000); - if (ss->available()) { - Serial.print("\nResult:"); - while (ss->available()) { - ch = (byte)ss->read(); - Serial.print(ch < 0x01 ? " 0" : " "); - Serial.print(ch, HEX); - } - Serial.println(); - } -} From ab688075bc225a5817397cf51a460ec28f4e770c Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:42:01 +0100 Subject: [PATCH 080/104] Delete repeater.ino --- .../examples/repeater/repeater.ino | 183 ------------------ 1 file changed, 183 deletions(-) delete mode 100644 EspSoftwareSerial/examples/repeater/repeater.ino diff --git a/EspSoftwareSerial/examples/repeater/repeater.ino b/EspSoftwareSerial/examples/repeater/repeater.ino deleted file mode 100644 index fa5566de..00000000 --- a/EspSoftwareSerial/examples/repeater/repeater.ino +++ /dev/null @@ -1,183 +0,0 @@ -#include - -// On ESP8266: -// SoftwareSerial loopback for remote source (loopback.ino), or hardware loopback. -// Connect source D5 (rx) to local D8 (tx), source D6 (tx) to local D7 (rx). -// Hint: The logger is run at 9600bps such that enableIntTx(true) can remain unchanged. Blocking -// interrupts severely impacts the ability of the SoftwareSerial devices to operate concurrently -// and/or in duplex mode. -// On ESP32: -// For software or hardware loopback, connect source rx to local D8 (tx), source tx to local D7 (rx). - -#if defined(ESP8266) && !defined(D5) -#define D5 (14) -#define D6 (12) -#define D7 (13) -#define D8 (15) -#define TX (1) -#endif - -#define HWLOOPBACK 1 -#define HALFDUPLEX 1 - -#ifdef ESP32 -constexpr int IUTBITRATE = 19200; -#else -constexpr int IUTBITRATE = 19200; -#endif - -#if defined(ESP8266) -constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; -constexpr SerialConfig hwSerialConfig = SERIAL_8E1; -#elif defined(ESP32) -constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; -constexpr uint32_t hwSerialConfig = SERIAL_8E1; -#else -constexpr unsigned swSerialConfig = 3; -#endif -constexpr bool invert = false; - -constexpr int BLOCKSIZE = 16; // use fractions of 256 - -unsigned long start; -String bitRateTxt("Effective data rate: "); -int rxCount; -int seqErrors; -int parityErrors; -int expected; -constexpr int ReportInterval = IUTBITRATE / 8; - -#if defined(ESP8266) -#if defined(HWLOOPBACK) -HardwareSerial& repeater(Serial); -SoftwareSerial logger; -#else -SoftwareSerial repeater; -HardwareSerial& logger(Serial); -#endif -#elif defined(ESP32) -#if defined(HWLOOPBACK) -HardwareSerial& repeater(Serial2); -#else -SoftwareSerial repeater; -#endif -HardwareSerial& logger(Serial); -#else -SoftwareSerial repeater(14, 12); -HardwareSerial& logger(Serial); -#endif - -void setup() { -#if defined(ESP8266) -#if defined(HWLOOPBACK) - repeater.begin(IUTBITRATE, hwSerialConfig, SERIAL_FULL, 1, invert); - repeater.swap(); - repeater.setRxBufferSize(2 * BLOCKSIZE); - logger.begin(9600, SWSERIAL_8N1, -1, TX); -#else - repeater.begin(IUTBITRATE, swSerialConfig, D7, D8, invert, 4 * BLOCKSIZE); -#ifdef HALFDUPLEX - repeater.enableIntTx(false); -#endif - logger.begin(9600); -#endif -#elif defined(ESP32) -#if defined(HWLOOPBACK) - repeater.begin(IUTBITRATE, hwSerialConfig, D7, D8, invert); - repeater.setRxBufferSize(2 * BLOCKSIZE); -#else - repeater.begin(IUTBITRATE, swSerialConfig, D7, D8, invert, 4 * BLOCKSIZE); -#ifdef HALFDUPLEX - repeater.enableIntTx(false); -#endif -#endif - logger.begin(9600); -#else - repeater.begin(IUTBITRATE); - logger.begin(9600); -#endif - - logger.println("Repeater example for EspSoftwareSerial"); - start = micros(); - rxCount = 0; - seqErrors = 0; - parityErrors = 0; - expected = -1; -} - -void loop() { -#ifdef HWLOOPBACK -#if defined(ESP8266) - if (repeater.hasOverrun()) { logger.println("repeater.overrun"); } -#endif -#else - if (repeater.overflow()) { logger.println("repeater.overflow"); } -#endif - -#ifdef HALFDUPLEX - char block[BLOCKSIZE]; -#endif - // starting deadline for the first bytes to come in - uint32_t deadlineStart = ESP.getCycleCount(); - int inCnt = 0; - while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 24 * ESP.getCpuFreqMHz()) { - int avail = repeater.available(); - for (int i = 0; i < avail; ++i) - { - int r = repeater.read(); - if (r == -1) { logger.println("read() == -1"); } - if (expected == -1) { expected = r; } - else { - expected = (expected + 1) % (1UL << (5 + swSerialConfig % 4)); - } - if (r != expected) { - ++seqErrors; - expected = -1; - } -#ifndef HWLOOPBACK - if (repeater.readParity() != (static_cast(swSerialConfig & 010) ? repeater.parityOdd(r) : repeater.parityEven(r))) - { - ++parityErrors; - } -#endif - ++rxCount; -#ifdef HALFDUPLEX - block[inCnt] = r; -#else - repeater.write(r); -#endif - if (++inCnt >= BLOCKSIZE) { break; } - } - if (inCnt >= BLOCKSIZE) { break; } - // wait for more outstanding bytes to trickle in - if (avail) deadlineStart = ESP.getCycleCount(); - } - -#ifdef HALFDUPLEX - repeater.write(block, inCnt); -#endif - - if (rxCount >= ReportInterval) { - auto end = micros(); - unsigned long interval = end - start; - long cps = rxCount * (1000000.0 / interval); - long seqErrorsps = seqErrors * (1000000.0 / interval); - logger.print(bitRateTxt + 10 * cps + "bps, " - + seqErrorsps + "cps seq. errors (" + 100.0 * seqErrors / rxCount + "%)"); -#ifndef HWLOOPBACK - if (0 != (swSerialConfig & 070)) - { - logger.print(" ("); logger.print(parityErrors); logger.print(" parity errors)"); - } - else -#endif - { - logger.println(); - } - start = end; - rxCount = 0; - seqErrors = 0; - parityErrors = 0; - expected = -1; - } -} From 1fca8adf5b65cecac58add34c4e564ab5bb37674 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:42:14 +0100 Subject: [PATCH 081/104] Delete servoTester.ino --- .../examples/servoTester/servoTester.ino | 115 ------------------ 1 file changed, 115 deletions(-) delete mode 100644 EspSoftwareSerial/examples/servoTester/servoTester.ino diff --git a/EspSoftwareSerial/examples/servoTester/servoTester.ino b/EspSoftwareSerial/examples/servoTester/servoTester.ino deleted file mode 100644 index cbc784d8..00000000 --- a/EspSoftwareSerial/examples/servoTester/servoTester.ino +++ /dev/null @@ -1,115 +0,0 @@ -#include -#include - -SoftwareSerial swSer; - -byte buf[10] = { 0xFA, 0xAF,0x00,0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0xED }; -byte cmd[10] = { 0xFA, 0xAF,0x00,0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0xED }; -byte ver[10] = { 0xFC, 0xCF,0x00,0xAA,0x41, 0x16, 0x51, 0x01, 0x00, 0xED }; - - -void setup() { - delay(2000); - Serial.begin(115200); - Serial.println("\nAlpha 1S Servo Tester"); - swSer.begin(115200, SWSERIAL_8N1, 12, 12, false, 256); -} - -void loop() { - for (int i = 1; i <= 32; i++) { - GetVersion(i); - delay(100); - } - SetLED(1, 0); - GoPos(1, 0, 50); - delay(1000); - GoPos(1, 90, 50); - delay(1000); - GoPos(1, 100, 50); - delay(1000); - SetLED(1, 1); - delay(2000); -} - - - - -void GetVersion(byte id) { - memcpy(buf, cmd, 10); - buf[0] = 0xFC; - buf[1] = 0xCF; - buf[2] = id; - buf[3] = 0x01; - SendCommand(); -} - - -void GoPos(byte id, byte Pos, byte Time) { - memcpy(buf, cmd, 10); - buf[2] = id; - buf[3] = 0x01; - buf[4] = Pos; - buf[5] = Time; - buf[6] = 0x00; - buf[7] = Time; - SendCommand(); -} - -void GetPos(byte id) { - memcpy(buf, cmd, 10); - buf[2] = id; - buf[3] = 0x02; - SendCommand(); -} - - -void SetLED(byte id, byte mode) { - memcpy(buf, cmd, 10); - buf[2] = id; - buf[3] = 0x04; - buf[4] = mode; - SendCommand(); -} - -void SendCommand() { - SendCommand(true); -} - -void SendCommand(bool checkResult) { - byte sum = 0; - for (int i = 2; i < 8; i++) { - sum += buf[i]; - } - buf[8] = sum; - ShowCommand(); - swSer.flush(); - swSer.enableTx(true); - swSer.write(buf, 10); - swSer.enableTx(false); - if (checkResult) checkReturn(); -} - -void ShowCommand() { - Serial.print(millis()); - Serial.print(" OUT>>"); - for (int i = 0; i < 10; i++) { - Serial.print((buf[i] < 0x10 ? " 0" : " ")); - Serial.print(buf[i], HEX); - } - Serial.println(); -} - -void checkReturn() { - unsigned long startMs = millis(); - while (((millis() - startMs) < 500) && (!swSer.available())); - if (swSer.available()) { - Serial.print(millis()); - Serial.print(" IN>>>"); - while (swSer.available()) { - byte ch = (byte)swSer.read(); - Serial.print((ch < 0x10 ? " 0" : " ")); - Serial.print(ch, HEX); - } - Serial.println(); - } -} From 66db07f33da7b33a2e7f20e23f5a01c9f12ff9db Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:42:26 +0100 Subject: [PATCH 082/104] Delete swsertest.ino --- .../examples/swsertest/swsertest.ino | 47 ------------------- 1 file changed, 47 deletions(-) delete mode 100644 EspSoftwareSerial/examples/swsertest/swsertest.ino diff --git a/EspSoftwareSerial/examples/swsertest/swsertest.ino b/EspSoftwareSerial/examples/swsertest/swsertest.ino deleted file mode 100644 index a047c1be..00000000 --- a/EspSoftwareSerial/examples/swsertest/swsertest.ino +++ /dev/null @@ -1,47 +0,0 @@ -// On ESP8266: -// At 80MHz runs up 57600ps, and at 160MHz CPU frequency up to 115200bps with only negligible errors. -// Connect pin 12 to 14. - -#include - -#if defined(ESP8266) && !defined(D5) -#define D5 (14) -#define D6 (12) -#define D7 (13) -#define D8 (15) -#endif - -#ifdef ESP32 -#define BAUD_RATE 57600 -#else -#define BAUD_RATE 57600 -#endif - -// Reminder: the buffer size optimizations here, in particular the isrBufSize that only accommodates -// a single 8N1 word, are on the basis that any char written to the loopback SoftwareSerial adapter gets read -// before another write is performed. Block writes with a size greater than 1 would usually fail. -SoftwareSerial swSer; - -void setup() { - Serial.begin(115200); - swSer.begin(BAUD_RATE, SWSERIAL_8N1, D5, D6, false, 95, 11); - - Serial.println("\nSoftware serial test started"); - - for (char ch = ' '; ch <= 'z'; ch++) { - swSer.write(ch); - } - swSer.println(""); -} - -void loop() { - while (swSer.available() > 0) { - Serial.write(swSer.read()); - yield(); - } - while (Serial.available() > 0) { - swSer.write(Serial.read()); - yield(); - } - -} From e6840766e21557ac7b4cbd3a62cdba2891df568a Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:42:42 +0100 Subject: [PATCH 083/104] Delete Delegate.h --- .../src/circular_queue/Delegate.h | 1786 ----------------- 1 file changed, 1786 deletions(-) delete mode 100644 EspSoftwareSerial/src/circular_queue/Delegate.h diff --git a/EspSoftwareSerial/src/circular_queue/Delegate.h b/EspSoftwareSerial/src/circular_queue/Delegate.h deleted file mode 100644 index bd19c66e..00000000 --- a/EspSoftwareSerial/src/circular_queue/Delegate.h +++ /dev/null @@ -1,1786 +0,0 @@ -/* -Delegate.h - An efficient interchangeable C function ptr and C++ std::function delegate -Copyright (c) 2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef __Delegate_h -#define __Delegate_h - -#if defined(ESP8266) -#include -#elif defined(ESP32) -#include -#else -#define ICACHE_RAM_ATTR -#define IRAM_ATTR -#endif - -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) -#include -#include -#else -#include "circular_queue/ghostl.h" -#endif - -namespace detail -{ - template - static R IRAM_ATTR vPtrToFunPtrExec(void* fn, P... args) - { - using target_type = R(P...); - return reinterpret_cast(fn)(std::forward(args...)); - } - -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - template - class DelegatePImpl { - public: - using target_type = R(P...); - protected: - using FunPtr = target_type*; - using FunAPtr = R(*)(A, P...); - using FunVPPtr = R(*)(void*, P...); - using FunctionType = std::function; - public: - DelegatePImpl() - { - kind = FP; - fn = nullptr; - } - - DelegatePImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - ~DelegatePImpl() - { - if (FUNC == kind) - functional.~FunctionType(); - else if (FPA == kind) - obj.~A(); - } - - DelegatePImpl(const DelegatePImpl& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(del.functional); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - new (&obj) A(del.obj); - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(DelegatePImpl&& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(std::move(del.functional)); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - new (&obj) A(std::move(del.obj)); - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(FunAPtr fnA, const A& obj) - { - kind = FPA; - DelegatePImpl::fnA = fnA; - new (&this->obj) A(obj); - } - - DelegatePImpl(FunAPtr fnA, A&& obj) - { - kind = FPA; - DelegatePImpl::fnA = fnA; - new (&this->obj) A(std::move(obj)); - } - - DelegatePImpl(FunPtr fn) - { - kind = FP; - DelegatePImpl::fn = fn; - } - - template DelegatePImpl(F functional) - { - kind = FUNC; - new (&this->functional) FunctionType(std::forward(functional)); - } - - DelegatePImpl& operator=(const DelegatePImpl& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - if (FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - else if (FPA == del.kind) - { - new (&obj) A; - } - kind = del.kind; - } - if (FUNC == del.kind) - { - functional = del.functional; - } - else if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(DelegatePImpl&& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - if (FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - else if (FPA == del.kind) - { - new (&obj) A; - } - kind = del.kind; - } - if (FUNC == del.kind) - { - functional = std::move(del.functional); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(FunPtr fn) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - kind = FP; - this->fn = fn; - return *this; - } - - DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else if (FPA == kind) - { - return fnA; - } - else - { - return functional ? true : false; - } - } - - static R IRAM_ATTR vPtrToFunAPtrExec(void* self, P... args) - { - return static_cast(self)->fnA( - static_cast(self)->obj, - std::forward(args...)); - }; - - operator FunVPPtr() const - { - if (FP == kind) - { - return vPtrToFunPtrExec; - } - else if (FPA == kind) - { - return vPtrToFunAPtrExec; - } - else - { - return [](void* self, P... args) -> R - { - return static_cast(self)->functional(std::forward(args...)); - }; - } - } - - void* arg() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else - { - return const_cast(this); - } - } - - operator FunctionType() const - { - if (FP == kind) - { - return fn; - } - else if (FPA == kind) - { - return [this](P... args) { return fnA(obj, std::forward(args...)); }; - } - else - { - return functional; - } - } - - R IRAM_ATTR operator()(P... args) const - { - if (FP == kind) - { - return fn(std::forward(args...)); - } - else if (FPA == kind) - { - return fnA(obj, std::forward(args...)); - } - else - { - return functional(std::forward(args...)); - } - } - - protected: - enum { FUNC, FP, FPA } kind; - union { - FunctionType functional; - FunPtr fn; - struct { - FunAPtr fnA; - A obj; - }; - }; - }; -#else - template - class DelegatePImpl { - public: - using target_type = R(P...); - protected: - using FunPtr = target_type*; - using FunAPtr = R(*)(A, P...); - using FunVPPtr = R(*)(void*, P...); - public: - DelegatePImpl() - { - kind = FP; - fn = nullptr; - } - - DelegatePImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - DelegatePImpl(const DelegatePImpl& del) - { - kind = del.kind; - if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(DelegatePImpl&& del) - { - kind = del.kind; - if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(FunAPtr fnA, const A& obj) - { - kind = FPA; - DelegatePImpl::fnA = fnA; - this->obj = obj; - } - - DelegatePImpl(FunAPtr fnA, A&& obj) - { - kind = FPA; - DelegatePImpl::fnA = fnA; - this->obj = std::move(obj); - } - - DelegatePImpl(FunPtr fn) - { - kind = FP; - DelegatePImpl::fn = fn; - } - - template DelegatePImpl(F fn) - { - kind = FP; - DelegatePImpl::fn = std::forward(fn); - } - - DelegatePImpl& operator=(const DelegatePImpl& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FPA == kind) - { - obj = {}; - } - kind = del.kind; - } - if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(DelegatePImpl&& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FPA == kind) - { - obj = {}; - } - kind = del.kind; - } - if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(FunPtr fn) - { - if (FPA == kind) - { - obj = {}; - } - kind = FP; - this->fn = fn; - return *this; - } - - DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FPA == kind) - { - obj = {}; - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else - { - return fnA; - } - } - - static R IRAM_ATTR vPtrToFunAPtrExec(void* self, P... args) - { - return static_cast(self)->fnA( - static_cast(self)->obj, - std::forward(args...)); - }; - - operator FunVPPtr() const - { - if (FP == kind) - { - return vPtrToFunPtrExec; - } - else - { - return vPtrToFunAPtrExec; - } - } - - void* arg() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else - { - return const_cast(this); - } - } - - R IRAM_ATTR operator()(P... args) const - { - if (FP == kind) - { - return fn(std::forward(args...)); - } - else - { - return fnA(obj, std::forward(args...)); - } - } - - protected: - enum { FP, FPA } kind; - union { - FunPtr fn; - FunAPtr fnA; - }; - A obj; - }; -#endif - -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - template - class DelegatePImpl { - public: - using target_type = R(P...); - protected: - using FunPtr = target_type*; - using FunctionType = std::function; - using FunVPPtr = R(*)(void*, P...); - public: - DelegatePImpl() - { - kind = FP; - fn = nullptr; - } - - DelegatePImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - ~DelegatePImpl() - { - if (FUNC == kind) - functional.~FunctionType(); - } - - DelegatePImpl(const DelegatePImpl& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(del.functional); - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(DelegatePImpl&& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(std::move(del.functional)); - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(FunPtr fn) - { - kind = FP; - DelegatePImpl::fn = fn; - } - - template DelegatePImpl(F functional) - { - kind = FUNC; - new (&this->functional) FunctionType(std::forward(functional)); - } - - DelegatePImpl& operator=(const DelegatePImpl& del) - { - if (this == &del) return *this; - if (FUNC == kind && FUNC != del.kind) - { - functional.~FunctionType(); - } - else if (FUNC != kind && FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - kind = del.kind; - if (FUNC == del.kind) - { - functional = del.functional; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(DelegatePImpl&& del) - { - if (this == &del) return *this; - if (FUNC == kind && FUNC != del.kind) - { - functional.~FunctionType(); - } - else if (FUNC != kind && FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - kind = del.kind; - if (FUNC == del.kind) - { - functional = std::move(del.functional); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(FunPtr fn) - { - if (FUNC == kind) - { - functional.~FunctionType(); - kind = FP; - } - DelegatePImpl::fn = fn; - return *this; - } - - DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else - { - return functional ? true : false; - } - } - - operator FunVPPtr() const - { - if (FP == kind) - { - return vPtrToFunPtrExec; - } - else - { - return [](void* self, P... args) -> R - { - return static_cast(self)->functional(std::forward(args...)); - }; - } - } - - void* arg() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else - { - return const_cast(this); - } - } - - operator FunctionType() const - { - if (FP == kind) - { - return fn; - } - else - { - return functional; - } - } - - R IRAM_ATTR operator()(P... args) const - { - if (FP == kind) - { - return fn(std::forward(args...)); - } - else - { - return functional(std::forward(args...)); - } - } - - protected: - enum { FUNC, FP } kind; - union { - FunctionType functional; - FunPtr fn; - }; - }; -#else - template - class DelegatePImpl { - public: - using target_type = R(P...); - protected: - using FunPtr = target_type*; - using FunVPPtr = R(*)(void*, P...); - public: - DelegatePImpl() - { - fn = nullptr; - } - - DelegatePImpl(std::nullptr_t) - { - fn = nullptr; - } - - DelegatePImpl(const DelegatePImpl& del) - { - fn = del.fn; - } - - DelegatePImpl(DelegatePImpl&& del) - { - fn = std::move(del.fn); - } - - DelegatePImpl(FunPtr fn) - { - DelegatePImpl::fn = fn; - } - - template DelegatePImpl(F fn) - { - DelegatePImpl::fn = std::forward(fn); - } - - DelegatePImpl& operator=(const DelegatePImpl& del) - { - if (this == &del) return *this; - fn = del.fn; - return *this; - } - - DelegatePImpl& operator=(DelegatePImpl&& del) - { - if (this == &del) return *this; - fn = std::move(del.fn); - return *this; - } - - DelegatePImpl& operator=(FunPtr fn) - { - DelegatePImpl::fn = fn; - return *this; - } - - DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) - { - fn = nullptr; - return *this; - } - - operator bool() const - { - return fn; - } - - operator FunVPPtr() const - { - return vPtrToFunPtrExec; - } - - void* arg() const - { - return reinterpret_cast(fn); - } - - R IRAM_ATTR operator()(P... args) const - { - return fn(std::forward(args...)); - } - - protected: - FunPtr fn; - }; -#endif - -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - template - class DelegateImpl { - public: - using target_type = R(); - protected: - using FunPtr = target_type*; - using FunAPtr = R(*)(A); - using FunctionType = std::function; - using FunVPPtr = R(*)(void*); - public: - DelegateImpl() - { - kind = FP; - fn = nullptr; - } - - DelegateImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - ~DelegateImpl() - { - if (FUNC == kind) - functional.~FunctionType(); - else if (FPA == kind) - obj.~A(); - } - - DelegateImpl(const DelegateImpl& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(del.functional); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - new (&obj) A(del.obj); - } - else - { - fn = del.fn; - } - } - - DelegateImpl(DelegateImpl&& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(std::move(del.functional)); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - new (&obj) A(std::move(del.obj)); - } - else - { - fn = del.fn; - } - } - - DelegateImpl(FunAPtr fnA, const A& obj) - { - kind = FPA; - DelegateImpl::fnA = fnA; - new (&this->obj) A(obj); - } - - DelegateImpl(FunAPtr fnA, A&& obj) - { - kind = FPA; - DelegateImpl::fnA = fnA; - new (&this->obj) A(std::move(obj)); - } - - DelegateImpl(FunPtr fn) - { - kind = FP; - DelegateImpl::fn = fn; - } - - template DelegateImpl(F functional) - { - kind = FUNC; - new (&this->functional) FunctionType(std::forward(functional)); - } - - DelegateImpl& operator=(const DelegateImpl& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - if (FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - else if (FPA == del.kind) - { - new (&obj) A; - } - kind = del.kind; - } - if (FUNC == del.kind) - { - functional = del.functional; - } - else if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(DelegateImpl&& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - if (FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - else if (FPA == del.kind) - { - new (&obj) A; - } - kind = del.kind; - } - if (FUNC == del.kind) - { - functional = std::move(del.functional); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(FunPtr fn) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - kind = FP; - this->fn = fn; - return *this; - } - - DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else if (FPA == kind) - { - return fnA; - } - else - { - return functional ? true : false; - } - } - - static R IRAM_ATTR vPtrToFunAPtrExec(void* self) - { - return static_cast(self)->fnA( - static_cast(self)->obj); - }; - - operator FunVPPtr() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else if (FPA == kind) - { - return vPtrToFunAPtrExec; - } - else - { - return [](void* self) -> R - { - return static_cast(self)->functional(); - }; - } - } - - void* arg() const - { - if (FP == kind) - { - return nullptr; - } - else - { - return const_cast(this); - } - } - - operator FunctionType() const - { - if (FP == kind) - { - return fn; - } - else if (FPA == kind) - { - return [this]() { return fnA(obj); }; - } - else - { - return functional; - } - } - - R IRAM_ATTR operator()() const - { - if (FP == kind) - { - return fn(); - } - else if (FPA == kind) - { - return fnA(obj); - } - else - { - return functional(); - } - } - - protected: - enum { FUNC, FP, FPA } kind; - union { - FunctionType functional; - FunPtr fn; - struct { - FunAPtr fnA; - A obj; - }; - }; - }; -#else - template - class DelegateImpl { - public: - using target_type = R(); - protected: - using FunPtr = target_type*; - using FunAPtr = R(*)(A); - using FunVPPtr = R(*)(void*); - public: - DelegateImpl() - { - kind = FP; - fn = nullptr; - } - - DelegateImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - DelegateImpl(const DelegateImpl& del) - { - kind = del.kind; - if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - } - - DelegateImpl(DelegateImpl&& del) - { - kind = del.kind; - if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - } - - DelegateImpl(FunAPtr fnA, const A& obj) - { - kind = FPA; - DelegateImpl::fnA = fnA; - this->obj = obj; - } - - DelegateImpl(FunAPtr fnA, A&& obj) - { - kind = FPA; - DelegateImpl::fnA = fnA; - this->obj = std::move(obj); - } - - DelegateImpl(FunPtr fn) - { - kind = FP; - DelegateImpl::fn = fn; - } - - template DelegateImpl(F fn) - { - kind = FP; - DelegateImpl::fn = std::forward(fn); - } - - DelegateImpl& operator=(const DelegateImpl& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FPA == kind) - { - obj = {}; - } - kind = del.kind; - } - if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(DelegateImpl&& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FPA == kind) - { - obj = {}; - } - kind = del.kind; - } - if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(FunPtr fn) - { - if (FPA == kind) - { - obj = {}; - } - kind = FP; - this->fn = fn; - return *this; - } - - DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FPA == kind) - { - obj = {}; - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else - { - return fnA; - } - } - - static R IRAM_ATTR vPtrToFunAPtrExec(void* self) - { - return static_cast(self)->fnA( - static_cast(self)->obj); - }; - - operator FunVPPtr() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else - { - return vPtrToFunAPtrExec; - } - } - - void* arg() const - { - if (FP == kind) - { - return nullptr; - } - else - { - return const_cast(this); - } - } - - R IRAM_ATTR operator()() const - { - if (FP == kind) - { - return fn(); - } - else - { - return fnA(obj); - } - } - - protected: - enum { FP, FPA } kind; - union { - FunPtr fn; - FunAPtr fnA; - }; - A obj; - }; -#endif - -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - template - class DelegateImpl { - public: - using target_type = R(); - protected: - using FunPtr = target_type*; - using FunctionType = std::function; - using FunVPPtr = R(*)(void*); - public: - DelegateImpl() - { - kind = FP; - fn = nullptr; - } - - DelegateImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - ~DelegateImpl() - { - if (FUNC == kind) - functional.~FunctionType(); - } - - DelegateImpl(const DelegateImpl& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(del.functional); - } - else - { - fn = del.fn; - } - } - - DelegateImpl(DelegateImpl&& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(std::move(del.functional)); - } - else - { - fn = del.fn; - } - } - - DelegateImpl(FunPtr fn) - { - kind = FP; - DelegateImpl::fn = fn; - } - - template DelegateImpl(F functional) - { - kind = FUNC; - new (&this->functional) FunctionType(std::forward(functional)); - } - - DelegateImpl& operator=(const DelegateImpl& del) - { - if (this == &del) return *this; - if (FUNC == kind && FUNC != del.kind) - { - functional.~FunctionType(); - } - else if (FUNC != kind && FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - kind = del.kind; - if (FUNC == del.kind) - { - functional = del.functional; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(DelegateImpl&& del) - { - if (this == &del) return *this; - if (FUNC == kind && FUNC != del.kind) - { - functional.~FunctionType(); - } - else if (FUNC != kind && FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - kind = del.kind; - if (FUNC == del.kind) - { - functional = std::move(del.functional); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(FunPtr fn) - { - if (FUNC == kind) - { - functional.~FunctionType(); - kind = FP; - } - DelegateImpl::fn = fn; - return *this; - } - - DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else - { - return functional ? true : false; - } - } - - operator FunVPPtr() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else - { - return [](void* self) -> R - { - return static_cast(self)->functional(); - }; - } - } - - void* arg() const - { - if (FP == kind) - { - return nullptr; - } - else - { - return const_cast(this); - } - } - - operator FunctionType() const - { - if (FP == kind) - { - return fn; - } - else - { - return functional; - } - } - - R IRAM_ATTR operator()() const - { - if (FP == kind) - { - return fn(); - } - else - { - return functional(); - } - } - - protected: - enum { FUNC, FP } kind; - union { - FunctionType functional; - FunPtr fn; - }; - }; -#else - template - class DelegateImpl { - public: - using target_type = R(); - protected: - using FunPtr = target_type*; - using FunVPPtr = R(*)(void*); - public: - DelegateImpl() - { - fn = nullptr; - } - - DelegateImpl(std::nullptr_t) - { - fn = nullptr; - } - - DelegateImpl(const DelegateImpl& del) - { - fn = del.fn; - } - - DelegateImpl(DelegateImpl&& del) - { - fn = std::move(del.fn); - } - - DelegateImpl(FunPtr fn) - { - DelegateImpl::fn = fn; - } - - template DelegateImpl(F fn) - { - DelegateImpl::fn = std::forward(fn); - } - - DelegateImpl& operator=(const DelegateImpl& del) - { - if (this == &del) return *this; - fn = del.fn; - return *this; - } - - DelegateImpl& operator=(DelegateImpl&& del) - { - if (this == &del) return *this; - fn = std::move(del.fn); - return *this; - } - - DelegateImpl& operator=(FunPtr fn) - { - DelegateImpl::fn = fn; - return *this; - } - - DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) - { - fn = nullptr; - return *this; - } - - operator bool() const - { - return fn; - } - - operator FunVPPtr() const - { - return reinterpret_cast(fn); - } - - void* arg() const - { - return nullptr; - } - - R IRAM_ATTR operator()() const - { - return fn(); - } - - protected: - FunPtr fn; - }; -#endif - - template - class Delegate : private detail::DelegatePImpl - { - private: - using typename detail::DelegatePImpl::FunVPPtr; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using typename detail::DelegatePImpl::FunctionType; -#endif - public: - using detail::DelegatePImpl::target_type; - using detail::DelegatePImpl::DelegatePImpl; - using detail::DelegatePImpl::operator=; - using detail::DelegatePImpl::operator bool; - using detail::DelegatePImpl::operator FunVPPtr; - using detail::DelegatePImpl::arg; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using detail::DelegatePImpl::operator FunctionType; -#endif - using detail::DelegatePImpl::operator(); - }; - - template - class Delegate : private detail::DelegatePImpl - { - private: - using typename detail::DelegatePImpl::FunVPPtr; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using typename detail::DelegatePImpl::FunctionType; -#endif - public: - using detail::DelegatePImpl::target_type; - using detail::DelegatePImpl::DelegatePImpl; - using detail::DelegatePImpl::operator=; - using detail::DelegatePImpl::operator bool; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using detail::DelegatePImpl::operator FunctionType; -#endif - using detail::DelegatePImpl::operator(); - operator FunVPPtr() const - { - if (detail::DelegatePImpl::FPA == detail::DelegatePImpl::kind) - { - return reinterpret_cast(detail::DelegatePImpl::fnA); - } - else - { - return detail::DelegatePImpl::operator FunVPPtr(); - } - } - void* arg() const - { - if (detail::DelegatePImpl::FPA == detail::DelegatePImpl::kind) - { - return detail::DelegatePImpl::obj; - } - else - { - return detail::DelegatePImpl::arg(); - } - } - }; - - template - class Delegate : private detail::DelegateImpl - { - private: - using typename detail::DelegateImpl::FunVPPtr; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using typename detail::DelegateImpl::FunctionType; -#endif - public: - using detail::DelegateImpl::target_type; - using detail::DelegateImpl::DelegateImpl; - using detail::DelegateImpl::operator=; - using detail::DelegateImpl::operator bool; - using detail::DelegateImpl::operator FunVPPtr; - using detail::DelegateImpl::arg; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using detail::DelegateImpl::operator FunctionType; -#endif - using detail::DelegateImpl::operator(); - }; - - template - class Delegate : private detail::DelegateImpl - { - private: - using typename detail::DelegateImpl::FunVPPtr; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using typename detail::DelegateImpl::FunctionType; -#endif - public: - using detail::DelegateImpl::target_type; - using detail::DelegateImpl::DelegateImpl; - using detail::DelegateImpl::operator=; - using detail::DelegateImpl::operator bool; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using detail::DelegateImpl::operator FunctionType; -#endif - using detail::DelegateImpl::operator(); - operator FunVPPtr() const - { - if (detail::DelegateImpl::FPA == detail::DelegateImpl::kind) - { - return reinterpret_cast(detail::DelegateImpl::fnA); - } - else - { - return detail::DelegateImpl::operator FunVPPtr(); - } - } - void* arg() const - { - if (detail::DelegateImpl::FPA == detail::DelegateImpl::kind) - { - return detail::DelegateImpl::obj; - } - else - { - return detail::DelegateImpl::arg(); - } - } - }; - -} - -template class Delegate; -template class Delegate : public detail::Delegate -{ -public: - using detail::Delegate::Delegate; -}; -template class Delegate : public detail::Delegate -{ -public: - using detail::Delegate::Delegate; -}; - -#endif // __Delegate_h From 3b3a8b58fee66d8ef9c54566c8cf59ddf284f410 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:42:50 +0100 Subject: [PATCH 084/104] Delete MultiDelegate.h --- .../src/circular_queue/MultiDelegate.h | 503 ------------------ 1 file changed, 503 deletions(-) delete mode 100644 EspSoftwareSerial/src/circular_queue/MultiDelegate.h diff --git a/EspSoftwareSerial/src/circular_queue/MultiDelegate.h b/EspSoftwareSerial/src/circular_queue/MultiDelegate.h deleted file mode 100644 index 1fd4188d..00000000 --- a/EspSoftwareSerial/src/circular_queue/MultiDelegate.h +++ /dev/null @@ -1,503 +0,0 @@ -/* -MultiDelegate.h - A queue or event multiplexer based on the efficient Delegate -class -Copyright (c) 2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef __MULTIDELEGATE_H -#define __MULTIDELEGATE_H - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -#include -#else -#include "circular_queue/ghostl.h" -#endif - -#if defined(ESP8266) -#include -using esp8266::InterruptLock; -#elif defined(ARDUINO) -class InterruptLock { -public: - InterruptLock() { - noInterrupts(); - } - ~InterruptLock() { - interrupts(); - } -}; -#else -#include -#endif - -namespace detail -{ - namespace - { - template< typename Delegate, typename R, bool ISQUEUE = false, typename... P> - struct CallP - { - static R execute(Delegate& del, P... args) - { - return del(std::forward(args...)) ? !ISQUEUE : ISQUEUE; - } - }; - - template< typename Delegate, bool ISQUEUE, typename... P> - struct CallP - { - static bool execute(Delegate& del, P... args) - { - del(std::forward(args...)); - return !ISQUEUE; - } - }; - - template< typename Delegate, typename R, bool ISQUEUE = false> - struct Call - { - static R execute(Delegate& del) - { - return del() ? !ISQUEUE : ISQUEUE; - } - }; - - template< typename Delegate, bool ISQUEUE> - struct Call - { - static bool execute(Delegate& del) - { - del(); - return !ISQUEUE; - } - }; - }; - - template< typename Delegate, typename R = void, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32, typename... P> - class MultiDelegatePImpl - { - public: - MultiDelegatePImpl() = default; - ~MultiDelegatePImpl() - { - *this = nullptr; - } - - MultiDelegatePImpl(const MultiDelegatePImpl&) = delete; - MultiDelegatePImpl& operator=(const MultiDelegatePImpl&) = delete; - - MultiDelegatePImpl(MultiDelegatePImpl&& md) - { - first = md.first; - last = md.last; - unused = md.unused; - nodeCount = md.nodeCount; - md.first = nullptr; - md.last = nullptr; - md.unused = nullptr; - md.nodeCount = 0; - } - - MultiDelegatePImpl(const Delegate& del) - { - add(del); - } - - MultiDelegatePImpl(Delegate&& del) - { - add(std::move(del)); - } - - MultiDelegatePImpl& operator=(MultiDelegatePImpl&& md) - { - first = md.first; - last = md.last; - unused = md.unused; - nodeCount = md.nodeCount; - md.first = nullptr; - md.last = nullptr; - md.unused = nullptr; - md.nodeCount = 0; - return *this; - } - - MultiDelegatePImpl& operator=(std::nullptr_t) - { - if (last) - last->mNext = unused; - if (first) - unused = first; - while (unused) - { - auto to_delete = unused; - unused = unused->mNext; - delete(to_delete); - } - return *this; - } - - MultiDelegatePImpl& operator+=(const Delegate& del) - { - add(del); - return *this; - } - - MultiDelegatePImpl& operator+=(Delegate&& del) - { - add(std::move(del)); - return *this; - } - - protected: - struct Node_t - { - ~Node_t() - { - mDelegate = nullptr; // special overload in Delegate - } - Node_t* mNext = nullptr; - Delegate mDelegate; - }; - - Node_t* first = nullptr; - Node_t* last = nullptr; - Node_t* unused = nullptr; - uint32_t nodeCount = 0; - - // Returns a pointer to an unused Node_t, - // or if none are available allocates a new one, - // or nullptr if limit is reached - Node_t* IRAM_ATTR get_node_unsafe() - { - Node_t* result = nullptr; - // try to get an item from unused items list - if (unused) - { - result = unused; - unused = unused->mNext; - } - // if no unused items, and count not too high, allocate a new one - else if (nodeCount < QUEUE_CAPACITY) - { -#if defined(ESP8266) || defined(ESP32) - result = new (std::nothrow) Node_t; -#else - result = new Node_t; -#endif - if (result) - ++nodeCount; - } - return result; - } - - void recycle_node_unsafe(Node_t* node) - { - node->mDelegate = nullptr; // special overload in Delegate - node->mNext = unused; - unused = node; - } - -#ifndef ARDUINO - std::mutex mutex_unused; -#endif - public: - const Delegate* IRAM_ATTR add(const Delegate& del) - { - return add(Delegate(del)); - } - - const Delegate* IRAM_ATTR add(Delegate&& del) - { - if (!del) - return nullptr; - -#ifdef ARDUINO - InterruptLock lockAllInterruptsInThisScope; -#else - std::lock_guard lock(mutex_unused); -#endif - - Node_t* item = ISQUEUE ? get_node_unsafe() : -#if defined(ESP8266) || defined(ESP32) - new (std::nothrow) Node_t; -#else - new Node_t; -#endif - if (!item) - return nullptr; - - item->mDelegate = std::move(del); - item->mNext = nullptr; - - if (last) - last->mNext = item; - else - first = item; - last = item; - - return &item->mDelegate; - } - - bool remove(const Delegate* del) - { - auto current = first; - if (!current) - return false; - - Node_t* prev = nullptr; - do - { - if (del == ¤t->mDelegate) - { - // remove callback from stack -#ifdef ARDUINO - InterruptLock lockAllInterruptsInThisScope; -#else - std::lock_guard lock(mutex_unused); -#endif - - auto to_recycle = current; - - // removing rLast - if (last == current) - last = prev; - - current = current->mNext; - if (prev) - { - prev->mNext = current; - } - else - { - first = current; - } - - if (ISQUEUE) - recycle_node_unsafe(to_recycle); - else - delete to_recycle; - return true; - } - else - { - prev = current; - current = current->mNext; - } - } while (current); - return false; - } - - void operator()(P... args) - { - auto current = first; - if (!current) - return; - - static std::atomic fence(false); - // prevent recursive calls -#if defined(ARDUINO) && !defined(ESP32) - if (fence.load()) return; - fence.store(true); -#else - if (fence.exchange(true)) return; -#endif - - Node_t* prev = nullptr; - // prevent execution of new callbacks during this run - auto stop = last; - - bool done; - do - { - done = current == stop; - if (!CallP::execute(current->mDelegate, args...)) - { - // remove callback from stack -#ifdef ARDUINO - InterruptLock lockAllInterruptsInThisScope; -#else - std::lock_guard lock(mutex_unused); -#endif - - auto to_recycle = current; - - // removing rLast - if (last == current) - last = prev; - - current = current->mNext; - if (prev) - { - prev->mNext = current; - } - else - { - first = current; - } - - if (ISQUEUE) - recycle_node_unsafe(to_recycle); - else - delete to_recycle; - } - else - { - prev = current; - current = current->mNext; - } - -#if defined(ESP8266) || defined(ESP32) - // running callbacks might last too long for watchdog etc. - optimistic_yield(10000); -#endif - } while (current && !done); - - fence.store(false); - } - }; - - template< typename Delegate, typename R = void, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32> - class MultiDelegateImpl : public MultiDelegatePImpl - { - protected: - using typename MultiDelegatePImpl::Node_t; - using MultiDelegatePImpl::first; - using MultiDelegatePImpl::last; - using MultiDelegatePImpl::unused; - using MultiDelegatePImpl::nodeCount; - using MultiDelegatePImpl::recycle_node_unsafe; -#ifndef ARDUINO - using MultiDelegatePImpl::mutex_unused; -#endif - - public: - using MultiDelegatePImpl::MultiDelegatePImpl; - - void operator()() - { - auto current = first; - if (!current) - return; - - static std::atomic fence(false); - // prevent recursive calls -#if defined(ARDUINO) && !defined(ESP32) - if (fence.load()) return; - fence.store(true); -#else - if (fence.exchange(true)) return; -#endif - - Node_t* prev = nullptr; - // prevent execution of new callbacks during this run - auto stop = last; - - bool done; - do - { - done = current == stop; - if (!Call::execute(current->mDelegate)) - { - // remove callback from stack -#ifdef ARDUINO - InterruptLock lockAllInterruptsInThisScope; -#else - std::lock_guard lock(mutex_unused); -#endif - - auto to_recycle = current; - - // removing rLast - if (last == current) - last = prev; - - current = current->mNext; - if (prev) - { - prev->mNext = current; - } - else - { - first = current; - } - - if (ISQUEUE) - recycle_node_unsafe(to_recycle); - else - delete to_recycle; - } - else - { - prev = current; - current = current->mNext; - } - -#if defined(ESP8266) || defined(ESP32) - // running callbacks might last too long for watchdog etc. - optimistic_yield(10000); -#endif - } while (current && !done); - - fence.store(false); - } - }; - - template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY, typename... P> class MultiDelegate; - - template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY, typename... P> - class MultiDelegate : public MultiDelegatePImpl - { - public: - using MultiDelegatePImpl::MultiDelegatePImpl; - }; - - template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY> - class MultiDelegate : public MultiDelegateImpl - { - public: - using MultiDelegateImpl::MultiDelegateImpl; - }; -}; - -/** -The MultiDelegate class template can be specialized to either a queue or an event multiplexer. -It is designed to be used with Delegate, the efficient runtime wrapper for C function ptr and C++ std::function. -@tparam Delegate specifies the concrete type that MultiDelegate bases the queue or event multiplexer on. -@tparam ISQUEUE modifies the generated MultiDelegate class in subtle ways. In queue mode (ISQUEUE == true), - the value of QUEUE_CAPACITY enforces the maximum number of simultaneous items the queue can contain. - This is exploited to minimize the use of new and delete by reusing already allocated items, thus - reducing heap fragmentation. In event multiplexer mode (ISQUEUE = false), new and delete are - used for allocation of the event handler items. - If the result type of the function call operator of Delegate is void, calling a MultiDelegate queue - removes each item after calling it; a Multidelegate event multiplexer keeps event handlers until - explicitly removed. - If the result type of the function call operator of Delegate is non-void, the type-conversion to bool - of that result determines if the item is immediately removed or kept after each call: a Multidelegate - queue removes an item only if true is returned, but a Multidelegate event multiplexer removes event - handlers that return false. -@tparam QUEUE_CAPACITY is only used if ISQUEUE == true. Then, it sets the maximum capacity that the queue dynamically - allocates from the heap. Unused items are not returned to the heap, but are managed by the MultiDelegate - instance during its own lifetime for efficiency. -*/ -template< typename Delegate, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32> -class MultiDelegate : public detail::MultiDelegate -{ -public: - using detail::MultiDelegate::MultiDelegate; -}; - -#endif // __MULTIDELEGATE_H From e4d645cf4119c2fdaa7f66b83fdc2cd99cead95a Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:42:58 +0100 Subject: [PATCH 085/104] Delete circular_queue.h --- .../src/circular_queue/circular_queue.h | 399 ------------------ 1 file changed, 399 deletions(-) delete mode 100644 EspSoftwareSerial/src/circular_queue/circular_queue.h diff --git a/EspSoftwareSerial/src/circular_queue/circular_queue.h b/EspSoftwareSerial/src/circular_queue/circular_queue.h deleted file mode 100644 index 46e3f66e..00000000 --- a/EspSoftwareSerial/src/circular_queue/circular_queue.h +++ /dev/null @@ -1,399 +0,0 @@ -/* -circular_queue.h - Implementation of a lock-free circular queue for EspSoftwareSerial. -Copyright (c) 2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef __circular_queue_h -#define __circular_queue_h - -#ifdef ARDUINO -#include -#endif - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -#include -#include -#include -#include "Delegate.h" -using std::min; -#else -#include "ghostl.h" -#endif - -#if !defined(ESP32) && !defined(ESP8266) -#define ICACHE_RAM_ATTR -#define IRAM_ATTR -#endif - -/*! - @brief Instance class for a single-producer, single-consumer circular queue / ring buffer (FIFO). - This implementation is lock-free between producer and consumer for the available(), peek(), - pop(), and push() type functions. -*/ -template< typename T, typename ForEachArg = void > -class circular_queue -{ -public: - /*! - @brief Constructs a valid, but zero-capacity dummy queue. - */ - circular_queue() : m_bufSize(1) - { - m_inPos.store(0); - m_outPos.store(0); - } - /*! - @brief Constructs a queue of the given maximum capacity. - */ - circular_queue(const size_t capacity) : m_bufSize(capacity + 1), m_buffer(new T[m_bufSize]) - { - m_inPos.store(0); - m_outPos.store(0); - } - circular_queue(circular_queue&& cq) : - m_bufSize(cq.m_bufSize), m_buffer(cq.m_buffer), m_inPos(cq.m_inPos.load()), m_outPos(cq.m_outPos.load()) - {} - ~circular_queue() - { - m_buffer.reset(); - } - circular_queue(const circular_queue&) = delete; - circular_queue& operator=(circular_queue&& cq) - { - m_bufSize = cq.m_bufSize; - m_buffer = cq.m_buffer; - m_inPos.store(cq.m_inPos.load()); - m_outPos.store(cq.m_outPos.load()); - } - circular_queue& operator=(const circular_queue&) = delete; - - /*! - @brief Get the numer of elements the queue can hold at most. - */ - size_t capacity() const - { - return m_bufSize - 1; - } - - /*! - @brief Resize the queue. The available elements in the queue are preserved. - This is not lock-free and concurrent producer or consumer access - will lead to corruption. - @return True if the new capacity could accommodate the present elements in - the queue, otherwise nothing is done and false is returned. - */ - bool capacity(const size_t cap); - - /*! - @brief Discard all data in the queue. - */ - void flush() - { - m_outPos.store(m_inPos.load()); - } - - /*! - @brief Get a snapshot number of elements that can be retrieved by pop. - */ - size_t available() const - { - int avail = static_cast(m_inPos.load() - m_outPos.load()); - if (avail < 0) avail += m_bufSize; - return avail; - } - - /*! - @brief Get the remaining free elementes for pushing. - */ - size_t available_for_push() const - { - int avail = static_cast(m_outPos.load() - m_inPos.load()) - 1; - if (avail < 0) avail += m_bufSize; - return avail; - } - - /*! - @brief Peek at the next element pop will return without removing it from the queue. - @return An rvalue copy of the next element that can be popped. If the queue is empty, - return an rvalue copy of the element that is pending the next push. - */ - T peek() const - { - const auto outPos = m_outPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - return m_buffer[outPos]; - } - - /*! - @brief Peek at the next pending input value. - @return A reference to the next element that can be pushed. - */ - T& IRAM_ATTR pushpeek() - { - const auto inPos = m_inPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - return m_buffer[inPos]; - } - - /*! - @brief Release the next pending input value, accessible by pushpeek(), into the queue. - @return true if the queue accepted the value, false if the queue - was full. - */ - bool IRAM_ATTR push(); - - /*! - @brief Move the rvalue parameter into the queue. - @return true if the queue accepted the value, false if the queue - was full. - */ - bool IRAM_ATTR push(T&& val); - - /*! - @brief Push a copy of the parameter into the queue. - @return true if the queue accepted the value, false if the queue - was full. - */ - bool IRAM_ATTR push(const T& val) - { - return push(T(val)); - } - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) - /*! - @brief Push copies of multiple elements from a buffer into the queue, - in order, beginning at buffer's head. - @return The number of elements actually copied into the queue, counted - from the buffer head. - */ - size_t push_n(const T* buffer, size_t size); -#endif - - /*! - @brief Pop the next available element from the queue. - @return An rvalue copy of the popped element, or a default - value of type T if the queue is empty. - */ - T pop(); - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) - /*! - @brief Pop multiple elements in ordered sequence from the queue to a buffer. - If buffer is nullptr, simply discards up to size elements from the queue. - @return The number of elements actually popped from the queue to - buffer. - */ - size_t pop_n(T* buffer, size_t size); -#endif - - /*! - @brief Iterate over and remove each available element from queue, - calling back fun with an rvalue reference of every single element. - */ -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) - void for_each(const Delegate& fun); -#else - void for_each(Delegate fun); -#endif - - /*! - @brief In reverse order, iterate over, pop and optionally requeue each available element from the queue, - calling back fun with a reference of every single element. - Requeuing is dependent on the return boolean of the callback function. If it - returns true, the requeue occurs. - */ -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) - bool for_each_rev_requeue(const Delegate& fun); -#else - bool for_each_rev_requeue(Delegate fun); -#endif - -protected: - const T defaultValue = {}; - unsigned m_bufSize; -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) - std::unique_ptr m_buffer; -#else - std::unique_ptr m_buffer; -#endif - std::atomic m_inPos; - std::atomic m_outPos; -}; - -template< typename T, typename ForEachArg > -bool circular_queue::capacity(const size_t cap) -{ - if (cap + 1 == m_bufSize) return true; - else if (available() > cap) return false; - std::unique_ptr buffer(new T[cap + 1]); - const auto available = pop_n(buffer, cap); - m_buffer.reset(buffer); - m_bufSize = cap + 1; - std::atomic_thread_fence(std::memory_order_release); - m_inPos.store(available, std::memory_order_relaxed); - m_outPos.store(0, std::memory_order_release); - return true; -} - -template< typename T, typename ForEachArg > -bool IRAM_ATTR circular_queue::push() -{ - const auto inPos = m_inPos.load(std::memory_order_acquire); - const unsigned next = (inPos + 1) % m_bufSize; - if (next == m_outPos.load(std::memory_order_relaxed)) { - return false; - } - - std::atomic_thread_fence(std::memory_order_acquire); - - m_inPos.store(next, std::memory_order_release); - return true; -} - -template< typename T, typename ForEachArg > -bool IRAM_ATTR circular_queue::push(T&& val) -{ - const auto inPos = m_inPos.load(std::memory_order_acquire); - const unsigned next = (inPos + 1) % m_bufSize; - if (next == m_outPos.load(std::memory_order_relaxed)) { - return false; - } - - std::atomic_thread_fence(std::memory_order_acquire); - - m_buffer[inPos] = std::move(val); - - std::atomic_thread_fence(std::memory_order_release); - - m_inPos.store(next, std::memory_order_release); - return true; -} - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -template< typename T, typename ForEachArg > -size_t circular_queue::push_n(const T* buffer, size_t size) -{ - const auto inPos = m_inPos.load(std::memory_order_acquire); - const auto outPos = m_outPos.load(std::memory_order_relaxed); - - size_t blockSize = (outPos > inPos) ? outPos - 1 - inPos : (outPos == 0) ? m_bufSize - 1 - inPos : m_bufSize - inPos; - blockSize = min(size, blockSize); - if (!blockSize) return 0; - int next = (inPos + blockSize) % m_bufSize; - - std::atomic_thread_fence(std::memory_order_acquire); - - auto dest = m_buffer.get() + inPos; - std::copy_n(std::make_move_iterator(buffer), blockSize, dest); - size = min(size - blockSize, outPos > 1 ? static_cast(outPos - next - 1) : 0); - next += size; - dest = m_buffer.get(); - std::copy_n(std::make_move_iterator(buffer + blockSize), size, dest); - - std::atomic_thread_fence(std::memory_order_release); - - m_inPos.store(next, std::memory_order_release); - return blockSize + size; -} -#endif - -template< typename T, typename ForEachArg > -T circular_queue::pop() -{ - const auto outPos = m_outPos.load(std::memory_order_acquire); - if (m_inPos.load(std::memory_order_relaxed) == outPos) return defaultValue; - - std::atomic_thread_fence(std::memory_order_acquire); - - auto val = std::move(m_buffer[outPos]); - - std::atomic_thread_fence(std::memory_order_release); - - m_outPos.store((outPos + 1) % m_bufSize, std::memory_order_release); - return val; -} - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -template< typename T, typename ForEachArg > -size_t circular_queue::pop_n(T* buffer, size_t size) { - size_t avail = size = min(size, available()); - if (!avail) return 0; - const auto outPos = m_outPos.load(std::memory_order_acquire); - size_t n = min(avail, static_cast(m_bufSize - outPos)); - - std::atomic_thread_fence(std::memory_order_acquire); - - if (buffer) { - buffer = std::copy_n(std::make_move_iterator(m_buffer.get() + outPos), n, buffer); - avail -= n; - std::copy_n(std::make_move_iterator(m_buffer.get()), avail, buffer); - } - - std::atomic_thread_fence(std::memory_order_release); - - m_outPos.store((outPos + size) % m_bufSize, std::memory_order_release); - return size; -} -#endif - -template< typename T, typename ForEachArg > -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -void circular_queue::for_each(const Delegate& fun) -#else -void circular_queue::for_each(Delegate fun) -#endif -{ - auto outPos = m_outPos.load(std::memory_order_acquire); - const auto inPos = m_inPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - while (outPos != inPos) - { - fun(std::move(m_buffer[outPos])); - std::atomic_thread_fence(std::memory_order_release); - outPos = (outPos + 1) % m_bufSize; - m_outPos.store(outPos, std::memory_order_release); - } -} - -template< typename T, typename ForEachArg > -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -bool circular_queue::for_each_rev_requeue(const Delegate& fun) -#else -bool circular_queue::for_each_rev_requeue(Delegate fun) -#endif -{ - auto inPos0 = circular_queue::m_inPos.load(std::memory_order_acquire); - auto outPos = circular_queue::m_outPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - if (outPos == inPos0) return false; - auto pos = inPos0; - auto outPos1 = inPos0; - const auto posDecr = circular_queue::m_bufSize - 1; - do { - pos = (pos + posDecr) % circular_queue::m_bufSize; - T&& val = std::move(circular_queue::m_buffer[pos]); - if (fun(val)) - { - outPos1 = (outPos1 + posDecr) % circular_queue::m_bufSize; - if (outPos1 != pos) circular_queue::m_buffer[outPos1] = std::move(val); - } - } while (pos != outPos); - circular_queue::m_outPos.store(outPos1, std::memory_order_release); - return true; -} - -#endif // __circular_queue_h From 25b926510d30e58de7a9c3a7f673b869a966934e Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:43:08 +0100 Subject: [PATCH 086/104] Delete circular_queue_mp.h --- .../src/circular_queue/circular_queue_mp.h | 200 ------------------ 1 file changed, 200 deletions(-) delete mode 100644 EspSoftwareSerial/src/circular_queue/circular_queue_mp.h diff --git a/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h b/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h deleted file mode 100644 index 7024247a..00000000 --- a/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h +++ /dev/null @@ -1,200 +0,0 @@ -/* -circular_queue_mp.h - Implementation of a lock-free circular queue for EspSoftwareSerial. -Copyright (c) 2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef __circular_queue_mp_h -#define __circular_queue_mp_h - -#include "circular_queue.h" - -#ifdef ESP8266 -#include "interrupts.h" -#else -#include -#endif - -/*! - @brief Instance class for a multi-producer, single-consumer circular queue / ring buffer (FIFO). - This implementation is lock-free between producers and consumer for the available(), peek(), - pop(), and push() type functions, but is guarded to safely allow only a single producer - at any instant. -*/ -template< typename T, typename ForEachArg = void > -class circular_queue_mp : protected circular_queue -{ -public: - circular_queue_mp() = default; - circular_queue_mp(const size_t capacity) : circular_queue(capacity) - {} - circular_queue_mp(circular_queue&& cq) : circular_queue(std::move(cq)) - {} - using circular_queue::operator=; - using circular_queue::capacity; - using circular_queue::flush; - using circular_queue::available; - using circular_queue::available_for_push; - using circular_queue::peek; - using circular_queue::pop; - using circular_queue::pop_n; - using circular_queue::for_each; - using circular_queue::for_each_rev_requeue; - - /*! - @brief Resize the queue. The available elements in the queue are preserved. - This is not lock-free, but safe, concurrent producer or consumer access - is guarded. - @return True if the new capacity could accommodate the present elements in - the queue, otherwise nothing is done and false is returned. - */ - bool capacity(const size_t cap) - { -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - return circular_queue::capacity(cap); - } - - bool IRAM_ATTR push() = delete; - - /*! - @brief Move the rvalue parameter into the queue, guarded - for multiple concurrent producers. - @return true if the queue accepted the value, false if the queue - was full. - */ - bool IRAM_ATTR push(T&& val) - { -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - return circular_queue::push(std::move(val)); - } - - /*! - @brief Push a copy of the parameter into the queue, guarded - for multiple concurrent producers. - @return true if the queue accepted the value, false if the queue - was full. - */ - bool IRAM_ATTR push(const T& val) - { -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - return circular_queue::push(val); - } - - /*! - @brief Push copies of multiple elements from a buffer into the queue, - in order, beginning at buffer's head. This is guarded for - multiple producers, push_n() is atomic. - @return The number of elements actually copied into the queue, counted - from the buffer head. - */ - size_t push_n(const T* buffer, size_t size) - { -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - return circular_queue::push_n(buffer, size); - } - - /*! - @brief Pops the next available element from the queue, requeues - it immediately. - @return A reference to the just requeued element, or the default - value of type T if the queue is empty. - */ - T& pop_requeue(); - - /*! - @brief Iterate over, pop and optionally requeue each available element from the queue, - calling back fun with a reference of every single element. - Requeuing is dependent on the return boolean of the callback function. If it - returns true, the requeue occurs. - */ - bool for_each_requeue(const Delegate& fun); - -#ifndef ESP8266 -protected: - std::mutex m_pushMtx; -#endif -}; - -template< typename T, typename ForEachArg > -T& circular_queue_mp::pop_requeue() -{ -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - const auto outPos = circular_queue::m_outPos.load(std::memory_order_acquire); - const auto inPos = circular_queue::m_inPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - if (inPos == outPos) return circular_queue::defaultValue; - T& val = circular_queue::m_buffer[inPos] = std::move(circular_queue::m_buffer[outPos]); - const auto bufSize = circular_queue::m_bufSize; - std::atomic_thread_fence(std::memory_order_release); - circular_queue::m_outPos.store((outPos + 1) % bufSize, std::memory_order_relaxed); - circular_queue::m_inPos.store((inPos + 1) % bufSize, std::memory_order_release); - return val; -} - -template< typename T, typename ForEachArg > -bool circular_queue_mp::for_each_requeue(const Delegate& fun) -{ - auto inPos0 = circular_queue::m_inPos.load(std::memory_order_acquire); - auto outPos = circular_queue::m_outPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - if (outPos == inPos0) return false; - do { - T&& val = std::move(circular_queue::m_buffer[outPos]); - if (fun(val)) - { -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - std::atomic_thread_fence(std::memory_order_release); - auto inPos = circular_queue::m_inPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - circular_queue::m_buffer[inPos] = std::move(val); - std::atomic_thread_fence(std::memory_order_release); - circular_queue::m_inPos.store((inPos + 1) % circular_queue::m_bufSize, std::memory_order_release); - } - else - { - std::atomic_thread_fence(std::memory_order_release); - } - outPos = (outPos + 1) % circular_queue::m_bufSize; - circular_queue::m_outPos.store(outPos, std::memory_order_release); - } while (outPos != inPos0); - return true; -} - -#endif // __circular_queue_mp_h From d7155fd25b9c87422379aaf0cb2de507f11f3916 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:43:15 +0100 Subject: [PATCH 087/104] Delete ghostl.h --- EspSoftwareSerial/src/circular_queue/ghostl.h | 92 ------------------- 1 file changed, 92 deletions(-) delete mode 100644 EspSoftwareSerial/src/circular_queue/ghostl.h diff --git a/EspSoftwareSerial/src/circular_queue/ghostl.h b/EspSoftwareSerial/src/circular_queue/ghostl.h deleted file mode 100644 index 11683805..00000000 --- a/EspSoftwareSerial/src/circular_queue/ghostl.h +++ /dev/null @@ -1,92 +0,0 @@ -/* -ghostl.h - Implementation of a bare-bones, mostly no-op, C++ STL shell - that allows building some Arduino ESP8266/ESP32 - libraries on Aruduino AVR. -Copyright (c) 2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef __ghostl_h -#define __ghostl_h - -#if defined(ARDUINO_ARCH_SAMD) -#include -#endif - -namespace std -{ -#if !defined(ARDUINO_ARCH_SAMD) - typedef enum memory_order { - memory_order_relaxed, - memory_order_acquire, - memory_order_release, - memory_order_seq_cst - } memory_order; - template< typename T > class atomic { - private: - T value; - public: - atomic() {} - atomic(T desired) { value = desired; } - void store(T desired, std::memory_order = std::memory_order_seq_cst) volatile noexcept { value = desired; } - T load(std::memory_order = std::memory_order_seq_cst) const volatile noexcept { return value; } - }; - inline void atomic_thread_fence(std::memory_order order) noexcept {} - template< typename T > T&& move(T& t) noexcept { return static_cast(t); } -#endif - - template< typename T, unsigned long N > struct array - { - T _M_elems[N]; - decltype(sizeof(0)) size() const { return N; } - T& operator[](decltype(sizeof(0)) i) { return _M_elems[i]; } - const T& operator[](decltype(sizeof(0)) i) const { return _M_elems[i]; } - }; - - template< typename T > class unique_ptr - { - public: - using pointer = T*; - unique_ptr() noexcept : ptr(nullptr) {} - unique_ptr(pointer p) : ptr(p) {} - pointer operator->() const noexcept { return ptr; } - T& operator[](decltype(sizeof(0)) i) const { return ptr[i]; } - void reset(pointer p = pointer()) noexcept - { - delete ptr; - ptr = p; - } - T& operator*() const { return *ptr; } - private: - pointer ptr; - }; - - template< typename T > using function = T*; - using nullptr_t = decltype(nullptr); - - template - struct identity { - typedef T type; - }; - - template - inline T&& forward(typename identity::type& t) noexcept - { - return static_cast::type&&>(t); - } -} - -#endif // __ghostl_h From 8e1fee23bb7bfdbf5ee6f667ab54516979d41a6b Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:43:27 +0100 Subject: [PATCH 088/104] Delete SoftwareSerial.cpp --- EspSoftwareSerial/src/SoftwareSerial.cpp | 542 ----------------------- 1 file changed, 542 deletions(-) delete mode 100644 EspSoftwareSerial/src/SoftwareSerial.cpp diff --git a/EspSoftwareSerial/src/SoftwareSerial.cpp b/EspSoftwareSerial/src/SoftwareSerial.cpp deleted file mode 100644 index 0e7b8e08..00000000 --- a/EspSoftwareSerial/src/SoftwareSerial.cpp +++ /dev/null @@ -1,542 +0,0 @@ -/* - -SoftwareSerial.cpp - Implementation of the Arduino software serial for ESP8266/ESP32. -Copyright (c) 2015-2016 Peter Lerup. All rights reserved. -Copyright (c) 2018-2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -*/ - -#include "SoftwareSerial.h" -#include - -#ifdef ESP32 -#define xt_rsil(a) (a) -#define xt_wsr_ps(a) -#endif - -constexpr uint8_t BYTE_ALL_BITS_SET = ~static_cast(0); - -SoftwareSerial::SoftwareSerial() { - m_isrOverflow = false; -} - -SoftwareSerial::SoftwareSerial(int8_t rxPin, int8_t txPin, bool invert) -{ - m_isrOverflow = false; - m_rxPin = rxPin; - m_txPin = txPin; - m_invert = invert; -} - -SoftwareSerial::~SoftwareSerial() { - end(); -} - -bool SoftwareSerial::isValidGPIOpin(int8_t pin) { -#if defined(ESP8266) - return (pin >= 0 && pin <= 5) || (pin >= 12 && pin <= 15); -#elif defined(ESP32) - return pin == 0 || pin == 2 || (pin >= 4 && pin <= 5) || (pin >= 12 && pin <= 19) || - (pin >= 21 && pin <= 23) || (pin >= 25 && pin <= 27) || (pin >= 32 && pin <= 35); -#else - return true; -#endif -} - -void SoftwareSerial::begin(uint32_t baud, SoftwareSerialConfig config, - int8_t rxPin, int8_t txPin, - bool invert, int bufCapacity, int isrBufCapacity) { - if (-1 != rxPin) m_rxPin = rxPin; - if (-1 != txPin) m_txPin = txPin; - m_oneWire = (m_rxPin == m_txPin); - m_invert = invert; - m_dataBits = 5 + (config & 07); - m_parityMode = static_cast(config & 070); - m_stopBits = 1 + ((config & 0300) ? 1 : 0); - m_pduBits = m_dataBits + static_cast(m_parityMode) + m_stopBits; - m_bitCycles = (ESP.getCpuFreqMHz() * 1000000UL + baud / 2) / baud; - m_intTxEnabled = true; - if (isValidGPIOpin(m_rxPin)) { - std::unique_ptr > buffer(new circular_queue((bufCapacity > 0) ? bufCapacity : 64)); - m_buffer = move(buffer); - if (m_parityMode) - { - std::unique_ptr > parityBuffer(new circular_queue((bufCapacity > 0) ? (bufCapacity + 7) / 8 : 8)); - m_parityBuffer = move(parityBuffer); - m_parityInPos = m_parityOutPos = 1; - } - std::unique_ptr > isrBuffer(new circular_queue((isrBufCapacity > 0) ? isrBufCapacity : (sizeof(uint8_t) * 8 + 2) * bufCapacity)); - m_isrBuffer = move(isrBuffer); - if (m_buffer && (!m_parityMode || m_parityBuffer) && m_isrBuffer) { - m_rxValid = true; - pinMode(m_rxPin, INPUT_PULLUP); - } - } - if (isValidGPIOpin(m_txPin) -#ifdef ESP8266 - || ((m_txPin == 16) && !m_oneWire)) { -#else - ) { -#endif - m_txValid = true; - if (!m_oneWire) { - pinMode(m_txPin, OUTPUT); - digitalWrite(m_txPin, !m_invert); - } - } - if (!m_rxEnabled) { enableRx(true); } -} - -void SoftwareSerial::end() -{ - enableRx(false); - m_txValid = false; - if (m_buffer) { - m_buffer.reset(); - } - m_parityBuffer.reset(); - if (m_isrBuffer) { - m_isrBuffer.reset(); - } -} - -uint32_t SoftwareSerial::baudRate() { - return ESP.getCpuFreqMHz() * 1000000UL / m_bitCycles; -} - -void SoftwareSerial::setTransmitEnablePin(int8_t txEnablePin) { - if (isValidGPIOpin(txEnablePin)) { - m_txEnableValid = true; - m_txEnablePin = txEnablePin; - pinMode(m_txEnablePin, OUTPUT); - digitalWrite(m_txEnablePin, LOW); - } - else { - m_txEnableValid = false; - } -} - -void SoftwareSerial::enableIntTx(bool on) { - m_intTxEnabled = on; -} - -void SoftwareSerial::enableTx(bool on) { - if (m_txValid && m_oneWire) { - if (on) { - enableRx(false); - pinMode(m_txPin, OUTPUT); - digitalWrite(m_txPin, !m_invert); - } - else { - pinMode(m_rxPin, INPUT_PULLUP); - enableRx(true); - } - } -} - -void SoftwareSerial::enableRx(bool on) { - if (m_rxValid) { - if (on) { - m_rxCurBit = m_pduBits - 1; - // Init to stop bit level and current cycle - m_isrLastCycle = (ESP.getCycleCount() | 1) ^ m_invert; - if (m_bitCycles >= (ESP.getCpuFreqMHz() * 1000000UL) / 74880UL) - attachInterruptArg(digitalPinToInterrupt(m_rxPin), reinterpret_cast(rxBitISR), this, CHANGE); - else - attachInterruptArg(digitalPinToInterrupt(m_rxPin), reinterpret_cast(rxBitSyncISR), this, m_invert ? RISING : FALLING); - } - else { - detachInterrupt(digitalPinToInterrupt(m_rxPin)); - } - m_rxEnabled = on; - } -} - -int SoftwareSerial::read() { - if (!m_rxValid) { return -1; } - if (!m_buffer->available()) { - rxBits(); - if (!m_buffer->available()) { return -1; } - } - auto val = m_buffer->pop(); - if (m_parityBuffer) - { - m_lastReadParity = m_parityBuffer->peek() & m_parityOutPos; - m_parityOutPos <<= 1; - if (!m_parityOutPos) - { - m_parityOutPos = 1; - m_parityBuffer->pop(); - } - } - return val; -} - -size_t SoftwareSerial::read(uint8_t * buffer, size_t size) { - if (!m_rxValid) { return 0; } - size_t avail; - if (0 == (avail = m_buffer->pop_n(buffer, size))) { - rxBits(); - avail = m_buffer->pop_n(buffer, size); - } - if (!avail) return 0; - if (m_parityBuffer) { - uint32_t parityBits = avail; - while (m_parityOutPos >>= 1) ++parityBits; - m_parityOutPos = (1 << (parityBits % 8)); - m_parityBuffer->pop_n(nullptr, parityBits / 8); - } - return avail; -} - -size_t SoftwareSerial::readBytes(uint8_t * buffer, size_t size) { - if (!m_rxValid || !size) { return 0; } - size_t count = 0; - const auto start = millis(); - do { - count += read(&buffer[count], size - count); - if (count >= size) break; - yield(); - } while (millis() - start < _timeout); - return count; -} - -int SoftwareSerial::available() { - if (!m_rxValid) { return 0; } - rxBits(); - int avail = m_buffer->available(); - if (!avail) { - optimistic_yield(10000UL); - } - return avail; -} - -void ICACHE_RAM_ATTR SoftwareSerial::preciseDelay(bool sync) { - if (!sync) - { - // Reenable interrupts while delaying to avoid other tasks piling up - if (!m_intTxEnabled) { xt_wsr_ps(m_savedPS); } - auto expired = ESP.getCycleCount() - m_periodStart; - if (expired < m_periodDuration) - { - auto ms = (m_periodDuration - expired) / ESP.getCpuFreqMHz() / 1000UL; - if (ms) delay(ms); - } - while ((ESP.getCycleCount() - m_periodStart) < m_periodDuration) { optimistic_yield(10000); } - // Disable interrupts again - if (!m_intTxEnabled) { m_savedPS = xt_rsil(15); } - } - else - { - while ((ESP.getCycleCount() - m_periodStart) < m_periodDuration) {} - } - m_periodDuration = 0; - m_periodStart = ESP.getCycleCount(); -} - -void ICACHE_RAM_ATTR SoftwareSerial::writePeriod( - uint32_t dutyCycle, uint32_t offCycle, bool withStopBit) { - preciseDelay(true); - if (dutyCycle) - { - digitalWrite(m_txPin, HIGH); - m_periodDuration += dutyCycle; - if (offCycle || (withStopBit && !m_invert)) preciseDelay(!withStopBit || m_invert); - } - if (offCycle) - { - digitalWrite(m_txPin, LOW); - m_periodDuration += offCycle; - if (withStopBit && m_invert) preciseDelay(false); - } -} - -size_t SoftwareSerial::write(uint8_t byte) { - return write(&byte, 1); -} - -size_t SoftwareSerial::write(uint8_t byte, SoftwareSerialParity parity) { - return write(&byte, 1, parity); -} - -size_t SoftwareSerial::write(const uint8_t * buffer, size_t size) { - return write(buffer, size, m_parityMode); -} - -size_t ICACHE_RAM_ATTR SoftwareSerial::write(const uint8_t * buffer, size_t size, SoftwareSerialParity parity) { - if (m_rxValid) { rxBits(); } - if (!m_txValid) { return -1; } - - if (m_txEnableValid) { - digitalWrite(m_txEnablePin, HIGH); - } - // Stop bit: if inverted, LOW, otherwise HIGH - bool b = !m_invert; - uint32_t dutyCycle = 0; - uint32_t offCycle = 0; - if (!m_intTxEnabled) { - // Disable interrupts in order to get a clean transmit timing - m_savedPS = xt_rsil(15); - } - const uint32_t dataMask = ((1UL << m_dataBits) - 1); - bool withStopBit = true; - m_periodDuration = 0; - m_periodStart = ESP.getCycleCount(); - for (size_t cnt = 0; cnt < size; ++cnt) { - uint8_t byte = ~buffer[cnt] & dataMask; - // push LSB start-data-parity-stop bit pattern into uint32_t - // Stop bits: HIGH - uint32_t word = ~0UL; - // parity bit, if any - if (parity && m_parityMode) - { - uint32_t parityBit; - switch (parity) - { - case SWSERIAL_PARITY_EVEN: - // from inverted, so use odd parity - parityBit = byte; - parityBit ^= parityBit >> 4; - parityBit &= 0xf; - parityBit = (0x9669 >> parityBit) & 1; - break; - case SWSERIAL_PARITY_ODD: - // from inverted, so use even parity - parityBit = byte; - parityBit ^= parityBit >> 4; - parityBit &= 0xf; - parityBit = (0x6996 >> parityBit) & 1; - break; - case SWSERIAL_PARITY_MARK: - parityBit = false; - break; - case SWSERIAL_PARITY_SPACE: - // suppresses warning parityBit uninitialized - default: - parityBit = true; - break; - } - word ^= parityBit << m_dataBits; - } - word ^= byte; - // Stop bit: LOW - word <<= 1; - if (m_invert) word = ~word; - for (int i = 0; i <= m_pduBits; ++i) { - bool pb = b; - b = word & (1UL << i); - if (!pb && b) { - writePeriod(dutyCycle, offCycle, withStopBit); - withStopBit = false; - dutyCycle = offCycle = 0; - } - if (b) { - dutyCycle += m_bitCycles; - } - else { - offCycle += m_bitCycles; - } - } - withStopBit = true; - } - writePeriod(dutyCycle, offCycle, true); - if (!m_intTxEnabled) { - // restore the interrupt state - xt_wsr_ps(m_savedPS); - } - if (m_txEnableValid) { - digitalWrite(m_txEnablePin, LOW); - } - return size; -} - -void SoftwareSerial::flush() { - if (!m_rxValid) { return; } - m_buffer->flush(); - if (m_parityBuffer) - { - m_parityInPos = m_parityOutPos = 1; - m_parityBuffer->flush(); - } -} - -bool SoftwareSerial::overflow() { - bool res = m_overflow; - m_overflow = false; - return res; -} - -int SoftwareSerial::peek() { - if (!m_rxValid) { return -1; } - if (!m_buffer->available()) { - rxBits(); - if (!m_buffer->available()) return -1; - } - auto val = m_buffer->peek(); - if (m_parityBuffer) m_lastReadParity = m_parityBuffer->peek() & m_parityOutPos; - return val; -} - -void SoftwareSerial::rxBits() { - int isrAvail = m_isrBuffer->available(); -#ifdef ESP8266 - if (m_isrOverflow.load()) { - m_overflow = true; - m_isrOverflow.store(false); - } -#else - if (m_isrOverflow.exchange(false)) { - m_overflow = true; - } -#endif - - // stop bit can go undetected if leading data bits are at same level - // and there was also no next start bit yet, so one byte may be pending. - // low-cost check first - if (!isrAvail && m_rxCurBit >= -1 && m_rxCurBit < m_pduBits - m_stopBits) { - uint32_t detectionCycles = (m_pduBits - m_stopBits - m_rxCurBit) * m_bitCycles; - if (ESP.getCycleCount() - m_isrLastCycle > detectionCycles) { - // Produce faux stop bit level, prevents start bit maldetection - // cycle's LSB is repurposed for the level bit - rxBits(((m_isrLastCycle + detectionCycles) | 1) ^ m_invert); - } - } - - m_isrBuffer->for_each([this](const uint32_t& isrCycle) { rxBits(isrCycle); }); -} - -void SoftwareSerial::rxBits(const uint32_t & isrCycle) { - bool level = (m_isrLastCycle & 1) ^ m_invert; - - // error introduced by edge value in LSB of isrCycle is negligible - int32_t cycles = isrCycle - m_isrLastCycle; - m_isrLastCycle = isrCycle; - - uint8_t bits = cycles / m_bitCycles; - if (cycles % m_bitCycles > (m_bitCycles >> 1)) ++bits; - while (bits > 0) { - // start bit detection - if (m_rxCurBit >= (m_pduBits - 1)) { - // leading edge of start bit - if (level) break; - m_rxCurBit = -1; - --bits; - continue; - } - // data bits - if (m_rxCurBit >= -1 && m_rxCurBit < (m_dataBits - 1)) { - int8_t dataBits = min(bits, static_cast(m_dataBits - 1 - m_rxCurBit)); - m_rxCurBit += dataBits; - bits -= dataBits; - m_rxCurByte >>= dataBits; - if (level) { m_rxCurByte |= (BYTE_ALL_BITS_SET << (8 - dataBits)); } - continue; - } - // parity bit - if (m_parityMode && m_rxCurBit == (m_dataBits - 1)) { - ++m_rxCurBit; - --bits; - m_rxCurParity = level; - continue; - } - // stop bits - if (m_rxCurBit < (m_pduBits - m_stopBits - 1)) { - ++m_rxCurBit; - --bits; - continue; - } - if (m_rxCurBit == (m_pduBits - m_stopBits - 1)) { - // Store the received value in the buffer unless we have an overflow - // if not high stop bit level, discard word - if (level) - { - m_rxCurByte >>= (sizeof(uint8_t) * 8 - m_dataBits); - if (!m_buffer->push(m_rxCurByte)) { - m_overflow = true; - } - else { - if (m_parityBuffer) - { - if (m_rxCurParity) { - m_parityBuffer->pushpeek() |= m_parityInPos; - } - else { - m_parityBuffer->pushpeek() &= ~m_parityInPos; - } - m_parityInPos <<= 1; - if (!m_parityInPos) - { - m_parityBuffer->push(); - m_parityInPos = 1; - } - } - } - } - m_rxCurBit = m_pduBits; - // reset to 0 is important for masked bit logic - m_rxCurByte = 0; - m_rxCurParity = false; - break; - } - break; - } -} - -void ICACHE_RAM_ATTR SoftwareSerial::rxBitISR(SoftwareSerial * self) { - uint32_t curCycle = ESP.getCycleCount(); - bool level = digitalRead(self->m_rxPin); - - // Store level and cycle in the buffer unless we have an overflow - // cycle's LSB is repurposed for the level bit - if (!self->m_isrBuffer->push((curCycle | 1U) ^ !level)) self->m_isrOverflow.store(true); -} - -void ICACHE_RAM_ATTR SoftwareSerial::rxBitSyncISR(SoftwareSerial * self) { - uint32_t start = ESP.getCycleCount(); - uint32_t wait = self->m_bitCycles - 172U; - - bool level = self->m_invert; - // Store level and cycle in the buffer unless we have an overflow - // cycle's LSB is repurposed for the level bit - if (!self->m_isrBuffer->push(((start + wait) | 1U) ^ !level)) self->m_isrOverflow.store(true); - - for (uint32_t i = 0; i < self->m_pduBits; ++i) { - while (ESP.getCycleCount() - start < wait) {}; - wait += self->m_bitCycles; - - // Store level and cycle in the buffer unless we have an overflow - // cycle's LSB is repurposed for the level bit - if (digitalRead(self->m_rxPin) != level) - { - if (!self->m_isrBuffer->push(((start + wait) | 1U) ^ level)) self->m_isrOverflow.store(true); - level = !level; - } - } -} - -void SoftwareSerial::onReceive(Delegate handler) { - receiveHandler = handler; -} - -void SoftwareSerial::perform_work() { - if (!m_rxValid) { return; } - rxBits(); - if (receiveHandler) { - int avail = m_buffer->available(); - if (avail) { receiveHandler(avail); } - } -} From 1294528ef6d5ba5007bb2f496787ce9b48997492 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:43:36 +0100 Subject: [PATCH 089/104] Delete SoftwareSerial.h --- EspSoftwareSerial/src/SoftwareSerial.h | 255 ------------------------- 1 file changed, 255 deletions(-) delete mode 100644 EspSoftwareSerial/src/SoftwareSerial.h diff --git a/EspSoftwareSerial/src/SoftwareSerial.h b/EspSoftwareSerial/src/SoftwareSerial.h deleted file mode 100644 index 371e3731..00000000 --- a/EspSoftwareSerial/src/SoftwareSerial.h +++ /dev/null @@ -1,255 +0,0 @@ -/* -SoftwareSerial.h - -SoftwareSerial.cpp - Implementation of the Arduino software serial for ESP8266/ESP32. -Copyright (c) 2015-2016 Peter Lerup. All rights reserved. -Copyright (c) 2018-2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -*/ - -#ifndef __SoftwareSerial_h -#define __SoftwareSerial_h - -#include "circular_queue/circular_queue.h" -#include - -enum SoftwareSerialParity : uint8_t { - SWSERIAL_PARITY_NONE = 000, - SWSERIAL_PARITY_EVEN = 020, - SWSERIAL_PARITY_ODD = 030, - SWSERIAL_PARITY_MARK = 040, - SWSERIAL_PARITY_SPACE = 070, -}; - -enum SoftwareSerialConfig { - SWSERIAL_5N1 = SWSERIAL_PARITY_NONE, - SWSERIAL_6N1, - SWSERIAL_7N1, - SWSERIAL_8N1, - SWSERIAL_5E1 = SWSERIAL_PARITY_EVEN, - SWSERIAL_6E1, - SWSERIAL_7E1, - SWSERIAL_8E1, - SWSERIAL_5O1 = SWSERIAL_PARITY_ODD, - SWSERIAL_6O1, - SWSERIAL_7O1, - SWSERIAL_8O1, - SWSERIAL_5M1 = SWSERIAL_PARITY_MARK, - SWSERIAL_6M1, - SWSERIAL_7M1, - SWSERIAL_8M1, - SWSERIAL_5S1 = SWSERIAL_PARITY_SPACE, - SWSERIAL_6S1, - SWSERIAL_7S1, - SWSERIAL_8S1, - SWSERIAL_5N2 = 0200 | SWSERIAL_PARITY_NONE, - SWSERIAL_6N2, - SWSERIAL_7N2, - SWSERIAL_8N2, - SWSERIAL_5E2 = 0200 | SWSERIAL_PARITY_EVEN, - SWSERIAL_6E2, - SWSERIAL_7E2, - SWSERIAL_8E2, - SWSERIAL_5O2 = 0200 | SWSERIAL_PARITY_ODD, - SWSERIAL_6O2, - SWSERIAL_7O2, - SWSERIAL_8O2, - SWSERIAL_5M2 = 0200 | SWSERIAL_PARITY_MARK, - SWSERIAL_6M2, - SWSERIAL_7M2, - SWSERIAL_8M2, - SWSERIAL_5S2 = 0200 | SWSERIAL_PARITY_SPACE, - SWSERIAL_6S2, - SWSERIAL_7S2, - SWSERIAL_8S2, -}; - -/// This class is compatible with the corresponding AVR one, however, -/// the constructor takes no arguments, for compatibility with the -/// HardwareSerial class. -/// Instead, the begin() function handles pin assignments and logic inversion. -/// It also has optional input buffer capacity arguments for byte buffer and ISR bit buffer. -/// Bitrates up to at least 115200 can be used. -class SoftwareSerial : public Stream { -public: - SoftwareSerial(); - /// Ctor to set defaults for pins. - /// @param rxPin the GPIO pin used for RX - /// @param txPin -1 for onewire protocol, GPIO pin used for twowire TX - SoftwareSerial(int8_t rxPin, int8_t txPin = -1, bool invert = false); - SoftwareSerial(const SoftwareSerial&) = delete; - SoftwareSerial& operator= (const SoftwareSerial&) = delete; - virtual ~SoftwareSerial(); - /// Configure the SoftwareSerial object for use. - /// @param baud the TX/RX bitrate - /// @param config sets databits, parity, and stop bit count - /// @param rxPin -1 or default: either no RX pin, or keeps the rxPin set in the ctor - /// @param txPin -1 or default: either no TX pin (onewire), or keeps the txPin set in the ctor - /// @param invert true: uses invert line level logic - /// @param bufCapacity the capacity for the received bytes buffer - /// @param isrBufCapacity 0: derived from bufCapacity. The capacity of the internal asynchronous - /// bit receive buffer, a suggested size is bufCapacity times the sum of - /// start, data, parity and stop bit count. - void begin(uint32_t baud, SoftwareSerialConfig config, - int8_t rxPin, int8_t txPin, bool invert, - int bufCapacity = 64, int isrBufCapacity = 0); - void begin(uint32_t baud, SoftwareSerialConfig config, - int8_t rxPin, int8_t txPin) { - begin(baud, config, rxPin, txPin, m_invert); - } - void begin(uint32_t baud, SoftwareSerialConfig config, - int8_t rxPin) { - begin(baud, config, rxPin, m_txPin, m_invert); - } - void begin(uint32_t baud, SoftwareSerialConfig config = SWSERIAL_8N1) { - begin(baud, config, m_rxPin, m_txPin, m_invert); - } - - uint32_t baudRate(); - /// Transmit control pin. - void setTransmitEnablePin(int8_t txEnablePin); - /// Enable or disable interrupts during tx. - void enableIntTx(bool on); - - bool overflow(); - - int available() override; - int availableForWrite() { - if (!m_txValid) return 0; - return 1; - } - int peek() override; - int read() override; - /// @returns The verbatim parity bit associated with the last read() or peek() call - bool readParity() - { - return m_lastReadParity; - } - /// @returns The calculated bit for even parity of the parameter byte - static bool parityEven(uint8_t byte) { - byte ^= byte >> 4; - byte &= 0xf; - return (0x6996 >> byte) & 1; - } - /// @returns The calculated bit for odd parity of the parameter byte - static bool parityOdd(uint8_t byte) { - byte ^= byte >> 4; - byte &= 0xf; - return (0x9669 >> byte) & 1; - } - /// The read(buffer, size) functions are non-blocking, the same as readBytes but without timeout - size_t read(uint8_t* buffer, size_t size); - /// The read(buffer, size) functions are non-blocking, the same as readBytes but without timeout - size_t read(char* buffer, size_t size) { - return read(reinterpret_cast(buffer), size); - } - /// @returns The number of bytes read into buffer, up to size. Times out if the limit set through - /// Stream::setTimeout() is reached. - size_t readBytes(uint8_t* buffer, size_t size) override; - /// @returns The number of bytes read into buffer, up to size. Times out if the limit set through - /// Stream::setTimeout() is reached. - size_t readBytes(char* buffer, size_t size) override { - return readBytes(reinterpret_cast(buffer), size); - } - void flush() override; - size_t write(uint8_t byte) override; - size_t write(uint8_t byte, SoftwareSerialParity parity); - size_t write(const uint8_t* buffer, size_t size) override; - size_t write(const char* buffer, size_t size) { - return write(reinterpret_cast(buffer), size); - } - size_t write(const uint8_t* buffer, size_t size, SoftwareSerialParity parity); - size_t write(const char* buffer, size_t size, SoftwareSerialParity parity) { - return write(reinterpret_cast(buffer), size, parity); - } - operator bool() const { return m_rxValid || m_txValid; } - - /// Disable or enable interrupts on the rx pin. - void enableRx(bool on); - /// One wire control. - void enableTx(bool on); - - // AVR compatibility methods. - bool listen() { enableRx(true); return true; } - void end(); - bool isListening() { return m_rxEnabled; } - bool stopListening() { enableRx(false); return true; } - - /// Set an event handler for received data. - void onReceive(Delegate handler); - - /// Run the internal processing and event engine. Can be iteratively called - /// from loop, or otherwise scheduled. - void perform_work(); - - using Print::write; - -private: - // If sync is false, it's legal to exceed the deadline, for instance, - // by enabling interrupts. - void preciseDelay(bool sync); - // If withStopBit is set, either cycle contains a stop bit. - // If dutyCycle == 0, the level is not forced to HIGH. - // If offCycle == 0, the level remains unchanged from dutyCycle. - void writePeriod( - uint32_t dutyCycle, uint32_t offCycle, bool withStopBit); - bool isValidGPIOpin(int8_t pin); - /* check m_rxValid that calling is safe */ - void rxBits(); - void rxBits(const uint32_t& isrCycle); - - static void rxBitISR(SoftwareSerial* self); - static void rxBitSyncISR(SoftwareSerial* self); - - // Member variables - int8_t m_rxPin = -1; - int8_t m_txPin = -1; - int8_t m_txEnablePin = -1; - uint8_t m_dataBits; - bool m_oneWire; - bool m_rxValid = false; - bool m_rxEnabled = false; - bool m_txValid = false; - bool m_txEnableValid = false; - bool m_invert; - /// PDU bits include data, parity and stop bits; the start bit is not counted. - uint8_t m_pduBits; - bool m_intTxEnabled; - SoftwareSerialParity m_parityMode; - uint8_t m_stopBits; - bool m_lastReadParity; - bool m_overflow = false; - uint32_t m_bitCycles; - uint8_t m_parityInPos; - uint8_t m_parityOutPos; - int8_t m_rxCurBit; // 0 thru (m_pduBits - m_stopBits - 1): data/parity bits. -1: start bit. (m_pduBits - 1): stop bit. - uint8_t m_rxCurByte = 0; - std::unique_ptr > m_buffer; - std::unique_ptr > m_parityBuffer; - uint32_t m_periodStart; - uint32_t m_periodDuration; - uint32_t m_savedPS = 0; - // the ISR stores the relative bit times in the buffer. The inversion corrected level is used as sign bit (2's complement): - // 1 = positive including 0, 0 = negative. - std::unique_ptr > m_isrBuffer; - std::atomic m_isrOverflow; - uint32_t m_isrLastCycle; - bool m_rxCurParity = false; - Delegate receiveHandler; -}; - -#endif // __SoftwareSerial_h From 24c78da6fe3d211aaca341619cb8e729dc8f0902 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:44:21 +0100 Subject: [PATCH 090/104] Add files via upload --- .../examples/loopback/loopback.ino | 263 ++++++++++++++++++ .../examples/onewiretest/onewiretest.ino | 48 ++++ .../examples/repeater/repeater.ino | 183 ++++++++++++ .../examples/servoTester/servoTester.ino | 115 ++++++++ .../examples/swsertest/swsertest.ino | 47 ++++ 5 files changed, 656 insertions(+) create mode 100644 lib/EspSoftwareSerial/examples/loopback/loopback.ino create mode 100644 lib/EspSoftwareSerial/examples/onewiretest/onewiretest.ino create mode 100644 lib/EspSoftwareSerial/examples/repeater/repeater.ino create mode 100644 lib/EspSoftwareSerial/examples/servoTester/servoTester.ino create mode 100644 lib/EspSoftwareSerial/examples/swsertest/swsertest.ino diff --git a/lib/EspSoftwareSerial/examples/loopback/loopback.ino b/lib/EspSoftwareSerial/examples/loopback/loopback.ino new file mode 100644 index 00000000..b612bdec --- /dev/null +++ b/lib/EspSoftwareSerial/examples/loopback/loopback.ino @@ -0,0 +1,263 @@ +#include + +// On ESP8266: +// Local SoftwareSerial loopback, connect D5 (rx) and D6 (tx). +// For local hardware loopback, connect D5 to D8 (tx), D6 to D7 (rx). +// For hardware send/sink, connect D7 (rx) and D8 (tx). +// Hint: The logger is run at 9600bps such that enableIntTx(true) can remain unchanged. Blocking +// interrupts severely impacts the ability of the SoftwareSerial devices to operate concurrently +// and/or in duplex mode. +// Operating in software serial full duplex mode, runs at 19200bps and few errors (~2.5%). +// Operating in software serial half duplex mode (both loopback and repeater), +// runs at 57600bps with nearly no errors. +// Operating loopback in full duplex, and repeater in half duplex, runs at 38400bps with nearly no errors. +// On ESP32: +// For SoftwareSerial or hardware send/sink, connect D5 (rx) and D6 (tx). +// Hardware Serial2 defaults to D4 (rx), D3 (tx). +// For local hardware loopback, connect D5 (rx) to D3 (tx), D6 (tx) to D4 (rx). + +#if defined(ESP8266) && !defined(D5) +#define D5 (14) +#define D6 (12) +#define D7 (13) +#define D8 (15) +#define TX (1) +#endif + +// Pick only one of HWLOOPBACK, HWSOURCESWSINK, or HWSOURCESINK +//#define HWLOOPBACK 1 +//#define HWSOURCESWSINK 1 +//#define HWSOURCESINK 1 +#define HALFDUPLEX 1 + +#ifdef ESP32 +constexpr int IUTBITRATE = 19200; +#else +constexpr int IUTBITRATE = 19200; +#endif + +#if defined(ESP8266) +constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; +constexpr SerialConfig hwSerialConfig = SERIAL_8E1; +#elif defined(ESP32) +constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; +constexpr uint32_t hwSerialConfig = SERIAL_8E1; +#else +constexpr unsigned swSerialConfig = 3; +#endif +constexpr bool invert = false; + +constexpr int BLOCKSIZE = 16; // use fractions of 256 + +unsigned long start; +String effTxTxt("eff. tx: "); +String effRxTxt("eff. rx: "); +int txCount; +int rxCount; +int expected; +int rxErrors; +int rxParityErrors; +constexpr int ReportInterval = IUTBITRATE / 8; + +#if defined(ESP8266) +#if defined(HWLOOPBACK) || defined(HWSOURCESWSINK) +HardwareSerial& hwSerial(Serial); +SoftwareSerial serialIUT; +SoftwareSerial logger; +#elif defined(HWSOURCESINK) +HardwareSerial& serialIUT(Serial); +SoftwareSerial logger; +#else +SoftwareSerial serialIUT; +HardwareSerial& logger(Serial); +#endif +#elif defined(ESP32) +#if defined(HWLOOPBACK) || defined (HWSOURCESWSINK) +HardwareSerial& hwSerial(Serial2); +SoftwareSerial serialIUT; +#elif defined(HWSOURCESINK) +HardwareSerial& serialIUT(Serial2); +#else +SoftwareSerial serialIUT; +#endif +HardwareSerial& logger(Serial); +#else +SoftwareSerial serialIUT(14, 12); +HardwareSerial& logger(Serial); +#endif + +void setup() { +#if defined(ESP8266) +#if defined(HWLOOPBACK) || defined(HWSOURCESINK) || defined(HWSOURCESWSINK) + Serial.begin(IUTBITRATE, hwSerialConfig, SERIAL_FULL, 1, invert); + Serial.swap(); + Serial.setRxBufferSize(2 * BLOCKSIZE); + logger.begin(9600, SWSERIAL_8N1, -1, TX); +#else + logger.begin(9600); +#endif +#if !defined(HWSOURCESINK) + serialIUT.begin(IUTBITRATE, swSerialConfig, D5, D6, invert, 2 * BLOCKSIZE); +#ifdef HALFDUPLEX + serialIUT.enableIntTx(false); +#endif +#endif +#elif defined(ESP32) +#if defined(HWLOOPBACK) || defined(HWSOURCESWSINK) + Serial2.begin(IUTBITRATE, hwSerialConfig, D4, D3, invert); + Serial2.setRxBufferSize(2 * BLOCKSIZE); +#elif defined(HWSOURCESINK) + serialIUT.begin(IUTBITRATE, hwSerialConfig, D5, D6, invert); + serialIUT.setRxBufferSize(2 * BLOCKSIZE); +#endif +#if !defined(HWSOURCESINK) + serialIUT.begin(IUTBITRATE, swSerialConfig, D5, D6, invert, 2 * BLOCKSIZE); +#ifdef HALFDUPLEX + serialIUT.enableIntTx(false); +#endif +#endif + logger.begin(9600); +#else +#if !defined(HWSOURCESINK) + serialIUT.begin(IUTBITRATE); +#endif + logger.begin(9600); +#endif + + logger.println("Loopback example for EspSoftwareSerial"); + + start = micros(); + txCount = 0; + rxCount = 0; + rxErrors = 0; + rxParityErrors = 0; + expected = -1; +} + +unsigned char c = 0; + +void loop() { +#ifdef HALFDUPLEX + char block[BLOCKSIZE]; +#endif + char inBuf[BLOCKSIZE]; + for (int i = 0; i < BLOCKSIZE; ++i) { +#ifndef HALFDUPLEX +#ifdef HWSOURCESWSINK + hwSerial.write(c); +#else + serialIUT.write(c); +#endif +#ifdef HWLOOPBACK + int avail = hwSerial.available(); + while ((0 == (i % 8)) && avail > 0) { + int inCnt = hwSerial.read(inBuf, min(avail, min(BLOCKSIZE, hwSerial.availableForWrite()))); + hwSerial.write(inBuf, inCnt); + avail -= inCnt; + } +#endif +#else + block[i] = c; +#endif + c = (c + 1) % 256; + ++txCount; + } +#ifdef HALFDUPLEX +#ifdef HWSOURCESWSINK + hwSerial.write(block, BLOCKSIZE); +#else + serialIUT.write(block, BLOCKSIZE); +#endif +#endif +#ifdef HWSOURCESINK +#if defined(ESP8266) + if (serialIUT.hasOverrun()) { logger.println("serialIUT.overrun"); } +#endif +#else + if (serialIUT.overflow()) { logger.println("serialIUT.overflow"); } +#endif + + int inCnt; + uint32_t deadlineStart; + +#ifdef HWLOOPBACK + // starting deadline for the first bytes to become readable + deadlineStart = ESP.getCycleCount(); + inCnt = 0; + while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 24 * ESP.getCpuFreqMHz()) { + int avail = hwSerial.available(); + inCnt += hwSerial.read(&inBuf[inCnt], min(avail, min(BLOCKSIZE - inCnt, hwSerial.availableForWrite()))); + if (inCnt >= BLOCKSIZE) { break; } + // wait for more outstanding bytes to trickle in + if (avail) deadlineStart = ESP.getCycleCount(); + } + hwSerial.write(inBuf, inCnt); +#endif + + // starting deadline for the first bytes to come in + deadlineStart = ESP.getCycleCount(); + inCnt = 0; + while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 8 * ESP.getCpuFreqMHz()) { + int avail; + if (0 != (swSerialConfig & 070)) + avail = serialIUT.available(); + else + avail = serialIUT.read(inBuf, BLOCKSIZE); + for (int i = 0; i < avail; ++i) + { + unsigned char r; + if (0 != (swSerialConfig & 070)) + r = serialIUT.read(); + else + r = inBuf[i]; + if (expected == -1) { expected = r; } + else { + expected = (expected + 1) % (1UL << (5 + swSerialConfig % 4)); + } + if (r != expected) { + ++rxErrors; + expected = -1; + } +#ifndef HWSOURCESINK + if (serialIUT.readParity() != (static_cast(swSerialConfig & 010) ? serialIUT.parityOdd(r) : serialIUT.parityEven(r))) + { + ++rxParityErrors; + } +#endif + ++rxCount; + ++inCnt; + } + + if (inCnt >= BLOCKSIZE) { break; } + // wait for more outstanding bytes to trickle in + if (avail) deadlineStart = ESP.getCycleCount(); + } + + const uint32_t interval = micros() - start; + if (txCount >= ReportInterval && interval) { + uint8_t wordBits = (5 + swSerialConfig % 4) + static_cast(swSerialConfig & 070) + 1 + ((swSerialConfig & 0300) ? 1 : 0); + logger.println(String("tx/rx: ") + txCount + "/" + rxCount); + const long txCps = txCount * (1000000.0 / interval); + const long rxCps = rxCount * (1000000.0 / interval); + logger.print(effTxTxt + wordBits * txCps + "bps, " + + effRxTxt + wordBits * rxCps + "bps, " + + rxErrors + " errors (" + 100.0 * rxErrors / (!rxErrors ? 1 : rxCount) + "%)"); + if (0 != (swSerialConfig & 070)) + { + logger.print(" ("); logger.print(rxParityErrors); logger.println(" parity errors)"); + } + else + { + logger.println(); + } + txCount = 0; + rxCount = 0; + rxErrors = 0; + rxParityErrors = 0; + expected = -1; + // resync + delay(1000UL * 12 * BLOCKSIZE / IUTBITRATE * 16); + serialIUT.flush(); + start = micros(); + } +} diff --git a/lib/EspSoftwareSerial/examples/onewiretest/onewiretest.ino b/lib/EspSoftwareSerial/examples/onewiretest/onewiretest.ino new file mode 100644 index 00000000..3e96401b --- /dev/null +++ b/lib/EspSoftwareSerial/examples/onewiretest/onewiretest.ino @@ -0,0 +1,48 @@ +#include +#include "SoftwareSerial.h" + +SoftwareSerial swSer1; +SoftwareSerial swSer2; + +void setup() { + delay(2000); + Serial.begin(115200); + Serial.println("\nOne Wire Half Duplex Serial Tester"); + swSer1.begin(115200, SWSERIAL_8N1, 12, 12, false, 256); + swSer1.enableIntTx(true); + swSer2.begin(115200, SWSERIAL_8N1, 14, 14, false, 256); + swSer2.enableIntTx(true); +} + +void loop() { + Serial.println("\n\nTesting on swSer1"); + Serial.print("Enter something to send using swSer1."); + checkSwSerial(&swSer1); + + Serial.println("\n\nTesting on swSer2"); + Serial.print("Enter something to send using swSer2."); + checkSwSerial(&swSer2); + +} + +void checkSwSerial(SoftwareSerial* ss) { + byte ch; + while (!Serial.available()); + ss->enableTx(true); + while (Serial.available()) { + ch = Serial.read(); + ss->write(ch); + } + ss->enableTx(false); + // wait 1 second for the reply from SOftwareSerial if any + delay(1000); + if (ss->available()) { + Serial.print("\nResult:"); + while (ss->available()) { + ch = (byte)ss->read(); + Serial.print(ch < 0x01 ? " 0" : " "); + Serial.print(ch, HEX); + } + Serial.println(); + } +} diff --git a/lib/EspSoftwareSerial/examples/repeater/repeater.ino b/lib/EspSoftwareSerial/examples/repeater/repeater.ino new file mode 100644 index 00000000..fa5566de --- /dev/null +++ b/lib/EspSoftwareSerial/examples/repeater/repeater.ino @@ -0,0 +1,183 @@ +#include + +// On ESP8266: +// SoftwareSerial loopback for remote source (loopback.ino), or hardware loopback. +// Connect source D5 (rx) to local D8 (tx), source D6 (tx) to local D7 (rx). +// Hint: The logger is run at 9600bps such that enableIntTx(true) can remain unchanged. Blocking +// interrupts severely impacts the ability of the SoftwareSerial devices to operate concurrently +// and/or in duplex mode. +// On ESP32: +// For software or hardware loopback, connect source rx to local D8 (tx), source tx to local D7 (rx). + +#if defined(ESP8266) && !defined(D5) +#define D5 (14) +#define D6 (12) +#define D7 (13) +#define D8 (15) +#define TX (1) +#endif + +#define HWLOOPBACK 1 +#define HALFDUPLEX 1 + +#ifdef ESP32 +constexpr int IUTBITRATE = 19200; +#else +constexpr int IUTBITRATE = 19200; +#endif + +#if defined(ESP8266) +constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; +constexpr SerialConfig hwSerialConfig = SERIAL_8E1; +#elif defined(ESP32) +constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; +constexpr uint32_t hwSerialConfig = SERIAL_8E1; +#else +constexpr unsigned swSerialConfig = 3; +#endif +constexpr bool invert = false; + +constexpr int BLOCKSIZE = 16; // use fractions of 256 + +unsigned long start; +String bitRateTxt("Effective data rate: "); +int rxCount; +int seqErrors; +int parityErrors; +int expected; +constexpr int ReportInterval = IUTBITRATE / 8; + +#if defined(ESP8266) +#if defined(HWLOOPBACK) +HardwareSerial& repeater(Serial); +SoftwareSerial logger; +#else +SoftwareSerial repeater; +HardwareSerial& logger(Serial); +#endif +#elif defined(ESP32) +#if defined(HWLOOPBACK) +HardwareSerial& repeater(Serial2); +#else +SoftwareSerial repeater; +#endif +HardwareSerial& logger(Serial); +#else +SoftwareSerial repeater(14, 12); +HardwareSerial& logger(Serial); +#endif + +void setup() { +#if defined(ESP8266) +#if defined(HWLOOPBACK) + repeater.begin(IUTBITRATE, hwSerialConfig, SERIAL_FULL, 1, invert); + repeater.swap(); + repeater.setRxBufferSize(2 * BLOCKSIZE); + logger.begin(9600, SWSERIAL_8N1, -1, TX); +#else + repeater.begin(IUTBITRATE, swSerialConfig, D7, D8, invert, 4 * BLOCKSIZE); +#ifdef HALFDUPLEX + repeater.enableIntTx(false); +#endif + logger.begin(9600); +#endif +#elif defined(ESP32) +#if defined(HWLOOPBACK) + repeater.begin(IUTBITRATE, hwSerialConfig, D7, D8, invert); + repeater.setRxBufferSize(2 * BLOCKSIZE); +#else + repeater.begin(IUTBITRATE, swSerialConfig, D7, D8, invert, 4 * BLOCKSIZE); +#ifdef HALFDUPLEX + repeater.enableIntTx(false); +#endif +#endif + logger.begin(9600); +#else + repeater.begin(IUTBITRATE); + logger.begin(9600); +#endif + + logger.println("Repeater example for EspSoftwareSerial"); + start = micros(); + rxCount = 0; + seqErrors = 0; + parityErrors = 0; + expected = -1; +} + +void loop() { +#ifdef HWLOOPBACK +#if defined(ESP8266) + if (repeater.hasOverrun()) { logger.println("repeater.overrun"); } +#endif +#else + if (repeater.overflow()) { logger.println("repeater.overflow"); } +#endif + +#ifdef HALFDUPLEX + char block[BLOCKSIZE]; +#endif + // starting deadline for the first bytes to come in + uint32_t deadlineStart = ESP.getCycleCount(); + int inCnt = 0; + while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 24 * ESP.getCpuFreqMHz()) { + int avail = repeater.available(); + for (int i = 0; i < avail; ++i) + { + int r = repeater.read(); + if (r == -1) { logger.println("read() == -1"); } + if (expected == -1) { expected = r; } + else { + expected = (expected + 1) % (1UL << (5 + swSerialConfig % 4)); + } + if (r != expected) { + ++seqErrors; + expected = -1; + } +#ifndef HWLOOPBACK + if (repeater.readParity() != (static_cast(swSerialConfig & 010) ? repeater.parityOdd(r) : repeater.parityEven(r))) + { + ++parityErrors; + } +#endif + ++rxCount; +#ifdef HALFDUPLEX + block[inCnt] = r; +#else + repeater.write(r); +#endif + if (++inCnt >= BLOCKSIZE) { break; } + } + if (inCnt >= BLOCKSIZE) { break; } + // wait for more outstanding bytes to trickle in + if (avail) deadlineStart = ESP.getCycleCount(); + } + +#ifdef HALFDUPLEX + repeater.write(block, inCnt); +#endif + + if (rxCount >= ReportInterval) { + auto end = micros(); + unsigned long interval = end - start; + long cps = rxCount * (1000000.0 / interval); + long seqErrorsps = seqErrors * (1000000.0 / interval); + logger.print(bitRateTxt + 10 * cps + "bps, " + + seqErrorsps + "cps seq. errors (" + 100.0 * seqErrors / rxCount + "%)"); +#ifndef HWLOOPBACK + if (0 != (swSerialConfig & 070)) + { + logger.print(" ("); logger.print(parityErrors); logger.print(" parity errors)"); + } + else +#endif + { + logger.println(); + } + start = end; + rxCount = 0; + seqErrors = 0; + parityErrors = 0; + expected = -1; + } +} diff --git a/lib/EspSoftwareSerial/examples/servoTester/servoTester.ino b/lib/EspSoftwareSerial/examples/servoTester/servoTester.ino new file mode 100644 index 00000000..cbc784d8 --- /dev/null +++ b/lib/EspSoftwareSerial/examples/servoTester/servoTester.ino @@ -0,0 +1,115 @@ +#include +#include + +SoftwareSerial swSer; + +byte buf[10] = { 0xFA, 0xAF,0x00,0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0xED }; +byte cmd[10] = { 0xFA, 0xAF,0x00,0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0xED }; +byte ver[10] = { 0xFC, 0xCF,0x00,0xAA,0x41, 0x16, 0x51, 0x01, 0x00, 0xED }; + + +void setup() { + delay(2000); + Serial.begin(115200); + Serial.println("\nAlpha 1S Servo Tester"); + swSer.begin(115200, SWSERIAL_8N1, 12, 12, false, 256); +} + +void loop() { + for (int i = 1; i <= 32; i++) { + GetVersion(i); + delay(100); + } + SetLED(1, 0); + GoPos(1, 0, 50); + delay(1000); + GoPos(1, 90, 50); + delay(1000); + GoPos(1, 100, 50); + delay(1000); + SetLED(1, 1); + delay(2000); +} + + + + +void GetVersion(byte id) { + memcpy(buf, cmd, 10); + buf[0] = 0xFC; + buf[1] = 0xCF; + buf[2] = id; + buf[3] = 0x01; + SendCommand(); +} + + +void GoPos(byte id, byte Pos, byte Time) { + memcpy(buf, cmd, 10); + buf[2] = id; + buf[3] = 0x01; + buf[4] = Pos; + buf[5] = Time; + buf[6] = 0x00; + buf[7] = Time; + SendCommand(); +} + +void GetPos(byte id) { + memcpy(buf, cmd, 10); + buf[2] = id; + buf[3] = 0x02; + SendCommand(); +} + + +void SetLED(byte id, byte mode) { + memcpy(buf, cmd, 10); + buf[2] = id; + buf[3] = 0x04; + buf[4] = mode; + SendCommand(); +} + +void SendCommand() { + SendCommand(true); +} + +void SendCommand(bool checkResult) { + byte sum = 0; + for (int i = 2; i < 8; i++) { + sum += buf[i]; + } + buf[8] = sum; + ShowCommand(); + swSer.flush(); + swSer.enableTx(true); + swSer.write(buf, 10); + swSer.enableTx(false); + if (checkResult) checkReturn(); +} + +void ShowCommand() { + Serial.print(millis()); + Serial.print(" OUT>>"); + for (int i = 0; i < 10; i++) { + Serial.print((buf[i] < 0x10 ? " 0" : " ")); + Serial.print(buf[i], HEX); + } + Serial.println(); +} + +void checkReturn() { + unsigned long startMs = millis(); + while (((millis() - startMs) < 500) && (!swSer.available())); + if (swSer.available()) { + Serial.print(millis()); + Serial.print(" IN>>>"); + while (swSer.available()) { + byte ch = (byte)swSer.read(); + Serial.print((ch < 0x10 ? " 0" : " ")); + Serial.print(ch, HEX); + } + Serial.println(); + } +} diff --git a/lib/EspSoftwareSerial/examples/swsertest/swsertest.ino b/lib/EspSoftwareSerial/examples/swsertest/swsertest.ino new file mode 100644 index 00000000..a047c1be --- /dev/null +++ b/lib/EspSoftwareSerial/examples/swsertest/swsertest.ino @@ -0,0 +1,47 @@ +// On ESP8266: +// At 80MHz runs up 57600ps, and at 160MHz CPU frequency up to 115200bps with only negligible errors. +// Connect pin 12 to 14. + +#include + +#if defined(ESP8266) && !defined(D5) +#define D5 (14) +#define D6 (12) +#define D7 (13) +#define D8 (15) +#endif + +#ifdef ESP32 +#define BAUD_RATE 57600 +#else +#define BAUD_RATE 57600 +#endif + +// Reminder: the buffer size optimizations here, in particular the isrBufSize that only accommodates +// a single 8N1 word, are on the basis that any char written to the loopback SoftwareSerial adapter gets read +// before another write is performed. Block writes with a size greater than 1 would usually fail. +SoftwareSerial swSer; + +void setup() { + Serial.begin(115200); + swSer.begin(BAUD_RATE, SWSERIAL_8N1, D5, D6, false, 95, 11); + + Serial.println("\nSoftware serial test started"); + + for (char ch = ' '; ch <= 'z'; ch++) { + swSer.write(ch); + } + swSer.println(""); +} + +void loop() { + while (swSer.available() > 0) { + Serial.write(swSer.read()); + yield(); + } + while (Serial.available() > 0) { + swSer.write(Serial.read()); + yield(); + } + +} From 701461805673d29dba4a6981f9d7552f2d6d0000 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Wed, 5 Feb 2020 16:45:12 +0100 Subject: [PATCH 091/104] Add files via upload --- lib/EspSoftwareSerial/src/SoftwareSerial.cpp | 542 +++++ lib/EspSoftwareSerial/src/SoftwareSerial.h | 255 +++ .../src/circular_queue/Delegate.h | 1786 +++++++++++++++++ .../src/circular_queue/MultiDelegate.h | 503 +++++ .../src/circular_queue/circular_queue.h | 399 ++++ .../src/circular_queue/circular_queue_mp.h | 200 ++ .../src/circular_queue/ghostl.h | 92 + 7 files changed, 3777 insertions(+) create mode 100644 lib/EspSoftwareSerial/src/SoftwareSerial.cpp create mode 100644 lib/EspSoftwareSerial/src/SoftwareSerial.h create mode 100644 lib/EspSoftwareSerial/src/circular_queue/Delegate.h create mode 100644 lib/EspSoftwareSerial/src/circular_queue/MultiDelegate.h create mode 100644 lib/EspSoftwareSerial/src/circular_queue/circular_queue.h create mode 100644 lib/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h create mode 100644 lib/EspSoftwareSerial/src/circular_queue/ghostl.h diff --git a/lib/EspSoftwareSerial/src/SoftwareSerial.cpp b/lib/EspSoftwareSerial/src/SoftwareSerial.cpp new file mode 100644 index 00000000..0e7b8e08 --- /dev/null +++ b/lib/EspSoftwareSerial/src/SoftwareSerial.cpp @@ -0,0 +1,542 @@ +/* + +SoftwareSerial.cpp - Implementation of the Arduino software serial for ESP8266/ESP32. +Copyright (c) 2015-2016 Peter Lerup. All rights reserved. +Copyright (c) 2018-2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#include "SoftwareSerial.h" +#include + +#ifdef ESP32 +#define xt_rsil(a) (a) +#define xt_wsr_ps(a) +#endif + +constexpr uint8_t BYTE_ALL_BITS_SET = ~static_cast(0); + +SoftwareSerial::SoftwareSerial() { + m_isrOverflow = false; +} + +SoftwareSerial::SoftwareSerial(int8_t rxPin, int8_t txPin, bool invert) +{ + m_isrOverflow = false; + m_rxPin = rxPin; + m_txPin = txPin; + m_invert = invert; +} + +SoftwareSerial::~SoftwareSerial() { + end(); +} + +bool SoftwareSerial::isValidGPIOpin(int8_t pin) { +#if defined(ESP8266) + return (pin >= 0 && pin <= 5) || (pin >= 12 && pin <= 15); +#elif defined(ESP32) + return pin == 0 || pin == 2 || (pin >= 4 && pin <= 5) || (pin >= 12 && pin <= 19) || + (pin >= 21 && pin <= 23) || (pin >= 25 && pin <= 27) || (pin >= 32 && pin <= 35); +#else + return true; +#endif +} + +void SoftwareSerial::begin(uint32_t baud, SoftwareSerialConfig config, + int8_t rxPin, int8_t txPin, + bool invert, int bufCapacity, int isrBufCapacity) { + if (-1 != rxPin) m_rxPin = rxPin; + if (-1 != txPin) m_txPin = txPin; + m_oneWire = (m_rxPin == m_txPin); + m_invert = invert; + m_dataBits = 5 + (config & 07); + m_parityMode = static_cast(config & 070); + m_stopBits = 1 + ((config & 0300) ? 1 : 0); + m_pduBits = m_dataBits + static_cast(m_parityMode) + m_stopBits; + m_bitCycles = (ESP.getCpuFreqMHz() * 1000000UL + baud / 2) / baud; + m_intTxEnabled = true; + if (isValidGPIOpin(m_rxPin)) { + std::unique_ptr > buffer(new circular_queue((bufCapacity > 0) ? bufCapacity : 64)); + m_buffer = move(buffer); + if (m_parityMode) + { + std::unique_ptr > parityBuffer(new circular_queue((bufCapacity > 0) ? (bufCapacity + 7) / 8 : 8)); + m_parityBuffer = move(parityBuffer); + m_parityInPos = m_parityOutPos = 1; + } + std::unique_ptr > isrBuffer(new circular_queue((isrBufCapacity > 0) ? isrBufCapacity : (sizeof(uint8_t) * 8 + 2) * bufCapacity)); + m_isrBuffer = move(isrBuffer); + if (m_buffer && (!m_parityMode || m_parityBuffer) && m_isrBuffer) { + m_rxValid = true; + pinMode(m_rxPin, INPUT_PULLUP); + } + } + if (isValidGPIOpin(m_txPin) +#ifdef ESP8266 + || ((m_txPin == 16) && !m_oneWire)) { +#else + ) { +#endif + m_txValid = true; + if (!m_oneWire) { + pinMode(m_txPin, OUTPUT); + digitalWrite(m_txPin, !m_invert); + } + } + if (!m_rxEnabled) { enableRx(true); } +} + +void SoftwareSerial::end() +{ + enableRx(false); + m_txValid = false; + if (m_buffer) { + m_buffer.reset(); + } + m_parityBuffer.reset(); + if (m_isrBuffer) { + m_isrBuffer.reset(); + } +} + +uint32_t SoftwareSerial::baudRate() { + return ESP.getCpuFreqMHz() * 1000000UL / m_bitCycles; +} + +void SoftwareSerial::setTransmitEnablePin(int8_t txEnablePin) { + if (isValidGPIOpin(txEnablePin)) { + m_txEnableValid = true; + m_txEnablePin = txEnablePin; + pinMode(m_txEnablePin, OUTPUT); + digitalWrite(m_txEnablePin, LOW); + } + else { + m_txEnableValid = false; + } +} + +void SoftwareSerial::enableIntTx(bool on) { + m_intTxEnabled = on; +} + +void SoftwareSerial::enableTx(bool on) { + if (m_txValid && m_oneWire) { + if (on) { + enableRx(false); + pinMode(m_txPin, OUTPUT); + digitalWrite(m_txPin, !m_invert); + } + else { + pinMode(m_rxPin, INPUT_PULLUP); + enableRx(true); + } + } +} + +void SoftwareSerial::enableRx(bool on) { + if (m_rxValid) { + if (on) { + m_rxCurBit = m_pduBits - 1; + // Init to stop bit level and current cycle + m_isrLastCycle = (ESP.getCycleCount() | 1) ^ m_invert; + if (m_bitCycles >= (ESP.getCpuFreqMHz() * 1000000UL) / 74880UL) + attachInterruptArg(digitalPinToInterrupt(m_rxPin), reinterpret_cast(rxBitISR), this, CHANGE); + else + attachInterruptArg(digitalPinToInterrupt(m_rxPin), reinterpret_cast(rxBitSyncISR), this, m_invert ? RISING : FALLING); + } + else { + detachInterrupt(digitalPinToInterrupt(m_rxPin)); + } + m_rxEnabled = on; + } +} + +int SoftwareSerial::read() { + if (!m_rxValid) { return -1; } + if (!m_buffer->available()) { + rxBits(); + if (!m_buffer->available()) { return -1; } + } + auto val = m_buffer->pop(); + if (m_parityBuffer) + { + m_lastReadParity = m_parityBuffer->peek() & m_parityOutPos; + m_parityOutPos <<= 1; + if (!m_parityOutPos) + { + m_parityOutPos = 1; + m_parityBuffer->pop(); + } + } + return val; +} + +size_t SoftwareSerial::read(uint8_t * buffer, size_t size) { + if (!m_rxValid) { return 0; } + size_t avail; + if (0 == (avail = m_buffer->pop_n(buffer, size))) { + rxBits(); + avail = m_buffer->pop_n(buffer, size); + } + if (!avail) return 0; + if (m_parityBuffer) { + uint32_t parityBits = avail; + while (m_parityOutPos >>= 1) ++parityBits; + m_parityOutPos = (1 << (parityBits % 8)); + m_parityBuffer->pop_n(nullptr, parityBits / 8); + } + return avail; +} + +size_t SoftwareSerial::readBytes(uint8_t * buffer, size_t size) { + if (!m_rxValid || !size) { return 0; } + size_t count = 0; + const auto start = millis(); + do { + count += read(&buffer[count], size - count); + if (count >= size) break; + yield(); + } while (millis() - start < _timeout); + return count; +} + +int SoftwareSerial::available() { + if (!m_rxValid) { return 0; } + rxBits(); + int avail = m_buffer->available(); + if (!avail) { + optimistic_yield(10000UL); + } + return avail; +} + +void ICACHE_RAM_ATTR SoftwareSerial::preciseDelay(bool sync) { + if (!sync) + { + // Reenable interrupts while delaying to avoid other tasks piling up + if (!m_intTxEnabled) { xt_wsr_ps(m_savedPS); } + auto expired = ESP.getCycleCount() - m_periodStart; + if (expired < m_periodDuration) + { + auto ms = (m_periodDuration - expired) / ESP.getCpuFreqMHz() / 1000UL; + if (ms) delay(ms); + } + while ((ESP.getCycleCount() - m_periodStart) < m_periodDuration) { optimistic_yield(10000); } + // Disable interrupts again + if (!m_intTxEnabled) { m_savedPS = xt_rsil(15); } + } + else + { + while ((ESP.getCycleCount() - m_periodStart) < m_periodDuration) {} + } + m_periodDuration = 0; + m_periodStart = ESP.getCycleCount(); +} + +void ICACHE_RAM_ATTR SoftwareSerial::writePeriod( + uint32_t dutyCycle, uint32_t offCycle, bool withStopBit) { + preciseDelay(true); + if (dutyCycle) + { + digitalWrite(m_txPin, HIGH); + m_periodDuration += dutyCycle; + if (offCycle || (withStopBit && !m_invert)) preciseDelay(!withStopBit || m_invert); + } + if (offCycle) + { + digitalWrite(m_txPin, LOW); + m_periodDuration += offCycle; + if (withStopBit && m_invert) preciseDelay(false); + } +} + +size_t SoftwareSerial::write(uint8_t byte) { + return write(&byte, 1); +} + +size_t SoftwareSerial::write(uint8_t byte, SoftwareSerialParity parity) { + return write(&byte, 1, parity); +} + +size_t SoftwareSerial::write(const uint8_t * buffer, size_t size) { + return write(buffer, size, m_parityMode); +} + +size_t ICACHE_RAM_ATTR SoftwareSerial::write(const uint8_t * buffer, size_t size, SoftwareSerialParity parity) { + if (m_rxValid) { rxBits(); } + if (!m_txValid) { return -1; } + + if (m_txEnableValid) { + digitalWrite(m_txEnablePin, HIGH); + } + // Stop bit: if inverted, LOW, otherwise HIGH + bool b = !m_invert; + uint32_t dutyCycle = 0; + uint32_t offCycle = 0; + if (!m_intTxEnabled) { + // Disable interrupts in order to get a clean transmit timing + m_savedPS = xt_rsil(15); + } + const uint32_t dataMask = ((1UL << m_dataBits) - 1); + bool withStopBit = true; + m_periodDuration = 0; + m_periodStart = ESP.getCycleCount(); + for (size_t cnt = 0; cnt < size; ++cnt) { + uint8_t byte = ~buffer[cnt] & dataMask; + // push LSB start-data-parity-stop bit pattern into uint32_t + // Stop bits: HIGH + uint32_t word = ~0UL; + // parity bit, if any + if (parity && m_parityMode) + { + uint32_t parityBit; + switch (parity) + { + case SWSERIAL_PARITY_EVEN: + // from inverted, so use odd parity + parityBit = byte; + parityBit ^= parityBit >> 4; + parityBit &= 0xf; + parityBit = (0x9669 >> parityBit) & 1; + break; + case SWSERIAL_PARITY_ODD: + // from inverted, so use even parity + parityBit = byte; + parityBit ^= parityBit >> 4; + parityBit &= 0xf; + parityBit = (0x6996 >> parityBit) & 1; + break; + case SWSERIAL_PARITY_MARK: + parityBit = false; + break; + case SWSERIAL_PARITY_SPACE: + // suppresses warning parityBit uninitialized + default: + parityBit = true; + break; + } + word ^= parityBit << m_dataBits; + } + word ^= byte; + // Stop bit: LOW + word <<= 1; + if (m_invert) word = ~word; + for (int i = 0; i <= m_pduBits; ++i) { + bool pb = b; + b = word & (1UL << i); + if (!pb && b) { + writePeriod(dutyCycle, offCycle, withStopBit); + withStopBit = false; + dutyCycle = offCycle = 0; + } + if (b) { + dutyCycle += m_bitCycles; + } + else { + offCycle += m_bitCycles; + } + } + withStopBit = true; + } + writePeriod(dutyCycle, offCycle, true); + if (!m_intTxEnabled) { + // restore the interrupt state + xt_wsr_ps(m_savedPS); + } + if (m_txEnableValid) { + digitalWrite(m_txEnablePin, LOW); + } + return size; +} + +void SoftwareSerial::flush() { + if (!m_rxValid) { return; } + m_buffer->flush(); + if (m_parityBuffer) + { + m_parityInPos = m_parityOutPos = 1; + m_parityBuffer->flush(); + } +} + +bool SoftwareSerial::overflow() { + bool res = m_overflow; + m_overflow = false; + return res; +} + +int SoftwareSerial::peek() { + if (!m_rxValid) { return -1; } + if (!m_buffer->available()) { + rxBits(); + if (!m_buffer->available()) return -1; + } + auto val = m_buffer->peek(); + if (m_parityBuffer) m_lastReadParity = m_parityBuffer->peek() & m_parityOutPos; + return val; +} + +void SoftwareSerial::rxBits() { + int isrAvail = m_isrBuffer->available(); +#ifdef ESP8266 + if (m_isrOverflow.load()) { + m_overflow = true; + m_isrOverflow.store(false); + } +#else + if (m_isrOverflow.exchange(false)) { + m_overflow = true; + } +#endif + + // stop bit can go undetected if leading data bits are at same level + // and there was also no next start bit yet, so one byte may be pending. + // low-cost check first + if (!isrAvail && m_rxCurBit >= -1 && m_rxCurBit < m_pduBits - m_stopBits) { + uint32_t detectionCycles = (m_pduBits - m_stopBits - m_rxCurBit) * m_bitCycles; + if (ESP.getCycleCount() - m_isrLastCycle > detectionCycles) { + // Produce faux stop bit level, prevents start bit maldetection + // cycle's LSB is repurposed for the level bit + rxBits(((m_isrLastCycle + detectionCycles) | 1) ^ m_invert); + } + } + + m_isrBuffer->for_each([this](const uint32_t& isrCycle) { rxBits(isrCycle); }); +} + +void SoftwareSerial::rxBits(const uint32_t & isrCycle) { + bool level = (m_isrLastCycle & 1) ^ m_invert; + + // error introduced by edge value in LSB of isrCycle is negligible + int32_t cycles = isrCycle - m_isrLastCycle; + m_isrLastCycle = isrCycle; + + uint8_t bits = cycles / m_bitCycles; + if (cycles % m_bitCycles > (m_bitCycles >> 1)) ++bits; + while (bits > 0) { + // start bit detection + if (m_rxCurBit >= (m_pduBits - 1)) { + // leading edge of start bit + if (level) break; + m_rxCurBit = -1; + --bits; + continue; + } + // data bits + if (m_rxCurBit >= -1 && m_rxCurBit < (m_dataBits - 1)) { + int8_t dataBits = min(bits, static_cast(m_dataBits - 1 - m_rxCurBit)); + m_rxCurBit += dataBits; + bits -= dataBits; + m_rxCurByte >>= dataBits; + if (level) { m_rxCurByte |= (BYTE_ALL_BITS_SET << (8 - dataBits)); } + continue; + } + // parity bit + if (m_parityMode && m_rxCurBit == (m_dataBits - 1)) { + ++m_rxCurBit; + --bits; + m_rxCurParity = level; + continue; + } + // stop bits + if (m_rxCurBit < (m_pduBits - m_stopBits - 1)) { + ++m_rxCurBit; + --bits; + continue; + } + if (m_rxCurBit == (m_pduBits - m_stopBits - 1)) { + // Store the received value in the buffer unless we have an overflow + // if not high stop bit level, discard word + if (level) + { + m_rxCurByte >>= (sizeof(uint8_t) * 8 - m_dataBits); + if (!m_buffer->push(m_rxCurByte)) { + m_overflow = true; + } + else { + if (m_parityBuffer) + { + if (m_rxCurParity) { + m_parityBuffer->pushpeek() |= m_parityInPos; + } + else { + m_parityBuffer->pushpeek() &= ~m_parityInPos; + } + m_parityInPos <<= 1; + if (!m_parityInPos) + { + m_parityBuffer->push(); + m_parityInPos = 1; + } + } + } + } + m_rxCurBit = m_pduBits; + // reset to 0 is important for masked bit logic + m_rxCurByte = 0; + m_rxCurParity = false; + break; + } + break; + } +} + +void ICACHE_RAM_ATTR SoftwareSerial::rxBitISR(SoftwareSerial * self) { + uint32_t curCycle = ESP.getCycleCount(); + bool level = digitalRead(self->m_rxPin); + + // Store level and cycle in the buffer unless we have an overflow + // cycle's LSB is repurposed for the level bit + if (!self->m_isrBuffer->push((curCycle | 1U) ^ !level)) self->m_isrOverflow.store(true); +} + +void ICACHE_RAM_ATTR SoftwareSerial::rxBitSyncISR(SoftwareSerial * self) { + uint32_t start = ESP.getCycleCount(); + uint32_t wait = self->m_bitCycles - 172U; + + bool level = self->m_invert; + // Store level and cycle in the buffer unless we have an overflow + // cycle's LSB is repurposed for the level bit + if (!self->m_isrBuffer->push(((start + wait) | 1U) ^ !level)) self->m_isrOverflow.store(true); + + for (uint32_t i = 0; i < self->m_pduBits; ++i) { + while (ESP.getCycleCount() - start < wait) {}; + wait += self->m_bitCycles; + + // Store level and cycle in the buffer unless we have an overflow + // cycle's LSB is repurposed for the level bit + if (digitalRead(self->m_rxPin) != level) + { + if (!self->m_isrBuffer->push(((start + wait) | 1U) ^ level)) self->m_isrOverflow.store(true); + level = !level; + } + } +} + +void SoftwareSerial::onReceive(Delegate handler) { + receiveHandler = handler; +} + +void SoftwareSerial::perform_work() { + if (!m_rxValid) { return; } + rxBits(); + if (receiveHandler) { + int avail = m_buffer->available(); + if (avail) { receiveHandler(avail); } + } +} diff --git a/lib/EspSoftwareSerial/src/SoftwareSerial.h b/lib/EspSoftwareSerial/src/SoftwareSerial.h new file mode 100644 index 00000000..371e3731 --- /dev/null +++ b/lib/EspSoftwareSerial/src/SoftwareSerial.h @@ -0,0 +1,255 @@ +/* +SoftwareSerial.h + +SoftwareSerial.cpp - Implementation of the Arduino software serial for ESP8266/ESP32. +Copyright (c) 2015-2016 Peter Lerup. All rights reserved. +Copyright (c) 2018-2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#ifndef __SoftwareSerial_h +#define __SoftwareSerial_h + +#include "circular_queue/circular_queue.h" +#include + +enum SoftwareSerialParity : uint8_t { + SWSERIAL_PARITY_NONE = 000, + SWSERIAL_PARITY_EVEN = 020, + SWSERIAL_PARITY_ODD = 030, + SWSERIAL_PARITY_MARK = 040, + SWSERIAL_PARITY_SPACE = 070, +}; + +enum SoftwareSerialConfig { + SWSERIAL_5N1 = SWSERIAL_PARITY_NONE, + SWSERIAL_6N1, + SWSERIAL_7N1, + SWSERIAL_8N1, + SWSERIAL_5E1 = SWSERIAL_PARITY_EVEN, + SWSERIAL_6E1, + SWSERIAL_7E1, + SWSERIAL_8E1, + SWSERIAL_5O1 = SWSERIAL_PARITY_ODD, + SWSERIAL_6O1, + SWSERIAL_7O1, + SWSERIAL_8O1, + SWSERIAL_5M1 = SWSERIAL_PARITY_MARK, + SWSERIAL_6M1, + SWSERIAL_7M1, + SWSERIAL_8M1, + SWSERIAL_5S1 = SWSERIAL_PARITY_SPACE, + SWSERIAL_6S1, + SWSERIAL_7S1, + SWSERIAL_8S1, + SWSERIAL_5N2 = 0200 | SWSERIAL_PARITY_NONE, + SWSERIAL_6N2, + SWSERIAL_7N2, + SWSERIAL_8N2, + SWSERIAL_5E2 = 0200 | SWSERIAL_PARITY_EVEN, + SWSERIAL_6E2, + SWSERIAL_7E2, + SWSERIAL_8E2, + SWSERIAL_5O2 = 0200 | SWSERIAL_PARITY_ODD, + SWSERIAL_6O2, + SWSERIAL_7O2, + SWSERIAL_8O2, + SWSERIAL_5M2 = 0200 | SWSERIAL_PARITY_MARK, + SWSERIAL_6M2, + SWSERIAL_7M2, + SWSERIAL_8M2, + SWSERIAL_5S2 = 0200 | SWSERIAL_PARITY_SPACE, + SWSERIAL_6S2, + SWSERIAL_7S2, + SWSERIAL_8S2, +}; + +/// This class is compatible with the corresponding AVR one, however, +/// the constructor takes no arguments, for compatibility with the +/// HardwareSerial class. +/// Instead, the begin() function handles pin assignments and logic inversion. +/// It also has optional input buffer capacity arguments for byte buffer and ISR bit buffer. +/// Bitrates up to at least 115200 can be used. +class SoftwareSerial : public Stream { +public: + SoftwareSerial(); + /// Ctor to set defaults for pins. + /// @param rxPin the GPIO pin used for RX + /// @param txPin -1 for onewire protocol, GPIO pin used for twowire TX + SoftwareSerial(int8_t rxPin, int8_t txPin = -1, bool invert = false); + SoftwareSerial(const SoftwareSerial&) = delete; + SoftwareSerial& operator= (const SoftwareSerial&) = delete; + virtual ~SoftwareSerial(); + /// Configure the SoftwareSerial object for use. + /// @param baud the TX/RX bitrate + /// @param config sets databits, parity, and stop bit count + /// @param rxPin -1 or default: either no RX pin, or keeps the rxPin set in the ctor + /// @param txPin -1 or default: either no TX pin (onewire), or keeps the txPin set in the ctor + /// @param invert true: uses invert line level logic + /// @param bufCapacity the capacity for the received bytes buffer + /// @param isrBufCapacity 0: derived from bufCapacity. The capacity of the internal asynchronous + /// bit receive buffer, a suggested size is bufCapacity times the sum of + /// start, data, parity and stop bit count. + void begin(uint32_t baud, SoftwareSerialConfig config, + int8_t rxPin, int8_t txPin, bool invert, + int bufCapacity = 64, int isrBufCapacity = 0); + void begin(uint32_t baud, SoftwareSerialConfig config, + int8_t rxPin, int8_t txPin) { + begin(baud, config, rxPin, txPin, m_invert); + } + void begin(uint32_t baud, SoftwareSerialConfig config, + int8_t rxPin) { + begin(baud, config, rxPin, m_txPin, m_invert); + } + void begin(uint32_t baud, SoftwareSerialConfig config = SWSERIAL_8N1) { + begin(baud, config, m_rxPin, m_txPin, m_invert); + } + + uint32_t baudRate(); + /// Transmit control pin. + void setTransmitEnablePin(int8_t txEnablePin); + /// Enable or disable interrupts during tx. + void enableIntTx(bool on); + + bool overflow(); + + int available() override; + int availableForWrite() { + if (!m_txValid) return 0; + return 1; + } + int peek() override; + int read() override; + /// @returns The verbatim parity bit associated with the last read() or peek() call + bool readParity() + { + return m_lastReadParity; + } + /// @returns The calculated bit for even parity of the parameter byte + static bool parityEven(uint8_t byte) { + byte ^= byte >> 4; + byte &= 0xf; + return (0x6996 >> byte) & 1; + } + /// @returns The calculated bit for odd parity of the parameter byte + static bool parityOdd(uint8_t byte) { + byte ^= byte >> 4; + byte &= 0xf; + return (0x9669 >> byte) & 1; + } + /// The read(buffer, size) functions are non-blocking, the same as readBytes but without timeout + size_t read(uint8_t* buffer, size_t size); + /// The read(buffer, size) functions are non-blocking, the same as readBytes but without timeout + size_t read(char* buffer, size_t size) { + return read(reinterpret_cast(buffer), size); + } + /// @returns The number of bytes read into buffer, up to size. Times out if the limit set through + /// Stream::setTimeout() is reached. + size_t readBytes(uint8_t* buffer, size_t size) override; + /// @returns The number of bytes read into buffer, up to size. Times out if the limit set through + /// Stream::setTimeout() is reached. + size_t readBytes(char* buffer, size_t size) override { + return readBytes(reinterpret_cast(buffer), size); + } + void flush() override; + size_t write(uint8_t byte) override; + size_t write(uint8_t byte, SoftwareSerialParity parity); + size_t write(const uint8_t* buffer, size_t size) override; + size_t write(const char* buffer, size_t size) { + return write(reinterpret_cast(buffer), size); + } + size_t write(const uint8_t* buffer, size_t size, SoftwareSerialParity parity); + size_t write(const char* buffer, size_t size, SoftwareSerialParity parity) { + return write(reinterpret_cast(buffer), size, parity); + } + operator bool() const { return m_rxValid || m_txValid; } + + /// Disable or enable interrupts on the rx pin. + void enableRx(bool on); + /// One wire control. + void enableTx(bool on); + + // AVR compatibility methods. + bool listen() { enableRx(true); return true; } + void end(); + bool isListening() { return m_rxEnabled; } + bool stopListening() { enableRx(false); return true; } + + /// Set an event handler for received data. + void onReceive(Delegate handler); + + /// Run the internal processing and event engine. Can be iteratively called + /// from loop, or otherwise scheduled. + void perform_work(); + + using Print::write; + +private: + // If sync is false, it's legal to exceed the deadline, for instance, + // by enabling interrupts. + void preciseDelay(bool sync); + // If withStopBit is set, either cycle contains a stop bit. + // If dutyCycle == 0, the level is not forced to HIGH. + // If offCycle == 0, the level remains unchanged from dutyCycle. + void writePeriod( + uint32_t dutyCycle, uint32_t offCycle, bool withStopBit); + bool isValidGPIOpin(int8_t pin); + /* check m_rxValid that calling is safe */ + void rxBits(); + void rxBits(const uint32_t& isrCycle); + + static void rxBitISR(SoftwareSerial* self); + static void rxBitSyncISR(SoftwareSerial* self); + + // Member variables + int8_t m_rxPin = -1; + int8_t m_txPin = -1; + int8_t m_txEnablePin = -1; + uint8_t m_dataBits; + bool m_oneWire; + bool m_rxValid = false; + bool m_rxEnabled = false; + bool m_txValid = false; + bool m_txEnableValid = false; + bool m_invert; + /// PDU bits include data, parity and stop bits; the start bit is not counted. + uint8_t m_pduBits; + bool m_intTxEnabled; + SoftwareSerialParity m_parityMode; + uint8_t m_stopBits; + bool m_lastReadParity; + bool m_overflow = false; + uint32_t m_bitCycles; + uint8_t m_parityInPos; + uint8_t m_parityOutPos; + int8_t m_rxCurBit; // 0 thru (m_pduBits - m_stopBits - 1): data/parity bits. -1: start bit. (m_pduBits - 1): stop bit. + uint8_t m_rxCurByte = 0; + std::unique_ptr > m_buffer; + std::unique_ptr > m_parityBuffer; + uint32_t m_periodStart; + uint32_t m_periodDuration; + uint32_t m_savedPS = 0; + // the ISR stores the relative bit times in the buffer. The inversion corrected level is used as sign bit (2's complement): + // 1 = positive including 0, 0 = negative. + std::unique_ptr > m_isrBuffer; + std::atomic m_isrOverflow; + uint32_t m_isrLastCycle; + bool m_rxCurParity = false; + Delegate receiveHandler; +}; + +#endif // __SoftwareSerial_h diff --git a/lib/EspSoftwareSerial/src/circular_queue/Delegate.h b/lib/EspSoftwareSerial/src/circular_queue/Delegate.h new file mode 100644 index 00000000..bd19c66e --- /dev/null +++ b/lib/EspSoftwareSerial/src/circular_queue/Delegate.h @@ -0,0 +1,1786 @@ +/* +Delegate.h - An efficient interchangeable C function ptr and C++ std::function delegate +Copyright (c) 2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __Delegate_h +#define __Delegate_h + +#if defined(ESP8266) +#include +#elif defined(ESP32) +#include +#else +#define ICACHE_RAM_ATTR +#define IRAM_ATTR +#endif + +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) +#include +#include +#else +#include "circular_queue/ghostl.h" +#endif + +namespace detail +{ + template + static R IRAM_ATTR vPtrToFunPtrExec(void* fn, P... args) + { + using target_type = R(P...); + return reinterpret_cast(fn)(std::forward(args...)); + } + +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + template + class DelegatePImpl { + public: + using target_type = R(P...); + protected: + using FunPtr = target_type*; + using FunAPtr = R(*)(A, P...); + using FunVPPtr = R(*)(void*, P...); + using FunctionType = std::function; + public: + DelegatePImpl() + { + kind = FP; + fn = nullptr; + } + + DelegatePImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + ~DelegatePImpl() + { + if (FUNC == kind) + functional.~FunctionType(); + else if (FPA == kind) + obj.~A(); + } + + DelegatePImpl(const DelegatePImpl& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(del.functional); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + new (&obj) A(del.obj); + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(DelegatePImpl&& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(std::move(del.functional)); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + new (&obj) A(std::move(del.obj)); + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(FunAPtr fnA, const A& obj) + { + kind = FPA; + DelegatePImpl::fnA = fnA; + new (&this->obj) A(obj); + } + + DelegatePImpl(FunAPtr fnA, A&& obj) + { + kind = FPA; + DelegatePImpl::fnA = fnA; + new (&this->obj) A(std::move(obj)); + } + + DelegatePImpl(FunPtr fn) + { + kind = FP; + DelegatePImpl::fn = fn; + } + + template DelegatePImpl(F functional) + { + kind = FUNC; + new (&this->functional) FunctionType(std::forward(functional)); + } + + DelegatePImpl& operator=(const DelegatePImpl& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + if (FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + else if (FPA == del.kind) + { + new (&obj) A; + } + kind = del.kind; + } + if (FUNC == del.kind) + { + functional = del.functional; + } + else if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(DelegatePImpl&& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + if (FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + else if (FPA == del.kind) + { + new (&obj) A; + } + kind = del.kind; + } + if (FUNC == del.kind) + { + functional = std::move(del.functional); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(FunPtr fn) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + kind = FP; + this->fn = fn; + return *this; + } + + DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else if (FPA == kind) + { + return fnA; + } + else + { + return functional ? true : false; + } + } + + static R IRAM_ATTR vPtrToFunAPtrExec(void* self, P... args) + { + return static_cast(self)->fnA( + static_cast(self)->obj, + std::forward(args...)); + }; + + operator FunVPPtr() const + { + if (FP == kind) + { + return vPtrToFunPtrExec; + } + else if (FPA == kind) + { + return vPtrToFunAPtrExec; + } + else + { + return [](void* self, P... args) -> R + { + return static_cast(self)->functional(std::forward(args...)); + }; + } + } + + void* arg() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else + { + return const_cast(this); + } + } + + operator FunctionType() const + { + if (FP == kind) + { + return fn; + } + else if (FPA == kind) + { + return [this](P... args) { return fnA(obj, std::forward(args...)); }; + } + else + { + return functional; + } + } + + R IRAM_ATTR operator()(P... args) const + { + if (FP == kind) + { + return fn(std::forward(args...)); + } + else if (FPA == kind) + { + return fnA(obj, std::forward(args...)); + } + else + { + return functional(std::forward(args...)); + } + } + + protected: + enum { FUNC, FP, FPA } kind; + union { + FunctionType functional; + FunPtr fn; + struct { + FunAPtr fnA; + A obj; + }; + }; + }; +#else + template + class DelegatePImpl { + public: + using target_type = R(P...); + protected: + using FunPtr = target_type*; + using FunAPtr = R(*)(A, P...); + using FunVPPtr = R(*)(void*, P...); + public: + DelegatePImpl() + { + kind = FP; + fn = nullptr; + } + + DelegatePImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + DelegatePImpl(const DelegatePImpl& del) + { + kind = del.kind; + if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(DelegatePImpl&& del) + { + kind = del.kind; + if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(FunAPtr fnA, const A& obj) + { + kind = FPA; + DelegatePImpl::fnA = fnA; + this->obj = obj; + } + + DelegatePImpl(FunAPtr fnA, A&& obj) + { + kind = FPA; + DelegatePImpl::fnA = fnA; + this->obj = std::move(obj); + } + + DelegatePImpl(FunPtr fn) + { + kind = FP; + DelegatePImpl::fn = fn; + } + + template DelegatePImpl(F fn) + { + kind = FP; + DelegatePImpl::fn = std::forward(fn); + } + + DelegatePImpl& operator=(const DelegatePImpl& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FPA == kind) + { + obj = {}; + } + kind = del.kind; + } + if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(DelegatePImpl&& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FPA == kind) + { + obj = {}; + } + kind = del.kind; + } + if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(FunPtr fn) + { + if (FPA == kind) + { + obj = {}; + } + kind = FP; + this->fn = fn; + return *this; + } + + DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FPA == kind) + { + obj = {}; + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else + { + return fnA; + } + } + + static R IRAM_ATTR vPtrToFunAPtrExec(void* self, P... args) + { + return static_cast(self)->fnA( + static_cast(self)->obj, + std::forward(args...)); + }; + + operator FunVPPtr() const + { + if (FP == kind) + { + return vPtrToFunPtrExec; + } + else + { + return vPtrToFunAPtrExec; + } + } + + void* arg() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else + { + return const_cast(this); + } + } + + R IRAM_ATTR operator()(P... args) const + { + if (FP == kind) + { + return fn(std::forward(args...)); + } + else + { + return fnA(obj, std::forward(args...)); + } + } + + protected: + enum { FP, FPA } kind; + union { + FunPtr fn; + FunAPtr fnA; + }; + A obj; + }; +#endif + +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + template + class DelegatePImpl { + public: + using target_type = R(P...); + protected: + using FunPtr = target_type*; + using FunctionType = std::function; + using FunVPPtr = R(*)(void*, P...); + public: + DelegatePImpl() + { + kind = FP; + fn = nullptr; + } + + DelegatePImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + ~DelegatePImpl() + { + if (FUNC == kind) + functional.~FunctionType(); + } + + DelegatePImpl(const DelegatePImpl& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(del.functional); + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(DelegatePImpl&& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(std::move(del.functional)); + } + else + { + fn = del.fn; + } + } + + DelegatePImpl(FunPtr fn) + { + kind = FP; + DelegatePImpl::fn = fn; + } + + template DelegatePImpl(F functional) + { + kind = FUNC; + new (&this->functional) FunctionType(std::forward(functional)); + } + + DelegatePImpl& operator=(const DelegatePImpl& del) + { + if (this == &del) return *this; + if (FUNC == kind && FUNC != del.kind) + { + functional.~FunctionType(); + } + else if (FUNC != kind && FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + kind = del.kind; + if (FUNC == del.kind) + { + functional = del.functional; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(DelegatePImpl&& del) + { + if (this == &del) return *this; + if (FUNC == kind && FUNC != del.kind) + { + functional.~FunctionType(); + } + else if (FUNC != kind && FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + kind = del.kind; + if (FUNC == del.kind) + { + functional = std::move(del.functional); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegatePImpl& operator=(FunPtr fn) + { + if (FUNC == kind) + { + functional.~FunctionType(); + kind = FP; + } + DelegatePImpl::fn = fn; + return *this; + } + + DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else + { + return functional ? true : false; + } + } + + operator FunVPPtr() const + { + if (FP == kind) + { + return vPtrToFunPtrExec; + } + else + { + return [](void* self, P... args) -> R + { + return static_cast(self)->functional(std::forward(args...)); + }; + } + } + + void* arg() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else + { + return const_cast(this); + } + } + + operator FunctionType() const + { + if (FP == kind) + { + return fn; + } + else + { + return functional; + } + } + + R IRAM_ATTR operator()(P... args) const + { + if (FP == kind) + { + return fn(std::forward(args...)); + } + else + { + return functional(std::forward(args...)); + } + } + + protected: + enum { FUNC, FP } kind; + union { + FunctionType functional; + FunPtr fn; + }; + }; +#else + template + class DelegatePImpl { + public: + using target_type = R(P...); + protected: + using FunPtr = target_type*; + using FunVPPtr = R(*)(void*, P...); + public: + DelegatePImpl() + { + fn = nullptr; + } + + DelegatePImpl(std::nullptr_t) + { + fn = nullptr; + } + + DelegatePImpl(const DelegatePImpl& del) + { + fn = del.fn; + } + + DelegatePImpl(DelegatePImpl&& del) + { + fn = std::move(del.fn); + } + + DelegatePImpl(FunPtr fn) + { + DelegatePImpl::fn = fn; + } + + template DelegatePImpl(F fn) + { + DelegatePImpl::fn = std::forward(fn); + } + + DelegatePImpl& operator=(const DelegatePImpl& del) + { + if (this == &del) return *this; + fn = del.fn; + return *this; + } + + DelegatePImpl& operator=(DelegatePImpl&& del) + { + if (this == &del) return *this; + fn = std::move(del.fn); + return *this; + } + + DelegatePImpl& operator=(FunPtr fn) + { + DelegatePImpl::fn = fn; + return *this; + } + + DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) + { + fn = nullptr; + return *this; + } + + operator bool() const + { + return fn; + } + + operator FunVPPtr() const + { + return vPtrToFunPtrExec; + } + + void* arg() const + { + return reinterpret_cast(fn); + } + + R IRAM_ATTR operator()(P... args) const + { + return fn(std::forward(args...)); + } + + protected: + FunPtr fn; + }; +#endif + +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + template + class DelegateImpl { + public: + using target_type = R(); + protected: + using FunPtr = target_type*; + using FunAPtr = R(*)(A); + using FunctionType = std::function; + using FunVPPtr = R(*)(void*); + public: + DelegateImpl() + { + kind = FP; + fn = nullptr; + } + + DelegateImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + ~DelegateImpl() + { + if (FUNC == kind) + functional.~FunctionType(); + else if (FPA == kind) + obj.~A(); + } + + DelegateImpl(const DelegateImpl& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(del.functional); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + new (&obj) A(del.obj); + } + else + { + fn = del.fn; + } + } + + DelegateImpl(DelegateImpl&& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(std::move(del.functional)); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + new (&obj) A(std::move(del.obj)); + } + else + { + fn = del.fn; + } + } + + DelegateImpl(FunAPtr fnA, const A& obj) + { + kind = FPA; + DelegateImpl::fnA = fnA; + new (&this->obj) A(obj); + } + + DelegateImpl(FunAPtr fnA, A&& obj) + { + kind = FPA; + DelegateImpl::fnA = fnA; + new (&this->obj) A(std::move(obj)); + } + + DelegateImpl(FunPtr fn) + { + kind = FP; + DelegateImpl::fn = fn; + } + + template DelegateImpl(F functional) + { + kind = FUNC; + new (&this->functional) FunctionType(std::forward(functional)); + } + + DelegateImpl& operator=(const DelegateImpl& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + if (FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + else if (FPA == del.kind) + { + new (&obj) A; + } + kind = del.kind; + } + if (FUNC == del.kind) + { + functional = del.functional; + } + else if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(DelegateImpl&& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + if (FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + else if (FPA == del.kind) + { + new (&obj) A; + } + kind = del.kind; + } + if (FUNC == del.kind) + { + functional = std::move(del.functional); + } + else if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(FunPtr fn) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + kind = FP; + this->fn = fn; + return *this; + } + + DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + else if (FPA == kind) + { + obj.~A(); + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else if (FPA == kind) + { + return fnA; + } + else + { + return functional ? true : false; + } + } + + static R IRAM_ATTR vPtrToFunAPtrExec(void* self) + { + return static_cast(self)->fnA( + static_cast(self)->obj); + }; + + operator FunVPPtr() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else if (FPA == kind) + { + return vPtrToFunAPtrExec; + } + else + { + return [](void* self) -> R + { + return static_cast(self)->functional(); + }; + } + } + + void* arg() const + { + if (FP == kind) + { + return nullptr; + } + else + { + return const_cast(this); + } + } + + operator FunctionType() const + { + if (FP == kind) + { + return fn; + } + else if (FPA == kind) + { + return [this]() { return fnA(obj); }; + } + else + { + return functional; + } + } + + R IRAM_ATTR operator()() const + { + if (FP == kind) + { + return fn(); + } + else if (FPA == kind) + { + return fnA(obj); + } + else + { + return functional(); + } + } + + protected: + enum { FUNC, FP, FPA } kind; + union { + FunctionType functional; + FunPtr fn; + struct { + FunAPtr fnA; + A obj; + }; + }; + }; +#else + template + class DelegateImpl { + public: + using target_type = R(); + protected: + using FunPtr = target_type*; + using FunAPtr = R(*)(A); + using FunVPPtr = R(*)(void*); + public: + DelegateImpl() + { + kind = FP; + fn = nullptr; + } + + DelegateImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + DelegateImpl(const DelegateImpl& del) + { + kind = del.kind; + if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + } + + DelegateImpl(DelegateImpl&& del) + { + kind = del.kind; + if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + } + + DelegateImpl(FunAPtr fnA, const A& obj) + { + kind = FPA; + DelegateImpl::fnA = fnA; + this->obj = obj; + } + + DelegateImpl(FunAPtr fnA, A&& obj) + { + kind = FPA; + DelegateImpl::fnA = fnA; + this->obj = std::move(obj); + } + + DelegateImpl(FunPtr fn) + { + kind = FP; + DelegateImpl::fn = fn; + } + + template DelegateImpl(F fn) + { + kind = FP; + DelegateImpl::fn = std::forward(fn); + } + + DelegateImpl& operator=(const DelegateImpl& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FPA == kind) + { + obj = {}; + } + kind = del.kind; + } + if (FPA == del.kind) + { + fnA = del.fnA; + obj = del.obj; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(DelegateImpl&& del) + { + if (this == &del) return *this; + if (kind != del.kind) + { + if (FPA == kind) + { + obj = {}; + } + kind = del.kind; + } + if (FPA == del.kind) + { + fnA = del.fnA; + obj = std::move(del.obj); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(FunPtr fn) + { + if (FPA == kind) + { + obj = {}; + } + kind = FP; + this->fn = fn; + return *this; + } + + DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FPA == kind) + { + obj = {}; + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else + { + return fnA; + } + } + + static R IRAM_ATTR vPtrToFunAPtrExec(void* self) + { + return static_cast(self)->fnA( + static_cast(self)->obj); + }; + + operator FunVPPtr() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else + { + return vPtrToFunAPtrExec; + } + } + + void* arg() const + { + if (FP == kind) + { + return nullptr; + } + else + { + return const_cast(this); + } + } + + R IRAM_ATTR operator()() const + { + if (FP == kind) + { + return fn(); + } + else + { + return fnA(obj); + } + } + + protected: + enum { FP, FPA } kind; + union { + FunPtr fn; + FunAPtr fnA; + }; + A obj; + }; +#endif + +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + template + class DelegateImpl { + public: + using target_type = R(); + protected: + using FunPtr = target_type*; + using FunctionType = std::function; + using FunVPPtr = R(*)(void*); + public: + DelegateImpl() + { + kind = FP; + fn = nullptr; + } + + DelegateImpl(std::nullptr_t) + { + kind = FP; + fn = nullptr; + } + + ~DelegateImpl() + { + if (FUNC == kind) + functional.~FunctionType(); + } + + DelegateImpl(const DelegateImpl& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(del.functional); + } + else + { + fn = del.fn; + } + } + + DelegateImpl(DelegateImpl&& del) + { + kind = del.kind; + if (FUNC == del.kind) + { + new (&functional) FunctionType(std::move(del.functional)); + } + else + { + fn = del.fn; + } + } + + DelegateImpl(FunPtr fn) + { + kind = FP; + DelegateImpl::fn = fn; + } + + template DelegateImpl(F functional) + { + kind = FUNC; + new (&this->functional) FunctionType(std::forward(functional)); + } + + DelegateImpl& operator=(const DelegateImpl& del) + { + if (this == &del) return *this; + if (FUNC == kind && FUNC != del.kind) + { + functional.~FunctionType(); + } + else if (FUNC != kind && FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + kind = del.kind; + if (FUNC == del.kind) + { + functional = del.functional; + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(DelegateImpl&& del) + { + if (this == &del) return *this; + if (FUNC == kind && FUNC != del.kind) + { + functional.~FunctionType(); + } + else if (FUNC != kind && FUNC == del.kind) + { + new (&this->functional) FunctionType(); + } + kind = del.kind; + if (FUNC == del.kind) + { + functional = std::move(del.functional); + } + else + { + fn = del.fn; + } + return *this; + } + + DelegateImpl& operator=(FunPtr fn) + { + if (FUNC == kind) + { + functional.~FunctionType(); + kind = FP; + } + DelegateImpl::fn = fn; + return *this; + } + + DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) + { + if (FUNC == kind) + { + functional.~FunctionType(); + } + kind = FP; + fn = nullptr; + return *this; + } + + operator bool() const + { + if (FP == kind) + { + return fn; + } + else + { + return functional ? true : false; + } + } + + operator FunVPPtr() const + { + if (FP == kind) + { + return reinterpret_cast(fn); + } + else + { + return [](void* self) -> R + { + return static_cast(self)->functional(); + }; + } + } + + void* arg() const + { + if (FP == kind) + { + return nullptr; + } + else + { + return const_cast(this); + } + } + + operator FunctionType() const + { + if (FP == kind) + { + return fn; + } + else + { + return functional; + } + } + + R IRAM_ATTR operator()() const + { + if (FP == kind) + { + return fn(); + } + else + { + return functional(); + } + } + + protected: + enum { FUNC, FP } kind; + union { + FunctionType functional; + FunPtr fn; + }; + }; +#else + template + class DelegateImpl { + public: + using target_type = R(); + protected: + using FunPtr = target_type*; + using FunVPPtr = R(*)(void*); + public: + DelegateImpl() + { + fn = nullptr; + } + + DelegateImpl(std::nullptr_t) + { + fn = nullptr; + } + + DelegateImpl(const DelegateImpl& del) + { + fn = del.fn; + } + + DelegateImpl(DelegateImpl&& del) + { + fn = std::move(del.fn); + } + + DelegateImpl(FunPtr fn) + { + DelegateImpl::fn = fn; + } + + template DelegateImpl(F fn) + { + DelegateImpl::fn = std::forward(fn); + } + + DelegateImpl& operator=(const DelegateImpl& del) + { + if (this == &del) return *this; + fn = del.fn; + return *this; + } + + DelegateImpl& operator=(DelegateImpl&& del) + { + if (this == &del) return *this; + fn = std::move(del.fn); + return *this; + } + + DelegateImpl& operator=(FunPtr fn) + { + DelegateImpl::fn = fn; + return *this; + } + + DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) + { + fn = nullptr; + return *this; + } + + operator bool() const + { + return fn; + } + + operator FunVPPtr() const + { + return reinterpret_cast(fn); + } + + void* arg() const + { + return nullptr; + } + + R IRAM_ATTR operator()() const + { + return fn(); + } + + protected: + FunPtr fn; + }; +#endif + + template + class Delegate : private detail::DelegatePImpl + { + private: + using typename detail::DelegatePImpl::FunVPPtr; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using typename detail::DelegatePImpl::FunctionType; +#endif + public: + using detail::DelegatePImpl::target_type; + using detail::DelegatePImpl::DelegatePImpl; + using detail::DelegatePImpl::operator=; + using detail::DelegatePImpl::operator bool; + using detail::DelegatePImpl::operator FunVPPtr; + using detail::DelegatePImpl::arg; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using detail::DelegatePImpl::operator FunctionType; +#endif + using detail::DelegatePImpl::operator(); + }; + + template + class Delegate : private detail::DelegatePImpl + { + private: + using typename detail::DelegatePImpl::FunVPPtr; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using typename detail::DelegatePImpl::FunctionType; +#endif + public: + using detail::DelegatePImpl::target_type; + using detail::DelegatePImpl::DelegatePImpl; + using detail::DelegatePImpl::operator=; + using detail::DelegatePImpl::operator bool; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using detail::DelegatePImpl::operator FunctionType; +#endif + using detail::DelegatePImpl::operator(); + operator FunVPPtr() const + { + if (detail::DelegatePImpl::FPA == detail::DelegatePImpl::kind) + { + return reinterpret_cast(detail::DelegatePImpl::fnA); + } + else + { + return detail::DelegatePImpl::operator FunVPPtr(); + } + } + void* arg() const + { + if (detail::DelegatePImpl::FPA == detail::DelegatePImpl::kind) + { + return detail::DelegatePImpl::obj; + } + else + { + return detail::DelegatePImpl::arg(); + } + } + }; + + template + class Delegate : private detail::DelegateImpl + { + private: + using typename detail::DelegateImpl::FunVPPtr; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using typename detail::DelegateImpl::FunctionType; +#endif + public: + using detail::DelegateImpl::target_type; + using detail::DelegateImpl::DelegateImpl; + using detail::DelegateImpl::operator=; + using detail::DelegateImpl::operator bool; + using detail::DelegateImpl::operator FunVPPtr; + using detail::DelegateImpl::arg; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using detail::DelegateImpl::operator FunctionType; +#endif + using detail::DelegateImpl::operator(); + }; + + template + class Delegate : private detail::DelegateImpl + { + private: + using typename detail::DelegateImpl::FunVPPtr; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using typename detail::DelegateImpl::FunctionType; +#endif + public: + using detail::DelegateImpl::target_type; + using detail::DelegateImpl::DelegateImpl; + using detail::DelegateImpl::operator=; + using detail::DelegateImpl::operator bool; +#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) + using detail::DelegateImpl::operator FunctionType; +#endif + using detail::DelegateImpl::operator(); + operator FunVPPtr() const + { + if (detail::DelegateImpl::FPA == detail::DelegateImpl::kind) + { + return reinterpret_cast(detail::DelegateImpl::fnA); + } + else + { + return detail::DelegateImpl::operator FunVPPtr(); + } + } + void* arg() const + { + if (detail::DelegateImpl::FPA == detail::DelegateImpl::kind) + { + return detail::DelegateImpl::obj; + } + else + { + return detail::DelegateImpl::arg(); + } + } + }; + +} + +template class Delegate; +template class Delegate : public detail::Delegate +{ +public: + using detail::Delegate::Delegate; +}; +template class Delegate : public detail::Delegate +{ +public: + using detail::Delegate::Delegate; +}; + +#endif // __Delegate_h diff --git a/lib/EspSoftwareSerial/src/circular_queue/MultiDelegate.h b/lib/EspSoftwareSerial/src/circular_queue/MultiDelegate.h new file mode 100644 index 00000000..1fd4188d --- /dev/null +++ b/lib/EspSoftwareSerial/src/circular_queue/MultiDelegate.h @@ -0,0 +1,503 @@ +/* +MultiDelegate.h - A queue or event multiplexer based on the efficient Delegate +class +Copyright (c) 2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __MULTIDELEGATE_H +#define __MULTIDELEGATE_H + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +#include +#else +#include "circular_queue/ghostl.h" +#endif + +#if defined(ESP8266) +#include +using esp8266::InterruptLock; +#elif defined(ARDUINO) +class InterruptLock { +public: + InterruptLock() { + noInterrupts(); + } + ~InterruptLock() { + interrupts(); + } +}; +#else +#include +#endif + +namespace detail +{ + namespace + { + template< typename Delegate, typename R, bool ISQUEUE = false, typename... P> + struct CallP + { + static R execute(Delegate& del, P... args) + { + return del(std::forward(args...)) ? !ISQUEUE : ISQUEUE; + } + }; + + template< typename Delegate, bool ISQUEUE, typename... P> + struct CallP + { + static bool execute(Delegate& del, P... args) + { + del(std::forward(args...)); + return !ISQUEUE; + } + }; + + template< typename Delegate, typename R, bool ISQUEUE = false> + struct Call + { + static R execute(Delegate& del) + { + return del() ? !ISQUEUE : ISQUEUE; + } + }; + + template< typename Delegate, bool ISQUEUE> + struct Call + { + static bool execute(Delegate& del) + { + del(); + return !ISQUEUE; + } + }; + }; + + template< typename Delegate, typename R = void, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32, typename... P> + class MultiDelegatePImpl + { + public: + MultiDelegatePImpl() = default; + ~MultiDelegatePImpl() + { + *this = nullptr; + } + + MultiDelegatePImpl(const MultiDelegatePImpl&) = delete; + MultiDelegatePImpl& operator=(const MultiDelegatePImpl&) = delete; + + MultiDelegatePImpl(MultiDelegatePImpl&& md) + { + first = md.first; + last = md.last; + unused = md.unused; + nodeCount = md.nodeCount; + md.first = nullptr; + md.last = nullptr; + md.unused = nullptr; + md.nodeCount = 0; + } + + MultiDelegatePImpl(const Delegate& del) + { + add(del); + } + + MultiDelegatePImpl(Delegate&& del) + { + add(std::move(del)); + } + + MultiDelegatePImpl& operator=(MultiDelegatePImpl&& md) + { + first = md.first; + last = md.last; + unused = md.unused; + nodeCount = md.nodeCount; + md.first = nullptr; + md.last = nullptr; + md.unused = nullptr; + md.nodeCount = 0; + return *this; + } + + MultiDelegatePImpl& operator=(std::nullptr_t) + { + if (last) + last->mNext = unused; + if (first) + unused = first; + while (unused) + { + auto to_delete = unused; + unused = unused->mNext; + delete(to_delete); + } + return *this; + } + + MultiDelegatePImpl& operator+=(const Delegate& del) + { + add(del); + return *this; + } + + MultiDelegatePImpl& operator+=(Delegate&& del) + { + add(std::move(del)); + return *this; + } + + protected: + struct Node_t + { + ~Node_t() + { + mDelegate = nullptr; // special overload in Delegate + } + Node_t* mNext = nullptr; + Delegate mDelegate; + }; + + Node_t* first = nullptr; + Node_t* last = nullptr; + Node_t* unused = nullptr; + uint32_t nodeCount = 0; + + // Returns a pointer to an unused Node_t, + // or if none are available allocates a new one, + // or nullptr if limit is reached + Node_t* IRAM_ATTR get_node_unsafe() + { + Node_t* result = nullptr; + // try to get an item from unused items list + if (unused) + { + result = unused; + unused = unused->mNext; + } + // if no unused items, and count not too high, allocate a new one + else if (nodeCount < QUEUE_CAPACITY) + { +#if defined(ESP8266) || defined(ESP32) + result = new (std::nothrow) Node_t; +#else + result = new Node_t; +#endif + if (result) + ++nodeCount; + } + return result; + } + + void recycle_node_unsafe(Node_t* node) + { + node->mDelegate = nullptr; // special overload in Delegate + node->mNext = unused; + unused = node; + } + +#ifndef ARDUINO + std::mutex mutex_unused; +#endif + public: + const Delegate* IRAM_ATTR add(const Delegate& del) + { + return add(Delegate(del)); + } + + const Delegate* IRAM_ATTR add(Delegate&& del) + { + if (!del) + return nullptr; + +#ifdef ARDUINO + InterruptLock lockAllInterruptsInThisScope; +#else + std::lock_guard lock(mutex_unused); +#endif + + Node_t* item = ISQUEUE ? get_node_unsafe() : +#if defined(ESP8266) || defined(ESP32) + new (std::nothrow) Node_t; +#else + new Node_t; +#endif + if (!item) + return nullptr; + + item->mDelegate = std::move(del); + item->mNext = nullptr; + + if (last) + last->mNext = item; + else + first = item; + last = item; + + return &item->mDelegate; + } + + bool remove(const Delegate* del) + { + auto current = first; + if (!current) + return false; + + Node_t* prev = nullptr; + do + { + if (del == ¤t->mDelegate) + { + // remove callback from stack +#ifdef ARDUINO + InterruptLock lockAllInterruptsInThisScope; +#else + std::lock_guard lock(mutex_unused); +#endif + + auto to_recycle = current; + + // removing rLast + if (last == current) + last = prev; + + current = current->mNext; + if (prev) + { + prev->mNext = current; + } + else + { + first = current; + } + + if (ISQUEUE) + recycle_node_unsafe(to_recycle); + else + delete to_recycle; + return true; + } + else + { + prev = current; + current = current->mNext; + } + } while (current); + return false; + } + + void operator()(P... args) + { + auto current = first; + if (!current) + return; + + static std::atomic fence(false); + // prevent recursive calls +#if defined(ARDUINO) && !defined(ESP32) + if (fence.load()) return; + fence.store(true); +#else + if (fence.exchange(true)) return; +#endif + + Node_t* prev = nullptr; + // prevent execution of new callbacks during this run + auto stop = last; + + bool done; + do + { + done = current == stop; + if (!CallP::execute(current->mDelegate, args...)) + { + // remove callback from stack +#ifdef ARDUINO + InterruptLock lockAllInterruptsInThisScope; +#else + std::lock_guard lock(mutex_unused); +#endif + + auto to_recycle = current; + + // removing rLast + if (last == current) + last = prev; + + current = current->mNext; + if (prev) + { + prev->mNext = current; + } + else + { + first = current; + } + + if (ISQUEUE) + recycle_node_unsafe(to_recycle); + else + delete to_recycle; + } + else + { + prev = current; + current = current->mNext; + } + +#if defined(ESP8266) || defined(ESP32) + // running callbacks might last too long for watchdog etc. + optimistic_yield(10000); +#endif + } while (current && !done); + + fence.store(false); + } + }; + + template< typename Delegate, typename R = void, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32> + class MultiDelegateImpl : public MultiDelegatePImpl + { + protected: + using typename MultiDelegatePImpl::Node_t; + using MultiDelegatePImpl::first; + using MultiDelegatePImpl::last; + using MultiDelegatePImpl::unused; + using MultiDelegatePImpl::nodeCount; + using MultiDelegatePImpl::recycle_node_unsafe; +#ifndef ARDUINO + using MultiDelegatePImpl::mutex_unused; +#endif + + public: + using MultiDelegatePImpl::MultiDelegatePImpl; + + void operator()() + { + auto current = first; + if (!current) + return; + + static std::atomic fence(false); + // prevent recursive calls +#if defined(ARDUINO) && !defined(ESP32) + if (fence.load()) return; + fence.store(true); +#else + if (fence.exchange(true)) return; +#endif + + Node_t* prev = nullptr; + // prevent execution of new callbacks during this run + auto stop = last; + + bool done; + do + { + done = current == stop; + if (!Call::execute(current->mDelegate)) + { + // remove callback from stack +#ifdef ARDUINO + InterruptLock lockAllInterruptsInThisScope; +#else + std::lock_guard lock(mutex_unused); +#endif + + auto to_recycle = current; + + // removing rLast + if (last == current) + last = prev; + + current = current->mNext; + if (prev) + { + prev->mNext = current; + } + else + { + first = current; + } + + if (ISQUEUE) + recycle_node_unsafe(to_recycle); + else + delete to_recycle; + } + else + { + prev = current; + current = current->mNext; + } + +#if defined(ESP8266) || defined(ESP32) + // running callbacks might last too long for watchdog etc. + optimistic_yield(10000); +#endif + } while (current && !done); + + fence.store(false); + } + }; + + template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY, typename... P> class MultiDelegate; + + template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY, typename... P> + class MultiDelegate : public MultiDelegatePImpl + { + public: + using MultiDelegatePImpl::MultiDelegatePImpl; + }; + + template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY> + class MultiDelegate : public MultiDelegateImpl + { + public: + using MultiDelegateImpl::MultiDelegateImpl; + }; +}; + +/** +The MultiDelegate class template can be specialized to either a queue or an event multiplexer. +It is designed to be used with Delegate, the efficient runtime wrapper for C function ptr and C++ std::function. +@tparam Delegate specifies the concrete type that MultiDelegate bases the queue or event multiplexer on. +@tparam ISQUEUE modifies the generated MultiDelegate class in subtle ways. In queue mode (ISQUEUE == true), + the value of QUEUE_CAPACITY enforces the maximum number of simultaneous items the queue can contain. + This is exploited to minimize the use of new and delete by reusing already allocated items, thus + reducing heap fragmentation. In event multiplexer mode (ISQUEUE = false), new and delete are + used for allocation of the event handler items. + If the result type of the function call operator of Delegate is void, calling a MultiDelegate queue + removes each item after calling it; a Multidelegate event multiplexer keeps event handlers until + explicitly removed. + If the result type of the function call operator of Delegate is non-void, the type-conversion to bool + of that result determines if the item is immediately removed or kept after each call: a Multidelegate + queue removes an item only if true is returned, but a Multidelegate event multiplexer removes event + handlers that return false. +@tparam QUEUE_CAPACITY is only used if ISQUEUE == true. Then, it sets the maximum capacity that the queue dynamically + allocates from the heap. Unused items are not returned to the heap, but are managed by the MultiDelegate + instance during its own lifetime for efficiency. +*/ +template< typename Delegate, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32> +class MultiDelegate : public detail::MultiDelegate +{ +public: + using detail::MultiDelegate::MultiDelegate; +}; + +#endif // __MULTIDELEGATE_H diff --git a/lib/EspSoftwareSerial/src/circular_queue/circular_queue.h b/lib/EspSoftwareSerial/src/circular_queue/circular_queue.h new file mode 100644 index 00000000..46e3f66e --- /dev/null +++ b/lib/EspSoftwareSerial/src/circular_queue/circular_queue.h @@ -0,0 +1,399 @@ +/* +circular_queue.h - Implementation of a lock-free circular queue for EspSoftwareSerial. +Copyright (c) 2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __circular_queue_h +#define __circular_queue_h + +#ifdef ARDUINO +#include +#endif + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +#include +#include +#include +#include "Delegate.h" +using std::min; +#else +#include "ghostl.h" +#endif + +#if !defined(ESP32) && !defined(ESP8266) +#define ICACHE_RAM_ATTR +#define IRAM_ATTR +#endif + +/*! + @brief Instance class for a single-producer, single-consumer circular queue / ring buffer (FIFO). + This implementation is lock-free between producer and consumer for the available(), peek(), + pop(), and push() type functions. +*/ +template< typename T, typename ForEachArg = void > +class circular_queue +{ +public: + /*! + @brief Constructs a valid, but zero-capacity dummy queue. + */ + circular_queue() : m_bufSize(1) + { + m_inPos.store(0); + m_outPos.store(0); + } + /*! + @brief Constructs a queue of the given maximum capacity. + */ + circular_queue(const size_t capacity) : m_bufSize(capacity + 1), m_buffer(new T[m_bufSize]) + { + m_inPos.store(0); + m_outPos.store(0); + } + circular_queue(circular_queue&& cq) : + m_bufSize(cq.m_bufSize), m_buffer(cq.m_buffer), m_inPos(cq.m_inPos.load()), m_outPos(cq.m_outPos.load()) + {} + ~circular_queue() + { + m_buffer.reset(); + } + circular_queue(const circular_queue&) = delete; + circular_queue& operator=(circular_queue&& cq) + { + m_bufSize = cq.m_bufSize; + m_buffer = cq.m_buffer; + m_inPos.store(cq.m_inPos.load()); + m_outPos.store(cq.m_outPos.load()); + } + circular_queue& operator=(const circular_queue&) = delete; + + /*! + @brief Get the numer of elements the queue can hold at most. + */ + size_t capacity() const + { + return m_bufSize - 1; + } + + /*! + @brief Resize the queue. The available elements in the queue are preserved. + This is not lock-free and concurrent producer or consumer access + will lead to corruption. + @return True if the new capacity could accommodate the present elements in + the queue, otherwise nothing is done and false is returned. + */ + bool capacity(const size_t cap); + + /*! + @brief Discard all data in the queue. + */ + void flush() + { + m_outPos.store(m_inPos.load()); + } + + /*! + @brief Get a snapshot number of elements that can be retrieved by pop. + */ + size_t available() const + { + int avail = static_cast(m_inPos.load() - m_outPos.load()); + if (avail < 0) avail += m_bufSize; + return avail; + } + + /*! + @brief Get the remaining free elementes for pushing. + */ + size_t available_for_push() const + { + int avail = static_cast(m_outPos.load() - m_inPos.load()) - 1; + if (avail < 0) avail += m_bufSize; + return avail; + } + + /*! + @brief Peek at the next element pop will return without removing it from the queue. + @return An rvalue copy of the next element that can be popped. If the queue is empty, + return an rvalue copy of the element that is pending the next push. + */ + T peek() const + { + const auto outPos = m_outPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + return m_buffer[outPos]; + } + + /*! + @brief Peek at the next pending input value. + @return A reference to the next element that can be pushed. + */ + T& IRAM_ATTR pushpeek() + { + const auto inPos = m_inPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + return m_buffer[inPos]; + } + + /*! + @brief Release the next pending input value, accessible by pushpeek(), into the queue. + @return true if the queue accepted the value, false if the queue + was full. + */ + bool IRAM_ATTR push(); + + /*! + @brief Move the rvalue parameter into the queue. + @return true if the queue accepted the value, false if the queue + was full. + */ + bool IRAM_ATTR push(T&& val); + + /*! + @brief Push a copy of the parameter into the queue. + @return true if the queue accepted the value, false if the queue + was full. + */ + bool IRAM_ATTR push(const T& val) + { + return push(T(val)); + } + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) + /*! + @brief Push copies of multiple elements from a buffer into the queue, + in order, beginning at buffer's head. + @return The number of elements actually copied into the queue, counted + from the buffer head. + */ + size_t push_n(const T* buffer, size_t size); +#endif + + /*! + @brief Pop the next available element from the queue. + @return An rvalue copy of the popped element, or a default + value of type T if the queue is empty. + */ + T pop(); + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) + /*! + @brief Pop multiple elements in ordered sequence from the queue to a buffer. + If buffer is nullptr, simply discards up to size elements from the queue. + @return The number of elements actually popped from the queue to + buffer. + */ + size_t pop_n(T* buffer, size_t size); +#endif + + /*! + @brief Iterate over and remove each available element from queue, + calling back fun with an rvalue reference of every single element. + */ +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) + void for_each(const Delegate& fun); +#else + void for_each(Delegate fun); +#endif + + /*! + @brief In reverse order, iterate over, pop and optionally requeue each available element from the queue, + calling back fun with a reference of every single element. + Requeuing is dependent on the return boolean of the callback function. If it + returns true, the requeue occurs. + */ +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) + bool for_each_rev_requeue(const Delegate& fun); +#else + bool for_each_rev_requeue(Delegate fun); +#endif + +protected: + const T defaultValue = {}; + unsigned m_bufSize; +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) + std::unique_ptr m_buffer; +#else + std::unique_ptr m_buffer; +#endif + std::atomic m_inPos; + std::atomic m_outPos; +}; + +template< typename T, typename ForEachArg > +bool circular_queue::capacity(const size_t cap) +{ + if (cap + 1 == m_bufSize) return true; + else if (available() > cap) return false; + std::unique_ptr buffer(new T[cap + 1]); + const auto available = pop_n(buffer, cap); + m_buffer.reset(buffer); + m_bufSize = cap + 1; + std::atomic_thread_fence(std::memory_order_release); + m_inPos.store(available, std::memory_order_relaxed); + m_outPos.store(0, std::memory_order_release); + return true; +} + +template< typename T, typename ForEachArg > +bool IRAM_ATTR circular_queue::push() +{ + const auto inPos = m_inPos.load(std::memory_order_acquire); + const unsigned next = (inPos + 1) % m_bufSize; + if (next == m_outPos.load(std::memory_order_relaxed)) { + return false; + } + + std::atomic_thread_fence(std::memory_order_acquire); + + m_inPos.store(next, std::memory_order_release); + return true; +} + +template< typename T, typename ForEachArg > +bool IRAM_ATTR circular_queue::push(T&& val) +{ + const auto inPos = m_inPos.load(std::memory_order_acquire); + const unsigned next = (inPos + 1) % m_bufSize; + if (next == m_outPos.load(std::memory_order_relaxed)) { + return false; + } + + std::atomic_thread_fence(std::memory_order_acquire); + + m_buffer[inPos] = std::move(val); + + std::atomic_thread_fence(std::memory_order_release); + + m_inPos.store(next, std::memory_order_release); + return true; +} + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +template< typename T, typename ForEachArg > +size_t circular_queue::push_n(const T* buffer, size_t size) +{ + const auto inPos = m_inPos.load(std::memory_order_acquire); + const auto outPos = m_outPos.load(std::memory_order_relaxed); + + size_t blockSize = (outPos > inPos) ? outPos - 1 - inPos : (outPos == 0) ? m_bufSize - 1 - inPos : m_bufSize - inPos; + blockSize = min(size, blockSize); + if (!blockSize) return 0; + int next = (inPos + blockSize) % m_bufSize; + + std::atomic_thread_fence(std::memory_order_acquire); + + auto dest = m_buffer.get() + inPos; + std::copy_n(std::make_move_iterator(buffer), blockSize, dest); + size = min(size - blockSize, outPos > 1 ? static_cast(outPos - next - 1) : 0); + next += size; + dest = m_buffer.get(); + std::copy_n(std::make_move_iterator(buffer + blockSize), size, dest); + + std::atomic_thread_fence(std::memory_order_release); + + m_inPos.store(next, std::memory_order_release); + return blockSize + size; +} +#endif + +template< typename T, typename ForEachArg > +T circular_queue::pop() +{ + const auto outPos = m_outPos.load(std::memory_order_acquire); + if (m_inPos.load(std::memory_order_relaxed) == outPos) return defaultValue; + + std::atomic_thread_fence(std::memory_order_acquire); + + auto val = std::move(m_buffer[outPos]); + + std::atomic_thread_fence(std::memory_order_release); + + m_outPos.store((outPos + 1) % m_bufSize, std::memory_order_release); + return val; +} + +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +template< typename T, typename ForEachArg > +size_t circular_queue::pop_n(T* buffer, size_t size) { + size_t avail = size = min(size, available()); + if (!avail) return 0; + const auto outPos = m_outPos.load(std::memory_order_acquire); + size_t n = min(avail, static_cast(m_bufSize - outPos)); + + std::atomic_thread_fence(std::memory_order_acquire); + + if (buffer) { + buffer = std::copy_n(std::make_move_iterator(m_buffer.get() + outPos), n, buffer); + avail -= n; + std::copy_n(std::make_move_iterator(m_buffer.get()), avail, buffer); + } + + std::atomic_thread_fence(std::memory_order_release); + + m_outPos.store((outPos + size) % m_bufSize, std::memory_order_release); + return size; +} +#endif + +template< typename T, typename ForEachArg > +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +void circular_queue::for_each(const Delegate& fun) +#else +void circular_queue::for_each(Delegate fun) +#endif +{ + auto outPos = m_outPos.load(std::memory_order_acquire); + const auto inPos = m_inPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + while (outPos != inPos) + { + fun(std::move(m_buffer[outPos])); + std::atomic_thread_fence(std::memory_order_release); + outPos = (outPos + 1) % m_bufSize; + m_outPos.store(outPos, std::memory_order_release); + } +} + +template< typename T, typename ForEachArg > +#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) +bool circular_queue::for_each_rev_requeue(const Delegate& fun) +#else +bool circular_queue::for_each_rev_requeue(Delegate fun) +#endif +{ + auto inPos0 = circular_queue::m_inPos.load(std::memory_order_acquire); + auto outPos = circular_queue::m_outPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + if (outPos == inPos0) return false; + auto pos = inPos0; + auto outPos1 = inPos0; + const auto posDecr = circular_queue::m_bufSize - 1; + do { + pos = (pos + posDecr) % circular_queue::m_bufSize; + T&& val = std::move(circular_queue::m_buffer[pos]); + if (fun(val)) + { + outPos1 = (outPos1 + posDecr) % circular_queue::m_bufSize; + if (outPos1 != pos) circular_queue::m_buffer[outPos1] = std::move(val); + } + } while (pos != outPos); + circular_queue::m_outPos.store(outPos1, std::memory_order_release); + return true; +} + +#endif // __circular_queue_h diff --git a/lib/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h b/lib/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h new file mode 100644 index 00000000..7024247a --- /dev/null +++ b/lib/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h @@ -0,0 +1,200 @@ +/* +circular_queue_mp.h - Implementation of a lock-free circular queue for EspSoftwareSerial. +Copyright (c) 2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __circular_queue_mp_h +#define __circular_queue_mp_h + +#include "circular_queue.h" + +#ifdef ESP8266 +#include "interrupts.h" +#else +#include +#endif + +/*! + @brief Instance class for a multi-producer, single-consumer circular queue / ring buffer (FIFO). + This implementation is lock-free between producers and consumer for the available(), peek(), + pop(), and push() type functions, but is guarded to safely allow only a single producer + at any instant. +*/ +template< typename T, typename ForEachArg = void > +class circular_queue_mp : protected circular_queue +{ +public: + circular_queue_mp() = default; + circular_queue_mp(const size_t capacity) : circular_queue(capacity) + {} + circular_queue_mp(circular_queue&& cq) : circular_queue(std::move(cq)) + {} + using circular_queue::operator=; + using circular_queue::capacity; + using circular_queue::flush; + using circular_queue::available; + using circular_queue::available_for_push; + using circular_queue::peek; + using circular_queue::pop; + using circular_queue::pop_n; + using circular_queue::for_each; + using circular_queue::for_each_rev_requeue; + + /*! + @brief Resize the queue. The available elements in the queue are preserved. + This is not lock-free, but safe, concurrent producer or consumer access + is guarded. + @return True if the new capacity could accommodate the present elements in + the queue, otherwise nothing is done and false is returned. + */ + bool capacity(const size_t cap) + { +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + return circular_queue::capacity(cap); + } + + bool IRAM_ATTR push() = delete; + + /*! + @brief Move the rvalue parameter into the queue, guarded + for multiple concurrent producers. + @return true if the queue accepted the value, false if the queue + was full. + */ + bool IRAM_ATTR push(T&& val) + { +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + return circular_queue::push(std::move(val)); + } + + /*! + @brief Push a copy of the parameter into the queue, guarded + for multiple concurrent producers. + @return true if the queue accepted the value, false if the queue + was full. + */ + bool IRAM_ATTR push(const T& val) + { +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + return circular_queue::push(val); + } + + /*! + @brief Push copies of multiple elements from a buffer into the queue, + in order, beginning at buffer's head. This is guarded for + multiple producers, push_n() is atomic. + @return The number of elements actually copied into the queue, counted + from the buffer head. + */ + size_t push_n(const T* buffer, size_t size) + { +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + return circular_queue::push_n(buffer, size); + } + + /*! + @brief Pops the next available element from the queue, requeues + it immediately. + @return A reference to the just requeued element, or the default + value of type T if the queue is empty. + */ + T& pop_requeue(); + + /*! + @brief Iterate over, pop and optionally requeue each available element from the queue, + calling back fun with a reference of every single element. + Requeuing is dependent on the return boolean of the callback function. If it + returns true, the requeue occurs. + */ + bool for_each_requeue(const Delegate& fun); + +#ifndef ESP8266 +protected: + std::mutex m_pushMtx; +#endif +}; + +template< typename T, typename ForEachArg > +T& circular_queue_mp::pop_requeue() +{ +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + const auto outPos = circular_queue::m_outPos.load(std::memory_order_acquire); + const auto inPos = circular_queue::m_inPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + if (inPos == outPos) return circular_queue::defaultValue; + T& val = circular_queue::m_buffer[inPos] = std::move(circular_queue::m_buffer[outPos]); + const auto bufSize = circular_queue::m_bufSize; + std::atomic_thread_fence(std::memory_order_release); + circular_queue::m_outPos.store((outPos + 1) % bufSize, std::memory_order_relaxed); + circular_queue::m_inPos.store((inPos + 1) % bufSize, std::memory_order_release); + return val; +} + +template< typename T, typename ForEachArg > +bool circular_queue_mp::for_each_requeue(const Delegate& fun) +{ + auto inPos0 = circular_queue::m_inPos.load(std::memory_order_acquire); + auto outPos = circular_queue::m_outPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + if (outPos == inPos0) return false; + do { + T&& val = std::move(circular_queue::m_buffer[outPos]); + if (fun(val)) + { +#ifdef ESP8266 + esp8266::InterruptLock lock; +#else + std::lock_guard lock(m_pushMtx); +#endif + std::atomic_thread_fence(std::memory_order_release); + auto inPos = circular_queue::m_inPos.load(std::memory_order_relaxed); + std::atomic_thread_fence(std::memory_order_acquire); + circular_queue::m_buffer[inPos] = std::move(val); + std::atomic_thread_fence(std::memory_order_release); + circular_queue::m_inPos.store((inPos + 1) % circular_queue::m_bufSize, std::memory_order_release); + } + else + { + std::atomic_thread_fence(std::memory_order_release); + } + outPos = (outPos + 1) % circular_queue::m_bufSize; + circular_queue::m_outPos.store(outPos, std::memory_order_release); + } while (outPos != inPos0); + return true; +} + +#endif // __circular_queue_mp_h diff --git a/lib/EspSoftwareSerial/src/circular_queue/ghostl.h b/lib/EspSoftwareSerial/src/circular_queue/ghostl.h new file mode 100644 index 00000000..11683805 --- /dev/null +++ b/lib/EspSoftwareSerial/src/circular_queue/ghostl.h @@ -0,0 +1,92 @@ +/* +ghostl.h - Implementation of a bare-bones, mostly no-op, C++ STL shell + that allows building some Arduino ESP8266/ESP32 + libraries on Aruduino AVR. +Copyright (c) 2019 Dirk O. Kaar. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __ghostl_h +#define __ghostl_h + +#if defined(ARDUINO_ARCH_SAMD) +#include +#endif + +namespace std +{ +#if !defined(ARDUINO_ARCH_SAMD) + typedef enum memory_order { + memory_order_relaxed, + memory_order_acquire, + memory_order_release, + memory_order_seq_cst + } memory_order; + template< typename T > class atomic { + private: + T value; + public: + atomic() {} + atomic(T desired) { value = desired; } + void store(T desired, std::memory_order = std::memory_order_seq_cst) volatile noexcept { value = desired; } + T load(std::memory_order = std::memory_order_seq_cst) const volatile noexcept { return value; } + }; + inline void atomic_thread_fence(std::memory_order order) noexcept {} + template< typename T > T&& move(T& t) noexcept { return static_cast(t); } +#endif + + template< typename T, unsigned long N > struct array + { + T _M_elems[N]; + decltype(sizeof(0)) size() const { return N; } + T& operator[](decltype(sizeof(0)) i) { return _M_elems[i]; } + const T& operator[](decltype(sizeof(0)) i) const { return _M_elems[i]; } + }; + + template< typename T > class unique_ptr + { + public: + using pointer = T*; + unique_ptr() noexcept : ptr(nullptr) {} + unique_ptr(pointer p) : ptr(p) {} + pointer operator->() const noexcept { return ptr; } + T& operator[](decltype(sizeof(0)) i) const { return ptr[i]; } + void reset(pointer p = pointer()) noexcept + { + delete ptr; + ptr = p; + } + T& operator*() const { return *ptr; } + private: + pointer ptr; + }; + + template< typename T > using function = T*; + using nullptr_t = decltype(nullptr); + + template + struct identity { + typedef T type; + }; + + template + inline T&& forward(typename identity::type& t) noexcept + { + return static_cast::type&&>(t); + } +} + +#endif // __ghostl_h From 7500ef38b805bd5275ca156fbc1dfc02a7aae8e7 Mon Sep 17 00:00:00 2001 From: Cornelio Hopmann Date: Wed, 5 Feb 2020 22:03:22 +0100 Subject: [PATCH 092/104] Experimental: M5Stack Support + Fixed case-sensitie board name (Linux) + Added M5Stack Fire board + WiFi sniffing tested with verbose mode (NO LoRa or GPS) --- platformio.ini | 3 +- src/hal/{m5stack.h => m5core.h} | 8 ++--- src/hal/m5fire.h | 63 +++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 5 deletions(-) rename src/hal/{m5stack.h => m5core.h} (94%) create mode 100644 src/hal/m5fire.h diff --git a/platformio.ini b/platformio.ini index 9cba5684..a775db73 100644 --- a/platformio.ini +++ b/platformio.ini @@ -31,7 +31,8 @@ halfile = generic.h ;halfile = octopus32.h ;halfile = tinypico.h ;halfile = tinypicomatrix.h -;halfile = m5stack.h +;halfile = m5core.h +;halfile = m5fire.h [platformio] ; upload firmware to board with usb cable diff --git a/src/hal/m5stack.h b/src/hal/m5core.h similarity index 94% rename from src/hal/m5stack.h rename to src/hal/m5core.h index 371d725a..1f3371ce 100644 --- a/src/hal/m5stack.h +++ b/src/hal/m5core.h @@ -1,11 +1,11 @@ // clang-format off // upload_speed 921600 -// board M5Stack-Core-ESP32 +// board m5stack-core-esp32 // EXPERIMENTAL VERSION - NOT TESTED ON M5 HARDWARE YET -#ifndef _M5STACK_H -#define _M5STACK_H +#ifndef _M5CORE_H +#define _M5CORE_H #include @@ -57,6 +57,6 @@ #define MY_OLED_RST GPIO_NUM_33 #define MY_OLED_BL GPIO_NUM_32 #define MY_OLED_MOSI GPIO_NUM_23 -#define MY_OLED_MISO GPIO_NUM_23 +#define MY_OLED_MISO GPIO_NUM_19 #endif \ No newline at end of file diff --git a/src/hal/m5fire.h b/src/hal/m5fire.h new file mode 100644 index 00000000..171fa044 --- /dev/null +++ b/src/hal/m5fire.h @@ -0,0 +1,63 @@ +// clang-format off +// upload_speed 921600 +// board m5stack-fire + +// EXPERIMENTAL VERSION - NOT TESTED ON M5 HARDWARE YET + +#ifndef _M5FIRE_H +#define _M5FIRE_H + +#include + +// #define HAS_LORA 1 // comment out if device shall not send data via LoRa or has no M5 RA01 LoRa module + +// Pins for LORA chip SPI interface, reset line and interrupt lines +#define LORA_SCK SCK +#define LORA_CS SS +#define LORA_MISO MISO +#define LORA_MOSI MOSI +#define LORA_RST GPIO_NUM_36 +#define LORA_IRQ GPIO_NUM_26 +#define LORA_IO1 GPIO_NUM_34 // must be externally wired on PCB! +#define LORA_IO2 LMIC_UNUSED_PIN + + +// enable only if you want to store a local paxcount table on the device +#define HAS_SDCARD 1 // this board has an SD-card-reader/writer +// Pins for SD-card +#define SDCARD_CS GPIO_NUM_4 +#define SDCARD_MOSI MOSI +#define SDCARD_MISO MISO +#define SDCARD_SCLK SCK + +// user defined sensors +//#define HAS_SENSORS 1 // comment out if device has user defined sensors + +#define CFG_sx1276_radio 1 // select LoRa chip +#define BOARD_HAS_PSRAM // use if board has external PSRAM +#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature + +//#define HAS_DISPLAY 1 +#define HAS_TFT 1 +//#define DISPLAY_FLIP 1 // use if display is rotated +//#define BAT_MEASURE_ADC ADC1_GPIO35_CHANNEL // battery probe GPIO pin -> ADC1_CHANNEL_7 +//#define BAT_VOLTAGE_DIVIDER 2 // voltage divider 100k/100k on board + +#define HAS_LED NOT_A_PIN // no on board LED (?) +#define HAS_BUTTON (39) // on board button A + +// GPS settings +#define HAS_GPS 0 // use on board GPS +#define GPS_SERIAL 9600, SERIAL_8N1, RXD2, TXD2 // UBlox NEO 6M RX, TX +// #define GPS_INT GPIO_NUM_35 // 30ns accurary timepulse, to be external wired on pcb: shorten R12! + +// Pins for interface of LC Display +#define MY_OLED_CS GPIO_NUM_14 +#define MY_OLED_DC GPIO_NUM_27 +#define MY_OLED_CLK GPIO_NUM_18 +#define MY_OLED_RST GPIO_NUM_33 +#define MY_OLED_BL GPIO_NUM_32 +#define MY_OLED_MOSI GPIO_NUM_23 +#define MY_OLED_MISO GPIO_NUM_19 + +#endif \ No newline at end of file From 867c5477df5f311d330561ed1a3cd75c16d1fec5 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Wed, 5 Feb 2020 22:13:30 +0100 Subject: [PATCH 093/104] sds011 code sanitizations --- include/sds011read.h | 4 - lib/EspSoftwareSerial/LICENSE | 502 ----- lib/EspSoftwareSerial/README.md | 124 -- .../examples/loopback/loopback.ino | 263 --- .../examples/onewiretest/onewiretest.ino | 48 - .../examples/repeater/repeater.ino | 183 -- .../examples/servoTester/servoTester.ino | 115 -- .../examples/swsertest/swsertest.ino | 47 - lib/EspSoftwareSerial/keywords.txt | 43 - lib/EspSoftwareSerial/library.json | 15 - lib/EspSoftwareSerial/library.properties | 9 - lib/EspSoftwareSerial/src/SoftwareSerial.cpp | 542 ----- lib/EspSoftwareSerial/src/SoftwareSerial.h | 255 --- .../src/circular_queue/Delegate.h | 1786 ----------------- .../src/circular_queue/MultiDelegate.h | 503 ----- .../src/circular_queue/circular_queue.h | 399 ---- .../src/circular_queue/circular_queue_mp.h | 200 -- .../src/circular_queue/ghostl.h | 92 - lib/SDS011/src/SDS011.cpp | 191 -- lib/SDS011/src/SDS011.h | 40 - platformio.ini | 1 + src/hal/generic.h | 4 + src/sds011read.cpp | 68 +- src/senddata.cpp | 4 - 24 files changed, 38 insertions(+), 5400 deletions(-) delete mode 100644 lib/EspSoftwareSerial/LICENSE delete mode 100644 lib/EspSoftwareSerial/README.md delete mode 100644 lib/EspSoftwareSerial/examples/loopback/loopback.ino delete mode 100644 lib/EspSoftwareSerial/examples/onewiretest/onewiretest.ino delete mode 100644 lib/EspSoftwareSerial/examples/repeater/repeater.ino delete mode 100644 lib/EspSoftwareSerial/examples/servoTester/servoTester.ino delete mode 100644 lib/EspSoftwareSerial/examples/swsertest/swsertest.ino delete mode 100644 lib/EspSoftwareSerial/keywords.txt delete mode 100644 lib/EspSoftwareSerial/library.json delete mode 100644 lib/EspSoftwareSerial/library.properties delete mode 100644 lib/EspSoftwareSerial/src/SoftwareSerial.cpp delete mode 100644 lib/EspSoftwareSerial/src/SoftwareSerial.h delete mode 100644 lib/EspSoftwareSerial/src/circular_queue/Delegate.h delete mode 100644 lib/EspSoftwareSerial/src/circular_queue/MultiDelegate.h delete mode 100644 lib/EspSoftwareSerial/src/circular_queue/circular_queue.h delete mode 100644 lib/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h delete mode 100644 lib/EspSoftwareSerial/src/circular_queue/ghostl.h delete mode 100644 lib/SDS011/src/SDS011.cpp delete mode 100644 lib/SDS011/src/SDS011.h diff --git a/include/sds011read.h b/include/sds011read.h index d278a5fd..8c573c0d 100644 --- a/include/sds011read.h +++ b/include/sds011read.h @@ -3,10 +3,6 @@ #include -// used pins on the ESP-side: -#define ESP_PIN_TX 19 // connect to RX on the SDS011 -#define ESP_PIN_RX 23 // connect to TX on the SDS011 - #define SDCARD_FILE_HEADER_SDS011 ", PM10,PM25" bool sds011_init(); diff --git a/lib/EspSoftwareSerial/LICENSE b/lib/EspSoftwareSerial/LICENSE deleted file mode 100644 index f166cc57..00000000 --- a/lib/EspSoftwareSerial/LICENSE +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! \ No newline at end of file diff --git a/lib/EspSoftwareSerial/README.md b/lib/EspSoftwareSerial/README.md deleted file mode 100644 index 2d14c9e6..00000000 --- a/lib/EspSoftwareSerial/README.md +++ /dev/null @@ -1,124 +0,0 @@ -# EspSoftwareSerial - -## Implementation of the Arduino software serial library for the ESP8266 / ESP32 - -This fork implements interrupt service routine best practice. -In the receive interrupt, instead of blocking for whole bytes -at a time - voiding any near-realtime behavior of the CPU - only level -change and timestamp are recorded. The more time consuming phase -detection and byte assembly are done in the main code. - -Except at high bitrates, depending on other ongoing activity, -interrupts in particular, this software serial adapter -supports full duplex receive and send. At high bitrates (115200bps) -send bit timing can be improved at the expense of blocking concurrent -full duplex receives, with the ``SoftwareSerial::enableIntTx(false)`` function call. - -The same functionality is given as the corresponding AVR library but -several instances can be active at the same time. Speed up to 115200 baud -is supported. Besides a constructor compatible to the AVR SoftwareSerial class, -and updated constructor that takes no arguments exists, instead the ``begin()`` -function can handle the pin assignments and logic inversion. -It also has optional input buffer capacity arguments for byte buffer and ISR bit buffer. -This way, it is a better drop-in replacement for the hardware serial APIs on the ESP MCUs. - -Please note that due to the fact that the ESPs always have other activities -ongoing, there will be some inexactness in interrupt timings. This may -lead to inevitable, but few, bit errors when having heavy data traffic -at high baud rates. - -## Resource optimization - -The memory footprint can be optimized to just fit the amount of expected -incoming asynchronous data. -For this, the ``SoftwareSerial`` constructor provides two arguments. First, the -octet buffer capacity for assembled received octets can be set. Read calls are -satisfied from this buffer, freeing it in return. -Second, the signal edge detection buffer of 32bit fields can be resized. -One octet may require up to to 10 fields, but fewer may be needed, -depending on the bit pattern. Any read or write calls check this buffer -to assemble received octets, thus promoting completed octets to the octet -buffer, freeing fields in the edge detection buffer. - -Look at the swsertest.ino example. There, on reset, ASCII characters ' ' to 'z' -are sent. This happens not as a block write, but in a single write call per -character. As the example uses a local loopback wire, every outgoing bit is -immediately received back. Therefore, any single write call causes up to -10 fields - depending on the exact bit pattern - to be occupied in the signal -edge detection buffer. In turn, as explained before, each single write call -also causes received bit assembly to be performed, promoting these bits from -the signal edge detection buffer to the octet buffer as soon as possible. -Explaining by way of contrast, if during a a single write call, perhaps because -of using block writing, more than a single octet is received, there will be a -need for more than 10 fields in the signal edge detection buffer. -The necessary capacity of the octet buffer only depends on the amount of incoming -data until the next read call. - -For the swsertest.ino example, this results in the following optimized -constructor arguments to spend only the minimum RAM on buffers required: - -The octet buffer capacity (``bufCapacity``) is 93 (91 characters net plus two tolerance). -The signal edge detection buffer capacity (``isrBufCapacity``) is 10, as each octet has -10 bits on the wire, which are immediately received during the write, and each -write call causes the signal edge detection to promote the previously sent and -received bits to the octet buffer. - -In a more generalized scenario, calculate the bits (use message size in octets -times 10) that may be asynchronously received to determine the value for -``isrBufCapacity`` in the constructor. Also use the number of received octets -that must be buffered for reading as the value of ``bufCapacity``. -The more frequently your code calls write or read functions, the greater the -chances are that you can reduce the ``isrBufCapacity`` footprint without losing data, -and each time you call read to fetch from the octet buffer, you reduce the -need for space there. - -## SoftwareSerialConfig and parity -The configuration of the data stream is done via a ``SoftwareSerialConfig`` -argument to ``begin()``. Word lengths can be set to between 5 and 8 bits, parity -can be N(one), O(dd) or E(ven) and 1 or 2 stop bits can be used. The default is -``SWSERIAL_8N1`` using 8 bits, no parity and 1 stop bit but any combination can -be used, e.g. ``SWSERIAL_7E2``. If using EVEN or ODD parity, any parity errors -can be detected with the ``peekParityError()`` function. Note that parity -checking must be done before ``read()``, as the parity information is removed -from the buffer when reading the corresponding byte. - -To allow flexible 9-bit and data/addressing protocols, the additional parity -modes MARK and SPACE are also available. Furthermore, the parity mode can be -individually set in each call to ``write()``. - -This allows a simple implementation of protocols where the parity bit is used to -distinguish between data and addresses/commands ("9-bit" protocols). First set -up SoftwareSerial with parity mode SPACE, e.g. ``SWSERIAL_8S1``. This will add a -parity bit to every byte sent, setting it to logical zero (SPACE parity). - -To detect incoming bytes with the parity bit set (MARK parity), use the -``peekParityError()`` function. To send a byte with the parity bit set, just add -``MARK`` as the second argument when writing, e.g. ``write(ch, MARK)``. - -## Using and updating EspSoftwareSerial in the esp8266com/esp8266 Arduino build environment - -EspSoftwareSerial is both part of the BSP download for ESP8266 in Arduino, -and it is set up as a Git submodule in the esp8266 source tree, -specifically in ``.../esp8266/libraries/SoftwareSerial`` when using a Github -repository clone in your Arduino sketchbook hardware directory. -This supersedes any version of EspSoftwareSerial installed for instance via -the Arduino library manager, it is not required to install EspSoftwareSerial -for the ESP8266 separately at all, but doing so has ill effect. - -The responsible maintainer of the esp8266 repository has kindly shared the -following command line instructions to use, if one wishes to manually -update EspSoftwareSerial to a newer release than pulled in via the ESP8266 Arduino BSP: - -To update esp8266/arduino SoftwareSerial submodule to lastest master: - -Clean it (optional): -```shell -$ rm -rf libraries/SoftwareSerial -$ git submodule update --init -``` -Now update it: -```shell -$ cd libraries/SoftwareSerial -$ git checkout master -$ git pull -``` diff --git a/lib/EspSoftwareSerial/examples/loopback/loopback.ino b/lib/EspSoftwareSerial/examples/loopback/loopback.ino deleted file mode 100644 index b612bdec..00000000 --- a/lib/EspSoftwareSerial/examples/loopback/loopback.ino +++ /dev/null @@ -1,263 +0,0 @@ -#include - -// On ESP8266: -// Local SoftwareSerial loopback, connect D5 (rx) and D6 (tx). -// For local hardware loopback, connect D5 to D8 (tx), D6 to D7 (rx). -// For hardware send/sink, connect D7 (rx) and D8 (tx). -// Hint: The logger is run at 9600bps such that enableIntTx(true) can remain unchanged. Blocking -// interrupts severely impacts the ability of the SoftwareSerial devices to operate concurrently -// and/or in duplex mode. -// Operating in software serial full duplex mode, runs at 19200bps and few errors (~2.5%). -// Operating in software serial half duplex mode (both loopback and repeater), -// runs at 57600bps with nearly no errors. -// Operating loopback in full duplex, and repeater in half duplex, runs at 38400bps with nearly no errors. -// On ESP32: -// For SoftwareSerial or hardware send/sink, connect D5 (rx) and D6 (tx). -// Hardware Serial2 defaults to D4 (rx), D3 (tx). -// For local hardware loopback, connect D5 (rx) to D3 (tx), D6 (tx) to D4 (rx). - -#if defined(ESP8266) && !defined(D5) -#define D5 (14) -#define D6 (12) -#define D7 (13) -#define D8 (15) -#define TX (1) -#endif - -// Pick only one of HWLOOPBACK, HWSOURCESWSINK, or HWSOURCESINK -//#define HWLOOPBACK 1 -//#define HWSOURCESWSINK 1 -//#define HWSOURCESINK 1 -#define HALFDUPLEX 1 - -#ifdef ESP32 -constexpr int IUTBITRATE = 19200; -#else -constexpr int IUTBITRATE = 19200; -#endif - -#if defined(ESP8266) -constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; -constexpr SerialConfig hwSerialConfig = SERIAL_8E1; -#elif defined(ESP32) -constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; -constexpr uint32_t hwSerialConfig = SERIAL_8E1; -#else -constexpr unsigned swSerialConfig = 3; -#endif -constexpr bool invert = false; - -constexpr int BLOCKSIZE = 16; // use fractions of 256 - -unsigned long start; -String effTxTxt("eff. tx: "); -String effRxTxt("eff. rx: "); -int txCount; -int rxCount; -int expected; -int rxErrors; -int rxParityErrors; -constexpr int ReportInterval = IUTBITRATE / 8; - -#if defined(ESP8266) -#if defined(HWLOOPBACK) || defined(HWSOURCESWSINK) -HardwareSerial& hwSerial(Serial); -SoftwareSerial serialIUT; -SoftwareSerial logger; -#elif defined(HWSOURCESINK) -HardwareSerial& serialIUT(Serial); -SoftwareSerial logger; -#else -SoftwareSerial serialIUT; -HardwareSerial& logger(Serial); -#endif -#elif defined(ESP32) -#if defined(HWLOOPBACK) || defined (HWSOURCESWSINK) -HardwareSerial& hwSerial(Serial2); -SoftwareSerial serialIUT; -#elif defined(HWSOURCESINK) -HardwareSerial& serialIUT(Serial2); -#else -SoftwareSerial serialIUT; -#endif -HardwareSerial& logger(Serial); -#else -SoftwareSerial serialIUT(14, 12); -HardwareSerial& logger(Serial); -#endif - -void setup() { -#if defined(ESP8266) -#if defined(HWLOOPBACK) || defined(HWSOURCESINK) || defined(HWSOURCESWSINK) - Serial.begin(IUTBITRATE, hwSerialConfig, SERIAL_FULL, 1, invert); - Serial.swap(); - Serial.setRxBufferSize(2 * BLOCKSIZE); - logger.begin(9600, SWSERIAL_8N1, -1, TX); -#else - logger.begin(9600); -#endif -#if !defined(HWSOURCESINK) - serialIUT.begin(IUTBITRATE, swSerialConfig, D5, D6, invert, 2 * BLOCKSIZE); -#ifdef HALFDUPLEX - serialIUT.enableIntTx(false); -#endif -#endif -#elif defined(ESP32) -#if defined(HWLOOPBACK) || defined(HWSOURCESWSINK) - Serial2.begin(IUTBITRATE, hwSerialConfig, D4, D3, invert); - Serial2.setRxBufferSize(2 * BLOCKSIZE); -#elif defined(HWSOURCESINK) - serialIUT.begin(IUTBITRATE, hwSerialConfig, D5, D6, invert); - serialIUT.setRxBufferSize(2 * BLOCKSIZE); -#endif -#if !defined(HWSOURCESINK) - serialIUT.begin(IUTBITRATE, swSerialConfig, D5, D6, invert, 2 * BLOCKSIZE); -#ifdef HALFDUPLEX - serialIUT.enableIntTx(false); -#endif -#endif - logger.begin(9600); -#else -#if !defined(HWSOURCESINK) - serialIUT.begin(IUTBITRATE); -#endif - logger.begin(9600); -#endif - - logger.println("Loopback example for EspSoftwareSerial"); - - start = micros(); - txCount = 0; - rxCount = 0; - rxErrors = 0; - rxParityErrors = 0; - expected = -1; -} - -unsigned char c = 0; - -void loop() { -#ifdef HALFDUPLEX - char block[BLOCKSIZE]; -#endif - char inBuf[BLOCKSIZE]; - for (int i = 0; i < BLOCKSIZE; ++i) { -#ifndef HALFDUPLEX -#ifdef HWSOURCESWSINK - hwSerial.write(c); -#else - serialIUT.write(c); -#endif -#ifdef HWLOOPBACK - int avail = hwSerial.available(); - while ((0 == (i % 8)) && avail > 0) { - int inCnt = hwSerial.read(inBuf, min(avail, min(BLOCKSIZE, hwSerial.availableForWrite()))); - hwSerial.write(inBuf, inCnt); - avail -= inCnt; - } -#endif -#else - block[i] = c; -#endif - c = (c + 1) % 256; - ++txCount; - } -#ifdef HALFDUPLEX -#ifdef HWSOURCESWSINK - hwSerial.write(block, BLOCKSIZE); -#else - serialIUT.write(block, BLOCKSIZE); -#endif -#endif -#ifdef HWSOURCESINK -#if defined(ESP8266) - if (serialIUT.hasOverrun()) { logger.println("serialIUT.overrun"); } -#endif -#else - if (serialIUT.overflow()) { logger.println("serialIUT.overflow"); } -#endif - - int inCnt; - uint32_t deadlineStart; - -#ifdef HWLOOPBACK - // starting deadline for the first bytes to become readable - deadlineStart = ESP.getCycleCount(); - inCnt = 0; - while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 24 * ESP.getCpuFreqMHz()) { - int avail = hwSerial.available(); - inCnt += hwSerial.read(&inBuf[inCnt], min(avail, min(BLOCKSIZE - inCnt, hwSerial.availableForWrite()))); - if (inCnt >= BLOCKSIZE) { break; } - // wait for more outstanding bytes to trickle in - if (avail) deadlineStart = ESP.getCycleCount(); - } - hwSerial.write(inBuf, inCnt); -#endif - - // starting deadline for the first bytes to come in - deadlineStart = ESP.getCycleCount(); - inCnt = 0; - while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 8 * ESP.getCpuFreqMHz()) { - int avail; - if (0 != (swSerialConfig & 070)) - avail = serialIUT.available(); - else - avail = serialIUT.read(inBuf, BLOCKSIZE); - for (int i = 0; i < avail; ++i) - { - unsigned char r; - if (0 != (swSerialConfig & 070)) - r = serialIUT.read(); - else - r = inBuf[i]; - if (expected == -1) { expected = r; } - else { - expected = (expected + 1) % (1UL << (5 + swSerialConfig % 4)); - } - if (r != expected) { - ++rxErrors; - expected = -1; - } -#ifndef HWSOURCESINK - if (serialIUT.readParity() != (static_cast(swSerialConfig & 010) ? serialIUT.parityOdd(r) : serialIUT.parityEven(r))) - { - ++rxParityErrors; - } -#endif - ++rxCount; - ++inCnt; - } - - if (inCnt >= BLOCKSIZE) { break; } - // wait for more outstanding bytes to trickle in - if (avail) deadlineStart = ESP.getCycleCount(); - } - - const uint32_t interval = micros() - start; - if (txCount >= ReportInterval && interval) { - uint8_t wordBits = (5 + swSerialConfig % 4) + static_cast(swSerialConfig & 070) + 1 + ((swSerialConfig & 0300) ? 1 : 0); - logger.println(String("tx/rx: ") + txCount + "/" + rxCount); - const long txCps = txCount * (1000000.0 / interval); - const long rxCps = rxCount * (1000000.0 / interval); - logger.print(effTxTxt + wordBits * txCps + "bps, " - + effRxTxt + wordBits * rxCps + "bps, " - + rxErrors + " errors (" + 100.0 * rxErrors / (!rxErrors ? 1 : rxCount) + "%)"); - if (0 != (swSerialConfig & 070)) - { - logger.print(" ("); logger.print(rxParityErrors); logger.println(" parity errors)"); - } - else - { - logger.println(); - } - txCount = 0; - rxCount = 0; - rxErrors = 0; - rxParityErrors = 0; - expected = -1; - // resync - delay(1000UL * 12 * BLOCKSIZE / IUTBITRATE * 16); - serialIUT.flush(); - start = micros(); - } -} diff --git a/lib/EspSoftwareSerial/examples/onewiretest/onewiretest.ino b/lib/EspSoftwareSerial/examples/onewiretest/onewiretest.ino deleted file mode 100644 index 3e96401b..00000000 --- a/lib/EspSoftwareSerial/examples/onewiretest/onewiretest.ino +++ /dev/null @@ -1,48 +0,0 @@ -#include -#include "SoftwareSerial.h" - -SoftwareSerial swSer1; -SoftwareSerial swSer2; - -void setup() { - delay(2000); - Serial.begin(115200); - Serial.println("\nOne Wire Half Duplex Serial Tester"); - swSer1.begin(115200, SWSERIAL_8N1, 12, 12, false, 256); - swSer1.enableIntTx(true); - swSer2.begin(115200, SWSERIAL_8N1, 14, 14, false, 256); - swSer2.enableIntTx(true); -} - -void loop() { - Serial.println("\n\nTesting on swSer1"); - Serial.print("Enter something to send using swSer1."); - checkSwSerial(&swSer1); - - Serial.println("\n\nTesting on swSer2"); - Serial.print("Enter something to send using swSer2."); - checkSwSerial(&swSer2); - -} - -void checkSwSerial(SoftwareSerial* ss) { - byte ch; - while (!Serial.available()); - ss->enableTx(true); - while (Serial.available()) { - ch = Serial.read(); - ss->write(ch); - } - ss->enableTx(false); - // wait 1 second for the reply from SOftwareSerial if any - delay(1000); - if (ss->available()) { - Serial.print("\nResult:"); - while (ss->available()) { - ch = (byte)ss->read(); - Serial.print(ch < 0x01 ? " 0" : " "); - Serial.print(ch, HEX); - } - Serial.println(); - } -} diff --git a/lib/EspSoftwareSerial/examples/repeater/repeater.ino b/lib/EspSoftwareSerial/examples/repeater/repeater.ino deleted file mode 100644 index fa5566de..00000000 --- a/lib/EspSoftwareSerial/examples/repeater/repeater.ino +++ /dev/null @@ -1,183 +0,0 @@ -#include - -// On ESP8266: -// SoftwareSerial loopback for remote source (loopback.ino), or hardware loopback. -// Connect source D5 (rx) to local D8 (tx), source D6 (tx) to local D7 (rx). -// Hint: The logger is run at 9600bps such that enableIntTx(true) can remain unchanged. Blocking -// interrupts severely impacts the ability of the SoftwareSerial devices to operate concurrently -// and/or in duplex mode. -// On ESP32: -// For software or hardware loopback, connect source rx to local D8 (tx), source tx to local D7 (rx). - -#if defined(ESP8266) && !defined(D5) -#define D5 (14) -#define D6 (12) -#define D7 (13) -#define D8 (15) -#define TX (1) -#endif - -#define HWLOOPBACK 1 -#define HALFDUPLEX 1 - -#ifdef ESP32 -constexpr int IUTBITRATE = 19200; -#else -constexpr int IUTBITRATE = 19200; -#endif - -#if defined(ESP8266) -constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; -constexpr SerialConfig hwSerialConfig = SERIAL_8E1; -#elif defined(ESP32) -constexpr SoftwareSerialConfig swSerialConfig = SWSERIAL_8E1; -constexpr uint32_t hwSerialConfig = SERIAL_8E1; -#else -constexpr unsigned swSerialConfig = 3; -#endif -constexpr bool invert = false; - -constexpr int BLOCKSIZE = 16; // use fractions of 256 - -unsigned long start; -String bitRateTxt("Effective data rate: "); -int rxCount; -int seqErrors; -int parityErrors; -int expected; -constexpr int ReportInterval = IUTBITRATE / 8; - -#if defined(ESP8266) -#if defined(HWLOOPBACK) -HardwareSerial& repeater(Serial); -SoftwareSerial logger; -#else -SoftwareSerial repeater; -HardwareSerial& logger(Serial); -#endif -#elif defined(ESP32) -#if defined(HWLOOPBACK) -HardwareSerial& repeater(Serial2); -#else -SoftwareSerial repeater; -#endif -HardwareSerial& logger(Serial); -#else -SoftwareSerial repeater(14, 12); -HardwareSerial& logger(Serial); -#endif - -void setup() { -#if defined(ESP8266) -#if defined(HWLOOPBACK) - repeater.begin(IUTBITRATE, hwSerialConfig, SERIAL_FULL, 1, invert); - repeater.swap(); - repeater.setRxBufferSize(2 * BLOCKSIZE); - logger.begin(9600, SWSERIAL_8N1, -1, TX); -#else - repeater.begin(IUTBITRATE, swSerialConfig, D7, D8, invert, 4 * BLOCKSIZE); -#ifdef HALFDUPLEX - repeater.enableIntTx(false); -#endif - logger.begin(9600); -#endif -#elif defined(ESP32) -#if defined(HWLOOPBACK) - repeater.begin(IUTBITRATE, hwSerialConfig, D7, D8, invert); - repeater.setRxBufferSize(2 * BLOCKSIZE); -#else - repeater.begin(IUTBITRATE, swSerialConfig, D7, D8, invert, 4 * BLOCKSIZE); -#ifdef HALFDUPLEX - repeater.enableIntTx(false); -#endif -#endif - logger.begin(9600); -#else - repeater.begin(IUTBITRATE); - logger.begin(9600); -#endif - - logger.println("Repeater example for EspSoftwareSerial"); - start = micros(); - rxCount = 0; - seqErrors = 0; - parityErrors = 0; - expected = -1; -} - -void loop() { -#ifdef HWLOOPBACK -#if defined(ESP8266) - if (repeater.hasOverrun()) { logger.println("repeater.overrun"); } -#endif -#else - if (repeater.overflow()) { logger.println("repeater.overflow"); } -#endif - -#ifdef HALFDUPLEX - char block[BLOCKSIZE]; -#endif - // starting deadline for the first bytes to come in - uint32_t deadlineStart = ESP.getCycleCount(); - int inCnt = 0; - while ((ESP.getCycleCount() - deadlineStart) < (1000000UL * 12 * BLOCKSIZE) / IUTBITRATE * 24 * ESP.getCpuFreqMHz()) { - int avail = repeater.available(); - for (int i = 0; i < avail; ++i) - { - int r = repeater.read(); - if (r == -1) { logger.println("read() == -1"); } - if (expected == -1) { expected = r; } - else { - expected = (expected + 1) % (1UL << (5 + swSerialConfig % 4)); - } - if (r != expected) { - ++seqErrors; - expected = -1; - } -#ifndef HWLOOPBACK - if (repeater.readParity() != (static_cast(swSerialConfig & 010) ? repeater.parityOdd(r) : repeater.parityEven(r))) - { - ++parityErrors; - } -#endif - ++rxCount; -#ifdef HALFDUPLEX - block[inCnt] = r; -#else - repeater.write(r); -#endif - if (++inCnt >= BLOCKSIZE) { break; } - } - if (inCnt >= BLOCKSIZE) { break; } - // wait for more outstanding bytes to trickle in - if (avail) deadlineStart = ESP.getCycleCount(); - } - -#ifdef HALFDUPLEX - repeater.write(block, inCnt); -#endif - - if (rxCount >= ReportInterval) { - auto end = micros(); - unsigned long interval = end - start; - long cps = rxCount * (1000000.0 / interval); - long seqErrorsps = seqErrors * (1000000.0 / interval); - logger.print(bitRateTxt + 10 * cps + "bps, " - + seqErrorsps + "cps seq. errors (" + 100.0 * seqErrors / rxCount + "%)"); -#ifndef HWLOOPBACK - if (0 != (swSerialConfig & 070)) - { - logger.print(" ("); logger.print(parityErrors); logger.print(" parity errors)"); - } - else -#endif - { - logger.println(); - } - start = end; - rxCount = 0; - seqErrors = 0; - parityErrors = 0; - expected = -1; - } -} diff --git a/lib/EspSoftwareSerial/examples/servoTester/servoTester.ino b/lib/EspSoftwareSerial/examples/servoTester/servoTester.ino deleted file mode 100644 index cbc784d8..00000000 --- a/lib/EspSoftwareSerial/examples/servoTester/servoTester.ino +++ /dev/null @@ -1,115 +0,0 @@ -#include -#include - -SoftwareSerial swSer; - -byte buf[10] = { 0xFA, 0xAF,0x00,0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0xED }; -byte cmd[10] = { 0xFA, 0xAF,0x00,0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0xED }; -byte ver[10] = { 0xFC, 0xCF,0x00,0xAA,0x41, 0x16, 0x51, 0x01, 0x00, 0xED }; - - -void setup() { - delay(2000); - Serial.begin(115200); - Serial.println("\nAlpha 1S Servo Tester"); - swSer.begin(115200, SWSERIAL_8N1, 12, 12, false, 256); -} - -void loop() { - for (int i = 1; i <= 32; i++) { - GetVersion(i); - delay(100); - } - SetLED(1, 0); - GoPos(1, 0, 50); - delay(1000); - GoPos(1, 90, 50); - delay(1000); - GoPos(1, 100, 50); - delay(1000); - SetLED(1, 1); - delay(2000); -} - - - - -void GetVersion(byte id) { - memcpy(buf, cmd, 10); - buf[0] = 0xFC; - buf[1] = 0xCF; - buf[2] = id; - buf[3] = 0x01; - SendCommand(); -} - - -void GoPos(byte id, byte Pos, byte Time) { - memcpy(buf, cmd, 10); - buf[2] = id; - buf[3] = 0x01; - buf[4] = Pos; - buf[5] = Time; - buf[6] = 0x00; - buf[7] = Time; - SendCommand(); -} - -void GetPos(byte id) { - memcpy(buf, cmd, 10); - buf[2] = id; - buf[3] = 0x02; - SendCommand(); -} - - -void SetLED(byte id, byte mode) { - memcpy(buf, cmd, 10); - buf[2] = id; - buf[3] = 0x04; - buf[4] = mode; - SendCommand(); -} - -void SendCommand() { - SendCommand(true); -} - -void SendCommand(bool checkResult) { - byte sum = 0; - for (int i = 2; i < 8; i++) { - sum += buf[i]; - } - buf[8] = sum; - ShowCommand(); - swSer.flush(); - swSer.enableTx(true); - swSer.write(buf, 10); - swSer.enableTx(false); - if (checkResult) checkReturn(); -} - -void ShowCommand() { - Serial.print(millis()); - Serial.print(" OUT>>"); - for (int i = 0; i < 10; i++) { - Serial.print((buf[i] < 0x10 ? " 0" : " ")); - Serial.print(buf[i], HEX); - } - Serial.println(); -} - -void checkReturn() { - unsigned long startMs = millis(); - while (((millis() - startMs) < 500) && (!swSer.available())); - if (swSer.available()) { - Serial.print(millis()); - Serial.print(" IN>>>"); - while (swSer.available()) { - byte ch = (byte)swSer.read(); - Serial.print((ch < 0x10 ? " 0" : " ")); - Serial.print(ch, HEX); - } - Serial.println(); - } -} diff --git a/lib/EspSoftwareSerial/examples/swsertest/swsertest.ino b/lib/EspSoftwareSerial/examples/swsertest/swsertest.ino deleted file mode 100644 index a047c1be..00000000 --- a/lib/EspSoftwareSerial/examples/swsertest/swsertest.ino +++ /dev/null @@ -1,47 +0,0 @@ -// On ESP8266: -// At 80MHz runs up 57600ps, and at 160MHz CPU frequency up to 115200bps with only negligible errors. -// Connect pin 12 to 14. - -#include - -#if defined(ESP8266) && !defined(D5) -#define D5 (14) -#define D6 (12) -#define D7 (13) -#define D8 (15) -#endif - -#ifdef ESP32 -#define BAUD_RATE 57600 -#else -#define BAUD_RATE 57600 -#endif - -// Reminder: the buffer size optimizations here, in particular the isrBufSize that only accommodates -// a single 8N1 word, are on the basis that any char written to the loopback SoftwareSerial adapter gets read -// before another write is performed. Block writes with a size greater than 1 would usually fail. -SoftwareSerial swSer; - -void setup() { - Serial.begin(115200); - swSer.begin(BAUD_RATE, SWSERIAL_8N1, D5, D6, false, 95, 11); - - Serial.println("\nSoftware serial test started"); - - for (char ch = ' '; ch <= 'z'; ch++) { - swSer.write(ch); - } - swSer.println(""); -} - -void loop() { - while (swSer.available() > 0) { - Serial.write(swSer.read()); - yield(); - } - while (Serial.available() > 0) { - swSer.write(Serial.read()); - yield(); - } - -} diff --git a/lib/EspSoftwareSerial/keywords.txt b/lib/EspSoftwareSerial/keywords.txt deleted file mode 100644 index 52d48ab3..00000000 --- a/lib/EspSoftwareSerial/keywords.txt +++ /dev/null @@ -1,43 +0,0 @@ -####################################### -# Syntax Coloring Map for SoftwareSerial -# (esp8266) -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -SoftwareSerial KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -begin KEYWORD2 -baudRate KEYWORD2 -setTransmitEnablePin KEYWORD2 -enableIntTx KEYWORD2 -overflow KEYWORD2 -available KEYWORD2 -peek KEYWORD2 -read KEYWORD2 -flush KEYWORD2 -write KEYWORD2 -enableRx KEYWORD2 -enableTx KEYWORD2 -listen KEYWORD2 -end KEYWORD2 -isListening KEYWORD2 -stopListening KEYWORD2 -onReceive KEYWORD2 -perform_work KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### - -SW_SERIAL_UNUSED_PIN LITERAL1 -SWSERIAL_5N1 LITERAL1 -SWSERIAL_6N1 LITERAL1 -SWSERIAL_7N1 LITERAL1 -SWSERIAL_8N1 LITERAL1 diff --git a/lib/EspSoftwareSerial/library.json b/lib/EspSoftwareSerial/library.json deleted file mode 100644 index 3415b056..00000000 --- a/lib/EspSoftwareSerial/library.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "EspSoftwareSerial", - "version": "6.6.1", - "keywords": [ - "serial", "io", "softwareserial" - ], - "description": "Implementation of the Arduino software serial for ESP8266/ESP32.", - "repository": - { - "type": "git", - "url": "https://github.com/plerup/espsoftwareserial" - }, - "frameworks": "arduino", - "platforms": "*" -} diff --git a/lib/EspSoftwareSerial/library.properties b/lib/EspSoftwareSerial/library.properties deleted file mode 100644 index bd052153..00000000 --- a/lib/EspSoftwareSerial/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=EspSoftwareSerial -version=6.6.1 -author=Peter Lerup, Dirk Kaar -maintainer=Peter Lerup -sentence=Implementation of the Arduino software serial for ESP8266/ESP32. -paragraph= -category=Signal Input/Output -url=https://github.com/plerup/espsoftwareserial/ -architectures=esp8266,esp32 diff --git a/lib/EspSoftwareSerial/src/SoftwareSerial.cpp b/lib/EspSoftwareSerial/src/SoftwareSerial.cpp deleted file mode 100644 index 0e7b8e08..00000000 --- a/lib/EspSoftwareSerial/src/SoftwareSerial.cpp +++ /dev/null @@ -1,542 +0,0 @@ -/* - -SoftwareSerial.cpp - Implementation of the Arduino software serial for ESP8266/ESP32. -Copyright (c) 2015-2016 Peter Lerup. All rights reserved. -Copyright (c) 2018-2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -*/ - -#include "SoftwareSerial.h" -#include - -#ifdef ESP32 -#define xt_rsil(a) (a) -#define xt_wsr_ps(a) -#endif - -constexpr uint8_t BYTE_ALL_BITS_SET = ~static_cast(0); - -SoftwareSerial::SoftwareSerial() { - m_isrOverflow = false; -} - -SoftwareSerial::SoftwareSerial(int8_t rxPin, int8_t txPin, bool invert) -{ - m_isrOverflow = false; - m_rxPin = rxPin; - m_txPin = txPin; - m_invert = invert; -} - -SoftwareSerial::~SoftwareSerial() { - end(); -} - -bool SoftwareSerial::isValidGPIOpin(int8_t pin) { -#if defined(ESP8266) - return (pin >= 0 && pin <= 5) || (pin >= 12 && pin <= 15); -#elif defined(ESP32) - return pin == 0 || pin == 2 || (pin >= 4 && pin <= 5) || (pin >= 12 && pin <= 19) || - (pin >= 21 && pin <= 23) || (pin >= 25 && pin <= 27) || (pin >= 32 && pin <= 35); -#else - return true; -#endif -} - -void SoftwareSerial::begin(uint32_t baud, SoftwareSerialConfig config, - int8_t rxPin, int8_t txPin, - bool invert, int bufCapacity, int isrBufCapacity) { - if (-1 != rxPin) m_rxPin = rxPin; - if (-1 != txPin) m_txPin = txPin; - m_oneWire = (m_rxPin == m_txPin); - m_invert = invert; - m_dataBits = 5 + (config & 07); - m_parityMode = static_cast(config & 070); - m_stopBits = 1 + ((config & 0300) ? 1 : 0); - m_pduBits = m_dataBits + static_cast(m_parityMode) + m_stopBits; - m_bitCycles = (ESP.getCpuFreqMHz() * 1000000UL + baud / 2) / baud; - m_intTxEnabled = true; - if (isValidGPIOpin(m_rxPin)) { - std::unique_ptr > buffer(new circular_queue((bufCapacity > 0) ? bufCapacity : 64)); - m_buffer = move(buffer); - if (m_parityMode) - { - std::unique_ptr > parityBuffer(new circular_queue((bufCapacity > 0) ? (bufCapacity + 7) / 8 : 8)); - m_parityBuffer = move(parityBuffer); - m_parityInPos = m_parityOutPos = 1; - } - std::unique_ptr > isrBuffer(new circular_queue((isrBufCapacity > 0) ? isrBufCapacity : (sizeof(uint8_t) * 8 + 2) * bufCapacity)); - m_isrBuffer = move(isrBuffer); - if (m_buffer && (!m_parityMode || m_parityBuffer) && m_isrBuffer) { - m_rxValid = true; - pinMode(m_rxPin, INPUT_PULLUP); - } - } - if (isValidGPIOpin(m_txPin) -#ifdef ESP8266 - || ((m_txPin == 16) && !m_oneWire)) { -#else - ) { -#endif - m_txValid = true; - if (!m_oneWire) { - pinMode(m_txPin, OUTPUT); - digitalWrite(m_txPin, !m_invert); - } - } - if (!m_rxEnabled) { enableRx(true); } -} - -void SoftwareSerial::end() -{ - enableRx(false); - m_txValid = false; - if (m_buffer) { - m_buffer.reset(); - } - m_parityBuffer.reset(); - if (m_isrBuffer) { - m_isrBuffer.reset(); - } -} - -uint32_t SoftwareSerial::baudRate() { - return ESP.getCpuFreqMHz() * 1000000UL / m_bitCycles; -} - -void SoftwareSerial::setTransmitEnablePin(int8_t txEnablePin) { - if (isValidGPIOpin(txEnablePin)) { - m_txEnableValid = true; - m_txEnablePin = txEnablePin; - pinMode(m_txEnablePin, OUTPUT); - digitalWrite(m_txEnablePin, LOW); - } - else { - m_txEnableValid = false; - } -} - -void SoftwareSerial::enableIntTx(bool on) { - m_intTxEnabled = on; -} - -void SoftwareSerial::enableTx(bool on) { - if (m_txValid && m_oneWire) { - if (on) { - enableRx(false); - pinMode(m_txPin, OUTPUT); - digitalWrite(m_txPin, !m_invert); - } - else { - pinMode(m_rxPin, INPUT_PULLUP); - enableRx(true); - } - } -} - -void SoftwareSerial::enableRx(bool on) { - if (m_rxValid) { - if (on) { - m_rxCurBit = m_pduBits - 1; - // Init to stop bit level and current cycle - m_isrLastCycle = (ESP.getCycleCount() | 1) ^ m_invert; - if (m_bitCycles >= (ESP.getCpuFreqMHz() * 1000000UL) / 74880UL) - attachInterruptArg(digitalPinToInterrupt(m_rxPin), reinterpret_cast(rxBitISR), this, CHANGE); - else - attachInterruptArg(digitalPinToInterrupt(m_rxPin), reinterpret_cast(rxBitSyncISR), this, m_invert ? RISING : FALLING); - } - else { - detachInterrupt(digitalPinToInterrupt(m_rxPin)); - } - m_rxEnabled = on; - } -} - -int SoftwareSerial::read() { - if (!m_rxValid) { return -1; } - if (!m_buffer->available()) { - rxBits(); - if (!m_buffer->available()) { return -1; } - } - auto val = m_buffer->pop(); - if (m_parityBuffer) - { - m_lastReadParity = m_parityBuffer->peek() & m_parityOutPos; - m_parityOutPos <<= 1; - if (!m_parityOutPos) - { - m_parityOutPos = 1; - m_parityBuffer->pop(); - } - } - return val; -} - -size_t SoftwareSerial::read(uint8_t * buffer, size_t size) { - if (!m_rxValid) { return 0; } - size_t avail; - if (0 == (avail = m_buffer->pop_n(buffer, size))) { - rxBits(); - avail = m_buffer->pop_n(buffer, size); - } - if (!avail) return 0; - if (m_parityBuffer) { - uint32_t parityBits = avail; - while (m_parityOutPos >>= 1) ++parityBits; - m_parityOutPos = (1 << (parityBits % 8)); - m_parityBuffer->pop_n(nullptr, parityBits / 8); - } - return avail; -} - -size_t SoftwareSerial::readBytes(uint8_t * buffer, size_t size) { - if (!m_rxValid || !size) { return 0; } - size_t count = 0; - const auto start = millis(); - do { - count += read(&buffer[count], size - count); - if (count >= size) break; - yield(); - } while (millis() - start < _timeout); - return count; -} - -int SoftwareSerial::available() { - if (!m_rxValid) { return 0; } - rxBits(); - int avail = m_buffer->available(); - if (!avail) { - optimistic_yield(10000UL); - } - return avail; -} - -void ICACHE_RAM_ATTR SoftwareSerial::preciseDelay(bool sync) { - if (!sync) - { - // Reenable interrupts while delaying to avoid other tasks piling up - if (!m_intTxEnabled) { xt_wsr_ps(m_savedPS); } - auto expired = ESP.getCycleCount() - m_periodStart; - if (expired < m_periodDuration) - { - auto ms = (m_periodDuration - expired) / ESP.getCpuFreqMHz() / 1000UL; - if (ms) delay(ms); - } - while ((ESP.getCycleCount() - m_periodStart) < m_periodDuration) { optimistic_yield(10000); } - // Disable interrupts again - if (!m_intTxEnabled) { m_savedPS = xt_rsil(15); } - } - else - { - while ((ESP.getCycleCount() - m_periodStart) < m_periodDuration) {} - } - m_periodDuration = 0; - m_periodStart = ESP.getCycleCount(); -} - -void ICACHE_RAM_ATTR SoftwareSerial::writePeriod( - uint32_t dutyCycle, uint32_t offCycle, bool withStopBit) { - preciseDelay(true); - if (dutyCycle) - { - digitalWrite(m_txPin, HIGH); - m_periodDuration += dutyCycle; - if (offCycle || (withStopBit && !m_invert)) preciseDelay(!withStopBit || m_invert); - } - if (offCycle) - { - digitalWrite(m_txPin, LOW); - m_periodDuration += offCycle; - if (withStopBit && m_invert) preciseDelay(false); - } -} - -size_t SoftwareSerial::write(uint8_t byte) { - return write(&byte, 1); -} - -size_t SoftwareSerial::write(uint8_t byte, SoftwareSerialParity parity) { - return write(&byte, 1, parity); -} - -size_t SoftwareSerial::write(const uint8_t * buffer, size_t size) { - return write(buffer, size, m_parityMode); -} - -size_t ICACHE_RAM_ATTR SoftwareSerial::write(const uint8_t * buffer, size_t size, SoftwareSerialParity parity) { - if (m_rxValid) { rxBits(); } - if (!m_txValid) { return -1; } - - if (m_txEnableValid) { - digitalWrite(m_txEnablePin, HIGH); - } - // Stop bit: if inverted, LOW, otherwise HIGH - bool b = !m_invert; - uint32_t dutyCycle = 0; - uint32_t offCycle = 0; - if (!m_intTxEnabled) { - // Disable interrupts in order to get a clean transmit timing - m_savedPS = xt_rsil(15); - } - const uint32_t dataMask = ((1UL << m_dataBits) - 1); - bool withStopBit = true; - m_periodDuration = 0; - m_periodStart = ESP.getCycleCount(); - for (size_t cnt = 0; cnt < size; ++cnt) { - uint8_t byte = ~buffer[cnt] & dataMask; - // push LSB start-data-parity-stop bit pattern into uint32_t - // Stop bits: HIGH - uint32_t word = ~0UL; - // parity bit, if any - if (parity && m_parityMode) - { - uint32_t parityBit; - switch (parity) - { - case SWSERIAL_PARITY_EVEN: - // from inverted, so use odd parity - parityBit = byte; - parityBit ^= parityBit >> 4; - parityBit &= 0xf; - parityBit = (0x9669 >> parityBit) & 1; - break; - case SWSERIAL_PARITY_ODD: - // from inverted, so use even parity - parityBit = byte; - parityBit ^= parityBit >> 4; - parityBit &= 0xf; - parityBit = (0x6996 >> parityBit) & 1; - break; - case SWSERIAL_PARITY_MARK: - parityBit = false; - break; - case SWSERIAL_PARITY_SPACE: - // suppresses warning parityBit uninitialized - default: - parityBit = true; - break; - } - word ^= parityBit << m_dataBits; - } - word ^= byte; - // Stop bit: LOW - word <<= 1; - if (m_invert) word = ~word; - for (int i = 0; i <= m_pduBits; ++i) { - bool pb = b; - b = word & (1UL << i); - if (!pb && b) { - writePeriod(dutyCycle, offCycle, withStopBit); - withStopBit = false; - dutyCycle = offCycle = 0; - } - if (b) { - dutyCycle += m_bitCycles; - } - else { - offCycle += m_bitCycles; - } - } - withStopBit = true; - } - writePeriod(dutyCycle, offCycle, true); - if (!m_intTxEnabled) { - // restore the interrupt state - xt_wsr_ps(m_savedPS); - } - if (m_txEnableValid) { - digitalWrite(m_txEnablePin, LOW); - } - return size; -} - -void SoftwareSerial::flush() { - if (!m_rxValid) { return; } - m_buffer->flush(); - if (m_parityBuffer) - { - m_parityInPos = m_parityOutPos = 1; - m_parityBuffer->flush(); - } -} - -bool SoftwareSerial::overflow() { - bool res = m_overflow; - m_overflow = false; - return res; -} - -int SoftwareSerial::peek() { - if (!m_rxValid) { return -1; } - if (!m_buffer->available()) { - rxBits(); - if (!m_buffer->available()) return -1; - } - auto val = m_buffer->peek(); - if (m_parityBuffer) m_lastReadParity = m_parityBuffer->peek() & m_parityOutPos; - return val; -} - -void SoftwareSerial::rxBits() { - int isrAvail = m_isrBuffer->available(); -#ifdef ESP8266 - if (m_isrOverflow.load()) { - m_overflow = true; - m_isrOverflow.store(false); - } -#else - if (m_isrOverflow.exchange(false)) { - m_overflow = true; - } -#endif - - // stop bit can go undetected if leading data bits are at same level - // and there was also no next start bit yet, so one byte may be pending. - // low-cost check first - if (!isrAvail && m_rxCurBit >= -1 && m_rxCurBit < m_pduBits - m_stopBits) { - uint32_t detectionCycles = (m_pduBits - m_stopBits - m_rxCurBit) * m_bitCycles; - if (ESP.getCycleCount() - m_isrLastCycle > detectionCycles) { - // Produce faux stop bit level, prevents start bit maldetection - // cycle's LSB is repurposed for the level bit - rxBits(((m_isrLastCycle + detectionCycles) | 1) ^ m_invert); - } - } - - m_isrBuffer->for_each([this](const uint32_t& isrCycle) { rxBits(isrCycle); }); -} - -void SoftwareSerial::rxBits(const uint32_t & isrCycle) { - bool level = (m_isrLastCycle & 1) ^ m_invert; - - // error introduced by edge value in LSB of isrCycle is negligible - int32_t cycles = isrCycle - m_isrLastCycle; - m_isrLastCycle = isrCycle; - - uint8_t bits = cycles / m_bitCycles; - if (cycles % m_bitCycles > (m_bitCycles >> 1)) ++bits; - while (bits > 0) { - // start bit detection - if (m_rxCurBit >= (m_pduBits - 1)) { - // leading edge of start bit - if (level) break; - m_rxCurBit = -1; - --bits; - continue; - } - // data bits - if (m_rxCurBit >= -1 && m_rxCurBit < (m_dataBits - 1)) { - int8_t dataBits = min(bits, static_cast(m_dataBits - 1 - m_rxCurBit)); - m_rxCurBit += dataBits; - bits -= dataBits; - m_rxCurByte >>= dataBits; - if (level) { m_rxCurByte |= (BYTE_ALL_BITS_SET << (8 - dataBits)); } - continue; - } - // parity bit - if (m_parityMode && m_rxCurBit == (m_dataBits - 1)) { - ++m_rxCurBit; - --bits; - m_rxCurParity = level; - continue; - } - // stop bits - if (m_rxCurBit < (m_pduBits - m_stopBits - 1)) { - ++m_rxCurBit; - --bits; - continue; - } - if (m_rxCurBit == (m_pduBits - m_stopBits - 1)) { - // Store the received value in the buffer unless we have an overflow - // if not high stop bit level, discard word - if (level) - { - m_rxCurByte >>= (sizeof(uint8_t) * 8 - m_dataBits); - if (!m_buffer->push(m_rxCurByte)) { - m_overflow = true; - } - else { - if (m_parityBuffer) - { - if (m_rxCurParity) { - m_parityBuffer->pushpeek() |= m_parityInPos; - } - else { - m_parityBuffer->pushpeek() &= ~m_parityInPos; - } - m_parityInPos <<= 1; - if (!m_parityInPos) - { - m_parityBuffer->push(); - m_parityInPos = 1; - } - } - } - } - m_rxCurBit = m_pduBits; - // reset to 0 is important for masked bit logic - m_rxCurByte = 0; - m_rxCurParity = false; - break; - } - break; - } -} - -void ICACHE_RAM_ATTR SoftwareSerial::rxBitISR(SoftwareSerial * self) { - uint32_t curCycle = ESP.getCycleCount(); - bool level = digitalRead(self->m_rxPin); - - // Store level and cycle in the buffer unless we have an overflow - // cycle's LSB is repurposed for the level bit - if (!self->m_isrBuffer->push((curCycle | 1U) ^ !level)) self->m_isrOverflow.store(true); -} - -void ICACHE_RAM_ATTR SoftwareSerial::rxBitSyncISR(SoftwareSerial * self) { - uint32_t start = ESP.getCycleCount(); - uint32_t wait = self->m_bitCycles - 172U; - - bool level = self->m_invert; - // Store level and cycle in the buffer unless we have an overflow - // cycle's LSB is repurposed for the level bit - if (!self->m_isrBuffer->push(((start + wait) | 1U) ^ !level)) self->m_isrOverflow.store(true); - - for (uint32_t i = 0; i < self->m_pduBits; ++i) { - while (ESP.getCycleCount() - start < wait) {}; - wait += self->m_bitCycles; - - // Store level and cycle in the buffer unless we have an overflow - // cycle's LSB is repurposed for the level bit - if (digitalRead(self->m_rxPin) != level) - { - if (!self->m_isrBuffer->push(((start + wait) | 1U) ^ level)) self->m_isrOverflow.store(true); - level = !level; - } - } -} - -void SoftwareSerial::onReceive(Delegate handler) { - receiveHandler = handler; -} - -void SoftwareSerial::perform_work() { - if (!m_rxValid) { return; } - rxBits(); - if (receiveHandler) { - int avail = m_buffer->available(); - if (avail) { receiveHandler(avail); } - } -} diff --git a/lib/EspSoftwareSerial/src/SoftwareSerial.h b/lib/EspSoftwareSerial/src/SoftwareSerial.h deleted file mode 100644 index 371e3731..00000000 --- a/lib/EspSoftwareSerial/src/SoftwareSerial.h +++ /dev/null @@ -1,255 +0,0 @@ -/* -SoftwareSerial.h - -SoftwareSerial.cpp - Implementation of the Arduino software serial for ESP8266/ESP32. -Copyright (c) 2015-2016 Peter Lerup. All rights reserved. -Copyright (c) 2018-2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -*/ - -#ifndef __SoftwareSerial_h -#define __SoftwareSerial_h - -#include "circular_queue/circular_queue.h" -#include - -enum SoftwareSerialParity : uint8_t { - SWSERIAL_PARITY_NONE = 000, - SWSERIAL_PARITY_EVEN = 020, - SWSERIAL_PARITY_ODD = 030, - SWSERIAL_PARITY_MARK = 040, - SWSERIAL_PARITY_SPACE = 070, -}; - -enum SoftwareSerialConfig { - SWSERIAL_5N1 = SWSERIAL_PARITY_NONE, - SWSERIAL_6N1, - SWSERIAL_7N1, - SWSERIAL_8N1, - SWSERIAL_5E1 = SWSERIAL_PARITY_EVEN, - SWSERIAL_6E1, - SWSERIAL_7E1, - SWSERIAL_8E1, - SWSERIAL_5O1 = SWSERIAL_PARITY_ODD, - SWSERIAL_6O1, - SWSERIAL_7O1, - SWSERIAL_8O1, - SWSERIAL_5M1 = SWSERIAL_PARITY_MARK, - SWSERIAL_6M1, - SWSERIAL_7M1, - SWSERIAL_8M1, - SWSERIAL_5S1 = SWSERIAL_PARITY_SPACE, - SWSERIAL_6S1, - SWSERIAL_7S1, - SWSERIAL_8S1, - SWSERIAL_5N2 = 0200 | SWSERIAL_PARITY_NONE, - SWSERIAL_6N2, - SWSERIAL_7N2, - SWSERIAL_8N2, - SWSERIAL_5E2 = 0200 | SWSERIAL_PARITY_EVEN, - SWSERIAL_6E2, - SWSERIAL_7E2, - SWSERIAL_8E2, - SWSERIAL_5O2 = 0200 | SWSERIAL_PARITY_ODD, - SWSERIAL_6O2, - SWSERIAL_7O2, - SWSERIAL_8O2, - SWSERIAL_5M2 = 0200 | SWSERIAL_PARITY_MARK, - SWSERIAL_6M2, - SWSERIAL_7M2, - SWSERIAL_8M2, - SWSERIAL_5S2 = 0200 | SWSERIAL_PARITY_SPACE, - SWSERIAL_6S2, - SWSERIAL_7S2, - SWSERIAL_8S2, -}; - -/// This class is compatible with the corresponding AVR one, however, -/// the constructor takes no arguments, for compatibility with the -/// HardwareSerial class. -/// Instead, the begin() function handles pin assignments and logic inversion. -/// It also has optional input buffer capacity arguments for byte buffer and ISR bit buffer. -/// Bitrates up to at least 115200 can be used. -class SoftwareSerial : public Stream { -public: - SoftwareSerial(); - /// Ctor to set defaults for pins. - /// @param rxPin the GPIO pin used for RX - /// @param txPin -1 for onewire protocol, GPIO pin used for twowire TX - SoftwareSerial(int8_t rxPin, int8_t txPin = -1, bool invert = false); - SoftwareSerial(const SoftwareSerial&) = delete; - SoftwareSerial& operator= (const SoftwareSerial&) = delete; - virtual ~SoftwareSerial(); - /// Configure the SoftwareSerial object for use. - /// @param baud the TX/RX bitrate - /// @param config sets databits, parity, and stop bit count - /// @param rxPin -1 or default: either no RX pin, or keeps the rxPin set in the ctor - /// @param txPin -1 or default: either no TX pin (onewire), or keeps the txPin set in the ctor - /// @param invert true: uses invert line level logic - /// @param bufCapacity the capacity for the received bytes buffer - /// @param isrBufCapacity 0: derived from bufCapacity. The capacity of the internal asynchronous - /// bit receive buffer, a suggested size is bufCapacity times the sum of - /// start, data, parity and stop bit count. - void begin(uint32_t baud, SoftwareSerialConfig config, - int8_t rxPin, int8_t txPin, bool invert, - int bufCapacity = 64, int isrBufCapacity = 0); - void begin(uint32_t baud, SoftwareSerialConfig config, - int8_t rxPin, int8_t txPin) { - begin(baud, config, rxPin, txPin, m_invert); - } - void begin(uint32_t baud, SoftwareSerialConfig config, - int8_t rxPin) { - begin(baud, config, rxPin, m_txPin, m_invert); - } - void begin(uint32_t baud, SoftwareSerialConfig config = SWSERIAL_8N1) { - begin(baud, config, m_rxPin, m_txPin, m_invert); - } - - uint32_t baudRate(); - /// Transmit control pin. - void setTransmitEnablePin(int8_t txEnablePin); - /// Enable or disable interrupts during tx. - void enableIntTx(bool on); - - bool overflow(); - - int available() override; - int availableForWrite() { - if (!m_txValid) return 0; - return 1; - } - int peek() override; - int read() override; - /// @returns The verbatim parity bit associated with the last read() or peek() call - bool readParity() - { - return m_lastReadParity; - } - /// @returns The calculated bit for even parity of the parameter byte - static bool parityEven(uint8_t byte) { - byte ^= byte >> 4; - byte &= 0xf; - return (0x6996 >> byte) & 1; - } - /// @returns The calculated bit for odd parity of the parameter byte - static bool parityOdd(uint8_t byte) { - byte ^= byte >> 4; - byte &= 0xf; - return (0x9669 >> byte) & 1; - } - /// The read(buffer, size) functions are non-blocking, the same as readBytes but without timeout - size_t read(uint8_t* buffer, size_t size); - /// The read(buffer, size) functions are non-blocking, the same as readBytes but without timeout - size_t read(char* buffer, size_t size) { - return read(reinterpret_cast(buffer), size); - } - /// @returns The number of bytes read into buffer, up to size. Times out if the limit set through - /// Stream::setTimeout() is reached. - size_t readBytes(uint8_t* buffer, size_t size) override; - /// @returns The number of bytes read into buffer, up to size. Times out if the limit set through - /// Stream::setTimeout() is reached. - size_t readBytes(char* buffer, size_t size) override { - return readBytes(reinterpret_cast(buffer), size); - } - void flush() override; - size_t write(uint8_t byte) override; - size_t write(uint8_t byte, SoftwareSerialParity parity); - size_t write(const uint8_t* buffer, size_t size) override; - size_t write(const char* buffer, size_t size) { - return write(reinterpret_cast(buffer), size); - } - size_t write(const uint8_t* buffer, size_t size, SoftwareSerialParity parity); - size_t write(const char* buffer, size_t size, SoftwareSerialParity parity) { - return write(reinterpret_cast(buffer), size, parity); - } - operator bool() const { return m_rxValid || m_txValid; } - - /// Disable or enable interrupts on the rx pin. - void enableRx(bool on); - /// One wire control. - void enableTx(bool on); - - // AVR compatibility methods. - bool listen() { enableRx(true); return true; } - void end(); - bool isListening() { return m_rxEnabled; } - bool stopListening() { enableRx(false); return true; } - - /// Set an event handler for received data. - void onReceive(Delegate handler); - - /// Run the internal processing and event engine. Can be iteratively called - /// from loop, or otherwise scheduled. - void perform_work(); - - using Print::write; - -private: - // If sync is false, it's legal to exceed the deadline, for instance, - // by enabling interrupts. - void preciseDelay(bool sync); - // If withStopBit is set, either cycle contains a stop bit. - // If dutyCycle == 0, the level is not forced to HIGH. - // If offCycle == 0, the level remains unchanged from dutyCycle. - void writePeriod( - uint32_t dutyCycle, uint32_t offCycle, bool withStopBit); - bool isValidGPIOpin(int8_t pin); - /* check m_rxValid that calling is safe */ - void rxBits(); - void rxBits(const uint32_t& isrCycle); - - static void rxBitISR(SoftwareSerial* self); - static void rxBitSyncISR(SoftwareSerial* self); - - // Member variables - int8_t m_rxPin = -1; - int8_t m_txPin = -1; - int8_t m_txEnablePin = -1; - uint8_t m_dataBits; - bool m_oneWire; - bool m_rxValid = false; - bool m_rxEnabled = false; - bool m_txValid = false; - bool m_txEnableValid = false; - bool m_invert; - /// PDU bits include data, parity and stop bits; the start bit is not counted. - uint8_t m_pduBits; - bool m_intTxEnabled; - SoftwareSerialParity m_parityMode; - uint8_t m_stopBits; - bool m_lastReadParity; - bool m_overflow = false; - uint32_t m_bitCycles; - uint8_t m_parityInPos; - uint8_t m_parityOutPos; - int8_t m_rxCurBit; // 0 thru (m_pduBits - m_stopBits - 1): data/parity bits. -1: start bit. (m_pduBits - 1): stop bit. - uint8_t m_rxCurByte = 0; - std::unique_ptr > m_buffer; - std::unique_ptr > m_parityBuffer; - uint32_t m_periodStart; - uint32_t m_periodDuration; - uint32_t m_savedPS = 0; - // the ISR stores the relative bit times in the buffer. The inversion corrected level is used as sign bit (2's complement): - // 1 = positive including 0, 0 = negative. - std::unique_ptr > m_isrBuffer; - std::atomic m_isrOverflow; - uint32_t m_isrLastCycle; - bool m_rxCurParity = false; - Delegate receiveHandler; -}; - -#endif // __SoftwareSerial_h diff --git a/lib/EspSoftwareSerial/src/circular_queue/Delegate.h b/lib/EspSoftwareSerial/src/circular_queue/Delegate.h deleted file mode 100644 index bd19c66e..00000000 --- a/lib/EspSoftwareSerial/src/circular_queue/Delegate.h +++ /dev/null @@ -1,1786 +0,0 @@ -/* -Delegate.h - An efficient interchangeable C function ptr and C++ std::function delegate -Copyright (c) 2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef __Delegate_h -#define __Delegate_h - -#if defined(ESP8266) -#include -#elif defined(ESP32) -#include -#else -#define ICACHE_RAM_ATTR -#define IRAM_ATTR -#endif - -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) -#include -#include -#else -#include "circular_queue/ghostl.h" -#endif - -namespace detail -{ - template - static R IRAM_ATTR vPtrToFunPtrExec(void* fn, P... args) - { - using target_type = R(P...); - return reinterpret_cast(fn)(std::forward(args...)); - } - -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - template - class DelegatePImpl { - public: - using target_type = R(P...); - protected: - using FunPtr = target_type*; - using FunAPtr = R(*)(A, P...); - using FunVPPtr = R(*)(void*, P...); - using FunctionType = std::function; - public: - DelegatePImpl() - { - kind = FP; - fn = nullptr; - } - - DelegatePImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - ~DelegatePImpl() - { - if (FUNC == kind) - functional.~FunctionType(); - else if (FPA == kind) - obj.~A(); - } - - DelegatePImpl(const DelegatePImpl& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(del.functional); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - new (&obj) A(del.obj); - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(DelegatePImpl&& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(std::move(del.functional)); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - new (&obj) A(std::move(del.obj)); - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(FunAPtr fnA, const A& obj) - { - kind = FPA; - DelegatePImpl::fnA = fnA; - new (&this->obj) A(obj); - } - - DelegatePImpl(FunAPtr fnA, A&& obj) - { - kind = FPA; - DelegatePImpl::fnA = fnA; - new (&this->obj) A(std::move(obj)); - } - - DelegatePImpl(FunPtr fn) - { - kind = FP; - DelegatePImpl::fn = fn; - } - - template DelegatePImpl(F functional) - { - kind = FUNC; - new (&this->functional) FunctionType(std::forward(functional)); - } - - DelegatePImpl& operator=(const DelegatePImpl& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - if (FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - else if (FPA == del.kind) - { - new (&obj) A; - } - kind = del.kind; - } - if (FUNC == del.kind) - { - functional = del.functional; - } - else if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(DelegatePImpl&& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - if (FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - else if (FPA == del.kind) - { - new (&obj) A; - } - kind = del.kind; - } - if (FUNC == del.kind) - { - functional = std::move(del.functional); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(FunPtr fn) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - kind = FP; - this->fn = fn; - return *this; - } - - DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else if (FPA == kind) - { - return fnA; - } - else - { - return functional ? true : false; - } - } - - static R IRAM_ATTR vPtrToFunAPtrExec(void* self, P... args) - { - return static_cast(self)->fnA( - static_cast(self)->obj, - std::forward(args...)); - }; - - operator FunVPPtr() const - { - if (FP == kind) - { - return vPtrToFunPtrExec; - } - else if (FPA == kind) - { - return vPtrToFunAPtrExec; - } - else - { - return [](void* self, P... args) -> R - { - return static_cast(self)->functional(std::forward(args...)); - }; - } - } - - void* arg() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else - { - return const_cast(this); - } - } - - operator FunctionType() const - { - if (FP == kind) - { - return fn; - } - else if (FPA == kind) - { - return [this](P... args) { return fnA(obj, std::forward(args...)); }; - } - else - { - return functional; - } - } - - R IRAM_ATTR operator()(P... args) const - { - if (FP == kind) - { - return fn(std::forward(args...)); - } - else if (FPA == kind) - { - return fnA(obj, std::forward(args...)); - } - else - { - return functional(std::forward(args...)); - } - } - - protected: - enum { FUNC, FP, FPA } kind; - union { - FunctionType functional; - FunPtr fn; - struct { - FunAPtr fnA; - A obj; - }; - }; - }; -#else - template - class DelegatePImpl { - public: - using target_type = R(P...); - protected: - using FunPtr = target_type*; - using FunAPtr = R(*)(A, P...); - using FunVPPtr = R(*)(void*, P...); - public: - DelegatePImpl() - { - kind = FP; - fn = nullptr; - } - - DelegatePImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - DelegatePImpl(const DelegatePImpl& del) - { - kind = del.kind; - if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(DelegatePImpl&& del) - { - kind = del.kind; - if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(FunAPtr fnA, const A& obj) - { - kind = FPA; - DelegatePImpl::fnA = fnA; - this->obj = obj; - } - - DelegatePImpl(FunAPtr fnA, A&& obj) - { - kind = FPA; - DelegatePImpl::fnA = fnA; - this->obj = std::move(obj); - } - - DelegatePImpl(FunPtr fn) - { - kind = FP; - DelegatePImpl::fn = fn; - } - - template DelegatePImpl(F fn) - { - kind = FP; - DelegatePImpl::fn = std::forward(fn); - } - - DelegatePImpl& operator=(const DelegatePImpl& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FPA == kind) - { - obj = {}; - } - kind = del.kind; - } - if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(DelegatePImpl&& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FPA == kind) - { - obj = {}; - } - kind = del.kind; - } - if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(FunPtr fn) - { - if (FPA == kind) - { - obj = {}; - } - kind = FP; - this->fn = fn; - return *this; - } - - DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FPA == kind) - { - obj = {}; - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else - { - return fnA; - } - } - - static R IRAM_ATTR vPtrToFunAPtrExec(void* self, P... args) - { - return static_cast(self)->fnA( - static_cast(self)->obj, - std::forward(args...)); - }; - - operator FunVPPtr() const - { - if (FP == kind) - { - return vPtrToFunPtrExec; - } - else - { - return vPtrToFunAPtrExec; - } - } - - void* arg() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else - { - return const_cast(this); - } - } - - R IRAM_ATTR operator()(P... args) const - { - if (FP == kind) - { - return fn(std::forward(args...)); - } - else - { - return fnA(obj, std::forward(args...)); - } - } - - protected: - enum { FP, FPA } kind; - union { - FunPtr fn; - FunAPtr fnA; - }; - A obj; - }; -#endif - -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - template - class DelegatePImpl { - public: - using target_type = R(P...); - protected: - using FunPtr = target_type*; - using FunctionType = std::function; - using FunVPPtr = R(*)(void*, P...); - public: - DelegatePImpl() - { - kind = FP; - fn = nullptr; - } - - DelegatePImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - ~DelegatePImpl() - { - if (FUNC == kind) - functional.~FunctionType(); - } - - DelegatePImpl(const DelegatePImpl& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(del.functional); - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(DelegatePImpl&& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(std::move(del.functional)); - } - else - { - fn = del.fn; - } - } - - DelegatePImpl(FunPtr fn) - { - kind = FP; - DelegatePImpl::fn = fn; - } - - template DelegatePImpl(F functional) - { - kind = FUNC; - new (&this->functional) FunctionType(std::forward(functional)); - } - - DelegatePImpl& operator=(const DelegatePImpl& del) - { - if (this == &del) return *this; - if (FUNC == kind && FUNC != del.kind) - { - functional.~FunctionType(); - } - else if (FUNC != kind && FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - kind = del.kind; - if (FUNC == del.kind) - { - functional = del.functional; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(DelegatePImpl&& del) - { - if (this == &del) return *this; - if (FUNC == kind && FUNC != del.kind) - { - functional.~FunctionType(); - } - else if (FUNC != kind && FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - kind = del.kind; - if (FUNC == del.kind) - { - functional = std::move(del.functional); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegatePImpl& operator=(FunPtr fn) - { - if (FUNC == kind) - { - functional.~FunctionType(); - kind = FP; - } - DelegatePImpl::fn = fn; - return *this; - } - - DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else - { - return functional ? true : false; - } - } - - operator FunVPPtr() const - { - if (FP == kind) - { - return vPtrToFunPtrExec; - } - else - { - return [](void* self, P... args) -> R - { - return static_cast(self)->functional(std::forward(args...)); - }; - } - } - - void* arg() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else - { - return const_cast(this); - } - } - - operator FunctionType() const - { - if (FP == kind) - { - return fn; - } - else - { - return functional; - } - } - - R IRAM_ATTR operator()(P... args) const - { - if (FP == kind) - { - return fn(std::forward(args...)); - } - else - { - return functional(std::forward(args...)); - } - } - - protected: - enum { FUNC, FP } kind; - union { - FunctionType functional; - FunPtr fn; - }; - }; -#else - template - class DelegatePImpl { - public: - using target_type = R(P...); - protected: - using FunPtr = target_type*; - using FunVPPtr = R(*)(void*, P...); - public: - DelegatePImpl() - { - fn = nullptr; - } - - DelegatePImpl(std::nullptr_t) - { - fn = nullptr; - } - - DelegatePImpl(const DelegatePImpl& del) - { - fn = del.fn; - } - - DelegatePImpl(DelegatePImpl&& del) - { - fn = std::move(del.fn); - } - - DelegatePImpl(FunPtr fn) - { - DelegatePImpl::fn = fn; - } - - template DelegatePImpl(F fn) - { - DelegatePImpl::fn = std::forward(fn); - } - - DelegatePImpl& operator=(const DelegatePImpl& del) - { - if (this == &del) return *this; - fn = del.fn; - return *this; - } - - DelegatePImpl& operator=(DelegatePImpl&& del) - { - if (this == &del) return *this; - fn = std::move(del.fn); - return *this; - } - - DelegatePImpl& operator=(FunPtr fn) - { - DelegatePImpl::fn = fn; - return *this; - } - - DelegatePImpl& IRAM_ATTR operator=(std::nullptr_t) - { - fn = nullptr; - return *this; - } - - operator bool() const - { - return fn; - } - - operator FunVPPtr() const - { - return vPtrToFunPtrExec; - } - - void* arg() const - { - return reinterpret_cast(fn); - } - - R IRAM_ATTR operator()(P... args) const - { - return fn(std::forward(args...)); - } - - protected: - FunPtr fn; - }; -#endif - -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - template - class DelegateImpl { - public: - using target_type = R(); - protected: - using FunPtr = target_type*; - using FunAPtr = R(*)(A); - using FunctionType = std::function; - using FunVPPtr = R(*)(void*); - public: - DelegateImpl() - { - kind = FP; - fn = nullptr; - } - - DelegateImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - ~DelegateImpl() - { - if (FUNC == kind) - functional.~FunctionType(); - else if (FPA == kind) - obj.~A(); - } - - DelegateImpl(const DelegateImpl& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(del.functional); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - new (&obj) A(del.obj); - } - else - { - fn = del.fn; - } - } - - DelegateImpl(DelegateImpl&& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(std::move(del.functional)); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - new (&obj) A(std::move(del.obj)); - } - else - { - fn = del.fn; - } - } - - DelegateImpl(FunAPtr fnA, const A& obj) - { - kind = FPA; - DelegateImpl::fnA = fnA; - new (&this->obj) A(obj); - } - - DelegateImpl(FunAPtr fnA, A&& obj) - { - kind = FPA; - DelegateImpl::fnA = fnA; - new (&this->obj) A(std::move(obj)); - } - - DelegateImpl(FunPtr fn) - { - kind = FP; - DelegateImpl::fn = fn; - } - - template DelegateImpl(F functional) - { - kind = FUNC; - new (&this->functional) FunctionType(std::forward(functional)); - } - - DelegateImpl& operator=(const DelegateImpl& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - if (FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - else if (FPA == del.kind) - { - new (&obj) A; - } - kind = del.kind; - } - if (FUNC == del.kind) - { - functional = del.functional; - } - else if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(DelegateImpl&& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - if (FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - else if (FPA == del.kind) - { - new (&obj) A; - } - kind = del.kind; - } - if (FUNC == del.kind) - { - functional = std::move(del.functional); - } - else if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(FunPtr fn) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - kind = FP; - this->fn = fn; - return *this; - } - - DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - else if (FPA == kind) - { - obj.~A(); - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else if (FPA == kind) - { - return fnA; - } - else - { - return functional ? true : false; - } - } - - static R IRAM_ATTR vPtrToFunAPtrExec(void* self) - { - return static_cast(self)->fnA( - static_cast(self)->obj); - }; - - operator FunVPPtr() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else if (FPA == kind) - { - return vPtrToFunAPtrExec; - } - else - { - return [](void* self) -> R - { - return static_cast(self)->functional(); - }; - } - } - - void* arg() const - { - if (FP == kind) - { - return nullptr; - } - else - { - return const_cast(this); - } - } - - operator FunctionType() const - { - if (FP == kind) - { - return fn; - } - else if (FPA == kind) - { - return [this]() { return fnA(obj); }; - } - else - { - return functional; - } - } - - R IRAM_ATTR operator()() const - { - if (FP == kind) - { - return fn(); - } - else if (FPA == kind) - { - return fnA(obj); - } - else - { - return functional(); - } - } - - protected: - enum { FUNC, FP, FPA } kind; - union { - FunctionType functional; - FunPtr fn; - struct { - FunAPtr fnA; - A obj; - }; - }; - }; -#else - template - class DelegateImpl { - public: - using target_type = R(); - protected: - using FunPtr = target_type*; - using FunAPtr = R(*)(A); - using FunVPPtr = R(*)(void*); - public: - DelegateImpl() - { - kind = FP; - fn = nullptr; - } - - DelegateImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - DelegateImpl(const DelegateImpl& del) - { - kind = del.kind; - if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - } - - DelegateImpl(DelegateImpl&& del) - { - kind = del.kind; - if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - } - - DelegateImpl(FunAPtr fnA, const A& obj) - { - kind = FPA; - DelegateImpl::fnA = fnA; - this->obj = obj; - } - - DelegateImpl(FunAPtr fnA, A&& obj) - { - kind = FPA; - DelegateImpl::fnA = fnA; - this->obj = std::move(obj); - } - - DelegateImpl(FunPtr fn) - { - kind = FP; - DelegateImpl::fn = fn; - } - - template DelegateImpl(F fn) - { - kind = FP; - DelegateImpl::fn = std::forward(fn); - } - - DelegateImpl& operator=(const DelegateImpl& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FPA == kind) - { - obj = {}; - } - kind = del.kind; - } - if (FPA == del.kind) - { - fnA = del.fnA; - obj = del.obj; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(DelegateImpl&& del) - { - if (this == &del) return *this; - if (kind != del.kind) - { - if (FPA == kind) - { - obj = {}; - } - kind = del.kind; - } - if (FPA == del.kind) - { - fnA = del.fnA; - obj = std::move(del.obj); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(FunPtr fn) - { - if (FPA == kind) - { - obj = {}; - } - kind = FP; - this->fn = fn; - return *this; - } - - DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FPA == kind) - { - obj = {}; - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else - { - return fnA; - } - } - - static R IRAM_ATTR vPtrToFunAPtrExec(void* self) - { - return static_cast(self)->fnA( - static_cast(self)->obj); - }; - - operator FunVPPtr() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else - { - return vPtrToFunAPtrExec; - } - } - - void* arg() const - { - if (FP == kind) - { - return nullptr; - } - else - { - return const_cast(this); - } - } - - R IRAM_ATTR operator()() const - { - if (FP == kind) - { - return fn(); - } - else - { - return fnA(obj); - } - } - - protected: - enum { FP, FPA } kind; - union { - FunPtr fn; - FunAPtr fnA; - }; - A obj; - }; -#endif - -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - template - class DelegateImpl { - public: - using target_type = R(); - protected: - using FunPtr = target_type*; - using FunctionType = std::function; - using FunVPPtr = R(*)(void*); - public: - DelegateImpl() - { - kind = FP; - fn = nullptr; - } - - DelegateImpl(std::nullptr_t) - { - kind = FP; - fn = nullptr; - } - - ~DelegateImpl() - { - if (FUNC == kind) - functional.~FunctionType(); - } - - DelegateImpl(const DelegateImpl& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(del.functional); - } - else - { - fn = del.fn; - } - } - - DelegateImpl(DelegateImpl&& del) - { - kind = del.kind; - if (FUNC == del.kind) - { - new (&functional) FunctionType(std::move(del.functional)); - } - else - { - fn = del.fn; - } - } - - DelegateImpl(FunPtr fn) - { - kind = FP; - DelegateImpl::fn = fn; - } - - template DelegateImpl(F functional) - { - kind = FUNC; - new (&this->functional) FunctionType(std::forward(functional)); - } - - DelegateImpl& operator=(const DelegateImpl& del) - { - if (this == &del) return *this; - if (FUNC == kind && FUNC != del.kind) - { - functional.~FunctionType(); - } - else if (FUNC != kind && FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - kind = del.kind; - if (FUNC == del.kind) - { - functional = del.functional; - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(DelegateImpl&& del) - { - if (this == &del) return *this; - if (FUNC == kind && FUNC != del.kind) - { - functional.~FunctionType(); - } - else if (FUNC != kind && FUNC == del.kind) - { - new (&this->functional) FunctionType(); - } - kind = del.kind; - if (FUNC == del.kind) - { - functional = std::move(del.functional); - } - else - { - fn = del.fn; - } - return *this; - } - - DelegateImpl& operator=(FunPtr fn) - { - if (FUNC == kind) - { - functional.~FunctionType(); - kind = FP; - } - DelegateImpl::fn = fn; - return *this; - } - - DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) - { - if (FUNC == kind) - { - functional.~FunctionType(); - } - kind = FP; - fn = nullptr; - return *this; - } - - operator bool() const - { - if (FP == kind) - { - return fn; - } - else - { - return functional ? true : false; - } - } - - operator FunVPPtr() const - { - if (FP == kind) - { - return reinterpret_cast(fn); - } - else - { - return [](void* self) -> R - { - return static_cast(self)->functional(); - }; - } - } - - void* arg() const - { - if (FP == kind) - { - return nullptr; - } - else - { - return const_cast(this); - } - } - - operator FunctionType() const - { - if (FP == kind) - { - return fn; - } - else - { - return functional; - } - } - - R IRAM_ATTR operator()() const - { - if (FP == kind) - { - return fn(); - } - else - { - return functional(); - } - } - - protected: - enum { FUNC, FP } kind; - union { - FunctionType functional; - FunPtr fn; - }; - }; -#else - template - class DelegateImpl { - public: - using target_type = R(); - protected: - using FunPtr = target_type*; - using FunVPPtr = R(*)(void*); - public: - DelegateImpl() - { - fn = nullptr; - } - - DelegateImpl(std::nullptr_t) - { - fn = nullptr; - } - - DelegateImpl(const DelegateImpl& del) - { - fn = del.fn; - } - - DelegateImpl(DelegateImpl&& del) - { - fn = std::move(del.fn); - } - - DelegateImpl(FunPtr fn) - { - DelegateImpl::fn = fn; - } - - template DelegateImpl(F fn) - { - DelegateImpl::fn = std::forward(fn); - } - - DelegateImpl& operator=(const DelegateImpl& del) - { - if (this == &del) return *this; - fn = del.fn; - return *this; - } - - DelegateImpl& operator=(DelegateImpl&& del) - { - if (this == &del) return *this; - fn = std::move(del.fn); - return *this; - } - - DelegateImpl& operator=(FunPtr fn) - { - DelegateImpl::fn = fn; - return *this; - } - - DelegateImpl& IRAM_ATTR operator=(std::nullptr_t) - { - fn = nullptr; - return *this; - } - - operator bool() const - { - return fn; - } - - operator FunVPPtr() const - { - return reinterpret_cast(fn); - } - - void* arg() const - { - return nullptr; - } - - R IRAM_ATTR operator()() const - { - return fn(); - } - - protected: - FunPtr fn; - }; -#endif - - template - class Delegate : private detail::DelegatePImpl - { - private: - using typename detail::DelegatePImpl::FunVPPtr; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using typename detail::DelegatePImpl::FunctionType; -#endif - public: - using detail::DelegatePImpl::target_type; - using detail::DelegatePImpl::DelegatePImpl; - using detail::DelegatePImpl::operator=; - using detail::DelegatePImpl::operator bool; - using detail::DelegatePImpl::operator FunVPPtr; - using detail::DelegatePImpl::arg; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using detail::DelegatePImpl::operator FunctionType; -#endif - using detail::DelegatePImpl::operator(); - }; - - template - class Delegate : private detail::DelegatePImpl - { - private: - using typename detail::DelegatePImpl::FunVPPtr; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using typename detail::DelegatePImpl::FunctionType; -#endif - public: - using detail::DelegatePImpl::target_type; - using detail::DelegatePImpl::DelegatePImpl; - using detail::DelegatePImpl::operator=; - using detail::DelegatePImpl::operator bool; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using detail::DelegatePImpl::operator FunctionType; -#endif - using detail::DelegatePImpl::operator(); - operator FunVPPtr() const - { - if (detail::DelegatePImpl::FPA == detail::DelegatePImpl::kind) - { - return reinterpret_cast(detail::DelegatePImpl::fnA); - } - else - { - return detail::DelegatePImpl::operator FunVPPtr(); - } - } - void* arg() const - { - if (detail::DelegatePImpl::FPA == detail::DelegatePImpl::kind) - { - return detail::DelegatePImpl::obj; - } - else - { - return detail::DelegatePImpl::arg(); - } - } - }; - - template - class Delegate : private detail::DelegateImpl - { - private: - using typename detail::DelegateImpl::FunVPPtr; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using typename detail::DelegateImpl::FunctionType; -#endif - public: - using detail::DelegateImpl::target_type; - using detail::DelegateImpl::DelegateImpl; - using detail::DelegateImpl::operator=; - using detail::DelegateImpl::operator bool; - using detail::DelegateImpl::operator FunVPPtr; - using detail::DelegateImpl::arg; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using detail::DelegateImpl::operator FunctionType; -#endif - using detail::DelegateImpl::operator(); - }; - - template - class Delegate : private detail::DelegateImpl - { - private: - using typename detail::DelegateImpl::FunVPPtr; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using typename detail::DelegateImpl::FunctionType; -#endif - public: - using detail::DelegateImpl::target_type; - using detail::DelegateImpl::DelegateImpl; - using detail::DelegateImpl::operator=; - using detail::DelegateImpl::operator bool; -#if !defined(ARDUINO) || defined(ESP8266) || defined(ESP32) - using detail::DelegateImpl::operator FunctionType; -#endif - using detail::DelegateImpl::operator(); - operator FunVPPtr() const - { - if (detail::DelegateImpl::FPA == detail::DelegateImpl::kind) - { - return reinterpret_cast(detail::DelegateImpl::fnA); - } - else - { - return detail::DelegateImpl::operator FunVPPtr(); - } - } - void* arg() const - { - if (detail::DelegateImpl::FPA == detail::DelegateImpl::kind) - { - return detail::DelegateImpl::obj; - } - else - { - return detail::DelegateImpl::arg(); - } - } - }; - -} - -template class Delegate; -template class Delegate : public detail::Delegate -{ -public: - using detail::Delegate::Delegate; -}; -template class Delegate : public detail::Delegate -{ -public: - using detail::Delegate::Delegate; -}; - -#endif // __Delegate_h diff --git a/lib/EspSoftwareSerial/src/circular_queue/MultiDelegate.h b/lib/EspSoftwareSerial/src/circular_queue/MultiDelegate.h deleted file mode 100644 index 1fd4188d..00000000 --- a/lib/EspSoftwareSerial/src/circular_queue/MultiDelegate.h +++ /dev/null @@ -1,503 +0,0 @@ -/* -MultiDelegate.h - A queue or event multiplexer based on the efficient Delegate -class -Copyright (c) 2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef __MULTIDELEGATE_H -#define __MULTIDELEGATE_H - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -#include -#else -#include "circular_queue/ghostl.h" -#endif - -#if defined(ESP8266) -#include -using esp8266::InterruptLock; -#elif defined(ARDUINO) -class InterruptLock { -public: - InterruptLock() { - noInterrupts(); - } - ~InterruptLock() { - interrupts(); - } -}; -#else -#include -#endif - -namespace detail -{ - namespace - { - template< typename Delegate, typename R, bool ISQUEUE = false, typename... P> - struct CallP - { - static R execute(Delegate& del, P... args) - { - return del(std::forward(args...)) ? !ISQUEUE : ISQUEUE; - } - }; - - template< typename Delegate, bool ISQUEUE, typename... P> - struct CallP - { - static bool execute(Delegate& del, P... args) - { - del(std::forward(args...)); - return !ISQUEUE; - } - }; - - template< typename Delegate, typename R, bool ISQUEUE = false> - struct Call - { - static R execute(Delegate& del) - { - return del() ? !ISQUEUE : ISQUEUE; - } - }; - - template< typename Delegate, bool ISQUEUE> - struct Call - { - static bool execute(Delegate& del) - { - del(); - return !ISQUEUE; - } - }; - }; - - template< typename Delegate, typename R = void, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32, typename... P> - class MultiDelegatePImpl - { - public: - MultiDelegatePImpl() = default; - ~MultiDelegatePImpl() - { - *this = nullptr; - } - - MultiDelegatePImpl(const MultiDelegatePImpl&) = delete; - MultiDelegatePImpl& operator=(const MultiDelegatePImpl&) = delete; - - MultiDelegatePImpl(MultiDelegatePImpl&& md) - { - first = md.first; - last = md.last; - unused = md.unused; - nodeCount = md.nodeCount; - md.first = nullptr; - md.last = nullptr; - md.unused = nullptr; - md.nodeCount = 0; - } - - MultiDelegatePImpl(const Delegate& del) - { - add(del); - } - - MultiDelegatePImpl(Delegate&& del) - { - add(std::move(del)); - } - - MultiDelegatePImpl& operator=(MultiDelegatePImpl&& md) - { - first = md.first; - last = md.last; - unused = md.unused; - nodeCount = md.nodeCount; - md.first = nullptr; - md.last = nullptr; - md.unused = nullptr; - md.nodeCount = 0; - return *this; - } - - MultiDelegatePImpl& operator=(std::nullptr_t) - { - if (last) - last->mNext = unused; - if (first) - unused = first; - while (unused) - { - auto to_delete = unused; - unused = unused->mNext; - delete(to_delete); - } - return *this; - } - - MultiDelegatePImpl& operator+=(const Delegate& del) - { - add(del); - return *this; - } - - MultiDelegatePImpl& operator+=(Delegate&& del) - { - add(std::move(del)); - return *this; - } - - protected: - struct Node_t - { - ~Node_t() - { - mDelegate = nullptr; // special overload in Delegate - } - Node_t* mNext = nullptr; - Delegate mDelegate; - }; - - Node_t* first = nullptr; - Node_t* last = nullptr; - Node_t* unused = nullptr; - uint32_t nodeCount = 0; - - // Returns a pointer to an unused Node_t, - // or if none are available allocates a new one, - // or nullptr if limit is reached - Node_t* IRAM_ATTR get_node_unsafe() - { - Node_t* result = nullptr; - // try to get an item from unused items list - if (unused) - { - result = unused; - unused = unused->mNext; - } - // if no unused items, and count not too high, allocate a new one - else if (nodeCount < QUEUE_CAPACITY) - { -#if defined(ESP8266) || defined(ESP32) - result = new (std::nothrow) Node_t; -#else - result = new Node_t; -#endif - if (result) - ++nodeCount; - } - return result; - } - - void recycle_node_unsafe(Node_t* node) - { - node->mDelegate = nullptr; // special overload in Delegate - node->mNext = unused; - unused = node; - } - -#ifndef ARDUINO - std::mutex mutex_unused; -#endif - public: - const Delegate* IRAM_ATTR add(const Delegate& del) - { - return add(Delegate(del)); - } - - const Delegate* IRAM_ATTR add(Delegate&& del) - { - if (!del) - return nullptr; - -#ifdef ARDUINO - InterruptLock lockAllInterruptsInThisScope; -#else - std::lock_guard lock(mutex_unused); -#endif - - Node_t* item = ISQUEUE ? get_node_unsafe() : -#if defined(ESP8266) || defined(ESP32) - new (std::nothrow) Node_t; -#else - new Node_t; -#endif - if (!item) - return nullptr; - - item->mDelegate = std::move(del); - item->mNext = nullptr; - - if (last) - last->mNext = item; - else - first = item; - last = item; - - return &item->mDelegate; - } - - bool remove(const Delegate* del) - { - auto current = first; - if (!current) - return false; - - Node_t* prev = nullptr; - do - { - if (del == ¤t->mDelegate) - { - // remove callback from stack -#ifdef ARDUINO - InterruptLock lockAllInterruptsInThisScope; -#else - std::lock_guard lock(mutex_unused); -#endif - - auto to_recycle = current; - - // removing rLast - if (last == current) - last = prev; - - current = current->mNext; - if (prev) - { - prev->mNext = current; - } - else - { - first = current; - } - - if (ISQUEUE) - recycle_node_unsafe(to_recycle); - else - delete to_recycle; - return true; - } - else - { - prev = current; - current = current->mNext; - } - } while (current); - return false; - } - - void operator()(P... args) - { - auto current = first; - if (!current) - return; - - static std::atomic fence(false); - // prevent recursive calls -#if defined(ARDUINO) && !defined(ESP32) - if (fence.load()) return; - fence.store(true); -#else - if (fence.exchange(true)) return; -#endif - - Node_t* prev = nullptr; - // prevent execution of new callbacks during this run - auto stop = last; - - bool done; - do - { - done = current == stop; - if (!CallP::execute(current->mDelegate, args...)) - { - // remove callback from stack -#ifdef ARDUINO - InterruptLock lockAllInterruptsInThisScope; -#else - std::lock_guard lock(mutex_unused); -#endif - - auto to_recycle = current; - - // removing rLast - if (last == current) - last = prev; - - current = current->mNext; - if (prev) - { - prev->mNext = current; - } - else - { - first = current; - } - - if (ISQUEUE) - recycle_node_unsafe(to_recycle); - else - delete to_recycle; - } - else - { - prev = current; - current = current->mNext; - } - -#if defined(ESP8266) || defined(ESP32) - // running callbacks might last too long for watchdog etc. - optimistic_yield(10000); -#endif - } while (current && !done); - - fence.store(false); - } - }; - - template< typename Delegate, typename R = void, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32> - class MultiDelegateImpl : public MultiDelegatePImpl - { - protected: - using typename MultiDelegatePImpl::Node_t; - using MultiDelegatePImpl::first; - using MultiDelegatePImpl::last; - using MultiDelegatePImpl::unused; - using MultiDelegatePImpl::nodeCount; - using MultiDelegatePImpl::recycle_node_unsafe; -#ifndef ARDUINO - using MultiDelegatePImpl::mutex_unused; -#endif - - public: - using MultiDelegatePImpl::MultiDelegatePImpl; - - void operator()() - { - auto current = first; - if (!current) - return; - - static std::atomic fence(false); - // prevent recursive calls -#if defined(ARDUINO) && !defined(ESP32) - if (fence.load()) return; - fence.store(true); -#else - if (fence.exchange(true)) return; -#endif - - Node_t* prev = nullptr; - // prevent execution of new callbacks during this run - auto stop = last; - - bool done; - do - { - done = current == stop; - if (!Call::execute(current->mDelegate)) - { - // remove callback from stack -#ifdef ARDUINO - InterruptLock lockAllInterruptsInThisScope; -#else - std::lock_guard lock(mutex_unused); -#endif - - auto to_recycle = current; - - // removing rLast - if (last == current) - last = prev; - - current = current->mNext; - if (prev) - { - prev->mNext = current; - } - else - { - first = current; - } - - if (ISQUEUE) - recycle_node_unsafe(to_recycle); - else - delete to_recycle; - } - else - { - prev = current; - current = current->mNext; - } - -#if defined(ESP8266) || defined(ESP32) - // running callbacks might last too long for watchdog etc. - optimistic_yield(10000); -#endif - } while (current && !done); - - fence.store(false); - } - }; - - template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY, typename... P> class MultiDelegate; - - template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY, typename... P> - class MultiDelegate : public MultiDelegatePImpl - { - public: - using MultiDelegatePImpl::MultiDelegatePImpl; - }; - - template< typename Delegate, typename R, bool ISQUEUE, uint32_t QUEUE_CAPACITY> - class MultiDelegate : public MultiDelegateImpl - { - public: - using MultiDelegateImpl::MultiDelegateImpl; - }; -}; - -/** -The MultiDelegate class template can be specialized to either a queue or an event multiplexer. -It is designed to be used with Delegate, the efficient runtime wrapper for C function ptr and C++ std::function. -@tparam Delegate specifies the concrete type that MultiDelegate bases the queue or event multiplexer on. -@tparam ISQUEUE modifies the generated MultiDelegate class in subtle ways. In queue mode (ISQUEUE == true), - the value of QUEUE_CAPACITY enforces the maximum number of simultaneous items the queue can contain. - This is exploited to minimize the use of new and delete by reusing already allocated items, thus - reducing heap fragmentation. In event multiplexer mode (ISQUEUE = false), new and delete are - used for allocation of the event handler items. - If the result type of the function call operator of Delegate is void, calling a MultiDelegate queue - removes each item after calling it; a Multidelegate event multiplexer keeps event handlers until - explicitly removed. - If the result type of the function call operator of Delegate is non-void, the type-conversion to bool - of that result determines if the item is immediately removed or kept after each call: a Multidelegate - queue removes an item only if true is returned, but a Multidelegate event multiplexer removes event - handlers that return false. -@tparam QUEUE_CAPACITY is only used if ISQUEUE == true. Then, it sets the maximum capacity that the queue dynamically - allocates from the heap. Unused items are not returned to the heap, but are managed by the MultiDelegate - instance during its own lifetime for efficiency. -*/ -template< typename Delegate, bool ISQUEUE = false, uint32_t QUEUE_CAPACITY = 32> -class MultiDelegate : public detail::MultiDelegate -{ -public: - using detail::MultiDelegate::MultiDelegate; -}; - -#endif // __MULTIDELEGATE_H diff --git a/lib/EspSoftwareSerial/src/circular_queue/circular_queue.h b/lib/EspSoftwareSerial/src/circular_queue/circular_queue.h deleted file mode 100644 index 46e3f66e..00000000 --- a/lib/EspSoftwareSerial/src/circular_queue/circular_queue.h +++ /dev/null @@ -1,399 +0,0 @@ -/* -circular_queue.h - Implementation of a lock-free circular queue for EspSoftwareSerial. -Copyright (c) 2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef __circular_queue_h -#define __circular_queue_h - -#ifdef ARDUINO -#include -#endif - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -#include -#include -#include -#include "Delegate.h" -using std::min; -#else -#include "ghostl.h" -#endif - -#if !defined(ESP32) && !defined(ESP8266) -#define ICACHE_RAM_ATTR -#define IRAM_ATTR -#endif - -/*! - @brief Instance class for a single-producer, single-consumer circular queue / ring buffer (FIFO). - This implementation is lock-free between producer and consumer for the available(), peek(), - pop(), and push() type functions. -*/ -template< typename T, typename ForEachArg = void > -class circular_queue -{ -public: - /*! - @brief Constructs a valid, but zero-capacity dummy queue. - */ - circular_queue() : m_bufSize(1) - { - m_inPos.store(0); - m_outPos.store(0); - } - /*! - @brief Constructs a queue of the given maximum capacity. - */ - circular_queue(const size_t capacity) : m_bufSize(capacity + 1), m_buffer(new T[m_bufSize]) - { - m_inPos.store(0); - m_outPos.store(0); - } - circular_queue(circular_queue&& cq) : - m_bufSize(cq.m_bufSize), m_buffer(cq.m_buffer), m_inPos(cq.m_inPos.load()), m_outPos(cq.m_outPos.load()) - {} - ~circular_queue() - { - m_buffer.reset(); - } - circular_queue(const circular_queue&) = delete; - circular_queue& operator=(circular_queue&& cq) - { - m_bufSize = cq.m_bufSize; - m_buffer = cq.m_buffer; - m_inPos.store(cq.m_inPos.load()); - m_outPos.store(cq.m_outPos.load()); - } - circular_queue& operator=(const circular_queue&) = delete; - - /*! - @brief Get the numer of elements the queue can hold at most. - */ - size_t capacity() const - { - return m_bufSize - 1; - } - - /*! - @brief Resize the queue. The available elements in the queue are preserved. - This is not lock-free and concurrent producer or consumer access - will lead to corruption. - @return True if the new capacity could accommodate the present elements in - the queue, otherwise nothing is done and false is returned. - */ - bool capacity(const size_t cap); - - /*! - @brief Discard all data in the queue. - */ - void flush() - { - m_outPos.store(m_inPos.load()); - } - - /*! - @brief Get a snapshot number of elements that can be retrieved by pop. - */ - size_t available() const - { - int avail = static_cast(m_inPos.load() - m_outPos.load()); - if (avail < 0) avail += m_bufSize; - return avail; - } - - /*! - @brief Get the remaining free elementes for pushing. - */ - size_t available_for_push() const - { - int avail = static_cast(m_outPos.load() - m_inPos.load()) - 1; - if (avail < 0) avail += m_bufSize; - return avail; - } - - /*! - @brief Peek at the next element pop will return without removing it from the queue. - @return An rvalue copy of the next element that can be popped. If the queue is empty, - return an rvalue copy of the element that is pending the next push. - */ - T peek() const - { - const auto outPos = m_outPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - return m_buffer[outPos]; - } - - /*! - @brief Peek at the next pending input value. - @return A reference to the next element that can be pushed. - */ - T& IRAM_ATTR pushpeek() - { - const auto inPos = m_inPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - return m_buffer[inPos]; - } - - /*! - @brief Release the next pending input value, accessible by pushpeek(), into the queue. - @return true if the queue accepted the value, false if the queue - was full. - */ - bool IRAM_ATTR push(); - - /*! - @brief Move the rvalue parameter into the queue. - @return true if the queue accepted the value, false if the queue - was full. - */ - bool IRAM_ATTR push(T&& val); - - /*! - @brief Push a copy of the parameter into the queue. - @return true if the queue accepted the value, false if the queue - was full. - */ - bool IRAM_ATTR push(const T& val) - { - return push(T(val)); - } - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) - /*! - @brief Push copies of multiple elements from a buffer into the queue, - in order, beginning at buffer's head. - @return The number of elements actually copied into the queue, counted - from the buffer head. - */ - size_t push_n(const T* buffer, size_t size); -#endif - - /*! - @brief Pop the next available element from the queue. - @return An rvalue copy of the popped element, or a default - value of type T if the queue is empty. - */ - T pop(); - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) - /*! - @brief Pop multiple elements in ordered sequence from the queue to a buffer. - If buffer is nullptr, simply discards up to size elements from the queue. - @return The number of elements actually popped from the queue to - buffer. - */ - size_t pop_n(T* buffer, size_t size); -#endif - - /*! - @brief Iterate over and remove each available element from queue, - calling back fun with an rvalue reference of every single element. - */ -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) - void for_each(const Delegate& fun); -#else - void for_each(Delegate fun); -#endif - - /*! - @brief In reverse order, iterate over, pop and optionally requeue each available element from the queue, - calling back fun with a reference of every single element. - Requeuing is dependent on the return boolean of the callback function. If it - returns true, the requeue occurs. - */ -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) - bool for_each_rev_requeue(const Delegate& fun); -#else - bool for_each_rev_requeue(Delegate fun); -#endif - -protected: - const T defaultValue = {}; - unsigned m_bufSize; -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) - std::unique_ptr m_buffer; -#else - std::unique_ptr m_buffer; -#endif - std::atomic m_inPos; - std::atomic m_outPos; -}; - -template< typename T, typename ForEachArg > -bool circular_queue::capacity(const size_t cap) -{ - if (cap + 1 == m_bufSize) return true; - else if (available() > cap) return false; - std::unique_ptr buffer(new T[cap + 1]); - const auto available = pop_n(buffer, cap); - m_buffer.reset(buffer); - m_bufSize = cap + 1; - std::atomic_thread_fence(std::memory_order_release); - m_inPos.store(available, std::memory_order_relaxed); - m_outPos.store(0, std::memory_order_release); - return true; -} - -template< typename T, typename ForEachArg > -bool IRAM_ATTR circular_queue::push() -{ - const auto inPos = m_inPos.load(std::memory_order_acquire); - const unsigned next = (inPos + 1) % m_bufSize; - if (next == m_outPos.load(std::memory_order_relaxed)) { - return false; - } - - std::atomic_thread_fence(std::memory_order_acquire); - - m_inPos.store(next, std::memory_order_release); - return true; -} - -template< typename T, typename ForEachArg > -bool IRAM_ATTR circular_queue::push(T&& val) -{ - const auto inPos = m_inPos.load(std::memory_order_acquire); - const unsigned next = (inPos + 1) % m_bufSize; - if (next == m_outPos.load(std::memory_order_relaxed)) { - return false; - } - - std::atomic_thread_fence(std::memory_order_acquire); - - m_buffer[inPos] = std::move(val); - - std::atomic_thread_fence(std::memory_order_release); - - m_inPos.store(next, std::memory_order_release); - return true; -} - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -template< typename T, typename ForEachArg > -size_t circular_queue::push_n(const T* buffer, size_t size) -{ - const auto inPos = m_inPos.load(std::memory_order_acquire); - const auto outPos = m_outPos.load(std::memory_order_relaxed); - - size_t blockSize = (outPos > inPos) ? outPos - 1 - inPos : (outPos == 0) ? m_bufSize - 1 - inPos : m_bufSize - inPos; - blockSize = min(size, blockSize); - if (!blockSize) return 0; - int next = (inPos + blockSize) % m_bufSize; - - std::atomic_thread_fence(std::memory_order_acquire); - - auto dest = m_buffer.get() + inPos; - std::copy_n(std::make_move_iterator(buffer), blockSize, dest); - size = min(size - blockSize, outPos > 1 ? static_cast(outPos - next - 1) : 0); - next += size; - dest = m_buffer.get(); - std::copy_n(std::make_move_iterator(buffer + blockSize), size, dest); - - std::atomic_thread_fence(std::memory_order_release); - - m_inPos.store(next, std::memory_order_release); - return blockSize + size; -} -#endif - -template< typename T, typename ForEachArg > -T circular_queue::pop() -{ - const auto outPos = m_outPos.load(std::memory_order_acquire); - if (m_inPos.load(std::memory_order_relaxed) == outPos) return defaultValue; - - std::atomic_thread_fence(std::memory_order_acquire); - - auto val = std::move(m_buffer[outPos]); - - std::atomic_thread_fence(std::memory_order_release); - - m_outPos.store((outPos + 1) % m_bufSize, std::memory_order_release); - return val; -} - -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -template< typename T, typename ForEachArg > -size_t circular_queue::pop_n(T* buffer, size_t size) { - size_t avail = size = min(size, available()); - if (!avail) return 0; - const auto outPos = m_outPos.load(std::memory_order_acquire); - size_t n = min(avail, static_cast(m_bufSize - outPos)); - - std::atomic_thread_fence(std::memory_order_acquire); - - if (buffer) { - buffer = std::copy_n(std::make_move_iterator(m_buffer.get() + outPos), n, buffer); - avail -= n; - std::copy_n(std::make_move_iterator(m_buffer.get()), avail, buffer); - } - - std::atomic_thread_fence(std::memory_order_release); - - m_outPos.store((outPos + size) % m_bufSize, std::memory_order_release); - return size; -} -#endif - -template< typename T, typename ForEachArg > -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -void circular_queue::for_each(const Delegate& fun) -#else -void circular_queue::for_each(Delegate fun) -#endif -{ - auto outPos = m_outPos.load(std::memory_order_acquire); - const auto inPos = m_inPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - while (outPos != inPos) - { - fun(std::move(m_buffer[outPos])); - std::atomic_thread_fence(std::memory_order_release); - outPos = (outPos + 1) % m_bufSize; - m_outPos.store(outPos, std::memory_order_release); - } -} - -template< typename T, typename ForEachArg > -#if defined(ESP8266) || defined(ESP32) || !defined(ARDUINO) -bool circular_queue::for_each_rev_requeue(const Delegate& fun) -#else -bool circular_queue::for_each_rev_requeue(Delegate fun) -#endif -{ - auto inPos0 = circular_queue::m_inPos.load(std::memory_order_acquire); - auto outPos = circular_queue::m_outPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - if (outPos == inPos0) return false; - auto pos = inPos0; - auto outPos1 = inPos0; - const auto posDecr = circular_queue::m_bufSize - 1; - do { - pos = (pos + posDecr) % circular_queue::m_bufSize; - T&& val = std::move(circular_queue::m_buffer[pos]); - if (fun(val)) - { - outPos1 = (outPos1 + posDecr) % circular_queue::m_bufSize; - if (outPos1 != pos) circular_queue::m_buffer[outPos1] = std::move(val); - } - } while (pos != outPos); - circular_queue::m_outPos.store(outPos1, std::memory_order_release); - return true; -} - -#endif // __circular_queue_h diff --git a/lib/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h b/lib/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h deleted file mode 100644 index 7024247a..00000000 --- a/lib/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h +++ /dev/null @@ -1,200 +0,0 @@ -/* -circular_queue_mp.h - Implementation of a lock-free circular queue for EspSoftwareSerial. -Copyright (c) 2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef __circular_queue_mp_h -#define __circular_queue_mp_h - -#include "circular_queue.h" - -#ifdef ESP8266 -#include "interrupts.h" -#else -#include -#endif - -/*! - @brief Instance class for a multi-producer, single-consumer circular queue / ring buffer (FIFO). - This implementation is lock-free between producers and consumer for the available(), peek(), - pop(), and push() type functions, but is guarded to safely allow only a single producer - at any instant. -*/ -template< typename T, typename ForEachArg = void > -class circular_queue_mp : protected circular_queue -{ -public: - circular_queue_mp() = default; - circular_queue_mp(const size_t capacity) : circular_queue(capacity) - {} - circular_queue_mp(circular_queue&& cq) : circular_queue(std::move(cq)) - {} - using circular_queue::operator=; - using circular_queue::capacity; - using circular_queue::flush; - using circular_queue::available; - using circular_queue::available_for_push; - using circular_queue::peek; - using circular_queue::pop; - using circular_queue::pop_n; - using circular_queue::for_each; - using circular_queue::for_each_rev_requeue; - - /*! - @brief Resize the queue. The available elements in the queue are preserved. - This is not lock-free, but safe, concurrent producer or consumer access - is guarded. - @return True if the new capacity could accommodate the present elements in - the queue, otherwise nothing is done and false is returned. - */ - bool capacity(const size_t cap) - { -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - return circular_queue::capacity(cap); - } - - bool IRAM_ATTR push() = delete; - - /*! - @brief Move the rvalue parameter into the queue, guarded - for multiple concurrent producers. - @return true if the queue accepted the value, false if the queue - was full. - */ - bool IRAM_ATTR push(T&& val) - { -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - return circular_queue::push(std::move(val)); - } - - /*! - @brief Push a copy of the parameter into the queue, guarded - for multiple concurrent producers. - @return true if the queue accepted the value, false if the queue - was full. - */ - bool IRAM_ATTR push(const T& val) - { -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - return circular_queue::push(val); - } - - /*! - @brief Push copies of multiple elements from a buffer into the queue, - in order, beginning at buffer's head. This is guarded for - multiple producers, push_n() is atomic. - @return The number of elements actually copied into the queue, counted - from the buffer head. - */ - size_t push_n(const T* buffer, size_t size) - { -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - return circular_queue::push_n(buffer, size); - } - - /*! - @brief Pops the next available element from the queue, requeues - it immediately. - @return A reference to the just requeued element, or the default - value of type T if the queue is empty. - */ - T& pop_requeue(); - - /*! - @brief Iterate over, pop and optionally requeue each available element from the queue, - calling back fun with a reference of every single element. - Requeuing is dependent on the return boolean of the callback function. If it - returns true, the requeue occurs. - */ - bool for_each_requeue(const Delegate& fun); - -#ifndef ESP8266 -protected: - std::mutex m_pushMtx; -#endif -}; - -template< typename T, typename ForEachArg > -T& circular_queue_mp::pop_requeue() -{ -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - const auto outPos = circular_queue::m_outPos.load(std::memory_order_acquire); - const auto inPos = circular_queue::m_inPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - if (inPos == outPos) return circular_queue::defaultValue; - T& val = circular_queue::m_buffer[inPos] = std::move(circular_queue::m_buffer[outPos]); - const auto bufSize = circular_queue::m_bufSize; - std::atomic_thread_fence(std::memory_order_release); - circular_queue::m_outPos.store((outPos + 1) % bufSize, std::memory_order_relaxed); - circular_queue::m_inPos.store((inPos + 1) % bufSize, std::memory_order_release); - return val; -} - -template< typename T, typename ForEachArg > -bool circular_queue_mp::for_each_requeue(const Delegate& fun) -{ - auto inPos0 = circular_queue::m_inPos.load(std::memory_order_acquire); - auto outPos = circular_queue::m_outPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - if (outPos == inPos0) return false; - do { - T&& val = std::move(circular_queue::m_buffer[outPos]); - if (fun(val)) - { -#ifdef ESP8266 - esp8266::InterruptLock lock; -#else - std::lock_guard lock(m_pushMtx); -#endif - std::atomic_thread_fence(std::memory_order_release); - auto inPos = circular_queue::m_inPos.load(std::memory_order_relaxed); - std::atomic_thread_fence(std::memory_order_acquire); - circular_queue::m_buffer[inPos] = std::move(val); - std::atomic_thread_fence(std::memory_order_release); - circular_queue::m_inPos.store((inPos + 1) % circular_queue::m_bufSize, std::memory_order_release); - } - else - { - std::atomic_thread_fence(std::memory_order_release); - } - outPos = (outPos + 1) % circular_queue::m_bufSize; - circular_queue::m_outPos.store(outPos, std::memory_order_release); - } while (outPos != inPos0); - return true; -} - -#endif // __circular_queue_mp_h diff --git a/lib/EspSoftwareSerial/src/circular_queue/ghostl.h b/lib/EspSoftwareSerial/src/circular_queue/ghostl.h deleted file mode 100644 index 11683805..00000000 --- a/lib/EspSoftwareSerial/src/circular_queue/ghostl.h +++ /dev/null @@ -1,92 +0,0 @@ -/* -ghostl.h - Implementation of a bare-bones, mostly no-op, C++ STL shell - that allows building some Arduino ESP8266/ESP32 - libraries on Aruduino AVR. -Copyright (c) 2019 Dirk O. Kaar. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef __ghostl_h -#define __ghostl_h - -#if defined(ARDUINO_ARCH_SAMD) -#include -#endif - -namespace std -{ -#if !defined(ARDUINO_ARCH_SAMD) - typedef enum memory_order { - memory_order_relaxed, - memory_order_acquire, - memory_order_release, - memory_order_seq_cst - } memory_order; - template< typename T > class atomic { - private: - T value; - public: - atomic() {} - atomic(T desired) { value = desired; } - void store(T desired, std::memory_order = std::memory_order_seq_cst) volatile noexcept { value = desired; } - T load(std::memory_order = std::memory_order_seq_cst) const volatile noexcept { return value; } - }; - inline void atomic_thread_fence(std::memory_order order) noexcept {} - template< typename T > T&& move(T& t) noexcept { return static_cast(t); } -#endif - - template< typename T, unsigned long N > struct array - { - T _M_elems[N]; - decltype(sizeof(0)) size() const { return N; } - T& operator[](decltype(sizeof(0)) i) { return _M_elems[i]; } - const T& operator[](decltype(sizeof(0)) i) const { return _M_elems[i]; } - }; - - template< typename T > class unique_ptr - { - public: - using pointer = T*; - unique_ptr() noexcept : ptr(nullptr) {} - unique_ptr(pointer p) : ptr(p) {} - pointer operator->() const noexcept { return ptr; } - T& operator[](decltype(sizeof(0)) i) const { return ptr[i]; } - void reset(pointer p = pointer()) noexcept - { - delete ptr; - ptr = p; - } - T& operator*() const { return *ptr; } - private: - pointer ptr; - }; - - template< typename T > using function = T*; - using nullptr_t = decltype(nullptr); - - template - struct identity { - typedef T type; - }; - - template - inline T&& forward(typename identity::type& t) noexcept - { - return static_cast::type&&>(t); - } -} - -#endif // __ghostl_h diff --git a/lib/SDS011/src/SDS011.cpp b/lib/SDS011/src/SDS011.cpp deleted file mode 100644 index 31efdea4..00000000 --- a/lib/SDS011/src/SDS011.cpp +++ /dev/null @@ -1,191 +0,0 @@ -// SDS011 dust sensor PM2.5 and PM10 -// --------------------- -// -// By R. Zschiegner (rz@madavi.de) -// April 2016 -// -// Documentation: -// - The iNovaFitness SDS011 datasheet -// -// modified by AQ - 2018-11-18 -// - -#include "SDS011.h" - -static const byte SDS_SLEEP[] = { - 0xAA, // head - 0xB4, // command id - 0x06, // data byte 1 - 0x01, // data byte 2 (set mode) - 0x00, // data byte 3 (sleep) - 0x00, // data byte 4 - 0x00, // data byte 5 - 0x00, // data byte 6 - 0x00, // data byte 7 - 0x00, // data byte 8 - 0x00, // data byte 9 - 0x00, // data byte 10 - 0x00, // data byte 11 - 0x00, // data byte 12 - 0x00, // data byte 13 - 0xFF, // data byte 14 (device id byte 1) - 0xFF, // data byte 15 (device id byte 2) - 0x05, // checksum - 0xAB // tail -}; - -static const byte SDS_START[] = { - 0xAA, 0xB4, 0x06, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0xAB}; - -static const byte SDS_CONT_MODE[] = { - 0xAA, 0xB4, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xAB}; - -static const byte SDS_VERSION[] = { - 0xAA, 0xB4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0xAB}; - -const uint8_t SDS_cmd_len = 19; - -SDS011::SDS011(void) { - -} - -// -------------------------------------------------------- -// SDS011:read -// -------------------------------------------------------- -int SDS011::read(float *p25, float *p10) { - byte buffer; - int value; - int len = 0; - int pm10_serial = 0; - int pm25_serial = 0; - int checksum_is; - int checksum_ok = 0; - int error = 1; - - while ((sds_data->available() > 0) && (sds_data->available() >= (10-len))) { - buffer = sds_data->read(); - value = int(buffer); - switch (len) { - case (0): if (value != 170) { len = -1; }; break; - case (1): if (value != 192) { len = -1; }; break; - case (2): pm25_serial = value; checksum_is = value; break; - case (3): pm25_serial += (value << 8); checksum_is += value; break; - case (4): pm10_serial = value; checksum_is += value; break; - case (5): pm10_serial += (value << 8); checksum_is += value; break; - case (6): checksum_is += value; break; - case (7): checksum_is += value; break; - case (8): if (value == (checksum_is % 256)) { checksum_ok = 1; } else { len = -1; }; break; - case (9): if (value != 171) { len = -1; }; break; - } - len++; - if (len == 10 && checksum_ok == 1) { - *p10 = (float)pm10_serial/10.0; - *p25 = (float)pm25_serial/10.0; - len = 0; checksum_ok = 0; pm10_serial = 0.0; pm25_serial = 0.0; checksum_is = 0; - error = 0; - } - yield(); - } - return error; -} - -// -------------------------------------------------------- -// SDS011:sleep -// -------------------------------------------------------- -void SDS011::sleep() { - SDS_cmd(SDS_STOP_CMD); -} - -// -------------------------------------------------------- -// SDS011:wakeup -// -------------------------------------------------------- -void SDS011::wakeup() { - SDS_cmd(SDS_START_CMD); -} - -// -------------------------------------------------------- -// SDS011:continous mode -// -------------------------------------------------------- -void SDS011::contmode(int noOfMinutes) -{ - byte buffer[SDS_cmd_len]; - memcpy(buffer, SDS_CONT_MODE, SDS_cmd_len); - buffer[4] = (byte) noOfMinutes; - buffer[17] = calcChecksum( buffer ); - for (uint8_t i = 0; i < SDS_cmd_len; i++) { - sds_data->write(buffer[i]); - } - sds_data->flush(); - while (sds_data->available() > 0) { - sds_data->read(); - } -// SDS_cmd(SDS_CONTINUOUS_MODE_CMD); -} - -/***************************************************************** - * send SDS011 command (start, stop, continuous mode, version * - *****************************************************************/ -void SDS011::SDS_cmd(const uint8_t cmd) -{ - byte buf[SDS_cmd_len]; - switch (cmd) { - case SDS_START_CMD: - memcpy(buf, SDS_START, SDS_cmd_len); - break; - case SDS_STOP_CMD: - memcpy(buf, SDS_SLEEP, SDS_cmd_len); - break; - case SDS_CONTINUOUS_MODE_CMD: - memcpy(buf, SDS_CONT_MODE, SDS_cmd_len); - break; - case SDS_VERSION_DATE_CMD: - memcpy(buf, SDS_VERSION, SDS_cmd_len); - break; - default: - return; - } - for (uint8_t i = 0; i < SDS_cmd_len; i++) { - sds_data->write(buf[i]); - } - sds_data->flush(); - while (sds_data->available() > 0) { - sds_data->read(); - } - -} - -// -------------------------------------------------------- -// SDS011: calculate checksum -// -------------------------------------------------------- -uint8_t SDS011::calcChecksum( byte *buffer ) -{ - uint8_t value = 0; - - for (uint8_t i = 2; i < 17; i++ ) - { - value += buffer[i]; - value &= 0xff; - } - return value; -} - -void SDS011::begin(uint8_t pin_rx, uint8_t pin_tx) { - _pin_rx = pin_rx; - _pin_tx = pin_tx; - - SoftwareSerial *softSerial = new SoftwareSerial(_pin_rx, _pin_tx); - softSerial->begin(9600); - - sds_data = softSerial; -} - -void SDS011::begin(HardwareSerial* serial) { - Serial.println("SDS011::begin"); -// serial->begin(9600); // why do I have to remove this line? - sds_data = serial; -} - -void SDS011::begin(SoftwareSerial* serial) { - serial->begin(9600); - sds_data = serial; -} diff --git a/lib/SDS011/src/SDS011.h b/lib/SDS011/src/SDS011.h deleted file mode 100644 index f8a013d5..00000000 --- a/lib/SDS011/src/SDS011.h +++ /dev/null @@ -1,40 +0,0 @@ -// SDS011 dust sensor PM2.5 and PM10 -// --------------------------------- -// -// By R. Zschiegner (rz@madavi.de) -// April 2016 -// -// Documentation: -// - The iNovaFitness SDS011 datasheet -// - -#if ARDUINO >= 100 - #include "Arduino.h" -#else - #include "WProgram.h" -#endif - -#include - -// Definition SDS011 sensor 'commands' -#define SDS_START_CMD 1 -#define SDS_STOP_CMD 2 -#define SDS_CONTINUOUS_MODE_CMD 3 -#define SDS_VERSION_DATE_CMD 4 - -class SDS011 { - public: - SDS011(void); - void begin(uint8_t pin_rx, uint8_t pin_tx); - void begin(HardwareSerial* serial); - void begin(SoftwareSerial* serial); - int read(float *p25, float *p10); - void sleep(); - void wakeup(); - void contmode( int ); - private: - void SDS_cmd(const uint8_t); - uint8_t calcChecksum( byte *); - uint8_t _pin_rx, _pin_tx; - Stream *sds_data; -}; diff --git a/platformio.ini b/platformio.ini index 9cba5684..5f8f8570 100644 --- a/platformio.ini +++ b/platformio.ini @@ -73,6 +73,7 @@ lib_deps_sensors = Adafruit BME280 Library@>=2.0.0 Adafruit BMP085 Library@>=1.0.1 BSEC Software Library@1.5.1474 + SDS011 sensor Library lib_deps_basic = ArduinoJson@^5.13.1 76@>=1.2.4 ; #76 Timezone by Jack Christensen diff --git a/src/hal/generic.h b/src/hal/generic.h index 5d56e591..14c83ff5 100644 --- a/src/hal/generic.h +++ b/src/hal/generic.h @@ -10,6 +10,10 @@ // Hardware related definitions for generic ESP32 boards // generic.h is kitchensink with all available options +// SDS011 dust sensor settings +#define HAS_SDS011 1 // use SDS011 +#define SDS011_SERIAL 9600, SERIAL_8N1, GPIO_NUM_19, GPIO_NUM_23 // SDS011 RX, TX + #define HAS_LORA 1 // comment out if device shall not send data via LoRa or has no LoRa #define HAS_SPI 1 // comment out if device shall not send data via SPI // pin definitions for SPI slave interface diff --git a/src/sds011read.cpp b/src/sds011read.cpp index cf6dccdf..0b66c747 100644 --- a/src/sds011read.cpp +++ b/src/sds011read.cpp @@ -3,60 +3,58 @@ // Local logging tag static const char TAG[] = __FILE__; -#include +#include "sds011read.h" // UART(2) is unused in this project #if (HAS_IF482) #error cannot use IF482 together with SDS011 (both use UART#2) #endif -static HardwareSerial sdsSerial(2); // so we use it here -static SDS011 sdsSensor; // fine dust sensor +#ifndef SDS011_SERIAL +#error serial settings for SDS011 connection missing +#endif +static HardwareSerial sdsSerial(2); // so we use it here +static SDS011 sdsSensor; // fine dust sensor // the results of the sensor: -float pm25; +float pm25; float pm10; boolean isSDS011Active; // init -bool sds011_init() -{ - pm25 = pm10 = 0.0; - sdsSerial.begin(9600, SERIAL_8N1, ESP_PIN_RX, ESP_PIN_TX); - sdsSensor.begin (&sdsSerial); - sdsSensor.contmode(0); // for safety: no wakeup/sleep by the sensor - sds011_sleep(); // we do it by ourselves - return true; +bool sds011_init() { + pm25 = pm10 = 0.0; + sdsSerial.begin(SDS011_SERIAL); + sdsSensor.begin(&sdsSerial); + //sdsSensor.contmode(0); // for safety: no wakeup/sleep by the sensor + sds011_sleep(); // we do it by ourselves + return true; } // reading data: -void sds011_loop() -{ - if ( isSDS011Active ) { - int sdsErrorCode = sdsSensor.read(&pm25, &pm10); - if (sdsErrorCode) { - pm25 = pm10 = 0.0; - ESP_LOGI(TAG, "SDS011 error: %d", sdsErrorCode); - } - else { - ESP_LOGI(TAG, "fine-dust-values: %5.1f,%4.1f", pm10, pm25); - } - sds011_sleep(); +void sds011_loop() { + if (isSDS011Active) { + int sdsErrorCode = sdsSensor.read(&pm25, &pm10); + if (sdsErrorCode) { + pm25 = pm10 = 0.0; + ESP_LOGI(TAG, "SDS011 error: %d", sdsErrorCode); + } else { + ESP_LOGI(TAG, "fine-dust-values: %5.1f,%4.1f", pm10, pm25); } - return; + sds011_sleep(); + } + return; } // putting the SDS-sensor to sleep -void sds011_sleep(void) -{ - sdsSensor.sleep(); - isSDS011Active = false; +void sds011_sleep(void) { + sdsSensor.sleep(); + isSDS011Active = false; } // start the SDS-sensor // needs 30 seconds for warming up -void sds011_wakeup() -{ - if ( !isSDS011Active ) { - sdsSensor.wakeup(); - isSDS011Active = true; - } +void sds011_wakeup() { + if (!isSDS011Active) { + sdsSensor.wakeup(); + isSDS011Active = true; + } } diff --git a/src/senddata.cpp b/src/senddata.cpp index 00986562..166bc960 100644 --- a/src/senddata.cpp +++ b/src/senddata.cpp @@ -21,10 +21,6 @@ void SendPayload(uint8_t port, sendprio_t prio) { MessageBuffer_t SendBuffer; // contains MessageSize, MessagePort, MessagePrio, Message[] -//#if (HAS_SDS011) -// sds011_loop(); -//#endif - SendBuffer.MessageSize = payload.getSize(); SendBuffer.MessagePrio = prio; From 12c53a198740ec0f12e69cc08bb864e7a2ccf169 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Wed, 5 Feb 2020 22:35:54 +0100 Subject: [PATCH 094/104] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c6d978ca..066035bf 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Tutorial (in german language): https://www.heise.de/select/make/2019/1/1551099236518668 -**#36C3 attendees: i am on site (27th - 30th)! You might contact me via twitter @RecumbentTravel** + From d1563e59bb0e452b0dc720036b56479723c6b7af Mon Sep 17 00:00:00 2001 From: Cornelio Hopmann Date: Wed, 5 Feb 2020 23:06:05 +0100 Subject: [PATCH 095/104] Added: RGB LED Support --- src/hal/m5fire.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hal/m5fire.h b/src/hal/m5fire.h index 171fa044..0064799c 100644 --- a/src/hal/m5fire.h +++ b/src/hal/m5fire.h @@ -44,6 +44,7 @@ //#define BAT_VOLTAGE_DIVIDER 2 // voltage divider 100k/100k on board #define HAS_LED NOT_A_PIN // no on board LED (?) +#define HAS_RGB_LED SmartLed rgb_led(LED_SK6812, 10, GPIO_NUM_15) // LED_SK6812 RGB LED on GPIO15 #define HAS_BUTTON (39) // on board button A // GPS settings From 66e760391d9161c0c1a683aa41bd3e8c84179c17 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Thu, 6 Feb 2020 14:29:23 +0100 Subject: [PATCH 096/104] Update cyclic.cpp removed some debug-info --- src/cyclic.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/cyclic.cpp b/src/cyclic.cpp index 2fd00037..b0223381 100644 --- a/src/cyclic.cpp +++ b/src/cyclic.cpp @@ -14,9 +14,7 @@ extern boolean isSDS011Active; #endif void housekeeping() { - static int counter = 0; xTaskNotifyFromISR(irqHandlerTask, CYCLIC_IRQ, eSetBits, NULL); -ESP_LOGI( TAG, "in Housekeeping(): %d", counter++); } // do all housekeeping From 853bddd2655233a7ebf7ee07fe12c89591891b20 Mon Sep 17 00:00:00 2001 From: August Quint <49277349+AugustQu@users.noreply.github.com> Date: Thu, 6 Feb 2020 14:30:04 +0100 Subject: [PATCH 097/104] Update senddata.cpp removed some debug-info --- src/senddata.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/senddata.cpp b/src/senddata.cpp index 00986562..577748c4 100644 --- a/src/senddata.cpp +++ b/src/senddata.cpp @@ -9,10 +9,7 @@ extern float pm25; #endif void sendcycle() { - static int counter = 0; xTaskNotifyFromISR(irqHandlerTask, SENDCYCLE_IRQ, eSetBits, NULL); -ESP_LOGI( TAG, "in sendcycle(): %d", counter++); - } // put data to send in RTos Queues used for transmit over channels Lora and SPI From fa2920340cc6df6c4a326d1a7c326f04c8137d6c Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Thu, 6 Feb 2020 16:53:50 +0100 Subject: [PATCH 098/104] SDS011read.cpp: bugfix conditional compile --- src/sds011read.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/sds011read.cpp b/src/sds011read.cpp index 0b66c747..71be06d9 100644 --- a/src/sds011read.cpp +++ b/src/sds011read.cpp @@ -3,15 +3,19 @@ // Local logging tag static const char TAG[] = __FILE__; +#if (HAS_SDS) + #include "sds011read.h" // UART(2) is unused in this project #if (HAS_IF482) #error cannot use IF482 together with SDS011 (both use UART#2) #endif + #ifndef SDS011_SERIAL #error serial settings for SDS011 connection missing #endif + static HardwareSerial sdsSerial(2); // so we use it here static SDS011 sdsSensor; // fine dust sensor @@ -58,3 +62,5 @@ void sds011_wakeup() { isSDS011Active = true; } } + +#endif // HAS_SDS \ No newline at end of file From f8db28186908761a49b0f14c6e3bd410558e52a0 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Fri, 7 Feb 2020 22:57:06 +0100 Subject: [PATCH 099/104] OLED display reset now by oledInit() --- src/display.cpp | 14 ++------------ src/ota.cpp | 6 ++---- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/display.cpp b/src/display.cpp index 95bf30a2..9c986f99 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -68,21 +68,11 @@ void init_display(bool verbose) { ESP_LOGV(TAG, "[%0.3f] i2c mutex lock failed", millis() / 1000.0); else { - // is we have display RST line we toggle it to re-initialize display -#ifdef MY_OLED_RST - pinMode(MY_OLED_RST, OUTPUT); - digitalWrite(MY_OLED_RST, 0); // initialization of SSD1306 chip is executed - delay(1); // keep RES low for at least 3us according to SSD1306 datasheet - digitalWrite(MY_OLED_RST, 1); // normal operation -#endif - // init display #ifndef DISPLAY_FLIP - oledInit(OLED_128x64, false, false, -1, -1, - MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); + oledInit(OLED_128x64, false, false, -1, -1, MY_OLED_RST, 400000L); #else - oledInit(OLED_128x64, true, false, -1, -1, - MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); + oledInit(OLED_128x64, true, false, -1, -1, MY_OLED_RST, 400000L); #endif // set display buffer diff --git a/src/ota.cpp b/src/ota.cpp index a9fa8ba2..fb2161ee 100644 --- a/src/ota.cpp +++ b/src/ota.cpp @@ -46,11 +46,9 @@ void start_ota_update() { #ifdef HAS_DISPLAY #ifndef DISPLAY_FLIP - oledInit(OLED_128x64, false, false, -1, -1, - MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); + oledInit(OLED_128x64, false, false, -1, -1, MY_OLED_RST, 400000L); #else - oledInit(OLED_128x64, true, false, -1, -1, - MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); + oledInit(OLED_128x64, true, false, -1, -1, MY_OLED_RST, 400000L); #endif // set display buffer From 94d4f2f445a4fa57ec5191e23678375a6ea320ff Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Sat, 8 Feb 2020 13:40:28 +0100 Subject: [PATCH 100/104] M5stack support & lib updates --- README.md | 2 +- platformio.ini | 6 +++--- src/paxcounter.conf | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 066035bf..ca90f791 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ This can all be done with a single small and cheap ESP32 board for less than $20 - WeMos: LoLin32 + [LoraNode32 shield](https://github.com/hallard/LoLin32-Lora), LoLin32lite + [LoraNode32-Lite shield](https://github.com/hallard/LoLin32-Lite-Lora) - Adafruit ESP32 Feather + LoRa Wing + OLED Wing, #IoT Octopus32 (Octopus + ESP32 Feather) -- M5Stack: [Basic Core*](https://m5stack.com/collections/m5-core/products/basic-core-iot-development-kit) + [Lora Module RA-01H](https://m5stack.com/collections/m5-module/products/lora-module-868mhz) +- M5Stack: [Basic Core IoT*](https://m5stack.com/collections/m5-core/products/basic-core-iot-development-kit) + [Lora Module RA-01H](https://m5stack.com/collections/m5-module/products/lora-module-868mhz), [Fire IoT*](https://m5stack.com/collections/m5-core/products/fire-iot-development-kit) *) supports microSD-card diff --git a/platformio.ini b/platformio.ini index a775db73..9814aaac 100644 --- a/platformio.ini +++ b/platformio.ini @@ -45,7 +45,7 @@ description = Paxcounter is a device for metering passenger flows in realtime. I [common] ; for release_version use max. 10 chars total, use any decimal format like "a.b.c" -release_version = 1.9.89 +release_version = 1.9.90 ; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running! ; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose debug_level = 3 @@ -58,9 +58,9 @@ monitor_speed = 115200 upload_speed = 115200 lib_deps_lora = ;MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore - https://github.com/mcci-catena/arduino-lmic.git#98a1b35 + https://github.com/mcci-catena/arduino-lmic.git#79accbb lib_deps_display = - ss_oled@3.3.0 ; simple and small OLED lib by Larry Bank + ss_oled@>=3.3.0 ; simple and small OLED lib by Larry Bank BitBang_I2C@>=1.3.0 QRCode@>=0.0.1 lib_deps_matrix_display = diff --git a/src/paxcounter.conf b/src/paxcounter.conf index 3dc855c9..ac392f24 100644 --- a/src/paxcounter.conf +++ b/src/paxcounter.conf @@ -77,7 +77,7 @@ #define TIME_SYNC_INTERVAL_RETRY 10 // retry time sync after lost sync each .. minutes [default = 10], 0 means off #define TIME_SYNC_COMPILEDATE 0 // set to 1 to use compile date to initialize RTC after power outage [default = 0] #define TIME_SYNC_LORAWAN 0 // set to 1 to use LORA network as time source, 0 means off [default = 0] -#define TIME_SYNC_LORASERVER 1 // set to 1 to use LORA timeserver as time source, 0 means off [default = 0] +#define TIME_SYNC_LORASERVER 0 // set to 1 to use LORA timeserver as time source, 0 means off [default = 0] // settings for syncing time with timeserver applications #define TIME_SYNC_SAMPLES 1 // number of time requests for averaging From 8c9ee719a27b7394258dfce161446a49ababd91b Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Mon, 10 Feb 2020 07:57:33 +0100 Subject: [PATCH 101/104] upgrade lib LMIC v3.1.0 --- platformio.ini | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/platformio.ini b/platformio.ini index 9814aaac..aa06e57e 100644 --- a/platformio.ini +++ b/platformio.ini @@ -57,8 +57,7 @@ platform_espressif32 = espressif32@1.11.1 monitor_speed = 115200 upload_speed = 115200 lib_deps_lora = - ;MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore - https://github.com/mcci-catena/arduino-lmic.git#79accbb + MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore lib_deps_display = ss_oled@>=3.3.0 ; simple and small OLED lib by Larry Bank BitBang_I2C@>=1.3.0 From 01dab639e4d8ad67274b011b5eb854c7d8ca9623 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Mon, 10 Feb 2020 22:58:34 +0100 Subject: [PATCH 102/104] Update platformio.ini --- platformio.ini | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/platformio.ini b/platformio.ini index aa06e57e..076e6b47 100644 --- a/platformio.ini +++ b/platformio.ini @@ -59,7 +59,8 @@ upload_speed = 115200 lib_deps_lora = MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore lib_deps_display = - ss_oled@>=3.3.0 ; simple and small OLED lib by Larry Bank + ;ss_oled@>=3.3.1 ; simple and small OLED lib by Larry Bank + https://github.com/bitbank2/ss_oled#23799d0 BitBang_I2C@>=1.3.0 QRCode@>=0.0.1 lib_deps_matrix_display = @@ -125,4 +126,4 @@ upload_protocol = esptool upload_protocol = esptool build_type = debug platform = https://github.com/platformio/platform-espressif32.git#develop -platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git \ No newline at end of file +platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git From f99204aaecbef44102428962080d6074a952e3b2 Mon Sep 17 00:00:00 2001 From: Klaus K Wilting Date: Tue, 11 Feb 2020 08:13:55 +0100 Subject: [PATCH 103/104] ss_oled lib update --- platformio.ini | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/platformio.ini b/platformio.ini index 076e6b47..4593402d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -48,7 +48,7 @@ description = Paxcounter is a device for metering passenger flows in realtime. I release_version = 1.9.90 ; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running! ; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose -debug_level = 3 +debug_level = 5 extra_scripts = pre:build.py otakeyfile = ota.conf lorakeyfile = loraconf.h @@ -59,8 +59,7 @@ upload_speed = 115200 lib_deps_lora = MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore lib_deps_display = - ;ss_oled@>=3.3.1 ; simple and small OLED lib by Larry Bank - https://github.com/bitbank2/ss_oled#23799d0 + ss_oled@>=3.3.1 ; simple and small OLED lib by Larry Bank BitBang_I2C@>=1.3.0 QRCode@>=0.0.1 lib_deps_matrix_display = From 94e1a6dc0d2f3a8fa6f71080336c998752d72aba Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Mon, 17 Feb 2020 22:43:40 +0100 Subject: [PATCH 104/104] Update platformio.ini SDS011 lib version nailed --- platformio.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 538d6163..a2640cfd 100644 --- a/platformio.ini +++ b/platformio.ini @@ -73,7 +73,8 @@ lib_deps_sensors = Adafruit BME280 Library@>=2.0.0 Adafruit BMP085 Library@>=1.0.1 BSEC Software Library@1.5.1474 - SDS011 sensor Library + ;SDS011 sensor Library + https://github.com/ricki-z/SDS011.git#33fd8b6 lib_deps_basic = ArduinoJson@^5.13.1 76@>=1.2.4 ; #76 Timezone by Jack Christensen