From f49331d0670155897df12c307da6a75f4fd7438d Mon Sep 17 00:00:00 2001 From: mfnefd Date: Thu, 19 Dec 2024 16:15:12 +0400 Subject: [PATCH] =?UTF-8?q?add:=205=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- balakhonov_danila_lab_5/README.md | 37 +++++++++++++ balakhonov_danila_lab_5/program.py | 86 +++++++++++++++++++++++++++++ balakhonov_danila_lab_5/result.png | Bin 0 -> 53070 bytes 3 files changed, 123 insertions(+) create mode 100644 balakhonov_danila_lab_5/README.md create mode 100644 balakhonov_danila_lab_5/program.py create mode 100644 balakhonov_danila_lab_5/result.png diff --git a/balakhonov_danila_lab_5/README.md b/balakhonov_danila_lab_5/README.md new file mode 100644 index 0000000..c5536b5 --- /dev/null +++ b/balakhonov_danila_lab_5/README.md @@ -0,0 +1,37 @@ +# Лабораторная работа номер 5 + +> Здравствуйте меня зовут Балахонов Данила группа ПИбд-42 +> +> *— Балахонов Данила ПИбд-42* + +Видео лабораторной работы номер 5 доступно по этой [ссылке](https://drive.google.com/file/d/1gs_6PZ8SYj_p3IMrXD9AfiAWmiLt9T-g/view?usp=sharing). + +## Как запустить лабораторную работу номер 5? +### Необходимые компоненты для запуска лабораторной работы номер 5 +> Здесь рассказана установка необходимых компонентов для запуска лабораторной работы номер 5 под дистрибутив GNU/Linux **Ubuntu**. + +Для запуска лабораторной работы номер 5 необходимы такие компоненты: + - Python 3 + +Чтобы установить Python 3, введите такую команду: +``` bash +sudo apt update +sudo apt install python3 +``` +После этого будет установлена последняя версия Python. +### Запуск лабораторной работы номер 5 +Для запуска лабораторной работы номер 5 необходимо **склонировать** репозиторий в любую папку и **перейти на ветку** balakhonov_danila_lab_5. +Далее в папке с `program.py` нужно вызвать такую команду: +``` bash +python3 program.py +``` +Таким образом будет запущена программа по перемножению матриц. +## Какие технологии были использованы? +Для выполнения лабораторной работы номер 5 были использованы такие технологии, как: + - Python +## Что делает лабораторная работа номер 5? +Суть лабораторной работы номер 5 заключается в разработке приложения по параллельному перемножению двух квадратных матриц большого размера. +## Выводы лабораторной работы номер 5 +Пример выполнения программы на матрицах 100x100, 300x300, 500x500 можно увидеть на рисунке ниже. +![Результат выполнения программы](result.png) +Здесь прослеживается обратная зависимость между количеством потоков и временем выполнения. Чем больше потоков используется, тем меньше будет время подсчета результата. \ No newline at end of file diff --git a/balakhonov_danila_lab_5/program.py b/balakhonov_danila_lab_5/program.py new file mode 100644 index 0000000..8427e03 --- /dev/null +++ b/balakhonov_danila_lab_5/program.py @@ -0,0 +1,86 @@ +import random as rnd +import threading +import time +from multiprocessing import Pool + +MAX_SIZE = 500 + + +def generateSquareMatrix(size): + return [[rnd.randint(0, 100) for _ in range(size)] for _ in range(size)] + +# Функция для перемножения матриц +def matrixMultiply(matrix1, matrix2, start_i=0, end_i=None): + l1 = len(matrix1) + l2 = len(matrix2) + global result_matrix + result = result_matrix + end_i = end_i if end_i is not None else l1 + + for i in range(start_i, end_i): + for j in range(len(matrix2[0])): + for k in range(l2): + result[i][j] += matrix1[i - start_i][k] * matrix2[k][j] + + return result + +# Перемножение без использования потоков +def matrixMultiplyStandard(matrix1, matrix2): + return matrixMultiply(matrix1, matrix2) + +# Перемножение в отдельном потоке +def matrixMultiplySingleThread(args): + matrix1, matrix2, start_i, end_i = args + matrixMultiply(matrix1, matrix2, start_i, end_i) +# Параллельное перемножение +def matrixMultiplyWithThreads(matrix1, matrix2, thread_count): + l1 = len(matrix1) + l2 = len(matrix2) + + # Кол-во строк на последний поток, если деление по потокам будет неточным + last_rows_count = 0 + + if l1 % thread_count == 0: + rows_per_thread = l1 // thread_count + else: + rows_per_thread = l1 // thread_count + last_rows_count = l1 % thread_count + + for i in range(thread_count): + start_i = i * rows_per_thread + + if (i - 1) == thread_count and last_rows_count > 0: + end_i = start_i + last_rows_count + else: + end_i = start_i + rows_per_thread + + args = [] + args.append((matrix1[start_i:end_i], matrix2, start_i, end_i)) + with Pool(processes = thread_count) as pool: + pool.map(matrixMultiplySingleThread, args) + +result_matrix = [[0 for _ in range(MAX_SIZE)] for _ in range(MAX_SIZE)] + + +if __name__ == "__main__": + + sizes = [100, 300, 500] + num_threads = [1, 5, 8] + + for size in sizes: + matrix1 = generateSquareMatrix(size) + matrix2 = generateSquareMatrix(size) + + # Обычное перемножение + start_time = time.time() + matrixMultiplyStandard(matrix1, matrix2) + end_time = time.time() + print(f"Обычное перемножение.\t\tРазмер: {size}\t\t|\t {end_time - start_time}") + + # Перемножение в потоках + for threads in num_threads: + start_time = time.time() + matrixMultiplyWithThreads(matrix1, matrix2, threads) + end_time = time.time() + print(f"Параллельное перемножение.\tРазмер: {size}, {threads} потоков\t|\t {end_time - start_time}") + print("=" * 100) \ No newline at end of file diff --git a/balakhonov_danila_lab_5/result.png b/balakhonov_danila_lab_5/result.png new file mode 100644 index 0000000000000000000000000000000000000000..96f60469f0af5df38da2ec7e7f3df882d3e2628e GIT binary patch literal 53070 zcmb5V1yEb<*X|7zDYQtDQlLmF?u9^ccMDGOQrz7oNP$w^f=dbRh2jpy-HW@sdvZdb z=ly^0IWy;-@9Y^SJJ~y7&$_Q$e(PFysFI=-CI&GE0s;c2jI_840s^uz0s>;rb0qjD zH{Hhm@E1fU6)91Kvf;P8@Hfb2A_^i12tT7$u(WU|P7CsBlEtDtafd z#6jzv5t|Iym|F8S+FDtV*kAWef(S0yS=r?Wv67)QHw&8uTf}LEPjz|ZvG+$er)}CV zrQZg>4fci?^vAo(-Jz1FXiWDLuoAth*J#>=ZJ*Lc!5{DMVeD6h{O>8&3KQZ#r+&}4 z<^KI}1z{NX-&5}Y_gn2p+?Qb|hLd`IdT0pYJygTvu;Yu<5!mCzIqZHJ9|pY~abj2h zv;%Uy*tCm21H!g4TU$>JWEY+ap!S*O$2jWRA7_6(-lNxpmy4A;c zn7O-l67u0+h%#H<^fx{?YGc{k6}q9W4q#^n45i{k+w91ym>3KyaA~nfF|flNt-b?!0oVoN0Be@gf)W-m%**dv@}Z zy{78ombE3hK}NoGcpL~#Sfq-xgKp%X<-!*2Vqt53`bmp>;@z|J{a&W2`MuR>tk zB%pKZd&gFXyUmZVH9~{?2e*W#71mGNLJYU)&&N+D%3+vcn^Z0=xPk(Y*FfmS%}l(X zhfzjO0qA-Ly3LB4c=k~d_DBNqE#h>CBz+}+Sn~1|Xo5)`<;!~C@xe|yuUj8xm3s%^ zL9xbMe#{qgZ90KIY#PK48bIS5P9c<8Z*ALDlJC-6VXIfHeQy#T`mS1seB6e?w_|qY zzPIa{jQ+Kt%S<8Nn`GwCj;fq{?>qH2RU&&_ijJety_ z%t8{?Pq^C^?D_`^J&U^}Hvtt5W5Z(7(pXzh^Ie>Uo$Mf=ua_c)Qv)#?| zTJnF##drX|v20u|3J>yFUu)gmhYkaEl z4*)!}e#^InHJTbAA&w-?gb(^;Qxnl+_EPD&(T)Z4Dz~BtHIwvD--;Sai8clb&0D?K7{iW`93C?x@Mj zV31x#l}KSKwlJSE^bHZ`cM`n!6w7-|JQjo%t^*Zw&+Hyn<<{>83}8HZ52yPjRljaP z?sq$>AlY-p0Jt_AahAQkF052HG9PLa9Z|Pf?`jX39&ZeC2S-5d!}Ixk8}}cQb)Scv z0AcDwfz?3O5B?dyh2eM&NzW^-n%Ikxix6+_P;~H_+`J=;6}NSBIER)d`lT|A&`o*#`Rk%fl3TDYUxj z?66g_rTPEqFc2l%~?dx=u36&mNdf4s&0c{_~kP?=npevbwShdsTd_6A& zIF-)_HtSy-+;&ecT|-v}E~oxR_rhGsyYV{3@wx}JdrEXxkc~$+XFEEm(jwWeb;nTu z!K`m22ixjp(R2uLT5fiLo=_Z%EdL*a$EKeQiwR2_id(KX{pq=31v9oSD?(;qF5vrJ zmcTt_USfKzVZ*dAUVLo3 zKy0}sG=S--e97AY!qSmt6H%6etA0guySH}B+|9QF@sdxCU*47|)>h?^i{xcZhG#lq zC@SG}oi`VMaxQti-s)n4=|vdBcF^YbatT+-VeQM0OPMjsm*=pg%-gXA;4aLw4cJWJ z3S0dMyJz*S8>*QBH7`Co9<@%`XZa>H*f&d`SxB!?%Si3H5(PQ&DCxr+CD94oa#>Zs z1)|!ISt6Gq8H*+yRA7CWCx1-9?Pd9-^7FaXZewfx$z~K!x>Tz!jNGd*TnIzKkmn?u zUVRvSFGxEj_&2*glvLHwaS^bFcM(f_Spl_8aA|?vtC{W{gQ!pr!sL}%nl>qr2hASO z4a&-)HfP11IDMb2-;Ic_6e{ON%~MtM@6yKzS?n2mr-mH~5elkSpPCKjytVB}F24d$ z6JdT|hN7$gXnn|E)?PvT0PiC=ZqVH**x5imk+QSrp=xN=Mv=0N&&|^0a*KC4O(E3y z-XOzUQV-|DB_F7jDG@Qww@4XuVKmdA3Qmu7=WrA4{=8y%KIf!5Jf1(I-Sdo~ z%iR5{TkXbu&!RYvg(h4|b8&j&LbK3t(r4<^(!ND9cZ2tNINt7;G9Tuz-S*)A0TIzS z%?@u|nM3_uZ(WyEgB;m@r*@<@edcJ?%asRZz?MNRYdId~>CW93;0R?4@9Wx&+E#Zj zncD8=(t4mK-v(#*Oh|b=DmKA>pwHtG?j938c00<5DSjy?A8e)^#?mOZiPVpFvk?Lt zfdm5t^HSgn z*Jgavj2A3)$KfOpD~>(x1(9}0?5u@(CQqbwy5eGtXJHOaeo8!Gh7t7DUE^D<-;@`` z`)(V2vau|}SU``3!aUB98Mf~xVXdKBLW@%W~;L#71&7j_Y60=9uG4A(OQ zX{@9J`9e2Q8^GL+?ND6KU8;nK3&K_jJidg&3jn&#GmdM!ob5zbvzB7=-`vA0-$6jk&idRxMT?lM6gYA3QxW&-L@Z;FjxuiU z`ROLjivz3;gM%pQ=r}H3JXIsSo^Vni%;S4YTAX-(uq)KXpoLvB}VB+uRu2 zfGEPRcigN0r1q~dqHXrQjGVn^>$rSJqPC>l>o{;PgD-DZNcDa4dsRn;!V*4@9Awo6 zR|*ilzWz2mJYMCe;2XkYKsAq?W#bs^@t2QC6idwA$z&GPmGJ@}-(XB`E)H#}sYY z1Jle`mT{78B|vV~&A1<12X2}A4r=6ael6@ud;KYZ5fiDocl&YqAzwfCB5?U(X}J|z z^)N7!+y2;5m7cq-$@BQ$WqqNxl`)^x_vT&}I&lo@g9L&e&;VDk(rG)`r)Dg5t_Zh> zks5l#IbIK#nen%qY&QGEK;l+H3-cn)jcJ{@y1`@_o|ru5j&;tR%72wNZI8e3K~-IxvW8Lg$aFO zq(c+(5XDE`)GweSMPVNG&8f&VZmTk6*XQmYoPT}A+Ui~Zd89Q$E;nDs7$6NzDYZ$M zNOb`(a55~TD8N{&@eX>5D?6SK2`xO<-X8CUw%fsOn^MT{H?i3#=uxnTi$(H9O!;S9 zOd6(JeA%1kUeHXi`JRug9tViNkkzO6Fp$Q`3^E-L;Y3y64{TCVdJ-UK>)q^8B5P~8 z5x#tBQm{*bh;?>zy1V;=b}a4gPziZl|2~(^je|V#;E{Bohx-YCJ#NKIVDL^(^(c;J zMs44>sL0nce#Z%|DoA9&k+MoZd)%!+0Gn}TF%CACM*c+R!%e@42Rr-k&Z8}-AKrVr zEIdM;Vmv+@BVBi)@oz3&XL5v%t|a#5yK!7_6G!lZ?7_U9JK4=YZ|a$l{l9;4Kaqcs z8IFApsfrkxo`eN8fBaZ0gb%A4D2h(m>(tB7GjaD!&~#)VjVr@EM}Gi1vibU+TJiHa zUxXRl>s3O795S82f+kUPkngt#AW(C9dh6Ymj?usn{@_*XgM+&BwZ3CL+EW4lv`7uKqM?H{z0O zhlZ=}P#yR@yX^{If^8>|k{^j!A-|EGze|r+&3@Rr z1pUpAB&XHa#5Jg#*v*7y5P{*okm69JTZtK}TIT(%87Q;+(eC!@8oDb5>Z+xB*gm^1 zc~2PtAIs8-k&B>ID7j?6Be>-xI2roBrOl}j!Zg(1Tt%GkU>Mor#^LjGqtyfhFkjp@ zm|@^w#2KmG_i={LKAa;vi+C)cY{IqEH1g$1I#c^%?&*VBkm1kas?r)01gae>ExbPY zHAl!I-KV|!!c+Wluj{V7^)oRxPj7V=m&`UWYH!xkU8d8PwZ2D&dt?l~comqUILn>z zQ?K@Ldpt*m!v&Yu;#&wB3Ne0O6_uFt_)E|<)R6*6({fb8C?(P1)`wm;sw>{-o$@(l zA>8?)fgi)CE5LTu@w1r>sa3l#VSZ2a=^ATD)}8%KVV~Ccj0Z0LJ1wSdf}7BXk=i9_ z*G%t3^u&8_-@tD>ZlD;w;A@ScGW-;%s?g(H6b!q3(`cNBuDlr1jDC1gplr=_ZZ}sAA*}j#aa<=O6{Nqm+N^| zYS#6*SU;IiETTJ;&l=cbw+{AsFaUK1?lpule6J6HHA9B{&3^sp^RCbtOAmbX^$kkZ zNhpAB)6*`zU$bS99CTK->^1VfrB(OQ$7GsHFnEo1iiW&-r}x*F7nynaZ=GKs*eFhS zo@w$J@Z4CcwXJJ}t8ZG9%PUY*Ta4}>IfexZrr$OOk?(h6Q?1U+;W7v+)S@=Wk5xRM z3ampnE3A;LzXQwf`(8vGU+F`&8ak=oEeNwdEtO6(&##)&^2asGuMmm5EubuEL2(wI zKTy;c-0{9=2K{aLILTKkv^}e6t+&mfo0yE3BZ{|Nz?|bOO`u8mB6~0QFgH&`GvoQ1 zQ%W=OK};8{ujzrY*2-k?8JRgxGW&90{C52-ya|~T^WHOKiz>eOtH(F{xR0AkM~=uF z+0@&{g5krp=G}Q8?!Sa_5q6o8XfGX40l-VnXvu+Vm&^xD^fO^<$uL&+)cB;=#&+w6W zfLjx-w=+GU8$vK{H++E~CgBApV~xa<;PD(&9)7+)^TzFH3pT|l-hz%~;9Hg$B4J1@ zetoT4IJD11U}@iaa#74!J-C(E3Imo$0Q;X`h!P9r>}}-x565OvVRX6I_u{(<6HlJ- zkKh#PG2XJfX>|t}tL)hM-tr0@3g07i_sviP(t|Ehob*PyH6S+=npiEw1SfT& zABxk+wDSyo4=XkuNyq%0ktirgh{$u!#mBK?+oES zCG`^1o-74C`tUUfTs-JNkjZ@YzpaUEIMj+@w)#hbwJz&BiJfSBm2@(E1=60Q?7qK2 zwUcm?tUI~`Ex6xPHu4Rbwn4F@a3Jc*8LI2uFZpwt#SB&MNg{j4z$bU#UH)~~)E&UR zT9~o2j`(lGiQ3%!4CD`f7jx~wS-#^PX=?K<`@!Ey$NU;H-qd}17sD4>w4%j2ELML1g=%EZBIkl4-q&*&Sw zX5D~$au@{rydB*Q9iS;c=tF$ASlR6WE)p6NeQGLYNR^rfp&E8BN0>)frOu*2LF{*5IPUX?Y=kJpdc7{j>C1p~VqDAtcQ+6$XwE5<=8 zYJFOj13wlvpZB8F^PbX;o6UAX+J8Q7>PBgH4y@kfxciLNZFZ;SqCd^2G-fj74>oDb z(Y_BMZpZO2%*}RZ7KVfO#SdV~X>Wd*6}v(oN$ld{}%v9*!38CZT)jd2NIxHtRd69)>M*jf_>$TWU$PtM?7-r>J z`5_-z`Rgk^#1?qHzn?zT3S$+5o(er&4O+R#dG5q%hv!_&J~F?FL02_i>;vUW-ffde%C4eVPu? zI+^kZJJ@9aFHAE>Yo8tjU$04%X;cCq&CVHQTD5cSe&m%6cSO-V&8%lawjwfI9OyUG z#mm}RtkxLrUd_alBMVlF0+$-FGa;}h?5H*`e*Iz>1mn|FLP6Qjx|_H#@6Dd`T^u-( zwTeFq5PyuZfOeaiii9$Hx^8a6uI5$RE=HWDs~Wd%IClU_-T9vTdo#}d+2xrRn)iFe zN#k1vk+m-{Sm{RYMb~V);si@R6ljxw-!sl;csX`UrCe~%qwk8Uxpen#8Ev8Jsa#esGn$&ek1D2z5NEd%L6?EyTlXBjCejm&Rqg z8XB;;GM4OVC#dDMyjk_<7VMBl?UHk|^I&7Dqp5JYTBe#>b)oPWH)Quvnjy*Ft|ntF+-59Q5FkG7Ukv6X+luOpAbeur>@APX?R zmMjb6u=@d&K;Mwe+Z$F~3EOd2Q7*4A`uk{h_h?~@+vZck`*IlmTgkU2m zo4&Ni7uIZ1#aF`J4lLq}oKD?h!aAzPboQOEu{L6?GQ#((A9w-dC?fYg`$c zh|}sTBI8e1S<#js!dVIXGY7wN6FZAuGYwf^zy0v7tu}m>X^a3PSte(0uah*N%S`5E zXvW~aPssQD0(NFRoPV})^j@w++^_b|7^`MD`WjJios}3Js^?o`v6pXfKLL8!TF%Q~ z^i5M$>(fm ze)&G+QtzA;Vn+`QG~IK9LPNS)5`|`=wHJ8Vh{P?Yiv~%x+btjNAji-s&^@H}PMz|k zY7zEn*!QcNZ-jDhMcX~Z;PGYzYH{Rt!BgS;Y>`kxm?h5_W^iGq0=it!gnqfx>Ce%S zAl+fg4IG_SO}ccj!BR=T3SkA++;0Z(lV~!YZc}Cz2;I-47@hy(=eWLR_P3i+#xmiQ zRk^Dhs7iJM`_k;`+^y;fu&1YrCXaJy?=QoS@;R=s&L9S%_`|g5&*2^X<@jfK2QM9t zEtm9pO1q1#pJ!#uKJ?Y-(F*7By$_Ry)#jxf^&FU$_zy zfp~7xs6{+j@^;?x{NUx1lR*{G+KBqnobG!8&bZuKEm&8ud!JM2GSHe%80ugYcc$PjqXuBoc~0lEnRh^YIrm z!;#%Nk@Uy4kt^ygbbv+=fXY|f|O>vRqMcT*7wvmGqG^Xif(o+Ua1B7 zRHF_r6nXHO$0u?zE}@icmXDFUngk_cWyho+kC=wYx42viaSX_P`R9F=$iGFw75q>O zyPknP7_@eo1!TgO?MNTbXJ~JDaS#yrrB|5zJ^ib4{Hk)4x*b-#6Ye`B_~fFIfPAw#cBQtwS>HLJIaHpmp9Y~;uAu5y z$=e@GN5qFBDH(c;`=_}RF0sjrMBiGo*VSkKARw#=iVdrrRay`F{h9ex@6~&OU;k}`b%fN5f{`Q_&7B};=LLAee=#< zzi)#Ao8c0`uZ;Yhu4aQF<7O?|R4-iq7LQ0tX$kO)Wj7-r#sS1is2eLWi@X9xcLL`v zMLU5OGpfpjgqpydP)F5=)*mIg`9scyOXj1C-rWL=#n}xRR|Yy~AfovI-juOZc9;c; zF&3hTZRzLQ1U)qK5v*%hgTgIh@%HBp3BhM{Il(vCm%CpW@T49Okez>`3V3t!yMudK z-zsb7+&5aHNGwiVt|G~4AG_~SLXJ}Q-ulckDTtNH7Lai@QMLC3t~(SLZsnXkWws++ z2$NkrExEg&*9Z$&(-wUcXg_aej2V>4>w1la+G(U+*?~UHD>pgN6)51;^$s_MAfq*^18ND4Fhz8)d7; z>w-q#VnZK-N5!tGq*ZCL5?SkRyl@YAhNl&)fMA=)AysetDAohi?pE3`z1Jv`gc z)>o70E!;uudx!Tf7IRCxeL7eE8|fO<^(4k89#x7>-W!OYV~B5pXZhN$FgQY0y<1u8 zmLqEVGQM^%p7HhMf!8ieA^PbB>9Tpc(?}PuSfv&?SUv$q=8MlNHM$_#+o*fxbNT7X zg3kBx2mHojXDx$#a&Ln}09-^Whx_K9;<1x}vQtCqWUL6sSDCf3j1%XjW!g1T^(PoR z`zw)%W`$o#3a_kVqQ+}s?!&Pu`)qnhz8o0okB?iT>s3KR!@_xE05+yPF2%0n)7yEZ z{Ek;a5jvl34H^i>V!V~Nn2R0ocIoKCyoodVl+SQ!xmGNKsVe#59g;<47={>Uy7^?TG||->LIJl$I^pRcvetc2EHt{8F=-D2Po>) zXnh3wHeBoe;m65o&4>x56z#t34{QVC2jytgS8J;u@|{c{lQ3i>3U2_Ta@S|N7w;ie zGb(;tk84$U9_e1${V1Gb?|F@T_uTle?-!g<%s3XbR7jS@pR>xGoPHKM>OKfFO-)>- zhIS7Ovo)C8G3~h!7WF4{NYG>}lIhDKs*62LwRld*eab5+wyDdWV~I88k(*p}0Ox0v z6;qCjNNy9bRr~XOJ(8}P@n4ZF5*Sk3u|dN9PL1yH7BjNeQH}stPV%d}eTA&m6fW_( zowD~U(l zN5c5iGOEtJ$6q7pJR5#d6%)q$#lADwKvZ~XFII9ARl)s0`Q6#su_`}x6?YeH6w^d+V|i2TbD5{fs5YNItO7FgIOf+wWaO`X%`BV%S6k9t z8)*O|TN*X(rRKf5HlHCdUx{fJ$80#7EghLCJ1*}wJI%L#J~31_UPD3gYYf;_`wBb2i`6Vos0}|r4V)dr-(IBN^a=Or}0)gx+;e-iAGQ!i3B;cDqb%O zmNe`gU#!bM9Q(3~KX{&?+CS)-1>?5Z7sYzaN^w86O|+s}(OA1e!i~myv4ZN2Q$(a} zdvhfxH|Mc@Lzz1QO1@t*OfBx$K>%_HWZP6mgPHCw4)}vef8ghXf121w$zIW_-RFH1 z@{O&xVy{Bpie-NdN~F4R?-jJ|DX=lxRd9=L5^#~;3#7<5{xg0gzG9lc& znmR?}H7oy!$Gg%Vj8RZOcg`($J9rY88zIK4l4V}l5tlo}V#oOApdifiwgK=+7|T(% z@ahz&N?+oj`&E#Fq#yQJ4H$Df%sfpzm_Usy=76cM=T}}Dkq`efAP|LrXj~lC1g;ut z>k(WcqWXl#D6)|viQF*DPag$s=8%5P%9I6F?>A_F=2*yFb z-w?K>V%<{r6qkxxc{6$njKr?)BRahci>%oA*;NziPOGu)mselsWzHqi9*a;UKxft? zoAqq6Qf9Q{=`xK)qt?8lX8@Okm1>N>*wzoSxZeDAmenZgv{LYhv?-fOK62T3oWa3W zpq5kTq=Cs%YxIuuPvKC$p+B1DH#F zlxZ(!i$}1F4ae-s`_L+;C~Er*`?$|RfpN1U+dc*Z-{xRar2i|eV|YL%p3Lz0RGClW zSj=6fsRyN4W%9!FwnLmPrk|?uCFD~D6J_Qv5D#xB=FtJW{bdJj!e3rbfH2Tr_O3_| z(ub59Vc6p}&sEow+Y{eBe6idJGV4HIl@SxhX9-ilinG$3fcQTETl8$~HSeV&jMZ4^ z-m&)VZu;l%k+#Z%XuURR`|}>3~~yn_2e#-fTvu< z5O*zwOdxNhX>d0e9pSs?q!)h&;9z*V0Lm+3h&nn^iBW$Koy-seYa4NTYjwJZy%#rGElM-#M0-4~)p4WqgR(Zc zqq$kA>su5xxGGo;&mf(ubcQ@;p;3yrI0kMU1{5+y%|L_&g%zfRSNex9yzX~rNRL<> zroY*|3LElSV&~wU?|t~qpKP$Iz}c5VJQaHB7GD1Bu;QD^brm)juf?1btH+tL@d?I8 z@Q-J>Jf>-w%^<*Rw4ob8=`lolu@WsNN>1?%|~;;h@5Wy41jdH zL=nXgRRVSxUb)~t>u>}=DAVn*V3d79tQ9q^Rx6k>6Wqz~D+fxgc)n3Nv@-X6xgRfN z5*c=~zO$nyja!bIQSv#r9lqY9um|&hRlo08YBA;&m1&qW<>!|MZn|D!k111*ep>J3 zsCvgylx-@VHX++W_kcv?sQ>k23^V{kI&j}mYx?u;#7m~WcwH{UI+K8O>h_C)#R03u z;k7ZP<9QCY7U}zT+)tHQcHbbyigEJMjzU zhO*F5VQwlLdu4MIza7(Lx;zZ{f*CeW<{a6=pU^{v%qthL7O)m5?$T=7yk3ZA%=(co z)x=`uXyh&cSsj%l#t{1jhn#^xWKX(DbGo3c^77n%IbU|(Zho>Gctgr!zT88=N2!`n z&Cc`phExa|w_LJ#e_pNH^aCl<$`PVjpVTL~C4SiB4E~BZv47Ge6|gAuoN?2c)k{*> zRHu4Yirzg`VeD7z$M1fCPjyY-&cq}4nd&D#3zcxgM;4py(QCjXwFQzHy7yH0I+MS4 zRz|@>2{OVYb_&@||6k5>BjA>+#bV+@Xu%!5XwyV};;_2nHmwGi&p#1Q68!SeTG*e; z8r$?xhQ~{vg<<-YBLf6Z5)jSM5fF|T{<0PvoeC|YpnH;`x*o}IPTnv;}F+!@Go7Pj!ZifL!cKI}knpq5pp~x=J%=*MO zEm`HbN!FI8tr=9CcRi3zKeE1Uy{_4sJQT!444$6cl31fjHgrEpgPi2NqxkNpOE>sC zNv~P6vpCRDkZ`N>>`Hkx6gdm4+Y#)kb9HIbfMJI27lOqjC!;x<^!UZ4yyv(Qdi9L> z&}-?3;VAZLg_rR0*#Te682^tip^7@^XZ;u6`{A~sBRT-C1A>Cck1;E#epPCcq*KsG ziAk%E1}B+M2$e%|7|-xgpuCNjNA&bF=<+-`KGUZi>2#BXUdWKE?`}L&+~`>L`#v2q zaQX^u{IpImEfM57vC{FKQnypXK>V%2+wqOqRi;}``BG;{!Sa&3ATumYS?h+4-@6}a zNzgLe8i|d^1o-W1%jXJZWN z0UP!4wMX8NDikD3eC1}17a7NTp~i~r%r*9GZ_X@n6z#7_TdAd5*V{9A^aX*z{?ebK zg)wh%cSFc(-+#SwER#VX9bc+$${eg7s^3CSn7I65dryXWJZ$tBhw&@hBKc)q!@m$# ze^p&4v>Oj+x6HQh)(UX@w^+y!(S%PST47j1#mRJM#BhG{q(A_FrfhzE>NNjd6sbf( zaQ$J1xqz};Zj4Q6T#o;F0>kNra-2A#FoC5r_!p;9$S?JYdl&q^J?r2bM^$upP8?&5 z`Su#!0Tk`TTkbXJm0Rq*Ox~ww+u0lG+ZDw02BD}td7`|B6ujvh;AnC1tIz%J*(X9J zj+i9*Mb9CTXJ(U1(a(!682-hwYP7<4iju)nS-QP+-%Vs6G188xzOS~T9<2_o_jix zm7c3S&ZU~>GfAb4pcKTLp8GEl&8|+>yiHe-3b;(ACnKu`=iIVa`N|)&lf6P86(0Q~ zKdH4Qw3}=7scaL;TILDXrsE%fHTbYhu<>fm)V}D?{_Itpb5G-sd#^(jG=@&tvA(O7 zpdb)ImekAcZE+&C>h(zw)0jv%BMj>7e5H*c-~6gs$J>>%+-X;xrGSWdmeNXxgmU57 zN{1GXAQrt%sP0AL!B6u1Lp_`1GiH6x-t>FtptNR%G>K4juz`5KnwGnuI~4o8;(CT z0gJy^ejPz7XZ*8jEP=mb@~b-~$v&2AM3{nwWD+TJ)xmCfIGo}|*?IsU8HoOJ&ijuf|bVbYd-Z%lSr?VML zXi5k5HCt{5;3~0yeJNEd+A2x9sEKM?m6KI6)5ci8!+3OEpoz`WhlZ43`~-9l(uM(x zm5xlY7RAeJf5SP0ah;s}@ngR0U!WtQfdgIXVfytl_A;YbCLQJH0zbeVP>g5b>O zMkR7#G4d;%6_cxsu8CMRm8k${W*1W^*Yd z`_b`Z5B$q`n1!@YjQ7g{&Ukw^BF&al0og*gfQ;2@`_Gckcq)v;qk~K*Ud8sLx1erq zDuLh1rDjPAAXHKlNd>MmdmV#YUAE(2@}>4aKba}mt8UOwJ9d{X#d2^it5M6H8f5%z zSsXc!bGl9^Qx$@4)fCQWg-CqUJths^=SE=^e)cGYx3(I?RlYBgN1N)FRnR&oq&0VN z=5G~9+OQUp-QXAQR^}1!>gY&u=_7TaX4z!gWL@c#JM+%!Vohb&gn5u=dnajPCD)?D zUP`&he*~iz%+feco`Fh+&zRB8dI0HwAY}1g^2h;>j-H2p*l=$x3M%?RjBLz7R4%;d zBZ|UJcoa=j!vB5YUcY?d8!)xd?>!x6j!j+WLYeebFm>fyDdp5Wd13sFkj)9<=KMjd z@&sc2FiO$`A1Tah$E)Jk_>X;60*Tw%ac|SprQK)_oy4A~czwDYQNK8v>6QdO20kyt zFnTrKKpJHMBihOO=e`!bMJ-fhc)3Yv2b*~IPr?&WYoX_I2aNC*<-}gVpLvN?BwQwq3`mYsn6L~iR-dW6>D*oSQ82I2zs-}O@orvU4wbipNd)#?pdD><7gu7pW?>LR-PvKTE$?T;AU`hP$ zG`Ia}l=1*1p=X_^U(R5M!>PGo&^pSSZtwpCMj~VOPd)Kb%CRZxjvY>Xj7KjbV}G4o zWApr~5+7hdvQ)d&PG`FvTcwY$Sm4V5QvW4Ha%~yQcp!zyRKZR`2jClDj4#8-CH&ed z{H*pS<#Gk~T7et*@E*f0M_|hFebh(oiZ?o3@6d;IH|~~T=}+9Jk*QRDcS>^Lh@j3q z|3A3=8!s$Yb^WmgMWBeX;X(#dtFeT^I{D_Xx6tELbSXJ2>l{4F9ML za;%-E@!m~f{X9)RsT8+NR%x<0k%Z5RWSEi2Y?2a1pOjvpRhF}I^Xj%z1j6&asE14v z>A(AlAd_c`Dj zX$im`<+%%4{Bt88jdx`sZBweN6vbIC z5+dqO!Hezw$u2(=MuIsq4+p(97k%?W_@u>%oz1cb3+Hx{mC~f;O1?z{;-y}lRLBCDWFed%N2v{8 zunubB;uGRC>%G}^3pe>TIxqcOQ3&N}4Yu$;pL`!DTp4n~9E&DcMMZZ^el{Fyu0?n_ zvrrje8K31@N<$;WyKo;#_$M^Jn)eot!Dz?|Lh*STCVt7@-0Oy9C z+ER=Is!=`aY%;A-KTa62Lrv>Z5pKfIJGvE$k~u=x9M}CwNbyAT!mcG;LG{9OmE!6R zyf$|HBcPQ(Bq$)OM)zS_CzZ%qpseV)5}Cv|)HrXs3yXp&Eets-gsJDw;5~}AGzK$U zUoI!=K+QHe7tHIg{n#)3q9X4#il=B}?LH5^DIk5?MQ5*BFE@-^CvZ~H_P9n7+`%4p?v8{{y%GUSc$(2RD+YHTt#nzzwe_ z#$Cw%&&EABICwuXD*X8Wxm~X`zZLvj2_n3PAZC4%ARCKVHU>0qw z%nH+Oq5h#9C$icX*^ zTAVy8IFT<*mFFjrjB`3tUHtJnIWwsbrOD!X9}T=z1;j9g;716LfnWbd8a0+fJITco z`=jIjLH`aDDOmQLX*szYZWk7vW2m7Hj~_lk?4{-L#7gm1RVpDCN^>a>^NPiyq3QT! z*cFAtE44T8G0U-nXB%ZcYrJr8%qkoTYeIbmHxd$%iwZkbm3Kt5td!S@F!Pukh>XM#b)C5KhpoKKVrWidaNg_b~Y_?2bLu(z4}N?YoP z;auAkQM^F&`Xs+Sap-FY0NDzG;wu~@Dw9e1SglP#{8yw) z*?9HI647UjNHvU?K!Oxo`vX4?cv2QE2Qi3(>^)n3mR;h1=?c+Bf z>P5(XPV{z*w~}TrkSFP~JxgEnFE`@$r5S5muYP9RFyTmBDaoy*KCE`HFpEqaiSu}m z`x;(;kdRL8x$p#G%19WZbB*BZxcVBN8U7!R4T6(4%aGMYj}nlI|1=VFoQwKL_zs)` z{ljN~c+Go)+0X0ewHkJ9#J@Jztrk7D=4Pn!Gx^-K#!fBEM&2QfM;iraOP_DbQ4L_v zn~DfnVs}-;qqWaoyNDO@ey7YSEOjD>^WL}L4dG))>BxVX~q$;CPzqoTgM7spR_2LXaV1-wLgzyqFm9eKJF7I z9Qs%q-m&xb#p>xrNq=63AC|l^Q48P(aw5Q#iCX!RWkkY&i`R=8C2#55jPQSBS#?UQ z)NDM<+sz!C^ryV|y9tzYwa}MOGOduS{BWN=yJg}Y+WKm;LG|~#U=tXr=;V>J$g@=O zAOCSpki)1@>HmOPt`GQfxNGo)tX%{rsdoKo9{wjDU(D_Zr{m#G*!oi0PyhLHIEppD zF0jXMMQVuZ*GCK3n-UZk^QZ=S(kUEckIimTmPXzmoF_1E+A8cY2_%-q>>zs7Nr~ol zO&O|Y98nMqd?vGI(;&tNyyN%_t}@0((1>OZ%gI{sNmIO&*69?BUA*J3(LH!cl5wBO z1i3`;Q{+b?jxC7I*!~+dhX9bj!(S6gshyeHftqVR|B0uBrVA14z-#o~MI0L%cTW+K#SG zp=@#TQyK*u2mE`U%Ck;l6Y^rA9>+Ra|XeiMK#<@~}H{z6d5Q z0bDCoDy+bS;f)S!M_lavRinDngg#dy4Z`U7ymw-PsUpg6ZZI$qg#I_mRnPekAv}I z_k0pnA0$F2(T)zOG>OmotUGmoU93%Yj25#{$Tsq0_DT42q`p(8>Oe$6@ynb`qt+k# zl7V88nlOC5|DK1xWbtJyst=Q?cg=@n1Q+$7o>I09I^AQhs<*ncfT8C{6XmXlfRi;G zL1P}O7&3l~=ifT6EBJ|1XekrD8|Q+`x$24g3Url3GnOcunNLl#Ln`40D9Ih%099A& zr+_3g+PFvPLCBEd$pGB(29Ckf(-3y^5E1(0u`;++B%JPMG zAX%C>5&tE)x|reaL8gkAqtOFhgA4udrs_$!4L)5e*Y69fG|vIE+cghwE2*H^`;zkIOujbRcnqv;dXRlhm2!wOlR*^xJ}P_DT|HqjMWU6f;tlRxGMXbl+!ERY6G^OO4%#qvYHk`4JjLGfgZ z^0D#CNq+NIvu&ccHKP{}^nmD386C--SoLmFI)H6I;{vahXZMBKU90~WZ*Lh;)!ue{ z(;%G^64FRF(%sz+qI4?VDIne5ozh5ygmkAgNC^T03J3_kb1l^E4)1+G=Q-!)10RHq zo4;$WImb1|Z(L(e`RfG9HI{<>SJpP4qJ5mpkFXnc8~nYhCZyR`nddHsu-f#!5Jnz{ zDLfl?I}Nl*_Fi76T~PP3U^x^kt!V6c;<;fS{BFRVDb)XNDr>v1Aj%Wtxc(v|Jrsy| zm9*OY=2B0oW?FZ)Es;z9bbFLtE&rMGg2XaS-<$lV7oG@nYomcinis<_`W*Jg<#>B` zHQr4AMh~9^sy%gVBo0OzG}R_(M7qoUkwRk>k3(jaEW3rKF?8!t^-B-V%8j34R^;ob zhxrmSN@e)74}1m*an~g^lRc#{$ENN(S529C`A{o%Iumd}6=Zs^%_J~SiBzm(j0Z)_6p?(3`nLve(5?77DGsL?57$bXL=^j?VNMDsbzBMBtOnYO;&SzJNG}hju5|Y=6;l(4rY)~OQuaYu4 zRHfGjwHJDwB7)P!vDy9vFRJ2dfYZ@$E*yQ>#xXqOkgRC7hz<5lNL^1Tg0!d`HY8e^ zSa&YFPDZzy^?D#T*oJ)~bQ(6!D)!!n;&D+H6liX6=>O6VA@VPp_$!Ug6-PsPHUVX^ zL0Jg!dfGwUK(tu@MHRQCo4k)|>hF;;<|8=c;lm?QsPDCkskH}&AAga?_Z8y=77bn0 zLk6|Hu%Du991QVH+M}#kW+A=^ed@HZ;+lEES6$GFXra3{Hp)|!fX5s2Y}%^wo^1jX z%1j2O@OC*-ZIRP!L|LBh5SYO!z&Z7_225oq^hXK_Y+QnAO|hMHYX!|g9wJ-8u&*Wi zyvkJ6kW{x4(#5ZRdj17mj(%_rNThOw*MY8SQA@pFvEVKJ`H$b^mID)8~cSi=48#_ z75uD_%g_~k-#iU_MEw)WS)Z(n0oB;fkq!z(J0@xxnt|i}0YKkv<|bZ3_=1XjvRQ$2 zhG@Fan-#l4L)#2}{EUL`aP!P9-l@ipjP^HeQ0gfQty1*JY{+PtW)#9UfaR>zws6G` zgV(3Zv=Csu$PA-L0J47VTPjW5u7c-BkR++xbsb(MzYZTdH09qyU-=rAi|~F+M%JFt zqlN|rvZ*)+I1>CJ?LC|Mxujj%y}J--MD~fX71=CTZ}tqLR@JU;&a2+HZMp?Z=m-MH zFeE;|He2pLn7vecIK>KpWxIE8ztVeUjSjGF2dbI`(i0H4@BlK&8kd~};3 z=3IT&*73sqU>oVi!PMeY{9~yre#4=YGqexJtJDMpwM-9j0Yg|-u4)F?eIraX)rp05 z>!Xo>nvXK}iXMU|WlC_k+|(xu#M<2?pK-2LIB9*h3Q{qa>@Z9lOq^@ zFOyHFqmx{*v?V&3zu|46A63D;A^1E#akQpQ*73AQfBz_&Rrh6fFD2)LG68DF+~rIk-Ub_~mO|RKMF7Cf74*QvxYzf>!WrZd7!_)9Zd(iXWWAm6Y&^CmSD0MU>`gU`eY?HTDK4 z7!M;1ihHieRLG4rG+PQIZFSLQS8Dn#Mk>AiY1A4co8oTz$xLF1cr-zn4J;}y*rwsGeBR42nC(*BxF0Q3a7xOOo8qCxn8$*k|W>qL`Mn-Hvy9&9z5w{1Ox2P>*~L zea@pIYHw@E1FI)nYak}X{hXqP9udoov6pe6PxW4rh+?lSy%x}^&%T<7r{x|n)b_je zTj}>@U(8@*%!(_v>gbexRlM(XADHThvPa9^ifnwgvCk_VJl3g_4V;^+MuoB5u*Yxb1_5uX10ccNocuNe@LT3(?cDac)dDtQ<@2c?;QxbSmM_1eI)LRf zg+Xye*ce`^oX=-DG16_H?#9#(9g9D{b=GUfC6*(W{b)$I6=q$jk>@9Nd2py))Dw_o zga*)A36~MC37j1Jh>}NQ{cA4YYuZ}~FMS-C(+0heizysPiHWy^)v)#x6Q0D#>0ZN~ zf;~=+#xX~3+3Sq0woi^W$wx~%b+1&n0f5@F>@{!$YFA5vQKlb5l*5MyyTaH=e|3d5 zeL=1;FqfPVVx32)=Dm?;>PI{qfY+{mpKmc+J)XF=PxARi6gka+I=60WA@`hTmrMhVI#4v(AXb7tMLv0=RDIy9E)$fKdV;jg2=HpO5|0l&9 z0naD*p3yx4j;aRx7kjgc;ubluVN}3HT^%X(W|RC`(42jj5lAsl zlzdmr0`4Hi>{szaF)Q=@P|QPP-xYHz#-9~4=L2`I)H>q3rg3=>dy}Od;`8UbpK}=W zX4FHV0ME`8-<$|>?}Fsto#Uha8ZRr+TT|HJpl|lb*kU8P5F;+djPrP_&1z6@mMtQ0 z>hyE(b86YNWl{@JO!!G1eM1^)vK4W`az0_G*D8h=QN))c(uLWYb!#~2!5sD&Naf^4 z2Nn(K8vK$ZU0MIhwFi6P1N@V8)_4CQoh>nQpwf|Cq_8xI#SgtIJ^a4Zr64}^pA=dM zx*9kLRkH!EW6@wV1FI2$d`ut9UW3I@TnESkJ?+{ZNXFP)92#mnb9bMF;I*!6 z8luatP!rB-EMVZv@$nAktsb|5i;T_x8ad;N-*ADMExg>gy1CIsH7@jREZEf*y`6<0 zFD27@#V^;rK1-^5I?_?J&PbH%W~So$z1KCg;v-s=jXHX>Z)?vZDYFl_EKMwo-Ur5u zx{@5#eEV_VaH!nlpr#>Mt6Ho_1v7(XIT`0i@qBLL{TZ4Ls4i{NV?cLQcimH4Ek#8^P;FZ!zNu2r7FI=wZ#7ZS!kc z*pTR<**EQ3*c$AmoJRQ!tEtpT5?W9xX3DN92)-addLcvDNaN`HsSC~%(;Uu!=_fHE zh?uHbx)voCz=$l;7HLJW=#GS0e*3V{MvWF_z9A`_xuwH zK6lxJ`M1t|t9z3Y&R*EzTru9?GeX2Drcm#(m9J9}$ng`9XxSFYNkVzlB)!T=L8%}m zxD@1BmaQl8`KAd5I87Ni=dhB}I$y4W2^X|;i6kMxL)7H2?~kx$v_`|%RHX%a=9Y)& z1Y-%du%whYXn6=+2*miqZX%CEVu^IV8d^&jgYrR3qbj~|pCsC-`uHY>fGKKNk9MgQ z=9ti*74w^I0XtXxj9tG8r-gCWy@Nfh$9HuddmfK&nF3t&QD%y9=i7%2L(78sa<|Sh z1&^T2&}M2>17WZ24J<=EO~3df=^6)C9t(GmD!rdiGJs+(H5H&x2Xa9_9OSo;W=^N= zPZ7tn*l}af)(MuHnD=S3@Q+;;h}G{w)ek+#eo{B)4BbV%mz zfjo8!G*44$r4_-=49W}Tg)=K#ZD9@>r8W($I1(b_M-s-E53HPk_dX#={|4cq@rKcJ zBvOaBLE6*8YF4dxx!Gt6^h9qYwutb}m=mp{Gu%${kWW6Z)m}SkCKQLyNJ7FJ&9s-3 zGt51zA8}>hcXA!=?3qQEY&&Z<8eAljBGk_~G*P_zTt{#BEgJE~pesm58{C8#n|(S? z*aWJ6NCLTV{ZC@CkAi`_MFLEP^`(Py8=#Ty{J%1lGY%`*lhXa72yPWOVCU+s8TnoH zwb>`W+eallQii?_LpQwt(f|5-8S;PA`U>dg|8~8@m^#Ex6Kt%I68!SgMRl{D`yBcrwT4 zpm7Ke%~4I7BSTYkVgfayow6ow|K0e!d!G~Y8?qr9#r-o1N)ozrwh*4ZXr>Dprft~x zuKMQ!fN(z@XwVO1v4JCPkbUgrOkrtNVVSfNqA{R96rd=RA+B1|L1T=T zU7HaLKQLt+BsCg$jHnj%*z!}Ck%SkJ_;w|xKwqPG%Pa20J-O4$^HeL$l;gvi*iUL0I5X0#maeyhJSZ$Ze?$Rn9|A**yRIua&Yww% zozePL#@tyA{PvXD&nh;@bOP1}7H)*xVdsKB2}3dV2TWE-`N9EbcQ;vQS3b;`Q>Mf|89xqr4tvM9C1fVXpU?ohEgffGuxH2a<*Q+oqJ}pSVs{N|ZWg+$kkJ0dFcvEw8iGqExptZ_ zrVyH2{H`i{n%FD@zQhDG*F`CEz^1NJZu#NF8lZWqkKZgN%)T zb+6QkHy)|dw;lBm&q5MWFWkmwalG{9mwXGuB1W1W>=L-lj?6XeVsb?9hES5rtC7H7 zGo-W(zj#@B>`I}ak_gq~mR;8`9JdGH>@7iy0!hhj%MJ0g8-`n!kCMlFCqnHIWAhP2 z6A!Cc(nn2;?#VwP!j#t`r~9=X32itTb%``3Q?+F_+#>Wl(yozd!`EmN7k8Pcumx7m zn&dX$8|y##ye=Cch&Xv4uza^2N6Sf6g-b}Wvf#8I=M8|6J!VJ}TOui=xY7o`8hEvF} zl&R4w3w%pSZ!8Vlb}50(Io23GWkwFd@!F$=*^JPt3eHP)x^*@6C&cOQkkjdKoN$}@a=0zU%1CEu7Qey3AnTn#&EB-y@ z09kEJ5SGJCHW%?Ax)RY3J@_bejjCnSEFfHr^4nK*l>{DPX+c zkAPiz&Gt=GLm)~9(bQ@KDOOdO`du7?m8=Ffpkc(;$FsK&-{&fJ$9|?0b2g9D@;p97 zvJjAv92Xuqk%g)r70?d5uhkI#&cbsUirO4{u z-pRDX`_CX9{|W?W0s39vAcgO34&BdT!J@zB>q)dj)RTcOZN$xi$zIZ|JItdz{!QD; z3!N{Bi?7|FWHr(2ltOy^VjR&tH615 z9pqn-je3Iu^lqR*NWNl zywhIsU4Xc87ttdzMmxRPo%KlfgHuP$Od`&Or7avK&DZ+Sqm#);k>+h1K4kBQAspbd z{jWl$(+dbU#B&t=Hgd3}0ewk`;^Y~oc|XwQ6maEw$D`L6_M~BF2R1^kcp=$DG^7<` zksxeinax5n$hgn!^fin0C+_;28K0CMz@$2wXgV9SvxMym2Ij#|Z%}NzC`LGgPe$BYcRQpBg^_Hh3S8If=ededWq$TR4Fxu@nqK z{q1N>o$<AM6;$B`2N(x-6ATrt( z0cWLAV9*N^Cj>F2oWApmxezYElc+inj3O*?B3- zvCgumS=xJdgtdI5zBObNyy2f`?#YS(;(L;IB@FmGcPT8C%-#%-LojSTo;=$Izo!Dk zTIcG4&2WXazRCcsB{PF(zfS$NgV^0tqYyAl>&U{5<4L+PN5tL=GnB&rWl#^BP0ziQ0&8*UbJv%Nkrm*+eOCQR{N#rzl0y_R8o9K}A zEz1!i&0B8#40Z=L&Kv@EO7RgnGUn^%ZZDTP0)7`IrPz&aDBm=yX>E7DA_e=pfck={ zhU0l*r2NEZm|_LERI)&JOo+^)i-M#J1p_GBQjQMNlM*!8oLG~B=x$>}d8A2Cv%;qV zc+s3!{veN4pE6hBv5?kitRN!nvUsOD{h9_%c_QK#^k#r}>Q`q+n2KQF9vf8HSEX>F zy4{E%I7*XC{z-M&a%})ngP;{^4He3)1UoqJ2$;NXwm&mmTHN92nF}^8dnVo~T#_pE zXqbk;%JZu!C&dP<0i?u8HSjuz@kXf-(-GI#&VJ8}P6m@`{0O+KTEXzj`hz=mnnU~Y za#lR8A9=={1yEKQ6Rn_2YGzP1IP6{R*@H`D@I`82mg$OiEJ=Y)$M%~;;TZ#^wp|QBJ=;o>@-zdnX*XYI zGLtD?TB{pW$fxIkr4eevkMtpTZarm&FtE+5lr-_6qV1TEzebQe8l`lDK=jch&GUPY z?1ni#nuH+hL;E;h_PDZZg*f6knfL*9MgFnK4}g1O4A3&Cgam0y36bsne}?ng5@}gO zcv5EX`c)$Tl)E5l1$_L^H7OUOLN_!3?*2Im{U4oSsEmT7<%!^2U#54^N8|H{C5J*k z^ij9jhb!Ff{Fd-MP=(S|`0&Y!8yP0>FT0JqfjIs8vuEvcnDK23Q?}_EJ#6O)bzv$~ zSL3X>TX)GUXPbsnatiyk{rL$`L}vnAVYPF4&*eupK^8{8X!icnWHb$B2eP<6^xLd- z5QOqgl?YFDXw*GlUFe_IuijB=M@J)a%nvz~VFAb?hC7u)>bHLIGXR~21!CIC?i0im zrnQJqv~k;mRI6=f*Xi4M@JwryQ<3BhVed+n(hT+5BD@$veQ><+bOQHGm9|BOB1BZ7-;Hq4bV| zzbeb(`Z9=>F#4g}jZzgjFPWNm8*pohB~#j#!yUHwR2$}<9!{o*f;CKB?X&5IZD)Q0 zgve>cyp64DnDY7cl|#B2@_Z;tf_@r$kDYl9a^V8ALL;F6-vOs!zIE>vKz?z>m|!D+ zic&^}M3Yr2_oE9Z408t+CRIli8X(Ugh8p0^1tZa0;FC=wNiK8De7gjvq31PY+)$K>pSARZ+k(U*g-)jXbaRT{m4JtgY(Z3$v^YY(aisnf3^+*^3RT*0}P}g z^yIJOkHyw~w1C^Cf;xr-(bgEB&fKSyKWN@S$iL9MnlXQ;dE@_}dDD>ppm~jpG3KYK zvh{j)UW%Ezx6i24y`#Z3fb?o3epti>2!8kf=;QX*iW+5W;-liVtcS01o}NAjX(k8H zn^*ns&JoSWjN_-JfsC`GTq7or7ipz$2sv6TqR_%`u!3zbIOs1#RgtzE1oc z{NB?_eqOO`afcNpFV4xUC7T}cRfEim8->ziAG$ndo^=sdKK`iW)VL^(*1RJr4fG$!(SZJGm!e!izk9^Yqf9+v+{4l&s)aB;&x(7A6U$ z4+$BW+h_39nKfW&1_Ny|6pgEYua0OS=rMMX?DJEDzU zfv_XTGM5GUIY9BgCktmg++~+1ASZdXCCg7AQ}9I&ADj-Hx{qWtz5JHw#R<1X=;%3s z@xGz+LyYq{8-%6IHb%gYv<>u*;8{390v@!4wJUQq?YD%MK29t$Gy=e-T5J#^IcE2mYaJJj)8sIRMPUaKY#!n)6i#MmcM@>>s2Hz$ zz;3=zW9OJGQE;MEKojY&N3HY?_J8|NY9xUG~8mmdngCsRQNR?2*cgg1Tb8Y zk{Qy-(V4{3x>Pq<`s;)yQnLrYCY|k;7Hcwc@1uPFCify(a>2a<7wkC(y)@HapNk); zFuNGmPQvW9eYnve|G}Bl`!kslya6OJGHX%g1u>w$ zL>~1o5btvCZ}ZJv_QYV5*30JkZNB-+#bEe9K)iMcneWy{RkH@b)lG45Z;kRs^bH`L z3aA>#ZTq!P0BhUk0M=ZI>yT?V`{h#V00eMKo9H3ahWSvtBU zP(QMs{Baq6_h)S<|Lo6>FW&mIxqtI#1?}stiu`bck4T3|Lq4y8ik(2o+;KjPrp?6} zM$h`rX(7xGV#EAbgLcC%b{sX%7t}$pitI`AVvp~Z({PBDjB(|YNgb^eg^$? z2t@NjPkpC(GqQisylZTy_iE{MlWJ^!z`RbZrfjcn%~=}|%!~H!yE*HC;(qxSY|dsx zRv);w&lE)LU$zq1kzIe8T#Evyz=vVRNpq^*S@1v+@RWJt3#I7+!My-X(3^b#Yrk<- z_YcEiA`wXokNRJWIY!{B|*pVcm4fVx$3wBByuwYw_Mwc1( zq`L2+vI#G$Ravp{Slq2|!Sn-Q-HJ#0Gg$64=0p#~p;p8!@1|X~@>)0+!o5&8TwY~q zudVAAFW4sotokJ5Bj6d1JO^kz=7{o?N`-Gru_wJIR%i-xlzX$+q%t%^C*(7!CnoUR z>gi5bRhg%0&jz;>V-eBgCmtr+Wc6|nfRpFtaxg^o|c9+q<)LDoMn|czH zjttZ!1;ba42^2_~bC~U5zU@MCNQ8Lq*gmBtL=6w0!KBz(JJoNOSmBli? zUHs&=St88VwdfBynTVs72Qy>E!2+=0&e+c!otl$)(Z&_>%V!3P{GebFRt^|M1zR%v z0)}+nDc!)R0$6VtrbE@=Em`cXUo2VY`lvhuk7XmCB&Yl>l%m8}1BR*$Db){f8Y#_6 z_+m6ZMM-uW1n>ADvj!h0>sNPyE;jtLM#wKx{|{N-?cc_gM-N{^l5pJGZ1!P4z1Ah7 z+h8#uR{z@-od1Us^(5{XcAeN0g9Jh;8JmgK~46|amK=%r9y}!e?1fJ{eT_jLs>|tRXtCCi*3_Fbo^*raH5Ap*oGOfGkedNClf z1wg+zZJa~m!=9$OuU>s7B|U8~=hX_`57{UFzGd#Kd z042SUa_Ub#R1_e9Hv|Om4wu01^m*6!vj*3y^?X8AKLIhnPf72+emfd#*gY-76?%CP zu`_itmQwHK3?CG%SRY=b4^t;^H+1qD?T)TjOe4_eOO=Ei=#)>2hVL3QHrt$^i~pVR zCHf+UHWb=bmIDY^AL8!;=;=?*0_kW#s@njFfD(MFT%FTRJ){+4OT(26$E)ABP-#pW(*3=Kig^s&Ld7d}Y7cmJpBbCJr;;ND zfK)Q$%J)>V=D($q|0GxYzsps6c#vG>Nq(JPlhb#Akkdv;nSK91MUYwXr<|UgD&HUK z>U`uXhcww(5OqK=pKTPhP^cWpcR-eH6S-W&dL7W*xQvCv2Fe~MeBGXm)=)Uq%-fjJ z>nq0VD0WbGWk1Tpe>Gw)048}kn{*8zA@&L+%tB0RNMDYC6)S$~PsRG_-xRB77@$}` zhyPx&hQX`t0(X-6^GSUbhr_=pR+ogoE7tJ6pZ!xpzw}QT7k7?M@BgA$hm>y>E9R3l zRqbL5BGS5~JQ!@41bI6_iw60F2m19%n2G~MIW)Kv%9G6>$Pe;_9xPqll>`Ph3_uBKhbl%1l0#W+8Yu7N-Dq`GuQN)7IzvMr6Z*Us&?r8HH~~W_}4UYv>$COO=+4-qB+@P$L37E2X?rmHf+TvIOk~oN%pBU?F$)s zg0(O6Ua?c~fk56uH#r%RffgXJ46lrxk%6u@eL;ha$icq7I*!;z5q^2bLtY61!C{~0 zkyt!I8-(AlxWVCQhutf8DR%y?l>vm6`>buuCl1@}lraNqidzW}@UBMP9vz-~IJvgC$( zV@3f4%B95CgNV^poi0#Q&N%sXvi2onPUvP$X26}vDw(OsGchr@76gklVTQ6spEWi7 z6JTNz$xdV5FRh@CAF0IYCjB%$16^slf(AJhbW1uIT8+Kmd}vmP37pxf@`ucV0&Z|;iP?6>IaiZGxu}ImHKsZ1xpMOa2_%B6NNudkXYwLj5xQ7@da|TCwaS$xNS1P z+$1!wc=t|FQos&S*hMehA!1xadfJ2gu|1m8*70+C?Us=?OQOEX}atU(aX@!ItRJBgU;zB_9!R*7O=hQ>#vB>_2)eNA(nqsJ+IBhnwVFQnb~~w*)TM$h=}{ z8&_^ufCGm>hP@C^g752|ED(QkE z_NQhp|Dt1?rhe+!DXITT$9~NHM;+@T(zekC#Rc{80T)+flB(#&4ER#(jd0{NHT5&` z1@xHdwgzg+Xvz-V?DM@m`#E8_QYnA|$$AX*dbkj&7vQz%%T01#GteE7w2sC`m$0BL z-DQP0zhiDy@gDP~^PsbGMesRac`gm|5h8@AX|Qvmd7m&^&go5PV2itA72htHIcPNSpaER2? z;k2y}KMj7H&}J3c%(LH+f5s~dNiclxG?mZ+Dbx@c1%%W(LdUs++ZynT$#51|A&D&f zKrK_=jruc432}C~>o#%6ugX2YMN`i4Sjs|sDCNbOwx4V5j6M16d@9Wy#=v9A%Jq58 zO^Z@FzmcQ(T->McOZX%zF3zIq_m`M-{ko^r0`nh&cKppA_HP93W&t2*zx`Iw&ST&b z5>>47gY3Wn=S08*-2#^{K{bc@muVde1S;ySACP?6+WA{QRl4%q8)U_Rx1BNpn!c{I zTocN89t0FbP*U9hkK1~yXwxY>{!!7wSMUsUR+s`sRf?jQ-ea%@wAuQu3x%4ZLf;<6 zlx&L4u%laI7Csv7!x698ZSucR8q7ViFfTvmE|`zT(*d8tC^Yfx;_l8jiSAElmmeZs zGjMfipRqs8t&A;M9O9tS9sIhMP4VvuDh}~Gi3Pyssy5Upm0;DE$2w0Rr;F=Xkox4EM255B4RQ33@?9vyxecGp z-!zxWsP*pU3Ej;)O;>swbIA^@?ZK%FJ9)J`0|=|+O}eJ+#{@86=jUU&Nq9p+b;&4M zeVWs;Cp1v(#;7o?hVXt+5YtlGwQBH?+iKhnpK4R+@LQn_O062H)x5PJJRO%BbY2R? zcm}`=`YznoO(nE!()%q!qaiH`9xA`I9d1|ReQIm`N0HUfZsJKgCXzd9MNYw)SYbJhFDEqcR|Nqpntm4huet#(da9|;5frRR^A1Y{p_D9lG zKvMzzQqnF!&?ay8YY~15z(a{q{3u!e9g90-Iabf3yk_YRWt$_t+<=_y>%1p8=GmmD)E9no7B+P{|QTNqBLVXvlySpev?n5kNL`Cx= zokQ)s_rM}!Ylt4TAoav}^7me5CQ`E!SA>CkZ$6=3Ux1UXt4|-wZq3WR-9xGdExYmN z%hNH2wA7@ypB9=+^A$KywzX%_O5{IVm=Sq@X<-iK23nX28-8tJ?pp?0nB9B-gZ_OL z=trSk3&DcMx{S8ui_lw%&P&cEw6}?Pe;@E7i*(hwrG}Q{b+bv zX^;yJl}`E3(inPF1Zr}C3(pT+0cejN=u9&(_dI1Y6C>W=J5Lwkj`UrK@ zC3%w!N*_*GhpS2WP4`2mL}1NMpxEBxbK_dRP-Ya)l%kYA;7Z5&gUl_e`VE=8E(egg zK?YzlS3k-Ks0FK{ye8#Y)log0+5@t&-9R>Wm60aQ|KMfpVH%9gzMToS1hpPQRFRoF zXI#?_P=x~y&H{sPi~B=sfFe%1Rm2hRNj5+$b!02;g-6C;<7h8pXDAIVH@|WMm6Zg^ zF^&D-v2!VbB{}>2(0MmnMbAK$C9tnj4FjHSEVVdXd~0m5+CMr2dP_u@T4)JZDty5W z&7iG2@`w=%b2C}fw3Vo7+ZS~6pYF*l0!OWgW)e=4TRS4I^Yv_ghfa5JraGg5q6fIY zugI8n0J&MqXCZf5^mpmEWDB(XzQ`eRNH?i!rn$I887oMF%Zj?T+ zOPa`+MUyr z%FUCY#??Fl?mygJ+1`sETyE?cn9F69Gm{1utCy6r{Jp0+zgi8Poh_B~r%5ymnt7iS z3AntAmVa}3p;&4iho%h=G%YkH(&}uw$_+DluYXT~>f=c2^`bU2^ zIP$;qcTZWf6>2SoC$c=>jvnbeWX|&=Ol5_84PME!q2O`h#*If6JosH9n@Y%0-pppG zvhG{c%Dw@^xtDG=b@N+nX>h!bfhuL9gc)TF>J}WI5VbC;#VQr!oZkXvQ`miYY!;ER z>>kNgy+e()0GVq?7_r$A8P^EKKK_jji0E02y)wA1Xi6>PkE%7^WAngJxkzPwcPf^f z8F^F}mMu2Q5jClxfSTX_@kM6oqy2qwnpgHwdB2o@CE;LtL9X?Q@XBo0#-xbpJ;lmE zg$DzskFbILy`HI5z!PezYF4e-#$jYMo@nHGnT{zzsjv_yfRp5pQvS*HRm9HXRE3lT z+O8L$3O4D-l%mKQbN^Cy?Z+dTLS#V4(Rx>$=j~M_!Qs}vCTO3LnFml-$HjZwYW3uM ztCfeFLFm7_zHy!&7!rSFb4kSC+@yhg*$l1srtXr`Di={8HuvS-TQ=9B?gyKz)Xwcq zc6)L>W!F4zd_WyDo2raK53s6d!uqD&nMIpycL~bjo=Q*&(Jrt?0PT|T&bccvpJ7h3 zw6Qd*vf*3lF;S$$i8gg;rBPXeRsYP61>9w(MS$|AN>i4o<+>4>ovYIrLgHE5Aj1Fw zE;fP1WI5kUjIj_!aIMvlg`@ElJ9#5l>%S1X#Fn>&?w)~%Zmwd{zt>tNvHz&GvV#-A z7IVr3^1NTsbZjaKaegIqa}2mu6@Fjo>;essUM4{6LL{|Uat0F49Kyo93gWU2r6e7P zO{lJmZ(u?;vDWP+`|*y15f-HJs1YrnaRc^L+7ma{B`sEJYi^cW?v&b1n&Qc#2gks* zNCLRy(-ZH%W4a2lKQZ0TZ?~APug!N%H#KP9O6x39^HGq5xj9l}%e4o`Q^sMJ%$xYo z%t0Ww61AeTV`a^oY3F1?-XdVrnD z2ZFyer(HzKsN{J<-6@q2m)uYYC^nl|l_s2{w&G16CQD}xguV5IODd%K zZgW2aZ)XHnV-z|Lk7_@ZDo_pa9DKz;bv}h;21K&3vd8p_Ge%}VP);#6%ZUc8eSQ*A z{J6Slj4Y3h;~}pE_R>51(O9lDZA60XlXnu-Be92+^l5?02%+q*S%sPqzB(l%+A0xz zB(V|-c7=LU9l@#Sicf20vUz(N6shsO!81fVx(T?4Z>-tXv8mqnEMcf?@=BLbp#_KDi@vVdm4>2NuY`e93@Y_L(z0>X%|bd4m?a>N}Fb{=%fAeVx zC`Qx*wQhkwe$8pqcW?ZL`vn8RF4C`&fX3(F!olckPm^F;AK?>!|IrWs$IE#^|KYFy zL*Q00&>#MnP20bG>(ji}k3L_R_u7Z`fnW8g8jM~4TotuNl~Dk&5uX%scRJ$Q0E8EU z@BVF{S%J6N?)>G=o2S@5N|2SHQ$o9Un{CJM(@u3?*wYhVKna!9Ec$3*4C8zil0+d& z*cWi7Dhmhk^xNCR63$9dzUKC~9=?S+bs?W}I&4B1K4zdv?iD?3-ed1z_Cdh_ulOZ) zO;%TTSN;HhyI3mfw$d9`Vp;P{k@UN}pGX%PU6_QA@k+-<8=I*``o^AASw#m`n1Iy+ z4<(X_Qks1>GC}K`*LKmnTvXWr(_ES_b3FEtLh=CHph_1kI)w2K-ANNOMcr03uk7$_ zaH+gS2O8p#6ol%2U0X5mHY;&UY~TRatXjso!M-Mf8CBt~2*LvP`ql$QHK4UrM&TcU zB>K~2W>aiZdAmJvkLa1$SGJ1Sq_z@n+%V?J%dJn1a~nAN2#`S;fZ(zB#r)#@0LW~F z?X(Hyt8>RGF)@LBdQm@*UkU&cJ^0%ln-y4Vd7+Or9b0)!mJuKtzeU%^w?4R6Yxw>~ zSkF^wgUa{=c1P{KKSk8d%{c_@l*e{K+x~zF#VydQQ^s0b=O$Axu&a{k^8O>Z^4s+D z7ht{dpS=Gw_n=_QV_B&wEB#4+aq_Nq8olU`G0mcx_D_v0w5WZU!1g}652vZ&Q^t2g zT)hmj3{9vs?GN)U@biXJi;LNsl;jA-PxT;_n2dlQe(z+ta`Bb!x35R3r5_8w_=sxD zDyHqKv`u8UT!ee1Xo{VKc(Y2kJ+qOu4JV}sP;k?&ToY7Q_E>6@0 zk*(2{Ua%d)PSpRPCOLPWqQ-WBIW(wA+T7&nQe-VfpVMJN4>p(^Xj)3)dq(#G;R1BtE3`Qq2Oy zZVkI}>2t7?e@iV#0kexj2_j<3t)$1C$cuyQ1Gg)F2k-r{;`h;D2IVisV%&(}VzB^T zxby-R*DeQE+lJ?9W;UafQf(7onsKRyvUW=62d^wZ`zxv!5-re4tPDwdo5!)jkvCfK)2-+<1rc-)JmiVqSvwk~5vv4rS zq+(E73fD^+ONnPRqvw8uPualrKc~`6`Q-n*G1orYXo!FT_m4HRv1($%iH)z_si2_OT zG|EO`#Wpnmq27z&U|7*o%+hLUul{POm3VIebpdTFg^$m)esN0tOyOV@fRCD?G+b>N zbbM(Y)^V6Opj;3tUIUE--`DzH$CAD0k0ltvs*wq!3sX0(?Zd;J*oqcY_d&&0N@$?0r7V8W2+wn z5U>3I7UE_74)F%?^o}dv!m1V@IhlfEHqkLC=|P*uMbDm@nW|Alfc*Z)!SAD|;e{0j zs`9w_FTp1v2yVg-YhYnWfBtj1Z`J33mH^OlUnuabf$};aV_32Np)4Qz6Gft{G~z4f zlOhh2yfPE}iY9VR?7Mt$FO%?F9xw!ppg4@=)#U-Nfpag(!=&gZ5}t#v>W>=B?T&Gs z1W=sBl?@poiv6niWsQwDHO>Ux`O0R)8Gm7UAI((^TKbJV^`WYF+H{KIPN*+%tn&2r z(nt_-na~YQE8u;uBa7-W1S~SmeX4D}A2}(W1xG6lObCM5Tklf6d!*Qy!EV^|ho>Hf zYI*CaQzL>rbwyRpJDEL-;Px({Pe8qlp%~bUs6ql0$-{PA;RT|+xuEU#)vjVsA2a}A zO8$)JX5Wo>t1e-PV&fq>A5E2K+ikk;qe}nn=}`x1~(q;|j9KZ;YvMl(9w7h!0$3ZBjj8 zWPf1k&K~`3prH)q(DF$ENWW5UmOR`$H-W+hPW zqw6uXWD2g;;D z0edKn4Z*Iuu}R|)sU9>5eqX@ysXOZ^`%-kR8Y$?C0Q3+F#{A9H$ka(TUMdmh>>UrK zJv_sWd$9DcB|k2XPQJ@5KYuqSkuf@%*I@4~OF_yF-r`$i5+o4jOedh zd>yX0AitMviIQJ>zKghw76DQ^li8)u|0vngBmtW6GycEo&N3?My#K?g)iL=ZvH^P2(P=+?dW`<`_^96!01i{_vb^7=c}K)IB zWxZ-@?rZjgvm_f?D60LuXzwNElUP8^gBYBL7VCq`BLPz`iIRe1w`VlyG$Ueq@N*WZ zKFIR?pxrjI*f@m^!%Vxz-{%iTH0G24!axAmF5S_~t^!Pa>KL2@>xVo`sQNhKCAY8? zBfqJa$SLLlh3(u^ilI83A`? zsU7%m%}KXW2#qcz>`<~e%v?8?G)M@<#Fu~wfxmk>0Lcf*ocGOgTSr0CRf?#yUBuSc zw2|Z|7qMX7T4%D{it@{rvg~yuSKNj8@T`5qGy=+w3>0KY!9?U^AUxl$emjfONlKJ2 zw4xu?QD_%<42>RB0x7ju_gLxOmbt7O3Hg5BJZl(u|8ChU`SsMYx8=1Y{q))v!=vDI zndzN`zLY282y;Tf+-y>(XiS~9IUUqmol2u5gDUJJ~yJuAqT|KqYWIGs*<)&Hdc$=qWnn_(gJ z6WF!ZdY1@1qoy=4S{D)-Q<-_XAN7_tac?N7Q92xWnLl8Bn8NiVP0Dbn^^OjMYmo@Y zG1KU9U_(k;0J9D_qMLS$h|r@J$Hz zdlUcwjayJNpgO~2;irg}Z;9?yt4EYBf_AkIt4hnL7ng#aA?>Cg3D6tGD^yjRm25Zi zTX5rdjYbtvx2mUtbIO$+2$CjoRk1J2azwviFr>iz08wW@uduyNhtTG5EGR{(L-{qSWpLV4Gjltit9H+q(w0~DEcRtuBND(P=1R6oIU z-U7dBSBzsG)9G!nDxG3u+-m&fkF{r*u2=PmaGE8F@|x1~)zDekych3*;^FptH;6B!d+lrz2=z5M`%w!idU5x0FS!ysuJpV+>MGU zsecc5j^Cj9sYLDNW9zxa5^co$DlvW)w-ltv*(WJ-x%_*zaRW8(Mz+*^YtQ(N+;~

