From 22b4367c4758b59f8631d6da07c1836c013ffca7 Mon Sep 17 00:00:00 2001 From: Peter Meier Date: Thu, 12 Mar 2026 16:03:26 +0100 Subject: [PATCH] Enhance RustyCMS: Update .gitignore to include demo assets, improve admin UI dependency management, and add new translations for asset management. Implement asset date filtering and enhance content forms with asset previews. Introduce caching mechanisms for improved performance and add support for draft status in content entries. --- .gitignore | 5 +- admin-ui/messages/de.json | 30 ++- admin-ui/messages/en.json | 30 ++- admin-ui/public/rusty.jpg | Bin 0 -> 114206 bytes admin-ui/src/app/assets/page.tsx | 186 +++++++++++++--- .../app/content/[collection]/[slug]/page.tsx | 2 +- .../src/app/content/[collection]/page.tsx | 11 +- admin-ui/src/app/globals.css | 24 ++ admin-ui/src/app/page.tsx | 40 ++-- admin-ui/src/components/AppShell.tsx | 15 +- admin-ui/src/components/ContentForm.tsx | 208 +++++++++++++++++- .../components/DashboardCollectionList.tsx | 132 +++++++++++ admin-ui/src/components/Sidebar.tsx | 66 ++++-- admin-ui/src/lib/api.ts | 6 +- content/assets/mountains-w300.webp | Bin 0 -> 5888 bytes content/de/demo/demo-welcome.json5 | 3 +- dev.sh | 8 +- src/api/assets.rs | 57 ++++- src/api/cache.rs | 6 + src/api/handlers.rs | 103 ++++++--- src/api/routes.rs | 7 +- src/main.rs | 47 +++- src/store/query.rs | 41 +++- types/demo.json5 | 4 + 24 files changed, 900 insertions(+), 131 deletions(-) create mode 100644 admin-ui/public/rusty.jpg create mode 100644 admin-ui/src/components/DashboardCollectionList.tsx create mode 100644 content/assets/mountains-w300.webp diff --git a/.gitignore b/.gitignore index 8e26f93..1ab21f0 100644 --- a/.gitignore +++ b/.gitignore @@ -5,13 +5,16 @@ Cargo.lock *.db content.db -# Content: ignore all except one demo entry +# Content: ignore all except demo entry and demo asset content/* !content/de/ content/de/* !content/de/demo/ content/de/demo/* !content/de/demo/demo-welcome.json5 +!content/assets/ +content/assets/* +!content/assets/mountains-w300.webp # Types: ignore all except demo type types/* diff --git a/admin-ui/messages/de.json b/admin-ui/messages/de.json index a9ee23d..9e1467d 100644 --- a/admin-ui/messages/de.json +++ b/admin-ui/messages/de.json @@ -28,7 +28,15 @@ "removeEntry": "Entfernen", "addEntry": "+ Eintrag hinzufügen", "keyPlaceholder": "Schlüssel", - "valuePlaceholder": "Wert" + "valuePlaceholder": "Wert", + "pickAsset": "Bild wählen", + "pickFromAssets": "Aus Assets wählen", + "loadingAssets": "Assets werden geladen…", + "noAssets": "Noch keine Assets. Lade Bilder im Bereich Assets hoch.", + "status": "Status", + "statusDraft": "Entwurf", + "statusPublished": "Ver\u00f6ffentlicht", + "statusHint": "Entw\u00fcrfe sind \u00fcber die \u00f6ffentliche API nicht sichtbar." }, "SearchableSelect": { "placeholder": "\u2014 Bitte ausw\u00e4hlen \u2014", @@ -113,6 +121,11 @@ "Dashboard": { "title": "Dashboard", "subtitle": "W\u00e4hle eine Sammlung zur Inhaltsverwaltung.", + "newContentType": "Neuer Inhaltstyp", + "searchPlaceholder": "Inhaltstypen suchen…", + "filterByTag": "Tag:", + "tagAll": "Alle", + "noResults": "Kein Inhaltstyp entspricht Suche oder Filter.", "noCollections": "Keine Sammlungen geladen. Pr\u00fcfe ob die RustyCMS-API unter {url} erreichbar ist." }, "TypesPage": { @@ -205,6 +218,7 @@ "noEntries": "Keine Einträge.", "noEntriesCreate": "Noch keine Einträge. Erstellen Sie den ersten.", "edit": "Bearbeiten", + "draft": "Entwurf", "searchPlaceholder": "Suchen…", "loading": "Laden…", "sortBy": "Sortieren nach {field}", @@ -223,6 +237,10 @@ "titleAll": "Alle Assets", "titleRoot": "Root", "assetCount": "{count} Bild(er)", + "assetCountFiltered": "{count} von {total} Bild(ern)", + "searchPlaceholder": "Nach Dateiname suchen…", + "dateFrom": "Von Datum", + "dateTo": "Bis Datum", "upload": "Hochladen", "uploading": "Wird hochgeladen…", "uploadedCount": "{count} Datei(en) hochgeladen.", @@ -258,6 +276,16 @@ "copyWithTransformNewName": "Neuer Dateiname", "copyWithTransformCreate": "Kopie erstellen", "copyWithTransformDone": "Transformierte Kopie erstellt.", + "transformPresetThumb": "Thumb 300px", + "transformPresetSquare": "Quadrat 1:1", + "transformPresetMedium": "Mittel 800px", + "transformPresetJpeg": "JPEG 1200px", + "transformWidth": "Breite", + "transformHeight": "H\u00f6he", + "transformAspect": "Seitenverh\u00e4ltnis", + "transformFit": "Fit", + "transformFormat": "Format", + "transformQuality": "Qualit\u00e4t (1–100)", "creating": "Wird erstellt…" } } diff --git a/admin-ui/messages/en.json b/admin-ui/messages/en.json index 216f25b..5f16154 100644 --- a/admin-ui/messages/en.json +++ b/admin-ui/messages/en.json @@ -28,7 +28,15 @@ "removeEntry": "Remove", "addEntry": "+ Add entry", "keyPlaceholder": "Key", - "valuePlaceholder": "Value" + "valuePlaceholder": "Value", + "pickAsset": "Pick image", + "pickFromAssets": "Pick from assets", + "loadingAssets": "Loading assets…", + "noAssets": "No assets yet. Upload images in the Assets section.", + "status": "Status", + "statusDraft": "Draft", + "statusPublished": "Published", + "statusHint": "Draft entries are not visible in the public API." }, "SearchableSelect": { "placeholder": "— Please select —", @@ -113,6 +121,11 @@ "Dashboard": { "title": "Dashboard", "subtitle": "Choose a collection to manage content.", + "newContentType": "New content type", + "searchPlaceholder": "Search content types…", + "filterByTag": "Tag:", + "tagAll": "All", + "noResults": "No content types match your search or filter.", "noCollections": "No collections loaded. Check that the RustyCMS API is running at {url}." }, "TypesPage": { @@ -205,6 +218,7 @@ "noEntries": "No entries.", "noEntriesCreate": "No entries yet. Create the first one.", "edit": "Edit", + "draft": "Draft", "searchPlaceholder": "Search…", "loading": "Loading…", "sortBy": "Sort by {field}", @@ -223,6 +237,10 @@ "titleAll": "All assets", "titleRoot": "Root", "assetCount": "{count} image(s)", + "assetCountFiltered": "{count} of {total} image(s)", + "searchPlaceholder": "Search by filename…", + "dateFrom": "From date", + "dateTo": "To date", "upload": "Upload", "uploading": "Uploading…", "uploadedCount": "Uploaded {count} file(s).", @@ -258,6 +276,16 @@ "copyWithTransformNewName": "New filename", "copyWithTransformCreate": "Create copy", "copyWithTransformDone": "Transformed copy created.", + "transformPresetThumb": "Thumb 300px", + "transformPresetSquare": "Square 1:1", + "transformPresetMedium": "Medium 800px", + "transformPresetJpeg": "JPEG 1200px", + "transformWidth": "Width", + "transformHeight": "Height", + "transformAspect": "Aspect ratio", + "transformFit": "Fit", + "transformFormat": "Format", + "transformQuality": "Quality (1–100)", "creating": "Creating…" } } diff --git a/admin-ui/public/rusty.jpg b/admin-ui/public/rusty.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0d4fe3386c87d936793ade74d61765eceecd966b GIT binary patch literal 114206 zcmbTd1zc3k`#yYNX^>Jn6%-^S1r}IJ8VTu^UOILODM1hwTxtF!#jTY3cq zX+%K&>+^i`_xXL^|NFkP?AhzwbI&z%-7{xS%;9?GdKsWpS5{L7aBu)X75f3MR{%Ms zXHE_Pps5M)002M);JkJM@URH$0x)8~0D$`u_n#J=83}I{>)3d&6{96xfYTOxX!%0bGCqAjPthTHC@s<#lu(|6%y!`{(z+ z)9KV-Eda*(|M&d=_WmDxq;~djTdV{ktlh&7ZtI4{&j0{F%GML+4FH6H^hx-6d;Y=F zSbPhHZ6Frw{K3$_vE3hR^Ebwp#ro*$KEnDSu$bJ|(Hfgin1;oCHveIV{s;cM4OkCs zSrvPCdzh0g`=40oz&sqBTVwt%S7O6%$>1(}8rWZMtoE07 z){1{HCl;63S}W=O1CRPT8EX9lAA5Q$=wk6bY=_hPxERP|F?K}Y$~eH34X_x?gX`$% zqxw%A7vQLGgtb#+?R7358h^^tV)1~xjg~eR|KVA-g+Ic^6}STcAOc5wwLksMipAV8 z58XdL*!F;w?d%nmu$T{vot?bZ^syLQ7bpqttM|wL7f*oWqd)D$)&**DwpRbsPuQ^u z8nt&-`BU#7{%uchoqyDeN9OLT^`|Z@51z0+{4c#&9y~H{M}1YS9a}G+sW-Mm|1OL7 z+`&m%?H~Rh9bu|}?0?GkdAj~JMzL+f+lTq+{?U%D3!mBE-QZ6Qv7Goa)-WZNe_%Vn z5XTy@2Rr~9?A8`=2d)5iKo?K}6tKUZ01TVs05}1zSc^S2*B)!J$L{^phyTBPbpFc! z+y9>)>;UwylHaf;ov<}LV$B77u;m?r?^r&^e=)HGkFa|_SQ`}h-+BIS!PY-`Jn-o7 z1o1?$Un#uDcn~}ZJTSnHCyOVCCxfSmwSw`a{>82HA3FZDXA4`)-#lK}8twn`GsG%x z$13v%tg+h_tcM2x{};o5#UhT;hx_jsg~6UW*`j0jdxM(j|Lr@8S7$y>)*JL6F>}Il zx%|uHzoVx8e~Uf-I{r8ON$hqOf8k#o?D+He3)s&rHd_DgrT-cAKmGM5>hf4ku7CA} z8&g&P2{Zu1L;CewY05zr5JV>Bxo1Rmr)qIZXfRoqvyJ_Wz256JUak**~N8 zzt{EW$Z+}>6E@a3H?aNe^zRz~>-aFhw%7^q!*ar~(f>2f+yQ^A?|&X=|4@X-iYJ7p z_CH3o#GkSLFYdpOhky3RKO^zq8te&_2owqA0d@i&0x*FPf%+f(&*Phb3!4YVZn3kL zxBWBhxdi|od3gH6oS=^0?81VA;_UL+Q=L7#n!D`-K6YzYSN6ZM;OsDaxIN6*-tGbL z=REnR8~_~Y{&oJtp+*1O=B)_;ki9?i-oI_8J^)Yx2LL+Jf7`gRb0bYA0Mv=u`oMhu z=EI(thXDZYAR_$NJ`R}zcJ5lbzCOavVT4EkxQf5NzW8)~eU**nUjTqM*XuTbiU{Wz z=NN=@2f(Gm0a4*xcLCT_3l2WcU+Evj01hq)51)XLh?s;F>rg`p;NpNlxOgCZd^|j? zcQ7^|z@x&azAYqAaPx^Z;T^AA!Y|^ph&U7~+G%vZ>~o6Pz`}@0XzAz~81LTW;=a!# z`cO<<0xbDRQAt@vRZU$_-@woaE6>)>-T~_9>y*(RI%_;V~vrML?W^7IyW=aHg>rS=xLUXx#d#)z8X0FxxBC{+^DK}Y-t3G?Xl4m~fYCJwIB^W#5 z1&8(Tp5WX{V-a?ssTCsfs`p9KYYK`FPr$ zPG;*OgvZ@8bvR!ukI86Op(*z-kd8ysywp-CpgMo^I3B@#xqurOGXtqFV?8w+7SRJvHPB+Z9SCoOz{nvkd1F4B$}aw{oUca&8eKokg|on83;NDhi%MADWqj%!5PwHq zi@D(ANX=%QSR9Cz&dX{tZ~r4cfLHfP*Fk zU)Bw4JoZg7&PsSDblbXzRN#QTek*?TC~9;+|J6f+z**6A&YFhL&%}vl{6%`^-|zL$ zw^<5@kQf(scw*eqb^C&8Jg~dZcJfcY$sAsZ7OFN2yax>86+Sx&-Nq#TZPf92KyIFs)>SWf<4OGq$5OI#vM6a+#Td+0qF+!wJ6ioqozzl+NHVl zCpag5XwL?h8r;>z{@oO$qbzEKS_X;`SP1LK)A#ky9KqlnFc;Uv+xvTTpuM zkooqFP)Vd*8$G1K@Ktkxx!ID*OcDP=l^as72)FoV^)k6~AdGubG}}Ys0#Y7lPHi_^ zKk3!i-^=>$n>dr$*}Vp>Eq;{HgKGNCWTIjwNqaVcQVrsd9Z*`lq~Cwv9wRFlZE|6v zS)%jA)JZQh?(KOW{~i{n*8XrW%ADQ0K1L)yrdd!bBaqUCOJ$NeSnB&hpJEAp%N|53 zz*FewFCz=dLzK7YR7d9rvqcBsK>6cTxl@ImFw!8D#E%u+d%k5l_dL?WYOjqnvLbY5 zLEH|?ktg}vzlpA zQStW;V*M1qg7el#hD6l`m$|6axo#SSX?92lob0*C>Scdt-003U z+i4INSF_jInXBmGK_PWJy8}c&4I#i5dp_(<={!E?IV<;qVhm_oO9ijPsMutn9u)9&ymzG^#J9XnDPCIP1Dv9N)SD{J5>m}ksN zptV96^;hRNkTYXBV^Qx|_Kel6>KkrQ&3W~?;?Fq`kX;EdPr^7Lw2 ziyw7c|1Fy=V2?X6sv^VYMN%SRlkvXq$HYmm^ZcYMog8xVQ<`!mt)Yz|%?n^T4U^Gi zV6fpPHx`b3`(b8tO6tQ~_4f?)vW+)lUSi6*KFcJ&E}cQ!PNr3So-268$zto6-ld?&&Ur?q%*iZ&c<4 z0F<&dHBt>UL2{f)eLj~v?nJfliOBl)y8Zb<8vfeFe8n{CbD5dmD3$9j=J1G5wIVIH zsjls||9O4688LVFy))?B*j%t$?tWIS4144F_ph2&9`_dCERZ77vzaPl@*)0(t~CW^ zZmUtp)m82mMQI|RnUkKk78I=RBTW^d?-{7xCGx;jD%N&-w{(q7XVrX|b?51^7g`uX z=98_M-c08)t<*-vj)&g5QU!N}O}f2pWsH*g8YvdpSw-4+MkLTQ!aJD{bl@BU7WK?0YbRUM78uA^YaF;_G z2H!#NSX8^fo&6{G_ZXQPTuf#)nNebIr3UMu?98DA^6kr@@fQD*D@|9kE>f1vRQ#F& zscLn9{v+@HJ;Mfi>u0;BkLk`sh1H@5iqvlF<77M!^yCLwvF+7|0uE_hi46zhBfFzfYKb+DeCMUHAJCShk!do^E?#PF zPOG4gzo0eJkI%D)YRUM(&_Vt$TeL=`&h(G?YEO-rNV$VQ)~!=P30YD^brav9^8CpNB!JAe8UD*0RqS_*^2R3x z9mTKrZM4B`uVixrpSkqhSo(1&<3~HOeb+_cLB4$cPv_NJG5&8!O=ftdtN`U_TwI{m z@{d1ECGi+V{q{-YTc|i#q9dNZi;+Ca$mg0voe<^2o-f=|5$GHEfX5E-l3}Fb+b)q8 zqLQ4sYmt%A2koys$%VrE`n%yhRR!rwCEqewMN>9RA8gj0@s{GP3T^^;8YQ`> zEaS+e&!RK8?bvhqTZoT<%6q97X-L9{I+}BWBxU#Ej~@cl+Vw)wdCDAITooYj={HEB z_ZODtf;Qq?y-r~8dTg0j+G?duosj4g6`7u7&?Z<9OR$vB@oOq~qxu@KJ=z0tI=2y1 zW(d#d#SrE?-L?BPV)w)Uj#*t+qN%also=Tx0aXkbt=^Z`oZI-=W)P)>CX{IJJ1!Py zjQP}IkSu;jFeiyCR0WJjetEWIzB_#Jcw{fAI$BVkgQxfNuRy=zTw)*LVu`&7v*HVk ztTVzt^$my~Ag^Nq=M75JiY2o_L%ynns@Oc;LCa^<3=R9kc?yMTKdjGn#u1l)Ce&R2y!FE` zk}4=mr3M~(B!Age^gV3`wrAJCuVMv92E+9ko@(BUYO8#gh(1m-4CnE%rfK1~FZu;) zf&K53R>zn=;J*x1ff26<-?;bjNHN0{Nm}NI^W$>IeYOZe-_ZH&0&+A~} ze)!!cMbu*}R;g=1`*$;C;)eA^bar48dpw?%>Pr-iXfyA~<{HRwJD;LRy_>xEwt$Nh z0cC0UeXDhj;_BoYXmNS!U{&PLc0GD2=C*3PX-B*5yxW^(qd-wEfk}Ask&Kc#nUD+O zzk6I*ev7;3s_jrvGSG->PeJUh_$9;-&Y3qw*ZW>#Z)QQHe+vO^-LM!%y?)#jwGH`k zC(((6K`OE3h-HD`_@w0N>l6+11+@a@?NV2%edRs*C*ep>xh;#`1;aDp%A7Yp7v!yz zSR>QQJOQx8?swjvZbQp2-9hM_ww0VMWsi09+Jgs~exhUts_e475{S&yw9D*_ChxYg zdn025s}AbcH{W^D`Jf1}4YB0TD7?Vwzx2 zGAleGYDcL)qFfX&TgH)o{+g}NpQfN^M9neqeUM`PJ2NB6#!`nvBF(33|7QGFeG1O2wOw>97_b;f; zk9cK#4K3tT7%-IQVVNP3tT@3Ve?1+$WxgHtq<(QX2jl)~7-1;r+-g5zC|a+%@$#h| zQrwm-@E1HLWAbTNrBlV$a3z14&_-!PsA6i^i#UG=PAl8I?-R;WQV~aY9GYUb&d%GL zI@#UH1xbCjRb(c$^(Va-PrXLGZs{gaDVQfq;6!3R_A~UFC-gY=+!%fc!*FKZ&C3@{ zVyr3Z4u*SIHU!N-xabd)L|MN??ZP8ePTBA=TlbEEN_#+V#m4^sJSsUM=_N0~7s1kc)cEN`q? z7@qYoUP{WOEx8KD$+v;v%+%UUawCFX;TF*7ARn2i(rl-pFN>NCi#*~3Z`R`q3``t;I*^Wq#cjC$0(!CB0z~N2yeF7Yau=dB&&!P}SaHDB+>rk&?SFlZp;oC1k zPuG2FjSL&KqHobXZgtVeQKwXHlbG)z;z)=Irl3jiSv6A$^RMBpMa4MuJyWKnRO#PH zX#24>Y#E%ApooaiI@h{N1tdTWBl=dXm*k0EJ7Q`qHJu}kc0i6i!Lr)=9@@R_@OiUi zmO6EEb0hCfaF19_ANy1gWR+BYw7CNK?gbAT*h1#}erzKOjVmC~O?#e}@ zhQM}QQg4{O5c>gk)2ZL8Ag>CbZ*ErIdF;-?zP33Zj+R-x$2)2YC_qV9}LU;P+`{r5bF&zI{X=NDJy6Wrl@FhV4x$K?5V>SW-Xx?zJ7C ztbGOVc6%o~wm8WKdGJ)?9G;nnk27Glw#*Gtu7e>ADZappZ;bxUFO8VXUt`%1pjPFq z1`FAN4v`N_EUnLH)0o2#DH=Q};1h<6rQKr@_a(U@r^pEtX5 zx2a>u2rqbwf!!A)dj;(;%$X~p&286KsQ?-^ptn^SNQp3FpYM4f5m5kwU`T);28R;pp*{)kNcJ zZ2x@8m(SZwXtfuM)ewax)jd~AZ zibfBOFI1wJDMl)$^@+u9a)jHlJWa+~x&j>;;n0Bg(5>*a&;VQ3^VN@a zt={!gOT998Z@c>z=9MAk6?3vxVj<(OhWZvOu>H`VI_VlHmJppt`ehiXIs{)xyRSS~ zFx<GORLy8ytQW!X~5(fm@AAYSnGDE2`uqzT_}u;y50F=*)v+Y zV0|aL?sm*AAs(SbSwY#~P3Kc(b`yqpfiDE&ma7Znc zoBZiqQ%MDx8p8X29Unt@Wi2M}ncWJzA-tsOPD(QuK5U@f^jfO2=`tr&D{y(O=i_?O z)4+@tj>PfGvF>P@8Ozy6KGmv6-}~F|BUM?BQ0%7=B^WBjHNe)K)A(i|$@;qM!gE8y zItJMoUOm-1$>7AMB=ScKRs9t?3wJmR0B%m|x;}bls*HT;vTTWzs$+h~drN5?(iBIlU)l$GtE7-B!b#PAMapD>wx?m~S*|5%oik;_wX*?l@7;*A&x5 z!R>L{;i30#gRp{&Es2 zP?j?F+vLuNafc3-By}rph)^g2c#ZWk;4mTaA@}aY!J4{Y!HU$^tZ$OORj0)c_b=KR zq|P`T6u%EnGht5DGV*wqq(oQ;n;^g^!My* zDiO3HOYcA%#BIw76KNFX>f_a;0s=l3J%`+keLX8Cwb5y>@Rol;K{bw!z74r~AEA-D z%Jm^t+`9RWOsSBAadr&-&JVJqn%Y*f7TB7mos_Y?yk5_$lv~?cey+Dxv0INo{>g8Z zyOQ_0M_kJDPZrDu>vh%2xje^%yU7HN@AoJ_&kQXnt6|cJR#bKykiuusOYiPoV&4}* zco`knKk&ISSvFIui_o=!Ds}M1CMlRnVA624%gx8x$FpL)U~_yjTAP-ynUs}f_5`1; zwFLT>{Gk7KrrKhnc3;KeyH0{!OI?x#mC0St8Bi8Snb7&kmift2B&-BQ*<;eqDPfHu z|Hz!S+RXFo@JtKE)fsATo*2R>J~&`2VSXsL9`HMnAkwLDL3OGjF`=VC+(Wl92-9!h zx0|-sA}gt1p&Pa7`+3_c>pnN{;?-CG4YByAPt||4IxBWa-;8aH0d~fa@-Q3Np=|O^ zw$(O#6;z(fgw2=ZW?pf+!?3$Z31f6Kb&=X&Q{mzU0V^a_O60&@XQQYPKariHGQq~#lvBO?|4_(;2wb9Bm*IqD=v%k z(v5oz>-&u;zzVy}CoR#!T=VY6wB~kR?O>2>@`_HM=}J7q88l4a4v^?CYr%BJ+Dr34 zSVU6OXdBMS*aYr_FgGJc+v^j89DxxlT&O^YYJu5x%4B{VA zk>%f69Y0m2z0daAw2#ykI>uxqmO!~1jXQF=)!aRQXMJOSv?0ji}o|0Tx_SZ>QtPOmrH}~0{^_<@t>S189uox|Jn*CW2 zd-yf5U6#G8lRr}MMY(g(=J}2lVmThog?hO0i<2lNqRQ>)eVDp8efy6q-qHMIElGcQ zwjWj&C1rBHDG*N zvQy~s#U#rA3EfN+F4MxN1}>&97wFAgf080j>B^=>#4Kga1m33^Tul&h@-sA6QGeCN=p-Ma~xW7V66zXua=TK2UXUTIMA=FtUfeBy)N2ltwAniA%SEY^tx1NI zOZ4cRR1yNrHzs1`0S2E}LPEF9Ry@_+$LD?hXNEdwi^sp(=WlvX)kc;(AN>s1iMAyD z#P|@sxb8+c4v_83qiJUSPtSV9`1o^Ghzykm($cJrA4mo)Qv^7~-)K&Zo!NytaUnU$ zwsZzVygZyQ z9*}vZ5yZI1H8;>(2V*K7_Yj%{?muiT$VeD z&06=KJtzs9h-|xAmGEk1=4ggoCFGE&Cb3;lRQztZ8@}3lfNg7eshc+K0tW-LP@lub zD6Se0xiSTq;bC&1$b2tL0qX9%T9X(xFiU_fOWifVczS2A)D~0Jn|Nfd(X6(1A#;l$ z0@ctPD&4XG#XBqO+%*&?+ABAvv&R)9hred_mgwb(9jT*fjT*T}t-v(I<;UUM*+Xdg zY)kvI0o7ZEcNK^*`GE#&IC_-4?x9G|hjhtPU#&AKm*PfW=zg3Mn z6Ncv_(WJbBvCNI`HiX*mp$NvQ`WL&URO2Fd(!!Ka7Qm-6VfBRK)EXP+>ZWw-JXb$< zVxMA+$HF9qL|l}qjGIr2A&u`h;*uBWI1p=iYb=DV0aN26tpdMTx(?KCSy5_lW$z(#pV~@Vp5Jp^xIb*IpZ1owlFW@*RqR8-XomMkqJbQYyA0`84om zOe}D0$Nhei*9;F-bTSR>e?N?hTg1M$m|6O?x~U0e096qdnj@_k2+tti>J2C^&RtwY zp!rDM`#WAn~JlOFf{dEv0WeDZI7-Qhq}!Yd4WtggrlL+_^X6cHG5;7EDJPpyJe?N$s8 z{4Cs-5YNubq+4p{n~%Y}56NBy=H|`a9SvPasNs7=D^E8`Gw9QBe(D)6DXUp(yy+}S zos`^r)ZWXv{`&)l#W@18OPktg6pG_?^UcuBqWUMV$hS7qYRSiw2v3IQG^4LJnoM89 z=N~6OFjg44ct;gOpQy8N2nqgKb{<$th)(@Sc_gs9`{pAhULQ= zSn0+4^pDaI(2N@}RI(V#@X3H1LY(jWi+EL`BE)^(>4e|lT?@B~(H%OZ@uvsJ_bbks zl98(PYq6)z&AiBojk>TNsV*a)-J06v%f2>h*|!NXX@O~*&3wYM5HtrZ%4^0iA}3?+ z;Nt|RAVcEo_k>b%Yh+-SL;t?j8h48aHKM2|n>a5)OgV$hm!0@3&zsL5W?Bc5l@eQg z|0I;uyYOU!*?UcT{nyb{YJSr+T`7MR5dvs*p9|{dZQ~?hK$p5mpv3tR1^wJTGEi-Q zf4_%)q>k;kh1pXSJ3Ty^vf=IhzY=z$R!>;SHQn8$v`wTF-&p6kUUmTtm1?pg@Sjm9 z+zewgij(UL;Cw6Y5Sa|D+-zFaD&k%g-)H&g||-f)V1a}(z0~PC4EP5j=KdSIbR#Q z1R_g{`49x^8|_?N&d1Wvp<7S1S0PVTTO;-yOx!H>I6CxM>kSD#Ii$>{V+U$#`0tFV z&7El)I$A_VOE}1NhDV^E|J)f47_PYs{^9oJXq)HByW4?WRh(bSAM8E^`K_PZ^&CXJ zgKsRe^nPiGwazrnm!3YIdp*n7gmO?Y0sSy)W9bq0=O`zXd6lxHS*>Z+qwh1IO3d_u z>8CuGbgX;g4P@!NDG@cGHc)3+^aB^w@zZ1;GwFl)ZsL50i=-PJr)*)*CAFyRSzj7$bA!Y|T++Q@Ty%C3>F>U6$4=(H>Lv{FZ%SATjVBpJ4uYaf*K)KQHi-cUtonAVS1Syejwc z@uDp!A`hxuQmpXy>uc`^jxsut__lY)=I8t$P-Q2Hn;3!3Z-&>cL8{_YhH8;}Y?P)g znNX%q5`S&?-Hl$Jw3f*|WA`4_QoFQdhw^KHOz|##%hudAuqmrDK7zWtdot0be9yDU zVDf`8b!q%gM)=oUcnU)3Vb_D_%L!IGxs?!l1T&kvf4M;uLc^|MG9s1Z{Jp)CmaghF zh~16`glBgs6%!s)(OCUfCo0$}TWspk!||uSR~XUa{Dw5nbgZ*?1wV>62ysBKSZ^I1 z7~9k^cC1Y*hg9$P{8s6<*IQ4bOrWK#B5!HnRJsGV95_{htL7Sb)hXvB^uQ5N(8H7+ znXI5T>W%sE^cjYeW14#Bq$xM)T3lVR&o}y%0akd7a&T~HScr#1&%jj!p$QAC*NK4)avy3oBY_= z{d9Vi`WSi^V&7T8fBKaMrprtP*3$lH>d_EM2xE$`wpy*nm?fEJe-dTRs$WlF_;6S4 z%MenG^cB4XM|dnIWwye^s>#gay%ou4LiT+%2DZ?V0E&Q$RSoYNxr$w~r?Bs9EbzvI zcAAX%_wINrGaEP$)G=lr(F81Lx^)(>o^>waz>vW6V z+J`~IM5sxnXP<)QBGB+{58Cc5w3wJ^Z70p^r*|ofu*3scg)DbbQEA5>i<)%oMurQa z?iWcK&UII%{I<`%8;W-qJ|btOf00X)gv=QI4o<4q&jvtqiySN8aRBpOxj)Zs25!I*evO0&8Aa&AO0o`EED~+79D@PEmSs@3|1-{>f$8lt>%QcqnYgtG?`Ri-FOfpu-VvlSBIrluxCt; zrA;;i!rL%G&FxO7k+dmKHV~QQif6Qp9MF>Eycribjb1&_L~F)=ZnLsxG~M&hh|a72 zRr!e~=01peNZX)C&0R|?ShldNyA*o^4?p#}0DX8b>YVifU?(O9t+Qhg@pVv%RdA4j z^@;|LJ=xp4=fOk6jERS6d-V7#nY!Z=DOm;;wtjYM(})DY@<9e&Kh|(SNE#573fy>T zn7#RAw81?>z-v&i5@liPGVA>;6ouR+jtpDwIZ)ovVp{L#gnyH%(KD<(uxJcyMIl_d($JrkHmOZto8+Q=%a#CAwMglN3 z&O*RbZQZYzbx~6#-vXTI;gJSL_$P>D?jh`uQd5;5Gk-{?9duP+r8*V=u%G!>)0pZe zt3Z{e7bcDP^b`g z<<__#x+*|vA!lM&bB?6CZ(F0rCc%**_Pb{B+YVDjq}_#dZJ&iLhu_`=f|A0O{C#`A zZfY(Q|5=ELqydf7k=f#GP(!+Opm)K6)9b@FzNn80z2I%hLr=-IwBt4YJpqB-bQ{+u z>v<%NYCqcbFc7<P%oZW0}Jk?@#_J zk2^iEXEwwj_UHA#YwD#vU~i_y-R}esRPa)MT+hI+cWIv#MLX8g-TkD@a{xT5=!7PO zf-(6R%MBI|hoD^_|098+jXe*UFW$Sph%S79K!VB0u^qe>72JB7c+xQ^f3vzWJv)us z7?WSPc39vpJ>h@@yA{{|tS69c!cbgJjrq+GRJs55o3`Dpk-+Hy%e~i#jURK5HJ@rW zSNgrOzUU?~CZoh*xagG0KFHr98?CFW^W|p;1oYZE4z*j==cG$=pW5zcnY=QKAB4|u z>DwlDA^Gqv9V6$6A$~X`6f4Jt7&ns?Ng>2}f|Pw)O%8>yeXnh%RsOdQdCU_EwQF}mLEoR9u!57;@rbnbq4iuzpabQF@q z4qO8i3>XM{>z9!qB=xgSmgT~-`#S4~1wj>#Jc^SNwG&M~(SV>#nf>9uzQy=+AL(lV zndt78l&e9se1b%sY{EaWD4#ADE>vU(uXKv%;efFh@=un6o5vms)<>Ht`#qqr>{^>o zu%L{yehVO2KZ?)z36V*xX7aF2$`#G_ z9b8>Cdvm5N{err{iitlyLmxisce+~bmZ5PYVI=i5QEpz1{pML6Q)&zxv07yvbH8-V znz|<+5M+*@-!IO(ZQzdy{(>YT?I+P9_nJsB9)XZI7%goSYCN4)uZ5NL@D&2z-RU+) ze!!>8@fbHmgPr$=ZXFp3eyTiwp|wdyK>mE6IiqI68J8}}%*r13TTqsf!)mw`JS`4@ zs7PPA4CaR_ZKChdj6HU9kV>uZ-w2WQ2pFeO7uFO>Wii!3y5x@Rs7=?rtoOf@Zsl*D z7)L4Y&cPPTzWiL;`ffLM&xjhk3fw< z;*#Kbdhz&=2Y1ADzN&9mQWKLXB-wX*Wi;2bsrNEO7#S+h`a|kp1DQ1wG(rdGgYKM zoej$bD?vcQC=!Q7rIibR=cWK zwI28jq!(JN>1N7uv6j)9pVWOVei@rN6<=ubg|0_M%MXzs?MSjB0zvm!LP-=bXv)2GMAx8oB zsbgEW|Huc(@3)1#ieDWU>p2aWQU{I5R8IQN%0E3MEewN9ek$Zqcjp%D_9Sit^8r1? zeZ5|m%+pD9e!5qYj|O6Po8_q#tD<{lmw4tw&DRgYEn9G#avARPQ`{8l?4U+``i@qt zsvq~6f5M5^wO@9Nx`;z_{tZ*i0xft?ZcXA&o!PvGv1`<~f33;1#!`S{8XSl$JusJ6up`A8?>k>`+OY8*_rDNPsD$oM&X1l1e4b9QB;{WWCY@7W(f8Ujyq;QRAx$K_aDdDwul=EJQp;_-cFrS6m3|`ZQBuf%6jM z1S>>lWxeL_BueRyXHjFx2 zWRT+lC87Y2`HcByj7(x>27912L2QX6=Zm#LfL?=E;{lM_uZMs zO|y9R+eUcmQWbl?8L~ZZED8?!11`fpMZquuPqjbjj;kQQYN#q|3(Cn`kq2A@)GyMO z$$xH^Hu6o?9;h&f_b&){g=gAdN}$)iNsHuz&K4l4ZsZ2~TIm znIbtUewPUrjR;Nb+4m60b`)DKcH`03ntB(qE6;7kHqfQdpbuDU+%?=(zVq91TACF~ zc=qzgXReHBNnm0U`yr*5e4lQg`oe@zU~bi(?`O=06FpN%Z~nztR|s;f}R|8&O~3yH6%Q^ZCns z^!Z&g;~4qrle`a0rP}?au?ibAU+^(N=G7B;R^r^R%)jUTL<_FI#k^PV=Tv`kEIC9Roy`%0knu z7@A2_?hJ_yC8;PtRoeaRTX3}hRZQNf@SZ^;{KZV>SfHW62T+n zfnL7@jf?=~s@h{u<;VWL5?1;L=xgBVe6ID@G)ChMryT)euhSMnsQoy^wBD_R&&W7Q z#}-(Xru=vf)NExwEpG`@-`1>+t?HCeAmQKksm-`8X-*v+M{~4@DwnZRkff#pvImSo;zQD5Rz4-D<)z1UbPDh}aJ*=Id zkiVLloI>jw$hB;djItDYdDRuMHnKeHgA>{>P0=e+rf;VHktsHLsCOt}d0)FFgfZ$# zOKGC1p>LEVvFSW)(3R$W);UeRFN^ArFhLdP@&eg}{B#Lr(;s?P3fUpJ`^0RP;q&`N zVoBwUZ|dWFgw>ejT-~<5PQ_BF^Pj*=(CiL1u)-!d>0N5OwHe!7*X?V-5qj|$ zmZSRJ4k^<4;I}IF-)y}ZAo#XRTQGC%0(l0fai5wXOzlQ5e<uJ4NH*GZ+`3*+&A*mG z(Vj}WUl3=+-~5n5EBJZMkc(-0{(Jn-q}*)6JS&e_U$VYuEA>`_%jm-=k~#H1WEKvM zz3*pIg{iWWtL{k#ocuE6uNFf3p;+41S^|Di89v}be$Nzr<;smNXDgM5=4nC(AJzML z3Tw#|z8L-Ua_*OyH~U2>@FH(Y^oCjSz(tO|)FHXD(0mMleJc4dw@awrqRfkfvQ8>C z8|H=ZbY9$>54>-yj8j|LS0wl`3~1*}_+e~#SGw=}V01}m!YD0B=4XNFwwu`Mxm1cr za4=omQ3a0CdIA$XV+jLXx#U+hWNfNti0bP1HZPDU3MzE;spa#>Xsz|wkpXaVGz6HO+eZQT{>UemImACNT6Vj00+RX(m;u~Q^(yXC~%siL3 zQ^#wfYXfqXlo~X>yz>%kGELBj+X_U0)S@1=|5e-F)Yu>^TbkiT#eHM*sy!%F=<+hp z>sT7|LW%J-fMIn%>dC}<^&r;*R~n(uOoF)(Yl!2Aql+E;P8uv-E_~|*Pt#v3_Yi~j5_V<+ zjP5)6!S5$&IDwQ<_bA1WZnxP8wE+p!`RXkVUlTi31XIa%(X+JSShK zj%RJ_rs+->elcsw%q{ls{ynDWK}Os^Ld3xgdxk04jp~|sa68ge`#r-OCCmnok#Cz8 zSTE)pKtI&o(_`cuhUK|ooOEv$-d5uj+=`LyDC#d9_Ad1+aPy0N>uT6LRL3G^_ndxf zH&N2`2;X#Yg?BHVf9c8p0nb1%zYEJA-;@Um%yH2{`LV}Aoch-xqjMu3MrS{VahTYT{Qb#HQ!tX`v?0N0=t!*Dj5;NQ(fnzl*gN``* zR|TraZEdWK$Fki>!e@9n^y8*~&uZ*6`1LDnUte9AWj}Z#ug$liAoa(tKl;?J;u7ix z>fg(n2;37QoQ5c*6SYpz2XCmwVMbPy?PGfIa)Q%aoW-o=<#;sp3p*7Yz(+nAmDJLq3NDE!0c(- zvl&)f8>q;YP=&|v?;!9xs32#bt$GlW=0}@2OOf2Kp=lQPM&|ojiN(xM8B~!-UnHCs zDnTqU&O2hU_3JsMoZHw)CA3yi5Cx8R0D3n-xIfOi`!&3R#V;?*-4<02(o9-Fpb&s= zIT+ozC>bB2b6#8cZvO!LasZbTtS*s89{`yUs3$oGZ&IXl&T1oGToE?c@U4;10gL0p6;l?Cs=d2wgYb{-+Cnq-z=`vie4e zbS~C#e5NIKpki=A&Nu_9_u{o?(7ZrwY~Ygk!7NWB%CVdc`6Lmv4sZz|^y}9(yKSaL zXKgji6Fm1fZMo%@0CR@jg$Fp`jGTA+)VhmlvpKky51(rZq+I;cU=pXdp!|Jm-X=|? zzWZv-RtY5AZ_@fBh|r+aZ|>*5y^}J-vLxPe$98ZDDT&=wa3pB2;*XkrE|wz@z8^s?ciCw;R>o7S3t|Tw!Xo}2_qQf zV4qQ%nyp3qrO{4l-5fRj?cz-14I(&aRSoihoSgLJ4x=?Lm2Iv@lU~VVFtj5eMh^|y zyZs2RvcpG?3#lf!w-d&$09@|cFbiPt26Kbo0~NcdYxb)e$ELus+w3YM!1N)GPdiVy z;Y9IzC_*-6^gl1>T{o{ zK7+n1PU`h#ht0f1a}tzLep9fYx_y*?_3Mj^P}L=!+e(d=5_$#5Y;``Je=6vtr7dHj z$6is5l$GvDd1aqVQDJjF2`JWj704F1@cD8p@5o;UD^FEYp za!It0T2Wp+?cmuNPrJm3-6uLSdqQu!Ls{Q27d0N^P902<}(^+>JL%8L9% zfaENh?lbb^wrYRvvHt);NWV7!02=XruP^C;z&?lTu{eA{4S}nqEy|(`VOp*Y1D}oe& zGDuO3h36wVtZQqypt^v@f=OXzDjjm9!P&Rv5~J1mutu{sTF#cS+ESTEwe!6m01sJAofIeo}ML zW51{zy#;`bDgIhhhCYki9%7* z<`9%6X>!`$euqU9T*j8`b!M~5&+@xCRCQ8vTLcrFenPS5ya?A(-Jlli#DzhT=rTa; zai7aIV^#4IU+jh`cC>L7Z!d6Aa7oT_$32H?=Iq1AXFc1o^5WVs0N}7Z^PfU1Ds-K% zEe-0{N%FLNY)awkPgr}9*3v4Ij&mMPQAI6(%si+UBe`DGuzUtlUBPj z#q)D0#FE{oxpNBqql5Es6b|(mEb@hOw8(Lh)Q?g>rCth&516=S1m_0?et)G+X&PL! zHWzd;(U2h1l8oPas{;;UR)$r)Y9!NvhN?mOq-6%l&wZBm>t1u`NpM;a6mGyd;P5a&s}|;cD2t17WQt6dLVYvH z_x}JrYdW+OR_a|GYf`&f9-Vb6y~5nxxrmLyP%hOi)O}8U{{R}z)MK@l&SX171`JWo z^YaW0HgG^BWB^Db+OgGPK1Q!?n~2X;VmEWtV;^3kpq}~(E|s)cA+o9-Ay0*PbP-)f@$hSNgBkZx{XB@9iG2HX(n#7w=wwCGM!sN#xB&!|AAPxXw zle;~CooZX^FkaouX=T19jD(f8;1Unsz&QLpvw=^V%2-tlC_u?j*dXJf$mfC%0q!ek z$)~G1Cr&es($M2AWW2It8%O3AZQNv#2OQURH`^lu2S<*108}S)3=WFN9Q5NH4A(t9 zfVxQ8Uv%r1k%!8^FF~Jw&)TlXbgypa^@vo6AY;zl9=^Q$=e=!LTQi=7TrU@~*J<~< zeYMI?-dJmx$I8oz5U)^A82pGi=QUpb`bWLDHc7jCd25}#e5bbuw|;9T!s*f#wPja; zZ9Mf0pW;2i>}g<`qnTy5z;h`ijIHf^2iwc?S`X?AO?J6p*DEVlXO zK`b&j%M9loX&%iq!oo|0^FiaL3Jhe7^ZfIk^?Odgw1R2a7I`iKjgV&yHuUL`2hjc; z)Kffn()k-zZT!r(=E>}FoN`a6=hnG7rOf*sUdlYWZdNyNT*(dehjej};ShZk@s0}t zj{J46N|yV<)|St4I$XQRcFDAbFPW9l1M?MNIL-z@;A13mw-(kms(hx7SffyOAYmZd zbCI4i$EG=~T}BD*?O=uB{{TXsLvo0Nb_AU=-+1E~aNG^A61Y-molDH>5f$zs!r{ZlU z>giii)5G~8S8#EI&mevsKhA5J(IULNoLeQc+!r`NpqzClr=aB5Z74^Rnm;pwwP~uH zvg@~RxYwUkwAAjSf*X+pikm~s_yLH)8DX4$IQOE~D{CutaD4EYQ!W9^6T!eI8+rbf zZsWmvly}y~>he2Vi5M~#JH`e{$N-%2#%oT`Pq?zYn$a%SU$F+4dhi*D1Ly!47~{CB zb)m~>vpCSG<$1>6*JCchV4ux(G7~OVCEJi+1I%o44o?`!z~kPiU0KCxJ4-ZxICk6! zA(25K0(m^2PCI71T_Z~ua!w#)D3AA~;QWQQ=V}9k(+2}RFCdX$t(^9)D1<+of~vb&NCf9OD~4m~ zfGceHl!O*{0R_63d08^f2|qJsyODr;jPusFEMmD?WYaXucA5!J$qqwCGI&)djIXaw z=M{^6;Ye2QB)*JCzCap1!N(2vS(lFd^Xb}`wx=n3{{Zkr=v9P$&-esZntWH5$NM=U z+JAfZht1QRou@g+%5Zte;EHXd>o96|`ktT`#$Z}BBjzDM<$&M<-`*hLj&oVMt-YnP zNo!ygyp}Z3~Dd|9E|ok^Ic!Wmh#-WyM*qNNAmVI z3T_!8KK4Ka0#8=YKr5b;#TvBtHs<;nE+LO_Xw>im=K*?w&ImtD`c;n&uAh7MtEdO> zGqG9u``H7QJbIeuqk{Hva;dNU9*0d_VyP}#Zr|`a`Ig^AwecOLycZ=Sy|>vaGaR(B zg2bRX<2lYo2OTS$(zQ)K{%Q1E=wr2Gk|mI2hZzjK4B+RA*tEC3S!L8&w#tWV43pmg zs)7I>x#0desyfbzaeLw$31oPLGA15FkP(=>f=)pso(DdI(z>a&cNsl5UQFhzN>)>X z*JtLoD{Go#3oSoN@U(tp{$}ZC+yh7f+yac`jQeqpmA01J&Cs3_hC6#eJnW`ST#uA= zJ90YmeFbw3eAbu0Y`WiOs^laImGZziJCAJO=DKYI#3^&Bi=xif7QhJ!T(h$fFgV~~ zoD4@MnD`MbHz}; z@aCwRjMmE{TpMK^fq}Wc?l|Z9^!ii$U*r2@YZN*Z?Fu596iN#=1L0Lh0Nio&6VZAM z*D0s?hU)768E+NTxQlp9?#?n#(2k&V1Xm3j72J8+w&$T1r+th~cR|!GVlQ|R z%fcKmZp?Ae6Y2O>8)+mBZkB)QqFz6{fzCQ}T{g9T*V>HG&iRc2ivS!FGmvxNu6y;a zM(_a>vb!+0$iT)4Amfbp_WY~WqbWG0BgDkhjAq<6Bi5yo?&9C<5rG+AbHjS=BCqHk zbo!K5cV%!&g*gBRVgU!R=hm_9?tJT{!UQrY9Z2AH86E3+E#!nX)C>{OXKL_x_aEfe z)ijSOg(%)!=cPW6q9<$3`S$+L!wqME?MvqyGSYSNv-N{vrNYAfPQh#n=f6wIK_vwGexfU90PGi#g^*`l5|JD33k9(3&LEF7ZA!cku z4)!1qT-U1jZ^5>=_Sev&i_7ByXfwD+zZt?ZoHGzc0qN9%&NFl$2j5;y@2V%*t*rqv z8F*qr#?)MfC!X96_2f$%OP@D~k(K!jr_SBU z0Gwnm-N5I#z&ux5cW-SSk+w@|V!0sgXvo^ljz>8o->wI}c({u3RXL%*Q|d5uDk?m) zcS~>T$02L1KCPwNX?V`MnYsDhcCD<7J$IXxiSit0- zH*x9D8LpVZE8dIwdj9~yIO;Yq=An%_NguA5zu+pKE(}4v}LZM!%I&S)Bwp zX8}oIa1{0DzZtHNS@5OCg{E8Dh_O7>6g*WfH{bb zlCU2sI3)4hah?esxviPCdzl_vXP@mRJ+g*!-@C@<{nSFh5TwSnJD!Rs~4^=0eDchDA&pkzR7qZDJ<#Xnz$)4lTAICoY{cEm;-nTrgO_qrn z=;jpiqf+|@K2S%0Zfeb?w3hM-RZbWaz&@B9@${$Jl}m#ohL6n|_1o${!laqs=L$#z zj5h@SA6}KyDRem_6}u^Fu!Xl}jH^7rF~QCTcvJ6Ot*cKQp<`x1dYokY*KTa2p5G;b zILiVtfuC=~1Kzp)vKiLdkunbi9Fw2xTG5)dj%-aPSZzzaur$Pk(VdamjZ8M+AZy zhSA?VW7poQQ+imsICwVP_gz2WjGI`EZDEGmHjZUGWRT+rBOf3+z{f+^-m#{=m58@0 zcwA$SarGJR`qWciED(L0X5!_6Vb=rGw>4Mo*>KGf0|7?^C!YM&Mv_}2T9~HvY`wMS zRWTyORCOnu_Vo0vDcjG0%^(k)ZU-68alz}yrDmneO%k@o!0HNu57U}hQ6`c|;~rQi zg&-5i$MpSbS~P^aYjLS1&ndy*Xhq{ z8aYg)G5`-a>P|kLsWxdEX)TLp>e;}J5jSU{A1V&KXD5%wvz7~RqDeSn+=J7Tllapw zi4dwH`9@xzrlqsok%;aIm2d+d;Qe~iO3Ol}E4wsLn+f1{ zn^eWSK*YtCW*OR~gX`M|kN*HsH73)^Z#fP!bAm@eInFSD8tp7?ZKHt4C=*>|&LHA#$5Te7InF=x}+*wkmr&NbObL zRr29bgx8|F}&^0L}7^lXVbSi zr3EJisWmwxQM8VZ2rQ+#RJKyZl$l2Z1bx%HkLO#{rIe2%dFv^Q2twx{Hbw~Vj@Un1 zsW#U!$aasL=E?iLc*R?^*CVx-Rcj!IO|9q&0|4i-&t5ulSx%FBqqd!BttHg3 z*2dJKxr7Mi%O63z2RnOlS(jK2bA^e|IT!&)1B`oma%;3$&EQ!T3xaS95XiXb6b?ww zum1q9h1e0tBk~>72O|N=133ieJ#ocNI@kiSA?J~^-VPPXHh2#>sAalkWfmf&0EgETK z^8U{9l_9_YoOL4yzXT3A^sQ^IZ7g!(z1?nf6Nwi1Tgd)J#e_j~67s>66O(`m2fsPz zoK;KfOO5c{+PRDdPznH{jsP2Z13tWcc&f5IaY6RQc6)1r7&GU41;Fl3G24o@Z*pUY z%(J{7A>D`hijmNaf)8QOt#K$dsykehx@OSTBGRr!z017!3Ih)-07gh4f_va&n&Ymu zTX>&*o?uYMG|%w#Kb8+Q75d&=JaXMi8cB(L!-Dzmfyn9W=~+=~4!4OMkhGCI2l+9a zgOETYo@-h-W$|uvSH(8@UWZhPsEv@x8^6kSsKWqRw|D;l3e!zO;>vlZ*kaTXmtt+$ z+k;>r+l&l;KD7n5p{q`3`vbS`$YzngO}m>PH$llG1Nl}Kr*(J=!*s#!a8=nxFj#ia zY-6QnpycfAZO)?}XxzVZsl{<4TxzlwxcQW}GlF`J#FE`G4r&W)xLzk%{`!2Sh$J$e zJDy1=k&M?km-EAH`=nHba+%;UB=+^`^rX@CJKJlV+q!_@GMB&~FWn=yM{4Z$Hj6mE zw49ato{ORR`fcPlb4cH6k)31SK1@Dxer)v5L;2UQ=^7q^dvh1tEqwVIPt48pJF^um zPs@%63`ykU1E}&#R=>NwHy1Ih+lYaXhF%CAdW?~tbL(A2mc45*4sHZ2A&+2T%#2iX zjAyP%AI`iyZ7EM!yFVk}z}Ad3Yfm%Kw3QwogHpFb1Tq04JC86K7DBj2&l$-*PBHJ3 z=C^vM_Mx6FLHzr>S5%0E*u4X7W*BB+*!0DBUN+b5Z}eHT+iRt_0b_9Fkg7uTF1xtM z-N+pA+cn~s_OnMcH!#kim0T26UonX1?v10lKT+x{9KMG&=RF%W%yB%ngcZ^-TkUuE zcNVs2-)xs^$gcPi^Z>Ir3<%FZL+w)^4j7DWsehuJ<-?q#1?9J8fy)ubJ-Sp0e>Ii& z+Ak(Qx*=3I`&<#b<`@H~;nKC^@d934PpDqm!*-0SgU;R+S8mY%0DC)^8OMGz>0d)B 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%0DQm< z=Cd89o>#XCB&%-9>ew4k`%RILr?~o8qovN91)SFJbf(M}m2gxmWOU~QamQbvuN&93 zhPic%OA)ALF~}p!aIcWWgM*J>b6DZ0Dvhff<0A@jz4bfEuUh9X6}yn9_k(c389ems z>BVAQ>XGU8GQk?Elah?*2YT{Yk_Ju=IOCzka$jfFk~g`Y^uo6r0Sm!xy+16PMbhLf zW}QsUkXe}Jx$ZgV-nwCjirwg8ENt4*7LLER7~$O0ImlwU_wRw4hH~B@ytcBDS`Zf* zYz84$I3HYk)sq}j4fiYMg#lELQGwI^D;nxMiQYNibW0gKa5y-~1e4tJ#dN5ynjE!i zNw0rZ*yiH&ur5 zA%;l4&2_jSWe!SL(seLQiT3p%4itECnMk5LrfDQ-E`0`IVCpE<7B`Y)0 zr3iBKM`I%1{^w8B8t&AI1ksdmId8q+JZB(%M--Z!?dG7MPD8w|5r};9PjS+tioymF z=3gUcB$f(DJdw0>il?pFn`T#mk&_BQW+!Q4e~XNaWAo`+!9~e;6s0vy-(s9?Z*2p8 zoVnSU_UD`v)C_aSah!A&y+oW{%rNtknrmcjUd3+QmC_pT8 zk8#Cw){qEpnc*_a6pzd z&lm@8(ZJ`P-oA&LRPmC&+j%GN4Cgq` zD=$~qQ&I_b?C{-NsaBPKMswF7ch4Ele=eMZTo)-6P30&IsvHo!cO9zPngIe80$E&O zrs0nKoOB)OEHqQUQXW0YIIR(>r)vp&Ja+d%&_Z(WAKoC2r>+SdKnK>n9t}fG`yxXv z`b;uL?Z{+62T_&CV3h}g4jUXE-92hC z7Ca9CbJz-1Rj|(=T{#6e;>lMytuU6PqDSqJY<5w z6C@wKjl{2SuQ|nK+1kY%h8u|%547dRTW$#Y^uW(w@T+pVY{S^7xW#<+{<@m5Xm>GO z#}T$xY2;-Xz+==d2Y$x7`%!Tvi`(61)udq>6SSOquHsvu9RSY&^{#eCmK$Ssw_mvd zU8LMMWHuKAt_cKiDy*92vR^K>c^g|r<~%T4#6aBOe9py>9I(L0^5>4EWk2hw-%fPs z>EH5wf34ofr0M!Tou+tSOtte;E1SENYrXr69u&uh9d@0=fB-$t4tA#0JW*$?L4Fc1 zvmzLRGcHv?I1X?!c=zDe2EFB2XlU+=@k)UM%2hyhV60U`;~;Ptf=SOE4Q<(L)=}Nd zHPlUWZs7z`PD4uZ6aa&jA%f(Qkig zzYsFp_>4WPIB*J+BA!7XIXO|B4!uSPTGi3K6{P9fFZ?9>jtn;J;6<>zCwsA)FkK`dF6 zJ{3-Q$0w7HmBUH!-&OFe>wPV=PZYbcv3CHBK3|!L;Ga+k=BCnoZ*!(!&v$2Q_FGvF z#fZL2H?wpgd-nIiucNdZ%a)EUM$rw%`+d_&SzjpYf{HRqCSw4V-`rb-~ULe(Ys>b$MX* z>*RUZY#iyS%GSU2+@NQ?)%3`9sHR^k-GF$EcmdZq1G8if4{u86R{q@D-Zi4)dzrxz zD{>1cJA(2*Pvu$>-P>Df_b|xu%8o!-;|zr4{JTM321q2}k4$x}%@a?viEccrqXquZ ziM2$DwZGAHxAG!$cZyr}{{Vn_^~L4Lvhpq!M8aL&8+LK&=z8)q zk=NGOhtk$^A-<8-RmRfTDuue7b>sD}`tlew$fSlQicBF{OAv5(AG^Pt=cwR!=~-SJ zw2pmF;@0OW1-k={yOa>yKs!`|NjMqey$6a;n`s_T)f%f5-OcScNxGZFYBX5@NT4qy z&bt$CaO~MUkCjHq7V9G}arTu5tA>=g>ocqv_-eX$`!kLy^%6 z;2q@no5oNDiUS>xqW`lO({Fi2BI0OPt2X5RN?d`Su9YWD;;%94zAS`EU zpWb&Hm)8Rw>(fz{C@97^SJ(RePaU|{sO2eH+fVo(U;XvZW^j^a&JS+#!#2EQHs=Z%r4`FZOcSB zAjy?al}6*oIQoA&ye`eP$S(p(fZ#SrQ@juu4mlk`%~HR#TO_*jBr4XyFq_Bmjilh< zk+}56N9$E=p^!i`IxgItG1@`L)4xC~UR2fA#!hWMSGi@fLD)Q~rjU@>+`$h|W5NAv zQV4DA?4wvG3<(1u51Dc}@1Jht@v3%{NjUpEPFbOkY81}g9A}>OW(_eN8++he^N+eh zw;UdN7ktjmk2WxH7v`5D|om;{UhG1rnn$?H@jo$~NVrG#>AIOB|W_V%fxcD9XPP>`rO zCym%XoP)?cDv`Q*5?BzJ^C4zp0LwAmkMrqWQG)Dn&ZE-owKT8=RUaXcj9`PF{+^!H z*`ri&o@Vo$41x#ij8z4?wuy|62vy30IKzAK+NClLg$%yv0l?k;c&#}sN3=}46|Li$ zZWLi6LeGZzz#YbV`__krZY{4~K_e05kaxB-gTNRVqS^z4L^{nRkYQ%>T7FrK-z?kEySC!NnyDE0GxL1Sw3uE z^XR|##YHxqJkDi~QmEXnMtDAlBZ`mvChPutf8)RXdYGh=T*XdJw(NiZ)BJY(P<=Ig zr5Hd#4UP+NaC_Cub2ZPA_Q_bo$V`)f!FcxQDusm5Y*OPW%yL1&AavuWQ(IDAGFn3R z@hhZf7|0R~bCK7MpdY~3g;qTg_Vik7nX_$UhQ}9A8tjXJ?Abz3P;z?os+Vks#;E&e|K>vp)OJ=l;`HdV~%t9 zisJTqb2fJSTeTR(y>p>IpMs&XycPqWsKKft(j7R-b1-HKHyFa4F5GZ^bDq_;pzDh+ zzo=>VQY)kZe3x(mO{51sIV0cG>rU}q%u;IcT|+8d%oR6OkY#rW2nx zBkXB9boo7`dxf>Mw-)M_krKp$a1YCop5S&l#aXmiZK1iex!W9>La~+knOlK^Is?z) zip@nHN3yiTjAaVzCGmQTLD!Dm(xTIDexfv{> zL2bi087xRq#&ALWs-K3|Yx!V%l*-1Zc^FcJebPAZ>-cfhbh_QutT&G=k%K4j;0^ES z&F*kB*YU0jl4_?a)t{e6t?!4@F&}BnVj03oD;&4&Pw3@aa~fV z+Bu;Fp4yDogcmkQmaHb3;{o69l6P}Lha1CKy>GIjZ6!%D}1h_lCQ~3Jx)|+X0Boj_-r1Jh%X`WwouXGtfz{{S-qF4h}|Qh`+Z4l(KldS`)b?KN#i=GI3D z8qwbcavy7qsrrIPBigtxvoi?8uJFOWZs23DUwWgZ$u606Si3ruWy&!b-{?Rm^ru>v zJQ|C$Gr{70jabS`>gTs#+3ETns@ualG-0qJjc^IZ7%&3^1Y;kMu6WHh#_}1aSukR7 zLX(ZWk^K+&@l1|L*(1J|W=pp+3_cV96kz0>fZ0FcRxNd?t?lkEZr^+$p;HooSS|nn zk<|1V9=umAI&zF{x$oA*)0~r+x|ZIS>R9m`$7O2UCPdt%fWVMTebA$mo^zbz*NVo{ zyg%gqgHX7K`#{~uGBLO+srkJ@&-*|MsifLZsa*d6ZQj6U^Ca6E1jx^!9C6rlT@B{0 zwz4*sn1zvvXwH13QrRGaa!Bo-dm7SeP+rb2UZ*8D3ex(;MP>F^{63oh0Kqil(?qc} z>0)eQb$Fsem}d>&DlkUiF_Lh7Gn!@M#i)x^)zKVTf~5lO2;-q3_4GXTKA5i4SJt%M zQr}O9N?BUo;0@cdS=}%JMm+F4k&o%bUR~RbSt7T$2kk^A;=`F3?F0~hT=mCH^Im-} zX=>G(>(+GPvsTmR_k4^m6Gfl5+N{_c+=GC*JQ0j=I0L3DLrQ03X!lXO z#f3sPhRy-p!#MH5`4VzX;$n&>avS>!S2en10mI`9eU^yiA&kWZw;3SIe#8)i0~ zFcJat4a05-Y>t`h?m8s>)dYF5igg`U{{UaS>vX*iN$(yhSQv{L(ib6Bm3kQ!fh+># zV+WsX)vplvXT#d1&D^?J&Ars>Ba|G0kgDJY;2~l{umhYGQ<0uhNObuwnWMRAW!mCC ze9+!z+#w_!;2wQ&c&?5Oemxf7&9gHt$&o~XFrrbMkiMuk@EG#ko(?O{lqxAH!Ry%e z6QbbZG_CiTciJN9FtlQJ8ge>qHwm@Xo2rkWZygC8N}O@Y_HPNt{h2fpJ={|y@w%0D zjbTMm$z^PVjIID3xI6=1R5dM5>sM zpAcJUwsw=rDT91pXn`AGCO}CnKZQUf^Pc|zcWE<;qbj_#=PO@#@(Ngp&{Lf_-rFnr z+Q(tzPqU@VCWi}MSVlkDwgE+JC}(ZUkTxP1KX`}ka8 zdUnqyxIYP|p9C$ZYPa8Kz0>3h!FPQ7PSQa=a54`EBe5pB4GQWg=Z{TWhC?ihq{hbx zq;4l}?BV&~0nRhj6T^tZwGU>V-Fx|-z7r6oB~kV1+sIqr0neyd$*I~xX10VGT*fgP zzTyEXfH@}w06+&Bu0Cxnwwx_*o#EcUCd3Wqlqa@M208UUp1!rKYFcHbj@TARtzwP# zznQynVn_R1Lv=k)57xX_QG(*q?qn)f01VdoDnRFuOLE!91~}8A+zTdl;PeEJ8;<9nPAi|d)hD^Qkv`QVtcbp3j#!rjZUYQS1D-uadk~D9 zdY?OpsR;7j8W$gE)O8uH^!E&7j|?OpVr)DTgB?d5GDj!gv3IS#!nK~^B693{vz~L@ zbNY9x5kBj%@u_uH$RvOmf--P@d*k%RD??0M{{Zc{qVnSt5>-)~#*0if@ZT7R=OBzLR z8HjWX@~H&ihR-05olZHfW<60_X49|j{>p9J<}m=LF3pUOPCy`MBE5IQ-`JXzv0Zqh zRr1=enzA~8q!v8@>Gy|GUR7>tUi#Zz5$#fxYOY?r&M#8%v%u*bR;v`Dz7LMtpO?fa#uB~Q1QiHkqA2&cp&A~pM0Ix#vHm5DNtt19D8>EZm zM`mUKqi-bV2aMw<2dO#5ays3Q zmOm$cN7w06=n?6$+eW(4{{Tmx;2BaUD>R9`4ht(N&p6^cdz4Kw4Kv}T~7u&HBwKf^|^&El_sfoE#a9>#KFX|mrw@A$0v;XfsWL- z7E&kKVv^oS<8|DQQPG_6*}irq;Z<}%IZf=F^OFoCg!B%I_7o5hK3WQdontX$0dq&T-cV)2(FO&m$sQLCvn_QzC*v8SHV>vCSusH61R)QcWXD zg`{|*K_*p|!+;sG7?2Knfzal;3$1rk+M0d4vfC+ABPV!PCnp}gYrhYMa*CQ-KIfN; z#zqowle=5nxzNouqsCV87`OnE#1YdY2kF?>9Ma% z*b{4dn-GP-ehCf8Aou#!8D~;b+SBHBAynr$HMG}4;0W#^J2z)>;3(~nLUI29>Z`Vw zc3NKe(${o^@Wcinj-2~vKJ~vdwc6C?bfVppviwZjn|qxS;yXG1`=ZH{jml1aGt^du z_i%Yi(EO5z9S=nwpO;#xf2rADZD)@+KQfj%CAs-|&u?K_w>OCBV+)5k`Loz{{c1gv zcIH}@DzS@dFHVNt+;;Zzh-~hB$kjmOal!67_Nu$v{(B$E{{Z-^#!FV)k+_503V+#O z(Z4D^lI~BpeIxmw|J3|oAwJHn5Jv;1{s}GUIrQtrSe8$f{EWcZ;fdoP-5~qcWwh^d zz+GZEw&UgLfynMFQ6#mJd``JSIV=gt13YKzUR=@jR9)7E{XbB-QxeLFFP0P*B=MYN z^Y!$uhHYAV7@FQVyw9|4-JWm;?tpdAsK@1478)tLB|v4i1Z{kr1Mi;P@M}g`ZsYR& z;u~-+kU?#rcL$sRIL&d@P;B(5dq~FNrdU{6T-;q;Tr=HXt2rBZ`LmPL0E5(iRNK3V zRIk|>Od|`1!BfX${zhtz-Q0|1VUSfr24w((dhj!jpW#(S{qbO`%YXt8lo6F3$>*N@ z(v3HJgsP;uQLMMVWD9jGd15d@4}qMV_2lFp#<}}R&Yy9%?k3$K+!%b=-Offb4;9e} zAWbG?coimQDvgrFaezHak}x^r9`zoLrQF4 zoTVt+a^#*POL*e7whny44(WJBJu}la9M>}3v&(lP+{q{;Dx8Adxg(tS6kf#@*-7KJ zXyIXk9FI&6PeM=s09vZ)+AQ|%_Q>UAR3rkRvE+Smk6*^7(6#!TUT#*s(a=L@aTTgu zN4__aK43BP1IHshIv#p;`f}#c8d)9&`BxbyleqUjhZ(^BmEUPm-A@Q0w5W0(aq}W> zh`0K|( zP)1@|0xJ~Sc>eJtuR+IO@vWswGWV9}G%L;zmF#rOJ;Wo+cJm985<$YC$>0ETbL-xQ zxP}-be=}9ZTrg#K&`ukS3^~qwU;x+SPC0SKM zf;x|wbkEcO0Ir-hMv$$evCxR^QWq*$Yr9DsNPcjvpf2sX{{ZV6J^4~AJ_l`*% zZot4FUY|;gJg?N>8m$#$w$g5|Z7$y0(5!GpylrINoa3k@W2dfgKMG6OC!H=6D(lGgY5HEds@y@TOLCU*FYd%_r*Tf_ zjAyQEDaV#hPeZ1J`QoDsvyhWOw|FGG^L(N*cCaL|&u%-8{XOa{D9yFIys|Q<%6z`e zdsfD(x{$qnDj8svVsb%1$N?D{%VhJ{jz22Fva`IJXSVWJ&Rmi~8;||$l9MJds0kU73U;KsMtI>7POUE3NS5;x4BeG$?%S#53cJlauej=zg8f za#*z2Ceu;Ps7$C5DF74d!`{2S3rKgqQ6w?E7N{H)0Fqpi6m2=l#~zvIgU(o*(NMEC zz+tEDFBjD9HLGhogF#8Omg~X~fOLNYxbe%(LU0k7>D3y1D#0{_avFn0BIPdN%#ogASHN(A=28s}Yi7fAk z{#*>_Ag@4p7_O7a*7TdRZ6v;2a%F;xTFTW#`T^5z6SwpG_k|6DRt0S?= zBY4i>IA!^|1INFwbn$$?^VIX{<^0x+TV2X}baBmS^W8wAXp{G`ICKLHK5g599>=Hf z_oy^z?sZLi-%GZ(^IqWY4UNRKcyI~G2QQ7lo(KK&UESA)@1VE4z13`Gh7mJIYb?8V zxL&8rZ=8dk4&9`Tb|j~R;{hjonXb!gVGoY1ZpGc)jUZW~C>kK6Vxp58FA7gQ zZ5YADdLE|-hqVt6*h_SdVvbgdUQ^%Mjq|u zAQz8fplpyAV*>b4at9y`_Z5?**~@F<-6zBLjBX;jy4ubyc9^0p6oy#b9PMIod;8Z< zb8)C#n6%4j%HBnE%q~N-6cR2Kb^($(=Q%mZC!wwD&8b=sOMV~Za!`-D)R(<~_&(F#;B)g$SN4Bw_KI^vIiUyyDK_@KzpucdHH6xQvO!^P zqj$(;S+LuO9D{(^86XUvfYx@cq6>WvX(D*;F5G0u?~*_nAbRcHj)Qi z-08EMsBSVHo!IS^jhIb`w>?2%Mo(j0{pIB5;^RxxFU8c!6q_1t!fS;OpOZWRjsQ3X zbH#O2tlW}|)B4=!sY*Prooe*|0ERruE_6`rLO zmXo7l*Ddm#bUvd5cj;5R>b5e7^-EbGid9!A3b8TgabbXcdiL+>TAJ>hx}ry`SVJ^+ zs#FV!Lww=8v25o(I6QI3ue$0!d&%g}n2iO=`?acjKkM-~bR8z|Rld4a`#rs~fL1;1 zc~V(hg2yM5!Q&j`rDW)lYIj=n+Db*|OKUC)N4P0Sp9i2|a!;q@T_=XGH7Ks#?OW{7 zTHC6~NL3|C8;XDzEzdpATJ#?aHJ68OA@NL(j|IuNg;!`$>9hc&b~dr+oMZ2Mn(}L6 zrB9t&_uJI=A%j!oY1+--(3$OBH1l(KQYcnJLayz|V?fBxtj8l9@G+1(X1s##du>`v zi}~(^vI%4Wd0{Y&Z~#R=DEUCaKg^2kyiMYLBK9csy%Ok~NM;cjR6oz=BLY-_17jUV zJANE2@#*)Wqk;*bgJTAhXxv#F3ytH28QOV0@mXN$N-LUoP5uSr>qbwOEi}Kcz~ydr zJu6R&;?4Z2q>lj|6tFoVh|Y1r80dTR(z7h|xOGX|FD1m1AZZ#PKvZt$IUV|RJaL-a zxbWO_zAT|-c6AZPhjHC21;GS=TDI2Lx_y+|M6*e6c)T=9yBHMCH@BcTt8o%y3QybHD&&)4%0a>`m325lM14DHy;3 zOBVDbbON+m;`V6%#Uz`a-z4R>Dzgqq>70?ApQlQ6kxOxF6gKh@$j7p|481rbkA6B< zah$DbyPD3FQ@u5BBSOu9)DEF%<(rns4Ul#P)Nv{qWd)MECec%u~7*f`RBJz9ly*^9PuiSY|THX*5%aR85`Inx@Bez@{ zher2(k$&3TtGg`fP{{XkT^K=@Cfk-d-dN-D`qgMH8VGJCas-kSxZq`5uLS-TGs$l( zDQ|f$E+b*Q?8>OX!N~mvYYI(HS*||Gdm~K{lYUnpHac^TG7tX%TQ${AGHS@;tvIQ3 zcM)Wc<_W~l%5$Bd?jwLdt!CZbTSD1S-xfd=4luy=Cbg%CN?2LQiyHBj83S^RN9A~&DocH&hW^OUIE{dZB z=Naa+S?9T7`@o40kauSC(wx1O634Z!XqD zaUI8>EZ~sOlE9944wx9vA6kFe($eLkn7ZXkh6>mxj+yJve{V{ydvjqWwY94Z`D(@Y zAlew7szzI%e*XZ4aip)OQ_-B?Eu{5CR+d)`@?S$BWS=07!*%HRYizIx;g5Jo>5^j#F$Xqp}Vt$6VkRb88aE_V~00CULdae>zzD~}UC zSo_NC^e}YPrS7{#$Jf#e%`Q3N3_}%Txd$wx7~t?af_Tqfm5<^701V#W+Q{t1&=pOh zO@!wp4a1-q=bys6i&>`B?M;l9oH(J06r<+9<+`dX<)Uml1YQ) zedfVs$Rv^m4?ii#UJq*Ic&7?(DD-}%8P!sj)-!a7=h7PDO9@O+Osx|!B%#Rp#xiq} z+ovS^)>nu%9WG`?(W62#K-Rk!0Dbj;EzMo*7U6l#Io8;YjbUFZ6-6eQmZp4 zTv0qWr?k}TQErg}eJMB`xX9>Z=9of%bIV29Jw<9)}cM20cMH_J#QPYfIp2z&+ zy-LRS?1SyM_eqEOl?v}=JoQnYcpd!@YT&g^cH!DfYiWOXA>Frk%edr>fHwM(=qu5~ zRjA)8S{`OI4@oX|^)W4M?xOzyNJL`LfK-A38@WAkoosX4HH?LPL5dTU}G^bPy=z_D~>vW-yqbV+xGVhZyn9Ey|iVw=1-XJ$m5RN zv-*42GlbOJTOF{eNzzJB-v0oGB#95&A5V@07%9CKy0`IkCvO?fJv(-;%SyMn)IQFo zlHO$n%$WIzOrq>ljPx9waxu?Q%FiX8?Xv#>W#A+&lafjD)Q|@39CZNt_OD3rz21{A z_Ew!?aIJDnhKg9vnHWrx`|*R0t;a>gW-7iD%?w506b2LeRJn=M< zym)ZA8&{G5$R92aa9H{g;a(omwV|rnu(Wr$^VO7)bMl?VNFPqW*QePsc#GldJaS%3 z5xFfIG*6M`$sSdU5*QtWaQoTkzh|A-api;)Ys<*w;pz$VRH&@_U(fD5-&NE!PYuK6 z2=~6BF@h3EauHZFk^$P=1~Pc$j2=0~(R@X5ABrQ1Wo3>T3e6;8jI%E}Y=-234$=m5 z&nE`F%f~vcgLvXNyf<|v#k7)wWF-9CfD8uga7aIeX#Ixz&i>a>v=S`yZG474V>1(i zPw$^d6pa!t=$& zS$~o1)x|hTJzBTp-1MzleR^4Ly^x2LI}B_D;2~g72Rn~X&atd7uc4Kozl_;S88I}L{{VTsvKV32umQ;=k=PO6 zIp5iZ?nT_}Vv-hkTnAaf37$Sfo}_d4SoiCVZ8O7jYHT$bZjf%3q*Z3i#uVXB(A_xX zaxvSzX=p+=lR5tYc{yGy<>Ykcd9_=`(h$Tn>zSe)4YEGi#9?y$k{d72Q|+4D(DZA# zW|K^}y)Z!;{n==|vd-CD2${0y3OHVNpYL%%yozfkNv!w5GZr|^in7K?EOxE|BoGHc z4*(42?tx-s@gx_oeI1!}R$Y$E7?7zuvcRI0+Sw%c9Btyf`jsCeTU+LO(1PYt-0iJ3 z4N5-|Xrlhh?Qdj~?UGNPV;|0=D0pMJl&a?kliLhYs0B+EKX~xLJTIy0wzqoDmd$T{H1bCrdWewEz15wG40eJUr5MTFHs^%e zD!;{Rn>g*Qt=dA@a?3G{#-SU_R8?L0!xka)g1H3e3_&&JB`>T-3-J5@0HydH4oT8; zf7e5X_<3!s>R%8n^czng+f6)=GfL}#Ay-hv&fwcfETD0_BhZU}81Su?o~D+!SAW?u zgA@}-4DMa$V&O>&+gOdGmB-!(p59fXy~MG}bD=KViwN1v?`4&g@DJWElaff_b?1ug z{4J>5-sxqo?cR5Vm4wi8UD^Ktx;gU!IUsz^j>C%fv9OoC;_S3fzf;Y^NlH<^yS3NX z`u_kk)hFY&T=?Roy^B9xCfrptv|4}o1ZD}QfG)j z1R;XEzCssG;4lukU|Sg=9mfW}KS#e!GWJWDHC41mF+`T-Oz!C#pms>Mf(u~e^2?LK zCnp0;u<*vUV|RQP>{3TGX&&V=K;}&R%7=N}3l2HKA9R75@M+?u_OEa2`s#Y~pteZn zXVA4BA4xWswvi~BX7l7E5&-c)4!;?r1hEm}QFiqJ43m<1&2qM*?H(bJqRieyMzN}? z^8gI8Z7#s60F$1%z-sp0X4*Hsv$}@n7#24Y289N|?1UmVU4pmD6^R{os_~lQwV9_& z*&hD@?6TTU42oi49&agKke@8GXV*OAkXMS=4~lYH?#yb^O5Kht#U37x$p)1TgtN28 zE~c6&Rxq#>Eg~5RARVemQd^8*oE&+r{-X`9fh2NAb}k@D&8rY4jgmpX56(AZX$PS6 z=QZv+gGu7(TE-YwD4irF6bQxyMSuZ|J_{xggO=;J1lKXATIeTLlf%{;iIT?IyzARr zt)~*OJ7q>HGMK;_elyb@eS9V+(D(IgU+dRxzGsz)!@h5I+WLQ9o1Oy}s*%GDw6|`B zW69Xq3U?Oyha7{DIUHlQD_SSL*X<*cBsTEdxn-1XRqouLyMQME4*b`sY90`?yYYUY z<`^S}-C!=3=uvXzh+j{BeE_L$G%J`dF<_Ctn+pxAJbS=Xf>l*IWDJ(-dgCBhp*+r; zw=VmfFw1J$^F21x$nsb%7faM7xEp4hPKZo8smh!YgT{I4b6R?(bxh#3*h#vmAAXZO^rn8+QiLKVv3P%>hmInj|e1rT<0pMgG zYIT*W>hPwT30rkdvIJJ#OR|LsTYy0Wwht9mYIDIiq9%}W6fHHR@Lq|$R&LFh|1qC2S729PESsi)nDn>){iZVsg@>#yI0S6qni^jDc+ICoOqC)-epafx~TFV<*>uaaSBtd+aBIalN-V9V1P7 zucW-ccZe31qHcf$JIHLFna>#S&uZ!JuBEfm{{Xd~M0qASjZ!e936M|T1dsNPdE&Y4 zXH~Sg(pJXGb{d54&=pQsVQ=0yPr677GIPfqR@C-#L3eF$c8wmw8d9+tcWmKKbHMpd zah#0z7137hsY~wkIH*A+;|+ZL-}xNH&zko#vsoMh5m*3n#Ys5qIP2-!sOf$hch#qX z+(j9;^Vx{(2q0sqB=Nz|*1EKc`_7hIDCLw|7HJ6^NC55mi9a_#iRgM#o9CL=>izQx zP^7lfSp35qm~mkUa^JX2aFts90fS(n)DrL z!`)8o@?(XaM|P}^Y-vjn!oSP``AEqp(-ku5(m$6hp~lc!U85KP;{&lL`qs_mrnLlx zkpv*H0l?fglg3U?2(LlXv?jdM&DNr$DF}Bg6&q+`INi{kXB~Ui6>*9ynX|TrSq$<2;r8D~~U-|Zv^RG#tOo^pqZK=f!eUwat1M@lh)L+?8{{TUV{{Zj$ zQds5vTqTw3{{Res|JM9;OSm2dY0ET-Z~$x{P!CMoclvLI)G0s@WOoSgDc zPUkhx+*zBOf}rkffJp9rh^+|h?JZma8cCdgo~FD>sGo5Plk9a?g4nD1w$try1We)M$qWW?*!mth_xv$eG{|FbF@#_$#!~wCazE5HS#(MP!9Mvn^2(8#+?P)dxB zbHUnsag25DJz`VlT#x$nHibJ&oqt}Zs_B}qg>Y+0xxusoVT6dJaH1$*$`{ z@cyHuOCF(ZG$w7XBVRLfF#wO4XBffl^{*onhNhtI_wIYRY)xk*lF=TM<4sMXmfGs# z8BoFkB&-;!zV0^$1Rs|N1Ke}cx!)Gw>GNsf?P6Hw0JJgrS$weFyfy(jW1JD+0Q&RC z#oi#lw7Z7y_sY3UE>%Gb%NAfsKA(m<=D7_oNSL`#wIq`Q!H9p8W(iyah9@9(>BVzl z@G2=eyIASOW1O2&SGi9_v$55bN2=;lY=L*3s&V_VkcR^~Jw3TKn+}>L+X}L@Q{*mN zXhELmugim;qw}rntui}gY2l1OWN(q9$zzU4lP8~C@O?8}quguuFq^AsOq)i=lmZSM zlAw%q9XeqCHSN-FO}Mkds-pyyk-KBy=wO!Je%7+Jz-KZOu>xZQYM;HFgTXz`W5a75 zmCeL=ju{z-VjPXg4l|q{_{Un*hVDxkqn1W8q-X$OSZ*hbpzEG9+yS1Q0wPNU63J}h z;%qDVjh19#jFFC@lg}TOILdc?&g0~zqJpzu<@l8%wXn8;DyA91mCC4j*_c^v&a z)}@Av=Nwzf83-Jb;0&=HIXkh=GmQ7>Gg%Af+})XGo+KM`3xnm131an@fp9~|@mdjML)Yfb1t`;(}p+-hy_sGUDGNhfu(}Pgi_>W0CrJL%?&E-T& zu^T}x^8(Gw4tNCd>&9!V@ataczAn`DNiN~Hgq`5GDix0`hXjxb;H@5Zl|{+&%NTSt8nnoq`OJw`l=D>PnGbyL00EZ7L&ctOl{Tc3H=n2N6Efcq@~+ zz{ktGuU;!h!sEr)%{ITQ80C)b<5lve^QDadE3~UN(X=LV03dKw2FUTDi>*yLO5DGn z&-(n2V!j@oMy&PuoF0kcEmp@|iS?~6?$*tl?J>Kus>+Trzs-QE{YLKmgIx}};Cb}s zzwtHXT5hAG%pdHl1GG0$iCm5H1yknj7&si@=YVUp+u|oHdb*rfHV9a?y};Oa;QX6G zD<!LDbBsVQ@&x+`n= zb-8h&8*=)y!u&0u+CHtQc+%z;lHF!l?U9ooyCdgvFiR*rbp-RzTyD-ZyQY}Nf+U7E zibt9vS+|l#&Ec@D4p)rip7q-4dX}Ldg&~gi$L%K7ZAX_RrX+IlpukbdLP71+a(Dug z>es{f{$Tq=rS9WdM6kGV50DEGRq)CHBn*+qOz~c<@orTcmrWO<{{Vrh%R>bi(n>qM zUDsFrSo0_@ES`JYmJM=XD4H1Ow9@PI`*;o)R)jN0ar(8924-cRF^3ajD(h#eKS4m3Q+Zl28m$ zs)i*u4ZCtq7b86eYoyV2s~vB{nwFDwY$0oS*uu+fpS%zd5>3EwVik7n8P0j^Myl1=fg>0l>#y*>r*~;_d9OjEK=yZx z(Jaq8M3H&f0TgUwfTweuji>O={{V&VEU#ex&RCW-7=`DNKY!;U_nBfjz#|yvq2~s( z~L}qQU-c<_8m{wN*BP!WiSXI|kO=xZrRH z$}#S9pL*ANMw5EOP?|7A*?h>2#?iwLNN%S*U~$)zT+qiY9OJp@eL>sZn>@?@5){#_ ze$%9Amp1T7Am1dQ2M6a4Lk7ae`CdYfK>*~`lX%lq@jkhItjiom`bkI)E14vQCEO!a z0}NdJ$8qcc#uQhjX=6`}-?h6;w^s0|0U`|S!PJ}_f-{gZqa!&Pb)>j=kTVk3O{;k(7C5eOc~IE{lh{<+Zkn<~Wj)K810~eqWovPEBjBwJeJSI&^rmwAvZwVoNeU zJkW&w(wSbFJ#e55@KvVypD*T*MvYa-u4-u-w}-U*o1IGfLvg6%B+Q${rA{No!}*22 z`Q5o$Fb4zyRqv+r9n`X{QMcM*c;}QPgq6pbpa8{H0nYJ^{K|UPE#0(t4LdZeJSf01 zM@w{a>;zys?+?@sr1$#QmiU{+^7vZV>6;^zT|@VhQrPG+%NgM3I1R|#oO6S&8v*TS z?rw8panYp*Dd>-WyYW5Lutf#T@!i|Jak4s>5IH-x$b6>8394!xVgd-n4ZMrcqdiUbv+L9MP`EH7z;xek|o~Ou6!+n$(N9GK(B+v8dRkijvY~5IM-lQbDgBmsXQYj!g;d{F87R zS!BlLIpMc5{q^aNHsd4?weDUi*5QL!v^Q?XDHSd*8YTpjZyDH+u$|2#Z6J^eebdK$amKy#O{rf8f+qW2vXBRDm)r`y{@s_ORdtjN(^n_%`R13{rFWfNQ54Rw{05_%a7;9dOsAucDgHcJjl*akG}f9)Xec*;u%B7aV4~F@p+1| z0)Qx1z#R`fa&UcWy_Kx?j>)Jzjcsl+tg#)c+=MK0z!xC=ptny>Yh>#YS=-FA#|*aD zY^+*AwIn|>Hc2EBpb!W-Amcy89doH@bJ=~fOqg$tj4D2GaKK~b$7bW4oRBhm+LV-3 zEvIu9qt4}hf3Lj2)bwSsvTHP$xmi%N?8v%u0sVKdgHEZ8r9o}D}7F!Jp`&Le+O$fT>_cRQ91L)M^WQbqT-;jAcJC~3 zi3==<%a@Uk2mtfQAa&?4I#-$eM)3<=Tu0%tBD8Qw(@6YnV<9Yq6B6X@l1 z9I8ewU%BVz_0>93ns(^DNIn(mSJyZ98l*-j;)lyqEUlBcxNY1V?ZTbM>0a*I1(fk> z7dmzF!+Jnyq?N*;+DHH}2LZFnk_Iu3Mk~y|7uqJDVR@*`o@lv}IN?B~kW+SY2<}K3 z9Ati8qpWz7Qdk%DZFEOCP)G&q|Emr00oh9$%pHJUn59hceaQ z^*Jl8TGLCixY2c)t>G?=>*T3nCs_Xb0^r~=#&OVNlU#ooBjH{JQhF?xeIq8A<)&v@ITw1hgb0l+0uays# z*rz#>PH;U)!2Z2BdJ#~&-JF=5ME$2K)glc+;G0a2-qvEVBW}V0_p!A49uMjG3e0$~ zWwMseLG!aI{plpx=C`dZ=bqv>cTb-q1%6f9K2wv~zdYih@fvBc-^AK*mfdz` zfRLQA=vO5EBei-Eo~jGf^D5G9I*-uEdkf7u5@?xIXxxVw21C;aJpMnGX~Z=sE)33O zh)8iGY~{#2joyUy{{T76mfl;NSk^+yzzw|a+BrWjQak6iX!~sT%x#!44T9J^7-OEj zPv!pr*0!6_gyS7-(bZmR@LEe85=PPQ2zQ|jSP|a@0g?WBtd-U7JO2PW#lMm!guHSYOl+fg`Bfs>kt*AQb-(-d;)X0MjLu9ZyJ4Z~OgyXhz zL};Xzf~kpG7 zhwX3u)A`q3r`+>>tbdgM*ZgzS8MmRC_Xf`Hr}M43A+?GS815{f2IYVr{{W40&*xY$ z4CJroeLe1n-eFz+&ZkA8Noy69 zjJsJCvz8dhRn9$o;C9VWi%Pw_m1VXr%^_!GRNh#0;F3C?;AiovOuBOa0H8}Di_9v( zBJSD;QIp7AXQ{?}S52hoYk6-xwwj!F&{-UoGHoOg*e@g7`d67!rzPdJ&t8=ddqrz+ zGd9VsFI{ca8+l{i6uwj`ML9g@o;p`$qiJ?FnoKanL7!>dxEW)+8dJ51yIY7ttH&gKf<^%hc?TUq=r|pPb7CUf zQP*GV^*XT9R&vu%>+~P032nFik~1`Ds$@dJfGnp3cERp{m2)a>ZA|dR3JB%eB#APi zcCf(%9>3&M?QWj((tSc;BS1nRFSxK?#~|k%pXFOp7%p_7e{ZMA@*F6U`z`=njuekf z57vmTT^XYH{pj|&#Qy+ki6)o#m|%8!e4MXPGN6&3pXU|c*lL<|HnD0GTgYUKYNwX0 z5s;8b1@rt}aC7!x}Sj(i53dJ*{ zx$?s>z~HGQk&t-+`e)l*OcbKINW;`{le;?YPg>KpJAbs<+I@wxzG)|v&kBH?@7{ej z(CG@CQHj94YN$mAQCAsjl0=_`HJ>9QOh2k z`)6G0HwC}Yk}sN4Q6FpIV1gU5B!9Ed;46tyaaKobuNmt1{=cv5O4d4DX#|pLdX2@) z2OC4HIuno%eqqKl?rNUDZuWOOEN#Q2gJ#!$pbic=AY^a}$p@u2^7ig1UMbP;12RSs zld&>DKPbl_41YXUC8oNtY2pYZN1dI4QmjJr$Qk1p&ws6TQl&Qe_x`+&S=FZ%$+zeD zk?L1A(B4I(SX!j_E`^H*3{;W7s0tU4e2(X>REpO1WX;&jvJ&ohkT80d+D1J(kLz8G zF~dExU(Wi*htpne47I!axsICl#&4|aBUZdhYRvQ?ZV}>x|MqiYw zp1X&0-yMc))gCp`FYj$^ZzPu7M3Fc~9$3K}7^CD209c+zc)`vq8$!H~PSh^0?+PQ% zLOxT1Gr)|g9QW^$*R5Q<*B&^pq&Bf4hmBEX+#7jZD+N-Ze4w1L$2@heOifA7YAI;H zQ%p4&MLFMA&erEjhf>p0?%_tGb*4%um(30Y<jk)NThy(7if z9!xqk?9tj;$gMJYWSkrj#g5^(s8BJGanp*rxOsANL1>@gYlp0y{qCkaX|QPW%z>@% z7-DSWltszM&Cn1=NnWFl^;ccdZM988@9Z!}mQ0F7VXy>w0g^M2c`MN5fsVWpOT}7_ zq`Jkx(b^+vbt!p(01%C}m55aY1CfD@WON3(>&IZR(t8(u5jc+y{-W-*ZFPN(n#`DHW9gjkD z)~B?4`JtM|*~xp@%v+RhV7)fCT<0KQe_nlMO{h4hx%2a=rBj)$w)Hvx_+Chn}$`X9YgKc1TsQJJc z1rIs-h{b1ClwlPWtNe{<*PP_sw2$Zgc^-$LB)V3gX`)Jz5Yl9n~R3qv@YY28Teue01lnc7jNRpLRm(c1>Q(x!yh^| zC<`DYj=BCGnaRlOH~b>{rS#)o)NghhaFZ+{1esvyyJX~r#zPQP5;qP;E5wxxH!6i$ePEPMz$pZ5jzKf+Tk6K1LC!OeuEUIuXSz!Mqc`7({kb{zS9DPx8`dLApSv2(BK_jg5=g8U7wm%m;jA5ODlPx>dYVJ-KGA-0{iTDO)!ouhY=RD#TR zKHwFb1wp{VoxG7;bm}<1X?gZKYC&4dx#Zf!7JhT-)-AGTQN9F_GZQ92BLw`t@-j|2 zsjaj)+5Xw7M$%czsv@`tcb6a|0QMj-&o}_}>x%cyGr-n%a$MiTZT*+QRe_ynU?k38 zaoRGuKXve@jF4-Rx$x!2j1H4`Y_r30BL#U?#L6PW7^F<#7Tf?U!Ojm{j)-Q_m$?`H zb^fl-Pwf49nlp5L63bD%0j5b_24b=n`OGn$q0jhRTIB&PwUfC(&kP! z^*rgk38Q~#BK@RWTDh3*N#0o9n*b2yL11>NB;%;*#xw1#?sUCw6Qt!W?lwnr9E2Pc zImjVNU~z$rf^(76KE2~jZ^J$tx777X;gy5j`EaoP>WI*&1yO(sV?7VHGoF~TUO;Uv z^`|k*X7H;xS;_O1k_7AsN*~~8^qDaVXzxmC1y?;)a_|YkC=kQ z^c``WR(;Nb+MWH@ksw%XtprM3s(h<3kcJPCcv5gO0XX)=w-?%0r>I;@3=?U#7FdZK z@Uj$8io}IrM`49H7{^mylY}{K9qhkLY2BVeb5gvvyZql@Bb>L2YxRyBtH!xvs?iw+ z*n;)gffNi3WO0me2(GJ3@aBtTiY8{7Sf+H3bgEUr13xFuRAGjBApUfkRh*i^xV49K zeU?8kTrTAO&}IiMw;4DeF(ao;n(Oo}J*}*pR(Q)#yUlFKH%S_O=>wgZ<#1ORAOdlc z1Y)r*Ca-TJTqY4pN=;wP#MK%bFArT_UKR7L_RqAql24WLQZ*P{kae@|6p?e7HM~cmxfj-jz7D4raIi0Dx-Rl}8oQ->8vj z_k&YwtxDQBzmzrYSNn+Nu_w#N$^if#g!Jw0Q)?5(`kaOd+6$>b zWROf0j&Ze^jxc)wFg>eEEhk8g9`{eV^Pgw$-Bj;qA(_VP9n06C2e(dZ)0EdL<~&H! zeD9U5^|_gJCXQ(ZtcCo8^BnM4jyd|1#xccaS=&c>c(ZEK=XolFCCd9?ka6kjS2RsJ z>r=el=at;!%T~zTNg2Q%$G=+iOPwoE(wqA~2=SQC$s*ghIV6no**V~293Fa7oplGu zw;e1qtM9e$oYeYrK&&mqc|;qtfLA?8!0n$-^~UPdf=S?mE7uIbH-Ghbzj$GD^xb(=%IfxlmN#h z{M}FMS=qP$06DGS?7L-o676P3R^SBw9>NkWb}a9cHbm_S6%-x9FOqgwI9R( z0NPgb$!_@;`CXy81CN^obo|avJu94D6kL3w-Mp>kOCbXU;1YQsm-z}Zr!C8V+8RXk z-7+X|>+ou&Y z_OLzFa9YUftl%Dc6UH!l@_N?%S{AJ>%vZ~7E}7jFM#toRry)6BymY|8t>Y-hHj}@p z%_vH8ycMn3=dRPtvP*OUrE(rfxz7G`g~K*a1d`nPW2dBO{{RZSOQ_kYRQ>+FQ+L{{T;lFSSb1n3w%jCP9?i?m7?mvU&8bhDk0F z?|-o^MZKH>e8SEP6M&&m6SsC>c1bIONiB>YHxrn)`6)k{>S40AZhF7cJom&mFx=^u z`eu&e)>)ZIw_J_L!vr~AaHj{aJ^i^ILrq-{^UAwEeauRPMydc}5AhGKdh$jOAm*+~ zrs`JOmWgp{hBFx^S#kn15rytl0fIp|9Qt!y_MqCNn!J+UUB@KS?pN~JSZy42&NG_r z!@}O|UWX1YuQ$CY>vWfETmA`h!&a8o8HA9=?RC)!+l=QJIlw<(@vZpvJN5G6xsn&! zq$2iF$lAma^JARXEgg}FCFzqmJSig}_v4InMb(|mamjHeLMcw(-4ZhKfWTIx5~F<3|)9n`atg^zH-K+Xv7lgQh}avC1LXW>m+8TF_pFYg*v zHkURrEwpm&5)H-uLmXk9ReA%D%CV&%Ws}Tz-jfhEz=%GgV%9h~ZV2}toVivTm0eZC zkKJKFz}&sK88{gJd9JE5mDRQ~tfR`;+BqA2V%pXd6iya)xKgtH=-E_b=Uxv7ryc(Q z8g83B`UUOB+f^hItgOoMo`DY}XB>h^CmyxW>Z0wFW|eNGCTCno0FW>XmO!n}04MS9 zS_52y>qD1Gmex1aZpV_R<}D0olKJd5+t-SobS#HW}okb_{ z73wT9%Ixr|1-T#<8$sheaz@@q;jMW*BGxOJXSle!x;|{Ia=_pg1RU}P z`che1+3D|d6o{&ld5$nj;47+t8*binf^aZ1R3){#NTRilH;_Axj2CH;I2hVa81s$@ z`c^IxlfK{NT9l!5^?m%#u6W?Lv>Jt=mil%oT1HtIs01CZK`NslV2t_>Ypt6|x3spI z(%{8vBHSbn$fM;1g#(kkbqqM?rb(_lMpcEE`#?`On4kc%s)f%g2s?l|&s9CnI@aXx zae?Hpm>B~;@HRw*{L7pGPI=_^9jni&7kgaw@Uqdihu!LvM+57+{E0Pr@9lhF627e|`YTOC#7 zTaxtNtl*QxTJ6N1Rn6p%8H|Ky1Ahk#)1e)GtJHoL!LQt2>al&M<}E$rYlz`EFq?px zcOi&5^3dlThT3{^Bev5bwVf_(?JyzogS6$aCVZwCHy9;`-k2EZYtb6h#QN3tm1n0| zTifUwRm67&Bm>Tz6&YzZrr?331p^E=4qN3>S>rKLadC`NPrbh`=ROAsB{eSIKU0TBB?Km^*K`i0K#x+O<`$maxPT@dFo+T+{_LERcwL=;z7yX z$*yYt`@%Yhi%s5_aW&#t$tX705Xlb5lNgI@6d?l)f=47|WaL-O(!BD_Z3-Dfo!i(mkcV>Rv($Clw+9u^_^ZS>{xR2$)%B3m z=did7EwabCC5#PDzd2THjx&`5C!ij6;;$EY zgG_BA@>wUvJc$#P4%&fp|AoTzOcIPKOv6`#mne>21jU?0cW3TJlUXNoaw$yE`{I+85 zsv{+WsriWB0l+1A;}yye_>xOCipt2aBwkzrRpi{nj&^`a%8YP-+BNCgSh=^?bxT{3 z_9<@SwMK$4$X(SLw=e+Y0yxP1ahYtqF)iXjt3?D`({$4+TfQ;cqP&XaI) zy^agWw$mVn3o~;9?oo889a)3_02`SR0-~<%#Bgv=el-@_*I3mgj?&UwX&A(loG}T% zg(|8Qa^o8^G3ay6I!im}u(i2ZTGn|japrupM=XS{N-0r+pOp2_C#bD2?HxkL78BbG zN$!>6cZ@h>!|eu6M$(|*5^^v{y>!l9R{o}OT6qoe4u@r;Uzz6eitUA@w>W2w@(vl7 zXbixdk?YCN1I;G5ba{;Jo+p_ zNfoC1d2zZB2~fLNI0u~P80~xa3f{Hk}^Rd z`+EGtBe}(LkzGlDY-E6k{oxHFW&Y3W`#6k3hQ4IF1|v8dSClY*<$f)5!v#~J39eREH{f>>-k z%V^n|cI@2DSdvwp0c>^1-P*2rp|v|mZtf(K*$S)3jD#|=!v-6$GTh{283*fJcZV)y z(oy8TU8d#g zTejXuKK(1twU`InMUVlN8y!K~4^mD&`&UJ8E#$Jkp$jp1g~1rkJ+sq{{VIjZ z@3@WUU}qrth)+i?!8`$uc>e%6^f32~o!!qb7UMXpD;SYI^^_h#a8$}RHc3A)>^=Cv z?T(dx*4B9@Tj}G@8-5rCWsN;J#y+^KPouM1PSQx*g6=4!HqximXFYlBJJzDwYu8s6 zS20QEya}_*U<$9w2IdDKWOIYZUY#p?l@~*joff(?9{R-v)0_!6VYwwR2*?0#T!1^{ znyL0Q{{WsV{{Vjv{{S4W=JUhSiQDZgttWkl%U(F)Km*^3tN#E9`u_l#D+uD1w>6#) zSAOaL(foSTEu^%!5KJ)4cxF6$fw&SfeJf2bKFxZsaKT^%M~&SZJx{17ucc*ay4-V2 zmb2UD79$LM{dpfzR<#)7c^ui|L?mT9^~cMc_VqR3%{MDaA9YQxOTp}REovl=DP-9q zzwitdBdU;cPZ`Zir6bv|m*$mMAU1el!12K9KDEv1Zn`{C-AGN^IZ&jwJdh4g9Y%W( zZuQvBs%d|2`6i8?HB1$4z-K*i)ctdc^Q%Tn-CCp9!%8pSdNX3yOS@@bb-;?&1jtt; zsch$?bI^MCJ^8LV?1;9t-HIKFMO+pceV2VU5kyZ z-LMWp7&*sJ>CWr=wZ4&M_FHI?<(Z6+kCcO+4i};A{VSe?TawdOc491|-S+;rFKK$M zquWn98CWV7kQlbQj>IU=axsJ3*AY;Sz>TapHHNC0;HYR;K) z7NKskHN$6+QNMYPe3V>u|a(LyP#m1NX)5FMgp^NfbtIRk2f3HlGhuHNaEHt~%{=25kZvVuNs zqZs){2ySzM&#o$oSSCw?wr>T*Gd|Goh1xj`MmWxWPeWQ3o*=NfwfjY!q24BF_Rgwz zka^jT$2jA)XIGg!#NL~W(pEVOp?3r<_V*IU6peuFqadDy;A9?n>0ZyF=(h=A#Oem% z+p|aI{Hj3!ZQej6k}{-cA5OK-+Uhz+n`*b0(KM3ET5EXYClQT>O0t87IV9wcJvvug z;hRIGX=37I2@)`9q}}&+6<{a($n*eUW9mhQRzO8L?$#H9cJ8yYfSCFRWlW^LK7#*Q_!1=l4{Vxd? z=XUmF<5E=Z6}tYvFY9BA`$R60+^Z@V89Vvi+kx2A8c0}fjf{l#4b+j-xvl>I_(63m zxh~x`3q7`RdANB@W<$Z-7$XI_z!~J{2c>QJZ%Od=g^TKXwb6N(%wHi8?hXeT>5Sn2 z02duidvnA=M)B17+E`k$pDdM*X3T0cL?E_|G85QtJ#p$e_4-$6z6{so@{)Hcam=e0 z!nxWqNnwvqr@d$mW)lP!@I*zv(8Qy z*N}76dUx;T;xQFBj8A6`gQA_ME1VXwXR6*pZf>qi&l~0AEs!yefS+!^UTWXj?;+FD zDK@|$k1?svT(fec860!}0PC+u)gsd_tYp@7#7UMy%+UaIx3V@*2P6V>j(sX?8!bLZ zk59dfMkfG4j&R@>B#wDF+5qlzT#p^@tF4aZmwU~pxzAa6Q(U~$MclJ9T?NX*<1yoC zW$D-D&OZ;OP}6h+soo?4@-&hrXHANBiC5;@++}b-4xHDc#ipcM+*TJ6%+~Wk_J{Kc zh$uUNjZ-a!!mb;F3GZ0?jGCUBv0mFomiAV$lxFA5k&a68bC5l90ppB{=7uU#Z706R zY_Ks(?L9X-Zx;AI#dOPEW<5{LnqUNwM-If>k|ZNLunERbLB_@*_^Zp@(&Vf91~EbV@Z95WR%?0LuI+-`$03v}sQFM6 z>^K}}9sd9-&e1gG)Z)C>+^AdWm;@+(RnKP6Z1?mW*G)Wv##=%l`l#;fP{Y zNa2A|$j3~3R_BN`YddWkJMl5o?opS|^%u`){>&~6xIKwE&$-z)FlY)8ACmeSg z7P~aM8e8dR(H)avl>mZdjTnRTouz>Xh9BR?Ij%amu2?q(cKW~1{Eqd9lW~i7UB6HB zIxDMh4e0(fycdBZjtGQp5-#tZ0opRDjmoMDgZD=yk_i|;54?7Uc?#ULAS0obRivIr zDp}d1$IPstsCHbYbHEkF-s$@1huYrW>M=dOs?f;lvIVzotX<+VADjljR=^#{9E!E! zOV|F{n%d(+wx8_EL1?8?4p@1SlIX>QZEl1Rq!E$LdGfok=bcCHn84a1WB#dKb^?|8L}4yF~~hp&PdM$aw^mIv2@Z`)4$(thLWKd zAA9=r^D;aocr?vI3&~-#TegNfLm_}lWR3Rxk-?M=7$lAqZNVkF5qDH=x~KLN+*_rl zqy#ClY_b*0rr6ob73vPw;ehK|UKE4GcN&(D6uMwYq>Yx|=)n;Y3>V(a!|vlFb}|9L z=mm4WHow;)_=TX@cy7asIb|(9(hndFz_#XGp(qAfNo)g-hZRa3^|@}gZ+)x|e$Fkf ztuI@jL%)agjSEPM{q3N#f@N5viYW~3AoBdTZJ1z=Pu&PfMw2RJLnD}yerCs&qA_d8`t#wQc6 zJ>~O@EjBos&fNLRP%Lmp#fD=6&+xFpA@j({98)iJi6P5#M+LjBg=la_RSkBdE_&h zS93FAup0-rZk$(F;Eiohf@PlOMQ6;n46dVOrdb#h^5+Mp&^aeOXC}CNK`yi6O zxXox5VYp7)8KsPn;A3&!#{lFGrxhoHt+e~CI_4h^-I5}CVqrRYGVKI2A7urw2~pev z3F2{7<0v-w_iy(c_-HjzKAQey_Ln-G@JDwgta8|}F>YB0nG|FdQM7U!co@h8f^%J6 zmxgAzvedO755)kISI)%R?(V-SQo|sS-!3`n$Ofa*ZDGU0MC)uOX_2?IjpiwJY=M9L2blY&7%E;#3L=N*nf1C7wM{W@p{ zsRIKfR^So4a)ofxw1aW}C&(mYsQ?ZQDlbPTx@6Q^sGbru#qn3fo9M5UGTQ#@0AqH* zT!L2vE5P+99A}E|wTpI{wp&8*$09%?jd%-*fNq16v~Y3P1teeu-re{7#_9s?z5cZ z6{V8X%=y|h6)IDly0>@b{{R50mby$@+_3nX+{N<9V-R4HqX!#sa54)K%~p7))GRIS zKFJi8_dZtu`alK0mAH>Fg6A3T%rnXM6@xpbq2d;oPD!MBwzD%JMca%KmS2;cZuuM@6+x$<0w94)|ctj(w|DZv$wU< zB(y06e=$ZYxE3IgP5>n1o|wAszAUP7{>#z zYSYzsTr@V&z)Jb9lS>MQ-Hc;A3<2yp{Ocy#&q}kJYuF|8q`3&{eI0#|Jd9@?bmF(B z;MMGN$`ev*_x1E7g8VCi9BNgv#K`C5+6Kdn5JBs~7^=`%YDVSmMZy^GP9$i^Wy$pi z9A}RF_owLBEd)VihC9c-X#m`q3OeLx01i0!#Y!!vQ*j2H8Hy036)G6>fW(kb9Cqni z-<7nCr5mK*;7otCEiIDLXan3S%1asfWGrw1BP5PF_U}m(-f4>R-KwifP@kEDZt8pR zLFb;`s-&`NF0FE`$YTNiS0$A3jtL-rI`r>UukI}(wp*{XNj!~$V^(dek;fPvPg9>- zr5or(+DiS7_D>k;8haZ_$&rwgkg338SOP+@J#*K9aoU;x015Vk{l@&4{{V=t8ZBZ- zBVGD+x_Oyk3~TFy)aR%^l_&Q3{{Wv0Z~OL@kJTa7eke~G`ai*+|I++rjp2*SNk~)b z4>q1C0G&l)e$rkwu!9daK*HlIj&c70>#W?}osE?^-aOA!rM1?zWX8aSPy|M8sy5^5 zIOnH8F~>nnxP4agBXxH1%EayAbDpOhR2KF(SNGA{!)qKdwoc95eLXk_*1EOO?rmW6 z9hjrz%PWAJfjxNj9c#?1I7Rfi?NN;97Ow1Y*6pZTYAZ6vo@AiM(Ya7aAd-50Kb?0r zde@2|v0o`RC}Kht4;f%Hlb(&~gITj_4PmJl)KQnQz%1Y}Bp%uBdR2`!AGQXRsfyM$ zK5KGYpO@w5spGBy_EIdnZ=EMGh42aT}DYwbT zEa32Sk3;XpZ^;uqj9PA!8qaVLOEu&Y10xq^*fE49af7gM2ha-h$#qB9EQO<|%@%gL z<9P&RsZx0aD=|{;$zRt z9iLvuY2j}T!5zVlS>3K#h-GBT#DM4T4ngGSpd*p$DeK-Nk44tMvTW`C)o}TCG2#`7 z5=Jw%$vDBtBx3+)IIJHMc(JV{Ho9y^-%vvPB=Z=`f<;}*bjn&@xs4n z7Pm{bMxItI@=C9}C!RpSBjwI`Ca&tUhtqB4mDR|@-7p}w3hW0N`Fru|KqG-x^#Hdp zTwGX0&oPV*+ZBhFxIZfqfwb}lc) zAo1`t6Roi8u0d);O#S7TR*evQ%4#+XFJQN!>K#Y zLXdDm=NueYnrYX@&CR9#!#Pp5-)P_xa!@uhIXFMgx2Dx-Inui6_jNIxr9z^oTF+&11dLOyZ0+uf2Xd<(RhPC8L5}2g917Rcmcvwg zczC?H>U4e4UPeH#uPXG^0XPVicPqACObM|@FVL=%OA>}Ka`H!=g9eQNsb6gcG zTiw>@p-P80y>(*%>;C}RFuk>_w6eptHY%hQ5^_Cr^cfke?Wi@=+udy&h&WO6Fc}!& z_RqiKI*BFIt);y4H2H%0tcfMNJB|Rz!!h8F3CDaBikHMmacvPvtqE07>d_1oE=W>Y zNyd5W*N!Wn+;T}RS=Sd)MY%l?FN$8$@cC>bog!$_n>j4}kU%PPgV#S?=DI5l{{Y$Y z$8{-KZXL{Kb}q7p$v?Ybc?1#;ca?hJ-p6-}V?+@8OHI6q46^erBJ zHp1=_&lS5gpX(PR%L$SOKIT;QJ$V4|YB4nF#aV7^gsoC?_qHh6cy`MAD@nB5i7jsv zcJScIz$6z62?`lZc;1hyRV_tf)JQB7kAdE?z2dyC_1e8gvHJqCLI z6|VNOPovLsbt>D>AmJFD^JTh`%8ci+9CfU%jDicPPuQbK%yG68_pG3fHy@h>bUw78 z*Db8HdJ42(H#WMZbEoi}woRxFH(Dia8FoqngmBIXKR-BSJu}z6dKZd3Ii`4b#1DIA zD@&zG2I7nrm3Bpy`GV~#Kr8Ezd9F{v8cv_BYSub#y)s+H0G4u9i1UhL2+Y_(yGbCA zLy|bJLcW=9G=ZVTX2^0^?Gv}|)W)ZI83U4eKQ24*UPdabRkZo`_52TeE~KSRx6@aPUjB`7qO-7aSujZGya+uip60Eau9jbB^wQpXj|icN28D@fj1 zQ#66FHW?1XjIrPzry0mvp$Cn8IiiKr+QxfGR#{SCC0=|pa09V?{Dn`=l5_MqT{` z+}s0>tVuQI)lrYS)}52F-xS`kdiQGPy^oDF%|k(w#v6&_5UG@wi~v)Drw0caV}MwZ z&IcndNUi)`;Rxe~HnZ2`XMvX)QLvL44BM1K0_8?II8mDOXzxDDug#_FX(X|;O%ziQ z6LdMjW-39(a-nz!^gRWxjBlgUbrGmNrGyLqwi%E}>=d+M?=IVc%J72$Mo8;iGs4Ci z#oMZT_xt@0nAdXCewI7W1zMTcPle2@bE88TG03=m=z+*YEO_AK00Eril1HG+t!g7g zmg3)R`h>E!`Ca6YTdsL1n|NmGcCR_)b6mHF^lOyT^($M543e~|IJ}9SLn{2L9Zx4C zB<%FgPeZ+|TF#d5CH2f!)^`v@AhVBoFuZCDyD{3uq-HDuCjj8*8Lt}=B|4wi_5T12 zc2bVl=v2`!H4SFX8(+P+^JL%hG6g{Uj&dDUPu&;+!2y8!@)w>cYabBX>36~{R^HhQ zG*QST4VKBoWB^k_C0a5J>z9Fd$8 z^G%+YpxNE)R~B+T<a4 zZ0l?_i^%nT2Thv77rP*kFjgcCLIq${DJP!exD=3TdcCa6V&tKgNW^|zpg#mF0!Pc# zW1Q!K(2A$1PjqZ8{{Vg7+GG>myCfpw z48~cJa9pMi@1{pMVcb`@8h7P|uA8^@bB48{d28SLM#h}Fs`!a6BeseID2gdsK-p0k zVEs0dNy_fV1`h-Z+SARRi+OWnJFnWLk)~F{f+KJSH(@|03~}f<=LC7*g1k|2uQ|Qd zVtW{ctWjCHKfReyzFo1j0_UN}PI^~Abr~KrG2ZHPM%Pj!ThDGnWN@BaD;@@T8E)ql zjPO#FLVV8vf}CxFVaIr&e}fP0b?MBUv>o7uQ+;T8kTWXL-&`#gI z*CYT*%~ZFSR!JT2;GXW@=sZz{Wm1wk1!5fIC7U2_1d-I5=c5i)Xg}*yY)AK&mn_>~ zNj`;#X>lYfBZ;SE5ysh4ssKMO17IJ$)aR32-L1BxrT8Y^E$c19J3L_Sla^B;Wlf-Q zfz)L8$jxnN(g*P3$rNZOx3^mfSjZVe!;nY;erym3`H17|R5bl|=HBY_`#mJ{;4&;| zaB;a2T1>eBj04voGud`H zD$R9abo9plGCEn;{3;;21P%=Tl!3Ugk$<8raFAR1g{w3C{BsQz} zTmrkuASr&iBc~Y8uNCMzi;~T2{dYW%WqG$3WWPQ79Ok8{>QTs-pmISMul1k^?o=WE)*{lsp;_mICx4D5Lhsz;RBn}4r z5Dx%@?SofiSai3y)TbVLK*A#tVqZKRz%L{m@;hUtT%qnIZA=vX_WFNXo2_n_a!-8Y z7VzgXLP=6F+a!U;I6X(@Qu*30p&U2yM;pPCv2a5uQdh9*ae!u1Y9YUB76A zAY*_439DU!X2RwaiW9;^}cG2BFV(quI-l)p2;(cJ%&{zOfW>}dNXa`%H8z>zsWlnR zn;}S|JDx4H(Zf*xZQhR2(3Gd!(W{&O5?p62>at~eS2M4$Vrxnja zO}AyC-C8zFnd)I&Szc?p#lDZH&I3(=!}wH=a!K_)fcC~~w6*X**yH;h+=%SCV<1Hg zSc9>0bJra+pU$#;7@CS-i@iSyc>9I`00k<_$?8r391c13uUel`mhVFVMDQ#DV=zd; zgR?w5=(9vw&KjCah$fn zhBzEx@_v-3H#zgl>fO5+N}8ol*~ZPj?{-@L)4#sbZS=iPQD+=&ow7R+q3}wDBLtE| z9^IBTqZqaQj zFc%@tGB*9tPj6gPZ8T`?t`ka<0Tqs3(l~#Tpb2(7oKS`N(6K ziDTH}CVYTVGsjW~81(h4r#RE4`@I##R+Q>je%Dsf%y?&6yGym7c!i_>72%0cGr`~k z$>)Q}71_x=@m^1RHN>ke!@Dy={{S#Y>M}Ag+-I%;_pCeJ5-WQM?{xnFBIs%`sws|K z$e1~io-6~Bqi-1cD4dk+}>8428!$ZXf`0lbrF2lTOm?Q6;-reA(j0=9P*Zask*BfXfX3cVGT!*l8P}SerDm)`g;gCL{$%&Imzq&J z+)N{g;Q=SiB!CYJnmRA&-_MZX?~(JQBck;8y*O zo~Nl=+D%A6DOfz%#x+P;AJd*S~84^82Fi(Nd&Z>m^E^F#KR{oTqr z%MFdjvX%JhIRy&=f zd4bzMDaUX-ag1iV3rmX#BTX+#nmbzrW&{={C1anR3l=1TNZ@mfo+_kwmeNi38v>0x zVfh3z@IB6VbivPGL(cx43TXsI_IrD&z$(!ks0?`}*N}N9zW{PD38}Hh!$f5AB|OHrFz)GsaWG|4{3sL)9@x;e{63n>Lh3QFK|I-bDRc8lUGX?5nZ zwTa+I^E~Iho1KgEB8}sy#{;SDj91W_F1sFw;VZjQauR#EoMAA@7VQ4rFq_#R&sK^6YBbgyj~Tr|Lb@s3nrt_RD;?2+4!)z3>A2BfDOMQF8uk*$0kOU2W7 zmhWx5U#Hv_u$t4JMBYMOO1b0n&l^$ z!cxt4Mdy&51waF?Rd)php1hv9hrl!Gw(T5IrJzOyBL+gljNmcIBfjE$bmKLi`qzjq zztHsi)wj5_`K=_CV?z*C2ZOhOTbz;H^VXV5TGMOp+vllGawMw7-?i?W^w9J@AK})g ze{C+NV}d(PJ1WvC0!CHN6sQ5gIXTGZARKd@{S(Btme$uAR+=rZH5+roh`izs+z8z5 zUB_w0cYOz1^4%|0@nh(weO4JEke`}FMv*>n#4&jDv|yGejANgD-7inQf^l&rzm)+j zz)GeuASr@Mla6`$ut(v+V?zkm1#NgLQtr^@rYTHVNk zWtYobI0tDfjkp}12Lxj^)p%Q7y0&YLGR6gSs3S&8#uS+pVS)|;2PAb-oDSx=9U|jT zxVg0RMDa&Dh~Y?-F+hw6Ok`xS!Q2nOvF~+=BJkF&VLZ&MVRYa-C`S;c@0W0Vlbow$ za&UWrTsXKZ`!=^bXx2?$=b3n`Th$r~=V*tKYjDK6fguVCtFGl^kQ5(ae++vpTKt46;m%ui6_E*r&GQ)Xc5SPh`*9{oLq=1YL7_m9-MtS0+9a4;F zsW)y?aL}l#``a_HmiJSzvKpm~@moEP_K{j?XHbx?)h`(#0}eP`^dpXgpG|7{H3XW| zQnu7BSqONdLOjQDo-kMy$N+J{;N)i)=e)ayDL=6q9Rr)5r+>J&d79FZ-8OQWckJ$Ua!f1aXoEIvd)ITBf4{SXed1zyR$v zq4sMj{64mGh8F9MtAzy|kT6P&;2!>-$2E;-sk|1#8~D|(+ycr}gXTs?2EgBYKf(zI zKZQ$X@X0K95X#dT4kZ~av<%~7;eC0?#yIz`s*q~z$y8I&+>%$GNXKkeD>jv=YY|JWvPR7z zh)E#%5s%M>Rblfs00#p&I2?-4v%Aw}(iT4|B3>-UsSxv)Fxg^+gN7p`oOH)Sfo}HH z+1f*>UdWd&@e;`DrwCM&#z<1Y=byWg>5Au#E>~@tRcc>epMirWonV(5fP!h`ww)g7 zvk}XM&i)$;akDw(1K66etypUMoHlXTZ8jE-x>+V~nkJNRrAIhi2P1DMlg4Vcg<*Ad zq~B@x1{lS}tqs4J24NE;^U&^HtXN=i#tult?+&5i>FrwmRznnW#;zqESwO?g8vtGz z#&UDl8OKi7CZ%NV*ZCX?U0tS={{S*cC9|C(g5v%(wvB`-3`$#e2rL=L&+|7t42<=~ zdH0F*n_G)m?V_4gNts#&R#qD(Y~bf&+gJa+~h7e z3cX1_xi!P<8dZ!E!ws~;Uoo+=E{N#J#C1Dzr@tBO2(HW$N=nlI03!^+^FiJ_`Ro08 z7OeE`HVa8DY%W*rDHuIKI|0Z9;Bpr{5PA3FnQayQ&9u|C!Gs46M$v}A89ZZ#&mWyS zJx1(BYiV%^EhKIvQ6Tx`R$r8WIZ?Enlh-{uRJSPUZnHry$CY^q2vr`#Bd<=C(RY1% z{LUGuy_Vl1k&)$)$|P7Y4$@nHUu9lTBfe`Hl6}Q-9I`4LGJ*<#euw7g^!imOl4%=! z>>*&poB{_2?uF7 z?fS3sHf^UKZ1%CUiLMnR3A1oSP<~;Ln1FCkAZLozb(ZPQpDTI80Td7eup^wD9FLb9 zdv*2C58;bh@2#cPrp#t`eaDmKvEU&+dJZ~wJl9HfTZkGcX^prtJnA&xs;8p?E@)s3*+j$a#N7|G}|az+Q&k3g2IaMtlpY`?jUy!2rq zagH;d=PTF@ah&m0{9koptr)GWXL(*YB9APy#D}K)6S=;&2es~L=03N>b*UQ{dxMRA z02=h8m%__az^R&5Qfrp~0D1q^{6F$#f=o{G@=4;m{Vf@B0?WL^`_P;7mu}o~ z#s+iv*N5qv{FYZyn0BIJfh1+H*$hTcUU;uf(yn~flKMGWQI7575HnV$z(I2M4D;KmB!9;%Va%$8f66(Zh4Q(R1zAvcuu!9;a3-6&d}L zps>ASiX2t4w8bTzYc;>JsY5n5+>(E(Ax+uRO-cR%D-ILrg7 zD9IY(GdR7ag><0Y&m$d*RjMe{+kf~6L2vz^Dx=*x#l4hn$K4&ecggA6w#<;u&2)+a#17N| z1IPe$=hwF#D+n|&#IVHeF6ZG+b?O?V`yE(kYiZa6t$ABBDVU8EM=j-p<-C4cCicgtsE{TpQBqdekA2Ty{ z0CA2~05CY+UQKhX+}&zMVj~`B%sk={4c#(2oPvD^diA{;?@7GSptHD~&vXQk%WTXJ zNg$Fie&`!=bK4ySapLLDDl%uMmsf<`pr8B_t@rj?TTNiH$M%HWjS%XkNzToqC!sk5 z81K$27T(6f&dOa%+cB-UNnT5Kc5kH|*ex!ukH81~|yv2nCh+^1Pe^Jyz+ ziuU^VhP6xCr@f5BCes;a3-g~=7y*j`*BQ^}RN~F~eYSka5808OQ5d%7ROt zE$CqkM5QlfG_~tvrqFJ`;Tee7x1XsY-fg4a0;nS@1_5k_%P?L&Ks?i8yw|2#uJyZU zgiKf@R-h>i{Do|K9FgjJ8lY{hEt=M8=Vy4>uw4HDt7hOF`VoSA{O^AQCcrbUnEJJ4e?|#8BGbd3GX1QYFa)ILeNMjGlmwPvcrM>ei48w6(jL65xbr zmG%OFf&s@3@0|M73nrz1wCVYZ*$Gt)++|2^3H~F2(DRDkm$Zypdvw1;o~xxPb0qn? z+3)un);=GfNYs3t8t-sc&D=t8Jk;Hm+n#Ww^f}2NTIsY4uMW1aJ*SDT7HE{apmrf2 zlE58@xj8)c_pD@(Q?`;z&5>P6DGMkpBL!r}bDmBHbL-oaT-KMMKDn()qUiIY%XrLi z;0&VWfX_aouTGVVkF-tBT{k*Z{gk4qM|ZbRPnpzcS{<*5wJWDXBrwk_5F^7mSNov> zVbFos9N=0T`5G4sgSQF_Db=Vd&l&@iN>lpLbx< zNeZI{Y)AW}C*J|e^=$nJBdD)*f$hYQ+1_ca%WDD_FTi;e5rHNYqJ!8jGD#WhUQRy~ zD7K?3rh9p29ui7Yjhg(=2-LhWuIf6Y+Po9RCBbJ6ZdgYoVR>V;ebNq3*W6d2!jNgL zac`k&Hsa34-I=pH)t<%V0>%$p}u8Ue7gWUFpCU_z6C$BZ1*cA8c8t7C0{3Pxr{Fv|#t<~GRQ zxL^PqhdX+HIj(!d9wWK7glYF81qDXQUkY}v6sc@E^{Lf{t4^X#zw1Myu+^v1G%JU;(u#s3 z7jWB!-mFg4#A)*aei56Lp8%k5Ft^elPo;8MnM{Y!PhE53PIJUAt!t`GVXzVjHkqzOr|%Ll zL+vUC+#RH2u1#`bp!wXabyk{jQN4=VbT<}L`AclqFvf~Zn}ZcUcX$A8BO`;JdC8}0 z@aebqcB1WGXswmJhItBxY@RXCrWc+)II1@jYNA`~DW#Uy?Il%?7Eo0gcMP6z0*||l zpHEuTv(YDO+c~$i^F)jtzVeb63fnjUFC*q0mFE@LQCai1{aECKO>(7lS&vnF8-;Lg zJnM*9Dye371#k%=jtc|)TpoW9SMYVlp>?R(H1;vZ+Hk&_^-WevE-Qo!v;4hYVe3f0rhDlM9Gs&&36U5SZQ&`oq?Zh zN%H*1B!?h#ji6*_jw^!`hv$u=z3YEgJKIbzP=Dry4zOkuY=r$HHiF~=!D? z;(Lt_#=zS}smmpvpvfdaG*2XCXCcnwS;08Z4S;*~&sDmy+ALyNt!|)3ibO(LWCWlh zF`t-r$ruITP8nBnL2IPMmUg(A;r+;RKtlfj-TAulo<@50;Mkdg@vxP{%&lb#0|_Qi49&AhhvFLkKQ?HZ08l15MP?IR2c1cG}GxUO6^ zB<0Isn>1Twg@+TdNd}%IL9DoVH z>FbV|H>6ChBz zAc2B9_O0nT#@A)mgk_=U5GCX=Ni48UE5y;Xn8R;S#K=&xk}`S53FxH)bE&OAO5{$XkxiPD#|1Qc^Ov6eZ29J zk6~Rd7e|%t5@%IsI$vqQEaqE_Nj7yLVheNx`i*Y`|8LFKE)LVy4O_0JSy`Y6A&=d})vfE>9yTeqhicH*#9-u(`#*H2EU z=iytME62RH49=;U6-WqI002ftPdpyJzV{kSomtKCfE03}&`MZThgEt5pH0REATR{+4#W&C$K*CjV7v- z4by`$18ZQMZXGf)pTn(Pw$sJ!pq*5xfEAH|AG|rv1~JO#r(!;}=&C9yT=6Pmx#anE zxi*@!Ttf1BQSRPD7AGX}&mA*bKW3l)c|-Y{X6tP~5XQb}Z<{|UBR!5mIT-%{J!wC* zVgCT0AEJMSHzY!Zv~2&?{8IaTsi!0`A1+01n{o&|^TF>~R~Hx80bzM_&mDmDJw57c zX^Tpzi;?T=`E;xIXzayZ12TQyc){#PKb3G4JtB!SKbJv}NIp?M`>hsz)wl5xQFtLR}UHuN)tux;CRkT@S&>-3A< zM9`LI7zwZv3uKeQ2O}I;Fd!(U$l-_>KU(QDc!UZkgnse9P&$MmyZvh_t3#s(pE=qs z#LS1u$dYVtaKI7h06g$Mn62CY00L?jcCU9d(=ri|6?THho=NMB^&g#M#PdAifL28W zvks)=1cUF}rD*wKf0K&T)1rMvMA4#^NcWh_5V>K{;AEU1q0U8fw&SVRqNnb& zfilHyAeA>g#_(E3=t1WLKj)g>(qm~fwA3C0Y|%<{aDj|oV{T!b@HoH&zBnCfhOKK3 zB>Pf%H)<5^7{OKmsRQ$>R+_cM7U^Rp!#$G`A%tbrNDoq^fszIfY(E`Q3LGpk~{n52@ zdC4Gl&#!u;7Pglc4XD}LtO|w6&lp}*X9@=yJqLQZ1+dt;r*Go19}jFbKz zxg0U4$+n2~-AL41-Sjpgg3kDxTZx|%#v5~z*pYcZbwN1v>sql%5CYjFNRbL}aG^-Z zJFrh&jymsr@2EYmoNe0Z%N@r9E$A0$?s(~9~s0?%S6VKfPjym-|_!ruYcJQz) zO_^>u84SSvNj&=Yu6J5ec1L2v!U;-7RFUaZ%_WQ(iU!EQWA}OJSJYOPk6|B$d|7KX zlMAU9-;owVqRWIIHgl2lXPyswp>Ax|R$scizlahLG3$ZTJ$i5|eE`|dsNd>Wi@GT0 zOLCx)-cpcAT!Zr!1oP?n>nrlhdsxCLIlLd;71!;Ek;4+LcLML1XGdZARK&a`@*rO%OS-)OkEiJ*04Lf^XxPD+!s z^4RH?{BxXiJ_gXP?;hgHXyleM*#jsRJa_!*8-ycbS5==?bX>IXPenAd{~IXLrrVL)x$>@d157d`IE5 zg{|)4SZ0DkHv)hnvhkC-^XZas-Hmi#67)X+M`$#gg}uJjlWeXA=h_1B!9eFEj`{6PO*+tA zLM~(0AT}A&euF5Q$yMU8<;8o)~~j9o%H#;9zyHE~QAt zTAH!!(x*4^yO`2=cGmXm`#wouPVk zz(@(*`16u8fsQz=m{RT|9-RpLJo7f_!luaN1RcwsK*!UZ``26IO%~5fSZ(hMUTc$> zo<)^$wMqSQ6O>rU>L?>0aIzQJP%6 zf2}-^p2j&v-Sq9-&(Eo^XR5Wt_cq>8Qx4=Y?GGCP$wmYmV;pw&?N@Zg)FQRFT}O0M zZVR#`+!227Ez^c0zrKAk{1>XvcXe}Ozh#!)$yXPQsmU4P&ItC%Jx{okVT0)mr(_BuMM&+5~jzUxbK*JI;Mm_lF>MAR}PAJ{RwLEd@@Ao{lA-BZ9 z72_MXhB(i+rFplCyjOi?tlnwbP5R3O&69jlNxgV{R!{bc84O(RU^&Kn^!Dqb!_Lj@*&kb{@TQtZ)5kydl(x3B ziM-h!LmApw91N3;@yBm(r4OmgYO1p$yr^8~8(d@%a(bM0&N(&B&36h(Zqmf|_br84 zSP_!vJBl20jDUJ%S3tTHcabOAZcV+;0F*H-p};J_kOzEiJdAbbwUlD5&Sx5vlYYLMw!nMKfFF z7%2H$j(H^HVX@k+-mRn%jYiR$CLpJfRA4UMybKPX*XvR3TK6m|VbrftY|JR`qnmHCbV zVljptcs+5?<5y-7GeV3uEVxNGa^B0vax;(qw_2}j%JfGw!?`QmvTb0CPlIEu%up~* zrCC_xx%BPSW2bRkZ-~W&PYgE@upux>&eq8%AfDU;efX}PTWGZHKH-{8x%qNs!(*lZ z=O>=H;9|Jz+e=%UQzoG{XN9*S25wXm0Bq+UG06P7)|gEt%-M!HK2BRJoVkSF&Wm8l z6jOp6zB+^4W943OPk*Ick5{{~w2sQjLaV-H3z8VG80qxs!1|tZ?v2%+_JoCJVA7Sq zUzp?pp4@VIq_@1D_U1b~H4;Z2;;2}bKgEUX$oc{L*RLohuJ%4|6&iM0H~naIPS9j; zwhY)AApZdMk7{P?Z~688fBMya@_i{~2|S9+ll9L-Q%B_lKWQ1j1xVnNo}~JHeJZ*; zT+9N#RO6uRIL&cK%=cx|+7m^5Eur$_QgU)woDuXQu5R;Ol#>| z>Ul09jff?W<=2|Ht8pGBU{PC)eKC*BQfYk03Cpg=ymG;NDoGM7O1O}#4iD6h-MFnw zc_aB3X2Q}25%mO~=hpynT-rk{IehJ5jO6ssIqRO)zoyA;BdA=53O5pXBx4xw>(a2R z1d-iBZM}ClFD9DS(kSh%-YhoeW8Vbwc+LqvpUSz}^(%`@c58UT$tHI@0(tfwD}F6H z?&HjsJV>v{UOrLBrb+Ew^vg3`$89)eGcYHw2)vwo6a1?RDmSw_u{`NrX?=>e7E)Zx zzGImirbbSC5)W$EL$V*;uq@wwSxEVZ1E&M>sihIy$mS!sG5e$wk?ctP#Z|bG6bMkW zGdhfWw>k6}tCabfoGBMjFHoC<(*V02&4*(B9u09-;S6DohW-}4Hn_Nl6LZ^1E?Oggrb`|VJ4&GZrnvR^ooEO z#i9_Z{cv%d5;51%)tH!E#*o1tUgVO+q{87&d-6MU+qm$= z08W3E7dI1W3bvNlEpaP`P`NuoWMd&n2at20=U8$#r&Fm-FMFYhsA+c=If~twC@i~j zPIkG#BphQL@M;Sf4aT65Y%#-d%77`}a(ZBAJ$lxNne`iuw>K*csGB^o^NqO3Jd=XQ zupK(o`hWaN9Vc}%3#Y<4IV-hD`Fn%($2HaM8jDYJhuFo1ab_A-r%&4G?cJa@?z*K1mG!yA~UFhv1al?y2W3aJ1RFf;4i=hnC}4h_eV z>)h_cQ>vprc<8!*r>*=Q(e#_Y1W%~PYKwh!c<_fim1Ekf5x`~&3X(}6XZcr*d3PFx z?e*M|?v?=PKo`F|xd?LIL$M^XXLb)bJu+*!_)8$Yv{t+VQENPofT$s4Ocj0KbTH2x z5P0Nus5N~K%HihJQuUtV-Tb)-3+CW90bsaOj9`5|Ys`gDXNjt$_kVHieOc7P(s9`% zhqkrVi_K`Ru|%B7f(B8B3%4mrv8@(oVIOO`05p59R;E6Lo>LXJk`k(_6* z%ThwOcXvwnOeKX;Wrxco0H=~V_sKu6Q(RT3DX6>J$9*hBpyaK4{s($K(X6Ave{Z(x z_<4bmz>Y)!{{V1-oQ#kMIpVqv6V1?cTfE#l*x$kP5WF`eZUA)vHdGPQoaAP_hCO#x z)1J`UrW)PJU6~na2|K+ro_#UE?^ojShOp3FSxm6WYb=-pU@WRJ@{FDo_5;?jt%IDG zDz%P^c=|DSmF{{R_S%cxLk^8}CbX28p=>Md4wxVz;g2Cka&v$%MK@j2bqhO>?9DWh z1Axj`^(ks>NjCPJg;-jZEMq5!>rtC z@miZ{qGt^v;Emv&yPSYnU~+iKKG>|-wF@bxk#Aj4!hdy@ELgC4^!8G) zO{CmYG0%py+qQ#cn0ukIW0naR$jvX^8$dh`c*i|)UA)%T_63BOVg&m_tdKa7S`dRI z9P`P*>z3*1oLeWF#yQ2T&`WlVyCqpSOADdiHg;CQoT3udWz@=Elk^ziuCASsAuN>g< z*P6n;)_g}}thcLkdfIE8eT=uVL4V)9|kWK~a0tt-dqR2xsGPX!uu5pqEc;hvJrfXMvwdC4# zkbRo*!n(XWln{gFQ_geWjP&)a)gE=v9g(cDDiY+EU5#x{OM>$lGjPx;6G)8P=g0AI zzb|98yLI%bY|ft_hjn{ha%iKuxoGxznPxrIDO?r^V7)X zsn2;h#{D(xeg5N-)%-9lY~{YcRqpWsI zyY~e7(FT)@u_rwK0Q-@hZBM}Wmom+&gEiW-nAEd$kOD|k*8t~k1~3P&31MS*WG2(@ zE`3VCAV0!ygTTfkD{^aP{xcfX?6tYH(y}2lIGC^O*=Jv&N zm!2Hf9@Tt9WjUM6%<^qGY%Z4$y?O`TzNY2nk+z@gwbJv>YSeYsFMeF8u&jy`7N{Z_H ztv1-;Z9D-yF-nawl5>=I3(SGX3a7X}xgPa)>qpbH+t{t|14Syje1H<)Fd}SC7S@I zA9E=q0Y?E&P6rgR(!1vq%OIm4V-@o_%bV*Ixnz#OdCSfw8<3)oFvC4T2R%T|c8jS+ zHkK13Y~L$1e?Hb?R}9(CeTW=an)rgtQqwMF(i$Z50s)-=0DC-q-%fK|dQO!tpP@;8 zZ+OxyY!#5_W5|9&K_h@OjP}Q+bk?H>2+ID4J{J*DRg@HcdRzR=NXnURCX!u^A^Wbo z35yvDQ-9uWzE1iQgeqAG{kKF`oXt>vvKvH)kKSnw^nfPnqrR?xbe|2_q$8OzhkW;DAZz zj(F+CY9^y@>9$?MV#U!yg;sBD=b<FMc8M2Y2XIG4G)gyJ~SNMH{nmS7a9?lVlb zxzsH_d>e(3k;;A7#&9~2GwF<0Gm4hIOZJk5qtF$np5R>Fmu5o6lN(6D;DQD-k_jWy zx&Te<&wFobV~!LDYi->jQNtdsp8S3k?KXLgHw`wQFO`L3Ap|DiGC1loJAXRWw$pAd z^cL4H*?z??UKC;si~Kkxf$xq1JZCk{R-#+4Bcl&VwY~4J-Ph3J z-qn?(5@(edETe<^{{V$_*V^gu-NHk45WcsW1HY9204zlC1B`LUZaskFw5?iS1T|(D zY%CY=D=RCR`lXM9<7)PG{6@Zsp+gzTmyOGUHiOvz z0G`!(H27e&{?%CsUzJr!!G1a5cI*l7`VVt7^0Q0~&5QyDF~_GsJJiavG)oo9C(6hp z7#xfaah?zJuQkc+eJp9Kwkq06VmEVVVCMkymg~UHHr~WKI$aj$r~d$~)9ofpYnY^& zjK~T3KnI{BAFW)HWWHvO(q)F-PIfbZLk|A{G0(1RIZ3CX(HO<6_3UOWDkbulpev9$ zQbb_tU>$i_&>;~B?4g*Ibs@_dM3 zOk*y0kEkFHKhHI3-&SVTmYbapn<21{4MC^!;*gE%2PKDHtB?mB@+%_t@=KjqUEYn1 zcDMkOfK*@&+3nk)skG^BcbkDG@elz~hB_X+`u_ltOJ{L&e=W@MsA;7ovA|zI0X%fi zTFaKr$(?-M(Tr35N|$$*^95!Bev5&T#(MYqRH)B9YD|B+B=er9x#OPo=(=BpY}R{g zolFbciIo_{Re~UI;Q;N)1HMS-r+Smb^J${;YkNCIw1ODa?T?TETpid09OV0V?nfuq z;N+nN^E-dDYACvu8eT`8Eu7+@X|mjd3Hw6>j5gNib9+_LCl@|s z_YD*(M0-%Xahw{bpg{IlsNO@$G3kSx=Zv0%72Io9a^A?1 zERNSn8nR$60+z!bF~)I)&wTod<*!jHiF7+~lqV`J-&2k^`HAF~BqWgNpa60>9FBX{ zl#WNaOUPM#xKcL^CbN&^tcc;T?BvD9=@-nF}!9m;%^e5Lns;tQCx9qcE z$o~K;l)z#;llo_%tbL+?3DBV={qBX0($9xuu^2GM%!kiFUpx?c*J~x~*~GDVUUHRH z+U@g(AaF>*U_d`8&*5HqZ>*-KyPh#-sz73S18=$G^y^(cwx$KQn{OWHc>`{LMI)Zx zgkS<|nzbj@9-b1k8ho#E^kz$IDQ+yDQp`^4b{I~9eoi?&^c#1jtU5-m;nQi85H_TKiV$4FEa1UYuHGQ-TElT?DRhI5c zXJUM?RI$R0661zd=aK;fwMv9n$Fm!&QM*&!KlpZQd_KO2Pjg~~TBNrKS1pEPkh@od zj4{YKKc!2nYS+!JUD?F4OBb0U%)dKeLy;KD~*Hr zi2xJB9j71@fu0R-O{Hn}sfZ+JmiRQX%@YWh%wQX7!UMEqsR4S9D+104^4a8F-cbxbb=r6!DB~F9BWJE#zbBOnk? zdV||JIQ~>Zv{mEzlU9VZpXK+M&2w~`h>}SbX%<9g`2ot1LvqCaInR2lq{5?C)UBp{Y;Nx~s{HGY>BaC-E*2ngBywh7-J>Y?^R0sKY2*Mn0Zbtxe2+urp=CRTPrFf@O zNQjfjPbCRp14PO}ag)^b>Us69h)Fck?fRUujFh6@*ZmpTq={{18qW%9l1NXKfthv? zNcq>c2=0CRVv;=}^=&HeUyd)q9zXzNIqTlKXtaqf{5=`6bX%zi zGDu}Y(hzaCoUYJF&loxNz^eAL-&yH{PdP1bI76}3<1$NGEuN`h}tfks5q7KE^CkN&F_Br}>I&o061aSW1zLRgyV(50(D_y^=u(hRGPuUi~Y3#oii|NRCNnk_l&QN4h2oz$y-r zspxv2eoi^ZC#Y(6fg`t)100b641lQJAsINp&Tw(l2aMK`lxoE|qZ!kk88sodSCd}K z`h=TS;9$B4ier$YARKk%`{#<$l52_Vjm7#ps>hE%04Y(DK^$?N-3iA%4>eOwjWt$@ zgUM~fEX?^k*_-7BPZ-HQ{{W?LYW^K^KFbZsksc z;pxs%bB@FseYu%og)P-uGzk$m$eLI485q!q&xz-_tXCcC@)s}HcWjUc;t<_U}}Mo1rN z0H2$k`2PSCTzHu~rM=GjF}z#a$9<*VXu7bueQ3NluM15KOPz*2*dVw(w;j#_>&5`* z^!+zY6Md6(kU<-7XxQ%GFhR9tAZ2hj7QsC_b{vJKsV%d;-J&(s;PVz$1b*yoD#L^G zY|c~+WcrHgygA~FBcuNSYC&f$+=zwUoB~uS;mIYwPIG`V$2rb<@@nDb1l(__=wYhC zzE)fDkB0O;GeWo3G^zgEaI)g&&M-gaphi~m$;)lsgV^!tN_LrsO{<7*6sXt{h}hg(<8YMO66WsMhTFR3dUC?dZ`)UV|8#oBJpg# zCY#J3yMqdds?`*DoO5pSD}~2yl)9DI^5vQRVyi{uS2-8)>l=z@}ih* zK3uX!SOerK05a{zEDs=@pHo#eJB=<#B#m_ltdc^*%*wU_$PT~|1_A0x>D!v-Nc`NvJeI8Y&hNX6dx}cP#lfhiNWcE+|@%1 z@2*m(hK-+Lpe$2iA88ywYLKI2KA$u(U;QYB%v z&;W$CLY%6M06Afj3F-(vJ7YGfxV?4!PFl3nsHC*hPeQypUHtLR*0Ka?8H?bZft&84 zlhFX_*Bq0aR~fEo)|VPti%kk{h>b^?i2S{Tmc{_dJPw15@=bOo>+FI^wD#U^9kCoz zGwj=*S+T$ikL!V1+Mb~VP|hGlm^KF1UBnjPliYmAB;yN zI+~H%*)FVRveTwps1Rk#7Dfk*pH6#!PDgWjt4nP5@ZQexNg{1fa;n+olW|d>rs6a7 zu8dt|vUTJXKUtJB!C(jf}+h2AAB!qwn9gpYF6+Wbwn(Rq z^XhSo_2TsgeeP`>K_1U8LdOdxNG+1x)Pj0?4CfWiPMV#U-~DN0wsoC5xAM33saH~M zM)F-o>iR($d46Kcl_Gj#`yjC=Mp+Z#D;EpY|X$!^Y6rgMQO0hFFQcgGzKao#4M zR*ue8wO4{MBCNX{KJ$Tw++r!bt4wa^h=>xj5w2V-+yPqwvDL5yf$?54{ zoTJMR>#^g}tg2RVY3bGakZKnf(A=SgO!m=}BC?#KyM6WpoNgzf{Y`Y5w~1`@h~v7{ zA$Nk|wt2(uoPmND>F7z|`(g0-io$5u&ePeImOx@fUGTEID`fG{%5V=}M@r(pA^3V* zkrmVpB#oDN(pPyTWoF1!$i@^LjCIX(CmG5xsH|;Yo|QS&qbu$Ge_EURb^ev8T|ua% z%P6?OV5~RBtJt9VlpLJnuUeMtSucMzj+(oypgYKjZ(yJ80(iq5{yl5v*d?0Y<~bsA zl0uGnz&`z|)9cG;rahmOq}niO)ree>a=B5?0SC8y zQcSk-w!nA_ZZg>pdexQt-)-{@*uzopNNv2eVz3FyPS5L;k)f(110*+B-Z3YOe{8l6cD7~@;77jtq=G? z5B%}F{{X&+{{RzCn&GtDnV`0B-LvljRY4g8hQZ|fnrHUS*Qgiaoas9i#7|k#$Dhx0MBe=2m03XTS4=yrf1-(+(t4#hXV)v zimapTj>BMMj(xM}J*&&-KCjs|*Flv{&=eP4}1IY+<}lm@3;_n=za5DwvlgT8wjpqjt612TW`)w4Cej20ZNpu&+YBeLmY^ zFzsESkjHCeV>s>!JdP`lmKkqn+>q>sJSyWPlj)Pxll~P{YhPPg6NAo4SSci^2{nK1H zXc9srBQ2P{j~VpOdbw$FYZC`dVtg{GUEaKMIOB}hQ(aC-%j}&MgG(3(Fv)P=@xpC6`tEKKr(isyHBm zyZGdhjIKx18L6%#u+-fqxQyFfDl~{e%M9>F(fnL``tW;W>mOs%1+Ac(Igz9JOnGM| zxXA>2agpg;IxU2{jl6;kq>>y3DjA%db)D=4Y#cGHuToj0k@L8seT-Af*- zqC05$RxYG7oDqx?dC4U0{CTdL+3&ARa9CS|Bb~9Z0yU3!Ry{V1_dPMzx!c_iSF@d3 zZK^Ud7jDy>@JQ*#J?l?MU4G`(H0>x!Dyw0fu{%f@P!9u+d-K<=X;#iW*ZcM{q3%nP z&d={PVvc(&a&Mza?jy*R8FHw@0Ar1$fsav>&!uR{lGyZJ$mOg z=eb_&^q{$HnbqlD9aD36exT1ivWVCK3j#7gQ?-{M_2iG~&t1uU_Gx>liDOe9)*>>9 zV_Y`XC#eSoh#1eWBCA2H_>04uoYy=Q)Pl6I$=4CL$tF+tLlK_i1oo_}yQ}SIQEO?g z3{fcBRUZl!`l^62f#2WjnoyxWZfP{vf9uR0cs0tEpJOiC;_e?RefyPU3QTHug;BdZ z$>Th8o_%Yh)pc8|>t(gI5)lHHnr7O5M;Q?>_lXAto}RfQ5v7D0qRlP5Y^fZ(44bwz zhCWFg1}aLCz|Jwi?EAUaeL-Q>0>x_l6B-p(10)bh>U;B_TnyJlCVo+UFFlUW|g*Xfu zhnO?h-=%lc>4x4&>?5=i%E(?K?sDW~jFIyI2Sqs~{x#0{hT36s90CRTeoQdwlk)-y z%C~;Rbj?*7$<14-o+5*cEc$wzdVD(esib|B+!&@)^F%zT(Uo{r0RI3GJdQnZdRKd* z_)RUD#-VMoN^bKBEr%rh+hha~c;`Jwy?G^-{2`Kim|(gv3=Y(HRs}})o+#>C-Oa99x9i|J=MIz{!L>>)&Bsr zCA<4f5jGu_9H~?wY-LbXHa_-GJa+4ed#p9=t$U^0#VWI_E4TzKkHH+V&eA*mdJ4OB z2BmwcJKGuV?e3j-#96*$wCu^x-BQ40WD34~5Z9Iqb9lzv$}P4rv0Dq1w|4Av&}8Er z(~POY&U^m=T?Z)Co06xu_0;3_4LagGDXvPey@02kAZ^MO^OjM7Gm-{5$2|3`cOD*l z#5b)lo-_)fj_u)710dw*1mKPj;afIv*-3489M^63yMMhF-PnvKaKz_09mYL#fm#+i z%vSmb{3HHK$g(M5!FmP+5=qA3F~)fWaaua^x4YBw2;u2JkE;BCt z;Tg%`VD$$ep5znU;MLnbZss|zMAtGHB}H?%0g^BXE0fcp$J6LFwZsN9e6GRVl`$N# zIq!u%0rumqR(ok?lw4a}d7?=HMhL4RVb=igK4H-OxUE`)+{!g49lqnK(sV6e>@$cA zu{3f_TWes%26y2=83b{h50}tUro(GJ(NQ0iiq7OXZLG+d8$x&F^u|3se1lK%F0pIk zIjycRHWo=E#^~|?006+i?Tn8~_K76BfT+~Mv~f3>jsR6?*BQo6LBYT{@7}S+(3~Bc z-DzU580b}tYWh8HO#{Z-ZOn)viIvIR=rOs!ycqJtXR4h2D=mCR*B9o(82r0C=oJZ; zFo_{i$yA8tNXN=T^XXoJ2aYr!5MCQAFAvzq6mgBkV|0{k$s|lpS(_x2+ZXAD=!rRCN zw8WT|g8Z@qxFgVTI}WwwsdopHccy9uU{f>88%CsnUkt~N;{<0s1CMI-9ZJ*tNm?mx z)>xZ=mlA~9`+jVx0QOw^0)bteTr@my+pPYezk*WZh2fwG@DN1!f}zN+ zsMZ*~%XzulaEL+9N&~e>$o0;7`gYWlOIxSq+t1YE!@@FZ)^YP!*ShrbFtuyFGSV>z zmM>;zIFX1goM4lK+piw{kWM()*7ay2NTX%6G5|s$`F{2?ar{Jq>C(Lot+WNW7Z=QA zyq9rk)e4TmS8(0)08V=G@5N(TX+9f^SB^<#cZ`6MLY#$V92Ry8NI4|!=y|PaRf3DU zY~{t%sOFSpmHz;(OPVgT6k28FyF0`lCq{Jz+{ojF-JF4tGJQWP%4?g2vq;(o-h>U9 zAmx`KgJ2$jah{y}*4>mA?Wx?P7*xDe+Ugkw@K_QDBm;mBGtlF$WI=wG^2(Pe(nJOm z2plj@GrNwXJmc%$vVvE3US`v7DJIuq9XnSVZN!#~aWYRVhzf#LOk6Xs%m-dT`@+y!pOINta{d%UDBkL? zg3XM4!B}S*>yJ)2tJilhYIat!v~pSAmuLId;sk*k1Mh2Zt%;Ql7OM&|QP zy|q|YP+Bv&Sb(E>A2B1I26*T_v)8_hQ5G5uR`xeSd`1<+agqrcQG>@M_3iYoJZ2fR zthKq{fyc!;UEVf0rP1`AA$146{{Tsi0P>u!3j)|D8;2vVPvz;>cz0B_n(iGw)JGkX z5$d84^P89bgxVBmxuIQO(mzc!VT>0 zC@aWP0Og3_^oA%Rf>b=cV>BgIm&58B)=c{VvKQJU9Ihv{o9y)-LZp!zcD+$ zP&hq0`_qIer?Xnc3mbG?le}_CI5@y3k3rX^GT|+j`b!vORaTIfb~z-lEx3c%IsJS0 zCV7f2)R#(RRl@%Oc%aD7<$vpa;dsjTuPiL6`%9H)(R@;s@W1ha5&*M^0e+*t?tU@^f z1|UEu=L4t*jN^}P{ML$#xrDI_-ep^fb$dC)F)y3uNFSj)i5MGqWDin3YqQg>MXU&g zgtt;4kZ&6f0Nf8FqW+@<@HxcOqtqph?`&<{xhs|}fSm0Bj2s-01~JDS`01^zpb|aB z^Y3vU)nag{P6%9p4gonN@r-rimMUu23^Z)-{UVLFi>KUJT1|5PT(1h2Py+yciBbL) zFZKqJ{{TIY{qUdRTG3wH-P&5n)>jdgiBO0`Y&$YD$5L_5dCfb0ul)O7{!dQv@? zo%HF`O+r7g8qmLx3NZ z>)apn-nu(o9cG?KxCPGh<)|16I{+7xj@9K=oML@u9-QUxHMv08UTL@9UF3UEfWvoA zI*@tq?Og|$moO_?MDHs6%2zp5ImQ%@J^R%`B$k)*LnNMWnS+)%KbZ9VJ?U?yxMG49 z!Z`~27lXTkGC9XTOxG;$D_riTxf4jJ*O5&mM^I+_IUo^{)OX+$jE>dVMRTQJStyEJ z5ws9KR0MZ987GdsR}DRly~M;tBdY&+C|#K3|U4)NHOw;T>PN%$sWAdGKz<~j>S?{ zJ>!~~Jc%`^*&9g3gOifo&QJO0@~Gi}!yCzWD1G>5EO1Hudi`po?|ApEaF7Sy+24Xb zyyqWNPLj#5Gv+ex9fw?Z`Mtkd?rTGVO7d+jO0z){gXKycH*hoezPZ5z+N8F;D|7My z-dNhBgYzDMe_WdAtaMvzW4d-((n1dd8$lf4k^L(H^b2+pOBKM0ik4D&$@Jqm29#<= z=*2oU6`WC{6!&5^wJr*w1%i@5$0MKv2cbFUq=Qp}Ef(!0VEg`4jsORYliMA?&KxwE zmf8zR+iXf$MJdw^RXLxWt^XB4h=(Twk7i_&gq zYxOZl7%-xRl%2q5*S>oFE7L{3r>EJ)as*OGDN*~j$;y1khB+DM9`)vPXGgu04CXeF z$FaFM9aypbKDE&%w-vp$yeiTc1LrOBkGx36Jvi^w)_A&3R+M%%!B-Z%sE zz~ z5tYDPrZUHz=L!hjTw`eWh?v+_1 zf0>&kXEF-m1 zb!n_Icp4qsgj<6$fIenWSPn8BU~V(vo;f zJc^KGaCQKU=KumdIV6t2_u{!R5>4B0>!IC3F5S*%-(J+MuO`*Bh#Tc&q4Byd?%7$A&8E|<3jGi;okO{?NCC#|7 zgIatUTY47Q%O3UI2~ti$^~ui}Bv&mb@7*2sBkm+)YEtQP>Uw^m9-gUi_>Eu8+J|d= z%y$lW&I2Cf+OFJNPpP!UcEBKDt;_?w3%uc|6z)I)>*YoB@J5oZ}pvcEx%x4=zP5ta(cp9(M(; z%TVd}dPHk=HN(ji(moKc$r|9D!B?o`uo$N5GsS;&kXjQg_gt@#tkQA9mkQl71_|%m z(_Z6IxqEep#w5I9v9hI5k-3@KRP(iX9Rd1RDWYk&uxb)bY*}Wxa;+vgCk5CHaxgG3 zI(<1cOH}74sugM3s6lA|00TzSE9;gjC7uUnWSN;&WeN@)B9eBJN8Shj0Ik$Ngr?W@ zOgw=s^zz^$4We(C324FtM-`_bC=lQlb#dA~zi!Q^-nz0nC{-sUl6eh)R1tyG)Nx*W$2mL0bb1lMS$^?dKfCAiIBOVf zbQyoLjj#|&hAn}XZb>__#((<4wl6J)p<^OI5?|d65117W+_uq?oD3gB&MIwo@grGY z8(V1XVK0UV3zFmzqmsa6H(ohh`|~zhmGz9V=JsnS=3IsV7iIm=JqSZA>ZZ0C0?%;uD!Q)8RYPkcaUB__bl6sShsb}KAF2t8GDoXN= z=VK65>0Rl~BB4xyc_XBp&0T{A*?nV$~ySuOz&89$?%!;omvI&Pm2F zc+YW+S1z6=nmE4A5R%xPqvhD8m2;f8wmts5RMU+|dn;a z?uEiZ9}-3gMFa!4sQ`nK*YmD-!y`8?rgi9A~a8x|L<@-1;6i zDuwFC3hDlZog&85PPzWiymtF+u^9lt5#tAq#{(b?`VrqXUgu4-*Ds+kCzik!%aG){ zo(TE!RkMW{89#}wJD(1<{pGd&%#yz*Gqy0m9@)>=(z~l2KETTzmFjJX0RCWNWPA<* zWABcK0|vRLiL>Xvr*$kMlzp2^m-8xEcymc@DGkh4>vOe=nQ$18L2r|uG1QQ8@6x&3 zm`rxUTYG)8!gnN!im2ltV?D;uas3TjXpOD>^Xda;{FtPCmD+ggpP1u4dhuNy&Yx)& zlouA)tL6j8&HJ}Ze8dii2ad<<*17$wi`CxeOQxq6%NtnpO-fyNQ??6q!aG7sY}@{+ zLBgqQbL7Tc7N!7{lrD0LouGq#JoSKSQ6&vc$G?LhxEKWqAe%AwVZ2`ty(S zd8;oR*75zSiiq}keZJJ^V z$k^PVjiIrEPbZGw*QaG+;+-Q~nm3J~&Qhqs{#9kqB`{7v=KztB{7VvJmdo5&yw`V3~MH(%s?&?JpY=MtwmbkIU&+{?jM?`C9(~->0rF=f?W1 zE~85@+rZ1XDNx5JxyE~9tN#GPdE$Th_=EoaijS+*eF*mSyZ#6N()^K%*4-|Rm9v(P z6SM@&WMiC>!N>XHx?5Nyh8Dlxe{|t~LQX-zOijq>%+1PpWjH2eD-Xl=!*K?_Kv07)PP;{&E~>P>YXUArR~i7yb_mLx9h1A-4A z^~MJ|IjZ+e(k!N1bwd&PSU&_e-3Qa3rbirC6mbpNbVs2qBoc3{IBAujgdgKnC7d0j zAaF>@;sLYlhAtRu4pKx@&k`5JbIekiY2zSTe*Y3+P2G{s*2!@C_cCZV!V$~ zyO!yr^N^&`0<1A+L?gH=6iJR0jsXOE4CB-At*TOzOO+hd zF_ChYJJX@k>Q`~aZ}x=8l^6@PvRu0ya1J>cC)@I@JDpu1M8QdAatUC$;Pcq?6=oGHN>1_E)r(fxM3*4S z%yx_b0F~`wH@7WnP#mi#AoL@X-|()tPtS*#=1gZe9CaKH zyk@4YB`e(4jcLZpHfLJ}-kqvkc{lfB_6bWq7Xme5%8pc?qo5r#?rPQgy_KcBVmQ{; zHTitg=9LHU6<@jt^~Q1Q&UjnvPY+mKE+cLB;1-W0ZaD0Iyw$sQvbD61>0pr|xMl#z z*;PG(AdU~FPBF>njOB+~INa%mDq6;NzkB}xz&foy@@pwP=3#SdHwfEvxPm@mk+ovyaDzvP-a28A}1XG`w z6;d)d_T&+}qiL|+TnT)Hw~F2}j7t(^-bOM21A~%C{RMeAj6@aWk7Esno3edRGuAZS zO8Zl~ytB8GVw*@~^CN~*NF+9RAXBuMwF}pV;b1T&vY$FK26NXfk>gz2(A-3Zzw4v*zLx89zD3OiWS`B z%cqfrd@`pld%gAkzpV>5uxq;A)N)%E@)}$cxd1UFoy3vH2e|rG`vrpLM|p3tEwRCS zb!~*49!`3Dck~#mnkzIG=w{mX^Ag#JawBX6$C z+DjE60oRUt;-YnJc=kH!VejvCWI{O}!7gnhGD$zo+-=H%-#foA@vC>&pJ23zOkQo= z<|0CnLCHK052zl!t4bS**78}R3k)e4iZdFHSObs)bPRgr@D6c-iqB0;OO|DcUNbk! zHmjpYBIhAYU}PMF+n%+{%-h)OPBB)#rmmH31*Vp}E!G8cS$88MVVI0$^2F`rbo9p< zyQkXyr(H>`lX%bXBmk; zsRS*j-wS(XUC$<6mQAS4FagQ+2b}T8(AS?jjo-UH3UFF8pSrc5OuvR38R3p%8)Sbg zNRC*rC3!3dO!V#B6{C0I4-;te+UmEl+y4NiL|KKr{$!1kP9=?ZZDY?JI^wDuIBsUV zx{}^_Zf&FvByFX)WERgk$D!y?9`%JTt*dD8&vR&6FyN;5$&EyV3~`KSpI|r`?^{Qj zT1MCEa!-~m%2%;tP`-b+%VPdg+)E3t*+5SuA_7=vornDPuQKrtoR%8Y(M-Y_aHdFC z?iDHun9hHQ9G*RU*Jw)Gu9Aw~h>^s+Wt!bJC&BfNIslb=7 z4%p*(O0*?O!?TqP#q*40^vSNM*Y-0}OG|zy6-+a)OPc!L{{S!R z$m9SUo-_FAN2Ojglif&)vP{kQR2ajn54-^+{{V?Ss`?1XjV_-uM4qt2lE#tXR=C9eOKa4wo9kYYIu`PdsE`mgP*GC@M$+fCutg*1hoy z&8OR)9%ANDW0=Vr?{cAcNH_f0a6af52fwCvn{Ny05?SiulIu!l!$jaDkj&)nW5~$h zkVbKn!L8dEG@I*-REG5yOQ$iG5^dVto#E7UBa9Q*XgqUVRa|+SYh$*GpCVk^KkNPh z3D-Mh*|sxsiC<$Z0K6NRgO1=NQR9%ZlIec9A@`SFqe( zOLHo)$92M-00=k<#~gZet`^6`n!T2jG||FQUkQ?W?mXkLBEE+TqTzQfPngE3soF8p z+K*I<=Hgi7yz;!I;YM=hcmtlDIM1bYdUTg6H_Dzux;EEk!EQF^oP*mObQl%PHlIF> zgD}XmADOoX)r*VCL?u~?iZi$@gdAtTIUh`Z72P=VD<`4mQmEmqm6_4$ zabGLPZ1JkwBW@v>pkT}ZVcefVz^qMEO-Lt_=Gj@6MlmP^Ztu^oFnfXg>po3NK?z^9 z60#k+I018xPp^KWtP6*hCTl<%;3+5&aWEE$ar*jiozPj-Z z;L_qII3rN=;Ozj8*(8F0uTOr5LAJiLQz}P=h%94ZQUC*t5)R^W3FGp`Rnl~=(_g`I zJj<(T{JB+rV8K8c&)p*+^Pc=yZKk!Qz2qyU#^7uqsc@k4&Q1I zoN?c#YjWmCSY^2}n`xMZSht1+dxAj+gU&rTu6oAS31yZ`mK)*83vS z^cu62j_S$$Fwl;|;@UgEwBKGsaM6w1NFa=p@_>7vYL`>ARkwIjG>NW@5TJrlM>xhw z1ZM-+^{R8}mI}h^DOOHFEPh7V2t9cK<0K4{djrjG!(erri6XbRR{%3dAS4zet{4n* z0qOwl*MW1WlTyBh5T_=b8rS;uD_v;qr&#H_Rjkr4&9#cJ-CX5P?|)} zyhXS|Hv*0f&x{?Q;~4cPj+MzAXLWtfs+cu(XJ?`2J|@s&xUp+FouRnn1&(%>>A=a_ zNdTUs`SI3z9o?Pe65d;GSVuiD*lYlHliVI~KN|H55o2$xpE_FJ-`8`2)I2`T zIMpqqR`ZVG@|I1l!On4y@@t^H(__-?ppxHgWJm#M)G2M_Za~IZZtcbeXj<6XSjv)( z?Ee5iDn#3Vg?>@T1G)A5rMtwgK=j5*$gO3FlWBB0KAdW!txMlboFKp4c9>(OlSDTt^&NkOZ|AorOabT^q$05RecM zML|+Rkdkg#KxyfePM7Xl5S9=mmy(7Bq+7bBSsLjMVd?IdTE6-If!&$8ckaFOJm>t5 zyKz}Ivow_AIN?9fvgof@gL{+i)ntiMRzt+8fgR*)mfIPG=PR`ri{c`7FK~)}84WT; z2s1LhB>uVi6JP{}3LWceT8ZinW*#3Ldu-pPzD^6tjP73ScDk#&_N0pP2TeO24#94& zVZ)E0Q~s%i)m?-%>%7=tFn)h&15E(w(_8JB2Aix4!esP~Dw?%$!QcS>_Q0u<8;CEo zfnV*ZRbf)Z##3lP5Iq?#$Tlw#?udE+Rm$&lhg$Zp2c9?+xxjnw?sWNI#TDtVjM)B- zEv*H+;u@OzOzgjUeY!^=UU+m!ro{`P#A7^P+7PNFDv5fS8f(bjR(2Z@7~gB=ORB#r zeU~dz)4v#_j7nPav6wBavs_-yE#iu)Wo(d)a=n9lS~#x};TocJ@f^Iw?`q?h>iWYm zL)Zc^FNC(i$urH1m@yy)&ZO1hw_b`G81D{}tYGC_Q)4^Rtk!G{Xb zdSO+n7N+hsnt*(VxG6x zcrzz}Tdm@ztNP8`01I8%}g?< zW0)Oz(c-)djUPyC>aP+CGOdmDh*w`q_*-aG*&aCJN10Oa97>V^q%pSIGsbL1jBOIy462Gdl z?+hs702DO2u$Yey@l}-BjC@Xv{kI~g756nu0jZ*b2th)kj|Y9jq=N3?LjH;WVBHI! zlS+~uCyZK17)D=WO)>`%i}#mr4m@2>k2{?Ie?!2q)Wb``Sumr+!NFS7jS%OYFCTEplAhZKHlj3m5C zWN^6_>R-c%7sZ#q6m`&%r?10vM4PhF=THuAXYS8|R6mp8;3}RJ9x@#(w9rbn{WM|M zX@|b)49v6lj;yRzp{H5eZ697EV}rj8iEA$6RA1sHCki0-$3P0-f`e{LQ>7+?Prs_@k9Lw}gcdMQGIftna-eP3-Hl+@fn z0}haqafl}MDHNcTQJ*_P9Y2C_r}{E;$@2?Qt z>eDrvyw|quRPJb?)XMCXqV_%4esj27U?i0oc@xI4*y1eI2V@nBqA7}li}I$XXPste zZ!NXdTvXC)j&JQIhmJ%!B#s;um-Z^1&r0bDOQ0+ajHV8NDPlKfqD-a`S+-NUrTntN zjxE%*2Ny}u?Sg2{LWU(N~C}kFXdV2+vImG z)NInELYRebEmcDyn|rQE0QNKk)|_6@Ik2svX7FCVoV_2*=6k>)m?xW0+&J?*F5pHuXOpr?tnr!KEmP=4RxctYXQ<*$TzBJg5mHz z4%xLa3*R@YE>Gi#&MH#X_b|o)RCmXE+bC3;_4VJI?Wd!;MU#KJFQIR%UF^foK9dUL z$m5SnN|!eD?QniElBw;}Vxj^x$4E;18k?Y=K?M2KDG4 z`G=;NcL%uagk(QaSnv*4VzC#70=b3WUx)N!l%uZ1o4^~xFxc~xJMV$oQ=P1w$YORYcwxcfz}xN48B+s0nJ*4}41 zbZXt6P36lpnpR)6?eF~bohOvZ1k5az0DlA-o_j5DCKfIYFxb+2zZDXF$nFH3gA7wJds$U%m1D6MXZJy0DXSRVT4yR6a?2|Pn=zSaK^O9a;ZBna# z2Kj8Xc_`8xPKs^nOw<^AJ%R$f(q5%n&W6%54ly)Bq7+MkZnWNm9M-Hv9mLRPz3JSE zF#=ax)DzGeM~C@XfCzmdm4@P+Y{gbFhdbjpyZji@YPysAJ$l5S9}&>F_^&nU5#Aag8m-(~VVD8-u~(Z{1LO-OI3Gbm%*CLD{`>uyXPO8VE`6FL`Yd|Q1i_1| zx|ESO(v_mIWY?wuU4JqzxS#rNR=ix#PK0d8uv0K@Q+ADt3R8+%41%>q(dVbE^%o=b z)}T0t<4Jf52qO_i&g8uy>y1lw-XUC3#b~5>HLEuBRgbgcZ8C~b5fom>ois)%3*Axu zJN4_I#Lf@f*!tn^x=cBZ$qC`S#yibc)7tRpqkKux-#t-~D0rqFJb))L^6;&J4Kt{! z19y{91QNA zJ9UBnJj++4hO^}MZ?Zc4V(DEfp)`)Ex~n6Lo$4`5=GR}@lFdzq+%lTzo;7Y~setwC zDwkLH?Cc;fhMczJ$j1f^UEosW527;yIrdgn@J&l@{oGet+RLop8N^PI31fvc(-|D+ z&Q$}hG*$pW6-QQzS(wU$dcTA(;oE}>v$1+i&5pZUMWU4hdFscdicj%u$*O#$c%Y~= zz{6mNFD}Cv@K75PzUa)JM*{-_TCd4G_Z1qaOh46oo-^QXzei-^A9Y+)?;S2K>~YBy z+}ILw7eg^H0#qeIxG@zz6Ol$94>(ile^!eJRST&77qCMtf@YTc&)dVIGOCaoI5@bP z+6HPrCnX|1MsVwvXdin57@N38dLtzzO2d#h>%>8ugjZ@|$ zNNxKOglz9>$)xF;xK@F0s7-9QrX&w%gDAJe1*uLa>cCa*uv^d)Y$I`qT}!jZWOl_v z4*NY@;e#I%Na{;c64x5z)%&o3-R)YTFoeJpuNw35ir$WxSecct&w~9V7$aW{f&Bw& z;V(J?B-u=v+Aqdr8mJ~0rKHe8E`qpWU-|b*e&R@07UuvX#%Uee)7bS36y@(dPy)(nYQWH;gRJ z{opy`u7--#<23_HmXTIZYfWDVPr3$tJOa2#oL<6$9K?aGhcIln-xv`P?+eVZNs8tA zYhflLy&|O5)Z#?NA;&>@k~&!@`(j2$yy|er8ILn=<(5sFe`(&BgokigxT|zCW?q0K zZt&Uptu7PwRF0I|v3?+hmE!LWItCDm+GOk}6hRifPKp z>Vxf=hLU36f1n`fe-cHA0A#tUj??Kju)LpH`ZJq2XWtH@B}K9Pr1pqaXHxxseSAsa zj2xE!M^L>%8OSQ)^MQGP|BLcgP5x2;RafB8rvrpN_qkL)G2JgWR5*-a#O!q&~y6zO@zeO%L*chLk-`HC4sI6QD(B+MhGe@ptJ!k-GmSRHB zo2gC>(5&QYl z9{qe4_6QPUBz)EZZ1FSknVZAY2Qnhxs!+l81-Ac{oDB_P5z%81{pBj{Ci=m63WxSO zE_$a?o9k^(QyfSK2MA(EtLjkfBj!tPBmc9|YQ^AK84qWQ_&q#2w?-6(D`xuO$9H&e z@u2dRSBX6wkJX}6`zdihUgs$8Hyu}0-IDzXY4PyJXd3zt1ePEDYH!G6o;RCFM{hv% zk0Ei((l)d3^|9LAzK?(MuMvzoGYKzf`?9o%sVk1p2AMu2RGgE*z>1r-{;7_J?9mS= z#sCor`9&FE4YMh>C>U@N;xVpZeOmqCXzARctC32E7(z5!|k+Z9ae6k z8eoy9q5a)73ZtTKz(J=1TJZ?#e!X8*tHA!1rTpisXty$B@1kUBB&4`ga) zY1BePhesMhx0aFdoB9^5J-_p&Ao~pC<emPaDHecf&`*sEf=slCV}F$|gEd&iam3cvFg0-_ z8=vJ!SuuhrW4ROb+UI@rmE6eA(6?W0Fh4nCq8?^%WC0xc#dgJJ%U*&kimcAgnE_LI zn1bpRv#F3a6(KPB^-tMGImL>uoi7#=>^J$NX%;n_5!-ThkplIshxGN@Kqb&h1CN=U zddzlhoyV_0rls*=vu!vok(Q@llL9Q@8`$RyZ>&@kP^l+i9Il^WYhevpD>nIAyqghx z7<^gDUH!YcuD-R!xqXKsb8Y4W|TEF$Hw+9=R>4#Z1?7~+E@|lB?PfO;$G`jbN*BnfmQ=| z0LU;0I1u47UW%T@0eH`*$>7F<= zN=I(3vBs*B@7EH(LOR0m>VyuGj_krS^VKk7|NRcn%6LmL>WPB;r>-Y%-8tr9%53(# zoc9lxfbc;wqpm(~fT);t#zds+t@X7!W3sRn;k@z25nBAeTOG~BG&@f%vPpwHbsn2Z zz3@ZS$E_j{$-F8_5W5l~5%-Ooo_(7B636lm`(EKdSB0n0W_^_Bj%~LbNBLB;e#~+C zw?Fb4cPR}Nrg#@vg(iwg*Gf&k{OJne=A5Gu^XU-u1Djw21n)BX9b?<+%qoMyw>SaAs| zB5~6}ohaC zxWxKep1>MU-^9x&wCRLP@wkTmRHw#{+yzs`gZst1W@mtZNU5yA~Bw$c*4M=vF%8$O{twrF!8IS7g|<)DplE9Z=!yHilbny+8l{nj20% z(CGP~$~4WVtjJ<6s2jTe=>~K7#_C6qfaMyITLVMRu?~CAE1jM5BIu{QicLD!s8`HX zT*95yHdms@d@Vb5qWN}>d8CyoNJ=ZK&sgU~YZ<122wqjV-A@JoiL9L}rOidMB_+9* zw=o6s;Lm4l?P)rjkj#T$`6JX3*W63YSsv!Sbn)sv5bF*UbuLYY3qrh9;xKn6&EQ7w zA$OaHJ_B2QR2GNJca7L*Y=&QS8XzL25`+Mf1)BdTHVSOF(x3gwv2`r357}{>-Q0cx zAs;Jum!+!Of>4%@Fh4Q3H8w6Nw~YH8{~=AbV^a%4LEevoiIhTM1^SC}*v;~eFPJ)U z9eF#Rkg8I9I8-QM)#^3QotRVE#I3;zRlj^ z0!Iq*OE1c`HEO}hC1d0D-g1tLf?5$G8x7?=FoD5M{RNZvUA2y5cO5)!KZ9e&HpTbx zhSHZmFL0x-({7S=9HjR)0UsLkHFx$X`Qe%+AypJ&Lkyi*kG$8WPSaUNU- zp)oQ?Bgs-RSkLrJE zVfTwVOrK4EGwI=o`B(yOuyVOl2t(GV=n+wE^gxi)0hIAo+0$qyrXXRHlpwDo01hb* z+ShCTrlaen$qMz-vZ8n$Lfz|_ptlb6Zub|~0TLlg%O(7^=%UIyU;&@=hW=`r! z+Q?SszuiwZFIY#wN&RBIF}QX-n?e*~sI)igTXwL0HyL3GV~0vBz(2domkzy{5ezZP z3ETLpLg_>q5i8FC0!{#Kw^CsExw{f?U(-4oFa4#eSL-BTj&+Rt32%wyvdbzYm`fE7XU40-nB5#9&Vte+aLf<8NY0u#% zlRTm(F-H#8zwxXux73JfWZsP1%AP8^2eFa0sq^`|USz?JL@_`gYc^o*Qb&#WiL)HF z-KzT-v4PENb&laGg>4qY_d-u9hf7I| z#F?uQ+fVfoRMMKJmoBSe`v{t~ST6tGnoBVE?}&r*)y?Lg_kTE_az~fVgQzpkS8u2F zF6KV1E2O=*Y<^hn_x$!lG!V$RAlkT@&Gs&oz4I;kvRM1JQ^FkchwBEDb9YRoqjv?- z3{vZN=1*C)W_(}@uJZid&8Rf$ydUi`t=P`zn3;+U>n>6*sAx$l9Ot`xeMi@{B|$9O z=Qc`y`5-(-_WH{2$2~wOsd91hD_3;PW&%=NgWz&Q4@<-?V`RivIK_ZN5BK3N;T}-Z zPY36!+}HNDq%^S}-xAWsUiK+9$eQ zso3x#l`kMV?pMfiyR|#EOMtKTA)9KNUH^xR4eB13VcKl$D>$N%X0^C7xmaUhISZyJ z7+*EAyk8w{EkoeH6TrBX9UD0?hLycl{axK~FFu)YW-VKrV)6I$j9WtYv3(=eF!p!j zuv$(?;M?Ywg}6h?Sv!P0qm>G-_?Ugv49-xbH>sCZoRv{o)6GZU>up;7ne@o$bqn28 zg+7SHA$HknYm}HN?o#$4<9UWN?oF?<%eU$zZ}X=e!GTLOe&X*N7789Dl{e8Rrf<#u zx&Z6jzujJGx#O=%3YfWZ0kR4g{|`R6ZxN=-xGSnL9)&W?5Y)0zrhDSj(TKztClZx= z*K_B0%QXM{qlQOEcsdw$iB6P#8ul$O0IWVoJ6gI|W-0rH^IKnd!?!ky7_*B*^*44Y z<1@DJRu``4vw3lt--bO4a!FWPyLti#i|mz$rUHOIt6pDw%vF-!a8c*r)hGxe!_;Rs z&R|8=h8>grCR9=$7Yi!@kLu!rz6H{jpoXa|^JEK~HDu^j*cJZ&^ZjClxB2-`9zNtu zhV&g56q2ngn|(M!80a8V8A#edQrF%a4Rx9m8%-^((U#a7OMlFeAV}fHM2lDTguZtL zL?-Q@za)sW#cha$dlbw*S)N30^6k0Pb1t@qP}F_iU6jsAn&P+|wW90Kn{9@#2IEvj zMTSs(?)E^WR439nL;H|^)T1imjO*iXx;0RnP(R8S!K;#>YDS+wft#e<5>zSeL*fP( zA>P;LGNM#+vneXRv5Y;SQMhl^eak+&%O7cxJhBzXn5D0dP&adIJ4m1!z1LW-G9~z?q0g4sap~Vv>?0q z`aa6SdUf-8Q`O&pp(^A=-)}9_7Cau(W?kfn4*@?S5_NJ^RVYU69N7K)M*aG?5FxM! zG35Iy!_%rdMm&4M6V;QLMh~JaRBl|3|Pr?xcL>Mc- ztIKdI!m%4Ty=mZl!WSVSIds6)x={(V`@*M+YUNaD_-q6#wnEA?`(go5zrg99^f3p1 za~vB8gxC7VTUZQ&S3qC;Vnqtwt<2CfrB%&Ofb8dSXow7}d!EPms@Xl7bcCEow&bOS3mrlU3xRy% z<8%A6q1hybDSo`6n-wH$6gUQcCkvEnTFwjioN|XCZg#$JjH3_cUJdH8TWt13o=11e z;nId}wY=3XW-BKW?iH%dFGe-PVlJa4Mvwjqr7Q*4tzzezyUH^s#7(`qc!s;uj1r{u+(;hl^Sv5i78z1EY_ zi0jjVLYwm&L%wWG5=>D*$Um8V-Rq>2NO4R_^`FmwDg4LG*NB*0?_6NQX*Ea5QSZhU zbdgQGIP0^dFiFXH4)4)@|8FMvpnbkXV$9cm;?pRSvB2v+k`aVQao^UspDus!PCIQm zjo+cliBWdmB3_V;4FMAB!&SL7QBFgzYPV{;%Zj?jak=A0VVlc~t$B!pnN)Epl@gC1 z{PSmrnMR15_;1lanx*{ZV@J4dUV^k!I8Xe|7oBRAo5JI+zE}C@-%aOF2|iC9y&mcec%-@S&Ud& zKn?XEk08dV!q|U0-rp;ac|Y@AT&s_NxzVYRsW^VeFcq)*Jqe&L?T^*)2j3mkCV+v`%$%QQK^I6#*GY)y`PI8ro-WnazmIv{uo%2}9-IC{0X z+3@UlJVp3%;3RH?&uGD${ZB^hR*14yWw2_{7XQ!})uwP7v*EI)w}H5!hCm+L;jU5Z zw%kBA{n}bxrazGV5`FXn`Bn;;2XM2&-y6)r|C;umu0`ze87Xx}TURY3F~v@^_lWV_Kect0QRi;0>9-7>=OV#0jPk$N+{}dr7H3^O@T4PpiaIb^a z_M;f=2cv}OLXbkBGZkWS(HZ*P+t4@<=kb1e=`j*ZA&j4~p1%PGurjIj)eLu}XW}+9 zQ4G*qQf&oY_K(pfokhn-AHl7)wh|J{Mn7syK^hY5e}6JxYDuPkdEOADKs(dSP$KuN z)=NMt*i1M3DLJQVh3D0%cLhvs(s=uUQISav154P@9f*92x-L!on&o1_)jZXma)`E6 z>66Y0q&x9fgI0vgQWb55d@26jI=v;Q)c1@^j}@dGnYAv|Kc?#APIkt~$` zjP^HS6yLU=4cz*9R|75G(-q6)B}k84NqLjK8r0mYO@=@tmnHVc%T=y68XMPq5dU5_8lcb-}Dl9 z++<8wAJ;Lt22W2?w1A7R(hhtuf ze5_dP?%YWC2gicR%AvI}h1J4Kzv<60=@rEPjK;fMrRt$IeZIC4EEnYWqWMx1oRC#d z=Z-(?-L^-4dagbYY7w^)_qbIX!DCE=uJL0YIr=W{Bm$(v{FBp!fdf1IAr+;+lY7LB z!-@fU2e?3kv3LWqyr27{8%wo5!a#e$fGKZ}d(D^K{cT=3<_g~6vc~woBlHH{26|1mZ#LiTN`-FaVO^AP#i{JZ~qV$SF zF~cn8)X#6^t9LG1!l8YC_7N0OzD$gkxr_NVQ_iF)aD1D3F0AbZn~o~I(=$W7BWN9= z6m{HAl%5_8qfgU`Lo)SutYI9mRZqia7J!dj3fRS$3Kg0{bTjR?uEJe`c6?J+p>;j4 z3^;}SM*ivcKALRMPF=>bZ-I|6g?S6L?M8TYQ7JtEn>Km`HG;2f*S;w~f@tL)CLcjL zZ8i#jJY~G|vCUz42EEShZAQJ3r2efs|NXA_^Ba2KV;GnamC%sYF#`@l?*Rs;_DuJx zM^L{HtPnl=e#Za&g0E9X#HDG5z`$3W!m>Wv!iMy#IcR{@S$IE+D7Dwz+J$l9OWRM! zB#05R@Fbywnk~2S5fn>hayhv12$JRx1bUG-AUOaP_xcee$-gz}kIKs0^O-hp%hQdU zv#G(Wo#!-WTw!!yBjL)OySyw*uM46qjWok=xaI2+=4exliXwp_V3{W4k08{u4-a0+ zH~2Y4uznTT?IrL>f9>EOzR={?h9~6PBnc+PR2qF^Y$j!mdYC5cUOf_@4#MQeF zu41K+i7Pwl&%}3Cw|4sR!4a{e$BW+Tw&V^d$twgye`5OJhd$_- zkjO`YTbqsqa5@2-sk5(^{~O>b)*U~1m^`Evv;fZ2=ts~>@{NL_gMLkeMG4VG;$2)@ zV%<(ip`@X?@*H-cW*^=t?nJuZ+uD-PPKNr73hen5y25U#xoF+QYZJNZn9vx9%!3FZqQJbpE zgTZhdakijw@CFinQ*i=A767lMp~=mgRr0dsu#Wl(r~cfl-Ful5BO9NjH!J3v05PMQ z*G$P0o@IheI~xJZ)(9e04B1`Zam`(TN84znfg6ffy+)!VY&U?)=nb9%@TfFzb#<`h z2RQpThm-l%Rz2Nc?2#^iFyfuGU_dTX<~z{L1f)~5NO6Z{A=o&d&JSq3{Fc*SMKG;7n1+ST2?;_9B* zWQ;UI8!bA_82)dF_N=JrLVtN)aTSupv=)Q}8zx-b>N4j7E&mIXOJHT#=_^0{fEEMB z)w7ViZT}5WfP6NRsj1$WWRPyiDhK&Zrw-J5xb!l%?qRlBdax_SHm64rjZQmo+ZWgsdQAP%1*^3XnRU_mw;XKLKc!{T32(rqA$zJT_EPdn}m*1%_2aO9ObzklZ}}Un2O1C(ap^0NV3clSpTab zbYrJsqh*@z(dfZP+p9Bro8GpVR3}o|(?lx<#voarc$?;rBG%(35ckRc!2?MY6_Gcv zPb&0!$8i?jT<6hdb}n{UP(C*?{tdeBAgG3(2;KMnNZ-Q{>ll^o zm<}_3+PQ0_(**V4Os6SevP?SNj!?_{7g4Zwj|#<(k;biqax^Hw_W%E)mQK~dZeFvu z@2>-oP=>>Gs*p@WKu(4=-Z^o8OD9bx>20D`X>CMLkgI$GH9Av7*Mj~jr_;Cs3-?(< z;E;nj_bi3PWiSL?vibmIWsVm#Q&#?WI|W_?-*U}5$(j zsVpvcB_#uDyO?ZCQ-()-Ldt5S0!i9qd5TZ8dy6A0!4a$)+?4CzN^XQ1V^&`_{DkH2F86+!W zYHDf`goy@?M3`dA+h2k2oEp zB3hbmDl1=q<~nGZXwd;Nm#6f)y-jP+gZ1b}ExD5%*v_Wjr(Z;iAA$D) z^wD3Px-$QB;I-&QqN7UUbu1#iglM1J3f4Ez!70M@;A z*`JPbABm2yx8D$hfn5Y*n>33C<36~f6ZfPzWp=z161M>OwuTvv_!UpKZbg9jS#u zTK?pm3mG#}sJ^6C6F zU@ao$mF;$hWwNz=9jI=A@dEd!KMz1-T!p+y(`gTzaBvzu-HnTV6>RY z!wkA^I#_AG-gRU3n56i7)(D;GXbMxn20o4~_rTb@n&((NL-CBJc+SpC7^|oJMgI5T zBU%)j0B76-_?K?3k|&h^Ralc7^nKDi4v3Bjmto0wdgL8yRb{~C4T&K0@*c*X+~@O| zYDe(K`s_*R3Jq{{DFDt#kD!#Yl1k^sdruMWTs`F3uisb?zhIdkuCxnt{XL3Sy(jGw Om9Ispg|5Jl^Zx^AxJp_8 literal 0 HcmV?d00001 diff --git a/admin-ui/src/app/assets/page.tsx b/admin-ui/src/app/assets/page.tsx index 364d646..6db4f2e 100644 --- a/admin-ui/src/app/assets/page.tsx +++ b/admin-ui/src/app/assets/page.tsx @@ -1,7 +1,8 @@ "use client"; -import { useRef, useState } from "react"; +import { useMemo, useRef, useState } from "react"; import Image from "next/image"; +import { useRouter, usePathname, useSearchParams } from "next/navigation"; import { useQuery, useQueryClient } from "@tanstack/react-query"; import { Icon } from "@iconify/react"; import { useTranslations } from "next-intl"; @@ -20,6 +21,7 @@ import { import type { Asset, AssetFolder, TransformParams } from "@/lib/api"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; +import { SearchBar } from "@/components/SearchBar"; import { AlertDialog, AlertDialogAction, @@ -47,6 +49,17 @@ function formatBytes(n: number) { return `${(n / 1024 / 1024).toFixed(1)} MB`; } +function formatAssetDate(iso: string | null | undefined): string { + if (!iso) return ""; + try { + const d = new Date(iso); + if (Number.isNaN(d.getTime())) return ""; + return d.toLocaleString(undefined, { dateStyle: "short", timeStyle: "short" }); + } catch { + return ""; + } +} + function assetPath(asset: Asset) { return asset.folder ? `${asset.folder}/${asset.filename}` : asset.filename; } @@ -54,8 +67,15 @@ function assetPath(asset: Asset) { export default function AssetsPage() { const t = useTranslations("AssetsPage"); const qc = useQueryClient(); + const router = useRouter(); + const pathname = usePathname(); + const searchParams = useSearchParams(); const fileInputRef = useRef(null); + const q = searchParams.get("_q") ?? ""; + const dateFrom = searchParams.get("_from") ?? ""; + const dateTo = searchParams.get("_to") ?? ""; + // Folder navigation: ALL | ROOT ("") | folder name const [selected, setSelected] = useState(ALL); @@ -86,7 +106,7 @@ export default function AssetsPage() { // Copy with transformation const [copyTransformTarget, setCopyTransformTarget] = useState(null); - const [copyTransformParams, setCopyTransformParams] = useState({ format: "webp" }); + const [copyTransformParams, setCopyTransformParams] = useState({ format: "webp", quality: 85 }); const [copyTransformLoading, setCopyTransformLoading] = useState(false); // Assets query: undefined = all, "" = root, "name" = folder @@ -101,9 +121,28 @@ export default function AssetsPage() { queryFn: fetchFolders, }); - const assets = assetsData?.assets ?? []; + const rawAssets = assetsData?.assets ?? []; const folders = foldersData?.folders ?? []; + const assets = useMemo(() => { + let list = rawAssets; + if (q.trim()) { + const lower = q.trim().toLowerCase(); + list = list.filter((a) => a.filename.toLowerCase().includes(lower)); + } + if (dateFrom || dateTo) { + list = list.filter((a) => { + const iso = a.modified_at ?? a.created_at ?? ""; + const assetDate = iso.slice(0, 10); + if (!assetDate) return false; + if (dateFrom && assetDate < dateFrom) return false; + if (dateTo && assetDate > dateTo) return false; + return true; + }); + } + return list; + }, [rawAssets, q, dateFrom, dateTo]); + // ── Upload ────────────────────────────────────────────────────────────── async function handleFiles(files: FileList | null) { @@ -233,6 +272,15 @@ export default function AssetsPage() { } } + function setDateFilter(from: string, to: string) { + const sp = new URLSearchParams(searchParams.toString()); + if (from) sp.set("_from", from); + else sp.delete("_from"); + if (to) sp.set("_to", to); + else sp.delete("_to"); + router.push(`${pathname}?${sp.toString()}`); + } + // ── Upload hint ─────────────────────────────────────────────────────────── const uploadHint = @@ -388,24 +436,49 @@ export default function AssetsPage() { {/* ── Main content ── */}
{/* Header */} -
-
-

