From 98f89a84bb2dffd72342158df2ff90c56a09411b Mon Sep 17 00:00:00 2001 From: furrtek Date: Sun, 5 Feb 2017 20:57:20 +0000 Subject: [PATCH] Improved POCSAG receiver reliability --- firmware/application/CMakeLists.txt | 2 + firmware/application/Makefile | 30 +++++ firmware/application/main.cpp | 2 +- firmware/application/pocsag_app.cpp | 176 +++++++++------------------ firmware/application/pocsag_app.hpp | 15 +-- firmware/baseband/proc_nfm_audio.cpp | 2 - firmware/baseband/proc_pocsag.cpp | 45 ++----- firmware/baseband/proc_pocsag.hpp | 7 +- firmware/common/pocsag.cpp | 124 +++++++++++++++++++ firmware/common/pocsag.hpp | 65 ++++++++++ firmware/portapack-h1-havoc.bin | Bin 825952 -> 826432 bytes 11 files changed, 304 insertions(+), 164 deletions(-) create mode 100644 firmware/common/pocsag.cpp create mode 100644 firmware/common/pocsag.hpp diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt index 4c54abd9..c5edb99b 100644 --- a/firmware/application/CMakeLists.txt +++ b/firmware/application/CMakeLists.txt @@ -196,6 +196,7 @@ set(CPPSRC ${COMMON}/ais_baseband.cpp ${COMMON}/ais_packet.cpp ${COMMON}/pocsag_packet.cpp + ${COMMON}/pocsag.cpp ais_app.cpp tpms_app.cpp pocsag_app.cpp @@ -298,6 +299,7 @@ set(CPPWARN "-Wall -Wextra") # List all default C defines here, like -D_DEBUG=1 # TODO: Switch -DCRT0_INIT_DATA depending on load from RAM or SPIFI? # NOTE: _RANDOM_TCC to kill a GCC 4.9.3 error with std::max argument types + set(DDEFS -DLPC43XX -DLPC43XX_M0 -D__NEWLIB__ -DHACKRF_ONE -DTOOLCHAIN_GCC -DTOOLCHAIN_GCC_ARM -D_RANDOM_TCC=0 -DGIT_REVISION=\"${GIT_REVISION}\") # List all default ASM defines here, like -D_DEBUG=1 diff --git a/firmware/application/Makefile b/firmware/application/Makefile index 190677e2..a3a6ee38 100644 --- a/firmware/application/Makefile +++ b/firmware/application/Makefile @@ -2516,6 +2516,33 @@ __/common/png_writer.cpp.s: cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/__/common/png_writer.cpp.s .PHONY : __/common/png_writer.cpp.s +__/common/pocsag.obj: __/common/pocsag.cpp.obj + +.PHONY : __/common/pocsag.obj + +# target to build an object file +__/common/pocsag.cpp.obj: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/__/common/pocsag.cpp.obj +.PHONY : __/common/pocsag.cpp.obj + +__/common/pocsag.i: __/common/pocsag.cpp.i + +.PHONY : __/common/pocsag.i + +# target to preprocess a source file +__/common/pocsag.cpp.i: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/__/common/pocsag.cpp.i +.PHONY : __/common/pocsag.cpp.i + +__/common/pocsag.s: __/common/pocsag.cpp.s + +.PHONY : __/common/pocsag.s + +# target to generate assembly for a file +__/common/pocsag.cpp.s: + cd /home/furrtek/portapack-hackrf && $(MAKE) -f firmware/application/CMakeFiles/application.elf.dir/build.make firmware/application/CMakeFiles/application.elf.dir/__/common/pocsag.cpp.s +.PHONY : __/common/pocsag.cpp.s + __/common/pocsag_packet.obj: __/common/pocsag_packet.cpp.obj .PHONY : __/common/pocsag_packet.obj @@ -5571,6 +5598,9 @@ help: @echo "... __/common/png_writer.obj" @echo "... __/common/png_writer.i" @echo "... __/common/png_writer.s" + @echo "... __/common/pocsag.obj" + @echo "... __/common/pocsag.i" + @echo "... __/common/pocsag.s" @echo "... __/common/pocsag_packet.obj" @echo "... __/common/pocsag_packet.i" @echo "... __/common/pocsag_packet.s" diff --git a/firmware/application/main.cpp b/firmware/application/main.cpp index d611038e..bc9d58bd 100755 --- a/firmware/application/main.cpp +++ b/firmware/application/main.cpp @@ -24,7 +24,7 @@ // Gimp image > indexed colors (16), then "xxd -i *.bmp" //BUG: (fixed ?) POCSAG: Bad console scroll init -//BUG: POCSAG misses alphanum messages, cuts them off sometimes +//BUG: (fixed ?) POCSAG misses alphanum messages, cuts them off sometimes //BUG: Check AFSK transmit end, skips last bits ? //BUG: RDS doesn't stop baseband when stopping tx ? diff --git a/firmware/application/pocsag_app.cpp b/firmware/application/pocsag_app.cpp index f942879b..e70da2b5 100644 --- a/firmware/application/pocsag_app.cpp +++ b/firmware/application/pocsag_app.cpp @@ -24,46 +24,19 @@ #include "baseband_api.hpp" +#include "audio.hpp" #include "portapack.hpp" #include "portapack_persistent_memory.hpp" using namespace portapack; +using namespace pocsag; +#include "pocsag.hpp" #include "string_format.hpp" #include "utility.hpp" -#define POCSAG_SYNC 0x7CD215D8 -#define POCSAG_IDLE 0x7A89C197 - -namespace pocsag { - -namespace format { - -static std::string bitrate_str(BitRate bitrate) { - switch (bitrate) { - case BitRate::FSK512: return "512 "; - case BitRate::FSK1200: return "1200"; - case BitRate::FSK2400: return "2400"; - default: return "????"; - } -} - -static std::string flag_str(PacketFlag packetflag) { - switch (packetflag) { - case PacketFlag::NORMAL: return "OK"; - case PacketFlag::IDLE: return "IDLE"; - case PacketFlag::TIMED_OUT: return "TIMED OUT"; - case PacketFlag::TOO_LONG: return "TOO LONG"; - default: return ""; - } -} - -} /* namespace format */ - -} /* namespace pocsag */ - void POCSAGLogger::on_packet(const pocsag::POCSAGPacket& packet, const uint32_t frequency) { - std::string entry = pocsag::format::bitrate_str(packet.bitrate()) + " " + to_string_dec_uint(frequency) + "Hz "; + std::string entry = pocsag::bitrate_str(packet.bitrate()) + " " + to_string_dec_uint(frequency) + "Hz "; // Raw hex dump of all the codewords for (size_t c = 0; c < 16; c++) @@ -117,16 +90,6 @@ POCSAGAppView::POCSAGAppView(NavigationView& nav) { &check_log, &console }); - - radio::enable({ - tuning_frequency(), - sampling_rate, - baseband_bandwidth, - rf::Direction::Receive, - receiver_model.rf_amp(), - static_cast(receiver_model.lna()), - static_cast(receiver_model.vga()) - }); check_log.set_value(logging); check_log.on_select = [this](Checkbox&, bool v) { @@ -153,11 +116,20 @@ POCSAGAppView::POCSAGAppView(NavigationView& nav) { logger = std::make_unique(); if (logger) logger->append("pocsag.txt"); + receiver_model.set_sampling_rate(3072000); + receiver_model.set_baseband_bandwidth(1750000); + receiver_model.enable(); + + const auto new_volume = volume_t::decibel(60 - 99) + audio::headphone::volume_range().max; + receiver_model.set_headphone_volume(new_volume); + audio::output::start(); + baseband::set_pocsag(pocsag::BitRate::FSK1200); } POCSAGAppView::~POCSAGAppView() { - radio::disable(); + audio::output::stop(); + receiver_model.disable(); baseband::shutdown(); } @@ -165,89 +137,63 @@ void POCSAGAppView::focus() { options_freq.focus(); } +// Useless ? void POCSAGAppView::set_parent_rect(const Rect new_parent_rect) { View::set_parent_rect(new_parent_rect); } void POCSAGAppView::on_packet(const POCSAGPacketMessage * message) { - bool eom = false; - uint32_t codeword; std::string alphanum_text = ""; - char ascii_char; - for (size_t i = 0; i < 16; i++) { - codeword = message->packet[i]; - - if (codeword & 0x80000000U) { - // Message - ascii_data |= ((codeword >> 11) & 0xFFFFF); - ascii_idx += 20; - - // Raw 20 bits to 7 bit reversed ASCII - while (ascii_idx >= 7) { - ascii_idx -= 7; - ascii_char = (ascii_data >> ascii_idx) & 0x7F; - - // Bottom's up - ascii_char = (ascii_char & 0xF0) >> 4 | (ascii_char & 0x0F) << 4; // 01234567 -> 45670123 - ascii_char = (ascii_char & 0xCC) >> 2 | (ascii_char & 0x33) << 2; // 45670123 -> 67452301 - ascii_char = (ascii_char & 0xAA) >> 2 | (ascii_char & 0x55); // 67452301 -> *7654321 - - // Translate non-printable chars - if ((ascii_char < 32) || (ascii_char > 126)) - output_text += "[" + to_string_dec_uint(ascii_char) + "]"; - else - output_text += ascii_char; - - } - ascii_data = ascii_data << 20; - } else { - // Address - if ((codeword == POCSAG_IDLE) || (codeword == POCSAG_SYNC)) { - eom = true; - } else { - if ((codeword) && (!address)) { - // Set address if none set and codeword is valid - function = (codeword >> 11) & 3; - address = ((codeword >> 10) & 0x1FFFF8) | ((codeword >> 1) & 7); - } - } - } + // Log raw data + if (logger && logging) logger->on_packet(message->packet, target_frequency()); + + if (message->packet.flag() != NORMAL) { + console.writeln( + "RX ERROR: " + pocsag::flag_str(message->packet.flag()) + + " Codewords: " + to_string_dec_uint(message->packet[0]) + ); } - if (logger && logging) logger->on_packet(message->packet, target_frequency()); + bool result = decode_batch(message->packet, &pocsag_state); - if (eom) { + if (result) { std::string console_info; - console_info = to_string_time(message->packet.timestamp()) + " "; + if (pocsag_state.out_type == ADDRESS) { + // Address only + console_info = to_string_time(message->packet.timestamp()) + " "; + console_info += pocsag::bitrate_str(message->packet.bitrate()) + " "; + console_info += "ADDR:" + to_string_dec_uint(pocsag_state.address); + console_info += " F" + to_string_dec_uint(pocsag_state.function); + + console.writeln(console_info); + + if (logger) logger->on_decoded(message->packet, console_info, pocsag_state.output); + + last_address = pocsag_state.address; + } else if (pocsag_state.out_type == MESSAGE) { + if (pocsag_state.address != last_address) { + // New message + console_info = to_string_time(message->packet.timestamp()) + " "; + console_info += pocsag::bitrate_str( message->packet.bitrate()) + " "; + console_info += "ADDR:" + to_string_dec_uint(pocsag_state.address); + console_info += " F" + to_string_dec_uint(pocsag_state.function); + + console.writeln(console_info); + + console.writeln("Alpha:" + pocsag_state.output); + + if (logger) logger->on_decoded(message->packet, console_info, pocsag_state.output); + + last_address = pocsag_state.address; + } else { + // Message continues... + } + } else if (pocsag_state.out_type == EMPTY) + console.writeln("-"); - if (address || function) { - console_info += pocsag::format::bitrate_str( message->packet.bitrate()) + " "; - console_info += pocsag::format::flag_str(message->packet.flag()) + " "; - console_info += "ADDR:" + to_string_dec_uint(address) + " F:" + to_string_dec_uint(function); - - console.writeln(console_info); - - if (output_text != "") console.writeln("Alpha:" + output_text); - - if (logger) logger->on_decoded(message->packet, console_info, output_text); - - } else { - console_info += pocsag::format::bitrate_str(message->packet.bitrate()) + " "; - console_info += pocsag::format::flag_str(message->packet.flag()); - - console.writeln(console_info); - } - - output_text = ""; - ascii_idx = 0; - ascii_data = 0; - batch_cnt = 0; - address = 0; - function = 0; - } else { - batch_cnt++; + console.write(pocsag_state.output); } } @@ -267,15 +213,11 @@ void POCSAGAppView::on_band_changed(const uint32_t new_band_frequency) { void POCSAGAppView::set_target_frequency(const uint32_t new_value) { target_frequency_ = new_value; - radio::set_tuning_frequency(tuning_frequency()); + receiver_model.set_tuning_frequency(new_value); } uint32_t POCSAGAppView::target_frequency() const { return target_frequency_; } -uint32_t POCSAGAppView::tuning_frequency() const { - return target_frequency() - (sampling_rate / 4); -} - } /* namespace ui */ diff --git a/firmware/application/pocsag_app.hpp b/firmware/application/pocsag_app.hpp index 91c10072..b615d663 100644 --- a/firmware/application/pocsag_app.hpp +++ b/firmware/application/pocsag_app.hpp @@ -33,6 +33,7 @@ #include "log_file.hpp" +#include "pocsag.hpp" #include "pocsag_packet.hpp" class POCSAGLogger { @@ -66,16 +67,12 @@ public: private: static constexpr uint32_t initial_target_frequency = 466175000; static constexpr uint32_t sampling_rate = 3072000; - static constexpr uint32_t baseband_bandwidth = 1750000; + //static constexpr uint32_t baseband_bandwidth = 1750000; bool logging { false }; - uint32_t batch_cnt = 0; - uint32_t address { 0 }; - uint32_t function { 0 }; - uint32_t ascii_data { 0 }; - uint32_t ascii_idx { 0 }; - std::string output_text = ""; - + uint32_t last_address = 0xFFFFFFFF; + pocsag::POCSAGState pocsag_state { }; + MessageHandlerRegistration message_handler_packet { Message::ID::POCSAGPacket, [this](Message* const p) { @@ -158,8 +155,6 @@ private: uint32_t target_frequency() const; void set_target_frequency(const uint32_t new_value); - - uint32_t tuning_frequency() const; }; } /* namespace ui */ diff --git a/firmware/baseband/proc_nfm_audio.cpp b/firmware/baseband/proc_nfm_audio.cpp index 66f249ca..1fdea9b6 100644 --- a/firmware/baseband/proc_nfm_audio.cpp +++ b/firmware/baseband/proc_nfm_audio.cpp @@ -22,8 +22,6 @@ #include "proc_nfm_audio.hpp" -#include "audio_output.hpp" - #include "event_m4.hpp" #include diff --git a/firmware/baseband/proc_pocsag.cpp b/firmware/baseband/proc_pocsag.cpp index ad80faf9..4040e3b9 100644 --- a/firmware/baseband/proc_pocsag.cpp +++ b/firmware/baseband/proc_pocsag.cpp @@ -29,13 +29,6 @@ #include #include -#define POCSAG_AUDIO_RATE 24000 - -#define POCSAG_SYNC 0x7CD215D8 -#define POCSAG_IDLE 0x7A89C197 -#define POCSAG_PREAMBLE_LENGTH 576 -#define POCSAG_BATCH_LENGTH (9 * 32) - void POCSAGProcessor::execute(const buffer_c8_t& buffer) { // This is called at 1500Hz @@ -46,12 +39,11 @@ void POCSAGProcessor::execute(const buffer_c8_t& buffer) { const auto decim_1_out = decim_1.execute(decim_0_out, dst_buffer); const auto channel_out = channel_filter.execute(decim_1_out, dst_buffer); auto audio = demod.execute(channel_out, audio_buffer); + //audio_output.write(audio); - // End up with 32 samples ? for (uint32_t c = 0; c < 16; c++) { const int32_t sample_int = audio.p[c] * 32768.0f; - //const int32_t audio_sample = audio.p[c] * 32768.0f; const int32_t audio_sample = __SSAT(sample_int, 16); slicer_sr <<= 1; @@ -84,23 +76,22 @@ void POCSAGProcessor::execute(const buffer_c8_t& buffer) { break; case PREAMBLE: - if (sync_timeout < POCSAG_PREAMBLE_LENGTH) { + if (sync_timeout < POCSAG_TIMEOUT) { sync_timeout++; if (rx_data == POCSAG_SYNC) { packet.clear(); - frame_counter = 0; + codeword_count = 0; rx_bit = 0; msg_timeout = 0; - last_rx_data = rx_data; rx_state = SYNC; - } else if (rx_data == POCSAG_IDLE) { - push_packet(pocsag::PacketFlag::IDLE); + } /*else if (rx_data == POCSAG_IDLE) { rx_state = WAITING; - } + }*/ } else { rx_state = WAITING; // Timed out: abort + push_packet(pocsag::PacketFlag::TOO_LONG); // DEBUG } break; @@ -116,29 +107,18 @@ void POCSAGProcessor::execute(const buffer_c8_t& buffer) { //pocsag_brute_repair(&s->l2.pocsag, &rx_data); - packet.set(frame_counter, rx_data); + packet.set(codeword_count, rx_data); - if ((rx_data == POCSAG_IDLE) && (!(last_rx_data & 0x80000000))) { - // SYNC then IDLE always means end of message ? - if (frame_counter) - push_packet(pocsag::PacketFlag::NORMAL); - else - push_packet(pocsag::PacketFlag::IDLE); - rx_state = WAITING; + if (codeword_count < 15) { + codeword_count++; } else { - if (frame_counter < 15) { - frame_counter++; - } else { - // More than 17-1 codewords - push_packet(pocsag::PacketFlag::TOO_LONG); - rx_state = WAITING; - } + push_packet(pocsag::PacketFlag::NORMAL); + rx_state = WAITING; } - - last_rx_data = rx_data; } } else { // Timed out (no end of message received) + packet.set(0, codeword_count); // DEBUG push_packet(pocsag::PacketFlag::TIMED_OUT); rx_state = WAITING; } @@ -180,6 +160,7 @@ void POCSAGProcessor::configure(const POCSAGConfigureMessage& message) { decim_1.configure(taps_11k0_decim_1.taps, 131072); channel_filter.configure(taps_11k0_channel.taps, 2); demod.configure(demod_input_fs, 4500); + //audio_output.configure(false); bitrate = message.bitrate; sphase_delta = 0x10000u * bitrate / POCSAG_AUDIO_RATE; diff --git a/firmware/baseband/proc_pocsag.hpp b/firmware/baseband/proc_pocsag.hpp index 3291820c..79218daf 100644 --- a/firmware/baseband/proc_pocsag.hpp +++ b/firmware/baseband/proc_pocsag.hpp @@ -34,7 +34,9 @@ #include "pocsag_packet.hpp" +#include "pocsag.hpp" #include "message.hpp" +#include "audio_output.hpp" #include "portapack_shared_memory.hpp" #include @@ -77,6 +79,8 @@ private: dsp::decimate::FIRC16xR16x32Decim8 decim_1 { }; dsp::decimate::FIRAndDecimateComplex channel_filter { }; dsp::demodulate::FM demod { }; + + //AudioOutput audio_output { }; uint32_t sync_timeout { 0 }; uint32_t msg_timeout { 0 }; @@ -87,12 +91,11 @@ private: uint32_t sphase_delta_half { 0 }; uint32_t sphase_delta_eighth { 0 }; uint32_t rx_data { 0 }; - uint32_t last_rx_data { 0 }; uint32_t rx_bit { 0 }; bool configured = false; rx_states rx_state { WAITING }; pocsag::BitRate bitrate { pocsag::BitRate::FSK1200 }; - uint32_t frame_counter { 0 }; + uint32_t codeword_count { 0 }; pocsag::POCSAGPacket packet { }; void push_packet(pocsag::PacketFlag flag); diff --git a/firmware/common/pocsag.cpp b/firmware/common/pocsag.cpp new file mode 100644 index 00000000..64ebda19 --- /dev/null +++ b/firmware/common/pocsag.cpp @@ -0,0 +1,124 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2016 Furrtek + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "pocsag.hpp" + +#include "baseband_api.hpp" + +#include "portapack.hpp" +#include "portapack_persistent_memory.hpp" +using namespace portapack; + +#include "string_format.hpp" + +#include "utility.hpp" + +namespace pocsag { + +std::string bitrate_str(BitRate bitrate) { + switch (bitrate) { + case BitRate::FSK512: return "512 "; + case BitRate::FSK1200: return "1200"; + case BitRate::FSK2400: return "2400"; + default: return "????"; + } +} + +std::string flag_str(PacketFlag packetflag) { + switch (packetflag) { + case PacketFlag::NORMAL: return "OK"; + case PacketFlag::IDLE: return "IDLE"; + case PacketFlag::TIMED_OUT: return "TIMED OUT"; + case PacketFlag::TOO_LONG: return "TOO LONG"; + default: return ""; + } +} + +bool decode_batch(const POCSAGPacket& batch, POCSAGState * const state) { + uint32_t codeword; + char ascii_char; + std::string output_text = ""; + + state->out_type = EMPTY; + + // For each codeword... + for (size_t i = 0; i < 16; i++) { + codeword = batch[i]; + + if (!(codeword & 0x80000000U)) { + // Address codeword + if (state->mode == STATE_CLEAR) { + if (codeword != POCSAG_IDLE) { + state->function = (codeword >> 11) & 3; + state->address = (codeword >> 10) & 0x1FFFF8U; // 18 MSBs are transmitted + state->mode = STATE_HAVE_ADDRESS; + state->out_type = ADDRESS; + + state->ascii_idx = 0; + state->ascii_data = 0; + } + } else { + state->mode = STATE_CLEAR; // New address = new message + } + } else { + // Message codeword + if (state->mode == STATE_HAVE_ADDRESS) { + // First message codeword: complete address + state->address |= (i >> 1); // Add in the 3 LSBs (frame #) + state->mode = STATE_GETTING_MSG; + } + + state->out_type = MESSAGE; + + state->ascii_data |= ((codeword >> 11) & 0xFFFFF); // Get 20 message bits + state->ascii_idx += 20; + + // Raw 20 bits to 7 bit reversed ASCII + while (state->ascii_idx >= 7) { + state->ascii_idx -= 7; + ascii_char = ((state->ascii_data) >> (state->ascii_idx)) & 0x7F; + + // Bottom's up + ascii_char = (ascii_char & 0xF0) >> 4 | (ascii_char & 0x0F) << 4; // 01234567 -> 45670123 + ascii_char = (ascii_char & 0xCC) >> 2 | (ascii_char & 0x33) << 2; // 45670123 -> 67452301 + ascii_char = (ascii_char & 0xAA) >> 2 | (ascii_char & 0x55); // 67452301 -> *7654321 + + // Translate non-printable chars + if ((ascii_char < 32) || (ascii_char > 126)) + output_text += "[" + to_string_dec_uint(ascii_char) + "]"; + else + output_text += ascii_char; + } + + state->ascii_data <<= 20; // Remaining bits are for next time... + } + } + + state->output = output_text; + + if (state->mode == STATE_HAVE_ADDRESS) + state->mode = STATE_CLEAR; + + return true; +} + +} /* namespace pocsag */ diff --git a/firmware/common/pocsag.hpp b/firmware/common/pocsag.hpp new file mode 100644 index 00000000..7dac95f0 --- /dev/null +++ b/firmware/common/pocsag.hpp @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2016 Furrtek + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __POCSAG_H__ +#define __POCSAG_H__ + +#define POCSAG_TIMEOUT (576 * 2) // Preamble length * 2 +#define POCSAG_SYNC 0x7CD215D8 +#define POCSAG_IDLE 0x7A89C197 +#define POCSAG_AUDIO_RATE 24000 +#define POCSAG_BATCH_LENGTH (17 * 32) + +#include "pocsag_packet.hpp" + +namespace pocsag { + +enum Mode : uint32_t { + STATE_CLEAR, + STATE_HAVE_ADDRESS, + STATE_GETTING_MSG +}; + +enum OutputType : uint32_t { + EMPTY, + ADDRESS, + MESSAGE +}; + +struct POCSAGState { + uint32_t function; + uint32_t address; + Mode mode = STATE_CLEAR; + OutputType out_type = EMPTY; + uint32_t ascii_data; + uint32_t ascii_idx; + std::string output; +}; + +std::string bitrate_str(BitRate bitrate); +std::string flag_str(PacketFlag packetflag); + +bool decode_batch(const POCSAGPacket& batch, POCSAGState * const state); + +} /* namespace pocsag */ + +#endif/*__POCSAG_H__*/ diff --git a/firmware/portapack-h1-havoc.bin b/firmware/portapack-h1-havoc.bin index 2859f1fd46eae378cbaca52260df7035287c9213..8b9c9ac1053b98c950af3358ae8eb468721a666e 100644 GIT binary patch delta 50278 zcmaE`#pu8eqlPVvA@}N4%orFLSQrEzvN13`WQSrM28NG13=E9AP(DnYoq=H@2dWq& zlz&m2fuT_nRSs?*l72L?dW5C8712;lJ#H6IWMW`g$ix5!x-UOC`hU?#XxqT_q42N& z7mXwqHwHzf4~PFNxG|^(dOQ5!u~u>mQTF#_n9BGe;UCLK6%H>&mX9(FOdmY|uza&% z*L3s$!jR^l`Jb9fAIJ+ez^XNd4|A7=8Wi!8SX4A7(d+q z#RBIuD6nnV`{G064nqb8h6j4n*Gn*&PM3JdC?mb|um2YYBY98OuObPIA2$7CQc_T4 z{q{tF@xzws{tp>VEfs$jW$=3+{h^^H#IpD|lX3*tOfE(xY3|k^s$NHb2yh+!AtH73 zhlEw@4;8I~y$t&`3>g?Q3>g?Crtf{osO+d=b>N4I6ysVJw*x;6tTfyhKXm<>`huB( z!rV z6Mm>n-~EVDK3eXtwp*4P>k5{yB8iM2{{Pi>V_n6yg5}#2LBc|h9sv|!fs*e0{sXFq*qw2^HpQqBckfakC>_>KN6~r{79)f@*|__$d8<=BR>kNj{GR8I`YGy>PY<$ld2;> zbgGX0P^dccgQcqFhpJWi^D94Cv^IU^s8_#q<%fb4qamY_yylS~ELu!Aj{H!NN`HRk zhmICV2fr4_4VKqUj0b;MSTSEXKBg6FC zSB&ON97fagni-X*-+09+!YDBP?JGuiCJCeIb%jg{)5Bgf$}uSzP2X3@B*TAb{|-?G zfjy!O0tZAH1T>~Ee9fpoo#z!J$MhSo8EcpvjHdIoGNv(w7)_TGW<1C0V8p->GJWD( z#$u3=T{~mM^tgA7lh_K37#IpUr`we>6)_z!nl2~AT*URoh=JjW5d*^&qv?8OOmR#q z#?$-Cn4}mJrYC-2{La~6%)l_kn1P{Sdg4dM85s5$PtTKJ^kWQ}9{Y*$F{9&l z$Ip!BjBE!?7#KE~Our|^Xvg%yWc$7^jAkrcj8Y5?hEfa+2By>FO z$QUtw?Qh2KOcAEj-!(Dmu|=3NFg%pme(MjT7YApc8Uur&8UsVabX``a_lynGW!ae4 zGtSt4mW^pUBhw7i>Gzf}%1vLw!6d*o1FUcQE)J%3LK{pO7z(u*7!0)-7$#~lFa&B% z_bXt0H$8)kNr!R6^r>7-uaz#Cf});*fzjjNchwyX`|lv}Wp^;_e_^^kFOW%#nU%qe zfk9yVMLwo_M!rNg28M-f3=D}Z3=9XEwx658Jeiq8hJoRsECYk$^pB63^`{qjF>`Wi zFfbg{WMFXAn66jJ7(V@PB$H12UJ<7Dy&}x*dqr5<_lmH#?-gO&zE_0Z`Sm15hb`_D=6&ca-6Gw*D+uw|{ z6%rOFFg;-Ru=vpT+lWDvK_SE9!^}SnN{q7=Gm;Y&7*2(h?N!(}{T~y@EiH==ML&M* zJ>WJ&fk7eQ2s14O##LoQ!iJks6J&KiM245XmtQss<@oO3zM<0g)n4|k^I*7;q z^e0I9qv_i09K9T~!JHXCrypSF2&fl0%FG~fl$oLN7&C*+QDz3!qs$C?N0}MSk1{j3 z9%W|u;K{_0c9fYR?C%E9c5-X#LU1Tb)1=@;n?(L92_p}Okk(}pZ<}9W4f5dhfP1UR#<#k{{s{PYkq*d zwDQOFd7K;_Toxaa!Tf|D(+#*ddIT&!NPty|f<=XXOh3cL(ZzA*zXpT(hm-%O$8mFX z@iqTfSz-R60W4PgfBH9WjtP7wU@=3mnBM>CQ+PO3>Yp8DW{5k+%&>!-fq{jEfq{#K zfq{pGf#J(hW`;jUnHf}A7#M6=7#KoW7#J9jF*Ag*Ffa%mV`fl3#>`-HjF};Yg@M8K z7&AlgF-S7#RMrFfiyEvM`9SGBD_{GB6miGSoAe zure_89AjqiVPybERSGKuLk%kf!<1vp40Wsw46~0hGsGTeX6RvMU|4jFnSr5@iQxz< z1H&;^28M`_Yz*6uF*69UF)%0`Wd=u=2pa=~3L68%zGKV`Hf#*w7zklwV2EO4V2EL3 zU^sbPpuwrLm5I@e$V8hP9;KR8toS zEEwNSf6T}6U8Cq1C^OB`B%GN9K$+<;D7qE?f~=GMJAIn~$27i+e?VgA{(!_z|Ct^o z2+B-gv1+hb#h+C}w;;}#d4O0GSy0$PVGl4lXeosFjJeV_+2q-gwo%(O$9LZo_!msHDVjO*Z5?~dgU@@Uz)6a;3 zve8eF`jbDW$BBco(NB;W4Pdd_pVPmIgR&7=%n&T5_jCFbiP3CC!)zqQkz-)~!SV+v zR?L1tGLqQ`$-nqBk`%{2zQg}jR+xP_@Lz+$?8Dyw)61kertuYm#qz*n+5e|Y$#Bfz zlLL!MgT*BNPd^~T(Z_M&A4u2Pf78QcIr=zS!Mvt_)8EK)^l(^%c^3bsH^>d*T#+Wv z;li=#FUTA7|4!c|&oM(J=&#lavk(4%LBZk!mht>MJx+n6i-Q@=WB5D$g91k%-;O^Z z6PUomS?GQFluQ12URO;tO!;slhint@!kFj ziqjiELH1nzIo(a2V;Wy4SgZ{!*8Fq&D|L<;d}d%VW3ZUP&*>91IQrOM`~c~CI$c$h zqnFF*;WGae#^t(+{8`M2Dk~@4`QjinISfdQbhE9;3_A#nA%h zHU69aPM4#L&l;@40xV|wZ+e>^#{}Lte?hul{srlJHeFetLv^%?Myn>;JOhqAy^nuD zLH+IzEE8S)i7yjPw=(1i6I%a=)r-|rfx+~{q@Nrc1oobJGkuXEhl*s)Pl3G$+^ z6bjrJ6dFUAA^krFhUx1KIm880z|t{L>BP|OY(^Z5_}LWJGBYHs-M-F|V-Yjcg06Ky_mK=DwE?HBU8e<=|)%svHglkzKzTm6a2a zb=9w%zAlGDM`YG-1~i$Lb<^L0WU4UqbgrAOm&>6e5{03sZ{75~Tn;@k%iqcwjK<0d zN!tYW!rV7`-Skbl99m+MAUSJPxf$!Gf6C?15cu^A*==*zP1nlfP*8Y;BDxsrPl2sW z-VzB0A1?ozo|VT@#I#}E^m}<6er$W!F*BT5H{B?oBaP|7y6Lm>IkqusAB8ez|1gj z!}O#w4mT!;jnh|^actxA+sMoiyOEh8Z{zf=a*kPS6E`w5EZ#VstAfLeiEGpJunG<{ zCgV-p`zkn|F|yTfVrJ;uG`*^dLyhUcrs<2SIKr4d?3n(mienSohfT~3e>Y9vRLx<> z7P6U{A!qaSZ`B;L*gkA#X85~#`m`DjCpMlf%nTA+rr)dKXks(p!psn|WqMjIM-f}` z7G{S2Ez|GSa!4^P+cNzZh~BYfx>y}Y6w`$*(~IgjW-)!(GM%rULyzhImg#o&9AY4T zSUraslfl;Qef1pk7}@N%GBfyXoo>{~k;E3im6;)X>-1TT98qkQTbUW!wod=m$f3nF zb?bDsCXRV*3%4>eY~DKkR1=35lfc&L-yX1KC-x?MAe8QbHn%na|hPOoa_ zC}IoP#>^1AZThEX4mY-(ZOjZ6+os#KaOknMZDVGbvTb@%3x^fkl5NZkTeeN#)WT86 zw`w~x!>;Yj3}?18GtAmP-L92Gi^+V)^sH76DJIVy+uK?>*tnP+e@*Y}=h()TumcjE ztvj~+P2iAXWLmXjde%gaLm*mj6300fy$>BfrcLIU!gOKB_Gyzj_AoJ}{n;Kejf01e z>A=qINlQ4?7(tA#r5uZxxD0kOGdS#IX0Y73-E0Mi6f;OBXf?++Zl(#lrgLrQXk(kO zo0;Ll&gs*(b95=(|Es_NO4L8jLP`gLtt<@xzrXpfz@VY1{o%&n=?*(MRG2g_Oi$av z;l!l;bNZ?s98$6~_A)bAoJZDi=Kmc<1qM$B?GNqKFN$#r^Zft5=Dz}iiK6z0ioer# za#&~t|5aenF!=vH{J#Rj|L-aP6&MQk?$BXjfY^BFzXF4YqV@-mzta}j3QQLNryb-_P*VSI!0`L~mS5c7nhXyl6qIy7$o-$7 z#0ln2V$l5{{(rjDL5?b>$UoEf9psqDm-tVEp-4Kz#gakyL-fDxS%)|@7@5}no<8L; zhm%ste`N+O2IiTJGuS_{{Z(Ml`Oy5EK~ch+VU_{I#SonjHNU6-ILr~lC9sc~A!Z*l zgV(<4aYs0+jJ*F^F=#RvFz9}8`>V;orewhIO;Y!R16Xuv;?qRcB#@j1R8IGU@!#oO zM>($X#O{N{5vbswe&95t$hKn~7K|~U|1xMWUex-K{!jZu>OTlO@n6B-29WXu4hK$7 z28I?M1_lNPeuoYv1_mA_1_ll#28Iv&nHdW9F*7{a&&)7Egh4@IE1w6;hnydbA1?i7 z`Y_>-_J_KE)2AHg=um0=t;L}1DYioQL(Ok31|?686}lhFf43+pG6XR&t+866`=Q|X zbcYih5=qIwwHU-!cCXO=5cgY)L1X3I6}lfHf43-EtqfvVze4vz@b52*uaucqc`^h^ zFwTr-xESzhg@lqKC@6l{toZ+Z@qZQtrVkQ-ek#vqnCtRkugstS{|yc>GZY+PW;k$w znStTJ^j#-74`{SQyH#(ET6_W;Ylzuhn0n`$6pY^e-nk)I^zn8!^bP3|OK2 z;qNc~l|~FnD|A2nn67`4!_Y|JATxu*K}1+iP-576azhXUt7nFr?uQG%GTi=u*Zt3^ z!1Q6!Z_f=3dlxL+KItR}6C=}tMboF9;^>ii_lHs8fTBXd&+iNW3-4`FU{EkP$jtD^ zfW<-Kz;wIQ9AQig7Hyw)nj?gXMfbzZAJgBR<&a~#uxL8pIgUQIgoDfs3l2_SbdE!d z?ZH82h6x9!UjnfYK-f&@Ikeas4l*+o9Gq?hVsALe%y8l0^rZ6~UQ7!PPG5JPLyu{~ z!RhzTbI5_{e;~Tx;B>hQAUh6jx4XdM#?EGNh?ybb(DttDAZHi;p5AwZogfMT#O5JKD?ctdXpnt&EXI;gTNtX28Bb+3=0l1Gc+7xW|(k@nc)K{kPb03 z6dYn^2spI;+f5EGMg#s|jB1<;0?JHl%bXM$IFvG6v4Z2=2X^VV3@Wbv8xBp^dc<)QDCsJ(fknfXS>fQ4hhDX2}sI+Y!&qq^`0X!#afO*fuY1e^TW2^ z3Jfs@njbd(eww46yWWZAf(C=;ht&?Q&l@l$fUfo$mC7BgH`FAJ2nq8K%js zt0QAA7`PdDJd2$JBTh(z4)&j z&zO4uOlSMX;ih!)rvQWchkgH87?w%eBOdH z{byRC@j?2(0)zU74|^S)_!)F9Sr`P=85mxiWM7A~$6iqV!OXyv!C@@0b(Ry;1yBTq|DJC2mqSZR@GsMf|KIQZ&vs)}kgkky0QEqA zoMdKrb8>pwUk*9Ox6`No<|y4Qu`7km4u-ixvKx&i9W)$xr?-qsgx45{ll=yelqA@O%FM?g!Ny1Xkz& z@8xsG6&fGB{|T>9{V?N?1;c!3eQ?07H9fdM9P!l`DL^v?nmjRp#a8Xsc*ZO-1E%rxJ@?Add* zjP#7{PMjAE7(j~k{~9oG7-)RZ{_9}&8E*QVpHo+GT8X*+S5#t96knnF!SO$*5`!Wr z+1vb|`h!!AN#XZ&1x8K{Ch6bPy%;$)q{MzZDl;gtPG(SMn#4SrXFBh+N>9TTnjf70 zPw!#ml&NR_?<~W}@K%CB3l?p3B!J+!0?$>k` zW=;h+-CwfL8C5`zzwoK?@WM-%dU}0cB z#mvBP3X*i~?rra4=1gK_DmXR$9Sdg@lftR(MXa3nn79}gGcz+AsCJCjl|bbRQuqJ#8*&M`(Ta4 z|Np(_zXF4WqS^<8AJZoYbIP!&eNgx@eSn8m?jO@n33F=MA=f|Z@cKs`OZ~$P zb`_K7|L>RogIsyQ&FdbBKBu z(hGU=UxC3#QT4-z>HK1x>P#`erdx<{DoAWN15pT31nQ~;D5`!q@Nas77^fbS#;@rM z#5g4+1<+J|R#afYTXJP6<{W6gIJpN5j5a-lkI{ABgpE#!!Q^J|)tHe2T zm|A{smyqBTVPyQcU00IRmXRsy*Y+GK&ID#Ah4ahL$#OD@RQzOHt;E1M(}02T1J{4H z6>1;a|4x4-&sij5`csj?fZ_l5i9a|du<cowHDNi zT7S4!sC`)ei)Dq{hb6zJuTbTzVOsicx|$lN1(U(Q=?Q9_5**gQI98~Au=q8-L5*`8 zYR(27X6-nN1Zc(>A>mfdK#Q^AlgrZGm4A*uL6VJ-UDt1=cjMd;M8K`{5k!e z2B#F$?4Q$rX>b}b1)QC(r^#u@wBYRYJWb9trVHn{U(@7V#;B+EA>s$q0|f)M4_kim zZ}_km9BNxx7}_>uxT$@Z^gGiHOEUo1+>bqWl^&dOyVr-G6hr~-#! zP%8E@Q2o&Tf4Y<|rySGaU(>C0IklJ?&QDL%<=n@laACTd9;Xw>;lCOTDjzodnqHvC z>A}=+Zu%}g&J2z;uxRkF>00`nYD^o>Ob^oMoWxXcdiyhdPAf*H3+JXQ8FJb&wf~u( zWXO4fN$JmY9V5GF_VV@@r`>A#FP#im~{;rzp7_~Q%(^krenXS zKQZUDV#@eAUBQA=g(>vsbT>OaTK zpg5I<;mefi(=0gUSX4i(`7wQm1!ohN>W9c577WTC-2P5?vE;k~iZ3}U&M>9D{~2Z| ze^~X0mBD}klvw_Lzw-xDJ%XxS)epKqrcbltG-6Tx09w#s#i_>lZ2D&_&V0sq)03?^ zgE?gWgG}Z8Gku>mrxugvx$Up4IaL^$Bz{g8u;q;4aQ+99Huycgz?Rd5DfQg;Wwx9y z%uGc;r@wLF^kNG6x!uB%a~UI#@`w5#An$?c%*D2N+q_x5n zqE*v#?Ix8EZ2zX4xN#~d_5Nm+H&yVR9 zo}5}NDj$~qn7+)DQ-?+6L+_92*E~6cSX4eF{g|%f#i^tB`;Vn3g9gJz3r|ofR`SP? zfoaCy?+*V#KC=D6I$M*0L&<`HdotG))epYErnh-<8r2`T$jq=|F*C!l3(O4HE-*7Z zzrf7!_5w4*w+qbRl^To}nHhL4GBb!=WM+`N$jqQ|k(t5pA~S>CMP>%ii_8qc7nvEt zFETU4U1Vm+zR1i_evz4>@gg%r+eK!E2^X0eW?p0lFG)GW!oV>9A~Se(Nr4Xw!JvB)C@o{T}}pBpdTjjX}y2r2hL42QwyRE4Vq&e?ZLf{>f+#Qt6Il zj^-~uZ?2UOB>sN4VFw#y`EPoiAE$(X&OcC4Y5o%gmlSsQrZ4m3EMrmq!0=r z)6T!s>-;&znCdT0pXSf$BGC1heS^W?6(S4@6}$`#EtjUh^5<0J&;Ki9`UBc9R{HQ@ zx_kg_g(w2>+L$;`mU5MnGnfpzlY1i7^gdaM^fLv<=2?*5q0 z7Raf?ckhqt3gr*C|0pmhf4K2yxcrG(DTv*J^&~=HK zVbUdLhB=p*8J1mQX4r6vnPJBzW(F5l$ZDfKmzWvuure?N9A;pU`1Ak&#Y@Z#DQpbj z#YE38F*8hIXJC-wU|{%tiJ9RD2Ll7^Wo8B!P6lw>(?UXg!r$*-euA8?_*+0(yWxRy zc0Xcj0}oCj0|^p85j~SP5&3hIgM%U z&*{^`IhQG2gbp=>91jX=kQz{MyYMoAE#x>mJuZS%P82j04XUI5e~w^lTq=* z`ssnoxb&wVh~O0B;`<325K;cX^>h232u?P}dgTwPKOo(FNRnpz0ZY=HKM5ykh0Bn} z9jFKfVODQ}tuve$Zz_Gb^@a?eRBoFMrNTjd$V7^ZDtVc=3?P-I-8 zQvadtmjQz%!}ss6e#m+;D1+E5Fh>p*SWl`#f?zbpO}SfTuZ z?*}L+aQ|Rgq5Og42cOu63*bIIs6Vf3IsIJ}XA0xH>A}&QidxDa?)+GtxjB((o{Z_c z=c*ZL8SB6!LP{St{6{2i#Se;qrq7G!v|#)*{dzR#Stiy0)0f3?>M-&BpME8VQ;+f6 zbmmyja;8PUrq{%B>M$+-H+@wsrx{cGzv+)+IpdhZ|4ny_@tg@v5kIF3ByftQwfvKxy*g2RHrHesWAVvq4-U9(xXjF; zeVLiT>@qWh!)0a$_sh%-{+F2ywug?-b%C3AW) zFfY-QTovIWBQv+PAR6IU(-3VIL~ku zTw!Jqyu!?2b!Ga!EY2u7kmKfn_6!Ixfa^QQbVi1QNsJ5!t}ruPxH3H~n=_Az_0RNU z*_^uq%t7-_24B8!{>uZe+7v!4`3~BR3Lhr?o_-;RQ$^;%6-3U46eytnlZK+ghl1bB1#&qV*+AVFfqm1(@;HMen13=q zU}TVBQ2Jo@laWDzLGeQrc#dkiK|ZI$_5*pG8cZS8KLx@kbo8cRw%1JNVvt!@L(}BL+(vxhO(QG#$3QHW`_Ek%na=}nHeVE zWM-K6hM6J7n}uP{O=gDqH<=k0-DGCiaFdxKhlPP*`%PwsFDwiUM{iDlSIcR@1nQXA zaau9$`ZYbKjd2(|@&a%1MCIHz>v+DL4e2#^pXF{GV>n%DIJU!ky{QS~=yU7u>;?)>RbcKD^j2 z-^RI=$?hvs9jWkP8nlj7_%M@*Ix^wzcBW3wC5$2^zn&@2W_TdMvhwG5x&JIH6h27* zn7*rvQ;F%ro$2?wIL(Ave|-k4$aMSp{rSHPH~9}wwySq@hBGo*{GZ;?!x^Eb{Ik`I zL6K{P!iRG|85smtD11=*(da9%LX$z^gXk|t2C)?iA0&TF|JTDQQP1*IW|i1Vr4|3a zxBpOD3AXQ-(hB(x5B|xlkpFP^pV$id54ZjatdRe3{U6r~`43nA{Ze93p2PsEgI|6B z`WI9OOEGY*ko$1|M=I3TF0ifgAMX9v1lxY;C&*6u57+)9>%IP$L0K@6L1u*%gWQLM zKVZ&qfjVQsPmnX_f}Jr7?2PGPXG{S*W8y!Sl}alVK9v6Q^j2E=K;q~3j=v!Ft^cM! z>*cfnC#OD6CnmRl(^L958=SK5GBdn=^Z&oFFatx$U1sp;{3l%&hAAuz40U&5LoARO z{-E?>>;DaG>w_3r76F8lW!hbR-Hz(}QU}0d;X1l^FNzna3S$M|}?HVyGBYf=%gnI)E;EBIs10Dr!f@g)GuYo}?lOay=wH3d%;4C@$Pn1Z$Z&81BST>u zBLiqvKEvJZb<;S_n3y_Drf-|U=^*pv@A?b|eYOi03?ILj{TETRV37S#^jCvH_CxyL z=|VF(Z@K>bqrmWQ?*Xv&pmk3XA`A*3qd+?WKtZix%EIu%l!XD74YBr|~(~{rQD`sFvd!D6vBR z!?&M|3_>g9KY0Cc_XN>)zd)70{0FBWJS*8&$bXRg#j`^0gY=XW{!6To`yl$C z=>bS);txiX^Utk4L2T<^49b-mQVbF+WIxFMG>4jf0&2F*4=yD}MUd(De}GM|{~!!C z{{2so@o)ZtjDPtLWc;1d(iAx8c9p$au>G1w@%58wa8jM@b@O76qE{}6|s0-JOk zY|;_1NeBP2tps^-=`V?u3^RUwUkMi7_D_>xdfQx11(hZLG#KQ;-Ma^OnHfNd#OfY1 zgWXPM2Ag}#4EFb!89eSyKQ))rK(*?h0>j7e?9ko^NcD~Lke==T@1TL#BZ{)1LUJCb zBy&hGjtXAx!#QvTFZbaTQUx#f;V@bSFZW>=xPq7aunk3yX=1n-Bt4w z#IFRmVb%VDR273=TJTGJ!-u_g_qK~IhmiFIWK@yZ= z`^*dx_n8?cU1ny8z0VBZsl>0&z;OH~Gs7Jg28N{j%nb9PMHpzrW(Fsun|_9qfg$5Q zGXo?u0}q3*-*f&8Z!p-K^Ng9H=ovFZ z^Rww{TR1(K9DYwP*urTcrwmrB@SEvDgu&PEGU#fLZQ=A_|L}`vh3tp7(?z#(nwwqx z1v32HFOvf12ayK<4ZeOq@lSZe2e<{(om5{y|24052Q3tZbdt9al3QDjhHNH7GM z^nCin?VRhG!hcS8+QDg4AMo4KGs8{xgU=s%HAV)IgZzIf<{Bs)I`FJuQj-4Q@SA59 z+e)DozrP>;W#B2aLiU6CA4YK1VErpOS8jzQkD-HsGDxNNZ@E?4ALK7PXD`;Q{&vcnxoL)>@{!Gu<#i=7E`$6Xi#|qgGnm)fFwJv+ zu`@6{V3-eDcraJ0R+2%N6}0exLFR+Q|LGg{aVjbB!OdOy6W!bcZl33+f7-`s!y@-V z{>OBq{hSR<^ZriXvY%6rsqOFdC;K@Km~#J47dyadz!dU#x(A51{yV+u0B3{<-`{Q} zO9oKWTVT52bfM|8A6)-We|CWLl!)wywjaVP1y)E-{r}zbpYRHq57YikKXQfnv2~rNf*NOi90|>m1=U zV)FPsJ>dvvli<650xNk}h)w(ded8a26*3?GZU20Plb2EM!&7Dkp6ARALeH5QWS%oK zXgp_TFnSJYT(CT!E_aNxLPq63tdaTt`?4RPMyAwCnCO89>{SLE~ay*dSwK zhUXa>8c#4X7%X9CSnz!MzDt~SE;oOJ)=9tn9{P&|T?es zifdT)3yD<7_?OfNiyzw?E_3oQiY)vOiBr%>CXXURhUAA8|EDjw!f9gn_7`HfN%}({ zbcLVvhl#%lcUK%B4m8*Y=33oEI21e*d=d5|}BqLi)q9KcIzi(jR{P5?QIi z@b&w(A0jKHKV1F^lDqJ8dcbu~J#drkI%kf5<4=%W-A~00ANJaSrVHLMGk~TLKvM(u zPW%i9_I~)!P$14A!pXp}gq?u_RGJ@n$;{yXiWzih3d4hRQwAOm1_n^|?DL9wdiE7g zMUkD*RE+TPfxpuWZgA?!2>j(*t;E1QlVOSh!`JT%e{!vm{vh`g6s^)fr|-JK8N+1r zd%DC;PNjOS-x90ECUeggTQgHefkCZEe46wJfnQ8Y&YlVk(jPAW=2{7&_y2YP^KbuV zWRO`Q{o(#kft4V7^KV85r4`a2uK%?31ktB|Gcstbkp6J~r^ZT_71AFb{|50^`~b-< z{Q=Uk=m*HW`9FS(Z+2q3s3YJ#---Q(B?E&pvy##Z$q$dGpS;N_YjWk664<;MQ1j+M z&8q;LR|+<-=m+a;F>RI`lAa)&X8)cpb&FHV&GnDQN(F{5-y{EnY!3S&utNGn@DGsx z1Ac(i`To!cXP<@^Ifgz17VzLh<|}4~=gbV?RxGGPZZ&y&)h$jpru1La58dKast^4I zY9mO0c==o2Q)q?s2hra=D?#+fU!b;v^as(OQl1hkq(5-}W@M0CA^m~(r`*a6H|Ym{F{E@E@vEH#y^b}QXf+P zDXx(Eko0f5&OJ^YChvdKqd>IDzv&$yTK3=cZTC1UK)r&soLD#P)ak zlLwp@j4!9lKIGJ|e*ns)fBye>SOVFx59$#Vykcf3d&SI9^9nN10ZPzKuOO2hphVpE zikYGJ6*I$>SIi8vUokT*dd18T!@DoS;>=>Q{WHDn5$6iV z7t`e*bLui({Jq`pF=q^;hSgs)FVH$|sSi*8GBQZ7kosWxM;e^G-u?#hgnonSLjK>= zFFoP(3UB&wZuSq9MoM;yu-*a@iHR=3m*f+g_qOwo^ndD z1-xNqFnBe+?j?*pK>NLCA^s)^o;Wpm+wDN0eHae!OQ7>&pEZwhDA%j!=e%& z4E{}@@SJlIR~&ebQ0ha}&*?TVIFC6cfm5(+|All&HV`3sfFRec1n-YlYN@mLCp^3Jg*o7=FF`-uH_| z2{iu5wL;><38<E{TVP@F;hM8geo9TRSIE@0r|F2MvW_TRKsI7N#vl@f) zHwGz&g|RFvBt9hl1Pzr)f0*}^WrgGi=l@=wphBws=ezHwKR{6@#Q;*}4^>qSRt1`W zc*7}Dulj#sZ0rLj?YN7Zm2WdVjA2k_Ss}$B@xc(PIv1>3=)a*~hMOUS^oP)&@4ho5 znJNoa=LuH#@1F+PZl|9i%Kwc)rZE~qZ0CfkGX<-A_0Nz2cmy&p(?{?7D|YeT_am)FeT>J=1_ zEIi;5okedsD_EpI9Q-j|?j2_ri}VMpAJf;o<6Ofc{ekPp^qBXY6POzRPJj2FQ;KQd zo9SF1IEz#!{C3mP6>gf|120f z4HOwzmHrz@eVF%ey2&TbASRPP(>p$K>c~lbVELi3T8Tk)rUnDUl+WL%{?S+=`9bK9 z0fXcR{y)<%ed0`Gy8U~))o0EOk!8QlR!DwW{9Av86xm+hUzo)m7vNAA$Jb7R>Gs6;A28K1P z3=A@y3=DfXA*(JfzF}s#`G%R{;TvX#mv5LEKE7dQ`1OXFVF?!l1M^#E1`cip2F|z4 z3_0AOsDcEV1`lMoi2p4!Lk|xFgVbAQb_T__%%G6e`orcHGgQ5b1 zvFzejxGj zd+0w<`gt0l?fpPP52<$2eMGwcfVL)p0v42dK(VIo6h<_;g{qi}eP5%0O`Cm48n_T=u#&1wB?!#MVaBmc0DX1M@p(y?# z;rDcdznp4PXZ|TL2<&Zm3mM&ktV0e^6#oE9On*5$m?qrW{_8L21}2qBKQ$RxCxF&_ zu*_ne&7&ZdDE^`2C+loO2KEH^gysZ^4~)O2p5roO1KIiD?Q||iE(I3J4<~<2*JI?8 zU~>66-Gh-!k3|wRXj#R`rN_7U4`_X@!#}kD1#2b zNqnfp7=W9u$IRuCcI7W+sE)Ar>wR&>9mK zE`7#F)3sT-R@yPFVP;tHj+w#X9W#UHJ7$K!cgzft@0b}9-!U^}zGG%6e8P z@f|Zm=R0PGiSL*hX1rqtkFZ|7J6(v4D^1h-mjc5DgV*1;|6qqlve<_e;K&1+4N7Gk zXPKev>Uj42ZwL3T#Xvp(Lu_1XjIX!9WaE0yrqJ;LG2Vpejf2)6R49slVE8@#1230? zyairW52ow$aVaXic#qGh1HYyh@Np?9%)qN^!LR8XK&m|Os%rQ({R1DD0^^VA7kRm4 znLuX}@pEY~UHG~^il3{G5$Dneap=+qag?PG;vdkLK8Qn?K8Qn?K8S;tJ_vGI)FUr_ z5Qi^)5GQKsLxUCzD1_k{l#10~SL^jOS=g7ZTzMVUhTt z{bPET5SI&+!k_6Igt%hFZvF=?+5Y(b?XL_s@ei+lgT^wJX-!uW=CT8?D@i&%Jx!R) ziEYDYW`+eC)7J@ezWqkc)}obQA-_1`QU5^I9wnj(SWCgj)%L&9BV21a!zhK*cI3=e+)|L^dMnV~>~#hKxv923Ju zE+z&AT^0sLc_xOBTucn0z~njc|Nll+CI&%nCWbFsEDVP7ObmwHOboxYSQs{ZWM-IX z$i#4vpNZkXh3V_Wx$N8oe`d%yFo=G5`*&%ALV`jDqb}1$;|}Hq&Ib&->=!`0$s|6s z|7Lo?<{|#!^A84PrHs@B1%}JPpkrS^Yf+%v>x?A0vIHD|e~4sJW1L+i9VsdC!Rq() zH4!nJFh2mXMEUEE-$8qf2Q|IaqZ!9`oqeg$iV+W?$7iPX)ZNR zEihl`!@KFt(p>6XLSU}I2fshlw@7oTG5(r>nXUT9GFwOcseU1#59#hlr>1RN6*6-b7GBJGQU}8{IU}6a5VVeG4gNu_X z`|tK&8eDFSexQQ)JV>=P6GI_86T?+)7H|gssLRAKk)4U*mNpB6!xv_TXWA?bjCxEA z8`+r{K!w7CFU$;YL1HpY3>Vp%7#cKL7`|vv@6+PaV(R`geU}#3E4v@>m>C##Am;Jw zKz#a8mx`V+FK1_e4&85cp zcsi#JS2}2|NRbYg4wJ_J=?iqY47d!mSQzYdSU@KM-qPU;W4ixux{)pyWbL;umzk2n zCuW9V9TtXk9TtW}1ttbVUdTbt=37}94k(Cx;Ql>*moC>XCe>fl%k;QnnE3upzoN$l zUQDXbWyo~*?{qVLt{*xcKQ$ScX1xC%^GAb0^h4xd1qM(Tx8M_K_X1?`6lk@4o(>B` zk#7;v>PdHK5iurS;|s1OO7iCU?{!jOD)dXh1h8jHvWr61FKjJYN-t^7M(&V=g;Q`-OO zET&ure4rL&!53zR4LU3g316o>nR10`uKuOK@Z!70Pf!aI6egfL3WP!R)c@~S{@(%* z;|qTfpKch*Ej;~-DVKsYC}KcrKp3L#$$tfg1B$|+eQjo3uCgF!f+Rs0qTtT|X;6dq zgLbRQPVY105|aU?0FW9GhNy!XG~?g)17=)P80~a_A_kI0Kb(UOtB8KMNW`#;kM{IQ z7F=3lq90cLU^H-G5dP5eR{*+3@xsaJmn^u##2)|PSt0u2!4J?xtO*wb!v$RyhMT(6 z?JT+Sqy+yOF?6f3Fl=LBP!#)c>z5IOf-H!2_1E-cmRxdrM}N&!p3Pvy@IV42y6@Li z<=YI8Bsi=e1u!VHcxf;!4q!3TNmv|Iu=jvlgzj`9E3P^j^}ow981&dK7%)8lzVe@l zq5*^OhoyfM7=%B}`ZIlv6_=ew&_4wR7H^INf*(LbQXuz6=&~?qgkd&B{(ryoe>!;C zkno4}Khu@0xel-he~A4t{h2kF8`Hv{)Aek)Y|Ns5F*1PCZ`==#*_^W^8D>fFtpJ^p z!nYD+H}?;|6>q+K{NOX?SRwL3=l@y;rWGO|Kv~p=OM~h3zv-uJxWdG~=&~??nx}%= z3=GDN3=FSySr}OLwwu{ZO8he!CbQ2_W_b5q=pU$J?fv&F&w5m@p6yZv8*l{_+kyi#8!xW5cw;!Lga(sU!K_v+5#6W@`XP9{==xjeG$a^_ea5dh7&88 z&GDB*gW)3YLkZJE&kwjY=&~?OSOZyd0Xo3d+>nK#b{#WA(>i8VFq z7-n$6gD}mJYY8Lor{9vgA1-n}0J-bUba7{{N~Qwc>64tfte6b+rk``>@?yIEf4Y8<}J&EtiKoe@az|8X>dXwNKWWO z_P@A=7svA13}HJPUL{Z@Q8@ zml@OUf7_$nxkMOsB7PftF(`skDf1sj2EG*{AHsj_0xt#STlwz0;SZ3A-cOLc_Rs0F zJh+w#oz-JuXi#8K$Pr{<$Pi#)aL}6`#;C^*4BUw0>xjVClkX$S0)An{pnRcTro^M|EJ&Z;ZkG# zG5x;}m#A*)Z|D%R9wfJbX3#)^2nskzfNlBz3f!j?`Vc-{(1$aB`vzaGD~xti{~`)G z;SXkiA>kza!SWyBa9W^0{g6MGj!?s2MFs{n#Ghzh-(cK&!6o#g1AbUm@fXB?ib2s#a#GM*Jok4uFt}7SD%I9sXhzC zTYVOWFZwJDKlE7`{_3+ZFd48ga2T*K2pX_3h#Rml$Q!UQs2i{_7#OfHm>aM#I2f>i zR;V!e8?Z2h8?Z3M7_cy;7_czp8n7^w7_bC0R2r}_)ETfav>UK6^ct`*Of+C&m}$Vm zu+V^oVWj~J!$t!Zh8+eh3J~1pExr#LB?%*N}yQg_VJU#fXIgl#zLjSQuCS% zjaV4Yure?h7_orI3N4LT7+BaC80?K$7@n{)Ft~yAu`w_N8L=?PurV-1fb_93FeDhU zFo2RnI!GTI14F)%3Jdt4=@O7eHU@?oBNm1uYzz$TMl1~7Ml1{yj93_^8BGt1;d;e% z{oiz_SS~%L{r{#H#d2vdt@<~8PAr!i)3krnkAV1~QzK)!beOXKO_zz|GGGe)H{CCe zON+_+-}I_DE*&P7f74fh_@Gu_9HiA3&!r8TJB#Ov=G*jFcZJZ0^?wx@gg&hKJAFnx zml4yXzthjebLlZv{hj_No=c5q-+v1R15ZN(;SW3iPuEM}QmO|fp9MxN3~P;87&aQQ zFl;qqVc2QJ!m!tfh2fwP3&T+(7KW2XEDUFjSQsuEu`paSVqv%q4TJ|qEDX<$Sisxf zK&$3OEi1hR;SU;B9X$91ILQI3RiR++0{aFf^79(`W z5$M=6CQpG63IDenq;eH7sqfKNavDc z;`lSYA)U)ar1h`RYL-=uGc_3Aei#2Ov_j~^l%La2q;qMw)&Eprc>P`E2lF~+9t{J7 z2GHbeaf8r@Xs`}uu#UICKsvI1@~ja0kp7cxh0uqTpAs7ikav=qWpLSnRwI{XaOE*I zm`s0`!R5jE<2Ps(u+WD;)6Fxv>;r0kGcshj34OTn6J*@hA0Xp4{Qw!a{zs-8NNn;S z1qPv&76z}sFZ&PTFa7~izu<@D27|pqD?#cf{l4@3fSV5+1B0&R^kbP^Sqd+Vu{Eba zLuet20^mj0SzKybLg2F{o_s$69;34`VFA~Tph^x>oP%1c8x#dTtoSp1K^B*eh=M8X zxH*tXDT)FgI{r+50FrrtA(QcEx1%*%??F0?q%MGf!Zh&b9`$ic66}gF)y6+wbXHa=7&B z+5WF_`gzfSLBiWOAsRdcUtr3@P-e=)P-DshK0d$6l!c)~n1P|gl!YNnf`OsWl!ZY< znSo&n$gAoM46{sG7_JyFFf1@-VE|nuu*{T&0d#r58dDYq(9HTKQx=AXX)_o+j9D1i zw=zs(oZOtjpv`zu@I%MH!`l;cxwbO02!lq&r1H5uK-=Q;xehX2{W)E&fa@QV>i_L( zgTt!R|OsDsibEPr8FrNOcoGXgS z|L63e3N9-)P|7=HI(TsED4u97Rn zPVhtO4^T>Z{QcoS1%}7p-+@yK$Zep)9OO1o!vvI4Kp2u*K&g+(lmEksKhqPcxOQ+w z|MO5(VBiOLE2_D)gakh%fCtw=w_pet2<)}HH$ASJOTobde5Muu2bDit5)2XyG8lE3 zE?RdmH?Tecou{S6V96l#Vc$;%CF6{egs9*jdzn21KBys|d$q5cOTl=?e@K^y_rvAC z3JhX<54c&Fu`qZbb$KAJeDZ$+xcS5n+G<|ImB|zIvq-v9QXxa=gYVDjZ8com*go80 z1`QQC)pD76{QhCYAiPq8f%n6|KYEo6dUh9$8H^Y#^VnDLe>nO>#mkU^eTCqMf}hN5 zLB~Z2d^r4{cNIi^++W@m0v~4oV_zZg0kndnmP;g#|HG0WqEJ2lKUtxA7Qyw{g7s8^ z^_2h9u4K?=zM#y&c9!ih;{)XcVX*x189@TTeIm#bzDj^ zu78!YL3u#n1IIrFhU9Dw1E!TT+?iGgd~oBcs3yg3CD+%5l4fr}9S56`D7HgJVo1poK<)LJ3bH|oxY)gOO0vHpXoOmxXkJ~ z{%ia3tT1E{{J{JJw7o>&1N%Q4MGc1A-yi?9QM~;DvBBVuiqm zEq{bo2z=OR`iEzQz=w5z*uajS^aHZ`QETO^?@NAz9KG-l+X{gX^ZpoYDA@bojDAxDeZbJk2cI7klnfarF|aZSeh~ZD4Q6Y|3WB=C0nJ;({ zOmArBk^pTsoYl;wX2<`5?MI&yD}yD29>XLC!4K#Eb}Ko1Ph#LWX31c{Ao$_e}eh+Y3*EY zA`{G!Yey4Bz7GulrhjPXn!!~3dwN#~ml{+2@9mp9xXc*YK}#|x++m*H|DVfnxGS=|nlSkk8f`?D|K7f{J^L<$NXL?H)mj=_sKhxKBaVhcF|6x#W1@ALc zWZ?hsWBUCrE;Uc01uX#u6@&#_`50Ijcs~4|9@)(m&c$HC z!T?gLcFVY4q{txf|K^j#2AAS;Xs>O%t7pHIuPfzLLGGhV_$oFs=aR~h9 zSi%2+_y6>3JzQ37e=S%T*e$1v^>S$mxc_cYVoff5GE6&vPtWV+ zvS3pAJ$*$lR}&Lx5m_IXn}*##hS>@XERz{$8!|8}6(?*@c=dhCe+34}(T@g}EDS1^ z;4#)&eO!7L!v7F+k9;3meu0MlKx&paGbn%x08spa0s~S2T=}oS@IjI9L&dLc{agx6 z3LTcXT1^#-d>%coBp-MS{3I?Dt*1zn!~7rGpp(P=A3Fb_ zcXg-pP3G!hTJ?MSoXK1cN}RtzDfrue?3;o4KP3L2{%6ckf?3EBHTv)@M)Q3Q&^&&9;L7gUoN12amsN{z=IA@xAUZX#DRY2Lr0G)tA1qlIHe0bUoUmeHxM#(}aMy~3;e{0o!$&I?hTm2!3~bhr z6IwP-WMXKX#Kd5}l_leWf&&BZhh2ZC$IRf$U=sZ~{n!ky2+-=dnOwRo{2wm-m>w{b zONWL3!;T-*8)kBq2yL)oVGyzg)%p;_jy{{tHj7Jz>C&I+I$I-~Z`7bGQtcB>zv}H-}4)iShsR zcXPOoDJ9sjFsNIzFc@<%Fx-bOkp*pbFob&G=(Fk9=5nbpzMB4fE>|X#>%Zw~^SE@F z^!`ns0;0wLO+N&pLD_sBmkwzC;(V@Pj{ScX82CQy`8&O0K9?S77uSmUTs=w-RxAvz z)+`KB)+`Lg)+`L&)+`JwtXUYgS+g+gv1Vb2zc)Q>0hbEXs-M$q7I1kmh5ny@Yyp=6 zT(o8Z?TC1`kV}Q}(RA)bT>qJF z{h!XWn9EA)%J1z?w=R0EV_FY7uJGY^pI-(H26lWOPW+ypu$arj3zXQeTeC0(&R_xu zf?z)r!^gQy47aRV7!3QF7!+qQfgK#!&&2TFnuVco0TV-EKNACJ+EsBH6T`%QCUEh` zU^D&EVlFRHkdq+U>dF6k;Chwk!*$50ddLzk3o%fHLgerKzXp|G{(t(SC0xrSK@ow- zmTUgEfJc3KKDa~lmn`M-Q3M4bNDT}_%sTV`1Jo>bh}thpxoi|cDHNs-L_^eG`Tqc_ z_WbmTu3YP<8<=zDP0w4-RmJ#w`pe~9+A+RJ1A2TP-a$v>`96I7iJp6zF%HfHO}>Hb zf?=i%UT^SepEr3t_&^D~Uc8TKR^dfRERM!1PDRK?+t9H`>o_sslWD1+B3tA@580vpp8g;AFlmO zQPg0#@qN=@F2x()P5&_{^Q@3!;Q4Uq7i3G)oA0i_1U!XS@O{|%8??-r@5A1oyxtNk zA4oj^KI1>AK{E9RNOls~-u@qKEBHS2`~ca|`9mJOWf9cF;5T4l*dxclATa&oN-lT5 z;$Lo_Oe^?4VQ8Y zD-9T4e3$tN;&FoYvi;y#@$|d&Pelfh>i*v#mE0eMe@y?iic1DG=((Cpmg(;Q>1M0B zo8Nn@#*u{ay5W=rLW^s5DNbXI$-30+Z_c4 z2GDAIAKU3c>$s*d7601)Y8_V*Bh$@4)8jU9$uR}nPOsa*HG@g#|8|LuTq_uv#Q#h` zw23PO{suMp_x+w;vYAVdY1!}TOEz;E zF!lbPer+>X7E}A*=}ud?QWXCDW@XS=@#MS3AH5Y%zMK9@e9&Oa!eCfzE(}UU3)W0O zwuP&#e$r)Th8OaXAjz<0VaQQnV3?r5z>s6h!T@r-k1Y#$nC9YICWgdiObkmD85jg? zSr{a2Sr}AoSr`~}<1Sd_aDQ0(i%}!;B8au)7uy65jo^zqsvzFVUmUYzo$DkE(m=dL zzczsBX}=7>bP?mP?R&OzX)$uO{FG71aOVC{@NfEuZCnoE`e!>=8k6+D>9e+TIWTqo zoPK9Jmz%=1zbp)?k_J;{=1I@ho1#Bu9nyIjydUiUZg<+jmBlE;U<(J)p#-0GU$&C9Dty25^XOk!N7IAP+ipWxCQH zE+rXQy8~1>KnkN6@X9*w4<~+aPuRo7!6@YX8`M~V91|*|$o;|k_w=g0TwYqG{}6-c zJRiiM4Ktn(k{AuM>F@S(sqsDqH+l}ZU9e?gfR37hPTZ_f%SPd`#9|fBZJ-wo)5eJ$*j~{!TX`_2WVv@&xcL_K%$@tE1nNMe=QiEe!uva zEkg;cCg-Q#N&|+c-%tEt-lQ=>Zw2pUo)1-jr~lc{>K>J8$JpaBBEF<@qZ5He7DQ-$Dl3iFQ^L!BdE3<;|Vfd{-{nr7mXKbLxZo=v5 z&kl0MF-`q9-R%%p8t6=ib%(e*q-6eCFueW#^0$Jwiy4RU;v`K59VJksOW@!1fWurl zT%Z6euw!9Ru$zADFjorGqQBF1j&P|krT?8CbcD-_@#FN~BV7GVk^iU59p%zt3Hr~V zF#X>VE;%N{|I_o1a_N9dhdD>N!7N&yZm3=Z}z3<35m z3=iyC7=GKcFbF%aFlae|S`f?(Yc5U?I?ol7z2xs5aQFHuxO>h0Vb0$}VE#fVf6Ct# zV16!?--EQIlk3CZpO7gckZs8AZA7}?@_#pYjDzdL`|W}kxRe>S_9AU)=Kc@|-PzCm zA@eVKr8__yDo9PVp{rp z`m)PhdQ82)w_m%=rN_wk!GVS0z#7Q5^p;E0g|2c1Fdh3fJ>@Ew9lsoSq#C3G>}Bw= zfg*eU_kjJ$`GFrS4GMwjUKhABraN8ZYO?!^lnA&#OoJu@?hi9D5&>pQV}j#!rt4g3 zOu~PrXIa7#S>9aDQ0*tIZQcPyfTnV7G$%!|Y!Q3`Y&@R{l45`n~iA zNTlc|NIw53NLS8JkXe~OK{loRtnjLwu6~0{UTDd09k8JmfAc*-%2NJJkGR35W1$PR zB=A=f*b-N$C7!>!!IPYJE1!N>23w*4wnP?eiPX>Odv0*aFmeB!e(MI8325)Qz)dbW zCWGJ84Q_JD)hqlK0ef-FA49O0AN-aA^Y{FQc=^FkWw4j8{Dye>#!m&X>(=~+c=^Il z6|ifL{Dye>#7_l=pI|RP`M&5s$jkG8fV@2C2goloe}KF^?FY!qlYc0z;Ewz-;fK@; z?hm~`L{@Nr==uR_hP40SSi$|FhC$&+cmEDSbA)75TqeE_usZgaUao%laJ;Wk$tF{J6sk_F8`-z+~Lw;()~Yu+8r)ECei=XkKN(YWBj}Q>m4p-Mn4Bf z7KVy@8y)YS{p`*ga28y6ZgXT|*zL%|aKMoTd~zIUlhsj27KZbVEDSdtSs0!$il$r#KOSk1aaNfyVKL|aXB$f{xyBoJ+6-Wdw>5ZM>9MNkTHHB!S&(#-$&rW z;i18^fd2+uAI|?(U??^CZ}9kg((eUenOLaIp}z_Ys^I0qy?+!KW|-O}})XYm=5J(u_0L zhi%X@h3msk%ra%&11>c`-oFYA4F-3=cm7sj;PCb_P)_Fh!2B06mcaR;1iXYu!HIO;$&IRX(^qK_9Jt`C#`Oh5AwG;jB3`X3OT^k=%xBd!`DkX=6aAxpSGCs|y*JAKz9 zE-xn2f796>bEyQJ`p-GD$BE@;qLhLX#|o|whyH?E&0HV${byb+*TA-lZ#C$m97dC; z-+li+Vc=WA_2J}iGf9pW+ct51IPzP@^u}}08PuRsR6&vRgY}Q;Rgbw$loWm&FmQh0 z{egWTg6l)Y|LGSVb9pcoIBl1D!sW%pbiiqP+A}Uaxeu<8Vi{D>32Z%_#pH27;@pgwlC$0d-AJhMT;tJ+F_Zy_;^ly+BQ0M-=thDdnm_FG@L8kj^*{Zv@N`Qi9a$rYR*j{F2Aq=P@F=Y8i&sh9g%AmhNm z{^8eOk!eB`gk~`6XCk^Ffk;)Vqz%tW??AvW?`uIW?^XXW??Y!W?_J>hGx)XzM#d> z=*jgV=Qo40&@AC;!NDxk1AlNSGj095z3d0qB}OI#@9AE@xKg+*eyvgfxvJ;S^c}yr zrhq);_nYgREXX|(A`A+k>#|{oT7m2bxo5_7#fe;^JT3pHfCnkqKWzWKz3C5^1S8|C z>9hZGDY9^WkoYnEz+bK(Ob@)L@A}83=EuyyVO+eGg@IR&If4HI2g9}R*Z$~9Fizmt z;J(SA#JCca{;wjHSR5b9{zArIIX*OEtdW^6r^RiimEgm|km|$2kmbX|kne*?Opxry z!oaM_bAyB7^7noDlhdQH$kbVn!ARmvd6WvIJvwrTWZh25D|#XXV7?%x4KA#>t6EnaY`L zT243Ftu8wxCDtnmJ4kU#GYUK3+H`5tWPwQxyPT~Zgq^jNZf}~&!Q~LD$n7BIEX<%_ zEyxh3t$dR~nPY_%1KS6m|8n3}Qyd?@{|Bv_;`reGPui1j1?LC*AE3ST93PzjiL7K= z5zF~O{)fm4jt??_`Brdzko?QBg5!hO-#yQnR&acn^l!&=X;$S#MpFUZwu=f3Oe-Y} zI6f@@yEubUoADyZM<7-I|1c^@gU?7}W|)4kv+Boxc?Rg2S<`R-%!7!;qzn_`c{r>js0p0$Z0DJp8Wn z19FrmsKXdx@bJ3|oZqZ0uyr=W0f~p-rG8B9;WqQX_6sAiA&pXVz_&1QVA;ZirS&=8 zQJPy=o7tN=LB`01NbcqAUhx*?NvK$|3rXOeIR;=&-b5N#}LxX|i!?Hi1 z%C-4Vi<7`5MFtin5O2;OMg{}Jlbbj-7;lCf9NYv_cj*s{$;;=UU7!EIm;BLY$a1q} zU|PZY;opCdtn+WsL;?dt!B*$Ijtz{)EDX+R91Oe+|G%gGVbMsv;CKUcCi;>GEJ|vM z8VvvIzi0nZX2>v>DBw`i0ttLi{-ewgW6Y%_QD6k-NB>b~h%=UG&}0DhKWzReGvvAX z7_*&YJIu5qQc08H|M#jtOtWp3l2bJqKo|cs|6!WVqqI1+1gsmRKEYU`fm5jg%s2Uy zWTMcJ`hZo#=z^$5;>CJxB@tzaM*TlbD?tGx{STBlAN+z?$bw?w0kDNmf0$-3QA$p= zc>q!K={K^YvcYN${xHqkTKx+@bWLnj&;989F+^8k{^CU ztiJ=6TKH?al8AB;14QE^utpODjt^(SvXg$XK7h#Z{+YgvnOm-Y>K|!OP!62rG^@%a0BuvtF8K>9s@@qznzkVZBrsWC8o*eWyKnT1>2QtBV$ zOs3U*vn&`Me_!((q+IhCgJN=AQiq1Iz)YqU#tlUc93R;Kfz&Y01gV+{RwXulG7Go1 z`a3;`m0N|${P*-p ztlU=hmH!~Ssx#c!K6L+<^vrPM_|X0bH2TZ&q5BuJq5{LE@9FN&VhNGf6Va&?Y&(72Xr4wiy_;GTfe90uyf1sZvF)_ZwA=Bsne&ja|i0TK)uuP z(~v=7MZMSm@3;RctkPr{Xs;%Jou>s91pUTOtUcbGc$b7XLC?= zWIiBO$=2q_!ocwCJ`b}o3wYE1E?*XgJANz-dwp3LD*ad(4*9Y$T=ivPxbMrt@X?or zf!U9RLEMjpLC%kbLCueaLC=qc!OV|^!QPLB!Pk$4A;FJ@A>WUso}tl?g<*pq3&RvY z7KUYhEDW=JSs14HvM}r^neMRMkA>l|9}B~OW(J0T%nS@C{8$*c6fGDoeOLR#pxn4g zia~>c?SsY7dQVWCn*3s90D0Zw2Sm-RKMcy9n;4a(RhEGA=WFbVEb_EM}Q|Np0E7`Sy?=Olg5qWW zPeulixrhIQVr>D~_PJo&XZ=%H!Tw?T^oiWuioEl{j%x-xsA2kkZf;}ox*zIb6RJQ* zU9VvOPzN?4dO9Z$x1xFySiSo{opm6?o&QOKyMgAv6d4$l=NN**i!+1mga7nE9&YJ+ zN3hS-z&=y{XT0IVUdTeO3w|sN*Zm;z3ySwAek=?xLD9g-!0--~4#0U4LKJLe$zWw* z&|$xzz`*h$;7>QWH_Y~-`j-X+=-l<@41uknQkDI~roV?XX1EK$8yO7KU-NK>+L-@I z?$BU(*1;QO;5 zj10^(E`2xpJ-vpP+eNJYFW+hg4fYG{vo<-gTx6Ol!SLw&+kexq@p5Z0Rs5L7$F0UU ziIzA{-P|INZpgG-_pF5bb ze)>XwZgGL?pBfAt2LHc*{{c#*Uw%wK!OyKDGxslOgOY~9|L-0D4H-ba9GRaA3@!!_ zzAOBhE+D{dAQ1j9+f9G6fO3YL;pBhc75+^R5a5tYOMttf{?;F+73?3L|7Kdr zsHDKaH1*MU$G?gULf%X(SSJg4A24K@%rxcp_w_%N8CYhWFqX`aN?@JEGBGlPX+=~5 z>%?2%y?!Y$aDpe)1pHYT9H6-yl)?TpGBAKv(;Z}DW^iOgZ=tg@EZ^|r`)(BQ$|1}t1e6RdH{hc7U zjEC26mf4C75|f#fnP*5bq$UVX7MSwr`}#l3vsq_KOupo;!0#R<2+%lxor zkeYP>?0o52QWGOH6d0lsq$l3`zWwL)AR%r8_IE!O7}!5ZPwy1sHWn%T54y+0!dQ`k zY4Yj>p$Y6C9{ihrL5N#K=jy-Y?BZmm*+T1>mH1`~PiCEA%<%C0r9TD?5^EoSPx}k< z!tGz6ta9VmbOB**F)5Xw70TKT49eLJYm{d*{FacIDZ#)o`P=sgKc+hfbBi&}`7u30 zm^+W_*7w8zH5hJv|M6q`1z~Oxu3O)?fcYdli_!{ztgC#Prt*VcuE{ zs}sH`&t_m({2_7cdp1~h!H?+;BHT($V!x&@5#iS33j58d$TH*M_n;rs?}%`#*iHXu zP^!T2=lkq`1z>vqKNhnMB^*j(D?wG|i{E_bgl63NZu3VQY=^eD2E*!vF6G$_KP7H` zpZRaPohY}IlktzQ%HU%xd|4PkrTu3=76wow7}RQ3f(x4v8clbT(XU!5*JTWZp-d<}-(>C%&K ze!uqLlEDJ3(%kz8RHe#4P%`*q9GMZ7AZ<5GYU0cc4Tf0>(i3lf-~Yc`p@D(*!|K1? zN(_pV7+4rMK9v4uP_E0Cm|T-Q&x!ql0R!`gn*ZI31`M4HtRI$7FBIc8=A8QjbWbSj zhsx<|#kghbg?=+AOU#m-!nI;@Fw;ye2Idcj|0QNft)Ah;c!Bjp@?Q(^otq2UnHd@x znHdtRJTNwQN?(!G3Q1s?^kN*k`H@}C1 z2jUO7fifMe$I-$89<^irU_L!ioLjp7C~d{;pBhLX!FM50t1u z(~yV%P6w;``kn1ZGnjQ>In!5@p{hxZ{S*j z6;#Vfa0jy7|GxGA^k)*>`@;VI!rhC#|NY%Be7)HF-|ziG?#0S)Wno~PbpQM1U( zSw9#|kC*0_7Txs&G+4-?EWDM4fnhQi1A{V1s$ZI0mg(k?>FcDq<(N+Xn0`*0TY-^b z`g>{ac$VAWum7JOB*U#EYw(XjnM(=OH)Z``^dr-aX9fF*e?JX9LA2KN*)rVf^-sRf z{jcgNv4Z`B;7`z5aBLq${~N57TfzR}C3ux8+XvqNN}eh!*gr7-1f3lV3M8|YS}WK; z-24IR7_fc#`%eqhLi($+g6+fgzj7**!|A_@3@R%a zKb-%|wpwMCCWF=rmJgM`*jBI^e%SXH)Z5to*K7sbhaG;5HX2(9@4{nbCARXi&*+@5?_{SUIX32bfs zU$zx&A8P(Cu4d2{zp${AXT|^TPycCwPbFagU;$n}%l4t?pU}z-H}(%1KR`ND!8()v zGCy$k1c~ZJztz?SDg>daRT0f9L$m3~lP&`~LfXmfIwhrXI^==GhV%_rAaT&&a?s z=!7no;CFg*PJ^6&I}^4w}H_r90>pU$Dct;RRu52UTf zHsj&NTKMM=3kJ3i|9)67uzsliq4e<1M7##>3i2XVC2j?d#vf8EZhqhPb9#spca&NHnAiH# zf`NIq)GDdTx4o4VWhdYAjxms#eCxX-Shnov^eal-K^!7rp6Ac$ddl2-DT@Eu7+4rA z%%oO|Oc0yK_F>{b1qOxLG6qbO7bkL0Wzb-`ptzFlL)$;~*~!VwN+PR;X0px@o%Y~+ z>mQL7QfnT4m;9@^g6%`!F9im+58c148Lk*JsIpDYP)==7ZjhSEHskB}8$YHWQ05kq zn)<_JpV5FYx+7BZY7=PKbe%I)^W}Tt(F#^BsIAt zL1@~;?>@hoW^>Jynw;Qm!0!RO$XGCV){{HQ^C4-5#)b!5@ z#@-7I4H!V?hWxW;keRi@7}PYDoh36dGQ)r&DnWMQjqmUOgHAFAHC!HiH~a@`U$A_* z`nOw2lL6GeVE-`x_dn%m2C1okBmM+1Oy^bOX0P86z{0RlnVBI_nwj7vLURBM!-1A# zLhYc+K;o`scK{1RUjPfk!~hnCJ@=RyrUtMu%nV>*IN{I20ID56Dl;=olxAjN2xMVk zSn%yXtc^8Mj+voQnwdd^fr;ls>i=#<4TeqzmJbuA&sXC%=WGGDa9BPhOuw(jEnENd z7lX3YEa@pcD}sZWW*RXteUSJsHA4p6!eRN~^%r&sm_PucP4i=`xi<>~s6BK0`@>(i zzCVYy5dMFE^|L{FHiJCFBZ;RGVbJTy*gmWWw+jnO5FnoQkz;H}i&MTVXA-HXE<2&zv1%_UO{|5KI-}tM*FhyCyE1IDeD);}N z0)r-4?$loehAReNzVrQ1U}!P8_nqsX0t3HygMo6|&F@=&D=_eS#~3_Ly7_(GZv}=3 zgPY%1{f0EVmi<;>xbgkHOAu}o5HUC$DTOuqU_D^@z;7;YZ z_xDk)cno_EN znP%*8V!XieAp$gm3hu{4rlh8?)8<7x>87Ozf*f>Q+t zPDI@Np7*bQ?*X?9Yarb|fvtiW3>p8wzy2=(_Ww=ru>QdSPz!_6 z9d4`oZ9fzk7!>yyJowJ}8`ORN|NZQL(5j)E-vvQ4B+4N6h40al!S`vY{T z9z?wUub3Bu@`dl!e_@yEv3!{O19Yh#`-h1?1Uwm6uz%?N0lHL={X^#u$fbHm|0yu= z8VIcXZ*c#+yW)R=6|5gj{&B5f{Q$ZVgY|>nKQYwJkV3lLI)Q(`>;KU4I{@nmI$s-svST86u zXc$XZFlaMeSp9Hk27{*Y1&$SezTf|U9X$2K_95yAXc&w2!@7T$J^5C!eOLsZdSd;s z>>q>j&kQLBsTIs0X8f00C9+bXe#PVO(*Hpv^#ciomG{3N{j0Eo^+VBLsTHgr^8bpg zVEvHumv05@hs?hmD_B3I{Z(YJmNhVxU|^X1=ll8ppt*?DhXG0qYGSKJCNr&`Eg?Eh zuHbPtqc+2Z_6K|`tr@r&e2f)OD;|7S<1+{)4Q1{|98;n?E8eL4$f1 zpk*E?oQ%NXbpH=1Ql3U^bz-=<|AEL#kaPF`P-IY8;bF-3VaE>*28Gp9s~Bef|NiN( z!itp-n6w!#tb350{U~d)6T`(F5BOHrqXyCRADNyYD^LGdSPL2pWc_gNFKFDD^~0n8 zphUAA?4TuoAR%<%Uo2Slmj4j7JD_T(fYnX}tL^)P2%!c4f}q~@hU%DK57kl))=~l1 zQVP}r38MCY?ocg8P%Ujx9Z6sv@n9V>e?aGhvwd&?htP8g&?)Qpzc2g)aq;n6(&EdT-AOY(R&P+03XGs1@&VHQ4_kcm0=c2Ty!ixXjXZ%4V?WjMXC}sZx zi5}JuuRzJZo&l2X-~0wi{`?I}@!x)f=Hov9R^RYp?@i^|43@HwBL08B{MY9hXqjhK zAPYllAY{OMQXmV%j6fEK*@2MNNT3d_z*bIhIjQ^)QcfZdhBAGSfHpc=J~;mX4Tdr^ zFx;Ge(2!eLLiGn5gCc_!1B3GC@7Mn;Fl4$hOndiz)9>kT47rt<3Vuu%Fya=e=lumL zuMfC^&H>n{$IP%$8&W!hY-UvYu$4)jMUA`!(VrF1v2ry}vSkFwYaT7n=jL7~h~OLzzKf z=6?hB3HQIJ{|0F+`IVu>vs$WAOlhj80z*{e|L>oFElZs2DYfGN_jkV-l_z;7Co8V_ z|NX@;CS`$X77TR>`x2B>HC8Dy{QoZYTZ5s{z?y+WiErlrdIQ!8_rKeM-F4}Y;tJLe z?!Q3gmCG-XHIBbFC^vXoHz+X7vaW9U|NY=E4F*Q#g9gk>0y7yV|2I%(V4HCN`#P{% z?Oz7U$qfgL7dHqPKW^YP{%`zRLaiYwLl``^djEU%&kSYdhKb6v8D2}IHGo7pCx7{F zlkuZMS-D{uk}%igFW*&vOi)&C*pDR2J^AzZNB?gq$9eG1n$7SofW`P#!1M|AoMQDi zzrXv*rNlg2kwJJeC~YJsu*|MXSe(E)TVTrL1g_c2iQKc36WM1kPGp_^IFW6(auUbv z0I`WTzU%y8RAilT|GPu|KTQS;Z{exEhL01>;aW@oox-V=|A!`n zuD9^i#|gULH=tI<{?ldK?P2CaQ3r7s1t zFkF&9C2e+@nc-F-3&Z0;(8^I3hOdDv3<-fO42Igw4365&3=4Ic84|Ub86N5~Gc;;5 zGl0s`mk}&8?$>|+@K=+8XSVQEk;w+$nud=P4B(;g`7g*cNsr;K?ir4Ka~CjWeBCeAT{qI z81%R=h=a38ec?~O6-o?-4FA7h`3Xw24}S>x33(bY{Q6$=PY_Id`~&gs{sXNK$@-m` zVZhLC`QP%__cecSf0z0_P2m8;&F^hLG#DUjX$y^+86IjgGyDvM>@8<_pvM3j_6C*6 zFl_BDuoYDLvM}7P|E~Dk(&N|ndw*|!Kl20Rx(5>fzn}lJU)jV9G_VUAuD$+U{68o$ zKajZl{n6iLNCUaozjOTuC4P|1)xV(J0Xp?t;zzTxI#@SoSeW%g#g7Nd3Jl6#(F||F zeJ9or`9BmG?i&0zxcLWBPXcfbGr3u-ZgSP}me81@+4{r=@IXz#k1*9>E+ zgdGMqzR&rsz#!s1#UMHD#`kHz6&NNM-1t7}w*o_g!Hw^IzZDof3|K!n{XpFD%lu*U z9|Z=`8ET*e2GPA3;l_E4EXMMx1UUSRx;iFZuS#%4EXMM?VrdZMEP-AU$iN`571a5>`+fG$>A!5bEttaoOgFLPwy;vzhdF+$5DXd6g2gdtz!tIy z>H7DR;5C>B+$4ggFSFye<6HV$f#Lf1O<>WCpy{9NxYsd#(w)A@o;wM=eAaFzu)>loyUpWO7F~1V+Kv*|HdqnE0psav>SwGvdsAWz4NCr18B&Ib@BwLDC>;R z-`##rFLB~d;VAy0!EpWiil5UTIB|<{q=0!de@_4B#4W}d3g&hF44mFy&neD)<2%cA zb7yXO7oR^2%FbTS9z2tHCpReHX6Bph=q)gvfAY`o)Bp3VQ7EO;pb;0HU>5L53uu-CeaYuU zcV>ozcFYU{!7L07FGI~hiF$#m8UsTxY;a_IoeQ@UBUAm)>4#jo{jAx4zy>t$e!ut= zHlTUu`{6&>2Q=?|-}VPIpn2{)({yh)?r;&epV0A4J;-?G{qI|UP2c9mt-<8*XZiy- zZZ*D`pRm!)``^QUPZx3L&Zz(S>&Ey0KRQ8uM2YL)rT+X-*7AyGcoYDd7`pyl=ubOT zhWF1gWd#NmFW8vNweL32F_$~v+5b&ZR$u^)$3Vthu6@`04;gd0^Zh4y%;nQ}+aI8r z>Hpsge=p5`mJK=mj^)Fw>A&5%4MhdP2i+ZT0|hQ9Fu}Qhdg320(dl6x+*vGlzW@8b z{fGzm0!F3>YqqC(aVs%0Iscm8<;|_c^6mSH|I;^kb4#f(ftL;zY-M8*$zbz%Dz43- z#PIXG|8Ii~ZH5K|C5DgRSN@&;&YRnXDeUib6CZ91F>LwsfY$UTA8s8xho5XKm_OM5 z%Wz}LJO42%GkZllHAqA{-uQm#|MWLL+;%1(zX$#= z*!y9tb4L3H#>p%U*S~lEV`C8W;Add^kn)R_!HB_{fpO-i?_$50Rx-|Dn)>GZ$G_7R zDmlfBxWJR}T;42`uYX_vi)FS}Hq#20N!rP*v$L{UCuJvJ`|k4xR5pRy^B4V?86Nsf zU*^j_Pi^ln4TfvqKm9gfV41DOAT;@?x02%PgrnXO2CEaUe_scdef)cRmLGSRLp_+c z<#&U*PD4(E&`i*UxnF-9Gkh>+n;f8=1I~_YGd_M_{MVSl5j=w102Sq!@#%ZP?`i(r zA`-g4jTwF#|2O8EyaFo8HRIFwSHGs~_;WWgJ@`3&gFm+z%aI=iKGOpjIV4!Fe_#7& z`ZIrSt$_D`uYZ^Q%f!IV0J8YT-)LVAhM(V6e!@iBe;YD{dkal_oDlAGK1) zMe9Yu%KsS8%$$`7GVo@m0>iCDkbxV1UH`uC52LavG*(T#g(e73T%2I+t-dfrucM`kKbqh25nP$^4;~90t1hCjltv8Yu~s3 z(^p{N@{TZAoOJE`#(xS7AqLmJul=V0O3vUtE1*yT7Yv|-sz9v)@B;Sf(}K8Fn4Er3 z-xI{`BXRqmq&EwLR7I1M<^_oY1`W}R8Vr}dpZGUjA(&f>&*?9d9LGg2Pi~K^-&KB3 zj|k>gVLA}Jy)KxWiIM3>@bsn-ZU;ub>4!tOEtwSdP5&3dZN~>Xm|S2hOQr(D)$hOm zP4^1r){qJN#h}4^@iQC8)t4C>3|GIW{bkT#x&UH%{+-?z%IzVm0-kCG)qM=$3020) z91M)B1sPaoUHvXL{c|X{G1HOX(>21leVE?_S)=3_@5Kj6+x$0zz0AqC!|0>Oxo;vO-uG%0pNfT0>YEri8FCya-`o zI1|FcuqlLvVP6Of!_5#DhKC_63|gTq3_n6x720yx791D;39PvJ{p`Q#$6~n+7+I!&kL6ZpTJUeWLL7IL-Iwp3{~2d9 zXmecPn$4iidZB>9LPCmxapsrrwf`ArGiY;N(9STF^kj&X;F`@a>w|;?gN4MG@A>~V z7;b(K`8Rz>9JdL}m+vqBPyZ0dEyDHX`OHzKMSo82C4Q*jpaT!muuMx>o|X zTz&OlMkPJPASckGYTLie3{EmE7eV(2eEBZ-pZfuWQl=Z*ivQmy{AB~*r6mHkB@t{( z++PI-&|V)+gNP7-xz}ulWDH>95!-MFzDM|G)qJE4Je1cO&rP0R6wynG(4Tn9_bt zH%a8yQTzXgc{a;*w#f`SEEkj*1ZJ|#`0}0iAA>T>EY>M042y$6QSkQ9^tME91*SWH zrmslkR$@B!XZjfsKl9)8cZu9OOpE?Zmr3HbQ8NAqvZvt>*NU6pYyTK9-27hkM}q-! z+nhoO=;)^DRY}}cOjeVpe@o)tV&?JVnPhRs!@v^~(w=9(JO0=L?w}VYFid5f%rINb zQ=;N=5o#lX9-;hWnp*_%EBNJ#=_9n&CKv& z&Gf!h?gXKXU##9t3bQj`CtUb0_2D*FGyZ%nkN#|DJn)x>& z1$0u^!i?$D(z)j`IfP9&%iy+SQV5$~mcd=eDf^e%`(ebH?~>d9W^ju$GBK>3E|$f; zkLkk6?bouneVCZ;{h6+k%WVP57;(AWasu(c8Ep&<6$>;NxD?NPzw~Q*PcC>Hl~0|DZ(*5-aY5CqDDICCt|TOU_U*mE_WNFi_S4 ztC9JywMu2B!HWCe=l@Ft>oo(53;Z`*Ww6qK;r{o@|E7E8b9XTL{hNLzpId{;^567- zAX??$bd3UT9Y)^ip#|LPOh5lluPfkA;sTvZ0h)%`c4_*n0&X|C`G0vntLI=|V`LIo zJ3Xz2yN{_LZ2Gqv?kJ{$u5@T%%Ak(}79p!uO>hUX?-> zgg5Vx0z<*x9bwa7)pPeSh5VUb(ZH?3%>Nb) z|Mqa~VcHMNlV^$(uQW@xvi- zT{vUHbftD~rRgSH{(pK=2lpnX3n!g3+V#B^Zd zbhRGtQ%o$Awtwp34r3JYnFKK!bVNS~124nb?@oWF$MkUrFquu7zOIj3j*)Zv**@-m zfnZw}2GAiQ5JkIwPtWP+mSGCE-QLv?sxvizPw$(+od!y>-zIS9f#|e}+)hl3Crw{9 zkz0!?DRla^iQI8a7bZNSliz*+PTw?#TSw@}KQ@_9&$&ELe*gRrB(C>&`-eH) zd`#T)epxWEOf+OT`CWKB=X`E+ruu?Y%nYD*QNt-_22c=9fbtidVrF1vU|`sAikX3t zfq~(`DP{&H1_p);Q2GH>{Rb$`a2ldc07@&IhNw4y@*SXb0@S?N` znSq~yfx+Pvgcg8`LuvsAhK8pg=fdb!K@fiES_u9BKZJh34xt%-KxlM6=o%T2i7GII zPDi0CMAoo9X%Y7^b}od1=|-!#=UGAc3_n2TfG~tV`6q-YzPf9csti> z?p^XsjV0TUo#KvUVK*@|u`o(B+^%+>`xdhhMBU>ZATvR@;pujv%iMWPLIzhMUf*yF z64nXVw@=3|^bYE?edP8tO3(x)E|6A8fIqkV z{~y9*U;r7m07)LiKcF$4?Gv{iQ^D8iW}mqAm>INKrhk9WEvxhZO(DZ)R977MGJV-6 z?m8xhPt(;tbL%lBe4HNkncE8#Ad5b88!;{TI{g|*yg_3-+ZS#-BPIvU>27K~aY77V zPz@^hJbjxQkDidiM^teI&FSCNc>IJ8pgH8ihv{MJJb6M7(9~b}JpGzFPal(k?)Eed zo_|bC0iUO*Y4aE{C1!4)rOk7XgK1&r^ePh`DW(GR>C;Sj;+PW5rhhZxS;sWNZ2B@& zo+_~iptAv?7X3itW%yhwWyPFk{ z9kb8@JA?`a1_g!$`|ZhC*g$hKquX3?GFU z84RVF83ctH85o5a84~%K85VA5VA!~wfuT`=nL$ySnL$x#`m2-Na`F?InHdf;Gc$Z- zWCrV7$b``Mkdb-%bR!-kIZ0-QjZ(}EflSN{8=08FX2Q%CWMrOx{SvnvBlGq)Z=OYr za*mSB426;qhfG9M+{iKA&6meXUr?5r!B7^W2ISa}S_n%66%mdVRAFX#sKq?p{T#QF ztSmD_qbxJSL1~CX6J-#3HcC(b=F4+QK2ejIAyJE&K~aX8p-=|Zp^nnb)7hVJ%Q4DK zXY=P#lAmbF%&^glnc<)|Gs8t~RJDxS%+tT`=9YB})IlVufB=7IP)NgYfWLFFqq{;- z1Vd1Sf@@Hae~^^|gMxE@N@{t2QA)9u0)wNAOOO?Vg4^`{{yde_HC4^A--Q|kI=_x&pe&|Ew`b(p(itgpcgYk zp*=IhMtf8*ZM1{Nlf!heK%OS`iNVYafg#Kcj=szcg(0YFCrUGd(@Uc-^Yr_dxW$p3}a?E*vZWBu$7tNV>>g$$5v(r#x`b##tvo%!8Sy2fr9B{C^Lg% z7&8N7I5UGFhz{Fs6~x2G#GRPQ%%GUX%;1;>Hd&NwVJ0)f!%Sud#;oZ@Av|e(g^kP% z8ylG!J~l8jFg9*~7Q(a3(#vBC3q!&LMAiUVu>h$Z(pbXGfD41vdVp4IPGn(NFmd{; zKAu@&6DG1Sd;~eWldzXSdJQJBFdTr||6?)>!v!cCT-Q!v0oS<=6Sm*#=jmcJE11l} z@Nfz<1LIU?2FBSCY&eIR!ErV-!^f%242n~k88%LZgcr#0hRG}p1yiQan#g0u1>zro z@NZ4zu`=2)nT0`d8Z(3AG>ADM^I&FeoXN}}IGvdxaT?UDDJ%>IQ>MF3;*m2en8Ly^ zaW*rMQ>M?F#1qB_3hWJ2wtt(%!^On(VexjR wsXU)pv>!}iVJMgiiGqe{EDQ^#u`nE%2H}H(7>4)UW1gP)oZFV=iv)uL02k59NdN!< delta 49833 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