From 8e42c8718833bf770640e9a15ecabe29bcd4ea9f Mon Sep 17 00:00:00 2001 From: weihuanhuan Date: Tue, 19 Mar 2024 20:39:12 +0800 Subject: [PATCH 1/5] add housekeeper rd --- docs/housekeeper/rd.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/housekeeper/rd.md diff --git a/docs/housekeeper/rd.md b/docs/housekeeper/rd.md new file mode 100644 index 0000000..4e611ca --- /dev/null +++ b/docs/housekeeper/rd.md @@ -0,0 +1,35 @@ +# housekeeper +##operator下发运维配置功能的开发 +``` +1.定义provider的crd +2.定义容器os的crd +3.proxy上报数据crd的定义 +4.cr的实例化功能 +5.cr数据的的存储 +6.普通配置数据configMap的存储 +7.加密数据secret的存储 +8.多版本数据管理功能 +9.配置数据查询功能 +10.配置数据修改功能 +11.配置数据删除功能 +12.os升级的配置下发时,reconcile的实现 +13.proxy上报数据与下发数据存在差异时,reconcile的实现 +14.crd,cr的语法校验 +15.log数据的采集及存储 +``` +##proxy驱离业务pod功能的开发 +``` +1.接收operator下发的数据 +2.传递数据到agent +3.os信息采集 +4.虚机信息采集 +5.业务pod的驱离 +6.以deamonset pod的形式存在,上报采集信息到operator +``` + +##agent进行节点升级功能的开发 +``` +1.接收proxy下发的数据 +2.进行os升级 +3.升级失败回滚 +``` \ No newline at end of file -- Gitee From 31af819691b5313a2ebff6e6acc57113ab7eaa08 Mon Sep 17 00:00:00 2001 From: weihuanhuan Date: Wed, 20 Mar 2024 11:20:14 +0800 Subject: [PATCH 2/5] update rd --- docs/housekeeper/rd.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/housekeeper/rd.md b/docs/housekeeper/rd.md index 4e611ca..15413b2 100644 --- a/docs/housekeeper/rd.md +++ b/docs/housekeeper/rd.md @@ -32,4 +32,5 @@ 1.接收proxy下发的数据 2.进行os升级 3.升级失败回滚 + ``` \ No newline at end of file -- Gitee From 943a08b8d7812aeff9163b50b391a95de95b495d Mon Sep 17 00:00:00 2001 From: weihuanhuan Date: Wed, 20 Mar 2024 15:12:54 +0800 Subject: [PATCH 3/5] update rd --- docs/housekeeper/rd.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/housekeeper/rd.md b/docs/housekeeper/rd.md index 15413b2..2b1b8f9 100644 --- a/docs/housekeeper/rd.md +++ b/docs/housekeeper/rd.md @@ -1,6 +1,7 @@ # housekeeper ##operator下发运维配置功能的开发 ``` +0.operator架构设计 1.定义provider的crd 2.定义容器os的crd 3.proxy上报数据crd的定义 @@ -15,7 +16,8 @@ 12.os升级的配置下发时,reconcile的实现 13.proxy上报数据与下发数据存在差异时,reconcile的实现 14.crd,cr的语法校验 -15.log数据的采集及存储 +15.以集群,组,节点维度进行配置下发 +16.log数据的采集及存储(易查询,内容易理解,按文件大小进行切割,定时归档,定时清理) ``` ##proxy驱离业务pod功能的开发 ``` @@ -30,7 +32,6 @@ ##agent进行节点升级功能的开发 ``` 1.接收proxy下发的数据 -2.进行os升级 -3.升级失败回滚 - +2.不可变以原子更新方式进行os升级,升级失败回滚 +3.开发hostos-upgrade功能或把hostos-upgrade打包进agent ``` \ No newline at end of file -- Gitee From 86b52286a7230e4834a23ab278932f81973b3b9f Mon Sep 17 00:00:00 2001 From: weihuanhuan Date: Tue, 26 Mar 2024 16:37:44 +0800 Subject: [PATCH 4/5] add crd --- docs/housekeeper/crd.md | 2 ++ docs/housekeeper/img.png | Bin 0 -> 63632 bytes 2 files changed, 2 insertions(+) create mode 100644 docs/housekeeper/crd.md create mode 100644 docs/housekeeper/img.png diff --git a/docs/housekeeper/crd.md b/docs/housekeeper/crd.md new file mode 100644 index 0000000..58b726c --- /dev/null +++ b/docs/housekeeper/crd.md @@ -0,0 +1,2 @@ +### housekeeper资源定义 +![img.png](img.png) \ No newline at end of file diff --git a/docs/housekeeper/img.png b/docs/housekeeper/img.png new file mode 100644 index 0000000000000000000000000000000000000000..877e834bf13e38ff2ef93d481885647ee20572db GIT binary patch literal 63632 zcmd?RXHb;e)-@`&whB#FBuB|vQiDj4CI>~7ARtLWa+8#dEm^W4G&u=~WC;QinhcVY zARsg}0u3r4Ip2l*J?CuC`QEBqb#L9OQ`ahgxOda6XFY4pIp&yS%+Nbp%EW}UglEp2 zAy!pE+&y#VEE4>!y9fpU#ZmHw-I+7b&!{5g@3}wxo*I~7thim(cyj64vu8UftW@>K z3&HXi5=;rs!f2;bF{b{HOrx9pVV(_Jmm7WZi)B7&eNCQDRogizywCe}Y=7bA;)sXs zSh4X*3HhyyECFO2S5EqUcelo7l1`2`T{gawp4cvUpIB7Y%O137N99Lo##YH_*6xeq zA1DtyaoG-am1O?NJ2|>#51X(`_xs{~^dn_q(Zo0OXoBkns-@0nr)3E;RDx$+vmN@J zr>d9EVZ8E0isZ4T)Sehkb(te|O-d*cG_upsQ^;BKD$3+PzP$^xC(7z{bP-zoXhQVn z9lV8&#qgV=+p)!96`u!P=|3g8{<6J}l!@Rnl6`?vCq?KDD`Lm~51;TYV!DoeEoQwk z{H6f>xSJ?L@OzHb!z5UW$x1NH=&|Mmc&O#!H?|C#9hrryoQ)ii#j$-Bh@Qd!X-$>B zotXQd|3COO=ODpr{uN+r4K)AfPjAhZ#oLQUKOt>XEcQOp#WE^mQUgw03Q~LEpPhIf zh#t+*=L`5{f7c=iL-6%Cu}njsgHwvZ!~a)(+}|v+<*JGIAic+YOt0VZM*3zxdEMc! z?%wi#89Lu-`ww4}Zp-XFYTal&-nZSD4Q3J-vFfwylUz($h*4&wS@-_bD={-=GW8q0#Bs^!XVfschXb1!+56sZi}e6cIet)pn(D|O-&iRuzx9Yz=Hzh0^2_4{`)Tlu3$OJaTI(9x zS1xog`DsjlO_z72@Yl}bhyL6eGr0{`b$qZIbsd=!C40Em^0wWhN%GgvkE@ZMeNgtR zM#!cRg6Cp=ZW@03yP3g^Qge=U)KX~@?yKs8^_T0Lqy9X+T#_V>hriTaChb3n@fKCw z6>(c0Aqy0l_E=1{j1c>LaX6k^5|WVY`)xz^XmeQm$B52t`{Vtw#z@bU?W3KU;2lQS z0r`4s-G)i=Nju6ce{|L9>8fvR(yZg1pwP*RrH-Vq7e>-KRL^qZ9@%F{h|@mC-i4D= zpEGTCs9SGGP9LuNov52onPwozjGyI@eo(?b^w}CU?Sb_jfNhWz4QJIBKi&8qU#q0g zVgIput8|~I<%?-v;^mgTHrwMCQ49MkC8QE9UO#K{4BSTVCx2XRxZ$I2dIw@PTpA^_ zzx4K^iQdP}A@vq7VQ0$)3@gt(x7)YzZ(M__Fy+vy76jJ3b8>#FO;i|bTI)OGvtzGo z;?flyY&6)O*YRCE2mhk*xuo)Pdo(ybe@;~I>uCx4}DTAqI8aRPPS}O?|U)AKl(i? zTPf51#eh?{843V*`M~+Yi0_8eS~ers2DQ6DIguHBvFfM zxxnN-U<7u3)>3r{&U;Jsn6rd0(ylEg{PYsmUo`6Z)h)=Bt55UcfM4^gsD znVT3=YCuAN^8QXHu?TWr#7!Qd40V{s<@}gA-u__O#hzfNYvk0n5Jcy&l$vab4R>rj z5>L5Jjk)^JJ#z<6{sBI;4etLAE0S-%EMDoUr0gCaRPxZCs&7psBHbfAJyGp7iju&3 z#ora&vd{8kPRu;=0WU66hfYM@+}5uqmjUO0mZOcBKeCh@zq^zj)$G-!XdCu!J&7~T zoptIm@o`YSV9-TqP?WW{2ogb%U|^Z}c{F=|#Yv=Ld&0J5hQ)dKa|rC$7jVzK_sNS~ z@z;Vl^M3sJFf+|pHEs?OqZ1Vx^#jilj=mc_f}xrB@ZI_P4Bx`WOw9by$M`I}eaL2n z#GkMGjx&7-d|WdO&!$0Ipk=U5Q+{%MAfc11fj{zXr?Co0-?|AxMDsfx4W=&Ke7}leY+`i8@V~C9GqX29Vx}5@hr#mOqcz8 z{J=Pd+?wsflg6WM+lUZTELui=C9o~R`|VvdHwu59EdCBcwoMR~f@dxWBhdwlSB+io zz3HQM`_ftT{l#0Sl$Fozr?+^nT-aM9xjjl4J$qu_$nEAZalOFAG%_R7o zUGAMOgULs+nzt?!S+u(@96{QeEQWE#C#a#{E z-7Q|WTh?SS_8Imf{O2nuy12Wkt=PCH-S>DP=Wg^-!^5vGs!ZuGy?TMN$ds3*rmmoY zcZae0Jjc8DP|3#bbj>VS(aOdOCN!(*y(G;m$l`v{JG04=R{+q=Kd(yAO_He)73@N8 z`@0eNFUvc%kl6EDans(ABZ^!Htd>LtG=()gFzkE z+paQI{t|tN`ZOc(SU(jZVLahnOup9~LS7jt&xUNFt-kTIn(feg^uC^0Ub?U6ZX$jR zPSN2JM+>hCX*nb>vK&y*Halj5-3sB!^YCDtcYTd2fc@icG-Y(4-oyCFu+Sh6wz+kk zd*frw5)s@Qlg~zAQ{b(PguRNUR6gfFmN*D;aF{2_*_;eTEiugS=JK9Zo=$}sF}PZ* zGu-Nv$i2Py?BK@-(&0!%z+_*2oQD}!|49p#K?kFkUHS3;N^sM;_J}78M5uQEKV$Kd z6p4n%`&Ut1G#(aH&#PIS6w1Bdh@+)IvNiTjVWjv!LO*T3;q!N=vdj*x96K zr=x5kkOad(o5u`l_#su;Z7oBpf>Of72hZiMg%O+^l;~q}?h0w0XsA6*Q*sUNMezzF z5izQlgdoas5w#(g>p9dqJtCcO6SIeT*CG=op+fdCD`l*|Uz@9SvThR8`Ho$n9!V7g zcYZ-!bC-s)TC)>fcr>^29l{y^-Tk zuk0Ey`og|zMnhZQ1NyMT_cfy{o~J#y7>AKmq&eq+D4fow(!F&1=GI8a&?V|>N-a1G zpENUVbEDJ9i?fYKeX9Nq%W*nds!R@n-qKk!e z{ml1jT%=jX0O?O&`)>|h%C|CYn3LMio@bT{uPHw}OwXH4@h!#DGYzL`q9$NfJNJ53 zo!lf>&%;p<|H`cEH?%dLcz;POl_}HMKLA@rDbX-4DQs|8bNXUvPs)fjquK;D3&B+i z4gmF@5~Y$^vOhfEelhVE!S;=k?xu?=(V|nX!5A5yBqhy>CrWn4$Y3s3J)nmaTq7*H4H>qT2}Y> z#;(hd*hA9xP!y@vP34?HD~0>v!xNJ-wWv#?X3=d{g?Y(K3FIK9zQuQ&fsGJo3nQwSFgP3|5|4IrjehU1Q-o zbSeLbsrQLeZZ_`WYS=1LMsg`<_95pB(38b+j9GZsVQJ`dLUCVMMcX3`{2q&+s2zAX5GQEDh(F<6~!iJev_`!wY5m zee2_F)H`mCr+8B_H$KnVM}!CwXmqrB2wZ#AuH$Ek?TpIs525t8hv4t-D`NMXW*+mv zp(4ZLwe-AdZf(qF;fYG}f-s5)WPvy**D7y9>>hll2}aK#FjyywPwLc9PQ>L7P<<60 zvNjBx-tzCaP)l&h`mq{uC8w6q1QgKJN}M9dV1}pq<=}b;&$|^r-mepfSZ#_RpYji< z3voe;_4Z*<+%`42+cNG;;l-^^uC812skS$QWJ0-(HRy*6H*-WSZP5H!$5?e0QGs55 zI^Li`UDw#*`_SU+&J*TTODdfn*_34w8NxOQ%+ei|tja$22E5L-*eeoMJ?Tpn9#+)V zuCkKbp(2ou{`IAZ7$%+Y8hUt=<`%gDE2lsjZ5w9Y!0DIBR(ho50(yGY0-y!gIj>hR z&Fj1c8$yp=Q(OyOJrQ;2g~xQ^O=+jcW?ca##eHg)0=j*w5UF4B)x7zbNU z=+B!OMwPuvIDWopKPj|-NrM)RYIzj%uG!YTZ{JK;a_HFrQyw(3A^135CeB!JX);m1 zv>~A5xz`zvfiMC4HstTb7oJjORDmYCg>$7wOb9V(WVc@x<%nEfHagTT2+G&i#Yd;8 zb1I$-?r*}7JGD$1Od?x|y%;VmwCAqs|1_?>HIzYlO(Gm`+yYA}V#Ilwy|`;35(XvgG5m5~%0j8JtXTBd(A)`Ud-RU^ z%O>3<1Ga=f3o1PhE1DYaK82=cHPbdxCQgX?#OV#2&*AadD%N@#8s|?#gArYipF6;=bZ&~>yL1&79H~H)BNgLi3H>>sKuXNpFsYJv2WPEQEZfb^ zK^t^wMcEEZEoXiXpG>nBqhJe>4k4zmsovB(@_$OYo^j7m znEJ11jxbyn${Dt`W(%z()(CxlnFXJ!_2No+83FFa>UCte!0_WW%uJin8zIj(X4gYt zW)2tkhQH)kcKTBoy9_5d+44?wo+N4u#Yoz84AM|uQSar~;jzTNWoT8CklGf9bP!+D z!|{kAM_T7Z_974MCvj0@Ig%n4ilN2LOn?beb9+fl9~64!WYfS&lp*#tcu&_-`G>sP8H_z96TztCp@4PFb z4*w0MPAhx?#u&3tIrXPlc@6WY|l=Who zK~4xYE7Db{E-f-5 z1txVh`C;AGXTuiOi|PwoS%|R_%%JtpvJS>U-U(uQZN=jmKC;Ymcgd7>-tU7hYtj!>DasWZKi)k9twL4 zh%$9Lo#@q%SAP7k!U}0?7+!y^dX6L{$zZb&M$bz(`Aba5FJKEFx67yWQum;jHl3Uf z-UEw~I!?P%9`Vflj8baA(WC}WUpvdz4qLdP80Jod7KbQbXjn+Hg=VWY5E4=D%4Uh7 zQ8;}wUD<>0<>adpkc4I{WZ?n$Cf3C8i7wk#4EI@y8o*V89J+tal6MJLDELk4F*%Jt zYw?E^RQA(rV>f*+u6Bg9Mev->M}_(2o#ZrXmiReO+=X;tel8c3kgzL<44M6c4e{*K z+sNNN+h)ODtNq7m3~jqKFFPJIG7`|zY1X+UJx9SH=gfN*9=h&I=z1r-Q%FyDt_4P~ z%_hb0@_^R$T=?A5$kH1%R%H0$u12_u5sqIB>8hriGxc&YQjEQpBJt5{s)@U2V%t|Q z!!5PX@aiN6spO$O7%CHlo>SkSzJ0-ww_%QZqg#DaU^UB`*GkUP)@sl%V$s5)2-NKZTJC(iGGD1^JI%lY$A77!!5q!Qcdu`CA z97JC+5IIP_WB4B_Gzw;gU3njgnTAY@gnwbn8Gn36`#^`eCw&7}@IE z8;Bt4&}{1mo#5ydQKzI7J3x!=)j4tpxMX7>{!JD4Cl4-|eJ(U$%bl;@t*%*kcckOe z?NA~2h_^WMcI&6*cOEgr@nNqAq;yY6%Uzf>X*L)m+^cz1q~4HW`p+ z-L$)!1C5Lf>&MJjT8FEeOPwumQ5n3EDbAk9yGZZ0L2XT0-!ocku^-FD()J8RE-A^C zV)BH{u`Fs^}JX*xkk$ z-_VOg8Av{^yq2^!7llwQm}SjVVHtFGRVooW_gWOXvu>*_T1)#nb9jlOe?#n-Xfso! z>Iv!Q%6wnW&e>u*=q$JQ*e;_)eB2YFbCeSekTFUT5$m|v`iJ~4Ro~r_>a^PS_i`&D zvya#*WsE!B;z-K$i)3Bt(3mjS{fl#2af75+&#&fLFu#wElo?X0h6nECCD$L>| zhJ4&Z)jA9_X<#-&o#OUwwm;gNvzRnglJ}DJTp2Fp0-z$%9wtv6!x4GjGC&?8YZx|5 zErgsOZyR)Bt&68rGr4^-VL46=bwFg)VlA~~!v_~XUSDJLMDX0IGkj4wWZfi?+PW5J z(=9yzkk$*5Aty=Ry;*DSM4d151|}T+UM0I}53Nh|_7e24#;5CJCw|!yOKlu0i$Srb zbcZ}Y=a41%ogQ;J{l`bu4svBK>Te8441w9@0P?V}yilIh7iugvX2TDJ!*wrO<&nq+ zHCnd|iX#!i(jQoa)he#|vl;s=4ZVKCS98;~PU9;X_q8GQG?Fpd8m~=)LydIIrYCH; zd45Z%w8gzO^~P4&g!2Uyoz$3zA=}GOGqW3Ls;KM)=-^eQzIkDgmAR(mFEEJm%n6rp zOOjAC95W%xLU_!uc3V>9kN1sA5#Ihyyhj`oMy_ot28gQw2E2Yt)^Qn^9HtRZ3(vhO zX>##wbO00S8Fy*1IdmOGtt&-~NJ!QET$>0S0aZ1|>kXuiFnhn?hlSDHh6LZ9^|npE z$*h)=mS9};X8)F!o&>~-jDy4IrFA(z10HiwyHea;J3NA!9U9h>3F?aMrHnZwxQx#A zjv^zOVJf+Yjrt;{B4^CA*v!->V;+tsue5HUfOOb~-ld3mqat=BcxfM@_WVRvr(k|4 zcensChgJ-wvy3u`+;p3+v}sfKq`{`@^3)B(vJAB?Xk$!@+jfQb1K_gJ z8}S5ZSHDR^hBW5-Grp`E%{+{whC@}X1FDN=L*GdtHEv_mXaXUCH*pi1Q-bBH&e5Yp zZ7iXE@g^HGw&8?b!XcS`x(;+KTCC1t?)Dg0U-+tC(o+J{M1k(PYa z2t(~i*DW(LV|-!tPrkE#a*?($wk8XF2G>ub9!$)FoE5_kgsML5#*z4vKlL|}qr~_Z z!gIDMN)E)(7mX45vmb{(w3g(fUf~8Tu>-^kZ5o$OWPNi@#30JD!Dg)K@$wR0_IIC# zaM2HTxf6~a2N9?JKobvX^y`~!a$dJ+?8c0$CR7>W(3R8$ZZry7NN;{7mmXm=jND99 z|8v1o>3R5BWki}93~WI45Z=2um4}#~f&MDBq~plPGR;b18@u6FQFfh7*SbTytNc1N zt}xf{y1ZfUuUuQTn7-@MVIB+!)>n_0MT;j#p~E#(=O$iBOA2Y=2Mo%dqhiCfd4?P9 zVn*TxMdDqpd4m*c_Xl!#$E4emY3`Z9R8$r`7x!6Tv}>kutFq$O8|trp6d7PMenAo= z6WABSeSbgVGE6A}Wii3=FmB|$#8ntaSn}@Vrh>QCeraBsCy&pbbj}JqLsIJ330A3P zm7ToWcl=D^TWcc@|BE)0;@<6`({<~d_<72Z8gc!>)TA4<5>_j-M z!4IAa6{1?6A&+O(*J#&ehU=nI)U$exaB{vk$*q2#@G)2XpqhlyTVIlP#52~k^Oz5v zb;d)LwDiE$O30R>33^!yFMdtN#nMupLSX(1+jHJg@`@{ro=n6C(Ok$XCfngP=p@vO zAs5RQnXS*)x3)kibHz8B#fUCoYx0Fy*`pvsim*6;tYcsA%U1%m6<1nVj6vh}Q>CJ^ z%DUAMS0`__#ll1mW#u(X#>FHYv`@^s;CM+wzX!o-`!RSRT}UPDfPj|#4FzPZ@Q(Zz7N^H}Y?x zhW}ij*Lfu+@7L^;(s*;@Ya-uk!GlH6BD^U?=pCG06(#WUJWt`%U(r%TM{hnT&c@lfuA`cJuX?l z{EkNCxc^PqII)-*(y3YUsF()6ufSV!_w4W(;*n08_ph$#cdwcwl9I)THJ?UBqY7dL z?1LjP1dGM@-(aQa+cDZAqpa@Gf>Hj}c$bjvv(t)bLwrXhGXL2~Jq5?E|}bZ)x#+QM0S2pL;}UU5)IC zIMCDUS*Pf4Xf&9@*na-&=)_B6i!+J0GULujxWninZ>yOygx^vYmSJ2+ii908llQ@Q#$iS&kd8$c$d3f3@W{t+8k9!bF8@u#t&roJMBu zm?SYL-FbwDm^vJ0Z;)SNFC#oXPT8g0K9ae5|564mMvIi&8 zP{Qato+k^2aXrE=KccpuWJPip`dU60_uBp*ZP|2&pCb}uR=VG`qF+Bj+Q;%TgD%Aj zAU^TZZjAPHNQ#O7YCMVV@Uf7x)|itRQp08Z-g&^G1u)U@>vRtG(57Bo=!el~OA36i zCVUDbx`JH68;SU(N3sOnvEy;j3p-)5P|dG07XtVR6vWWTz>6BAZMg;MC^o?`l9a=H zx@ZVQNW-57ZWBg+-%$iA%nmI!`Q_b6bz7`YT`dy)kIm*Ym7_Xg$v^U@9%DoLoTRyt zQ;r?vxv^+@{D+W$HlC_xGBnDJ;F8V{U8MkvzKn;^VlC&1ZK795W0CIHGK{2=olI^KO=c>L2`x5T%jE^@Io5I5l3f+*7O9!R@1c;mNi7 zA(U^xQl(!S;LI1Xr8a~jN|#XZv%xIk3TaSIq8h${uR5Lfnc4Ukjhee@*5j|nqORmj zylevUmAIuOT6i&M?q#%%5ak&7z4GNGiRTgXpB|{PNST2ScES2Mgj8B+?ueTmDiBD( z$`Sa(bLp^mWJGDqDT9%7kR%e~E36D0i zFD>)y40usEve1{^W^CKTLi3;Jzif3QeBf)O5nbcG+Hh+Tbk^16E?=@d+7#V=`W@<+;18$$)IqSS4d z2OT>)C@eJRuYK@Lmu`30BQBsLw1*1Rf9b~bdIb$uJt7>%+(w#2WjeCV1%9zOG0&Zq zG@0mgGUZ7ddbG)DG>P~YK7t{bZhLr}hTQVJ6>aCTxQZ(ir9i$F_G4N?Lpl$@+4S>wW9`$~8?5}~QQJf+duk3}@c;NDwUs9GUfpZlwHw4D^#pNy7es2iHnvP{F! z$#+_S&GylAE7+E(b|@_ys;F!>BMwUFuMpn4Ax8+GN^8#h4r<2lag z(YtdS3I=3S<`7Lj)wIr!#>uXjaP!3X8L@enFG&h*(p0^F?J^C5tPIouze(tGc1$8- zB?&i18p)e~)wLEapLLvI1iE~<-jm0@Vq>sWS-QoNtLs%BV0fh#3Jy zZn@}X=ZU$7_)e%#t+kR2nd-8{S67`?G0e^9$LJ??KAyFy<{HT;x+v~@tb+HrLTYyB z!j!+tn!_Dyl*x=EXAk@9ONetfhCdOB0nn}#io$tzylvZyLd;7F!X3YRx52gZVz}rA zE7yYvcsQb5&Mm3$YHhNmq{A-a4+>eKkK@#Ik&CDKr-xyKY4$7z_J(bRn$;m3*^62C zoZ|2H!m)bE<-KIK?;aq?R#r}bdJeJrotd&;{f5U=18n`gSw&Iwb+U9J+3YVBHiw{R z#=mw`C@UPwT%>2EGb)^7RAt_wyGj+<-K)&=VrO<1PSG$IqB=fIP4!7`|(OuvgJ zjZO7q(XPlUi^rtyt#!dh7veJ#qC;l};QVGHjl(&-Z01!}v$b8sp4A+}dg928mUd|; z|2&289hEm5IC{=kS4kgDV5PpfljU>X7D$+fQGZt;k-SDt8fic`bw_2w>RxYI|CS?8 zam-0Y)g@wIObF5;hKZw)xVCaq=$k%@vRJd5ymmb#uQ75*SPU&TyS3Rx&m=NuZ~AEN zy(X*}N5|xo{Ef~{`yC|;(qK}{n#euxYGwozQMy)2DQa5P(MQ})5|+_o(P&PFVN}RKZeM!3SU4!2pY#YQTF^G4K=9BCxj(` zrGAV(eom4+NU^A9hZWkhcE1_anHq7ehNdmdh@%`uiSu7{!Y+&pJ}U~V@`gkFI~Us} zq#f1VSbw!Y=MTy^@3CxL-a9l=z49JaX)g<*j8S@Q}B0o>miFu%q+j9{aeeCoCd&4kM}o50pIAVckM&bNjR${;L&KTM>~bF+Smc zo~m#>tA)h_t)hKM+pWl=Hs(n9dekiTE2b@p+{rY+uJ*cdusqw{Xe~kQpJ(_dbMNeZ zQM2sCT)GXqRa}Fiwi1zVOh2JL7iU~QrO`Wjh38xD6My;|t=uJg_|WUemAj}p?tA_f zXGL79y5+39`7b8w#XaGLa{i;&_De!iE?|k~2l1+B34PE zk5K3BweDeIi|XC0BFbld8|is|@d#R`SrD&^|$RW$V z6dKm2N_JTN9IN4?*g=did(%le!a$ez6*a>m#tfss9xiW*_n3-t(NLMM8g#Y6sx;@Z z#iJ-6{%*bMB%>_M7{idA{tvN(6@Js|2iLTP=`dR(6M;us@ZQ*72GwDrxJV|MQjAiJc`wl z;`VWG;K<`0RAY@TL|eF_+3)KVv-1Uff9@f2uYrZ-sh-qx4t*C~hgB z#$3))DO?4u_^Hz+?7|15{wfJ^sDOY~^VxGie$_=xA(s7Jce3g>Uz{mnC4ZE|L!G}! zKA={O8K$xbGAKXf^`9cTb;$j>?2KFJoX-;i9c5z%5xS9u7UrtaPsuY~c)~(@^=|nA z7M)ezzzK~iCZ<)EW-2Di+z+9zvWn^%jqyGGG6&zMS2)fZ*S=hr@5l_NNS$CsT4ME4 zpXB;2CD8cNxXb%QSr#LLZ(`=mp#r@qi!;-XbSkD)f%5Kzl`TTZn$h}=mlXDG*nf2L zj<#d7KU3{p!Q(1Kt=Ix<_3Q_;LP3qF;+8G^T7$S8&=QhMg}oTfN42h3aDNe@-$0G% zlb6d3`T$S#1*=yp+K4|$CeTQI;`^*k4NH*m6mPFB(wch z(;aO!$hAbBYljT-Xk9DEQ(^=YWM)d-MtzfJfbO@Q^!GJgzK*<{$Z;WJ%(TKzc18fw zVe`}(yL96%)c`4U6oH*^2SN>n(dV?>|Ln3;-!s(Bc;&Cy%Th(&JxJALvGvGs(;-Xv zZLw=yxa*hY!1}cz{Ak=gS!ev)PpL98gVgu*X8(F5HyXG<{TFvfEf{@1#rMy0IG-|< z#bPALzp6MuFI9fm?tD3PS2R$H zLW63u)O32Bo`#D+?*6txxg~qarxZSGm14-%?%M7WpRgBE7{UT^KHh#itb@`ac- zYWTlp42ou;+iyDivbbJh@yfq$oTR<5Wuf@Dvk!rCtc54X{Y_B*jkyrEX0B-B*LWej z6II=m++h#n2>Q}cKy$fT%y*xKOuqGA=t-_XoJpR9GO1lo;* zep#7x5YK)$NaL2`l(6Rd?wG9eX`B>PtB+~u;QO$BOXxU;Il4_NKDI~g*;C6>o-_09 zW$xcgTS(}xwDSetagQB#*zh>y{IgZX~b0e`kcuPU!sSURb)8WVM7|qS+`C*oQ*n4=R~ZuZ|15B zKR;w}enKOfWi>g&uGkLsn{OWs9#ILc5Lc4(<}zuZqV0%Q$#v6dIA67LJK3% z4vc5wd1xL@HW`RAg%FxOdTS4t6)x0b7ZS3aB*+T@xyk=+D)F(6h({& zC9onK;@Y2Lwc1F?o~|xh+@Z?PaUagF#kPAebHbQ~s6qz^-k!IuR1CMtRp%6zHlDa{ z*wk}=ZvvWgPye~q8vPCZ9>*Bt+yAC-9>B>la(?5|Pf>Vr^St%PDl2oT=<_;gI4h^M zLtZ7ktWg{~su~9rfnf^*)z}x)tCu+}-|ZEYG!QmgEL8zn^YjL5$scMus3ghMwb0Ts zoiNSJ_s@ev9!P6WK!-i9O>8t&S<7x8PFd%r4h0vOk)^hp#yvUcyRjPZx@Mk|P9yO_ zBKy;l>eYsWtY;yAs?dO*87Q|ed2PQ>n)nqtM-R7A6DaSw-dj2LaMJLJh|m7!!$-sx zN!y2`Qjqo zw*Z-4tp7CbRDB-uoEkBp&)>DlLv&dsuT+MqI1;6|~neD90J4{ z1;T#__Z($G0I}q=r~W7pGcr8)v#`96ut@h*3@Y-r>avjK13#c?hK11~Zv2P3vz_&< z^34)oXr%pdNb{&#zLq%>IvAg?L-n!n!?Y(0VMk-!Tk`C`^7}tb7r%dF_8ps~1Et9) z*%9x-4ezWc=`zAuJu4`+*pA93XI^Ck)c zf&3jIPaxp7XY}2j-DK~jye&-*bcwt`N| zOQE%Oxus42a$qyYu6GM)uyO?RgHAgtAS0bAJ^1-i0tg82?T>IV`W>#{u_|52-(CN= z6HylhStw)*rgv5e=`-8c*VY%AmeRBYVdKvy5-N#;urrTa7Cc?3)S{%ZUQzf{2@FsU zOX?vI2LE|LP@uIq)J6JV^KoM6&!aC)BqO_WV*mIv^O;ofZ$6U@+?^oTU%+h@_8zK z(~PIUmy*jQ!u_{frjSrP>DcJw0@Q)Q>HWaJvUWond|_tnF>vb4C0uP;T=SSC1=++D zd+L?hoF$*~-sruKH0N@jI0o|lUQ*dZp?5cdjI%c@OkiRPD1)-o4uBVCC@L}TZwDst`hz=bdS+Z?R5 zkV=FJHn_VC$X^hXJ>Iq0_zjwJO?j=>Urn2_Otwz~Aihf`cZZQxg*wKaa0|GE9D$#pWC7S?h}rhR9*P{Q zH;i5H=A%^Fr%WxzouNWay5k}as_yF<--l|!fKE&H(#i2oV{h@tpA&_^vo*W7Qv9*lz~kHN zmV0lVrkpy&K7N0%zAGt?1k8$RIq;2$E~dC>ZJaukPAy(8D@7l8&T=Y&XwYe`UOWlZ zAdJ7hQa|wlMy%QOaSXxOK~BQM3BLE8tg$@jS(X15MrvJuTt}V?+gB^YF&;35owlnc z0Z+)I2y*QLujoE;08W85FB>eH_ECUiCnjPZxH3p|bp0zrscXLf7I;r4nD|Pj_%nfE z7t)~vv62S*mfmE?hC~_Ze>;}O(4PQ5EZ4_#%P@KY(^>N>VqQz~Tilw64v$9IMCVO0 zWU}4+E+(d5ew~=g4Pe_4kCHuhU)?#?VNW4AiE^Yun`o2_!zX$YMTUbF5&!-eGu|7T ztCbqrzo@g_m?xBEdR7}xrs+Y0uea#})0CIJ4Yq2^xqI4$8PxFKXwA!cA)M`?a;XUd z29{av!H2dQsT9^%|NY#+=tFy;?GYU^d-Jht2jDtfm2zV=aj5y01Vr?OI}d28V*rzg z>tu`i{*C-B&}d!D&A>hFzqx~0O@hZQUxVf$3}I8?Ri(*H`TNR49j^T?$}bI70*V~+ zl8Zj@#tygzmcY3cF*E(W@#MHSj$0?`H1o|j(SWT3mN1fqsENDY+lV~SqtO}BP_VGG z>Oqq;>YURG2gv>thWIaK@Lx_5@M5j7oh_`tTBvTsU1nY`2Z&mn$#>W6aC-r42TZBo zc{cpC1R9ADpWr%-I5i%%x=_Xxb%cj%>1bXPG(9Yv^^Eruh^)bYk-1{q6Ji; zu&KX_y?^=@K$Zkvt((nSL{t%vUJJI}`!H@EMwZ`tZCHO#Jv(R`A=+RJOfR6Wl0^Ow z2jyFI}D}C%1t|80K!-*P*9$1FIu_Ef+yY3WZazBH-( zz&ghg=-stuq|AQ10ktNTnS3e?e)~el9(vjD3&+0tquP-50I<3xViDMN)Y6^v=HdSj zGo+dC*j5Xvtldv=nKx%M(M+%@V0#_00~x|+lGe761;QC*e#ai%$yrMv?{_4TTFN-J zh}r>0rhJnI^v<`VEnLfxneH_fB}Ch*i+yX}&y7Y((iDaj??>Z+7`Kor!~BWnBLGfvuRKU76wr zD2)OZJ-*Udr3@Cnvw;w?kV#K%d%keds>Qp;sNMp>Me`AN!Bc!*9R%#Af92dUW++K@Wc9Rr+KR!U{2w`@4Q=*r+V|kc!kCGl{ZGJH zM61Z!elA>-whX6715+!@;W2Q*USM-t&d&>)IZbIo*Eosqj*8d?Fr`9`|n2u#E z7yV8SOkBVxF5p7T{6YHQ^JZ$e8npVZpqQ|6V}Bg8z7K-&+ntj&(1s6@jn?u7HN`-? zTW4jTSd$w`846OY4V8wyD{k0dp2o!{{_$38!4^qKOuOSkI-X8g=b6TxfqVezZj03h z*>*)QKpXxYR93xC9Smb$Btnj8J|W0XiQiGdj&!a)$n;C~R4qFIvh1Wqo#@(NtIJwT zzFEo4z-9okF-Z@OXgyf`(azdVNL3;V6gjI&+&a0Upelai?kf$T8Ms@nA#x-`o!UuH z{_?j#PNHFUGU+NuQ z|9(Fp4Q$>(j8@|-%%G9nrddzdpZ(%^MsMD5v^`07Q&bB+8_;l)9;$L$tp>WR~ArEJvMRE;Pk>UciOIgtp7ZBy! zQ!f3}E^7d;ZR)-QTqBi&P>!|fkdP1<4B)hTQyiJ@ckHptmvt6e^Q;U7N`j*oO<^pg zkyFwl$V1IsqZ*nR5eY_sT>Q_|QfojU$`2{XTdFf>5pV8s3d7kaoQq=gCP<4}0KEBg zQ83y;F4l+Wyi-_Q7;ufVJ*`71#qW5JWiP!AI>KtP4ygkGe0B@CLY3W*XHJfv>34a8 z$Qr!(5k|jfqcQfr6GJ60#BT#V&(?LBH%458WhPLCp#)qYJp~d*Xz(hrhU|k`Z7N|? zErW>t^piuY5uST8!PffWnG(hw1Ov}kKb`miG1IKDBDVEZ`T8du$yC?t>FMH3r)RZ^ zTh92dl;R(VYLP4Z75<8j8m1fb{_F^*uB?|*hi^VtGgYecYT3$lB$`iyK1Oc(wq)$- zq=B6WxzB3MOs70d}n}rUO|hVNMQG&<-U;Yq2I3bubpbVoDEh8RT$JJ=P76j zcq;D%9W6=rL)k>71xq#2pWy8X{!IH)A5@LX_;DniJAn_dMLQgZEao4tbo@?qqzdJbt67R(C)?KXv&;q4DIzP2Ds1Z)2|9gIO`>^isr zG6&t(6yV!l`S!f|HwH{C5(0I|45YHDny@Koum`g#Kr>ZA_-z$nACTps&o6O-!S&7t zU^B(jeYOquDF**U|MFcrlE&kSQxbwD#usSxXZL`aHR}s7!k>a9j_{t)Gr*haJZq&5 zG*e`L%%`P&cZNL(lB9bMK<;U?aXPT0!vb<){?n=bzn3+PZ|HRDLwyIQ$R8D^8$Kt& z;dD9&c@%KOYW1Fi5#MPrX(I`&LJ)n!U&{yv1=y?t&HVP?nZa}YVg;r5lcMCR3`&4&;(t{t8@Hci65KacDT7Z8gn7r5IJMBMi z^xg26XX6Z-F~B0hARf`vwuVyVBP*q)LiFWt;B3k1=zFmqxuvIyVfpHXPOkRt4~&j2{mO5$Gmt^R+)`)57@(|iE9KApH?n)W5@BKlo!E0Nny=gs#= zoS~6JTwAY-8PkB%{j@MQ{Pri)0A^Bv^)LU_wk=_@_qwmu>MZbAvA^9T(r=f0JN=aS z*bwa-yzBvT*1x6){coilV0GPBHs`_wgM4lVe*>Q3OGJLpvp)Qug|i4Iku+}kN^mu8 z0IU@}It`GYqWkw#awO~p*Eg3DZDsb=wI;*KF15d*INRO{a>EHzfX|@MlKjY0XN6IK~Ymgj0328=+@`wp+GAt z`4S9bct*h`hD03cN1H<Ix6oUD9H99Ci0Pmk%Oy@ddvx}J`Qtxn0^z76uWrf`m?XxYJ z{ioONpLEeF|B)j_Y=aGVC460LrQu&CM#WBzXxptTD6W0CqmRGL1C3B&n0%A!)K1eo zlCPs6Z&#&&6Y+qNNX|!>Qog);s*n87d0uL6w7d|#W=)B&BYgFnLo5#@-l8npc%ypL zZhlMzRiX>1$$~m&K+Ii(7wChOb+9%LrrE%oMI*)jw{L95l$kg_m>N&gbOFlKi(??= zP5-X30iDj6tLPG8t*bEuLNU`PAD9icGtlDQCODa-(19uh?#6pGD&IKEg)iJx>h%!o z!~gA_S`S=jJ@i`23=X0f4X3D_>a?|Z%xy_14vM*jQ9YB0lb(yf9#JB0)t6FA7=JTh zFL4_KAq`N3ZQoe)pqAgJu_O`|2|Dd9uDW!2wd^v0=vv<)%{8hEQ_>nU#ZIRm&C2ob zpv-^%#SISJ*R=PwVe|&pGQ>+_V#iV{QF2tSxZ_84V%xBHMO=T` z|NnmWsS%t{g-z8&BaKc6YBa@Z^R(tFS(rmQHZ*J}baivc;Sk(u6}I*3^R5htemE|j zj#WJqAGdNaIZV8u@Vy$BqPaJ~C}ya0A8!}@XcQRls?%)f;p;p zg%bJP#{t5B5o&Rsf8qaP@4dsZ?*F)9D%6 z3P};{0U}VwGIj=6RO{a#h0pIFdkSbpmQeVn9RDWEuh;obiNWSL4HrUW%+nDgmmG=q zcW-Etf^D!~g9nsMBlfdg*TUQ`e;{F;4Qpe_)48EzQw2hZFg)BII|qs8sYETIs~uxF zs$*;slE;`cYm*h%f|v_{`RQWzSnA!YDSob^%g^`=V1S(fR%So|F(V&=$dD`0rHxs7 zCb|M_%`vYr=m=?aViz+zE|nJx`Pr~MtswNku*KREj0_{VI4BaLuJ7y_t$ULD(qA$iccxS2+(uN?OCz!Hkr z>VKC3!!)13vgP`1fCw^a9a1? z8|qJfyHl=KHSs|)2i>U&^R5}O3di2ei<5y*!74kyd^q=>u1S~>6rQP(=6T* zNE%EwCHLz4*Pkzn`moxW{w(!c3{2L**GaM|zlmJI6s+-~Sa}{=sqFvCd{sHw2-+d? zgxMhd?Z+q*8pCserCmvJ55TABes>vXnrR4$kHrmJvH_Z#ccRwl)=exL&)}$IajrZ1 zoxG*^A?&PPmfJ`A$E^wBGl!_-);vE(6UM^`FB_OQ;!VDSZ}LOpZn#F2N9|ZWfaGEB_R{oI-`N0GX4i|%T8lBr%uG4?1pGs z;|EKb@30R9TFA1RqT=K+g5k%cjWCfZcc^z|o>jdxLMkJR{SLMUHdvXlZJh*IgK+PaJ{xqB1@Lhj7^~c|QGx}BKbVw#w zG(UpBGx5qbIm_`>sG>CM;He?1=h?gl0Y_BoyZ1 zWd`_40A_2{;7q!YA#WyDsg48{Tj*!0?5g@PP;kwERM>|aCnAQ3K_@?WxPZI-l9OYi zZI$GZI`*I1s)C!{^<_?Kmg6J^54h$8hkjSsU-~wR@+-=fg*>(7=5vD@wnj&Yy9k}> zRu%Akwl@V=XAZGHM6!Kroy5;NWtF}tiuk+(Q`ojwcGFRj-nViu zuOhy<-SW~A?GZf;6w}58qWN^r%zy^TC=_(E->1G6K&cIhk`4Iv<{Mdm7HIw4OZBTD zHk;J(0|}esc2WfdJ;E#YZH(dX5(6rn(s{fs%;;$}A#)b-jf?4HbqCA$-V7S@Cj%&LL10<|gXq4|0wge>7sSN<^@eFUFUS~#@{V-|xTKIE)p{;^s62O?G~uLX0+)E%3K8_5pV*nL%LBB-%-z zcj4^X+r1pB*BGmt8fO=^!Q z^baP1{jhRdl52X03`FeRpc3}Yrv+1n6faKRw=f)UQ(+xOh-Ao6MO{z1jyovaMUXsV zVlm#fIPLblB_QB&4d8_L6?h27<`zZ-YAtm=S62sWK**%_WW8RJpfCM`vERMOqZ7@t zZ&SAN!>LVp1$m&T$(HDqCPSsLHiQ!1jkdXLcI8kIHH5g8Smexa7$Ztyn5ekvwL9a{ zSHQo2CF2C57Ubb#Z9K%8g=!e(1AFcqMbd!nf-kI9LlD0|<5@5&46l)SaEI-orscTK z(!&<}(#bx=t1p%17Mdh_buV?h-$GA?0&!+b-TCj#-tns`1KiKu6E}HnK&JkE_OyD6 z8_(9|>-Pbr?ifb>%xMF5l6wjFXIhk+p7Xq?xHy<|qScs?grx78O*J2udU@Yf37+YN zVu$c%@*na;T}Rk9Jf*}@xwp#u7sSaDv@(*XHPX+{#wMNRKnR8yrIJ9Ujs`6h1E}64 zc2dq(>*5|-E$^a#6nUdG#>!LaD1P{+6wj*Ml;@)PIQJw;as~Is#F*2`qaj}JTU&zv z?ULhtr&{EvaWqXcK4@F}ZewhPtWuoNbB1a8PJ--&3?tAz;;6&~b?SQWes` z08?jJJ3L+uF5K4@C(aPl+&y)$ISO)!@?^r5tm=f|ltEa{RC)0mX{?@!^$jgu@+IQG z;VYINHR3!KCc=>>aM<@En(|uu^VoOuf1f$jEGEK7IM0K#&fH<#_qj-J*3^0_YiawIewt5#{yQoI@M+U@fvilXB&qt<^R1|L3Ci=j_M;JyC?Cu24C^%;Pj#P7~^XLx;PyBOgta1_u|FImuxg|yIMmyI8fB7}G!}o1;Na&Y6^GdH4 z(_FJ^K}V@&(yEwE%4!l9^06?Ku;+DRU9vB3M$pn-9EHzq-d`Yd^=~-(LxQ)ejI%`Ha zq=ycPIC{NQ?csIt>326P8EH;Z9GM=2&eW<(s8{W)2oFXzt7Qc$5=&kq73I3T{9gzP z-jp-Lp(l;!aLdgzDbDxBE0pPkJ$*QTnf6o@beq0EB~x%h@}e};i;H|A_WH6%v8nVk z{Rw*oNp2nmySLDuPH+1je-xs-oIcRxud1y-JD@QX$Svm*CV^RV%YGNHpBWk0L}y>2+8VUJ z4{IV*YAXsRSFeeC*-3A1g9~;->=Ofns8(@tMp)}0P}*ywB$jG`{A?#~UuG+k>H!r% zRD=0ye1Wm&KML4^9Oc(aKybdeA>fm5gW@Glq^ zSO-(Fm0@fOCgw#$Ws2i4?l15!NHN(rQKnmCWsy>~ZGy?ez)cFD%<-)iUmQOIWQXc| z{=U_)?>DS|DE_uPmzD(hO8C{Q()QJ*)ixI?>tft}eXUV-LnpOA5-7j>Wv87?tDlx> z^})o)Ou|q^I|(HtA3VrD5=YrMV&Ps~&JxWIdxD$53w@_--&%U?6QM*?m6UN$5Yzi@ zM9dsQa-G%ZGaUzyu$^RD90TgvPyiYsDt($)%7>2KLG;Xj>h%8RX%&OJvPAi@Fz#5d zXqKwUM>Kt(zeOW-C4`8u}z-hYaq;vQY6W#k(dQNy4}Us$;_~!>Yci4((?r z=02b>g62)vQD?v6JC_p(lWkC8zAAO+#{33jcwYg*7rZY253vhU6UqD?r^77=HYH|agbq>Z#75&^0iE3v2SSId7AK7F#bQKh?jlTV#eIZg0kf&z*|YqK{VTf8hUtyMje5nDQ@Go#z`ay zk=&^fF|i&`7!KQ9)lr4S%10Cr%#lV5{itUpAC1)h{qn1vOp~6Dx{gUrXFOP|C#Yvk zaeA*jQHklpP{{sx=V=hbNUvH<{9Qz6m~W%P`ptbF%O;rNUFXfmeUc?RX}HwFz;BNp?tzepKE0e4L*xSTL6lR1?|3KJR^usROb}|qTSM1Dxl3ITg zEiDK7S?ycEI6*;z=5rppj6zY)Fc4b~I14~=;~!62e-}z!H@F0Edg(dDXV?`^w$Nu) z1O+#dzHfcCrE3rMI3<)ZPZ0MoiKH8O1<8J|XiV=%TLoNV=}QB>-|^dfev=FaBv45u zm`2izk}jBD(q>LSx!XQbS9R-ZO$^kh>~jDe=Nuri&me$c*GCx67`h&}ywu_+FqM^L zYq?Uh+5KgL`8c{3I`c0|eg(YmZ{;DCporeIcLz-W(~|7FI-x zZ&eeh+5F|)7t(!9ftzq&_O%oJ_uegS!j#y{mv8%kan+=i%*zZ*rQX~leA}IA5Ly(* zW)Clo4HQO6qj*`VVvnU5W~aCu^`LFFlX>RFdX`8Gc`@?3J?K86Zprm@bM1cQ(xQ{= zi0cfOT!X|Gax&%Un^_D$z0Vl?G+j0$u3VU2@RzfD!FU{zeqBHH=vwHVa$w>=IXc}5 z<-@FUk>2u}dx$5w?&Qw7JBcB_+iIH3$TQZ?EL`i?am`Qjh&011%E&B#y5DTv7JSc! zB$e;pn`K2kzjyA>st{)&B=2>D(trKPj;yknj%5%&D(j$Nm%_vLk&o_mAN=m8`dwc-Z)=tUblx3VwD1M^MPcTabHj{ zRkD#tB8(_l?HED;V8b*1huCC{Gc=-SmD|lEPJ|d!UQXpVQQ9BC>dQ+IZfr!Y*FrY9 zWX*tACxdETI^n|H#f-{)$uAigKn4vV;Qc0Hydm|49E}WmQhco3X5l3s$rHuT7Bpw4 zo?f}Qeg0cSf)NR0pT)W=P8ju@eQ!wT07k@Wlx zaR0S7EUMJ*p`oJ$K{metRG1j<#WxbRkqVNZ+0G<2l$q)^+EO6bn{m%&@zI^%xJO_A z>_f0r%atM9RJ7-A;^!j=nheFhR({kSukJEmgL(1{&R{;32c=`Jad!f{@t&C3lb}xy zdZeM6y3?e%7l$M2ciY~a39m6O874vh@babP@9^0rB%L>IakZ2Xx%sI3U>(l#n7@+l z5H9E#(^1X9RaGYR&fk}QEJU^odLS9TM$J~6B=b8?LQJg+A!;}rQzUrWQro1=NONkw z?JYk`Ac}^b_u#+NUpD5v7F(F&_Z zP#Gk)PvAT|e#A^;Ul~w{Xq6K*SMItdoL3q_8wMR~DoSW9uqg1xzXFnz<>w`_?D@}o zF#LRsefXVC-w7oo_do`P>b+-ZknnACR(Y)9N{J06?p}}a_>PywZKcLj{Nt)8vZJ1_ zfb|(G1jQfyt}uP;j<6m6+}SzOZPJk7*Fx=InnGXrPN83nyHpkO<0iYQtcdofy&BTJu7q}pPdgcI0shS1(Q{w8%N0QMOGjcw4<Yvm!IbtA`u@Tt;r9)edu+>zBTSwZg(+Gocr^kd>mdY`$5jB3}bV-CX( zCmm%srH~Z80mL9UCr-GFV>^()6!{8JF5GkT6hK-;Dz82iV0xYPJDGRyVgZ-B)5gFh zBg4}qolJ#(peXSq_e>`{L>sTk9j-wz@r$%f7Ua!JWN-UWh8EuZc05Z3DsQ7mvpN8n z)mhZZb|{X2j<&8FUeCZd7$K3~Oq`sQaEdEy6n`#a)P$s)?c3dMDXZjjod{?e!)3=0 z-($?e?>pg5o}q1atdfIIiiC4=k7tgD*p7rXB;iV}E~7G|io-A%KyGm~JOE?nR|i}$ zJ?PEtj|KVMumV@Ov!Gol79l^Ce&dDLLY)Nece(c>=IS6C|5)^GJz}zc%7v)cJn$G3Qp0?qVu@J_>?RG7Ai!>~LVN&MnTY8+B{y_vC zk8KcIkJQ$z+^3y{ah_TMy%S&CL6SVPNe{}VpUQXMLMtn@VIRYRPM*Q^CXcrrkrb%>t5wf0;G>EUZT6+)JYSV9&=^f34T8SQUx71ex`gj;~It6Ah0q zzJ>1L(yXbOQ!NLZZ@7=4KBv8mI&RA>+$CTzUB-?V?z=>ga={b#I3^H5at#=D(E`VU ziZ4~or=rYcSI9(8GdK;66HX~rVc|+a-$7BU8Se`o9CM|RFNELY`qS>PDBQ+Eh`JQ8 z;1H;)M}@<8S(hGB#O1S7IL7Z~6ZX_=KFsSC(69JWyF2*d6PF@76tV!bq3p?;qPVj( z5-kI~@X6Seo+rSOIB$Zme5G1mL+#spLOs2!{u+M7yvS$U$%-#Y@rCzO#2jZs-O%G= zNi!Q63M0oupLVf4c7dgY0a;KbZ-r{V{CC6jK%BxFpEj!f&_#;bv0YLjd~W!aa5u|NenT%V zr7x}_K!I}7;*|IuE;UZv!L;N8V>jr*y>BE-L7~`KHniJOcD1S@e4i2ibdwIz-8Jb> zf@;pPUej^DyI+)R0(@W4ftb|7$Ga{2!OEzIS?t@`owwT}U!KnlPsJJ&p z1N}1Hg^>BC7o~Ce$V$G#en67^Vy-F7F<~!;=e}|he4r1b`goPHtH9IStab>b-dW!7 zw*~Cj-p()Bj(NOM98EOeXad#PG`x{kjmN2aaT|KjqI~v{@A=R745Q_zkYY(3$$A(R zXOgVbgo-)!czEfZu^2zPDM6g|e*Me9cMVF+k3~nots+aGT5cm=f+6gTaaw_ug@W&FvWv(g+A+e+EmTzWfspw`! ze|+)q5Z9D?a#`ul__w|nd5Cac{XPNK=@{cOJ|Vr*=@j+0`1zCgP72f3kLca4&}~6& z_O&;J1D|hrtyS7Q^1Q)!Ze7dR4{9xqBS8KBw7MyeM`qHo&2llWmU61ID@NK+Grp1L zTI$&6_e8K-KVZ@KG$)<|8oPz%Mh@l!bnsA)2AUMJ0mp1i$1$BC)xI71axa=Gk;glA z#EmVioN{7l42N+=D=XD?!kE94sdL(5#hg638h%Mj4;@KKx+^MaONqmR*G>8;iL|2< zBgTJnWX4F{P<5ylU0{L78*ogLWW2L2lGVs?JV=$2sjTG!Ij#t7P88IqcGI@shl@@I z*->ST8COx`2G^^)>K7>;n)H~EVLavuWEq0xIw7^O-@Ebs2I7rb?|$i+&sw1JBhcb)oQT3Ojtp9nj`KFmpg;kB#iMX%mcdM1W2 zYONN2{#*>#CX6*DL4aYNO2ACvUJ_-WuYj>xd&|-L8}|(^2Eq|6J-!NNSr*0!Q_2#v zruLkaHs8}2zX&vReR$3#lI8W168-s=9uYndw09Vu;~{P;O0eM(fA;w!|h8wNyk}}(B2N)qR;GX>hhl>&F#G> z(Nnc8a%s><5$E~Q?Xviz|G231Ns|$bf1DMAG1IV%-&DImqVyO#X8({FjJTcH37)`S z-)uU=oM}YU&DSM-&WQ6gPo#uF=%WJT6*#Zq_jB9*LsD--w*)8V$guy_3IitJ>hgnWLmR1B`G6R z^-$OTBjGInvH)uJC`HR}XCQ2B73rF@Z@vxfZHzRk)nT&npp^y#+l0Hp#j=Rlu6^4y z<@4k>T5|=pWTN*wgD+`GmC%Phzpr(C*eldW8D3}ys1W~SGX9T@{h|u|{}&FpwOFav zjW1$Z2CCl`FGzn>9Bk!}J=+!R4MwwCqnX#f{HG?(^62^P%1@sz8j>*OH0E>lBnWAE ziz33X1AT|)tE%XH#_hwywEgcyi2~0%Z$uRf+_)@u>hTnUjomp$H2F?@@>x0iC#MpF zHI8Q-OXR$BdEK*caCFs6a&gFNwC9c1USI9V-a%EtoaL%{*qfC%1NRGiq=rsb2>aJ? zqSyn_!xS6slTjL#qB#MS8T+eSU#Cr%7_10OOt4h0^S!KhO@A+R%OLyRwL^k|u-poY z*MY5OBFD&8Mq*YwPIyf|#7S0@XgYb#r7fTIWZ_Y}$3H%}yLcf5+-AER`TkPxpQbaGgPZ~N_%V4~o1m@XGpJ&lV|j(Q!D(U}>&58^M{+u2hpec(?E0{)#33nK zF0c6W+78xvduuD>a-1s)VAQSVf9z{Bo*=uhy~Is`j5`b!a17)XDgN~xs<0}|M!#i+zheqcfxmv2yfDq{n}rMb#;Ss8PcHf3lG&L| zx9g5jeEK;3^vwa1m!XXIw0O}B6+?xim{o`R=w=KqW6=s4q^`w>%zJp(>$zN(uh&lr zFk5N+X)}qtWXpe4`}!*LAY3U2Cm!KoT4<9LGA9wOEPkI);=VZNkSOu?&)!CO6&Z!wmcj?WB6G& zEd6S-e1}hlBd(G7ih>|s3Xu>onbri&ma1=WFKw|D0llVT+lD94h9Ik-=4fdL4`HEA zxXnm;KRT7aKoY-nOiGeAj)U`RD(Cl3#K^{m93z^xs7c*ED1e>cR&n!>Cy}L4xXp?_ zhiNisy@`yo^OU(#WnlhNaNVHE{?59s=K`#Qt1T5Yd1m_tWH-T?mMq$-kQ#seJ_51dqgYKfe1F+}HAq z#i0J!3Ad~)Wc0ryjv9KtCEgN%LH zd`hB;jUxPxv>a{~dcU5pvN`wEnQM~JUDHQ}r1G__flcJ#d3X!eXCCLq7iv&;eoTC1 zs~-2+i0Fj(&V`GvXRR(Ai)@eO^@apEQ$1Fz!jS>zFWBLWGT_v9r(FVn&1%)v%7~#- z^SSMbT{z}*!>@JR>!Vpju95u}m9G}FUimo=T({V!HL-d5rw8!e;ZOEmSf;obd%7ir z(x1?*St?|{{R9)YCo_UrH{xhW=d6BXIxAT~`JU#m+RDu`Yjhjc+456pLEtFaF~N(7CpS zgND;Hp8|(vWUG}!Zin~MxPoK!rA94Mda8@#%G2rYK%C@k#Q6R_IJ zQ?cTemG{JXkcQ{hbU~f_rkRLA_`)qN?C|1ycp}Up<(t$(xfY6Y*x|t}@qMIwAV9~T zv(=WfrRCOnmz7kp;0CtB4%a?*qQ9P+oQ?Y!3wd(=>EVc67c86$?(QK1{!~Yhb-0YB z;x|Pr)O|4a#}arz#tu{mIjER}JA&Rlc#9XPg~Rx6=Bd6; zAK6JbS`+GB$}vq7G4m)?4AIeA`<^>SueQ^&d}&4LuRAIqJD7`gF`nv#Dt9&N7?G1$ zu}$v^j+KqN#r)meVQfM>?xoB9IlZz+l(B6u`c%(nCF#-5KVetVyR-n$Y0}LcX~_rs z>#ep+4E@DQi>UnDb<*UgoeH&%h~kip7B4lefd#7yOIb0j*jf4lPGQOmmH4W+$4{qu zIt*l9j97y0*D=0#`SJzJ^M0?T9y>3dL<^jq0$Yh|e}`5D@#4}iOOl2==@BF-KLb1w z7ig)*-a$pf=2C)5_{*Ef^QLayp@Ea`uIDwEv2sz(?l=#rM%}15RPB~kkvyw+i!Ay$ zT$ym_u>ILDK2!JMa-|eLYM17@q5SDedz}W>%TMd3fxNby544IhWL! zCcLgf+l=e&=DlaR_K^EU*3WC;?p&CV{~+&roSIxZ@})HigK(#fdQ%|9oSWqLEx-QV zHB)TOx@F1^nKfB*&u1Gax4?E@)j?Ratf(pBQ;3>)-s_uIz&yUzG$v=SjYnSp*r&cO zv^PUsD@)xcWLa*j2Ds;y*L|?zZhP+N8Y@{+e*d&DDtTfd$1s9Uu;sP0J>!Xv*qENz zr!{Te4S?4~>fVSbm;)i@ofIt&W6=fvLK$9j#`KS}zugF99}fs8m14{ig}i*Jfofl% z^`vqo1Cx4qBvC-%bWOk|u;6q9-KYXy+Phm?o)^{=tbLnoph-${a7*akCrQ^`h|k19 zCyGG<*HN99spAcS!X_aY%=UEssy_0t*(R$f#$AdDW~3JSRH(cs9Y|g>9}Isnz;FH zQ|P1b;>H&p7g8xQeM?mprugyCEn7ZT`@}e*72eq@m5?=#D>>_h$SfV zvVn4Z|3QU_=JExKXGcGD)+1hYE5&9bb{IaUv{wHDj~VGgxaygEe+PisL3DZ zk=vzPUe42a?H7oplJNCizm{!$x9Y3Yy^{Gz_MF`XWX>;;2JR0I0{2OkrZ$9i%54wg1E$rv-{LT2bO%_RG-M?`xKnvgRc$K(<1 z{RZCeoZGo?uZ#QvnA`G5H4TW)!O63BsOd3Ph_EOX^GQx54Y^EaNh#%`^7(6_y70dh80r;H96{dt10VxZ%&nn0&Cf>`I+S|2+vAO1 z`Il4&BIbzRTkCBRu@O_bUw4aOXM4*3gilQIueF@op912z?O_{b*I;XRLF$Wcu;`qH>g@T#)pC zi}5V(*Dmy``rtOO2wov_;FfAg5N#=;bV4q{vX_?hqJ3&p646s}e`{g?`)4oqHGMGO zuDHsvbjaFyNCzR4$MKlx#&^6+NvWoG5LTD$W*cKH(NLOF)%k3nljD_JG8UGbin4;N z#Bm9=$FR`kg=?$1cl_ybDiflE?4kQkrR+0#v9JoKk>urtna)@^Jv*x!~Ix3 z)s&XW_|wzBA*g4$OmXLKGbbNh7AmWuHSK@GQ_ZHCs<7CEG?nBQtY)Ymv#<}%`sEe+ ziSmA*wcyd&c#3ZsC_4R?tn&5A-~IqVwBKi{Kk;?sX^H89fPX<#7#qHDwLkO|&<+(D zHClFS^1Cd3yjq!UEoD3!Jo^vGNjWtS@k0lzLn+8F48e*vUhaxJaA(0MQf+lemHjAv=J`fhK= zhDF7T50C^?lYXPym#a(3G2MRzDYQ5s;_Sbow#4{jp!4}L=w%-L8oK=HO*OF<6A&E!dx3`ojk4ns$mR--wQU5;h@TU^m zL6?!&_dW3K%;2C~!Wc%~%5}5~^ycN5WeYkXm#Hu2=j_V%uj3Nte}}qb5FuKYIvh*e zKxrB(PTFU?lD4-=RrmsIKfg<#=?kxYus5)LYc%DtJ=fnJc+AKUnyo}FdSblXdT26^ z970&~=n~e@2rhY7u8Bf*5sRKwsZy}Z<#^t&;P@{W0T9577z4^KoOJKS^d%H{*-n)MtWbs5fZ8}+IKEm&^iFMJ<1JVT>LgVH4 z#y*)zi9Q?x*HHqT-g`r6P6{)qMKd66%wdiCml={j6>jo|xE&^4EPSUea(^3KO+pe- zt5xEQOHgI|;Xag1wK^BN2pgk=XaDg4Q%=2P90zf?WC=4f4f=A0yL&)nc=QR&8fa@( zLoc$E9WEyo^j%33t{ma_3SSHy2p`e^FSqveiSald-Pt(o^o5olZUQ-H8^|1W4f;xa ze&$!AZQ$NKYCGK)H3Su2w_HPB5m9kWOYmVvEZd0wZlzG&Uddnfqo0e4v7|b?m8s`& zxy?v>wj~P|jjR1<>n0?17uDZK+~3)jpR|MVuF6FzzSsq%%qlf`>b1JVgL~3@YhZqat|tgqWDqC%cRBcA=Cf)tu1!c!??-|S+<6EF z{8Wqw&z4`iZjAkqHnjsD(NgIL-^%vH4dHIr;{2%kl(fU#o%D8|*eytWqHW|`D9tQ_CCLw_m}5J(;x(U1tN_u3_hhSoD@DE&uu_>!*NO<+6ZsZ zt{|ByTyzAj4!&*iV)5u#eR%YeTzZG4?vU00G|sa*Xbo+@Dn5UTw!!D#*CkWs=7`o= z^D28n8!qhvr^N@oFNh^iH<0D6-TPQnuSpsV6vif+u5oH&9hkwHhiF*ZRtkEaW7RqN zuhveNZwX%*qstwZUAmCEL|8fF++dZsZadW)(R27c1e?q)W%EeL;4JJe32CeCzx~)- z*x{%TrRLXYQ-c9I7p)8S*w*gO?hEAF;ECfzW!J3Up)5a>@dV%Vg4#_JjuBE3^mz9h zC_fs4*x}NO$cCM)C;x@h>MM z4(H(JB;Ed$s_`0kB97BckYJ*`RDDLd>}ng&?b;oN>DM=&GmcAYyw=XYr71o7`|u8U zS|x_BImtN+CgSR&{V<*^=4#X!mBt*AB_gzSa(~aHT=5B-ZJq{-HQcg)i;Y7&LQDCi z7M!t5z@)kACunSW=1h5Ez+P3_%g$cYThp*MIMhFq;(p-6Rgl}WT*=h>OxEvch4r3i zaA4uWIy#uT`s?#tCP|rtFVSFh=Qn97v-kyMcO{7wdfqzz3rxVkev>RZ{U|3fOijcCA|P$eYPjT)FzugM+w`?(L!!(+YVP~NUNuY0N3n-QMxi5~5QcYejmv9?tiV zk1KdkPJIpLDzMXyjLm!V{n=s+XXQ@PU&tqbvk(sniLw3zRq8N`nQB=&L1FvJrpf+M z7V{J1I>Zamz|ehe%Edq8<&EswxpoS|L`Hr?l#iza_UMbyY&Iv#X~U)`wkmRy%i#)lziYHp5c9MtLf2jKs zWpi?A#`G|UyyEBPk?nY^xmfGDXaz>Y7tI1=9b2Fo3tTY4K$&Fr`-;D zyb^ZzHREw%$in+BUf%L`S{twDeJ0QyNaq?M^)+Gf`_|N?xHxJe%JK}^fwjKokK3q) zUEu!P8XFf+c~Z3ZQNt5#yc76aR7gT`?r9ap?m&)~G|I^wC(1S*uPOND-mc~`hrVEY zo(%1OyOpLLag}_tT)xb?5AY;7uc{gt$~_`C(ZnXpnO!%Uif1=kVxnUE%sDH)TjwZ~ z8ct&8W~9mzt?(-_f1)p0`R3)usavQ2J~jZ1gExsv`SbS|y7a=f=+9M2^OhWpdqlMU zs$?yjT?zb|PUos+exmGt1oCeia*k!-Oh^1+XAaMedxh=q0FZP2{HHIDeg}(C%(b~S z*ISI4XB++_D*VZ=w?#8KSjqpjxc?-~$=pkT`~T%-_}>oTH|_*t^qjxZ&;PbJgCy`j zzi4M{+pemuD@^GU$0guHVRRVR3=AKgrx1>jTD)7ANtydYJo>*HDgGB;(VtYp|Kqpu zo#q=a=)oP@-`(6C%Z4I~QGngMtA#Zim%oD4F;^$j0mj;dQ9zS3eWdfb%kQ}V{=G3D zff=fxge#6m5BcuE3(UE9prylJrcl3HcoCNHawm)YBn)~S0S7^;)HYgh1fsg5J)>35 z9q`xFtkFpOp}-Sf30sSUJ^Jw%KChk&NO0K!gDZL}1zdxq5%T0x=c}RgrbA@;e3RR; zd`gFE!}^ET@JiqPH~#lhJy&cYB#W{=hm$KE=geSlbd{mSMPs%MDIhtU^9Jl72xd-a!s(PeQUf9Sb#GUvhH7I|rBo5p_m8XE5K%Q%iEZJ>N{OX0$*9l@geR6^VT!dD;!tJ5lZ<2PHppjg2C zBD4D)VWS2-*CE(nW@=wkdEWo>d7`$NwptC+q)e`2bC{;^rAT?Qx4ckwW(}Zds4a@E z6b2|WcsP=)Q|I8pS?K2?7w+6S<+k&#c`KM234AL= zC-f@VP5N>?DZ6vTnZP_+kVpOfVAb3FU~jwUp7+2_bJI+vFo(edNc)c-*dJ;fU0BCV z`|nx~z8T(3Z9;8M99|jc769^9yLj_BE~EaX+UkB*6p?$$sULJFbB^%l@IDmDqIZpb zaBIiG8Q-Ou6ViC9O5iv2Nn`?qYn~V_)sLy_X@~pf_5=q9N}Xv_?Qu2q=xmM=sXL8f z#R?bPX7p|hY=cC`w6s&Z-C^zG9K?{@dK}Z59}}Zn;YXg54uY;;D%bFvFY)>&4`^`p zDEC1iE%&TC2^{F7sJYQjbv=$3rD{L%n)lv5slfCz4EwoLQf}FwyD`tJ{MVKMgk!_U zE|D=kM_vxpm1NQ4S%)g=6K>jK z=nrWsAv!inppiH^9gK1JdcbNx9KW(-m>CjZpq(J)QBHh~TmAaE3&I%y%`{{W-k-h@ zTZpDfNz}QP;eN|rMQv*96#XwFo7zk)pHjSO6acDXOMp|gVVXW3fX+tUsy?z4e~#n1 zsV6;ChI%hy;55~W zG3Ot2h%CPU?QO}YZAtjZ=e{w$?`oF9-;&RUgT`Q@o=$6?hUbCz-`U(M_@K$uY)4c5 z%%b#!vF7qPrhq&7HaT{jRr7qbS31Y2>c!e$dP|655zLa*83R|$#Ve)Gjg{4F)f z5bG{jP;?F^!tO+elG<4dHdi>eoR5B;ATUq(gg*vKUR4-K2{buiKBQ1{=mL z0(MucMF!lbmK>KvPZk;QBlA|UTGkWc6!IRIQ(yyx$&kmKW)ABvCtfDKU6K7&B3n7v>mNMk3a5YAxP7~adW-be6@}Q- zz2f|~iTMZrKWzH{0Bj1-pKzXk|6&LfwrMXfVB|}nTDSLL9~vV}F}3wy;b}i!m?{YS z-x4I8UWsi(n9f`TZ71JVsROX$38vz72$nXT+MLEA>g9KIeXV#^Uly5 zC$hU-VLSSC87h&7N=!S@tC$o2gdL_YZEu1(C6Sa);1q_$-CXnly*viPb_@Yeeaq2n z>0>dkztF?INio_8;B%23m=kxFVCU{BRPj-T$q}mt-~f-rgg+HMGp3dnlT3=gH*68K z4)o5nOZ~$mHU@K=tw5*f)h7MEzz+g-G;kzvQkHrd!bsMRpHAQj_B1>q#&9dsb>u*W zR|8|bG3LE9LEw5Dyozso?Dv2|I)?##qXgKp;Vepg6Sr|r$_8{ixP%#I(Kdxu3!Jnx z(DpLC1Q4?g7UHAZ64WSzH}@+?cKr6-pc!VPb@>uV=5`&2LQOCLzJ$G=bvkbF)a|VH zR&=FfDJ+bqF{I*%9?*E@8>3Fjzf5tr*4r!AF~=TwR`G&bY$Oak+5VN3qrK3Yeq&SV z8fqA6pP4sM4;_L}0C%3-gAKeC3V=r*NmNO_(*cV%yOw;Ze@?Da_JV;Q<}L8^!nTz1h8wEDr`*QHRw?lun91hrcCK*~Ncj8KokeR1b*dAer=chT~+ zcQPD>2X+YWfr@)$?}dgN0xuNj^_|d2 z!yNMczOVD}K22O^?s{T#rY4yZuM z+vp#@a3qZG`Ao3@^f;;PLWeKEv4SuhA+a$}PiW_~Nb%*fz|3tKUmR#rF`$(`eKlDJ zsoC0hS;9$i`fYfmZf(x`qp-ofo%N~BL2G^#w#kfJ7^ZN=nQK}<>X-dStA?f(^#GK0 z+a+p!4{oCOL9txgL@Iju+pW2rlhPj=oC0Pc7<|O&nM3EIA0R zQ+=9wg#OhX2qZLH6kO>qUN8*3{&UBP)NP5{5J3WLf4Vt?H3tcC*WsG1YR+G__ zYsQA&%Qj5f)MLI#V&^?M}&Zhgvy84239}d^JZ?QZ6LL%P0p@43q!88V06w#^{avmgmW0{R;Ykenfhf^8U&T za~UukLEfiWz|^>VN|KCygmuwPgeC2W`^^s(pB`2Vy{} zL>rx--U|na=OG6e)uL3`_nXQap>2Fh&yCP-t17nRaIjnM52neB!%Yg&{R~U{_czW2 z7yVSo3e8&E7)V}7WP!&ghfgiU!T-T;QIO?6%uu#148Gx(bRk%!Xu`$Deg=~%E~qP# z_hI{T?CQ%~-)wLHD^GN5ot|o((11IpqoKMvg${A9(PsYJsV4sD*EP1sC&Ji?2))pO zW2Wh%_~A^)bBfgKJs`@usX10DGp49}$Ccbpx5C!BBOP1NyI=K)cfo@RSgnS8&;eSNHpIIKqorfW+{SFTyBxjX2)JB6U`8%`2DD?Hzf>Ik z{7`8&v37IVTt_ql-kNDnP!j>W?e5;U(`}hM-nz*5(%6;AZs}A#$*tSPcjk_A_!p%z z9n#8V#vf7<2zultFNOcB!kbQAsL>ig#&k=1l!DWE$>y>hSK+Rb;gqg~%JEQoq4pHE zve-g`S2E47`UUhVbY}7h^o#IXSb@1W7ErO#c-^=$(_z(Mop|3vQ%h`!=_lW{4D|j& zd4m<6cXl)X(_e&>pN_o$dvfpJIg0^n(&yGEtVru{v*I zP}%l3KvVy` z%Oj=n2KUbb(V|=Kx$EG%3#5GtlshY8P+x-0XqAu${JYXrDUYf&MM=$N78jP^Eag8O zGC-=Mtl`}hn!_ihj~RuNlUC*?8UxMQltS$$x;KHTpOpy_{g2}Fi}xF7S~&xed!Le* z;ev)Hn?tO+G5v!>@6zQ*d$_b-wPDJ6m!R>ss{jg_tzrBg0;FVFa4whVwcifI-&tHj zcbntma2Zp%cFZkr`B!Wj{E2>uYM7;eB{}Hy2eQd~f45_RusJmZO^L-%9idRd7SkJy zOcSvg*64dsWk1zo4MvF0IPRNI(y02uH}ui>H!nPptQzj7_?D}m-ju$!8mua|0aRT> zd{-r&*SSuxegf(;Ixvd*Lqs2 ztVHvd`My#>3LlbxVDUI7%_5;uI4B|c0O&ZOxpQE9|2fW>%l@l+erwAK@T4i&LC>TW z7=i3#d*ZgY)8ata@?J;Je#dHa$KIFu8?_-zQ2p5rLP_OQN6djTUst^kt7rA32<_l; zxtR38ACSkGb$_m=&>Z*O{(Qn;h@77*c4j-(MBu^wj#hAZMlnHmqD{9Ww?PfkQzTs0 z58srShTBf2wC)`Cxh8n5(O#$|VVhhr7(xQgLHI5dn@cyoc-LwcA$8wr*LL_3XGI3U zUwt3lQribNE`BC!?uJMQynk-}Q7tEPUv7MXJ8%d1NxfaC#-nIB80K>Wof@_TR3B}a zfFA!Aa0|<};NgbH`Ub=*rnlvhoBiUq-(()EupTNA#txl=>T{=xkt%1aa?=hPSFpmF z!m`rcW3T3m;Spgx0_Jt!ekA&j3mMtyxc93L@rPGu8W)YRMK{p3LcK*C0n(x`Yi172 zwQq&7!?6@|9;zK#fx~6GAv~79@5<`|ty&vnKgOwXUO>v$lTD9z-I3rdTMSTUPHRQi zxI1?3rppIb9mWg&H+N7eHS#No9j1-K1qLrOOr@(AGp2~*sWPd?2TTV?j^Er}#aP{5 z`d{Gdf4me@>du?7<;u|P{AH5^qQi*Zu?wU%T;Pho~FsuxD-D@P4cyb{BZunnt^*@n@{QKXamVLzOik2*k z#B72|My>&#D9$Hr0>*JNoYb^1ahN(^-LCU;H@ydw@DKj^w zvkUE1n#Gd}xZX~ypGLbVc+%#c$!SG!71q3W_G?iq#Lc@5gyU<)5f==4g z?JF>3Gx4$NK8t$4u!=vQfS~mZRO&E zBvg^25#_9y1A~awXHt$m<3!biZE4{(0Ic4Y)5E z#u1rHua|(k=y6qi_ORt)4Y$D$O}*Biq6SitC;`!fJrvviwdWl!xtU6X;MjEbvco}{n#n)6AjKEJId~j)!L$y zPBdzf+?YA4M_GVLVbBhPmn(b;dYid#zX(v$&lzY!+Rz+977dOHqxkVrg}hzT_F-Q$ z{a~v%1##$H+W)BTt)seJw|`N(Q>7af5s(n+6ch}Qkdy`i1u2n6LP|-CMg&1YIz&=Z zKxvfDFW{HXFCriaXTG@h-fOA*{_eeFoHNGpujOzJc;k7WXUm<6nOf>u`?nPJnCu~0t*L#5kq%M~-9OMA(Js13Z6s1hUgVOhlgJ{S8IjJ(@y2 zVAYvC`f5^1{JN?{y&6KneSJ#7E(|mA$ za4bYn+riQsC1PT%QbM-EfG~AzIdCFIOSwV*Rrx%TtyeUMpymWh@yR6u?I>(qf-k8{ zfHM$Lu&;1~@@Y-)PR0Q%M=84tHT@(;Rf=3F`J64NfJ@qj+|e~szUtfQlXDt=q+Y7B zwSdf=LZmvRH`{h6Q~~dI$lZQ>h{W-hVm%w)=Y0R29awfoH>QR~(Q}WEDo>jgqzy*f zS02LH0I|TM*H*#H2AVbl^g6mwrV$J;yuNEZY>oCOaY)bF4HTFyi%?eWd8mo6RIM8Z zLAm9!y&(gU_d(ed7~_U1VQ!YPQ=OH@s|$$tVpU_;F^9011yNfG*?XKqP73sA2`z3K zM3(^9+P$g9!zN~*M5-THb~+WSc{0S1;&SY=``De-RjZXsjk0}!NaSi%m5X>sU5~>f z<;f4H;|a;>n&3rOJ&F~u*jF|#W`+?{X;Ql@d#hAMyA=ji)&&{INDDtLo!_L<1}6*O zdt@W49H!a}C4F<-fJbxBZA`AE^TE+qk8h}IOJQM0`eWcT_H3AfBq<%g!>6dHVz88h zDtFyxD0$E%jwOLrTx_V&ha-u^j$}M&@;HY5?6)Zh3TT7vMmV84ngP4$*Pte}qvK^+EhTW7T&nE5rK*7H$`w!&#*d zH{dA-v8WphMRmH6&Ra6v=GX7(CbmK1EO7`U`+fGP+a9P0KR{lw`=%jmXkw*&xGQYZ z{gJP-SmbHS#MNGin2%)PAXvKMj=OS(GInN zp}xCQY|FPrXJjC^XoQf%;X~EMqDyz)F<5%vKOK}9FerzouwN+`7v~7MtmvBcxIm%t zA9ZZ_n=8$EtGS66sqikzKJ~zzamyRN;X0HDh-abH9sKTSmE(`|dV1VciOwHgB}4b2M(KAU{Vr6{M&gaoo?fS=(}<$Q^1Pse zFB|tzXkIp|Uhr0i<@&IQU+@R&l|RK4Rh^DdxYpe~1K)Ze>~Ba<3sUopqkAN?J+*2+y> z)|!!LQ#D&%MlE+er#qf47~8^eck95pXL;;^(#IgndO+))p-YbByo5GXWj>w7zX2}s!r9!2gxnzBZT3bo}(ZAa|!()=TaB%=Bp6)R%2 zz}$Qk^iDydmO6=E^K402zlxX$ORtx?}PwGwxH# z(g{wD*A^cLQWHs}qEFW|$~oWV&&UOp$MRSJC{Y)iT5eRU4W|nF1dGib zi6JB^Z{!WgX7Xo}>rm@Cgt_GMlBZUK_z>KDkhx!)LX$dyTrxS48XhOlI_&)1X^GC; z7_`VjZ6WI9Xi`-$u~Aj>_UR9fC1!1 z%44fF;Ach}ST^Z}%O;NAEJa?bG?W`AN+wc3X*I8!dLdy4w%O&_coZE*(!;nI{p2_iDhw-|Gm)tGP9L&2P(7@5ShEB)4E- zK|UuGS72QsY;*yCQ@AzSrFKa#Ho~byYch1|kcY!sucQJ~*sA7T3q8UpbaVA7{i65U zIH9(kPIrwh44?0qdY>{$k`B*DOMG1!uQ5Zd5W!mnFL!^BH!)YO&|a*K#TqK0MEKB8 zr%W}sP-J31^{QLb`vlDRbKmxpP*Wt}iGLD_c+XT|BL2kTqqi-=*b$GT$Iq>CZNa>_ zGO_lqM1oPiuVMYeQ@I*`>w9R>ff!w0PR36ie*?;Jnxm zCJu+TK=F!G#Fi?&--K)C&o)LnR8R$CDrE%~eP>z3n%((i;_~2{#?xkD)K4LJK*n zQ#iKqTN7}PCcL3D$`3pxOFvKU&#luRw{gYbQ?>Vvp5Y+uObS8V_(IPrH=%9pU4=&_WJf|CEAQY-HHT{PWCp}Xktl3zNb}gS%#N?wYp$Uz$DPVY=WS4 zH#$Eq7Ad?$NFA4gOg{PJi!f<_WW*QOl+~7(8;En*#=9i?-O@-L=h)>~^>$3uS&@RH z|1P({xZ2DlmM>RNx3C%=avH=cbrJn1^M}nh!dB0|jGzp}w7FR&taF?#J<)rj`U7?K ze4TT=xRZG`8#j#u1;LN?5h91i_`E>X3bwh>C8)UkAGV5{?!UyFxnsQ}5a2@~H>%GZ zew8OrXiz^B(?i5_{&joH%lSpG+^t(Vn+&rP8;xb{N@riofT+2Z(u8q0@VIgD5w``KnTM^C zQMOdiFiHOXTdk^KaR|l0GkYK)QS07=`DDO+M9lS7yQ2Mey}FMbU20LsLgvGoDP z$}AE`t-K%C#f+cesWtu3?47p8N#1|a!;@Pe&u_?wWyTF zf!lJ5V~0r`5k!b-M%6K`LdBAl$iB0s!yyviT>4mwvslL#s$bmAgG%w}(*ZN3KK9x@TGgeQFY!uR*ZY&;~q`b#! zmg62NLP6}<=zJ&s^phtkP4>!$9s9)eu`PO%O^t<0Y2&_6_df%#Z|M0|{Lj{~g$G#8 zqP7t!lQblbi{H+gVp^@R>LOgY^uGsOqN@x2;Vu(l<#%YcrMD(7;JEv4xZSsXD-lA< z&aj07#()r)L$8mBda`Q&Zj^_Ri=%y?I|#(T4ZSib8ae*4h|QILiw2HZ6?A_%A>1!f&-GJVP9%8XeW@ zX2q$PW6;g~dw(udcvaq`ZVW?xtu}u7GLE*>ihYIfAo&*n)b7+2lN(Zhd&6}kxB^Cl zt}2$Yxq8?&DuJD!X*6S`Lot(C+THOR%%dyYZ-xm4PY@F$dGmPVp+5!{(5nrXI=CIC zA~I3dO(4%>6c4AKb7r79 zfy9U?%Th&!`!jc~2a!#&b*F2kP=PRURC}CQ3S+a~53v9LG$8%av38UBMFPDVf&dt0 z;)y79AXX}qKFB^T%@9ShVi9)SM?apNN%T5Uqz_2#+GH)2Y=l<3+gql(-hKRn&12da zYQ(_fcBdE-%%Z~>3B-B)7xCKyiNDoDK-(+Q^gWMamt#@w7*6TfXM@^*`LeVRVqX5O z$ky`s4$9nOBp`L%wWSklW9LH=;Acd$3dfW59d4^VM9k+#UA!xs3pbCTkRb9~ZE-^O zI()Z=-h5p0_zocD^{W|IT>KpY>CYRE5m`X=q^0L|d9})Ea{q*q^@>!`harO#?F$Xq zi4gbLwxw31>)VAwlDF07;X}YXw9=sklb1mo!uQ-Bmqs3kJ6e>-M++s5*9ad{RXb;0 z;U9na|1bUa|3*gcU)VdyexggV1}caU?0OM_b>)ifX-E@`Xf$M$qF9&SD)3+cwU{9- z6eTs_ETnm4(j#)*^}N&_g5TMZ1q7nhx$iJ-s_j9^J5lVhc_8aqJRyOIdW5r^DgPnq z`JxlQ52c`OM-+=xUr>RPqlxs)WFe@4-59bbidi0oV8xUC7ZwQ-5z~DLCDcBn6Cv*l|LkbU)p?E9LAUjEZ@*-$AlH(w`*ZjBy^>18~>bfRdVs_%@!9DD8|1ju{A# zAc-}7JNL-|UsAz`SLj8FkKYt_uizKx<{K}I?xAE^L6)=YB=s2a{Qst8(y8LtD`1y` zt)msdGFQ1LT&lOD&rp0z_MVQn#*9l4>D?kfS3+T5j*dZ)+Cd=SlAnQwhkvAd$pfr( zWhAWXH>Z4Bp|!g+fsrPR^8?P90jZF;H%aiHWe;F!9nrDdQ&*@DG9TGp?9*q zj@mmC=93+Eea@)#(@rpcBul97W`}9$DsXm!8RZxz5qr;WGP&Wif>9 z(3+_jY5O6AkdV3WB@ANCPB5VSdZL&E|A<9%*H6LFKTYPKafrYHrpg7GvMX!x6;P^= z2;wC+=l7dj1&=?=8{(B*jq*k)E!ILSMb0oncpy!G0xr*OmADK3|K$xtkUJt4+^{VQ zHrXn!bn4pKPw6jo#%|U%Z0L8nfhuJXlv6V}EWM{`v8~Ff`$Bl55^+uZd7;^m_`|o? zgeQKFjuc(AYVTwn4Dy`v;ZGYE?^|%$ddNuB55pd9v^pib%TL-U8$U1( zi{Ku~l<<~78 ze_u2jrrbf2?`!$w>Jh^ zL(RT%bt1Dbn>JLZ;uR_$-pif3bHLffA?X3HZo4%xSoe@SLeblSNVm%RjV}L@%uQH3 zH_LeD#zRu|^F$Yskau{xXAYy1VaHztim4MZF?olN!d$J13dOJ_2y=149XU^D^b|ZX z`@DwE{hz`OsQ;ED0&!R{*zjm2NMRAR@O4D&+*jkfe+wc2x6wd}-vx2=ha4y{^f#AB zi-B#r9!7hLXC&Z0$ok(?fKMNr*G)=PvZXG(X6d$@^}96Y7U}RXCMnlju5e6QF^S%C ze8SBNlhrZ3HmlgnFgC9pCUC2YS>^4zH%>uc!8d-slIovn32;%sR$Ib`cIz7gY*A)_ zhUX*s8{=y4^2%LAjT;>Rs-bQdN{ygdkkRevzrTt=-9pJ%z&InCn$fM1+$QhGbo%;* z#1vg=#Qa);4Pssw`$a~_Z7_jN^7uiX2A@$eZ8G8J<&8*zOI01AQKdj&RM?yDSN7WS z{xfp{h$ONsB(uL=LiVXWoQa$3h)ZQt!%4}wJPX7LHiU%%I?_mR6F*k81jHW96O?6< z&^=+D#}_vyz4IJ+n9}X?Cs!m-Cd&ExOkA^D!=~6OdcWAqDZQUx{k`Rska>CA1z!8} zB7f`NIP$|;CL1i*CL2X&94h8sc^8PViQb_@gcgI4qY>R6FMJ|j;l8`V68qjO8nsG5 zXBl>8o(6RKr2XCu-RT(hz}B#cqzaBk@4 z(aqp8ms*m|fy6#(6b73QLb5TNTREj8k~~LxU+2xFj@IA4Ja7T6-QtT<{{qvc+YwxB zbN!WSqK#~do~XZ&)a4kykDU)}5baM2jT%J#C}=_N>Z!aG!L3r&iHJ)!GCzkvMLR+@Qud<=zt{YH7DMze>j?3$h2ftW(g)6B9>WX zpT_VT&HGrlb%2axy6-dR2aP%uZidZYan zH%Zw9g0K_GF7fe!41^+>(A)dN8(5g@U^}?$ljynX$=kDn+PuP@N2`HHLgwvh~utOi`T}{hmAvyOJueuEJBrRJjut(1URV`IxM{Ud& zPW%jbjml2wJ_V!@=4+tBv-BjPIPG^tTD?9VhHVeRltDy|-8%H-m$mUza|I7XgU*H_ zrj0{-TfYZNs*Z+3qcM$lRR@d01bA6_ZbeCB?(f`d5bwf#;!s)Sz&rGXzYKLRA=D5e z`hp`(KUyGqlDx?!wpjjg2wUNtU{GN6N)Wv_OnoHG;#@0shhk%-lT!d8<=FAd>%XkL zzhq0oo;I%g|=Ys%M zTw|AXr~5YlDjk1`<@x_~Q*gjTfJcW;j^3mFJ!pZgp&#HiOiO@`SV#&fH9;U4Baqb! zO70?X3dE?b(Ejnn1qcmx;KwYEwb+B;6~#D%%(|TdWL%5jmf<%PZiD`}2sw%%l|*;@ zMFldweo$_2EebOitnyq|W*7>H1W9P~jj9t}|13r-Oh(SbTc}!p^yfjC_461Bi9&xC zp~8qGic3*MuQs93gBWwF0rg7>I!`fXq-s4iYiCxxJBNgR>wGkeHxu;}H)*&ErD zh}{RlEHF2({u#QQngd;%BgXRXV3Vj8*rhya1Y4|f+VFMW#;kurp)L9}iq3@d%JFw9l1MJ(SROAPwhTeW`JgNUJ( zOIhzKS_eXQ{v8MS*9Xl5L`)GFViK^#Al6It3H5GWdhqF79i*I^?g)u=8}m4USkbp% z*{xcjwrb#HkQs!bK2M7D^O`!t#MuK zvXQzYVlK0E3qR7)4McEnB_csl5sb}`bZnNO$1vZ%!_@MGUKW7T%`G%B-O|Nh5Z7E! z1ju00IT=dzDiR{AFgKea`zAVqQ6$T|g5cf|6v0JE8L$IY%t(0{e+75tYCY)!e}=s2 z7u?4#h*LNp3C49BRhND9%&Cb1@o;NbfN$onOH=XVJ?*w^C`NG#&o>Qy$>1HXRa@L6 z@SUaKp|pej91d-^`Mvg1xxFxWg`V0YuU^M6v)37kK%8gCj%>~#B?rOIFh;RJ8#$oa z`>ujc%r(Nk74efyo4#m3vc{aHtb8;Z-_2)b7r~c)dIyxgMM!E9l8(8)0AaUsl`y7q zef;%u%zk7mp>LS{@%WO-tV}vo&M&w)sKXH*)^r2+9l?i81DcuMgRn^~XVEaRSMND)Vvy?y1OP>^)OaDZ962;l@<+same=R58wv6;LhPttW|_ z^E~K7q|Rq^G9bFNRh}V+37$pP_1y^Sz3s$xqctrDV!vHg41SQM!Y*B$6^!w_Tm%Jt zjdulv!95H4$H9#!E=v}+%AvHHDyb33;0GF|po=Ny-23yRQtQcQ8-L{OqstFz=Zz50z3L=?a|r#yWrz129w|5voxugeO#l0pW>3jC&jPO~|9<8(xb0G+o!%5$-+c09|~eD>Numgs>H#+z!5 zLkH4_wz^(?Y6>|%ntbOhbqA3}IPawNreeR%QSgWvi>*gpVpyF(P>XWP0q}$M8OF9S z^;-_&ql6e5l<}h|t*kl@vBtk&1s$g)OqtCozpJc?^azE?^bOOzH?&&f$_=OCTWzPq zpdF$G7<|a4zkGZ$N*89XD>d=_;miuJ)kVs^rro7&gZxrQM;Uq;TjZeo3+n-m3K$So z>xs<+g~w%xLGO{EyGVW!|3Khlr1o!_OZJV`iHo(IaWrO%80fS*@kMY(V2Jyd3Qhfm z1wg9ZqB=1o=edhCgzy6)JFQB+s}Y3?Ac>Bz%wa}la;lRbh1c)x62QYanuKKdEp%M3 z$DQi-j-`v1%;M6LZ;E1D$)XPw@tOW^*by=b4Y5&e+O^5po2Uxu6BS0~GIGuaChaMn z3L8-$$v2wLyBzs15O)}MBniXt_pP;C^6s2eLVX}hC9=HZ%x_X%WyMkkYR+=|D?ILj z{0c0jKfpNtY}(dGcjzg&Y&JXrJJQsuNp;u~lfp5&vDfmKqb6scuLZS1SQR5AvOPxEy+)qy$Y_>t`Ad$X$!2T`~x8Vm0e6&ey;Dj#?=aAVuL&JeZw57dPWvM#JLpJ&C;0OjPaAn zM=!w$Gbf7;NY>yM+s4+Dk8Xx}3&KvDLIot!8j5w8I+Fs6M?EAx|w9l;fUN?fZS38!3%+wZ%B}1p#u_S5!YkBc6MSo$fGiq{Ft~fR5S3;=&r5pxtI0GbG&LSOJkkk(Gvd#aM5E7v2+NneB=!^ z!huCCn+95vI+QSvIn@h5h`| zRi4W4E*bFBh*#VS3kexL*Ap}(LFDnLKr3a&kjz*5YCyOLFzq)52AOZ3RCXd2vASEN z%g=FBR|gfhG|vmu-y>Q(eF47QX01;FkHjHN7Rf&+V_3;_FX=6x-e^XK0|*G?sN68U zNXdo*5H?KoF!ioen^5zY()Bl*{_BG4(OAv5InXouvY}`5Wp4K6-v3>)A)FkS;s{e( z%i>dWKI(jd___~VVB2=42*u9R-{sS)kX>NGYl8gzl{d@0X@aS*m-S$H54Pq5hMV}g8h5by&B2G z6wsxcU;djv_^%E^PYrBOkC~#T-2~X#k*N#(Z@SyJ;ibjc7Y3O7S(FCD?$jR5)E!E*;WBU{Ib!%xh99{pQfmZeF#C}qV9{(LS$lPtf+~Q3{I(RIy3x9A=UuP>>4Qyg zbP5@zB88YwsmZBcXkND-3_WCk^yXbW3y|Bf(;oBiO6T zYF%4SW|S=z6WPHYos&2sAD347SfpPXjn)6oYg5#=*6B#4I_L3xRu` zO4qKD`(aKk%pEC*VJ^dqNBfETM$9b6Cl!JURbU#l6=fw=6>5uM`lP^PJ%_sY-(E44 zaQ!dc?CnKIZ7^7@Iv#{$nHGH=@m)7eAInxgD2=O#G>Ld4zsTx-yOX`xvu|k4k*fK zxsgeYl2b&MGXvH8&A#I$@OMYveG;$t{9xKo-Qcee|r z+v|Tg`hqdw=OhaV$e7ZhK@t){B&pTYlDL1sE|l1}&=l_5u1LqF^9%`oPm|R;hp&Nm z?!D$^Ds_LH!?c;|esS`xNi?|TSTt>gc$Y7lzsCyo!#*5JVnt1@)w9z(m&>~Rwd3p3 z;3(Y?T0*;Yp!~3_xQx`gN=PXa3z>(`SwGU1=DJHM4+p4t*v|0Hy-hxH4IOi_2r=Mf zCuTBzg#)TL4~UH%-q{PI>@hK6qgoz6fY})hv>cO;BRr>}!p5)nz!fsGDqCjVGX`GW zNNcf`s4cwlK-;Hl5UY9WJ?+^wH%SN}S-n&GGK-~lvld}h=Y$+l@?d%4&>T60+8QA- zaobBtJBOW@9H(21rEC$H`g)L>--^Aq@X!e|Pc&Q&!$)j;U}u)wv%L%MNI|3IO=*}G zAXYa}dcT9pxz!o82BiiY=c2gS?(vaZ8?&Nrfxe{i)62`FMb3qZak?ox$=b$MqFb~V zboXG4#7thA!gughhk|>my#IV}ef-@AJo#uW-B-ofc_f#lsNQdacK7U?pYiWPU>e~M zw7VEbNT<+U4>GZqPeOWMA2On{g4O*U7QIc26@oq3k%Yb-KeLk(bsu6WQ*}BKqg;%G z0hROR2ZwR4#UsfWIwALGKE7&vAtRJuwRd9y^H3IhbmjO3zbS)M?Zo}q2OdFL96hln zK7)4`ro)K(?MBMFjpTr9){T2ZwmH#yn4?lUkn!6?{%dbO{Adkr1;DUpiFnWmx+I$b zp_Q`eG%3$)%rVI;ZKq1s>-%+k>x|!UE^A}w-B|FL8kS_^CX+cd#$EKma=M|=jirv9 zNW;sP8n?mI#~>Oc{s?2V`i6Vbc&_kEgDi8)CX6)L=N>w|P69!6sPk)@p0Ul)Glizr zgOTyeD~YGWfkXP$7i=VIMdmq>8LvIK{aBvUCa_}-x{2q&B8)Zs0vdh7z;xfshyQH(-25=2Dze62MAxBm}B%VLu}_0 zH#OeB!+2(sIL5rR*lT@XrJ(I+al9g=Q6cGQm&TW;W1=0{so?^e-cLdVYlCFcLB_3L zbp7IJEHx}J?esGAN&?8Q2TZW@65{&#aGBZCeF^Zrm{?9KUOS21@%a`tu7KopGW8ew z<(uEmj?=s!(X0=oe2H0^A&+-B1E@k$oUUA8i_)iLI8^Bl(0+aFJPDzEbsAJl_Gbo0 z^az~zX#USfXS|;30zndd{)gD+zplh=xnQLc562Mfl15nkY~BT~%9=6{`Yt-P(h165 z2EYFt|GMN<*tM;R;sU-7kFpkgJx7r1php^ ziwQ@NRPjnR;R?>$?S-;MG3vLR(=n7%)8lJ(L5go}CZhbQ2qCBAfd~Gyp^)#x=!maa z{OfHY0b*p3z|da0 z%9U4v1XQL2as9pq8Df#n6Lm}aB@D@%%JEj%ku%L*$H%o!_D*mA&mT>0gV=q+d&M0VoIwVeb*1GdG+KzMy#z$ zNA_wfgM81yT^NRgdZ=6+{q(9$L*N<7>{dV2x%-%%tRl-;->GkGM7hjuud&Cf+_4Ku zdL8D_xXj0oyH8C?6c(6)S2gck%NX}jPRYosA$4>KPwfGGNEcbqHks0$rX0Is3?j^z z;xN1>3|ju)XouI}F+6i+E3NuD<>Y95maC}-{ma``q}5dzi^aF@8G#tx zC=>G~wLey1J-5T{mGWm@d~U^+Y7?_j2BHy_6F2bEv?FZT_>HRue%R?>`QaaDAgQtS zsWy{oHU9Dp?mLH^BQqPc)qCy^R8IL`e6?$KW%KxLOlN%0kePYRK3G2->rZ!20QE7E znzz$@*zsj;s2C0x@8B-gDeOpRvQese?|i0rIJ=Kd2il%h2FCQjRoITh%*(NTT8V)< z)a&$0kiaFgM_(Yow^Hnzql*i)uFBEZe0C$3>CY*E$X?)`1Ds0NjprJV?3D*$$(RyK`lp>y!{1M z&_=Q?XVcQKBRlR1(i_8ojfr+pwtDI|?1)Ou+LdrN=H7S~2brdAfBzZU$#A;Q(1zyf z7dIJE@E+58bO<$T_u|D_kCzSuJ0I_`2A3&7M5=*_NT@%7CNA*3-fPWb$3Ffgq3Ut{K^)uqxO%|9sb_-ZcHolLxGMybEeou6{7Hd-;p zguA&$OT%>Icq6I-|884}MO{(|%SG09`&M^8Xw7Mhp6aZ z-;s}EGYhlptfhMwq@7Ooy zFCvsZ6gRazIO7U&Htvz~&tkCX41!2q)3wx912KbYAdrH}<2|1%F<04wy{kg<-X=q5D8@9McS{XaC z-k1qyQkH?8SV^Zv7Z!f^8%I!juUonnU`Wxzd{rU)y)IhWV4Bx3SLL_GcVVOF5lq>5 zVb5e1O7pVEb3IDPebuy7Eo%K9WFA*o}8(|4An%P z;pJ}Ff@S`&3}1r-2_xqpT5#SJ(k49PF`1riB+} zHYNsy&jgOQveq#NmSC*Dfh6>H;(&9aW7(TQClC!hWqr4B!3BmKPJ?DlK=khDCu%SG zZi$0whuHa&81Zu=uan_ZtB)4Af0=R^jFea1WY!1kao$;S6D^WrVs!6m@SUI)_)!(XF9JyKjR{M42Iwz7Zf-hTad$PZ-2 zzrBTjm7~8bq5pjsZK39V4MfaN0Hy_Hus|e`{2GXvf-=IuQE&v{EMhe}P;c=ggr<)V zWXXj>)goJVo(Whf2O&tmc-6l`{4H?!?xWux(#d2b!1e`%;xuxEFn{_w+ncTH1mdY+ zHy30c(s?9bV(KZ-1iqm#qJR!!RWhY0lMr~ByG-l|H+J$ngvoeA+f(9Pv%golBNGv6 zROuSMJnE8OMw5H^*Oz~^@v1WJ2+N|AM95gAh;2jMBBjX<7_bOxSh=Y|0riOVxcA}4DlTvYk4x>xv- zQW&`P>%N=r{vAl~Foa%AITB#jQrsb#y#<7RLv|=|loe%=`nk~Y4#?a_kgOTHQRw-} zuO!N~P$8X>8A#aklmW6npT&M z6haLk2=~_w_S@489h@Xo$x8KpHLf$(-w$UJ}Jv&)L4+`dn zQh7lO{CRvjLuegTe_L_gp(m!Fh%go<37RRa!GjFRuss`Q(UYms2t2)s8K6)S|>sF zkxd#&;y4=n+wP&AOr(M|)J!-=aM-$+r0M&?@0uAYm;rkivoZPxEsDs3PbVdY35l=e zzr_N#(g<+zwMF=(?K5M1i9?ds!&syvaF|o0ny=gPzukBd()sw;Vs61+ujB)vU0Q`{ z-_NQJg4D{#3NRzZ53}AbF+IuT+U~xQVhOdc(z%4IGkZ1C60(T`!7yS(MosEzMKJW9&o#!|UJr8qS`lEL^`t9+A?-+2e*5Z_KD!ASId zGl)95FZ%0Yn%ZIu5OWxO;W^99i8l{F^~36iJlcwjLn?R~8RQ*+{Z1CO@@E?n28x-i z_7Ij~(w!BCL6BlxdCK1b0MU|#)*7fz@jhVew&R;O{T)E2D3Hp{Dn~hGJufr)t}G&esF&TgIOfgdKT^!jMb;8wfMRky>eL=kcMhSwdfjh}cl{ zIIsHc)voYFfi@)K*DB|Il_;qr5?r$ogo`r*6AI_^GLmW6Klw@ADEzLi4XQ(bZBbk~ zfJ#TDr9x973Zh$BS%&|T%<71LYS(SQw3!u<1KsfI!eT>pNUy7i^}~pVJW>a9r5u*` z_P;-9-i9$E=YH4`Y-!L zppL4zeddMCe`#Qls4-os0>iI^&#g~HQJJikdkf}2k$BGMX;ytK%qi31LuZb9G8~~> zg8Mf$M??F5tCSzj&w*0baiVo9z_1vLkk8o6pMun2D}HB{KF2B;P~YB5^9Afm*jLi2 zemx71_8#VqZGCt1YjPo{1TD%h`U4u3fptRi@_%;YfU1KAS4-___8Qv08q_UAjy%|r z9O|C4jNRO|8uhP0FOm0#9DQ>u{;?#9BWKWm_G$u;zW@tvR@Hna8T$hB#?VO^^57%~ z2}terfT+Z-Oyi8TMDvD$X71w;l_j~2+6NuK9oa`44>x4^Y*Hcv-5lH)TCnZ=^NbqdT(_0EMMY3{ z8nGK7d3^x=r?%wI(*IVpTw6QGVM5EkHF5QZ3ylo};I-6$TUS3@|2LBl#>A$JqIHvA z;gvxEX(de#BpA9XzBKbU@nr^&#l-0TXOKLn|6X+WenwL6VJd1SVhb}OegqMTW$RF8 z_&7m9M^MT?5@P^RD=#ETPu35D6t>GgI?EGvPWkucH2J{8aq*R)&+gVFQl`{}Qz;|E z*v$%o5i@U&WO3Q#SVd%;_-_#Ya9J`6Cux@GxBJbKhSS114~3L@`n#~jl&phw<*HNb zsnR3hs&qcC)S{RQ7F8aZ`sLve#a9s&COYX->i?`6{#roV$zY_>YkMYDI?DCUa$x2u zYbj!?V1bW})L{}OltmHx!<7!m&&c0u+W#wC(f{G1NgYjYeXn>KK-dGRl0TD+&AiS` a?UR<=v=qDYY!D0nTs(i}T%LmIz5fN9n!HH> literal 0 HcmV?d00001 -- Gitee From 7006a666022542741e4e1102af87c476d2b21725 Mon Sep 17 00:00:00 2001 From: weihuanhuan Date: Wed, 27 Mar 2024 19:36:06 +0800 Subject: [PATCH 5/5] add os upgrade crd and approve function --- docs/housekeeper/crd.md | 44 +++++++++++++++++++++++++++++++++++++-- docs/housekeeper/img.png | Bin 63632 -> 0 bytes docs/housekeeper/rd.md | 35 +++++++++---------------------- 3 files changed, 52 insertions(+), 27 deletions(-) delete mode 100644 docs/housekeeper/img.png diff --git a/docs/housekeeper/crd.md b/docs/housekeeper/crd.md index 58b726c..99e37ec 100644 --- a/docs/housekeeper/crd.md +++ b/docs/housekeeper/crd.md @@ -1,2 +1,42 @@ -### housekeeper资源定义 -![img.png](img.png) \ No newline at end of file +# housekeeper资源定义 + +``` +apiVersion: housekeeper.io/v1alpha1 +kind: UpgradeOSConfig +metadata: +labels: +app.kubernetes.io/name: upgradeosconfig +app.kubernetes.io/instance: upgradeosconfig-sample +app.kubernetes.io/part-of: housekeeper-operator +app.kubernetes.io/managed-by: kustomize +app.kubernetes.io/created-by: housekeeper-operator +name: upgradeosconfig-sample +spec: + os:待升级的os信息 + image: os镜像,string,required + version: os版本,string,required + os_maintain_strategy:OS升级的运维策略 + max_unavailable: 运维策略中同时最多执行os升级的节点数量,int + drainer_num:每次驱离数量,int + drainer_interval:驱离时间间隔,秒为单位;int64 + drainer_type:0,串行;1,并行;int + pod_drain:pod 的驱逐策略 + drainer_force: 是否立即驱逐,bool + delete_empty_dir_data:是否删除卷上数据,bool + drace_period_seconds:Pods 在被强制终止前可以运行的最长时间,秒为单位;int64 + drainer_timeout:整个驱离超时时间,秒为单位;int64 + kernel_params:内核参数 + net_ipv4_tcp_syncookies + net_ipv4_ip_forward + net_bridge_bridge_nf_call_iptables + net_bridge_bridge_nf_call_ip6tables + vm_swappiness + vm_overcommit_memory + fs_file_max + net_ipv4_conf_all_rp_filter + net_ipv4_conf_default_rp_filter + net_ipv4_conf_all_accept_redirects + net_ipv4_conf_default_accept_redirects + kernel_pid_max + vm_max_map_count +``` \ No newline at end of file diff --git a/docs/housekeeper/img.png b/docs/housekeeper/img.png deleted file mode 100644 index 877e834bf13e38ff2ef93d481885647ee20572db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63632 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 a?UR<=v=qDYY!D0nTs(i}T%LmIz5fN9n!HH> diff --git a/docs/housekeeper/rd.md b/docs/housekeeper/rd.md index 2b1b8f9..d0e3e44 100644 --- a/docs/housekeeper/rd.md +++ b/docs/housekeeper/rd.md @@ -1,37 +1,22 @@ # housekeeper -##operator下发运维配置功能的开发 + +## operator 功能的开发 ``` -0.operator架构设计 -1.定义provider的crd -2.定义容器os的crd -3.proxy上报数据crd的定义 -4.cr的实例化功能 -5.cr数据的的存储 -6.普通配置数据configMap的存储 -7.加密数据secret的存储 -8.多版本数据管理功能 -9.配置数据查询功能 -10.配置数据修改功能 -11.配置数据删除功能 -12.os升级的配置下发时,reconcile的实现 -13.proxy上报数据与下发数据存在差异时,reconcile的实现 -14.crd,cr的语法校验 -15.以集群,组,节点维度进行配置下发 -16.log数据的采集及存储(易查询,内容易理解,按文件大小进行切割,定时归档,定时清理) +1.配置生命周期管理 +2.配置多版本管理 +3.配置下发 ``` -##proxy驱离业务pod功能的开发 + +## proxy 功能的开发 ``` 1.接收operator下发的数据 2.传递数据到agent -3.os信息采集 -4.虚机信息采集 -5.业务pod的驱离 -6.以deamonset pod的形式存在,上报采集信息到operator +3.业务pod的驱离 ``` -##agent进行节点升级功能的开发 +## agent 功能的开发 ``` 1.接收proxy下发的数据 2.不可变以原子更新方式进行os升级,升级失败回滚 -3.开发hostos-upgrade功能或把hostos-upgrade打包进agent +3.node采集信息 ``` \ No newline at end of file -- Gitee