From e582fb80ad3c0fb859544fea066c10c1f22a220c Mon Sep 17 00:00:00 2001 From: Dani Issac <137325823+daniissac@users.noreply.github.com> Date: Tue, 14 Jul 2026 23:43:45 +0530 Subject: [PATCH] Improve README presentation --- README.md | 5 ++++- docs/configdiff-demo.svg | 25 +++++++++++++++++++++++++ docs/social-preview.png | Bin 0 -> 39566 bytes 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 docs/configdiff-demo.svg create mode 100644 docs/social-preview.png diff --git a/README.md b/README.md index 28cc474..1760042 100644 --- a/README.md +++ b/README.md @@ -8,12 +8,15 @@ Python versions License CI - Coverage

ConfigDiff compares structured config files **semantically** -- parsing JSON, YAML, TOML, and INI into normalised trees and performing recursive deep comparison. It detects added, removed, modified, and type-changed values at any depth, then produces clean human-readable output for terminal review or machine-readable JSON/YAML for CI/CD pipelines. +

+ ConfigDiff showing semantic configuration changes in a terminal +

+ ``` $ configdiff before.yaml after.yaml diff --git a/docs/configdiff-demo.svg b/docs/configdiff-demo.svg new file mode 100644 index 0000000..8f259a2 --- /dev/null +++ b/docs/configdiff-demo.svg @@ -0,0 +1,25 @@ + + ConfigDiff terminal demonstration + A terminal showing added and modified configuration values from a semantic comparison. + + + + + configdiff + + $ configdiff before.yaml after.yaml + Found 5 changes: 2 added, 3 modified + ~ bgp.neighbors[0].remote_as + 65001 + → + 65010 + ~ interfaces.GigabitEthernet0/1.enabled + true + → + false + + interfaces.GigabitEthernet0/2 + ip: 172.16.0.1 · enabled: true + + ntp.servers[1]: pool.ntp.org + + Structure-aware · CI-friendly + diff --git a/docs/social-preview.png b/docs/social-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..f11da7b66ae3f63916fcf1374d0e54e6b0fd6512 GIT binary patch literal 39566 zcmb4q1yq#Xx<4isAR>a~Cx}QR-5?=3bf<`PNjHNcQqs~fBHaQ4l7k}M-Hb{M3^ByO z0K>q4<9E(k=iYnPf89Ha#hZJ-dq3~9f6woUH(Xs+p6CYE4FUoJB1HvRO#*@|VE1Cs zwTob*5+{8?K#-=RDEm~~duC(aOJBQ_u49M3S&@+Z?&qPqm)qYoo1^Ea8lOR`Wg(U6 zvI&$?mDmM8bS3uP8*+`?8X_a2*ciyyw~zi}?ZWQOAtidVs;k{rGWc;@eW@BekImG; zQwRtS$BH5pjAhk_#R(wdS|~Mqk>q~C=@{%-3;M5vv$79IM1Ss9r@0+;;e7A%^FPPe zTK{bRaq=&MOXr7D1Xs^DK?JwXHv|_b|7Skv|06kV3`zf1LVANF#%Jjj3SK6bi93c?M8gGHAx4VK|bq_RZ1~=gNuFj?o?!> zy`^{E$;afH?;b0^juKT$y}sb8rgLmji;w5HuCDH|_9%}a=Vac(&kog1S05XLt(@Xd z#U++DS{>PH2^9`KLRNvBFh8h}r<=TIqO)$<-V~>sEA+2=1aEQ~A()8N>IKe~`1phc z+0X@yh@{Vata$Ro(rHLkrbw8AivJi##mzMs7Sl{lN6Wwf$q>E!T)aX;OnkS(6USKr zC0(LTzD*6I#4&XFA(lND?|o_6-PZQ3P*PNk4v*R0#U6TePPI+ewOGi6$XzkFpMd6pvo}R1z z_uDp|VIOF^k2fEy58P5m6r;N*F&WbG|tL!VoYLDk&+U zimAx^SRq@@T~eL;vRmHB2l)b?PFxHcmCkc86J4=IJnGvzw|3Hr_^?OcKH<++S1B!!**Xu5@YL6dWN!262kP!x6_YSWi@p^d|=|&Ijxrz=0^}E z#;0Y(-mQ3C{5I*-PdwJ2o(BwqAe)dphws5djH9 zS>w%gs${e58Aeuy-zjq*6<*qoPZ zZ_yCz5>u=S`*4EoUOiOkuDt2>s`q+N4=dUf=9_5bUO10#rc-!L^Ut{&L`375A-09K z%cnY!43Rl+e@=!+8w-2udAEAS{O}60R1~WxgN7)P2*L}$xR^?6;_i~T^SM`l4bmP{ zvOyUneOWVvDnMqRq4miC2t3Jzy0Gi*1<-dj{{4uH+^+E%@h3mq9Z82r1;$2(;*8Zy zbqX}yi1^D6e@xxXlJ9@dPHy3DKP`|{x-!>eHm`I)NkeZ`Md5wp@wWD>ANK9EpLfx> zm-n*d);9h9n-`8y~Sc@l_-IlwX|n z53RcOy2B`^!fd-*(o^kL__f=l6zje|zV-PHx|vE&46bXZ;gMOLvbm{LOhDB0B-~<190(s?-YQ^&)vEcLiWYxI#i{ zha@sTV^so^146b`liMw%bL90 zX;eyWR()qmzb;qn$nc8klM>C^1mA&4?a3b3Q`Gf&rDfvS*w__6 zXc#2Sr-D$ElK802?De@SUZ6zBMN~yRy`C_0;3P?6n4FCh#4_=@JLGuJ4HcEekN64O z*KE!w1$g9Y&A+~vPd+}*2mbn_dTZP^t1-PY`?Q7uDYaD`T5`j(K%*vU&Nc(+70iWR zp7&1wKK|*EuM6qZkot%`R*^`BLO2!|nA3ceDSHD<3P7oP)BRMv+i^h!Thb)l*DwE^ zIY+>M@wJd>p;zPQfcq~7c&}lxb^jb)fEj#rL5~XT0p{6#+4v6yI5(27JkA?jey(|= z)#IG!oLf@@y}MvAG7Hv7Aeg6#cQoUo(HX-8`#@HlI;&=?p&=urzya$ zI)V+r;)nWww*QgrNiFbPPs-0?Av%8`fwz2!m`U*;T5VqbsijCbne_bh-9T`f=kobL z3I3Y9^dH#qKe@xdX8otTf6e$0&-stf|3A>`|2=b;daapv9gJ07TYp+~^x9*TKV8G< zwLk5H<|1FXizmFj-U_Zu)ecXtudvKqmdo_;sKX=+KKYv%eX8KCr-0>tSvQD#8~*K2 zyV$_+mdE!Lg*dJzybdw=2&N}>d?i9AlpEV{Q~bQI$M4pXS0jH)eV}jX^7jTsGd0CJ6}ovZe3X?Vd7fQ8 zo|!Q$E-rT2afyo?=E9pv?)kVNw}ROwoe}%q3U1Aj4dt91b5z=Ho{ya^vnvWp%FF5K z>FG)DFQ2it;_A`jgYtS6hp6&_fmKv>)xGiU~bS`_@Y|H8tbolat{F=jiq z_bn|gJ^uV?9XI3iJ3Iw6D?B~g^S1>_al~2r&E}oK@}_c_QkMnr7F)$z=?(Vs_qnp> z&in9zz|YRcpUPQ2M>r*`ZaK^rvuqye=DgeQ4Y+Y9&Mzy*hL7~g&?NOx!8#&TkSj~D z+MQ*T!D~VY4dnb60aS&RwMSC*@Wp8Hk!7D!v!Cs|cgOZgC&z7dIf)-W*cf%U44&Y2 z822#ojahRxco^qzr%XebcvX!~^*g!MzlS76aGElvt)s`8fgkUBeZ^>FGUqD(VAPAx z+0z%hT3BA5RgmmGSHP^!b2d}ubTs!3?{_z`y2FPM4B>*l#0vx(l?QJrAnnEbdECb? zt5XRpN1+;5Y@w28lji2mHg$a;K76oJgK@h{4Kld=J@i;C-`|iGS8brxQRnU#!>GXg z{=Unv-KY}5t)a2|LfW<6PFgRuF&NmHnD4HGjm_8S=-St>vzj4t5C{ zZ_KoE$jRRmi71rL;?$ALjpYi?b+$WoVH+ybT7OVaDT)e2fBUrvg~8nyJ*3p1tB1X7 zNGl4jRMzRVf}m=g7xVLr)7;Q=^wm&@k$f*{>5H)Yih@xI(Y2nQM$nW~+(ahf-57+d zY)g0;W+y-~r+c=8hdouYByi8^>9_2VgMU1}96a9O>Kca%Frt@4jj%VD|to)Wrrn2HhBl{1i&(~&b$RyH!~{n6FhSNcJQDLtQPUAsb; z3Hj+35hgHG*mkJvI=X0oVW*T_;T%MRUXi?#P)WrkX1_Ki7Im1bty4@ly+7i7wZfE; znDR;B%;26|V8w9TaZ%x`XQyg1jI%Cf-yWE23_oeFwTw^D0!zulVo_SU&GhgH(c*Wu zT?vP#!<#&kpAs1!2pwVDGt3rhbw)*MjBjijEH(k#8ANbGs?F{^U8a>zYE`dC5zcjs00sfIqPwXoOH< zeX_;vGrYhIfLVMq%y^6(V)8rQ$m`}kQ-DDF171TpOuSBi*U)&bj+I{lJt=;0rM#hx zQ&5H1Ivjc|RMB`AYW3zt1e^R4`@5fOSOVyCk(rsyS!-(f#YM7?vu$NlcyvL2{y@s! zWH_F>YBoE>C;$S9`ug>-X=0+uz58B2m58XWYoUWy&zP)Q#oPRMRw@n-`cu^OW^g|& zy;;5IdS6J%(PLq?o|Htp(JIB@2L4S)wzL#VTU)!1A05XyLT@o||E=FO!Sbqd&*UhE z*Ry?VSj*D*OAY4hrG;joK?Qk8GYtq_f^QU zP6m;c`A9Xjjrp92wTGS~Y>0nWxh8q0+`};h?h@QNhSQN^ATw)zqK4W_HAPGm%7jL= zeDdtKTdT&14~Evwi90v?Ei^11^&#c9A~kh&oe(pQKYp5ym*{9{YWDabS5s1&302vR zYq!>T5p!@k+=NrfJ!{&84U@ExcOkv-#X2~>WP?n)l`tl?v!kPIwh0#l*L?>M@8Wz( zH{JXQQQ$CJ9&8p3OFFRr8@Jh~Ri@{gWZ=g4W{Z7t6fGnx9Gnx{B)qofVF#lp%6iT$ zrzfRGxGQi-zpGlOA;+a)X&y-C(%0J(fxLlcC5U z!B^P9q|V2yMOngs!&&AMes(J>V#x38Tf&drT>lTFAD#Mzd6^CLKF1qlZLw?9m3r8N zb%D*}wK_S{IE^dgx@}hj1uRGOsHjlF=={9Aqode`%-K3h5ns(Xeaw`Une%Bzx1*te z&w7?liS|OH$5BL$QNci3agtjWY*|-ECcs)AH|vGoGY1G7#C^FzNDI6R zZ8!iMv%@1l3GWQ__vG@KCin3bucEB9VpJ*1;?;xAg9%dvJBgz@e5*fgj9Sd@6Rw#M zy`a8lbv9Mv7di*e)mBW%q^9uN6y2SPlEyE_${Fl!u2bl;JEs=VUo2(Q-=~)--==8? z@Kb%Wm0_gtspFr>Ov>ewuO;dO458yOoW?CXr0e-*Wi>A2O;7O+NJf0VnipYhg~Q0_ zfyOaeMMc|RbGAN8@ZCWXL6kCbaAa)k@fV69gSB|SI`)38V;viCV~<>QVq)Tr?$;TO z-r}KUs>BEWQ^4{`5pZtNup#-LZUNgKqw_?EJdud))VuR%@yDW~O7mrUBGh<~*L6go zI6KnvldF2|`{`sD$>R)bGZTnof4mt-PZ|=v%rQ?DO}7A#rRfDmwX)J>+Of>IJB{R= zc3f+1&&+fTp{eynTHYyo!*8)Wb=AZEp2J8l-sH#qTU&@llZAliFsGiLkewSRzGHtS z7e}Kt-$2@3LzeV4wX~XH)_(O#)$Aq3pS~l{SJ`***7j7NwRmBN{r$bO$2E596%#`j z#NDPI2naZ>4_xvi$=coxq$9nr)9}F-LV;Wm7a6P2Vr)!aT}#sEf$FAn2JZ@z>ZJ*i z#@P#QiMjsXSY%!(DtcjQkne`OCvz3Uo}H69uMEruYOL6Er>9@q1ErkIg9ij811s!u z{Jq1`4?WjRe}~G+&OyJdSO&dC>z2j8$>_VYTO-3{)V*@gNlR-{uj0~C*B{6=_D@}= z43d%lF5#aDEIKsxz>!#Vt|`EIDW!Wb;AA9gXD4875$B3rXqy+QImH*CYieq${IlH> zmD;Wb)Oxpf_)l)4-IC>_Qt#Y3KC`Mn+wR7Ps(EgTHu&uU6TsLVn3;vSaJaJR$J9Hi zAX&4!gI}-q|K&yxH;fW(j`2M8SAfyvS4YRFQHp!^oVGEKX89bk{#-5z0?=3IyjlBd z%bkOx|GVdtP<*4dPLfh;T9X9lb5roPweID=X3i|VOpg?I! z&ua1B;o;%*c}k2|u{};&Hu{IHq==3mKUTJP0boJ!K7pP_`}^)VOdmijKu{&tQ3EC8Z8GjwrX|;TYYl*XPGF;<*OkI zfqK8Yz3TS-MhaW(J<~z#5qVOHDPuZmdETBL)+OzseqH$LbI6~S4d!E9oNHC5sI$p9 zCp6z6x40n?^7h^4f)`&h*~JRuI*!J&3G&hn2iB#U7tE?=-s=*B0r-bF{-~SdJ{4=4 zOpOrh0h8;**8}XYySVI3N5!4mP`D}C5gX~~q+SEV2jlJ)`{9(a`5k>!Vjtr1u!Zn3UNfxt@k+2EU(CRfe`E4&a=Vqqu?=MXpHx49KAxXBB zuf@m8Dl)sSW>B=9;cmewGk-^9+Ohwa>dJe7q6~7(1fA{eJAkKtd=5z$UVn#cW>rlj86y6RfI?FkF$sd3mVkt&aC$Wo6)D6>MZ;W}*mBaQX-v zeQz9BFRC9R%}uyXa5@pYfh6hGQnMw_X_0Ii$#XNbM|nuyhW$;c zB5Qz$;W~vf&f9IgYuZsdmZ#O&LND3VJuD%JD=92&vbc;#2Q7W2aS|BN(x_LdEh;LK z!~3cOwlKQc!@|N6Qm{+jYovG(JjJ*>QVlWzyGzvz0mO9Tfjcu%`{{MH>qAf4fW>Ru zA!BCo)Nc;VaT~W2_uX&!6ldhNG(0E4WCtB?sWDvn1o)^=d`Ehyq)bVCsHu; zXm5jh3#*jGUhlqKtUT%DFkj#JvPhHRQ+c_>^KGyqyv!Or7yH_KBa_Ptbs9a7DOeX& zO=NPcD;E4n=vrRwAEWlEX-kB{!}9XRVK*sYjsE-FI|*bhI8!5}N)tt}C~uw7?X zK(h0kh}+KY?`1Y>K8J^ETVbZ3y#d)rjbee;&^7zwMIqfrsD#-Hk%%JMU)vi2y zK~9s#N@Q!c3)v&o+Ij(^z-`jWUeM_n_dV~XUWM~~z2E9KsW8U>=V-@`$MN$~H9%t1 zMB|0)C=i(cfHp=>e9iK>QsVrKEOmGw=(5el2ew6D=kb9D8Lh1X-tTPrZ$V+oc1>XQ68bXV%mmrdgFyY zP63IP>2-N#r%hoGYpC?d8GP?C8w-ie>3-Vc-i?zo91-Qz7X!EU#U5hfQL6z~y_S>j zl1R3!Cp-eCHJ;5O%aXjGg@i@9OzKfTb}UkR?~6Hj!!KMK?MdC)<636ZHU9E*Fav?d zv1r+kl`=8Rh=@FW{hEr3N;#>*z1VOcwq2C1QR2CoR$dP8Kefb7aIBdLo$SS3A|z2P z8UJM2`;LUJ>D3yKjEoE^@Vd8l47fNrHrKQQwKsB{pMQR_pLT=1j2v2AR5b4DQMQa~ zcriU<8A+jdz=(D=fMp2llr^{?Deb%4PJAD!(u1{t6?YYjF7eJ+gP&S-K+|i3YoelR zq9B&?ot0(*-Gs8M7oHj3YuMaknI25iu2IVKr&s`-6m#@)>~l+~SD7c=|1f!t3^iV! z&6bR$aM6##4b}v4-*rXa@A+XScp|k|s zMIanOHMx)MZl=(#DlIO`x77bW)!wl6gATrV_-l82f~+^O3S^v$ZD*ekug*K#ANbRg z+sutQF7H}88uHl>f7yBC1AWNEL`2CqH8G%Cx!+sSsjqJ+5s0x_ZM{IW{*`!j6!#5} zGdS2fSet~lHPkp738XY?4xC`*=lA&0rJ<@*ve4k;Hudqm zajngW%`P@UT1L79l44`K5Bv6_8F!G5ThHj&M}2Wx@!a3Fq|Lm;Hc=XIvTYv2nYlh* z{A3x22E@py&M|#LgU|D%j-1sHcYN%RZ!ZLm+->Gv+pF@rySv+-`EO}9H-xFApDgO- zJd5Z`f>7HF=}os-Musi5NC;E!w& zAKb$Ezx4K=+I|p>YMdxFs`fowXwLHS6Lc7x8X1X*xqgB2%kh_DUQmxa78sIyA z(a7u@Oy;x{$%V$urza=z^b1k!lmtn2+e&%Zb}tfaYzQ13!8r%4#n?|E#71RoO9wE8 zy%8q2Rd;-=p`dd{+r%7~(=7t2IEznu4bArGzQOf%%6%su*UhhF@=)LH*&(7t_L7!@ z8xFHoK5L&sUSGJ7{ouj+Wcl=$z~=aP&2-OAIaw{OYReMcCr_Rr{GXr(HjThu79F;Q zPMnADVPuE`@fHG$q<6by3fKKmZ9Z>kX}MgxxxjPVcXkEhg`QIki;3~xduCuzuQlmJ zN=j-LP2+-_C`(C685$a53?;^k*}sd3Q0i1Q8G*k-WX&51IKGdFxN+l#akFbkSZ;p4 zzo2;&R;%Lh@UShESmGT6+);wIlU<0?(aW}MGK0~pIflFj2I97JC??ZpB z%LTJe>-1R~_br#r(+7coMfIcohd6U$A46FXyk6@56-+pC=JWe-_(Cw@tX}a$hT4Mz z6cv>qr}4F0w^RfvId(Tv;i6ufN!c0Vjh?3k85Z({MEC8?rXL`^u$XNHKjVq-(rRjI zvYe)kaqY<&J!h%&E63v{wlTpMFUc(xO^$|zg?(XeYx^!MyE8sE)A0-f**vZ(;qnjQ zeS7dtCUkn*8lU%AZNEDzK2K?SdODfKXkw(Nr$y6}P+p!?<5r1^qM|SkyO!Ud#%0(b zCMitF424 z{QRz8ry_bT&jTUNR;D+;>$4w6g(}Ic)R=nh4*m>#-%JtS9bOXMA3*O+dwUy(y+M5A z9;u_FBk2=v?z?dxKfa%*yHHV08IA2Z(>azT&(_w%a$t>`efA#BXBr<1ZxoeaVPNz4E`!EKmQT^ZICQo z<1nsmF>f}Uc61ys{S`yjlCr-p-Mz_E?HhTT5_fbD!MC$>osbyT<2oABE66%K`?9_W zcvV`~{k@j)wv#;&WwzOvD$@$&^N*nP|NDyg9R0IVgdWl+lt_6B3?E|>%8`RO5H5o zbud#ysOz^;Jraccm0K915fWQYod$P9&ZzL{d!+4;UmQ8BS*^Ife;*Yb96YkAWhndo z`}c(z0^69o&R&So94Okp*E)F>%+g-Xy7wTb839IV}(iR=m>AtCj_Y(I5%bse|k?0EF(!MAU_g9_sPzWdZK zISXv7tzzi$lAr4AMxV)UH6XeJAOL(`SXgXsuo=uwd5g1j@&DD7C8nsV>gic-XKtGs zc-I|AoGJTby?YUB2)jYfHZwDgYxW*4(+bUn`USgtc(4fzDdZ>0=6w33N+%h(d+0)H zJ72rm2eY1?n%R9q`c8^57+ru*azmoJvIC+w42<|Y6JMwE7kRC0C!xlRmp-extMt8L zvag=?JspXnIi@Q(+ddbo5vabX7!V#a$FG=VY=J=Dam)6glRextGhLuKy{)&=!)~VY7{4} z(K1a8`MruM$~$SB>Pc_kzV%4=iovlaCZ4sG33l#1q9Zb ziRbFE*9weeYq!L>&HJu(TXlS|QHD~Vj$`H3G7?pq*JTJX89R$pB*sSMR9egbW|^}DmdV%PVZ#vuhc?vnl!i9UnTh2EbV9TT?rTXuKEGEJ%SPkbMV!JJLG^mEql$TF}U_ z66NuwrKJtly~&d!)q#Op&ja`Xeo-<6(b#Ca_|8kXuO2>7wDI$~PWc>gWD1~x|}mbF86Y+7!r*05_}>M?_fo0 z1oz*{&M6RdnD?7pG?#s;y{7qSe|>Bf(O42$-G(a}Z?J?bzb-qt`{Wb{6CMVN@649O zNp$Ph#_(SCorVUIEx&Tp%HJdHXBAcV@7@*q?2I0ihZ?}22H#;)I&8*>x?pVN?9;6{ z3?GXKjItYG^lDK2zJU|UTFRrNZEo{vI(l4Y1NN4ma&q3?T16C?ovm;f8R+XjeE8@X zjuG|5bRBRQ@idv3hJ=O^t&WzQef-v+R>#dN7!w|SfZ3jE@Xsuois!bmuOm_tr+LPH(bYlTVwD;VqW?A1Wv)NVQW+^ou`LhrK=agZ>a%wXsLf zH}usjG5K)y4nE^^9Ay(^Vd6blZJ6rUC@nAI zCY1%;+$Zf$lD>5it&h*tySOB!&!NR_7P8GexoE~Ja2ZW%JDJMSHHKHOT2}sm{hfRD zKO23WOH9YVGc-KvJkN_L!$w<|NhtyM^MUTc0K;#Oy}OVH483|~E=3wSj=d`pYaf}_ z(ibY-lCv)n&eiu1mA&X`Xh;t`6l14S)}#7I;RS|(!e{u&6BFF~x!SFY4D@1uXjkFt zg|^ORSMgu`)Lyl=(+@-WO7ilA0pWju_giYY2+~)9!hwdKYjxg+a38$_&;Io>*Es)$ zTVy3gMR9F*gY?5=u$ARUpd2&^yE#<^-^c7TLnYT{64?Mx&(CKP^;%!i%z0N4qm~r; z-~vdfs)K012`)NK(%QAaljBBl-^ZUrK&snc&xDe31-ZGm=!Aa_m5EZ<}e#NOY9 zNImC93N|k-eIPZ%zj`@1!()~A5N%SL(+M#-K(e>fkZ6V_y-~;%MpopN2)G4aAc+0$ z61v^`O~&d>01J1><#q`-qklWN847xf~ zsnZhk`x|4$YsQvRS z?H31bCYNCcJ($hy>`?WQlkcEM&C2)#^w$-26_t%H=fI5xXG}uD;NJ1f+aEuUB6aIl zr(l@$bOhCm2fc_bszTW73iBf-$AuQSX|(@Gg0Kv)6<3Ndl8ad$CsI=^EUa6szED-_vvx;h28266@x(7@21W)3Gs4UD2)|do z^LrpX4${I`^j}v~lndAl=Y$vqn_rSFSvNG1lRGMFEAZM9ud{5D$s+wKkc|1uoM66yprfzYinn6Y)Wo{k+fRfTMz|f_X4@Jk#i!z znft7URk)8G!gwAc|IR+tDo=5TDk)`=M~(XLhTDrqw(>vdjpx~)qaf8ZKav6wwgw9$j86}j{BHJ9_gBx^mj?YrG0uEYD%CJWdR0zBh$?XeMfBH9%O$x zuaX9{y%Dn6ND@W2AQ>u`=<%hdGw{jF4GNiE!`LeTy>4sk5~{rgzX+h^0EA*lcK`alnUlP zo0;0dl}#K#k3GyxO3IXDBe8(vtTkqe#rzj3-=p&$`@k?=vq(mq=@xZ$97U^E-dilJB|~u`>K! zyLX(wV*Kp<4y{Ha|3-_)=D*HX3rG>ld#BufAfqQ1rB#=98SzjFn5 z6|NNPx*5QIdfV*X#>>5A6H|DB;S$nHHi| z>YOtJ$0qVPyw_~;1G|ph<~sUmAsI_P9SAvhq7bXT^(-w__6i(95E4 z|Jt3=cwnJ7b?Z#=oiTJSMYn_Es`n#rt9zR~4ifdy_=7@@kp@_5PwXRto(vbDtUz;saLzr2g zH3jtEBh}E;Lyy-vgGvE*4i2(AWN1I{Qj=;F;1{;ee0#|0ve{b4(K*MCLAa2xFbJKp zmOR!gRM(JAtFxJIl2eZH^CCRhWMm*OE5jYouYwpV$gqT6zI@qO2J`b@bgBl;VQKvKl+;j3N0fUzi88GA^(DeDPNT<=1}IY`33CB!1jg@ZWVyzE zQchmp-p>FCEag8F10M?idtv~464*0F z#cv-TRvWFVtxL-bBG;TIEt)1WjGOmwD)*WO9G}Ox=itsWvt|0#wN=3uGcc!qqpxFy z(~W+Da%!$ls8JxICyQ{1AB8kOJ>G0j4- zQMF6VHwj!P%$+4OM;cOLb?a*{Cr4Q}2a%n0W?8Xb15BG&Uq(EIlqL)^VP1s(<PdzHpJ7wT`c^KA199?00bS7baP)05Ib~qle*S$V3_9Il zIm?T-uB@yC`7`hzB&iQJrbQiR+}lfi0gC3P!hgw5W( zxoGj?MXlqsKW+uW#KgqwwpR+zVPo?`&2TU<{O*lobV4+claY~8QTZ+nWy7rd)ipHM zrizr0GwU1|+_3|hZx0VQ-XM@Np<~4>O>Vf_&!0a7FC9?y&S;tz&*iGH)wOlD1KZj1 z041fKx0MzHr+6;_LC>XH`)sv9go=vK0mSH&(vKgrvDw?&vappD78T{?=0AG)a1M)E zU8uJpLb6WhA;f5{tbp@wQsZx6qoAOzJq8je&WMJ*(o*Aml~i^wPgl>=fKyob_3M%< zX|Wj@eOFk(M=ineOv({mdq@eAEy*rdLKspanbXwOekH%4z}mrq=FT1IoPgpFi68Eg zNW8`Y&!bh|1&=meG`XBy$>Z#K+YHkJ6Ov_*d$6^&Lzdt386VyF|%v<$mCB(<`tgLg5 z(lcIbJ%j_51XH7;TxDZpv!?J%;xKA)nBHX$ki}4O2Pvd;vmHxPwjLjN86=afhD%?4*A1mrSVBLK73i@$qq{h)1bL z^}Dz@4S)ZW#m*Qk_%LO4c(D&{Z*4vMStF+>k?lSem7R@^th_w#=xF|H;NFjLvb6$w z1wRD(Q2+%E%}BP4Uowgl*gpW+6(?pU^}hREzZh)=1-v$A@{rczqbmfnEf(ov4zmr8 zljZZmD$+*aP3A+=h4efG0BzIIxPI$algIkRw@abl+xCXS(+Z?ZOWBRSIIR6tpPri1 zmz9>05f>Map%Y$NUr)D8N3KjUtEC#}MOe((PnMdL9b)m-S%=eu zM-a#bypM`XW;bDHSnPO-h{(tl?~a#RT4OT9oH1 z%V0?;Xz|@Iwy)zHFVPd^=JwuO>94jP1fz9Dn@*T1xgKfsALUwmRngF}3VOIz*VXaz z@u`3+aS{?JW_uU`h1J9Qp}Ue3saJx2AI$UMVG*hdc~I!fK`Avg$80OSJllnxSEiRc7Qz8|?I zbj0-TO5XMnQR)7z`>`}ln}=?3=ojO&_f)hrG<*kaBV5;7g-?{c@b5tRQ+D<*B%^$( zQKN*2hzPdAaiMAYI#d4(ellF7s2_WW~AHO|G=i)Z_G2 zOQfL)NU8hDWh9CN5lOuYW1pklcD6IUL6}brrEr5r!lMWf&Q5g+#z)so~K;XzJQ$EyO(!ZJmPtlOmmT0gz%%<#uv- z_3Ab~D95Sxz;q2ac%bwXtL^5#x-|RlZ!I(ByGhOO#OH9xP3m)c za#UM3yM=%Pz%_31uP>i(&@D5p(LX>e1HMmu?XeF+{Qe`MgH&ECrH0dyrQIy1-fGG!@GJo8@HZxK-nVA=(#%EdA-Oi@tC4`H0k_1GqsMc7 zqRiJL8F2o24==dy{*1h2H9=6u(ed$*j*gjWy{g*E9pBw0lZayV%1>pP&4@^fc@Yl< z+?|q=5~J>KPi5~)J|Vn%6>zS^n$KO^o_iFW#Xzf)i8pt(VTFZ-37s)8u|Q*4!#YP% zKDZJJL4Zh38VZh$&RBZ7) z{}}{>9@)+x*GS^|O1xmE2L}hKp>ZHx@}evD8^iA5&LVxw+0IJ85oik(DTYq`bQw7v zfzAXd&BMpncXDYQ4IdQuKYZow?X9BHx2&9uMN9t00Mf01T8|d=e|2BeR8awi=^Nb% z%rP{=3}*+dz3_Q?K#=alS;)tf88okipd&${Kv>u{HIhLCUh8K6BTZRj6O-x_jqOQc z_||-*ppcLd3rqLpq}LYO&8%sgEUv+0-AYjP5n)3^1O6DRvvfueJv<*K2%ioQ4<~b( zoE{axfb|9mwb@#Gt)LL#qqwh5J(UH?%zV|u| z0=6=lMJpfZ8u(Zea0)1XbGjM{N-qKS7zsEVRK2vlV44Ar0g$H0#5jYQ)w?0@W-}os zTa5xr@11fde-jPFi~tEc&V9D+Ppi3b;R3kb)YP=v3ZF}PHrEn>^ExZE@)_YR(JH77 zyG%&Pbz=VuMD!FD6?b-a)S9zS57wPQD+W!FREP<*x_<(48Uv!w2`( z)8DL3BE@SsL{K98a7;;UtER6F0{rZWb9N;c|k_`uhX2NN% zGzI-kW)YT1OR|M10Ja#3l{8)-1BFfkPoB^UA4eV&QGvpqp~+5W!Tloj?B7IKKO@f# z*J48*Wo2bh!!goRY+Jp;@Eeb@osiFLZ0j2ms^@z?^fTY7AC!~`TA*H@Te0|FBmR{E zyv1%zf*Oq^>D{{@4)`ZKCi1lkRC%pb&-Uxg*v_z9CyyZMk9EULn(ZL()C>XdJN8&7 zXZl)SZ|Pl8pw>K({@M$jSUa`;9%MgR4nUC=pZ~?^c2rc<5{$ne6krvFcYRX{=moUP z3%x)_N=r*yrcx3p8F(VpCLRGuU!61J4k#qp1ZkP2nqj-K(roYK{dIwt`k1-S&U0*F z&}{VFyvUvlUwDdyZOy2eviQ6A45|BttBNUrGtyf{l!2r-;A2sRM zIr?E)aZm+f0*PA~edbh9bCPW4Kc3?^SPvh>uUg+Dh)w-{I@_?1g27$O{00YQmnx3- z=p}t^tgKGg=Ok5OaPPI5C?ccUap$3-#f5nYwct|A%d=#z3bV%IvYb8S_jZbkc_C0Q z=)AWA+-~MGRhc~R&;H%NLrLgBVzka?ZPzWif==ASw`-deEa(LInQCR5(fZ;h9<%-J z62Om=Nk<{*@=RiSofleiDz|7>SrWcETYI`kuTGW#aY?h?o>GA%0pD5ww%VGh?V<1)i?c0OB5(|u?99{NF6O;U}P*%foW9hmNhqev782rIt&G!244ly zo1P|>)Tybdbir~igReulqU2Apb7R)WAG$$SyVhpBXQVg-6mF?M|5;yct;=C{FAm@A zT+brlw%CL>GKiv@F@O*f-45E@?KM7s9YgImDdc{%wtlqiy+fG6FPEoa;@`U0&tnq($kYG)E5pAI8GiC zNZ)S2XbUIO;&D!RWo1}XAZ_gNgwORGg}3D_tWr!x#U&*r?d{i%YmXXf{JJ%n^~0GZp$~_+T9u6+u7;gJ<>a^=;Wt(hfQq?s&v~LMQt%5 zh>A)QMG;9NAUPQdMGz1WkZeLSNX`_B3WA7$>ok$1{R)fP!#BOEd zsZp%Kwc|EERLat@Bj3LL27deHR#72)F2FcVPLae57cbtjsEMDrvYOuJ_cH2eOV@)s>MAZE3RVK5q_OIR@rI85_Y|8~Hk(rp$hBP&; z_<}b@91liY8dek_a!o;8;o62?1B{mTW&8cY!ghBzjrjl=x59AR0nOjcFw}X4If!%S z<~2p>%-6m>)l!SRS0PibD8uqf>L!}dQbUfux60H5u#XkYXi+&nUBO~H;s;!*Gx+Es*hkx)Di3kh$#SrJezbBl}K0MWG5v_sl+8qUs0qn=c~ zQC(eKWX+GwAv+U#K{J!@s*iKbWMCJVkn-kpPB=pi_+`Fd><*Q^f0`H(P7IQqGq<4m z*>^#G{iOV|lw+x%aZy;QcrD>HPF5+%131*$WDub6*skQJ_jNkY{LI)m;OTyycXa$l z(yHPS%(1~e1Y28MG>)!eS{VPB^b!x$oi?C_Oh}27*J5(Fm1$rYfCfxJ0;4H5}28aEqj>%{gD0kgeghz}wC2B-wWFj{*0vR>Or zA;Sr`eR!$MAbgzbc+f^)#)bCfh$L zv{Rsfy~cw|d4q{G1zmIn>J=iOHWUCB+UwcK_j0g1*;u3mIYfe}_8fJJdfLnP-@3j& zb%*IujyAp!JiGC{;8jN{g_c&TN`?l14UY1>*kc4RFmUwj!R&@uab;x%B1Bhl;4&#R zxi|?W%9l)|3ac>#Kxu(w;Dz^DZpDp7b~d(>(%#*dEq&f+xQDYX@QJPT0IGLNyn1Qsk)oBZ_}yOtF{g)2 zC2U>_)I7YrbbK@P92~MXHk%M*35ke&q7{8PmwnN&%y7}5syVfRSqTD9&>ZDM7(g#T z3*o3?*GuZ0yu3&O)6_W7zr24R6B84z*#$XVYI5>64#(7#zki|ZG;G&SW8ZF3TUc91 z@K}}R)}!R2a14^Jw-Iy#CPMJ$*Qc9d?CEG} zZI-$%_KGIE_A6*q0S~Y+-K>VF?d-H{>E}6fMz5#48^DR(twlb_P0KT1efIskL5GC< z2U0ZC#bb+{oE)(1K=uKJNC6dU1E6z0+fuFK2+1p>1+0LV!Fqvs2FM118#f*)D|4u% zJ|clL*tsjr*cFFuG3>8{hKy|d{FpC?fPn4HM|J$64fF2gr?xnRl$2?IHcyRQHDH2j zs*3Xic^)Y#^TE0v%HGT> zBBoP5L-@$X!B$|}*E=}4>%oNlOdQoO)5k_JirTt{G{0O9D}aa3%q%!f46p{Sqr|cR zf&gZJe>3ut49&v9p`k!FqN=1TiKpf=3bw8P~N%^e*vx>c3< z-Ay@Sot9$1ytvS){FIlJqOIOnm?Dbh@YRI_nB)V z_Nz~z9GNlg5u|m!Jw32^901U34kiei50~4oJ$s?*ZM8B`G21lF0SJh-we<}iexSa5 zJv~<)Cu|^D4;M7A@J%H@bVvcfSC3DOscLp?>bdc`x$E$q^75!CNjp+d2$&RXj$J)H zHZ~avA=Io)=f&)|`*e?qTF*UssVX8YEIcdh1xbbr{>Nr-hNiHH2+S|21%xB46qZZJ zrF)ZB6$=kmj=`!_FEYcIU}iP*4aNa6ZD_a(zb$lid!@n&0B6UwYP7pHAEYc+$Y{+Z z`DH*}gR&m#0B6a`xde9tXi17%R_317qWSIJCt`*ZcJN^7%0=>UZk*;b)GoE(SskzO z;x`#xWj(&a3=ywbHj(W3eliC=Jv1k?j-W!v z>6@rvZ`v)u7CFQ{&O2FP;>1V%Y%au*e3% zvg70DHyugb#7a7Y6zViJb zIMl!K$aD`qo9HAA!HQJU&tdVXo?E=&}iDpwbv6ydC$wK3Es z{V?3gsv}HA0OH_L?kb-?G(J8qUW$!}AtZb2N(G(fD(l4 zy`e!G*cd_cQ4yyt6Zo15egq(pMQ1J6dH^W;OpOX9gn;>AE=+Z*pVsiobyoYLnR5Y1 zK2@*a{6z#F%8g7*>na-?etVKipisa|682H3-H`;x8VDfxU;QM5C}{`X&P=XyJR(iR zZn;-)z7rIo!|}fd`PKJVmZ`DQRe;dwz`70griGqkh=kZt=83B8LU1$;0$b}t(m7+pR8*5h3l z-8LCy5l)-C57xGqLi3*2e-wq2Av#(Yluba#GzWA0GKxyL4j1)hX`iKr%$9)P?f511 z*jIcZ>@Gkz7g$){^?p0_Gr?FNLKbR()0<+YyaNIP_|O3%A;nL=>w?z?vr=7(S7<2h zGCAA<6scfL*S|CZV4sLDdAV#PML|f{&&p@b`0pu~%Bx^`!6JLsyP?=(G9x2H6a>yj zMs$pf__6Qqk~3}1a(b{40!pu(rkbIYAd?UuPa^J1oHu{Q+yQvWAMae^--D>dg?YHARd`Y=8?8q2v4U{p9RJ=w(Dwk$Ker|4OSJ$y4M@oS09u>z~ z>WV|;A!4&|m3d{?hTgKDPeQ`Aek-zIu~=f$F$}G%-$`lJG?kL2Q?W3ZAqzM+ESu4C z2h7p{Chp#+;j-C_!fpE_`%ZR-{0jolzdke>L zr&R4PmIJ1aDVz@gX19u|TLbP3^u!gS{If41Az#7;fn6D9!ps07nutsUp5-__f5_hC zmxhK0JF(AyayR1Q75NmZz@r7Sf8tP0cb>s7m7!VZ7Z#eT0-lr=7Ym7s61Nu7MP?)Z z)@hs0gdI;n)DyT>6%?{yq6KoOnT^H{0F+r>!}sZ8(Lbecb^(bd3fg3~i`dQY5f@cd z3gGa9Rc_W@+yN(q8mI2X5>2JK3RNW)6`QGKzvFb>3d8_}2PGrj4TD!Gz9L$v(^Q>FK1ppulIqPorilsZo-#R-b)|YHqtc;Lv84vD zT<7BSbb;y676=U39M3wr_I3>pmRilqH_6C^3z)V&d`4d?u$z#@|d=Oq`Y+|A< z1O_!8zHi^Z*HBmAobMX?-Vx*AJ=4L{0r$oB?Ie(b|0dN`uQ)|`F`Ytr(B>fMmTndw zD!!VVoj><8$K8{}2SoC=;y*cQk-j3za3d+oi4OMmp3)GALDqCXQBx3!+Z1GCLIGR= zhb!ANE3=kpLF8hPX_ju)CtqLKxbgTRRJ6F$HRjCB%=xmfm>rx)>canH#v!n=Dl++h zU>p<`8jXCWb!YcV;q)6D8;g&>tgDLxXx3$|S^+@{NNlxi7P`;)!S~)Fxt!Okxglqi zkRU*19?BKZb>YHI!~)ET-sjG!zJt04P6#qq*VZ8DqBwlGKijniP;M*a zwTf^W`efi-srE zpj%j@LJ@(~&VUhn`}XZU-}A(EjEU4oP`Ih>u2K32tCU$;<*sXZ>@WFquSyLQG*5)G z?y#^@=K-(U+FA-~yMfMW2qOSs0Uo$%wc3Mm%oGLIBw7bDDxy`kzG8>XXkbt%q zQiygeLs=*gTikI}r>S5`ZY}hrZG?BO5cmZIl*E!}l;n7fuul?o%BH5K%Iwe|pm6LH z5RLCMe3>NMUb!0pZnHd8gg|I&mLWczBwpsQ;ji;c^r@8}+G*ylT_C~zZ$#w{-t__Q32>alBW_6 zi3YRWFdRhW_-`$!81p*Y!rjwIo`Iylq@-ke@~Wl7-v;BtJEOz-Bs)SsS;*3;{Q%#s za>a{adSTdM8v{O3R7mJW|Hj@xo^!c&5M!O;Ee%;&4yG893RVT)HiJOhqIhiAN19JQ zAMk>yDa}=~n-Stx0%g@*3m}C%Pfs6yG4n+ZvR~3X1CrX}ih-`0JRo9$z6W@J8RqOT z@I;N1tdJu(i2T56--k^J*xX@OP*&Eo!3z=0L|s)*d|=!4cPp%q7CMC{--KISu)`&(&{_fqN|rK~rPU46Zz^Xe-6tuIrX>Sz6`NaW^A*TBg#e2Vm^r2ND?Uk5Ol-5WBA99yHZjtMfHI_M~gyPSXtW% zdWGTPnt3y3H0+N~P#-^jd^WWWXmT9Y9CCS~0I-6om+VVejr(=0gWGS@HF>WH6itTG z6xn)9(CiOn&>0VI-WC+rSesJd?Bku~Pnj129EEK`YB>td#7 z1N_SZ0{cWxchivEN%p_$0AkYr^XIRyr-kC}tm_1q0C1>vW*Noa($>a{2d2lw@HjO2 z8b&4qNkbrH?ccA1tFWJ+o>ob*On^bHnA8OM7716HY778W1g5jaE9+#Xx(?VrfMh8s zOw0K|+9^UD_Le=;UqHSDmzrqn)UKW{Y)A(`&K>BHu^zVOwNjZ~GzIpQoHeb-ep0;}L65no4Sp1CU zH~}vLB>Ym{F6}sGB@ii1ysV~xNUkX`@1!5lWlbK-ef~?c3b}cCP73I>$KqG7UNu;Y ztqV;OEiBA&2zCmD5MR)Av>2x8z5|D(6C2ZtO!2el2Prl8iNV<_}jEnwAq7dQ9!rp1e^`tuc$)8H(ukx z<`^U&CAM?Xm``;%&ds1G$P!;L1o!(&@}JmzNg@{CYXS&&a!mjHJURo=llV2H^RkE9U(0Rf;j+F4=ks7ufQ6qHY^ z5vJ7{KRD4K$2$Ay2!QrVwKxc?UOZNj25YZx-w0mxOTN)UYXk{4htxZ_v|p3CJ)4`= zMV5`bw)eIXYN|G;47<#WQE3{j)5_vMeESPwR^9_h_z)$-Y3h6T>S_6sL`6jn0m(Bk z0Kv0dG|$NQj$4Q=wB+h*4+QLPI+e~+2$&-E9~qxNRaAvqHHgN{t0X{x75sR9TWFX~+SC|aTd8I1#O*cj&Ac71sXyctNh z9!0DLa;Qqc4z$9m2tx&M=b)W|`I9GK6BAWa{PEp}$~0BS(sipY3S!A-bKidc{28D- zFKLMS_1kw6KzarI3S=cT862O8w$AXOQd5u+sDDblcJ)8v@e?ciu9XUy4#%g*cNc1F z0yW3vx_67D3?sG|F zsHdRNcvr5yJo+CHOgmSw)>>cJD0wzLcG1203mc#9a0rEFw1Z^0q&eYUR=nrZP?3VN zY#gx0f$VBwn_VsWvj850n4}W|7%_ZM&RF|FS8g5al}_QZ#stXl@=WH}fxtN3a38Y0 zpt!g@0N~&@7sClMP-|b45|DJX@U07O3uLbwO9M6C-5bqWl`Rk3dN|b1a%t^VN|L78 zuVlno8hF7-VN>>Hs1!*c(~r>jpU}Oy?uFKH!GJ5SeW@zVA~uU(03-#y@aAG4h+rk0 zx3iz^1Ys`<3E5W{of5TPdRS2^+vv{%#&oE1hso*9jlB{~UzV<#s_F`=DjIg}G-Iy1 z?pr&rCTbf!e9spc4dmwD(F2SH7B|RIXWLyeK?4RmYyLo$gc%F)twm-7wh$l+m=5+2 z4xT%A4uL=nmrPb#)ysz?(L8O+hH!X6%7!LCPA4R+2Ag&|TqQR*cjBA*Xff>31KV~w zRqU;hefMRm4;5&h)z_Z|bRSeIPWJZag`F>BInK?dycI9Q0;Z6lk`@H<-j&2FKn278 zqN7kQA1#ql9KL&?L78zBe-w&kZjQ&icvz`(Q8%^tk(565kxlH3$-aYi-@ZNB@zP_? zeOmM50FKJ}%SixasDC>qI><<5IJtr5w5RMI7AhuG=d7U!I`8AJzt_X z`5rUdmWT`lq2%ZBOLT&UMh1Y2kJm^NLyXlLU902KRdoF8opr}bhV|F;=NU!qXhmLq z18>Am0?9W8EQ7*t*zoZRP#!%h0tr!*o@^H}Dk{9lb&&^_H+EsD$R^x2C@AR2hYwhB zvEEE|o8=~&x?b}iKIkFjxAgh0t(DQh$_Oxf3g*zQw8={Zn-X)b%gtDPzPg&-De7pC z6{*-l=t_dPJeDFV{tXVCZ}-Mj3+@!{x;KXp)cvRjzxlb^4DqCuB?akSK~&g_Vl0{(35M z{9H9Be_ZReVcps`t)~k1D2jTV`NbzOOjT}(-1{!tOfzrRDWef8%T<#NmKPT>n`h(b z`qH{$Y?^7BgFu@|MZZ=8h>Vv@<(}imcL~#z_k7<|GW^W`wCE;L!8BZjg4&Rc>8Y2| zoWL^JuIV1r5VSIWTu&-yhtQ{#-#jx!9i#0fXZ}C<3F)ygk1ABGI610XrRd~7O37C% zFdLEwy8u*p^X=bw>*s@~Dms_7o%CIGpwWO`fS+-Fq|k1cJLl2Y3Xld9JD3vgKTf>ANdlYS1%SI0 zC^ms54eiS5i!|)T?uk^PqC!Gjm=nG!;zOfz<*Dsh;69}g`(&hGzJP3M-*SXN?;E1}_bcWDawV*EHkWk@4BbS_Y)>drIEiPYy- zDBXiHUw+c~eRFf8Xy=Fm68R+cfdhA_A(LszR`|Bqw@#dAMO7-;GBY!G5<^L06C|rJ zi|NG0@eG9v3-bvolf$8Wts41Pbz`de%+X-h!QpziLHQy$jNgoU=iz~!8^ufp!IETmd57XXs zjRBBMO#(b6>G-AZ&*`d7fTIS|isX!UgM%>pS zySdBEItu5#8(@SXLP}G$;t}9Ea)dGnX}+7GR&{HT@aL6vb)!LrFN%}t6%f!-h?>ft zo%TKpZZ2U0#w(js9|}LUy>`K^D;~b^;0?*Z|MYE`Y_Nr@^!?nn>X>jmPB%CA1&Dbj z9wTeiz5@t^9~n>sAm{;iRdMt0y0D>ubQ27wt!BBes+8u(mvLh=a8q|)pAP>wREJ5+ zq5l4s+uvTV)38&V6T8gDHa|ChXXol4zndAjRU58kS+R=>ffx-7YPI=j-2&%5f+o>?w+qnIZalvFH^S&$=JqtR1KCg4E> zlDJMuv;}%4(T9FYGVUvOlj%l(rBXuvG!g^P|GQI>(z&G3!(db12X!~jF3uo)M!ogW zEqyhfrg$lsQzN8M;o-xvZj8@fNRylTAT+GFKj-Q9pe@5)Fp=5+A6ja#IIMu(>4gQxUX+cFuyr!MI)Vl$%AxvhiwG8u`fj(1BN4`&0Ru;U!GeC>@jAKeK-)^+dR! zSuc-w+4+$Hwi2)?f#D7d4fWk!=Ln|bhv({KHZa?AP%u9ZKGLLp;OYsOmh?jQ4NE9O z9!D(9=xHVDV6$obOqC_q|0S{Eh?<`IQ8z%Nsp;&qgVM z?m$da`GA!A# zUzZ0Q@Ek;qXIA!+NDfk2G3k&0Wd8qW*MNU$g!X@@RF=f${kq_vm-y8W;lC;M{rBsC z|I@ww`z_lg5;>Fn5 z#r%u8aqP^06&p*KW(aOv&*q`_yEn8l8fG^>sha2&(3NUKPpTo?SbZul7xi&>J?*_u zxV_|NEZfnfUw-qKp`qG!HAPf+L^BC?h(4*UEv~0W{(R<~^*xF*+vz5xe_-N_ous@O zq-Qgc$SC2-*-*YgyCor;ADm$;lk8LT{t6^M)2%ua#N^sI%6wDQI2Q=NfOmRXi#GrNLjRUlnRIXIJc)OfLN1V|AOX0+Hf zLaB0-Tx6b5i`htbcMmd*$7NVh*TU!4sNP}lMh&()x##^&06j;8N9O=J7;B)1<>WPw!QMWG#(L9#*Y zH0Mry?T@h;vSqe>Le!~?-r*32gek+OtrMb{lK6`huSvVe(HI!Nbe$6Bt5>gIx$+V! z)Qg~iR7r`K581qtc?gTfVSG#WW$Ajnf13_k2ymeUQHSY}p7;siIMhKGr>+hS8n{^a z`7d4^uS~j!ZDRy0NX5(d!TC^LyG#m!a2B?#g=+wF1+^Z&3?dttbXrhu11o)Bcd)QE zd}XvG-~ zeQ5ti8ZxgSh$c6X5N&&Vf-PiQmLv2>!AFA~DsyaFTKEV7O4SCc?987%i}mvIf>Jei zkK?Ff8{FPIZ*c9CLXaxnu$?_!vcy>sLGX4HA>;xBsA-NzC;TAb@@@dr&(oTygsF%{ zio?GWoSQn!==_WL=zrX=VqWzQK;gR3HnBN5h*L!aaXLU=kByz(=tp-Wa!(-1cBGWw zsMj)m;)TAsZq=;}gs5Lw%BS1`MmS43sJ%YTo zlai7$V<6I=-Z^%5t;dRP^oc&us#V;&8Foc_j zdhEe`<0{7yB)JoqMhy|nU;ks2g`WH!WsPdI!#ns}nAJ6vH8tE#`&;J{{Yigxlp~01 zxi>BeP~6Z^^+Am68N5n{qfb=yW@mTj#>T2v(aRoic(A(qF9hjp=yK(b4n?q`M|Wi* zF+mxeoSY|5p2F+yGKxCBzy)yuCSH<~R9{i{NhP8)h$t6;Ce8UVJgI#vsfp-ywVc1< z4Dh<1r7uNF)j}_(uxI~(19&+oKiFQuosZt6+rD+AI=A%%*&uH9z23;GXt4y@qLmwTe|6COtp*~swu0E~ zcYFll-0w~8Ux!Bj7`OZz!OZ_M(7L$=J*>Pv;Zei(H{4t+dFXuipE;0JUp2USj`)D= z?_#>ck>A{Y;$?sRuhAVR$-nwdH6)E3p@2?QzYZ&kx8!fXxBr?XZWI)sUDs?=Zvd4; zc2tGDFxO7?^1iI_B!d&D({Qf$tA0;suh|h_>x1qa$G~qBey}cvNr;R7C(TC%*J}Mv z?q45TSHUFYLUHBDWPsM3=iKi*;QjH0T*|%R)32MqY0-GZ@cy|A*f+nTPyYjChx2}= z$YAjUpZVW}ga3R49pe8MjQzjw{PKS*oV|Gwny;37=Th=}BgFAySzSW;C*^8siGR=m z83KKAIx4HlE9_PC+4uHUW}hkf5fkWTddlL5_rn7u9`W#hNomm4n0HxouJ8B@t`Z5A z8D}>C`i)~&@EdNizZ%s3A!fr$hGgDXoPMWOVNx?aMQUe1F?F}`24%)0lW8! zhiUl7lTPlAgl*U6q(CoCxYb5@v(Wc$cRI~z4gc3C1iXgHwl8F(S*>RR#}%#0ZUzs{ zdH}Md{nzJ%vr_A@|LHS-&5pz0Zez1fdsK!!8)}vMeJfo@AdUIYljqoEbV37_D(B3k zm|?<1FCxO?E;K21Q~1Cxw<-ZX?ondJDu}|R{-Rg&baeq>+=zFwOVe(y>#n^j%u?5m z?g_;N3z(zmnW8@v3T9p=I9eO(rrqsPVv$4KXS;A=Zoy|r({73CFon#J{*S3OGoMA0 z*&8E%Ij&xzD+*Ql)Q}d_Ib_EK$$e^d7oC;9LW*{m6rwU(V0LMz*|5FrQO0`Ta456o z^k9Yss#V&l@|i>0CI|7fpJzkzCvkGt%X>*Kgb?wbf|vYtlSd>8)@$oFb(43GFYJk# z#!jq(%VNEJ*fnNJ`Mp#d??jSHKFp47s;|XvvdW;ZRNYq7mqAk8xb4lb?!{;$4z3-{ zS=M@)_9)yItJ^dQHElT&ge_ zRe;7D11UM?s2>!qZ`Jk?V#ycfI`-nXYxWtQ=gRY4shFGXmug1=0V zK!!3;A$NAZ=DVw?D(yOUpP&XGdm_F)VIFJVm#97%jJtAtaq6Mv@v}+!^*w1SY?Nn} zqB1`}>y(k2cK;lHprfO=FfT)B*~21ou%M+?_AbRTwkP@GG-va=IVVh>eZ?neMY4lm zzt)+VQ3YvfHjpU>KOLQ>B7v zkqKTJi3^x$+%gU4pw#afe9kn~o6<3o^!9qpfk83Gu zp7*Faa~rBcjXTm6>(*8Aj&|bCOOLFrm$GlUoIajw+V^_HNgx@Wnw1m|suQdBm=*0o z6&uU!{Hv3=3BC9GE244G{YNFHJONzb3?3Kf07UfohA1ECk`!J9&1Evb&W#H4^Hka!p+V$Ne4H(o z(Vr?$8F!B&KjrZ?q082bZFo^EgTM8Gq(d9aqsgwO;Li+w^MW&nwJKbVUr8s&(<3Te zu&?#ob*<6EZPnFcLPFNq${P6eX8@474kaFvD9-iO26yVKi^v)nqzseC;@ek^sxwDqCnk5C+?rtS;tfk?co>A?e; zlhn|l#zOZv_moF8RB6rn*0H6ez>JD}PsPw*R2K8vRmNx`Lh=lVN|I1{E{ikFmOBfr z;Oz(=xc3Djzk!T^M)4j`qFP7JJdypv_3PUK_#Ae$nlz7L0`tbLhFeBPss2|%EJ_mh z;vzcN0`#Szj4RucMYB$sKTS<#@37@U%R2@c4t*6{f_WFm&=A1Hp@G-yxk*!Jni7`jWRxY;}#oGL4ihvN3Nibelv>R^+~WJ&V7GqhvVcHzP;CF*kS% zVY@86G1d{Vf%|fUKSgmw9Z`suICu7Jl0m)zS6Fh&OP)vLg=I;e-LEXsY^^5slr|iTXHRv?c-*%kitdMHqDL=Ruw{KsM1!qDv+Xv~m-2xg>!DLNY zgw8HBv2IvgG*4O*w|{_m^XAS%iH!^jZ*1_j%5;`+X4whJ@9H%{xfj$*&mrJ~sr%WP z@Bo^=CANhP#k!#HE4zO9^nph}V9#QrZ{9c|P4gLMtAc9~OV}M^^U_TT<4V<09PaJ3P0_JTuv`0>QnWXn`h+Oa6J3M(3^SDe33xoCuq(blremQ@st&2OWPMmB~@G7FAc49HczWN_Epxf5+#`6dxVJ| zIZdpmXTWn7Xa#D>^7dVodakoJSXzUrqWFsBN$NXy4*WS~UR)fx@PnwC_f!*Gc_}Dk zaL$6L2xd_x9n+H<@p=BxIokMwauYoz2J$VWzQIwV-9%; zsrqz{DycR5x-dED^hZmVVag#`mvz94GN)ol6<}6R>3UnP++*KfCdl??&MT$H8)}%( zCb1)bEu7fRTc4NeEj`{i&>xMWMm(rrKR(1Xe{FL zpTe%IG*u}_vh99WQF(-@ZHk4S30|JV82itKm=PpXa8a(b(|S*uTmH$|*w`-cttCm+ zt6SJm0;Z3+O=CJviimj42An+Ag+6ocbUEx3o8fk#ut^4M+mf zHPn5=X1BT6%Wi0tUYwwOOIM-jew-te@A&&Wh$I8GS<0VjZm5`O<io2_(Jh~AmfdU^Yq|DGN1tGX=9Mj~M& zD6EIdc0TEluY&Z0s+&ASQkO6Y^$p*=xs8aA2$ZUE%mhAdS%aA8Z;E*F#ZyQvC4H_l zVyi|7<^+g1;Nd{K_t5$^)V2Zbd-)2BcBP{-&)dzck~}*8XzAruNE8Tr(GwRn{phh*+XFaem@OAS)hD_5OyiES zUCG#JbUwig`V-+z>_KY7$L%T>2VU*2pt`@5XBY(b@-0n0iQakAd#C@&d0tTb`x8C(-3Fe@QcGf+xJwqWSJ znXA|08YRGEMNo&Q2tvCKjZFURQ1)7@k@}Kp_TlcPw$xPZJf_PvEZns#sKA?(t0~`b zz#1m3p`cU9mumgTYeGy=O}FwAbz4osL%B{X^ogx`^$9Nl}|A zjpWk?q&b=V1DQt@!X15GDoUzHseC^djnF$U?=BA(Xq8$UVa9U$0*#AOg+;-vNgZJ} zTpIrLGZ0B`V7|x+quhld#8D{dlsju%SZP~Yu5(v$KYGv^P%^ZDl?-M-?<9$d6vJSP zi;G*z>grh^5a)ft!seyg>vyt!<(p;ZPkXB~{6KT!$slPXP?K0wPdr0?>5luZjj^5s z{c4pj+GRahodDZzkBk)F{c{42>O8K(Il+Ffc2Rv-amCd&3xSZ8#jHjh*Y%|f3-5Fd zuLAMf1LZr*82Z;2)0t%E3=WZ#VhG(mSxQpG{#lDsnSqFJIpCr2*5e-heEBLy zx4>+XstYMMG`_Go4UPWG$Z7|@rHVqfAB1~owR)~ch8rYaV~!# z$5giQMwGGz$5L9~Yq*G4O<<5ONBmo`TSAa=Wct1y+zKacS8n^pPMtn+;xyeEo!j?tuyx1{ZRr$S`v^b|_KOkvBZx}mL5}_Cq|EQ6 zijP1Gujn^vMRtMH{qlo%EYYsqay$`JAAYB5NjRttgC^zQobPjeLT&z;Ws&XzvclIp z{u&Hbi(N8x86Siu`zE($zn&&wJq znlosm^b1hymtPmWKt}eNxqxyt`~tE1yxZhoyx%pkeL{G_LFSDFfeiYE1I~B2EPd{9 z&N54M=L*b<5h+hnQ|`vu$cCNkGgy~-z~9>W*gU8*wy(Grp)4mi zVcV1V!zlGfLZ)ICo#L6`Vz;Zz%%YyxvAzeAPDzD?rJmg@CyIz!31M2S#(dFxQM1Ay zR<5+Cmt%~vL_PCe+vx;0JZg?Hl9QR+nRnahyIz7tovda=q*j}*IHohVqmYp=TrAqj z*{D8yg;E5cveZpeb~Z^@CS}%LNJNNo?z-4T-i~&LR~Xfu>AiH*dO@?Dr|vx(8BtvY za%kNj_)@97hpZKAGOoQV`KI)gS*gjKYC10FwXD>yO}lbG5qHW;s^%qBLwlT;hQG56 z%{eT}OXQy(S!tVD zS`5`?(kKz1Mk|#~^lkNa55#sD1WX>ne!5S&O3}N>a7+fH%;%dij2TE+JR9hJ!~V9r zc7fF@Y^X5vrpGg9@K3s*Nm|{M`+V$UB)>BukbXdNHY`hAxVgSnLD;N=(`4|Qdfl`# zQV2PRs%UF@imA|Y`7&8}arx4Lvn?8;%l$jGQQ}kdJ z{>0`zg|lcgYL{oX2dfI5P2_JCinHG6S8*a|f{}5%eo(`;l;UxuD&YwQdaL|o=2oIP z(sn%S$~9Ws8JW9o`me;Rc#W6Skc5>>)7urBUD11Ay-j!25DeD4eN|!Ct!>-6ZMl>* z{0EPh20JD8RF+t-dzO5VEo#s6>baE^{pE&sS_)28qQ~Lm$!`RUrNs_R0P8hZ5zL@4 z^*m#j?)@Z}=ZCJ&3-T{|G)5n15|?zqzvd3~ln|b`8Imob8|mUs_^7?HXb~-DlX3kX z;!TBSNQ9OS(Wn|O;?cgM!ffW;+}5-s?|4TRwVJw+syx6N7({(!^2~XN*ao}PcUULu`w*@I3K>VpR`jthH+}-i(A}k0(W%m#=I{^M)L^K zEh==|VWu+`l&+np_B-yODs`~V=BVtd1;*I)L#h?CHLCCc;&PP`x{HfRRWt3Fta2#)6uUwq$4QiMh+m?Si;$E(KHB>Ig8dpAC z%|JbXGz#X8+YYZW{z6qSSvym&VM9Y*Ai`+&q0`VNi90DsE$D;i-5c7~PF~WA>fhhA zqS-NN`bf-{|B*%hSVh#c!Sz{F9CCZ9a=1F;rp}M3a_O<4E zg*@80uwNKV70*s{xRYgl2K1)s-KF|AMrTKPbDY9|j1}4b)f&S7n!2G@gEM}7YMsqy zLF_&QJE3aFGW(fwR;*`aN*%S76koi$A+iv;GA_c(>q}VNp6GzRfcfOq$V402()h&m z_yh~Hz7=n(@!80g`$L7Srs2Ey15ZTR&KLW;(x9RV`qrSFV)_-W-)8{UF*(QID*>cx1wX}3wr%sw{o;gFE)}zsG z&(7FoaKm==SlVM0aq*+tp%#iY!-N)j-=kjMN4=a%7p<7^E;FMW%g3Ys%b&f&)IJ6)s!RgmVqVS15?-bmVIotu+e{33i@P1z z3Kka4){8SzQy5MUetDOcVY5-yc9&(yLo+txnOv)gtERr0=7zCosz}Dl@)*x8L z;`2jF*BBZbBzT_x#GUc|T3RSqNQfBnb66hkPKc}KQe?bcR`*uy%);5sE)h7?*U8dzBbRj%wJ5$hv(51>uCf=?+MmPfS8Lf06`2+%G;p^mOGqc{ z(jST>sH!A*<{$CgF-5ZtDVU4~6mH&a+>D?fsC+3K?siU4-|Ff7@#(XHhCR%d%$WWP zpQo~@Uh;d-X9}#0XvC|8vcBFxjSO58yP%QPrKYOlCH+;+s(p~Z223QFV!HbU&+Fuw z)H_eBBQnX0L^!??sc8pT`EnJ!oEMf}I2t!Z2<+o&lfS~P#-x{GCC+MJy4#KFAwNVc zlo5hw{wdvDRekNJC2H%9>-9oL;$1{UXfEt><`w;L7x0FPZN<`c?5;yr11g$ zgZAWQw5^w%KB}D|LpS&PnPOUokg_ixMtEMuJx{TX+EYb5kiQ1^X~$oxDfT9D3t3}J zc(v2YYqOi5%3?ce*Rx}Uf_mio2i7kI`a`MH_Iu@&OxMXWAEt7h$@qM;&hZ8g_A&rqkNr?zl3ZRVzYl9971tu@LZ z)O1<(1bH>Bze82p6>($@U>$}&*K26TI^Nw}r0r2Km2@3P+9iN;{J4jj$L>9A-?>wa z3{|g|*f-zi3DYtmaRhOyC$0O(TB7$@(?`qFU7D}G*11>_8}LQ{pn9ES!I&kV9Wo^{ z$a&XNBLs;smhJAmPygkvUcdMQ9Sxtt(oY|LVkcGyD$10LY<-u8L=%zd5JDk0*N_An zwjg)b{w|mpq=Wv1Dp6vL%;Xhjd}buExct>_@MP3He+gWVQp6)aeKH#Tcy;}hIlQ9H zB|~e%LTI}k=eeIxL(1}YG&)ppT^g&NV@uWL27@9Gcs!f`lKu42)CAX#iyb!4Axq^87V z+FG3BgKeqBKio%mCJLDP7$2YSE05dV8#OZCEL+r}?=n_0!BAdd?Zc=kWDyCnd5u=i z6F1!BcnTd3iB>(#u8;6RGl(Ns*Fs)+>t}~|XlW?I*bct0N&6HjYS4aU%evtEcL3VS z=*oW3u=3BG(QZCwMc;P)fIqy}WtRh?5wH&H>a17{B$>xv;=*KLkNE@!`%K3j;;@BIq>JbH5Z8x4HL);9QWj!_H0c zrqI_rk-G}Sc}aW{aU+`0Mfwk>NWwASTcivVsDNKj`OhV`|HxVY|2~B$y%VzEnj=7a n{!WeZ-zbd#jmO_c&JoERH6@xtc%Jr=KK{OxJR