From 0810f20173e1deb48786996e72430d98934f77b4 Mon Sep 17 00:00:00 2001 From: Egor Deev <67710823+IGlek@users.noreply.github.com> Date: Tue, 6 May 2025 17:29:20 +0300 Subject: [PATCH] v. 0.1 --- api_app/__init__.py | 2 + api_app/grpc_client/__init__.py | 2 + api_app/grpc_client/client.py | 90 ++++++++++++++++ api_app/migrations/0001_initial.py | 33 ++++++ api_app/migrations/__init__.py | 0 api_app/models.py | 25 +++++ api_app/services/__init__.py | 2 + api_app/services/scan.py | 66 ++++++++++++ api_app/services/vosk_recognizer.py | 51 +++++++++ api_app/urls.py | 8 ++ api_app/views.py | 77 ++++++++++++++ api_project/__init__.py | 2 + api_project/settings.py | 69 +++++++++++++ api_project/urls.py | 13 +++ api_project/wsgi.py | 14 +++ db.sqlite3 | Bin 0 -> 225280 bytes manage.py | 20 ++++ media/uploads/audio.ogg | Bin 0 -> 98293 bytes .../uploads/Деев Е.В. Резюме.pdf | Bin 0 -> 213616 bytes proto/text_service.proto | 18 ++++ proto/text_service_pb2.py | 40 ++++++++ proto/text_service_pb2_grpc.py | 97 ++++++++++++++++++ requirements.txt | 9 ++ тесты.txt | 13 +++ 24 files changed, 651 insertions(+) create mode 100644 api_app/__init__.py create mode 100644 api_app/grpc_client/__init__.py create mode 100644 api_app/grpc_client/client.py create mode 100644 api_app/migrations/0001_initial.py create mode 100644 api_app/migrations/__init__.py create mode 100644 api_app/models.py create mode 100644 api_app/services/__init__.py create mode 100644 api_app/services/scan.py create mode 100644 api_app/services/vosk_recognizer.py create mode 100644 api_app/urls.py create mode 100644 api_app/views.py create mode 100644 api_project/__init__.py create mode 100644 api_project/settings.py create mode 100644 api_project/urls.py create mode 100644 api_project/wsgi.py create mode 100644 db.sqlite3 create mode 100644 manage.py create mode 100644 media/uploads/audio.ogg create mode 100644 media/uploads/Деев Е.В. Резюме.pdf create mode 100644 proto/text_service.proto create mode 100644 proto/text_service_pb2.py create mode 100644 proto/text_service_pb2_grpc.py create mode 100644 requirements.txt create mode 100644 тесты.txt diff --git a/api_app/__init__.py b/api_app/__init__.py new file mode 100644 index 0000000..2126d76 --- /dev/null +++ b/api_app/__init__.py @@ -0,0 +1,2 @@ +# api_project/api_app/__init__.py +# Пустой файл инициализации для Python-пакета diff --git a/api_app/grpc_client/__init__.py b/api_app/grpc_client/__init__.py new file mode 100644 index 0000000..48f03f0 --- /dev/null +++ b/api_app/grpc_client/__init__.py @@ -0,0 +1,2 @@ +# api_project/api_app/grpc_client/__init__.py +# Пустой файл инициализации для Python-пакета diff --git a/api_app/grpc_client/client.py b/api_app/grpc_client/client.py new file mode 100644 index 0000000..2b1d7fe --- /dev/null +++ b/api_app/grpc_client/client.py @@ -0,0 +1,90 @@ +# api_project/api_app/grpc_client/client.py +import grpc +import os +import sys + +# Добавляем путь для импорта сгенерированных протофайлов +current_dir = os.path.dirname(os.path.abspath(__file__)) +proto_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(current_dir))), 'proto') +sys.path.append(proto_dir) + +# Пробуем импортировать сгенерированные протофайлы +# Если не получится, используем заглушки +try: + import text_service_pb2 + import text_service_pb2_grpc + print("Успешно импортированы сгенерированные proto файлы") +except ImportError: + print("Не удалось импортировать сгенерированные proto файлы, используем заглушки") + + # Создаем заглушки + class TextRequest: + def __init__(self, text): + self.text = text + + class TextResponse: + def __init__(self, processed_text, success, error): + self.processed_text = processed_text + self.success = success + self.error = error + + class TextProcessorStub: + def __init__(self, channel): + self.channel = channel + + def ProcessText(self, request): + # Эмулируем ответ от gRPC сервера + return TextResponse( + processed_text=f"ЗАГЛУШКА ОБРАБОТКИ ТЕКСТА: {request.text}", + success=True, + error="" + ) + + # Создаем модуль заглушки + class text_service_pb2: + TextRequest = TextRequest + TextResponse = TextResponse + + class text_service_pb2_grpc: + TextProcessorStub = TextProcessorStub + +def send_to_grpc_server(text: str) -> dict: + """ + Отправляет текст на gRPC сервер для обработки + + Args: + text: Текст для обработки + + Returns: + dict: Результат обработки + """ + try: + # Создаем соединение с сервером + # Для заглушки это не обязательно, но оставим для совместимости + try: + channel = grpc.insecure_channel('localhost:50051') + except NameError: + # Если grpc не импортирован, используем заглушку + channel = "dummy_channel" + + # Создаем клиент + stub = text_service_pb2_grpc.TextProcessorStub(channel) + + # Создаем запрос + request = text_service_pb2.TextRequest(text=text) + + # Отправляем запрос + response = stub.ProcessText(request) + + # Возвращаем результат + return { + 'processed_text': response.processed_text, + 'success': response.success, + 'error': response.error if hasattr(response, 'error') and response.error else None + } + except Exception as e: + return { + 'processed_text': None, + 'success': False, + 'error': str(e) + } diff --git a/api_app/migrations/0001_initial.py b/api_app/migrations/0001_initial.py new file mode 100644 index 0000000..1cca455 --- /dev/null +++ b/api_app/migrations/0001_initial.py @@ -0,0 +1,33 @@ +# Generated by Django 5.1.3 on 2025-05-06 12:35 + +import api_app.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='AudioFile', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('file', models.FileField(upload_to=api_app.models.get_file_path)), + ('uploaded_at', models.DateTimeField(auto_now_add=True)), + ('processed_text', models.TextField(blank=True, null=True)), + ], + ), + migrations.CreateModel( + name='DocumentFile', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('file', models.FileField(upload_to=api_app.models.get_file_path)), + ('uploaded_at', models.DateTimeField(auto_now_add=True)), + ('processed_text', models.TextField(blank=True, null=True)), + ], + ), + ] diff --git a/api_app/migrations/__init__.py b/api_app/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api_app/models.py b/api_app/models.py new file mode 100644 index 0000000..74f9482 --- /dev/null +++ b/api_app/models.py @@ -0,0 +1,25 @@ +# api_project/api_app/models.py +from django.db import models +import uuid +import os + +def get_file_path(instance, filename): + ext = filename.split('.')[-1] + filename = f"{uuid.uuid4()}.{ext}" + return os.path.join('uploads', filename) + +class AudioFile(models.Model): + file = models.FileField(upload_to=get_file_path) + uploaded_at = models.DateTimeField(auto_now_add=True) + processed_text = models.TextField(blank=True, null=True) + + def __str__(self): + return f"Audio {self.id} - {self.uploaded_at}" + +class DocumentFile(models.Model): + file = models.FileField(upload_to=get_file_path) + uploaded_at = models.DateTimeField(auto_now_add=True) + processed_text = models.TextField(blank=True, null=True) + + def __str__(self): + return f"Document {self.id} - {self.uploaded_at}" diff --git a/api_app/services/__init__.py b/api_app/services/__init__.py new file mode 100644 index 0000000..ae36dba --- /dev/null +++ b/api_app/services/__init__.py @@ -0,0 +1,2 @@ +# api_project/api_app/services/__init__.py +# Пустой файл инициализации для Python-пакета diff --git a/api_app/services/scan.py b/api_app/services/scan.py new file mode 100644 index 0000000..513ed6f --- /dev/null +++ b/api_app/services/scan.py @@ -0,0 +1,66 @@ +import pdfplumber +import docx +import csv +import os +from io import StringIO, BytesIO +from PIL import Image +import base64 + + +def extract_text_tables(file_path: str) -> str: + result = "" + if file_path.endswith(".pdf"): + with pdfplumber.open(file_path) as pdf: + for page in pdf.pages: + text = page.extract_text() + if text: + result += "
" + text.replace("\n", "
") + "
" + + tables = page.extract_tables() + if tables: + for table in tables: + csv_output = StringIO() + csv_writer = csv.writer(csv_output) + csv_writer.writerows(table) + result += f"{csv_output.getvalue()}"
+
+ # Извлечение изображений
+ if page.images:
+ for img in page.images:
+ img_data = img["stream"].get_data()
+ encoded_img = base64.b64encode(img_data).decode("utf-8")
+ result += f'{para.text}
") + + for table in doc.tables: + csv_output = StringIO() + csv_writer = csv.writer(csv_output) + for row in table.rows: + csv_writer.writerow([cell.text.strip() for cell in row.cells]) + table_data.append(f"{csv_output.getvalue()}")
+
+ # Извлечение изображений
+ for rel in doc.part.rels:
+ if "image" in doc.part.rels[rel].target_ref:
+ image_data_blob = doc.part.rels[rel].target_part.blob
+ encoded_img = base64.b64encode(image_data_blob).decode("utf-8")
+ image_data.append(f'`c{cMUkhbtD5eiyR_86q)3hCSe2H-s@cTbzobq!p@)x? zvZePXc3?l}5`dbG+j|E~Z1>^*rb;$RE@U8271b0c>LE^u62&p%rZzUI?mWI4Hj$oC z^b?l^YT!hk{68dqD~j2Z&*B89`_#NH}?+i-`{=X*>h;a z7PbZS`1#i3FdhegPr*CxBc7~Q!njX}?DfC)^xnaXFYf;AC(a@}HNFo#2GV!*%D-@xU+wBfT4urql6u zXz(`Z0ygp~d?S86c0(?jZbLSYk9nfVJH}8aqCVc_#4($kAbp^yD{9(BB_TwVU40H( zp4UGp@u4x*O%)JbDE>X-15X{KUfkUYyF+I-hUwZNR20OA`AzU`J;5PPzutUUzOi>8 z2)l1^oBBPrrA_NPZWtHdK7C2eUx@Uc%-~qccifnP`le991nRrd$2@rEsl9`jUfO*y zItMgl9+qtHap2w)tg|-AU$p0Y)ZSAEnU~(tERKmE+eP^O2F#*^KRXXUd42By!**Z) z8=LZMD29dFJU(?v$u^ @< zcouR=vY_mzIt2@hP%W5N4X*ATP}J^2FRbxPQeN`v+S!`FB*u53_K9uepzucf%WLJd zOqU1Wt6q63FzsGg&UJt3s54JBW%b ??>*@4?j1yt+fzb*e+1$w|f#n z6w3;D`VI(coCxB#1)aF?-c2ErCs@948|3`-i5zY%XD*I);4`(s(WWSes%=m0!wFQK zI8ZM~M9>UP#BPDG+=(#u(1w+wZmTE$gkU$sIfR-gFQtrg42{Qcf{4P22xhxn8^`9M z>5VV98l0j@`X@gCGEV9mr?+LCvYA@$r3GOGoM6es(;(rbu5oHxLg=%67qkqJrKs!; z5OQL?_=)juoIRoU^xY(J1kEzpz3V$KXJTt#PKYs}2z)2g`6=Gx-KM~TF2l>Pgh2A- zQ`dK%e>o;vdf*ayw?@d&B+t^h>(_S #BB|L^bI*iY^3|F8T1c>k^a`Tpnje{=t* z;05|Y1P}p401-e05CKF05kLeG0Ym^1Km-thvjm>Ibv3%Xc2K~HEJdGc`dGd4(VJJ9 z)7Q#W_9ozi2tuwtd+jQ=d+wM` v!xs z fH-F(~`{pM= z0Qx}$5CKF05kLeG0Ym^1Km@)=3EYod-`R}{H|Dy!INY9?Cqy$6yo{W@j0C%N#ETG} z`tciZy<3Ify>Jp11O*9>U!P0z@#7@$+b+z(#U#hC&nCfMfF$?18^PiA^I5>Vvyngb zF^CMm0w65G=?dah{qRkwJNA4ib#JZvnW$^Uw<7=WapbkuXCkjv-b8-+hamE&h`m7H zGcf~YH_`5X6r#O+|EW;Z^`hof&-L?<96+3V#8Yb}w_>eTJc;*_<9KWRw&Ja|Tfd1s z2k}0EJr$_76)8|`{fK=SV%+Dhhgxl|s7^Iozl#J1*Q0O^WS98S>udGSMPI9UCIMUl z2@ vn>BaMNQKW3C4ZpNkzRy&d&qaHV7S#ZO%eH4m13rz!^z5xA=XCBL>- z^(1_)V;BQ2VFWSOx}C&WD-}HcFkG+Lec|P6fifq-ffm8{kHc+=-IwlN4Ra5dnWx!@ zPj}%e1l0D`b^fO@)(RZQfvXNdoV5n0an>q?&mV)!3{c9efexn;0wuzSPs1&RU5vUC zYOz_}o~p8W^~xT^jB;1j`fLJ%xND_0FJFP120`q#W}AQ@_FBEo%O8O|24J;U0v$JR zgQ$U`n>U|?3j|MpiU^fGS#_VP3NIqz#e`489f7AYX07OUytSH}m~b}$Vy>0kj=5Ix zH0E8n6!7%R(LllNXn}gCaf1E-$Zd6J|DVIo|9=ENfZy8x?EYlGv!B_g_g~t7W`Fn2 zKfm**cmDG`e{|=!?|k--dFQ9@WbTl6Uc7Vj_P@COr?>x;+h4l<8@K;;5P*IV0Ym^1 zKm-s0L;w*$1P}p401-e0;J2P%+l}sCbT>tQ=-Mu|dzoM9#p96m8gJVj^zn~e+r7Vg z!AtbQhp+A4+dbzG`dAqEg74?~ $IjXqeME zU(Lbs%eBb0ljS2Hytey^-EA+-b79UGye=R9=(Sy9_Y(igv&R8zv0I*z4?TBn7u!AW zFZtm9wcQtYH?EOqLIt*+A^XQ~)&c{M#+^IYc3;>%b#~l-=GyK{yIcN^TOoln4vm|~ zuhv3BkHiPUoHy=@r$hbDJ1B01c5u-dv3LA_EpX#Gcq*iN&cSf~L)V`E)b1H?!nF@y zdm7t4=Q_9=zFf;ZS^i&n=GxOQ!vTPeLm=4yhhO@Seh>jf01-e05CKF05kLeG0Ym^1 zKm-s0MBsf)AlUz3umAVn$HhcNLj({3L;w*$1P}p401-e05CKF05kLffpb4P;{~ze; zM} ;Ekn=qn {5%LhKN5aE z7kpm-aQOLb`1zsm^Mk?XwP(W5{qXZn_<1|{ym~AAycvFeApCqf_`Gr>{M-vap9(*( zU%UGB?zQ0KYVdL8>eZ*8M*IKocjH9mLj({3L;w*$1P}p401-e05CKF05kLfXcD8>1 zAHsnMAOeU0B7g`W0*C-2fCwN0hyWsh2p|IQQvzuH|30l)R4haQ5kLeG0Ym^1Km-s0 zL;w*$1P}p4V2c1+|8K!SUl9RB01-e05CKF05kLeG0Ym^1Km-th_bCCi{(qlVEGiZv zfCwN0hyWsh2p|H803v`0AOeU0BCtgOt^c=Rps$DkB7g`W0*C-2fCwN0hyWsh2p|H8 z!26WI?dz$XTUWlgv;WCE|JBof^3=C(FRpd3{<}|IzxC#I`__wBzIgKA?yu||?fm#T z2oIilcJH8afA;~Qn~Lg-o;y7B9MwJ?*i+APj=$^5AuAH3s_@eJ2p>+=Q?X_$k}D@u z-N@bZ!57lsja14Pquq^s`fix3uH3!%;IDsZ?_dNfIq$4esNo^#CeRdv%eZ{#nfmO! z2G6b)Y?X7h*1PL@xzKml`jyDtlcZ3B*FLy+Fc5Yhh?^1|hgzyV(H%#hn$F?odr%0T zmKj+f)lmNnkw0_^<_nP?BXLXl3rPa-XY>H&v1j%Uej1c7y_53Cl0a{XAaPmJgv<5* z;3axLSUh**;K9?e-G|Xl4q@$w9~*Tx*0*^Vpdx6Il~{^ASKsGTfAn2y{(SsXTYZPz zwpd=O@wOp@Nt}`NSAh0H{T?^t0NP1CZI$3c>_GdIiUn Klo|vjMZ-yNS>OmYPyH+(ozrg z@5N5@`?`h~L~hxPO25jb~j^8XtFoVe<;jz&YQg-&)&EGZrtVE+0%_9Es>qWdqfY zlq=0hxm7Gis`XqcR_{d$sa_=3YF2V(5L8N)n_v!Mc9*8Ar_!l qQwz3LZN-$PM zl0j%aR3ul|Wb^o#CyKmd40R&v<4sN+v&jk42a39) zrd?DLLPXis=b+_z{eu!88dKd=0nvrx-y=To)IsXS-JP%-b!KB7Vnanie3)_t-_~<3 z;`Hmyhvgf42ZFHs2Dho-3!P#Z{leR)FRA$pk=~OT97}n!Ruaa2GGhknTV3swiQgo6 zvOMm=y!Zb(c ^ye_|DfCjz#H;jN4Uh$m5Da`AmX$$!|rwRaGU?Y{A&n+gbv8-8r6Vr%$1A9DK= zgS%A3dosXK(v!8OAnKE~qrZ~2TD|gAVA{P9?7F{n)S0K6vU=|E>KTOR0zVzJ!B-&V zy$8MBy@P0U_n{cdR1DD^Ob;jez!u$LF?Qj_l{0ehUI>3rH6mKpX51l}vjflB{^EQn zBpvIQk1lBcKj;t94 9w7!AHAdRGq+>6MmPV%E2%60(+3Wo{-1Y0|McJ6`Sb50i`Rwd-od?l zyFYtBbh4Q0;&9{KKKpde)p|DYNqj30K1}T$H16#_5JIo!+CSr{;okb8>RY<49)@mt zk)FWvR1K?w)mOo(;S-{jpc`Y{Wp*t-Qdk$r2%gho9Q^Gp*G+oA%rW&Dp>}@JV4t z>T=^XqPP9XTU$2Zmph3Mr55i-T-A5Cw^+8-ykv{w!3Xc}h3@f5sQAVyzWKI))+M$H zc#`_Mu;F&r-9<3l 9Wh#3U z*vr*)*lE1v-HYdnc}bM_RNx@LO+6C$R)L}NJZn4^6;(MD-Ai_m0 i+`aeuzwvyywf=L_?GEWw)$ )eBGaY>Zd#$JaTO^T9 zB??eQXX5|Fk4Nx(kP~cJn*;T50?kJpKpQ;YHJ*pI*&7c|4Qy}IuX$`ISR;A&lK>~y zvypysE@3-|)6KUhmb)%;u;G45&vEZT{$TH58ryv^JGcE8>a(>?b?)>Sp-B>>k@BfR z#|>pG!4IFc-p5CLjO6p%gy$6s2yC(o?C0JC{v&$_G8CrwZiQLXJ`@E;6%}IZ+~WCc ze&~sdabD(=6kwg^?!6x+pE{`Ad)#L4+OSTBaN_Lq%^d>&c25x8c>S-zZ0wy*h@6{) zoz~xbYUJ 5$8&3m_&ugz^p(3y5;=@CV7z-|f>Mkm+T|R?ZaR-h)qm z5)NHH;qf!&kkn|7Rq11^-n5ZBmzeS<^un-oB4x{tH?adN*zV_!+h5}odk0Hw_u>Ag z{cVz5$UvSdYET`AI3Y?D$B3K5fSXiLt(CsyfbJ&J6N-M~l0c=LD0lbX! Xn^LTx&?)KrcP3U`SJLfUK^9b=TGX|ZO`E >W_l z?n7aFF0rlsCAvk<^139(dtw&M i&;Agg{aNA`G z7Ykt)hoPiHj+GQjp`_4=FDb{hOAYywi0>@<*oH4j7I4}W8!Y&^fcMb;|98=+fkYz$ zhyWsh2p|H803v`0AOeU0B7g`W0^cJ9(E9&-q#}?ShyWsh2p|H803v`0AOeU0B7g`W z0*JtOkpNo%e;45*(TD&dfCwN0hyWsh2p|H803v`0AOeWM_Xq*B{{J4S2&4ugfCwN0 zhyWsh2p|H803v`0AOeU0BJf=#fY$%tMYu>bB7g`W0*C-2fCwN0hyWsh2p|H803z@` zLf|&&ab^Es-P!+#@UgS={P&1jNDV{)5kLeG0Ym^1Km-s0L;w*$1P}p4;QNR`<;wM) zN$mFVzt81FHI9@iRblQ^8m--@X^Fot!ar_tU*Jem;Uz*KRpr&`U_jy|b03HQ*$6?s zM)R-X#H#`=@GM=~JtI&gG>U HK;ku=eHHQ` zcp+H-?>zH;gcPZY2p|H803v`0AOeU0B7g`W0*C-2fCwN0-!_5kkmAbzUj*s6{l7f^ z@@)(Gt|d73pX{9YPb8UBMNSg#YYNBRr$t`5FW{njU!!G_(PV}r6ya4%(a!l#@Ye|Z zRgPhKhIsI&v)w$-Msc(uq)6!exPAmHQM)s`qIbd?>uiQTHjF(>Pv|1)P;G3dNb% z2>w-uV;BzqG3zIeekXGDZ$*xNBXacbM~?mueE+ei^%KGSUpsme{`)e#Ir_@cHy?c_ za`Y=lUp@Nzqldx6(KnC2eDu{vKX(%OZwC)Y-#Gf>qhE?ZtZzJeBaHPny!crN`lXY2 zzq(HR2d_b9@cqHj*Fn%1BcBG5Up)F6i2X+7=$DV)f}Fn&fuROrq^}-*?cRxy-#+?M z82yhzExriZe)Z^05cq5G{KxR;t>6vl`R37Ek3N5*)Hly2Iv@PUVVS-X%6 {LVbSeTW|g7JIZ`) z!bnht$fI96`lCmm172@Ns!Mk`HNW-Nt0zRh0cHIo$mi>zo^#&1Rfr5`;2 zT><4Q5h%zXAH5k=2}C}I19kA|;iJ#L7J-8PE?|Qvi2HVsWmuOdS)2!S5)KjnFwE~w zC@s|Vx86EQ@f}j??>>4R^7sQ#`0XGcQ13)_Q1B$LvnKa2FjPQx^wmp@F+c=jJ_m4u zqCWa8JO(!NO)&GX9({GA|E~c7$ZVYjPQ8lLufjjnPDg_F5GWM+G>Jz7BY5=i#5Thk z|3e52Y5-`QSkciJf; *fkPKUaVLq-7Cmfjkk6a MRHTBJ-w;#P83E+g*_WG&eej$8!X(FhhuSG!0AA z{lTNxAN^vG;nCYrUx87rwS|<>n1J)=g1#{@BnXB$&=&`l9T@Fr;4PTl(VHh-%AW;f ze&>?1f+B%^gY-vlge~doVe>y*J7L~G7ub8`eq;>_3jgIuQyr@VTbx9|q~C(#f&@?w z9s*iHAwnxZ#uxM_>n=IaEDR26a9y|)K(DV^Ls8a+1N=ZKupuZRbiI(%=N^3)a0N{r z-a xPkX`$&p`Yg1;_2VCd)}P&`kUpvZ`#|Yp-5*ytDEG~EzXh%ILI=C<<=?g1 z*A)s%gXKK>{G(rt0OX7HUtQMRb@7A#I0OKL)T3Vt>wjJKTeTC&`FUUhT}C*7h1C~S zLC~dsIba?D`ztT>(eGl|i4DJ7kvqDXp4t=Vq}a#i6PD?1pbMzhb_~O6C^Hzk1G^3< z3{djp0qkoK25s(SP=Y=)0+N;K!U3Cj49RdLgzg!}!Q+M W=`H7)u zPhN?%b;lFOk%sFj`t)>6yL@`OE^s)8{(e|7UkXbJS_Ct<<6brFPs6$F-#z+Om +Jwn_))0?so(Ggtik*WP&Py0eBr8_V-^6WP@=8?I?)$@LO-a za$+Z6dG*XR{FMl-Kj>fx00Ro?oT)TW^~+%sdV4eR3L^&fvOP$`Wc)F+$>TcQj(a@Y z37Xnt=8;cI?014;8%RQvJ)si}dJn>O{lx$P6hFXxJo|&5C8+K{fSiMA!IR?)x&;`F zf92Jq-vxTV4{3wCfMT4Xy3ywIAyx8zh!)1-ubdjnJFt7lN$+vTv{_+2;dJ+;$( ?>ehVxZR%c&0Hsrq#z=FJC zf)O XH!|6keJ|7ZLE zWdA?ie|!H6`+sxag%{`t5kLeG0Ym^1Km-s0L;w*$1P}p401-e0o`k@`jcYs4zbsn% zp=epkRQ4vS>1z5|{qP LOw*js^g*Q}Aui(OEnv;77 zzq@@|0q!6K7qz~Vx4Vz;c?8;=Tsnda3*QWHmjpL(9 xZ=6Kc?dcF*&DweA%fd^aEInAa0BCY zxEi{?lLeQi;1Uen+c>>tc6>=SxCjE5If4s{a5oG74}Jvz+&EeP9lk%Q5V%JJ7d(FX z)uS)KU%vr&Kf>ENaE&Lphz%uv+#Qe&=o3l540MBQEx{F^pjzRg34A}k?H62Y0ab%* zX5r1V D2G7#5>>9|51#+gD_+Z+BG}ZL5*ZG(GBSjanSUnNTTCr9y z8EfQXu_0vRr{Yn*7Ry3ltkw#P5tMcFlY(;A((!?uOVp;tAg)`7&_N1{l}p7Ipl7TG zFVaG+mJ7Jl 5S(TlYXh2@p&V^bc;=*-0cv8 z(I>sEPGik6<7rb?wS9hG#RW~Gu&T)(^8qG{<7y77IxKPs=`ubLcaTazq+~oMAM>f@ zsaOo+`l(bLYCk^A$6GaJDA!ARX`0HVQ-%6e%El9o(yBF&wR>i lcKM|+1%E%H$b5@wl9J_+Ml1O>Q3A=ErDPNYd%aU2Z-D- {t72qe9&~<$fL(hN3JnRHf^j*4) zvvQ4!#&QncAVx(=8IjX^PR1q)qU+{}Rb6TKY&i2rmf4y|>!jBj(SkP4(^j|E>1$AJ z)*uZ(v3R{+uf 5Ect+^W@k6=GaB zhUBu;@9ShjPR3^WW=pA9tsW&LS&ranDw=FI#_~$dOJY+@x@0!7Oey2OQ}D5&%}7x( z7ZtTJ-|iZn?r=t%cocfA++sPLc-c5Z#j?qyYgFP!b=BqxtmwAuMX_J5inQ*Iv}G?^ zi52N(nPdjBBu>+`J?Rq76+JJHMyZsTjLE#2?YFa ei;qesdhdCT=k*I#{8V zD#^;2p2VB|
U xC;#fzTSQ--XGr(4l9rDq$}WJO%C&-0{R;l@n6pVqn(TW S$i_R_R(pHj0X2IMt=y;#+mUktx&6az-yoc_PQ;SiVo&rq!S4m#vl) zon$K-AFH|@JY{E6BsX6A!_j2en_6wXV$o4PMzrlkhaBsLMkVS^e8Cr{Rd&!Gi$x_@ zbm|^V;O5jaq0P&_-|lv8x0z>B&B37R^$bsDs%&&Qv&-IMgpXyixWsXf7{IT07c2FC z(upUtGquzcoOW{v&@-)NH9IdDl|-XcowIE{uX wS@FyD21O9XT&G5_Rya#E zbd0H%JfDqQ%Dh)2qmwjVsj!Y;(VB)n NDO)X^({jtj}Qv=cJ*Qe>hoK7fqv5;n+N+uag8F^MHMC(bqhn3tk zuV5)j^5avP#1e{T8WM*W1ze)yoG~D<8aY_zv(-X#v~;wwH0oFTjxnv(N`%mgI&w6f zsnSsQMxxj(H^&<0yA8wWs5K~8q1~EsF*>_sa>bZZ64YdSF_Uda(DOJqi?%SnP>@n= zqi*LjOUD?b!9wG4HkC2kM7H!VF%Y+X%Aa7l&O}Rci>1UewQgA`^RC$+F08Rc^o_+V zMlb!S+3gX$p}D+h SQwR zQ$3|LBK#Teb`- KMtxuNbVmH^E4Mdh9}f=gu6QpfBt;{iriGmVugrKXvxr5kOoAZF4dv)N->6}sArMU^bf z;rw*fB%I<%vCV2}NJ&$}Bh7fFB6Nl7XrxOFnM{)LOks?RtDI+~^Y|$4a}(QT`q4gT zIkvA)n1V1YBwcyna$crVj=C9>950}R3}Bj6M3?Q$q_LVb$XW-VR%)wCV-_`tS+nC- z41=#Os8WwAVOl9y&9(*!PiuFRr72Asf;cH#Ij Tf;)LFBwFo z-!HFVVwi2RZL&LnFY>}=j8&sqPiw_epUHJ|Qfx&ot1Gs>P*zIKjXBdsoygO%?jY!W zx}%}7G}O+Ni^-GeI9szC&Pu3jWFxBgdn_|mY^&7fU0*C!i|&F-lJX#n&3YQu$ri9- zhQji-s#2?|V{OFo>1ej>)2cUj%k!DyOO(zfGj&(V6h@`^z^Krv*sNAxR<&HTIj755 z(eC;TUlOu>r!$RZtj=tn^GZ@aKJIqo4BabL7q&Vsu+FMrWmcY2h3R?68ojq3q3avb zMN21isWH#CQha%pjU_EvE=^+9QeVM`)oLr5>|t~GCqu+&s_K_5YCtXOGgH^vCP_}l zBuvcXggnp+dX#IHhjnh$##(b9<9jeS;bGoPdhAM$veK-*$naJMYot|NjMicaM_l1d zQ`B9_jIq8gV^(*BN6o^l$Yu?RY$axPT`xA8gXkjRE>~Fs#z8|YG$?$rT9)jXq(@^> zv%M_k#%5d`G5vJ0)Ddb+Bg^#cVqMG;glbp1jT|Pg2C|aSn$b!DSMugCwX~e1S*0dE zHm-@LG$D*pyOVEE=&IYA=ygh#MJkaaGgvp*n}JD2O{?wB{8Y~amjRLI!~!uH4cn8# zG#0DGJt@kP;)=tTR8?eUi!5darA15TjMY-}ZFip31|BwtDgLtE9VfGLrpGX`XvbC^ zHA~ytl4%Z`vlKO+k` fzVPdhk zz%rblPPp7m_c^j;^r(?gqN7&Frlonxaf_+OGA$X!`l` @2?27QXI{_$sT#XWb!LNU(L7QYWXrKPu1_ zrjaC WV7YA_N+u1HTsMe1~Qp`Wu-YTC81ZY-YbRwZIlU?@K> z#nWoJ dRSX6k95DxmWGXd)i=V&-LU&qCMR3n{>;ox_!r5aH8gsP%+6mwonrFkw$qF zan-ULUWcZPUbH3ZPL-Chf{^DWHNhqQ@^oaus%Gjg+E`Za$>j{qLAxCoL|Pgv!{vMO zEX0`=M%4Rt*5I>3&CM4juI<)g4j@lE9c4NaYxPmgs5GXu;0 0A5aULT zc02AbWkDlmD+`; @7aNw48yVwLe}t38 zR?l9^Gp1B<6lahV5{X8&HegtN-m4}uW`|{!cv-IGnoO_du$&TQ2v2lr2{+o)E;tc} zYMzc3Gjbo6RQfzSz#8opWi47$vd{OU=>nNH>|$4)xN~<|&nD%1)aMmhQH8!bV5hEO zmBurBsrKbmHUZ61r8&du5`Egk66&~14vSLFuMMN6rI%hbv9_v-Lq4w5hlE&C``N5m zAC(9Gc;E}XOt7f}pG}U%YIW9YXw{Y9_p{)W5XzdGZV?GBN2atsEzC<;r9)SpB-U0G zy3dyzlsCq@7Vr19e0pK6{AFfoWij5WRt37vCHYEqC~2#1OA+kyD#MbjB#D(u&dTTp z-mR#MC^jGTW>j{NY|p{nGQm6{3B!0IugTVs&NsbQBQ 4G~JW+RMP`HhmCEJBKkS5@cTs$S=zE?Zo(lOgKU z)kGf64Qr{6 fGD#5F?B~+kaVEk@7o069lQOQ^XDx;FaAv>(b#=}h3 z%XqnLg{-co!m3VleXc!W$!5hG)|>{}$fua-B1yEtDOfa{t*$H0lpYPvv&Ix_m5n*Y zWu`g1!weH$yfl!QMYd%O`k4|j&-lw_bKYZAcHC=1*J$(eSYi~NG&=$>8(h` zmbpfcN%z%u-6@-F#$DB-DHf)}dM6{+bNVouDbY%kh~?OnG_Ztv*Ble&c)5}t48Thv zr%FwsG)lP5dZQmLH5hr&D5UEHS!U>ReVJrdLS~L7`ZlGk_@b-Mnc^^C?C^xVsu%1S zJt`zu8NrDb{ee=z#sw^)VTmp|Z-`mG!9^RAS7va+tva-qmi0;=k1NfAT=sl-smibx zS#>G5+iqg%Y`KNyhcIz$kG|bLIJ;U!W2JQ7CRt}b=t|Xow>w_Cv%+xH)|2@RIMO^* zDi$hQXTGWvo~kYretouzXDj%$PF2(>QPyTdj1=hpTuVh4qSq@HR;HIP)`yjNIy 9Q59Ao*N0THMos9WLIo7P(t5vbnsIZ2_3|Prs_N!DU9%HiZs144FiIPgIabKZk zE+yL80uCcjMuvd^z(rvtSye}Tg)+KXeYt8|UcTRM*#q$1rSr4aNLlE9Gbg7Eu}%uj zXi+HWc%?kmQmujyPB`3M)U%0BH6^9};h;`Meap&Eo04ZxupEQ!rMwNx)|Oiz4SW7_ zg1dt@^ck&XDlQv%Qf}ksP_Jlp*S6@~oTN&bWL56yqY*aeXrhHB`7)KH>n^zO(urA? zX|r)BTB(B1laR8y(UG(U*Ieao5A^Tx<636a!*rV}tL@HcTpTy5%7PuyGN%lqMzO8P zbGjbwYr}ab*YSC_u_7%a8jF#uEY_9 IbIh{ZlxL$PJK|d_ zzfO~LEm<9s6rs~R_@pEs*8e}UEGp8H)mHsMeB`vdu$u^ewzkX{upC{@v>A= 27tJ~gi {u3JgCaJTyYv#vwTBii4@b&GEcFYsVMT+5XBPHWShmT_& OVlbm@nFX)9?nNB&Ko+PzarHUi?m@vu I<-L(=4Mqv6pFZ)Z3tbF(aoXD#K0@tren@58_R%K zNTXFkas@hxXIPwz*6p;^c46HQi@M1W{H3) oDjlvcp+_#b>SkViUKp4$PG;=Rgb@94 ztJ(BAGuXhzON(!F^EN(O!qO-?5RC2u>dE!A v_&4rsH$N!t!lA4$z>$DK1d2=-N*X& z7}`N5Pqjp7w9%e0$Eynll8>rA(uo-c_`hPX+tl-XM(Fg2kqVB|SvL#*e}C4`VFLw@ zOi)?8tPaSs)2VljUSUDQ1S+KpVu4)F{d^)BjTP;f0do KpPWwJK7icq^Qs_w>YD50ru*wu3R%j zW;`qu(^)g$Dw^gfX)0v4F>lYg0xmEyuC7#~V 20qhlPBsms`X^AUQoxDEG IK)$UCiSu8u#tWKG)Ft*vM#_*Cit(Rd=MDl7sF KV5bE3A~K#gz?bb@W1@{o zKATm&Ma8JsibkxhY5K&Ke8)1HNyBSrV_5>63Ym68X1aZstC)#uF~!Gu35!b;nlDmv zo6DFJ*gmMrbC%*sXzPPKHo2{hE0qsF_9PGzDq zPOlO778K=?Ndwj>jTvkmbyFlIwnyD+yv}QbdKXsjRh;xEL|IZ (X8ZbwLlqjnjUq?rPD0Udi{Y}E2*VX)*R4jRUqtUqopJZ zlGKAk7481FeYOI2y!f`};%auDtb?+K%vST_yr?$%M73dC!&KY!O%BfFFv(O*a$*Bv zne@A)-CYS78MpE5u)=p+>1GqoKPYny=0jDFE3PJ5re+sSrn#I($uVmT_<9RV;Z`)I z!76P?;Zc27&h@Nrr_ru6b}Zh?z 3QjSTl7PN0vSz?j( zJA}y0!7~=8X-?IKgbPc*5lL5LOe`xI*=AZ@iAlR-iZ -X* d$Nq8oH#;2E>Q~#X6NDv7|+< zHFxBAVyMFLlN!uUvO}|(?-&`JS>ZW*RqYBQ0c)3@ooq7Fk~2nfISw$he3SH>^Ffqv z6!nfjR#}%@H5ocvC`*(`_j*yi?HNg9R&BUbA5WKg$Ie=F-DniaOg0~96-;PV6J?U0 zSX!?*RvRVDoU;U|+`@__n0sjwCJIc6@N=n70Uws^k!g*TIF@H-U2x$U-B!loqDu*! ziJg9(QC6uQQ(_jin${UtOr@JBd3_IKSgU9evraOR0?#C+jia!tuw)h2G}z6S%3X5N zBYIhbw5GB-9OCKzY*}!%)=J~5tzN#z2%_E9)s7wO!+sB8b(4egAj_{h{n==dQ0B8j z-z+REExuFAag{b%jkO5AgH_ALaaC^!%2XgRrssl(dNhJ9B5XN_t
q z)ga?>e4H(pvsx!AnBDoLE5)1~pDI}`V~#V7ooIDIEv} fI(+m+YpLTsU~fst>2O z1!s$Lr6fN9KYfkQj<6wZFT89ARtsaQqP$oEYuFg2I5 ZE*G6JUL9_i$tv| z!&wc|n^h)Ius+%6U %ppu z>j<3!)n5r*rC@hEE~_QW&csVo!oc^jw9Hx*)t__f${Dp?5m$Y$+)6J;y$0Q)d6>ia zg2575yF1J*h=OlSyxuZTWKumjg-vIw)Gnt+Ue2=mwSKQlS+2%ezTrX_RLuIC)tWX^ zUaH@y^L#&7)n)~pY2#(sa4FZjPEYO*;e-g+kV(PImziZV=W($AqQF6gid6(#g-)i? ztQh?|9NK^bP6V9uTB)%9|5Q#Xm$Ks-6_;dfoQa#{bTF6VOj^ve>oA$s*mly8H4X!J z4PMcQqo@K7EnG CrMt*p-!+fb%fLxz|vM-ek6P zmnFVEqnZQTR0umgUyXQSMi?2cqFNQUT8ZieU$>LAS_Wqm(_eOFg5 aqzce zd=>hOE !A@n-_Q;{&PqNchFB9its=u1pU9MX*U{VTO`lF CB4%o}<(J!) zR!T^cMPWRr^HkP=!z{25M@*xfGpWE~tr9N7K9>=Lvmf~-Rg>W~f!JLnvA8*`(%pJg zEaokxM&t$t*Og<* kIIssq?(h><+Whc(v$DGdR0Atr)9Bx!7)-rQWy)mKDvr zMz`8_gn11-YjC`opjx!=Dp|9gZ_N9F$FDPdk6XpTDbV<$>d(M^I9$;Kve_*Oo@?9V zd1~P(4P%+rC9zf}tMlSY(3)v2WBM_^v|^Jb(g3Gjx8P23+DK5-xRHz{NAXSt29K zGRxYu+4b|V6Wvj@X4R;R6fDfKmSi+?3|M`IZ^W%M#jIeLc{b=}n!3Y|M{sggY?EBK zQsmPt9E9V#X**uXjND0EkEx|H?l0m*ONhhy0S dAHFhp(slLth8GE+! za;vnGX%D$nsXCRlL9;vWz|ohUrY%cKoU)g4J4< k3pJfFR&uj6{e75LRJH;v16$oKz4x(*Ugd*!EznEvUBbV|!{qjtM z(~)rKUUB6{4SpG@j8$Pi(wyj&_y4o^uFI}#*O{0*sZ^>`)$g#Y^T!T!4lcy?B<%`F zkN^o10C6Sw4|ftbf&d5t_+?90+bO#dfEwI*x3|om8q)l}NJWR$H=M nDM>>*axsys9?%I2=MFN g1x^VyxlRJ5t>nucANF0+}i42YSZvaoTrRk!oOSBsZbcviP= z7dNt(_hrZuD(=>fPU42m8MBQFYDPjry2>$U)~byzvaEpQI01~{G?F1 S#TX2!uhM_3r8%c7C%LO@V>DEKmen*ycUE}Qn%d61L9Ci?bf> tZ<8-Hsp$xwo*jv7tBAH>&1p5cJ($BvLiY6I1jG39k`$_u&yCH zP-e;k;x`ag5;&b*8P4qN_d EuIK&VR~Pu;{w`tA fD-l?!oN`!| zO|_sUi0$-O5H%G^v-lN($Z*`vTUCXKUOm)$d%P(doOkj&X&bXay+iKnrUr)(dX>k; z>L|{VV3{`@a`RZC(p98%AW+XOvFjq5iMD;~XW{h*Nm~w`or&~lf` e^TjlkDGI9EM5ZWg$SZ;gJQT?A}A-;!J1 z4b{Hc&mafvuA-f@g;ZRsCiN!E$OFP*(n@OXp?l|2=FA(5s7J@%tW3( ve8ytlSA?)KDs-@&n|_&R4SSBk!6 jn9MBED< zNVR2vi*H}InPEbTy>rR;XXK)TZnsA=k&PVuP7Ir-y{Xihh+|1ZBDrkQC3kZ 3~W=6p>B|;VQ-Y8 e4|hvHl`~M@i1YR_qf(s&K=Y93-p^<5wx$enaDt8rAl1n2Cbi4#=Mv0-!- z85 U_0EFn9cbW!nO;{Ls=-4ni@?~0U8tW#(4)Mg0*JiH(C#a)V5ApDH1t{|arIFq;0 zspuS5j=A|I4<^*$E(lpugJs1wklK)HJ;ZXe)W12hci3SGO04sNi4);4Fs$1VXvjC( zuGLOG3DFHz50V2?H!hrmy7qF&2y}DeuDsSj{0!MheSnB%BFk{9rc6yE)bg|F!0DdN zHf7h=K%sEJV~)r(#*+Gwjl0dfKBOwsZpD46oGJ}D-=P?IMYzWv?eZ&|cAQxh _vmqigPxvuj}Q!IySIEsq|ii7jd>8 z!Lg$yK09r@38HT8?QI4*A_s)s7Sti6bd*@pTQ2Il!yvIL?4u~Dvq!?|h|Re1hU9kA zme;sn$8HKP7IbgkB{IRr-iA#=39-mBoR(Qikg{OT>?RcFgTTq`Ofs&J)rW@K{vLR~ zd299NxR{BT*=B$^(eAjRWtE6j)JG!EztD{zIvTDhg?$RWbfK1oJlk_PMRSmL2+765 zR)EMzJ+2w)0_G1*o*icfD~70nIh|}17&&mBTOxXW>zDi85rG^IrOtR*Dw8V^k9zA6 zuvDiBvwVQq-t7XqqF@Ce-HkoTmO+pRkkoUzmHmkzG_aQ`h|M&F!xmauC$>U3`N}VI zh$r6D vqV z*-X5{!};1awv?IJlE>@)+>*4591IN{G%}Io(m<}fU7Kz@fTnEXS8(EsVk3w_99BiG zuOP2B7SuegG7f_<&`#GNB@Duh3$;nt4YzJv5DrvR4|sZmAZlcrtM!c&ttQ&-)bc=Z zDx@MesFdCz3ce5^V^Ocmq~IRviXqac<+4Mi+ptr>vwK+tY`EjkT_cZ%W^}@0n5AdM zT?^YCLxB#{%nps}p;`<<@2%f~L9%c6?EYYa{r{`r!N_F-)3xPptu8Ha<8p@KF}qu; zl`~8qT*OijzFpEg*!H+~B*RFqApp(vw@oJ$jV5NG&(P8FXbj}tsJATUZm9eH&c~hD zRka=(V0my`5GaO^5M8a3hfsinZ^O`oqW}(Q%_Xd6<;$@Y_u`siZTi5@(X?mv_@veR zEnXnq&=ZUTr`e9(tZl&?!5-B`%w1eJJj>jLP0*up?ox(S(H3&u6c>`3*cg%OZch<+ zsq^`QY8#F?s+* fk|&k1M)NMdZ)`OYu$)3aYIlCjtfnX zH13)RbWoqW^M*Zir;-$%eI& AV>Cb0qEh9qNO7Uro=3a8EDd z)#KFLzG-@gIBmFnT(}_m;pk($Vz~AI$2NC))`ki$OZU<3ddkVJF164iH@gYwEsKq= z;K~hyi;h(9=M|0D;LEQf;}D{;2`5BGzuIh$ixK>DaPSUw8p5zsd}Jg=IW{GY^_`K- zLkgU0h@#GxAn;s-(=m%z?+b#FR*)apw6VBCd9{{w&N&vC%;f^aRSP_$BX>TVi@TJV zGp?2n?Rd^zdu1%jRe!WLw`F}n^)uepGL3@?y*21l(YAIAhql+*jXEw=8nQ}3I}H#J zjCZ1Ax;0so3q$}tzzHF~Hn%Y4dYs+bU7F2mIPK&@$l|D(nyO=}iD_#%P?e037_Y@k z|6an`tn a~UYoN3ZIa}JHCXCmi$uGyT?koK^1Mhd-o?{Wg z#C)bD+Pw-lni9xvYjtihG#*D r)`5(fP{LuPmkqVC*rTO1@ib6ryB8=M)wR7>p& zX~FY)F^Bjy#>a>9E}?!2$sH$u0O8|S0@+~PPIhhuTd?~G13(JkIUe6=R~dpPNr_-H zb`zhiMrmCSxn*>vB!U?_{d_%24Zs~}%-k87Mb~q7 ~L0c@FGFWgVCAZC3RQ7mT zW4w|%L|_{@9?fndo~lzLUbv90H(rgrhny+!o32M ruXWLdOd&-GTR`AN96KOb4fbk?vda` z{V+En{Jav$gGXqUbccy*>&3qEA~lp!eCzFEzg{my7hyJBpK=PMk)lFLBB-!+DBMI( zYYQWeNaIv%cNfE19TfPM)Q&nQ`w7^2)R9z6$b+Wg)aX@bN6y@OBsSX2a_UpwMf(Qy z;Rp`MYGjhxCZqzosavjM2(}z@${TzpqKcD`r@=KISAJ0 v{ut}uVI&FyIO(c-OKRJ%7DWZ^L{K-)P+wwn zWuIx3yn~QnGP;M9X5ZRzaceW1ElMv%8EP9siw`viYYs5c~2mBOpploQ8B+lvstpRKF zH3^AlT7uxLi7Z?Dgi8<=i? 3xH24yTT6Vxbt}c&NA;@Ggiq znt#(N5H!4kS&5{dve;TKgQZO L$r5QrbIx{)H3N7Yvg>&HOE!x^n jB6HTN?HvX>)8 z8QETI^^zklT;%cVvZ^Yl%J~JhfPGlzCGP5ZE6vMYB qiLLADQMue0rF_IG@D zBB76{vY#JQEvjKZ3*q2%IA`}x)OvO}5IN_XRp4N(?|QPn5bXrk!J?r|_HxOz0rY|< zM+S{OC>pYx-H#aB>kABYtb5`R;6p4?z-bvSBAJA_f6BR{$LFxA-#fyI0d@h_Y*N;M zV$q$Zvmnvc8Tx}#hkU#2?dFQ`Iy+DSk4z#*7*cI0N>f-|wY`N26fQvqwM)50GEYO< z^`c%R3T4lW8PdX>@tt7NMJTS+kpWsu-UI+7;Q%EAgj}r_m;~hB=zDy#2bYJFT}HS* zK#m9Ca`X_-1Q7|WFRgeI9)O7$B2F~R)oOm>ttEEku8_zHtRJVaSuNz17)2l*vub7l z$yKns^bUAlRM8bAmSSaeLZX}(0?e{X*l10FO+vg=G&guk;a4XCVfuZKI45;Y>u2RA z!{L9oF6Wo(G=K@Wxfr6aMtj+v%^It{?(_!M-U$XEfnOI+w1aK~JnJO$mRAI;JQNA< zD;h_;MA)hpy4}NZD+O|8=maaJ=w#{y;3640tVp1YvXa_8U*Z={;xGNfm3&k-u!QZ@ z46sfC0$El7kUQH93t0?!mR}+Hiob9)7?+vo!FzWYI1Z;3fL}ucCLvc`jDDGo1H-MB z5RCEoO+z|ofN!b<+Nx3cMkI?~8l}4o@)bfiErB=y{jywx7i?|Z4+)FeV!!du$pRPe z$dCvu>~m2I_W!Ra2o1d+^_v9B>6Wnu6C5H-j`p*iFbI3T?4wEfJhw!i+^gl`v&- zz0H)&s<9#fZobU~iMEKfn}M*|RWRF-H=P{ =c99(T4&GFE>o!EEO3N&2<9 zvcB-=-f*u6UvF3ZGI~(5$bfQ{U=ou+GR`O1oaQsEQa!&catr2;s6-HF9uAA+s9{xy zS0DoM3$KqoRt>;UK{@MSXCi|Zug2Yyl$^_%h)Rj`fbyE8Xc|&q6)*Ea)`a}ho&@%? zK2{ZX4NPEQ9*%jy0Fc5EpojTk?o4M1B}yO76yCGP#tW`0iVs84^gW#6HvktWncpiK zf&ixn4HArWt9+V~m7*Rdhk=}@7e1KlaOw(I?Gr4PBOpdKXCyb2wVLl->cS_Np0U?~ ze>LUwBJ*GuS1T<{B76s|;d-#T3=rd9(VE4BI1op*f#8cmyUVc^lv|6RhDBplCDInp zS71&l3Ryv{V}3wDlec>_@jN*!G3ZNGVdc#8IwuDK 37D_Qfa3V3H(*LtfN5Jvz$V}?xD=cRN0S)K2U>syYk?$%8@HSL3bHV& zP0A9m8Ndt&H#r4XfX9uk(Hd)61S05$2#cSwfW@vm=(Ke8#Jg_pVFqF~fJ>IR5f}`) zxWu?Q!?{1$JN+UD!Wq)+dMGXyxw*O_$n}B(u7ri%7ex}%0Z71Q1@51y)qwKyK~d(t z4y)V)Eof7~VBxa`$NykWDW+gH7zP)`N-!F4&+RbSe>UKEfNh_&F4f$;f|Cqi5?%(e zY0H=3-WIl*3m;1ORn?n8qH(z*t`0 L!So?7#pZ(^lWl#kkT9aF_y< zI#&g0jp9PV8*tNr&3^BN`?-MS76Q3oNk*=<&bkAO%1*ixfV2mOy4oHb*}B@WO)aPu zi~_{@95@U12#c4is;|l@1*T)MW3@XM4UltnHA7fnpps^zUKEQQv`w%f4KW*J7^MK) zp$(ho@)6mO0O-)JW+I3?1swM+NCc3<#yRbDScRMP489;KJr{ktzz`oY2vmjbT4;J+ z>3AgoGR6|p3t??9q`C)H7q(K~zyM1JPNTwpxh?=7AYBwYP^|Wbz3XP6?F?|N1YnU2 zS^%412HQ5{)NqXQR=_ddbU4o0yWuFu^`H|&3gL(gKf-dEPhIw}a&BA*My!^w^n_z2 zLwMPn1U?YmEHW5rXJlXu6tK=N`~pr |!abASj2A^>T3(428qJ)_hC(+P%DCm955xH;@kN>SW`aTiA=II{VT zY=g(^u&!*Nk5gK>7wy0}6XC2z+%nS|f<4xxedxM^E()|XuPd0E$!9!|?{Ng!VdwOs zoz#1h IH5xiMNBsgWVegJZkRc`Z1=i>bjXU|qYL3#2 zc(~5cyV0SP3IQaPmpOk#VTrcd M9M2^5E@&!yKSAH;7HZj0F&~cP`4@ zP-Po7%@gpGSYQ;udst~4JvalAQ%L#dff@6Q4 aHb5u+VKqqA*P>8$U?qyatwMU4-gGt zl4`wAlBc4?jJrfc%U}l32!Qm7-mVdal;CNrORfYPi`r~2C3-0GRdld=TsJ*Kb1zhA z=B8E5LO`I){`o&c0f6?`-~ZYBzX62Xe*w_A-v%h&-vhMX-+ll637Pjt0C4-)?*Uf$ z4e1y_fM0=eA8^3`13d6uxcPy|`&~f2{Wi4mBLKwx9z6K(9+ Ic}xFv`Dz#-In#(Z7Oc|6*!$x_5fV<7@c&T|ha0|BC(l>u}{?JZSlC z==L |{8KcAo4@`3JJ6M{e)_u)8cyKFfB9%=8vis;Kbi*hH}K&H z(A1A#F9OM5F8tspDEHeB`ah`l?$h6X^c8vxPrV>2Pwo5|K2O7YFu@yX|7Pmv^c4`| zF%am{Z#;+z^ZzxN_#ea17h=Gq{tbNm-ZVsL1}?m?#~;7{LtwN&|Ft(j?e~8K*QPsv z2xFSK0%$Su9+2@HUp5CH^58po7;c~NmM8Xushlvkr}0cP0F?ja-M{~h{}H(B)8B<& z{dnrY#8zK>4DSUB`uE`K^f9dx<2TcO!P6K$54Ong>&$Mn{ z*TX}6z-^!R_x%q(d_TN!;&PaWseg}k35){#G7)#`@ps_r3kv}czcA+yA6z(*@0ARX zseli_zR*tqCI{C0oNs>o#+;9p_&-g{`a4szpS*iP=zjk*aMa&_9|$|~`^%bym;Vsh z5{3vf@H^1gufNdy)8CzD Q{QmmwgSWp1D`(mke&>ZJUnK$X zD;o3IDefy+4D2|MYj?#!F4}_+wzW??Au5 z@eZK($ iG+%`rli=eAWP%|Nq4k{~u=IiU0rpo3LP~P5mKap7{Sy z{QoEZ|66^8C;tBv|9|pL{M|`le^-*&FMs`s|Nq4Qf8zf?@&BLr|4;n?C;mV3#Q%rb z#0O{Gerf!F y`0Nvm`UGb`rWlH1 zu&J)lpT2wlFW xGzY0x$`~AOzX8-!#`)^L=Uf@l? z`O<^OO;8%<*WMcW)>MH4ZhsWCfuB>Ul Kev{|RPy43ho*7?uXRWsrEFe`>b#ZN zfYKXp#gzW`e|`Tg=)qL}1Pax>)lc~m)U5fPM>ii8X(kH2UHZI@&uYj_J^b_=fBVC? zLMdO~=FfcawSLMspo+~@#p(O+w4ps+%D?@r5(%^qC2oKcQ_-2fe$@VW>DE;3W2&wL zeTB({x+X8xLOv)WHO&FYyx;re9dzo?9+gKX%1rfMUP}DD5&b6#^mZL?{JhrDW0Y@C z{0HjPzkw1kQxTo1?8$3cna?Ng?Ok821~t{Sfm%aT@e}y%C+b8^B!cfA#j~cG5nqRo zQ+=bU+|v)<|KM+b_}1nh0R^Di%IimL_Ay3&Okf!KC?Yd;=-sap7!;9#Hop4Co4{gI zc_%2(1FZrz-ni)fpG@zVm>x#+mk*AHdMj^l`qyyrQ7`AErqhG+FAVzeG-Xiq<>OD@ zA aD!g<4$vdbNU4I-#-G5y+8BUNN*SFW_pj}vS zpMLd|cc-?knom$PjH2%2rt*U5t?B<6h5@yD-UjigxASK&wQ;7BK+`IHti4A`q6dRO ziKM9t2b2bzh6HbTEA<0ayQY#tFWmOEw~{h11$(~yA($a3NCVZUfPugI+M`Fks6TlS z`KA8V7naym+~x=G;#;0KtruiaUFr{~cY>gJ{QoG?_27%Qu}>^AbsN}Zs&NH1(LVie zrqVZWEA90%aK@v7AHf}8cp+55d0C3^-Z!%T7TgL&)8JO9Tm`>Rd?=(|nOvsj_jnP! zej**zVEXj;rx(8e5zN;^ggjpJZ{f+wJ^@W+l8rAUp6&rzJWck*v{1rmV!JO^mU{oE zUouwc$ZP4QPk-yNlKyHc%JdVnGl{Q9k)W@>`)I0B^e8hlz0i#ED5-D%1qErlxXP zQ)RC2J*f3M|5GKfM~N_~S@bHBUzm5I1I*y-;NA%IwO3lhP+kWI R=~-C1pML#O5$W;qZ(y~2{Y|h={IPnQ|Bqg%`S}0yx&N{< zY(FJnA2 OYvBsh!^e znt;f76kGeO65S+HUrK`k!Tui~^!q h-YBvmxcWh0 -mHW6Eg{oGOjIY%o)wroYo_n_m5>b2xS3Lz2J$veowU7tzEnP}}Qe z{y$$WQ&-^4u)?QZ?y)&d9R83@(A5v>1-^U#zr*#Zo1h(i{Qh50YvnPNX}G`fd6C7J z<@izs?2GMvQPO?b+&f-d|5D3*TK_<-AHvWcMeJZ8FJzeH@vB-iNxO-XP(JLz@jv>E z@G!jZOcEYQ@F-O_-8B(mQZQe}HvRr0{eFrf(**x~ihN o(cry>2+`=Iw<{{&?I;^fuESKis@=H}(^jP@3uFQ4scU#_0M4*0Q${yESG z%CkL23B8y!w->4Ux}U=S{coTU<2T=b>;0ckYWKG$XE-F#r|~KwkOv4oI0?r!2qUp{nMrPK(b8J z4Yf`myWNW(_=}Kl5(~hNfAI19KLhIhIk4+A7ch)3Q1$cPKsiS+z=)|-9XY9vfAJZk z{2bc-T&4F#FnwP9^cPfj- pGEkA78Z zzW>G|--J4d- $N1bwaR?Rx>9OHQ9OgwI#bn@7aX>M6$bCtp z*e5vlF+ `#cWr~Uszmp8lSu^0Zm D zn?C<%A37_*2Lams V9|VDi9y_2EmKqUPWD8L$1>QKo5? zyqo-6;PU=30Q`6*{s94gL1)>+o%r8A+>4W=?m@EefeG~u=-XT50p9rUf9t<{hfm&l z@S*($#3H^1KFe31EOZ2%VBog_f6pY$-dxy|BM6*1Q~VWtv+x( j|g@?cUep%aflER6W)`hY&1_V?ce>Q1)Y!+8wT3XUfD{l(iqxwW9H zlbd;pwY>g1iJuSi2VU*mI{NjmynhROe&wJ3XV6vn>c5))`^qmIto+I6zT6@F`CaEC zdDqmzKmTW;*Lt6v3onV#s!aY%-)kb8{0hpYD9Q7CBRg*NgrD>KB_Hu~_)0*D`&@ua z3;w xnM 2&JtJ8eg^eaK0XWnwX#^nC4+Xfc%*^bx@Ns`H{Q{amFCEuKbi)>sl#dK$?kkNZg zU+G!6Hmu6DSGHs0r=wFS+0i+co|s>QnU05LNJfXNa9RWT$n)l0$!5NBoSZrzi>sVg zvQt#_xw_W!*lr!7WzN*C*$VycAogs!8QQIhD+dSX(j#$`&Lm>y)GfZyQQfnhhH (x@$FTONi7`xHxc-t+v`r_nfin`2M{XwGwC|1d-MJQuJshP6Wt)pZtbJ@am z+s;GRv8(hb+QpGLRbHuJ;o&%oq?}GJ>hk1z(s^CTS*2R}(K{5I!n<76tn$3_Di_zL zR W{S4*T4QAlk)( I=NQ8@RmlfsgI}TU;E?BB*Y!RB5B+S ?4)iAySvn<{>l=qj_5fJ3f$)qIQcCDPYM}yy|)vS(oROtgCHs zxK*Q4u`6QeJ>Si(z3!@buBRtr*d32&Vi5@Zbz@qgT3POl6KDo!$Qde_MjnjO#`jE5 zXbEXCEW`ZR$USnZDIfLLs2As~eMp_d=}MLu3Q}u*A5O(hno~1g5`;EY=czW@ERJkj zTi<#|Mf1pWo5h2Rs{EE56oN{40V7GWE)KXklAV%e%cUpq0b5E(TZ%cr77~imD!1k( zwB*3OQH-syN6uHy*fK-|qVa`fJNGY(*h= GcR3Ti}G+CPDh3EHriT^ zC_&F$e oJ$V~ILU zRAMzHG@N(7IW8Kid*`l-=$6LU-FaaUE_ystWVv51uO{5jxmU(yiue|$+#;S!jJ+Ct zWm%rj1co53vmOIyjE~I8W;)7Tp3wUmX`@Rdq4)VEB`tc)oTwYnZ5kY!YJa7A-1pOK z5FhANqb%=OI~RR#L UWjWexA!f->{tUI&wjku8_B_rpsZAblF6C>QJ#+1s~ zY!m57Q>2KBE}Uw%*gM6|8G(9%ptOR7!M(AsdbHe)6}v#i(exucJ>!O`E9j`HD|Xc8 zQnL?8IzqiJ&`vrV`jX+FRwveV)W+KpVuW@6$*s?`gQzq@*Uo#KXkY{2^#azbHLA99 zL8`0VqkMO+? tsBD<2X=SB5&oU0B%BiK^Y&9T(^GIr#^R+-rBuDW8rj z7H2}OIknjK7Q5kzF0qw`u4ZS+&;<27cvWpPD_F`dxxKBnEnx>`_Fw_jQ&BIuwKgVF zn7>!#v?Z$ze{o0TxbB(dNpD3h_pi}j?V` GENvY?$VK`gVYPG@71+f&)7aa z->9{sHkL}OvljCgl(t_c%Pe6_q8>I}2t2t<%wSxiu|;a+F4FD#P=>{-PQ>G>%ZA`& z1e`gm7iH3hH^T80$D)P{WA_`Ds8uGX?Bgmv__SiV>vVT5eU8bBTa$l=Q&Rt2J5o&ajXxqaGXTh|l zq=`;`$d5K%(n&yZy|qGg2DXGQ6% AfQr#^3)VVQW H_H^yLQEf$kO-w`6VEbMHrW<&tO{)^JjA=O>ksSB*RA1WHTF@IQO%oc5Kqi ze!s&x3vB{)C2AzheY)71ikZhq-x_J^M0*&QY+F}`C#8W}Z~1V?MS^|526e-oHyCq8 zErgY2e@Pp9y%C2dO;*66^Etf~OB ))4j@l z{FvUaJUR4ed2n$yja$}BHv-uIGZyBsb$!op^iVYRQnXLTjjYZ#+MJX)hEM}KD@6tK zEb?mAJJv 0c`0h+BeCne!`i$iMC;e{+iASlyM@kaRfZq(rFDf>dl%Bo z?F}TX6;P_ sz|oVA;H9in^ta=#i FO zVoBt87$F5@Dpaqfj{%X6g+c5c?4s^R)wrT5el?v|O;c98&vx!?hs3+JCRxei7TX75 zcOi+C^9rR}-;BUXL*F9rjKi+kVXH2jH4@KwZ6DWGl`q3i+KA_C&)tNc^C+Z0?ON>G z(ATa5d08LYYIRl#eZS~tdKzez5m+bLJo+iF9*@chilJoEHgQPcm*Cz~>1dexD&Fpn z)cUaY`H>j3k+$#Q817rXxfnXWA^AfxNuNV@N{2LZE({+Omt5LcMl*7HOc?0-=+e|B ztgD^Pw!OF0w(Wf;5J4g#S2vzHl8l_h8M4`H;eH?GamKJKR8o2}x^=D6UBlj=of$#Y z+fbCV-8@NEa>-x!`k=*Y)a*zF+17`iVt1UxI?ja`E9cs+Z##c8&ku(=MY=ofUPrl1 zH=|sM<1N%c9e1kimy-yGK1J`=89)0*Cs|8Y86{q*f?!wh+U^))Crz^i!9_X}=R9<& z^-48MW_SHso@2Wth$1IIF`wf>63b_lF_n|fWHw@TJ;J)6o3Nla6E}JcP};xRcag0` z#8^d`hwk}B ^=^=n)lBrkCyhZTj%B6%c$dOyK}hxkV=$WZ*^~t<58_1j5QLBNf0h#6IEp_+?1!~ zP&GoS&59n$_g?82c$(SH#x6*$wTiPo3j%MpSQ8?0Si4tXNwlo&_S!Gq8@LSc4dcmp zk)7;9zVN&{zxgOlcq4-hGtHxeir9+D?rsH4Iu3DPx1A6tH>3j jI9S@XwGOx>7ej!wH# #x}g9?2 ^JmUrFeeM z(G=6K7A I*^(V@3{KVdcIP`bKMFJns;4dD`$2A&E(q{h!Ppu&cqH(tWQU!pG@y>4 zs>h^cK!=w=I?roRiLa`vZ+08F-&r%q@$S*b(N+~k+L+a?lE>q{ {+!l5rlhCE?_k?;OtDaa}E=Ra+qke!f0vK7N;}SwHvZt4P^3$V}a em$d)HN&FhW<=J< zZEP~kU00%dBS->wYwTl_=NoIcLJE5$A(%kpNE{`3EZbOi3?wS!hp-D=&FS1YIn~`+ zxclS{OM8>FZd!Y6sypMwHv%R`(2;w%(6e}UE4 Z04=R)gHx+hRa+_vHrkXvBa`1@{efiJlodG%@79I#paB4I 6{cNbXuAn~UvCaxL69=cG!Ii>jj~ zUeR~64R@=A+`4^ ^6x`{lsMJd+u=J@1Eri}CANAw}mShEK1rt88`~%bXP^J#@Pd#oHFNfXpfS z!O*w6YAaXwPW8roqwI+4o>el4x~jgnzSDH4o2)9pyRIYKN-|tD)lg@1@MolldA!;h z6}QgPe0R(+Vr#ke7+k5H+=NZC<`xS>+b0x#?p$plmJUsab0tvMCgoZU&4eh0-@KOe zvDCgCz=?2*HYB {Jw(S~DJ@_*MkJF~2mDChkVTXqh||{J_xlsN8*Zz+iP%x>o!EJ(pKxy% z9VN-rGbQQsr03WGr )_xfmOAWACCts 7_6S*;Oma)tltLLx~DdYB_SmkD>-oO(k;aWzp z*qH=Pjoeo(bS^lZ#u+*yE4j_NYlh%sZ|nkL3s0ywE$R;1S!ZD`Ek H>JC};++%-Wo)@;WwGPE!qj`YFY_K)o{J5qxYX*39fc)>8oEfY1z z8LFNriqp;7>K*PXS$=y_osBx@0=uDP15^DhIC=%;jzm}ojNwwNV`S@%Qqp2O?$IR; zs_@wnJ$-#X3F3|nO`KoTOFyYN{ZQt(GFMb7Nx(}HEO#ci%NDJv8%K0!P(fnID?JGU zid6JLphiyYkj1f{g(JIdqmJ61Hd}|qgHe}jp3G!n6uAc7_DLusxr{7gWN{!m!;@Hp zK@I<=P#E574S8DyXLW j>MejVqMie2=X8lkunUrz|Z zk;g7xqId7+ZsoDOZMOPJov);Bc2ylK36g-PdQ>17w8&XQ;Z40B$E{ llylG@A$XGIY%SJAu=XV-S-)sl?C&Lak}5dh&(uq3r8W7S!Dkj}$sSGUd4w(10Y zcdO0S%EJ4(H`l>3^>l(W(Jd#RF;%(5OH1y-35T_JU0OKW(qHwbM4zF3Rc$V&e@kaz zjzM^7Q-j%RwR(1P`=P+v#0HsR4a<3uVnSeJ<>{=(dRtfIx+7*gQP2YCoMlMIkhp~i ztTGcwy#@E(YH^h)o1QnQs)5fF_oZ{{__4v5 zNYSPL^+TLksV8 zMg~lHLes4s1|6xR$N1DaYo}*vV j2i7pnj6EVZjBnv(%zX$uD9JZl9(D8Uo=2>GOAesn%HalQtWKC+KO~v#v zj6^0ixIISi472Y?MPBVmk-SC$pB;PpTr#4U#yKW&?nySz6 C+}p6xp$D8 ze;i<4l2}Pbh%B)hfhpAroN26EoR?_>{$gU2*di#G$)Z{Jr|l7 -*NYQyZ>FxNO7C{OuA=jbPmypb|yIb`QpSSdf#Sf zT9c)h*50mdFD-)K=4`Rmi*1DLcLEXysY}=KI9od&aodKJs?C}>yCxhl>4Ri_AuzEA zKSp_@mWVN?o@413QC_Qtvmp<}oaU~5t0HRxd}fUA#l8nhN|2Kkdn%k= H9@vrh!j%{0#Aw%AQFxPwQX%Tr77;FYyWzPU=g2wtI>jBvl@NC6XRj6wB!<=ZXT z{b1A;C-9f VrPZi_7_(r7AXuJ$eou2;-ZZfkX`culC-p z=Xo_d3@gw-GU!zUw&p>kNE&DXN|Z>E5=rq)-SI5(B%Vd`YEokw12&Q%%~g=o#0ii~ z&ol$ui5&y|1$+OaF6#Z>Z|^+^d&UWRQFsG0-z!lhpJzSmd^`{lee(`s7^7Qz%ag#r z++B05!lezh+oBz*iqVCnfM6}B%v$T_&T}ImS1J(9mrsM^Ew&&2Bf!) <;_o399h&N^0 I8Fr(b zRvaBttyALuR9L1tI1NN_vCHds4A$=Q8B8NSWi$5$=hP1gKk5NLO`)L9{qqJwJs*#9 z7I%5c-lbuu%@pDa@g+qD86j^4M6E*V6&@meB9=|dY!adzk8zhU=M!#6Zdnb-;koIs zl5{Q?kvi>}W0=)1zQT_;+`S2fqI5`@9FLD>gH4@>AIAfMn^})7sM=Pq8cR1D;M$&a zT!!J2F_#{t&z7=; M73>`h?ut z0_Z@HHkJ=Wi+b#cX)g+H&oz(exGV$z7YETMZ WJGWd0x(LbC2GzD9OXPXs6L%5 =B)B1B`fM_R^Milg;NMGFdb>e`FI@r#zZ4vuvS)^xIK)(8J;IcrTUQvC@G;Ng5F zh{C@g1NyRYq{m%2fiHtPQ6wB>Ii}|)&hq2~cc*hQDdM>~zR+Sv?6g9@HW7F-CYz2z zq>re^e7WaK9-8MMqZf5hHXRqk>OJSQkpjA@F;3);-YX}{fx^^EEY0LPji9}&;Hqa- z5I?o;m4=9jO;S4wqf%{UX&iPLp1J}$5y8Z_{c~=EtMcb|RS0ta~jZQaF% zngw2|+I!05Y{TRb7u>&mp2RxV00$=8gEi8nMfW`IPIQu7(ksLX_z>J(5HrIU7wb{) zI1s`kl1>OQb=VxdP=7Jf{?Hy+!j%@*-} ZCa>G2p?$S*i#598|kvWM=81=3piuQuiCbf-zoJy zY(nHIiNJ%d?o|7dR5M#HvPq;*_+&cVALc|g^W~zWfy8M6mAMTmJc&)nm=|zwG)i`W ztQMCpfl#?F-noXOmJh1)jNS0sYzBhQz(z3|2pzcxV&mJntL=0qNp%;jcMT(^5?6wF z8!J*Y()r=0#=z%euy9_B>&p5|&u)G-y7b tU*27yYXvhd2~ya)CKZb~{m zkK7tW5BKA!T#uH#OF55gUoLyM>l hF9(4KSrqo|ch04Nh! kpB>k2 6*fomTcZ*P+eL6N~zC))1pB=o?Sqgp)|OpY5p zMrJ*Tz&VS+)98Jr&1VRR+3Yzx?Q=Gsnl=GK58@`pa|#ybsAqg8{lpr(aJRq5kbZIn z?L@p+rsQM-MlIN>T{M^Vaj;#ymN%(jrn5X$b^uI~F^S0>Q Rn%dOB?&~c1H~m?9`1=5Q9r}#e#eftW|sTJS`u2b zJjtV2zjYt6({eY6_u#e5r%Ea^i*sx8*FG8>`BurZYBA2`M5{KTaTd-vh^Cwi?P0Ld zlO+(!>%l{v=MW-7<`F`lZkP~ozLyrfA?<7e=Il@4ZI$>MACaxMzm=NRX=4cZ%NxTs zv)CLPC<^z}?KW_)NKBh1C7ANPFr$82QemK(-BwY=#6j809ZNUhx)XD_)K)fP6xHr6 z7nVgk4|FR}7JZHPpk{0146nyp(%fna$S(p bBA5897%E*QE8J zH3R <0I?Z`9Ono#1a8lUJJk)0;3xm5~#p=af~bEcA4FqG4&?`wC6UX_0!1T zdF-{nY9Zum5JRJuu(2C)qd^4-*tUIDPvWUg=Z#ZcjUlmmq1Ko!4f4A?Ch>R~?;~X; z>1cRQZd(W7QPU;-RTEj8bvxu3ZEkbmMK2{jKTZg;Y&uQFmCM%OlRKJ13hAtldWm>o zRnZRX$eY{3(yH9LPQOifn4UKrH*7jh$T8g3o6T*c $2MUEi)Z&)w90Lf2E)0}DEfQ&L+`<1id< zhR!gzla@3xM%kDG0T)GgJ1=zakRd`FA;AukLe1uBpdtPeL85|Mp8;2a$rz@Z-E>IW zfCMKT^1PN9?0@PMDHpM5HoG893Sn0f&vXoS)X^7g9hBK*Yx7x{& %ju;B2C9vm4?Bjo60_vIBSEZ$}sn_=QWR$$@r~2QT1v zo`Xo`xgCf*JC)*d@q``C#nV!@F6~}3P)Z@BpYt6?ln%+)D335|vLJS{uniTw S5#{EDBt{sKQ*JW8zT z-bHk$ou{CI+{LGwEqmo`+ttM@Jishe>N8ifJ9fN+XARPu@r^}JeI!=4WQ@1f vQ+grUu-H_k~Oe)4i}m-?qhgcy*DH&Eg~QuL_}!=Y>toV &FdG0cv y%mRNE}WX*ouMeWwo>?HMMi>5dMhzIaJ8U!vWnokLsP48agj_Zp$* zC<{7DU>Nx|XVBcb%gB4ov!~Is2amjIy{OUCt+LRkKVG%GnJZ1>7OMkq=c&)C8fzDV zHio#;qipdP=0J3iF$6ASLC~G4XBbA@vOXpyJ7;WOj^>=7h|A*aT&1WT`>^Fl#k@vQ z%=^vc+>|DP>_|wukNVKKc5xRX8t5Zt`Pd9GerIgs(c4~Df{#vq;)hUZ-2-T%9Xhj# zD{P3S7s&)Sb`w=Sd^Rta8G>>dM%y(JcgTq~ic5s^${muM5+% z8C7X}Hdgy668J(AMW=i|k(-vCedH93WVLNuyx(I*9hteq%zRi9r@e;J0brYA#(Va} z#PR72LArZa*T+1JqL(Q_7#7m=SeezZ@x?Yra3UvNG(ptX)b;svo$KgA%SX-<>1o67 zNDcCIk_cjjXY?+SM@Br0@m7Cgfoq=j5=C6vbI#{Ca+z=rTyGa}K|O)4Av;i}s}kZj z5LMz?ojDrL<`GPMbQ|vb4H0AeAUU7gba+jbiglM8Is3@nmt`V5f&)KfYSkQ8Pfhc< z{;s;f_kKU7G@3qLG0I5FJs=IA_;OL6>}+ c4rL%McOhGPY7a~pA2i<0c;luh zjK0 zbwpqy &3gq9VxPc5^Yzib+bcU5}TLw7pN4qX4K>tvRfURPVPU#CE0z zSWOM>V( E|XcClqIS38IqdF#fqqCx+;>CGY5XB zVQoGh+=mt*+e4;F!^z%lG|gnd5CjLJQ9C%Uh;DCYhVtyuoyy;bFk-xR(1;l27evyI zY*#??CBAqUBgmhneo$(e3XnsdwKz#q$2dTQh#!J&=tj&wtWIvHK{!@HW|*+*jCa>+ zJBh&xtW(LX+CL%6IU(cq^>BMD4+Zd#-!4xg0Y`a1KJ?qRE8CZ-2cX6ul# ~4l?_Q`<1(ZwY~+Tdpl9*= tKO~rcIw%~Xb$FYXb#7vm< zRsuCKAY=Sn<4%X}M)v~Ii#2w@w_IW-`|Mm1OPTV7Jmvw}ISs_tb_X2IPHJtUNXCN$ zG7Ct`hg7~hvgcnXoRQ9yL2nBDW;oOR&Vo9%>z6~ypGW~R-Y9c-V(}BxVVPmf7bha5 zTPZ<4ie{DLW$OLQ7`azg++nqzTp)Q;XLOB!$=$Yog=AZxy!)6<<6NIj%L2cETX^8` zJ7!Ox?HOb1ckD2C>X=~dluQ6u!8u>J?3jk47}|?PNo{c>?9+fM2YPcw1@^&?0aazL z0B&&bLemMPBVCe=m>=G=pNEYmxZ)Bf6snG8nHas>-%4abyyrF)Tgw0!-?i;?!-N!j z=UH4I$WsU1?uz6B6Fc~en5C{CRO&$_iKrp5T=nRI9Xu9XfU9|a=<~c9>BvU{rR>4y zSK6GJQ$VIfq(a^sMV!x(+0}wsbV&ug>D=sFh2=4N0vD@T#=38mv9Bisg>oR68XV$b z{H2&KJsoGs3F6fp#E{w-Pdbo0>Eu@DsCos?S+`44R4=f3@e~ $a|UHsK|sCuxJ(@RgsKgcfL|?Fg-2n**C^;LWj5OtaCN`7su) zI}&F_K=I)52V|LviP!@MYRKrTK#RpgIQU!RxbxmW1R*wYbJs6=bKA9xAvd9=z(- zyW{8GrOdXebssH`k`55S!>6U#zr^GS%+JW%8WQ^E2RSTGy)A%pOzH1fn9zc|AYx1n z$cpJ8wIS0ch~?&4FgUXBUa%A;PQ^?oDeulS @C03vw?g3V#+78M zFid$!>Uj>;bSDT6>}3jKGacbDrB=16tq@Le45|X+iLdN%hO#743r yT^!gbzWfO0}i7yBpFN8@{m#uz;yxN3Ui>%IB48lMcU4xV`2s7^0 zE<1JXsqcX~P+dFY*#JS**fx)+ffcMSzFgGGC0G?wkvmk(UJwP}^N_Kqw^drQZ*|2G zw)ewfM8#pgDB#(B?n5TJaF4N*7eg~fem`%rhvJ?1^M$5Bhv_zMr~0UtK+yXfj9`#l z`zv#GO|bvB;K3+l0@Jm_<)j`gaO1Lu;nSBP)2a=o&mLl_ZeUm23y3|oU&ttyTL?hY z(;$s}*=a%!`ph=I-He%h8SR #L#NZxat_RN)-yDK>OU}FPy3Xw|Mt>Xz1%mB2larGMBB`qK)Dil6}a(^ zhUWH68jzo1w-;Sj8EYVx)QdnJxa~DP*4QTHw_*Dj9}?q^_lgvpYb+;1nG=^Tj@XeR z^9u43gxNf!wM*rRaE9Un@`WCbwHGYYS*eTr$wZ%O0f}Ia2E3{YNx*Xw!mRXS0V~PR z=AxaZZBZ`Q9g>aH1r5NxuVxQ}e`Qah@mY1acHQI so-r_Cz^6S`eBQ!CgLSzYQNxJP9 z@XtZv9qM$1VQ2V4i;8mVsx3B+M!JhAaIPVWx;X&D^AJ|YEKYsx30gcteq7fl!V%@v zR@7PNR$?++@DNum@q8P5yUk9xWW -+pAm1Dh2H{M1V2Ah>;#oWJ~T59`pbwg816b!j$H=8Tw0>Z(68! z@*re!(@ag(G1bJh6BJaX3na#C$su@EP@DDG_=+Mt5uAWRC&*(#eM?N^JB^d9%g?no zYff!Ln$Q5Q>(tIq&DlB~hI0^{ARYy^Vlw2>3trvN=tI8Uss*g#G&-17bsx^L37+W7 zHAy!VxB(yn fF3Hq};Ayv@nwBFk zVP^)HJ0XfD(OSgroPgs>;RuBw-TmF>M9+FWU5=v`yw3Gl@1NTn1rfkD*sB^uYgivj zQn8EZoYDt5$NmhtakSnPRlVnB4pf6I&391L!+!?gQwe73%< zX+^Un3V2p+(Sqy==8hiEB(i1OB8x!!2()<$*hjFXEpmVY7%tV&v%*2Q21=92&B2Z| zere{ec;1$Fs`X(5-tVM;Bm#m7#YRiDR~<>363Sk0jb1r-K1*7V#LGg|hlhVj1Wd@D z-98Dg3v;U0w^a?sh=1{|0GtS|U06l*xOY}C`2IxI1Ni&qNt9<#?yfo{3 g}9mZZ{XDFGH zxyBeYqyU`ba7k-q2%4l7f^8Tnd03s&dp _vYe&89vm9<#kW=y*Wag4AAg8 zAE8Df8i^sf*NkcI>H*MzxojbI5!`s#i+R|ip$1T%$wJGBs^hOa_S0_qT1;-6j1C0} zWeRrq7V_I!-rFYLt5?F!g{G~?6 %BXq<+?Cy=-zg-)xJJSQ2{i)!+B`c@;QS++ z ZJJ##A_d=%vMoWH%eHT$5)|7+w=0Hm9M*K^c;GbjLkZ(K;xvc9Y*e)y4%M zWG*3wPZaV+^T=(=zGB{qr+H^W`1vT1u1{#S_=1D#+x@lnV>J>p{On(npgrvc51}P? z%2)-`NKw8b5tKhW6mFvTlZ6pCq;u+%cS)dD2L-$(wVTe$K?-&rbtBaZ@}Rd+HQMOR z!kTBF#1@-AtZOR9_}YO!97BPuMy9!KLMot_dDSt2V2fK&{v6OTRo(+U3!7v)24#h4 zqj*f8#>}`|Hjqc%i;UvRGi6)F?pU9;TD#p&8uskY$0Io2{T!E$1{725rlralA5{-f z=}$i80ZR`2bk0yvUlR0aKej0O0wzJ{+X+&d1M9*jy-iDJbbBxjhbuNRRQ_#GP|gVg z+(5x?t@f0}CXDMt076iMSoVyCVzsk*PU^?FN3$bB9J=mMR^Y?XH`$W&R-|*Y7M)T< zdxC1~jQL0r)a{Y9W?^w5KANvcRgrqJFE Xc0i)p*%t}T5o+sAf5FTto`RF;ZV~B(~%39{5F9@QYn2Uc5 z5qFJaP9raDl{>BCTf@l2lSdJ90&Zp-^1z9(+bm*{<@lyr4L9)9l0zZ{_9!UZ+aVn! zO@ Uk2vJk1tRMf&Mvv2N~Pi>q)L0#6zC7stgHbRZdo4xd9sSaP3i= zh!d)&2c#FwD;Mb77WxmNq!o15ZCQWyD8M7VA+1Fl;jM#tg+~iMcXT&T&nnKFCuiiS zP}Ds9+VY?Y4pjaxhP6+3I&IO4vK0!r!a7iTi}totdywE^aWM*xcvN&~gx4k`i;*JF z0kZRa^`{`s>0L$La1l}ra%5ZF@zV*aWDJ_X@Us~t)_D)Y3v$jLj=ztk*K9mrJG(fM zC-_fE?zjB}k<|^llU qKNhk4wS=TymU9 z8pp0TuNxY&mt#d)m`UsPiY1 ~p88u4|_*xIMN9IV^J`+xY%b^9v6tIEYQc_M!6u zNn;gcyF=3w1B2XMi#zgR ^-4|Xo4S5-4& FqG3UsjV zD3f_Ub8QB_pevABV_Zc;E}Pd4LnnQYfsXY`9Rhra70Mlt^HU(xs0i)_TTb{6g!*eF zoCMk~0L`XV3tcS6`&tVUH_kk{N*i(gVY0gh;dExELJnD34nJqwTvjH(Z?vn0@f0pX z2DL|dWxC5E+4JK`AWG%R2|3cknQ Rxe9-3BKMr$ zuH>5{0SVg~j87jG0FY&cmc^ZOEMhRgS?-7wNAAgPx&0#-e0c8#1IOV?0eBM`a0rFs zVcU<>aB22 <)U2O`~1;v&9e;I9z6=?TPv)-Q(>c)?D_%S{=~ z7ADDmq 4@jonBfQZHsXetXFo%(_2;4#}rea8K^~0Of~1asam7AYW{_Matonbgve`@mrh6 zi)V2cMKa4H(C^-QJ^}PG4!eJ3;KApPXX1(UZ#X3epb-ieKsL&%ETDyH!ed2JJnEgF zoZ|G&D6SwEeSIj-A`4Ks@fr0{3%#3e9oC9eG*Z}l?BG!KY78np89Cd4f?$us0l~Qg zoLCG{i82P)`&`Mb7Ar%*=3&E&TZ=e(IWU_`4W|ux)43aJ6A0?9a>e=Zku`u^^=V=7 zU423%cuNNT%@hgPaf5;MGEGn)d)3LI_^R>2m?9Um*ji`!{|R=j7lxnRF1AO~)^xAH zZ078h`}Ku#dUB7+@ESMJ`y+RV-;gYGfLzU+#LAG2#~p;zZiCgTA5>*w!PybD0PM`i zfjDj&R*!fMED(Qk`Z8hl4EPjQn-L@v8TNR+Tn?n@JRd|{iL4Kh*F;6rkhW3$JOEx3 zaR+;4*oXF3*K8A-fWRD-dB6sc(%@l*g}ZasT0)W17c+zRT(RYetBMl9Ry6$zHT(wj z#YuOsdJ92-`x^!+MtXIzp2$&A-PK_r7uk~wcREyE;i`QHV!1)bsP2IjhH_Gii$^`V z^f}S?DGVA@&Ym&{c5!{wqBO=YfEu0;)MWr0_siZa-@t)5sto|&m)c8Ctgt#;+`6qT zR@cJT; d@=KqM$cGwaFop1Wltj5aR}PW&&!=utwArvAlsMu{Zq-hBFpK zM U%(*R+A^`q;K#|jI9T(C4JPugg`07YddJMsWpm!=xqhmx(v1~Ij# zj<5@0=R3eGkP#Lq*Y#9aaRx}oV7L16C_4b>u`wecFi=VJMK8;J0oo?mkcN=YGVGEE zacG0^JiH_OF*G`~>x}^HP65Y#4;%q_u<^)79jH*s9^eZSvqw2)dkhI6gFsc7v4= Vhcc3=DedKs74J%To#c0kVC00mbTS*q3nw+RhARCD0bh z*z#Z#Y(Q+&P77s}LkVTP*?ikEFT+u8r&%ZF48jplZUJ)HtxFCXxiFptEz}1fJ^oh9 z5MK6Ih7UkD%N%w(8aWsPCD7TE+d~zlVyp)%LTMQ28z2;ObYFlK6q$bX!TfR>vz`F- zu$MPR*_svUq6L~+#+uszmad@t60OYU2uHK}jCaW^iJ^DcBYSFh z^_AvD3C8LPs!5@1N^yq(xIB U@ z&8SOgBY@t1yqPK0-1fXB#^4v=q|~?d>IpSvcw;963QSCYRFH+-uyO)=B?m1Uz$DeC zfF$o_g&8lAh!5cgS|dQGPjqNv3aP-;)>do ?7rIp z|0}p*ot5|Q$oq5Xdi$sFjCGdYI!Ep=-aT`F{_aY=wx|D7cp%Kgf^NDWW0&3|9AOk1 zbkY6x58>OjneRG~?aN@kb!y(n#J)d=K`vj{^06>@{ ;%9VC@pT z4wPJ9@t(H#{`fJE>OG_F7w_i1KY6bhR=!S{T3Zi)f8q;(1-|^Bzt_7McDc?fUguM- z)6%|-P+YqaukUz&4gbP?O?cE7Xu*~L^9@Uw7WUrcd#djWB^Xxq4?deZ{|Zdu$KQ>O zd$;(9o4=ch3-c-g+OWr8GfnQ}!aDcv^AuOe!Q4Vv+8b)?hmR3kYftNsj>;d?);{K+ zt`Gk@XzQ=v +*-zSy;IM&6(Pro+T{-s|4uCHU>U^p`D zA12v+fc5K1!rOlc`G5Fzh|t$LFDve@D~ADr9~a>nfAvPeujl@cK0bbFI1Pht*V%#Z zI{-1>;~IbP#uWnV(75+LzJ>8{@aez8?!N47{RZ~5Hq`#?o&9AB=(_LsV%9TVpRqE6 zfAY;={^039z@&9{@K4_BTzh-JZ~nj@m_7R@k99cU*Y~cE{nHh5*A2YE1}L{8=Gw)3 zC3--XH~WB}eYf6k{`~vzhZp`BZdwm-Md6h$VLT)>^IjWruPgo;T>YGC3J+ch|G&Jk za0TBNFswxI9(xSLyRsvI#rN>$zkVX;8^`{`I;rqy>tkVR;=fs+@tdagt^=^&Zvx`} zz(<%fyHXXLz#qa|fARtEZ~tgLk@xmt*(*5U@AU?tnU!~box1%6#n%a!?@g?$1kUog zJ6O)jc|V%Ee;EnAu5=wixdL(pBJd`-<&Ep_SA6gZc+Nlk_K(-q!2dpI{ Ly z|NTFh|Mx%s()_>w_Mw7*KmTuKO)H1`V2ht*2Bh~nHUj1&{CArW@yRHE{WHIN`B&ld z=6s+0^H;||d{QR-3`88Ti&g0S)pvsO&B<5k3jE<0EBpJxExxBj0zto}%5R+5`h}(Z z3V^=AZJm7jovs7S{{Q(epLhIsTGZb-3gz=%Kh#8i%YmqWKmYG9zWqOb|3~+}ue;wz z(Fp2!ey^+jF#d$<=OBzPpWg!SrysI$RS7;ufxKnPfBr&2pdzj69n2bDF%dBGQ`Cdj zzN!=-*!Bls5%(>yfBj7#5*NmTuhXGFSFq}fA42{^|NQ}_tmyvdKT1C5zk_!9e|-%3 z{WEy;7Zn{yWK~7rBkX-u{#U|Zm2+6{dy4xi`aUV`%jMswQ2^ukG6?QF8{*f^f9Es5 zN}ntFy uitsPsu`5ErWB)(j^fy06kWU=`+qV4o^Z(%V z-wft^MD%tJyk+nYsO5d2Zwg=SFEDXGF#Ojd>fb!={u9aG2nOusi^=@G=lzh=ee=D? z{fN^}D~|onWWLfr&?ijshWD+!<}bhSl9eB?*3p|H{?pso0Q2Ev3ezVySPlQ5!TMH_ z{WeurGi3$B>H_#OYwG>T^%cJYk(G0QZwtTo&A(W=2hiVYb+6{tAAg@nzWHZx?N8y# zdi^c7Ru1&x8hfw$tCRp2%CCJNto|pz59GYR`)&EZ{K$TEgJ1l}=!fX>{3_Fa{kW$u z8-B~sKY1U_&)&NP7_FMy2Uq>FFfbkeJvd_i>3cvItomQC1H=C1Dm>pz;pgvvS7*r= zPV%-p-!t8Rn*sJPR_hZ_)&c9E&jnHQ9w$bwA^;HRZMFa4&|s-Qf1l-Fe)~^8pYZ Xs)1p3W-#({HApd&U z{f$cRhZ^uZkGuXPxmADo$s6}pA^3m8;{W_TY3;Yu*FVwxLm7lefuaJG4`bin&K?lT zUzD1!ZpnWNevp6tBk&~tn-4_(j~|k4RWMdUUkP?~I>5*8vA_3 e s zzv`f$-&$7e`#`z=RaZB$az*_7Mc(9_B^L`5D;E (Bpb z@xRT3{A=-_G;#^L`E20-ui~yEudXN~Bc-WjY-V6+swk_Vudi#YrKIur@&5no1q5JY zvIHn-#u5rvZ|hJl&lBk|MQ*|
8f%rha$JAdpKiu z5eLqu`Wuo;G%wKk3|lbDOB1Bdf0Tap$hD22B7?5XU$YSo$sK(ru?rX&={%?0-z+b4 zFxnoTggjpQ`38i`WQbvurl)M9e&aUs2E{q`3u#Tqle0Shn{I+h8mqz)#^v03JG;^& zCgbYpo=N~e9Rn}_Qh5Nn`x8&sM6RXUw-B7D+^dSO a10Md*g~cA3~K;%JkGEbBu5Ig zC`M)6-$(~Qaua2Up^Nzga{adEEI-^}DMqW!Zg@wAxep~O*q^b)gIXwV?GH;0;XIRw znP0jd#A70DaJe&$A)Zx@0cQTAzr0GS+GE7;Z7`lBcbZQ}S6VN5y{+^-r_r&(^K~<) zm}=a_30V%S!WoZsIU9_*qpM4^joSXgt!xRMNF@#Zts*5+IzYsMlIm8mqV;~Bq`Qr& z*=UbK6;)G5ykuLodiD>hA%Co-1SzvX%Hy#zIE@)fnArXh-F2ehhB=|I9W{?Xesc;y zF8y_>SkM9(<00Vxln8}}K_h+Hp=F*6?`K6C!5?xqj#v{q+lwOzd0lI5XZ27 EPocw{9!Ta-=Kgp@ z_dW2|w5=yV3`h49La7nSM5_W@EDmBw<4@w^$UK) qA-u0-K#=MV(%F+;x}Af1KYb7kex7jzi)ZDoWis_-`34%#x|KdY$ndT;(xI zQ5|!rXk``S&m+N?HG|v<%?m)G&MJ+Nr>V66ux%H44#@nLe_oob`XT@XLnLn1x#CAf zzU{tu4fa!=ULPx{RksxcBh59ozi|qhr9q~AzvXMy(6G@24}$6>6^);_96r9-n~`Y# zK10xMWNn{}f_%_`;Nk6&mwXxn5?=r1t@~CW mD~}JB-$e@#A%WwteNoJbzhF^<0C+r#=4%x zrfJn?M>1O-!#8)hS@&TxEK!i@afr>8SUx&yu@opYnVTM$NX_QfJvCkngW3GXnRiEN zWwc6Q?xUmHoAl>2xidL7vHJNp)35eO0{Qi9PUy9b_uUR1_5L#M+(fg&*gAHjyBbdY z6@F`T=pFOT6SVAz@j;iG3SKIp_Ez}`KJQ$!EZl2@_^WxSvbWD%+StI~n>ASY`~0_r zU)72GKgvPVZ>Z^ZaegHM5xR6y)YYDQrEP&!k3TKLy636URC061()3U9(Q_)S-UwHl zM1YWhORnNi?KCn~yv*-2NlYS2mj#^5R64X93=ec%7)M+&A;R^W{UWyACO;C-|Km8l zPc1qF)y3ao`}Nn$1wI{?D)Pagl*u?&%G0tfbGYM_BNr Hvfm-uKxBnM>jC?uq61;3U| zDXCl62ui9CYQ4bk-)9=rr2DPfR)L`;yr|&pVAvbPx8oVk>0h_qh@EFz*ZYUVgR}tk z^jyNCbi=TTw{f5^$by4kJ`@uyDeE(n$lcFMa)*nNyM&P8J;=B2Ovj96pTBc(FS%3T zkAj5B1wJ2K@KX;C;|(_;xWhLsCLR+2wMI=sa{}{ChciP~R)mPcwDQU_Z+#GUnwxWA zpg7!zC!^aGvjW|b2