From ed7699fa69b6e6143632f16e88e25ff23d1e4769 Mon Sep 17 00:00:00 2001
From: chengke <404835780@qq.com>
Date: Thu, 14 May 2026 17:57:47 +0800
Subject: [PATCH] docs: update readme and configuration instructions
---
README.md | 71 ++--
apps/api/.env.example | 59 ++-
apps/worker/.env.example | 54 ++-
.../app/services/document_agent/__init__.py | 15 +
.../app/services/document_agent/manifest.py | 137 +++++++
.../services/document_agent/tools/__init__.py | 15 +
.../tools/classify_special_pages.py | 172 +++++++++
.../services/document_agent/tools/llm_json.py | 28 ++
.../tools/probe_sample_pages.py | 208 ++++++++++
.../document_agent/tools/probe_vlm_inspect.py | 161 ++++++++
.../tools/propose_shard_plan.py | 361 ++++++++++++++++++
docs/assets/step-1-parse-build-memory.png | Bin 0 -> 1160564 bytes
docs/assets/step-2-agentic-retrieval.png | Bin 0 -> 1097486 bytes
docs/external-services.md | 59 +++
.../shared-python/shared/core/config/ai.py | 6 +-
15 files changed, 1242 insertions(+), 104 deletions(-)
create mode 100644 apps/worker/app/services/document_agent/__init__.py
create mode 100644 apps/worker/app/services/document_agent/manifest.py
create mode 100644 apps/worker/app/services/document_agent/tools/__init__.py
create mode 100644 apps/worker/app/services/document_agent/tools/classify_special_pages.py
create mode 100644 apps/worker/app/services/document_agent/tools/llm_json.py
create mode 100644 apps/worker/app/services/document_agent/tools/probe_sample_pages.py
create mode 100644 apps/worker/app/services/document_agent/tools/probe_vlm_inspect.py
create mode 100644 apps/worker/app/services/document_agent/tools/propose_shard_plan.py
create mode 100644 docs/assets/step-1-parse-build-memory.png
create mode 100644 docs/assets/step-2-agentic-retrieval.png
create mode 100644 docs/external-services.md
diff --git a/README.md b/README.md
index 81eacc358..2b25fded4 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,3 @@
-
-
@@ -45,42 +43,33 @@ Knowhere is the open-source infrastructure for unstructured data processing. It ## How it Works > [!TIP] -> **TL;DR**: Knowhere parses documents into structured units, maps them in a graph, and lets agents navigate that context to find and cite reliable evidence. +> **TL;DR**: Knowhere builds navigable memory from messy documents, then lets agents retrieve and cite evidence from that memory. -Knowhere turns raw documents into a structured memory store that AI agents can navigate and cite. The process follows a three-stage pipeline: +Knowhere turns raw documents into a structured memory store that AI agents can navigate and cite. The process follows two steps: -```mermaid -flowchart LR - A[📄 Document Parsing] --> B[🕸️ Graph Construction] - B --> C[🤖 Agentic Retrieval] - B --> D[🔍 Vector-based RAG] - C --> E[✅ Cited Results] - D --> E -``` +### Step 1: Parse and Build Memory + +
+
+
+
+
|x{e>CpDej2D7 z|Iu{J+|;=bt0#?|(?F7Qe^F$wpMFhw^SWq3k`ESXDwAu+@Ae;!|3{$J4Lkaz7e(D(FNeRiWY{M{wP?KFQCO(>LLM_pue zt&5C*I5G5x1wk+g#v!3`dZeboy~SusYH~`crrsE+wBAUlG}68>G6EeDk=S6_hx?7( z k`_*xHiJyc{V zIspal$3>K)(Wv>`ZA}Hjh?x&c##S^xwR>QWs7a(}(d_HirUgTOOX+x~r2S&zJi(Hr z?98Xmv^{qWYc7oBTT`|AlMnoHlQ$TvhoCbj-2Ak+9zL+P%e7vZo|_W%qi3}~E}YkD z&!*w{#>}4-5ShKT{>M2XW&^KUxg=8Gcu3o%tE+ObcZ$|rTQ+Ndlc^%^GwqujLzb5D z&)K*CysuvO!)3b*&rUOMRyX{~Hpc-$JuWD9<87zq6{uj_fh J3i;t}qV9<%iI?lb2S+pXFb z^Ml;pcAmw1IIbP_STwIDA`*>4FDXTv0U~-R9zfZ)2^#%5Dgr` vhiUKFnzKjzY^~Z0ie|C*PLv4|+jiQ=IHLaPSC_LNn=zPx`cAP(%v#hm6?1LI1 zj}s6Gq9P-rE1{Orv0vtijQVQQ$T$f9=cA~o&he=bOwH31AbdJeZy=|WNhEO4&txQ} zgL8H;I6Xx+fP-mYJ0l3H$kGTjs+2O*Zfw7ZjB5S-?c-Ly?dO*FYe#%(wzoQ&X0m1- zfBE6GM|J(@>0KYZF(qH4GkU+N7hGs**R|!?)tjFT|L_ubdi>TwckRW_hy8}k><8U# zl8`~)8hOw?=hG)l>?$Jr+`^dgJXZ1k?PcwihoZF2=DSWmycn80qvuX$(quxtW`v z@@= z8Sc91rxJ&jp?7}Q+~#t$G< {nPOaE5&Mh>+MAok<0KVaoH4@KXxOk7x{ zo7GeBrZP43+j7f|r!7C8pL{+eofdB>OjHe;I;~>Syze7gWmZ()bJQGQ-1Yacv{?H4 zoulK%OmBX#@!)3NJ*g#$y;BbA9oSCAOJ?``soS!ToCh~w=l>S 9v>P2t{CgaGh!- u%5GP%8?Qfm~iQYQl8f_AhiSlLI<-xqKKv%l}nQ1_w0&CsSZD z9s-;UPQ8FuUGu+{|4SqOm6jtAT8;p;3_{{)&rQd-&O6$?n`&$5hjwrBU%kCJ$+Lg? ztR}5iM|P)O*0syv#K?BF^GSCPh ClY z%5_-%gQ4Xwnyq6l&AOIF>d*XMk+0@{-qF~#^xT7q``TR?a&hMg>z;+}QNpRLUb8bo zr%$5G7j)afzSK0Rhi2fV^9D|Jy!(xiofF*H%|2kr*231)GiL`<24CEi{qXYfLospZ zqmC@Twr1wW3h9i?Wpnp$*deL f0*-#)E?C)Zk@>VitYk+w1_@bK^&UCw*eQ>lwle*8m!BIb! zSiSv3@>ce;8x6)?zWKuf+lk!frxTN^Uhlou(i>9VaBq70;Mk#0{x)Mpra0@E^u)*e z*^9gXI(+=uq cqoe=#GQdA(HKf$|$0UOkKVS0Uhwj;hJ&WJX)=z!rRX^H2 zb=}bYgQ4J;lmqgi9kTr=lN$ZYTOeza{!>{KiSBeHw9`SXhtua@OSN!TIYD~Y=V`(W zQu@TTjg_X)gNH|^HALmBULIZDZddn`)ytOuB3#m^>C|7RHjcNR`*r*Z=N+;lrunT- z^Bx&ZT{H2$7q^ =l+$Qt9tdgtlajIBZ|5)Avl*jqRQ9n07v)K zLGvuF9>9 K4IJGus=J~rX21R)~X6B!4u#1Xb89jdLib+2t_%(fQ zMwPvMed#?ruii?h^XwS*!j0JOwn588m*1TIaO~2O%pU`+)^U5^&e}#jdTdcaW%tsg zf-}Fq>U2w*;yB;z`mgc{uI!;LCJwCJ9)GS;Ae2&4bmH;rHf`rltl029T{VAFKCOGB zPx &Zbi_kS_8JO5 j4XmGmTf5P)34*OUS|}`du}^)tWg_$vvW3LQHg&z_LKUu^-X-A zzE2gC(BlTP_v_2wwSQbS9P1vL_DWUy;)kQD7wiL52lw3dV@|K+#@3DVCY^TsK96&D z-m!lr>yW(OjCq{R2iYqJzWgv|TuaLmV#04jY}1XKS3cbKdHdEIbF(=cPCROc9UC#U z*^{;N;)PX5PM}}ndQW=Ynb6= f>*lyc%Arn@t$QT6!fkCD@eyQ_{A>(#(w$F%hw-drub3B=CoblA9w((I6rW z4&)JV$XQ7$i2#wbP-HP04f^e9KACq5+e@*qG|>dI sokIz1KS#T)$gD&dl&yBk2 zy1!pE=J=o$i)YSnG!{E<%Hj4q*UgyRJEo1YbnlFbBwMr9W3BflSNCAzMy!ZC9{7!T z@5u^7zfW6lOq_o=0<);=e&W?163O>Fyp9#loU>`9w=!eMj}lJTg`1vP+do@3x?7Rv zQ$o|GMEcuHR#}T|4EcA Vkh op$WPCI)fKemJ= zyVpwnSj!%8d4PXjr% 33WGv=O{}H`9{| zjdoD$uQl)5G`-#7hz+|~=Hnjpm}!HQ{OBI5*FIkMB6V#bvd@U`4bn+d#>Z1<@YnTT z^Db)kqCUyvdq3OVg0v{(rG9g50t`a_zpcsszC1xz+ig1`%N4{e>y~4YF<-56mUdB; zF8;oFaPI@7j`ww6+BaghH29aL-S17Gtvl30(Yqt#yDL9?fAJLe-n!yz-v}>LfJ -e@ix6cjf{PwJ@;NBf0L{lY4=60E3 zxh_2M`>QsmLo1&?*xUYc- |cV9wIdE4vy;Qoq>f gnifHx0*?Z&NVWE4n>h(8YOb zJAu72yMy>{UbDbeR>!Nl^nGx*Nmbj1g(9L?Zc?A!`{-ob=$riq8+q$mJ`}E8dZ ty!%8jjc0X*-KB73?c}U2Z`&pE6FlAexo;@%v z)li{rqJh8om)KLyFDx{7ra8=SBHjM2ojR-DPU+lbKc5G-YlZ>lGu1I))P$&?4<2Z6 z;Bw1#JD-ahPha+6XUo5t4GR9>B$w7;Z5(F4q_4=OZs7r8YBzZPpuOY-9E|Mv{7HQO zqpbWN(cjpeXSdxtyr{u$-HvOS2Gg(~cF%Jpp7{}~-#Iht#f^Ln_4;(e;~y6rW4P7i zQMeHkkHuv#tgIo}7go+Xp0;4wi=#s>C3L ZFcV1~$oJPMBy}bm!nl(C} ztDRLcYsCfm!P_m*XK+_B)Uo%c{myx7XMNu+cgyQF*nx|QqVFi*Sr-uI|02A|=zW~v z_@JNq;f#An_C5bSo5;jl`1r${ -lg{OOu1 zv) e =Sqn2c{ EtJ9~b=f0w|7-S#hRbUf zHI9WmYp!@=UiR9VP}KYU!JF7uBk)7-wO3~)iv+WO%0D~%QqytO`R4_1e*Q&+KeK2d zrGLjU%+&XzZ@!uu-DT&Z$AUrT0iTI0;nR->H$IyM&PVJU*?Qh~!{LN=i`x#HLwa-b zm(qtiBM zKDT`GqRwi!TuY6ZIi>Qh`O}r jW Tx?xUl$yLez8HS0D zmGRyMU88$N1%8?N*u@gB$7c*;KO9l culD zdUU&(U1v9^5$(~5WlMYI+vacoSlO%oJpaD t)G=@qNiX}@@y}8t@jWKJ7EgRXwDeKyzq!r-GYm}B{*8f&+W$e> z{-f=mS7rB4H{HIv{AR0Fg)3C8FaETCqpfVvjL^%nEltx?-|VSuwKjM6-Z{rZbFSFu zd?L-+JFEH9zQ6XEzkS& 9yz+gOf2q?G?CnbEH!<2~gweMqmKi=^02N4Qtu&l1m*XG0bRjwicHbTxhV zIPaZqy?%KN>DPSR`%i%t1LyX?dKI25m}vamyyPhDL|0h;b28%uH_AEmyrKEVZi&Bc z%ILX8q4lWLH7jgG+daLbYk$>vxDhv&Hyh`B7Pt7=)u|}?s*bx#zr(D5y8Ch4MFG^4 zo^1T$@<(g$N5iH~CfA0sQx^`K-Y6mE1ntehXA|!q-&T1JKOp$aFJ0i163F9i+wQV$ zU**)3tFI&&M!$L=BO2p>+2`r!vL3So84X@VUzt@gKQ^-G#}}<)4^0}Ry+4fGFg9&- zyYEM|j{3b{v& nbmcb9X)I_S56h6AJow9Y0~rl1@$a ztc&$N4AxDuvlYFP`yW|Xx^~3j^&R`RS jU3xM^Ns7At^KC%i 1 z%q6o2ZdSy U3WYi*2Is!|3E?;N9k?9bvMhJfr=QOc zJvDd~W?rM36~SK)Ue3xmTvD$=|GX95_r6!%O%Bzc*m&)u->T2JKe3PLR~VjW-e0@S zuyf#^?_$#1tvhjh+nJ?}FUWSd$Bml*K4VYZtJBJ~j`TD}|3`~Tb$w43JYM&D=KWuf z?#ukJDzK&E3TCh1{@4u(8?eLo4=Xdwi`hK#+OZiQ$FAdVW(+-jfAy%3Eia`n*oAsh zxrw9dIE345N+VH%c`RmdUd-Mj1C`HTMIV%QRJ)#z-rW?#4(*;6vHmco>-_28kLj$e zXOcZl9)5|xeTBB^{e3-FFKDp8KfPwr%Pxjc!T30B`NwT bFrOx<{zvKj#Z-q-EEr96_V4DLfnF{?+)~XRr|E)cauQq8GmZCdBt^U~2 ziH(FC{$=|iaG z+*bocVBwMjP{}^1WDiubGYYdyylul|K?%t`#`% UA#P-5|}ih!|<4Q_;u>DKkGN%9sjvh^e8d5V;uF9u&KLx z7?1zy47SpDWMPNxn@}lbaq=#Q=I0-6xa-pJk`ZTDi3%x)pDo|fZ()Zc5mSecme5`{ zX>fIdZrhud)j#4geywjkN;~gA*Y)D!Uj0J1SANjNzHc@1%C>^f&Djsq3P&d&NsY^1 z(WlQ@is4m@19Rl+`)QM6+a%#_=Ue5ti>%j~L+7Lqoy1REJnx1i^Yf&oya}&=_c6Rl zS0ph`Jf_LqfzX?*-OqYo?>J;z`yuO>2Yb@!Yd;R#7(eQ;bkp5n+c%LvPHS;%$`SG1 z)q)bo#{SUOQRANVyD+lgUb|{?(PT}{v3cU<1?dTyW4bOe827YDaA*pX7SBH@cby0( zu79c?A*i}GVO7J_h}9>1y|*vf6}4{rXkT!}?pCR}j!y^u QypvM0|m9ECfjvAsP1Yy=eabtlUdb$K{|U^{X>Tx z?~NYh?<*Jm@t2k*n)(-@()wrO(5Qu_^^bvH4~IXrg73^=r!lIu{x)!HGgNYaG5Cht z=Dm7xWo!PyE#>3DVd~zBVFtzkQ0dfeCxXA!27g`-YoU@^P|0+N2TmZ=OKTJv(W)LQ zs_FGovV5TYB7XgisNSi>=Y@A}#
iiF(k?>&2U6Po zDSLEOxDSl%bQ0@CThtLkPE{b^n8W%-L?uNfK3zt}oPOKB`1z5UJ1$<6t^Zq52~IGS zpuF1Ragpl^2OMvP+E0G5W9#M(Kg_NyXxwDRi1`P)E&F^~aAz|33!%s8wb-$r&(ELn zI&tP`*SRy<51#Zn!0p*&-JrtJ^=R+v-GAG;Yjxk5rF#eT;*Ik&CUx6>*#C-jH~Xi_ z=lGh!xaqllJdVq*Lk+3dEaxS+f0(!5^m)sfX$K}Zs6W;D!?o$_`^8LSw)OV0z3?V2 zb!VTXJ)X6_^RCOnM$xNwZt8vN_GRJyyFuK+ORMJe>zJ`>HpAcxWb&I#&Y9%C)F7RA z)zbHs@z|+R(cAo{`KZk!IM{`QPW+x+)lw9HG1~r_6o2~i0=xWW@3W6y-kh>2LX}1I z?Yijc7Q2!jIrVAmx?yC)PwO)cFYWbq9lN<2)oiV5u{UAFP}aGt^b@}=jrp}gDf~R> zYR3)m;`5iIo%91!K27M#q0v4mboU?5FV%l6RQBt)l60J?oAb*R#lTnfs`}46mqTw# z*wC}aykZM{>bsfS=AVXMXv*aocm{2AAVVH0ijHMwOP`% zVUvYp7DkB0(_WwTcWJpidHKaNOS(UPn0q^ =dS*JV#$>T-yh@LTAaNzDSrDhnbN4~{ln-HFN^leKAb3gaW7OgMf<`#?WnKS zr=cSzEWo6^@A%bD>#PU(|(J?Pn{`i*)}H|^=; zYYdX|{V$3;ocVtB;vM4(=HJ}fY12Si;cxHe_2?3_d7q$vFUj#$s~0BI%Y$WC4ZYI) zRA_rn8||Jj2cLG~Nt^`V eEwlaCHAX5<$q$`zn10oi~ohRz*k%Nx6S#({jD$TtL{GZe)~yluFS t`6mARf=xYF7Lth*f;(` zs$vkK`vtja-yY7Z&yVJhmX;G}2}cbHwBRs!6{*c=L1F8IQ(GR~Bt$=MHTrom@x7$} zq(fqDv-btDyXWXX9UVPvRLYFLaV5vpqn{}{`>(E8_NZWW+nG^4$+PdBT6Q|6a_W-z zu4_EQ$4i^F>w5Iu(|5OQadNk_kJn{<-=lSQNBG?j>qb?KnZEAw l5}gO`E|>`;iV`Z?^A9dinHSjf~sh4#o}6+53E@s&h9 eKaH<#G@Ja z?Ti<%RQo3MJ9Keu^0?& B;gRiZ1;6=91PreF3)W*r9@C z(Zxxt)dN~P<~|y7>S ZwP!t z;2Q$p5cr0`Hw3;R@C|`)2z*1}8v@@D_=dnY1im5g4T1mP5O}3Qqb3MSr6X2e6CXUn zn24E0qCe;+A3d$tcH@Hn=ZB1HomD*@y{$}U{eCK=3)#hP=JR$Mw)A=HN4}CLs~oGa z6=}B?yqbCUY!czN4|VazoEE<};=P-nbLN3OI&EB=EcNT7v&Q636iz@duUv5C){-RI z&*OWXM_s<16G=?JQ8j$pi^ai{eJJk&n=aJ5KKaSUEK2(4@ArM2H){oILgdGxA5C-5&ohts_0hFcrv^3{ zHUIoYL3~`)!ZAB1V4aW0GontIl%(m^Lq7E1IfB!&`>d{Q?PET~bgxMrwSU*)&O48iEg#)0|J+*9?1*X<>Gjm8nCETmSuyd+mE7d4n5^6 bl%yHHIt)IWynBidt^l?bXjn3_!^V4j@Cb=d}hPkj_8=ymC2Eqk*KIUxDjCJ zb?N9b6gszjbclq`9heNHLyg!fh=J~)tD4=4L+92AZe2QtkJX{7yz3jH%7UVbZO2G6 zdAHE^1}P|BX8r2^DPxb?Yv!dE%yzWPDs!OL9XFN*op*4&%&9?A =m!eTT6b1|sS%Kyir)F$KUKUlLvm#K>BQ9a0E=E_PVkTEL zyR+>`f79Hf@$}-TG3E_G7Zi{QRb7lu#EdoLqU|VjOkxfyVmzEXA`yd*umdQbbcqFE z0BI{yvy!mIj*N{!d{kCMRCE?9**lw7e4r*NqB6O%A{B+cwQcs@&M152#XD49F# Q=dm5LfyK4EIBeJ1+@-%M2LF}$NTW`QncOM7nvxt3qY>A7$^+711p3<1g4pK z96z>x(nZ9~Jj7@yZUnds`uDBawg6zFPOfTJ5elmT+~?$^)PYgR#K8Yh;2<*?8$lcl zm^u(uof)2impO<&=IF6z%};hHpX#WrNQ{^aB;O`TI=Ppm<`x6pTSjqFq}&mc5qVO9 zFL`ID0!IdY5T60lqjJZ?2V;Q8jdWBdCq|?`7eoVX_2Yp!2yWH=J0mJ%*B|#bR$pu$ z0cMAzA#lygEQX`)HKkl&9n>sy(re%-2kEGYnyfNZCD5$D&ifsJ70r!^2TxBLQ0Rln z5GD!(<+cVM7qhM*5C@%vSr?iTgU)S@ijPP|=T@R3Dl>~|sF &aCO za_1f$xs~4E6d66a%8NUQsyJYz$E>SF0kP>Zz@ZLqK#fi7(Jt#&iM=K(38M$H8^)hH zo0NFxZDU+C6oVM3rcG2ax`$!Sy2RXLHTr%@SRA5#69AQF hPf@Wl5&y%05f^ZqJT#XOpZ+~b_`67NZeNpY>O)n zbq1Ux%$yqP6IHwoAfEyiqmR|3#8yThtLYevLI?$&tS=vdf@WSqC802}AXcE0d5Oh| z5j8#T#Cd0 QqpHFskmxm4EkW^TpDmz;GUm4Rdjk@YtI@~7zSP$ z@Yz~2Xje(X#7 >|NkKqxDg2vp< zYmEX(A|w|H#uvd<&;XjR-d96+1p%O}zxde8cgYb;m!ZKA#6#edh#89Z`vQN`UdY zgyXh8FSAAUhxZqwk)YHc^FpXwaVh%pap=TiARaHAHh_rs%AHwdAXdO=-bCC hC?I||tIn0Ini?%cbnReMHl z+t**0_ (ze{~$M#2#Tq816Y#C_2z z?JA=XPe9*cnX gASalln;{o{|sOfSf`PfFyEo#enz}*oe zLhYiDqV^>pt1;{K&}Y-FP!2t5CXbs**2Uk68!;i+8I3_j-NMyei30qTpg)q7lnZ^1 zt7uqpe9tJyk))Fyj$EAe{?eU6Ap2yO1sij3U8g0T>|8!~!i2rRlK~PR<0Ho2Jrq6i zyS=$k4jYp=V*+@To6+PX1L(@jg=V!ld@!bg{%A~8M8WLPu<;>O?2!-o7w`0)miT!y zVng1C9Y{LUK@n&+n|-Hb{Ca=@3EK)u1D}+jr3Yca1-=9NRv+AHNlhu|aW??*Qh61j zMfPf-W*Gn-U^S~nNke+(xYSR^JM}g?=C+uS`lJgl={5dfCi!^}`oT Wr7TU z3ti<+Bw?qeR_~O6{NzCOsEUlaL;^ukHWFPUAT>|A#p)0{a%2coJtJ{uY!;|IGV7yr zp_w2}K_?C6BN_vBN>C%V2{PxV#wMQZ9F>cDPLHXoNdYEGj?Y~;!STebhh~{KMn$w7 z|G#*8|Cl!OJkRs{*p9J-363)X)9y_k2Zyw#C@^N^p3M0=##NzlhopLSw@T%Lh$$fK z&6u8zxY@(2Qeqdd1qZn@rZ>Qmb#8j4Rj*c;CPB>v9oI1wMTZNl)jHh_h@3{_Kg>ug z)gAI5)hLAA>+{feBh7SADh2lQJm1gf{p<62(miV6O1IrVJ^O&K5Nl{IUe&$!`Khy}SoKI##Ff7mSq_`l&bqkOW}Ry_k~sHBv!}MqpZ*^|w`sbz-Qm@?iwBeQ3Ee(d zmQh>{%F5WDcWm$O+@3z{2Rub=6HS#mUvFoVr|?QfIaY%lRVui~8P|OKJS_a*3-ep$ zI(R6`fjZoN1c;MDyFODr=F4sbD`WL*<;N)LVt6^`%D*ly0UsKglZhMDmj&ZrP=3X~ z{CJqhe3^Q;>Mng@uMt=k8qX>DsKJ<2ktBCujK}A`l*ISn%M6|qG(b&y7pH<5s1ppv zKckW#7cmuiC7lrXVAM2v4gUf^MC$y%@nydWekTvZ)!Jhixc~UL^6`86=H5mN_vxtr zUmuE63*Pc%z2mFjU(|-3y4`ObKJK5DF>{+*chd>~@N1Jk@Pu5CUrhFR=J^c)1DkN= zF3YDEO!LIIdyG*=hPS9&rHqC8;=6Z+f|mh3%lCL9B_qFOb-GKR+bA_nbmP*+Vb1fG zIV#tVwmqSRZJZ}CF-6rmQ W3cEn7^HgRoi%w%#eo)Z%;a^bI$AQ^WX8r5Se(Svv-=?|7 zyzY)BDPW*J_MZ6p7+%G*8Mt?4!@5bgD*fffwRaO5cR!rb=E?&6+Ne!4?tC+lU_!fQ zs`uybI&TV`2?4SVNUzbvKX!qad_d;;meCKmFrh{YQ}W>EGXomeaFMQdd(sw;e|aw` zXhR+qPO$+(kFWmC?PN=mzXyt?Sst93+50gF%?Un|ui9{?FgszP)nDb|*z; -VFP)(}VZ9s~mKb_NneY zI$_dm`^#(1W7YqbcK`l#y!0zC&HvlJ-9 qIa$R6CpUBO$O4wxEbpBK-T^Uq bo~G81#<4<%sq3bC3Qnx}iM% zyUYK$R^B)FTEKl}%mFxCTX2_5g4>s+L(R(h6HNU6N14IDj+Z$7?*L%FU2X^^ y?^ zr{KP9rQPn&KheM)Y0gvrt3f?Q1qlZ8(@j+2w!(-j?^_#?N3Sxr8*EG;{BUyZ<)ef1 z5pJR|it3;67r4HsqlG0~6fSDouU}v9xI6J8;xg?w28t)mI>lCbRcf# a36A^C~@>;fnj#nm0PU-u-1zWg=*n_IBr^jBoewcC>J7bHVKy7;zR(nr+%>-x)et zG!mK{43@s{aAll8oS_!}{~ky2{yG=S7cCq#6;qC+a;|TOs#Bbxp6qmg! zYvsLj)sfKo;CpVzYSczQAGoq#pYdtZRl=b=Qb#N2_F_-x`{nq2W}YeYM `;!Nw0B!i~=lt3W@?c`65~v;n-c2a(-FLYTTUp z{mo1d$4LI@1ZDXTjPH^cpy`AsUo(YW?)ihinXkwUw)l3Ei7tpxeRrpg%AnHxk`uz{ z4*q)@GK@~z1%*iJ7aZ>!fw;$oi$@-)3Qq4%Q!XmyLkl$Cdik+@=;MQ)pd>(RDS(;& z&L6=1fRxAl*b1o?_ZrQaP7n(l?B6N p&$R=ZkUxb z`66OdX8kFQ_z~c3BM6->rzv&KQC<`}$6`WS0c@9EsB;4 zm;KoxU#F9A%I7%ljEc6<_e?rsTVY3j$nw9S2R6 13 1)0TfzPR7M=aNx DI7g+OAiKp%Lh&Pn1JKW ZEF9uZGITUNa9)gM;DET8bm{Tg^2pzWZqH!JiF1 z+ba1heLU^WJ2UkDu+`~0zK2($$-#dZ9`wrJ1MpFN8(lo6+4DdjK-!dVBZveb{PvsT zi7D_0LPM#WPeD8Am%bn^)Hp@ZKOUJK8WZPJp3Z4|6uBi7&t5NHc02STP0AvOJhzy3 z-kf>wu*Q#0z$s?RI8e039BjJHwfIaM>OcCc&4Fi$)7! -5E`R=;McBv&$a1ki7n;)m6H8C1nSB8`(Do`Hai*`S@o`gf zX%j*pv^q!8F)91gHT#EfvZ0l2 XYb5WZZ8AiA&>{v{GYpG+R!bM$=4=p{R%T3$k@u&PLsz&_VOBQOui%rC_ z^3T+*(D y~ _=D!J6`Zlc4 T1nruxEo^x?6q}X!Al8Md? N=F=U9ffd$Q3 zxHasgmaA^BpjV!I<6lQ !N9&ivIR z#0)KjQeGjn5+(5FHvH=4R{|O?z$eT$=X;mjjq@TVQ(D?gJ~Sa@UOS2uIywJn8o6h) zyvO6E(J7bi&$lFjAc=EA&QSR3O>jGKDl`T6gw}Ws?N)Fys=-4G#pt-pASNQtd-$i$fPRfeTriqQJ#FxGYb !I;P)xH8PHJznny>sZ%Wt(I11m&LQ z0Zo5z4Ssh96$}y_T%^8)DQyRTCjuYM8tY^~+`8BwkH`HpWoaJ_A*?8+$#`}vnBQ1W zs@&q18KH;97%zRk(^2Q)Bh=)i5gh%mGkwn!x@Z3vPK6e4QIU-5?sR%~lUrx0oMY8D zGJ`=;(a&0u#mzfhrC?+7_kTCvPxtn9(LVEEFZLf@r`P%R&wreuM_dA^-@{I*j0P7` zfuY5}4bm=Sw?R68WF206XGtbbx5+s@A6fo^rFihH-<(++-=s4i&P59+IBQ+7vi0Ig z``CMTF=6Z3g;A?v;PH^=-`-|7f_Z2A%_pJiZXkPIwo*eDvT%=k7e@vgTwF7q#)%H> zoZg8&^>24{@twIuaZ?yFaLzRMR!Gwh Qae@!og`9a%k~jUb_}~ z^NH>kItM)o7Xut$J$rs=@cuAN6A5;AF)?WmcigQV9;`|^v4ygYcF)}21!wZv!@*OL z;G(96widSe{qxV7l4!q+Crtdwz@&2ETxB<6*{x8zKk9maA>~VJ>6MsrSi_<7V1i$Z zhk;o2kb5A9V2sX>E>|z?Xl Tu8&iU-f1X%=w@LKFQ$DurB>R!8^pp-WnF>*fE5bz`*lQMw_IHqD)bkx*Xe=-%C5 z|F@As%BRe>bc;y$uIU u@`zrJno3IQAj0~k4X7^Y^|GMXdJGEC!o69p8ydTFrq6I_XeIeN zP8&VH(K)lHQ^Yxqb|<`%J{a;Tltq!48q@xm^X4mePTD=9_rMvHPeBB017cRfRSfH@ z^mwfo{9x9 u>2Q3RNe_BET7mK^L9vro|VPBAfB2621y31(9BE3s%reW~4V4^GeS zeL^qPg@A5aH=CoT^t@P@X&~OY<6qE@IRq4I3!y;qOyWd28`0C| Of^~OANu6EowT%VClf!*$WK8D!%5*waw+7gRu06E;>Z;2 z`o~B{ea)j~^OFh-snhD9bRpHxJ>&rpT7wF>T0F@IHi;P@|F$oz0&QYIi)2P?yD#VT zoFJF{ME`N= gau4rOLd#-L<4kJ^Sy8Vr5AI-mbzj&)&gs4mpf?VP^(iC)5o_!Jlke{96l6~zZ zJi!pipE_+mK6ZNWXSDZiB>Ae*5Ad>6=r$+!J3u4X9Iku|k$@F$o@hn;%hG+aSJC^7 zGdEL)!ca&=O 78Jb;Ee!G3RU{Q@CcT+g%hoXa25A(Gsa= ztLs+GPhYOX+xdh2#s!V)QM}LTS}7i2lZ@{DSa-JBXxj)(NV?(7@Be1fnMYfiqO>E2 z>PIK6X4uBSEMgF>7dTt$wwErPe*Z5y7O&%cy{VOsI&R&K;*JAenHoIefGod?H#DQd z@m<%NXZK>?UP83>BUW|Xoqx8}o?L1-@kQz7n49}1d$f4j4#zLYAL1LX#x`Oe$IOF^ zc(-lHkdfyV#gS)APq02{1`V$Kv~<5ZEwfhcB?!<;$ED+u)u`ig?9;|SGiMT2bA3%b zOm9Ak6i(8Z>~T+eunGhe=jP=<$~^4PZY*AW$~h3m8*Ds@Q+M!pc+$=J3k}UNjf=*= ztE5$aT%dcub|}ExKK64P{TRK9`q#FY=-OPUQRA;2LASEBg&H;e-pH_JH8l0G0wE=# z*W8<3Nm?T4O(^ra^4cd* kKrVwz$n`>`GXHO7&BHRm=hG z?eL;J#dyq5M&UxHiQc2D)ZG2JRm^~-N-eEY*~a$1#@WX;59Y6$__Ix`BMJKhh@GHH zX1A=IRr}oDYs_Ag8HeBGUo}AI7-~Hl3XoBRpDlFI{58x%9BJ$-ek+tftc^a*8*Bm5 ztM)*+8X7cGQ=7Ci5mEpdh0AV`hyg=U$};nbs#HZ%s%0*89;i-FSi{II$08Er6xl#b z5qxQ<(4vY@$u*1sG7KMgSGgqu;~}Zw+mG`hu5;o-)wSBpURS9Db&j-8-y{f{FVv#| zz+qRC`s-1kH7V%s^8L8{Cm$>g;x#fOTs|K8mUyR=jEdDEX3{ME5>!tJLIJAdCh3HW zIRNQJe8DZf^9MKuqLTs}))s2!HQ!S% sRhK`CNrgZLB8NNo*J)wT|NpNDJjhLLmnGF!dH`$3)*1#sTu zlJgf74;I~|9R|^otZ>g)jJ}3#E?V@|38D`s>`TEXVXhG(1Q;Ou<*)|hO>QmFyt3my zB+Tu$BoBs|Lt$xO_&hm$LJUftlKBcAs!aUaNe&**u6a9jDWw5)0#Ix85H(bxM_t&j zh$>wUE8e+7r_^hxUwpA_WeTY!JHBS-Lxq=L`FwGtq>ip!YvGnpbP{VEg#>CK4>G-P zNVzo_JhQMLPe~!^!m^GRzatfmzMG|CF@a z`;%f2iU@^kQq )d#NworRBBWDzs0Yb}Qz0LIatQ6T+8*QdcCE zLvd3-h{r84|7cmpU)ggzNx|*vM#_rEkNydm=7fLSDy-yl8;%e-{pq~4C>pRTb;L_1 zvKA-iD=77el*5ELyRr%|L U+CS1DpoBN>@%$O%eKKy63I zLR>c^(O8|dhD&x4(#(aOdJSa=6x=4Ij^N(lB-A5r1)c?VNdVxT&Q`cN)mRbYk&OQ& z*7+yMz<}CuB1Kb1!zw@ty^^-F7^*ko7!~649ZtypA#BOOs76}B@P!gLs0JnKhatLA z^E^%+KBHm8Mcw4F;L+K+iwcCSW`w-CzB{9bk)LRB&@PYk)V_f256TapO~kW0GtGyV zaNj`cFWM!?2(tOEnVcm-I_eW0<`z<={5KOQCO!NiDKn@f&)!YGSE*L&Pgm(NLK(Wa zRhjjp{}bm1yF7`MXU9fvNe*xITEn>InyK`C6eyYv*y!% =G%s<~0X6L$T4cqWZnN8>TyBxY=mqi%2KBkUi(REdgJ0js%oBhS zI#`R3`f1^ogD@Qx8}HVwhEy6i98uOkS{)Jo{$tKIi2fTO5duVq*W%8BfavAP9u*%i z%k( eLN# zcOzn)w{{9M99EjjFL*el%0c*Zp*w~9g_E}dW%f<;Z1t 2};B*tJvNdGtr> zQ=kqe8#O42De`ZIEvhZVtz9c&99>1Y=zr>8RCeD}#FdYPU<@ImTplY!&_DvCt;V0u z!xy|>`G9<#Gx_PX=(XQo!V2M3BB7Qp9sQMIRD#eOnr-7iHLs>j)E77}T0troLw zX z>D=o0x;2&fnTfwpd2e>BJmzn75rKo+JQS6fOv4qIa7+u05kSlx!ie^9YG)DB7LjEw zqh*0g0=>zm%<$m3^-y}tOv&FFruTDs34A@t0Yrz16l@@wO%C3Vo2_O*R&*7sDWI&* z YC063Q=)zG$M)-(sx7RBPvW~mwUco-3L!w{i)T`xx zZXs9KYt;~KXvl}8^{Oc?B+!O_e{-s*TrvX7sEwjhMjyS1M0nzx-Um|Q4jeJ8etyar z(FP*ce_|3_aqwr0{nse%e2&K!#97P?4qb5nLNksC$qKnqihH;Jre|RG;HJ|(k0$$a zNICN#nZh`kQ)}j#>RH EU(vki~#_Qe}o9AkKVG zPS3TjDw9Ru>@Cj5bJA?Q4q|-@^79Ca^~i#TXTd!p0Q@daQJCH8HTiN@exPD@;c42z zv*V?7QO~82-;{QGVL!B1>O1PiP*1*i0vx)E*_`Ki5Rm~ #X< zpxv>^i9dh^+f^+s2MiX2n`Gxiwd|RD@K3OzzP&_xXj9?1z)+ASr!cB`Q@Fcp4P#*m zrzW9CDak|17bkT^C>ryu0yy3IgIxl=VBa~3Z#7J*l!ld!HBVinU6`%=^2N>cs+jo^ z_wPPv`!!|v+e`lZR}YaDA4}^udgzxq`D3aiSGIeuj|+9+#M(&?-r(Eh0f{22QIlu; znquY*x&R$wKQ88mUnHdLl)AR9Y%qIzVmfZo@o9v6q&CYXRGi(2$a7$as?JtOehv M+*=&pA=;^U|>WVNxU4vxQk!>1pK%kf~4y<$X{|CA-L`6_yb%75mya|%GZ^>uB`B#)zAaNI*?k^ z8v1j9Xv~a+&wNkkAy9KZ XL)(Zbs>#<>uG6}o03rh$9LqX~ z8$yQS>4If7B`@;D5vubSP!wC+fUO7<)wrV&0 @^@J8e!uZS!2CQp)jB`697$GdxAq{6oL;3S|ES_S}JiSrbC zks(h^5v|9hfwbh-TO-R(qs`Hd+Hr=uC}RRquA_D~KBmHxfh9I`m#jo?F;O>^=%f#i zR&R#VOPeu_B4L1?Hb!RJO;it}0`?pUmsaeb!ry;X2n> >IeF$Bll zmWmoLT#gc;oZm8Y^+Jf`JPZgj*)IudGMwa~98{9o{`OM#%PlSmB>N%C3@z)$lVOZ> zsONNzQ$1%y;m8Nht=wHldoT4l-(RH?3K@lk=E$7vUF__ERaB0Zi7|(K5B-KgiQ^Fl z$o&1+!8Wc64`^DgmG@A5R4H7%)1#y$n`=Z6#p=bIjXqB_EUqXwrQtV@pml9ww(R+& z^Zf;RaIYsJw)D~S`(Z19up3K(>icwlG8}5;$w03?sUZSqL?tE_UlV7b0#8wftC%=I z-%!r)&LnfoZ4(c CGkuQ Zo+A-&8 c>yy(tf`AE_a%u@GPbR=M^+uRDZTdvZ6Wc2L@c LOF6L%6K*x*R< z1R(N|C>Ez{j~s@Cp$G;x+Z`lu@i@TSyMU%M1fj&XgnLTPi#z-?9#xLpQ$X+MGkZPt z!0#lf4Sq!ze>J>}kJKhpRXgG*jwnADzbQsr4|HX(Y$TT$F3MFU!%ClkHoa)awDj&I zwSC5IvQv}c Jd=}#d=q55^&xJ)-hFr(;ksQBs}jT}Z6Ls?fa z`A|VIi3aO#6Q@A3p|`-6a%dZCXRBt2DiS!kOV%NKMN6K*4K!Nj6Gj@H;HlSZy=aR= z3R@`xvdms5UJW}UVK=?g>QV?h#~#h49Qp~euKZ(?3xqRX$35eFAH^CL7#z|vEp15& zl~C0iy>hWhq?tAs=#JWUs|~s-%n4_QJ0!9k=I7ogg1=Gopfe6PB$kvHG5S!o-J`S_ zX5f$th7d>)Ldh$fUA3kK9**u^><$NAi0Pyg6o0I^A0cAiF#^dvQ6pGJnoTSWSmijy zRzU(CF 5Y|Jb)krM(JXT&)WUek0Ct0!}SKHlJO>ghe1L# zi*pF^%1`tEd-vb?XzKB&l*E8XGa)`>^%3>m 3G5J@lycMNvQ%|4IC&V z=aKBkKPH$Zv|eK8iYMv|no*CKTHD1DoG$}bT`L4QSiq}!f>cxKd5VW*C!(X!|9x`* z5HO _jF;1^QG(?|yHi<|^`s-hFs`3~3#&LuyKwWF$&IKk;o(m=;EIx~N z0_3EOtj7FqKaWlEB>ELmRwRU^W`{q<&%GjPlXAc*m;D(cGCVPZ64v?= km z)kVhr)djK<5&=$7Gj6y5dwEHv9l&W2H4)3Wnm9@PBSAEHR`}E^!>qt8=#y+PxirMC z$7>6uQ(Vc1s2%VB)#AYqML;LD@osZr=6#sQZ0{mM1({U4CDKvnjKL5E(LRxr??9Yv zC|vF4iqXHMmQb>(Z7E6`4vLUwPY#W+lo{+2b^~JCSk%Ve))0s%e!Rk+>(o< $Z*P$w!49)n1t#XdRQ^g_B3I*MC>2bVi;L(p4HhYx+ j*ivj@r2lp(IS5Zc!W3$VQCzxs)GMvjAPHj+FcQ4nFYLS* z;#J@bAQEs#8PX=FLf{3Oqv1c<5ori8!c2a*!&$wA(wFufogm{Qm_|bEU#;-dF-G z74CR&}TpV7qIK>RQm*cu(IO-a%O6jgrL%)}hAd19LmC{pP{Q~t@Iw)XOW zpk@5>*G3rPP*Tw$4nbPW=?cZ_IO<6?h|1wia_AMRHd>kA8U}3)9)Y~))|zWDQAEEb zgFyUim|MGdQKAltVP3u@Wd|e<5Af!Y!6+}7$?$}O(~RSg3866XKKs=w!YB2#Ix(=t zn?_V2^W+n6$gSekrQ!){8^wnY?<6fv;ei-6x+uwJ8P|a&(vXiwybZ7aIO~D<$+%19 zz$_7) 5VT>j`k8I0+ik 4-m&H*+5}Cpsa3{wzb1idQ{^}llAPJ0eCDq*;wOp8POgy%yH&t5s3aCs z=MR9L61TktdGv_zNUB%VnnZ&&%;3E!o6L=a>mI_IDNp90&C3(Q#Ifc?V!^uw>+|u* zNMs%)09F zN4`y31J{)~zH6Xh&KW+W3}-4nmJv#Xq+PY8Gyw3hllEey zTO^P{UWLR40{C9983N2TK}^vQTal>KOHZ`)39iGpeNMHCU|~bFrKF=p?&(U9;VkZh zr8qmGVNDxSWTqcgOr%zFty7FLDf0Sh4rho_CE<-7=%0itE)x*J$|vP9B@;?&?d2;7 zF*S^Hk84Gd#Md+Uvk@eh>;&wN=7zVpn^a@fvuYTL^iTlDh#>Maia3}I6E?|wvO?{i z)6m+ 8+RT;>s$ *}smS{rvh|Ky;0cJCt{6E~3m8q-0fV>3q;<;Vs^CRPBP+wuAQdUi|F9wD@V z;WbKrGmqb#MaP;coCwG$q!_{eHfBsV&}q=c(6Xpib(-5l@FOZ0FLqS1X$HI89U_s1 z4hwSfqH5qnVPM~hX12!HgZjBwp-V&f7_)Sb%cFa}Ly1#@*aJy=k!4guLM0P= 4 %~iL }6p>#2aUAT3>f#YE 8*A!nDrgIl!rBiG+2d2UZw9 >B3880(+)p!2s{`WcGhS4}JES?sfP`l_Z%X)F7 zY0=_(9~hERoHuzs0LfilvHf8GaHmaTT=3d)a5s&ZKtCU !Q z?@v+= >KGs44Nlr|9K&nR0^>4q~DcEwhZZU=%SfP1cG9rX!42~$dP2?$Fz zBy@A}r1xpMpGo`{F%IV5VsP-mzXmVA=Atr>WklPQG@a#NBG$0Ff`N-x`b4WJBX zL^m^%q-c^A0;x%FS_yeaP)L<18p;ki@QS^?P?Lkzkx+vK6-Jy%4k1$BZBj$uUaIM4 zpm*(EPYn-C8^{}!GxMT7*6A$0LFPFhMN!DNtin 5Z zl 0Ty`334naVtZH{C}XdoiRX{xBn zQh)LFnMhEQ^Xu^XRTZr@CMuy*1xL&LR>gl$0*AvaP#~hZL)tQ_jg>iNQh8ZDV!pzq zQ%yiNNv#%!7^>uG1Vs50c*mS;H8qrdFENjd@6u9H7nr4!bqANa%tRnlL;~gU#~>vc zl1n~RzIkOv|AfmpVzS5txeK*aWW=1FN~HMEiMkq=GxP=MO3cI%%?PDi$SEN4pxi4% zx8>21lxkx-aY`K0Dq+i{@M*5x1tWU&j_$~g3s4-o>O)CWh-=BAfd~U&Z&JdHc|GQI zNkM&r#Vtf%2bncfoDm@D4C574*2xuSaBpEz8A4|(yt8 M=gM2P7X2*VM6HoGV!ActfD~U1w!L7 z55N`H>(|pnn@A+K(070WL=i{#x+odS(TX32;$frd^H9Is#Gbhb7ai(noRe5i$&0Ur z;glR^YWFF+F*2#7$9T9|NI}a^uE^AE)Rk#c6viJ8wGgHxv~L_dw{ix6pm 1S7hZ)mU~MK`%LYE|XSH zs2>HYB`K+oZ!aO(e%t4_Sy(Vp!)bLk{+#R-V~cQ3S~C-YL>u!f+_KN5ky8T&FEjQw zS`8pXIN(e#F+fC*IhR923yXC7G%XJ>F*aOR^m*oTDJ4b*jM!2zqsc0cYwQW3nVQ uAnIBp={tFP0hasQYAXZeK6SP)n^rLm)jap!c+Fn8g>*cL)7(>dFRs3DRL z0k};0#NRz@_2i1T9P21ky`=tknRaLko%!?siiQQFDbD%`7Ex_2K^3$?{9&$W7{@{z zW)0hmMqlH#Nq{(Q(YqPaj(JOuDP}FC_{3cYZi3ERWHkiXiwQ?#=t_Vr8oM(PGgBD) z5#>SqHx_Z5_zaX8mUBfY{y*XeL}HX=`n^adq2xr9ZT}bP7uW~r3Mks8i{Y8QYaMm* z90K&g6!08zPAEK{jmRBgM8hynl*uWVko+U-DTqD(ST<&fE9_M}L|B)9N&rxz?Qw}D zE^0#}bll|#k+G1O%y#SW=J-!!II2~0`^<*Yw;2-0m6J@!M(Bt9e=@v gX=7z?cjD4 81dY4bNHWjG};TAd8#kAHrAMbU($fY&b(^`&;5^L(0Djlt7K&g&7jv zMs2xou_B;xxx0LlHl1f(j+w}WT;4*;5g-?ygZtv(kltnwLnDP%nxSf4J-k*A0kkty zNy9 d=(U7m@1pM%?p%X5ce>$ZghYF? zMEo%)2hTA*%`%(ra~vZ*`wh~%)gM!@Sr#YL6mUwPJiVBYc3_oY1Da5q%H%@TSRS(m zqJoT+Z w3^pB2ZG9GY9 zhQ!-I o5)Ve| zGcbc3`O7twLU2%Y^Z^ei> qrb6SMT#mVxEHyTLM9ISI6z><5M@Ba*Xb<%SiHiCZDybat!W Y?V-{fgEY^&00~Yt31^L%W zqTnQS;>*OjVq*5KEY>qciB{P5+li+4&BGps5k*R0V6rKpYdAPpJV>wZ93m|PgTfy# zkTM__0>eNVlTn#l3_I0zi*m=psBzf@HrRzDgPOAZ14zV8$}-bbs5lEUtjD-Ws1l8o z@dOh>7CO%@nP-mkC8vBAt63FUB{5r#bNctWLytX$in)NG##Ri;vtVC3F=VAT0Z{62 zt7vNyt2ee%Tz&HiMFM92>{;SekU>1qcVVeU5c|NhN%|E$9sbSNw(b^o;@4<%+eF1_ zG7&rSF{2bwmc{@@2uJd?< h< zj8uHRiCrP60i@>%Fv+>vuQxet%5I^_BlCY~m$`ATos^A+gUN)Ri>CV5fBQYWCLU>m z#K|1$8L|EmGGfBOME+t*1BxrtLDVe=LwV;Vyhd!a7UfSH&cW!Fl_>^N&wN%iBIaZj zbw#LH9J4{@G%!C>vT$NsigTJyD6CBe2g6|Zek@1^WqVC#H?e?ZKRsW2)zOt5XMS_} zUt|=Y15CV47%1kIcoeY$myRh?T8`7PCx~Y-mP` 5 uw z$|Y1PAeuGu8tl)Av;Vk|;J0$6;mEolw@3}6977Z`gQs{N$VjnEK}LCQD_eTA{5YCG zV1G_FS};){R(Wzz5mX>IPB|nVmS(5VFvVzIW*-!Bdeq%goUX?~+!;=59u8DMvl8CL ziW7Z_StV&xH&OR^`f1*%MYknUj+$J@Mb-H)+$Q|O?@uI7fl?Uk&R@5MaSHM9NY5Lg zp)NCmBiwtV VK=075Hr~=#M2mWI3uFC?7qS#kStPV4?1KQ zpA9N&hFn9u3YXbYFezIq*WEb={?Hf`4OEpHGjg^e^FM`rioTs(E5BfusJfVgWCoK& zN!>=bSz2us4+qplwBmdFrdh_}M9H7)2Wo7{@8M+e*Lir!!f0IV***?99B)dZ $12FfFsA8}y6?3l=M(qYn}a%^?04#n zYY4v-cx{X@h`Dgf)B`dXO>#a_=WS@_Hj4dBKnKv4Bb$N~2j#|3nBxBh)a-u2m-`Sa zK+T^>#*y_Sh1p@8C}AiF3=b;UkHgRMvgeURO_xPxc`L{E7&= Y(+M;6tuOB(KatQ(TSu$k4&ST~6TGF|e7=Gw69EYkcKv|e(@ zDf_f-oW&QLtr`BCinG>$nWR%<1CZNBb8r<-oSv>B{?P4rmlP`iC`-FQGxWwd@OgNc zxfze09X_xHi7K69E{nW6;#-`-=+g5K@tI~m;QS9 NI z+^Cl>1R8(7!ljo#hHf4GGYh~Iyg?~XiLq fclUTyg+iC4P%JNWJ@^RTQ6T(ePewYA3uT? z ~qvV`k6C zg< wL<6t }eeEWpVEV_PGy+orEWuAi@h>F?Mk>*uvdn-9;s(1~~+aM zJ`n(U(u+8q-ALvzCn&omrg4K&)MEHMz5-GeW}RZ-O!=#l{5@;V#yLLGmi(rfRj05y zx+~PdBMhk}Ner;r#x}TEt@4RrEn#sV>4qc=EMblLyS1P@1dv*~BUm&^WS?yw^JuO{ zO!KBx<8ABa*;Y=K%<@Fh=QKe!6$oa`!Ecp&xiuoTsUZgg`(jh78h?!BgUqbS5F^%m ziaov(yq5i59mn_+>r0rf7K2NBB|?L|fGrBRGe$h%U#`{|G@!gUN5Kfh#y;3&)gNjD zwp}SgN~-ZfRL)) f9mt5q4F)vw^jb3i*i2C0eZL zHt=miavS6mFOa7FPvZSk{dyeyFBg!ef SE`^xMuj9{Xvpi^EL1MphhqA?Kt!)NqpwtHJd+kpdn VS%G^Re``}7F*0W`28v0tXeWQ-mivhxiA@XSV$bjrJi725tLDG`6oYu9sN@~QYPLDx6@3B zgg@!bSb{wAvg}Tvy9DF!X6MrLO^hxR|M*9vPMiG66&iNfL@>^$hAp}!xxxld{s-+W z`{fEbG@L(%)YzW3ziRJ3y2!#qNqoRkqk;TK*mNl6*{f}&GaFBmQYsugZ(%!M;Q)%b z)3&UOS17vXg)9El5a&n9imV|zqNWhF6%0+aCDKAt^Y 4f5qO85QlK60=!^>7l;T>hef BXdF@lgZJbY&gvexDG2KW=#kYM3C@2ZLV2Eb6%raR=h{QU?&J9_-w%8K7 zbX)QuBWW02)Re;x`-Cs6B_CGcT GxA z1Hf3PNHQY7SfRj#bKK+etb;-5-0R6zHPThfFL`NUOrKZAZZiW`egVB(>N*$fA)T}} z0y>b57VqL{WMgFksyLK_jb;@r15LpvS&QTwR-&M?;JWeWOYL-TA6M$a5YH!xn;f$W zUORfP?%Wn@@XLOcWA8fl3ZWlnZ3yr)um4&GRvvulnR{C!ekD@v_fgP 46rGu+^>-iQU8wz z+>VFVHNq(9b~W?zb6&K&yH$5R=^Nqh$fckHAGr);wIKOnkU3L}Hwg|*uz*slWiJM3 zMFd^ev7Ypxv?CK^8EZzgfK?cTCS wyQEDknFF_l5>k~7b7`%+L#qK-bp-tQ%&gVN#A6Ex<- zi~vs9h_^qf_*8ldb@4XI-Vs7ddokFl;DYVsByxx+jGV(ml5DZs>-`vYbU+Dp*72J% zmMU%+t@v`A^dH7@Xf-nF!IoQ?#44LOo-_AC`Gyiw;3jy?ohJV}3h|WF1T2>ws>b|6 z?C7fS7m-?Fpe#593ivEKh=W^)M#Pg(kM5~evf+xbC^@EGQdnkLvc;PZ2s;jpNElOg zZG>d}FN9lXSZ6Pu@NNhRs1OX>YOW!uR_fAleDKAvdcSr 1sevH)M!DJ6B z%LW@zE#*BDlw{OPb{fzr8ReH)RsPEso?e5q8u21F*)s_z#3OV`a&@2=GFCu+CRjvk zn6^)lW>jndfmgHHwhP~F2pfV9kDEya*# 3So|DAn|thxfZ2HP *(BL{}La;WZ2#GK6zLftbs8bGj@PBd9A% z?8zZ=CcFXy;Ko*!D?{!74{+M2H2vtG;nuTn88XCLf(!>Iwe)1`<))Y)Bm+3P<=!#W zLxw$NoyW4jwWF(^M~MOpj%I3lSB$UENUwFUT$UZ7`;7*4Q>;(yzD){RwtkcUsFY-D zVtboa>R}!EfMite@B 4BS ^ z$8-RsiY@4ZnPhh@3k@DJoIpN=E5YR!c`nSD0Ghcs&F+o5 zZt|nEgalQA&3%`$)0!xtp$AroL<~yQcqV^c$y`JWIS3~b0C>nMCoApTUS`shD`MMZ zl8(uiw&h=4=?zCNJ484k zyS1)k@ U@YZU99w~b$v@1~@Ta7gViUYzA<1@wCKWS=-7O{- zN)?ts*?e@*+-o8^ggP}>hTqK@&ER+dl7X1mo1sfxiiUQO?===~Z6mh?$ikqhhe@!B zpL7Wfi{etnKj*pObW_Dp4LA PGm*F8DUp%8#?uA{leUY= z`(pEOe1fjOOlc x6QT|Is`!*5kBtTcF*+h!#Ls3BNeJ16 zGfn89{5IGXx!JzS!5 +LbYMR*$NO->*c2Xl^1d-Yl;nqAdYWxo(Pszl-zdk-@ywh!t zp>+Uo^8AYu1v+H{uFdwHRxINo3QaiRd+fg70h!=STZ|A#Y6a ;-F ^N%L< dt7qUXX3%xj; z)VvZ3V$kXXpO-ZQWTr^0YP6}d0i=F2(^wk%J7aoqNnB9qybpKgEnKXT?H%2q6F+lI z-z^}53b&vq0`L%${o=QYqLUHVc_a9#Y5oM!3a})dzl?qA$vAZAMLQX;%XY7y3BjDn z=M1U =*m)_< ;cz9&x!NOL?z~;?9D_}L3B_thQ}eIMpiZ&O!kmTVC@-hf-LkTa>_LO zS C`4fnH4m`jBRffBKihe6Prf$bERywa=;ABRV$Ox1|iMu#NYQ>{YAel;MO|eXN zimCX%3-I{X=lFe$1|woo1Y}(#qMe v;eAkABUq7^*3uxtbZ>g_ zl*Gdse*@^AGx-}Ix3F?uV_Xgw2ytwF%?$q_=@QS*g=0hksd~uN45Uv}@&XK(kyToI z*@ien4pFRZbm?6}=O%KXRz4Ba>^=`kMCRig0p) <{N7|oaD_Z@MomI0X8l3 zJLAA@AQJcq0!>&1dad}9-(YtTZ`2XmPVRqy^W~cEWm#nyE=v_P1UxRz(M5>s3hRFW zt{7tVtO9v$otLFvvMs!D=WEa-y6}l-9JEFn>7Cy)NvzMy1lMyE!CWXwM){%S<#B;| z <)`W32Q{%aje zOG1~M?|eCy%WWTy`_APKZ=>9pz!8whPFLgTuvnDODgZ!-{}Gu)bXa;S4RUOcNsth& zL9t)b3pYgjK|OdT>CF>J=?vB0B`EhLm5vW|=nGyBlvA*=!}CT0> |bgd0QifDa0Ixy+uB6z;KX zMF$VdL WHAyLh?_TO8j801aFh6Is*N|Vo^gF zbV|0UHe*K%+bJo`=UX!x8((@gI9LlHi7W}aoAirHp3;+Ij}5WGN8T|O6XOo22~x)5 z{=cL9i4eM|IRa#5B~?lCffy3ylT*Xe4xU%We=kZ0CuHETX%dt+roU*2Y*%?oRs(O2 zZ(>X-kQ`wa3Yse!ab`n*O0Tk!t-K*mh^&-&E%c2cb9fj$2Ux(Q7ySd$$|4mpuMe6k z`7_eB6-0S7xS@bTtzM?3S*e7)-iT06|Ivv~=6gW&B2pm0rJ7jbPXh(Tw3+}kKovt} z%*yFbxRHN_-liF`W^1!t`it})0cesEp+y_akKX~EAjC-N28ZYG!mE%CbENoq Cj}Y9cX|e}^Et?0Y(e18~K!ux~ zd;Xy)`QJ^kBuss3Qh+B(T*|14+$CIs4K`D=P?WioDGT0eJH{C6vIG*#sH)LOzmiMJ zR(C?icE=Y`hQ$*&WcV%ewDFW|y_~AhkspB`l5-Qy*b8hBkG_)XJI9Iv$p^AIk9F$h zedxW&9dv(K9svW>{*$kZBhOb@C2C?NZy>*wd?*4YGdl!dI2UZ>kkts3JDqqQ^o=Af zToc0iV2s`?+mB&O-c%FYUdl>D5Lm@V9G l-$byhJwOPocQtW?=u?HEqlNp<-{+Pg=E4bJ~$!1FN zxvb{5rV;FUQV5;&@)*Jr7BxF7=3-_jbTwxC!sy;_Ws4{4tk^M<;++Zy)38#+Bd=Dx z!-+E-rZi?41MOsT_DwKL9jpR16E4fkRn8L%Gpw5pcJkqf0TvG#HDMPIzmD)IAr2Yr zez-M$BLiF xSULU 86;} z7?)vcdJ*uKGDL`1mV_D$raxng=nCBpJV5{jg#MB-a~8j3KyE+!>0J}mkSIU?jYQ*4 z6?c3Zsy_IfKCB?SZd_<(N7SL;xy%f2MUOYp^Y$XfH0iB&!%dUmvQ11LL3WpSD4?=F zQLGg -|h9Kog n4nIG9?3D_fjSYiV2}Mdya>M+yG@f3p*jK;gvDjU zv?Tq}DDQ!Eh(uHw4I8#4jw>>fsAf=t#?k(;GRXiJw4EM!A7>MZ<~~=E8bwluc<6nx zMvO=Wn=nLNk_|9CBzy@Jyl#iYKLp`J6OeRp-ej}Ema%yL3aTr*doNGHI6jahs8Pdd zAVW>eJ &)Wm2b9@iVx0p{cy7Kq}{5y_AZ1=uxs=@)?tJdFtNC8q2c=8!ZK6;_6&F+<7X zBb-Elc1W;1pY?Rit#|cyev1rhu<1nxIY$;`Qo)Y!16-25SeRk?ySyYzmc{U130}Nl z2=hjf5>t`zIuA6>?9*4GX7DKF6bF!z2C5aJ1s6oyHTkeA!>r!Jspnm!Y@tw5YfG#X zt#q#X6<63A#^aO8HsPcKE@A%gvM|tw2nRcY#a5)(V}%g;Wwo2Zs-`Tw9?UquvVHMf z;RH60EH7l`AbXmKk5|hpV8lRz;e$(^ybEu~L8*Um0$TtGqa4IQVneL`3%XcZvC^iK z7A5+Z?uYh2tdLk8Ni(y(oYa`lAv<@e={-`zcm^pB4s=m*Id}m;0~QT43`CILu-JgY z#BDsf$UYNsx>C}&pI5N?hCWOPI_4DB7MLO1L6B>HYP^1`my|If&D4uk9K|o}+>I0S z{fI{dBG`^X7OA0Gs&f9bhGtX{#Cd{uR_VczoT0%wyIi*v^N>QW2s%DszrIJ{kpSv> z)KwM;$rOAY&}U;k`2N4)2TO6T^&{{Qy<{Tf@Gl59NtcgV3YX I`i~!oV(4YxWc+kXmP)8j0>b%Y%*yhqC#PbOC-{2m!D-Y$R20hyx}XDAtqF} zzq%tCo&cK<+T=&Evjw5}T#=v(7Cp<=pq-F=ERiza!31=g^TGHIZcc*l#hjA2ei(c7 zn72YpS|PfAhYaTDJU+Y7X0l0xe~lVU@P(Ng=FK6SFa+#ZR#K^ zjPeMM+k+71zuC5~l}4UlWDSDs>=E8sp(Dz(@@JVxa<=+^#}wdoCuJ;lz}Apgzakx? zH!$f#GLLU0FS}}dOhfowP>5JtW(g}@kqRTbRC(_jxGaeqG(uKk`3K^Bm&t)X>doZb zrC)tUn@|jCU5{m_>br9~g 4<1AP@a9T#YGMO216`XEA|ZU zP2>e<91^zS;tMIk4Fk`m8X88Q7=p4w`-%K2f}3c3JS9e@M--Es4=b7FtvOI1@qq&J z`B#&^97+?pQvP||4DcXq&o(M!>VPi7z&Co7@&@nFx<>U9$H5}qtQVV+nqUG^5B{f`E4 z>8>UF%kMm<{BQ+XZwZ!CbJeTst f z%6cSnLH=#rGqP_1x|8D%3KTCr8GE}i`e2r6aYo!PW*a3>o4^hOe!Y&dToaDiZbg{N z^Ey{vlMPv6cIvSM5IXmO6 V9x x2jBm>i}2-_Jc{IrzGj|4 zMgx$KI(uB$QA|fLvBx4Gi6VCXDYX{W5cS=ldXJDU;XTWKG9ryKDRGAt_{N~YXf+`z zju1Oo7Q?Y4&>6Qc%!G+5vEk$~@550nz2Ws0@(!;4Ys{p}R^}A}MYUvTblEY9zT62$ zxPTOs>?ic}=99z!Sd(UwGA^6P#O7+_jw4gS=e|aC?C?T2K?U9}mY8iZr@_)6A|<8g z{k7s}TTAr;=B$_?uut^Y?q8Thw`HlgI5Wti`1h<0+~XI^L_82=gOmd7ZbfJPs(5oe z1Awzq_gwYA9mYpt6ka43v}$6M3@}BOncpC_N0#-5F%0M760(x!D`F;OLV6`P%3}xq z@j^_+z@_z}TuFSDNB(T)BEZ3@_&-dcDWVu~>?Gkd#fv nfGsqs(!t<*`E^;Pnyr zMu_zxaAGM`(Z!JWMMCq?W_DOF 5sa(WoN!BSxCiza?pCKof4S#QAaqGF1l$Pf!J0O+O{ zvJ*9q!NYP*Iy2jaQR6V;`xYSkG+^2T0x&8OiQt~_Z3ZL2&nhW9VjZ7gUs*kL z) 5>6Qc_bd +qp5f1vGPP#kh1SvUC=x63)#bH4r0$u)qLS4j zld_)$nG9Jm9B3R(sQp!xVaa=JqN~C)#(BG$;RuD%xBBs!QWuc{bmRe(V3uilxJAjy zo)@pFQda6hTiB05Pm$rLk7Xd1otgYnl8LP*xZo6qF!qo5s#aD}c=?-V2Epac%GLBJ zk>cQW5D^4C)I52qoZ`MMF>ala1PK$uAs`ETf~qtG**M-FMwdofBW#;!VZ|0JF%XdC zIpqP8`Yua}IigR~hKv+sl%pQ0lTBBwl0e_&8v||8lr;YSe2#m9x=ZAl6xwyF_3i(c zru&V}^1jnVe?O0nv4bg&Gr?x)NgfkJdKMBJm~kd^yv2}0aYND>on58bL}32!&YJF4 ztj@tw1$Jx}7+?!#w!n}f+P)a=n@tI5nINIY5JJO-jCG`QR4j5-Eid3mBV~oGRf9_4 ze6HIWt-8}DU_Z}&|9;;;*Y~=vuUdvnao&}WB@3&g3`h@WnlOs9w7vAz7DWT-vsX>0 zCf|5hC(=+-y=so8d)cW_X-qDPEfesgkZHk=)lMVH*^Gu!Ny3lmDbYZTqZjnzYpyB@ zjHm25(g)D~HxMi+W8-{AEDrz5v~Uu^D~+LhXVrT;civYbBUTYLOp7@!II|Y12xCJZ zqJZDP;5sUtbfiMfZMJS!AVP!n8R~#L#9I-wf=C8oDp&Av=(9E{2q=BnAtUU9y94QX z1VW%p`zLuig(uaaL`SV7Vk<>V2|ao!y(*^a`ZZS@uFaXrkQ6#=m^or 9H}* zuU0q)XK=*K% NSTaiPL9mPKx?4&af+mrw0zB