c1ZjXc&czP_Iua5iogWvi_m=n#s;ub5V%uK#|WsNWv2f^zqJH^G?pjR_)dV^ZX zd`vF0LXh&DO*tAZ$q#1Ly~O>T$oXyea-X?5NG=Nr``WsB&2=!GVapVCv0UOu#fPS{T--q1E_p?Cn2CZ6| zp9^Gr$VEFmu2RCET#Y*29al)qSzhL1KPtPqAmq~p&4$2mHH~`^>3t5H8d+owFF;BB z*y5Tv-hStl0ZAtzP~igW&kiJPoG&+Z>rC(6ZQqKzq%CHnPVp#3CMKneP@#cQya6;C zdgI^jYihA#<$zV?&aT%&+KW5Y(6>uPap-q}&^)tdw%}u2#f*G#A#_Y7E_8*#dVV+h zBcwGnrSE=(mdhEESgn~jB&22sC1g^a z3ebE6)JbYmyAzEfhf69MJ$D$KtExHC!!OEP2OwshJ(V5X|1LX52idWdVJ?j7OcC_= z*|7&DTHN!OeGFkr^|+ME!zDLX`8HcmWyetg+>L_7>GLZ9w3OsU!~g8m7Wjnf{O1<9 zAac1Fj|66!x}IqE9koPLqJL=r>wqI!9_&% zrkT%lN=7}^&PSn1FBDd$2-1+gE^S%GZf5Z;=AGrpAPW94{{-b#(c&B%-_I#sD|4J+lJdoZ=hg2Dyt zzLDdG@vxCNn!mJiZo~^G5n~ch(s+NKOgN{8%27>bR%zb)$xf*=&$zMoJ zUiDu$;}G$u$0Fj)p|vat-zVZKf}%?K#U=RjL<5mel$h;u3G81x+c&0jr6&cRY0vxH z8hU8rTr%KN8+W>gUPTPWmTH&FbtDVu`us>n#G1-(f5f#h)G*%IclGsH~i+5mADhHIW&Kx#rGUws%Q)5qc8xOq<7EHoC|KrYr6S9!KoA zGg$1%N7V!PUZ{Y6+web_ zS{odLIE|Me&=-4NOHw{F3Mk~F)(cvnZaX(!)F4afaVD2kwCU(?`%vXWT4WnLz4%DA z!xoa~-}0_#(eO0UspEv`WDP%(=NcoIJ287>o?MXwhPV=TBI@$l_q%osk^I!y>-OKo8n3;7DKU)5=!A83lnL;?w*D_Em zA2~S4HxsU8vy8p$4g3=P(3&vrYLC^j9GRi%RM9!V()Of#HJg|&wuh|P-|)>qal~lL z?3df0_EmIkH(qp^u!xYU1#Nxk_uS^ozW1EW)nVM`kcBbV?b>&F@!Xx|e*954m~%T@ za)j%N8qmTfg^GhSEnLK~+yVPcL&!xq0bkhla&j*tTTm}va=Tl@*$98Y!(Z!Q9i zrA~l;()tp)vw)E)w@v+c(?U2mZk!=gQh4=Nn8}-h*AuX%ye(Kh=q?u5APSZ1`LE_42z2cQxbqT{4Ey!gfpdk&gT7&=9z?m#IWx$ci4sH>8hO-byG@X_iSNcBXOV(zeU%~;r&l23 zG_9Eg>o>mN#4+qH!>-@zjm%ZRA9wQ#T=%<~oBuveo6mHd;a2FK&71|MgeK)hd@aw< z=WdG&AYFSEMXDiQZlPUx$mpUEES|;#Q96^I-}Oe(YR7sb+Ms8BI&f68=&w=D*lEM< z6RDz#P|Ms+RI15s1B31_*^L(??-Y}v0V5~*U7h~ZgF zN6+XsENtH0hJ@+GAgJg5u29YP^rTR2?_2;B$SPXv!vrO`71Vna9iFc9%C*@T45{w^ zb$>2}Q;x!{e*tY~AovDt{*(u?6V(m8f3WNkdJ+Xk);@m0{*O`cL%dfbRa1*-7x7P3 zs>y0FkJkB#aBiwe1#QzOse(Q=bTI3lGuA#?yoXs@n|6h$`*LsO)gG6m;g3@W8aY=r zFQ7bpZpQ(OmDl|_{h95ImC3TGT~NcPQIR3%$K}AGNs7#d*m1Cdxgr zW~nmm%hr@Dpg|2H+l30}#56ibZ#Z^YsAK|MB{t`V!plg`JUU@7J0{%05M*)uTF>@q zM*FGimuaJ|_wa-lW*$2EC9NS<{dx>kpRkjFnU(*W_1DqkKh8Dh7ENT^wPDgRPEk!SqJsxD0FzmBmCB{WnLcNSKLp+nfx~yk@fbBW)q~6w2y) z=$z3Zx6!xW^!U~{y>D^a!76loS+dOD~NRfj3HMS@g7etEq zSUm4o_Qw|bJJ**3Uhln_)GrZTybS+cOurwtMNL03tX}Tc&7TR`Be-fFV(?VzhiWvb zf5fn!nkbUnf-G%4BKYV;O)q_J6=O{RWOw`MiS5BC&2}Gd27Nii#c4VRWiXL z@YKC5fM>6kUkj2lSZdGw7M<`XeQyPOj<1j>j9B$PRbsaR5Ucp7*E&!VYA~ZG^FJ}J zRxpyypDcil0{;P6<&tB4C6ck4&Nl*dpE*YaleJ;pXE&8;_WXa|{=OR7a<)vq@f3El zM&&xE(}Du?t7s`$f!Rx)c&ly@R&Sn4b@GjOOSoh;&#__qzB)SW0ftQkXWY0@rN||$ z$NFVG&D{V3d^;Y6g>3XQi$ZfS@`6~+@^C^N^tRM4_(&O(K0U$ZEVHcmrG=;Gby?xujV^t_n?@tH~yZmbvj z&-xla$v59n@W1vA(P!$&!5LBIuI{0? zmrl=oCDa49CC;kA)V$ASe?U|P&%vY;^fsN4kBVC7)cxcQ$#K%bqupW8xzerG)O-be zF3N-+Ho;xYcmJF{pL}f1X00ouRN-20{Co7({p=l=9BdpuzAbdrbxu#0_d6$(u|4vbcN#K_!u+|T9sKvC6R13ZC4BjpMKVIX zg_{@86v14)?!e0N3m0z)iwm!Or+Rs8sWa(F)bK=UACl=KMH}p5ht{z9Mn>5#{UWop zyE*6S_%PIY%c1y=d2N{(T=q+-B_hqk?H8${5#~6*U7dr{$0nf*Amttir35k|Otwd} zzicc^oBzAU^2D%erZ${NC4WMsTJQVA2cD-z3T!-mvt*S_j+UAwC4}&h?(HA%cIr0M zVvH>TD*fcy08lVlP&3~QcoJf#>dLm%i9HD9bk-l)jl&b2ELla)yyPYA^`$sxhXSrC zO8~&OvCx>ftDwyNF6)ld8tsK^cIAbS)->GwuFP6IsLu1RbNgTg**|o@Df%FwKnoGWuHy*mE?L6O z61{XvPkeUuvzfbR`S_MD!Q1Qa1Z?UPtBqjKCS#*Pkoah8WnH3?!#ap8MNwLYvTpO~ zO%jp68Ss)6xaUP@@hfj{NdB=qv-Vc@%zD+x^5x1qjj9})7tc7x(Z+w(1`lUe7Ljy3 z{IjC4l`YZ;tykAB9Q}8CA)>CQ!O=q|Q;8gT@4B*_aOi{6lgj=?Dl3 z9M)Kqqu!$tkiv>(p@S?jXz?eCew}W!>{d$3Me4i0La@d znk`|Ahj>pj;l1M-ysU_hZS*-*_lrm4&pf%{5?Cji^zdYz>m*s=?I*b*UcAI*c|U|J z`=DsfO{JCB?O`Jufk|8B7GKj~d_a{i!NGEU18 z{Fr3+(7ew{I~(yv&tRsfLfPy6rP0U})?jX%0z&$`vTIe}sKZckh~;vT@)cwY5R3Lv z#eSm>$KYrDXwIE+A~-hZqDu$qv2gEwPV493`qW++<8!~VDOov=maC6GD$7RQRo#h{ zHdE$WJefnttPc9K>o1CM9&>njeBy#SNAt?_um=~y+;9t7c}juqc__O~=01K~wZ$po zLps~GFfT6Ya}5J?z5tX?%JG#vopHW6)K8=AQheVHK$CqoAsN8kf-pw}o?FQgRDAUI z%3vJE+dW4RedV6l^oR9j5sqYC&hO(^w54NoRBR`ok9=dL%SUEn>TmHowA6Gs5m@3* ziJvpCX2F^ZmVeFoz!^R=MTFysJu=(rE4Du3tSj>U%hM4rN(P6JtWq{R9Xb}(;B??N zX|!$QICbuPOmsA<>}Q4rsv4!U9(j_xOvV=xm1kX-?uy6EIAax`kHL@=*A^YI<}t^= zN{94?Q$YoLd1`o@KoG+Lh%UH(3zYInJqAiWRJ{Dp!&{qBvtOxw!UVrviB_Y&dES|Z^&!^VGlaC`9d>7TSG)5+ePt#LLE zsCf`)^T(JD69dB+U60;-3dJJ#s|ob6b7T$DYk4vfeOIP+#$oR%q5p^C+t~kiB&lbd zaokSAX8gTiVw=4QdA(9HcG!N%C6UDhm%m6q2oV!3UtAh`rLKfIe)g}y=q2RISoMwO zTdGvJCQwg350MXV3JPyKnU4{HqG@Pf_A&iY{260q+ZHllCRKWh4YYW z_MvhgvVEtHmmB*4j}S*{bt-YhsFLio!ncUC+SRcK3lNun7>&pP*IJ||q*rDpl!A<{4L7iE8 zvh4%M7ct1Yz)X|&LlRnkp}*0}AZA{uan-(ZV35C&qEZC=p^vI%*I45bk{a_o!)hH* zhI0QkOZBGDfPCDCv<5Y$wX44J8Q5%n_5)GyY7brwfe~$id0z}|mGfeFJM+SZNc-`h zgH`P$`?Rn)m3`7%zAkc5ocH3yB`+qF>h3p1)2{9SebJJ(!rv2*)s2!D6wOFbIu1?a z#9KS?2y7S7X@XKR=(aJW$BkBr#X*Hs=_9N{$|`>E#eIl}VhhHtX%@wf(i`*@hG!N5 zOvW(|nyXQQ-0Q;VFuyNliGe)MkmFTOB>1ukuQ$y~cfgd@t~c{_TLxb{|4V8$XbvH* zN_z6gM=Crw^m3awvg_UFu{kCFO#+$%M;^ly&@8cd5P&*CylvgKGu=zT?Cn@fza`3Oq5UvD928 z5xR;nPYim&oNf+`cns~^@hSE0d;q!JjC9~dSigZ9@F&%&>$KG%gqqvytXmFdu}H2&WNpcu-D=7g(<|* zG?S29{Z^*xHb-a2>&X~SBa6w%w+0EAmIs{Q2*|6cnEj9R@36kb8QGsqd6=nLH*8KS zMZb37E~-Ot!y&%;gG|=bFPc)uuI&L^o?e>f9Leq2@@6C_+b5uxvC0JqWU`231ab~W z#IO?7?Q%;W3YYk6RWmy^S20$P;+aV_m>c10I=qUD$zXdKcsu zHzw9R9D|(l9fSNm`vi`XTyNN7mht>#@fkxu%;9_&x&t=KGUGlykNYA-DN!Wp6(2H{ zah5WVSG07W;49ieV3DSoiu9lGMlBgO|diab~ykDHD2BeG0;^ z!EBk0wX)pLkhiwogyuQl+Udx$K`X>zT;Pd+RN-&kC_UQCO^4q?97H z!*iP5f>5=~M#l^Ja!aLr$VK^>Ttl;~<^~;?+Q|a6L{umJJ_$Tn1rIEt*llx@Vy> z&rcx8-BBe^P9VrA>)#>Byikg{t}t7?S1bB<#d4*|KumLu8fLM*{(FlpSLCWH^2zau z&hxBW6o&d$X^qVvynKO-=Xvj;I`U_+hrMNt`1-^6B{#_`@1V_cdtp_j>aPu{UT*al z-IwB-5|nF_npvLg0-;E(aBF%atlasjLEgo0R%v>bd?c^@Ke* z$IElnirO~`8unT?9bb=GFfE|Uov|j{q_1OEeFRWt-KTP5m6!C@9k%&_Q#mr{yk9~( zTGEb6P$Ye~ZwxOrtn^A-(vPOg3d|jwf8FSZ`VnI2d`;tkHeJJ*MNGHuwNu!E-OM%= z_Skj@0i}2lbK+)<16%t~NGYb3u?kg=n&W|N1oroVY&ya5KsLAW+dvlgvBo91yjGM% zkSFO8e+ZS)ip|t*M~k(O=y_WiX;H>CNAGj{Xp{(oz{`A zH;rYf%YGhv8ws|Yop^*Rd^O^YahEekyNj{ZA}tO0UZqdq0a+hVBFTZl@S_VYd%8n) z&F@AL8H=w-I20@{Vtjcl3P(zPRI8oWDagL^L_9rgT8`DbAGixl$!bvM=07%r|8JKC zlzq>ODKB{s+y}}WYRTZ!6*5Sy(kEEV16BAL%AQt ziQ~nwBz7Q_=8W~$>fXeQ-(aQI3n;<{Bl3gCujYG>Eri2S(&T8@!$Q;_WD#MT@#umW z^mgZ2*eyGw6T%-H&jCyKP**OaSC}+>CJ=TCsPkPQuAiBAFf_lC6XyWtXe4s*C)KCOuiv*J))N z0uRIc1g;KUXPKfB_yCnAfkK8YKd)6VK}bp?k#yE;Nx(+Xd()q@pI^0U@hK?q+RsiK zB7SkS8&MCebNh_k<&+>{-pp_3Ajo#@+WfSSm