From d62410c3e4ae91ab8b91e806be2d9dc403b94fe6 Mon Sep 17 00:00:00 2001 From: Teplyukov Denis Date: Sat, 9 Feb 2019 00:06:09 +0300 Subject: [PATCH] Teplyukov Denis Var.45 --- ResultMatrix.h | 112 +++++++++++ SymmetrMatrix.h | 186 ++++++++++++++++++ VTMatrix.h | 174 ++++++++++++++++ main.cpp | 123 ++++++++++++ ...\276\321\202\321\207\320\265\321\202.docx" | Bin 0 -> 86796 bytes 5 files changed, 595 insertions(+) create mode 100644 ResultMatrix.h create mode 100644 SymmetrMatrix.h create mode 100644 VTMatrix.h create mode 100644 main.cpp create mode 100644 "\320\242\320\265\320\277\320\273\321\216\320\272\320\276\320\262 \320\224\320\265\320\275\320\270\321\201 \320\276\321\202\321\207\320\265\321\202.docx" diff --git a/ResultMatrix.h b/ResultMatrix.h new file mode 100644 index 0000000..386a0ca --- /dev/null +++ b/ResultMatrix.h @@ -0,0 +1,112 @@ +#pragma once +class ResultMatrix +{ +private: + int *data;//Чистые данные + + int block_quantity;//Кол-во блоков + int block_width;//Ширина блока в элементах + int block_capacity;//Кол-во элементов в блоке + int matrix_width;//Ширина матрицы в элементах + int matrix_capacity;//Кол-во элементов в матрице + int width_matrix_in_blocks;//Ширина матрицы в блоках + + //Получение индекса первого элемента конкретного блока + int getFirstElementBlock(int row, int column); + //Получение индекса элемента уже внутри блока относительно глобальной нумерации в матрице + int getElementBlock(int row, int column); + +public: + + ResultMatrix(int matrix_width, int block_width);//Конструктор результирующей матрицы + ~ResultMatrix();//Деструктор результирующей матрицы + + int getValue(int row, int column);//Получение элемента из матрицы + int *getBlock(int blockY, int blockX);//Получение блока + + int getWidthMatrixInBlocks();//Получение ширины матрицы в блоках + int getBlockCount();//Получение кол-ва блоков + int getBlockWidth();//Получение ширины одного блока + void zerofication();//Зануление всех элементов матрицы + void printMatrix(); +}; + + +int ResultMatrix::getValue(int row, int column) +{ + return data[getElementBlock(row, column)]; +} + +int* ResultMatrix::getBlock(int blockY, int blockX) +{ + int* block = data + getFirstElementBlock(blockY, blockX); + return block; +} + +int ResultMatrix::getBlockCount() +{ + return block_quantity; +} + +int ResultMatrix::getBlockWidth() +{ + return block_width; +} + +int ResultMatrix::getWidthMatrixInBlocks() +{ + return width_matrix_in_blocks; +} + +void ResultMatrix::zerofication() +{ + for (int i = 0; i < matrix_capacity; i++) + data[i] = 0; +} + +int ResultMatrix::getFirstElementBlock(int blockY, int blockX) +{ + int block_number = blockX * width_matrix_in_blocks + blockY; + return block_number * block_capacity; +} + +int ResultMatrix::getElementBlock(int row, int column) +{ + // Элементы внутри блока хранятся по столбцам + int element_number = (row % block_width) * block_width + (column % block_width); + + int blockY = row / block_width; + int blockX = column / block_width; + + int memory_shift = getFirstElementBlock(blockY, blockX); + return memory_shift + element_number; +} + +ResultMatrix::ResultMatrix(int matrix_width, int block_width) +{ + this->block_width = block_width; + this->matrix_width = matrix_width; + + width_matrix_in_blocks = matrix_width / block_width; + + block_quantity = (width_matrix_in_blocks) * (width_matrix_in_blocks); + block_capacity = block_width * block_width; + + matrix_capacity = block_quantity * block_capacity; + data = new int[matrix_capacity]; +} + +ResultMatrix::~ResultMatrix() { + delete[] data; +} + +void ResultMatrix::printMatrix() { + { + for (int i = 0;i < matrix_width;++i) { + for (int j = 0;j < matrix_width;++j) + std::cout << getValue(i, j) << " "; + std::cout << std::endl; + } + } + std::cout << std::endl; +} \ No newline at end of file diff --git a/SymmetrMatrix.h b/SymmetrMatrix.h new file mode 100644 index 0000000..70c0e26 --- /dev/null +++ b/SymmetrMatrix.h @@ -0,0 +1,186 @@ +#pragma once +#include +#include +#include + +class SymmetrMatrix +{ +private: + int *data;//Чистые данные + int block_quantity;//Кол-во блоков + int block_width;//Ширина блока в элементах + int block_capacity;//Кол-во элементов в блоке + int matrix_width;//Ширина матрицы в элементах + int matrix_capacity;//Кол-во элементов в матрице + int width_matrix_in_blocks;//Ширина матрицы в блоках + + //Получение индекса первого элемента конкретного блока + int getFirstElementBlock(int row, int column); + //Получение индекса элемента уже внутри блока относительно глобальной нумерации в матрице + int getElementBlock(int row, int column); + //Зануление всех элементов матрицы + void zerofication(); + +public: + //Конструктор симметричной матрицы + SymmetrMatrix(int matrix_width, int block_width); + //Деструктор симметричной матрицы + ~SymmetrMatrix(); + + int getValue(int row, int column);//Получение элемента из матрицы + void setValue(int row, int column, int value);//Установка значения конкретного элемента матрицы + int *getBlock(int blockY, int blockX);//Получение блока + void readMatrixFromFile(std::string filePath);//Чтение матрицы из файла + void printMatrix();//Вывод матрицы на печать + void generateMatrix(int min_val, int max_val); + + int*tmp; +}; + +int SymmetrMatrix::getFirstElementBlock(int blockY, int blockX) +{ + // По строчкам + int block_number = blockY * width_matrix_in_blocks - ((2.0 + (double)blockY - 1) / 2.0)*(double)blockY + blockX; + return block_number * block_capacity; +} + +int SymmetrMatrix::getElementBlock(int row, int column) +{ + int element_number = (row%block_width) * block_width + (column%block_width); + + int blockX = column / block_width; + int blockY = row / block_width; + + int memory_shift = getFirstElementBlock(blockY, blockX); + return element_number + memory_shift; +} + +void SymmetrMatrix::zerofication() +{ + for (int i = 0; i < matrix_capacity; i++) + data[i] = 0; +} + +SymmetrMatrix::SymmetrMatrix(int matrix_width, int block_width) +{ + this->block_width = block_width; + this->matrix_width = matrix_width; + + width_matrix_in_blocks = matrix_width / block_width; + + block_quantity = width_matrix_in_blocks * width_matrix_in_blocks; + block_capacity = block_width * block_width; + + int symmetric_block_quantity = 0; + + for (int x = 0; x < matrix_width / block_width; x++) + for (int y = 0; y < matrix_width / block_width; y++) + if (x < y) symmetric_block_quantity++; + + matrix_capacity = (block_quantity - symmetric_block_quantity) * block_capacity; + data = new int[matrix_capacity]; + + tmp = new int[block_capacity]; + + zerofication(); +} + +SymmetrMatrix::~SymmetrMatrix() +{ + delete[] data; + delete[] tmp; +} + +int SymmetrMatrix::getValue(int row, int column) +{ + if (column < row) + { + std::swap(row, column); + } + return data[getElementBlock(column, row)]; +} + +void SymmetrMatrix::setValue(int row, int column, int new_value) +{ + data[getElementBlock(row, column)] = new_value; +} + +int* SymmetrMatrix::getBlock(int blockY, int blockX) +{ + if (blockX > blockY) + { + std::swap(blockX, blockY); + + int* block = data + getFirstElementBlock(blockY, blockX); + + int index_in_tmp_block = 0; + + for (int i = 0; i < block_width; i++) + { + for (int j = i; j < block_capacity; j += block_width) + { + tmp[index_in_tmp_block] = block[j]; + index_in_tmp_block++; + } + } + return tmp; + } + else + { + int* block = data + getFirstElementBlock(blockY, blockX); + return block; + } +} + + +void SymmetrMatrix::readMatrixFromFile(std::string filePath) { + zerofication(); + std::fstream in(filePath); + std::string line; + int i = 0; + + while (std::getline(in, line)) { + int j = 0; + std::stringstream linestream(line); + + int value; + while (linestream >> value) + { + setValue(i, j, value); + ++j; + } + ++i; + } + + //if (in.is_open()) { + in.close(); + //} +} + +void SymmetrMatrix::printMatrix() { + + for (int i = 0;i < matrix_width;++i) { + for (int j = 0;j < matrix_width;++j) + std::cout << getValue(i, j) << " "; + std::cout << std::endl; + } + std::cout << std::endl; +} + +void SymmetrMatrix::generateMatrix(int min_val, int max_val) +{ + std::mt19937 gen(time(0)); + std::uniform_int_distribution<> uid(min_val, max_val); + + for (int i = 0; i < matrix_width; i++) + for (int j = i; j < matrix_width; ++j) + { + int rnd_num = uid(gen); + //this->setValue(j, i, rnd_num); + this->setValue(i, j, rnd_num); + this->setValue(j, i, rnd_num); + } + +} + + diff --git a/VTMatrix.h b/VTMatrix.h new file mode 100644 index 0000000..21e93c4 --- /dev/null +++ b/VTMatrix.h @@ -0,0 +1,174 @@ +#pragma once +#include + +class VTMatrix +{ +private: + int *data;//Чистые данные + int *zero_block;//Нулевой блок + + int block_quantity;//Кол-во блоков + int block_width;//Ширина блока в элементах + int block_capacity;//Кол-во элементов в блоке + int matrix_width;//Ширина матрицы в элементах + int matrix_capacity;//Кол-во элементов в матрице + int width_matrix_in_blocks;//Ширина матрицы в блоках + + //Получение индекса первого элемента конкретного блока + int getFirstElementBlock(int blockY, int blockX); + //Получение индекса элемента уже внутри блока относительно глобальной нумерации в матрице + int getElementBlock(int row, int column); + //Зануление всех элементов матрицы + void zerofication(); + +public: + //Конструктор верхне-треугольной матрицы + VTMatrix(int matrix_width, int block_width); + //Деструктор верхне-треугольной матрицы + ~VTMatrix(); + + int getValue(int row, int column);//Получение элемента из матрицы + void setValue(int row, int column, int value);//Установка значения конкретного элемента матрицы + int *getBlock(int blockY, int blockX);//Получение блока + void readMatrixFromFile(std::string filePath);//Чтение матрицы из файла + void printMatrix();//Вывод матрицы на печать + void generateMatrix(int min_val, int max_val); +}; + +int VTMatrix::getFirstElementBlock(int blockY, int blockX) +{ + // По строкам + int block_number = blockY * width_matrix_in_blocks - ((2.0 + (double)blockY - 1) / 2.0)*(double)blockY + blockX; + return block_number * block_capacity; +} + +int VTMatrix::getElementBlock(int row, int column) +{ + int element_number = (row % block_width) * block_width + (column % block_width); + + int blockY = row / block_width; + int blockX = column / block_width; + + int memory_shift = getFirstElementBlock(blockY, blockX); + return element_number + memory_shift; +} + +void VTMatrix::zerofication() +{ + for (int i = 0; i < matrix_capacity; i++) + data[i] = 0; + for (int i = 0; i < block_capacity; i++) + zero_block[i] = 0; +} + +VTMatrix::VTMatrix(int matrix_width, int block_width) +{ + this->block_width = block_width; + this->matrix_width = matrix_width; + + width_matrix_in_blocks = matrix_width / block_width; + + block_quantity = width_matrix_in_blocks * width_matrix_in_blocks; + block_capacity = block_width * block_width; + + // Подсчет нулевых блоков для оптимизированной аллокации памяти + int zero_block_quantity = 0; + for (int x = 0; x < matrix_width / block_width; x++) + for (int y = 0; y < matrix_width / block_width; y++) + if (x < y) + zero_block_quantity++; + + // Выделение памяти производится без учета нулевых блоков + matrix_capacity = (block_quantity - zero_block_quantity) * block_capacity; + data = new int[matrix_capacity]; + + //Выделение памяти для 1 нулевого блока + zero_block = new int[block_capacity]; + zerofication(); +} + +VTMatrix::~VTMatrix() +{ + delete[] data; + delete[] zero_block; +} + +int VTMatrix::getValue(int row, int column) +{ + if (column < row) + return 0; + return data[getElementBlock(row, column)]; +} + +void VTMatrix::setValue(int row, int column, int new_value) +{ + if (column < row) + return; + data[getElementBlock(row, column)] = new_value; +} + +int* VTMatrix::getBlock(int blockY, int blockX) +{ + int* block; + + if (blockX < blockY) + block = zero_block; + else + block = data + getFirstElementBlock(blockY, blockX); + return block; +} + +void VTMatrix::readMatrixFromFile(std::string filePath) +{ + zerofication(); + std::fstream in(filePath); + std::string line; + int i = 0; + + while (std::getline(in, line)) { + int j = 0; + std::stringstream linestream(line); + + int value; + while (linestream >> value) { + setValue(i, j, value); + ++j; + } + ++i; + } + + //if (in.is_open()) { + in.close(); + //} +} + +void VTMatrix::printMatrix() { + { + for (int i = 0;i < matrix_width;++i) { + for (int j = 0;j < matrix_width;++j) + std::cout << getValue(i, j) << " "; + std::cout << std::endl; + } + } + std::cout << std::endl; +} + +void VTMatrix::generateMatrix(int min_val, int max_val) +{ + std::mt19937 gen(time(0)); + std::uniform_int_distribution<> uid(min_val, max_val); + + for (int i = 0; i < matrix_width; i++) + { + for (int j = 0; j < matrix_width; j++) + { + if (i > j) + this->setValue(i, j, 0); + else + { + int rnd_num = uid(gen); + this->setValue(i, j, rnd_num); + } + } + } +} \ No newline at end of file diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..d1030e6 --- /dev/null +++ b/main.cpp @@ -0,0 +1,123 @@ +#define MATRIX_SIZE 1440 + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "SymmetrMatrix.h" +#include "VTMatrix.h" +#include "ResultMatrix.h" + +auto blocks = { 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 30, +32, 36, 40, 45, 48, 60, 72, 80, 90, 96, 120, 144, 160, 180, +240, 288, 360, 480, 720, 1440 }; + +std::string matrixFile(int blockLen, std::string fname) +{ + return std::to_string(blockLen)+ fname + ".txt"; +} +//Перемножение 2-ух блоков +void multiplyBlocks(int *A, int *B, int *C, int block_size) +{ + for (int i = 0; i < block_size; i++) + for (int j = 0; j < block_size; j++) + for (int k = 0; k < block_size; k++) + C[i * block_size + j] += A[i * block_size + k] * B[k * block_size + j]; +} +//Параллельное перемножение 2-ух блоков +void multiplyBlocksParallel(int *A, int *B, int *C, int block_size) +{ +#pragma omp parallel for + for (int i = 0; i < block_size; i++) + for (int j = 0; j < block_size; j++) + for (int k = 0; k < block_size; k++) + C[i * block_size + j] += A[i * block_size + k] * B[k * block_size + j]; +} +//Последовательное умножение +void serialMultiplication(VTMatrix *A, SymmetrMatrix *B, ResultMatrix *C) +{ + int blocks_on_line = C->getWidthMatrixInBlocks(); + + for (int i = 0; i < blocks_on_line; i++) + for (int j = 0; j < blocks_on_line; j++) + for (int k = 0; k < blocks_on_line; k++) + multiplyBlocks(A->getBlock(i, k), B->getBlock(k, j), C->getBlock(i, j), C->getBlockWidth()); +} + +// Параллельное умножение внутри блоков +void InBlockParallelMultiplication(VTMatrix *A, SymmetrMatrix *B, ResultMatrix *C) +{ + int block_quantity = C->getWidthMatrixInBlocks(); + + for (int i = 0; i < block_quantity; i++) + for (int j = 0; j < block_quantity; j++) + for (int k = 0; k < block_quantity; k++) + multiplyBlocksParallel(A->getBlock(i, k), B->getBlock(k, j), C->getBlock(i, j), C->getBlockWidth()); +} + +// Параллельное умножение нескольких пар блоков +void PairParallelMultiplication(VTMatrix *A, SymmetrMatrix *B, ResultMatrix *C) +{ + int block_quantity = C->getWidthMatrixInBlocks(); + +#pragma omp parallel for + for (int i = 0; i < block_quantity; i++) + for (int j = 0; j < block_quantity; j++) + for (int k = 0; k < block_quantity; k++) + multiplyBlocks(A->getBlock(i, k), B->getBlock(k, j), C->getBlock(i, j), C->getBlockWidth()); +} + + +int main() +{ + double start_time[3], end_time[3]; + setlocale(LC_ALL, ""); + //int blockLen = 5; + for (auto blockLen : blocks) + { + std::cout << "Длина блока: " << blockLen << std::endl; + + VTMatrix *A = new VTMatrix(MATRIX_SIZE, blockLen); + A->generateMatrix(1, 9); + //A->printMatrix(); + + SymmetrMatrix *B = new SymmetrMatrix(MATRIX_SIZE, blockLen); + B->generateMatrix(1, 9); + //B->printMatrix(); + + ResultMatrix *C = new ResultMatrix(MATRIX_SIZE, blockLen); + C->zerofication(); + auto start = std::chrono::system_clock::now(); + serialMultiplication(A, B, C); + auto end = std::chrono::system_clock::now(); + //C->printMatrix(); + std::chrono::duration elapsed = end - start; + + std::cout << "Последовательный: " << elapsed.count() << std::endl; + C->zerofication(); + + start_time[0] = omp_get_wtime(); + InBlockParallelMultiplication(A, B, C); + end_time[0] = omp_get_wtime(); + std::cout << "2 блока: " << end_time[0] - start_time[0] << std::endl; + C->zerofication(); + + start_time[1] = omp_get_wtime(); + PairParallelMultiplication(A, B, C); + end_time[1] = omp_get_wtime(); + std::cout << "2 разных блока: " << end_time[1] - start_time[1] << std::endl; + C->zerofication(); + + delete A; + delete B; + delete C; + std::cout << "===============================" << std::endl; + } + system("pause"); + return 0; +} \ No newline at end of file diff --git "a/\320\242\320\265\320\277\320\273\321\216\320\272\320\276\320\262 \320\224\320\265\320\275\320\270\321\201 \320\276\321\202\321\207\320\265\321\202.docx" "b/\320\242\320\265\320\277\320\273\321\216\320\272\320\276\320\262 \320\224\320\265\320\275\320\270\321\201 \320\276\321\202\321\207\320\265\321\202.docx" new file mode 100644 index 0000000000000000000000000000000000000000..e4f20a32a162b690b85c28106e0d3b1d47d74bca GIT binary patch literal 86796 zcmeEu^LJ%Uv~6tLww;b`+qUg=Y}-i(9dvA+*tTuk&g<{H_m1&!|AYJX9;1FawN{|M?5T@6&d9L-$x z7(DH4i3-6$sPch8{`UX>*Z<%QG^UQ*_c0-fJ*U1QCbpn6yDF)n2Z|AnH!Gh)V)>xR zekR%FfBYPV7DWdMg4raCvbf^&FdoE?>uwrL+X-$gAqwtLU}4&Tu__PpmDl%vCWB4H z?oDA=Okf9NA<#2`r?i127HNV8&m24$O_%yX40gtTBh48swp%1h*lGHc>m-X ztBN!yUhm~CCDBcpn-CcmzpA3I-QHamv#^tQPO%2$#mU? zz=hhBkxcCm=x=YUaCcQM9X&!QC-drWIV}#j$bEeoW8;`feGGyb$HWnPb-K%&wbhbF zsN!$qa^MOHSpTiIrOuXY&U4p`XI@acqvZ8UROMz7fwTU2#xjk8;aqR5|Qks+(TCMOh zL=IioPetc^3JH1I$g=wQ+S1MiE;9FetNp?6lW=H@U_)xNKM?gl zLGZ$8{*96I?Jsk`zd?Z%{|`UI%{$&vq)U^_LHl0r zY>y;jUS;%n^dhS(UVoB9@uQUEY+fS9EWhHJ7;M!0g67QbZw`4UxFVaf!@XQiK}@aY z-}YxhQK-|VD$IKvY9ow3u-~^FZuH>1ICU!dx3XY^wXnSj0EmP{qm5`UoCzqtX-E9z zUQlDp<#;SeGlX3R3Sm38G~ac(@*mPJNYQ0{hTFZ3p+bKI zedsK(iFyJG$57VEqD7R`aw!=v-JgHpTb%ZS332C|n$I8xV|zxTXf>PV`wQJN9;8q3 z9dFU7*F{wt*G17uQASHHIj6f!d!+eH^F7BJY}zgqEKZtS zE+ySZ^Ts*%wN%h27PK;hvMaSUz5NnB@&0X+1~azRNgH#3(rNv#%T3r=>GwB3o50l7 za#x%6ChsbrXmm=<3*(96woi8#CA7L7Hc)-7gGnU9C)`V_$2*NBaP+z%Si7RBHA4;_ zpQbdCDDjQCl}SE80&WqvQ;|~3FCI(kH`D#rDT&_(hABtUMz#xH;}Yp*Bgo=lQI1;? zb6^g+?lL&3+6@LybaSl{6$it#f{*BmCs_OFiI`%#CmYre1x_<-xwa|Ww%PAhepXGR z(twqYs}yi!^O$D)$C)Q{Uz`7Iik;>&&lOc!u81-`_Su4>=ir#5aS|hVg8go!gwtoKG)tE?F$K zT->Xi3sluqGLk>-P%u3gN{!jM_2g$l|#Y4hy_j(B*u(l3eO$ZT5i>$g~tN-H!K0 zl*g3Fog90&?IB}DrOLOC&uDBr*2IbTi6=uNQpjL-PKPEQqMNw;VZMh;SLs8P(q%H; zEuMIWTHhJ2g@k`$_houa`cAEO#K}!q<<_yBpZnC~X*uBiM!sguIHT@FM!n*vuripu z1v<=Tg0_os6b}L#ACdv_y7|6om0XIAlp9*uQD3cqin3ih>kaf|?mjeTg{P@>auOg3 zu6c$)Q8jGR!l}|lJBI1#*5hl$fZGR8^bk4F@dErwHc~KpwiCOn2B)MUu>D0+dqW&A zQRA>`(G;i%U%N(7wCFw{{?H&HZlLw9si3CzJ ze6kg|(E%C<<*6wUn0LV^tnbG!o{iB!=GhN#?Vyn2_On5?mb}Lz25cJZ>k|yBp*B37 z+ZK;sEY;DtGpVv03K#}dhJsTqPtS_owD4KWo=)tYULFYaUO*3s576VQ2obW?x$5#2 zco}TFju`vIp{hj<8M%Gg_1jX-9Uc(l>b=NZzB!IC2>EMu6U5`p&`MrujOA{O;9Z}} zihOH#>8co}dC9hy)tbPj;_|8vBIN<(V~qo#*HFi%LAU?zwvPiSJ;}L$iW!RoE`k%N z&NN?stpjYM3)B{tYe7=V*D5FtTEzHo)+}t-T)IB*aNS}#IJE7wdf(9a?drvXqBmt2 zDAjR7JH{2pv89UXIhN|5y4GOHi4&U~v+Rc~HY>Ho9T*C}AUytPJrG!vKYLkYYr1-@ zt6l2-C3nwK)@#TMR~%4^^e#3;{g~UtXUcnfNmFRHzEZ{h?ii`$ShafET!X_IZnag> zt)I-#R?KB4l%34Kk<9-g`Q}J?n0|i*)`WPfK5VJBmRc=?#I#e(bLm~>mCL7VrT#3d zKG?0xUg0G-f7ebz8&R!YYSZjc$GqDV)>L|lJrYF$;XH5a4(tnIGMp-3Qt z)6Kk&yNBbyATYAQg~Ecnf_8!S5Zq%LqSgVqG;8^K?O@T36Xs^}UbQwAH~XNjy-E-c z-v=ujv)@+%v)?;T>tL_Dx{|`%4?lsG4&R@Z!jB#NgBO}Xb1BK9idc`SmFqe}A2PpG z3MpI)on1v4yi`|z?_-5D!|ar=5rLe-(s1<)5*c?VS6wQsVk*;CNvaua4C51T97An) z##HkpLg5`l`&&^{Z{>-H;>$J@pJ^O@ovy{8sW^llktWx=YUravyZ=P;8Vhm`y+O&U za7W9^J?L7M=WBeWOTI|CrbbPB3M9diazkWSn;Atv)?yHJ+Si|W+a1sy||xtaTu&iTyS z9}h&~7{kL-kCtb}AVDX8N4pgc@T?;EWh$?~ZB7wA*|hetR-fT~J&6&&1p*KR>k~l| zP^M}Cnq&YNOv0QMGSU86l(q{b!A^lTY`OZ8=DXY?g!Q7Odu+2r$O{wCKnCc^1Gs#O zRJ0>;lH+1xII&Y-slvGGD97T?0B|Trj@WzWHpk?70yIQ_^J;KYE;)hXN@ale?U1C? zQJ4U!$mLLsL49^@AkscOk{ui=lEwFAeaT4iiYjczdq|m#=Xl=vf>`i{1mtfazl6DU za}Ng)r38lcICsaY?;TL`r`yxPSrok){^Fqn-qcdyOf*RU`Z^fw;%jExW9WM<#LODc z;jQGiWFHF}z-^tww9oZc$3Sw>!&g8i8_~tF*tODi@)qGrlR^g%C!&!DE!bpVHQn-+ zTwc-mUV{-T8 zft(fX;=0Xhwcj!st>c?>y*$R{wl^#j$zIjq50&YIlhD-&?W?^q#ESaQ=+OUu-Xj0wo$ zN{H{UGI9Bt`S|(L38tOzWub;B$>($z+fHcSl%n>GMv%?QdXl|eQ0%Z_LOVJqu;+ay zWUH__;C_K2?<!X<<#O0lb- z5EcFI7QG#MgQDi(Pzr)IpAn@f8*JKgXYFg@xudS{^K2jXbjOV{{0314Da*dv!YIEY zHX?V60z~AjK(Iy{DZbo;ROkf}bO?s33xp^ntysI^{hX;ZRy5l)(Qg`_)NeV$+wmZv zJxo;;5P1)}{=EUTwsIMwV`wjPl%-$SRTH0v|~Z*o@#%d06;B%UHrh ze14=k?DAf7=78m@@lkbLq^Fi9En*8<xzbJ{<^NU$0CP*)=1zkt{osyl2wGlLxlX$S3fFQ$Aqh1Jo5LU{8&DyW`p*1 zw_Dv`BAAsYP$v>+7(O4Dhp9E2MyDK0~tD&yWSS=PKCKJye zh-_Bvz2T(4-!N3qQsMMGz**e)H2!x5y=`0%tt?jfKE7$1*RthM<&v0Gd9!1jrl3>? z&iqKU_TyDLU&fJ4n}KFIaY5v`&kjO6e$-*4al0p?Ub*Iy!|u$}cl(4RqC<-cjgxeb zxZKP`o9H$-yUOJwgwRIh*zi8xpg0n;~S#*|80=wEF|D)ln-G#5w|sm;K{_+?y+ zZm`cc6g+GXNl=zRK{J&TN@Q%m#d5|OV_&5m_!Uu$GtD0H=hUF*j#s`Y>^oxVN~o0U z*K({h?sj;1s6!;$p9Vno%k++*L5I^gYxymk%@cQ834L;}k**oR@|7kB%IJX#Wpej0 z70a~kU&$a zxYMGtD=CA^Z6xiS1|++r<1Ycp)fWv5ghB_TU;>+mI&9FSr^x#EO4+1NRhP_3tMR|$?G-R--uM$;rASnd^_^$5Yjs|_J1PzCIz;9Gx+ z0Bmla736Sh#Gdc3!}dkPGIG8nRSuPuo&Nnl^_HBj<2$z*A50!z_`#r<0+`JFN}5)d zZpMD4FrJpcI~|FO!IvD_io`k~s`KUo-+_aW>-XD|P*CQ$b8Q;)+3%DTrYS2JG7Z4J zjCr#NFBSm}FQd-Fcmb4HXJJ~lSv7@qY6ngWf;3A`X^jm3UY`}jWb|M}X%N5shFm~Pt zvN3jgxb0GWuNV;$RyGLe=-_(G=ccQ3G!Gz#`cKKEGyDuNxQ&nUXMY*z7aj!n4Y}Ul zf6z?7r+s~lC^{p_%eRl_c$C|MTU)@4=0~0zc&Gj4So({R##}pB&cD=v36`$!#ibKW z$`ZlH!*Cy`tm2*YsR>@$>LW~Sb49?LcPvU@Hk@Jp)VSv=IrGu6QnKi{#`p=21PrG1RF#Rv62bIGgic2;z0%#URugSaoaPr%)L6npJrk?}iuPeVEFC}GD zR}aIWM>pMz6Fp~a(ZDfCxVc!82~rOYzMMmT$dyESN!^*5!jio&aE1xj_nXMxTM*{& zNRvO$_@ngKT~8zjD$Qv`(S|zj6|r?0rA~}|`o2fAZf`@)bf{J|PsVvw@t{VS$6#GA za=)h{S?u{L8dm_iRamEa$?JK5a1G^~*P7%bjy0&P&TU2+xhJJ*D(X>=EaZ~UA?o=R z;x8+wiE(>~?NtL!I}`3Wsa81!R7fTm1|Z)u%?u1ZnFwYb2aX?RKzfF0ko4(Vy z`^SWrx3?RNiGIqTall_%3X13Aet+iJsa$%o1o4sAfbkg>LJ(_(GqIH)I3zNS}k7{6^Q z5ya7b*v39lbJ_y*QVK!|Ch943EWZR8aT^Cy!Sf8MuT|?03?+3&t{CGm7r9H;=j@#~ zuSXxxgd>*XilEODhuMb(Tr0$##~s$!hCsoT;fP2!@y9MR!`=!(*fKC=4CvRj(aAlm z=aO3=F&@z#cMDVwqLn3w)yaN&md2y+-OmNLHV;Ase;oB!I*Qzvi%>b@jD{WMJF1%# zbl1}hm0xifB74nqr=#vVA2Cdh%$kJUsu}6h_sU-S%BD}Yh&dg|eEgx4-c zF2NFJ@=FlviTsRKmB2VQ0Yfy)s~$g3!15~YdX*&0#k{S$h^8?YUz2zZ%)il((ADxR z@c3$K&tU-N^&BjtoHcdZ-q3l2?y#>ZxeV+ROAX3-Soa)4^q7eraMM z^T*W0#)Q76MSlLukTz3iD>HCHGN^?i2xt)yg&=jbg$X-cJqD29c*A-jwHh|qaS%bJ zZ8AJ^4SPI>&0bZrRrnwYZJBW<*iAf1Jh3m)MZAD>m=^ojF0zy(NDU79>t~I_I#m8T zHAqY)5yynLoy3~hH(0^S947RSO&P9(}ko&LQ5JJ}yRyEw)kl z-OTHte~-YNeyUp=pP&A{0m^^@acXvT0fpjJw#}4vwSCe2t_#+B`DM4;a<2cCD9}w5DtMGyV(7Hyowpn+A)5!p=DOx=zxREExd99#RBc#^c;$p zHtIVBb+M-DAaXr+8$GwJCOMK?SRJL>($+9g+p;BLQXbQn{qqbL-Y-95R$25==*;<= zC=^verG+U2!_)Q4=l!!EVWW=(5DaOdMIo;_C*c7@#$yURE%pHx?=n6 zoH30#B^Y}~rztN4A>@5?uC*!C$0_yvB-g8sOmef(#JorZCBcyFr7Rq`VUgZ9K!hJ! zW$_yct^IQLBNH15%5?LQ8%WCNr6OuQ6{POo#nnR6^(AN~MllYyTISd)WaNJCI2yI8abDM>gA z@rmogOk9jiO3qpO4Dk`Qe^-li3&*tu=`|zS(1$^`UaVWYJR)(?oZ;T8MQ0P-4A@u} z%5cO{#K>BC^;wE8;1u-@`p8wVM-$y ziZbIv=#&4&sG>jX>Xs@foUI>LC^X94RlsI)(3oRXDptJtY^s=8E!pF&9PP!m6lQcM z4<-A-;YDe*6-kk9slwkIV#u;)H+n2l+!69`I_+itPHu~tyS+@M7LBuxWa!QMZ((6N z`eNObQ!43y;K3JjO3tsNHI|BVsIgy4CI_C$zt)JdYv~&bYy|5?Nisa|9(u9s(~QVePjUM%BT?!RG48#jj?9Mh$rCh7j!2kM%;*Z6a}_LK zW#ZC>?9p_zRFFw1laRVbrlAgOc7q7Fy;ZF{b0`Y1ByU4+hr(v!$U-G?55nNzt^@N{WS?LMk(ElCU1J9qE3E@#AQV8(XYC z$X!xoU(2;JDw&s^cwsjYUbCyh2rI9zTB`2PwB04*^0b!BHNT*oOyHw};=dFB!_^yZ zGCUW2vf(oQBU3X=DT#zFjJ2c@WqmrnU$i$Qje-DC;lKB9!0<^$jF9cx82n$$;x8O=aqJE~TCyR5{n^mTt?>I=zQ$%1@p?h#c02qEXMt-tIJvDr+SARz#ch zb56qWu?VIXFXibow1&!K)?QpdSa?c~A=M~DOnWMd?Yj#4LQG=ApTu9)!{+S`2Gsza zzU&lXov#Q{j92ImT{Yec0wvqx^RouQcOYCgo+vf7SenuE>ccP}+)e#e&tJJ7(*5!kd6~guX)g zgmeAqaWnGIb7-!pl~BSMB+Fu%DEDDfNYIKhlUFpu|JIFr3j8=FJyiHMJtRDlQ$(N; zgC!})nb6JWy!_Kn6VIc+e&b7K*02t%zHui9u)(g46!3TID+sALlRPCEFTU9m#fO|y zZpHmQgNqRaFz{VuNh17Z+{Ol&lEuMyvjs=2Naw6aIy{_%2xgg;ZcdOg1e-v)QO4IH z>dz?m4zRFUyF~YIxfs@`=c+__KkqlAXL(P5{w!|CKqVcEj~Zp+mXJQh7K4+dN?UEx zXuN{E)`2!iDr2L(MB!(Qx)r^1AoAVg^)sFd<|@@Re2SlAz^Gy`)Ds0nxL?9f{!m9b zFlm&*cqLQ-LheCZ7aaC~rj&V_a-hPi9#VPIh-_>mEU zsEhd|Q9E9DN4av?X@r?Y49Pg)gLHlSvGq3>;2`?{SiUhgM)MzI34N^k-w30HP>t|| z7kDX=5uT&o+#v_2i*(2A33`h4z}^xJ`0zU4k<5lScOh6}0yF-TK>WB#tUUg+IiOw! zQ2{@MH=(*hNq$e_l|#}Y1`sY!;;mrMc*1@kNswv6CU)6>g4LC6w5f5wMVUtZkI@Lg zjj(TLM#=t-6-57UtiX)dh#d(A?BX4ew*(%hd6Pa&$7miW%c=y5{{-udeCQ1aV8VNq zGZ7Vv2)a;0$~pqG>JI9GtcHCjT{+ZzMZLJ&s)g-Gz7YP$!}K*Dkh>986kZ3?CCS>O zi6tgI%9pp=bOZlyMH&(T}KuWGB=UagPtd z3-Kuj5;pMTJLR9C`MTYik3mS2zkelBK`A9{!U+EwXOl}##styl*T3mYQqYfhCfeGM zn_vyoC>*#yaQXQUH2mN$3#}5#cS8TM$%O&AR#QIEh(-Pv7;(P0!a0ym|3>Rod)y)D za*+Hlp7IO;CoYi|@o(D((5}R9x3}kzE>n?ka$QS*XLNs%f#g--zXogYLcGdJ!}@Ba z&HRhEzoEMQ;7InAC;E>8`C$6y!@FAkA_Cq0+4Q0w=jdnec3@g?kObCY5fbm-_E@7W z4i3l(N6ck7>`62IF(l%NJHnTgXg+X0*IhLHmX(~ZrQefmH$deL z^39v$m@bEvt{=r#QZ=dU0J1P?j|)-&SwNiJ-#Z}55`DJ3J5v4jxUmP1+awGz2h(yX zcyL@MhAi?Kvqq3y)M$BcvpNprn&o_EZ;;mJcux;<`5gNSWr*cks;?)xn^R5*Wscf> zIi^`=CMHb_m({sNRs0Z9u6N4 zS2RQ%Q0X4qYEcHdK;hZ;GQanD>0s{TRczk+BPVj7c zx!;?-v}pMyA$SKE)Yv&(7QFaH{{<8Bb+}~c=X<$|_WLr0Z}`*}zU%T2aYT#Y9JnD+ zm{wx*DdZz26GGUZ7w%Mp(j6vZH%@a|(0mW%pKp61>D1Z*JV|eGI}}+E1?1|=iWT$B z4@9Bo+7WPgZ&F~gv8k2`GlC#H0JG0#&|2jIut2_y^eTiv-WGPsK02GTL8&2?&AdOQ ze2R!uQn7BF&UbPAH@khcpBZm^zcIn=>2Mw&^O#jXU543h6_=bk3UC56YH;;fOfAK* zdqz$a+3lDhC}%-$iwa&CGN8cNA|k`z{g?GQCCL{BV`KR4p_HrtK$;+)^wtQ{994&d zD__e_=B3DmSnt9b4*o3Ab85C+#J4%3KK|JPo7r3ry)Hz+PgJB;lFdO6J4H}Jsy~5c z4MB8nwvL4H$8q-X(=fBo_Ekb$nM&Gx&jLD6I>#v`gImQ^o)`5`%7{{qDCNn3K<^S8 zChohVR+;)7y9P^P8{`C5R{QabJmrt&T%(0kSJ_R?I#8zIk~AC8RWRR^5Qs+aLSpe- zvK`IO9#)V}$Ygw`ZW>L=*2#7t=6(CGn@I@*saQFlEhPS4CK8q3+zn=>8PMTqOy0{I z;6FG`e)L1h0>uR}6UCLIGHL6&shM%%@dBlQeJjSsvbVj)p@Xa=nHnvX90pVYj$yYj z=po9(n)P~I%yM`25o`~+zoJoriv%p4)7c5RE^p`J@C7d{ff%b_C=|Eax!67=XQ4>d zEXvke+avucK8hVYFJewMgLzrJ{_}o~H@W*!sW5D%{TjgqGA0-Uyw^v`0y0^p6RZiF zhdaZv^>x_`pg{p_Xm|j?(UsxwFb`CCyIv6E#f?yb?f7lvk$#BWOgVXiV%HvCRauk) z{pueTG5;Z7>vtL#dAh=4V;`CjJo3GnEzDcC4hUe&&V*vP3*;Hjg31R8 zHl9dhm;&wi5}iErIBUr{TVj3A2h@m|FPC*h#G{em@_3dlvdl8(_)`SRO4HgrtG7AC+#C;M|*o)zG@$2ZYq#5ONbH^gUayir=7Ef*;N#K zgtHWG{B0=xJm`)Qrkh$9R*%OhXuHJDc8Mi5K6J6eXKEReL8ucfH^xKS1yj)FXdns6 zgli=ATHby>=p_?b#{2UzVl0K(I`|Lw@S8UFzHd^&r)~PKNXKyu#9Frp2e@hvlAf8{ zHLS1Rlyk23-G0`6Z3Q=C1_&8Gj5ozzArRRD2v<53+5IWkHanpEZHT4I-S4_GgdMqI zmUY^Q*duE)I>dcV+8!O;XKO8YFf7i%!-6)Iz}Nur);zPK-ooPAi!1vuD)47J=EU+@ zU=|6~&Doane!dO0@3JR+O+W8`vrm9hr`*09>;fy3)%lRfynBZp*jljLbn90XsOJ_F zwrmqMoBvH)b8@Oq2_tGwHD(Q|BPW&voImWnAx-@YYpq*AbhL&J>rfr=#Huch zB_BN|vZR%~4@6AVv7ya5fV;g1h>UrmxL>P8o}{N>(&MoItp_Mb zxd#W)TZmAUD-SrwYzZPyeW*YsK>r7UnDCZ)WV4oWd^j{DK%I#@CFBv*CiMbHU=i#| zC9pHdfX#c5L!Ed@e-MJ>2P&&5sB+wARZzT~V;W*-x%LCaNr=p_(- zz^x8mWhii-c^L!N#qBkS?xmoU0S)ryXrl~g>1PcBh7o2Pmg?vtC>m{7h=*?rOWHLp z&ARCI`vat?Q%{4GTV{jY6AZv(Lanj!>gjN)04Hi~jtFKhfP)y+_$*+C>_|ksuRcK+giK-|R?u*n!VU|s%B~(0T8e*A zu}7HnwC9`d!KNEU05h}D-ZXXwW?w4uJ~+Z}AIUss@qxu-3!*Ick~+7L_tAj|xyi-} zLktnA@fXt*9t%bP=@}>!%}6JP-@ZpU1P|bb5lo2Bj*O`6;mn*!ErH>5{j>a3L7>}< zV7qaAc1#R996EK^aFsMJ2$i|kn@-LOp$)0p14QvHHbSK4XFidYQ634N+%AfP?7(z= zlV{J-6c(QJM2mq5=nM_^7Hbd`hl5h2hm`xbQ7G3mTHqg}>L{`v_Dh9&H_Fn3z0=$i z4$6a(<{I=jH7;&Op`6Qu?ps&j+STe+Yy+mm1Pb4qj3r}~EQ`zi^39nxP{v}X+QR2a z6llchu%THt5yaN7V~Q}tTwqzAB{>4*@tOmF+78nYh7qC ze{_v#Xzf|f$dG%J)SmHbJSH_yQ>@@0QB>?OgZ+YjQOwt8V=Y@$dFCw33RO6MO^nv* zwP_WY6IoAB13t`nob2?D-cdWLN9jm3ZBoRS3;2$c^_RP#oFA=5Yh0DnSKBl2C~RUw zxZwxSM$$y3I&Q-kgKU{J`sx{dD0#Rav_=v0-w6W!)6Y3@oH2bVdaP}Z2mz4-|Qp)SQUxW6bUtDKu$ za+Ui3tkz_g{-j}bV*D^2$HQ2lSj=L^kEeD#^z40V48y1z$w9vq^#M;NP`ibysgE&$ z2@$Ve=kH`r-jt_g#13vut+q<09dl|;NjsTjRjDSmD7TBPRLK;oU@D>KE+f;TDNhZz#cGaPNJ(qQ8K%92p>lrpTTmFzrGn{#c>2>6CRvTFK!b zV=D|BZhs?_z1U|Z$*3Yr)#oN?5l%>Vn^P1p+?^D&&$GZ`jV+hgX3d+=V*M@`OlP@Q zH8XY-Ctu@jqT()is4!2TQm?j-MI-qkJzQ$XX!=n?tB*;^Ww$pm_NRg+AP!ulDwTqB zU%vkU7u7_arlkm+l<}^Z`|=T$)2mudlI`%rs+fFH+pQuHYU)i`g+bO-|Ngv5$Q}u< zp*;Nr&}6Shwbnf1qgKK`O+{YhVP)zw1CGUAv%W=2VziYnc?42pv$0me$S zhq_n#nyH~kxtO2Zfi)VJFsVBYd3bIs2VEl0gay?wWt(s{z24->m^_}{Ki^Rxe^l@5 zvZit#`#SkYHv<#7x6#Qu1ivobzDYNEtTu17#h&Gn;HMk+ReF8c-g9ehg0(4Q&E&<3 zVurk0PIUT*qkgSh^7PVWE62mVk{*r%l8_8r%bCvws{I*`oC2T?}b0f$8eSJxtInjEMa-mLamiD0 zW_r1Z4tDfsHkEp(XccoYt6u?HZhVcZRk>VL6c@Zhqj8ye#`zC_?qAvDW7v@&FDx2R z3}O3igJ(@k9VfB)1!}X^sGU;vNsZ;iBv^9C-i>1|6TYQAp^JGgxpyVEk*X>ywxfT~ z0WBXU6f1;suirNrH!Wdds;GCZ!1ud)b1Er;%8Z`H=Gs4(Q^!?cj&^X*6#vG@ z`5CsqiNSg<859gvpQ^-D-iTI=7fWN*p$r<0K;|(oEWU{DmjC(14( zPjd}+j0O8ely;2JgyTh}j%c6)9^vaJNmMfvcdWVn$5@S2(l2zuX@A0>QBNOF2mOJO zJGFg74{kJWp4Cj-*1x}|nF%P1pL^aQ8y~Qw=^@=Fz=dS3q7Tf-JK7% z%>4Fkc)?iNzqapg{j|M>`S59YVR3%Hj_w8uegLg!o1p`y1&j8;$~r!Lc)|o4r){n1 z(@Voc*44giFS@52zr&NOns{;^^KbpcTUp_Zu5l39-p9Y9`#OVdmpBf)?2?7%r4;C& zo6E^>;oDw3`39T(+AMat`5?&pCKO!Crnd><>$~hGxqe&RlQX3jI*~A3`ZjiOet(Cm zMEHQ~X!v4GT;CQ=_Uoc=`K&Wy-J_`K!nglZXq*KpKSY%!*7W0`20bk(Og@kQn3#53G@}73 zgXHNoK;|1XPm!{Kqf7h#>pP%)>+9;t!_d(mSi~2;^@%Tz`038>b`lh$XBw+ZpB)su z#{L^L22B1_(YN^)`Fv~V$mW3AU(jhBmn!6v2x8O*eJCGu1SGGJ36|hvE(N{9-NU16 zaygfqF2a}v9yBU^mx-ab`EfUtLO1H9b90kCOH3^d)9v8d$1PI8(+!#+-so5R!vf>C z!QWkg|E5$(wb=w92LS}shXVwJ{ic6 zaL@hAgbIUK<-C0(&lFrXXt7xAwS1KdHT6r*_ZUpqVMI+(dVZs2&5jSB2Xa3i6+L%W z#==;2)ebooy}HH?d&Od%4UB$}aLnE=%$jpKI%oDJ9t+V+J;s*fg?<%pFr(t&hPBM4 z$y2!vBZ!CO+&%=$YCyq?VKOovQ2cruP?29y3_eD`- z*K^VPkb!{z{oO96H}B-W!N<#J^!C>a=d*0VK@A~-v#Ov(X(kR1-GMwfPyp)m;~Jjl1+kdnu9@CCy6 z+(*=qz%j(EqJ-GOWz2xs1e9gH1M-k0U{-t5BKQOjviGu@%97AoGql?dSywQxuGE!_ zEtWN~^9_%kz^DTsP{UlAh*Ty&pdmO>?IEH*uLA_bg1Cb%vfGpZl_6GqLD`sUMC!#= zT^S0PO_H=fcVhfIa+sL&5GyGpx9|w= zY0!w}l6QGtWZb8ACSAE^NN2o!IsE?!$9tZiYwg~?3 zw?usxPNGxq9j}3oRH93J?X(-WRp8iHvFAI`kXwRm!&Z^vITe1r?qOUrG44zO=@?=C9Qc}@Ah418M5HHX z<6V6yao?3BJmP%TWngykkh=z94x69R2)uFbk-wVLq*v!@Ie~0vr>3(ibAQRw*;OrJ z#9O&M*JF$fpT`8${=`RV>s3WThmX`=@`QlqYKX11wA5S(eQ%;WFiS)4B7`UUf_1t` zK{oIQ5-~WSZknzK+{)I#mT+Izn|s6ey0K=eOCF?UOOv#~iR|E{C*Gc{nRtPap z6|efDaHbbElfreZT#6CtI;KJJ*bh{i$GZWD>c@z05TbL#I3jV%#ZQ8K8l;$|C@ulB z$r{zu=K62ubS>Rm_1p&O{Lw{q@s$~6uWVs-zDrVI!Gp^mUTUN(?_hK*yyTXpkKPV$hvU+hD%<_u!9X4F_>-0SKz2!WcL3(vn!kboVF!aNJ zQrhK5&l<;{Jry;vQgd7{2>iQxlUHGJSG(@!D8}pojGkmPD6b49RI!IL*~(g8R>@rz z%uiz7Rzw7ufJNsTC9B4YQ1RkL+Lc`Q&KbvwOX1S9CGO6+^99^apAsjcUiXTZUV2fSUt`4gdW`R;b3^+SlJtef+h0(;p*1_53Uj_P|EN9L>=a( zEIGebsXVWDeqZD*o2j|r^@Ps$@w4BI3qu;2P>fqsbe9B#qEM8 z%Rb^)NH=c^@^}x(1NNZWO#-NF%don$7c*@$N7XZJb4RmM1}XW1RFKeC3C%zr0bT`P z((Gosk-PJHTt}}%F_#+DHJ5M5ivk%nqzc0|=4DH)8KvFBjD$*)Tz9S?o!P(d-hJ!@ z{#&7rJrmD|`CB>uNCE_e@qZ=C#nsE!>_3!R+fHGf3F(VA&A(?3V~x2{-k9jOl$i+b z96z9L-us8UIe_+X`8ubCB38yApo^&Ml>zhp*5w#bF+W|vg*Ys_Zs1OVRMS4Oo*3|mH_!XP13x_AY4ujR-OZ#7YfLb0p$+f|k> z!drC$88)MM5!SemTs-H=>9{et+ZV#~ATXQ99$bc;*uNeMj^M2|G*}hgi5N#3LyWFb zPKW$>EJLQ)2-!Ig#57&F$Y1oK?&rymcf&8?Hx{$mX`R>!6GDIMCMKLGC)^^R5^^{o zzgu~HCrLV7YCZtaEaf6Tql%zpc$PeDFeRe37&RAl5E5pQJ4 ze2@y##vOrEcG!m{14`D{%pNq+^&fHM>ouzL9+LN}u!CB-hF(>9r^ zx`EYDCYo!CnrDp#_+-x(e--h>&&0_@!=!_6PzX^5U3{y#-}?Z{R10<92$0kK*?7qZ z=^!xt+i`&rwnnGN3I^x*7m*E(e&^4ul?}UqO)i0Fr-+l*a2cbt zq5VpnBfqY|s=c^oGe;W)TjEcK%<8Vt&^jNb=vZYur&<~yj87Tn$Q7RBfz=ZjXr@Tq z;z3lnF)99f3p{+(!IzLl74C<#zj9EKI8=R;;v*HkH{t}MZE2flcr7e&kB*a!?%)zg zW99I(<(pf+VvQDW$>N(N!8wTZt>uHxhz zIe9Hz(Q>kk>dI1SjfM(I>3yp`W`C#$x3@l7E9Da6{|uATv_;LRGoPYCjyE`)hMkHX zjBi09RdNt&$=$^?x+XX{sB})JrbFr|!bQR+jXpNHTM*_$fn#w$eLS_8+=9Px4NMuG=nI`X`k=IuPUFepciSca60y)Zw)5omaGc=SJmKLleC7SZ=?fMe#eFl(K=l=sUPJ) zKb|zUYa)CFwk>f7PV1g!J5A8njm_M*=UiV<^20CE~9p6Apo5}83+0vCRz zI@LjygchSNb>FYR)e}Y;WwPD;E-;aL*hX-**!6MW0(LPeTcDh|m~M zdUZr@LFPS~fwIzj2tw87iq(&emfVK2Kb|57{)hX>D<`6l#Z;`9Ged*lMHqCDXM0AZg0 zU3>gZ+x}g9=;}JGw`2J;&A#Qszi39EsFELTf2=*gTucN{%J|9ZxrT8{w35h-jT!g|Kua z)-T*Li)CURf(clxAO%GC$?4~J)w2yrC{O7k z;*=5)&`q2pMdLb>r=CCDoeYDX&0f2IH~8znDGTZPqMW5g2`$!Pf3AM>5wp-cU5zgP z*2N5wS=`~=TmW7Bqf$0RcC3hB^P`kTu}pVXG0j&av_T`<14$Lg&E4ABG;XhRj$3vM zNdBDN@XgBfU{@XocB6`g7400;7l~EaSakFf?RF9`dfx;1Amyh362Tl%_~)#U>3j3? zA$r#Crl5+@ zPrF__Zk!@-)JP^)1g~|w9@>mM(L@;2vRb@TC#SED4*690tz zh{($o3`2_IqTVRW3NNYP!7S{Nv7C$TnvO**XBG!+)Sd@fPyw2qyG^PE{xrVJm~9wZ z>IEWYro5LN+iPEI*ox_9Rwf4b=5{gbQwIC;<&tA=H59H9FZSAkW{joW;Cytzh4!@x z67o@ywP!D=dY{hxsPI@Ur_*MryoOAd&29~E`aOs$;T(IhusfZmYRwPGM%X0er^&jQLmX1M1~S96%A} zHJ0jz--~lSVj6%w ziWR(U6#E-8?2X2&e8n3K$&Jiw_073Ya4M3)TSx(g+>IQ7VMb+-Ok_ebi4MT9Mapq! zWBL8CJv0^PJU$IqCzPIN5G5-+w}{95Ls&En0~Q(h)SbXr7#irnC|4GFBc4ISlEEb6 zYS~TvpY?-DeVc<~gDzv3TpWE7Hao@{*Ocie$j)wK^DP2N3@ugrt!4o2h2|KJ_>a0+ znR}j^C;})Z9j(%RH>ryREd0g#(d?rfVFj+bT!sxNkDDZU(Ulc3!3_=A;3-BNEq$(O znt)g90-2lFLYZFOT+yVU`NHw9i!(S%CpdRDziZKZp=wXNe{Cw4yjB#+rgo+QG;)hZ zq(oCqJZ}mFq_19XId7GB0njzICJ3TMxNn^my>CExGT& zYm-FsOgIcHI)}KL2y@*Cc?~}+c%^tSZV4AtTg)-+gWc$PaBDvgFTE8{{jVC9!okGS zi|hd}F|zkp9(&oM@Av?4iLXZND+qZX*w@D3zup3hFT6@SLgxkOk91QzVl7s|gTf;F zIDEjmRvl<+JO)#)YF?XnIcFk^bRPkSS9O=;G@y?t+y{sZ;14bg1w6$fg(XMK@gpv(nl4SP99&7?1hzR+1c4AMHB@r@v&?tVYTM9UG# zQ=F@D{eeDSmo(LsIeSrBZv>57Mqs!d(rGqE4@8=kPJn}BCZ$=5Iug-w8A+VRk8oxS z4V1%h!%G!nu#T(5b~qZN0sINNZ%PrDS&5(UFGfARQJO1=#b9wy*AH)~^je-mGjVv# z4=bge!@qA3J5<1Li@3v2?20LW$(TE98jb|yKuCNqDAg;VqR1_Tg?we5kfO0uAGNH2 zC@LkZOyw<<9kY+#RWLGl0TcTkQMzeG>FN8u`t74o)tmksq*A0(^7E%VIZtihet!?c zoKsrzD`qa01v6!YaOucYO?Vay1Lhn2hnoc}xGG}kBPX&QUJXIf%D&Z^>DDKGB_1&5`m|E^1HoEW1)ZIZ{FK z+QOb4XAT;;e{CnZ5PWU9`{j%qGd%qnZ(`svdjgor%&lcN{=xSpUHsN4q30BF-+=|~ zX`-u@MPQ&^f{>+;E|6R2k~P5CJE{9KX3{n4x6FTcf9{P~B&p zUmq(zD`P7ayc%DN4j!tAZwZ&fh@^!^Jvo}~1^^DMH z5tiK=gmlAXU)Rb}`lv0xeSrPUu-KBiRquNcSD5FjmcUH{UL;U_@YA)p|kpr9ZjA)%mQprN2(pdlfl;hQKN`G`ZFwt&kfO2y70^4<>T zZ{z*P3IATaH++AC3k?AF$LSye&|vRldG|1Yy>|wklm$Wr5~yO7fI-IU#3pL&99R&f zs+M>OCDz!FS=jKl3P61Sa&R;VG=LD`4ZzQ->H65e+0Ihy;BXbbP>q+f>Vb7eWZgT3 zvz(C_5vC!YOPi6XAW6=78w&}n4L9*Y5w68@u%X)P@-T@&9JV^H+Ff(m<&5BVJU))? zb--ahOBAc)S@6x=jgZX+IiN9v@uC>y&<0BG+Ug@D&?Dgt9CyJ&D+c#*QIg)Cgr5}S z2<$O!3b~eXi{s_9(Z&G+%9$3V!(l1G`5>TlpJVzSf3}Zej_g0K1+}G26lHqN4=DDzxhNAV z4e^*eX8nQp6=xX@h#tj=xAaWD_a>b-yUt{;th^sk#Xp;@ji4IFd-y`-;(!q>5yQ(bBg7 z5Xxrj`YDwAT)TI!fLIlcjFKCjBKFZi@a?a1x5^#9^J;r`w3B3D?YyT@EP6l0vKrCP zn6t9h;<-j&q|~ikpcg+>LU&7j2Z4xQMKIJT`ah_F?s%+AKg;K!TAVB_2$Ua$`|*Ei z?RZD+PBz{9Guof9(mYi-1lT^LR!g}&V z`{+!%e3JkoMUpA^`$m7hHh1p$NzL5KUWPV7GRveexn&Tji@&Ijl3ORaeqT}D<1Dyrl*H13K8!20|kIW7f9 zQu(7OMKg3#E}#kQ=}#x8?7Agh4*+k%-Er#c0&af>@`7c=)Xq?wI3FW@`7T5c^F<}X zxdoo69a)nmjhlvp;{FwM<+M_(bU+QhE|#}qoL;t6FOpg$*VuZ{k{SF>~v(nFG%qLSL~zIxWw|-Q1Qxs zqY=E-<+n7c82W&cZ%9zfZo}(N0Tsht{##jPO5Tf}e@SXnXnMon08!^AVJdB^YDK20ZLt-;gIj?z+(7%_XWu}_F&)3d$b|vsTGws@KMON~Z>qm6~JGjV@*Fn2G z9k=NZ+U;5PP+$Yz_z_mwAc*wP8i?lxU$xJPQ=i`e8H_>?baLNp=ytoTcFXlL5__3D zOGeO}RLBHuS6MR(@0|FYN8v&$IwUxSce+$*jj7=ts#>uCLCyiC6g))=`lI-pqt5B8 z-_lYS$=4%(seAieL!YW}hPj^Tm)`(SiF)Al#Odf9)fSA)p{|J9>^U8Dan!~P{l|5xW)N&tH($6a-5Y@Q3~Zwp?C^YuU0yH#&X_91LY zNF)-t`<**+^ar6$l22Q!<)Zi*1LRAuJ!w-uuA|aM;x$;NzBXSIwOLk%5d4W5RenEu z@&LMo9=a@M40c)z*{^esFe=?#27#q(FlmIy1oY(f<2jGIgRt}x{_DU2@(I}S$exv| z<^e*&#aeb~oUe-8oWfIwIve)5{j2qR@yL(nVMy3t-J9DV$P`O&QT1+o)ntw-ej(?v zZ7jwd+)&hou-=V_n?NZicBbnp>4}X-8mcJc_=*o>-h+)%t{bjGBlqxr@k8*DUybi- z7z#CRzJ1B6^_85XLMGBzSt@$?H_R;hA2BnXvNihdV8;pSHbUvzf~G|v_TnRG-)Hx7$&#&8H!}x4DpQYnYM=c8 zV5w=%dWX4TEc3{}hEwdMoeUjc%uEw)x0i7NxLM)bzPo$a?b8gGOPZhH$?L$|0vVP= zLu3?{<&28K1OZ&6e*j7S0jSr}5lCAe(1z#W<7PA!DJ8Iap zT1mylwTy`)h!|%Oa*;4hEv%a}V^nmi#oWK@Fe#}2E}SbDArdJGTHy^apa6w&AOTNs zuoqX*`y3kV6kq#8!qaU5Qc4|1({!JBxdwQ=e97Y@)VpQu1laM75x~Kr;~`%hp9|r9 z@-9%BF3t=Bmy$VTM+wqc1woqr7U2>>&Vg=p=3|M3A3v0i3S1Tq4%iL?C zCFejX3vsaQQLV^b!J};FXZd>T#x3KNq;aXc2TR}arT!h3E&Tz@3jPMm-T?N+t);Hf zdR~@#!()%4j28}N3oHx4?b2&A&mri7sFTTY;5MNq`$A}P~z~Njx{x_c7Bx+XH<$(k72!!ZUo>~(P#D8ZhwPio>~li z|3GE-{Omv&C=oQ8eK5g)G8Xd73S-O|ERsmcigOgI3^VyAu^n46%SSW9J}|i=dvZT= z|Mu5kbN{vB?X$=;{P9LSeGjqMci^>t#$Uz|FAMA2yw&D~1M9k?i5{gn6|(5s)J~uZ z&=Ou;`v(&sJ0ksCb@UFWV#BB?%}#vQ8(=?v!n|XIt5x?6Fo|pEFf-K@^?MfmbnELI z;CwUpc2A(qx*?6B6nVrAIU}}ymP5!Y+NJt3`wZlBrs5jYhi|m&jeZ2`eVC!$`}t=i zIqFZ&V%i!#osoe$C#(vuJvVkgs03ZZAt&{2icJt{<~|P`p*v${BN>)@+k%AC@exGL zXp2U`aiBU$xxJD7F(0H!qwy~-qNJj8UEU?o>w_%=|F=JkU&iqTa!pKB8S|rBNSePJ zzm)IBFHsIMBUAiws6qU(Pil;);9$AsF;V%_CIu*zBj)e2%w7NCN6G#zgOOVZh=vhC z^Jnv7wCGXmVNJ5S3tzIzZk*tWV)vF}3ba{0g)3kYCym7h?N?*@q_`$SO2n6oNl}uWef@~hB z6;gf0Wcqep#*oZuE5O!=9HaUMChPhj7FkQpL8J}~myt9Hm1xEFP~JRdy)%%&D=znEUo zc`$6}{60p5;BXFjagY2Yq~Cj2{B<{_7uS<%Z+~K}gPVR(|8TS*ru0_<{)3Mk>BbcV z3M~CIFCOEbBd%wc6H1jv#&l^f(fHOJ%Bt}^*wCIjIP~obb^7emR2g-7b`%`unCd;P*cuo? zkVHc;-0%3^5C#o8Xt-y}>;nb%bZ1Pg93^UL9_){9D^n;&WlP4^D-S|LS||Ihwu2+k zW_OLp{+9UX;Rlw%^0f+@xn9_MV?*PYk;*V*(!=5D-!ttHpKV6S4^{;{?CxtJH154D z`{K^>5AmpQ`wt+IP{IW)p2_{T9kQcPHOtyuJADqZ^}TS2Ead4v>&0Uq)mFUFBv7s? z42>kHC+VvZtve%PvjRJfow-~qTF+Sk+iI|8k!9&&6uXl~rHC!2rifR8braTyjRtHs zrmOC3_i0{KDJoQmqO#knH0jh+Ma7Bw;*uh((2%mKBz0rP#;PAZ<5$ppgM61qv*lbv zWLOSM*W<{!Y{pnObv^8fu%C%)H!X# z$$aRuB*_iAK^Th1hwS%|_)DYk|EUjD+Q9Wb_~ssJ*uVT`7{(6!D!ZYG+@MYX4W3at zFo)jIW^ZWdKth5b;d?f@1VCLnl;)d0O1QHD{RqC{gr=nM3@-k!)>%QyPF_3NjM^kT960)C)lgOLTuSCDnXVG=T+zFwF`X;07s zECmMSd3PBp!%|Vh8>?j&wlCfDC66qrcehqhZW_C%)9`!nmHjCC5n|3LPCA1bJV&bg z=!Omz{!P4Y!D*vdb6>t9B2hlyspiy!CZ@W=%T86Hd+3Z=)$`m#X+mlOc2X}~ESCnR zP_*sxm>dBuIpS0KUYB&uScVz~d4`zYXR4YbgG8%ym@2ef6Um&XtaD%8C%69AI=KZF z5~c6A`*ucZXAW_b8=}0bDcGvXC1^CVD(L^61$N7qdGgn}uv*(POLIgbPd#P#IS0H6 zd{&9$n>p0N{cybb5$Ilic|}uol@6ke0dZw0@o?kpl5q_UW8$MhJj+VsnL(ZM0VJ22 zJ7|Rc7IV_t<{$Hxi2*wVI)tjBDjCvlX!aJ!>dvZ+719br5{wcQ8Vb5LJ;4w| zB#P(AWbrNRAwOFVDSd?_2+&POrWjzdd6cPEF|z*di-S9c)%1bZ4NS1(H!c2mPaNOK z*eHF6hJ>LE`34@lmhdQmH(Mn0?2OG?^n4T@FA@Ygx9_+j5YOgzbCc4ETOVwdLGC_O zxwe9*p!HGc7Vm@nDd6o|>GPp7oBr{!OIeGt;8T~2?KX!K&*k$~o84g%p zw1*L)t}ZJf78S3Jr~x2|%t938+*ojj9W@<(tmUJUT5ol$DSJ6z(eX-FkHG(?pHwbg zO-+(G1=536<243lh=(hTr4R7&5<1|0do_9A`M%*KbDAN#|*<7j0rRS_L_c#J#u6d@SHVKx4$tTZ z#ji@4updS{s0so`I=`1Qqwmh^QCHUsF2V`KwIQ8(@U)nuHX$KL7_Na?XtlR&I$L~k z26a=f?`A#(Y3>dFFaI0HHuZIS#Vy9`0r>B|`EF0`wvOte{lf3dDh=bN1DK#4!nS|- z-j+5Q_oAT`8P@K9ZSeXmR{k}hSD|n#_3M)hA#Y4)Vh+J}6f`9?Q@3@wJCN8{@8a|& zfa|{7SkbO%*?r4;8J&7@0c1C5j6C%GC6sps2DZ(DzU~rz+O7%n{`Zj1=l5sRT86s(Zf1 zWL}?i-X*2VF6)DCLw(+fK5IT!t1N*bvY50s+Y??4eEKg(b`#+au|GOALd|LNr(7~5 zgc}*93jjypa^N{~9PcY6*FNGK0JBs0RUCv)W-R_~I&QC-Z`bbD+HU3uydqctEc~PF z<@|zMU~~<_^VLEsWN?Q?jVt3y7V}gshq-=}_BSk`a|ycTHLa2O?@@QvFeMilo$)&@ zJH6#-gtCvGNK)nsY!>YyPL20xIToTO67f9@9ZpDB>ut34lf&$IwJy}<*b?KIBt#@K zhH4d#r1ag=wy?b-f;M~86rG~v={F#IsYHU7eLM$-t~TT-KjdWxs^8DI_oekQ`qGcV zWIwxGin;=Vev(VE2de9XX(mzq__|_Aes9G}z-%gxt}8(MV{TKksd;Hl?SVce7|*JP z4Fg@8IR&Z=Rt7s(zsbExJ<^y<#59B6IK>P@dl)kr@(YEU@@9n{qNzH)$4#Xvzu2pi zjX4Hs`$*r_Lj_u!d9uUWkx@i)lZUon>X!-N&1o8Nf)DXwR2LQW!xtlh16)h`^cLmEkhR_C=B7V(-S#Bj*=AMA z!rQ-B0;IHYQ1r(Dc2P#wkWdEcze(S!t+n55GF@es$w{y$tB2WsA;ZV81`MUnj>$+Vsr(E?=vWn@-ldh=b-{6hcZ~2B`#`WLpLEwCAy%4P^qTc=_WVz5je)d`6k zld*`(x2aWeN>ID7X*pm7_?n8KiT{c?Q*#G7Fo_Ts=-sjyD6!oZPQ)_x|2>=v>p@r+ z1_|X94{m$Rz%6U$_3U&C#(5sNR1pgEwRtq$^(k33XWZK%_A4Wz5sO2{aQwi7&a?m3 z5xnW1K}eNR8|;?~6vn zSDX58QejrO1C&HG;}bcXHa!Rv7Lpr{5Lsc7=qQ5g zdIMO;P90WPkE*QjFc8H?;mkx~`}qjSi0&Krcb(z!;0*iybV438MZz>e)nxsFlq)>^ z6MO}+pbXoO?cF&LbB&a1hr#AueWBsoP)WQt1&ZP}NS%~xus z;<7v{d0)%oF&0q&5tj8Fm+A5*Y8)nMBEReNh)Ib3=v*1umnhT8YFQf?3vlBO@?Wfq zTU5mM_0=z@OH;1f=xBAsZ_j@8^Zag>C-`}1DGV|}UF9lbsFIcfSTH$bZ5%VfNwkjh?luay;ZpsjhT0-=jg+MG^FsiX67 z$PV3cXK|6pTIk>6y~Y0&@9p*e6KJmJulZ1qbgjvhXf_jg%e44eY3=I0oceYe2jmbl zw!U;T2MuYR4bTJS>!Z`FHX^&^N&Ba?qV{W}<`F$ej>C_|dN|{a2UUuvDziVd>*^Q3 z0mQA)vT+w2*{ndotGE`_urn+_saM(})}zPuRa{z~j) zVRlPA4^b`0#U}othdmfi*TOf=!cosw2!80GpF{}Gkpba%0OCW`2SwZo2{mkg{6$Gr zn;eI7=1&w=EJ$u;j7j3jFtDq$yUDE4-^9wJT)3T!5)<5HMeTt!&NL05ReXi;Q0&aR zgvhk-<@0yZb+|P7qFabl&%4gm3r4U|{T!(m&ZfXs$)~ot6pqaR!e75tu&lz#j75AxNuYzQZC1^F{2)xRs#}xj z%=D-SDckEY$Ilv8rz!Yfq8!VKmR&VuhfF*&3eDYN5&Cq)1;${WT^;gmgIZGO&1|c_ z;F>ODgJ%e|@_igC%X6~Fg6KSttk90OzhRf3?g#TkaDwT0XHhA(W%+3wwP$)pHVW0; zAKq4{bNFyfMHid(zltdSwmzh4f6Q~>Hc`}FV_{X(T6X@C4w@CD zV@^pPZ$yirh?>Yi*kyiZUV%AeA2iOYJxu$JvLTX&8V+8zw4gCZjZQ)yb!KNH*@-^1 z>aq*5iN{;yQ;i*HP#;>KTzf>8q}V$a4%IyW_E=E3c(oxbZjw?jfJo9DWUww-L~w;U zI%gu&i^!YrUk^!{^61Bvmw;S#D$s{J2GtyoqL)M?t6CT#s~VnMLjB)d6q!_?QgS1< zC$od*FA(%ddc;;tEz2?bvi0A}dB?MEIU%E9Y3QMu-ugQ>Avoneh<@ik37kB9 zUh(#SU*y##oPVZPy0fZ=kegt_U9EVR%V~=S1%g>3tC^$lxSlIeXLfQWC-3xtNx(#e zn1TS~Wy=7(3rD%VQ5h$yCqHL>5LYeP%-irMYRIIy+Fu#DgDv zI-%F~H{Sq~UP4`mC;L8m-!NWvY~XDQuVTssnc0>bt^Vy2RE*31H(%@0`qIw#QMv3v z2>4K@994pHS8kH_{xzb1{YL+ix<8|{{xy&Of7EqqiJ7Sj40fx`-iLOr*G2Yyd&bVZ zCZAtIN@)I@q6XM|jm=~}27hC0r#b#RVO#anyWqJz;- ztbv+8>5{Lzg&>G%aAg#)Xa9syc}jxEivn0r4+GVb)yC^RM1S>sozLDuH4m7qw*Y*u?WcSpS_uTnz1Wn`CQDr=< zn2q9Wk5@o*@en}r#i|Vkfwzx=ak~8zQCmy#|23jEYs8=N2RZ9>rvD{|>wlS-O^tB| zH?_)ZB_^~Fc?U@+5X{gw)|$(zYQGs~+aOIpF5pPC_kZSOXS9(1Jx$=~flKc(rcjZP zx3j25>fC6JJj}qQ{E7VwdWt~lCeRSvmAHpjL*TDC3qBD1HKqhx%JZn=HjJuZkLp%u zFfJSEY781rH+SmKFtgzlLSc_mqB{|vnCm4BPI5(Y*O%Pv-IkjoU$V5c0U6j7xuH}L zNTigco`l2-pwxy^Ns`v_`wIN`@5LLF%T|-LkD6E7S(GyE6zw*B`wrkoV(5?s?ejrU z^5VDwK2dqk0Rj&is&?fu{AJ$a$2oeJV->CaKSm)!C*bH=E&Q=B2N2LcwZYa$unw>q z*SXW4F^9o$_;)u|_VAj=kbLJgGK!xY;xc9AY1!!P&>a~=kXzE>k3_v+U!mNPf~F-5 z>f%U5p2cB#5~~OtaETSn@y}yN6^e6K5(A5IYf?6(7%pyC`Do}@iSF~ko?!Ld#d?&% z9G?ii|IY}X=VgO~%O5Q4rrIKt#PJZCvH>0k{EuLA$@mC0-TI@r@Y%X;XHT834^n)Ng8vG;)6jlhk9m#ZHeQ6BM==c4kdIR9hE*7pa1!00OzQN$erqFX&OTEMmvH6tTIo=luuR7C5xG9gt#d1}TKGf%knHb-aHPXdw}v*rw4 z+8s$ej^Th(CA-)qCz```-7muDU4@mJWCYz)7;N>z2H@)==fXmuYC0{q-pbo`1%8Q- zAC_KRo;Bt1domA3R9Uxw=a;z>u_zCV`Vt@rhqGM+zZz{}^Xs}{NM(%K;|=M4@magU zAo9l#(e-k){4Hjup^%BQi#zHouk>q$t&PTM6ZC~WJLoq4 zn-d2;ohHT1g_@C#f*f1p^th+SP+w7SsNVp-{DcAec`qAHhjor?D)?TCw-JlH9XknX zcEJ;|Fi5HB+NRUL7jL^+OOot6lHCBy~k*$~UArQ9890^FwZ))t@5Dm|? zoyK5%*~CJlK6UBn`6QI7dBZY#_0kmIq5pDY7A7TkAm(iDJD61vi z8)l|1N9Y9_NBRKvG3=S`AYcq~M0>yVl-fz_uk4Dk=y>~0E&p5gh{{X4`#9-x_OYM> zsd$N!RacPfhl&YfvCb4O z6EO`RZ_o7IdcMB|7DND;tciQqUrHaDLHoub=b&KJwJ7ICxa=nw0GN1Y!TKvWoV6m)Wm(zC#Rw4r1Ag02;)+n0JWC`w*NO;JA&$O90> z4=d&8)$aTe&h0HG&f>sw+51R1V`oUe=(uxW#jU@wGP3B~&89ww1{GU$O-_wkaYnRD z1z-|60hMUH1Z%fz{3dIzqqnb(Gi0Un#gC;;`_heX%BB}aN;W+V(lj-$OnnZo70@Sf zYrn6oCsL*j!9psb|0NZDc2Y+Cvr$OX6Ybm}vi~8JSrvD#jhnV*jlF1ebafvHmERyA zOAwEJaBR_1D$4p4&X8-RwakBe zKwO>^KvuSXdx%w+L$E{G-HR?QUTHwynwyEl0u=}bAr0==?xzCTGxHFR^Kf4$d?Jfq zViGfv@xiJ}h;0bi&m-KK(qt-wOdkg_$$eDW+2P#1Rdb&^CW6_lK*tXQ4RAFZRH)C` zA|~k(<8D3kW|Oy%S3WXag<$Iqti02RPyV10&;E@@{03-K)m7t_WaMvVG~V|m#qnqZ z9pfI0tdrXvzKX(qfHjwuD%6t3|9+-e@QA71Kfab@LRp}>$NkRRvdfGGb=ZzP;`a!u zYEORd0562n=hj?06ev6^~g?n(pn3#<4kXTp$JJ{*OQXpxn=$H4YG z*TAK{)yh6M;Yw6>F6K5jq9B&Wjl`*tC*B5PJp{i8 zqJ(7W+joEAagdB0k{O0Mee-k_*1`i&P8WhgO11LJi2E??e-c@D?*GauAS?Jo;z4jNrgxZhXMcZ^P;#0TjFKVowUALd*pRgFuowTbF(=wPztrYP(kwv{ zlXTtV(3-)gUXQ?bAM;Dw1Hi9Kf+??d%X|LQmFyNGKhD*)*}h&jwo&cP-s}j-UpdC7 zrzHOTF)%Cy+m8q_&8Z!cU%x$Uv2yZI?Gy6;#fcpE*PezIGj;~;aNH+3YtD=75E^<5 zCx^uLc>lCG^x%5qC>Kc#kKc<#Su+OKf59l&6j}o2IpUp<8Z2VGdC(Y_7-gX^IZBZPtELp&wuD75>MzO!JrkoPFBVOV7bj*E&t8%R0_S>@vcRF*V3EV$_qxyy0zZVYECnIO@feyTCMHI&-Q4IVa>N zl01&9L-Y+&ba}6%HnMS~)oaAI)Qz<;iQX`qwxl7J=l-dYG)-uxb zGN^Zc)(nxr9XcHC?4KU_RoBdxolvk!PfrvH zDQDmom2P%E%WBCiRzvGVARjlutfI~wp)SrRr=iUZoyYyl#9V*fzZ6Hf@~v5*A44Sb z$&vOXGD`bEjgzQ{KMFPZ%6V*<7Ml)A<<2SjRqVWFh%eXvno`uB9TRu)vOBsMn`u#e z=EE_3#$zAlQ&M%WfCd@q3T1&>(a4so1=~g=yD#geP9yCC2&}?h8uv+TXce4`B9w}= z$2=!&`m9IF5uYkkl`M)*%P-zg|FTFbU0>c9)vG=Zmvk&?woWN6+`d{`x7(Q)9=Pf( zy$K2ON}S)8c2p1=#7Giy3P1)KpV)50LSp_8a9;jjCA+A@-G>~U5wREKU4wfEVdeIx zZky^V;n8q8h_z}LW1Hr-BVRSLOfYJwXrs$;Nh)B?vh*RBp_+I7*))pW(c>}%K|#g^ ztch~1^Yt}uBt1o6!EW2enLMG(6R{xaO6tdBCFM2FhxJQQw-4%;Q{A-6->@V3;UxK!=4-ojdQSw zTU%879++B``|DRO#oRmV22I~NO720XJm#;qY+H%i(B{L=&6yruYm;pl>C12#5rgrq zH=c&-(wX21*gSH5R6ujqDl%F%KeRUh&iW{Fk$rKQ@A~5O#zmh0CEDwk8MQ|JG zwGKBa%kplcZM9`6lEaOC&2c5TL9oCmwiRrEnGo&=)bOCo5zBdl6X!ZSM93`%I*6wf zh6PCvx}};if$BV3z{QMDjM?yHU^lom%5z$KE|EzqH~b3@x$tx9$cW4lb&LC*-T=}hE*(wmAtx+hFhZ)7uf|g!j!AMQ zI~+&w;l{5yfm{&2!C_KV45r9ZHZeXAp&c7*0gCo_tSRLUn+yRnVELUeqU(kEKmlPG zvmprsD|OHi`?}UskO1gNhfgyY;aX1 zgMq&R%+31Labx9}&X#+(Gf>A4P`JVr;MIK#JrgV7(weHtepIXYx;r zIc{>Ude?y_oVxRrR7Rks%Q>>fv02Iqm*M;rIE5g$Y&1vuS9Hpz3W_n@Q#)<`8VdVu zlP2Y*GY!(UQ(AA-L^LaHo|Km%8BoX0CMDP5ai3b9Ql$ysfJ!uNh}1|{Fu_!P|8wUQ z1u^UNzeaad;<2mWH6=YT-IcJ5fwg?Ws^TLf9$h=ZEx5Y}g1fs13m)7xI3f9Xd-plreY(dufp719EI(^7 zsu;D_vuZtS&TC$`pLc8L`(=04jNvBMu^!XT1tD^_6j2N&W(KJ6uYaDP%X!! zkx^O>dQBh?0Ysm3Giwm$_Filh$@I9vO9}vD{T`;e;rGVJ5ccnm^$B*Ttp<7z!0d?+ z1HpC$d1r%A?ErSuR0nh*0ufGV(USNtK_&VuU2OQ{soyWfN!ifJN1S+{Jhj1W9M0$5 zF#Vz^=<{Zej zg#hQ5@@{54|H@8fjByp7781s3xTdxy@bmVsGrTT^dQMw&ju0Je*pzGBp$uhjh58~W6k!k!d`8mI>7Gd7`yjPIB*(MiMbo*ur@L=(%G8%w7xMQyq; zys5V?RNk5zeUHacJv2EMy@CV7T8a(c2_#a6eBquSd;Kq4T@wiW(X~>U(>kt;k5=7> zN1X`#=#^fv%4@^8E?{pb(H57(k*DQRhV5a0gHaBlI@WA_R9QD2 z=v(w_a)N(cN;3s33!Mm_k4)6~zWbBF%uWhJj0ihjIyYB|7GK-1)1VlztnyXARjkpp zDT}|o*loZCn#;9RuX_!NN~glR|4nKtsq;1?pCJj5?wMOny4}3rE+dw5y{Pvj@bQ^m z0@rrwy*Arnz3q`BL;(wI^MQQaX3My?w`yJY1f%?IVFpnR+Y%=%{hv&V1f3)ZuN72G| z9{AgO|8%2tLzrY_>RbOg?_7yh=)1vcD2tI7-HeTS3)RAsNwRucs5dka)z_VIOzbcH zIy9Gxf|?PUC95M6ge0%>nAm~xG)Q{L9Bwi$GDYnmOt1$6jbZlWuQ5R z6vr&f$^dbfAt_xU6`6~4n$0FM5)^ZA?hBr|+a{2=S~ViryAsPId^4Fj?yR-1W%{kH z(&YNRzMPU@l#;K9NNK~1u|eU~I>yNqhYa!wc7{reV%#A}_5K1J)Bng_S%F-#C!fYk z9P|+B378y@ao%}MBbHhe#X=fK{i3PqI=qNISp4pES7p#O_&#%Plu`r~>AQKVL}ru1 z$_=H&yO!1okWq@t{@rvQs#3+*Z!JEx+r>!`3_J1j`9|IqDFC34 z^Ua%fZ#W8zm|t~;^?!6G|8A`}hxGwBe6j1{RRG7f>Bx)r=4uQTaW@o(Rv+>(xuXe} zX_k3Rel`kQlF-MiQwNZ%xP}_)-;@f+>MI&!d6vYXQO!h*Gy-FML3JG77&AXak*4Fs z&nVMI6O+J2{8GJxs3^TQ0R)A8a|@lwuurV$KY$Z``pmyODB0Ydy4PxGJ`sU%byWFp z0Ar^*)U2aUSU;2Fa{N5)Q8HJ!ksC}HH=DR*ya7WTTF8+Ys}Fi;QjRoXCjjHjA~LF` zD)}4hhQhSGOe=$(-_>jV=(ZII8^%-byf;}Z->)wCC$`~!R={X{1=`_&sLhKCRxule z+=HtIR!@8zuv|K(GUZS1?(Yb9F9Lo6)KWXyTR)#imZronS?zeBPql%~rT@&onkPo~Yy!%iSt|K?mD>UOM&}In3d7Z?xudYx@ z!Qp(OI=j?<=Gh7GGP3lsGzoC-)>vDCd1)TXSBJ%tX=qhC!C{D@qiTG%0r;2#H65s9 zUp1j&i^5HAM$vrZQ`pBbvn&Z8GM{JQ?^!A;^1qm|GJ@jPuzMofJWQ-a2=*cPU%gu6 zPd*78Hi{x1AufrTsZMFaV@Rs$z560e(+=cNe+}%fcf-v zj*uE-=nz{a(zyMGo0u-b2hCK`yjz)WVmew6uEFtXNNwATm{%*fE4Hz)|09dd{xNf8 zxTm&FE&=udur7?x_0TO##f372Th(dK4y?DNuVH2}xP$7Mr3DC2?^-AEBxY;H`)teJ z4;lO{YcnVutlB77{BM;LOHD6_rl7srWJMOE%z~$>)1FZiQl}^@c@d0bIJ zTr;rnuyTo+TwmyXPr2t{#-%z3;$EdON9APQSUX<=_Z65-U&$*>VEZX3uOM9Wm30{* z+1_*ZeSO0Q4|OykoMErwWgQl(rBnI3k@mn)f_KnP2-BGk6ywyKKjp>$cd zMIf%mc(4nHji)E0q`fhyoQAb?P(K{uEt@Vh`+^u>h>3%UFXAk`nWnQ;_OaE@=Ipyc`XiTaBWSQK#W9~ z#T=^Y>-DzEUCwg*IsKd|dc5Z>yy#b$HyjC`30k}doILc&!l|BQiRT3|=uJY|%}f8m z*jxARMLhFA%-CBAp{4O$TSX8}8HvpyVQ(!6AycB=gni_r6AoFpwjriWSEu&Raxw`N z(+D7C##=}dMLO{yVA}}fykld77#dA~Szt*8gwToYDA0wy(f3CyGtn2>E`IG(&@5fMEhwilk)?vG(a2piI^vf@`;1 zHc&f&xeDsxZI-P=gUd)qg;DMA`aBJdPuWn`N=KjONg`iZs9 z&h4Xbdb$Ro7JdQRmIT~y5TDl-tpH^+x81vdeTKH>ojbJaN16@B_i^cA=QgW*s4Ey~ z!gb=x_S;R{NR?M)`sR3-c~Wl6mBQdjl2i#4!KMxPIMco8zCrj#89dCVWrLEss0vAl za}#=!*=c`Nd3kK+LuI3ya66*H%gRbLlH@r9 z6x9VdVn?s%z{k{)2ur>8kq(E6IBkh-aoFbU7Z|N*i!!iT@M0l_MWu;e z*YVY6&`CJim8mb`_Fg%Wt05FgB%Xs`nNE%L8_y4w!o-@d&z-(*^H(7i#WWS`_ zHXKa3TNGVkMhe3oAkt%Y&48aXrt=h=W4&vvuk1{O_z-U4a)LlE+M@^l3@5-PQf*GD z8uxNj>~(6*_cy}yXbG=Mv^Yg$HU=L#c}@cf3DInr#JH>pb0$9=#F7+$cthqPcJL8+ z-8sb3wI2BkkXOc$C49o>cB%Q~>aQsQ@M(oG9wp@(ngegm)Mvx=~y_ zJ_zJQvbW0k`Hz{xgw>{x(2!izF(Xy zHS8Qtua=Cz$SqyqxJ5Oh$(q@jt=MtYDag0v0ce>9@hUo-$gJ$}rY zOdkvXeNcOXi3a+*Fu{PAbMAZ#R9F4DkffHk9n4a#(%t>>O$Ei1gRA1Kr^}m&QdexK z%LMmSfFHq{Ya4dHWl;m^Gz8mK$aHFQ$OX@*r*A3bgJ$`-6UW(!+|SyY@P{RWAZ6j% z5Z~y8`aGLo0BYg5eizI;x=@&X*K=wA?H6!AX-qtYOL)`tZnTgFj zg%00Nk)1+#ZoTvS=hHC$aK;-VdSVxF-`^907`~v84`imYGn6X)I*-ArB)$YteEdasPPnCP*57`xo^Nd zSefGwHQT^>6YV)_o~<%%6#o(-0L^r z%w^dIHC;=wD2>W%LO}uLGm;ZpoDn%&>2k}}-TJgPin8%sh>NkxD1!2BI#tDxXbDg( zG-Hg7Vt&js6cQk>t>YP+O1n^xX35Ydyd*pnc+<`ag(uk{qi(2FZkc;!VM zlQxhV1A%eI2pumrp;Eeb$y}w5vh&7qkxU?>xD|6$GV9Gi?hlckb!+9mPkJ(WBX@7s zD#`fVQ!SHXVZ5;OWw5xwWUt0Ku*hN*M(UWL<7(n?Mb%?`0L|9BBB$1QIJ)Z^> z15?puIE94ugXCySzz{4Jp0fJ6j(o4+F%P*dxOwZ4xg9w-P0_7^z3B-v*rJt=bvhWp z@9*!!Pzw3yU%j-Y7E3xu*o2h8u4OQA7dsGsU`ale*e4#g4M@qa@synAW^dMq|8Fc4 zY`TuC9}@8S5J=u%$#@+g=#2(ju#4`TZD{2ZBw?z6z*du8W}!~FM&1Fx#`2&{pSU}O z&5uW(Md`kWBPUg5Le-L&{cjOJ0{=1Mr+XpluY?~1tCW8Y_-TDrfFOw)v?&dX!Gdf6 zcEad=0JvFEm3k&waDOpgdbyv5k_C#XHJjZ_E&H_m+H#9|4+UZcNB02{Ue8%-Hw3SnB9QqpfAr zSQ&m@vYDd{^m8VaHoJe<`Bb6yqFtx4^l#5ns5QolR~Dw(;2}Fx&Cs*Vb#jYC_`b<* zY_$16$v?+Px#TNoml>3+Y0BQYLsI55SKj34^0EAwqkiUbghH=h(-PR*8;3w4WZsP` zmX~C;Qa($X966~$DT7_0Av(t*Mgc}5r82{*Tx$Fx(5|kcr|tL--msC$%&F#_{5nDk zF2{=`!lgG@Zc+qa(-cJkoGZPPE#pN$;5Y^)J0wG{HQ46<3>r8PZ}coL7MqTeA{G}o zGa?=fR;9L8qPwF0hjmo-y=+e!we04DllgGlsV> zvecK6F%%&cf6>58N#YC_mMZ5>_c=MVFSE|{CqxE`ci6*|9iIrK^d$Kb-RFgmLu(Kg zH`R=nI3jYCsAv@_qe%j`f!xA*enfPV@SbZ{w76xi47Qg-^F`L zGFPx71wS!P^NLO?xKVch3xkR(97PyCDLXx4+{$$kDGl+JFZ-wI8cti&OHhy=Bm^vrDs3tD z%ZQ9{f|LH}uZFk`F?V(|A<$Z!Ym_tSd|Wnt+M`TJ;MjpLPfF%gf2KfMY=T4dPdF%*|<({(3B*N%nYeb+fZ5E?of7RE(Z!z~#GD2_!? zPH3VnEq~#HC@m?ocB#^HO<{wvgM?e@>b1u#jLE=!%Iyn5Au|9bFBD{d4`%#Ynd*ca z^fqRMP7mR06rGtLQigVa9Z`U?ks7I~m>6N0HU(*b4g`9)9t4IGtP=#x`_$){0n1NR zhZ1e@1fYlKPjbkLFwG0h9^_y!hyzA~E48JUicEC%6-x}h=nw7@($!5RFgGxXMu3nq z9WYGCPz@tk@4mmf?%}_q@G-Gcr;{r3Xloq-@kH9CB&YMdvgHbb5)I9!K`~5d1-GX( zr2Wjuw#0k+ewxV)FK)mR_EaFvM1V@+RqRuk!)so!xpL-sABdoow~AUJ2RK!%6u`^` z4jH&8xa1wj`K(+Pl;j*rt&-U^(gdEAvWC!30aoIWTrbhK^)iqZ^hsE?YAL|B!+=rMMkyTyxUr(I zAf3~!rDJ8DLd9G)tij!T0cRel?NxA3t=(=;b6)?^1jT2Wz!^Nb(mrQw0nRyDcI}Ho;wT7w28Cl(ojUyAg;Zd_k)0GD#^sjZ?lTDN2Zv=VVu0Bl^{V zjAjBk@rMJG85+5KQxRKFldIl%wks%aE+e@9^x7@LT>G%Xe{jY#GvCw1cmHLa>D0;@ zNA{H(DYSsnVr0vY9C#U=Wv#7Ba-xFG-s~gn+~ui&m0y5536t-0YKFx}_=!;iV&S`e z;R0=$`8oD1dMnov>ERpgm)yZdtk7XBA#^zQK@-FVmta=V3e({NDNkdr;&;#!oZ-oU z4=H*{JU-+2^ZQtuRd9>swaCuUQdk3nJ(?F}1ut~YzqOcs$#@Xr215`3=-u&^$T(jk zOG}?JH0CXc_t^3$%ht>k+LM@J2?t*Pxdo#4`~(8KMcfshduy=U+h=jY6iVk5wU?9T zA@s1YxPoZMJqIBaC*G}s9UXOwFOvaWRy?l^Uei^Ln6}SZg%mTMzRbE%lQY*;Z_JtFkquR*5YrHZ(_gc z^p*JcbGT~S&3wai&Z$clUfXe1h725q1_n~lsM)paaHLZs^)_=Bu|V-X`gn>6rSe=$ z?A$n?nEX-;Jepb77fH}TZojJ-E$m=yFShNf?Z0L)`nf@UeaNQ4~YL5AJYiYY%yz07E3EmT0&gz z&syw|!Rk{snd|U0SM{mRL6?~^!}uEqK??g=<_1dt$Wpyi23#bj@MZmWFV}$ma%m46 z`lLzIXm0jXfU<&*qc4T8T*02yp|`|*eb)E>w~Z{A4gxFY#pdvD*qd6}>Ga6}TCYJFr*!yIW2FO|?4oZ%3er z;_rT}Q~w>Oo2p(|Cg))|E+6&h8~u)X_Rl$bF^BzU)xFqv{AbnukE>2j+CodAuEDJ9 zFr$8HII;yIGIVhN2{AZ%iYEIz<*sN&4NpcMyMOC%YHQc&t}<~kUskVmD!r5PW}`qu zDh++3%0@w$hl=Me0gj?B%F-5`tq%X(Ooon01RKh}$tKj!DNn|-Dj%c0HxTv)L~@N$ z%|Z^VtdE;F(hdPasSvEiXRz>okD?(yetKk8%&Hy5%dextBS1hK`N*cDB`v`F#OCQE zgQtL7wZo@?TSYO*M5{C(Vw}GP+@3rI+=4rDZ-%)d&G3qA;vN`WXgZC^+gusf|r!k-3nDJm4-kA>4g4VZxVVpF$SGI!J3Ifwd+0j^R`t?hRQ+7gU2w!hX#! zKtaRKiTA<&X>$j+L2IVzzE~3edwhae@cpBdTER2KlXnmvGI25VS&#lhmd@eBr0tGuhGvjjuANEkX!=>QNd$oh&i z=X7ZC&=5Gp6Bwj4)K3*71Ek%&Vww`({w^gSSzE>&0sZZ;3cb(aBa+RaOl`M~t&QLs z(J_Hy!6=@JS26B6k*Pe;Iio@?<{m$Y&fi6Z5k(f-u(guYvQAdDN6KHp%xb>gau;}S7Da| zxG*@eJ*``ck5Hn9!q2sx<)WLc4z=WOR;p^hQ$GoA6I!SgV&5q|32qA;kqiGOxJ`Q! z+&VjQH~wh~{b>sQZ`KqV`TE?T4}8A&dzM#NJ?AmkbCxw19MML@NF)?_PKJ#miu*Q) z?c37$`id~~;E{66lN6-DRS3t`LIucIk10uD3f>b8vL2w(Wr3cr5sxCjP@8sA_l+SVRT zqwZcn5He?)p<$6A(1UqR>@F=IuUwoSYB2nMMNc7sgDpU+;=zL{^?E-lraM%VcJOxI zo4m@fIt25_8|}Quvom`zXYW(ziOjYhYf1?%e2i9n7lGNt$fqQ>zbEY{Oj}whzZWdkZ>8ij?FYJ$MI_s;kpK$SS( zA06EA&D;Clp{pPPplBi&k5?r0BAkKm!!|!Vei$*;T=Z@~4lGI$lZ-7dSl|r^>-K}A zU*YHsWGiIgNstU!4viqI$r*SfK|RaR#u0R?$}r=gb9oPdU|=$9n&3w=%qO@Dr(KNM z=v==Z9wJ}ps$>SRaG`YG_4PA=(zVvh%iGbVbfIj)wLT%j#-(Q`_DF(z0&GN{EE!%c z0k0mSrSD_ht!7jwB8?pQ>wIcddxBH)*Iir;@l-F)#*{@xF?pj0W3q*dYF$Fo0d0S| zU)4_#4c66fqrS9OH#hV93|5?3JV_%l&;BNjjQ&d+8T(&IBRLal&I#EXD$_l32Ol-Q zNi@0B!K`9;Ng9eTe=D80`VvhDR}~Z6m0aR?;}CN2Tmogm-*jtD9Q#D3+(- z$LlWxRpkU|l_^59z!jTgWGJhm@L4lh%y{sJLt*|3_n%P7$erS`ptiAL}jn;p~7DavEppIim+c@?yBdniG`55>mWrYF+Fu$@J@1G>Xw|NCLWh z_-CLq(2pN2^-rqm%bQY%7fr|DbX#Q@Mg=JMkUY(A4Ur^{IYii6HT(i3Gk30KrI}(q zW>YM5c>e;dwDIrvd)UkxGHL+{A`S@H2=ucpyr!{tHP(5S3U3y3_wjt#dwMS^ri(tD zW~vTMJ!2g|Jog$_)oiSb4AkAAQ~KV2V0QnCw7x6k3Cosg`x}%p$ar%-k^G27Cxsn3~~Jtaw_<2$ui4l0kZJM`VWfG`kPs3YD}mE2hlLumh*9 zC$wbR^i~yP$#II8#~0{j_nIV;z}hh2i4CZA3z$88Ley8ENYK$o>d#Nf?nX2Ic0$hZbAWvmQI+m$jk`yB(|T3FlLS14vje3A zPy1-YH7z?C?v)Kr34xy&&&0evey%cn8gxg^Gkbez5!Y=Bs|MZohDc_(ebvhuoN}w* z{A5y*8Wj%+NDpD4fj^aW@(K8TJO&?wo`Tw+lOrhQ-ACuieD;1|C@I$7P9vygB3cAb z_D-1Nw`?Rj2# z>`5K#jT7!pm5r4S+p+1QHaE@Fq4tnpfbbK;V8sR{IcvEK5b{`K4oH{B@r$?eb(CV#Lc+Ae z^tyjLnqE`9tn;>>Z@HPrdj_%=%_I2j*|$QUGO7F@8T{n{u00^P?_^y^sDcjWix7}| z+vfr_6*w=3F{yH1*s=ln#ry)u6GO~fOIdmh8nfavQEU{OxXL8DCzD5?%HewmeNcp+ zGY@r^YH)1!*u~Uw!y+&R(s^sgVD49zJkZ2aF3I-x$Ew8ZC=)E(BVe+UHXGP;IhNF) zumHX(!+PGm2!bsEA<6V5_W*G$1_yCAA>Jp>P8hYC%nj8ZnI1D<$kXP^VF!Hd%vWYs zOp}lzZw`s@uSI}O$QODa(>sI2(H6DMQumRGp;W3NIinC>o?v|c&g@PfCp;F`p^x}d zQtc;!sILKQEZr5pi#bLU8m)m*JT>=}2;nhb3{;J~lN8{wE)vrfL+Z^`Q6;R}4x$X) z+rbQGxS#kJUPRbcsQcCb>{TsYnp!{a0Syxx&+Gya%vi>kAhAdlcGUbHFF-6B8OmyC zlITBf$jE^)G7 zOnAVXw@{?_?aXz(J}X{?)oUX6SUks}*iL?w<2PO>Q^Ne1*{4m=o2`mqVAKYwpD|CW zk7Oi}hqgR+41rDRigDa^{VYbU_)rrE-RvMt*WPaP=`&#r)LJv6k>x5`7nyKJMb>nS zM$ObocEX(>y#o$1Aw(lRV2|X>*raA_I!{3Blg4Q%`&QqLsF;gXIP$8T>A82ZN`v1v znU;N6Z2E+aCHMIZH)=H1WC8@cX?(oIJ08#eWTUE|5@yDxy`!i=A09_7 z$SWAvS)?>hEFNES$L@bk?U2)^EoFvDjAI!N>=BhKqrGkR_E$i4XNM2%B7G%Z{;^jh-U@qjLbi;AP224u$J z-`)1H;aA-ixSCt=cJ`|UKDr*rfD0|x%r#?K$tIi3zL^>8!|H7@v_pdMZo^$8GXr=>X4394xntW*egkm5T6dBSP`Xk-QVO)*n z2q5EuUC73jJ_tPpG-65#1%D^o2aWW99WsacPtP=_P?goPZ1acc9ZKf&A(lHqB8#bG z57?{QrSudG#X~jfA7g+?=W*_HoGzYW`4Oa{1u*FaX^A2`9_(-w{~%2xtw!UerM^^J zr$Hy(!!ASvV3)>-6l3%Ln0rpg!qmPJSYx+v#;Mlf1V_MKBTFZ-XvbXwNvX|mzoE9m z$NC*UQU)^~NkZ^kr!pcZu*sd=FvRiu%i`2PnG5r|KT|vemlOHkNw{4uv7GbzXov8w z3%WgJTk8j;1Mu00?!%TP6vljGX^k#(O5XwPfCFrWt&b=n5q)s1D{|!v=sBZfI<0bG z=dqAtXctsL2m(%S&zhtd?5 zT%2%QwwGci06t?{^HY@-Mp`&!K26n*3VoM#S1ZD#^{!{1@8VC3&1z(pi^Li0wQX3XcjFst6d>Y9CPE4ry*|vH2+GsP zQa-NC&ou-RdRw*5y!7t{=ryj6t|(r`hC`p$8g0GDxXJ0|BZ*;Gj1YP^lECQ(ftCGA zk2NS=<8nMt%bjbG)2&v!6XIwDvS}3BZl^=CdDcg6iXz*;idC{*Kpb~ImVowUV@+@m zYLzc)N!g;<;GCFF*p?E4R=OfrX_J{7dP3(d-=9ZQ7KUUr$wYk}REB@9(C2P%|AwEZ z&vIA%R)UEsAP$8#DU_k8&>twICn)$7A7w+NBE;nIxB>O}SQ@$19My$=l-z+aV6^v; zI9^x#l;yGXN}lyEjgQRdCyh@aB&tTUr7!&7G(K=o8XpN$k?4YFhTrKj#WgcYvMl?T zl9eD`E((PsipO)7+Ig*8JI6nwZF}D!b^z3AqJ5faSRwqa!y^Z+OT>bufr9WdFy&(m%62Amw z2%Cbt6A`hJ^}Dfw9W+Kkq`dH<-yI9)xO2J^@j@)*s01= zGF`X0+ZE|+1_?34DN{4E{-Vj45Ae@bh9dm}yf7T#h0{A^F~3~TA`3B&~w@EoziJ6T3VMpBuaNh)Xt@ZhLU4T z`%MRshf6Rnv}lxyvEXHY1}3sde-14-2$KdEjw>m)^;{ENfU;!BA6`(0XCA7ghhp`x za;^!L7uZ;)g>hQJP^!jW*)dDW@B=@?+<0vd_A|pV{3WR{5~>Zex@nw{r=Wv1jzaN5`t%ASvv7UaX ztb-L{&2#RX*%mK-Icq*)lu#V{cTsN7cQjVcIdu)t^5fL4ru8drh`3d0){~MyjJVRod?h${8W920_1ME{toV|Ct zcSi$`jLPI7XbmV}$i|P5S5R#S>r?>_jl}gQ7a5%1m-RnZCLVS8Z`5~xyN6y@M0XDM zWmy0rvX7I!B-};bJitn8W77$FZ$QboTybeYYxF*^iCw6>tg^-ji9(K{y>N#Aj_;W* zbiB>Syi)cie~ai@2wk$H{r#w)*`XzI-=a(Q@6+p)-xkV+uw5Nk5Y9M=3Z#fWXRf)4 zK?kUs#V!@aJhD5=w1jZ8l?awntzAKxadQ2gp?8O)+r+?bi=lND8v~WnCtoZ|=?rc# zC8Bh&yV){~VsJXHxwEtX2GPXJi^A{lMEBgP9p?Fw0 z!;gkVb`T{*x+S(NLJ>GI$KoOBtN1dGBA+*gqlo#Yk?ynG`tK~^(om^LpP|*etG?A@ z87VJwEticaUq)T#_-4=L>zES?uCQz_1YSsrAjsc0@hC|6P+Gz{Bc7?;M(QM2>1w31 zq<69D+hZJ%h{M+L%2gjKCf*U(g+x0SmvuUI`~)Qvv9 zj^7YT?^7_02sO9LxETQ@$FOw$V};jaw)91VuMs7`pKdabNZQWyl)O#No#QPNn zw$qL(0SgOpB7dN{uXo9g8VPN3Mh3W(jNi*)hdZ0}qU_LNCtw8zv&h?EXT{#nxSzU@ zSVy<_p}guEl$6!I!J&nP{&C1 zUgVimp(N}~y)03;G5d?KhT*^sT7dZXWN26Pe|AtGZ5i+XqR#h!9%THZW&NXN{i9|5 zqhRqA!DgAl_YN(N_@kZdrMIuVD(5J5KXcSuRvE znU6SXtuVa*Y!*VUoK43aC>xu8(J0m=txl?3nj8in3U;7U@7o|ZoM^dqaV(S2-+3tSvBlS3~L6Q&^|vvC<2 zv1tUNmzFwz+GpSN6l$QwV`P&DX zx6}*<)r;d4Zyv(!iV5Z& zRi%3kT~cyQoMB&eYK8C*!rVIrTAaM7D+F88dvPvr=ml;F`tFLgmcV|>N?=i9Dg1+v z@HBSf2R3M-ujiH_Nm=n9p_lvLR47OLvg}qiowh=2Nu947A}pHjAI9bd$jst{kt&N1 z6(5qFhe+nr4+LaML<{828$yx+8Gp@B$s1lN2WAmrS-@}4(B0Trr$bj#2@vUWYM4%B z-8$uTk*lJ68h~iSLM4kq_OHOgvLQgq`oaA#BMl<|M7R7u9o?d-s|>ur%%lw*N};3Q z(AKBpKxLa7%cFLqLTjM6OO{ScP&OLtan4uiRX{scx1t4u+y(geQmJTu&Mh~R7G0sli=`I3y@ttS=L_%CPx2Ovm@i41jhx?}oFUs;By)orDCwb58P=ss zyWL=}EAUnBm3|EAKV=ggJwnFvX+ZXfd3|}<_cB$~m!SKyX%PE4hLN|{@x;Ccv&FS# z8jj?M|Gi(vq+_252Hcqy132--VAx}@=eu+38CgP8l17Kt7aBM>?}*CT&nT1I4rUPv zdO4y%tqq$WUekV`T}sd{vI2=lgnBfeH>80rn3jhIOC_IjgEWaW zitFQISF$zxiESZ*3)puJJoccT^iFLmK1bSWC)MNNSgzjB)G+pN6cuhtr3nS-e}6>b zf5aX%=ddK>Z^Q|kK4;`4Gdrz=gqFlwP3g^su*xPxg~Q{BO=YlgZ_inHVim==oK4|S z1Tj!a!t9eMR8>PfiV%!*OTynGTI9iUj5o|+GsVp&2Q^P8N##mI1X!Daq;bTJNoK^F z(s>kzB%2FJxKPlW&_AkjSXW*nyhfwcI|2CeHF8G@&wN44olj3W2Pe0ZipOKGCA8aK z!kCuJQy93wF}4CrL+P_d7MdW(~sJ z-iwVQnI3#9L#e6wJoqe9jHiFN%ULKbSeoWzBhUiE@B3 zA%d~>{jD^8~$kDPc^Z9LJt?J)T|U&5_t}#jvs;O}bV&Eu0FM%rhhR zz|Y&i&hWYv>N#!AIYM->VNz^d;2#2ciD3>$X34(`8Y1s>Vnu!mPvQ6) z8Ss=Bhq2n17_NJS1---rMPmKfNn|r6vwPUE+TK;AW<#GEQ`nQDPy^Kf zea0r#kntT8COT;t-qXW3nrLGAa%1VVrKn98hBx)rh00q~qwn!Js)r`WqE~QWSWB_N zJAp*XkT2ZxW3T^Zt7`&*Ke|>bb6UrB@zJXL@Te1kf85m9y=u?fYSa0enFL00dc5|j z_*hT%)nMeKAi*hd7AQkTg@r8yT^|OYVO)^uG;gH!-Wu`3&Xfb-bqzi0E;CL~>Lcl) z8W^8wq90P{5b5n5wxzD9W9iFwgjC0xjW5aOYZYrWZOYryV813pN@&jvr#3F7lkw0P&HA8)J}-VD=XoKcroyLo*uUf^0x^#gF`^Lv0|Kz=f+ISQ6ro{2Ju&lzRfxe(*R}h3VuGuCq(& zs?NaI9XU?($(6$94Ld0eln@Hd7MK8dG)-8R(A!nLrvNY7qU{XT{b_b{=%MLX2tiRK zEhM0^%H!GLRZc-o-Op273c>X|U7QEpEDBo~3*|A+K26cX1VALTE7un#^G%?e;cho% zH*#HdxM#Y~rg*zbt9I8t>&y0cf9Km48ooVWiflyTFwU*};FBGi~i@$Dt z)`vGgi_+>(6ja)V_B*u20`-FzVIDtt*<|n^4$pi2e!uG*N72G|9{AgO|8%2tLzrY_ z>RbOg?_7yh=)1vcD2tIK2{+C0X)SB{<1NK%Z_m#n-f||d_LXNXi;Vb20Cd1|$H3Hr;-g1{<>oE3pgEzk zkzXq;FiwcQXeQR%LqdYb&jFpVX5JvL2a-V4vWvRgCEIIRASVG zQdD@xQv_A_6nUQRrVL+N9SmieL#|^L@#bGA7In5VRYlWT;OKlM z3-$6iqvE8TP;g+(uu*6v{W?fOzfRBnjQ(W(b~nP?&VYV5YSmjN+e%9s3?X7+*~8bI zacrS0N5=NbB4=K<*YAK^RZgFED4~~Sn$;n6n+c)G$19>)@7oVeK)k7{_65ROVP4U} zJ5`v*EkMS=P;WAd7&8n@|A?6(X^vq>hBC&&+< zW;ul63NFk3pjB!gpM+P>eFMjAOSuQ?R4=O=;a&1Hqw0)N6ay$ig9!%A;l3&oUo4Y_ zIo0t8a-e7hE)MGrJ(|v!jTLlY5pE@B!Asv*0jgS4|I!K}?{M-3M!`@#FUqtFv+zv# zlgwzq1r-mlY4;Yi?qH)e-LW?kH=X5J}~V6pHJ!dwV)sa0f`QP2EYOU0207Q z9bHHSFaUrW{I6F4fQzlY5tE^rzP+OZ(|dbkD~G?mU}1E%wqpG2b$+ajG$aeM;EkUP zY+b`Nzh4N@9n(t>lXTD3C%N*cS)4_jQsJi!8b~giRuQ5hgxfTIXvid0lGC=BeXIR) z*KTCK3-~a47~fTe**o#B(ibVWQ`XLL)G8n9g6VsXwonVvd|nETa?r2@%QIwG`BHz`0M!9sx8?paU*|tulK8K@;hzw*Ej;}4AQ7g z>oC`rkm=Xi?oeN26WN$b6J%;)B6jf>#e!ds|0*@`(ey1Q@dq^G`P%_uqYojH zr#N2MzU=%(6ajd=U;nZg8GKrz%EnWp&p&1{$pKO`kL$E zx6f1ypkZ4yxUVE(Gq+RMAmeLvrtDjcJHJnEkJYpPUprqN6;;>vJ#+|2cL)qUq@;8^ zbcv)iLzf^OQqmv_gGhHHDP2RCG}4U-NJy8wbNhI|-ts)}de`^;`+aAvnK^Uz{{42W zeO+f?v3970jDWqkdixn>+q~ruWP#f{sK?9K)|tw!%!EOJo<=Jf72GT(kEaKSf2GOR>szy?~-QC5GsQ?rnCHdEq1D)E;cpTso@{ z)jJ}U#JOI{czcKVFunGk-XeBU(om`lvMg7Gs$GPqtE=I!WL<04m`OmUW=SzFP2ti=2 zS8tJzi67RkS%G~?tJEq5Egay3XDVt9n8pL*Pr8ALR;VpD9w!U(^(x*VH=S9NJ)|e6 z=Ee*6&^lYnt4V(;gN zH>=Di+TVGX4${Y6W9;1^2t3SjUNBqa+c9YEp4Ls-xUeUMOhZ?!1P42GeclDb=0xh# zqN-d)C~xNO7v36qp3uPM{@*pjtEthif%gG`h*$ss{_`&-``p#j&f=$D*fm^mnd>HM z*;iUZfEAy1;DK*u(wNB$YU_R{u!AZH--<+**DG2pq(5uN2spVjvv55f_Uxq8Y%YLwV~nz*+Z zW<9#}_CRW7!g)c1CQ=Jw#*wuQPFV>P;?9FHv2+DbO8sQ|Vso?`l_L*z21imc**FZB&8%e_PX z*8UUy86f-G_Z!{3@ORgRv)0LmC}7HC|w_dJC(m%RpoA9N27ey{ot+ ztn1ai!>maVXn93+)co+B|7AFkDf_FW@4Av}rZb3k#?Tj3o@VIJ)#$>LHB)t8V08o( z<8cM_e{rNhy7%>Up?~xt$H%3HwFWxqWG_J zz<^74>_#+$VWgy2N6{KYw{M4+Dh|@*1Q>3Y&4F{PXyQ%H{bq^JH&UXW_3~e|QzUnj zI1`Qzo}1Q&(O)`CR^3O5=7%5O105~DA6(LZzH_q{jun&>wkQ(p%2M4aJ``qrs6h%` zoqN(`ZIFChgZkczadwyFZCEhAQZ23dnL4hfi8^VveNRbkH%DuTjn!=-`6G{_P@MFl z%1uOC|2;H2^ywG`Q7Nen!GBsKRHor$pSiZJYGvr&BV9y%i47+DM}O2v$9 zXOMGLcSSG@V!nAMJ7%=;(nlF@fxSJU4s7?cx67f8-l$Hnh17!uC-*Pz0`m)B=ds=0 zPhY?vl^oXD6cROU@C@{~v%Y_*ZCR2d38o3nejR1j$2xF7E$P^5&mxZ6Sj%#p;Lx}_ zuJ^2wUM6C~SBz6ul;ndaSL}XK3dt8~VU;RX-W3ZMiL9_SPvk*s-3{W{x=vS>FTDA> zk9|>V#nsd?P<0cAMLIX*=RILry6ZE(d|A+(4>(rO#5sc>o8Fg9jpu^E8oR?jULSC9 zgkC8GAm=}cS5wu2`bjC7VwYnB2M@+1I zx}Xt`>xqW~lO=XUr83(LvlQ`KHj=^y_BoW)CKL!MJ)SGdsNX(N)17O8ASkI~JWF{{ zm~d@7IY;rglJy#I@-b;n0^-FhFpMNtG5M%+*N$Q02dmaeulv1B614A?L zmeG*oG2Vb)A;PGCQTe9=wEaGpgMc!8e2AZi_YsJ}8UI{g(qO*DpJcu=m-%6c*)<@o zveLXzK&hGFJU`a;6e3RL(-pbAJ34M<*_J{GyJ z?}ES2=}GBHFCBPcDiwH> zS5Pd%CfhJDsa)_4{E<@NMMTxjG(zg93%busgk}<#5kg2~OEPZ~cnvF4)??EiECG*W zJU%~oV)az$ePl6(PM%-qHw2AcbtY<(Im}^_KANwC`qRjXpZq*O<1v6clJc8thJxwY zqoZLk65*kBS?Zuhr-ZmT4juf_c^<|__HwA>gaz5$0(4=k=Gz5Fi~ig8A=BnL#}3M9 zcfBbTZWrv`4_jw{&+qEgnMnr4-8REbmL-mO` zg#%Wst{KE$74f0Z->$-Y9Aed9Q=!l^2`e}n&d@d>zfczMGPUdhD$gulP7}-xeH)N< zEg!tl?3!rtT?^K{jci!_9-^r|l0gJ%y$vsxORTu6aBrxPJ{}f+5w?iYi!;hbpgW|_ z(ibx(EHFds#l#|v{7Ao@3;|l2A_qbBjGDTGiMiylYaJ%3i6m~82e?k7P<7P0YKa?7b zsSdA>Yn3U5Uahv_HvZq>JS(04&)dsl z6FXs1nESNLbZ)4+!+Cm@-Y}Nhz|XnCpLu#EJ=t7ocG60`^0wkC)TtLu1-6b=Co zt`pa6R5ygP`QyKQba=6*dqyP2c-i)zNRu^2L{m`NV*&Q| zqN5D9tK>vua*-{C1`X&*tj4)3a#Z73l!-`1lDma1jIyDQO`alj1ZMbdhAS9nufHdB z#pFT!QSFI|syJ1tzY!*GL&vCuU@g6C2*Y}jN{d)k1~y(w0V>y?mNYY@h!$SL#cf&`iViP*Q$^JtZUb0T;R|-j zBbTaI$Ij;gP2wUb^2xMmh&oBtcGPKNXQmW}syS%Ex~LLu!UA&1>5SoE6)hxEcR1O@ zN!~ z*ldL!4=!afL+_Izp)x(5|9K$rH(<1ld*&?O2d%Xt2DVA~|2H-UH4|XIGQCR8=;FlL zg6=1Z_F9ch5aB?A|FL+jD3`woO{G^G-f`zi4JLTSJ{35HO*Z*c_8RrSd9?p7{Mm?k z{vU<*cY08ht2e99N8JYeuz@su4jt%WAUa#-=ST{l5Pf_CmbmEpINBH13tpmR}lV`lOOHWsEP8#okX>O&6aQnM>oh5V5uKKUyx_tjg2oTvKWr?)rwi)VEI^ z%iw;ZS+HEyG@JJMM2#7{N$g(>sag!ZHAP?d zA8&3-YE<@-u~;2vFB|$5HNFqOy3c<p6T72_jx0a`WxtRPC+analX#l;K}#zpjU zlJ5(gCiX&R8&bO5ZeOz9)8qMAW2nAIwyQj#PSGY$Pw7@KG0gtqpVxpNpX)XHKqdaG z!tjJbObi;6OI~BIbz1OQKgqgW=*;wHo@96m`wLBc4nd~OmgZ!3l4u0!L}4a6n=S)v#^p0)C$++)6VGXn_jT;bLS0H7`28B32s!{@*W&;YY%+r&bYUqBx$I=dX*}wZt*x*_Dm~XugeUtC<@{n>+V~X`t zbH%K=uS05}K!GLF*iWDMbbQt3*Nrv|)*~|L8ysi`g3~HkIk)5!mylHL{1>5A@7g|$5!(^f4wVYOe*rCRKPsrBvb)LPlogEmIk{g_p64CiBn|^@cQM^9V}yWv2}2QY%HW>OsDf_`OP4 z9ewGlaxSV$QBQ5;WHNd|mMBFek5y`Sy578TYp!DO;;{ghSS z%uN64!Q~FxXiaF#qgjnNlH9vH>H9eBZ2{VOW=u5&yp_-N-W|=Ye2pBRc9B;t!&*nh zm5-kjcT=w-9?4<2DKO*s3PDs%{x)D12QFx_+Pr1J=&RpNE>!^&FLb6)J51mdwYGz6 z{IgZ*G(U<4CyS6q-qr@mi_EI1lz(5g2T{NCD}t(>27f7!F6-PXPl!R@E`L2Nvr|lF zE4LsslF&<{(BneYYo=mD(reAQS8a3#39EgiF;#zECE7xUvA^%4ZK2*wV1X$o>s=5V z+=_PN$h1|ZlaBvckAG{8&Oli#vg^^wD+~sk4Mz|yqIy5j#T3_n%2yDI_N3KDM>N}B z%Xm~qDoqccV}+`sC@oOPXq&OI_0^dpYm>S<%R|2XIIMvf(rt>BvRJl^~*mznMZb*itHIO zQ}x2+G#Y;_(jC^1#4ejUkeD^R+;px!lQg)!-)BG{8sE!A8*vO;;?Q;G@p8@?Zo>Rx zr74)Hl(+eoZn0*FJmawt*+Mr9d!S+iW|^+Sw#(BWx3($Q!4_%8=-!)0Y!7qzg}SsD zyBlE%Ip}NW+F_*?ulvMx!$?Zg?P?c4z7UIi3+&S!_=?jU`Pn#YFNuI)9i5BT|E8k8 z*&2<3eQydXAZ*9TCQdUgjn!qiLen1syhNQ0Jrf8jF(O*JA^A_{`kNP1U{bhGR08f3 zCH&i5cegOr{D&{^?P$9K5;rdDa^tda@cf)zBzvW+K5n50o}_O8Z>oLJJEh(nhn;cZ zvL|?)-`L-ni)}(IBSle9P~VAm$;E~yXya0q`p)xSZg>jSO+`dT+fpz~W#4b};%;q9 za&to~W@480tHft;i7p$R)6lTTYGlvYpk)aA{#ip#KWC64h`)7jtPPJ*|GFQ|2*=Xk ziKeglcNWZ=Qg2Hj#UJ`{0;^ zKvO>ye^XFh6?|2&txD?mvd^>aoQBInFgA%21BMpdti82;rJQ5;R1z4TW6nAW^WtF3 z)e^aM*U@O{o8UG-^0b%E*gITN!90TOAN}Rl_;<&LKA^{T8$OHS*Z=_j-!tjpW^ZcY z0(Xl3ln9^>tCEw7xk2M|`8p>PL$SeZ#AdN+{=pt9E;RxW(=8~>7G2eTYtO2rbG3=pAL_&M!s=Y4n(4HmtMYjslJ)|- zqp(h@{H7yLuuwl?p6b1Bh9o>#@5Cba#`Atm!PB>O0+yJ8@5b;YZfwD+&H4Fu+sW28 zQX1id=m{^X$din|koO6Pw-vipFe|ML29pFREo}W*(Z`i1n64sj0FsMmBff@4OGK-- zyaT7)RP&qKCzR&}@>2J0Iiz$-YUn;T!Tt;)D%84XYMD)gLa=m3qlm-M!zfa)IvC}j zGdF}KsU(>?XxyA}GIh#8YIo+}W(m!xFRSfxv?duWQE9Yy0j`B_#3R)*@4q)$)rXXy zo+^BhzHFzx$v_^p+UI`&GL#I0<^iSndC&9y!+Qdlu!HRn~%xv4VL)v-ZP zgcQ3pnWJ85Jo?d7=EJL~kkO4~hk3)XEn`r1Ja3E6xN?KQ0`ntM?0w$UkM5tQCsMvo zKf6o_Z03B)=#SK6r&FVC1a}C-HOaqA259$k+YVl`0+$Xv06K!XqnVnEqZ2&b;^<=W zmtZ`|LPlWD0KlvKzkNl;tE&ca;r1*kU*qKLk94eNA?sufq#2m5MsB2O46Dk3f@F+} z@n}h1b6=8*uElbf7I_qbG17jHUB7Eg?eJGZvw_+Nh0!9JO?72aIm7vuL3|d%4G1Z? zJYD#d8x!jDq@i9;G7!aKRK;ci3)?obP<$XW#F?_|yyFqq*fV>p1fv|ny_^-+*+?Yc zYE!^YL(Dcf^76v$y28iL-k*=KXod($%RD7lr4By=%Sei5=4M)eYdYaoXU`zOErDe- z1KD=6Wo*|AEx&pbxOW8L%hMPhDg1BcZRzOXs%2to_j8Rly|s0mQzAv_jKJ>*7955F<1I` zE-QX^NdWm$yFRu?_u_Kr;u_s2a+;RxogmpYCXA^FNDANR# zmKxW5q^=Jit73&Fx>b=@6IU#NPowC-Oh!`*6qSU_$h5KtMa-nx*6_I8i3}dboT>p2 zg)hYISXwcw<7EW1y)Gi8R%RVNpDVO37ELh75wi-b>&FB3@QT6rAwfr;^dvGa6?4Um z=b_ON!g_lr?A-I>6*HAS*c23vokCunr1@1{hTCx?`*?B1ISTwF7Y+5Sl5>Gae}lwOo5!(trDhq=;yByUR4ud=)(^+ef?M@0t)28wLA(M3-7dt z;NwfgZBaOHpiqj@CU+iSjA8fOGIZnNFt6|m2hk(nHVFFdt!qS9JwWBc-@R%_m&o}* zo{I8vd>X--5Qw}?uo2?I5O&zwpYTBJVTDDErVA|#b%5lQHn`yJ$5K3>O#S1f3Vj)) ziw0K`?@-R@vu(16x9i7;1&|z%;{!(7F_qop|GYonz{-P*H~h|9dy0SlVFFSwEjyy8Qz=3*&+@6vQnRtc9}CP3gx9_W~D~sfb-@rp#5+6F`GVeV>N*{hr z1F9v~N576ArT&1nGtl;hiAyom0LKzR9P^exod2_3iaY>rHKLgqy8QG#k;OTjQBza)$xklrYN zpuqiRJS|m&c;;MzMppVM@G>|%HEuTueWcb7eA>ZgLiZKsl?|H>+44N9zZmmzY+1d9 z9A#g0Z!K>dd(m~-boUqn0>|5ix7Hts5$P2a(9Ub?SYE%{b1rHeA1PK@&*_hGzkcmz zVatSdnv8?)eZxIp-|_5YGrjVVQ6O;f3H;dIMwDu++9?~ zgNA0nr)2iGJxQ%p-@F#iJ|)I}$);>|NROf9=sHL{=lpM#jDW}vw?h8T*SLB~^A0F-|Kk5PYxH2;N$Z)M!<;hp%a_5a9(?dk7-{SW}CFGBp8 zDDj)@8OATBe{$UIh*qsxqcXh74srm1=r?rLRWZ^8NV`)B6LT?$IV{DNaR zzyUsFxC!`=3q$4?#jhL~Ge@oA9u5Wevf7ggz&%T1l^^(n+fxq?jgr7x_{=y+=br_m;Z(<^ZX6}@8J1e z@Ll8mH~3oe7x<1Tf0yB|(fXS~PWl(aA13Tw{GVI<-)Q(wN)7?=ZyWu)@Vnct-vmhD uU(Nrq3A>B`^L_do4FK3E{-gO{Z&x)%6u2n;WrN@WjNywpQROd-