- {selected === ALL ? t("titleAll") : selected === ROOT ? t("titleRoot") : selected} -

-

- {t("assetCount", { count: assetsData?.total ?? 0 })} -

+
+
+
+

+ {selected === ALL ? t("titleAll") : selected === ROOT ? t("titleRoot") : selected} +

+

+ {assets.length === (assetsData?.total ?? 0) && !q.trim() && !dateFrom && !dateTo + ? t("assetCount", { count: assets.length }) + : t("assetCountFiltered", { count: assets.length, total: assetsData?.total ?? 0 })} +

+
+ +
+
+ +
+ + setDateFilter(e.target.value, dateTo)} + className="h-9 rounded-md border border-input bg-background px-3 py-1 text-sm text-foreground touch-manipulation" + aria-label={t("dateFrom")} + /> + + setDateFilter(dateFrom, e.target.value)} + className="h-9 rounded-md border border-input bg-background px-3 py-1 text-sm text-foreground touch-manipulation" + aria-label={t("dateTo")} + /> +
-
{/* Hidden file input */} @@ -458,7 +531,7 @@ export default function AssetsPage() { onPreview={() => setPreviewAsset(asset)} onCopy={() => copyUrl(asset)} onRename={() => { setRenameTarget(asset); setRenameFilename(asset.filename); }} - onCopyTransform={() => { setCopyTransformTarget(asset); setCopyTransformParams({ format: "webp" }); }} + onCopyTransform={() => { setCopyTransformTarget(asset); setCopyTransformParams({ format: "webp", quality: 85 }); }} onDelete={() => setPendingDeleteAsset(asset)} /> ))} @@ -506,9 +579,40 @@ export default function AssetsPage() {

{t("copyWithTransformDesc")}

+ {/* Presets */} +
+ + + + +
- +
- +
- + setCopyTransformParams((p) => ({ ...p, ar: e.target.value || undefined }))} className="h-8 text-sm" />
- +
-
- +
+
+ {(copyTransformParams.format === "jpeg" || copyTransformParams.format === "webp") && ( +
+ + setCopyTransformParams((p) => ({ ...p, quality: e.target.value ? Number(e.target.value) : 85 }))} + className="h-8 text-sm" + /> +
+ )}
{copyTransformTarget && (

@@ -612,6 +730,13 @@ export default function AssetsPage() { {previewAsset.folder} )} + {(previewAsset.modified_at || previewAsset.created_at) && ( + + {previewAsset.modified_at + ? formatAssetDate(previewAsset.modified_at) + : formatAssetDate(previewAsset.created_at ?? undefined)} + + )}

{/* Mobile: always-visible action row (touch-friendly) */} diff --git a/admin-ui/src/app/content/[collection]/[slug]/page.tsx b/admin-ui/src/app/content/[collection]/[slug]/page.tsx index 056b91d..39169f7 100644 --- a/admin-ui/src/app/content/[collection]/[slug]/page.tsx +++ b/admin-ui/src/app/content/[collection]/[slug]/page.tsx @@ -87,7 +87,7 @@ export default function ContentEditPage() { { label: slug }, ]} /> -
+
+ ); + })} +
+ )} +
+ ); +} + +/** String field for image/asset URL: preview + input + asset picker button. */ +function ImageUrlField({ + value, + onChange, + label, + fieldError, + required, + readonly, +}: { + value: string; + onChange: (v: string) => void; + label: React.ReactNode; + fieldError: unknown; + required: boolean; + readonly: boolean; +}) { + const t = useTranslations("ContentForm"); + const [pickerOpen, setPickerOpen] = useState(false); + const previewUrl = assetPreviewUrl(value); + + return ( +
+ {label} + {previewUrl && ( +
+ +
+ )} +
+ onChange(e.target.value)} + placeholder="/api/assets/…" + readOnly={readonly} + className="flex-1 min-w-[200px] font-mono text-sm" + /> + {!readonly && ( + + + + + + + {t("pickAsset")} + + { + onChange(url); + setPickerOpen(false); + }} + /> + + + )} +
+ {fieldError ? ( +

+ {String((fieldError as { message?: string })?.message)} +

+ ) : null} +
+ ); +} + /** Builds form initial values from API response: references → slug strings, objects recursively. */ function buildDefaultValues( schema: SchemaDefinition, @@ -296,6 +444,9 @@ export function ContentForm({ if (!isEdit && !initialValues?._slug && defaultValues._slug === undefined) { defaultValues._slug = slugPrefixForCollection(collection); } + if (!isEdit && defaultValues._status === undefined) { + defaultValues._status = "draft"; + } const { register, handleSubmit, @@ -452,6 +603,39 @@ export function ContentForm({ slugValue={watch("_slug") as string | undefined} /> )} +
+ + { + const value = (field.value as string) ?? "draft"; + return ( +
+ + +
+ ); + }} + /> +

{t("statusHint")}

+
{hasSection ? formItems.map((item) => item.kind === "object" ? ( @@ -1021,6 +1205,26 @@ function Field({ return String(v); }; + if (type === "string" && isImageUrlField(def, name)) { + return ( + ( + + )} + /> + ); + } + return (
{label} diff --git a/admin-ui/src/components/DashboardCollectionList.tsx b/admin-ui/src/components/DashboardCollectionList.tsx new file mode 100644 index 0000000..8c7802c --- /dev/null +++ b/admin-ui/src/components/DashboardCollectionList.tsx @@ -0,0 +1,132 @@ +"use client"; + +import { useMemo, useState } from "react"; +import Link from "next/link"; +import { useTranslations } from "next-intl"; +import type { CollectionMeta } from "@/lib/api"; +import { Input } from "@/components/ui/input"; + +type Props = { + collections: CollectionMeta[]; +}; + +export function DashboardCollectionList({ collections }: Props) { + const t = useTranslations("Dashboard"); + const [search, setSearch] = useState(""); + const [selectedTag, setSelectedTag] = useState(null); + + const allTags = useMemo(() => { + const set = new Set(); + for (const c of collections) { + for (const tag of c.tags ?? []) { + set.add(tag); + } + } + return Array.from(set).sort(); + }, [collections]); + + const filtered = useMemo(() => { + let list = collections; + const q = search.trim().toLowerCase(); + if (q) { + list = list.filter( + (c) => + c.name.toLowerCase().includes(q) || + (c.description ?? "").toLowerCase().includes(q) || + (c.tags ?? []).some((tag) => tag.toLowerCase().includes(q)), + ); + } + if (selectedTag) { + list = list.filter((c) => (c.tags ?? []).includes(selectedTag)); + } + return list; + }, [collections, search, selectedTag]); + + return ( +
+
+
+ setSearch(e.target.value)} + placeholder={t("searchPlaceholder")} + aria-label={t("searchPlaceholder")} + className="w-full max-w-md" + /> +
+ {allTags.length > 0 && ( +
+ {t("filterByTag")} + + {allTags.map((tag) => ( + + ))} +
+ )} +
+ + {collections.length === 0 ? ( +

+ {t("noCollections", { + url: process.env.NEXT_PUBLIC_RUSTYCMS_API_URL ?? "http://127.0.0.1:3000", + })} +

+ ) : filtered.length === 0 ? ( +

{t("noResults")}

+ ) : ( +
    + {filtered.map((c) => ( +
  • + + {c.name} + {c.description && ( + + {c.description} + + )} + {c.tags && c.tags.length > 0 && ( + + {c.tags.map((tag) => ( + + {tag} + + ))} + + )} + +
  • + ))} +
+ )} +
+ ); +} diff --git a/admin-ui/src/components/Sidebar.tsx b/admin-ui/src/components/Sidebar.tsx index 98fb8ba..4d134db 100644 --- a/admin-ui/src/components/Sidebar.tsx +++ b/admin-ui/src/components/Sidebar.tsx @@ -9,7 +9,8 @@ import { useTranslations } from "next-intl"; import { fetchCollections, fetchContentList } from "@/lib/api"; import { LocaleSwitcher } from "./LocaleSwitcher"; -const navLinkClass = "inline-flex items-center gap-2 rounded-lg px-3 py-2.5 text-sm font-medium min-h-[44px] md:min-h-0 md:py-2"; +const navLinkClass = + "inline-flex items-center gap-2 rounded-lg px-3 py-2.5 text-sm font-medium min-h-[44px] md:min-h-0 md:py-2"; type SidebarProps = { locale: string; @@ -35,7 +36,7 @@ export function Sidebar({ locale, mobileOpen = false, onClose }: SidebarProps) { c.name.toLowerCase().includes(q) || (c.category?.toLowerCase().includes(q) ?? false) || (c.tags?.some((t) => t.toLowerCase().includes(q)) ?? false) || - (c.description?.toLowerCase().includes(q) ?? false) + (c.description?.toLowerCase().includes(q) ?? false), ); }, [data?.collections, search]); @@ -54,15 +55,19 @@ export function Sidebar({ locale, mobileOpen = false, onClose }: SidebarProps) { const isDrawer = typeof onClose === "function"; const asideClass = - "flex h-screen flex-col overflow-hidden border-r border-accent-200/50 bg-gradient-to-b from-violet-50/95 via-accent-50/90 to-amber-50/85 shadow-[2px_0_16px_-2px_rgba(225,29,72,0.06)] " + + "relative flex h-screen flex-col overflow-hidden border-r border-accent-200/50 bg-gradient-to-b from-violet-50/95 via-accent-50/90 to-amber-50/85 shadow-[2px_0_16px_-2px_rgba(225,29,72,0.06)] " + (isDrawer - ? "fixed left-0 top-0 z-40 w-72 max-w-[85vw] transition-transform duration-200 ease-out md:relative md:z-auto md:w-56 md:shrink-0 md:translate-x-0 " + + ? "fixed left-0 top-0 z-40 w-72 max-w-[85vw] transition-transform duration-200 ease-out md:relative md:left-auto md:top-auto md:z-auto md:h-full md:w-full md:max-w-none md:translate-x-0 " + (mobileOpen ? "translate-x-0" : "-translate-x-full md:translate-x-0") - : "w-56 shrink-0"); + : "w-full"); return (