From 966f67a05b240e9412f784c1fd580fb706536341 Mon Sep 17 00:00:00 2001 From: Sitong Liu <57391558+sitong1011@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:51:56 -0700 Subject: [PATCH] docs: Add Example for Using Rendering Module in Documentation (#103) --- .gitignore | 5 + docs/examples/alias_sampling.yaml | 205 +++++++++++++++++++++++++++++ docs/images/as.png | Bin 0 -> 88925 bytes docs/library/userguide.md | 55 ++++++-- src/qref/experimental/rendering.py | 6 +- 5 files changed, 259 insertions(+), 12 deletions(-) create mode 100644 docs/examples/alias_sampling.yaml create mode 100644 docs/images/as.png diff --git a/.gitignore b/.gitignore index 23b4763..c5b0b9c 100644 --- a/.gitignore +++ b/.gitignore @@ -152,6 +152,11 @@ dmypy.json # Cython debug symbols cython_debug/ +## ignore .DS Store file. +**/.DS_Store +*.DS Store + + # PyCharm # JetBrains specific template is maintained in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore diff --git a/docs/examples/alias_sampling.yaml b/docs/examples/alias_sampling.yaml new file mode 100644 index 0000000..673711f --- /dev/null +++ b/docs/examples/alias_sampling.yaml @@ -0,0 +1,205 @@ +program: + children: + - input_params: + - L + local_variables: + - R=ceiling(log_2(L)) + name: usp + ports: + - direction: input + name: in + size: R + - direction: output + name: out + size: R + resources: + - name: T_gates + type: additive + value: 8*L/multiplicity(2,L) + - name: rotations + type: additive + value: '2' + type: null + - name: had + ports: + - direction: input + name: in + size: N + - direction: output + name: out + size: N + type: null + - input_params: + - L + - mu + local_variables: + - R=ceiling(log_2(L)) + name: qrom + ports: + - direction: input + name: In_l + size: R + - direction: input + name: In_alt + size: R + - direction: input + name: In_keep + size: mu + - direction: output + name: out_l + size: R + - direction: output + name: out_alt + size: R + - direction: output + name: out_keep + size: mu + resources: + - name: T_gates + type: additive + value: 4*L-4 + type: null + - input_params: + - mu + name: compare + ports: + - direction: input + name: In_sigma + size: mu + - direction: input + name: In_keep + size: mu + - direction: input + name: In_flag + size: '1' + - direction: output + name: out_sigma + size: mu + - direction: output + name: out_keep + size: mu + - direction: output + name: out_flag + size: '1' + resources: + - name: T_gates + type: additive + value: 4*mu-4 + type: null + - connections: + - source: In_control + target: out_control + - source: In_target_0 + target: out_target_0 + - source: In_target_1 + target: out_target_1 + input_params: + - X + name: swap + ports: + - direction: input + name: In_control + size: '1' + - direction: input + name: In_target_0 + size: X + - direction: input + name: In_target_1 + size: X + - direction: output + name: out_control + size: null + - direction: output + name: out_target_0 + size: null + - direction: output + name: out_target_1 + size: null + resources: + - name: T_gates + type: additive + value: O(log_2(X)) + type: null + connections: + - source: In_0 + target: usp.in + - source: In_1 + target: had.in + - source: In_2 + target: qrom.In_alt + - source: In_3 + target: qrom.In_keep + - source: In_4 + target: compare.In_flag + - source: usp.out + target: qrom.In_l + - source: had.out + target: compare.In_sigma + - source: qrom.out_l + target: swap.In_target_0 + - source: qrom.out_alt + target: swap.In_target_1 + - source: qrom.out_keep + target: compare.In_keep + - source: compare.out_flag + target: swap.In_control + - source: swap.out_target_0 + target: out_0 + - source: compare.out_sigma + target: temp_0 + - source: swap.out_target_1 + target: temp_1 + - source: compare.out_keep + target: temp_2 + - source: swap.out_control + target: temp_3 + input_params: + - mu + - L + linked_params: + - source: L + targets: + - usp.L + - qrom.L + - swap.X + - source: mu + targets: + - had.mu + - qrom.mu + - compare.mu + local_variables: + - R=ceiling(log_2(L)) + name: alias_sampling + ports: + - direction: input + name: In_0 + size: R + - direction: input + name: In_1 + size: mu + - direction: input + name: In_2 + size: R + - direction: input + name: In_3 + size: mu + - direction: input + name: In_4 + size: '1' + - direction: output + name: out_0 + size: null + - direction: output + name: temp_0 + size: null + - direction: output + name: temp_1 + size: null + - direction: output + name: temp_2 + size: null + - direction: output + name: temp_3 + size: null + type: null +version: v1 diff --git a/docs/images/as.png b/docs/images/as.png new file mode 100644 index 0000000000000000000000000000000000000000..2f763f55edad08321f5f270e8aa53e1d63818cf4 GIT binary patch literal 88925 zcmd43gbeE`rq$nUABHi7ggo1=hH%dr%H>jYbbazOnbo^$W zqo4Er3*PHp=Q@`gHhZrp=9#(Yo_p3CMR`eloEtbOC@A>SQumcmP%ieOprDdsVZd+R za=0YJKN$KllJ`;0k^howGd`f8+(ePSFaFdyes$c*Ib3<-+t!AxtGDkBfs|Li)L4Pu zH?Lm}r?3W|G&$U_M4>xI`!Yn&##H=^52V>QI_cM zYnu=Mzj@=()vaM|w7gia8N+dHQoy^S430CpHbHd3?PQLjlidF9Z{foI8(`?vn}c5edr4h>_x^p8 zA1=vIsTs+eH*fm#wBl|__}?`jy89@CDPpp@WzH-*GBL5!ZKJkjsPH*97MAYjRO9Y) zf6%C9HGW)2q)v0-|Gq0KCgyvW=z05CrCkjBa|{s?k(#rk6``#!LPoj9uR3IZ zDqBY`R$x7SZ=}RTBJEMcP^}v;e2a1z{ojusQgd;Izae5Mdfq~Ca(Y_1(eVlANjZmVTsS!m+c%|>TnKs*d#JFPz0Pl&N|UteFL{iwwkiO;{ioraZ|YJEp@ z5fgK<@+O>_cQsYV>(%`Bzb-Mz$D<@a2)cG(Qqt~VQ!j{_S#wtyOhfANWg;R8XJ(e9PKXQQ3^d1kA;C>ebyX6$UsN;b(sT4*dr8XuJkN|RV!AK z(#6-LH+`O4mPSEO{pr)IEumBys`=V3O!r_HXhreK`MQ^{1YZ32BhkXU-4e110ue+E z@`|OV{hIq9GK6~v@^uuXq_E1z9W}J8kaKP`nx&lWybxpbS)-g)Ia_7^og}5+k8nl< zL&LLmqePEAH4H+^_*qX@ox1ky{JKZE>ZMp%SjqAU0EIjOzb0x0VPAEJi(c%mkH`J`^^4pq39%La2#2gie|)m-K7~ZX^tIvQ01W&a z&NI&*!+qY7ssC%;v~Wf|Pmdm#nX5&zYW;YkApCW@IlyHlw>XjiX- zXh%kp=a1*1!Vi1X<&X`g^4PsB=(wsoUgf}_HJ(s6mTLwk8877W{zY5l<01p;k#ei9 zcz(NQrKZH3Mx6#rJ!xZJ=cm2_0XySPlb1y1Pw9D}$74Cxy1Uf-CMf9n z*~uZw30S@T`dG}=l&*lovTtZ8A(&7Gc&*j(>L{lPmjG~fbH9$ko-cn#Jf-PC&i9F0 zx1E7^oPPh?Fg>N&Qyp@f_R zHuZALHTU((#qFL4_KA@$>1k<~FI@^N=Td-ozsPwVw&@(qN9o*FD>B%tEh*u86nRJ5 z-MvQg_`AAFrD;D?ndNxwsT*}arl#$Et!@@BN_8aSb7_UA>aOhapq zFg!U;O>zc>M1z%qTyuy4dd>cqDJc_AD<1~mKu$(^3v9&YE#HO)F*tVd86w+P(-Dv6 z`~)0c=F`k8=O>GzOa0j-u)Z0l{aLHS#Vxa^;D>gWv-7V|Q7IG~b{KajU+5Cr!3(;^ zLVfcl3KbPqd5c|ne!P$lxYf=5{jNF!JiPWguhN{l-kzSkN}UY(gh}&$xbKCA6p4T_ z&$5Dog4M#}a3*CO?=N4ztkx~}XYa>#83r>T4k`LJ0u$cdn_VlPOb0uAOU4@lZkw8h z20Vd+F`SFK-JSCK(_q9S{9w+%L{8ow&iLe4PZ}=VB3{^yNAh`9uc~}v{WkN=T(xPdA|>@zU7% zHaJ_|#+T@CsYDYgg2v+Al(Q`6FHmU`&2RP#F_P!E@w5W)2H4>qS)C+m~;C)~Q$ z*vFUJo^&nd!T8P=CVqaB^jYbmZp(#9q7?wbm^@isrpreh$scsYcr}DV(7$;)*{CZq z{Ptt&<1+}ZLuD3mEyrqw`slEz`U5#?!~0B6KZn&Ss13YjcB<%&%1G?eI^N${M4aAO zoQQ`2O8JCqcFQ*;nAg?S-O;MrjXe$^q%s8mMM)-!7^udd87k&$3kQ<0bs}D*!ul2_ z0r?c1%oK3Z5QM^_qg(4dj)evkz=W`Iai6aa73Qdy1_E3FXA)m)a*jqQH08LqzB`|} zXs2puNKYtoa8t+Yl)Kt-O@FMyMmA9>M#SUDdQi*B#XSB;1oO_AU030Ywrk)ezkGZU z6fNY!0p5CV=sL0n6LV$`7mye0w;zAJ2tIIjtA#29%pWBj;*!&(N0k28Kz8dXu^T+* zQm(F5Ek}nlL2TFgtZxEl>pFAS)xBv|v-L2fspJaXql*4023VH;F+0KtX4P~EV0`2R z4e=+3N#`dmG^aWiCkI>Mchuf{ov!G#N3*{I*VSF``;(-z^=#51Jd7>XTIruZq}C?7al_OB z8yUFE$8#A)7{Wi-7df2Xzpw9)rQQW_{_pkw%^P(pBsY;UAs4!$E60~4-!H}K36WT& zQMWiL+|fGP*sxIV-AcU@{uyuYBNaFCDFYH9k?Wo4Lc8xTG;3Cz&NXit$y;>vMjk_} ziaA2znfUW$ajH@g?u>(v{+pfULwU^jVH`=7hRoow#P|DWSGuAH3zOPwr-~GF@%w5p zAN9Apb)b9yFQ0lBC;bR-RZI6?$x4Sv@p0@__Wc)Fx%v}mkGyr*i%WW2y6)_^yVB`! zwTaIvh@W7;7R2V0)A>%Kx52xhTqMx9ez9}|jmpbPq)_s|gsqa4HsO`l&h(~It8De2 z5nZ;#{53-p!%7T#uD0B^sJuHQ!7o3MY59z&eJU`)S&hdp-}M$Cj20fmA@wu)cb%xI zAE-UVx!>XIagHYGzv8JY{n@j8F-jLB(s#3Lp?_wHSw>p5=}js9muh$HGWmdU9r0dq z#cUegow0*MSv>^4BA3)-2UD684)ph()$7E}gukmL5;_m-$9fC{9+k(aE-Ma|U)p2w zE}@kQeue*Gs$rkrp7{x{m)X{(|1%CbSDcd*N^-5WDw3x-mJ}DcM_zTb9CM@lip`!W zo{JB0PPWV1rN%wEA60`ThavVV@#?Oc>3>@i_`c%#X0P*WLCZV~p3f7MmSm;`R|;ai z*oor%-*UNqPM9!{OtMVCFe(#UA?Z;1iTcCxUmu4o#LTUh!G@2ETH@+kIM$Pb-OGM2 zFQ;nd-lsDby|#W*ywdQhcyuaY@z%O;Y3b>O|1;>ul(d2cmO<$R)Jq2HZ4q z33O)BE2+2z2DF+(78Y9d6927}Ub!8C`2h(Z=LIq@3OoxPjPn^4)rG_`rtT$*&m%uH zGw7NERojcYP#^xE&y<}D4xMG1jILU@U>SF}jl|kEw@|ISVlR(b<#Dn$FWXq_MU^_7 z2L5MlP0PQShIV~SMm=fOY2v5`Ih@CS>C8uUe24?E1-{0M&`%I{~hVn0_osarB*&P&6>Ov zsQsfF8Xq!BoiVaX+1KW93)Yk9`AVYy&v3ph`IZvh;vdl*T)$YpTTqsMqFXGUO`@6M zo;ZP5U0+g0|E~u_Z0RcN@wE#1$~$Ukv4q8Ci6?WjgigU2lQ->ZPdQ)n8=FY~x92!P zbH=Za#!5WUDd*&1W@1L?ziMs}x@UC0EOpg-}-czjf zGm+c~cqRHw<^L|+)EEKZ-UpKae~DVlfq_|zj(|$TX^XfECeo4NDgRCX?ht=lf88l# z!Lhn(5OJWYF9um$`~j~6}7%owpyABmL?q*HkH#IG+s z@N>$j+NI^IC+ghr_kD87sfo6fG%Ej8n92)_3IA5atyHG)T%#*v4etl~SPphXA zDujJ8u+R~8oWL6tQ=1&UB1Nb_`hJge`!UPP$az1{p8myDyp`B%Guvg5E+9z_uHP4`^h2|U7M z;tBAtP0{onq?G;>bmsg!Eu2cZnLEB3zG8A}sylC-m$6>D9iB5Ck%H?O9qCL^=84BJ zpjCYyGfu+9<%c7eeD66HKJWh7>)s1n8B^|8odIA^9vqYkA6_BQaKZe zLaY?I1Ut2{d(C-nPqxCU#BK-6MPtyfRAx4FNn)%f5>_vWJXQ2mE`ed|7+RuhcWRTTd`%=(8?y#A-tWF0zDYOCYnjQNnui{%w_s zsixvFPDqqs7|h z?E0we<`#DYk7!3*nv;_x<_w3CN=t`Fyn90HP1FJ4gbW0mvHpp5q@^3Dt*sBYU%)TNvOc*V zZriVo5XW_VYbF$x1@;AUZx?5d2DYL8&ZD~R7zaIdb?O`!T#nv$2Z-UvB5gkowdTnr z;(n?c{^0MRG__&K$$Rw2OaiOkwk?eF9)x;rVAP%NX@pP;|7fA|YG3X*eBTZH8j>&M z*BvpTVG?{z^e}HQw3c+z7D`b*u&gRR8(&;W7&{V3B5#G!J+O6qvx1T2}{@ zrsigBeEc*6>0%v?`5zHr4vmwO<^c{c;OE7|&M>LN!^I?ihvhzpmg7<&u!_CTJ>mNf zfeqN+yQ}KOt2Sys CD*0%I*Tfw13Z`p84f6$=(cjnLLJQX`#1=i6qJQdHc`If)Z zpU=sY{k!KMbJSERCvfkGh$I3X(hFqNsvA2yJIatbPkEHKK!Q99(6nzm44W;TygF4N z{rNSRKWVjR(^i-r<><<&vwhZHayogh2fa7XPBc7o_V*QAmd{*Vo_!^NQaaTJ25A1A z^9QN}+9s4(z3v_!(z3F&z`LxER~OqY%1?knC_Q-s%rzbG)#we=)>GDeC`6Gj&<)iF z)kM*x9z8-uNI2v~L%z50IUNkJyV_}^MtG=yGT7=dUN1+lW*g1v%are*v?(TNmL1q- zo?IYcb3%Xh=ibzbb6#`+BqbhBpq4@s#G(HM3z%RDU`g|9wsE?I_sOTHr*kwb--Fo} z+Ri^h*khoyI$}7Dki@(tgyMNeEcg8f4+>$xk!(7hUxP?4MBmjz1#dG29I-BN^t?HG zKR-SI`VY9u>%j6n06Oiqa@Nzt#Gt-xd79sBk>zz`26oyM>)2SlFd5bQ2V8RS!10tdp}1 zm#}?;o3BODe;&(K+u~x~St?Bt?p(*^9%;^VF%+0y>QI~~$j(Nxdbr+woQu7?mg?Z3 z`E}a*uHAy{@<47II9-G?_4Him`}uFJ#A&?C57rrWv5O@9ckKbXgd%0s+p6zwdLvuh zd5*zuH9Y2ZnLitSO;8vHnEqGn>cYv?r{Cq{m};WT&c4uKS$0}LXzr%?*HhO;!H_UqE|9qTr za;U~A_1>-s1ZLw-OQ+J}ItI2)`RGXND;&MD)tbJl{=0z%*@<)uVGa&|_Cf0B)4Dg= z9;P24X5P=pcc&6LQ_S;$@ybVEbLyveN$I!k|B4XV;BgOkdljVRU$ab6x7c|{yM|BoH_F10^5o6lx+BuRfIuki zn{eLVblO1wV?{m+)h4cn`s+{Y#a3iq^j{Jl3v(roK-VK9_#C&da&Z4x!cMZ|M&SdaOS)$o!&Zq2KOEsmxpREmrhBnWpQS7HZ(6%0G$V?K#|{PYRjJRJmYtFH!rCjX@k zv`Jjftu=xiy8G^CW`*HIjvd@`aTJy=-7Cb-46?Y)c zGGJkjzk52}qZ?lo58Lh@Bef3T^waE@dR(Z4gokU67d#HL{z5&6VUJrgKUPcHxrR9U zM_hBl-r;DZ$CPzoT=rmLY?jeeFUU@43qAslxfQOu&i3{%)7B_c_5#JDyd2NJ;USD6 z)D2qO+visD>+8}d$!!cO_8#r9?X}b+bH zyoOrp&rhwOuqBHW5_fi*2M42|R!gpHMkNBjr#7Xt3JY05z|d;htsxWCao_UO@DSQ* z=S2Rmym4MNqfj|=D?)fM|L^ks_T_$gL(-`iWCQlmw0L>diUn~S8yn#7*Q-Qv2?>q9 zyuO@BvAOEFvrcv~&CI3D>W>R}x3a}XkgMaH_6hK-=y{9mHe=xM7oUx(ZlzuVR?J-O zn{F}L4`3@UJT*3ND(SoUnjhuGva9>+?rueT`S@R3p83oy7d{e3J3jN}SN=QPFJwQs zz3D?6%M@SwyZiU#hp$ zQJ5rqgsYfYSz7vcB|8{ClJwQIlsuW$ozD)t^4vl$(bf|)ht!MCt+0`z8B)Q1G@Y2>Xv3yC^n4`3l2fwiuS;`|>mbP0 zw(l5uB!nrW?HesIFc6^;5E)DANXocS<>~bL7mTugruHs=vNp-!gnsox%quLMPYK0Z zYe$6YssVqd_Sy=?{`%sG{>nDpGoCDKIRjgRhR9I8X4=6rb;$Nc{na%F9h`Y(aal3B z^V;QuM6m;+TpgT4A*GkM;8?RQ7d!m+AJ&>7LvcE%Fdc6@E0#9Ul=m;SYOeCS_b{u! z|FjUOnpL`?9pWjj;x$XJ8#hEv9bOF1kKe^_?-Qy{GO~YTf3kr_S~@+mvx{ zZv>d2;2+=H!hx-)BUjg#2C;%ACS=A96_S?oUORQV&Hng(xf)UI&%cF5MjG1q{OfzD zZHuAEI-8l1IFnbsJ~P#b;F)d^GhkI;kyW;Gn&(ZRe|0!X1h85vq%3{v7ux3R%4T!Y zE!XV#5-U&#!VwSgJ@4s1w0+l#+z^snzW743{sMx4G z{xwp{%piZYVG$|F!S#+B0hUNIWxp~I4F31SyLT77I}AU0ouAd8iuuuRHq@saCbdt8 zp@i7;Ra}pJ>wAvRoxSyOzncEayz)b)_+kA>8_(a@PY(PmJC({POQ_JCLTz%j@6ejd zXK)T~J^zDpHvsMJUIlW@PB>*y-r#bS4N& zLUqNfo=6gdT$`Y}-q&|!6>UQYujz((rA9Ks(3>{pO@6kU)_`yaBJWq32mc$r{ZzvR zpck4(O3iHeJO$m_A$mdm=hP+)gMRR{2UTAk2~c@7ZPPe_2wJDoR=W?0VlX6z-Ag$hd3z11vl3`o%y249hS`%WyHs-uKW8 zkt%I^^Lyd`o1B}uvRc131rE^1H$SP#h!T?XiM2(tEDhw6!F*T8Dmjz>GJ5Ym(hCbG zU=z`UjWj~$olll}0jhlPD(Y3Dg&}n>MOTwVQe1>{`L1tIsho-(cSiFZxAfvv4?9r0 zWy_E1oKJ6dv`pr#n{lA5yJ1qsW5`i5UlG6I{hPD5A@w5|JgS7=^Qg`%II11TvfWt&dfq!ngqXjTfz9w}j45cDT$2-ex4a27*xN%8eV# z(@lSze(L8+_d^a4jv2y)cu%xMMMbL|*J7)E+)q-J>~>Iz!oE@j91vad!nx8FdzVFc zxcz>cEas#b=Ta+g>l{BFlZ4bj_Kkys`Mk(`$-0nQ@Wc&c<=b1>RT+JIQOrJGt|0zO z+ggT@GwrS@A4hw-+oZ#Ep~-@|r!s}58FP?vlNIELSCZ`Eo~s%>UvMFxIk)UK&8!q{Uo+>>Q?3Nkuk z*3SXsH{+&B>8&<2p^N??;?(YIg(2RzxS)ulAT480fqC5Kr3p2Tz=ffqhoN(fQf>O> zqX+@ww!fYR$M-Ec|NBv^`UGSZEB^uk#;RB@lO{MTh@}>e=2OjrR!IB&s={{?pd!(* zat#OiCeH8%8ySom1JYN-ay%y=-Rc1AhK}YY{VQcw@PYh`Cl4%i=~RbWxm_?{^d04KCvbD25}@5gc>s z<4+Gkq!n#5`|a|zYmpnXe^2DJ?a6^n-QfZmur?1smj%*9@F}y4i<0@;wODv~B~@SI z9ya3l799}3^7lybbmFVS2+8rbdz|+{gs7`he!M-C!y(z#&5p}V?De9l;}Zh|T8%RE z>76c7qrT6N+Y2x>F54Ioh?cpjDh%RJB*=+D&b3l`j3?S?dSv9#-tcWVezz-hnPF4b~lWg z7^OmZT1wLCF31R>n=9=}qDlB)h|5EY!bQ%+^UBl$N?(SA zCGf8jZgGbC1%jSD6_Bcl9ItYEo*f#2!pFEji&)rg&j1SNDp7yMl-eag(4C#_*Ml$K z=my=zhU_#bO zLr?Dy8};7XyQ$EkzvI51`mLFbjjrw#2}II%zVCJ3LS|JX4s_Zfh(f=&*Zed||GU}U zwI|zcAXf>`uRn_gxrl~Vh-Ltc;Is4A45+jMA?Mz1KqK62=j`fEl_sh?T4s)y&*-23 zBgB+qZI9>wur=Gl`Qpb_^)ho42mWnAn7e)ild?Xj4Iy}Zc>Nm7b$?wB7V;2;5jlvI z_n*sF7k(uKvZ9*JCR{v_Vl3Ov5#E+%Mg^@-3#emW2L^tGTpYOW2oO~ifhaax<}X?# zrj~c$4quV!^Nwm8Urf>p(yCGgpHbR9PLsApUpTJQ_G)pc)PX z$;w@$PI54g99C&dF+KImeHAv(fwgXf-M}UwSV(kRPXW;yqQU#mW>op$ba;P@qhLj;Y|hyJub%Qd!(a3u>}NnKGoo`|$0 zmsJw<6KnL{>2hQ$d79sQ(qsUYBAku=>d?C+ue0Ihoa&doHn>oLIJ{ z#k`t6ejl`1!xc6(lkPkCU|cgHg6mU2VjF>B{BP8@y+c(F%s`>e4I3rB7%I?%_2NhF z3p_KTw5&hb#uYu?C5mFxNryBS^wbYCy#8c6bH#AtdythZHU0YK4N)#@i?BRqD!tf@ z+G}A{cFbGr*Fl}IOPig&BcPLwduate?GLBCz_8;6y=-)t$I;^F$DaUPX8+G>t}=of zLiTm$YY?Z?x~97auI?Qm;h>1Bc~w&Ybt|L2?cLdN(iSrYQm4cT&qSM#6Z>xJ-C_2^ z?a76cCq!0ez3KQCBPDvUhKN86#M3`ZOrB`FF44LEUiRxy;X0oo`PZXvT?=S#1ZM0T zC^MhcdkWLZM3z+1MzwSC6%vHxyxe&l_Aa)#D}zCN*K>R-0!+kjFJ z>7T!jouRky4uLV1;e2nANAM~xXK`nsUks_SXQS>u`vpx`oK!loCN(KOY{tU8F73LD z0Z}ok;Ipea`_@p;zSiu!AKurCJ^4oAG}c%?=_vy-2vonRAgzM%@d_#eoSojpUJx{jyVS8%v5d)cTZ52^hg*ibZ2(jz`^R!J z-gbi1V~#+-_&T6Sljt626dcPCedhj!eMTpABsF1RCy>xN=2@YTB!U9*YVbL_bYrpE zAnSzZu?0e+Roc!wgCz4hkNI_w-~Z3xl#*H0OJ2jSusg0kLw3b1=z9g8pkd>LRr`do z8r0F%-zk0)zRJ8&xy8E9*(MU2=Ub9Zz=VYbIZH>h_Jk@62giFjLf}`z#~d$zx+^#4 zxVNeX#C21u^ao&-3_zh@b1)MGz~bxw&InFCK)s$a3k`5M9bkt!EDNhVLz`@zGIwOY z-{>wNd}{VQ(taUo*I?*80eg#8$99~J*{GLa@007>e!!F^pg)WRYpceegk1Bsi>zApt*S;OvY- zT*-^(<>iHecfH|LsK`Hg8EC724HeQLP!_(* zkc}oKzgTm)m6!V$;mdpvRZu*wc@)eOgdZB+;O)z|1BQ&-ZkG(>xaOKJsq*4p404s>s zXCV^m{pwBuq(VfM^fHd)4?v##0?^O-Xes0H*Qe0y90sqs9~h)J2i8~aQ8Q~$t-I7( zleb>?x)K>;i*9_oT7bDT*()>&`pq8)0{Jqp)_F|0z{3Ak|R@R5QB1B5vNSTqH3lXv}3 zpiD*4DA2tCh0Voa-iZQMDKsFkiBtXjC63wsXr$1Jua-8i7_P8-Ywb*Z5im15qCjVm zwG)_H^lJ8(&P$7mP)CTABAI&kljic{SW>HT5nuKFs^wvJB9&ln$?`{uU_}sf)u2X* z96%)2LR3a-fZ&Yx*2m2p-uyvV{AD0JM^yd(1Qb7H*lG>5Kz`PAW+f;1`KtYOGnGSP z`ZUu9txp{y2PkA`FX)Ac?}7}%&Y)qW9JF%_BMWH3M~&n8_X@WsvYYEKmbep))Zv|d z?WpaoZzzho$vxrbaMcEM4=;LBrO8D-&5o!$y zs&bEwfTAUiE`g`Zifb`4%jsT*lU9c2{SDqWk=_rvnHjH{o}}Y}KU~}<)E}; z;9ADi!nkS&YQ=J|m+;7r?vyfX;bHl>O>mLT5nmNg z1G!8)y)%kYd2_mE(%wx=q}^t=C3F#xQhO{nt~a2CE0mO-a8UVeW_-UA|9kJ&j#V&O zNN?YOxIXfZ+P&}Z>2g_&+gchTUWBnEUZ4_{Y1@jv5-}A?3Bp#C>O~EWE@gKXvcnne zA)eVs#232HxK)jn!!G)Y1=tiEpi8~+c_k`#_)ziGGMkyX2Nf0d*LXEAfOkX4No3=A zf(hJDKF-Gq2Atx%Jc^ zX7O7$ywl6m5W;`4tgaNO5$Go#_qbp+f2!R#X_D8>33tWN(@%E5yc9UuyC5k+5mVV)OY>Deyfj5Pe15LcSX87?!tFe7~lti=aHbuvcWP z^Ob`~Wp);Y)p|){e7tPAAMR^w+)N&My$>KA4S%XhhoH#n4Z zCsB=0KKCoDm9*Opk`Mk&=N1s_kdpb)`mVsgyCTUXBcov`dMGYAG&aJ| zB}pzZ51+8@%xiDR;>t-&r$F^|b)q&7X4#!Aeqm@uc)enn4Zj^bI?YT&L%}oCu3n8B z%i6k-zqLnyA}J=)dZe_I`{vbH!r!jgmDhfb#tXPE-6q#TGb$%OBjUix%r?q~ka0d+ z+$HiHD6zNK*Kt7b+>D%@3`x3o&ys>TR5|I#pLKA9kPG%h3CNy8(Mt^hvZ~ zArNDTbpTuZ8WdB|pEw81Um6IG0Q>ntpWzN9Xiv&5FK9o!gE(IF0Za`}XHT^oq^h=D zI)b~QoAcl4>&6~`52-aa5YyftiQQejyVk|xZlX9aQoJSfV(@{aWArt(@qqerR%)_F zlA8n!=6q{YpDak*#}dT-(Nw6qQol09$cF41J$usija*H91dyp3kVhS{YGgA2k+m3{ zF?_|+79t}*Y?w|wZ{oUp>*H6wSf_Im=EElCmQoc)@-{)QT+NG6k1k7ixStk89cL1v_cWgsw}*1v?OGlSE!p107P zF76{+J((oP%q&Gz_;MU0muWQS%vxN#Lo`YWf!O3Em2S zL+8ro>HcJ~@lR^Y`qMq3!Ij60d9g!JmUvc{H`8+#Wo4k)78yBH>ve^X!rCCs1T)fi zd98-0q$MI3bKa7DjZ*{2_z~ARr{Oh6kmodeogeEUx*nq>4~zzyP@#K%IKucy@$<)%Vi?>^GsPnJaS9uQJ=D&mZtAJ-O~e&5d|($%Tdb-KJ57ww(d*Humh1HL{ z^P#_ zL?Qi_?NT3R&Fb9A6@%AGtbS$+2i0NWf@y>Yvhwoj;950noZp=u@ApFN&EhPh{%m_w zR07DU9371;A~d4A7PKrzbW8o=rn|DoyorOY%mB=N}uTYXOy zwt%j(g_;c5_cxG2BJvmTtwY1ZKcQ_&C11M(8mV?IvXDVuMDqli$isFHOrAQ0cmoN9B3%dbGEu@dzs{WJ*;SBlsqP1&X z^#Bi9*`e@z`#EgdoV9sW{$ZQH?Q*M^ENsW;EpnNk zo6V#qFKg0*L-+1OJ|9))} zgRQ73^GPqrbg4+)cxZdw*0APM@A7q4R#pK$7H~8y8f68Zr>>wB!4m_ZxHMTWiiUxg z4BVG%S=pKGQM&&NhCrBwp;t*@>Y{PZvwPV~q3EJRN+h->S(zejF| za7&=OpT^%h^&PN?WcEQfU!4#F-|7cpc>7(8& z9PYG!Q)vZ-3}`M*8xetO9Kzv)WLL;$6hKdb!-@(>mC?k2dW34@y{}(N+(OIms#@u* z{~n8pvKF^zR3(DksHLSPpg&vniK3#S<&(3M9R&f$)z{Eo3~h(ZPJ&|6PCwj2A1f{v zl$Q1@pUKL~8URM-1~axs~!cR$l#DK4!kQ+p5>ad?OSF|99` zcmge>M%&EngA%ovF7HX4ide>Pm2ga+qQ{`C^Ju@%aw@Z=%?LFcZW5G}l|?BiD$24S z&3gI$1A`qjJ>!(>=_Rx=dGAiq{U;p79*{7gZm57?qM+ypyX;Iqx z;NcNH5D>1Jj#wr)AG8oZ@tHvbRi``ntvhN(|1{caR-iOM%bss$CgWhf4$}Jzkb%>* z?=}i_RLVlbF0)FGF60cM7U%F~e0+Sr^7J4tc>^L!8k$dIJfFBKt2IB1b`33W$+k(u zYk86{&~aF3)J6I5?e)i&oR(u1KANmZD=5;b2?ZSlcFD@M@gLma^Oj}(x@4%sR<8AO z#ILqi7?A-0J@UEV6zV$P;Y=gXF91Dh!oPoZud1r1>nSx zsYy);XX21)v^uB6yhJhL@5q^ZcEhKz$P%N~!!9T6!Q-ArD++VpIEV4gXI1VR5|cV< z-{CMk-Y(NQt(NX$>v^w+qH1Zz7oRhof1Mj!ttWU=hu!q7GO`8p0){L;mzWwaYc;Y# zH~^oi`T0pzRR?X;W`;;J#OX{-@bFM19{lYvzzOgEYAdptyb=@@{Uj*Wqo|iYOH$!1|Vc{F-wfvMa-SsD-i&-DciOZzN z7ZQMOpq4=iU07UfLfSbwC} zH09lc%GkSbgttQ3d3j0D(9q^=`70|cqvPU43-R6D+@MXLup#W01n@19me(>hTO;1% zaDH795(pjnBQ!+8gp5nwYfjblH6JQ=lE;^Po7|lGEeGr z0{ckLG2Ck=dTu$f3VS5BGyeWH)X^@$Bos@9*2e<;{fnTqH#0MX@(bGO!6P6; znetiDxUszbY~{4%C847XIu`YNE-qRAR$xpTRJvkC5}^xLPBi`#Cgp-P4T+cNXvCSZu62!jR%$vX~Y*($j+@IZ~c1M@(iH?-;F zD~61p%egE@!eNc>Nl1KeYkLmzkrQYl2E5INxHjlZKu!%1Ir8w1jT4E>-Xj@V|HupV z#MWDpPYb^e-2X<>b>r?2Nj0ncT;it^tgja17=Nv0>3+?mPG4i5Q%Q_WurU=leJ18y z@K~6b0v+HBEim>CeSP6$W1679g$Tm{=fUruk9zKaawsPcPddbz64U-b$WB&#%RZ54 ziOs&veD^*QpP4oN@Zex-VZlEr2sb4q#d|l|6^J^eH7W{<4j@)r5fF|764r0@ zm(0YQmpg>hjERZ&e;`71@B(ILX7H^oK%I3#`X^I+4i%X;q*n&0o=T5n$FFZ0Rqpju zD?}#K($mxLu8l?^G_Gc?YXpdvw;)7Aux)@Pkb(`jc62lZK_(I~4i22b)jyYR>)k$K zI~2Ip(IziHXZEdT8eoL@sTk`k_S^_^Dihf_FXqQu6=^ApRqjf54=A|-jfJ(%15QZ) zA`tvgLQgM6UJ9+XtBXNEAa--p`r4gm4F_AZOT8I{B%bFtwu`Oren|P8>W1rg?=dxX zt#U<#)Jqh0Gc6CphZ@D{zB2xEsp?kJ8@9$CKMaJJo1FLIQ=hwzg)KJ+?PM_nmKK zR^e^h6#JC<;^_A)ag>DhW49C0a#EvJXlQ7(R-GV1R|3?@-1h(y|1}80payR~R#B+$ ze>MA~>(l$_rD)(B5!2$a82JLS6Mo0l>j-}X7{CY$#t?iiGB7Xz0BnaU?wi0srl=#G z!B)1HK4dtrzlU``uu?_G^e6q) z)Yk6{00OW=H@_3Old}8okZQrsh*>_8r|26Pe1W~@ciE;zfoyFW9^WxQe8-tw^!xLrKYBCf+{^jb8orAPU499gHNHu*O4rgeztUC6;D0`7fp3C9`ja6@E>P0A6!&& z7s9wFOB9|sqiOaeT~-eOC5T^;+8;P2a1Ta+z7YBI(C8>9JRt(?P0YZ+pf=~~(EtH) z!249v7haP5WEeN}EN>%*{IyByo4?P)61(s-KPuV2&ApJL{ZS-y+6Qc)(quRD`1#1C9P5W9GKdiLvT4I7V?FskR4-A{ucA_TB2P3FJ@o}qIk>B7PBvFfAq{+|I; z)8PwaWH)Xo0hZOTcN4zb_VT(}>D8d>M0W#*i0T;RF**N_ulJ7T`tSe8jSvxqq!5Kf zsZbiqs>sS#cJ@f2R3yoa1{v8Qo6PL2WGgFDLfJ{#B~*U5$8~)^zu)(q?>WCe-sd`X z6?(p&kNdc-2Z6pJsDO(nhgFP{NP3920^f@G+mQT`0u-I%&&pITWLnZGn|B+4>xOCo zzNa1F)gOvJDD1cRd#l3g;bOFSwp*RVuGW{Wt|?2rFFC@MPHS`y)VVEp}L0AOv z01+pOMx5{*H9j9Jk{#>IzK$wbP7da!HWFA>c6B$nFeIfsA)pZDBlW~`V#q>vecA6-%6tu^Vn|V6A;PBzW%@=Pib1txiDY;y}434b^q$- z2TpCkO5&i9t-H{pX9AqJu5plKPq-4sCt`JiwW|W6QuaIPs}T<#Fv=+97^&c_(L0^X z){Ss8E41&;!5B5$sj$OoWzjaru&nm^g%@ADGgu+8NW;DlHHB))U%&w%%hGZ*zlN?{ zMhFckd^UFWO*?i3>1T^xyk)zBe$BRJ%lpY&8n@M>ug-k^nx6GMGCH~iZ>h46?%F$_i+nc@nfZ|5=aLuo>S$Dr% z*e)B(YA|cJn`ihg42(VJxB30MtAg1ae-=d+?XWsQTiAs!nv7)=ZE@tOqSy{iPA)ec z#thf;-!w3OS65d??qh8BQw*gvgU4-ty7SSvpb*|oOWXbQ=~Ev+zh^ymL{&-@K4;E2 zk2Y;0FbusEqvtjn5P${mS9f>fY(!orX*WM^>x+7SHQ>Zkb$l9zA6KSV5harCS6u z%6fYGA(UzY)8k`58JwH(`)L!_VFdLE&s`@32?cuB>$h*2eC1>z0f12u@lPBZHf+Gp zbjsab3Ll^)I&P3d`-cyac#}7AaXmmE1^sUZG0axZv&`*~o$(0?-NO)1Msdg!h!lb% zM)Hb>*=N83=2%LICX8f#0o~>cZT^jeK+nJ+m#8jP9E5L>k98RjWVw26Rk|T)he^KA zFctT?V@td`pYg*;PESvhzw7BqK^#FymU;!oL)q{%*wd56(g)w$iHPOdG1x{VN9Zz% zoh~wX3{(=J+^>#yB02=6ZdAsd+SvbA?@CXh^C!_=Vh%K;19)?&L+*bzZ@%YUEvVS~ z)I0H~{n(F!TEHS2IP5zoFO~%i&}=eMZjF=nYKRjaOqEerVqjo6;xxPt;w!EbZegHe zSh=|$>Ss4}b%mgPPZ`&*ZOvNP(T=&5$b>OJjs;bJ>Yh^o)KkfaiUe&Gn zYK7xri)AB<>V=A%2Z1Wpzk3&oU+KNs^^=|;O#fBEYM8yx7K_5He1R^7vqn7W;apxe z&+d`Tal>fZcy>+Wx07*-%svugwg`VLJRObv{f<0F1voumG}i1TCIgFn-*=EWu=a-C6Bn=27Nv zr%#{8jG@E9a6=k8!Pm95&kQ$GVZlf#m&{V!5hUN=E)~@nxBBLd3K}iu4#7Qp=nV`E z;wWfSs;la|$MSWxsz0-j*DX2zle8^c>NPcB&iwv#P4(Di&&%SkCZn7Wy#s03-`~G} z!v>LD;ARW=Er*?Y?Qr=CBr{V15W+`PGMKb3uNi>(%~kN`$;__=1$mkOW) z0swpN@?}w!*|C@_Rj;6G#w&L4V(q%VVu$+y0rYBWYD5D^uqsHXoPf9$ym*mSSM}$Q zJ1Q7SQNr7a$>Sh4?aj+9JdJD5l4sRYxW=!G+}T@!bp*R74KF``vXZX^#f=+FbW%ax zc87q1=5%?`=*U|dz0Bm|xcZXw*`K9q*SV!L=sMqyVbMzleTyFxQs%o65gfcal-k1K zLg7l-&j@e@QC&wzhth`0=W1a}W4r2^f~BNeM5MxWZ88*hcm>XtUcF*#8}Q-<8|C=- z?}l=U-d!f2&Fao)`5yT_Xry*DL;84T=xf0M-MJ4NU(Z(iy12Z>XQr@>>r;#}L?~f}u zfg03^4=-=*#~YcFkU$Zo;`ic(INH0&ob%PIWQ87kN?JeDlrKq z2;!HHJj6`MO4iJ=Ps?>W_`zuNJDHV#4;*&MouHwT9pFbk7Ke%Z zV-(#dz)q@sf@wpn36I4I-NxWT&mKvxns-J&ZRyqH%=Aap9Gwp(_-3tX2Sn;-*ZrgRRG~fLto!HA|nrC&Up9keNbB~XJ}+J3DwH9K))W%${FmuMg|TP0Ayd+( zH;4Pxt5+&fV!qHZoy_}zoC77GJ~=r#c)safL8oVLR{fb*Mui~qI^pm@P?Jcjd&?~S z2hM0AlpH}((T$z}3y}NQhK2ubfywdPkM8F@oH?n&Q_Yv@#<0$-JU~C&3Pb{4tO885 zbW$Fav9Ym)YWZnuG?`ymXaQ(-<*>XuGmCjP&+OvWkVsmV7t~KPvdp5lm|a)8&meEp zf1!FDPd~aWG>m2ckDdJ7z7?NLHI-=uR39e?QfFdv(I~P|HkC_CloPu$Mfv$)*sCY z?M_1Gh%+N_4B_zz@Jm5Y?Ljo9% zZpZAxda=@&&lK4wJFR+ed3%MQr_;~m;tbu8M{*51w#ykZ2PEF*p3qK+5^oz+j?SEwMD{XFmaK)lpzMrYqI8RBB^GRZ?kEyS#@(uvl~yWv;*Kb__x<=7BE} ziWWdead9yTHpXu}MM7%8nj{{YZZPtZ36cQ}b%*N=A0FG!jZs|sOg`zBn$v~%@5oK{ zE;{IpU7hZ|!(q{37i_G$C)KUKFzw~*$wMJ}ePh)%;#(QtX7%_mB%^mhZ7Yvcawz}$_+`4g!$|lMs{!uI=>#TU#FvlO1taCJB&RT zZ1B67Wr?nyaGOdgi=m4{f$lQivh2s&`(vuVU7U$O1!FkuBxdk;`S|+g1C+}=pruX; zD2KB2+T>=OW7>|tPqqXVwVa6`sa5BrUe!JC<~rXd-%`cF&hCV`$>J-Y+mH{j72P`W33?U0+`sRQ-1)d&tKB!f|SsE!#4uqb+OUO-dDqpLjHn z9oJtr4t`?v=T)kePl0Z3Wa@!+OLra31lY!3HSc(}_SWuDVy$7{x{u9W1@_F%DFswV zjvW)b_EjAc00tRd-7UZjI>!t#rlYJdC@3f(?lpM>lLJ(o4^=aTStv#)CZ^_}HCu?G z_-uPfyMO}j1%u>$eD~zq&+I;A?AsR_VWhMIZxb)gG^Mwl+h|(SI`pB`?2x30~4|Tt!q@+rf zJcrHLw+fJHyG7J6J*&fr-R5rhaeXTuq2~oB*WLKI-DK&i`*c8WLQmja@|DZu?_*c< zTZZuhqH0_nX<*XS)GYPr3gg%&IMTQNp8m!->8_H1aCwcYQ5U)pj;H7DdHg8z|F(ar z=h==^SNx7=I9hIyn4)B|KWq82;@XkFp@q*SC};S>2XTH*2jq2Ncyk=CquW3C*&b^xdVXNfCfCwcHoZg#9~ksotJmu(xppVj~3Wz)irs7 z2!FAWVNPEC==Xlsjxy0uB@20VcWa;Jdg&2|{|yNVxwf3nx_PtW*|U5I0ReZg zd9^L}Ab0N;zu--Db9BjE=50R~ukwaBPsV>~Q?)HyUO1GgZ#x#zd~37PuG!Gd9!Wj5 zugXFq^i>tIeDBey|DJhWx|GHKOG$(YWtm9U;C{@reJ6+!hSViuTm^dtoS+k8G5oXy zIoRRxn-3q-UJY9f-VQn}S;RSnACI6eSoX3xHcb-zKJp;7Cpys_s!;(fGS8kpBVjy5 zRS8V>QeR;Jz|r?PMyqv)G2*#`VJ6|=_*?zK%3FyYfvU;fBmw8Z^iA!S*#I(8X4L|BMchL6w~^Z ztE2@fk%X2HAGTUsTjS{y2#M%si02D63K%7P2t5^#{#Og2@Cd`_nrHA~SW!;KouvM= zn^$!MuPuk`WRC||xKhiW(%&x&FI}Rk+O=rke!HoV{hlnR)Xf7F)tEe4i{00+Rt1}x zP(Gce<^HE-ES~8vF0H&gD5ELA>i+jbEp?CYnWUjV%L^nP7Yc*CE1yq7C;~>gw!J+F zkSQw*i;Sr$@3|8{!>Zo0uUGP23UqHvvz;vnz50!>EZ&arfzQy%JhjV8&;x_|4}-(f z(t4*fd1L&p+`#kYsLqC)A9U9$6m=X$RlVC8CdWl^Q%cb3ciW~?`3J$Nb0!hQQ+Y4P_rjQiDPRQ!q? zqzzzmo068gF!zp6&c!g z4@ObS@b~T@)f}&0-L-e`^9t4EshJq=S)Tq!cVo9}x~SYwtC?c2j9NIK^TS(w$>+xP zm4q|vZ7H0~xKNhS*S12N&zsSQfM8@QdttxG1Mg#0utXj>1cm6^KsUpGvFv8)RtThF z{gUrR&s$~hHtxi1id`RbA=Q`f-~ZH1SXN#yx^0MG&%<4I08fF;n!s+r9eE4+V7ghX zB?djTzf5h#mmKCP&)e=DJH&nbU3vW4$2RQ;Y0;jKHT}Za^R2`k`XoTIDi>v|2%0a? zkKv^*AEk3RBikpS_;S5uTg}j#cg<3#>+>F3hN~B6-rVt(Na(pAE}X2hWkt(}@omC8 z|2%VsbREZU3I~eAgf+VPHPvbpb5jnSvtXGOJzx6uQ)Xiq3^>t;9a^Aky8F_#7l#=R zF0;AedUseoh1eKC;{?RV$BQmS`}_L~UE)peP1hDi68zr}4roKZX=*2uPCmMiw`^!^ z?6kT%3rV?-IqZNp_1tGG`gLAzKA4-~5hUCZU^Vh~aG~Bq>q^QHriGw>HPMI{Sa)Hv zD)M(v_j$CVrg$lVcZ1oDv*9P~&)*x}rNL2K)y{X~jN6r72L0+By-*%skAbXh#hz_D zY6thrWcf8+k#(VyqMhv7%N_98@k@2WvLwCjCykEe7ak76boH*iq%RvpKxnG19hQ^# z3UZn=Xfj*2Y`J;s)>K^)Nc^zb0s=4qa|AH9l>Z5Hb*Zd0&S z1s;FhRu(fZh8m-6v^g(+)d2H`{O^b=)lF!*!Vn-(!@j<8$H_k(?UrJk48C5dg9wBF zq9EB_!&BboX{4267ioQm(&EeU3Z?Hk5`pukpCdGLB!XijpT-%RKckvaSkpaP;{WT4 z?5JeOQg1-G=Cg|8B$?EXc%z8gl#qhHJIaS|F?#9lpKO1s)X>~a4^o6M(u(2om_3tO zd(oEaV8-jPD=IB7Cn{>xv}>*(PK~L{8r1_+gAicy6Qe9s(#fC=%F4>nRG>ba6OA1L zMp> zOL$sU%Gfgck1KPm4DWE9+I%gR%1Q^xyX$;!e3_NIC;fXS@D6)_baZ=mh`Mn2O*gmU z$;q=e>DmrIaUBOn>qrbzSXqB#rEYF+e%0R}YyH&q%+mbA0-%*>t!KJ;?be0g$0(1L zE}tmLQmcM2CI$SXEt8 z*%%URWojw|+WVuF3->3vk|@m&78iL8Khl0YtGP8jK$V?K=V+PBg~0W1&ORQL%=4d) z_r9>}Z{N>#c79k{k~eIim+D-GF~_Lx4<+ffI~WaW%z2AqZ)sp|Oduau>7DTV&;&%Ey4qo9+hO4Iwu) z8#itwZo}l%R58F1kF8(uJPr+&x3UsMy$0FybV5f$`!KZr0uD(U~y~OM_a2<5O2udXX zzI}km?0 z&rjL$L8-bp+$(xl>fLLJtD;`iSHFzAW(3N2i;=C-zgCMoLHKgtmDs!Qq-DQFy`0(` zoA^$_^zXH?B|T*gA-3NuE3oRfBE_6?Pf!PBOoVLI(9j?g4A8n~x>@-|G>}&W8Ue4_ z)Upuf1R3>B#6*WBmqZt0$}~k?779N!bzN@O0w8v&$KPZBUBMqhQH`)XxVd^N_j|B! zunAJ~d#)}7dZ2?|ABRUoWKs|EFeS~Iq#irpn*A*6?btAq5xXq}r}=oJu(uI90Ra~-t@!-gZH3a7Pjo(h3d=bK7a9XIv`?q{Z*2vq1 z8@;V;A-iMS9S;Z%e7CvXfVmV14GfYlQ`5OTE1>Sh@g9TQMw`9q>N+`}>xv5SRM&a2KO-n-Hy>1DUC8%P`;%XMn;S~8rfIG?br`;_DG5XC-TGdCBzy~c1$eg zZR{rLZ=q!IM^GK;9LVT!$%`-MQ*0WtSSb)if|cS$-AT;PfUz%Lxe}C}z3=+<>p1wP zz_U_PQq&a7Z+xt+rMkKh9n(7MF+V@wgonLrm-qMYmrxj+nw$AVMD7E_A6Nxr9yej6 zrnV7ZmYh1Nd5BaV>i_*R6IxcbEPuMV>pAP^csgWA?6oT@S262D^*(ZQmKSG)B)6pe zy0(`&?OePS8Z+F=Y(QpG&&9WaNi($k+oPST78m$mvIPGaI2iZ(Sjwho#WX}=js%4E z9~BC6S7MJiQK8ze{QA)fIE~D>si~>wE?MIS0s>;9yk-0J>X+Gmp{N{xHOG!kIU#)K zLP(I;>irI}bhr6XOF>1NO*uavJCA$wKP}qMoO2?xYE3EG>XA$ol@vl9UuepD{r=k( z(DuOJ{G#KZ<9SPur9OVY%|DaBTjyp+CZ7oX<=7{g@`lo)^e#)o9ozm4Qiu#a)ZN6R zdqU#)@fg?)o##i-s>L38g+@bk@7TCNM&h%^i|TLlW6x!+);@-~ zY20qg*XDc-3CchL*@c1$#Nq{XU6(G|ssDR;Oa&(gDlEe)_b8yqagIRm4&eh=T5qYV zt9#`5@hJx8qRRu@u)PBU!;MchfRPOhKDo_F_tw>|V`U9h;!MNILX|XF65jH0+9cw? z_fjc6*UHdlF4W`lSUEEEwxva>WO}d~mlLGV&UK#>HLkdqpYIekKabl+@~|bL#XbOQ z0&InG$H`cLb>Xu<&lzE3kA!m&MNa@sNZ0=ff-IC}Wy${Vru@X;}{vOk_#Y zILF7jL2hKDqXoT%aj0`f+%l)=AIi6@ip$^ki5!hq$qK&~*=oQ$^u=fsQ%y>xMQGIR zv0oRMx>XKlZxuiORf48K?n{3zO9``tucp+GpCerxlI_^6ewj{F&{~<=&^9HTQTe($ zPS9GIRB!jcwO@?$NKq&QD7^4X$Ky;Ppxu>pQ zKdh9p83HwAj{@R=mx&G^IuTZ$;PFi;Kd9T{ShRU)+mhA}AHm~VoYzx_`yzZJ8TZkg z?l~?>u1DI)b);s){t65TC%l;@oWnFbD14)_rH zkpQ)(L6cLi=P=KerF#DSd1x9ma{lB&+3uP?dws1OhA)8JN|!<-B9>%sDW%LOntiG? zGn^|xHEB!g075=tD-_XN(Q+9B2;`_?&4-~XK~EzE9CXh0ANmjoAQ*g~y#K~AA~iVp z(Lf{c^w;6M@fJeeFtZzGc^52ZYi1CG>u-n}T&4(Cgt3gMrQ_IL?S(D5CCy^PV( zhNzli&r%?;sOhnh5pS^eTeh$>uCjM4_CL3b-KKNgY&g%1R`;UU6%w4?&Fc4G= zWnO-MBH#?@J7Zz72Vb6gYk$Z@@5wiB-W(7Ye_dan@@92>VghkkiL9S_N+5AGkh|B~ z)FhMCDbvZw(fx%n7?Ed-DF)`*gHuq59b65aQ(m-TJUI;TYuY9NawHr{SQY$Dl ziv75{Hpf1(jCzV~^TCy>Wj{FU55i1JT1`xhf$xus2;de3!2SN?$0Uj^HetD>P8J>> zV`1i(p!@)PiV+^2e8dp65RDTiZgN=;Qlo*`p(QcnJvJY#a3%Hyq!*A33VeBjW}sI? zjLHfj2gomiT*E?2A~{CK#^#_2!MgGaki|`0O#)Q^w#{eg1aBs1<8fM8TSpx6$1i!I zLWkB@cW?DOb4Y?GAgF|pE8y!_8xN$f5IGBm<%js#i0uV|Cgw1u6WI`!Qc%FkKyb-m zhjQfB29I>AE%V-#>wLbmYemBY{TkH~1FKZ{Ln#$iR9v z2h~fWw(tdjr}pokU&MM0Nyj`crXqSvl;ZQaxGO3*ZmV?)8uRHT>18zQ*kdk%5C??D z#|L4`fk4a}e~n~PV1w(<3BFynS-+A$rL(+(UG!3g!M%fj0~e|GR6cPK$-72*)w+48 zxx-K?KtRu{T*lc{(^CFAgN1whtj(FE=Y0jUx6(2ZZ$f`|`k@$=_nm80L=P@bG$IGti=RW>;hI%V0Q00i?pr)Kp#0^hIG| zT}KBCw7Ev%J-6y5#l^)3DnFqULx73-KxN{@jVn&~hif@Jb29DS+*YV{%D*@{uAnLRITy+A*nCIJO!AMicO5^ULtLzs3(@MGXW*;cF-Jt57Hl3jCzPoV7f%V;Vea$I`_G@-a zU#xv^Bp>M?c04DW-H2@t0D_eIMsPS6Btv(wv)2PXjf8^$eGJS4;qIX1=HcNXOZd=` zEIuLMssFe{#L$Ka6+u`v@;r!H2R?G8r9bIRHbwfNc9hp!V?o?`@+6NZxmvB<#h%EE zF`v%O&p*REUE8X!KE|fEdtX*#?_V}O)whtv!efP_0|pH5FG}0v`1o^JWbv|K#5Vfb zGaTzwuX7$a1P;d|wXeb+H8cplk`av{$wo%L@4M8alSk{#zMwafQurGQ;0J8E*Hup3 zHA-@h-9(Rz*r1VdbaLX8kYEe;2|{xY&#HX(Z0EpV5wJ;w_>8&y5gIN`^@MK5hfn#T z)F~OIQtZ5htmcXOd)-I%mn=f?Y!FqplRaWA2Sh`PQaTN3sRM zqClK0a9kn|p$S?yvPRd`c%od-+iXw)L9lWLhJV1~60K}1ibxCCylH8>R!E~gb;y?o7)y_I+l*t0|VSxGQR(?H#wOrwkuTmV%)~; zL`SLqBh->=vMsjFpT1w*^Mc2>>pTOy%Ph?;ljg+9vqz`x`CMl1$+W}>rgO0E)}HPh zxje=U4(8gm!Zv{=f@ouw1v>)CPFra9@5Z^o>hP!qIh4U~yKpdmFE7tQ89OvF(TG2b z6LW1Kvhwyi?5YrjX)obn>=YMg1uulNJ@@mcB^1GhnB1}2GHl?ax?A zMlWw~NbvkF$LVJaiim6oUYC!OND-I51c@!-?{^nxs|x`hYZ`MVF;{Sn#DAWyum2v% zF{~~G|9HQu)|b)INhEBJRtY4 z9empk3BU9_UvVz~gVW6XNbN7-T3Db}ab#Rk7F=O7i#mEWRm}pY{35K1@T9y$|A3NH z4g~;$q6uFPV>D?a>xIy^EV)D>Cu2HX2Zzra>4?tZ0k+#7rk?tGs_=|Si9{RnV4`mYg=2h>Q-CX)9W7?I4I7#GaKMx7%eO?pxcQB^IFOP2OukqGCv*keF2D!f!_q# zrn38KN^0sebs^%)6+M-Tstq{S+|DlZN+^w&{@Kfyr>Q^hfbw0g?&aE01@h;D*roxf z0>yPr*t^-p=4t z=Y`_ZEG^adH$>eQ+525;vQvK4TvXh7tlIWP>`#ZY59RLJdbxRPW^~hAF1Z!3@4iz7 z*pY;SA(9F&#S6rd;K93yN1*q=7jVA}G#cYu0vUD@rq$J&{U051BUGdqyQ>LGjezYg z(0atE4tJb#_`R2c3A$NjC=9^2xTJ0dgH-zS1PG!py!kMC7a4uAlumXeQd8iPKy2dg@-FtU-FOKI z4a)>D`X`t@7I0l<9^QAPvePRL+J3&h#Et3?G81IW8~iNLM!t8TPC1@ySEOHJsIKm* zl#=PpoR7)-TV3IBOC@x`6y?H2OY`YoJ1tK?5Wkz?zW$)9`V5-$vBy79YxmDZDWzaO z$oG*nxOPnf5W)yFO6XXOjEpzGWu#qm0Ovo9T5xOT+qcZLU97MT|9uAlldz(|1+kAa zpx0S^skw{Pl8lxt$MA6IwE;&TL81j%o}I|VLbuwxcdrdvH2?tkqmcBsKadKDx{7Ok z;V{<)DBOTp`+>8Y!{DHI_NGgI$(u?(8_*E~3=%LN8mX0bA#{QoOtFx#@Gydp+1S_| z7sgcq(aPYK?d9cVpg7bbA|l;(E&)}P#6tmo27!1DFyHvxFhQAs+;D_w1^}axn{Ao<43AYQT3I{pTc z+=^P1K4QZKMuwrD4ih81W*3H~`1$#zepPsdMU+J%tbS-_<{Vy)tnVM9C9nKPwIOcB zNP&8ggn6#Kc{iXJMDw^z4B?+8Q0w37{A2pF@&A5Qyf+!KfieHIqMoD`hD!!ZCh51B zCrC&v$|TI88j?wt06sC9V5qznP>ne|1;!_r!|T3cyg-c~U^H+T#ZiE_r4vbzpfl3> z?j6+dAhu1I`-!a!i_C6}a#$n|z{7<8;gYD^a~4E3d8rXvMDFgzpGoSpv4Lg)oZKT7OygyDCPg#6>4fe!9IC;=L0k(ui&s}lLp^;xfyJ>6P&_v%*@*hV#z2E( zNR%0nCE>OBfD2L402PqM`F9dmENeFard18Mvd+9h<3!U?#sJtx)^Fs!#@UOZnA_jS!#uO^ZVl2`gnY5&FQyEtyjx3`u>^R-vwP>y932c(nO!4&1(qA2-vD*F4gYk44M1J# z5)ZFm7sM*)7@WA5l#-IteQDqZZj$hV);(gmFThEVMVl+?*V&V?L5Uw6UK}~8&+ zqXLvZGJrgA5iQZEK%q3S3Q%vL7}p~oJ6F6~*+)hgIEqB?T00B_0J6eUD1G^oIFklV-H@W5YO{>H!m)dD#5gxTg^ZcDM9y}+kq6+PJOdG7d=AAFga8O`QYE&nPzB|#}$ zqbx#93Nx7u@qHo;j7WydLf9hwhLs%asbG=xZ!_Bz%@MD46T0 z`I)P**F&k!BUGjH^lIee$KYEoMlFd<{Z)ZL2In4Zg|={ye0^78Vd3UbaVQ9CTUx#) zvhEBzmWwXKhvWe~jmL3uBoeeWY$<2wlK6k60>g>6)S#0H@%Hg!6gulA2M6U*Cy}Y5 ztoxTIF?m|C; zgLMjkTR_EnSeMZnMuvywfS=fOr*8s%2RLNt%NNh2q+Qtkgcleu>u7RWkt>EtCeg{? zU#Jm%cJ$06u4X8$?ggB!7qMa=85wzv?nbU!#mK`N;bM^BbuBCB5xBi(P%pb&QLvp5Fra-lyMIj9c zmH`>`^5w0J6;Y<84FWo+=WgeCd%xaQQueuZ*~ztt$Hlk^?j1=h7d;bEwbHc%kXgI* zDBrKFm`;Hj$Vf#qvz;J4NpLZwI1uy2 zZC)i35AYn7m6d9ySFc^`&bG(%#$XE#E~F#|cvDbCFb851r^ujshh_P|;ltxF^$!>I z8jqkrWvPc}nFZFDwfs>q2(3FS+jGEmepGC%V3YZ?`Gex(BY=Fy@SgzuJ^k_DT>FI&mO2(XZ0a(n-f{~RQDrYij6W&c9Z+03rW<9O zkz%=0^(4jWf~}Qknc1|hXu9XKQm^AeqMj`~xsJq+Ej2c6GGt-d_-Uam=juW0@hI2n zDA(}=3vstdr1yQsPf7?{BpzLed`LbW9s%Y=SqN(g>4IMoiTmTXKc#gY)?HODP3K1#l>xRZ|y zl)*Bh!h3)R_Pq7Nd+-*Mi3hd4u^2ebFsdR^utA!Jr+Nk*8QkI*j2DKbj;{`Y@Js6` z2NMVUZF}7zIy!&Y5O76OjNPV1XG( zR)ctm&=bTj10oL<8aoAPh%l`A0bUTp?NLCh@L-Riak}HyHy{nC)__e>`Cpj6qC#Rr1Hyl1 zXJ<_zF(+3i zJQ%f+dRtXDsMC;FB=)S+hPbsz>MI4&90>`fdu0oAn#IzuYmmQZOC`(R00HBbD_1ba z#eX;qED-Moz@^ui&Y0rqs!b|x=65W4v1jnq;i>UH2RTg0UjWt+3&T=Z+!QhZO&Ou6 z@u*?CzYkFe%eHNShnLuEQtKL%cu{L`l{|DQGGIXn3=4&%8E|C~jD>ZduwQM%n*vKj zJ1;-HmoX$o7kaz`hzLopLi^JbPR`D5-wUuefu9Lbb==-%z12N+#pJcn^ysau?LY9^%y`F%;0RP!GgT17oBB zjL0V@wi#FkFcZDuDv`0sQdhqRSsWkBw8{_1#l<;+A}V-#o;V79eUT)81|%&R`H*!% zlmK|IIQxzsJvxWH_k#eHkUV&4y*GqDIviK8F8CX-)3rpu)*K_3Sid_INt5!wuC7Gf+|Ba1#z?|(y~khb|#%sBwY-~$>41_r)x zcHjrZ>zH;S`jw(^`H(Kpl0iwyoR%c(NF0Ta9$`BWf1xxh)%5|<45E&#)cuN$Av5ccaa!Blq3 zB+wmTWPNMz{rK^tmH&BZ!6W*=0Y!#`N4ikkULF9eF|aW;HULY-nypTXGcwK?dDyer0HuqZapedRcn(Q+{ z9Dn`k_WC+E7Z-(+`y1uj&`W!ng%=`&Y0f>ftq%I|?%aK)6w*uxZVWJrkOzRf>Ve4K zhk*p2C^39u!O+PJd<7o@9vhL}qC&z~B@15_6G}2jVO*lt z@oo`(o@DBgrEq)yMhL|qlk*1TNwBroE4H?_FlTN8lIPzNvEzv2m;6?q(;)mXGl-PL zvVdYB5jB8n8-LAx$tOSt1vVyBVXELd#Ts5-_NCuXe0QJMV6!xLRsY!NqhcFaS$Pzr zqu+=|FvjG37~n}#`|+8I*Fane#kv)!guG72gVSfu(857ay!K=g=&!sLLC|R=bwE|2 z1Q-TEM{eI&U^2k+(wU*P8>NcqmjSQthgh1FWOpQ;z#xKo=(zVppSM>mx`APLrVgYZ zZvqb!MeI5+g`NNVP`1gpNu+27=w{VJr$z)(1m%FYL?=K>ZG3#3D3ftENy0k7Git?@ z)*}6V_*oM$8hMUtynxwqXT;C1ov&w4#3S_s>wcN5W>2;OJni+6)stNBz#=t|gZJ>l zd8-5cqp$&{QTE}2eqcdoclRP+yWcbCWp@9}lY+PgLKU@?2thFGUc^as$1SFN4NHSz za*u@rpAO*L_}`O?5F+6PFvoSLKycXO)D%#&QFor<$pY(n;`Rxx&F}U)26i!$KMcN$ zSi~_AJ%V(NFNc0zI1A!fAb4?D^l1Ow$(mQXGHRFgCfR~xKewWemB$0W9;d$Dl5Alj z99@}f=UKPz;KQ5b<&2p*q0+yZ3Wz6?S@YUGE!hkGT>@B(kB&y`JO>0jxgCC|P9O09K5%HVh{j(e~joz8&&9Zxr^mrkVaL0C`CiX&`)- zB>cbRgTdegr2xb!03l#lTM+h_tG+#3*Wl}i6Xe<&Tn7b*3Sqh^pz>5vRJ@nCEfW*@ zC}nDo-3H&E(8Fki8X3;XdLLAV{)?t5AL;*V>DY?J53bSn#K3)n$Z`EK9g*+eUw-hl< zSbttMH2A^H2kj(@4@KSE>m0LP@-jchG~7Ut4`hHO?_=yDm#{=0y()-d&>CS4==c5@ z|2N@_LFH|(SZLBM<_SNjxc&RRSZgjoXiCgyW!yVJPk<9|g4rKe1d>G}1(cB=)jARr z1alQ+;%INkI@paB1?}k_q!3`oAR-Ywe3)?1+rI}rcugN>-SWMH6DS7+V~otq zTw&=YpgAl!A2BczLo>w0_?LV4>f^|P=9kEfqmor^1d2F&rzJ8{#PVhz{eB&Dbygoi z1!c}hPt2rrBsjVjN9{6~$T^CtDjoa9BkPggf~BD44KG^W`tz}`C$+g%xyR}r37POs z+hQC*3)=$ctbgXNlb1h=w@b-mnZ=zb>mV4#%btE}$Wm)*;^02H`O@Q??9@V!)hlOW zUQz@13MP=?U?v{Rz8LpTI8|bihnplYd}_+}NO&fkpdHceUMi7Youl;j{b@qm-@SWR zc56u#rwUk{29PnivL+1wFi^U$aF;5aen2nua!L?lFboSM_ABr5z%g9@r2oy~?r8pR z@Fxdd=PiJs5w8k5?sM(a%nXof20VB`EIEWF?dK`~5*a9}K+PQ>rts&1e`2{rIb5Ibl0(y>86Aw2Fp#GlCdON=Vx0-XDUOH~eQ% zxXA#8b5&K9fPQN4ROi%Bu*hGAhcyQUw;@@o{{8#nV5a&+;d`{FKc082-r(jnru9T_ zn|AiWIU({Emt5v1E^dGfgw~nQr4(6-RfNYw?KlE_mDp5JcSv>-_CO8caH7G% zYutsO6h-6|)(YW1_qz!#nrUj>@E<`iKBk{|;Xglb7wZ#k|4L3LE;r}Km0qZOyXPJ9A&^WRc^9n1!M51Cii323O&x zR@%yqD)x7~7~lMO)xdpe>Tcz3+>O)cjB)5L+K(7;q@*QSmx+D5bM9Ft$~M= zG&SBe){W#97n8ft!5c;61;2}BD!1v^{{ZFqP#kf6#y0UbV#Y?#hGdtT7x_dGQ4sc- z;7E{-k<9`fl6(n(Xc#f+&=>>S_+uRC@U##CiNZqY;K)%Dp~`6K9!CmTlwR| z>RyEKN>VDAI9{gYiL2==a{mr98^*b9#9xI3tR`6EzXI#WQW$ip1V<8VkP^1U^N4K+ z3~;8naNg9xK^2oDs*|59$9`jpn>jzQ_oI^mXvixmNdt*Zd!+>H04QF)?26@eUR__l zeG60(#IT<6>_7I2XjS9l(VA;ZeiGSL8=|>7#_x6+u0)>qjN131)T?NFQ`XaNZOzOk zo^O167}_rTO&tvBy`T|!{;mq`x4pIlUSH?GjMGoDt{y+Ka(C%|M}qRhBSZiBxWdBl z&FA1^I|#G^9?8{?d0YoF4+7)>QY8ss@%Z!CP5-qPG~=mJDk>|FpxKZ(5)8=%szRV0 z9l(98*Cav7_aw@}a4CZw8-x#d?-j7K-<2^{S=29e*?5^JLL#)VHAG(PY;g0d7J9o| z-df_5<|D?U+&(9raMomYTJThnS#X+nsllZL_g^3Xa!KHINimlt z(>2Ye&aX$~R@Ti`(1wHpoA zexjdk#g$X)ueRvk#!3hM5xKbX%d0055hP&dsM})t&$eIJ}%iqrysmwMp>;w+K3Q1B!!qR4%5{{si}TA%BJ=L3iKu&jUJ12`9gjz8F_NG=1K z8_Bqu10f>@{wnZrZXZgy9I7et-(nP`lgaJ93PPHoe)z+T$40D$hwm~ z56Km7hUUOy{RXMz-CMg@!X9AJy$bQHSxH2*1rc~-!a4wbBB*SVvH`|q8wA-xTAv_y zZ`d90UQ2=v!H2b|D892RB9FY{@2^jm1(oyP4U#&M>r6G-57{WcemJ%Ht&*}@U!`N`h~uI8D$|JToE!K1go@P6=-6}{ zwUp`BryH8-U#8`XWa@p?AFn4#(N`tl`XroA_fdzNgv2D>LFs|3^4+gLss_8!K8+Ld z4SKKsFYuk%#ggc{2dmPCN=L6<3w_t7dN(bb@zz4xLWn+h+F0(*vq$0sGyN^ zSewnQrdhM$tF>@%ySAn2xo3|~=w+7J+f1x59P7=hsHO>jOrvmUjE71Jo<%G_&G$C# zB91Dcc_xfJ+EgRRmm)~hr%x|Cs4LXcMj%fhLR`c&LY_b}?2uU?c<2zjC&rT@D1L$G zs76b?!m0oVnUs{&DN7C6lq6u~Ai_9aR;mcThSLKpECuk%*9b9K#^(XH!^Jzj(*lZQ-iC^Z2NKOJs*y^DKox(Y}`H*jS|=*$Rn)qC_u27vUM|#SE&WvC-X+ z-}UyMmwQ5=A$+2myLVPK*-tzCX&vK9%^P-Ab%KQpa&S2aH%Q5LlIHLgCw-Q=kpTkCe$9h*rue( ze`f@#nZd4z8mT&alHJ3zr06uFf!dn zxRG09h5f@J`hqKGKmXXK$a9fhWA0UoK!pVJMt5pSGl8PT_<#;uu_Ka_RVUbGQuW(w z9@-r?3BH^Y?tC*TDrEn$DD^bP(-N}H>E?Xq?#EdNFC~sn$!{A!Gm-dSsVt>!@coN| zh&|U2@kd~KJ8;si@+tGl-=3gt5kun>jEZCQ@-P+xC;`}`b31LwUJhXygcy!clVdMG z`(N21p5(R)cNo49kK=o)7z#{HjEAwn!SOk|uk#AQR?vtCyy5LT+=LY!{p{T&EAGv=N+6kXhcmv^CN=S8{zL%zY$;k6h`8NH$O~4-5y`^LEbc8PvfB zxrvq48}BPL8J57*ab@H^hy@DZSlFE-4L}_j_uS&51=t$MT)@N-+yjJjB5na9qFiVn zX@J3Eo$xCvIs}Orj56z>Ga(={n6d^G04T~*@G6qDM66a+vq*R$gEr_?lGRNh0hqbn z)34lhBB^{(YNL6B$fHMuKlXTXEfwAa2o8y!gaSHBOI#U<1%ZM&C}y_?Yh#ptmVb1pnU)S9fpD=pn(tuJyX|y8Z@Z-zgmEHn;rAoEQgpyXUe48YkBk;{r%d{ z`f@*f7{w&9eO*;$a+pC{ub1e#%$?=8sU&tVsJdx=tn3yxR%uo99SEJ-V5>&i;o9?kFFP#gL=xobD2JJtvBhxC?AbEoInqNRJM~mEUeQ2 zjWz;y4Lqzm8%6}a5;n6R+%@rbffU|eSB!Pu`@az`3fQw%@s{BN%x|(Onu)zrXO)$yr|+MG!U;lNnM|LI-YKG*Mj`=3 ze1NqmkSPQV4;BvmHmyvGCa3e_*b*h1ot9&{sY%f0_P}SRJ)d@KaLqLTnG+6eCU;_D z>!{6f*?-exOU9OzC2e5PoZ!GfV&Fv6D%Lh)<5Ma+0Rs-mLbM=CqLm{iI6qtPX#i!( zt!G0tjaY-3ZbQ042SYjrdk||A5bZ&jdjK{La9WSl(y#*O1Azc9YV_^z7O4}^5<9v`PC(M&6>_GNijY59UWW-Y{`WVNrlxYR>P z*^vf5#V>DK__Q0<_f;j~>Giy!vfdL3I+5Cn3C|7|h4_fKo9^-NE4o$B7xa&+*F0fl z-5%}25Y7Ccfp01wej;C+qNcKv&F%tc$iLRnj%lMkn+Bs?5}JKayi54Rl_we_wIQ78 z!~wH~+k9`UAH_1=ersc6P{uwKt)y_{D4k#AyQ`|AX<9B^DqWk(1tKihtaY0Y5t2I` ztFQU**&(7sI%NNT7LfEDTK{Htc7eLWZJub?Jw5DDd3ra#@&m&zBhuJMvOR|vK#&uAwlBa<>ejdQR(OHE?&G_Ru;zl@%{TP5IO+c zmrck5at3;vxoF=$8k%SB#GPz2oz~DXc@13H_9_mx0tSY&G&C819Hep_oYoxxECRmK z(S$-|4>B76@n zEVAH`d-5RXpd>*tTJLIy6qgU*!LUP8Mts}qy>Zl0CbvCoV3|IO*e5}r;<4V5ZI?3^ z``>hpSm>0$+~X^EaqATd6jEA^f@Ihzu*q-1D6|ZXF|>bque8{bJErMQ$Z~UY|7Tfv zi844nty$QP5%=JsLx*BnL4gv!E;TX7s|#n7ae|&eyI^=gS>dhP(_59bdgP^t-Z}jo zo(r@5XDXy0UpY3;>0u3%#)iK$P%r=o5y2Fe4~rqvHUf=v6+q&E(}&Vd4bBjvRU_3D z91wfKx%!<>(p-^Ot7~NTS+8G7clJ})e_4C=-Irmtd&ayvw3SYb#U2#xs&t>+*d2y; zWyl;<-Ctjy`dNABS2o_b{ubV3&S2SA^*xW4YOiO=AbR0TeVIBheAO1{n$dQ3ZYN)cP34oOUa*@Z+vp$^f` zkO)!$FgpX8*HcW&w*Dv4AkD0(9fbn=6f`*^FoIGDoDrOO_}d%aw!V2Yiqq;_Wo>C0 z{^3PNfti(+UrGwwLk)HQ77m&Xfqp|r`Kkzt zj2>M4vJ^sYHztNdvQ=O$hK)tz@uz?A7=T;aOL%T=pNl|qJo&4P|3hw>zzC-75Sri) zXIC1gA_~8qoDD5n7vdT}RtGGZ2p2kuHx3$aUM1w-?7}Vg(F-76fTN58ULfH_P`VKe z0t#_2oW{mRf7qnK7s}uN$Rnz;_C?C%kptIE1s~;h59iq=X({_+v?C*i*Vjq65nNWL3Fart?Edyf{6*u$&EWD z^dSCzidl2v4(_mqX*LF^=R7W=-ueW-r$9oI<`>J%-UKYlbegHf3rztO7GF?~*P!__ zk3LOh@l!vqLEUAkmXUoXEUmjun%p`>l+`7`^b#PV-fr~^^_?ou@zK#bVz+={2_V!x~}Uy&*M0rDeSOa@5W^v{*4a{KR3u0&=Og(`abN~o z!T=FQ&>1jz(}~UNLtJ1#PxMA- z?+wo5B^fA_h#7fR!5AW4TZu^p_E%Kg!PyIjBkko&1o4}}_5kslq1u9nMEZpO zIiv`|E&<~8i1_&Urmb^XeNrIw0I(YA@{Np)P{7&Yg5-%$-Z~Js5VmGI_Bt+Z>qQ^) z6&m0PngWCgz8~Z-!p(u4d!eB5e}Z$NO1^8hog#HfIoByLgzj;Yzf*X4z^x(&xDa6N z%kW~e7d*4x|7*#p0A~&~N+|IGAwfX(1?ap^n)m+Z4Up}FTb>k8A{cr#1Bb;M7)?r6 zqhk&0%Ut|7D*UPI>*77HbCNvC*L=b6`$%(EBM$pvP79%NP-fsAeXBH6inw2Acg(!> zqs|;Wr8Jd&##jEN(d7b%BE2pPYkMJ%eO;c#@|{JwoXon{kB%<~`)ipyYp_1rA-H4z zDb1oiJNJs57PbhmselA8%NB|NGiwb3n2kB{|YM8d$mXrN+xRHU9uCiQ zz%>FC3yC@ir(S_i1dVI_F--q5;VcH61esH&{a7f@i7dyj!&tA~*!VbAcKF66UXd00 zk)M$3Vgk?;+Uj8a19;R8#|fMr*pORQ54n=vz; zKj6+_{7Y27fa9K)2p=xbYHW`FC;WgC?RVl9jY@^CV*v^gL}B!ncR8)*Y~TG0+|^2n z{sY{_k8rMO7DQV{WZ!Ojdp4Ob8!&wpDt|+{gX~y;UZ1O@ns+`9o~BxWP%$|Txf`X- zZ+PyxBdR)R{hDBUnIz(3nry#?Y|?>ANBXgeQ>kD;NQ0c?;7|N>?ZTgcIsbs_he!LN zStP#q{<0-NyofgjQy%2a4iR7*qg5~gXvbjU1EJ1ZY&nM@20R3#gTsRe*k2$<@5m>2 z-(MRKN%}{!bJvTGdhl$l{njU7E0BI80dO=wi)aHN$}t!xP#|ldcLAz*&?T@!t&o>@ z1(DVIT6=n;fU^v=x8UTl zqlZVaZ|Y!&_hhxk*Jbi4t8|Y&f1{h;=WGWFK$Vw)4GeFqD@eQGT2Mv}G|E;mLm~B< z?D*-5)GxaOo=vo!w2Ibz{}w_tUT;_#BKU%UJZVzN(bsa-pR|snGm1-Gj8~~M048;rgf@@M zvZEqi-~E&2R=t{$@MA^Y?x*S#qY|WzMa(<+%DIzwLIz^r=I!32{H&-{dOV9?Ac%Ym z;ij}Y8Yj1hXcwYd0h(og>%L0}m}T^-!rQ6~*2I?IVe#p;ZXIe`Cysb9dr4<-;0mqDQz$&=Ux5t8nWxVBdPaU5imu<7-IWuE1wAOXTP0V_T;qJ-Vf(iBbuWee_O%|#m z^xSvaW|viNe|xpmxUBMWe64a2qPF zaKk@6Ng&TclvcQJh~W+gBI*~xdPJr-oc(u&R^6F4w&a9;-5$1w3=F?}V!lT2V6*_sYC;sNLkq^BryfE#c zO9a+47aYXkBCr^<3fv0BA%rc|9^#n5;60RX@ekQG{mx~QnIqH6u-6a6{G93{S@Js< zDw$&$<1U`ole(~T^~#BMobGv#RE8eMT_ z%q&^HFi>H-0-1K~H*V0ps5eH?0SuOs#JqS!Q=?%f(U+}64F?n+0m1iV5LcP2-!+34 zK^91%fL5Y&8$AJd|AFS!35~?t`cqQz51^|Dxe!3b(I6ZJIS{a?QP49S_MrV)fQdI2 zQrEyH024KAgcOAVsRSYhV8Ea?V?^;5gkI<=0c#rB+rbuh9r)qx{rxc`Mh~OF+u$OY z9+NwbOidXgxUlgGES3wc0^D!cWt5*aWY67-jm}#Z-GA3*VWFz=PDSa&^!EP;otTlD zI#JQ8FwHM-agK{w=c^sv&{M0)=rz~*CrJrkc+7xy)C7lUggpqCL;{a*!VzT&<5z&_ z>z#vliJc8=jO(c85;1Qd#hwGF9K0e`OVE_kk8-Z5RwF%7us|I*?IgQ^61SD=&?9ct;RB| z3x_i$KRpeZQ^GsEicFXg>lTKhK(72x`WOUYpd|#XWmVP(KrfAnja7g85YZBzgYir# zs8BNhSQUqO_;>$$FBnQ_<6C7oL|(y_NbKLOXh_@#))r73#g}G3Zv$8g`D>LpDeIrL zP*P#E(h>NxtryqT|0?#yaHDpcaY>4aw!+b!O+wO}`PE>S%!pW_;8X+~3oMq)++RMO zZBJAfRCH6YR@b~c`@Z|VOJX=Vz(>B^Fan%9);Gy-iDb`Vm7V;`JG|kO>7nl^=qCkU z@ddB%-D#~5<52jOXJ?bA!IAg0D$W&+;j?jK{IDiI zv5!e8FD;?*;O1O-;tO6HKpD__$I*JpC(pvd;@rPw^#u@)eLg(n!;vplE*0CSdER=L zo@M1xmUXoURj<<%SzfKMt8M289qH>N4Nr8@Evv4;(%@9HqWt!OTYLJ5>Mn0Lp)b3mhF_%O{{G-D zTeP+fbk@$KbwxGb&8bCD7}@k^oV|pfb17b^q~NszCMNTgZn*@JwOEku*Z9DGY>*n9 zn@8}dG~AdPkh#L>6N-@wMaH~hH0NZxe>E8ONG4Wh6>LY27tFV3(&mWUNncleLWVi> zm_Rx=w1~P=c`VUtLl*n0M}MbL&St1itG263e7DPV$J}K6Q-_6r3KF#+7r?n zEHF%htr#F@wpmS<^RHefQjPisedVNlPfaPmd{12>polh_`_%KhvBGBNkvq_Hg=~+s zF>u*YPgQYT(zrE+RqcznW`Om_kk8)_6SsLgcaTPCWC$2`V-OGkV-kM7w~sr!U`Hg% zescn#HBi_gq+ZavF9>!_Nl$SY@fnr0!`TLlE%}evtlA>6ef-WRhbm%UyY8{Q%bDma%~rwmFP$7Ogr9oP@rQ_Re{J|Tuc<38GOBCPvY zW?TNU`H@>cE{l~EMZ8uJVBRb>{PZP9Js)@?%wl46;Bv5k{Dj3SFW=6Lz+w8d55}L# zfWx-tR-A^ z0x{yjWdgCZf%zGKKvxGR=x-pb4FZiY#=GJvIW=`V6ak1C394!20R$ZfaMlqa8&E7n z#)90en-#^<>9-0o1276i#8SvPy|{@-;CQKB^OP<3VSsu|lJL(hjd(<*#UKBNN^4MD zspk-rUO)P*xm++B?RrU5jI$CuDe`cLi*+v*;YHu#;z_tnT{tC zCyche?>zL2O-sy3FaF?%tk#Ql61&~C_c<9od4Jt^)HfW$t`ZmOk~jl*7B+ptugX!O zFAW+gUhB(~NC=&4_(pb-=Y~*g5$^PxvYR;T@LDZ_+$&HHBlTI*c*=bv2k%l zLNf&9)xGJHV>zHf!;r-U`~$K6x2799vwW@j78S3mOEWgwm|gt8#KlTf+j1lkW;gg6jY{fPek_t`cjzY!YnRx|Qb# z7`r;+cXD5S(suFG6l6=7*$NzRcVv4#Ve5WAaxOXH-lg1dk45r1VjBJsm}$ZY=PS(e zv~8J?CIF=UYH(`7?5+p;6{U-pb@@7sWz`p}?#ccLWzEOfHn+5(mmgSH=!*cI;5U$U zs1ys1D_&ZV+e!7qUY&mX%{_}&5E-B#5{Ph{hwXeG77culfkGYLfWzN%An3aPLj?Tc zgnrNg(uo|>VJbgea%<~MTg5dK3=Oxac;pfL^96B=q=eb`b}&arqGtFbm%c~JrU?nx z#-$$?p)H2r+x1yOYHt?WIVeB@7;S88n@_(UfT*VckHF`DpP!cnU>)K|l4nnPK^BAr z*|3+Xt`yd{hv*TSox}uO{K0==aM;`Nxb5yWI6Q5I+lqhbQuNUO^qa=K^fAnyEM`~V zHmKvI4B+?tr1vN-=Rx{Qqv|?LZ2!=`r>YJypyO zYlZCNM>qCNwO>^3_&ffg16O~?lD;$AwM zQT<*NAKp@3x1d2GKk|5p!=xQWEg#Gd*1-#cXASVZN z#u?a-pdAzijoQngpiPhGslX)%$rO-X=>gmObi8i|xliYJEP%QRT^8_uNs$gX1pmA> z_#-4wB*w%@fqon)m2=Rr(2F<+K`99p5@;m2!R$a7kYcWW7k(ijgeaq(9$tz;C|AkH zhQ@V!-(#^hFpiJ~>O+{-)^48v9=jIx5Is;^80)$L&4TV03p6T>dPek2Jr}y4bHRT>p^9kcvQYQ#}}QHbCqn^RIe773_$RA@78pzzx4LP5DW}t z?}BX%Ah4>FZJ@hEvuvPHVW$Ck5t+1SQxCpSaH-Mzb5vH5{X@zrsU1kt2WrtN;8n4` zFUMZhO+5@1G8&*YoE(b*$rG3*w>k17jGwJ^gOMp{yr6bGJ>UbgJK%Rd0%W}m=`F#L z2G9vKP)}x;EQh$ z*ToUd4cx20!s6-dX)*mjw_ux}{gKlK_}alD22;KISdZ5(3|gLGaV)==0*DaU8N(9} z1`bl}%a@=XzpPVizy!8mAB{lIERJl+LD-rB0w~0gs9jU+gi4R`>TQZdnpBnhbS13f zI$wW$^bz!UIXG2l%J>aqD+J6u-ZBVz48jX6meSl#8VykBS~$o)3=p>Dhsw;LRJRbL zy-1J;o22b5I0=KsO6ZR3mH%=9BD4!Br9XibDB0i}_mNhL%tsPRJ0*+s*)50$a<rNZ<;~;5pP)<#3-6`vo?VnB`QkY=uYynQAjAwLs8_%#y{#>IP`c zOz~?LD*~PHt>UOD^7E^UdWIW1|bpKLsyAanX^s}RlfXf7>3^>oZr7>B43^2AKbH1614ON zWXZ5jDaL?`rXOY_6c$c@o?XMezDg=emfc78un%*_igOM}EDTo<5pv-K1aAV+s+|I> zif~~$*jyu(^d4`YQjiz8=2&*57@;BX-ZkVMh5RUPk=&!0(?NwlIDZ0+fkLdIus}-! z1xEp<6_}Ca2{zo|qd+umHffjDrpZfZK3vgWiE5*lL`vROLo$0jGAu-pwnMS1H1!_eO!zO{n!rK=?mSj_&_4 zQG+Ex+gu6YH83rnRsmRT0=FA{Q;Q8gR{%x>kTC)498@aeK-hr8UM7EM^VaaJgWqG^ zt#xNy7>I*~by4hI6wU$Xv$|}n`KFr#ZhzeOm=ha(U-j3#aoGXs0_tLEDpjR^=47;e ze#FAyKRh2B!|B7Ky7ZvAk*)2-i{~F*pBeHKK~z2Fe`ZWu)ie(S^}MsEeni_s_Nd%*i5j*_Xw<<2`RO`r+E*yT zbGO<$;-q;F#7Bsvn-v>UbHQWjXXzVd#cc8-?FbMv18|T7$~Tl(w{y01G*%~}OO?ZT za-FgX;Fb&59qGZfm>UKfNdHNym3T%$O$aoD*PSu|<2wx@9jX9=V=35&eD^soL7DJ3 zNpu*PYW02x*G>*uA?#EZ_8f?7=H?; zw2e`7vgZdQw-j}CXH1Mzk9Iw?v#Og_;93D;;nS3@2az=>X_8(gYTNhGeXa<1FZXjk zp(Hp98S>fc@c-Z;st(*QBw0C}J~=W5MR}a@$BIj$sXt7-!2blCdG_GHjX`-1bM*yq zqvEd^v|Ufs?JNn>Gh#G_ar)^?qN3w`s@bv4Z{S89eD*&l|0PJ$=-OP%!?SpS)LGb^PdJbs|3amh@RzUfy`naBsyINp1?CwJ)V)uKz;5l9 znpxlSrM)achjsj%N{-<-oliBezN{(epB3Njq?rq|NjR%GIr;HkfeH}2WcdAGoQd&k zk}4UYR`Nr|HV_G)mW{*dKL>F-T=C*q=F>Q-FGGox+A}5+m;uCr=wNv9fvyE=s4Y15 z-GJ4IRNzo^bPYYcbYk#>S{%}ApZeKfN`2+mR925{{6Oj*1T++cB&KJ>vPWU_L2#7! zHw2zYr;GwP3R0;md9eV9ybQ6Mz%>D~ zG6*Os)xJEiv^xK3-8Ovl8}CTNGd;bNgqE-#TN0MVKJi+T&|7M({fkWB3!<+dYY*DH zkWBC>a-^ukdzDi5e&Wb3{qmPDU#@s^V8d;^LI~T^4Ui(-d4+f9TBVY@nA4nr>Vy0+4WLL<^-NcC$K)CE{E1X6nYPoNaYEt zKd4o1cq~zX<<%WW=)F&VKyc?Qe7^-Ks(?%V;d2%E4f+O-&qKnNBsVgx0-7!8Dlb|s ze5X8rg&4%HroblwBo>88f%7Y5?99S!7mgBK7}P=G4IY%{a9ZtfJWUV>!M*$PFfrh4 z$nO(WZeQUeyTL%gW~x>Q*r`ZO4A^;DSsB5z94La(p@v8@0Y|<8ATxC>J;%b^^nX(7 zQQIM3ONbl9MWQKShcAG<`s#K4LINl8%&g#7udj(=R%$Y2GJ{#!1-WkgK3SRa^47HY z+xUB(CGHIwIr$|PmRsa{ml`jp$)6_-uU+E_zjP-cEG(li;~l|eg5oK|c*8Rk9{27^ zshy)#%L>+9>|x2mUi_$hbo4uigOx?VjlE;1vrV-F6Mu7b0a9RbJ>gvhs{{ek!Np zSG2VX3w>I*IZW*M8OP4J@LgJ35J-IO7@m@4(4dSo$OowzHo;>GF~f9=?M_sg7{tw9 zB&or-ZH_CwEfiiM(9SY=Xg5^QDXvkXV*jnaW_Yzz_Z}8tBQ~iY20@|-ra_93dIdz+ z5*;qBOUP?{v!4+7_uwBm6%%lGX)GKG~$M)5@gul zNr_o_Jh-p`WkUJM>aX&i8WkDt?lG!rzY*Lz^kil)*K)m@`MJ~U_k34>) z+mHaoiVcknuGylYqIkluq^@(l#l3M%3CT9ncya*O(}D4VxuxZ>?G@G#G8Mfdg`49) z8D8sQd`hKFM9;{M`6osz{=iy0WS6E@~KD=XKio*tr$Q@Y0t6LmJ+8 zqt>m|)P{yYt&eZ|`j(O(#i!ok6_ojETWMOU2h9o-3(MzgkF={bGb17xlvowA3`Y$O z4Qt8^IrTNT{M^Pr=dcj6mvLWU#bu_wah*E;7Tvd|Ck^hy0wT%>$<_^tZ{PBE2r`Ap zcmT&rjX|6>nJvUxm|&owowg*bJie@qAD&JpXgG{>En^e4w(2RegwxGwZ!O=KpUfh8 z$3j>iZ2u_&VspXWIk2f6wl41>}F1PXP-v4r_8%afr*hi#ts#Ju17S5W$@;f3*U z3|PT5Wr{^Fg?jMyGiWx3WZr|d*h1G^%w++Y5VB}0T3SUo_(Y(S0)vKrQF^8j=g3XJ zKZXkgZ-`$}RDkFnmRRAEmtA&sbrOs~CW_grb)rO%ex9Wcd_#PLCz)zMpLGx`_Jhnw z!>AuMY$+(nSa^EvY^pfcQ&S<5#knN^@kes4;pzMugT<4M{K>me940}@JbD?q#pt>^V$-nRL=%tf1iW65(8JC2fM2AJ-1tY=<#%hvFj~c=H&@R-9g;z3kdAzcaWiW)S zCn8_jf8_eR?XN%~MSCL32m_*W(8mPJSqEvgIsL&|1T1TiaV`?}>FUw|%NEJzZ~ht5 zfYh}&uvH7d{1(xf08#^C$O7;s7Fwx|&EY4JMJ*V+2JA1g!?;l%_976TBDZd_wdxj= zsBC``;_hLw@nzjHlA}g;Ou<3{hb~&+mQVyn#QLkS%ph@!c;JA zw36*9lEzFS?~$3}Ep++q5y12ZnnsecI=vQNzjAc}&cpkW!c!|SfI+U}Fi$|%md_>j z5v+1csBsxM7->si4-O7=gj~SMl$D(w*UPJN6V#r^Kww2Qg8T&b4HuHdvIiR3HO{rBOBp(s+-vVmc+*6aDvJKk+fbYa|qdA zog2%YZIz7>83TRZ3{cjKYr*9SS51gxx%SMUtrq7b@KivWU0rR>m!3I4(3_$pvHIn= z+?bhiYa_u!>c^Ea+}tGB;{(!a=X-CYeok-Nk4@7r=~`WWl5k5=6F zD)%H?UWwL_uW)zWd_q=*Qm~-va?n|j#$#H#!lCF-#;YX$gsex_qDYXA1uX`+Tnb3p zY-jLthIFfA&?l=I86l4lXh6?2nwCB&&1>K+(zerTez)oQ(=1KY?KCn?f>EBdwDb~1 z#F%}XeO3Qbb;^S5v}T-5`caypu~4t**#^wVTdDKC3?ZL;Y$q=hiB9L(h*WKkYS{{> zPT9Yhj;4rmj6NYCY()O+Fe_>S19e3(#RNvlch$iC^YB;Xq*L-~KOB@Qn?O*35y5BJ z^=^Per`&T!MED0-;nW5wAUB~JMG@$mO}H0_u115o(Wl+-gz%Vlfz@Qky0Da8pXR%= zHu&BF6C)hxu=9{?SR!jFn!)?x<2tFJIMqR(uHaNBb<9@Tbnwi8U@RrGXpJkp6vM1Z zV==ZSd)Lm-nWnUr3bDVX7b@jcIbs*&ABd+D>m-Nw#2+N_3j8W~=`=RdmqM(y{p`B8 zIg~?#zW6%X!q#ws=xKqk75HwL!cK(*=nD(DjUFS0p-pPy3UjGm-)7-Yel09y{Gfs} zqsaV1K>;7NuEoV32Xuk}XM;ExY^5iCFDh}L63F+&&lv@9g*c=53n0*2qtYfBY~o_!C=Z*@ymS9gb=qv}5$AcEcp!NdlH2HHl$}FX z;$Tlv;C8u(hro_)u$kxhCf$JJ{=E^gOLJGURvtgr9KCt*=~uUAT668ut&5eP&!<`7 z{(9Jub8bvVGbq}s*agVevINB1$F&8oQ_tVDnPdLr{CcX!l=DL|7kh(2Pl}&s8eJ;( z&jq%S_itg42vur{#|7yyOAZc>aCjdSm-#}-ny=Zi4ysp1Wa31$HUq?uy#K)C;sJ1i zs%!F#Gr?OG+W3>lB@qA&#>g?2`rnFQXzih^KW*P|MA+xd{g$LSfSzE0NfMtwI*-OS z_)W3nQNaz)l|a((ftuIF^_%;wQu$`B=)M{)xBa#!p`KrXhGab z;<#pUO==#$DDxCF&B!498jyb_Z_cl;e+8$k+3E*eY+s6#iYCi~TRaO_oi2J^ydZJW zPp@zyzo9YbMsMklLEA^h-yX$H=S}#MUJ%Xw>-&>U7T1q&Ao$ekkcA6ZS97C<#fowq z>)T#yxq>H;E+)F%R66o2#`iE;s2s+`MMvzSz3i0}F#RKjQU$EF)s*BzT$2 zZyzZ;{+j6=ue-VN^3yqKJTa&dq;m&5_+dezY*MT&#}u-RJ?ry@pI&t`9lWe66?x?r zTF@T9&~d6lHRn-EmB@FGjS_FOH*e1@Glo|G(e(K0{&M@{#u2mg@%!4*(5Ou8gR z(O%8+?vfLD4#-(pDpPr{r#)j_Py9X4n8|_>jMcLJ88sza%f&NSX&iZ>d+9jzIBTJ< z?xyu3liL7n_h{DzWjwHB^g=I(Sm%K8Sp>u?{!>iIy)wegRrrs$&PEP!_J$UUo$>M- zbxgHljPT-{+!kFqq|RDBr9rb2fJ-hceS({AA$PFWz@mYXQ~Gw#-?-5F!Zy)vRq6Vt z)ED2*9=pYfwKN+h*L2)+eH7nK&UrFwZaz%KJo2=b@6u3w^s(q^ak_-hH{NKazMgPy zGgz)FSGf8vdeuAO39o9(YHh=7eoiPFJab=-C0jOWnzcH36EZjvd0A;v6W8V7F{Lmp z{|tge=ye;{JS zlWuQ>k-1e?NW(!X{0aBfs*>!#pTEk!avC&(o}zr9x1)maw?`<=(PYw%M&k8(e;)!S zNKkyu^#|^EiXF_v^7DK9F|bxvdhd{)3!dHfQhSY0Bgde3vD+qfFS!5{$q*{$KGGYn zjC~7t>KG^e$Yfo*@)#o0vWi|*5bJsAuwV5ft3DWZqRw%ZpD4QPw}0yWuzc7V_mBY6 z8}7bo&rkm+0Aq z>7JlX2kdK^Oq;TO9c49yzjyk6Ke#AP`nTV#qH&R)a3TENj|3YA-9gG3e5OyLqPVqb zUeN@huq*ONNW6h*pv^zKHz6@G;&Tp(5<&CuI*n)MVsVNPo8zO=-!p@H%Xt-X6sj^EPUPRaCJ2p0#>IFfk? zK>3|>H(b=k?NQPtYSYIR(YK-T%>+AZ2q)3PD5&BwRe*K7EQANb06lexm|R+rdP=UT zIIuAGe!GrT18!xsJhQe)l{B#jPv0sp$@8=r^XKliokrGySGqL1#J?UF4CB*9ob0-r zb+lgB8k645Q}=%0~Ei`*aTao)%MB9^)I)T8#)_#ccYNBfPxPg0U` z$vh%b1hY?Fwc!aNlMWMo_WXIGFI3jKGwbWm!RiV+Ep&Bc(b;ZK0!Xna|6JbT)h@40 z2|i>I`J@*mewe;}meLewv5pE~@HtQB=IAXVpKgh;VTVjzkegBmn#Mp6-PA zio?3}7xB!t)qSZS#3@giQI}07ZJ=#qa}~(0@fL5;k5f>vpt`mvv5wb3OoRL24Cdt} zcB6@;m7gEhFCEJX{Uv$&NL8(}TZ=hX`8-_rXA4k}J}A9!Zka;XY$FflR{zRbuTZ1& zL!+7ml3yP^)^so{s~nno?^Q~>Y+%x-ywT_AW5ucfCvXVa_cC~pK#g)=VqvIwLe|T4 z=~57Io6(}ib7-B!Pc7D&+w>b1q*ipRi0aVhk8b>{(`bw1&NpL%7u_$)@lPYe6p|MV zgJYeOq84YC+S87NmMr^kjBc<{uz+&i9z7B$v~r+K4J8(!b0V(Xy@(+a z(`dzIGh7c!>K||07W?nrKn3TlJ-QpxLuorfvs+rZN0WNuT0O3Qoq=Y2*+>47_wqLjKoPToHMJH-kgy8_Yz;c z2m+5OkmmjK0_2$rzd~~(vc$Pr(vf5A%W`?T56=p4z_KG8A1!koVc4;yzEIX|7XRZhq*K9 z_8jdvx49ua^&l25PD&#SkVyYIa zc=n{~BU7G$XHm!ega538JCu}^fJ-x>ZRjq-wLt{`&-LdtVGJ=!c3$zd4p+3hgb3Bs zE)j?K=A(n6=e7Wy)H=SSQQFRF)xb)YiaS4bM5=3T9x8hd3C7txHEk@&xu{rb4zF{@ zHvrwRQGALJIx21B(Ed9bQ}?_enQBsHS^l;9oJtN&gqBoYGkmyCU_>bwH63IIW+R#F2Z<}c(*ul-4nos_ZAA5P?@z7zI)*% z>(6j}LAv-cqnDI(WDAJ`yav`p0O&&!QR=_Xh$`X1qDc(Eol`+t{cp zb67HHZ1}hz{zZM@C=63p?eHDzjq z|H}oi&inV9z(WLuz`y$x+iTurZ9m4Uh639RErPI+H?W#9K~c4COK^fZ|A}`YislM+ z!^IF)X-rFxOI$b}e!8Z%rV5NUvw>QwG@xhQADZnnxRy+zGq!Zc)R zy|Lt?sO1TKcF6f_$;vRV??k=VAmUyDdOM8jN3x!mZr#ce`nV5|HKxqd4zB$2FIgH` zw01OdUX{F5Ew-Y6T3Z0x0q&E-LI3FIXpijs0>cWvS3LtkxA0~)VNQAn%=VdOzbu`D zUpL+tV5zs{I9mSxa!if}exXEMr9u{FXixZpDBU*W(%)woj(pfnr3KH!8;XV2sYpCB zR09EFam_p}dRbwDX!A?_+EKKUsI4=+QhUVaehMIDZUjSXAhkZfk$}cAFOF& z;7y<914tichS0VZqWROkpJ0eKlk>_^y2LB`jxc=pl#8peHcu~)9@8cfL$RaKtNW`# zg^S3y)->m}7Dla06;6M+@a8o@GvyvUxCE&0KeZMXgjyioxMR&vs(&vl(q_k{m)A+^ zw~x@8ySRIUM!6afr#;r^=wO+yMokZ_}yf3-YVjqUg#VJM?o)viALew@dHB!+(?5qt9O6aw6%7LrO56?8DTN0Q z(*9j(ZS-%I1>&2IS#95;T15*Nggb*xLeE=1kOq~WiT1-eC)31!fB6eMM7%n1CU8qJ zPw6-vL7L(n@G9nY*|>rrb!v*j;DAi1mB4GkH%8_~id>$g1GCv960@`K6jijNt@7P4 zy*hGXC9expI+b7O6c@8AwMv$k-_bUjv@xGOb$;t<^|i_mM&-%2AXJh7B z!AEL3AL{oG+NFzVL}kiJ7g~pgsyP`wA`>%W#a6L!-WIs9;Z>AL4v&51G9=Uio6VL1 zC)bs0@~H9=b80Yp45eTk%{*k{aWw)jrmmh^UaKYlMn7!bDq?GOU(+cPr5!@ zv@|_7t4uf&V9+*i-cEJ(5b&MRN;_)!e79c#PvET~bg}2>o@Kw%qc!&{W@c>xJ~*UT z3!{qtK56EM&UhQDM@AJOH6kEj{HXYNJL#Fe_RBc^(sx_K@;cGe>#gtXCR2X8-eszo z$qpUEo)QUYpk`(^JoV*jx$747PcBJES9v0U0B?es_$1iJ^K+v5PQw{K^|(F!<5K#B zF+;80E2!e?Icr~~j%CH#!XvqTUc<;JIy5wt?ciIAsYxd(P9!C#*u}-dh2?vUA$tl@ zoJHj0hpCU=#;r)oICQ?e3abKXc}M+?(Qh&Yz(xB7&R8x+q~fBt zt#NSnH>i1jiwg1Z25lex=Lz=O|J`>sh`$3x2G5 zr9*RPu)g-4m}AWC&A&@7?aK^R`gMyU^wC9{b1xalgl|oFqs2itcsbd!V0W(G)n*|M zd(!)tYFUm3p4FzavADun?c+*0j}e9~l^YM)ea7p%7NDW;2L7h^LaNsVQTIHD>(B{) z|4uLn=;;?FP5ko5f>%1QmRZRyd3-nQa&5am-~~5cu^v2s^L3^`ebJ4zsl~mPrMd`4 z>3tFKfSkKX@`*{!ovN2%Sd$_i7dOuVMu(O8(?oI<5aukRTfZJE_Agd%% z5)|llW~lx3pdZhxwn0a+^xV9?kSq9}Jg%qx`+WET-^P%J>hHf3P68l+23vfG%rICB zhf;r?3htQ?P+b9M5jTUWCSJ`R5w{&JV_#Kg4{VL(ef|V#1!0Pue2cWb1IvqDnCtHx9bb7X>_CgGirLtn!a?df zV(5jj6Kn9=-?l+Utq36jivqySz>`KP)}}fA^`a=z*5L0UjN{D@J@Ssp@h2oFhw(dk}>!#T50Ont&sysd}I|k!sesHQo#1jY#0loXK zg|Sst^MK5fm+Onf==KB53F#)dNu5HTWUp8Uuoxe%TtoRFkYxfH;E+f)ZaG2K6E|jW z3C`y_+q717Bv#vAnOd#(71^Q6Nz3;FMIl1~cuGJX3WQkg(GN~%vg4}`6>Hs zu9YqOfZyZv_9^EB)9N{YI23;I5&4Z9=w2q)v?)nA2W8=fn}o95p>)QNzPxJekrQt> zeY{J&v5NhEi&&_zD8@yZzlg8Mck*(D(JSP_4vHNhV4nlCVw@*trS}n)7QhGM@w-K4 z`96{V>}_gq%^{$gPBv4o04eE!H;)vJpaeldL||%cyx~zd!1bC_JMf9>ui0=b?D^h@ zK0c@V%Ca5ALLqjv&UOL>Z;`Y@ojDWKJzoJ&U4Cg_+%Z-x!z&&caZjmkFyh^c!iS+n z52(74G#_G6AU6hC7^46faD2~(?1jHXx=`}G-IN~vc#Cy_UsZE@y6QSn;JLM3GG7(V zC~SL`+~8sH*(EuXA$I3KW|$g^!n3{hk1I(VpOx5hk$MC~>(1-m$R=$p)cPn4egco4 zKUc-9#>SEZHw9>1=~-E4BqbX}o$TPrK&sv|WQ1!}s_C+Y^N~79(e7dROo}QGJUz^51aeBs7Q#BeR`n{N+dSf-N5hhM3J2pq)rr=v!Ew zkC3+;@Lm@H3^i|hd=^*g@AeKaNy&A;Oh|}* z^QIRVS`ae$9qjXd%+F_xEYpC&257)cfN%}$x+19qD(JJ%QJtsXzYtw=n&aDBA6%*F z117&0IqB(xQlH828mR6TJ!!dE7^3%$W_R}5FLC_ZZ|M$^iL<-rDa4{a-`u{6gSA2w zbUqR%hi*XZ>jH?A_Z9T{yjCC*s6XCc2C!d9gam7{e%EwRx9xD@;SBMFy#|z8&g75~ zmbWic&$Gl|{u%gE!mogmfP7O?k|&k_$>|njR+cQGZ^Cb0L*l0r?5u!n!0Sw@_AClw zTE^`!vc)|E1pts_Np6Aj|1S7b7BU)t^!31e3V!?;GDn*1h26khe}W5V_CCyFU_S~4 zkG0b?Yiqq=mEVhKXOKAnQktgr_T1rjr9nYKdLJBA3YYsv7{+&h$xD`{eAGYbvAL)U z@_J-W2_BKmaOOc@j3NL4DR;ZWsR)JAkc@(`eKPJ1m!+z^xKryPZ+7y=OnRjk3Sup1 zN1ET9+!{B+)VrRLe~HqmoG_q|tEyFxe%6`YR%cp%ZkxE!2WLrRzB7M=LDU_!3LjVO z-UJ@|9B=1JBI_*}ykd>k`v_p;5apfldXztU)PL$-l0WBm?S~~tpq&@^Qf26Yl3ef_)^rS{=rv-oCjkx}T`8ZH5eIOW^caJ{xZfHaVA#B3OM+X8R zRss%Z`yV^Mj^2vC<`#)(I6!~Wd-e%@y~f;yYhaX!!o@)u^BqohQ?T!^T!?Uk5>v?*R>;A)v%cN%hv&)>8J^7sOtcKxjsB?S&?s3?cgFp__Ho8{!h;Bn<147h z$<-@aiqc_Agm(p8m%whm8y-6l^YVQsO|{BL4Oawh7Ir+c0|F?m{~a}h_^99tLCpJK@RJZD*_?Ag9UcGT1y&<4=zoFGJ1w>%t=Ox`+Jiy+c%n%E z0HHFTG5)l|Jw?UOhedI4#IcQ{Og4k=_NWss5$GF-4A6^s;R*LXUN%xwkYfLyX08{- zW$JUv+sMa@JGe50<8`t^CFE>$q5}}ghJ8sS?8Ua zZ8y{`$+EGqglunb`!;<0XC!?K77ME2K(qpswFy4y1+-z{Dedbh;7u5}1bS7GLw-8V=Z zzN?_keP~D%(O%%0KuH2}!W1wx*aWvo7vKYd6(^J&k;K>ykr{3U@ti?UU$WnF!U_}Q zM{5t#wln+hFYr8!e-;dHCvs_Ri)PTrDD>UqcqOZu;EomlBX5kT-CkJ7gSIFF=#gAh zgn++k?a&b6M9MP5YY9XRr~|?8?eoY;A{cVs)7D0kCL0JohRs|A-r66aPlI9y*U4!? zzxYydH}JNfMMqmg#M30m+OQz7yzN%cGx(yXJNTFI=TCgD*jWJ-?ml>dYGmg7Iic#?3*K@Ay1bZ{ zV}5YlBzE4@BYb*!*ELe~*I#UtFDv_N12yz|IC2eYbLURf2hX8p#g+jCR@fEZyZ%%> z{`;X}%)?kbF~Q|#m-O=o)FeXRzyE}HtHKsT5CmM10#3dpATrY5M&98H#mSv z;U(9?kKOk*sf+Ou8+upAyyG(<{^i=+cwyQ0GOo`&T7UNDNnGb@>>LI~g`p>a&og+R zt^zDaC~^K}PRl|b2O}fqPcYC=>?LHBBbMLiAJS35x^K08qVlzAES&a(!^4*M3r(1| zqW((F6zt`UKVo3Dioxs-JyI2UfUOkQf=}(i<3K=hv1#OnNGC}g zn!x{@cVG4rl!U-``&=b<(@Wle(dT_MYdhW3}@B{{UuRJLz$6;z*{mTr9y}Jj686D~Afd(B9o@XbxG7!Lo-NpWn z$7Sv`W}?)=3UV7Pqelg&nrdkZ(toC_UJ{WN(&>9Kr$<~FrPWcfDGjiko=4Rl4~zwo zklOy!6d^xFL1kT9Kp4-shr>TpvTTr6gOQH>GT%zu13qVP8C8-%hDDW@r;noON9PdGis_{bL6i7`Ba*fizL`NEz#E- zZMD0^osLMW4{WGn=lE}}?l*Nf4T-pv8^+p@#8;>sk)0Yh%y!^{!zLsZrJF!Ap$Zq0 zQ&I5}x=e%38<56KeAg75zMLVv4P_YuQ%6-|529!X>gBJXI}%cTSzBO5_kL>Juj?Nd zM_ksO8D2}Cc3DnmAtd1mJ{}YzY=0y$==;cv^Ge6l&)j`hu5)jC0J8iub%&JUsWn{$ z^eZOpP#cz@V@WDUR2#r_G$XHpo7QvPzf+l+JT z7ZwaFf`<%KLS{!j623Lr?wcGwS9?K#FDd;)g@ic0i9Z@}3?Y&=90$|NC^X}LU#{=; zF&^ybo;Np3A0Dpg|ElaZ|LL93T6|z_%dbSc7#c_0#T8@MlhCR1&wZJSpD*wu2vVi{ z<@c)Uw{`Z{6RCYhA*tnG3qU=&wa`aKZ(PA;DfoJfh>H1epDDx;n{nLZLG@)|GaBM) z*6W5bl-P)%TfvN+08{U_13NoO&?eS!hceMFdtrdTZcPR+=n1Ye*Ubk5{{R;mYj@w_ zluJdK$qKEBZWGT=GmaY*c1$p_GY;&C)nCgpOY}LtTN%8TIaFPb^_Sbz8}E;&J?jtF ze3#uz))V^w&ggLQh=_ia1Rilh%`))s-3y!VuvbgvlHy)nanFRWQq(@B*&{2q7uDib zqC#8VK2>l^s{aPS$_{3!fi(+z%+BUDv~@l*2!H=yRDE|`k8SvNrD2pZ%4i80MbXlh zLKI4S@6z5o4Iv{X+ND9-drE1NXlQ6ileG6Fsovw}`TgGa{e$Q6k?*+g>%Ok@JkDbf zxT;{Y6s_1hNXd!(L%4es)r)6HFxoJG{>}GUPJO~mHV>RBlgziKj(&cnJOyQgXH~7! z`qtVH%Lbybi&gL@HO$>F{g_wP;*E<)|TRiGh5 zO?ZXt*FCAA;G!`uaas`_3X2Qc0i=(8TsW-^iD#S16rnWK%)%jr3m+6IAGubWNi#hi zfq9yQPn}Wbwmc)llgZ+Dw{*6r&_1)PEge zZEYnjSQX4tzM;&wz0I+vu}RA7p~*KbB{$MPqSExgH(}a*5YJOEmf!PRFkPBMtp!Hx zzljdY9`U;Qfyr$1o)VE?MePDCH+G0`USu(UR{ZgKX@|45M`wjZTcf#_&gQdCSy`8d zsbw7W22UKjr1+|P*)KiG?BDA?VUzMBaw-YD2&vD7+y9R2U$~(l%%IP27NKqzV7T#p zm;&QE!86x~Y?;olO72)oRxLP9A(Qv5)?4EJX)8mrW0&sI$VpD`a}qhV(@(VfW~nij z9bIL``Vu#Iv4q6q?=%zOyqlnRv3pO^V`n?TgtYfTD#{am=fF%H)6#4H+%9{R=ECe} zUfW-aIp#_(Y{q*s;z%!yv`?wT=>PKPm^e;6>V`OFhu+ejH9|i}SW>LL9Ymu|q)P#| zGoyHIv%D(PukKKqBhCV z-vn7CQ6uaPxESzaH}RaAlGV+}k7n$D6;QV55Phh^d0A+uY#$K) zSRfN)?GwF`8K&YpzUXEobW?20c5j1jUwglUf-5vP9aynl_&qeJD`&G^lWlg$keUC> z{-GrxA0iq9QAiQ+l1C8DQ*Ot1TZFx$BF-$MNlmKYK5E+n+nVEiLl<+0|SuSZgnlIGv2U1=XGnQT}A zIdJ{ksqeaJLbpn@OPb`VrNwV&Pv4Cjk@!P-EUWf1NB!-WnK@JJYWytA+_#=SJo7Va zx_N=6*ov)S%&c^f;BG{vgzLCJz?pUjcK5dJ%Br~-Ii6sUZ67qr-v^Nj4E4?#865`X zRAqiIDg{pznI0OG9|wXm4#zfTX&uj{}qDpPdc zgpC9Si@W#i>Ga%0!5?g(=u z%sbP|GPPbmC9K@Oe>Y%p9Ux`#Tx{{PYJO$4RQ$z@lg-@zQ=}RH>lKN|rQf(&)7;Ii zJlb{K)g4)0_dd+|A1;7`b9HWLjt8lwhkBz{x1eT#x0`IEsqELSE0^13UKT#|D_3kU zTJ7V0K(O6j#KIq}8pyky-RobP+tS+~wwn{7<%^SD!O;3f&ClDHzRL%wIbFVLy}tgl zf(Rrc;+X*o!$ZTV&kr8M+Nv#vzpE)kn-w zF%==8LUKK%Ih;_>y8~xJJHUkwcwXzL|MjK995*Jz!^894m&~V&2e*@L+C<0-A>y`b zp9$7@lsI16x63h$=IaI;-|W${ATh}1?NF8x30*p_-zbQuZ@RaXvFQ4lnep7z0{!l^ zLnCrY%B>!_+?^HV-rAI#;^begeQlrfP5bcuBDLQ-?c2Ei+tK~LSuU57ui=_jQ##M| z1?YIMT%Ng@up_^V$dx{a>xITD*X;xn4GCKiT$bR7h!2Fd9HMUS?$Jro%oD2|9Vfvl(?kT7-UbJ5faSbnKQZzu#mk;kI*5O;0Cz@emLUd>~* zVq^6zItcPg_=>`p zVl03G1~dt*Wjb=`WdT|rg1CdIrSKpVR)aJ!(Zs9!)fiOiokCyo31Q`=#So^w9tzVW zAv~(lRwrVDeDlv-En%ofl-wATY-f_^+>Kt-KRw-|-Oc3=c8x8lk_cm$*Y@l%02#)8 z*hDBJ2)=Ga#O6w(nS|5^K9pnwuSa4H;rM{8=Vydj8gLrjmh$MYPRGFih{TlCyih?) ztKlI%=PyW#u0USqihz%hc;I53BSl zjdFbHC(qeo!wF)oKO@WWTe&kCqd}{Wo zv|&Nv4H-eFp-B6nrN2MKC_O8VAXkOm92aX_SgU@?iP7t3eQDhL)P;F|B;jPJaN@xs zTIK>KK^DJ_UB0)icFMvt23-OIK~EzoOoCkia%;Dm?ys;EC#E9!bxt{N7S9;rCJy0W zIJOgTOaZnLF|By;zQ1^khamtGISf~IcNbk-{0!d=B94U^Z$ZgPg55|Iv8BYC!(59vSl}Z5C_9@Qoi>>s9$eyYMOP>D z!BipA4gvkDw%`1&P}_|G7BuXmePtpfa6$QwRPc=b(ibieu{=1gB2MX7vp22cx=(sd zbGdk7%YmPwT>BLspsj#gC(=)A-RpRpeo1(ZKcSP~a+oMO*qtKp>aMIG2j30IKsX_2 zMC)mb!6Z+Swy^e1Q(GP@;6d;XM%If0VZsC9{$DF96O$ug)4<<*wndsX7aKv+mB?yD zgMGpVQw_N}0f1sGUGxN>ai_>+Jd*ErI^wOWmu|)5Bm0CH(wTJI8UQ(nG1q z$v56k-0l!Pvpp)ZLonE^V&nzY#^xo+h9TSJvlyJZrMzD*IGz173bZEFN(p{({Vm>FE_*`m?~qacwE(^M9?cG|u-i37x8s<4xQ`Uv2TIO532$OK_30F-qv zm>;ECxnh)J9my0Q}?s@zUl6s@WjL(Ntmk=OD-Gcf+H7LOM`IdiSgjQ zdxj>>BO@ch7_h^uKkE!^n7_cD5c6*n z04jy%UTa?6;leY4^5F}Hv;jlHZ8d=hzyB^(JKdGv*9{aY=?E|HLLTdHM95&q1G|0` zJjg`#qvbJGIKHt;v*FXA70s=SRCNLoh0c`DhuD-s!Y9GpVGK%B5;(1bNvg{4w)L;n zG&#*o5)*dJONd+~cxnZOg44!PJbU-_!hR~@-u@KJKq!Z&d*pD7*wbQI4DfKz2LZwya*@D7*1E)1eaSN+G6d>guV4tD%Z%-!-rp{ajHW*j(eF>_~r|c zY{ZycIkF3ix$xc_ie-3MUkCwT1+9bFhWpo-&k#Vby}kXfUxOPrX3F0taO6`3dM6vV zdcaMU><&5E&a?wpCl9{Z%ysPhi;UuuEUUSZ={mBkth#Xxl^qnFe!F*Epa|V5K{qDm z(?))2#_DNm#aS-i%PFb6mj&ZSB5(A){@Ann>4(WvA%{g*!SniU{yjj?;tgH-VOpu{D_h;9g@%ArMmI9iYv=0E#ld>No2okVM z<@_{=gNw*XKwY})pNewgjZf8u$T|zrOI!X*CnVb*l=au*!TbgC+ArYc!~=@xAS2wB zNyIk8eJu=#JW@DaYt}N=a(%HSFJNyAg0W)etGA0${@vuK60g<`|}?Oj}MU>^tx32DYmkf=L}kTPWDB(xB? zF_A6+D`!{C$5s$)tXATfYS;&+1NzI8gdrrB2VoO~8%zM4AD}fa?9|yr96^D4Er~4I zVh*Qq9f+ARD#<4(nF(qTA%%CI{8B~4%_G`;lYH_>k&yP-3aRmhCiLq&SXl{`W|a@= zCcL0Af!+6jRDju)FZ#n>EG%AKgM~v2AYEn&Xk>;FFAV7V5zt%W5X2e7H1st5$G)4^ zdbji5XX=Od=UIf5KP zoF{^~)o^QL=jNvMQPpv~Yg4}BM?9g}w6yHD6P^ZcvsF~cEZz+BWLRb*CAFj2d5f`n zyJ7Z#theqig)XjeS#JuAvo`6Wm$)jxhB8}H%hSCf`!Ii#%uhOg56$Zp>}WLc#ur^( zixa{>gqAzw?OkY(Auhq==)>K#TqObSm{`p4tQkjoVzFgJ-(rm!ApNk4h6d3DSHTpJQKi*&lIqLv zA|94y+WX_(DJy#e-fNJ)LCe=>UT9bqRg$NX36C7i4pLK64jef`8Swr>y3kA%?Y(k^ z_bxX{#Giz(EyG=oaB2kujnVxbnL0?!L^pS<&72?A<E>r8!QlxB+cZ$0Q=1a%QuV1H}#@qa6 zDqp?tfAW+!V0%(b+?E>~9?H7Qc~{_AgbenC;WktD8=)433~!$0SHB|vd&Jl&Vkr|;ca?pm(ZP75hj=7mJo5z&g` zjEE3+f{XUkDQy(D$9~ngeUXmu=?>VUm4lk-Kq~c zZ97wDKTApGM2YV(cfXf<{mh$_L8hB{%<<~G+ zV^1SE=bPCyif3c%B+28Ak}sdij5?$#H`J!5(HrIgxU@xY=!kJ)84K%vSI_9nWM*7p z%GQHRR!4S~T?4(VM_iyS!<@!?qh6MXsDA?1cQ z*J>9!$AhZnI&(>dh6GHkd0xA7WY+mPrl%)2b7acBGRXhSIFJ`&e$Jl2oNZr%FCRRW!^A`^yGiC>VUM#=FzbXED74Mpp=vn!DucG~r z9&Jwjwmz-#-mzuA>Esa*JM{~zww;X@RM0c5%Cz1&>9~VlhT&UA(;zcS<_J|Hi+S^3ILVn$E?aM__mLT%48& ztEx!O=1G2uITzuz*{6ga?CR**?#71RO!C(1H%b}%(dMMwv~GFYyE~oD*f&;_LG_8E zzG0O(ub5=ppVY^H9ys1DCZVsNF<IjxM2Nm?R%(S(k*MJ+Jtj>`i-HRrDw^yUsnh{7}VyWSfRyI zi}I07(wKGy%-0NT8-Rm=u)okq}o5VJ=h^4Tlq1(_zE->#!U$OQ6_b#7{T`#_1o4(p? z>!LbzAqOh_x6QyfQ5FWu=@)CH47C!ZBGjA>HoH zN$OYR9k=p0OZ+|}xO|9dm9*6h4@LYyg#FVk7@MZ#Rc2hR8^0YZ>}nj5!PgvBCQwcD z*x@SOdhW+N*BMp`!pj}Hlb8Q6(=}h;mu%y=%R*a(^+wlvtU}*buthgNa_CahxY1Pb zQ1rvsO_geT!cpkJ*!=ROi{K zEHkVzXJ)+8_QH|rR&n)U&Vu0N8o6*U`4*SsI{@UR97?C@h*jV*41U}G?vjc|baRVb z4Zps*v$3YSN8LjjRVPEblNZn~qD|3!rQm}L9-&yH^Bd6A zBagm8+JMllrLs;p?`Fa?(!m^uv1#os|=Frfu3i zTffq(7zmt{sJ}U)8bW#Y&pzjd%7-mzosPNVh5zZ9750!p<9fj>ll z3on(ex1YN)kbnvI9knu*9xiy}{!5#PC`2$YcD|!qGRajVz8_;5s}L2A6|Imys*4RO zDl6oIg`{3q7+1A}R`0P{IocmlNc;4}f1m6IBnU>X_`Z0UzRONxy81=}VW`lnNBOVQp<~ zN4moQUG6$g>WgnSTldvX?Xu8&>n}sEW1$pAlfI$Ayk~xfL~6b7MV+eVwaDbgvF)evykg^d*2ui`(a`4gkg%H`k8QaFm(ltK-+?`Zo;kc5XIwP%U4 z;pnXQ3fUiq1K>zj>2!5>cj@KF6_|t(*4dyWqeT}%C&CAI6|xJOfhq`38NySDfVwfa znFX0>4pv?R@GwVTUXPBJ$nC9!+5xslNVbpyKNci&U`8z<3<5M;!JIJw%NMRoMj%sz z_yn|D8rTJ}NCWVnL>C%(;iksy10-}7%^~Q%wLmNhY!7@_^VSh*z8-XUS1w$jz)v57 zp#eG%3Y27M$q6Spf@4b*nn?KCg{DCOZ~g{73H&_$G4@5K^ji!(8wlnu?BlpRPW)X` zeD}SnwKn7~MLsujis_}ah`Yz;ZT0o#%i*x-t&AI~qLe=IT&Mo9a_QO*+&p=Rx6$0M zFFaX(N_dn*ZX+smLo|ECoPogDcKETmk4NJOWczndZw8H8M)$Ss&U}kbt|IGRBEyLI{%|&JcqWv8?dO^3M#4>Q zB+fgQ7;C}YRAS3!1}KhWVy1reRjf_f7#SIzvgkNL7+=Y9m%T%=yk#rmLO$mra1V5o zw|GT0p!dM12z;2hiUcX_&zPL|cY>1u8cvNVpFMURkgfL;cM*cZLzQe=Gax=oB4-@| zSHyP(ZJKc4CZr(fv+v+Pq_$Y22ts<>S0+;$M9lx;C(mQ>ZnOBWf!myvtr`nLrW?Ih z`)ml25eNNVsxxbhHxGt(yWRV?dRFrN_Rde~*DP&+F|w~4(7wF;(|1Bw;j2^OsjQ|e z`RbwUT1|h_dYl(jd`;Q5WJN2M-jY#r>Fs}hV%xm8Vx743x~%$1rOhoSM1y{h#r-}K ztrY95*}(fdgp>C(}`3E;PXVX_|?3MVFPSQ_~LH( zqqbP6%5wl@V4}e7i>VWB;$CV>3};X8rN;kYX3x|O>#PTj&MT%7AC1W1k(mcFIYzr5 z0q)M04`186zLQ=2IZdnsto|{dAw2MjVZjz_OvJgJN;Z%KLCnZ8YS163yd^sS;Sl=J zop5SI`l9(#88Te5nQDPO9)W8)FccsIB%`f~+xq(YFrnG!LyQ$Lj(SSm@)RYG^c|SCOn(O=A4XX-_^~n zed|Fga&j%c6smT2WaJ)RnBXzHxdDN>C?P=tfB-%ewE~zwVJJ@oWB2#7qH&Xc4^@^H z{hPPn{8aS@{exW2U#8aBpdEGIvlx+5&}wd0=b+!+9h95zuGw?7`RDb-r#Te%a~YO7 zOH<<#Q8$8G1)I3v7k(yVf9f&Fbjgi$tK6}|5=LE1kNSqKcA<*t?bv`YF{}j;?+St< zG3JU8v^z*_d$F;NyCiJ3c-lCYBzc^)sPp6x$G*;x(Be8|V|g39C;(k>@1I6Sj_pO3 z@RQ(RDS(`r@#^~e&kv0%2d@R#Nk~X!=B_o`K(~wi*eNPlCB4QVw>ew)EP-9*w_5P^ z$1JhuH(b2CMU>H1#*8mYW5f{ibar;9dafA|+c0z?;)F$ik0#)${=7r0)7)aCem8=Q zFw10qwQ18P&{wmTewmlwqNSm!G07M5J#p)n%Fida$r0Cx^}_Esf*aGr@Dp%2@aGKmql6BAK$4k+u{b6Bi!7 z2a!I%e*Z?ewG?hL{t##d8)$M$%AIs{1I2A`riR+{Wc=}zKNKbV_P$eZ{0eQ#sZK^Ug2GKg$ZD__ z$wEj@YVGYY=g6F6>WMYGUMKpt#I8H&@btdXKeTG_#!E>{1Fv>3mI)RhIIciWaa?Ik zd@V1FkN3gWe_cy!^4EcH2DgMTwBl@LfQb)ClSmInHjtoox2~#`q-508TR~LmyrCD> z-<{6c_2)N(61~&~aZ5MtEon=?VkS7qtW+*_$CIzhd{VNZ9VNdVOHtvR6{#v#%oP#l zvUmCBO=|}Cz2f=C6s?nsjuN*f8=14>>5my%F z;5;!0g9=M};~B8u7LZFoU9ZRRPrcBbKA!w4P6Og!VyugQH2ZMKGhnGzmixI%I+3&h zS6d=90RE{&d?k@8h)PN`-KGTtZ$dX6zj*R1=-UKEYHhi@QMl=MP8@AbO%2pHLR`du z85o4EG2;^PHCV1+>0&`CiV#R-2up&)j#z4#W4wLKY%>dqSd`ULy+6escE;&$LmJv7{)-s6;&CA+v@kk94M87qKKn0gm4bQM zRcv>N5R*b+@J!I|Mb$PAVz!hV>;4c!9BDUAhYj%uCAm}{$cvudoYbY7I0cd&7=~GB*h7(JH3U9WIig? z_atgnyGwi*++0EVY_>{pn1eki{5N|@M~X?a+wof!S+6+HRjO3-XZH+q7*~;|=e6$f zWK~u%HBEgZsXyzewjlcDM9viR=Be$mRavo-bXKulmLLEx`sUUcq$-y<74aD&5vgN3Rs-lYtL}J5DWaKmo$ldsPQnZWsL_1SwqtMu!#x#9Pfm6QaF_EGz3u%|Kj zCw>|#!)A6uEysu0SE8*;9>DfZs4s#s;9`SGe!`V$)Tb{&K7rPkftx#fTb?}TaG7U5 zF!a6h z$5`pt4r#i0^S~_{&5XYOk|sH#1{Q8VXbu97#UaJ(vmSLcKK69(NEr7-R|2IBf5;#lpLI#+{HzYEhrCh(eqiD z?+>7aoTql`_hK_obRz}|C_B}lCd4h}dPPOHG_l~iezZAYY_3g>|M3KTOnw=y*{?Zx zt*_jmrrdP;bo=9Obb0FaqA|U%MsFTf{Augl@2AnN#L<3%_YJNmCeNtLb}%puj~*Q! z9K3xk`E7rHf6J+Eh(3slEZEZ9dqZR7hDAcVIam>g4<9~-z3a%82nqNW$4sYRuL_CP zSYPpfAbLCCOi}c&iu#a;Q;1H0c8uQVfE3z>RhavU`rNu?>3=H+NE7oN$Ui3@2!F0^qfhZL~kie)Jxw5bhmv(gIJAL|eflYrbPH?SdDcJ5D zNZHmi%khKBXOn;EB%jYiEx}@?*RFTZxyo&p^$oI?v44`r!WyD>Mc$n8DaY9IoyZ2`D=a>36T>UeBu7_wv zXGw4Z9Yr>8;=PkOue<`Pv)gKu%Ee-%9*PBjm{wSGz_=a-ZN!x$$)QQbFKn(~4Nj`4 z>($nju6xai<@Ja#6B^G{W%Zs;H=efUU7=*;w!+oBF6+_nzrjT?B5}+A_&)j&Wg~uW z%X)`0tnm&dyhCq`1CFdN`UmbsNykrjcX!nK4{8kTj9yxH7X=V@><|Iz=Fq)`GS;Fu z7D6n{a9w)(UfHlhevg)&w64yd=498dtDL|oK(f>HpjI9N8=V~F^2 z^w73O4!uyJ^?3g5bsB%({`FH8Z=!(Citrbdq7G`in*!~!!?4t)%^Unp{8NI-d#GY^QJC)TbQ>#emmE0 zYo5@mNE0urIc8-uW0T!+%jRX?rG!4(o;MN`&rdX%W+^=lXb6>mlDv49v+26~3++cX z1y3I^c-+n-G3FfpQ{hU*pc?L?vv8nzMbL9AO;W2wh4i=NF`ug+6@vAmihb+qWMpvj zui9|aFQ%oW01#^1zh}=LML4Wf>BR#Ez&EF+d`q8SG^x&w(JZ!(fuW(hki3CMNwl~7 z_KkgbmdnknyHH|MnLfOfNM@4RmFTO&U*AU9Za{1QVaDsH$jzG?Efy+=w6eSd#qK+S z@`b;gD3+7*AaB2$zsm5yZw!RYglX2%EQ9xY%-$MSFRRHPuNnQAC|$Z%@0feTT<3VS zHAc?}$B4unwfNZDeF5N~3B!qJ#lCdY`mDFsg0r5UUOKI<(C3vdHK2q3HInxBJj4?R zIFMkXTz>54)gS$S(barX)SRW$yihpM)Z|$6MXd|nZ5^Mg#wM<22xl$IOzcZDG3Wj$<3NvKK54y416*Ek0RxFM z1OI&q+B-I2VjHb}A>dxt_oN01(Gwry^L1Z7Qo1i7lX-V^y^bROgzT7uN(d!;^79{) zL%g2`v?w*(UdtBjOxY$&=GlGaqV2S9*`a=w8;R_J4xh|-G(KN-Wsjh={bhlmA_;!g z_naqAyeuyM@?@Wi!{x=O`j>GPYYJ7=xUvZ4!Fb+oQD`2>1t>e%rXgLQ{$jl$jcRnlrjF~_6GwJTTl2}ELe@gR6IZ@8v%fI0hEVKn802^%H=Z;d|_oF zJ2D_5()gx4v*e9Ki>cWDmGGpR`Ptb6u=)k4TU-)}$-v_amqJE{~*Uj%;2u|(FS^sk- zn^Sv!e%{=;yG@BVc;e5atP;!cjO?Nt(DD)$HIcjws;GOv_n7{+pI!+e3|y}jXY$H5 zqEtiLscYX`sEL-0sjR1WolVZj$mlp*2fh-XR$mi-iU)kNm zQ)c}$w^XVBpgh?a|0=^@g}k8#YKsw}qL8?$cJo0q&NC;o-laS{A{v`9v^3G1^>uhS zoYx`vfqHakg~w`gaWLHpc8zfRQ%y3hH`xtuVmIQZe%iic;w@!EnqB!=TaNv+*d3?m ze}4(v7jO~Ijf&}y7U4vJrHxZ#_=EYj&6`t{#rMN40sKYW{bB=JO*kzi{Xc|}5`VIh z3;8&yZ}ItTm(p}OKodW>By+0KTqSDBiFs&zU!fq{4luCg<>e*3yvh&BW(+$uPJ;H= zG~+=obM`P%*oDLK0cR3{3m!O7nLG7o2830F?KM&~`I?TQG_Sh9A$3aYrDH#e;zsW!t?NpBX{y+ju)Pul0L-Q z6zV+QmNOu5X3I-$3IKjw>KDy7^rleg7jglZ&!jhni*zFJ0$?0OXgdHZ8IZO>KF?GX zNTQQ0;QQonYCM_3;<9(T;H^M(#Dre07JEckZrN3;&*M*-O?34?c!``nyYa&K>7II$ zZCkcH$IGfVP{WEpDDM&mR1dFQY1=uL`8_r}V7JQGU+cwp@6b|bX)ZSXU89yLjtQqEcur*mB~j@P6(V>4v;gW2zy z5_?KVb^a8dX6E|Lksm+W>h|Y9=5{7{$IA&S>44@Bo;sD&kti1@zQ;1(TNhyapL4sd z6dGr(-}(<(DnOD%OFlNXTkqbTm;Pvq2@Vj(5ZW(y>9|IojXusTaNpOS^RlCK zwsNJ~gQJQspLA>Bx!Ia%cY!?~@4u|5>xX|03k|JVIXVBSX*YbeUlL!;=t27%kmaAZ zd^q|vUJl&z})1wM|F1a#;Ofw0!gWZ9}w3 zLy9upbmGBEZ6{@ubmI`^xb(q_)M}~ji|bA1l#~uj4og)my#37i#kK+`0hsj*e|9U+KjG+6IzDi+w3FsM(78oFp+3Zb4d^ zB${{xvER?LT-f}L@6$?n{x3e6dW8d{)pAEPGUKz_2fr^~r1(rwm@-bU{xaysj)G)t zhs6Uq`PoPIF)>XR6NF_P5Z%JuimXri zIFc6I=3Vo`4$!)t+}+5HZWg`8wjwO6AecX4%OIp2;N26h9|y(6nB`@z;mjFV3wVQ- z>^Rf6mRF_%p6T;vyRL8wDT*xzST}P`S8R9@9T0Dm=v&M_8GBN2NuI)AVF7)59!_t{ zskc?HE;>v^J${n(aew~LE%`U@)VzCl%66bqqkFQ;2-{`r8^z6gE^SsxxPGgKQY0@U zD>l$nayc$pg=X$np0I)JjvvnrI-G<}s5|B+)H#ojF)RzViW+r1Cg7WQ9 zP6s%gIF-3LA8lpZ-zZd7ke4x@+jKXMr|kmDGj&k3G3PLEQvwKV1`pZ6U5_r#ZKn#2 z3KlZH;$59nx+c#R5!p^QeWKX35TlEBv|PpKB(?;YF{>|1Y`*Rv>}%$?UwYAWaT=_J514nk z!a9_Y1QCrju%8~=w=_;A6)NdgC3~b|sBZNczu~po+_U&NsSCkg%8@-%^`LcLQE_$i zf3W3&#^O$Iv%*IVu2$(=Cb+7u6Wo!^oS#OFLiR5Wqp?$Av`P%8Jy(}=y*Ji1 z*1kY;FxH;Fr&G%zV6X)2T+_n&v%YkyoFjjhHLtcCULBl>19(w+=&`6IW)y@w3>XwA zw2E^+RTUgb6biR9IW4^LMe;raTeW7*Cb5E>#hndv2N`Xw&&-9BDok`~l$H0sYmrR6 zH#8GmaNfQCXbW+*G?PA$U6PSO5aa{cM+p|~p{K{^@q*_{6Gk_G(bMu(E)*S*4uDZf zOW4cSvLiN<_VN3pk8w_jkC1;Z;2;0g7#hD|xyZHTE~Z^_jPtfL8oD|EEqozj6Iok$ zrti>YcKS;>-gNsSc|9~ByeQ(eh>q-0?=95@0<~MM-n_Z6LUOE9yJnJY=WasTnx%s7 zo6sl`zXGiQn_)a8_&bLg0a!q;pTxyIzL>yv-6aRWr+kEtW%PZ^mG1;YFDMf$3j)4;z0@%yr62WELJv&9m!N zRSt=f^Zxm+((pbWu z-Hqp3>Z<{8Bnb0#s75ZPw=1ZreE`%|1F0`zWZ92`yLacf&KZE{qE=wK z1Dt26OqEU#@jAnQ8|)Wxbbo#qDf};%p8k=~u{@-q?od~~q^p!?`6%`j_eWdv)Oi|# z_gvWqgJ$eOVRRY83)ihpe@GLA!21^o7#!Frq{cWFcW+3kV(9j-{+WI0g#y$V)wq00~7q_uJ07UTeSMk|hvr_y^uQ<@${Z*W*=JhI8e;cQewt->2I_GWiOrw?<_uqHUoU-MPYFxg; z`O{0WCe>ibMg|Pd{@#RIxjMql2y{>IXyG7w48lPtOHMf8fwdC2vxQ*yf(Sqw-Kdg& zo)7jk(1q;SyLYr&`oJBM8;UEU&@{Jj7M4{^IWolB^RGU4LO8&DdxzjGw zSJahjo=P!TR^Fg$%n&ruH}LiAXE)tPml&oXc{J~f9xkN6LgP*6X35lC;kRx#&(JK` zv=6db!8;OHjtoYDC^ZRpJCYlpp6SD##j?LV236N7%nLDM0&ojNvlY`PP%fmQAwmwY zM8cEzWe7qUDYM!{oM2?8TfG73XS=n7t=6Yp#Ab#g=r(G!X)z`~Loeh?S>6P#uhB^rhWK0qeOz+W~Mf zaNS~gXA7Pk@aVMvY`$X}^K8$Rg$H*AvVvUpezK;LVsj-IoSMB_XYQvs5t`dad(geq zQCRYRSku)_a!a4*M#_Z+VvBOd?}Rc(s%#(9Jf4+z-OPE3x|_@80KQflNpfk7cnAo<&eR@2{x*J1fw9coiYPgz-Rrbm~Sp8L`_KYbDl@NZ|N7)3bp1XM-M39`XE=0o!GoRi>If;gde-7JVs9+IoS20P$O7cZ61-3TpzxBiI@=%pi<)e?L zvEN?#u`sB7-xd1sb)7<$kCF}xDp~CsIZC%ucQ%ahba2&jk_!jQbCtJTT@@TR`|;rk z5Z2RR?f6ZjkA%55Ev9QzD0Ouc?>_L=tA_`>x2&`B}8vO7C zmR^qPC8$`i%p-mgbVq2rYYlP{L0B7q?lx06Ql+1pOYM_ZrSRW!E#p?3v3!`@x6a<1 z2Qm=grAVe*-ZH@KypksBkf^X-!=B;c=gv=Dm-H2AH0SU?e zsLSWiDKVWta;9m}fo!DnsPk)Puhs2!4g+6gM)`L7mI!+8r!hF@;~B?km`Sx*+*!Cl zm^u)<30u@Tl>ewDHX*^3Bp#JBP7J|1sg3#Y3V9`^JJ=eDClGP0fz$%P-1ao-Xob{} zOIO^J(mi*<&^|Ec13wiL{~Y@vPmdj%U4+H zXa70Jjf-L@RBf#zlY7Tb=FD9%p4_$N)tkf+&mtoM#+PqMB1=QMJO8lkoOYgi_V>dP zzwOD%W-_PELej|t7(2dbHy`WDPd3!Q4Y=xambM7)tkJX|^UU!`LuYg5cRJaNuV@2p z`UW){gK{?oX8AsfkqD4iI&U*7a`geN(76fDg#wE+bYHc%C3|0&Ir3^_PnPFa+bv|$ylx~$8l-?clGY{87As7<{occFcidsm z%?;^Gd$;x0zIu3pMf=QKQg4;m$~;SBrz`!=b-^7w6Rqy7@z;q^Z6qrHvHho_z^A&A z8}0|5%?=-IR2rV0#2~Cn4}XIpBG;^;po8x3UiTt_A&55m_di$Lg zwvLi_iee0ebyqRxU@KgkEbwuYT-;vk9l=Z`GyoU1iA#QD7cx|!Xjw+K|nKqbpw08>!`glFQr7~0ErhWMWi={ig zJ#B1vyzrje`#%4;XUKAGGqi>t2UwmTu;Jm?bSs2j|ZG)4YdVoY|qz9N*Kg+#KXDt_!!b})bF+iV-j z-@^`!O3e%FVckuC^NEPHX_`RHdm=4}Xi|Ru_FRKeP?(q#pJQs06`N)e$*JGlf8b}3 zefJ>}za~GQz^oWmsb^Zr?~Etsp8skI5-t4b++XBt7QcA3dyzXuSoLW7g3`etZ5x+s zVH#gAvNJaJJ(C+udMWu{r~gkaEM)&(?{~&A7}YLKbV3bSjp9Pc?mJ;|0tfLpJdV6K zf7t@V$MoJ;c7JqKJ2j(;)cfs2MJ{_Ex$d}mP+KJXJysN>E_v{|*S!u3!R$hXWqSK1 zE=<1`?rIyiT4#>0B{y|B$yd9TwQE(seNRoP}#%EA!~}V(^4R@Zbs>$eYXgc^-UU4GQ59MkON7_TG_`v znU>MG+2cmEC-1H49!q`b>^1d#A+uQ@xgv}%)cK^X-nR_Twr%f8<&!z0)w&j6TKD<< z|2%{DRbHB?j}o#>?C-OSi$A_vWILTOJ!SMEs3>1!^j1yI&t1kDKNZQ$%CBd|C@QAC zHcgbtH0rtg)3S}L+xk>vmgpX5`2WYH?>R~$Z^3qAOSQ-GPEzJjt8l}72{7^dsMI~! z98{+yn2)W>dTsv0&iH?C`xHS_z?H|X#$^Bif68%GUb?9e^?|BfzCI4PsF6_Dd!II0 zyHbz|zjjx-I`f6LZfhb*>^a+sZkd6cTVK8K34TyBX^|xh__jNK>r^(M-MT5xw%P4g z^qzPHhFz!j#fvh^@TNz1wwGjYJ-EtI_^N8IaaHhtHpR`~c<#}%9)TP=b z`t@U?&rcNC-sE>IX)*q6#$3fGa>gd{hQ^3y=%f6eO?7$MHOZlqg%5kiLs=#Zrey}j z`j5?8QB`S&wl=?C*7~Qx!KXQ&o~V)z`^_WhQb5gxTApdG13unwA>_R;llVe4TPJWp z!*DgT49Vv`NJDlUZ@X{bFzG4tbjPue(w^(hvz~Xg%XOImm+D=n;!#`<3 zA@9rKpnrlgyxDz9aEOOvJ*K}A8QpO1WIF5h42GdG7zhyF<1piqf@2HeJqw$jXX2i} z^H#f&)k8r+0Y(79TZ6h7n&iy>mw{{Y%!Fs-_|})VT4(x1wDz%X?0EQDizlFHA2N0R z+g0wEN@D0mn3$vdBebM&h;^O+coZHUKZy8cP~(#UumAZ*>#c`Fm+*%w*}&A@=UVb6 z5Lf4*4%i7bG-z_;0;K8t6vB@i1~4whwuaDVJEg1?TL}o}w6T8<(u3sjzjr(@2D*%N zb|J`+it_T6@C+d+-h`l>7;UQXg z9*Q~#T+ypC-oMhXm);uaKesR0%BPh&S?=6_f~LQ3889$5_7P9VN@vA-4Za=H4u9ZN z9|0(IciSHOw=`#Rz`p%tqiIv9K}w(ku(H4;dS$0{&bjgMI{D1I)-GoT6U@exWL_Wj zY211*OvICN=l^#F!A>GZU4%~rT*1-*J9W)~`VXT49!R@!H-)YoQJk{*AVLO4tlhom z1N5y|cx~9f(q>J^gcXsVxR}hM^Z$P2MpHD7fnH|e@a#t8LwKW+ZlXkd zCR}kl=RZyIzkSGr$LcE|HldDLW+RMo3R&pdUYi|hSGlu9F0TB(YxNn!m0%*q>VNjF zun$^WC~8COOvzH%kEVsie~Mp_Cw}ZdUGRTDR&bvEMwPkB`>MID7+Kku9g=#_c(`O7 z`t)O*5C89LZNBcpo}6A=-jWq9EopWxr`;y8XBfd@MA7^z_(cnVsLw(*NU+*i&kKd$Ft%a9&C z>PGQbN&3I9ypJ=)B7o7fm$5J%wU0gW2aZH24T}DmeM=aG0WsSToj$|{oyE-Ko@ur3 z=ig7I2OcJL*8lqwkxdkz_wT#JdF&XGhh1fm+xFF(Z$I|7)WSx+Q+n`W!?dehML|Jf zVx96fX?nYiu`#OR(S!2?oYt3{S;fl)6Bum7ExRNQtxMaB~H^0d;SsH1&7g-V) zO(^TV$iDA#-BL)CH4({r$2KLpV}8%q_WJ$%>)*c4`JVGVbIx;~=kvUuV*LO9stCs- z@zu7o;^nDOZutr-CuMIQ0K^L1O7#MW#uD4Y6TbW@gSy$+p82(Tj0OIQUmR$&Q)HJAH~vW!wbBG zWq)DlY0T(!jeqsi;oi-8J{GfdI>$!;@?K%%QVL`2Y{Ibd z?T@i$!m~8-;|6}0low6tdPYJN2`=>jiO(+;#?(uWet3tA($^qHa5_$xhxs4Xd$vRt zD6kq*dHD|G^h5OQbV72c`R7&BBg^X*w3SI+*7Ad{$!`~i$|UEb)U(O~^W>!sfGWrw zfOy3Mh(CU5J4oO_@OvO7p*@Rc{l9`Tebyl~&H0wbnO5piet^O${WjZa_-1xo}|-a3bAw`ZLfuB8!D% zG2mgq$vs@om&}O0*N2yIVXE$w9CrwWo`5e1yqN`>D)XPAB+y$g4!EbGkn$W-Hy4`e z4HswAPqdLcWIK*qz)<3`3L>Omx#oY>x=B*WvIV4%A`}j}0#Rl}&W7mz+oi}+9%?V3 zUnG+ff$Twi8p#KN2pIxC-6N^h1lw3{etss1aY1PUB{cXskSGnDib(7UU>s$lIp0#Yf`p}3dkxiJCw>fFgu0TN3@0cz1@qKu^D zGb*#>ePLOgxOXV>uaiyAXqdLWD5-hmn;KpAczB^(3XaU%O{J zwx|WkAj&W;IgrJLz*vBog=#)m36=rFUQZKgAKIMF))Sz0kUTP%B{4eZ2Y z#;$Zfe~(k>_CHE=(Hu~Q0?Bu{Y>sgBW_!p0559shx$Gv6tC+ zB-fG=k-aw8dEe`vEsu~p$CRFqONaP&yI1)pL)pI%U%GB^UiaquFIFp( z4`0g#Qnp*TI(tJwu;xUr<=h>ag99|Vp&L){Ty(J#N`1IEfqt{O5UvmBl9lOiv*2Zi zIyIWu`TR4=y2PnNVwmRbuKFBwBzZ22&`oY|J;gksDQ2viTRG_-TB>!s$J|1W@^HVypVBM`80-q z9Y}9rpr+_biY}sC(?b$=VN2;a?5AH)q*(paPMkOK_3*M<5ks}zFVXmIdvGSN%Qd5_ zkL9{p6iug5Rxl+sUCy&5>75-^3Ct}kd9U%E=CA~oI8U^|%z0kokk)j zou|*m&ETnGsZRWMo7DZ3)X8R97NtWkl&>}a>JTJ%?*s#VRpz*$iz$lF2bFk9nBNe|%O543E}VxG**w*ytHnv?UG z#IRRpqoZ;IkA6V!UvOgYpR3w6)pOt~c~1@VZ^p&R?X^p?d2LU8Cu49Zrui=sVpph} zf3^*FtZ3q3f3-?g=RBt#nI~vZC*yL#&OlvTL-_j=IWh#CZQeGbemyGGd#3oz*EjzP zI1@uq@7C0q^*XhF!QtDZHPKwUHk!lc$T%Jwc8I+@G-yvsT^fUmIeIbDoxKeQ;leT*s_~t3AZy zTY)Jn21vBFiaZMib1!diL@spHuI#S1->1vo5}RM)ik-C7oYYXI)Xx?A%gOU>b9;v# zk-{ojtrwTHuq@UP5d`{(;Rvbu;4}0u_OTXt!vSWKF^QxOB{VFvqBrNhM0Ou_P}jFi zC4i>GftDNWl@Y$fU}daWRe78Hx|X#!eMzp2hI0dAm{;JKKk8Vg^}sfd>Ive438?M* z)5MDhKoeGaV7qxxy*OC>lp>Rw6QjTEsWr4$a`t4OAgu-}XyHf^%5kHn9xELbnaA2w z(VFjxkd}0!Nx92DjS7Zh6r2D!NJ17;L}w}xy_LVC#|goAzD1ZSqDsKC0Y9r z$gg>g?Cl{B1mc3@5WTfD!EHXPp!6tUjQ^)%QQ&}i+pT5EnoB@@4Rj7;VE>OIcUlv( zttVwc>8=Cz=r}|!vcZqxIh|Y)o?q(Tg@jp<3MocUeuON!q{80Kky)oAX@*c%;x@v@ zBQvVye1hLx?<)Ha9v=ssz)yg(M)JlX4_VuxKz5^-%uJ|Y1r~nGu>Z&_h_HdNHT^T~ z5jndYehG+y0zMU0NGO5S@w4KkI-74c%{~~@j__-NX8SRNDm4aam*?DLc`^gt?Yt1K zE{KMaYJdnl7)sk!=qAQ(eoCam7eb2#;uhjVfa`3IZX$lZv#b}Po`KQ_^!$hj<>W%s zE)ew>)F*DO+!%A|xKX&PyFq$90;({@8iH+4=JwRbG0eSS)n9D5sSQ1+*VLqddjQD~ zRPVcd8uUE!^70;C6Ptr&?&|68ZURFRG4xq$pJC-@ng;CEV&|Nk58VWaAw*X;@n Sauer(e|Y0_Mumn%%6|b5(7TBM literal 0 HcmV?d00001 diff --git a/docs/library/userguide.md b/docs/library/userguide.md index 215b89f..9a87135 100644 --- a/docs/library/userguide.md +++ b/docs/library/userguide.md @@ -40,8 +40,7 @@ validate(schema, data) If you are familiar with [Pydantic](https://docs.pydantic.dev/latest/), you might find it easier to work with QREF Pydantic models instead of interacting with JSON schema directly. -In the example below, we create an instance of [`SchemaV1`][qref.SchemaV1] model from -validated data stored in QREF format: +In the example below, we create an instance of [`SchemaV1`][qref.SchemaV1] model from validated data stored in QREF format: ```python from qref import SchemaV1 @@ -76,13 +75,35 @@ if not verification_output: ``` -### Rendering QREF files using `qref-render` (experimental) +### Topology validation -!!! Warning +There can be cases where a program is correct from the perspective of Pydantic validation, but has incorrect topology. This includes cases such as: - This feature is considered experimental and may occassionally produce - incorrect results. +- Disconnected ports +- Ports with multiple connections +- Cycles in the graph +In order to validate whether the topology of the program is correct you can use `verify_topology` method. Here's a short snippet showing how one can verify their program and print out the problems (if any). + +```python +from qref.verification import verify_topology + +program = load_some_program() + +verification_output = verify_topology(program) + +if not verification_output: + print("Program topology is incorrect, due to the following issues:") + for problem in verification_output.problems: + print(problem) + +``` + +### Rendering QREF files using `qref-render` (experimental) + +!!! Warning + This feature is considered experimental and may occassionally produce + incorrect results. QREF comes with a CLI tool for rendering hierarchical graphs of quantum algorithms. To render an algorithm stored in a file named `my_program.yaml` into a @@ -95,8 +116,24 @@ qref-render my_program.yaml my_program_graph.svg The `qref-render` tool supports `yaml` and `json` input formats, and all output formats supported by [graphviz](https://graphviz.org/). -If, instead of using CLI, you'd like to invoke QREF's rendering capabilities -from Python script, you can look at [qref.experimental.rendering][qref.experimental.rendering] -module which exposes experimental API for performing the same task as `qref-render`. +If you prefer to use QREF's rendering capabilities from a Python script instead of the CLI, you can use the [`qref.experimental.rendering`](qref.experimental.rendering) module, which performs the same task as `qref-render`. Here, we demonstrate how to use the rendering module to visualize quantum circuits for preparing arbitrary quantum states in alias sampling. To learn more about the algorithm, please refer to the tutorial for [Bartiq](https://psiq.github.io/bartiq/latest/tutorials/02_alias_sampling_basic/) – our library for symbolic resource estimation. + +We will use the `yaml` file `alias_sampling.yaml` as input to generate a graph representing this algorithm: + +```python +import yaml +from qref import SchemaV1 +from qref.experimental.rendering import to_graphviz + +# Load the YAML file +with open("../examples/alias_sampling.yaml", "r") as f: + data = yaml.safe_load(f) +# Validate the schema and convert to Graphviz object +program = SchemaV1.model_validate(data) +gv_object = to_graphviz(program) +# Render the Graphviz object to a PNG file +gv_object.render("alias_sampling", format="png") +``` +![alias_sampling|500](../images/as.png) diff --git a/src/qref/experimental/rendering.py b/src/qref/experimental/rendering.py index 243805b..d5d25e7 100644 --- a/src/qref/experimental/rendering.py +++ b/src/qref/experimental/rendering.py @@ -86,12 +86,12 @@ def _format_node_name(node_name, parent): if child.children: # Case 2: port of non-leaf child (=> port is a graphviz node) return node_name else: # Case 3: port of leaf child (=> port is an actual port of Mrecord, use ":") - return f"{child_name}:{port_name}" + return f"{child_name}: {port_name}" def _add_nonleaf_ports(ports, parent_cluster, parent_path: str, group_name): with parent_cluster.subgraph( - name=f"{parent_path}:{group_name}", graph_attr=PORT_GROUP_ATTRS + name=f"{parent_path}: {group_name}", graph_attr=PORT_GROUP_ATTRS ) as subgraph: for port in ports: subgraph.node(name=f"{parent_path}.{port.name}", label=port.name, **PORT_NODE_KWARGS) @@ -136,7 +136,7 @@ def _ports_row(ports) -> str: def _add_leaf(routine, dag: graphviz.Digraph, parent_path: str) -> None: input_ports, output_ports = _split_ports(routine.ports) - label = f"{{ {_ports_row(input_ports)} | {routine.name } | {_ports_row(output_ports)} }}" + label = f"{{{_ports_row(input_ports)}|{routine.name}|{_ports_row(output_ports)}}}" dag.node(".".join((parent_path, routine.name)), label=label, **LEAF_NODE_KWARGS)