From b40d38a91eeabec4ccffb58e75d6112d3e14c608 Mon Sep 17 00:00:00 2001 From: ErickSkrauch Date: Fri, 12 Mar 2021 12:23:53 +0100 Subject: [PATCH] Add an article about authlib-injector --- .../authlib-injector/launcher-jvm-options.png | Bin 0 -> 14344 bytes .../server-startup-messages.png | Bin 0 -> 66174 bytes .../minecraft-auth/authlib-install.png | Bin .../minecraft-auth/authlib/authlib-1.3.1.jar | Bin .../minecraft-auth/authlib/authlib-1.3.jar | Bin .../bungeecord_inclasstranslator.png | Bin .../minecraft-auth/bungeecord_move.png | Bin .../installing_by_inclasstranslator.png | Bin source/en/authlib-injector.rst | 83 ++++++++++++++++++ source/ru/authlib-injector.rst | 83 ++++++++++++++++++ source/ru/minecraft-auth.rst | 18 ++-- 11 files changed, 177 insertions(+), 7 deletions(-) create mode 100644 source/_static/authlib-injector/launcher-jvm-options.png create mode 100644 source/_static/authlib-injector/server-startup-messages.png rename source/{ru => }/_static/minecraft-auth/authlib-install.png (100%) rename source/{ru => }/_static/minecraft-auth/authlib/authlib-1.3.1.jar (100%) rename source/{ru => }/_static/minecraft-auth/authlib/authlib-1.3.jar (100%) rename source/{ru => }/_static/minecraft-auth/bungeecord_inclasstranslator.png (100%) rename source/{ru => }/_static/minecraft-auth/bungeecord_move.png (100%) rename source/{ru => }/_static/minecraft-auth/installing_by_inclasstranslator.png (100%) create mode 100644 source/en/authlib-injector.rst create mode 100644 source/ru/authlib-injector.rst diff --git a/source/_static/authlib-injector/launcher-jvm-options.png b/source/_static/authlib-injector/launcher-jvm-options.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f6c51ddbd71661afa0d497acecc341827619ed GIT binary patch literal 14344 zcmd6ORa8|`+$RbMDAFkn(%s$NQqtXmbf<(!hjd7HcZVPy7wPWq?waj$|BHq-zJPDoT8fH( zvNSe^f})CXj^UMs7RLB4h%SC6{FYvfuKp8h2=QB^qN+*+Ql(Dynid;063xV=_h{Cz zc<(wzYR}Yek!vxnF=2#J#jGEp+dm*25THv%n7Nn|%BVra;^7#P!iQhYmvNFICYgY-4*uMgbFP*17MK^lM8Vm{v(JwCoj#$i zX-HfAiQ&utFTcPI`&_2=b-uR9WZ|XSKE~>Fd)K`hvdCkHu9y8^-;NwN@lzPYWWF4D$ zc+DaBo7Hm3EV(zkW6);=d~Qs8ihO6?>HMB%kTl#?OrC`%$DMdubx0C(KnbDOY3JkJ z#l|Ey%d$09w1X_9$uw-5CkaYgAq~eXhz`%(DMf1`0rIQ=m*~(W_ z3$5;se}dk#nnUDBab1oVn+!VrzrVviUT%9BPG-&jB}wQGlYHZG5p>MJ5x1UxP+Xf@-0nUu;WF})(Xzd7l!T@i>!gX|D5?65Zo`MnnXfpoOk z#M-BlFNXkeOpdlt2lw6G(^KY5oLhIuTMz(;Y}O#)b$hDtiwD(hx=<-cI+nt=0xfK!E$1|KZZ;y)zW+i@(Yvpv+50LCYTNyr8e;;LZ92UNCIAtuk%i$>HMFoqe%n= zmTQR&j=%ykwp}WRppmOKWA^S4{|QNX=*6>57VV~?lT}1ETRhL3*X1xcBBD&S2(9H7%u%aU45_-V^HjCzklYYD zrGnR1y!x`|NgLRYVDuWC52oRe33VFn49Bv?xm!GMj=_G=!0sK0r8FN-vOj6NiNs|! zyV{>J9ZDeordw&?=e}ZacfQ5-sX&3?iX(UQm08_(ab~)Dr03=Cn$|Ea*uJ=^suDz; zw##WV_}mVBFOL^IRbci{+8=DDOEt%gNEh{e?qG{_Tiuuo-n{>C`5PLU@A-D4K;c&k zzvndo4jZlK{gMi<9>}l41dF%^GRa6pw?mh;%vG3NfE%rM+o{~Y$v<)tBl~@gr%{`< z=gMGzl~Q7->CV43l&DA@MGP;(vj(2rVx3iDQBw+duGoxvUI)`X_7*g@j!iKHEc$LIme-7)}O1CqkeYYM= z^=JXh@m%pREbl!bzbbVoxc0ChK5|f-3yaOl^8{0FS;pu8az}9rzV#p zt;n6>=((etNiBsWz3B+DItd zzStR+wBuf`v%>C!FEJfr@S_=At~3;_xH$OaGEQqL;(}n{ z`|{)(82?)(WRDP!yrnf=!21KY3O7F?GEKe1mP|I7<(fCzseJA%RY!pc=#vZP8QvV8 z*N0&A$+rGxiSlT-d0ZvT8WaGg%`F8$Iy(=mT&!Bu_5Iz(Y$zrz{4A|{d8s11#ouq2 ziTXatALKIx_;JZzrN8r!W{`eLMYJG2qw9*JRcFZVX*q5Vn~gO{81YPG(48G33mZzH zS8>Hb+0yrYiocEdeR|w-BEbVt49~#sbhQ&aO4FK(Wj)6c_L!KRl4N>q4puz-JhVoz zSP2ZeDbN|C=DKuW>TaJOP7t!ICUT`?0iG19h*j9OU45RbHU$9lbovK53Wu3AEe2{7 zR#+-A*QZvy!{@26kV<48?8B_41cGs`YwtJp`$r26l94e6Ls*|KV;VN`d7KKjf_0$) z#R%{HH63cV;xqXD4QwhjGb5RS5>gHhm$LUf?Y=KQ%7clFw(}(2kzrv&shkxasf_vp zdVegln>o)RyeGry{CEwT$c1q{R|~csRcWm^%bs9kF%!V|Uh1F(UdrrCwn$O#PdC`= zU*TKMRvPBYrLajanOlI}eJ)97%}vVtWwH~j(w2?-``@A zwm$>zrN*}6_qY_wQThr&BZHe-ZPn9vo>Bvp`0#i!>MrZ%11QaI4QLZJVK;@^p%35e zou%{Tl2!LAO$N}M4Lk^SLW$w`0w!a0ueuTHM!>27!u?#K7qMTYV(|&QPZ$<`=r-D^ z%fa+}dLY2kOoxsE)C27OKtwdUz~_FhTB=cH_$P?fY?vt`XLTQ{NZds5em956=eD!@ z>b_|w-E%kV$L#q3Fe$&6*BC7JNKyIceW8I9YD%w*f;OcUbJ-cv>?mfXDAq+x!tM?EQsfDcru0rveuv zkr`NvP)Y;yqt{}-{V3VsijvMY`U>K7QD8`PW8RJ(1KsgCTPy@{b@B@e3A}%_u+(>p z2Dh_y&1#dmD&rsbc0l%u1d(E9>s|@Tf!{Lzc~3-)4kO(EDfsZMKXGGde>pL{e@Uaa z?agA7V^vkven102K;uWBj=l|PYIUvdgDb$Yn*bA7ykScg#*V=Sh&#fPkew1u=?p!4 zBmi~x@^9HpTcs8gbjNgr`-ux*x?WCxKF-uW<1HpEy&S)$g6|Ss?+}<{T&Z5G|M$5j zcK;iMBjpF=WKVZ@Zk#Mi;Jd93k`^FzTEOEUjssKn`fs#tjeHs)~a-s zQ4iPdT+NP}x^BGk^#vQ?h$nn+sY2USj;~$6oRg6Vc)*=ZR4?#lV#5eG!Y@861o?^q z>X412%JSjRkfLWXhm;~+A1~pZT4lWi^EmJ01Buf|*tP}ViB zZJn`cR4rD2`vHEUh;+Z-D*zh>kBI1{pDYT4Uh5LP&Ex$+1(=JlIj~KXdT@PPXmUWQqDo5T4EID$rf;uo-g8_z4vwKCm;P z;o>#{%;^ckE+OhL+1#~cy$tKXb_1J}kg*||^j~~%#a!?|5p@I$Q zWPlY7srxczbTp7ak4F|2bHC)e0`M=Khe5Y_vU;Hyz~}A291uMiRG+?O8yg#2!m-=2 z!`wE?I0ID>NQtd6!F$pgOYx6L-;C+c-~B-rY(1)9po(l1kc`Ba3jlBScV1n`9+m?T zRV?7T>Zd3IUI|^BrY$V|*=p0U$9kzZn?Rb|w%<{}k;^7nk7f4&b`y9wWQ~u^WwFLl z1q?3wMc?a89Aou6w%+YtLB?NAi96hE_4E3{|0*m{^tKWA#BUZ!;gq!%CH$)Du1 z*N1blp7MM=n&xbU8{to^ZGg zHr{rs?Q)|%nIXZ0e_VCO59`3Re)Lcd*JGXder;80cG?(g;JXl}U;DiF2Jm2k3kTzk zkrIAL`h_aS)Rm9_13G#D2C3+mj$tMd_mRh72QclL)*IISzrQ>VF?M7^Cc`Q{UY?(@ z8)wXLs;*Zl#~4Ie=YvKBHqL-&}AQ{a^Qt~202!XrHibR0F+%&b2PhlIV zCZjRZpdb0-*z52N1fNEIKNh22+MKZ0H1NW22yK}mk11UCq@p&x;kaVra*m`3N8dv0 zFagcCNB`Y%h^{xm<~M54t}+tWikO!4O&-W)HHPLmZ_V@O7V>DnU4QqQs{WCUG>buE zH-JJurSfC(uuggXpM2Q1ncJtEl^U~=FW)6yTWMn0lON5Juqv%-_CVke<{|6j6fOIg zg8m7kIN@@WB&u0c*xq_vjg*$pknGQKcL+L66iu{bA_9y?L!nvYlV@m_sh#|vtx1P) z)_a?fXP+s%qtViw0-)b(fR{8{0}e5WjUiV(iF#Dvfi5;ts7|}V25`IE)s#BDClBAv zqT|0wR0AmId3$O&MEJN3uX^#Fxi`*yll571DI|vT>wGu0Gp99BWSe)l8&OINAK1U3 zC^+x__4_sV?GV9{3l>`d^NcTd$GY`{QI)bxZ?IH=~m@ zPFp>UbPsD2HBq6~0`JI?x#4=VtLg zbQe1%|3GTLE+ZBl|7}Rkt)vqI!lGU4NvsiZ6sxIX@ma`fp-KS~X4CzC2{qMkiuBn2 z%z+F+!SmcMueuRQN6i7vHhSLS9ZZ!?^UWfOPu%g(diFh-;oF-Xm@i#cU*_~14`{Tb^QW7^HX3i>QfP~m^HIo8(?A- zGK^?(#@iBB=C15eb~e?r-z#1h@2j6z1CYm`#3J)#6Oo+y{nY$$($bBI_&}r-3fNswYugs#S;%}!9$~|*bqsCA(z`a|ub}1GX}bWS zPCE#K6u%dn+Jh^P8X)c;FJKejHefRG@Z7)l-BkLgf!AF?BIY06i8=?8dOOS*U2swA z|3ANwCYXx|4xRidE-KR0=!0BMaOT zhcqlYyyFJBW9d0C^I;9JZ!uQg#&f0dJ5IaaHJ4gWl47F)vYjK$$w^!S0(qfgMeoy2IACh;?{+e#2*MqAAez@c9bgq?t-0{5nV{G_Ky2D?18R-I z1bW%H(7{yPH^_vGK-d7%{#=j-vQID$xjgh*wSQd+{r}}$z!us66bD9!nvQAB;jMpk zx|H`^-QfdbuqpsI6za)O1v&a4_$#ssSccVi8)2V`W6)QC^{$K?yzb65>nVyGf)9bYq$&hkH248{ zfwEj{kl6s865Ot^_7gNChl@=$z)k@v@YxOQiYRqG_dKvUlUYo^fZ1Z<26+x=?l~Dd zZ1!C@y5geqj4qgk8CM((u@vyxY;gVdpip_up!zRDp>j5^RVh#a6EFOIN;4N_?iaIh zZ>DfSWry8b7br3|tNIAZY{+3G_9p*S0n!7RVkx+-ep8SlgK9_WvMf#u6bO+yl2P?G zOCMA|qkuh0r&;|GZgwWbr^B~97!}x)zGRTU!|20;o7M*o`R`dtMSDsE2r!Y8I(MUl;0i6Ti{RrfIxSO{~#Kl&n-GWAHY#}tEwTG?*CZlQ_$rJhbJf@N0M17SFMYb^FUN$GFMJ0=#v%zs+u?E z?+gGG4P4HH0!?(94VR((7vscgGMnXiPLx23S9(}s&cJ)l#eV@Q=n?lZJboD3jaeyz zxxuvrV+PVqZ?H^G_b<;k9UvUHov+;k$vWs1i8yU^Krr8x$~~$L0#XpLOGr@o6baQ^ z&wWJ!n{R<7i|02t5yf5c$BnCb&QBWcUX0;{6P>+F=uL z`{@U3{5MnhUpU{e;uA)kz^MN`XP#l|%;x*~s%s#TaRsC|Gr;nL8NLMZd+O_U}1*{Q>Vcb1#j^*tIGNN4m5XmqqWp@LYA(uLN z39j5`ruqIj_{S6k4s`vcvjA4WTAG7-x6p4(5V+fn-8Y{* z1_e}54=5}EvEKpeFRAHFj7?<@eiQ*;4nQsNpxUd@7HMq~bg)27vKO~h!{ z<7%H-3{ZpII@r`vcy9er^t#QpgUMu)NEG8yg3rOG_{7lh-jZUl@%*NP zpge*W7*Ft|aRX@xYDmm|KgpU67CpXDQjHsmBIG=ym^rWGc0CMG^$J^FgY(5Koy&ql7b6A3iw!vRvyG?(=~?~Y;C}MOlr>m$j-^m zE@f&3&lYqOUJpkNxLP=p8-+Qh$UQ)K{iQ%u?>(Y#SoHT^%<%_7a$eK!zY0s^T1%Xu zND5R-0w9A1E-$bLj|k__zvc#d?$i$vBk-dk(NhYqE5kh=gw|jH6zgy;PJ3PbhOXk# zCA5T)oiGjdGcUjdm&DAHV1e-1EDZ8#<0{voYeFP4<#%naXgA)@>zhkdgFwFXm4ZWP z*3cQ45u9o#Yyc}IhLF(=!50ulns+mWCwYeBm^lOHRedw9mS8Wj3LOGu zFYb_kJ=T=Eegx@?Y0jZ)nHJ_==j(SAH8FGLPO*^%`g67IkLN>9NqrlJHNDDm-M6B)Ny0{^ZD#w8J!2 zH7D|YwAU&E1Q;iBayo6jW9QtlonmECt5x@f`3M>xp7SG}c105mCwQ$!N?q!^#;00Y z$`ZZHJG5*u1H#|cAFnj0(mnQzSWE}gxE+IBD83_dWkQrms|udC4x^bIEc}3N^m)3P z3FrR>iT+)cYTJ(ciu^<7g9U9I_FYaXXh1=4@F$$~O9Vp>UAL15vY6u-wgqkc7PVye@1v3?$wP6fQ_`tp0_tS*qpxS^c4n^M;@qO<20+`b{d9 z_?}20jiyAO9FCOcS8{aN-avRSvw}BJ2>1t5L*CDL)eArcg`iVbC!ynjgCfPJc7T|3 zwd+xs(m$aX4FK33R}1v%{%mchnu&Vupn3wV$0Ly7@X#?@YA9ncW_zu-w{D~aY}f(0 z=u|~WqA&=$(8n6gzMo#TWf-OOEPN_Nb8?Dcmf_gm2cTPw5C6?=6Wq5UBD0{9oN{m- zXj@TFWv_-cL=f_m&!Z9d;r7*ZhF@JI?~VMQ8s+2pjaQl)_~!$*!zQICkWEUkBY)c5|YVJ^hccfhpE zS*`8c%w=Icx$RF<(^9Vm1)4??amay~IuDETr~fEe%vHk9xSvYXn1{xLbl9V3v7t5V zXt68?@Z6dqA&c}aDXn!sw*V-8T8I2*n%JYLYbN#;^KI2~DJbl#aqCJTsxz%KKsMJa zV*WvPrXV8xFQ8fqSau z^%|K1Ni*)sdo35QIT&Dwwk}2mDKnLlHGQ1S*uy4}EDx3$vTzS5;eyF%>lMrq z$4U_~dhtE6>h8x<`f*A7tv8eSG3X<0s%?$tE2~WViXGnQN8&KsT(&>__JiL4R+qx{ zTKu!^+#57$YG2j2c^cO<_F8Mg?31t1HK-3knIis8sBz?TViqn-^v4>W-|m* zp{xHLHt>80lw_azIeHJuo<{xX;RJ4Dqp)|`yXSh;iB~{a$3i6~-{UCG#s(d*4^>LH zB)?HBDgM?|y`WOYz?L}8NdGn^+F8r zz6PvUC*XaLVskLO=Ji~F;+xq70!sq|@?a(C@oH?$&q&Ut;We%xawbRzHDL_F8#vJa ze8%0y@FueW7R=8ym&Q`oWslw&S*a-1|F7+E60`Nf9NlRGeWi@~BfVyI;CteNU2Eke zU9m(lp)V3u@$jzP8<=;-<1DmpC4EFyqq9}UR|G;X`AOpq#INCRV8y!$_6?DYb*Xvd zjab;gkrLTi_L4poYM&0&YP`o_!~oEoj@wfEhYa?np%%5PqLUDpo4-7O6IGaudOF^p z{I1zfKI(NJaYVS&fAL2`+k?B&I{yoC({6UMyjt>r3D}1)mW`n0oddny4q65nmgX#x z=_Q$Za#19N@9m+LJVI6)^o3ed$n1yZQoh~A1at5sMf0V12P$bk$u#3%ULa_gGp>0zE4phfh6fU533tuc zA;D8*)oA20h4RQH)ydrQG4(bqD49)mqo)&Wro^GZ!-*7Bp4OypJTy3YnI$xwW zb=F6Ur~5&$0+K}`c8RP;;LK1TIU@GcZM5CrtPjh5dTJ3)i{KsNGJBxeFO*Fpw}pP z$c&6K#0lS|;bN=kYkj*D6|3l_?LloZ%mRvx3RbwP-7jBN;40rAUxT1LDF=cprZzamYR$P21MHMJy$fw z_E#=s_Tclwxf-CXn?c}lxPfLY#7XB+5tq0hEsx+gf5cMmpJN=V@>NPPivk#VoqB6r zt%0Phd~gQFI87TH>I_a6b_2K51Ef%z-z?FC?g5?SlBmxW;t?ET?0I}h>r^S#U|#P= zC6oB;@k;QJ;BV9W4{UCr{?;%nMAcOkVg)I}mz40)0X}XyLJD?!%yqps59fFh-48gQ zP*{U|0=Q*$z7I}N7nThUZ!7PZyu)ixQziZ?-a=x?4jON^2V$rFf(##{id@&~;bwJx zZ#6*^^JG(v8j#>r0QCt@WP!-Sqyg>RK}4(EbYnos917^_FtL1;nqS`UzYJZ97Py=& zj|3y`;XDw~5u;%EAtUNz>R2z-e?438kyCfkw(g^QU{wQWa7g3~3VH{_8OTWYMKQuv zpE9S#1W8p;;+ev5Rth=hnL$SzL|lcJh2KJ-&F$@Z530f6zFl8GlWpTo1W9OsQZrUj zU?9N`*o0CT+Rvr%OksGP0)c@`R704;_z{cw@_1~_d9)&;3*)f+Dg#vhS|o+A@1SEN z^45X+Cl{&-cgc?lIIvj`Fyj{@x?0kv9gc=~q4-F`&nC=|N?bRT-(rtEr;MkqXK60> zs&hO;+30Ac(lEeb`7N?2x$Sc6J{eU4y;nb#u{3P_z;BsRp0PSBbsE`9kWa`qr=BKL zcnnCG=JX+;G0PT0`b|8$>!V~VM+aku11JuS6Wl&Oj2h&)qw0%sr;VnK-=sWK%MqCo z8K<{ze6_^$PEeB1n=P%3G7%wZoD8G>*A7BBs+719^p($EX)zJjJ5X;m#Ul5shlweZ4nny>jlR9a<95$(s#2k<{)Uk-mnqe^MtxUe5$ z&7}{gax$(eOppiC`+^-b_o}Lcg2HGgejKx_gOr6u`Rgp>&D))>)w72ua2V7QL^l%Q zI5Eo0V#h$8gXHwv<9z^wND#UFiU|sgu$1`tk^GyAryX53=R30o~8O?yO; zKEQ-14oPupPZ4c%nWSn+%OXIGr{@ptJFYnMpA2|k9a+v#PQRZ2nEMO9z!dGL*2K}a zYzk}R;_CgI+ISmjlAM^7YP_$S%s#$m9fI?OVW`)VxKjpGv7L|ZuI%Kcxd96YX;ZNz zBFI)zeH9nCPiD{X=198;IeC2!=eI{SJNo>D@o0ND4{`PnWH$mwQAh5T8g7Uct=E3_ zk2iI_A1}F7#x~-z=_I*A_O1OHmYxsIe``jmBy8PgCS+VxxCGe6&omA0)P9@kw+s#2 z%KbQdWI3%6qoJbJD^Mb%Dy|{DCD)SsLi&qv%sbkmNI1D9aJ^uot<`^6eo3MG z`KpA0Rv6nvKYh05x(-#Lr*4!+_eq?~>`Ea`k84UNCm##gfaVyQld_;E>kkbZsVBRN5qrg%Y#C8JP4O(#jpFVW$a_N?5eSAcsIhK|jbmz$uQJ?*j8 z)colx^O$AGQfNqtVd`B>5cK@}3Kjc^ea#F@B*OMcz*zP)#{ z5%>j)Pt7`NX}@qzb{n@EP3Ep-4)u9iG5LJ!Q|1>V#EdHe!l!>`Y}* zTlLR37R3yDlAQ6y6kO`mDlrOU2nxiwYw%*NO6x1PPiK)XZUjBdR{QpRwfGgo2~}z1 zWIwOtX7+faj9Hh9QV0|CPwxoWqnNaW?uxvx7dYt6^Tue3v_?zldD&&`ocOAi(geoK zcG$a)Iv$4X6>lEyV$AR^arE4OSVUOAg=8dlsaet){DkG7E_m@~cK zx_qdJimE`xcGVRTi6cYbj(+mo#rrdJA{8|=d$U(k``bOjiXY-MMg7WCw8LIaL^=6_ z>-8Gvpp2at(-Ry2j8Dq7cMz<;a%w`1kwo7Py#$UqG#|6}RAQ~u zM7sbI)fmg;8AV+*ifXxLsLvD@MrYkMPG5Uw_3-0%{~33ci$O%1(-M+d+iMx*Q<_G_ zfQPZm#Si+l_f>&3Cy_ff^+2JKjI(fc6wb(80{jFCi~ac5m(PSe70w@W+29c+uI)Elu$2oXmXC zyw-2E1eHM3v@0B2{vd)jWO$1KsI^nv3c>=tW-OkXk7g`xHk|)-5J8Bv1eFdh62*ZRkS8p3Xds=Y2Ks2X2gM**+PKd4v948zk zHqNCNIw(P(Np0E$j;SrRx?ccSOVQo;vVCO}5k7o)Lv-fh_~4}k@z&tC8-3wM9?AaI zl$%aL&UNF3{$0p7HP(KVZM@PLH7Lu@mbkCw*kyywPFMCv1 zyI$xet8H+R30y1Ns%>4_V=qg(AGMYqimr6aF`wExiwq;MxaP1y2!7vH08Hab>d8@P^@stL#ZR;wkI%!zJ$?*Ol@?GwT z#ms*_|F_H7(7XxKZ4i&`r#_+hvkI)Z+S?2E^_j~{F_9~;ak8;>wG$jVnkC*Hc6p_2 zGK(OdADEL7(w>=hoaTy_HDNav+HwHH@tBZg6_#C*Vu#M4r_Q){B z-JE0-n9jJM{bDOEisw3m{sPJNoIiMCXJO%BVevFE$*-m4>Duc3IyaR`N7=UAk)0DI zAuf&+T4ZMCpQEoQnfeH^s84gsV4fa{>!@&8=i2rPG@Psc=>e=-(v^FtHzN1Boiz7Nn=4>b^&OrrQitbNc(>cmZ_UzV|(l@5lap8_!(Ix^@o4#U=Td>71Q5Mh_zU7u@wP`;;XHMBWH{|7SVH5Om z%4DY6yr27_CKjA1#f7t#!3BRk5GWh+zb-NU(=pTksowZM_{rc4^w5NNfPVv))M&77%|n_Tdo?lijdIrDe+_CAfCMmX|yK0V34_Z_|UB;P(g z=lhca71Aa5|>AHSjFVdbdF_|$5-7RX^Uy97z z(1xB5uZtoiyJ5y%_4e;Df7bHv^;RDDS&{X>Mg;Nn%<%sny!8pt`Lo8quTN)8TKE2I zK(ONfzb|6^|NbJoNafANO-v*?*It{)(n!b37Q} z=yNFZPiXewzq0(a6(&&*KF&e_|BCW0zf2|>{!`EVnhckh`uX6^ztchhS5 zrpqdhz9ZEB{n%Oh-;de&`nBferM~~2{qfBA@BQM3s!E0^@9O`Ce}~&hn2fvPpM731&6L{e1O+<48~jg#%B$!oKh=qX8p!`=x35!}6mqh)N$ zAo-@+b$G(}cy0Q}mwoy7RkPuUH4B2JQdj+_mzn>zl+-R7s#Ax+SkUyKR{YmZ+Q3$o zB!gRuY>iYd`!B~-`ARB_SYBEnA0dI0*hA|S(tFL&vSUfd`l~V)(bA~dTeR@|f9^1( zE)-KR{l493&7!AOs7dJH-6K+RHsjLAk-+zur0 zE|#(vJ}znsY~CM@5U|k8(`Ta^Q~o+IYOEuJu#z=`o(z$2{S&WJ!H}Yr8}C$m_Ikp- zB$;ES$`i@^v14xjthD8!)sSS`_cD#nj~WSW1d#fLxvwDaB*sGP1xcgB5f0jjE(5}cj#DFcWXlQ6~c`~~sVe_ht$+5tF zQG&kEPPcVBz)O}>m}I&ecXR5|&JHv+`LtF*>f``3r5AT3kYO_rOl|e4$0f4s_K_*F zOV#>N<2nd5k?eu}sBA>=5wxc-9rV%1)k}=m+pnwlFtQ80X~Ak_e7UAT`ByCCyQ3DF zVEvy@hbR+ij1^cOepVngkxML~nDF$ar>%V^$_!7svu*W!U~m-CMKJL`OefXOwA+7q zc{z48vUwvcsTgZp|2{4j$HRMBn|zWe2~4DPG&c}RlR_aHb}~%r>?{bEF+uUw>h`wWE8hQ$F8*9X!`Gczj+vv?Ds zQYXg|)ezh%zl5OvWnF@>#aLgx{T$EF!u35bQKn{q^%CzCOF`s?^W0HZ96(!!A4Nrl z3sLWhZ3G=jr8%hNL(y1g3W?%Gw(~3)@0BTCQoPqu>FRi{{$Zr}=QtFl4~-)&R;0e9 zCHbX*kkM7srcGEI0b_z5x3lXS!pm_6GZ|SG$#{T@TUn)=6qDx@Y7brYs|^l6s9_e|fZe!g$0ns#7IU36bJDXY(n^zA!c(@a{6Z zGPwP&i2o9zuey3TezDMu-oFU!~D2uC~{qH=xH>w(TYMALPx->byr;zteoG; zv7Tp}N|$^ti1RuVPNFS$qV;^ld(YqgzEbdfqDdUCZpUP5cwl;A$FDVVZz6AU+oo59 zQL3!$?O1Uw9O-MX-q6dweI@=}`0St`Aq8Z~7z$UmU4KMTTCAPw(%_gvmwa~V{1Gxg zwv$#`>wW~y-Wd_QXO&TL;;PAdq2M%mzHv)w`@U0zyyxU4`Ie}`I|8T;|@9?rbf9#QGJygDX>gB$a3k8ot}wF&8TAFGm+jvBlq)(TYvE*#F@Yh_fpS4x;DtXzbHQR zYNOcNXhwi6H<{k9ZZ@~-X3OG1@eY`YVR>}d*nt^nd- zK_g>qQx`2cZ=ZZ3J^yY8uDpdhwEk#bxzn@14?ZKBe@XsJvbL(mqENHTzKi|G{ysV> zuUKf9V>Ev-Cy6aTUjDu9azI&1?sOk=Plg1$Z?y4k6l`x`_0fMB*;?;@bFxR}S^>~4_K$46oi(?1p7SB@z5~QI9CktE zT&xawkF8J=6g=Rny-HL~+)ECDx#au$ii&+Q449L$O63^L>h$lUZX%2usHE%+zU;4P8|1@<<+{+ z_SA{U)zhyMJ5u|7V5zy`GZ_ne$9Im~+tK}Q8`+9pW>GBgdPjHFyDNU@ZNWNxBa__> zl{7}RfS!I!vjz8B33R639oq>ZrObUUeW#1%rd!tqaDDH{@sN&*6W~7&mHcu4fk~N8 z&0sk1U(J;;Q3JF(1)TaC8Madl-&{0~k4h$cxE1b!5QhmM)e~1@Yf~r?k)up%GIE*Z zaCg-Bie1Luq%zi; zwbC!RNg3owWa$T8Xy={Qx~*b3;xt8qfUc4oIntZV!%e)lk2;Ex%M{+feow~+8?e{e6Rp??-WSsgwc z#E3>~$?DHKQamW-s4mvMp7zEnGit)kN+^sFX_`6vdPJznEui}aU`kfKI!h558|q_* zW`^@nt3HiVt3tN64vNf=X@=@dw!v(^r&r|BY9q{QzQ?W48=pR$Dhn=Vr9YYEy2)IkoE4^X8%_+{Nf|9FMMk^FnpX-Bh|RCK z__-Inx~+WGP;k@_nK~uOge{~Pi$3D)2$F&8pV3DwH%NmZibD`yBW=y9iTTcjYLn_b ztYM9vo@46;h=(hv#>mOsWy8v0Cp0Q{t9fN}1WM1@NJ<6k7t34yR#9>63;|XlrBFb# zYPJ<&y4qur6S@B1wmKgn5RPvf6*)AybjF(xtHodPO$|s64oeB+tUJ{u*iOWaHY+c& zV>rfMh& zQZR$W(Pz#!>L0xYOwm^bzrf9K1O_tD1jkn-4^6?_dsHjt91^v!v}*xZiNId;aaN17 z;#D)u6&`wabFR@m+bGiLlp5$qi#xmZAKUnAB(xv-)iU{xrbv9gew&PcUzN4K5utc;9hxR%m8mt6-@RWdG(=~g9CeiZlkwf~NCmcOt)#&;d75dze z9E$@D?6I?BfO{-+oo!I?+7XnTA(~5Za#c>TBNqHk|;^7oGG^qpP zhu)9KIxwx$3oonG6XuvpahS%wgPS~(xabJ5u)R#vzVIl5ngi+y_cz>hC8nP-0pwgN z!DIXT`^W=Z6r+dfnr7;Vyla78s7_QN)=ocOxl>>E;A>Kzm5)!^m|0_7vPtt)iOvrEuZyrKoIA_URYPN&DpQxnL!uVzhMCH0iBXN0$~IumWs(@K0?eP~_0 zVz3(%sf-;#z07vMSeD}~zuobofd?qC7peU7#n^VXe5dKi1KALFW3Q%i!?(5f7YK!$ z&kq2VJfTd*)}6GZDnK!^P{UJ^%IFO+Ym~KoZ{%j^gu0=Vo-2x)1u8f3?ptEKs1}ET z?Ac2ttM@K>CFy`;aAEz*f~+F8;qE<=ov6-lnF-*&O(rj&PsAA4#+7~(8vvFS9X#)Rregb5di;w}YIW$eV^+J>rHue*OG{+tZUP2EG3qlP_6oAh_$xtRbXcS#T4 zdn&AsgcM$i^GjU7-5nYft+4e@UluQQBX7mU&_;XBKp!CmC9)X>wk2}+Vk38(ZgPZQ z9&+XsS`J)vuE zK&lu&GfwCFr zo05a|6&kYoax-=umqIU^Z#Bop;re_Pqh&^bXHUJ>)cx@0G)iph)8<96Z`#A5Lr8Pl1SXNA{Mro|3 z^vkMV_AE5t-)X^!Aj|~%ZOkT+j;^A2J3(j0R;!T@%X`E2ygKsaIbkZqLzkAfQqDS7 zl70*E2|x}yt-Ur}pEmHm?qb2&KDhg>(S+7rd~l{7x5QOnqd%yA9@G8tGI@P9g>0mZ z5|BdgG>@6VdIQ30cb${f1`VhEsN>?-(n(F(Z&+xBQm%sl}blP}QX1K3&n}Vqm4HW*-p^Dj7R8bfADwD4+ z>ZXQ|+U0NeX04O`Aj7Aushe6S7Fls>ifm+|8$)a~%WlV0);#2bk^&!56|CnAcTPrl zeBLpRYv$k_Go!RgJ<{gQ4Nf*kmB{>Ajm)sGo;$7I%SBKzF|8I(z}F^bYfvy%PAsdR zPPv3__W4;FU93n^1dAvMhxxXZU7=>xcPcwgq1lZ$rg4+H3dFp;m+Q32MQ1|B7iq<2 zNLa$DA~LH&ysyY5akMtH>VRql9|ml|&#vK_6f`9sT~g5}t1ji_TkLznst8#!>%I0m zXb-Y)U-*paKT|(ahbRf$`mT6av0Grx&EtCAG$Ny)-8GXbc6FauO$;1keg}- z*bOEsZ|JL4%kAybkEbDzZ;y@e_RG_WgYuG@901)5I=UwQhragOL@M79L6-IcvZ$ZE ze1t$tJm%ui7bCz?0Y?LZEC;s{njyh&Ko^u{l%@&76nd026r)uwW@NzjrwPdVLFE8GQ(oJ;W~~)2j%)sL^_!p z8K`WJO4X;A~x>In3A55JYf`*TS@Sum_Gw3 z9|s;&q?IyPTl4b!QZ6yx(xe%RSOxJsmESiHu9v#(_>V2ldIst+eJ&Ko^QrG{=kgiSrlk_60)+_{>552K7go@kPXqVBk^1dx zCwkwMZs%A3LPAY_n?#Dqufm8`)Ln!P%8`jFBp>J7Upi4rv6dUBJyFFI*ri7MLI$h+ z+DbRtx)hKW{qAf|nYaH2A)vw3BMelz6!t7BRuS1z@ibndIG z$Oyp0EA5u1PM;np2{OEt)4eA8^vW%+M=IkQvThIcXm@&a7IwTC?L-Xszrho8l;-$% zj^tI>kEguC@`A6R4%B#r1LuPltZt~NtYO*)Pwv7+gIhM-Da$S5udOgD;=H6XG^d?k7>ixk2)gKvG#_{aONTN ztp=3Vjfg^&^P2g5^|+mDq`s6jWfeIzDH&J(IHQcPD#}-JIa1jzN_l0{vtD7}tRidf zjLxmKWlhe1IsEiiB0Dqxyl#ON@$o=I%wB{X|!<}r5Q%L<=Pe6t>P(k z`}r(Tu29&F1*rXZ#v)2< z`-r(aBUI~JWH7&~J;pkHskqL_T(;sm9to%V%ev~Yq-5DzVj)6VOsGvh?CxdBf6}Tg zbpbk_CYDrU z`Qu*5b+IuKyY&1}NzKVst3p^`zG!!0+TpU&%rL@A$TGJ!F1<2DpIwCH-rnE%Ms-MU zPXlwTBdee5mONYr3e>Tk^Z5$Yf6w`y-7_^4%H0W8 zKk`tG?8?ci{GPVaHa&=^$X|kI`gk4Wur+FPTF}C--o#(k@(nma zAnSz#iduGVnu~4W7I}6&yu1a+q2~20BNcZ|1Dgif<$ChtZg54CKMS0w^+OmpSU^Cf zdFS=&&&2i;IGEuh<|S7SP3~ro$7Y+7Y)ZK61`HcZ07#5Ok0!Olg4J--?!sEuKAXaF}nmcT5difAWP0 zE3l07i2G1F7QD2^G#^tWG>|$mD>ZnUVya$L+g7E9u3@@_n%$PrF@ z(%_Kk^?dj-iW5`@U{Cc?`6qYP){98xsnf|@j*koC9cgeHndn4^ag>zFEVk6zZNGhC z0lhzcA#L4%8r?N|V^Y5)v?!!uO6%OU0cJbjzO(G-H}{oghgsgb7l zaeM;L(v+*XVq*P0XZ||DkeIF;?qaj*Bdb4iKqZSt6CNiH)DV5U}a#og?~$%c)l^H~w0Ron$NbyA@d1H^cQGJ$KFS_7xJ z9P~Zk%&C#yhAy5q3ES)4f}*5Ukhh)_K3<(IdPEoH^c$;==4hlG!S6ZbPGbR$l~)AQ!zn&yk)fz)`yC*u_T_tT)~@5C%%8$onWg2r9Im5~ zMPW&6$;~GR(NUPBfV~w0+va{l&gnI4^1p}UxP1>}Zb7Ow)|(=AbcX9D!6-j;$7+N< zsVT+zh}GH<9EE{G%#0F#et>{9OB769?uh;3n3zqa+O{QpvbC!Vq;)^P_Mdz&6Tbpy z%8(JR%z0jQO0%BeHzV`BX)K`YJ;3Sj|6rh!g(^8U5mMw(n9t_;2K>U{VmaS#h4_=8 zW;MV;VlDg8zcnTI(B+DccJz6UULLbF5)oW6k!@Q|q}z|~XR)$P%*Fxr>iN=8Th|Aq zXr|g`y=e<~5;qVg1{3SN)pfvm082qTaZ>A`g5Cqu!;JsbG7VQkbU4lP{A+T1$)Z(j zV%Z7e6Dzz7s@Rh%8$g{(eJ2!Vf_Y`94L^jWBq8U7%`s0VOPRT-7|(0}Q{Uuwmgl_o zmOq-m>)9WvoIxQepqeAc-OV4^O7ol-=jI)Tg68G+_Jc z|1PK|cU5hT%Sc83-7LYAzcuRpi48_+sjz=jZ*uVW`u7q4-g7Hb`M(FxrT*4g|BZiK zJk0&Kyg%cEe}&n9U-gjuzg*-5mE%ltH-SR!PNxb-dwxh9nm+vXey6e}J0qcg^5hl^ z$vczsS0nRZALmSk0GcC@=NXnd9NAzsLt3Mr6lM%zs9X;PO>i>kTEU&9+8)|` zNXI&5=vZ=86K*Cu-^Ej zE!FGSk{A2pPgPIe0>&`SxRcho-4FYj?w3O?DBg?;ISVrtpq)i zI91sXHtIZa7lYud-S@e&e__j&Nvx#Cw?o8@$BxOv_`-?qNL;R&-~{$|y4f8xJ00xt z+SV-6;QOa-B<~*U#@zRDQdcC;*?PP!m!daTL#hmk+?`D@O)>cC)@z~LV+k+5f-QSb z7MhERxnFU7A(te*wbh znDB3M?V9aCOIl+fTbi;qzLu*5s)e*uSr_;WEyt)@I;RXx;CLB{0`F&pnJs#(eO&1Z zbWUi^=;{gSmB=0=@j91wxIuuU^vR4WZCu0Ygz7NR;EEsc@Ej%(ybbu^NZ!^Kh$Y?F@%GuFtrS8Hjz zcS#g;pRfcE6`6kTPsemz^wA}IA|=KSBb7DyKmbnS4b$=+iO3OCuhM#$T4lI!pIpyW*ZMdgr5jWx1zN02Nrq_b&jty%s)z~P1)9q-fE{qdRX z=i~&RdX=7Nf!?i_WaFgrZ*%>k!DX{f?Gg}V1kR5NjKAEA(_NU0)0|9y=3qg)O!)KF z0&p0`Ug{!mi5>WmrPA$SJ<9Jc?6k2{RHURjttwDI^Sb>Mngl&@=2|UFg?-rN=$FgX zl7ChxhkQLl^tOv8N!`*g=+jiKy^8bp@3gy~#g$G^FBLkC(MIt=(X%JfvsNx-XmE%} zvMzcFv)Dgpwdn4Pg$Q2i3Bjnk0a3Iz2yapU>Tbz`mvPvi{kmiBtOP%vF_Gt1xXqMp z!sJx)L$A$wInqKO6DY>&we_`TIbF1(pS{J^_Ok)mqIMdNT?AKRUbQh_K{=+ETFFCJ+A-8d6LEozY?GvmwTwO{w=n{X@!QuxXV zgEV9RB7H<+w8q6g7GLfst_x&yfXG}s-N9An z?oFivI&I^cS_*Ald_h!CEv=r6k)bbN z)srvz63ks#vizY>h6Isv7)hCr$vLd&SVDxo79oWYbEqqnbw5KhK&4_**#vl#toJjD zDy(l%vsz3T@5((gvkqlaT+J-*`o+gEn?dq@9qxapb~Q65_{AZQyd`P9@ZJ*X5en#S z#^o>=#Idjb5z@g{77D^<80_a6 zD-#IfSa;3N0gpTL2~_hneP_#X;jDKNKz`@oI|$RzjCqqjN;aAF$ZgxCEBa@_enQCV zC0mgmMk4vU#1l2;CRBG9k)c=nO>6yjskNt!?iZD|Fm3yv#dYm3mpjF9t=Frt&MW9@r<+!6FMNagWGX|0yR?1&e}M{_nVu@?!+W}+{shEZK&^&FbWx064#p|nAVdn zQFNgh#N)r6Roo^E?rK8^Ph87RPLN@{XgXL6879A8D1`k-X zSgmucGg`>3e)gS^Klc7i-&PqFq@2*t?y4dy|Br;nciTeqJ#5&V4uT3Wt%b1mNy_OrLL8CB{m~Y;u3F_M~85$Cr zNBG49SBnfatql}C&7y|NB0RG@qWuL#?Cf8FCj3ge`z$HoL-i`}##r23E8|Pvdd3Y> z3j_8ojE;kEd+I-l)0nNI#$n2H4e#A6kBG)o4wl;34^FDSe17G1MaSsV z-t@daai?iTY7*=nF2v`BGDQI~QBkoIt#M`HM}{c>>0gYc7+fYTyq*O4vgY>l33Jfu zY8mh9W8pHEZ2N#z?H-O)2bK2{FqU|KwU1`b6Ist@y495pwfe!X;(d~gOEDxnL}n>5 zlWqM{e)Pb2lS!Tm5615K0cXdRlr!H3YlbFl2TQYF+!I_2m~Y4R&6?ya2i~6YPfbn> z(~^TaI}Y=UnwUnzuH0rdv0(k{@*nSAKRA6D>&CS77}{PTN@qQ_D|=p;e|U{Eb15xT zahaxZcFZ=j?BI9rwR;f709y;Y?+0p3`te30-Q-_GzD!Ce@TD|f2VlIn+}r$CTqC%| z82}e8Aadqn4X}s~k{>{%JzQS@>}@?4>1&XT*wwBTgG{ROzRSVt?c6)2m3)? zmJ9^iTu_HgXg)Ay>Z@OLYn>r2IJwXE&lIheOQtS=*Jil;J5R(n-_d8Ax3^|Lo_;sU zFJjfmFgS&#@-SdZVRulk35_x@VrGxjlt?U{;!W|c{kmIBdTEe9X z-S$40YWPLB_A5kDHWNM42H@|4@m`()j{Ru~$0ftzgBR8@fMZfsL2_G@L#0+U!A>~VGnN}5GQs@^xX0yT6%YX z%=HDh_!Wb)B5=dNk*$VuEO71lY*FLM`0ety0li)Gj}1QV$a0G9Mp$D5&y9WPppj?I$;s>koD z9TXa3qYCr`@nLH(y*L&46D|oCi+M3E5O4s}?;l_@WCvcY%den1sdfhFH6bBK9Kj$) zn&A5&1Ch38k~Zp4QEBGu2I@&Ni)x@w6|VN2r`vfCz7>q6}nnNG!3r_ zSWFO95);@n;5#;_!Y^s(_KptEcbSoJY1xm%J( zXec~w5~KtqQnfai^otD9Qj1Do`jGiq0=Y|bX-)BuVW>31|_wL=I0_EX&zGNkG z-vHw8|D!wr`ZUQ{t@UPO@Br79Ibq`d0C%J^z8xjN-hv1X$!0IsD0%B-l=6vJ_OiF@ ze`&j_&g7Z?V~VuGdzpcztehKXPn|8#9ei@1(WNWGmPCGT6J##&Yw?;<9+aa>C9Pgy zWGo`_bXqMpPb9+N^yuxr6_u(TjH5xi(@C+GIuB;1AE^uw7)keSVpXOAxwD3!8V-wm zrp-3%K*&1;JBvD7FUOGBC9r7m;#~j{b@9L(!B4H<*!`oVcmV>9ydV%YID0M0zm1cY zZ+KkU98Kuc?3N3xKmUwbzxa*W4)8Fdk^h-TkJ^`fvKijP(TP0T;69)tFg|pSscdaP&c`D9N$b|9J7OjoNRu3}_hDp8 zea#K=PAPW>;Su(AVvQ++A1i49Ezo)e=12VG+Ri{3PLA=t@wo!$4Bd?M*X!EmEIcbM z)36T?@gj}uZltd9`Jq$G58To__fj@wK1J`}jz^(_h8}xsG6?|=&^WIS)p^nl%H$2$ zp_az}*PQEBbFWv*%{QKp6*AZlFlC!Z35R$J3sbq8C+3KgC&c=eb33?4?sVXT8Ee(- zmqkZfKf+553$9`kBgm9?n2*W9^e?1`JwYItUez%~?%2@oR8F(_G&nM#OQu|w6S>U9 z)D)^Z1j)8RNfY_;QuAdkQ{1=wO%c>1BW-Pn-X>qISTU}WS^o5!V&iF(tbqs}n}Yl; zLYHjwHq5n^(w;+dV=7LUx)%#q5+CDGaIec24_TkcRdP|^qP zagVB+mM9N1WmD$Hv6@3wyHya`!?8Cy9lbs_u6f4A!(-IQ=s)u0M+c`K3fG%~Av%Vf4PQ?XsK}$V^P*XEwm5F7Iw1j%d>NO`jD%x_=-1MX_IE*`gvjw7CckR0alZhf%3Lnz zpnfazBi7kVGMw*a*5I)6eOOo6X+W@15@T1_i*Hb#g7{IP;-Jimr^yuO@z4lm$&{ii zQAz*Wher0~Glp*351IzHeb1j>P9osdkka4?K7ml^Lq^z(m{drO4>Md8@4V;Qvep~4 zE6mbbH(sT-RQx*R$#}j?D7V6t#svs;4;piDTj=P?o}|QlfP0yQnl|a-k z{}VJu4$gtbcn0dZ$LFq-L^6E&oQV1o+InfM&m(4t3d1w_g`s_w^N8*%95lM4uUkGmR&PXFqrq!7Wr}mRbN-8h^q!+e+Mwz(>GSRb*l4@g z9`_6$FkO*8$TzugW2?3aWT?aBzrW)-hpn+X;uW(ouLD5`abw0M&kV6ECd zu#ls-q0@}+KP~iqk2bKAeXbG%hZ2@l&Bti-rgAtvHbr}UPIJhKNUHvgqAGCGV9J}v z60A*1-`}*dRoUJ(+WyYkyoK0pz*BEf;j>3*bFjFfmE^XH=XjBv?>TugUW=~s0WIxj z_nDYTNON_NmxR=r2Vq%Obi~&Gkf>m&wG%^c?7!KQeepA%8J`d|nsJO`spRHK=u*|? zc-czEai&xz_3rOsnheUF#C~#^%bL?nV$u=ejaOr1%nKzJW~R4FWl8&chHA9|lpDDq zhk0^^bQ$I2bI-D4P^z5QC*HcOXwRDp{ec~K#c1QcaT;l1KA1gpydSu%unm871T)h@ z^KGd`vXOwmqvPgiu*6hCws!6iqZ}4nAnafDEG6t_U`l0lQmAXS*d`R#SL}m%# zcw(Sq@z4}AC!@j;HJ2}=mntW|SR>!JA$69CWW{iYP4xjKwzU1~DyArk@`<|lBR0c> z=XskmQjV>yQb?JB^>4wiYKl&SEz$eWeK+}&JeO}mgZy$7kqmgIEdKP+*5Y98FRtLf zUX-2W3~Ug~zx!YAQVR_>Jw|_RZFy*xUO;Ej8L8kFd6s(0jrr9fYuNtv7NrvZ*rTfW zwF9}71a!zmB5q-YVDMLDW&OXUo|G#UOIg?uLrLWKD!suYKk$ z%VcXrtf4$}1}=U+nl1_1inCwn%veIy*LKQ>)000I;z~G9RJESr`b9xASjXv)UOR1| z%eW=Q3)%r18h-m z^Yb6C9jH4#gj_Y#C7fk`nr;2iX=8Q#Uc4v6ox1xU;vNR+OuoERaY;4u+{y!sD=C{t zfS5&D;9~0DJ8#EINmG0Etq-3+PfNf&fux!s`ravAJHX+e)-llZC%v6z#UqOHSFC@L z@#?f*1AFq&>qlp-v6~6KTb+&FoWj;u;74NmPS(Gw`v&v|lyBO22mLC_l(^?E!%y_} z5s%j`!uzY5lOK_BP)85Fymi1`^i@HDm~`eYvo;6)(7*s%aef(LOygdBHeTx=wo&f4 zuh{+Tm1AC3$QS2Bj#xKrC&>!l>3cTv${a*E$809BzD(6;OK}f6=5l#y*p5k|FivY_ zzuzDo2~k{A0Zyir^=>lMe(Sh#9jLUCr5-5SMy##eEd|^$A7{*)FS1nokV@z*@dt@{ zq$W28RN`Z$Pu-t12Xl!qkA1Hmusf_i3+|Nc7SNR1Q~>jqisHPLxs7&f^5j8raokkA~N~2T{lW;#y{P2DHi> z3+kieqja*K-NQEv^ zXk$ri8~osUR4GZM@qt?N6ei7jt?iY#taJqi!tsCSA-)x*-3X`ZFnzLwTUl6E`KQ}7 zs`L08G{q*F?zNa64z!^AlAiw?H}kG9n!H9Q8LOTX70iOiEYF_U|Ptk$y7dfmJ2weLsse-wJUTiC2zZ0V*nuw7^%Q~Jc@AbwY$FW9FjR~I{ZC)ltR7et4F z`1CCyap!+R9(=~=gX3e(yjdK%kZF}jsvNJMSW8F+n z5BUC}nR8E&pw|V25uKw*a((?_KC3WwovnM~XS|Yu`GKByrq%@oA=+RC`7hqtFv*pd z2Gk`PT|2h1iTI@{^gPB}C{^;?v#SHXhHbc;-}};QU1|FVgx@IzrphE@H`7^nAxd6m zXf)r_U*DURUkYL#+FxKG?i)e%?$ijr*4>X-H7FZ1+?s{kQ!K=}aP2tL>^3$O0R->1dGPpnYFS9cjhb6K0d)x);wdK6k6l8ERqVobf?#IfR+)ZXJs0+S z7;Wqw`vt?bTC^Lm8(yo-sDuxd*^46}m*eFp)0Zbk9Mc6e(v8eTZO$_%U{kkRF}sVB z`)vPZOq5aE5lhqUlOJZ*`MQ1o1yzj4TsC%cmN>^}hno`8X@ ztDV-Q^1pGAj9y6{iaf(V@&f`bA`rqIbiZ03W;ac5J9)nBy@LJRof#jRn%P+kVVLxq zu?mN^Jk#+~hDO?0WLr_<&!YGfijQ$ARe}7`nga2imHf_K3MARdRYwi^%U%H`$Mfx6Dc_ zFO?n(H)&^iy}ehQCqM!($Fq*ByYxe!f>6?OuZ~Nxc}%q&U_aS~);mINNjs1Y{ea&&_aN*xH-`V@p8s?S zbYJD$#_tb|<3OtwDU$7(_$ZV*mJq?BuuWxhdc59e(|ws%9kF?JWlcX~)h zd?#nRE4)w4&-mRWvD^4})mMh&wIsQ676z>NDp%tJ z)jAuty6|{Qys7PqS3Hc2jWTubqVbEH`WZ~RY8QpLZ`qXG>G>jR|N9GOiMd|ww~8+j zHDt&oau?1EZ`H0LrYyzhaa8Vwo@P2xZz(xC4}2R(j`+@GD~LvobAyVnEvW=Au9V@1 zfATw#5qXxIs;$PT;~8{|anZE%8->0he5dtMgS4ckm8m&^Q#(*A%0s^h@8>wLGek4H z$l3&QzFv^x%@}SZD;nVblSB?=hz);%bE@84`l+qEck9xi70OoB^gyZZZ8e%77;v=% z^faWq=N=>uVYd!-urcfr1|QB?2pge;6Vx5puU7m6LcFQm9XQAqiX#^1-FA&nYuy9= zE_>XS-PRQsQqEbj5$D?@q$F_Jor(^J{OGs%E`U~y#|J&DKTQ(*>mk;SrBuO}$9Eq* zUmfBnITLz?Zx%?p13RpqXj~Xw;USfnyE7pBU}4;&AUUjEJgJ8Vv_IAB6#HheFtBG52^i#4I56vkzafE?*biq*xprG!@k@&6^ z`{)0Br3Jp{20$@8$Jpya-bZ||nOFpbzyU|$7+Pz<(jhf`KsBD?Je`(+1B-{TQ1*Im>26^HsZJsJ|W+e4E@JP(T zO*PG%`WG70{i;uq-+lW{cNM&@!HkhGa*&Z&y=*r15?X)~~i^8u;&n_R^^3q>Ozkqu%7o}%xM!b#n9*Gm^Yni!u zX}{(~zZ+u9Kl$)l#%>KsHsZypmSQZmg_4K2T%IZ}FOsybVivY7llXWS^RmHyej^Lo z4g*@%&+@^Pr)rU3gtWTU;kfmD!7Oar%*jT`x^&^G6HYskUmI;@Hea<1W048(VXvk2 zyUB6q-exM?pR>>!7z(EtQZ>(pS~xuV2-q9>zG-rjA~&h_p78-nwf>2ALjWizeO%&y zSk-?}$rAoI^Tqyuk<3)|^C$cOU1wjh^g^<5d`|^-D-JIQj#Pq5BS~7d8a=L$Jx_{iM3%ItJooLU-dVaZFd-6 zY?S{&CbPquA-C{=z8;^vND!F|;Z=L~IEs?kLZvbW#L1O*-56edEo# z>0>A4low;XTzmscj$bv2VRiA<%)ihFtM@m6VfQV)-g*@~cl z@$5T-pbj#O)rvmMdJT=I8+4VpooeT3ChC%SvhlT(>&$V-Q!%13F087DA3LPhrI{;W-e=hL^u$mWTF z3G$tuwt(3m{xuq>qiV?1V)qKXb^H>qSm^MuDDCUj78Tf!(!$pp;I*;m=+M4qm~*y^ zA%f*t35qIb!^c>z&qV%=i9V>{Z1m5ov{S5<8T+2gNnNE3eZ(xXDQZVL)^;?#s&T>KNzjx@|&%0w; z;LG}r$draS)s0Uf8ulI=3JIR6^hSNujgOzO?voo+CzkIS{*cW-w|PO5xM%Cxv&clN z=DDDMv>@Wv%o-OW=R2;;bosi_!D*a5bj?6WF>AoIDLuN3%nZ<2AF|SWI$~>fg&kE} z$?@8n4c>gvw>wv5@p+H(SAta|jW9FD8NuF*mXibMi@M}(xDg#$wY9D2`KLy_+sD?e zs7x~d-AcJ;G368uyfNbI_E7 zu(DGrEPhfbh$P!okIY*A>V2Gz!!DpMjdSz6AHJ}O->A=Kd5qoS>g}?54L=?BQ65t+ z%66yzdm@yrmUNT`Ofo;KSsS)vBXhX6wbrAdU~yYrghtu?byMVK>F5r?WU_A<@!8Lf z&EH-y(85$-#rfp@?y2Pc8xoC)H+@Q_v2q)qy16E|viwvVp(U@{uOg}l=V#7O-7-^j z4otkb;QV)3#se?weB~(b z%`PhR+{xt?6s$^YEMbYC=`^!mHA$oQ)3w#ti+CD*WRDS5OW7fdbwtQ%Dk%VV_l7&> zu4j{WKHs{F@8{CjN;2G#jx-voT@-jXI9QjJ_@5qsJ5Z;?t3~gT8;pkPc)sgj=GdiZ zEwehHrGN%Q%Qq0UJo_w)#BAy`IgejM!ZcHo1?TyMaF8!eJqk?3QnqffFw00 zwcO7viLQw9tn$3on0@cgBziCQ0mZi>u#@ML5j43*Kwh(Bns$5psdARJi<30YHd1jj zC#-{`rfEeqwHika%iMjW7iY#ldJkHo|BUPE*fFb-Em%Fn1OkE+?ON7TYqLjBr+NzB zdbwhT#txOOpJ_6cJi>}l{0?_SD_51&tN4P~np7t^Dsum$g|`4)S3lC!q>coPn)=&{ z%7cdkiwc0sWgjh_<`5r^HtD}TAMM{wt|ziuE27k%oA&FS;9WB~j5Wt zmzIoo=M09tBzzw|7RSxs%DTL&ecvDh@Ro9t&`jF_YCf6l1!?SSqJE!XQqu)| zoElpHaEt%V+q2VVoRwOdkqnv;w`uwv$1!oSh=Vs|QioLOSj}`IU1gJ?*Z$rq3F^L! zx=nq=!fqzB4ES0jC?(Ec;}%^4HuOBp4CrLDL$sD)7GaITznA(DtnGCQN;y4yy?z&` zB~vUg(^AEH^W@fdT!rGpA2ozm)SR_x^otO=)LAwIyH2<(DGc<9Q{g?rh4zpBFv&mt z8q$fChYH%+CKR<5G79rdFEV`y@0uQ3ae&4yO<-T0NW@d$rr$`sDv)H<)ZzacbCsV` z*~An(bOwe;OLR|82D+CWFOqDmZJdx3xxxnJ*Uo*79{J`n#>UFO<1si@RRHnfZOO;g|)kHCIe;r^tBJuGr@{@ET#}$|~xy~nupGOtd zA|zWPku2P;zI>wGp!N>dzbw#s;?*~IfUCJYDyd29D8c_lN(@3h>WrM&>}VywJ|49p^iSM^1KlSMkR zt?JBg61!W>>o)aOb`Qrorbmh}RJ89as8er%N_oeTqms%-In9q_T>OcRWNy+;OwA;1 z5IiuHym&4zdJ8@M4ENx^3^sc+>ULp6iZ2E?6iIQQ96<>#(Z_VK?j>zMS+TzZCKs0$ zk{UC^Cn#V`fq<4O%g9<};b>!@xeZbjlNzH^99Q1n~|9+Gc8GUnL(KVvvnWRD+Fo}l@6ty9B%_v+*D)VtH&TkETN}wsO$q< zIV-h@kQ}}B(knB3TTozW=gO})YN**Zl#l*T+%cC9*RX!E-0|$r8nlU6W{w@AZhM$f z;g;`9ZY+4BINq!=h*yk%bY@ZS4E#}Ea^T>$I;ni_&LUX{MII2M{Ec$h04Ns+OZ>mj zq#aBn8HfqHGD&Ux1uF&0{EHt{&;4M`84yO*(Z_R{-%6js)s#Fes#xp_OO@Se>U3Cc zB2K2Y_v~#$J((>}GpQ9fr1 z3l^DZ)<_lD9j&d-7;A6QDS2tvaxUE<2r{I{raxAugs=oBVL0F_+0zfdbZ#LKutBkc zCcikOpC5QGtPw}aVl&Hq{^Ggtu@YZ7V7}DKjw*2WnSI}vrvB6){xbivJk|V(U-Qtl zfV|?Tx}LjbqCPWSS7!VBOzULk$YaMJNXIxn0?YGu$|wlTBQ^9EuH#0u^o%;i9vkHh z{I;%3pO{GXsU4Y#=8$yky7!uWKc3kv`Xcqio@EQmR|+X9v2O`8!lD1s|=Oq=hpk*$`Gq3a{}?USe5 z?0ZfugEvt-qqAiO{4RSHd3kfrnpWix-mC(of99D{OF-VsW!C&WYB@4+zdaTuPxh{E z$V5E&U}+6etLlL6bo#i-`nk){I5eUDecXqa%T)Szn}9Nu5S;95{VJV!U7*F~6353H zt~L3qE_h$79~P>yfUXhKxv$f-W-EW8Q*^p^vq`L_J`J39UkO}uPHvP!4e2@Gse?PDE6`Hu>P2kryo=DJ0yRrTwng%3gZ844X_HFHK;#zA626 zw|OGdTf^f_vpZdaQHn>uVm*qUPYkWMZNcje`c+Ik%|`hW?!!n42SW1Bv%qG_yW- zH+sqLXC`x&f7Addzqs&u`-`Nn0P+7eo&17RsuEYIiyI%e zyQQP3TIok}do#M?qkYd||96f($@C;A`db4ozhV;{4BiB0W=@;bZt)2TOP}BlPMvXz zm%kEAM9vPlco8!`G<$_UcS9IS#GqzHaT-CIwU@Jgq1M3X^e!DHBXiR{H5hY&EJrrZ z1irKireGO^1J_e;mP@9KUlqG!7>n_{K(XZp2E4B!ny5F1VU`~HRqB>asA*TP#Lf}G z9szmYKWUOC*xfC}ebJ)UQ%cVL1BXD`bYBqa?~=5m&pcgrTPs8Lrru*upwHKL8dv+j_Q3cGhS za~VTeS+0a^Ek<6Y@6ArQDr26}gfX0M4HPZC1uhWuf1Ka~Z>t7GnLm~c(HeNpRy|hq zcrBK+*z9P~0$tF(Zi$ZUFao!@rfO9MMm}SJzqeuC$@-*jBJ@Q0xj!)hIk8jbPmPuN zt}C$1(-M=r_U1!MUm{ARL&0JTCgqFv<=}T`l*4wf4H+Un=J~XB3kq>fu-%FvA4*O7 zv3z3-uv&Rj(OZfr^_BR%5In!ZA;hJ0rwd@J(ED?o(N?1`R3pw!)}rL}06mQ=k@)!N zk#z>k?!Nj@QtX&*`&vmx7JMVK18L;3r33<7j#>2lovM!&5`xDp&X|VUd-0m1wM#ot zYon%xe|Z_#6#a(P|#&1bSpaOw9!vU|=>d?7=e$Ov20lcoxoSvjft{kBLTgXdGtE$E4BLKo9| zAE+LnFRy?Be{@^<>f6e=1ZvrsilV+h}07GjRH5Sq}pE_DXE z?w*ocT9zqAoO_%T0dVd)!oQTSSXNuge#PMj&jfz4^#m+?!SY;cHU&Mffc zMYjI9D(`xrd+bs-oT#1hd<1aYwQziGQ5HC_<{cn1uJccn0`&<7KYGSgUO0wCh+R$$ zF#~T6?dv)_&&sGDw82{yoflZyDJS334BftIUICpB!*9CbM)8XV(SENsMat8{k$v{Q zkmrMc8x_YJwZY$&iN@SnV#dk{GWXP9RnM37_4CUloVrk8pe)yNlZQ@WoNoz*PA+3& zzp0*-ZnDNgm1|Ld3rmt<3Xb8T+pM>I5-Jd^74^~mYjVh?=f6Vw$4MGEaIB~~}XzLe!&bBtOqloYS3gbx2f^Bg}eJmYnw&1ESXGS~R zsTBopT=cD{Qur>_*tnE*+wTsAfUbg)gT=8I_>VuHV~eDFmbh8g`JaO3-EA$Xj$`H9 zxty+PnUqf2=2-r__#C0F_meeHgwTm4c)*ug|BXeLn#usy2xh5|YU-J4r=oy=f*!aT30*7v=kq#hy$G@@#%shF)z<$OFBluK;X{;*u zIafLuM~ZPZX(v> zOz=(Jun((XDKoS4x33fE^>^I8NbGyMtKfvrQI}>iZiF4pm&faAmVM#WyFU!ERc%g= zsoNgbZ=1tGjuVz?{A!Kaq16tlR~5W@`H}-#6Tj5?Q7~xSY<9~cZLp5$pVPY6Y+STz#JH(`)fRV2eS*+sFht;5 z?2Ehkfzk0zLk-CtSO8mCif;?|O2q*acNVCTw|$U6ok;nD!4 zr=M80-@m7TPshzzbU>pwkK(Ly?^Qc6_i?e1yS+f%=4%LkiU+YT=JQl9?FKjhfuw5+FhwziY$uT}E$aN^Za~2nHm)s?lnsA`?6TqQ z26blFz69Wx#{Ga!|0e`j`zJPwifRtv*&|PXOFfhzSV4Q_&{ncsue9hYjr$k_RpSH) zKXuTe=O`ps)aVpYv9C@v;4B3s^PLNQIG^GU4t}rv)>MK_UmcMd_;=}wf^r9n2-VPg zA42B}4P0bfK!+Iu4CCVsTbF0=e#)yzPL6eLM%}a?R?ylDIv)a|dwaN@mVgx3`oa;iE;vP--# zeD6=LM?XUIB%Dd;yuY;%=S$Y|BzXQLk99N{$8Og82dAAM03$*t{sKp1#pkNcdulTU zCc<&EZR&p#32Q%}1d=~Z&SqBqe7VR}##eVK;A0TG7B@Qq-+>QGyl~QeGxmy-3XRrC zdi5a@c`;VxP$%0aFR$95uKLHLQJE93qs-7$hpVR+7l-~J9B_UrK_nXOF3bAUYfb)i z)4NrFmcIAub3?{o?GD$&FL72Nkhx`3_0{D`E{VLW-BFTg(m68uqaz$&%a~LKS}>rpDJZ&3Cbw9I5vj$91Lltslq;_<7oMVa9_c)`F$?>BF|rKTn^o z=HnMf3<}olo?5AK^xDXwRAh^dGORz_*<7*O?OL3mOBa^HFQz|+2 zzWm9K|NhA9>pv3){(0hw$lnp|?|*#8`M>*kfh-WxS7ivKlMS?D*cwqVP~0I|t-s%t zlC5ERox<7if(yO%-xf zE!8X>GwPgI21ioc|EpT#WAi!l|WeZc#f4oLgFD2+BDZSzCUIlEs$d4d8D$bHMwl6oiFRWf=A(hJ6%HmB8-J{hj`N3#_lhC z86YDSKl7z4oF&>>Gtou{p*#GW8(bxz=T<;^E!wufh%NY)W3)elms8~IYPx+J-97Mm z^9^1~di~daK2KGfZiYw&+PYVvZNupGkrQEeO|ne2k$OY3Xj+Vj**4UCGkh2z$e*rZu)QLsGMGg2fg$1$S-e3{uu}8OdZOAj72sQgc z-IQBav%gR>m`TTr=RG<%&>K(wzJ{UL648b>MqFHjvqU92`BfGO4>)A;C<~SZfZ}`h z9+~(P2Mpdk(dTg|V9T0H0(~1K!;%E-d|8yXlJYmqPh5~@**<*8lz8X%rF6KOtoA6O zHqRdNOV@5wtuAkmBRc6i1der z1!y5Sk+RS6xdj?f=?olt{IM$Kqj9Mc)5H1q<4U<>hcJt+Hq_~}%C=xKJ{kap%{H=T zTPx30DRkBq&y#i3&(y8=I;97iZ0!75-u_<&6(-Nx8}Fl3gs9!wpZlf)jO_3ct}JX! zmrWh=1?|fpm@aH(SlDtnq@w1tRvH_Jr$e{2{O6)3dZxxXN&d4ymEf;dxT#eo`sfRz zTCwCP$3ojA(X^3nZJ0%DWs-v;OrwpKFLYfN=ztnFG>?8FUpIlA$)s9d`7+THZM5*n zw&8ix+mKYRh6kfYKCT4`Lhq?w^Hba}-2M`TQk%L?Fx?TK9-E7xCbQqZ|%yqM6{xf;TQY(+FHy`xq~URd0Er6tZehETKa=Uel3!bF{rm= z^E5YE&LEYmA?$ZT!P&#A+Qow&HE zs`GPPoII102sh_*0VnhfNIi)yF!T7k*hJRFB{sJM#9Wo2QSQN_Dst?oo;j+iEpoXZ zJUQN~rK+jIYBbA$q3U7l&MH~E!-s;2h*$1_pHV(cN&U8M#-AX?MX`HNeWPH1nGE+5U zQT?1S!R0S%hj_b_k#Zw);KJALtLX^OK4&3jy+Oy_6=mnO87*jb&=ZYZFTeE#9ikqp z59akeL{?YqwJ0ftvcSW{xSwf$V2V5moF4sW5gKJ-%ST=1RKj!s&$FhO^k!>52c%M3 z(B0BmmfG{GDXzy**G31ID}YmB);~bZrOyss_igi-A*GQaL2aC}vjxRK)0;NP)6n5L zXE1CssqMjTg7Z%Q_r=NaX;p1~{g{k*VCKSNQj;{jqgtBCrID3X2K|Ut1y&mgCBSGr z>K1MI4MW1f^+o)9cC%!xnb3m2_e%c9hWhkd=#S}}{vQ-A;LYlhV=G@MY^swCqujuh zHJD(TpCVIdT|%@X(h{R}oTB$VHX3){c0&eRgRc-km=o>8yE8oQBqB?GCHsjm;|Q`f z{NEu!Y`8)exKIWf^=|F@4ibdgr0iv+mMy8YEq^{E_ns20{qV}a4aCO++ib}QUnTm~ zPY>Qdiy44mMtcX=JnaigoBgg-luPXGh4tJ{a*dmj{3!y*+)f)wu1^ndiG zRW$GLj6AC}9rTOt{jFn5+Xp?|QjCHpM^7Rd$TQzHY9~Su!6Qge{^&8j;Aswt#(r|c z>ox>t+U)#=8DFK>o=Uwv;)Ze)Y=U6R7+h`3u=v9S%vKq>Slt9 z8q2Y+T{&uOnOBps*Pq@3B1Z`+gFy(#0e%r`v)j?ScgU{aeO!mG zP?R-h<$XCWQcfQp8Zdg95trV6uQy4rynf-#$T0PVGY}7)1XHGPCO7%9yOB@o`&kGIuBXwcNkd^xmyc5C;gPTmH~OiwNG;?SXy zBQ*F*MFml+mR~IC$S0L}qM98E3R~nMoKT;TXt+&U<+J6#(iQ|L8?3b1<_?=SY^}-y z{I5BhEK)vV8#X%`s}H*AOB>G=qRNy{DG;c=Nu^+usHs5-w+z#`5?Sp=G@tSgg^kC` zbZMbdC+;U&jug6^>s{I73HG+rySZ$!ImM^U^HZeife16njR{nU@0YwvveIgq^;CnJ zepc6xyBJnkF3=aw1QnFyKiX(Y(c{fnP1e#x1vKEe%&p=B*%Uw5(e{?E)*PE1U#P@) z3rCynhI1rHDB6T)7+r>rM!HuypUnWI^<{$1cE-?{1H+Z|0<>6qMBHa$1owKD>_6B7 zjV4tu^2+Cl%kRf$!!bD-%$R~73iDH#)UE?&v1x81-^J5Mo3I8y92!4w+Vo*NIff~f z`ShJ^>A&2ynfJjRmE@$owMxV z;BVmrz%-OEpJS*+sBp)jhp9%jnia25U@+J=`Rc;HX7HRj@r7wM6iL5LxYnc}25~Y2?P?@ZDZ};!QUfIA?d^L9Y~ZI9Knl9(ra=(ce7V)0|pnD=VK7nI1Uu zATBIMdp?O@Olm8E$F0?C-#LlAC}Oxr--;^nPL?XJF?!551O$zR)4!9WlOJxl0Q{x7 ztWmm4(@l|ewll$1hBvnR^|`jLsmBHnm1b!aY9p&E>Ugny3tpql_Rdu8!`rx@h7R@Z zS`TD7FcDPJ-jUN>e5cjt@2RPqE75XrJguf>vnWlruchTZD<5pqXSCBsO%<n zlw6AFz8CS2k?YC6oYdu=8)_-c+mi;k4eo`PlCr`ck@2@Tt%W+Z4d(L8tMKE$k4loD z;u5&g{NZ39tA(yi1K>3xhc4<^i9=Zw`sV@^|H?Lcu);MM=avIAU8-?3p{lfDvcAIKzv;1k1^jNhaQJn;cRZ35;gf5ocCp2=&8^;WOj2cd;Mb0bdHsUTV zw;e&~4bJ%yAl6ezDtq;~)J?f@!p=&4<=v5$$c@ zgS=|nibPK(nenK$88#TwHCiT6`{lureJCGjS-QjD9k`2@)87xdhI9BfQ4Mn4`ekBSN{id+8d6wM+i z9r`PC^;OARya2x=DYaHn4P|3lNyaEGdY{kA0_w7V^_R$-$CsV-kF}ie+|0k;GkBlm z%EVM1h}>Rpj{?=dhasDPrSpMM+f#Kxty0!rLAZKTz*3k(+vMagp$;BCqq4s!XU!;XR6obryI>Xx&G(o%jmQ+< zZEq5~#1CIL^oSBJ!Ga;3-2X<#x?J4s5r&;m^`h21r(%;P4TA0_p+43UwE zGhR>YoI*Hi=3=erV~#U2ei^h{7IZoJaRgsA9dA)SP&V$^V@771NIx{hph4t|bYBub z!&p*N5c?S!au@eAw7A=y6P(oHWU!Sqi z4)BBTdC(B>7S#D|G{?aczlQK7$-ya)R52UO*GNe_Io(T-Q}pYYKG9yOGP*@dI^j^G z&~WeKY|<@%)F(83GcO>InrDlaL*2RUl*0?MD99&xl!i~T?GR6!&Ne8KJZ*5m|mH4o_JiHM&dE?75=h0B->2X)e;6v_rxW9kbe05N`MCxR*;}lX^ zJ9imXzNE^c&5P;(RKK}j7#go&-KpnP=KEZYh)4j0tUG625}Ytt!t&T6x5tR;;w`BT zc9r+3u!i=cCN#0p(xgFwaORPK8H{x{WUG`6?v>WB{=LcLl~>z#NB$qH4w7Otby8{F z3by&uN~Wn@X3NMLYM3G)|0%mh$YEW-&L4{& zYWz8PjcCNa)tT)G`TR|v@a2e_UsG7OBLEiQ@>|BG*eAN+dq48_7iw;U{08UEGVv}02bLpWp@8_Q8db+zKNUevaATD;FkPHuX!a{u~X+>UtWEBPI3!37w5zpz(v z*waQF6TpUlL`#kWI4GsJF*N5-4*4z93F&=HJ0h5T!2E3Q(r@RiLo1~@-~ad0?Akl5Y9A+b<>wwa zehP7&-IgOnXh^#zv^mj_aqD60H=`?ErGEnfLe|Qc;aCNo>+Wv+s0$9d_7P+$f9F*x zvcS28)}`fecd*Q_O2aLtQ~0v)^eGp%Nb9_cUv}UQxu5_Jj^M%MWt605|4>R{W%Ac^ zM2-|ops|hHMyU#Y8#eDhF5~0C&hm}Y7A+cyJp;@vOaemWgw-n;=(W z!ndhyA+kuxRVjXNSP*)~`2t2D_L*O8aQ;1VcFMSj2cF6a=NmQRR~gZ}p*2RasT6KkwoPkPcBjoC>Tu2pcn8YAU&`xi<|70mykjUZLt4(98Ym7g*d!XbqAr4 z^dX;}-6iQ+9cTGI{WgA3>GGF)ky!5{jCTd32ZXUcgTY>X@3!3+*eME%NHJ=nlH7Te zuHS3(+$*eyuE>G?@A+T*7AKQ4u2wA&38MU+o^Zqt{nUdD7b2WrHV$swgAaSy^^W>P zJVJ%ua2IArQm`;And<)>^w1?v!)J_E)#x9Z!}Gf#pP$~)U|6Nln^H@0`Y{?u+Le;wmFYKvbNl|vn;s7T_Z9 zA#yz8cI!(maI>>YvzdQQeC~+Ewu7!~#IMZ1JTp57ty(BG_Eo36le)>^JfYvr%Fs3; z@WSVEj)3iitj_IX+0W(nSiP;^D8+(%%qw&0O^%SXDh1PpGFFbpGw9H&8KZiuD88Cb zoou-p{)4!y@opEN`sny~=MjgjHm8))TYc3yIrr_r`O@G0%KGgj;_B7mwQ! zhtG)gi|1B>lwYam+V+p%8Z|f`7pU$399-RStGU1=dR8|iyj^rr7H479qKNFE#f;$< zZ<$R)oc$^GrBt+uUlvCwmUhtmxILp8e5SJyTXa2{sXZWcMPsZrqK~(Fk+>n13MY+x zvZ$FpAbfV%;}3w9((4e|$Xkz2uL9^wyxh?`=JQi#45Qe&ws z+@n$UKi_Z%RU}G8H1;B01rCcMKi4nKQQ^`(yEO;+C?}>o27jIUMS0-6Ra+9!sdVaH zRj1a@el)I{hgo$^HKxkKEa={ecaE0j!gl+81m&&-mD;J~vTta(z(ZhK)Py=V8dl!+ zX2xEDo66O8VY+zEdS(%DOXLkqXiButT;Z>LaE=JCSdo8nbF<%UmMtCbdp8|?Hh6Pe zE(AUsL8KEUx8H`zXZde9H5|?-b!~i~KGa$~msgpo^=#u`reJH4==R$7KB~DegnRn0 zlnBH>=ew7%^e|993%K~^2dK&Zc2~)1Vd#l2vYhc_(q@L%(fx;wn!?b??04)1W_)O{ zI7Z{B{{=+L*r?Ot#TiFkE=#bD-c4fkl6n-CNumJi_}^;Y*fO;5qnJDUVeBm@chu$b z*hbubf3Q6bMn^%K6uSR6V9F%)KL?mrBsOD~mjA3c!+agoXO2(t(`vn)ZFWlxd~z;2 za@bhXGaQ!8g50bhT`8Fv<=#*2o#x1Hlblg#zv%4)Z}&@PHug~4?@bclj#;GxR>AlJC}v!N#>P1 zL_!b4FEG2PH%-;~63I&uYf_g|ZoiuWXjuI1g$?7u0@;t9;vbgEa3o7S=(gl%Yz-1L z^MMl^)ogugmntC48mMTUn=khM zaxt0kwu~5mZ7n_jN%Hp8P)X~mfB)$8-ri_#o0k>?XS#tYfa>}$jH)eOv&DoH41JtJ^3dOVq4*-}G! zS^-i+yOViWn{f9J{5on#W3JYs__+-&M6s30pjp(+@QM)W2edBN^ROZ`oZMzxd&@Cn zuIJ$Ntnv(>U$ZmphTp%dH0=M1yymh19(nflB5~^kl>2g8FZnVZGq0UhH^DApW+tey z9Dez92S6wRD!jkVC5&xqzUq|`ItB%&g%sb#Rz^LzweYhN8u?(6*ZwJc#wldqs?wA< zTk~N9&hFjq{-vW6dT2)xdpzJ35edR4dFdS;0*LI-Pf`S`@1?qtwesBCB$+{KRqP?i zU}%EH4;X15I9%<%L56=UnaV_o2aA@CX<5jVEv8=?`Iz<2$6`2mB`|)UVCv{Y(wNYm zVW_(U8W6d@*{he+JpA+1i@wLBKOmBjTQiR(j;!`(Hk*w)u6iT4=qSIN9mtJ9(;{0Y zLx1=Dmc$agrvFODu7l_a(T=og=KKkEd3kF|b=lRy&SxoyzA;g)KJh%>%pdpA z?vPpji*6pCL>1?C=42)e&vmRb>&DF^Ok1ySP)&!;=^qc6dVc znKKY}F(&TF`cB7SJysOV<3|KP%5)p`qj2>U@v&^yQctu}hx06^rTb@}?^HvV^T_+B zprM0o6t~_EQ}>BktQRqbkAR`LKUa;A^P5U%*Eho+CATE)@a?LQhsA)X0y3NBhx0vB zANgW_@IY>9M)dZG#W`6T3#HCVQHs{XN^e^8wt2erU*-2Kq7CZCxxrrij*B+PSl5Wj84EgBmwflrPrsgCxy0MNeu~eqBLYm~?lc_`_HXzZ>-D z^y%U!!`#r5uN!!^IDmTWCOV-qzNNjxQBdfGbJjL;7l&V^18TiW;sJ^uGE7jWV)B?3 zks-pkrloN00V@`cyL@uyX|M>+Gh$P&KgqrAowmBV#NErhXmynAr$$Fd)3Fbo@Uo5N zTOv?cP#DfWoqQ|%NjxXZCeZ?p>4f&G=eX<>zE zd=}GJ_rO_wnb5}|jQ$A!5v|eV|5#9xR6b{y*0uyF2V#|WJ&0V)8}K`u0c2G^+pi`Z zLgt|$8u;7d<#Wl4-;6UmqM_84-}Qm*^z&|bK8gRV8z$S;ze%==f-F6cp#>l7Jyy1rL7Sktt#N-`su#tx+AewT){OkjAK@?-AmM3&z`m^`VeQqirDdL@ zw3Hk0sj{1^`;-b6&Z5Js>f~ek3Qi)P&pe|O zR(wh3O5>~DtiKL(JGFQt7%#Z_N0Y?!#`4GLk%SCnTY>?3|6e&yEQ`qQuR(FAU7Dy; z8BbeilvmLsaATIO?@DASvCq}hT}&sYzTeNKlb#^&CisLRC;3j}uXoH2JyS5|dNL!VP_V4? zgGb5%r&*&s{IUK#`;XztEg^l3Nbx_IF>)gpk{8=D57P3nyeOtC8P%MzhY5!+y)l-J z?(%)4pXFZYj+?c-0+6xqMPj8~Y51>bVs{vOi#Nc!0 z{l#@)Ek%~XC?ELsR$_-HyVVUaY$hjulLa93!@fp323Fe{7WF49BcUp^^(I02F~mw3 zk+=iSR#Jf6&!85MR3aoF2RV3yqCv{9@M-MOHR`PXslySjFN+Fp9$p9nn38;fyeo41 zTV~dawQr8U?&R(K^(B1pHK|;4qcvE!n}%s)Sj1kB0(lV#LVf#+KQMdYITB_!#i`3f z`2tkMPL-+H8DF(0G8vq~&k#PsZDEC_naIw6U_~02gDghs_+N&RtOcRLK&c>QIgte- z-loMWPl^*yRl>^>zj2|N72U{#>Aiv;&jA%cAZCG&XCvM?6wRdjh<42TR{GyZITo}x9cO2w10EX zs(dMf!bQ`bO&BGxdkP6kV+1Jw#}C45cjHvT1jc96Ja~Z?-GO7h?}n$kpBed0mM|4;1>hnV@00KJ z4xE+cv*&r*m_RgHq-P zcR+B42;}!vEen;9BoGm{hp?8l93;a8_`9ZT{QrX6BbVxwe_r1pfuSF%$#K4l9A{O9 z_GGJ3oQjK)#9O-1+^cETUfDx#9lJ*;`;xeN z>ZN^CCe=yDfgz#Xv3}}ne^v4}wNZ&W=cip8VM8S+LYCGiuQFUzl%P2Nejo3Z9qS-+ z#&M-vJ=5q)rC;!_2Ki@`i&r`W1o;lb2XY7Wavw1iSlsz7z#NAKIWBys_U-*{e{5X8 z+s=9UU%~g9xvD$8pdKPU6h-y?s!Mq}EhSNC^mq>XM(JZ|M(tjEw{>l?%=q$_7j@R~ z0Qc#j%fEEP$z6!z;2XmLxYo4}jNJS+wc z12eaqJRaCQ;2!g34VrljTHD<+sRDH!^h|VDZ9iUA#bh7_v+UlrTD#s=9w4vIy588m zs%i7~Jy^pI&LmQc zf)z>h0fi!HrsSOuQCv8g)l%yY&o7M1$HY8#{dg!=Qul`tTZ=42w=FmBO0O+9qE+Az zF=8{qXA!-}wccJrZ#WTMn?{s&pDS~Ac&sOj>2F)Uwz8OcopL&3lnN>5?3VE5)cml( z&5+&b-W1h(p>R?;9^W;-ZVj$G-iR0B46O1TaARdY9EcpnM8y0H>gR0uUxWJ1{ho^d zf%=ETlS8en{|(eXvick950Y-VC*M#oc)ogv_UrJ-v+CPiO^7FdIcaf(4j+YraJBMI z9I>^$rHj2GNtztv__WJOdKQ18*8wMz@zubpfTE8aqLv=sSlj7_J>1@mx7~;2K)<6) z`m>SsWY_2RE^833tvbq)M|m7gS4n&^ben@m;!NW-A#!nNW^6>eDly^^+jg58+}| zOMNf;bs>CYrtmyZ#%_?<;E?oHMpEsuEw%sT;myHf1Ff7BzCsoq?kn{Wk|$}ps~5g2 zQ#!}!(e7?nM!vuL(z{Y>5Amw%v%J|?(dsl3W01J;m1mXSjlE({BH-E;9Bc#L-TQD` zj7L|^S*0yi^k(;@eTF+s{TiMwk8zo;xc;@dplz~0{WlZ)ErU$f+BB+Yi#7eoU~gX2 zKu=560ilPV!E&3y`S*(2MF79*>|O@K>)uPr&nSS0am7T*;9F&B3wXNcNaePu=x!!q zTqCz(r0QH4qsCF!v3W<_OWx~=yUOit5KI4^^)4tBw3w`v;E9zCC)q#55tYsxe7ZYU z%S6bVXj>1&H@6e`2$63!qm+vK6L~wRkf>(sDD>k!YfEI6iOW`O#Wd22ylB#@2cNYK zdZTtS+@XEWqxO&e)-w$9ERZeWS%(P1eVQ_uTbX%!(;zZ*UZj~eA79zSbu}9JITw=B zt9@5*(7#~jDf+WiKTa!;%#N;eMxq)O2^clz#8-`z4n?Di7C0p=d?`_B zC&m^QEqC5?goI{l$m!CBM1n^SVO4~*2Kwj&FgrewC!X8awmSi30t+X+xA;byx2roE|lU->zPGHTzL7m?^`RMat95 zffi`iy}V!^#=xCv{GFK~$@%WERChz$ONH#>!o4GP_90F-1)kk``SJjI^?{|T(Be!` z7ZNFeU}JJ8($^u)iU?^|SjHOpoUELe|A|TP!SfH3z?a-Qlr|W;qmVWCgIxSw*jcFb zxmYC%#528cF}a|6tTZ&aSyiV~n1{-$d{&!>#~s3G<8{gBDS+#Xak)iV=v7w1(|iPP zN!)3Viqq#aI1nE^bqmCsy!>y(y=7F?Z`=2afeNBXqm+PjcY{iUba!`mGm28uEiK)h zLyd?u49(C;4&5*`&ky6iuK!)nT6?d(_PpYajGV_A$9aA~$M;~`+s7NI_5!8#RXtEh zG)XL4xgZVcz>M>*pA77v7AkU+26;S{o0(?w@A1Bwe!TnvH)EOWtD1rvq`oETR8lGK zHr_G}?*R&IMW5h2!$oBam%rp-;QPBKAT?Q!ctw_Y@hI$tPD{kHIEoanf?-GMP4usr zCjv1iC1dnzJBfiM4>gYR+@#FX3w$ofeYN8iCbYMTvHmcCD*k%&4V&s^O&?~V%kvS< z)ydLc%x}1_sbt{8BUAdMh ztE5y?u3+Tcff%AjksLk1mQ&lif`DXde;z0Qfgba}AqVLtDQUI#;Q4~LWFvcIJvbqG zqbNmBI0>Ot5sEnlA_9&X^GHH&lF}Tee8Hl= z{ffywtR_xuICQ#WH`Wkp0X)9LaJv4+JhIb9Z(!=FjG6yR@3>2(_DGmf4)a78n> zqKK*p$R2D;dh4YVqD7z)D^UE!1J{aBe3%jO>fPm6&!Go;(6tm{$rRRs09z0AU zw6h~lvepZ4w$u=|*mjZE#NjNXu__f5rzojZj{YNtrrFUgeQeqZ6z>_{`yRoEC#P-$ z@IjF4ON63q##{8{3vmKLd*iQ-xecDZ@xv49g{;L`YI0PjAji5W3ziqMovzp`U&2a! zSqR&;Z#TLgleX;PA`~qz>Ni4uE2WPR?Nqo-qS3uf!@~$gQz#(Tr>Nz}ohzAJ${4gT zVw#}SF(3a~0t!&!vA=Pk%ab3e>k~6Wr8xuuCOj>I_CdZN;0bzF5P5{x4;cx+y-UI* zXiU|8@1P&Poj$X+@TOWYWMph^1jZX+$$dsJG`xP8$u`(~pJ#dayWyLyLvEeR5yowo zoMp;C3Zy0cvs+*0Q(cwANzwUs)$2RDflDyWz$5?}ex$`PcUXTT8hddzkFK>6|Gt$1 za*+NJ38iq>qQNB#|z>5gLwZmdDU=b#Zsk2*NlPA8)tf-x8nC9 zVy4bN?7V^!6AqV0=5NL3GwoD2^yrI2bxSFcgUg5ss>@j2L$bKh+fS_9938l*$%v{kj&H4j)gj9qXt`YqJ9s-KLhK zvr-~PrG2S|CZ-i!R(f(5qbJ4=nSS(vKXzaZ!p~wgJ>sw(_t3i-60$dYo{RpDDo+B( za|oi}fMoLpzJk5eX6AQ|sgLn|4%|D^LXl5>fGaEutPtal>~caxgmuy`jV(cI5r+6x6=O^RSzmhjr}GuT)?bu8 zIrMGNDcHmG+s1d^C>^e@9>Ab@yEVz_`}0}OX{p3LJa!6%h>dp{1swh-4VSf?5c!kx zyGnqF<%_~ThP}eCToU&smz60a>9B{UnmS(h&(x)b8`@;ydp=}2$84X;)1MM6M?zWx zbjanM3h;}a)C&bCYrL}t0g#Vw*b*HAA!m0ILt>r*EQmw zTql@u$~*B_l($@Pb9eK_0!y|AOt%Rh?G-B-Y^2;h$E3I)M|?0q69X`Q9q1Fc{KL8! zDE+VOs~@iH$T|Ad9#oA!_e1Ez3rwJ<3)%@m)api^RgC)ixg84Cjl&B=cl&!iCM8TH zj92+u7}4B%%gUkhO5d^Q_JVEgVj&ZNt8n7)^I7QJY2Di9uCUqe>vV!Xahg14>uutu zT#k3q}Qf}`h8qIXH;UxTox|LZEa-HS3@?l%@$_zjev z>FvrM$vWO#4BT1or9P5}dW<`QHe7^n% zT`;uzx6#)W2Sz^&82!FN(E;lzA+@Mv`s<4(tTyu@)Qg`K2a$tc{5V_2l-3UE$BmmF zJ(59vVo{d9*K1#WO-iyQpF7nFV1N$rY5Fc3+enn2|%o z3Q)58j%}38a5UuUSY=%r`{5tE(7>BE>JxbUO<~w8o5Q11zykRKz(=YO-yy}@eX3dY zpgP`zWh_NaHp6m#Ozz)KjB&op%$$EqpE^Wn9e%V5s!Q5R(eqq?joOQH!wnR;j$=UUo}+4u_TnUDS=CJCwRxgwL{ zS%_x)tVrpc;rV&rkm(^PQ#|{Gr$7Iop~!!%sehmpj{iU@Uej)ODP39&(2bG|voOK0 z0MpKe!yM1=S82tb)*L42Lb*rKciS)L9)b5yi7wF2zx@=Woh+q`{C&g&;RJmzID>uv zDlo0yz-)5v_3#`>d8H&4qWXs)Fz{RGG2Lu-=_j+J3;&`m%6kS%U`b?0baxTWuP*dV z(tmRjcg-%0VcvVfBMR0=oE_)w&VN#|qNCx2CmkpDECCo>`?5!wV5$p8CE1Lhngb)O zjwF~@F6$%+)@)`Z4*!yxDACC_&AX1b_ngp{+_kbeTwt@4@AtUMQKR}hrlB_2O1m$` z^fD*TvEOYz!bQ@@HX@6oG4r&)g7_{h?;e)5hsr_cK`RasZaeTF_1@`tae_BLR_tL_ z4F2s3MX-|EmAJHGt3z+61|eN{_(8$3hXuUx^zgb#&4rSb5#@%3pE2+B+nEf6Dg?ov z-K?uN_d(7rZ{sMbMpFB6BV|qYmUq~@C24t^6@P5U^qbZ7lJ8A^^JI%g)}mTZVbupk zhTuFx(fts{9`z%d(U@NsYLA5E{fDkimJ_;)n2mc&RUD*sN6UILS25^Md-<2JqCB^j zuwNj1ww#y3w4us!amAMkyGQ7b56)mfyKZl(<_mESv< z-s8VWR`4#*^}lJ+j=2Yh41oMTT?-EUeq8@H=3k!w>WxBH8}QBx)Q)M3ViSO(dIs0D z`D5W#Lti8)^7dX7LQ+~*^BSe=sHPl;4-jdMV;c+NYQJEMALO@J>6@sY`n9bWO$F(?EEO^CyO+sIKix)bC$r+pP(y+A-$4!Vz~f+vf~9Gq>n0(hIi{=_b62js64N4gIpL|z$gX3=12~9t zx&Aa!JS7Hu0dq{1IM06c8nMrpsw?R1cf$u_oZq`{az3EGr;saec1vh|N0pmxizqOB zTIV(q;`vz6sfA;dh#Y-E#Dv&_Py{l>uyqC$%FFVyTQ;fCB>Muc1`cnt91C?b&5W55 z>>C^96$`a87QWK{|1nekQ=R-%=3~BJo=A;yGD;G&$&n z7-psK{=#V724e}(#22tVb9Kb+`fm(L*9{Qe$K@CWjaGWzKa@lVZDW+K$c>2ZoeW$a zn5DErJ7U{MLSErJwxoc%zd-^I0Y!nGsGZ-ms(c(suYh{MwtQCg95t&+eJgZiYw`(8 zU)2{<3qhW!Ea#i7#xq46{&(_etV_b^dx*y|BR4CV$I3+EIi$G8~F(NiGDF)`RyqAw;_M|$rI92E@t6%w;P3nw8bAADhIuw`R4J4B68(JjlII%DRn@u-aId>hqWxkGhG z0RT0;f8Y0cT?H^flKhN7f}SuV#JfK4Dmm_Cy&ElGd#Zl)tuMbGaxWQnzTx{)Uz}Mu z((!70$)LzFHoISlPM0S)idM+IYclt)&O-8m1wZ5+3jQ-^B!FjKf$Fr7jGESeR_QDC z@lpmHJ=Jsq4j69#xkQVdd6af4OOh5_B4;^wZM%BnlUrD$>hrSbL@jZP`pr)nxrkW- z&f{4D0XB9^&~?*(*N54RA5ct9r`x0g3QpJNh0#2CeN58MZQ3@mfj6R%)Z28TU{Wqs zHeP99V2h5&9I6k)=Kq#(W1n{vB?($9>y30M%f)_>o4aOV^NQMQ;+r;JX0xxP{5ZC- z4_n;J=3)GTA&H_aj(;RWgZ54a#oG$&%jVr18GG0Rq(``aDUpZ;sio0$2vX%;ET)gR@3Ft6JVe5$ z+pDK~SDE+!^wlUSW+681K8dEBcce_Et(Cu8#y%{Er-5JTypv3T&3H{H!fTU3kIGW4~o`=UqXi}SvSgg1|$ z761COZx#1A+vPgF%`@t@e=F24H~&eDEOs$578Ud3>-W*1smq|)TVa(0e+lyKU!u+% zOBToC5qLrdrW*v4}c1?ooVu9lM z!MpeA;CGNZQ0=$gzmYK3+{N~^+Hhq^C7)J6I(6z6+)jOCHEht2U>brrFfval;&&xs zc8ya;0wwAE^;Y+g=xL+?V@hY#uej|ieo0IA`dA>qk-R7V z5K4qpuB{QHi|&|JL$Wm29q(q>gNT!Id(@DV{?^>)TP3oa4bpoG6ErIpYy*)TrhAFHpp-my6PL41#!>`15;0u z=m%kV;4<`qrX&MWvi?dFv2=-VMUAysP4jsP&|X)Oj^NLiyjF}*=8QLvNsbR1jTwW} zT5(;aiP%Q#H)_TI6!hD+J$twNO0cmR5g@JnYDD&tYh$_aAq)Tp#(0_ey>*nRq`kZg%jlnN%p-EC0UVZWGdU=a@L!x0>&o781~?`{EnJ0h>&aatBHMoSzw7 z@~DPiGF0~ENrHhcbV(w|Z70vkGkggnX9UQW5E}*Zi_bKGk$pZ~$x_#Ro`_vw-K@)oPS{ba8Y6%><*4^$5Qh>O3Ttt6$n&wFdpzzSS$|KHgoL>T>b zM;K^I>5P&}D0_HgCn2J^)$n~dOJzW?f8gV$=dF(Iw9cGu!dA1bV(Okf%*VHxdch;O zuUtukXi4Q8T0^4^qZFn6^WW89*8*4=%IlKH><&3OpgQZ{ECy};?db`W=6L}77`5VA z(#)#>^0?+FfMvzo+dvtC09=EM>>Q*-U-b7T;XbNP?RF321Zeu zEDoX`6F#%u4x6^`iS6iA4yd-yt!?fJjZlWZn_Y&5&vT@9@B&lItZaV-`aQlKY}afB`7+RkK_Oc)I zL_dkBrf7Ahp-H1`%lP<+iRKY#+2Lc~?kOzDnk@P}gV+CPdaxTG^M9u%B1`x40@JXc z`tbYR;H@ms9rGLW-6m1_P3O>$xhJJVl88~~n?3kL#4fg(bUHTWq?D|-&)_I8w?TS} zlTYFX5n;VkRZ9^4=VA(}NJY=p-MkW#&L+STM?7_BwXTddoJ9F)&{8x=pA;V>xduKw z%TC^o~Wh zc@=g6T11G{4ME;s>tdO(+!gBo#nd2`E88T?+6$R}JK(=VEVzgO!~zaUA4Uawc)>>x zbJo;8%)38qXH0$yuan87JH{&*9i3XEA;8VG)3DlosSY{3EP?M%KS(W|+{Mx}Z4aq7 zjOEbz0L31Li&;bYc0|&3ci|hbv&NFE(&vG_9*qqt)7UR+78cvkKkiH#T6>XFGhY7PH$i;|sI<-9 zZn$iM(aop1WjvCGx^&zthqUGXLU-+*G-CANcaS~z zYXzx_UzkKp9QAHI)-O+lI$cymAh&;7+1#h$LgH&vm0y^|8MtCdN)A;#un3%-86tPy zh266X7-5tblXD3&iJ%MU=;>D~tKtu} zJ}X)qPcdsBFij{jjDMQtDC?d+_+^RkKXMW+Q~x_Bv8)(mq~6SQ5_|*IhJ435fxJjB zlYg3Uu@vc)qDMN^2^q`VUdalb5ILX@aGi^c53Ag6$DaxtT$=&f&X%cW7Ol_mV67?> z%j(Xv9H;ie{c0pH=a=-{;q^DOM_!dis=ldG0RVMx%?#?*^m?fKy&~{X;2_^E%NuNs*lY4n}e{0^J*pcL=e|dnAy9fWeizp zOhY*j>O9iQTEeXM7$%v32Gmi5U*7VY=6I;O2`ch%s9v-#rKUEk=~c1hF`I6mf7;rH z6Zg$i)+kHrbKTRFvTkEY$&*7Z^7(WHDQfe8^JUxazOL_=3lTH8OmcK9fdq^1>S( zvHN|Rnodld80FR?C0FgBY%DD?z8TRWyIe;Q8@X|u4tt=b1pM2J1%&`&NFi;v14Ep|7)hSY@1kc6-$DgGu!Xfi*U}I zR^{6}8CNs#m|e6SqCddPe06H>x;j30L^dM0ihc$cK4?w^;%F)`vt65wk= z`r`j>`aH)=^z=mJhAq#xsoJ#(1w+c_fW+cdA_pB=FyNMV2>ciCz;fPb61{Pi5&8WV zdXPKRz+!UCBCtS=1{t$MS_%umS!x<1MUd{1s5Pa0s@obFKp-)JoB6ZfxWvvhEGXhh z1=P`{xNq&>C2`pMZJa=a`^z|CRS0!gO5%SqPKZzL%IX6i?7rmUz6Rhq z$MPpKVH!A%$Z|!ORm@m+09JZV9xSmc_!cq8I4^!H=cZD#EI~m4w+S$Gmf4l{lj}>u z49k=#W9K*kpukp03KFct`{j&q^NL=WZ(zJqQogp?dRuI<1;*{q6=5Auh?%B-UiPrr zq*qTU2Pa&4yhJYKUCD7q7r+TcXt<<&`zOJ~!EeO;L zs2iPjGHswS*k z=A;$_Oa7kGTEe8`FN0vDVzirS&u_a}?0pWX!LvH%Z$J3tOC2D-iqO{O^t}77=~g`5 zIl%OiD_CKUp%*CY$5xb>BTyftb%E`V3*qT)bp*Ozx*->~;)VXPwt#hbnFpkfjNmeI zp)dkgF_80I!~IxZgPPU=ppZwQkUcJ6oRM94*(sq~*{C*#h?;BFw?~$_l_GuQrcl%6 zJe&Sj(d}b+58x+*ox-P}L%XjdJYwlTDTaa4CEVs#mKL{V@vA8~$5iL~*=yU|H!&6R zIBqo)Hj%eAzJSXgH{*=UF1;4Yt1~P3q$VdyPi;cU>^Hkb;`JhO^olQgJ9axGJI2Mg z-ewt8Es&BB$$CK+VDFL%mVBhuOau>jrC5+x6D7|;(4!17k!cn-@1yjNEjKUw=9<|V zNCsBxmNROLe``_+CKaLef25!Ngn<0n~(tfb;|)iiKsng9kPw0X?0$Z&*qviDGU|0-XeTVigje@O=AeBB+LqdmN|q-B7Q zl*yn4?g+J}cym>)a@*=P4cNPTa_g6`Ua)8%q^9k>YIozNW(KnOj+wjVqO`(BoJ$%! zu+Kwmp;jT9KE8LI-ew=XwbV2hxhq+D({VxlbvJ2?Tu4fOILx-ngi0kCP|*vcdSpt> zN!w9i1dcJEEUy-quRo+Utc0RD!<5zRCKX>0(Die1C~r48HolpxRH$u6+wLfwz`Xpl zjs-5XWT8^@zymhN%1wnU&&o~eg!c<+z489TD_VpFqmxq-gRx=lXs7X4$4^NWG){N( zV3JER>uT~Y<>+bTLSav|P*FC1g#)lA(D6V5rH92`&^2tLp~wS>0_np z@N$5Ejh-p=caNs>yZHa~RuEte92au@?X4iM9dPTdKo&RjoM}&W68RW8)~)x}IV4W0 zYdz_0?_Aw~vQ~hozWuMT0<|~18!%QFWfi(r{>3WDeTf!?Q~T+qu<|Mj|DE3M6#W$nM@{9dHRl|5OAAw`zRmo7e29{~ zyo=qbqGU&>u2f{rX^$1xwzsg#p_*p;Z83mn_*91FyHV*8)wB1BZ3d#VQ#J$IwH6x! z6yF@^xR_t1HU0$y-O*DH*Vtx(h(YOmWWXi?{WQ3=Ocp09y(56fA2$r#`l7&?rulA( ziv|xD{pT7*C0lj;3lkmi@B3DKma;e7hP z@c{}`b9mhJlgB!}Vq+()H3R^WV1E!!*`4qNU_w%+z4@U6+o7w;GD1;OI>6B?Gs%3Z zrMgCxSydLg--{s#@!}vCfY;@Z#$JBp+CMTddk7X{TgA5Qf6^gAp|q~^PFP13`Xof2 zj!D`oXMCo-{J8hQ-_*JTu%HFZ0eWX?Jm9{ggwy`8FIb0Mz9kM{!LQQiwy1;#-(nSn zLfeG5&z5w&f6>xWjlyf=}xb8aN-?MYd)$JfLM37*N; zZ`(E?0Zo@NyU5=030_3ypF1SINny26*)qM9Sg#^tRnmN^7!34Tfd)+7A@STeq-<&C z`fZqCwgwm`q&o-b+4;4cYp)k^z5+&a1z?9eytw^g!3iHCl{XVe{_6jSmd^5?Vb=e? z+Qr-rk!8PahaEh(vdqRDINA2{xPMb-ovmnQMV_I_*>@U`;}v)+%tW=PTJZsz07mKl z0o|HV?204^jgrb8-b|MQhAgbS#%ph!N(*;PDgYR@liq;UKNk{HVAM>~C#}-Uq!}#8HkaHgq>2_5luJ3W=8F0Jj0m>`vi(nb+y%$zXZnGxV;90J z*tsbiNBd={{iM247TBpY*?qS;XU-*^JmJ#7njVJ!o83EK(urNn>iT*m$1G?RZua~Q z%4M#78oR~k4(DM5mo=>Ocp|hclM)na2%-I|y<0ceX`Fn0ZcP(=62W{wA}#PUip-uqdcuB_+Qr8P}xNvfJH7qu2AaAsx9KGT&L zzSw#R9y4^zR(#8;XfXtvlE{yL!q#HqKS$b#+04CZu`(39D4cf#*Z{0v^@5b`X00cL z=kL~Hvo1dXXq=3r!UHv68ziss13?C7(7XAP@EzN}PcbD&{mIzCfTH#fLjzT&9v}XV zrNG_VFQP?&`PHm<9SJgvPY75Rsz?1e%UL< z+r*bXBO!(qC4<;q%C}iPzAF69+e9azKff;Y3c<|?Fc!Och;XgGyZF|;L5!}|hAOYC z9^DPxs*LG~rJi;;YQfvl-BB!XCLXbK;G2T%&8uzV9K3!kLW|cWM$4nYL2b%4e9>p7 zoz2Qxb2lM>r!(PIU5kZy+M=A7E~(FGl(8=K0%!;lBgg&~=?;86gMVF>r|_7LJ$LVN z|6bAMC!}%g=A(TRK97BZ^oc1CVa?moE}5NZ>lA5XQ{oG%duzw<+X)p)CY+JTNgEe? zTVuU;8DDe!bUeGYOo*RN@Iab{Pz&|B<43?`MAdV0qcV~}oKrd(v6t;rAN#acQW{&> z_T{@PRxR6KXa4)RR=^RZCy|){MawUJoGJAm`uOE32d&R_aPLB?nHFkDmTH-nO)s5* z25j|g)fv>Z_q0Sghp^xs-+X&I0^VH6hT?E2bRF2af=$8=Sx1PXhgZzzNEFlUe#>iA za`Eh+dS!dr{7WK#(r>SEd@V0Qia4`No1^WcJ7pjf>`<*M~17|2V48ikC!y26i9@GeM}e!??*=;Sew$TqgD>X)Lc2YaBf-oVbKtK>k=!_uC6U+Gl}HE6(8f2`AUPSts(NlS`z z--JmNjFDd-YPK>`#xO@u8yXaJj4mzJOINV|I>NN9G=uxA9eG@7EGNJ0VL*tPhT`^5 zyzJ4+2r8ih`ruIe=!e=OZlACV-VhbUDy-->SWT`LUd|mC^IVvV>Dw#2d&}B7EKyPNEkdKbF#+2ViS(Ot1a#zBfS;xwlUpWA zsQakioS6uTM4|Y|7!T0x4!ND9;)=@^0%6ZB>$O^=;pvcQlbq&Q_oU(XZGD(tSgdd_ zAdSeXjT#4o(P2vHhj@LluX~9Np&W0(P0bEaKgc2wHPaI&LYxs|5yUf#7q4-GE%YVW z0xee*YvXZ6@L_Y-IxQH5{1rG~+T;Rvl%!$1E+|uXGDfp?sq+V%IshbLsl((s_k_** z(l@xZXHi1dZ&rIBAxiskX&O9li|)ZN9iq${y(u5rwKXn5v7|lXb(#4fZQvslxmy6* z*1mSnk_5$w5v*7P-<==Bw9?zA(JM8yXL9N29QCshY~nC++TYj4$JN5bT2^2{_F=bt zm|Occ;Ra(C1AJDoQj*q-rY9_a1c5uDzj9)E$_;91N)C98$8BNx6*42*+4eF`5j;*Jl84ePWidxoV7Q{*pG&{psWuGhsw44SX zUq9I`YBX-|{oMVTCXs{Y@4h&oQgadt?cac`!^SCdsdnc}q(j9J z%lF93rfeWRS#ohg>#5qh*XKHBoDnkNbBs)_PsS&D&7BFJ&;B$x@ye~N@v@GxfV|)W znZH{d3f|A{@aklBZ6f|qn(+1jU6Rh~dUqsR((J52Z~lv+uc?m>E6dUQwuBP`ay+Vm|>VTC!05 zafe*G*bdhy1>JVb1H7nCVupO5%af($N`Cp zG>GMLm{LkJ2Xe7<%WHV@NKglJKP&h_C_;NBthnD>KT80#hUu;MM63kT)F@b;m5y&b zn7>kUTn{~c`4z56EKbWq*}J+}Xlra--%`pM%plQ@<>7-&Bc}_Vz4Qh|SQ~YX8-s~* zditWq#>UU6&@(JLBkYx?Mk!9oUyBhx*{iX}%y{VQvgWS-!W$FUa9&>d@b6c|(j zPjPgWWn3-pT*a*BVdr;N3!AjCY>1d>URzpjy;fmT%Kn|2oQ{AQ6j9#0yBpSAXQDY` zJZp2>XVsFw8`%_dfaKm)O6zqK%n!?(9Zfc6THb@tAEAfOrn^@b&%S73GA409x?=d(T z%amr5>x%pE_1l`%0V}(gpzZ^T_hpL2NU-he$~yf=&2^q0JG0%P(?S^yjCg_6D&zwd|f>U>L+V37P(T{lr+((-K zr{VrL#NYA!6&9pDfqx3Q-v2b*|NrElpL(4J(sZHU&aIyczK#@Uq_;mg4GLr1Ax2k$ zSg4|S)M-$*Cy@L22-BwBi{8s1(Vuq6$9PD7%JaUg6s~gD z7>*cw!9tmV>dj59#>wkxhs$JkQz|t)KvxvU^98Dzr>6Mh3`GP&d-Fb`&zF0Uw%$6Z zr4iKnCIZdL2U(Fo;kYHpc(s~3=wP6|({+$U4u9=lvq20`SHwV}t1#k$`<+oeq(^=d zE2Rf{N6*|OvmMpOR$a;C3<8vd;TEu*g z1Rm34;$ILkaG5TDP(yPOB7pBR=T@DcVPyZ#X4Ljlo1;YLT{y?M3Jt%|oZ#XQVIn0I z8_k~Zyhv%c;zR{UMElPl(FVuUfcNC~#r2I8W9qTTn=RDO{ORgKR*ilJZLE+=UUqhM zHLYZPBI%vGk3&m;Y|bloL`i?d>Rp|TpOny|0gvKj&>+{?G?PEhXVv6L%rng;=A4rb zU$~+6x(;q&uKMuQS_MG@j@8s(R?+2628^1YbjU4X^~;1=pxl*wmGABO#I7{WhAbhv zNpe*Utp+5gbrC-p-N-!EoyN2tsOatKaZYLZ5+Kf2;qUc$s}~;>^S;3q)xUEr`U^PDRGC7eAZsZ z(xt1&Su8BCR6ozV%pTVRJ!eX=#@F#mv!yF&QX-x@fbM1@MM)9w!k>hn5@!ws2P=E# z$t|Z&X`=y-__jXjzMFU&tE>TDQ$|F!%1!GJrgbgeof4$UpBQ9U8b9FRh{sFgT_eAu zq0Zz4u?U@gP`kIJ^g?;hfnP1bY<8Wkd?mo3pP!RMfVJ`SP0?6Cp<4#cmh$T#lie=t zsP+5NOX;{Od*+WwFbDbuH`fMd6^kWBqu>tN!_~*qbrtQ*Q`y1Ym21s|VX`YjR{$#WREs?te|0=+^B=T=RP z)=?bk6ki+L+DuQ6pNuPikcdIr9rXlB5&SH}a6Ltqox{8kHNo==@mieJm_`Rntn8&O zH64Fk+Ho)oqraaok_sLHTUVH(Ed}_~$;!ls1r+i8I9FB30|`}=cKKX+^pM96jp`j; zMEAr2KH2++I43U?@9G(;!%H_mz{j2@c@HbK(Mo6>nJiINmGOboHn6TWqNH|XC$MLL zY)BJyWzwV$Jo&-bYcm&{59C+J=0#D+;y9aM8LPi&jj@N(`i^|?0lK0+YXf_q+{ng5 zYoQ}2vqwLp3jIbG!@#@Q__FF ziFdD-t?=?&_r*ugRj07rgp0v#TW?m@#xGm-Zx}0GE{Dug9-0O;Fs29=y_1lG($>$O zV05m>=gxPnMDu-Uyq~y01or@5D3kN{Kv#Z--_ea%abe9@hD0PR`?YCXKc+%}+?tC2 z{2=a3yNJla4vnttiMTT8#I<^PWktO6M{kzmh^%gbHNmLO)rM{TJKOIu7wYZaZCl@> zHAG72QDFT=pXI)x5I@Te4I1Eg$k~D9*liiutzyya@-hJtmIosIp~te8jM#!(lF{To zP#zDjBQkpSWn;P;+|5p*R+HK!6V9*1wz;GvhI)MNY;aNjEX++on ztuO0mDgBZ0@fG)L0W|tj!no$7I8~2&#b+8*gBgNvKc9zq>S5;to23Q9zAU$_Sul-= zX_q8A*6Z*&6z9rKE+)AvU$ITq`AuFT(M!VTi_nethi0O*&GLpL4$|2NpcI%C=X0Ce z1&KOGk8YxSsRJYu-TRJnKQShSXDA58X`AP%4xDWmA7B*3cA}MKbo!gl&yq?{e47}N znU!n%n8OjrpEvMHY=7%J?)%MQKD9mo+X&ZQ*7bek0Ca{NPOC05OLU3i&wX(7uFiSl zTHa{Oh5~(TMKry?FCju;6|c;>9bH65gKEh=)_b%3^WO8Q*)#D?Eowh|-!9 z`};f$*l`aZhI9{l;5}WNm;!B}RDo56GT*IpgcQZKFEx1FC4bizv5-GvuEYq=2;tY= zyix$R(QYuty_l_}v8Rq0!Wz8(rIlrmn_gmkR@NLRsj6xxil`{;0+%%O1-7~9wS8mbByf$6lJsVLK{uk)aCXoEbKuSBDkxBV^MGqBCfE;5Z6+Uh z;_dao zhHuhOS|wJ7rZCtV+7Vad`@)xHjxtwdS_Y7eCX5&5H#4K>awFpd2jszC5#G!prE#K; z&kBrV>A$udUDjXZx$QfbAk1p+TvKB32yEpXZSLuQ_^E)LoMn1`is;)X$H+_n%D4Ox z2NKfy(nR2}dpLn_z$M?9^6?$sRxkhL3vT`&*e{mJ#KgFg{GD>uzV2_kI*UuFfrhq2 z?&1}oMFT}u;gAT&Sd*)-gXH=B*3X>sSMk9?j2za;G)3~L*5)Vv65RSx*ToVPI>Foi zm>Y97MI=njZ{^-6+*BbD^7tQs)>r33}n ziblkm*$480ud6lt$wRFoc9UfaGd8voFMSfvxo^g^pc#ogvklM#r%8RnWPB@2>plrd zGPU?_qg-5ery{W$3*pZAyC*=Qw%YccC=H5Zn}G{4s(9F7Y-z~hKzfZy-m7S2Z-$5oOJK@|+>p^X(i1ZQHXp=)wRUWywlsC6xKJ z1+q9r!6FBxoW1()1NPiO0sFzZgQn~k!xLs~*FA-r+3ijPFy)(14@9+0D_>u*F1jZq zZX;1|3vFt0`#ngJYsU3`r+C>i)0O4oK|Z~GCYP@&2o1;C5L~);b6{S6&1%Jw>T+)%re$voppvRpt6=dhfV~JFN6vz$-$x1axg{YT`lE%x!Yo)>tW>*Zsz< z_D2FI>y*{xorfNC3fZj8tgrS-=l0H^-Fe*-Ig8qKzOL6MqKsz(rH?`zY)!K`^IXxe zuzKZuf0ACjKF=FBT!ln=n6uJE)l^D^lgHJKayi8j2-J+o}r)f>8 z52u^k_Awgjt{t10Q0rZpZLajMPtb)NYp&ZbG@d|xg+Kbh9?M20Ge50kWYuDTjz)$U z&wMOOGFv9A%kB`UMe|ODd&?APhbk*p>o?EHMS0}Zyu&ESE`XR%b8=&$o=iNq;jNBM zY1H$;3BxgDY%Zd?5*i`*7M0&K=oW*eEWvgKb_rB1 z#;ml?%Qi;}!L^AdU*R#s^c*b(=p%b-r*=34I{8?V7>}eZLG+A74$Z=ne)gdvf!Nju0py)wxV z0)yVdjACx8{!})nagDt`YW^~EwLQXz3It-`CzEz8Mt0|GjxXGR8&3`1nSiU1$JR?N zmZruiQQu@V(HdFH$?z3qLpMdliWqT8FIM4DTd?M=#0=Cb9(*Ydxn{P}9R8HX>ZH(@ z!@{;vF&Z6W?N1^$^n`5#f3NDOmU{JNzlb@Co*rFq1STV=OcmW;XtPDR+Lbh|O}&p~ zb3BoKB%BDS03H1{6t}mMn&}azlJTsU;3wrWmcS~AsFr#@ zz&;D*XsYsoV7ZRvl5a~*(jE3-G%NxyB%po3qx;b3`Ax+`Ycx_RB*KCwOs`0qxkObZ zvHOgsSzpqg9nPm*RdCZq`@i>E2qsjGZksRwvbd|@UNwFChPUwC4V->Qh2DXx6^#s(Iyh7{OQy+L0C1HNY zjzY+XZ>W!jC4w#%r-14>fg9KKJc*RxCEf437Pi>OR&Vt!7i zS0Xwy?40+r9<_jh40!mx6S4XvNeiUdeDi`DE70H0e{D_uohw^!?+%g!r z%6yPmX-N?y@f<{O&gKV?&UVaEjol>xdEWI#@&ez5e1k1Y)-x?*acfch~)m5MW z*r~;#GokSHr*@aIe6E+gBc+?&JI`(Eo*$aqpAB?;_SIeMSs%`Sb$TI}{gOtpfCG&q zB3ULmSuUAiSdp!b>?y6{fvtde4XaVUtiIU2@K1S=6_y&3NuZG!mli=G<`QNi){FX^ zz2G8rvB}b`Irf;v@~anWA4;EC`=+Gt^Y^?N6~oOp*L@9l@UAb*u2+Aa{GD zYQtnZ?(+^i(@LE*^*~0il7)MTMb95v*=M|-L&=*=Xmqb;1X3sS>(Hrj&F!OOKelPE zs7zG7%nSiLD*@Iv(K+s($d4fkJVrM*AYX`bzaf=@-qiE|XN)y=Xm1_6$KRsxwk}xrj0(w2DP1y)l11@J< z0%vo^+st_F`@$}zy)Ry;hE2X1RX%w9d4RUqcVY-J-`Tx$-P+O7LEjohKTRgf&gMgv z>z0sJesV8oyvHyyO6n$ZBIwiB2#f@cV6dbSQNq<#a(}^tl<4S)ThU5@7uyEuxyr8v zM6v%fPA$K9a07Q|zMzLEE$>|qf2@+ccV42Kcv9`w@f?PtQVJ1g)g79-ACIXfdkuV* zUy1{_U>R-i6M`e$7B`pzBkE^SyAe$d-wnJJ^ID}x^{_EX_FD7YdEQY!_zr3kol||o z^&5Cs>}t{6fzw!%APdisH-vG>x4fg7kR-!vld1C}vs@teAaBlBX4EG{kMGh<1bL{4 ze0-QSqdv#Z`+Qw^lMaH|5(wtvw+yqrS&bi!>{L!3GV%#oCc{$@qqWc~pWDi_ZyMCh z4N^vR)C3LH*Z{YW>kRSp30n8u#-s~ocCcnduKR^=7=HW?>OYs;&^*qwDA<5(rs34( z$(BOf&=H!4MC?0aqA2IW>;k>UGwG|Gn3Ol_%!(dOwvlIp<{ET-q}!a#$TyLrX4W7l zl|vR;b9qwHkf0q+*Kb+3xmXkh*iM#&Ji7CeFWi?yDZ{OLroV?Dm#{EYroU1Cj1d03 zN*)ZK7L0;hInkxB5qC1uo7X`di@W4=PruA{Z<;h|+W}%Pu@BvOwcR=2uqs&)BBG2a zH7HWgm0he+pq3&? zuI8A}N@KgD`E2?jH2%EFr@KMl?vlwa_2dubepstl6;y|DadU2~>)i;?scLgYRI_ua zJHGk)&?I6cjaXc<1ddu@gVewuq2ZNHw3fDQJdo84we1>-Yo6nOYdOP@gK*<-$p2=P z;!(w-4_GleGm~<+42AC0@EZ#9kA9jv98_{16{4T+OM6rK%s%VqC#id%?_M?;!k?s- zO(-;&juzi=a?~*&m{=Hi1@Vq}wyd9te@-FJ=<_*FSn?T)<6N}Nq|lXNZ;k)-ZZ5K- zS=D=tnYdE!)sYAh#-0= zdP@kRw?r?|1`(Zz-g_A(MD!B96HG8f?{y-289jRMVsu95JKXoa_x`@}=Xd^_W6wV3 z?6uck<$2a3)WaN0y&}-jH-7;Z09hnVRA)u1bBU{2?!l{r&hpFPACJei)gNHZ^fGC> ze!)@Ttw##azAN67^pM3nY{);+Xzz#*Cl3tUL^ay^y7KE|7W8{J5cz7AIT9f{JU0GS zQLjc#)6F5PH4upyDS>hY_^&zN9X(W?9<45bxs^29EZ`E(e2z+{-s`U0<~u|45~vYx zK;J83hYXR;D1^5^ja2WMh!Lql7{Rvhqi>yeo>%`y$clh#lHwSPlLR@ra43%CN^|@x^9)4WwBOU|~3a z`J5kNyv{hNh5Csb^DP^6cj z2OksGi*+^C=TI}(R?P!Pva_SRR9Y{ls%p2QIS%c*%w@SacPLj=JB|~3z|;fRoV)@O z=S&*>DME*(*CMTwJKtoukwM#5qkL?}kP_@5fnU6zk^60T|I&`(VdF!Ssf@rg^{8cmxzf9%2peS@g56~(Nj(S*S1?g zz(g07dt~|d_e9AtDL&x?n))z`9(Wgflt7w+NHAK#`!ToXsu_42MOL5UapK6WEPt@dPH#uuVIA+x zkyF2FEw?Z0c8_j(G`qri3ez-xfU03Dhb5c`fWuE3{MqkpC{wZa-bQL@+-S7}1E^cJ zP>N}^v{Y+Ai?1Pc|5|JmA)5% zcTr?gPe*{KF&xriM#A^x%yr56PH45hjx;U`0tQpwgNwCM&g@RaR)3;tiZv|4cz1Sw z4uOwxpkl)wI4iqaogXk$zLqg?DheZwuu2zXR4?Q_=8P0HFw>Drqbu6@khDn{Jel+T zCi|o#+liNNQpLb`Nz&H6_O*`gR|pYG^FGh8x!ct80fXzp`q?~<89T9~a`+>bp`?e) zd~`KR=1b&_k%q*-2tjo5{@dew1Y5)Q7sjt8rCIMI)7uMO(6P3@W;w9exqsoSvrYAE zjR3STy6VMJ1-BA0al-G}=J9jT7p_3*X}KRnq-md6U*<|AHM(^wKDtcV9Lg1T#P^@@ zuKSWypO(UPb59L*hin?JXRn)1Xhm?D@)ihw<_JUD3FeK;fQ zPv)jcbQpgpld48r1L?-;Ibex&qW!eWQH$f{GP}TYdU43#b*MxaFVM=22l2mxT|`QnQHflb((yldh0*N-0)4wUi+WuaW^GZunR`l#G-N z+ny|w2hhfe3Y7WICU`*~kTtK{J!aBVH=88cU5GhlHj2*``kI;fizyMmC2I{m%4aKu z&J0zWngw_#{9tWjD=)8=90PsazDpA~$Zhv4`EA)lKq3Z&M9H%9&AeZH6SoIm5E5w^k1wwb7lj{ z%OX{&?CcgGItp*z!uQDMC2qBV46`z`*R1`fS2Bn&eQht=^Ojd!jPFuNaEF+HuS43X zWHPhs`L_J>GxB$xN!WX%qbsc)U;&x5C#i|UsKHBAU;g_P*h`y7V4yXK;2j39cC5Q zEauYypIMCW*-^~HYuP_Aw&j)gpV-oHfA zeXKv;S?=HiuF4AR_@Zh91?U_KDCvPqshoJ zJzGLm`nY35?#^1dgSto+X#?R>QSHAh;`??yJrTaXDZ5%0sBG%`0e&gjgS2`_oT9I0 zN5(`9Y(zR|%_{~|180hHY_7!=<^xip(!yz_C}u-nn(O|6^a{aRHlB~u_$Fg*bpkxh zYf$I1hg>_H0#Oj9s2iI|Dsnep*&wGe)XRF>GD9t^clvt7d zlRDBK?Ej%i!ntIc#bsNH)q9TVP6Yz(AY36GQ>e9U1iwF=V@xULW|p?Y2Php7MWlL* zN}a(hamioCx3mo!Q-7Y_PbERTt-N6_3n2O=Oa%L`kfWcRq~o}--#uTWv+0=CfM}LA z!PhTp>;K*U)6V^5=2cknPnki_;P=plOxMSpd+~ zC9^qDDOEdeOI07W=BS-iD^VP-y4&lLQP{h$TgfqiUNaRtS+|%h*!@Nn!rgsMo0q;f z2uVCe7=%{Gf>%RXkcA!7ZjEd|_mA6uN~{N3TAPw*vD&2VDD+kJEk7F&3Q_Md-h=3= zmAD3&*2*&Mn#_BYs2Z8PHxMxNrILW!-{Ti^h}R8ROuo>c5)SQxldQ%yu@}<=QM>YO zp<$=i{vdV!TTM0UnL#u2=o|cyWG7mwkzaz{@wN8kRu~;*tTEJ;?`Jc4kifD#ZJvaX zOq8QFU3~aEWD9L;AojfYi8+L8*)=nnvR1WDgbn}U%m>rv0NoYAXqk4`bkdPPuju|*f( zvvgBCa+J%OsN0ewtX>>dx9e9!?yQCmeA?QcACW%r27#^kKH+OmI(SJm_JGr9Q{IA(p>qJlVZphtX=E3rPG3; zyuZJWSQkV2b@?jyOONwI^5P7JObfi{S^NMBZU6W5Cj~T*zGoMB-3=DMoCNC1ImSH- z*b_S!9EdtYD%)#2&J~3?DJ^Ri=6jl{f8M(p%&8S7ZKivvD;~&-v-K%#ZF?N@A+n_8 zQ?OU#(Q!XOWcl}z2Q2xb#TXX#cG}Bn*)nLhx<|_k`*`J!pED{B0DTp#27m137VWwa ze}~Vt=R8m6s-P5bj1Fs~$`bm+QFf8NTI-5F;r58byXkOfEkHhw^c5RWj3K=BMOYu` zSa&vZU^bd;j7I`{nKz4k*U*R{THdY3P-Iwnzg!RKj9@4O_a&{BwWY-e(rwhW_2x!o z(_(*mgx+qL4y8TAqepx($Y_ba1V?fl|9@)+Lc!ETxa#1!@ym4jOX+ zgi7w0rjmR<<-@siGY-HOhTixitLl;qpYF`dw~zAFc55^(GjzSXhfBO4y&@A53R4l@ zT!@RCCPl53YKI3t}@v5y#!Q!x-u_FDo?JM_hZz#ih~~ zxHn0F>6f!)P3EqQoC9=HT^`bM**t??mT7PXWmstITQU+~F_try(=4Lv6~pKeVF}Aq zG{sNa*OF40UDnym@6&}%4*0I%ajTwp8-w4P8!k+T2{DeNoQ_&FD1=E69 zoD?t<7Up~&+ett@^a}tDxeYm)TIv@<~UtAG$GiyJk9@lwhMhXx;K`Z zyF5DsCps0Nz=^k}=)Mh_La4Kddn963<{7kQvt6F*P7C-EO9*|Uiw|@;u3MQ;-wFWn zDw$~wDBB;ZRlezAJMAt_zLsXUTtv~k4cV-@3)ltk(twWOn;#@+*rsylALAfOiJ?dT zO$V4bPU?(|y;C@LY0*v6h}yyBOn%<(Wh)n3388(I z?LMMcyaa4ErC)|*(((Q!y77unSB`xN1C+45Ccdk;_5Qv%0Y{`#BIc|Ku{3M^xIOM+ zgPxyTYgZak`|0TlNWSA0&BczzdV`Lk0Kk5XBSw8)Dv29I9S~&e^2j-f4oniyp`o0nvS+O1$WFV4^7D&>NSjkqU<9u^frb+i|g1@RUEjvuL<~IQ*GJT1? zsV(RvjhJIv&Py>sR!sc-T;aTV!@f#lk<&-~p>%rtKrK|-vJ0zlLWWpFBBC)fK{rI) zI`Ej`KxQbfL&@EIZ^j;@u1m@}TE3p>2j2xtHDuL;wLuuNOU?UvN&FSgEUe{`2klJwLIrd4{m?AvY${iqG=|Rr)@^Nk$T5=M=LhpbVOj3i`=7qY*uJobv_81QcN`Tlap z&{Ew?8u_JQ+(4xw&_Z$UspmOeF~v!fuV?}5tey9FV|Bz(n47*Lr$m_m3BuQr6VlL)NAo~=) zk8V`P)}&yg)ANvTeHZ!WrhQLbGkW1+?{XO_M0~fpOQS^&zU&i!42x}OeycOzkila{ z4M%?x`8aBz`-Sag8+HcY53BM3eP))b%Cgx+$nEC9kCvA*ckbxUuHO-`LNkQqq|EdH zI|R2CX-HZ#@(?N8BKFGr(~I{+OkgF5PU;0snU+bBJIc^W>ZWVZ^}Z~yQ=SH^_YfWg zueAM8sG)*&a(i%aG_E#H>hRDA43Iru&H>KYVn&&LSK<9t z@7D8=H{k$xEJL$d>N95e{M+&UIAWpc7fIWUeyTvp=*jj?92182p~uc;r$G#DlmeRj zAJLWLdBmo6_`RMrGiLLPliFNK)o=*%@(h*u^)n@JlHNR!`odD7q-#N9iYW)?Q62OH z3HvWE7ouSdnLmVmg>cu*FU(Kt(+-k+Q@|QlLwbvDyJl3oKGcK66hGWr^?5Agm66w> zVYG@7^0B$9eBNz=zX--W%^NZ%;6cPRm(kUSJqb1};S#B-v}ilkGdtBizL!qi0w7c- z&6rzWke~7Tefqhfa2g@k)3r%8azYXtxQnin8@l)Gxrw^G#Gs@p}^jTV_%eC^FC;9A-bo6uu5LHxc2_Rm2 z3V!Mq?}Hi4>CtH})HZYM`+u$`r9fg}(1GQ>k8c%+pGT9+ z$Dv_kc8 z)a-^K(%L>q7G8mv

-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. + +Here is the documentation of the key aspects of installing and using the library. For more information, see the `original documentation in Chinese `_. + +.. _client: + +Installing in a game client +=========================== + +.. attention:: This section describes how to install the authlib-injector into the game. The game launcher still needs to implement the authorization flow itself in order to pass the ``accessToken`` to the game. + +To install the library, you need to specify it as a javaagent for the game. You can do this by prepending the line ``-javaagent:/path/to/file/authlib-injector.jar=ely.by`` as a game launching param. As the result, the launch command should look like this: + +.. code-block:: + + java -javaagent:/path/to/file/authlib-injector.jar=ely.by -jar minecraft.jar + +If you run the game through a launcher, then in its settings you need to find a field for specifying additional JVM arguments, in which you need to insert the line above at the beginning. + +.. figure:: ../_static/authlib-injector/launcher-jvm-options.png + :align: center + :alt: Editing JVM arguments + +.. _server: + +Installing on a server +====================== + +Just as in the case with the game client, the library must be specified as javaagent. `Download the library `_ and put in the server's directory. Then add the javaagent call to the server launch command: + +| Before: ``java -jar minecraft_server.jar`` +| After: ``java -javaagent:authlib-injector.jar=ely.by -jar minecraft_server.jar`` + +During server startup you should see a message about the activation of the authlib-injector: + +.. figure:: ../_static/authlib-injector/server-startup-messages.png + :align: center + :alt: Message at server startup + +BungeeCord +~~~~~~~~~~ + +The authlib-injector must be installed directly on the BungeeCord itself, as well as **on all backends** behind it. Note the configuration of the online-mode parameter: + +* The BungeeCord's configuration (``config.yml``) should contain ``online_mode=true``; +* The servers behind the proxy must contain in their configuration (``server.properties``) the value ``online-mode=false``. + +Using such configuration authorization will work for all logging in players and the internal servers will correctly display player skins. + +LaunchHelper +~~~~~~~~~~~~ + +Not all game hostings allow direct modifications of launch arguments. To get around this limitation, you can use a special server that runs the game server by mixing authlib-injector into it. To install, follow these instructions: + +#. Download the corresponding LaunchHelper for your operating system from the `releases page `_. + +#. Upload this file and the ``authlib-injector.jar`` file to the server folder on your hosting site. + +#. Also create a ``launchhelper.properties`` file and put the following contents into it: + + .. code-block:: + + javaAgentJarPath=authlib-injector.jar + javaAgentOptions=ely.by + execJarPath=minecraft_server.jar + + Where ``javaAgentJarPath`` contains the path to the authlib-injector.jar file and ``execJarPath`` contains the name of the server file. + +#. In the hosting control panel, specify the ``LaunchHelper.jar`` as the server file. + + If you can't change the executable file, you should rename the ``LaunchHelper.jar`` file to match your hosting requirements (usually, ``server.jar``). In this case, you should have the following file structure: + + * ``server.jar`` - the LaunchHelper file. + * ``minecraft_server.jar`` - your server core. + * ``authlib-injector.jar`` - the authlib-injector file. + * ``launchhelper.properties`` - the configuration file for the LaunchHelper. diff --git a/source/ru/authlib-injector.rst b/source/ru/authlib-injector.rst new file mode 100644 index 0000000..31293b2 --- /dev/null +++ b/source/ru/authlib-injector.rst @@ -0,0 +1,83 @@ +Authlib-injector +---------------- + +**authlib-injector** — это библиотека, позволяющая подменить адреса серверов авторизации и сессии в Authlib, не модифицируя непосредственно саму библиотеку. Выполнена как javaagent. + +Данная библиотека значительно упрощает установку альтернативных сервисов авторизации в игровой клиент и сервер, поскольку она универсально применяет трансформацию в процессе работы программы. + +Скачать последнюю версию можно со `страницы релизов на GitHub `_. + +Здесь приведена документация к ключевым аспектам установки и использования библиотеки. Для более подробной информации обратитесь к `оригинальной документации на китайском языке `_. + +.. _client: + +Установка в игровой клиент +========================== + +.. attention:: Обратите внимание, что этот раздел описывает установку authlib-injector в игру. Игровой лаунчер по-прежнему должен самостоятельно реализовать процесс авторизации, чтобы после передать ``accessToken`` в игру. + +Для применения библиотеки, необходимо указать её в качестве javaagent для игры. Сделать это можно, добавив в начало команды запуска игры строку ``-javaagent:/путь/до/файла/authlib-injector.jar=ely.by``. В результате изменений строка запуска игры должна выглядеть следующим образом: + +.. code-block:: + + java -javaagent:/путь/до/файла/authlib-injector.jar=ely.by -jar minecraft.jar + +Если вы запускаете игру через лаунчер, то в его настройках необходимо найти поле для указания дополнительных аргументов JVM, куда необходимо в самое начало вставить строку, приведённую выше. + +.. figure:: ../_static/authlib-injector/launcher-jvm-options.png + :align: center + :alt: Редактирование аргументов JVM + +.. _server: + +Установка на сервер +=================== + +Также как и в случае с игровым клиентом, библиотеку необходимо указать в качестве javaagent. `Скачайте библиотеку `_ и поместите её в директорию с сервером. После этого добавьте вызов javaagent в команду запуска сервера: + +| До: ``java -jar minecraft_server.jar`` +| После: ``java -javaagent:authlib-injector.jar=ely.by -jar minecraft_server.jar`` + +При запуске сервера вы должны увидеть сообщение об активации authlib-injector: + +.. figure:: ../_static/authlib-injector/server-startup-messages.png + :align: center + :alt: Сообщение при запуске сервера + +BungeeCord +~~~~~~~~~~ + +authlib-injector должен быть установлен непосредственно на сам BungeeCord, а также **на все сервера** позади него. Обратите внимание на конфигурацию параметра online‑mode: + +* В конфигурации BungeeCord (``config.yml``) должно стоять значение ``online_mode=true``. +* В конфигурации всех серверов позади прокси (``server.properties``) должно быть указано значение ``online-mode=false``. + +Благодаря такой конфигурации установки, авторизация будет работать для всех входящих игроков, а на внутренних серверах будут корректно отображаться скины игроков. + +LaunchHelper +~~~~~~~~~~~~ + +Не все игровые хостинги позволяют напрямую модифицировать аргументы, с которыми запускается сервер. Чтобы обойти это ограничение, можно использовать специальный сервер, который запускает игровой сервер, подмешивая туда authlib-injector. Для установки следуйте инструкции: + +#. Скачайте версию LaunchHelper для вашей операционной системы со `страницы загрузок `_. + +#. Загрузите скачанный файл и файл ``authlib-injector.jar`` в папку сервера на вашем хостинге. + +#. Там же создайте файл ``launchhelper.properties`` и поместите в него следующее содержимое: + + .. code-block:: + + javaAgentJarPath=authlib-injector.jar + javaAgentOptions=ely.by + execJarPath=minecraft_server.jar + + Где ``javaAgentJarPath`` содержит путь до файла authlib-injector.jar, а ``execJarPath`` содержит имя файла сервера. + +#. В панели управления хостингом укажите ``LaunchHelper.jar`` в качестве запускаемого файла сервера. + + Если возможности указать исполнимый файл явно нет, то следует переименовать файл ``LaunchHelper.jar`` в соответствие с требованиями вашего хостинга (обычно, это ``server.jar``). В этом случае у вас должна получиться следующая структура файлов: + + * ``server.jar`` - файл LaunchHelper. + * ``minecraft_server.jar`` - предпочитаемое ядро сервера. + * ``authlib-injector.jar`` - файл authlib-injector. + * ``launchhelper.properties`` - файл конфигурации для LaunchHelper. diff --git a/source/ru/minecraft-auth.rst b/source/ru/minecraft-auth.rst index 4012781..8dcd9bd 100644 --- a/source/ru/minecraft-auth.rst +++ b/source/ru/minecraft-auth.rst @@ -261,6 +261,8 @@ accessToken. Вам остаётся только заменить пути вн Готовые библиотеки authlib ========================== +.. attention:: Ely.by поддрживает библиотеку authlib-injector. Это наиболее простой и универсальный способ установки системы авторизации в игру и игровые сервера. За подробностями обратитесь в :doc:`соответствующий раздел документации `. + Поскольку самостоятельная реализация связана с трудностями поиска исходников, подключения зависимостей и в конце-концов с процессом компиляции, на `странице загрузок нашей системы скинов `_ вы можете загрузить уже готовые библиотеки со всеми необходимыми изменениями. Выберите в выпадающем списке необходимую версию и следуйте @@ -269,9 +271,9 @@ accessToken. Вам остаётся только заменить пути вн В более ранних версиях игры система скинов находилась внутри игрового клиента, так что библиотеки ниже обеспечивают лишь авторизацию: -* Minecraft 1.7.5 - :download:`authlib 1.3.1 <_static/minecraft-auth/authlib/authlib-1.3.1.jar>` +* Minecraft 1.7.5 - :download:`authlib 1.3.1 <../_static/minecraft-auth/authlib/authlib-1.3.1.jar>` -* Minecraft 1.7.2 - :download:`authlib 1.3 <_static/minecraft-auth/authlib/authlib-1.3.jar>` +* Minecraft 1.7.2 - :download:`authlib 1.3 <../_static/minecraft-auth/authlib/authlib-1.3.jar>` Для установки вам необходимо заменить оригинальную библиотеку, располагающуюся по пути ``<директория установки minecraft>/libraries/com/mojang/authlib/``. Убедитесь в том, что версии скачанного и заменяемого @@ -298,9 +300,9 @@ authlib для соответствующей версии сервера. Пе Вам необходимо "перетащить" из архива с authlib все файлы и папки, **за исключением директории META-INF**, и подтвердить замену. -.. figure:: _static/minecraft-auth/authlib-install.png +.. figure:: ../_static/minecraft-auth/authlib-install.png :align: center - :alt: Процесс установки authlib. + :alt: Процесс установки Authlib Обратите внимание: "перетягивать" содержимое нужно ниже папок сервера (в область файлов .class). @@ -338,6 +340,8 @@ Paper (PaperSpigot) BungeeCord ========== +.. hint:: Вы можете воспользоваться библиотекой :doc:`authlib-injector ` для установки системы авторизации без модификации внутренностей сервера. + Хотя BungeeCord и является проксирующим сервером, авторизацию игроков он выполняет самостоятельно. К сожалению, BungeeCord не опирается на использование Authlib, а реализует процесс авторизации самостоятельно, поэтому для установки системы авторизации Ely.by вам понадобится модифицировать скомпилированные ``.class`` файлы. Для установки следуйте инструкции ниже: @@ -352,13 +356,13 @@ BungeeCord #. Откройте распакованный файл в программе InClassTranslator и замените в нём строку ``https://sessionserver.mojang.com/session/minecraft/hasJoined?username=`` на ``https://authserver.ely.by/session/hasJoined?username=``, как показано на рисунке ниже: - .. figure:: _static/minecraft-auth/bungeecord_inclasstranslator.png + .. figure:: ../_static/minecraft-auth/bungeecord_inclasstranslator.png :align: center :alt: Редактирование в InClassTranslator #. Сохраните изменения и перетащите измененный файл обратно в архив сервера. Подтвердите замену. - .. figure:: _static/minecraft-auth/bungeecord_move.png + .. figure:: ../_static/minecraft-auth/bungeecord_move.png :align: center :alt: Перетаскивание отредактированного файла назад в архив @@ -404,7 +408,7 @@ Minecraft. Переписывать его сюда не имеет смысла Дальше запустите InClassTranslator и в нём откройте этот класс. Слева будет список найденных в файле строк, которые вы можете изменить. Нужно заменить только строку, отвечающую за запрос на подключение к серверу: -.. figure:: _static/minecraft-auth/installing_by_inclasstranslator.png +.. figure:: ../_static/minecraft-auth/installing_by_inclasstranslator.png :align: center :alt: Порядок редактирования: выбрать нужную строку, изменить, сохранить.