From 157b7b89a61a3639beb5862e484a1f7075ca07e5 Mon Sep 17 00:00:00 2001
From: denis Размер образа (измерено): 1.41 ГБ (1 412 385 143 байт) для сборки под
- Размер образа (измерено). CPU-вариант: 1.46 ГБ под Если чекпоинт не смонтирован, сервис всё равно поднимается: Модель встроена в образ, поэтому штатно чекпоинт всегда на месте. Если файл всё же недоступен
+(например, образ повреждён), сервис всё равно поднимается: Что проверено на самом образе. Сборка прошла обе внутренние проверки
-( Что проверено на самом образе. Сборка проходит три внутренние проверки:
+ FastAPI: восемь маршрутов, включая
/api/v1/batch и /api/v1/exportРазд. 10
+ Обязательная контейнеризация, скрипт сборки и запуска в Linux
-
- Dockerfile (python:3.11-slim), Dockerfile_cuda для GPU, run.shРазд. 14; сборка проверена, см. 14
+ Dockerfile (python:3.11-slim, чекпоинт внутри образа), Dockerfile_cuda для GPU, docker-compose.yml на оба случая, run.shРазд. 14; сборка и запуск проверены, см. 14
Фиксация зависимостей, включая базовый контейнер
-
+ requirements.txt с точными версиями, базовый образ по тегу, torch с CPU-индексомrequirements.txt с точными версиями, базовый образ по тегу, torch с CPU-индексом (CPU-вариант) и cu126 (GPU-вариант)Разд. 14 Работа без обращения к внешним сервисам
Офлайн-ассеты фронтенда, отсутствие сетевых вызовов в коде предсказания
@@ -185,7 +185,7 @@
Загрузка файлов, таблица результатов, панель деталей, панель «О модели»; все подписи и метрики получает с сервера
- Эвристики качества src/quality/Числовые измерения снимка (резкость, плотные включения, полнота и поворот области) для панели деталей Инфраструктура
+ run.sh, Dockerfile, Dockerfile_cuda, Jenkinsfile
@@ -729,16 +729,20 @@ seed'ах. Принято правило «только экспертная т
Инфраструктура run.sh, docker-compose.yml, Dockerfile, Dockerfile_cuda, JenkinsfileЕдиная точка входа для сборки, обучения, инференса и тестов; сборка образа и выкладка Ресурс Минимальная конфигурация Рекомендуемая Процессор 2 ядра x86-64 или ARM64 4 ядра и более; инференс векторизован и масштабируется по кадрам
- Оперативная память 1.5 ГБ (измеренный пик ≈ 640 МБ + запас на ОС и веб-слой) 4 ГБ
- Графический ускоритель Не требуется: torch устанавливается из CPU-индекса, инференс на CPU укладывается в требование по времени Любой GPU с поддержкой CUDA 11.8 — вариант сборки Dockerfile_cuda
+ Дисковое пространство базовый образ python:3.11-slim (150 МБ) + зависимости и код; чекпоинт 43 МБ монтируется отдельно плюс место под входные архивы DICOM и результаты
+ Графический ускоритель Не требуется: torch устанавливается из CPU-индекса, инференс на CPU укладывается в требование по времени Любой GPU с поддержкой CUDA 12.6, включая H200 (compute capability 9.0) — вариант сборки Dockerfile_cudaДисковое пространство базовый образ python:3.11-slim (150 МБ) + зависимости, код и чекпоинт (43 МБ) — всё внутри образа плюс место под входные архивы DICOM и результаты
-Сеть Не требуется при работе: образ и веса фиксированы, обращений во внешние сервисы нет Нужна только для сборки образа и загрузки базовых зависимостей linux/arm64. Базовый образ python:3.11-slim занимает 150 МБ, остальное —
-зависимости из requirements.txt, включая torch и torchvision из CPU-индекса; CUDA-колёса
-в образ не попадают. Данные, тесты, labels/ и assets/ в образ не входят,
-чекпоинт (43 МБ) монтируется отдельно.linux/arm64 и 1.8 ГБ под
+linux/amd64. GPU-вариант: 7.0 ГБ под linux/amd64 — почти всё сверх базы
+занимают CUDA-библиотеки внутри колёс torch (nvidia-cublas-cu12,
+nvidia-cudnn-cu12, nvidia-nccl-cu12 и другие). Базовый образ
+python:3.11-slim — 150 МБ; torch и torchvision берутся из CPU-индекса в CPU-варианте и из
+индекса cu126 в GPU-варианте, поэтому CUDA-колёса в CPU-образ не попадают (там
+torch 2.8.0+cpu и ноль nvidia-пакетов). Данные, тесты, labels/,
+assets/ и docs/ в образ не входят; чекпоинт (43 МБ), наоборот, лежит внутри —
+монтировать каталог с моделями при запуске не нужно.14. Сборка, запуск и развёртывание
@@ -746,30 +750,40 @@ seed'ах. Принято правило «только экспертная т
-
- Элемент Значение
- Базовый образ python:3.11-slim (фиксированный тег)
- Зависимости requirements.txt с точными версиями; torch и torchvision — из CPU-индекса PyTorch, чтобы в образ не попали CUDA-колёса
- Что копируется в образ только src/, requirements.txt и run.sh
- Что не копируется данные, тесты, labels/, assets/, docs/ (см. .dockerignore), а также чекпоинт
- Чекпоинт монтируется при запуске в /app/models; путь задаётся переменной DXA_MODEL_PATH (по умолчанию /app/models/dxa_model.pth)
+ Проверки на этапе сборки импорт приложения ( import src.main) и наличие офлайн-ассетов фронтенда; сборка падает при их отсутствии
+ Базовый образ python:3.11-slim (фиксированный тег); у GPU-варианта он тот же — CUDA и cuDNN приходят внутри колёс torch, отдельный nvidia/cuda-образ не нужен
+ Зависимости requirements.txt с точными версиями; CPU-вариант берёт torch и torchvision из CPU-индекса PyTorch, GPU-вариант — из индекса cu126
+ Что копируется в образ src/, requirements.txt, run.sh и чекпоинт models/dxa_model.pth
+ Что не копируется данные, тесты, labels/, assets/, docs/ (см. .dockerignore)
+ Чекпоинт копируется на этапе сборки и лежит в образе как /app/models/dxa_model.pth; путь задаётся переменной DXA_MODEL_PATH. Монтировать каталог с моделями не нужноПроверки на этапе сборки импорт приложения ( import src.main), наличие офлайн-ассетов фронтенда и читаемость чекпоинта (ключи backbone, head, threshold); сборка падает при их отсутствии
+ Контроль состояния HEALTHCHECK обращается к /api/v1/health каждые 30 сЗапуск docker-compose.yml: сервис dxa-cpu поднимается по умолчанию, GPU-сервис dxa-cuda — под профилем cudaТочка входа uvicorn src.main:app на порту 8000/api/v1/health сообщает
+/api/v1/health сообщает
model_loaded: false, а запросы анализа возвращают ошибку вместо тихой неверной оценки.
Это сознательный выбор: отсутствие модели должно быть заметно сразу, а не проявляться как «странные»
результаты.app import ok, frontend assets ok). Образ запущен и проверен в двух режимах:
-без смонтированного чекпоинта /api/v1/health отдаёт model_loaded: false и
-exists: false, а запрос анализа — HTTP 500 с телом {"error": "Model not loaded"};
-с примонтированным каталогом моделей /api/v1/health сообщает model_loaded: true,
-device: cpu, эпоху 39 и файл разметки labels/labels_images.csv, запрос анализа
-отвечает корректной строкой результата, а /api/v1/export возвращает XLSX с ожидаемым
-набором столбцов. Сквозная проверка выполнялась в контейнере на той же машине, где снимались
-измерения производительности.app import ok, frontend assets ok и
+checkpoint ok: resnet18 linear threshold -0.4930129051208496. Контейнер запущен без единого
+монтирования (docker run -d -p 8000:8000 dxa-quality:cpu): чекпоинт присутствует внутри
+образа (/app/models/dxa_model.pth), /api/v1/health сообщает
+model_loaded: true, device: cpu, эпоху 39 и файл разметки
+labels/labels_images.csv, запрос /api/v1/analyze отвечает корректной строкой
+результата, а /api/v1/export возвращает XLSX с ожидаемым набором столбцов. Сквозная
+проверка выполнена в контейнере на той же машине, где снимались измерения производительности. Оба
+варианта дополнительно собраны под целевой linux/amd64 (эмуляция на той же машине):
+CPU-образ содержит torch 2.8.0+cpu и ни одного nvidia-пакета, GPU-образ —
+torch 2.8.0+cu126 с cuDNN 9.10.2 и библиотекой libtorch_cuda.so; в обоих
+сервис стартует, и /api/v1/health, /api/v1/analyze и
+/api/v1/export отвечают корректно (device: cpu, поскольку ускорителя в машине
+нет). Работа на самом GPU не проверялась: для неё нужна машина с драйвером NVIDIA, где критерий
+приёмки — torch.cuda.is_available() == True и device: cuda в
+/api/v1/health.14.2. Воспроизводимость
@@ -788,7 +802,10 @@ seed'ах. Принято правило «только экспертная т
Jenkinsfile выполняет три шага: сборка образа, публикация в реестр и выкладка в
кластер. Скрипт run.sh — единая точка входа для разработки и эксплуатации: обучение,
разметка, приведение имён файлов, инференс, сервис, сравнение вариантов разметки и тесты
-(перечень команд — приложение Б).docker-compose.yml с двумя
+сервисами (14.1). Файл выкладки swarm (/data/deploy/rell-bone-2026/docker-swarm.yml) лежит
+вне репозитория: если он монтирует каталог с моделями в /app/models, монтирование
+перекроет встроенный чекпоинт, поэтому его нужно убрать при обновлении выкладки.
Документ подготовлен по фактическому состоянию репозитория; машинные отчёты обучения —
models/train_report.json, обоснование разметки — assets/labeling.md.
1nb^Sx9z?F+Cd5DFk->8;8br%JE#PiPs`S;@dmZ-5(PP5h7o;l|% zBD>j~C0PhFzacw&7OrGl@nv;xW>WG~BZsRbcHb=f!nG6-)aUdBZFu|tO9zD#J7|Qi zc}X@z-3Y}E-uhtRtU;J$Uk8&0U_r&zA!k#@-IzIg%oEx5xiCpEqK+Y^zi{EhNENWr z+RJ^nGsl4fSC;8NEhZFj!COP*eIsbmeXW%iqa^iN=9IvoN6b+ou^Kj-95A&~ w_fK_3z9q_=yKMy$uWJ}Es~R}Mop*)&E)c|Rf9Ejym_&5p$OsB?h2P+C{@OsLQs zspru3@#HkAPZY>VmuEjNdnob8^p(JLH|}q;(`O|CYmX#G{F~oPiiW**j|wv#Hq>hT z)Ee{rX|=<#dt$hBD<(D)r68N(d@c>@e+!-_wOQ*@w<%g|*A&AR&&%1A`Gx((g;f5Q zaB#A|iNX1H#rp}dCC`OgP!m&Oh=tSoayF3(v$cFH*HNz+#J%($;x9r8 id^O0^?i5|wVP-us-ABkSVC6>u(R z+>2@el<+B(>mbe?!814Y!02jYKgvJ3e^sE6Pg)Y{GcV_h?30IjGDRjftz~T6sWP5< zHtW9s{!XfgJ DWpE63B@fogS6HD8?q0+jD7EWVa6pE0040yC#kA1KooZG|uT zluTW&&waSPpTEPNS7Hiw^JExKB`o5n3PMI;zM{V@XN~M;mV3yCH+l89<*z$1W@tO# z8R;q8Ifa`^RBqUp$CNBoQEWu1YhU%RxdStQSC~k$ax-0pJ;O+SjGTTrgx;p_FPs _oLmN0cHON65v J^px mlW Vz^ z>JsB2&mycf6;sHrvwd{G25ap7T$T#oejWB6{6L2mI5K -&3m*#z>B#9*mzr%P*P>yTz}{4lT{>c&u`3%gJUZ1!e4~8uMS)D z$L(lA*pERCpvT_d)SrLe;F=k{n%$ZjedoniP_))4XHPNb{}YP2pnDY!b9@n1tDki% z&k~aftE$By_ R4szkGTMUei*V zbSJB30MaCddU;6$%pC6$lDef2(Wzej7;%2qtiE}hvK)l;S#Cfl^fpIVUbcP5PDX{| z=`Ho5*6(ruS)9@6>+FJE*+?w&(vz;qB)jCPb|pTqAJx`B&z@aAs${Hbp8F5%$0get zo2~|z*_Q`YYeV$`-lFbXv8~{*xemD3YuJX$`43RohB*CBpDWk>tT4ysD8G00epOnJ zmMHbb NF{+%cIP><8>k!Tyt9xzC?L4xJv%!{ zjdWCG5pk#hWTReEbz7vd|K76pi@V@6?8ly#diH~ @Q z)E1`b-S$n(kdqe&>gtbWG*M&TP5S+3RevDlehR_6>yt^CC7@BQH78wp`aByYBTA^I z)KvmYh_#lx6GbshFsqGXs&_8hq`D*YZ7sVBp56wVcxj%$IF7>7Q0aWJDDn}>w3NSq zzqRrbR4l*$Xm}@3CbR^(N{|givrQ`T_j%H4>8_Y)tQLHU=at~B*lfsY+u|X5t{zE} zsTKhiC6(HhPBrFd*V6?z(N-?}3F-%vVXX_%a)cWec77XMnH`mJOO}SMU0~tW+YeF5 zBoa-?#UC)4{at(Nj3ET+O}g1@s+PER<5WM5~iGl`q@T;+WWx3gEvKT7ehp;do8q-{SA~*iem`LJf!P} zCgnk;Y_AueVapz(RM_vp8)(6|0X+(tavB&=XE8K`JvUE(k!>=j)SX(ypsfU`s!YqV z6f9Q)Bm*;2`gur8HTzz}F3wxs(lY%`#Ii@`WaNdp>`|czY~H0CZ&vEgZH;8euY!ec zZI3Ir1vftkxJDia$&`mG_@d}cuSrVOQ3bh{#8CZGSQa{HhB5!ubx65@2Us31%>_f2 zD|E#bdR!WEG~LcBah8a!@tgzdV1ZSTE7s$s79a{J#lMsSWWg>WvYNwl)wt#lJ!V)> z_&aox-g&4PEN`~Il74U{7kd&Jj@2`JHI76{9alhE1fipHbFNujW3$R$kHCxUjdu5A zfW+lEp%k;{e#UpUy_e@{-!tURZz3IT1w%?9e n#$Pj<` z%N=e?K~9{L7IcP`eEm{Z=k@qXjDMy{U=G{4z@;%Ox5BP7u%#>eM<#7oqd>`h@>&>J z)e}+7q~zBk^BwvClG@vUj>r}oDLyLm>&Ca!o}FG} s%C zgl#uvn0ts-`|_c83%QuG^T>6+y8m83^)#T(e(L2&$x1mY{#FTyd|YxJlVZ4x&JBHU zOhxjOr)1r8byQ-)Y8NeKE#yzUshAf2WG~;4RQ2l=vtQQa|6%3hHwmR8rLf}}=Ii zu_{O!a;jZM@=uBC$7Om078+jPsGkew3`x;QTBOjkT{e1AgOG6%n&!r!>j7 ndA^X@fuNT?RDO$yNJwZbtV)jd0OKH`-(}i^95gzGvHXd zK;zKjA*0??F$J+q)Af#I*-6gk^ZXQ)P>bp>c}7_Nh6OHZHiqA!pn#ud7 rY=zx|MSN-BEz$e7J(dKc$bqIbK^eOK3U?IObw}+ z%|xr3RTMMceTd zOi?huW;2XnVFY0;1r)4xI7qe7+Kqc4Wz0CO!JeCF>fiHuo1n*+aO-S{9h{l{um8Ki z^gk;NMF 0r*NJ&wTi zOz7X;>sWB`tzDTG;y2auWw~BihF+Zs%yt~$^$CpixdJ|)hXp?7mx!VJSyP6G*#09L zE>|%wL*XAdDHrc&(YNm?(r&=3e4E|peb*Rw-~6`6_uto(-S4k9;jh1A-~S%xZZ;kI z-nKUZzg6XzOT)fypN}&;3&f6_@cr-R*zK3NooMuj3eran-PI?q5RqIj+aeT`RiD%7 z17P2y*CST#<$PY!RB97tOrxaZFt;db13zg)kGNVUMnhX8c8sek`dmn`9a+PM%h>k# z%(ZMm5-il1r!`I@OQGb3z>B-p%R>L >gUt*!oiLD^C&ml=u7I z@4bk7HhxCFf|O00viGF>q9v9N>tCtHEdVxw%2(&Z#Wd%TE^W=e^Qtw?+XAJ+3Uk5Z z;N8geAU3j8+)NbCp2XjRXTD;hAJ&RfgnF5_Q3^=}aMXOfAm6u=uHu)KF-IH9+a*X( zd?CIWT*eD?B675NpXyUn{i30u8_y`CIz&`t&$CR{0jFJt)xnEA-;_}iY@w}@06J$b zlXMW1E{DmG>{yX5dA?Fow~oI5eUb8*`fED=`IH~9DfAdf`O5?OGW!?Rm&u%|O}sQ= zjhCG^jgiWd>G`0W&tz`4Dt+~J@vx5w@OvD9UVIY5*?wB#=a-6+KP2IdmNhxVUcZa7 zef`Px`Dr#pOe{$6u3tAX%7kc|3?OEWLMnHEZ*Ts0vFhyEd$0;h7Bl_Rt%nc}U+-t+ zWepP7ZmW`)2QV5dF~a`b{(lc0P8}-Gv$nKl3si+%>7t4C`zp&c)lCW?otN(P*?X#b z@OGD*ySIGI> D@!%0S7KIkujrH;~DU7t? 2TFU-J9hzh`Vf?7I>AdI_$eo?_+M1(aXz=eFC1caRl*ZxP2(yu47# zpjp=o?Cp__t+@$I5v=|9b`X)p6eCUV8VcbB1?vsQP)-d|Vvt=OB23i^4pfaVwsZ)C z^}{ZA6#Mcy3`!JEPo4QYaEj3MeaH31@rw*Lc-#1ii?9UC|3O19g6B>4DfvZnK~Y bFi3}-YDs&uFtNlB%(;Afmq=41WA7aq2u96MU}A6WT6*-WCv?8M*Fe9 z%tDwfU~c`UGT@HOPn{V)?DhS2N+$n)F1xjWJwT?6xXmbhZfz>278SE~W{x$bXnGt( zZ)r~GB3EU7=}j>ajU9M>BEfjkfz)uuxRRiX1$xK{e>h$)zw{sqNjS8Iv|gD~7@+e# z(_LS1W|-FH#LVATuU-7e0P!rmPhYDwOu&1{J7$=c)oCjG{gR`gV$uY|U;W7hL}F6A zT +jNA%@E@C13UVT}FeQX&1CDCx z0Es1MP!5q};`e+l_h76MtBdfJ54vqMW>dH&hzk~m*Gue`+(fA%O=15jyoTHYy yY30Hb1^mULn7S~1LS~0aGz^$Kk@1Do)T*4gaIw@*Z*ky9O8y9ouLoAHZ zH=%~_H!6(`EDVE%{#zoz;q6!IsQzgE$YY1sr2h1L3mAMdWCv?bx}_qxW&4hvP`Sit zg9ZF)pgYC%Cf2_j>24-(%pHd!OZxgqmFl5vl>1d?F&YivOa1~&Ksw}~%mYCKG{Pf7 z N6AlU|?WUnl4LPdfAe zMVQMGm$Mwq^}is6gnR|KM?i)`HZLb&4E)){<^Z2ZprFzkcQ W zCHCcN`|TQS5RF}!;j&g2p#|>)ylgjP*SyTrH%acKXr$oNjAZsA^@$SZVFVoDrs~c^ zFxofNbvJurMVCm0mbGJlnMk0Yq6}9}PzP%J?=E#WBD4FcJImauE)-}lnTW#)M$Ry` zr6B+8tbASDWb{>^w=h)4qHTMtTwCR@dSD5ub+ehrVh>D?8Mu)OX=$?tR(_0*;BY-~ zJ!aZPOI#IkFM>axi&mfUyM)CFm5zVCl_{P6!RHSA&e;!|o$Ik7h#jb2>DhD~hxA># z8Vr*l#lYc-cP6VBs^YHV)d;3GI98yg`f|? >KO2nz NIm_{)gN7^|Tqm=GC ~s zHanfNO!emSk?nmzm2q!+#tq+%scm6@t$dHy;^wCRiJKcvkv7c)P%mwOIO3s@g6}qo zbH~zvI0PIi=C%YLp4Fs}9XKk9`|w<2kg$g@5 {tHTx(fQcil N3PvrChvP-99w2BAA+p&<9T#2*(u(R% ul!?erO3bL{jZc1q4j zSUUKm5f1P8Wp@gEaz?yF!S@l}M-Xo` NK|%5$Fm&i{FzN30wktXy#}Nk#>xo!{YN|*E(L+F)!I^ zGi2K?zZ7@89HVILn(~Ba)W=8B>qypHpv=k6js`t3h6Rmy 3HIM6OA(@atCm2th?q%=3L`nEyMMDl7 z*8u}J?V@X3v83V(CovjKMP!pe_-v-NoIg^1tdTKSepjV7y%!g~u3iF8wgMo)({J~` zs3O8bpX4B&oVfW@*{41r-qp}&UN{F#c`4X|f{bJwpwh8Eq(_KE_ChKv-k=MR=?Fq@ zckq_B`O5NiEYEbLmp$E4^29YzD1}$u%G?cAR(9&QYK3n$Orx|btFFG^0YnO%$v#k% zbbsyf@(?E$s$fv``UmIqWmI4R$t*}8pB=8u@tQJE-P<9$CUrWKYHmKWdv85N9966= zx{Q8K4_Z#>oq`@u*N^@lT6&hW=TWNz4D${Ug=rO{Z1&>wtr0KEBe }BlAB!d!Z}Mw)s96dYB+vi2t+MUVbjBSbD8H(I?jD| PTE`eL~5+xxmySn)5q2x!7RSBJ&Z0+&v-N$b|7`Xh4EycKtrnk#XV)lU9qAZ zPf;uwCWn#w)4h*5d5!(uvgu`bZuQ~?)Z-onbDs)$UwWD2G}{Q3IaA6l5~Yggp!DTE zE?z`-fm@Sy2h>ds1z_(82HSSSQ@iRSP6sOv(C4wfTK3ibb7KY|ss+OqXV+9vw9t%D zd}!iT!4qHPVwPUPnkU^59Wl{qS_(3SmL2xwwm^Mpk;Yz`cw5mYBMaov_jh76d`R zNzDe|<1ZrYAik5RQ(P7Ps8mqo+~<^iAkkTQ_$p0M$xN;%wu;l~L)b3->>rva+ILXE zhAzX;pJjqx>5T*yl%J|{PyK%GSTTF UHVCUU6sJ! zmRs%2592N9FrMoP-*1Lj(0Co=HhS}hup*wEx4=-p3X!ftqJ)bTs{JR}IcNY*XgU|c zF8R6ET#!U_Kw0|acQg13S00)yzB>|Q^pz>Bt-P7LTn^_4hF;-Mq5G>Xs#}EH*Bdm% zYp9f^DC}|I&mFcSqi3FiV~=bYQuCax?(UO2CCLD){?xX`alrsGBwpnJ(oR}_dG4!2 zsXmSg-(GJ=vN`?ZraCs3zmgzX0jL+`lrl#g?O*PW1TA%|7I^WHEJRlW+g248QFS$P zCRs9bY d=Go89R-E_OjqH>5|n@s7N1& zj?9qgW+3y20>q}_vyvtFM2C)6ypr{VStGy1la5iCT&(4Uk58;=y}?^N^?pmE6d9(B z(v2TJ_t*42wyxrQD)cFT$|aRYzC(ac;0KHdNBITa&m%6L)gTT?P8kxavVvk$%HW>- z=Au6U-7Os4Bq!TLCj}4k1e9o4-SGqNep_bJ&+&}whRf@2>bllT!Jo{r`oz;>c(gyM ziU_JVc60z##0mY~*t3lW2maC@)v8j3HK%sJEOxp~d$PCR A>$8O!LKuU^)c-^{_2Azj1Jf+KE_*%+a(3fmlte z*Hq*RVKU<`0ifATi!HZ3QE2I6Nm<>ld}`n+Byu>XaEsG^H!A2J{^DAda$bafHn>E* zv?Z#~1-tqY16L*9JvVzW8@9JZ25n~mtXg&(8@sI$%(}7i8H?e7`?ILiOTQ#^?4@io zT)B6f_YN{R!nHnlF;6Me9_PUCEDK~rzMt(t9H&UN z!rOqHvr@84o|Olsycr~~u7+D46R|e9;qDgA&e=;Y9mBR^m~L}&qa|7Jle2pPXX`4> z8g?1k-JFAhm>WBJ75^#Kxn5*E@)}1onZD4$#^}lIX-1U== bGR+slTj!kF|+@^EUn^B1Twp6C3wLIvq|rP5+`qf*?FS0Ds?Y7 zcz>;PKO% {5Yn&Qp@ faof z)1u%p?MqI2KuUT<^^^nzmef$$?I0wr+#p)b6$cZ3KZiB{E%u|h-c4|4F7Bba-YN4? zpa?Ian=m$E!y30@Ehk79eC27YV3Yi7ho vd zo(SUQIU;}WJPKZ^t~#q1k61z&3Zs5T+qYUk-vEnUYU_&7+Vuy>(#ClhPLuBlyn;09 z$1JUT$ddMqkOq5ltmPXCtA1qGThn@(w-&M}lw!ZuU+$EE_QdZI+>zLX_AGc9p|$1Y zH$*SAZIzt0g 8aH6R)A^BTSmRIxQ8#fWRTmBx7&QTSh6 zol|t!LAUlB+cp~8wv)zcY}-!$v2EM7(b#Cv*tU&+ec$iqoO3yA_RV0;n)U4c{Pr@A z2AoTMWp_9Yefc9` 2RCRN;S5w@3qD&O9?cI+Tk-g9(@yuM `6Z-;$r%eLI8i!pv6h+RgrKHuU6@=J2uHo5mTd zqyIi+jMFTrHFw@(cG}imjIC}tgN_$@t3bx1YUl0L;V)e;(gx&7zppmE{-4hl*DJk( z`=)A4Jnd npM zQIu07HJl`$L-;C!9n(wMyDv0mR}pmW 8$Pu#5x`AZ_4eF6ZKZ zq1eHSyJ;&)Rmbm*I&xJI{+Yr5_-RlV_Fx+z0LvJW?S8C(HN?hk;Kbp{95aQ5)y>^$ z@h@Q6HR^~9VqR~ooht;RIqH=IWmmKSO*^Vn&J?Bl@$RVg37!J;STS7mV_0qXC4%s? zYL_`TRV-M9fiq*Z!=*|Gk&3691+gq-RZ(3j!Z4e6iwW&-YYB4i5_PnCWRH^ q54h9ps z-G&LH;q*2E1y^gy^@qcR(AG+5)bt&Yzke2CQ;Ry4AAiW`e-F9HhKpkk$-6G1kB)7> zO=>0%hE1)k-t$xLW6|wJ4(d(->^q{WKZXNn0x^KJx2 L;M1M& Cvv zrX_^0si*sSv|pyfV{|HfoSPMmz_%1Uhsm MT|hbcXvS?!j&GC!zh}R#&%m2o zcFv!OWLCO-Iz!}b#WJ=Hia)*dgI`w(>Vo=hs`4|{%22j;g?c1Am$nHkO{{lZ`mwrF zw-lRqI9yrj?x%tm9_8OJkk;^&if>3~Y|Oz^j!xfXX@_*mRnI2cfuQR^0(}RH +ZBH*HWhn?YUGqH(jOwX4&VKp65$Dg()7inn9-(UW<_Pmx zVP{@mw$ZU2w!0xU^@$^6Vq_AZ (po^Vg_>9_Re9G<-@))m=MY z |+C)fW =7DKAx8HvQ15;Vrbo1x(&w;$duM^sV$mRMgm@g(%TpSlw zTUm-Q^sBwAjw<0ep6{JSdiee?;Y0rDZ0SXwUQ`4`6Yz1x$Or%^TXIJvA=!WP4vIC_ z!ca{p$F~IiJ_aX&FJN-N?q7gX67q=U-92X;K(GIjaif(vu8q>m+u-oT+~9P^+|cmx zGR;UhN(6i?OuF|e#tDATPP*#@uP 7hwelJ0lWdP*I`H8@7WtjG!7_X(wOgt zc$hl4EudX7%DHGC90*PFc{MqMHj#})AB5>fWAO0rU`)gL5ZF(W29btvOojslOvB~> z9Ud9t08BE3ek))qh%mo`nRyK+gjtyk7YWmyR^X@j3}Ixst@K_#8t_ji+I@1oUdi=S zwESpNiT9&gvuE31S4OufNJ4yNBjE)pE}JtHK6gi5&H(D=@Ahrq?TfuN%>UTCsU&|w zxZ-g)$nXbaAf3)$H!6tML J>iEkJ>50Q%P&~B- z*v-`>@auI2*saw8r|qGi$?}jgrJqlt?YLd+$w5c#Q-f~SRAJNB(1TCbT=JIg&nuel zfQ~4$h2}q)kiIChjb@PRC_8@X!DceeS1O=S*JnzUHRka*9o+E+Q1I$S3nN;{d3o;p zd=&h;-T(V_Mf8tJ^YQg~{_ifZ@dxKt!#KqNKA-zh8o@a?VTP@7b%5t qdLi1I)nnG)Z@c9Ym=p1~bg^!bsJn*dq^2A WEtamomsnlmOh zTV;vY(xO?BlIM{AZs6+hQ)wTkw%2(|je2Q0h#B_-#9u;qQ}V>~29ts;J=R^a)T?t? z0)HVWt>PVm80~IffAjr%V@bGwV@COhE(un&BN2QjqCJp2ItU{Yxh{_-r^c%MZo@;q z1$zW Vg_=WZ#-(Avmg#fH~#FOB%ZngW$FO6zCnJ zQje&==BFRm>^f!j9xq2kI{9y2VQUo1&}>Wo*em~$ETX%yk()bv@XMd6WLcD9<=(9z z=bJ;j3)EnQ=~6Z?*kIx#&%1J`fqYnpxOdu3;asS<+(2(B-c`yjyay1?;DI}Xl4tPo zfsyO3R {)AMze=8?{wZZt>6Zq+o2$2$IFxsMCUtOgtZpn;7YtBN3Mt`g+ zmpP#K{?yUqFi)cN4GOrND3O*_p*6ccaQu$+4ywRS3cED~C2~Q<49c`2NQtH4QFxPi z_6>F3o(-uKp5j)#qYo81$-gEZ`L>+OwsR+(6kLHp(d~HMdwx_vCpOWxC6g*i1@ u_TELrz@3|bJVfd(M7$P2#xzH)?w*W~6S zevvIOKB4xT45KwrIJw?M9pLpZ&YeUJ%}q8bV&~%JKG_chm*53QzJMwez=qFSq-WPY zRlv5m-jIS1UJv8^U??aeeSp8_6j414KA_y}AY8>0@Rx)#BrBp%lmfX*|J{u*Bt8Fr zf9WvWfP0fKRtSun9PO!kf_7KHA$D&-;&EwWWaAeS6oOY*W_SA=i$+k8cwrL{JDa8$ z{#yn+cb{Jj5+96P#!(bT90GZw)VVv?B1W={W8lUJyI)aZv|D3Phg3d~3o|@aGV}&s zJT$D`y}&oro|-UWRMWm=uK;KNbq@h{2Jjj*2bG%E1z_KHL-U$#{6bjxjy?}HbW?cB z1ocM-;jwxV!oQD@yfTJS`rs1^-L8lhNDa4Z32%6Vtg`#mO+&RM6eoHG@l2Sw4xJwd zc_2R`FO?w( eusf;g9`bo7RgzI7U8#aVqdMJI<^vk=_MJA9Qd`ODuSt`?6~&5k!D*|! zt9_p}L+UZCHzweY{i&oK#tbH~!tlHU6Ooud5x-ZN5_5kONjO*^cMyK2Da3df?xzPo zvCVxb+S&i*^rNWF8LF0mWHvc%NtmGpq4uTp+qcUZk65@&o}nu|4K>4odw#O!JxFOu zr8FS95tIa7gT}{Hykss3C3mcOsc-`Ij 09_eKo zkY%tO|FY_{yB!Wcd@M*ed;AQZ&^oz|Kp9+c*jb6E>A{X;C{nD~3YUc=UEih&zi~{q zV&T5mjBJFsZ+c~LxZ)b`xr_h4vF<;Gq8q!K)Dp9 =j^mgNTOf|Ap{Qf1dtc3 zGIDJx>CDFDzWw&a X&A_iA{0D$IHVF=4pjiUAoI}U6>r{&t|q2?S6ellLTXV_Vs z#^*GmrU$ptaR}-G7JY|%og@6nIr!TeAp*V lrfKYxAB9ZfM1`(JRLj{6oj}eQ-%TKX4vb(mu)T96u#jvc`#ucyZ{j39j zWcXX^K*Ma~Yk6f!#2b)|{K5#=S1f0NIjqpQO}G;D6*JoR;7rIIzY%l+OxLdbye4o~ zx+h^l2}!RXI05sNvgjxlb-?)&mKjTvuTUOQ#(>#bVzmN#b7~N%OE3E^G&FyL;zc7J z-IQVOq>dvu8q`Ry(`>bpf~>$4^=-gul;7g 8%`s zOFR2lrh~cGO|&u|DYB}y%KNkyH9C`MD3-W4jHZ7TK{i_z7ycMXw17x!Yy0dGeTCJ1 ztCjLRoMoe~2HlDva)`^Hn>;rJ5S7Tzl1!5^$UN5ER?XmUFi)o%P*J=7+<8tT1+@ms z@Svi3f(G-#%f5&Xugdf}Bh-=9^#vIW6*TQZ(xyd(sMwcIgmv4|kh$CZwI6TEx{uVC z2=}|{M8Ct+qUX36<^d7KowBt;c}DycFgC&sre5up>ILX+F3syQwYcO!P4}q;Niy^Z zGJ=u5$P@}md)iRL08#VX+!0Eyu?r_~iOcPud%yDCej9{S;<4l^fKbaxHjgjBeBW2* zkJhoJiGb1xP}t?{HQcOGbZcpxc8+8W()|u!Pd1)i9Mv4e^8rX@4bk&?)X$u!+$|mw zo<$y>7QPQkClQF +)7WMOr_yTUE3m%EGlIjfTe6*{>os^pUf#&rI7> &NQe~tZG*E2D2XuZ{?Rsby#c1qHI_>OxP(uCC$pM)eo9BG zefNAxkBg|vZ&uD>1jbnB3D(B_rQIPnSXKd($_#(F(~mSxF9RU#^Wooim-ev3BL~6X zme%%c++Czp4pzfTA1twTtGpO7iYQgf6NesZUKZlQ%84U6W_LqN=$ufLGP7)0y22SP z&hZr1Z2_{NiHM*e?Qfvg3Pn;5hcN`TcQq-!qe4*oHcCT3X|Ze>gx*X(jV-;-iL@ *Tzv*$}SI#lDIIL@=HZ#@4DwM zYszba_sa)p SMNnk=b+t75;A}H{>(+~ZG&lW7%I|Y8jXq`aqyX_}w)oA+ z+OXf ydzKy>Dfj@tz(v|Xpbtv@@h%f8c81J@em`^Nl)>nvp?0H z*6OCq#hW(jb~A6XLkTjZ+U4H%7#(4%F8X5$m6X)9ZVRZ6%^*6H%DJpDYWQf4K%#E6 zBJ9?`>QK6mO`F*xIy0ib&IQ?a$QZ^?cV#crOtmQ<`5QYqf4bPfIl1k-pP|%tJzO_s z60_AA+@F3`rCX%1X=yk!rDRVftdu&-RBphA9IZscd`ExnJ-0g`V@uJH+4_@|w3R4` zj cZr~>_3p%#AK+nTo6)K|OD`rWZ 2ad9yJ zQ8i`T5*`MpBbq`W?ug(Xa^l?h2rjgxNzt%tCAeBtb%-37=Y^HkQ+yxj)&<>Ci#?h& z;X?^+DQWh-koY`@3B5zQF-LpXmc32D7WDQsN8mJ}09APPvEmm$%T5`pEx>ZemUG4L zZRn4Knk#z$&x{lX1XkSQVRv}6pcYjAHZOK!P)*Uan4}ez9WBf_cjIf@$Jo6lJ9!Sl zin%W_yj#UdPuvd6J-PB{#ESgOFS?3y?>`rJ51l@qKEsS| shw%NN7{Fjg-HH-#rjBxl z3xU%Q^KRnWG#0(vr-+l ?fj?PaGi#yW_Nuid9=Fmyc=}+zmL{bkBczwW8gcxrFzY8t*9caA#A) zOndX+Afi4 B1gnd)o^-nc2&z_2_O92#0e-};VQL*+xe(bVt#Z-Ucgw>uUvd@Zm zniUuEC_OAFr2HZgs(lFE`g(+flyq~4I }EQWv!pKYirLIa zGD%YF{UPt)p6l{l`v%*EDF5$he>#2Z1pl36aS={m)$e(&!nxbHQ#N8+4tHi&!ew?? z@58z#OVSss4q$Y&xYCiXXd=p?@b!r@R?rEpl~M+h!+1-8J(u~lpN)7hH=9+xe^K=VEHm^xkWOx zgWp*yCH!S=340-Ks_GHZ9m5|uu)Tb;xq00=?@lFl9BQGr5IxYmgp4K1U}8;`$B6ul z(aDG ^6=3oRB9v35x=xxzM`L1z@0Ng&{%Ek4ClyXLBX`5vo7x_v! z`;RjR8t+BsOFM1>G!S0SO!8hy3D0rD>U0X|^IzcSd 2sN~?ofV_T2gsj&1kg}qPWDb#ax@qT)QI=YV zSl&v8Z%ze**lfu$ZL+{K@m=qZxVvAm!t^~#n7HSQL|=_Ld1`VENe0m$i$`b#Ub`d> z*&c~zQfBUwAffvCRB=+~ADn|7c!k<`5rHNwKNx5Pp4YdJwdOgJEF_9CRc80*MrPPc zfhh3-QGIGqRzjRRRfu-;s3Vb>eUXg|2b2laehHZ!;OzUFqB*`iSU)q;oP~gFm;|d_ zt8BeFRe-c5T)=PbPvpB1t=m$)OPx|S{(a?xuCwk#r)g}m`EC Jzumqt?5h2qbjyIf zkD&6!jTZCP)~(t8b)X`3I+|J+`*NC-k&lAMQ703XE$O=Xiw~9@j%Sff4eIBh4>D9U z+kL~c{|>8{_Cl1be zueZ>8L;{)v3$4d4*`BZBdcI*R2|UCDt^4s%p|@P+Smec@H#;+l-Zh<~rFv7!Je=dh z)wwxAyI#RO0ak8-t8K9@WmEa%aJcd2uYYpmLaWs0cD8cP$+Y_16p(*+;#B9kK>2WZ zngkz0h#X%B%|-GA%gf)|0d~Y@rhDr9wc*0l_RLfzYUfi=DI8Ob5?Vs237ZGW36va^ zhB3^eRJ}=+_NVdMb*@_r5SX4ru6uTjaGo!Vm~i4VH11P~+!m+@WZEB4bWX_8 zosOS$#A}VnQ>p*cA8)TovK~@* kt%&b!Ap(O_>b?m``>SIAMY+=`ob~_rVWM(ZF`($Plo5n(5 zDmZu)MT00%ArmTLyuvl!`jXZw)DSnL&gZbld1=kl?~a+&?%7c#Mex@P3G&VBVmCY) zylBgVA|nR`1GfHqsW6#05PhK$cqPHeLLavDR55;ulDr+#;_`1$+f;u$ycSm|Fe-)^ z&BqyKd|91iM}l8xRfE3VvLY8c P|XWv$BXz*~4#PYu7Uf1Vv@lF{pO&E`2 zm}!6zF^9tqKkO0^9kY+8iIJF4oU^(D <5XbUrAGh z-2t3VfU2b<6Cy!A_O^YHo Xt|!>~-HOp&qe z+6X%<@EE@0%b(zcw$tf9=|aFb`m9Oj+ e&sU-K7 ${ z@H+^YiQ&qfM-#k~Tjpom_LpZD(CGDdBRiiUJ5^ZwAM_){4+zZQ5T=?8nwVAZYDi<8 zN*Eo{Q (ot4z*V_7k#2Z~Voc5gWG%ce5Dz9pMs}t;q~Lfg3TpLEL@%jS^k?H- z-PTCn34uC&{)>Qot50N+P0IJz&bZA<>Fa#0N+>!EXft>F3HH*JhQ;A+i%GRy`dK-U zDYaW#jS_|wDD=FIBe$~7G7j>HsYH)e44}wyeYxjGIsCMqylLgLGo@UM1-TFyULWdf zixgl|YZGeB6v?AqYJs5QJ}jl*A@dD}5B7wM?y-l{P;V20kW`5c;hq$b$eAif oXO5|uiOJ~ z;ufgCyo9MW5Rcz|ir8;yvZDje?mBC^Ow3mc`+qiZJ&>q1Xky`&ejMzjG?ipL@iT6C z_$f504~z}ts;e+8^7hosou|BshR?*b?RIsM)n@x>T%@MV+wC#ugOze2HtgGC;DSpZ zIXrgcz{a0zZ6JUB)QyUe!8?rU#LTkOwbl(~qOlU;xd|vrxF}X*vGD<-2@Nh~3%C 9nsw-8s(JVxL5}QRfZzlo}qN^h5qmsTd6a+ss|hWLc)& zlEJYUyJ{6uMoGaGJe_-IVFfFU#80>Wb<}$f3C-z=QT;`Lf4DEh##cp6KCBgyFX4f> zHtn0Kyy;!s+Gx0LM%x4|(Pk~IyU196SLTS?{z>3Rc64UB5OA%9mi#An;c3PVOjvsG z&pd;-qqQ`*@S~0>{U@2{4C3iJ!fPry;T0O{5^h1DyQJc#jAgUjD-F&$zM4bB2keio zp6eXA!*Hzn7_3Q&ZA%hV)mcy$y^_k~RRO4-KzA)VAe1KH&UF>|`}#cRJXt5Px0aj9 z6EJoS|G(kO*PAd7GF@H1}nwL*7xd-tR!K_fn8oFJ&k`f~lH@$3mjLE=HXQ_rgJ< z9e B zz-%NJ*M(H?+`I|!VFkK;0inHqLr!$)fR$ZDo!a0uoes}x>xecG#Cd~HeLRx}Rd+Xn zr-k9;u z8S)r%pnAS^Udz%}m!7*FK$R-~U#zCV%RuY6nkZG+}Y1oTSj z45DuDw;N;)@Lc}`9a~&(8xW<&^enN`iS_sfJtXau%Nv5x9gZZCKAXO>;&N*hCY3|2 zdU7YM88;wq@|`U+_T`#?2*#ywN&mMjATWm#U}t0H_+PeX{`J~})`aU%3@<(6Y?{W% zVNiH5=b3D2P%=0&9OBt=vL_>Ed1U*izgWp)5mpss4RK}^=PUk~0;*AIo!c6hK6C${ z!MR&0h*qGYDz`aGWcRn-5Op+1a{Dh *MKl`I_gX_n*~!^M2Zql4|jj$p`dQU=ttVIDrqD04g?TKN%Hzj|r06@|aBG zZl!OOLE>g}Gz(B6h0b=tegxrlDOU O~*TXtLQi^~%BanbWq)xqmq#QRUBLh0QoC)Q2*wyADL=e+4%&Cq@ zhz9C&U^YCHk(pIJPDfQ!Xg&@bQ2GadeBTn>JhMNJYuNtatBO}q)U0N_5Rqb&SL2|$ zAPZ_1h!+bR>gMVk`al^i!XlP-fnjoGXA;L}8V9`~oq-ap=Kn4=gc5jdMR&x!M3^wB zk8`Xl;0JUr6)W{>Cn;t$QM7tKX3|XxSl`hfSHSoRyarOj##?Ps|Ef;63H6$efe>V0 z#^l4K1G+z#FT1jSB$hiTQn|#EJ27&q2lZ^^r$da+&hMI^-ZZ(qxW^*`?c5L8yjcD% zlkeEYgH{f$G sL%kf5L7 z)a&lgg>1iUG~QcJf!&!h!}<5R(7UDRh!0ccoZgEeb7&da24@(uM_vsCdES?WJi$-b z%#6yQ$FMt|DJ@8{)TASXEnmxqyjyD}3**{vi-wXFxX@MOY5HfBv-(|mKKxkkh+P^; zJAl{Sa9Zd%&T`WBtT^GF{}fpH|BU*X_#V)n>vQ{0e?tFH$gmI89#^y)BhLvt8I|EN za?nF_6E0ozeU>1QNfjnJ;rZs^eXqw`d^PCKiN67PF+^g4d}WkcN95P;3+8`k`@Gv{ zzeiO_qX@Mb*5~pH@&q6S!VOg#;)cz|_4#0{>ubL?Y>B3dOv-t<^iw`OGQ_J0QU^wb zXOeHX<3~OzC}V18Y8*igel3QKRkGM3?=QSSdMuLh2zubeO;A<(-v_zx bsC1~NCO1cnxs}kDc8;M!*c(@* zw0=*%vtR{UM0SU=BR_rJ-jZ7I)t5HT+SQ`8$YQ81*~f2hs`}eVhb+GR+NyQDlNo@w z@``3If9V&~KmahMUp}7urexS+R57}*3rpt`W{V%ggLRXt|Bz+zJisL) #8RW((r^WWJ9WT-8)a8RwCSces9c|nkrlXQ{QhhIU+gDSZ&hs-LtX;Je*_7C{X z*rtz<{_Q-q$G7-*c0B>?JEPVv@c5`l^9j%U08_?F4uz%eP&tZH4VDsxu5OmsU#f4t zt~6PBS%7I*aU-O;z)HQ<&wrg{hJ5Q;?k2U82#H%FeIv4nHDy~&Tz1cddHi;ok~aoMonjya#ArH@ zh8bZrm25N-5+N+bds-kP%5Idnu~1q+x|V9?rGRfp^={peSF*%eQBANn% Z8vHU4 <4&Qc=G@#b4uMLVepIJzj&LDISl8qzkyno3P zD^i~F)Zq`-YF`E52ls sI|c62lX85r4$l2xTdhu?rrZdBw*wTvy2h*T(u+_=&$HYbgvY+kt_yKD&vLX{ zN2W+XIZ_s{*tM68?~LzWtMX%iZ#elDSczY>S&U{KL!hDAs^TrX12U{wN8&V4mW8w; zng7$z7>;={QDtC438z#me38e5g57)VDZ}zy6SOC=5K8QOW1~jTsu~luodB 6Xx^5DS9j~6w!*JOGXf?`HpYTxGtQ}7cDra1FkxPQrSV5UE$C^}<% zHXSA6J7P!lMer~79{P0y=IRmvtixFJw`^d>e3#nI3TZVzs9pIK!K)>=;55Kp|3sEo zlg5|`+Z$X#S|&`BuS1E^y`2L4PkxM~UfPI^|J!q5Q_#ra%#W!@b;EZ_NY9v2EX9Kl zil{-hMRj>{Y2)(rH*J^q@ZC2bG?r}7PZ- }US}aQm}6f2TRtkMjuQ|)r6V2pdm&0*NPLi{pKONJaKq_D-5R}&B0*#$ax-X1 zQ8H(geZ}&j!q0f>Z{iOW>iDh6g%c6<7>vBw1ah}z#WN`5FV6O0WNuaa z<@y<=i|P|2(#ol%s$xk;KNf2kQuko2MvXO7<_D&dE=pLNy8c_Q*fl`&hox!D8hX}* zf1PW4M8bIBH-B^&4D|>Gi<=3&4jM*Wj~rW_1W_g2j nd^8sptKn)uOqg>ItL*iU zR=36wo^`s4W|X#xty3qAE^^d@tws;Qwp3;h6c0#MAQh$o5hs4^d(!%l0SQfoIQ$46 z5^_)vE!;6jL?$KYHWMJ-oZ<$u9V5brwY8Iq(FYn4vF7EdfXAH0hfyce2KE@7i8+JJ z8>FttNa4ef`wW>2s{VT{ &7G&Y8~GfVY8*uv991tOE7Bv)9sS9Pp#(SqEgd)r7{XO z2Kq5=KXy9B4erV}LnaXE+$uDNJsK*G$`*_aX=mf1+s1newdm0;O{A9Mx7zTef2nF% zI>NMR)UXQ2&ov-)M8uzSf>A}B?pNl{5FQ5`ovUr&x-!RzEQN+GZ3&B?^lbY%2OkIX zqMh(Xw_$$;2L98o%!Tt|fkrti!iZKSQ;l7at`K-$#CdnM4BK*QnW<*hsI^3bsX!j7 zY@9h?AMCpH`H&exY_dG|9^AojJ-u{VDoqS-X1K_Xl_Rii(=5)zw6=y|gJwc*NV?}t zG9En2ZFlOga^}QE@s|?>A)(}5n70ufQ %!96{-?MZg3)8E?-1 4T0c_?gne50vaPIy3oxc>j+9A`^s+>bi zMa_Zg_~?W;>$7-s&)Cea9G!dyz68R~=}>EK^>;1vWA1HAW| XmK6t8%XhNE_ zBe@d5C{CN`6qZiYrPc~uFRF}(ZF;5&B^AX_uUb(s_$$Udq863wj=EFcjY}^IRTYN) zH0u!=Z#RO?0e{eiUpDO-@FVz6!N7fw0|x{g%RDJkCY_3b(v49cct<`aPX7*iB0H3) z8jn_FGpEY@PVX#^ PT RLZI1ks4h$cU_8CV|z1foOEU9V)HT?483g@qW3wy z)20p2qiD#>SLW~+e!+K;FR4uly}PQ@?Vz3~;z&{Ic8l)pq6au9HsHy${8BByU`;y3 zA+?@{W)C|dlCmXQMD!e;JjY&AiwFX4CTyZ0?;tExme3-k)KVi%_zm_0V9dUUSc*2O zMW>4xUU5O@hTLdik)+N2h&38MQ%<1vkX8Nn^v* fsZ$+UGcyiu`-+q1wxfz3pFsuX!%ZIAVl3<3n~wpg-@!VI zcBUSx#u=eh_noDSo?U&Ntp&Ww=1xD`xlkPlaNjmyYduiN4D%0Zb4b@1A;=6zi$d5@ zl1|ZwD?X
J;PHQln%V-Sbxve>ti1246 z@bXy4te1F6YMEOaz?4-+(&YgQR!a>ji&{Lk5{<+vF)*z4<)~{iv9S%;42vD#_2uWy z$TU8ljeq?a;I7}RBz?rRk8O5$n*PT5`b%7)N|_DsT9fF&M`UAOlT6);KwsmblK7*= zOoDk66vzh6U0yGiQnR&z9VU&4X5#WsMXiCvkY>T-y|(Nyb}}C5t>6G3&_4$N{Z|OJ zQBgxLh`(~MvjsU9#?cA=AJ5(=#-yLe$KN-yRU+X#eu{1k#hfybv~Nu09!BS_=rt{A z5vU~|AgIvaUFvKTvX^@8B>w8)IT!{(nC#%6Y2FWnJP$a`+AAKLrL_tvEYGsGmW|n{ zl*p>nxljyoq|WE&Gdc%8p4K5Q#dAvCT~ z$QjMNAfZI7V-msrA=na7s?l5TBep)NvgHDZ&rS zUmFztNz$AihrZ`OM_aSg4iKb>IQ>vmNXRW)70Ul!$931?BS{KSCSWPA%X|2kt#e@p zCAtLjzQHk4ORPe5Q Po(PeFjY c z^7dsE5Y$ L}1O#8gZzHtf8 zd4(kLJE}(IV(Kf+sHMn)EJo)t`)hfDZKj}Kf}?6jC1&kAn4O(WXs?@9*Lf(R&oORn z9@&&GsTxw=&*!pr@n!p-P|T LGY}WPt@>f=NcV;MKZ47sb8`S_rl7ydD7lEBYuR!q!ZkBD_AOM0!O#knU|ZQy zt!W}33A9g_3BgAqg-;JsT|R)&c{+9aB#W*2Rc7DQpOe1EU$zlFxFf+8Ii_n^jX&T) zZqqlW5k-Nx;L3G-n!egSH%GYN!QHNm)3W86H5x}*`o{#- P`uB`aC0|gwe=!P& zDdy-v?KwAktq7h5G1Txhp;$W<2L|x@LeJ#&*!0@#AqzW-RzfgjFWuaoul| uxa*~B}GP-J%z+q%fq>zB`tnEbkyB??j*Hm?Hmtk hDe=W()Ik&}E)-V7=m&q(i^ZK^|$+;OacJhUs%lMkXrsKhR zvAYZ^ue{3gawX;Fu%m0=Da~9;HJh~~&hpex4StxKc-M%( CeM0vYP=Q0G(gtq5 zd`lnZV4cUt{TDyVI_hu- d{WoZYfl5m$25UVl}r|DNDK D7v2aB ;S#M i67i5sI$wsq^; z-&1h6TI)BT`D(5u$~A#8u*ggq$w?@nQE$3){)0Ztd3C`#cQ$P-rVR_b`AC_uIP%YX zN8C$6DYe1T;95@4qzrbZF#{48&GKjA_&LK`&c*Xb$=YgWn~YYbu*R)wRhyHXHB4fG z02ae$#gH}+nup#AY_%W9?9~q&dG?SwKlgWC`}7Z@wbv!6{{f*)x;TPvx~&mG1acYP z)^t74q)J%IN~Tp^Tq{>#`|gOL42`h9x>rcpAKK92?kd^f7^Q}3U0Ed9eo&WG+Pw?3 z>~b!MyDrJ|7^bkUVp3YOLKCzNsLQy(hbOl|(!F^!(?(9p5I1|- ^k2B8S{VKVOf0!l4cp#==9)!g3#+P+MJ^b>AatNR;kr|!poH(ui z1A>*F49Yl$H&eId7=0wQtie^m<$$>?NBi@AAu1o%4Z)X&h#mhZQjVZn064{N?(*Cp zIHOjId>SfXK*jC`r}*ber5Or<9xMQ5^+5mZD(;=JA> z=hT5n-pWcP?`t(?7ZRH(!LjJYpQI#zWCxZtrZ F}s=wxfPL_C1w4R1~`#@b>$mgEdBx{Epb5$Tk?KgkEgdAD}ab$<`yp~A|hm9 z2rDgtpq;c? 2%TiZQI z7VWNV_Y<>J!-4;`9k`*+kK_!jEtMY#R~cf^H^|)Rq(*DuUW7THq~5wMz_cn+=D%R) z?PO+d-9H!@M`<@)QusbxP(!cYn=reGTP+8V Q&?q~8vS~6^`&85D6%)4c&gH&1DT>8nS{(JZ5*pnIbiWn-XzLV$WO@(m2}vE zb?<;p9b+eF+18nPY4}N(fHJ%PaAOd%_!UNt1h-$cW!1=$7qOQqb>&Z|a?Iw&%HkcB zt5w|&dSvJV6rymeI mW;XFJDiVTrjxRV-YH>8SakNhO^4Vo>^gWxa1YEcOSrrfy}cFknQcqqF4@ z6I^A!0;5Nq&CJ#*J-!pZ;EU0y!&~_Nn4H50!cFKTiT{M4bQ}cNJx5`Elgh5t&e*N& z{|8k-s=w$TdvN>AufCy>5&)G^tXd*A&;jm_PNC(Fzi67)aph8HQH^9Zu=eaT%QIcF zs)Y=Si;Na~JiA=`{~2ecGF3i9%}g&jhSI^>SxlL7;-stt6xG^Kl#|h2$8+>ag ;HOH^HchKnT;uoQA;}0=zMX=t;EcT$2-_pr= zC3$tXWUXfuB$XWjtbe>NQ)uNmWX3tBXRLv2hJHM<*%!qDJgE1tmVSc8E-O4d<@!NG z^~ugWNCel1{5~fb0s0bD0kFPwAxwg1xv3$rOEnhS+D9ONr*CcN?DT1ZxwbBq2d@Wz zP99$`7D;PF6PVMOruISDU`;VW=3$E`uQHeqDBwQtEjFwg`+PvjNX^BB36(SGSjE0r zgp=`w+{alU|9~4fI`w#%cUbzI1RjPhx6RF@I2 >}foJLh-9;-A;y z{lT?PReTM~0w`!9v&uE4(B(FHU81)$&a@RiW}Se{qAp2=y(AE9z?DysiFJ?_0A*t- zGkf3Ty2@iqvcso!V*EpA<}l~RnEafE;=<>05;#B(({>7^Z6?dQt%&^FPL}l|kku+D zq!iD8)G=GO*7j<6myHjC^kMLz{$e#D_Wq3fpgI`}W&@9cdy+q#G&hQgd3h{84dr;! zo(8Cn&J%Bg6IM>Cw{Bm>?1e4U Bv%!zd^oA>PUN;catFvAb^&A0$C)yJaUy&hD$@+J&iP|1s1H&6=WRAnLQCQ9 z&4X_+MzSURQY`(`9Yd`Mi^T-(-(h<0TE-q^9tJ6$ZC+O }2v`VF$Hk |K??&N!-oENX%)_mY2?k;D=$dMWfY8$Xh*nymlHYcU+!6X zuONPoN($N?Pl17|D)fkzoTDz8KM?AF1s8I)L3x@GW~Hq=62OG8Qyx@=8{iiw8NI1v zM7i=ZZ9h-wEgY(uU+ZKG+d&1l_4pmH!nxbrCE=B|g*&`qvK)K?SrrV?4J%*xi_OJ$ zbgAlirDZ=xx>#7>HbF%O+NfQu`>7n4b~0Btq9%Qple!SQ_KfG|detK}k#IbJQ3zMm zsMv9@NLa#A#Uj<;ALVy@Whs-8%FZyepx9fIdgOK^q*>1a;|k-d^@R*oILBz7W=Ubb zcDN2`cjMYbAIt25s*geBku1zhVbmRN6gnjDTK2WaRZE=rf6<9u>Z+>g&>(k##pg6g zO@|D4r>ZsLZ8feg_+JpNTJimVQxzxpW~wW+h@d<3LODo>*|pP5((KkShpjH5WcanW zrjEI<{Q+z+%vp b%wYX+n&of%?D9rI6SEc@7!rv?>4(0{g?sBumGi zAdD?@FgBcUY^STfkp*^z>A5S{^ ;~hP_gvGR_=p?1P7G! z0oR9 T~2Bt;a#!74$AV4o@z$exxis1ux+U-*vMH{FqYtI zwB ad?-qH zP7EY5`{+8KV?2n0(;T2@t_Y>-0D{}TzTIM^+8*hTbM$rXd}sqPA0s9vopzi#=s~)a zSrpbAP@sPxPSOg2^x%GHF##glNI2#WQO7AAPIhQzhE-FKhepPGxs9i0Tu3B=(z{WM zP-Em$(=teiqdWM2ep!Mw8R9I+@yefJe;cl+M;%3)hV8sUpGnZ7V_M!n7 g)&dD9(}JAJmtYnmgOu5w6`jE)<7AvcBM(=)-%4lM8r<=!F%8<3WzV=!?!^911p6 z+XY2v0kl&cE~CsDucgbSu}T6dlB(qn4XtHE9IT{6cz3#gU)s*gy%VC922q1scupxl za>HH9pmx?QkDb6$2NxPaKhmkr;!>yi@q#@djE1BB?SPQf Os z%Nssu1XHSIsHLTJ6$Zd^ez+aLowW#!EYoNETBNIGl#6s}`N8_ez7~Ai*Frfhj1DT6 z^sGl>y*ZJ8;th#!Q9LaFPPZt!)bygG@r6Hc=C3K<$l;6mA>mwbu|Nkgl;q y+G%~sY4AHQVlNlk&PA!_jPIO0t(|0(a6{5=-;Zf@E&Q&J!KO!!npRbj}+Z> zH4N+Vl$21pj>a%>9i=GGFLQlHlVsw$62rH>7FpyxXqWRFpDxl-r5E;d-dj zqUHmCIvVxA*5JNNP_EfT#X0AlS@*adQ>hjrRl20Nx*6&XJb*YE?tF1F)O~%vMw#06 zrZ)95+8q_E?O?PWesnwfNYu-YN?zQ YKO2TuxSKOfz3m;eCNkUd5m{foueW+ z*d9Qxeh#ST2BW{7Qn1*Q#<0o}{w}>JmM=OpW+Aki;N6J^J=kveAm;1_JIJe{OvO?d zO^()4cGJk4;QT`C&{{5%8iN-$Jm0>eWc0)OU>Bc!0}nEGP&Pwpm5j~nu$i1+C|YTM zp^We1>aSa!ofRR*&pL`B@D&No)?v p(RQVpK`!1X-8@x)ZYbS%a3Mc*w3FBc_u56p >g8 zD*9jLrB>L#3?G0NTk^v)cYg!mMzy{cA zQV0*BB*#C4v~zHJ|051g`{GUnD rYTws!hW)+nqZKw1y?n_(fHa4PCg-cf9ND?J>oJyJy}Z zU1-XhTdM`VjHx-tG~IW9Wz4YJdS7nmiLMEfOvc;VoM8ClN?clHrhUHeT1pR2b61-$ zJb5Eu@as0s=(uxr7plfe%;@dXCt!_B-QlZxE|5vreGx_c8fF%Zx5I>`ogI~uy^UR9 zuOEo^uW`>C?sBB1$=ZnYoSYq9{r_r+-&sL!GUv_alKbt;ZzsP8$o~P@x6fUZ;pP*w zE6v&%0o{`Z=GO$dhvW~l;pRL80S&Vr>aH6E+qffXx6lOva07qDSsD0+rToHDeqkxU zuoQ)*{QkwDMV^cUpQenS8%x i3PcL}0$nqa~G@L&D`Q>W>{P@lE>3?3LK@Z7$JHhnn z4^w{O=NDukWc+_DkK@?y!R tJdB#%!(6Uzy#sv#etl)Ki5lkW yO!_)htt zjP%{77X!20g+w?RL>F$ C$J`F&1vQN;2nUs0G |xL zaIXch8R!;(GSDM{Pq*juZyH3L03Yok^nFSuMRM_rLce+(Ih#B)^s^WJGT_r8@EOq{ z!5zWPfb}bIDcznC=Vxa?_J=^u)}T-B?tFh0AU_LBmcb1SQ{LBQkPL^Aw1z#~c~>@8 zuHg$|hDV4s9>dXPyRE=+nen}ewX&~JA&i+pUj#vjF=0U{q6sm zZ*-Bb#Y3 W>*a(7T~p5pfQshhe3=BHCAB50^;cQSde<83M$GjLgCP9(2*Ue z%O^>jq|R=$Zw(cYNOfGbG!@LYBk_OgOaiPVO^hk5wt##wYryA=I`=sQ00_H;OMoc0 zAq`_;(qO!89MLd^6yAsR^qoKfM6urc9m-Q6eRw)dw6m$1c?TO*jL&8tHnP} @T(VQ(Rx-~!6urp4ZLHDhl=xsaOKEcqA1mb_Py%=1| zp_^0At&OBh2hEXnun$$Q(R^YDv+Gi8n5@Pnys8XEUtS=#4=IrE`i?m)mmh1hn_! zj(fieVH!|;@!?EGZp>)jsOhUE6kTBiw)*h1$11Xj6WGcK9H!_+m>{05!X2)HF$Xf@ z95`Lq;e1&~yyH8?9LqTJDG7fzOqC2X>Jp1U4%DH%Pcev 6MLGs9 zarihVF%Z*~(uD{(_D!w`umJDn?s2{k_za8Ja$U_uRL%m%7Sj|j^#8hJucd&ogR5g5 zE{?-?S;aN1+9e5FikHHcj@^|4wmwzZ#vAN1Y%`oIoi1$qtvoxUTf%YJE~~&Z-HMI_ zC37}*s`(IWMoqqs;oN_@rmUKUk*@MoQ)OH *7o z>J<)j98F13UE=FJ?;Hc5%B~P9Xwh95oTW34MY99mwwvAv0w@RUW0B59O3y-r%5RIL zUVi^}hK%EojCH|m(GH7$0`ln)=C$G_xC&2|_1!WYXFOf0KKXxR?q}H<;(K7s=*X&R zmC+xiJSpgjs~o?{^b@rBZsod^6`+GEXs2{ioZXj)cqtPur z0HbEYh3cLGa4Ch3MQOWG9e>5yLdJ)XV%Vg%27};|4d #X%{yn4 zV)^%Lhs(y(p}I$54M40bJju}6lAVuL6$9TU8)#fkXN%+fL}iQPF>F0rHZJf^RO1oG zIIigqt7GCu3xaddp)_9?+dG5qvn-(c1!g72#!K^~Js+EP>-ln*JGOi{Jl&B@NX4vN zXa5r6^Phh-O0F6&qpLcAh u7u7F4jzr|pp z^QmXJM^(NrmR7@EnObT(*l?y6E)Le`Z@@O*zr!oA=tA`~4PSvxW55693hXp|1y%#V z?XK%S)HL8I3s4ta^~#-#x$5R=dAYrTt54*W;Vyr?HtUbCGv$*&P;+m}g3uatZDP#0 zhh;n?{agu85WAA8RsB@W=DOZM_h2c8pOr$Zsu~-}>JCYjy$}07R4Juu8k$U3%?_P% zx-xgW+$FkiT1#Lr`(TqVmIM@v(W)a`fT*A;gfSg?4yUcFk}0Na+iRoct1LC6Pl5I| zWd?u19i+6$(d|JHySz Ll%?KRS1*(_j8h`9C*aV+ zQN4CBd;zA}Av+MK?L*y2PHUprfkmC- Z6O*qAqz?0fAd6DGqyvGYmcf5r{367qfXg=FI>Tb3Hjyb=G4gUhpq1G;z)lF zcr`TF*J-?a2P9u0yJAMx;%sqq-u~m#K;28d!1yfdS#sOl!hEjGz~YnaHn+=uDm!r^ z%ZEiuGzu0}64sk{+{0>)v*A4Zxp>qatC1I7L?GwXYdpYF9 C8EKuSH3)MVavOddWa8D<7v%Vx&@cXI+bab``XABpBR(aV)|$ zsh~%Jhdm7A&YRJQOpo)c1&Y2sO%WN6CJ!IE13%$#irWKqHZ&}a65LgsqxyedY0ksW ztmDcUa5zryB_P94L~X-5sHW|{ifrq tODrO4) e#VmD!Jq=AAh-`Wvsc zGOF(CEb=tv<$f1>%FC$r@xT!tPN^Mdr=urZPgYh{m_-C0s7TDUI>MpgDFL5oT%M#S z=kDX;Zh??uSBV)_R&|w+E=@s)xR7vDr~pJOLi4#(8gND;bMSfj9L@*|_9v@*9a{O)epA<4%8elMTuFtp|^1 z=E&QmMmCWW@HUjRnS3F9$YCk4aYNrbllZ#BWXWxlF`R+GE{NFv60QR#yD>*cwoy+? zaNh1PSpZ0ZH>@$Ul#n28O#Ph~qcA_%bqxnvWT3ReAU1QHkjQopu0wGo3UT8c*nzD! zxeE00RcUCdtQ6V%o_&8G5Q4f34dcT!c;nXI#FS&Dn@ZU`Ym!sv+t#~q@*53ni@Xv8 zOF0DQSY`@J2->hCJMT|GQHyeMXYkH#N=yf1Jz)fe&^>Glo6Y-+J0fyMpF>#f>qQ3# z>x19MN;eQGI(W(*FJhpM{i!siL*%U>mON8~Slr*=RbrSIi* _=yLApgt$$^*~+_Oop4r9Lvq5x`zSUq3VMy}1sV#+ zH7H$9C`zlU86Oa@3V9W~Rv|21$xu~9?d0eh{t?<$N!*+_Pm1O&w49dicJ6K*=v|tY z(TuODS1o~tp1nyjOt2GjxT79@Bms1(`LyJQvJr_&ptXOLRn~i=ypO8@a39>NlBR<% zl%*yQfk@eObG~aKVn@~m>2qCzxA*0^sv_u}Md!~y(B?i>(zdH@YJ?H)c!=|&*ek1& zUo6gMN0vag{a6b4_j?R#8My<4LZy{)_NU1gUEtOO>H~PYZIt!A)u$Whs;pN9^tb`3 zO#T4d*MWaN%-u(=*Am&x>CR{aZL)3OSI1FB>bU8p39kYvpYt07MzO(R<>LW2hPo;h zv66`ke2i 4l}-u=cxQlkZuR5W@}*Y=jU#m#cjUY&Rl0xHMT{G27xEFEv1;5 b@V)mcsrA7V7~_)}t30mwGASVTDYnK8?=zfTS5`#KUr*Ypktbry8}uAD6L1 zY9eD*6IG!z>{eHyqaPGaB&hnM9+^;AbrQ1JDgljunNTrZBx-aA^M!uoQQmQx!{iY@ zu2Fy0b>Y8SaCL_ZDGUwpRe7O9>O)yomg*c7JGmig)hVMXar#ih5z#L1UE@)RN#LV# zm?%f{z=l>yTCS>@LsjH@VnW-x3IlvuQmzMa&$Qt@PF%2W5Ze=n>tp>5JXG(P>JXAd z ihG44dbMzk4wg$Nm rDZ<{y~p_wk1t9sH_olC!|C&NdqW$9bR2^q@^Bi zzYZ0ly_V6RKccxfROvXJW}xYcnqqZPG& k;Wtitam(tc`EIo(uRs|T8HGTOC zQ4#eW%J;!QZ+pLgz;oQ}fizNk4}E{=fw-|AqkWWYwyPaY3DhC0IeokIx3Yp0HF}Qi$FV yQHaZHr3nzWploq>p8Ps*4uxXv>SJa zj5G1Btggn%rE}{p6 saF9N6HD`WQ;ZlS9+6-5^e U~U|`QE%# U@lB#f#el(3%jFmxqa}(wr!ew8nkCl*@l9v8-fUE;c(u z(FPlK$~NAwxpY*{SJ^oRE3^uq%IpppCC~F#*$FMz;v?p3w&Ih;3v2^(3>`~W=RerX zTb;$Fuv@%iVE4o8dLAx8)B)|A-|m*p%)6wdOb>GVDuKy$1+bfP&5x}3fO#~9@s10I zhlOj{+E=`{V0aw+y;6V2+AcKXEM%qTexJd_U dNVMEBt|{9g zLsMMhc%UbjQVL)##Fgu6gCP92u4USomOI4*lu|cp4H9*7uuHN!<_(G$RVPh0^Lg zTkm6MRLUMyZaLYxyFgq^go9g{_g$%OeO-&Gcvptx9qO;_0HuGPc+X8^iK@Xz<8nD< z+R@ f^SY%UmGgZY-TpF6 xzFd2bLFWSLM3>;sAZaZ9yL> zw02=5(cwD%XQhL;Ks@Lsrf%ecf?#KjM>fk+F?C^27p<0+*k8< W_FO;N+4`{bZjV;L zU4GMQd2@eJzhZG^{R~y!*(^;3jM@ugyyb&7)VT7Z3rkh-Ue}4Dv%cJpB0T{2W%BH= z2D=H3Y&*qV*Q=_lEMxC+? (|yg`xHG2y&fYvkDUkUcFKn$NlHhV=#7hP_WC zsm<1hixF!TGF2E#*4HSXCp}6Z!P9+JYONjUDD8jfH8@Xo)%#88HE_q(lTnrQ0niH8 zedo~7oF=Mjqz|R~MqU^CK{6h50B$Fq+3!+Ow=et$7Mkn;RndFYf3TfhZ?!hw@$_dQ z>mYJM*?vv7P?CMS#@S_0bBA8)Y7Cwri|Tz>Wg5lY*}H>)Iw}hHb((GG*e`5-*Aq|l z6l#B#dte=^x}B=1p4yZ5NY|-)yj}0GfzU^zL6V6ick6d0VcRTCN3Enda+|DIRS!PY zl`@Y#>wGfYBu3XIG|~AbIztcFQCIyYniiv$c0X}X4lGvpx~bjE)v(lX_xbUf;VMx* zP_X kMD2zo{pB|G@sP dl) zwx?AQc%4^AG{DPD1X9{|GAVnJ*Thz|6Cih(=c+l>(_iJzQ+bY)d$+C Br>S6v}P(pDro&rhwT)BO-OxR=ptW*Vwd9h5*o;K z_!xHs!Iw~9A7kkYd`PNbnOLMG1GXE ao5h*a2{k0 zd>jh+gmf0O*V+7qp6l_Xp`U+HBRK0(>5cWsASWMgZ!Y6NA#KanT+qn$o!cm;rDqVQ zOljb9hoj51Z-kSkK>II=kkHaNKX$5-;~V*Qs^l zIAKIj;sIglXUSX;acLv19Hcz#Xvy 2n#`_;kOd zv&hUAb!Yyn%@>_s03p2fyGQG78cHeg6W4+c?x?-HoA5MBw*&R@ByF|h_NZ5S{2toF z5wsmn@%}f&9_V$fPp(*X$NAQ@sfV<$xj5ez`u<4_R~@(ed%ujQ`^C4FVPR=Pd#P|e zE=cL4x$(}5gq2NyyJdgj7YW^P$kH*Av5sy+cUjhXMjvAU5%u-21#dR5swZrqJ2l4B zo_Y? loN(gx0N)$rbUsoSv_%Kh~Kv`(s}>j*F-HYxSs8g34g8 zj2$2xm%yQ9jcqyXyF?BU;gGBP#I@P%x{?Odu`9!8JdNPOt9!$jw9cZZ$BK#PpMhfX zs3_S<+Zw;)R=0;Sq$pU#8glyG%kO5A{C~-=o_V)xBLRT~0UNjNCjna*1VOMWYqv~4 z0Y~S5U@>j;PnGgdmGV!O@=ulGsFYvd0wgG1$dR-&Xa<$C8l3%?Z-4o6`{rNL zyhNL}mv`#GoT=a6LL`wcKverzBKC8y27mm1m~`zJrE%_$-`&3XjIjd@g$yI cfU9%Tfum>3l7z>E=p zK1l?z6~RIsq=o1KYKU0Ggua!*6eD7clw-t~;djy)0h?zq{2xEZNG~zcrx;NtlEmJs zM@8rYK;{AP`#~RYY5`Xx$laF7F~R^YkW>+k1S(|~66TSqjG&^k7%+|xO0);_8zSQa z1ly?1uK6^IAu+4)YTvw44$6qHY2KuN8oQDkDR?C@xh1CD3ju22n8CcAnWzzU;Jxt| zW#%` 9Z&dahJr9C ^t!b+d zgEU{GGVW42aS1EdzBQ4neoPuiB14iVQn~C?SyLz&O-HqaZp=b2)@dZX5xLCfq9;C$ zjQB7z$j0D^5xmO?1PS+Q?5+7wH63Pn6F%s^>drYx5?JzKo3;bpjStiBRmF3o;>!v3 zp5iVah%~J1$s02wRZU2oDkI{56V*;iyNn>FU_Rs>BXHC*Rq$WNjqx%wqaVl77L+5x z=Uu|vv2kr>M#{gIz}TFWB0#75MC#JMx(TJa3n`tY?MPRwo8j{jZOblgRYS@+(sqL4 zt)-f$;{l9hUmg!$OLy6KTQE 6m9YFtZv8!{EQo3@9V )TD%Ar9;mVdsHsDk@-g~Xx=}XE-dIh zQ(jAZZ7pa{9S}c{^0 aPIZRP z#MEg2*b6EK_TV3XzZ-3 xoOE!kEite_ zdRO5s)3LTlB``gYz~$gr%Q4)GZke-7y_%?5rz7f?gY#_40jqoUZq%*nD(6X6KQky? z_K&nVr=XPYw(P=*FSEnnQ~qUC)*nXYTrDEb`Ke=092|FlNv5OU1QZ-;r?Rh|dh+Tx z8{m+l)j* dedG+B-|MZ!qf#{60=pfgDswwW%d4 zFC&FxHpm>1t)gx%LL6h{S+@9dg+NP;jnKIicF`YeKB{{9xBvP&E2b$jZ#oE)RpR|{ z(=e9r4?~hIPZBg2Dun$Y1VF{k>glwo<*NEYB!cdL%S}U(Bx#%g0+-0028s!Uq#sNn z=9D@OsW6u^j-|q-e?R7&k w$r zrDH>b`Xk^lsM>K~hG(S|Uv3 d{xrCJaWbp(al#YUy zQYdMEg9ruADdlvBGX+$Zq1 y?t3ZT)<;F9PRV#%0uY8iwhC#hv6O|1TM zyZ-|y(k*5J4T4gZtAYl?)Gyiq2$owS>=vkin4=*}v_S$}b(&4kPzWTT7U&kV1PK`k zmvpxjxoBTc-0}#-K&NiOOpwZGke< #uPG>oH@b5O#^47)L4lag>z%xFQeoN$(y< zG2; #0#=1s=p8C#PyS}dMz#*< sSux_i9`08 -PhKgJS7yZU-$rR zj<@2yiQ#|Pn)wZJ}b z&c1rGdg5{Dx?=Geb(Oe}obj)#B3~Fh?fgugO5+0n(AF-whyMt}B6w%X{?Ra8!plrs zqKFaTL?EHH?h+w7g2Ih3`iOj-Kr>HSm7$UC))^|gNy+|B$SXMSDpYR`pOWQ&!!%W2 zj(kEjo^r)nLb}}Y_44GT-5G|Z%$NB|i(!gUu4;${<7d%MF`mIt;`l%yMSxX!umn3f z#5safL%BI*BxT+-3QIibQ{AI@FIk=dx%SnIAMNZoS9(8gW4KfhoK8UHdynp(@(jts z(Uzp!