From bbf0b48ef032fc1494e773abb89ad58136406e3e Mon Sep 17 00:00:00 2001 From: dengrb1 Date: Fri, 4 Oct 2024 16:26:37 +0800 Subject: [PATCH] update --- change.cpp | 80 +- change.exe | Bin 2898277 -> 0 bytes include/SimpleIni.h | 3630 +++++++++++++++++++ include/ansidecl.h | 436 +++ include/bfd.h | 7937 +++++++++++++++++++++++++++++++++++++++++ include/bfd_stdint.h | 47 + include/bfdlink.h | 1019 ++++++ include/ctf-api.h | 552 +++ include/ctf.h | 620 ++++ include/diagnostics.h | 103 + include/dis-asm.h | 400 +++ include/plugin-api.h | 572 +++ include/symcat.h | 55 + 13 files changed, 15375 insertions(+), 76 deletions(-) delete mode 100644 change.exe create mode 100644 include/SimpleIni.h create mode 100644 include/ansidecl.h create mode 100644 include/bfd.h create mode 100644 include/bfd_stdint.h create mode 100644 include/bfdlink.h create mode 100644 include/ctf-api.h create mode 100644 include/ctf.h create mode 100644 include/diagnostics.h create mode 100644 include/dis-asm.h create mode 100644 include/plugin-api.h create mode 100644 include/symcat.h diff --git a/change.cpp b/change.cpp index 6f50ff3..07809d2 100644 --- a/change.cpp +++ b/change.cpp @@ -1,91 +1,19 @@ #include -#include -#include -#include -#include -#include -#include +#include +#include +#include using namespace std; -class IniFile { -public: - void load(const std::string& filename) { - std::ifstream file(filename); - if (!file.is_open()) { - std::cerr << "无法打开文件: " << filename << std::endl; - return; - } - - std::string line; - std::string currentSection; - - while (std::getline(file, line)) { - // 去掉注释 - size_t commentPos = line.find(';'); - if (commentPos != std::string::npos) { - line = line.substr(0, commentPos); - } - // 去掉前后空格 - line.erase(remove_if(line.begin(), line.end(), isspace), line.end()); - - // 处理节 - if (line.empty()) continue; - if (line[0] == '[' && line[line.size() - 1] == ']') { - currentSection = line.substr(1, line.size() - 2); - continue; - } - // 处理键值对 - size_t pos = line.find('='); - if (pos != std::string::npos) { - std::string key = line.substr(0, pos); - std::string value = line.substr(pos + 1); - data[currentSection][key] = value; - } - } - } - - void save(const std::string& filename) { - std::ofstream file(filename); - for (const auto& section : data) { - file << "[" << section.first << "]\n"; - for (const auto& kv : section.second) { - file << kv.first << "=" << kv.second << "\n"; - } - } - } - - std::string get(const std::string& section, const std::string& key, const std::string& defaultValue) { - return data[section][key].empty() ? defaultValue : data[section][key]; - } - - void set(const std::string& section, const std::string& key, const std::string& value) { - data[section][key] = value; - } - -private: - std::map> data; -}; - void handleUserInput() { std::cout << "欢迎使用CSSO与CS起源切换程序" << std::endl; std::cout << "1.CSSO 2.CS起源 3.exit" << std::endl; int in; std::cin >> in; + //CSSO为1,CS起源为2 if (in == 1) { - ini.load("config.ini"); - string bin_name = ini.get("User","name","0"); - int result = system("ren bin bin2"); - int result2 = system('ren bin1 bin'); - if (result==0 and result2==0) - { - cout <<"命令执行成功!"<{hAE^#$n zGUT#LLzg0P+YtOTAx}B3GjYxM^SUl+88TI7yu<|(wBUUft`F^!&pTv_%qQB2wz{4I zpugdo@#l4wdxy-F`5xVl7fl5&S0}C)u&~%H0Ou#ocsTO{eMG&m6Ik7QI3d;%9SI$E>-)qOf_<2efqj8 z*0fQ1xbV0DkEsVe^C6h|@NQmT*QEKC^%sT}wXvaEb+^y2q=FA!1sDe+r(W>rjs0AP zE7lSku?&pkGH>Z}yUc^!S*WGxiQau(#({dF`3;h46Rt?Q>On3+r_jV9`?iZ!tgWpS%D z2`S1E5u~`(c)_nxiy8bAUOV9ZE|)elgrdWd(QiadQMNAD!oq`*HmM2pszl?C0jj}x z?i=&^0aDSM;!>~?7sI9JJ|P}+ALd2(mzE&^)1Z{!$TRQV;dTMWi;^nH5a}32-HHx1*pf4^{ z@+v+H8pk|)M?Y6$ka7gtp;oO@q6Z=KG85+BmwZjt&26gkk5koHOL(hloPIkBR(xjk z(mLHrG#43-UT9}@GVa=PKcCxAu!8-1Cx{;VOoU=(owFs%M!ee#ico{d+&*=()2{nfU?IE7nM;;lmQ+ z93G8!gzB{S+@a${$E#Y4TUk;V=_;A`kxyUk)3&)IT}Sy8|LVjClSI3bzew=Kk_I<( z<2jevzd%KKsK{>|fc^{(T1x%B-CsJvt;DwAR?po!C*P$uo-}}&;+MPY8$SrNevlp1 z-!o@!ce{edNng%kf40Rwn^#k@*}*Sh1mAX<|N5^Rjhy0E^)Jnl$Q{tPsd~=40b}gj zDAKBGE8XTHNLQ=g4!<%o?mw7vNUUJs-bdi0CFjF^YVA>QJI_!kqsiS!w*m6EE^j@LdE>13xIw_)9Ob z29bv)e;B9#8kIdyagx0p+lek(b_AZyH-W01nEM_2%_w>rc~zr;_?egDZCfvPI(Q=X zDM~?r7G_&pan}^oTa!hn{<@#bIuDPNn#|dRmHY5)v}JdA0ro5j`J;pnr);yqxw%)57aZ!Tnaf!ptBQI@oPvr&|7 zl7C>;-Y8|gCRByjwbD*^F6XNHhrprStoZy>zSka=Lfjj>i#FXrS5;RmZfY15G=oFrCoIi zP@H}PxZ(O|`v_f9l76Mv7wYGFw7G@u@R9T9dg$PXJ;*A&dQ1>uQ*BNibgY=e7ARy*<#Fb5qdWp4LEj8&ghO3P$b^`@KSltnj;(3SIQq<j zJJi-sj`mlrm~&ihd|)J?2R#0GP6L1gOm*++>-{?TDYn_K)S+0*_?1n*r2v`~_fqcS z=ePsT6>i;UiST=ZRFh!ui5r zm5dks9*3SIyyb;j*Oj5ewXW&mEvmlB%mysgs6~N^;a8~%RlU~37oP};mM@k#FP5@? z^27M<4g&bu=LzWTLg|hU^^bI&9qJp@)BWW)E>L~VB`94NAC(>H8XYS3>j9N;>nhgx z^$u0{d8{SW1)}}PmE~)umPx!x`bv3byC#Nj-%vA^%&G?=ouhU>R?$Fz!4Jq?zBv0rQPVqgC3l2E8_KhR4WO8*}EX?$yaH zq8-NgLN&HI+(ues_Be5XITMg29a+w&Rpy3QXbUFrZDN_AFWMbj0|R=5>d}1B*4ilL_NoP)E$Y=O#a6}=6SIVnzES(pSFkpD|0>+d= zHSW&>hp$uhH-q|0wQAdpYH%T>{Akq}l^4)E)$IJBzSYeC0y-E(bR(fQZxt|c&(4!g zoamd7qMy%b@PPL}Qe)dgCs4n;w-aWkYUHc>SLWi+g(eRbt9rJoPb*B^ZntYW?USl? zX3cmdu>qOQoy^(B&<8HHLSNu223l>k9#GJgm@n-|C6xAXus{<LV3@h9DSi93RWf zTh0fV4F648(qGkA$45RL*>T+T10!Aj&@rG^y1&(>ZqyZFts6{ji`${Q0{w9(ZzzntI!ynB0uuj@$MdI+8Qn@>Se{Ut(~ zsu~MeMs>fPD3kTjG?H=QL8-cU>0MMk$h&B{Xl&Knp)-^v!z4+<8)Rb_*o|Gl#zKaY zcZ&8d5bYIOq@pA7xYJ%iuZi@MB0$z9xfwS0^fTIM#$UDd!ZF&g;EYp*&@WKk+bHxR zKif;xb4h?KTQOfeF~z^CF{V(}cbI>sOoM>$QXx=L{5{bj^~OSn-lqXp9 zwDFmDF1pbp^jBkxI(WTW)vDaG0wlnQmu7W)ZD9_E8I`4>N*_(oA?nhJX9mx%@dYQU zRaxPDWl2q*W|meDn_kY=dH@>5ypm!zpOeV}isf%?No;iVtGdh$%Y(l>Re7LwT1(`H z-e-lIjand7rnL<64{p(GRrc1;WN)E&gx?h}`X_0e&3+T*Z68V18w%UJ9t3Dy76-@` zE!Oq800~E*3yo7kRkNP0jtm_W{*@Z95!j(2?r2N+S1|2pbDj_5;_#syo(*DFWyyis zC$*6-sZ{*Rh?mjTYhTTGEeoN#VEm><5XeNHuv5yCK9#GL=u3D3`&=2US`q$~{99M? zK~Uc!D04B)Koe?)ov(#|Q{$G7+l&d-6GNB4cdF>1_jJ0XU%YQeJh-U6>g5^F3sjb8 zMO#8j3h(7vC^SZYS-M=)*T>ZtB0CPA@oQOZO`^?dfAvHqb`H?2SW`8sQdw{f#nz}T z4;rPbGx18%3yxvpb?CdGF}lncRpvKpPppS-tn?cfmiww!E4O~j7B;pbpY(?_1Zflm z$wSJZPyG5g*!x;92l>&bnP`mk7&RsCTGbD3i$Bh!#`gdQqte`9c4JAP&0i{5LmyS< zYs)DmqtLLUqjn3W!0jS_oYxO>yQj=mCnwuvM)3*nX3>sy+GC<(p{V9ZkRpJXzi zzi5{ZK|xQ0cmIJBy$oQC+R9}Xu#4KGBx4ptV_BAfMG${)0&A8>L5ji&8}xnEbSKAAeqYA0T{MG!{M9^VQt z@lF~F*n(b;Eue*{dRtj=w`h$?voIJ#yUy%+&w3-tiQ%Usv)vQJe~--0Iyd}qFy5FQ ztom^J{m@fKlkeg+FI4BwxISL91_OZB_i_T-i*9!-vMAA6z}}}U8CV*xX|L`*<8@?6 zyzTJIUYH!)#9Augh*6asnM33FF&L@&1M1C-*E~$H3s~WTJY<}|gH}vg_&<;fYFmkY zEr>2GpuX1j0S=SOU65kYVZ9dJN23_j-?zR%=2hM7pun@IF@)WJKEvA}9a8-PmiK`p z*J40#9t4F2V>AX-C?pX^&VY|pFt;_|1%D;w1{<@3ZM8vQAXNK+qhTRt2UUF)?3fZe z2CPc>!cLT@D1ZU!*wQkLd8ilLk7rTl4{am|A}vxmB6OK~1qh<*z4+n%! z23R~;ir8gCp-M|+^kS?Ho;*|$ugH75F{X0ZnCiI(G*0H8G|vr%p#?vw{sDB8tHtH97}lX+qn6&S}7AWCFtK#9#^1!Bm-)J^8l6J3Z` zwFXJGW-1gW=58a!kz$Pp)@&$J*$Q(rL>KD68QsgA0lmfC_=S^sNRP~q+nJ9_XMQA= z+1(@ad^>Y#I`h0#=GTCACK_Yy%$#Ph(KsiS`L8`P9|vcLIG3d}m!>k`Kzg9bHHZkx zCSS?oaj&$;7>l};XdS9Uk}yR!@kdmbD+^CTI*i9 zub(>v`<8Gss5@7<2IODJfl%QACHexqEn;{HAO-Xk^bST_yvs{};}Bkzs!m=pP|Z)=90ke%LYPWX(?CZqn7)X5;_DadSVpXdT{zsWpY z0B98?m}&z%K>{-mOhLMm#F>_<%tjmzWi~CyZmdOi(Wp)4mQU@v1-zqJhj5s{FGYNa zj|AqU;6c?Xu^c2=9s;f{8&(S)a@)DoA=`*>>qm%_O@pI0g5u}WYtj3m(z3Q*kW3dz zoFz$nC&QJK^bsD0j5e7^5@7=w`QWFV>m#5C$voQ3LLkv3(l(i$#1qT}?Tv7FzBC$i z*APgbCJJEesVwQ3q&FO5U4%k%0HDOrCV<8jYJ7O)Sxm(^A-&oXdYNs+)s=E9XVR_Y zB%*a_284nXgsQ!RKnhr!cBF9#jU}CkgYUI&I5=TNF&;S%#Z-M}p;oKrSa)X>S5w9R zv|+D`_qN7o6n|rkQ+xK_)t+Y^mQj3Ls`zDlS9>4pZRjdrWM&qGY8GM`4!gXFWSd>| zO}pWkwq7+Lfmx71(41T#;(JOg&SFw1gv(cqXG+jXf?mSqJLD5&5fU^d1M@$Rb{c+j z$6nIyXux(jr%$Tk`Fq#!{?-RjeNOSeq-vkMceNj2{Y7ZbP3ACMDW{{H7Pgp`meayp zGf;f}9H)iq-qn$3`2gGTqakzKFjF8XC*>b6wMvf?I|Y?kgG5&NJKL?H)CC!Rum%RM zo3*9meTQk|2$f|il$!Vm>OH^FSY}*Z$<8xot7aT!rIHDRpyHwCDer#0u}r_ZQlG6_ zkD^`y9D#Kudh2%5lunQmzX|tJ&A$vuK1OZ)qKVD>{Pl z;_qI}cS*b9*INg#*H^ciN4Qt7@5C^>akU!n8>o->T^lfZ`z!m0isp?$a2T=p@P>5Q zrO8`)y*vD&caVE(|5*XBC-5vUFGJs5;5@u@75F>jGE+CwIe?HZ87t1M4Kf1Zl^Z2bw< z1uxcPoyND3@1`rUkKlx$!bTs^)%vlwCKJDb1VjG#;68xI*bvbx}IjP z51}O(`4LpWv<9bL&0Mg;^iz^!CcoDpyYwYtR?v;G&#E-W7 z4$KK3Zv@89-{C?4cm@V4V?1%6Tdy5k(GnRtB6O@iYOLrZIS!Pw6(d55&C3oyIuQ&I z?t(Dl<14_8V?1I=Nh%hQ-(V0hYcLx9D^){X=-`T$?X^JQK4Z+-_{e19_LO`&o`2$9 ziLY<09q+L@LSHLGB+7zQFp`U_e_)uTrusT1dK9b?t2~5$7D5CdTW_uM6eW5UGO}WX zbRs)yuu1^WnXwW%&Q+g}>~Jd!II~$DRHAqAdae?C3RgyzswXSaEvTV7q{Qw=n$vD& z$w+r(2NF+U^-eHoNe$vTO7v&&7C5VS9SZ<8oC%t*N4sp*5lPq$5HwQkX?N4Dn`Tlo<6IuK3vg z2k2weNabWD#$gP`Dpx77DdH~6rNk!L2pwlv#HC@Voc5+PT@g`dR7UhuCVt!C8Q47y z?X<~k0C_o_*s|~%~clCy$r?+@}A_#YE7WAuO4)-NxtVp3>+~r;H_9m~bg)0P zlJTZFvMN8Dxq=B-Bf%%6B^V!>g`qsh5n>F_8Q0y%<=FS5Fv$%2c_%ZqQGgvq?Z?O- zQ`lhkky#kQSbanV82z{s_xgk#O)T~`gF{@2xKFH%NyPM4qOt{Y1O1kYq>``EZ(}II zLaZfIjHm4f^S}>4BOzswJYB&_D)ifFfn!YP+xV-;?DtWMC^^2^rYL zJdO;EDgzzn{z3*7$!B7^K5eih8QNSU&=ysnB4*ZY5xC`Bw#A9#vT@l+kk5$IRtG}Y z#no3MJ93nT4kyH?w3Fv;!#wPVq>k*tnSI1C9IB&w65U#CkFgSqNPkq!E?9`fAgDqI z1!3YWS@jG|XRN@S;3m6f^C%3L$bBO0&37W|G{$3nF8s3<0M|kkEs~3BM}S{pmEm=I zMlQ8pOZ!x{ttgBPG+A^j(7jQuK1+#iq#hfi#7v|>9zsfV5<01(!~6q0tbqPf05%T6 zS&ZxtL3&U(A>LvVLM+#jbgjNni9JNhi|(c~1-hQ8MBid}k5!_tNr=yLKu?>tS&6Es z)&>n;87lN;1EylfmZCH#f2JwX=b&4;x zuxuqd9QkP*0nBABB0d?YS}$P0VEYAx^#mR>n-@D0!0Wki>@i^LGsc!y`i6}yg)e$9 zp0RSO)Q-x*sW?kNvDF7up-2%Vcm|UQGX~PO0&W0<6OVa2JWn86ubV>3klqcIv2PO< zFIBwo*UX~@GOa%P6TV^oQaER2XiTt?N}D0_vH%%Ap8Lw<`L6nGthWou5v|X5$pTRM zxc5+&r3OJ0KYI)MMDv%b+1(mi36>EJeG!>68~PNUGa9;UE0qO=J2ls{n~l~Ww^he?Vc~GK73*lm0mHUx0NPmlVqeN)CM;mn5{x@ zV5ywoMj#a39Qv#Jd@?()utdU+?DU7i@loyizaez>x)s@RjI!W%yhGSk%o601C~!t& zBL2+=8h9Jo37L5r4U6oA2sD8yMN=^)kEVjnet}Yvo%KrWXSgBv2-dNR@#Mto88`)o z+Lm{#$A*7p7GP*duHs6zKZ4xWQVKu#Xc=e7n(Ocr&`r=Pu)*|U`d)-X`98%FYhe@} z2opu&2ntC-L^)aQ$0!N;5_d@X=D5NU%`67^qyJ#Lx}eD;C_y6nHp?m6Rm!4k zkYtNCTp3oAY8`W4K@Fz2(Ix9=9N-8sXWKH_e+r(1V#+4a`d)5*c91OZgG?YB<-ynH zK2zLZ56@**p|ulGgZdCbS+4R^W64lI`sWyp&f(9Qg=uxOmKi9o#^lmUN%o^r9{zl- zN2?sH#Fh|8+hw;N#)G7TfWFWv>?e_rz0_Y~8)JCc`aK}99@-Nz zW(er7U@^qKLTk~vR-yxdWo&b3u5WuC*7HpdEIoqQx(;#q#40_Xky9F1KhSoZHbY@7 zb;H(RY=shIDJ**l|6KHq0Q52&*`u`KiI3W)>}|;Cc<#~`H3f`1s1z3_Q$MP%3vI<) zS$i6uk*C4XM;}4i8MCwe81r+|vXA7UI$ePEfBz7ixsV#tfN5BWZ=x-?6PQsL48 zriw*2;pMVkYr&fie*jjYATL`Iv*#7N<0$+N%{q*fzwMvhZwV)=W1Re$7xY+(aWf!tcubLf)-%WRTAl9a`t< z%HkEaa=|)v@Hk(mc$|}-lQ15Y<107`MnH}G29hIHTQMU33O!bZ9*cCHsl=$q7$p&U zLC!n)Wl~C2z>1>;_mn8N%5vu^QBwezs>BB2hMaZ)$j5cvx8@=Ni;&@M40S2dZ%F3& zh31G%K|X^E`w)igd7_vz;p3S6+bONov~Iff>^c*92A^g4(sX9In3 zZ*IE)^n^Gu%P)|{`aOQ=PiN2zA+fYtj$gN;gDpeLpvlja4jIHU?CQK9pu#b`5UL#XwfC1*c+gwXK7)#lxflNW$C19gs6bjM2kGAW0wroD=r>%&co+?y^Ips?QAN!D);sw$pb7G?NWB z02mfyQW<`nDqq9NhWu`}jw2&G`jk3E`0Cg7(e%HoO~c zcxNF>#`*`^=~vk4529kGa}x#YKO5=I)A2y$bXjwh6J55Ty4dV&NFAHK6GA1M{R?Pz zn~n@cS$PC=r46RW2E%F1Ofc(EoM2u|f$0=VU-U9Iin**-l#msCw?P`X;i;5Q?UWOG zK;=l4P;X5^{Zkq$w||MDFq=0NVKBCx4i4Ks29UH?#Rn^gdFuDfu6N~o1h>WeQ^k8k zQ|$Nuw%=pARJt5#W(GawKj zjb%n5rMfhfAJ9AM^mc#Mh8r>1`!_1`4_;}$u^#@m0WC()%e}!?A}|pD1S49Cu&q(l z#}56MwH%2Kd=b2~YLVjTapFE*c-Sr0C&W$2WAn)EUJuc}J3m7ASAYy02PE*lxcuWUcNCQdj#zJwj2ikLx~-f1o7qU zFq(*#VF!jwwwf&#@0-|C-?L{B04fAExZJ+g`U->>{R-lWNql9=Xt>=MD$!CvWw4)d z7{>im6Vp>)Wpu6`tN#JO{LjBK8)qFOa{E~e*7FJOaT;#*#yiehGt^}L4Hd(eO#IEJ z2mL+a5g@oIV(^R}ARfx`Jjp5IqZp`j;8;B=Q-; zC3Y-sd`4X%{7EHxFdmfKgj0&n2txNmi*PvpGYQ-(2LeqZPBB%9oF@ceTu4>o=P+0CDW_&S%+DT_Erv^^U5FEKoEL@MkZ zmP}#)MkoXqAZ^6wULI^T!G3|(4>9DK%pp%*+Isui>coa%pMGwk^#Z!8`YKpTM4M@l zKsvtq|S0Be=tNyuk9e+3K({O@xyn|lZr)oEsy&kf%Zo|@JP4(Wqxjj02*@34Old#vCP zZo#ki9lB};5Y)cQh8qWpXr0%?(Id*U-C-rRS=_-{h^@yRnc^y`z-e?Zc5YXhGz(yS z!77K7qv6+7%f2%|Ud!i=&BNFk5RNzTOitilV>~AYr}cX`WBuv@^!HN%9D+|b_cs6n zf6j^DOxu)l1;%|WJTr&YLsw%F468?T*?>ed{h!&0vxzV}7WkoY4C1kICjtzsWat~u z#Lgg{#n7G^3@{vlahtQuU~##bV=ubluK<72fea+`ns2=HZas-tz@P4VjN4?G;Z2ws0L#GJ+F@7E$+}sVQSk_CXY!E(_145)q{q-P z?r@7ESmC7@Yj=P|E*v+69gITkpq&Ud|)-UC^G# zh#SnT3_@wN4EXlN9YLHV41KHh4(s81PObAYC8mkixI^K&q7!B?=k1)ELQ|aBZ;Wnr zH}3ie*ovH(!CmuKi$c~;^uFXDyF7H?2DF;x9b$=5viY1%lNP+yI;Vt2ujO4Ya z$V5vp$9*s2tJCu}b1GMNU1*Dn`wiw=WnFAPS0IkT=dO5*vSafbVuxH8?mR5k7&ad$gs%+NJ#4oXFn09sImOinV*J{)ZgS5g0jlO z@F|HK()nppI3LYsHnb7pY^bbIg&H5{5w!AFR)$XTVVP7AS$qH}R;ZdG*lZtGSp{K; zP$2w_7$IT~T5djKoC#J1@l-h>jU7Mom5n+~x;+gJES;CutEhzbmur?qzocXkGQORouBi7nlr!2|SKKxdD>2RhVoYX%4R%LI))taN4hR9xUTX*dbIHsCp};tHz-Q)XO1C^nM_u zbsiet+?I{?d#=P=z)RNOh5D`804nh5rGLWbtDWcmWU6|Uu*M-t%3bvgB~~V|7@_te z-cPP-0nl5cFsO1X9~N5GfA61WiI&-$JT@Pg`~|pUx0jpg-EO592ds zOz0EF2Fq<%u{s!9@u^ktthYeuT077;VF3qfY4EVOFG)Z`LYmBtk@QdE+Qyy%V((6+f7KF zEVREu#ZXRJ9hYc`rZ5~+hI$=(b(7EepDsmS;9sx5#97EwjDK)&O3RQ-(#O{pEoB+}m~pJL*@oz*eS{FtC$4~ z=urV8U_?txP%@|^hz?cdMQNZ8r%%jAGjh<(u{_B$?KG@PFy@qE$4F9%jw(e)n3fbM z82d;-zej+xrU`C}5L!L#vjbx{_*sVmEYV;CRD09KZ?WE1#@X%=>AqDtIrDt0qNRDr zG*7l0a6O3!CpFdE?ZecQ68%Epx|;p&$2bq$c*EFS+K^`)=#STY?BlRvVF=4^s@5yf zM&M{4|FFSYf`Sq*aUpdH-@#juhh!-iBps#h7B76xe1bG%1 zamFCk6F<~ zVWvd69Dk?x^ReH^X25S?H~jtw6$tz!`-NW-XgN6U4!xxUyN)z=e@xq8(XWh?#7u|? zHYpbx;||kyBG~`Tk(^#pVuziOM$+N<@jW;mwTgZr=a)I0UuJ%R_@UE2r|2hOh@QeS z*eNpDr_FVpfet0t?97ATOMi4cXho4Oe39Lp=5zBlz;C`tzTKU$z6(WGM~54p5oDog z;Vqy(0unzLiWOH3P362G)=0t4O5y5$H!(!Ym%11IaT<#5TYoqe`;3bU9YW1Gwg;gW z9R@bNN3f~Y3LmluYsDmM9k9HFtQCS*cc3OtPxrUop6}(Y35Q7D;%+ga-hL8)LGFHw z!`K`ImX8HWVEdxP345x44jM*U?sNUwne|^G>pyT0_3uP{2}6PXQvbBuGTQ$uS%1Gh z)DPV=XMfed@z#v`8)f|m@1cISAAbM7x4#E#&Wa1Im%E&jY;NL)D%*r6PO-;Hdn0Ep znB&=3IXf4=^LrIZ^R!l&Q`p=7)|apoY5CCK#LjUgb{ABvy-Os{Tg=$T&v&!HI|1Vw zY$5#)$2Y`J8V4dL6xwgtl&bHP_+X3xe6TCkP`Owbkup{vLW%mSw$Iz>G#nCgFbex# zplM1}K-olbgPL~LH+74u2i7fmP6&RmDiOK^tHYfw{p~+q`TrSJPeF$`m@L1R)y8KZ zoWQ|nPW`*r58#itFblZv`~ei+fG$p<5RxeDg?^Z@zv@3TlLWJ6{RMlF56I_YObhLo z_CK51e!Kny_FVr*gZ5MXhiBGr>&HX)T>o2`G2Hj|2Vm#wjcag7jEJv40}*38wUdCh! z_<7vT8T@>mhaxz?dy!pOvn|F|HdYiw0l+}+>b9X-TYWHLbPA9^@^ZeDN<0w{zF z)Y=zjpk{k11wY1LT(@n1;0H{mWMX3Lqr>(rKf(P~|Ld8ZbeWXj-g~b9KxmJB?;q;J zfbpCRav(y&5k3FJy5%*Wv#UZlv#X=xGauLGW3(>=Au2|*%}0o=hro1WeNC(OlG|QI zXbe#Gae48PSQmhEakvbwUVkUB;iLN48%k_3U^LOn9 zWe@ekA6%E%PwjszvTObQ_fS9EzhCN~gt*Hgm|XmNp!9dJ8hFg@z^BSvs6^j@k#qRk zJPg_7)*)Y1l^%xBSwl#SLF;$%O`;&N*C)TjAija5PJDU$zZ+qe*A~F zuESz<^4h+{C7?z{c+?403Ux}|Lq!+B$c+k79BYOUCC-Bp(PdTdOa)D2$?*A>R_w%I zjVlXdpM{5OJF}IACBW}%Y09*Q#9Kd>Ar*hQ-c2O+BX`BmXi0~7`<-cTtJw#U#4Ew?H zY4`Xf`l%G9_pP6#F0WEzuV86|bmnl3oHK2H5ParLo!*IHDs}p!$jte5vFq|m?1$mv zDb*;%o?Fdq3>R?ijb=^`=inv_3r9RbEE~a)z7GzH#9p2^5c*2-`9MsjXH<;!U|JVu zxF;Y4fw{t&N^G>ao|cl%p7G=d zu_STd`iqpJuYDC!qXap0+-0T)LXa^F;|QLRGP4C8ASP-2n2rXgOHg%K(h*z#A>zO# zkQG|eyvNBDQjRkCV0Qz!li=%uJi~BywL`V#Q>E@1xL5Ix5A*hie@81nI|GF)B?^18 zuaKq5X!w4yuZL&WKUUW7*@Jz7eft#4GWJXTZL>1kf1a#=FXA1O_gDSHGV8bfn?8Hd z{`dD&``htRk`xQt@z{g*Tz^-u{lR~AkQUC|iPQ7As|O63oRNXhrLseE_ud|ZH&)rQ z@zd>bz__P$3h)YG@-9%9U4dYXE;#Ka2y8CB(ojXU@W(%2~rzp=BWlY$iSEu zi8LEY7}FCOFWya@cNaVQ7S;{zn_li_)Z^TD zV~+YOEG*{yMlBX|eW~iOS#KI$o8$L(o-c&3yW@MV|M6k>zu5K2X2w=w+_py`Vg+Z$ zw6b*vN~y-gJY`9K{G30CouEa%!Jv)bM&=AlmV|r7=i+!3?nJ~|r+2z{_epy)*@ z*;(c-8Nhwoqq0PzJRNV?bv~tsobiO@ed$*)9=27<3Fc$3O*3A{pC#jU{H7=4VLdX} zCW83}H|oPVCXM4y>W{R?zdJ9f4PH{FV1mkrPeV)MvvZf1fYRo%h;lhym^gW_ z^cV1c;;ntgJA;pa)Ss^xNaZZYk`tHtYwRgXA@yVC5vS}sUTJ!oe*+rU{hP%&C8gSY zFl=5J1oKna6knBmP-1E8{`icfH4Q$BGcL6Lid1dq0T`AD`LFXBg*@4CD4uX&5C$3L zyxTEci5-UGJ6?$~AA14QN%y5gVxiB)rjs1iMr zHDmHL`d}Y+j9gpgXaUv0raL*xHaEhirq*74vx(IeUybUP+rh7#UFQpaaQyNVK$cH81bTKuM%jQSKlvD zyc#>(#E}BFqXGMN&5yBfJNH!&Ix{NEcca=f=0py_;(qjZ(RGjkhUSH#;hnC36U!Zm!d>Wc6Hz@8Q^AY2TQm1r4g#%(dNK2R2Ths_`^amRYMZ-p~b zCMti={M&taAVid-h#wDZML@#3lL8LBZ$bHn@B%E+B=}IVI5EcAzooUnU|)loHv}hM z#o&c2y0D<)McfLvu4oV4>5^Bn<0P7lO!Z#{XE>Ek}XMYcR zL!~~eQ(uYCT7(@r-Kw_$EgS=fR=MS6ZM`VTz%DE15cY!Ff5aogbUZb2}( zVN08L8~FsYb0)1l_d+WDF?T29U9|a1e`MDiwqWLNqi_aZ>HsYVpi1C^>ZUKYc-YvF z@2Ar-?fc_P{R5M%sp#9ycSAxJW~R(!%1WltFQYt9V#=_e#Ooh`{~SpZm;xS$f1GJZ zEw~j!0*YJa;OIJ(6uWnBwRi6{a`(;#1m#l-@^FOFQ@iw9e@6?D9*zd#3z^kWP2h~% zZO*s`4e61`V|tKBYQ!k2ltL#aG+=OI8@+J&b%72^Idvi`jMc; zGni(mN1s_6uoL;mGxY-q%Vc6U^1mQ0Fzb`XEcP>`Spk4g(Zd<(RbL|AuTPPi>g>~K z+CwZwfwW3{H-XbnQy=O1-XQ!J|JqllCM6|~_)v1}73vk~)!)`=YO0KZm04CIc>Zl@ zX{$HZcRA(1SNt-iu0ObtW?Z|0GZ;6E8H~|+k)fEpn2U#$TQP=YMXlBqNZn%%402@F zG7QU7QzN6LuTU9UzXU7E-G;AXfGiLA=)j%Dy?v@t!{q|tPq8-N8IGjJAg5*Yas%?G z#v|haoSTZZp=i!|Xk5Uk_h?mvgNpwXYXln`FS_wEX*bRW5LKH8N2S=|S1b@PH)6sq zr7p)WCh$(@y}22JK$RZbhDesRW8Gd5Ba;vnFtmH5US@$-_}f_4&qJngsAR_O8;VW} zt7Cw&)faOOzN%aB%}>OfZygQPZ~!FL1LsD0%sdoIAUi7bi%*w&2i6L7_I8T>EDu6O z1sd-ty%PEBFaVs)w&F86ty^;v<@L}4mmncvT%QME1i*X&cL#M+K%WXYSQOYBham7= zwu}5#o93*w)~#iGGoneep~AV0;wrQ&GiG7lgvvGS_i@n|V=$S2*nk4x$>QE=c0H4= zS$MEdXSb?%f<+yx^~CKYRh`GG0cW9`|N2V^L?`STHx<{Sl=X(-l(fVBF9eXSrSR=i z`azssfV02;g^#;&M(jEq$eDx9%QsFketjBhx4)D(4sJ61TCvQ=r+af$1E0#nUPF;b z^a`iM%EVe6RTuBf>#^BS?zYqyFtc`bjywJ7J01_r{c;P+@e2RoL32-L=Hb7L+oZl< zQbG-FVo<&gm};H%Gm6mSK45IvB>9mB;fH4oF947yU*Myuncqo`7hl_mLh=J_B3gv7 zQC`n^1QMTEb&tJaOuPxYo@2RvTkoG?-{Qq4y6vaogRx~`|KoG%uK4`8bq`O2aQimi z&7{xi|G6|ppBGBVDDi7|gU_mr`QmEqKaz7UYSn+0XgNF?Wyu-)unr>wALG~L3)NXl zGFkXvHQ2f-zUa3qr+>++`FY4uB97N=QhVg@Yv)ffShuAo)*aLVVmv7s)EN~11x@G~ ze@+hyvDVCEwlW+a07bw><&KF2qMI)U!Q!*C<>tKuVI&+cFL7$BfA`dX(0Lz% zv(kO|Q{wp<@)JKjK(r)VIr7~5`{~z1mhTa|WnY8)o@ce*lLO!sBqX(7QtV zyK9g1_Q}Knu;-a9X#U}wG|M?Krcrx-?@U^T27-&?PwO9h9u7-ecPX9LgW`;`-In{^ zZpt0+=)L2uY&24q+oP{a!t657nSfNw@?s3KyYI8^QlHRlC%3Dr(vL+{1}e zT6n>4>F>|t%XV!z9Zop*JnDrfhsFy^#^+-pVh#7IE3sdY3oy{4CwZ{ed7!eem?@dx zeO8v-PKBx(8qIv9t3-(nhGuoR_bI*u_o}-1P%lnDzyJ#4=~X$|H~{RCGQ1WFc$Fs9 zvf8FGiGSvw2u6Z+pveQXQqTZouq-$@H?uvIRnaU*g?c9>9G&A-S16i zImW_0Y8c)fU;C_A2j#&TxDGbmL{JxPfEbE%K5%}7aUf1jRbtLL%621D4bNzy0A_N5 zs%i-8IE{!6gYgX-ng_2|X-QH;bUEmjyuFZ#*_n;9zhn%^>;nA5VbJKjA^;KmZJ)^` z{S&*t^md$cUJWzI4oNLjLcjeGS(XmQ9EaW8lk{wM_)_$d^QmW>Kui$?`VW9w3XtHq$)>Xn zz9+e*qOcoo@$5;*AILb{MwO#N1aXBSh@qaqb4TD;oLT%lJ0@`zJPyo)TnMe0hXERv z77wt`Fvds0KM`jbZ^Z#7{O(3Adm5~N62hfp8mP7V~YHzN+_RGl+8RtAmyRHePl8S z-=c2VqQ=_8rOtK_z%&mO$nUP@*AxO|q6Hq~%?;S%``m1_6+7YjCXRIifxBr*B2Ya&NQ zNADuQZgyt8%rZWRXjXSSvs$d`6582OcaMqUndALd?v0%s&CR1cUjt#VnWU{DscT0E6OZ$l@5h$tY-w-|T_UQ{5}32xs^c7fBYy zcxmtXI&qV*SKXM$KIf~O9&l8JRf|gO@yZW!tnK4l8|e@IFk5u@Lmt>88+Fg$jQq~| zf@R=`QxF^u4U#M&9aw~Z59KB-o@0rvHH~7UBxVJZp&3qK3oD|I!~2xne&4>6o%?A$ zt%I0-ZvDB=fo1&A;`~oNLQ_9l8bNnMQB>h85;#yWsIT+&?Sw0hW#W7KAM4zjvjdHjgAG{W61JR2w_g_?*(?)OgP8Si=W9zeClw zY*V$5I|Hp&w)wD~O`qFt&nMJv@rh$`&j&nTe8hJ=Ty^1vc&Lxh&G$v-=1&ajb64Xt z6p^`oaRl@YqFpNZku@Kq8} zYw(Kg;2%7@C(hEVU%{eDSB;+YiU(ItPJV}j7dt^bd@=&sSX<#Y{}iHPy=FBQwUMaC z74Tr(u-@0KCgH`2*ZfS9SnGTTZi4z>sGfrH%L`S#3q$f%F%Pj&+hT>h@>ajM47W%r zcT(D7mFZh*Q<1MNrrNh{v4(Wwxb*EM>0404DJ9e;9#F$fJJoESj<3}}&kt23u@dRV zK5a4H^G|JzafZxTJO{tan5gRSqiDo_ul&6|)}ktBwQ}N37rD&0Krr-qtV3U|oV_B5 z%~U1oU3_n@z#A#6gI^5lF(L>efU0(<$B3Lc0dst+vA7WTs{U5ch>;*9mcOXbm0Vnc zCu6Y}zZEU;i|zog{YQ=eY$Mv#BXSEvT3 zAuhM=c)b1z^Mwd1$9H&)y46^yA-pv%qKeGzgY#NfpfsMU13qQ(DxbD0%X$JScMAv7Lhj_&LC}71iv1@S^N|JoC7OOhQGDbZ!ySLZjTZd6j5KBC&hbS?A zKLGE1?s$V-L;oU3FAmkl)&5F1N7cyF9|r;p|0dEkBwULGFADJ!-7|iM2YjL^u7Yt_ z$7|ZFd(YU+cJotW_%^INJ`&&Q>plI8#7h0d;;CWbz-P6A+-o_n_}JqxAz%=Ip)+rQsvCZx zD>HBdW+|sm!|9$l+&>+!P{jw$U9K$G3xMRJ=2x^rP|t3}t&GLAY2~a2?_mk=gv%j- z{8+#E8bJCn{s6zn)zt0u+!A4xX_<{eoS&($jSQWn#4ZA2Tmir{*o`UJ^m+-Ly)&?T zssy^(c$O=3+BE*6e#GA8w?+rzopRgHkcv}P^QuQHv3%TjBO=bPM5YWv*4u|8z>8yV ztMSusuFZEnj~&KN)Fl|7o^39JAn>b3w2B<2=!k0DfD^~0{Dzdj?_G4_0Pmtl@=$%S zYCBgc53$|-4SV67Ek!XHn8f3bznW2TAu4v3k`j>;Al9RW{4ife3o}?n7laew(c$*Q zIMpMj`rtQKPvsYRg}3YYy1(uYYgcL=IifqY%-bM*nUtD{9o<~ja!8Rh3ks0qhAvQ;7xGYw@Z+_JJHPQNPz+jAd%WdQF?jW#-r(2g`5%5ovf=uYYK6=W9d< zd$qx%qhG*JZ+dOZ561RF1I#Hc2kh`e%y*coCEei*+p?)TpkETN*rmZNeBK2BT@AB| zwdiLg7L%WFc<|Q=Bjr!1_+(azd997db8XomIw4t8a0T%2?TNo;+9MqQ%}w5fP#H1tjS|i19V1CW>yyf^pTz!ht)T$xszADA8AImRpS@)xz<-RJ{{=SI`steMsCa z&{bQB_P-PUtXn}xUd>^d_3ye~sb_lxelwN9I3Pe7Jg2n5k25w(FVU)SU@gZO20EbV z9tM=stC%842ZF^vNAg#GrO;RMl~Op%gP-eRD6h|3#`c-oFWr3GUz|>`5m1h2cBTIu zIuxz=q6Y5iW_&%~jjyBjSsa>*x`U6K!F9XB?N7 zUBZKwuM{iE%m*%YyL?LzMN@_T12g^__0Z}3@}w3LyNZcg-~9+;eXoJ zo#BC6?)oi|C3IbbeRR4PGbmX?1*zg|yh}NvUFyY;U#V+Rvy1mIsZKHlmKea>B=RGEqUg zC`$%mE+e3~2j;J4aue;za{ zHB2N&O+Zu@Hse?8$_qWFbrmYH3e>MWlK~sRC&eUifU_(387i3M*Utc!Q~xCNl~J(j z9gq~O=pRNWsK)6p{0F?e8PSCQ+4?N^VPpUk`VAbTfP=`n=vg(?yn6k;9{qO^g0oecbD-cR=%^!sWt=ADc5V4lv2K}pbd6k%$+%$-^jo+POICh5B zg-lZJ_;!7;_gAqssuEbA&N&%5(GaU$fb+sd2HihG^Mc0dmrTlcfpC7~1k?!HZTDvn zK}oYxlo`UtZ?R~)!G9AlS7ZL269(}D5AXTe5otfhfq9>PTgX!AL}<-uX#^yPW+_qQ z{DHP9gK`{OT8`fdrIq-_(frAFek);I&-JIOUT_s)S@+;$o>XbRv9M4js?p!TIC`Dl zIv=a@lO^+a)YhJf9wyTaztiPvQ5N3KTLZV#{khYU$zN!ly=NQ`HN6>OyOgrW`U>>F z4C$Hk&xPt*Czfn@T}uI$rnf|VBEjn#o=d3Fw~>4Lu;GxDme50x zz&@vthyW^vCL;c5zBbmWY$y>$Wsiy%c4d|isY0LF`TuO^55Jbt;@glYaI-(D0saGg zY>>lw;C6m|`GqPm2yo(s1OGknkAx)JUWe@3>ZJ8@Dp^1oVkbX|WNDBb?-rxIf-Rd1 zT*;!(zW^PK;wSMyXYdr&7(V_>CY^rRHfX^79IQ!@jKB9>;(Vw3sp_m)t# z4#ipEB~X1zUb1MUz%f^0LcE|%q!+uzr4~wk176FHB2dtQpKgk>yIf<)u14X= zQMF>{gLf9;dw|=7cgdoUKWCc@9>oLw)8jD)?MHtXt7w4Gp)jw8yJ{mo3sM+P(09e$ za802Z#%E;!;!Xh~m_`HOW&Nt2djVc1UbpKL_|Q2UG2=u)X)tnY@S0uxPhiuQTaG7+ zgyVdbjF)~Se8O$X zp55zl+6{w<{xhE%jRwF?{{pROXP&m)zu>~Zw%iBoyJXR_&!7W17im5VU6pts?JvX& zeurGiqMw6)RyA@+K68HIFVC;4zc8$*jptOW?)CGl8tO1ZmFLi(?`L`Pvk`z*`*nn_xWHUgpr(Q2U~bu(xSOUUmcaIIWnG zPah>%wL1I(eNpFo#R#sLoee@}^Jd(D@xa&cm+?`bN%MySyYtn?8erExzmnL6)k*Vb z0;jN7d8T1tFn(DfQ1JEw8~8L6DC9%}@z9H9iN4^E0GK{d^`FpjzNJt~U>APU(_Da> zz-;`yv}Euw9KyU0!Z`GUBDAoc7kh&z&99XG)R3k` zD9^9Uez7UC%}+|m#0Z%rXyiVO@+c0JSw7I%Pz|SX{?P9IJZb(7r0BMuoqC*&IUGZF zs%yLVxDx0XNZ?BzI-O36>qD85SIvjzkl zMh>WNtgWthZ*(}I9~M7k;P3E(e=Abv*Ke{ zkgk4XWM9O_As177`?Imvs;XrwhPo?&Xh(P}rf^sd@&(-+6Mb-%v>ynxa{w=VfYHzw zeD-E+&5a-WA#?R^3;|YSXmd`3I^2cHA-WcxsRyg`E%BuFcBvpY6;EN7a}umylwY6U{HO_Tsa8uV_gq|DI%yMro@-I5R$Cua3U_r zqEjV+0nk_CF7))e#6P7!#zBG#J=l&H$qlq$8$?pF=s~0;UUB3>`ZqYacMZOb^y=%> zY=1EeFs+O~*g=?qWYOeLgvO370{tPs2O}4>=YhOnaV5=#Ppx`6e7LG-sa2~(@;kLi z9nQssI%d1@X;tKdin3r&5V??rkbgzuLq|Wy3+9X3&qwW(&;!-Pxu^ojiW?V_Gkg;w z@DIfK%tv7tM22@i&dl)4>SWPpNJ%W~HeB&ye~}oWmnVz*0V4gg*I+6Ar6;mOPlT#1 z#aRguLk|5`WT6YREsC$j%+Xpd^=U1>MKy5zYrYFstqEfcp8FsQFPliR#EWWy4nkH% zTo%po1B^btnu|?Ti_|2zFZ>zu-fs@pwm)d`7bLvhnx)$%y zX@}r~k@z@X^rEZeWvaZ)#)TjE%^fP9b8F=#C@<&YvMTpt{G!+Y{!x!!pAPzP^yKA; zDPHjY2J*%-@bEu#Kdz%;#3ZpIk#ngHPS5|0whewyn@N^#a6Uf zT#SUIVNCiCgBH=UiVtmWm5svttNH#Nyhjnt$U1HXltm@xpQXoxF^!ij>RpE6$5F{5 z(kBQ(_cmh+U3!%P!&jaT&VsRVFt*#5Jg0CeloqL2nK|O&_gWc$bI&N?EWP1hUx+Ma zE6oq_b>SxApJcp8$i{j9QtG|o&IAbi?#s(e;By-TST1N=+B5x}p6^Q#&aA}S2y@|6 zd3dfVG+ZjQHv9#&A7+JWu`F3M8f2rsIe@Rxwq4r;yO|;JXrJLD{FMKdvEJ@V!CGgBI4WIC2?lfvi|u5;VIOo0UTU3rp%I8@gv&Wq zSQ*qC%YyMyB|Z`8k>ektg>Pev3@UCalSSDdKzvTYG$iJ4hh18xL<=CZj+1;P#t7IG ziPd=QPw)q#!{=ZJXcN_WVpEFlb>#xHW`ti5HnRkVwiJQVL^OGBp?GV5?J$Cj5In?t zkX_p=mW4RtbQ1_Xcw8(WIt;YJ8e zP`?~=gM!R;2zj1c!nR}emA9?d18a$T8<9MwTy9L&=aiNti;hPu+Ty2#(QGf8O-#j} zR?LY5q{x~q%0Vvk>k*703VD#yM!kt{7A8S$^HF>-TJUlF#%qavEwiuEOt<;O+y~_o z)nC1}z_kQ%|nk~5+J+W4NFde&sw}5^}z>84%vDBwZ+gXzI{aSrw z86%^r{teH%Z@{w}f3EZiYUZV^igbrtppp)36quvdqhg&6?hziT1+5qZHflj3f9aLU zA~!I@`eKO2D16Iw6V?s0zwuU(?P~-n&8>BefKWfE+N?rXxR1F7gf!P8*_;GDmH3a) z58qD_K?%q^PSEj{Tc@H3{4DANdyLsva#wN-;W+Z|ERVA3G*i$C-jZy8d_w6IReznt zX+cwi`09X{+RlpybP6aSZuD<#3f)f%A-TbMKTf{i!Ng0P#3|0rOnDP6jqnD4DmsN? z!av?O$y;%MSH}JQ8TSum+&__Vztp}5n0C9LlSQ*cymkWn=9bdCpdM75pH0XJOI|MC zJyl8|L1XwNJSN7fada$#nFwQ}36+E?J3L;C3AU&WgQ}5T=}W$;@*p%E6JA^HOTGrn zeO9U_j5$gfSHDEn^VRqm#EiH3lCL9Yp-2rHqp%KmO*k$&c>as*3rClTkHNCvmU1F4 z@t!mM74wO5js_Z4-+=XO^*WaOz>A#D@ML2zwQ(&?se3i1o$!5Ei zkhH4)t(?69>ONWIMR*sA-Ycx-`zR`$KTJ%?b;YUu8shy*ykB}0Nde0jVtpEX!z^xLglj1^(X{23r$||h%Ct7Hox&@7IxyovkgeDs$Rd&e5)efeMHWTGajZ*=f*ZK@_xqiy+ucFm|NDMC54nA7Ip@@=Q>RXyI#suc z^>sdwK)!uDAU7ZQ;e;-f`RQQ%+4}$_C&ch1#K*UU;8U77Cbla-dZVhu9h=ygS^C6` z{JhkmX8lvO!p`3jIn|!_Gn4C_&+4s#|5Yzy1r?^^U!kV|0dB{~@J?~8+Gf{mp2+Xi zV%Ng5TRV_ayY-x6d1~(+Ceam5DkU{mrS3C$(7t16Ky}qDTv&-35i&yO|FS(YI?AE- z!5S-mEHxC^*OB*m#E-+ASV{mVO3=8Nb56Od{m75@k~lEX1|)d8vC5KZf`P8N*oXHqq72 zdmP^sjy*}Jv4v!3o<4s7GyB-rIRs`gQRU$Zeu+N#8{V*oUl;3Fk+$N`;SFHOk6wQL z=sBpnb7i(}0qTY&{Gc35cQLLSQ7=!Wrjf7crS^3OcZ3}nEm9kh(`37XJN24rpIU-c z9}6m3@r!BuphBUV%Pd`9U09}ROByy_n)jU@m~=wc;IEx8)l<0j(@@!zrSfi}FER;*tr@>Vy4roU zP&`D_o*Jdcx!NSjR-!M;m`jB`b)FA1GEqp6Y$1!w&`auRQ=VaK8q`7LYPjG>Edpfb zGBSGo_Vmk1!R6``| zN-v3;+3~7Lk&c{?4DV+AA)IAoztj&oKc)khXtaq2ma(Nw90k}E(1yFeBnj(14NoW| z(D?Dlh=T`5;;C*%XL%*~mBlZGK4a$pAXC@&c2m4--oLGfx^a|`f}PApdmpgyaHKQk zA9!)Tk~5u}l2rVl@o;gQh(yewJwJfosm@s!a^4F&tA_HvnKdwjps||JlD#<4iyfj- zn@gx6{8YD$CdGS+?URnwN&r@eUSt`=2)b=w$k`iqzE^j^4S>=Zp6PdM5tvjWRa32I z{>b3LSD8OS{~G#amf+ezW{JOosrBv&dfbc3S`FIjAjVdF8-KwdrXHqZr=A@O!+1Ow zFfcQQf)d$uQ{2Y}8RU~Ah3>3CJHEp@1+DX|Qa~pHT?oss(ohZN6zkqI@ow}p0!EDu{ltDS@-wY3Cw7@@5ja5WQ{2(OSDzd$ zvL1K^{xEk?XLQ1aSbp$K;s$`j)&P8b&ah%<5Vl|7ub;KuIJVQD*9|7bXOz|qE1ojaPR1z6s5@TQb6pBF=O=hU(5SSk!GJ=a^hOnI&C+(l zS!0yRt6GmufYw2sDV)xrV()sCmSuw=(c=wpv}gHVwg)d>2})(pZyRO!#II6s2D#$ zvS#5oDCzSqj6>C$n;Dqi!#FIB#>81C!$%*V;p5o<2R`mY=mGfHA4j@L5qkCz!^lw8 z>xQPVbA4xz?oS_|@Y5h;KW6wjfbAnc)8N`c{5%PH;O8fXpS}+SMF2}f`h|GSl4QOHF6&& z2at&DD)sbj#At*Iizf^`EnmGhs`qfEg)SKRJMJ}}1vtKb_t#C3lh~l*{B+=)^_)F2 zNDN5zHBMg}TuT|U)Q^svAjP-=3$e|l9={>(a9+?KX7hEd`ru+xC3)kmm-ec+_zvIa zNZ2XZN@3D&IOsIw$aU&PDSsioB3QN8!?lC5(hXthG(ft$q8ZrKCa4isd+rNnBu>U( zdIFdS#(PhRg7L@YL2ZW90V8=x&}Wb@l7LsPo1Q#A;oRUSQOT8ea$AMr6vDbm%9CGQRZZY!UGBZQv8 zrA{BOhPm17Hs>W)Hu}Tk^Mi-SU)gPar{g*t;!K?RnE5g<7e~)Li+Xb^B@cZBcgxD?9=G?5e^@y z$?Z5OSMh$4bY0CVYX*;%gkHm+w0AZBn0YlbzCL~PSH~B>G-7CZ?3d%~HrZDCmGO1g zg`_$=zHa1u+wt{Bto=1)T(C?g)=8aT8)M~JdczoJTZH{^?~%#=xVy|K9W(Cspxyqs zqrZ-2!x)FG%W+8I&6ywD@Q%X}ET4;_wa#9ecNl*hm+ChNwI|Kq`JgCAoW?Z4Mc~Z? zH+*^58)M!aB#F$3A zJMB|5eS1pB>Ze@)U1CawoM+(a!gfFpRH?KV996|4dI}%dT>J(U41K^x6FS zjc3^T%ej%aAM4lkc8lUfeeT_-W!OZsAlS;1TQleX1O?1ph8% zrvG!`9oF-9{)$vr8RyK;qb$~}xa|mMTNSQJ_R{Z#oRxZ=y7QNdQEhLe16PW}apge; zeEzmsT~&v0&2z|k6KV`gs|>xQ^kyCjuH>lU?24@lbt^>DeN?}?J@mgT=^%BP=K;D4ty~ z1k-!#t(S|UhaeUQ)L?PA0%}?H0pxnODCOmh&`f+HmUoD5s%Vdh&i1#}G4k+2Uagep z>tIwAOEid@2KFQAW8w5-szx!_tS|-D zkOO#kRzP92tSZT?X^lSbY}p&KUOuB@VFj546b0}Qoeg?IF)T0hy=Hfa1ycy%6m2Mt+QSR4fyCM%BBPRU&m^Ro-aM$rvqb9dNJLBu>*zTXRvCQd)q~g zVm{0Izsg@@eGC-d_)B-c;{8Frz6EF01Nc=}vvOi+sCz9I(|$J$V>gTn$<;?;Cl#7` zYz0CGBYsC*CLD*yQ#-1p9d%VJWt9SGb=KgOga_Aj2IRyS(IFUWDh_6vK6%3LlN?BS z>A(~;RQfgb5XZggr}K3`S@9TJ+@`PaT`abb{RMBS18^XH6r*z;YBp|*TL;RxP9^<$ z$vw9?9oUBQz>gI@RDxJ~Sb-t|p|ai$Y^&JA+(T_MyicQC_3zazCL{UXr6PKT^f3Gt z7>s8br&5mpljFF7QmV)CiqKNsBp!gP%qa(d`wAmBxj^*Liyl*pGk6%DC$db<>$pKd zh9R(~?$+*xgZ*XXc3(1!GtIn$=!vnN?d{g(=p>$FibQ`x8va-i{A+vSm z_e<t@uVJ z3Ya)PS7ewk2oQVd2`qPRdlUOamLmcXq>rj_%V3T-m6&a^9<1l1++OZkL zI+1YpdfkN7AmV4np|&vt#1dR;Ci=7LZ@NEaZvo{Z-347VjJ$x(19#U8 z?FH2bu}QfA2lI^3>PTf|4M0ST)dZwto@A?2E3@rYmub4jOLMIF-)KX!N%xbsvxT-G zI83=3izLF8{3lRQ9oM$<1AgT(tel^%oF6$SQ*j0>euDikw93a?#J(fe2s2kB)B6K{ zk=|tBgcpP#W4)fa_zxqB$5FCPW7i858t!U3QRqIduNjG>Th9Svh6-+(sH+aDZY6dg z87NauHuh1y>(#7EvB-ywH5!5o6t9R&Z9*5eUoa<=xZG>T`uYwj@r-I?{4ptf2U=G z9n}J=eGXU&(R;~~mCs}a;~}_HHHB9E9bH%pM*MTWX-YBNVKZCt6+}R=G>$MoN22X<{@RFNnTBa0On^riCkv6|kE=#BHOIs==PxOJ$+}|oId+fGA`*q} z8%ce25m$J|<6Lgz#2vR2N;(i?@2NeqQhG`;`zP0~c=8!hf^hgAjf_coR=i^&t2Ior zYmT;Nl=1~1{zR$Nq>O&D-KNGomMXGi?Pw@jaUSUfN12=#nUXE=?Z6H}9HcWj(TMFl z#4>clv@!%j%jNaCwZ~;^W75xyjuQlPS=NBD67(nAvBHgi;n8pd(#J8~Bz#-A7}>$d zUk$ue63s$Gi#!XpDKDhLuY6XX>~dOhu`7H;@qAL|HZ~HwTdW3(Y@xjck}iWSajk$0 zL;HVqWtK=Fvf?91C&$1V_WnD__Lkw7Ki*axT%N{Ji zOH4l)z@tbN0385HjTQiYXL*jGhQ1zhaJ4V}YK?^21KHkfQkV?~pG>E1ArH=mpH)!& z$Vxc#%ze+0LBcqvUW=Y#rW&l8^JzFzOs@UUAxDX?RE zN>kV)(Lg>GE)S%|R_|U@S!~A^3;xI$+nvr|^)=-a#<33W>&TB>C73Biz&tiDy0G54 z6?=Y#?>+@-U4r>djlP0;S}KKmr}_Nly)r6{Z11>iJ8=_Az4N?5bSpN!(XdrOYZ|tW zKiROpWme){zO;Od7HAr+#6S{~>^T6~g&tdj($O#=>uhE?1IKz2L9_aD0t1J{K-J9! zzCI3OAX*Bq4#qSae``ocu*Hh!nX|BtE zA8{>-JD8p<9IER|cRIVcNtCQFD^=@`#8hv3`~{ZuIT(LU2$v2J4qEZoC4~|(6m>vo zeHo-ekpDqOpa_fY^efY3&uL~{4Z`W5SI~LK2!UuEu42ld(Pem5m6Tz;xDhX6XuBYR zZl5@p4AS~==3ZrCXlY%`e;_!r zlv*I8g+fqF_lAR8Iyl`^r`Agg^@M&OsniPk2B`spME&AB)F`@)NHxGBsl|0sk?kDq zolT0}Zi}8kE0Tr(;Df!5?d8ND;2rX&ki*GBM>1rPdEe-y8K$f!-I6SvqTk1Qf0Rx! z3x)*u3>Pu@Q3Y~n=cG*vNZb!3SkwNQbcm+CwOuI-QJ2Y@Yr!R^4X76xB8CS&yGhqQBv-bx&WX%h zCV4{*9ULrL%30tr7I?f(m|Ln?3PT9oGSknAB`BcwaxAbH){TAuo)dZC+neZs2D^_?t9;LQp zPx6{1J-`I$2Cme-zO3}+MHB$7mS5shFj;aY%d{5uU|k9Yt6#wC?5G!Ee5<8WiBo~r z!ux#LxrM#*gvr%@oN*k^ta*UwVmURl3Yys$vFbI=L2$UG~72s-Gul1m@r z>cAeUo|7w7C4Tu9;BG*X8DwiR(E4ZTvj+5;UVTUIE|eBGkkW{Y`q9qnJ*1g@^mKz+`NtRU1U9_}zVR?_ zy2;m;dG&-kS(9YNA4QQmCqcS~I-mKim;0Qg_3`ecn379V6!$}14_w|Q{H^x^F4Odk zBt2Mu>K=f4lOUK)s4)WY zrVyUnFaiq*{E{z8`c!yP)Bb~KNPGya+4Us^rPl*mP`opd!wz~%{XVzSh`b151e>D| zsN+d1(YftYcWZuv&f6anI!DMcRqkbtw6OFW1z_5*VkM-ZyZ#3qv53gC*vI($t#0p+ zkE1YimW)hB>#8B8GI1umJvoQ;jlfZvCGd7e-pEp<`XWOh0}aeNFp(9C)k#tTB#x-|a0_lm zKBj&45IbRE?X9=od~5mW8|=l`j=E{wP1lu2B^<+EIKF(s_;EK~b-ipUA@}wPq<_RK8uh&9iluMppIPG}**#`1Xb;w3P(@y?2K@*=ge8zB)Hsl$BvmqY6Z zu8(wU#FeY|==IS(vG4y7v3N!NL#x7F$`4r;E+_}&iGZwLLnOKYS^Qf-*O0cf>2K;U ze~*2wdK|a**C)r~s2R?Lc`CgVTmGkGZ@WtU2lG{HdyXh(6yX!VdYzAbWvUl1f_NYH zAMOQ@d|;dqrLzyg4k9k;!cqLdoFd2*G{;w+aR_KhX1(smQyULKC4!&E9ZSiBo7Y)~ zuEwVVsX??VJ)1w1CD#2$m0k$~>)i#SeejW0bKc>+2JQkCsQ?Na?VQoq&n zEjgtaaTe&_)*>_v{W^n?max2wLJ)QUrxN`$WR?%bvMu8ufgppF#QS@F$AcUbEC^B{N`|EcIx#^w9+MC>FxQOBXB$-Y_0 z?p7^ij{tS2BLnl4CTa%TPojPV*PwnHB*N$rCM5;{h?)hAs9;E$v)n`xG@>yqKf>ci zGP=>e&nP;EMf>z51B>oA`b#{uKGz57RR-+EL^I(e1JiW5?DD1^!Lq!zNA|H5aI4h2 zr(mY6Pxc>y3Ux7TDph3p!TZkQYarbCz)pH-%_r9MSMfq9Lz2h#@b{Nwo}if$xegFv z2va&glpUH+3+nqu&O-RZpNNiZVeCFgK;d)!C3N3NpW<6*BiJ%O^@!2a+()X-X}3FK zgvUJ(!-slj683MtXKX{Qu-_$T4GK?n=Y+!JJ>2QDz*LP2%^FY34V z>ldS0YC=xFOj((sKoFnNfNRJpqUY1keGu<4zgkG(bXS|_@k5Ugg4y?purzoRQB?2O zjMGWuz4nv`_Q?tQ2{l*?a75io+ff_0bA?~BlvW!$P%UZR#Xr{2CxNFo zNSP6nGAHdwR(z1IiN(wjwo~dI2bg-EG|WGXec5#gI|nIj4*6Nh)I6r@H4-;Jk4Kth zQpu^0&t(;u^)*=VAbSQkC+nOK>gf6+2;Ks$ma_7UV&AKERS z>dKF^a-*)yg=sZ2L6#B(O$8rl-ia6xh_vfB=@hmkC})2#kKQXSfswV-i{G{K5B8YwMy zuo3EXB2u&a9cVHaoxc90AGz<*R;-S+vFD;UVVDfR#|Wl-mTkI83+6i<4^V0F{&1N? z0ic^g*6i{{ja}y^>nr!Ff5EGqY0n<=>M7eW(n?I^Kx3;vqQ*BS2BW=V4 zh_-)A*F%yiy3(Zt$&4g>H-e08qbKD>rU}uVQAmvtFc|n`l{schZhg;+ecMzdw-}Qr zl|NzrG069}KOij>VVRiwR=?C4IPW&x?_kk>6l7p^VKyi7r+T;;;q|`hT$y2mRrJ zjLakOr(1(z5Cv2B>&I|>g@>&f*=3F;;64MS+O4>Lh3vvnCmUBRsK?%yxG3BX#5TG; zpVWnTlOVprun^$*57jF9A>A6gchaWh238bU4)kdaESWhy|8K#HTEjA@z04h`HW&mAF{OVv%<_p4?~nAuJFp$!{xuGIPQ6 z_3C4$yQb2KNcQ-r3H{kJGt-~uqnfxO)eIwiE*JSc1>iT2b<{y>GKVRpMZ=3(!p?>>+tMezd&EJ~IPtPR% z(;FeA7|eW_^NW>!_`zdHf+y^+Qbk-`=RurD=0&fALK%@D`{A5=cB3pG)xBFKV3NKY z3}|e7qhw?#mniBl@3P2FS?@5a(4X&A_kkkMBY~!Ur%rA16~QNDWNZ>` z?T!Eep7c>WFF+9Wiu_RDt86QVE7cJ)bx5IlxlzBEXV;qG-PmfQQ}MY@S% z>BOu7$nqE+nbV)n*gm%7d0&9vVh7`%!33q!F14N2@=ZK#7wU4VAD2nGp@}02Gc~{v zid30@ti&Nq--L88kGP~hNp9W@_Xp^OY<5B*OAlz*-areP%$#b=+_MAmuF9c$>c>{iB+oy))()XN{{X5H^&a%(2tWV#;ba!dsGOj&h zcOYpLHn6Hwpa8{7>f+!#%#FF}z*!ICXKUft(s}=`2yLiCVBiJ^E-ob`lybZP#M3*s;Tc7>wwFfy4b7Qh0Nk& zAVjeZ`jI*po-UtR{k7C%P{_x`^pwpb5-&f17BZ{`1Gn03OdSf&wdkB`dMLyz@owx6?rHAW*+` z6ycttY4@pT&_><}5+}v~rh?@C^<+M9_tUtjNCPd&F! zjRh0sI+Y+B|7QfjcNW~jpXikp+idM!=K8in+B^L=2Oz*G1WdL!W;5<2$1%Qah zfN_<(gKK%Qb$%tF)wu-~QiR`;LFbW;T{XB4KDdkC@WE-N;EX8Niecyho#At}XQrTy zmg-Uv-+}b#fcXFqL%B65VvOhjw26IjB&g-{L%;d0!9Ea$bgK+(6hh_R|0wK)@S&3@ z+{r%G*8BtHiBKG$D(pea*S^VvKUQK45_+vk2d)E$Q|r`)H96w|O^k0A`DFNA4YFtx zNhC0SRC>Ie1-%~xMs_wmVDmvi7fkcHb>rj&$Am)0hbR>XkrfwUntna zotS3dV(>P9DIwjm1Ox>2dv51qJ{f7dV=Gl9-gv3qqjVZE)mf#wumrA1s0=yZ;b5oD z)Au~Sl`MJhGnl^#0K_J!HjHwQpg=SpZbyOP`tOy=BzgKQ^o+lLK>qES{NLS9o=tDc z$v^l!3=A7kwp%d2E#p@?d;-+x&T`yE7s_96Z&1;% zaD%wmM7ZCDr=du=gY7NIdX$j@tG%#4@{w*Y|aFW?x+DP>Wj}ti<0? zj)p-PgOk$yDrRX3KB7Az=bYL>Y1#E~valnpqlUenkH0Wa?=YHOiAIo`XSNbwhvx&5r?(Q%#T6Ue zN}RVB1NC>%!>~u?92Pn<(+q!onj3!%9QfjgzR^UYLfzg!rb)C`*AiDK3#G)1dV+cB zHe%v>sg^@i7yGN8hivGvRpOj)u#x2+jS$kqZ)XVU$;ac7I!o*oxIlx*?R)fuTIdEY zkN(8!E|x29M|_+idB(eJrXB0I0eOs1H7@-4bd4sM7hS@S?KxwEeUH9%2|p>+^Vvy) zW+5J_zIr_XJftEA&-4Eao*6lK{_Ho$#{>8AtxKeDzAhwXlY*e^i~>?EZJBmf9>RsJ zct0kw<1Z@86qB76UCcc?e|r?+)vTU4g+-EqFDFs~Gz8tF(aLE*5YA!&cK$Yd^d=m+ z*M`GO9Rwheyf1jUA}vfqUCyp?@=CMhXgq21T zIKIQEqq+9DDe4~X9BGm!nAj?&Sw}Lo z9&{lN;uxgMdJIxJbzr7BiAzyJ{R~4!2n4OT*N!#_r#bEos9nhO2H=-jPmY9!F1hwL zOj1`%Vw`fBrLne5Z7OdQV4>B!7D3`_GOk4e3D z%(_nMaR?N7-(cwm`Y|~Z|0hx4KNn?ueW&_r{IS% zdKcaRQPH_KDF~2zvp^b&9$y*rs7lnAr{?qrNJ^Z~>}1Isw`d)gdLBHuHX=MI^|;s; z{|Xyjn1QL=A^V`rIE)$c9kavn{r1y9be`7^HM8~$Hd%g}P?9&T|5y0Sp^nI*AmXa9 ztd;g)2`6F?>CH!*NNyC##o}wSNQK2>GwMQZhO`Gy}zG-sJxei@Lunne3m5Jr5?9oGV4LWD>3D{ zP4uT6yx-ial^^am@J46TOZG{+_Fn~%4iGzZ(Ngb6ig}-&;4(X(LlFCaFLMwePQov= zR#$q?f4_-VYfdh4YkkvN@P>5XeZ;t`hhPj!<#-?3!qgi- zU_(?r&pZtJX|T2_sxw9Ki@bf@Eu~N#4+!2x_@nzNaG1eES@wmbJF$!uNTO!F*U4MT zD*dfg-QE@=>)(cu4n83dGw%dLh(!6K`x7r13KBD!-L6g5sX8zE7qz=P>6e+zi?HBU zCQx6KQ}Iqdj-$Bux>O1WgJHKExx$1_On(OH8RaJW9}SZ1{RBA!*_;VX5zNh;6Uf4k znSEVuZBARa`L*9>ww=ueoicZ@>JsMl$mZ!OhMW}0&oa9tn~kbwj`2w7NUcS-9@0hLtxQ-oa4ym~Oc$*8ah%4yvyg{*oFW(QP9pSl4ic_FyZE($O4Su*@I_2P zY=BJgfph{8U21QYUkb3i{rds@10-eok<6ItSDV6aeht|^GbG~qMJD*nz)<`grJzG+ z+@N)+cP56Snw3*)7r{(C7z;n`EL^;T*&}kwGtfnH8t_A%eQ?EEKbt&K$LCc1J#&nR zK1HbQa_e#*;X;lqcHKS9{umxmFOFZ5G#)=vZ=$~U$TtGV`$3)O5UR z?B%np=`94sB68kEyK8Et2;4P4zJm49b~F!WeJP1d_B;%a)MVdJDIpF;aw3uI+B)aM zItIb$=!&0(5C)7Lj=dC|;|rP$u_q*w?C^8lE@y!m4S5mV&n@R}R8B2q_PxWlrhkDn z(Wn0MU=Vr4_zp`ptK{06k%;Cw+L}4Zbaeb?wn8`PPHB+lU6IV%XxxCs8JUSs)Md%= za^3ho>Sj13#LD39LFOWa&{eXJ&*6yPoPHYArL4VDTg-X~SF8LUi9UZEY=k8PA6yT+ z?pvx>{r(o;c@rh_TJT$v!6eh%Sb$B?+>p3B9guRaTYyNTU;{c9#vS|E9L^Iv>yELo zv*eJK#4pm|KU73V4q}UW1Nd8NgN{;_@S0DPsd1EGqz

RqKHD@8b=V#OX zrfPB^kO2(E6k_-Kx^*Rs9eyyBCw(aMnf+CTv_A9h7DFk`H!T(HR7BAtQrzb8uDf?9O0^%ega#Qz@i zFraJt;0|>pm~oXDfl_L*Wb%{_=f?)Ah;5T2Sn+XP(Wq^nn(^BeWYwt}rxE&Tq>b|Q zJLZi>o_8{SX@06Tf{Q_WIUYi|_5hn*%4GYS|`^H3Sl^ zq6h8jh3Rz7mG*6i;~PgK8vB*uBck|)!!u`WVRj7Jy!$S2;^ym0?smzpW{`(ZaR;qxs8#Pw#@M`mMA(^Ndm}K0NO%;4>$M$sz;og$KxfScTtVdf zU$JcyMbz4y9h7R&%Z+Sx&Q|I02w2^?Mdm$x15L|~ZfDj%F6ECj<)M^=)nL37j&t}J zcpqqZ%!jS|i~RStAV1l_TPPFmSITGb4b%AKvX@AeM%NeUp1mf6&MC`9rrWE2 zI4%btO*HJMe9AQ7%cA;V0o&Xl%!nlU6 zzBvo8ufXHQ$k^XmsF^cD03)Dco*LfG%m8{DJTi;z*`&@!a_UWWCLX%}Dv+1@IA{Dw zU!e!i@G?En4@JxJqQgP@Jy(lxz$L%lEk=mIVd}?swdmsms^y7|Q-UHf@=<3aFKdq# zTxIOf$g3oyvw8(-zC8yAf9jvv^#B4g+D8_4EeIk|@~hbD0t8B`M>s3Hy~B#_<=h>q z*X_NMvsSY3kx^{&z%oJLUWPHeJ#ti*Ug)>t^b!82!uR!Bqs|3D`9`3UW6NugG403I z;sPIH^$OG2@aOgSs8kUZj2wlJ90Lw?jt2Y~58VGY2)t;IOYJF#pfUdBchb^th z={R5_u>W7Tmer@;lr-K8BbqJdSI%kiyB zEnj~7Sa66sbe=R)E}O>9u@gtB%MmLQa^A-r%Z@u$N$9nEo&@oX4&xSrM^Hs=21p~h z{G1WwMxBI;iq`>fQ~hw@S1-3MWbBL|5X=#J6+8!bSE(e*Amo7Hqfc^uB~$h$c&t*0 zM1h=|`w($Su4+L|^awup5~)%bO2r{US6|ZAo^+k9C68A8__`n>dM5K=4s5tgrC`DT(cBk9aUEJ{^_kwU1r| zar^K;hvebX#n@_?3|*ynv8H-MCg3~DU<^JX&^Xp`hXo|T^!_!su=hQ+6Jm&7nzoW{ z(YB9RF{_b|>7#RGmwcVBZ2_Za=5>y~GtY|R7CecpZpeqP5pf!TEF%f~+qdDj+@2b} zpM``0r+@*_0k6Qc!#k609J%DaM>_Cd)L; zHVaVLwgR+)@Y8|wkRl(ckp7#8L&IehF1PoSAO8yXUS$`?z`bY`gnoXxudLcI@FakQ z8sVO`^hx3+$W3hL&p_-93bPSeeK`4f^zSNIuErkP=$(YZc+ukxNF0O28;%SF@Rg;S zvieYM?@EcFc@GPg7w=jL4p_B9(t~B*@dTIg|EL#o%3JY1Y$^f`=c)Vs^3_aA79Qba zT|#KloLZ5O1j`dlzrwFI2X7oN8U5gP8?{TOG=vs&j~l`}UwDT_o|Sl=Ka(Xzm!JqE ziiiJ|J^qpE4}~LT|AhkeHFHJK6VKv>I@C%$hF@+IJAn&41iC=yT)p4G> zK)?qDew+IiQ(bcD`E7=tO-T3YIW|jAujZ6|XIT4q61dOwg!Q>owxsXh7)~sYc0B1Y zTrS&jd7JxLG5&dL6>zqOip{gsJj?iO z-x{xP3iNxL10o$M7PBPZfgKQzee`q3b++qra5xjfs&c;`Jk=OPz@LGn$D@umG5D9R z{RMt3s{a@KuRfKFzn#JVQycvAzSa2WKl3a2bK^IH62F0X8B8N@scD$S{n+5M+d;z6 z%tQPYqSFCUz@6Y(tV5(yF+YeXhlOzD=Snz|{5V?*;85ptvDncJfV;e+wAXfhlt|VN zn7ZGsV?Yas)lqQ1#(qE)E$_EjgaLyXU=GSnZ=NR zI1yFl$A;@*@%#hhSH6A{JCL^So(O6dTc9s?;85${aY9==`69P<-g>z)gz}h)=tk7$ z-2kFPxCcXW$n@7B!Hj~MM6_c8BF!J-E6xx?G3nqRYVc#cBWLQ5Tprx0JnU=rQ?08J zLxmr1V>9_@crUSyoOJpugJSN4oYXRP=Tchp+4<7UXOLWeX;!_3@$1X1zQ50A%(@l- z8r2yh)h`|BiDq%S`-r&A(wFm{3W5xo+}>kh;|i%+p|1&GuX0|KH7RD0LwqA~V(DTs zA|0rOQ&4iTT)bcmqI>ZzI1?V<4!?ay*$_Hhmy8d~*-nvW@25~A{54ix0Y;O-H?z1f zxL0!~oILtla07zcL;dD8IXTfo3rX(z9j&>9%}j3cCp5^CyyF7EeW3LbJc0d#+h`zk(5w~4$o&v{${vP+g4y#w4Q9$d{c&opt?C%G!0!RsC!jse z9=KX6;L9KBzzcBUum{dZlHUVI;J12hmFa;`SU9H#YN3BZ?riA+m_sKZzKG%Z`2Hgp zjov8ryN6)+qO#u+tKq)+fA5GZp-pv1yn`+g^}@jEOb=vw#fqmyMmh*vxOrqOnF11? zEP3mE!Ld ze8TJvK@1G|CiYj>zTy4A1AS6nX7Tnys$U%TQ(xc}`=)~q)O}0q6#|(+dQkw_}>-Wh*}naDS|~dh@~q_ zZ9=+7t*aI-{N;MRS{*^<<92&k8p{1y*7*Uf@oU3KVCV(Pa9g>4xpA-gDsL!Pkymt?wWQ z!&q1rpY8B5WM7YI)z#w(f5bcmNtY2bll1tCKQm(FyPxXDMeHreli$GEet+pt)`HW2 zsy9O?|1mRk5Sye`9O@~zV}`%5_fzOFEq4=;Zsblq`>GazY|3M z%18hfYUpWxxrc4dtOr5pv>`_HHj^$Fcv3HA$H(M@@bY{mmW$W0*pq7Lg0|Boh@9nqQn_t9 zE9)ru+;j%PFABX1rJk31IoH0*y}zo?d8eN3*%+CmMy~+BmJ%2`7|OQhAu=i&5?^ZH zuscsPXixN7oCAVKZ5S-%?|+(z)4AXB_&@_Vu`x0Vrw8!iNg8=emTO3dn$NZve^zMe zi6m*aFJJomvTe)AI!Z|SmGo5w6?v%_GT*%7{?$S;%)e_l5uC-|l<+GZI1YSl&EqhH ze#U5L7Um0-kFn@Nn$D64KOj0Lr)Wy$j92t8&%{Lzb=x^1Y#5n!s*G>*y%m!m`o(un zO#U&k@9{kroFF}_dH?#8rvYzvd>J@d{gAEko@aka=y9j*~~xV)nj zj!<)3U_}~d4UPrpI6f!ZW(vuNmkHfl!?kdjT{nPzbsZ|=={7C|KBq`sOh970oBcRn zjRy04gTv^xri1jHd>=@3Kp&q%2j57BjA1H!3eeRL%{fG#oJ*uN^9d9%gpRmO&vkbr zDfUCVi4#fetqaLKe6s4YuzPAKS!=}(95?ZbQ0%9Dk)!Z8edjIsYeh=%x1D_CENq>x z*uWV;DxaQ(?dsqgV~1-toS41B0-7q;4B)a*^N*82Kl|bot3NV8^TX@WAKa=&x!HUxX?-H!@R;L4_klJfI zzaljUbNF?E zLesHr5swHOI&RL=fo+#jq+>D8fuS3;_rEo-63t7!kPf__lg8nddJyM#QQoIF6vLt| z@B~U}n!N}(m<1m2`(bKIF8S>@s^d=tNvhn>n zq@>>R=?z^7ipzU#?6n52gY(Zp;lOY}l_etWI-Wy17Hy$jI15N^H!yB67@RD*nh$p% zc4(U;A-m>{=yC8{*)^*p$56j9wLik#YzOWvd|VRcYF0-*?f%l0P=0yp6Mx;1EICZD zcL4S=;EMk0^GA4tfTsiVFE;$dhXkMjNx*#zaM0{;5Kk#^Z<_+IK*k&ws#u2FdzVh_$&)z$(ye_QZ>c{`kui|w>R&8i^QJSr4x4$T^v4$m6+ zbA8R4C@wK9{0%BEx{7Q`22KJw^~vDTsSdIAZIAW-nrdQ_8t`${QnYQTku&^ zw%d6FpAxm6-aMiGs=N?6P=}`PM*Y*J{?_4A-`r%FEV&EbLfh%x6`<6pC9-Tw2R;K5 z>C+`B4FmANAUu3iGqmtB&F@{PW3ith1^IpM34c{9h&F_RpLEu4!7_Cg-!Te9TnAkFYuOjN7x z2U+CApP1*i*VY!tC^mZFY>R(_^l5$ezz1o*52Kfzw`ZWn@0Xey+$#X*D_`*vWbFy{ z2wLse0qRp?{{0-t|D1qfxm&5o@R#>+qIUKEE(kgCgD&?8~IE1aa|M zQ0g>N=(aafCkIjS>IMtI?0X*9ER2mUz(#TrfnDhXi{1&E`sV$t}!$S3HOz@|NYtgJkQWY7KHS_JygJa?C;0ejtQPA{?fI z5-NFdK9zdmw|LO#Ne248jA3mp@bAs;iC?+yU>!e#J)iwsoKR;d zWxRop=fYPtP{|&FWexcH3JBK+!$)9oc7?a}U(}r7r#rTQN5CIuVJA`%l!&F02iQ(D zzYpm}JsipPEf(KO;lXfq8^B;`0y76db9e069%rTBo~!ywd*wK|0t@z(j zz-%KfuEuYP3{qQx#P{T~1OmL~zqq45Ilc^2p!x1EHU-R=f7M3tGvvGuCJY;jZyUn~ zs>e5rU(KZUro*TbU-bG8{xDr|AUA5LB2$pgOs!%5Jjwq~%{ArLv)teH7eZ6d<_s^`IlletcDs57+0>qEB6Q$YkZtlw;s#27 za~2sliwSC55`rA-SCNj~gyJY`CRT~lkaWKKXue-06oPOmT2We4G1t?`E2 z;!Q0x^SSDd4BwAsP{9DD-a0Ic%{#)^@8m~5_de3Dxn%!k=v444qi-Vtqx?&Z!q@VkVOepu+J_hU zA76W41R%L;KWBdJ3$pzR)N75JKNU#M)oXf95)?jUsY^YhUVz1g{?VVekDmy>q~?HM z>f^6}q5rV#2D7-Uqh3d@cO`!1#6wf(ztybSV&+KUhc9Re@&nv)&dm0Df0rtaC&IAx zQjUFQ5f!r4ihrkBAyOTg=u7Aj)Zj#prE~<8~6%s;{dD}FQbqz`zznF^tVM-MUSY%LPy28#Zu@c@>Zil5@++k;YQ;s85& zUZuJuDuk$Bv-sSns_@j+xgxAo7eHCcw+;xGeC-1;@);)5_Y^?ojF2|^7`jODGacvw z9B0QQrSB8d%21EzI``NLT%|4j)jVCO>bf^JsB`|b$(_- z#LwEqx47kFFY8Dg%faobbKX@4U`GK#mo~&0{Vwgn^$W=fXwp746yg9zw{6l%%=rq! z`72F&)95kX9$e$_o$4qeg^4I~bpJnsh6)&d5Ap0bDSgAXx zGs2-eSFJa4Itob_%SZ5Gk+ngUqR1c9J50YKt@g1?7>fTO%#>&_qxMYt#r~d zU#`*Bt7TmHInU&bHq1v7?;<`hj_IGLibnG6rV2a3r{Y$!P>hrNrTa0 z;Kb4Y$G+-~wiM&;4U93Wl`JyP1`~aJY@`jEQ=9cT+rLF_H3DNRok6s*FXQ|H2T{4& z_ZFuM*jez&@j9E2_>Q>@gq7kw)rtH7If;$8*VxYYg#20rgmqVe}LEPWS^G-t%BQKht=GLbmjX`IVIG>b#b<)`mY&dC=!LClgn*dJ1ZMKwEkZ=N!b9LLNKiYlGKpNBNQ9p<^tJYO@M|LHxWq| z{DRaI8o!MSeE{N_)IH)Su;Ikzzr9nD*d(6JHt7eDZpEP%)1vseUumQHbGqj=zn^aY z1xI9>UpVnbG{13fPV>z;f*S3Yyzc>E#IHUryN;ap5v{rmaD0Bhb}u7-QYU zQ+xJ`COB!Er>4j}J^u0DI5o8~^Uh|bR`lAKTBgS!>687{*mvp3K>0PRzM}saOaf=C z^Php&L!1x10-t4-Kt3@697gQufz^y~0lTQ-g@s4m0dIo@tptt9Gd+o^p> z&qsB!Rr!cg4Ot5g4LNVC{(uE-?>VioO00XnMAShD74qwn7Z$Ebo9TgKp_gkr`4~g74OlW-<`uv`+IOv=tKRwj|n?N8$;IY*X#1% z)f@l3%`RE;_2ck^T_xD9_=DV*lbuGL`4KY*YSOM;n1{_w02^T^ht6%SeG0va4`tQ< z6+7?AXnXvcZ@p66Xt&nNA_?zv)j7WhP2HmpB@0e>YG=E(v+d-y#c(zG%MrMo{QkzC zTx;!IaF;OWgDti2Bxz9ns;$JyV2H>obI|VB^ZQjtzG{^(>9A|-lh@9zPu4!=JjRtA zHqD%m?d0(F&Qh+DL(bRrPHSuJY=XyO;o4s5*2E3S;Cl#%Vx1kfGY3;tI#uP<6Y8_l zN~8h0Hj%axJII)2M3ljAy|yKms*e58apF7HE5rXXhUXLpphO7Q_thtd&JV@5fR0T2 zLe?w!A?J-y?2UZv(}XPhjeL0Jmh=7FmUbbWUagCH?ef=*2|1y5bv55b*Nw4m9zM5M zGdd9rUkttH%A%U(;kEBGGLfLGMTcDJh)$O8fS zjp&;O4ybI-r4PGmn+zP#w@4lo!X{)CpjL>QwM&B zj&S8Sy3_fxPS3t5SZ59uuyv(loGaF;H&Hh1);7gzXXl4H?(qKdGi{Y%UdPASF=Qeb zn3vk=_XlMxw6G98fX*)laL8`IMQ*NB-?0&V{D&uhz-nb`%!jbrUynyuYt6}i4Q&hF_C8dd6+eaGoNsjbDK~{(A%NrDjGs(P!_JNK zu}rfPoxwI4n`k$TZfW}8PD9g2!bjliYZ*$NYG<=mXmoBvF?LNmL(b23GP=G#dDrrA z_b3h>);1HvJug7pIFC^X@F5P{`D#p)^-2_D0?1cjOhA-t=R%NsHTT*`MTG6VtyWcS zbEjqwkK1-L*2$O6*3rp*rh7eCU0!#d2i_*{z*5=H&F$G5yn1aq%K3gqo(;?>wyE>z&WNet63I*>BGO zV9-c&@D1)Z&45(w^qZ%f;uFXwtpyh#gip2BHlbdgZke6Ds~I~Dzk3+F8!|o|8UFRo zGaPSWXKkJHW7ye`X|vfaJPf6r+SOQzeDM&ilKI!5Or5hTbtveoi+$cXe|udG4q_xe zj35$h-%w{K&K5FVO~pQlWJW)(cRt1E+FXss6*OGGUU3QHSyjx)L99JUaQ2T+}Ah}HN02x&O;uxbMcm$#Kt&7=X)cN zg`Q~So^{Laa$0fesU4Rif&&?;#neGw?*piw_Wp#SNfpu#s-xW^luLWf@DOQws#dAa z-3>kI0X{S3(qcU&60@fONvjF#-q(?^|3l~vuLgi2Bg*Y%y0HPU{cii;rLq`3&o0!> z=fIDTqSt!b&v|>(={t`MyU`{Qg4!k$9IE3kf=0wHLhi)&ZHX$7;2!=U^^Fch497_9g~+*nN!hFQEoeEWX+N zuc-29r(mcoBIFJ<;qolRKWGqQ}rO+K52?^Y(DX>e^e z!`()Qcrn7A@>kf-aoe%ihOe1~w)exu(MPC#lzM^kM}&&@+Ng&` zCf-P!u=Pa6QAG3hT$-}@zDc;E&KR|wf6us}$gv33u7^?C#d?i-*yYPv|1KnpQ@b-% zXirc%0xV8LKVgG(3BC;r!_|3P+pBW)bX6(GN=L+{(vKmBtU5(MG0|pM^1>-BgSKOU z?%;=I@tHE1)@8-OTn?iTH^t}t^Bw_|oOivSMo$zRCm|kP>50GXBIn@1d~}R_<&})? zL(#29RRFbhY?fXxNT$Bsu1@HS4zlyH1hTPks7$TF{yb7yc?F(Mi&{w-$u78Yf$Jwi zPW?qKLt<_`=ASi}?gyRdA1PL;c0VYl`k{JjBPLf;2Qki}7r@caO`AO8`$hZuuzk?S zz3S1`VD_ar5!PbEEJRG+8nt>DNZW>kLg%lyM{f+RD(J#y_F*$&W3hts2FlC#v(zIf zoXKsH{pxC7pNB%wnj0`#p!A}=Amnj8i;iBus^AFLsJ@InVfHWUN7r>33JW+HDg$Zf zCOgkc1@yWw)?CmU{E?Dq*RBPe(k2O*#0;z)rxCEy>LMUE4QY(fO_uLRgg` zyB36W8PpoSyNpum7nX6v14~IeUk#Z-v*^MKh|~%@X_wZGMwR+xL82Hn)Hidax9|}y zb>d9?96f|&rsihw`O7ooakC*c9FzdqZ>aMY$3-7C2^yTM&#-$sR%Jlk&v_$U^=1Bg z_Bkl*2b=w#?LZfb{oLD%Gd>5$4Hn{oi#&1qU7s`{V^_cBi%U!r5i9FORQTj{Bnl9G6|O9@1k0xYQoFG*$UVvH;I?uz-y!_ozgsY7CuJA*_9N|UHOurll%0GsJdZF~P) z*p2%YdG*BlUg=(YxKzPMiQyA105SKp0B*?Hz!P+ssB3H1-Fa)+om`5APjp-;c?tH# zrW9il6u%EuoCBRSyvPh^o3nKxlJZ)m45>h3D$mkekR%siqzBo`oh@|^YWv0S#Hq=;?Z{= zcq!YUaBWJ+X-)O>%Y&Y(H^}@Ij&wW0dM}{7v8SEYEe8tihfq6Sw#n3H@d!va0t6-J zv>vr*|GTkIO4YG<%2G4(ipP!MF&OV3DH~;-R_H$}F>1bEd(_vHHRrqmf(!Zr>0u~` z9_lC*4@2&HIISM9y%4?x`UR%GJ^F$!)FO7Wb5rVY`eQ|ZP$yD(MxdlUkXN$Vn57i|Lrq$Q1zO6ruD6A~& zt9HRWKMLklyZU4gUMntIX9jZaFhIT5pTE}IdRuF4YhSl5537&~kOc6-qbd&{fUk2H6|@TBA^CmRKIcpV z+TPFofBt+l=gdC)vG&?)t-bczYp<<^{;ar13vs~_;6}7ix^|cIvZ!{y^YU=5oXSGx z8|K5cck&wN)awkM+z=W!7uC+;)p}{E@XJ`4yhqEc`IwRk%<}#vxJjjJpP(}Nhc+!7 zB;}1h=bVXm6{)Sq>hv|A-g5YY*(afywj0v}4;ubWJuJ~9Fju7Z4yl1v9$APu^;MRH zUR}hG1*%p)>)NVz*1aiN_wMF*LoVva$r+Q(+l7mT4s(^uatULT^x_XretMMGiP77T ztM^B8Q#L89$q~x`QNE{+mN#SlII7KiK3DxvZgS(Mf}$@2*)8bst?0)ew~O*B!O7C< zlVR5ICSBJ?x|km6VS1#8>5(3$N4l7vzgEWPb8=QpQgQQX1+=}TR}Qdc>h_PR3p_=} zo~or+mnnob(zGvXzQ0x86Pi5ms}GIiS1R!#7a8wEa2@+p(%uLdZrfkajc#-`LEXaHYr zdOaptTLco_Lg>hV_62Bd6}FbVpFD~8bH+;^UQ>t4IrafGakt?JR2j=nU<{|?pWjP; z6Z~FN6--L8+_fbR{8vM5UK@t_g0wMFs83s^_b4jGGB|68G3xGG(cO(<*MW-EXXV=B z_LD_Q(?|pyMIz?*gWIDSw1db-gt%c3RHRcc=A*A+{f+uld){n0JO#IAups)i3mVY^ z2r$F8T)kiTEg?h{m8<9{P=T{(upeLQ&<2Qfdw}4+c;2T;yQouJa0Z7EKh~on>j>%dzx=T4fIVUhz2^tQaCPJ5%epbDp z^Hi$LE=~3CQ=U%BNHH6Z(N5y#=!ZAJ1bDy_*)7^dcFBX`LHBkZKk94-0eyGPAx z5-|>LGW`3Eyv0Nl$iRs{>#8i^F+B}%r<1Ms9Ay|BK9|vDV72srGYS#7K*V2^<4Bp! za4HQv!EZflRI`(`i`ZPWi+8J)?sFYWx(C3?o+fS*UL!f zhF)wAfL{U+iuU*^RDjiPF{!kvM^+N3y~Zaf4iFq_{f+=*)?; zFZRTdtfM04t3p7T2=ptW$zy%y&~JwL2yDWL;z zy+_2U!^5=2_cH$~qAi?RlsBopL1Q{g{5HSJavNE&F|<@;4R||s%s+3S1fW3zaTmO= zN!Lbp%b)$L6xq9ShW2Gjmp(8|Ps!t1#gzU|&WumNfK&f~TTS|P@G7FSs0 zJu-y&qgvlsJzefr z1*xQe1ShfG(+GTOvgxxwF0oH5XvR4+0-cv{KAhZ}MqT<>3fa@t^cI1;`u6uuxQqIN zKluN-zgq!hlk|7%|M&i?4oatg%{B}`et)Uc>5X;kWqsoHw_M5EKK)JKPktygZ-0*$ z)-BwZ!_1>A6QLg3;I7}Ixc~=QISt#ZT*w;7VvVELHhxARH)oU1`k<&&C{01+XoF0{ z%TQHwmt1ZC7hD4s-l3*N791Y6%5vYYmK1+r3kFea2YE_Pq1OVYHb)CLcUY^LUi^rjsU}i<0x>L-1SlF5(2qx%ZzxLo*hDgLw8_0mQuMp$`e4_wgx3lhm zE8v6tq`*P@6y$?vue3%nV|arjQn+48-)MF7>0cy$wZ%WCup_Fq^uJ(aa0M%fmWhH+ z$OOVY9?ohZVt+?9ro`kQ5QkWj?7JWVuYIK~gbqazsfN7~l5^=;k+s!K38V*9@HDmh zd5W5)NKqyf>r4M8-)-v@d3qKF`(GSQj11_J_N@TWi_e2f6YXe1vVI%cu@sKJbjkw+ zdhPMcg7<5@p4L`(AhoM1)mBAfz4lNCostRCSp?q-vOm^Fcd(%8`B*!@TlfZiOk?6W zDBDwCQVZ0tff@2&`q|t8zL}@h?X-WU`dsg0`|l(9@ChGgy_ce}A7!C&#TeDVzMfG| zThx5SZI;5{R)t&0LT~fdoipXxX+J@7=!h({cUYf%n;up5;!o&c25qR(e}aO;`QIao z6A7ZMw|?ftdJmK4zECH+(4l)Vi8>mAM<}K<u>XyFhQ@VsaucLTF?4f zW_E40bkiT+pe->)v^aoao_M)jdhkRlos-kQ|tjiI(UjZ~ly5vz{nm)9yV3RpTJd~(9_WQRV1xj{9? zS7Uk?Vk59YRu-YWG2JmL*lUp|`uxLU(pxEiSj=otw!0DUtH@=i5t{<3GK78!L)v+g zWr1{uI3i@O6T zZC+W7I9xLp>B!8X7EYbk6Ocj;LxNu{O0CZuD&LJsLYs-$08fagVAaNsX0gK)^>`r4K(|M)ShAHW-YT^ zeyb%8FG`XCp-d?9Q`Y7JT^~FMUFRZWdH_kt+5SY-Q+*UG}V-&9cg}p1a z*J%HdK1BRTVLf*>o`n+cwUjPQ$c^qF$whk#gL0QF^B;(WIqQXFh{)a9o#;`stW8O-j}p^&!!)3jJL)_l_pn6A zrhb8}^g8y#y^J;M9)wD0uhm~_`8updkgiMV79wbCXtO;8ViC$n;~~(0GIkGgjQ-jOP-{{fdbaKv zScQt!MwMT|G}brgebgv9lPFGZx*B2317XK@qGcY0AWsn6!v!K1-dg5inj*xxUyJ_P z8A<11&vijaVUrV($Gr)n7Acy^&ZzciHFuM2wX=>~T4QcFxC3gFwPZUR=6OGgvQU@{ zm9%J|CzYDrjI|2J-p5^|cs|edFBqA{S|XcludrZ!pr0J>F<<103j8ju`Ak;v>9=Bi z;e6MM8Y(t&cj8WgE5MX$G0UL2FpbA^lQZZFuDl% zQ2{2en=dq(hTCZS>=$uRPn;J0>eSlG#Q8dANwrftp)>MWjf}MC8*-u_f^4Igi{HnM zcfjEQ{l$JCpP}-gD2w06`7T-uKaz1#aRwsV^6l~54FMx}O%;rV9bIruT?LN%;GaqS zpUsK!xP*$wrZ|k^&6#*d*M7f7TmJPDN_WvE-M?L1emWkT*Och=*S{^|?`kqj_~O=( zTqSn3K+J3m@T}C$#!78Djo`e@9jGasnK)16(FJ5+ZWS}gMg>a@*zW0PzM49$HJ>Z% zJYC(U#4)JUzAEcfrO@RC)`=*c+PvMVx3tue{_}2$=WfChcU=kL(Z;KBiJP12wqWo3 zU-`GLPi{&T{K+-SBWtAWQQ}(TRIHZT5oV9&CF1c8e$0G+S2=rdO?kWA@on9Z+?^_v z+cV(drQ!>IaA)f9M_O)|)3d5N)^j%nT)n+%U^64g!o;O#ZF%D{Xs`sr!Ao{iav!d1 zsRAgyDWIp0X!Bmu|H>@e^9*(Q^w7?TSjqMu+?G1>k=D?z``Jl2(qCKB!dK<4_ZMEk z$4Pzaza76LaFTkl(z(N`Q3syDhF>= zUalevHD!9-`a7v#UBsuxQ(LYNXv%kMP+H8yf%+QQZIZ-(E^opObe_;wNz?qp9K60X zTDLQnYeX_Yzfp5a0J_D8&Vr!ZON4BXNyM(bI6(5XQH7va<2q@8Qda{-T=V{W)X<-0Fh7b z?e&+4nH%U=-FkIa7rN!VL*OJNS|uW+%ijgkbTa_=>@9)kQoG^M!zIZbeao-^T=}X{ z7u8e_3H^iOJNx)Ep5Q+rl0FNj#il+@e8pdCU_6l-cT49Ra`yyeTlNn5fhAa+>+rsu zTsuQ}u0>M+_w=PLpG_F$V)E zIi@tEom{ocX7*ug6>DRIA7fAtVJYYZp|1!^TYk;4rm%60i})xU5ARC8Bc&X_$v*Zu znxf3!k{C1)>Y@~X)u7gU0~+3u+yQxBS(JDnmSYYj*6@3P3f7cUq+dlv;hYSTKxFI` z*(`PF5&wyjCVgP^SScim5;LMfKZq^`bLA$I)}@{W*0z zv)GYe7UF@Np_)eMcPbcw&hEnv;J$#+@3eUC?%K(6(a=poI>9&uH%6%L%R=sxC41pK zXWm!ylCm@HZW_oohIK!zAu|*CV&R^|?EtC80KbVXhRqFJjK~hkESBD=cSbH=J546u z`l5VBJ`8dDD1s~E-xN_NIOM>FC=xoGB7|p4zFNpQ^am<~3@?bOXO@UoY0KAWA=0!V zocv0yopapCHgP0nGXk>&&BQ&dfasKaVCfM@uM+S$RDuXhh0!i1^-Ep_K)T3Jz1(@z zF>oVh=Xc9FhgB3q^BU|(HQ|K4B3j2woJ6D= zHu%*9v_(xo?KH5#n}9gc)#jX-sz25cUXy%YK(=p$426F1C(G$4HKi{1B~KP99Anb_ z$i7s475)^xUH-L+{1!*`nCb5$?+8hP2tTPwmy4J)V<;xAHH6!foQrfy`Y`VM=}U|J zbp6+-sd)$##>~ITk&nb|IufZJ;9=E`M3^y!02C*|NasV|~UJid#)wj|L5 zq0vgaQ|?iE8vFTvDuP3R;a#N}ra#Kp0mQu61 z!;woIOBDKd^}$WO`rr=q8mWPr%T)!5^-@^%n_B1G7{hN{W=!Z+&6kQD=mEzEw+Qz; z#~ao0!S>$sTe0xQ^Pu<#b}o*qpw8%^{D9k;=k(oo;y-=jMDoe5)OQ$NZXMz%;u{Ru65y8P=1MUz0ev0 zC51XTLe*S3|JX4&TU&gLk68R#7xQGz{XOI({dpyQ~5C!S1ojTqbY;odKpZ#V{w zXc}^v#*4NbzX6WN-B=|Q)cP3(ND3%&dJ2VC@EI|$t#VsjB4!k-U&#Y9F+OTCXTlo2 z4&a{{|vB07$P#XI8JIUyil>B@u>HwwpbIg9g={;agn zbcL@a2|r=;psDc(0@MA8ud+_B62>9`MLajP_H0GJsH)!lB?obtzg(qNcNKuR=r@Ay zv>a76sDpY+zCd4e=>MOdUu2!;4o*^ITo@L629=7Opkj#f+LIu2Ctj@_8-`oDoN4Bt zuXAFEwHG;AY7eG1N00EZuLxx=D52rO@!YM0oq=ddeZR_=D5ZKV8DRB0RnEHNWFZ`L zkWjl^`bfN+zgAJ$!K(gTxl<8(hd_HH&@#QtTFH?En{^IPs%devnif(1IrQ(Y%Q#Ni z%amch-%)^LDaHrqTT_$QzqfUmQ@bWk@g)^Z|Ib z0+=a2mW!6qpQ_$DvPr=s_jO5r6_;5BHTCo@;$p_kKy6kp7kd+<))zFHFPIv?A17WU zJdJ;l95ggBIH<+l$5u11qUU^>k-oe31|=20E^VPPT%r_NG!HE;Ct8c(Cf*k>pF3pB zYPB`O`yqV4+|hvdWlaAU}0P8l900{0i37 zp4mPzw`i1{zO`D^n6LzL+_sun{El&UqEW@bU!#iWY;OaOVt*a{soUn^76s?a;;`e< z7xSZiE272wUAM))f}cf`u$<3~WWQb>&z=-Fw+UxznMVN&6KoV?FfKKE#hS$TkebWK zmuuz=d_w;Lc(ug^VJIWd{JmFljAHecrlli%Efmf^R?CB&rGhC#>=4jzT>Qd80tS(Y zxrH=z@j+jGw?f$l##(3WL8CI0Z;q z1ka09Y)YIe1p^eM5cc|eNmp_~lG#Y~>a!=S4^BI9FMcR%RwIS4Ai0mYb?=kLES|lg z{6I&2l4}fW!xKg}pB&GYw!9lm;=DGYR&TB3wvt-edYvE#Vf)_q636jx&h2PF|KR)a z@wH@`OJu4$#Grx8#tY`F9Pd#lf~^~;OC=I$sw~{8UEfW>I2`fR0caEkz?LnL#X|0? zzr^m~WN?zBDpFI&lk0s7eP+9=Adn2@#`l0i=8q!&E=FqfX$$;mAc}ZqT1FvoFTJWP%=hB| z=E}Z&tK783v0heGTaD>ARK>N(F6fB`(&<*&*Wp#Ook(bk!qlNzdnu^5e$JP|+eP^! z=ZmAb>asUjMSJ*LZNcsm>p*$FK+G){h^jhTPwft3Sl5;XP9iD^r)OFNLr`MGnp&E) zSkRQl&F%5f4(kG%SW3UgdV0KmFfW^{iBqLUVpe%I7M^zKhhQ=FiPPmH!lw9fNfAEP zJeAw`0UY=`E}N3!3kjD#&+i?8Fbycaa-&4FC?F2YH7w&g=>-Mh2jkjfdaW(oaeaA_xA$i(&2;@9oeo zJ;ZSbf}B52Vhm?n^CK0-8W%~!f6Th!7MW`){GU!43IMsb=-2#o*@AP#bbT{j*PoL? zgiW~$w2t4g@F({Uw`EO!0-t!|j+$qU&3+#~`Opu7>Ioq2$oPw7)VrDksUT+}AU zAH&m}pid2wmLA5;AkkV@{^r-e{0R2Kf2W^$$QVbcfWzm<|e^p+@M+ z5NFPUewBQl|6UIYg86-+A8pAbl3jXLs1|)u#w2q$A0$V5Ixijl#)!CKT-`CsP3@B<$`Ag-O`%Jz3G~WYNYY$#Sw!(`JJ;0k}QDE5xDPBBp_Qi~Tpg(OL$K&>4iUEHg ztlO*UlGz>2JSVu;jw8nw69@$Th#n4ZbrMUC%z`?RkSOE09_vr6gGnXTcB+1Gtq9G;z^2sw zK{|gaD9FyN40mV^9eo7nll@%QqB8x!+Lpu+i9y7j{kCpvNu%_k;XusXuB#aNTytXG4=u8GxsVmq0n8SYYYA>mga+sCTh^Oy z{cquu4*<4U^`JjYeB>L4BfNRVCs||k^4>%YFaGu?&znstpCa})RS)G5_1?rTh+x9!xAr4SOO1OzA5NmaRlZ|cXbHp zSA30svt_-Y_PfRBy#xdn{=mkkf?KF(3OyG%N759q9Bfz8E`6GSssxFat{3EV;Hdi* zUYtZ%UU>X*Esz|?AJmv;`e3kjth@l|tPnZu3Q`naL@y?lx(KDsSS)^&U-%+RJa%pI z1%To-BRIHOT4!jqbOUd;XkThcKJPSA%abRooa|q@&NouOa7Qb1YGJqo=Rd&T4{?U1 zDz$QEjX#g+rC3P|0HMg-Mw2d$*cXbdaK_t3%$N9ja6-9^o|b-#&&BRuPSy75q^SIo zEaPXLa%B(*tcJf{XoGxlkdlk ztNkr9FIB`Kb;&oQ$Gld~dM`eW1Y4p5AOT$a!^Kkn$t3lWhQhZ9MCF6$82V&WRW~;_ zn9ny%xAc7Xu-IKM{7X|)laW7kb|jQfoPoD={?IU8)~0v0IbXWZ7MGFaJ0hS)bJbRI zuox3ZL$%HxawLqoYipFRl?~=@tpNjK8(S>6ON6^tf?701sLZEbmnUk1$eK!P8JL$) zO9WD)CS;BzSD9U@-N8Y^6sh%5Nh!B(!)2B$=rHQ+!6Y2@#{^(WoIu$_zkx&SvNXR_;(8V7p>uqd+89$xeBs}hIt4ki*KX~G0;S+- zeG7g8y!Q<%Rw7mXW5Cs_0ki}iz=wYU;CD*<%5bsWnuPNZR8y!?eA;W5A?brFZ?)-U@y78K#TzZN_C>Mv1tE z43d`KL=Fr>BV=)qI`-MzYemAnGEX_WKhL+&$84**BdMdCntQA(aD*tZlcM-CNFM8m z)Z43+%zL+huNL!3Tk;a=)SnGkK%P+16UaRIKCa5?wC5jz9D&6OFM0iEXodJ47O)4y z4G#YwH{|vK5gtk|^}*|ZLHmUtyZVu|H4<1tBBV6)ToGB=AQ9nb@XCZZq0$yRSD*du zDe>%(NcNU;4A*Po<{J}omDszuz}t(lw`%ws7Bb6U?-%!ws>&> zJsl>yP>8y&!-rBf#UG_q<#RH;a$P-4P2Nn#dW+%ocM)RJ*=w{vIU{ za1zm0zoMtMA2#mVB4P>A6_tg};j=^SiHmyItHyMk7ux*!!^2$pr4!pb5_-YNBgQtF z?a4Q^)gMG9eA?IPKs3~TU>)vAKaqD-p~|HP@-2je;OBvLXc5=(lG=?H@oip2HBzFw z%W|a`DM+l;`YG05R1%^MJ>$zdhde4u66Y&fOPbJAv2fPQ$y_Mf7bWKH5xe+>M)=6= z5w<8%j=lw>E5`%1>vaeCA_Ip=|q(1luhFA1qbqZ2O(eP2NBg;y!xgiG4I zq>kn6iiiZC9D3cv0T|48&EM^7VH2oAwGsjI^O3@&xZ|4+LWza;UVN&NX`26G&s8$c z3%^S_hJVf=kG>oHTkbouQal7yAg$Quy`jzd-6h7>T`_;V);a>P$+D7o4nFlEwsmhW zofzg3U7R<%bijg%@!|;^f*49!{rG@kq3L+e2*rmk|wxjGI3O=QN zhluif1FXl&CS%fC673d8gbhIN}S@2m-z}qk<0QK?MZQwwWRE1b*MCe72i9?8!VEMJ`BLVTM_jO9p#fp{ zD<#MmZ?eqK{Hr9XfEbGTHzJAkYzebV>pH&V0xh|SPH?#r6?NVG(B*IOubM&K*+r^n zOch_~c#PBORJ71k53#Dcq{VDyEx$?<)%<0-H&Gf-^^_$89INMc0{mxFhmu?~NP3(( zZAM)D=U+3-g7q`u7Eu-z{R=euYG4IRAL^?Dyx4aF58`%C3qSg_dpmW-rXSz#Yh_-$ zhPH|gD)HN;4`3T76lsq6>?+ZY?zH|DHBcE>#Ai7M{9e_5ZNY1_+ozCqj00n~*s&$A zo((v8p)Uam=u`lIZNXn0E^G^y`4*LIhN5HH>ROMUVyU%)#xi1& zJD`KSPo1}t!~nj4;L&u{#2dO`{|BXoaHR$*nd%DCmpM-bwDdsQ-g&;XUauf0J6e3b zbq?DJD&{{#ksJ_)90Fu#0ulh^*;#0&Ah z(_!!XL}`~uph8dAT9%~k+bN`FmeO5Sh$r)xbyP@?7!+kFiWq`dt{nr$KJ@F*K7`#%zI{kn)TwFKU2jru2<7_XQra5< zWBil$et<#8mdl(^ESLJ{IV_U7pA0S|%X)*s6)od#4`2zDsKA6`?PFA- zx*%LYF4N(%r95EE&E z@Y%9*YPwu-!d3{*`v`4F!kYfN40gdTXGJJ8&g?p+-1AyOxV*pHOGp=p0G=jY{(X|f zmgbT#Yw4?{auLUBT&%ym#-KdM)}c#_i~%v1Tb?fwv1U(!*l<*J<`4U?RDz=DNOgMz zeM#AD!4I(a!voT!zDh&_t-6)*gUROM+7_PnIh1ZyLi9SCQy|DiEzTTty9l|s zP_vcYKz^AO)Er_j=NCT;^Xt7aS@45ykV zs_Dbx_Rpb+qJNjNZPgLq=#1tXwE}VHe}9{3zm2DcH_ZLS+;06a#CX(T>klaNQLp{R zi=Qv<->+h9KBM{Ds+zi;j(+LYqlY)m`#TlIsfe?gezS%fpyIjuK&ugmn{Da!qGCsc z>hS`^`h?{R0;ar!9!8g*^id#l;eh?!f%->cRZi9H&_w2}KdA)N2xX72d(S7P}+CD-J}ogDM; z&GwIGOE|uZN$%iB(Bf#0B4d`j_jV4NvEGiE7MdH5j75E(fEjwWT#gmT4b)lWPI6joN7iOcSnQ6 zvAteZ+>Gmvx5TMVRthFkR=^0ayZ1w#<9pSGjqZ2QfN4thpzFdTMe;iSJo)_hSI{|$@BBDVL`@JWpl3sLEXXgh>vLk!d?il8*aqCO@C`Kh zAR40xpOrlWlB7>m2NOt&& zAoUX#I(0PIJODo6;754vyaQJ3TzEGZsqMjjTt>(}X=^N7__5s0HL?6INUu_yZPSz% zCkVE{gzMS^9D$WHFEig)ciiC(OPt(#2>wP6m~D0rzjNpv#kRy;6Uzk_7BpGkGMo}^ z<9VOGD7r6ep2T z4-Mn67_ry5zYBLSy>2567mS8B#w#}I^9z?E+9VQ5n}n+SE>#kX#C=ZT-1R=v&zFcK zWp}A>Q}VKAA1d)zKi0MLH}YlB&F&Wx4-k5CG>w*ZrZqv6k#k6|}MpqT!0>6vaX$!uAnucVR zm8bmEF`C#<@&eukFVj#t`Vtao18;*Kxl{;AemLh-@vpuEk?inw-~7zhlK&Q!UkJ~Z z5E4#4f-+X~*=NU@QfN=Yv>&owJd;r_eOisosK?a9j*_8QKDppZ>k>IqPE$^kdPMZJ zzQo)mBW(TxuE9bS38DEPWIuv=n%M>pOhBta>_OVXp9^DkmuXA(P)MKO_8GX~FxLF; zgJ4;Eq>apzoy;sszBJIuoc=A*xFmp7W-V(OZ<#?hL!9D7fLz~2yb2*K9YZ{qCTM|-wjy^n}y_$Q(#A+}(F_NUo>WCiwiM6NRDVJn3 zucfyDue$4xT^W+1#M(=*A`K`e4@9}qGJoKg+#ez13cdsy`NzPgYg>3h5GGFI*NC2r z37Vr_v`brfBNjYDIuSQ#iu^z5Gxny+M_$I!m5~>pc0Ab+DbAo)Y>Vmyb7ndbWL>IbP6n~k77~P zds+^M6Yq&$HAQCoDkeDwL>8ZsAb{AFP}EZJRHV^9tOn{@hx0wcj#i_hPl_cdMcf$S zk>Y$zvQ!3y`#7dJxz-RNu~x*#`LWJU6Ql*u^}e3#10UI)k{sdz|xj@!L>F) zz>LU@uU=iPExrp5r2#`4;2CG`6HQC#R$i6<5qgdD0NI-Z>RQW4Xtyg=!<)6-AK(EA zkQCH&*M64TjbqPGNYO(t6BNQPAL80i^D_4%;oM@{PutU*6BQA#xnwSx0d|@n&;JN< z%@XWl$U*68ikBRQ`E0nuW)8o@C2arT<#)EQJ~3lY55K@s@axuvC>6@PZG_f|{FC+* zGEv+ra^g;qa0|-R8UY@EW*0h|aT)bAZFwh)h~?5<}n(a+-ir4;aux#_th$AE`MgWCF?99HU5D*6Mfnu=T zS1UG;bsp~v3?=p2Pdg~BWp02|sXWg6k`9DleVVOr*@kfwGn09jP1d@$XUOWaHUk_& zS?wmSvwlvi6kU9wQ(}f<5RUwSCBq<2-V}dFX&wEG1Su=PoK0~SWr=cGJq&f~vIg;# zP{`;eLZJi|>_A3dDM@4G>Mb;7xuhVXSM;+r^!}wvKc?D7YW0QM;ecuOX)KvM{)aEr zyovO;@pv2BFdBFScza58gtrk$aUuTQ=KJh ztT-shZ5-BG zZ*(`(9iNuJQH5e+5~k6PEhc)WNvVf6B>Poa$8k_bh~?5CE;ll&?^3n* z13rPD8}Q9dUr1}#B))Nw%KI#$=}MAVjHR6FXzx=M3F46TGPWtULa5s8%uN|%eM+a* z(Jb5Su*RM(rP??mBE3H!$&Sw%S!J0r&DtPY0dg9@8l}5;ouMeJaUgu6WezbCGF6Yw z4uSa^Q+xaa(M+_=e$+DA#|Xv&0!-YQIuh2>f1}Uh7V|iza^I*^O9;VJkjf+MEyc|D zTfb!FnsK{M(|-YyC@wT){rz+$F0}M%NJ4=ps4gdIqr!&pE`0WQ5$HCO&z+nJer*fs z$~mC~tS$XbTZu7%p5S0$IV#XoYSm~4zBpsjFTTeN{B{LRc4WWYdF z>v7b^$z;SZ zGb1oFbfC3n?xJTRj5BRAAqwlk9jI@To7cFKUkE0lAnA&M*qj1R}I_7U!b*U z_IjeJ17#aO*gQi9u_W`ij2)Bs#J$U^h5Ce99X#*Da@+@4HAC9RNR%5Qm^FqTmUSrI z5)DI%GybG&r4sryqfb%QPZ7M4+(b0E+c!i6F$S*VsB+xUjNsSKU!R*aru9_B9@kb( z%`*vfXxZ)HkxI`R85-bCl!U#AYw26*C|TE_u8CIYYK)F-znuz>uT_-9-fHjvOY%=H z-7$077eN3bt-!ydsmz4_lpYV}?YEh_bWd}lvuc|0G$^|0X;>~DAzRRIh9XOeHlCtA;-lg_?%jp zIDsV5$+g8Lpo^g`%Z!jkOw}NHKIce;Thsz{E(!m10cz)%^3?vmwc=ztjxD|l<0%fD zYmUE?@>}P)(TT-X^@Y6Anj z8oLPPqOXG=`#li?YRS3I|4beAb(D^=TR;Vh$Hg8`TJP4l1I~h`)3WHaaH81I7}CU- zX?SvwvdqwKr{;@vmoat05^|Se#--n`l9^tOw>bE_nG`oe0AzY5EMWM;_Me%Hy?JY@ zn#SVxPuYO%BeeGOQ-riAOU?=#VG79^+P}Z9bh?W=w9HoC1UFRcvpae#$lD9>_JMud zL~y~h?b>xJIGc>xCML1(ed#vzU79Gx?LOIDoT8CPe+-h}zPz$% zxiH~P^bZ7isdEn+mzom4Bv*;dT|*}M!kuYcmQdgzZ5t`4x2T9!atbk;-kJDHJU87> zm{B%6I-}_k+zr_Wyyxl7N-_vR89kXHp+<^*%B4ujg>IH z3r$2>_Ven6rNY}FA$uEU+}F5(OwS)J6PtngZt4xf+L`+|cP9q9>(#t}b9eHP^%^E8 z(YZXlnPbh_Sh3%3u4$OQ*2rC7qwYB4GD5MuTTNe*iSOO!lb#6*cBglmn?u{T9yTX0 ztjR_LM)uEYp!8?))b(-i!b9}X-5(Kay!o1J2DPdA1@vBvlC;J@zGd8CAAv%~Zr9QW zrC2AQN<(kv-zzaPZL$SHOwMjWpo2BZ6Ekmfup`C-&|AlKpS#c+Q{DZWtDOFA?xsb4 z&pRNK=t%36LF7cC8p-l6o|{qAa=#yv=>Vx}iG)2|upKbn@aV5Uw-{ax8v;_~5 zC+#8G)wQ?Tnnah?zU%=37vkbN``D z?r|4z*E;Pr(N_|)@Tc#WNwLJ1JzSj733Q87cS`4f5f%R z=j(Pj;%dB|qFQt_)fh^Hy*d|(?B~+5+QCtCw+fWia;Rn&{mAQbJt3RU(R{?;X-}XD z2k#&w&Yc9{VWC{V%aXdCZ4){!eT`%v@HK??$Jm02n$c=KzpG46^GO^AF%GSgE^CXP zra$2a%C$uj#|E;J&kdyM603>TU*c@|K#~6^WKiTU=N8$(($ZH#{(9JAa1HX zF%ci;*g{#;QcMS&HT&EyUvc~$YB|7|D{8TS!`IYkHBvQ9{t z$ad*C;MKSEAZND1p9mHC?vZ)RA@n)$nui5o1XV=W9`4Z6%P8ioV&v?o>X*1TD8oq> zxWzE|I8Tw;&D;ilK6X8bxHn8XvZC7MJ`sKTv)|%x+`Q0ZM=oJJhW6#&v~WxTj(}LJ zhmJ=kA`m>GH@7DGQYKxfM zL19NiYX~R(rnQlY%;horGWn`48}C;$Sih<6R=T?j-+$QDr=9XTWZlmK^xLsnHa zP(cTq6X)lyb)xYq>1%G-x{JH2<(leq0*@pH$!fF}fRvYnY&6^cH?49yD$* zfG#3qx2u8EGFS7<7VlL(H?>yI?PPWWm`u|9K<DoVb9U%^w|oCP>Lh=rD{LZf`!#U3S^Bu$O&J#fxd$ z)}I|tM*DHI6`gF?xa}fdC`73_zTEXSABCh#}Qa9`^N; z?9erqiu8~9S-?E!bV8Yv&ydc387)Na$b6hK%EB(^G?i|GI9A3Vgq{5purKt{z@Qt% z?beo+!+mOEkw~uTr>WhO?|ket@9;VKLCBM~_9HY`f1m?2t)NPM;AN?I(SL--?O&=k zVBNJ;?XYW@+%9ZFGIGG)t_CBDWUQYL6=JjHq&P~5{_NRwfhj72G|SvBm6_dY80Ag@ zg;&|_-nxr@?(ydY9z>YwslWN`OUP*wF2-I3WBRP?s1&Sbn&^=|l|M_}XoJ&lsWx9G z)-w0Cb6s}0&^#}m`(}+X{eyNCgJkoFX6R^gF8N6=&i+UJUK;>;eM?lXouo|6KM_jwPhtp zwY`+ON0q`%;#=`e{;2H0{SWg;d-Lo6WBy(kPt=d&*-P)LmCGa-)wW1Aq6%|NEsl{p zZHXW$HQNzxsa?YmI_T)5@#y-YPs>#E4X2)?;xYx>sj}$xN2vqrXgL#|?l;@jF!EQ`B_lidHxM>Mr@+)I1`1k3M9IAQ31;qeE_ibpp} zjMAgvSTsTIqa#!0V7buk2U6GJpti6c*hDE<{5C1j$IQt%8}y%d-D-^6RKY4z&z{_1 zZjXds)t?KJhOVfGK2vlO%}&A*#1;o5Ht4tRG7nX>695<@-NMNbb4V=w(Y-2Ob1)Vz zIOk1RWucqq^=DM|%u7IcuKe2fqG*A`a-TRi-_hUO};?Bn2*YWEig zaI(X<5UL_Q-{G9c7A*vrqigVd@axw3v@+A|`8IrBkmb;LIFRck8eh2f*(L?FHmXTv` zY7jr*#Upb_qa<#Y+vkx+ynwm*tSLmZ@?ApG${^T!hSBc{9oo8gI4)z1f}P}xg1@sA z-1`*9ZHecxLWo95(*|=}Bt)2@YDaU=mO`FpJF%Mr<{_p0nq4ADH&-BZHV7@&AJtKd z!~5^uY5y9yg;}I?+Jbd-1+FO-NbU9f=p&(S5{JZ**|PMLl|J)Dw8g~tA%QUSMe-aY zd)D^fR-#>jXEjCjY|WP4N=CjWK9s!IGxA()&?jEBnu8XWT}m!UZ4y}Z*m$idPcnW8-awTOA=>f%U=G4 zfRVnplD=uER|5awrk)Eu;-Xhmi`i$Xu z>q&ezSdk@8O8AZ0FyXML$F z-Xak)3v5VoIgI$qGaoyg^M5`dZYp`+_GDLTCl6cS7uOL1S(GW`_SN8hP8K*1G72u6*<)*kIuW`ofoo<)P`B0Zezo-02r*AW+Z;)`fX+fL_wTEjA!a$*@!CJf%s1F%q z$a;c)23Kh$7x;4VP<#K<_$&9XO zx{Sc!|g>u2SkpYG|1qai$V}vm48Pc-N4-<(oH|R(ImkO}rhc<9}ltYE> zWybu&GF-DJtQ<)>D<-B0T4*dJ6cjiTU_#2hl zV|l&w`f_Wh2phCond?3Qlz5I#PRBv=l9Wun=NNLZc{?VB-n)bZp#ka1&6Tp&Thowh zsA)9Ocd9~TLliV`j{$l zntfr`4bkinnY?ASTaci2CWi>ydI>CB63K=^DvBvC#02w*`-%P2#`d$RAC2MKYlL5& zz2j;#Fv_iQ_U|$~=M9z^J1s!u!@DyvFguaC^Fx_C_d{1gQo9&Qb>oW=m417#-*2DO zdhikVDzQPkHMI+;hRYe!{E-rA?w@76r9qX z?j$aE&9UkVA$NY3C^ti|tHdJ~4gS$=^@CQPwT{EVTIT2ALdkn^^*EXOoqiodNQ3KB zA5pkY3`^2#&m3whdB0;f0vtRR2-whxHGr{D^Xh$&s8qKdaI@9 zQA$^y_2faQPMm zG@l__Wb^~Gy1#DT1O4x|wgPP&Xk->GUedK@DeJS3X6=-}vp*?pMgQb__()bqzHG*H zmmJ6Jqx2ovkplvOAxPXIHHE=N`VxoiQqM$BR=)x}Dwx$>@KPWY4 z@2e)tDEeopQ_F~5vsisDrmAQ4a&k@K&0be- z9bzvI`Jni!8;qKBs?_akxqFaW(`r`A`c%}=Jh3b@%;XcQ2{MqXap*J~7;J<#Wvd7B zS2qI~7TQJf5W`oTR_XC+c&r%V&e_b@-9~QaX+~(9nj)0MV+v30;>3Z?1tJGQJJ)Vi z=0tSW4&$a2sDjEKz^N%|2tHZjU=y`zh)XaNMDY#I7AQ-S~@>6MX_MH-W` zE$Wio2Vt#b>&C%f;#umDyIsMoQUTl*dLIQq;*U(%x%2Lp8kUwynQq8crp&HrRzKR1 zVuCQ5~Iy^vIY*JZj@4$xe)|uaA`PL1*)69(!2X~d5n?hSz#BImsAooa4 z>c$MAZ{5QTy8kM|DOip@C;tUQdb;TCr8R-x5qQ@A%34eKU7H*S(DxUtqf&&cQ zLhZ#m`es|Y65;COYu(P!=B-vSj{w(C&)(9#wUE1Js4m9-ZE@~M^Qte7mjia)maV&r zW$l0IBOl%KKuR*n{_`4+1;z29n#?9xjDeMDcrhTbnJhYO-VT}@@^-a*GytX}V7{-) z=Uk-@3$qUELSMrDd_CsnXF=Qgtrn)T#K{Wx=GI7P{nocgt=J}Oj`1}Zb(PMa+J=Gk zhBL+1!V(G1fBGgd$IrLF3~4e*lOL*%n3@_XlPwNW>_sqmbi=s~EIdL7sy56itZ5>- zSddEDo@`6}enKu?{(_jV`meZDaEd$m7t~{L>e$?Du&bsmtB?~-|LB~PYXa$&7kaL~ z+hU8C&HJ{|{)zzb-)eK}QD~wT?d*qWkYLaII|I1KSepj`5 zK`x zttbRN{?bqk~4ys3{EG=Zk~{B$sl-S!7hGLINLyPuPU;MnFHmh9PM!Lje6dE z6M-0FY|vp1#SDN`YOZ>IY(mYs0Lw zm<9Yw``*j727w=nq^;X>`#0=gL9I)n;6C89{|ja3CZX}hs%2M;Yic9m^$&z-?cWQ7 zMUHX~O^yh0FA!1cXR`;`28;Ke?~6@ml@@rgc@I%gFtH|fa3Be{A>LO^Az{l z&wU<1=aPEfb)T=e&kpyw%zcV(Cixz5p9|dQEce;uK5ufL6W!-!?()Rvv3cgnmWzNh2T=39Ru;UgcEN9JW_l)H|LtJwr$T zNQ_j8$>O~`LtJa;#IS5R!FdcE&x5*(y+)8kEZHNa4Y$0q?6NLUUj4Ima_tpPvvTr#oY%0pPz4JuO-sE5 z7ZPA|w%QfEE?jf57|^dXRg;CsTzTj=B}bxr3Ja~T^6d1T4^S&e=y7glSXQdH`c)3^ zzA~}DI66kXhzbcm-vpwsG=T0(0%^wa+QSkcDo2z#yH(KXPo=1VG9u+{@UA*x=Zhcgb1?d}h^~@-)aT3LVx~R)pp{ zYppz3i*e*KF9^<_tf=HKyf?5WMvr-$wQ+J-;TmUNkPMH;I4&OZuQmMbhIulaM+#mKCPN z9D!VYl$L2z8jAaggKV?oC=C%-+B(%~XlLOU;!jZcX`dOz!@l8QU(V{TQPo--n4UrR zMwz^e=w=Ok{tvL^f^`X=aHXL|*l^y%(P`_yC8OZnP&jwz3%F|v6NX&scqh|~Or>Ya z{jk2-x3pGyG&`kteiA()9)TLU76TV*kNAkmP`3rzj0=9`^u!qTB5?E!eH&8-^jMC& z3}^5Xzq3}O#`U2+V44Ecv`7)x+Q;D<#+##dk=jx0K0##G4$=KOterfxkV8oW_2Z^#iG}(|V9cEPF{UC(Xr*(f~3O-!w8G zB+s*#0FVn8E%?{O{2eXd@9{bJ5lYN~c=*#<-_@3%5;bkS3&dgbX($_-*%a&S5Vmqw zz(Dp5k5s(+h@dvAa4PHHP3+=AlKxj(<_1Rj5?4ySeX6vrTbwFiF8qf1K4xB0TliIP zAHDl>V(5&8A8>!AJk4GMzp{Uu8?9Qz4@-btbquvDz}a|^jtzV%cE*Y&l|Im)7WA`D z=rR_T9av0~ss#EN$yg-LBjbKj#p-c}+K=jC{n}R7hQCEZE)p6^73f_n*ryjUH`3L^ zocNJQ0>*NXcC-R>%6A{8n(SHk$Rjs&2x+LlSl+4mG{)30%lfyFMjb4)Fu<#NDZTHA zlwRT#JIW8Im{~SO;L4Rv0^fyIyMa2G@-XI74>sjr)6&qqSiKAE&qK? zSUZW`a<_{P`w5H>j-IB_v&M^;IwqC{A52q*Tt|$p_HPIZRzf|ERSeJ|wL<_BR2K1K zbQo71!NH-Lay^YfGL|bZC8Q$ljZt@UozQ{a`5@RwA_;|*S^Iwryk;qZCgj9S%ON}q zbBd%UloMvx$ldI3oiK77Ce7cH$^w%s=~&+^Q+hl~W@^_w!tkZ?{bLn*sA|sJG5_Yc zc`bn}(7UgZz$SI;TPK7ZInM5u*md!>B(7euTzh)UoOc@hI5>30%^Sg@T4TBsObe}w zI~*b&?b@~`!4lZP*kI+J1{+(5)k6xFz2kt*+$i#;bAniPe9oQa#lhvJxPBZX$AV@s zBMPaTuNVi}>*Deti7)y8*n1QBsH(FMI1>^`SiAwjf}#eDkSJjijcvtUqLeZxI|7b_kl9H7Y04AJx3As!6=4@Iy({yaz*4b$@Csrw_o`c|9?{NZg4r2E{{G z=B5VLJHTE5;qU|`$K5<*RB8B>n!ck7BN%6{#W%(AfiRGi-%-8@QoP7#FFeU-Qr~KF z>$Xe{_cHqm6i}`z^0fe`?2Gly3VcJzaz3hVm#60VZFQGD?1>D~jq(>T>+GXF$%W>$ zV%CZ3gXyOD($n*~^Z<5BK4{X7@heSk1hQHo=bCU-DH4{{?y3r(#dc_;dTO^0CtYLx zCM?ef^BVPOIXA)N_4GirAggtW?yK@U!ITsP;KfN=IW zSt{V8F!FV8-icWu?9a$^zZLcAMj!Vx<})XN?8Jjg{sp|8#2ps=X?&d%zYfw$`UbR@ zMfvz;;sJb?M(Pjd!%I2D)1zP4eFU}n2k<7o z$Dc;y--Hy(TOzsU7kpa-p;48nj~n*Smn;)5Z+!MC>UMsLxl;0h-eLdAT-AcH@N4GI zPxIumaYrytuqr^w_*tT4d@YL2m-QcDy>7ey3a5TL)JteDociAmDFjjf09i8r3lwwk zo928!hu?E*&-wmWuJ66-d-iv!`CeA?E8{7V!3EpJ`a@=sJDU#K47}kUgUk5~ebE~3 z#RblAe*3MLUV7rW7cl9CBQziw@ZGe#(IM3B?y4<>x2i2@^cC(zQav!4lW-wp;x=KU z4#liT!0?-X<5HxpLrxX$*S`}FDSy}(z-7a*wFokq)qmK7*w`!9NBkWOk8HxlDq6TKVIR>*4 z+QQq5UO;sihj5q4Y4H2#&0dajx?1&U{_y)fOn7lQ;z}DKF3myjOGO;sX}8c)2BVU) zJo<5t9($^&77z899BWFwME~+s(PBIvzK(s&RxBaJX(FNMcGbl^0H}DSEqqCoLSP&V z_RMA!!%z<98+Yu9A{mQ4gkmTV;C~xg>=aRKI9z3%iArR+f1n#CNTEGWf2!wmW7(XK z=>*KtyC@Q2BhfA7=Z<pt{__mji8^_%r?HwN-wK?Z*8 znm`34H~pbB|4Ywr7V^RxkXLkbaus+RYS z5VugV;m^>slx`8$|KU=H;62Po*gXyjBRb{)G3k4|5J)<%2LkzUJ%d1#d7SGL*b2vt zu~(6&(T{@Btz^HCS#=o$vP9Tcn})TFlZ&m%5iEtF+Gw|Iho*u&(Qoi;{(5sBh#>g| zzpF3s+zLd9XZ&11fzS1YdDs_14^E9$9wlCs;{}{8aRP)0P|>H;MSx zdbA72lYnFVEL54XEn~Qwdj*S3#~&=hE%Nzy

?rxdAlnSqda}Lf0}sEhINSj!K1| zd%lh(LJ@r7>fptA(dhNcJapUJFy)7MLM|P@Ci5$#(y;tBZDHUtlxep#-RPc#4$>b;m9JRY!#2)3SWm&g$@tayJn^t=@Gz(p)UQo7ARm~F$Vn2 zo>(ThDva%QzPw=c+--WaVkce&qk3KfbG@~I0Si{KGZ^jl*lZHF*WLIr2Q>a0hL_1Z?kITsm5Nl zfx7Rv1rP=+5PJrL#^D=KLf0xVX|_z$>$bp;`8Yfpke1?k0y*M+0PD-+)1l1Mi$Grp zsZ8>a@2%!jtWXG)tP0fa(rS)ClS9$MU~DRg+3OmD&3Rc6=Sa1PMjpAraYn2!XnYY! z4-xCGN8#xgB$~~?4z$|3sZzA{U+@>v)+-pR5N++E+S&tcwFs4Kz7NWn(;u^8Ecd*W`-v&{r78D=Q||Lq z?sHP^yQSQJwlEp~Ybp1ecyE~$;5(om?P|&04?i$KuspeE;Zl{rd+*ia{n7Y=VdDF7 zuJ?>z8TsbVgq}qh*C>_?1R;3Gn6b)yC3BN11RpN{iQvO0xfUO;tCBKT2M^r*@*#)v z5<^Im9v}B~t~G!Z_m?>L@%s<#YQ5tZG9D>LnS~gOAat%Ww9oo!SM0jO&SF2$aK#RQ z+($y)Av4=~%C`B=#1` zFcm6J`@V*@d^(>N@+sXJ2qO-@;Gh0{E@QUtnz```*7LIyy8=4$HT@>F`Kj&k+wJ+? z2~K;Ey9(`D8+6+9E7hL!E^1eMnh)sI_WVS(=g{=_SoYcc==iQs$lQTI8Zj+t^Y+HS z=TSbHe_JLv?LFa7l7ClR*sk_&=+~+39SYeZ|BiXE{rvmrIHx_5f4yDpc^eW=d3au+z&qqjHT?oVtc=;rOR z_HXz)HbGQwiC26o0IPZl}FE+mR1xudWU_@;>HCDIYhS-!Az$U___N`?u#v`8fH$H2Fxezb<<< z*=diI_eXT6J)b-w+w=5!?P||hZ>P3rsA|tu_olVSmiLd&67v4VxDMLV?6|z2i`9UG4Q{ZyJAREgSP<(2uxvGeqlLNYC6;rSj#y_&3+7jHM$BWRj7y-fwyy>O z%MbLDH*p$j%^`Zp9!?HnSQtCAzxnzm%oSrg#X7!JteHssGufX*g;`jnfQdJpkJTFi zz1J8=*bQeZ=#9@TigP;z7K8ZbCmxa7vXmyM*jygQ@zR1TgD;ybh zZMZk?UuW6GYBk=fy)HWvSptI_G8iEb#IDW@mV9WwjX(fKJ$Hzh2PXNOx&+`kdRB<~ zBM&?C#Yk3AS+dRFoKu9}FUg0L^@Vv3D28huu_$d~>%W)s3i|!J$jN8pYc!>FCzt48=ll`euyvyS< zALBF(Wv@oa?q^(|_(m}H^D;d;5yQ$!=&dX8>&NfJ0^DOvi6bx#KYp?1&cKXcv;x0= z{7x*yJwC6%uOGh?F$|bgihKO}@jJ0p< z=f+qcD)8yiGkwM+9bfs3vADs74nm5x2i)o5ZX5jp-3a*NL*KJwB$mGOx%u+DkSg&# zr{cvwIsX*ITTUWIUlk#9t`T`2WtWKY4;EhLY70;A+8PBO7|viyNq)<};0310#8)AL z{uw@V-qM~B1JGl=-r`|(NUaD#ZSiy9jp%P9*ZOMsMTQZNU;7n)FSL6KH*nk0qsDr+etBe~suGt#_fietysJ5|QKL-v0OlBElP?rzeZB|Ck z<)Q}S7BE6SqGDBTo+NSTBkL~{6T4E*Sk!zOukFGP9`15nx&ni-20==}a4|i&8Dx}& z#QbFd$=lW^Owzz_a^u0~Wqi=xiH4lj|=g`OJ6H9@|v2>J##EC$Nw;iLc`i;XAveypZxk z_D0_@Zz_Y}#&Re7*r#;WjS3$ovVCN<9v$lgZVH#^SX+?P_vmjva(4)NEC3zcpttzf zh|gR68`bY-^=qo%ZR&R?f6dr>fx(88iNP!%dN!x|LU5Dtee*<7`f*XZgZTdL!_L6> z{dEF^A#LJo_s7RM@Pr@-%FKt+SaulTEasZm4QHSbeP_N?65e-N{2COqx#s92YBB#o z0=U@3p}C7s+&io%>lTdJf1y2{z1Fs;uY#h=o;HfhE#@2&*=0|)Mbe;Zi^l5JFsaph zv8lqIzVntX_euJ337)HuErV*UpDX4!!_7I502QFZA^gkIM4{3orKzLeW5Wkn8J_`5M zjWd0ytmh?WV7&z|LzRwvbktt=8QG@2z6Y-|*hyj2ZON1u|1*1i#|VK#TlQMZj7LZ9 zbr3pG4Ragrqbtubnr*2I2X^U2x$D~vPTQXU^8L=RkAHhzV06m}+nx*EXbZXxU-n0*juKz%;_Ec~-m&&H z{k=2Vv-LHB(L!%~+hg1R3J1Pz|3Ms={XbIK{{c=(Y5!5o77$0jY5z|mfnfioqo?|6 z(FsW6OwvUt*S0-w%Ok5)_{DOki6)8lE{`wEbKx~Y;AJ5I_rNPl#^<7#HQvPhnDhN~ zyb$YPoW|u^mEijl^}Rpo`wHj#;w1P>j&M();rjvVdk?=qLu^17OU~zhF&{1jmsyD4 z7cVcoC~`^R%!>m{uDmK-c=452MFKBgGQDutj0>k-tS>FBzG^1_*I&NkLcE1BBmHOg~uDCQ@SRJ`se{p&^JY&{~V~z=8gMBpA zs4t#z)y!}q>cHI^Jyt$PUwp~5X-8jjW#ni*dLG=p&D-=BubO$uF~DXP%52sbA5$`- zdm;Yey~&Yi^bE|?pZ9A$8hKcc-tc%Z8hJJtz2OBE-qt*3XO?*hj&IeMSnbhEkOh3B z{(_AX76DA=;HOYuVj;&V*ed-62Q@6$)|WU~AQ`Owf`cXwp1?t$x=P}s$K+%;R~Hlp zF;M{bpXV1~EqWOf_4pbw_^j4Z6n6%}Bv zx)sabu&;|7MJ-?tpbGPk_+GUMO(dxnB|TXzGV(u3CWwG4Pj~5l2ryVQo9|oJU{8y+F<$GYg0Ls_f@zPF>X#nvkAW^6Mx z8-AO^dA*Xl@4D0!1q_5(m?i@Oi7glu7qby^wvYK}U^LXrLgwH^J`2VM3t_M@D8!==7 z89@9}t5R-7K)wP6!gBf3@};1K^MQEK_={MV#^pi}<6g(_Vc!0* zVEp8u_n%t*L!#gWqJVUM3I(h=A`G~+gxw;v+f zTKy@|PE_ABu~5<5-oGQ*&DHR41-;E-uzx~<)gU1VJ|D0aVKdUz$rr}#gkTuA>lK<; z0t`3i6>tK(L}v^c@@>NyHMvl^k}}M?xR8 zhTpIj_IVy$pln(GSe!@s&jMsq!yx~{gB2m&sX0X#yXO|MY@rLq_H_U0prv>tSp7{KvbcWqLo;K zh&5=wf=E8fYYmU0Y9hrAO-ORv<;HGxn}0w%$}s*c;8wW?k@E>feAU`jXb>Vp1zPW} z#@IZTKH%}}@bwmrcK8agY`9RcoO(GqX<@FiOW+nbyQ=`XQR;RVg!@-w=&+kiD)t-!OPk#Wj6 zPb-IhTKx1Ckj?RdD5JMfXtESUvCLgbYl{5L{es3xHy$X;1KX&=+i+hQtuNZl=iFBF zb}0Jhj*7ko;jV~6M=SaUVZ)fd3F{DZsHD5Ghu&QDfY6SHoA8J$5LrN&*yhTjNm;0t z)#3WwtYFFKSWJn_b38ha&3glu_oX5euS3yq;hLR}L_ctdj0mI?Ya>5ZOGc-XRC@e5 zlvDEp2r+2&t#}W%KM`!E~wGF^}M5bZ%oK6)Lp z1ZoYZqP>t{97B(bN@GG#1d(&(S(wO=gy%!>J@WGz*C9s^yiLH)3M~5wd0Z5Q@o*|1 zjyEa~E`U=SX0hpfLa%Art~_AhGh}Eyb?kJU5}c1*AR1Sr7KFU7Yj-Ux3l^QD)thW) zc4WUm-JU&K{e8H@BGwU{YkQ3O~sztkD zC#q~8Ef%GoLc^n7rXYMxD~*nba>sUwrl142n~1&5tyMlAz%nJ;f>zo5zLSS1FitgQ z(0ZJT*X72O)t*Yq3GN>7|`ca3Y;qNL{<_1 z5KFZPr|vVPzB&&;g@81CARbq8o-AB+j;}CWbZ&S))gvpu6LuW=6(JA#6?yUBs_*gc zTu=NrxRZ872_|Hc?x4omjP9TxDA@z}SI(PKG)bOnulh5H^^L=QJ6b%E!=pPb%m<*l zICE5Ce;W6SeFlk-_a}_`2Rq(t}$S4?!kC}-(x;*}j zAQ1PVvz}n|IFJOIGG``w6wfz7?^6PCp}>|qP*D&cB-ju7I~owjelXeD9|Bij)hE7# z3dFYwFg}!r>cR{N3M0%J(K;y@Ij z;@sOUzK!38EB_K&asNyFOG@*Q^7vBVn?&vgEOCMY{i`dL=%yb27g;=hG`{D#K3Ok| z+mrCA6ouh)*+I}a(J!?Z*{gt3K|b6kB3;0s}bv$7v-Jod*xQ(^Qm+J{C$Z*Dpq zjsu*Be|jR%ONUyxNvZpXqs!}7dw3Ga7=}C5UOX`YDfIxuf3x)N9IOj$6fP4M^lSCw zA<~IwlG=;$UG$gsYD%=<8sF=&v*DZg^UzS3Y)r5ZX!aMtkRtWxk+jN%z3>7%`={Y+ zF`PH&u4edavp`2}xrAJ>D9(gn(Gt7pnW;s2;yZJ-d0)jo(qH%Ih&683&Q4n{F(3Pr zfx{6uorRt1H}&EC;W_y*I?w_=kMogyS!3ck@xlR=`n0~k&^@bLKUDpsKQ{k*PyyLz zYj7}9uhB_gL+<@^cis$aZ{peN({6kSMGka|BsOt9xW`Q|+{f>7(@(6o;iw8zoUdU= zy?N}5=m+3VV#VjtVj=8W~w{E9ab29#VA|+T#a7LDY9`2Tud}8e+yHxe@`5Nn|f4w8Xs48u|-4;rJg5YwZCQ?(=U;zJD&|{o<(Wy&4o6$Z58w zM$-))yvfmV`wwi8M0%M2Rh&G-Vm6Zf(hmKbBs-XypI0UWi96gmNbtDavy zvadhfl^D$W7c0u#zCR&~-oExtLdyu{WYN%b&7ikw_HmGVyIlv%c3JYk_8sVMUn5A- zRD=8kR`aZt2W(Ax`?N*t;{9_S8bkk*>B0ER3+TD{?@(sc0IQFz0$$5!%8ehv=qhu_ z5G#t*D^u(INJF?*j84~^ zFE8XqoUX{v7J@>AysyogJRz0?$8KHtXl)TZmrdaz%3d)8cyygJ9wPn+x$&n>5KF;j ze1!9hs4(1(0x>m#?0PFmE@?Ytxuo_@3L3pb#yKX!)*$31$FbL*A9MM!VZ9hC!(cwEl{kN|+}qa|Mo^83!PqYe`G?Wv{s2$V@KI!E<-oU{OA z$5fj%FBgF9HC9^B_*zx0nC5>p#xPW(A&G9eN84Q*nXXVE5P;7JW9*UjqMPqiGe;CJrlw&*?&!$1#k5&?)jF({)nxM}TUShjqh{ca^GCxxLV`ZOVzi63V z{W0lVXZGJ4eGy@G(_hdRE&z6RjmJJP`%8(C&}YOC`XCJjQ~)_x8*7de;@-0y$1$Lj zz==((u-TqTSB?qB`j*4Io6Wc92v1G9&(K>sIkA2RT`82d=5i?QavWD7>_-wr;%~U@ zk;(@u9?yVPN8YrxuSvs2AvAr526I~m-lEdTEf<`xZ1L5(AQy_-6j1f?*_$yl$ z?yuvVw*iRnXG85|4q6St)fA&bgtx*6A!j0_ z#a}(fJJ1(_dqd3{?QzqR zQxu%d5O}!gIW~!&%Pe}XSM9-=Rnqf2U}d!j{g({=TlHD=lt8f15vji*NGmQAf^;-~ z%xgH0XZ>UUC%R;ul}*Q4_u`PsxuV^0kFgV9xXmH&8o0AUW_}uo^_>*-t_~k1MyF&- zrD%lY=NQ2lsBwAZcqtgm$e659$r{m)z}%gp9R;|s+u_$R@6JxQdcKW6Gyu3$3GyWF zGcN`1e|yP=JKLb}SE$!q3#oy*S7=jsLeXU*?{Zsyh&{4;hJRwokU$j~;Ds5AB-)9m zJztRl-^oA}J?--8z_(W_z8o21HiOj0YBYrNCWnlJY{H98t8|bizy(;X-TGU_2*rhx zwb-|d6J4-$6^&X3maL*0A9)HI#fGsnJOt}yg()Qq{4U*;{0Wt;+$SHf#>uwNR{QYG zW=IWMh6ZlA1PvVaVjjX6SSQi%LizMnK0N?WrG%;etWA3<{Vy?i!med5M)odK0|()^ z^tz7qHDmdSRUh=!XG$K^j*|sV_DY17Rn$rKcZ^u5c$YpUy&9umS%MyCuATulZ29 zPpT8aoF!76ZFJqie?47Ubim`%OPF%f38!zA2pEOR?kYIw4R@JY3eI7Bfn$xQ_X5ut zp&KjEWk_Iq|Q zhY<$4sFL?U!JswlhLx?FA zTX9?iqM6{m`IE;X_TC?0w{WmG?8)~W`3;1yo_;uZE~GV#B9vAk$g@7MuvYmKUGw)g zFfrJ0)Z*x5jUa@B-0HA@5`fJP07)2I-|YH_W2v%9ltdg!H%6$~j&5842M-6GC;&r5 z3wD`*{)4*(sQ@eqcH%`sf0Tc!;s?29(4xKS&+ESj5aWNQ8|pp#_&XulsAep zo`#3I73wDvHRcU>YmI9>oTN*X6PG?o4RX}VyLlE}`$)e;u@j$2g)0R9Az};cIsn&_ zQ8#>W`q-dxiK!b`Qq2&E$BqKbYhx+5-Cw!j_dPTag%oZ#3l(@Agpl0qO1O6_o+E-N z46-L_hw4u<#S_ZQ`eubO_pb7cTLU}UpV{$*Jeg@zgcC|GKu`Al^HxtLTgd(gorVpy z{qcl?R(_QFeR4cub;#%*GA@LCd{{FoQ1X^5p3pn!SuMf|{gA55-1?|Hnm{|eFq>QB zXfv3X1${pv3Fze?KVS6yhvUaAO=$~Tl-j?x(fGf z^#(`OVS1=kqWvL7=ybhL0H?v z5mS)P%~$4V00I;H1TdP$Z2QMy=sXKW5W{zQJC1!)U=o`ZL(=X2u_AtTKCH|*_;O7( zC*lMaYZxTWy&Hj-9!Wvqkjw~J{(}X7i-KBtPZZ2UnJS-HySqn0r*@wf8?DJcW?V+2HC-^x7M7dIo?Xky&Fn-`ok9hVVhn)a1~?fq;VM2`|BJVQ(0!(OGDwIjj9hC=(+GWE|ZOIa?Uz`B(&N z-v6}C3nD0Kjc^#(UrrSi0BWZaH5t<2iBaCKK@9FvLOL$y++A&c@|zBk#EvsOz;(E> zUR{YvZ(`zt58?y#nE;JIsRiA*I)xn;2Gf2d1_w$E>aqUUyz{9fS|rhfWALd#ESQ*X z5oLOSv9uXbiLYuR4uOIt8*pALl;i7Ux#@$Yfr47=%ta6WIBH!9Btfl>X9Cxcp3H-u zZI@%|Gvtex`C>I*2vHM%D8_Dm-uL*Kb=+dtL47njG=8?m0#fcX>9=Q%qZ61Pz8CQt z`+@XFFlCxoiNw@g>440-ueDZTfv4qLIE}*{O^w(M~ z%Pl`c`AhBcx~n{gxEadR9|6s<_A487D5fEd^|}O0Lm0sfG=(3oD#m1VuS z65;&&VVz>9=VGP9DjB%N!$G-j%c%AbW8R$!huJpuB&m5~enrA}L&7ZoYc{a$_hkU~ zmz)g1B)xXo?f1Fb&y4yR+7EiYYnLyu%WDgLgYbbboxY0rRx2bk94|SUo?P<)dfrM1 z>Gag?ChnK1iEF!LXkz>6Nq&|}_~QJwboga9{5$T=K;nr%20rNNwdvX4P0zs@>FLnR z&40?FjokKMXF%>R*%^pK{tNz0w)Ktof|-h8nc?Yfcylwst84>a=K9EY8~@>%>id_c zZTx}nV5xGqmrKtPCXGSNk0L zy5%p){#>02*zuWw{hzfzcl;^?JtwxhC*eA5&pTp&_R9o+?VcY2|KDJLu3nIVILBu~ zu5;{V;ANKIB>VH+FEijDZlgYBFaL-3=cG&^J()o6OF#cB><_1Ill-6k z?h+&&ljQ%*y&?mP_SL@3{7bSw+kc_>XM0-XzRv(jc5t9qr}#gM&;|Y5{2xV6$NyP6 zKLb67U!I|r?WgBn?2m%)_&+CQg8$sle+2xt?9U=!QAT>E@ZXX&xBu|Sof(MJHxqJg z*&i}fibtxwusGp{H#`%(M=#4jjCA{BQPy4GmOC=we|j7B3Hw80rQzEl|3`w%#VQ1@ zD#75S@2+(G#rlYSj8FbM?av*t3?%hjn%>0u?bnyK{T~U;Ma-6OGeD9I`@d;_PP#n< zJ)gTILo3@)&yLuirA7w$!+#9?e}nxQlnJ>7)ftEb5y&|H>X`j`?zRlXC~5;C%ksqRCTbPKx{8ICjZwC|6s5s9)g!WI;TAs^pwL9lv}$1HYh|J_o-f7(wHb z4CCfRa3hsrsy?6Om);h?R*J95uQjsDJX~&+mjFC(v%Dm~OnFK0+vFwr#l>yFq!gFj zAc#xyD^FgMU)%$Sr{q_Ed07Rl3&o|2Uv0?S|E~{{W~A@GQy(5|u=U{_UMhV!;KLMs zc$zPzK3s;&bbWZM-lY%YP=xyM&=#o=xmZ9M#VlXa=10(oStkpP`2V^-*z>gr zGfzDR(w3Cvq?A`j+iTYP!A!?*8Y z+Tx<#-SI4^NbH>pVB2B=-|?b9FZ|evS}1Odt>>lIMVWQsD(`UipM@E>0giWDv>s6JP_zZ}eCqM)!F;|RE*%FyV zkE10$`k&GPdaMD)=IjsB=`piF(gR@sC)8k`L7ikFL00m@oSx?<$YmE~Ajk<|kl7fQ z1SuxBQV3E64J1LPj7la5^dreZ(CfTeSch$!Q91X5y~^AnXiV%c_Wln?&fLnPVlEYq zt}*j}k;~qxOnlRh@{8xY$}9hD4w4wlx;Zk8E&~M6VJe%C+|Wh7P}DS^6L7A_(=e7b zfl5qH;A7gIli9M1@=z@vPo*U1VoYbvE6ouT+>rl=k(hNdk0ZXV@$dAE z_*7Z=loFq-MLVu9s>%v`0~kjZ5T8r!A`(nt=JWt~JgpF4ULk18p>z_lfdU04H0urnMYV`gMoxGOk=_p^UN}<2?BpBk4wEUIBWtCm93B{vME)-vk?lAgg)9dd=)Wg zJ7-Wm%qLV6W@Lp=AmWp$7FAT!Q>mseVq%sU%}CYQV!XT}pp2_7 zBeK6_=Kr~2X%>=Lx>;pMvH5=-`R`z#R2cj}p&k7HYF;LON_&`z{}*MH7l+?p;k}#x zlrOGFM2$1Z{bwQkA)_EpzcjSo@@wXZLF9Iv5L)Pt$e72nTrFVvqe zAI1%{O->d4svcu^A;cNkO{QxlxHZ?Gi)evZCo#jl==MJbzsotD3qRb^_Wv)#?{aqM zw*Q)rw*P+_ewWD^+YjSdFnm?K0mf6SX=sDEzukrhiB6ty-wsC}H&$@K3i{JPBY zZ`sF&6#Ho1|7iQrQTupYC-bMH@TXxlXlME_9kq|gW#-S1rhiA_Pn(pv{TM%p{eW}7 zFk$fnMri;JBo3>>X+(Lnp=LF9g?8_L0$ z55LmE)E3qk`4IjM;xPI&{}LOjg-fcp)EBMcC-{d;LgPOsK8I5ZFVrjt0re$(h}A9# z-f{>x2*>6$<7$qc-vl?7Um?mdlF9Hm7ZZh_EvpTPTwYUfG;mTBWbO(!+S&nx1rQiH zyd?3^>P2iHHL*oO)bj#UG$*s&Gt#p5W)6z#RhD0kpZuCdy{1;*fQw-4 zRD@{c`Q|~K=X`q5z=LSFV02ub9zCmoTf-+X8SZ=*R!MP57uLdm%^uXR;Cka){h^?P zdC;qQS@C|jQu_#9^+hFaHqOy_;#qDQ7!Y7qxTADzta|K9t{hT`8rZ)vF0Z^f$AJ@P z@-@x_l8Fxk2W&EPiYMMgRO>B7G0ogfYNRL0?WXb;b9%8oT(a~3VxPg>FBo1_66YSW zK-%j0MvYdK45)ETG5Cs27)3KEY?4wCE6Pb1{$8sEte6H%oz*=#!$`-eKEghi}gV`AZQJqLI2l-AwvJx zMULF01RsxfqUfd(YC}{2h9nO|eKyBF5AAl5G&tHj@g7_J-_zdHs{SMG{Xb*>?-Kln z)vq4D305Duqf*TNs2^|keQvwol@nX*Xl!* z<-HhwPB$WD4@~}HC}|eI0+T-gSM0AGdmryAs=+4P#xRb2go!^kI8m#wAM;p=n6UGUWCv9Zh4=tAV@EM;#?ZHIo3RF}lWa3?8|=0jR(|*YO8b6j znr zi%0)K`vyJThe^M4qGjTuYqUkFW_(!t%{cTIJ>xdWCdBq#*>nBJ`>%bs_svuO{p}U` zY?Vjf2!d!Oe-W09{dTGGRFUwXqVLdyS1ydzgVR5H7+>&TCARDvN9e{m@J#EAYViaU zn!4xRa6b0%X!S?ZM4~gDgS2CscI%sX&je&z!_&ADxp3*s)Z%8I^kMYq1H!lQX-l`h z`{nR;%{l$EeA>btL7b?7*#%7JSNxpg6CQ2^=WZ&YK8(+8?@h$8>D*xuQ7T3eC|kG* zv!7ZCh6rYk5GC~y3}9EdOs#9?YsIql9Qn;%(TEx?XCE1PY45na>2eF%_!&?r=|@|S z^cciaGYF27X7B}$w$ zn;}MOIG7ek)5LLb4S75t<@wL7{hXF&3>dMrRa>|zXpAj*_e(*3_6%FFI0Lg&m_tNj ze?js&VAGUKA;PN7$;{ybDTqX&V2;C>7lj+6Mn#e_m>Cz0c^F7Y#;_?CW3WwH5QS(a z_cVn#9KxZ5rQaFmKjhTMCh7Z+(H5?vb81a*lxa)lY>1dh6wQU1Dz*7w4Ib=v@C2^u z=GUiY9zSQAfBAR7KMb}bQ~Uz*z#M{ezo6B3#G$^3{IJA9u4CI^NdyHUwxFmMUr?=G zGQs5Zm`%bs)ra|G%vL|}6l6Y@n>#%>OIt)Kp=dxRT*8th4wM^^Q>beeB|^zgF-60X zif=$oQru!P)HPiy*dj=Un3QW%D0&>2Bov*g9}iEK`XL+cYH{1@@nCfa)nioWsfT9( zD3LLqv=4b)^kej)uJiQaN5OwSlu;ibt7XGn``K}VqaOdmCi~O?aet5NKIV6liNd7d z{nU8PKHi_@dY`g>DK+0*>V38LPiJux;l=y~_F^Xqe{%fW_Z)mPy?-a^eaiZ&WmWM- z`*?qk>pj-%Cc!uS#VPm6_2cmNl=n$XcCntT(EVP>VNe+K@PtH)n}4Wl?B+%e_{w~(=q*Ga|58yc zJ~OWFDHnfWiB0hie?d;V5kfF>4!iCbK$PX`0kYKzLIjE7X7KadI&o-+4 zbIbnuVx-PrJ16^Ptziy452VxXB5;c{D1`Dz=KCl5J)-Kw@8*lc7ZdlB72+SW)uDAf zE{JfAvwPB<7a}uo2%QFc2R1M}QpLzlVaWSlq<`Xa)@Sa2a4wI7yDCt(JSXH`A3oD> z^zp8r^%?8JQFF-HAX+jt7)4$eaVA{0Ja?{?3CXkclI4Ec+`8S_v)^9w&lho)h%ftP zB*g4e9j!wCIaHH~LSFC-e=PB574MYQlTe9=&;px32oyMc!O?9NYfi$NV3D!zP|*bN zX%186_E6jofferyim!q08S8^y;u?ZIYI2m6M=@^vL1bKMrQz>MC)CF#lvNsm0^%+FF`w0g!eycJhr=|s zbj5)ft*xLnzU4{7aOJg%Mt|KZkLfvteXi{GnaLD&V8Q$X8KlO&kM}qwED0mvBi1?2 z392uZq&E^TK~?`^Lb1Ve2_nR#Y>Za1Oo+;8VqYqV?O#kRO;aF(hd7W)QW?-^=m>GB zh9gaLB@!Ujtt(6NDu|B z;wyTYg9L)r^C1t>pZo}U_@k1CN2EO5=g7mIHg3E~mxqB#_NG1ZfF;wAhjcMeJg}r8 zSpkB5r?us8oB z{uj2%e_#mJ2=eGgq5lJOBJJRRzkehD>7R<6!b#_)+%heX#uMw`yA(p~Ts~=p2Y9P z_?hK5iSkcnDu0jOLerlW{Vs7kkrr)-&!iAWjk!Q8k|!`hK56;``bdBOS^H@Vv*bgW z7l$V%3Jl&>7$ja}eM#-F&P0HtupYBoQh-UykTyN~YGG64r@pdg7X_?*Z#MihwMALO zcT}^@OPw}9A256cfswxcvkt(48;Hx+?P`tu)oSC$#1oh$5i~=_XNznIt!_Z)A?KS? zY2@m9*&In99BZ!#B;X4Q$?YahHhzGgCEk8!(c>SIAEZ;_6Hyudq}v;pf3v5qG1cBk zdiubHO7#6S`s|5##G>?OaGJAFW$4u~LM@9y>bZi1bm-TCcVV6aH z@?pf9q)$K&lTSm`*TvKCL22jyU;NBg_5lE}wT!e^FvaK4L~)pQ;Fq7P7MOzsI0$B}45v4~k7 z@}`%pejLo=v>VO{^~^4Ru@!wNMoKukXIoQ*(bal$ ziV>#Et6sJo|2O7gZUVq_s-ylr@NeO5E{n_?GyLPk6YwMPB}&1Yt3+~7BIw_fz{xZc z@#qrn|Ci4v?unP<#{Uw{Q~Yv^CL;fxP%?;oEnZO#*n>G@4`0|N_KBVl``84ylsJu+ zM<+0GA9Mi1f-%A{9p}ZBEU)_rmUOMY7Be`@Q3UvCiwdx`S4!h12tDH8>ndY6yQHxO zktOQLFZjVC-O&*iPuG!}$g&T+#}@Q<>Bst6B|+#Q+^BOI?5ssaS+Uz((p|2kd;QFJ zbe{4>f71_r`Qo_zejvQIg*~R`IbOb7%td!RGZNUV)|oU`T;^OUXb$3D$8Y+i6<@0 z<*$<8t9!zNTQ0lw6e+{NA66Sl*2yF~Z|1P>xm-Pvl_lNcKx{lb;%!2Fd78^;9#J`r z7NX1#A+DY;bb2{-Iy_j2@LGuQvb-@36w0+YT^kA}?^7@tNSB`KUk?w>bS(aOcO#OJQ5`(%&Kr-|fFlUU0tQ zV0XL^y0o|Pc4|CF<-&)-mJ?K5@Ld zy{us{3y~b%8^!_l^$S?m`+-)!78jTrIyOHy3lSfA?|ntPc?+J4o^dwRU^g@W*X_=! zIa&pM)Hpqg^u}t4F5*6AoF;Mk7qX|cVCT8JO!znGR1jB+PTDDPYG5~q*vTV~zwgA4 zv|9$_tsKT`4F}*_#gTg8Qm<=9cmoZL{{R!j{*Rm(uUVy>v@_tj6(o`CRm| zaI{+8@tHYnSuKcwI1N>kK_;G+!O+Yg z`QkUqbKJgL&H3mM{Vx)9Y(W9LMel~0I00&xIUP2S$E$J~(5bP$_el`KQRF&31g>O9 zJX*Mb58?(6p}awbbiKSAW-Sy}+wuoRhz@}*D@13F+{E4#EmE*-m+i#wNHnj&s};Js~^0(b=Zx9yRa z_pW%M%O0V_PPIn^_hygIbK9eAWskH)<=IIF>4FRf2@8IAneXIEgY*Xw90my|RMX}O zgH(@4I3Fs>BHf?aBK@@k7AeIZt!ckKdMw=@-Q_Y!${r0&w@0AqyXFtbv6!R}Vtxpg zBAZi0>{(l@gxg*$9eAvQI7hi?aD?d1<2<=sbI5O)O<*&J+ZZ*{6~YwL3Ri(#QDBR? z^}8ROu`baR@Jbzc#jRES2?{oG3#Lg;^T+}k4A>PhR#$6kZ-n5BNT&o95@@J@NwxR5;8ZpBLuY*R^16R;4%FI_gnSQP2;kQ}S3M zk^_T8nS~oExCKcBZmeZOUYOx}F@568^6oE#S<1}Y9KpE05`p#TL^X@&lBn{9Tet9ZqwI83wr=KFFZlaeP#L zsrZQa?A$Lnp8_gl6cPJbQK926`RC>2VEE$EM{{*U1S6#`NNM)d9CU%PpW`SDUm0>r zYYq8$S*=|KBZ9x^=kOQ3CH_t+s>0u&6-~uoEYHz;S9ozHhp<}j2?5;PE;>!E_oTCN zBUfW;z0bWAHxG!FTw3pG*Wl*SqDF8`>-}UDKe&HN>|4-!*WD}c>x(vv_r@RPy<8us z_5LN}IHG2@K5NA)r%=AkznfG)-{P`NmOSH$Lmu_wLw1|&xs`E6Q*A2(>lLnsGe^ONL3VTG=3egnQYI;zBOJ z(s~;K`Qmm(J7F@jlPuwbXfRoGIA24G2w|~ znj?;bfXw}YIuGHYWfLoZl)dGsz&!tZyri{G{8iac$d>qai~Rvk9H1W%U6XiG*n3)3 z=4(gdp+oVxM4{hbAPhhO{mGh04*{;20m%8K;BHABZfO!!&daCGSL=n#AbL9ZDZr^g<;53duN z;#XZ$cEI~V_~hue>chH(w`q$e6;@&w%g=xqjKpTyJTaOjm;L8sXAJ#sFn8D(p76A* zbqy%IF;KT6JLvtS=FY_HqTT8=nnI`VIwBDBwW^?hEL@%~;cJU}pj*l|N5RXZqlq(9 zA_+xP%DP2GM6BZdQN|)_N9%v9Y~S@ii!yfo$@IqPh4hAsNP1tWE&4nd6NFZDMCz$n zuOXnUO>Sn^ud>KpV9AxDcVP;>{{`5jH|ZDx9iMS}XB?hp6Fv(xXR<&+_3$RE^xVW6 z3vu;ZUANm;Gq@U|!HdP^1;Fm{Z}JeKUZ+pX`GxLTN%iw(Ap)3{t<}E*)xc%X?8pHq zI1>fqPdv1z)#*=J4(o>5N1;F=3q)DKvj4-a^V(v)^7-;|ycF?3UtOwujHLYP-bCbM z405uOq-+#6b*z9=eN(eKh}1nW4vYm!CR*ZbpN||xME_n1?Kwij7y?H_aejrBejOef z-D&G3(htA>Qvr61T7n~To$<_LcFDAb3_6MS1){4l55VRi{Z`ZP#z4t>5ueZ&_Vob9 zg41|>Jdnkf5_m}gZ&L*4n7UTHX$#kBi|Qw`l&H{NuL&bvdrg1XQ911*P9FvFR#Zmc z3|~fg6CFLrI@T^89zW{K(x<=M*=0MU3iEzl98JTJ#hcG`+V=c%e`YcCj*!#fnH6b*<913$&O;@%u zf@!&BW}#IdPld*Ty@XSaR(J-;d)C7FV(2gC$4w9Uu>?I&7Dgrgn%>XLs$1^Sr>)zj zYtLbd12jMpYyXWEH)!@3fTr1c>>9ag*Q-b0#-T}tdW$~~HDSi~XtAPy0R^+}MksQ< zAD5x%m%}#+`tn>#<_SIiAKY|!`0*Tbf0v`(x<5(*u@9EivKF|1+0(F6*vNf#L_R7l z4jBs)UTFYl6spSE@B|$5`gh zwie)cK!DiYKsIo1CcXA7^KQY9oT7L>z83nOx!jdjxiMBbEU;*Z|3Hv&bK~&VR`_SA zU*;hyB&&P)x@EI^#Ym^3|hzDFN9d0S04!-s9cH};T3Ge@8vS*FTt&M6SW*W%j=n!|~nYzir7 z0!*P~2$RIktRxuM0)|i_R)SL~%s?yxKr`Hcgp#j)J_(S}Bpc8S6Z(X`NkQXs>Qmgj z{}^{e`l*KOt^TW%>rZZoRlnVmVNj*Gc|sDDXMPKk+L|*A5+*f=YdWlsR{2|$^Q$4H ztYq8KZd8{%mXnoevHX`HHql7g6`KYuaW)^lAEh2qvIQFLH-@-*3PW;^sPe6B9R2$(yO7>i6YMg}8aPtN3OiYip?MmX)=* z80|1;-1&0mME1;@kZo^>DTGA1kjPuq^jJhCV8yH$1?Sws$V ze~$jDIyylY6~kx2d2$s6Quw>zvOh1ID+;l3y@H_mTdID`)US`f&2{tmV{VEPH5d#F zijn*4kwoV_#1OHHuMz$5806c|$|KVK9i#^X>EYO^GzMiiB2I!Y3eBhexmocNw8E07 z#YD)Q4Irw1nkFOn41hp&1y=n|wLR`vwD<_NZ*d{NE=&FT9?-!0(!6a5Y-e;#K{9qZ zzgE>eAS`N@tm(^nDR_)_*W}As(};UiO{bxz`LaE~Pp#)0)RVbA_gn4RAD>sN@2gY4 zf4j}^4|+g>Uyon_zMnyg48ixq*9j4@*v4u0+&>{hD5fY1+mwsJ`;-gFiw+PhSEYU@ z^S7m9Du0?QuF5k1aBChqGW3#3VsjycK2>Z+zmk(8HVL#RO>FL-0I~V%JJMIQZ!7?$ zx2_S&2eb-^hiW0E3&y1jcbr!gHdk~``&w?v)V`~cWHYsWH#DZU??~`Ft$o#F(Y`*S zeZn481AuK0@^`1&gO*<@o`100@+%gvK|{@>@m)Gyri1Wp(4{?=Kry_zZY7Cnu5L&( z2={>SsV)CnS}~VFc<$~DEf3Nl^hYzK;#`5slMKNWRGnFI{%q;pd%LW!k4gRdjyAup zxAoutdV75e>=|u--Su9@fb;ovEy?mczD_6od60>{kiG>1iGL_Tw)3}C{g$a;pZeXq z&Rv^j9tZg8I@b%mPAX@jt5Rk1#7r`I>}lZ4jXSOOt*^_}zAKLZPql9n;HS6m;A7L< zw`xUd`)a_hG@a`cMEid8t#F`!{{fui-oK=C9O{pmH}j0{^kET4XptUF!_6xH`Q{(! zBC*IA56TS*pzq|WfCi_*SYHTd9T7v`cvX1>-pAv3Fn0GQQ6(9 z=3k>`0xwWNcYg2#!n_i(m(&O0mys{wA~;a-EAYp9`y2K4r%iZU$+xHCPvQ^ptMDT{ zunhj!st|Z6{I550MgQv(j0)QJzpfeP^1p_O8|8o9ByN=db(gqN{?}vTM)_YWk97H8 zPl_Amf9(-B%KsW9zES?yTjGuKzlMr8%KsW6Zj}EO5;sptm#bEMqx`RF;zs#jzvqq1 z|JqUOvbTRkLTi{Dm;d#XUnq4?^}m+#yJY_>QQEow*SP|gklGE}81^~Vxvm%06F zeg>gG@23#@bpLC|O(~|YA3$U_yPGUpIR4iQsbBx$C`gp$8FoK7lmE5i4n@)=|Le-s znnLcH8V6>oX?IN3dD-m33sW_-Tv372plDKLu1yVw~RphT>jUm*SqY&;-*x4aO>?#W>WpHKjFJ{C%}YJ zYJ)C6!v7jCa7!`>XJu%4U7A6d3q?t5`2#1Q<&OWg^|} zWpZdHnOrvpoN@fGNvJ=)eOtkv|4jSVUz4eQv7zbh3#8eUOEPsuf2K`Q{@2m}fdBOi z4C5_F=54sWbb+qGkek1`fX-;^)(y7*HS;HK|Lalp!50ww4E|Sxdi{P0Uc3A+W*rsv z;{X8L|LTvL`EdRm33LvCT8NEOADn&&Vzz1i*CFcdjzM^v(f`_3cWIs{oR6uGdX$CB zk9m&Psd*|ohWT%~ex&XTtlskkIJeP<@mH+DseerrpInHue7M=5{t)~;jwAOc-cUSjQ46%+bA^(h@*tl&XJ#(W4j2vFk2sKmh&jX~pQC^fRO zXmYrQ>mz&t@7v)6Kng6gIL4e?19GqgS6&>$_frGjx59^lFXH`$crRWhdOGu=V!myT zT8)ADwu}*rh1=HLob$F4nI92h%i^}i`s?7b0!cFBodZRq7Bt4Wp-n6bz_D&z9yb*; zl5z>%N3)rW2x~aD!SnD$dYQ*UWDrr~!ilZsU*A#@$fWZ!tGHSMiwyh)hHolZ0{B=W zVe^6)D9?2(WRt;#Id=Ienah)ZT%f@@D#OQh8i>ii!%!n;xyS3wHQUmNMu_u`184!l zXPBgE*c$G|mPQ6(iXm2+i|!3;R>U%-`-V{(H*-Et#y|z0Ai8xPk9@4KmhpSe(v=Zd z(3nvWj9tpPvS73%)UZRVzYPTDtV?%*;<8Xo*<-$Lr&e=3{(2%qknZXL|2)i61@JNt z$4Fhm2uG zShFwb9qV=BJ5c@w7`iKZUrK5Tdiz}To}8K9;7`CVkBK$KA8ny;5I*pw^HVWfkqh&Y zWWK$8!a5&E@sBHhz`t)P0qOkH)A{$;pQQ2cy(2orza;r7mGDo@EI(!G@J~pGe@=(s zgPu{Fp8ehQ%zQp|y1W&)A#e9#3r6S4Ta~_7dApYYGsxTaw;*pt2qy@66a05_L{J`t z@U*EoQ@H{(C1jc|I7VHq<0$s?knnud?x!J z9qvEADM*8VV29xU`}&V_fLiC;*MjoB%G=olm_gp2djs---t6h z#J^1AkFzqv&oKVDI350y(>nqm^yg*-IsS8vKNk6lGSbuP?=Y$+Rpgj=I<~9%Ip)=) z9(!oL8f*XH8o5RL&=k}l0&+Zi4NPEy z%5)^q3Rg%Byx12Q)W$Z3u)w8j68w$WJZ&D^iSTh=1E3IramYs&E|&<5(2e2PaUrPC zORZma@EC${Gm{WJk)4SS`)a>#Mdt%~Z1O>Ym>)(oAK(ILa`pTXeLZ2ME;K!}z7bt4 z`DyjFl74EZN}<^C1BQZxP3D6hGPH#)IXY-uoR>Jv+UJJ-9)aji5DqNtZ+^pa$mvzc zy*=2WUh{!MNbH~ytG2;P&Qpjzo@&RG3juYS0ygOg`0t49SZ}Z?fO}yoT<%L0aBujr za9!|>YjITgV4X=6k(#qLJWMw(%}WeYaekvKnhEU@;PzAC28k_9-uG)Zr#Dl5m(os| zZM4{CBj&99c@W51hw8=v>_iP9d33C27xO6`sHI1jGs#B-BxQ`frODYUDa0Q61YFdE zesb={-rS>mmg`4OME%QW=5hiC`-xYX?_S~RKvTb`Kc^(XLXu>_wn({mPRC5oD7|hg zQW&f?Z*AR!Gz43z)Y{msn1=~Ozo48Sr1V+n(}yTTxe=;1YqO)(a+8;6h4aVOUqvC< zM*z3fczBuyr-7T*7C1?`jP(P%GFdauS22!-vgn4F`Vye>rnINeUIDbBf8cOH8`qc+ zsy8#Y3|c7l&!)C;ZD~M-z8$p(l*P;@+TMa4ZL@qKqX_vL8zTkOJn9cO*?AM;p?(PD zK&gRd4ZdQb50kY^jN_zTaH*lBxdUIaSt(q=YtE_+8iSyCk$#C{XFfC)E;Z0>MG~qG z!nHW=hJOu+KQj;77x3lqtKA=jhiXetKNyy08&uM~>BqxI zY7eBu0MNz&wpS0rL7NGfWFP2@oD$xZVa;FGH!Hl|?tc`2ZJndONfll`s|UMH&l;g< z7@a@&3cS@|50|o`(JX>a)%l+CZS=-maCR#nroNZ^$!Yom(RIis74mMWsR)(47V@qL zp%)D`d>rnpcj+Cd``!~iC=`Wytu?29zXvnV>^!+$UD_dSVYYu>w(~R)T@%6%vsk|` zfhCZAUS5 zLm)5iTgp$$eaiQB2p8Gjn~=Ap@|pSjn_cbZuQ>e%N|9#21K`|uLObv=B1 ztS6j5bQWKkPXiFx)rXP2Rtoo_(ga5~IsFD@`e@4@C@_i5O2E?XJ54&h*ruA%%yeYX z`$|VZdR@ECVW|ilk{N+i_*)cwB{V_U6u1AS?0@xqTK**eD~(?%{AC{C?s^wUS(J>I z_5g7Y*n`*5QDN0X47pHC&{g%sw!-c~&$6I*CHfjH99hjp7_l7e7v5s_?O_cBXcGch zR}$+tcDYdfM;f8}k9L)+pDI5#J$2)3pgRaPQJJp71!sl@^q`T|OY_aCUgnTIH% zex&rvH|KSz{v`1R{cPJK8uYqwYp_7+y_$>k666|L74$ZNd>hRtc0fbD8--xDSWVnt z@4|i5=wP>-9vhAC_SHJE7sq%X;JSzUMg!&n{!yiOxt5-ARm zyk7&ECeou13_myjM^~E>AlrVDgZ~PTE)tL5ECn8qBd2?#!IMmQfnuFdAVAfa3 za?+0-Vi$U-u(0MiKN2?+NCCIHzX7*fx?pKvbUQcB$NIe~UtGo)SKx&syttyVcI&J3 z4{&sMbPc;X@5&nKh>NOv4PhN6?mC36Dp{lKMUxzFdp%+7_r*Z1dj1RCpY0N9$Jdt+ z=|6Z}Icdatv>=w^VK~1ZD-XnSI4yt?z4#z)JfE?DKjrK8+J6B8dB!20qiFzzUmY|C zD2qG4LR-|cf|-o_1xbTgr* z?ZDLWZuQ8%er0g~#RjL1cQdy4{IA;E-bsPztMJU&RGfEvHZ^7TaqtfUMwfCl)yJkD zD4Qz$cD5Ji1v%|)^x%`4HBNJ7UQkP@QrnBXF7aZlXtUm@j^C2Te}`rs|6Smc+0^ed z_y4DCZ!bLpEz7|fgd8Ag*pmY>z-ZA#8&${!o}S3xL4pmYFjR%$0$}eqw%D!)-AJGP z9r}QBGF}jXc+5hc6_;oW5?J)9-@800eNyAEuGL;hg^&j)zYx;zt!1zVd8sbg1_#<0 zixw<{pFQi`pmD&2Sk6Vn`Dh$7L8oPi75@;3JN^jqKgf;0aKlB0BNgvj;X$3@ZfyHS ziAFmR;FPmiD}Herz(i6qwWtRe(=C)`bsIct`?P&rhRYqs(Ixz<36A zgu78HD-vzW8{lCy#JClPL*s)+Z#2A|EIM2_4pePFQ2D>n_x1&ErEF(;+wk@|{;KwS z`})G$AO*FseAd{&wt(*OS5F$hSWXrF3aqZ}_3VqVuCM;k%~lprR0la#F=_v-`^u_4 z!ai8{IaT6)%J>VThb=Y1W4utQIcA?pGLVVk~88HCC4D^9&YHXheN z45KjFt$YG(fppUnAbo(1becbw(O&&&YkT#R`O}PRAW<|~TK!`nX`rQvDjW2+%sv&q zv5qiTNh2CGmLB_PkzYAj@~ZCHNO>DVl^%r5LO2_B)QzFo*(xtc^~mm&`{l6XChfSY zGrAGsTktL`;9VDa$jC<%C&Z8xiRPK( z{c3Lt{=$sW-pKKDkOyY~4#wa~Cg}fR?@Qq0s;d8!Hf>XAc>!69vP>ap%AyG%CbZI- zcBXwJ6A02uWHVBTRaqiTpa_MO%+NfBk*G!SCu&uGT7OnRmbM_2bZ-TrlphdUfw1~s zLm_2pLxJZ1{hoW@GLuPZWznC1`cX3Py}O?6o_p>&=Tas8*YD46?cQ1Z2jw#WeGWEc zO!F<`c`b+ydof7lHOaVH^Jp>(KYh6Z1@8Gbc0{T>nh!)qV9!1RZ6-My$UI;|W3=Xg zNU}Sgoq%ja&LA#&`^Ira9jr$S1%`qBngF)j(NfOE*SR|-zaeiZxzz?rt>-(lf08Y_ zx|*iUlN@RQ{q|EwgEF|K;(iJf1b(r7;(iL7DKNzZxrOz2$M)Y%{ce%)@8E^t-><#x z3Y~oZb@LZeo0Z)Z*PGWI8Ur>%y`@ROn6w&jPfkr_hCww*)5|&`q5hN@jpS>gZ zAr1nsY14!&9}%b~>x{8*+(d}Zabeu|rA%4PuZUf1%oBRE!b4@*lQHR$yC+-eH>czk zu3cR1^+EY*fl6Re&eTDMAPxMwT4T~*NiZiRaMKbG8dl?+MaYJG6dCcdB&E4epG3)d=5nGRO{?$a1H-DT<-TBJ+0yuST*J`_p z-5m^?4`Tyi%V^iY-V=?l4rzgdXlGju-~F#f3VrQJqUZ1ip^jD z-FX52lXBp{#D)K3@3&c0P3rZ|g}-{~?b{x_TZru^cY)ZPEiSPUKN7ovBL!sdg1f>} zWA-gFZ&>@*yGmG1Cy=(5OnQneg?rZ}YW|AzIdZwWX{MukNpc_DtC%y>9K2x#7!hf# z88Jc8R|0_xLSMCGI%R%wUV8|QoPfD}IYnT)k!h7$;+(riH zMvisoCsX@_o|@?0O2Mo_defzt-ea8JS1~=vdT_qX5OkR{!%y{_VPm_Czr6XyYnFa! z^E1@^*585o9racKcbuQtR(YFg9Whw1()-0TU&Y?{QDgQROqi<}tXalv#+czgCmilz zM-EG3X9Cs=V=@4+Okui{dfVC9pC_^-PLE@u%8vL-yk<@EM8%&J&$v`5QoSy@e;y^huk{QhU~m+xx7gOST;(Vh}mJhp!dlXEEnp2!2JfL$JjlBjWzh^;&f9O5yQsCf>L``|GOjjnb1bU#-YQp&bR z9-!^M8v#}*i$E(?{N?eCRCMfzf8izC(hw5+*3w#QwX+)r0{drfzSbGs&oif@+$s5> zX~D?E<3Zgy+yDkQ2+*~dUMP>X7L6S6J{(P zq6+QrU~F-jE@q5max1#`!TPkaq#B&aSTP*Zt&CO|gKB$V+Y>*t%>qxV_1M}UVP@-L zf_3c8CjdkM?*4303S+egl+mP(P#7GbbR?`^KU?810VwUZ_VQjxAqbP>zRzRDDqhJO z8mg01;=r!T(Ac^X8=s4CV1@Z5kJULEA2+W38kz+t5Z{K`Lyz$@3P$$^pJDtC5;QVz zpXB4~{ww_99NXkTfuA~aY@*x*HYekSvcDtN(apRDY=UVMbHP!wPv*>)*biW4_E+MZ z-imJM2P^FRk<~J%sdvAOugKtM)_`=-^ecE~pa1)F#Hgay3vA~yO%4y>WB08dukc4A zJ2DQqknNZN58A?E2;M`I(EYUDvv{{99m6Q1idVzt)%=>)-`%)KR_tpi^V(FEKkdmU zqhEcmsQhsCMc$8qs|x%BHC-&g|6{uTDgJ*1EtA^={Er;q%w$++e;%=LKL2m?`5(M) z@5zt!m-B=GXnov7zJh<}k(0Xj2A<8Dw~W-)gdh{oB1k1GiXIf#J*GT?~{f{q%K zk^$RcMwlqe3Exx$zO2Azp`WbyjV~)s zN7Nee_g_yFX9r9)YtDqQI4vM7fOt<>e90FU#D8I7v6X>*6cz`eh~l$*xh{6E5_vI- z69~$S{qSM{dC~YQh=|ipL+I`P)ozIECH9wvfE+uGV%@iZC*N0IEY$L1kjRV6c3EEZtG|o#A~Ptkdr|sL_7o&N zROx_m@XOWBFCy}%Qs0*Xm`^t?+>L@C4fq=Z?|4Fqx1Y%TeSh>a%FB^R;qB|+u3U6S z4R{SFjf;HUsq#Y{600kZJDP{cKEZ9*wI^f9xI@y+)MHsdNV48vtMr(~oyj3|bN{|+ zoeAmH`i^lKjt$-^ZaxID+_9nvqVvl@PH}uKU0Jd}M3;9LK|5`+FLWR7$!{)lI;7j~ z8KL}(K^P(zC7v7H1YWeqZ2)(G<14rrb^jVG*@Rm`hku(Ku#FQY0G10H`J4L$eC6Yh z$b*jR;}06Nb&6+p_$Tle-!*)U+<(`~58;g>JH(%y2_hUnRo*5=Jsd()5;KX1#^FGt zk;<@?^^Ex_uEc~U3RLcK*=gK2Ct+{f(u`wjEK*Fai1>WS%7_vb)jG+7k}n!fH$DZ! z7BTdo-Vb9R5Ug*ue0N_9+&0b!ZZ|{Fye~fA-yh!1KX6?q*GDe5 zA6EW>@NSA;AqahXg|HJ?ylz|Ukf6)UKkyu~&Dwi&a`@MO`~$_a|Mkfad;BfKcR2nv z?6AQ2M|1pBq63Y8pm^`yKJ@W-l}eg1=3yp5E*9$R&nx*$I^{@yLRVnju$2Th1oj&CYW7>P{# z*Pr6JqfpslZE7&@K@m9lgK|bch*O{8kKt03h%sj+R3w}=M3KJJTGiap`d%NrHK`q! z;QFO8k?NJrgIf)rAIGg@VSR#140SlyEW`7acxLJ-9=A>{yZFI4Pc$s2uMP>4*jo2J z0sTKSX;iFgi&-~IL#QRkl+V_=k2{a1<%ky>!`dOU;w32D~ylrS^Dd=xc$5K@!SXR7>Wlrpo|m$&dQ-kT)3G87_}f>cqG zmcD8*ihK{7*;M&W`XPibmB#0g@f@lo-l4>qIJbIY1*YCt+?RHr}**V>Q&7pt+hppHdvR-|8nVg_DZSFbtZXYTog34W-8FrQRrT*Di1J(jo^{oy)ZuxPZ;G-6N4 zP1{)CsBJaWX3A=TvNs|IjIeTdDleC>(?a9=^0}y+ptum}!7V%X!`BO#j4`xF;Y|hK zw4)#&Lb8*uP&=ar*~zOFAb&slk@jENzyCb`H~)gf&>+_^?9i7(nhuX=DkB!0s3`S- za*9&Z((}r;@sZcJhwO84@WuP>SMv?b7tmB!@``636>lr~i;ep%#C6e#b+!Tv*&&a$ z!#eqwzdiKOLlBay*g>djQ>0(K-+9$>F($FRd$z zBll5UM_S(nfi4B*hK(Cng+oso=?B=rlRO0<9!vG9d(xv-eYG`@8?AptBVoKu{f4a} zprtgm&Pcz98Zd6Wi@*hQ8fa=kN=A=c(9`44M;wAU6Aqh5Wf(HjHVU_FJKRVkIa(jV zW29qfEZ+Ja?m!-kU#*+YC9rSjFcAHPKWbq)6j+E4U(Roeuz=78t`}ww=ZIeb=w7J4 zbvHCv)#u<26`l*=v~g6t278Qa_(HC})kw3}Ajw`ev57l-P2#Y^Sb#SQN#GP0y+#_| zqkXMgi(y=JaO93=!&nF>A&!(#-iXl}3#zSc4xBD=>ZF=SC|qRG;rN6D64l3Aw>{}f z^bi&HjS!S2miAn*2R#Cqjf)=#8e$0(zqfPU?H&{NI0)d4_jX|mK<(Ce&6 z<$D4Bz6bg+(yA@a8oY4z(cpR5tXE{Ez>3jA`jADWT2vf{R^3(J#yc^)w9`7^}B(;yVP&kIp>IqhB8h3-J{;m;O}1f-QFU9TH5%BYZ^ZlVan9u ztWPZEzNftUv5?LSTN;TSZyv6c-D037vTuduz@TQVC-JXZVlXN2;1y)6X zon`V@#f?}Mr;BjM0Nm9PrxT-OHKD?{$yfL;g0u@Pf7MFi+arJVBcAhkSe>u8?orbH zd*R!evhK|+yBNv(2VD2&!rMjZf3dQQQ*?d7X)uV}UG014_)#QOEW=dW$7USi%=BH!Uk-y>xp2Fi}^9u>tkF6bpI8(GuqlqC<1(Z53sm@8XWCet zZd?^TWG3!$KAlu+EST97tA5W&ozLbnQvm^-6>aL?$87B`j$}%HIngRvoTz!{(l4Dj zZ5#$xvfWrPu8f``62`PGm6~HZwDA z9Km&;tn>zJYpnVaBQ*!$o`f+U;f@*C=3$%>4D!lg@9%Q{E;to>R~V`H@K!?-w+0I& z`&cjy+P!gAB(yd8Q{+Ox0y`Nn9sw8weBHCvIvBGd((tJcpVAlwAqz;SezqC`A%oN-oR7|`);ag! zfHR(%h*f@K*(Hrt8=Mt*K|e(J^I4Cg6SPm64I=PXv=|0$#cYQ+3wk|x1rtWJi#+Sx zp?g%ccu5n;Xq2;1`WxIf6`px;mpH2zU69$01yi4NyMopyUB-hfq!OocRu87r zHkGwdqZc)M{90?J7W;ReN6cBy&?43{!EMxts>Y?*7&NT*%RbBeijzIQ+DLs0pme@p z0G?nV!XNrYtk>CsS!T}a0$Vj{Y+0k6A9&sCvY2D6*Bz;b&=OhNaRpw&ih)4ij<(fu zUI0@qCKmH17Jz)T*GYIlcbgVzt=q@`1Oa)`=beaGj3af{aiXcyzyQuXe9`Jdu0PGJ zSEiF{p+Bq@g61YPs6TY_ZI1r%v>ntR@|1=OHik8LF5n400Jn3>qo@a&_GOrPG ztRIO%6gKr^hkC5jkE_*Vy?#_mLwkdM>{MT666m)}JvQmDwtAeQAC&^p-l89S)mQ02 z>kSx&bb!ZFmddnC2Y4(~kJ14iN2y145LBV?C8WMcUw9OVWZI=KJPJfI?L{nvM}bJD zUHZafSk;xj@Mx+>)mMu&jE#D==q8M^HlgCwvy4`8cBI%)r$Li-C@#tol%=3XL?ve# za>4JSk~57;P8Zq?C^=;yd1ciKC^_HBRdS9QK*^bort*}WBI-BubM>1gJJ4_b8(it> zHx?cMrh@v-cfc6r30J)lKVroXYIplR>~KfbW@;ixYXhAShCl3X32y9eZzmkHb6sLt z#7CS%!-Udc|K%lc2p?ehvoCxZ$_{{JqXgX@Cf&Ck%jh~3oC3ljS@2&1IUulcQH7S# zAfikq8?cxxkA&Ve($}JX#Co^&%JM1v2JNUXIXp~Vg*OaEs$Rk1*jl3I8Kafw`LWcC zMv8RC-1^1%TbnIEI%X^wQ9coS&yie`5q|{><7Wk!*^%eY;!24vXw7OP&HR0-b;&&@ zw#|{E*4lB0CBKMW>ygMwv4K5f)B7DPYf-BwT#fbcWmIUrUWQNtC!=ELO8~E|x9IcS zqv3pbQZYL|Om+M`IzC)?+}#rBc>6x=*hqaIZKHE3Zmk8V-W5O<6^)DG9szVV?qnnN zGnvH0t#)Kw^<}egys_x}Oz7W%d(dZ@?mg)6a2x`tz=4SyKMoU`A*{bdAx5thUktX- zJQUU;6E2$;au_ke&B5lZ<^3oU`@@M?yC-7p{t?C+t9sG-R^ECs87nK6{cFCB_i>8) zGr9A4o4ZwFSXMvvlODfK;1?tPWt5GyzKI=kpHr379@2flxfJ{=9#4+j3OBq>NT`n% zX1KJ&y=fD6$P>^2g9p-W7-7_U9eCTWjSgQX`~$$h@ah2YtM^mDKZb*8nlKm5SNxt`usd_s}3MJErG{O~%P3vZD z6T44#xe4n&>CV386&~5#C0ksfgW&nVBfN#Zi=)tDfs{IYm1c5oO6$qjKf)4^0_-{a zm2b07k*{K&OjYpf#3$QBZ26mmu~9NS1Cq6qY&vgV#i%(6v8t&KL6#yt?GNNr2`sjWQtQf&Jm)=N3wr+C6tC<)znVcng{zr=AhizPaeH>@C3NVNH4*Nx_i2Njl9qAn z?Rd6sn_AbJT$*qep{5IOMeRNlc;NphxZh_CO})h2xPriT(crGX1F?|(kX%uuvwnYsqpk7O03qVIxz)@@eVk-im5b3v*{zwvvJa&Bt z&$^madUR8YR6h8&9W84eh8;Lx+Bz_ahs&Ir9cXIdO6Sx3jNR9P*nK5O`TFpkBlUS& z_iorH?^xfz>Jq`O+T|UvyVAHPzMiA+?`EW{@W$B-lv1d_3ZNI}-0o7@-+_hUdQypP z*OrnASOvCh#__+kg?OHkdoo!cAC3gEU^theM049iKn_E{D_;`XTa-es6?Au@ba@W> z6MSXO_i_k(@=DXD7KlU6Kv=1FA`Kx~;fe0QpldlFNLY7?HWwfLOal618(w>g-Mb>s zQ=XnagZ*@|1f;tStVXS+@!?NIu#JN;+L%LE4Cv+yuoc761zVnr!XacbNtV|~tTi!f zW!s$c7Q8dkO<*tV(|Eyme>?TsXBcT>Ut*n1V)jZ@IF(2|bK)3$aS-0U(^*dM@|u=_zQDler0Fp$HBE zviHkQ7^>%5%#5Ot3ZS{JF8+JGZ%jq+oQB- zmah0PM?cL9ol-#UiwH0>w4HiZU|{37J2;MqdX?L`IUH`&3K_E7(@JXvilAeEJ4e0L zo2WZ5Yrga=^WsNN*hM;DhP{z&dj`z#H@Maay_13qiXoY>{oj6rrZ0b|TV4&h(a5#SWQeYy8$5;TH)zr!@C0_{{srg76 z;f8aG;ppKerS9ucvo? zu@jX6R-9h+3kFKJZ7Q(Xjc~q)*V=B8Bc}kKED-8J@0!O%qaUoul&2Jmx5eVmWl!_E zb0^9vzas&uYiA(k`3e^S4Zh3Q|NnVA!v}%xxWD_*je__Iu>njCm?)s+&Q&(1YXs0n zx&qb;FiCJ@io^~GxO4Wvm-m6i!T&C>sNCSg0%sn(0*dq|4T*!gAq{>ALzAYfdulm5 zy^n#RvIxjJ%sl?EMwp39@LOQRy456>`%zey98W$SdVYUfRATsB-l|6dhh|)M)D#K| z^B59r=PT=h#V_OuV=e1k@n)9>_UNvqDM%B4b7?>{cu~?<(51EB2|+Pc^uJR1S9nu5 z7aexN7Y;l33x{3Kp%V%Ya%T6n7bpkl)Esa`pR{IF5w&mf8ejGq6y^Y+dMF&(eI znJK`I5ftT}EqgPlEDp~AI$-dSU<5Yxa!7Eqcuxh+38;zQ4!lBJoQFTrwnX_1IRjVE z2|$}<0@nng7MIwl9I=`a-Iy?vi5LM&eqc8-Ro+^2sm3k2vk~ey9say4g0vZ5E zFXo1)p!gV=IOoZhuFxcXK!Hj*ztjm3iq=v(_+5xiMd68SQ96ve2uEL{C8 zc6-2U)rP7qReiW=C1#03{J~+k!^`t==MW97NfrM*0p6 zD`ss&Iv*po9KRVe0{^u&Mw+W{jG57~UD%u5bb#Y^KA3px5;&qU*Zs0ftIX`)xNYF* zOE<=|BT|WJd!C%x`-xcf0Y@Vn99*$tnZ0k0T6@Cl>{-*=jj2r@iPt=pJOh>@IQYbH z1h|!uL1S?%R>ouB$Rgs#sm6cY^_-u(f8_fo(HYImm^ed)0BSuC0Ks`U=OBL2F|22F z3`@^v%QatWJ|mJTDYup$abpW!j7{^uMlD>GrZ!oFx=ry5h~d07hPKW@TX1heKq1#< ze~{}4J~$!~9BJe=#n&j|17|?bRZwV+V>b_t^~7C2!HPs7KS3o&X)dEQfu{}bZ9x{i zcLp`ziV+*Bukf+vveM>XIpgs&oZ5mDc+L|E>NCIK3=l?br1+`|c9IKh_`)(C5_iXY&csljLzc5<8vH9tV*0{U)A>gvPB_ih6Mvn6kNB>qq)HlYIS7Il4mPa-ezw(DP{$ z;s&Qk^^cef!P+%X!m34BDjzopw^~~SLaj~bHp&ncXN6AqT>ZUmYFD&vDm%iUr`q^GdlDkRi&{Vo<&2o}E<^AK zNY;Ym*AMkr(ahh`FIwtSt*{YR^jpcq{_fVtGHg5JRaN1eOHM)AGUqiwg6!|S3)e9O zkpR+NlKlizhY-Tx00F2{wVatdwpf>;UF9&Wr825p#q$i%Kz)o#Ll9lyQB{Vx5XOWj zoaZoSI~OTTu%3cq9qRyGc<*|P_4AME1o^trAM`M<2Ug)HW37PKIW@?7S_Q&*Nt0WM ze}{rkqWrXn&X|Q5gO(`@koQ795{VsVhsDB-;TABO+t@^S5UMK>COA2Kh?!d<(K*1w>ZXZL|bxStFeui1j^@jwlso1s%s>On}t zfb!0bhBl}P+N@EgHN6xrFvNI{Q2DD`BnI?K<+9$sN|Ju`J(cK`>sOIT>b}iTvuhe$0lZU)A_D9(b z6Bi2@&_NSe^WzS;+Wq`i=1I9Srx5^XY=<1t>&NjVm#Pj2DrLZ*7VT?)pXWgYSYM8n zHnAbU3eMcyjns3f2Be)`3`&}F04b@~>ID9pk0fr9H!}>%9eO5lfJOT#G!o;HOB4#i zdH-`HOoGYi+D*1C~f4j~o=me&7d$DE0$QaM_I_S;}-F zRJec7Fw*Z5M9_%Ah)N?j7o)VYIgIWx52Xcn_zEa~HnB`%dZm^d;FpM)nd-yL} z$A48{B0LrCD9&uToMvaPU?>wmJKA=A`9tVLsP;h_WUBmcc!9mZ!|a{53KpQ%L&N|~ zkldtjXE|5?>cdN(mT(W-j+ZofsE_ky^Fem6bZOXxo%kkQQ>-6h*0kp9xF@*b*oSnI zbX3e2fx!+TNs(*AdJs|rVHn7Uh)~2HDpNNC9il*qYuiH1%<2tS_cV*!7@4NEbWl8d zS+R2m1iA9#9t=g6%l{>im%e@jx)>yMu|{_Hm%<5Z@p>5DQ^%4tkemw0Pw$8JwVZk7 z>(n3@KjF!mdejpN*$wm=Yg6@{_t1&E?rD0x0tKtqQJAHVkrl+n5a_$e8SRbJrQd7V zFqWHFum|_YD-sEm_N44`5sMCtLI7bqv^yGYY$v@DmC-hZOQ7@-JQg_>7#{eY-*1rb z*K4}u2?)*zrrT9hhybQ6%I>qGUN(vNhW2$yk{7G0Tr}9JK^puS^W>14?mbKz1u^O& zu_B%#))MD>0Y(Z1IHPq{*r9K5Hpql=H~`v5EM~QD&~gdNqc%;2@zJZzLlHk4g=Ha} zuvXGNf?VN|(ePKv7_h%A@oDicMT=O1NUM^r6HU+_qX;@l8of*8EO)JnMw7JA-KE#X zWO=A>EzNGM05jww{Bh>G_%#-<#pcNwDYJ=kFxWlSjtQjoFUg63S|sbNXb3P3?(K0EMDsWMGiQyMT+s@*0q+bn4hVEUe^fkkrl&^@BnrKTJnO|UqqNM1p9W30Eeq;*fbI#XZob2;UrSilVaK9(uA8m2gYl=f6%BDo?<8wTMDcj5kj}+KNbo<;Gbf zqF2ekXxn@N7r{n&0c^j*AJC|h&scso;r}pDo=dQ8q!5(JLI5e?VWp>dYe6NtHLAa7 zQjFa!NF%fWQKU}e8^SM&vw(1vXBvDBY33YEok`1|Ddi%7rXalR8r-V^38W*E$cmIe z$ix=3*V7m(fl}ApiVp~mL0}A+$z=+}w`>A|_d4zP+HXH1@)guogki-q6)FU_igyQ* zV2J_z;XEabMIsX8*5mdQ3p~0k#m69Beg@CR0-?+60TR&%{(&C^a29_7V9Ge5OBO(4 z7ZY>|*dmL9&?U(fsQ~EdfRPD108DUI()tT~Bv9)-qU7jhsZm5Z{Sm@}hA$+1ZSohg zK;n@84?LqO(r9vK;f;wQj1a%Z}(5Z z(+k29#`IF~JbeeFXCws=q!QD&>J&T;j8_7Gfsqii$hTye5LW|u^yt-qe8eDc;jBtI zvb3+zS$M!qN%-U}T#L**jSw!#UZUcZ0@-)YX~gywRETSUbON5rNcF>h0v-nz2|ExdnEc^lbor3>6dy;xYnEihU|9PbFe?@*DFi9XZF_7ZtGgR5I zF1eJ^f)Qp^Rv*P2Dy`4eZcN{f)B2FYX@U#p^=bZYqt=UjKB^8^zrAy5eKg%mUY}o! zeMT8ggZy+ykp3r0UJ;L<#P3J!SLUxw_Bl&(9 z5m^nJr6@AU43q0s36fe1QqpN3?En1}G_2P9#F-B%u~#Jbb)RyR{WL;nLCSE5;^jz7 zR<#LdAhp)3P_P~Di?JVVg@A{~xs*q1(a_6A`gOdIS}%vIUpG>prNAGndNEq5?(rgb z*j}NFAA%=jk9|CzInK*0)AzLooh~SfuLGqE;yx#kE{NxEiN z#u36@n9`4@xh# z)oQx#TvL0qEzzrKNPz;56z5|js6Mh^^%yreSO_bmIU|O^%-4-H^0-5tiqa^#J!ZX@ zfJuEddP|aKI!&G*>9~P3rmbV4)-l_aL|AX}t zdP{?BN&^yDG!}P{`hPUP4izuhw3L?h;ilM09|RWgRwck2B#^f%F|E$Gg^GX+cXeV~ z9j-x2l?#NNf2$EEMLDY67nLfvGpTjJFN{0?UEmzqTVJTp-R;vq&a=Tku~FXl{`%bG zP7~-XPoJyz^||`o^@r;dL)N?hOw!zO{+%WyY}m6lQ&Efi;+cCVVRZ-m84^}=C)lm| z#RME0@c&->gn5w4a`H_8o7s}I!N1JGGq{pDc;NgnX1QLzabFO;8sHd?bDNcs&=W@b zESQiZ))V;7lxR%DvkpgwJt|Cnxsm=hzQd$-9#Y4=*<2MkU(Za1A|LB)%)}7t_-WIc z0N!8QF9Qz`z$9DRcch(#%`cj*_j8~{$vaIX4nefFX}y7iV5H$OGxDYTU=3F{4^JiT z7VE)fbgj#gXXYQtgT9g}d4WZT!MKF8JDvYn`7lnRiHM;z5QrWa0^d zz980=T*=MHbKI3Y^j;3S@bd8-%2zeZk&mZ~^1rs`wToZy52X&Iwk690j;Z`)JY7cX z3+Tl!$6)%r<)D*mVqR{Z3rPAZH_y99YOXX916=wN+47?9QKZ+_O~n&4CATs^Pi@V6 zmriu^^WYxPaUnSdCYTQjbd6SY*P=E-?yqmGS=D^En$CNd-7jF7&8Wx5Rk0V5;Rk*S z=*CEY8n66@Rs`lMd3uoI2zh#}*o%ZY^Ym;*ZWZSJt66Te9?8;hqLJxTZRtKn!5ep| z!M3)NROy}Ub#tB?h-|91=1rsZ6`8zy__y7k1jhdiKu5nD5axgAqwub4l)}%^K)99tg`99i;V_0zv z>yn1xkWhqf0k%7$E~iQC*Yv00nkYUgZl|Wh7Ig{eKXfy*bn?!o6?M;+X18$5DoK*ni3MgjAZD}tj&S5IJKwsX2r z6spk+i^ps9fpC~_xwZznA1#ELsV_p7G+AZh2-av#ebKpD&cFOxrqrT?h0Ij9rQRMW zJFR5*X9^XI(x>!5y+rxZ}{A#)+*X z4fM6*ia82mncJ3n0l3%CEzVKJjX8_GkHfyc4 zf0EqZ#~md+;GlckU>yEq`whmNRQd1l03||pXUc+3Zz1S5uNvuTXd+_0$_-e35jJ3} z!iU@^6^!%@d@>fOCybKKMylcZ(Ssj}u{d2aT3^CXc-5r&?ZoW3a;PIXWMpPiocqe? zinn7kx^G`y!??qmaZja6Mx)BqW|QT`#=*d;PW3jUhLeQ1R`6C&` zkswD7MY29&(CMznxm*oSt)G&#*U&H#b zlz%f`em6M|^RvZ_QeR0atQ%5~4f?S{Jxn47%Mm{?cn5qs(hq`U8K06CmtkYj6equl2_KlkbMlj_cdmsKuJDoVsuab26Q!` zO=!v z`4VH0##TOYdJ===EfHm)$1o)l1~0P3rLcK;LH{U46_g}eJlStZkf4$z%-oX?awP3B z(zn5>rXS2lI5*+7Oo#n5p-PYkISjno0T6e2njT6yO~T(}I~R6#d0;vPX2Z!m5A5Vm zW{~p`-ZH+kM}|BU889yT0`D$lrW)js+RUl-)j@rcbw~@09b!&7PAHM${6RJ;K6!?m zGx>%d#Ilkzt{ZozBhr27y@EU*mY2c4o%$9BCcR=l#G?qaJupnBP#|e>*n-&Xe34@u zs;Eu@0COUi?E|pCq?wdqEI#4@iT#u-h{u= zHsy|rZ6`ye`3ZKT)yc^~2PeQX$-S^wRK;Q`NbK*bCZlL#En&XvxSELhn zATHyPve>sf7W?N2+bSpnry*XD`w@51ac8naUUElXXo=2|f(oF40h(EVogG*TZi2bX z9W7~sq!pChF*p&Y|A5Fkz`~WOYSk`veuUQ_)pSO194@?pgCgfhF?qWb!QuEaSFuU(-FiTmal-V!@h3EgeZwR*MGdMSi26qp{tjLHtxtA1ng zcGCi>I|NDrDP)ZTGkN+?3yb>tPa7VccXXyLSML=j^t$je45?nc9Kl-M>e3CWzS@Og z{O)9wUUy!Gp^yyBOAK709;FEsu2hervEfncy`r(_Z2JP%_%}l2Ta&SqEB$)Q<)w16BWxP>7{sGpwP|2^9mMq&MU96YZo%b z0XWsEa6$z|_cZ>uXfxN8k#Ch)>zpApU5Ar|I-DfDDK!QmE?0cS(g%x{@~DLRID1J^ zcP!I_W8tYaeSy8fVJaO?rO19g+`>h850BuU%FaCWj<}8A;}1xI;X60sC)J;J`KwIO zu=G>wVPR@nEDha9m!%RUh52bNJ~`V1xVU5n##IVDyzTiCbUN1vh&^o!_Wc2Rl)?1x z;E`Yl@d7wZDjaf#9GdQcgVR&d16JxABS}sV0uF%`-GAEAd22k=1Q!^dx4I$Z5nNgk zj2~}?COsAB3OH(g>^g=tb`**qziBUtAD5$67%S;NB}c92mWSy1ApzvIki3oRwv%2) zkS~b!>f26A@CBEXAUp|C#yTa2#XEJG%F1kGCRrod2)syyR#z zH-3Eh$(a!kH%_kEd;g@V0?0=ofPAX(8i@tK>$7_3hHyFlz=P@3Sbz(ij{qU#Z?9zvzITcp^-o_Q^vd``UG5gl6+~MG3~3J=mUMXS zhqBLuGbEn;4bnN{$zcxSz-zvgMDYD(rAE3Ak2{EmcaF#RnDw?qod1xJ4TPKXHZla8 zcU2+gxYk;MNzQx*=eRNJ;qC(^uG@_h(g)~nr1?Q`-|uq|(6Jd)q2>(wWT^S`I44J_ zc^Bq2^BFJ3dp(quoF_CmXkjPWC9yk9H3a7*96MN zb$jAT2`jjqwk{ha^k~+&GuaD6qIrX}%#?C-QzUZ}af}-qwm=*sF#R6A3p^S~Pqr2~Cak(Ss_; zHw}&Wk07(b-rhQ_NWwaFP*(t>R4E}ljm2oXQ7hZxhj}l#5S_u-fB zOk19zyU!(p@wY|(swJFB7}Zj)^Hg#?rltJDO!U%*!e&-)Ffih3VnB98c&K#I!MRlM zK~XOBdiz}LP5Fk}O#=3gx%f+YV66fP8gph)azA3eA7eCk!8;0;x$f_}@dy|qaykv3g|D=Y>Ia#E3nK zA-Us8H9=hIb0&2TZM2e)bd5M-zhXvgl|%(;e=Lt3e}r-vu+sL~wi6NAr{am~97Y#4 zwu5C#e3tnc>Uhj`YKdYQNxriTF}AA^DEE%Tj3mMRk~^+h{anW*CqZ?N*0-M%@ zti$;%!(k|s0F!xZ{%M3c@XAJ5{5;ml;f_a4&3_E10n=-y%;lQpfv>_($R1}IsMW_G;>%d=Dg>FK+7)h%t61X-=RB5`{*jao zVxFGakIEcG7(^r@RQ#`Mjo2e_jH|^pBb$Txa^u(P90wK_#w+M}HjrkA(-3Iig#!WC z4-Oa0iHTY~gn)P$>?}o3UW3k3G)6FR9?C^jP2xLv@0H^2?`NX3P(`30sdI;r;V@Q1 zemT5R)jkv87L(P!gBSVtAyGVfL6z!K(NVyU8x0JxM3IV+N(ti{d6Mu~ndm2O@)X`D zNTL*N0XA!#xgj3ajT4wZb6C+Ta!X)c!FH_~+XxAW0Ab~Ui~wQWZoLLY0uDSnDDwrpjaED2#1pr4L>c2i z3IqpZUm!E)4AsiXxjXv-QJ#Fq=&;#dyg~)}!Y@XW4XB`3P7j74wenC$Ye98DC8`8R zN}gS2W=JX$z)Do_l~_CR$k1NqXTdo7`w88Twu-o>^Vay+kdEkahu1lJ`y)l~mweXa zmtTipR9~*gUlN+o zf+DnSrhuAMCSi*tu?Cmw30aVlrZNuQi(|ygkd9b{_6-i$?H^&<3 zSsV`5-W)IY)1uXz3pt1paE0^?GGhlA3De`WgrU?tRh+Z)DTRNqwCrOq3Hp!ycqjeG zzUJdyL<10Q$_52?V8%1<$bamkjK2ctyYk|%KGOK%Q6F=E)dl*?y+4|qqV{{Z>uxl! zx^ornRC$vS>h&toNhV&J$lk8@dP-MEAow_Nt9{*N!@vzA2XDn6kaLs0W)z5+K?b^s zOp8>@ghwT^NA|`u7f_itQg^_xZ)RiX!YUP(n)OEdq*94EzYUZq9M*xqEi*$n+D^$) zsJzDzWlsPORO6uo6<)G1!qxc>$FveDf?uM`+Am!(R2uBT8!9_p?iaRf6h z$`E3eS{^O3Qjz@|X(DzW5592*VX7L?z%sE06#5gNQHKf}g#-Vh?Rk8Sf2`8LA1Hb& z|FZoS{soxSUj){-j4LfMX77)XSz|#7t|%V)<=t`e6}-=m+X*D#hs=61vWS*+`{D$4 z&v5KYje*W!W=5WV3aT6-o4334F~y!HvQYB_&aB9OYdOzqS6AohUMi8xxVy*XW_NTEsS^}+!WsAY!eb~jTMQ{V%C!^fyUW+Yi z)Ormk_v0w0aK$n-|CN!@N+W#+s^dyvBlRP;LsR2uw88Cs3iJah=o;+L!7Py`Sr(7R z_Q?I9O7weWxjEQKzpZ~a6dOP7h>o`D7qQpwpqcv=kd1VLoAyksnxq+yNMb_K_X-Sl z%&`2ysx%6ZViHxW5@R96jn?Z?NOC!2C(L2v0z`MR#e75LOsFoYGSW{B=A%1{C_idw zF;SyH%()aZRr)6^ji}nh>kBidAb;6}kdazM$apPmROW|#cw}LY;UL)0@AfC*`Qd^SO`aLkeo{ExRP-j$+I--5@jOXVIrWcgFU3)8CH;z3G2p zqz^zDkD>%;GqhjoCzK*a`T|a^b!HuYo&$&@?^Zd53F1j3t#1`O=L08d{H}D`65fAM z^XY^=OxDOSKtf8dp-Dbm+S`l+4BTll3@4PTx7N2|mHiwVVZ#rg;c+F&1IK|7kH9++ zod_-?bs$R|+=B0bXRH!|tt7u0)N=~Z-P;&*E|Vy_+Y|2<-OVt5)DaE=cC=e**um^o zfdYix)Cy4C(MCGV$$J1hIzTTz#a#)C<2b_AGe;9W(cR{Y=rU4=aDTcW79tOofXPte z5M*~Qm5GUTGt$T6DF(|(>N@I)ktrgZA$OEqL4(n@aUxe(R=kIl z&uXq%xrV8%+|#W(=eKxL`$Nc2YI&%+2F5M~sZ+qW;f4L}%OTsfTyw@tg)kPigvvvc zU>=$u<1P37vf=kq%gF9d-=F*(Wl=hba*94&Iio}$$ms}lo`<~AuaSyo@Iz^dB#NgqUaDfD_%4DP}3?k;#LKH~Rcc@Nl$E$Kuvhu>6+O(QV&9RB{y5tah z{%^3%qFx8O;JfK~cayx+#b+(&nx3cXg-I7WkKyYit3GEsoG8dQ1>xF`*6lrKD7dmK zXFQmZbd!nk>d7Bm29}^rZyvq@mwNpxcAmyQR`3O>(b`i?w#uGT+`4VBal;gJ2-->~ z@Yig`0$S`8N$D1}k%zCT`S{}2eum)7h%J%72_yQPbCicKe|}pjuKS!`JwFi!H!3mU zFkQF8Z{T9|Yeu7J4s{rFmR4nz_W<Bml(a<;FG7^@9?|?cJ#^ zgI2ISk2BF&+TCp*k>%6N2B#&~HnU?CxWQg>BluSU0 z4+s+^puPtcitO>Hlj4LuXP6|3tPWvKJMjRgr}hI31`XIa{Dd`7$q#0LIxv zF_~!FvB$G(7Nh$cWhD>P$y_U=)zqb?jxsZ~W%jVdFy6{5$tJZp=_hL3j+47ZYi2@K zo&~IN5EOwF2rZa_ed`%Rm3DHOe4U6?|H!R{+lsGglo#4Xz$I-Y1jfc4QGO=Ay6d6~ z-_=6jgfDc5mp~Dk9xI494<8sO7fV@`LI%XS{ zTc`il^KWF;a`Ht*_FgX!!K@UM#(AoM^x~4>%r*}k3VC`#k@E}09B4g66zg$7 zsm~?Xt_Q509}7?C$=^B@%#(;6&RD$kbe!~|5T$tHHfOMr+DARnN{zVSb%44v2(KiM z2ha*WQfh|tKX}Srn_mP1a{3aRlE5Bo^9qQu=baAvFu8I}uVcj^BFOnHK7q=eQ%Fby zA-S8bn9w=DNsaeR$Q+y;^A78&B*e_rYUB;B-pxo=E4qaCnEDP^DaaNas2CW^#qbl;yp9A_o;@)DLRn`) z|4%s$^v4W*5$w1e^dP7#_|dP%TU7cf7$8&STW#NdQ9!|XSit2oVNMra;!5j+45ax@%(Q>|G89q zoX~MVqbxwRdr6s~9=aWqd_P)WFMx3GwezhLE1`u|V7OY>DssLK$`8Ul2V$27kW%O5 zqeun|{H=Gc36%2`V;8eEU}3k1I_IQ3;`bYwBVU?9>ewSY2Mt*6IntrE#Gd`LVUSj$)d;VP(4>|f9ZB>s&?&QI)Luw(rD*}u*VC>WpEzqGCQ{|Ecm zwX}b=D@~Sad(i%s>aXA~#5=KnJzvQFg~kfnzuL6@3zY))ubuLzn};#+=Bax6F~V$| zp!2M9`!dGBk%n(7`Q|1H89d-LQ5kjd8z&$L(<$KV#!>8?f8B@Be_4OuH|amu|BW_N zV~lcKXS`DdjKy*Kl};~xBVt@sMMr149f%ugX04#=ar>urz!Adi+hz82?##k>2MOqS z<-~O50Lp7&QspgD;y(GSd_rL&1msdG6a@}qZ79KiFzd28u_0E-y*kDi+z}H?^(C*c zC*iVr`h_;pUvh>i9_c)!GDmmQ8JTT}?a|~APy$6~n8T4zWmEG>j2&q~fw*<7y7nbr z^Imc|+%N5hYlaoI8x?By1lO$Pgh!6=fc@Z;2q|w3oDWI^UF;mbs8oE$7D%B z^0s}$VMyVphwb3pFL2&SkHgNFw)b`4sm_C>e)DqYAe7>{VFFV(Yk35>k*>sRo%gmA zbT}Us5G*%q-iF6SBhKi_P$xYbUkfjmzrz8uvbf0;Z$LblmJ{k2{D6QX^v5GbGy& z$pdG{qcC{;`=de39)J!2jU>xU6`01i5KQ^5>B|Ub`_9L4a&j?g(5tI~J6vi#XK#KQ zz#Y)uemO#^ckFZO`I{<-8lbZg-s#8Nm)Byz*^zfVgg=;alU@HR2nzQ)0!iYtn&WV4 z$1^i=)&rlV$>MN284jmchovS?(RqLi&J({a@@ofR+;Vm3gFBoiPXXM~;0G|cS4k6- z8{GpRPBxsG+~9ei=6jn)%g15(@8fkUsF(kMES0}$w2Yo#;&1A_0HEgB+u>&=M1Au2 z<@~jAY#CBd;lLf|j|fm(-TZ1}&1r|gIb=8G0&Aou(bvgXaCHcx%Sep_&{3is$)e#B z0fzY#hiIga#CtS6jysyq6ES(tWH>o4=udVb{K?>7akuzaC_mK>G|0fF)%XkV4uL_g zQ&}rL1Z2RjuPQ@MeP`7b(Gc9}YS^Z=sS&OV$LD*ivH@JBWu#7GOY~NK0dhqS)z^!F zanB~_&|5Y47KKjd9u$f2a#svOIj-`iJI~)RI=YumcQa7cH{5T)XmDMGc3hRpVcC)AW&j_Y~lRNS3W2rS~l zjw!(xgXjC4q?We>0c?&7uyYi^bfoSd@r1}Ic(-A}6xVFYMIs5!s#(%I`^M>=*R6Ef zf9A<+{NhK#>sLpb1kOQi=NlNOFg&7!*?#NQ^bMtpmhT(7D$=^O*m(f6?%#)zzDZo& z3PZON-{AfxP#sM=P=2i-rYA6-LK8(~5OK{*w*A3xMPV1j3cUX--<3QQ7u6{VMoM@j z!|Z!=mX@w<9*1lKa8aEBBq<8RGfw%JW@#!7tS4J=asM@y^h5N>fDok#)q@6lc}vo9rujnRrfyOI%ENChlsU3i=C)4t-eF9-eEDJNJN{)gj=bA`k;8v-s; zb< zrtq@&2@z|W_6P%Qd9LP93a$E%rWWpM&{t5Nj83D~8-vbd@cMV7I_^_GrC72FtVZy? zbug~3@!U&mXDDT$17BVD(i(ZUBlCI`g+0by2Q~}NS~(Ng&Mok3fWP0s{-(dKRq$lr z&cP_1nJm7h4}rG1ROofE*p>01+IcLx4~imZ2i;ASwx~&HDbDj2m^AzFqLwyrGg5qgHsi$=G<^z^%cXQ}-6eL0+uKPz0IZ}HmR7!b3 z``A3zFDF7vdUhq3GeYQB`;Ix^fR~f+B(z@obH5#llHTf&{v(jCiSetLsS7Oy0i}ce z71J1q=%->(Li7Pj{}MY_Yxxb zS?61Rd)hV4VV>c8T7V9_>5`xqD4jktLq?P%-`*ENpZG9YyrP4HWL5A-ZuM zBF`V(4fOj(_Ja=w&EUu%>bZeN-WY=Y>&zl&SkQY9Ic>fH&ne#v%{dcnDZ2V>{P3Cb z+V28K&RuzYewj~aP(Yj?p^B$dq~`4o^^8oWBzFo;+I$2~vo%V=5<@zH+f(rGK8n_Qr`uH>}W+vx4 zZ5pko2m0`3{9>rNE^loCU;^kpkXUtnHzg}Ub?}X|hQ5{gtMW$f>S>R%cLy7|0?~OU z!1<>0*_?KM4`2qmrBkI3(eFa1DTJO+Nl*qc7FH~CA&C-$a+Rp3wTO&^23Y5%f+PkYm>an!{A zv+PYzp9lF5RkMRioepPSBkw+XdsEd|1yA<D!_f6@KM{Femo3&t6i}-opbE_*_(>K+27tYf6tHE-gLy0f$U9>c70-Raz3#) zeL#ED&yV4%tZek3*qc7FH^G(A{3q>AEobysF3-n1+MA}_6RPg(E#Q__1*{3)|?@@745 z|Ne7;IQ%JFSPSlFb!IkE-avoKEbMJez}m!It}wo7_c^?-qmZC$CT-U!BZcp_VJ zINcTN>bo<#Q|(N5U%eu|TNWtN^Sl%1qI(TlLZTOs+B=ahiP}4{2X8+D??hrq0onCV zOkQnYvysMRf|8zzI)!e7_DJ>MYX9*q>JI}rB+|#yc6zx2s1iBAA7bBn8lgdl#JQN5 za#RJhqp0=cCvh5Zr5Lo`sv3lsOQq-RZ{AIR#3`qmt*_LZ*#q}NUuI@dZKkXiS!8)4 z$Ts1aI*RU`@S#MGMdjd3PiPYto-|L0rPgQ%=L80*C;)Uu@6K@Z-u5?eoWH=cI#Efj0J0?ERdLJU|7> zZo!k_pO83#V+zTA?Wf?!rlt@UAhclM$lrr=EB~!0MRV@kne_?}n$7HdnXECUxhRvS zs|{VTE3MdEeOXH)+uX_7TT`clX$XvT3ra<;+FQ)5T+g;)X1jgJmLceHv%L}L^gwwS z*TT%>O(T`H)_eA0I2$#yGdnh1&~9d%yLf5}DFZ}~Jay5qqR65!+QT)DJQl+*{ET&N znAu@p_4d%B*52_~ot&*NHm5DaS)XCHcJW*6O#Pc&m}V1 z7HMVbbb$NzL^gIiv6-y4KLyt|B&X_9p1@z6LdM%{ZvywiWxQEXnLTe5STJ&Ccq=h>e_4m0Pg;7#P~%5WaF^OTD={Ii*Loc-{eNPM&ZdaCN`8g#{# z`hWhcR_bn{nY{BIioJLS5Sm{;y_k4H0%pl)OBQ~(Hha%n&JJ%Y!9fiu0YKoX2^U~o zYOf7(*%=w1i$B&1d(Wjj)GTb}9S`%t57Kyt+gbrtwqTgAnXOlhg6q+l0Fz7P(QM)*9xgaL~#ezb2nl#9|yW$@pvFQcv^2+tl>cGs{XI6}m0{zeICB2i~zj5B&EA7->o zDZi{`JQDi;6odzSo71A{BD2`;>+nM0zbcP;-Sxm<&>0Fs~< zSXE9fZK?7Wd{WMj%-`FEC$naWF*{7h9pol$!HWrPC5Ln2padlvRjX=V6IMo{l{nk+ zNzuiYN&62nQm^6}$f-0lr&gGYz?u9v-UJ3%89p+`waeIAc4YJpgfLwVgM_BTmMhCI z6E_3vLGRY;FW?8)tHIf zGqCLPUHfy#(=R&}&>vO`D`_bLOWG4N$&+cN41l|mHBQqy|W{`pCeUf>o^ zN-XF`>Ne~e?N+>Z{u{sa{0D!xQYY7IK}i66;%Jf@$M3>~txktzGzDWGvN~7<^jt5P z8bS~NQ>MZc^Gs`gB&~52inbsm+Rn$^64NHuo6{c8r6%?Y*+_z#y$AUc%hT(lVgEW# z+&Q4n$<=vKY;x-nwQ*djNiR>Syn;Od$jem|EA`)M{Wq-t zn)+{@{#(z#t0p$^&&r9&;djzcpoV0Auoll)^+6W)^?#!g?I7oe@aYi07RWEtxfRYB z3XhPWwbo`4suWZqd+hch6oby2aLq9mPdsny)4~aIx$`2lo0#@DDK~8xh%$$z`Bjqh z{t-VUgW&7VC4i91u&V;7JjWn=@F65>C6k<=fvy6@6scI4(iL8Kgc7NDOU`4WGJ60>^}r{{l&E`s2pWV?bfg13A_Go|VZRvLp! zp1%5F>K}EZ&}DYyQ^;;c{o{uS6Zu5{7)bv(^neejf1FbS(%BjPqvqv*L;a&1-oSwJ5em^$-<1>>eMf>X?gYo|Vl>Tw? z{vSa9_#!LsNdI^d>8<y7#P$A}fXsDJzg+w`5$KVE>I z@-p+} zw@@!TauR>f;^+SQ$8HnV>!ALzWr9*Ao|zlaKW0T)(A7T%L))PK@m;)C`p5UcLDWC~ zfJ(mpu`Bk=g}Z3K>=RYIE60BM-H+LR>5e)3Vc0KW%-?nU<>dwKmoLapgRr4h)5FKE z*e_xDO1Fb95u4=OFP)(Ma*k)eoNJ%+9PM9@ecc`)3}wH(NgEiq+vhz4ZW8}6 z0qb6Ew&WlQkijjn^~S`A;;RUmO_X3jF7jFCqp>)bU7yq^+`{I;F?75Qm zBO`#i?8wsV>9?`czWqFse5SK%6twnAEm~^E6#0<)Ql@n zUX(c%`O2@THZv!NarK;7onTeQrW@9#+RVP#-_~YFL~E_CdjYGWNZ(g05@Wj1Tl~@O z&F4@H2$&UPn24AaW3VdPg{+DoQCtjsY6Co1i2Qmy*6D8J*(v3N_|i-mvF9Zv2=?h_ zRy*%$yJ8H7YL=M4U^>)V0m7gHmPTALcXN3M#>%$Bb~kd)Vf~0&ZxP7clPUva7QfOR z5yN~{TNWn(Jkjix$SVR9N*Mdqs&y_k)=uk#J=w1N!qB4H;(xdnM%;^x3two}x6UmO zxjKryaYI4%KK^KL0+;{N$oLQR6yp|K*%>k5GHqzw17<218qLA9=lBN3CNVHRN9mbo zV5CJqU}H41dyfaka!ibJh`Y&5|rM1&-8gAh3$EC8CJ#V|`CxmK!!mF;j-VoYy5yZ8BG@Eb1#00Cg1 z6C+?$1J1Yd?1uGzBOaA0yCH7RhSBjA^h3MhfzpVNl-b_}(r`(rV~MFSEC})l!o)eA zwkN)Lc%D761@o}aMk336eSVvRcLVD4D<_6v5j+HyKe#~=(V+ML5PE@UP{gWWkHxaW zCC2$REQ*M~pN2d+0AH>397L#?5OG(^aUl`H9yrT9yD{+FxbCY=lvC8!Th%K^@3$`nP(%F%JzZsI{ZzhoO|JeHy_^7Ju{{#^ODi3T`Y}H1M z8h#=sR_nxdMkYAX0fHi6MNF%WR1v8Lh^=B|W{@!qqD8B9qyB8Q)fSfusHh1`0@ejl zaJPutdm@S(AS(HPzvtfj-kUd*uoT<=K7ahQt?y$v)k=* z>xcMbPjk?z%eCqvOA--tT`w}1ks`pcISE=_m zfUEe?)A-0!K=RucIWgOye+=r3N;A9PjI#=3I z7ryx4s(;jA17JS=BlP?KfAo*pH-q)>0S5ms)IY|;1>ccBvzi+?x3~WBwK%?k8jQK* zyVF0GmIp+ul@$GBF7E&L=^v|PJJ!Fbf84J3bWw2@6=_TLkMrS<%d#gnaNT>WjH}Fo zEPv*;Z{yy-OaItCNB?;Ifi2KKX79b#`p0?nApWcRNB0v@hz2_y>mTpRL@5WivswLP zwtkx+%F+7Ah#8P91H!T*SMxd|*Lz-zYb?^Y@>ch^MgJ)0^?`hxtAE_rSKapOAHTyr zsuEXC_30l6k``S3<8IMRo9*3jSLq*n9H~A!6(4!}2cZT4bHQ8yrvjL{kO?#K5v&g* zm@)G2B@MXCESJU1YFP@jTvr>*Af9k_nU_f5P4U)CKFt9WbNGI>WwKmZoR)7?BY`2(2RLT8U$p#0wDO{?D^o|KnYzkr)b zGzBp*zyk%Vo81nuxe!%R* zE*i_k0EN-&DL61>e&+!dFV@vW8uz#wo^`apGO_Wh@k`=wW;tQ7zhC z_h0>F-8J#_9{gJ$OLvNKZDr4Ou z!wsWM-AOXsUi^?6@5$44Dv(jOZkkV9(v7HYbzyS;xRq>T@3nd;Q6KCPYFPD%ZJ+sG z@gJLSMV%c?cijbwKzk`VvR7Zv$*ViY%=@o-Hk)q( zioOn+x)b7FH(5zqR5Aq=dJ?j>6u$bZiQVe1Nyg#7#(g77uTS;bgiDgj2>Jhs9s>Fs) z*5uo8KVr=}xl?9JK}lQN)nB#Iu5=AkDK@X_7I~Z$lbO+@pk(GZu#DTk!*nu0_fFid zIuAzZS7L=tRfY3WO&mgHFpAnEb8SH>&S+e!${PPW{B}zoe->oTggVk7WD~?zU1=7FqxAIdb>({R1K>58AQ(0Q>Mza=POQRHy~ zXy+#!JN_rRkg)>DZNkt7Jk|uYNJ*tcTjBT^jyRWfU_U)>LK!iu|68%lWeC?Ias6}r zfr^@5No#2}{#9Y8SZ`Z34>81eZ5%RZLkQztXf*fZ-PNyZVTC_Ic~#!z`C|Ci+|Fp9 z?^f_Rm}58zK@Cf^BpicT8~;c?bCrVISe4n!vIta+9_TQl_S7N4q?ed|^z@xDbjl1$ zlSNrfEnPRGb}?b_H?{#FMEs)|+l*C!Iy5T7Kj@tyMj1-4l2X_+_-4rN2RX&b8q4B} zb@9?_Q(ai+-))n>ir5@W7Z%4`Yu!N8?WGR8E>`& z@ylor2Q1ygC{TQFpwmtW_pc~{%p*5q)n#~2O6yr7@ zYjN|qo$Vi#LK*sFLMtii{Z+Ny3J^-2_1A{F`Mja{I*3*(WNARk}Y611xFV z^PXRHgS!rTj7_3IMpbJTJPNB~y+4cfUW$HM)Beo5E8ZLrgXk?V+W9At-;tN*c~$4MJk_hLDi3giHVxG8Lj z$XvWReqU8P1@m*y=m~hm_^%-Irt&*Au2)Zw4E0e6lHPT zH-N-})b1dTCnz;n9|Zeqs!6B;Cl^;GJ}yk}4Z4UFVr#=&9ML6Uf8 ziL~h3@hwr=IK(wlraLlHxRUgaFyDB3zI{N;w{7Y9%^UZ}B;80x>AF-{z@-IV1n2>+ zyQ1Wz0qN(si-)3xC1EP;8Hkz34K*vII7KRp?BC!4vIg3*#!{wTcJBNmO4)`<+Wz9l zSSOZa{2?77UpB@PPA~hPy!oK)4^!tjuf87sSM$jWc*=HHUF8EnW`q_y*Dm}POJHz3 zW0`2lNmXf>!CT6gAV|3?y@H-Xs1dC)TK3t8%fO0p9TC0Y0?^$deJO)Kk2luKm=^Qx zLO4oattxD_zbdAAc3~{NX?4}~sz!Xl4ICW)%$0?)fLi;f-h)M@zlj#n{I5VKSV!?#NfGP^v>oZU*r|CCRJ70!J z6ECAB_Ih!GG|AVFz0WadJW5F~kXfv%SZ}4yM2ReAcb3w41ynB1C1&sxHuMMdF6Wst z`io^XZBKk#)i?mR z&7HP#HKP-d9}oRl4XR(b`i(69z&@-hjuQ`Z2p7kZ!2V#kH7e#`wztwRttY!RH|@gJ zr*Lr<4ygD<RlE5S^w?Rlm9dO_OmxN;W~3vfAakkt^{~E@)W7YW%vH1 zofF-k!u@+AvvUq93GTwAlauXhXLf>yXzT$(3{{zdwtXq@Kcw=_uD(^>SIlo;fJda> zLBH{FzM3bG|4&AnJL3NZ!vD|~$p6pFK35npK=_HmjP=lFuZ>!=b2nCQDTO?SI+NSMBakalZHMS5@(rm8wGF9PPJ% zm`_$9EGUnx=)2PPF;t(xtA`zd+Rh*IsALzKMeiHv33enJF)p*robv8AxKY@?wsb7o9|2OxS99k@Nl5$&0M@>FSS&KV<)7 zn%GFQcL-oy94qk zvD7*%8R?1uoW{ytPZi-|B(d^Tq(TqZ^~AqLPxZj9xrm!9z-e;`VF=;;45XxA6R~b= zi4?D}Qp@peB)tNU%G$!#j73OSk7tV_Ja^+&dA6o9^s$v(gQyf3ubl|QC06PzJWeh_GG0`RJ27p!U^d>yGkS3wY$Ai;MQq>! zlIYi?5)hU52BDcqZI0>}Mv6bOQr+-QB>hok=zS}N%x?^F3y~*TpVAtj1>$BIswqgc z^}yi@xS+2&wihn&H_X3|jelyVqajrYQ^EIYJux3fv37+}P;!YhzsgEp3KN2A_9%6A zDNYxGA)zw)u9ZAf-5M(||H?}3j4@)}Gny)){qf`nEBQaTXNpJ3G6&f5iQb=v-Y>Qi z)hLa^KC@DP#x=?dbe^>)yQ4p`^I93OMQVvr z3mWU?TVRw>Mu!gJaW&r=%Mq%_n8+M`i;yZ2?B&bWugB9-*6hhs@C>`n#xP4i&sS-Q zmRyY9ufs_d=$Y&>LlJVEOQNZaZ-RWn-LU6xk#${^4R84N2y5Ch8LH7GW2|YdxJ=k( z&QBmnQLP*cv__pI)mnfa zGwNte0n}lAGf~tDZ4c4RvXbu-{S=TEV+S#E3;KTcX$^PoMIooRe_p+i%%7ztW1Wm7 zz9>wzbpzo(aIdf^l#;(?6X!~vWac9HEovmwXu@aMt68115q)Bt+?Wnq& zZeIU_HS1-B!`;waxRk=CC|+_gM&)=m1xJgN37t*486O!Bj2@~pdO6qPu5Wx8`Ppj5 zUwW|u9cC|_*}RP%Y}I-{CeQ#k&o-bNl!|4dG;9JLojj#aZ`x+YQl8g~2}o_ij5QAJ z#a%=8ADg>~MRIo#H9A(7S~hMEl55>=3=phGfZ$9@UedO3;3;S%i1T7Rcqog8Wz@51 z*g1wBGV8VUK9XMOT&m*5ym|aR8d_Pt#<>r(;q^a~SQ7ys?>wPy~J z=XWxPVI?1GyP&O^{+Eixps)!WL4nieiecU73IP!d17bn+*fFuX2O%_;tL@vcE9d)w&t@tNw4i4B%DXg=Iiqb{vaKb>yI9It;t&oXCN`evqCuQ8Y5I5D-p zXh{P3@*H~Vmn30OlaVCj1{$&9_0V}t#)|VQVs8w~hP=C2D7#|mrMKl!(dz4s{hRc& z9v^yKFb{Jq^uwr2nbIh?4y*doPgnAb7--BRt>_f&Hy)5V$D=Q%JSnTHSYTaqHm0Al z7*YvlP9qr1=3h`8_FlJiE-G+7fF@WwUGb&qqjTy;avAuBU)MZVj278vy^F0dpXmLq z7`01K{=j08hHsr!3$McyLxS?)R&B=fn*V3Qy#bG!ro@9Anc__Q2_Zx4mij%uK^cIP}1+ z@6qWTf}ixHzS^Sw^svh`?tEVJE(Nvefmm8^T*`R^a+00LDkVfL-38epdf`DqOaEeM zAN@;tjlW7xxAqU|-(mi3k;S#Z9`oa!G4hgUDVF{WxX10Xba>ISt%HIqmd9$^Pd! z3aJYIRlIScys^gFL+Vblp^7emNr6V_o-UDz!lCC z_1Ie!a~C?3FfBxS>If z^X6Y)1p4*lHRF}Rk4A+Nq&AjjGt$Zs$US*>>0L{STzvr&;J z6r)q>O2&YmKoOz>IyZu9cyV8F`tamhynyJH6tbdeJPFkh znh5?Mwx9ZSM|kpjX!%=+C&NKJc`!hn!jqvKJlR{GDLi=slzJCW7O+BUPGP7AE}k51 z@Z_KI?q=}hn|bi$T>(7#Qy-qJL6IQfFd03FCqpE|EIc_}cylQ(d^ z5g0s0T>(!rUy0z!aq5L)Ilg4J_O(8qMo40VmH+VuX z7~y<)Gc0)XO1|#u2U+in{0$p;(esKy3wp5Q*us|B8tA8(ElB{GRI z;yNRIy3Xm0qWpN1F@!GO9FHl1vJ+K!GiFWVQE5t##a*!aC}5G^&Dn@^ASgYm5obst zPGU=pfPb)nIIobxRC{En;d(Rvf;W+^NaF?G#)49ljW@}IVucgD*%!m3@TO)+?BOAy z5_Q%GQ0Ea3E7S=G61x`y>fBRMC$i?LuL`W>ivm0qfeZFL8qEc{4#cw+Xc4)abV|y0 zd3+ZVqetD&erCLY(L#m9pCI8iAuvRDkT*Xm4*bB{sM%-ra^+io`X(^ z_{dHkredE2o4!h{DD&##Q|YzS-H%V}6+V4*Iq>Pd9zGqNjZdW}jZcs00H5BPjZam5 z?;1J>e5d^$LYPknTbEU-#0fIdeTI3ELiRz ztGsmOy~d~AWytdv@t_o;1fTO~KSZteASxC<2ny$Q0YAGalwkTzI4%%%p48F~L=8LF zs>j47Y8}m87X_mJM1X}?On!*k1QIm--#(D-h9Swn7H31$vt{VQ7)!yYf%av;dt(+p z9RqG5KK*SFpAItPqwr~1bQ?j}Ut*Bk$EP3SX;w3`@M+lD6%`Sc4l-g(q0=a*-H0{k zEDxoEW(B3vs3HiLFw;-8*(f#cq11tXlp58agPn&!>TB}^X|s?`w?cD#ShYZ~s;2B(sY(6Nh?N@UJKtin z84&9~&Q^%^vbHW5MT1zsq`nEndJgU?#Cl$#LaevqeIH^C;MJQk7k<2203sRC=)YhS+g(j~Yp#7hp`qAV)8!2w!|HNJG|NLCN zKLGFh&}1Oqd&}c#Q^)7SlTV$~5uO~p<^Io{c-r^yZF}*wjyzNT&u?j5H}SMh@IHzE zGk-koFY$OY{?FU<_&?7L_&EJnioAJRp3epx~DEZ2+XfaN0v)^M|QNhtuwY8RBL|L_E-D4i`Z%nzlbIpUTtu z60O2;4Ir9!2`=I3WWu)NYdeaky%b;j{0=&vwiI*k_d9HBJnfSx9ZIXj)B0l(5ix{~ z41)iPVCC5^0ks2HcMK>I-}Zk#p7uhYe{(bOwAfKAUIby?N6Exn9#1j1El85_6h2p7t-`ae6B{il+^`{z@;9336dfAf9%D=f}Jl z3nknHuDI}r(=zx++?Wp;H)fb_Oo5XhH7YpyJGe2eIsSOsS_!DVD*d#~viPz6v+M@e zy3=fYnLiK66hzj(gg*OaN`JJ-jjWBEmB#C<^MH6UF^&{`IdQdj7(a$<>0kX@zaNwF z!yX+iG!8SKl4Sg4^goWxjjugbdooq%_IAOSZ)f`xWleQL@L7mo(-&X+)m-4qf5J0K z{~2bxgZSD@@Rst6dhrh?zV@Dc^{qB^Y0YUTz_u11%<w`WoWAhr z?Xjjt`h+un41VW#52#tZg+RwI;&0mozlprMziN zVry&D{bMG+wtGGdTIUsNfTd-ErjB~ETX&Cjd!U61Dg0+ z=0>GN=p=O~*(;1c;yLp8FOPa`i}2+@aUJF_;#0{iN__bY=DUOV+Wk>T`);?@QibPr zblr8_>=kkzRgd#Hs@xaFd3pI3IWPaC@wJbDemy>8MrQgiUkv&$+mEj;>@dD|9cDrM zFSEAioY70g*Pe!oke*utYehuDe+dn01h=hl7L%Uqaw`LDulHP+TN7Y=B0fW&?O=nT zZc2khfptDsUP~2W`?lw`gxd}~ki=_Q)~?s``_iy2jIcdbyp|k^TcjFX`66t8jMQxO zSN`xMg)kSa@*~X3j}*fEEAA?U`S82y{naOCA0OK z2PXWL2Q%xN4uQn_jASh5!(VysppNk6qrfwbXR7U*iB+d2HiqkZBsS*k)hxsIs~Jst zvu0&+i>6pr90A~@<)f-EJU6Yh-4imY9Wm(6;C#$dnZFR6sdIvPcs z8n((n@~GmtUsK*mK7{o~HT_<7h4|WOl(^ild84|8_*%Sz{hBEkU#6B}44b1xi>>6} zaZ{C=yH|56bwczWqB>?aYjXGC0Or8Iv9+@J6DzfnwWU9)41Hy#zQ8qe2Zg-;`+J_` zj&8NzK_YBNnP6H(*v>@vg_x%BZ${mq);E?E#yBem+1|{z@EcHaONVZiCaFxESDPE zC>;^<_QFWA{oDx;65c$4zPEMHK;IL z#z7gPDqkb}JSUQDg{DB&tx*o_1QZude-aMi`XYQ`Mv`HN90!y)QG#$~a8hVFTK!=f{XRKtsv{bPk=uvij zO62WtM7v|%sAeZ2FGyL;DmGeZ75TJYpiq}bBmnm;eC6t2Ip4*EnfQeXU12B=dBR89 z$%Bnv31J9zCXC%eDh{`e)Slc!RRKNz2^k?s9V9n1ZqFJ3Ewk(MF+LZRDtig1N7?$y za!I5Za^80FklFS*8zq}vpVK*WBq^X&MOBmjV%o*MNMTW?VmBjY5(qukyO}2<+|V3z z_kdnWlE+*9dPJC-0eg)narY9&B!E=CeXe=pago@R-ErQ>G)==1SgD6h_=)(4Rl}6gF!Nz<6up=8FTuH^Abys|aH_~22ry@WZU%>L zxWT!K9ApE)q^nW0CJ8FrpbsBq0N!3H#9%1Hpj&s}s1{4_q2~dy#4#4J^sU6{%CeTz z<%_*I-HAF*_ex=nE!a2u30v;6(X*fm(%oCQ>*HrNv~Il&)kQK0z#OrqjCE-F3}-sd1yivE5&W zz<2$mz_BM>^PS+>{$F(lA^7)+b{?j1?Bh^{6^`Xe+TnP*IXVRq*IXO8`;NlB48}Fw zGUA68c=mj}!GL|fV7_;Eh$>9W%%hr8 z?4R97NUPH5IkW|`-A4Yah+0|FB$&2?a`usOv_!cR^NyrOP^F|KUon*RqY!UW?aaiS zF(VGniAukKK`|o%j-YVEduop)2F1Bq!C3`fyceUdgrR9W=c}h&v(y`T*3A~@LqB3f z8G0va)<#mCS?jJlY*4;;zEtnz)Rwh}G$sRyfeq*bS?hY%7jSA*Ut zcCuaxd`BY36e=P{>#j6&WV*;rr81??dI^cG)O?}0m9m(;-@9(rKT5!EcDqC+Hf?en z>0A%Wr|tt=1HYjh@OxbQ;5Y08ze9*3T=2WM2EQSw6MAE5vV?h*4gP%s zuM;NQuV;l#fwb<4%SzsQGwXLNvnlPD>Oe`n&J4 z-^DehdD!beR#&&@KKwge1a&_A+kkP{BK$judL$rjYZFHnLY_#s21s|k9OYJRHku|& zrlCmU+%vJ918Q@+71TXbL){qfxKLMp05Cedn?k#1qFV~>el8<=zm#ZAdk?=f;EfTQ zR0sB*s;U&`rR_X`c`qcjqMC4li+RsRi3amtfG^DG8EJ{uvoqPScO+g^u=jaf3G5Z8 z8nk^;l=8yfc~Vdg@`cu)i+s85HwX64eU@UTBiIZ6$o9*Q#j2HqdxvvisO};`7O309 zy$M<48aOq2oui1w9AoPS1gH6exL5Ip;NG9%tLZuK%eolmn`Y(6hj+QhQS40~-o?fz ztdR=u9*D1AtRfwCs72^oGfOirqz@W$yrN<6iQ0s74`Kjoi{lH9w>_6?P z@h&YXo5Q;YcYt>}f7y6fh=@pF{Hwx5g}5fnXULYyfwn4DLLOeK#5;;L>7V*=&gkV9^(ukrAL z&>Oqq;@m}`212bBxC{Qxk8iL17xC?y0KS!#$=L%MtA}qJ&;W&R``-$D`+LE+N^bz} zQR}a_yg4O&9-yngqc5PVM{@A3s_#=!r>UYMJW)+@AnqAx9Lmqaw=F_-QCZBW z&lEVX1EM^UM=1Rk+^Zn2R4ov9mcSVUagPNRaNJ*k%I(gN!nubm4&dA~>%SA6JMzOI z&fOQ8u$T{NDKuUW=OUy*a4zsJl?sJ(LxOYNEpHT%**Nz+bl1bTvB)(*ac5aw?=8jc;dR(mi|| z@)aX$6Y%YDr>P@+iBHUs6jFgvG-0Ec)GeCw_IS?hS#7s(A=;Y7R}eA|eTCcdrB!M93kWkKA}2wU4T z7X*frnXAw=cfjKmC2#f+m zn1;UX88v?GhrWP{8v43amIHmm4%=rM;gm^TInej01q#aUdw_zz3m5vKZ~x~M^!*#| zD(L(77WMu|#V+)fIO72RrPz!J{mDuVHADz`3HfH9H zm>Fa*LcfTzc!GoSDVB*(5rJ#ZS=a52RWs7C3CUx3ral>}Lk6*F8?ihkoU&-e`6Yd< zLe)jE4Y~Ov8;~hz+Obp~^(#06o)nnnL{$1h=nS~UF@tTZ zFHm~BOGr=jz!!dM`l`E`=!YOnF$crA?g?d(rOW7hmyhs6rMB7?3r9njf!a9cxPramNfZ@^=Qw$=x+VFnE`z^)4d#&~#{9_46~_F? z@8O;lDwWG*dh<9BCFPq(fO?t6(fF93sALZ$&{* z;)hh9q94=kwANb2azQWlFdD}dXbqO;#^Kq&B7wN@>-C(InGlX0Uk-l#z z)*7Zk7>bn&yu$nFeGR$`TgLki56{%{CA;5NY7?LY`=0!g7p7T>YBHoXyUcmZ;I@oP z`NIfTX2yR5URZ%Oji>dfO566-3l*e13PWgE7hF27Cz%#(C|sPxu97y9Ls4A7XF3$_ z)7L1DT{gz#pc&aQzjzn%<%q!) zAgpz6!wqkKpn&rHLRY_xBtAyI-A&B5>m1`)d{@RB^2_-Zeo3nt4-w1sV}9MC)N4e= zqm&jw1(7?PMB}mQ3mpGrFN@VZieXz3rz=eyLp*!r#d8(Lyd&Owt?NG3q(uLt5YYVf z%c2#ltQ+PRVQz6;j-nmVwl`D1$Gbs>Mf<8TLJ@cwD0&CU2pgUah~9Vb{jqr8N?t2E z71z8^y1CK^%bRc`4>j&?F^OM+%Y+nv4mxn>OZeY8dV~9Z#_t#1^mZpCo>vc(=wLRz>~0$7 zr|Uh(KLK=Y5HuSTBb@;4_6q&=1$Q$p>RxFzqyd?!-wZXgO~b`@OzDYNmQWI>7>4s<_*0c=zt+g8C)S8sbKysHm3@bClh5a{zmyYL?1Yj^WS^FiD3h zRkI#l)T(Bir)u_L4#{V&>-L2xjY#;~5AYRtRzcOYa4D)L4&|{Dy=5suXIZAVWF{iK zpI6mX>tX_@1k2zCRLw<^;zd@fA6K@}S}S!STOb;WS+BIJnZ^U9YA(T5WeS<{n^>j0 zMv?8Z`4!#Y8dX#LCMa$t3(BKvLLQ2qSp=E1c|G&`&PLBC+wA_XZE4e z>Fh*VC)Bs|&Xn|vl%9zXT=}XNv5TN@o{qjpLl;5c#PM3Z^6Q&Nt6QRPUIcyfOU|Iy zH`i%>lRBuhW?S@4Y)kjeWkBC-wNi{0&!cbdspXM$9x_Jtdsp1me2`DyTo=$ci^#|r zCZM@@|8;%SoRJZMS4HcacVhHJ-~1T82z#+nB2bsTgl=-q!wpyO^!MLNeMd~3N;DR^I)X&BYXq>b0PK5 z6NQ2T`lqOxvLO2O&zspVP+kp&5?X-mT!S0ldWJ>pXI$Wnebbk36Z+>y^$7LQQaS=( zO6xBGy=eXOP&|RPj9#Yv`X^a;IjcVQBBg)IIS(o@iTO3pIMdZXZJ+)rq{VX+qUntw zArRDZ=2rzt^*~4`qV^8uNCz(m(g4?x*y$j9>qph@F7ajhLds+34p0BwUssoHSoOhYx; z&zxQ-s*Eb;HGBe2gucmB9s>Gib&UGvtxZbb{2qdFVbR=9`sSH97Ixe1nGGwWW_#v@`*T%Jdk<5|w%IfLJsQ+Eci1!kJMEdhH)?81ZoNJ8c60BM zF1coFbjk0`p4k^c6aOiD=0kIK*fTk?|6zOPakG_v`EcR()GxoBzj=FR`~LF1KQsEJ zXU}{X_q4xU?3r8UFNZzz2Y2Nvm$YX-gkUXEVz*7deCKaL{gU>~xy-BsG$-cFTh@OI zAPsjp9OOe_Z-U~l-Q`pB+A!rD9M~{>0gfvhCekSy8|JRKgblMcS^;FyzQ3Ga+zySH z_jF{$Jkc02f59f?Gh!z3Kp8Qao<)q9kF!c`#LSx{YAdanXKlt|F6;YN_{*1kVkX+B zU$$e%4EoDYSW5}-*)g?#xz+Yd<_`Hu=lHOZ%lPhtWnF@lx3O zPa~$4yoW@_u!HvPmyEOy*e^9}OnMKGT>BU7myeMrl>yV5(*%oCkyIMNcHuj*i7e7X zoS?KmG2&#>llZ(nE9OJ2RoKGeQSz{-(-M_yzs&ZVZ;ky@+~u@iendN;Yrh;t#-x#G zId12(U*3%~ZT)`pA*U%lGcL@jY)IhNfc>%(oe&G)@wm`_b2@blJ7efDmO0t74wJq& z(EdcLU3>P+holQMtoZDgxAP{fBsKh+_RFcb;n|~LTcNGaoxg1RYm}VXL|m0m^M}T7t-~FoD=YlOOFA&<{yL;K#yo=jz4__ zXUiA_l|Q`-x3cV-N!b02U9;L}*PKFQqG#7UHIH4B23j*b$^yCAU!n7u5KFc{U5>~$ zP2yZuJ1M_iv%6cSXV?5Wn_|Av{`4!+Z*A9P@-dHpm3@;@EHslog-?}z^ATJH?3?f~ zz`ptTeMDjCK%;#;Q@$o0jG+Z2iRJG9gnw^?JKeYdBFGPcl4RY1do zEN5hh(nGyeGBN0<@}JHkgODrPTUVyC$b|F;JLPsC3>5>@C=zxaMu1NDaQPbLa}Nt4 zD4%;NnwqVzhOKE@UyW6arq7-JTrd8z0qt~!P@)QYkZ&-ky~f-qPwjeNqP5nssJ7mV z@?0dY_fThQ$#A` CafRbqWrlxHm-D6RERxDu`Pc3hB|8MN<9AJYpzRr(lLYvnB@ zkKxOtHiUVqW2kZ>J;PdY6`IU*Xd~Bc(OcgF%dNgp$xlD^1wuVzcK7#;>Ut$U0e)bp zr>DAxb3;8}!F!5SC*fPa>Z;_m=YLo6p7g(~c+V{VyNdU`$o0P;oJW7%FQC6FLigtN zZ46dB^J=0#Z_-+ zG5oGRI-g6WtV^ZZpI$1?t-t6cR5`cOo19y`{^T16D`j!esg-u&g{zf5M8>05`U!P7 z8UHx^>SR3nPU#Nb?FmmW9e{Ywd0-MMEX0udGn#0Z`-jj>u8aiF&Kwgno_<`ioCfJiWlj&hZS)GS56=%C_D#TVP$9^CC zT4@~p1G2!n&UQ^lPvbj7J>36;G&%EQ6(1sUBUZRb5zotpZoMg;0p7^Nv=BXhbu}R? z8&=tT;`mimtkhMi21*!xxzZIzoc%uF2BoeZh$~T7AJRpR60iI6$2yTkowJ2)pkGy{ z*E<98!)xgqXsHmNPC}GKwWO(z`0-w-avHz=O*Fp(rJrtqcB1H)x&$ZUv10sVcb^L# z@d4;W?)>`w?R!gm0{EsAZ~EzlnRh&TapOHH#X0q16Yse{s}X;DjriMdxC?dv)##@k z_X~ON<*2-Br&d@wjBOmYO06>tL{MqFD_y$OIVh;l`grA+;1#tl<&hhwb2>pB4Hz2! zrzG3)S^A%e6AfWRbM@M=!~2TIL==@$-}Du!C#NTGXSwWu6R6v{P-rV#yZt2>KVNA| z!94?ap_XFj%sS^?w|Y;%JregsoAG~YO=CEQR&lvgQ_FiPNGZ2B<2$9?PQ#T}ZiR^v zF;yeV?OQXIayt}gULAXo*MEPTWSH~ox4&JA@$Fzg(v5$ma(fx#MUghr#EY(kk`$Sz zHY71%RCWzzAiCn2(cF;qA-5ER(JJZh>MuvDmjEsR#O3b>2%lEd+S~$tf~QqQaKC=^={U{YjV|nvqf$ zYwb0-JIQ+TAJ%pM!`f|!G7=iWc+vG(*I;XnV{1~el_-~`3c}8)mS%6#seF(( zU{vo-nyR%{e{hm@CY_`e)|DK_cH%{cA~Y&DUKI2cnb!lK`KhYrHBD7X28>b&N|mY~n zHKM($kMKmPZC=3WOZ;{Lk8zflU3m+AwQFc3mci4|_s~et9`)AHNCb;Eqxx_Xn+D3{ z&RD*PP|?pYjY4hQn`B}|9o&?HRRg#vjrEq2R`x&7L>e{q5`4{1)I35>ZKX2A%}E;~ zX{f1}U_Qd3m#x&_P>_IlX+Uak|1h|n?vA@|{}Nvo;$5{t$yVWLXf>+968(+Zp|l)o zmsxMohX}D4nq#&o^#i~8))&40p?`)M+1AwIcuUFaA7{OfW1-b{rNq}Jdh~J(r;O_> z=oV+hnc(S%nSP?az6If!=_k>nEEUnCidiPTC<{m!xOGX~nst6jX)L`swti_`wkuWX z?MmEk66uP3Z>A4S>tWd5dhmzRbfpT2d#vGv?Ss`@T*vj}Z z?pIpm90wZG>$DgDcfT|~ppX2HH_afVUy*Q8;2mr~;@*zwiPe#YuXmnM#NA1|;Z-bc z&SlbFrB6vKF9AiwGX0^iGUJhGEdlGQWWZ32%9ZQbk+Hf*tS4WLVVIR^m17k;OlhmP z#(KZvYO9)VzQ9+SU~cAS?e)vzvO%dzZBB}GT@m0}8hnC08_-ho?N8F;_dPZeQV1!P zM310Jb?^!!f~cZaUzXts};=*^_90hf$@St7phpg)wEvjN$YhYKr)BO zhF_o;ZdqEq4CX!2I@1f}CCTt^Ds*JGk~|hVlQ-Jkp9Dt2wg*S_TUBJUE_4!F=+-QH zr!{Rdy8Sq2r_H%XIuu3*I+g&2Lm}^oqKR%fuX>86XbSGGq;W7nGF$qZw~eByPua@S zHxnO0)~oFyp0XKlyj$#AvCMR%bT(lmW0`nKEqB0Ia|e9bKInhJycui-fXW%m;5Kt| zA#0*&l%@9h%LL$&a~xZWeR+a{kE_Tx~^+c?W(z_6s~=r+){Vy3}d!cQuvs z5m<&nDrF#L-I-VIhnIfa#=*W7RZ}>h@dBk^2r7TlhT8hr;V27m0Q;FxISW166dFl? z>$ZH-Dy@G?$oys;isa8+I^=zp)G0xX^ZLa=6I*M>(3p&UXO z(+(k&zpggHZpcFi%pf1Ztfcm0Ctk5qLs}7xEB#yv0I-T@@^alIN!>L}3>rOVdF&@fP&0kIUB^d~+eRk=7l7WEs zaq~(nv9LZX{eaPHq;+7DXt&WNhghi?yOmm2*E6e4C!$T>Sf7ir9`5J3*GMO?{mJ9F zmd-u;@_jwPvGi~o+=fA>F9AD;z;aW--yS*L02*nJlqQqZW{m-u?6y z35IIx15lEJY%^Xez)VEbA0|EnHN@<2F=A%9r3j2!x2u|$B<*0Tr=vhs=j83_+COIX z^cT53EzKdP+d#9FD@vYFf?^O#4a?a3AugX>$vhc(x^|*;ZRjQJUg$L|IT4c{8abx! za`2?nj70?YBTpZ!r|Kt*kI(;p9&e()Fg`87dVhu}dj-)Vnf5qHh5N9HfU{;kdJhe9 zfN{f(2Yq*=!&PBXw+KDI* z=kNS>dRC)mfz+I#m^n{=xTKWmfi6&amz-QaeZ@%la{c`Ntna0KC+)UVev5KNp4{}m zsBmDm{(|YV_j(3lE3*e)LgPuO*-G-9EDF!$37QsZ=#_rEIGa# z)XUBING%z@j1GxqysJQ}7UJj$P!KeBC5cWWX@Q#5iWESpNQTmk0wOrsGDY)&La9n; z8jgxR{gZOsVXj3zPqZCpPP6S!IDEr-M5raoidBp^*3zUQ4b3IDcb}bG5I2Qb{l0Z&JF98SD_r*_f&j?N5K@#S7Uqb{C42 zQL{^b%|$PVx0;s-ZzV@yoRGjPy$DsG1BFWZnTOe$(NHhc~g?%T@P5ICfUcpPTbX`d?@07;zPdJVjs^e+IHpKC1IELe?hR31VSKFsM> z6!t-Nsc~w_Otd5}U1N7+s1fxjM-L$mx{WF0o#}XyKZ-H=ZPh(kU1DJkdZ6LdcUvDO z;@?^yX8PY+A0l6J>pKGzh~tv>>ts>7brN7Ypt0wG#*bs1;CSWyroc}PVJSG@6R`JTX@7td|*oH*CY{ICsF{g~jP$Z>qaDU|x)1Fn` z^R=hf_H55n5E@(Dp80v(gR`@?-}v0QXe-)tSKjs%Z_oBz^88k`XHwqwAb<4s8=rGu z-HP`7Ja2no4c&h2nf1;Vw8vXd%<`dE6RaRuF}R4NH;}6`bZ~5kg<~JID$l}!RS_$Z zSv}lULz$!W!cjzS@Gl&}{myg2_5&Kr1~k?eRf&L@CyCIj($7|FbhDM}&C*eC1HMem6Kgk5k!V(LMT-|l z((|pI$e#hwGvVUK1rzWML>KT2&tX*J+rB7=%Jd5k zqfRuQ06xIMd(7k4sx;pAON83US5OxF!~de`XPxP|2Qc8`4ISUT3XiSX1_}_3GSz2Dzc)4HzI!xjj#R`zzRq5r# zE3gkzFol`grUBpC;rdR>FN6d)ltgm#xZe^ci_XiyLI`~bJVb`n0TAGa7I-M9hND}6 znzRxgrBaN5ajN6P?YlpK*pqEL_-Cw&Fh=hH5nhB*_kg@L3ZL+2eLfbVoEU zx}a7KU2IjlbBPEQoq2WQzG^Yy5ayAiNNEyJZ?yYd*{NXl3Xfi^uq2i@RaH#vap{bz z#xAfoYmd>4rqv1I+e%nmz+jbNuo`x_5z;#C=(oTDgQ8yc>B>biBhE2+Q3nWd5>T zNvuR()D7Xf@8RE~i0qXSpD+^O+O<499gt^0>Rq0=MVDTx6b|F`%eC;&%aQ8~W2rSv z3}0FNKK4lAS!MeDNNAIlTv3FoapF@E0l<$?Cql()E1sNz7V%US2E$%ew>$309<$Wv zc%4Vf@j&(3iiz+>ct@+Bfy~G_f9FD+83#PnDJCb2XU!?7g*rJGpYbRd9?9I| z9zcuJ-ruuQui~|6`aPcZo@&H3JS2k)*#^detcg4YEusyo5_Z90N3)#dEeFiOhF#B{ zK+Zb+gC?D7rOv~faGEh-E8U7u(@i{BPM#&tf~QV3e2`o{c^f`Mnr6T|3Hz&1cPVD1 z+swj;MCTY7soS6OeWW^J4i)GeoIJWq55gqEMRyS9Ta%%9$)FuG!tz{Sd*jpxE9$PPPZmk;1b8n(MN@YpN3co?zd70pUG+J zQFXE$_p^CJ2s%0zw3mmDT3tG7jTV1krG6@7_<=b4F6t~}csk&^0t{*#4WN$kboIqx zS?y0(5ywZMeRA5|A-Le;K${AqWYw=;@(TrXFizJe&GDvelOuP-Q9;hf{#jrW_e}K~ zoN0OXxm~10K8BU!Ui=AY=MA`3AaSuealdUPM+0$z`if{BP$v$Aix3xEi#C{Hqjf_B zg`5Me2+bHm(SA+MlIuts$4!jY9YobEMn}a3Wy!9Zl(iC&oo=#D;*ZsQWn zA;(sFv?JpRO7dvOc?$1lhApj4Y{UTwOh}sAW1$`k&Ww9gylRV>^QMIzP{*-Te9I3w^G+w~Ob)p<{u!lGRIS{Qfz193cOm3q?_luA#r z;^)LC5y%mc_)jp|3Huml14@LPkoxp2JSDf1=nAJTUNXu%Qw-vRqPW0*_Xq{78t}uB zoCthTMFEfMgVXIwQ3xc2KD-^lq|7@yxDYW9kHU|QBO}VvYxUXd`sj5Qj0CQ|#f6>4 zsGH!#ma=r3e{;gz;CwUN46ps8OWDRIWb(;6O}(w_E(KMY8~HHS+P??>;Q6QErXKj& zOa1K9(!ZEbOXX*4|1$kIr2mHbx3zzae_CX5F0kiJ>I^N^f1LUwuky}MoG0XTDa;p* zl(erxLePURwn{OmmN^H2=&K-hdsH14Ey0mPXL%F)IBOA&4M%gm!SmMsDg{=;CR&MC zck^DAw?Ly}@lofG^FS`=7JR^w=c1s(Z7L9R(%!W0-j~y=Si%{CnLx7#L(?%IQz;oP zYLC-Z7Xw~pj~q$uqoqO2xfoNXIa!{bBb;s4y2s^P{R@i~w@^ZoC=n_renl}LWzK16 zyj~}f-Yz7@XbhhqKWAzY#vSv|IM&21$LL8ku#g^G5FygD8AY@eW$6CvKQ*w z{m55I6UB^&zorG#j)SN9JBi<7KiD=rxcshcJP0j*H1Oc21s&nR6+|1`jt65vRPEux zv+&H|!F5FtO9l^~ggSHa;AkHn{2t!e3?95ThzFZcT{iLO#e-krHG>E5!!-!4vSU0b z+v-5uqqYJM{t{AL;lXp|O5?#BAln2FR;jx;LlpY(;Ba(12M9`p5g>B zb4!l!ltF09#)G%}@E}hIa>qa|meK@29)t^)AwHR0JUEs&r=u4g;=y-;2fYfAD+Brr;#YAd%FB42W5D)5ADX)dC=O$yWc_+k0+;&6o*`$I1X8_E+~ zV1~TmXVmS77tcn!wyuAdwdL#IFL2lOU+3bt4)Eeo%uGP9+Y-EZ#Q!&VabvFHyCrz> zoLszk2qv3&@ts_}_?G})#JNJ|3~GoIg%|&RKpwm}R^i3a{=kbx3NMZpn|Ha!iDkBDYgxVHsWEs5EvR;>AC>cyT&%R%YSF=dsD|yTFUr)CKWk z>K_U(-Y&pJ7#Xru-#*5m2_}n8M z;l&;PLl`7-~_~xWcv@t zJ)!X6|26;Nvps!yaEJde4<6j%Ka?<;ZT24?cO39wOH|>(zWC8G9voev@gMTg(SNub zc$#=Hir@bN9=vgKUOf2ZJssh}SLmJEcK_k2@W8d_KRg@H^7;=Ws594p=#MAe6K`y- z|8PF4%j4_`#*^mpAO6?i!JnerIsU^2&QLr4!)=Tw_4^P19r2{}AI|0ZFt2bJ(%g~ww>twBpCp{eR88-yX zO*)>G@j6+)h!I=nH2k&CY1pWohT9>Y)OS{x=j_37Y-K=cH)P!G2oNfJof>DWbG$7oQbV7&WfnGqV_#Y*nv|WGU*2k0n zu>*hMsBC}X^(z$~?1@3n?=Ni5_7@I@zt9&?I#*~qDGrUt;Ic9YQ+dSWJPCi4ns3)n z_zwIguAlH@aEh=A0!tOAOj;q%J$3g{@@?;C`U-illRDJNbr(j3G09a729zk{S@<~D zU-$&U{9 zXqg%x8HKIxFFl31{T;T={=-vp{fA95MIGbCj{S!>f=>LgX%dn4oyVJ2NU&8FvRk^@ zu554y;2eF-q z(+|XB<#`Yf67DrIrRM}9PS4JIdW&+rNi05gd^wav`65nxqwx}-lO1oGVHlEc3x*dJ zD%>6PAO0cNe^@RhbR<`7rvv|?jyK&;b;AqL48)tZ=RX`=S-uR5^dN>f{ zjGrjP_)VY9A;x15QwZ_Ev_g!p^;N(3z;EnV&5k!^)OBG0A>$pq{f7nkh5d)WsCV%q zf^*dlFov9#*^Re!1R1*$*KGx4Cq_EK7@(OfY zZ&eI)#AT~u1U;sXdWALlC%6Q-jN=@?YAZ1SulR6fNCl%Zf;bCTUf2Py6hc#e#z{V0 z`CBNtXyp|WjLKnA15IfnF}r#9DISH!Nj&OdxF85DBfGcCkn$&!HmO827}zUxKq_zQ z^ZcgZO@=a2N(A;Qjz#eMtV0yE6d{r~BU5mn;%Qj)^2DP~L+8w}WyhncM5|#uRqLp` zo(R4eg5s1OXP(C#299qy7(yRr?jWv2_KC5Sjs@ zWFt%2&q`!j>_?WM7VJ~Jilfh1M>h_Y6UkXc|Gas0_bHBb_bJNeu9{R@l zAj_jFIFFR;0yTY%dl@ELL(MVNWjMrUY&Fz8O&Y~BJ+`8MWAoz6pLdKezmPWP-Om`o z)G$633YT%WEyPr0_YnR_$w^QqGj3Hbb-F+eHhIx=<6&l%pYZ@R zlA+gzwjGIUN|FJGP+IQ*-fU zcg#2O<%_xa^7npxX(Cd+7*!piZudmeapsC)_az4#DXIZKRFvuspLZ^B-avaHPqI;F zlu@b|;t8_nsY6Gu0^O-Y@5st=9D4T++K{~>$WiK2mUC7X#^ipNocX;J%B;ee9~K8N zX73li8;tpORS;wTbEd+W7ix@IW_C5|m`-n3W61d-NZ*e!2Yb^R+|{_$IVTHacJ^Ks zmN2^-4TEfOPE`;y%9TR}sjjB7-~QYl{UzsCEdkCU3S~wEajJS><6J>C!n3k-aX;Z< zgED`vQ6|_xo}QWYv@w7(hbwtWxCXWVRRm8mZZhO-gkw;ztJyg7YLJV6?gKcpOvcHJ zQ>AGmz&-~{2?3m$C0}gkt~`Fp<+vv+C4_X;+1}I@z zjf^_e)!YO}AI;@C05Wdsnc9*oGqcdcmi`&TH={JR6!9Rb!GSIRx<9aGs8nIgnfMX# zM)GC7n~@6LTl*?3+45_JEhmDP>5ZI?-}FXqGrrszr=;loHepxkmo1HlHFktAKO%D3 z3VazzaWfL=Ot~b(23)!+ZZ5$yh+hi~(|o!H+OEf#@aC&Ha+vKeFHZu&>nXXDA$r^(s)vG!;NN|567oXaSc~Y7+ zxgUOMNZIcG#vz!SEJ%5F2ar;TOF_z<{f(+!9ihtQpfW55N*`DI9GUf2a3yzjc8n`k zr*ffX11F<>XgQ?U=Afl&Prz?E03tOHz8pjCQiFwTe0d%|XlK78^5Ag)RuErS@?MAg z9gp2SzMLT1e^gPm;LASJ5Jf{)YM#QEVJ<@1`0{I#iik3B1;n;V~#!BzATyIBwxSXiBz$n(7wdJG$a zaM9!avg!ux3=Un*-h4A3PIVAJ4kvz8qYNd%Em&58M$)-o`pp0>W}_03enD?#Fdt4H z2q`{-t?1u48Ps6^Hk%KJXC3)@f1(rPbn{-#f{?z%IOpL5>O3BXG#PF3&F>fQ z`v7E20myg&K-NUlN=SzPuE!Hrlk}F$d@XAGx3t~Ox#<;qgSi#xqZKFi#Cq$g>$DOiT9BNbyL_% z{tdE&=m}V5Q<0SQ^0m>5`&7Que#OjpI;gHYZxQlYsjlEi3$auPriWrM~l8Q`uoBiHi zozZhvTAQvb8D*b|nsI)uRGz#El{0H;66YnFJd?5W76BfYlCF`2K3X!tcSda3p1cpv zi2Y45Mg)qOm3ju+;#{d|8BAOcFGjN@RcB0mr9VU0L5c$b>TqVj9vYaG;aoiJ;)=t? zRoX3L%~@_;*9VI|JC1yu8GMKSj4p{=ldr~g;={5id|ojtaSUFP?y*=v2ebAM;C<*i zkw@8>7>(PGn@{+y$I&fb1^d6>Sff zV~wGYd0D=oMvRbcmLeip60#?t1(sZPQG4;ZHS_C2xfo0>um>sF5zX#mM_8 zQcAs zg)J)mf;DT=`WGsiqnYD7A>T|q+u!icvH=M9#8*iERjwEY5sP>U6KkH{m5~jyr$5usZ+zts@Qi z-e*ck9|6tQ^Id}hD{$_`FA-hNFsh|ca5Of%zYk88Ev6c5NKBFZDHvU?BPeM~@lsZ< z9tN{z1tds>H^#bQJ;m zui-+9q!)>>+aHB^Bd}X`k6xydXjI=*K5 znz!FVSIXC^GgVnbxZD3fk;>Luy#*% zoW&>rEUo@-AN}{BJo@i*(5!s=?^sA1Z+$lU@99SWeL?GCHM#olVR`i5H@Oik%RfRjFQL?^#xBBqn zEz^hB$=cdL$tHSUwmuBEy`hs6)n!m0K2+Zh>cij5qYv-Od*$zzw{4p~{D*9P7#fpE z{;WyR`tYNm&M?tPwmu9>7NKSI;bPH;W4P<_n_nOP=^&#IH$n`7Y>sbVA68{?%{1%Z zmgvJX4fkPOzGHp(1k9A^!#GMQS0DZ`OCLTQ{ScbB}Rq^Y?HTNlf_{jgq-n+m@RbBhz2?Py_o>*Vh`bceTp}rEYkEEi`=nR~J z8I4smt%9l8l(x2_CW=?l=*(!2!)V%~rT0=Vx3!g4yjrV(XfZq^z8X+8ijP#So?}EK zRtWgW@B3YQpT|rl5GwWdfB*HTT+x|) zt@!$7koMPE`?)(wwYhZuM-U}+ANKU(4oC)+v|fBZn55Q=M;SLP!#hterosWucyx|t zd}IO5_)b^W=>1H-W;~lcDmCG5{LIrke?eB^>&1*~^z;_!#RtgRl||qS10(eY^bM`T zy+GB&)7%(P7*J~-!As$xi}Up2GawTC>&0<_ScLd+jR;LLK3}imWOMW?j>Pl7K@cw; zKtE;x2K8f|?2{rpDx!W|p06K+kFUTxYAFid{%EMrZc9JDlXNfo@ljeoR#$@LZK?D1 z#3*xey&yP-PuZ zLmr8@gve3OQTXNZAJLDuf{00%A<>Ux6$SO<+fZpo^y8aRKQP7LYP{D20Ywf;TIt6p zQ0?;deL9QmMz+dS9@T zoHH!yv2b~;%E>wJUm-RJRF4%J*1#!3>u~HGUp?L_`tfWyYW^ch2j z|79Qkmwi~d^j!V-U-n_;T{u8%zk{$3$6x@1tp4Az56|51v)hNw;?H6q{`M)p0{k!g zF#YVxlDy;g;SN|(sQ{Z3d<8f!pSy+IQF!BMf*N#u#Oyr^=)X%~ZVcFm3&uy>JI2+2 zmulmrZxVoe8@5rn@DD0rA1)Xl@h&!a+CJ>XM<6uf@ehZp;00Izg@X^v$v(#IJard3 z-?8|JhTh^}e8fwz5yD8q{iTYI_=OxjrNSe=4SR!_^~Dcb(cdN<43D7ym-9w=#4Y$v zY{CeSV6HZ7!YFPtK4K!i7NhXP;4W@_M2>s@I!rZa6h1`5J;xsD855pIdtwxxj351t z!rO_Ds9N1%?U`%A+QIOM)q^t!?}{CyXFs5+c4ygx_bp%#-eXYq;70=pz5iFAkKBgWVKqxIiG+Jl!6CT@^~gei%iy$je=#zZ%4v;Y%`f&j%1e2r@d z{*oYFIa>afV+R%nNykngF2eI)=fy|l*@N@rBX-OlJa?}={r5Jd{~pU_Nmm_=TZ4#? zpgq{N1urJZ8u}T6AAki#*>!z8Fpuo%ImQi7!e z@+3b_q75$##z}}h_#F_5hLehuC}0o165tNl5l3*kL3{8=97)g~yar}6kDdbY60SY? z9Dd;Pqki!cE)QQ0AkqApuMq!*z}u!{k0)v_49785}$*&LSpX8c^m-D4(UVIQGO;1}jJ;5N1wwE#JW}EbM2q-#8PY|4d zmmhbtH;T%iKN`Qp9{e$gnIl&55;btnQXgIp<(SFY+Lr=QTg`ZGm4zWVytxi^wm&LoC;7;;dlwa z;$&xSe~a)#7!xhRv15IOcn`GVqbx6AVpY%v?Bv*o6@VY}EW*KniEj!Sh(&lJn|G0} z7x`0|i)#^P53WUcRKOzqxNi|w3Bo!s;sW46nQ5J?Jo_yy!q<6S(%Ab0)bau*m{P1P z!q>|tO6z;{hLyVPY8Jmah^U*53$RO3+lsNtdN~qaU=dR zWOy1whU@M0kOC_4M^Lr`Dlu&@bm7)BWO$kmnV3`Ms>H?66iM{cWW`R$3iVXtN!wG2 zkH^|&$nZh<3x>mx;jd^OF>MJJ21ADLe|u=aBs|?d6g_(;;kPhUQHj^$Gs$1ei5E^) z+=TfCLWb+?vo^RYu{zz!NbiR>BnZfy@|3F>7d%%7A-vVdabL#6br|Ho`F;K^mxzjs z03_^pM0Y;X)t$Y=bAqb#Hz63b>dYIjF>Q$~z6rmfI-4k!8_7u`iUHKHqE=6=Oy`UK zYZ)ig^LXe53=6NrMt#JZ&*?8w@ahQESkwg4;Ss&gV_OpkIJ-Cl-^Elc0cn z{rOv%fhMBU)zAER3dU=r#@+ex6r&30&*lB}=V?BS2e2Opu&^Lke_pNQDe4*D?IJ

+2$7Ko>C12x@v3KbJP3J~xYV=$g#H$?xdIHDheOJOIs-T2~{L^!4ZYoKTl@x_bW zr3v6~Kb~S*Km#LJ7&yMT0Ow!?z39;?uIv2x;!k}&nl^?FT8Y+Vi#1uBZ$G|=L>%$r zDf0E_(>b$1JcVk>4>A4}kcwwj(hz;UaYPw^8^K*}R7C<&#=G6DwCFH~&Je;DK()Uj z&G=$r5=-zSnu6V6BZj8fkGq~03r6tNgvuiSU58x5HKtOp{Wa$Bm>(S{=IhrBAy9n% zTE`zNwsOPo@J_8CljrRq?TLJB%39&y=I9Qy#x{Q1W)`mtLk$fNZ}%wvh89;$Nvy@R zu&)g%++M?8m3DnAeg^cH+cCdDoW&O?%Uw~8I130M?t^nBh>?1N%BdJu(o~(jfh6B|9q z`YFtS@fBfK98jOujC}>E!rH6=?v3FucuM+POl+Gv`Z&N%c-UR8Dt)A0i#ZI%Gl;x` z_LM5kBXG4~ri|7geFb0;ReBwNc*9@4&=FY)wAPOgWUw zEM7_SVYA`k&zmQPM;bRA!g+Zi7Sj~pxH_pid8DPeJ@i40@pct*9TE2jt3U$+iC8bigaT!XGMY#^LC`XXRxk3)2QlF|-YH2~Q z><2LySEXhTg;eUBe3hDq5Gd6asHl+HekIqqBo^c|3F~K zZ&_zDnuSKq+!;nHCvslq#vi|n<|O`Diw15B{K(-#CokPpTJranCkf3+%veV}5lORzAgPha?I zu0Fl?uz)_zJMBfEUX0JQJ{`8+qkye8v;EZRTD#=6e0BP3)HkQB(}#z63bh6K1!kcS z6M@l7)aFTm1yq&E%04z(E6&xP;#|pWyl}E_H{;fCU?t@1&6UQD0lgXFYqY-!H)5lK zFywkZ-=^C92!9GZhw1EXS*#T5slo`J#j!q95n$&4~hfb97sJ^PXr?(C{#cQ3M?? zB?w5m^|^ZU``gf)RU9(%@@!0ASh3ih5r-xmx|;FF;YTG3ndkfYOD?E2Ka2b)r8P4d z0#tJWwsC$|o-`u$bxT;^P**~E`tqybGyU`N=DAC+zrMT~ALw{gur;kyiS(CzJS7(2 zL?tC+#3rQc7u;#j0ETkokArsSW4OEW^6@4YDUBKVw3;nqb(>m`G!~pyo?7eWY^FiQ z0lm4BamdwvULN=FzTQlISu4Iet*(&Xd?>Ptf_n4XYn9$S6;p6O-;Ul4b$K!Zl9?{* z3DNdlgruND2NYxmA}hLwM%KEhUEZk{Y$+*eJX!}D!v$bY50VnTJFN~peAuf4+T zoBQ`jH4`OQ{V}|ZHUpqt!m4J)U!jM|(FRJCB_NX{uMg*QVN z0ecp8L@Yqg_eA?U8)p$wy}t2PH1Q7g=X~}0f+APF{*V6ZbsD3hdj0c*eD(SnspbM> ze-e!E&ABqDP&?lbmWVLK0}!o&Z~A4-jG!4fvn}%Jr?7iK|>+g%(A*#(X_< zb+z;F>`0=AoxN2TXdXIr9dVx5eU@_us#C{)&WU;-vMvuo zQC4e83!kq$2j^77jq5VAs-u9kQ2qe+)X}HWUEM;xX0CN}S6fwpsgc;Gfn?=)|c}Q0S`G zgL=en$g1B97>29uZ#)l8_S$keOJb^#ehqqzd%Rtw;%I8sJk2s?$8kvpD z&$6d=7z>{f33Jnz!7*c*k_zh?Gc(mTvoo;Tr+bTZchlO+=$04XFP2(nrq*sbu#6v= z)^uCYt=H$O$S5vjY=He`c{Lg@phDI8HJX$rTeU%P!X`1T0#r0Tn%e$r+_t=Yxsg5| z>Q$)PHqy$Rz?5=ouQ))YF+t;0`p@`S6!lf2LZAY+;_C#u?RMP<9G%2%oHNqQoQ`Ds zUVG@36z5F{s7O^%F;mB?vqbEP`M1{Ct85XaHO`kf4SdVE-% zYV4+W8*1)YgztH>;~gv5P+Ix-F;`s3klct}glUJ$alQg00O;Pp)eErO?FQHpY4OZ7 zJC?;}H{mQ4K`d~*s-*0@{H<|oT6N^TICnS?!Iu!y{kJLs1YaoIBoMPg z@E?J1wvmHin1WV?%b^@E02r#58>!z5Rh*CgFX^cv`B7ifaIwlRM+IZy?YDF40B1wZ zi$-b*fCX^KQ7@@Kpb)k`b^e}Z-vGOc{ z*dGCxf%`;oh$l>f9p*ue6Jnj2-Bse|x%@sTo$8)cH|%Pg%-u`*xi`@+#C)ryS4p>mRQ2tZ>8(PFt!}#4sI9;evt$vl8AZ)-e{~VB>IdC5R8) zVT5pp0O5$tHWpk{adaN>d;=`1pPCdPo%2ClP?KEJ=^-=8CmnH1Kz3CcX@;s*cN(d` zfY0Y*TocdXSV^QBG2@8602XC8D2e6F`+GUzw2>+@TWBUJZ4{=Y(Zs!c*f& z#>Xj2PrO6C%Ewe!j)1y?f}V36jB!;2`%%J%Do|_y_@&W`g0U>Pqxd@jH>KCEVXEQgON%SE}UP~dN&Rk5z9`>AqNE+(|VDR`9pUOWR6vk0T;}j7(@kx zo70WOg8qCyC`rV!*iIl-){rp)#m0iQ*|WcJxcxIw99Q=r)ps7vCo6<6czXYbcu&Pl z=EcLIE1lQmlN2Y41TlyOh-N61XwZ3GLqV3hS`*W$^LSb!9XwzR!f}K-oEH4TIgTZ- zGEF}L5Fbgc!yO9vgma*%Aud9`sG3$h=TKc&2I9!!A|yIqEj5+{VnNKig!DLCXLl9F zFJ4h@w?N6#oRPd^nUSJ51x!To#c?Qb{8iAPHu&)V6*MHp+-A$KJ9rF^k!E~=?9lJ$ z5+#YLh0tnp@*CA+#cQhr_dH3$I-x{WKa2VSkg}7e7R!P&n9y z+8ZDz&`|XJiNMZhYKrg~=AtM+4JcV3IsYlx<6RTk3ATOkvjEft0TlIFsG6UEwzLYG zL?;N}ij*Qnyc~F3d=vlxqEoJH`%ugj#OqX`8VPS1lv;w(hv3~?l&B^n#9Z;CM6@>k)HZO`B1Lvb9W{W1@yqSs zC4JkCj?uQI4pSvq0pjicWrOHB!}qAw7I!Ap`;ktfr8eSus}{#8hN@ywVE&%#>?nxCO*CHM&$Yk0&$&OCl={!_EFcg|^q|WOA#K^XCo+2_GT#Dyheq-G zrFldjuyY^&0=GoeTs{)2bqN+~p%AP>9`PTFgM3Wcb|dT9&{B4#}uv)0Bk!+DPrkN-5S2Q&}Y zmxRIE*9=x+T5}`+m#Pcv)X3UUi5}`_Hej!{5 zYNp$8_vcb`_)^?7C+fZ$0xXT9r9F&pi<~U}iSp8ww@@VpOpR(dwWj1MG|(QlJ_++G zi1H7O^rd)fy&Nk2#7Obp5LZmblI;P0@EIa@vo#Fds|zi+(xKM`Z83A17ywkv_aqdK`Uee2g}~J zw0x=cl#yP7cj4-lMrs3o7z@>;-2t;zZEl#1wh%qnv>6#^3ra7gx1)Pm5)SL|Wn%XT+^F(Ar_# z!EbC()G*b4OWu1goo?dQYacs?y!S(aAtEDHO^)FYv#L$adzP>mYlyQ&wiO;;IMUr^ zq(-U~pH{UIQ@6Dhw{<`6H&fjGmd`AyzvSLmOuiG#;D2?ciA+^2bCv8FN`cCF_7UNT z;QTRb9XBrttCtKeWFkPd8Qx?Nhz&H_a)`$%R3Yu}E zoq7&ZZZcI$JnWZo)DkVf&W^kZ(UrkryC(jbh8+e1bXIczfXZmP+n#cUx?rJ9s8w8TMQ`mFQ943)GnpY4w;1w{Bo}uL8Fnyp0E15(9<}qQ`FEW$PNLU>0^OqMFbwBIlKb9Gb^*eUt zFY; z#!-kPhYyx&A6YX#rSX%F%a@m_?c>Bf2aZSkyXm3+kplE^9^75r^nFHpIQEV0(8F1< z^ig7NgC1II|M%%3zVx4p9-eAb^bkdwpYVyD$scML7odj;xZY|f&_l&*+o6ZkCTy1; z=AQAtPY+`tZU2e*!=J#?VcM{d+s&m1v1gD~&jlOFv7>+`ij_!Y2rMe#?yh-=aT0h9 zlZmUeLjC2FaxtgaSNzi5m;`MnBtT`a+1dT=GVk;4Z^8YaZ+~O|^!fJpX8Y&c->S6( z^+#(As8C`%83{FIs9F4&Sm?0vqoE#KFAyT!Mr#t*(uCDve|zjOIhAs%H57)P%JV$a zo$$YjE(7GYSPV}WSJY>s(-N7=1U8kC%#WtWttVpHpKzB2-N=f*WM&h6_ADHl9^qX8 z$#=>l)OS|Jv!U_aH&#Zhj%3&PWN*ldc7}}G+LOJd&_uqB8x=NOH+=Jp(Bp9G;kuBq zpgoqIuus%l6SpRHajitGiMD-rcv#WmeJH{+le!|AiFSNSTV(VyB-6x;Ut}DKic3W+ zMk)kdhsUT2X0HQPV^-b9Gs4N{?Cd=`~Z#_S4GH76R%%LU2LT{!kyFF^L9I zZ`Q0@ga(R?XeV@=gmr91xP^Aw>~~AWJge^Dm;@^=^jx?vCWMo1*xX!Q#?xWZLCX+y zG2@qJcAQ}*yL#+De6kfOAxkE{WR6}DV_5bJ5$>Qx5rmi4oU)l)<8tOS{dR92$M?1~ zi8_tjJ}#C)`)Ipmh(q02o`DzZ z{qvZF)yZI;a$HGgC2ad!5fDHoVFQ?5VXG}X8uaow;g@E{M|ktHBJPM&D^U<9Dg)4x zGde?!72&0C?}rc_7WKMZ(^y5N7TS-Ap7Yg#(~PwoD)Qe+ zF-6&MaS&y<;S>ST#yK(KEDoI*cr%MZBQP>>PR9ts5Gx0gvFDvSj0&u^G%|XN;OQJt zLwNH_g{K$_ndo$c_oPn7&*Y4*P~-QbR(Eo#!qd`j;Ouq5)xiN=eL*M+u|AqwhpG`x zdLuxsaElkB*4{Ejt&Bq>x|2&?GW}B?wp&~C@C`$D4nK(x#7`nCJbqFs`={;mlLYw5 zZl*Aln9oo~0&WLpC~x7dki;qA2WZx4;r=768OqrKhH{}x9G{J$ga+m( zcX$~3&Xz&*lXDD(p~*mUL4Hyr*asgg#7}yAcZi=14-LdmmVz8Se!{>H!ZJl785}?P z8EWS7lV&{H8T{mpr5-O){dv@RhkE6xDWW zwEKKzfrs_5_`w(#j9z~ zplO6Y)ltxgVpf|y{-j|=kqqttY)5E{dAPFrR6#8EB&NW4+SasBaj&RK)yhe$))Ugn zZ2Pp2`!YjE_jJGF<0C!=ai?&x4ba)kV}=zSuFNyRHhqfD;g{FHLmM~kO>^!FvZ2Af zN+Ehy#jTC_5SqaYymbuWV|}J!_SzFVi;FU+QO;JH*~W^{VI|;!C-EO6^87fT8f7{vz>0>MiSI4s@C(DK^Vf}dw?pZq$0d$BnO#M;}?8WiyzNhW_ z38oUNj@NV`zLxQIXcLXaYI+*?idh|TYc)n^M^611Q3OjdJ0sPL;YpAT;%80k{kWBQ z%sv+H;~5M&-9|S|O64;oI?d4=lFd3MtI$ZWI zy1|!XnJ9GPUH}}4>wUG*D0^Lv(iqi**+Z*5!qX~8=4qA9=%6S9{SI2%q8PMXEBY8> z43&;|(FXz>`(oT68p+^ACb1}C0Rhk;1y2eGLR6J$0vw1q^A!b%& z2WBIusFrtAEgK7VF~R#nN&E15pBU-+m|)mgP#jLaTb#&V1)a0$4V75avMbOAy|<|o zsDC4#Ij0QNbUG9nL{EV7tK%3FSZZQw%z^_5YNz%ajj}_qG)IOuy+J6(rhLjK3C!#t zF-S8zRt@Lsjkuj^$;1^P1eh~Hotz?cB9Njv1*FnQjkzabZMH8hEh$11P9r|YqD&Ed zMfL;)u^|-P7T|0YsFb^uiRJ*Chaj&28_=b3%MW2sC&=@`{UPqG z$g3t@KwqpH)7N{2faAoxxD~w*IK(oTvB*BW=o1pyym$r=GZPm9GLJbpg3a@rxOkb1 zXSh3Zh;d6jk+xuL@t7Lp)|>GZmzEAmI+e{^h8s8iJIZ5@Hf~|)uEX4W_x>8Im%(1& zl_!wvSO!LF7gWMJ5OUvW*PQZkA3*B#(BSXFi;Dnr>FeO~;X=R?a-K$wLi)PTkM0Ag zg%>qV2O|Pl@6(EVko!QnPrPnL?=)TJw3SR~{iyXb+U$!K=X0V(`J8C!GcG3z_2Wdm zxyP=r)|_blkJ(w1ohz-oo1y zw1AkMkATxK9&)S+Y@dw;5FpHxSjZ%1E8yD?Ky@YDd8s4)Y>>=g1+Do1Y_Km318a2J zM%|Tg-KI`4;(9kZ;jjO1^a={yJal$G0Zt@GYhT zVkB4?y$)}TM1NQa7}Q2J%r=)@O$1wIwNIUgHOq4K!#Y0-(2Xd;sziX*)A8&cOlXCk zWGtCkF&FG1Uh`Pf_Ymr#wY_TZx&83<>OQY=6O z4BA(JK(8hIJB;;%1_5`KsiQcsmQ(;oaz&li9RXkv8JcI)A?X7lk&MM+52hP!rK^Jn zi#<3bL0>9xj~>_Qv?3!81OK3jQN|Kj{&ZVjP+mv{<;nN83K-BAmFme@z<72Tj$;QN zL)8F<41w@yCOkNlcuiZ=F)k27u!$p#l)L64$UpRJpM_XZOb{l-TJ+?}li(LpbCf$L zRtwsxV0R5P#nv2nsE6z z4CB*{C2Q>?KOI_R9SkDI=1vUZ9{&huu0rfr86yL%URn3Digtx=o?+8sPkwc5MGVrTw1CyS z8GROM%Rd@L?m={(J?FlU5f8M1a^6VMZWhnfjfzj1hPcZgmW8b?iJA|uJJHoXU=?XX zNWm_Vmc%?L@p0zez;|DdFcK)pH9fLf!WE&9MOyys{1}FWhStRB4^jKBST<_FEdYH3 z`@}ljlq(9^l8*58Z&4M64LzO(eI}-CKwye}3XY#b`h7VpeDmDC*~eWmYgyw&wu2C+ zrvJc5_#ut*90hB~YF0K~BhUTOVPMGeTgoxL2r&g#2mKn;tj07$&OXZCLHQ(cQDKzx z8^}OT)$}xdC9gwt<~Dr2EC0d|L7^#fK0;Y&K=E%MI2p6u1<~ho+CcjuEVSt&v+xDP z6PBI3ZbWji9s8$$b-&i4%AfC`zP}&A_Nw>(-%}u~0qDh8a0K;E{}zp$R+sgwRE``2F^ zhDCq^yhw1#EuxDqGP+GNyJyF;`6g36Tcw}bFSk&;pOjy22>fyl zmN@3-_$H72ai#}O8JPGixX5-qb02TzDNb)Y=gBe;AyRK_Jgoe3L(s58)2PH3D!*JO zojfIJgnlCe3asj$zerD$$7|o*>DiJ~O}KkRu2N_mE4vTaAtPjli7tD>*G1>2s}n}3 z$Kaa7%h;M;0y4c2Y{4_A(=R6uI@(W?GdeL>0kQ_bN-EoHr zwe=RHH0{4*c$n{+F=iH{^E|qOyrhK=yj^X3mBeu!zP@QLf7=@pKS>^L*SxCSB%q{o zT>Op)eqDE~pjTYJV1mGHuYJiV!EJ9pyhcGq;mxa*Lyx{*?a(_CKa(>6lGHFxMzH&? z>w*P#--KIlVPskkb|qZakGJ&fe1~GVB>KM>)hs{{L3;z5}aBuAbIcm0#Et7ZcV@LAus-Ze2jnWtL|r>VMevN5qm)U%Hbujt{m?$cP^iBcf%N&Q~GZ=6Sf>eUu~)V z;LkYFrS?I1+WkHP0qw8MB+dTCJ`c)+5>@hV9=%U>{gZS|Zi~M@Fwf(!kcNZiuLXRR zn!(oQGuR}`|(!uzUbNc7(sCP(Pnc84X^5 zzk2kh`D>mme?w%s`CHPOa8c~!$wotQs_R(^uIXW@eKUwd7-_TITmUx@OaS-#$ zg|Zk)v#1|cHGNk^HX~?)%=BZHbAxB{nQ3nH%)rc)V=cr_uYYmJ_^E9lf+Yf*mfeq^ z(s$|c)8kOkj!d2dC63HX!Am>COSi{MndG4KeV@2r#5rK(qrpH4>>wmiB9D(giZh4F zM|m?rK0*AKA_#ZCxov;u!Ziu_Gp`Q#GtD)h!lik7c0{a@Pji<;wNDccO=Y)$I}_?9 zJem;JRpQp%H`lGH`Fx_djjqi-zNTH9FY4#6Uvr=yXMGu{(0#djEcVpQY7KDPJpJPO zcjl3-^nNzqzganuf75epW@q%kvl+`?uVe+no1&fe0l%iz@`u{Txs}R^c5z}c#|;F5 zPeppqKrT++D{k*vPDk{`^fbX`G_Z^FlCKK=c`nZPIGaqO(|+y@yqE$Kfn`4%`GWFn z{rB^-ZAAtIyqo*cmEic8Qp+Tl{#(fu#aI< zJp;R1cx}^d5qd4@vSjMLv2dITS3oR#_QWEncuW{V>WZx3xV0))(`(E;OKA|fF3SVl z062Ioxd%4&CLAh}=dtwT;6~C2Y)qsyGA0jRv(y`6~~D zen)e((m2p=^L6x9j=_4ZS_`Gh*Qn1!!^VO=lg{DLW3K#&~rIuv$mfB&tj8@xdF(w?|K(jrx|ZJ zKO$dH`j!2&gFtiHAK^VoPB|Hs-xA6yw`_JXBp3P@zvb=FgbMjBPr?`g7dwj91k7j- z-}m=hJ^$(tawd@z!uTChi?0^5vpqG7L?y_Hm zW#4B1^vm9|Z&S;Dku3Xf7hd-5dCQ(hsX*A}dH}bv>|s(FIP|rlRj+sL|C{Uk|JEwP zdlL6C$s$((1>wyl@e1@YjM;!&E9hH5iEWX61mp(kkegZ3p<4GR_Fwl?&_UsK|C1eC z_ig>xeO>OlpW5rL`?kXCem(~4ulv<&WZlolx|7BG0wQ}0ulsv(#R}IwuQ+$t{eR*Z z9l*+4`r3z0R~MFjqyoVUbYUynn`?i3h-L!E8Mm}x1^P^2wug&q42Vo1q?!f}X3M}d z8rZO)#l=Fo{ae+lb39s9`VRTQgD5F}a2W@z`N4nTX^iZc1ZP5A4?WM<&skbK|= zG;0Q!0e-srPMvZ+(7YaZZRq{{a|?HZe=Z|OjL_NkzvrJ@`1kqerin)=;GY9Lnn4SL z^3VMY=c)L{-_PuyI~HRZz(0pkwUR;y>7RRhC;8_F^p}Z$PJ@b0k8S$r<_y|Dm+LPJ z_ycK!HwN9`p#5_L`pd*W=aIs8=69gy1K6Jb@v;&M3fJGsMcD$Z!lEbsxk2~$zDst6 z``Z!!+`_f?jKBV){BuZtpDSyLZcVUR`$BjY2kprBm|C8G6ZFr)Y8uU)8FbNwt>yHC z&_lPZxan-%witBKiFrN8Ki4Pc3H|;4xk-1zWHQe#yXe98<*7rUObrg(ltc(QvB7DO5f!D@8fn_<`;Wirxx7};f;T7U zYxssp)&4e6M>7VrWB#^skM>opgV$cYiPbb%e;c}X*{M(j{O;P{b{|C9VEk=3RHJ~u z?fyag+X{dG+79^J3b)Ye@mk+wSJ>ZH`1>}GclzJM1|552SdnLBz_DzlUI7SjzBKFO zpb7#G7ksVoU0JnO`zMdCT5bR0+G6+!aQ>x4w^Zg@Fl4--c%Gr9)9bKzL^wgcj*aN6 zMH~^sV$_F-Hu?oAJA;VXP#GhQ_NZ!G?#GLpeO)9I??2T4{*Kij7W3+tGd^Y*64XLP zZo4wxa-N@7hY{O*{F3>t9A3Ga7Y5_?%^$g?*49D5>!Ek)GXB2_uY>m3L3o8H3dE~T zoKs@9F9TPBF=}cVU=Qn4;~vnx?eN|RNza}=45u@$W-Q6kd{{CgNOaZV^TU$_6@}ZQ z3gET({uc_g_rNtf(jG&=y!QUPPi>P%?eam;y1o8^|1Gjn5_vBCYn$@iO{brz^696Wh)nDP z159M9)uBV9W0~)l@=#A&5oP(_LT^UQdd{APYXhkBB3Pnc9o|S40ulrI;59s9f`>}r zktD@P_&E(m5Irfm(1B(+n4J+K%cF=)d#^804`G~9hR3o!gkIDsZC`!@nc>5qQHP4* zY_v^sP*6|UYHzB?6&rGf*akTuXmq%G6%Gh8hCqi9Gq&uqpFu&F?FQ>D;_#wIWV2~RdYmS$p68z5 zB==bi9-igL4GNy+gM{bOvj1!FRQ@>c{G-u{%%vdB`4uB+Lk1ynS7ByT6+CI%^*Zyp zNs{BiL!?rWDg)mTkcjjg^&O1w`lvZnF2|cn<7)`}fa!urCLK@5L1}E2|B-I%c@)-E z8#lXyWVI#2Cs;SS_sdUYX3A$mzc4GOS2tZt%MABg(X4qFe+rQW=62e@dvjy{RObC{iT9529m9^4G7Jhq`cw1+Gq( z{V-~lbpOhy?^vcu)^CoTq2%Jqu)g`1Cs;INTZP+rEC88>i~?JWtp ztQNI#Rt6F^qt7{K$&wIlvt9?ObGr(@wA0S_9i_Gk^?@x={(j*f+J9yL{`2^$`S5PQ z12fThc3UDd90Ac`YlY%^Ksi|{Z?xf#+RV1F$lTv@``IeSK+LLmj8CwAE04iVn%p`B zxueOgB@f$3+!Ese9HBTR4ZF|!$EJQG?9FQ8c1mSIAXnKP616VNXh7tVwx3S-HZ0H8MzcK}7D0(=3q1xK&Y{Waac_asf7kwSC;1^eYbhzzF zSE?7B#{RlA2rh+812r;;Fg>c;0-rd?-~*pO5H_9YCRtkIEW;b(EOjq_I6VBI0sHU# zcB?V%QJ66&JBnlRXDpC+`!u4xQWp8yMW>C*1I}-cZ3U*}ehvU4SiaO)(CfU2j~5f6 zkJ3R2x6W!jaP`sL^Atr=Kw>nLKH%Gdnv=*t#Zl)fw(u!MNR|tcDo*xDEJIId1cZR- zHCg5FFf*-+d}dY5#dj#q<{yBYOc+IZiXsURMR|%Mr;nmMMX^m4`FJZ&QRIkl z2@G6;v(&lo8ALDNmG?MH*Ix7`4z<5j1lU<8Un;&0sR*49 zOb}ynrDFuiD*o(22I^ahxRT#^k=jEaK=c{XlVPSdvj}Nt ziXO5k?JwQ)F>W|&{2Kab<@`!ZFv?mSM?A3y*K74llfifPYR@Q@UN=A?k_2Oe+=gcoR%qB7`93tjn#a51yXg6cyxTGq?^4UH|L1T zOthCB4F^>kDc+}o^Lv{fGjWPC>R;I*5V&a=#>J+LG=1nYAB@~yb>7gT*pyxM4C0w1 z;AdGuv)a18k8u1$JC63c>}ux;H0lp~xjH?$yc4%^7-@z{gsNXPQv0A?3--!qa48AiU^PyQSmjQG z{Psq4wrX4rp7yxH@@lFeXMRNo{`QwwoqU=juU7o`=rY^Rrx3#*cg;bp`cBr=`M0V7viZTflyHs(Serv1ZbX_DUFsf!< z)G|vt&~gfIr2`a8Su4{j9iUjIiqZj!BUOFw|7`%FIu%Xj300A&^K<3t(rw7o-vs5U zwGDat1F#e>iJbk^_3seq*whdZ_u;26QE9h&3{T?Oxug+XEC5RxVLBTRjnR5%Gg{q2 zVlQCs0utM^hmB~XWP-`czL0_U7IHD#?NhdXgmtU#83h56%J?6y!$iNNNB~jo&M8>1 zJLmcK>OL>k0gks{glgQVQ)ZNM-|{OwsA|{hbgbrOBT0gitrC2Ia+r03x=M7|MjNl6uJS@YJz8fWOS84FHv$BtoY z(Qpqwfj~D>5&THblqr?y54d%67^BW<%uunP9{(GXMD7%VO>V~oa;z#|{`IeX#TJUMD4%K$UV z(v$dYD*=*=K3Be~p*TmO8rCDZ4(Zl4W&tMiE86gYcCoqq3!)dh7}rr;?_}cmsueFi z(-$ldTtN7Gj@rGrOpFNgbbm3V8KYI&w=sH7MKj*o@4riMsxTI`!_kl@w&5?H&ch#+ z2r^s%A-j4&Q<{abxec90vf+!eKcRgry*g}|9oD(~IQs%ZW(LdEod!mBr!*-OByoz+ z%e0O{3tazQ^2if*wkmR^@okSPawW3ZtBRx+7K`{d(@M6?VyP0+5G*6ZR(Rh+7e z<*GPM7iBn^*6F%fDQ}yb@y8f_r?x(%MB)&R%^ZiuAP-HS&FVxY1&fO;fF7E*A(@m)}o(0dRm*12U4PgHS7=MG9Jq%CiB9(}pk zaz{z}!ju49kG}5Q7JUstUD6e4lkjTBU;8Hrw{Ynz0@@jvz@oT^B>f^3Fi;jJlRXz7 zDk9^2AOiXk)f|_o^tj;0$R7X*tz3Z{Z3WMy61S!( z&cy92szrpd7h(l={0?qsjr1Xy4}e6R?yiX0Nbk-$V)C7+6K=k)x(NMUW26qjE!+?~ z;~J__Z2SsqEbwYTiPBdNL{x`tmbF8g zSISuYPQB%$nY#=PuVpp^59ge~a0(;BxdTK=If7{inQeh}0S?J^New7+SQ5nnO^D z7#(cnjsFZbaw8iVj-5UZ1M7Y$A4dfQqAO%vf~1giPT_jW!>^(v;pT!Ex^K1Bu?v&I zZ;+#BX%wrYLaVYmDxB8Bs^uZHnV)&mQ>>3JVfqMFDubi$TpA3;J*Hdj;$MGXs40$Y zgMDg>lS(LRijzwI0Hu;QKyNchN<+&1=fqUR_SG^0n0^rfYT$p-R?K%`U_gQA1l5qs?wQ<3-O&x!rs$*)2l?(%ej-1TLjg}Wy`!d6%I z7S;rK58WMz9Pfv^5zb9`%n`StZ~N5Sf+}gbk$#yY`V5FAU}Q!_EZyk+gxH{{^apa6 zrP4nmnK|2_QgAJ0byonK`^h^U1JO?ix zn{rX?(K@DAIozGAEM6jaKx*Daw!qqu+=ysaH3;V*>MiKK4IlHrs@0-VIK%LK@sW4{ zhHURKA7+MU!I0!)Z$A0xZajGnPm}>V&wpj|ypd4Qe--03bl)nCXPTzRtPk_NSN1`B z(Q}34cGAu0(ae^t^c+~H{sLKlbnuK`k(}Y#&*IsO;KEl%v}Le>4TS~gBU&h7I76J* z@<=%x8hhYr#9B`OM|vov82leq>#H^)4h8K+5gBs`EpqB3b>k#1jWg1e!f+Hyv{)}6 zFb*MNZH-hTEB#6S&P?iM6Jd0z4P|5SjR^usEysIY*;lo?doS9>Vsh9!VjXIhUr}Xd z_kqjim@D3nWk;mqQ;N^Xl&p$YA6VIVrkU(6j%G^cL@dO)jCj?wcEbl({yA3jLgVCI zm&^x*k9NtlYtI&3MG9v}0ms^|gDTxO=lJIkZxDr(>p}pcYAxrIK9(er{0LsB`E0f3 z1S9nbekglhn!M0=3nt(eEbZqO4EQg?@OQQ;6X2t;CBY!pGVv|=YHavj=%lfY1ry%_ zxQ+B&zSdrqFs_|%mFlkhj`19*Khj|qdZ2y!X9x;M2s!!D5F>pq$6s?oBY<^fsgX8O z3};FztYwGa){McQD8ytWmf>)bX*eJ17*@~1Er&r>^;K=M+griHGrweA8DZF3MsHm) z(8$<;xW%;fPjDu8)Orpdz196?Z#=%g6Gm_PJ8>y$&8v+E;YxTM^IaCH-q`d~*c$VI zya0aivgvgkzGJhaw-PuUKE0`Fgd)g3=VDq$FgK3OUULe$Ldl0*0Um~N=2p$^Tl?U0 zV!9C=xN%GDuCXa4b7GkhtL){k(<4~&s+nAl&R%JHQ)VP&A%_JxrP7BRjdCj*uUhZ? zMNAmJDRYsOfjMFg2(txYzv5GkFzb2eXQ~ovAn{8o;B08Gg7YC>nZ2!>>}sCJbOP| zcB7|g;->~3%Z#*EB5FfPJ1}k0#Sug$s`{`FeB$jlaJ~h%+W0@VD!9|qzGeg&l!W|H zSzsg*s-O6Pcz2A{cszqMB#y2^_(>zbT8D@;1%E+Q6E3>Etv$-9rtcu-G|I3haF}JG z@~tph;0f6ayvv9iAuXOf&R8&W46WffbU%ti9lr*`sz3<*th-3E2w~ze+$W%NYHj1b zr?t$Ix?yWgxOvNAMrsp2j3GA$cAi~e=Yde&z~QFXHx7?7OzK9wx87!xhzEj0BZAnQ z+P>OyW66FfA!d-TP>xjhHjd$E2F8Rc^6~dM+Q7#+nm6w|kbkd{J{;FCn3>byl|KzZ zUr*pG#kcST3*t{$jD4}1O^simHbIzX=*tlIdTyvy$Q-_sbp%b;NYk3iI7MPO$1<l_;U zJ$t=duMq$;7L+*+WP4mcnqQB{_u#CO23w2!#5)4AJNJv6X_Ed!)GZf z@iOsdzO=-onbH?St0+wFZq&>9D!~|)D&3)QtgvlBALWyBw8a=H#9P54XrHOKL$ld5 zv@(&qh*Dc=T2FwHz~!pEg*{Y7QuvlZOv9MXdZ^VKLg2diu(*P7-E=H_Ww8USy7U#x zBqUxbQFht0p3HLN)t3e72{*;Oz^j-~1TV*V7%j5|AOs8{0>IphKSj=KAWzU4v33d3 z^kd=(V8<1}_Wm%R5~ncy?Rz(bh9IU+5c6Zf#wE}Sz`ZJwUtpw|%_N9kd>9%QRQGjA zWqtyThH(M&H>JA}Xv$p=`+~x#zkqMz1QPV8xJP>tZ+mf;!ZxM!7k7Q&s1&T9K4&H> z`|}l!hYNL-a*kXm>9`ge`rWM88nrs2SXJi$7%C3dYI9;zND&M`6oe+i`x(KhLUxJ) z4De8iU##_nTx28S6g&O%Bjkix^!to#3cz>)t#IGkIBq)RtXV=&mjZ!`pZRQ@MNsdnSfUacZ8?k!jDMHBNbWv#e%&Be}t2<0uOT(W@a%-h8&E%O<&uMHKZ(( z=PP|j7#DlgH+O5sr6lk*q&hOL*{=|KIFXo%H`59x-hh9tlnoi89qcf}9iG5gpeaf6 z4TH8JGsy5l)wbee>=k@0ClTlR6@*`ov=6n+muYgkoF}GBmA1$kq2wSLl4;-g3&oJI z9o_c;VNS(yu%AU_I5F}dp35cdC*0TJ{6Tn)THi6;o4`DuYq7rT(WG}DH|PjscjD4b z2z&r}4I5Nm!(n*l2Q`V+Hym}la>5A$TzB8hL;!R^mUcB9_sP&hM3%!J+n>SvCa*?m{A zJ)I)ieZMftJpQ<&@c+@rgM~jpKPdRG-|PR+@SjHt&)|R5TRzYHNh}iBrst5h@SkLs zs1(XCanFsl;!;L4USspbnrd;Vw8`t-7}jm4O_IV@WG0u9%A0KZVS`SZ^w&{!sCvub z(k30CKl}~vo zY%$faaS3xp=AD;E31%z%bFl=fq)PjZUK}`zu-wOh4dkD$Y~0T+ny^T$ahPE!80uZ$&ITb74jd&ih-V9Z5G*VwB!#`2=Vk9LR zAl*k>9kk;^@eaqouERm`UglokIrTanlX1BNrDM`05J<=TB8rQc=!u+6;_0+)uKmPK*Q&ly3T&%*?K|aGV0=4|~&-Ap)_TMVVXRlN}z( z?#=`7k(#UqbtSLnTA4_Q?I}GH%+4vx*;*8mpF&dDVm1Tb{qsRu_%tUUUetLPdbOE1j6ONExJ5xj^3H z_Zrk@*%v{_DOGMTsf$=I%v<~|=&ztY_n=SzNU6Yz4(NOR^|^J{B(f={)F$`Ryw5#AXKX4v8C zPn-H@MizE~(xYhqvI(2VJ;ZzCH%*o4dI&Q zjRz>dp?uePsF^AGh@2}@^J3GVPqW4>jL~r@o<*tA^hyB3I^5?Od=dL&=Hs#o#0{|beFI@g|Y?-kz+RIk8gZoD3yCQZ++ zb2u7N-{Itfi5*y@omlI*QMCik_Rj9xL~_+S^9cucTtY$4O9C34f_37l&>wE}dkX)F zjY|)3^}cNYBi4_)oN2IyyCb`Nd~njo^NnsiYQ5=vRca=>A}td;T5zR`D?BH5fCM{L zIF~$gCde3|`H7z!BeuJLhx0`gw^@UU;8BKaCU`49TRCTv7sCVZS1 zq-CA!`F#)OZw25W=MG?SBt$q|NOsQKe2+WB(>IAFT%~@d<#(cs71d-|w>#~93wYz( z&1y2LIeFB5bAJBYR3WXw=Yt-(At?Xzgg*633edSg7bLX=t)i%fK3(m6tA&0@7q!qg zb+Ju-TdRv&=-26@68f$6y4a~I%Oucpmnu%vZ*5hau8TdYNKJ>s=v77O07VLYj9EHB zu~ZeM0~Eywo@wpkHz+Etsg)fBRUo`6SKmorC<;XWIrBlG?Bu6})(2BUsT5*<1(cMF zsibsaq5&lZYPBm^14;_)P2dKz+I%Gi=PS_O)K5tv3JcnssHglosHdFlt{vE&?&o`f-d3Fb;w?mqks=8Mh==8MYS5f$LtGOcySXcb0h zxcQ=QIy6HuUo@2&hW_Bxw14_GwU`%}FZ$@C1LTXg8#pbOBujAT_<+TSatV4Qa_*BF zIXR;cyx63r)2N{%YvCa_QlAhclrew959ZB%h`(oKk2oG#mg0%rGCq6k;l{%Ka97Hh z!;X2namc0TSk$NlwM)&f+G1110$DGkPRkAFvycYRHh(t=oi@W-|wA@kQ zg~r0;-MLVA*iFP$YBGigVQ!=j!w)wv(XAJ^HpS7OL`iu1lRKaiHCha42nHm*UvWcz z3$ou*{dYg0^(4kb+=YP?rHj}r54=FuB1hupee&Rof;pcdeCBRhFDnz-=t|y3k*0q5 zWW;*csTbkcOgQ=99U$M8R<$)Gx4;*pPAdR;u@?SA9NYx?OvxMK=uD8a!x%Tr$L{`$ zPW1qIi2F8t)1V{lMTKzM@wo>tzuzfpybACPt8~A1{yos27lw*0E)Ox27*zIQ@)Ec} zw7eUJ>IN4x-W1iaTLdui7awjjnVTxtB!9ZtA@&$2JOZ;O8bdBebJ4|z+sbN+ zY^3&;60iZ}N>FMpmya1_GNhq`c>&)bQeeY6v&{LiXlA(>_-D)r^P!@^wrhW|Y17Ac zz_te?+%?$pvt#lpTJmG!(DnKOZlrUZsDRrAoSQ7&TWYDh-c@^OIV`q+i+Y-B4dcAk0^0mNz)eYJF^US%+$H4>T(&EEcZm4 z@$4L-E>a?nj(Wl4#__Da>>Mxp(QU$dUsf^MC(}yn6(MJao%JZQGOfi*#rfk1E?1VXJh%!h`KlQW+P}fg>M~8g z!?}1)zYO+F&`5Oe!Ms$Nrb{`D%Lrk>-Vg-c?9FBHGD3Gu-V8YSa(9Hr=vfub_{82% zE_&Cv8;C~VMAj4Z$J|Av;DYA0umb=0Ti0QJh!k-akaJ}fnhDn2teZi|MgSxz8|SNi zk)Q(2QiRFWJb2_MtJuf9<*!4n(hWqLl#N3%+kT8>g!2wFkMuk|p!(Ct)FkznV*w%+ z8M)$;^Y)UOUCi`@mY$8vX|&!@?s6Ra2XFfG$j_&7sl%lKNu{a5ko(P~)HyVFCU+`L zh?Gt$^58h&OgvG@nGieq5O=Dea=EbL-19OleF=ai<*m5@uy#lv8X_aeI|Ae6oaD-F zi(NUSV2@yWr7L$!oK48j0rMb-?m|DvuzdeoNn*q8jLfj)^^91$Pyhx}jQRoR_ux8% zSWKT|^6x1ksB)KgVda85D(>qEi+~ZpRz=qc(4&e{36*aA2lk<^E8r4ovjQru4RFNi-Ep$E(eAarv9gyw-FUsZ5k0K*{u z+b~ai-DD-d%TdUc-|1h%HtwzpFb<^<;D_3VZhzesNXt_@2JV)d(H|QpKOB&QjCw7| zLFR8$86`&{x_Oa&`aNi4&RYTfgR7c+Kp0>fez*%jaSeY}yJK;Ah0D$G;ho#(^Iu)F9W*iqjjiN6c%@4p%(8zssIlAxlCw?QM!7d(48zsJ+urT0HqZD;AtcV&}O zGV(>HGa2mJ%L8HjcpXg7^a$4>^8Fd~7qnN=6YSiGhswSJTTB~4ga2^+@4d2tR=5r? zA)f8Ud;7_ya8@gaIRNNuApHcrfVT}Ta((PTYU!!6y^{gnh5>Hh-!}~*7<=Jra5p0~ zY;6u?gql{94O4s%{@-g)dAlSBUo$!jc_gba$0kSU6SN)6TcK;#3G2@&*$7Tt`Y zS}qSjVs9i?8xn|SuX zA0;US&s$?(-9M#0HRzoBCSj2i#Sx7H{L!98Xb`iD zwsCUlub?rNFM20CV!r4D_@Vqj=~nzy`J%R&X{u#_MBF;cw8kPpqNiWxs5^fhX9!0l zU=Y%v6>s;^ z=gUQ?1@l0E_`AG3P(=eO2lT7rDpFo7Bl!+-my2~?HLj43OiRfQ^@-~aRlTZDOo{2= zV$mZrwrT?o&i)Vl_GXT(&}EL8H$h{_=zO_l;wx}jMOqSFU}0P;FT)@A3VtNI91A1j zm#BlO>N@`GchzeZIyVX6DFxcM1kg@XD>J&C33>?h;i08CJgeG|hkM0)ov|c=4AKhd z$6Q11g130n1qRaNY(Xn({84_aUm^dfTY_ouPo95(>q6z1@+OHnl3$9rU?xruI={5B zqPD?mtT>&*Z>oJY?%^zuU^+)9nBI#O$`~^c3jG1j3L-=3t)v2A8M?R}58!G*GA4t@ z)}eX=hvI_`LI1e`klrgz{$fE!`mYq9;w`C=zRH|nwk3H$c6MBxoW>=zbl_2|` zk)8${F@n70{O)C;@{LA%KRmHEN`mZh_{l+liK;<~$3mTjAJ6`9NW5mg1{rQ5lbXiD zvy>YHGp}!m7)yG?&3!m8ayUc-e&NK(K0u55O~}l|5tnWC#;oPU3d-14G~l1pX$GmM z9Kz#TWu#f%QBowiBY~X5c3^>RK^DTX>)C5ynwW>@;1-Wm{2o6LF9C&rzC2>^=4V zayA~vkzhjB%~g%ly{%7;S<4d)_iHQfWX9om>isI?a8pyg)l=P>mvA^~h==6#mxK#P z7^k;cL-YaJG6AS@>tt6L6iDCo^dRNuLx=qYy5f~-pdfC*o}1G z+^ z>zpVny8aEni$hT#LoWiO)S33|L=Ha?|0?cDK!Sa(b2>lw;vcbeO8lksMYKUcV(BP{ z8<&n+9L5sFB4B9@c9s14sco;4XbJ|!{Doqq<^Zm6m4S5CD$xsv1|p`TIxE2LmEPgf ziv>CeN;BvV1eGL;J|SjwwMIahI#={OV6s2_7-$r1htPut)azV~Mm%_vk9_1Dj!`JO z^x@Ai+hF{uK>vDdK1FYjA#ye*k+Vbmejdh*id4Xz5qU9TL^nG(>-iz?OcHDbX)0#4 z&iRuJyqRC|C}dWshcjDmASAG~UbYd=DyfO}=;p80I^V%is81<6K$8pGoDNjWp9fh+ zzj^SIYnRywAi<4`99*mj@u?e>>pnOv4oA7z)mSbRA**XKY?Y_HV@Jh$ur)yFs(NqZ zF~3*eIv)Y-UgP{sj(E4$Q9JX96=QEe*6Ie~?nPKJ5eNs91W3q;djC9rkd@D`xEa65(r4l?nYrS( zjkw4J+J6>2n{2v3#wBwZfI7{>IZ!V(2oKA35)d*j?ektGR3!fg99*S1kY&RJsbakJm5cwq1$S6i1@Ql~LE`_M&w&4b zWIhYlT~}WI;6L;}u#um0f7J#0%f0W2>j@`&2e-dc4u$AXlO;VRcm>X*?d)x{mPz8wG#(~>ev`|VR7V+vc+0{=<08*I~5(GI$>NN z_+TmpcRkL~RUfW#YA|+L&$SZQr!E!*Wytl4#%L(F%z6nCReZ|L5q@KnHB-xVpp7q@ z)eB$_>T#J`Q?>d|!94xsF;vC*Q?bmnQoUsXqD>H5BKrrmbe`l5OZzQjyddt9SZPmK zS^|2TQB5VrNc{%iHZvS!)PyPU09&#u!d1a;_9s9zuVPT~@~v9ihNw_x%lA3b`5eC!(V4no*O7E*y?> zfBOp8Kq6CL$^*4TD+0K8B?lX4Xhf{n$$tcTF8^6a{$t}?`v`y!A(o7JOvzd! zpW*hHt%liWEN~0vDvTY)JUUneoDbBx#B@s{E$3HUfH^n*KlZ)@ zKB_8hKSKgW0dJ&eK*fMj6HrO48DTX8Nw^~uh$0vj6&q$PE2|U00z{Jt<2cB=wq5-c zdtJ+lk)jxCD63K|AeMlxp6ggZT?8!oKhHVmmYEFAvVPz1ufJU~=azHd^Pab#_q^u; zAcW&pJ|f3Uad$2UZ5<#90!EqI*IgBvAD>|d(>UMM-#>@{UfebQwDd!_JPF{9V7!DpNYHV1OrB1Gi0 z1E&qcgyz-ET2E+DxhmY%Xt=(aziSufodv0={L4`E{*AcEL*&j3)S$F;S~wSitt9u1 zDYblhaV&47rlq(r1gV(hjB1X!U9Na@Cm+(A0N&}e^pCQUyGSWCK z=Rb@G)#Yw;0LFO8X36kt@FJ@TU{C|t*=Tr&FdpD{z=FP7FY;V?UOrvH6InxG)=1^G zUOyddX%;X4m;{eHHajO6S&9Osk(I&db3_Zm{^4??VH->xeQs$rc7?S=-o`!nfYQT_ z)%!=*6fF<$Ipt>gjNE*h1CmhZu17YZq#rnNLCXq+uiq2{)t51TXRJiZOnfbklZY6} zJlv7<>7qxqJ@flZ(+jC3r)Jg$fh&5$}w$ z-+2pVClmlb7vJF5S?758HOZdf^ik30KpME46Z9cgREtz|piv`VncPM`Vi4lRSun_B z9j71L7C49TEjFJ?Gkk&FlNqg{uE2=0%~*fL`Hq+CP}4i$TCD6svvy*!e6h%=?~n;z zEy=wY*2haSbX~ZraA|pDi#QtEwq{}uo>OUgsP7n4$whJw#lf9@(h;~DAL2VYrd}ns zeT%3|4z5Bp^5w_yQ~alsFD+U&3SYViUmAN+;pbSI9)&wtt;I8p64I-Xe{rXncku9N z31$W3B^5RO^D>OdnMgG?8ZwX&+I8)44BtKn%C;Z%Cd%3$(y?ZYpcXf<7yFDm8%ugN zGkY}z96(%+PD4F%WCe$!e<}j{sYt20Yw%a~VE3o3TkLtjQuLzYoF9yOKTt+%e+;@F z&(I7vM92bIueZZ^nnL|9%q=!*d+*6=Ua&ZN;)mV2{Vlwq4wB48X9J5$4goypw{@R$ z)Bcz9YqeNd#(qQO3J_9gWNejO=u_JT&P2Gy2hEJjh%x&zQD zR6o&Se-Uvqy~p$!K82cqftf5D4izpwzZpAppg8Kkf%#KhG_fapEZOVA+>4C5=kT=A zP?kgTST6gY*vqJ2fLB2%7hz%=@l%$B#$S$mIy+5;vn-oMfIHC!ezyHIu{PxZi8Q{9 zS}4hAvlc45O!B5tk6=4yePRWe1yRCK?4jHmyobDe&vHcy=lwIn-TQ-U zUcfaB{9@GEd_s24FJmNS1va9w21Bt^scB8d!&6M;pCvt~;*-f39r*c1I4|GfzdhI_+y&heA8it!-)laN;uJq7j9O#dmU zbLOoNjTj==p%9YB8Ud38$KYMO+-zNr3$Fa}ep&A8l^b>Cn}^9a>vC)OCjKjld}4LR zHAz42aF=0vao)MrkNr-AeulYV5hn#55ZGPd~a#p!}!Rg0JLrcyN6su`HAc3g?P7>vq=DSfx z@f>Q3U7V$;#GO(9ARbmiu&%S3(9yoa7B!t#26dh4AAGw4@3&^66G&!SJc#lQZMfyv z)|$GT_b@VtkL~eYj<2N{-w0l|@no53>F-O?@jr$35SEd5X;|SzWvt98Jk}#MyTvL3 z)V4k0<&PJcvFl*8{xLQIYz;8L|G=2HFtCe2!^!^{TqOt8lPzwGie} zlXW3!Na9C+*X7$18*fS1djouhPiZvOBW)QVyG-jdCVvW4Xp8M#DIfJV5wdjnBx5e@ zNVsWIRr8RS>3AF!b+BqI8uy|G9+7QEhhzm|(vF#$k%ow~hr=`EYvDcp=TsW?s(9_q zGJhMfG%@c#SQ1?$0WU^B33BM~4xLLSR{w8kZ%tf?h$qOy(-6^ z+5E`6y!x*ENDUx|{%M?DfWI`oD&AK{OWhCXo#`Z$K`c0_it6K$P;>w+w~7`xfAd5B z#*k6gShz}5A;M-Y#XD4PPxd8~j3_EX{v4{P;&)lG%^uX^#UlTM1RjwU$ob}<)te^Y z>_ur2EpsMRz4_()ZKRd%Q$zPKnsufZZ>Z2AWknUYe0V7E6);ANbtrd0h)7-Y>$(!qgo@w93&6Ay=WEa0mo{j-BxXo)X;Tnnan0`1!qs5v+ibj`j zzMqj6e*t-S@z?N=c&l0N*B5)^slSF{2ln; z52i!7!DVjce_w+aTlwGBc>0(2ze~%0_rJloXM(C-`xh)Y1>|Z=Sg-$mUhPluzvuXr z8%fsqzw3WrKH5U2WI=6_eB;1j)o-~De=s_VD?|K)$5n)|!| zjd%xxe*Y!^ySbO`y#6%*yW-%T`rogvO7JayasT^3X9&Oh-~a3U@8a($&s_g|duu0jC+ zi~R3DAiLQH%kjS-dp*Jb&R@G7|GT1Dy-W+*_P_h%8vXAXeG>fd;po!ie~(zH{O_rF zD#`!erF>sHJF;L66Zk5aCRJod*JWNGuN3ggU3gGtQQ??HJHamp@U>JRy4H;4eDB#I zgk;z9e}94R>pa3%-%rfX<%f*?84`5n=5jv+^8j#U5R%`=Gs%$Yy1~e+T%VuJ(Z-@H z@Fy5~Lp=Mp45YwqQLFEZ1rvLC2*xNghPA0sWP?2Rk_m+s^28D@#!rzw=)Z{m0f{Qe z#qA0?3})mR`Pk6NW2owws3(@o9qCN&MOnUR3`|$OdJg4H@L7~XC8?omy2{8_`~r0~TtwuyDzsYM+|1|Y znCcHlOBMsxTT6*~n?V zW_n#6^Nqy~pD|>}9ZoX9Hy76=A(=hDV2`61KLY_(;gKqw4JmqEOhFGyW{n%pB?yZ_ zaI%QF=n~4T1CaNP2WA2}D3=}1&D8606aAdg8hn64AjPR;ZoEcZ`YtegAv)0O7BVjX zsVG^8X`Lmp&4D8R%jn~YxJpzv9BRw8Bz(`rH*J>M^?aT|cgT3+Ms;|$$U7c{y`5~H zW01{rqU5WiWH!$rWb;fa#sqPp#=&)6)DhrW_f(-y=KWFs@D^@uq?~ zJv{{_!uRblES1tzy$9wedPNbdu#iQ_jWzhI{SMNhvrY!W8STm7QRzKcz~9C`uo_ii z)b;{8i%_$>JO0{TIbCBdUspl>J8q92=r3We$Z;u?6NWPdNS9_;)Qa>Sdl!>Qj zdB^@W)nAPEpWX`@rh8$H-l)sN!$!juIa0p}1PZ3vwwA+p(BzgQ5xVCM4Tb zVVUc4{z!05G}_j7`^oE%xgCC3kny6{Qp7f4eF=V1!TT~;uE_|X0&PIE|j-V z&l~N}xWuTh^gQfhFT$&uyyt)lWh#O~px(3YlDC2bOcDZC4A_whBPCv5!{RcT{Q>;NX4*snA~#{{ zY^2qA0K0{xEW{d@s?<<-sa%^@Xmp1al(eGgYBn*Wv7)#r1y)8TV5Jiziw7$w@n#ZM zxbFgXf*I}VyHu?&nC8kYW|S#@$9PiwT60iGDblg;RGjWvrQ=Z*GRIGG&||<^EB>+O zVA;*4Gdpjk3PgZ?#>idgPJ?eu6M5W2;B2tQodpH?u~bJG>;$=oW~4F~69;e1MAm!2)TL=Ib!Phqo_v=DB1 zpI?$c>-$R_dXoSqKLOIxmdQh!+NSdxGIa$Bs<4vq?^{yynX!9v<;}=i=B{K2!g6}H z86Aq;l{I3|+nrhbj9gQhij|^soB3jeX2!ACjBoRG=fJ zXROs2o|4zI_*pUHC2xF>p@LZ34PUl}OC_^1QY6;oFhQml-u)#KY_3TYGrDXqz}LG! z@0@7mI4LI96nmykY!`jr+n9>kmA2$uIn7?~yYU8K&pHg#pzNmlB_Iwr1!uNu=@gs* zkZL_DsYmspQ*d6xfMp6!F*=ip@kZoHT$8F(rQXOy96KvVe71}?RUgosoDeGm@8ST# zOn_)KT!t*1A920#bL(3vqd~14)@_mk*|4%vPEaM+;JWDyS629_a+((FA*;u%e0)Lw zp)zkgM9mb+xS`>hw01{MROA3jk6ZQ+r{OcxE#kG*@fb;msPm%T)dSS zE=-PR{51dilN+UfJ-rPnyh$uUCi1W0U#BesvFyOV-uMAfmdd|wT1Z^B@~<1^^S_RN zJ^irX{cB0~wsQR4zutj=eH?uwfA_ByyZ(RTU(ZVa-MFe zHR%67|9Y+OcmMkTw11tQX8X9i;a@+GmvF+%F8J5}Sv&Br?`iq&|D=EY&>FI&>tCNX zayR|!2N%Gg{@uT}68-CrjlfExf4%J$TuSL*k9qQ^`PWn4M31(A9sdEH?AX5^->?(^ z`cc)#j{NIm*vD+TbGzbSZ+@z^fBiu7f78Ft?YKSvdKpgC{lDv9-#o`vrT?4!>o;)J zuE)P#gyzrluUEgMdQc{}9lv@RSLt6Lo9Xed*F2fvU!U=U@~`LNvhuH+{-ONqmOWbg z*T3iEj0g-5oHkq)7`h7Af`O8EY(#^-IWIm2uFF?8k^AM0G!GQNTGbT5OvHIk- zW0{n*Q7ybL5}zS4h1n2x_JpkBHQtPsu<|oJen#(P5{|6Ohsy{CIftHU0AwNsA5_bx z_X9@pkxt7QB_lF89G3Be@qB2M&cvxQUSuXk^p7eN=kxHh$JJd5$nE@5!#EnFp;4{4iBumSIEP4mo_Oqi;)vs+X)3ubF0 z9^n)rspSo1Q8B4yBa&K%qYRjLT97Nn946r3PHNH9!j)s4+#;t%CbwWFNM_XE5~r3;mS$4otwYyAUIixHW5Ip~u0&j=%HoaYgN#noNJ zeOL@oX?c~bBqj5z`e2>kbB#%G_Im}TM#ED1E;`Lar!q+mIZ`sSPj;d6`N*n-P6N9R zC4q2u#=lH*7(uOIPcmuHff*oGtV3-WcFj<_`ly^^H3Fv;U_uI?%pWY)-{A@l2|xArHDJ+q$&{r@J`am!W%h z%{~L%Ub_uFZ|cxi?rv2b;v7WP=M(7DykHHW`BDlnFb?Vpy(7+F34}!_YzagM$@Ibb zcrO?$Igr3iM|sMbMnf?&2g3(*!SH1QiEBt3e4;%UWJt&=a}WW0WZ7LlJ-oNt=*w-Z zPnY4OnYpFU)=Zdz?qvCAP;{(D_AepF`Ilhcqv$g}&*5JnRZMwWjm$a%Z0xKjm(LWFU|CzolDD0D z@7zbul*-$nXW}=b{$`YeFP~YC&Eb(xQJ0aAgYDy;CGX?#9KDhDD!f1t=L{qntQQ}) zY)w(W5%K}K4)|YHW_fJZ3XUIxE@D1vbc@ zCzTcRM{&rvA>`jM76%UvDF{VAjPGO1KUurg|4w*Mqal5BMj*5Li%|ZD)#p(*7nx0i zvM>Tbc6p{+>7pd%5M4StyBR*_$UEPKPS{hJT)sCFyA*WV2pf zX6sHzQ+)Omh8XLzKagan-3ige{wpJE^XEbORB(xZ4W6xUj4UxsFwMm5H1uA9dN9CG zNvwm!5qpyxzRNFIii&x{W<7Duv-rXVG#ns!_!JKBCUm0!Ge|?)0A*SHF~*o%)(d~f zM`h8H$d3@mQfX0cK~!7_$qhV>p*g_k^TccYF`c?w*{6PUt$gz|)^H69Gk;lmWJxf8 zMaaL*n7kUdQ2&)&)U3vd+}>Lbfpm)w!fG}Ia%BGX8vt_}Bqm_IO~P!ZpNylTmTz8& zMbh=4sT9j3W5jf0e8s3&ZOk znS_XZ!BGCnp7SZRP2L$l1*#guG;8`H`B2vOX-M~+eqI9@AsL|~(!y5}PnF;oV{VqH zS^{1>PuVe>2X$)`9?s%KAyh~rL*4WO?hdr+5o?cC$T+CRm`c!vDQzu2_TY#TD(t%*gARw;e3ndt64lDCEvimYf7^jO1&_yH;Tc)}v=LgKaQLYA#LZ2+H={$*} zgjkof$c&vVkjM=(88c-KXM#GYc*-JEpIRdJBT0gJly4s9 z+{(fdtt0=8xg&a#b}~piAZifLlp{E-3s!_KD8meF1?!7LA-t@oux2}rP*jFu#aJib zWY*62iT1qpp6Zf(EKAXE5;M5|`2;ST%nR8ha_O(}xFC&pRd?dV{{g*67B>}V0&;+k zngeZbT7j@{q@65-Y&Ml;@eclG^Y7?LSjnC6k^Wn(|C;)5h5lQ~zfEPM z_-An$N=|I}cN-w>mKA6NM&^9v9GDKtdrYpi28+J79>6?SSf(?+5IJ8ak8c&DIHo92 zj6qjm{>v@`y1sqKykM0$7DOr48?wx|icfIXnXKEyM)$`!SxR(RpJNr87u$L-%3~oS zD^PLpiwxi**7bG#5p9N0#xLYN<6(3miz&f)?WarWC%r9sO~fFVF_^Z^%ubBJwS zS2j~T@Cb1~Pwa)O%5BZMPr0ooUa}1$+Z@vV+Dv?Tcl6VQDtsi?aqLG*Kh53q|9AZq zdIVFKq@T=rzodS8=W%@DSJF>M9!CmNw7dKIsaTEk7t>E^58JqO_0#u=elmy4qo3CM zer5f%1moJie)<%wxC{Cz{ka|Kr`w;wuzo%L^vI*cnl56cB*`TGbOEmIhJL!R zaYy>;#($u*)cWaC-fFF%x}ZO=eyRh4TkEHLxltrZKkbErdH)Ul)a#RE{ZzB>?&+sS zjw!W%x*bI6>Zd_4njQUg&HbFLB>i-e_oAzxhM-6?^iyB_5$DTrN(%jSwIr@Y{d5to zQ9r%+l}A6-5ZjJ^YBQaNCRi&TC+@V|dBYPqKdYF2+w#`}{5_uw9Oy^i2^z ziSNk{nz7YU21I`K_=yd340gxQj-Mbxx%=^xt(o?Sz44RIKRM`D-uTH= zPW)Fyxus-u*P(N!_S-IijD+~4yqH&xH*rr4u2y$url&y z{vzaXPkj|Hz^F1mHEXZUhVxsbvBHi@V%HrZ;~1ODFJR?=CyoJ{6n(SO(gt(quNL=6 zPPi6_>c|krz-;~)V@3zcScVA{hJPo{V5@5>qic42%}y1&m-Ippq29fb;D}FoKcSWdvgnJWE90 zjRAXhV2&3@b|ADkC}?o3%Sm<&BZPQs>0yLtBF)4KjL%}lXVM7b7(xG+X6%SH-)E$8 z$K!khGP6=gF5nL1(Cj4=F@c)?xd>zY4KHEObVe>r?)o&-Ct8|ioKeRyCJ-(=jl4W9y0fCfr(M+Wof z5j8nR-NA$aGn*qnE|agtx1dY={m6I03%*26Tql?z>|lmE6vuuJ!HmL2gfEcv4=%K0 z7)>&UYa#)^1~4I(JAkp}sZ;S$n~1zoUgMTa;cgQbIM^FCKJPVPxZp?&H=Y4{Wt;<) zVSQ@HD@IAs8MHveqK)VV!DX?;C+7htb@pO>q7DQBUYc?^zkI>xp$i5w`V@?HxlCA{ z@%*3B8K1|eF&CVMQ}KrNciBw|p_O=FCiVy3tq+`d!7PqTjJO$05m}HB=h*NH?Z|ZO zYA~Ayf)UY2)4**0T|6)+t!ZE{eF-cfZx!gjMfz{C{%h*L75Z-_|27RA#XpM&BK3dP zM>Hg-u0R`F2m((W-+{|wXQx?>2y`fV1FKqvfI4)+BDFPMT*-l40o*EjMhuF0A1``C zTUh7X?Ac$`(RYKQ~w!p~z0rH2+sGC#@ZX{&9T*kal(xtLA6_IdpGa{uZ>Z?+x!=UWO z$%qp1EftyK?%O#v^F%tXDl>CWl&z(08o={ETc5pqI)U$a`)Z}nUf%Nmvp&18T`PU| zQcu#tFQm`Tg>C*z>$ByDl3En8?zTRgi_!g(`V1$V02oM`WPMhhvlD&x&3}FkeKrI_ zYWw=^SxAaq&}SBe-_G^fFo^nJOP?LK2hpm+AHS(SdkqqBxAj>N@~xFVn*oB@jy~(g z=UeNu8}LR7eKwdXHd&wDSWlsusLzg?_21HGGH~zJXBW5K1%37a2a-acor%fco<18Q zJtI5fze&8`9?!PYXLot570aW~YP{E7eOCAtRYKP;_#=*htGIoA#`A6LxS6ZZW=Sc! zUfjQ4>9Zgw!_jBUp}nZjj>c7`&-_^Sr9S&Jo=3gI&+^nFlYeCxtO>a`W z1~E*Wi8W21FBW+#@;1t#N0y5yu^q#~PW9`;SkNcJJnwm zu4*cVG(*3UY#eM?nH`D{fAW+uWoM0!jLD9#afc8%O?@%X)J1^I{MSqzM!6EE%2u&A z2_Ui{6f^OS7GF4kN;K8Eg^jks80iPE`DlD)31>-WJJ{#NMQ}pYMwnsZ)I(@;%!@CT zb{vi!%*Y)b8JHcPC4q3hFB4c+n^=5r%W4#tU>TnX_&`HaN6iyi>_Bo7A?XE3^a5Sv zL_pFb5fa+VA;PhSa4gGJa4h%2QI;K_1M}#}_27k5{(?imb`_p)=!gC+cuv>>Joh#O zo_W&%4;Cc-OEcW_?zrrZIYoc~Ys2Av;OkdsAhRURiXV&=mV@9=v>6@ooCmnw=jZI^ z^U>XW{;br`lRv=@C^@mw^jC;0kuL=HcIg?%8RWwWftfrPxukbnMF0l8uN>a3Gv8KWfc>-;{sXWAp=`XgB2 z3OVo7K;)h80+CPjwa?z;03CT*A?4+&tM>+}2s4(!^Zg(olly-cULutb9YUu{Mz9Gh=~lE!90g*&X@u@kJhfYzkzN1|1!MHs!C= zhJ;dApco*bPOUQDl8af&N+#S)`F3hX5=;0 zj?Ofrdxm`T5X}TQ;QXubLl+^*|6NnCx29zjAEIjCJT_`j?x=fVE~Uw14+d zERYkteoGoKGIprxUp@BZ!1c{7FoS0CQYe3(xzaLy=wN|q3|b>!iFdH$NU_kK-Nn7v z(wL~sw6&Tf0TmCZUwU=3c>gAvG96z+v{u{z2YT8xn-?Kr#t6_T0j&MPSHJ4&t{|c@ zl2p&};5V6`Zbop%rB}}@8V&lqROFkQk=5uQtd71B4#>#0Sr(k&&Y$W(%U1dZeK+vS6P_#{H)WoHwS7!$7YZ0WTfqYZ(i$+o%-%U#%-%|)CdB!K7 z_0BK=h1!iuZnq}kVed`+R`|tJ0cFKS-ZJ|X63JLVSh-D7n%6!)bdCZEpksFUJt8<*le2l-w7*u-_c}nJLIa)(ZG>dSPsNh} zi+5>4O0qK}W5no4moYY3D;1^s3g#~oH+Z@W`WAutWslWQLxl~83fm_>1NuzTA3!#4 zVa>&OEu}sXFW#7a zi-le-rCt>ub#FC{@f^l@XBf!HP3F%@55@nX<&N=UCxYH+6RgMHAb^z$KupWxpnr`q zxt<8mM|HL3L1WNbniyv~V1Lm1c+K@91o4N&WKdq0F={gGAz(6&;$(=PJ05~ z!@D|&Fm9}C|F@((+~ZAP_|!aNI27FrMQbuck!9BXj7PiUQJ5}?EG~(lO5m#SrLI8* zJIah+0}|T;**xx#rVm58hL!jj9oHv?t{2zCISod;z==aTVywdeZBrd9`FM2X@PK1i zLD>w@G<6LoBjXy)i;kgH40QQ`W<=#Ot==&J)tGFNDS;iBtli}@S7ByI zwnqb7q>p`r(GIzi^)9nnuRuc749S**Z4$~3q+UnWDbNEKd|>YT7mOVSYd_pWzFWnv zI+JhX`;p)~*y}O0H#DlxAga%ZKWzIu9=p=>9SVW&>iA8dOx{s<;# z38KiNI~;qPJ7|v+TSaEHJL$>aEu0@6w#AGM21N|Sp;qJj(xxGNj^RZTDr7BJMFd6i zjBz)=9Sf9wVf2X3tacMw5ZC^sTy8n(D!2g)-H+oJWoszfDHuH!(jTV(ieP?YxqnHy zF=!s@1dr>86%^R_3-hdlv0?zTi843VwPls$lMhg~TJ%1|J01_eY*PGU`^Qks{E^n4J)@<=ODt9fDSu;Kp_-a4IK-BJ*p!gy6>If%58ML!o5S0RZdAG z@mGYF%;>(bc)E{{6oFr9)=HAZ3FUyIj=1Wfp>V(H$`da_UI+OipaA7n5_z?hD)}|D zPXO)%jf9}TaomXV2y%h9a-zHQ!$g>wetZgil|*vOY(esshDUj4HDE!=jUzo50q46Y zWiQ6UUsN!X|0O?@jU!l>qec}!;;2a(7T}?du!dz9QV(PH5-`g5waD+#CXZ&A&7p=6*ww$lm|TLZaFoW;Lpqs5*3$DFjG4k(m8&}tyP-IExQNsV z9mYuR?xiHd2C;7!$||8psAYp3w~nL0PfWNw4gI2bd?VDSr+5YH5y5CVmW4OtT=4xN zs(PBfO`%wa6N3Jw;|`GDI)R_Ro5v+S4y45YV%y*TWmoo=4_t`{jJmO)20R2kBCf}C z)@Za&$;@s$`Hs^$7DAFg3a4@I$g@gU*=%v6tc-49J%?e!Y2Uf$E5Xibt}46ul> zO2F>CMEOu2%?@#ir#w24CL%}=%gg2dl@JokU@4C4SRTt52ps2Gd*dxqW~}Q!(Yurt z9cSZgX3^IEjuLk8E{a8|@#0c4e%BHtb>!eRQuD|!CD#lhlfO{3YnVXXY zu9lw&i6r_Hw$q#B9gLo)v`m6Ou~x1g*d}NS`KVQrOQVGPSQ2N?R`C~D%Lo}sWL%Ga zr-kz8V_331j}kf7@pBHO>m)r8;x{-e!8R=hTPz!QB0rMfs(%>g{DiW6tseMiD6jCMIG`y0qP45?8mCekz<>YhxBeU&`M}j(@?&NC?T=x?Q=3aNYLC zClOb$-%s|Ju9G2f8@cLPO=|K_DtIb)1P}5t@)(qZnCP<)6*~l?O83dLh9Z{Z?Hs>t z>4RMwkY8|&R>SnfUMw^JeNkjUiuE}l7i=N-$d%;gV1XUIL8#GpN<(*mxJboiRmaQ+ z+3xpWZ>3JAkr)UkfwZ1!eV_bL9^Eq-rE~`X-si<6N=5+SG0JxM{h=xP-x0hArFb6j z0GLeECxfIKBtVE!5YIr11rhH+l}dj_FGD=>OX_$G4C9ZimN3!SH`veZP47@x?xpu2j?!9M)|a2>*G6J~;n&d{GmC zRA3;0<>G{n)M0Be`7qoh?g&dYWRYZ$XcNbuU;71VjD{%})VH<)H0fDmv=g3WYil1r7#121hFw@9j%N+?F ziEW(Aj2oAulVB`_?VoS}gZ|g993ISH99;Qh(6>35|Gol10V8ID4`_ly|NYtYZB;-p zSBtRS5R3@%bO&f4Ztj}~)zglur;6%`>j&5&+ZRbA5L!5TLzI6)HHZMO9wIkAoWaF{fAFRw;bPT=vkS*IDVpx$wjwxMAyOC5Fy53bBfg>Gg;CU@K%ZZYzY#< zWE|gGkGl$_J>oM#8U;&08h2gIk^``?yY@sASNChe)$_Z{r9AeGEH}|P&YeB$#dnL` zWM$A(GQWy-uyP%4(D9^Tv|9*yQk9|TV3@iH2SIsqjfa7iHJ}FgyUWJy3p-*MOh}Sm zg(P6>7WAcpEA@*BSl8%)Y zG1h2%tlK1bBm0|?qZQ9Am?rZDCvL)1@dnPn^gEhH!|!-U3Q)oiS|C|69?r9vq2~-8 z4I|JelQ3(SKvj0_FR{>ZJOajILAJy~DUHo-zVLo@xmj+vB+@}U%JZwgS}+Z5&*}~M z-+O+H{un`dmnEK@qSiX2D{|AIx$90m5%$PcZWUkg*xHr8o z1CT{P0|=KZXh`Y9JXT?K@$>MZA>SuMVqLBQS53rn-w)u_*YGx`7;hetCL(*X^3J|C z>QtuO&GLyO3mZ``R{EVdY6a=9krHIcD%AsH-Qj8AQ-6=Ei5EZ!oWvB~zN%-7My9qu zL(zP~^k}(%Uig8K@Abj4(BADrP*`G(1$}Us&SM@Xc)2mrIh*W~9U~8C7^C5#;Xwi3|JXz2VYA4pEL|SoB zJ?n*k1Mr~1Ly#~LLJ1#bM`StKCbAMjcmT{lk?wiR^NJczWVu9+xc7qH#SGs^I%}H{ zGVj2hjQ=BcUcYqwz8h=XU`~m}g0tNE8K#amz_t?8Keh*gC-j6#c;MNG7?EBcRMC0W zIYaV|(l*m{hpo|x*G0u#fzT*)cB&E5UePVETQH_x8S;yL;fY>vKdALn!s}6 zs`WN7=s`s-{yASt!2Ed-Ct(!2XSaI1ozROZJ6jUUZ$w{^((_=fgothQd?2*1?3prv z-FI=i$5?}09_l(wb-%0;-FMa9+v^Lv)W6KU)Zou(P5__%e+{@Hz%OC{FLc&ALE?jy zfgq(E!(MO{1LEHwcwYCQPs3x=$Hen~3Vpyz#(KrdlE{2af$`!hG5P)Ne2wNbS3<#AUzXoRU=JeUG=3&X%c5kNESPg6cdtz0ZC$-L@P*Ox51*> zARbOvaJ*{!LmD3BNzBIFwd367kMZd9-GuMu4~eOt4qw|H!#DaBz!yPH3WsDgza_|9 z^W5E~8mBv(9}@c8f;}TYRetYO-VXC6%iE>zy41Ss^7gNuw>%O_;m78uBX@fwTK@bb zd0XI>K^nypp52$X|MrR-ceb4M(VffNbT59CydChe6j-z7fT%KzpC@l0T4zt1BX2)^ zNp^oGyMK6ZuRO$QF1sSnz4Eri>0hb~%G+Ai|F+razciu$*7COc9UHuq`pTw{y+`gY zrQ7tCAaD0uyPdD?qP!g^wZqSmw=e&=jd97JEpI=Un&YR-vtu^p~~ zcT?V$|4jI9|3TqtJMe9u1^Bvo;gjA0d@;K$(jK1m8*9=To{^{_?eO`bt)Ktp*8{)$ zZW|oss#kmwp!m(`3>%>6v8#460qqN)MRtpjwh>i9XNh^ zwJNe2OHS`u60NxT!XY z-OG3ueP}ly;>v9)@ejh~tJXU3x~C5p6V^&TV(U*p4Ae-6?X6S}8y%Guh|Svx5Xk#$ z?XhX3G8@lEi?;q4vtW9H%u=XCP6CowkkIiq{6N!(b+&iJRSUTV_>L9Qr`sexdYjF^ zs^(hpCY#Y4*YIxiukugi4*oG3{@N^Gsa35T*_v_(|HZBKY}Bg8jk0kE|3&@V%qg|% zS1HWq;rRccOqiBjN<7;JU1H6%eie$Hmn|({tjocVYf4X}ud?23s@;e_`QPYB?H2q& zj@#LtRWf~TW1fjDFqD?c#B*sr`52tmftmDtn`&9ekpJN)3tGybQRHki)n?mGq;DV` zbKfLS?)-xfx9tu)1*otf`DCaR39}Tw{dVI&^90R&XLqa$}l;zF>r@x(t;#ejG>|QdGh>r!Ufj zFI<%{b}z~N?lo>D~8UC^|}D-)^~YA>F1C zuW&H8D{i;MCn$;*#O`uM-t{tu19}bOAUIy)e`chfKjB{0ET=tw>P$Qo`#Hn?``nk?zV%UGNuGwOq2NSLsfz9-oxxIVnenRcwxqu?0FzHt%ln9Z?EoAA0}~5x0Bs|{d@j^B{h#|xLTs7<+xmym zfTXz~sC2Uw^VpEafonoae;oWTgR&k#|0Qql08lW|&cK}cvQe2%s~G@Vi^AO(bCNS|o4K=LCcRA8hPu27~BUJtlEeT-t8X6-z?n-6e+ zQBpV790*d+9Lt4ckSi8lqXQt9GVpr zlH3&K*z1jXX0pQL2)zpLhL=h6j>7wT1)Gk-`-sh7LE#0l9+(+KDFX~+P^N9hu*{|n z|1k6V&!&Kt5Q&o@uSQ~V?zQAn)+5G#^=s3@lV}E@qT+RU4q##x!UsBEVMcGIAV+B4 zsFQ*1XbpK6`9-r30!6aI$lOt^;D7>jvWx>ZLbCJgSoF4n;q?mM#VlY;HOlwN&as$* z=_tv~L3xK!SV*}Jp&NLk&8S34DDAqqb}nGZx4!);IpW`|NG#rm#8L3g&Du|4n9Zv` zNW3u=t34RRY^quE0$vnDapIpi8Ah{sA=T{y-hT2F#KyxI4HSa77Y$1Kx1N+`aKu#I zUW~RPGTOh}!{@UH|Hk;t+GTv+zOofQH^7&5@mV({1wLC|1;Vyrbyr-J>UJ}4p9MyC z@Hqqx;`7EQ6h2SX?XhU@9G|0l{l@sL*kyc{g1wXI^VYMx_&laO1wNno7ZCQu2;j48 zs@v0eyFDn^!RL=aJMnqk;|iZ&==Py#?;M|5J%3|-R_-!B|MOZad=5C%i_eb+r@-gA z%Ym>nhXbFBQr#}*?K!}-gU_eYAU;2SRN?bp-F^%0o#V6dpx+puT!`K^`S~zdGl@RG zf^+Ti`)wzuz^Abc2;1v4;Ilf_?Tt%u`_hmHpXZ=KeBSYh!sig(z7g%6<8w@p-x!~H zyNu7_V9g|aJ^;Ds;h^Tr-XE0f(C6N05T9iaD}4TlX^{Mn z_RjH{bKq}`&+J{sXIrpl5oolV8Q=4wLf!q8J`z{HIwl9&tYDCo>rOypRXeZCYC`* zi(^yWewMfUfN~xB?12XHIpThW&%JfK4DFrcv!L5=jL)K7#%EU#~;pTP;P-JM;_Ceftm?LY2luw#@zCOa;^O<^eZE_Dm}^?h*yv=%COax zhp^-;_XBi2@bT|j0<*A506t!E0d};6=g(#fkF~5o$?qlce~NApU#PqIDCZXe zES;OC-F!xL;IsC{#tiW#%4K1~`=(XrAx~gpI^Kf&jngM2k-l{c? zK4-Df@Hrz6!RQPgTMy96vdn&E*+wmQMFmkGDAQ;_FyIvIs(*Xp!~R9p$H(up_Z4uj zeFV>A?_%xbR*!EpVpqa9^$VlU2hVm2BU}jTE5f92m}UjzB>TqWTsW8*DlLQa;$HbQ5f%#bl#Zm(By#>nW%V=?`)lLp6vclfGB>S zdQRb|x@a~(5WjDl4T$%>*C*!7_tNnm!Rq6H6+T41XI+dtsz3SQq#yBtH`V@Ega_8m zM$&njH9)`4X~8x!IWb0EKCW69;{}NsV8wcl4JR-#=cE*be;neIq7ceo+>`3|e!P8a z0Q^(mV%)MBd2QA=GL>_oxDHpz0WG@=zgY`?iVM}ePg^q^n_ppy{n8p9QL8YSc>eq z?TJ*bXrIBKbnHx4w0?}9!)!_AN%V2qJf--Yw0TXpn(l%1RCNCc2horgneX3HeFAAc zZ3?J%U>?X85b(B^=v&M+FXjE4Cre^^J7Frx$W%zgt4uAFD;dOB60kLuah z$qv2P^hUz34$6`Ex~;0+kb%mARskNf`OKzgqhSRfy(hj}(O2Siqn=&IU$o(rS(7d? z{pk-Wh{<{h)bbGwCNVVC?Pa`O3No{917R}CRD=d;Xw2Uf4dvQM*Dy%^T$gO0rIBUSJq9WzVKGJ?y*XWpZaw_NN+_}= zX$G=NussK1b{SgK*t7G&z~#V0Aks*pdK(2_Gad3{*XdXrjjU}yEJqwXHywqKF`O3m zrhCz73ilOV`a#-6)1C08iA9HLvw?>87%BLNJ*QRAl`I;6Sp540&*SPN;ygY+l6Dgi z_6G1u1a-JmA#9;;e}6|J!W6#DMEcVBI*IsNhkd$`6DOsGuiGB3+DlX|G)YwwAE?FC zQVo^Z8FAjj&Ga)xbQo4i*48d-BMv~693kt&9TEv2F0xY$=C)ZFi~*oE|4Pio|0X{3 zw;p&EpS^$FTgM?>YUNJB@zTi*+gV;CC z#OUf_pNWk{DQ;iN+aCji*0q{f)}lcS>~p)qz*61zp*?Mv*YBTyC}BAx7oYJgXLM!r zS6I$KDF7^F>}dU7&Yn%LimxS|9*vzoicU{Urc;#9DwcFv0J;qKm)rLgu_`MeY>L~D zZ%tPFya>$Rj49#12StC2Q_!?em|#3f(~pYs6#Xo1KtBtM6?yhYf1I4~U)AIsuG<%) zO+hBt(?;=h#R`D@wQ>3Mu>P_E5AFq&x8=S44>% zjTo$pmY~LuZ@os(Y)PpJ=-Cg3lR}R_89ne)Bsvt90e65R@0mr7m%gZw`@R?9%;^0)b@8#`oprQCQ;>Ex(;$_fZ6kb|@OSX?k zTjNDZvr1cjbB8d*9#$q-YxyQAMRdi^XN7@M$sJhD_q`+OL!fV$y7 zW#r;-5%#j=>V-yi;(|7{dx(l-S~JnVp2vuqpu@ybDegYayZIPZ{ArH&AU(d*r>XH8 zx;+SOXS`}dgPeVPhzaa58|=nGdu-kPFqas8-?VT(=Z!gF<-X=%bP5@P)%8$u9eUp% z$h>MlvsSFhM6zkVb z+{PciNk8QwS>pw96jWhF+pUliEa7ZoWC;UUm7%qE;Vbn`i!X&ykq*7nZ6}v zWJFew?8wSTH_pR#qX8Ai7EEez?2nNDYoopechI*{HxWO|BbVi7Mt(47;y3@RiPzG; zlnM^8O~U)(GkCIZ{S@47J*j7cXRWpNxJexn1Qx-&L>As8Q2rHTj|D7p&{ht*we2Bv z9DdUMn0z(fI;yQ6g+{JH@__Y1H$b9R1 zbiwboEsunAGf^AVsPBeL5-yiGZ|$3cI6FQA>dSNdn z^R}oW&X8``p-mo5+P_!@Sq<|O3M@d|B+!~j&n4H6z{X*O4oIZo+;fZTHdlk0DW9rb zB9)tj;U^?sv*O4QUM4;@rlmXOI!*o|Zc_ zgrtyS9vEE2L=j|zAV)+DUV+SNd>_?oO$y@B z-%L*SbAYJ+SiCFI?)~t*uydYkuy&qLjn$bf9&w@At}M&?59p5c?mp*VHufy!Oo1zh zfDf0AJ;G@4$uC&Nk`FL##{dq`_atj6CIy|e!|v{u3RAt(5wAFxtanM|`T-eftb0}7 z$8=!wSu4ePzrs2T4`b*?J#7-}K>QBC9{rzfROqDPgb|v9O#x+ z-D`0>pZf%?>>6~OrqlQMMEC_WI!jt6(LspC3_=`vs(j*chSBM3qmX#rKjo$21x7>T z=8OS3;oc^nj-H;4c<@#EN@?Q)8Zwd*b)Kw7)t+=~5N1Hh$vv<|U#oEGIjLv@jp=1= ztRv-PC4^5sCtdr=arB|v@QCC_OW#^EDgop+aq-eALJjX_gf2h-l3>mH&< z@75OM-yg?Z-VU8E(!6(J<1r?39q)b%8jw4dIn$q_!I|!Lqnhb=bh{JU^cU>?iZE$+ zeSS+-P0F3lZ~0Td&#$ICHNW@3WOwKH#Jtw?JNr@0;0sWTBFB4I&+k3FyB{Xrncuz8 z;QS7#Q}eqmU$u`y8}s`stT$!f$EP{SGT&X_V4o}HAad~tCwEg99leUJS zYHPoNqAQ2y#!6Qy>Jn6NscX`C)*-m8?BmFq5}v7MiSw60(WCB1-Qyf6b_wUljr#xL zZ{PdD^pVVFErnIPCWuVY%#eSJQTrHfLhR{Y4SCXl{ z1@lpJ33XbAu3>$xNjFSshxJ3GCZ7XM2)O0Cne1AASDLV;S@OcW>RWOsX5@V$p$3;= zHLOA5Y?e8=wP_nyBcbvpWTOO(RSL1@+OJ%vW#?P z)>ZQD)Z=}7VprNYr+etc8jA5q#bEHo$Px)VyPnz)7aVezmyP<4_>x-qOUEwh8qT))V+A z{&IW{HOsU^l%!cQNlBg>-JXfI&G34?L5HI}0SOeQazavvf!UHm5_PEQr9u)%lC@fg zBu;Wd5(k`6*;1VpmyjzsN`L!|hSfSM@u80idQU zj4)A?>h^c{>V)yQEwSYw~^FCT+_3)4%<8(NZ16$Bu0Ag zY8|$QcZY%OtU`^VGBk*yi4zoxj??Wwp>0!=`kS~v4M6}@W{~^S4*rX~KaFGKf1}l= zFzlK5A%L9`a{E^vh6+0nn@pPI<~2SiM-PX%DdoN_wLi_-uBP^<-4-Ru%Ds35{16Pu z-JiCFo#H<;VSgH-()-iw9ceaz${_aaLhHIxA_QhChBz=w{AU_T)DmZ3mxK^|y(T9V z`y;WT_n~#g^W3e+ZL0Q1Vr{=IcCpY@Yh%fah}0PHY}O<4?Cm(yG3aU1RM(I%#8#HG zRuFP~TUnOqCm~-i9=ujU?t%9_!b{{;-9ljHt}YkW!M`l5-`tl3EBApt^LiqdZvi00 z^0(JGSa$0BpqTTiSb9P16NOW-eS+0Jy0mvTdciB;MlZyqKrSI4c7bgZVx9O6Bx2ly&B{1Kia$>rMKlNOjV zdgWfC_Sl3p3Z#?xXmMK2Ho4yaW9|HQaTwk9cBE2}2H%$5=#Y_U{5$l*9B4;zXsX-y z^Y#G;LTy~8)rNrv1<0UrN^P_ppxVcyt+8zFzbs)txOLX@#P;3)N^GxtHL<<_>j`bz zGb#2rjU&cad?7JD4w-N?4mmz7l#RzvkXoueV|U?>+9~F29NX@mF-8FkIJx6@xO=Qb zZXC;oZGBxN9l^oza8=~|dAE-tUXe6)4}%>zb?#H*tHa2w_JrNmErls${0%d*7j(6# zPIY_ZUATQIrcznLFon)RgA;Z~wVJRYx_u+sYQn7VUQ58Y)o(>&``VQW?H$cW@#oHb z+`CKj@y4$@ADoRpq}8;vOy~_iWEOwHnHWDh(jIeEn23F6ec}%-lhV>A`tia{{!%Zb zqZZ)nNi+B%xFfL-=~s@9q{pX=L*e4ObGc-{6mvQ7PE6K`u-3%mscz@;_I;RTj=~zO z8E`5ta6T7brRH;@Za1K<=X3wW`LfPhl`wzS-K!JYwtY|#id}~4u#tbUD)}-hD z2#+8KS+Q#935#*ag9{W~b;^`%vo^pqI#jJSqgiG;jv9z8*j(H#C!8bFkjq)u2v;E* zrS|2*W_xKS%e;qDCAxHiiWBd~Q55taWMbW89-K>q*e5On3&f|n{-g}iqf@G0{Ya3H zJOEFCqj(CVAjWRH5?jq3?mBMY6f^SN?Lhfc2Vq9`OLhBJ-tL$U?%G?=Mj9INztiQ| zj46!E39$D^!)|%aOdo?pF6dXFbd!q8z9Zt-Q!hGdawK~7a{$>Uea+}!I6TU5 zSXB_|GUtRVK6!yzNWBBLJt-%s9#73%ELYiUaMvrh<+wA%r+3)n=40--H*`)h?z8`j zfmK3niUp}|pUB&@x?8k~>Gs=b>j69CO&VyQkQylKmvWdWs~QAG zBCD7>!g0E(BPbJT4|2537xyk9Wr)4DGrl&d1~B1P3}8IW0P$g`6vIDkmJUS-VsAC0TrzhMZDQo z)jh;vfE}*4N^{fMix0xT75744iak@@t>@h|4ooJBYzA&Pup==LPUOeB-NPN2J%3Jo zxX6~c*oB}(E>Au<00A|R)Kyy%yyl}6pre@KSCU%l-h_HT?X?riR-UrPpvg+ls#rd_l@)x|@)wFoSVsZu(bKqCwq+ZF za!xX=e6ad$wF<^+6MCl9pP&A{`JjFEy(vH8d#I3Zt5cLRvNh_{NJQTL+_s14;s8_} zZU}nts>P!KPy9W5JgNI1@-zBh1(tC8he<$>7rwjFFZACTAp_+uuHMT5lx#=MXeZ=y zC6bdx{*n`5=O;+Gt3okk1XA*8mf0jeLo62jQUMWJ$~LVJ7~M*z#$)#XJlMK3f4wOrWF-v_<4o9&ropfvWYTX;2$E zA)f6Q&doze9UnH+cw$iEGQ3YL26>Y^E1gMHGngwrL$)GjaDR_YWJtu&CNk<`1VoDG zDs|?hF1C&u7jwAUT8`*+9TRQ>HIuMkDL-J$9ePG&$&}h=Tq7KdW!WiUU*f>pAEt`5 zOR+8@R$Re#q&-l2aCG>)mRUJ?1##Yjnf!qaneeRH@=|1Lpk)QOE$)z%jAM5;Fq;TzNU zhJ1K|;dF?AzoHSJ&tDP#nyI-oHGOC!c9VEjtz(fqh*~vMV?Z7shoVnAEufYPSVNSqd_M(q}Vsrjtw2P;_!0f7x_m3w4`b zXl0CH&haQIQ=ouH8+kZ40Ec*N64;|)3l)}`QB>1Ps0=67*g|Cnp8I)119=#Csa%!qKUgaAmD9L(W(@Q@z6ulJk z*AD1qVa>YUB$hEC77)rhB&m~FE>SCIV<2Mg+CH(2@)FA{+b5P$&_L@hQ*KIy)r75~wuo3|iwc3mG~7+!sJ24sLWf^_o?M2C0+|G0D$YL|j;n(9FX^9_e? zCS$RWa^{NjK{wq~y>UC=$O1)KGc?_#qoL?#>mDAuvE@smz2cZFfB26hS?rLdR@Gi} zWtf*(m{|4mB#W|EvbQT&vZriMuAKPX4#|UZrL{8pIrP!pOCLEG+w{=@3A5|;kz}v< z!ShP4+yXa3+=PEz`Zzoz1${hPi`jmlqeCATf1~JQ=qS*~w)7NlRP&9EZ9Q`3Lo^h9 ztmQ9TuIz+94*dEzqmP{J(#IAMe`>wc1L?>+FjjtL`bfLTrjI)yNq#bYbi?ozeOv)o zRa}C9T>9wHCdF(|Mhs8f(B7esL0>8Q=z9+6;~ig$H-__#6`&kP?<_z=(Z?+Q+A)2& z{?7MmmFYL}ck;GNA#Z{FQ&Y(IPwkLGepP>``Fxu`#zK<(Wct{81L#BgJ44}lh?DV; zOCO)LAYli7SHc#_izi{W&)?IbkHau&)Gx+J(8uglZyd`vo(1JN{?3DFDEjytf9)!L zysOs4eiQmA*e-oEFzB7qAAa|V-;O>SN7?i-0+Qq>)5qExn?Cx&;}E^^k4qo_`XL2< z44Q!19ssjJ`#F1H(nud)o&oy!d#X3O@{MVr9EUz?(NOepHGetuVV_5r7mA&S^?W;B zCw#e^uG0*)&Hs@6Aw&PMw)ggM6ICL1?P&Uu{Lh=O!WE4sH){tOlx{&~vGHQea!gjw z=4h_Jj+3rxYBza`G0Q8m9P;O2#i8FrNnm z#KQg(Oxyi*&c{J9+D!4mrGyeFY$hD|&&ENlZHELs$xCi)aK$CJX5RNMjsXa{UMIZ^ep8+*<+Bds zpwxf7uM?AGfU`@&X>iH!v*@wU5`fGepI(29we7P%@r?jX+rK?QLBR6FNC{;AnNN(p zL=q2Y5_vu1TlanB_iXBJzj-d+M1GI`nspLhvp?j4H!;5_F~04o&u`byXYKseM7#{N z%A?edlc;tUEgv19fcd-F{Dl`Sm0N*rD_CRm4(XT9=dtd#64%3>^%)#t7v|y-_ruBc znN4ESC(=4ENDCLqurd+^r1ED#5DP1oTBo^9CZvl2ELebZa68GIoA_BOpPBhRgQ*IO zl6>(TvGPHw3b(Udew@MxSFYs3jhz<+S5XJ3oV*|t^cKHceUI^5e9G%D=kxY+TJ_wF zAyFoThk4h>_XWkZvTFV^7CPwWG^n_5H|yIO4NPd zPZ!o;_=eu^orPF}r_F7wlg#{;=JkjvwoIC2;0KUaGn4-q!xNSk8*|^rVxu_bPV6SYf#8uP&XHt27MJwMrl8~|GJAhm@s#n|@wLpSlM*`z zdm^Q{z&R!q#*2`4VSk68DCS{k2XC)ex!hg{j4+&l!>89UyKD9x5|a2b8BYip4H>yp zu$y*{2f6rZe_wr^hj!xJwWZH!=!t*5eck3A-W_BB%2X0q*Nd?cjv_E$b9;l(82T!N%!*lMXfamXUUv>jO zQOJ~^g`XR4+b(`uh5(+u65xS8{hL1{&0#~FC(Yf#VWS+PyUl`W*3sw=>tIGhn<-TF zt?qZ;$^EbYy5sj(C*B8p%jI^Q8f*G1M62`J!RLOIfu#AF$8!`fwJtJTP0#xz+Psoe5jQ139ptYf8EUk-X#iV3NH112&S`)Ra=* zmEbeGC+{eMIYrzeqa6;E8YsqLOgODRE97gINRc89@Ft(bG*WHU)k50yG!R%d7zpgg zB!BlmN8Zb$Qt^eo&2)TM3U{vaC-?t7N=AB=fb*=~qjmS^3H?()weT>oEa(!_`?ZPp zH`WHSaKd*WTXTr#r|c5^bH;HV{%Hziu}6oW(56^VZbQv2F4-qLZ9xeOox}oJr8ug! z^G0}<@&oRACRCf1i4JV|6)oWaLb)-TnIC&{6MkfgIF;IiRTdUdyMcXi;5Rw>2#9hs zHX>X6aT+Kp+D^~*KnYhUl0IN@NxD>TOr4l!G?Zme8JLadsNL-I2_0UdR|38nXZlx; zEx~E9sBWy{i9_$w1+Z`XQ z{%+#*&tNJ>Dl?mkB~WU1wf#o6nAh#i0VXmodcmQ^B;LySOS#O5uzlB*5`Gi$%_ zflxY{zKx1Mp|e}j$r~uQ=%EwmQMG>z^v$$I^aoZ&U)`8PW%C?mz>#)-kfOgV+X$iV zzdE7oq&LAhC3pwZef1t-0@4OD_eyaFaB2P0t1|=kHTWzMkfVK`r%w${(!ZvCWiPa% z|4s?xQbv$XJopPhVWBAQwO+@=o_qYM@QJ5%Sr*96K82ih2+HY+eLFbwcA@73$)7AZ zv7*{=ra-}K_VJ-}R1*Q6ilMT@cDBXl!|qU-z~kxA$=BqL6Id-2ou1>^myPR$?nFCu zq^5_tn8^JDp=>CFa~SJ-7fLpZkMFkWC51fMAwHi%Ek_TXw8AIj3lxa%d2zSioa(%| z49&xQ-sWL?R>*lHt6pi&w$&9TM|z_9U$KhJPO8y}&!cXop-gJqY;-%W9Z3BtI2@20(OXG-;WUF=BB>fyNh@UMm+hKj;bl z1@jk)RbXHC7xcYqcUk=prG9+zXAu0CeqV2tvqSDW>l z!-M2NaTXgkxb+*qacn8JFmW7b>hE$Fp&Sa7q9008JRVIN$9RmR$Q_3~V@LACq#5y- zwSOq>miQ8fq7v#4aOqL%;o^A^&n5PQ8{E!6_2NDuDQ&*{{lb!1||z z^jVZ*R2V-VIJ1!yKAe8U_ctX0TLobAY$8<~#3`4IhIUhY@i(#R4O)$ql4LvPl>mcB zBa0hQd(IP_hpZvjzEL(r31UOA`OkB$9hf<0^crF2Z-K-eced&K!0dMoK_9RM8m_%Y z@_#zoplf333w!4+0)BKd;3=>SxQnM0#v#l*zC~CcbptfN{P~vyB0J+Jo2L~!0Ws1v zaT&_L+L&ySjlekv{Xh1;1U#xDYdf6~3@CO);slj3YSctr5?A8dZ4$f<9gU)h3K|77 zaoiZ_5J1FW63CslH6x;o%ZQ`SFylTbC@zz*BnXNuf(t4EQEw9$+z=Qg|NBdWPniHVC0uh7s8&KcFA1^q<(WZ0kSse0pOf!ayL?+mwB*)kHIm z<2S)9U*u|ml$F?VhICR0ST8k1Vxko#1xreJB7DIr$TrUc>VfE?BGO<*32dE6Mke}$ zZuRn`TbcLR-ExeNujKd;(lrZY#n>Qa!qCv#O`;e2$iK7E;cL?)OFaA&ZnAzH&tLh^d^t6(MO- z{qa&c~#3}#&};^M~gw{sXGSDMgp#^gFMKHVCWn=nAFu@gm>P!|kaKdLDk zmo#24(HCQL19C_#_f87{tu{50+6p7iJMAbuMar`(Z@{w>%w)>DVPc;m9OptsuJ0kc zoavnD^;6?%5ZY*(c&1J?#}#rg$!U%G0uE~e1@vJ5Tw@yGl7%2!ay1X)BlkHlQ1DvS zK?0{Ilf(XoN(`fRM|;}?%C0R~I_3!R{u;i=_6J~Rsj(PEqT`@Qh29by4}-a1h>77T zRGNEJ5zay(jktvX?$Z|)26DFuQ-3K;32*JG_}rL8K*ySZ+Ezn8cHXota zKt_ny%eT0YLH-u`ZsX<$oRr2``jXC4%edwTm(mAm`6&~~N2QYNo@-$2lgZtO#`!~F z{ld%^$o2qkLojy%$2XC`k`g)6E5MGVnjI1H_eGbjiJbUA^jWMVHx53GZB`*tWamWx z0%xM)U)1A$RaR6XD{2K2jR(GTV@&X6Z#t7wg`SLlG{xl)Vrm?HKWlot+w+}$=-#xD zDddU`4D^bt|8jTz!CdU`2M?4xz+VblmYz)l!SW( z!jS5+Lc8h4`Knq62IA{G+66TJeNWeW)`!Zl`Y3w0igg1|{jpPQm9ZYeo85HOXW}cy z|Hd&bz9a%YjYOc(OUvkm8w?~8YtShe(OWs99sV#mqPH0L-5NKdp_jyXKArq7aSeu_ z4}Yf7N4aqfX3#@)JgA3cbn)Q+dzFJDJMN^GM|-shC}$}>;@LV`e1lJ z;md=qNxihpJMCd2-_pW@MLrA`G-EEYg-Qzg8^Z8q*fAEcC%tfp4RfEUP+lE_78LX!2#3>2*L zPF>A*NBW!y>k6~RF_&P97x4TT$o)>%CF?a_0rLmKeX;}4W8ZEgC z6&qQowXI&t0cm%pNSy^cl#7O33WU%Ahm=5DU4|7lXRmPVwK0@#Nq|GjDi~g}5@ZbE z;Mr_6-Lj)yTAzMzQ!&g>@12=YWPwPDVSMl|*4LP=(85>l;^=9Pd#N`K=pAJdw><}z zScJsQhNq4C4mvaAdEDY@BOG_evM`@6B6OVnVSLsm*8@kLDwpPC$D7dxE7QUAV(t+L z_YH=JrRm{$mpz1ATcn(+w&pe0CQ z9S@*G2R7pA7i_`$3q?u60(kMDMxvRbJxIXz1zmF3 zr|SX*8aIU}711Y>0( z2)kQfhViR;z6j?2s1>ZO>Mazt_l^h1=xi)XaaEg^@;0p32DoHZhDAe+MtCN~wHO(X zv-wi$r=dZ}wpe*Ou;D`3#Grn-AKNm8yDxxnWW(Rw?Icq};8bjmTbVC*P$YPKW-#US zpa<&^KYBvH3+QP44&#Z57;}Hee!B3XOz8M*NkLQSiJ<4r!I3^^1S0#KAqo#dVPhgn z2E&K9-68CDF%SFuT8x_U7$xQK?j8`|5eIFKK~wk^yMG*5acZ9A7kMnowGNBFd$irD$(*y*JVK+tzgbdwc!zE%c3{ zH!TZ*f%cNRO(AR?hF@Sj)JCLFH(?cR;gbm)(M{C=&IujZa;!(eo)xyvn~2atnz|Bw z30G=Yg@yrBn2O$wp^I^*abcPh(NkgCRvs3+2CXZ1s=W>+<_#N-2wH_HLECajJ-JT2 z2m{G`A_mfdADd&J4U_oMmkHz=AHLOf%*bx>drV7{gAt9RnTzo7UDv%f{(vnt$(ZAk z4tbZ`=WUq&0W3loK4=1~gu;?&4`$;c(r8&gddDSjy2KmD@4KbOqu`RhoN)ovcb}M` z>`*TO(d?fV?ith@f#qO0U|?R>BZx_1AI*cQ!)r#BgJSR&H$wCbI6;V>C-Z=@7Z4Dw znkVp;hfV^X5S01?SlF3g=3y>n>tEd9=(~hJQNsTcIkAl$wRY>B{1-k<3y(>owE$B@e-qia!P1vO zzJdD=5a`6jp4>-&E6lLU>=wC31Zm$~bRw3BoZM&WU#?beG!T%=5y2@99M~B)T;6NK}h23Eo;0kl{F@= z5B(9s;&LmjV^mDdyD2Y5sQTUVV*PQT*XC9yy}H_-w?1-XVmI6K#@Iyi>wLE7GFN*f z|8RBA)(@F0y3R$3zJKSVC@F_ae{ zI_d2mpRX?OI%XvQ^825vAF?dL2EnNYplHwT>xVV1HqK2@0;1W!PW8hj4vH!LkO@>l zqD77d#%5x(f@^P439x%I!y!s*WW{=t~>xWlv+(Z3P6jSqV%HuOt{cip6?;Ox;>3dFkbyYt+_kkM|yV;&6 zZ%8D+j%RyLbG1jzyD+z9NDt>CdpXvlq7S|1Y`Pf2otD2TzWmR>zIpZa^x-gZs`9dO zIvCA{K4k-cvGuw+LQ1&T>uyD6#u$IJjK8o~+2F`C>Ye}m!5VgkDOuJLBIO|ro;aW(^gC=EwJ?e z(T8HkXMFwpMED+s@xmTN2SZFax@7k}>Sqy)--VN4Jls9Z7#FF+1bDP_0xZ^>?nLl5 zJIony{lUoU?GC~y8sJd@0m^xadXZ1LIr#_;=lgD5gfQ&pb3FZVle~3Nx6oeAp2K;N zh+l8=Pub87jzs^I?feN1^3Ol+Xv~5m7bKS#>H8I9OX}Id$T=Q=&Gv4gfqK)F4M{#x zI*Fx=%+E@2d{N)Vn%1nE#&heF{g_8DY(S(xJ`bH-RG-YlgG?xu^P7{)MG3WzVt-n! zKGpPjJW5)Q@5f+%Iw?vI3eBby8n2hz@f!u6|7ioMzvl$7x|?4vu78e<*T_`wlxs z-0Gz$hV%7wB&ya+H7%S`0$6Y@Wa6WwaBp1Y@e02_^;^o{7T+-b=%vF6Mn@8#aO&as zG8o48CCh)Z4;)8B((8lCqu``KBA;!0S0XJjy%JdOe{nPb7&k74K8y5f+13pwCYv4& z9jT#J;G1emxn7!uMzb9`tk}`60qWkTel_(g+KFeBdI+NK^Wt&{D`ATIKttzrLW_ItCK;cs8M{F+PUO} z_Zrgkrn6!RQ-XWxQweTJB5-#oa9a;GH$vI);2d$obF{Hs0o@4?Q(PMh6wrqW)P~nl ze-Bi!{*?&U=U2)8UTikd2`^!Pmwh7pJ2DZtzbJ6sO>mC(b=Kc;3h2IxfCd!MXR{pr z<+#cNDddn6G>p!|`SFU5GjK^d-okI3f9#(cQ>oQ|Ad4f-x7?Klklek4wSi(VamH=E z1!~~d#d)hMDvvatl@E*p0b7h@5x)|hU6zbPCu+$VN$o4zK2mM?6CSe-+YiCk8?5%? za%U4;_(5B%)udgG@7w!zI=*lC{ZAd=h4^x}$M+p*KgRc7-~BHh-}i0mWPJa4g`~+f zzg2v(OMV}$z$F~tPbqK*nBcm|?^{2TZA>`6FI7OB`Z@T$V|n&Z1uNnB?xkQ=5*Gh< z+26|*xP;^T)e#bXN1EUq@H!jc-4)P;GmCb>RI<@!Z_TYI;e z+8gVsFIGc%8Be_;#`n2ju~oEK(1bYc-R#R^o5kBbRp1j*0Tg(frNEv1*_cp&AH6}2 zorL^*+*TL@{kMGkItc2tH zSOseaVe!w2zl8d`ZN2Po!twp#rLw;RO>ho)osI8%6wrj@TUS88%5?NM(fDqiZ;kIY zxa8P+h2J>;oa4Lo+Rn!Jm;*&$Z2kSPd|*rvupQ&u7?yB+uf$`vp#W`A{0}69CLG^qULtAo*a2PT z_v;k6gyZ`Q1Zt4PLrrj9M)zU*(p@m-=|J)hCl{@$#> zB^=*7FP8l+H^DjD*V*_!QUOgkzW#+~Ck z9ZIZY`~2$PioV$6`%m(L@n-?sF}~B#zy$XBR~JcST#7cR@qGn8-GzNVIGK)!et$m} zREzX_gg^Q)AD-MVo@CrCo@g3gHprL5@bY%~v*dqYcsf-+9gnBCiOc$G zYTrn&Tg081*k{6SI6~actQRl)jgmzhWYNoH(JWy}L^4uj(V4Pnu`D`E7Cl`S%~P&| zQb5j<#h;PI50k}Tki`!ccMY?}T}HAjxkQ%q%91N&$-QOCMp^Q6t}5s=Tg6?!Z^d2x z7ID|BP24rSBTK$1OKy`T*UFM~=Kuw(WJ!bX^qFbmVZX()2#=9Mkw#fW6L%TQ7)K{pP6OJoP(3{rc3erhZG+?=baSrhY5b?`ZWqUj9~B^A~?wOLe`x;$?$p}}-nWdp=k5)q>br=j$R zP`j4l6D=|tF7L05gOPDk#P%bsVzV(9Z$uy3o>z)tIJ(Af7VS%+++TDKZ7mtAH5`$iE%lGPTOKreOUSjG2*fQHQB3WYh?4!Ei@&>*s zdv2VH#;6)PrO!J-NuL7%%uSz{Wo1S-noat=4qC+0Ck-%+LTSt!FM)u&L!bU{N&3_TT{sMF zOMt`URb%em$HJlXztj4_mRX=hm;rFO*FGg3?k4@<2yR*}%!@4LrSFXj0|kpiz32o) z98uKp;hU21_1Wosa=da2F8c^!eaa_z8lbGh)CYxeh%Co)b?pZWd33z4MHGNqc9Gd|HN2UXV{|?=;D$w0D-s zr?hvLiA&Soc~jh3_RewQ*0gs-EA)CQBftpCQx5y8un{fAMc}Mkx zyXoT2w0AC+@2Icv?pASU+B<$(GDp1Yce*S|b%v57WXU{n*Xt-*lFAZ|zd)9xwnItz z-7f5%fsYG&=iitAYVQDPE!C|cHUDt=tG&bZI;pG0`IfrJs2b?f1qtn)!_SqnH{9LQ z1-q$FSH2-NPY=`v@vQXe!ol(SbQku{XnbPYJIBm+>eFVtaqH9TWo5=&sZyU#`bWGz zec|uWr{B;J!q$@OFm!fDpZ@1{*{c(aT{ui=@2p1|>aTOrn6B764=LDh7r9_3w0CM0 z?6z(e?A@eKzN+n7)MnG?@ImqP*@eBcB4E?!b{>_@y{5t*Jrcm&^m$!YW}Jj()82U> zw1~BLG6BOF0>hT{Sq1{`4t*|PCh0T1(1pW<_RiU=F@I07aM+Q(bN6F$_Rd#JUG~ml zsL*X+l;WE>d#C?;x4pAB<{-enuy>vY2=dEO_)yvxH;5;;y%WK`%f4{fUst)?bJsbs z?P)}Y#kls||Dn4*H)ED!w&xJlo_q13Y|jS(>a=%$#C@XnU>{BDvqL}$ECq7|0|PhS zh}{}7^IUKTwnnIQkQ4AHh+q+sH}?BJ*fMF_j0kZQp$Ufxpi$$WE}(M%RO)vZ%C-Xt!dlRvrZgj;C#@2S z6)c2CIPmXzO>kZSTNfjNG$Yw8?u>_cvOxOjPBtqQ{FVo6b>R~0>u?}VgqfK!X$P_I zW5t)`ggnN(Aor!fyVx%wHtk&aJa*@-vEYsE7#?<&nQ;06s)U1mSOS*O6L9PTKMat3 zZ{eHKQCaLG(ZYVd_lh&R%Njq{`}ywoGQNuZ;a52BkUz#3$MDCM&nW%~r;fV7WG)03 z#ITEoHWOtl+P9fv*KEE`uW)LU0uj$IEh5iQYLZn4Lb754TQ;3433+`?9S(l@N=hP= zAHK#xzM%8oE!@~14{*8yc#s>QMbAfUXbJgai1^;5>&M877Q-JW%yIF@kdEOw_~XY@ zOgI*QY{nq9`Qv>Qu#n5~aFMz9RTpP}wG@L@c=F2D+U#mrWZk@Vf1+WAy>R1-^S8bP zBNtXKinbjj+IwbuJ05rkeyBypV(2YQ)(ZYJ_UIyP8Nt?%B!9u8u^%uSY!+!Qckl`j zmVZPmSYP>}f65O8gF&Q#7kLX?3F8iKkad5q;?t0i6I%z9y;HBo=B@H61z*18t-A!5 z)f1Bc?X4@p6=XmP4>`_?o{c-R&ln8@=8r-rUSv-w$&P7DL;My_`wJc5ZQ0`2lf36N zA-&5NsP-7Pn&~jM_CO%29~utw1pB4+CEk{8a6KJEOdRvVNI)99cUy0+GuIfNQ15RV zye&KQ{l&QRZS|C9mkJ1gG~)HEj7Eb#<&53-N3 zz2ZUZPWb>$VEyr(+qW&lj0;TMKWtm#dX?y$t3!x3^1qBX2;xLwBeqo|rCsiV(D_B) zxk<&fjT6rIzl@jd{_1T_<4(i>>#Hv2mQZhP4d{bHnx|M_>aW?@=&#;UU76``YVCe* z~8_!%@mV+idk#M-((P9C>WU(saj zQ)6V+dz@fe&#q~#uJ;pEiVcdgNczk38woKzsp_u^qHIjcxVs3ica4!wc!X?1N&r0> z(7V~tQyd0h&5m2E4rgq4fj`Y#yHn@@ALU_vy66@fQjLe~7m?x%BLAj9N{K?shXKSt zW0bHF-GLPZKm#1`1SAC`F`#@3KjSK_e*Hy3l<-o<-Qj@8?g1WTcmR-8C90?XdaMOI zpLdrS!1L(M6eqIXG3|wdJQ^<@b&w>eqwQZZt~tNafgFr*bAL^MQSTRJR}|@si=ad+ zjOp;9YvBp7)b|VMOQ-y3DQs^cc8PC8&H` z62az8U>zh%+q+!%@3cQSJ5aDBG{`$I8By=${-&n1x~+b1QBzT*J}HN18N36{wY`0> zs(CM9-IZrmeC#30!;x#~9pu|XZ} z0}qI$t}Bt)U?Hk5KcYRw-(>VGKQ<{F)G~ZI*j(I0w1hY`TUM+iV~M|;Y!aG=Hq~7Z z-V_vM;xmG40A~bqTM=9j&h3V`0C+|=jl1umf&4gthvpr_xY8(s*tgByD=S$lGtc*rC^;QX@er& zN?8L=_+TXqLZ^7=rAPjllw(2~HzRTz;hrg25HKlZ3*H+y$Jv904HmZ4z9*C4*+23X z?6(|9PGeF5l4o!nEX3$TUz;jZjn;eMr@8KH*CY#waI&M7KcI*{p_Rr5rEnF&cI~d! zoSqcwt!j7V$Ay=W`}Nm6ME6h%i>}l3cbW^+Fd5+12(G7K)d2_=@FIkVg;bQgCKyhE zSzI|nL*@*Obz0+?cfc-Wi*X9^8CQp{z4iPv`iI7zaaHAMFIj(@Z_ik(pgdYZ^kNA9b z_awcgt(TCqTJFNo>6)imRj}Q7{FEK2tx21SO-b#Qt^W46(2x-9a6`+LU6R96^^4DK zDPlK4?JooR;ATLtj5&Y{(JaqQIPWiTDB(M?v&>}dy^Ou?hR<<}(eR~=}!dF&|9C^`9Hbf|r8IH!GW3rUmI)}y?keJ$~q%k(DCo-918pSQ2ov84!^Fb-)x zH_fGjAm8~?&`9bf%%_KP2*QZ~jtBZ4D3JqbuRzTi*-0TJirb_%$8oDT<}3OFLH}3z!)oHnYu6hl> z&l{j2C>hk>_O8z`#+B)L@fw zZr{Cn0>(KKdLt)hwE9H1Jm7wL7;{XG#snhyt1w$Gx}RuK*;H)yr~DoegjeBszusn7 zdy#lrwYL=;$;fk7dkfKCtov*gOo-&!zw@dv(Z#)d|h{e$rg^8$>xgz2D~qA*h6nDtqOO#OtZ zL>RLfWiDhR8tq6A|%Jy`Hs=&XR=C%XiZTj?e66v7G~0%Tv5oldLZB$8Oi z?iA3trBJj5870AVLazxqEWUPsC@9yqOv-5ro&7mW5A`!fAIFSfoOA7yEh;;w8QX?Q z%D*5VSRrQ2=G(SbdpsU?C6|U;QLA&8H~rzz9uNyzn!X09So2qb)hS++{{xsf*XA7Rd)Uqs$c6hHIz&0Jsn;+wyD?`=Fd2?p`%k_aM- zsE7PH$w`2%F==qr_~@u)vF2j|Qp-M<|G-VuQDe@hLeBx~(P0h~jQ5)3UiJ^|ta;j8 zpD{88hz+u*(TTc~t5Nb&Su*++Iw;l~RR2W?B1x>Tu~y`NTqK|x-yMm?I*8h?3ZM~>*P(VXa4P zV)jJwar}DJ3;pDJl<#8~szeK{^`da<6a_-5WJnW*D% z{Y~yVEclVstDbORD9yMU>p0-A@RNzxqf!*Wup6MjH`goox1l9mk6L)J=rl0S^~#H< zn(Iim{-5buk6QS+)w)=Cj`gS;09D$R)_T-sfFl{16$Md1k=BV{()ZAlO%ipm9-WpO zL*Fl_TlDQ?eH>5UcMg*DE&Irgdp5wre>nBwlVttz^t}XU;Gu!fr~<-rhwyeT9EU_5 zQR9b=?m8^^k<=;wv@pnZ+1s#K3OcO=UK0U4TmgLC4bYvG~?cE z^Z^E5X$cb`H;Sav$a}No1lE0hwoih;J{#7&1pgNW9uFjVpA$Til;DtoblT^6*w`ZL zxICMtTQEB>SP(_5|LfJT4{%!=EZBhCSJW*K$G1<3+thQBhf&jS=4=4@9eKoViZ*2t z@h^Qm!Yq^X7tEJ@>E7I;?6PQYs(svRxDRIgqF3=AI9#wJ2EjN62m1~3lar$N!7`Bc zr=JcHZhpXuwjy1065X=;A~sjGZ(pa2x7`Fla{kDZ| zucAoX#}-TZFL8J@Bu@pySHsnPGrJu=Bh99K-ut#TKIDK{wIMs^hwP8yafqfLp@5cI#7!}bU^)Z^bFHU z@3d>k%9v7m>k4s&Sz7mcpjvp3kUzS)8?tP^05tROY^{G$_Aq$5J>IFNjE#mMc!}9>b|3QL^nH#r)e_x0h(#w&*#qh5&P0A<=hs02DFRG_}9h-hswz~x`qwDV}Vum5v zwo!~e4o=Xj*%*fcZU5#lv+VJOkC@uZFtRwAFy~8yP}Ulb4X{xDEK5e4P)vSbMlT>Y zC4A%e-n3sZe0TP2+yuk7XV2n8?@c%ct2UcE4QdRWvV<8#FW)Jp?mNP1Zn)7B+swoCfqc&Y~j7r$L}yt;du(* zPHS(E9*+m+dLz&vc6QNJ1R!L4zg;|l-c?sT9^^+Xa)>I}54jWU%coy|DqfMMkUCJ2)QTjVckboTbRwnNYl1OKo;Np7RfuHH!%D0)atT!F*N&d|;|wQ}t+)pc-IESV2=vZ@jgI zAfK^pEY7wlz?E8`?2L|*#KEv^tcKHk*iMiLLn4jGH+r^(4!~yC%Kc!0-1at1st;<+ z`7Ky+JffVvRo5`qx$;!l?(i%qE~q~zos<&{p^wLk3l@_jXJ-AD9Uq?+J=4KwI6&kr z*e&X;n>7c}_B2_KRfN-cpd%nl_M;s;o+fOeMiUk*NoHZif5<n(-Oe%cutH`Pj-2_Y14%Rt_wlGkwL=ZV zBT+kt;l6LgDgf!dVAR=^&nS$jX-5;NARMMk`QhgTO~VgllVa=8L#6h`v6vA0-r76y z;)8dzn(?EPD!i|*qc;8>W`-r0;$Qb?G>&=|nwFXYog@cP6$95f z2n}B@w7nGND40dP3#?WM$AlRJaHTf~4V9{c?FRAb-u7SNhzsxq!bzxo-K1ftkZ3L^~m7ET7ygzn380W!DpoT*Q)Ui;mr=bLK z`>$ohE&Zzw|Dsd2k(Qi*5~D;VFv<}jF-lzuwJNP7Z|w}cw=lX8H^8PqD%^Nw=#vJ= zACNmb;8{UrmKn9#$)Y>Lq@h*yfS@2*I!|<7-{3?ma)T(emT`vO-RO1$X3-rRSD3p> z`2v(uCE!>Sfmf1`oZ`kW&?!+1>REXGE0Flk3Lvq^Ez%iKCZ_xJ#Z0?ivgb`pW7$*X z+xSKKbDo<&vD)}Q$)EG~j6cu#VyEQKv54O@p1L`nKaWNU@@MbYep&w1DSj zv40U>r|IKO|CAOEWNxXsHqBFs)dWv_De#hd@j+NsfmNI?*L1Po{n1`*aXtE)O||BM4;;UDgTTZ}u=ZmYcu zJB7FAfLM5|yF2ml9q!!l=5z`#HLiU%5}xt63vR!Pj_^CZQ}`#xwfArZf3OSwE5GXq z{x{<~!*6llSbQu@b>ib=+_~}bQK#_gGGgJ4b-|kv2XD0#UY3i0$)=C4b2evfx!FyN z-n;nz?x&pJ-xL4+kWTAY?E71^LZHF=&#J#m-|vf7Sf9G_+4=WI?fcI5ue~O&|GW4; z^tAK)d*Z)eUFqPDIQ*;r@9en$UHbluj{C2^ha(}29&pGoGpAh~FBl&>`?7SDi3=js zqQ~yQd)5hWVq$nFO8j)8eF|6Spp}mH6z=Z#7ot^;?}v2xdt>GXXMg@VG9i9;1K#-O zobWD73~x?I@K4wA^L4AMe+zf_`;Bv4->;V6OWsL$@eK6e$9>$0(d8O3a{ARKE*;e0jgVE*!xNh7g7k3=kQY9?Njj9@9Y@f zoKD-frnkGlGXM!{O~KtOL4T)r3a@fsH@spOym?o~<8S{?;hpSmpK8~ah??vOf8UJh zj2>%xx!R}TJ=6)j)t$n7Y(Ez~<6;rdY2vTtiunG{=@eeEyM0Eg3tm+McqeuWFV)>X z)!(NP^4byp_U{zlWBa)JtKePP3A}Iq&>1}{-SWW503@6Lrj3Zl-|9}`Ww_gCEJm1! z4e!(h@P>2>Z%xASb`v9x-G7#RKCx4Hm3t?`-yxmA+rLwI#qRbQYj!yMd+zXf{CzXJ zGkSd7)73ts&IRxL%j4mV?G)Z)Zh4^i<#<4KqtDhKLpp_5>~5cew|;xa@J^KQ66k-} zae15?0F)Y}bzHO>>$un8>Q{_iUP zDEuFYUf4`;;pd~D3;qt6jtSs@v&Zla--Ay4e|?Dy|0#Qp|0LHG{4O{A6Zg3N3jY%y zNQnQ!p9}tJ-4fz|$R5KtWcYS~4ZNEdiz$3ByH9fBVWItTQ1!sFdS=ZtJ>+PLgfd4=Ye6E+soCl@M+lDm_ zAHrmj?jVR|rWc^4xK{HFez`(-7S@m$$gCMh+=_L{aJOtf_XkE%WHyV!(VSC+CFohW zk;^(8#VSXk2&qU#ICJ|75#aHz@f-kfRY`-uL*xW@$3;?~LC_;Evs?>JN3xX9^{79v zSgIDB%>86s6ggY$Lp`t@D@IGr^%A*`wAtu}r^LSXomxiH>W|)dWo;WRS{axdkqZpE4?iWQ=iM3yJ=XXf=fc7FBXK%5F4d4C=bK%>Mz%w8)51Pu*)V)z1 zk^IfmG6Y<#N|}v&+xYAPM53;+$J=C~f0YEIjmLV(Mp7ZOD)mTA_RgHqVaVPeVr$FspQk<@aLVt`TWiWRX6N>uK zTB0xElK8NRQkY@f10F|kHM)njXcBzDe5~fTW7+$HZFQ?Ar=vAKwb1Qcr$*G(F~%(H zkU&qF70@grTFhuWwOAcN5w zMcBrVAKxAP>;=QF!v@;;nN`v$ex~3x>%P{kn*_qC#zn|SgI(Y4Wm!Mro|`c800a~T zw{fRN4uCN>JqHle8-D5clDi;>5hjn_FQc+^R5M1Ss|l3zMrJno&3I};(Ns%0@Be)Q zVYeT6ZGcFuXz5$%hogiZzUvBQ@9@1E2RT$9M+xOxgV)6NfBxa%M(S6Q@1RsRn94Fw zH28KAM;PB=XvRFLX%c8go(0V?BAFTiE5%5SaF#z1yZj86NR8lwmd897J=T z5?rFzRAc)f$%h+e12aE~e)oPVl@+S9=r`xP-K5{uZzy{*G5v<%HR*RcTWSBv_QI+o zzma@dihNR}B9aIgM!c0Y22DMYW$Ot9uR{5(DG++%EH;`#%p?p%KMAuoAPJ+fZI+aS z>=*A-jk$Qw#{K2*uEufvGS$jTG4w>EclX}5KfreEBb5m>3#h#k8UvNq7iyG6U{#3l z=9+r&AjbQ~`oaJoBcDS$p1>JYn4^9N@V6bubU=52V&e@ha=ypdA6-BY9pXeq3N1u& zG#j@f!FF@Evjo%R2$LAxn~t4*nP!ah9WMix6opY#itR6MsIO@8P;(POMSpJ2v!HUH zq7y3mF4{U8Z9UIp{LX~BMYa|EY^)xLyg<#}PI5FhsE>q^IM!#zkkO9MOJK)K`ElW8 zh|tc5?v;Ahk}Id-IgJ9xmmHVY`vdvi`S>ng=6LanY%%RI?0af$`w$#JdWv|ln$Hx| zDuROL_MD)Y4+&xpJU1Tg=X}A?U+}h|C}_yZ7bFk}DmKV{JrJg{Q2G`n$!3ufkMTWT z3EnVl-uUKo3*2!@fC2(urwpapF_4771SC-INfVNTa{n+P3G$gllNQ+slqd2vX^~;$ zXoAr<0ELL=tVg9`CQXp-m7lal+rG3#g}8FyUn!}$0adQMM-&ZFjwn1Iv|B@}u{fRz z#}w^yNPT57|3-{xdq`Cn+6$Ng@b7Fbatl(1ws@yqh&V#c1Ff>%xWKH=L8Tjz`ia?= zKpyH>F@|yI@L9-sd7VAn=Ec-#4mXGfM~zjevDrKAK@`?JTd@n%SYPDsAjjc%> zqo)8lMjAZL@q_U;z$KULcv#Fl#N9-PP zj5%iSDs&^00{D*2)*yovjvupU;Tt(-6{`d>3C^*J7Kq#kqAm7L`&ba|bIiJoqh&oM z*flJye%AB1?^QjLSHL01AqDqXHJ;x&$6X89gOb6)8kJ;?s!571mY}>-T#zk_tQrJw zNVWhI!UkbDY9&75IQN<39D%(FM*4XuMjDHC-ejVz!`x z)_UP^-nW;Q>V;)aHLUjESbF%b3n4ca#>b@ytI65HB3MP6Ul*}YD|iO1P(IWG$jF~TVf!Aajq+s_R9$tqz*Wz zQyb#jGo@sC|Nc11()MNB=axkIFUpfYpoy^-`Uj^c82Rbc6qYT$3wd%-0;tmxLESBR zviOYnw&o{-x?A$(rUX#eot6LtKZiUy=e)%7nxwt`-d)QRH6QF`KB9~g%lmn}jv)ZP&Q$)c8Jr zdIaZ0s1Z|s)L5<;on=mmuCvUZVp&@U%*Mlt9L!&pw+daMKW1R=NQ%(P9 zGVY^1d?Ci(+594&GaZbvA_$I$_g-|=ni;)^_vGXScW-Mqo=jNeC^UgZ9zv0}SK3}O zrlOcsnO&Vf{hSylG_g zsbxS%wTPn_q!VGE1hv##wFn*-?2B4pcd?fFCz%-QfOU50BdT)%g z;F`vq?o|GKWaQz;GQ`w{V|M;uke?r(7|&sY-~joBy`gPvn`>pzHE;CccT4pM5aV>sWpcjH#t7 z^7DiQwLG<{Gx^ziyt^-5k)N;Qo7lc+RxOF-=R~WPpC&&~!}nyK!y@tWb0-|Mke}c4 z=Obeae&Xb(xu3OWs1-jQ31k`B>&1fDE2ScCnh8RUKmAK^DSR*t7hZUr0A|H|7P`OR zgxy#Oytu{wUVS$hP#lezp9VWCI#mM0b64_n+=uN9plNf8UtcK>p~2aBp4sW% zVyu#1P*Ky0a}02XpMF7lNnPXQoZ{NoLWc)E3-ACN+WczG%b$f>umk;7q+B z6CYHrLke)5yW=0t#E0YFKs-k>oaq<9`n(`Z)BSm|?J?I!d7_Fw6Tlck!Ck+30Mr|+ zjp_Xhkx5XlQj5GQVV2?xxDvJgg-8_{eg;p1VI-!jnZZqtmLi_?uX%yb z6%+@y8XBr!Y{09e%6zmry?F|6fPg90_{Eb8NLBu}^znQWp>if`X zD2<$;CX6Ix6xYIk;I-p9Qs}p&YXNO*(E^MV*$AI^ zMla15Eg| zkxMl1(>OiC@6~Erw;117Z$pCp=>liDi*N#1Ffz6bOF~mvaLjKMN5Mou^E3r zNn{_S_{YLOPB9{Oa)O8w1d7s$o0Ds{rFiR}B-$f`HFW?(-ApWm7i{s~-Ka&bNdsPF z43b|Sb%yoNVEAIxHWD7%&3ZA8kl7IAxh@wQ!Q3wZ!YCHsH&?z?6fW6>vIYlj=t5AUy7l}_qd$R zU;N>cgOz`{j8ZY&KY8M)O4IqU)$)dYebc}_rLfYSVWvWwAt7svK}KJ>mX64_5qaP zm>Q4Kgv3IXIPD3ETEsd!#7kQKssMh{`Cq0V1%~?(=rs(hFc)P{2$<(x@gfUwl6aBF z3oPDcm+`+*TNfsWgx>+NCyWsjkuv@lktY^S!@7T#R)f{#_K=sMqFk?4L2J}Zvr}+l zP^0syo$rfhw~sdN$w^7#u?6FivL3B>oS@JdezpYM_~BV6n~eh%W>(3!wSQ$l;xO|l zp0ck0Im~3lU`Ed4iJy94v2*;4JIalpb1(oT5Al427Z7l3a+JiEd4>yxHVy{4Fb%wg zSj18Esvs}Ub#RzLXW|GDa3p?tEcCe)N0zN>EoR{ zm3Q^`i2rNE8xg9ah9A~cKjV2|VUVlff~>IzxHU24J5>GmNabXnN^eHzgIlfwah3`G z94KW>tEd+Nw!^b?jFfE*mBMOs%@&W|QayQmQp><$D3H`FT9icLd!7=$)3PaF2UdvJ z11Ws(n1yR8e1FfE5J@>IgSsFJOKL5G2I}$|{^Ac$iBJBO>!lO4aA^fLEamVX8O+k~ zFCG6f!==OVI7>WM`{DG`GQD(^vAF>aM?_c#&eHPLwpaE-=hac*um{9ARJTZfXG}Um zTG!9vE2AA|DkgYF6^0`PV2*L@Ve<83Q&ixWiYN2|bqMHzacCTk>;RDBwLKxciOu<6 zA$SyCHYi);xMGRfKcb!0H&1{)BwR5{_tPq9G_8Uh7*5{W$E|{4TtSJ=aBeYj}fdNnj8o-j2AW!9#{}_v_&(IksKm{Pp`+GX0NCPmxmaM;c)>T(?QlApT?o&ag{N9%2*xo)kg$_+ zuH1;&hN zm`E!Dt@tC0rg0>I5w;rkpK)X%`2cAkaXey=EtLmS0goneq|V54#)Ga4ZAMV&?{UyxRuzm+ql9?VW(n?dd=SU_!D z5eVNc@>KfGWSa5>*+5Edb~U~az>rJ}=;n>EDlW>-3_$;nP8R9n1KvVz_NX!7DP1@@ z*EG}xn=U{_euxe5A#MDcPtrnZt0#cZE{l<3 zwLBkH*gZ5NCW5)P+C~kPJT<*Ee&TJMD3vLgxE3(Tms?d3pu88yf41SA;}Va*zF1U} zj+{;&fAz~U)2IOLt^1NK(BJUCN~%SXGE(ISCA^bSfeAl=`0Vrm5Rj?muB{9NFsISl zG931hr*p6I)R?R;RAD0nX5 z`7YquYJ9l>;lH`x1U#Ya^tJ~CA6wX&AgnvV&%*xc6g4*kdV5A~S$B-gUK^&SB!$zB zp75$0&r=ejE5NMT=U0RkLVv8VJ_casJ{vfH{Y7E~MlJZ_S1wa6eKXNO1gp4+6Inba*QX+Hnc zyd?_|lr-r)7Rq8&b{2*J4$25XaBEubYM@v1d}v%A0d5PLLj&Pb)pFkh#|rhLd4mh2 zVh|B(7JmTAl1J^A(bSd4h#~tkrDyj9Wr5Is7jRi#k0Ko`M-u+Z)Ew$6CS#GRDGx4o-#y7!<>SVXKj6 z&^lxe8w{2kMO!GPE7PTb!C|4Yo7itPSQDG;<|PDtH7|M13FbnYq<`iMjBBN zeoFBw8%T;{*kgE;1*$>x4uN!~oeA4gNnCv_rW7F@K?kEl)oWU>G4Xa~JTEl-M=B#m zX>y<7n}TQ75_H(}3adbXB&Iq6!{_}=bD*U-iJis>DdEWSw-l$b3?vvPP=_`fubjD~ z{R~fKs;_oys1Gyn)+{QsXZ<+;lqb8?O~WVRpohu0kjxh9ZE~*3t2pKw>^MAson%u; znBm^K&+QLzNH^@HKz~e@@>luQan)ZLkLwDnQ*dZUKriM=(U^@Dr$ui-!yAPB$p1Wg z0&ci3(~>hGtPfI>6+n_XC9^55h3JMcXNzf5LJM(iifPg2;K;>6@6!wIhKEwo@6ZM4 z19%Ht<^0%piDMX_=1xA;>Qn6mXP}*nrErt{PI#lZ$T%Ewn>aAu`wSnAd?)%Hin-o0 z+3NsNWFCs})DU>Q0-i=(3~#G7^`nTll+Kczl5k!iJUUHraxikWMuyN=D^{ka_zXcM z@Vs4J{Ss~8B>J_W&kG9En}snf{aVs~4iA=oEoocp>SwUh{+#=~tAB6w|6B}=qw;YI zawB<(efR6Pq)Bc8$C`;pg+mxHF7!N2Fj}LWe=6&1>wC6!bsgb>m9gg9tr%-)QI4-Zk0w)L4mNqq_-at88qI?K z#<{st3Xu%gfW(|99E}eNMc)$5=CFqR7Y=aF^u_EyukAjQ^~A3nnLbUiUz)e}Kgqq;4khs}JzE{}5vll^!*-aA(a4HF=K zEgc1%p#BswO~T}eiaHZb@=Iez3I=<|gsCoeCBKV+Reb@cX?4E=ttFp`Arr+eLp6kL z{T%)SsJ+a$wHY|1o(V>-g*P>79EkWENVFR@Ik^jlM`qT1(k}Nh0g^SR}_O_>t_b?x~N$yx* zXLBKO(A*g*lH`^77Tx^mmDhrYGdY{6xgXsThV!CfrgF9T&`p>3Nf#4H>}Yq$2Ge#R zT|)OlzNf(ip$ zXg!(+Y28aGXBOi_8XI@ublfCuqyeY=mpltxxrgMWlym#swSnAk;XkLOPYQa^Yvtq~ z0%taEL;Gss!NAjCAhH~YWPJXe-?0{)-&J=Eo&>{>&qBd)VHr;EJsBi@oYU8!9ws=< zPPq%e?mwbkgVXX6)DMHUq#!!(CQi5IvH){mYZyFbTpXa@#V)r37Q{9jx%`BO*y(8S zSr(QBz|8t$t^`Ow1q@g)<8rP4*fcDncx%NuVrbut#-bjrR0nSX1DKYxMgEs@jpm`W zn8XJ?pJ=DgVOPC(u0Sh;`ce&6C6*+N<+oCwHfi)tZ$ts=OK+9xu5%>ZPfm?O}&8 znMUkmU!PGrnHmVIO^u;{-g-!T#uFEcdEL9?#k}qWAO!Ls_22Ol>PL?&wiXV9cIN0A zoE|C;M)t|aDbbXXIVeEwoTYw+{X$9XolDJQR}X#Cs|Vm4-yTVH`#2ag+g`EfyIf40 znNGJFj*Hn^ITk~07GaBZne*`i+%F#JkCUUKpJE4;u!}yA-pvW8Do=mQS99QRX~cVh zx_-cT^gR@@@ESUnOjfXXGCXrQE^(8QrRtT#SIq2it}~&G!^a$#cl<%5T!gZc;XPJv}|Y)b6+S=92B$Mc(V^2-I3J#Q?ay8JD_Et4}B1*#R=GD zJgYrir~!|fc&rbE3%szjxv(^;eqd?15CV7TXz#osDehti2XQPa<>$bSv) zW8B=_QaFs?)(^cIyi|=VeIP9Hfn@+%!58=yj-+yZ@OYurT7+&DuavV{xtCjnhE*@> z@oRdTTMEJ-`o?zsv0h+!HF#)1?SQG&v{OJ;u zUsd5(pshFpQ3dB6wNDAsK6x_ZBaoYa2uz|Bw8=*RMma~CA`MF8vW(C1TcLhOBR5)7 z3l<{9W1A*66-*Sj)DXq|+nps!W6n~#ohz|mEKYGZ{by|ZfOUw?&;?lMTl6CUU*!B- z(DrcZ;SgnPy1-V7aX0$QHOZHM@803;;`jCY38c(C=~sT21p9CE`xP(!T>O6b#4`2A7zm;C6A)S+KZt$llN(NB2T-R-pbpw}LphLNSX%Q(E1Qm=3;~E#ExDA6wh-jd&E60a$j#2j9Ga!l-lt>>N=kR&fg_ zQm3*76H!mKgvKBK@tbP=;!Qn&Y|+j)eB_-goK#BE`|E4Pl7i}b4hn#zwtobu0s^x5 zSSmTr;>=YnDdiV3Ue2#K`kRcDV!cVu_hr1C-&@?s&@KebF_;VgFrQpC`FIA*9UX{t z!`v0i{wsAdFxL-Wt#JbaVG%IL>COh#3Lhfo8g?gM?j<{3?qvAt z?07jk?%EzSM)z^s&J)si9&N|V zm0kx~eqCSux3#y4d1w5ZGhXhkWGERWf8*li=82b8MO`DB0A22ipL-OmE!6K%$TI({ z;V?J;WPIKH>m}yK z$hZFo;_GH(sz3rkUmir3@pMKU{uqBZ9$p3$p^o?qE`dO!{5Rt7njf;_?+$v{ zioZ)2mm7>FvuLXQ8h;0y?SDG{?l&=-JuUz*QT$!nAz~cXwo;Tb!6oDG<}g2A7vt~t z`VkYLmJZ_YHvfQ^Fxvm8;_rTskSMw!yB2@<1Dek1#YyG5h~h{M~&&U;G^mZF)uJh8268N=G4h)#Oie zA{OJF+x-wcu4%#_onYP0IVmzHKnddSHarMVE|gWfu@@$>NeZcXHn7i1JwAor?f|1afeiVMTnX`K5~B>Us>`-%wei7`z6wP6nNE zNFCO#gBU!LS;paA7%RH$X%-q{z@u?0ihB&HR%cwfPimKZS zEs^U6-g)U-4dVZ57AMQtKJ1yec&8RAO^yb+zQgv)7(6*YwmQFCad!6tRC~t31!6sB z!j)n@=CAw0P%nYRGffNeYpoyulJRvw=I(^p4YotI&k=7YJek}cATA+GznI#}nG zMMZqvT?l+zbPggl>^L}nEf7)rJpcfsNaK@-^&O;lF3b`86eNi(|Fs$S_b7|oaet+N zinzbO;VJoz@qN=fLVepG8{*^b4g;-ZydCYexOlsNlPD3^f_S@mr91N*WvjQ~xxS*j z;A?N~$G8-ccW>ju48BSbc?UPR2%-|J7m-4E$m1gKfCJHYAJ`KiUOsA#`R(nN=Q>oC z$bkRZ0`K~2cHkWy<=(npN{*Z3Ml{SZpl$u#QT*L~ULoNU#NP#0{=m4D5$L0c0}~;5 z`?_Q47=O2I1R3O~#os+^T!tC1-Qa}rcgXmlSl~>!wk!(z5kET)55UuiFI(W9_Bd}k z2zI+s2D^RSjpey|z^JY}#Mk!D^Be}dVR;b4d>ew@eneyxd?s>43 z!8Y&hFYtoFZpWkYE(N>oNCdlu^0$)TI*E6?mSuCaj^o{0M7$f$>;r6u z%VENn8o3buv)k{#;{DG;H|LCcq2d=04gSv5(ca~^z(UxZ$*G3TFm-5mq;$Gj;Hebg7)ivIl zO+wb4MM6e;wUvS950xsHku7ks9sGfy=(dRSe!F29 z^q`4&y|W?bLh0Ux z+ny9`PAfgyhfE>k*Rc=c9)N=VBkE(kp9iI*ukd6a2$jflyg(N8!4hy3lPjV(cs|fu zwKF-%NZv-d>WWvo^LyYql3J1e3&ktV8!}17Iv{p$lJYkH8lcA=wixIlK+j&kV|?DL z_xxP(N}HyNc%{g`AT5IP7^8xOiJd?1b zS_htxi zX8c|YQaUi$?#hp#SAPF-a)S81J`%i!_`O^+-mXkSfA>!b;`dG>y#R6_g8U6Zy5sj2 z^$^V^ymuLN$9TYW2~ST1Z_{lO-pd;SuVs@3&mF&ahaJB+9mkG92>cqqXNma#O8lOT z*F;=;B#>#We;$;sYs4fs^cyW@n8B=@?~3r3=vyO`<$el07I}K!ty$VlzIqX_tO=wG z-qUkCgjd@!yldm(g?ob$MHA1ko7g9&iTV7F&tlrw*9lMg*P#4y6g6@yhm*yLR32>e z#WoFWvx#b+w_!dThX=XlJ7WbUD(2XCU&-5hB8^7 zG0OnGLOlf`ls_aT0SXSlWKxm{hw+w0k80m;29TKR|2UTHVbKkN23i4!ou7;-7K%6o zta{Kw{FP(VDlTEezJEW23M`zO#vGUm;>$3a+JaOSvZ!$0guCMj6LRwpmz-nB2ZwL^_(`Vx;8*u0q#IeAkKt+qV6rVe*5smZCo7RdqS_H>T>D%pQ)}=y> zwG2!XUy0@-?o>9n#z4yp(~bGB1Bv=eBJqtd60zTUA+{~G_0}R8*KA@p5dzU{^uC>k z&ZRE9!y)$tBxCk@Xeex-^wZq3pBQ(<=U{8{v5(z{uPsam^tDAgvW{#po-dKe?w`L( zH9in2MsTYW`A*~}#;OCOs*`FjjZsWoMpDP2dYSf!u3?*Y#u4)U&~6B~k6Z^FlCq`3 zigjb_;5QhJC6cCmH6j@+99x8YJZe1hEYKK6BqQ~vaEP7mp zZ)|#;n2;X5K#xC8DNGF@H2;J6#KVg zherm6$7GO9p<85mKs>!17uUqTP-G}sZjxcydP#<6T=>IoCZ|G6EJ6hE4Uudn zf1zjyr>5v}2y4|O!nBi+*;tC951<^R7`psJiSNCqB2D+dDN!H^cY=A12f_J`{cN#UacyCNx3=|=HUw-*=H?~b;TOA+)Tv3rl zhNKzGYnhuoYJ75nsVSZEI3d1D^k(D_BFeBdj=Ts`m4`JW=-FW0D6mqPrP7UxCPadw zM^Nq_<2?CZ^bQd@*}y*b9GY$2buVQPbDCujq4zXZ@pnU=vi9%)WPv_F!5}t^%I`NA z-Lr;SqucbenB%)H?v-M=>z4|KGZFS6)*Xqk=kw(l{uFaIkOm|h0`%J*u`pwVQPLXC zZu?{R@w+d&NgnD5zh7J|-tQrPmn@3I?+gI8b=mI{Ko4zf&s)0QVc2(F)D~a5KAH|2@tq}1fzgrN5P04BvBNkm;|$~ ziwG);iXe&w#e&jop(P*+0W1`OLl6)`)Fl&2A~YPJpxKzQjbY{(%N zZKxBakHPu~Fp&OhAm%3t8iB7|`*84!4@mGgy$+xQeFuxjyD{_!$KrmVF9Q!3E?(R^ zoMC?k;9>cdol#}`lZOYuJJJ*QH2#?572Kv5NFTHQkSd|A1k|DdpbeTsP{pqiCZON| zw0No@c>PzTN|F!o2>!G|68r=O@tFq1+py|}UVDW?{J}kdm>gyT3QhX2OwxQ!aosDK zLH74bkiYy4{2UMsncoZMgi#;tMtuWKxw=6V?@BoIS`UizK3=AO&jAm3-4yV^vDO~Q zB-*GC-m>NaX1|JayMhRo!7-bh+Q8E?;IU6UNk!?5(@2Wf{7=hp0mneR3!W~gq34@O zH@yoUp;8e?LGY-83KQuTo^XMKAkbm4MH8u=MIO2$Z z+yiA9DP9GOo!4{2<3Wq@$mFl1y&K_7MQE=ea(lOhw`awxK8LcifDNHY@v4Q6c$Hy68Ud^Cz#(N%dKVN@spu*CUq-CtRfLGu z4IrpVYQAvLdmMrZWGq!1zp4jcO18uCt6P7nLHz3Gi^)|f$>%dXAepS7P%%t@nn+gs zgQubu=Asd(aqP;BX4wKRGInK#vTQ*Y8OBJeV_n2HRIS2T3RKJ%rmhTX6)`3d zW}Wu~{L(68S`#Zk*hn$0iuHs($Fy2KMQn^YZcLaj^kr8dftc3CXNBlv&fjFINDg}* z(oZZ8(TZp7y2wWSe<-E}cgv94Mp&yA(KZnCDWGt57mt#C8i=XfSDm}K3j|YPtpR$hzhE-4oQs!<}@`!6)Q^sr%)2A{I@*fQ2K{kj;#{Z%- zqyqi3hnH%;$3qt{2yV@4p^&T&v-!LI(o9yw^J7(DH3z*1G_O!zE zxezRLcotUvfto+fLTf1YG{OR+WX~yINcLPinc36x{xJ451`%ocJkX}*?6LV9V9&IC zJA0r*L?g)d|ABea>vCqy59r^OF=xu>XYHwuF^#sFjQKTN65SaFJN~{fx@|sR(k<;Y z(=~Y-;!%?QY#6Cq z!vbW!e>6CDWHSg?!{FEx0b2Lc#p>2Jm1~#ht{!le@v);!r5+LEH{0cN7(4xw{(gMy zwJj1!TYRh#4O>FG^b@M!2ry85EJ=+>K1qN#3^U_5&B7ij0dV{d9*IW$=K9AZ&7Nwd zoaAa9?mJM^9G%A+ADe-dC#{P3*jV}e80o92L1d%v8EDv|@2l?gEdvvjm<^3Teh~J^ z(0>pZwjjh2e5p)h^8A)HrEf#jwA0tpcdo;?%J^6}T7$2GyshQ)V(GJhm6$nqhQ-ICZ;W7jdwgsjoDcGd z{V{*tg)7eKRO|i}A1m!3q22Kjp#AZazaJmFdnfhd5feXF5P#gBA-*6K;-{|rx8h@` z5DsSohuX%+PHYPzSO&`CwHXmI%D0>F6Q%}sI4)KpK8)N3|(Q}7)7d~aaC*{g3ul*9gYjMc7;NTtBEdaj1wn~(`#5h&8cDpW*YNTL z(Tta3?UlrPt3cuWA91MR(!ADUz!H2D03_SD)&NJO4+LD8JGAU(=)Ed^jwMI=_Iwy^sKwsg`PL| z0KpzyhW~aga(SFekGF!-COy}pK=iEFOw#icRX)(PCiEbQyT{m1ldTVr|_Vrquavkl~;Mb8!UT?p3tQV{GSGVxw+0MUWx+I^S%=#Jv*v$4$9TjGwIa-n4U>BrspmUr4V{P47q5H&%}3K=s6CHJYqU@ zw1{zgJeVH;2}+yv{22wJ=b4QpJ-4fJbCj#6XZgwhF+CG%OwXq-38Uw^kc$>QzkJ(; zo}DfN!TLZ)ix1o$$I;`tptMQP87L4vziue$IZ2gEP_CYylUw}9^h~ZXJ<~BYL&oQK zu(d6E7R+;@=Z<6$>@Z9vaf{pIVtRb-J2rauLxJcyv4N!LrK)@%%GJ{|HU2-QXKIb< z`8$SE2tB7zNWt`v&U?#+o{wWiM7#kVEtxEh$7jn`M)in7Wt^iSiyd5rE0&GQgxJu?>ll&JEi-+=;`}HJlLGM*eS|e_##1p zqlIF%!pgD7rFUMP)6;hX0dzIdPMugrq0!}vaNdG_@PEZ0*vKNxxxC^6P-hS5hQ_>; z4x%0%K^q&DQ(7-7DsP_pu3-tbnBaGnPfE_LmLi#D@6cF}lzuPh=6_yh&Qfw`*BRsZA0t4@kjw*rKPOQ%hp@Ln>E_w{o{C(n7Ew$!<^_GCdXcoJV&%zU~uG1cNIg{~;8aj_*CJ<*IL+qk(3?7AY*xV<_fMd4N zQt)F@?+q7*-*g@rK86f8Le|O zAOPFg=7P*Pz(gpfC=Lxo{dgcMN+I&p3`iTGGJulg=2(_Z9Fc*NS5SDlEvxREIc%FMqVE}B!`+q@?O$x;tb-QhpmZXqw-GTDM5TkY9R8U8um{R zbGl$T4IfihR`&GKTvR7R^n}nsJx*5Z`i2a`i`n$mRD)a`jN<(I{KwQuNZC<4w`48_}z)m+93_?gYo@Ing%o#&>&> z=+Oz}AlaR_4(T2U_nxCgUn7hUaqEb5%nN9WbAs=fau{^bf}dMNc=+XTB5dynG!H@N zilHt~i|OgL7)|-BD)j-14t-H3I^;)5I&@X#ktoxAQ}#-dAwn_Nl%YaWRMLfHX_ph! zxXC?}WTM*2l`I@{Ceao*8Ne0i|1QsKZb($NCouWsemGK|a$K8JTk466FcBPe4HC2# z<7T@|oGl%I*7D*xb#l%mQbP@e3_Cq*7Gr2}Ic zc-Crk(lNe#-lutx6ud>8?gcxn^^II~gQUhX8ryW9D;52m?W_5x%1mHR2=*?VTF!NN z`N+F)B9(G{y!?R!-e@fY*^PA5yI>-fik_zbHUCwyMfvh79a+%>@vpb}<+G9eYsyPw z{L)9^nTb4Z^PxGhxX~>tcR=VEh1N~wd6z`f^y1Dm!+A_A%I9h#=B4n#chfnb>|dZc z*(EF-f;ikXY;b$TFib`s+^>p{XN9-Zg4#KcOiD24O|(bM`TmGx&hx7LCCW5SIlq6f zw_PsQQ2d_#-h0j^Wgx#gq5<^X5pf8^p3uI`8mto=GV+&2<#v?=j#qRJbWe!MJDaK| zr7eyHm1$`v0gF5&$*2ol*TK$m8f1GCSfP6FMHjj>Iva?$g$W?0x;_569iI3whJurcF5_@TbXoYPq{}_3{3^yhR^_`8}?`2MEoYxaalOd zsT`AN5Ge)&<5r@0M)=@Al`y&xs$0C|^7Lq1Ja`r(Bsh=oeH>SWZ|Px)?>JRnh_Z<< ztm`DjedPc;r^gnIEkfER%WnlQ!T(NCxm}3=nULaHp7IQT5lsX#%FkoHo{|0Ox0`&p7g%Wb5DwZ(V!ewsf!A=9@s|1*!sL7(<&sZoGX?Mpc*xX2(;Yw^MhE`#FW zS)f7_=xZ_7?eS)MoQvV2(>X>&r(01VI=y&E(&;KyejH`nT%k*rCrQTekPb7A4W%^t>A{1NNaw2Z?I>GBlKFKGA8R9>pPt*xFc1{& z41%2kR}@>fk8R*xfDwglP4muEoHvf1#wG_A{zMS#fqs|ahe$a@*2MeDF2~0`U3(MEB%eu+pM{xY26+!FV6WY%E! zXG6As{jAFf?VN}qmt?ksiPG9Ek9_iX6;Dfkx=2-{lCMtjeoUHb$u9{I>j` zC|wWn`6HV%<)M|y;TdM~z)%qrYt8>n66K;?adWkO&YZK6A#n2K@gxUcWT?uVwH zgS=GZGy@-@W$-vnuR|jTj7Bg7yz~VUYjCQLsePx;LR?!)IDaAOtyf`EOpvOCDDAn^V$99;xtuuY7v`n^}(>2Lk zun?`W?*)eB?dcn+dv&H~X@(Dw(U}z)w7=(*Jd2_-0LJ6Ag{diTAeH%VTt>=Q-aH5t7Hu>iqnX5^&?&-E4nV6vQ7 zbx=e0OT;MHk0&8>RNsMnJf7-dn>4t7GKlsSO$EQYrN3hMm7oiLxJ^H~N8 zs7CGwntw4{I{x0!F}^N-Lf2&dN-j6l^arnyAh!UA`7c$pBtD~O^PI4SiR?;XM z8hlOhFE>Nn@ubbDRMC&pR^ZRg;2g*A^fknA)d|1PCN2j`^pnxNxF7z6Xk%|k1zE;Y zL(h`Y1s*p>gCveK_DUXmR5=A@lgEFPzv)=ts0n{tp7wtmfBjR!`TN7EV9UecR}J|) zZ6@k>w>PBtJA)cp47E!9?TiMAzqkD?`FolwUyZWG-+yvFs}d5%Y*}8o=<}-9w6LJn z6I(FO!Dhqkz~uFoBA=F^E{BfbMHhH5?t%Vw7~bwWU+F5+>u<9Cnc+`|UQdT?I8N&I zEI-suM&L56JFW9h8iBr~p8SKZQiQkQO_CRrv;65eE@>b%@1d-Ahq8R78Tq;=qunnpQT4rO`!9m=2`!6$u*+FAJ4yl_KqYh;>cVv{zOV>v1DP`M;ID3*$M^Y&a8IIlk9 zP+8b=`RQ|U;u2b?UNSwuW<>+0OwWM~A8wI4gpKRXUy8TA3+qT&4|xM@Yp~Vv3xSxj z+*^n(Yazy28yaZ#2Od%zrsH7ZO7G+ELW*F#VUekD6{(TAvfQpL14v=h9w6j9i2ml?PZI+YC%oRRUIghs=v1A)m3`(}%}Q}{7VAcEd^K<|Z?NDre1SOwv! z@guz>^}tAw4Z;NPid+1UR=j$3Ud?gr9N!6gJwR$Ss21R`B!+_+eD$(`S>bM|PFjlF z&gxb5lda!`_PCAU=8)bAu(!~tbz9$qcd6fG1P8beT9)J1i|~Zk=k&48_OC$EfOp&~ zxoCGM`a}Y6hVKBS8|Mp8UVGu2@@#r^Dk9yHBmDz)^H1m#S4Ydro(0bHKAmCJJJ8|?em&aGr_yp0KExmRTX8eoj-`eS-jdwebjF> zYuYz-K0;o=G8m*)BA#jibVt%)rT9d0aJoUlR$`0arm&Qrxu7{nboo>G?<4zDWv;~2 z)A^vhewrfS92AIv+kcP*d|H*)qUH(~z|+NG3U&HvNGU!wjBB&jV# z)!CE_#5^%ye$2t!8({HY?#oHUpg$%9?`?2U-as~gK4tyWAMb@)n$JsER4mPpGoHx3 z4fgy_Uy^W$pMbcb8PP)SZGh7)xD9&E+Nsl*PaUi6ITeh?z6NR!gQ9%GL7A|;dVfA=u;lZVgTX4z-?Nj$1Ua%;0|9ci?N*OSM zxP<#BWGw_NinvpQwv{n9A$S% z@H2O*&TEHktmTjMiL-cuZ?)fl*A0cg4g0pHA+QtS52iQ?zY6dW;gdpOr;)10CY&8i zJS^Ja^9<~cgSZc7xUXqL+U8E9y=*a2u*)57JAv&pGCifV-|Ni%JebOe`&d(I+{8YZ z%<<|NOyo3KgQ=WKYLg6eF!3Ui^oOu+qyWpLsp#|c@incFP=XOL(V{h>Z$Y=#oHOe~ z=5T!vGE9s(GgY7Ks4nBH31G}A@9?KhAm8HTXxN*yB@@O-8jmSC3_M~i(uRnS01wXG z-a=9vF%@qcZ;r#8aNI**(|hAJ1tP(xwjpAAH}x3M$we|lT3}rR`B?S^K3)~DE%0?` z>YE=hO>IoTm;NMs^#$+C*t;mR%~I=9YJpilO7Ini@6!Feg)s z5I`zdf#ay63`?>i2wf|#bbI_RJhR z?HN4zJKvxs5g$jnevQ_XKSYbiLe>~xG}0|cAsWN{vwx1}T=#5<6uv@C2V$L7OSB<> z(`49+d>6~9^$Fm}MbPcy6}QJx^!Pcjk}VBl*d!E)VI?~x!^W!e0+c0@^|?-Z>p^VH zYoov39vdgy%2n|rdymPF8Dae3A*cDD;12?QtN5Eha^euVV!I081cG^k_!~b=slio! z6Ie5T5H~J~8eduY(An@-7Sk2d4{;DmL-44xllrFpc1a~-mSa=!!XmnoFGR!3Tt~x8 ztqc+emt%G~+mQaJFFH6=TuI)8$;*QiTzJ|4crfd3Sa)Kx+vD@-@j7ssu+aOe3HS+a z5I+xWll+{g%DYik{9IG!;FsQTgR|UsqoYjr0$bF{nb^-X0W!_Ek#?rT-axu|5k3z@ zT0&HAdx^az#Wa5!^6Ju(Mvl$##j~&NOKVFf_2p*qVeFbePK)jiowxizYKw&21aW!? zJ|+VP$oq-kv`X5LjbTor(3Bh_8y)Gh*7}Q$>TF7TL?4Xu;B#jDUHK)$u)#VOvM}-K z%rxjK=vMVY3wq&2gB|CJ+s3=FV?_hddxsBCd@Bg`0-#Qme(c*nD#e9vZ%m;#Iy{Wo z)=+UL0fpc)ns?3VY7ue7*zXT^%vvp4>QCAwZ=a0HZV?TCBBRAro7bULo7&8x;yy=2mjh|YUg-o0#Nx&W z!A+{0MM**?!Yysn7RS-Rw5PB%mI$S?4?G@ERh)~384s_zVo5^-Z>nbDUB?Zv>tlh~ zD5y=b^C1_qTuP5Oj|1Kl3Ga2dBD{}Ncz>$Oe{44KHt`KXw0)*TG~Kt9(ai9bWq=~S z4U~#Pcv`6_$6H9|Ob+F1U9km2(5hkK*TxNjhmHdR&rHOB(Qc1#pvQ+m7@4Q@3$6&i zvw#obyF-;vvg1cz188KXmbxUPut&U}S&PIIW^J08b3*LJi*}47B%au_xAIzv-eYLi zIrArH*8}LEK!1vME>8>TX#yd}i6_k!BKkJy4S8GPB2 zw_);iF;%eTq|_hnGO~xpfI#C4@ZXOQx;##&$K@cbexVYk8&M!Z{3pgLjgjbYn3TaF z4U`3V7_1;l8uHax8zb3zc`PrHdDh!j#oA%ELW{@A~ z74yE4t6->TOBOt){-$8;%l?Y~Mt^C*NoiE1RvJom?HN_^wjmfx2=KbBzaLt#tHnBi zC%Da^pL_dvA4B^uVM6S+HfvI*Z?pHwW!OwNF&R!C zHl)zdxfYe%JbV^Ci2+XYbCAhKgNF@}$AQzsBN#@P$@w{08b;Q6CjgFuIAlik0U>#@ z6icGCD;DBY<#<$*PZ)yk*AV`CYs@QU9{~pYKsZzvjCw}ARER0~0{$~Z{JEmr{Vr2= zx(D?>Ad84BrF}T>mp+cE5I1jxrPRpnjbZdg^aGgOw7O37_rNH0$(GVjbj6kuv)7fs zG^b&Y?h{@F-W7YXiK1ffaGfMd*va92ntu|HMdC2_ z72&N$s%CIpLO=0ZK`5$zfcBC`wE~%=I_LEpj0wZ@%LUL0EdFz`P%}J1)mkm z;46ra@t?)t8}nTFyQI<+CBA~fQv7`oYlXz$hu4F@9o*h1qBl+l=k-4of19Hq`FlKF zh4Gj4-6+Z!mU9^F&GEL~hp9|lZU^zGxIEe9a@ZuM#2<4KFJKl|H;HNLk|&?^tG6+x zGv27b#q&K=^1nBfJ9?j#9C`djh(iQk@ z*fTO_v-NC}(Zj)C@OCS*!im2b2bsUaA$*^Y%wINq3?coA#ow)WCML0vrnyXCx>-_s zFfkZ{n|Pe9xSK6yH2Q`N9{`dC2FRKNO5MpDNO>@%6N0IFBV zHPgoN5$AEeqms9nK_Ov^F{f6=+l)|QjrD+9^7TxMuOahy1g2MThBz6bS2V+a7GD?M zvGIK&vXgZunjDb;}y?wb1R2a;&?E(criq1t4ht-i?Cf>rlEf=WhglKK`32 zng0uZCPd`t1%E~2=bKo`j%;21tNfgWX#{@ufru69_|M|!4|lonvpW`L#Pwu9$$44_ z#HM-L;4|>^1GhKg=#9DHw8_sIC`f)jNmmj0Y1zx4{Ax1vKe3nFM&#&FjBa;Ly9MbP zkvaN5U@x!6G=jZ+FZ@_>7yh&O>b=v2ueTonmkP;ll6*ZIG$+2Ey9#{Wc8ALw$@IoX zaNM+)OHhz}{fMrrk-rvyx63uD|I8msipbvrj9qvB9!7StMG5$O`xOt( z#0@J=L1cUhRt5N@Ou}mkt@Emow5_#L{&?rti!pg9C8R$XY0}T1wh#V?EW924Ceug5&S#+|rB1I{C2LxXU!{8u=jSQ|d zK*~j|@PKV$c^RiNu_ABThy{b`PIxCwX6Z-#jQ znB$O~XBBpmkq7y|%7?(}5y3#Y9X^kK9ARfYSBWX~8NaWo#~B}VzE1~Ud-PR+)aXO4 zw*+GRlZfdE&%|tQZsd0$pN!IbJYvq*_Pmbxp;kr-Sa!Mj=8Jd}`5ne<`aO8f=*R}I zGrz+LuUh>}AQwZWchI-n8#%#-LTg*FRwZ(n^yVVf!e1Pmc#Vqx_#%}wwRtah8_553 zK8HRx=v)uw^Jr++YUH{m!EeR)Q7ZoQxX$KMQdDj-2NLP?77F#LG!I?I<)7pPXz_4k zs1EE#bE3?Ny;jC`D8HjGDZb<|*TWN6mEyZV(t}nilutPxy+6 z#OAR+VGM!&-fLFt3$1tb(fb_l>s|Ld%h!fHKgIc+$9<~s_w>Z)m-op(n3~%t|6pux ztoPFmdIDbcE(E-`CaAm#7MuaH{v6D7qkv!i4*0ybvW$lSt5j&J46FeMnk9WMSH1Q% zJY0zkATNy|?}Dg&ftB$3_xIy<_{>1ewQInGK=vU>%*?=03Y`okdc>1tz)`XLL}Rd? zmb()&Qz~-niC=G&sdrd~lxH7se2G&Q_kn`yw!W2FhPUV#RlFD@7UM+{%d8ah&u?J`B`v-}jut~I&M{TXp$O5H=1r9I-n^GdB0-w3i;g(i|jF!WKX zkzSx7*qW5#DMODMVy+2d%Sj5O3enAgO-tDfj1mltc+4Ypm!V!k4`W0$LtP<)A6d!- zU7GT&lqLpjvM*`jJ_=5F7OhYCv-d4`=jFyu_%kgpcUa!ti}3MtROi*+mnQ6timDrx zd;KB;!ut~XZ;I9@RG^fKu704dygi{?Y~88(8fbRA>Ti90hApdeG4+@mr+RBCd&_O6 z1scsjRdEQe9$qd$<55wnN7+^Gx9IGePb6OY>EO_0fYMmCKZ4uOorzm@)vX)&mbYLJ z;y!5pk5y=XI+~Zfr2mcak%$^pR$n?p#9#%~ADffZw0Y0qe$60P0xyze0;&oNpuzC)w*>fC}5|y&QNWk5q$XpfR@IJcX2W|w_?abNB@DC2@~0(pan7N z^kJjAz0(e=(+?IaOqg0p7$!ZexBVHh{0Zn@@6xn`V96;2?tW+u`~nMnkgpeBtG+8E zDcuR**~E(t_!d3*mD%2Y90H|C5ZWH{;NhQX*sUNuhb^k8!yawYM7rRG5r?_rS-foVJM@wY8hG>=ExMMZzed592$Py7tzBgX4 z?*(fNelf3FpT~r#{(Q&#wizVF%o(IV@}PCTBjkfglR$?v$bAdUl0JpuTaWsT{3XrT z9>Wk`+B+UV8%S@9!veXU{QluJ+@(Kq4e5*j(tH-Zbf*-15%4o030m8ZdMwR1k9kzz zKdc}!Po0VS=uC`--)nsTK-941s@vN4ZCwkD2GtIkaK^m%FeaYLUN@Xy3At#E z9r19CBLRw`%tSVX17uEG1Dm_XsESsg1epdCKY(@UJe_{69J12Bky-m~wZJ7`o@6Je zb%0~yYDv?s?0-s<_Qo1a1;}HP(uSjrhVJxJ%rHKhc%LX2i1`4=@n#0@07ar9`q4g& z42jBo;Le6qg(yPZ{IziIe#LW~dL%CF0J`9d9~`%i&CnnXa_Kyt&Ra2v6rG4nv=4`I z9(c3xXPU2sNcCqXh1P%9d|izXIzZapv0g6(sBVxGpYkJXmhya%y@V7ekr(z*k@LDf zik$6j!?Sn2Fmfh>AVki`-gS_Z?H%JAoxu6Ko7l-oguHmABxDyGA$$FUg#7#~Cgc|n zMIz*yo+cq@qApR0wlc8ExvOKsu)P3K6SgznAvuQ;p^GjVM5rU0uZuybAU?%f8T{E) z)qG)UlLQ&Ff-dDa7QR2wVB7L%OUE}cKU?w-FDuu%vlT5$yHO}P=JBohYGa{5Bn-y7raDi)(M%w--8E*^Z_ZUmG4Ym5gD+QFo- z2ta$XV1L-Z-0?Ng6fM#YZ^8#bQ&3#gL%#1<~33@kuJogNG%$Ro4)Hj6UU z#l(=)geJx~Y*raAw;u>)yKP=vANq{BT_MsT&7ej3+eSZ`Ar`?54fF6k8XHT4TO9-7 znDO5b5r4@fJN~Ha!2d;e{1LBr40}8Nq0bEbA%3dE|1DSi4Qon`{}A?Lb8T!n5Sjf) z)<;4=IxUp_>rpq&hiP>ZMhY3nV%!<7{Kqgc@Tc+2_OX(S*M~e)==Vym7XAD;-Oxw8 z!O+!iqdzj@bt59)AT<>6O)we_NpH+gn8^{w>6W=lhE<4rAPd3OV3{>!rGErf|GYOl^!Do{e)snO+1^H$IryuZ6O1ZMLkH|LO}$7%-SOqlgdogq+i`L5&jc4MZhcH zHbM{^nbthHGXjq#lBrBv{NXK8NsDOYh!^l}QTi!~Tk-+nvgs*Vc#JgM_5I+>f18a+ zq2Gd6+W%-D=kY3VNx;yzkS4eySArV_aJ4|+L1N*@3~d6SMVWzxnI0z||CwP;0<1W< zj*WRk9MOc2>81cREPeI@PX@3A-nj(cB?R7c7I;?vF*{R;q0^!OzF55i-Ymg5z_S7^jNfhH_L*i1q=_OB2K_v`_L}124(lX(zpSa!WAE z6;g)(XF9`c$cHH`hWZNk*U3o@_k&yDwn?I}_CAE3kI-H@j8d2OR+Fu2{K@v5{(4&r z#4vvy??&|3sa?}IrS+Jq{Pm3siC?D4kO-sE#?59_jOec~WKJ3W`a-rEa(srv{v9|J za<=hPbWeKh@+yMI{t1X_P)7b5^k)Bk2W)xrt|;Fd5n`E_?#TC6A(k96U-^&y_tM)V z`R^apw;Q0CgJgp)TB3}36imOk8vnf{|2+@kXmdfO?{2#CHa8T$yUmkF@Z`)7i29}* zKaEz*)iwq-bmJAA#@FZ4sV`!nAU`^egv2uKId*LgzczRyXd2O{f9NpBu1WeDFZ2O* z$iRK?719&!VbdDYB?zBB)Sn+fo~s!kvHZ^gi;2dHYBpQ{*nIk~hU7Jjt^iRI_+#@y zcfV=OVAI^c33VNA=uA?74!55CrUtY~>U8UopQ-GFJ<2|mLWq5Sf(pCIuu6U z;37%h{x3TnCp9fX>H8bGUM}?g4b%I7fW95b{0_vd9Uh6kr($?1ztltKw>@k!-j%*@ zC==60LW{n{&k*7(`sNRDq3o&Nq)_Ndg!7`}a#1#3m`?Dj43)1a>m3Mld> z-mJ)L_xo==5Jui}Ko}zLle1jO8{+?8P}fdglD!v061t7sV~YWF2_RqW6Y|q$Dic~4KS91!6$S|P|B)(SxxZQA{{JZH|L>6g z{~^QwpGWAJ(e|s>M)Ln3vHbsm@c-F9v-$szltYK5c^4EUlA11hL@Miaw2dIKsXq=G z)};{-coqAPnel*+T;l;)6vMu0_7@Eiefx|5WIW(`pzax>7yeX%S5Z8(O; z1CD@%2L3Yk#o^!skRH{bKk|7u^zHr^rLcvDLn6k(US1Q4@6)deMSK+M8bZGMc)(}R zDPe~F)g)T3@qjhM*omf96Y>-t4)$?5{7ke)Xo9@KL1N%M84uVK77u8@16Fh(=G3Ej z5-A?=OGrFm;oBs4jd(!2OJqD?>80>+KTma!2b^kwOA^-s?x0&FxWl`Fa^!8l`j(6b z09ur-c)+;r4C`=?6S&0#6rhIo;dnp;080*d8v?Hbfmi!@z=EL?!nHJE3Bni&;n<%- zAl$Z%{H~hB1Ezv%Vn(;W9}jr=b>L;`ppCp9Y{mmtP%&~m;2%AYUPc5?guD-r2sr#> zxt)gJ^}Lz+SXH#eGwL!r=5|!SV|hdS2U8X`e@)MuvEt>Kft#ShVJ)!J8vUj;oM^9n znhbCV>5EoOrPKbT`JkM>9`S1by}eWqe-u5D>(5c-z|tKncU!GL$5~I}jZ3-yeAgVJ z(p0i4$a>q3br8dGwI@Q`_ur$Atu50CM&+~?AbT*?Rf4ud8gS;3-+K$zp9+!!1>3KcN@5ksHpP5KYoL#h(#Od36p|k zd+MNyL9!ACl<4F}GTR=7rTHeg2!6xjIY?9r#B65gk9Gu5Cfl2b5c}kE z1R1usfq(4~hwW{{{Vz^fh}m|q4)zL0rw-J2$cJS&SC2Zey7tbP0yS@t$^E({ynvGgWwZN$J5sjeh2%(Z)gF#}gE%|#TNdmF~Mh1wPzv#A{kcGhj?0CmP=Q7$Y%W2~F!W!Cl zW}ksf>a$k@!sa5KpI6;~^`^wQsbTZc$lrG{cH9^IJ_M}^Qp&S}EFj|80ezkyR{*-q9Yuu7ylQs?{M;b!pF<1V8hoxyeL1e7VBig)bH%gv7 zPv#in^$NVMTAE0g`Adyvyy4C0TOnbM!HZw@eE`r#njqv-U4(hNV-Nr^e|Kt!NrGny z*lx~4H(^D}Wd;8gP>g?nf5w+)(U>65pRmA@A_`z7Mxe3Wv2fx;s48)0fR93Ok>-FIvok36L&5Oq~Evt{;A3z{QvIMguTR*OU zr1<@=UrB?_T1DNOrqIEcq!L&8ca$Ec^6$7FC)>@$P5Of_d&jtx0ei$>jVEU8o&)ws zxRMVLu+Mve$@vU!k>;$2;J;z_1g?yA=G~d?`|_z*EAI~Uro1}|U(7Yv8Cnk_KA#{J zZzq6Wz7MGZgQ&JVl=a`))SrA|9xx{j*nARcK#I)=zcz<9UxdbwU*2aYpcS8gAG6)c z50fAov3WPz+15SWQ|}Z?nMA2T%w5-V;0+XDyOeDpi9%oONv#6L38#BJ^->;N6&%bbre0j zCfexPu{?~P4M7N^=SaUhJ)QCQ7 zIo2}RpID8sPQFIkTpFNEbFiraN;7+@z(3$2v0@^URTtnz|{t#m3B;f7l zI#h$$dNK_XWy04mRxWxK85XIXziivd)dD2LAyx=9J8zH~bI6TD@(=*nJB{vv5_!}nvRD$E512zg^buxeA7cKD119W`nm^##k~_<@pX=0vS~1U zZS0j9aW?iIhQsfUZd4e$Yf;x8@{SW@j#6mTzDP*?y${2{n4#oVTKnlL{tgVOpwPV( z(lG+M`Gs!ihQ_pU3z32(3uR6Y$7n3UnYAK=6jgrU`z-Uo!pKQ(y>0@Mp)96Bq8!-bS{r z@fX%!!_yH#=ef#cbOI=$>b`GVG}$=SN)?Imz#>To*>p&mWiMJa4osIYaWx zn(wfall@;vG`DeiY(6mMm+?GrNj7RAX1f-NkjGzO5^|riQA6C|2H{A51E6UPb$d|R ztH`gri0DM0mpR?wko7IHfDHc^+w#D?rVufF2+db7#Q!ZK$j$J6Q-lWG{ojc~stRZV z@_#vl-?pSRu^f-B6tam{3fV}A{(TO2_^McOXBU!f${l{cW~pQ1!Uqg@*un1_`oj+Z zHFt;U9{N7qkt39ax=#NvK2#QyzjPp!m7)IOSD_V@!}JBjR0N0VicxM3)8FuieOQQc z$9J40zRe%L9(5h~e(Q>Fy-;*Q@!bWw84e_etQEf7AV(tLd-MIS_}1DVp3auLTMF1@ z+FHTE-n&uP=?}lz+>O7@ZRoiA!@q-W2EJ55q5Cstdjxbx-sgs{-G8B#yQ=)*cVCIb z*H>vz3J0QvsB75+k^JEuc}l)ii1Q@mk^SL6dqnn!PfC^UT_*$}q(6L1k@Sa4!~Ef{ zI8PQ5^G-Owq5d#!xnuW-%X}mT4S%@%Nq7wZllJozyG{=Ahp)51BPs^${_v=761>S2 zHX!e_6kDA@-J}9Klr4Yw#YGHT8M(g>e;C`{5M&O2_*_6o@bn>g1`<3q_lI|1Dj_;b zvyC7+UqUpmBm|;H1W}d#@EVXseBGk<{_wJVz;7vlCRj?ct?$;QVq|~#?|N89){__t z(d*_Ble~kE$Uzw2SIAs|8!vj_L9oRXr_siDbrZ)w6xAcI`S^!CQF(C`o8W`z)%Wa+ zaSjveUP33TXuhBK&+$$xJ{9|e=6;=p^QsW&)I|o4aKLeV8tsaui{N|MugcyEg3M$% z%txQ}{KI=q-9sj^4ZaNDdI?{KznysbcA{6zTPx&9F~K~E!E9{rfc;|w&a(SL;QY#j za~2@8;Or3r&V~xkCKAp_@YN;w0x=I^rkb!dVb~hkVVi8g^)+okY^UF56R!FWxaQ)x z1ULGPM2AGb(IX@S8#Tba7N;9BEc7kc>#jOBwTAf z+O+W5`MNtkrzm{p-)7>Ij28)?nYdLYKH>a1k|FUqAH5m;c^#)t*BGBmBkR)L;FgTm(w8$O%QuLV9@WdGqNv}xfJ9RZ&| zhsg1>@fH)GL8waOrx>>^OlriR>w8K541C4nPyO29Gb*yYdID`)_;f+ZjX&)bKG7CF zMW{;n>>XMSKH>8_kS_5leA&V$<-A((=e5Z4YAM>Z@EL-V8$Q?GEcw#~z$@2u5vmeC z32yip^Lt}Y$9x;W?^K8}@>k98pJO7<@2SrBn>yaR03|gZjQ)l=>wiDnE)VKi^)bKI ze!C++Fl?s?`|ZB=+ChYqZ2Rp#-bC%U>yH^~zKqPPknMLzJ;(Nih#KO~Z?$LczV~JS z;rs9Yk;n0&D6 zZE*Q?$>+Y#2D!B)ytlEV*;?rSxV+zPKEF=_nD*OkRyS`_S?;m+@5W}-419~ zuIHQk?VgNwq@<^gjz~=PVdkWKme*V>Me;{wWoc?GttSxA zu%Sy7_UIn0!B9)Z`Ird^r=?YHpxy2flaqV6Q+xZ|%`%IB>xqZXiR^pN8*m@Xy~JnB!v( ze;PHLfHJzkJsg>ia$A(~!3Xa7(~?leKdh>B$Ip*q?MpPv=#w&WI!{n!PGg^HzT79u zFb7GbfKR+!O!##!wqpl;hHP+g8Zjl5)#NizG_>uLn1wHmR)o^llAm&W)L-S{A zi-^OSDa&$q8RstGxmGzimAd9XLaL{C!7?o+E$O}!i{iBWw6>m}zG94p@jNb2KhUhC zF143BOiL-tYm~;V2DdO@d*XzR%5tMMz{l+mHgBl>sAf;bPz#igq)|K=?KG3^pf8XF zy9vp0Qdx!_!gIgZ{5|3T7KUXpPF}~gQH#g3f%C~$l{8f)S+yhSFc#>84%r|>VsI;qhM{k5)&vmJov}D0F8G zFmbH>Jqg$DqZVA3D7fw=8UwB@Ca*CciDrRjS4#S8c%EBMk3e%{UJ<;Qqxd1pE#m@O&$VymYWq^IRX7m9lHx za4W(sGr@^INRETb!XVL7e$7i|BvKCMVwqN#(9`oc?*hyW8j9(08Tl(bMNP0u;6an# z$BE3rS3#5lnl6xYdgTV+GO!}=>ma1p^59I1xVQ?#4=YUH07b&@VlB|&I;8%{eYN^x z==Dg_+O5j%n(6x)i9wm|cH^*Rptd)|w>QJ{n<$z^sEuq(sKte%rg{F5?al7AxW{Yl z)8g`w|Iiqc?_1)5|B7Uq@zEp?F{kZ++=30pw5v>wffKqOOy*NQFy^oq^kGqn^G)e= z4-h5yFcBq{rga|lJLLKykvfBTW6BaHjtR($zOdSL4dR0-#wU&Dq; zX#cE6>u35iu-{;#7eV=ql+}3+Z20?@W>oS?=@N@DePPlsIlD5iv4e<`|Ii1GCW2Td z{jyS41gY>JvU~h{kfc6%* zJvR8-+1o^Wx2g924tz(Z+i)fLO#ixxY?Y*FAR}3PiB3(Kr`J1dSZU~AKTG0+{`I%) zuqk|3+nxtPpR4{j^#Tz$*g4cAu?)R}9o4c+JjjrdRw3!m`phux$X*<+OuK*7UhJhB z{U_{2r@f?ksBE*3{*Sg7XFNlrg6+lq&(bB^i-IrriJADVk-camflaj0@R9bUjU;Ry zNPBUiWiMU{e$?DvWLvR$j*nC#^32oP`pRG~n(`X*<^b#!$eUp-T}a;Sz`08-Z#2mB z%E96G;g>bG4|B-O*(nXgg=8QC1e<}#SX=*@_8H*}d(n8q-Cn#Kax&Cjyr?GjA_KME zG_ZnC8xTaa7YUv|-h~DY<8ty3SLU8$vd7DivQIXiB_iv=d7!JbP|ETKGI23&*>3|~ zq5ZI{j|qP|R}3_JklumHEK{Z+gSy-VRUZYMZTj6bE)_r7ew6m5Z<&52DjTTruOWY& z_9Bf6U>0UCp5S6HZgJR)4BbjL80)A8*xoc{XNW?V+FNC@CxlvzgJ3aEmlh*-;DliX z>cLhdn-LW052Fz#qqhDaTaBAEZ@*2Mf%8t$3b*EZvv97&S{lGZyLZG({bQ%cGV?fU%dn_jnS%HCmb=a`H z0;CR3V|z0AZH8xU@KqwX3%-=6uPjKy_d!^YHh%hhCt)M|wi+fO@Lg3EzR183=S?G& zFKe6W*~j=^#@6MD(z>+co9X#o+84)RoWZ`_o4eJ!a3Jj8Lki8$rG>dtVv|eQEGGTk zEagA5FOPZ`rXD35(`H{qwl87(Df`lYIggiy7%vzsV09|S5zV)?n3|9m$(@VI$=;2z z8EQ{eX+O-iOiy_Ra&XkIjC&?FpOBh4$L1_Wq9jc8R?$nqO#dbE{*6Z}ns+d_L9Q-+}K1 zds{sJjreXC*{We*<^mB@M(T5ZvDugPt^V~a7ku@Wmi^fw^tmD5DH-zb*_S6XWQKj| zSbu@jOYqy)i;u_{t$5`z%nXDK|8P*8j&1AB`_ z=leY!@8zH*-!S{z*?~u?9Pe?WsiXb{R{g5iE4Rs3MEau^{a-(&7W5x>O+@-nK%3V1 zIvpi9`p;GL-=AU9e-x?`{mXI7pp)@i%kg#O9Hx@E#b@ES`s7;RS9Enm{AQs|3%?#H zx#73wCb@3X#KP|xR3-ePBH-sbzPd$)c+bKRo@(6NxUA82u2*+=f1B1D)K}+Z;+WU^JRM?IG7WE3UE-J zDa20ZM9-!`BFT_GhW}*bd+xp>gby3&09J%Vi&dWN@<&Md4xlBB3NaC#5QUH8CNafq zRtdE^Y7us9Z*$N^GlIzf!YyO4;n$L1z)!Bf8YnvP+jzDdX$>WQFXOE6+Td5OI{bD{ zwBa}BMu}gm2>6w#Nj0OFiQnm{N+j{)RwVqOe+=ZHgq-;8mr*Ox9$iBTt-!f>wZZSq z%d6pEv>m^a8zg?0;-(w_cB@JCNxF$&4^$=m=HgZ){Ho$#6NO)2bPfEz=R?fv%3SUm zjL%*;NX3!25js9kFSPM*_w^FL8*tMNzj_M4?LAHWhM+3pw+6TD_?h+(ot-Z8*H-c9 zH|F*myX`UosMVJ>^;xJ!_T8ao{HFc{l^x@~s`1c8#`BE%T(_3=N*YiNz4qtZ=w;03 zj&Q===w;03c|A;ebwO34*K@dKrq@z0pgcjKlTe#U(M zInBgxB&rgATX8EAepT^r>KPJ0HJ^v#WWU<*Z*q0=s{aHVe#U&Bgqv>o8T0uB3%{wT zO8EVm>cr2O&+|`=FrT-47c!rHvZgtoA5dkU&#aWqbj^A4ku50dd_Jj~=XY20ykFRJ z)1K&`XyWq>B6ybV(I6C`cCw~E0@X-9wNT}osO*HdV_1LA=OW>Rr%C#Z zpfc%W8MBY6m?VLTeE$2xA^B*PKOI3%9vyWNlc+F35hKWX9K6USYotO9zt|y)Sn8_& zvGyKwljw3p#6wlYo|A!m>#@;-_zqh?Knz^d)s$S8OgF#Qk06(z zCuQ$wSfuV7FW&za==-q|HZ~K27qwcWFBw;gmRk>2!q3Sc9Uqn32w%;oN97C8#SeL( zE-vbkpqBoh1w?=aA#}h3vmpeQ;cc@D59A(?EHLrNI3AGo6ewrXy}k+*MBy2fB+*WS z0;XjqCK;fViYZ(0vP?F(U-p>9Jw93|tjA=t$7aqR&!QeT3yFNP>M>O;#A(-BU<_#E z?~y8dM4UduS0Y+koxUeKrAW885P7H)O=M$eMLjeH*bG^RGM&7II6=&;lTp+o1G@`| z7hc1*1;o9W<@uPsfjjzW{v^;9e7V@;E$D?;3W~i2yWujcCZFqZh^U*)O|HfB{oZ@( zc^miWgWrB}-o{yR*aF*^o`5C?%O>x3G}%NoIooPdvo|?aHrd?UxIbR(6{jJE$Gfms ze2y<2*?u@?7nxJZ9Hq|mjfOKlGPxulu5pxSuXkzML1g7TL^YDQhH>i}UOjW%x)2jf zvzCL92_o~PNX}@N9;(zEVc=r@iOR`T&X#43@;H%dG6140_#yIDRJkXWpFtV(^DMe4 z&cz*lIKPFsJE+sj+xS|dQVytei=vYL6=HR?K7soky^Ze(Ls^eC;ixRrd!e?<=c0Lm zrRd5sO80E5FaJxn19(yIFxJqldYEFWUb6lSp744I4QBIxl751^pW)Lp1HBS)V5My7 zdTavizkYtL@Wt}!cA1Dq{1OFiVFv*uut59f|#?Dhb?*!&Oq0qIZaWt(eDDX z&sXRpLA2m@6F&Vul=UpSxmw4`yB6f>o%iT>;s$+)z7*#{24A)dKU_oD6ygwN88m{O zipzM6wkR1i>R6wJE;dL>OQ7VKw)6g$jpOWoAhfCrTNGIiG*J41EXK^$u6qPuSTvU=V1#W0)h zO11%l=>|PI3c9P3bk`vM zDhXhyMjO7|)M!shIHX343V{Rr1cI~Bp`=0f-;V|8K+|3djfYN9QgOUwB_nEga3)&$AQBSGfsD=I-*!T)nA|-b!SAgw- zrQ<$1z8-x@W}Nhrq2;#WGtJCE-%J{g{y0);nSt(!mDz)!uHNNm{wLKeF(03d$Kjes zW6iS)l}*hvGFYFR@M1K(cmhFYe_aBvf2jb8VJ54=8W#qpSCGikkKlx0^dzhKYfEu)CW+Yp@r4UePTQc;zL-zW=GEl zpAy#yi0M5f^%La07lV>$8y2L;X5d}qf0HFi2m&5&2jX&|N5M>=gh=(C$&>!-pvFbnE zKP^pV|1{g|BiujzUVV0ZXGkAr`+=B!zX3#!u(N;qD~v$+nQNll{nM$c!Bd#DQR@SGczhpXRF@^`{``o*7CDlI&D zIhpVA-Dj-JnbzfN*5y0aHmfNH~ohue;LwGY{De9^i7}7>=FYKQRnmhJo>w+27f(fvntP`a@FH$ zt*rY0#?$}W@l*}};T!%xc>?DDujRifPj>!c%9Em@c6oAmWr#dkENkjFp&H4P*H!s) zDwBOC_v1_Ar6Y)rIHsPFzk&=QBLyi*=Pt#nO19i4pdE8b*xIMY%oSog$;dy-=}7O| z_Urp9B>$+#5GZ@fKSGCO+YUh|Wbu#2eYYjysdeZxb*%rkF_*l@qbl7JxMkR24*cBK zyKVSo;|vGP9wCl0ezOkL0>6nJs=;r_%})IC(Fp3%uRD)msO-}q~ACdTdi2H8%ZH$umbv@1GUool@er<8< z@9=N(Zi!!8bd7Od0gJxIotO)&8*M^(a4!z~j( z!@ule`X6EuziQ+koxLn%KG&Bu^(Rn`=JTQbjJ7_3%8v0~&3Gu=CF!*ZFQT2(YD2H5 z&#s1EBX4xlYa}Cu{4(5kqt|RTpWC-K>Gck(620Pa%cPfGUR5)n_kJ(&J1EC{8t7Ex z@vr~~pj0WZrrzMhZ>pNlYjEEUzvXH^_ibh3SB9#DUovjF;#Up-;uL=I62F^%tp$Ex z%ih1{laTrR zx~!?sqWOz?_^c}P{I1P>9*zSfS%1m-ycF%!c)XWaEB~%_(koxh=dHN!HXi1y`F!mu zCcVm0mE|99ne?i~e4dQ6DOi6={3?E_1%6T0;kW!6Cw{ZleEt*n-SFF}=JV*2P5h!1 ze#3Cf6~Aic^E>4dzqWEdduoGULUrWYCiYH zeK-7~6@F`)nfPU+D&e;Xw_Ne7Wd6} zEzMVmq^spRl3EhS;&FxeZ5ez3WVof88EzYJX19?gppv|3QM2p&&MbktiH;06MrGlr zjEc-~!|uF{tqF-O!EMeUhQvs4yMz|QZDX<8+?X%dnoTKmd+ilu-BidnS^neauwVn7?DN z%0Ni^Q?K*&xK5GbmyftcHrME5))?&TF&O!IA{!%;hGL+{P?gLW^TKtQ1^#5pR765u zZUQCKy&lC))0pgcsx6sr78=z2_&gs$8f=j<)Vr{EYz{WR^DgM!ps0I;Oy3Yrev_Lj zA^ia9U!$=kKT<2{agULM;GKjoE71z*>PR{mMz`elaz;`d_M6B|Om)<1gVnrYj-FqUfdx4kS%{9 z+q|Ex54YXd%=?=D1Gk+D=72cn{Zu_&-Or?aj?6&shP1&KZ4sdl1&rXj%!HF!5E$44 z60tiNa^NmrA;TC$=Tnx$_msm{AzppgmgO)V1vAwxz=Z?3*uVk#4=4nY39(e1iMPeO zAMx-)N0jN1O?_O-eQa8e35Hupgc*={3Ex_YTlxqPn?%Y%nr$ z3NC4?1sYkZl;Jny(Om%Q_y=eoPx5(lyIRS2S5q@IEM>M`A5~Pz7hP3RlTXj#jtpHq zFAK`v@n`n89L}zLe>xJsZT)RgMb+OLRaE_bgdz}xV4>W`U~>GwZy zS|Lz}7aC0KQ3!T z((l6`;Q4CT?;j7SQorBb^#2d~eULX?zvq7J)bB&7Y}4-psO-@1-ErstKK*{(M^e8R z%(dzF(${VJeF+Mtet(M#O25xULF)Hjcw4N8nwEMrM86*-+2YjiyKu|Y@9{Lhp+vHe zbJOojQ1!pk?=z$a`!DL(s`Y!Tf4%>z^m`c&IaK<6B`!(7zZDZnzmMD+N#8y|%~<;V zc2!jR_F7d``Zkk0GW6}*^oaUBI%0qIo&6o2BfD4q1yxb?_brN+e!n5SKc{{lWF+9j zf4`SxcB8(~xG+*#zpEtgP3+OiB=0sz@NNU293O%;Dr4mg*Zf6Wg+x?HWT!pQ=ogaT z~KJdgC5xBgz0e$;2;A*a|8fz>Zlk!#Ux3>0%nag5Js|l57rnF0H)fW54ei7 z5GdC%19BNvC4{rHw5+jn**e`zojpBeC;Yuy{#J|mExIDB_F`XjOJ>uC7! z4;nuF*wNvhIZPenvp2(kKc8+nzjHegX7(Vb|8Dr}FMj|nP;U9>iD#nxu~lwL<>}I2 zm-)MOa7VuvgVOw-z@Gm<#^yh#n%@hg>iFo5zb}JKFuyCfhJ9zlU$^d`hWk{nO#j5@ z=Tq5lmdS*~Bvjw8X?jyUar=JlCc{6s^;-w`DEYsVzEZG0PdJC&-r4Wd$k{B`%qI1$ zK07-BABs?D310d>;X%Rt7U4HUXJ{nC9X}*~KtZ&D)>W;Oa^~;eI!J#UlQcM)JnykI z4WXGAR34C!P)$sR0f`;C<~*voG>C1}4Jhe51o}pSy#6GB7MvEGuHz731Cijz;_8LC zy;pC8o4jef^)i3=CQ|76kGN~v44t^MG<0UYfDa<#P*J}H%>?(DK48`Q^ye=*s9Tbj z5LF6q9e>DYYO8*e)Niu-O;x{|`ps6qSk;Ka>x1d1B<(?`!(Mg&cmM1CSEbLRW}5o^ z_ZNw=y4ZH)fEoIB`s>R#l0JXX#b19N@7nbFbX8RP)vt<5zmDOK41Ip|l8E}ef5iS$ zoc*2c?C%t3f5$uen-tz(M16iP4pN1Z{u4s9hWcFU<0|y|izJXE>+>Xp%Gp`3QlGz+ zMrzcq&kxR(O2g9Uy=JhQf{|hS#CxT9`}yki`CO?HYM{?orxGCMmvXGnFF93$Qk_13 z!2r!gpZgG!txBKYM$cXJ`3Q98(C4YBSUY`w=@)sKy@8cRl17&o`<^HJ-n% z9@TjMA|4?@${*fmVBGP1*`|2yUF~e|5@&m(o$U>EwD<0Sxb2mFD7u3C6c3}6h2zP9 zU``JgV}Jf)Su%VhftmXS&1%g06CL$8{wb>dE>%C^Hrs!=zrFpFqw8NRONMVmF{^$vi+>Xx^*25k zO~0z2?Wj-rGU)%t-u^w&^}`1JC}y?a&#FJ@6j#EUWX!HDCR}I$LI1UoCBtn{%&K1| zO@ZkDe)g&-8&!o6u>WPr@Qo;D)o*6;Z=$3A#s{M5SM{?U^_N-vJMu4k`}aiGzgfx8 z78F|?p5b`C*bEF*A`5(d+g;WgBlf?FHS=bS%QTUd{Eqy91wrLXYS- zo`Y$LC|mLoJ_}W->GC@w(e=U;S#ZH_&w{@a8!Sto5m17yP6woVr8}WC*6;HxYfxH$ z?{Zhdyt#vbcgRzYt5p+l1fhA}p!178<-7Pa==>`^Dot5wY=<=c6bw!jiQclEP1buXy>jjU;pFKw^(# z|H6_z%(7zLj>%N8_rf2K)aiS_=S=M+e0QYps@{O@%h5dxej-Yqw@w+fwxoaFygLUa zcoy_Qd-ScmW-H&*DF238zBGgI^A;s#_{yqW{FuStP%$BVIeiIzjQe^O%)NL+n3HWV z`x-D`BFsU}Jqx;{s^rS4NU5ryA-QI*s{hT=BXxONg~Iww>~R9Y3`pWS+{A zUCXa-bjYqy-_gLQF!~oDy55Daxs`tF&DsF~rSwNRRbg?V>pS>Wdjs3ArFC+=4^QuZ zM9Psj*lQU4EuICN(3sElFZu;`m%Osr-cHFA_NUS>B8x5g&%iagf|pPL_?E$(x}u`u zyqpmb=qCs=aFWpl)(h$hUnq8(FBY^0Q@v$%P>&>}SVRecDw0@I%uLncX69JICC`HG z=!LKwHH&ecX0MM5zY#R)bNY$(B~_d!Ey5q5oW)NH@_Kaqdx>j=Ak!(9=UF)-0a;0S zm9&QP02UNv{KWj@B6&PK&EDs*cc;Q>Vw%O@F$!&iPus}5j26`Tg16*}?*zEZa&fva zl%EceSXp^f@g9%Dw^Ptf6xB{H(6;0)!iP44?)C6Ccs&I*-m-rl$!5VE*7Jq#$|kD# z%Q`y0G6!j&Hmdw%Bd*iS~O!zCj+D0#k@j6MsqavYNlsQ@3A_+(W0e(*b zfRO+c69jnc6X55kLW6f%1o*X(wuR`UupNEYHP9#VCi*t)ZTBg)+hC0MxUC^o{|@#b zZ{BSgxYy1@=TKjHT;ukjTyVI1QNfLA;~eBFtv2Uh>#7~_o{kN#w}c117K|FTI`) z9plkfemBj4Xsi!}-w_Z^U|U0ipZcaO!FeCFELFmzQR5e3!!=MeaWut!%DIpxc25O9 z=a!VAUxdcFoOm}JwVbf#OS2?=5+V8@&A`j>!B8il6amQS_d5e-znl0Q=WV+?;XN(k z-R^{^`h6u{Dgg3(uYr{E0U$S+HW~e-KX)$f(+PCWV^-Oagp!t`Gvqx*!sfuu_w?IX zGIu>iAU#pmy$@MWe2GKIcoxclaXDe^P7^Rb>MzJ*`=R}M<7-B zC7Q~G)5zeP@f$rJqRAZcEO53za7{8hG~_=0BNqi3nOERCLU#*1`n3UV@gsIKw*&rR zTp5&ItG|qL2g=<0@r3Vjrd)=7HE-b7WPRZg%!Pt!A0pqYwa0+uzH&%nLdgBOg3NXR znfGDomz)VIHTPDe0cssf0MwP_F+mNHpq@rPLQm0jC!`e68*pP-c5TSrl9hxOR;2p1 z-pQhb`yg7^uf=IUfc=-kFy(9o_6uksF#G`d66`(;*GvWWBUUoO_ShmyxYyuEKU^ii zzR426whER|U>lTR|0IeE!eBytWWqc zfla=LOxC&3sPm|-^9&0IQ;w@T=Zv`1Bt4HbQ2jGY0M)blDNqLw3-WG3 zzU=Z;q!iE*kX%ZVi!v9@k2j%_;9ziUBSbefVY?7#+ z@;BuBv{ux>wxW8CvpV0SI)7OGJfr&h?*y+N7uAIv4~J5O++&^9&y&^p!|H#8c8OkF zD5|G)MZORpfdalC`ymMa`k0WUrAV{RX-1uKvdLSKkL>oyCfxwnQ9p;T0x3m(F!Ry+ zBX3qmy}Qiwi@aV{{=kfmx<}^e(8faT%JslyT1WlZAyK&>3i`BOICz1AU&*}RBF`I` zgzMaHTaWWd%+&hh6Qfa+cy8|mQxb{%b=}42sBioHd$H>iOo=f2B9;BFnf(T{hpFtp zn%O@yJ5yyZHnXcXBfE{tzS+#afTfR}A)CCy%2H+@T%m6cbT6aO#6q_iXZ0+g$-R`Aes<78H>6LE4YX4{pa(1LK-cwD zK<^8$`%@l&wCJ;_F~h0=otoqk8{&38rBJ~w9VIY#Z)j@pZ(Yu`Ytt+;Kq zy#ZPvw6^8|Fi$ryABWnI2OOsHX-BXp1oZXe-`TsJ`Y0+s#EO(ALGr1xqN8WNgkg!< zGehA3u~6w_Kpf$K7@FUZ44n$t237jduJvRnt2fbvbRPJ(g=Uq06M*95nZQ|hpgI`B z923>O2qdyl-G=~D0d=VZ>gjQyeuplK33Uc%5~e0S2B@%5$$9~yQi}XEWcvDfrXYBE zINY6~i1y78rFm?N<$px`okohe8|V?9FQT zVWCfG_m8Yg0TOlFpl-APJ?0RguBZt6o2*}iiheDFrgxCTl_=IS>-FzDOB;CoofL$y ze$gj1zao-glFAy6tVm5{bL9QVmyzm7m74J8O%MybzMi+-TV4V_+GbqW@7LBbFo`#- z!LWySFdy**x(C}_3o1Md?&Q)8w>= zlcr#4D%Q#9hin{b*Zm7!32c^8MwmY0yd=EY`YFe-{}@cEy9eo|y+pbhOOLr5JAgST zil8d#PsEq)AE3WclIy8V*}cJ)Ac^&YSf3;|yc~5zyJoo+svHV=J+GY%@`VS>R87Io zo#Fmq0n7!ExobHP_(qIwd-e4n1F5pL;Av&)F#Sx({mFy+!aLk0ynawm7N*vHZ50+_7+vaEjoSW!K}tUmi5S^ZPcZ>;R(Z}fN%frkSJ zz93KejY6tB(ZgPjuP32PMyC3MGk~}5^1~MmsX=CNMl*llj%0aakNxe?F!rlvB zhPcYC^La*AiUFZY|M^yS?HG6g-lGGjlRq#rnLbju729KMZvP%^1=OOt^xxi`4`!#q z6_{P?%c}MTTfOhA+|x|Iuq!8L^ z)L{vHg8+V{3;0R7^J>>)U094$Zeu!{N7LJime3}|oX6ZM^#tS`C_A6FbY$|VU@zT| zXi&kr%_KgMHjF{Wfs=t)>A>*I$bz%Ui=e z<@X`OA8-L+=?0rR4h~6m^lKGVN0@>ZC}qJdeU3~Ou=fE%Vera|Bfhes83~^9VWNp~ z;*8!Bu9LNO2g-7jVVqiJ94Naw8DBJ5f+9Zc^bC>$S-y&SxvW-pM=B)n_5_$PvUoRk zDdu4akDRXV(WkWuB@GhYPJdX=l+@X0djqX@dV@nh5xMA|FGVY*Smps?sylWxIsv-A z{$}jqzYRI4XVI1Yuo=RfDu*EiBs$eS3;qrr1-AwD$f5|l0o!6gNxt~($x*!nhL8HR zFQD(5z=CPdc3@u!djysMd+b7dMYFM(d=b|}E4)m5ux!1u8#`$?q)F%$t`^5G3&2yv zUn8CsaQ!?kBS9}%1kn11xzGuNy`BY+p`Gwy!``6bCk0(Z%VVKc`aAtT)C(8krA;_G z0}I+}Loz^)_}GE1$g%h87ug9YXsLtz`3YMllGI`@@eEB z%1nvazyL%NUpU#~*Va<`diuq1sk;h;`E|aWikk)_*e}^1NUDUcl;GUh1}@3M-SBnj z#WuNd3Bnx%Xyi>8W({k2y+D(eQTcb_h36PYW4Mmv`QS*gA?FuBLvU#|4m7Kv=>xDK-)9m$} zU#(v?8>fJHPMeDw08_+xY52fgJ>{6tnU*Um9izU6$R8}zDM*&!)5Q)Noqn4tfT(JbjGnX06PglR0;uqgwfoaxk0nou2y#Cu?OtRh7g))=tmK_4skNcAHJBE7 z1Bl}iMREvIEI1{$mBuII?R6+Evhd2Qjqk`eL3an_BBCDjyI*9apyqZXN8bYqq~XBA zIlI=g5+*EVISLeO?s872KKue597yZf1xp)z|4CHcr9b}zc3epSO5eT$#qy z4FhY)JsMB^V=+7ysK+Yz2&RyeZxjf*hgr#?Rx(E=tK7FR6>`r+tE#Q3NWzbO4Sw_< ze-k8hk(8cK)Ih@DzZWFz1PP$eCFxtr4$yXm+z%olKoL95eHR|}psZ0PYy4Y+TV&KI zbJm#28k1y=FVg8wy9wQ519=&HX%r+Ktq<=kxa${PxeM)$w^EBb@IKX^`f z9gDTJeMpH3^WbF$pWi^1qWu{p!RJ0`6>MCFCmWw1RgYEfzc7UYON{~{_d{0l0V{c* zmAuzV2CU>Fl?=HTs#KL*lnl8av%2J7(IvefVwWVg7j(BgUC>>kx}?`((IwN*U~Z2o zfF)!X@^lkQgxp2QF*sP|zKm^wR|E0OAUt;=5}#Z<$&mZ~C(VBN8~1B~tz>5_*~vkl7@);}n zluA~)mocR`e+P$;18H@q2+`FalcGECpb#q`G#D>G? z4^nh5?<8uRYSd`&tl?sf(^111jEb z2hqg$2>E2O&9-7|IRXaX6VSFxXs@Ud@UJKaE3z0S8OtQbmk3MS7mbD7eeh_|RplOn zCt9HP_(hf8&_<|BTjt_V8J?ELW5}IqB~z^A$yV|tl?=JvDplpagQ<}FjYm|=n)?|f zy;|>=@uMGIEoc}gNezfMyYzkk7BsZN5CuLAkOXcPE-{R48;~%F0QPU;QGZR=I7X@i zY29UwcZ?bU2=U3f!Z7?H;a*lUO;<);>$c)`yPr< z@LcMqVe0=X82u%341iVcZz+hVx(UBvbjhiL(Wc(W8N^x^!e7X3q|h1vIeiJapH~f3 zx!++boKQa+Q^Q(@MT>C10_UFIvgxt>m*-a+#HU!b(17C6`*shpglSR`Nb8d9RfW zSjk0Ja)Fh+%Szs9C2zBmH(SZsR&th=oM|Pmvy#_X$=_SaD^;?}J)J4Nt8H{6W@uP}Z0tc@c77jD)R?k$BYS%Nm1ajp4Ee<1v6T?1r;O z25Vfv8VC+fM+v`Hl9BG$uH{!guf%acq!1{68={Bt!mAhTCIKneu}^p;AmbxCj#EDI z*p39G%Di17PaO&PX{#uAVQc%5fPXSGm{#;Ka0{el0VZA5;*4&&@-Fy5U8ksOZPppD`fU~mAzYKKQFUSe_ED)Pi5aPv!}xk zOdv1G?C@N=as>F6s=^ZWW{UY{tg3UfdQ)J&>7d%aOuab^Z}hd5bcHB?o7lJcLR_?7y2Dk{it1mDWM^#(swdw_+gOcNYOTS#u&QOR$_@v-w!Y!Fy;d~bLu|t8sd4q?Sqyk9x4gmRL7C&5; zn=tPdS3>F67931q(A-EdhfBEuO@!&ov^<_(3CnCGy1j54BQ7E~Y%{~BGUMLz8V z=>sy74nJ-uPIJyeE>ClM$}t^I&`UZ|C$VjXb0_+lyW}?H5ppGvvWNfz z?QyFLw!U(_IcrO>v6_fo6n-tUgto|q8yR>-!lxe!!|~udT*V*M|Jdp%_KQnLi<>FD z*pTIAAox6N=yI@DYON2(yz4K&{7EEh{EWA0HQyX#qROhy8xDACzIpovyM?AiC%iU zpXjCjaEQrX+IX$(rCP)(MXK~6?>LNtJU{Labn_4CQSpK+0ivB()+@tR(wbO`-S>Im zHY9Sdo{L=${K^;ML`0PE{62deJE+xOZ7cUa18Fw{j5lXXNy`IeE|}@GtMTj)r2BF{ zGJ)gtfI1MJ2^r`4WWt5+8o9MJOkfi#-oM{l(ZrsSA?lTkr%k6GzT-(CPAPrQgoX$Cs+Lz@i&w^kw03|r39lD zT@Iz%=jP0UUPEy%01-#6fZzDkMgGJq#fV*Yq-AMXiZtk1Jre-*K7xppl_^;8s-21; zPJV>cZiSW#KY_xgSSv~g;>1O6Sy;HqO;!s>FOfqzfh&FmvZ36|nO&93D=~+shINbx zPz&okKSm#~HWqt6@8e9rSVzilc6Tb3^6?Za0Dp0of1Nr#^O)%Juym<7UrC_}t z3)V{tR+@pJ9bQa&ch8daPKyO@iUL=)s%i8tR6zL^`g-)XP(W`aPy;_m=#9z1M68T? zBdT#9YIDq$>WVNW!uME@82T&YHF7WEFopQ5_4=FgmEK!qh4nPRMt&q>gWskR_=fC+ zuL3Y7Ka&OAu)cn!VnAd1d+D1E>Th8pX#7R`+Z{EVtiRV^Oe2(X5(c9Gv--R7Mk#{moH8pCnK_ezEP< z$1^3pG4=NwYzL9v3k?MA@M7w3K!J;?zmF?$%?)ri{2H=X0~OGi`s-6bUwgwwFZ8!E zsS*866%{%DO8uR8k*U9jvByIdzfNRHqjH{m`9U`l@<6L4Ywi7WqN>MzFK zXI~R@mdEfD$~~h`LNAO$j*)lCaTL(JsbbXa$Wa4&+?T%`X05?Z3~Fjjvqsn~p@^!Ild^<(R=VN0rV(}_3HLDsJu zfO*Fi2H<~+0oX2ovE}&|HH(g^zn!rYM|ocGy5hebUQBuJsldh5-_74ja03l+Cn(R` zuai0#Q-5z(K=;08lV|yH$5``?dlamg`rBKA`w5c5{u5XJ#na!fxNj3o`2;_)^>^#BU!%Xzuy)h+cmG(SzkkKp{eM<}&zd21 zBc}dN#-0`Vzy9SDmFL~pNN_Rrx3vN{+W>ch^1M(1jj6w@vCBjpyAh~e-(uUV!3tJP z{k=}X+V;|k(i^#2(i>BMyC`rA4RAL68q(iCDWEa+cLR2eNN+ZQ8uUVcr~V9KYiRzw zSX8w1H{k+Pe@o>n{hKk&3hUcmtgpYWM&O(Jn+ae_e>*E&7XY5nUvHpAco7;A5BP^i zfy*jWeL22wn?J!*qg<0zh;krs46&%uiOc{r%#@xh!Up1a@_g>$Gs)|DT6T_5|hcI0{< zT<^^}e;vFmVX1kXs~@3oa!Fv@9s5z!PRGlrV^m-xWxTr7 z?>giQCS~)?a@m7yDrb}DZk!`X7#(b%B{674q=+3aF_n1e*8oFk|N}LDztp3 zH*1S`K32hXci!ni0tC)m#eY17m4@6K`aze6J9fj}Djpk4~C6#vtc{Nl*?A%WMn*Bf2 zMc#&f1Ej08O~E2p0k$ps4wytF*IV zqc_l6B6F%jM!4B>A!WNuzKZm;{K+=_*3Iee4UUFCca+4>#0}nUefKwX;NWmNGG zdk8A<%*6L*;;UVX=oEJEIR?_dF_Gpg2j((d%CMiiOTLJtFXjn#?4a^1=lZLiL649( zI#%Hp9SN(wlbw4!LS!XCA$0?I*lF=ZYn(Ck>3{fR;=0A*C4h@@OBg8_=6dgEHS&IZBk%h;-^=|?Y!~FXO1gUk zOynis1RE=^MajiMJ^guXCkZDj_aVe^8TlACS+4|J^!L5kHQ8cFKlN43r21Nx9TTZ} zG!-~v9~jGt6sA;uY)^o6PCXbJ=jTpj3m@lE{;c(0*EZh9FXBSQh4~1Ky6HMh5(as* z)|O=Ya&`h&*HMI4xV$a~ZekY1eGZ>igL#VX)j0)fg-xj4C8wesjaf-CMw9IvN6t`h zF)#ArkOaCSi$eg6!(|LvQ2W=kEa~tViEkks)7_l_U4g8MEVt%Qa{6#71~6$?au;Q@ zT;xdwhlBSb5l}{K0^#dW5>oQ*tKeNOye}5#WC|Na_Tkt#4*+rh<>P7faJ&49I|0Fm zPXDxzr(t6}o$(4Vdv=0>8RdhA5&Su8XSL+90#}WY4bV`@l9wJfuLcqXut>AKWRnJn z6hdU$U~@OIj+r9j40~b5E+jX?&O;?XE;aHaf;Tu0bM?xSzW%_)sfE}%yugpx9Sy;~ z4DQK86yhbgp8KrNu+LoiH52|fTh4iA?gz>*M0b(A2-B7HI9 zU-FZ~v(cf@3+~%<>h^m)qK$EA0~=W=KrFe*8p=^ZFt`H&2OEc*MMPE>#J$3ob)e)ljBsb;hC|FRGxeTd(r(Fu zjN8(NLj$nH3^en)4zOz{O`)EvNs?JEvR$I2+5@%>wSo>;vAYq=RMHuy%By{=FBL~M z9ndhZ_G&jKS4A~Lh!UPUXNVoro~H^?|5zU{z%=)|b}FP!wEa#^YG2B?58YJl&)GO9 z7hI|PNGA3LYoHqE z@!)eX?FdKR!Qa|7B)UJjzNXKqFPE9x7N53F@3xQTYeGgcy3aDAu$Ek1-nEE!4i-k( z%2C176M1A}sn$jYyCNE%GubO(2PLiVSn1_PcG%Xv8Ka`(f#|_aP*n zyLn}zVd+N)PseamSu)AQKAYIL^(*Yh>kB`ZmOKjeLEIEq>nq~zV<;p{b%kH6)h|K+ z8>r{1@oJelpBHj1UL(*eC7}(1Xue5 zE&QI575!KCPH2St8T zG;~k=Ug7v*r>CPqPpv`E3$f^V10=Xe!rVejfS}5QMtI)E6bI&bY;pm`lYRXKHt}E} z204tm*`F}rI2_VeikUY!977H)FNULuJXB6M z6cC~u8-L`N4vjzJ!(p2>B=UiiQF9wljkP;!Wm?^WF~L{sWbP#pY#zu_X*FP(QOUFcJDt zjZ1rZdqCy{@iM+r{Yz zPQJ<(u4M~1parvAr^*-O`QjorE&dGrg@lm@_Fnl6yLe97I7tFwtfJmV;Sc?j@|9Id z^iHvJu@I<5iPsBqXYOtM=$qlHc6K-q-eDYXhFeB7u1biXvdzAnEps}~YK0k@U-Koy z#$f?K<_dd=ThP)m#w1|=N6z;E<}u~T1`qScn>x;p15b-^T? zIzMmLA^qVUvoEe^HYgxi?NZvBHHBsJ%p3kbfk6d+gbG1(^0 z_i!+g10t;AL>L(ihW@M?Z_ZBK{{tR;JV)4oLf4i;4O{lLa4y36vzDV|CYeJ+iJQtR zJ`?k#LfZMXak9Mvws$_-Gvy;kzUavpeJn&A`iO<1=Us579(k<`Ooly$sgFtB7k~!p zw*MJGcOh&=L4$w5=x-o8A!8!PORk*ZsmrOEg@`02x& zfa!*3HFv~uM_o1C1hX#S?ij%A((lKS2Y;X^gJH1x^9OU~m11Qm%<0J#U(R7hmWA~e zy@4B6fD`>%cb@bEv*1(|vV;4=a=t3r?+@mqa&5^KTyi$Z;wuzi%pltZ^D*MUBY&d@ubp&tN@|^AIBYO@X#;|As#0?ZQ8g@E33JYPhp+!Q$b| zl37^tLR^mAbT+?m+ks&|IJHu8B{~Q(8m2-LnuUb|AssA=tA!dKtyWzg#bN6VPwr*U=W_k=p>3I3k2&LdblK2n17#{{+2y zatPcy>^Ix;Ir=_muOFLRuL7(eUswXS(2a0IK;6a!hc+*SOBZZ|PnWwUup5I4vwrpt z$?}wc&l=op11k`Evr8WUq4ft^;setZ!ZYNlmnQ^Vp1XmgM%>P*mwrIr;z~wd7}}Gc z9{!Ct*yF=-k=Z9l3fAxhA1ueIp@%}ABCGBGG9Doa-zF3_*U;N$cog!+ z&ASqDK18l>uuj6l6*snR4B!0z4|R*NEoEo_V)L9<;6~_^%NxAjg>6L!4G9xhasj#k z{>^Q3y5uez+LyZ;+Kl9?g1#U|PLw9g^&R&0u&%?zo&w3m9<&4VQ68uXG>g!=T#k%{ zgf%pV()B9w#eS}rJ4=b)Aa;acGkg2_$lW1s8*#(O-0VSCa#cQddM$f|y`g;U4dtaq zwhDND-hWvSW|j#P_xN%5%7PgS9@nqN1`}b6G6KALe$S`ww?k8y2r%4J6DAm6O5dWt zvJq2(U{Vs8BFB8{0u6TfgHMc!gao&k`=NwEfp&#oj()vZ&|=)Rr@5*S0OjaE<2;Nv zaFZC7u2<2J>P`+!qhfs?RzQeLE+vMtQpoc7S_M05>0Q5v_j ze{ixu@7tM-LJy|AND!~=u+0=?hsK821xAb@;ZKFr2yQ`KNT(pbjf(^%YB4=`kn^ceCc&x`R>Kh)K%tzP1cb56e%C$mnanT-Ysm7u)s zjw^4*`L$Ku?R2OkPNzvSB9yn^6R)TG6ECIjRQAeUV7Y-G-P;m5foW^961rPaI@35t zHb7w7Rq948T*Y`ne7}gJAM2>UI6syg3*Q-4g6)yN0^gH}Z(=_oj?3>w`YWW#O(h@y zf3w$h@5Qs%op&~9uaEDDdfll0nEm}fXssvvyVXr#`(Z_AGMSs8j2c*A8 zTK0EbeE);?dM+jl_3+!h&a&5M5~nK!PO^0xCf-(^IJpKNRJ_J|4nlu~O{?T5q)PUEweWL7jn~(mN?DfRXcD^fo z->#7O(q8|L_>QBSAei#wBBTcj+{w@Ac#U^XcgAZ(zkf99z1)w+0zZ-an>ceueMY;qrXpMgKD(budY%gg;{ ztXPvh@7AI)+(_x%Pls)Zs=zgwtHzr0+xA(SWxru4fZo)7gjRsPqX4|@G?@jW;6M_?@qM+!F`7bBWYAldZu zLDuy3KXiWPr+4CGZTg!O-a8SMCh%_j{7mHnuy+ugF4TSgnfoJN_-Mrf|5g|LDp=rC zk#lNF#>fT!jyXMY7xnLGMLHF9WMmnIS8az#{{+S(vCjV(xLND`fdWHZ7xT7U-@hUo z$G@-@VJ|=#8PWEp7v7OxL&Brt$Gj%vyE1-^o*`j?u#9)akF9_+HD3H!C0r3!{MfB{ zLi|{fj2}bL6ywJbMpi$5YzhL2X3O}o>rv@~VA3!KYdr@X^Z{?vZzLboy!(5cjTUYr z%u~=p(m?n*89>$+MafotXoMkT#ajEhlCMtpkFmZ9CV9mv?%D9@V6p2d?*wonfUFG@ zqJ=u3V6|W%MNuE5Ke9%Jk>SC_u>4lxF2cDa1V~L89c+bfS~D*0H~=~5nvB{;EfG+b zPc(wP7*qv*BxS)J=qdXP+t1nHxtrf1!MgTpiPjlJkSM31lK9Hz}PN2J(Z@ea{OD_!`0a`W&O`RrMlSd2B&GvWz&=dC&kZHaH|DF3u9&%m;B5%mU+ zhr6I*DW}A!~`ONOPbu|#W7Fn{KYA4m;58Pe|F~fJ{eOrDOKD{CI^w|Q< zhM>MbYd`qdhk<6Ioo=EXe%*q-qNlTo7I-p!#4#YoPR(yY_SR0xz zt}V*hS$Zh4()0(4MeQfW1zKX{DRASPGH_#V4}%+){elO39oERk;{7x47HmuY*m@59 zlL)SWw|pRc=cT6-!8?c`bWwaY5d*J~7d2~Iuu{&Nb{PIhbWu_UBrURD$;~SC8~+eL zw{A{Ple}Tx;O}rb;MzGESVAZ2>)VmSJCy4pd21(sy_I`y|#}e;acb3KgeV*y76GP^`5o!V4UV@#EazmLpys zEQ1xTC{2PzN(le>x;%F##yJZ@-13{6SpJbFmY)&3yy?$~AJ29(Zr8!Sq5ST*7^Y=B z+d&W5^b=++j(9fgr<;3DMl5hwd<2%8ZQ8%Nx5qud=$JMfYR7DJvk~dwN0^KYd#Q+N zTTWww-EnME9q`1KQ8K=5ln86XRQF=+9#+e^MefCk9Yi=S)FvWPLadvg(PJ{kP3}jE zoe*4RaV7)P%vd)8fHh9`Bc4C9!P;-c<-y4bB|e-lz~uhBo+)MtMX=H$=ZID58rLxa@2=aYo<7Kxe=SqzAZ=e4v4Pe*0k$@YQgF+e3eKW zjrLR38%baN_&Cs|*Te{sGx*UYeD018nTwB))E6^et^oXOFkY^g09`L$4r_AEp_9f6 zRl|Niv~A5?jP{Cq22G9y0io%+J1c^=H+>SKv|3r1l7wgP#x1 zBm~QCEV+{3ZiD&VGzXV*RFrhWsfcl6v>Oi#2t%8odtRi8ZJ$B=iGVq-AC#L*MgTxR z#2GnmNs4$mI2ZJ_B4n<8Mq~r!Wi{<)WGUk1R*t|mY_7-(kT@PB>Z5R9izP(LpJdJx zyYeKE-wJf1)>8wp*CxZ|s!J|4@fUGUrvU#VA=cw5)8oMnWBD#{Z;x|W(k()#p71Y0 zOV9zpo_L=u@P;qs0}Jn`%=HfC9%BC*uzzq4u>XV2H$p0+{b4X&N8Tw$va-=`R! z1M>m5gMsik9?`++s=vI@5YA#;v-`y+iU>bo{9*B8$!9CR5BzRJgx^psR`>}g48Jtm zmVurkP>37bxE9EBHzUUpB$Q8=mGDc7>wLV3lf&_$k}1L!gYT2h8A@sC><_kw)M9RQ zA;KjnEhOO6=jE7e3CzVdrjxHqUW8xoVI%Gj@p95n5c!KS9s_^+6%r$F@CaHkEq%6_ zeLlu1^?{X!Rx~I-vEt?KwZusJRI5v-o4o>;fxTBQRlU+e5G5T!^(9I9N9_GlA>!sJ zNtXSP{qtv2o{au^0RmM(qK2GeR|m|?7(cfXisy`1RROVbzg{6Qo`TgSH#baPsL11h0j4_Wd|DfFGp3)+&#?1CM!D4o{^y__Dryf?{o}zV+Fd{{9D40NRPf z&l$05Y{J?PsQu;fbGe)$(cf=CmPc$`mk8N(ad|P}O(~n~zv$fs#?SG_a(17sf9>&e z4>IVC@5T5v$cMNxMnAd4N<`c4?U`*3t{l=~#^-bvDkYq|yYy0VBf1(2S>b&r{h@rU7Qd!SsxM`FP@H-SH`J~{t^5_R0F4C zTaLvHsrxe`$50N;0Y&oY&2&Lj%H21DsE=3Ji8@hwGUA|Q;IrizX|e}zeT%CnB^pX} z#gA<~#_@6^p04%N6ymt?bRisN20@N^y8A&3Y{DBeLDESUNm8D`9JsO^@pNSphK(sj z62eV{upXzH1%5{TnDKPO>cMCwVe}!4`GkS`SRaU^+0}&z=0s3kVE{HCVL*ug*@Z!5 z6Q=QVx)lanx)m_z4*@W!+ zOY42eBVlU$_9$22aM<#epZr z3|o9%K^%Zy^X3tWuQ1)6xT=xoPhrHvsZY_>A=g{d5pEF~tNhL<ufY4Iu6a zec{I)f>8A=1S)(CM++7NK86_76nf4VAqF@~CPNG|!;jkoy=G!p2eNbjb?A~WU$Nv{ z#47wU_~+T-r%L!|6aE4l{Fw1Kpa8)Nz&&O>)>rl7u~q;okl%JKfM*)O(FKNoFjo9s z^ zKQ2kkcsv!12RX))HVz#sC}&T-Sge--8&dG$HE7}t(S&DZ0pjrxd(*QGq&^b>(Z%6~ z2-KHd^y~CziV<5z`sPd9&VfdM=0(NDhUCxt*e{a5Fh7-v;o2^LokiPe$2qQK8Euoo zUq{~^_CT>GrR{&6ZLEizQ84hA%3p>7neunOgglXuXBd#p{`m#=p{icE))yGDAQ^|n z_-AY4*YRhH5o9L%Up8?+n|S602Y-I4eLnsf2X+{8!tW;GpH2894EV9-`&mxu#Ge_j z1q0}e&)c|E&7m5L&$}5&NO`lx=MBF~@N@d_fy}DsEtBDp2Uzg9@p;`1(kK9j0S3L( zfzYn8L6hS%?SqQXt_M+>f^DCw`Muy4K|UoxzE=#89W0P17@wELnDz^Tt;RMOpm!Ns zMc>E(y=>XwcsBSf4n>&#)=|C~%ojntkR7A`HTYHFS=mT@UagqqK^90I$pXW^nhuyb zc9>>=XBx41!h&$>7^2q$2Nz1x3xn-_ILk0r%*FbM7HjqK#0`F2x^uG* zC^v4N+~AaVn#}_zxNjjGT1JqbXbG;{GG2v-MK1Tj@~!Ef<=+x+f4Y&RCk~#(>XIu= z7s?>|0W444#Xw5m@KD2EErCycf7~rNl|lzzBxL#H9yR%^&|hu{sku7^ABGXHH^LdO z=PADvgkuRWV)h2YXEls*d+m+5y%Kim=|C1ib=(2JHJSZ$n^>S3cOs&@VdBiVy^8?Q z9=CVOAt_Rsh}#qJ8TN@bUX3hOej+6YJa{1dd2;&*R0a)7)cZ_ z6chX%!Qe`S_;tWBg%UW};Pr7~SzG$;y2W^QZ1|Xat&PU_W!GY_b0)+4@RgI9 z>}}4tCaZH8#<{;nWnW`!GkB<-mf3ucjx_>N(7S%csO6g^n+O{z7KI?Qt{Nk zC_)%xf=T&aoM(F}`aNG7+i@s>4#j4l&0ebdcqP4nZP9K%b{fKmWT>ENuhPANYY_Q( zTW_e=aoR3!7HmO^!GJg+)p|~WIIGqNCSRVDn#GM69NiNKx#U%?xfsQd@LbMhP{`dW^UH{pd z6v+928M6rkRR{xxJtXYdYt>{hHW$b|nxq>Lq=w1BxXZ+3VAo^-?Dd2Ni!2xRPRg8O z7~}a=JV(AG{!YR?&5W1(5eNd$y9jn0jyQ@QY%;t}A9D)JNWm%z?`*!U&gbh^`j*-mVSlXFdonLd>?y6^haayZvS7iUw;qAvtKDY8@6BHLg6p*fWRuYJUVMVL*tHG_E z2BbA65C2j7HB4`^{rUrLlGi&}9r$0eU!4QL&VEh*Cnh3E|Y zW9e6TEaTH`&s*3dI4b4%Ue7zYGL7SbF~x{}|7g^Ex!;e)b*%eTYw}@__diSZ8HyZ!-x%gxn zPkx+e{8wMVROejc$A7J~#eaPUU5=_C&Z;EwB&qzf?GGC9UkC3dMU9`=!R6LCK5`=G zbuI&sntWcTE%q~6se$u4%Ww_8z7)<5gPQ-)d6!qff%s>1>YaDF3Oy-20w;dn#hmAM zjUE5>OU{EFUDzzWh4mF^0i&%2MtuP- z(t}J7>t(~l7uD#?Nk&Cx%|wi5re$0a?}Z@1{lIo5>!smY5=&y#>@(K8%RvE=Pm z1i=ycb{0JkqbRcyV$nnIL^`x$#m@qBZ;!7J*+9bL_g1tJ zi{G0Rzn2X$#$cb%)D3Y0=XUPqF%^r=q8s zMb9D>B|Qi5gfDEy;`b)S?{(*x{Pqf3!uqSo zik2UoU=C;28Qg$5SVOpCsDap;SrtMPB3N#9i{ zN_nb5RxJ9w$8Gc({e1{pZIh4hW{dvTPZzL^ap2yaaph};v;G^hzLLxBc#4v*GH3a6 zNBL*1@(uI0L^hO{f_)qa?)peT=`n!tUtj~Z#Iz^f9CvTnzMX{qx?v#yeVIZy2AVxdoQV2 zIRMpda^9X@D_0`pB|JUQmFo(3#z9*rbP|h@_8_9KwFr^t8;y0ys&k^`tk#cp2tSMI zMNkZcrQa<00ygP$F~O=4qgV}!`_DEzWfqFE%5G%YI>oYIpihp6 z28mAkX2EJv(v~ymIOr}o&@}pX4s3+J@i*D%8;M4U?7hg0Mc+cDRIM%gmY^uB{Foh| zzJ~g539JI?+tgXmcjdpEM&FSEjnFsiMjL&_XoSeVjLcZ{J*$+e4~S7+x&lR6<+KLq zYpDNLz$%cw2!oV^?(+RjqpxFQ^evfbqi-P^A+np18H>IuCBI|(n)Gc&QC1m(EW3Of zhpX5Y8rh#8q?>p>uvP?M(Ojr$c#l_vC`-B`k3^sLs8P#6It=-YpDO)Df*U6ef}cS zH2Ov~ChyCxv(YzF>GP+^j78r!GKnZ&#^*O1D^iA*2 z>b7}v^mw!GS{r@EN}rD-GZuZ%D*3&mmq}kUMc)i$+37R%dHmM`f9ms9qPC&Wqc%tB zbCxU_&OR`#b8rH|Z&}=otjWEP7se zKZ>4<75;4$JwEm9;&Y?+7Bd`U3f1>ZDblNGI)d&zAZMCf%a3c$b%dYZm_NVvF=LHQp}IGDW&Cic)1CMwTJc4*Fv0tBt;*FC=|CX*z=L zsd^LWd$@Na^tFqkZIB@5sH$&Rmh4-Uo3lTqi^OuN#7Bgj-Y$~ zKbt_`s$PxI*Y7H4|1A+p7S?AVKNfxa)c6=V)1+@Eijuya$cjl{BmKAdb4g!EN#B!S zHG#gJJsY8KJZ^Xp^Lr(qD}>U8^#Jl?(bvov|1J6!qbTV+@*5j{hP^!`m5cVaT8O@3 zZ$GY%(&r7bWcW!G6ZT0x-^XW%yf-2bHG3t$o z-wLJAKW3Qp%|lVrrz0ySeU0>As-jPq^4<;R>xBDH&uoOgX;(VwD^vRX2=Zgmw^hme zX%>A?peX4}jz?c3`rP+3*?%0bIo`m0oiKgLjnP*&%}L)frO$68KNfw5l>83qZuVaV zijuxeWSRYE=<^b3jHu5XFRk(UYde6=hY7WxZ1FILa9o<&Bm|B)@0C#R6Q*xK zWAeV_awmPWls<1lek}UdDSaNDZqiqSqNHySvP^kzLjTq5mh>Hgs&Tx5dY>?T7oN$w zw)If-{Bgx)PWqN8eU2bM7Jd7a{LbiV(suwwN#8_dne-X@+)o-K>NCenOP>cNuMtDc|Oe73DdWrdn5Gio8+XgOzHD!ap>EsN5| zStfmkK5v!EMSbRYY3cJde~Z%R=VeK$ztF=!tLLexwphetibcPOFT>}`OlQVkSq?|@ zagB2l$&nxXOP^%-Pe5OIrWelr1w1)u)?OxS>yKPw>>R0>6x?#Mo(trBKqPf9bh4;h z+z>uv?f8@cY?JV5r|@YR51-fZg7|cD;A8qLwn}9OiHs@GCy3J6|CYaM|7gE?uUWnR zTH>tV-cfHLo@5QPy=l(!UtDbO>SBz%@AV>CJ*KHuU6`|lD5J|;iM%lbzDJs?VB|4;rJ`+o?=HF_?p zKiWC#PjJ+mji;#c`=oI(+RJd1A8D00^`~$FZZxv=N7dIS{Vopw69vSueoY5E|G9pS zsgFyPv1=I*-s^ZFl^%j17K)n{vm%=|BhJ|w|{3j>z6p{{RvM|{X5)QzQ9qw*eY-KM>PKwy|-Q%hks`X zh++Mnv=igscFDh<@!-|s1^ah!9C%UqEmQDzPl$uxT?*dU?N125@d{ob9=x*^yroWf zM*p^x^^N}h2w>R1KgnO!zt_JNw|}>86Z|piKj5hM7M`N|cbT*Nm5%ZY&GN$jdikkO zgg9a+p!_Lr-Urj(XoKcLxwwiLk6KY`Rc?AhRj#)WKPOX_>+9tWxTj9R7cBw_ypA5< z&Gfw03L)3yQy2LYM~V2^vLhL#VH7*dD#rL*Te<61xlSyHfb3xBVQf{Kn2BVLM4)ey zKw#n^Ad~B68b^#Lty|6OjrBj`Qa5iPt$MmEA(Wep9K2nN@XuUz1R<5z#!4E9Khl|^ zP$;*r`W>WxbNO4W6?v=XEfQInDufT?oR4LXIN8MIwbI5JF8SL(l2ZF7igMN`qE?L= zLi%_qv5VST66S=b4ogUw@|;9Z1#wy|h?~brhyzWC7Cg*fVxLUdwN>KSCKklo6vQvu zNE|JAG3gB|SnGd|L2q9L>tO|p66u5&gWe$u;;dK@KOHOS9ceI38} z{UwnV)*l3T1`9ly_Op23Q z19&K3>1#gja&}i<;!3E>PfrNtd;28xlB&A6IM4HLD@eLO-*0MZ1cl2{SSj;7Du7Y$ z5BU$U0S3gE9qCl6qp4?7L{myL^P#NnN13JNLrL@PN?L=e`q#Lf&8w|76g1$@xzgy|Z-_^mS8>gcws_yC{eYO^Aj(i1kKneZ5&hjH$2hkC8a`R}d|DG4-{#f)!I= z=P6ivN)zba{h_2croQ%35dUOCwD60oubP4wQ(ym4DCsRw5Dj<`+1DlmlZN#52~pS5 z*Hql=ru21ze5L=4d(fy~U$&~RuVWj5Z|dtH08{$fTcP_P;0b{g{cJ8O_iq-=v#md! z?>E11_?^|@dIVlWXbT8D8}cT)$@IPcDDC!z4n~%AFub` z#HUQYB0hs0_`G0T%_fjS`xmSB+bDc|>e*EvpL^@I=fvmwdhbnq#>-d4=ef~#{&b4Q zCrh*!~7tGJJ59#Amg7 z-pgladzUnH^e6Fw8o)h0O z_1>HK^pmfM&k>&;pKGG=X`$NRf@0*?(f0*s!eXAwe?5NkFkD&^=&qZ-?M`es=$;uDMRlkkPhpQoMa6q;FxKzgYK~s zB6>)8plSgaaNg#`!v-gUY$=>_k~Il;ufe#YkD`iPN2PJ63yP;(<=Mo*I{;{>c z1?Lge+>Rcwak70z`PH-^Tyi5u*J~6CHGz{NIPylK;;;OXwT$hV5mey@vSzq-;;gKU-^x z|96_Ktv^x_gZ~g1Jzt^mLXw@~4ah?qJ3b`<+a!Fp;&cILt}Wx?^EzITEu9?rnD%jr ztZ!)F1W_9PU-=8RBMLvf{~7ySf>LDGAMdQ+-cfHLo}|o~<-0q}e=*!pYqrzeEZ+dX zc%H(vUj?Y&B!2CaR#M-cAE*EB5*We%n|Ol#cb|l){J#L(Bz)BPqK}S;&$oEN{=3A1 zkIBz==J+72=L4cN{J-*7^xBB?hr{9Us_3`l;Z{bs&Yv<44Xnc(JpF}a@cdEkY zK0Z6!n^Lbm=lk>Oy*K&O-NI*(1D_Y3jN;ExdCV=`M&T1y&n`Zj@cLQss?SMCSd)y! zy_^ToU`#iFf}R$#WcW!GGxqaoMsPvkCT;utV{iuCIp-XIaB6Pe-w37b*hzQJ^-inu zYs=^|@K)|gD$tf!5WZ^<6h~akr#?CcS4xW3!j%vho?ce%(uSvZAAY)L0sR;w$}39G zz~?ulPa-(HucM}U-&Sb2a8^VlA~ z5)ukzI< zW+D-F@4W!_JCJhA`EWxuLsJt|adQqj>EddABvb>hhT)Z0!>2_n2kHG})=*nky2x@r zFX3FlH+CQ{S>r5Qjr|ZQz&+EJwOeF$zH%e(v>=joxOgXJq$sd9Z#Axyz^8EOiqg-X z{6kJ!kN=W7a)-VU!{t^po(~LciEqLeT&D zqaOZY-cw1;eV_D1Z-?_ zv{>(nP6=;@tJbHzCyVSt5l*ni{&=`fvy~ojKA3lL^TwyA^7OGKM>eg?7{OiY#0j&9Fz}Ggdrtj3N z?I_Ty^ns6&jPYo4ZZf_hq0NLcw#RF{AD(G6BVefefcYs!UnaDy^pwaM;(oxusrnO- zq5|;6hu3zkf`-*WLGs$;BHquvp^=#a9Om?srr3td#pwIhUWY!F$nRS=LwU5w`MkQ} z4Yv@xA46Ghp!Y&p4Iv&?39hnMxe$FR3kr77bf6f zQAgNxv~{=HfYt$q=2)I6XEqhOJJoFUe1JY*bb!8(fA}wvsS~ zN_e#udyt+#Iz1sB)|=YVfg}shRV zmbSoTD0??&+`x|yndVDqiW&T$OM4qUa2NVm!6o$d??1qb9EXsYD`x& z4b8|zgZwZi^flw3m=OYaGkkk~kD)py3n#Je)s7sXl zJ){nQrv4BmuhgGRppaKpo*`OhVT0>TpNJy)gd&Xv3QB9h^zQi-1ff<+qYgm%F&1I~ zyG(wwmm_$d*(QM71}zm@#yNA@vBZ*-$jNoZ82?jt!8+;h z&HITn*_W7JCDX4l{h~~}(Hr`_Q;xHYC|@Geye>$;3Tbf|LCl2KJcx+{p@%E5SDg2| zyo(H45qcXTjJ>(R7uWDyDhVa9zyk#d@*XnA^Ctjw0DvPE0m zHBb}L7St9^Ewt@U)1qZcxXkbUIp^G&JHrfM-{<@Lf4~2qyts4j+1}@KKIeQsXSrt~ zcN#9SX<6gl#!S|2Swn3NG7W2nJyG$2f@_oK4i2=?2zBM~|AFLhk>oNh=~JlYiMwRuiF#^)I34a=%O|QI~ZTKcWgt)?%U06xI`qC!QZyVH3Pa@tz5)! zwRDqZ+)=@9V+NbpEy&Js$++GbOakk$;D>HOP6fAMk8~KLaUyjztljNHqaDWXuyu#c zU?1AuVKl&I07R^PD41!)2^)AE?E5<+gP#kCR&(NB+c+FHu3yB85VjHN_MPkkx!N_! z2*C24j&W+by^EAaMz1xq{9pbMgP|d;x1uo^x08!fyDSxonqsnra zRNssJ7CV9@tPPFqV=?4c zi;D=fReSFz0Jrpu4qzN^vTw(Ibgr+&5(b*ci2uW=F9H*AQOlSZ1EfVC2jq17cBS71 zr)ej`Rqv24ZVM{owQHHF8u0rS^{c|)-9*)guH3+(jfse~TcMf?K$HCl-If7rAr=58 z307hv8S=*~Rb;xPlI{_9cFG5m^7xaIgptc?*!N*@q#PUaCn)KZPJXXGg+h9kSHkA$ z-=t@$O!lVIgnsXQPznn}D{++Qi%yd&Kz3;=XgF?};Azn>&2RCLuA>*8=KDL?oH9J( zy%3l(jZjvuJH<-Yz%NOL&H$(hi+9HM24~8*;6_y!28qKTL6$!MS*UDAPdvcBT|t}? zD}y4u!?}ivs(IZ=PhA8MPGmfYeEA_&&cX5ia=9y7`F-grkNa~k-eaNhF7n}QMCXI+ z3qVlm^;cd8jxWFx1n_Z#^Mlq?h#SexPGhp{e1s~Ws&ZjQ!z$Gn4P?L?E6jK@Ym5V# zl`fdALVH9qN9^&wWsdKfKj1{1d+Ln)P9R<(ne% zyF4}o|88T5E@hq4I{xkC{2Lz%uZ_UFCj?$V`MxOd&JTt64m_y7Tp9u|V1LVKfw%su z5c!=X@OJ#@mtVDfFXHjl@(p954=LAhQhwWamU&wqzh`FiH3=oJf(!$Bo~AtuBG0EkY(}2TuHbb?IpnJZYW?9`Duc-La)B6Bp8E;JC%lM0 zypZ*KoIngJ&j)&P8dC+L4=<=ZcM@1Z<+)N|HPoL)e%Ej191JSYLj>Y0UPK>#A@iFr z5QEC|&jy~~F#=J=3ntIW3%&AuJzhzGdUy#D5=8M;c}~WeW})SI*@^&p-o+i1eG3BQ zSq6Kd43L2{pHzzeZgB>7;`m~M*jW}HSzcM_e!}J@ny~B#51)|*#~KQ z)d!6aO+2LQ5dCTbk1I3HJ(FUT-z= z_tNti_ab^C{OFlAKY%~^BK<=>I6dQpeHYoic%?qPC!?CI7r9;qrScc?ry>|;b};{1 zzE&YkjF~O_sP5K|6`O5n<1qb-aVD+$FdE!HV{XIpBPId{)9k6{kK%V2W#~1kyDgl> zQGW94<8omn1v;7@%YfVO|r+>${Pv7fsMBwj|~? zmb^N^OSZEwZImL-gXZ>A!cJ`@f24l8#4HF?l92 znYS12vi%V_~aeZc3tIJ>`49(K_bGM|&R?^BA;cs!7onsUkt{o&hYJq(heTur6jP!a|t`DXii#cjiFl z>6f6oo`5Fq6up0XOR-AgzbieOLRUUu={-?Lq}q=v@sysAozz~b$vYn7wd4sh^s64L zXHonz{sg(fi}LBmg~d;Br=Seb%BS^0JC`&)6%1-uDn2pn(79a@&aK} zj`dVj>9{1gpUIgy5J3<}nF0Wlqdl8G{>zhrZx8$EW5p^K`KVIJOasy9PALCa-Q`$7sZ$ri{s_IHwn8oSGIqCNnz@Rx15Ehf zFqrUkrIrbN{-1v(!IkZ}3}}y>xJ$n%O9y?ounJISXMVET{%d(dg#O`eaFrdiG0*0) zh94=vr3)tg4kheX?mIx)d@yD^g->)@FXj_zAIt5nwZNdy&()97j=5T9SQ*#N71i=L*iWgB7`h<+8*Ncu(9QdfhCO&^1QU)~Q^H&>$Ba3an$Ky!pZo~oO22=S4 zwqk)%*j>M9AHr1B=_~O04`J(3IJBZrd_FKcmLGvX22T1#0}#MiHg}+;Uxe8R+6rwO zC)A-(j=p?U-0Z>K@VMOB8~YeVq1e{h^l_K6t8*a-=!!uuCLh+3epI1VXy(GQvsE^kJB(lEHd7=R#yI6rJZ>1j3y zbk@_NvE+D+0QHM<5JaeHm#5B!{r|Wx&+gh}K!VB^U!<|xNGCy@FOq$m>nGBx&Q9Nc zgGig8<`vWZnhH+xasDW1YTkrf^+H8-WHOOkN&0~r@0Te0e6^MEDG4D@-X4s%f6Qe? z*`T1!z?c2-6ny$b$>aO_wZ@#_(f8mIl*gdqB~(uy@zBooLxnp?JBRScxpfMzNe!)F1? z1li_&fBR15+aHOo;RQ6eC9}7_f4krSL}bDPT6BCrYSOF}q4A<8B z{w?osm90ffN>otqw!3~c>)qz^g=3^x*tgI!7Q|tvyit3IZ{a$oxjY#e+sX+*=O0CR zc%eUY!9l>Q;@-oL-P z+ONN=5~6lkDdYZZSo{RJ1?2$Ai?=aqroY++y#(bq%)0tm$KIOnubzp7X7cZ^-bDQ^ z^jO+nNG9vA=AFW8@c!yX00il;wqucxDw{eJNHhJ_XITK8XTi)v%EpfaRODIpSM^Yv z%1@Z%^)Vq-e>EF@rKbH=d?OCpU;ScN(Ech`QLr{x+g}~A8(HR?DgJhUm1@J^?yoLG zTN)d6&LHUrc%v7n{`T0ChM?Tv>n#1b)h?~)Ob;c^&re9 z9agd4MRquZp5uM#rn=6X2O%r=ZTgBq=el1(p~h!`hUE?ih&xGL8m33qsmP$$4{HNRPS2b zf6S(MHzS^}sbp+@SuT8p@ zUaklBFS{dI#@{V({de)#^rb(4JFt%Wf0V!NkPG5(;r5XHy%u^N{5|mIe=~p8{%0vA z#MU<{d8~<1`=4LsYlQ$LnRrN-5y9Aey09mZo$cFmt@6h44zxsx`p;jFU^#O=f?#CdC+rKz?w{VT+$$tKpEU9J((^9& zB6?!|=y^IXfPZ$8zE03HQ`nETYeLUMP15tHx3G!7m!8qwi|Bb0z&`$*7f4T>NPjA& z5B_u&c1u%w`ZY<R&mT4CQs_H~ia7_K|K zaWqB6Y8dHvW%7B@D)wsS`REhcwXqanH0Gq^;kn(u%bH@cZ(jfLM<0EJc@6sxBNnSt zW21k2k6iszuT*EpN7Hn*X>mK#oFl?+!LfA_X^YP@+H38*jOBlInEr`5t`3VYQ|&v- z4-YSIOtua*E;uA5Q@>y{0_f7Z)*8zX9WjS&9t$=2?2`HUHo^?Jh<{A z%K~)a;cZ_km%zU#CfrLfiH!|Aw1;H&1UirDxyluJLXAoRNdRT-$2a)KY(f z_D`Zl;#*aA%vhs+4+_XBV`MxgW}?}?CDs0Q*Nj=imhLo)_}4cZ9~pEbzS+LryUmA%$0Wb|JLEsze#pJVoOsw8Bij#} zYPO))E!ZR1)R4tR9r1LmaKDk8?)UuUUo8);rw8|`Kur2g*psjq<>zF @YT`(#Djy%l3;2 z+7tycjPU`x{JNsx^(c=vXbbH-WL@o|-TH?f1Qg@9esz~NP#I%%sKZrlR#kdS&9SjdzzMV`Z^?`p$p#~py{~*fgp>&i} zFSETy_Lft^ak=J0R!m{|g~oGXMGKkk)x4P0@gkTp7ACe$YEHe=QNZEZ<%t7!qf zo?e~BSh{^w*_laVa|FXw=DAgw#5|++e1^I0TBSR)VUGlTX#4c8;}E;lnAqR-o!iTa zd#&MR_`GqQT+<%hlWNkWFjgRk5%0S;_#li~^TB|}AWm~=123oF^^rXqkVLM&-`?rx z;Wzv+Y|}R9>VK<+U({!?{jT4YQH&paPPE>_xG)WyDyD@v--Wi?>e};F-4?qqVF>i z+<6}wo>h?0^<_8Bgh>{oLrw z^gz@pWy@NYY3yAb2i@lFc2n2o{_tU5Cv`rP%?l4)O9E`Nf03{|JxeiTV@D4Uoe{Pb zjc>VYhS_lL1;;~`k^v6vlFqF?o9 zJ#09UKCmgu$r_;7yu)!<%pEq4pp#b z_jqzwgEdCEANm@{<8+f94wfQ5j_8q?CnFvy=@%_VR{1=mS1XA!Oa_%sioy!ycNS-& z$t4m@FX*zs9_YhC-DpwyTcoIpVR=k!HYA<`uV4Q`QupKre2Z z`-K9#d`=80V_sbPiZ%ct3UIJZ#c`UDj62~gnJ_9u{iVWADc)~fI7LYtcYT_Q$iDvHPREZ1GlQnn3}q1 z1JpAA$p3293C~6YOOJi&w>}}$R#g7&s}84J-Z!ADasOMn4l@8sfBdisVw~=B zxw304u_-Ku?OB!`tY#}_OqMFQOhVvyf_e8P?^j8@uK*3SLgyJ+Nanwl*)}_6=X0{p7Y@8KBVe?GFzn&{&n!Qst>*bn}|puV`ax(krv&XDFl>k zc>@#z)*qtO-CQB?Zw8Cnx1nmcdSgBO^s8%7C$4e#;{43D4`lsJY|*thQA`^Ej$(SY9;SZvAMP0R!*lIW z5Eutg`RpYg>lf{Uw~XtA^^0iNO^`C$3EG&Z@Gl{E74Q(8=><~MO9;sKu?3@!3QF2u zBjk_B!p3Em1=m)l6cE0NK8X7k`ruwpiomv-g5honhICOOc3v}Xx4?eV4k7h`;!7K;W8z6fP1->O4mr8jfd!ZC5r zw0DrI+ripH{i-_FI#GhGKeKIHd!a?>3@{u>!q1R;-->B&Bm1_SH^&0sQ^nIYx z=fYM7F}_hx+X6p~f)QAo`#JIACS$a|{8tE-elp{=5|OUqBa4g@ z2Vo$B7r~B_7kIyb6Pe+D7Aym?uJag+*!+GxTI^oc=o_J5;Xpn3h&F_!ql&&Y6@wOR z>2{d>cg%O@pCf3e{C>15ppUl5^Zo5REZY6;8<=-8Ng_hao_b$ZW^bcuKFI96lO_?< z6L+TTZ`ns%m-bt8xxUAITE_@Xwzs8lG&eSImr?)E%{YFc6o(q_wth2k7e0{=MTl!m^hkGzHI6cBRFjD{A=AM}T&#g>L*v*bWac|&+ z(Ri4TeN6U`vHl-Rc=d}`g3*}gQ+_;(@dT95mH2{buSWk_=`;z)yr7CWWi$&Xb=HYk z{AWv%?UxZRVrzy)QW(dD9VhL?UojD}?m3VpQw-VKIw`MZ2Hj{GoKNV&@awHjy8XprSzAy!|7z&2XAg@cyBsU%Lz^ zM!vM;BomO^DZ?}f9w<8tVzA=+cA6$a%}h4i(`Dt)BQ!Ltq!El9u4fvx{)lqpi%@29 zTg}dNEK%M|%X19~-9WjU6NPgMDc8!QY)6DTi!`PdwZa+x@ec6I8FfQX_VHKQM14BG zqw(EQ)CA!C>*ZeEOGNw1gH_H9g)auy?Vwt^U~?T(qFDd@g>8OP?z)uOQ6$Q;U(c|y z26drLjwNC&#pS9b$}Q>_RVkUyl}@ZH9gSfvG)%mHRn_sZp$2OL6GO-7Xn2-5j`i1> z>W{?smmAbzC7aY7W#F?HE#ufE#y5fdSoT%3{6K0|?n=Rg<19Oel*?Z8D|}J@)aJ3$ zPgcy1H+0meLFv;R?ijwH`U+f%b9)L+CERsA$zwIOj8p`!q#IB1@fWdLdYi9%UWd<% zXn;FazDq+S8WL@{Zbkr4oqkiDdyVqsoj!>X-#NeL5uL`HxO}l;Ik*%F2Y@uC>=eP}M)!XCjVjt#mnV(D+tXy2b;;>swiA z-|pYv3AFS1EKD#tJMDS`Qn+Ld-z97U^G0pSqk; zR}lV2^fy~ezmD+dw2VKK<8Q{-Bjv8Mz+Z`;gwnlb{6vmFiSSR4Zaw`L!r!o}MgDZ< z_-zRP*|Wg!O!yO8#{Y|#@3M=4pL7=Z)sF-J)cY;czn0?cTI5e6$G?K`H=-47ZT(+B_;Xsu7y4l{ z<~NkP&H_Jy@VmE+zn1HtNrZnoqxJM3dKCB@m=14Nzs=_{42Cn}Je|)9J0Je;4s*!-^L9Bj|5K_|LW)-`VNt!@!@=GJfsljQ`6z0YB+1@LwSO zQ|Obm&_A(r{Go(@(A--7I6I9Z{3R{pn>haAj=-OL7Wg{CAKWs22admx@OzvE{z}q6 z2i|ItKeZUoQU8bVH;!mMe=LMQr)7LQ$KQND@b5Yc`~<@9-ZK77jz5X;PY-WB{fC^u z-|%LO{29mb+YtV}^XKS; zz+cib{#uTIxC8L#o(293gg>}t{HHknLc;HH7WktG|G@GV`7@K_UqSdA<<|2@NBDDE z#!uwme-h!JzNPi_TL^!{>n-vpj^no>{AbSszcb-aXc^zt zo$LShz)w00{OSjQf9kas>3@ym4<-DA!&=}EpFjTsQ*2m2eEHAXtD)E^S~GrKc|X#h z!_$}P1Ya>g?pRHOc-@OI= z4IDp*@TCC!NWz~T62CLyZ+MmQFC_g-IDRM)Kgxs_@aJ&+ zm&1Xd9Dtue`0Gc8;?GpVKlShC=|6x{N8^@8`1Sanh|Zmt{v!}ZWqe5do`k=o1^gu( z|9h+iP|5=ED+&K3dNi8(7ft=yg^h5^;1=*FaQq6wHw56v6aF(H@fQ&OfmfR6&tQ(< zoA9er{P|M{VN`AkiJw6Db6UXf&hbCQ=VxVN0Ddvy?>C3y&!I)|?%o2vkgpuVmjdu3 z34eA-{6`3X!^_R{N3H*azjUZSe^x-=lx`vMjf6j;1$?#sw*h`~0DcDHuSbt5c>Otw zDOu&zOU=_ify-AK;ny4e=|2K_Q^tqHe}V9qw1D58O~koZ04!Fx^%_@aD2 z#11!QVgP0^v_+0bkUgm$95lNe;lzApG@Ea>4m?Xb!wjz0f@Ur+E3M5q|v;fBKI= z-jwkn@gE`lB`x4@;P~I4LD;eY{7S+<2_+Paen+QA4#0bG3-}MRWuH+Mgl`DIk0<su{pmk47>?sZ;_C>1NelR=Fl&bT^L+!tV$X)(_@a{V zPeKU=r+?*acn@v?{{Y9YAbdjremvnn6B6G-_y?YDo|obZ?4;Lo2GkT<1UNc^6JKcNNujvW8x;|QA^fS*D5>!IW{{Gs(7G)LiGU1aS| zD~p^T(@q7t)5c`4QvUHNEuElaUDzrHtc1h56s$m?CDAUi>ie;`{KJSeLg4rH!$0wf zf81dB*Pa#r#~*3w|5q#U_q^#(gP@;QA{p6=ti^Qk3cE2y1{^JqqLmNCJFh?1ERBg7 zsKj#rSmEC!euO5z5j#R1xX=>|afU0ht~#}YFE{aRmPqfe$j=$CVphF_!N6BDjwDmR+TqKSfki|ndOb=SLXT^Y1T73 z-lFw0w0LGPUp&)k+kF&M=iWx^&S;&?UWfO5z$uj^UVPWUm+K4&$JWWXcPgb2R+LAG z`Zi^UUwyz~HZ9fX(pCOpH1%1%FO`LVmglpo9{l< z-~SQ$I?a7CpL!)*V8)i{4Zd1NuCL?k=4hpqe$z#KaoB@l#1oqJ!(vV>j>Kx$EjSAd zJ2JOn$LBY;-6lJBKVetXA>|_`nz&C5ztt++wGC1}zY27MB)`26@$X=r^oRr~k>k*WSZ;_jWvP4`dXo(|Kpk;cDbECp zd3+^eJ`#r&)?>jG+WD{u7NUPcIa^t+ScUx!*afSZ;ghdi92+SF>`R}3{jZlFaUL?$ zr&{Sbj2a+Wqfu13c2#`TQ<2eylpPPLbp-q5y$2#~W5=xN+}o9`>$p6Sc8_Q1e(S~b zn|4$E>MiOQ^j1Hv#!x7^*Z|T`DfyUbIjoZ1qFl_ugnWrRj#2$-H8LGb{kbxs2D{*} zcMVIL={8`Xc&|al62=Hr7P=W2d&rgH*!3i{wWcH=rmN`;R_tfLhOIDVb$Ty$KA0WD zurBOksv@;yWi^&oVzZTuSWPy)67}#`&}DLTjKP{sIq_56NIth0(+En=0#S{;`e`8M z&t>P-NbJa`TkM$ZCYT);rt9jkMO%3scc+=@OjvAQ!B0nQs5#%{?2dJqN3G*c*oK0) zEz=Wd-+Pp-!(kTC(pLH(JbbA9W zSH2s|BaxE2+o!xL8u!pB#D{I9Cvie5?HF@ppjG(_TlG&tbzmzdJDsc)rz#5_I5v@9 zNu_B|N#@MM_Di-J`Lk;&j7u?VXe9+B+6!zrXk&KD3YgRYsvU9z2(GA|VK`FW1{alJ ze-&4^zpzv(sez0iINt`{0>;Q%#ejvB?%gVj$b%(4P9(i+9@xasrz7rQ+lV!$KN3Sq z3AJ>x^bwqtYz9W_ID!q-%CEPa@}%lFZDDGfitJg&3MNHEeWZ%Bqp`n+RVZ+f5mq&T z^JE|qCjNZ&$w0M;2{&y)y=IG$Z=~XrZ2K0hD9TJy|YcHFVxRbcRO20aUz&%8# z?)iwC55}n#Ihepbe;LpF{d2qp)`Gm*s{Q2cxn(CIekj6R^x&}WI=Utq12wcJLh1rV z?#!x_8j-7d`6S3=mFwkK=(Tx~JGzv@xRiafz0{tyyd`y@cocsNg5V_Spkvs3-UamaM7{s(g2$4JZJm<-Wvjk6E=t*hEW3Hx(yCu zIIgyDCPzBQNq;MBjXM29 zt0*A$Sm2NuIdSv!i(Gr*z}ES*{St|rr=5?D?9$NVVMc@XXOq1qJ?>L9F*t2sU$G8B zX-9=wS7X+l!BIB)@~zbiJ<8@)KI9d~6olhORibIR_sO*rmet9){45C9Va zZ0!yJ-1#6TF2JFl;MwecuUlqw~l`(QLnmAPpiSx^NKOY>mMRN$>K@IJc zFPC^c?x*aV7hmLNNBn~`wEw+pkj$H(LgsHlFI#yhn0H_DeidwYvBMHD(0c|J;=~>s z=Y&Jpx4=&MKR5qz1QogY`Hxw?`H%S_=RYt3K>TF)b&J*@UaeMNP_?>>s@33y?C5~2 zL~D@dZ4Ky{2DQ(I*1#3KHQ2a{S_7BzJ@$0NlkM|OPr)np&J~_X_{E*%8xIBU2b-*J^wO7CgHHry#^DBwXi9}4S<_@k`!xOPZR-qh zg1W>lDmXjjRyJ2cd&zJ#S8l3(+8NrvTC&uu{KRgtrQ$pv5{iV~x%P|w^dGyg!ySwH zNb(0afz-|~1X@eBzca8sxb7vjJ)p4@whyz*zj6Pux;fWq-$og!pkvH{&+{^yE>CFZ zm2q!d^uBj|sEzOXH*^n=IEm9&3;HhbqmR+W6fVnQZEm1H)6yv*f~T6H| zF~K6dO%aA)LYns%eZ{kWnzxK>&^K4ZoAgcARIYEj3HxZ+o71bz7*PxNTDi&wn#fIM`Zhg?TiK`R*=_#^v2=Z zRU&DsoAx@7$WUSz;KdRCNEK3dj!5Ptr$i{yJCIsuc*3WYofJMWbUGNK9p{XOZ)b$3 z96{WdH>+7?r#C1S3rXD_LT>3kIoEN_YC))#hdQIaK6Md#)Axx?sQmnh5#^>*4x&!JN1F}fG z|C8R)w~D5j6Uc=VkiO|LWSas;E4e`B#YNk&_jXjN!}mLWbQYkV1{CT&q25fd<<&SY zh3S`pLFnuv==AOf_t9tUuLFIIoHHmmA}_KDO_9p(d0LuM1x-GB8vC)zfK08S;xDg` z1h2SK;5yD#34|c&clM<}Poy6~HGo(Vp^W!S_T%$?tY9MNOMizq{ee7v27)@_iUx#F zKAV)!)ayk4p%_Kk@N2e6v#14^dMyQ_vbpmIOe=#&6P3t0thUcw&zY8?5*@Al@CK{z zmr!Zr?yLx?De(0{c6pbI_)vylNxp(be#1$u{N2Hphq1C%|b*{WK)4?_@BF+@qab3I28YPfOf(E zO9b&={{Jvr%m1+*D3{gB5tM^+5{1w_{~3Fm<9~w6|MQvJoT${yWEn|bi*&U7fBtor zjU&Y6p!{#=<^LE|!Y2H`9N8ekZzRHpg7Dz{XRKxNe}SmVLFIpzmM5tZTo8To*N5dB z^FiU;sU8KBe;@>rf1@w`heT0o<=-#akK2co|3=1EN?+#b`{W-G&B(tu{qm|5~Rl3e#rL}N1uXZxAoe8z_+pDa+Dr*9&9f66ewuH)9h&nkd zvuA4A`U{3fRALoiuTqI(b30VZL&^I>mT#(W=)}>yXt|*M5vCARB9&JUfneu|u}bE2 zM)`J3kHXFfCqY(jXK#;6TpavZ5_Z_ng-tm3gT%4fVEz~3)lVRUc*Fa&@9 zg{mZkmocC5chYpu-&v>Q6vF=)GxN#)6c;4h+}IJ^>3 z_U^|;hMTsZw?X82`$^@Eu@>)#I>U{i72*=1jQtt}Qb%3SDV^~y(6z&hA7A3-y_MX( z10qNG^Hec-BS}Q^vBWGJFXu;53d*x6Z1;<5VFZ^ao!Va#@}%Ww4=+Ej4d?Qdq2!k` zeja|O2|sVYWfxf}i1nQnjd*&#YR04#Q+R@$+l&RdIo-&GD0|Ayq$V_&F7a z=QDmT4im$N4@wxN13{@DKmYY2=O>MKwfxLP6=}lHKA@Cn8%ngL6Kz_4iu(c`UCUKg)ZUBZ8|vBq~x&>DKqf##<7$_G0*FnXE{00AI_V? zk!m&NuW~Emm9Oxa5gaKn&fyg?HLp8 z8QE-z?7O17_4Gdqh>-N#nCJfo^t;d%^eP+FZ&$CE{PwuI+}^G&lY+qSo9MmADnC*f zVhq-)R4e097D_fs8&_id#N>HBT&SRAeHvDo?Ng?|h*fr2iGu}kXt}m1t6xMFfjta& zxqq`Z0)ds6@Po6Y(%G;u>dJa5ooY0F2Ug;ZiL6ekLwl?dP4@Z^8cwXG`lED4Dp>tW zz&DzlGq8-N8Xs5D7r>vXrfe~LA+#SGl{Vd2 zEY;aUND|To^|n>YG;g9@KjQx0USKeUas@h9pMSPt!|N;8$Zan&)5R){x@ldp&dD}X zwj<9~oX6^XWvXNJUbfmKHEwrW#cm^RFLK_dGwS7C_R)LG^CED^$aX94Gf%0b*p3t& z!Y2@vqnnX)HGLAhXr&MZFR$?t0IkxXn-;EYLr_TWcIB71{A!c>eS=9&hKy`nLkJF< zBN>5P&hJ&^tkMH?sCB&Ak+og<7160m;esfSk^qG)JED)LWaz9m+0l)@fE%!$fmS0O zQBqzReJ zp>`z7gfP6aJ^uz36rT{xLba3^Y@tfxuAuqZg?Llu;)jar{X75kC`Ztck)`2HU#6LS zOh^5vGyK`&Ge^YnvZ@rNY=^JJr70bjG_akoB*^XlQ zFc^tj9q@glygI{szv9+d*8yaVfB&URw&7=wq?oR)l;Llxnh-?vKumA%3yKn}ry1n7 z;iLF_X&2?2_rVyRuv#A(*xS#087AUKQJe*?rNjrobOp?L0;ZGlqz{Inxr#LL9mWRj z3Tbuz&(UMjTf`)~!AQU80xFR58O1nEe>o-L$S8(a*{m?hb|nkIzN?kb$U}fP5y0%2 zn8!cK()1`>KhI;6C)WHHJ0g^Ks@Oa|3G8S5#LCL&NN;RqfQ76I@YIuispBXG5uZNp zeFF$OsNM)yQ%zV5z$Lnwku;*@!r+naW9yVZT9V3=a`B65Di`Z3$OE|nu@$57YIgR% z0iI@i0L^8Df?5>^Pc(7G_)z0YMR>LjLn$4FGdL+zV1)H4qPgOGh=nqq+>ygF^h&K3 z!N7{sdJFD1FkwEGq6x)0BJ+ zfh^j?J@X{%t;lvB>L*$#4SmESI{uoK`KC=o1cmU?+o^UGmCrW(vhuO*VP#`m3D!Rc zN3cE*tmn~Co>5P6M=B5Za>aeCCSNOAzWxEGDSOCWEe9M5%&Jnw6!Kc5jq(KW0$aYmIw=%BDs|LhrHe>RR6 zl^vZnCgOd25mj5;e8Iy()eU`agKeH6@?!-C;^ZzpD7S;FjC$Hp$yCY4KU zsnXf5Qa=BS=&z$BX_dNCv4URN67_@1Shy?i($A3Fwco->H`01Sb$vgsg~DoF5RC&z zFG=P5U(}DeD6ldV5YhY8dyL+9ZUv1_92g4vei(@NqlJIsu8|LkOHZ(n*Wb!QCgmZd z?CfiS&21DoWwUh>?t8<^OdLCY3!z{=l(W-a2x@lpzK`${7+ykCs3Z>KS@HB3OTEKbfA_x{hdffY!5eP)hQP$hEL*kHf z^_V|Byj8QDV6EDqos_+(Jv7k)7UO#o&UT>hNsj2)3=QPPvnZe33%lo#icJX8#1=Dp50n7V+;OPuchhrOJwU z8EflB5!>Ld)X~rQ(SAkD`X4n5NRP1M1I2dMlA7%cFtgxMWlqVKjxj>uGjc=yX?Q05V2qpW~qVpMX9wF4ldR>MzTqiSCfW zvEo~lL|}Ut*Ha1#7Swxcumc|z$vJT%fqV`vOXk5p0VZqc^scYXqnQL;O5?~lf?~#+ z<#a3$*6qL&xCU?tf02}DG&ad(p)Obk)>M;&%p4Ns1{)T0;B0LK!A7PSTzKH3b!`LD zav9fPoQy~l=)`AhOspqkAgyvsM(2@M-1kq#`P3QgYRq=!jqR*Gu}I$xC%NaY@x?3|wsU|&M0sOVO87rtraF-tV^HoLiHa{a zhmpS{Jnj`_4OiSa!@n6pnH-v@!GM1Uum7jqzu4d3^|BiO)}Ac>41fPxum8==e_s{S#1H#ajo9dTt-5+B1ZI zR}sD*F9`paYCpp5b~U{+o?c-5I2F&p@%E|l>v;Tp)jpBzf%*yhTE&+*exSXpiXX}G z1Jip-#joV)#i@1!w1rvG8>Kqq7v1B zno!q?r;d4mkWC2q!>dWWy7#hH(f8xi*PAi3imHE;iRs(NYY~s>`v;cbP3Zey(Vg?f zr8i&vg*^WF7$(}^(f4K+f6!CD_-{26e<+W?a}2B6@A=xBXMFK70t%8oBtPm2@W|Qe z>!BC}gzv|%q%3?E9VcfeoL@n67>|cC4iNU-c*EWal&hTk3F1t0!_sIEqlYc?o2WVYkF6rSVDb6JkJ z>wP)?sDmcQMNhFDk6p`hY}~+eYzH%W&H#P@r=GGLzl$cro8#P{d5%9x3(T=^f0k^d z-J+P1U2C9n{Z_%n&)CJ_j9ME<>9Czgn=n{q`#)W>6JrJC0tfUo1_A~-aUVYM%*TfW z(6ATNbC8S#Pyp4RX3xRreDv#`QAJeAo#A-^giEyYDcHiI(<~bh&Qp?rKvc7J%Y{EOMsPSY+9f}40=<$d3rXi93{J-r~6V{uM=Q8u@;8HRyTR!l3 zs%{P*zW$#VF!@m9lts4jvo96)6{>q@fB&)odu4!qX@Fgd?dXReXg@NndH=xhD&6PI za~$~Jz=68K{_<1b$6x>aZ^*+r8qaay90$&E;2a0eao`*W&T-%z2hMTe90$&E;2a0e zao`*W&T-%z2hMTe{}u<5r~1zqR|eSsZ_#lsopT&G$ANPkILCo=9QdEif$#VGe{ZS^ zuuBL0{r@NDF2d|C%qxZ2Pnb6dbBHj933H?{?-1tQ!ps$>8m~~;1JgfeKgWUpBnQ+rKL1I~ zb6Dp%aE=4#IB<>w=QwbV1Lrt!jsyR5IdG)dfByP^E~WqfqKx|8w057?%j0wc53SFq z9RBdeGUbDZzT5c0kB`5aGJ5o_->rElWwi4C>L1ose!uwsADqj6eAV&&x`(BNe&lNy z0E7D)uI-mIBi~9G+P}=q$%VGetQj)~4a&^SDk{vfm6YTZX60lS6lL9;nNw0yRKkLX z3}-9Ugq&n4&Ckj#wU*=;P98MKQe2! zOD#O9&G>iG_1EsM0)p0q!{^7E}^{P)+@{*k%NH zikcnZYAG$vpIjK=m|s|$Q$oTV01r}%3L$^CEUTf=R#0Fd=1)Uy$_@xAWYa%-Ne*#0 zAfz@(fLEz)64Ih#_Wu39Tz;ZZv3DXY+0QXtu&+e@IGr{mXBP@HFxvhydSc`3FPW?7{f++ryxv`vvFmspDP zq)7#q!h0oY1$GRt!LuC?z3&w!z0;!v*c$@u5$E%8YWTA?qyLNX&o;fl@Uci=!`^@* z@wJ%Ra%0V2$ns9{mf3d^4W5GY8a&sW-{3g~b3W{Kf1dD+J#oSl-2mRgycc$VY_6vM zuG}`<-r!k`N5)e%roj_?M}sFjy}@(L+~9c+&oy`+hrM^dKIUAh_muv1+d*KhC@br8HmwDZP!m|#Snr~j@dkhbp@WeTMcJf;hU?;b=51#NCoF_a5 z0r9VVh~qx-s6U1_jaUD9!gJT+6Q1@6v*F1To|q?mVaZ(^mZkr%6P_zW;N5zke|SaY zi^|=f_h=46mTPl80ZCfZ^OQ$v;aS{_|5%M*tma+9@dxoOJaxT7hgqueE7rW9Z9hPj zk=FCeKctW(uW%gg-{5&7p~2H@0AvK_eAuV-Xz*Nkd4uP9Jj!Jao|D}hg31Qb@^|GU zb~5B5x4~0}N5V4}_Q&srT;TcnF3^H!E8bg@kH{}hc#82nx#NVV&zC1Wb8CH%vgd?n z^=Cdi`St$X-%f77!)@iKaIf?CI{-W3{u}~2!eqsCk-LHY2(kDLiQq0XS$eCoz9W)3dft-?DG&6>*qU@ZkY1To5rdVcV z7UUF8w&tN5h~A;Ehtq8Q{6f|ZGEACD{m`7LHX7v^@(T@=Rx|157gDdUAP2Fs@+>8m zENf1QFIs4N+0e;=Zf`cmLg;qp@Pq>LH=}fNjv6Nfi?e#bL#Xro8Iwb64CO!etHveEMc9@S3f*CYJx|2eV_%|Cp4R64{yphRYiKQ^RXi8>w&b0ijoI!??Y;sVG zHqaAZnWdpTvrBVwyfM$B-OJ9&wb%+Uwq^h@C{;4(m!(Mc#-Efye%4slrW#7E*@Fi0 z8h2&fAPhN6(P=Fzv4SdV(Y-l^1oJm=IBS^Nu}njiw@iZmm|{&xOuY8S06fU0tst8P zos`3LffS!G;M(i1zv0G#i7fdbd|@NyzbzO3a@Jh`B3SyC|G>C8=qTo_$HHeZmO>`a zVvyD9VZD}>5ZN(3mZM3+kDTdd5xZJ^L=*mi!JlFliTlbvsE;DhTP}x z_wFo?J9@UiyEctkGohD|cEj98&vi)eVw|(C`jfl*u9|1yzjIMjck;goG^pXoOoW~C zmA|*qQ+lA$bH)Bf&ylYhJ&)~c^!&LUdi0}4&s#eiJ#+9}zJu#UE-h+5L9GrXU;jyY z{eN5jh{pl))6DqDKcv>ydTEsq6ph3rOLivf$Y|_YmQtEu^ZHw77Uy6VE#y4%-N<8@xq$o@6jg&$C!#(F-xKT={-VCP~w;#)D4@C0FBBvd}*qCP|h_ zaDpKf$j3e1O~*ZCs*hFkz5(xZH1?11{-DPG2Hv&tm%y%#e*kuE{GVah#xH>Vzw*2h z5TDZ5;++bxcSK%Q4yA|}zYhhxVP%RpGmE}d;nR|#&@u%--sx_0N@mKKaT#e6UPj)Y zo_3olgPCOR&1Z%O zXSa&KGxIrNUb~>U@6|KL`ucd5Nm=O5`s~J`DXD40q+o$mFJEBk7AajCgJfiBG&7CT z2=SI7%yeO<2s2HXMq!Th`lm4jlQ$f<4;S`Z(#J^h=rNLU1b#B`q~l4!lZMBLXC&Fv z#z-b|gE<@~`_t;(=I1Gcg;)D+e}5e4KcmRz5{>Cn1{i~>1ItV)y@(lOY&oT5{YOrA zA%7c_2Q@%W!%FhW7;UlIO4y67kYY)QLct{jq%agf8g41HSxOKmXHp4!Nw<__Wrrbzwqo6UY_f~mbxKL+79o&C~WDy}ww4RiPGcQn3H79zYwqR{D5 zk;XQLeZMUA`u+o7Ftg#GgKwE?j4@IkLX~J-hQXHa^&bsnD+{5<;3=wUNvL`JD=9}O zJ0VIE$B|G62|<#E!z_f41^7hkFwg-VsBuYWep!f5c`Rmh6yTlQDaLSwCF=QG0dq6L zZ8Dxxmd0rK;=&R9P62if5G3hVDGM$|Ui(PAPxA|r3R{++3#V13kyAieoGO(Pl@4+z zDk!g%zM7^a@w6m~r_iMT)691sfZz}FGFB+UDc%=8mn7XTKCr4^@LMmZ{vpL^Zjgbc z)`Y%h`e!`CGbY>~!K$7Ma9QSPao6p(AZB1A;jA{nbMLF>2M$6-AZ-3EJ zQev5zS(r0jOjZj1y?@;?PjSFQZrW!B?DSAL^}V$w;mm5`3582>DIJP$!$aZ7jZ77j z{K=2p=^?xNP`JQ{{8TsfJy=}TEf^-HO&BT-NjDtx6lk6acqcb{%;M4dpY3}fesl3( zLVEP5VS>fIPUEkJBU7bU>(<(LimRqY_}WKxZw{+BCTf2lc+3-)=>NpPPVP}K=?U~d z8+$PP*2WJOH<%mYsr0rMTN{qz2I8u2T6fhg)>2qhICDyo4IduR;bb4i<0OmCS|s87 zL;;NwW66dim8JJ?KIUoFGX&v6JhO&!zo(7IJQMIxxZyC5BnOXkVG7)l?iTnzA;RRt zY=m29VATi=zx0UC5a~~VUuzzU9~e%HsrvPxd<4O?gSN#vHH^-;04Bu*M{nUp_B8Z=0nEoSx&mXgW6q`7b*K^epwMsyCa ztPjIB4iA~rP<`(g= zUK<-GGEA>iF1}q+B9QF9>QsX@4@=bWod8LT$p@cHR?##|Nxr4fipc~F8VWI6pa#AN zp9Bmk1z5AiAtz&$fXN98?xlZ>c{Jt}@{u!IE5p8=QR?J89ZO}ft|q{zBqukAEy^?y zmx@X-0x|TGcmjF(+1WXmawy2Rh$OA}7E(%65MWAHK~bUL8f7koS0;uw1}SqGecY5X zjagY(v~!I?Dgq@IE7pIiF9vBytTfdo8PFR<$HpLGj8cH5KzPK0NLm}oSb&veMYa;m znRvCLAy(?wub(s<F&)Ef* zDU-4-u~J+wX|}D93Kd^iG!a=u!PofR^_V{wL7#=sd^`{9Z@eWSZ~cPxy4CI}KrM$2|Ao=|bVH$2{Bc zT#9E<8Fwq3#ZB^m3HhaGDdIkWrw?eZC;;{hyyJPg6mjuT*r!YIj^|%fK|?X}hrC_~ z_e{hglb#Mw;Qj_2VgCo7AMsoSJE}dYG*lMDv?2&CeL$yA&=~F-G*v9K)RGI2!XiEq z20xlqldil{GGwN(Z|XDfW}0G|j0rjnss|0~1AFE)2z^lr-5C(}Jj!m#fBuO9=6iTj zpGBE#-m{-O=6M{?M|e8E1Rf#%F?bH($zIx&j$^{@r5Bp|{ddqE3iG;UJpHXOKSQ26 zzU+ItzjDkI_>lhwxT}vEK3F)2ZRRcJTZbCWnNlnXFrGL*O)WnCLqYi7#PG+r3fyl1 z#pChjP>hF~L>Nq~EUqyycY4i4jmo!{GUp+}-J2eFH4Ndv`9P+jF#Tz8g>$pOfZ!uN z6@$fB$JYLM!nJjHDg?vx4%YqYJ1am92Fqx`56z>{-?u;Va}sb&Kl=-`3umuk5pS>j z%HyeL`Ul$I7ycbY_({V2K)81fVc#YEI|~0&VSX*#&lmP1!ahvc1LNfj_ZxrXbgFo= zuqO!rS;F2)*o%a@I3V7W0r7SO#8cO^>RUpO2Nm*!!;VR9OvhR@k zCrQ~@X3IW!jK2#lYnGHf6D=QhT(BtFIZ_`fyFi41f2q_D4pyn3lsyg8g*mrMcPB|X zMbh0;&QvKWNy;@#xwlEVXuV6M$vM)HBxy1lWvetq%AX;Pze_3@Ee#%=Btg5=Z@#x5 zaK#k{sh|{o5|(KUmZq4bzDd#)v(yK_`BGnLN`W+GiqyBSREYV!oasQqq-f71sc^D{ z^}{`-!s+BJ72PJyNs@|+q&agWD3Li*v01u0Nh&Uou9k`se@GvxxEObhO2ws8u@!dd zW~l^=Mw6tH(b5o5TaqP}_xexwo31mN-+y% zMQbJ4Rf-%Wk>(Jg3{vSV39H$8D`lO|UksvrRb%^6Ud}s(NqcnY`9#=v2~*v_vq#tu z|IFj5;lB{>`!wMx&i)|o6z6Nmp&lSmRE9(Zb$Mm@3X?!roJuDxFsgdp}{4JX4&TgnfuG37ei| zVNVfed*MDp*hdOeO?Q;Aj}fLy{~f|UF2H@fu-`3A6~`j%*#Y5mg*`tYe1WhZ_=)qC z^e{a|A>2!XxKrA;5biUC`)pyVbj}m@y^62CQJxnF_eH`~`EZ}G+l8s(JSglB3zKLk zzsH3AiGc7=3HuUZl0K(2UKRG`0pZ^g_Lag^>3LV!R|SM$E9@Hr+&>WZ&B9c1whFtp z{t*2&!hMG@$&KQCEbMi{42K)#`3qs+rwLDS4hXw8UBdZBxE~fKxzY2Tu>UAbwLZ9o z{a0ZUHa$m${aAqe31M#(CSg!rot)k-#AQWMNMcrkbxb zVV8wTVd)tm>?4J#>YuS8+{X*|yM;;hnQ-nA_9?6|L;R$;1oX-)|D`NDmnFsZ)L z-(q2R2(umBC~u+uXm1#XzSL8eCKVMGu%8@sHMk2FJ4@L`Hd>;Hses7_@s1VM=!#@! zGBaVoKnaT@H9)k@$LpfCFc6;?K>`IK{4l&OrFmFx=?l)S(~7W+W;*ZMbD|iGH$6rt zbHZFwK6Z*;JAft;={Oogm;(I&4}0$eCskGd|DXK>lA=w8iiUYh)WuLQu*#~7US$^-BL^k_-z{igqQOzYR|^QGM0?{-Y<@{6S09uFPU zy1ZG+&96{O)4F_?l-v7WH~n=f*T=2?*D)FH_Z8C+jrCZIpuEJ zlX83fy6I0#x!wMbX?+a(Qf{~3P1i}ej@AF%^vO=So6gI9lRduNwDWy%m*3BuQFQqK zyUex{I!euOOu+0v(7wu z#HfD!4uQWLY5V&cJ~h6W->m6B`1fkg`s}G^pEmNWbNi|E`04tu(Y@wre5B3WR{b(D z`J&1EITs)9)}%+CHF`9y@SBclEoGy|v_}!gAHwkQAwTffe`3-yZJIZO3wyKvq`mDY z^1PFq!Ekv=t2t*>gB?ZtR?Ofxc{7{&IK5?#S2KFVFue(F|He%j&)?WgpRRvncPM|p zGL`?YIrQTG-k}%w^Sm0~AM)ovLr8Go)!fBrdds%F-Ga8Eo}~Mr&G<9vVAhedj;-~k z&z#yanV*#DKWpJfh{u~F_T;7}M#$f!XS_*#;y!hn#|zWN6OWw1r9M=Y#-m=iVS~yz4Y{HEp1NKF`SF&w zT@9DK)V-|lil2dOylgPLlmF@8#PS^kw<9w%-jtaw6KC(q?ZU)K<7P~nGI7eFaTiaR zFs`L($~Y=_QcwTBPk)Ia6-^J@( zN)2U4vS$vRv8T149dfAO=*=2(XtT+-TV_bO{*7VVGb&E{9h2aanuCHUsF?KQsY{@ zBl;bI?|0;h<}dYz4Dm*eIPKJNXP-Ortf6Q0^A0=A>ooepnKS0_cnH7kQgHGN{a}Q) zFV)&kpyR!oLud5s-}c9M%zl5qh2yM0e>Pnn%{$`B5U>21e=ITA*8y7!bS ze*U$$)wtK*_ECTuQI5Q}e75gzq_ZeN1(cU`$wAN|F=EtdYQ(4!W6o2fP9D`E-`bJC z`0h>K)s<(5s}7xc=8}yU40-Z`6R!E*4d?GYasQq(FS~N)rN0<{=EOBWyMCYB?~V`n z%WbEv{KK_>eEpU;{_)ixeP-yipZ#gUOVKZeJ#^#JlOL=9?d?y!J>uZmkFO29;w|@Q zKE3p=CvTY?wDnW{*e^bQU9It4a#lWifb}X^)U(~I)!nxHxN^H!{EOZ`NyGhT9tmKc z7+{_xU>+4<9ui=lCt#j4V4fsko;+ZlHXu(GaGNYiC*95SiuRBO&J`nXm2cu7-L(pNU1|5NpL`Nh2nSU+X{;z0{y};xpr1Sh#`%fp^nEgKc z;`i>Udc0oJk0hMsJ-0G<8Ut6o_IBN)MkB?KdBUVG5$f^; z-$%+{{3&ztxQXc_v~BDT>!pnr;WD@p^^yK>&2JxLfxgT2F}cIG*qEGbn@xAdBc%N$ zkG=M`hki*qq@Pw)iF95Mr0af)^eJdFY2EgP9me)$iR;*>^}4>^C+q}sKIlE-+r6~) zr13+iO<3}cXHL3rb$Ct9)jvDwjXB>>f2?8cN!9=T$}RgHxv+lV`NPi9X;Z@<4}AlZ z?jh_W>?Jg%{D0K$+KfJa%)bsl&o@8rSMtMsDc8sK0q84|?i}uT&I{V&f^Qnmf5Pw! zTiY1TJF4xtEqruB8|VG*rZ!Ie^{+L(adG7-aMPv32W#HC@W3fB`0FD7R+#<7s+G^e z+QVMEq~}l-C4=WYaq>_VumAeFwU-W6t4Cct<)?QJRYR^1H#YuxXt3b^*$3UTZ$tW( z7oOdC;28}!{PxW5PZgsE+HL!{@~ZVW-TTa<`aw&U{`Qc6k2r3~k}VBye)xw2Z@Fo~ zQ#~H~+@V9KEo-XjzS_CVv9+P}zyH*3_us$b#?xMV{iK(w&Z;|e;6eWD!)IN7e*I%J zzV?T+_MO?GMv0xm@3=4Jx7d77qrcZ`J2TB+-HzicMZO-RbUeSXo~#C`fgK`7xBdS3 zH2KAiKj>I#HJvr@XKg2mlU7Sh%R?ufchcS+rSXxIPMmb`qtbYFXK6a`q@!h}<-uL0 zX?1sL+Fj3C-BVhga?;87_XsNNWWcab>GS_QC*F6`fs;-<>Cj1MoOI-*lgCTPqn<2H zXa7{1&iuJFo&HN{Ivm`ibo=)FP)WKlzBC=qFHNhPO4GrQOXoB1q_YJl{@&8~w37~< zbm|~y{+)E}#OIuJ-bojnbmF9oPFmepI^L9%_MEiuqys0NcG97f&N%7FNoSpO?4)x} zI`5A*>+opk7=Gfp~MwP(rk89C)yCmlQKoRiKw>4K9^ zoOIDitNWe#aMHQIm5$eQ%6%stIO(*L4xM!LlhXd<2TIfV6{YFifu-r>!P2yPxHRpp zEKLWGl&1YdO3%l_^wM;CMrk_!YH2$4wbFFtq>D~EnpYa1chb?B zlTLl3G(K?B87CdhFO4raY457i^0brAJ8A#w()id(r>`k3kDPRNL1}s3Nf({8cWr5W z+P|(eKKISiw91yI(@r|Lp|m`9($S5jmPw05R5!~XWzh9b;owWCZ(sFfcX*zV$c_;1NRvI5H zE=@;HI`5=|AC|`FowRp*X?f(N(@RRrV<%m7(!tWw_^gx8JL#g6_UNo zqLcQ1RN7whwbJWlm@h4N(@D?L^5pH(`tkLp-+Sa2mZrHyEjfPrEGaE-aMI0Ada;u( z%J(hy7C3a$lbm#LV`+cMUZvX;JKLw6?{QL2y0??|opkKp~T5~nu)oEkbkh7 zZ`1bg^=8@?wJBCzN?J&ZQ#clhlB*RI#?Z5KyV@^bA(v2@I?c}#DZiSDRo=^7vHIVys&)%O( z+TOp0wp{KXBT3u)%~;a*{i}VSWZ%Eq_ers|?@7G9UryWlQl65uyFnfjjO`(?@_$&ZEhxUt7eR`PQ~ zyI<}8wDVMs`A?YRJvi9V6GoCB+qBSa$31<9IsxwG$-UlqPQ3kI!^v(>y8X2mh;hr^ z>#3XWs(x4H)ozDQI_EUto)1pAa_7gXzQgs>jd#;-e}U7WJKvsD?(V-Jx6yKQ@x<>Kr(ZTsc6yH3Vw zSuV~UU;g;c=f{rAvRs_oUiO5}+q2tY=et~-?a#7YoShHbu1y!qY>%B6%W`oA+mNu_ ze(`0#Ez8BZ?UkEH+m2*2IlZeF%ZdzR(m-2GARIJEo0vRs_o zUb%j4JC^0*;%VmijE5Qevi?$D(pjOM78|dIm&ON@PSuni@3y_Di}JjbCj&aKuSS^s za^*o6<&l&J&iP=+mzVOeOu0JU^q;Hme0+hF=gX8wQeHf*^ZNNN%GDXBUb*@~newdc z&q&Jke$=nQUV~}Rz8)84-YcCG%GS?2^|Q6RR$qExjocg(4>_2kqr%o+1 zeviR*_}9MuPW?i;{=E*Bv9`WCvvm8@yV!r=)K49=YvYfc`q^^*m)rkN{dBqh%hXq+ zO1D3^i~R>q{md@*A3604<@$GSAnpFkJN2{W`Y%&oomIO1DY*{paQ>C4A2{_3yV!r^ z)K_v{-`W22PW_bJNA7HWl`h?WZx{OyocjJQ_8&R*gI(-D@6=E4V*lzhrQ09wV*i0t zKeLPdM^62mykFR1|CKp^^G^NLK(jqNTVI`By8Xpn>_2eor+2ac$f@tw?b`VBPW|jI z_OC{lZhvMM`wyJ@g`Mo*-mgVc-=V`rf;& zAM9p*KV!xnN_~5uW4F(iM^bL@L)`LM%I$rETb@XHO0MH>xp$5kN4iXTDCL&xw@VbWzf_KlQoo^U}6W&hg#V_1Sxu z^@Dd=KitjwcK#w;zs&I&cTt{~a`*VL?H8onKVkbk>m6?QM`Fw6^+Ju6xS^%-wmnbE zgEHlTlo#tduOD_%9(7S3OS!u}-p!`Jyp(5;?Y#fQwqNG+3w431SN8J}DKGo^h?Ez~ z^q-e<_w^WpQ`$F0xTLKo+2u#@q2e@7B;_h&5Wa>q|z%I$Th?P9_I+4^dn%=_`% z$E{=R_5@OHuV41_N_+jXpXa&PFWY`3_3d@e?LRN&wjH-zg=Snynd8-yawVVRxb*`m zx1Te)<)M_@&wgT&C zPo&(wPj&a7YBJkr-$%OTo|N17d2V?i<@SA;TOLYzx%r8@D37}+&v#LtNO?5WY^OUu zHPPhf%anUk?w+6R*B4t(!}@v|IG@|Q{e===Zah&JKHBly`s$+X{q9bEuZ#M=+^3f7KYW+<<9As4-|JHCw6PlE09q>n*c9!a@(a_8l-l!s-?^HLs{ zDNk(wWy;lL)30|*=l!RoJSJq2EP$&_#LFMR~r9a`gq-t}^cj0x5Uz*X;d6 zTFTpx2isnmG%1zx{Zz^~-EewoJJle{9RkjK8bT50c%iZ^!Rl^3MAs?4mrD za(92(_Vc#>shuCss#)@#a=X6+DYxx~HonY!$6b^sU6gxMI-d_ao>0ndIwR>(1N?F0 zCd{7AL+vjeFyI&-p*D@joHvb|IhBW8G@YtS%Lfyy9|k{8KboB9q+K-aRDBV8hkvE@ zk85jxBG24mt!G&y@SR&IsXvgh&X~MQLny63fX8u9*`)@K7&Ty^ePHysQR4;-7(AJE zs`XQacs^^(#EYj*pYx6z;MN~Fz^oj!vu*59f1s>Dw37{tV#+U`I#ciB0fTsGGozQq z$VW^V-7;W+d2U_XBdJGBIQ7&Ww&fk_&vNU}>Y{#~>3_zYsS|d35FPvPtbSL6=um%P zEk`d8x0yM;ZSeuU&fX%ZIa z?{fXxDXgh7r`!Z|ef+)G^-DKk*Zbei`k9%X9soPt|9e*d-Hv}(>mSp$|2tj*MqcQ* zzmj*o{qINp0q?T^cU6DZyWIZwp#HlZ|MvR4{0|!U*?|LU%iOb4ek`{kEI52j+bsh3 zDEcO${YBUG)O)xA9me0G{r7GI zc5I&;88iNAX8EbzJn?0MI&Z&i{GGMG^C$lH_Ul+eY8=n8o;X-PJeEfrpK?sw>rvZr zLH|3HcRXN5H`zUDIC`>^whJvuHdieF!tqUQAAs@Pf2GqC+CB}_BQR-m960H=8!UNQ z?9hd-zx}eM%Q@f6mz(R!JC^TIpAWtCkuL-2*f{Obe@XeQPRg67UCbgwZ8s2Y@okUR z-k#?$(#f#ctHMuWOwhpnCh{$>^OPK$O>- zXXH=5Xm=*Cllr?f0Uhe^)&y*?KkZ$PzrFr0kH7u;AXk71leb@F^!S|eSv!`S4=C+D z-S*mT=l_nk^`*ye?KD{vptBuJ|Hqj9+x}{|OJ_)D^><~0bp7qe=Z=@i&dNJpB6YdF zuWG;P?Jz-|mAm!reNlUTD((F3SBJ^&#OnUt_VxU9+J0vf*I`>aXX4xoIw89>=`8GtU=_c!CG zPai*L9LrpeGk05d0F-n8XzuXFU&u9-HMh+G%t2bd+;l)W_g8lOr7bi}ZkXBOrNVYu z!gsFU@s*^cT6^Lh>(6+X{m*!J{ZHt+I_FpU`73!LZQtTjLw&yVxAWh2{O))Vl~yT9 zbx~iA@{%egiFdAV&w`RFC5h23$Fv=M_L|t9Za;qc*rV;_87}Eb zhnoD}!a%r5m^#dquaIrCeK&rQCH`&SYWTpQ^SUknl zFBuGpP{xy%_C2B9PD^)t!=bYMryAzY=)C<%+Rq9nw1dwIJ*JX60Y?ImT}>uP+7v{yXbw3iinr>Q z#7Vj+@fk_yY<(F(VEaGb)GHik=*jqV(@gupu_iw+Odn&?VT+7Y(yC7KB^?ho>7tF7 zwB7#D&cF1Z5#~pkdN$57lK4d8a(3Kh;$w;TPLOd(d{QPpFY);kO?*~ZEEAvD_-(SD ziZJ^P=}(wDt-9@cXt%@CJHi})sW(miQ0nKUUNqmd6V_C9T0fNf-dj>%+VQS3^&(+% zdguMeQa>a0^HM)8^-@>MJoN9p|3vBsZ=3$}b{q>#z05UIU($BFExk{h?T@6s68aLK zlm6o}^+Ty2D05!rrG9vw^nb1NFKOGaWo-MG`aHO^ZJvFJ&q=>=nfi&;4=bd9sh|2! zx3+dXVg5CfPW{_36xwlEdi~{kB<-av2buZzgc;wY{Q-tWp>4-9l=h-ZGrmOHQ~#Cm z2yF(5|>)h`FIm)-|KGL zkEEZ}Ev9~WbLn`zqs;teB)%Z=>U$=xDE->;hY}y|VcO42z2sICAN-)S{aE625}y(l zZj<(gA2RI+!u*dU{*Kc4 zSmOOXO?=kYyVJzwq@VWjOMI}GiI1dSCS&5gFB+z%3MIcFjD(@hm$)wG}AVpx2|F#MOHlKep8Jj;KY@|4i_V;M?+`JS?WgvAz9FP>?boi3F8wB##c zV)JL1xIk$8v5ciZZ*S9IDE(z#H}%vThW@_|}9mHa^H3A2@^JQCV|EZyg@+I;(d*1n&z>8{?d*uN`HSDW>`0->t}KG!PqVbfnq_2re02%$o+fj2sxh1+)t;ae)?KdKP8NgGWGID zN_|P&g1e^)te>+%HB)%lIX2>se-{e*Q*NKPyb_=KW_*+RNT#+6#rdd%swa z_QF=vo-a%dk$E}JFsL*1PL}N*VVE2*`DO0!iqgLS9n-$D{JNqAD`OMYV7iG;g*eaK3C@dKv4jPSj>J{0WsuQ2T^%lGQ~AkP)c zOS@TNw9#Bw!WRtf_1c&C^n+$Rp5@-=^Pb#ZrJwtxB|ee3oUr&|6Bh|>`x%MPJY?Dr zgt@*ZJ`mdYti)%ZHSwV^{i=MvU;~9Yi4T5f;)@a=IPtxmdIhN$?rT1GN(p;NTv66N zuyMsP=KG6SXxCS;v~lV@iEAwVz9Z%IZ=aWzI^FbN7-4ApwX|_rX*UqsaoT3>^UsP? zOglN@R%iVN8<#rYj4v*DWd?CADb?*Bzu4Z#zZsRO-5}&@!#HEDq*Zb3=^ye>; zaosL_pWZLp=W3C&N5}6b1LhN=T^ylmWdA}KHMPV6DGef$74pA7AC7re*7CL z7be1-(2ggR_6vV7?MK4=Gp2qZEK0qwVDi&KB`iKA{R+diChZB+>r6T$Y1@A!{oD1{ zgFn6Ve8duO*JJl&UG{SGotOCb_1b0K_Hyxw9nVW<9HFpWyprcSreyv1!m;LkdAaMg zC-HW@__Wl^%jaKqUMvF}KUO|p5dLp{zZXjX-aONP{tCnQ`}@81b^?TvjHB>v(|=01 zTFUL~g^eqoW3KPMutr`7ENxusb0#j3*8|(F+kY(m7w<6r`$D&W8yB8y+KoSJX#2Ia zaoMq^JTK$0{kyN1dFem-lgz)+Znve4%U&ScC3Ige?ejqM74rR~(0#qMajDPCIHf&1 zPW#-+a8J`tO6Z<11zSOwmgnu}dYgJm=*xbxv~g;jY>$k?Z7(D399KeqK{00r6p{A^P{5@xo@_pHK5Xvb|?l=|M6P5tCchOvB~90_wm zThB5z#2oMb*GxSn+}-b|eQ8f!VcIKPF758-_sMB#uORKkmdgBo%zM+!Q{fH6T(!v$ z_cF}9RrB*I!!V zvp1W#P-xrBNO|&oX-{a&vr?YB&6G#N_v`&-PWp?MnEukj_v`z}g7lZZ)AZ*F->>(V zMd{DG$MjdcTlhYGUza+`98bYdOh3v}cCaty-lL{Gc|_u*JT2wLCry4%XpfJKl;?kK z$|IpI&q{gWH>Nxms(Z})vEp6wKJ9Kp|3vfpl@{hDPD#0K*D@#Vr=BwHC(?fE$ELk> z&M*@0(7wclQf}L|EJ*ulY2Op3?lbL%_Znt}JG3ux87a5zS{9}Kth5^n?e9=6?e9^; z<y6yY&c|^JK zC(?dyrI{aJn6sa22(!YBaA!Y1vFm{NkDB&#k4Qi7(dQ?2ouA@k(!Ma*$dfe1c3*#+jzba+k&nCj`+a^CF>2!rD&kM6}n)2-H!Z!?)R}FVK zzNP=v6Q=(}`uFda_t6hY|HABpCY_OV`eEr`7(HOp;e8T!zwjNFtyIa z=bx2&zcUPkkuW9Yp)guo+D~5E_g9(iQ^MRUCeHttVMdq}7KPD2O?g4+NjGftjzR;GZq&$4ilzYOR{d_1b^@9zvy~3USd?+jRlRugIv2b@k zAIeF4xxbk9GQ!>cdxL^)Z=-2162`mv`B3UKc|ZGC(_TuryPprGrM-f*6WjL6d_I(s z`0#J0e_vSc^P#N7=Oiw&oZ0#3NjZs+{%P7z3+?e%kaD%nlo#GGwB*}HVRcaXPX9Hk9seth zKSyoUL$&(>#){vZE0Z0OMAy_#X8>h3@Q)gFl<&-kDQ{_- za%}C913HQMpj^-22lMm6@$td=@xk?B$7|>Z*T)a8j~~1~eDM1C!RzDy%dd}J-CuuD z{?6||KA4|(H$U(9_4kAQ^X~S~2lMyA{O$POL4OppbDz(AaQyt=ef*Taemfu6eUSV= zZ3a?GRUnn!TczNMA5p3rAHb_nPka{sq?b~?@Ok(LRD)08n`k&*?W@!QXcFFo{ZR(* z!vUxTAHavvY`o^PXdYhkqx&%gyrz#9;Wb;)f=l;NG5iP0;*0S1{gqmX&%saeM;eRp zK3sqnT zFX#EoIh_yZ3}a645&ZTjrB>r(IQ}f9*6Vn9=Vz4KgwMf-vl-KD<_Go|jqoWrcs|>R z58%_NKR$u~x`FM&s~g#-ZzFsfKK>oH3txZ_E@Hm$d8oe6Gf#CqdBh)==K zpl$dNHlyk+<4s8kvsz&U6PK7#*1jrbxw>>;Jb;(ho43h{aP)rUC_wTHu3a_-~PaKIy+ z@Av?|^ccq^z6girm71?(U^B|%GjIWF#b@C{6ysy~L$ny5gAb#n_&j_PEyEY!?@a1Z~qX z@b^f4nSS9-KVyI4V>s&PO7+2~VJqsd^WmpgvtRH&9Dy2i47>;p$7kS`Xe2%h??!2S z4*mv>!584)P$Rwwul@!5MaRRRpk{m??(-|I3HTKJ)Eed=@56ylG5`1g{t>m}6WIS5 z=1|AL%v$CLubE$`Q~|H~{b!jUd<@t9j%yu0frmWDw$G(5tV6x=0Xzfs!KdL%$io-m z;OBYm&@r$X`S=X{7pldp4U7xb<6}7V56lTZ4WC3Iz5qY{C+g#U_}7GO#24Y+e`cTI zbMV3!IG*qs_#le$d06omjw^f$9)NOq4<3P*<9#>^t-z<@rD!ESg14hQJ_nygtMCc@ zJ6eq|!hJS!?%`ALKvckc@MyFS@5AHKdVBzfq7C>oY(@z_120D#@mcs?v6=*X) z55rCD3%ur}zq2pCLS49VGuH}yQS)W?1zz*-|KW8<=fnH{%Ra;B;hZ-(Ch-xxZ5ziP zJ_iqflj9BV!!LEOP?K~F{1%GvF|7Phg_?&?!Nbr(9S=`Kt@t#&2ra^A;FT!GXW{K= zF+K->hL++B@NZ}tz6iVTS)p?H6g&(q$NTU!v;v=o7onB-47?KM@mY8~T7}QSpP|+G z0(=Rr!586g_o`3@d;+6=D%1wN=8GSxP+N2iJZ--URsB`^g6E?C_z-s6ze4%=6zqor zybnj91|1Jaqv1LpK8Qx*^RTgZg&L#t;Z+Azs3v?CKHIlKwcrz&|8#|#ujAoi{h2qs z4-Y+(Inf>-hgRbQcm`U7Ps3TLfREr!XgxlL51<5}hrdUg@CiKqs0vlYr{M~;O~=5A zeue7sHRcw+g?i!DfC@Db^}z@5PpB_GfrAG!CpsVY9#o;~@E-gXYQPuZ3AGg}tz%&Q z;0iTXd-$ii3e}8H;9t>fd=Yj(u0qYlr(hk5bUeHe&BJHlRcJmw3%`pN;A8kpl*Jd| zb7&zxfv=-hygI%@?THrQQ}93(<2`sdT8#JM@n|VNfWy!-d>XDnIeY<*Jb`_t^I^9W znSXo=UT{){+K3O~>Qk6!9S>_yt>8w4HsN`wCq9I~LMeO!o_HGbsAJ&7Vazi=0|yVM zzRrhJ(E^6V;Ac6mw1>ByTcJXH4i*|YuJD>qp3iZm zJzVrTjv0Imzc!X_z(;W81}&1eL#Q`C5BI&OLU}qLelk;`YVbb13^m}h zaE~vtz4#QIfg14<{5opVG4ROgT(|K)JP)0`V`;B(OXDcg(J z{M^qtp79~vqd>d(6dZ%aE!Rn+tA91mM~9YHC448OINZPOmkeVuK=NAPh}hc9UVU*=1DSo;RY5I%q}qcQj* zylWf#4xfV`dW-GCr(jA|s(ISOPgGQ@R=fu@Xc=Dfn5s&Z!w0ajx>DuwA)MT;Qmxi8 z@VjUoK8D}uUa8jOv#{?Tm1+~-hhIip@e%wB+J-N}FZ8HX)mPFEY(+irG5k5|i4XRw zRFCwmR4IHO*6dxW`rv(d%s!Q>zm9?5MFBpB{XSf&(mDoy5jEl?cxkFqHE9pOk7nz5 zxD-YB9DEqf!{_0D(R{r62<@OOK7!YvMffbd8O8V*-ia3Di}0Ul>jdh4v{F@|E%+1+ z(Kfv1<7i|P`wp)CSf!eaPv8r^DpfPS2*>Wr`0*jU1LY<%PS|aK+9E#%Pe+RUG#rbX z@ge*I+C*O&_(il4&pIdSPSkQC?ZC%S2A_w&L`7l>@M*Le&pIS(uini6#qsBx$nAHu(WqEao;RZE{6;?SfYjvpC&{(|km`{|(r{K6xa_lkw5T5rb`eMu>tUHAHXFLHsA8pig0>6Y3 zd<55`#n=&3int8x$?u$I#Cj2K#;aTHDeF$y*1M>!tKx^=<^`S080qwJ{ zhnk1#@mW|gfO*mJ@E$aleAfI>FQSopJn-0om1+YqtQDfhqjmTUya#R4`vM+3h`Ggk za2#5P58+d2C7yLk)LUo;by>Sa?T?n@J$M1yrsLs66#kj^;i<=Pyy00pM4g8=5g)=Y zqiV($!52|aJx+N1vCKc7wMW#C(N^MFe?*NNT&X6JAHti^7(DBYsDGorc-A0MpF(}` zKAeGS=r@A@L_P58xJoq?_0r>kKSkS^bJjmmZ=qFsyN+kOP+o5r9FOXWXN?l|ZItDh zkKsLN0iLx;)bpswdBOT5>J_vJUxfRe!0|y0>yW6UQ7hhuPu8;^IR*;wn(DsmnSf>M67tUx06;HJtnEB-%lWYl08Qq2BlqejU|w{$}BKQDG?8Rrn(`d>P|} z4a`Z_3pK)Ji_tru4$rzv>hnX{7CdVvshduvO?(V* zJA>;Cp0$(IjU##8(fM#G8pCxj2Twke>kOWCjMP)8j_X?iu1B?a)+th(kdJ50BlW;2 zUYqc&H=|ag7WPX4u16d6euSIQZ1PzHMr}pw$yaAps!yW1%#RP7Q0^{{4Y&#|#TVcP zv<#oXz0>Spd!<;*#;}d3R<{ZJplZAazl-X1n{Y82iO<1}s0m+$tIuIS;tOyC3h@a%{IhH?-iODd zZHys+!%>R-G#rD9MBc_crEV?M_@h!0`)So+1M;2Wq1UR}Uz6Y4=-51xT0(S90Uh-T})G*KU7 zB6tnzjnBe`C?qC^OHp6)bMSt&{w=lhTF26|%kfG+cwI`GTA=e`5v{~)?%TwzAB0dAZgj(aMC+LU5H_LN#AGzl0(=CoLm7M){vEa6$+p8SXpKH*CbPY0 z13m?3qdv@G1lOXi^p(I%zrgXJ^P#$geTmn+99849a9A_v5k3t+k0SaF;Wa3s{Vco{ z74bQ^0xcva4}XQS_ySyq))SM!7ttc}i*PF%qhHsiRH{SJI$k?`I2xt*=QRsnfkxu9 zuwp9b5uWv3)L1lfUt-`DXt<7n_n{P?HC@zdwESb7UvNFj;S>0oX>2bsA$%J7_yksE z*k||@9E%!t`*0FkMqQq>q~@T-c-E3pYfy%m0_^ie_8FcvXjDJ6lo%iW0QIKL99)a) zd(#)Jn$GJfJ_RpBDLm`Cs0}Elodj0R;5gPXa1h!?JFMlRhNIQApN5TS6+VPdqZ-{l z{7egD!iVq*q;&gm1FF&O!%ZkpU7qKpUPmkNtRchun@Ya7r+v5x)#6!uM%{r{5|e|U zyp-dFHhnl6wG5*#cm>Mfv#??oW5u(ci#iWAok|S60yXOxcps|8vxW=bKXcAxuE<4^TaA=HOZs4yP|z^=10Nr{HC%7N3Q`M;Y2lVAWjqhmL`RkcVgO z7Bw7grTsK)L|gD7d>V};CV`*%3UiJR;T5PaJ_|RXg}QyX2^Fc!^N-c*I*n(|7`|KJ zdPNND$f!jq#>emuw3(P3{N&fz@3iT|0jQ}DV}oN*BR+&JXe>U0PooSzfm=|BR}uZ7 z+4wB1zl>{5hIZiPs9ER3#b^>f2kS1UU3>sfM)OB9PS}Lz;xlj_itt(ZXS5JsgwZd8!2K~ zOHValOTW4uc*J$gk8TH!Mvb~1cm*oxcHsBW8r=@O8;#NJz{9`E^_G0raZ^jsdbXFf z;?&_;+R^!N2}*Q6Jp6k0tImf@P+sT5hfzpA>%*yEp-tqo#+({<19MA0>%*y^qk_(d z!)|0h>U{Wfv|8uGVGB8ibUyq!>d!b?3r-FD7S~~&4}Xqobv_*SZT7p)hd)QXbUu6@ zEhnG#-_$=)J^8F5r!KyUxgwwS-_(n!ug-@Tw{q<1eE1^jqx0c;H#66G)^}4?w{Tv^ z>{GZ6H4)ExZfdg@<1fO&KVY21vtFBe{#MS}?=uFt>Nbug;#r?fEnm#G6T=#6>iXL` zKG=_}zove$g!w0iHQChROF35Ythc6?pslpenrP}LchHxv3t3xDRkPnU2j58_#0T&J zG*ZXF)oA?$u6ywJXz>e-2fl>r{>qr)YiRjKwq+Tglc1IO6xDOS?u(Y=J$NWuiTB|#sDKaPsc1Dm z4VzJj&%l{zK|R+8_;nQHv+!GJK0by&L|J?e-j5dJ^YBTu2w#AkQ7yg*-$G-*!#v;3 z`wJA}J@_BA;b!vh;j?A5=DTb=9Gasq@_BZi`aBv#JkQ5d(@`UyXX&ZxA9EdE#QuU0 zplagtaP+;58P9X^)Kt_&JkP#Um!nB|o|DJ#k+@Fjy6^$CP4^2&FXvp)b>R{;Pk$x= z$KKERbr|~>E<+wZ2dDppIs7bhrHR(zd7hp6BWj^9o>`~eS~^Gx0o+PEAJ{JkPFEuc6t*@LW4}FRI1!>^k+;M>v-7 z5xfq~C7x%^sasKm=ecz1&`0sa@XR{(0;+r0> zrq=27OkTU;xYe9T>^s)7R@>!2sJ%Iu|YqY87QN50btR0~GENA{<6WYROQ>-hX zc;=PrNxtS5R3u;hlJ8u8#W-~gtot?Fix1$hk-s19!_;p$4tsGv!VIb>U-L%oiD!KR zbsOr5&%xiKT0H9%sK1~Tz6fuAiaBQtF?tR9Uc=L78qPregPf=EHq;-VgZ=)^nDMMPsa{6CX|o7F_8ZAL5H}@>a%-&%hhe7V5H&rMlpC;%T3?E7c^_SJ#DeP#-*NTdE=d z<@jJ*0{A9cif2ts^ lY&>Ft+bhi_o3MZwjKTjwcv|z@-|+J@vJk+Z>wnMH*6yu zjWXni@CsCiXKhK=g-og{(!#hwTJ_pyLdOYh_sw3ZKesue=4u#ZZ zy)ZQbHR99o7S!V@+J`TrZNwMh>u4-7N>!;ZqJTCdcpGYZn!ey#6yg(jUPYCv!?V7m z+P|_&t)Lwb4nj!(HWHt}mr#b7A{^hXO7*AB47?T% zAHr)oycsEc4EuJkQp-=~J^?P)!slS$J*w0~oe#&NRrnB2L|b@$&%nQ-+2j}D=X+GC zNje7p1~uXfu-Au}3%m#WqAdY!!bVij7(&>De0&D}8TC1ZHsP6jR;ix&G`t&aqn#Yw zfPC^3c>Z2hYLo64K7-cd6L@ydDz#eY!&bBvAHye6d?I6m>yeL7;LB(wz6iIX;dr%o zm70zc#vH+UsEE(PRVYQ91sLx`9r87op`PUD;1<*euRdI*_Cx_~rr^G44Bmr%Q4QXQ zwP-W#1n_i}CO-|&LksaCY(mTN8Mqh?*L}f$DUMIP5AQ%VIv;L8WAF*wh#II{gs-7S zy!uF$+6UF)Q*a7e#rx!k z>o~>+8+E>J2R5NVj|VPBS>ki>qrEv7bY0jVEx`Nm0<;Jp!dKC3JQoVpgfjRHT!$v% z6WIGejzzo&PebtqYzrKVe0&I}pq2OxoQsCzBlrf|$e7i~*>1E2pMnjjCvB#o--mNe zZx^gbJ;)E>w@`0<41a_I+RVZG(HMLlu0l2V0$hiRw3EQUqcr(N_&QpMR|hc$v>cy; z4XCdk1N=SegHPaQC1Vp^Wmq^NIeGFh#K@U0H>ib z`WS#$qL7#@ycvzf$8afX#pmE!RQv+l3tv5yeaCCAI*h*1R`OXtR#nx|7q81Hcm~R> z;&lg}i<3qMrHoa=lz2!%hT zO?b_5%+ce-z~_%=Tkx!dtG-vyu}e%0dkkTp;aMkBeGE0|?S=EvT=KK2~0KI{){~Cp_UY&eP|p3m?9meT2`$Yvyr|6O)Bo(QLf> zI{OzbWIj`HHj2oP;1}nUuRZK}4cAqC3f_?Ax`St(Uw(f<8SNKfw3O=-Uh@lgaSRZX zfnU3yV^8P9y;m@1JZl20o)58I+QZo>qx*uJ&?I~jHa^UD;zM}uZ>aMy9-jMWw&fu_ zT!$9m6FBAt+SmDT#zw|ZJnMz3!e8kNuQ_ll=hRx}2j048wMw30ZeicOs(ByDaSIot z6*?atw0E^yO}q!geX3QA*ZlB@t5q+3Ucgx>reD?!RWG8Rb`uInyRbeG{Ve5g_ zY9u~}y$_*H#^b@K&~T3V0vz18TCJmB))G}qP(VKGi>jH2RjX=z1pjkXwTjm1YXbca zu2$O^56^m5*P--x*uQXa9Wmdf9r!j{f#+shO-3zvp53gziiQ)<^PBn2JY&9@ZHJGc z&BXBhX4UTm#)Ics%<4omlK23gRnJ_J&$F7cQ(y0B1K;t7ZEV1Fu6V@>!2cjXsTd@UA)$ zn{Wy0foH8M^$gm~_jCz-9rYw%4Xaj%pkB1Y^Oe=~;k3i|L=n6W_0jFaYfmTsG(7wj zsymBqhrdJp@vLQ~D$gLkfic5=$S2>2E$3CM=rN85c-SQ7^HJs>wp?1Rw&;BL>^$1X zC-Au&tJS1D9{%=L#-lwv@vdsMv4(kocR#@Kc{tkz_j#P-ryu>o>(*4Oxx{4QCBLgy z%gN8cb$@2Aj$oYdikCT0sGEh4{SWg`eje7m!g2d?#td6gBR+;bikzSL6r7FH_z3R( zPmVF&FT4e1=r@K({;OIoCEtgSp!MYE;hC>;uF+Q-{sGO^ zwH$3DpJ!Y1lTqr>uMdZ$x~av#<2-^>KG99B(XWs2EB(8v)cU=-x9P@j@VcowVsdb= z5#7{W@>B5qbGxZc_z<3VAu;E19KzXCx~WNx%oUt7yPH}_egv<+qMO=4epd6kZmLLr z0#E;LH#PEn#tDyH(oM}fm$AXKmUdGsbiO8PK7;YYnmZT+-iNJd9zKRWe$-91;8XAx zG@tfkc;ubT1O58&5wwx~JUnw*H`O1XhJQc-eI;^N&ojK$==&H4 z?eIKq)qFqw;WKdV18h5<=XI+E4|Y@Q89&eVR$EX+`|2U)8|8F7T!%K0pTLHP*&lig za5<`@ue{D%$-L=);SALG5ZZ_99%Uc#-DLtF&v#S34&{7=eV<_bcpo14B;&(-@ZYEx zb=A+hsjGg;_{q=0`lr};_yF!*=%$w9Q}9gG!f~F4e?$rS37r0PH`SBR_9OT*+RPY= z@PcQ$saj$}_-hp63vkF<<_#afxu}JBo+qyMSjQZZ&ojx@Ue9(@Tgm6SI~JADkYzjT}MOQ;ba!H3X1d>-zxp5u8mZNjye`5~GFTiL1&bHtac-KF=sj>JRd>OTJycOYB zH&d7V2!8bCZYq!W;I(KCeP!XBXe?g+562klMN9_%0j2Q??DGm^8$(^V1O?>te04SV zpUe++d4{_BC0al}&rw%L{EK~x=h^FO5?VzJ&tF$d(HK0>U{`-fJ&EBt?COYDnMWP3 zi5hs{$9mxEROHQJzr%A-i~f!PHlf7_(I)&BT8fY1Z_s>v0ltbNyxP)D9fIcJeRu}S z;?r;ns^fhG&t6wE&_-U5SeH*-hBo1|a3NZKChfx~(HeXKzJ-?I)oZkm7UO+58ZE_# z@XKg9K7zNPU<&QP+fc6t<^lc~^~UF6&wn$g`*NJXv1mR%gv-!Ed=9QfnFHA`uwNeGTGNL%;m6

B4zLETjW@55HKUXKU%s3jktg0oQ(AHmzS=Qkd#Kd3%^YgtFz1?^(PFlp^%B)V(`o-x%s=eb!gkSb3O1wFw8Jy-)!dog z)k?-0!TG3`b3Y3gqSWhq^P8^jY6roGU0$VPn9ef0@LJFUS zt*8bc!|GWa8~7CbDjKQd;XJf)EAjAqsQwbR5iUg=$j`wQD8c99D%AX6#sGhZCgBtK z5(@D}xE0OCtJ#bZHQ`fmJj&uTa1I)akKlYX51)k(pk??x{0CZ$FTyP-z^ggk)jlX- zoGI8F)sgSP8dQ(xS^laHt((Ag72Y?WF&)7^g@am|7kmJhYkvUwu=YEQ4bSuZ`F_5; zTJUM+0q%7R^M+5s3zyNy=h%<%@rT(T=W{N@hL!Bo5gb2o6GI9`JN`)gSM{ zr%-{{sRA7Q44!^@{=Zs+R+G<~0P3D~Y>W0VdYjJ3TP#T|uFQO)V5q{(^jECP*d$2F6yPG+OwOaT9PD8Wt8Tc&Pcn`-3{M<&4r5|&@ z3X7=jUiL4H{z{sB&G{&%{VaR{W$}6VB3ghi!u|iozSCoX!_Y!}8ZJP7j=Jy@FLL}a z1`l3|R^hYo-$)UoHZkX@KV!?lm8d5^51&LSVhZrDIv-zz|3$rY-IqAW(HPoH!QQA| z_XTUvaJ&!e&`5j$&qir{`2SINKX7tQhyVZY?CxZDv%!RjED56xjfxrsLCO>*NEt*L zn%0O^LxU+1QBgxv4UL*sL{!Qkh&E*^p+U+Z2+|rA1ZfRIgR}+_L0Z4(NwVo$3HoWj z-|y$=@pyT?_w2dno^$TGe|Bbe!xOMjI|Z(L&GvGFZ^2M?O5FUq^Id-uoWoM(!B=7b z-#D*%F;*zAacrr1loNa)CdwI}5|E4hI>v|k-0yF;m(x57n4`}{Zu!tTY>Wv$6bqDR_zX-imOQ^6HAY$GHQq1Q7?st}@Xs(`og%-0MRJXI zscVcz*jJiQKt|5-uQ5lR62FI~+KK8Lqy4csw8_6jllnzoi5_y)&=?IvA34k8F;*_{ zqnM%13crOF<|K+YMrWfEt|#21Q)5(;lRO&*xy-S~#%Qi>6MQ%p$XUJ)L$zPxr!Y{i z@)k{v(JXb6d?FUi!+bf~$UI=sKgAG-#WR+@s*o5MqQK_`SmTdE7y3hUe;uz`zHTnOUE?sKFH5))fn})ZI!p* z+FZyfKKpZx(L{Cf{OITP&9)WZVjIU>PV#iji@9%duRhkQoa7>sb^5@^ebGE9&+(+~ z^tFpM7k4$r&>#MCf9vNA^S}@6Wleg%s_-peHb3@N;!F0?AGyFi(&p-) z&INAX-&zXKW1RY`^F{l?M;_q#hQ9HL1I?9fbG+q1`wrXkBdEz0KJFlECe-1{n5w+U z4`6Ai!-<3SK@Q#nqvSMy17$hOTO88p^EKM%&ttCg6d#6)oZ(Y3PtNg0gY?Io7x*%) z22igiM3Y?Qy$)@R25TqHUqzp=_V_4_m9zY9%#(B6lCiD& z3EmV7t*az&gOT=|;$1OYPV>aWjmz(&75Ixs=<^Qh@LL$r*P1`FF?tQN1xa)EC;-n{Lo5B%`A9ZU5q{OWg%U9NHSNsUo|^%MLd zM%r)m-Nxt!tneIO;?_~-S$UH0LrSjjfhX&aoZ%C(O#K}H5E*LHSB#R=JQ7WEj>jS==lMtI7v`TY z!z8)L_oCbN&M97iK{syTcc6?H1LYcTb(*ouN&W#=PIt}Ww~+BWZqezD(T`D-3%uEA z=hy!F$v0wb&e(bPGaMIn(mW77>^H-wph?d0PthP3_+}*J68{lh*^-wK3|5} z`c~xlnf5Cu_!Km$ljEn*U!SYoXKZ8CTTbz=7^_a2kHTm<%O_!6*p|=0NNwhM0y1)e zr(jsvFHc8SE^!$nYU#gZG=&Bf+wOZ z7x?P%wOr)rhx!xh^Ldyb>hN4lkt;mpM~;!4=XeeZa+#06z<5JB-;W-0h5P>4 zd8%(Iz6?F&BHxV_J_B6lhft9#+--tmX%3UTH&!Z7^AIG%a~DrTgIwYV(IY%}@e5cH zeh-wpUuau7$-AMOI%yt)o}nGS0KMe`_qxcvRiBf5ESA_d%io;nScc5s$3i(DjH+Da z?Jss5!y4c#F)!MLOr5ZP_(b$mC&zbSuy)Ga@N?&doZzF83;pNcAupGCvr8R2ImtI-gf>h3Dtc?P z#zQ8_%Cr0k(&|_E>z6qep-uiPBDuypPIgbUZHiCDpwKs-iN5+@<^wO+XKiNqLiAOq zz|UZiK3BQ-6z8y<;<7@H|2SL4XMyi zKJ!Y~y3i&!PIbHp}NDqrAZPVtQEr z+~X>1GOTAFgq30Jd=%!&Sw0m@ymvXco?Q{=GlXPjjCMY=mv8o2M@wTIm1_Cu3Y3A2Ft;{Z*(sV{pa7IESLGU z>8|beTjK#YHF`ha{g;1&9tXP5hB8c79^Cg=+Lu#&Hde}cu3(}Z-0*AHJ#8lVaunnu zKQhBQmn+=!H?D`;Px5!sFwk6a8IzO;ce&X-$O--imdM#qhOu(+VvG*`=QD4yPUJkl zHq)_ozpn8Cvpf@o_aFHSx0wsCZ>RVoOjTasS1?G!q&bB7Bnd4{YI4<^E<=uX7eI8;yd9%CC^C08p@1v|d&re~IT;<>0a*bObQb$hm$>^bej%Q+?@-qMAVcTBeI>6s})V|~_A28qkexZFn z{twoGoa4R!=v>oInxDid1TyWDUzj zo{j}_iJP8q+~ouh$5=VXuV8{))w1+b11&ImMel<=H?^^2Jyv7kDaG ze#d@!HX`L^ei_Nrw9gGsTepr;f_q}2W0d3_u|j!@cg0dU&BtP~oaIUAp`9YnMoKR8 zLNv)$-hQEd`I$P!k7KF!t9;%wjZsxD@J`R#mz?H7sA@mMBd|z$jxR({?G!lkobyo* z9*Hh;jyGIn-T1wy1oyx^pHoe8pYZjT`oKewQYXu&qOY6_<$qRxrg9#M`Ohimu^4cu z_00ETggO;&{)=m|oZ#~i>2rZ!MmK$~@ovwX2kSh|1uU|*gBN3lT;t=a)`@L%`~U{o zw!+!umpd-=)!~g+SVPJae8hX^R(Y0hdEa@byu@#P;JU3m zTIpVoDOan*Gf|wU9d7xD`BI+XZ-lHo%QG=Sd6_r)r~85OB!3q}mFM^_ObG4p`$#B{ zK5UHkM5H{;r=fC{`vu>M>O<=D`=}}R7xJS$(IeF7(=ad8=UcHP)aOpIrf6j7Cl5hh z{VZRFwDKbV1w)lrdD}X5l&5$MrYO(z-5996%>P7Ic~svN9fXwf3}1nf%8UF0mgrB7 zcWP*gR_ITfFGPR!3;YZQhW+x^@g{$8-G2FdsHvalhtWfMgm-?S9$BsP0>R2Q~W(NDbMp?Lb>`?-n&H~LOVPeCFMn4j)ls-Xc~PBRpnW}8%vaz zx%&o9o(qkg$6#J)pZ|hNXrK4qP@hBlJQ=e?`@9^L(Edi+$Gp%!-;G*mpSvfT{96;+ z=P@CN_IVbTC@=FfC_P|b+^wrR#+&3lFiUxwPu|$Ru611al}(zW(ay&j_u8~6TB$tA z$?i>2QF-tjOi*6t{+l&L{gkJ95oRc_^3Wbl(O~6SJ{f(Sr#U_c^OfiMV)RvB;9sJm zyvX-pq2Dbn^YfVaur~QaEK(k|Hbq;ZpghSBqN=OQ8<$hv{;LPx`Xs{i=TQMSC|z%U;)io`R9ei+oGkaZ$g- z&td8djuH3V*LCTyjwA26zw3s6rn!g_>I83jU{ln^wn@HxpyLwCdB{Qbr98_=A7Tu) z&GMOpn!N9BjQsYY)@T^}VcO4FpSDf&UolRu@uowX+&i_;H-FvQ4*lf#(Z(ew_^M;n zmy7()H>?xcnIjHSdMV3HhtvnjgzTh_`F+wykDn%kGnE#Hh0a*1C@ zd9nWR?pghj(|q`G){;6|esp+KG)S)SUdJ~@`^#y*1Owy(-#0@2H`U>~6U^H({pTLY zD^K!{BdtUAQ#=gQj6KU!PqfC~&`-YeyXH!rGABoAGt3W-x%Q=ghHuN8 zLvvE*!_IeY59NH@4_zBWIrkXf6pejHKl!_uYb-gw3)AH?AA5myVji-5BPLm&C4Lv( zmKw{Cotqe^Jj00z=0*F#2V-?nLzu#-{z){=`Fp)% z8v4Vx-_R6|vTd0+oo=3Oo8;|pa{k&j#eYL(xwXVoeq~#^$jAQL9KNd^-hPJuhyL){ zzcGhC6PV{mZ?<;3dN$@QO8UI9=V$)zZ;eHr9N%@T^HF)3TV^#y;}fp2{Egept(@gw z-){c3Q{oSPXS~Xz*-g+~@q1Gkoa%`k+pRGjko&4P@^0fUz{|C;ttp4gKuEbq^_*6TJC6 z_i;JNogX$2p`3Sq#IuBU(){&DtpV+4`Mp1AXND=Mwsy5{WZ;zxpDgGO#$~Ar)y=4!I(N;*wN!|y2vybY4tN%5}8 z$!UJ>Wn)pl$}c0YevRKjLYvVm?nlVV2_E%V*OOiKjk_#yJo+i;KcQh4?eHV7YE!Q8 zuU>PlkW2i-*R40X!1I?nN3>JnUH;}6YbVXuVVqpz#NS;%L;IY=Bsusltk~J{<;gY2 z#p^0X9`lxZyPGTi)-vZ&fAh%)EO)<c`TNxpXb?F zu)X&A1ytl3*Vi@seNbcP+c7xwf$zs+kux_(?RWU*(rED$EtXgGi3z%~2d985mcNa>oa1Dt=4esqC-+5WhU+KqivD|QhfhLM&hb--H}Yn6{j07KY&>|W8^NK9S^TdBsh!lr|2io!U(y{RV+|HIBIE*=E}hb zVtlyg^5tj<_f38Sqm|tBpZ&UMW+YIm5-P*8ihWFj9IT~Qw z3@^w0@O;>#Il2L}^rysMZ8e|a8G{#KoO^neZ`$0vg=YqS7gNLidJFqSPxs9XUybp~ zi#)uiW9L4b<6j}`K3?KGFj#q+x7^ZLsFgp-tBXa``gCL2Yudr zx)*2o>%AQh&tO?TavSH7ZL@sjw%W9>EFbX&`?778JM~fDGf9GP$9#3leAIT%mr$P< zV^X-k^IczT_PcB9@R;qj3nn zUalLq&GYdCj7yyyANgf#z`nA)@80T!HO4Psg*8^=i}z`crl?ckUTNz}PV!U?v&M@2 z^{-en#**b5G0ps!_+9k29-PS0VVI~q!*%;vx7JUB55`ExF~dirqCCqt>~BrVC4Tp- zwzW?DgKN=&2U_1@-SXst&Cv|&q{vqsq)*mZkuN$}-)vjp(+_dIQYX*H4{DD3*;kH_ z_?qJ$))>EuF1C#hZH|74N$M1Nhr^uza*AhQv^7@Z6ElvHvE;bZ;my(hUI$L_%~*E7 zI()zp+EJe2SI|?g@lTJmhSe$Xwu7A);WcC)f+^ixyZBU0l5>16=BShB?njxcLtStA zZmjTna+!w=vG$Z_c{$Q@^mXe26?KZd+tB8ypghedV4lyDtmc7a*E$XA36F)b967p$`!5~=Gvvt3EmU)~EA0u#gi zi0oN|BcC~Crj&<^i~NphMG#1uKhlQB&$@{O1-mpJ;i;~v`KGci$lp2s7v zyud?F@U`+RFTf(X$}_*?`9?1D(2>g3&+-p3PI-Z^#dzfNl@)Ey|QrPyp<_Akd zeZCYk(4sZN5kSSAPm2I&FX=f;!W)8z#Bz-&3meK1E(@s}}0 zPV?6=L(cF@ROILs`$8#)xCu}7zAACX+Rel3q)Twc&@#f0BC3su( zl~a5Gl5&PmKp#2BlQC7_ihK*wa*6LjN}V!4g<1Mj<@Yi8UibPRnNQ47p5)z7lGA() zGU{Y`3}%P1@C_KD&n3PGUF0%9hO#;pegz8$84Gv5!1?%$=N#S^Rplu@01M;{pM=5c zJqv{3d!DOElTDJyOP!> zeq}w&X>R?svCBz50Q(znhL6R{{nY1E(cpOH_@Ei)M9%Pbzi~~LQ`~&B>wui#S20ws zaravs3vDKOM?`Xp_rY{^()`a^?lD`N+uJ<1W023M<@s$4l%v~?8v`f%`HQbbS}yU% zzjMy2ljOh5F;~`hm5=8~2grGB2} z*1wwv^^<%t1}ZP`Hg9NGPVusu{;3na>Dm?R94$~D)pd@(SKm3>UwNJ7-oF z@(5Ja$?OCv&p{Wt%zsblr(EL!T{}mMA2VM533^t{30E;gd2rv2 zJ4f^66rT;9iSk@QL3wa$6aCj_@Hi}z^L%r+&e24<#4Ay;ZM13U=nynLZcey}DawPF zVwPOvy}J8aPICd{D>7dvC5k`&d7G97cw6J_9QT zIA?i03i~>jc@iebMV^L%gYfdkGAU^-GSbrKEHqoa*a!0v|l-RF}mn~EqHtLtUSSekd{+? z4wlJzE}}vG;4%uzgIoKWALU6Nf}-*)Uy8C^V-; z(NB)Pq%YWC4!#TXLmiHGbna+Bct4EPPKLjQe&!_0*I;2GK~8gz!RA>`@*gqPJ+8vj zk8-V0UgB>Ju`lIW{x%|Q=J*HbBIo%=jFL_# z$SJ-C!@`_%VwgV5!Cyw%H7CtQ%$I{(zUdqfb+{W!+DY)O($0^6eP|mMnpj_kL!}Ur3Q#=TfoZ*p3tCQp3V})GiDw@;@j*fRe zDi0ox`O0&A6Q(II@hg}s*Le34%GF8pSy*Dc`A~+1a)~>C+xk%_!Gq9W&Ts((<>2NM zv>EDf22-^kdt~xxjB=v|QuP-?gqn-*^;KUQ^2P z5;Vv)9yH3iENA!ztPFF-%_r->oZwOD5w_*|=p$G7HFOK@@X@E3FZ<2%jp!+t_d@=F zkyJm$`(R>dlYfGR>KAw^BK@!NE@wNAp$;F3Wpb9sV7B^s{w4Cti+uDrYdh?hug6^F zC0>aIa&(S$g2i%%PewQW$?*j!g+B1+KXA>Fll%-)>R0&<^i;pbA7Vmi^IT&@7ky6h z9%z!&yaGLBzjzS!Ltn=|%|nq;p5=?sJFF$X3v(RPGS9vliq@}B4-r}-rG ze!$OGywe2pvq(9|E_96ktUf=E3CgQ{%|-ekm-t1D^>bN`H~)$AUrzGD=wsUqcb#Zk z@3SYl4`#_JeiKe;jf z@uv|QomF-e^&-#*E8<|%b}@@4LAa*@YOHWzZ9hg@zB!UyXuX z3cuPJ zy?x0=KI;Z!l=FP_jm|qc%X>^WKXRH+z#Q%5_*{&a^Lzhcx$}*ue2j4`CyDzC&L#Y>s&7I(-;uWaqj+W*DpEA-$7E&@wFHj z&Le&nEA_L=ooAR&brSq_^l+YL`9@T&u@b+Fm2&i(&e4IGD`)t8tkkyx--)SmnP0;| z?bLYpn~lqPn&uy4@w4jl(}rr`dQ>hFi8Ch*Gis$F4sQq z@mq7^98dF4FhefzpD{qL@^-gsQ%>>OD9CyK1CnxuQ#0KUv>7}O3*|gtG0U7x(FcAN z)1S0o-s?8=Bd7UdoY~9i#25%#UHPT;b<2Nu4S$$1LkSy2IK-Nlx+sm}_4dJ{HsDET4*b>g4zWObz?u z8!$yK@lzOQUsZksL**KOi0SG?ciI;!VPCu(=F4e5A!Pf?@wu2T=lK#WQm4STqvtP- ziyuSf3ghDCSSCkzxsG9uoZ#KiP5m? z;%6~Su5#!5oOkLccw6l6vlA&k0O{~K3Lb+2;r&*=1S`V(t$Z~`s#E0KL-rYoGCze8 za+N#X@4jGP3Em2QO}zU&Fdbfs$u z4|~!!a+ZINiKm+r-ux-|0y)V?V7#2=3ot6Y*U497WO%QWm!jWU))l9p)(1Iw5_-!; z-g=>Dw$L9Qgr#zZpF~xz@)w?Qe0!N&J`;WAJU@hia)md0);S|5`3TH$9J728M#}}h z6O+^_bK`UN`!#dIUq?pH@{JfJm-t=ull^0e(au;JjwzpnX>yK#f!XR5dCs5BziV}w zoB!gx@Y$gRe*=TVXN~wbSlp_8eh*Rje9`k>Cq#ca!@tBlb&9+o5bg#1ovQU9=lDl2 zxX;N2eg^4-tx4YgMaM`^@i}Oc^ZYP+%N5?@CC6A!^2u0wkg@PI^mL6X@$QSAciK<$ z5X|eT|2zhB_V1_z1?(~X&hJEq2D9b4xg7Nm1851<$Tnu z=0wi&1DG#Yc*tv>D?&N{980ucoHGG z@KzYBPLjWfMaNrLyc6cjX&!=!&fhGL!2~(aH=uVoU-%x>++WK47>ept_!X3#k2UV} z59?V@@NO6!&KEum$#A~#v6!n)md9Xv*cVU6G`YwRqHj1~_<1a|-zvX>S?bid(?9h; z?2EU>JUPWfFf5!ed@6c}^M%jFLUrG; zwL}x-40n#TMA1?9%Zo5luJYb>Ezw}xrulB9LOZ-)Lrc`~dE4@9@s?=(k^0Yn@6-}? zJ5lB?O)b&>a)O(iTcX7yWj+N{w3Fk1VzeA}Zi$*uIYAxX0`ui0{}Tg!Rv~J!&y8B5 z#E$Cl9UHeq3wG5XegaJc^qJqrB01WmCHf-zdrdOM1JL7SW8q22xo;NvcFeJ6%KSLy z%2j^7TT8U$RAb={ySGFuQF-h4Ct(Pon0#W3Yj4`at@Il(ueuXS7Et6E#4 zr49DW*KKZG8(D|E-4-p;!Y}D3pNVP4mFFL0vGM|6jv2~}d_9&ZFY#?Cg?Zrnk@d__ z;U_TSAFdC)OHaqhYfx#v6chgJ+~>D3T6xr~B{~vgm1lV-rYSG;CR?^d)0HRrbc|D; z=O>U?Ugcf3YKf+X_W4p2L;L(TCWZEs+Q*d8KF`F&&^~XnbxTwT?epoF|2bplCossm zs`4(MGY`tsd?`jKFY?=%syzC<_R&*$mS^IGmF<*I+m!pgFXm{;nlKy1*c64)$%G|xbxee{}7>o|>^HZ1@ z`p>)Vp&j+pJQ?Ga7kN1vlt+7NAHzcXd^=_sZ<)LAWj>WBc?_m0&+{{wx})}aj{(}0 z(|iRAa*==fM~!XZdtYkn?;e@^YCEJHV^0{r}-*$lZ*Ts2D&%Zxc5=kfSlr2 zQTw}czG8^ADi`_auUlj9nm2A9>X2~btjX=oKljHXInABFVNJeaUtC5)4!&rZ)o{H;=Z> z@XJ{GH*?5W9IuXTi@fUy=b)VC6&M_TpZeR@J4S|a@dGFgxBmG_OqZ+tGG@p%eg}&@ zk3}cw7pmdejL*XYxxmXY(z8?aotEgk*k8_Z4Kw86-XonOo{Li4dZKfAgm(B4^iZDR z@1eo7Yo6;)a@=j3;Daz$&hUj8Di`=NOqYvX9A!OdGkD?2`YKoXho=~O=qHy?4P&r| z`GlPFSI+S~%>K4{;5V^SdGtMVkNL`juRvKY@~x-ooB1j8vse-K#mmt{j!t(?Mo&4( zyP=ygruk?r&`y>|VS?9)a(n@%h0iwg4VbI_5nSYplM>Nj@1lImf@pM7hixoaNZb34R=9=SY>W`M!1Y4P)o6&(=@J zH^s-JAm{ixOp#0c5{hz-zc9|)Ggm2&o#Wg*-Td&|m@P*?a1X*%b5-IB7RkXA&b8mM z)(KC>{`n18d8#~E4xWpgT;V4%{Q_OhUoc*?oo76 zJhZgB`l>ltSMF37b=tYEyz2XF@<;c(X)Mtg-!!(R{SM@>Y4hAw&90tTu{Gg$2Zwh_ zwPZWznlnx1PL+mgU2ScjTF!bV{-;jSE1g1bT06(1&M$UK#k1ikuc>q8rm>BVjsLMO zHY$EyUH!v#o2=T!Ibknrk7L`K32ihsM2$NecQ%$=JvZCMdKK&HepeSO)zv**7rUn} z{#;%C<8|>@>*^QRxnRWFx*VGH?;)ADeOJ$0tZmGlJ4Ky$Ue&K$eWtFwy4}`T*CVf} zyQ)5RbA5bfeROxdA*`PKPaN}=-;8BWF<pGw)o0uKze8->zP7!%KK^<`?1B3Df(CySwC=ii^h$#{zA7Gy zXU0=&kLc>redPFm81uJ3SFe#(bMj%VX^;4bXiS)iHOFMtTwJ@Jg(arur;@t2bIk97+9S55Kx$@+5B6^*_)zia$~t?Q?B z4IBJ&PI(Gi?yI3fw#s0PCTQ}$wZSeEvRNE?F zy-v1{ZN7CMyN%DPi*Am^Z>WpiQn!_V->t5bxc0cU?Z3^fP4!XJzU|I~4`W@nsqY`{ zV$TQI<+{J0j<%0~BO0R4y1)O~w{Po5oBz}H{?qN(o{Jx!m!_6@GWt?jb8YAA|BX7~ zTG4UsG&e-eJI7PusI5645_`tajE;0XvUMY()7E`l*7m>kKivL*Yk&UZW4~se|KoQ4 zTkE5(KmVoU^&cPiuonMMQ(qT_yJD=(pLKt0=Dh9P{Er>>+t%j#a>qWlyAQ6qFP*QA zy1J+?70bpt)kmF%hZNdvm)%^OhOfF0b74)6wm>3*!vip0=j#j_tJHK5Tb>yYZ|mhq3M3Zfv3dr>(gM2Dfj2ec5wI z^KjR?Y<(^~W3C-<+gx;X`*u1!PpumJwQJ^JUG8u!Ry|YfyPju?4`X|NEk4T|NU`{n zEzujX_}wkhgLUy6TcY1Jxc*)qj~7~^=i+hi<9WF7E_R_Y{%Gguyym5KruoyJSHHQP zHipFg!g)S+j6Y0K7k}5^UaM31Y+d{vzqVU zzvTNyC#A*4_}~1Fb>kf>dxG7`ioL3ofd{!goW;)}89{WW#Neg4IdJR@!J#olN5dxvL4 z7p<a;XOEwQdq`}_9cy|0c%zlg>Ce^zL!^)u92wT|14NBFrZ%-#P2cX&o$ zyYceO^sd95S`cX zdH>E*Lnp;+@6GG@nS8@uHtD;;k7NG9ht=!<<3G25yw1AEl~TA5Uw+~uDRZD>lR(2Ek-s)n|R%<<6W}t{Q603FSA`YA$D7RG{5cq`s~}~V_x!j zq;0!RJ4c(2^zWs(hWhC@+nD>v+-;OI!0Tf5x7I~Jt#jH$t^aQQk3VNmja?R|?b^Ed zYh9y1)Q$AQUwwQ@*XW=1@gHyO5AN>gk7#%SVdLnRVg1|{k1yLedO1GcE&iuX@i#V( zZflA^wQ=-7(|Ggv_vZNHw&@(7y>WECm!P6sJI9xA9R0cTiBYtqCH_j+=#nn+O4sPB zF8A2}{Egy2+Bmvtqxc(LquCq%$o4NL;`eurF6*MXp4_+H^W?|A z{@2getJ>-K4Ebqaw|`x)W7{436~6wo_BwulRU4l&hIPDdylO1rnSI}O&+O~U;kD6y z|MlAF$NJa4jnJ1*qisE{=k?jOuO)v!9J+r2KdYJS>(-LbD>+-=*nZ!?s)-(UE-X3gu(vG5w}n%53v z9e>8^I7c17Zr@J(+_9aGUw3Th-~GD%I%z+rArD`@CO`6;@0AYuY};{v zp{(P%v97soKlfpq_Fs2wv+X#v`P1egv=`RN5o@lOZEkY{MPg7mnHT!dP_mn&-5Zc+@i7y?xbBXlvik*kCL5zP9x_(WPzA31M8rKk_q5 z)0g5$M2Bp%j=AeN?*H`bkF3XbYqRYfYVWo=YIFO!3g^)go-f+9*SbMtw88N9cl)(- zkQn!f#qnfa{N?b7u#0hq;}(7{YTI8}55wDC%fj($s}siD{&j`$z4o-#YuA_d{rX7V z_S?13ZR@Db?Z5YFxor&pQ-50fpXK}O>UZ0B>>rcmPU0Zou zAKKjh9@19U{`%Wi*1lf*@3${+KbLLmpl!eHud88>+JD`?jqtO|&j0#ZWz~7q)<*mG zLmTanOUG+e$NA~_b^C4G#@Oce-)nz7+mHMI<$bB+SlZ^N&F%Z&aqWjOcD%N>|2iCt zfAfCy%`GR!qH90#ezak@A7!@A$J%~yUG*Ny`tC;^$M@g4aKL@tI zc63}b|IM%4=Ir0}r>>(g_WL@%+O+nWaMknk!SNNb=;FH7uXC>1|C+VY@pB~q`PZR8 zFRrIQSMCt|+~M&>_5MZM8|tI`V(}~LWADVK#a^h7T~iU#Fq_Pw>|O1taK zN1j>MSKjU%`FF?j|Ld`?elK9{XCvFLwY$V0h(!}(y>5+pH=xxq{(n?29MAt(`~Ix^ zUAyMO8Vc8?cCV$c^Lt@Tn{@X2`qt}yef`R>#P&Gc6=ZoV{=zoilv=XcPq&F4*gSsT zHnE4di2re$*h^dZ?r(eE)1>^uZQ`$N6V2I1$(!4RyQtRxFSNhvbG4hU>;2d+SI2%D z^J4uY;Yz*wy@W8<&DK3u&qe#|`fahh>fWi3E)H)@ub!K&)?NR~Z^womVuKZR2i%v4 z-feig;gUr3OiSDsle=sy|Dj9#&xzO{Hi$ozh^_iGY+=J4d~?Nyao@apqfqg|jkc6u z->A3z`-H|8CgOihL~kY5PT&8IK5VtY^;>!0dyD#ZvsZ4c#H;nS@R^b|=W5sE?vCBi z5KXBc`J;yDn((0k|E*ewr+LjK{9JIYpWw^pwcWLE&9+TnjPDU080P%n{NA?lU8DWh zv)w0sukAX$uKl%rZ|ynLu21W`hOh4&O~vmE*RRcQiABHvr0duJ>3U%-tJm|U>sil7 z#SXc$*{fXhTJGueRL|%~-Qqv#75iJa_&YsgA9nk^5BGMzGN$~c&AiijL67akr+e%e z`A0myBwn=n>vf8I#V_j>6?^?_`L5aLdfvag(mp?Evd>b><()3<89lH`{H~s{-*k&# z-!pbk*ymq2of1=C4Ewx)v+cx5J$ClyZ;vmDkF-8#pSSmnKhQI(^!&H?c|*(3I=#C^ zblWEJn|j86*)4u)&)6+tpHJJT@%+0nF$A^6`?eQh?&emt_b6U^%%%0KR|2y`% zp6gkd+ut>NbM*a|a;IPQip=Wsy<(Sb8h^M~?8Z&~)becinK9)vdKl*)dwfCsMXMLe zCT!kEe0K9UjPu!E@mG6A%RYWQKVhG@gf;Yf%PpO*?-gCvE&gn;*gv|(=k|(S683qg zeJY=j?!D|(~-KG&Xy;d;_W$NSs*z7F-nGxYf% ze};~&y7ztje28t@`KV3n6W6ZUV(pb~z2&Rg`TWPutJUrA@Y&1P^Q^zB|Lgb}V0HT+ zKeyI9u2ucq;^X~ko6~k)*L5)&-zECWdakwq>GwWzT*GVh`qJ@dwYEB|uC*WkxqPE- z#a zzRxmuYu|Hd``J4jt2O;y*IccqKmX%7`meXwajx6O^?%##*8JMnv_jwhwB~atpX9LZ z|AWsVu6kW(&F{dpu6q9MwXWyijcDoH;i?U{`IQ++GoPf#|~Q(i}Gt;D+z1=zK^_zxWN~<9~Ye&ALnDPE-e0A zb=~>s=NuDihy(Sj@t_2u6j z=c>;ep1;n|8}{zy^NQbYy|>OK+Rc7etkrYITOs~4)>^GI(XOkX@Y&(iR$qyt6I(y1 zi)Mt49*?y;ES!<$*x`ipuWv9$e7^>MLO-^usFwQ<$;F}xP~^LD=v^n!K%+SZgqNeaof5IuX(O}Y&-Vyxy3VEZ>x{)41Ier z*6NMpRiDKy)V01;AN?_O^Vz!A1)-a!VfE(#|66UX|MS*g+3LtBI=l6f2Cr7@!Ar5$ zhZ~}4p)(KHwcghdT@*gMcuRfj%?;7t>P_$O8{*>JhPdxN+R#bm(AWRd?Kk^e)M+32 zoue+j9m~DyzZsnt&iPOKet3`PtyQn~|Lb=fKa6$juZ=J^nxT-UKer>gpfA_j%@Fh5?dELK3nVF(!&jl#oSYqh$#ZY8E8K(7tI|hkz28 zvLx8r7Nb?_ihDFJlb!4sx3n&$sSC9()LNTbtF+aMc6n2^6|L6)_uOT8=3!=%Xl#9d zfBAfdyPtdSx#ygF?sgvJ^_$Od)_m+6oc)0w$A#!e(~)yuMas{J`wzbF0dsA}F5_7j z-Xc;T=&k`DDbFNCD?@U|_Z{SYhhM|jnrs(|8F_zv=$m0hm%~@1aof4M)xgczQ)zs} zee>w~TakZNJo{Pd;PEiQHix2|@vzj5nlIOQ-p`8pT> zg=ziPWG|W&bp>raUGJhi#Iy7lX)P0LuRK;-taE`_X?jm7Qd@LdNX8r~p3z5LHWK_; z{fU(pt3R>QbblhXMW^ZZ9x=Vx`}$ux3lM9eqM_%)&a(>Yan_Slc;9&Io+OUaM%`Xge9#^I z30i9e{e5v}@Hsy-Sjgu+8h<>_t&$E}A5CCCPquzHf!{aUdTRoIV)SuX)QxFD^!HO9 z24nwboC*K4<5w~E`ULBaiR{*i81AjMP4w936R7I}s;eidE$-t9>>2E5Pv8%Xw*E4K z_fTDJV_Oh?Maqw4UGVo(U2jaV?wZJMqq?>oaa|82y^S8R9m&=s6ZlP|t*0jNEmYSl zV_FdX`dI4M567AC@20vQpJ07BfxSnEqF4M^>x#BN4;;QiIBXyGPix0ScFAb#s)_uq z(bn3D{6p&317lkd{fHQ^>&Kh$e@OkhaiaAUPG<;*zZ%l7L)G;s;PCc|?6qX;g9-eZ z(bg3c`Kwgdtz%mey*}k3;PBmXCj76DzZmb5CR#t7$nK-M9<$YjOd%a7r zb9n}E%Fw-dF@KCW!uTUS0~j|HegynR(%%keulkdg3mexWsed@vI6BYK-j5E!b*!N% zK1y9f_x2C>tiYz7Cw0jkOkr z%Ed@?(&D(pIF^_p_I$fty&+oI9+n%ZM5{0&UY)$ zu;wG}(tTySJsRz&ef|yMXBgc1-pd(|RK|f{K?^oM(X=;??&jtUd54#9qhakZ*mLrH z;xO`r$qpNR9u5uSeuE$P9`+Bp_dqmVp=6xUPa^0KPCV0j!CuF^X&R?Sc?QF24W1MJ z?oPZlwc9F!^cv@QyPW6s}25pI=8#k@UA!51Jo3vX4K)F zzeZYfLwZiEw8*?Q@(fgRp4G%Ety?(R=n{2A&O72{q|URdVQ=da4ny#=Jq~%Pcy|0O zBrhe=g8L4a3qzZ)arP=dQNWk$i*$z#pfTUG9wECs)<+yid=~6V{Z6$fO8(W>{q%Oo z`YVjKaO))!W3v5`+cfdJMACO*Ki6PSatlX}&vUEYV3!i<*md40a>#m6f{!Mr4w=4L zl^5q#YX;{?A*a;XIrY(K;V636F_%M5n`{fW{(;$+TL%r;LMph&V1L&9;h4wuc%20t ze4U6Hm;_-z!1I1!z)le^HG<|M*(dETh;QMC=+sduSATf9WkOqUs zR3`GAJL+sCmJr2WPypuWm+&LwX;cRCF0f#t`Wp-Pap3k4Z5i`j>xTyHA&_C)?Ysbn zjQ1$~L}|-(06f?F9cN!(^dM&k1pFbi8HFzYqxAQAq=_RKv#31mT$hfr3ZlyLQ>^cX z(j4WiQ>|<1ohJQ-?K5E=jI>)rX^#29I>ov?YTAsLY0>M;v~CZZ#_r#b9iF^BD@In27wz)d<)?6CBLAId7C>IH{NNAIYK z@?Gm^q!(Pnt!r>HDXciY$gKf`{hogX)5SZgpHbxb_)nr2T#cJ8CN4ITb^w*^Jp*6< zJ9i)MN9wvFkKHHL3y4Ob7yye<3@`_W6oXiL!L{7NQ8!i^&)|@p7u;a59?`m^r56C- zzYuEg(^#AEuUrq6Q^Joj7k`F&!C25ZE~-K&d>9ry`B$K$JQ%YrpM_rVnb2Q!yaDXfTfo4veH&96y|F}1C*)^He|6?5Ewx?N&zO>?W_n~+O!`WFSi zp>&;(T%Fe*XOFk(kYRR9?Dj^O9$>9QJEwmr1acsTRu zyaem>htGsH+`{*7ekb=hhvGXdJ%mp?4bh%NMfkbS&~Gh`? zs=NCxrlkQ62mZvN%%Tj{9f7u!(vh|pHt0h(AS3S&`dVqf5(gc6)!?+78AUftxP@E) z!bW7Q{od;xE;Q{AUSUK(d z#CQmk&6-v)reXAEi;wV~7Vo#MtLWLRAe;~_>N46Tn2s|cK|4eF(7W1#E%;3eo{j&a z;Q+J%^7*&o>xk!BQE4IKp5eM#eCllLUBmnasQ7ZD9=_{M@1rJOI$6(}>^^fmt|Zb+ z8w1}aM91*gbNxpjA1zoH3t04xiV=)XPUZf^9DWL24&2CH+YPgw785uVgty1=en1z9 ztt(BKx1Yr1rvh}#(hmXaZ`{PvRDH?IyxQ>MoO6dk`?p;Ndig6NEDh_m4)oD>heWn( z7N0^!#d5IkVqQg{e$Krx>HZeCu;}?;4j?z#fdE%`5FDBx)VZ+k-%0dwk0ujeBftRz z!Le>KV8S2X54ab55!X?t?+yo67!lTVo_ai9Hm&34gWUWT_g-qScg3OS`_!Jh!a=Y^ zfA^&G$_6ZmRxK<4f?~?D9VCV)wbMmtE|K^p%4*=#7@f)5F(& z^s$rHBkwVxooQ(2@A&c;4D)Tn8#LMVrqyM#TZqIS3MVmEMQ~|O$dDFy#l9o%x`oDp z3>`L^H*yoZ0kEyZy{~e@-~ZAn4d97ShUi9O9FhTV$h$?*{)sdWOU!SX4RCMev|Ej1 zKUmS=UOaFUd)EELY#P+l*8&dlagpr}9^gz#L!pJ#o=Xm^J(m$2I_FpKlSBPF5pb5D zvX6r_;KO*X!6pi~uz@f@{kqdJo^uJ#5c&d7Pr>(PF6ZXG+{B3sy#V!o%-KO9LH|L3 zZVw0a?lpiz^2>(fsmB3E8#nQU6rvX&wBcSDbi!$PL z=yKDS%!TF!*3+CdoCJ&e+>33rCkg1U?bv0kPQ%zB?@>s+OykF%fV>sv8gAary+0!( zG1hN5Ou3C^@*r1_?NzTHw|i8mS{yiP`6zG>n$E#@+Mbn5*(XRmV$rxQSs zbgtOJzd>>}(l|~b++Ap1&&|uIzCGLv3dLadI3m1E};-VeEVyTR5ObW0>ia`SO}mv>&J`x`~3A0fQuM;Tt? zQHJ;Ml}ER~bw?TA#G?%F=^q^3{$6~P;hlPv;l12`bo+a?f+u)xs6I&RvKu(q98=EV zT1V@Z+NCsG*(k8Q-^H;VPO=FU)~JKuEr_ODLdgGv!%6@Zh;m2a2zASBo<7@pQtFm# zj4#9YnqfU@vNuV+__r|u5xY$9gRsd-Pnw>0=m2F`Kn6S322!4XI=CJIH;Q~ZLY?#B z%c+ggVI7Ii86a3kLFY^(I74&-=wGQP!~O#|AL8Z#?)|<&_6l*~?_V^J1noi`mavT0t76#|}}?j!55=;x_uW1CU?cf-8S^ge=bewo%YCcBsP%mWS@ z`|vWrwC!bv>p*~YEZ!mFV@9wc(8Im|!dv+EuG?EVvt{u2k^($-*1HEp_KgIZ%)xK4HjK@iJyt(9S2L@>hiOW^jn zi(t}@oA-0`m)r|Y>}_rV$a{p_JM0YrJr?UWd&IJG~E)bq3d}g&=*0s1pZU%p~G|Yc5d$DUhH!Hnp>domkIykX6E4Vu@^2uo9V7{ zQTSbD$;$>a<^9NFFI(0%aqRaN7<4Ut z176giwiQ?ab%gC{quta$`!A}jJwmjQ&BiGcqfhIJWjKO-BB3H=G(Pwl(e*E1oy)Z<2Z>8HYx z&V*yxbBUD}%brWDG;Pl%Qd@Lds2{d9z+sKI?l0U(@MHBSR$8q7#7fisiPRRIc2xRG zcVUVSZC^&LcmE6dsE_}xx(~PB&^Ty**^Bqd&H=qhSl2EIQ#RJMKo?UYvxeH(1& zwP^VJtnH5t9iN~~7;fx+xA`OVPtF;(JOU2k@&*SlIP>VR6YtT& zI={n>(5Az(ckoHeh44h}EK)QT-m+DgD-JdPsN+iF&~aMZ^I#0y!i*ix;@@}*RZyF%xle$&Astv&~2d9 zy>0{k9=GvayxHeAei3heBd_@j!wM#te?+Si%nuA}bApLI@|zRP7fkDIulZ-w zI_Nd;by?SW&Bt9j8`cCe=6P+7iN=u$oB!M z9rzZawD}dyhSYg{{@K`zXMZ#vG5(my_E^6&b|{hoygz!TK$Rq zD%?$C4<$4q@fCdTkG-F0wI{I~@g+bt>5}{v`1%jlcWlzl$JWG)Z|8)p2!_5W5wia~ zviuSLxQlJXg@mVEteI6?Uw0hOSq|{X_MgYkD6gzIkgHjJ|vw z@yu)8R6ZfkdY*H<4tkaIZcK{oHz2fI&@xolf40VTFT4-eS1jYQn%Ncb_kn=VmxlZco1xICnVe-?VCs< z&t8?6T-!Nih!>-OXCx1HIP@+<2#fN&9!L6}k&}kn`Z}uL83~PcXcmy|9Li%c?fZVr zGx8TP_A&ou;$>sm>%%~f_xft!eRIUGAp!c5bKrk_w29-XG4tRZ7;_5Ir{w3MZBTmN z@N)sD?6<~CCVQ7o$o|{;Gv=@L;B3NcKAp^d?L}vvOnAi>b)d^wptN%cRN@Tvv>kE#CaMp5)$s{i>> zXTUq)sGsD}k<{~Xy!kL-Q$2eUp0wb>n@cssG+ zdM{(oB|I1R!_kB%+!h>V!h20Jyj{t2;QiHT8mtiC9|^947?V4_=Kf^%D&gw6gau+8yEm9}_ZW2z=+fr_w z#5Rw&emRM6nP9a|;@xy}_2G#Ra>U;-$@;@2_T(hQ{B;t#EoY0*9KNu}>w!JqsQm7u z&lTRr@8B@2@;V*09*zy)bCc<~_Mp-2VlUCmOT7_4lJgnhJ3X%2Zx7q@M7meqWL?T( zdx1z}C|q6E_AVoA&4};29+PU8m<8z6D(`x6$^IU?x{nKa!k*gTLFPn1&M}GR)Z8ZM zcHK#Q{JG|ZW;^%d`W66BXYT^Iqbn z2xTYDF#~2fieAgTKjidy78e`$QoS#P)mwwIgxd&si*K;L7kbAa@UQh&JFX(XM@YDm z(|yc01=7WNbVk^BKO((#0N)P2L$~`Qyo-ofUfA!ly+M}vpT$ogL#74Rhur+Bc!dqK z*mOtLi$}CDz0+ghGBQ2R4vj@|CB`DcJ&6-(HFXO&|H4f?zQq+$+}B`uZSCD}ux*Bg zSHimuiq?P<2@c)WuNbtK5^58jY0oo%Chm;l{~O$k>oS)c)?R~MWmvml_k->+X;7@Y zLYGwZcz^i!g(Z%%`3#b6Yq^P|{(E6o2_OG4 zron%Q>BaxYOfSBs@-m&_{L{4Xwab5rHw7AD9p&L?jGt9KX-8TQ?$Ylz>3+Bw>^ea7&ahCkB7 zM%LiF@Xy2UoZ7JnjW^LCZa)JX4;?9ff~AAwE#4Tu9RdDvfWHlwlR!PVZcLw)ng;() z(~JKvnBKcx>@S4>%U#yZE_RiRvS|Eg5qw40F=^>jjKRy_u=T-q2UFk&_qo4i;d}F2 zKl^#C8149^^H>U%{e<(_%U>T__HgI1Aj(FW$Godx4hHw^2Iv1Hn8#pNtdFyg{!h+h zS1$)XBfSlvw<$Cy-XreBJ;BX4xp{?{55?P@(4>e9b0PXCSVw6td-s17oon4o&r@`7 zP3Z}rWDYxx|_nw=Vm_4bqRlP>VME}CZp}^x$Dn{iRVT) zn)ER^_W+1|EA%^e>}o`*`!bO;f}6pJ#Vreld@>|#ROl^b)Nz5-(9BKuk}Qy zYr9*l+hM=EDehG^+WPx3A4awszGmG_XLqR(CvrX0XnRNZF`knn&#BhAtc=!|dJZ5P zv<`c>f_KJwZyslkz?b6Goz!mmrFA~sJr%YhGSmylZu<6mG<(8!9{f~(Ehn`bK^}$r zqx(hoX*0s_)AC5=BIP6eVe>vQM{8)IJ#x?a#@84~TJEvvwYYQqP+s&mTD(sGq^`z; zv%HR{d$&cBK0@?^y#FuuDJESJ{&Un=5U%X|-*&&oqt35g9e*g-@#Z(`cRuXvdnZi$ z+;8{W+iCaf^7g!TzfRY#rVZMk$x&w|I_;CXj&=7qg*Q2e!zSQl>kJ$NiN7J^q;afW zXB()U6{?-Ky@(-ac=mjUu_urRg%-rL&WY2qMqlnNSlyqR;_85t6$HXn9f zj<#re(z9(L=;BcIQ<))saKMc;4+`3gy#Hw5iyQ*m*&Zi9*v3cQCvw`3_GX`lXPH~% z`c&j8f;LwcW=k^uw2TIJsm#Lcy3o<`M_ec3`^eN7Z@;Ev-LN;<;2TXlVcNpyUBMM>!Gye ziPfK2X|ehfD^2$&Qd@M|QR(X!Zv=Xk{O~!yyQ}80vbca%NVnmmtXO$H2i(>Mj-N-hTZ{0 zkUya`+RL(i_eskCFWv}fx{O4-hjZurla|x0 z^bYRN9nN?S*(=nt7qXPb#5o2>8}COQo|9(ux>?-Ai|`%SDEgqh+c)(7S=4*8x*mr+ zZn%dHZ%jz{mchB>em03_$3OGyW83cDt9KC|m>5WH`(Vg;tM&@Lc*D?r6xr50IKN)JAHb!VeO``(tu0<^>2JK|vxfDU*Zikp z{n2Y)V_L6x%@=We<27+{;b&eL^|Lm4%~xFX#^7?xx+%d7TJ`UH&0e?B7H{^ujaTB$ zf4OlSw$U>Z(LEmHO0U`HF;K}n9s{Pp;;j$j+4r&O!k+h9xS{#B*Lu%uu1lbY3c6dm zPya9ULH8x(j*Mp`c^V6+Am~Seo{!+}v4bu{@c&csN9p~+IbVhW862M8OYaZ1SeLl^ z6WN3DsR+CoKN0?$z1ICn{DuVU?j*j6-XHud;dYMH+mqn$O0s^O#GbN0K!|-u@;rXj z>pQ&n2P4XV%yHxA5#!sxHQD>(rnJ(D8zGlzA8mu$4<`9_nC}n9MY-QDd3+k5{3Z_q zxp%s(pIdy5W!-P_o5(!U6PEQWi}jI_B$^V$pO~k0Th^$ysCN!A-Z%V`b1bR*IR6P< zm;0^wzRAb5nWO<9#rF-7znw|*gR|X-dfz~Mh=>1XA?EuMfwvpfx`y1(>dk_X4-wuP zM4Ja=#t*&UE9FnL_#=L6FoWJ2Tw<&p{^&TiaRf-CV^lr7-O2w3K|V9~N{+zqQ*i0} zZz*TOyLTKtHaM)e23MMYF>#9vB=#T5KUBw1`s<0g58+<EsjO{gCe9uOEFpywCj?VGpHEJr45^pxu`w z{L{UC4EqPQJ2?6TczX#a?~YD|_wF&%?Bg&5Coy2}1MD}wcX@iou*;Hhe}Cub6X1QB zV7HGs8Qw?2VbeO)_9nnSwnzS6ppGm&Pg*w#w)U7g7i}7Hq z-;e*Rf%seKHtpU?)=ws}r;p^lz^8;iE`g1!@i5y>ib8oZA6m2c=A&V^@as4}g(~c1 z%l87Y-xw6)y}*O~hx~Gr-APj=%_WEY>2nI5*M6RC_v>_>U%NW~P_FX~G}?M2##zxJ z&+47$PR_8ijcSb)cJ}AYbEM%f&c7kIZD)prKRR19lx}HHv$s)~Kio5Lds)(MwdVpP~&y){!W`3mU&UQLvg_@TW(;)lL zu)e~+K{DJ~hwk&?y1Gu=9t<(T_7eTA0SIk*9~oS?9C&1AB8}GQxp} zP+4jdrR^6t3vprs-BtBl;mYy-?Bn?O;XvMx@WDcZ-)!J%O4c?d7dQ z86V1A0gGsy3mdI{!uvO#U@N2PQoI4kk#Dv`ZHU~aK(urXE2>NV*7P53ob`Aeu1hi^ zN9nVU_G)~GeT$sV-fd-cUqWrR-RC6AkJ!xbiN|(W zf;EuHdlE8$5%d(}PkQ1F&b#5q@Z@P$1~2jBLpLv~6*auFNN8>u(jU~5=yng|W2_0* z=@@PCJte(Eh`Mb3k?l(2o~)@C@TNh^aN;b4ABB@hFyiy4eT!c@NM2E4Xx`DZV3*B0 zE!Oz!JlfT5a*n@_k8lS_jr-`cN8nov{AAcGKgdTjw%v$>m&RiVj;8Ws#*VmvpFINa zG*^MKU~2FJj*qS&cqa)~u%SY6l(H*%Ha>%7UWBr@aC|`+Uz|rU7+zM>Y=}>&E%tuV z_lI59a7;ns&p9rlyv7U7PwKlMQSDgR{zi^Po zLpUZngl!apepPDo;kx-{K7^>Al6!u`CVygGs>`m9s`ef;OEZu5g7XU`&@-fqeT{N;cr)ePqj3IdhjaLjkONq1|7(!33xDh+lv#bU%JQGc-40T-agT~c>hqGNg9I<_*r*h2W5+uyEe{z zAkO<*9Q#$A^==${DGrB6ABRkQgVMmyQx&`jYa$5`cEsrcNR9P)oFy!X-{v~LBhLK0 z%X}!#+-;fg-xKG((aqkDvo^ZfdvUNMzS|8l5YJ-tOj)Aqi7?i(o@|~mYc9U81!TmT zS6Jiji8JrB%pb;?Z&*~*R`D3^`8ewaH~V$mm$3C7s)PD5Fh%tvDtzE&&JTc>7p;s3 zhc`tRdcjGKH{C&d9U18u@C*XbWYp1gT$IJL+w=y*S5a3&3|GJ zu&?zf&Ayh^X|$fB`NX~sq&8?8jpo|xvim8&hE48Ku6GFUC0Jwlu{PeLw$ofn>*mji z8%aKmv(nh?$nw)O&dOj}|IxJ1t}TbU4=%nd;CKfWn!{#UYdK#(sGQQ+s(JhnQX9J}4Ldg9n-m-W*)Hh>Q- z#<5)%#lMM;vyUx`zABEgKOBcyk%>Diu<2vh_Eg&@ueRD;>?Ur(HqSe-U*lrkuxjbT z=WZze?GV0_;TWd zWWk2=*!Fi+9?ukO2Fup8t@e8kFD;ubj#}>XmlmQi`#R3%AM#zE2y!F@!?x!Uilecl zpB_6Mj^rvD7PQ?M&NIhZ^W>hM!)5@%j%cR`_x7jJ``xpwOE|ljj^e`kjl!De6s<-7 zW(;(s^anuaPnhR+xy)x>-Va^uuP*Cqi@oiFj&y7Ix1VmB0G%s>PA%w%zA>4OlPUJ1 zIeVwee9Gk=aIrUCR=dUiMzC%Shm{XlAzbSA>b__ljBuNw_6_ZPlS7swZT)tx!zpit zO1JAo1mCgN4Ld*5^--QRwms!gyv^={bG_=^+p_Ob+j-qiOOfEx+S9R?4BMBt@0;7} zaPF5nb;)RVVW5cqEpEf;K$leUwoB4GkxM#d|vY9RQU%dtr`_#@g1HrMwchV=N#Y!I&&&IUJF?`4z z-&b|9xIfr$;xFwj%o&%@*wYWcF$4aDq z7QsJnJ8U56zEGb@KG^ZC;|QXg* zV`3j4O{bB{*vHP!!)}AQp&t&RooMox`ayKkIQT7a(dSRvKRd3dPR;cpsz!aJYvgE4 zD2&A?##u@(ce_kpm{lQfd$@?|v58;s92??*0E_RHbB|};S((E{*{2LHw*Bb~nje(w{C{G3AbbN)HyQprO zYwTl4a$(KTy>C(0&a-DHv$H#WY}VT0?9}#Q?D*CsHlZdF_ID$^1BfPT^!Pe;S&bWV zg{~0c?F+&DLzH$Be)cNL!%1&O|xLXsVK~TlM^p?{8OF#)i~Py_P$epH`uk282HqEwfBo~LwJrfrwMz@ zUW|8ybxX7|*wGoBbpe~;$Ew3F6LtG2PVeVyeZeUoDKF7=G`fqVUqp(dwmEf5)1W(C zc=s^)ZE?{DXTC`DwgJ0^xcwFCH^Ha=tihUs?u12}x1I9CIX7tjx61_TOOazv()iOj zr*b){(@wiOO}TKs_&drNm>V1xf;jKqVeBuPhOy!egK>A$Bxi2dBE#(?JCH#@fouu5E%FR)3iE?NILR z%H5>g2b9~b+^3ZLf^z$m`xoU7DA&~`+c!+PW0ae!+>@0%Te(@v{fcsnmAhQI)yl0` zZmV+FDEDgR-lW{Sl)FW_yOsNZavxQ0k8+<^?n}!3gL40(+yUjr-J|fX-0{ktqTJJz zo2lF!gmQb8`;v11q};ca`=N5< z_R4;YRPIFOrYSc=xtcD&kXI64U&t$o2Td1W$SaADFXWZP!{#OSgjqDnhTi4L!mqGS8%Wd?RH~aHe`Rkiewoio@ zwlw=&5q?L7m-ttf2WkKiapU+rf1SVCPt`FtL4|S~Yny8;%j=e)VpPZG@OdqPI>a>V zy1vZw>YM$I&Wy0ZH@~)CHU0rUzoBtudGkVlQ&ag0s_kihj=!0zT2#K0!f6J=xh;*2 zXmDX;LnSh@lZM6>RIyWSvBfp$W))-8hQuKwYob_*k%Iba(E#cKTSf5;%A1<=8XFrL z@!=N=FKno4sZ)JghVxL0qlN(Kjno+Sq>e!-ySlozzP92b;^Rt`vZT4ZvAHEc z6=gGSQp`n7&Hk0ewdh~d{MtG{`Pgtuk!p7PLVEiI>tca_vyfC++ zr5<@MHVaT;ZFyboxBO02-)a^#&CAJMvH-Zqxd@})ijRR%oWG)F#R`98AvyrG;u->S ztQu0By=pFKD6d*jThUnFcoF*k7Qz_v`Hg-*OLQ%4scWt!u*D6_YODOYHRX+Lnrm^u zU$4h$wrg=qbD*VJ)VHL$v9^8%M)X40c`g3NiwgaX0`>Kke$f@sYTb|&RQ1gke|_ae z>=IW|d2JKApy->iPFE4=vb@PJh!;;rbvQ)4c;AS)l?|)>QQ3n%iX2V;X2B4QJx-yP zm3~b>Pr8bl>vGEj%`J^+r5u)LDQ-bS!-Xw@`7QN=`a$T87h&^~QkK@Q26+S3zoO9j zwHW+z70K9mYe}fC+2prTTQ-Fi>cZ)$gi;)|Q85@7qK!t1TUuWuSbtCyfX2XwY>l;~ z&hHPfE3G9hO&Fyr)ya)kaa~h(U0nn2gl{H42=V;#x)wj~jUoh)GPKhwZoDWWOTS>L zZld+gkOy?LQpJd&#`9@wS$S0NQ3!*j&NgReFI~!v(oCS1`Hv413pNQI)D9&=9=2s zGa2ibG065_$oDaP66OeATHVxK-b^{q<)ULCjg{;PURu}W_g_dLN{rH#{*{%L0Z{Y` zqqL!3H1ZOoREX5O3_`*MD+BBRe9etjEdh2=`08sb5qq*(3c1iwj!%1;rK_t&D}MtY zgctfW%vD~|(Adn5bwQ2@iaXUMaggq+Rydg9s;;hUX{uptma7^=6=-N;XSpP#ELU{^ zVx+m6<-pg{j8PVD6Pxd<7VSHST-0=)s~YX3vP)gns`e5Wz=6uYPVVYTc7dz5sVPui z>1P4>R#(bV{f-L_E3fm@&@+5PsIH-Y1@-qb*GkpqD_w-38jSW;!iPk5weS(nt|1=@ z9d<4G&dWzj{9zZ+ zO(Jr(;U`C6+n+ONBs8&=mftcFlv zeXU- zD_WGdU`EDiRX`g4l7W*iexDu(E1OnTHa2Ul>ebp8?q`94tPw1WM*!^e$@s3Fk<-~O z8Q-hY+lKLoa3X;IBI*kae1U<_6$Usc7^$*E9M>#NG4dil?qe38Ft@|Vx{ z&Mj|h@~^C@yC@aq>zmG++|pQoW>aMiwkn#Yt*otVY-nnzZk`7H`ONaBm8Y$mJ~?$| zd3|lQzp43rdu3;PQ&Zbfq#|1F13#SpEbF>si1yU!-f9F$*1c=b5D;7aqj8%+UK4g>I9XY zi;f4%n`(IPIcPlJAVM{h(E|xc98wX7dHR-r%(~4{SsRi>=EBw$KQ?bAmJ3URQ zw%n;rP$Qw-r(#*3x(rzwRyU=dUyG4Uoi;55N@em_EnbpZP<7ViZ~HUSr%#_b>x^mB zXU&{FZRU*1S<}jARr{xctEjG+fwA#tPQysenl>}Dx@uN> z`Se-kbHv!lmdrifMwNm!P7fn?h?3K_EIAu@(7yPKjDbJ`^C6{w&%r$dd*EqHz+N-{ zf}Wr+m=a74rUh9?0!u@bFX&sJx;}k<=K8Glh3m`K2iCW(?^qvP-?hGbecPsvO)MzO z_HOOl%J%s7q!PTY1U3&&*7|&uDM6_klxs!Fc9dO<(w!*Xv%Yuzf%Sds`_~^_Kd_!{ z@NDpHNZF9OA#Fp)ZWKP4fKP~Ho(Yx&+kzdzU~pfsCwL%uFv!;X)~BI8`KmQ*0d3#< z;Kt64`!;rO?A>@^WBfY3| z>Ah%E!AUPPWarEoEEUw)AaT+w!-SY%ALq*w(tO zeOt%2;I__f`?hs&>)m!>TmQC$+t_x`_Ocy;9c?>0b_92H?daaoyQ6Q%!5wU;Z)fVx z^qpBd3wM_74D4*%*|D>GXYbCwodm2X}Yv?%v(IyKncw-As&k`kt&kg?q~O1opJ;>Dbdp)YzS`X+R(kBcSGNXgB#dJ z-^SF9=^L{)7H%xt7}(ghv14O!W0#=5K0$jvL3vq%?gE19f`aCH1;sHzZ|Q>C$^@-- z2ukY~baqfsS*oD1LP23|g1)*0b@d6_@(Id{jMsx(nV_e1K}}_XmO2C_bqhK=D5xk^ z&`_bEpf*82U4nZ01nu~?r*2Q*p0&Mjd)fBD_O|UE+k@M?ws&u5J3KplJ5qL}?nv7~ zw2}sD$=sE-D}Ptvu9974yJ~g?cC}($+cC0hF}9tcqI6;ofT|9FuKGb)1G`iAq=ByTL0KiBts2l)`<~#QPK@?GjCT)4{J^m%-op|-mTf$y0d*}aA)VveLH)=zx_K0c6!8^WMVwZFcz&Chakpa zAMj7OAK2vqKd0@^+?@}8uG!rR{0D*ieZYMm@IJ8H1Noh{Clh!loVO~R?*qR3_VmlS zB0Z6H8H{Ap6^e)ZYiG@09py8#2LX zB^zosw1UspZs^>w4}5lDL;r?>4Ze*jg3~euuayXHYZd&qR&bn__{4Pskomrl%qQL} zfz%I#q&{)rK2Sq1i3?jH^E)8(J0bCVHy;r4-Un$*(#(w$#~+;1Ca6u zLsFhNG*ig=*i>~;$a><~G{Lj^f@^C8-?j_R?G(J*v;DyKgCQDA-;uc^Ye(UZ5>Q$I zl-7oMVy&RH-W>nT%&?m!;lL8t| z2aVFKQzGV_Rx$Ieg?y0Gp%=2DPwO^WiEJKZgrrxR6Y|BZP$TArcA;4uKHUzi_XrIo zb3;C62BO$@%nY4kZs-xSL%*0GJfPb&&}_b#A!@`N(Jp3*PBBmPKu_rl=_xc@q(M{3 z3TY}dXS73C35IkPnmPKRt+34=%pQZ3TLZc!stpQFg=UaJ%1r~^#-du9O9q6dLi0%) zbQPlBLZPb!Fk80^Z3XjbSt45tr!7pbcSn)xBw^%u=0k6w5v_slKx5h-lJ;_3!zDi3 z;}QBqni^dx`$_WC$aaQF{yr&-0*P!nY!LXMucikx)!3E@i4=fD>IkkCQmG4asT#gf)wT&4*Qumj4`xf!YX=m)q<~^F6}^-wijnl9C0@7CZ~KLY%hb%8W}8_{)ZE(M z*&#Gtnp;T@_6RxHuOuPOuPK;eGnFJP5%X)Sm|@ont+xw$Z;#M>`@|f}p!xc?rwD17 z2^}VXdx@BB17g1I*uGZHx!ss`dm$5P<~<0x$b@c_wj*6g#(X6kYm{_cD`w&@%*EZ9 zjeCWR?1w(>fj*rgX61Cu%UPJ23wM&7Y=x9;hi*-BvePCh`=MtKKu&s~Yp00WI$dZ` zB~i4e$eL3skLNbuQau4%*PtA#k%?H75YN@=6tb6lw8%WWN##{@?fo~xhh}D zVdAWIr9DLEEaI!Q(5g{#7U>d_w>q(U+6P_r0M<{$Sw5kyWkcIiPBId2X$=IJT%Bb2cf5G9!iC-N*q*ZyP&rY<)IX%!Dc~+ zEfHF509tGZbc^5+-Wh;~;fcsSHCUNS4$}P7qqGdoJ85d=q4}m=tvL2YU2RCsHw(J2 zopai3vr@NMgY=8_hfnAkSz-lJgSBm|;+1Z(_UM<|MMol|Z!q}8o=K*dfAs7l=bn9H z-suzbj+}GS#ZF3z*b`|J`yq0cIUwd3CU!y6#N3iEwBoWbKInv|u}{n^gM8qz%_{lO zH}ss+uI7_{VlD}%e~+3`(y%*{CA1FB0j)~&kX%4Bi{^uYknWKxW|kx21G#6CDRxZ? zg&tjleUmo93z`oOZ0Qp-jAyG)XwvCw=Y)7ba=_ZHG`A4__iXJA@xXvux1~jxTUxP? zvR19zBv15)W*5m9sbcLmIJ=Z#Kcx+;H^~?K#Om#UTD=W&MH)11;*7zWMREnrEz!9m zd}e8d&aFA46FW5fFtZ#G>%4|}XAj9O0kMkgQ2U3HYkI==5Ivt_7D)@~WJ5W~K8y6L zmF6G^rHAoPyVzk23cX!(PQTb?WJ+@%I*YW5-Np`~#dktK>k(RfA6B4JKckr>5(fp; z-s4)VMfYKMs0VwGl7|MMrKN;sk}Rx9%dr0#P<+&()}(`cq_etw_ak5IM3#x& z58|Ts5FhoZmFj@n{YVotOa8V(>_^s!{m8b^taA988SxM6#{ChHk6f!|iIp0HU;G_q z44evhU{CzveLnrE`yS&g8Fc=a`4{3iK<3XHE$@FEbY@gxnLqz)I)C2|ng6*c`6nXY zV5gPo{LXAL{eIkjQ|)zRko9e@*6Cg9UJ9)IMEsNapR3XNyH$QtcO(7D`tP_v=Xd6j z@P2@M;j(?b3f@nh8C6)q`!Vk2MedJG--$c4k<(>;H?-*Vpt_GU5T!nu|9`M0FX07u z%khZa-=(!E30eP#+jV|t2ATfGj%ew!z7u!p^x%WC zzE`3kT;~7xex1MVA(=nJS+NSs`cDOU#Tp;aFLZjhf_GBP@tOLn&VTU7vi_|w?-A)w zws+0HbpF&TdH?I-5xWS$}zyBVw69W30~K5s>*;I{~Y(%>R>dI=}CmGJj>v{3#Q4{x+3AiuhIddw7!0 z-=Xr~8592E$vS^}qil~bMj4@uZ2#z~I)9nUAGnzUO3}zgOj- z7Bm0Vr|SHyNwz=vxX1-0{2K~%{?waf{;OlkgQ*L3{;r#4{?+0Td}tjK{xJd+d z()qjImicpI;^+1s>-_9png7;Ez!4|mzp`KF532nCh$-)G>h zVodxm`#|S!^U3_j#%#|?AL;x-l^@@Ki1;V*`FB_mQSw#gzb9gDJ-*L+b^f*yvONhg z^XDY${2hmte{+(~A3Q|8H&&4R^Ix&Yp>X z%`Lc|xx!!XZ>+6Eu)MLd=B(Dt+0!U-Me4N08L88nnyb!QQQtCW4ol2E^K`nS*;M6U zb$U}{<>@PN-*fe})w5?#Ta`I&MQyV!0(bk7SN!~~{?qWv=gj50?D7?rmALVVXG_Z~ zT59X6rZrcgHOm|E8WK-mmJdP&fQV}rgU40UTSc=8PbN#7nJewo{{>16kDFflq>6tn z_4Mk-Uxk~F%}B8ZQz*i0!T&&WBNZ+bh0WCjlEN!evcaz|%u38K+)a2x+ngE>&1DIo zE(w(UmgfL9z~y#ilnn}x+%_!;-WNeO0I*C+FcVUK%*dil5?!p-|VylesxeI5?h)x-i;x3#e zBeuziRCnQQ8L?ePq`B3rPKAOUaS4Q*boav6+@?lm?3Ce|?j`;ex#-@mIPYepXHs|` z!nDH z&_goR<}Rv2=wTUZcNbM4^oR^~xQm(s%y?9W)*=m|AIne>X|>GgmZ45SLFgwk)a5S9 zWX66O*yk>q!;GKGK)1VSI(qk*4D}#{-aRfuy$GRqPsq>#gwVSuWvCCKnat>sp?-vB zG2>@4bkJQ?i*`LFLj#H1ptbv8FHOGuEyB}F5*f_+V_d=?M3Om7CJ_NNHsDFyYqDt2 zHB7u$4#mGN<2zl$=&^22V|jgLO>u*$?N2hP%bqm9v0#A`#Q(zhKx^?we3tVj3j|Jl0?_YDl|;^n6EHG$;XXU6Z=AzXE!pBDqT1| zBQu-%e8z=V+8o5Y7c{J9Mx8Zc9g>+lzjj3pGgex@A0X&q$uhf9Z@J@<**BVs_`ZgJ zV+dVtCL=D?5yRP78lZ3Ma49p@t6NMc?u>EQAi?tB>ohDy435WD)zDH=2hr#gk5f}s z(DFQpJmW0ST!GogM6nCtPbe)}xUh6d_W60G*+qHTGq7V|_>Ak~MxKSGfRKP-fMpGh zRm|v+0*Seo2!fE2*UL!5U0l9G#@rC+r6#-F^mx8;mA?uMe4~uB+`@Xo;sCwIX2wmj zY@CX%uBP{}#?4a9VRE6jt4sWNZ42`i%(zA7P7J}#V8*R7ZkT&sd2{(<1z@cN;1iL9 zI{cgJ~YRIx-$c4FKJ##v8MfeAtGGoFnbvldcld_F8QkW_ju&O>1z z8^6H6q8#Q9jNUlUV7(BQzlie)G73^VfbHj1xQoKT(l1rGo5JYz3o6`8VKnVmD%?k5 zh|L#O_+S#km@8VtM5>5@G=E7&q>BiW=)YAlSuzIAd|Aa5 z$`~~CcPge##-ORMsF;9^L1SN4F>Nvi&Fxb$9b9n_$#=m{oJ}NZ{&`$7$@OFA*EKJJ zEemEm9XFQ9+lLs8sEm6?#Z6j9DGJg%8qzq(0&Cf|%ysdNo^$I+K1B~!u% zND*G46I;IT^-(iD09AmPx6iV z8fBhe3yqLC6*AuEAz7QMUSBaI)#nkKXI$x`;?m-R9320R^Bw;_iVdoZ3ouVJW4!M) zYL^g0l^5o~$Okhf_=MK!A<SET}zjf_q?PISPX-B?lE zOh!zWLRu9zU>YN)n=CV>K^d#7X2$WpvDB1wAb@(}Q*AV+_}n5~s3WHOMyDpxsD6xW zais+dv(L#Zows;NX?|Yzyu2coWjs7K`8qs+cl%*@VnuBwRH?Cvr1w!wWkntIlt*QR zK@kZ4SO#4bY^+0pZW$3L(#sobs?gq_$T$z;u*#7}1C0GL(o2!$tt#@TGBOd7uux+> zCWFH$h{_(9K_7yZFm?iEOGb=D1nE#u%3!ichq@($V-T#XE*Gu)nT$$7RKqHmnlPS{ z5#tfj=tqq|ADc)Bm`EA?D{Dc)Ps{ZK6fsb zo#mAvXRu9eB?@N9l#v=A_C6UiQrvH$*Sf#+vWv4z=M`YVSiHFCtIT86q$D5jLzk8D zme7K)R<;K0h}JOU0@W*BhXamrVT$`DU`|)FSgcF47iiS>84W4PlST^E3hwx(LagVX zU=gD+C6ROs!$TXhMw1Mgoq6eQkV#aD2@_90;T&oNv zyGfKRu9ouYA{m+Dd7iR-ONJ(T)==o%GL-7M1CxMpu?$V|97Cb+$mXVbwo~Z4GIX-% z?-cr;44vw^l0t1Vbead7lFYb7hSEJZQVnZlD8utA<-AnZFw=7?rClaNnV#X4_I(+e z>w&mo#^o}U?J7IrA(xeD`R7cP)>tau;1_ylQ{+(x~9>Ql3Iw2mM0rU zq7VgE4+o76DaonWTnEPqve+nl!z5X33L}fnVPvsIw$UZYVyg@(vgni{MHbs+NRh>M z8A_HEup>q2^C^-7cFHtG0lQ>KQNV85GDQJj2)6a_paLxqw89+sgJNdb?@P?@BF zM`aB)k^+7#Lv@k@x+Mh!H1j(K90O_mB*lF`23*VCh&fU#G18WY@=aD#DCSo=gDwFO z4>t~^B>$YqVF?+)Aq!m4L1j~zo9w1(Vfa$YI1lgmp| zbL8^U@+?5?2%5wGhmuLxV^i`A7A+~xUX+_xTFP8juXzcQrnc0>l2jE#kd}E^SBG*@ z+>OX$c?gDCSiHEfbV1(vc?)dYeh~D~D4A!(SZW4V`>`^OoO&BFO({hqii(#O7A%^- zIGfeP&lq_w4wI%Jk>8DS)IR@KqK+M+Bx&ikL>?&lC}9lqw^>BqC0w9Ks|VO>Rvrey)g4 zr+oJ4vqbbvM1vUWvYTOFt^#HZS^U`|A(Ils#%BDNMa0~xtC!R?td=j+S$vkhiW`|mSoS*%PuO){wkY5!CdK|NdBcu@`~o= z&Bt!hJa!C4$epN3(z}fMd@T9Zp86E>W924bPo=<89Xf$Rq-+%zEX-qB6v|n!IEQ7E z4{-9b7qT4bUtEL*1Iryu$eUNXIOi+S!q_~WV=yX@q6n1EGoK=I=d*K!yI={n+VaVJ zKGu`i|3^txUBO9I5&_wgkB3wEe4*??s8K*-f~AU#UoFa;kF9C)1C4n_=M!bMQLtda zg1mDuXdi!U3oXoEaxQX6sKs9`%%cbdv9k!v4>*{qEXT?zr}dA2#(D{+^<6!D=A~nl&4k3%2H&^)xoNZ>PwsJn#9PIl9|2=EVmh7 zIQaw!t>NN)ZO{fHUo0AOIxH>Hab78GUy^CX(wc&LU<|fB89y(9X193L*D)*$onS-q z)&+7`!pbO?SiC6yGF;P%H$5t^6Kl$wN-M>_Ca+Lw6Lp#(D?!M-ax~FP8j0YwW6~vpV-3q_5bf7X2kQu%?iAEntRT+ktE-YAd&N2ux%s>kk zKqlubJ*RYGc5yz0Ipa;Dtr-#uL8xnPs)Aw9QrLB&@hstyGJt4Q`d1^RH?=hA^sfy` zr$Yv8USND=(hQ9ONDSECEv;=TCHr~&J|0I$2sGNVt24oqWL?v}g%1}(LR~o>hg|f> z@A$_gn2{9bK=~d%f$$)Yv>BTX#Z8dRM<+0L1}`$-;YB#vgFQ=W#ke#OfW1Tzbra)v z@+7_-_bTR;gSPJECs18;%0WU%obH%h#eb2KEzIpe}i)>!=FV(X9lpJr1V=}#z+4Q!r;t6VV;gE=cE4y z&GgK`qGB0^br!GS6KO#<7zs6+SMrJ3$jQzsEfq#jbBl_XNRh^Pzo@W7*>^iZ-Amzj zR3FdS*>!=YZ{@-kDeN#w-h3;8cr%Y+;g_zU(D5$ge;!^24aK~^_q%7;*3T2C6X&(S z7A)g`Nua~rE|l1W-H5%C)kcNfLi zKDm6auFsFb%)lQxGVIr-%ZX2z(o!)fC7@ z-~o8{;&;v>1bPASBeW@ZF#>->>|gN9|C*|N`Yr`%6Ks%=eyCXrOC2CTzhCiLw|fEPdbUykJbJ5=BX3anGzyNd!pQGqT53Qkh}dlZ4B<3&^XVpedDihc^wQxT2o z&*kT_{1z4eB9+}{%k&jnrUz7fKQgg=EH{PVd5=O1XmYVL?o^w-`@1#6=c4NYkQCdqG8muMgW?9nPLzZt_@*$2j^al=-`Ztk&QR?JbQ+*I(2Z~gIp0+ zsfyZ#aPq0KJPkdjKYqs|@cTRx#>py4r0^?!Z=e;6D9_@Hk(%3qfA^y|d+^KMh=2h( z^lu96L*Q%#=HiDzyG+6Hq2d1q3^bl+fOb^$L`3J`rUGdc*rozA5h!@dR(dX)My02- z*~tnUS;#|_$`swnE~qQ)hq!f5r1rf;sMV>EM&$>{{%q$z)nI!dOGcK+I4^57`;>(RaTBKYhBU0qvom`{vV@Z9^RW`1GV@aKzuRVJS;NPvCP@BOHEy z(o*3O|B{+VEL(!|^h;WqvW%`;(2vhOW~nkduAGrssl`Htl6ur-JhfyFArrq*e~%l# zEDxpVm-OAS%U(v^^h>%nWf|SVpr8Bxlx0sKGyV9iVaxCugwZdlVZ<`1s^~NrwbR4i zn@*b7S>QNznedcTrq3L_P8jnhA#>sSAD!GaEzhokTDlyU1^xczbiZJ^q?^+qpXiQY z_kRdlv!F@+1iRbNY*5t?V^8opw*U{m0&_Kx6Er27L6hIx`YWL z+>tO-xYs8X3-^YER^i^5aI0`{N_befHz&L#+*=Yp6z;7F$3XwI%(V%#g?n2yL61KG&Z1^7voRTgapRJ3AMR8W+%D2oCGLGh|k7Zi8Yiz0fjxNybm!teWi zX3jZp(v-`U`~PwO`DETR&oa-fXU@z#GtbELsB@(}?{+>R&wHG&$@5<4MR|VCiDCQ_ z3VhyKAkX`pE%LnI*)7ipoSWtOpmUErzu-J8&o4TEm*+#y9Q3rIz{5_5JRfmJ<@u=d zQF(sJ`4@RU?)+MwPdMqt%d^J~s?^8C6JDq*;9 zI3@CY%2_ARr=7RR^SE=dJiqCDP@dm%9>g;oaIBo4iYIR6WXvHZ-O5=eo>^7~(-;oS zwlY|l;XsL%!O{x{%B&0)TR2c|W$54wtPCA|p_RelktA&Xcj;?blGrAyf-BOwxhJ|Z zfS+KiGXNl#+?K*MB-bIRU|afG5TMe?8SF?T&u(rXt6VWjUgfe0;%k@Jx9(AW2r&ld zyafW{A|)MBbn=#xUKKne{<>tX_JY*!fdPLEs$7wZ(nfmZ!VMKX^Yw|VtndRtU^>3O z92iO(RR(DMTm;WbN7}aj*BM=@13(b7cQyo_M`4{Tv1w9bosrj-OOzPqZXZP8k9euk z0=izefVQpe6_S&};~?c&!hO_C+TaAl~bbyDJ$}J2)fr57H5K07A~(C z>BPRY;+;d-AR0Wx_wjYK)2=-`(Y~%@0lo@}A=IXBq|^DK=}dX;<-&>J2bkK|A-Aex zs_=;FMn=`^MWeEVsPRznw8Uj>NTJ}GnMBOM0B85e&|W`&6>Nwm&&G?l>IBm3=y&QB z+i9GlRnFjef4|-lABtOr14vLVGl#J}mIt!`0LGkAz1=<(wPq^RRUU3rLGcfBCq%Nl zXRNcYe^iBcr=?FI?Cl%d?Nh&)mY$E5Qm##o!O-%^I@y=6w?A%BR^-z7wNdPa=5Rjt7k7RIKmPyR!&F8yT+1Zx}Q1~+|JM0AW^aK z7fr#dqU|dv)l$Vt6c?^{Qn9M^5-zMIvGJ*IY!oX_og+wU+Bz$KHuk*0^fb5ls4V*;MO3gq)iXndC3Q?uF`m0-|?LA4ruM{xN~ScG+fO2^vMQAiHQgr-?o@1eiO)gaR1RKved$u# zsa6RqFPlV)_bGRtOnPMs8=H}0*uxYqjTwzLMan%Vm6F27B)aYRMK_f?sbxJwy(;a# zlSo+xDtc^5{2@riPw>r7 zy*yi;T#4^=XC32|YC^JC7B6|2AinJa2b)$@A0B0eRlxd_tZt<#1&*l>TzgC@Lz9v zU&!+>Ihz*{|DQR36Zo$=B?A8~rm zxyN~nJoh#k&ug8B1tCYC6S~1q4({EDi}jItg`eCsmud* zHpjy%`{yjtP*$5$1F@m3c4w5Yc2{bMC}*0kq?|_iqUG z)zdj3Bbr6HDWrSNnv|i79_SQrQ13z|c-`dEWQPoc)OZXDFoLjW_Voz*-pK`37!hjv zH6@I%5;|FBugl`7dKvu;TVWEcre9xDFHA$&Lu9WPuH`7dG4(f~t1z;~)^zS_KP{i- zw5)UIsLI|I5Ml7|QolnXbWF!LfF48N?$HO;!zkl1(&;hu7LVQ|N8hJrqB8$PIz1--YLDKp4g#Hx6}LD&YFT$5 z)&%a-boim-Wk=tZQU<>*DEkmYa@2?B?PM^%2Q6H0&5(I1Xy9sR-hg`+Q zJ+oD$RbZP5#)E3+P~N!|KIK8{3Vop?*@iWnK6#zZ;bV2m@$1!5CU|x9HZ96M%AGCn zq(j-&!6^=9=gT#rYR9a_Y46U%(q1<%D1}BKIn0wLYSt3xFeIzk*zTe6QRpW|af9Zt znzdBW(b%q$p>gcg*rjGw2qqC@=5Wi<2zpW;7ErS)g^(8`lDFY{geoBv#|DN5G3}cW z>oOsg3u#i!%Y{@SBtP~Qf~}6>&P;5c;?^h54`;0u^v2jA4yL7`R|$HHq_r1E5R%<} zSe74Ev#Qfrnys-3$kl>8JvNLJCrN0t@O{8Bky&d5-3ByDB)Jp$lG`|EtrdKGY;Yp` zIze{;J&}FA;I~r@l8j;>MY=Z#@(eQj$WsM*CMugl%Ie97>GOI0>v*rKC|H=ru~tl$ zZwpS5yaMV%brvj&u>nP6`qN*qScr*OvKO08RlyRW<^iNOu3)Kv1qh1iH$@jz2&Ndp z$9wUPsDesCl*O<=W4Lz^C+SszuGVr@!3~9~V0r#0(5$LcPvMq~4XCn$vqEYAKr+{i z4WL9Y3p+a`vIGG|i7I%DMg+-$);FRG&e51CF$3M5m_(kdF>%2_$5`-IjYtr&zXz5Q z3X&R=P0U^ibe_iK36EepHKu@=zR_;<2?aYfs#s;WB9%DlQ8Scb+iur6z&W*P61QuG3B}R%+P`RWg^Y8K~Y826Za8zZ7ne;-s=mr&t%K zrp*x=6=0esahviUb;~hyATDj(ytzw3bn0m7~8=o%rb$k3e?b9Nt1oEpa z&M&$mo2l4F%|(6NWUf<7nU!UdTeEk8 zDibrcP)nj-bSgqmXHlrcUM?weVrNmOAQlDtv4ZM!it4j!y{ALSpcbYdYsEesHfI&?x%R*!~#I<>Zo1GwH@Q z(NcwOL+k|Z3eD#bpEDkxePSyC*WIBCP9muGoy@f{x;jb~)aod;>NWDa2}9w2s-Mb@ zT55r+6{Z^bt+s4Y=&g?a9YLxS(AQ(c4HF-pp(ajcIBJ9eD305}6LNVl3`-DKxf0`; z>Y(_SRl$#BU}>RlD}Er5(?6q!sdlJ0DUYqm>*Lx(O_VF+HPN5rceVM|nA78!>mVi7 zkT$z?#+}HmOnn3{%fAU@K$0cq*>e-M=)Hul5%cmn6(WNqXZHLIjzxq)Bg(U>6(hsS z<&0s$Ja2NP5eub|$&jR)U#DZSpNf}`V=}Sddd8yP` zowQ|sT2s->{S^1Q30{+uU=O)A*DbvyaXPu{Qj+Uq*ZZj@QYUspN@9KNsd;XRid3D{ zjVVbbtH#!NDaA&2mVTYjW-#@dr5Do|FckI9W%Xopska^-3l}mlp_tX0$kWd<4(CEv5NR`nYimm}8b=)Y%IFyq{hhxor|uOt*zIW8+u>l0vKYxe%b zN|_AZx#l0g5D}096->$PmVEZ81CSB2;QLg`9h#py0UzJ5N!=35 zWhJN{iSrdv>+pf$Sfu19Rx!sRRG8@Wrm^VO3K?}^*-{78qxfX=IS?KU8cG7T3>v6p znaor_x*vxG2GpE$q)kx&A}nTDf?`o6aa&4+IvG8p+U0DrT$(d+>)e6#oF;L#ZgR?X5nvaED*2gR$*&#P z@+NcXazx{P-YVh%jq7|qk6Vr?=a;Pc`~*`$ltSOyg^qosXJkYb?Xwfq8tDno+TO1I zA=p?c+OP9XJ(5eIhO+2@##684;c2-^6}??ksA+O3z5U~(yH(LUG=;h+mx8w5rHU@o z1S+Fa2>F|yH~o(ojb`*fD6TGM29p{B{xSeBH_O`2)D$3!2>rCQ2mtOw1e=>7WL zp-xVxfL#lU`!OAsIy#N#s)7t_ioT>tTd~hcD)Xy$f~q^oidyHE)=r%PD)ZceLf?#i z2&(A&S^)KXI?!6IPjU&X=m(lYjh|mKYU>C#xnP$>(Q|f!NbVSq&nuxZd z0Jv&a^m98wC7~`MSx#LG(jKAxQb$GQp- zq6$-|S~_MkO?R2zqnW7R)Cn?lFGn|P2Cm!tIWnsOql2!P&uK2M>T53fYMIRMaT{u* z=Hi@5%$212u1(V`(7b)D*UaL8&{Pas(Ghtv11z1g#ic}1h z;pb{TJ}ev>m40?QCq8TYM)eB6DoE&04|Rrm8HZX$RnM=R1X87U$_gTtiJF1xM^*2U zkIo>1Iz~x}P`J6N^sa1*deS2_l|sE03v4t85JP42}etvej|f%22i@E?XJO z*2QHj0iIN=h47TE4P_hRvbCXXV_dd2l-0&%YeQLGT(&lp)yHLPL)qrIY;7pp5|^zF zWv9huYeU)AxNL1GYl_R(hO%vO+1gOn9G9&PWvy}9+E8|SoS)HpeBiqH?VGzrKATk2 z`86tJ-NDRllh=jnJKe)EBo`Crb_#*|Jii%BKv@EqyIVflRNDDuJ=9qpr4Fy|gZz04 zKik?HlPz1-yjQ1Pi;9Z{g2(j1;AY^rx6+!3hw$*P_^Fl5yJB21I`18UpDbJ9~tx)D6G{Kf6EL(1ZZKUMr_|9abKFpDo zqYsE-DM|jU!>yoW?HuEHF44-tbvX}{ggOcHOq3!v4B~)LvO;~=9BWKn zvL`vLtW1mVv3-aXbQ41(ePjE5Y!nGgj&=1y-WQBK&NKLD9d6SnP9oA1xMwRa)>M$& zp?I*;WZqyO>R0OLAs+qsU>Zj8Z}#2HwY{alNft$e(MK(GE8)pjNj3v(-<0v6ctl>q zDoND0O2QBUSS7hKh#)X2VXTtStF4mIN2?_AgjEtgX_Z8t=tB9VRT4h6RTBENRT9B@ zR!ImMt0clAR!QjdtdbD$tdbD$tdbC*RTAN#RTAxiRTAx4uBHnMtdeL1tdaf>jbCj8zit)mBO9cde4p@7f`mOTf2ELddsD zLP%RBq0hBSqW#7yiBIrNkkq*xKB}Im306snpj8riYO5slo@kXM#*isiNeFvZNeH-B zNrcf@C80mXDhWZ~DoG0DStTJZ)hbDV2PQ?GYfVdh0j)8OP4S~}j*2Ifw1Agvf`v>P z-$-P>4|rhfQn8tWP4_zB9-Kwr8ea}ku|TUC4`jH<@tUoJcj!(Wvo!g$4$neIIPFe@ zCIB-au$5x$Fehm#0=5QLS;dCsd@tm+V9p#w-vRn+F=yNdOc${*Hn2u8p9dsnrv^;$ zZvio#2XWoLYf^mOI=(#1rLXbg`#OTA<0COMn?9QE&>vA1jIz|S&C-i`gs=jmE(2pw zJ>|TKy*!SH;v+dS_6EB7i;(_*qFeu`JMjQdd7@{Z;?jZ1dlTMZPd>Q|XT;V`8Q;Sr z^cr1w*zdw6sp!JH&;mkuyG$2OukOO>V;3$@bm4rm3zsLla6Z|E^QpUV`g9jAIIjyQ zWV&!+kuID*uL~#Ob>RfOE}Q_naN%GVu080&wFh0eu%HXq2z23sU>B}2?852OT{wMS z7fwLBaC%a@aDr|ZPXB~1oCwo}Yp?FY>36$u`n@ikfZv4^^1EB8wx>B0&6U3d!Q zb>YONcHz-3=y@VRw!^^XiQCx>Pq6hQdKxoA7F$oL2=v&ticw17$`G4zfI`wvV(Tez z^(nL;a3YyU;Z@+B`F{r0iT)kGai0l>YB)URx${wMrU_hIyb|g4>3h1m`Z3n_=+_B7 zorVd5PHrqvX1dz++3Zl`z!bZf2g#E@Cl=UkzBcLKCnh5i3!G;#>bK~_gX%#1P3(qU z+h1>>8{UcZ+o@*6tm4oM$QkWO=r2(~@8whTZ07f~Z)SeElm->f8_4eDn<$Sl`~UsP z#XtQOdVL=tW5LXxk-Hx)IvBl_pAOs}r^4832Gd_07@4wAR=QAPfnn1y!?FQRj66*< zq>ZL3!>(nFVcC9U2swZdK zI;?&z-Q4~+voc+ahHs!Y|H#^N<>2^g=y~bm4w!ew?c=HA3 z&3pMJ$TQjv~U?$1}m2^S79ACge!CyIBagj3E@T@f&Ke$Lb(4% z%HiZ|ICba?BVl6%e}WO?5R4e_Vz*h3pP<+fkG%ulv_B%!G#bSeA1;v57W5g|vlkER za^<1f1=(BC!N%J;@iO+}TYB3%_lk-2P*Fi<7UZdT{b2Wr)M8DI#ywKwAWR;rP>Cia zd_pZwVr+sP%29lBG%+tuqrok`XZMT@(EzXtl@_Ek$;I(ne34U);)lvKrA&pV&PQl& zL4^69imXD_1*Obm^nCmnqn_dHybV%h*8!Jq%w;m^R%zsNq#+hK?2gfdDDzTfEy!;W zqB@?j5grq=2MRH3VWB2PJyLRCKh1P5I)#-3b6Vzem<~gq{WRFQ*bsJj1X}GJrwM6m z>8z`eFqlG9aft})68pL-?bI@+7z0KVNE0A!qao}zglS0_B};DWP}b%+TREaViDA%P zvv@-?mKk2vLo=N~7)so261dSzAXARieaaBFxCDOyG0E2CXF`lS7I?o~niDyFqm!RC zj5kinm|}hMPQ!T6FmegT7(C^Ih_bG>-h(LJ{tB85`Lhmx2jlU~Lnu7!>O316ehKhz ziMv{G3)%D*hjF$HF7vS9)_xv1n#}Hn%X-;#feX-`<4!5Gi;@HA#Z4-QdlU^fgKPawJ_%lCB&{Pm`o4cUTK-PWu1^ z=HiTz)spTYdX>lMlu5+fbsDgq&-CUm1nJXoAA`$ZiJuw3rjxP>z@_l)g`3$7U?%Ny z%%ZFcBg^wZO)P&_lQoNBDfM}Henx;&i=)^Z0w+?pz*7fTK&e;2Lvs!Vl>R6@55cLd zaTA3UYT+l5BRVTTVTK63)854K-o8PY9e@qfH}Kv38Pae2W`Erw!V%MY-66uyQGY>o zRiRQAUNE>_{_3*d@CAw0I58@B9hE0;1Sm!Ng{ zBWM-TVQokW&1^Q|a14RrVv-yyJ;4OL6^J&tw7;8L_#`;r3g?K$%lN#{>hI4zf`ZY` zYDj=mee>0dw>Oc!X)&2aa- zxX(bPJx%=wQWsR;LFK<`Dq)UpdWUhJ@jtHnivR{b3IkpxCGfvt%ixmyMgdD~KM<;!tJ_crN1%5O0 zJv`bo-aWJ!HtdGF-axjGnp%G=)?WE{fW;si{=1UyX=ppI@MVw!Qyi2|#|siP{alEE z?FA~D`4a@P&B5tF`68Ob4xaSjba3*)Y1`ji5IDEAoq?x37#-AWr+A3k3H$w3aMCen zz$dDtf|FHJ;i#>r#lgJ7JDC-^U^aMd{^JDXF52LAGxreCbL8Ol!WVSU650An+Tg*= zGW0o-=<{SX_tXXt2@;@8qk}hRJ_Bkb+6>MpN-*_&M$k^VpjM|zX49d{B`ia`z47e& zWQPjfF#iICj%kTuOs*+1=zV{J6Z`kHB)0Y7VzeagVri^}dZwYJ4Oa4T$A+p1Kb)1# z`JlrK#mw|og&)aEzYY;7r$!qdz>XZ!Rrr`DL{kW@FsYAQPgVHQtn^orjD*A6MTZ7C zt5xC0vNHY;B;`4nSi_8Z_)D6p*ztlrt}$g!2REvPpU_~rik&pk;V)-J?uF1eiBMc-NN6?mbh;gPity%fbN^v^ zcyoUCpYVD(&D;ta-jW~Z+(kLt`bN7{xG6uz$fM4rTjs*s@}(f+j-J@NiwNOnjZZk< zC3+sIMU%2qNPN9zZxpP_wQ6#nPo^pRLAkXYmLLBEvR>>_CxmU+ z)H%-N#fET)mRg2(Hf8aIx91m5$HXxbWsxT)D`q*5jNFuQI;WPep_t9`6|)S1>$1W> z#w;omIy0k~rB^Fv>7!y+o>0v4NyV%@p_t{9idjCjVwOIwm=&C-m?dNsv%(^ZS^7N1 zECEk3OTbgi5};yMIH;J_9w=tD2Z~u?fnru8pqLc|6|)*c#VmbVF-xDPm?a>JS$a|w zvjknmEd3J{vqTuhtoCZfEd8!xmVQq$OTbsm67m(ZgtTIoK36fT{YEkC6MQXfoy*~) z>WP}5m?eUWS$S&3EWIZxW~Vb`iei?qx3`9XtC$r=qnM>XMKMdzSInkBo?@1`RK;v| zGTFAhnHL`=Tiffm*R?=gQ%kM4pQa+6AG+7%s&B62&YMb?bK-3{Rf3)owbsT4G40Rk z?CzFDvvo0cPAZ4$0uH&>3mjDT$oSwGZsJVpZ$9nT4q@vgPKG4+R4QvjfXfOq;#NcK zs}u(_8(8L=Bx{S7l|!=*SR-i^F#4LJaR%JQ*m^r0HIG?j}I7KY{xZoTSMW5Zp)sZkhs^wOMcycmX`~2{3RwJg38zzIf6! zU2(UmmSKwgsuh2)o2GpTxQCKhPPf2A+iN2BNqD{tCuwp81dpbs>EA&94fz>(Iwl#J za1wYuJZs@fuQ4&7SWb7kX?l(#pRnQ!QL9o;I}z|aN}|}S;kl9kvwAN)N8uz*u7F@M zzUN*!{TAdG$+$}d(V%Fp1UWO6UI65--+oW>f#?tQ$X7RziglSeRDl0G^DWlY#wum$aV zF;9&GSg{a^Rux#PK>rH~L)ewx2cv!H-g%Ayz3K~=#doC=8%$r6{EBoCnLe1b(qz^OegE}MZ8^N7S3u+gUjEktosW@wRY&} zrOWZ@c|blrcYt;TZaLzAP~u+>dmBsOR^T?NjTGD}vY`pUo4*_d=6?ylo6dcWymszV zxbo#D02{@PU}nP@MZ4Hw@Rh)qHW`2^m6rI5S^a{5OHF>(gYg*=AQvK?a)-e;0$={L z0k#9MM9Ap@WT^~`XVD5(K9VB8*p1_u8%OCoQpghh5ko4oPM1~;n{p#P!#Iqa)Msg| zcFSFgINub6b$B}BUN!(rfmVAV{kI|ex5BN;#|R0n^*zo^6pVdnNBNJUg=ppUz$Jm4qAsziRQt*Sh1a?9|)^228v^wmIz;B@L)1}yNIhI$hyXv8y+ zmg;#JV9>?t3#%;-Ht0Scul^x=GP<;iS=AeWqq9CSyZQy-=&Vm>RObUn7h7CV{Waj| zoYvgcz4Bh*ZWQ+l7K4bZHLrk$&Z)Mit?k^&!_E3P{XJH>It!Gb`ViXPo3=a$1unLe z$)fKYSfxsse)SyFG(L^%*``=%{}ssp|66GPBifC((7pnI@)p`j@)z2F43fXlPAGMu zoiG>Le}`wJmv_f(L%G*uvE7R0W}uG>N3-!8Welb8#P|c`djY47j!g)VHsdeA#sbI9 z*wk@1wP7hZrAC!~Tl73rH5mEGpLO`7kQ?t+R>301%DaJo0+-%z7&#coa4#tI1jC#u zhWVa);1f}|%4b$7Kw0q;W}*luzGlJ2MJ-{)t5{m+0I`F}PE1qcr?OCP26&U8 zs(?C;sP6-O25#EODD1Rb>C=eB4N_^`^Du1&i^M*(G0|j_jN}5uIP5KWJLzm(n#INz zRPRI9-n5r%-`Kt}UPJo^-mJS}Tm!58l!6aw=oiQo_CA63TZ$x1?Y%26YR51S%Fgo+UP(>RZNBV*X@Dt+paICyviAOl)dUUg%^M3pLY1ymr zmPP8_D|%{KllBkN()VJ?Ed{SH54V4)3Bl+%oAHm*N*GJj4_?C?b}-Slf1H-i(=v&O zUQP5acmwGtT1K89iq~eco9Eo${%Kk!&l47_STqnl6^Tnr*0wZv)bHp}$Aby`*6`eO zxn9^>xn&6JsrJXi>0gwjwpMAxCp01&X$Dww-_;($K+3+vu>eAJ)+OK?C%NhK_*Nr|e@Ix(!kQJ*uIjk+y1OKc<2EBW?bw!0-zPj{;GyvinR41 zUH_t?SDbxlVF`5SXJCXsG(ueiETy1Ee-U=>5>g;tlh^=8V8PA)R~__7Fujg9ig@_v zHU73>dK2s$ZNjPiuH79&65B5|>1ZmcVPt4Ph`-Xr`!&&f|4h&qH1*gdsu%j#n*L-^ zWr&(7aBcou@g`=7nkjJI%me{%D`q1gZ!6|&?Y+zp4VJt2@_F6)!H)vcag2B|#NXu}Sbg?(;uwjGk?WLOBzDd8} z=uyerjvL02Q>ALd|G`#bw;`VjmAj{dmz$ zd@~%C262SxKxu!=z()zAl)i1?V}z0G?-=+vVI=Jt13yO?9maPJ{8Ah+I?L}F7@Y+W z=r5l&h=d@}hkf55iUomw><0!>Aqe(mKQx$)8iQp1$Y5GE1_}MK!JMZtNa{}vW>{m8 z*q<8A0gXX&pEDRNwd(hPJ)683mda&o{#rPjJz8Ev|5$q`tkl?F59hLZCxAhXYTP#r zE`J^=M$%)hqHJ8*Thi}R#!17_iYiKSDea)rlpP{+D4NIK`P%0VCCB0g6Ngp+r@`UD+ zPiijZ3C$&+)LinZHJ9{h&86Tx%_SkDxfB-BT+-)hE(v&=O9Gzek^nWA!a>cY_CRx~ zJa* z+M{r#Pn!wcR}jO;_4>P2ja50TQqBF2p?x2;(rNeVRaG)lCx%5xYdIM!)V#Td_A?i+ z=C>Hse`r+TkJy@CdP$0mEXbh@i3~E{V`y_-yehpTg}uf_>nKYfO`)BeN~=_*KT4tP zH?*}Tsedpu>bDsET2<IP!r@9pA_f^9oY}JjB7j4jB6RpPu0d=AcR1Df`X-xsABk z@pfiovz)!MFHNV+kc|HA>t@CY=+VD@ec@>mT~G{gsgT)0X5XASO#H;HV|MD+v5-F* z2vjcl8A>B8WBVXR``mo%p2G^_92R9o^cIKu=8m?rR3g}IXH}yVqYb!v{Q?#2vGWP4 z=q3&KYB-8%z6E?(%#G-DM{*iF8f#%K%H45QSHEfdW>pb< zM^W|w7W<;I7c6*LQT!c9or>1t6gmdeJUE5xkGgvF@v7kEnr?%Rqw?79Wt8?Rctz3N zEHv(D6x+%x0m0O>JR~4mm$8T{|Rt>P{VrbA% zuGW+?6bAQC1mCIQ@~P7#6QJNVI$evR?YtCT?;pHYG7=a9aq$uO};7^E* z_MU;x;oZFQC-_l~&qE^n+{}KgDD#^v2GlI8A>2AuQZb%jWd*M*DqWAn#iHDc7@mq# z1#c~iP*7-cg{#n~i)$tD0sN+2iywy#k;ZCdD=s<%+?fK)E%}{f3ltyHC(S0(&5nv$ zGZr9hED$wJu$ABmxu9o1zKB*~(Z54Z;5dG8t}B(Q@~q-$1%{RxU{zL0j156$=mSl2 z(k?=XXvQE0uF5K%O}+%O{A*z26iqgLbC5N^lvJEmGpU&7etvP<5N)%6Ct9zvF0w`- z|LEs+SN?NE#Xsxt*Eo^dUDw~gMbKWlsA|a1LW;47{?2(!D6d3#0xk;~d*@W{q46 zpB`mh8TlyK^6A$B#tm5lz|@HW-^L_eZ-8q~Ow!Dh%EkViq+3U5N?n%aU}xbhT?jo= zmj$z+ogT*m_&^3r4^y5bl+iGC?X?hXA=HzjaNiX>>|&FjcS=@Sf!~Gf1Z0DwoK;kV zl3Wd!g?;pU7+zVm66dFYJVF9qUyZL5JTFt230Jty$bK)f_Zdi?SnAU+Gi0fqg9iBM ziA8ZjR-m>{$;U#;#}V_@+~?)vcFrRuxeMnqAJ-vCZ-YzdH)3HW--s2(80W!dQC%&} zi)Jw3v%npPD}36>{VdW&9Y6A5RnEXDY>O&<(a@N`>oqNsVqR}jtx$60XGyA8*qpiJ*Gz&8MtTx#E!g~Sxr5ev6$D%y@51W)MVVPiQa!uxoUDK!v`n5m`V$Llydp2D62(LQiTi2Vj41 zr=;$y8kGms(4N5|75W#AmHzM*mRbf_v7 zdMY>mD+DVC0#V_UtU^!c#(5NJorRX!y@A98(c}wj-q;LdSC>tf`1O_A!x^ zzX+d}aFh)0u^Fzwxs{k5Iwddr_h50hb$0E>Ar%!`lxHf@J)L4^X~^$lO|s)@7=DJ9 z+Cn0h)|`DB@v&)SgJIX z<>ov!^`T{Xkt!tK%^8+rYkWf?*pRb3FZ(nIiLa-mJ{_%+b3Q6`zDd3-cv9fd1$mJ; zf<-A{ADmRkG%v0eS%Sx$Sf4(E-tMK)NAt3uzyJwlDX+uF+>+eZdH&D{j`3X3GjfL6 zcpthoFU~jK#_1&7={kw{aZL=EBT2GVAoK~7V1sOQEi(6XYojNh)byyKZ^x|CSfq0~ zZqpob$7~*G>6J;foNrR0+ch;IXUkf8b)=ut$ZV$(?|6@#Dhqu&FS82m35Ue=uFaZ$ zELRQmpkoc)q1lTam`3SI!GA{M%TP2ZiWVFJ#U6ygUF~vhhF2z^)dg0r%j9HScWSPM zT9%~ClWj>){Ofx4R_X<6r zi48_Jl%-u47(Jj0J*aDFODeGzHX(4ybLb12*6Jr}*bDbXP1}(|bAvskN#{9DL!I3{ zBYJry^sr9$Zto>;+tXPy*v*r4$mb)P+V8M|*7f23RZPG4qub9b*o`-8*nRa*e3wFx z=0*6@xt-dS9K}(L>BG_2;6q=VH}98tCDYB3!Dc8x>TBwt_rePswL;J4WgmnP0;VdNk*$HPMLpTdbq}Ls}D|7By$Pms#PJ>2FpM?zJEF@3d zo3oH1oP~S}u|{>rhy#$6<@U$!DaQ~FKoUR20mu*zK$3Kl1CSvcfF$`O2OvW@07>%H z2OvW@0LhQw)CV9#H~>lN9Q}2`p+`z8^U8KoIfQWNaS4hc9A(*}lEcV;KpsOEjYVhSKp4sF{mlqV8^wtAp6G|E1!c2m;sU%lOzwN@<0LiclY=09O)d{ zpX4r0tiK$yz6|x~u?O|K)WgUj|E$BrW@C5!v2qT3-&dm44RAB6kbCQ~7!9}QUu_TDB$see;{o+b07$AhDG)#^4VMs+bFuTk+HTjYM@t&v4U&B zw;C?5AA6+TG{s)Rx`6f7*!f6N{&gVCBx2V4;hXho{@jP30*3gO$pto)Aw-^~xd{k& zA-Nxc_%FZ}GSr{pc^Qs>v!??Q{DLkA%k^y1L}h&|qi8J{W|tx^xcsF63OD1Y9#9Qj zVLO0#!E-f%B!C~n^L;qh(tqN2da`k}d1#Qk$2oRt9ITZKx5woBrK~%w11N$DlZUI^ zhz~D-QYm}5!yH1qV=l`+Qie+qAzIhRXQe)JNA`5OTz95t*;t|kS07xC6#Y>t`h$Sq z1t&%9Mi$}b9_yaiH=u6Qg+|0wMO@<+@iB&Qin`J#bRQzk}!B;P@v+++`$K zu4j!V;$(*|;+(n2FPvY*YXPl>lOjG39$ruHMzg88~Nrb~gqRHb0KrO=vM3IzO8_zaSDJJZRA_B=el zkaS8?8*oceYrPp))$haQ+SWTPz8D8gYA^6o`z;&@$?j>!>792Jyb5f_JbVq{bPg_0 zc@wXYH*pJSb#S`Quar8!9`LoqHHDD5s}fsKF1+F8D4gWpjW&9O4A+?46PPOZhfE^X zbL4j000BSubLOME;UxEG!?OcU{=7~J^<_#xt4ge4i(Sn|BYm~uw+`Qo10XuPBPrP( zmF&J9VlRc0Y`8%~TsOD&m~0T3DjTP}*%(gE1_3`Cw?Xu+aFUJZ;Q0yM$+CfOfxBJT z+9}m}?0((&_IY_Zj<|B9Bv^`N)So7O;Ge6H$6F_?QhyI-$|=himTYf_F-W~gol}i z>|w)G%5Tz*kaG>3F0%TR2GJl5!dZwp9Gq_do2C6%0A50zwEr#A{w2(#LjK(M!7t&95zBr!Dd8jV+yaNc;tC_v}0}vPU zOE5#e)k~#>^oO`YN@j+XNTrkr1Y?@hhfO0rDZOZ(e3h)PdBXE%QTV)JEI^oHvo&)@ zCW=YNF-zi@H;fUqOD>q15kr3GGlA|};36pkR&hIWS#%vpUq!Jz!E)l4J$wo#&2W>x z@VA?#L@1>ZHqVlP_24@dZYGg_xxXK%8{u@zhUY0brh|>@xDnLirGvFl#IO2a!1gkn zwDpxpXce5a@DX_W3Gh?@LwLSVfGyl!tkgdMsB&DE#6ytg5#E?Z%pmWIcAsIKu4W6c z)qg-G7`6UZhJN3SJMK2m?RcqffcqX_y93Xn-3L_~)PhD|P`RoYwxyOWsVH7NFg8Be zvwm04V9!Wj7eHPqx_)2v%Ec>}7cbsbytt*xcfCBY){O}{mce)8)}rFYy@NwMm)do~ zVsp+Pdt>8EmMl&E#{ti!U|zhdZ)~xSb*T<+9#yYvJ)IIpdv>3Lq$O7_Ukq*DVi}t* zt2#$ZQTA@^^Z^lMMD74$i_wVbg7mI%Fc8pA)^8rxx| zsCEl>@-aZzXK26{!es5X)?^K=ZER|*X$BK^fJa`NgA?@E=4fwWBHLAL5?f8v_LQhp znoq8&t=+zDdlPPBOSWw9*o-Z(o3X(UA{?KmwXLP8W%KrWYKCrB!A5SeF^t={~l# zrY_mOh4a;h?ag8&No7x@w$*oRZ)GkkPI%l5Y9Y1>gxO^w?cv4zwpp`<&`#K!$( zYg>IoJt~)Vob4G2*$70|9``E;xWC2KZsR|P(*hWlGt?n&6nO4iiXwW&g%+TPT1Cf0wp zH{oX+F4pF)d9zPKu2w}pMT-S{vZWPGm$GZ6Jrw&qrdqIt6lH>1DDg>nBWju&H#cLW zDnoILE6WWHEa|qQb~VT6XK}RGY-v!X6LGao9d)W~B5qTMn(Je9LK|wDAOYQiq;%7^ zMl~;mrS7!txMpg5Gn#jkn(q@@(A6|H@Z{GSsEqbzoU!&^ZBqaZ=w#|)Vc5gh?`Y+_ zT(hZNE%dQW|CUCnw1!3$#VHd>?J1;16G;sXZT0o7uw$GOLr1c@Vp;VnCJa4Fb4R;c z;*&R{?X~HCuszw%a>Hxcq?Y;|L~d_(%fG1w4Umh7+t6AoPR7-aWgYYkhOKfUTWd}2 zR@9`aZM1#NY!I-~t zY^zDuZmB^ns11|JRV!AekWWn|?*Q#&tzzSAFivb3H79VUd`dS>AR?(=E2*78VM^SV zR_9Ype|~0T#}@Wus@^BnG@V&_|)PfTD?j&_ze2pW;fGR->f$Kg!V0s z4IPzgi;p?Go}JK+4(>|OaW&VeMxTy8YFi7c#=Oq#Jk@DFxuFJK3BLu6JJePmozl%G z&%~b5de!6;r3>6vnLMMhCW&^x&8IZCuwQDeX>6;(hfg*86n8Mf;f@|ww4@MC8c&yg zMYWzt+0v+oH>dj~lOYzLYV*;$0;w)H-I|Qv+pT$z@VO)TOrLDVL@3a@Mq|)qCN!b5Zqjnf{CUF>1Rrl^a?70GfQ3-VHVd}PGCve90cxCKM==ypuAE`*Cg z8!+L@Mtf;yFYv&oUfF0@2v&l924sgDRxA~#h``EN+J`7AaKP;3iC;zZDi=NMZt%&+ zk}GV2{I8qabqx*n_U&3qlWI$Qb|*)7!wk?etxotKn(rMmbKM1)wexR1RwH5R){hKR z#^hM{05)N0+j4RZvFI(-)%N+(a|0;Q-94Q+wbs9cfC|WlV0%EIXkdJhx4|d7_g2Am zj`UKHSg3>DBxyQ>4sUBqq%!t)W0S|u^P$2_4vgcZy0V9aDQ_~#J z^~@1R-Svy;#Iqn_eKO*@nQ3@0!+KL2EGstxirs>rVDvuxrXlCLlP>PUeK;zbdeFte zm<^{r3#|kb8jOAi0UUjvFw|=0{hVORokM&H!!;c(+f?uyi9;a9-wljaR2T~!G2LW3 z1+BzlSO!aWyPDQJ-jDlh#)bxTe_$1-&jU3UIPX3BM1lm^>Jy`DYy_cG@sDhFKrTIx0ncS{ z`3yf(Ar*H3x(#k-0>BIK{E|QcfXqs?F}Unp6Y0gs)8&W|yWL}6E15y-X=kXMpHI%& z7B6Qi=N3a`sYtfH5>c~w@ZlJwS|168kf^*n0AG%1-v(E31VF(J_{k^B%m?B7Gw{EM zoB1Swx+k} zeOeV1cw6Wr6c|mz**oyG!sYz~TnFKK7lGdccmSTy!R0f^%pCCk4bUraSl@0o@~%ey zv(Gh6?jPgsjCYD`-sF8^2i4Wz(>XXk zJgJX5D@18-6a5)$5P#NTzJOj2^H%9$YL~-$DV+Dt?vmc+(?ER~Zu&vA+UJpC)6HC* z!EUB%1$1d}+0UDPfmQfDa80bj!lkCwd=q4qy~{AO*<>IkV4k|!>@$pPHj6Z4O0)T+ zp|V}nc~q7CH-l#dpOb>mHi=-5b+N|B0>`{|QE14i?P9iH)Ja%<=AG`zUf7tCkBzc6 z>WZYmBHjCLtYEPeN$Nrwr_{9f71$)73w{+~ z&{_M@gExy$6;Dc*vC_CO-5o_=E%nTr-h@IZ5i5-gm#{GoqqcU#Wg-mjdg{ixsznaJ zMS^M#q^V5P zADjh$a0YI4fh;`AQRDXB3Y_>ZoMpoO2H^@<8sN_Wve%{n^MEj~Yhi=I2Qm?eb^W2KI2!|Gs@lxDqT1;GIQP^ zP>XbtFV33xJf3vX@q&40fPpSLI;(6Wo^;`92yh8JbkVB9d8gq?7n@#KwgOMO@Ql#R zvV3^x!tJ41^UjBdE^T_@yfBgUXU{BqFP?Pa&B20s-$kj)b5ez_sG?qqLH5BbKO7aW|&W zj$9?mH4&cDjvVFX`JpD;k^2Yw`C?cvIE-XQCR>qv5Mje9R^&=pec==oI4B6*uSdk;VDV$0b`kvmODfwU8? z$T8@VVA=^*;kvs0m#R~)rbi`$Zd6FW<0v!b; z1UbP19eK08@Ob55fsVKww;|I+I>HH+onnE`j~B+> zV1Z8R{Rq>cEzk*klrTyO7U%>%Mi{w<1v-I`6GqZtfllD(2x|*;0>2aktS!(9jE)8f zZGlb@2|;KJbb=@rgtkB@hzda%3v`0ns4?0ConTru1_^})I>DT$F-R&b&;^q9B{dLApi<8ZXZ-ViIxTja2ErsL>-X0t4z zYh;#2hA{M?0#Dh~H6k2t5rsgu1|#fNy}Fp8GZ2;D)x+j!Yyvd|3p>irb&8p!JT;wJ zABR_p*_k?{%Fc5_N5L3xovIv2F1Q;q0#RYAGnVnNzsGB5h0eV1fFp#Xo9(UKLY6{o zwTqp!XE5J$yXaOZD@xpokZPG@a;2-KR96dfgYAnuajGBJm^O^?%#B^98S~JE^WLUL z41DHlRIxj7bjQi_oQwffZh5$=b8y!<4$x>bFC)sH@8t2jR}nTC-FC|zhu^?zlq_$y z*sssP+6$doHy~#iAa)H68#74uDY}lggn4~DdbLFwZbAu8Q2_RAXZ|0M|3H*w^R`XN)-5&d^;O2op?w0S(oh0!B)H5FmZV?} zQUx`Nn-E$WsNk>NszMs4wE%6{$+R6i6T%va?H=4)=(U`PMzbL`Hgm_Gyvleby<%$X z=^VxFQ~E4xQ=kUR0v;{3Wb}er1I}rknK%yx5{U8!?}9z}$zTCx&EW>X)6W#<*1_x^y6qmuYNM168z@Z?x z+rU)h=E_W=aD`5N^au#EyLz!(d~`noTl%0hIGV{vN9N8GnktyqLOPc+2k88cfeJlq2S%=Td!V;OsRL1;g;($;LPNT71 zV%NBwb++!Y9G2fc(1zjWOvhKj`ka-=9y4(0z}TEcM10dHP zZ*Yv3ve2;dCYH~Yb-$Ivd%tjd%V^oRpU_Eju+Z}tWM(cF&>%vUReo6$@<2ERsRhBR zn9H@aafL^@Jz9-Ng*}>wN3{hDh#O3Zdd+RW4Pj2V_h7$!r=iS+EaFC^bD{SbLrIjo zg;oc{$YVWzOSf*ftYfCwVCPZ(tizA6*wFM9$jkYv{1gT9J-7wmF}zG>CE^f+jeecr zWK362x2_>^%0ou%*C33=Nz;*jN-%;&y(VEEtgQ#u%wQ+mx>hG=*n~qNne0-6&hE9= zN+##;kpD7V*#X1*mKm5wro^-83PY%ZlttI1q(m)ti#oL|lC8K8uct~``*a%Im9KU$ z4Llg3)3DE~W*VSmP)WEYx=1dvrn5*61M>m6rBWmpTWKtk$ALHoSC)B9H>O&o>Ou%a zv4rBawVUUlrqHTztORv-mVF4{yVZu(tw`%MHafH~zpdyZRMy#OB45&i@AT5k5-FjE zU7E?+)+tQ$t4PFO;q<$6j{EK$87m#YP64*3bFFL+)A+XN_vx+f`*dJW*;Z4Id`V_Q zK5O;Rfjz3M&k$Nb*d~M>l)$`<@+~PQ8=mEXLr2EcqM?+^Nof(h=_IA)H|nZ5&t&Z_ zUe=ys)+Du!)-q;mHIAsQfSZ4p;br-{Wm|kg*{aIq=Gs~qE$QjPZCG92ZUr1uWY4|v zQC*g^G4SS}b@+-rOl{o~dURnq3g{h(ZWyj=Y}J(nN1e*pao+{$6|wnVJZS4?TG+VPk!HZ(8!yDS$n^t>cLaZ2$|k>_so{VM_G#erCAlr*f^Fl*qCw(*XG*G-*y~&DhK9 z_W&OaRkkCAY42nvFV|#U^j5>lgreD+FDnjgc8IC)etp39Rx2Ijj0#geRD1HzI{Xy~ zUxt_Z)=G{((EX-L;6NG|A!`Y@h=gJz0SYqtvku4dwS-$vkigS}^@CmgL!&sx)G$71 z3>M#Dv07g;omZ(R=oSd78b(@fkdMS2sPo(4mcxn(ue7^q2IqFa0_J(R6`W^S?{zr) zvk&c_Z<}=K@1}f7P^X};X(u0J7LC|Y+4 z(r)?(nQ>TGNyd&FQGOYpGEFNsuKL+A8jLl8nglA8= z3C}*!pj5pJve@Dya zwVLq62Z>zw+Ph`+r{8@<&L!;6>u@loz1v6#fSs2vu_OR0v=*WD*zF_ zVZnfSfLD}6TtqV_eo+@_g#NsL2=`AJZo<3!aC31Aj4wJ&Zy3aOyh$V2wY^tubWtsP z4CVl=ShqH+JiFEUBk~*@l(gBWhfiTW#$aR(_g1wD6a>_XZMf|MMPnmaLE{ltWp@ZB z9vdC!ecjjx>c(ep7fK?Abv4?NQ}!8x$W|f7YM&WkK~Hg#bCNPQ7~O#61f$O*O=%aw zyB=RC=S4u+<(W*fM4&Y#Q6OMtor z;6AvF-eGL?SePzF5jbKjXl6*6Sf@l6gB2g03~Y0S6^KQVDmIow-P5qmVX@@v0m%3q zTq0^Mv402d%qC?mNibX{(zm3L=~L5Sy?@D^Zvy#e@cs@iYomE_n9}KbsxPhdA-be@mLKOs&CKf;`I%*(|L_!i%01*KTcAW%KQG;T~j(v1=#0qvC zdq=TXY%_N6`>wV2IVXVkpMRMD@!sd&^E_X&zOug6+qYLyYquE*+|1>~B!O##x&+Lp z5e-=KC!seXSc{^>zN!;>BVYXCok+vp^dR-R2e}ye#NREINS$*Je`3Q4?~T}Y9K340bwo(2S5ve^0@ z((FQt1N0Y%2o`5Df~pHC&Uu!~_QPf=$j9$%BF(7op$lC-3NhP$Z^O@ zm+%+}2&?pc&keX#9ts)bt3=Fq%@EmJhhlbP>Kl{5 z$=ViFpoamTXH3q)t$tp7<&ud>OPTtfMcyUwkrW%LuomAtMwq(%kqx@jZUYj5wf2Yz ztap1BMaaWtWrP~6TJWzJPtl;wwV<*QY=3g(5%^DVm81z9nqA^Ae`w`Xvsve@-My%U zYla}tst>~9bDV=W-%!-65b8W3o~II0x;aVq<3-s>mV$6zl-+8*NM$E^ep1*%EL;j<~xXo=Sdt43t%VW9AM;$I7yWQPZ24StsWgeK>ZBojDa|i6x z65~+uJ)B_Mrzi4m5#ed%OON*HX~bM!p3i}KwGCTe@zL2nBa)9gxdH*7x4pijQrKr2 z0w(z&3=;NPnvjj76~61yKmztDaYNbEmJ0jSxJ%&M-wgd{dp9w(2#VO}xET#S#6>bq zvw=o^2)ablPmL()GaczD$4{s6(^=nw$@9=GO5h;^<0;0} z5+PU0XvSzzo9+c>AVmITFJD=Yh1ZpG&^Y+@OaK)S+krT&lv8-m;9TG{0RbLCfvLpH zoVf;ss{nBUT*hWs*cjcqpym{rN{#W&m`bmfDi=h;QrHMimF_4ote)wK^Gqa~fOE%k z2mZoPG#woe3!7w*NQK<=v||yiTGXJ!0jXS|&G568eE{?YlJE=`?BX+GNxT)Gldc7% zqI_m5v6=W>Qw(5MR(BkS6IqAFyo-E@#%$oH!?2M=)w06CHb@Q9+RO3mLa@ay6hr}@>K9KW|F=C)VOvnXN-e|OC^7!%e z1zG@`v|u`vCwZei_^^FDIQP#M;&wnkGWtIZ%BVT8kpu8Od{7LE)_8S`dGvaY%`NR& z6Tq1Vp`$67`7FFWXrgM1Zpz*3I)QTUf^#lpP6hNMqyOiid=2a~K>weBjGc=uw*aH3 z-snLNM?lYCT#q_>j)71OpdT4Z&ojWb0+gQg!;$j<=%lHU@aV z>uCC9MkO7AIWa)XeG!z~M7d?&QysZckQqU_TxR@MQ>apGr(BHm-r@*WL+B_a$Vjg? z^})u~y%5Zi-tV0_p9!Ip0R6~O5&sO>2LP32BmRU|2tbI;vPDLb6!WMkTY3j#&zQ=y zqak%9K;_xVaGXeQc?^ED@il^a@RPaHyO91^_BTT88h{G>Cpi8I(3zG`&$g+hGUy7b z$(P=H9W|qmgq0nj)Z7NgjYOFDzryh|K;$z8lZ-km=!#QuLad6V_h%+@;XqTck@-hz-nxE?HECTAQ^NtTqTW1NxDZa~UW(H{uUGPRGAfjYqfGMvn(e zdm%kGgLNZ3T@T2b59B#Go&|_}7V^<8PNi{N$<&CSER$Xy98@*vH+cAko>a~FORM9F zXCGyf^giwg<{u3ifGC)3=0J}kl)_mCc@D@IkmcC40`&6?eFx|s)H2dnf*xlY{Xaox z^8wv&3p4a`NILrJ*t7oh5h(f0Ur9gl$ zzamgq&-N7_hKCPqg{PQ?L;hd)z<=8C8EGC@Q;~LsMWs_kx=IxKP19mju-BE6eWT)X zniK>IwSYc-W}@m;TSg^x{)`drf`?X93kQH3b_%WV3PT?bdUv>1ch4Iu*1DLZJQl;xW)3Y|fLex3;TgYwfJ7;eARTG@-^B7O<7Wc=9AW&dh+=*$W-Ren6egIeJ_|BSjZ7D~GgOTmYPe0{ zUSPN@6&Gc~1tj(N-m;iYG6q1`D$&RpiDHLsz zDg+e)C=%8I;IeKna#37t3U|`VnOpVEiL^X5`>j%kXsq$xGl{2 z?_Qcxb~dC5t~n{?xOPHK%bow$3(=rqc3QVcIRC9@qRajUd4ly+RM|=RPq6;3WEXWc zQ7axf|ANX#BD?5%<*Nc|p%9de6kKFU8x^7eL zm!J;u_w-og-T&QovfzapA&XgG!`LncG?&UlA>-U!P3)Q>vUf3x*-f)oTmlVg(=e(} z26(VjEg?D*6szYL57>zjuOI`ho+eLIi(W~oi#TMGT9d%K>%GQgHZ}UT8{{M)es25n z(^__npVl%zhmf8o{DZX&e{n_^e@8$ECgX3QdJ|wdi`a_)1XpRAI8;@~+R{I`Iv&?n zzZdl}aIBtE)vDTvp%&lWo%(3M%KZJ^`&<6Si)dNgh$GFlZK-iAzWn0>!IP!pc%;CcNUC231@A6eSzpyBcs;lCb(KLcXWEb5UD^ zs>L`5!T^hfmoI<`D>sc_0(_=Gg!Fk&MdWtPUD->jpW*7Z;LAK4ggK~phXVYI)U5}; z!6dE)p&Jmf+7!_m5F_>1?@0ai8y%dFdEoNxK-!~J;6nek&b8vipKXrB31xq59mUmR z3tRW9l6IRMSdUclw{m=_lKxNBPuuqfLizVTPPxMBrwe7{cIqcP8DOS<7O=LsgY}b4 zTr$Wmk@b_@RG_AQ63v9yQ2it&8{UKUlZ1SCpZZCi#lqv%&rYBoUh0AOiD6}rF8USm z@ierxcCgQHC?M)>Foh*#gqtdN&3W0Ii8|#&cUV6k7Ql!kqHm*?J`M0WH-< zJR#Ntd`lYZc?e8K45rEx=EIT$@FQd)qat!4iiJ6%b+jSUS;2a3>?;{I|}xVxt>y z97_?+e`_^~4b5F0jl%r1P6A045GTZ{LAMI)bSouhC*~al_xt6seJ9MWxGeDy0(FU~ za%78~eDJL72_r{_uE^(A`2Wg1`RM$|ENJP%zV4_Aqbi&UZUryE5A8TxJc2jjhY_#^ z4cpk%u+dqMH-Pu5Ne(i3iCMn--L>EUZ<7C^CK+s^v3qW!rtpOHOE$AzOG5Tu4{ET9 z`s0aK)xbar(2XuKVlZgfXb~~i6yqk~p|M46pVAE^YENxJBtYDyZhiX$YjHFCs=cbj z^GxcU$j5$qL=WsW))yJ-NGY%ysR$``5L{-M=oq zV#7bBf~U1T`Xl}>Gi}$NcK^C|-TjLzMt8|eA+w`bA|bnGjO=|JCGX?hS!U<1fy9tn zSVaLoOmr7?Vy8^@KWWsTbl$5dH1- zooZ8iZh!%=0l6CxvCb6Dvrupe0DYGngjq3W43X+INu)fSH8c_y1N=W+L_HejqpvhQ z_7z69r6aUxKR(D1Ts6^R6+&@|f(k_Rj~lq1^4RODz0KqX<{|3WG;xnr`v)-hRJCaz za5+_584JRy_Pg-p`dxFx-qd9k?B3R8op(Z3MzwsOCI5bOk@1rV&WLjnxpVUQjKMC>$qz61(5)<%eNtg#)eu}&SF zVJa-TR*x?YzN6Am{|Gkfpq0fs_|_j)2g6T7EZ7U1gXqwc^28in`3{+c$`@vybhGCQ zTDLxf&|WX{?Dwf9tYdWfs8{cq|M!Mvb2!4TN?Cw%!q(*Vy| zp4m2X8Yd;HXY#Ct+I!Q7(1N>2a1$=DkZfhb(-o+k6CBkDjp%SaW`=fK-v;fi4&Dn)F_D`bYQ1Sjwz z(wuF*C?y|_kHbbL)cTiX95E5MP*^WZon3J_8?vMh7azSW{mk2_IJH3vXdKZ%oMEOA zON_$@v{$5$XC+b*@n;Z{ip&%cRAjJ6j3HaE$rQz8HqHYx0R@16iI~YWE#R)U>iq|g z7gn*AL@vnTv}}jg)PfseL$bxBM~_0{{{n{!FIm_d;ZAC3T3p|u4~rCG-wdjVz1^pc zxY%t5lLAhuU~5&hbTb{@OLZr4N(K=8WN$+vcbg3wM3Kzn5NY26>=i-Jn!+7((XzM$ zwCYA7{sc%-XH}wQC4F5C!UZJiePPjZpJq^B1m!tEs*Y2%oZ1d5juWTNuYtl?o%?pr zeJeoVnIw=R88y3S^NRHO9bGk~#FH|j38ex^uc<-w0@`QBLQJgzAPy!``Aukse*lP8 zBnIgHEf5~jLBr&( zDImS3Lun`@v8^3uU^wFeWhmT^1 z0MhI9KD{`d+~(sEA|M?}h?CKjychPHQvvDqm87Y(7OcbzvnxnLoZ@66<*bu%h4_i2 zVS+U%2=UJOiiQdiFICg5U55>xfOO0fK+B}yn->XjB_O?J z8EM(1wfADz1^_hWSrumMr9zAcq+`Ae!4eA2-hl0JfVB3-y5QqwIq7!K))kdH zJ0u{T%{Wy?llCj{A4$U}pi~*h-g()r*gyhEN6x3pM3N4?13fYzeLl3M$%v)!Ip!`@ zMF3hCX|bdocQ=go0ML-&G?_>uUa=L=0MIr`OD8S%9^AyCX~=^#*`LG%@5R-30JKZe z3P`)^K761Dps_V~;!>M5SxR!o->@a^eqF*O4kpp=d4;9Pt|m>6AmywFkP!g3U_7wi z+}6q|l+2Vqj$Tolk#@z!3pHq8S-M=`2YCx1Q{6?3)_9<_<{qbe-At^zuu0Ok=B+S< zI^5Ktw|MqQt7n;^s*SH;3AsvI7p^kYrWSl8(HnE`wyp2Zada-m9@)-Ars2LO%X-5R zZtPlsV!GY7wmNcM4X7Hmmi17N@rXKrY!2AgU(Pg?I(*MVbTEF)otD*do*`ozK))%r zwRDXkHMP`MqgoBIt(LPjDQg9C?ADbUL5CQHs{V^i{YNCW&Ycfd@Qm8E8lRTfK%WsZ{yzFV5v&^_b3J{MlYKTQF9CZ2fGR}4H=9^Vv5kIxGDi9P z2@*fhAF0Y;!Nb_S2;eVk41Aum+KI1-hR;K7Uw_EUthuOX< zj^IWJT@w_HJj>C@eLu3n_8sd8?tswSLBVt*D8(i%n02uuxbGuq9{`;*rRO>tw^MM7 z6_4E@I%k$bXfdEaIVy$gfn7qcBI~_m>~c3{jgc${es@?2WsvM=r3kSVQn=$s^!pxi zWshRK1N5g@b`;nRz-j>5$w01vqZeQ@<0VruEHRE+ZQDPKTA6Dpk733G5V>EOna0Kp zf*83IKyMABS8BSer+bA*LN-m7l1Snhrm&Ibu&C{~)$?g~*#{_(kA04ec-J5Y1DS4oFAu=Ct7jduC->`c z;pCHbP!#Sm!YcwIZ=j(!fqu58-7D6&|KMa>?GGoonNiZ}gFbkY6Ht%i2Qcb{Ny{DSwkU#6v{uG** zDi$_Yt6n@<6sFI5Wd(Z_ch4!R&Anv&v6Fj1`9s~eP2JzMv!h2@iND3}o>lM;*B~w~ zMBXdiq007#4qkO&s+2x3Ot!us!2L(LWq}LfPz4DPa zLPsHHyDphSXAve^9;v**53L`??Tb0zJ5Mc?BqLt}@$<4MU80ug=M`{;UZPj#=MCb* zyhI0b-WX2Y!Qpisa;-9blyLR4RxKJ!)Z%Sz)(k|j6jSpH)NH-9c78i=OuA6TqEs*Y zE{tU=N_hZGtG+Nv5o+q1uo7FRtSqINgsxN3EX9IjUF`eFiBhcn)~N-4=|W6E*Qs@R zDZZr1b!m#vb;!CbItSpy&$q6F&1QQPXqKef9;aF|vGT4BP2h(^)tVP!u zR@D+@PD>^;r-Y0=mG?+`n@W1=QY5)eC0PuruEr9my`EQMD)W^*%ro62zf5H}Go00& z8GcwAbrwE>$s>T7Ia_I546IX8pn0~^dVXYRQ7?>c*x)tpD1sw^K^yqs?_mA?{h;DU;bK1mv1q!{k0P za_svk_mNCtyDVZg$8G(pK8niQK-z4AJsS<5KiSJEb-!o8It?jk1@wCj$eO2dJ0GCm zhd_RS<14`6Z-K!0HrPTZVf7Rbj#mE%WvAhP!!ziw0NHs!5}t)=fJh~fVcW1`0A!B^ z^7(VvJ1(a`k_lf(R6%*#dYH%3Mc z=LeZw<9PgZn4;x|&eXjhMqg{_YWNSMZw!-9(lwib<=q!1Umiw(IZS?9kj^&J0be`A zxV1s9$n%=sf}tNDMlUyX=IwbQdd1{0dDXF^V25Ap!`WMaYevq9z6U(q#V2DmVz%G;q#^gJ2D?0t^6e%JmI^1g{vm1Tq9`EId602f>;Iq@N$v7+_5Raw4b% zYdnyn;2>Bdf$W5XU{xWFF31zCeSo|UD#4m!#f~fim0%qVKevHOunvJ(9H<0q6p-nl z609LsjM>$ScWM5ZFY)FpXxE~F|Nilk?6taWoo(g-Z_Pv6{`<#E_I&Ni9yVP6dtW$h zef=B0a85ux!@tn}&bP7yQC{kU)-RBE2R~>L|tq9sHn0G~jkV zXc0?v>knEsCZ(zPDt-}Y-X{FvCN$sMPz{SRL*@r9GV%O1?oQUDf3AN92BTfGTlSI~ z2{UVMGF?xgH+}>ViP1VYhm@?Bp&t-cD`b8IDHj7fTT%1`v%tqVOngO%NQJj2ith}Bbrz%_=u+He*(a;E{a z(xU>1+ZQ=WU=I=hdp(3p#0`NAfnAmOHU|w{tRDIYHOWQuI~yx%>)RSJ)5a})o&VYc zZ+kxZwaH}A5)9=071tt-|EZ?=d)Ko3OYL(nFJ!?J_VqaGh^zSq+aCD^s+R{9bg-=s zN_tQ+huB5+pnBVctg>@>?9qFyki+Z@Ma4I@;dUIiu?g&TQ(pv|Q7yl;)ZHL*3~LZ3 z&|g}4j*_n|?Xv?-<7<6z)6Wlyb(q7a+j7I@y3#6j9gR&5SmfPkw5>MUZnSc#%|jJ8 zS|#O-lfK5|W=q9|k-f!=rx4qHJx}MzX02uCr8Cu= zzsM?MiWk0t4?BRU`ABc86-OVqlzU}Vjl$E2TRr2V5lWj*-mEv#3jm^#S8Y~*#w6)2 zpal3i){14UPX>A%NsILNwsxH#3Fy8e0sfX{xJ6T*Zppv~9ce$7rdXR^X2~gr5_5Js zu9r4xa*J*lMr4=ed5R7BO0dp=p4ET=IdM0G5>FqeU8WV9>MX3)GDXQh2-yb!2^9SV zj`slgsc`(p7d}+zaFT~2<;vg8?XV&N0_23kx!d?iqYnIn;hec$h|>WooZI2J34mW> zh4Ha98MmTCI}R)}t3~ptFh=mqF>)P7d)B|DkWKv%8hj$nIRh)REzhR)I;A5a!=LOu z%A?CWTUVp3cc1~l^3JwKvZ$JYHUe0nxw=3%0lk7G6lkt4(E4}r#T&o^&C?a{h#h#R z7!VVW+;c*9i|sJn$wJF>gd4e43fA?Ixdsp*C$0*Vc=|Zalw&Zr9+xTUluw|@2k@{R zfM3l05c$-k%o5owjhU9`ZR&p!tl95jW(3HfR!7by20_mHReDq$t_J^dK!DUx9JZJ^ z1Zzg0IJ^T7uLJnY9FLF&8F3kO&Cy&TD=d2;vO4xKh#iVWVqeYK7b?Q(5fqe*%*{KsECxq-o~ex|u&A zRWrxC7b{udPfB%G-Srt-->0Ypuns*b{cO}vfV345-Hfj5Dd`;w+Bd*I*EB@xDH%!P z+|SWu01!m9o{|9)-vi+dfPYa7ZVkeEAHz(;bvk*PhEKAwmh3h()h350E3CO=~ z(({xT8PE1V`wM(U0|dwkwab04)hc0ASHEDpJQuQO15~@b8;)B6_^EJuO*p7=s2=h~ z=^2XYw+g5Km#A$3Jiitm&OOFQur@jU%pAzh0;q6S!Lba$aPCEr>E z0#sxiIb3gqfh-uAG2da?4G54Lij2#&<}w{pXqdblvg-jVGOxq&GJwDSHAvbxD3PB^ z`&>q$3xuS9Kok%lCt(#RqkxS7n9_J9n3s+#SpF}g{HcefF%LeD2B^|l4adn;ky#AZ zAQM&GP-R>}4Zld+9R*LLA$C1HY^0~e4^0K&fZh*mHK5~dio~zO7-JNJ->nsU6WC=Y zs+^O~GVGPmca8~`blktH?jKnJ`Xz=wI)G{(l;?dXAa{zia$mh0r+b;QclH%4`OpI=u(3SbD}?q5Frm!7+#tiNs!>Vwum;F0w0@RisyZk1_^C>Q5lWay+S@fwCQt-HrpJ?HK%u z_)#KEPA7G~haGWaDXsgBdNnecD`Kuy=~f@2dAPS+wZBSEKw-jK7uSywx;o0kA;yR-|D zc}m625V{5sAV=wmm$-Nyp!C$iaU=lcv(l6~8?-JT*oyV+4%%hRh+(n{egTE=0aO)ibxTnXP*w0FI6ff4Dj4mNA`+mg z;BYu90a$dIK=`4A9iP4!YbgR^38~9{rD0>5h7f3|0 zT&IfVNWT69HV8$YtU6pj@M1ZhO zWxI=d4h5$dLhAqlG7^pk?SvLxgLv+6mMz@>6 zJn4Oc!CVYZd6X3W0kMAu@^?5M0|Y3Qa5X56(NY`@DB1*MrwIy5N1%#i7}OHmsq{s= zERk^sCkD;Z1&EyrvPQ&A!b91>XLt8sYR@M%`D8Yfu%3-MR zOQRht<+%{!53hJYD|^YMMTn26NR(m#fW72#C2W&T!0G{|wL&ga6gfA)4NY&kYI?VV zbvYovR-3m^NSh8%3zOgpkl%*c%?j0%z6f*+pa5Q1s-}bcgY)MjF4#-D5 zS0z%(CBQBu1ug$X)$-p0_69%^P`Vder@Aa=b@!`bje*ii}kPoXXHPV8;O1p(Q8->LbAJBLxFdqRQu?slW&bBS}T! zYhdpJD!8)QW&)LBGkc!`uUgo=jgx?H0s3a?p|}%p5q1gKwCFKo&#S{{w8a% zBY#Vnd`Dwl3vK|s7~<>-VHbvbtRva0C1JX?)@zfSiWlzzgs0QtsmpjeJ>==kkf*bD z@ianM?eO$~@zfsj)M-4m)Gw(y4!ae)^i6`^*5*2c=d!Vw;OknT=_qL8Y>aU}%4l-D zSMTDz+EU(`Tl4y)K6s%a2NY_;g@!8im?PsDm$}f8{+tU9naj*IT!dJL7_bAQzp_65 z2Ac5Uufl{^34gG8<9fb$D}{>zoAyG_eB$Z`ZW#8h1Z(s{Q>sbY-(Xmm+j+<`+p_U~ zS#^C=6W*!A%||~;%>1E+b_Pb^Cz(sHjtsB27S^Xmh$cr54CNpw+Zz+~xn4Io9#FA_ z1-qhB$~icdJ}&oh;$w_!ssz+MjmVz6aTO!iydGZEc(=sM9j1s7L%z3kDfnzFRCTEg zR;vwCS=x2T9V%ehQ&hmT)=+x29OVRjdU!l_+F@Q&(zHZSx=Twt3h~I4Rc}OS?x0A$ z5n=HKuaV^1nI(X0BpDh@0M|$cQ^927!m53d3a(SAW?!8OF@$TOaTn-*XFzazwLA;M z4VOGuq8ax9)MDu53@K^>30(iYoGHbVfCR3CTCy-v0mQKJH5zqNtil3EK5x0cN2qEd z!c)s*0ReKX+KhVZK8;;y9F)4_Tc z-nRe(M$wp-w=+Q)6GyYoD}?I z@2iYk4_K}F7{dW-jqndRz5u9YK}~@a^8jjDa2gz|iEw3lD;zff#1Kv^x{dN-S~rvr z>j&kW0=f&O_z8k)Hgq zOHl<#;1xR0!SOJWOd!ikr04|nqlP<;2K_Mx8t}dI`~I+jQb!#9DnIW){&hfAF(|6p z-D^BT2T~?~vFzFKrkdTLQYp#+cvl@v&i~thH2_qz3k<;G8DQGMMDv*xpIxXZ#kU9VmAV;->yMS#1sCHnLK?y+&V>1;-5n^auMIiDgeYUNd>mW!M0#r-A8jdT8 zu%$i;$KyoUQvU(R7XV{vxHA|-$2CT&h2mV>o}A6nL~Q?r&h=1$Y90^3aSst%8WILd z;RlFeY#p{S65z^p<0^O5Wg(tyDR)Eo7JzCbX%$i=0aPQI1IHmm*hu~c#~lFFhO6** zyD?#`cGUHbGwRh6b*eL z`~?Aj2Y^mx9yU6$R?s@9+4hyxNmFqgt-~Uov)9>14!yCKn{2z(XMieJ$65)J0I`o=fHb`lUY% z-s3x&p8n12Qp_cr?$n4zbQnH$iJ?0!@&c#?R*Si#JKfI!d_H}Np*uq{13rC;p*vG? zQ-SglLwA-!GvU=-V(9LtDB19?FEMoYSA=|D=n_MBw$fQFEOm*YJ2&kWCP{j@iK4zP zo4SxK?vBRR_Ref|YY6@f8H@`JJw-8$oz)d26enIm0&sN!qNk*AGL;4I9dS7i8M*pi zi|p|=Le761zL@#EJ?{7csP_@ob5z*gHSUDlzy)DHT!SFI=eZMEUap90Jh7|^864??6xDMg}YA=S~Ru9)d61HBltM|K;$1sN>%jag>*}b{#suo1kKSS2iveB*vAvqxb>fh*wV0E?W9k8>#WdSl>Zq7Ipu?=T9oCh;l zEy6fm4(Fi^7Ihzv!+JP_i4SL~D#?%@QRN@bV$C7v(Tpv9Jq7(dmT?M8CKPSQ%a)9; zz6{)bOI2Glc1dR!@`;ScGnj26#fQvs@&GLWS8b8|guNczRIiJ*OFk|6bWYmzNr%il zX#8P#nQiJ}Vd$X~538Otb^pVr;Ly1vG8we#Gbc`%dg#_<^hPE1~vABM-|z=;P>K5Pmi6doT#Jaoz-GY<=kk|7^>$ib7tBIHmN zITW98GAouV7*oTUFlGEq;SP_nzR!%Ax5GXJkxUL=q_79zr2 zZ{1(Ut8Ox4NmHG=2ub{L)O(^42 zpH9iZUx~CWq$@ojqg^(4kYj_L!*0NHRtwZaS9qlWI%8bvYyrEA@S~=B)=kE`(pjs0 zA~PV}E@Y+{&>bWMU%_@LGo4qk9fEoV+d-UHu)}e_f*p>lSFjzztl+EE z;~Y}hE7-g=Nu>Iw%cJpK)~ByO@y+nCVhf+Tw8b}5VJ={J$l7I6>d~6ehu2pTbac z>r;Q{c0*I8VUG1nCTQMcdK!2wLgi2PK7;jmwrS2u{s4tGVtU*Q$kvTM$)CkWKdK7f z7y#MK1L!NF=(!-AN}{^+Fv&mqb&QHx!?4yTQD1tPW*62-|$p|oxcs{ z0KQIBzySF|`#%2k>k(zUXXlE-v*>+{Kb`&m3($8XAji46ajZX`z43YDU~U5B)XcA4 z*x8OhLQe1}GcnigCq)+^M|E-49c}f9|73quFXI3H{!&~E$j`>A{upe>C}?tGu*M%? zKgAdnO@2ye`sQ4GzQKt#(299HshIZztXc`1N#fI5VxB4#AwGpJ#!<-VD3wzOW86Lf zP++>w=%_@k{)-g_wQ8WDXu$|XnCeSM7=@RVB9~_v4>QPC*_xJ)x_c=?7aw+E>C`3Gdv|Y(54vJLW}Gw-_I}(&xbK5 zoN=0AxC&tYQjFa*yZjd;#ESn9M`#;ML~9@OL?}K33X8w7BP2b~KI{~fHluiFDZ)>JSi z>G3`AR~kO!{P7<6cN;##_d|!OBw=a#((oC6$sYI~Q^C>-aaoJzTfTx|mRw@$1KA69 zV;AL`TETL5{D=V*4s6l+Vu^0n$j&G)zY&#<0V{0^3?qQD!9Wg&V-}!vtMTv!GGCOQ zWjedxh~ev(Grli1<1DtA`aIbW>M%xgUW1?P<%#3n5N}xKJRHTjts5=YX~Vr zTi~i%hCins01G3a>Qo@Nz;PV_TGjzQ&S-&2ms&pX`8QL`9bgS1W#|KNRXv42foZU? z0pM`}B79EJV*rL>8SD3^fI4^@{*>|08i*bZD4Pppzk{*a1TciM!|Fldp7pABINk?& z3t;F8K&sBfpW)Nd9RY@42xJvJ?1wMIRlPtWW*~UN@QuK>fprR5*8w>V~^ z7)~2_H$=Zgu*2Q~V)tCSvZ(D*t;Tf2*rbP0R4=SMqC67}W8p;rCJseD<8LPvnJ!M0 zpZ<_mM&VIP7`?Ut!k^W5FI7lm=J3F#d1fT6SbJfP{y zN?g9)#G6rk(@|IMMDgh`?oSSPfRpCW!?=A*M2xIA0ltcQhm|ykyx}ef{cJ<0<-7iO zG@ox|^5FM`Fuz|KI%^q^r-x#N5Q~KA))=DGCc}F8dQ+U0UQgg}I(3^=VX`p)`a23znTMq-A?+rmh2 znlc93M*`F|WeFS|fTCr_1E(pvcSU2VFhn-Pv*F(<0bOnv8ZOJ{`Y^68pACk~Qr$!O zs6N?g6Cb-hgYMUDVtcTZ80a9?g?;SKVV89`;(04zkm|QSc9&nke(P|2w*q8i5B10H z5tN$_bR0m>l0J4%VYx;e0aGcUQ1#nix>dP$fzSldJ^N0#>elYq*`Q?91uhpVOl^t;Y*IkEZPa7q7bn6Cix#EDMweW9=h zDmn&%ptkZb?tuRM>QJAljcJpDaAKVCzkFYkM_!)yQPGr~77|%$sz*K*i`mq;3{+?^~rSms2@wXu~; zYEc^_-LYur_=S(3oW!-yuWMRbZEjn=$K}cXi_RCsOZ{Z;X7ryrwfDFxsB+lc!%cW4Cz*5} zW8z*-bts$9T+u9>pWx>Qz&N(nJB%zkLIfK%{IbWgX#&FGzVVWDmH8+MdFEX0<55-w2&eV#X584Tc2!FD7NREJU zQav)5=}KqJqwAz_112K;OxIv8KCEL!b_>o(WV%LDq6^$bfNZ8Q)3qOy^*Znu0h3f( zGhNe2#L=Vz7zJ}(W{y&qgBF(SO1T0&9t+?m+=6;2$#vy3M^T0a>I%3#R}AgSetTzk zveNP zZ-IH7#62`$Lva~R0vi#T4S*r!giHhJ4LI=unEWziHiK353LJAlnF_$K=mDd1e?5-~ zMOrNy>bPi7qcg7m!~eO!2XUCif4o!M*k>KM6v+^>3%4=6l!Gi%_TesD6^mXCcG-iu zw$oiwmpzI7N2OWCt*})#SDKp>RvHw|w?U1%t3m`JPqbB^$;IPpw>ri$Sf%Om&2_^Knd#VQU(YKygxic~PzXRXK{tU&de^?558>DB)|H@*d00iYIAtt*B|5j~@6QtG{Yzd@+ew2{D~7_vk2u$9hR^TNm%^ zzZ?_?Z==gK?L@4Z7y&Zl6tODlC%OidjlM_5#d_ zQ6;j?N4CLMC8Kl%$Oi&+mp|B21Ke*Q{1c!@vwbWdb#bb!`_(a4^ay2?-ndeC$zyf) z)HK5G1Ssi$qmIl`tbq7Eou_--T1yq!rI5K8pnBVbj4aM{u*%n4Ue(*a4*tsk)!QaD zVH+Kww8aRU-u6wCX!f>WBMeS7)oK{8Fr&}qg=(Ta!}y_40O?@IyBvS#@*2VN^@htX zd7$A2=UPQ?hH+Jgo$bswR7XssuNt>w!wW_iWrpP$X9oJoIu}qT9P(Kv8CLG=$ian3 zQ#C+meug!eWgLABCggzfg~t0_MEv1k#KnkJVe^N7XnHcH*Y+xZlAnLQq00G?W+|otR5_mk$7(=nkMW?&S*dt1 zsG^%HUXt!#9ThLb$McSgID8n51{7@%Q=y9vePNc#hu{DlEYC1&7u%JPr{Jg>ZM_xB zt@}7-rJz?> z+LEQV17WlPL9K@|&#Z1}t8Jd&(b3d!95k+xTI2iF2#;&zaHX)Z8J^Zktr1TFpD*J% zT8*v5o|ubeGTlN&fLsGdBaxGU3~a|-3{cerrA9zi(y4rWyj&oSW&hD ztcgpd7!4?E1F{v4JBZW(x$ZbAE(3_+TcKwI*4i2HRP{KJ{>!i<5}<2p?IvPlC{X0F{NS;8+eQeZY7K)zlvh1?>duT8YceHaaSvfsZE~6~5zfG7V7F z?^YcqRX8=Ze3;SFj28PC{IlPoEqX35r7o|(O?zQMzo)oirn{o|Zr5D;r9ztgjBmTA z(Sr)|5)!`Z4lNZr70$_c*-u~{jA-o#sPZB2UWDU$B56R9mg6iYpsEnaO>nFxQVC?j z3Ms|_%D#YtE8yq`3?`zA?R*m&x(epXvsTjGtV=AmvsdC92|yLwPB=ay!eX1bN{WL4 zx@^YWr6a5j26BPz{*fwJHs?afSOw1nUt{#NC3u6kbx{q1)c?JgAs*ObTG!b+A3JRIe_ulk z)u^~R|NZ0R4>H$3?sgv}K7?~ZhRZPaK`4L3e z`2kPxnnYs4qpwM1oP3_JYZ6I_Qu|(cjba?pfXBHekys)R65-vi6lh6Bs%`?!i>_W2 zf#7>bWvQPb^O{65v6~AU!f=tXzA15*n_707GFS{Zf3kNK23uaHG%Ja&HE6|W0wNCu zC7YCAfPDpsf@NrqhdS1rgq;w8s2Z#(=lV~D5G^ZsUV$V`-{;1V_7(6CNyE}(ZUSR^ z+$mUT0-`$TF@-|j)l&SXN%WXW+5*sO0Z}!r?d{krE06HMgQ(sB(t46>^$FG^;z*r& zsuWWIyj1asR8k%X_OPO0Dt1H$NvWryvjRll`kbzUr=mU8Bd8cPxs9Q%u~Ebx`S%dF z4+q)JT(*5o1-5NAwAa_GCM^%}Y%@6uE0g-k-p`?!w}l*#%G$61;m!v{A&(D?V2=J3 z*zJJ0&y3ge5F3Q&#!QsYV4&by+80;jp6u3IU3Me9)HL0Q(*VLBZccFNkVdGGN>7&} z8xW~ph8mH3E&N;#{36m&dLss~^gL(a46-QeB|NF*`IMhYU%pB6b+;mjwT{0K<xiS}0DXa+Kvw{A0y!Ha1lf6Z4Qb-~T_PIvns?7q3zTJ7<-eV-sa z+qVOM_qN~u6Y7TB>zamtc)F9{&OLp0bUK)`qtn4dJ31XoXh)|*Q9C-r5WS-_NC@ue zbSS|coen|m=yVWgM`t+B9i8F0+R^C{!gh2zq}_IO+SBEa93J$JPCVVoJT*Hy@pLCK zv!fGFcM=QR(TS%!N!i1WPQ2quPH0D`JzEhHg^N2n@s1}m+RxF~at>WseGgsO>h+0; zT_4<>WuqU_4{p+Tq<(OdR1t+SNcGv#UjxJ8*O&-1%03QuY;cq%CSvs{y8}*NY}hDE zLR2i5lWLSD8i;j9Sz?K?dX(i7l%p&M2^I3&aHx>sgCTR2RZI^U{{+Md|7Z9Yzx(T& z zK%%OB@|cq6AoocR?#%!sE^NY8QV<uOx4auvKaH8QcB#&Fc5lDh3yT>Jt^UWh<@ z0u;)=1IIT3$qTWszn*()dlE^11+;C7juHYfi^N%X;!8Ooxw*cfv%P6SBgW&NJaX>3 z3)XBv@*)PWlJof8Qd|v4UW9z@8BD2T?vdg!K(cwivS%2n?e|JC8<5;y*M#wMjY`jr zf5nGaKr&wrT@yvQVfRZB0Z8tE!Zj-P`#pfqbbw@T`K_*<&v#hYsQ7yxl;W+;;B>Yh zhiPULQ?^DG(Zdhn8WceCfp`bTI|P;HLoTs>cPP{q$-mIFw}`@8b|X!bf2|Bj>GfMifEQ2o@8FJOxu zAem2MUJ$h}61DR+6d)iOrFUUMiH+N0-@qamkgTfbg~_D-9rz|dDjw6&?-#?i-S(oM zW~MdF@93;Yf)P@w#CZ_rM2xNBc|>psK(B2G?kVGNXXODDs`A0cvP~vS~sE{(weqCq#L*Q zSk|_;9fEp_d8E?bV_B;{H1zqkwe@^k_AJXf?fr1sR$g;_zh&LE!%%A*Tidv)AF0@C zS;v2%$?3eYY~k}7LA${xGr7s*LQk6!jcuMKZ^66{$oLIni{NM?@->hf;J6ZyNiSI$ zkWG0Ttrw700OV>oE+DdJll#cXM!ld1Nz?qh}=5k z??O=X%1i)P0htL|zBsWG^tpz9E9l1t>FPa^UOXh?RH?s#eMXQi^46HDM%{O6y5G)< z)P`^PcJ*vp!KeHr-U)fv$UX_#r$aijA9_h=z$>6<=e!z1^1d<1`{4YleNfTiuW1=R z^OhN@)1aP1Qx6d>Fx=n39o2`+baomp6Ef3qNnda145~@f8I;%5_$bV{&k2enVZNU2 z*l*q?az$QFn9S8i2A?wWTAkJczgvQI_?1=6kwGHw1S3%hiTA^`tAyNaxQyyALH{Dp zX@#UG!FFRF4as{rOupREnY7nUC1G|QZ0PE}6?f0K>T$ARZ|VGGB3pwB5m9%SSd0{A zFEs)TG4FYUq(S=9U@%P9D3h!&!z4C`>kCR)PHTsbca4O4<1HwWVI+n?Lf`~}uBQk^ zWz7J?WybaE!^PS)Z-n8F19u<8bsm@zd9%a(9vSY}g(Af>dJ7DniCwJuhVy0^=iH!P zk>@s@8GUSYd~ATO>@267Lrn56F$g35e0abrN%w|{eizOSW=Zxtx|o>p&f}fxeZQc@ zC?mm4u?`pNR4Pl&FhnMA(hSCdSunyd8HF3enJn0X>CO-cF1@Lq z%1Inn09-%WJ}y3N-`g0{3pwBIY{gtAH=w2-?C6X1Bse#lv+p7^{mL!nw5rHVkaLGk zgpOiNS@P8ktQa$cV(BOEA<6xxXb!cYo`P zVcE>b0s5^k##odsK(|bwU80PG55byf#gvVKgJ9t?p0YeR2-Z+5wk!n>0u38w7sEl| zQ$uBQ;UHKCKtVSg1U?~Db|M@E+2XX)$1Z#gF9NY=Crj*?V z2f>;QN^|jm+pn7W!1;J;a6ZT!QXy&Amzre zV!sB0<-?;GFpj7{T`lTsXq~KU`(ltw89aA0i`xyTTkfE3d>Sy1*EJgd zU}IT{_TuehV{tIY#^T^18;e5;*;pKkvay6As-3xmgrJSZp#*I#4nf&i9K^A)gyXca zgyYJ_;t;}YEDkBm#^O__W?^Ibj^>V_jis0^&#z9+!p1_(1q>%fVPhfY^9N7O!p1^M zlz+EVv#_y{6Yz86jPg8N5fX*l*jSj+PPQNJnTf86r+BMpstLM2H5*3Ir)I+lJT)7J znp3mk7QWwk1j_d=k{9tBnx6W`@fHG(3|e1^iAZgIQE80~v%aXLMh2}fDt(cT^@Uhs zq_)1i2Q8_vOfAFzsO4aM3rF;aPz^&lL#FjbFc82aW~t zA`s3ev4(!f><`ilK(~>k(kTlkGQ^bkup|K_psO#AH~?ag1G|hAV_zvrnFqP$A7D2C zAb|_blKvze{~-?50TQrYD#<6M<71dl00|vf_LUTqwBM(QFd(6(X@QWXs;0d6nH0|e z66$qKN+TJQcR$BBbwENR&l@Z0c+%Zp;)bg)Kv%D>mS&Ll*iI>K10=u zJWW^|n=QZsjzvp>;&cp~Cm-PzQFuTfW7mwlm$Ng!g|Tb8u4 zzBH6NmA*u2-D_kLTNgJpBSODg8;y)orONXz>k&sirG)(1+TbXnsQ{g#knz%*^Oe?~ zJR1pb`&=W~=GY%=&mD2YaY!wt9UPHL{+Bx){!a2I%jkI!NTWcCuyA!5x|j4D%+Ry~ z)bwvnB+dkqk^8Ckej$)+;4u?Zr>@jYZk+fnQ_hW8DV)b-Mfw{?mLAh1OoDHtmTL?` z&dXX07GCME8S(>^aq{drAU~UsFmX%IHCdp9CK}`|2o?EsbWT8|)FFZlCrhbf-ym0{ z-xRK5yFosM&@n+FM@6Q|uJ6G;eK+oDVccu_a$%-;-f-RMx&9X9ii`wPUew7K6Pbr9 z(wMbo9B7z~&JW>CYvoFjanRQ~`^ilK1ikW`TGka|+%OJSn=W4`x>A>qBbLj@y6^I_ zJ97Eh#ky4M>bLvklFiU&CFrjwmuzby`%9#UfLAbce#CzQCz`pxx0AswauTspCRn4b z=)At$EAY%^&JL&`aPFBi5^@Ai9do>J5cou7P8l2o&PsEhfIPw47vJ8tFd5>@{r=b~ z;a={P*ksCY0<#&vf%hYI|G`gfYNqJYQ%CLg_MKL`^n|l7ao61uq30vHviTQg4wFz~ zYR-VZQ-q$6Bqq%Bk^HLL=lMty!k&*L8hSpGnDcz38#S8GN8(e1@GiukBoKV>sQmLY zWX>7L#OHNo1YM@51Y^~{h)v(<_B27sqd)9@AKtkyVr&v!xD{96wptN|F=(8R>K_Jn zKPeb$#zlP!nRICh^yvD@$8iCY767d$38Uk9_3`>#U}plNFG5BA$b@P+4$N58Pfqp4 z+zNp$kbD#ndmoUm;P?`NX`hdY^Qd@W-qWu3i0kC!dYsDhoujLlK`|-0$xKS7g=hjW zOOv@-%)%AGmI9cRd_Uv;Hn1lZ1w&GPG)a%+ea_nf>Osr=c#`gL;VB>h_g>^DGgH0= z_6aFSZ-GkhLX=A_fHSdOpPgpdcD#Oan)(trDDuf^GK3h1XuCw|{(opwZmh#|;7xmT z?V$M9jFhH4CO&|=_e#$LBr6F#`o)(v=n)t`Iq57rR z_`Mevk_{$5ze8^DH*0gK3H`AalHF`0X3L;el`;+akF6&(i&&#QohVsnn})tj%)uP9 zh=YgBA`T^F7I7&57i>MTrc2(0X||qNGt{!mY(24zSwvqZW*M_c=rS?Om_>HKOw2N7 zk>F)wmSYxCTTiSxHZ%Ia?#%q!iZKs`!|$|_yb&&}OS54<=m&bVqN4KZ9;!l_4|c7M zvUgv!vKX2VD$?ovGn(;ffEZ;ysK}cL+AqLACv7QK#T6CPK)TCk{V(?31ir4~x*xyy z&YSxdJ*`i>H+eT+ByWI?F4wR8?N4+xwD)(=giq= z=3eI^T*a8lvl6cdD6^8DQ-P}(Gk#V9b2gY|&A5uUZv|v?ifQVnOFZXK z%!6c^Q_h@kAm#^}mEDTOLEP-eWm=y3JKJ(_(-O3d({v~;Eq@5bAHXFo z{|Yz1WP&Y^F87>DT+;FZ+}w=I$=vxH)9PI)!Xq2ySW1}bR6O=ull?(tImrZ3mrRh8 zlR~1()((3jZ(O0vs#T!OxKYG;)jm*U++?{0;>I-)aon~z!SH^~sobKNQ@aiZDlY}M z$oVSH(Z-z5U;3H~?N{l-9Je(41C|f@@A@xArezS`{&zfz@z5XM2^pI*{lAg?b40uK zr67ebbKaL79j|O(VLTDryl(w+N8eR@0UC@gH>tOd8bB(y)h+t|VlVvuVyFkaxwPZ5 zjq4qMRy~KCkaw2G$GGK$F|lgt+U2b)ocO(N>0ct9>}YM?u(4ys+Kubmos#%gudE5I zn7R~OIBsy_U0w~7PO8bIyG=TQp+ZWa>0I6THcvB8Jwp^nH{&Hc)^BX>Shl`-WAn15 ztsNUyEZd0py>={L(X?r$Gc$f@OnE=;cCRRZXBvP04@9OLt7--$qdBZ?! z4_>MozkN*EDgalKT7i!t-ndNOYZ`ykn8FXCr@GX#T{sTh%SP;zH=8FDfQK#H2AudE zCOu_%m{wsYl@ou9fopndL*JJEE+Jg}PLo#;G!KUXXG;9tW6BA0YI)c7ySG6P?{ebD z#*80@EGI?yEkO5=Nh79;p{?)g+}%HrgY>w0kWQ`J+Y76A<8~lzs}q0En4&+Te2KKN z0gD5Dc*8Z2`+&)>29Q0$VBb5Y^xH%Oh)OafE*lP1ORV@^W5zcDI6u)x`VUvqiN9}5 zoDIeD3GO65T(=693%c>=FL0&FpV&3et?nHpCrIhI7uOubv!q&bzcJ|T;|<~`Iqtkd z@^Mnlw2!Spl)SKtlf+Mu|9siuTNK{?scPKf41{R$RtLA^S*o~|x6_&H6#O FIE- zQ^}_pOHlvnx^F^eO4c9LQ*J3!PU;3nJ?;97(O)8E*B_9PWJWqA(QqV7nJh_h{Q;>e zrpi-Tq`?`Bx1trs64;^i{BGPx&rmk(Ss|7n53dHAKaPiGj^Y^|Z0SVAHoMbPP4O!D z6xrdtx*!j6;&A>H<`)$DP}aDlza*ew=Y>3Su!D2OeSOJ)AtR}tJ7(}-KwK?Gg>sT> z4CvL@-?N7=ABVni+`Yy8bT^9MYsuAz><&SgyLalhg_I>n3zlH`PDS5^uoph;mau=g zY_>`PM|nH|DdwmnxUYN!P`FE#%LiyaZ8jBEzQF7zRb;Y{+iYp#KY}JI9raB%@pYD6 zp+I`Idrx>tj_$gcX)nofOMAaVkhOX%cH%wZRS>0f5o4K( zs~Set6W(aN#K!qFk`FV>EcZX*O=9l6O3$gsRfC?t;-%R7N0EFGS1p?RCol6O08;~# z;9opp%3t8gk62+Vn*N%}y8`EWT5;7ND)TijMQ;2il3!sKER3&vNy0a;+H+>(szJo% z>t33Z;;l%&iCI`-__|ljtmlw?3fG7!c#GPn>_FY%2AfypAI$T@I~Z7Aj#7VJ<2fJ1 zHEJCa-^9(=aXF(Mq>3%(-OI)U?H8)Dzec4oBk{x;%?_pn&u`)L-+1xogGPUcHhzPv zj!&fJakWU{!v46MEnJV_^z%5pn{5`w0-*=7uAjZt5bJJFRw?4WB>vrA z1@YaCHdo*xt?u?lkt#=#ycJi?J`}shps#I&=QQC$9&FuvydvUsB|ZwX0#_|g8r|b% z2m;Z2k5|dtJ$UjuTtx3ZUJbKiqdeyi%mS(IHPm|}vi9Pt0lnX0=)HEd=Uj?wJXeH} z{YB6FksZbaqIHW+xWNtBS^l}lJ%1$8djhrp2AARAp6+ggllg{$`&@$)Y^62T?)xbO z6LB)%t0GRmkE&nA#R)Or8^^5s#(2(MxN0EA7Z^@mSBF>#F0yB%8O$*x-^HxGXspo_ zvH3Hkez1>BS~b z3f3_5Tgdo^WCFm2-WcW;jQ8;6BvcMggDv)w6m-8p{!eg`R*St-W;IUmoO!rL6B9RC z{OCF`pNsFXJ%P-Tg)m3=ph!QikscBs!OaO=bu2cj8aY2k>W8>SO+cb>BEmDcM$JNE zHg0Az!Ean|#?2-sT97z|o12;7=dGW{%{OsjbJ5cl2r~KDDogQz;}K(;)X{;jyBWHU z@-(sPZb1{1f%#Eh8EG~dI2+}S;%zNid5l3c?!m%i41#Nk*f9pNxR(cl&{|Nn&QP@$ zj!2y$Ca2hrP|Wyeu871E$8b~;px{4z5D~J1?DI3XhW%Ggg8zz(2e5wT))Cr+Nbbf( z_W6ZTxxYj5B(rXSJM;^qbuXQaiHEBOap7OM!aawOyjilOSP5Hu2I+4xkNd)3bVZa_ zPC=)*CNyG*=k70Ena)d*T!?Gp zI>!u_#F%oEO-zR4^>&OI^2j?-J&q3HI2<7#1o8gM7Wpe9uCPr^re)u*y%+A>y~9Q@ zAGC=4Z{tEb@pVnfbR#T-hvXhv(z<^R;4eS zL3_8b)Wflp*ep1*9}m8a690f}>;zk)30MY(a~34f`&-+`epJ9SIO5L458Ax7DDRAB zAKwTdd7OPb=f*Y@6n64+bnu_-%gutBy}b?L*F1q^@J5Puoi5 zJq{MC&zW-20)8BHD#Jw{ycvHl=Nk;BJZYa2KNpy%s5WJ_ZHbju+Dh2;Y%3kKPj5r# zH_Ow@YX_V;wZR(#XHUrT!?=55;B=sU>;tw^KnVa>Kn7(OVv-_EgAjg}=T{h>|Hz*V zqS{fE|J?hC9;%}iuBf92F!H~`#c8m@6?K%Dg`hbus-u;L<=c_mz%0y+Rfdy4faC+r zqB>e-WXq(i0t{eD7jkQ5-PXdNDknd_-l)4a?jXV|7Fll z$t4_^&dtuq=8>}}&Yr+;?LgJ^1UB$|Lo=6*F&Q#rzFS5T*8-Uf3>~<`lr+Xi zca3&>UR1=AKbr0y6dIGt6cE!;@A+B^qW1y7cj1}_$K(02Y_s7)Pyp97VEg$g%sGtI z8*oiW$3GN%_$Nrcz#RHw?hnP_m~s)O4laJ^_s1gj--guf%(1BYiD1gV*u%Lv?3OlSi=k z3xqS}on8lvJ5hiiB;DRKlRk#@qh54fR#ddMC*SBGExL^5!b_^^$F>~h9LxRKts>ji za#>YjS(S}Av&Ea=-HXHJ0I9Rk!O!!FtEY4aybf;{Fh5C?(-<}D6T2R zzc<{q4+N=15uiP!B&Jk{9$y$d&WiW36YS&L%v4CKTWkjSL*ZRnF9uQM;0A!oKX+Z# z$cs>*cs`cpagCgW#D%z-gA06u-DaW#-ie0aZ~BGoowvp||3TAV6&S>9dAe})oC(?J z2!y}EI5FD6Gg!Uc?zX7VB~0@LTT9}^)+IB6ktR6_%GuhCm{&h5b!}a-4{x37-G=uU z75XU_RhOdfcWv1oH#_Uk0UqfD%u$6lFlA6=7c8Sd@A=_C}WC zV6MS;h}&_^n`=u9GnlczwS90fKt2ZI%=?ASqe+H5BNP`<)4yn2!cHam=ic|;8uUg> z=zjEcFD@~H$``@1!nK6N`*i?d9|2tG`a-t_cziLgI_3)T_98WaONjRvZXRZW#M`zQ z+e>iCct=>x=swQo-s9~i1RU>sQR04FWAC*kh8gda|F*zzymz6d8S~g}wu&X5mzcuw zEuf28=XxR-E;B>sv;tnlt^5Ic`!+6dIOiLAqn4o+4aol{2 z3A&fh;^rA9=w2q5!b)I*?&V)1aW5`s>8aL}Qclws03NS`>9xzKupIf5F7rxQtF!OM z==VOEfm&}t4PFI(waXAd+=opF_9y)Tw|M!69bI_6r}$m=HqIirK;#cP)zpA`Qf;{hq(MRs2n$MWw?#E=B*6ObrO5< z_s6)BKST-#$azju_V~2|Nx5?YOaD;*hCQGvC0+bMNEQe-Vt=1692H7ADo# za23HWIxw33RyScQ8?Iv5JGc1Ec@U}hN{-m7wjIARcBF2>Ron?5W}CqKERx?~ z7DlkGhz)JJ)N|J0l0606%9!;ik{`oW_I(S)wV2cySv4oZ@p0bH?Zza7rn@doem z8&G9MA<=>_k5qiff^#Dxway2`P5IVh!9>T-+xzQAYn&r2dgPz{f-x{NlAJgNv*+DPE6;-+|Oy zm;;w>Qi?e@uk)NexT=3{M{_&IP%+7(;q6GY;3BJC;#6J{$~IZf>2_B99AbeNk2co+ z4mZ5GOTG4K-0>6TE>}?t7ff0r7F~_{W4&pP|5_N=SKyNI_g?UI zboY5AAH!8FhZXzcBur`p7QdMX#JxVnieEs^CvX+C5)=IvKku{nDaQGtuKwOFJ35Hh zfg%oL%|_2ziL1C1k+8wa-Dvi2kvzeyo!850XLq+`>rI~XM`V|LZ9JCS0J%Z;oyA1A zI{Mjzg%{*um6&Yv4hTN?JHTfh%%?0`)7Myhks|4>HbGhyK5i2MdDujomLNK5Gqf$8 zAa#7=o6INgA9k-3syv=HRM}3F;GcURTTS+HW#YQAq{==FY!DYY^13DD$WJ2mQRV=# zTLiJmE3lw}ODM8sA}MkelACZDTz6Vre<;F>Tho>oi-ili(wwRvMx_tpO8>%wCj9vu zn-Ko2%|ie=ldp5h@@F|VN(EgFIQE_SS=7Q=u~_IJSxc~@<2Zo;+mCyLh$n$-gNTwz zL_}h<=e!8Oh=`IEL_|#+)?IKB5v9fCusrBjKBx3$BE!IflRWh2N!^;aUG zh$|VeP}yu|--4{0aFxZ}a>WlIXYg$x$E_&lJkIRAp5OneOc5;1^X)y|gV=n8poimD z=`v(`N3SkFZpH9Pq`Prp_QsCZ;d8d-&)Fw0BlnG=C%~LL&ne$$@yo}b$$w0|4xp`e zcb2f}ZedeImecRH)e7POs)A-4sZ~jXO*vKb(})}6irrXIRfAt%I$2qL4Ssp~cdAiU znwhxb7u3{5Pg%zPYK+qXZj3o&*1fjokh~)MRcOcKcIrO`Lh@hXcR{Wo9P=8PLpnin z_R&FwzHcrJM=i zb97p8FBsn4oL-B2b@b7L>6ImBh!Y^93&oEv#GKoWd&+anbJ&%KYW8cfeDA*LV0 zFg}edK?N~$6b8RzT-$LSrtDmjQ9L_)SXNj5f!B7L}u z)`kXDw8ZsU5#FQ9!=nw8JT?vDGg_Rmk64!BxCs$;yge{PNN_R#dzPzr6gZHI-2jt07|l z1xhOB^k8Y=HHjw-3~ue&)vyJO*wM4=`i}11y|3oY{kPbO6zrAh`aU@C&v=AYNgO&~ zik_VSjd8%cyPcU{bt(xW=#IX@e#fgRSO^9~iVmb#o1BVNLU&xxcba-5h z#~Ue6tC7U3IUR45BuAnun2$|+qa~*f)y)^JyfKn7L3dy-cK2@CiCT5i<`l=jv>E3) zym2)*qDQ}@8hXlnMyuYb$0hQ z4z}ktoh)Ws`P6go`+MXT;Kj3i<85*ZyLva~%{y_W@3N$35vTCu;BQ{uh8pKfut8$Z z#h1TE94!&DKn&mr2apWMq5})#TX%HzzZx^bju>Chlz&s7dqvExcEi&FtKlG%x@`JO zXet|6QQNAyA|GRP<*fbeSH}H1;lH1~WM8`-^^zlQcgV+%E(0kXmKdHej+m@|sUfaB}Y3T->Y>KgfzPG3kbqjJ2I@WAz z-PpWw)%q1nm#G4Q1Gq^uPMVy6!V%lT()%MvQ!0&%)XjOW>x|+{|{$ z%*|XUBSqjDn2dQ&g=C=FN|S@TD&AeOu6emr%{w4u12E&%Fu`+UwY=G|^wJee*RNmN z?u=k^nYkay`%N2GtY5z3(&n|m;wWacUdC~bHn*F3KZf_~S1jXMwh6p%UTfN($i$`~ zHHj&TuZ_)XR=}4-s;PBdle3g}XlKRJHBOVcU$=hg$`#JC+=CU%JJvO|;3S!|JSdUN zTEQ$f6_mM@8OttpR?2Vd1`K``Z?9Ofeglr8p{DJwxsWxHFp#`l%=8uL1_X0Tm@t@d z>ZD-%`W2Tt&Jx}OjVsn)LC(5`$>!G96)QosmtPL0)-2ty8YN7t8{02i!3-pwA}eMP zdK}MqWKw-3h;J}C5tc%dH+&13$m#)X`aks~a?_KpW)(Hhitc!#66sPl5ww7`k9(64nr%^W41!}hR!Yjxyf|pM^WI%P(MG!Rrwwy3b6`Wz?D#JHXUXs z)MdLQtc0({`EklS^?B5(4mL#9`*S31H$>I@OIQZt=!5+EHx!LI?*PBNHkMge=a#;n zhJGNaW8hV&t;a1sKZ+so-+>>zBDFQVK2lx%{dn6rRN0=wxjL|sUA$7!bRvj@B zs3R$8)e-MQ>WImlItrz->WFz^byR>CH9Aj&`_g3bw1~CBzV(AUR(AEShhW)-?bnH# z-=Y9cd{{*lOORa)Ca?lDMf!f+I7LQX8DWIjYG#@!l_gfG#1j97Itby*r_d>|95++V zCY(}l34dOXi~sPsOo-JI39V*kv+ZS&-t%#l()UEXHFGfvJc^8u<0`uciMVaUn>hgu zRE_&I`p#6@%uk{~Irsn86{e*pc;Zv-voGS=GboHVHYC+W!Sl*x_VLf;k=dMBvB_qB z6?M`<=VW|=#BM`-x7+e4u99~JEU?Vk+ z*eLD9-eO!;-?3sFV`B({FP)eR)rH`>ycCI=d*{HOPWbIcjXGYu@_T4N)$mpAyb^bf zsQEg6c_rRCs`fej@=Cs>M>&k5#GLVno4h8|}6^|6G<(I>u#d-(1lFu>WhqvaXN<+E@+aH_MgVjZD4fyYU8nPq>x zsw(s}EuG|p<=*FXux01{uRYE?ckSe-eO`r8aU>7v&kloh+Y7K>#B(XJL=5A%27+de zA3|-maB0x9tDoG^NA(b9?rL2h3bx$!J=ZIQIJmft;4`~UTSZmBylkttA#5s6Z_EM9_b z``!e&{ELtUv5Qv~BrYjfP%yus8QaZclN|o&Vie$wpK(>9pa2E*`~nvl@j_D`$>z*F z$gTu3ip+D9kz`#&MJ|+<3Zw!3W;fJEx)6_$!-a^#aC7o3i{ktn%dwkr29G&HjOU06V)5X^7Iz!|{xn;Vfp%3TI%eu}unH4XNiuvsh_vy}P(ZSOVopB69YU z>UTB?MlRGL9`&j|*#wrq=#E1!X2L9t{NlG9aviVwXcHQmR}a(}q)x7>6ZFjw*T$)( zaPK%5L8;ytuGO3|^%mMpU||SEi^7An5G^inH&u}mOGW{#_3o#d3OI_kg7$*V0?5+* ze7zauYSPZEjBR4s+}!>0Z0Su^xi;`-HV*mH>_giHnqt>03(&QJVigeN7z8y3xMGnO zli=-YgE+@&&7yy}!LA7-B0`w895UVmMzHa@SBq$28&dW14Cuzmy}sUwlD7^6-;nLp z(%hhZBg;0{^d7|`XTq0+eG(7aFf$f*ohk}Xvt<4h#x7!D#7?qaAgQxvtB9xq zO1rt}89omsRbduO=$8dev7%^pb0&CD9Bp`ZLGYj?`k*(1%?Qk?{o_Y2PdBVqP*{AhkrDcS6gTe7=3}dDxAfV%5LIR%+nc{)imogmtoGdWNG6*3Y zb15Q%@!$|^SU3k%xhRJ%R=Jq=h@tnqoZT}&uy8I3!%l6vAloz09ndEv@q?^|kXX*5 zFx?E*7DN1HwV|Qz5@QlAEwNTr(*leF5rih2UOv}Z2}oCDd$wpG_?KpT$l_)tPMA8Y zCgBgvlmHpM36^fDu%^rEY+D$GfufbYP|mIi^YV@wW~~h)(qyfx2at1Xi~xT}6KHZ7 z1$!um9bTR<#Mfs#7I;I|H-x)or^8Cu9EtKx(|}^y7-N3KZb4@RCmvWeaN0sP4{*Sz z$-t^f1r}Zb&6IQ)FvE|9;Vi-$5ulSTR;;~IY*gpHO*K?&MsQklH7E)E5rEQ2v&J$h zGYZz$&V-DUa;uO+sx6GNd`sRK+_A{OEn0MdmMGFJS`5-)>=9{0th;2?x=V$JV3386 zq8V=?P0J6cTWRggd?E|P(fTZ+ax@Q*kF1kF#;7QX1sw}ZP`LO*TgQ?3<4avE5@POv4vF1Zl zu*hbeLJDT3M06?|IzvF8mx&k^JBoNQ7DX&4y0k&7APtHrz#S$b6i;-1rn0EF61X6L z2Brf#7Y1}LipB|w!!@9EhLifGfz-#=@S(~u6DY&-Fs+P4uZVj6mHC`em2Ws#V}RM| zjfoX*lG36!%0XG`a2AfRg@KD^u}?79a`MPBIY6!+HpucM87JI45xb)h*rHZ--z z4XFz|JjZhrLaaD3=MYaax3IOd)d@CyYw^RU1PyQq7qCd~DYK>uFc|tY6tq$f7IrYO zAlfj)P97ON!Y1LNBY?ta!_2T)HG(c=LsRR`4ws1FcFr(!b8dtJSA_hh=*F||P zFKh{sHH6#74Kr7>qKhbr2(O%^nPgaxB_?MXmZ_}Rg3yZ0N8!q;r)N}7j(mH?dL70N z)lq`yo2B_`k81}u`Wjk0AS0&&Mwa+io{Pq5TbOOjQYBb4K+?2jB3oHMEDzZw!yvmf zCj`re!Fwi$-g1Lex_cEN2~e4@DXj4bLzG3Uvya0e+8U$0pdkb52f86pj4~vIt*8t} z1wE6P2v-Fbt#w7gblK=IRE2rUqGL@xM5WA)m0#l{JRo9PLQx2)hD@-qn0^J;Z5Wqk zBAkQAXN}b;W6Amytl_}OiigDp*HCQ~BpC>dv#_|pi#EPxoggCtO*oe*Jc9)mt`CtP zEZjsm$yitC;_MiuQvno)%&W?9((0v%vt#p4!EnZCsx^EECL?c-9KxI6wGcCn&OWCQ zFbfQbiiWJLx-e&s4b2M6aqJ}*{RB_v{I&_0jG^ISw`njHC<`Wq`3LfB2-8oAFfm#d z_3D)P02Kj^5k(V=o3c_;x}$>2g*}Ya4aBU4Cq5K{M9x-7nhBMnTT&36HUW5OM?`Ee zi;4pHBR)TiX=B{(x(YQW=w_ge{RX34z)np_PEQ1npL+ z(nJjzZhyUId>CUdk+g#=T<=_kUu`5b4% z3DNjwpboP$A=u?683hG}1!++%i7J?rr`)H32?QL5?AU@pNu>j|6LTMuv8T!rQz_LbdRIZM& zNnn>^HtTxmu$hK)?O9KDv~g7;&Mj?0QaZQSX{_;Nve91CoQ)KZ50$rB69RKm+jeaJ z#GDqh3ezlE!12hbG!uuNVv!=KMMNcxX(-GrLM?GkrD^ozrw`@$88*u-bO1T0@DD-) z?p4p(2m!$w@!Z%sYoXd@)`q5PYAE2tdNCm=hj-!6Gz9|{7k00VR*JY-oJDyt+&nck zY!o*#aKpJpxd9i423&IPWXab%`I>jAyonMrk!2ik!4P`~k?bMD*RHKuJFFlCemVj^ z81c+p6=41>RtTeT=hg{_gZs?ugdpW<7YVJu7Az8mRs@4Z!jQfzjtu;)rqln5frFi2 z9r>a(c?F8x%md3y@enYH$lO0QFGV3Z^KvO2>{rV>W)7d0eXKMK*eAp*!%DFK1)~_A z7tRFuP|+JO_W5-etecFfWt`grm`B;odGtLai$sXo2lh}dpk#4u^(R+^jD3X+HV}9Q z@|-S887gGmL|G7mITO~pcKtdc-XT^hvl10e4UwpUZ6n=Sn+0K|K--&D>0nLU6hfQW zF%l|a_>Up`EPS@5kx}a>yOJHTPh=(ARv2zMJ8P?mjU+43jH_CScl|6!4$5%uPRki|v}}USBEu^L% z-*)$jG)QAD8=pXAAa4Z((E!+uAPzzEGTjdDmPa^Oqg1vddlTe;fOy$`@SW3$g z&7wZC_0i^Wh1>E~)+FL&j2J~Z@%o*54+ar&a$p(D=bR34 z(XvIe-WhRzsz`Xi3Dp57)I?Dh85cew&t9`z+p>Zu?0e9vwlhzQ2XS9 zQ-<;x;j|0JM&{@C$_vCs7ETYB!q)gOJlMgLC4^Lo5TaoSq`BQa!jPr|2(MU)zd`Bl(;1~K)mL>D0U33uvCAf%? z)u1pTEF3c3WZ6F)e~B#m=i)TQ`Ei<(XoQiwOtLWwOvhk0<@T3k!35+o53{C?&ESec z=v-VCEi9}d42{3m1gnO%*5SoS*y0FlJ;}g`8Xg-AZOVEsVT9ouVu%Q$l|>8yEe6)US?FyL#(Wpq1Mvsh*$yE zc}_6A;}0_jXHTM8XEqH2*CiGeNLBz<*7(BR0!s_PMldo7+Wxv6}SL}sEurqhF%D$o7*6r&k>O=(&PxPEoY?!oXfG` zzF>Qfu+1ypo?~a2;F=SP8+3Apgb~Ei4LT@Po%5RLoz&!HFq5@WQE6?L5g}f{elVV< zjqK71j2_vT1DnjqD~h_Y(e|w9wLYX3Xs31~bG$ssN}33>O%5XfiXc3EgvE0Mm7sVa zjdIL7Ei9t)gX6-BdBO2B%Z+@OA}T&`4l4h6=(#ME=CfLaImv3nuxFI{iphLj%gOG4 zG|U${TT28*ghg2x&sH%6%R7eo46l{vFiu{oh_Y68o1#%RmbD--$S2u7V_8ka*%vt} zlVhq80bj7p$dLNaZc~&^ioqar1P^xC$h70`njt&N$40V*2gc>=j_B@1AmGew5oLq_ zh0b>{O+zmOfL;krdu+nW%Kp6lR}o$TCq?lNVHcfd0q0mEoJrgV5;sQH)k9g=4}4L$ z=D`U-V{qi0bCDVmFq6X!nB0WJYT02Hgod1EdA5*S_`^N~a;|vcxhDu%ghiFHWFp&s zp#q|Usw~iGXF`P)E>UK}ronufaxQu==sUa%1A=5Io+C&6hlmKUijX}l4x;<^jEE>X z1>SK`FN=35$Lu|KKWFWn^3YVT$cY1(B0=9l)aFcPNW?(oIiav1kXirAXkoUc=R#-1 zE;a^Ridl}QHyR085A{X^ra#RRe!is=u{$8-^OZ&5eOe%}r!8-d-e`hynNHYN$IZW4 zEn%&T=r+=-e6u|=!=jOFL;Ywl+vG*!*`aVzAc?HWAp0k+?upnQS%wNng#tsw*eZ4x zI%n&+5DSfu>Zk0&e5hw^WXtgxY>?=AL^HVqE5sr;d(?sAL{4Z$3~T1*R_H}A0yasv0z?~VC}tt@$19$5GT2^Alse{$dT9KINazKkUFO;Bd5DeHM|`mH_;-* zo=Ze?XmD+FF%AppMLDPZ;w-ho5;N@Y!rKiufj~FiR=gb{FY?qlOiKh{VKzVK%HTaX zq&;4JLk~OT_7(&@<2Xz6wR}@VCIEf(fx~h`#KiJQmXtb6$q@+N{Kc{Sc^zyDvg|d? zzJ&alKGZCX8iD6Yl80FmIxWg+5$-t6y9UCIP{>fMXXSlmkiaJFFkiD^b#7kPL}_py z#d&m0dGj<_88Gt{AO&j!Cc{X#L_p>iO-*dx-0!G)}TP$mR6 zDF`#fa4CyMR5Q_#ZFE&6(8{@2whfgL)sZZb5qbRi3j75_hurJ&q8L9;+)77m#8+;f>%VQ{K+=>F;)c7kw%jMAW`l;@d@-7d(0q+Fo{_>_>1Y;JTi2$F;$Wx2YRDjQd9Qv?N zkeCVHb9^Kce%F|C}B_?b3uXsDMM&$?MaerSphr;QP`V~r{!hoOk0 zB<2C5K;VUT47~ymD=g8CZ<0HK7A2G)uvXCYe?>#*$q9tojZ1K?KM{bZzf%?8SpT zD9j^_g?*dE&Mkx6&0XX5yL)yF&gkh~Bz&h`2jAN&ah8w))XR?RyMEPgv|6oQ^)1)c zsyvg)ROnjY)#*3rT6JT+R{l0!gS7IW$o`f~`pJwg#f?9RXM1%MZVOv*yHNYSdq~IC z|2g35q5)|DIa;G3^#FccUDk%&2j#Y$w;#PyPY7DNM(c8|GTQYsD4=$p&`Q1Fp3LY< zlu#`??teF^Xi=RwkU)Q{bp?{?8+Aou z1$uvzPV;HvAzw8u}sXH_uM zHw*&M)fqfV`|9Bob3OHMyX$pI?Hkk{aKkZs{=LjNgko{^Pzw0Su-`){ol;-l?dm#} zYST%zo2{vWdR>P~2{hv0qbK6FupS`2Sun2sanbG48_{D{!F_R z8U1Cg_vz7nc)sMyEA<#D`E7YrpjNi&3N^nT&lXD?3-FS2?}z*|2pXz_L42cRcZ*K4 z*+%4C=|6>Xs^E~09Y$`c&a6hdS$l8SBcdc=p(bdN4n-*$ipu$I0M z#i}sC&*-XtU}OUF^HhY(?MOd8ZSf(S;@zAd0{4vwAFs>Z;czT7dh{9XzQEccIQT0ct(} zZmksnvV=f7(I8U*4I8A#{lhV(?#mMM1c(XZeIC?|tN(CLf_PVA1l_{S9+=}`q6KVS z^REDX8;U&X90NB!e;`o@rYtYV=Xi;UCj{flzw#p1^HuWD>7IVwJ%n0dK;hyG+O+$i zry=8?g}_tJ0sI|K>Teq8>K|xWx)oBe0dl^ptDzI`)pwR((y(#)ni(sXEo*=PY}nS> zIh=%_HM4$B{meknH*`*$_KGVuT;DS|@XBisqkdjpgIl|<-@Ppi&oDg%dMAXeAj^Sx z?%f7e)Q68YLj&!C^zPcSliH|LK1a{Hu6>+7A&O;|q zS9A>aZy|12wXd%ulx3<64B~_1TY78*0yiE&)l+rY%C>QSDzg{ggv7HQyE?b*z_%N5 zYm{7Y+p~*zP$4~?P(@bd0J4D_2L`)#^6Q_w@Qq0sl6+FqHoaH$ntjl{cPsDEaL1PG zsrNWC(-`x24|EN5Y}r8&26tJwq46v@fEp;+V`}yFcR@4v^mc9S*wq)bl-1t&^oSV; z3gcc7Yi$p%^&UCq5T4)DpZe3e@OmAjhFDL(pr_!c;D?YY>CbAn9ZIG~ z&F`i@aMj90{ZkZ9emApyHUEgs9vnR6Rboaz0Pa%GM`_0WPug@2B*M-uJ^bnk0649^ zlckp7h^#&3hz;`Ghpi1#4T-n9TqmIgA;yx_UdKg?#Qg^OP5re_tbs&)J%r&kzN&&f zuuY7OQraEu<&^w7Bgnc&EBVFC-D7SG|FrSXppN55L7b1^?{q1x(68jW(913qi0aa1 zP|v!GRs2JGn*2hL^S9e1p>CLJLRmI z&joyeV{gxnt({viH-*cbPe|)W&r|DX?Z1d1-MM97!0X~WM9p-=%O5#mdASrkWenF; zsTT(>b_?Vi&J*O$)*U;x^l#f^(IWHc@u2Ta(6^`1@p&dl2R?deKMMm^aPGn%<$UQp z4eRU)GPq-403MQ+J!k35g&e|RT`fbyuLXE~vkRXHg5@$ZwN=d#BofoxF|A>Wz5n0| zdAbcw5=~3^J~3F^^dA(gO^Tv8Og@S->`rX+)wZYLzLdB|P$-C*0{BEM4WZ;8&*%c& zry5}nwxa=8Px7bg3-DXu)01*x%+)~jsR5X%5IKctFqt^U>aZe_QR)6UsJ*Y(e6Gmy z*?H!rPJU}G>#jp$keA-}Kh8@#VbPcY=A30(3$zd*;0#wBf6&hC0>c!E_Hs4GyTJ7m zhkUQToIH`}h8@3!6jW(Asd0Ek-fsWS?42q&lD*I6b_98%CibB}<(xP1xorK$j_y7f z=|+5toH+iF9SIbzQuyQgb37N4qC@&_KTr5~M5lFZ@7mD^|H1-*Re20=A_zU47Ccw& zaQ5P&Z=h@U)?G9DyI?FDQ1)zrRT%_i!UhV!K4mZ{B0x?Z;Mv)=b65Y3+2G7@VWSX# zMUBL;WodOvK(B8yMuYjT77fajUrPEdZoCrm<#PuS%TSA-_peMmo%kG{su7P!*~6Jk zxh{4kR^aZ^YN<{=&*;IE5<`KwSqB^RkS=J{buec<|E=N)(+w|{bfcI?NF(0BFbHEc z6m1Ho5(L(uE{72YhjWDFZIjT=3fk^ zxNSElkA!Ys-SIiYw6N3nEz06ww0yaHt)wBe7datc`0nOtnRds_YK#ijT?NgkyRH z(V!|0Noija=_7E{iN#iphylfY<=b_M8ZE(=fs=X^VMF)~^-iLz67?6bG!ciXI;rE8 z8RCIhSgg|o<{t$Z?Ura&tE$@2!(3neJ3>?pv80UpKG*8_ZDJ}{9;4!;wygV-M6QYjOD+O*arF}nWHKb{LXabM0zp3oeg!Hj zjsWWx8Q}e=4m1Lyzi}HaNUD%}_pv;no?^{g5ZyEgz7iwP2x8Od0V4yx{}ojt4N*d> z&*wGt2!lKS0MIDqD^=YQD1Wte5OJ-^$e03P=jqZlyorH~uDbUi87837A&d_J!hb}4 zUCJiND@;NcsOCpJ2IiG$!?&C#X?*sg60Uha_24i{(a58ckJ+hIXvEQKDloBs5T^o< zSL%YhfXLMtIc_)Nw%yLFZP{NtZ%_otUFav4;+KXDgUB?EAP}@FZ37z4v&peMVMIuZ13V5fC-_RHQ=8-~Iv~!VC9R>+_LEX@94M_U$2P7fV~vteDQ}V=n;c*^&c! zhnyXUnDh6Tw&?KDgRYkVho<26D(83q<2(cx2&+!kGd>;D4B@TZ>d-)B6)9|coMK&T zI0iI~HS^0Y?6h}k`8ofo2_SHU$ z0C+S7aC!XQuxpy}t3H0v7&N=fWl75I)Zj8#m9%stVD78_Mm-Kr5?7E8Lzc3Mt3<6S zzX9Yg?MFuIb|YW*BFVL=)#clSZ{3Erx;mX!gLM+kDKTDEI}9f-e!16ce>PcPtc0HD z{XvHO>8vS#4}(={e-qiO7)DuA4KQ95_ZNv?OV#TMvvg`DO3QdL+^b}Hq`+^5lUMx& z<=h~0)xZ(4oG{L*C#B_f9e)_e5F00sMHE89h>}u>l8JOwTVM=n$|(K8Tq z^9}J*9z9RpoW1JB3UODb1>&q1s6(?m8?4WHt)H}$vfAistY^Y%O+%jhGdQbmMBtPz z;4)A?ykhHCgS!vdnC8R&wRjBmOkd)1+`21t;ZkI@im^7P1@g097A7%OG1K=6Bf>bJ z)UIQVc(_SsqQ>%|f^n3(PP+~MTxk;S3A7IZ0edggSj1C)58an$@~Qw!lOU~Tz%o`F zWPT10Gb-LD@X|(CGu-lFVAFo0H3CZ9znWr4r(oE+YY~uFeO!erX*}e22z&y8t3D#u zTL_#dp}>6giG%g0M&c1P^c9LiUw!i6Apwo?BQYAs`kb=k)I}UG%|p6!9Bw(#n9*Z4 z3r2}7pmVK3=iu<@Yy;49L6X^68&($F2lByvM!@~h!PDUH5TJP0fcqf}u3++84p1pU ztoBC#4vQ4q&)f3*`A_NR9*Y*#AC|Y&?@d2E1(3&8(eYiKW<^ zS|W5zZzR>~{T)OB+2ac{s1T8bX>3A2-g5K`mX~ZSjtzoBI(}me_8bb(ZSqQ zt{c&;`(UI0{s4GOw66x87;8JNJ}lt>s|9~pqLG)sWWfLIfv0l3{6QB)lLdOHb)$9H zpy;=QF6=nkasp!W5RRtwhzJOB^u0v98Y#Z=&cO;3C&f&OV`IcZ(c(}#`=F5_HVk`C zCI6 zHuTJycM;Y|ZrldpTfc#EOYB4SZh6!S+m{@7+_-J+Gk34vwr%FZ)^X#c|Hq{NPvY+x zV_$il=l2Ya5($;%6*sWrg$ZXjC@kn;IEZy(7~8JjF{2YJvNkYgTAB^*%cY&qV|7$H zmk$@bJKMe@2t2!CoW1(&+TJm+9kI7L9TIvpHbXYk1aot06(b58%}55C)ZAJl8HwRc zVPuDFXQX6fnBDJ%q%6Xl2q02JtY%gZHkRSuSkR9L{4}QzWU<(6wwJiOntOgR-IW=-mJrAwUf0nwCf5X!>d_1SAGcs z#u%0<)@lCOCIM}M8f??0kLvOS7N}ts({rt9(Pb^Lh8Otm6@$989l_A!!#xDJSJI)u zx?F`{i~VE!xX)_0E>az6xB^>!KoT_p-gKF|dXS!RVl~T;V)<%j*6ZnNbm9b_++=XK zZ3qqTs1UKJfmLp4%3KSC6~dOEj6_Kbo^8{!aXZSNuSL{~Qli9Osyg?L^< z?de8iSf;`j2ed+8kNc-ePhcCve3B3PoKWClBMbf)%z_4iXbkw{VF zBqO@_FH+McSNorrBtnB=w+vl^Z34~?TZ&T2UG0C?CTae=hyB}al74qxi*A5GTM32YIiN*>YEP`-Sv&M?6FsNJr2SYjLse!A>X4Ys79YSAOM>Ko;^ z><&iIt|ZgaATl-!L-e$?89$rgXEx(zHA1Kp67zV6EIxWWpsGc13_-X-DJ?r()DN9w z9IyQ0N{%ak7*tnBP;fkE8a;jp9khatnW&A>&xaJWSz5s*rF{c3( z7gh+}+bvM{ihzmviN}y>K$(hwz$Cz_l5JR3z;q|XwE1h)zP4tj$^mwTj;+z7XtOgS zXoe9CXLW^oA9q5wv>fX8AI6;hkz)w58r57f?d;Vg~_!47d>MQ%FsyGvqoSo z9FE4oiG{Z!^fS)C1Bn~k{3RKP+G@4;kREYdSKoq4SHd%(o>S}exQmf)Hz~w5CD*?@ zvpw-ofS`I%`Y@A%a#|srxfvo6Op!DbraJM0kdE_#B%~|MpiHWir7&q8|B{(BX16qb z32<>Ul`dUnTFRJYaPQpR)~8A|hYNt!S0hA?TW&bV;%BR!*KlsfEx0869iU9_y?T4Lq_4XT^ zR#~&SemLQpZ|sSQcIx8=+qMqw+CnkcKe%gaZ@=B?A-Tpdbkr2eJZzl+ z7BPK^V9!t7FC+9gA{Y?ID1k~>H*dqEJ=8tOUdDSiDRNg;R$Y}JaU zVk159edeNKB^I|@G}ihq>BiD&HzR`!QLrLgu=f$^4Ea|g9}3rW2QD>YkRrlU*Z^Yl z_n~0`hw{g@SIt~m1NsjR&EdNI8C`~Rz-PD7MMII>r9&M|;S-Fbb--p&r$`qFFI&4kuq(Bo)`@g%Ix9^kCV zDqUDJ@Q>-{UJc7dY;Ci0&B@dbIp$3*7a{CkDe=GnT7L(M41f+s#e^oM9l-a=AByIKj%t~AGZ z6h*1O-rt6dLiKO(kkXg#(S@zZPO4A7fqOz$<59JG963Cofq%M)R(qy}Rk7i1zxWMO z|JxojlgMKjtM#f%9%11g5J*P1XAsLNsPNVUiAFXf&Au1TlvnOQ#cIC#9@>J0z!OhB z;I&Cx-$Ps2m_lV)tP@wE*h)AGt;bL(raq|-p-@77;bv}wj;YV8`bK2L)!~~@4#4SH z3=A!hCy%RR-3ff;nz*w83lsIPQsY&47~}T4D(- ztgP8z-{9;n#G!yQ{700<;j}CNBhq4WHEy348A=i9Q^r55 z6EFp);lWin%Ea|9RPx{oqg^aA{_JMrrCQxij8%YoSPO!m1t$uA7WMk=;D|J0nK(!@ z1NIgvi)z2!Z>qf|50*XXhn^ERH{=2GV*v!GY4QMpp@4M(|DVr!1cXGrcyn8~-}0!8 z;a7;`dF2Mcw;nixJWu_~CFNpZkHH}QWmDoV_?Darw005cJ0h~QmTL;M>oLZgj?nuq z(FHxSUFhM1(CI=~RG^C)+osday6{KR?kBx&>E|E!(}@2K5Ll@0Isl?^TalsLCvr>) zdOxur`!5vW|(@I7KNeiMNLBC6E`0TB?<{_X)Y>E7!O zCI*2Xbc-zM7p*+!91(n~R-Kd;Q;a|DKXMXB;e7SpgU8S|tH;zsUZa_h-@pvxD3aI+ ziBn$mJaCeXKNLTAOaJ$?{~RMTzWe(F^}@();0FW`EEfZq?+JX>%7}~HjCu&YFi0>A z7w4wan#gq0@hfy}2I}1aNPs8qrplWDr>e@C2w;CaI4*n=Kof&}%FYh98f=NP z^ZT>e`5gtww)$^I_MwA^jA(pk4nN+l78Rf`qUe~oX@$t1LI{NXE$d_VW_)iVQ~`W0 zMtWdMs#&f#u`-Wx!fOdq;(lGrpAX}>;YeSNev0uMO7~PPsWMY1fdA1Gwh3Sl z@9Bsg<{g#`%wbl1y*%J0Q=ehu6PoCMo-y>X&mq1$kz&zhm7 zv_h#7XlWoeVDy;=VL^Hz)4QZht2KD?MuP!tm-&IX+AquC?>&z;{aN}<_843zmy05! zAG-UXhvHXv9vID+h)C4+#qHI1ea5G!=&)&wiz;dskmq??rPB3rOX#Pk4(RwuzXM%Q2B< zGvgeIk39TZKs?aZb;GVvTDoakTPeH^cu$PV! zIDr*-{xZmA=>fU5V15r@x%nyqph_y4(FVoHU~`yHkMh4nTOawV#NP&17Yy!jELXk|Iyf&l_#Wl0BAjI^->Iot{`?i3q`e8&v)vL8C&zE+c|q*jY^1@g_L@^63JbZkj6 zXg=S8!Z%C+tvo}>z(0g%TceIaigFcbp?^f)1hH7h=8I%42Q=zS4i;|+-LDzGVh(_U zRh(u6{&F3^pIiF;1t`H&2mlEyGKeM2Kn6GGv+8Pr-a~AOqrkznA~3hA!BVp*&=w1~NZn9Cv^Cxp9UKf3CexJfV|;etLV;fSOP z#2BnTI)-0MOPSjc)QyLxULg(B5T*q(Kc9VU{FwA9ygI;wYL zA380?!u{G`3bmmYv@u53i|+Wwm9l!&y3JTtWZc6XUG5+_c_EGblC!(7P`O=jrk2m%f;YUiihdn4s8cKsU()>;Gd%; zprL`2(Pg)4yvQYn)g~%NjHdRGAk>5NqCtFbE5^@OJnX8)0Kh674CIfQa|yIjdh23F zjrgV&>XvN};s(wWBNghi2NU&X<)e*|NmGTY1940>mT=rAIRYA1a!>)$dv=%j6%$=} z;|UTFdB7af$uE-u&@;l5eYzY}o{sE&#xPg@CxtzH3c^;j(x=sIKo6?Jyer|Nsm3!1 zk2c}?t;fQ}lm38K?Y20=4XVFIJf=Eh2&TXg+@3;4QE5aG0L|sJ32Y~>dh@{}0M+w@ zIf<9f7(Qm%%Sq$YO-Jlz#&pCXP8=_hW{v`DB#C>ej$Iuzh2IB&GxY{H&HTev@L%whKCh?RM0*R~#Ily@Yc5qt{v6R|}Sd?^oin=KCG?h>W#WC{! zW5N`$d42U3_mI@|7SVgR|77zlLe>d289`=OwKwW2RRq?eNLgrnMTJ*Ql;h0QE^Obx zJCp!LhH+Uyi)nBx(vRYn7~Q7J87P1o%pYV)vMs?k7qO8_9C5-V=Ds{+lpT|;e^_T5 zi^fK{dYTV%C4Q-6^}3X(x?5~Ngl*=DDZffDwkEwCH9TaJEm}70G)kWy0v>$X0_}cV zNRmYU{l)WsCergm86g2K;tRbr}&}+r)SVg52sx?AKT8PC(Yq z5?suzHPv3`r64kJpp6K-SBi+A%@`tfAmEi*$zS5h z9WqFXrycdVo65A7^gpa)cgwRl_CTvXj^U`VN&HsauEquca7{CA+j(q}TPVP4qbP(E z=Hz>-S(hRQieWW~zghTi6nA)619d_b*`$=0)`Ws72?4GJ(03Mi2lvG2)tf zJqBoJ+zis0K@%L+@V)7xXGndh4)mTH6mG#1jiI6mM`BAwwM0H9?$*W4Iz3YtU!o`C z2y8RowH3o+HTl+rjrmJF{2iI>Z8u|MAe0NVJcXcv45BC_9u-7>)hb{fa%ZdduLBPD z4Pp-qq*I#F=T03%R0UgoHlb=Ox}gM+02+R|14vYiS=7Ncvc`IiekRvzu8L5&9OaB- z8IYPvIN^U*JUY%y1Mkx^X4oZfIsmBy6NTlWkr^*^)%Sv!6izfe}`R~?6;4IiG42x3aNT{I=t8QjM=52I}2V*&~GMwATl<#c8RuZ*N zcB=i0M6)P`wqrjFT;SVqOOA))Zp2orx5_S;v7F{ciF4+u!EW_a=P8U!E#|gCkdk=$~fdCt*@kGfrBC5-9jsZ%=Z>BxU_pbp`nsvKzi)LAE_5Gj% z;to)@$WCG1DUKC-Y;rL@lMkO@JO!+H4EH!Y!Rf5Q`3%ef5p0A3ZBq7jOIZ_VO-4=&TYv#{yUjZhw!A3iWGnhf*)^hsN{OX3$Svz{MSyb7+n4aD(0z z6A61E{{o#a^jk1k$@!H|eA?z&@^O|}G? zgo|Vh{33L%ufPHx-sQJR3ZfX7C5#ZI03iEw9T8Y$y@h*hL&k8UFd!_!FQc14j;tmM z{ZbHI4DOm8DdgQ0toRshCet$4jM+ml@op3HC@>?D95aFs&xLi6=6Vy$KVhE-!I`I_ zx5$>-}gVaoE@;(D@jbAjyZZ02qDs4Xi*>pjZB0bA1EhW~e}{9jI?R44A8_C+t`g zOKq??Q6-%epw$GK-7McGFeN!OB1H%f*isOCcsUbnVaOPd>)CKjV(L4P1f01rnGjHC z%)La%L6TbmQ4fKkxPq!eU|*IpA!>f$F*B*|-(P=>CrV22gz$4=Q}ZceJ?s^FF>_cf zYk)qY<*-@9Q2rauZXf??hJ_G5M^VP|xtte+qT%-FI5%eBZ(--sAPh+`6J`!d@^9#m zyoxHOevSonUkadk^}vDW(Sj^XVkz#Bm`SkVghOz!7IaYW!(m&F9Ik}q+X;Va8DvE} zSrVK4YW>e)v>ivVUt%ned3{Jm3Idd1$NEfNcrjI037B*>#6@xfa7Wq5kpM?~A+XdOS8qtk&b985ZgBSLovHI=+g?GIeEvlt^PU ziKi{n+r@?f!h6lSM$(v9{KYO4NkTE2Y=pCD_Cj~j;6pR8?h*_6 z!cWX;kSSITm0)BlnUee2IO}-k8rr*zFEc=e#q*&Y)q|L^G5?Js0U#9kPS!SE{zv4g z4|-;WyWj;*RdPHmxdRgI5M$U!j!4*d0}9Swhybn_3QX+kL5TX33TA*DAfQ^PJOq94 zI@pR-jzo8AQ;2%r^0BMo$XM!2F@-HELP z0OR*!#l!StPis+2UiW8cPL3+MN~a+&_VO?FZ7omcLEQkJdoY6R(7u15&99e%l>@Qx zQh$JDNgPBtr2ZO55y>_&g>#HFYp~mxkG|&sGnN_?L3XR<+nDb#EK!+=k5a zJoVI5b?Vfqb55N)b&5Tq>4$B8!oA6y5eb8}(tYhpqJ-s$cgto}N~)mZdq`mAOnY+N zM#P!X{xb>-oS*~k&i&Zx94Q=Xwb%T?1v}$FY1j&_BPHx?lbri$dMf!W)qR|8f0j*3 zqR$temlnPf17%Ym!%p%%*CW2R0asYfKknXDq^+Uh0N-B%Tl z`cSZiH5Fx<7}TO{QAhrb;l@3v_(BQeD8G^P`z`q>A*WA&G_Fujjk&T}%Ikz8FgU83 z&H&(gFEbx*ZR;1ChHS_u)#!ZJ^3tL$B$fDlkU#5Idl2+MIdgrmOh`?&<=lI(L?73! zbrZg9mJE68%KX9}=Y?dd)-!xJBwIX8Ad(g#<_0^gV6K(1X;nP|J)ns{WEq8u;xu8q zN%p%*oR62Ev5N`6;0f1$y7VrHji}vMvDb}(w<#IUL^ijD6vkVPyIYD*zX2$AoOfTp z5~8VLe{k*$`b4r;44e?}*GQ zs|$TAFpWozPKKSxC)<42coWq1*+zV3GLTXuL*9A^2TCzMo1iKFb?+$meOQ%^@H@>D zGwq(Ir6`Z|F;u+uYDT8}IfPP}{MIO*xlE((SB|y=0*D#z-L%AKL{Z162Oy*)bd~++ zK1)zjMBafe}K_^AA6I~KdBMJ?Z4sXPwADu^aI=z8}{h=Q7luQ z)b6+P4sz#G8NGRo_mUTb)q9)PZ4(R+>kmK^no5-Fo&YMz^WnhJdm<^Dy$#^^%=t{G z2B4cI0Z35UW#>IS*X@~5Q+I1Q10aod+O`Wm-=*;d0a{% z^j@zowO@`(b@#4$g%zf9t4EV=4Xa1NkN%}mL>totDDBpxVXdKa@24HK2(9=;v%$u#*1iLHs5>GKN1`onMy`B{hZAK7)53lqY!C!VP=2~wZRC6lz3X)L1*K5z8B~x z`bqdne)O_*pq#l``irx=J%lm|xUR>OeGN!pJ>kx3d1m=k>bK|c$RyIw^@AhZR>MV; zR@97P3_B+ODl9q=#RayJ3`ype*m-xGJXzN#5=Jn?0Lw3}WpYqY`vg(a`u#vj=KY@P z=f`e~)%{Xz?{zs++WEmiO8;r@>S2QmD;5E9FiR;`n8GmO5avdMy_O-qffq6&5ic5- zFp_0a*Q&J%pp&s)XcBdaQK9Sua@}TsXOK_a#E3>Ve(9R@Jce|odo0z; zv-cB~7k1H$8XGY=D##(X;XHn8vRQ3W%So4f<sWq_mMQRkhk4RACKnmDaMEYuW_laIEk#o-RT~~<>I}m7()%m%)YHTI$dl{*k4K}_3>Hs|SnDzmQT*T>t zJCV~8wpwk&`CME<>Xi!U^}zDd;G$7V^%e#$(g_5#rg#7?O;Qa^YxNbY7PlUWpbjpc zJ4Gmj_%pdV)@gY-KT=cHNNsEp;#h8C3Bq=21oQNY;IL@+?hpxkCmgmr)<8j zZbhkiEp=g_hvN8KFoo|^UB~UPcG;dz5r|9zYRBbxF**i_f|dfD7Vp!pONQ=RbzIi{ zBeMyF=iR2Or1|K%&uc!LWDUq&K;n4!H}x)5=ZBR_me;?Lso2`SkF6Z_Afws2Hr{Ic z9{rVJZvHSZ)Iu+CQ1|I;^7WZh@IfUoCWArx=k&&efq?1EVQ|sl$>u(0iw8t}BH&Mb zuKpVoH_ml0Vez}L2fc+W?1W|t-6zD zl2K@X|HrIa#YY;USDwByIT2e1o4zhgn!~)xEx_Bwt)FXMD!Y7vd^ky_9OcmMDk10o zsFvGp1ko6)Qru_5P|OrTD!Ger87L;utTpbF8{{Q#sqSBdb}OBki?0P#`2Aw;t_^;+ zEL;W%vhE1hS9ox_Ul%w=U={jG+jj@>h-F03(cA^g1`)|mgp}?xeH^1tH9MDQZEc*2 z{iMpBF9QNy^sgBvQkijLS*^eV2iS2H0~1$n*rsiOkTB&jmnu`(Oem8@bXV4;wb8aW(1IV`m zTs7|cQVa#`d&>Y@*lPD`Ar+sxKE21r`Ag=D!Em&Ir$;lU3Gh*UDp;N`c;V|~N4%CB z1{=ccn@PGE z@6EkH!%vJId(CqjSl=WI?I>u6^SyF-G0QQSvD_n);sg75=K19Rv2B?^Ubs`xAT_d# zD~AP`hD4ow7WtUVlrm&IDjdN_sWd;vsF2lw^sS9kCv75DK}LH6Bof8||2Xy>@ibZ+ z$iO!yJQDM62by3qH!se};FOH^qV>YDV@!f&a_c85X`ZGB#9x%YpUGV~fsfNz1o>(V zMbER6l`r3F+aPS{I7Q^zs~8q18Z3sB^o3N0(quDa?%LEV`)>@)k2LGlM*&@I{s6YW=!^#pI4@|S`)7a*k&TH&HsFT-mwA$qHta3Oh$1Qh zKtiMeAt81+=0Nx*phUfP$S`vDu(i-vba$*s7*r@!hf?kcL@xg!uQ(})<#sU7-1ryj zF`2kUL@#kuTWu|Xct06dEA;v)!VbDh&r{&3M%8Kembnk3`}ovDO_>mOh}6q)JB1op z(N_ZI_N1FiZ^35|6pZ)mPD7s-8uf{RR3Y@Vkxp`)HG+QnKO;dinVkDK8)u0u)h3iJ zWvtaw>DFr#U?bBxPb!aH-J=at(9>5SBh~x6ezPs@)(o5QRA1-Qfx>+T0JjCRZj;nNEf;;BUgCdcT8@x;8BVM4HQim{m zI2q9aDlnalz>6sN6N8D-foHt9L?(Bfkt+Ore7MmH8RR6tLH6t6RgBu+nv5iXl>+th zX{`*>HpK9)2{UAc!;rZ$!?ZTMoT&YGpk4E%+l*-C?h;;(ewayV`fU89LD|jM_y9Xu z#j#CrBcU9KA2(F^*~d@_kbMG2BiMicE2NhI10>1I=fu%uqf{PQD>Z}2HMgkn)$EZJ zX-f~J)SM<&Buo1NYef4aez5I$@4$tRA}aAY(0;b1VmcxK;-vI6PSS$S+hzQXej2Q0 zt92MP^c5w_r^np~v|ivw%=Fi-ep_DbzM?jpbKe3hYCO(4)}Bv8XTnmf$7~eZXXSFY zzLsHxIT`XS^w`Cr$2jZry;k3i{p*V(<;?4-5XK6k_97C?juahF0Pc(gzH-fu{(Y#X zX63vEYsbw?44Y*%jdIs&8sdT8j-pi(0WHgxX1Q5e?2%6s13C5zX?^ON&s@`L1n~r> zCzj!8RMzdn_*$_AiWtLsD|0!);_VL)hvxc;8WvAgV)mweX9w`5h*B1aucaN{WgjB4 zw$LVQ@gkqZU9=kzdx228lC#)e(Ly1w7EH!-$(zZY?MHyzgcH{x+_;f*t?zACfr@V` z&Z{y*uqiJ{g#TehK@F7=A!sS+Y)jC>aeMM^ilEbvpieXPN#`blN7R^KU(FaAl}wCk z%uqK_ENV+#QltGAmswGa@f$!k?XKb9Up72U{rI1U_~0_GGU_&aRiz zm-dgGi}J8$yZg(zP_CMCG14(ePS-oYw&~z5#ORIuL=C@FwTx6iU~rmuU%W>9+ef;u zr=--XO^;f8Mm&LMmHk4|2DS0Z(W;ycUUp{NZxPbJ4dei2aBVCc{f@LiD;Ne z5I-V@gN1^aB`(L*1;wPsWT1DducaGt3Wi9IaE~Qg6&T^Ze8pT@gm51GJbNu5BUXPZ z-CFG32u&U_3m=N~NaqhUvvbzl(6U6skx)U?)8Bln{-R#%g13;ntS>p@UE&fKGjBqP zlmiCCTXQ+eeBz2et%RyxvM{794}lTcl%l2p%vZ12>f<*&BBoa1wv&mx2TK&W6~N>U z21K_)nx0aRfI3y(o={YUkDfszs7GV=p(|{2omPp`@P*n2**4|?FWU0ax=4-GzOk`0 zP}@kOz++jVm`}0t2wf%J*sW8jh#Lw?IrpKo%+S zsWYs?TTB3ZsKGx@vMrq)uF7{O$LX@wKY1%VfK}zrB1iR1RsG=A&-4e1c%I<$n|A7p zTpM6ocflGaxS!A#RHAK&2@Z_VxSd0L*zh@yS5g?=XSBqlmM)9UDJe|;G^_=&UjmOL zIR_yz*p{Fp-t%8CNl3e6=c21q+)kWre9-VFTX?Ku*SJ=6?Hrk}+ol0d4#S$9&)p`U zU_9v*BR$Vn3tdV19Bwn*)w*G9;c?wE=DJ}*yOv)P3kV5{BLdBFxQ6W|+V-Wd9=!&a zIB-<^LIFi5sgr0GPL0RLOzd6*S{?GF<45SWe%KjfZ+J!Yj3RcLUf{m2P^^)IFSg!q zE%Ml@bq`*HO2OCPw&L#_P&{t}aS7$05RQ@PzWMI46kdFM`mqu`63!Jf#8Ge2VPjSJ z(RzI1%h?~F9~VAZNC|jEe1Q-lugBcVz$G_^O4czUOFWv!XgV+-e!;wICfetLxis7z zWJBV~6!tfeV6icOo9wW{&Q{RCk+@)vu?X!DHFdsI{W82B-P6QXV{!rn?A&P70NsG1 z$#(UIZ_rAb~)yQ=HZ=aQIBz7a0={cURFD(G6=k9*=D}asl;rO&w^5v#62W zqv`b6Q7o0~m@#>~$b>M(t$!hTlN-x&w|l1w-OMBt)tk~lN#3oiPbP~rliZ7=NMaXN zz3MrDO{ScFLv-meC-UwjUeGi^bDSMYf*`)#t|#;*$JZyg+Vb~kb@m5g+N0PGg;mFR z1uN}7{~gI;e3!J^s!L6e;!o=ZIH%}QoF3yob|n*n$ht~~z)w*iRLX3q?1n3gd|{Jn zBrx6>_xr4dxck7Bf%cDuOq+l)j3Elpioe{u!8$|jHeAbMMJ0pcH&ld!l{5)fqpqZt zVT@T#eh{QDoxuS-jDlkE_F0mij;GaB_vlqUVEs|}_EeM|fxXJu%lMmpcwtyNK1|kC zFu*U-znsdZ&Qho5SIGwOrkr^rLQW;!1Vp2r35@C%N>z{iyOEQK$Lp`Smn2vwjHZSB z`2pp*-`a?OYm@1^>Au!c_^Qx)VEe}hu;g|lxUWd(_-0&AlM~vYEi$CU4yX}V>RB6K0 zjyN6(g%#8hpy7dJ#21qqPKIEAHk~W9T;?&nl}wxisZ(}G%f2Gg$0-ngNx-YTo2((~ zzJ1j*<)Jg!75$6+s8QA#tWfy+)pGd9udfOLjq;1=23D-ZJ~Xn~)?YhM?1LZydAWW? z9x_$%-KQFjIye&;-E1<;_b}2*sc520dG=7zF^c2F6;zw2xjbNQgAtEQj`$FnC47#+ z6-K)_zd|xnv_6?hm^$nb8VH<-24%I=Y=Z}>UdJXec2yAEz>@95NQo*2a#Fy@+?=~x_RERMp$g()L~*Ekls*%K z`E4xE$Ur;F6I6BaiV27;d5VA5wky*O1dGFGJc|}WSJ&kJwIn^0`(;w|^^$~PXRF&6 zS>L=MA$^B4waQVU>c)XEnT--KL1RSSz%aN2fn;vab7Xj?U2~ze_aw>b$*8MM8%V~E z_1G3z?-GU6$#<{c;ql(+HRMKAIn2U8fF?B8H)Zrr^q0}@mrw;`>NXY=qbNWbMH3sz zE4ABg=M~E6=>=u9v@jG*4%?aaEdE%W+h?Dc5#hn}4f8;-rAs3RIw zN$%rn3NB7;Moi~+@1W7mrfB}r6r|x&K~dC!30t>3Rgw?F^))V+SplGtB|0JKty7Z& zmCcQQVXTQi={cDl%cmGEpc&hhcMN8USv0b7EGhOOVPKDnEDgN5&m|RpGca7?C>4h>R2TXF zWb5_EZzl7uM`3za@7?rUlat6mu!!ta^ieM$y3_KL1kXfkss#x^04ozSDqTd>F&6$i zd?w90ZZ5ChyWE-9EEeGMZZ;12p4BVPtytjfiLY=$^3(ex2MKfGRXzuWz0=3-*G^@3Y%*d7#{<~k+%nC<4_5L5j1;)MI_5w) z{Su+cO$jmi>mCi3ksH`B1wVEutVC>w%?P@*>w(27j%xKqyn@HLPvD5g+wnpVao^?g zV0*kXM~q|=`K;_8?lV{T^(Q@9XG-_@4OQRlgG05We^9!}fPe?CQhb(IMEAVPcFqm~ z1Rbx>T<%-I@qiaaL%<?X4!NZ}a0LSlS_)(|A)xM5}WuV|g8U6ysJL`7HM0$qY zWFF9@;}rxS*>>=$b0Z4v*_i3`NbTr{ROaS3AJ2!`nMGrD|EVSOAu+2tX_foOdPqvc z%+M$0dlwqhL^Kk`Hxk!DTar&CBS9it-1r8gbD$$ycSU}Us9n7j8p)?NX{olzH*i(0 z_@n7!3`n45mp{@v$0Sw<+eNHmOuc(T7v|T-z8s$K$!VhRCiEe))5)7RC5M>n>xg#g zUorwqpI~f%IfKDRwDwPeuk=|r#ZiHTt zE;qoV-OpJx9X2yLdRB6P<`AH zAMh0=urXNgexylhW;`}zqmOZ%{O!KL!lQIohPs>JnHA9s+!Luj)#_#_XBwXsDRm4t zPBk))O@kEySc52GgWxd9qlswU3S%`Z8K-?>vnJRee#<+O5l8cQj-5(6K_zANG&vDX8 zzfQgZVx-UEvB%+d;|ObmAizZEk6~;L5z4#bZxL;h&!;wyb;)!;~NCI;g0W2FeYMkj>we;QS6G-z%@Yo5` zL=AGCBE8ESXVR*7Q38nkAo{>aZV4Qnsn@>Gocm%YcJkZ}woi2{O2Aa=!D`6%7j7zV z6>S2S9-=D*=V@xe{1B306}9eVj-jo|J;Ow%&fRbMESi)y47*3Kz(8+jo>x11eHa!L z9gR2qG?hE7Rg3Y`o9?m>ao8y7xP&lCIg}Q7G`d2c2GcJIo0BJYGc&nbI#|mD-(!0pNDPRSp^BQUHanKlIU@fAB01&9h2-*_hpLq z$oNVTjDPW9j2i$3Q)8d?)?(J{z#Bt(Jj_P`7IF6-3P#R+7t<}+W&fzqBjQy`joS%? zxm6ra0q|<8&GdhWP#@#&!K-Ved-e)#<#pf4N~~&a=D{nsx_8;D|6S+ud`t(*~ zNO^=Z^?l|FPC(%-XZLreo;kF2NakmdOrXt&GMH2<(H!$5pHUh2(F@WUj1Vuz;es}B z0vUujOW_#^+Xt@daJ&%pT4DbWX5vuTlN?gW1k@K+=MF98`E)VQpGxx#*QqRW0R^c4 zjzCqokAg!HY7wk^088;I6@y`9Jp(ZBK8)L|w-DdL?vT2Vz<&qtY5xJfKy(7F!YPP|Bb!B!`}byicRVH(FhPg$`=nbqSpCK${K!)W)(S(#YuFLW3Mj2gez65AfU!1fPJ_1YV2w zcj8t%5)ww!kDR? zYi2?sAKBX{nEefRkHGi~ZvpqtwRT{^CYIl<-Tz?W-Q_-RUu@-zD)%$Ks34FwzFkP_ z4lDBk+AlR@B!|q<>EPf+R_LW!aM+QSdSrt8JAfRZQ#_48++S$6tSuv;5ZE8zfMcuY zHmm2iu^t#9EBRK>7pP~7)$=pe1HAu3J@BVY9S$D9z`enx+V{ie+Tf1StfQ}9VWYMW z>|6JAumK!piV6ob;uXm196g$0uf_RnjO188`AE+kVJB#3W?~~m<-~CX<^`s>>h)Ni zKly8W>>W+JrQ?j3{)h&gab0MREea);&0RORz-7e(>+FL>OV}!xK47dn776t{Q6WX8 z?q*rhmqW9L+K42pwU9GS_8?#@1esq=l13{gs$JyRKA0=z6}keTCTS8aUqC-CJuf-n zqy&#Aq83)oRD>q~1-|TzK0Ckg#egS`-%Rc$#X_sfFgqhrImARI2E2klCuT}uG zM6nd-(OMkNv0}c7gYm=zN%Icss>9S23l|1a5l$2QU`w5yjJSxhy6R6tXJZ)?n6&Df zW~Ej81&Lr{yU78?%wL3sQtFA`l6kf*6sJ!Qc1`~URmt5%eQa@2SY6a3&DDi%&Gr&& zN66%#nT&>K%N8EbOsbWN51qXvOo^_xO5<}g4aVrE_S~VHB-ue%`2fp_TgZ2Anud*b z^n=9Vp>5ZfZQJzNwg91OVE3R^#I^`s&(I(I3N3A)Kn}?02eRU7Ff|Zh7SvbWy1-^C z9It`GtiAqVN2E81!sxpwY|-IBVHl+((U?Xp_GA%-h}Z@+FyHue;1!mCeG`ff%hR zd?}kbiZo)ZW)2glbsY1CHny~}wVNlMV2k#Hx`7{f6>`UBZMZFEv}!1#V4&|oD&V{7 z_k+r}vW|Fu;w7uVrONc-g)6ZCXZ+6mu}ihp)na>EFhM*Eq2KS`X zr8ic>tunB4V+4J3>9##QPlI7-rsl&pSLD8^KqbsIFgWOxDN4eiz@}zwhZc=vbk2Rx z4k4>__d9K~n!vNpUDLCjyQT!82m^pl#DPXdPE|Pg%e(Vk)}T!8yC&u*yNLt>a;sSK zS(;Rz$NQx=0XNQ2!-9dv!srezJ~1y>Tpvvjeo$_aTPH) zxt7N}LQ8HlrZ{tHFT4(Bk?}3e==eJkLj~%tcrR3z!SaA}b}s)@Nt5SHNm1<05r_iT zv$OL=3Uam(YU*@zB=`7%ldQ0Aa?niN<@L#tvXSeK@hxJ*-=66YF>Y8cj+NEu z8-5AH-IDtW?P6JsPnWByKKLWTNc=3z(i9RjI)NJhWQir0pKNvoNy%4$d z+^H$Tos5t5K;Puo&>F$b+cS&GVW2l>E|comLwHt)8NxhU(;^Wgz99guCoHM z8A@!c#XkI0{$K%~u+opI26T~G7X1n$5IQsy*%)hewj*KeG=O@HTW`3sCK`@|AeVGo$#@%TSISiuI$xG zazBk_8Uo-nxbZy1aTN!G@Y}D_A*`73*9TCIDnG_BnBLR=#zSF-V6Q0zY#f zmj9U<%}gdD3l;67*QoAbhKgIK-2?}~LI{ziy$^UO*{w#n*JcJq4O>P#0 z@=ZL`6yL>uQ%X@m@na+g%&*qKea3*PVraMUXS-4s)OO%fQcHZQ;qF8rii8jDzQ;%Dg?jX|uY5 z#0!(mbz(r!;rWV^O!Odup`jr;;4}G1JH>P#HW*sH6~hv!U3x7gt>P1l1Lit++kSFL z$K_svNUY1v0m-RHr=&w0AsmhHTp8o(_T1ba)t$_nt5AmkifnscDuF z7Km&~fOvGLEi1P2n{!jOL}YrfTV!q4sTu(E&6Gt#Cs2Y$>fcj6uGyTNnNX`#aZYgr zm;0PmquKYnMGm`pmH*@x=EuXibNDI=Fhl7kRn2sBx?W6vh8J!T`&HqlJXfnamFqpS zC}gzJ!H7R6`MV3r2`ka?n5FlCs9Cx*E79E;36TOINd^L>2YgS!(89M+3Ll!YJYIsk}vERP49w?VGwkB>C&< ziWxYeD0rpTLvV#+<1#TTnSn)EG2jtT78E?ojKlMeN32OUln4_i923{W4=smcp`nJ$ zh<`C*cL*X1q{`{38?twgZqPyr;ad@7)D4gu)8?KFw(yt|Lhdl0w{$!JBXHcoeQvo3 z&?0N1(u~kHY?6sTW%}&8+9zIh+a(^{vKYk49PJ#+1w&Oj1Q8(J#;+GJ8M<+ zfCdFpkR56m(j9Enp;_g$?p7x&$cSE@)!4tt*3u$3H9}VI8LVAdHl)%ee$9p*Z{les zBDuzWmMOq6_gz|sY##3JvBw{#aS!5NLiUHeB1X0eUa`^wA!OVy(v4eb=KUDB1Q3Kv zJ>+cm_2gHdC@p6eOjCdmZBkB0a3bQMnA(Cz1drYi@dk2shNS?xD(77*#^vkvJ>BcN zr2irQ8Ne;vd3{aOJ5K`Nk^&$@Mc(y@Te`2}>Zx%Zna#n-r@9;-i1Nr#;3jnjrdGT& zwY)8~SZB{O7SE=6;)nBB!%ZNwE)Vhpi=+HQTt!97|Kg?->t^+d)$2aH33BV~DW$DYY}mGz&|T2K_J;nG=&?9M-FC7_+RgNJWK!jL`ZMk9~KpDfV=!@S~-YeDd)~j|SU1bRUT*fHXqZfB+KW9yF zMmjM`w)jZ0({hcR?06&r{^6tql&)lhgzV3ti4yYw2YN-y((OJE zLBrgyG2K_X4_$>#S`X^G4_$?sw!+Pk;{B3_@@JlFmSZ4^zWjikpW45OLMxG9Lol@2~6h|Gy-FA?q>o2`f!IU9etwvJ? zp73^F&zb&F-)&dH-b6ByGZ0RLP(DtkbmGq=VXi5rlVPb_7t(FFtER0|{xWu=oNi|5 zk2tPHKQ@!ektm&ReC7?z!Z}-BCwZI|K)l7S-e}BA*%{o(KAZuOB2*FO68gLBtu#PK z#3?(=;ab;ps2_(>p+ne+P%sY3_Q!%`$(Ed{sAw=X7*xF!bw3Bv6$chIux2R%p$j_G zQd=*9^-W@1k(3)VHfRP_*}{_#8w{9)AoIuz+m996xZ(tz*2BvKC9$!BYxc$D=JL>7 z`5nn1RLR&meK&aEcmX$FtAFaJdC|V&ru*QwNTbRrNv&qq@MvWLU~BEYHbkAO(DSsg zF=?jtg)C&2OY+4v!b7b5i;~=8D@pT1*|i7|?90^Do4H<(v2DIqhZYKvc+%<#&fEv0 zlV-8|pM;2XV>Hw1_Umw38n7K%S|QV{6TREvz2I))JD403bVrcZWE?=CxrN|JzeO zNJ!z7>~td;E|57=1K`S>ktF3)ZWwGyffRK1#knSepltclU`vt!Q*Z}{kJL-|HKr|s zUocnHYHGv8Dbv^ECpCX$)l_fQIazul&wiIP5DI4Xlr+{HRljbk~T}#V6f}#5SHcspe=+9 zaIv3Z*Ckaed9w2vxo*4HH;K(9n+!1$)Lx+z8!@d7&z3RytvWA-1*;Z1L{bQ_nM)fc z5xE+9e!`bvOrF9MFz}KMa;zaDCuOW;Yp!Q#-d<4PXW#%rM`{Mf1tH=kmvxKg_Aud| z0`cYCmb95(m!k3l04;G(UfrXehwiSlbTc}%9~hX=AUQET(U6Y_JnTFPd=|CXh>GKP zg)~b1nAC~2*HY9)JX66GR{QaTRL}nf$W=BoFGknJs_u)(MI}WmLh&FOGYu!>u?6=e z<3S^l#ZE}j*6`@Zsw~zMvE(k~dv|0jwNVu4{S)nThBB}$`Nr^<6XyDVz2cIt7B9ecfUzp22f)y++99c?}3RNHVK@t*@VyvYFMU|e01R$9;G=(15b z8$3dvv*J$z{u`N@vJxFchl42DQJJ9S@3nkzKnBBp$j4#Va}6JrSxpJ9+>iKZS=X_= zqXZo#2Rj!Qefw+o9#7jNo~HSQ-j_r`qS*A>BzaeoUYsNvIE3dCN>DhZ>cD|G);B@Z z5Q%v^U&ZPq`*xl zlsW04dws{s)yq5Ed^XG!?QJXkePC*T56pjea9{DGIL&gY96OfT7+~1}E4O22k?%ID z!~`2Hw&@FO?WsfIz^dG%+8b)d2yHfjO1{PpaX$iCz15`fAP50>LNXn6lWwx3ACU!D zOZO5y3N4a$V>Rb-m!e|H4cu1=EE*70jZA*KS$&b^s~Go+MqK5--LGnR%mdn-uHr5- zNiBV3hgZPHc|O9X7_pT<`9wg`6D~W(YqtBx^Q17m&2}zla_C8RBsM#0GH;p6a;R5^ zmWAtW5c@=YyVZ^cX1dx~3ap3Puvf4jl*hNjyW9yr;)g7HV)(<{DH=s8MS6oySx`&G zYqiVJ8~5CDoQMUPEI{V(fcDUYR_YEl>k&&l{mLN|dyUzp>5*_S;R$;9;&N4e{Ai%8 zOAbCcX*eM{_&N>IgXbp-1|ZcLFA+gTyGQ1C8yxaLLi>@IU|juF(nJ{*WR+c!WXI>G z@=khQLbx&xfOET31mfYa7@NMMO<;2^wleJqO=E=fAeuf^eT&?VEUnt;kgCiy{8ymM zmjhjH8$D_QMhAmO9*AA%1;vtbyaJda8J}_-?y8Lj>(&R`)ME+%)a1?_1 zvH?}|DA9tS<>Kv@>w_+G%;7wu->A(Is0Ro%g?o|uc4W` z-_yVQjf{}`Se?`0LbG?taKs%4XULN0wu21Fi{h9KZyi6H^%R1b9)oN{SI)A}PwI<~ zdzH|FdL^_V0{3<;6hXl<29}{XwRkF{D3H)+OTw7r=c%$-f#F~RbQ2k%t4dY| zjbjW(nF@8j8htIrz)wV^DM&tyv-O;VOpAcCEX}_VvW(U#HJX54Fd8dtq~>s5(q+GmoMV!;oD}C+uOil@23i5TMRS25H1q)c4q$tDo9d zJG{sYegU6>bF&SQ5Zea~9Hs7wJ|vT#stV@9sR zwvV2mZK|3d*g!ZmO4;ZQZ3BljS!(C}2TMiy*3&d^IEoI{SQ?b-2NlfL9x!tGL@KYq zLY%lxmMb8GQDQAJ5_rxx&qV1a;=OpOAXjtyvN*_XSmzFn1ybC3B594Kypp-5bGP%? zEC+GAw$R!f_xGDK-E_DtL*ZI77EB6e&lIii)Cl4YDzpt3EbP*`v2fDM=j6_^m)jVt z6KTtNvED8x||lJCzz2g z?3UC8`;#t=Q2P?eV2`Gw*+GDt^vu?z%u&NN&Ej-KP_SQi$stMGS0`IIG#r6YjH z%el5iGb=MY4@VZe!_Yr9HD+)qT=SXM4f6vdoo8|qa(d{R{9O7aH-XK|tqn`O>*PAP zfM2MK?!O#%VUFLAF}ABXjZ8yfi^lNRwEZ{t7b~2#gt0&aV!iE&*KGN&(&PHe) zsWCYW9hDnw&KD%(-Uz}$-HGJ6*)~O6=h``~Eb{AnuM)|vN&}Gzu>NWRSlcZu#eA&& zJJX`G7lyZl0_lU9f?es53+P4pqOug+E{mQ+??_)LEV+y1vkQDU>|)HI<0Nc6Jcm(M z8vBx!&z7lBkEjFy3?z!M)KwlH#o`s!$gpC-25_jSd8?^6%#N9%hf31!V6X1>>iDBE z9Otg@TsKbgZrBd>NJAVbqw!~Ay=d(501pFZW}qGTM7{GXq{DSm)I966e|XU#X(@f4 z&QkViX8p^#f6#wA?@F7{N3b=OpaX!zs;As#&AnCaKPNc??Pwg67qgw5prr?is3zKg zq`(vAMCu}3*Ht|Vz;LkpDx$~bPBH)<@c=+HqM17P81K?JhxFO1(nHs5vRr!#VCs~H zT00Cg*~qIJmcEP_y}=UHy_cgj9Sw1RzRHetNbGP;QaD~yag53G{>M zbQfptuWBa<2cR@ynMgUas#kqnA+8XL(!0FChQq%t$<8M6sf0Le63xR|Vem0u9ki(F zC{|)Gn7xSyOR^c18Fdl+pzRn zxjISl5L-Wl`6t7YDJ%5VbzrYNso#@c#d`^#uMH zvzj{d8k4rGEzMM!^FqxuOPaX6crMY5;HDBX;u94}bPaMQH>6gGr(aBuz}}@9*_OGa zx-&^1o4b@;Z~z~(fbDi8&$RuiHpu+)fZu;3JFxSs!WArVFxRozF_rSnSvt3#(TOB7!!KYwts#(l&weo2YaG4`gIjk`S4VqG zu_ueNijNX}goXnvZg4YX1oDBSJQfb%mf3V~|oSInM}nxsO5hqcT~R zCL4^Ue((Q&7p_^+)wA~Uu-mp@7nZ~^FBmcD*)=PgE??QSa_yQmYdbJ&!hU5WZSUru zw@^e|$11F!7*TzSr-X*;z^O-y6*4Qd&9zwd6g3Rzat&z5(xXktPfjXMOh$E+fS-?l z^X@R@w;TP`x!T)letdS1m+n ze+3g<+I=m>PBk}21KrKQKm>>tuxL$iF|4+2wPNxi1vYz#^dJ1oyf<0;nB>5dwK^(U zBCRZat`fAiB6)UTJE0t=BvqNCM=DtEr244}sLgApsH4zW$lsY9(U7EPBu89Ivb5-7 z$pN!PYSR>JKsVD313Fj`$zvL)c#H3WVdxF08NDor$#E!4tN}4p_EF2s!|;`ogukm| zQ;z_|iu@*az$mnm7_51*frILvO`M-2KPb0;w>5nXJ7%j~iyZGJilr{KKFZ*^AVu-b zZ%VQ!lX8Of{;>Qex)wFn=HLN8H~Tpd_`$JO$T?J2+Nvp;!@D#b^(=~vTW`M_wo%KHeVm*pPiEld9_6>!6z?1NY*KQB3G zI*Az4g!GXRAjF@ZzA5)t%M9@`6vol<>u~t^K!Mnjk=Q@9MmKA;$$f2R(%=)3Wr>rd zd#yx?rVwo!zFC}Nbj6>A;G9`+7^=WNice139bj}dl|6@y$aQjMK_!?ammQ29MN2P> zlfDQA799cgjy4*kn7PDnfO0i%QJLkI&K<*&4I5hLm0t}CikANzdcU>|Wis&QubL>j zX+O{vJ>ItVRmj)n5LQ#$+7(T$y&Zu?TM?z4bz@zi5Zphc{mTY9LR^e(94zFdXEmD6 zz5qt;QWgAty(eve^-xXXLiceY4S@h+^zMdT67g!M6`F=pXChDVztvCPF-`XqBBzr-eg z#>YnXMmgwSxy0S$RTf~x&@;CQ@ecU^m z?inkG&_o;SkfzmgB&}ijNBuO4#SVMy(&>*p(TOlgF$V>Hp3Id!-jll#aaa3|=HukK z-EGU>SJ{|v+z(^khD)lcsk5nR`N}oT?Lk}i_}Dli3|@BMcnSk1qphnAfTjBv0Mpu< zTYUd}2>OPEV1q$${{Drab%=i30=1Yz7W$=-ifiiEH@CwTXdnZ^FzK#JAA%NV?Lv?x-CqClym%M7b&=b=PF1@ z>5oA|x;_pG33Juf5308>ly?ZJ`V9rA(%(%N>874nB+Gi3hbDeE_6 zdOGBvW~I~r0S_a2)_AVsTAi)sudtFzZQ-B3OWo`7a;*~ig?=o9mm_&w4lgRCIx9HJ zy)CJC5K8&P+9f#p0vsw$zoGE6jCaq`w(TMR-!1phaQCINb!54{>W=(}a@p&-t@_b( z&z9+4u_IXAQ1vQ(0ZeiGeI8%01gG$^k^DPD{sP^pp4z$_2h!aFlJ!&j^xdTUeLX8g ze*6O8EPS^m^3Baz-_@Pj?~<)5@W97H3m*?W@LQ3k?;w-P@7w9izgqC{3;hniFaXEj zqbM)33XUy>DHihNV~E(!T+EZ5Ne zti1s<7^Iyc|HFgu9|qPt$XGQHyV(^3QkA(nD;`>!*Rv85_YTJ{;F$i;zJ01rKSNas z{ahF6U`v#r92R0AF36ro{vaD43v}^#po=GpkXx~-EnHOJ_E6tCpB(Apx=62s=&pe< zD&^@;n0o@c^9eY9zBD{~T@E^@uO$-68+LaS`QtXLbZRN+pw+ zSb-fHy{WtfU-ISsY*2ZD-ga0qUZd3KO0LdIZ7Lnv1-j69Qn?LZ_T_#?)$$t%=b-*v zkbRIs_ST^dhshBzQqELpC4Wg*|WJ9{}kOS--2B}-+{`+ zFAhVG-6G45`8)S9zvxBf_l5jIt9~(kdq_uQ*)OK=4CywwOY-j;BLCANT?|3LSkChy zU1CbV0$xJ;;Xb*57wN50t_bc)U-ft?)d!S5J*3C_Zsj|rH-z+q`_sd#oev33wcFF# zUvqseGa8}OP#4>K$z#497xF^C*uUp-ulAnGRq*c$`R-RHeu00YH;622$Cs5y;y|@K zhbh14N9A-rUY4E;{n8iSPtiyGVt?%l>2aR)An#P(^CA5U0)t;x_^qwGDe5!tkNV8} zqCRtDoM&FYSAE7{-!&|Iqm9Zlf@Ep1>*HZ2`b3zCK8dvT>}8T&zm2rj^LK)@{VseX zU|#Jh$KRy4JOnXLYWBX^FY~Nlz;l#;3$k4#mddH1Qw&w^F=W?Hj!7-P+z+cze!ia< zWH04j^8|q_!WgO?(Mu!c>v59Of_;qiq54nh8!6|KP|hp0ubKQi$=@0BU&OP1 zL$zYw7s6X=E0eq(+D^0klU=P{;cCu|061qJe zzrd}2L$#;DW^Cp9OAMkqJBh#L-UfD>dXV?3Z&#>K9%}l9`d+^ruyKbqK?`VAwfj{L z2<`=!dpwE$^xMKerEd)B!!)4yh4u{A7or`YAuE-*blm#BFWN#qLg&3gt{_joMK;0F zx6Z@2B^V0#8(xiHKcC6IiHdF?eaFZT)qS}3&YJ8yh2|gsi)=Of4cF9=qA6wN?t`RH zhnG#d)wfgPUcdd;PNSdB?6mz$K0~(Wcmag-{Lk;(Q{&P>rSx3yRBb>89O zdzLcvQ@<*G!H0bM+w{yYruT*PxB6t`7s~&1NdHD`r>^@=Z+tPGeZiWy-)MM;;0NyQ zAMx$16?*vXUpn2D&i;u)U;of6;D6^wJ-jCbc*R%Lju*H3bd7iYLOX`mt1vBIOTJPD zr%y{Xt6*^Yincn|3ZH}?TftMobyWE_H_0hN~{W#xX1Qk66dMn zy|3~skB;xX%C9_~&U%$!8S?l>_!~;kokY(}zdO*Y@X61k5b2vWr_7(X6*_=zB!o@7Y-A?&B=-wxCC??l-|8JhnI&boVj zyQfDub=~{?=|={_qyR#30;n%Fe=^lI;?e3T3(HqCAdpuF?)U<31#zVFNe_8=FA<#l2IBX|xQ=sOr1LG2 z&Lf|?Bmgx%`#1%Z1xkfKIkF<{LGWuN*EF4m&vj(dY=(~nD4!^-sdSbj>G9+_V7Iqy!wT4GFUDa=R@BnTZ!=YBfc;lvQkp1 zX0A5Q! z--G;9dOV-(vi|h@`tfhP31U}6_J`dj2+pDKFa3Sp8wRq1tm7 z?dd!keRhxU_rLJ0-#|Wm{a)q#$N7S}pcjgd2ch*u5F<|p^;E0R;=0w|#Jw-siwsZj z8=NnBIOp)J-%#yR`WbKJ&!2t%+m)H$Q28I^-8%Bez6xBn;BngU-e<0t25YJ;5Jd__V39{e_tm-#EIzK#Fk>pP`?eMSB) zfJ^6Dewv6RE9L6m|54>V9m?C&zq~>4FBlR+A->x5BrESfJ$%ivJg)~}x3LZ?`sXNJ z6zk!WR#fUQp|{nBnj&#qi9P&PJuxO#VIJe_8LV%V@qcQv$_8tg9;AW>Xd7roo+`D|Rv9%z(nvYA(RVr(5(!y)YCy}ef#`Ovx zky*dU{~DZc&-fwW#y)Wi*%4kv7b(*LveNYWB^$1?#}7>Q98h|v@N`Mm*H;qLp>HWZimiP=)cay*Dukh-)R1ov!iVxeKjVT7>MH6%FOT8$^Fo; zkMQBE>DRz>R9_GO1V>-a!+om~`31hUcmEu#{*r75`S)f1Zmir&_jpmg(<^+v^FsO( zu1en+(pQG`08iL@QN26SKeUj3kQUkv45QIcM+f0RFuRvQBmpmN$z z=|kn8LH@YO{|&E@U;KVG`Q!HXs{}T`f$fa;yGw$txxWTbm?mW>@@=V6A>u?`wWSv5b+B9=+8))JmGjSDILZJyYc<^!>YqN$*H4fj z`|THb!!+-sl=gZAj$x8A#P_UUYdxG77?cG(75H^oe>WRXomq{Ay)1)z^oT3*8;Tx} z=iTnNK#u{A8!R_)gfV*<&$8zl_hi!~HCl*HPT-=|e;Ntm1@*Om8bMh z%G+M&@g2I=`c>&WLwX#CLzQzpWxe*lTS2#+wMi(%aqAwPrczY;|>|7Pno|a!%`+YnHESNu9#B z_;Xt4uopMAxTWXZ4!^;^`LuN_TRMB%)^?oU*3Q2BR8wb5+i^4A+SJwC(bKl3rKzh$ z=W+F{gIK-skO7K zg>O=)F7H`>Y8&CVDP?_tX>rf;mG78CM47gpl))$PXa@P4mUnhGY1@9tY9ODr{L-~u z^V>S!(b82YU;C?Vb8*Oc2HXA@QDfI-l%#@&j4D7y97VQfd0Ph!>P|H+U(>y+sbw9o z*eMR+VNEHVu~3grRTCh$h7W|QrDJ(d+hr|H-C(Pyw^P@i*p_oUbV@`Uu@0_iX%=2m zvzwd2QujHnrxCw={ercGI!IY#2jMex=78@DFtH84+kbgZCp+?ch{?0KUw^#4r3b7F zq%%8O*UnCz-MeN*OV>HAi!NI}yQ5jww)i&nt7fe= zaBbJDRA*bu%9hKCJVbP&4g#w5uIy>*NnO@`c_%T6dRkM3o0drCO`ScEaueYuD7s0F zTasGd9%#G?a^U->rt*E*)YMKjml=(unlE3}vb-BQUk#GZuxJ&jcB6RcubDFZh+Hy% z@k+{H0lAabFS^H|XL@M<^6s9~y1F#ncv^5;aco@1aI!YVlGUGnB+gmOU`?IZM&B-P zU)bBiC<_k@y4LoPC)G_(^?CuU;>V}2?Fux=OGZs8|0oRMfpl?ZfePnzLC>@>fRgIh zh9&LYJo|2(-?IF&mVvoXZD}Xk$G}vELQB`c!~!gxv8pBTC&o|1kf`*5j2rrMqSIvUPA)LVGB@hmpr| z$1d{)r`~?{xszruo^up4Dw{JwDac-rdsj4!aA*ceYx`7pf~hpVCT)G@W|v zY~FPryTb0edz+hEI+}Vp{i3V2eeLDETHdj~X>CWy*WA|H8g5sv?Oea2t*1LYwuKVF zNcZZt)}D}jigC~I00FLCZTBSzX=>`}THe-vMaa`t`gP~p%ippFyvKLQt+nC)l(tn8 zhD}Z2HzYL|K;Rfr&KC;FtL#|O@K91(ckh~5RtYBh0URo!yIPj7Nwuu&Y`VOyxo34M z$cM5$sIr=S)-H#XCE2@CgHk|BAC-~;tv>V3$IfUvHq~_23d`ApuYb$RHdBtMX>Esw zlxp_;zNDR{9alg@Ke&rHDZVdhoSqJ3oS6{y_AJAz< z!syqvC6x5eUQS<$eNoauL^C2CG{kO-U0y^$KRW6MQa`fwBMqu(Zd+yYIh5EBqJE7i z;H~_p&t7oL`3`KQcT41mqzgD}}LAC+T?rS+6&Y%!#n z#Ku``n|s@X736>D6 z`gBQE@%{@T4fr1ox6c)m;_bhLq$IU2_2xHhd#ymlwm%+jei5!}RJ{LtNTcoPQ0s^S zKm~M+4NWIkvCYN1=RzUF3STaXFb^+$xulri--VCtA(k*alpqk}{gH+4Iq#)#8%s~8 z&WpFBOL`~XHx(*BZ(t|#4+#fGU?}1`RRiwDwU3}-vD-#i7`D7m6=KIOm3rjU6m<8BmUm{1-yLzlJLv z`tr8;@IM9W7(~=U?c?F~Go|0gho27pt%sv2fU_!GY5uq3ZKRCUf&;?sNyVg)sc_Mo zfnT~*=lE>{zqQ1|XW=HD`gyzyRg}%<^DGKkqZ9(>_l2ZS#!^xX;_cmqr1)J(@RwM~ zCBWpGUk%hj}S+u)iOmaA!Kgbc2!v0P1!Wol|HSJPnZ zi83z#3Jr;$s*3XPMYygHz`*t5ZT#4!y4MY= zSX}gy@J*z9`1d8d0{@O_v5+CSX()k9W4HxD@itcK5fq>PUd&khI^LyWkN&@tLy}e% z^#g#N{x0>!a0TAJR850$xGkndmc+Zx_%5dXr1;(Q@m);&_u{*U;=7m@A*RfR_%38G zxf~J%>XG4EM*1qZpe_A97_$GM@L5y5jcQjW)tUNpc>T9RwgvI_Ed`0x6mL%mN&523 z;r@rkZ1MI-CE0!+?g?jUzjUf8-ny($Qfa4!`-S03w$j!Nyzk%IOzM#U{`U&aSQu|( ztH+~UcBO7j=U<*^ml;P)pE5a}8arxR%<;>@$4%n`w8s{pUKnp9E+$Z3PwLi8)ypqW z)HOf7P+-h5r|@;tQ{gtED8sk$KB9;=|2|}UvGC=>c>C8v(xQ0#--V=w@iyZ2D77_P zBY%jASEmjwKIkq#sQ_xsUsJ^Uz^*8#Z1nFBkGGWpecc5#E_g897BRad5?m2COYRKK z_)MWW3*zlVAt{HKLwD-HZSgr0U*4x5Ub8Kx6dST+QfSi~!?iZmoh{BA*4OQvjoMkG_qy{p*OzQYDEghI^s7giWF>e%U z(0RNqVMxWX;qS7A?_#EMkPOZ>6eOba*9Hk6!geAQkuky~;_b}9vP|iV50R;qVJ5f_ zhA(2~GE?sKpiJf3KR6fd|M0s8B9rIAIm>jv+owtg=NhWg!8yxRDqtgnUKzNz;}SkKprx#I2j3P}s%Z4sJ564+DOx=??d{Ry}6{_6$U z77c80dDW&p0I<0LNSt|ulKNjp7t4>gmll%BVXt6RjFI{1#&{d^m!JHVRy?y%$D(*U zJ0!iDj~ABvc<9-&YKUK?Q!C?bthplfQuZ&SewrS{P6K3ii65m?&GEM1_oH9o`_i)5 z<`5o1V!Vx$SH?oT?FqR&YT{FzrI9h-{%f(gc>DkM`!+ts*&E-++yCg7F+Rn3!(34@j;)Wq?$mLhlVRj+Bu@%f?`sn;cJUYH-_5}7n437Za-U0@+B4j zBHhyQEmz%#f4PupO}J_>Ma2GdNm{)BQb=>D%9pprhd4O(am4H&OFoWBR7fHHlrP>N z6Vj}}_^_!YW4wYKMkghWu4uL$Gb?>2^VwuUQXE8ad3lKeo5Pv0zNjJMzE zmoYy5pqMebU*l8?>oyIcQX)K4G#xmGxEQg)OGT3P>hn>bU*l8?>oxwI#VI-aU z??A+HX%9s?-i|8Zd(r4{8~d!RIvu~8Q21_fDb`ExUknf9ibE*gt|}xgj``!of8!EY=zBf@$Q40rfKU zV;wUK1ulrU#X1%ZuA}T)PO;voa7WuWHO1SwRD{YNZ{Ht2^r(za9}cN}8*hJJNIEy( z{-WQv@##0kjNxvG%V0nkMnG>Yl(8hAcNHzd{dukY}_bbJ%*L9L9p5y-(G4XD^2;~GI+5KpHXPY<<5 zM36M_%XDgBCYM?_eh?m*G7N6qz_M~A#B34KR2gq0E?ybu;w2rSzU#sje)iFD`>}9! zsdrA^79V2i9JzQcpH~7d`4eh>ED6* zsH60?zqjCv+>R|^pe*G@m!AkE2#ApFDnK>}C+XC{OklHIzei9bG-W`|rDCS1hprIs zg7DG}-JXgKHV^6rfzL+!+sp-_fOl4cG&!Wb6a-p`v~swEc5lN?(orm z_3Xf6>VfN02cB`@-=0h7C-dikzm;?NA-Yfy@~Hw)3!^hv1fC}*>;61*`h;LETPPo>D0hXd+|_7r6z^K8w!;yinp^vk{{ghDMqJ& zDB|rM{W1<{1&;&sm7ynn^tM5uG{#C77N9G`*av1Bg0V*^ZZDKIh!^DwpmrBB4XTiX zPs7V%NrU>YVo*s#4RDXHjsB9lDO^EOyv-FrSsZVxLXz*9_;f%qW4t}2U&c^&;gU%` z8t%VYsCH0GQmJS#_(vhrAUl&Ql=Rb(seE(q3vXk+W$9Nz8T5;p_Da9XSf@YyKw7*# z#;1fyM|db)B*5b@ezDIV`wz8^R=+ZzkN0mv-4nvo-XSV2>i_WeCSZCMRsR2d-|loe zA;Cbx7J_t00w^<*gdG>6!z!rn(jB^!P8vlN6%fJ_mh{`8h^VN9L~+09h(v^O!v$PG zg#iT|bQn=V2M0tPW;7#FQBi)U>YmT3`&QkKapwR0`+1W3p6@+Xb*k#rsj7SL`@ZBC zi{i{eX>pd+vRJ7nTazwuPJgjx!lk7&;Dlb9Y#|SsxuYrp5J={VZC6n&ipOd#k{5^p z+h=QRrC1{?1w3W%=-x(NU@9V1ZDNnq3OZI%Ly;viBWl<~CC*vF+|Yf2tR_j7wxV=h znJ3a;SylWztiNBUBX|B>z2NKhTEDzlu|Au(U||mP&(W0y$*z^gU90QQjkazzfXi$% zGWueLJLv;7IgjkD@Hv5^Oj2jW7qwj850Mv(u34`yUd2U}uTe&vvYq--u$N8Kv(4TH z_AU?9BMN^NsJQIn9s=8||JE92%Bc37dsSicyd3&}%9qcv%g}YLCd!>usYI^opAOam zZ#Jq4yv?WvFr2}X{j4*T4xt|D>XX#wykZ#aT5NAsS@K5j@}v+?ZcFZZc2tttadF<7 zwV^bqv6AZ-n#zESCCic;JQ?TCvWvB2>86S;Tj3-qZqN+TFhgHmz8stcnrfolsa>wp zM|DpBTGN?X&j~t&XUc0x(7y|pUsk#dt+%VPD0fAbLd8|e+DkQ0YBjRbPUHv_Ua>}p z!nW6mQ`NT;Xlu1Os=!-@V(QtYmO$^VYI2#Lb^QR%PfA3&D;t_rDGi{S1zL@7C<297 zHPi|VO39S0Nz6J>3nuk0iLl0M?LQ)&3bhKgSEg#xn<%c*@?_o<%5pgBs<_ANa{V8R zpu<0{;7giH*8z`IUy@bjD21m4>NN__3KV6A)HhEiiTnzhlAARZH+xbc-yS0`clLw- zXlf1MRI8{7+`*^@aG_Dj=(-{o>E-8|T7!n15h$&E(&SlsMYdhQ-HjRr&Qq$`i6LDc z6cu$P>_X?5T7#TyfU3M(wKwakKQnw74EP@1D$8gBKcrM)AkuX~vCFcOKsEni)ii+{ zEcbFC1-ojRIZ~)5`M41^-KVYjneAm-z(n(x%z=vnt8Y?bM^BgXTim4-@Ak9!1r{Sj`aSZ2>ei&BJHY5acXgS;DGAY zWtW@&?XA=cP3r=D+mzjmtI%6a9*!21c>I03jQ^*mVjFP6+FE&U|4hxnZF$KFWan1h zDl=UH?@_$Xf=3JZJdN!Vzk!Dv)dKP`QM7<3s8->4NUscefyY?8+rU*uwSe4~u2@Gx zYiP&0){Z9dIIDORh)u)C^k;h zYDTE$D63`=NWrd}k&0?~02J3!lE<_?)FM8dxBkWsE@YkI+_1vTL1O4a3+ z_4h0OMo_~sjyK0>08doPRZueALp464X%j9kIWzG0ZTy-*nl7egY1^B$oyNJ+z~@;D zn!r*+GaAa7SauUY+U_c)@vpGPH-V+bM~y5#-|5JT<_^$Y=C6E)w4xmYv?F+C#VXg6 z(L=uqokvcZSkDemwvdIz?D_v5YnLD6N_vaI z@0z>n(x!P{3N+1{Y=j6ea;57cKB-egqeAwjQZ&o;Fdkk>LMACWY3vnq2{ zztDeFQqcvn;daLA~GfMKGnHdty%`t2TRu@oiU16-j2 zwI^GDSB9|C$hG%n2%~|#D?{MtyM6Y!Lbn>!-92FSRrwJXukvDb*%LK&FSLRmR8AWH znyE#Bq)rXIZ+~%3>b-d4QWZ#@BKT@kl=p}czHFrAzEg#tXeu@Drw@ckU4h{D={5f{ zFTy93l)Miq{I5V2riTA@l~jUP>v&G>o+E(6_dJaCYsbvD1NYdtT1>O#BcZg6M!CYk zp@C!A&G1!xfL8ZQSnWd&f=}JRcKvOwA&024JXHdos+1o>gv){+4d!q!S%IABeO81; z)-l7tz55CSYuRex^Ofq!Iukj<6+v&NI^CxI$nsfe*z30lk)#H`g(3JtnhC6Ejzom-Ot3W*0_bS4lf}TN* zI$p2K14K|SRoXn=Rx6wY&vp*VNWanI!Qvd;v3M{9yi}gcUG5h zm4Nx-GEw`04(N@Vx@iu6)CRj9kE|niKKqWQ@^Q;w;T+Z*t71bcK9t$(C$<|r25omOk`tS=9()FDBX#A0vDuXeW>lSC+yKYXT}(~KsmYd15ob{oJV%?3GrJa>{Y)-b z&Z*jmZ`8C;!uHwO{2cilT*9Ya z8-;SW%J;RXnd6#H&8EM6nR`|U5oX;8vyN0|3Xq8?vE|{;J~{;(np&9?y=au8hD>kE#UW*k`3mJ9D%h! zCO%F=L>H>N&LC+d79w8%q-mE=#0#Lf5o_TmwGjVk9N}gqMUNBMHIoN>UqyV1k`;is z`9t&PRk+Rr=2fdgBVx2d2|L4P4Isx)Uo`^9&z@}Ul@kaYKZU$}0--dVmrumi%G(QN zYKkoI-Hctuz%M8x0|dmqy@3dewP5KR;LD5}#QFK1YS9AX?(z))z#bhBUjYJxC0T(j z(;Khl2rF$c2Z1M>-Z`}#f#pT&1u{#d3ZPAr%#JpAgJ=QYsb0{Ni6IEMxKsedYa}c1 zC+0wdKpaW54B8!&ZFu0aSci;p5CiCc?vx7!WWkfi;XsB)v=|cNk5ItvtfNQiK)!-i z%1S$MkU&qDS%F(O(HjycIp6Y1lN@-W7rS(W-+!FawJ!O!}qaolw>LuyA$2$nOC|S!^ zJfQHAKm|`Ikee_ytAjF}SAf57nMWw^7lDe)n^sX)#kT{xSSjz1@nDoxoEXUSxmq>? z9M@`lvJ2`t!kZ?y#jWl&tAo!OyS9PPx6G}yyyQ*lsTF0VZL8NXiD9bvLf9&$Wd4fz z(noZ5`1I2X;2xZ>vJ2}ug8TV%_b20Dfb#z}D{fa)Ym#%{K$Y`2T+0sCiz`hjdGuJz zzN;4>GNq&wYuP3Zb$5o47gvYxpQ2}GQn{-Ee63z`!AjvJMzubu@Y+DdbrhZ-7w5c# z@~*bbP0IUNpyKkTWocQdchqVx(<0E8HpN9%DG{X0y5b!)@Ln^l1^ic~O z=6GC(8$~MF(J~LF*9c}}& za(Xgu{gjNOCHEaGVoj8wHY*PyXQ9_ax zQ~@;XNlayz%}!75bjv42l6^(FjF6e{a_q`H*`vpD5#W6lh#kN~j2ZbRTEI(<8U7a@s&z;M&v7k!XbE1=0u^O(2aB zEg+2$Eg+2$EnsNRRz0KKNSYuIQ-B!jOdqZ=eK9mFN!KQx#>@fqdvx!WZ!GRcjJ&>Z)w#P$H0$ zrMrOT691YX%(fDTffOShb`rQ;WYsVZXffzjcUZB?t7@8DsS#karqY$bzNv+}^xFvv zckegqLWRGx%~AWGw=1qbqp4&(WM)C#uc=VWwaxF*RH*B8zw{FAV4+S?_@h8QcbB59 z%QO|Ox9YHeSW}_;<`r6NG!^RS3V$1@Blak?hBXzfC!bwVE42TGS~*ZqCu=IyG@Y|^ zG!?4Q>Ha_M)+XIbP8n+L!oQYvxFYMU?o5T0);dy=mB3djp;p3MhYa`g!u`eVcPO&_ zMN{`w5zJuAO%I0caUDLV1|CwIMC}rVzYY{|&Td6TE+_c?%Js=ty~~%*=g6N?UP}Ci z!atOHP&Gc!t z-oLRvIb7Rzf~M|{<2b@u*6=alw~QJBhVE(7?lJS@Ch%0H`sA$^_kH`wbdj%^PWqB{ zQgTbe{gzbqAG7o$;ePVt7*$=KyR8T-5^iM0%u zCu6VoWbF2yjQ!q|vEzF(?j}5+K4F;Ug+AapI=p?^c`{0S*(j~E0UZM}aHz($O*Ty3 zda*5H_~o708d;w)Y{8C2ez_gOC=ySF!vAnCp@3_(1-=3V+8`AWZ;7Rn6>sddAh;YS zAwG&$>>@(pAcRGsV)qa#b`GK9cqmlt7(&HvAyn)XLd7m2RCm`qsd|u@Nh@_vn@nqaTo{W3Q zlW8AK&d?=K=q8}F;NNfiwLzRRINKo3Hr3+XAkOyvK*e1q#nU$|tU}>NpWmY}RH*%R ziM>)&p;FHpjC)VC;=U7#p4&8F#nW%!4ODS0{9l9`=J9~_&lsJ-w3OIG%h|G2ykBg~ zbf{tLsE0E?YHRft>_wVR%P!3N4_(-Q=-xThM!h6QimxfW)3nb-`;~esSYro;#(IUD z1I0n%&31NZT&M6>P2DSqY5`PuO`-vONVVl&zq~P{!V^ZyuPP$!YG;xL@VQF$WEU>Z z5k3_39#_bGmzHy!x!;a6jq~&vbG0338lO;jn^8l+aOi0eDNfT(Q>n#J=jf%G+4}oB zeex4Z#gLq@bT}?GI4<3+$0o5A_^(RIS1&Bi5uONoz$Z=b+{HP<_IB19Vh4ATQ4Kb` z1gcUK(gRi_JzzE1pAo<0xe1$CW|p*s{VK<#ibqFXk-Fl}k8^aK{2_H)w<*M5aZ<;D z!^w6ChYj8_lzPVy-tnY)#}J2Iyu_6c#uwZ+9A^kaI>eAN1Wt`H2uI+d^awl@4~z6y zJRGjDbUcRQ@o;MKfH*E55yufrNae8@e{Mj!2c^fq$vAo7DrKgSknW}f$lVCnsqyUy z$1!S5V8?-95VpaOj z?xlPZ15eTOu5VzxOnWl+P-hQ8gl(Z$MEIf>=@i)xO_UCN;BW|Bl7rb5xV&I?2)+{b z2sPahc#>Vh*UBUUn=e-+n7QLd3rt*ddh9XI)bppWg;P#AlrG7^>_A**@REUI8u-iz zhbie4!OU8(h(Jtrir|~dB_gngaf)E(ye|=fkn9u-%eL+R19Z=Go$Y;w@aAw}8Db+C zP8~yRgScBGu?_zWr;Z_75Y5==nxibNHrwI}g5W~L`AoTl)v zVl@tHvY@Wldb{P)YP^+U+)lT@~W!mPsIr8kF ziVxhXJ7UQV{H9XmM!q+w0{_#fCh$*2wSb4rDSA`R8nbeQBb1a|Bxfo7h*3@8$CdIQ zv)emI{Cv;^e$A-mz#kjc1U_L@3%HN%-o-kE{go8!Ua9b1Mm2#Ol~U^vnOE}IjJeXI z$96x$EU%T0y>JgYOQtl!QYGcXmREE(_PP(JK;iphX}tXT%HpL?jJj!{sDhX(R6&IQ zw;D@z^I6ux8SyYT19w$#J0f`9+Z3)hssa3}QElK0b+0JxxS@l?;%BY~@N;ZbM}Wb- zhR@Kec#60>5VvrJfp@cU9sve#7+$Sc!x%5Gh@3Zc;_aYsL%j8q+xG-HwqZg6uhLzb z&-%A{0xNDQ_}$QncTB$A*gafN#Qx#9;2ITZ^3#Yav)FN5kgA^^|D2Ba7905nut!IJ zO16Gh--2F57BionZf}HBHIQY?>#+#2G4~`pA4bHJ?0s0FJXx_cJw2X|T7ywza{J6I zLX3we5x!%0(Hg)XD5dR2EDht+lWvja><=U=c)fW4<;i#l=1EpXoWYYs zjM7s1^myzL<+#8{FSrxsTnWq$NlJcnoS{8cmk*~1X6k!I28VHRio`&=+bhOqxp$KF zuQ)>^Ri=1scr@E)=Y6v7yj{&;PNp(_@i%tkP7TZvQ`ER?%K=j;VAWZZ4ZWxV+1tAc zz})i`HTL^NBBAhl_WLd;n3*7I%mX(5LILT0my;3Tr0FLsCwuHhCzdXKR9EUc6kP9jCo zr4vU%@P8c9BuIX|!|Ntty!r=n1l~KTXUmdzP<(F2;LEnVmD~u#JeM0x{PVeqfW$LT zBJfIz+UjkTZJy|xDMk4j1N9vzRjmZehhA$Evj79r?WA?yHgGG8iNM)rr2 z^#=n*iyqgsPreCrPZ?We0#n6-vB+5EP0_dU6pGo4bs=Tdl+NSE2WLp3fV?p^JDbRs zO-M*sxJ>^2-M+PK=h^vMeNw?zkwGXKy}=A@I20Ya(#}*=r)Oq%;FlD?Z!fe}fNPi-*_IgbO z&MCf3gwmbnhsP0~7w)*s>O;VxeVGW?l{FD?d9R7UiOAQEK)Cjr2n24giGX{1O$2=1 zYa*2HX+J!Uz{bF9A`r%XnFwq)y=Lt5T`vjfMLk4U?h(k(ivzp@<5p5IFB8b;Qh1ku zcVCFRX&0hM&y`;`Gu8yT~bqt4k*8IW?BqIA*5Y9hs39{4A%(mFq*o!QuvYw1b$&-u|)7Fy+OkiJ+ zPU5RI6~)^-2+VMwJD%g7Wbm2go2G1OkM!8;tvTMI7)cy-(rE_@;#?W54ud?3td7ebZGQJEvES-P4meCh25* zueyF;FM36~wHKMHobvPb3gvJbHiq#|9MiP~fBdZOoMia7=8ZU>sNr^Oo`k~b*d+;t z%ki?ItMm4qiq`#5Q&GbUNu3%P-*YPv{)g*1J+?~Ws4*P7mej!J2M2RG+2-7#+Z<7g z-OAaf&a}NPCBs!d!SK(p1tE$4e&4;#n{NjHl+x>nV4{?Knh?ll+ck_mHUZ3WV7A(l zHT97ZeB=wI7eMeAw%(Exx0!8QjS<`?_`^u*4_bhf&d8z5XO0SmQkh!?STNHcgv~&Xq zrlTdkTwL`w%*FN)na=i_bT3`&$+%NJ$@Y%!^<>3~;^GdIiSG28Od-y}o}{DcWlz%8 zbgCySw(l2ry1Ps})K+zwQeEph+H@^9>!kb}I{&Em=6L)rH-vyZfc1I^+^`e!>2U-+ z+iO<#wOj%)P}hS%iL7mK7P5xAQs2Jr;zb90NPcs*{dm4@YpPQ|d?V8cRulM*ZX z|Ar3zkDvQ$*r~A?dXjq#rIEU!!$`3jdQEOUFe^OCfRMTvSabh{KR=j+Jie>cxjmRT zCk0;GLD<%y$9~#pChQS-Jc+Qgopq;WKvWm86c9Ic5EyyYWh_f^a#II^do`+yNEr2PL*QLN1Dy)F}-8>wTV2amvcqO3h!(Sey?{{ZI<+c3*NIl_r$XV5c$HA>5%4IXIJ@C8LdAzP zp;(nzkc48KS$TwtM_H(Ngq^&HZgLOTRJsCqwo)=~kB?X7Epu^*t7Wg{p)vy?RQz;U zC?0e0I9RBsbicsEU7_M9wn7m%7yzN-NFY?%MsRBDsZZ;ZrA78m>#1mWr#369-z=Ks zY&%E0@<{9D6~hYO8mQPV>G;j#&(|lN^rl-v!Muy)6>(Gg*eQZ}xa1Y-adu*!MA+IJ zNnVk0I>?@Cc)fB%KLVSSIoWS_d9b$S!J2+l^x-4s)-#=KBMnJw_b8PP>+QweH4j-IStV|tH$k+jUGN~I6#M!**@k=A#^k}f6 z?_}n5K+|BHuAI5No*`=(F`jn3vnuf1 zmFYS8#V*x&i{)lM+bs?<@?raU)8*9CJ=Y+?U;!_997(|98-Al?v7 ze68u67ft5;_PUnH%LKsEI`ou%B=l(08%%?Mlt)D1tRqIJo5jI&vpAS;76(~ozN`0U zr7Vsdv+XwR;7$s|mU57_h;>LZrW0o{oj8LmIvgA%W0#AHQ0>gc>f@H8dg-Vn=G58-8H5D)g)rFiE%Zl6D>B+ zX)aAXrX**al0FnrTW14#6fjBJ63Z9>I6YoXX! z^Ke2a+>bye6j6#0B@|I=$$<7!wwmRg&9Z2ntXGLzLb2lGv_cgnl>fg`d*ut|-YF|= z9jBu*`aNCn{>>J?1~ByYD7_u}aWw76(X<~&(|#OH`*Aew$I-MON7H^BP5W^)?Z@Pm zgUV++6}O4HJ2UP)@yshb1XXqyZvVnwVvTmGRlfROIE*dKgmCK-X= zDaKyn6`6YYi&F$M2fZQ!UgQ+P%uKHs`;;e{sCbvl4Q9rA#crQ*QuQ7q=*4~|cfR`W~hlWLZjNS{Y=ot5eLWho} z9XghF=olUPMSJ&tj1J}QjhMNq5e7Lhod_$u~LS;m`F-_sLOU-p}g2g#u?eyjx_4@ZytW(_OlW;<84Dd1*1mb8IP zvOc-7cUHD2kISsrDd%5;RnHvKeIvBUR7Zof;!`iRdTfg{W|HDCk+h;XSMfV_;=W(g z9o*OX$;V6w_FmAtbm5w8uLb>F`jD#Zq#t;R)Z(^h85#0PGoI(lPcvrOcDoiVA55t* zi%WA=btnDI%3n2$40}wPvD&QKb2WHB--7r^Vtei2M5&c3c?YPq^t`)PQyC)Qg-W@v z`jAgVA-*YS63j`f$JgozIfuzXDzDZh7RqLNSnCQo8{{CBEk;F7$@?nJyUy%w0V!^$ z%-_j4XzyaYmM%PBd|_AHyivs@YH_u0UHHL3!TwCsow76ihnRvxoax++%TK7v?_Pd`DIcV<%HEYB^)`$l1WTjjIU>f2ZcF^8A za%e@expfhtmVHUB!4i3^5%{!T>dDsanlI8yU#+Pp%kSbLYbs>}>5}fUWnIa+g4@q7%I+?ii}YZm=ASO{*%78_)}0tAOc@W9q9~#L zA#aPk7hB#I@KU9w%hzNqU0C>}QeDYAReGRg{SIZ1rbR1RhqJ0?i!h zgrKM`O_JM`q5ZO@0RG6jVh~8sTez;ZPs71bm$xVzfl zsQ5cg#aVzOR@o@fevn&!+FP&wBxqsEV(ZFL;DJUpfT1Uno1CJorFI*8pNa?QRd*)~ z%+Dsf&u!eO*YQfHhjCAp@}8u=h5Lz<^s5)~L#r<9h;rv>>NxO6l#_cAKpfJk;f6D` z{f>+MP-=~x(5ZDdT_j#%_OZ08e;k)~$Ksr>p}%e- z90z8EMDL^|W>gMWGJabl7`7uz-U&WdIhmTkcNjJFE`clU8!N!Lsy4s?`erhW=SL`H&igUV-V9ETM4d!YV zm*5PmOxI-@`tD;^NMqfyNTxZqm?(gLPsoAC?gEq+gjT`LE$NZ3Rx#Zlq0)RU?_4h zEpm|3&#+n=z$=VOhP_n1tiDI8c!H)fF2JL#j8Py)I4!+;Nzekm#i$nWGNpR5^G?kX zwqm5Hi*f#sG&@#Jh;0DP&LzY2JjQtpP_vPC)K`+_F$nr=yDZdCc%TbJwpCHBlFml)LCw%F2CvEHEm@SqJf>Hs7gv_L zYj6}lBV3aaO3lgSy8{ZAxh>8|W@dogflYHx)s75GlQaay?KFdH$U5H;m>uN4BnzIGes*hr@r|M_P@+5@{==d|us$nX7C`JEq-2UPJV zn$D1&x6J*6Wri>4$zgw1akV#xr4r41sLR`%wB7GHduTK5oowQyW06c8w*jvxZX0qI z8}?mvnD^3jhHM){(_#0nxZ0b;GU}RllBWA%m#sG5cByu!G#>b6qlSTerM`S~TgSd% zpMkA-oxs&n%P8=2Ezmg<_!g_AN#UWqWQ$r1SWiWXORYp~)%G9ghQ6M|Qc1aI>q%3} zS9=n-k^NI&-?V8nX3U&f!_i3Ppa3M5*rRb*ck*>7ZBhhEB@p4!#hJ9X;x z>4{CQzp0nh-4Owk*0ZI?QBgfRAgyPT&lwX4Zktu0XYE*|;#0sqlqz=YNCyW+;M=>5!D-Lkn-i2KSe3MeH&Ss9pfXPb~Kt`)jM0%MG$tobD zRVX6e8We$yR-uUW66?TKK!!%*&Urb)V9*0HSaKiYyc~hylBNI|tD<5ghD#KIj8&nC z#Bhls@KhZ+Uo*m58{y3Z0eiw~LLM|NkVdnAB~J*Jtw`~8nmU&2W zeke9(C~l{U)8*dFc(&K{zsTp|;X)xJz(Xq3Q!8MOiTYGdo!RtfgX|AvDJS~*jY8R;WVXIYhK!jS8Y3Md= z_iC8@FAJ9~W>s#JriFbWeYai=O34_CvN$b@8#F^W%))#?uapn7a1`$xPWFQCd{}V? ztjh;eXuuw3^(rzG1temH27soie#kdTLr|PqYRI@h%);ziYKUC%hgmp^cMZ{Nl?{=v zh0#*}PE%PS@v@Jo*9nFBA?1f+zHj*^X$Xp6SH&MK;hY;rJTdGa-`n|Mc|*i6p{7}-@^mkN2#Jjq=mLAYR3kPTD=!xnrlv*>W7KJ8!EzwRISYoZ zN1qCcz_O{sInrL%qsxKxVNoJdXu$G{9yKa8egxxBGMff5`gef>V%St^&xrdaUx)#- zbTGAP&+3USej zIwT1Dc1Sgven?wFZLXVW(k*I%Ic>Sh zxI=RqgS)zVOC9E+EXCZs&@^q;Ar-AUq@q;^SG4MoidG$BEubaNGH__s!4<7Kq@q;^ zC#{m3;@baseC1aSrAkSJto8I{j1{TGa3DXsDenf>6DxdZmHfx+c)r41unl~pQ6s=h zl=AnS5iSdQ@d(!BftUQr=ur=8@o*lA2_WoeCUT@VSiwyob;`4*dX5kbXvPL)**RKB zP)cTKJ)_Cg>;g?(RIwPPnv2ce^UU5>YFewZJn5NtYpxBJyA8aUrTk+^g!_VC zRV}rQ0^hHSZhr#4(=s>H@{$g%SClnLUrE~@*Ruc1>SzP^v;fxvE>cR`*2xi`8}zE% zMuGh3wrd-BzGZHv3DCHYiA3%MX8?b+;us^Uz9Ai zu0GRHPg z$*3XN<6gsx^@<}Nx^$KE1@LdIk~WYcD|Rcj;z8ofnX_iio?UZm#CDpW)OiJ%)ZMfI zle(K0VA6VaPz85z1$T&Xw9W5y)Rw>9n0EOe_3YY+f|RWuoda*P>Og2(x;V`83Vjs zDZd~g+#U4dW`->RRgsDTn>#rYRSJ7?FyK>Ga1%(KeoKH53`inTmVH4B2};S9V48Ig zc2o^U@p3_Iv6~p=`m)(OoSHTq_YLxZy9p(Kt2CAF2F}&kB}Z1^LZyoEg!G?5u_!G4 zpK4xY)iiFyw6Ks&!i@{aMl%XkD+>)OG8}6!+`L zyd4L=MY);sj7=imSFT1b$H-PFn?5`@W z_T;cNZM+-oxFaH4vKxiJAH-bUe@?S&4y$$xz!9)t^cwHaGK_n z@72h5bkE|J>^#RMe_wnQix!Z&Tf3>poZE-T;EwX9?V}wsrRh>_6|IyG0WPqnjM1ug zpnzX7Y6Xz0<)f)_h3wiGKvMZ0BH-2P4>H?_QQ_uCk73rKTmJEo@u~z@$arAPwu> zDEbEJwHBC8qs^xhd+Bv~O~^Pc;|kmw1rkm}po8L4b}SMv$7j1q-BDMujnGZA6$toZZW352Ce zikARi7WC>l!l{AmK>K}W1ctO?zn?QaIU`a;oFVCck_rI@M_b$ z@VvyDq8@7bfz{FkUZA<<{U0C&y4xJ-JyX5UVwV3{%M>%G=Lk!!)CTZaGjmOUjzCqi zKF}kief@$8_wp2NAeHIDw?ohtKi3d2#V`E`zp)M&0n)Ql9`H1?egt@?S$}?Sju5O* z0WQLQ9(|Ib>}4C>Hek=&~=dCx@oFlUXA>6HpUsj0L9c#t1d8QyFVc&Jjvok65G21VeT zjcNf$%_j$eV@k>TeMXM(dedtGzhYFy>mFjbn?BAF`75yhpZ49P*TnsSw;MGC{Jv81 zv}RV0@Z+Edlp9I@Pacs0_ftw9j!)zW`v<+Wv)Xjld8X9_e#xknz^_;Z7tP8M?hJYl zD||9gnfA#`tp8R5k5;NDyJ#Xu2>qO_8Cs}sHD4e?>)a%#d2dri$AN=ILs&G+EE7Ai&;4WM!T;+Z7rB(jbLEBG6H_=i$%bb zy(R)J61VOoZtb(jj_tFTn&P3`6XUC-G8cjOsJ`T_x=R(SRc&IYSox*G(vO|`A(h!g zcfG(oY!KKostJ6RQhv2Ucx}*&n_JH)>?NvHWpXCJ%mxV1{$V{;#OHf#N)GDyJR>LowG2z!L8feVxp@2KYpgqDhRrBBMOWpOQT z>QKp^R!K80FIj@7R+Lro7KU%~MlG3CnhU(znjy0cfml_s`I(xZcQvAmG%HheF+GBRhkS7@P!(UWcWHc0-?5Q_@wGu zQn4F8Dmly|Uo$N)9X{6-xy49sQrDYcY<0KB&#^~WuvDT~^|m@JO(|ckxUH@)k`TQ~ zr9**l56uF8!1_+^JtO2nPiIgmd9Pj!N=XE8^TRm}^^%qsmn*D}7Le*C0syyC2@f+U zoYeI?m{z)dS?G0GD$%Rj>#$T^zMA&Bbxi#l-5>s=rs8_RbluN?V4<@*a>?vh)@-Jl0EKA|~e%LSwoSre*iJb#iJJzrVlty;$eR#&6j8kyl) zTzgfFDdI<}x!5}98&*Y&z6iA@4ro@?AJ%-2g#5tAmGYy4@ZUyWFe^ux)>{Dsc_ZNI+ANia;nDLmI(F9V79~A^@=#w*-^8@5ib%%j}FscP?+xzFkz*R=IfV{h3@!_amceb*>pQ#=Hqp3JY)9 z8j)q|FhvX6+j@QkxSuurf-`djjFC#>0$n#x*F4)>al^p9j7kEW4v-8K%Cl72FaL`9 zHD>o9fV(I?IqWW~rB`(!g5ACQs=pyp&tWmGyX3fiZnI4Lu+I-50>#L)mh{1lZ=-bh zd(@KmYbqWKyu+v#@NT8Vd+IsDeL*j_(bZDRDDZ=-=!PGBr)6%YCih#V6j~LBv+N8lA{3PbSHB$+ zFN{rg{YT-iHcMJSjI3oVfLo~qN0_2fY??*0Vc;P~wSX^FN*qD<=PJA;=*7KKI06OE zR7KYi@L`s@nU+`K2)>4%o-8eMsg*ff%XGVJy+JCk8^F>Qy{fOC!D2)?Z#`*h`D(h8 zq;H9TCt4d@z_W~M0xwcZb`PB#fzT;?zqoImJf?YGW5tcERrroT#W}rw;$Rp>8Yq@X;O{bnunpHM!H6?>QKRAL^*Fg>ACXNbf`ktES^>1RhmjG zf#)bCUVmneaBgz_-K4PUdfmk7aaej_~6~!|bBwT@eeW%flA9Goow#at#i% z+(IwU9~Q{9iZ8@qwCKjSYKi(CWeaBbm#ARhQE|05hh+%JE0)UF;=z7Y^UjnhC^vA6 zCqwCw$ja*O^=!A@_S@G!p;<`X*)*c0v+H>U*;_^SRgwKh-lSzqnH68fz*j^hR=L57 zEpT7Oka9~axC4x%`pU0ja1&W4*5Y}^tX`q1Oe^4Pj2Z%7qErzXkY+!-C_~=Z0Pdlb z`+2g~^z5X$Im`o#Ot}E@|EWbyEPB{1S`MVRBC5n?A*W>yQ|7pp*#=U!yzQ`Q0-;>d za55vMB8yZ-rLtlbO!2>L@#L@gKTFLS!JL0Fa|VHD?m>xd;98>wfmax{9Qbjg+Q9!Y zYB?~o(HmrpMi)}!a^RUpwSlv3B$or{Dp8;Tncg6fRKDdMcz8K0!cieBaMY;f zz}JVYJvqX;rZ))uN28VlKU>a<@Kw_r1Ty+!aM3lB{9keczh&uCV-urf$vtogoUNX% zAK;faUuWaf2A*xy=yw$U(5N=>38O~&?d8+2B= z$!Cwk9gP~jX?}6_%bNNs5N=aas@S4%=3Z7BaGp`43l;9GsV@y-anKu8cv4vp;nbkF zQQ`Z_dI;A9y*Dl>thz!|StNd{a3IV8;3A_&|4kvOv=sR7ddar|;lC|w8~A&pMsfC* zd14zUCY1_+7n>8ys3PFu(gK{ARI&o^EN4Xs&YtYxYeo0C|4T5Ce=8!!;rL=LaDj!Y z)*%WBf3iqjsMOU#ix_uLponc#bt<^kl^}PzO^+7y=~ICM-mBC!+4%Gyy0HJyy>sT( zlR+D}gHDx__AW{-*HmmDRd`RJzOQggpqN{y4HTU!8P_QMVxWLuQ>s++eM;4B^0oRE z9v-M=3O^jE8x;ODP>(9y*``X1+4}N84Jy1WP**7YdZ2Ds_}xGO|4pe!~ijlFc2nYat9`pKlWqqusuWr$fS}j%~v~4xBOQx3v64ID_=V@nucyRF(uh^ z$R`_^hfF@9m~-#2DYN=Yg$E53HHp^Y3f~#1s}$ZCsLv@p&b)Iq@IB0z^BU!6sN zJ&_!VZm;S7xow8uYHZu^jitjk#_;jG*z%b)hVR!lqGLcJp8q^K!tNH>#(;!DuZOVz zK+z1T0(W?8pm2xl0);yep(G=at%e&Lq7{Kc)Cde=pvM?!=AdW+8AoQjV?|em|9b=6W`tLS32cXjFoD~6z#<#&HjCzm z1I5btRG=9Dg*N_ehWb5$V!wHNpjZ*veafzL$AO|%uhvwkH41MI6wBTp1I4np)M7!K zW$$}|irq$v$7^1^SLXkOVvV~XP^@vE4HRqK_X5R27Cf+x2foeXN}I*z$AQ8FaV;?d z&$`GwtIfXen}JIAbM2xT;r}TCZY%P!q)^6pSOny=Ay-UPED0;pn6d(o3fr(1c+}6$ zeOBO6Y^>x-0Ui}LR4eePu%TLk`^*?9OqGndPuNhcz`&rK4FWr0{019q!qYN*dndKeb^6)UARx!2dx0IACkrWt`5RmZNIdF!^|}E zsTFwMk%3Cry%mH*7CSKm$XZu?NC=6|k0`R~Il=sK1z!7+KoRIdP^EEda`KrorGsbH(;z-BFBSL>`%;5?&Rafx!uii@iY!A|V&bu(2| zO!Q@#<-~12t#7)Sa);1iWZE)LB@VUxOmHWffvy12EzumRSKTAKlVizEG zwhL>D91y$fh3&G7vhAcO{|(=epRin755(uIa_yiEr(d1LH2=GL%?$h4?uEsl(bO)? z*N&pY>_XB*^@Z9E`-fppl-%yHK0Q)=mNd41@xuPadoNk&8%znL@&pA)IyIaAmuK9! zH^x=;WqsLkTEWXTb>C|-{h5imMJ4%jw7Z_CX>>U*(aU}zlFcoDB?whc-=H<)8q=in zH}nr~sBh?l!bzrPdf_BBhjdD|VnhFie#DdY@-%rdZplI^Z9_lQDSAnBAg(FrSmbj+ zUD%xiaa?Kl#O6YI8Ov1ycUgB9#0^UKJ8OLdVMxOj{Pc&K$C?hYB`FLBZ?-H%flJMm zwR#8wfXmTx9euFKXZ>;JT z_57=iV+;6zQrpSbU2d%D4RwrozV&qrc!W}2`eln^eDO{NbC0Id<-phLeoDj zc!+dIhs~HN-bYEtp+euoNkn}YqTONmSfSe z$>gk6shzMDHM+1aFYkxO70AtVY7Kf<&Ieerm020?#!kZv)R)YU^G73oYv}R%Qd( zvNA`3uQ93tTx(QCSAR}RrIty$xr$)$OoHh3wXFujiVIu^CNC;miOQ6XHSj~s)@xAs&ba8 zjsSmT)F|-ZjcNkR9W|2lGTSUy+ceF*SX1}n7&utE;vBtvq1Dv}UTRbe_<&OWtKSi@ zO}<*D@|O^3dns+`7es$Od{H!TkuEB-e+BXiVc}XxPX|TdvK@*##8ZJERjSB~#1CnS zBJc^zyBx^x%N2Q%#&@(zfWI+nd8v_Gfwcck*8V2&1=g$~;4-D;>j-K&0&SKT?SR`` z6PiGN%SyCH_3Ap)8UkLdl&=7R-(ZuhblX2!)+R7CeW;?nb~-H1i8T8&*6d;6@z(4? z;LEMq=S<`XjH`T@6!GIoXKW|KX4ucuhGs0&OdDBZU^UyUbPL7Pan$Z z)GMsiCXkemt0I3yRr$DTEr;2pSICiC(yXvVD6IIrSuqTx4A-{d94WMII4MzDhN&OW z@}^`5xDy{D_D;!`Iyx>ve&dFlFos^OC9Ty|HaVx|2$u!&^qjg$-Gb;o<%vw?{RJ7PhSu;VnX zXY1y?RB_9UZUBdrl26i2OA-_a(jcQt#(>eH734k{-ph*Qr|9%>l~zWYxvkSoc6J%jn}pn#Fe>!gB(7W{z;2k~3vA zHum-pEbJfHTf%2td@R333GqTuar)mp1(7)aSt&#_=i zE~#(QlT$K{H-c~FXB}! zCEF|3okuoPo25-EX;#3!l>2*4<<=)KwBSNH^ewX9rv;)4yiRkwbOWP_CBpT z+iTaNi%j=AT~&>ei#6vB!Eu3aDkh#hTv+}#g+B~bRE`tt^5;@<7mB^sifsb#HfjiX zf)*>=+=(3F6@l#J2&)4*kz>`ZO3H>9h@rkjXH(T5M$%xpqYRv|BHKV}D<&cm6;;Jg z>4zt@vA?!PH-NuU$_KJ4^H6+R73GPA{8kncJt6z;s?4bE5E`erWjoK# zQ5Xz)fhQW3+&ZssJv&3hB7~mYFY378wE4Tboe=%viArEV}Zm*B> zq?ds6jT!_Vsgyq?A&`n+0AEwq`+^Ez4dvag@FzyKfX^5;2&A8?mpF?6H05dYwkD7! z$$SOwruF#w8k^`zjKmDd48)?XPIl~}Mj1F@_~w{4klKpLjzmROlU+80jLV_cY3(Bw zG6a7m=l-hRHRmYfq^gU-e?j$($}S0ZtXD|aPGU!#)8B-Q^GB;xJZ~_KS(@zo0>+nE+ z`^z~@D@WSh6kEVS_kFVRCwYM%FscO{m}XkQB}TP?bL?wpRs$Cr)dIfQsMSTG>HoBK zowaq?pf#agQ%LKI$$=EANdlb=h}%N)zpvkO1)JJaFnaa-YSb^xxG~^nqlSThQA)mu zV1E2HwgS^)05j%-&Wy|K@a$J zS??0xOO35$Vc5;M22EBdNkCvG~tpeg|zG45Y*MAlC zexvaBMhyb}PZznd%T`^iF8E$^#Z|y-jT!@fUMW8k2sbGyKPq+V#$Gv&{XmIdSpln_ zQHW1_qw(eg%$rvMN#&$F1AM5eO%=}91Mz~89~eA$EOAA*dg%&wpnBG&nz|3L;QaG- z6dXrie@y$*eSCmPe6Tjnap2R9J20oowASe*Hn|g7L3+zpsy(mLbdH==c9i4pc((H# zN%kwYM_k4F1=&Qlcp?*p#n1H`3wBI19jwhdOw(QDt(G&hy;8*qZR=&4&XM2Wa$0A0 z*>I$`^mqoi(o(LTs#@D*>8?7gdum$U30$Rn)1r4x+ZOk~bb8$_r!I8^P|p|v`qrIr z!K8AVgx);SoJD?_G8Tc&^ff-fy2mCArusw)a*FhoawN^Oc!Edn$FSaz>R=vBh7P!*j;zujQ{HwgT^ zQhs}k5W?jkkRQzSdI&XjWFhN00yA4oVIWAQr8jDpTQn6d;5R~PwH$$%D|*CQ!h}#2 zL&>O~trNo=jIcJ4^&H_MC8a!KHvw3vujth~f>s)h2jgfg8S$kMIFmD|n;3Y*&&(T! zU#nvh*1(GUR~p=;ghiV38=6kZn(o!w+g1EiH%&0c0aTk&W7$)hzNS}|jw7(r$&|6p z49fyRKn@ld!i1MCD@HK6g~9+PvQSjcq!lWuSiYpn|JB^Dffs+6KJN`sr!aW3Hr9K(G<5ff#0YOUeAur!J(;*w5g4>smbkiLQ$5{7z}qWGsc!X z4s)p5adF*_iz|1W_GKx#PP^_wO~vy|R}CJgf$Ag+XYJDz^3z8Z5iZX{Eksg;G;8(IxD;Ny;}VTZ6|O}#a0BPNnN}u{>cA1&F>aW@IRU@t5S#`|(;ntk>TW^nmX+s&%Ep z@V%Hrz>ip04AK?188rlC5M}DnJO3TDfPXM*5ZE935V)^VL%{u&l5<@xM;H%!z)Os3 zy-VTUMhyWOEIH`_w=!KmQ=mqw;y`^tYPbAa#rzw%QclPxt3O$Jgn>vR&En`jZrIs zpHoU+usbzJm|v>DnIj!<^{)hClFwaXjm`Jp>cy#M!60xurQ})O9Psag8m)h^)jkNs z3inz97>g?QG`>u+NOqTU$Q}ZaI)&`;c8P@GYt(ac^CY@LtP0{27IJ1Pb`0 za#n<&20h?^8MT~t&$o7O8eW}_Bsq4c8Mf&|h#vIqfjH_-xa)&k_sn;Rx#dpwCnVW3x8^(Ek*Y~f9q zAQ2S!POV2?AHbT>5$(9*iqPw-!hJAW9^H^LSeNXJTu!ZB5C-8-68M3^wHnw+H~GDr z7IK$0rGaPtEKopN=YHKwp1LoYTQRMZ$nQ)o+z&HPwUSq#r7)Pe8Z)WPnMsc@ZjJ+o zUYg_%{y9k1QTkgEKb#U5DsYLK3> zmuZP_)Km%qUSiZB@M@!)A5?f#pnzXBYLb4-vSq45Fp)t7e%^8q0V%jRQXz$ECV6j? zO3tfuf=Gip!~2Eh)SWSvMx@I4G)mNM)${on-=h<8Es=zWwdl(yJP3t8Ki zrv&y>yhKxJE|7Nk*w?V(r`P;JaLY?#}@J216=u@QcDl3Y>$BY^RZt2R4#G@X` z3w*8yL0LzE#~9TD*87U`L<`6*^};%&lkI->5O6~82p5V-@3z|vL%<&?RVX68a679S zIHpvgi1g;52>kNQB5$FHwEOl}B5=OGFk2`hoouhs4gu%QDwl}#Ze^u=fFJ2nM7lR9 z0-NfAs){yh%R}TiA$nhq6*4aOy7Qstf%8#sADkSuUA^-_UY}0{+~n zLEsjpoaN0NX=k@U$e-i|vb&Pw6VRQP3awSl%EOIn0xvXb5O|P26OkQ1GwoiRX{(r1 zOKhsFVoog!6!YXkojp<(GXjSf>Tq>sJ~<*3&O2<*yXr;ii}eu!J{c%{ z2S1REd+4AqwZUJtQsHTVTCea!fl9rm^7vA8`L_QbJYyJ$hqy5x&XMlaGG%W8#2w^# z_2mu%4k3C#M&IipEVFSR2L6KvS+9qH2Nc#I4ePLaRfLZ#S*Rir%)BZBv8+%q5gu~0+`fpRsF zfaz;S2+?yjkSOZ)5JE^@4J5RBJp`6yX$i12Xlx#M8*LSr4Uh?-D;d)DA>#y5u|N7j0Vq4;E_MG@hf0lttTj zw9`YIjTpgEw9<&!CiXq0>#%73oi4sd+a9e=229UKu=3 zj;W`gqg!iFc2szirZe1^k#6jjGB)yF9fYTpER~DT?X1hQF9ZjCpOPhg9P;g9)Aw*E z_CH?;9>|jG$=KmMiT80{Ema5gD?LnjeO#2a*OT#@>&bY5EtQN@->2^C^$}QHOZqr2 z%c0G7OWO9$^g&*Jss9Q^FyiCa1q zjwsh`Nf$f@DUg0HMIu%~BrBgBLTRQRa z(bruuv|BnAbl23cje11I+jfDF0Y|21=@ zJ1nRS0$GC!MI?fUlnCUmTA_$U3=u^jv7=B#!eK-ah}#s3NN3tkXAsERRwyFjZBil- zpDPrRf?o{+@vlM=i5qKDA`qV|6p;u`q6j1;6^ck47(@|>!xoB21T9en61oaSBwSk* zfjD-dh_u2M+(97AbD@aD3N0l9S)mI>B*LI50`dPs5s5v%C<58;7mAa3e(?ZCmhYqUg*#6*Ym=Dx(jwM!m`yr(6; zKC6Pi@O(V0NrhF;Q}U-0jLr5kXT-zQcK`7pgwk0ESUL;c(|IClu&g`xbgcEd;MTI0 z@%hMC@?8zikAy||o=$v1@|tNM%Flahe{z8ERU=HbZJ&Jd41oidEVsZHnx5EAJpZ_o zq6Z|X`$`ZvwR#g@t8?qkHr<*)0=>_Sz@gS>M&LLnH3K=>dA;~(=gD|2@YOJ{iS(XC zAlA#kFteGlUT>wkC9WuXK;pdDV{Q}EJ<055)_Rh8yEyDJ@97|LuSYbmm_Q(^`|JpW zYcVK|(JT3uQFg7qJOuVVzPvaVcruO#o{ZyxC)2RMG7b`6FP?8<`W9CR7wlntCVZWD zA3Yh5oF|DQjEyH53x>gyasPQT?m!~( ziiygZx=l0CXW#ZY826Arofd)F^-vn3%S^ykDBE2Nf0w52b_@5f@Epgn=jGJwI4~cM z^lytIu=ka=-rhlA_v>M#{?yfvO$mOwux*z==Nw=P32~c9Qb?3r9>!hW5^?QZj5m=LzYU85WCqCV(?oE z?=-3bJXR;EoMj$U_@q${=GOIk3qxw;76++pUVvX$E%#H8-spKb6dM#N;4nRCF!iJW zb{5;&KEDzBgxD9mgmzp^+qS$ME#qa@xfmVAJO1vY1&?VD{aRD;&-*%9S`HHNYU~P( z7h}iWrA=ZMOKX{FY;T+zGwr_8?29)ek~LnhUDl-im4x%%u2~b7a@D^~y`NbiZ(-y4 z_o(L!1>`6o9ke+)7dW%hW5M$0=!oI^^4(ZK?$AjMz`Ir3*T8xe{CowFq4jzQ92cA= zV76F}V^hJ&z-MLwT%jid`I?2hWa}FlwB^TrEuIqM& zr#uvKS2#WTf@V9es?~9OoL<}@$HnIVKlZ*mzN#ww_uK?2)>uJAy&x#|s5tg9_BQHG z0RsdQ1OyZzDk3OC#@>x1D%Kl&LyaAKbeIu)oWb5=$FWStKGyeLXRq%*{ch*?d2inP zCN=|ywE>!5KFM}0~Eya6vcts;RQ?nEWPW1V=)+k06;@M(zlRjC^RkST>gl219`HK!}Vb4bima zQs`sPV+E!@@8k12ba=A7%joGHizYUx$Wn%OSGwkMsN^mS@{{e<;g$IrkdhDM22-WWr94s( znuxYpNu^ZK*K_$mmMxLTMHEO|TUavjXKzQA;+?e+0v7@d)07}p0|?45I&XjdU_!Q#g%q;GOL%|)

?tQ|xA27=D?%e~a5u%hXdlUuf&Il7a?JfI7@IrO9*B3&?c8sS(0cRz_Fe1fDQ`r{ahyaYCPb`a`yqamU(Ov?3KWg{Xh@o z0Jmf=$5PHez_E>R_JJrl=Zs>b;pzq`vK(=J1Du;Svt#ZkvK)^6f-%A0+VC?ck6(;p zYvYIkyP+ELS*fN_Rf){LF~|q#pM$hlja4dLi98odaO3N_eAmUvI^hVAJfr0UIVUqX zzK~Nedz3F^x8i8%3)!t$MqkKo#UAAgnfN5MrAeO49Dhxz6BdV3KQqTu_B>z61Xn~- zMs`W|Mjyy7$=>J-*(KQ=IJgcu(*%vv%1Rd?9O>?cEo~z0Dj%6nKO_cz#~#O44h; z?fqKryZ3Y7c}0p}(vLCnll@3V<=#<+A`_gpV`?td?RoY>oRpoZdw3Tp_0?RYi93|S z99iz1`8aN+A7GCc)Wpwf_&Dy5-J^SAu$!Et;XWJD#`Yv-4Vw@*tC5urh;0WVHXpVe z-)g)L&|++R34NB>KI3P}b4-mq$JE2lz>Q=>9WwYefaJ^>&-KG5(|l zFGuBbmW38oAX~5VHc({8SW$s&aFC>tEGbrHWce5ey4a$(wS#mcS&qxdNcQdkMV7Y_ zK#?70n^Gg$?X9Rl_9fep8p*z9MFp~dw(IUjvQJu3fh-UM- zKY(+CxtFcH`e&4V-iiujKeVEHvaDhZ4qbEOJL0}DFh&kTT3UPM#}OKv;3A)8C3rK+ zuhPh{$BCaeo+9Hq@~O~#NB($Q)CRI_)##RF&kayyFR-El*&5rx8^|(j_*xlz##D={ zC(9m!IJV7Yf_(&TkZreF8_04*M@!|P&Tscf(a8s$qn=|Y=W&6N56$Uqi9^K#10LU9E+Hn_Uf4jE&qm=0**O78KB5=?gEO_7w0Y%iqjVd z2%yLYqgi6hfc+cqsO6V$DGJe2D-ezZyq%DulK(Q;d?EX-6&1+xWyL52&&%;)jVQZ0 zcIHcD9BMech>ZNJ!CnsEwH2JBOdLmm(GvZ69i0(HKY7k@$jSc9=?o&W?ADT#Jm)jO z$g)!lj69Dp0LBvxL0`5VcZu!G1+s5h(eP3o_nx5Rl6}C63S`-*@z{qf`!ohTvb-CB zuVmSwrAYA(2^jkj`wK+uEj-Hw5!r6r9}8r;&;u&eL@mpKjX{C4WJB?>@E9Zg;J07g zb=|`*=?Y|f+wZE3A-kd#703onf6Q-f`kY;f4hG&a9C(9Kc1&`V9m7#J7*b2`UE8+A=b(Hbp7X|$B*`)rxVCzs1GeH1XB>|a!b4Qg+j z!T7;Q3V2svA!i-{1ZLTT!62Yge|I z5H;^nH1F>TH6-222}weEk~cwuGdJy7IWlkQBYKhG)0ByJ-?l)OJ2L1Pug+z{{u+!| zL-wzBOQt~fX}cwZAGUl`6aDO#Z-MLpE2<&OgEg4($cCOTygHYUU>>zu3uHG9HgaE` zn{rh2ReMCAy~!^c6YLtkkZUvE_xeI6cD1)|Bgpb?*7)V%T#*T`*!=hNGcm;8gN-1| zn>-k4vu|dg5U8mj$fehoo3=Mc3)&TS$?a=|1}&Yc!Cv1$Oel= zd$|90-AMCIFwtSZom1c_!YS6rF%itS!^v{q^>IuDYslebKd^f(1+vSmXgJx=t*Aiu zS1TG$mK05mEJr*Po-FqVeb1P<$=<#e$Szb74pileOmK9BiPd?psuVkP^NM{n!4VTU zE;lCFb?^wX7uu|7C+q8KH&~X`k>xF_?=lk{Wl=P;T%Y(jCibu^lM!Tj<`=lOxlHh8 z7AMQv=Jv!74^wcID)5^m6I}P;>?2vOcYNziaOHzQkgd?wvu{1GiAuYqt|QBPSYIC# zoIg-%vYZ-VB0eQR#Myy2y}mXkI88tsX9`XezIU7}I8pdQCW2X`K$f$Ik7I%h5;#Nl z7rl@6aZCiOw-NDC-IXpe>Tei4h5PM;EuR~t4xvRI@ZkKbc5^Biw;<%W#c{?*@@Ya} z?YO>>!^)*$A;*wGLHBrdE_)Pr=KbvKTbJ4<3hQiV2Lg=Gh%S9-;iV=)e|0JbT8jfb53TgYC4w(FPaIWnv!{!h5m@TO3}2%fz?<7xz$G zf-k16-d0ENy#2-I)dC&-RmBqm5!r=SR7;kz>*dYE&vE0I-;$-Tje8}7QrsKaGoWXI zGd1z7NW+H>)Q_Rop8{F>gU2LEPg0(oh&l#*j8#`dmg?{#;(3Xp`NE`!RLA!%<8fmG z6tWtanAb1G1cZs)-pSf;E>gOtccLGC^NRBgdTfoKi5s+m_T6Om|4g!p!m$%Wc7h$v z#*pRdeEFhzO_8Yw?TNTCWXI}YW`InMx3?@~$nrtA0W!6*9o@!|eNjaQ$W-3mQ;Z?| zdleZVQwIbt+O5)`sY;E;2<+c>Yq#4E5r909oe5%cOKM zkgkAuylanaC~Lp;Oi}3`S{j(j$6KGsSQs`Mk+G?4ueB($8_$2{G94I~pI5sF`QCWrrC>A6{v$mx|5VD-FC#nFq&t*j>7@MB>715p>logrg z;s%d(;-P|wks4&f(m@?NHS)U)g7^sFtzYaXI53GEP*MTVhzOvBj@o+j0Y0 zHgja;kicf{7nKRl7|=%cMysusEGr2pvO#^-CMT0xHh;E#xIvZ;9lAIbuy%nW8>;B| zP=$=FMN(~>X3NswgtVg$Axc@5Z1ylomOpeO?NqaGZ5w?p8$GKO8Of63o1ARYItR>9@ccI9UNjSb2Qn}R#YJSS1TG#wpY;cS-U~4 zjb?4FZ^wes?D+RtQEj}|;41rgZBV!DFo@d}Z!mC32? zNQK2~NM?p)6^&vQvBwFFp*~C_CNlEu7&vzv51GIiv;H`8_}9K$lA_a!ys=L zh-|;MeX@p)E(mc=eC-X3jCv5^8cx}aw14hfo8Lg&3~M;xa-xQ^ctt=IpR>~&YYn?G zCu6ahtgo76ebulZ2g7nreCqWJ5UnfIwPVYy3T=5@(MUe>3?1fdu3tz6MxLv9d94@A z!g7d=o$(qwMm6xJhGi2N3&V84Mrl(b#j^ymP5RMt z-VAT64U0@3!N%tm$R25t&4Oeyn4}8)Ik9ULDODbez8`-5IPwwwIW&}){B)I}RqdiJ ze|M!~f_zQTE2ijtakiZ|YRI;#$ba43Vok87Feef^etx9V<-B>`!TpO&o@}!>#)lX< z9A5@WZN!Hdz}Udqbm1PGTtM0Q*sPE*_%O^R8#8Z2544T6mMpbG8(9uAW%#Z+>t!Fi zngWN+pl5u3~=^c-?+`uB!Puh`gRN6?F*5BfFpc-Vpj;%}#l1-jNk%XQ+TM*{- zWH+dbcLT}EesGuuRAl5&wz92?z1FyVVPUh%8q@=oIncN_>q+8EF$;e|tsSVhSkP4A6!-)xBkFyPoX7RD@sa z?NMaHwt25UIR({oHsW^={j5xUV7o~@D?S+O#wIIyY`l`;F6%g`r?JU;8q0bbWh-SY z+1XZ9O_o(y?w#1L$V5Rs=-1HyLQIL09Vw2ljyw!pM*83%PupEAcvK%zU4HdCTh%)l$*@_=dmd6ix?G!g8B7UBG2e)Ag89LbrD5RoKP78nS$w6=E^D$iyCs zOMe`T4>8|vub7>!&T6uxWti~E@2argkj?LLls6{ zT%yz-3(4}}PB;!iE!kIMviMTpiWn+m7)a9&Ttsr<$cLuk zG}$|>XcXD!tf+?UH&&F`tz=g=h@lo(O?ERCEr(wr$Gs7gfy$8zu*4rvWW3;ie4^u| zx2~da3Z-9>37V3dD*b#9rC7?4onS@PWT#tgN6jfRaY2A%NETU99offi))_sDOfX)s z`o4Z1lrwQ2#xJMBf-sgWX`OYXf$Z5& zI%y>x&O&!uM+(Wpr{0bZPWU^Tt_5Kmt)LXLugVw-49H}U(T~u{W-7~2Kt%t(vZw;t zz;L~Om>_GaWDlEr1lhpGaF&GO!SN894QvdLE7uta;sf-fGQ9WMjauF-Z(Cu-Ds&p} zx1l@cubht7$;&r6!1_>GB)_T3RziQaHj}?M&t@!WX2r{i13j#~o*2GmV@cJ92qVB2 z;9I;^OPRD7glv{7$yVK>2zDM{^<5=YGXqyF*{W5ul1il*a>=eyZe-Xl@W>BP8DM0; z3BjT|vr{yIxqxiJI#5e?gf=pBjESj9cJWh7mfjg4Q*;nU$Oda|`yiX{o4naBn@{L1 z`X*WKe4^iwrK_T|zQ`0UInH0jUEp(}Q*D3>WZ5cELbBHcD6+R%QT2Vw_L2UF3mGRU zdrBZ$MOQQz* zN)aToq*x!2<)~cl&6!hV;zCt@uh*k0KM@HfvoxICw73raB?0X0i+! zd?S0kMU5tVw~BCnVos5X#Q~1&OIB1zHfS{VM9B%ZIgDnbVM~FtWZ6Re5ZN%>=z{TU zKnspGZ!WH_7}Sgi+i)_hSaFbLQ2iAL6Q9}$4`;A{QIT(giQsTqZL%in7-I$u_4=&F zEC^H`+hq`_x@4g0etV!i2IXK|k7#!Eg@*lN&~(Y@YpBf%*(Q9(?en^-!n6@ku4FvGseWGwiy=4?iAqW*^)mL;MiPOux+zI zmct)PL6#vyDHyQbgN&>gK3_scvK;=(z1d|&CKzjIiw08;p@c71Bipvz){zee`g+EO zWyY))uWN|tcrb+5vyokC%Tmv>(8si$14dD+%(gbV7It%Og1yG1n~iicsF+5wtRQ$! zHmHS07KZNPVGY^e;JL)u-*Gq2nR1j0Hk&R^)Ud$@@gJ2e*eDikhAsXmva?i#TcdeJ zCOGiI09gh?wt}A3JdA`yn0yeGQH)AZ#iPh_Xu;0S!g;Lsn{2(0`Yq85H%;NUR>6)+ z(Voe&VV7b5hx|XZy_CywcE)Tk8x06KZ*f5=xyiGber^^tC>3(ERBQk~QeCq|eE3OI z++0D>$#QJM>|nDfle75(5O4o1)-NK)M4AX1&SBzd)9)01-*5qpARuS$sm;JW`xny;t%c~)y3SsFBVU`+AXYp|Fi8#Z5`a&PZ>?`Y7!u)!~oW#*JtFM*Sj zId$q=qxG>scB&OsU#~2w4Bh1Kvam#h(;*P1epcuBqcpv61GN0Fz4{j^*uZM3Av@EG z>KUN3tf+=;P{u@elEJ48WgMcp4zsyOlBJCv-t4=27cW-;i-vARHZYSIw9FW{ELIIz z-1RH6B520nHDqC^(icj7gfF9XRdt9Zz?l`YJK4e%sF0l|^<)b-Mp+XhZT@QJXYtYf z$@29TJ+Vo3G@cAFeYNHuj9=1_gI7aV{PovWy#8Q^4Uu~Fk7D6Lz*?(IE~4q+R^dEV zRf7k*RfJwyA^=fW77qf{ElE{Z#@LXemBiIax@~zQ zy;~_@WEW{$!CmO&)IJ^7M?HLP4{C?(cDBnmklkKIX1HQ%Yyc$7cc2>}Qx^w7vX?|O zGQ}d`c025BHqX})J#ND>lI%NHG>WXJMsa&FtH{I}*12l3{VWa-9++6)3TMwKG6a03 z7{)@f{QfwM%&|WSIL8_pMfN1C@Ax^zcmVv&$ztECWeVcN-Pa@*5{805v4WcevftR~ z6v(oG_#K-$EZ-T{?|QOywG8Kb$Orx;hReXQ_tj)it8*0Dekv-%fIvRv&Mdma*vf)F zZaeMP3&zdPl>c{$I`FzJdo@}5hIgi{P-KEF1bu@no!Zztc=nw6Jyyea3s>)*-*OGF za;?>>4j9~jXdiE@!E0@hTWiaI{<`{rgE!h~fNd%)gKvTf76>L9H3o}pcv99z{^a9r ztdPwtw6LYJRE(R85h|i$h|W_HW0!JEowKcm;X}}*fD#fTo_G){~w~p*< zD#H6)CKvb9${1}crH1TbR#ZoJniUnuwpvjg*^5*pqfkxyP#7B0>HK%r`D(H^Tjy)Z z?xec0zc?wy`D!{p#ky5XmL6jvM)v#wMK8mN}Siw>f5trhNz4AH4e57JCHQ zyshTsq@H7;SwL*^#>4yJ?B`ElAW<#}F? z)&jp1ca?rGGhNM$!)R^HMvA$fEMqRG+{J&UFS4=r<-^iq-N0D?V8dTab|nozf;Fee zL{KNSL-g}4Z8a6hZez1H_b4*4U4V<%lu5Hdv#l@HEQ4qBR?`!jmw6`TnxjhoWR(?u zR(36`EOD144~k#c5skwc43K4)Pg&K6b8-|94d_A6#D0e7{i+rNP{J|1XC(nj_6o0u z7BSG22u?0x&hHKJ5cct#9%J#g8ZYyXUW5E6D(el|{2t9XwMI!`J<+zs3>C207-7jW zrwn0nkC<-OQ(dPiMU=@Nt}aRMP7WdWtU+iqyf%gFYW4Oqx+(LxN%7nmQDj7?&%kqYioUtY65706Dr z~?EKA|zm6VjDq1!7}u>IjaXKTOEi(mH(UAW*O^oou?EL zBzv(HjUjup6*Z7;x1up*`QBlSTx5IdaU-bjrEKsmmAZ9RG{d4A$nvWdy>JR?o5A?~ z%rg~pVSrtr>=S{A?AumUL-su@8bkI|D=K`i>=Cw+HIU^Hn)1>W1W?9V+f@CKddb*U zGq$9de92y*fs`?5>kW%c@;h=sl6@kC#P>^?WMF|L+eb?yI)P-8N8^EH=ov7G$o|bn zrJ8IIg2ZTViY$NMQ}=>8FOUt@`97+Bgtby2%PPhwLzY#XeggxeGCAI%X z4ew}cczB(%V*=4+Wm)312}ueo*OOY{7nH(p+GQyrVi9h)1+F8@h^LgUhcRLQ&Q%*{ zD3w#Y+w?Co$;JdtWZ96U4FJg`ZTfQ?FnnuaRN@l&?a9^Udtl_j)6dyY+dKiiHAWSKeTIj#DY<9GY3w9R3xCVRgXHIjWv zMdjYSNkt}xYn@`!&DwxYTB)X$r>&JSWT_atp;-#+HP>XDyFm6(bq9@x>=Y|X+?Ghw zq$>qgR_4v?O}@?=NZhQH*^C4sV`9-?o`O0tfijD=z0_Eh^|zMn9yZ9w%quc6Ccwqp znMw1N>#epFqsazeQkjF-I;x^=tir@y7Zm2Es+udTx;nCK1Zhjs+;xf%K#65iE(MfW z5tXHYMx>NnrsW*Vw301T4Ozae1K(GeQ)D72dkxvZ-^5C_++(2#PT9W^*VvffwJ{sD zOxYl3`pt_v9=zhFKIv=99&O)5WhPp^jTs``L|&LPLeJdj}%2`&&^B z*#lH$?pc{S&;m1Vjp)iE>q<4*e_BxuS*kM+oota}40SRWHb}{`OroH^$P|xH14uS( zDf!%7h7i6}neNI2LHj%Ch3sBdR7ZAi6`5|p)R7ig zL-qzMsv~<_Brj8MT3}*2GM{h{nFr|+9_D?><}Ey>Y@jX~G5_daqXMTZm3B>jmX&Q) zB!8ZjCBI;v^B4g-nYQ#vqVO#me1W)1dP>Rys9P=aY+A~4I_G_;AcD)hZ4#=Is8WVy zlf}RPfaVI*i9HDp`9W5eTmz~zUZrAoREow#_G~MvC3~)lOk-kdP|&BS)>3@LmxhpH zbof~H1Ua(?3{iw)9@?ei{@Z(R_1dxkTYt#Zw-AEp?x*2X8fCn<2$`Fj62koXW`l<{b5& zA(5KDQ)Mi)$l`h9=}Il;LADla$R4aBQ{7C3UgAV{uFcy(c3vbeQ|AUivKOkTm)uYe zZuSOIFh8Op?skwa;n%Fd-2Z+LME6WJKtmF6TB84%mEcdj1)T{-+8LpS>{(V+OZGe! z;p@)*$j?`qsU@aXvTMD>6jq))QL|7*%79e{$Z&-bE@Nd}fBN|8dBnZ1I^=a9KPgY& zGF}0~sx2$?_?rXt0FF{I-y{VQ*}tm(K3@4U?Wa$w=xe1wlchHpB_@+64QZf=PN&5R z9@DL$yxXRfciTjFl&;Lf(JZC3n0M7-n$K)SUW;zR^5qQ}!pT0XA7Pa>xyS?$9hmmQ zV23F+E(o@F$ue`wQ*_U3Q#>uDgv#^czQNtFZNp!m(3DuW;;tbE!o50fBV*Tcy1eyl zoKDef@)(Xh-)0j$hNEPOqOlYw%i=AMTetZ=X5+ctfJAUtlJg%M;3M;K%qc%f+bjm6 zMV3*wZ-WEs$mKR`X_IkYzDu z`MU%BjFl|qt(UQwFeGIcfu1nbX}Z!}YgM-{R*La~>>F0Z`^$&|=IpSrYO+DjM9__j zYccWnT|OWT|cq^vT&x$9p)={_C&(_ut$_nVDb#{mhXdhZ4Nk4&J(7Lw1Ud*>JK)sK_jg zm^vi@hBQamq?u}(;f<>t1XM*-Y=#S_0yBx-WXbn?&Ahkurj~EsoNPs@H_>(aF%2QG z{MnSiW?~8EXYy;7+W~u8GX=6#y_R<@de=<+AF%D<3;qCd!M^i*3@XwjDONaSk5O$s z@OXXwB2#o|El;$Bl==!&P69@%fr(v|K}pFTVMQaz{?&?VpH=oHD;hyI*qy2+`<_MB zkp0+-5|yW)M9A6}UQPA_D;iFgUYT~n)awC|EFCjIrUIW54>}^w_=y9p)_SrFtf-Fc zWh(ObftjFVV!gh|RA4=|QL3U4p;;^k$g-wzG=MC(6tQ;iN1i6dfsxh$Rv$ znS9`9;x;+toc(^yBo(41lRednYR**lUMng*pzPy;h%Eg^GbKx}Qf{22zsUb4Rm9Sl zc{|uQ*`KJN$&2nVqYo(3AvP)dLENBd(ae^JHP72j)9gudA4+~d{R}0b=Zt6e?W)N` zwXAC_r^vFk_4Q`-HZ%5$JDm6a_UrW?xZ#Z62X8o_NB~r2~H(d_`=z)ETcaVNWx6(zPItxsT9w6Geo z8>mR$mbcYlIr|*WAbi*~b4mS@r-qbPtEyDPx=P_US?+b=Njce3ijw}E@f8Z|6V;#w z$d0f^>d1yQW-ZWJN~*!Sn=Idij-iBXSYz^OToAx+(+<1=b_H8QmfM4PT783ldap%| zCCf)lCKycdfn3^?ZZ)2?TusZoOGSCe(gQJ5U1TaSlQ}ph&D7J(m9{i>WT{xp)Tfw9 zohyEDpiQcLv%%QI=JQ zPC}O6r;U}8i~g7LyTMv&;ND5#V?!w)=>>Wo*{@VtnnNavYbxSeYjzA-+UhHHQGT61 zEdyVn@|)V6&_m}K^9X6FMV1dwc4W7Y_l)L2iA?^z$~$c8m$ zjc`egBdPIStFe}BSYxuYO5v~5Ods0J4P=?Q!n@!gObhr|x$#i>I(DMhhoWfjOhYpJ zx)9U{7shw%=crt=_o&EJ5mQS8AXzRh4UnmKEU<jMn_tPEL07OZ5>W@@AbO(=;Drhr8WBzy^ z-N5Y**^o#5k{*quM?cuIj3i4ZC6XhHNk2!X_}MSwpClqaG88CLo|eZeLS!i#^S@c+ z&=ieBQ#1}uXjC`5^n+iNqA!!(T%APwsZ@4SAUaCfmjjWiNRTd-P%&B`*{L>n16e9I zjhU&yOhZDy3X*2(X@(m{p}iw27BlrlrUEmmQ()4>NSa_y({kcIYB5Eu>=z0dsA*X# zkY~HY+{%riMjNOCedXSh8_t+-Ty z0`JF`@;>ltEWP6S3#`w{(mR|`&J~$hYP}yzHt-%e>t=-Ew6>hhT_DS?OiVI#nF=9_ zXbB}&Qbnvu)F9bu*2WkrWUT>3Hn1@!q}FF8KlM+x%Ic^r$XOT9Dd|=f-lh~Co$QM$ zlBSz}o0!a8ot8O$y_C#cpO!g&X>_yt)@j{tAWOHgkQx1(7c#156|1g>>>w*DkmXi@ z2@F${0w7uL4rNDB^MFt}MnP))gVk6~mYOj`=wtIhL!1jV){~`Xaj3q?6qTax$%Z{o zuYssF8o+EzmfFSENNZ~^Tc(j@X%l7ImwecM+ERA1s+nQc6`~HsQ!7|t4cYaqsFv*d zR+QMU_q^5h!~WTza<3u=!tuiP>~oC@_NtWOE*ENoY>R$`yGXJpSy2tylT~C|8dG;# zVA|}6QSNXBPz^>L<|Pe@s19Z7s3@zFu_j{xHEP$f=4;6AsG{G}BNY1oJXu3MWZUIH z)LRGRyiz`4iWg|He$K5T-Y@f@)A!{jM^g_&o0T4`lwbC^Pt$Szud04Nx%{`L`GaL~ zJP*trt9EBAovSpC=hNUl%giTZlrD|YZ8bmXzM5`R`cjPks%g?nEgva=l{D_pLu&WY znEkjvZ|dj2HGdYqulm_vDa#k9{Mp~Qy{!CM_-ED53rgd0V|tl>9=Dg3KMVh@>iM@) z)<>LHWVFAm{8@O)*H(S`SiQ6U`9-RD`H0_8^KFumeKu0(kqp=DScFFoN&C^Nd4MasXt%?ysxIKmB#b)uI{(usb_@h z8>#f74E=2?=S{~gn(k1#L}{nexPN#4hxjhVf2{Nq>ec$`t+XPezW((e;#u!Je>O_> zHY?>(X3}{1#{Gx*R>fbU^fIOGN*5{ZP#U*)^?!)Z>o~BH(oK}^u9Wi!A2-GAZT%nO z^QxdpDc62yXgW^%X?<;?^f0AIu^wX?o>4guzPzI8AC=;iw14%=h+h_t?_ZCZ^M*sToo~-n2rE&cIDt|=jV@g@S@&12iEZ*}qeYsNhkF5EB z7sc(SbT6eRDUJI_`ERuw&%eFa1M6u|P4gR=thdoBkLSNz<&P{2uEenjWcitkQ8xCn{}I8u#}=mH$>f@%+nr8p#hzN9vvP45e}WVZDsx zD5d8ry-aBwzd$E+(l$+BtMmq?4=Ii3=ZP&+j#I~HwC_9hSip-)Z`Zrl4&J@S3_PGX z(q}aNg3=h=qrP_4cdyb1GW4Ijn$bXdzNY6Zy;SKHO5^sjaK#M#3c7G2T}jicDebGY zztXt9EZn*o_)YZYbu*<~D&2`UwJ`%Vx|?v4(jD>!u)ES2++4yB8fKCX1J(!VKUPDiM`ug(jbX3P)NTc)3rE|-DdSLFqzwMs`SU8?j` zrE!0WJ2HmjOEu&8<#j`KkkSp6ZmKkn-&^Gcr57pf%)no)Tk&m5uUGoI(zyN>-GjYe z=?zNnQ5wfTr*hIxO)pj2rSvnUJy$gv`Y1g|X;Eohe^$PAWBKmS$WPps`Z;l3nr_v3 zvW-+Xs@s(wpc|A;+^CE>Nd0-$x0zDfdr;G~*Y+Rkr=Ei9;YRujs;5f*qMtGMJeKPo zEg$m@)%?wx|G13uG5?(z`Q!Fz=g*3-Q#&n68Asa9%KunK{y4r32%w_=#GM*-Gaqy*NfM*ED~3rz_)rrkfo`KVMF1 zAEo?38U9YnP?hhbH16NNDsNCaS?Pid{MsuU4UZ|U)Ol;)jQOicaWj>kptMElDM~L= zda2U;mB#(OQSB^K%K7mOozLRBkxP-fJ3*1C$O` zTCX(jPn*i0Q~ILPr5X62)-oDM%ln%2%1T#N`a7j@d;6)pPU-hLK$h!Qi8fYR#jh5{ z6pV@GBW^Fn@2|90G5}DQ#7Hi_(DuVumz%gxWh+>4mEQ1*NaX>~*QW%8dKh z1*+#tr8g+$ee;?ck4mMpR8OnYB}#wE(0_yGyH)8TrOzsTODW^tss6_O-uHi~pXJWV z|BA-BOX;5Lnn1TIy-BI3_xE|FuMA1ApRWfR`SODdT}f$QrSV+vZD1s84mPx((jiLs zQad#n_UQNKS$@Y1?xSha12sKE=`5wkD?L%^AC)dr`moYC`B4RYZd0%G?&OU5_iEh- zAmyQDJ||kJpWmT0Ztr9r?@7p#2 zrQA1<`!ilYKV0cdrT3WCjskV&uPdq>Itqy#<+G|kUc%^)=ZB~Bz*`fLQhFjW= zmyd6)#_{}hhIe(n`>|5~ib5REU)tlZ2~O8_)zKO2t20#2-}k#j)BLqH z()cgYU7w+k&rKiHcKV3YZl!U5TeLs5D`h|8$;&u?9~F@9ujxaSPEHjDHZ%1H@ z!=_A?Iva=ozx?WXlXByao-uLO#4W~0{XSfiIWO;(Yg>sTJnt+BWLfTG{0}d}-?mZa z`?oSyaRI;FfCZbh}Nu#JuSBIKZvtD^=~erdE&I0%~0qK#ed`TxT7b{6iH=R;@A21 zRwAGO6Pjg78<+esVl&{#eIwF4nFl`RZQNYO3Ht^>JNaP#%r6P6> zFf9(u)4)`fz#KVl%Cw^=&hTU*8(5bwaCVo-1+e!kFkKGJnsC3u5!Fqlhz^WASMR{w zE^Py5an(Yy*q4akTTE@7IBmjl-YZrjm@&X~*<8RJGh^J*Gd{2wlgsnIvyyQbB&NtB z8}n{pYbx{<93K7&n5Gh#EufjJcQhgN0(mCCpSWqSEhdbcF-}ub%JLi>i(OkBddx8t z`Sq3CnMq5xm=!335$KU_qFXbH+M+qYh?VkO9sVY7-)}*=WQ3Fd@tzBjf87I29$YER zqrk`|BWZbV8A6cU8hJ)BEBTlM(XF4CERpLK#Ypb*+%8hQ#Py+KWV5zBH{P$yIEZ%? zvfwDs$#`MfRT#(9l(PAP*+Hr;ad8DJ8#(2jWyQr$csD!r9@VSpk zZZmU6I~t$sj5d4HkyEBk+8i_6p%W)fnP%p;Eukmxdx4&k>apkT2}~t19$Ti#B_4{O z(X4ElQhTOlf{9&hnN^URmKg&e$(AYY5e~qXw3+C|mMQJgv`miFQJh4q!$wRum_iUn z?0U#FVw1;Bn}jt$vzWKnXfcAzkG#*#gro{wFdm)?i9{s8Tn33B36*-@jga792y-Wr zexI_3ObeE1r7*t&BRi0# zFoWSp%i6?DU(bF|LnhYi~{ zA|~CRcYtZxur%hMz;vL$n;53+ksqdO8bVCEKhg)i&)t1+XGG5Q!70>*I-R ztHV|`Fl`RZDZq4K31Y^v^m1JWOuGXkzwDcL`1}+wl@82%z;ro$mY=81J7QP^Oozjk zJjLyB*m@qAP6wt8yZo&VTLXaU7+yNg^2_Q?4n3G|y>^G5n}KO|==n1+Ee_0Ez~mim zeq~IyP4%VAwFfZG4$LgkqkYiyr`CkzCP=CtH~rLLIuepsA?dm|jQIhQii1jfxY0`3 z2XNGKEij%#PYWBufU)^N8H6I&7QoyDi7XDv zbMx>wIbqcSa|J$;fxA41it)!CkkEBJFs3C4Mjj+`d<{SgfRQu5#+GPHUUDWu{3&JY zWnfH;5?d`m>p_K(y03we?~fQ;d3=&A*Xqc24?ZbnYinRk%M@F!DAW!iD~25f%pa_+ zA*r@b2Brg_l(Ho=WBzj!-BPR51L1|48K+JkKW-}S8O_Snc;k5s#TH(*EG3Tbim+DR zvzUD5o%m`MD7!oTj92+wwMUg_SjwKyyG4$swNILIkoQEQp)QY)`Ue9|Nm}aXPOQTSm zr{*s#hMN217BP>nah3AtAd6wHIgnJMA)47d-Jf<~x*h&}U@_FZ+UlOyvO4|2#1XoW zV<~p980H!UN!t|qgXM0h?2ONOz%+jwuH|bIlKUWOieO$$NIrw4125?dT1)RWF!C2@ zy*I2&G|feyhXK?6RyfywkQAN?`!gMqPVRa7*^h^$^{X(Z4U(3KWHBV(mto8s3CWj` zbbc4c^u*R=YedpFA(2x{mG6Xe?U|4?LDKSC7;`x!c}Fy!5zO1+T)#rn8j);|o88uz z!1Cl03y}v7ZBK7qHBvlJpUzh?z7hB6}I1$u+8Zpw05bkKywSbeFUlmJweM9r{^hO`C~`84k=Who19*dDWrkNnp%efSBci zejN7v17PIDNt(~Zm0>U8gA7~5$ex6mQ^b~NOWNB7m==ev(ZF;&Y|RG7%vNFx9U#;; zknpdYfRVSSmnxT>wEGF@w7O6=UT^Gwn0Zia$?A)>M1<$91<=xldc^bKqMmJmk(FLrxrjL&m@BNF zbbpG#Z12#s6c{;OX38}L&LE)|ZT$qyo(?^Ou~%niPpMOxU;;hV_j_QTwYH*VCuSrt zg$!H7%mBvB!eT33&qcs=I&9q!OoPMLYrvSu5# z9kzA@#;gIvmUxCuh}hMjHzKCKHpiz)TeEeeXx|R*}#|;n%I(A zGwJt*z?@=j$+()l-SKSY#UvIv9_Y)53PO=%)<^_6?v{9#nxh= zvDp*5wgzT_wN;5v0gGM3^PacFVQUsJW-ThVE=2&PEk>^g^3Y>#orn*UwtfUg`g^JR z+GU`pD_F60B=jWf>o{QK4N#@}*ImGLIc$9nj9D9tt&37^Z8iw~-P%fT8&iS#%wcOG zFlN;)w%$jik}>=cmfoQtjxt$dcDsArp?+)#u&!E1;F%xr={v^ z5is`N%Ada^XY_g+m}Zm>s^Cw$tuKISbzmw6qb{1D!`CC)lGnDtv{*gq{i^|(Hj7F3 zXBIH+7L%^$VqlsanEQaK8cUzkZM^_YOH*mg=fJc&Fe?m!KMq?%1mn=NJ21@-Od~K= z4$Seu6deA{7h4ERnI~-{J_$t&5<3d4Y5(w9ND3g-KQXzaI*hnF4*!J*++^>WG5#oX@KU6Rm_eD3WMt;ND7Rh zFL@A>PJDS10|lbGCH^kw%jJ);ggYCHp>^5+F&8CyxoLhkyjQRtB=Rj@zrK8MEhJso zWe6nAB8gzmg`^6Te1N$TlBS5{3CVRZdx5kB@!nkY`2)!nv6UN&eok+20mUkpiQU1>c}0Ml70jrk`qZHJV`?2N65PDi=U0j3%E`GJQwL(<{U z{4Fru4$XUSf~ZC`kB6kfQTFqIX^Yg(t)j;fjaPtachpXA+#FP4@(oH_2}wuKu%rf( z&f3yZJr$UO!=DF4v%{Z%2qxmsYMY_;M*JBj5{EyNfN660b2%{0j>vxvOogLP55i4P zTckZtgQV4=`AJ|Z9hwJXoa=~a-VKsgM+}byMsC!CI=v8*u85wyA?ZG-be+BlOuFk{F9Oq5C|!zQfN6J( zYzJ%&J=LZ4TnJIzIwH06py+W#<0D`? z9ktVU7$Uz?xOR4h#EZ;v;~?p-EgiA>z%)DjSprO#!=HZx(-HA!;I@cQ#GgGN@#;$Z zGZUB=hd;Ln#-XSDcd+hgEn|R@@5TjV)QOO^IW)fvOqD}(<#wpSh~@$$Z6ivTeU4z3 z5BqZsB>Bj^^8_TGV@&uIm?lRl_ShbJ9HqDdm_no!4?$Ap7&H6qfT%ip(L*t;ZKlMM4rRm3rS0)t-d0;95v|ej9jaS z+x!4XsvNoY0H*Ef@SV#zNGcto8=+i}Tt9k!+b zV|u07`W8mkj2c3!1(;K;Ee!D~^|b()2@YHBz?j}Gwq~Q!*G<@Z0hkVlt$za3?69>; zmFMNhzz!^+55iVHVQV{Jye48W-Fg^OW7niAl)sS}>0dA$yZ%&#wqY^*;?rpV5%?p( zw2Y;mbXy+)lec=(ZLPc;+N#B*>)9Td4r?pjpC(}J`X|?#6CdN(Ibw_J%v?+SV?X_% z*m7W&0b}oOa-FGqR^J_B-os}2vnw!m?;_Wns^>^x?0!N9=5k93S9c zWA7_7{CPw4^ktmW>+~1#$Cf?a)&_f_9bzao^_7m<8yLF_k?Rs@;+iCSdQeY3@wo`j z0j6m=V$yxS6PPLo=4D{IEGE6)e*&h%V$y95+S?2E$1>u)FEAapjitw@8JI2yW&tow zjyOLAjNOCH@aJt{><(}SCbtiQZOfkS^M=5*IsDlV7`tPit4gi+!-26o|GAdb@%dcA zSX=3sc3`ToY&7jKxsH(b(+P}y65&7P6lwJO5*T~$kn!Yb4NNsHw!YHa&(6TuCoCCy zjt9m*@yWo*Q>v!VIiJcpJbLlFz*_-lo>Ix@2VjRLdff+G-cNd;k{V^aEdZES$KL7Y z`yqx7Og%7F--qvsE`_A|*RbT#gyellDk7NP`(s@FF`R4jgro+NLIiUhBrWCP?}IFY zq$8sF-;i|o3}e?(C$0l%ukw`x%GNFi;*6rh z)~UdlHYT>9)b}jvk9=2eMQbaM50hQtOufu`4!rIEC zAjx)kF);EgFs0hz6Tp};D!aZu2j*dit+lbYy3Ao~FJR2*mtC%AVBU1tx&oN59k!ML zV@A>Ja(xBNPYzq_%RGo-sZPB7tFAyPcW@7_}d6u`P*f-5}yyn z-=ICCxc+sP#pE;3irfKA>udBUk9@(nO72x)x^APbVZcZU%|%<~*sV7h*z!Lb3P}}y zAf}XuwHCu%vmj}9_;WQdp4B`IiKIWzS`0P+3zCjUO8YZlI5Et%8zh|$e+~zx#cEFX z=OT-t<_96^zPGeLA6g7^Ek6R|v%{Zl1YzAB7q7d@ztQssIrk?UJX+9P^a9|=7X>+;Sy`GM_Hnnxyb z&4i>AKim}5*M*R@Tt_|YL1}QYFFy=Sth7LwkWp&Bb2OYc$q}2!9WV<7--CwgE=o zbz<}k05X`niD?9;pF_{tz*Jd1(X|cr+%L8qdfo?SU#lnGpH&)U?k-)foq(BO^`!eV z37DN7dM*S;-r8R(K92z-=dnx0`BPxduzJ${>5HB3I)|P;fRVS+mhxvhFij3Umjh!) zV`&@9N9x_QBF}pcn1$AslrH7MjMAWTJ|05kUt@qVbGKmRcTf?m*mVUk zRn}IrJ_Y_JFdYtC0}choUlnBA8V$_84qKN4BTs=#mFo>)%z8s?oemF^e*XfDJUuaE zOL~0`8jtU~I&AF?j9HV2t@L&{1sHh?eA+n1aGwjz2M$|z0%KM?+2vXa3>K9o%k@1l z^8U3_F&r>~E28Xj?F!62)>e8u91qM-4qI{`*Y+Fkf=S;k{0f*?t*tz?1+|QXfAyP$Z!|k>?E;Lc zL9x|@d_7I((BE;ueDAPz8Zdc>ty_UHZ9{CWof^ZBfa!jp`WHhW#rlswmRl=KS6HPB?{)^DA8y!xW`Y1#s|*@#(M?+f}mf>U;H;0xvPO` zv9_W!2yOk=8)1UIMOWdUlV|lr=@AVl9;oAnQZk$*9pY51JmHp^D;1}SUu_f{3Ny%DLh?mI()U=*gOQT%l8{VDNX|}3 z?u4XyV{Jcv+jtw2%1y(Pm1bhB+bAsA8InR<_|0!KAZdz7u7{-i$}r|FNW81Ul9i7` zF8oAEu+P62B+U`Yv5*vQ4P$PXToFkZB%L>eF>B94|B6TsfTZQNFy>@PS|gHsB-dSG z%$JaKM%mM zB(Fi@MST7jBzcF=>&=Ph`W+;lkA`iHOi1R4BvP)ngk-TuBIWu#Az2Hn#j1$UTSC&} z@Oexk*Gxz{ZVA`d`679%bbURN$n`QLg@`|2K++Y7#;RDEc16m*twDw2qvM?@0Q^ARK!5r2M#q&1?s-#qvn(X%5Y?XQQ+zC4?%ws`cCM6Qz{$w%~D zCzyyoPeM}pW@*h|Byz3V0?iRU!yqX{+H(UW9bKh0pOMJb4oNLk=)WSpM>N!6oa%p;I^kuiK3B(0GVd%($%Y#tuN_kpB< zjfr4Pm;*_7WE^`8lB%I$%-14`%nn0Of%Rgzq=!M$u}L`B`H(c-8OHn_lFA6C=c(}U z?l5M5NGh%kOHLEX)nUnENLnIg{}z&bWE9=!GI$OK6ASjr z+ryGQWC?#uSTYNej!3TCAnA_edKZ%BN5b{B^%*j%hxIf=(jJ+K7DCbyiE5WfBGFj= zOh_Wp*awoPd&9QQfTR*X_!E@tPLV`rqE8`dkIZpH&O$BUANFu8B>BkPeK{muk#@Mw z*{~jIs|P|-5vkKwNLt#$nxBKDH8SJ(J_nMBhxe*Q^7#ED5bbqD@<|bm&<8vx79VZi$?$6c0G&%fvUN8=Segvk?;ZNW5 z&=MT}Yy(W2^=AVc8(}0Ka*Y#=!=Lkk>9GE+W-{tu>RBjy9R557Oy1$ocY<;FGvs`f z-Qmyfz%)7hX#~c*o^?7PwOpqG(~h}N%31Dz&xIupVtAYQWA&_?s^=wOs#;3x`5Bll z+rQG=^CqpR3){ca+uE)UWOsk_@*8|h!DA#kq(lxqX*Gl`7yAXBpMrq8(z%)BB)xb1$mDV#C z7|(&Z6`1x0)nk8^ud=7vHT*yQ8(2@ny4h=j2f3BuZu0sWnC<&;f2>Cm0LfPK@xDrY zB%fwIIhqKJ*|QQ%Fk*!jo)65<4qFcbv(#bhLtxCVQMRo$F2d;Nu(c;JT@G6_M328l z5?iRal&cMxJsq~51LiY_tsj6fdplw)y}mZT7-u{jw#EVTy~EZ;z?fa5Y+FwQ^9P45 z?-I0&uO*s9JXE&J^p$%+t!*3aCXjNs}7g}4qF!jWA@O* z)@ms&!}Fd7rru$z>{7gS!C`AhV9f4ZcDZH&)8MdmKQO}_w!Q_%?E7VxYxB!cc89Hr zz*ISGT`79}yNT>_y$;L-hpm3N+mP=8q1mG@R+PVq`WOL>*{jSh*EzsUcG&teF!c^w zKLBHPL9@%X!xcCW>992$mBL#z?hxe>~dWL%nXOE z_kfw>ur=r^jL-g_aCW&y0W-^C>q218aM*el7_-})U9RPe@Y!K&KVam$RHfSC8Nir* z?Cf$q226{?)_1_PIc#m&h8X&L1=-~~1{fSz@SqBPM?6nni`uZ=;;{8IFlO&PyIeb7 zjk<8yngz@vhpqd7F}wQN<@y1ba~!sIy$0W*bJ#is81uX!yIhY0)9SGGtLSmq+T~jG zWq&UvyId{6%y-yY42*mqtyDYgeI5F{wUs`9?Fq~Rhpj&Xv&>=ZQDDr|6Dij-xnv8& z%R#QkSz>FecN)YS4$RjMTUP^Pp37w0`W%?+9JY4E&Vh#|Uk{M1IpuU<%o88MtO8_N z!td*WS!ivEw&b-Km=zti-Ur4!70R}?BJO(S_bCyg%)b0PVEQ?1$*!Aux|D6}EMV?& z*t!=O`OZkG7|ITWc}kUSYZct}E^^q~6&Sgv zc_Nl=>uX@}h@)hEt#`Beo=d56?F)=~vX*V@XkZpQY+VUVougb!#1@>EPMp=|zXN88 z!`4Q(V61c4Is_Q=q%YgnOkkdM*t!@P`EE|B7~Thrc^a5)>m^`19k#v!W|qU&nzzdO zP@X)BtqtWb{ztEEfLUs7^^Sh1sTyETao9Qv81pPL+ty{kyy>vD7?@UvtuMru|1>b$ zR=q0Ja!nFF4qF!hV@@n&m+LWL zcDA2?n>lQ)dl&riPc?|G^l}{lOqI2jUasST+1_F6W?;;D39+?8>U#bQVD@#` z8g@7KP93(62gaPl5L>IK+WL!NtgZAIu6hqJ4qIb@F=sr))RkPjn|R=ERF&u&JGLRV>1K%wek;m==evPGHPg8nHD6iDV3O55Q+@D?NtW0CSGR z)ierH!$Z|TNS`0uUWuc=dg7P zFy>^D*xCsJOvdm-V6L#X(qlOAA@mK0tueruGfQG?daA7(fVs)qN-tM8FgTo5vK{XD zFxsJi8cJ+EhTtU2bu2K8tgZAmeoIF9J%)z@v(#bh zN?^HX_6V3t~2>E(JFn9m%xegMXt zIul!arN(eiRAZOJ*7?B5HwsIQQLh7I&a;WF^HXEEdIx;Aw$j_ifxz^@N2P3?4vaY| zC$=t0we=z}Ups6KcpPh5hpkD1@lTzJts7Hq-3-i64qKlAGr(bM%O_yVKhKtJ>lk2q ztWdfgE&^t#!`9Ehm~(^KwzmBrcQmIBY!!%zTHf-cKXW{s~*L^?Yi%8iAQ?ZKbaP?gysLVQZCVFmCu~cg5DRskUl? znPqK3Val}tn1v2oZvkUY1!vn@|5^CsuyrUfiyXGD2gaN?7F#E$mg^m0&ak#tOevM; z^?wd~!VX)*fiWkU#TE_>rL@EIfSK>GwFH<>hpjR+2XjU`+t$v&v^i`Y2h5ueTXz9t zPG5_yWhhr!B1ZoPW}&r}-VS$r0nfi2w$22`oa+`_Tc*Zv5ik#1TTqyCEd%Cjhpm2{ zuw|d?ZI)`Q9+<@rTbBak^(no!c^w#Y7G27fZma)`Sc^JrjRs~#hpj7sF{j+KZM^}^ zQirW|{)V~RVQVxn=KQ?adL=c6R{`^;wUyq#-UDW^!`6m>$C}nZnJ>1QQ|FY0z$~-2 zDpFd8=WVkT_3p6sATZ|4zi%tGTwen7y|tCz4mW+toaK|1Pu4!b1Ypd!2?TRos;%3A zksm)X&nweyeFu!3c`IdWx0f-lw#oMt#MUXPwoU=2x5L&FVCo#URz!0!-+&NXb5m^{ z2uy{;*7?9RIc&WswrpQ+Ol=$eUPXJhw$j^16EIU9wr&EZV*@h^X1yKdNnpAhn2&(z zbYObChV_O6GYA-adNx;%I43XpUbgoI>H(zG_p(n$+4;Tf<2Ii4#>Pu^`cmv~eMDx~=bUNa53NURB&3^}`DWdrs zNV*-G_jwb2(4qMvVDb^o_d(L)(A?`S_#9~oLm{bh2S24?*tR^XPviEUyhcr4=`PkTt|q+k?Rs*S{-%q5io^_=HBl> zvm-vEfRXp%mWtucz%)lRKLd$ZTRPXeU5Khf^AW&QMl_!TNvp%>w}9zbKU`nGKvHnz z+TdMielh$F>uN|Um+;$p|LynN90u!V%tRb>pJNKY$%|i?12fdlO{4H}E)MZt1ZI|F zZtC?O%PzM5jZy!=gr1#%ImOyKG1XSHU>vrt2gXEIY>g_z6UBrr`PNI1mAG!%G}YFd zz{r`vQtOuQfw3(imrvLc!TRrq+E~Uf*X#|9ZQ&W1X~5Y2m4Ue!m=3ssLZj^c#C+oF z0H!Nn8uJfeJO^gg4??3>hOOTLV@KK?6sBBbL=QePKBupLP64LLfmsMll>@UBm==pk zkIyf_v^g+CKST^U0%Vl^U|_s~ELXZMS^wm}KwSY^YW;Hy`bDt*IcD;dBO4DJH-6#_ zzWZ?oY_%R|Mv}DeB|*LS1TgI_iV=Y~;v>u#Cxs>d6v-dMlG8p$uDM}J|7DQO3rlVn zNhH@dkW`!-#+>{KFqecSKSR=rA7aUQdB6O4MnKXO zkz5B!+r{Br1G}N;(y-)aNV-{re(ih(NlT>cyZj5I#0lYCCyC_5u;g7xy6~2gAgb$r ziGI-?{+9X(NGkBu*>82et@9F?Cq?qla4zpFl=R+kuI(X-Vvd5O>)+vAw?a~QFr4dy z1ZKUj5wY*Wx#}TleIT6cf&}InNZP&%=j!ndYViJWuAL!?VvdERBT}y01%n4pLBy6p z(jBor@Y^_MG$dVLhjYz`q-9aq`m+hla^Imne;dxVDTeA|FyCCWKBAn|}NLs!L zONM+8Ohj`dBvp~RxD*mE60yGtCQ^zO{*Ai$S6K6&khI~18k-rp@e59l=LQ-*WSWoXC)8%* zX!#*5nF)y(iN?KxiHu19f~4w#@ThfmF6T9!9hUUROGR7X5(&J_^~K-dl9hs72Utwr zGqRbGG_NS5pX7QD1RG&`G1oU1!(7uaWp=E>T$=&73Nxu*&->hBnCq|}IXu5$uJvsW zVQA|mi(#(cFPHPW9Jy|@80K25C)!&d+PVQ2mb3O~Yre%W*NVMhYx&Z-&axQhD(j7~ z;WfJ^hK*3aa>CYm7Q0$J z<6(NP#TLU{`>%)?_GGRrU6A9k0Z9Lo@q&H33 zw$ZRMG0fEoNq2eaT>Im2ior0~qmVS&7KNLd(8Y4)D~MsPIgqqCa=mRa%(dgHIj_?8 zujNCQJX@~&EQYx@TMhN)$aRy&FxPrGD%kd#j4jfa{{SMKxmd0jEQYy`UjtEnvvjUa z@e)mgVXl`U>3W;F{su!mY08%C(zS?Tt`U6^jrW?om~+CC71oE(Q^S%yAo0!%OHL3>M9*DDmF-&D}Ag zpYfFQTwp3!;*L--TANavzwZGf-*A+9BkQTzc7rhwws75Y9FQn^?0ONH?H#tJ4#{~p zIc)XXFsJwL;!nD*8-S7Dh?n(3)>EOqH_G|n1T0mqkAN{d1KGAt9-8y^b=Vq+AN;}L z{gN?!3>dTLkZo%uez2wBu=O=C^3AeR;*z$KXvTbd=S*!o}0y?vZj)BFE_ zP7~cty$2x*ryE3Jq+1OplA&VKEuupqq$Y()VY)$)8ib-ZgAkI55Q;$vVGu$w2q792 zN$LAsv%9WyjWhbZ5&!dmvdST?+HJ5tT z?CoT3!|P#+G?)MUs&izt=37x=^_mJ3>>9aTjlA`G52jdi`P*>scF{;(7BFGChQI{- zQ7%_YZ?30cCTK2yz3Ltnt@)->Sgx~Sf}JjxtF1TJBA6*gu3g*XW7O*`m|zbrbAN4y znQr7N?GTN$HFCA-$oQ$*oy(l-EtpwGu8TV{XBxTccP3ZO4qoP555vqga-G;E8tHE2 z`UWQ0QOum{>Z7BPc}A`#ys+=S`4ToZo`MPXDl_NmofnNPFmkPj8EoX5dmrBi90$U{BcP^3PGf!>rU?{x3j)ME)g!T!7}56kbQ9T*|&p2Qkb%hQ~2 z`t|(`n57}*abAzY1Uvtkb8Us`XXNTx5RI%ba?OPao+-FoY(IMH^*v0n=4$1w*HI@& zYraL|dMVS|_*$6YX+`E->tN;@xlTESdBdnzxnpW}9bK;W-ZK9NQ=z&1=S7E}(VB0O zgw?AUCV0Z)ancIgw1^fGddg9)CRWzO{+OkE?_R+vFXuCAxkUo}sl zGWXY2FgZr9=V68!xwgUtPw`x?lNlSXcTBs$!k?R_m;K^g=Tra}3HgfHNao>Ol8}s@78DlliG&ASA7ADuo^%9Kx21Hn{9WcSu z(#*Mz9l(8xk?R^5_YH`!Tra`|&tYAzV;L0b*Ocur`9`i|26A6u z{p%PHQ)%RS9wvAO?Q-?NA^lqU7tCg43hS_A~+5{6kZFjl)(uRqroYE!j1~VsUE`Pm7 z!?1$or=u4UWchPa%G>#{h*QSbeQ06 zjm)|3gjsFmS_>05av8`iuBk~!CKm?|UJLYNUou1zq(8zwH7|6Z@-Fy=ZV*EpDB zBiB-x;N2CM>uxGpN2VtIbMX1B=QY=1#KHb`Y=?1gJBOXi_gp|b*SrK2%}8GM9!6{es1@Oc4df#GxDSe~aCJ~Lq|)u)ZOJoPUR zo-c>B&vh`{44=pqJO?q#GajZjFKq?$kN^Do0>(Y74J%K#E2+ETGY@94;ZvuWwS?g_ z1!lP66CKBXi{Wz(%vi(cZ+C37(TmA2%g!6wezbm1?tnm zJAQ7snsu*Ho}SlGX2a({*9OnO!pid@%o6oE!dsr}OIWWO<>@k!>$~Bz0cNS;bMGXs zJ2h`ixohrto_vp{OsPjDOq0ek<`?moiEEsYwI;JZ%#cf%_AvUMRkSnV)bq!2V_-^d zrYwBUin{(vKb~|x7YXC{sdhd$3FFpC>Br$ySZ@>wK8>bP9;3fbh0*uoGWg7JKDS7{{Qdr}^SMMAfBQ7N5g+3` z?FFOn&SfaiO)&a4U50*t3r63s%ivS*CdxBY%IqJ91u*)}j;LGvrCy)h$#jEb7K@Lo zd*W?X_xJ92%`x(Qhv;x3Eb{(!)Su2AF5hm*z?=r7--U_h;*h@oGZRL?o0EZg4@SSK zRMS4`Wo~pcx#asP8S35}M!$QK!RICz{U$|*dR4;ccQi6Ed(NQD&q+J`>)szmze|;& z?zh9}ce^r_c@>O)PbykSJ9C-)*RjV;#^DkvkDqbhUd;bRn7#hx5Q!Xq!9^p^Cz{JT zGwIulV=udCbywSq|H;P5hkrHrUH5s923Du1p9rNW4+8Iic=a%+Am zSK?DAWkl7BNO_^;^4}>GDI=;GL`pRm9hY=S)`yi5)$>HEdP}bTk~E1Du2x1=)kMm) zzxGF!=vc|s;1*#-6(bTWmR|O&x+){8LLyaHi>j43*Con`s)R_<`J(dYdR-Y&?RqOC z%24%IMpQG1lpCsYWkj`-NU5Q!Rz_5fZlhJtm3lSz_SYfGi0W7(`I^g(-t_)DQyEbe z5vii-T#sf&WBfO9xD|&xX2VoYlk#*SlI}cT8F7A+NcrS&)ho(~Y9*1v8^TpzDwte>d-^K%DfM0Gro61{@(az)Z1B^;!TsD=|M(h~C8PtqZ(3Cf7-Mj~;|<*!$n zGNLMX5u;wql@ZkkL<;p<;IG#Y%7|(!k#eJ6|G7gLQSDEpL{Nl?@`)5_Yxq?I zlo8bhL@Kmi4U*bDqF2^ylo3@ak#be}bIn&qRL?sftyk*0SbF(AWkmG_kt)sQU&(A# zMpRpgRQHw9dm#0a42e(KcM2n_CPXT=g#HnAm@=ZuBT}d%ij9t>L$VesBdT+Vl#Y^l z!+$Pcu8gRzCsL%jxKT~oCy`wLRYp_`iIiU~xeiY%UqsvGRb@o=0g*DJHNICyRDTeu z))M;Lu>NdeMAd{ynXb_Ms*cKt>Qo~6{iT;zP%mkN#HS0C5mhmf9Icldhv_qRsWPIv zpGZV=x!r^GT+b;Zs<(*5G*@?Tt}m4l)h|TK21>ogc~y1h2qUU}iNp-mQOby_2azf* zp}$_|C?l#O=cBVtTS}NXq+PC8MpSn=pVOpXBax)H{1RnEwTeiQq54A^QSE*g-YF_6 zS44a6C}l)-Dv?4RhyMP$R2flSPbB|Tsn=LnwViw_dZ95!GTM6{kyU_*I`NBdV>=M^#smE4{xC zm@AB^jwMo|C3JfQi9__~DkG|Eh?Mt{5}t!3eH=cZjHq5AQmCr4y{hk(5!J5$Wz6e{ z8ih*AmH2e1GNLLVlB2ER@2`uM5!LlXO7xz(ueXF{%7|()k;qxn8k0~Z=3gmmr81)W zj!3Dh*gi^n`Y)>5_Xs1ZW<+wdgu}h9(Lote6%eUX)g7o3yJ3=Rs4}7|CQ`zWp1How zik9%-^m@%wMpTbFpL69}nNT3to~u+wRMkW(4b@)v3L~nHL`wJvZ-NrKbyWH|9H@+_ zE+dkwS6KgwXqGafDkqY!s?=RBX~Pec5!Ek5N>fVc+95bZl~X2+sM-=KGgO7jh-xH} za#iI>nwmc)*MF4})$2rxRFxPPP9~~vl@ZlHMB*1o%ij%~=xI^4yiXWW9Zw|Z8d3G9 zvl974HCP!@6%nb{vEhHNH(eP~-A^R<63Mk2B}^Y1&nP3Rz2DS9P;8qI!i$&IMAh>%1lWMj284L!@egsQmTX`vGA@btsWC z&2>Jxq?Zz(PE|%!BV0uH$By-uaI!L@nnk2icksGMD;w8+!0bQzv^9OM775G z+$^dBZ>|l>i0Tg_ReBfT&sBe(FrsQgq)=6HZ>~1Vh^jM@qAR3?{wq;$WkfZYNY#a+ z^4DvmGNQVQNJLBM_UF?_@6F1H>MkNhn(G2ovI7^x06G>L4QJqb1kLsM6=Cd}Tz{k4UB7SGtvhlq>P+5@kd+fk@;s z$@L#^2_IHQR4a*;>wc6!*B8o&>PI4#V(ZH=N;Wx^NY7>#zd6LVm=Y>stYVwFMqUuN_M`r-PDz1#ErntzB zlFQ8->AB`ABdUc&s&#+fuXQLQFYq5If3c-!zdWkj{>ql^vR$M&mY%805xk$ipb z;8&fijHsp(iD|w3s;89^)f(rcYqmY9SNfQbJ|>K)VnlLP8jV25!GrU zaV??$O7xF1qT2s)?xZwVTXIRc5}!IKBdQ)ms$<aw))mmjl^&^og z&DGtTtM(JZh^h&Z3eDwLwNpk^J)DoOqsEXcee|B8jHoUklB?@Ozv>!gL{&#!f=G$xa&uJrh`LD`QQbu(uDSfGCzKJ@i$to7T%Rc;s%jz? zMy~9qg%MQ?BBlB~ch(sw5J>N>tmia96(IkWuoJGNOt+ zgGzT`_61L$dz&gFs$3!^sv3kUy}x=ZBdTFUVp>A?u85Q?@#z|6M0G2XN_`v3zhm~H zGNNkqEHi+r4)WIPG-X6}BayhO+&rIN!nc$WRqZ9zOYe!?TY~9rc#<-rnnI*pbNN+o zC?l%c&#`{Caw#LKDK28Mx}Yx47RfmPlJ7u|JX{1BjHI6|D66 z{V3|5IAryI1x%4L?&(0{5ate;(h%l<{rjSiP@a{IgOz?(G;yxGlFJ$LGR!JolW>3g z@83rf=2MtT!{=9+D#NGVGIAL{F_;a8PbZkwhEE@uEr!n}Fl!8-$uRD>yfU?q{!SNz zz>R~fD3=`1aW_6ynk#kuNIO3ZlM|B5*?tJK-tgH1)6DSM??q->_3@95PB5(vpFS{~ z44)#H_J+?)m@S6SV=(!K&l@n?44-dcdKo@DU?OaWxVz*`=T6g?_>B(3rxQ$V!{-{9 zVTR9ZFm(-|h84_FhEIQ(Y{RD*W`f~!H%yM)ibF zCrqB9Ig+R*UX2d2dEITEJW@HrV~is3WF zF^13OFjEbm8(~TfpL=1Z8$Qp#%r$)8ak&hi?_k_-ABCOoJ78uRK22WZ_dpDvBVlG6 zJ}1Fc7(Qpi%r$&Q!K^fVCc>1dkN-M23&#B>Pgwgr3^QMS{PW>5n01EFhcF8apY<^A z_ie(;vmK_~@Y(Zq){utJVK9r;$KO6D!qnx}sj%{#4YO2z{OvOarm^8O4W`2Ixfdp8 z_&g1>-0*n|rmf-gCCm!L=O38PhR=R)Fjm!vg?-W?_e~vPx*I;H!BnY_znzD}xZfHI z>#vD0>(nPZsWgdu>Nzlj4WC6Y)rQX-FvAU>wJ_V%2RP}F_W2WLtl_iU3f3fSX9f2= zexEilC5F$5FwNA*-#+KSOgDV4glVll{{ET)Gu!Za5T>pA`0KR-W}e~m6HK1r)96j+ z7Q^RAm|liYUznwa&*dL4Ex7ItONh;d3p_RQ2(f=N_0XhR-sX>FNWVbV&QGgK@uk6*g})c$@38;nNN# z$M87=W`W^zEle}R=RugI>f>*pH(}gwaD~OxBsgHj==fVs#e0svv-dpBpzt3Gkk7`iSW}CVg2n@!Bnb`zdZNAOfh_3g{e{>e|bKKDK&h4hgom<)L+F~%kXIqQ*HQkgqd&n z^n}@>KK}7D7-q5Ib16)1PS4=}%ilheU@8osJ7Kcb$6ubuU{)GFFTpf1d_IC%ZTS2I z(@K5(_4)^9o#C_FN30Xn$6v1lVX6(EE-;-9pPn%8H%Pi8$MUS)ZHW8XC_Rc z`uN-D8JNa~&svy4hR+t5nBlX>$IMac<8S9SFzz=|!`kNrm=WsZpXW!xxZfZR^SK+Q zNPYa}SqRhJ@Oc?#g8KO9vCm-&4WG?0)78gcuO6SUwlRF}geg@Yf4@HkGu-fb4`#Od z_}gba%vi%Gx|%%@_3_uMDUADV)v*5R05e~G{N?EZGu`kR2(#GmxfN!%;qwkmh2gUf zW}e~mH_S@)@sFQQpR)gB_>6&BWB5D;v()hU9cF{!)8I4K0ESOXm~HCg@2>)wRff-{ zFm?Bl>zChWHcXY_^D0bZ_3^j!8kh}+&t{lbhEJoO3E89wL3tTueEfhjY5?u1#d zKK^>W2(!TO`4(n_`uNAsc9- zc-9u?(;KF<;d2g5w&61hra*mM#>64#`z#pu&RbY{o`dP7KK^!o2d0(b^A$`#!)G&0 zuHjSfE7rz_Pb-)_!{<1dVTR9{Fa?Isf=AZ z&Vq68-|(sXZSYP-m`_ibLiO>V7f-{iHp+9rcbxBr&jm2$|AukzW`woR-al|JZ1{A5aqnh?`SgWZuRi{HbtKGK!)F@I7WHu%6Njuf-i9eL zd>a19xuZV*_Bjp4y;BiZuUlYhbGZpyXMO-P+wj@rC(a%9@z-l0%sj*AZkQ&9&zCUe zhEK~4+?yLd7s9xAGs4>EF_@U)vjt{_;dA28to_u--(PpZtTKEy!n9Q%|9M*Pm*Cxu zuzIzG>1_BM1GB*>&p?>&>f`VCIWX?sjIi>24pU(G?7uO1HzUmFT$tc{h;nb0SdYn> zHVvj%hFrot3FF@1@Z}QbbC}>8j+t{csAjG+a^=CecRa#!xqoXT{tJ0Xo)x7r|8>Z} zwJ{%`;NRMCK<9g9P7(Z4SDpg-PN>V6IE1}N8NSPz-h4HJH(@H)?^?6k&5G7ZnD9w_ zwkm^94RPSFTxCv@?EbT$zcQk_mPo1o>k|GlKdFqUz9bUYn)=U_oZo~IRaYW0&DAEU zHW95?kusvXmq=B<)XS+7%_gm}RvA(4`8$1~xp)wkbcm`z8BtwMByybOYM!J?l<;w7 zMD-<+QthvUQKgr#@g`wJbpnyt57NtiRk1RndYDMzMp3zYqQoKfTBD4p8f<1neIzP> zu1l2>)tf|04ON>zgb~#ZL}DL@=Xy;UQEewuZRG0ur!b-#<02nOE`NW`S4LEy5Gm1I z?o3JVuZCNM5!Eq7D)x`mjMS`XEYa+Iax;fJu7!zgmGX2YlJ5M7GUEIWkgKK2CS^p`bSq=^*Kk#VGNKwqBuDGz z&vl7tt$-f6n|<8BsOgPHSih{lA28nlhrg zl1RDc^4IHOWkmHpk(}<~_1d9~s1E*zv(UH}3{pl^lZg}=^?FhnQGHG%Use9AaJ?PE zi0Vip71|np)w#-u>Lwy3TCWC);lw8yQOlGO)el69ROQdr6n(&m>Lem1S}*^Ix|L<>s}75mj#@G0k-qnG&UxT-PWgsz-6+I!V&h{3-fj%82S_7txj<=T%iG zBdVW?#B~Pn*Q@!i!iefLB4wJ(U$2SEi0W}7MVjj{Zwc2bBdR)eYDEgQm-~5DCnzJT zaYV{h<*(N>%82S`A~~w^*Q<41VMKK{kqTA$*L8O&BdRxv6zQ7ZU$5Hrgb`I2B9*H0 z*Xwd+MD-YvTvhq&^{q0Z+NVAvN>%>;>Z6RPCKJgyLB_oM9mT{Uqj$M7qS`^E?08WP zOGx-6s^c06BdT#kBC5I#HvOzzqKv41B~qj%%=P9vJX;u1olm5&o0M>PjL-1)^GpBE6R%RYp{w5Gm7oZ9$c| zLP)Oc9AQM&)kRK`T#Heq*K4#gqPmYr?uT-%OyqHulU!daBdWc3PJatT8>kxx_?DI=;oiRA0pID%a1WBwgwM75nrwXWIt+KxxnW-nnx)t5-w z8mU)LZ@nfdBdW)UB58K~0F%C=2}5!Jaw za=w>(o#3t4t;&dM8Ii(YMCEUdYGp*V-#(1zPegSAxukCspUzT7RJRey(XrwG7dn?~Ym73Yx|2xJYEkv_s$Nw_R6h`j>)7b)RW)fQjHtR1Dc2d`46kaWGNQVj zNJL9`A*%GzTcM1oz9mwv_j(6&`lnwj_ufw!QJp}fMBA{1w}g|G5!EsxWnW7hx;u{a zne8`aMAdwM)-77Xwy4s_{OQVw>S`j@nv0(b@yt=LC?l%q0gUHuQbK>O!;}$KUn1q& z8tuHfu2x1=_YsMFE4k*;@^0N098$wo%7`i&WB&O@RPIWYK4XtiMpW+;srXJ*ZuF+N ze4XaPh^mu|tP_=geRz>FqPm?(x#n_pN-yD?%82Su7twkRMU_5!d$kZoRCg1JsOn~~ z>TP92wV6mv>vgwR)w88AqPm+%)sNB|_jpyCl@Zm+t(Z6T3hQR<^wzje8Bx7JBwu&h zTXUHQr!iefzA{DA~ zE0pwH_b4N(kBC&O%D)HO=wM+))s0B0uD&iKmz-6JPZN|8)gmHgdR@N6tNKbAQ8j4I z)m&E&d8pDy@A1lrY7CM17c!z|dviUcjHo^&Qu2?e{B0OLL>N&WLL~B~s9qvh`ugx3 zWkhu|k)pMt`q`^`Nf}Z7M5I(p=%0Jr94d^c&L@(ux%_kQ9mrLhBBi1l}Jq2QRkydpL?6P6-HD&iB#yyVX#+ql`^7w zfJk+<^p}6V@sTp3iXO(8*Vgc_H`*v8s?&(X_55m03DeKzo0JjN%S2*Zq=f!|U1Fm$ zqT2g#M(^*U@~`wxQASi(5-HcGf&N?%DkG|Qh!klF{kbAX2qUV)h(vS^FoxDhpKZ=k zMpToD#J-k#`Bl#-BdTwR=cNW!LROu_dTa^*j8$_x# zR}rf8(Oc_CVMNu5Na^2FFE_KLt41m#s(XpV^f|0w^|3Ods?(0_dad-Uj#EZdqluJk z4lm&&%82T7B1M{OJoS?HPJHTklrW;YiAY3q`BmR3BdV_LS#Rjd!LM4TjHtSFpfy%W zy-K|;f2T5{+DN2A$9!+Es%1xEMAe5#p`Mj~)pg2<>M0^Qe@O}bGut=Hh^k>H<|xhO zR~@5_s4gT@WaOHwjHuow647;(KUbu)FrqqwNcBmwr#HmghH+&?brX@e(O*9(BdTs) znA!9#f`iDFKKG7MMpX9_$=CVNuXZWkf1|l5w~zm2#_x;E)>rri`eX=TX9+Ma9=8 zJS{&^8ByIpq*_&jP^Hg@FDWCcUx}1x3H|@B$AQNPBdWecB6^?V-<^9x8By(WEa$SS zntSUtR2fmdK%`RN^75q_&g6Y%kcRN z#{G6ySa~}4suh`S_*@CI#_)LtX0GA00ml7yR#&v!5j44>UjtyS}zS7G(agIR3&Tms{M^D4~eE|{f;&zmsrH?P8cw!kbmd=5H| zr^$v-KbVz<&m@>U!>1f(mErRZOo8FES0Q87@HrW#pW!nBW}W)DmP{NnuRaXpeyb|1 zoj-tCZ}@D7alcg+=F_@Qt;hz$X8=sG;WGuM+VEKnGsW;(2eZlW+5L3pI>RR)W{cr7 z8fLEHb3e>B!{>b%_uEim?HuV#@9r1A);bc#{WesX&v`Jl4WC2n;6T|09821}fVeRuM zOf$o0EsXn(sW6|M0o*qkKKU?>4WA;IR))`9m&@>30n=K2{MW(FFl`N=76Z8!sE=!b z#3A$H=`fuQpGh$74WC6Y?zgJK+PTW*GJN(J#QmV*(*q_?ef;fH3^Um9c@(C*`uN-D zbC}_VPxcvH;|!lX826i3VeK;lrkCM!H;ns@sW6|nU*TcBqmU)vMLH zthLm~KYlKN8D#j(hgo6x`~c&A8!D_khn~m1x%&9q=VF*5!{k44;FB zaxSY+hW3G(YWO?^vtE7t<@p|Fmf_QS7;}R9_}k|~m@>oXA($=d<1f!QFz&ai!ul(A zK5IzBX8_C+!)H27gl{6d_fxW>{&rptv)u662239KS%FYef;e+9%hr_^CV1r_3`)nuP~9O;r*UFoOPz*GYTf#@L33x zXZZXG)5P#O=%QMYe8XobOe@2u45qu`vlhnvCRo^cvG2vKR}G(mFnNa0ESO$~&xbCT z;j{ZCtXB=6!7%*{pNAY{_*B8f4WE5Sa7|Gk|9Bn*Gs5t>117FM+{`8&vVMLWrr7X_ zTneK;{_=E!nPT{igeg%U|M~S_824LVVdH0|%cVa4@@#{dYxuMs$@)-z{PS1|%zVRV z70hhIr_Ct#e+-{VF!R*MKOepbQ(^dQb-C2X-#%@N*#9wn&VgBK_}mKPep@W8zg~w~ zu0H;H?J}DEAH%0R%qsQq*Xs(HYQtwf%o@YzQyBM~U}5#De;H*qe7eBYWsfn;XE@9T z_3@9xJ75|cKFeXYsE@yWeur_t!4+1X7Gszl4v_VRzdXHR+8RE^Fxl$kFVBN8oeiH4 zU>d8BzdW_Za&0nv+QGyOpE!*Bjj6EqnE}(*@Od6)u;KF^OlQMqpUZ=1$6@8^1=C%9 z{Ox=*%vhs5@51yld}?12JgW^W&(Sdb)W_dnBVeW*<+%qYu0Aef;*jgtIvDpXGORp@ zUdg?c`uNK;5XL?G3-g%*Q)Ku&0aI@Hd#&s*ivC^nr2D+QP~+6=t^j_}lpfm@32P7nphKh zo+X9()E>|ERDJyY)d8k9_j+MI7r-nxe3rrF7(R_B&=-c!D41r3&s#9-)W_dGb*>Jc z1%%bBJ506u_{Y!XFm4Y&%;zDPEr!o0F!_d0-D{W~V&T`Xo-l5&JFGl2V6xT6k%>d* zpOr9!44?Yf(x)*gkKd;N#_cVKmFIex#)eM?jN4ld^Vtg1M1B1I-mxUu%MJ6n45pRg z^8k$7%MJ5c1(T~joQ$3~60;`;d$3_X-C=sEkN-R^hAA`3vjAqW`nZgVL;C%57`Nvc zR-XEkxPHZ?-~Hvuhgo9yTme&L_&fr$-0)cgQ=&fpdhItk*kcT<*Euj#)W<)5N@3g{ zW0=n?Fs16_FHhYm!QNn)r8)W=_*@i3c=^2~=RQy+hSeG23D;=;;P|2ozH>f@ge zyTW7}J|ke37(R1hnixJSVJg(e-#$BFS{Xj=uIHZ7@HrbM*YKGNvs!)p{r(z^+xrS@ z=UO)~#?;5(&PT$yy{0gqILtc3XBLdx+X?eo0kgsI`4h(N$%OeFG?lSx_?!td!tj{^ zvrT>c{k{yw?d^n>X9G;#<}#1@ePYvsJ()0{elU&I$NvubtuUoVc`9M@44>>9+5a(o z3Sfq*kN>(e1!lhCQvp+=KK^-Q3yj;732UF+o2a|tGaRPE@F{~SGkiXUS!wv}KAm~Y z@aYM&+VGhIQ(^d2!MMGYu=dHjnQN2bGaIJb@Yw`YW%yh1BviQ!Z4 z&S1|WtbLA$sZbyPc)k**$|%nQm`e3=852jXogeGXX02uTTmZAm@Ocf!?Ky5M`5LCR;dA<2`oi!j zhiPy4H2N>=UiI;hpNnDg4WHLxYPXc@sek;mxF^^v2y5qSVCot^pTi6?%H#gMiIV@r zzc+CXk7$E`Z(``!aYg4JK6Gd#<>+-U>$(@^8;@G z@Oexb`KIIwBJmaV*qf2a=R{&($#>u4q-daNq;$Wfsdg#D=dEO)CPYfqrv#70_m0Kq z2$;w~$>qjsqHT29_UrgRYvMnL8M4kExoGs%807|eau?#)JbZe1Jfe; zL~>H<-j_&8ifW`|QrdYUk)jt|ze}zMh(w-Gjw~lq_GWUcev%gXkw{?*vm-6i_Ml_w6v*{^wbNiquN20e@6wYA<^h=ad|^`85;8WP zhlxxUrZYZ?b6%MD9rKVdYy>48!u$nORU(Yvr}+c4k5Qh^F!@>@_uhqMNPIdCCN@`c zHBKr`f*A=DA16$@&;R;6#Wz!)?3Us4>Ju=-V&T`p_hE7jpUp6C&ogX(-e;c7NVHM3 z8*P~AcWKaeFpV{r8)J!iLzrGL6Jq{c!d&2T)ttF5R~N$Rxvqt2W#pOzGu6oT6ij>d z@n4s}fN^`CVeM1zLH0=upLQ^1hR<0r!OWJq?h|0TYc78~-vhHCL$1iqqXH(FA*D}u zk-ySEKZWUMz_^L zbHAgxQqNO?+QUSeXU-+RAy7h9T!yS@dYznCAwI!%*)iV{Y3RZ!$5@yZTAtSY9o_M- zV-8GqNO>IoqAT;+QXYT3zJhUk1(1}-&uoRsH<&#hp$*THT+S{1I0~lPVEV$88O#`% z!olIWX2HY^W-&~ak!ux9xxs9Li5R&WKS~=KOnaD0BUe9|9K&ZUOs>JWdzrHT!@bOX zELRf$cHaI^{JUpok*n&toh#V%VOlc?o`fkBrY2HJq~!JFRcQO{Qks%$dRpWGB1I`Be2qxe5?Pu5uUBZ_yX-aPac5=fs#4CY1`9Zw zbe3>)VET~@)5Mr1`ojdhlR4Kom`z5mdth1_xn6|{`rYMnvrYPt`2l8&kt^qMMuL&6 z6HG9ET&|_$`uEt4LiLX(w45+Y?Ok^70{rfa+kurZvB%b12e-V*a zlbsJF5=)7kM5J(eGBb=wQ3^AaNO{Wc%0eQMxzZP@bEfMbcf13W|No;q@ePzG7*THg zxZM@$yV_+(bT<5_AGh60*-3T*PbNTD_6wFE^*BY2$&UCqoX_E9dj6TC%w&qHm$D|Dp zhFNXo>J1aj#xB=mNYm$*D`DnqF1It8e%ueU&dBu+Ofb*8T#GPC&$R`n!pPO?S;}nW zDufBHATF1`FGj$4VSjgf0t?j-8A2wy`U0TW#H zT&_HFMbq+~4pXJM{PXh_FpZ5|cfkbLQT&Z2I zJIIxO-RS|dO>_DCbPP;eBbQqrR{bB=hm&|xoVcsadG6mO`v0~*ETe?E-?(*)t7*NI z-jnuSqfBgPoA1u^pNe(is#BE_)f6Hz&6PS5B-e||i0U^N`ATy6Rc&}e6)>VYhe(d0 zx>FfZy+x$x2g&7cja`=tBdR4Au9N%dhIMjHsp( zDKu0sDgjU@A+)ou5%g zoWCZL`)aszW7hjQEwe($^U2DHb1{*ap?X{yQLQ0TF*&>zbt{As)!{_qFH0>7XrDwc zO8cA%lXIBVLZZRRDJ{Q58F9|xo~dO2aMc)PL{&+oR8^_-x8&NUjHp_07ZqM9}?^TS*0ZDmBY7k5!ruS<*Nk}L82LfYm+$2=15yhIss&f<_!a%+C^i$tWq_I+I#QS~5F zre~aARjiDt<`F5?{_?9fDH@JFgU-(tGC?l#hL`wB+@~i5u5Jpso6DiW(@vE*; zMpP?^MdnN^*xb7 zZ85*9!P~-!>JTD1SBAGnKV?KUj!5MdqVngOr;MoHBvN>_sQi7pSs76^T}cU5<*R{R3`Ju0la_DzjxeG+fk^(3;i_wu5!KT~ zN`44e{i=+p4t|$&Fedf#mvEpmqMAq~w|Tf~kuswCoJh5y%6?B6QFU^WFT?9KQW;U* zOC(>{tNwa@u8gR5tE67vh36_zMpWa7l&ud}J*AAOz9$m@I$YKKePKk^pGa)0jQKAZ zQHg7ljHs)X5!Jm!B7eJQTg*7oLjLQS0hAHdMj~ZATyQg8rq$rSA8=l54R=0K8F9Xt zNL*FDyybaH8BzT~r06fnVu5xbswH#QAX|F)fe(y!b;IQFZy0-qBos)g)y^ z^%{{P&E-EYHY+2l13u&0q`Ca6)07d_I3h8<^Y!=XlgfzdTOvg|8~auJe=dxu`Vh(a zDSU)aQASjYh?IXDu3E2*sPTDa;(WkmHe zk!mAXZ{~x55!J&)a&HXJRficXU_^B;ksMb<$YHD)Lys!xd&8LC5>F9SwYmlMg^A+2$tw>3UfMpRw6|EShn{(9Z0 zjHo^$5`R&0{keP14<+o(C@p^#_d@|As(qNPD_cY&j`;VRgjqY)-C^R7g**SCj5tr- zzafkih-xU2T&=r*9W_lEQ9VK=UrXp$y{C+*HWDds zA-&^Y12q3b7*X{mQe~*FRYp{g5y{m(eE*8*6JuCtU8)e}T2 zb?4SUV}GuUsG?grn@*Ow<)KEA$R25D?lfgY)!=W&Ap^ z=Pujm)2^cG?p3|4jHpi7j%rZ2>TP92)%zbt_*hYG_2&9W8Bq<~foig-HhWcHDkG|M znGy3Zm-|6}hT60KS*?tyPL5_patFwrrh7t_zG}J`rfO`s^Io-t5$79-6zYz>e+BZ1 zGNNjpMR^R>Xk|q80+F27a-RCL((lM~P|$+vDjwktn^Le^y3R=ktWB=ps=qM3vsB?kQHlh^qgd)N6>S-sizq`m?Q7%805r&t$4^ zkZYxXMw+jTsJ0V{ydv%Ff5O{;Z~DS;E>}jJcj38ujy|3AmuG@9qWYOgrIBmcKEjCV zBO*nb%YSwswy!Xvx|T>ppX;5(s7&wE2b2-j%S7UHrJen%ZUEMb zq8d*mcY=(Kmrs6Hf8RUzk~|JnKun8NYl&WFc@5$AzKBKm~azy4XIjHq_u z$z)7x;a3e&MpRD`DbZa1-uY4)QSHJVQclV@G6tkY9wt(KysXet-yxU2sMS&!aUMvd zs=u_VzZR2Va=L{(uT@5z+i}kn*S84#GeCc3M0FXF%GuI`e%0;Di0VlqG0oMH5hXQF zeELKgQT;)rRCD=NO%D`CR7Vpj)VHDP=y-P@BE-L?7`Mffs`kF|*LdK8(tZaBNbsrP%+*KKI z9!eyl?|Asjvs4*T{f9M6d~A5G;mU~W1tR&zTPWWtBdP|hs!EzQ*g0nopm!3ZK}JG> zGNQVcNQBFcBQo99-VamCmNFzv6Zc>K7aa2GHRrQ`c=jyT*8wBhyAmn9JluH*OuT8h z^E_q5`5WhanK-+VkhqFSnH#m?li}P~8F9XqNRHvW3?@GoUgp+qg%RhQiIlaBg!aW3 zFojo0z5IP~1b06r2ZU$8OBu<&!$pkjg@;pjBl~?Y6~;(taD*_DeH4+nk^Lo@QXMV+ zKK)OwTStZ0y|*%w{W>BsBl{yTm3kKVv%dpVmMz))GV0Rr9qMoo7ci2&E0I{EaMcyc zi0UySRSm*bKPw}uL)y{KIpL~Xlo8eMM9TgXt~!hR;D8a;G9pz*y;`*wMpV}ki8l<- zRiTWiHWP^rbE??R*{OdAt{_ZnVKdt#n0$kI0)__-p+2=ba$aPGGyP%84WIEal?L+; zOsT>A4pU?>O*+xekIPJw`nwubrRKfmN2mdz$am9ccxFr2$Nx^g{jh9 zsp}~5=?fFPU3{8*b6pElYUFwhCSsKNV^^NrB$vNlQFepMj4~ex6Td@z4)&ILAWV+V zhyM1N=5iT6FTms)K0m`$&6e`?@RsM;qscWVoS6v|Q=b#PK3_T??JxI)E^$bocIwJ` zYV_Akm@@4zf4{!~Q)u{n50i7Q)GL}O44xxv4+n$n3&=73`~jP^E*r{!{_k)tjKi3=OUQa zhR*{qvkjlMFl`N=y}M;a<{3VHU~&zgDKO=R&$BS?4WA!jmKr|$9nZOA`1FNYVfajg z$uoRjf>~wwY=+44W_%{vk+#3;nT2tR;0l284a_=@c9U)m*G?E#H^a% z?{)X7ndY%0UnF1Pl()U=_$-)F;&Fnm6OX=3;^?3-2dOGmXs z`s+lP)`m|BjQbU%FrOD-IvYNJz?2$3NA{yn)u(adq~MdB7iYrEHGC$+3|60JsMF8W zCt%z!3x(C|bC_bor%wN@$YR6iD41D>&($y$hR+)?<%Z901F|A34WF|dWB5#malcSh zJ7oMUgIRC*`~tJi@Ht>0>+sfcUbu{jL;C#;m};r_Ar!P#d;d3)gTcbR0z~rfq z%a}N%eRjaO``obdbUKs!0>ft{jJvN4^LfxQhR+%pcOMt#v&UJ?KkDP3H;#iDZ1`LP zGtBV06K1&K^D0b<;nQ$%aGw%ZuYoXg4WIj9N{sUS1hd5OX?AvSe-T!m-Y}~SpKD-d z8|8TdrdoYm#>64x@CTTAhEL0LSZ5kOXTy{mK6k=wQ6K-j@ivURzX)re9Wb>Ik@?W? z(`g86EyHINOpf962+S(O=Np)2hR=R+_J|ChfiSJr$KPKwVcdOFSo^#I)7J3$2WE@m z)8Sm^L&IkTOl{VFVdZ%MroH+w06goBPhoNlpZ}c4++z5g2;=U*!pbuqW{Tmn2Bx*) zbIefgmkpnLVA>l#J789+kH6pB4dYs1_?!>3T7CTOd^e1{M+6;@YWTbj zQ)2k+H=MPx;WG+miu%+|O!9ovc^;f>*pIWX?tJgj|w zf?1$Gae6!bKJJ#0T)PdQPNP`Qw~_PR@3R&r!o5sbc_tTeZ>~Q6c_T8KT!zopFtgOB zy|-R_T^8Kqhn43Em=)?X#p}~;4EGL3c|L^c)mGZa?{ofGu9b$*pD>l`)5Tk!_~qO? z7(Q>pWFIEw@sGp8D}ud(u=e=`rm_0?*HLF($^MT~o-biy>f^sJs9ntdkKuC&OrGI$ zD$EGOXAI0B!>1g^?OlYm&(APp4WC2DG4~oi7s8YpJ~JF+_&g1>!0=fEGuQCRx{C8c zeOwD94!K@*gqd&nTm-Yy@R1g^ z?KOq9bAxM`=heqQ4m-m%Hhj*9nXNv&xaGMH{sI#-e6GBfdG!csXTMLRgnKK)XBte2 z;j{Zh_J0hYyJ0pNKCLDNdplw6{5Z_;-0*sJoXi^AD9=kUYYd-)DcqwOKJUX69x3JV z_xs7$QD(#EWte`3PnYYN!wsKBFoO)AS~moHO=0ca7iO^GGY@9EQJ&2(al@z2RK~pF z^Ek{f^{JbfrK*#9xw`3IOn!)L^u+{+j~8)1eUJ|kx{ zXBs{~!;~047tLXgGJL*;nQi!-e;4~dmJdw1`nVoR9CChjyPLVi@cA#yV#DVzn5l+O z|GDge7(Va7%rbmV{4aB+;j;{;%<$=O59hn#GXuu$d4`SW?_rj!kN1_`CYf=_Z@>~epwCmh!AXTx+?AAh}WfXQahD$HjQOo95i_dwG3wLXSv zV)*<%vJQ{*U4F8q8qBCo+%yAH%0BOk91q$@0|e5|}*0=Wdv(hR@qD1%}Vx zFy-pwZ=V4Vvc@)i7Qrkwe6k;+?uO5WFiX_O-|w?vMi@RX!vwzu;GSQ&@thbx{GXbm z$-}GmRmEgS`U(95oom?T3e!2d1;(GY`h?V~6>yfa#|`{<-BBn8k)q<3~9M4WFZ7Dh!`E z%rNzFB~KjEhIhcMG<;UV3|Ak2z5an&ZTRFq#=1p){N*_tW}V@4Bg|O!@t->jVX6(E z4`8OKkAIGeF5r4<_~gPYFnor<)MbA@Z2ZiCS!MXFhiPp19RE0FHhkv7#0;N5U|MyM z^UL4PEf%szWcZv4(_Vf2<7YZdXT#?$m^{O$-V|;d3v{ zY{Ta>mMAXZZXeuR!l?!@HCfbSxa!pX^z zjV>}NIdc8?sIEvbzbqtuF^fobN|}4S!07Fs%sfq`I;9OST*@qQ zVlwlQi=?#bBh`^eNpW&{E?)+7RdVEan4FZz2FIkd{LmL!G0sX>z405)8-st7-HmCE z-)WzxcaHFyKxZPU%zjSA*JBcOA3&t=nPk77%iKVRkMgxE=g9cOk>{O#98@! zva0sxNFJozU@PpQ{vYLUA&+2=7=ujiAquS;VVI_E9Ps`V~=imEwfPGv5K ziKMj8E|jO}k7S?Yh{T^u&R(3x>`&dx|4dd5B2tl}x+RVI37^W8b{?{o-bty&kS&o& z>0imtAGpY-1%6*JP$Uk*a5sYcU~>d74PYZ^^1(h?G2=tU8DirZRKL zUYOGFqF<7I-goWubh1xfRH;mC8{;RX7PkLDeu#bybBh zqWYakMO{%HpbGav?vBrUSr}2hO(aq;Ty^v-!ieetB9*Gjp@eRQ5gd}M`K!W+Y7UXo z29oPGaJSPD9HQELxiF%dNhH3nsJN>a#)^QGG(BVpmZWlP9sRlGez7Qy5V_K%}ZpxGMWCVMH~G zNKq|OUEv*vKPV%rv)|^5zl*5cAWrY)Pm~c=&z0oTahMpnt|6sfk1HdpdhgKhhUyY! zMD+%d{A?*BdV8)l>Zp68uN)TqB>wTKC6N?ThL}-HD%p3B6)t^rx|w>Hz!B>5Q$x! z9GU8vo020h5h*K5j%+8Ae`|82>wfs8Fyn|++>*>Z>zI+rk!r`xOpY9~Kg_7)$azF6 zN|PgZJLZz)$cK)Zo*Zd#0A)_8`w2wyXCyP@9g|Y`CmoaG^MhkXC#w#Q!7#zn*ERo( zM9wD?OJN=$QjyX=UlA!wsr$ao@kyyyUm|5Gb)W8-ls0_LF)4N5?wFK5J)=c561z0H zgtri>NU8gqM9NZ_XiI#wFaFoRAGK*HC9GNhQ10kHv~6MrkW;4PuxO;bgX}RTW_0;` z_vbj6Ep7aJr^1z=Li^O*FK5p68_Z%OR|kIHzINO2TwQ3@;7;7-0`}DFW|$?KD=`~M zdEK91!{ivbI<<=KyvKLBuJq=5AEv^{HR8Z%q?wVc&OypPfWUm|m^$*rT2N+VbEL!y!PMy{7&f*p^{xz0E=8d+`R+60qtryrw_h(?APxpvK^4Quv5GPmLNFk3X2|NN?RWHeG_{+>7 zjVN$>8@>k<=@>po?cFXKnPB8Pg{yh68|HGg^yaFBsja#E^&0po&%}*fXCKA+RkP3L zashklwFoBL$hB+xXk?a=>nxaH2QPDfZH8%V}O`qb@kEFNLwRUldjRoawFGMFu_h~ z=3Kq=m{*Nl>tWn?e8T3a$;U9))$GB#T>d$#5++Y``RAzpkBvsw7`aBk1iQN~*E;W* zj~vGwuDP;d(vRC=)*HDF&Bv!^-#Bv{J_^%IbNSEZHr=9;O-8N-Fu{(r%jKV=euwF& zx%_R|)!nQd7T#Z9Ft-GI-7c4ZjvDqE?;2??f4zQ!ao^j@G&baSma6KJhc3v9vOr1t zw<)DpF8iE2pqia_$J|Fay>8#b#I-#BK0SL4?@)!5$L0GFCfLJwxh~>{tBw>y|Ga4} z&onjH;lwHSzmD!-@Z8+UwH+pSI^c3G#38+2mwn0eIL(#wuPnj;T@RCMLi_#J(rxmtO1eFQVY$n_}Y37#CeT(iBowz@KFE`Pmx z7DOY(My|f!Q?Ht5QZ5%;)1G=&!c5Uz{(7Cd9>&PE5+-=s<#N4GN2H(2m;JyyU7Cx< zq^H03`H}r7BUdLjw}NM6E>}Bzg1s6(=y3&1mFDu#na{w?HF6bme;Pb}%be?3nDs`k zKVjw@xt`~rCJvt2xm?|-OZq*?Uoh21t}cDJ?>2H>bt*nJPkb`xdJblbk?Sv*3L{t7 z(-{sm&j($uqrLUI$}yegT=w_Z^Dyo^p<(mkAM|PPKeJOgjsFm+Hx9g zSo5SWbFR+xSB{Zu9Lzc+R~K>xPdPKUVKGb-Bi9mFW+T@)#!vA4G;_V4gNYfrw!&;P zaxI~qgQu>Ub8UfXZRG00IIPQMG;C~aW&8xsYF)0A8HbKeJ&x|n_%U*ghiPo&${WO* zU&n?&*94f(My_QrF(cPC{h~XcFK4dTi!k{{t{pIKja)nWldI;*b>>{h4v0nyj9k~i zbT)D=rJaLk;+b=8gDEs}9Yej`cay`$#*36Ec-roA9m}9dzou-58D!-eNO_E0SHlF) z-!tc03KKVSZG#zXPZ`>pI^_y6lpHE z7G+-h*YO9;SR>c-XOOGrO#_#!2M(TVB}|Ft@?TTBkgLSV^$+J@@P0z(dgYO8s^;?7 zYdp+!BUgvBn15>Ce8^m{u`shWm%m<%9b@DwAIuo5d8fkV>Ps7@ud#oDDbrm3dL4Fl zG&0Y~wTbcsZ);@E)s9@{My}D0F>-x5ggH~6gAAZv>F08*IOWk?{x-ZAW~q^D1a%MI z3~}}H=UN1_!pQZfV~kvls8{gLN#-6(rYTj>gxz6#P%Xd1)$h8(`gORJ{P{w@Cn=_en4To88$yB5J0kr0H4!Fw+b46b*I~98xw2`)93xi+_h^wWvR2QhzY=q}oN4(#@m-+| zKEhPMT|ZYJjeXbcLxlgw_sKoJ_9%L?8fj}2h+Z*)GOvK Z~Q^RKoOh3b?#UFfE z+VGhUGgf`rtoHO*oj=(>G<+t(l&Mb}ug`XvC5BJ&7QVBlKK}FTbC~6Z&#`~;#+~7F zpJNQ4+FR*&!)GGQ8pG!wnAL{Q_`mtCwBfS_W{vu!t|estd30Owdpo{+5Mc&y=eu}@ zPosaBdvpEQ0`aMU*`PlD@iS!y&kGEn0@m+M^5nem`(#I944+Dv?&?EhddBnQTD2ps z44;l!wIgEb*&8FC5JelqLB z5#%9|73JdVxhEO}qi>W&-M(o0@uc&S_pCDbR6C!WBv<=%6C#ICVO>`wOosBn=$mO# z29oDk0;BJ$Whl>f7=3#!gU|8T;WIM4Jdhv*$3=`8+Q^ ze&#(G{pM7LGB>)Jy`5*p$6xo}F#2tj3_dr(=(k8R)V&f$zx|Pc*>eUy&q;aw_396! z-;>JFKDYlr-p)V1%DMmJr&_gY>Qs}-)RAQRWl|c3gCSX&8g^%L(r+eHlTmk$Oe)F2 zkV=k(Bsn)>m>ii*hDi~^FbQE2lJI?9Td((N_j&JnfB(AA<8kZU@1C#c=W~6o&vjj& z>)P1~jQsvr6MfzcMt*OrSsuo@t?Vbh>3j#qu#ElD8RvH}eLs=u!l?Yo-@*Jn?ZDr` ztZ4DyPm<2YZ)N&_;%Db@$vxo3b<1pF@OkXmt;GSP$5RHT&hYFO2A=wK?^ak9NGh?B zk*$vthN(rUgnwY4_0)U9FqP0c!4oo4rwGGTAu8#+*_J*&tA%0eOH^u%RJTMjOy#2D zla#()3x#27Ju0DH?4h3eQy8ZDw@L5>jnqV8m|BcVxYYSQP0YMz9q?c7rP#YFVVK(E zR9@p;orF~E9ObOPoLBF*37*15?&f@9Xr7CTx5C~0qLb>?Vt=3YJ@}I_G274I7yvBqa? zj?FX}T2sVPoHMqW>C5QeFggE8_Ca(_9Ws)`@^OktQBg^K@m&V&r4 zTJb=U{46k$CGO^jgrRvID$xpe^A})hQh1ymhQm8{PULagwF?=Vo!|72Hu_EfVPFcS zht8*cFoOGE^b`t1&+VwB%ZTZz{|Lj>yQtLN;656Ag<-1uAs9nR>1_=ahN-Ka%8l-A zEfI#PS5YaHl-|}4!Z6i21*x69c4J9=z^a>LI8+#>W}p)I***2NFid@gN~9d8>degy#nz@@F5{Bjt zsMJU*TkTJWZe*Amfl3|juo~8@dTNOrO^*1UJIa2i0U>_N#u0X|8$KwkRi{xtKk-71JFidSkrS5yC zu2)mdjv&L-094YYhkEKtVVGKmN<>COPkks1Q*C>oElKI4ak?-}O+_Ut+oh*g3d7V^ zR6<6o{gGstIu#XvE6zjxXqqexQwve4GmfSgz~r=aH`fY7bDN$xXG%&xE=CB$)IF#~ z64;iW`b-$6jyMWiA#Lf$#RbAJH3Jook$OTHrnaDxBX_m>K5gHN3{$705|(S6p1MI8 zrk+HlPOb&|(NrT0QwJT5bCeu|`V7w!hN){&@ktN$)EZ%!`T~`(jE0`-nns4HVW{{d zrH@95Fibs*N<_9xPkk>8Q->Xs;0YS33xr|nCR8GKaUOnzGg3SJui?dW=5xX@^))JW zA@@|*-ej0M7nRW6?y1LxVX8$RteWn0PmL9Zsh3fS$bFptbmb>um^!R4#_(SEwsM4F z>PA$e(w07kYlUIzD^vpaxwmy@KQc@`fJ*ot_tam)Fm-W%Y?s`h>Z37F7^a>@#UuBp z&U4ZD>uIZF$uM;RDm8M?sHc_-!_*I`q~mAI4XcYHPQm&=IS(hKlVR#3R3i8Zw_9q; zab%eK3zdLump&T92asXvepGyN->q-gcfv3==y;5ek(wh6Q}3ZtjeGBg?V6~L#t8$- zFm(?qL1|0huI<7wb=)9aPw|^A4Q*ZC$>TX(+T+N7Bn(qCPQcOK!&AT3Y50z43CT+6 zQ83l`W)nB_@WEtgu0y59FdvqIeSuFBG?@MPBlep(?DKuX(0tH|m&7Iy_G7E1Sx;DurQcum%)J>>V z%TpTtsq7Rh!yNBYSy^)FPyE7+Evx<`j zMRcbyOg-;-j8v^KOtm```|B3&uMe=7<5wvs3B%M_RBCQ^Pu(R9Q!k+soa3H4IExHZ zlTnG5xTjtdhN(l&!gk41S^bQCrZ7xRM#Yb(TMcK4e(gOToV549cntn53{%t2##$W{ z$sw9LW8ViRm`d}ps=50)WN3Z}mGoUaYaOJfju}FRsV7h=Y|pmz)bZz%Vd_~_BE6Zq zL~ZMop=6kP1r_g!Obu02=bT4|sW(x{ncimqICsUkIV0Zi;y9m~O@^uGQSo2I=Qhqy zpW;&o4Z}I%T6goU!qEIDDm9OBj_E6q^M;dQ>K;_0M(S%}m^$`+9H&?F=+@6a^MzsR zb5w$>m~x(3#aQz+yvJ%#h?v59dVd@f8g3?1gnpWn|7s4<#<|6FnsT_^BFy-QB-B-de zb=k$((iu$6#s?Z=pK0L!+93>6SLUIIidi&%hwl z7kfAPQZh7ujY?FGCOtKAG#RG8LdCn1ZS7Or8gm&LranR?_y|+Cqk9;%{V(=4H$aA| zH&H2kfT<2RZN=}?A!Eoe^(rdSx$bAA)XT{*bqy+k^&DsYr?+o{2^!{}W698bJt{Ru z>K9>{nm7*g$4Gr43{w}5$6l77a_UF-lfp3d4=OdwIAZ5uzr>I8krT);bvi13BQ;(a zrfxQ|)IH$d!#%<iVv`JZfN+-cKpxHZv+$h zx4U_bFf@ONNdq7IP2kse=p2Ff{;`8cCgiZRb3Sy}MW#rlzBkW2BY{!_HFd-Fg4xXTkm>38Mb~SDj}owYB1?W>qp#x zePOhIn=owsCsYcJ)=!&(eJZm>-=}wg2_Nph?QaXi)?3cRb{VZ71IBB#J`9ZKAhzE4 z+Y)#UxK$Xo{t_y|_U@_Qgkh@Bzj1C!a!*|)3{#Jz67{;LI?f`))HGB)M(Pt`m^$S~ z^ss|_TPuWNs$~$Z8)N7fhN){&iHvjF^6fu6Z9ydmgYI@_Ykm{XS_X407)R;mnGMEg zFk8Sxjkf*-Q)4j0W@CmM%rr1TgIVM-_Z@g9;W@pb=KQ~x9Hx|vF9zTpHn;w@9ZdQ( zGWr>*-_QP>t@g)v3--lgcjg)}LD^qtsh(FI zk8Hd1ldRZ_`|Hp-SkD{#>l!dMvM==g{s5Rl!}BJX^fBD7X0guT9sBb)7@xr$e=Dvs z0e84=`&D&+!Xz{xLigz(ftt{a{KA zPZgLd!}AZAxrS%Z?FpW(hUZE!3k=UgU}_D|hhRd6Ct)GZy@uyFFr|hk1ZJP%`3cM- z!!z=Z1W)2|?&qK9!7MdAwP2DBPsb3}NQUQhFh0X`4VV>%=QS{W4bQ=M;@B}f6TxH{ zo)^HZHauWEh%J94kCTMt$xF^B0+3*Ypv%v7o0JF{TRDoG!cn-f8=N7{=9n1>D z^Dda3;_+gq$JSfi@4LZ749}tW;oM?)P61PHc*cN9!WVKnKYeY{%=w8%e1DdJsdVx1 z+wXCkTfbh!zo-I9<8`ewyPa>pZ}{yqr>%!jX}sQY80XvXGo?RCPATr?eEa?8Ci+8o z3;H}nJo-5Q0j8!25BJ64i?BX4JZFH}X?P}rnPhnG2D8WTyaJ}!@O%#@VSxMf;*k4s zT{b*fV7!Ls8Ze6t&oVHnhUYCXD;s&ZCmWt0IRCH3;sj5c;W-&hnct6Ass-Dxplo_5Y!K^ks_kpP}Jg#qyzwm<&++c(`6HL(Tht8C zrC^c_&wXJ0;?a-Ox4@(ro`1k(8=k=rrb z+3<`6v)1rD0H(z7d;_N1@ErFT&Y6a12AG|OXEm6mhUZf-iKn}tf7-9a8p-gS2BxQY z^m%wan6-xI88B&v=LaxR!*lfGxDJX(KW|(DrpoZ#0Vc!nya8sb;rRzlmf<;Z6|O0U zXBwCs!}BDVI>Yk~n0)c*`>XpCSZf)ci@^j8&q6SX1KqC|uY(z9c=mxwHay3##{G_X z(mdL_Wil9_;du~D$nb0d)7S8{dlG9K!&3kz!|=QfrpEB}UxPVjcR8F+6o(f`;dU|6si; z9(|lkz$`F4&x45=o;FY88fSPe0khWdJPBrn;rRzlnRxW)hu1%YJ{z82z(fttytR0a zWO%wii}k#C^l`q%VGPe}V5$ty!O!8@py8ParrPkl0H((9w0jPOpSN~>Up*23wZuB$o)M3HW>ezJpbsP=`Z5>kKyV567FHeqo044 zf=M+zhn8b*hzEn9+~+9 zj{!71Up-On&pt5OhG%>fZHY&phdaUK8J=mc;vPgi`g-hlFyjo*jP!iMJpFg1p!7|d$J z^B|ag;?d7Po4}MAo|dm8i;u^u7L^AZ_gDh$t+U=qZm&%;GvstwQUV7!KB7np5^ zr~3w+qYTe5FwVa|?~Gnkp97fzCQUs0`S1xayA97LU~&vkyEo926WsfAGMHk+b1#@A z!}Bwku;IzB#Pc7+^B9;)@#yn#GZ^PzA$J?+W^ZDhAf5vCygDCDy5Z@(5o><@dP2i| z);&wXIRB!zTYrvv3u`vRvj)r%!!x)F^LdDSf1+TVe;wPcKj*%UbEe_h1jhN7rrkW3 zyn{J!cxu5o|BAGm=c;$nXMEj(+j(OLm}0{-wi?$s!}A%K62tSa_i&$LcvgW48J<7E z1Po91COrQ!JP&{wXL$Yqv(oTf_&)B@#FL2QBKB&&|LtZlYYorH&A2Wbo=sq)hUbDU z*r$ePGngvFbMXfWo}l5`24<__8S^350EVXqOs(O$Y%Au5c$}FZdvTm2VCoD{vyZTr z5Rda2;Mj|vxnTAgo(>;l4Pbcg0+Tq{{Wv}N6I{Cu&x2r+4bL&#aLqM5^l|M^As&4m zW_*w5KZfUiFqwwuFE9xi?%OqHC!QyWM_(tr0LE*0I{tt)t$6h9IvGr=;TaDmTRi&b zwdR9KGdxd$$rq2_pX49${KxQI4<=xE)`IaHo}a*s6OZ%zDb3^p&+B{lpRnzQ=X@{= z49|^VoPR;vZ9YE*X03Si@o8I!J{z9#V9E?n6ilJvIqYYgTg0R9_aR_r8lG#xH2h}0 zb8qg<=h!%Nz^lMiNn4G#olMVNSRXdg7MYn~s>Rc*QCr-nTfvkz;UP2d7aZ?~Cj`d% z7oy$v=}s`dZ1;1WcQ@9DhG!s{Ov950rp)ln1d}Ho{oJw~Ooid81QRekKZ0@oMP|40 zN&Xe<7V$LR@7xzd!E7@;K`;g4(YNbqFwVbj?AD)JFh%0g`_u6^ta}a5sbGr5qaQn$ zgK_>fVYmLw0W()T`Z?-ZFiD1|7EHwObp9RBhz!peV73~brC@p*p5MSYA46_f1L)h8 zvj@+J49_YsY2wkx`2#SShNt--SObVhpFe&uLk!O>Fn+`HGMHS$v(IVE@SL$1$DrYv z3ns_#yaT4d@Ff3<^M>IGf+;pUJHZ4DPu@P0JFp~_=v47z?fZ zN%u?hykU6G1rs$q3&4a7&#z#r49{pB>5B}{8(_8? zp7drdJz>MM2u!Wv@icGgS!sAO!PFU^VlWNAq3^71Zo+!QIR`atNG0X`Z}s7^!}gF7i3yA>q5Q!$$zzQeQ*A&h2x8hjyta3 zcUS@$Uz7i8;YDDokEF->9Tul&4KEt+69%68 zzuM%Odo!iC-nk_iriPS% z6&SztIUjwFtv=cMc425v?F6&*M^EJm!_-1l3MF;8y5Bbn!<45p&a407_ym!1zSpwh z#eJCxCUP*xM>iJ>L-QI`!d;kJ4`pkLWk&83hN-ONmY$kq_tag&F!eDi)zU+~tz!=+ z!_+KPyhdB^3&T{8F4(6j?4dpnM+?JLDJmXm3-6U<`2%5?>U0Q3qchvm&-3RC!_*v9 z>WtLu!Z7tWDgn8gUyUAe|9fPAot;94skx|BKkYt$-UJho>#1(;cqkc~N221B{@_=Q zq!+Pw_X)$)7E}tQEj@K;S29dpjEYZIMELbyW$!EzhN+L7N_Xy^_mGOM|9Eu!4kN?V z7*xEHa%Mv8#ndChF!hz=ku!;Y40gx&xHm9NU5HAKv3KqS6X?pV(9LfPLvxG6VLps0 z{fN6j7^dz=C3L8J>KkF0I<^~D1=2&ktrB6FdLNaj9H)9JtveZ}u0y3x##ukQpAm+s zZ&8UzTl&%6$47>#iKv7mr61iZgkkCvRKiB8>k(v_8i`7dte>4#T>R0!L>Q(%bt=!e zAKl%0VDHH4OE*sthUS&1c%(mPqCcGbv3EO#VXF6$SP@BEdTNR=Osz)6CwCmDqpkS6 zfI4BA>faM*2{|WhK`Q>}zE&8fou;v&dvr_B z+9vMkIY*~}Nj%B@>23r}nRsIBK4&oL*##!q@C;1D7>Xx02M_d22jeq5Wne1AqxWYo zn7)Q5^O%;ND#J4yOorj91hd)jbn4yGlVy1F!E7@;kAlfDJau4d#iNh&pgt`<`G)5P zFgpy-D_|xWo`k+FJv+sd)&7&8J-PbQpKb9$9rr`&kDmc3QSMKvjR-S@cam-uXyzB%1CeN zDK|W`!DNa@pNCaoDh*GU<8YoAk3N4c1GCxitOS!S9(|mD22*2rP8!hClWTZx2D8)f zRDsDCkG@^~kH?%hJRvZX49_kw3HaJ@XD>AM$@AQSI0nU|f8ym%FkZv+4w#VPX*URS z-tY_ov)b_70w&GytOrwRc>V!1(C}oQfb*(&^!al=7{B3p4$Mx&^9z`4!;?O^rDwNz z^iL7o2qw?)yaOf`HwexeuSGN6b9hEe&p5+V04B@utOrwQcv4Pm=_xQgQ^3qLJQZL{ z#iP&XW+%1u%r!ixf{BPnKabr6rqu9MfLUvJnxEX#6E-}4FlB}(2xhh6iGnE?kAD7X zlZmzr&j>J;hGz+w3d2(iX0v$oXUoT&f~PcwX9}1dhUXbD+YHYhF#8P8DW{?>!!sL< zH;2cUem&g?X1C$#bQ;#i;?d{f#b7*{?&tZXV0wy2KaYI`Cdu%0@nfA}ct(OrF+3qK z1I44Ce?AA()9~~^9oJLC^KUTehNlWliQ(yS2G%x)rx?s?!}AW9A%>^tnK&-QlZvx+ z{9XSTFu8_j8JIfp==0|bFag8UGYfOo@LUe2!0?2@>@hqwV2TZo?<^dr;?d7zlfjf2 zo~OYiUclp2_xuSaWO%a9#=Wq3^z+y}FiQ>3J7CfbPv>*+2?4{C2PV_-JOE~`;rS9w zj(EIs59hq${Z8*8xW_jlVTFkxEJ)bV4k z`mfIs>_c1rfr<4;Rf}c;Y)$;}HTYaIc+wU7YiHBtRRAV>iM!`9Vfe&sn`8Df^%!ii zr(qn`l%Zsp8jebIqI+t-Fib^JiKH{tM|$qOVOzfo!&KUNIA`WD)mKejCJa*{R6M6K zbyA}-V_Q|iFx5O8>%$35ou#Hu6^5xIRO)05k3z$prI&0gA`Da8QSl9CTi2nj_>u21 zj0{tGs02s5r%HukY9lIzlbAYR?P06oWSGiCB`h;@7B(gRCy&<&!_;b2eEDoES518* z3{$D-R4|PxEJY4@aSSgLhN-2fL?xAVK*l38szw;5y5(TIhO(^-G4gFC$+kua!&DHJ z$lE;LgGh9c6!+ZI4s(vXdAl$)CtrXS+PO?EM1R@ zN~G9A?A=OXn5si1y|<*$z4*DBnM;PL*{FDA{@|ly2fWzo>%uVA{6h5k7`D|>-CySl z!_<6K!Wm3Gr*794VVLTA5w2DzGW7@ALXY>q*u!guVQM2Pz5z_(M}D4G49RFFT}+0l zA*cjSX6g{M#d+ z1^)%W-@(Su-uC|@!;~Kt&tGh7D7MR)!3{6ARV)lst5ESx;PH+Hp7bj=E?b{sR3{xvn2~0e2oH+)ueet=|)_Vss z@%y6FrD**~wjNRYJWLq2J{y&YjE}xA%7tO74wXXLQhikWj3&cW0F|h;rKgq(!_+2J zA~$ls_ra*fddZP$a~T*#u?~o~m z(b<92ur^ zoyt}2soR8MsvH&HMNH|do!^9Es`q%zOqoCWOc*Z=Q;SjYk7QeTaHnk7x56+rU;g-W{2pII_@oHyJD4+z85$Ef&o*p|N9IbsqS zrY=Xt6JSbT?K~+AQ@c=!N~#Sy6+3#_!(o%jFtr?&@W0rWzS^l3hAH0_82QVYO2!!S ztmBcK;@g#%kvaFm=XiC%F*wX8>Er#}}1-alSBYy#$qN86SOLtP_T*U5-b#R3FuT z*N|cAa#U)hEj_hN7^XI(61|H@QwByg)=SRtc2mhPm5GY)Hm02GVEk%lnlMbQK*clu zz*P!ch@CHf0+aqO8GW^L#56E#$mpw`kzhRY*+c!Y(X3cCtB!=b^3mE92?HFm*L50VDOWFigFNN=|DYUyq`#*ywY+T3ttmsXV8x_w{W}KVKibtIb&OI3&Yf(sQ8<+E$7K`{Ms+Qm<&^wp%OlZsa@z{e5zC! zrd~s(a29*$?63AnHoVxw--Ti7sOz!6jJt_^FrHyFKL|5@v3GY1LvsZxHEp;RZ=xgd zSE7BwFxCGCjK*BHrKiRV!_>W~gwxs9^J-h~2*Z?T24;dhAM1+kil0A2g<)zTDj|7- z=ga~G_rEwU`-EX?+)VUPoa@XeEr^L54 zTNtLkb1Kq9JvHb?GECioN~i}%UQfL)3{!1`INqmoFYBpXVVGKkO7wcB=4049a^Ph~ zel84CzMC))gG^n7RQz>kqA*OYbSg8Mx=C%T^K3Fq6{8ZqnJMSVc6?i33B%Noo3UL- z$rvJaP~3KfgkfqEDmj0%t@G7X*Ag;J z&J1pseteyL8yTi%qT-*;lzx1@CJa*v3$Xq z(dU+IOP})rVVGKuN?~87^m+K5FiiDbh>@2k!1(BB2Cz0+qla2c7}24f|i5y&nm~RO0B^lVNHAD&Y*K{=gQ+rzQ%+)V-(_-pL-GiMHbJ>^2I+)E-o-#~=8_ zgCiHaAIMsQm8a|-{myQNFf^}5rS4E}#aq~l_&d8=VVLT&6nke0w?a=16Naf-s6@VfcP8gCC(f1_ny;)VQL#H)w$fu`gx<*6J(gW0u_&(0rcbRSz(yki%P^ezRp@r zhN=0e1dQWrvoK7hJc;$sLT;CSd|f6CQ(;sB_b{a&U*8DBRN5M>e>!mF_1Rk}3{y{| z;yHmS{eEz-Fid4Wg&rQvls@N6gkfp}D#4SP(&u6O2pOhwP$`t3cIkIp^Mqll92Kwp zTt-j*DhyL;|G^xSpG4@XfG|wmg-Uc9_m_TWw?P=DcBA4sm7}5GqaE`!8K&}32}|mB z9AEKwK(`CSR5>c%6t<<`+5IdGQ@&@gU6Ru8(JmB*sS;GeBe^!#Q?Clc)E-mc`hN&7-`O4hEE%S9QAw8-k$z`4PZ*}kPzlJIO~14I zK^Ue|pF`>#j)uNn7YW1Ed{ol!=RDN!?A8gx)J|0DB&FZk`JN}k)NoY7XS0X;o!wkv zm?}pll+BcWXSYWfruvtmt;O6f{m$-kVVDY`5|z71{m!mR7^a%PfFlmmuLX{*7R`>v ze`7DF=DY@i@!vou1r`2H?A-(~(Pd=P>T~=L>HERt%pjwCs=x#vB%^!&0aI;w2D}K5 zv0dXF#@McV!T1eNC76KW*$c*FY*)XRaOO9*D*z^Hc*w z{Jh(TT^_q{;(osrjPEJ#Q=JKcsToVA7#^l$?>2ym8g2an#&5LM_hrn(@lCh&zy1c5 zV)SR+1r0wHZ1}BtZ2tZi?;_WN*=qczQXQB=!_#*ie!JZ8Oae1gJYIIC{!jMj5ioUz z=SwgP3{Ur0@LP3;Cm+mG@x<2GPKVf^QZR|9G|axHzImVu%nHMk5XEoR8JFeU@KXu%gqA_S0H!IE&)1sNPrj384zlz_CmbRSV7L2_( zhF5{faB0g)tOB!DJo?=D227UW>A4=i(QJ6efXOjD%fRdrkG@@>fXO#JDX-x-kw@?t z)VC`a%p}7T0+VWZs=yQ(p2Q05ck#r|sm?y&{>lauG&~_N>4s+um<5KX>+AUKY4IG1 zUc{yu`*S{+MTVyYOrGI+0n7@+^COs<;?a-6UK?;%Yj{S3nQM6N1ygQ#-T_l89)13_ zc>~{IV0f~?tPqdB--BQ_8=i77E5)OqGm|QD%{4svU?PU+2{1bi&t5QP;&Ik~u@~ph zId9@vHaw+Zs>P%4_pM+OPIbQ)q;AAFGl)m;&p0q%!?PO9Zt>{*eGiya!;|$E`aF{7 zAN@QQ29suZ_JK(ek3K%9RpD4RJhQ>{6p!AY55f2iPv5t3O%abiK9j&?8=e(lhKNT$ zF1CZoGdyYUpe^w@_dD_Du`yuA8J@*pip0}T^}G+J(C{R^i{o89&OD6o&k!&(4NnP} za`EWn^9q=`hG#FBsNp%G8s|F0GZjpQ;du&7*zoKGQz;&Oe;xH6)?KjPq*j#dWynGdv?Q zJo#W&i$@=y2f@@Co-e_aiAV3x;Lq`l$nY!xQzagKd@8{t`rXfm2{pJ@ibp>#&IXfg zc;P$@azSXcoEM(`nu)#FYv6u@DzZ_5RZNxTu-(P*c!P>^~OaL=PJo^3$gV}6&J_eI*cn;oybClu9 z0h42R7J%7lcq+l0W;I^B>#we&wp`$>7Hyba}7@km<+@7GMG}s^Bb5v@#yQZ(|>B|2^*dTU?z!2 zKOg=HX0_qDq7L_H;?eI@J_b`}c!vIrYq#Nf5ln^Q>Aeg4)bQL7rrPi%{(|*};mHNF z&G3Z5EHFGf!R#O4#w~V!K7Zw`J;Q@1hdcZbZXJcGekW4 zJj@1@c&7XHVh)%b!xIIQY zG7QfdU=|skVlY{TXAPLOhNl)xj^XLrs+FhO@Z^BWH#~E|>@++TU?v%!=B+WuMsq&v z`^yie$neYp)6?*jg9#d*y(hG!9&I`Qb^{Jztc;c4HlmB)LT z`#d}kOpW203#PAl^!~gIW~brV1twcO`u;jLsg-As;VA$!Nj&;}cR84ZEcf$#(m^-| z#iKt5I17x|@XP|UQat*0Jp(4y@azCnVR#O2-^!C_ct(J!5s&^HX)c(7hG!j^qyXoS z{v2sH7{B4^-2vAW@#yQH%fMtCo>DLc;yKo%J@?xPCeQGAyf|-&M}Ho50+?}zrvOZq zc=Yw*LtqLG&j(-<#&DeV`P{xE&Y6biY%pH&9IlSfjbP>)o-#1$hNlipso_cMglo6q z83QJ4cou^x6pwzN@->*%h9|ul!!-PXWj~?!tm?` zv%v6NbuiX8hNlKhso@#XrIlx!;i&+#)bMx@Y312rc=ExlFgz>4>^3~R!K^ksr={Sx z?ay*Q&(8<5Ry_J~x(Q5@;puuPu5seg&tsQ^NijUD!1ylb@vish(5_hf8J@Xd^2DR} z=XWsahG)WIn1|xg?+2d(lWBPNfQcHO(^GMeW_ad<*)1OZe(-%TxrQh8aE$Xn&pt4@;?et4&<)on!?O)c(C{49y_Kif@Js=-T0Hu8eFmn)@C^51ogf~4yVijT z8J_+};Mf_*an{ez*MnJVcq+i8ibp@MdV654Wq9(z^fWvx!K^hryTSA|Jf|IrId6F8 zgBd6u{dnI5rpoYi?TI-i9{qT~9L!e3vkFXDJo^0k1x&5s$vg`8Acp4_Fm;CK9WaUG zIe+wdct|fi|1mrPFar(G<6siccE4Wi0uvCAJ`ejIjpsjxX9Ac>h9?ZhXLvpaQ)qZP zr(v!do@_A1;?eI@ZUU2Gc%B1OYIt^n$uc}Wj={aT;mHG&V|W&VsWLnjVDb&mUNAch zPkL|cQ^PX>Ou_`tXMLPkfGILOUxM)&9$z0^Qw+~&FqwvDDVPO@=VLH=h9{*jp8pu0 zi@+3#$A^`7Gg*i?-~Vm_m=%U+J(yC%vjrrPj)1g6sP zwC|5~rr|jg%x1$=3?^|R=b=8%&w!~hJU@a-6OTSVeU3$+4bLPnS>nWZ1t&0E2Q8l`?iC3wAis?z{$X`|FYRMKa;r*a); z;(^;f6_v2j)7;oZ%ZGDeQbt6yP zDQuLw5tYzP_qHAY6K#}Qhf4Lo-BX`}saZ;;{urtwoXG93q^t;J+I zP*MLUnLc2`PmnoCWzGZ>T|%bu9S}XE!T6=m9aYZ_V1f_RbFj)R1`{wm&p950*#suM zjBV*-_!F3FW4qc8LR(>aI;(w71LKqJN>-V3z=Y1HM?c=LaoRGN#ZFrW69rRfFgw8H z7)*x~uul!<1TbNP83QKWVCI7H8q69n!Qt*>_`c&A;m-UDCTcJ#gE0?X`t!g31{FX0 z({L5Wwl#C^YFjp%XU_jA027pzgEPnCU-yIYHnDOby}|L+Un`q#>qjtijkXTSz!MLn zEkBrs>vGd=O#~A%+PVWwn$gztU>dH}O}AA8W|7fW+Y@moZnQNJOvAO?X=@mUwl#-W z{tSQ#OIxX^$5upyZg)IJTQ7oXxZ*e6);D0vjkXRx2|uMW+By?V!#bhqwu-=PHQIU< zOrFu!Rxk~#i>BLZc`}}+8f_g9W}MO17%&ZMlBU~Q2*x{!cO3fuDhE?&wDq0isb9%B zZQYAq-Ilvs{_LEICmzz)QK-kyjZ?tPG}@X7reTfL^mg3?CRf_hx2pooT%)aDz%;C^ znr^H6Db6~|eGId~lp1YaU+-~NaZR_i63halt*v0fMq7!eauwHfTNz+h8f{Gmv)X9O zxoZpmgm&t;tLeM8FK`L?`yY>IVzbFtPwO{%%CrM-*^s^JLEcj}eb@HHfebPp&tmj2 z_(j|OquK!#T4L|s6b9z{)Gkzf-?Gm>)VL~)z3YA&&b>R`&BKME`8rhmhIs{;9O-kf zMy<2=?+ZioK2)l|XMglmA3qtUa#0CSY_)%U66?2~|6yCV2*Xqam57n55r(O@r#ojP zwuNbNz>979g<+}?mB7c`t^vr9jlFwX7^Z%7JfFFzjz5D8Q&Um#e8|)xXe)M(VyiC+ z!_?o7X9BmY%>i2#>)~-{l3{8zDv|N-sgN*Cm7`KEDSdzaBn(rjS=h^xYOVHgxG+rJ zfJ#VG`u}98|*o%F=L>Q*#q7s_m-d4FVOnrw+;1iC#L7sZppzK6g*e6Nag$QHjbKK%X1Uhmv6`8x^07;fv^DEXk2C6^5w~PzlRk z-U=}GOo6Em=aFIR45uPzwzX(0wrXPPMq!wG4wcYWjs_mMDP!0yn+#KDqZ0UtDd#CE zTZp}zAq-QiP^p&G9Hips;pf6I)qWWEvh+}I>r7#onu>~7=Ei$y3+LkfFZT6CVVK&7 zO111|J(V?_3{!JZ@lNKPkL_WnIkxq@Fid@kiqA-OI-d+vnW)rFVq5xIbgD2+El0)s zHTRc()vFbTDPIoe^A7jacwv}Yfl7^>d-bc{55h2&eu1;@<#y>;y|KbD6+)#(&Ng~# zy)aDuh>Azr()ZU9Bgil{9F=NmOTX#`g<)znDp5)4`)j)}Om!WJV_C*fzv^8s3{xvm z@fvH$_l03szoJejC{(4WSBY|74LSorC;^# z5{9X*PDR?f0LNnd>Z{#FWSGi8rCPS@ay4~@FihQxN>tj?Kf_QZ3{(412}$Z`wXO7v z$uKnjrO%Dg!Z5YcsmK`WSG_u6 zm>Tde+^5K1z8V`9duq=uyiypZmN^wUv*}m8PlREr(p@|ddIyz4*~?#{E$oT?FOFfCd@@Ys zq2iUjtf#`lF!d!WImS;|{s7~-rD2O(G;>xl>_u!8yqDtGk)N>iV0Y{PH~IeZjWYf~htR?L5t!YEr)>bAi!(f@ zgYgV$`m+c8zV4j%oU4t08puH}hG&PgmB@1apWGKOfk|>{%Ypv}Q)hUx#^7_yhG#yQ zJ%(p9n4X5G+vOOa$?kK01ekQgGY3q9;duc}rs3HMCeiTt#^Q6!h9?(HlHs`(Os?U1 z5scUH{0b&uc+$t=Gm7F#ROiq2U)Ps2KWt>MWB<2O8a zfQcHO^)&GYU+R zc=Y4q2{8K%&pt54;?ei}Sy$j3b#Bww6lX9Nf+-PCvN}GMV3G|_^DFTaUhy0aPyBt8 zAB@lN%mNb?kG@?S!SppeT?#PA3{N(g48t=U%vSL@;}gGKWni)l&yQesibvnBo>yUQ zY_86XhV2Z_~@2|c^Skn%5KhNibnQ3_L0OK`0>%jyKPrGZe_A@-WU`h1o-KhOUHCfo4zx(??A@#x!iDVRLNQwnCa z;dv9xIK%Tdn6-wde=+8~;Ta94-0&;}Gt=;_15+U${kZ6GJ?4ht34o~-kG{Vi2UBWz zc7fR}9(^6v_Xa$jGdvT(>=2K>j#>d`wc+^^jQ2`j-}UY4KLgK*49^WOPfTO) zl4c#?sZVuB#k+pLxxO+Ol_1zNopMYuDgHBt{^TXK4llcS80;8>zAf8zn zZ4Cy~FcX}%PFCBR1|}qJH9nTvp9q)~m$vv^v{0Ul;v?wF>j$T;`g!Q|XDButta;m_t|}5BGOjl?|WxkZ-GfS+WH4f!*SuX zg&&$IpI}d!jdicIrH}IfFquYM*(Il*b`U^EoJU1x&v6zJDeZr6A)0i&&3!8Dw0 zoVLo*R{Y#p2`0&CYa^Hfqph7_2% z+XTKv6K&lJCSowl!GsOwWibBB-P`&YjK^Sp1><~2kXxTS+=6{-c=~|}8J;0vobM5G zYilf+u+i3Rr!9kd2uz{DyaFc2U_J%oH~Q?EgJ+(G=Lj$X!*doG=X+P&#%BVUsL|Ff zV1fqoFqnwJtOw&Y`tuc-8pG4#R*bW;?Y+RH8=f=4)ES=9V7!Ls1~AnIvlvW`(bltI ze1>Nen5g0T0gT5OXJ>6(^Z!^I&&EfdnaJZy?{msL?5_##%s4Q0KDMs+`F>&8dL=4>A^g1(+`=d$-(o%) zrZQ0RoXb?En#vJ|smoER%VJ7zt5_JO=Asg~fGNGL*M(tfA1Yzlt~~TGeh((!Muw?g zPDOf%8$%_PDGXEDsCcA@dRy~^VJeD>S9++o^`|gQr7yrtXvfiLfgZ+QoSAvTFm;1d zX~E-bIU=znQ%?)SR4pns_&vU64&UrI{I`uX##HLruwYX7=t>%LX%khQ9 z(g81;3xuJ0Ix2+;?9ctk(C3lke2y?og;1$!#?;S9#cxGe7^YS^mF7&nhZOr2dsi+D zQulyf7KW+qsMN`5yrgc|9$}bDScq|!w$`etLxo`~4V7wR{^SV5 z)KpZ$-Fa?VuC^5whN;9mFdC^${e@Kg$X_H3Q_E2CVZfbz+oG91f8GNVlryb9e_Dme z&^!p0963Yk^XCd-n7SX8=;7RoJ?d7xBMei2IhAfq)gZi#kUpIm&ZsIPIObAS>cw%Ro13eFcDKR`xgXt+Ay+1p^gbYu&Qani( zkKUhLFiQ>3d@$+a(fhLj%u2)4{2u&t$?zNoX072F2qweuoChXqcrFK%X?Vh5stnI( zVEp3I$N6_KTMdu*UOeqFJV%46H9V(+$uT@L!PFU^7s2Eip5MUiGdu(C!-`Qn`uw>B zOk#G!nW;syBpfn4>%@-15-{V$a|9S?CDicZG59i=WW)0tn7QI{&UNvgV;AA7XLu%o ziHJwvuIs_{H9YgdtQC*GT}!}Z7@pN&wu(pJu9v}N8J>5*c&_3Tyx8x?IU~(+{sK&n z;n@wwE1o0Oac+G-K4oEex`G)fo)p#756mRP;|G&%crF4{WOxd|j1!N(-|qnvG(79T zOcIa2-w#@hpE4Mpe1{RwG3xj{0cMfm*$bvjJoJw|YbltB;n@VH zMm+j_PF#w%49}@x5~sM&=j*^!8lDK46!GZu`CBlX4Ns2;aNQA)KA$fEQ)75a!Q>jA zYA`zukMq>XQ^)mK(?3yNa-uvnnx;H7`hR`rL((#w6HelNoHJMB&-1CmaFyE&m0%@% z=sc6b8EXHF`GH`nPo&w8zm3gcp0%=sp?NqeHSZ?wzo*vwGg}y@BB(^(b??uYV8UY7 z`_tt?GBjtQ5|Sr5>DUTxpGVHU`NA+Y#i$S{?IieKi~VMxVZOa+8t z>IzhRC$p{Cs5@DvZW4y6yHLrIl=JC`*o&z*g<)zhD(Ob*u;pZ!Isui)u;%;cYV7%$ z(<0l-7KW*OR6@scyXJz8KQ4-dVQLO4VcB0tAr-&B?iGfqFe<(bwzUeW`27_ThN%}( zsg~582W*W;wyR1QrnaIIIDu^?pnI`9O^(KQ!Z7ulQ<1r$Kif%sm<&_Ns6@N5E&bWf zF~TsFfl8zwQ=g-U2VvV9UhLrrVVIhLN_8LiR8SbEN>M31m8m6aTaO6CR0NfpOr|bT zQ?ClcRF&hA+1pi3C9ELB)Cs7B4`W+LA(h0zki9%a7^ZR^PgkaTs;P;>Fja&~QJl2~F?FQc!$XB(sxK>QFT`K^UfroJx15K2=BKR$-VbMJ3dOsqc_#hyOLacr33J zhN070)SLZ~To^{EX_fk_=PBQAt0MDd+lyP22xs4{sBOsr9J%jMP8EFm=M? zm{CS*nlMbQLd9dGz7dA0ZmTfzr*gX%VvAy{2X0q^FifpQ#UrVMIS}=KGS&PEGE5Cc z#V@I3HMLk6rfN|MO6nvv)o(Q!rV3HYR@V!&DV2UO!X%jQUgKZq&4t+s2(FxAVc$Q4#^Yp^g(oq zf}Pyknko!a3sLbIbK^l_m|BHOb!Ydss)S)`2P)}CTYm_{R6+#LVB5L3)k_$r&OoKw z7{igmFf|&LoHp)l1%+X1DJl`8ttW+HstlEITlcm;7KW+cP>C9Cwf+woraGY#Y31J5 zAYqsqflA0|Yn(7l6{6yoJNjNYi^gBSUKWO_gr_kN-{upBXOY5DvH!)h=mo+swFnh& zHB9 zhg~NOQ@c)WPkk!srdc1R~V+! zp2M7fhdsm>zbiewOc zUMvh#@1PQTjj65bb@`w&GEAL~O5|1d)Gfj=wGI{kW~TIe*k6QUs>cgxYZFuYJ?zE8 zFf|7izsz3!9`=1j+FnftzH<7_;qiNFiZtesdDRrl=F$H_@nYMVVJ5z#s4Bx zhp25G^D-Hx@=?ionkoH`<8EP?s&FdLFy$Qn@niUxFifSd!&PP@Q^%{RtAt@{1uDTe znQ}fW5`Pc-nJ`RsdIjhC7ntgyriKc`)J&)HEK~YD>@&hJRf~$Rj4AydHZ@9yso|*9 zNn83o>>a`|wGkEX^K47Mhwbz#8K!bk@ypdgzlXh37^W&w3Af?>R|||GX6pVIXJqU3 zWSH`!Qg{Yat<}9eTNtL+p^|eNQ{8Zh^|Gnh?0=06Q<t(-*HS9hN(rUM3*zAxAnO&O!+D?pXK_cw{@W~ zOqDp574B`lB@9zZZ{j#L+B#hrrV3FBJmTKg^TIH-2bFZAt$rKHFqMx=@B#O>9u|hF zT2u<L64Y6vQxmF{ibAq-R1sMHyAqh%EtrUs&t^SFCkGlXHP92L(8OzGS8 zvoK8g-o}swe7=9`YQ%UdOzH*s+TO);GsuY!=(bk*7FtrC2U)a5^ z)7~Y+R1lSr(bluVFjb36`cn6{`c{)+Y6>a=qpcOfFtr(#@U8s0u#czs`agL$_751( zBr?v`gI9pqbHm>6;aq2Ysxt$O_d0sg;9(1~cV~m~;AX`6n-O)^k{0U}HcEitJn)=jP(k2{(;z{K2 z)&I#ocQ}}YVeX#(V2Z_~_h&2^ui;q)W~O-b{=5w))$lZbAD=`OkKUidz@!AiG(2m-ED(>rU2lN#8=e|4rH1G5&G;mk;TZ*Hsd)79xf@KL;i&=>7Ed?KoA|X~ z%Psgsnc+DVOjJC2f6fO}Xm|o(Dhy9Cn3;wr1g26v`u?f}GuQBVKEQRy@bmyvYIw51 zY!#0_K9_(A8=k3PwuvXUx_1tE9`Cn-S#5Y$fY~V?y+6-_DKk79z|@IHpFbahsW3b{ zz<96b`7m}LeBgHd38vccwEqz27V#XZ&gUb*Y%@Fq!T80ae+up#Fgpy-C@^`3rx46; z!!rj=p?Gjnki8vy_YfG*aQE|kIhb<8^C6fd!?O!aVj=gJ-k*f6_(Y=N=>jI#@T7t1 zX?RWo6Bf@9b$q6QNjE&J!R!!^zFn_?$uvBhzzn>GC|c=U13 z1yf>pt^iXg9(}uJfe9I&yTFtgo|Ryh8lH7vJkvNndVjWpS!sB7ff-_W+I)gf_!}M{ zn2>n%aUKLFYIuf%*=%@5gQ+q+Q^BMZaeVxk%$&uscejGsYIv4{$rF!0&M$(gH9T9v zgbmMMVCoD{k8L>rh)2IJXM)*hcrF67Q#?H|KJn|id%+~0?|!}b0F3uqj# z-(XV3qxa{CuW>CfJXv5SiANuwi@>BBo=IQ|#H07;HZW<1XAPJ#@#y`Df*ELdHi0P@ zkKUhO!T1eN%643Hi{1BEZ!p=0ClgGPc=Y~U1}4w&%yt;@=;KogW}M-96imK&^!~gF zrqJ;01hY~+dVl@~Gt=;RzriyQ@#y^-2xhL~$pf=TJbHhw1XF5wW`Wsfc&fmJ4Nun{ zxG%V#^GE-_(@9`f8=mLD_{5`c*Y{w`43FxLwzR*==~91~WuFdVjtF z+wTj&3^6=aV0z-`Uk%rH-IMeap8pu0 zY%nv$qn{6Fg9#X(GBA~f=SMIFhNov8?iulIEe+eH-&alrQ*3ymVDiP2rH=FOU`h;6 z|DSR0H9Ql*gbdFzFty^rK`lpl?A=x{OASw_U09RMI~0fFssF*Z`T$u`wWlwH?$=leVoq)lQ_ctdNCVJ`Yeu*-k%r2 zBpaSxV2Z?}_ovVASd$o@abVVpN8ewMg6V5`c7WMuc#hkHHGtu{0Zi779G?Wt=h%za z_cDhuJimb%BAy49|2h1>({7*9&0s4bMI>5%G*ef4DWVcc<;ey`JHj z4JJ9r@zKv4?|~^YJib3MH^ifl^VML2hG!j^o`$ExK0MnoJOMCihG!L+MTTcLn7)Q5 z>n}Y2F+8PU(hbiiU?PU6$KSZ_h(|w+-t@H`DBC?0)(?Eq70c)I6ZQ!O67Keb?L3{O}54#Z~h=>54I%ud6z3XJb29v6CloNv?IV|cpYyDEE%NAJ&Q zFbN~w&-0IhDHM<1pKV~ghNlz01+z#zdVfZNNi{sn!9>NQ_h&1ZG{e&#-(y-K9=$&o zff;CcmVxokcHdu{!T1eNTYMvFvUv3Vi~y5ucou^Rh({lvYA|_*rxm_Qbewqf{tR~* z!*ef~hZUJEmZK<8S@Om%csN ze1F#0;Q7H^x1+Oc&LBcQccXPflGzU@fZFM)V1mpdtW&Ls1qM5!2w+KV?KF4gN zj=?tpG%!r%ppt&I`&JYQ!_-|)Wec}r2u35e7dbv_!G!C$6|B||o$Q0Q__lxshUQVI z6xO<@ZWD&7=THess`2@W`}<>InA(F%a#Yiib)KCyyf}WH@f{V_Ke(Iog`xRDRO$@#Ws}(! zQ`?aWKJDICKYTAj1H;r5RHC)qiegCHQ(S+2aQ@FTV8YM1oA(Ms^U3&Lgy`2a2jGc) z2M)(42qtu!`+R;>7@9YrQYgo}4`%ve@4f?5y~VxH1Cq(mT!cz!2m71`bL>jYHeLi1 z+3ap^j_-wPU}(-lrS2P=b6}30DQKSWq^@-zjgN()xn~z_#WeR+kuXeE#T^$d;wtNq z3d-5ISEF&}5w}Aanv)K}^+L|Hdg=sWm>PvjP>w-8^{_BZZAT?6$CsWu7T=rIz%aET z?%0_M#v|ud-E*%n^sGfCM~*l>^`|gQWgd#zD@T)_x>*>eDo_c?k)o%*6Nag__%5`t z90hu6gfL8%q7sxDuBWyM!&EnXTU$_Oub!GB3{z#Ogk|>Xsl-$=OzjAB{;@IwOkg9A z%HHZ+ogxfVC8$(y=TVt~R4e?i;l-nJ8JN1K+|4ftL-RYR_~pE+o4)}Q$Z|h&lklBt z4GhhFQ1NeKpYzb!w(PQ;2Zw`67qdR9(}bbx;tc2;`6{igq*5|M2mfOcZ%L+*hp zVd(h+6`$-2J@uC`Om*&tbyPM-L*IiZ2*cD!RI1NoN^fhrFihQzO3q{a9+*3@U9qz< zx9b^Un0gx(?^_&sA5xqnv3K8tNf&b}82V!G+Tr`;8W@_7LM1whTcL0Jxxz3t5tX2% z^liUQ7^WUaB_wwN`W@>h!Z6j^hY^!I4n1|UFicHG#bcx%5QeF@Q1Qy0l-|}}VVFAd z2&4kMPtj8s3d7V*s8k!NXN6(vD^&iExATv$a{mASsf|`fLzon+R!x#gQkfhTR)%3^ zWpS!iE0tA?m0}V?I8qr!2aB*cG9<&HA_8jniCd)!hVQqI+X{e!7Tg<TYh@o(#<$QAv{iI7el4f5r;K)M8Xpr7bsc1`jsE=^v1fAE~!PZ*}gqvG+qr=Avu zsa2>1X1k~U5QeGKI%719w)zUg)Ob`v@=A{W3g>)bn0g--|6KPTRtv+_iRa-AD{bjx z=oN;kk*MU)b8l;|FigFRN^p*Q>Q`ZyIuSoR+%K7#LxFiZ_W#V4;&Iq#Z9pHE*B zhN+#Xc#Txo^T{wZ8I{mX{wB%-PQkjrIS+RT!&LvS@EEC&g<6e!n_2ZUkj zqzjSyh1bvNNX6k#{Uhe!-{*kweeQ0)LKvEdpc0f+U$~;LpXUn0)CyEWpRp}H^|vrg zwN1lHE8DK0yL$`6)D5U4NDuYYWMP&4cN=kXT}yi$uM;hDn&QDr*eg1 z>K;^*#<{1K2*cDDsQAXXr~Vd(sZ%dTpXHT*eU-RK7^ZGOB~@Pe*H^!1g<)z7DhWoa zgO?0bH=`2T#MeojJKxBItHig$Fm=f#@Pyq{uL{G|DZQ{=Kf0&x5r(Oqs057E4ZX=Q zwE`8tjD|k)P5O{w>Izgc<=qo~i7&YOr7gg?sHFFFAP(+p%ReyYV{T1 zDPfp;7nLG;uU22#j=GWzQ$uM;{Dn5DtUEi)xg<u|gqss6$+^*AblUwMwx zuX1+?!_);?NVVbo(XUCC2*Xs%{#gBt)MLUh6*B-S`DB{j)-++5+Ko!kNR7Ro3{zWB zNl13zu7TNPnEC{jkc_;(myaJvhN0fW!h6Qc4_gzsYJD#ZQ@c?~ zHB!e8Cc{)4REmsLA7Plf36=0__Z}7r!_<6KDz>;EgP#b))NWKf@+nIF$ZdTi8K$m8 zB_M5eau$4fa1191!_=dwq)J<-ArXD{Tq+DxpP}NH&w=QlYS=CeQwLD-Ne?5dzSB+i z@Z6ioFf|yJd`Y!cd-#YjOud6jU?k5VA0QR^EDhV*EDTdIKCBz-d2Z4_+tU_IXoR~t zLl~OJqLMG4=!jFdVy-Yuy@iTjwn9(+C=62#hTy7O+S2z6Fc{WZMrtU$- zFKy|mXN6(vZBzpCdF;p@c6Kyd-6jlE$L3;%l+>vQXGQ&AOm!88se!2YBy}P1==Eos zFig!yB`L@;)Mxmc!Z7tIDyjWAH}o}Ow=hf{KO7_QmHV2|8H_*O-JC59&4rFxKH;YK zXQ41mg;4SJb#LnzVVH^=fwQ^s8N9QEVJh9JwBc_a8GyYLnGM{hlZ9cb1eL&GUTf6= zBpZ3wcqAF7@=!_I&2#1bxD|*_Z4-v68}o4F?qcdaOrGfZvr!nPGDcxLlHIrKE@7Ao zq7uHFGa(V9fleNL@Y$zeLWcQ2VQ4;UG`2n2Q@6$S-|eC|(#B;DGsC_0o4|zHyKmQH z!m#xZoQl!<4`BTFxVQed<0<6K+>H}_d)W-`%d>AL!`26*;%(>N=W=0~I%y1!0;A74 zU;@U7Jp-nwt$XX9v1Hi#KvcX&>j5x6qxGL1rj>i^N#n?{_5P@M&+xd;mO?N!w{d?t zS2D4(FF0490F(3r_t$%PS@IlVxWB#@hOHlS3yvM5&zA|q)a|IG8hw5mOwj1_`(V5a z-TS;x7`A?HK4x79_i>&r3{yK%@#2Eh8H*zwm0ib!xsT(luL;w@c#PIJ3B%UAPr%+W zTAvQaW3>JWn4;G1+umRz8Mb~ND*49#x(-aR(0$v-gQ=0%qt3?S9Q|3xuZ5A;3oxo@ zy7&1pVVK&9ipLnS^C#g7_Fnfs-wviI#l7|Kg<x|Yf0h3^~euLvVf!pqUq3)=tHQ|0?*!pXz_)c_BZ4rj4riGZ{&D>KL z3&YeXr*evW>PcakT7^pBB==OS$z+(i4VAFb!>@#4>dYzV;qmTm4H1T^$DB%Y_tb7- znCg2wM*dXy)C#{Mc0hN(|c@ty46)_!4_ zYJUgT`QLe8aChWV5ObJkv_Zl!bss88Z}1v&gR|O4&G}!2VXE()IHQ#^)fNixvue+xP-$jP0Rj4?>tJvvROoMUg)JaiowVh6e zsXI~eNNOY!+?vR<&B8Es@!e?sRkro2(_&Ox3x#3oA5;P#@NB*X4Ml(UAZ-R2rY57} zUBQu0Lp#wU|D7;QoqrGJ#xBl{x21Q^6K>&nVVHUWm7?F6TA`-42*cE=_u?!wiSK{K zqI=QXHAony=Au$0Gb#(6iau91xQ`4|BT)%`#L;lhDbb^`QW&OAn+eYcOpQHc3_LO# zlZ0XF6I2pbGPMs4MXoA2hVAYr!_+iX!mlv38L8;)+Aa)JS3iJx_%T!Zc9jalRLq08 z-Y~XnurN%$hDt?{ZRsQ5auyk;?ncEcJ?x>5d{`K!E_etl+lOpRANfaxVd`g8QeS6k zhdPGWJWPhEw@@iEdf4m{GECjO4IA zQ8G;3jf&?@rtZfiJO#=62j}7M!Z3BiY|KnKQu+apK2nwm!&KA9a4gGbMIJ_qEkvG; z5{9XFQSmQl4@=R*lMnVUlIl2z3{!Ja@ktMz&x%C%@ONRD>N^+5m-KM9+Qa9BVd`&G zf+bv|N~L$s6K-LTd1RQn4He%arkv07M;=VQB@9!$QAzrnqtP9s;k=ez|6ppu<7AlH ziAwl*o>L|u6}@iUR!oMeeW(O$+1427*+S%5;S*$-`VAG|KBnSv@`_H4dy))Ozo3%; zA5)`G)L!uzH=hhszoC+}lPTx7c}BN2Y5^Ihen6!{-p|!j*FQyusZUW!XvHx+84Y0= z|7YYcd72DUuc1R(hmHB99q5xoM8TSSJbZ&3+sWok2aarD(!zvsy?^#&>lKQZ+X+KQfsZC)V5 z)PqiCDN}c-+ZDf<3{&@^5;nGLk1$LPdl6?eY>qPq_1^%E?%|ihFxCAfv^ATl8`T~z z7lx_xU&dbkjVXQPpBILy<4bX_3^S#V;hn-T^$RM&7nss}n74!sQ(I8UH^wmQ6*5e{ zk4nJU%V)nzhN-!z_{-VD@6|CpIY@@7M^VYd3%~XIOCQ6AuaRMDEGi*mFMlr#Q@xjB zOFx#j)E=%BhN+8RM_Wb@gTgR%S{Y{47Pj@idQ?6n3{(H0k|`;DZj5|`3{zjA;{Snd zor9r_p7TB5B*WATsDui+_D;lGm>to}`Umr8zD0(qMW}d3xu@DMBg52ls01El>SpvX zdhI>sZ8A*VgNpZlrhMpBJUb{`xK|jaMlHumGRk=!AnD+m_BbjP2S?>dugaE#2^-8$ zju|VZGdf4|bbJTvkHOpqCV23A;YgmjU@{G66PSF1X$qr+}}?hB^I@H_^l!eD*? z<2RUnU{Vbx@m*ZWyjXumifIt}8C1^BN3`y7E*NisOyo-0`A0I>g2}|sA$R^ira|H% z{}N#)f+>25jPpKzkmz0eYOd5qWUiUk8(5%%2Tl!q3suG9tk< zdj13BH}*xl5c*T%?zsv~(D2*}#)n%or|p;q&MRG!2mA9bn6Sabet>a)nI7j;7Lf-% z{lNI1CDS_s;2D`>Fn;5>*ajvbb3<>d(5Pf<-`8dY3Rg> zPQm$Pt8*W(d7OVAfc})+UH`t*k$x}UgJ4$T%_*Fk;c>1bI4bq+JDw1j#fIlkFcpTU z!z%oYU&AvPOr_!Rg9#d*55ZI!o?0+vhNs;}jXbr6CmYN%!}AarPnP>Qe+Z`B@ca!X z-tct%81vci+yo}k@XQ9Y((tSVlWchY0<+riq^!pEkKq{vX07452TYpb34*CGJl}&! zH#|pwf}g8zc)EbeGCV`UY&1N6Fh0Zc9+*nQvjxl;!xOirQQfDrocF7bv~Ju4rqJ-b z31+L&pDHjj3{Uee`VrpEC62WGM1NneY##qi7qQ)YN7 z!R#?S$)90OFg#^D4RV4RUO@^55_aY{k+rWbIf_e(+^Cn;duM;XCeHA* z{Q~>c@Qec!Z+PAZv)}L}RN(sA@C*SH*WZ1dmx5^~p2+o)bIx|I9h}Dx4r6%YzQpgg zFg)jhNisY)f=MJij}P;YnN9$kWa6+zY0Q;dvQMAH!1tCe839euZmn!{Y!P{lOF)p69_7h{w4ik6f_x_*wy`#PEc{%rHFr!2}IY;y3u69pZ_tJHGiJ_NOP9 za>J7grdT}sy72&*)rKbsrv7K)I@bwabcMZOuRNZw!8o5BuD_OuyiOS*Jf3}E)*qoQ za;-Mv-a$P2zPJcX_y`{MY#^9&!*eT`YQyswn6-xIEiiiw&-Y*|4bK5Eu>;)C1#P}X zpT*M*!xlYP`+!L>Jj20w?&1E@=f=HYS{R-ez{H71-(PFNq!^yvU=j__$=_j}H#`@D zNfFQC^N@3692l?RdB$nW@N58+VR(-D9&H&OFPLn@GYL$F;aLPG*YJGpv}JhWD)IV; z;kgh@uHnfCGu7}ca@sOH-+`HFc$)rzwhT`kM=*}wSs%OM(M}$m0&7e+H#B&!K4|UIbf;`&l_OU#S?p2XSufg1g6&T z92>^5YH z--0POJg05J7#g0zU^W__d%=t`Jg$Oupgy63l+X z^Cy^DhUbDRT!-WBGiNUx>HVF_U=|ymcfd3=JpY1OX?WUg$LmOj=V~xv!&3;Rqv3f5 z%zp9c^YAM$-3-rBI~sXBGu_vp3&8X-JfpzGibr2J=7PyIJRg8bFg&}#CdKf)1*X98YzNatJo^4RwHmJ@8J@mix*48AFtZHL3t-X=&jv8XhUciA zxYrX;ih8|q9+(otGXzYY;dum1(D1wq#&3A4!IT@G({|zh!tnG1v)b@X1``&KzTZp0 ztT#MgfY~aZ6m^{cb=opKXZ?n2z;vNstwP5V7eHdH^J;NJU@fUF+9y`u(k|z zU*~&+nIRs1oX3GlFg#CynQ3^ofN5cP&fbk<(D2*_CdKf40LCw#IPCYxgZDe<{f>QM zcou;vHav-c;8-?14}uAZM<3^}!DJYoGitFW7@kpJvJKDcU=|ymf5GG$p3DElYX#!b z$9WN$e8Us-7p_IcqmR#(V5S;X?V7PDK|Wg|HkV!hUXkGA@S(r(;rO0 z@Z1h&wRrUF%wjO5hUX11TMf@TFv|?jZ(uwRa6Q!fle`Dleuiftm==cTVK5bjX9bvU zhG#RFO2gCOA6(BHo+L0;hUa21`Qp*%^Jp-&hG#CA0>cvmJ^w41LhZe8=ggAk`2$NU>1l+KQI3QCe`qqwhwdF@bm_gW_WG} zQ*C(WfJrwz?}BOeAdfG7yS9PJGCWQ9qtD{e=V2ExKEpE*jMwly17?ij*$$?U;W_tT z%vHlP8BDr(^mVlg%nZYG{eQT(GCUuF@f)7=58#|@cuK%5Fgz#XGp#8Am2D8lYECLgEgZug7M=%i2Arwh(d(XXpd29soX7J^Bh#r074tOC=~@carUTRi%HKjY{)PdCGJ9he-$ zb03&KhUXnHKEqQBCe!eo-6+nJYj}KMatzO7VDb#l`wnAxeg!ke@SGfnW7+Ur0w&+^ zOa@bAcwTebGCZ5W%rZR3G>-EW8lFqR6dRs9!Aup8{@IKGm=eSD0T{n{^!Z!`CTMt? zHi`4hF+5$tlpCJGV2TaT3^1z=&&yyI7@k@%>kZFE$HaL8hUZ=|VZ-wUm=f{m=bdxo z<2==d=P@v);?eh4C73;ir|q%Wr-o-TnAjZmb^bFjWrnBKadDmm!!rrYGQ+b5Obf$v zMpMi&!&3kz#qfLrCS-V;C&YQW7@nKKtTa4jV7!LsUofi;&t=EQc`^*oBVg7Vo-JUq z4bKH9#Ca;jqtEA8z~ma9wkP6R%kV4!<9r9one9iqKRvM-jzPooFqo-^r}0T~o+`t0 zFPNEzC+1{aw-}x&VCEQ}-C*{JM?chUaB4^}i>ApVN!nFJsW_9u;5`rLDu~2ARLW zEIvY8WLhNQdQ3d+P>!_4_sA{tH7@o($gbYsz%oxM71I${()2tPaLBrD% z%tphL2c}#+hmSM2{b4X$4Nn=Eka+ZSN(Go2!&42W((uH!#&v?>Nd~h=Jo=i@3ryUN z?&lOA7|$a-26fLJV44}81x{Py(Z_iWm?Xoq2TZ(p^!~JNgY&ZC$pF(#JbHh|gXv~? z=7C8RkG>`>1=Gjyd=4f>Jo?)ECzwpb(;^v+;pq(~$MB2>Q)qZ*gUK^I%fSQ;&t@a>KJ3Ose5I`AqCn!_yB;H^Xx$nDvII z42)MixXDt^gTI0a8=lr3aBdQhK0edIR2!bnVAdO+UT0x$7@lXrR2rU5U}A4_U+0^5 z#5qnpW$O4`4<^Cz%mGvUDCeO*J{4eE7@qjEv2KV*?@wPaDTe1>Fj@G4u5RCnr~=c) z@bv41HPi5vg7F%j%lZLJl%WXn#Axt4JKJU`g+*pLcB&~cy0yLQ9SwB zsObCdpTVRXo~$&iV}@r1m@LE7`6BGoIUMI6YJVOB<1;+9VA92-k56__oSO_!IhaiG z#G^lv2lso+i*XO)bKmcGfXNY$ejfY~%nZYGv={dv;?et)2gYxB)_^Gzk3K$)F2O!E zJbl2-G(2~KS!{UT1LGG@nn#<5o?bYo7@l5W)`~|T=U2gm3{Q*RSP#XckIxh^YYopv zFxBGG_t$xSaIa^09tN{VJkIMjkq75tHJGhF_j%awQmj97d3@>P^A?yI!;^d&)(!FK z<1-!1e!~+6(?vY`_*{57UXvN(zFqUcc*Ub{S4=v#-SFgt$rg{kU7v$VGCUpoVvQ1y zzFqf$>1cR1gBc?peY>vihkH-MQx0Z^c=YXReg$6tF+7D}W{F2X4{ijLX?VJ2U~LhP zK0c3u$uT^;z$_Mz-k&S3#OptXXEB&%;z{xx`rz@Ecoo)O!!r}iM)Bz5ybVl|;puZV z?(q%JLNK!o&t5Q9;?dWQ(V4gxHay>fiJixFL*K4$*Wez+@XP}fZ+Lct2^yY^YjG@# zN1s1_Fy)44J(wi%=-YMDb$I>9@C*QxA|CxX-3VsA;Te>LbGSNf{7jKzRpk0#=WQE`5R1v;h8WH$GhR#38sbN$s2@w zJ;U=Om=wb^;07G0hGz|!E{3OP4(9OVJWlm__$C;y;psFO_eA2k7RzA+SrQu_d{zo3 z!|-&t5$7-QoTGXcfXOyI$K8bUh2bdzlWTZ>2ea1j6eFVwkO>8dpVd& z!_#RLj%D%a+w~NfD#H^$8ppDD^zC{WOs(NbxEXUpJo^5c4#qRgeVwlbvsgU(b`2YY zYYD@%4osPNE?3u|tg%?@49^BI`^BSgSNb@-CS!P(gNc2T`(59zGjGA`KZd6mOoDjy z{nb1lum2dH1z>W;qi@%7zqJ;ps35*GPtE378p%C-qjW^Yb}>x~TnG1jcW8n%{BG&TvtR23>oIqc!HNJY=6J;E^6@D5zzOI!MkY9Rg8-N z61IgCw31pP3{&N(_%3H^7*cE@^6YD2n5sgh<}&wGgFDGE)eMzXIZ}LTTW1NwR2nK3 z(nCFUoiI%0qLL}cat-M7^bRG30}%nnwp9! zBEwWOR4T6IZzYbL6`cmz!?T59%IkQVaGjqF*7=-G{e!8ygkh>2m7-&qa^_(4QTeYh zOm({pcR-SI+KEn05r(NZQ3;*Rw(x;iWgf;(C&N?*DjrFlRKGz7|I6)qQW&N-qvDlR zGd0!uZZb?wMWskmJ=D}HVVH`Wfi+4}`f78%FiZtd@foRY!Z6kD9*oAmCUxVD-wT7u zafd29AiA41NioKT%Q$0`#8>w4`VX73BfRU;ahN;u$a8Fx3;4RHLn{gkdTh zm3&E|x5_-s6Nae?s3b^A->&JxFf|Jm&lTLRR_gwGSs12Pq7w8mrT1{XFidSirJ_Gm z`WXHz3{xjRfO%+aS36;tN=2pSdiS=j7KW)jRQyI;g~Bj39hKB8*_J+r&j`cRa#TVx zhWh?mBMejPQK^wsV|8w96^5x@sQ9jC56@Kh^05z+VX7S}71EY|chglEro5f+xf|7c_=_-1b()2d-^IJ*B^bl#tL58;Vd_IvYNRdw z{PmYGOeH^rwti<@k<}WF%4#)47^aF*sgaa^|Fu;ZraC-~{bi(X5r(N(P|4rK9_sgB z)xt29{0LT?jZA%rt%<(>$`OXChfxWB$CQ5m^^q`4?Lj3hZRz)4-Th>kDnO;;TehX& zf0YZv)PJb>WH0OYU!5N%!;}w|@NaDEMRi8a5r(M`QSt6(N}o~3%_hTC7ApDDR{kOL z$Rjfn#d9Fjb98!iGar(f41iA1A}qwW#>NXG*{SdPo?iK13yR zf&2Z}0b!WxT8wk0+!NuYS7mP8CJa+cQSnPkzyJC}7^XTsfl-x|eoo03hN)6iJm>Nn z8((HouD%I|Vd_6re3H^v zn=2QPVQL;K0V7o@3{x$h!W=um`>z*q_($5~3Xm@hQ}3aYByF9pj{E^(nCkH~=3ys} zync5xO&F$@qvDgj?40%3ugJ51gkh@lLd+;>YdF@!=)0SV!Z7s;Dw*4Oe0`2o0@|y8 zu+`s%VJbC%Yk*p&^x2y$3{$gFN%)hg6g0vXBF{b&hN)UqDvY*Lo*~23092By*p|Ls zPYT1-MpQh~Lw&pApC!Xo4^+I8!oMm<LXMtesyoF$s#gLrK93A+L|g1 zQ!k-Xw3%&fQpa$YFidrP9_ze}p}t){VVHUtm5`+Ld!i48VX6id-&Xc;o7%%JFOXqs z0xAJ%OTXiIUKpme_oRu%KBGGdd82>9r zX8x~#AAJ$}v+@Y8B>15<5y zz5x@L>%QM>z|@LIAD=Tz@wsKgGZf4o@#t4X^T8w;p7mf7aZBZ_AxHW>=|6+%Xn6ht z)57o^w*;SOGd%6UB#B4gUpIp3V|eC)NijUjz+@Vp@4%#rNB^wRpI~wfPr@tsoRxUe zFxouIBhT7`$um4Xz!VyutHBf)o?I|xhG#mMBEu5^Q)75mfth7^c7W;ll>0o~2d3EY z#J`IDB_92qnwDTn3{NL8nc|6!EY64Qxl6zV4Nn%BEb-{`c_f%}!!rd;j(GHW_z;-Y zh9>|fPdsg~HMqPv_~49u9n5;e^AVU?;&JXzqdnh(2^*ejFag8UFo?C+@FapM6OTSV zox$ueJQ-j@hGztr*x~N$d=Z$n;?c*a7)*lU34#e5p4DJl7@jbgTJdCHe{pX|o}Ky{ z)=a~5Eg0w8?=rJ^57PJ2qweuRD#(k z9)13tz7(IUG(0{qTg9XI=UFhhhG#37D#O$Mb-XTWct(S%7Ek2W1!t5vK5v7WYIx$x zaE&A$eY>s)Gt=-q55}{Q^GEmm4Q7tvNq+;!py8PfCSZ6f!NeJ!j&I^S2!>}Wn0Ujp z0?abQ)8s9z3F65)WG_Yb*G*tn8lEyRW5lDMcXorRFg%@>;abA*+zh7D@GJ&1)$sfb zrpoZNejA^E7LR_M4gphZcmiPjhUZ5xo)PZr{OQZ_`Dep37)-q3Spa6Sc=Y{V4kpp? zRDy{OxF26T!6X}=|G>ljo!MV>7Mv(@md1C#YE_q%@n z+5)D=@YI6I5syC3C%=b28=h`pmWf9n=PSU(jdVX>+z6)J@RWjSW_b3335n-)jB^A0 zsed#)_;>pIcrC^7%mWh^kG@@>g6U{@JR$5;!_yN?H^Va(OqF=_{r(At=?H+}+>V|bE2#CiES&gV4jp@s+dQsmh{FnNY&HW;tr`4min;fY;= z>oLP~8JHr&GZV}*!}BGWS%#!L$&MKA*n^Q*L-#e}ro`@#yn#5SZ15XEvBr@wCAlj9xd^fLU*N8h(uR zSv>md8$G~;4bKEHd4^{Rm}jA@4y5NPs`76 z4`O(HV9La!9~ZBJnQD0c0}~RDzFk*-j$_C0EC938@azOL$ME$00&AV&nF%Ifc-Dbg zYj|2$V4oVE31BJ=&)Z;@86MA7Q%OqJp3`W234@#y1I2&UHXEC;h#Jo^`6W1vA6&bp96C65`SOa~l}H;VB1GBp!Wyc7s`9c-no3K8r_R zH*N;A*zh>tQ3#7i@6XR*$_!8Q?{U9uc&-K$GCVWDREb9)=TE?_H9W^v;#%uP?)NzL ze9;@sM#EDGCS5#wf8GbP)$kns1J2#z(Z~5BFg1o}ZybIXHg0j8Yr&WX&UQuaces(x z&jaz*@H1vd{&^rZm-FX=Oc*jQ_m;7dp9E5GDnNfS-*mo9m4vovKm6|}oIaDO`=<~p z{=+J5m&bVWk8?gF4No2OGno9h4w~yK$8W+s{LA^=VA8?s+~KI?|9NQT1E+Ervjr9J zVU>nIqR)E{O|?NK^)My_6<^)w`JJ}@FF$eDX+rK0=cj2F;f+gYBw`x))N!5YY(?D| zI*b=2ul?%=tL{HfgDH_2b@&V?wFb=oBg`l=e}SprgHBs#qFld^`0vi&ZNj)>G}^ib zOx$Sw>VmF2!PL(Ur>*Nyj^3`9z?2znZ2;5EXlugvoOMoH&!DZtk21ed|B$)am#cAt$G!*${eqD$0 zpIR^#(w4qmS8v9Zu+i2_VCs)Sr>!8&joF0!9lr%v%hFbB)T6ik7BGE`w$_2EKf0Z^ zM!<8Fw81BP!FXQcs-A>$bX#q<;@C0T$^cWpZa8gqP(9Ws4IPKxpBb3?N*Ja( z?7*vYMyf~{rYcaWkS#rYRHBNGFid@piZ7RK>8bb{GEDVBB`7I-MkS@K>FMPt+UNYpO5>449z`J@koF4RDm!|m7o&3o?B6@j?ZRc zm}*{&QI$D%4N{TghvSqXPC-DrAGFbKF1yqhN&bd7iiJlu%g<+};l?oYoubQe6 zhN*V{VjfBlFH=)KVVIhONP#lP)0*fl?cPs zdQ=kR_=+5nXjEEldVma5eNd^9pE#kX?huBlrKltsZS53>sn)os56e{?=G!3;j!TX( zO!=Kx0wi_pAsLTsSA{T4HEGb;<28DCsW41ULB(UF%7kI63YAnN)utgCrm|7-$c)lQ zW416%eS}JaF&Z&3WSHuKiciid1sFq)cjVb5VVHUem9VUb`rN1%hN+a;#-17@HCh;^ zo=3$aM+#mpR(co~hN)&pVY}o=(Nk9m!_;(C5^{KU(9h=O!Z1~XN|KCxDS8;WhURE? zJemwsLs1De3{xXe2@d0S>F4Do!Z5W9l?s`? z`gyrS92us3sHEnyE&aS45QeGmQ1Qvg>*wVQ8F4DdVVLUE1S3C`J=D*z zMZz%kCMx+dhN9|Ivj(xDmP^{6BnsgqA4!_>8?_+-xOXV_W7Fcm^2Bb^79hi##Onr&(h()e_oKABKKL8UPt-mu%=IB## zEE}FaV9E{8bTBgvPZ-Ql48uq*4@qzIho`qnl4bLVp za|}<*7L7f73{MW2V#6~ZOzh3>`~5pG3k*+UORQ{$X8@Rh;h7Jnh2aTlrXB4NoPQJ%;C$ zwz$tVJlBHpyv*~UzFm)ksWdzlV44}8mS2&4H&=S@q-B%p3j`N z3{R6zxc)Ibmx5Vrc#0gx@Vp16%<$|7Q)+n5I|t`(!!sI8(C|D1X074b2&T;NG)ryl z*=Tq&!7MX84}#fhcs>GCZg?7=i*u#n=?NxecqW6{Z+ObUtTa4-f{7bzoG&`#`p580 z0MpFyyaHye;n@x*$?znfhid@C;{(&t@GJnc-tc?_rkmk8p$q1i;mHKk$M8H1rcylm z`n(2Arr|mIe9Tqx=<8}27MLo-^97hZ!*fDc+zT6?E5Q^Po|#~349^NMMTX}; zFty^*$GQ6jIL8^D0xVIIe#iNf;kBczJ49~4#e1>N!m==a-7nnTp=;L!{PuyD>o?I|v49_!Qx)`2KVDb%5 z%Zo9`3{MW20>kqJm<+?S0ZgIcIo^wXYIrihOf@_YfXOvHtHBf*o&#X=4NuogaIJ25 z#)6q@cuK&`G(2I4F+44L;ap&Nt_L&6@XQ9|H$0z%2^gLxz0sE8xfD#P;VA-BYj)zNdNQ?*eDyjotqacswH;Of0|`r$!$3l@|2ghqgRP{5?nd{CPnbyfYiQ zd^~Ins=)ZqqDTMSMd}q~_zv#`RPyl~J{;+heyac5!Z5WLm5QeBZC##0hN*{9@%_zD zMC(1Q6o#qfE78Ly?rq&73{z#Ogr$f2Y-w;68K%-v@&Cyl9&_0Ea*oXrhN1KaXul3{8FDhVgBt=rWeej^N1 z$=6^dk&!P_Q{#nUY8fgXX)7`kh|Bxtao3Vz>RMEM|8V5>)N{fxwF{L{EN5@ZAuUAO z>V6#=rtUx`RoZe=(POwy7^af4aK9{VHFY*e9vt~m!Z1~eO1{jfmXdIuFtt}0rh4_q z{*pD}bg&Y-xiAs$e zm3k^Gn+#JQp^|B|)qEfsrt(lpHB#lmFx6xbjvblvt(@H?5ALu2!Z7tDDn%VQ8aTNq z_k-JnVXET|xI&Y4;|lEJ$ePHuCJVz<2o>L%Y%3RSMbC}695PJxLnYjmDg9l%2ZUj2 zB`T@sx~F0XlVPeSD*0X9Q`3cEDuha?lY1)mMlwwGLd7p_;pHRc_we2;3{xvn2}@gg zD()sSOkIYG=K}Wd1+*1er?|gn3B%M{R5E1@_0$PIGE80TRL)~tSD>xPgKfBLO{n-yBTxL z*sg)XFjb67f}|qnu0zMLQW&P1kHL1yXy_@QFiZtdNji#Ss9%{^3By!}vDjadI{Y4u zdwGH|OqHSHP2oIjuAZ0o3d2;7aX9PA^@j63yXe=1?-Pcp&rwN|V_CndJmD5HOl6{y zDIrqLS(P(r?#v^n7qFZ(K1TsurhKf(dP)|K53{z`RsgNEXtB&EZ6Ui{u z50$WthMsy@7^c>u61b4twLl%igaR^5U4=@8?5{OQMUFA<1HUj#twqIi5!-UUGaG&W zil0P=smoCDrZM$4Qju|FTML9?sv4D|Q<&1X>-<~EFja_3QX*3u)a_a!3{!EpVfLQP z)H1b)nZhtN8WeORlMx&B1qcKt)!&il2Y8NW0va*d<+seM33{&N(1SFNA zrp}y7hABTP6>?9c|K{{>gkdUi8s>(q*ypP2{3v0VDsw6_hON{d?iGfq9(SP6vcHnl zRFN=Dg-{8d&b{nKD*E_pbSD|6(osoj!BkhZtukSlYF>o>-kzy+wXI>oF!ektzBWuX zSKB(}E;39_N5wB|)LClkLt&WO?|5Xp&QnvPrjuc+0+pa#RrXR-C*MtmsR5|?Bz1|J znlB7f-=UH(ug-mrB`|WO!u9aX8DyB6fJ&;&jVsYs^j>~f7^WKDgZoDa*u%?_ir%iK_mN>L3l*QtjSgxL zUlN9?y{LF3rS~vxCK;v*Q3Z(@~Y!? zYRWGRQ~#k-(~52BsfiDfVQMof2}Wwb!(^CRiHb+osDWw^`#nO2sWqqsWHj_1UhF5s z)GMfD8l%ziQ8G-Gppq}!H9_59C(kCs)O1t=vL5zPw=3o`GECipN=Q}!eKb6C$S^e( z6`#!cyU|wUPJnB{8ey0^VJ@x@WzIYAJ4B~$6o#o1RBGgG{vc9pA@b}uVVLSN4}0)m zzUJVJVf5_1T^OdyQK^yZ`BNg7Lx;55@NqIs^+F}pxOccu7^Xf#rAT@h=^dJqEo@Ru zhN*N^lH}bAJvC1lrZ%BcA#GJ0(n6%Ic2AIDDi4*we;h;SU9-r5a38!T3{$nJ_@ym< z?Y;0xGE7ZHB`9qS0uZvcL4yH^MO0d;yL)N$J}) zR2Zg8Pzg#8JEDh?2gh)SFidrL3dh$TjyyiPpp3>eVVGKjN{zgus;62!O@^sFRPrTt zE81eeBG29yhN;+vm@U#neScji3{wkG3I4_HDp0p;moQBA2w*Q8sRxB&Y6B_(d9Q7T zx?Sy_A;VNYDycFW`u=)P7^aSX7I*afxLwX_6Fqwe3&YeasQ8Rj>~mz8%0eZ)mu*c^ zx9de=nA+obLLH6vFOp$uG%A@5*~4O_qObJc5QeF}sMJWR z2&w4py6hz~OwB?iDDRC%5{S#53k$#8SFjav{z(}nLeUPgMxRRN8AeI~>Cv>Z#9!VJdqm z#>YtQ5QeE+U&j@Ze2PFH!!5!v)vpX|U1#nu{q@7AgkfrjQ;Fwx>1}1dL58UiDi!jM zYA@{G$kD>R+~iF%OkIUaQYzchQ^mqCRq0gZo&5~8t=4amVQMHU`O=o2S}Y7xRZhid z>%3)Tm?}giWVE$H7^dRh#*xy6qv8A{-slxOQy8XZqY{vJ_Vv_v!Z6ihIp(~y)f;Vb zFGZdW6Naf0R5GP4J@u5Kks#p%X5Zyf1;;YY#vZmA#3BYo54 zTQF6Ir}YQ;)`sD^8BDd|c^yol;n@eK#_;t05Z_8LJdcB^H9XtE_zlnbEAXu!!*dsy z1%~G{F#8S9X)Ez5cf&IZjAx1aet#28nTvq7@jF$HX5E)V48_1-sy%sxLv1yjN{Aj zj0KZqc-{e1V|W^`#y4ceqmR!ZF#8S9%V1Is&%a>e^4-^jt3Savu*9S9_xWI&8J=Ij zq#2&HH5fy~^C*};;?c+FdoUdhPuoxN34g;=0H&MaSpg=)@HAbEJ{z7Jz+@Vp7aYd$ z`~fD*@Lc>EzGZB99t4wZcw#@tHvtXLG%z`a=Pxh?hUbMFEjXA?J z4$LgWvjR+>;c5CMzR6{HZU8ezJPES)I8V6#ECy3zc>V-4RXoo7_>l)az1QJB&hR`6 zW{!CD_3%3|<%XxtSGax_kA9ryf>~{N7J(@-JlnvmH$3gv<9up(#()VMp4Y&X8lJzv zR2!ZPzs9~0k3P;tVD=cERba{uPm>KecjIL-XD=M-+V5&Gs}0XQFbRg|2QcdmPx3eT zma*Zv8BAC_`uuqnOp4+81I$*#bHPTO;|$O3V5-EU@2^#0yoRUgx40HHJOjaG7@p_A zcwTY8_NxYyZFtWA4s*ls+yN%n@O%s=&hW&2k2`w9(-%y<;dubeRKxQrm;~|Y*DVQ^ z_?EHZ=?^ARJoczQ)_t6 z{t4HRhNl3G2X7&{t@H1INjE&6%{T@P&!u2849`Pg5)IGSU@{HQXk3NA((W-bIi}U?lnAFV6qI)Q($t%lMuN$#4}zWZgtu+ zJZEjgwYqrp*AFLy8Dn@p2ICixz8=Q^g4c))&oyA?7@o($%rHDZfGIXSXH=ojhGz(v z1%~HYhcP@`zy!pjpTF8|$2G0t8RamB=VdTuhG!?3pm_BC)p-YA|1mtbfhjXQ?}Axt zcw&CVxykTc4rZg_c@Rvw;i&+#)$p8Djcpf?ew{D~OpW1L2xhI}*$igC;c2@Q+b$mc zcpm{KZle47;sr2O;?cM3KQPS%)9~D|8|OIj==;3{Opf8%3C1fPef_!Mcf1B- zcvM<3_4V9E{8iGSlis=o~d9m49_Ysu|b{(_5QRvfO{FkGYw3< zc=Y|g3QVryIo8v}lPDg&KLf$!8=ggAk_^v&FjEcBbq$($QpBTg*E}#Y4bQh=x`;>L zt~L#uc;*R;du&7hIkUx`@t$O%M8zXu}wTV;?c)> zDwvgqXBC({@#y2+{ir6M3d6GmOupf1eRLB~rQvxTOrha97T?gSGCX&KDKb2Jz|3w)4JO|3jKrrSiw(~y8IHau70 zvvoo7==0|@FsX*;>SHnI#iP&XbzssAPygdE=f$J+WDIR_PWP-^tJPX0B7LPtYe}l<0JXhn}!y66H^I!@L&%a=*49|7=hG>!Dc@fMW z@#y38FPK?|=Nf#cf4_M2@mUO}*zgE-xV^lHQN7#OeN`3cN=!*fm>-0v8kJHdnv&lg~_#iQ@9 zQ<$W{5}M?>oRG7@mvqGX`cF zo;hGz7@qB5W*MG~@ICSr!}BN@zv1~AOc%q`9Y4owj(A$*dL!~NX}*8@2pF&7`5DYI z@w8Gs-SM6E48!vfm`d^J`@IrOw&6Le1J+f;GX+ep;rRqit>H;K3-{)R=T$JC*SQ|* z+tnIBWp=9JnF}V~@U+KIOPXnT-UgFscrx(aojHc*M=;5T=gM<%FKl?;0h218_Uim; znu^zd49_qy+2Ya1c^#N#hUXG|mnc^}`u*T6Fe?quH(v4bK~3QVq|)V9La!kIz7S7dFlCya8sJ;W-}P zs7p6IW5JXgo_E1y8J=Uiy+Nhdg+l&|4UMqcCzAaR}-0j0cl6+TF8A7&#{mcCs- z3d7Vf7vnB_4BOIEX~Hly5*4qJDi(&R6^>_q?C7&vpvK)bUu!G4VRjsKu+RD)tQ3akm`iZ)V5CxoVd{ER zJQLlw;&x$}dIFWAuelZJ7>&qY23U}bL9aj^=iBw3Byfo4xVvL^f{3_U0I z!z%GK`=h5W5{9WEs3gcSsHa{MhN+#Xq{{K7r@CH2hN^BS({-dO#SaK1C%cM~a@>Eeun~Ux{s(qd-p$6o#q!s3gb?*Hc@B zVXEy_I4WiK>ZwV>F!eqv`7(R;RMV@;Ff|Yr?^=$02X$sn5{9V zuf+-}X6M@<^hKWa5QgR~r*gCVwigP+)I3zeqnXmTeYr49ZA2wl#VfSFY7afvkzuMe zDhYBgqo=MBhN&s2_;2Q&f}VO&7^c>tlDVBd%usu{PZ*|7&%&&eJ0LxEtuRa#q2iZ2 zAU(BI7^XI%l4-PcLVq$$c~S8g+m$B_QxBk$Aa|^K56gvNstT0~Bh_L68K(N7Qe>p= z5QeEzR8lYCb$BlvRMAJ%55h1NcRfbF8&m%x6?sj8$ISV{Fg5K<{u?VfU{c@UQGgGL z)g9IN3lFmQ3Byz=D#0@M)HlK~wI3DVn@kNw3z72$+iIUphN%oxJnu54_wY7hm|B2J zQMr5SV_}%8MkVz{yZrRQ>#!3=W!L)Q-2A=RI40p*J!53qY>^Cj~o{n z!Z0-+75@nLR6rP}K0(DNJ=ELUD-2U@2V=WrH1yN}VVJrL6`!Q^(Fh8|)VEGWwo6Yn zx{(Z1=b(~mqy`Ja)IE;pY0g9aXj&``Q>#!37)R4KF!@ipn;YLmhURvtge0XO7bAsX z>RD7O7O*WnwM7`FPWRz#CEKna7ncdcR30ix(nCGv7lx^&jz?Zm)c5HYVVF8@2=9}lw)E5u!Z7tTDit4ayGBNa0?#-a`-EZY+A)}i(nEc_ z<_p8rCRCDUa7H<=ctr2zn6YG-YK=HY5r(M; zQ1O4sw)E6{!Z1~hN`?aKsccjNatE!Sccu%&)bprR7^wtib}vp4HAZ_LdWx~ds|Nl!&Esc3FA3eH()Oxb8yypNq<#{Hsn&(KhWwsmcu{27 z@r)xsRT!o!Q1O8bI;FjeAIq%FK{>N!@%kz@FYFicgU;$6bF^whDplVPeODwz}bdV>C` z`qlXjik*hh zkW?=j^+Vh0Bn(s6qT-hxUZbY&7lx_jsDz}gnQCgAFigeY;jF9NEzvc;dCt}C`$zB3x!u^hcE28v=kMq9^*XP!`B%0gWh84dk*rT--SDq$ zOO%nUR%Lj7oIY!yGLkiuNLG=Ys0VrbYojufRd6*kMN8q{cJ`p&GsUi(iH zMzXFXQu&G8@9jbf-~hEg+I*WGz)jvc4x0 zGqPG#2qRgYiB!LxzJ$jqBU!_UMD&S7{~WAPMzR(V$u+XpC?i>IZeayjDQDX5-j#oV zGLltJB&J@wkrm!OA6G`Q785C1BCXMtELpiDdfHj3jAZ>mq(Vy=U-ey4rI(MLE{tTA z6RFg!PTmr}q>N;JPb8vGHM~L=|897R*ABM|BUuL!saq<0lmAJc0+{G%*_-^zmn$R6 zvx(Gbc`_(TxSba%BU#@OsZ%e1R;wApNLDV9eB(Kg0%as?9FdZD-N{@cw}c{9L}JHE z-EXHB&7@Ja2bU=$I)4x;>zh8S<88u7R$n5O$EDA@KpDxZAX0ry`mE=bk*wuJ%JfMm z|EksKc3~tdN+kM}%mV+ab+|H;l~1IiDt*@Z%1Bljky_0m^DHf$(l-}LcI^FbJ9x?XIYk+9zlum@=k#U% zQW?oQq>`~=l=(`SYNN$ogQ+$8tK)sbi2LP4@(uS_Vag2mX7|%y9n;tSXl2Cx5+boZ zB56mu{|FaM%+&)QfBnmMKCqmU;et^ z3R9wYs4`iu^=AdxD={S=t|DN=X8`)HWRj^aLmd9#hq9qG9{lo9uriBua|KPw|y?Vn&gw@L4H zk}{HYiHq!$;MKdN&w54~$!hs8>eV`Z*3rsH)`dhOhSz(_NLHt(@oJaeYmzdO^%;?B zqraNZ7e=xUB9gyOuI%oLA4D0$GI~cTBU!f*srx|g+pK_fQ5nfP;~CuFl&s^( zirb0TtI9~$UeD6Y@5p*s!(-?BgyvVJGLp69bIk5V>9fj}k*t4QB|~Zx|8B46g^{eAiA41|q9@4;x8WbkNY;=Sxb|EmCx=y(Fr0P2GLrQb zk=ie%<$K{3Zuz`_3nN*xh~(GF*myx(!hIt({8SmqYPpd9dRx4{1I*G)$+}b-$@+>& z$v2YaR@!h0d%Y-(WZg=n;tR>TAfa6G68={i$?E+Qd&xPlXc2S)_yPJwOC5XL#m$7P0Uh8vKm!$YBE}5uriYM43VhO8r#1jjARWb zQuURTaEW(BRVyP|JHJX_yenD$dR?Q8WUV1mrS&?D_73;*v9AduS$7kO=;-zL^6$z> z)`^Q4&+khKTY6jmIb|fP{p+l3MhP!dMzTI264f^3DC?g&jUCAhUNYtj7Yid8h}vi@`tEuni-C0xQn-Z=>v$$FAV z*>drk?k(YVyjKt~l64M|st08Sc$KX9OKMoDjAVV`bRLqde(@B(ldSgd3L{x(5Q*f< zPBfMyWi!o`tYykb)`0i83g{_W{b|76Ls_3IBUxv^&uY_IvM#3q#UcLP$I3|7@inxD zzE|tddQBP0I^+ZPl(WQZlh^BUWhATphh!C|&#F*Hvi>4coiAB8(}3Ztw$hJ;k*sft z3Wev_=gLUdF`qG_?vboL z8NK0C%CpKyR)^0Sy?060jd)49;@{n@jAZ>zq->OAHTTwQ!heL3tY3-L8ucn#E{tTo zPo#R5c==0s#23Oy)`LW1$4S;k8Z`cUMWlwEzZ6EY?jut1h-CR&zV%naNY)iZvWzzT zK^e&!P)qxqBVPUzE>%XdPWhTKX0&0oGLp5=H;fIV4ewM&vKp%&?>3!uO12G7Be^7Q!&F~qHIv2T6kmzm@FcbV z^)yVZQkb?4(cp_POJPbT3gf?TydI|FQDNMB^zoPIY|oWw*?q$790&MLnEhdLuMo!X zHNfd;z1+1`{3SXwVIo={Kl24l^#kIS{GPbzH2Q_QUnz{gJe^=FX9*KO%ezvEP9K<< zGX8chg2^+ODXu(PFMm7V3lpuB^0+d`Us9e|VRDT={nqKs5uNsN5xx_hmcO!Y80~Wq zOrD{04osb)GXUx-3?JvLA;p-WzhS&8lC5G3hFnPxO+6Yr;^!skVq4R~*y^I>S)cQ-^`@mFw zB}^edkMBgnjD@KiBn%rz!b_OhFtrBrmh&>0pI|D|Fx^W>OmLs)rk;-RlIHiV4BB zTB^TDcoobtLuWqBY(r-a%yL5~djr2c*w8rzrq@*zFmz6Y8D;2 zI?ev!x2YRCr^1vOISiIZIKc@w6;q4NvOT0^IO(-x5eL+4zW4TjEBFoO)8KVh0)mVTW-W}6m~B17jqm@Gr* zW|(3_=Tn$$LuZd|TSQ6?opWKj7&=eFOf+;pf$3rB`~@@F&^fjlW7W{P8K&IOSq9VJ z(CLuTA~M6!83$8n=)49q+t6vV9b?1L838j#b=-+Oe$bZrH3_D~(76|8zM=DPn2CnY zr!b3D$A6yx3udaJvnRLh7psnc-8dd*MjD;&K*0UYAKC#l3RL`USrV-e%GtJ zPI2$mCYRg63t?)sJiG#1PV3ATk<4f0yy~yl!7w$3&RHo$3K2vgjsFq zdqv3U< z2ByN$Y0MLynY?|*8`SItF|ST8%xptvFif%PB=09OPp84mHFTbZDKT`ufthdUwBpI) zQq}RVhljyb8#*IlCaR9VUejTg7&kT!z?p&+Vbr4WYzK4>u8vjhRzt6a@EQ9 z_WN|0Iz#7Kn7M||=P;WLoxfog89MH%>Wqo$_lrp|wT8|jm^Oyawme6?$GjvXaDKT`ehAB66 zs$fbDov&bK8al1`w7~?`$@Z=r2f)lRbOyrAFmx`1sWNo#ag3o;3$xJB>9`wfxS>-7 zv)Isi2xhgR^FGW{LuUg_(*^0*jSktYb%xFfFj3XG<2FrS?dg)o-jp* z&PbT~hR$s;?!EPN<8Tqoazp1=n2Cl?#}177=ViY8`~4)CsfNx3m<-kNxAQ|VGYp-j zFu8_KV?K>qY3Ss_6dF21VCES*H^Gz{IxoU3Fm%?!%vBwKJMX+FXHi4vXqb71PB~1C zq4Nn$m7x>OVT>6%=fTWZ9shN~a+uYI&dHtFD-E3`FzXDR6FSp|s^f3x888u^?MXMk zzJyt9=yc(eubGClVj+-3bRag{OyyuH*?U?83?o7 z(3uF+%h0(Wrq<9|4Aalh`4MKN>iFBIO;^t9hR$IyYgH%PyI-6E6Ek#5VKQEjb=9wP z3rw-0^8`$ep|b*Jf}zuHANE{B=OmcPhR!6IL59wKFcpSQHOvG<=PQ`mhR)wGGgQYv zp7-v?+H2?(z|1ssu7a6w=sXHDTXp>B%=clc4V`r`a}Awc_GN7`bdH3XZ|D@kEHiYb z!Bne`e}DfM%t}M&bC}hJPUG&}|1osB!esqh=9j-b17J28Iul`f8afZcWL%YgzjzNO zraJy{_$y2sL#N$-oFNUJ7);dAnF}+@(5ZvzX6W?HWsOoD|GN4xOix3n?f%>cFm$HC z^fh$W!AvxCh9AKFA4BIun8}7t?*m!u44o>Na@Fzo`v#a%hE84&)=WcZDom-NQv)-@ z&}nxNXIeui1~XH2{QdrKm~um>?ZKSYRma~xgJEVGIuF6jQ62w&`le$Hoz*bahR$|} za5gq{y230sbc$dW8ansDY%p||!7Mg(TK8maSt#pa5AV69C(KeqXE01ZLuWEft)cTM z%tY1k_xqPHYYm;&hcZ?Tonv7(7&@21Og40$hG|-sew|+nGu6=9<1qFnL+3P@azp1z zm~2DmQJ4xt=VO>IhEC*g)(u0aCrl4RrvzrEp>sD(o}u$L%xpuaX)o^o7&=G7RH}~u zIfo%Ig@#TU%zV}HkLQPBiVU6iU=|oU>tRX^o$Mo6TMV5(FcS@(^I)nCou^@@8akU` z78yFn9LX3nbZ&xKtUCUErw*pl&^hfWu9sEE-(Ry}<{3IGVU`*?J@e>OL#G^OnW0k) zv&hit(VKn8(77I_#?bi^rq<9o@MydYovAP@4V}+mRvS89`@k4F<6+hrItyXe8amtb z<^Ipr>DT#_Vd@N>`(ZK-o!?;Asg8dyPkTw57B(_y+8I;&tN7&^WBbFF9S+yXP%(D@D~*U&lSB+ev;&QzEls*@e@ zJxBB)%xpvFRhWE3=PQ`GhR!CKVnb*5lQ{zzI(aZt4V_^y)rQVwm^rHBAJ0$2EHQMx zfthRQv^j;n$^VxG%$N#+OUND;soxU)O zRmWeRTVOIKrQa{Ugju3G{`T47RMt8}r!UM>)!EBCFN$HJhRzI_O@_`wm~Mv7N|>CN zWWVsYPs`J||6}MJ4AaHX83NPS(3uL;O?CYJ{y0p&q4Ob3@b?Scd;PAz8u4H9>vx!5 z>Xlq~A=?k&9#IM}Vfw)2sZM9Yaj(V=P%+G?6gtA(<`_fgC74n}XBA9^p|e8)*WHHB z;V=sfoe?nQhR)3}wW^cc&QkYhU}hRR|AASlI{rQ7cbGYb&W@*ZK73imykBQOm?}f( zM3`*V@vjM^VHO%X*TLi%IuF7uHgsNt>83jVcK#V=siCvSK+XWF!1Cr7)XR$3K1^gUK^=zJO_3E%UUUEVuPv z8#nx`&zbb8q4Nk#wxQGIEbb8*IuFD2FmyVe%{?MR=Wdw(hEA73>|ch?(=bJ<<8S9R zFcS@(J$Cfm^2Eyi3nbk2auQ5|j?c+ML$U}_AV4`6Cl$KO6JhjNd| z&^aDvwd(lGbFE_xo!4OIyqdnhIt}A~i=lHJ%sfM94NPQm`gQ)q;atlYI+I~C4V@QZ z7OIYa9qU-cJt9NrI+&$~&Nd?$8-~s`Fl!B+CL=imSUNCGUrXO#D`9#WI>($#8yY$f z!Spk9nvG(f8almT3JjeKVX_UKN|>0T^FBgX?;FtBtvH`On*aXF3em*=WCb(Lnp78HNnui7iN&5 z^EZt9+e1xRy;D7le$EB#?}pB;FiQ-bw_u75oxR3zkI2xO0#j<}tbkc*==2`T{%+`u zhp97k9)y{!I_|t0e>HCS_A{7GhEB^8&LoD;IGBtn>HF(bm^rHB-%tBo$QotnJP9*T zbxNp7BdwU!YwvN~BQkUzfXQAY>$6{{{dm?EL+1{da@9H1Tb>OtJq?{ROSy(s9e?{Q zhUshQ9C8t78`beYgZBW8`};CYDQ&9xwf)7MZB)mXC_Rkq4P0JhU)b9_Sex9xc_75JPA{vI{xysyp*wF=$sETNOk<}^9IaJ zL#M-Kw4v(w%QF~ej-fLPrbKmmdE4g;829(=(v6=zE@z&qj(_}=!z?s(Ho`1Y9e=&f zn8@5Qbe@4(qB{O|&bop#q@i;@%rez+_s8NdS%2PwsWo)=x{`UJI{x;V0khW7X>=9m z!#C2;iy<%@44oHY+Nh4decF|AroA?OzmJEBs*b;2wJ`3lYo!}MCtb~&sXG3Ce+(wu z(AjPh_fk~HzYmUv>0;=-1(UBj{`SeahBKt0a}~@W)$x~SIZU3RbLeEwEvgfZ4?@0^ zarg*Ke?w=NDXdYd<8S9nUBi6b*KyB5 zb^P^u3udCBv)5G4qK3{Sn5l-&7ch%e$3K2LTu&PsIwN3~s*b;255ZI#I;&uotB!x3 zj-JLEZs_~~v(C^Ne*=AC===$j`KGL6{_3-g44oHYiVdBED(DMC=W&?HsxyGqB7A<{=N8Ud*QK9dkH9Qbo&CHz zyG^H04V@cdG8Rj}`*r?-X=mtMcq{vbp|b)e$Iv-_2InZ%InGnRKOG%I{&~dSDoXiRCxScJ(K%C zhE9_^>5I3d-~H`#5lpe6vkIo0>iFw5@GkEE7&@=R^i&;xy^fp3+%a_Cf++s^hO$_TB82hRzKzGgQZ4ua@_4|Hsg|8D_ca`0Lf^Uhe-GI^$ths*b;2 z-@sHGI;U204@7nR_4){AiJ^1)ef0a=>Br%lFv|>`L+|IzraJz5&4pQM=2)R%)5?tp3B-|=sW_`Ct;?lP7iN+avtUW zkD+rX%tAwF*T=Y)F?43Z1b=bH-6P@+tVr_SLm=`gOr3hU(|GvRW**l&DZCureR%2E zapU=m1>7HWJ4veNk#d~;&-}ceY0LkUU)@KJE*?SX?IDrK-~U7+=Qg@zeCfE+W6s@o z^qBFb-G>ivz)z(-u`}eaa3+^o_T`z%L?eyk+gp<1XD}thMQ59&pNUR~$Av+so)}J~ zx>b{gn)=-zRYtOYAQC$^y;sjCgpsVPh~#f8Uj7oktBhpr^d$YBm)vJS1H%-cu_TX@@WiZYV*4v~nq{7|yu?I>P5Jtd4}ok^tP2&vaDWW_sH zvK~-IvQ`l()2s|{*8cwzMzSskaWCSDtrk*q%RY58W-^8TzD%1G8%L~`3mR+j{axL4O_gpsVVE}~v8E8Oz0DI-}s zJWC1HEBSBhNWIQdMzZcElBXlefA`=AWhCps=NP@ZChX-c;g!lr)@wv6jjUD+gpsTP zL~4qpmpkDVe@VUWQAV;>5UJAnAerK?SccvJA5w8pUug^{cqh~y5F621x>o?o9TBU$ZVq^7!VoX8-I zuZiMyo-&g46p_eK@fwX+c=T>mMzRini4k>yWF_xb;&r()lJyLcs!{2))+-}f`@PIe zIX`{Ycx5E(DI%34(`T($MzRj9W);h}3Eu`m@@+CX8gAL8LV$@5h>suoE&Be=~)n&0Tk~M-zqbKM|?aHuPs5__i>Tbs>?cmeAkw&nY8WzY{4j+VJpqgpsUEiDc=?!QUFy z%1BnDCCpQ!UdJjUSyPBqX;yqcag8Z+`7LE6tJ%BkU)mb}tdo?HtQ(0`XuTN!2`};b zSQ*LM`90c4v-~^J5M?CmJ|eY4WE}41-78lqBUyXB&luB_!?Bbvyf2q3BU%3@lBIKb zhlE;1vaWhCp6rJPcUC#=L)_~xWhCqHkJ$&c zzuqJ(KF6elS12P{&lAZSFJ70B72dx#DkE73e!`d^Cs}Wh6>mrJx?UN{`iw}`$&%%- zSI19i z_7q*Q51}c-qj#V(l64=Eh_+z|ZwXf^BUyWW#h#-574>Fapp0ZaP9#fDM0sR|OSn!M z$vUW())*lDb*R_tK4m1U+1Ip&?t1;aUir#M)~!V9&JwR(y|BUzUcsn)EhH*2Xf zlC}3LdQiu_yFV|riGNq3jAT7UBsN&a#&KkY>$OQ4$?CnDEFBwNy(PRu8Od5jgyV93 z8#HO;FX7&6gpsTfM6ynotX|#{KB0_c{Y<1v>ve)R>xl1#k*sTo1nUXcoTf*7ONY-}$WiIOqz#9;r zUcOlw$=d!$vI@oPOmEgT%1GAFMCvqag1277e-cKr-Y1f)S?=yZcpUbr6GpP0B2uEQ z;m_*)voMl%8<9F)qx@sO?JvSe)-6P8bdB-=@h0$t}P z(;ChAFL=qUeqI^LYP6pI($RY5}M%plQNRE-v+Yu`YT>1lC-R)%1GAJ zL?SKHUvd1djAR|Ok+Z12gW&hNMj6R^he*D9)w+V|OImZsKZKF2(~0D2z1)49c!NmR zJ<3Sd*F>_^%fI$^`BNCl8cifmy-wHCxo^bl31uYfzeMu&s?EK-6n{z9!JCAUtV@a1 zYL>rVuPGy0&Hkdyn&q$8DauIJEkx=xYu|YB_)bdrsWOta^WU7Y_5I2MZ`NpKB z5gi-;dS(10jAWfoB&J^edOf6!Wc^GeOTFBEfbiJJi)1!1l65_iDt%ANU$4)Vk*rRQ z(9sh5>vf4TlJy#q67}-eYsbdINY*(-qUz=Eug8>;tY4kZb~2ZXy!~}T6JaE47LkaN z^|LaP)w^kCB$gpww|ZOtc4Z{%TOzgU)ze$Tp4$i`SyPBqX)h1+W__-VWbM5zZKx&m z_t#a*NY?vAO4Q5WUwbwaMzSs>lB-_+{(4Or$=W_6Gg7g=wBhaEdYz?=WZg?7tF>e; zB`bVSZ>=(tb>McHkvh%VooTYI`pF6~Ng2s{he(ay7v&fDc;;7|=E6wU8ANikq=XyD zitiBOb-yx_waP_ykSu?_4s0QeWL-)ms_)UqeO%?l>s@6eYqw0sgON2>8OeH)NS2Y6 z)lwMAI)_M|zN6|dVU;qH^%s$fgX9UEC#X&QE~nJ%v{u4M)_p{(4wkHGWQ9-W>y(kK z-rLiLW8~cH?!bhzo>oS(_Q+xd7@a=r7G)&sFCt|}OV&cK*G)SJBU!t&&Wu!R%loq) zQ%155*^!aiSG<~)SZlJy{wTz$XNpY^LUl6837%t)S&4YxbQ$D)j=o0O5P|F}pWX$^lH9>23N zlJyjkSg~Xs7weejYI5&y108OgehNUnPMvz99(S?$|rM)I`{{WE2PGLrQ!kqT`?e^!^>g^{c) zh}0VMYl$+FwbLG~huRwc`BkKhWIawKrhDbt-f_528Ob^*O3UxpxV~?jH1fZDJ69RW z+NlHM*~q$H8Oi#cNL?&AF9c6@QpkpvJ419Y9WkMluelrz+&a`Gz8E!7Fu@;JkGSW2 z-5BvQ!^V$y3HkizP8mMN{rs?wnUQtx1iMX>M)B3i{Y=K+B$!cCgS9HvC!^nn*=^8P9KdMr$Op4xKjYmEne#zGRFYwO3|j zaT+g|FbyVKb^K%XW0<9ePP7Yai=lHqOs%2wEKH8-WNMwH1GC7` zX>$FF>vhR*FU^9`L(VU`;@?GC2yhR!)Ks|}s|VHO%Xt6@2PVVN`4%Q-=ydMI z*f4a?g()_4=E7vDj{ltSUziDo&H+a-##DzkPk70B>|&V7hRzExIjZ9y&;P(w7&?8A z0AmYv|ksGvCnp5~hctlat39W$2s-)6>v-3TBC+ zvjL`;q0_53Ym}i=29sy#ybiO{&}n`&=UzkSRG2zLXC_QPL+1;aO@>a#KAa&9o%3Ka zZb-jh{0k=E(Afaf#?U#kFKd*ca}7+?&{+&qXy|Nz40FfO83;4T(76|;r=hbNCT8gD ze=K9e(76nzNOk=C*DEmjhEB$DoL5yRo7FIWc`obWK$t;>&K#Hu)$y-~YhXqhI^Fwm zHa2uhVM-017hq-@I-6k144os7XYDm~u7W8ybgE%0RmZ=7H93JY8#>3r%r$hT!pt#r z-iE1C9e;mqeCgQiLuVAsLPO_qn5Bl!FEG`r<3A@H zauR1qLuVq)5<}-@n6-vZR{R#Iz3P2Y-8w@!Q>b^%VF{iot~$0 z9#b8Ezh4d0-_Us*CQo(z>ra~j?3ISjV3>ZYlbLXOj^EFG7^cY3se>s{9e;TaF5sSw zp)(O?km~r$vkGRSp>x{l>`jJFHOy2)r~5$mCe`t;s~5w}FmzsmnV>ptyzQKI278L3 zGYqC&b^Pu82+TY~rw(R@p>s$fYq+6vCCqF?=M9)ehEA(9+2d3v)7w6m!_*i$t6{2C z$KO5&oW(r{LuVq)0@d;N`;RcI4V~E8>|d(mFVB52>kOT5U>2!Prni0a2NAz9{W|{= zOpWUJ%d^cnti6U#f0$*4&UBb|hR!mWTGjF2hwL(#wb#&@0JA}L{PkJ{lWXW?4WSL+ zm;KAHb0$nLL+5^&3`6H{n0|)NSuyrp)$#ZH{V)ZF&i63cs^hQM!9%&0F?1%u;mRmb1XZAWs(Hgu-Jlo~oaoXZ*8(3uG{ z(a>o*iZ#m6nFKRgb^PtT9%iMXGio&Zsp|OK=L?uRL+7;f7#oJpVwg>a&XMP{pBg&V zFc~+c-!G0X<}6|8yaLn4(8;@iF=psI3llYTx{YB!HFPeA>1OD>4YSD5*?BB$i=k5l zvqW|L^J^7MUqk1-62_{b^DIohq0{(6#;WT0$KeSugAASNFl$xEfByLlW|W~59mkkA zbVkCI8ane}))_iK!;~312ao5RVCYPNDK~VM!fa953|(J$-9Je zi|Y8>=X#i0L+3-7T-EWn&n^>~JBCgSribeI=jqch8w{OoFXb$%I{xyU1=IBA^y~Z+ zFnOxuZ=c9zoJ9?t(_s3mj=wzj!(ur+XRqb_|`#jxlsThbcF7_P?65pP@4qrb2c6?ehgprJ-}c zB+iGb<8PlSF!KzZWiXY7PR=#l12J?;VCJZfe;mF9v&hiNoJ^Swok1`)hR!^g`Kse@ z=igwK8#;MYxRz0!Ebsl6a+uYI&N7%9)$zAar)xRe7&_x%mZ^@v-`|9ZRHR?$v#+D> zhR%gBnTF0AFtvuxu2VTn7&>EMRvJ35!sHk_ZLg;3_yXMWZ3&x`wDCL226ImXc0r-C)y&?$kLYUsQSGuzN< zbqo8Bp>qz*TtjCbOoi&?c*k>OI%}q(Q{WiY$?}fp*I=p*oda%VFHjx-dUyrQ5<_RP zV+@@gXRu}(I)h=B8afZctTc4i!Yns*4!n(PVMFIKn3aak8!(#;oz}N=4PxjFhRL`k z{eJN%%sSQa&#zx$+88>$?%-O+(3t`gHFVyC*`zxD{k`o>?*AA%gJCj0ly%;(^AJo= zL+3}BHmc)qpA+un{*R&a5KKEmr}15^;fBs&m~2Dm37A2K&fhRmL+9jKT!R=o_rT<+ zj(@&?2UBY3be~P1s*b;%?}sTfblTp{zHI2+08?)0xWB>>{aHQ(mHb=g+~O#Ih2bat zD-6Si77ZC%Ts(Go{7*1A@E*!MVp~ot(UgB-p&d-sC+_pPFfJ$3jY!>UaqmJT-Xii_ z3HpYz3Z0kgY|T#{%BRLkc9t@4Utf>S|5xlvSl=4%^yNlN{1hkbG?*SKdQg~0U}mQ1 zL17ld1g+}4TzTaAI3XgDZ(w>FUVp*NF}&K{D=qK5_Q61UDeiRuOfU6Ho+(0|1XE>r zxsjQ-1tYUfO#VKI8=1q0CjM;@=Qj$k+!foT9hq0Tdd*K9nbTe5yP$qe8u>@&BcZH? zMDkVVe=#!4bY!-Y#!mYBJ|zrV!}XwlWUhtjt34Q>k%>ahE4g=S^k5g5pjDlhe`NNC z>1TMI4YSzrx(Fs{dFSOHnK!}oS1 z>IS*bZl_)|m&4TF+$>?u{DnyLt@I-^^S;fqIufZ;o&Uwitk98}l{k>}`<|3AXpPh( zvk<00d(b~JFLiY{dhjmC)VD_Jk@+l4q2cur%v!^%4kl>%)FU(Veoiv#>twd@*OfV9hm;Xf6=ppWi{bSoOfbTo*CkXXT(9U{-Y-xu z|0+5iribCx^bwgm&Z|3K;nV5aFy-o%d|fH+{4`9S;nm_%nU&6KfY+-4W~O@i>va!I zf5XeIewACW`c03?zFah-c*xk2#65Y)Sw+S97e^vBr@P;R<=>aL_FP^~-GlPDHgtD% z!~L}$X0EoOe||N2j2&$Y+OT>H+HlThZ8$!m5ra0oG*bJ2s10|Z?m>A{x8WWz^Ncp^ z4pX!RZCJYnZTReFZFq5V8xD2ju=@W{8y-R3gYu+q!xLbtj5aKUDcOQHjQoNRqrFL^ z)b}M8$J_AIG2x59$Vj{@hyLH0%NJ>RT)kR{Co=V&1~XsV(7zs5!c5$PHjHjT8%Br9 zdN^W~@7B&Yx~2QqLy8QAz2s0L z6$29^lZj*{F%J-_Ixn$=ONd0ykgTn_U&tM*O1;`TS(+y4YX*PTAZS&YU*YpcTbM;3 z%DrXR!QtWB31;f_^ykBGU5nNCh4VTE5gjaArnZlB-K}2xd%gO>%rLwzg9&=sd2K`| zd>`Zqn2e94UVg6?FqMW^yC-D)IIm841tU!>#Wy`+da0NHe0V0zJj3fUm|#RXuk*cL zcf#~lFZbD;aDP1yv%v8B3?`Tb&g)Qg!sm%~Foo*n9~)Uu@*bJt)eRoMKm) zpf6H;od7e_@H!tRa%=j%pd2RX<`XZWxJV(9$|i}CaYU*$vbD$9jkpK(a(xjVU#`rL z!OYdZ2=4=qc^jsk(HCoAg7$G{X4X*_-y$r9!VjWAtc;xk24d#nFQ67_n616~^`<<*$aHP!ADU;w zEYaB%ZyRZA_w{0!0%JDa0uzkq)LvCEHHKG>(@EncSATVS_17`6sQP^!I>Fp=<;fr( zu79iNxgs;lvoB0>n({cq{xHEDOzkxmW|`r2E6fDL>p7TUE;}!G;ttpA1DNH8*IJm# zhF7x}WR*zm)fuMN@H!Tz!tfdi6RbbZD_ken&bPp~xV zuRNH!hF396utKJ;*DRQ|hSxhV^9`>*VS<%5b-lVSWQ{Vs&Vs2nyr#hfYk2B<&4pQK zc)ba;#PIqKCfFTPdu{h3?;RUn`@$?Uyxggvatlrc`wmOELOi#4?69H5iEj`@PQ@#$ zVUP3uc6Yh&SCw?%ZxmUz!xGQWH#nU$sW;<)^L0#ipjTib4LU*WOCptn5_Q(Qh@9}< zWQsIA2H!xL(h~v{Ntto?GkcZg@3+ zS^7P-*S;{>hS#Yu88gyf)m{V>j40>Tlg0`6$8?yedin2|Rl&3|yxwzO^<&j}xdv<< z@2H0FzJtkCuQo)({q>J4kKxs>T4sUsIs_eVyKnXy0Ml2!+*u<0x*4Wh8ZWtv)y}w! z^$t3V zH0zjiJ_M$&Y2y11BZyROlNh;)NNtnE$PywoqFi5r7O&!!k;t4wB)2ee9UD)iT35)e zeWIS`N?2cJ*E=+w=k)?ie;qC1S>jTDfa#fLv^XaFHEC7nRZJwjQsl!Fs+WIcPJ!ub zc)b7<^q2EGovGx;U-D}WOiaDP^^%i$l-roWZq);U@NJ*#M|H@TOhUOl{C`@obLUj1N#S?Ro7oxuP!V%!Cz#|$miJNS{veRyTbeTi@rQwQD~gvt9Q z@u}%Ah}8a^82QCTc1>KP8ZTyqi*mhAXCfsV6SMM&WFNm%gxxQYmmk*-^4B*XP@4`ermUGm;{50IOzr)Nldbz_}((=yhN_4{eavn^s zdUf!6#bD+bUS%*rpE|F>=!93=Suh3abr(vEg+GOfbTo*G+hZ`|CNFQuXrp*D{!;hSx@z zVD6;uubtjujH#EuzYc(@HM~xN31(&L{yGY0osj2Vq=?bW6&?m;bFYaCCB z!ZT$UOqJ2{Pr__4T7DBu&>GIG5U=nVV2^isuE6l>1Jm@j^jA{n!UXLs^$Nc)btz1> zdWFwgu6xR1vJ9_#VS*lXUioB&SGK2NmZ+D1^e%?UHoV;Ejc&o{{UveqUNmOJgdwAb zjwvc0F|J_{e}Pw?+|BTe-mN_jTfHacac$_{TMv)JV_=qQ8;0B1_16_JU5qw-2Bv~^ z=dk(R9;e}6uATF?pq;NBE?0KvUNm%E(#LY@b^iaJdD}<{>yC8SXyFn{yYzTpm}o;= zjV4lKWZkQbWW7%$wqxS;;2I*8(mwUI$f#ka@LoWDi`7TE63I)-I+aK)i5WwrDk&0v zmhWbm+OASl_kf_(FaF&t%1D|2OC&O%wyAHQF8n_}8e~lgKP9-w2h^f_dar@Xh}U&Q zVun}v`NNmUs?vHTKl3j&tW!q3lAl_14W0cVV^z!S*BPLU=!BnRoD37uztp)O%JKD3 z%Ck@z(fN@`U8}^gvFk^i1`VCll@Xn3M5;$ifBB!lc?G6oaN=J1F_AL41LGPa(s(I- zkre4pq|8u`!PK6Us638H^^nBKwM6o6kP>#Qca#6ghJ&QChQGoTrO*+k^QW9( z4V}R-C5F!JFmb1s|uZepQd zGd|}ox_bGaCEgQeK?*MsIua&W>zvmEgu{3B2f`GnmwPTZd;lB^v&it83KOiN&g&ts z*ZnXRhS!TQHHOzR7+v`{`y0(t_vZhBk@H6V(+KjD_}6`5^h}b1DS**^CxzE_FnUHx zp)(IgPfaNpcg~D$!8voza5-m=8F9&GXL(nM<+*%$oe#6z7(X{^O`VsU%VDoaVQLJo z#W1T4ukT>Aom2FCt1mc5(WkB-Qay>`#zxr|jE!fL#>VEKLmYF-rFcZ;vnSzdZ}oof zNZo_-xVjIebm6;L-C>q$UnH-+B-FnShgoOzg=@pgEoj5Vo3&x`XXwTZb!}Mpf9NxG z{iu6T9@mEMEFbRJ0+{96hW@!T6eeqES1ak zVe<8f@&CnDNftM7Tw6A2bd(f4>Fb|b3&(VDWYW*wKiYiBvl-g*{uQ7*Ogp3H`@saQ zk=m;Wrs=2t)2S5fYM30u%gvO?x}Y}c?k#sMlHJ^?=X}S!NP69aS60J&^zMCG-)k{U zv`W0(-PHIegQPV#Bk3*uC<)vk|NWIgGk3Vo z+|q>Ka})PGjJaGP?=OdoTMwR`$ka!M5vlwz@iPchLXk&YRuc0gkuveB*J-?pwJwS2 zLZm7wlINK3X;CtoG|J=u@za-!ZS7fENO^)5bLH_j**KW~+ROe~c_U1*(aUpTf_8RZ zvQAOygx3c!`G(h@FcS=~POGKAQhSxa6c}C$VI~`18Ea%DI4`#kgxj$rOrha*1WbkD zRR|M|G3RxN*K0D&AocREY)`?=HoU%s2}W;fuT3yThSzT2^WL%HI&cn z&9a|2UrP_eE8p0=N5GUBd-v^$I?gKc3X!NN*GJY8sX9Dy?>_Md*17`|BlC$=9+Vh4 zXf5u#cXzH=lK;t^7zq>mKeTt>L3x5!bt579eIhCQVwhqb3I0{$519GJNa*%oX=mr< z-@DI&DN!%~2)`Mo+VFY>Cg?%uwSuaIXKv>oS#8v-jZ`=3YdOpk!|NBAU~JUSCN}Qy z-aYguo()qk|K9xp%re8Pcb$wn=hdX)u2WKxBa30?7+(3zua$B-I6@UKEj7}UbG{L9qC-6cdu?%!Llvr!9zyKbpDMNukI+L@JY*=R=XDMDi9T>a<$N*hq@> zCQ|ZBA~T*yby8#wk+Mq?*XK8g20Vd;)^mpD`{VwCsdAZd%ye#bp6QRoP9$=Fc z?^c`&)5h=`4-<@Mr!y9{@S5;6OjGspUu~^}i5gx9ZIGGbye`Jel|K132BwXAb>N5L zy3d8_W_W!A6U;&9m5)xiUb}AOlLG4H-^~X&#_%eK31+wR`q=CB8cd$y^(RbU!|T95 zWZiIH{xY8p(@(wpV}3GBzTx#aOt2z3FLz>;b0Xh1yxxcDuU_qmhWqOmm_dfuPJhZ; z=e+!7J`|={z5L8zm{Eq;H88;{>bwfQWu6ODqF(-Xeh;S9@LC5Gtk2HtG`zxXn7xUU zo_hJ`*D)|yMfLW$q{(a{gn1zOyJ8M;L!CC7vJ!=i$XCMAd!_efTRwVNu z#`A{s?>Ohd)U8kav_+|l{FWG*OQh!4?P%R-!^->_k?6X_$TsZf)k(~LL~@gu!EVn# zoA#siw(ciwslDv~WXG>Ci;Z6H-l%0m z%R8^Xyrir^gPkyy)+%nSF@EQP9Yk1uR6O0z; z<*v=cyZP%drRwEhvHyZuYj_>hq-Dc6bY6a)b73Z`S9sRCR=5jhgW>fqOfbToS9rB{ zI)A~G8D8C+wv05Lnf_Ec1SXg}sl8^vOg6mUhRHI#BHO_5Yr}(i;a^2_V07j-%B7~^ z9mK6#)myM?WsH<7#NlI$Mhw3=`5ov;8~WFACa1*NC}bJq{wU{`MC`xtao2Tq-tK`n)x3hWhoAy^hSzAA{)X2~m|!JwUj8eEH(+KPUh82B4X>O` zS)-hne{2kdsWiN;=wiAUff@MsLA%Q7`}VTB~5@ z8D86LFMEpfIv6k6Gx@gRl>^gPz5M6HzAy_6uOgUWZ%SRSt6}=9m%m>3!YnepUW5tu zxYYGp4l_!<{Po%dQ)75#XW^9-v|Ot5^Pw;igK=lS+ATQy9lZJ3Z^#8BE*QpdTWNR- zaUfo~`=>wqT?Z3OI(dXvQPTyEN$HA=nOc)bpXS#5ZYg9%#Rd38f4ydTVh znXO*_yN<8JtTViRf(iQ6c`+b8Uc2ttGP2O{Iu<5!XZq`}aWKJXabD%#HmrnMu3r8& zd>f3pElIJZ3BaCBytv!s&m0MIM7H)!dDfMuz80?K_oRg3(YpqwPFvo;`nBJwWu%?a@~6TCt>L`fsVVGrEzAb> z3eQ^Ch6`bG46k2cf_6?_uTE`SMmDLJzg}m;1=k;oy5k$WA}QzBb?^uD3B zNZrdn!(?d7`+K>4yOxoDM#~=$6SPL^UcMM6OTGNPJO`%0@cIxYXy?@R`U|Fwdim?M zH~k(nyiSJ+dN6gpCc$K@m%mw22{k>in!gNzF|CRWiFp~|hS73Un zPV%Ue{#pl9kwQn9y|TGeVd$I%GuzN{qc^q%qxV1Y(L26$+=!tUBz@*561fqtXl}zZ zCn-j6r7Lrn#OG3~T;$NiPw1~DQuBJ^?{eR>J!ADHiEQn0cn0o4z1-MX!ypXb87YD3 zt9=n;{75e~3{<{MgPEJ6FNB%{6SR->n&S0(0cMVR<$Jw8fSGT2t#)4ZE$_VM?Ynr4ceZ2rCOTGN3i#uWJ46oN=f>w22Zr=$nct60jQ!jtLT6g5Ep2kbw zajxDCA6%L=`XQ-4@{dE&$>QLN_)UY-dP-AQ!Zc|NSubZ=qMf#3-)BDw7)tAjV| z6J;c;S68>LN>(4T;asuQD8p;EGLqH&0M-p{4Zqh^Wh5(dAbrtaT4P^tYm8P# zvX&6Z)2x^`t7i{kBve}RlGU^)CDbhUZeX~C7b_!K-w-J|Tf8Qa6&}3<4i!eSULsO+ zj%4{qZ}-E5k*t|SvNVgMk*9>2hYKTFml3Jc68f`#R7SD}^`gv%SB)}~b>tDa8(s^Q zk*pp^va@A?ZeZU zhRzExlMS7H`?5wEI+ZZxs*`;3l)h+v42+>O8D_TX#Mc$qcA~Q$W~QMt@>rf~P#u5! z{0C-^p_6|c_lOLg*I}v*ox}RU7&=eFEHrd-j_0WcL+1gQ#fDDD6F6O{j(;4M!z?v) zeuG(J=nOxRGl`*71G7wZ{QY%Af1VsRbRLDNHFTmU@!p@Ib34px)$zAaZC0?i z1os@=wPNs+u{s83o$C1O^$kpxp)>Fl?n@XtZ^2|6I=%8K^OtgO$3IV>fazlBL{H@^ zQg!_E^cI*NhEC(txF@4J{`R>9CeP4W3llYTh7RCK9z*97m@bCSi3L2lXXsSJ`Wy89Vt&2sQ5UORyZJ(bv%*S zAM)OWlOE=DYSQam70Q}Pq~_Gb&%*pG6j|c3CL}VeLXpOW^x!jz_1YyA$t9ANROaJd zBuTl5NLf;Ot|U@5KT-KMB9ZG7%kxwy@-C5z_Y|4|}y zOek^=k&2`~EhQ33$|@&Pb!}pq=Mu?FDq%H|Xi|BW5y?+d{v{O2Jd5-Edx<67i%7+i z^dq59C~Gj0SW*eEAd>fKdY!vNSqq8O)FhVYQzF$yd43ILwK|&?`!G>wZz6Su&M~2^ z7?GNdi8EzlC^C~sENP7Wi%6L z-yIsPTK-jHVp7)De!ucA+=KOyQl|JT?f-@;)HOW5&ILbwd_ z3~Obd!*z;!CGWZ7cNol6!>bS`SZPyxT>?{Nc-;Xr!|-|zCRmMAdwmL1Y>HF!)q4II>YNFnBY{9+G{z?Jj3fxn8kso}K`OmL1$ z?R7lN62og0Os?T|9ZYaSOYQXt%u>T^2~01;>nE7t?3dcB<#6Vy;nfYMpW$^POmM19 z?KK)^rQtOdroixe7$!KcIdefdq8wd$1(6TWy_4HGlGwkwizuk$(k3Fd6)@?*H7n2cK4FZLxI?x6PPvsb2R zd3mobms^y<)q0KGCKsFfuP37uw3sW;dGuAcq@TNgTnp2)R?6eQhJ6{PE=_ry&IXvE zFPzsCM8b9NQp}#BUjDkD3A4%Yng$c}a_V}$>KOI%*XvK1jJwmHvE2xdZNUida-OVF z!^d8-Z}@)ho%zip(V}2vruw~(JucuJm2@xeWEVMIdfC+?K3b&9FAQZ(3q>9XMP4Kl zds=1+!jVsjUbmw+gA~8ef$WT@xk=hN3_bSJSA~z8!OBx9e6UjBa-VSB0Ad;V-*oOZQi5P9z z>B7ykdK0O=I8kS?V+@@sp{)Cfkw=MCCo!)Ri6uq82u0SrtR(mC$8R3ln@DAnP9Gw*&&hteHFr3^88(vFc`Wjxp!vs4>>U!;R5qFIYuU;_uhSw07U~fw8 zRR*)v@VXynkm0omCfN0y*RV)10{D{fS^=}NR>np)KM9Y+CKvNGl;O1}Ot23+uM5%H zHo+zMwhv6?>-1hlFr|jq6qsO#P3`pvOt#_mp3^bBeuW8k;nZF`Ucz`byn4Wt8(ycw z1Uq$VuZv&`46oZ^W*T14!34Xx^YV|4WiTa%*B>x*46p17awKVuh(gg zF}zA)f|Hf=a=%w3>~))C)XQJ5=U_G%UZ254wGG|x1Py!r;dIo?e+J0DoTtU^Nq?nz zBuuq>wexxnfywwr)?UBY)i7Cx*8?yy_3GjEdIhGPdimS17AD*9`UfUBi@N@D=csTS z?lF;eRxf|O@?g3cUPECjwO;-lGrgB%KvR@>j^G;ar)wy9%$D6R#q>5OKf#!|4XUJ3W5SO1w@C zWt~SPmZWpNi_DShCg=5;Q{Ky6Wjp1A_jUB*igECV09m**4yHXy1-MhoobQa|! z(22h%CCVo$Bg!L*R7t!rd zS`ORp-@$Lfly-_MKL}IFebInP{(T0b^NQ2CR2Y8=zkrGH%yyvDUd!UX5uI(OFjFoT z#;>z4OxdUgre5WABGpq9BUiYHmN`BO620z%$$K!-t6r@Be^Q#PGV)dDX8QsoU@sm{IEG@2~G+CK_HlPNmH1<*(P_FvaTSuU8SwRKx2= zm|!1t_41$0pNA<`FMqwhgPCD??RdTHu&LXyC(H!HYcNcu;WZg1*oB>!zYQOOnW$d= zHhdpup5e9LdDZXl&g(eFR^z1c<^FNvH0}hdm;bKg{V)p*uZ=Jjs*`*Y7S~;F;A%95 zjxdM9R2n*G!qgZ#m%;=m2Uqu7sA>3)(6f$FFSntUF7hSyFN%$@qPR%)+PV9E`zX)rm4*XuCBnaz29KxN$Bf#lcEFf-IEhabkr zn2@{Qf{x*JB1~}7b6yBWc9L}cIss;Z;q?$qFT-mojGndX|Atx<^^k9xaIL4OullQO z`APii0Wf+USN~jPcsvh<(NlMdzZfzbMz8EroNe3{YvmSPu@;=K@0(AUu>by{ch0}Z zt47}Q4R=+263d9g+N`Pnz_;ee=joL?TI_5cxb5>3jz@O?pT5qEKWJkyz3vJKD_LJW@m?tNuPo zv|;W)l@!^UCu-MWf8!qXvYSnAhYg=X^6z8^(b?p`m+}BiKVvri1`~{p)Ltjt#XUX4 z>t2`w!)qN(Fvgr07tRS+>#pAJb=)jI0lHFlD}TLa!Nd%&pJ0Nqn%e8w*{p1a*F7-B zhSzT}!I)3&b^P62xfot|!%Q%|eufF=PHL~d_i!>dyk^2oHoVrt1amO8*OB+4V|d*H zQ(<_mgbC(yYOg~pITaXQH^a;}yuO7A)`Zkvhu_D0C5G2@n7M}68kk^habEuSIQ}1V zZv!v&nE(HOjzVl@5JDI_t&j|kgmz5|Aq<5hF>`L_bPnfcoHN~#H3(T@meATTR#dw! zgV?Mv2w7pQmJkL>Z1y`=h;7&J^`7f~#`u%8vF5#%8dAB%ZKkhLK3SL}R#5@fIWDB-Ji%uyf_UFKYQP8TE$l40}w zm4f^hByRHgU(fuHL0z>xxkc{RsA6v-W=%J4$s#7zg{S&3doiF}))iZV86l+uPdn^XU1|%KW11yGu7BCaq&o zEBrbDNPv-wMTpr$ot3IHox?yfj9f%9OYM6ub3kH@{0$_;$j|o!L8-7crzzT5R2V$v+AUtEUIpTP4Lyu@=+VjDu7F6@2ohrX#6Ti{ zwp$|!l4Y&Bfe}@U!yON+#es`a_g4G<#VC--bM{@c8bPiE39*>FL1K*j1tiYMY7pl_ zyUg4D3D=Qab=B{OgQObW_Q|>BA`t%#Hn|Zb!D9Xl;;@)cL1K^CsXPy1?qy^Ik!ReP z+}ZK=IYs(|O7p*58TD$F_UiI{i4q)w|M?L@nbn9xTqkGZbE#ftmMA{^y@?oaqU#xH z$A|UE?ObalVye2)nvR$u-Do|67&Rx5)|IHVEca%_4DUv3OcF8OXw5;4nn_6OXV8*I z8Zjff(dzREo>5G6-G-+kM$J*AHA)JB+>98%(JFrB?JdLvy3y+YsGj{u3zKJ&<2=NS zF

XDaoCPnV9IhUhg1A&8ws(S1QV9$H#C!*p1dN5!2X>Ry$(U{M@?nY}WVrF-v^+&|0wW)Kh zj}SAl8?Ani;~B+nv`#^cTJ=b)_}$4#hzWJ0bsb{nccb+H<&#?(Nvrr>p%)NSZ?uY! zuTKz@>_)5N3BBf$R=rbfjyf7K%|@&EwVhVPEbB(=0mP`)oU~qsmb?q|IbvoRE!t7b z$(l=5TkZ+ooii>m~=Nn z4Me@3$3Ab(YE#u$MHsJ zkKK724tUDi_jYo}Cx95U6V833I5I3aW+KMyjXTNb&xkR*<%)v}a!@b7M2y)#cXH=w z-(}X0x|5i*5M$2lI`QhYh%x7Soy5=?tMfhD4}W#_4SP45GuFDcmPk#sskW)PDLUPp zvi=2Hi9zle8FfgJ;}yh&p3Nk5>id?#*JDzL+<=EuE`i@jzubYKleby zRCVD@()tBrR82|iw?(z4AjY>&U$-f)l|+oc8!h^MnG{-_O4`}1MZN4Tp_h}UmuqY4 zgEj5#HPeHw;i;yVzeIVG54&fYo%C|wXE3v+?DO2AMAo2mxe^Y>pZPg~7#(MeRP7)k zlh6OsE&7}>wZASiZC>SZD@v$Zqw|(uhL{qaYxnCfn{u0xD!dD5bDW!+2pQZGi#OruqNy?6^T_1$QZGyNqvbF*<~UF6XEa7#_= zq~`F@I#Zw@q2=3-R%|cIY%u%Bb}7tJI>xCFwoayB1kM^l!Mh+PiOUtad~&J1AU;$u zPkbP8M*JY29qgF%K{AX?q8L1ilFw%r2tLeikw1cXapIhhd6r@rSq+k8WF4jIZKtYu z4o+ZXXAmzYynN34fMggM3KGGO@Z@8Tqf{_ko}5AiTjD&a2J!opN0d(*K;n2vRmIc? zqthc{$MNDacs|vy5EDAiPW3yGG`nWCfMWKwQ~envaipCp4T3JWa(*8q!$_9$+24+F zo=0CCpb4B%(}EKE57dM@epkfA54Fi4kjP;+siK&pY%&TYcC<~-21(%2seIipq3E#&dXVZ>BxWo17v=o6DGzB? zfv~Q~iGPil-e2f8EWS4NS&nnY6523ULK_}nw_!Bg-V$uAX{~P#>l-=;LCfoYqNmtz zPW`Xj@O)DqYQx>pX2SN)Er{u7+OYV(ZT3L<$-2i7)8Djnaj(utOs1Q5rZ!BK(1w?pHl*JdZm4N$ zp4@J?;|gf`KkfSW(LSe`m+emvZSxXlHe5`jvDn$&w}FV^seTEPWuGuQA0)xZR6%YB z@osP5Sz8L?VZUhkHi*;9j_Ln0R+%ZfgmfpJ%Bl|iuVWBHzbc|?LE|ES5c^+`(+Mb# z>I-VsZS#e({&gi{yv9Gp$LRxz*>Hc?>&2_2mFrW|8V?1T*9OE?8m;19?Yjck*}Bp4 zAx8B(Y0(NTwa!A!kZ!a(5Yuyh*Y&y`G0IV-H5OX39iK!@mC+i67&%TqM2x2kExk`j zU|*;Fb1?FeM~_#ud#OC{AOI&D1;-G?Of==8U5-4?Ma+OM%0nq)h*9H$v@Qjab)S!z zW}{WSPhUaI;BK`3i5NBFNQ?F)a!ncbSKKEuT0NOG|L&eQuvE|x4eP(xHsg!mun$`Blo?so%OzVn&}Ig5BV|F-P8I_UsNJs z2Ofl1&%o>%RFc}LN5w+?N%i5!tB4shL0xa_QLzpt+=&O^)jNp!9nOVu`iXpwlmig_ zGsM&(HGTfEN5u{JQyy8wgn)Cq;tJ|N>BBx~l2xb*m7+(*gV2(4C&{H@y1i+{<2QyX4}d{i5*M~po7L`)s> z+8J-Dr`Kc*wX?T`c7EQp^VFv1`nsC-`tsUYJEBJgbud5l*ogqEcINNvSJcjrqx1U! z^r*+u zchyVk_cZ>g`n|XojjxpH_rD;Tw=?BLi0Jqb-%xc+M`hm4(j(`q6^e`$A!%z2lYF3V|V?28S+u%9bZ9E zq~EDeVAuwAEV|%=OxoE@5rjvi_27Lrp<#IPYTJhF^hDWAKC8aJp&3 z&gV>@X+tkEkY=Q@^Nnf4&gaZT32k_SX~Sr9N5|xdH7s(4ABZ_qwV}7@oJm1PAjY}d z9Xq*HBS9jkt2QW{k!WNDgVS*P4I>x-&dpkiT;@2ip-b=&ryBXhP0q4UUqB4D0oJi4 zV=#_%Y7Elo;D;WAbIlm+&javE?;&T**Yk5FC^lZ!q2}kYqsM^dYFgwzwHq_a-&IVz zy2zL@=U`%YsnP@q@!Ydx$Z1Xm};(zBU;;qsr}^+>{ zkIHw~r_K+`Sv@K`KZm{9^l1w|hms!?R4`n+h&F<%KJ^y8P9nz+jO5_t&^oqc>~z`h z?mX}J>w5XoQU%vZ+;fLy32RegzFwPhGnG|h^-r2tS7ZE;&w5l$!=JQ1^Mm^R*2%ix zUqJvlfFIQF-?n7`@1qIs1T0yVGpLB06;MPcNPl<@|+R+fjx``yMHJrRxn3J#iA zpF&=0UZvW}gXUFl3I17R{DVOmY=|80%X!4#Eh~&$Q0;<4?_?Iw@7^r|beeKY@!lb~TmU1fS>i`1Nj-AQDrC|Z?{+ow zXG?IxeduB}OUyuS(h1bd{t|lmDbvd>_{{IrU}LyB5^nFvb+zuVr0K7M2E@zq`b)MA z7%HI+*O@kq zbc83@w;kFZZf>i~kCuAu=T#ee(eF}+NC#rP_o~sPYJCI9a=epUD;-SNIAO2rSYZgI zx}DAx67Coz;5-bH!rv+tk-vbXt5sVTJ1e1>e;_8)MT~U9MQEErl++ws;)E1Z9dO=P4`A=%!K04?Vh<&ex;65&@Wq3l3TfVrF!Q&_7f%evmUy$9bA^ z<^uTU4?F;`$eBLl%of#&1yQsX^ugsNwHCaI#Z+EvqP4(p+*^FM`H6BzNq5Cxa8yw( za(K)*{1DVot|_!$P~Fse5icmMdP$=oR>COQu1#N;nB0MyH5G zAM#iR*n@Y~H>sjg3l8dsjkC4KF2pN5T32w8$L z>h?VDk9+7Da(m<>vm*aofd7?$=udf&e-b75r@!&fwCJ>G@#|WV`&B85&7xb*` z=dmL93#bOv7iVEOsPX;}5P*V%`r=Nsb9XCI!nCs&ImkAoar!81qgJBM&*M@hwBc~m zhIQ@H{PRktlvO*^*&ILg9Nz0owIeQioy0vah@YT( zKs|-R=S)2YH_q2%u=73taGX-8F*pl_k@F$-`-tD@eqV=hX>rJefS;of|c| zGRv%T`wdh|?Kh}i@*uB{-&=dNFLFiI3J&t>wfJ9omCjt`L0)yRv>^kuA&nq@=zH`L z+p8^@@2tIs_C{iXDn)7Q1qt&*-?s{BXUZz&5>S6_{)6tX&ex04=!@>w3or6gec?sk zQjprY7Sj?YC$!InIsL*vs13a(wBgmJ4Jn5mU!(O-A6wFfAtWN#6m4hsneBWVN`H|i zwc+P~)NSZT#btkx=i5tYLw^Zv_^fHeNhB{0YD0esZTJV%h7nv6sk3dE%X43}s`6p+ zHJ5@8M@%~BRm9{{`9Zu3?b+`fkQ5{BApS*m%&$RWjNA>9W#msFK6q7KlOeIcf}{+Q z{r(|Z6H}0N=y^2+)?L3xx)?ipUL8@wyh`&tIig2JGycRxQ*h+Y<4{bszE?w4&K=~j z1OKEw_6}C@R||4c>wCg@?A)SerFr$X{q?;1G2bA$Inulu!vEdPt3Fi9omUYp4;t@3 z-%pSCx3?`eC(yh~kCLi+m7epI2l+Wvf}fWeKR47|5|;T;8~*os-G)OEAeR*yr{4|G zbDcbop(D-oVNRfT)Hm^30r=4)A_yVQ6M2kMuYe-c`?VQfhwCoVj{OJ!g(_ zOU7f!KfT`6{@DlHm)m&&UXg$9HvSoo)|3a$nbAY_oOwGoy>fmgk7e+GS7VU&q9IH< zYR*iGHY8=5TYm9#?ZX%GN`}!`{>+T!<+8va*WCXm#wBQggh!pQGI;*2~3l3?UnkR&5-f}|Mv2qewOPayQ&*ZGmM z`x_`TBUK>YN9>r>K0~0fn*HP z>xF7(^85k}vz@6S&9NopG^OVRX&rMuILnOFIYvYOLyyyx8K-OU)-n2R^EZt_FAVPi z=}|EkuVCDQgT~;XkMtP45G(8T1rcft{vG=Sb$;<4QpkhG;0|~^ghn3LQ;d9h&=~Z< z_g#%a8eiKSqQ}>T7)1aD2aT^qZV%v_84BK2FKK+GN*G^(h#p^cZLQYx9XiwR;e^B! z%0HcruN~4DUw_sfYryJ4hw0_qtNw^tq5C~YDnSw^6`{jGd`opcM8<(6&qs^m-<{oI zxfwA5mTCb=gpsE~;*7jYIWzJNNScv8Z(^J>av(_jNxOujKvImH1LAqgZ855Z(*WXI zW~Z6~;(ykTxe+Ae5;e&uDAn_JswE(i7i{t>NNTxFJ^)F)Was=PNakgmZ1*?h{8u~G zJ|KQW^mteOPA&gOED5c-y68XTc$e2&^f|t9Lhf@eItTT)UY7^_Ltm?;`|teF<9+^v zdR^{^m=jr$zPA+_rQLD>dtbkxagj0OLavi~j}$iJqNSeM^mz%T{76!#OvsDwjqDpo?>J81-9 zGASP8-l_3!(7oeFBtLZTEM1^`XAA;l%Tmib|JJ=D-`6dFZNB9v<9R82vCj#Afz}AT z=K5K9MV0Lb#H8IAsz2u3x8V6V>{hJ=$);^`3`p`#o16&}`I}8@K~juN1M$3N$J_$q zWn>YEkC7KZ0*rhB5@X~?kR&5}tio7ka?}nd9`Whep1W5ioVjc^9aQ3 zB;u%@{Ux-s=Tg0M!0n81jo3SUkJd=Itx;_LA>keVj?tuJawXXhB(z$&msWl33P2+7 z+2nYT>>8V#1LFC>CJ~DH+$J%Q)R&5=IpH@T@iz6TXQj0OB!-oUcHN4kK$2+HJlO!^ z`^qLg-$ttMY_b~&{RT}w)j=S4Fs&0nJU^%yRh~&8K1OZ^2{7^qNQ9BMLE?;j2a;rD z?{_dCGIBgfmXSIT4_3zf8AlAn$H?6v0Y*|F5k}qvi8Jy&NRp9$t5F_Csz9=goC=bG z5A$s}2_*Jkn@k58j*iN$UpcqjO8Hb&ShZLL@*h0tLPLE!Jm=6H47b)hr^1qoP_oAm z6WGp9Mf+7B%Xv9sLM-M@5D#wO=UeP65FaDG-$l-h91Id-WHd;Mky?tuO}l)~Z6NcQ zf35GVs?v_>{XWQnHrW#-GuS3WK(dS+58^q_~I#8zJj;u&g_$3a4e z+2ke4=Lnnp9mIc>O`H#qijh4)(u@oR@ei|8jRc9{0Uk9{^h&K(D_W`Vtiv-x$~3uI zC4W6Uzazq>f`UWts41Es`g~`DS*fd`gVTKL&^w}Di}a4DAJ*h;*zEwA8YIEU-5@DOmV#s$ zSq0)bM!SVF%7XY9+3rKQj*$UGj0bPrSU93az7~^2n zlf`yc+J}Cm?(WQPw(0k3OGW)t`;e~KquZc06Myb6;;2t!CG@F3->34X19CkBt>GD= z+NW5(NH~O;gd3xrO!pnAc=Cn6P_Nnq5$#I@Ui~0Rs_r)uS zNse@5as^lok~zU9pMZEr+vIDIfJ;;l?(`AHDI>J|O0XW>2Qe`gb0CQKM3uA3=X4N1 zBQ-=$vely?$&+m|3nYyjG-@rNYTQfYRGT~wk~qyKX^_}hn|uKhINc`OWT1YAP5Og4 zXWC>aNFZR7Q$W&Z*`yvM!^jNE=WILXE)cIF+Tp4P$>HDajL+O?ljQ!EGl_@2PcQUL zV)~-UQ=Qu3J-^l~NN+g`+;h+M#^Ie`!Ap!rd7+JOfEW2tnaJU(t{m=u>w-Vm8kCo= zX#%NpbEc_R(s*oW6J0W^Jlemjy6cWqiX62O6U+8UX-E}4Ey&2QTXAc^C9e9IvebtQ z^|eC1N~kvo^*~wbRYHA@P#+@H#|ri8vebP-eU(tJ6zU^{dZ;Y*AwqqnP#+-F4;Jc; zWvLGq>dS?CKcVgs>XEY4D~0+pq261lZzI&Fm8I?#>Pv(=J%h;#g!%@dj-|OkeQsIm9-%%* zsIL|3j|%lfS?axo`fQ=TMyTH-)EAbe-b<*@6zZ#l`mcq0vMlwULVbo%Un$fhLVamj z>hyRC8%;+=h5B-#9un%QveY-@#uHa>7V67{`gozfqAc}ILcLz7FA?f~p`I>FeWOsH zDAX4V^&^D(>ax_cLVdhYpD)z=3-wG{>KlamSfM^osP`1=>&sGKFVsg1^*KU)V{hYC zcb?CdrM_0Ej}Yp!h59<7zNswrj8Lx<>NADO+M3456MB>b=TR zUoF%tg?dz|Cxp7EEcI1FeSlDJ7V0+(_5Nk4r-gbypPv+B8lgT!sDJr0Q$l_IUY2@NsIL<0l|ub(p&lqpeW6faF4X%8^#_G|by@23h59m~ z-dm{OA=E=4i@rB1(_!&>#IIYND{P#-MRXO*QsQ>f1n>MMo%zjicb z*5~hKsmFwRRH!c(>hB5lxn-%(5bDiBeVI^SF4PlcsZSH?^+J7#P)`c=g=MKnh5AIH zzF4T=CDfB;sYitRc%eRDs9z`4mzJg8EY!ye^?5>licn9LrQRsiM+@~iLcLz7uP95s zUZ{@{>a&G3l|nr#)OQ!^ z>&sFfFVqJJ^=6^oOQ>hdQV$6AenP!osBgp#WOrqBSD8&^sgD)vy@mQjp}tnAJ2>IN z25bxO$Bhx{J%##sp-#V6!0XQ&d$g^-wLSl3;K86` zs_x#R-pJ=+YbR zXJI`5($6^*X+!rZo#ctCyge!gK!aL5f9R)uHb11Fs_Kn5xyLA)KE1dUkLS}<8S0zO zs1^7@pI*Eg&q7cy^r$!yV+N0T6dd#k;)e(7PcI%?#P#Z1m5%f4PcQZ_8bhC6q^GKK zrS0U~Z2I8+pih5#5s$UxW_(^C`t;&SXc8)Ej|wc2MGkt#Bh%G09`5*R;T~%kT9?nv z^;m=V9QQeyBDI3Yd}Oi|lI1=2GI>m=%6lwFsLXdE8jWEc+G8oOTt2y9JhuYy&n@v- z{}McwHXb8CW6)ZM_E@inyZ4v}22&oRCqIjO>}3oq<*`xdnc^N>Q`x=8#*Ne-qwg+} z2YD<4h3-7|@Zs8HpCc2Q6?rUBg2$ZAswcbpHl!Pk$7-W(Q~5^$a|9(wX}8Ft82_jk z^3OR)!P{B;C*!_T?CHlX@sGDF|G3X$^((;})y5lsQD%VLH(>0D%WBFSSD;dIJ)rq# zho5V2K(xp~pPqi<1nrGq6p2vZB0|rhb?1#cuzF+KL_4E%JMqQ@ZwP^nFmf(%M zjW^VH{Mz5mY1a31-F>I;0Fq+pJs80w3q zrZ0vP5(kaJv}tEA-j@ZZdH&WTbvxIKJP1%5`b%iT=S>^t_5{s^&w9U|!EBssLvPW2 zLNFL^YYk%zo}_Br1Hb(dj)q%19Iqj6&W%r8D)c?lmJ<&is@s?HuNsk&6$ZIOvLkgWPg6OrqQ} z9|Pvif(Yf7b;d34P!ouQMy@kTkKB{@F6I_;R2D_(YUI*)kI*l|?~3g3{eG0IILLM1 z8P~mo{*un5ng41ty3yc84svFw1ZQT9GpE)?+iLC2g_9%5JFXoii()*cVyIqIk%Bkl zR`Zyz~g?VnpvDawlM;oreH5aei}r?! zA#b4Y1?Aal-f(Ar=i}!o~0lMGkBLK@l!9o2#{t(^o z&lbF^UQ)l03+kEVvZ686@39j4{WZVt_eYUW@qSO0(C^3O`@JI^zNF3W_y(86OXznM zL;Zd?%CjA-+t%*)M$_+|kN1fs^n2R$dn3wQyx*7MbG~W^avORE2?`GC_g#nRe#ghv ziyYMNubF)30`<=esUG_VzAX&45>{O&QY6Z!Z;Ei+g-iU^qo4Ge! z;;Zd^1<`YYiXm@csVyk;*7io!c%$>(MPmuxpwGEVH6DMeIyo1c8H)t(zumD^n2%P!ES?ezwd#5CkOC@`u%UF-*4h?y056; zTTQ>?OU8;EG$(j4m3FrWxM`H`_ves{?01?Iell}{+_R80dBa1d6# zH?>Cfh0TvM_@rbB-cT{*jSHcUX0(p2JtxGBH#%Q0VkLMZX}l3bX?dBc__RM9f^S_Q zNA##zg8(_k$Qwai*1$)T5YzdbFsM$?32`ZewB!wc3EntkwDtzRWTO*r?0~5fCsQa7 z&3N)4Z}>~_#>2uJ%o@%&@J6}>Z>Sh54+c>|nYXq#W*cvGzFy2O!5hAQdc6ps%(BbK z8@=$26UrMi5wMeJX!6FO!?ZV^6z>zDd4qnboSfC8;&3_G!O0tu61>rLqV~o*q>@?D zys>8q-UyZ8jWxy_>b}|}>-+-ZPS20gGIgErB`BsJVp47ls)%CHNQ{xw zK;n&d%sG_L`Dj1H7k&$b?zuL^WX8BLl(91%B;8G_I}wwu?mTC`BT_Xb^?v)KuX6e8 zKeo2R=NN~Fw1oLvpC!#T4j+N{xHI+lcsRN>Dq^sTyfRDIWMXC%B+-y^rJ+$U8xJ?D zQLx=U_$63jI~oNano%%^I!PQf3f48~QSf0~;Z+DqK%*eh%_yL2dVVYlnAp)5e%<*@ zkIu5sJV}p~TlVT~q#R^M%8sH=lp)Qcu@XkgkNJ@@xusx~P(DlGG4IUIM~e2CilKVV zMtLA^9b4OD8;!^4dM`h;$5t7S<@Pf?2(QRLK75r3twB91()d$$2l?mLQ?!5RjO+lB z5BaD4NIi@0TC^|7Kg-|N{-GykR#;hHQYLRC zO7O;@$@(fyT{zMh?g)nIevUFpFxYbVuoj#}UaP!O><%4iJp=#vuXAJQPDD%FlqM&F zfmq>q(dHmE_4O@I;0B9yOs;Kl;x?&on$qH=ZPGHixy4DqY&xH4TXI=Ich5ACUmKF zZ0%9d`y2h-1zkVnhaLqPGYS?W02c}i4jKgx29X*CUifc7L4?|84mw?rf=&B7&SWuE zXcSyqrANU%yy9+-GzwDh>rt=<>y|ud6ws+{Zp>Er@IpvAG>gWtp;faeU44)Tjg-N4 zdZa}5EH+YT6r@TR1?QPjpw2-e4Q=$BgJ!P$1a9%&rJPV~6zJ!6vTkjtif|=T1%BtI z%8{Qyl8o&73BLd5Zae1ZApU!7aui6MkuxdgUOOfX5}R+6%RsyfZE`!sEV9WTKzx6) zNeaaCkWJnMNip&j`gTW;XU$V{?NOW*ePn1t5xrUe1Q8e8eiUh_4ry1 zuX;rctup(x>G3rSS9LdwX`RN`z~Op)T>IZkOMI>)R;*T_sjXbfgb7=xFYF<4*p>!){vqdY0sQKI#f zbR}W}IwpszK+=pH50W)R&*~~?awh#o4_#f#AKIC8zlhqP*bGq8J#p8Wb74qQP`~Mx z*P(xDXO4M9JCj^Vb0t5>b(=7TJitA2`)ApSgoZe zrXmNq?$=jo*PSmn;YdTS3zguy6h?}2U8sl>u6@BR*WROD_c?Mc?z+{+bwi5gL#}iF zi?+dEU0s=+XIwX_KH64eW_-#t7|byz@_gs6)BaI0q_sVEoM%yTb8I#LxOXr;r|Ejl zG8+0H`VQs_<1x9~YmZGc9?Px8It%kRd2HH&+GB%V_nWtK{~(WzOK6WZVN3b}55Oz( z*m1wq9=lt1C}PNCpWdiFcJw*L`kg!$FTrEp{j|ptqAUc+W6i(U9(x;QmbRyvttXt0 zH_@jr70rh{<}JZv&*VK8#xHM+uXi7d87cN|=N=>R^AY3i;#z_Bp~{EKd>BT^Zmir} z&4=zhw$^y8$V%-#cQLaBk0l0ckEKywX%F()GVCtYJhm%(CBo`OFUVu7{n}%66c*HSc~mNL)F@Gft?j7I#!>x5Tj*IUZX89f!|6=HL9p6$!xLuJ!>L}up;tZ6w|ZyA%R=GWKMRe2I$!n19IX9A zyDvGJkYnz8R{Li(Ug06Yf`j~X@M!IypNV==IQi%0ZMA<=h=GL)4)Tu|^GA37Iq_NT zAKIr%Ir2uV1aIs)MPCuZQq@}1%Cnm4o`H z?)QGC-#cH4mXy%%(@ej2z7lUTOb>#pC=N$Gy4Swzawym6+PH)Q*eFnJ?Uf;Y}I-YB}rI7`SI>(#tb>@112o(etzF3mStz!bZpC%Ao&{V-RL5 z@Q*&LHT9}Ui-kvz!69Z0F4hv}Z$0;>%otpV_b}M3L(lW3#VW=~Gb5hX_c4d)`Pqx^ zmuEOMKi{@OkJGnshXt3F3l18m&z+>l>9H6A@}O~gAHIZCt?!2&TI`t|8mF;t#wlIT z^m_GKNfNK*L8G^JxgN{?JjK=>8q1T+SeCnB%9X})s)Vt8sTs>1MF;aua8yD&O0=FT z|DA}5f2UnX?0yj6_cnPLB*w@yAX!6Pqh#4L#56wh)`!P z|2|dw5H}!-9OT3FNbSS#J6$i5-T06^Hf5FeSRA=ZIr7*$#$)oXEESJDmMOtwH|0GR zZEtN3+nWj8wI||4Ho0z*MKR|fDu()fuxOpF?TudFb-#z4Z@iIPokf|*8@-Oy-XM<^ z-$QPXl}PO+K1A)g=P6T~qvB(=H?9&o1af=GGqpF4EgC~}RHg)PY=_e&3?H;JOj5)f z)bGwuct00Ivm!tA^M0>R(|gFNbsYu$?h+?aLcgmRDi1D06&zc;-+PzP@5vJSeRv7| z{uy=`s^78DJLs5#gZh2v({;b!UhuAZN&Q|C(EVQg>H+mTeZnZ`(k{+D-!uLGf5==8 zMCx~MSN-mOUqL$8r{oXOJLa>%W`5S+Hh=V7ob2NSnNqpmKR+8~W~6EjO2EjlBVa$5 zxazCRQlBH#XA1RILVd7M&y=Me7wR*F`bwcbK&Y=TOMSLbj|%nWLVXvZo-Ip#mQZgN z>dS=sc0zqqS?V)|dc9CzBGfnUTq5dzS-m5J28A5%$ zP@gZ<*9mn`S?be-`dFbpPpH2q)ccpE9u?}Nh58(!o)+rfveY9&eS}b-E!1BU>VwNt zZx-rRLVc!CUnbOjWvMp`^&vuihEPum_2Ffy*9-MZp&k|L^M$&LP#-PS8-#kKEcG!$o$iD2x{na*7YX%gWvP!A>T891l~6xd zsK?4u_Y3tkLVbu(A1l;nm8CvHsIL<0l|ualp&lOP^qOsMx3>Xkx$VOi=!g!&Sp-czXWCDfB;sSg(Fi-r1ToRP8_V3Kldnc0xT>mbzD{&lBn!g!(32<#k)bJ%?RUmihppK1Zmp73v#=db%w2 z{z84WP+ud|KN0Gy%Tn(r)MpCyRYLtep`IyA-6Paz2=$dh{cl2jeOcdy%EO=YR~6zcUteTh(iLZ~}GmUI5@2=$3VeX&q~NT~NJOMUaM zX5MhGn2i_e^M(3@LfuoA`X-@1R;bSt>h}os{$;6e6zZdeI(^2AuQGFly0b|nn*9-L_LVbo%pC;6Ym!-Z|s8i)9S zGeUiUP;VCM4MKfPS?X(qdOx9FFVrUr^*~wbtA%=Rp*~Tlj~D9IWvQOF<}c%go( zP!E-*o)+qxF|n|@rE08D_Y3vLveZ`!^^HP(v``-=)FWl7uMp}Rg!%}fey~uVR+jp5 zp}tnAR|$2mP>+?Ro)YS7g!&MnzPnJLRhIfPp}tC}R|@sMLOouV`ck33Qm79Q>OF<} z+_Kb{2=(Pcy`NCugxl5#qkD+%nN*@Ib^1mQHy?LrwM?k@7U~;>`ogl*7Yp?zLcOO@ z&j|HoS?UXg`eLEJ84ohB_8GQHs4p!`Jt5TR3H1#^JtfprWvR~->T`tpTA}`gP+w7& z`dpztTd32wzwnl)Z!mRd>J>URnC)n%#2h58JkzEY^ig?gqe_1Qu_ zD%6(?^_Wm!UzYkzp9F#k->Fpp60UzU2K zP#+@HX9#sisC&y&4+-@FLcLk2ufucZZfm$RZF%Ywg?c}sUN6+&7V3k`s(ZCi?=93P z3iXsw_m!nSUa0pJ>f?p_AM)z%?_Ydvo-J&t#c!+>{5kWjZ_QaF?t3Q8!R0E0P+3Dj`Gc_&nl>?dFRIFe zoGT_EbN=|Qcv4P2ekY%utDqMOhD+~slTh|AziQTIz9g! zEWFynzfT?CKSpkG{Zs6j_NjHbRF3Z_+hhA9Rm>3WF_jOM`E68+KTEtN9!qNX%BFF& z#{$Mt3(Vsuizk$tvE`1tXh2E~xZN>xLN0mGN~PNTS0G89PcG*77Ri7AkJ6%c zrq9dr{?Z=vp-Jc+_1&QbF~Va-{NsK*L97Ii4KN<-4@EgGkjEm%V`C75hA%kCV+UcM zpggt$nUItCK^{B$EbXzN>~w^a$JQB-jRTQkLXp5 z9^1J7`2hZ*`IjH$pF7Uh{<*1WOOt<&snv7T&PDs3{6kIKm49d-<*U?doSzrOeMR%w zuRhiud%vg_&0{Guj~!YxAM#<-%)!kiV|TfRdA5U29DPrySm_A^^*MK>&8Fijq^X%-na@0 zWdl&ZXG-YzKkJs{W zRtf!nLT}ygb)EM61E$|QI_>vR3H|<_>38x^@qQ-`8)1CmgFFR?{`}x8yx$vmuj5nm z=+i_u{a%NdND2L}^69$YBU`E8=a2Z4(p(4v2lv-5}k-Q;|k^(P#=D6=e~x&C9yqdzHmbaYp9WzxN0Ia*v* zn}aDUS3;d?*f6Y3E-7rWEmE%+>Xkx0D%Af4%em_Ab&^9a)7MF4zw325^}p-WsQ#2h^jmQXSBJWkYWi&}n!X!#A;Il8T?N?0{QwET>G%e(!)LbvJ` zsi!b?Gp(aGVne}5)o6?_MuzQ+4U9`%^>kV4ONIJcpy0v zwNZHfuVSt%Pkok9Zx-sygnBfu?#^|7GuPEkpG03beJC#5gsm9lMu)}cO_El%^;C0?UTn3ix$?pyuU zC$MyRR#6PA#kU}#TAhm8u=kf}LwC==jf0zmlOvIEdoR}V`y(b(ZKpaJWEspxGl?qm zcn}}<#;ON{6ULuAt_|(8LKD)8ke2CXBG-YWR@yPY1Igek!&N>MvxHK;W|LPy;*)K% z%Rl-!`qROxJYJA2Cf0mD$ALIAZE_|^FI?`Uv9pa+Q`^=a#lHfqPcJ}>-_(oBGYw>w zJC7-?Ye2GJ*g3xdl1bPk3*x!XCWmc6i!HLrNFuD?>p%jp*fCdtB**D8Q+aLyiL&zi zo?_0nW1a+A$WpxqqCd&5YVjUOdZN~957*$=2J4(g<^<=fKF(s+?|ne@9eI_{{vbHn z%H99m#+lmQ6b<85HEY$w5fgt{Yf&xE1EH^kq&!qUlR*+OJLV2b^^i@T1MwmSisYtx z9mMx5JLYqcRcw6y2%^_PrM3M((L2lSR7Ze>CfTGGBrw4ySAqCVi=hb4T_78)|Nle12HLGLjL0}U)fkX8bIT+U51UtS1j(Fcr@8|q!OHU# zNF(#cN|5B)cBot^+k`bQD)Zfl^}r{J0CxY$BcLCuZbY>O1qt}2MIOVsU8K1&9TYb zAo>$Dsyu5cA2yHu0Fq=m@ANOU{GE0_LqPlw*klZd4;80e@hdPii`L_xY!(e7CT(J< z7WY#=XWIF^01`RfCU1dwI&AVih_|QKqI^btgSrp2$#o$9YwT2afW+Um$x@Kia+|CI zi7>Bz4w7IwAF;8IGmFhpevmBl;aMQQMmy)}Al?Nwxd$YH2^<65odI41A@is-UQ9Q06*2pS?knQ*3e+ z$Y%5fhK8$kGDy~}7Y&ob(MVf|GnkE(YQ)6Pv-4>O@iO)6K@x1ueH0{Oa;EnA8e|je z3lF|9&$FN1hKGY>r`cL3f}}pP$u%H8w)?sVB-G!|=Xnqh^Tt~sel}sc_%TlNqw;6}2Kk-VqWTO1iLo{1M34*{@0U=_t9Gg@K>}>oeGA37ZKL|@ zVURS_dI4m}wtB?jn-z2W=P{==^Ewdc*S5NMGe%RbO^ycfvemN&B%QWn zZX&{3V=+jQwbTp*zMZO>$UK`|4Wd6gsnl-)nZxF~yFq+xR(}{I#{8TH@v}Yu zW{}0KRd?M6WrhgpD6Jzw5^OYG0YXRKy*GnI*lzG%it*Sne+Kcg8S;CO4BK_@)1$Am z)a*dUHHX6y=)~D7b1-5&1ML!?43cFe2;yg{q9Bx4zFs#|Os(C{^FiXQ7SDiqn8UvU zNwEIfsb^m&#P)tZBBox!+?_zj$v{2ty7LgT8imP|R!YToxwnGUo0+6VoenzcdrrKl zNiaCAE{Giy9r+b@5mF`D4DdC`GS{Ks+%w)AlgE-8GUlYMWEumUt$6n~u>vcYu zA@LiRVJFUJ$WsxMyiUhZ`Upt&06U-CLB^O-NihpRVod!NO2tOOT9Cx)cFvw1`Z@vD z&I3V0_uDbYgV2$mTh0cFv6xFhk^}7$J^>P$X6KUzNwC@PTOw!Zn1+Vt$sLV&GKB5t z_uLWXF?)6TwrARucukAJbq&#`mazKXRIl64qmgPe>z%VfGDGbWUJMdot$GEB=Y3rs zs`GC_`~jOh2@*qRQh(C_c;=sCLUzmskj$kv+2LpK4_n`dg3L5C3FUJlNE%t@=buYJ z0&JHu3nUS=b6yM*VkLYRWC_dpA0Q5M%Vv-W^ZXgT;TCpHuN}nC9CaIrk2&fw5dCz7 zYK;{j$+zqhehU&~EB?-XFw?sCZd9rRKoYEkM}lNczf=2M1d^(>TRsX>$!dB%$UN5X zb3kJE+T}@sc;K@h$Wy7W1My+j&Xaz9(eijn@2i;eKz#ezBnpzaz)p1&h_kO9vlwKW znSXHY;uN|9?4N3*a>cV(ay&U;>oXZq*afr%~R}{ zV-S->os`Egnx-|hw>bUHXu@007|Q2DJ5?COKhq{tK{6pta`i&#Jgi=iAtsLe@@=>Z z1RZFR4It{%XI{6R{|%C0eX)}VEx$x-A-OXG#9`hzn_|weW2O^f`{%ns<}&psKtimS ze*js={IkQ(eVty2$&bqYK|*Y#{1U{^95o5VxyvrkBOuvlZSr@JBx|w%1DV78yz?$l zN15q=^wW4V?p#&4Jzggkio3XtsvuB&Nos%&)E6g2a*WcWCch)YmHSPA+sxp zOpZ>iL&+k{KkE<^G3#nw78`B(=znxdSA^=8bni^qp(fV(UR-3++_@rBrN>J)j@@wAPOCfsAMBCxWC8 z&<@AA7&i{%BFUU^G3E2FozIOR3B;kx+}2nM5_--iAAqFT+P%YWaGjaMb6Obh38pm^ zF)?=LG77}Q+#3d=A18y^B}ihdE)V97`pFU8^E)yli#21tj*69rG8EkXr*)i+3p%nlxXppYPGv>CNgj z8YE`!7?OG$NQSM{H-q^1xAS=t#AjNbQhf;Gonx10oBkNf%;7tOtlHN0{6Qe`Gwf8= zAhCOF(hA~RWs~25c)zsC`;_YEb_qWt!rZdsp78TP9TS|~jGrmRZCG~AYCK|Q?qHX& z1|;yPt#tV$cHmGl;_qyYv@80l+nI-7@ z7@hC<+3YtEF$s3fp$a73Zr8LLBm`ULop~ilfQ`y|AQ{$!uYl0OS$4kDMC5Wi=5`Qo%qCBOtVhlmP`NVU*>I3)tS>$Ui7mHN z{Rom}^XiHFsF9n`=Ykwj&t|yi)R(Cz(=ni2tt$|dGJOH;+y>$g+FDOgJ}l-XkPP$2 zKZrbJr`ls*)ReWxMIb3QOWXkBfhGovTb?^W^fwq#58*eHL6T;-9CV*LPvD(=O;;lZ zhd+OA^*IPmn{v6Te74;WvxFJB6dnLcv-6ZoK~hGGV&;Q{@OQq&o}hf#Z2TQal#TbE zUYu8&{VL_tA0)+AkfB5}c8iSz@vgJUZ$Jh!C(H*)nwzG{rfu2Y`mWY zl4axc9FP?3O>Lvvrv)T_fK6@ynaA?E7bM0?_%O(PG!B+;H=n0L(rngBgJce}bAFHV zxz8^1w-ocKO?Ef{`TX4`0gxE;{9Pa(wu^fiWDYCyS`a^~n6K&22BM}j?3@n(aRN3O z4Kjr7NzMa_{mzbQ1z8Id=IcHSBw+HvRjlS9MjQr#<)6n9lUi@*vk_!5%cndVdBw2YDgT%}=^IVG|S3hg9m5A}ND;|6Q9Bs(P#lax@d+>5| zU2_og_ZXJXFvK|b+GVZ)(N)%!u>tbHD)d@^>bzk}#s%}_12mSRl3Pz-0- zfgsGQL68Vrt!98sWUjjb#5>d0`W=XVx>#vF4l6;+Q_v}H*l@-^((~m!~6MB`CH0)tzDjXK>Tbr-T>l@+A(_^ zjMiXvzX&A8`eGi4e;-|Dh&oS!_}I8u0g|q@bN-l8O|VIp2-~mjeF(h4`pXZJVs7aG znQhh`wbOE(7~4l(g_sbl=^aFt*y=A4Vb9X62Fbz{s-3A`S&%rZ*Jet^#$ewe*!T9b zTYfK)8EhUq8YB+K^gy1k>|V(cv7OpwSzor+pMNHJ`$H4`KovSU&pAvX8E50bvtj@j!lv>3Zm@k@|;)?cT9 zM5fxQCW6dzTSB$QRFDCzPiKRq*n0XT$Yz%FDmUW%J>;Ac0z2y|)iB58I>) zB=vinTn^%W$tKG|(rl!B0+L}dLkv9NWx#=A=iSsLvSkg|l5G3`5Cc#l>j}M+c zp0<9u_RHOU%U#P=zn!Q1bUji9*c|m=kTuLLdme@H#b(-}AlXWtGnFSoF~(61xUWx7 zUS-*wa0g=igX~oAf>dES!+&ls{}Uu`#_9Oxj*;|0ZH$etieY_o(fM{+$jKqBV6fYg_OWGCABya&?E=CLn8CNlr@_$BJjcHO6fgwC+@X{VTr zY;rA#!>-#b071&e zfCS81NuQvpi%fUsvQaPtG3iI_d>#Q=%Y3*Dgob6lcitt!Tz9Y^>Zn{(muA&?N$dKbiDS0VNoiJ0f@RE;2!mu>PW5i>`jsLmT8F_zCK z6jNc>;v10UBs-tsC*XXCwa-Z)4jW$~kQv5f!5}`$7sRCD9@IvT(}I{7^YhIhJxwZ# zSqPG3*Ns;Zsjl}e!6QcD%!S>9J_#hv?$M6}p+_Y1{dFfuob6Zt3gTt+&vzg_ z*+|)8G(5&yY;TYOtbKkC;$dYT58`F+oetuJ?0WqkB*b!l93*p%9rFrEjICA~A~)DE zyPb#@JHsZ&g2dU(b^(ar%o`2(Xb=`)+}5B^80pdU5T&}@&gVT48Wj22?_VI120P~H zli>LSbvwJaPaXBmz&huV6vI~G29OL}9cF+mW&4dAKs>Bo4}*BwINb!YggL6$$tW}1 zSq%p94ALc}YF`ZEzuT_G?I1Mz^SiJ6LE_AH%Zaej^bSZYX6LgJBz3P%ykk)2`)qO? zNPN9bE(6JaZj&cLVr-3D3DVot6weXmzK2u&`m=85&nO?(V%whrZ?H3kfgnSedwn4N zSuY1bJj_4MAc3%5!bd<75831ckPtgl=y57WCEIVD0pew=-Yk%fFc_-l&g%Dr#K+q? ze@le5Mz7OQQ#NlL3NoIJ+!H~(AKLj`0=M2UvYeIh2N3<8!&D}W#?x_*&+^#~#Q&n5 z&k-O#oNke)RjL3;f4oB1yQCH*bbwv28I-ElPIW6titRw22FaxCm`^C5N;{u{XQ1V; zwqwSCWLO(sOyqt$=0=bNtJm!yJ~sO;0tqlbuL4Q2GH(FcXhsUE>-+!`ns00EeJ0c& zw8==2EOT8Q$V!&ar6A}WYnHeP#Cw&U&l1XqU8Q*gBx9aNpz?eG;-6!ustCX>=&Wt< zF8z;hL+9?`vypSjjgo-B*yx*&v@i~fZfhskPSWU znf5S{Mz-dj43c7_;9L+7b5t0_xz<*nOsUSb$-N-F%#VP?ZnI-v2T3xm4=84!UFN~( zpbgn*Ist@VMXv!_&cRB*WIz0LX@I?ec^`Qdls^gUW|9LDC&|E&dMT zXZd^%l6}{X*}fXB3fHN8nmVS|MW;u?E7510=v^o4Y~M%$Z9m<~lpo_aGs*7wtCz zIWvzP3F1t&Q;h|Qvl7;Tq|UHot^=W8Bg)TO^C{J8JLW|Y-*lV22hy9h*jFIK(Zl(< zOKJ^WJYdq!no*>bxp0IL3Vlmh?v9zyM5jS@vwS*1wu!@o&QZa zvpI9e3(*>H+W8CvnZr_@4w5i466JUsrDC3c7{ps+=kozbgpH=3Kpf_u{Vswx*skD2 z5Z?=SJ`oUyUFW}!2#)-ma1Ti0b34@|ARacWuLB9C?3f*cC^L&W9wcH2zKx{0ZECpP z!^V3Z#XvpZs*^#I?CIH?KxQznCP4gbG(AnJ*mdmnAYL{ub_{{sX_xsZkW8&j&H$Om zW}6^LJY>gA0ZIJTCUFpiSYsyv5;;J7jMf57mrgIX7CeKPmCW;RfdrV=*C6Sztu?F$ z<$1>@<3LjE$-U_yKIYy82pw2x+&TPV5W1d;FqdowNwbk#S&N)Mv9*o`$*?;|mr=|; zcFcnyfyZo;0g0HEk;>7#4lOp*jyV-1^^i@bfF#+T|8|ODW9NO4wDB0_ylp*ZbykZ5 zL7X}}=aC>GHmf&)_!rqR^Fh4xY_bew1Y4>93gZ0Uj@dbkd{}uxASt$6o&n;UW~aIX z#QU60o&rg*cK$czW9Eb)eVbNmo0DRW+NlAb0$`5XA0)NE-OFQ%u$KQd$Y8Wwe&(MG zk^#wk<8hD#UgpW)LDJQBnSTO7gIQyF$4Tl_0BUpx>l$m?TWY5HSdrBx8CIjo{o0l4f)GB8rLGT7L!Md-c^Io|Se?7Gx~b+6)q6{u$AP z7GtZ-M3DX{MZVvgK{C1TUQ?}x537Kv-+1!6v&4-c-ubrrVvuymCU1d6*vj}3NagnS zt}+WkN8V9C5n=6f=*7^w(9Zb`kP)oqFQS-QJ0=Q}W#nd%By+-pAPIH__+5~NY&3le z5;d(FtW)>;vMeTxn9%jMy6+N{=WUxz1)+w{*Yqxs2#fg`WHhVScOY@Ln(y6=GT(3K zJRGFi%t#~a>qp{8Rz~(`cOp(kOsc_7HJb=q2N!|RZ%V3hifh7Q>KXOB{>7AQRdA^CiU$uau)0&G|CEJ#0A!jC{gY{u@V533S*we@6M3 z7R#Nj*C7+;I?tsz-!U@@KD9BPKB<&q?c+sE3_GF0Y;W>*jlx3^>QbXK#v z2N09G+Ahx&5Fe}itsq|G1iH`Ih~4x;R>IFHAJfjH?rDcQ>t!EEdYY|uG6+5Rg>H4r z+y>$sWcS6RAW63W*+i+>4B4*(t3%Yz=Xj9xKs%rFK>X|Nm^(lc)>#r-wH{A4vQ}M> zn8l{$sb1fMgxJn=SQLb%IvK>z${YrXyko0h4U%CocY%1>NO=Mz#;!kq4B|0;LFK8M zj9M5H4AwU{yZ0jVJ{*UbNXS-i0`VVew@(x#z`S}hNGxHedH}?0T8z|R0SU2~Pbr_t zb}DBIWB>lTVdbt3lFiw>%RhbeEma10ddqZSp3F!&>YcN|mu=_MD2CPi%4+ z$VRiqp$N_|K$0w<2#A->^D&Ub1f3672aKn-_Tgp}sP7fRy?-{o5=fO{^ZcVA{u^~Z z&26odXhvF^%SX4yCy0r>uVb1zIwCc7VJB_0sLVa4;W^lC?cK#*AlY#`6~&wc;x%O^ zavsQBc0J)@5Z^O)s_Q}gF`Fy|N&U_y%P8h=HdzglTxFAQK%BHq_MMJi-bv4yxp@pT zQkspOgAwCnyUI(6u#s{DNGfFKoCNWIV3RjNBF4|bXmbbMrboBC=Y#IagtL_OR~D%P zXW01+x(w=UbvPCz#MA>I&CF33fs8l16o@)4AhAVu&VMAra()eDHS3)ZKmu&{?ztS- zqgc#dAOSXKUPy$^ewTwJ->}sm1o50{lNUk!Ea&$?W;2idABZ=hQ@NLWooUROKbwIT zV|NvQ4uZpo9J^cK4e6_sOF8Q5tFFZ^f zB0a8v>mIdZegQ%m z-~LzV9hT3jAnEJumX@$$9(t=Na_GP zrvH`jA@kVbAe)#IehHF733{OXD(7(^UN%yugJf6_-cN*`SN;{R~+N!@Rgy{|$0uri+v5@Qa(03>mnooX70pWSnr1u}Y9yH)3dMA((dXF$Ac zy;u#>oB8lFkj(M6)_*|!37hOO6ES9QgKot2GhAU{b)O0nVXb-#NWk<3rTP;{YK@)q z>mbQmo2&!j_lbT2@tZM7`RsEooXJ-6gFuqg?0oznWH)j*{g2O9fY6gp`PpVF<-mo1T!+uCvz2H+5V}N_AGt?^j9_P5V?bgdJ0?hk z?Y^dic+GlB^}3bFgLbMXK_XF`tOW@z&;%>~xpd|dTcHW%v%~d>VWaXekoBxjj|K5F zubvB%Vk`a?An|MMoZ}!d*2@b(5+B(yD?u_J+T>p#{`+jwXBJYi)#`ANG+X0N0ZFm3 z69fsdQ81nIK}Y1h@f(nsQ4h9;r_%2p#n39~AjIWXJ=D8DUgcN4rASrHeE1?rWQJYl zk3dq)y_-NBb`H|-23(LA>mm%y}T5XSLSlcr~;>TswJEum-;vI4Rtr zUpBQiwCR7>)Yi6#r|4JBO|4=5?}ql87V`oVr{?tC-EO{aw!t9%bi&kNQ|pwP=BD}p zhZtE_}y#ib)77RAE)JzHoYil~fIAJSVl$uB+NcW4KmYP)Qq$Cm&%KPJaD4qpVflisHPNOi;b1Pi$&ny>`;u;h z=%IkH(^%6HtgDN*!6^kL2-c&|XroUx2+~7mwKc`ERd#4=t`ASEi$sI^7f(fYO)dE0 z!CYqHR(Q8i4c{JkSy5V3gwozs=Fo)iA3U$A_4IYUHv(*u}WbkI90u&PTpIzH>ubHQi;GT?T7R zs;m2d)V*DETse+5*gs}&r@|>)wtU&u*7hn~UG1>Ey>HCTiBvjm=d`5MW~QuC|M~^V zLl7hZ66854sUoUptULf700c?!d)TeNZ}w1i2M6qa{JKtmhK1|j7Vqyi>(%;U1Jz`; zy#;ais{`CD4xi4TaJDvD?VpR+cAMc6LIawj?~djzTmih@t>KT~PA@Npe||LoTD*dP z{y(2S{PoNE2mAK|{)S3%{(1c29sK=&{q^EE^YIM+{rf-vasChUhy8Hz+j&-&pwFAt z_C9NRjAn0O;CX$qx;!ivrZE@}yXEGvzgV50e}>;)LkqB34O_5my}Y^jGJJV8oL|1p zngqX$4{E$w3?@Pjz-G+fKy&yX_zPmdJlXnn?VM!(ezn>BW%&DV|NQl@zX8kr)o?MG zn1XUQb$9rm-xqJd`4C2Mfy#OZmnFZ4cT0wc6~qhJC=s1GqRnlAW)uW2DG)8*Al$Hj zyj_(@UwhCh=tSmrULH;#U@!W2 zEJ6E&Z3D(4wLbtOp?LEEM$*3%32%(<(f63&Y%zh@{QdH9w%P7&zxL(=qVsPj=RbeB zgKprLS9z_;s83!Em)7p}*WqDv_yKYLb+ZNEC#`QDxloZzK@o4HERcL27N@Sdx!MLC zY`x6kzWnR=_pYX_{`g~YX0@_<+Er;uj!N&exKp*WIyzcPLMdgjkJn@_v&nb%t7*7w z$)-Zg2OC7`hg_k&#-%*G?;p}O@!_0tS>5-X97a&Cc-E+-dgm;8la=y>%9VbxUPu~z zPWL?ipfFthEQy3Z)%GD;kOOqG`QTUFwyC$3Uk z(I(WG!pwAzvIX-zm--pG?3C#H$j{!c6H&;K_!_7VT`26Sj;w=B!y*F<>qjCR-QD-&n*!G%9 zHWdI=a32pUjL}(YT26YQP#Jq`)PltYHs0m}!-w4J8Z~40;x&xER`BHFS6jbwQ#pcQ z-32Yr0{pq_&BkDc#QXEd%OU=4!Tfe|{^|G2;dHpTxw}q8EYeROvBJH%h3U6nPfa>( zA~oyzp&u9(0pl*AdK}i@x4X@HZy|!5_5YWvbYij!7`NY;k*%p(miO^|^OwI}{=Z-T z_J9AfSiFktaG}aAyJK}y$+mR*A8KgeWcztoBL!7H! z`Meq)V@oX1-)uSY-xhC&e?apD69BN)!?t?opFTnXo@~Cle>i7w{Wof`cn3Z>JZx@n zAtbE~S1d^2RJ2gL_1!hJtq67bYCt?j^~HNo&+}l(efntGij34Q+nPq^7&ra>Uz3|) zmjFQ{8C5E=6HI~?e0*xW|20HBh`NMy73bl6O)wC`@0X!&BxPmw3WeZGmq@&%EkQx) z&~`)|#kM2x{EN{KlM&jhiyHXcA*5MtY%E$q`!b$}(RYQ3^IgV<>abr)`W597j#m~R%JT!e(B5OB6L2-Tv6iLsG7BYY0+Q~W6J7M)m6*+u6n zSS5XRIlrv5l3#SVl3!B4Hu8`auX2hiS2?}1q3w@G9~i#EcLWx`yMYiHPvdeg)(5~# z=l8?JY?QB>;iR1=3uBegqr1lWJ&>$m-v^AiaTPJ8v1mAWXUGUnrilUge!aa~!X!p+ z%fc)yuCAARSZv3kv7N0R4Kce1*biqn>-`?K-@phNhe$#3vm3ZX9Co=pvR~hr=kC}q z@63B7Ft5RXyuH6!?*v6p?Hv*<-W zg4=$-SgkfrL^eHWmqKA60+D`qf4egKwP5}n5OcJ}+nC6pWj203ciM(p-F$Oz6o)h@Pdl3crCR}eJSCUuG`8W&pc z5-PrLSP&}SR>(X9pzrs}HSx>{ojrbfr3$`&<&|U`K+^>{!1lt;+bIZ{USUP;$3V&3 zl~+D9XN@Bfj48Y?*-X}$4n6SEF{VQgwRA{e$8-qx)rd_K1bvCi(p9WoRQG*L84ha5J; zQf6qkP@4`tRMR0t(Pm*=Is`6hPKVm68lyjPH%W)u#PaokrbAo^N9`I(huZ3(%A~of zwl_(x-F!L(=4aJ=k)=Z{6-kFUCqnVX>5$ymladaJOItygo!u){2%nG+afZj~P+QF8 zwHSO8(xEnCMeWBx$qPTEL!5E6sC?dZA(t$4hJF&~!yeKW*1niT(0YNBMT@tL7&{Gt zP@6iGA*n*WKB+?OKit>NGBg4hoc9_h!60#4omKHR3Oq|w#e02X@gM@ysl~;4yqiqe ztdYmgYd`A_$5PEMz^qRSQ1MK9ChE*fDhi>K_0$f#S1|0o4cn}u`NeU{KCA{%5%2sg z|G2q7>?=rqNH_Dn9aj(Rjy{|nj;Cq4iDj~)sUgON84WS6@-$64hb6u?HoxSQhSdp# zmAD25dpY1MTE+5af`!0jKqSf>P@>Gi%_@ByWawv9pNT{UGMAL0k$7axqhE9R^lK&< z9M5hcbHC@p-0zu~IP7yr#NTtV@pr$!lC&4xUemFCq4joLJ2x$ZTkoJ-hGqIUrYye> zzDvVahY{^bODlGx7G|{&q?*~2l0;klUtzUKUdtN=j+8J0l^6ExMhUwH3ebL)&#!YP ztp%6q`E|c^)yyTrWG-#611mu?Lv02r0(H7JV^R-+G*j8E9tpI$5@zzefx1EEf*PTZ zANyQMgFxt$0l~144cQc>N@a5d%Q{mF=Z2!i{t=S}!^4jFUZwH9x5MfEx zOqji~XKcp1HQ-nuuKJ#T+I;#5R}*CiX<^dDEzR1i4{R>_b^UF5e|;G4mIrgY2J~MQ zE_3h@_6ywj!#I+Lu;5(Pux6s&tyv|)F_NSTILn`rgDHb?gGK65(6;sA_QCzaXjZ-;v0k8wkS$sZdqbgbXJp$sxmzNpk9D zY093C<0N%daujB%1G@tYNik<2>o& zTcIAx)v2J0*--^ct5iW5v!*JjYOV_ewHHus-3x|P>jk7$c)`<}B-899hq~)4A21)15btc+F(A(qsSE*PjUnFIRp4MP8GPAG z2p%6lrtxSe-7lQtN{>5Y9^W{X_xK25@Iys} ziz%db6#PL5;id{5VL_q^lK@?i7!yhookJB8Gs1$z7+TVCECHGV7rbK&gpO0Hv?P%$ z(b}>k`9qafA=d|xMqi{=%GK&?|593|T$R3~T&=$7vs$^i7<0BM^hKX3 zvQUMTESX-emDEnXQg_jQMa!RS+=ef!52aM?ofsb@yo$e| zzKUN~AN$C%hqJL&I^BzM%1~LI$_vxA69tP66d&u5n6}9|=r(D}NNqz8Qoxh;IieFYABV39p=b>^;QJOMTF{VZ_mZo5F zt){p_Dc2NAQ-CrdZflcl71n}+1CgczWh_tUPGC#UgPA|E;}$=091gm`!RC{Ah0mXC zf%QF~b4FVZVb`NMtLzr{PW(FE0N0IU)+^JS>kRF>9_%_B$5Nb5)@h=~A@OHu+Xi0G}C;wKYg2|u5 zc-u_p=H~~^)|22umcYi3Z3E=bWf@>}n3KqL7(drkHG8s(s*b*uRHdIo@t0c}D~l4l zFyJP|D3xnx=`X}W zc-68dn#yw@1u*wfkeU`!BsKMC{*jYfu9>_WD?F@a6&_x-f*T<;(xGcG*nbqH%5L-l zCzxP+jd3%(U#}!NH{3ZEpAB2Q`nnzNZ}&eo-wx-WH=kCQC&Op>pJ};r;sp@HYXsY` z@Zg_oLV@Pw)Vv|!Ht^mbzMT#5f1oum59q-;wgt}vSv%pWk;C29l>DqByr9sBO`Ap{ zJ+G2TUUJfheWOkiy`Yms9wNaWZ{tfU5ZQBiH6n8eutsB!EiT?dC@rramXCY5P#)F< ze`@2Yz$gZl%)`43!d7M}7G>EoUO^KyG90gAnWv~CgoBI*lhCxL`HE>mRAv%XEb@f7 za=|A{50owfHIz0CHH0=6UqdY3EdLnbap>=d9~g)M*r`}0bNW@uta3Ukb?a=-u%>PK zhkL0pclIR0Q*yaf6UL;^kog3g1%})p9T4y}0YPQ&F$mZMm_i*Y0~Ht>p{l- z998ehe3DJ2?i<>aiVrK?J)m`OmOu+GEwI)7T4v_#gkfd;PSPuQmhP*`*UoICKit8y zt#IccOcQTDo2O^&^RX8nzYKOa+xd+f&#HucxUWbFt*dE+U8;-&Q>Z9}l}S*F5W3JAT6L|M0!@%pD5_Xkg%BkMyG>`( z zmLrw##4z%0%`s!eQlUV!B8lYih^FL6N*MfTgAhUF_(2j$4=B$-Q__PH20dIspoH+j zc@RJF8u~FgZG|MtlE*;~mX*X$%;Ym}P8q>#ex6bM9Mq9X&^M*A1FKY_m{7AK4Nrk`8R~u!9SMxo+@^^n$(< z`~WX^n+slaLQFTvOYv_nGs51x85A(%0{Xi1bBpHtLemAl-L3a^MTRg?kVB*jsfXwJqr>kiv>ClGzvlxDW&pk8L(|;w>rf z78pN8@=Fy70+r~v@}8Adv}Q%P7~3gsX!WeJ1P3U``tV^N>&iD%s_GPZ(sTrgBaLys zm?|#e?W1)!15>dSVfS&9!A3d2@*aAKm>;}*6P0;h$owMhCFD?^#=E3A`LIb_ro|hd zxu)w5Z?N#@94_N!trMcFb>M+Y396V1U@l$-LuHg;QZFxFx$b#?x4boD!^2*ItB2-N*+nrWu!S0BxV0T1k!e8)DL|3yrA~r%xc1Ogb-Pz76 zVbcO}xNLPQOfWhktJoaTR!oj)VKQE9yP|JND-wN6D|7TQtyAz(2pam>n>~}uIvJ94 z;$@H~xDPsB9bG1`6fT+25-~_-W`KS(2@z~_+1`MHevc3&d2u<2OJQMCR09w0C~Dx5 zRZF)0lr&073yP$qGQJsBru$1uO0e_=O;~zaooqR-q)Sd*P$Va2wJ>$FHD1a*yiR2v zRyEr+q`HOO2$HADTOPte+BlpmT&#k&d1_X$#wGYqub|jOrmEt;iO7{5>{R6rcH&%_ zJCA4Frwb+7!l%CX;s#)0npa|j;cU|QY zw?^^Y+`4-KGiOt&nzIod<-AANM)dGgt$X-&>gQ%tCl_#YMy0|zqe9bCUDYUD;@9Y1 z;@7F4o2}G4XH+VjGuAaN)meqUC3c0@C3cnWxyd@Eb3UE6IUiNCG+rrez>6B@;()p& zBr>2^lLl*YS46I_XpnQa=$~_I6))9mwf-d`YBNeg8m!4((PBo<-J*ZatyH{J@3rce zWN3{j$l`Em4rd^s1r)cPT&;^ntUg4EI%jSPNWsYlkco}@|_cpo2Y3sL6kE=Y<8Z8 z8O5xzvY&%&A)>~;(-fvcNzAEG25>2!81xz`fv=Gg{8AKgN@(b*CK~#nPAEv*8rhO! zd!6u^fN|VGwooQMUIgQ@dr6so@n$0$vDh&U^(q^?`z1txM*Ovhd6$3UaRttnLUNtnWh)ed;7B=*3A= zyg}I*vH74$Flz=`Xxt34T1~7UgK0NaA+yiDvP>P-4~ zNa*RI12_wlo)QagZRSJ|G;?}o)9N|Tk*Z+Qk>sP{N0RT|6ZzF9Q^|IEd&-Hvi>>BB z6Vx2CQe;mxId+9d&_Z$KST)vynl)BdUz-p&IkCjSYggismEx-@_;WmHCwS3_QmdKF{h1_YTw35lr5TFJ<6#sjJhal&P1(J&lk=@e151NO>C z@m0y1c{LP5>b59^5NqOaCEWpYd^#$NCPu1t6QkEO&6=kj+YW}zEEnyZS*~{jWW(|# zP($H$3qb>?XhN+i&VbPxl^=c&rD&9yA}F$IiXdv4a1N`josbHuE+w+5TbH^)O%1qU zPF04&n5vArDbl3{ai9sl)TC#E`68}DW#M4HN@a;x;ce(-_-wSUvT$Zzqp`%QP*`I1 z`lb!`w96ubF*D0WOJ|nr-B4)OYe)El%~OP+fm4Lkt*KlKps}SULSacw1hGR%7^PMR zmj}U(jjUAfM%JpnQZ1~jD{2JJg)1SlC(1!fCd%<< zL7;|_fp`r}P+v)pYAWf8I;E6SEF~HnT>_}WT>`WgXqt|q0+Il=1(E=z1yaS<7JWl4X!&t3X1~sEshBqax<4<}aQK<9Js|GssdDZY`k~L^-OjW1yVP3hyh<3Lk z5>1N@Nn2)F7@tF{++fQzorrNl?W!t68>(Izv~YT5R86VnsdYnY66$8uBoHG?1zQtC zO_?Hx8Z<@D*X3dPU-k-=kR92@#*@ugxcr3sY?s*N&t@e_{%SHW_toF?oL%NiZ(p&R zy}jP9me=dk;o|1*dhvREp>$aP0k_hhfBIx@Tl}_Mt>MX0<}R1TEB}V+5T0<0-Xsmr zLcx<^)@r9(ATn3ofP1d5;mTgPbC831KYo@#2)o7LG<|KJYkjmYG!Lt9csEYa!?-GW z4I1v2)X5VcWDTGf<5S_H58hka;rkk1DF9X8Z{S^k_44NG{@VaoIPc&s*PZ>aSp8V; z1}L4)VQ=neWIeW6pft&8-FR{_jw0{ia%XG8b`BFjTE&ERJlTY^!{%l^S0TLe!XyKF z(Zr~Hb+g{@m*3ZW5z!Ms=*UvAR)@>7qKXn~HM}e*Ml@DSkit|+tknVtVHY)}wfaF* ztKDsVxjkhg@iFaISzS?Z}v@q$Yj_b z70Jfj!BSAPB=slCf%4F!hA{p_Xh7R&Q+gFRQ z)F(D^)ln+FS5gtZ2Sl!kfbqd#M*{=As(Q0eq7W`gwpqOW2>FG*hiSFFxm)hmaFzJ# z^3CA>Q%QS`?lxFPoVg*2T>{9^41^fm7 zJHW8x)5*cU{{>a9Y+@}!co1Rrvl!AfbHEHo}c)5xrhJxWJ%?SxLq7Cvgn17x`;(AB`~?(P2Dc6T$T%^i}U4NfJQjz%RZ>py)OvDs|Y4o-xGI_HEK zM5Y{sfmHRDoi8fVSmRdZ*CBI?qTY>D%nS7l_*rnWMkmuQKd#Is`; zQLU31U|XHUnCoyW;cam%VN<&`4j$08EqEwoCue`a>N%4T(3_bsHX!0+-Z&U;Xg^X` zRSdjNxzr&LGd9(%l(k1w0BoySWNJejt#P{7Vq(gvvM^=R8km=%vQEW-EiF#U*A7tyuKwERruB7L5TNp|z^ipK#|~R+rs;0pd)4F=61Xxz zGIqCdV1n*WK%ed-_ypbIVccoDo0oOF{O)#0bjQrdu55m!V(VpxOQ6qIv}E1%{B2gsqKTz^j;no!Bh_qW58Fe&CeFTb>i`PP_F>OL zn4x#O7h!kpKZf1(EJC%|pBx}%EBV)eYZveo7RX_7M2*4QS_ zT`kjDB-6La|L4oALCA@oUW-nTm~6VIt)AB-N716kBQDu|ZjT&Gi%yRmrF6JiVY$|T zM~9E%)p9_{j|3TSm5Q%{o46v&G=oXRvriRN3MMDPvQzP=f5l z5DZI`of(%Wkm)uSxY-6{?lP|IyI!$@@j_Kq`W8y_&*IycqiVsoFu#U7o1ZFh%hRBr z*5+h%G8e!{@}EU{t^c1WVvghg7p%O-|FGcflXcOqnlU`B%fSY<0A3A=6zSp|r8Y-G^Wl(CMOM7$c1;rqp3iDbKoDg6#klZ^W*mEoOi;2b*; zg%4spy$^CeOoFPrN#eR#I?5exRG3pJy#=AITb2)<>#fg5r#APoX}Aep5>JDfF9AyxK#)&r`U^*KSJD9$&i&1*5)~Np*&5lBF>pVZ+RX`wK>Z3NUBXJ&+K^qq|_#tHpOeXG_|4Wkm*=knAa_- z;1epPcl#46)mnNu{B)%Uf7%v@o9g9SoM=uQE~06O?9nN6E6`jjb1R@Ofn+?siY}gL zaAaAI-XCQ-{bq^RVN9`67COOTS*Y6jc#fcStx<#Z4MO$SHwaZ*pNuJwehpKD51(8$ zeMvmIY7@#+KgJbKQXO;R=V`9k3Kz3hC-?G_eG30gC|>P2_jwBU_}WdWw8z(OLcyv= zyU$aqM^!YD3eJ zZ@BPG+6yYgY&6i!4`BCA3Q=b?slP)8YU__N^JQ7e)R z@pR}eiaA=i^up5#rE(N?`U~hN>Zr>qp0JWGg>CS*QlQ>nN`ajgLte*TUfXT4D6rRJ zQJ~u5q`3`CO8%1F24m~8^mf)|^_uAFl)3n)eg$y9@l7b*ZfQdC4y$c3hYj%jrN+S< z{UXrRei2$bk`NkiIn)~=@T)Bl_&e1fFEQ*^-}CpX@AGQknBmvzpun%zU*K1(pN=o=6?S_6=M~Ugffoi}Rr7g# zt@>&FHM?IDp!UBcKx;u#e$7=_;8*J}@N3mi>tAmHVEyv~)CNczXe~%081QWb>nm^^ z!Jc2Ozksh*pE18pe@TGa07*cv1>;q_`Zg$4zzgWMzzb-!fJ~@0#?WX%CZN@VOn}yc zq!sW%tgi%S@xeZiHy)L74p8ea;CHI;%db~`&)=)Q=U1yAAHVZWpk95RU#~vT->E)W ze`0cgUiCeHulk-}tA1MfnuA{wpf*4fptT^LqVe{t{m-+jwddKjx@U*G8=FpnU#-2s zuT?)bzPaY|>}utCcCGG-=@2(ZV*bDWDrW}Hi$eBF(KrrlzxM#lqm-J zCo85IgiDQ@r|8D9)#VZ?(Ro?i5~~DHS$r{mk&P_3{fAZZ@Q=1uMR_Qt-ty zDAVZ~7>2zZ&m2dY9?!Umh!^6Sqbbwrnd20b+^)*C$xU4yp_pXP%=|h{p%IxIsl}$Q zUfRD>(`3^$q=HSyemO>t*Tu1+8?2tE|HW5pN=2JmJvVg0Y8YwYrk@F~*OaWA3!=%2 z4i|1p11$5vY2v6p2-%7!cvnWQc~1b|Y&kd>E;yg%9iKvc3YO0aE?fRmpNx?M<)vz@ z^f45xG*3C(Lln9fgbE=U`S=BCT=4Oq=E0akWdCVw(3Zm!g--eGKmY1bDf**wc*!zwMhbT|;%rTO6zbv|LuxO-AeG4iV7wS4J&A+Gk}V%e9N6@# zIq>-d#ft;DV1h3k#IGk*?r15o*U{5mY_M2^y4T;-C~?=Zv#m4Zv~80L3L$-(m?^Kx znj}K%nxy*>%)=EeB~s>BxX*0jbu0W3~6SQ(o&d)Z}QuaD}T$@_K zOWbwrtQw6o&`tI$g!E~WRHJ&s#A%WUscVwfrPdND^Q-Z(E_LDy{B``KGPS}N*%j#N zaVA=s>JgBgW}@uP=*_mr%E#>gs=j`gG$e5&TxXA)f>!RV?&RHaT?I}^QUU8i(hAgS z$;gitpp`#~;AZwxZ&J5DF2&Xm$_gNF(CaF2LME4Dt0ieEw(=*X*vuYR<>nxW*)4h) zvh3f%yPfdL`w|Z84gd4|$4mMHKA}Z^{p4Qo4rK5H(gFKhkhfdkp}6ojrFsuko2&Kr z%`Fl}KT%qv;bwjN6)DLNlzy}w-@;DJ=HVE#LDIj^s_caP_vR={B~@*flW zo9)kaMo)hv^v37Q{eJWP7C0Wql1+ak^e_^LMe-5!{JhaEWIZ|{fIAAgvg zSGU{U&GLHK9M-$#VY|Dy94_}TZ+tQs_gwBL@K4bKd}q~o)2jv%P}Bp=6(Q`mBDXO;4 zp-FAMx){zbo>oWp%`OPJzAPX9NhS|n8AZ%TD?{?E%j z$}#_@Ul-)7`#1e+c|Ei@0z~+qD6Qr89~^D;6QQ*yiY$pcTNJ$Y0excsMR=B%LDTWy z_!Szn)40XNKPk;?+ER{x(C=?|v5@dLrFyfYV*Fo};_WJtgMU-1H>*g__!p&kw@MTu zKTx{URiqOBNon5fH~(2m7L^#BO`#1f1`fazpJp}3gPfGLVY6*R#x7`1Q z6wq~#T>(}l`UBDd{+qE+!d{R3fOJ5%e^}m~fA$qK{E0LsrdQCS>`*QIlhVA25)}Uz zrC7W+2WOVo*V~opcTimZJLP)wZ3AfqG_1i8@=Hz$6@Tx`!120Ya!Mm}EUW+$+9cyc ziWQ-L>fRm_{m)*>b_xZYIeO955l zOUv~gDc9R=Ubf=*2%DjbTqb_kNbwF3gv8~|5CvE8A0r*!hH~fJA$_jMh@6qjaGw=2 zyeoJSu_tnx;0X2`#ecWjx}?*D=!hEs#!^2%a`fY`1rBVT5ySDo?<^NMELF<<#M06s z9}!=s_q8r&Allfh`md%p8h&iPu6K|Xe_Da@A=`zlTl$WAW>OXvDfBy$Vzc-x&9|v3 z{|R|bKV^mhzzk#XJ&co=|6YfIIR8!L-ouzt;>K^t?V(=-^d35QiYfa2xr{ ztLrg4^!&`%RKkgwz;O6xj$l|qM~A{}AdJE)gsEH@rizV~L#w_7g{ zX2=(Xlr0VRGm&8i_c!+k$3Ci`{6?s4xf{n1;J&fkZB)X%2lP=M#Bqv74(TRl97%gCiiQvILZ96}9ygw{@9jr7BQ`OPqyj>LIO{7NL8-EHrNFl2zKH1Y$XGqZ6f7+lWn zrl-cg2^AfnKxt*;lgqsy{EYviykw*ay#6mj;RmR$O&bS_n0UjgYb2JhT0YXaU|Gi`M>&eDP9L_WJN> z@e#?oLIn8+&j$kKEEoH7lO2DxmaL-Y%!Tx68=7fK2FF?3E4xFJIZsq{BW z4S8-x9sfqDPoy?Ag%g?vPex@fbTX@CM5aroP4Wk;M0ZL)odQledcAXAzrqR zqKxD-D+97qJJB~z?FR+Jhm_AQw_R^x;gy-$@?#@g@gFk&!Nq-@fcfS!L{|EU_C1G<;WYH0+Y404a30B{= zl3$2ifD(ew@fE%kDFiQrqb-W3D?-+Y2rg&`CZeY1-{h+oHBoHDoBxA;x9eDb z$!h$Aes}y)6EKSLzfo!@z<;p~#^2)K2sLB@K{x*g`R@DWKotGrDK8Iq*B8tcMYat; zhkK^J3}0RiUls#I$K~q*q`ftZn_X<}m|cj-)Q)G(yF6>N5Sct4jAZ|Ia`6fFc)-T{ zh4C5f5c3a|Z;^i<10nxF`2g>u13bwAvoDkr5VP+HnSG(0Cl{)0%en!oTjGWuUW&e$ zfZoST(Bphgs|hqd5E1B#%frd5Z`<7i%*x)p=_7>A9)G0tu4Tkew7J9|DZOipeTVPiqWRvjwMCi{BBt?jl6bbQahS}b$X-m$ zk^YJtVDQ`h{gqizb(+LKAf27VBjW~Fk3X%Tcsx}E~G4O{3*G=a&v2vPf1u#BqVx5AW`%()% z)#K2Q;h;u@JJS`H0&5~~fy8|Eqa5OkQjw%hNRr{Mn%U4m&~>=wM!UPq)-rf5_g z__Vu7n6V`qLYDy!h#T?fCrWE)GGf~3C!`HqFW3JcqNvq-SazJ z0KKdNwkzB^xJ{2q=o`J;c%kTC?_dpXdjoGL{@kqAb~7-{mxm!uN@3Sk%#`|Yw_6`} zuJa7XiXi2-13K7Fq&0Ec?J>Opp#gny`A0( z`>!LO^c&?9cUn`sL?SB5px}P&3_pCKJk0*<2shid9sKG_hwje~n9Mgsb>E^b*$Bye zBYfG`Y{Hj)BYac#T@#2YVy0;0I}g(lPEm)-DeB|)Y8Rm#Nl}V{gZ~r$pmVlqziSpoHO9N{hQGC@KDklwtiitrC8AI$1D<%>S# z9MF8her<+h{E%}%uf;OB-*bAN+WbmsGpBPzXA!hEG1z~6i8}P;-cn+#MY-2sT;WOkq-Ip^rWnqo$X1PB@~=XV-zNK6B&8= zvjhc8GDpNJWO2c4G3N}C$s%1CGA>4BGL5t(Rs>;5yf9Rms|1=zr+g|B-(qlCXy#RY|1;lFXiLpMTKBtCEvsQn(%csEwDy z5v7u9+xb(WHTqP3vj0CfHaP~6^79-0Q>}O^A}ihdPXwf&2v>G4fU2K=B%I+y06_{r zQp#{JfRct^b6PU9%uRuh=LM*)Ej#&1%MIy&!+8U<`qB$(d5NXMApzncfr7}u6%Kp$ zfNGX}Aw2Sl0Sav@7I)|%v>C}U0>T^}FCfTfy4jy6AmsFCLLG*fgf{$0D3igiKXyPU zm}wO{*Fq?9rh|auZ-kD_o)Aj%E1~t1GKA3oM5u6_OvvyzLYEHP@t6Xk@#AQd@k9X| ze;^z%86~Zy(Xc9!5osRA=6JjY{u9F$=LKQ5AkHPi?;6FuMj|cI1B^^n@IMhM+~l1* z*>B%>Ul<-$^CqfF0>mpZO(3J8**#;9oY2DeVEB#WOFf57_5;U}q`FY9-hb{3;eleH ziRR_r{Xi%@ugW2@tX5WvIv%t!`~7L@ke?}a>k$VkvXz(MVxORL4)j-vIbHk&-#geI zi(qWBzZ3d+^BXyVKz%F|QAw3E5k#3qg_KBz1(9%mg6b51pd8Vu34#i%8$=Z4NX|}B zp5zndvfB*84miq{e4<>{^A(AaLJI}eHedItAE1bpY>@4SF6@B{BC|k6d_btugB852 zl!}!_j#;o$$oG_=J8F^2;An^(sJH$+1}#APGofYe&(oSKX~FOCgM{bq}1XML^>D~YvFz%6t-TQkw$tBgw_a| zh)8nF;B<1%F0yC2%D9g>vKN2L>Z)-6XkN7pYRjqNv+4zf?R zIyebabP#>4Rly3FqJclsGNmlMj4676A@*p?6g|9*DSAL~!hd{S(-w-CF-4E;gv%7i zWWuIsCJq*-XebILnnLFSB@C6$^^pWF`9gW@R29n;e?gw^!!W2%w**0lhBGmt_llKh z5rJ1zr$=Y(Q4c&^L-L0TAvy*MxpZ6yj}v8d!l51XmzF`+L_qMq_y`vmJOIkV+;l%2 zcFWCSfAMe*kq9p+7{7#z`?RFNT8-#W5BA8Qk`!eZl?kVV;LNjyThfkYENZ%YHytT+8uf>1Z?itk*^cgC_WywZbBXTbg0Qu zG-zLn&QHj780jv@8c0eX9y2NU!Oq~L2NqRQ?NpIMs;ARQHHY)Y*MiEbS~8tXa|Tc$b0pKrbb2~}RbmqSZ}8iE z8#rpxo!Sl3@nM>RgOev~N|cINO`f?aNP}f1O<8#|EURM9f&2Ktl{!M5+;KZzO{(9u z=WA6_g|HW}CN@y&wDtQDYjQoEPHH%}S(6(mb&~xl&zf9Mr;|#KgVqESQk`r(JX({C zggUwYq-jm8r_)IdXHsi&1Eo$fJ-u3!O=*?V$w}9$bV93>jt66FqLEN1*WYelto&|E zvZ|fH`^Jj`$6dcFiMUC+YI$~fdr=3!8@VRd)1g00IgQ^@py@0kT9jVac^o{#Qb|?q zK#H_wko@WA2TgIB7k*&U z+0eE~hx`k6zSg6~iXVwv9277C|m9M^eDEAPt93i?4LD#HjRf&aMqCk+U0FS6_47mO7hrYl@cT(%Ff30a(9QV>cmh#IRf5 z+yJ1M&?Aax=)+N@y(yA9`$a}5UA@-~akDK=2xjA5A4WaRMw=}N$%#wjKG;*5Joxwk zp;n(i7x~bC4XCgIrVBOjsZiZJQLy-D~jihFSDp+y*yV3BHn7zgos>- zSa(l$1BS|}8CL@$b6186li|~&RxZ=fC{Pih*Cn~ALxY{L=&{o4I_k}XjbVmOg=w}I zB#(g>)@BlF6#}$g?)C=yfM@|DqgSEe{UMdYK{}mOylSK-771JARyJjPa=RK#pIT}b zl=qN~!sgdcv1g=7MI%q8C3nq9bw3Tyq{0iw(5onvR3#g?!o!6uRp~LYN z!6ovkQ0av(l_;j9D%oZ`AbE7Q(4r7Zm1MdMQt}PbsigWv)rucHnMx*I)-GzAKbTwa zmtUwVNsQO2N|a%VTtTI>IxKrvd>IH;a{cmCMXD!L$;3svlJUtJU5V7MWWmtJj#AXL zDs5p?1?+c*#w&Sz_`y9sT!@(hrwZBI<>oZhrg`!vjBymHbe*m*^7?nWug0#j56VDc z+DN69SnZ5J9vNj9o$9aWQ3Y>AtkTwZy1KNgx1^N!=!`p3h1%3)k2yLCD~t6?;a%qG z+fWp-<2@YDtfQqZ*QNE*Y(qC8V)o}JIXvOJt^!GW{;RB^ka#J|gQ_D8zO=RL_@jTq;D^AF4zllsd_9Ka@^?*m3MBRg(Gpu5?&M zUKP5VxJ#~XQqGmwxf$}pHn6o~hRd6pFeA1`%y89HEkDI)!UKyQ%N}j=&v!4}ewI=L zZwn%0QsF@j_SZ{QOd^yj$@yhd6@Z*Uh2w8H(sgd(x+z%rQOSqfh*YAHP9-(cT9H;z zz3Hk@DJ(pOD%Hcww&*HsNjliunZ6Y`n|!B9mV#Nj()K>DFm0q#N%U&f zdvrpnlk6`6t7lb#vQ2U|VfBJ_B~0!itLhxlsLMT)l(n*Vx+5fiJlhEcn!XF)oZ zR6mWO5*-tJ`Syx4@zgzZ3icJ#FN*=%DL5brNcPBT7h5}K7a}sX<5}~}6>!7<=q*Gh zk5^ni`WxK22KO1jm0qXg0kv8k$ryAva5GyQPR5|aF?Yy0ptpL15)K`bxofTsDd*53 z)i14c^G&uK&(vn?hU1Y?oxb(!?K<@B5~|WS9`RQ%!t=UA(*xCJbob@qiGc^Np@gF^W6J$n}EI<7r7%K1%Ae?Ik`vK#h9m zn&!D`l<9p`a#dPGjDe;~ms47ubaVBVRyw8CNw@lFBN7yGq&nGF8=Y)Is*^2To&R9c zb5*k@%oeoSR}@mq2ZbB@y$LEm;B5Z5p|*mVlDA@jck1Iz0^;bqQ0gskild!lBYY6h zwLBxCZnH&~C_+ADs<>K{HmOI_7=}HHc@6ZQTIW&jk+cRsyJ2B*Y}c;!DECNOLx8y9 z`pjC7a*w3-?~o0fksdS|kQu+P-sIHo^$g)imI%%K{1sLLI+9&&&AGY?_q6(I;Sf;s z``rjdAIGMuKU z^XGq6aul~j4YTG0%m&<@aE!bB#ie*}ZP66Up~J9? z^*`3Df1krPF8caS5hvx+VTpH_>WmZFb?8QCy!%vHYB7%vhq=*IY2U)sz|H=D?{8NJ zyYL!nZmo_)mzyG76Bk-n;mzRgP4ZLZ_=cckhR zn+9;X<^2uLWB9lpGqG(Qk_(L>#52~FtrT|=%m`2c$je0dBjb}8*-g= zya83KHw-=W(#IQ9)vDVo)6|+fYOUfevZGs3bpR2I*7ruI(V;q&=t5N$in}dUCEbzg zr0QecU9hT>3VS*l$`q+lb}>)HBWWQTmGnCK{wh^;by2#f*2yO4#dP8cgAM^t_vz## zxlTH{UsWfcFz68Qrd6GMB-cr&*RARRD2EOsT)e772=qGncmu0WJd*3AlY3Zo@(F_u zA-auKhY_(TQRuC#N)*bXLkSnO>L3EWPQE(?tCQ_$b#lk^pgO@Lu}*S0vaAyx=yme( zY^+W^lB4v}IL~hwZ0NjV7DOrb8E?pSu1Yfq2V#^gq4&BXgq8sjidKXRUJ*b^ual2A zz3RjxxlTHB&#MlHVbmeg8)B8IOT^NGV%HU5%%(HR!FZk)92kc-qBxEgj8+6guai&i zR8?CM^EBaj2kQ!D1oBKxNG-)e3~Kb7zFiscd7`hN8_Gm3A_hpL$Oz zYf(W$zYc97#;7m~n5KcYPv&l(Z7O%hfQG^sxRti&ccivCU*zw`Zw$a(0WY9i16O#; z3XtPBm3_|MQ1m>r&ThQ5)VfO>>nT?w7G7Mdb1tGGUmu=6AxROV)s*6x2|1zoo4sjy znr-Vr8ZW}_!BS^+=n8)!E~1r&wXjc~zY#YKjr!Po&|&Mg-xZFb+JH{jRp@SeP`0wB zf);oYw-~jaIld`3c)W+X13BD%ize%l12ZC*iprUs-+_zBJ<<* zUXhw4y-w-%xOyE@PCX`fMXnx~<5ppt-6`aT-B8a;F_$u_kf1eQ+mdxgq0-;H!*;{`ERjpW+SB1-URV66!s&M_S zW#;Z&odY5c6$b9=w>R|aP!b*$j(p>;&W)zC*sbrbm#g)#Uw$*YgObrnDc+)McvXNA zhsr{;Wp%u{SLsH=ph5`CRw@$$xk@^&%BzGUwMsU#eWFxcfm|g$S+FcgPSz_+q<)iy z${n6qr7ziEp%PB$Rq}EDQ6(LzRkG7X+>!^=HQW-dU($4yTBUf*qS79A{fK9HRG1|J zDh<5SZfb`PL^a+)t|qK_bgjX$98DP0-0Hm|N>S+og`+ps6Kf@FyI_zDq$;V{Tek$g zzYW*%G~wvdLa_`~6~x;#5v$2AbGF~!Hlgcxy^4XY4NV_oh-6vXP}0fFVzu=_F)}qF z=}Jl){@!G@RGqHm{$O1g5(XVY>y5*0v8Ho}$@5j(Vg|003qu|C5TZ}CO6&OkkZ>=r zszfDb6*6pW$6J6^Xp}*RK<*jVArJ-?Liu)K6=qq4N((pVnBP#Ws}3S}D|US4u*!IX z9dkEglk0~YaS5j$)1FYIHy1Z}I_Fj4LKEO`FxG)l1{DHxF|o>*44(?m-@)3{snQFA zmF+UzL)ron$lI-mRsxI30ktDq1=Mi0q^99!U>Mh^ECL5iOE*gbR2ulmXh`aUnMx}? z#xzr_QdIVW!}O+lVwGgCpE}c^3_1jVEwMToB@Ar{+WA%wpp1n0_G49(7qh6WfMU~n z$dRg~+Wyl_a>h3&>v{-@S%vJ5C7RpiRUQlEI_c3(%1VfsrwK=E#R#E{EN?V)KaIyd z@erZP3Ygw#>EQyoO1hs1YJo_2JdXZiVRGX#mVO_1J2sr?23zR@mmWFrw&Pk*bJbRd z#evu377yCzH!&k-E1wQ8zhGI{Y~*}8y!>Wny@AO^%et)TZ_ItmY7_eqyKZV$yFoXL z5ntG>E1SN{m9@@1n%?nb$ILf3>x$*LDyT{?QK8|cWmN(8i&tsydt`rmuS%zsNryD1 z3T;RUlMX4|?5v9-v`0H4r1v)KJm&3CBcKh?ku~Q^cK@#a4hvMS2`lBovMFvQBsV{Y z!clV|Mrl?ctup$XnpI`lFJ7fR1f!YGXex?`MTcT9OKwAnSac}lX6R7brLuF@kH+gT ztXfU(q8vJm%1zN~+l0xLMtjRrR6z_aSXqk7FSrcj_c^JsGp<%FaF=?VO~6LBE;RK- zW{Rht%Os5Yxv!L|%{ED?!_NTd+>WS{GH$P zR{W8)hro#@4QAHfi$9X~`MuCbilH3nNEQhV{?RJ7h<7CWy1E5*RqyIO)Y3be{5IL> z^CMg$jTPevvIV{8xl3A5d=}xW?ZbaR><_!m?f3tNZ99iwR&d|%Vg1L!++F?g@^HF3 zJl?G@R_AA5x5LBc>-zS5WiBO`KC!&-f%kT~+if4tL43lUeI%gnB0PVW_LqN=PxfZ? zpq{|bCT!QEl^%kV!&_Q_%xthvMT3S6>W9fqsretiM-iDY}} z9_J-u4BVUy`QPeO$>2c4`Yrg}5$3XZ3TVzlIXHO{g*j|zBZ?4^;)5}kdnY86C=3U(pJ42^$$o^Plm9U@ zz>eKkkSNly%BY+}vY$Z%C<@Aa3C?~sIvaw8h`kWM01rAZX5fAX>Oy1&GXPIT7tljR zfC>QYBYO0+u`dm#SZC%lHixvpL#)PEihJ0&jS18DR0gSErlG=?u|VUiDVnz$TLx4z z`+{P#FPSjk%;duSmt2_tf;@uuq;)_cby8Mp@IAI9yz@B1V02d0=}o11tT+nPpNS?% z5kN2sZMzcU01E^BXIh+KK=vgF%Qd#F=p;^`RJb4`fMBhaG=`8%g(f^+7%g9>4GrF? z5u(Ryge-E_HVeQx9gmySd00|*w#5%X*%uU@ec^?fK0p#@zX<~Ew;(bre(XU?QG`SU zM3&_HqL9C=&KIu^%d2ZRqUT=szz0Qqd--sFviSRzP-PZzrX$C>*hQ3_@S2ot0D#N>|+M<_Zt85`tHZFApd&%u-+BE z-{0L8zpri&yZ9-VM1M$^OZM&W;Ao{y8l%eh3ew=i)`4eP;lh1&s@ty^9K}SE8Ex@u`mtCdbYX7B08@XicL!*0hliWx{@>?^6g#Tw zR)J9P5776Lw))e9nfFRzXnS4$%JPr4o4NCo;S;akezm-{4sukP3JXxu(%fzj=LeoB zB=kx9`aq_1#z8@51{rQWWbEXlgC6HPu)zU0nzAs%|IP9mvKTkJVp4Yuu6%e2!4*E6 zF?1T9VSbAFSR0V|=*CJX%JB7^BdClam~=n0!VL&K2#vi^D?(c@d`ByU?_NA(gRffw zqeO&2B_fYTm62*=fK^c=zKWVvgw|+!HZYQy5b>}HQ5DVAf5BoZY$U9sj)Vnd*Kt(r zM4}QR5>?R@c8>j-ZBWDbohgEdkV8(}Pu{&56>Dim#R1wbA#IU)RGyTD=1Ez6wzU@& z;Awdccv?;c+L!Ra5d{kuQItWjSE^wJ!U|*{FJscGAx0fE#9j-i>+fKh<&QrWi^Z#(?d|%}&IVkpe!F^g4x?5`X}+#ko15kJ zaJMzXY@ao@a?zn;jrZ_ld%s`ae%%lI^_?0q<fD*Jv|!z?zqevVEE=puSENW>Er@BEyHSA@Umh{#(jw-iUdPLMv}jqe z*TFKD7Obe)byyJ#Vv#20U1(B2K1=)%AA2KHn4+p;VkixRd(&8j53d$dBdzhnaCQ@5;t8S|CKZ zAv)jNMyMk`@R)(#%GKj`@iYgl0E|WF3w}R%jPLjl%+AET^ zbaCq2B5Yxsn!4QLStK&GZ6WvL&<;hVeNn$jcTyOF?om#hzL`GAZ1LXBT`zo|zB#~fSCejz@An8XQ zgHRC&k}44bJ45H+QFqC~_;$RQBFHR^(+E@^OX)|3KXPkU)Y(@?!UEp2v}q8w^jt12 z5GmzligBPqSS?O{NE8*6s5lKd+FV763MC2=a{|dJWc{~$Gv`uGC>Ja_hapXv!SoI+ zvHdh#g}&crg9tQ!pMKAx6vb}TpVIF{xp-}-*>P{2R6iKo-9$S zBp-J7YqKG{E}2kPC7by9w!GdeM5m;jY%X4kZc#93am@5@T4r%G%YkuR8blK%O_nhX zS{ySix4Pf$hW+Es)%H4zfYdGnmGfxO%rtt=S@&YjJ^Ycg8 z1-62XV5|SYSh+^wCDEC*eD)vKq{q!3epVs%3fN|e_->t{Cfz$31u)Qfw4elSh}5Qh z0;ik}1DTLqEmuEauEDN!s0^)%Q0f9Z@TTfg7opU}?KelN~L7CFHs{IDN!=% z$eAF5X}jhnsf-wYwqimMTvDL_H>LBD6vxhV$ss#nRY8-(Biyq%SQ}S#-he* z@1I_$ELyBZ>oQ@&pv8IBxIh@wt5LuWElY#1B6>uT+i~bK>s^Q^(sdy~t?ELI)M^*v ziPWYPnr)C(=|T(|w4rj#Z$&6|DYpMQUFsr~x?sluEn_Vh%vN=CUXNLtOOgQNF6QKBwEffCUp3TZXO#RJoJ;^uSAQ>)}{7|@KgV2tE# z80L<)-!F%Sc8xdfR!SzfN^aBK+}(B@&D$k6X>NC+Lv(85EIs~O2{qGAHAE&M*IQti z8X}XBw_zM7GM&k-k<+Gmd;Dmk!8!7%nyVudbde&nd!;c?&ZmiD%B){tmc36Cg}RZv zuv_A5*lKis`DTFsu0CHL&Ni^0(_Bpg|Au=WFW@iu-vKtVd``FJJPG78*~)bduZMA` zQnG>P3H(r22YnR!gl?VkN<2-JtXunvy;#RPMa`<4RL47Xi>89}I^HhvHL#dE9#!y_ zP@m@$Kc|1ixNKK9?t60ocI>@04{gE4R_0!(i{GxGe;Zp=@OimSEm!P#5Yk-{?W^@i zP>);>fth7K^Wkoi@RKA*a5qf3zGQdLrk=vxfHl9n%@XL-Ckc(H*w)MuU`^OhQiW&K zsNkvgw$vTMhG*#Fc8@lCD}K;X$)=u1mE-v)v;xoWn@&|`^^J*VDB>d~B?W}1vE+%u zUbM4@KdTq`46~*Jo8Pq8{628BKa85_Caiq0k$vTt`6wB?zDEi2g}v-+T~D(P2b*Z{ z*wVNcBwfUdB)io+o~wok^LHJHC9WExS(Z!Yj#F#Qg={{_6iO5{C`xhPQ3}ZO&VY%nx14{ zPyFw*d!k8$BYNWI**(#u!4W<2$FqB)NrNML;_=x%(WC)-0vdgHd=ADycpeFUd=D#d zx?2DsaWR9gaHmANGvmZBVvXtaQv#0TrT8w`sS41nf2u4PjXkmV8URU@_}TW}XDW;d7P7XK8 zvUabZ+Hq&M+7#4tSlxs>r`3yvDeQ;!`rludk56oQANH))n>{S%Fx26PJpt)IHiM7OLhmM5a4@+loD_^`~J|2s}|1`r*wdGgFgf(S$#0>aCp9MykCJi{Q%Fb;a0NY=Vs{-H7au&Xjx|J zLS|4T8}Gx!!~({yW>8`;iX8k(rF~J}{QMudwRcZeP3P!~eJ}J3VQiv2{<(n>sTjhw$sD?75-Jv37bdz@9zPl+DQPHEEs0X#xI%;zJfdM@65 z5NZm&d5@XP_gC7%)x+ZaJf+F!+|#d&w-O!3%MhYAh$pGZf(qv@R*+>O3Cf~*B2oU$ z(e9z1D*4EoGvk2y++u{+^tW9jOn31O&H=7ci0&`vPu9@@>J(Vh^R#}`H@($IP1OCG#L!@Hls4 zr;q`82<-Xsc)OI<!UJ)z#VwmOt04UDc*<{{NfAunJgOI@!lIcnzF z(ruTi^le^aIs8DCy|f2`SKcsCF*_Gn+YlfNBsQB1aN%0HpJ70;+L+j%rt8c?v)Lj0 z8Yl-6IvW@laRk+U8?x7I^vx}l6oqf^$Zg9|5J??PKUVm&e2wx)+a5x*NlBR9^!ewi z4%uFMD#K)Gq|qRq1)+j}-rOyBYcqVsU9d_2RV7C~d5rh^%aU`_itIP4M?E4cl*pD$ zXla8qozNZT418~x)A>FwZrf!##x1;A)4D=Nfq8mDMsRzl zrEpfO`8vPmVaGT>3ct(4`}_SGZiZgLJ4IyHiPY9}=xx3X@uNOnY|Nf>0^_!vKfLny5pq^ z?S~FqjG7UIsSVxI3w5VkrrP5$-QBp?w8P_bfXE(imtOaHyUe=BdzUv_96lcg|+dhn~P`)=g%`3Lm6EN9dco-5%B zOf|f;N3*?)61L7;L+@`?wXT^9L1{@xW7TNMWQ3X}-R*$ZkeL9gcFtBBxhW-83a51=Pl9Scp@opVWr}j=M`S$GZ(F?fA?NLxYUBd<&NS6OK{7;b>@?x2I ztQhU#R2A8tIm#kw%T}QB%g&AYQ$Zq$1DQ%5bzMUHZj~|@NB)Im=fdwmKend!s>zr` z_+ofodp$We@#Cd1Kqau0gcmC)@UQSNwqQ~NMccm z)QzFgcuE@OE0Q?zf@i8gWS5GA>LI+lnHZ_SNH{1)ck@BbWCXT19+JTBZbmA(iSIa4 zJtN=GD3>~vTey*R2<^zD*_m%L_2386T*$HY1}<^9ZeoI}RAS2OXahBo{m0l>{!Zq@ znbg%jwU<6U^vm58<`(4a;+huZj9H6pHoC{p-l#2RShc9;VfN?|95rap*@79rPoQ8^Tu+ZW%tXkAOF0`OIXA5Q=7cH1ECt{LSEV19W z5AlX7qi4~hKp3>5APb_9_Le4l`f5?EqvY5;6J07SdKA-5HKHI3gVJ9sBqb(Fly&T=6%`$OB{Dj4vo~@%aXqQkm66!T+t*==Ml_kOlP{}mX7q#j);*&x;0TyMuT!lLPLn)ULxqJxt(;ip0&V< zn4wW3kYcE2G>n|cn^IZkM2sY6`c?F*NUM}9Day&Uw47XKH@K{@NUW7Cs?14_brvG+ z1R^clPg#vJo(ruYSkgRI`UEozsbmRdM`J*HRC~9*zuVk?m(Yp~Dg=5BH0C|To(zF9R1r*|(aWRRFo_^C4i1A0ERDM~ zd|Etnpgb#7&Vw8%%d9~*;nZU($EU?J(_-<{?rbrpb{a^ARf7tX=Nzlny9HEOvV_1h?pjKj0{SIaHLl0@W6lwq#MMDuEx8K)96dObmj7V#)?ve(F!SQ(!dFMpF(m*TN-iYBcbRzf?+?E$1rltC$VZaGH_D4>K zLfa1nx&~M&Np0&~Iu-jPXPr`~rv7MjhrT~D4553$`cMwFz<@RsT6loy?2mX(HD=bU zpm{ZIGfpLD)VCg3WTHgWkz|D3BFPn%SH;UfKd;GL+mj-~%Ad~R9Qp^(Y6w+x*+ zpdZ3`if$4UhaWjnO_DT7h$O{%zo?U06ok!1@VH#GZAMt4j1b&j8G*TO!vtiQ6qMDj zA)7@L}SFAXkB6l#Hc@5-tAK6Nq*n7?=z-G*`cm+=QE0{M$8cnq}R&#Gv?@+iawrRD}ScBb>39IrI+tr=ISTw z^^OG_y#tS>wKzS&naIpMK&#&K-WGjj5$>n>^>p>eAB)AsHH?)Z8@K<_q!j)Q53gNp z_vU{GI7IvT%aA1NH;wP|zbRpjteJkqAf5k2z1FU2EmiX71+H!sB_ZHgSxBY(UU zkF+UrM2|ea6pyqif*yemz}?3LgDt$)4}N?P{lRX%yt%snHf#>--SV*A+1uulXM5}x zPt%DW{Dt+46SxCzvl@UOP7(pn$uPd{6Q}M^iaV#hE+2V%ds}dcy}n#}kMYW*-_9F5 zoWMCX6i3y)8pb1VI^ye;2nTJCcST7e8$CON-e<7pWnb&nKA@Upj}xEQ?0}!$dQ))E zXnh;}oYpTErtlxu>wm*@?a$+ZP8DYLg4sXQ@g_ODb)>fqUi2z4rzdP>d|WSg&l3wB z@MwL=PI^l~9M4Y^h#Jn&Rxjw_A4bc*nBWb@$Ks%W-Zp!J8nb%CKRy0@5sNRcx2Z6z z7f!H%ot-6qfdD8{0me9B!cHnYYWCL!UYQgAKnKE&4{~ z@^H3+iFR{Aem3oHyfUv#I#oD|7utp}xOOu~O5~G(HWlXd!dPXsQLvi1YIMNQX+1f7 zP|P(<1(@6PR_y1p8=Aw*59zYo#EFv@+dV$oA4W@4FVusnK9gpWrtJu_kD<3;S;xj` zM!mi4W9Tid@Z(m@qm>1}kWO)rVXw3|fZ`sf44=hbaTa1~MNM`fglMPNFuI9*#+^A4 zQ`QlYIAc%l&=l|Oh$Iy+q7W$S+7&Kaiey4vPH(lKX$!ID&9ScppA3LrIgSN#)<2(@ zEJn=^+c(0b7+-^>4NIgC6a3RFx2Er@`V#g)i8A?`EVd&wxRW+Puo~`e`v+cdcYvGw ze!v9r+^(Gk1bre{a$*i^MOXD%TRuq{ISJbWE24&y;9e>!XG$IlSLn^fN-nd~%J*3Z z(|oh~czUgTDf5u(laz?Crnbcsh}LQ?({wddt!K&HSyD6x{tQn!IR{61+c`diSD$uzFhMk~8 zdQfQrjCqUk_2i~1XYHiPEEsoE2@GL1SGc+C{ZFL20lceua%W%&DV|NQl@zYW9w{%W`w zjx;m!bZ|B=donnCsPw;G>-*nuH_YJ|Si1)wLYusJJ-DWO*#Fqv?BR5&_w?_>V)5FS zkNujymD)b-LVJM@{D=6h*2(x}ESVmH5{5?LA3Ns^ho$aUhYJ|rpP&EyGF+Ywmxq&A z-?qDlTwf2Xmtm|LN#F7$!0mRM3ivE` z&k8Kty)YA?Ri4b|8q@WQoct4YO@Pm`ZRV;1}fO~K9m>E?f2A9 z=;mR{cNmtpkK^HPSdV~0{B_`q?+I{Qt?sBIvsgVZu59%QG|l88J=z+(+h==PChl>* zFT?-&@@nuoOHy&4UW-nTm`RoA_sCJS=<&$Ii-?h9Y0>GCqm+)DZ%FbevF?ILj-rL^ zk;N&rBkTQs`F*_~%*MsO9v%)DeuVXEzI&J#qQ#c3&bG~#Ne~5F-jH&!Q;Y2l7}KG_ zu*LM`k9JJR_=XF}%fq zWo$|oN|2obg%M3M7YR35S@M!2I*ZTj7BIY>$f5FOY{0}qTKK{4N+SP0gcjSC%{MTlx zI-UBeg!{|VRqNd`K>ifoeNnoG-AHaJV_|N{*zdP?*$k#hA%0FaU(f%71yNn>N!FNF zb1qef<1x>xhTl#4yc-9)%VgH=1N~((uNvKDGOrq8xe@o+)~Wu@@D z1m#L`3{)(mC$-f(xH+Q3#uI74%{Xbc?Mf4>;xj9b#r$XUxQ~?S;W^gC`Zlpp%1;T3 zCG?b_-n-hUz>Qc>xh*b~$IDg|OYmi@sV?(uJT`r+VM9?K16^N2$3X9OeCRs*H(T~Q zeirm@$IpVUcKow$H^uy~x%qg~U9tM2d>P(^JTcjI@)Wyw=@9o>@G+Xy_M7|&h+CHY z_=hdc?&S{q=f#)pKh7pwtQMKSkAv4{ANY3KuHHgb{k+gvJa*7}*@W$T||pRF7T&!9}FXO6R%vePriQKrW;N85MXVtmL$N~B{}Og=7eX@f@e9(p;Nw5d2Hiqr|7mQ{mctW; zPPEZgxy!p0{ZTo*WE(W)@WOWRYQq18sjT(#7%4Ac*Rd+NjhA1L%49t+x=lsgf{eui zOKUm~j6E%fyCBS58RRYl+nWo*=ssKA==dsJS8(CZIWNq@I^3SVxq&-l?zV7!%=u5V z*&eW4xmpkpKeqS#?G?#dnm;Pp)+FT?&mxhjZ40qW{_v`y z&o{Js>84lKO82yk^zN#dgHIDB>(*X#MBO??F}f|7t~!SmsThg9l_y7?B#F^%a=ppp z^wj4sm?Jl(G1g{A)9}axmyKm#g;tCt5^T#v`r^EiNk8%!go;4${r%#VNj2~dE|VO% z|B`tLB2#8zoJRQaSV})K{E=I;qRzfD60*07xYCn|l=3pgIC+MMlXvPv0>hO}_5~`f z#9T!VH`0+rO!VN!IGMG8$oan8-rsF*zh}9=f&n!z;6UfHXu@F_IGkuyRs<+fa*|WS zjY4M9Vs*dU4g1HNtL=5wSv-#x%}g@Fl-TC5`MDnUoA0+OJdR6)2s^f#?c;g0Xq=|; zASo>agU4~TAi~_tQtwfZm~v?lP3aqLQ{J+T5*LS<#WXz8u)ba1tg}cdQC20NfDzx8 z*L#KNl$4WAdW(gj#~YvF5|Z+umM2GyFxq1R$G+qVuCEjEoiQVlbjoF^=3&n&w0-^4 zuauPK!6TrM32~PmyCz+MRu`dkE4=tPRhPO5r7q@iRQu#~)!9g?lng2=B_kzDE_92g zd3oKwkd(2gvC>J)a$988OIegyXDulOC05FZw^$l_Vq;0dpv8IJ)(2akr7UW!w!Xq* zr7T*kMeE{T!l1=@)wrw|)2mUy4J`|LuOfOxk=tG9m+M`KC(?BxK&|RRjMQou;)&Fz z6q;?2Rp~+uTCoeUB9yum+kc%dbrDKkuwy88A*1=OOHfM2j-e_UDN%Bv3jtMHyAYN| zjg|HXt2z8`{ zL5mZ233Zs5UX2oU2?~^m9#KdaB2M|6w)5jEZDXtCZ5Ysuv|xTJgVRiLVcc3{G9$3$=P7M`K2e|p2ZWc73K4EA?#dc?oy4{3b?x!J7 ze_>rfc9y1c&8+4@v52C^Qdw>--L$X*?rTg%B;RIH4KXQ zhzUvo;b|=4M)XGrd(qAs{;Xc$v(1_cY~$Eo^ZUTj{xE`~TW0csNA{Ip@}p$zS|26I z7x}WUbv^kjJ|EHry-2cK$%9*H@VL@yx%#n&12~V|PREEB=JH_w2hSVLOR2dOHg1xs z^GLQ?!c*y8lmd29DWu<~V6~;UGA&vvN>5kL;z|-rPibq?>57>wmr_+Fs`j6q5vrQR z_qu&&5gE!1b(z~@4|SSZA7OUvdqS;Tc6OVSI}&Q;PMy)_RA`r})wX>VBx)_#5^I;K z)Ha`7;PCT#186VJXsGpk<(n{D015Nq*He2L!NoNUVEwjzni%G@24C!h<)+nmMh%!D zC~c7PvFE(H9-iG>O&VY%&R=T(`|O@*(%^`mxOsL@G-+@|PyF%ho@mnGh@N(5{|<~UZ;oSJ3JYuz?Vt82Xi;T+`=?#hUT zq9^G{v9oB-AY&a2@3>r2Of^599Bz_j|6V_}{+chds_y$Yw7UAo{Dp8vQHK7i%#@8Jz(qH<9fM!;<9hYMXN);(%aDFqxnga zP_r4@UbuuFHwu{9R$nY|mHT5cE@x_k`|)S>f<37XRr47l(;Y)^#h%srQyK&2wC>n0 zZ9c&P*ry4DDJsnAixXNO9-xncE5}@e{q#O=FW}ozQ6CvjE~f--JD<^<$m(olI$qrWpal)zI@; z-i|w`)nu!GG1;8eQVB0td& zrPce1qNP=Nx-mT20W;O{5G&jUt#~s!yQ^k0vb3syOlx(RN2rte+{9G>#k&$ht)X}7 z+1dDLe?|6{u{EN}=imKBcF-)?ooh7-W?xp`9z`HXQj-OhuO3y)8bF-_YkHp6@9;(vl*QM?y#7=DkU#m(DO<`e7`amKeSj-VNCJn)%ChWX7Ma?Tkb2)K+P2G7 zYMa+sF1iBM;$(Gryjw@{RNjVBF*_INY?b#U$O4JY=4xBGdhTb~T(a7j*q^5B%tEu7 zBD+6?0|}iC%q4LIQ1^~tTE9?I6n@(VxfwIh*wT*`{w!ak{LvPO&}>o?lZqv+ME<#| zLs5pw(8!R2bQS~&{&{n^+^u0KYY)uW4YEnvQYA+{d5rh^D@b$FitIP4=Q<)Pl*pD$ zXla>1OD9** zD(JdGMuGO;RjF%xrxgw2IP=>@>U7P+jzN#Y51v=P->=>4dKY9HBB`zC&?J8uK0~b> zU-^TI-NnZ2MJF(BD>}ZEB`Jelh@=AD-rk~mnJ-i+w!{c*+$R2N( zUiWyr%(};WmpWP;J|70-?_S{rclU}^c-xP+?V5_d6Qq+xx#u~r5TKH!ge=k?ve!xv zewB6KjXXa8fL@p7jC#UzC0v22hR60UO4vGY4ZXin)w*Ub1f?Y%ja8#1lM!l`bhiUq zLuLY~+Cgi%TDJnz-+%k(uYdh*820y9!^L37Ci!et|CEw%&;B00ZJXRJ1sR-c*kCh> zc?h>ij2BUH#AC&14<{MFyROM1Y0Fli@=MT-`BOn6i36ER9(7#`L%_d;M4gf_qf6+R z*fCs%luD(}qv9wHcl4Xm(otHCHjAi%{f~z<5vQ-4mOxErv?++&i;rJnOl&vpwJlXkuzp3 zG7}bBT!vMPn#Y9}H0Nx=jN_sOGv-80vQ8xS`}PsrP-XNidK3tQRup7G6tcoclRbU4 zsB@{XvRLNIDZ|RR5Q{jRxyVWOn@Eh3smD4;4R8(Gc7RT64ac{>u6OYKWQdgGh-bC; z`2HvH#~Ik+cb`=iiikPMWOQa6M3<&n;U#*MA0o3mKNrJyqC{E8 z_LRS-W3NO;$KFwdsNyt%jD}OkC8DPD2<9}Fdp7%6Ha5>8oP}WrWcluCc|D5hrW#R@ zg+b}B6_OGYCCWN>)QXCZy%HH6x!D`JoVcFU>dHv&u5gm^(*!aaPOfN@rt=79G^R6M zV*8O3F_K8PCJM@EP!36G2oc-@1U)skSFP5w7B~?zG)e?g4AqQ=krO#eD$AURk;F{D zie43Im2xFTIk}dWlgsS4mK7F>wUR}ZImxlkB+|IKBYTQ=x4pmH+RC5S8d)^cCk4ho1%o=1!TYBvk zShc9E${KqOF3a44409gK!{+CD*l)hywp0^?oH1*VO=Pjm8kB9Dc5eY$3iH}wX{mP zupb*XGoKCSMwInqbYI4AS6~oqsaK*ZBq?=*t^70Tq>!Z4$(&%Y=S>^jF)}C-%mIcb zgus9Zh34Kgf3Le2hjLCeW;P3n@l?|`<5XfsuM8;BA|549_JX$(E92ARWlw*HV66Ev zOA*wVS+AwFGJgqNiU(d?gb;X9BP39Z78%#0MXeW z@tkVRtXDzvYT9O;O3bKlQKCgWN}Q};QDS9$TD-pg$d+GMe`Gnk`XioGYiHW8sQsF3 zOwr;c9g7w&VN;{U9g7+*WcnlQ5nz-7qpk4a768a5UL(kQQ)p5A9)dj5w zQh#Z)pySAAn*|*JO%}LgqfI(F7Cj2ICLIw>x!SONEb5IiSe~m5>!=azTyVq)c6K)d zv^usKps5U6BN&VpBe;7lRvbA@l*o9ZU!pV$nJ5u;BpG41NOFDSRq>+C&ucQ*_Tu+XwEjb zd$_Cf;Y4>(eZo~sy%J)pVLRZ8qMk>6W~zRCVZj>=V9(tqy+Rd z7Cmis5bdq1F{?NDJhQ3;PJ`r`LVL^5sRQ~UjIHPp*m>`tZt|6NRNPbd1wa$>$q=70LX(Jg*BXLSml?#g% zmO4tdAjnmq7$sw=p+pOTHTe;7RdUPzzB5W(ll;DEUtdg(vO`_tPF57>-;dQ9W)YQV`OL0{Q+hS>{YhR2yoJoG&gWY zJ;}~1DI4f#_ugdOFZ5nVKd1MLg~|Nq_4+?>#rdy^K%<0NqhQw6G~DCu-+41s!$qrz zIU`{!q;!%R<4sUYZNa0!j!?>jf92bGh9t|(qhr2WX_nJ(E|Dm?>0F9ZEWCwS#V~O zG-s6Tu?xSx17HrjXi_n2ET)ATzq}jJp<~W?oGnPJ@?*0c?sof!rCVB5eAk$71Za8Y zedWxdXU_Ow!*9M8U88b+{IG#R_nYNmeS$BiMhUMH1>GkM&g0C{C32krorF1~FjZM; zDOkY;)N@9lfqqW!$)<#AvoN>oTJB%vx49$qZ}Ajd=fH`^cgK(Z`>&1W2KC7v4v{At6kF}_)lVU=>j!(Xz zT^Qoc`D-8Y-A#Z|c^wbnrI6|7%oiogQS-yTCt-k$tHjSRSsC2E{Csu2v{xV2wYTEd z^j?UMRre_oldm<|c7#@#s7=U}3OL{G?{J*#_6KYn7>;mC<@e>@-d{f~&fvRevl?K6 z8P5H**L$^wb`}zhNyd{iv!Tm*a<|_-jJ|vp6x)I+vih9h?jFLP4g11!H3Vnw{TTsL zeAfe!;=A-x{9G?2s!!D(3F|6XRrPBQ8R%RuVg}U>(85?}YcE%@#>7Y1s0ddM!t#w- zuRSD!XT>FjbXHud_k6X3BMX1{)iA4#sa2+^?$WXLe%;wsDEj&t1 z%XD6gexqcA;yJm5e!*m~^7iL;zh>d8`PI5WsKKonsj6PN4=6hzqOO*7Y=Lo*!mFMz12=x7UcT4y5?deqViG}J#d z_k6!wE$`R=4-SnvzA+Q|ZjkBYFnrrS4JOrx!|`^r8xAkq)o{1DU*A04ePRag#_Mz; z7g|lbxXoQwjokJcETP}b+=A5atf|y*7C`2A)>O*P<@d$Y-Tm&lIqqoQqv7Mz7Onv9 z(h)#(X?eU^uKshk+}vMn8q4BG3eltG+|<_QtZ~*-1zhoR81+h7vX&~~%IEt7Y=PO` z-Cg}OBj$GJ{I%H>v)RMH-`Riv^Krd>fMMRo?9wnuJ>jCE;c1JvhM~t3tn_U%(Y!~) z<z$4 zap77K$m|m{ceeJfs>L`L#30GD;PHVBH2vQ|nHrqB7 z?k%~xKAzvf|9{%RUo*aFYS2>cToh;0-VDuYe>Z-2xK9oa+uo!bHk?wcH+xuHzWmdh z{rc|lxPLSJ`|H0!pi1 znYC(Ugo(cRlQHstzjg)YSCSlIc^6G;ja7SmHc9*S5_Js(E^!M!UwxwE+W{sTZ=H=GH>I^wv=@_9|T`^UZDBdjynRZwT#W%)MYjb~6 zrz-@ZGpPSe3$WOavny-erC>2)gjH9pV6yH}u)OY3;H-NTkk+6r3K27LsB->qP7?~>z){p)}T!U0qD{p?o@GcbghH0TGw>kh$~dw7!XvganKS5o<8*gR26WJ zs1(!y0tHboMdiNIw!~Z09E3gM&DgrNQY{%~$Bc2UbUQ+q2D?7SEgEmqU=gGmxG?JC zkVoj!po#;lK@|tC3i$c&p8W7A(s*!M!kOnDJt0z;CO?V2A$zMDR-}=+Y(VPKf=Dx~2qIO&l^xY`6RFy6BB@7QSYE}WZlWHKd@CW%08Xw)>CqA_xapA- z0QD#e+pHc*AyStn-}=G&n=VZOQjaFTdfHIY1Qh-teIJ)X02t^My=z# zP-7mC#*NH$D7TTHLNuzFrimH_OxBIuIF8)Nj`keCbQGG-HnBys38+hvFX(;Uc{=;V zw%H2T#>p2hqtqasv6(@MTcFdU1gC>~VuBz&N@y$4BZlI1>2Y(wU1A&vrzGlYaD7T~ z|0-|X$}H_)vCP)El{wQP;_^WjLbgNHsxH$ZYE_qkYgO0XzhbkqjM}QzzaSd>SFF}D zYNJ+h|B90&?q6}nv^i@mV-%v%e|i6k^FiLf;;gZM)arhz4d!0^oQS6WRTYTK4Y49$ z(B=IrRuKj2QsmYwa~UOe%Yk$$ab2S>B@U!V33iQolpsit650y%h@m)LdR(>a65~MJ zJ`?jM33m%}BTtuy^$~UjU40(6?COnh)lzE8RWalncTVe#3VfV@9}nMm&kxJ(%XHdA zN?5fjFmfK&8LL(WMoz7pH-{ByGWVQ8frr!R%vhe1L4k+!Cs^CSl2xq=jGR!yXm@F+ zVXRse7+JN^!7wRf)k?`2%qohb8dwz=x%hZnRb|Hm4a|&ezBS_*gSl$f$EsCsBp{AKwsf&X?5_dD!f z8U%3GN(FY{L7cVYFa<7yW%lfIUY5!^m)>m*l4Zj<$CIx~EQ9HMp4m;OLXycq8(q`2 zRPjs(N*>o&(@+r`WP=0ECEcp`o5Nr)ja;bP?U=7-PX`V8!3Z1N9Bt> zwnmouoUxYwBSZv(@UYpM0k3>_%qXeSWqdTHamS3u+ zn7UT`V)JnGw1yMJuaB4G$(d#syG#~i+Y+tXDL`U9vUNYY`1plYitGPmg@g@O z$mqrH)TLi!p=RPrf0?ON`iquO`geTkFPd?szi5yv{Zb>0A<5~YZKm|gY>-V@Hp0TF zH$pzCcOhYe6*7WYH>xXc`V|IRo}lPUc-WFJFl3s2ffcDLUuBUCYKnj%sVF)djJGKh z0@JvfXiShxMirJ>wGFZfJqzjdM#x8$PKUvB<7nK_6x%hG8f*FK7j1E1jTOLID;4C& zwK&H5xE5!{)}}(Pj=$+kZQDq@3W zhE}+OX}*@qjF3-OOKZbX;u>26((0o1PdKi{<=$BtN2@A3BBhxu$d7B4XAe04xS=U= zo^i&?h~$Q)EM*u{nV6l$AcbRWh#$rl`Pau!Ao4E&Ar8OfQlQ};xxhs4t@b_rcb-) z>%~BiwBZK3IIN)CC6P^f1Y<@jjWDpL8zHfczhhK3$R;EUJ1u%6RiDnJOW(K{jE52}`Kn z2>GPmg@g@O$OvNHXB(D@=<50BD|1aYnfy=~XnBJAAmL%FgTRp1hSCc{0976q;~JQt z`Un`3+M~0esQjR|tesKSD*wm~+bXCa;5$nlA1fmipt10278^$+;`8tgw{ z0&{!Zzu4mhhJVil1=1AWU^aS*xoF+OlsWFk{_~RZOoQ1IfLCmMi}C* z5=UW2>-e5rHaU&c#DVXgtWm&GPfj_aI$EKSrlt&{NcqeVCucayt|uJzUQ8aYlB-hGx;7GoS&GI(f0~Bx3w3wpN{VfnTplME!DgqEKmP zaqIPYs8{k*Sg7iqAdDVCrq=bef>1r;+$hND!%(V$`OQ8lIRLE=*z{h1ITR`rbVpeL zt&Rn(Y@Ow`P}15#qV?zO6#jIOP=6%-k6d|^H}W|IMoF=6m%|B^G$E*!WXirmNd`f! zq@!dj)ON6_J?bdi3XeKi7>|mtvRq3UsBJ<}E9uBbh1w1lwMQNKsPL$Rg?i+A8iH>w zGho~M-Ns;0HJWZA0~Lg?*zAt|Zn#)I^@-6_tO*6EKu;?O)#Gxj(6Ok>>BCT}u`fs_ z$YW##QgQ%V9p>fMr6U7Cb%^^eSs^_LjFMs%$VE0Nv`q+VC7IYNlw=SXCB72aCzCUw~;-FTEV8FQA@#A&L^ z%q@wNQ!hkD=A>zPzU2HUmNgQpNm4yI<44)Z&m4$2OmfHZ^~c*`dv-pk0u7ggwU`w+ zCH^s-b+ZCzu@X-C#&Fin3Y=xZV|ipa>t>EqoR4R^vTu?z9A#k%M?JaY`1*YdlU2qW zK|3}z7J3`UCgt%BhD4P;$ey%&5*uHYrKz0{I`5~VriwE4hZa()(y-Z(S~>rudE^V7 zgn^c8txr=7NmD3cq*3HnVwf({V)cEwACCLw=6Lu7OQGDWUA3g60f>wB)DI}3@k=3! z7D}f4k`9igwxol#No!ug^YLO1Qn%w5FGo>W(veM0;}rL4vPOKLCYzjcL?t+D!}c+= zsVRdfQa&@p$r%oORkOkpj(T#+A&Hcykfts!>EPTjOFHl+xtj(rrd8*pd^-L@nGP2# zC=6&+B-s@bX)Gv{6NoOS&1OiXFrYk>zGC4Bi8L0J$q6jvksE=MuJhnZOaY@wO?g7^ z?EtGhbW1(*qI;;QZ;~=MhN*`!Xoj)tdou5eC3a@-UYU#LovS5 z8LusHEC{1Vkh?5Ypr;jt>Jev1K~5irQcZahTOcI|pw(f9POC4CLY2zRYHD@VCJQyM zi;~f@naN%|k&-3^MoHPDOl%b~$sjOF${uBK0wqldjFMtZ z+>A@OK0s!|a1}N4Trv~NC8$ObmBxZ&D!jGG!UxAvOHCQ3x?Btbp%5ombNC^A5r;|6 za1;wp>PJ1fnj`U}%t8I2^P=J)gp<8uGv^n>Sr^Q5*3Al>lJdt$t(z4%%YxHM=P9;z zGskIW(nT5Kr_#mA8IH2BgrlC^ab#CKn74C0gYAu7W%C2QC z^hbl4YF)&pqLy1DlJ(yCLo0?YO7=nqm8q$=TNyw?J&6Zq(Zy}mAF}Gbnr4zxP0^tUVhqOTj1qf zKwfjAZGpFHTj1piLU1)`iMVcDVCGbdnd`;{W=^)dG*s&@+73Kd^eUgEHz>Jgq)j4b!V4e5i!(R^YVivR6hlH2L|PBP#D(wjDi( zs}rLuQMJKhZ;((%D0hW~T1)OG38kLmEfC7GUc}Ps(%k-_)v3W&>gKM8P|D*VlqzJG zLMU~~K$S}Utr7aqoxoPf%iJ5G3SfO`rPsaCA)*7lAT~TC; zQ(3Ar)H2d?s3oPg$V)P&sJL8)g{H_V%ow&PHP|Ar)LWLg#Tc1Ebu`c~F2Wi+EuSlg zv@A*ZoSl-77C|K?HAPmFB?7sb!mF}GP8lUzg7l`yD)f}4ZLmdNBDpX<$Bqqg8LY+7 z>YyKylJO;OWD)ib|9!Y!!vxUoWk3+6lIr*p$6Os>VvTC!OL-%`Pw5NRRiZ-9;)_|! z=UN$MNrJ(%QKyoRHZe*{YKpA1-W9@At+PT~UfYc1XVn(K3WZR<4atLuiZ$h zRhJ!KY8cwjk1sXMs<2~2%DiMTlo4tfU*a+@i=)(291~K;r--H1r5OX#>eOH>b#sG5 zN_iZFQiW_NNU2K(s#NO7i1d@%fvu94868rFgF&Dg;vo>O5@Q#DQmYKrjII-)W^{&H zM%o9^l2TjbHT?%kj541$I#Xm7lCr&)23zEnddm{G7$dV+jpG>FGAuJxGrFS46sIzy zGt@HDa;PPxw#Z8|rl`1FhJ~icD$G%~C^gt3uhd(XxWyQmLACo5!fj6dgKO1-44CX zQI9y}KNp_UN4HK)pW!8W#np;sLnY&Qm?Kxl3o=I|EmLiLiSujRUqhMV-Uw$kj(<_7 zw9zBN=_0xQZDRdN}X*oZQTVv%H)+=}5U$0Eliu%cX&U?fyxBaW$1MckQ%*rEtq z0JNiglGvl6w%DT~WfX)3?I@wfj`B?&7IT~>R2fo6r?ilV?yw0{7o(#=wAosMYEo4` z#HVomXPfeNI_jOI9FLJ|=cA?Z6nu<-#ZvqV{=F(6_0QFr!p5vQ-8%st^-f+|*u(yU ziq(t7=n~|zSXVO^)g{iJx~xtpr7C+ijI>cNl=Uo*R*yNCWez<#9Ic+(31-^YOF4$^ zZN1j7+6iWJ`qjfl{hC^mVvWrfMCN7K2E-`BjkfHkO6F!>bt9Q|O|2+bIhYugUCRNf z70p%6Brh9?<2?0DMAlRI8}egT&&m}fm-&q9HXx=Hm4SLPR;{{+OzqjsrKlXn9y02g z>&gheE6wE4Oy89p6jdduweB00!(s|bv5_ocF}jLbQ^I0&HDgg-E*A?u7pbgHD5Wa< zzO3b-KvEV*tH(5$bLh$8P(9+lQcX}75TmGASF)jI3U?cjT2U_8YDGC9Mp3ce!iavo z7>RN%2gE2U2HVXfg;O<>cGg=moW&@3OC}?PmXuS_4)ByJLyocVcC_a;2Hy#et!hM> zB!yv|UDC!fJ114lfz&OLLVH#j<5#h4X1N4bYOZ8TMN$XC7}BHcL{SMi+pL|RjCDCm zHEw}*fm>0A807-%0(V)tEs3tKFx&!b$8F}qMEPvb26UV{D~7AAFvlgZa$MO1Ah{uu zu<>ayb*yw|vCv;l8wJ;{R*kewK^2k8vqp|d7ml!K=1$aPGa+bSX{nY3C-Ae$*!e3B zQc_4IGOdwg(#i~D+j1MLW9HV>n2vaSmaOY?w5-u-!E^d(9!y=05?t8vbNL`LR5DiA z=x{QtYjjwnphOD;628lgQQQOIsOoEU@>Vo{@p~k1ReF!)ttgkvr6~l#n2iC0|m%xg0NrI73iH$g>LWN`(lsGbp9p#h6o+VTnQbwn=P#Rf6jUDBi zgcft0B~%$wMyIrp7j6_zI(^y*)ugICEm6L;uJi%SRnRdGU5wO6Nuiv9lD3m4qGY@* zmgv{<^0g_cm#!8S+KHK+JPjlDQC@iJD=m7l7+r$w7VB!pqPoO6RF~BWrBr1H%cYHd zp~Po#w0g{V@*H|{I9ffm8QO-|PC1OTy>kQw2|gOS=;-_A1avg-rdFj`d$Wa->h1z! z6yf+5*R9YfY6DU$%2gC5MrB1gAhn_ytDNNB19{R_3Do}0Sm{Lmb@DO(m1|wDATTAW z4M?r1Gl$i}JNeZ9b>^_zzfL~tpL=ZxJ|soS*upswDNQgvCU(*m#z( z7+u9`Q^I0&HDgg-E*A@38>y^LD5WarVL-j~XdDbzeC>4u% z7Kl+)ER$IvMo}9Oqp0j!F4&BsHXue(*)@ftHXue((KR;<6;AU=N}#u7IE&)FC6f_C zOUfx|ns`c;A;(yFJLc!1t45S*%86oBQYyKXnk$*M5OG;6hO1aMvwjJz)Lc2g%3Oh8 zbk12G6;}t^teu~XwLp1+TVP$_R+Lvpxxl)>T~?l*=$~>-VC}fc9B^52vYbIwI)e2K zgsZGD$0e|Geq~psa9wxd`kuV0W2MvZg&tknCutmr%(qY397EQgW z^N-djv1G0(5F0yYX&xqpRKgV02d$4`Z1d}TvKce{`}%mc7>48b{qA|VS>6uopR4ub zakJaP)l+!Q?sVZOdFmd%*{|;&kNY=pk?+6E7jppdUj}~hp29Eh?{}*R`lB(j4|r7a z+yY)wz}50_jPO1fJo7sb=O0_N4;1bA^0?mIMtF<225@}DLk1}<>PLrqzx%dX4eR}W zw}-g~XAa>qF>=yQkx@yBqe)?YDKxdqy8es_CQQ?!l=3zcC3G&;8T(xOrITbiE6n zTU$6bb}HIdQO<5hPV3;yu%O|9Y^QpqZn@<;1p+Yhm`+Tw_3-d{Xl8{eE%ThiSDWlm$ zSiZ9Ibtpy$IGQ-X!&<9N6e?>sQHu(IlddnOW3}%IR0#6PC_X z86oBV11F|z!3io`Fru(KMBB4mCV798)SQ?+c1Z|*an*$+sf$9A)JDjkYy*XnqiL|8 zgqOrZQ&vf71&A=2C=|M4TmdO0=i*REo@&W=?HDEb#Eg!7;#37(+Awu6!+v14WR%h~ zT8j9LoMO+D3Cvm1fD=?SFp8jTK~D#nPmhA$5c8Q3`ES zDv;mrZx6@iaV^Cs>5-)x8kmn+FZWmQ9dR~%+8xaQ45ui2bGCB!4~O+}^sz}m!CbCk zv4Cr{`gBwvP)ofuoqyZyZlxLS5-afEt#@})_$jRd{rqmZxtGGb#0q>fR40X>(kjpw zZ*d^;AZ3YckgZzp0>h@lUq+BCu^ab9t+^fdmAAU@jvH~?HKmoSwg#WCccO+06C-}T zCgR!n5E?~lWT=*aiQuyt!WnxW<7CUt(;f6b7Q>auwK@tas(W#Mx4Bo;-!U=bS3Mr# zS0cY$T12m_zuYci$olzeWf@fI6)YFeo7?sFO2~n!k)awTyHQnAAIBZ7u0GarxvnGE zy@T~bFqQVSfw7_Nuci%aG*C#@juYtMBUpW^k7GYgos8eY_n17L~#>f?Ub_ z)$Z{HW(bUcvq3~1naH`A%gH3Ai7}INo^Q6BV{i6XK@@r(;M?}mGr1Tc#m*Kxv##sfNE^z?1fK0iGYH+Ttnq^Pokp&fm-S%)qMnt zGTbFr;OD*=x$G@}F>)5}BT%M(`n=Sr&wMd*TFPIHoJH^nW{1S;`4!oqFV%V%7*@X+ zt8xgmG`8dTerEj2w3Hi!p0p-Y<~PW}FuWy7uek!>4EVTT73C@vHlp z|F-04F*Pz&%S!31Q0{LX1r^nO&VE~RF1y5tU-fvjcuu<3dGu%hjZ;_ezAc}b?>>%# zq(>j>Ecmr3Y7Q|qGE}3)ep_<-3*VM(a_-wQn^3N|_C+W!%Q7UnvhtUqs0(lb;T7CsB**?0yctJMaG9Q95;Pd0 zfGH#eTWpHHRm*x{nGR~8hF&1KqH)wiPCTYZ{CWv+Lmx;XH$j$aIQ*PB(kN_@r!LJ8 zZy=Gz2$`ztO2ZlBgu5@XbAX|;x;r@Dp$GxmAWv2FXaYOBkVbBTEOl?(;0H{^dnTQk zg3S+upjUM+Z-h+MP>f?DNFq$Hz_;`63VfShj$a!BQP%+>pj=^jP{o&}YUnFKaz*h- zi9B~=OF1VuS|aD=tmWK=aT0a$sADN~`9T*&F`#2F3NA95B9A*6vhjVUYC)wl_6jaP zbfe(P4W+0vwgM!NbY;3;9*_zUDhgi=+^2c@%ei2o;3$4Ma}=Y2f`NVlV-)MoQ!``> z$}p!+`Q@yFkgF(t^I{09zLZepT58|Bay>O9)Kt&h+LtqzFKDCSai78HWL=swQLxm$ zoLO%wU(TFO<;%HbqVOj8h|PaFb8N9GvR2D_U@84_u1ZLO1&_F>N+3&8iBJTv7a`ESC^l$~n2OWH~QqE$1$L7psd$9ZR9B`i;$% z`1&_CYgPTmu32gQ8dt^3^O$~_%eiu&#_Ei%04Wremo3NxlKaLUU9-znaDl_vEaO>h zumv6;jVtue}A)F z{pafQfB*Q$^>DHN0jG+=W{qKUwTZ3X!8)vO<}A7A9qhQi+T6Hx5&ra~>*M?F&K@`y z8^5=UxbE+f@o?q&qQthl8V1U)WQcykUGV5QoD%Z);dXO)+#S}0C=Q&_GS%T}j}ao6 zM^lv>{JKXH+vG)xrsES*PNFAnc`pI;Ip{m7{9_K5SToqtOlFzI#+)v(F{hd-WTXyb zNa6hcq%g8tm~S)4(YG4`OTGdzI^z=#ELDQ=g?B`nLT zG~I8eWVC@l{{-6zAw<{1;bps8-ww|kIMeZPyxr`s{wr$$V`SF@oawpR!C{M#&b@Xh z^1Jo+Huq@tw9h@dS%1qsx;Vm-f2+*HcW~lS=F!<^n|X41vw;oFFPW$B%t0U--MX`lwh$~-v04) zD1$sbKCbt0a%wI*@1LMdna#<32rdu***rcUGEd(hzVDvlt($rLaeTbV7P}87fpIef zuy}h|ZJ=kex!dH*(#3xB?Rzc*-|bepN9XtJyWF!6pm@FCF7Gq4-hE&H%sjfd+x%ST za`fHpI_Jj6o89hydH?u*3BcG4-D3Y|{0r;u*S}uhE})mU^SNezf~H{;n7h8xZFnRQ z3_`k7#Qip(^yY75S0twrWoE{Y++d( zg<9PcJJ#vjW=Q!@z_)nQ-=UpWIO#$p1QRXQv&}_mxko(b2Z=D6b=bG zfuiOO9Apaz8QquxN3AMTkkqP*IJ7*;qD2aw%)pjM#mgo*YD%7k(};*Pr-EZ{WJWk# zB~Px-bW`u#DKRpd$wJL!>aC7xvd}WwHbBMXEVN9nF;S5bBVQS=P2-9kv`@jm%&GN~ zS6~33Hu)NGeid{2ulT83?LXS5A7~2Osh}zB4?cxVcCsf+6ra&b%@s)&Dh&Km_Dbx# z(FLi+*7@lBUs2v956}X;f2@coM?H)%Dj}%0Q)#VHDOyh*S`1kH04>nBAWL0_y#nI^Jj6{6fXCvg_SWlB^!M=N@TVD>YYCm4sZu`$bXylIea~Ub>ESgLjRLu0yS5#Qw3X#nRxQp_b7#G0?MCS7B<4 zBMciHe;xnwo$Y@G!@L_DsvQ5Kp9IrkPJSpf8q0aUxIIW} z`i-Q967c0PLXLk%&n8{wS>UrNIWQ=}9A6%_t8PTy7D2HEQSlCPc4{#<)8FyaFXO@D z<74vQ+$!Cr(6o7W)D+a_S1p=P~Y&MMA7-< zdi@`l4elTGIZQ|1`pS2X|0HQXm>&5HB4u5iK;SQ~5{?;N>7NQ=;*WoKPyw{iG^jVXk=iTdRzrdRW zVsL$IwGG(8zs2hNaz7mR%gqtgTtSnU_`EU`h8M$^?~Yh&*1@@K<6L6xw2@K?{@ms# zn6>-)xy?^73plwR5|g1=i0Q2G)J173SqV<3DyZ`?Sq%rl-Q6$0nU`y$stBi7)%oyc z4O8kf=!%g#mD#y{duCp9s60fc7FdM~dH1+quQms`R=gwgBA`xP7eIZP4-R& zeBUh0%5t~?Z@*j}KOIfex%u*STs)q8MyyST@Cb4MX#A5r3y}XPAp2*;+Q9wck^jIp zBG!CgK=#if{NpGAHsAp2(#@`Fcy$Rghqko~g=dFt|;z`zCt|CJZS`DX#yKO@!# zZu(Rj|0K@>4LKOIGt;0ogx`kncS5T^9Mafb5?|$m5z6Tb}9Kny@yk z3&{RiggjoVXOY)g&7Xf1pvl7s`|~)OWWnKY|1{|dJ;xmh7$M7zi_m2zQ72Llqt%od z57BBW!YDQ2Sc@pC(Rhr=25OBNvw^;Y8*OPYQ+hRV(%~E%WauwXcaX(j5M1ULQ5qHb z;h^&tDWN%PfSt<{hoTWDr46#l$o$CF^Vl4V=mIMxBaVQHm~3h-gPFTAodX$zo$0~% zn#?9xDJ5&6#%UTQ&ooJ+ai)dGP0fgToPjcD+yEo4krITC*eKcPDCOBO_G3iZ8yhzA zn(@viUT3J}H9enkG*#r~n7n~w9F-Mw(2-lI5j(o8d;^;o12h52An^#J^qY(Wi+o7N zise>crprVm?+Qx;1})xve*URtvL=mO@)mg<1Bdrf3llpAZL?hKYzb*zWy;Xxg=r(^ z2iwIhzc*3Fzzy4rnVf-^XB_<3bZ4gd0)2@i69^i<&`jwc&P6E7GqF*!;jD%@+t5PE zMCVFGjiobC^586s+#@$jqh(4aY2=iNX&ZMs%cGT$BA^oK_e?UEB+A}k3d(Vg^G)1m zU}>lx+Sf)y&kJ)#T3R~a)MVSm{+Y~nY1yr97ke_RF^wH-l_WTws-jtqW>pbRuc~-X zqg_{w)Tzu*Z8S^r5S>~wvm^Q<6$5qZ3TH?3a+28*QTrH-lG_=Sv%yWFbOE?%2**#% zXXH2+BVrwsD>(vR?YvEouLMA;!-yYehs3_p86=TW;H#ZU>hYBTH26BsSBYes(9k(8 zkx}5Qo!jd1l>jvOI?kYpWE)@UEStzE@YT+?_4rBv8hllZg&AMzyr14zJO9_?D*d{vJ+1o>)bBzt@%01dv5^PZwCGQQHeQIS#LtDPh5@s$8H_&UzSiewvK>1?gY zDDc(J+V=QL02+K9=Y~bHjjwe6SY#CVYUh!Ad?f%4zK*liBH6}QI-@Nz3Va|I2U)g+wINqWl!7ZO>pkm*H7}K*Jgb= za(oK@WwxIS=4=9ct;N@X(QG~!G5TFa)21H3KWX}brU*9Z!rGqk7$=`XL^^IF_dE(C zEmNdd#$=5gli$J;#V2`?TFB^vjdmVYVVp8g8RKH?QKKC54`g&fJe!Q2Rwz8VWh~s1 zQo4mrX-F9}t4r#PDnr6JE-G>PU}{XXXW1+P!fiifpI-PoL7dXlii??tsX)Xa)Per_Dh$MYL1Z6e_z# zh^Co-qD<3PA)0FXiKKE{hDa*+6G`Q!=;6IV5|Up@S~|CGPCO6*O*RWNEqGpG4a#=6sIyfj^bqIw>aIn?r3H zLG7-jI3+t5$;E|J$<5AZY@2ygKg5!Q7?OEU5<~JUQHV2_Bqjbv)A@Z$G^PKQq$P8P zrp+MfqbI}$r~Sg<)1OIdKXFIE{f{Ii&b*O?_!~)wQ*BhP|B;EsTYLx~$p`MPdLxsI7wt=&WJi zPvE@Tx}DqXb86={)*akkew*D=0XNr9m*!y8iM${X{cxS?;t9P@bunD8x@20fS6>3y zsgTU_bxI>hotlz)zD{KcUZ*}c@z*KK!8kSXRwci^3LBq75`toS!bjg?fzk8}NfQjG zku6ourL$+KIqg)b#VsK%W zh!{=3kTd}d*@8uka!Ck^!3{s9re8>!0ETSI$}y271jXQnz0c_vk|tmxTeNaaBnd$= zxG+CKjHX{mnt+LH*&;@{Bm~9a!t4MsntmZ^0vNJ|ix}mS5EO$OoStUu6Z}Hb1TbVv zSB{A!At;6kM#hQJ^b1K7Fwq@e#44MH;22~xEKSVZPd=4sR4zA;Hm%t91aqKiwPgm* z8nuJFd>sjSu1tF!TN>)0YZMK1Ft3_hp$d9|p zl+kwlXs_fqoq%BUT~zibs|K!M6kp60jPy&b*g^fao`89)K^vRfrKXI7nkfOiDBHYbCn;Sq{dj5f11CBjRM+9X43KI7&U{dpVe+ z6TSZ?DxGvSSh&z-|4Qq9^WaBQjhUnKbAOIDY*jQ=`Oq;-zkn#kMTl3 zy)aoRxdPwmuDl-KDUMQ)@gkTH7ngakQgQ{p(_MN!zEd2f9^-p3LofCntdv}V?{wE* zkM9&msmJ&ptQipd9;_=6Sp~k+U3@*hQ=A6hgH;S7FHFS1O34-Y9&GCCaXtW2Dl&eA z>ng56CZ9j-{3-qB7T~- zhW-xF;RX(~!}4KS4o{L)g1udTlVS%+OV|rl&gN1}7-Tu?7~<45hBUX}6f36W82mJC z4L!-OJb02+f*oX689PXd*idEP`zkx!ylj^b>#63FJLbx1{Eps#mGFE^kxd0ruClr` z5>`m-Ss_Rj`@;c#>o&9qI2PNVvf+b_Cj_dvMxZB$Y@y?5@g(<1<23QZf{q1^>ZQ+O6@Guf4x)1Ba zVfk%sF2Q*Z#Jk7!_Ug-T*9Z9D@$!DRTHf1T{nDg4><@swy5AkvSM~_n2#!9b2=7#D4c>pOSK%DF2M_UCO^1@e^K8T>?G(-8~g)YHmS7Y(o9gZ-o z_)sriiA#+ToJ)Er>e73tlwEn$0}!~=2$VRZkB844tDzAfbw&?Fomspe2Gjc3rhQl~ zSKm#I^jZtg11Wqu$}~1|dbM6l7eb)66)E*c{}PD(X+&WB(IZiR78mv{1Q~>HPV;hW zXnkfuB5nMH2kr&R#IIc+@mY|lvV8B(9AyFBmu!CxzVF7vQG&@<2%I1wFe;9(HIb0G+SRpCR#)X-}ZZV3(pBk zYn$wOx)2g2`qng7(uhEmbho6WTz9taah{KFi}p4-R@R3^Vn#oEe9NEw8ooctrxGpM zE!B!jE%gR0uz*&?!jSn?TGd+e+u8Y<2<7eXK70%A3H9j0l}|P#xu-P*9~2HDhzb;rcz_zZ9Clc5^|ap)hnI(& z-8~Ly$kL*|47wTqhQZyMK>uz}ui%GLkaT1Ef)hE_XK|+d4+U><#Q=)bc(Bi{g>~Z1Ho4{8kbP@fH$1lSqbVcNLFcqj`Pf)?@NHnn?-`f8Ae~NTAOot@`T{ z$?)p_0$$>8Is;4m%sdR={%N8hgVM*u@ytW&Fq7oW?o-R;6g1ARST>nfxX0b{P26?U z3OD$@f!beoZ%k1^0x1X?;-nSq50VZFO;o{yBgX`N zLfh#H6V`Cw$$EnZIZ0Z@j{6sd_{K?V*bC_bh$vwV_pNa0Lzu3L3hqf3J-iLlAu9W& zkZ(xwMS*8qo0;&axq?KchSa?r#y4DQYg^f>K(paD)0hE4rllF>*Gwzi#n!OQT{o?8 zmmAW_y=p^h(qS`M$cCw@MNLdY3Q#alE?V`(Caq$}ts`I2Eq0u=f=%1VEGkV@!IL$l zMrqXI)^L;7F{@VBklLWdtz!W@PFm9)wU2q^C}9mZY#{TnVY(`6&_EVYgLH@r%@IE# z1n)O!Pf72mnoNcX71;Nv@|aUH8RnT?apD@!Jg7@2LxsaHU>!>x)uj`ml8=V0&g7ec zPYLxvl0zg}U7<-V$RUzUhUp>?81Y^Bkt{vh+a^ z&)R|T`?wDRwZMC~8Oa_?0_Xq3e>ZSE1RjiKj*2)NKEY~S_}>whcENh@vC%sT)roz( zws*RpCXT>`-gRW0uRhHglBr$#N$8|@HA19uX#k3AS0e;!@ufnK^bSm};;OZZYSMhL zs2R(Z9y=*ljSxi3;&K>pA+KAN=F3d}aTNpen#VAYYZ%^N79*}Bbi%;9ko+2qB+{o; z5B=Sb9VWjL4}xdoXdxHdsV^l?onwF=3cLoS45idL2J^w1Q47E4tbmEN8h=MCsJS!* zxew8Dnmk(kJvqJ}L$o+e4vl_Cra1Iz7JPzBZ0m8{7YJ?aRzce~8)kphqEe(+7QZ#)wRpaG zuuq5w$#cw5_DRWd?5DF^bKIb3v}Dk9pP+M*F)49DcPMW-c3EPsqDhI%^xaACEXKvh zB@7@hVc=uLfSM3z09?xZ_i-cUxN#g#`vqCkXq7N=72htnmg1+0OZaDRo&MBr?8(PY zlq^b2Hd4!n;qk#u30DG@q%EO;05_~bDgIHS65e|omX~67hG|M@i;olBu)Mk1uYYV{ zO!Ky+v|v!;F*LBS?D)N?J5E(XJX;{7RD00`xzeiS8{oLeB`qu4IFa@>|D5vkseD_T ze_ll)zOX21?k)Soz-vFi(BzV1QMfWB~dHhpu`}c5^TlwK(LKq#`8@=usQU70GI56 z2WE~9{-Ync$prRic==2p1+7`5=bOz-lM$!%QpGoimy3nT%;)v`Kex-56M5RkIg7Vu z9D4jtu$zcZQ+^kXtaEs5>(0x1xj#|f>iN)1*LT!6nEt)i+Qh`~v+4b4N{c&`3_jcB zr&PJ_9__4jgK>SwW>Ej80>?TxqPypM0_4)QkFcWlRWvzK#) zaCU{hj`ik7T-WG6cG4eo+qGf$xc!xshrq)3+o(m*7lW3CKEokW8*Khjo{f&22Da>| zDNS)MJUxz2hl)(klDNaB_5+Nfq&aLmZM)fQOlfkRI6@sf&S6~S&$YuxXdAlb%N+G0 zEI&~+VE4)2VGHi|$9fNaRM?ICeYv;Qm64xMi+Un-I|A&`@AkWg5g#|tQknU*h;CY5 z7fyW7M5~?)38MEwiWIh?>GP=F&L^lV4!(RDAhyk9(nalHAw@-#FFRa}$P+(3DWv?|nIO<;k>R6KiYn6dMjYP_EE4n1WYf89C_uR+0#!6lES)q~Bs(~qu*L`b z==}?WY_5;r7xWRnF5(}Fzx0uLSxobV>CYJ(^CntZpBGan|Y18 z0bAvPtobPoXkD-WGPw8pYr&^JKqp^&X7M?6O4dK2Hm;6lNw)hIho03-aqui~?v%W< zcx_KtfiLJ24nK@%1!*~*w^6}{cFLYN_GtwNjn(TxIk|71pmqgGv0+N-ZKa0~AQ5>s z@pxf^ZAnPed$zfS4dJ+Bd{pHya+>He>$<37YNCp!OJ&igsLQMZ=2pnt?!P&K7u3-< zOP4-ZAj}cW`sGpeK-txMGXRsAHbSQ1Zv?`eic59dG1kHu>f6W!IF6wnG802RP%ehd z(GH0l!@r}zON@x`O!Cw(CJ|~jH7aO^(a9iNt7U2 zLzJ>snJ7)$7-wjFk`gx`G>LdKXqqq0P?&pB6`KI{6}?_A=YvjTsn?s0r5-95%XlSR zJw#Ot;(44lbtq1OI?eSwtsgV?l*e&zD(&~L=2@auL(jATtkM0-aBq!EXHIsK}TFwWL^I1tf}lQ8S9U z-f_9~RV^}1&E2d@bY{XWtL}}y?G)4c-rkW5awnrY?zL1xSWcedXnk*1w9Err)I57; zHox*Ec^SOf0)wPb<&*k&EY62vd3%c|sl(g#^Vi{eFiTl{yt;lrd~p}zy%zc$9-N^E=7L$PpZ4#;k&pe3 z2uY|v%}u1)D7D!hU=hWq-*4bVFgIfXpFSHnoa$zISg*`H)-*x!`aJV{1p_4~@v6i# zi&x~cFE~rA|G=XH^6M&}qiAKtTku)*ySd3Q>~n}OAfs}aq#cIGg8~4o?X#q zX!RKe8dg7lno8SljQs5_{w1_7M%?Nrm1ouUHuq&{ryX8!?*?e#aEaKb)x*^WUWZ@J zyU@G`O#*Wa-+wpgJx)7To=oh^M{j^^DN5@9_7O2wtvlB&L41`uH)N-Et8#sGng|( zI4(0kPf}*GEHikND>Jr_($T?yyOLl=)Aa9y7VPJ%m6=Y#Y?+xwZCqwvPEuyFEU#E* z?26m@%M96xG(Y&~-|P*?uLC?otl4te8R!h=YpLxHF{{_0&Y;*H4Kxn4jDugFZrS>| z>hAEG)0%`tGx(Kj*MlPi^=nS@urp|8^SM)S26G0rX~|iis^sK}X7DSQ#lf+R^OYQO z3S)aC%;s{Z;0z{>uzWxA#rl7rmi8+j@1krpZsRwjGBEjq_kYUCy(MLCop-U71{dO+ zYec6L05<0Ay4PKcZyMlM>N$Krqni+(;k1Wgw;zu}I9(9t(J)6e?1jEiBu{Ld~FE zD$JM8>jHFCC-yD)pw<^1jc>Q<2+ivf2A_PdO*KQl*_BtWV-!rbLUp7A=Sk1tOE?~- z_qC6D2H!OWDVV9%`>LZlv2Vc~>FfG-Ge>=tzOlY^W}1R$h8#<(!_f`qoxUcjsAuq9 zQ$3D!&BW`L*5gS_Yo}x4(mIP*NooD#*OgWk^@&UCAEzs=f1I?mb~+|5t+RNQlvZ2> zbNaSbMSbGZ8Z3Kx-L{okyQ3!*m!eL`6g)HJSW;SX`OWD|tBQIC-!(mfV8M;P@aU*! z@J(EbIvrE+%-~g0T5;je=}W7MdIsM$MJQM@^SY&#S+DfEgr9>YOs~#0L(YloNN2Vw zcuwh6Z-$B80wU^H^VZjexvFg%rwaC?RT~)`GX6E(ui?GlPj-6mb=pMRP2 zzuv-1gZ0bf({=^(i@)DM@fnZaC?$g3rfH()49!C6myo4U^k9qhY2z$a251hw@pk`| zYMe)$gR6B$lF>xYW=WssPqe%ajvppRUBUzAG+dGZ&cZAw00f%%#MEFj_sWwL2E3fY z2yZ(jk5-%{QHd_9jh;p=1vCQX1kjX(3Fr|B;gd7i>N%a{ z3Kw}E##4CB4t9I4D@hBUh|`+z(&J$XjB%Db#hfIW3Ya}z7EhjsLuN@5gYw=tpP0(F zq9mOSzaU*6FN}2_FH8q`&5bgV?_qiiYHQOKikU7q0WlbH$cT?SC^qZm!_Cv(usN>x z%j0g(Zo8&AXd>Bp31FzLwMh+8darLGXx>Bk>I>qvX^598q0DU;F`s)IARmo6V8CL# zVZ72Is_Zl!C>N#sm!e59X$9P-U&L2zs9@(X3x7|9<`Y8$$R$qOQ9&w#^>gZ)+1=w2 z7$jSm-XkG*y3bXab055r;oC}m2FYD{KL?j4-XKHP4; zZH@;C4`Whec?T?yaH7C?o4JG}wUBUZ*WZ*Jp+$)UN~pdBWQ`Ey3RwK@qMet)oKrNl`H=qMB8^&}p8&H3h}A zp1O#glrb9T1UpHM*yg3@bo*CY8i#BmMCw_$Yzi7Q;%nFwa=YFKIXf?Gpw_+0;V82A zAb`CdEqJ-mPJZ4Z$MFF;++}20*dP%_A|IND8qW0lZch5Th8i3n0_TOE^i;lz4cBQ!&sZ~Y>AGL3ocekmD2Yi_DzzCNHt zQA1PBD{2KIin^QVSlK*)slxUqI-{@?kSL^`_v8(eJ|vc;OPv@d&xjp644)trQdO~% zpm78LbZE{+^)A*t2d9!{qfD)|9XRj#Z=g&6jLEqFb|fz z326YWJH#%?mDtzxA+coU&)C4*I|t(L-U?1EgyV`miKm}ZG12_gn1CvY6C^U&1QdZ8 z-A;966V;FsJseUP7brjR96j`a?AZvbr~Q67ygc0O?t>1Q+ywPzOw3R+42W)yn;+}p zu=%!?@UTV_CK%#cs+kg_5|bGow^v^7cTbO-?YEjcT>2Wm8Ff_TjGSt z8pFdHNtlu#OPCTP$`lO0m9nImu!wlvKdtQv8qxGef=Cl)5zio7@0Rz6I%JZPV#e8G z>T=0_NqUM;UKNYCrX+G#R_6x83KlsI<7{$;brzpbO|j$m?l^q+c@+-eNG%8^*qIO6uU#t^5k;YST_4L(XuExaYi;zzWbyks+G<99EN$v8c z9uAsXhONlSQMfoKM=j!<43dkqOLG#Clbmdx@J@PGok+yfcBJ?#x)TXC!JD`litNR$ z?v3;n{bYK8ENYGEr<8m9)NOf76hLQTF-=%L(U z{XrFk`!~75I3qf0$8x6!&y~AYB%+DEZ7?ZQg;Z6nxGeBk$(J*C3t|!n7AvV+biOBX zEqzEl3LeIeqz`kJkQ_fyGKG|DlV&-b!=^EhV>lqKuwF}DnclB7A*;Bz{M7bMCe(P_#o5>1pt`Y4*m3{xQ%lrLtV1JtYZ z8>^JAh6hC;`DWwrT)G+_+q>rgF<}i6KejM0GNHkQ6~wf8WAr7hTjK)Cq#^9WA)dA3 z#La6L4(fr5+XzH@?d4;Z;mBMp0jHrmrFVCy^$zGx=^Y$De#*Q9x>I@=b#7m~A^;tF z*IezAMzB#e-%jd#%zQi9iWA4D0f%iTTX9g2Yq<14?z@UMk}IxFoDUjRw{Oup3s(Mh z;t)OY8rG!v@Cix?afT-dHbDtt{FGo1fC;}d|Q^b?`)GdCZl@zWJz0JNLEElePq!RPh0nhC9&uOBK|c4#qsO|LPgNV zw<59KrO&^e9UtPw$*;qJKD4`#l&e;yNy+QoaR((ZegAi!?}eBoa@{(i-;j=O*_SEw zl5wjQG+Xjh&2VmfPMtUyhHrJy)E`i0=DZga2ifLSil8&bG^stk@l0ybSRM5{YBTM3 zD-elUvm(CzZcr3{BVqfkM}jRf^Pj;JVPfPubbbKW?6=ny96?<>h1y;s8;pdt=2!#m zY~GrT`32tUXy@>Du`rqYyk7qYt_VM^$Boppcx^`H8}7xPrCcvs$>;FgR;riva(~*q zZlFbPUGGxgz$Wj<)}|(X~3o(-%6`H;tag$A+40_5eavXMwd$ZY?&#`bcn&O73a#$DD zQyYB>#0XtZ$}UwAmBT1nuu=Q(u+@G0W4(u7FYJ2%4lm2HTLlx;7qQskYsYf8-#v^x z@#b_YyI_JW=9AjxJieLub@ZilH9XgXlUl>_x^y)>Y-nqMn6QS34Pp%u6IKwD62&<@ zCUQsrKxX7GPN8)9R8)OF6~*FCBw~9T#e`Kvm$OtLi|7(o5ix74keITHiJ4o)#FRD6 zv>b45M@?1e@DtXf-&xi*4EPl@=&oXxAEf-GCQp@RS#ul=#U^_iUTWI76 zH2nDhCta=0041E8JN_5G9O|hv*dN6Qg)k{InCFs1e#1nF6gZxg5#nZ2GMMA6a`iPj zJqwc&6&#wYf>9-i(Oj|$8rHrF9Hy(_Va==HVY)J25_={hVIIJ0`lkcTb1zrxBU}`L z2f4sY|LXuR{^RBSZneB8E1={SsMWmw-JtyVtth@@BtOk#>eXMO^Qd2sCG`cqtd!rq z!3Cml4!RqKfS%(EUG5t-^s{(xPiKNLgVPVdj0Z!hsh!tRiHG*gUS?#k zR1(*didCM=y*V{Zd7BImUFt6;DjPW_bFB-vk-~myELY#xz{fN*N;Ah6=asozOut}G z90I$jat{2Getk=$(?17(Mn7}vnpm62*72I+k~w4yHtPz?n%dYgMQPn$RAs0FSU^m+_sALghDWgq5X$oLSiypk8YXk}+==orm`zO8*M zduHa-(R6xfXJ<9*nw=_%^CT)^txlz(%4Gk11Vs<#C|*Sm<{-#<;KuG?m_Q!aq7h+& z&s*jz=Z5WjK;e)i&!C4rJrP66B+r7qJSj)UAj1%J??e;@iws9=|4Afg9`KU#hT0%k z-VL5n&h=14s_KRr#`Ye9NY`BOW%b?JLE2T?x-_4CaTNw9qdw^sgjN|*6{`$a^Gi;o zX(sfd_SeefQF}LfPCI=G%3_(f@EkB;G%Rm#2X`nbyq7wZLHbAve_PBKKaw{H}EO$20h_JVgonCn!CwY=>+o$=;rs% ze6FX9L|@IjBHb+Bk*}%OIqj!J@VXw%Smd%!j2yH0;if^tY?#rB5&?Pu^Fzb%xV&Yr zgTEZE&9f`oY^^@S=l$yEPtp)~V4#lnH^wEjMn>f7CzWYc&h)ydFgPFJP5Ewsh7niU zd|EwRZQ%9#)x2BHd(|ZP1TEx$KOFDwm){O#D|nM}f%&C}xo+&3?LF%-)?_9eS7ziN zCLGzRfveR$3;=MG0`Q~hn(7g#hSrY2JA9RyjQe!Yw)S61cc`apBPN@{Gtz?5YO%T} z^|qtV!ObQxIGhap0s0KuUBmSX!gJ6wsLn;4RPv6(Q$U|VJG4u#OK0oB!zt@Qo@@rs za&dcj)p`KvGiYZE>pa49&@-rx%hJzNmZdz|44&o66737k-=+fk4BFWYpGSBOdIr^T zS$a8TS;~{m;90IL(RGdUmnC}a?Vh zT=BLi)Qkg0mkTbdR%AKI6Us6#(pFumD@$(4JLC>H% zEm7+em#6~Y4F2WvoUGY>g>MOZNMZZifz9@Lgy*1X#1|hohvR;|e7JeK8#c%FetF#O z+0m_w_5VIC?Wn|A^nu@s(Wb);FTpfYaOxg}UoL_GPz9|MRJL-#ZQuLl>Nwa-Vy6-C zjX9d_B+Hsj1KzA)ju@Ps69vz3l)$jtkNfN0bim1iF_V-zqGB&&hNAk5&Q~y3K{v6_ z;=5^+4ZA&zjaCaX?FA!Ni!(dK3&XreICEpZ(?je9)s6gf_-~Jsb9E99)N_Xorn6&g z5TNA#6EX zbD2M_4(hIQb5R5B9NyYZ?ZRq3m#bRNQ~L?c*Y#hcUSexO*7)jpslRqqMPHg=TF!T> z#aS!xv5(vbzP?0he4OWae+?t|$@#iIa^KH-#$Zop zFeweyl}?E!{j4wS_}R%7oVYA=GunEeH6@Fi<$hg8ZVvg?8E42x>8tL`JejDWo58!J zrXJlO=5bI%H-mRcDaKVrzpO3RDVQM!no`UyBYNE)1-B+j&nPZd^EjxXn;{32 zQjF`FepxBjDVQM!no`UyVA7W)q%b{KGtbi|Nc?)^Ga+wgkd{>CI|@^&)1~+NWo;9nPH5J-`C2&GGQ*`RWQ; zX9&FOv5dsvWaPJ;M3x)c3I zQeWKNKOMfiHUs}fQyka#_m7yu{fnkJz%59RSJ%h$yGMw~W>R{Q{G8hSG!3s^$98RQ zQrhfCy_0GBlpsKPn_5Ks7kz?lCEUkH+dxyQzg*v9c{P8BcK#`xnjAenyZR@zwYK~K zj`=&Z^-mY^)8)0do&F}a=ZELzBhXFY{+}exubhTM!L740s?bVnc)8FLjMO+2w518(^>)qtX>c`DkoZ_Ec zS}5J??d?5V-%Xb;db`@q_*Zb83bb{8q0RADThD&4*A7enhU@k5 zZgYSCX=;kEk8|L3s)CjdWWh_rp2=VfMw6-tr&rba@MV3NMOTc}sm$i0Ipn83R34&J z3v3XDynEcQSDV9Tw{2Gx19j@UFtVQ8c-+YAOn~EG~2Is#(-wc+~+3qCwz^Mg0=po&Y3GH9ulLJ1PMmffD z07$vPCvcdZ@5vD|m^kKD-~(a@h!2Pelb#+Co*eNBEKLcX{DDtky5Bz`DsFNr@By&{ zt{X&z)oLsvOeOMu;R9j^h|^b+{fj&y8ev+8N5luj4sc#jBMjEF8ewNLkBAS59Ux9$ zE%vYQ$sKaRiei=v_K@;i_<+~}gL&bOSwz^eox>!Lh%KO+UEU7Y?)XOJr1#8? zO~I!R`(^PAhf0oLoHM|9#WJwWNQ72X5k{#AKjlOoMBjNL8O}6%%DeWT#}sQ6f{DMSN(XWpblUawcb? zWl9FC>PbZUtQ>zftDK%Kh6QGb0|l8pLmQOl$Ljc9#wdNHEZ>>}SksoI-q(0Ia4ynyJ3nEXg_hFn(kuuO3 z7m*FgCp-DloKN0b@8dYXBhm}GO6Pz?HpE9e9n|cjx7Pcp7^?*zVRM#lu7vn#C#afz z^wvrRpn9AG6Xl6btz;lR+9|VUAHB6w0jM5l<)l8+)rL}=aduChTImCcqMZzEj-t0# zDu5`C^Nms;>71mM*i#g+coX2mJ~>r?Qr>vSxF>+uBk zA{E5qYryzb%80v6+|~s=qtE?7Q`iOTG==@arx1y@+Zf(>6orwNDbg!r3VfoA@a=Sm z)15qU+WZ3#;I9iHU2UuL zNkZ}~NjuFLSntC0(G$kT_{!T%Pg0wt%DQQU=#nUgYP&V!?iQ#(HC6h3{`VzoSg=9{qQyM|) z)RfH1bSg{mI`z3}nod~`#;cieTZY#*BdAvjRX?8o=69dqW{FWh!v+H%3$1K0 zZfAx~2JOsX+|Fz_bF_0?^B(rDnA<%eJ?vd^w|hezJ9NLvAQf&7!EDVvC-%^Vqi5Sr zyGAf?0Rd9L)R4<9{2|1Ets-Fx_<^J#D*YZ2V!%Ep_Mm~DmuE%64`B*=x~WY8KZGgh z$&oe%{6JC=6@Cv1uhKs!_Mnm;glrk$2a$27yxDX)dxS&L+-5x_<>*$Fa2H=0?9rn_P{_- z&#?^f14%&;romgY?TX6Iq#zi;VuxahF!z&BB^pkHPfYd;ZCnOORLy~=)s`88YSdOn zQ)-JpnML6ljg(9#WBuk9ZH`3NZQOJO&2MsPl#&5!ROUzE%x0HXNfC-t3mwpdHKke+ zvAL4n4-fj*KvWvNp_UPc8MTaPsAWt?DYeuoLYoF=n6pg^1Ef?m4xuX9M$(?zp`$S`p4p%jfpQX!)F-k`MRB zDEZJ%$>+x8VY7+0#8FcvD;?QyV2;fj*-g3ZV0Y$i>`k32H}??DRfy`evu$bK0$ZiO zrdP(zi?sD@D`-k>Zc~l2vNuuA=IGX zt>T+HH|x`*VVbhhL%33ReQbvCk$^!@t%79J4i=53h4U#~r@DBW#>cD4*%+=@T{212 zt1kiUR7mD(I;9b$PEE-yO{cO1uT!6!uIZHJV7wY;f<{|kr%gVjmd*(3m9|tavty?( zWCo#2!?@|EPsN1MrGwmn-PDYNeHVW^Eu=4JL_^PJAk2&|5El(02=owxxfoIBcr?;8 z1#>!5CNR=71#?4EreOX^WJJc}$#x%CwS`&0gXnz@W~)TSoEvZp3>!mQ#`xMNc zNtuEfHjxp@0T@ttD>Vvca}`EPpGb7cwxagv z5)h>lh;A^yEcH2)H=Xuu1UVY)nNm@Z4pz7`7feEPf$KE0D8dih{aN0b_+NK!+W1sbz&+b7dMID@MV zj^FpYXLC)$)7{->wSiaQaClsI%5q5=F}b8Xe>SRE zUP8Uu^cf}D^iB>p0nKgGy4XD2JguR(czwLQ->sJS?sNpvwm!z1cE>~*Fx7s%dAft* z>5eH;o2fb9n+0RLySuAoofgFHoxLIKpO5S9!|qlU4h?LZX1MW;+-k+WHFKJ)Q_qjO>E*d3e+4L13rkOMU$dFp73JsU&%@)>aSMaZ$}TFkQ~P%DRPJMN@j#m*8yA1HROA`j6xleP zKBCH3EJoC+Qo@hmdD};8WT|FeytUM?@$IUGZr5Jx;VDWkimqX* z)xI}@R)5M8D>dVX&30J+FdulT7bi7Sb6y^{>z_yE=d(9z;JbNxcvSN_BQ@WJY4DYF zXw$}~e!W<}(Mrwu(R57Az`*KiyqjFuWCnI>*7t{}tv;^AO3ip-{8ajgHf?PB?w%!_ z%+#EA=cc0N8+UqY-`RH8riR7topLPVck9L4lu6|a8I3S@V!rclkH@`|&e`bMF4hfn zXoP&y-p0i@)BNd1{m@3ub`BkzZ_q=A^ETl>%@&5r;Z(44<}F2r9BvGvl{;-#k0#loq;Odu?1nQG`%*4O6X_j5;Xv z5Gyq!9duAoQZqHDA9heMdZPwDH|(I|b4F@D9CuLAp-mebe5~r)1UFVu8-3?0Eg5rg zx4m6z z>5(Nei*pf&9aM330~~t3+E@kaq-d;yv&3Nsm3MA{1HBWM8aM8sDK*YU%{Glym{OA) ztKecn&D5NiwXq70(Hp7xlJN#bWE0zVb~oP8!tQL<>^SbAU_~1}n;Un~usItw8;(0D z*w9AJMn)YJe8kEz@?#ZTnQtAdXua60&6w5s_jv0Q=zwMuQow#qN}iKwb(wX1)-&yGi;jF#G$#KJ!qQr?18zS z-M4JfNmfbI#MNxlvIV!jF#QeA+_z0F$>*C_dcVk{;=S2IZ`s$kMO^d9Y&)&4iS~e}Ra=!XV zx4m*P(#E{V&IzZR49f5Os&$b&<2lSPkFz>u?y7Z>n^T@1?=EYXl9Sy~*cMLo`v6IOR5P^uQ0*G3ix`TpLaSBN zDSWjqYOH1sX7bh4fwh{O%;~F{iERTf&h0nwqOF?OPx7m2y=faOyh@td6t_;G+E?M4 zQnFBh94#&G4Tk1wzv?AB(3sJFXRN-jG%gHKdpnw`JslSa z=-I-1@5L{5zeWHl8*I@_u`MnZ(9@!+p4G1z(9?QbztLJqK5gKUGRL_bF5*lc|E%J(s2re?vmo79_vra1wOzEnO7;|sW zz*^0Hi3=5cq@~d!wrbvV(SbVRDMY&pTzt^30wL5Y{9*((yEoOd;-UmSE1IfV{o({Q zt2b4%(j^LNUTW-^p^D7383U``jF3(x+lA&vf&^nZc{4RzW(=m7F&upc2lcS;M-E6l zmQyiCX08S0Z0S%;)7WJUpjLo`6|;=xa6YOT+I^@FxTuR5imyVeRny@ZwJvI`W)4PU z)YO5snwyNrsF{gv122xpH1MLWn%57=sA;`v8*A&dfE&xH&W3Qcoeai2S30wGbG6@e zI7S_BYOH4V8#>gy-n5O?jO8@FJS?%ZR&xu+a=088jODOq$)&!@v{Bv+eG~Txq+>Z8 zr?=Jf;(!d6BC%vN)wBBX7(K1GMP6y|M>v+l#@L;aQ67WjOsAn3w}}M%-{Q`441j)% zvr0Oa!^!uydR`om(PuN7>RJ7GjGorpBCoh~;eZU%>P^+G(`by{Y|>V=;CzhHTFrea z9LwQ~6|q(GrUNnRh^G+kDsUjCT?Im@RrmoJHM=*}v*Lh^o)t~itbRa7&FW3ntaLa= z%}b3PGqeiKSPoZ7YMWKC!p{il_P6Tq4KtU^+%Atxn9?2hy=gBVqX2Ga54S^44Te=)QU-AP*X!}QZ&e` zS#VHQL!=f^cvefe^k#E>X)QjB2&6}kxs49azUnN{Hr4?QYHEqN@o#e&Y>C3-)YPRZ zLP16PTr)L(wO=ofaL>$m1yMIfhnmG(kaN2^z!2Va*qmNXgwd^L4M#Zb+6%Px2r+up zd@xzH+k%{@)p1xp{T$A&UK-yQiwszgzB8(?U0DLtqiMRka#-G*8h6}HCs8((Dh>&i zwX_5rU}H1RLG@^}h2#4gjtMn4j+u@?gM$%Bj~=++3yQuGgpGNJupC;CLgVcH<^k@F z9UIZccp*fO7W)o`M)Z%T?Fw#|YtFzF2UY3o&->xp9*74$Tu{{5xr{+N^*q20O5J)W zNQa(}5TE7Yu=xgqysOq$JqGE}1Kpl6!=T@syrI`5is|^QkrwdD z){BS7<$gW2_4>vTx~QgdAxMWF(|@1Z4LB+FyfIPW*~Mz8BEC&v&RD%?j+e zt6A~cKEgM8(ON&zx<`TaqFI5n?onXAS9|io+xMtgbgJ<7Ju1$w{@L7ILvgUiJ^YIv z{>iw9-=122KJ*m_`^p<3dbCVsyGKg^(W7O|+8!wsp-0J>$vsLaLWdH64!QQ-F)o&E zZ?*j$j%w!4cjh?j*4kR5bw|_zqrHW4#vS|@H|uYkZEK$etx-Y4kPL#fjewy!YS8zc z-mSN{tudHvk-Z@Tp1$1}`Sspk?z;+sH%AQ(Zg`ZoV&Lsjg+3DJ`;LO(jFG<~3J#+! z2F|)i!R3k+h6WG3eUFOs6=p<(24~%);Qfl$iUtt`phw3A%p1DKsX+yr_h>jjZ2r$* zOQn5DJL?_=m(zNQ)@2IbzDLD}hvmZzOek8Tf|km^et3jcBCSQ_!kPDI z*!&!eMuU87iro6L>8Kkmk-0(o*%Ia`8>e(fTV&U(NAgzF4(^M){chV_0nr*2G{hc3 z+B#8ajvDk~JomSMwi_dVLkx(34r^4PcjEDPbEjPEmo-}VDS&yAwy}8NH@1E3?cBZ0 zu-f)=v)vpw%X{d!?P1Nt;rMBF)f|f)UPpW`myeI8U)xbgLWsGvv`$?GY5-&gJ?+za zPK-sEM@d`ZAwuSeNUk74ORsODoVFZjN8Df+`r-RvUjmJ-K!DJpK zp<{6l3oG{P$NS}KZB``1@`~2AYdlnkHrI%@3L^GhD#k^9?JCf|N5y6fVF@|fiEQcbDET4899o2qLnG8$9#FH2s>3&!P;4v>*0O`y6@8(n ztr6AJ^!Nm0qh{c|S**98Lq%H`;?jxed6U}RLcR{Sf7oz9J+Yy^QT)?8vDj1D#ESF@G?p+gD! zB)?X(_34mNKDYjAO*JFSl$txkiBBim^` zob~C=>;bSScWSjVY* z=<_!AA7c>I)3R1&wR?OqyZKv}Tb+9V)S;hDcIT+Iu6QB#sG=bn7pnnIu4!NK=gfOF zoZBmCJ*cW?=0d>TzdG*g@&Rp)mbSny(MO>nXNcFv5JHH2n#W`gL~ z;@XmCB^IDx$JnAZs{r#J4HtWx!Ce^>V$7hXr@&5PMu?fTG!|GQWsW>*E+~_Z&XTft zXG#jJb>AP3!|rZeM%UV`WWajzD~9YTL_F5q>Kcm`C$6h}#emHPjRES4*_kbI_scm7 z9E&xhx~}3DitBH?7AatBVPlYHj9Pn93w8CjZSP6jw%yIpzU2YCqQ}5?6}&9oYp853 zf*Fy0Z5{*KUKn|>t{7hWwr`dKnZ=t~Wmj=bMb6L`@}RASF@rX96x)kps;{$ceDBUP zv)>4fVT(X|qJ>b?uvxDn2Q#Op=FjceIRKhP7gVF(I2njpwAf`Ty=q2~`Si4Y$dC*( zO_h(3emoEE-}tjR&3O2}xn1w!D5%dpXKH29FlOBf7qcq#X!9vFG5lxq@o-ECE!cee zjL);_LolcB`uKSNiMg)$dI>x8uJYTLz7AjC4qq2==IiI*;OI|i_wCWIv%<}%aaM&0 z=Je&Glnv}(&tSs!$JN!>0S-8Y;5DC4nBw%PTFj&>#pzLX_DMGTIL7nOo$+kp>hW%I zLhstRI=qACk=$D#^z`cL2h@u{57)=Dw|Be!^KyTSM@8;R}H#= zr^73Eey&-q(EgsC<}yZ%9yQZppCf*mix@{MGqmzpxrqc>7sm zF-Jj}^0!A1dex&R0_o8MUrO-#+9QS{^eBPPm`)`Wp+|}Js5>MhK#vaVPmc})(4*rl zx38y1TLrX7@8UJ|RzQ37!uQ^9(}&}S&JUdgs7Duk@y(-)0YY633t%n}Pd8@iS@UQs z0YDuehvD1yX;}UIx&B}HVs7YZU0q$>eEIDk*MqszG`>y8j;+9DI)AfEu}?>q@$a`+ zbMT6B@KxE~?9C#;KQ(4wF*5D%phZil+1BdDwA{SrgiqdAl>d}?l z4BMTf;RUg%ttAWMyInD8bAX{TeGZrkPHu|r30Vx)p(?)Z6{DqhFox<@&=h#Mm5C(xos(>(R#Ewc3-vEFdausq`!&N}LU`N24u?{)Snf zzYXeQtR7w2yJ5S+m$|;y_ahs<_SePs$TRWtNL|r0@2=qH*{+ObE}%tq`sO{kJQia% z16HT5;1bzRT>(~yuH-V=4qXXWhpw)hX?=OrXL=v;DLsa9m~kgJoHB7zj|1XaJ$84? zb`-)i{~YM7N=*#l#@cz~?m&B##+T0agfhnJ&}BXb=wWAFkxRikl|@(3cErp`i_ki> znU^*m72H$SLZA*sFb_xvZ1nBx2+*Uz-nrM2MKB2oF7zm{bE)R0*d7%K(xb#q`t>S7 zkRBz|{PGMjfi3J^xid|K_9;P-zL>b1a63y1!t|&iH`?};TLROg#$9gPBgJ9#=x~?Z z_ULdJJvyfPGffcps0opJG)+rBWFQ~W32dK3ls-}Wd9fI1Y7_u+OZ z83B3}^uD9*mApM~0XUTtvevvxI^y6#I${AJ<8={zLPm@Z9sZu$4j~={l{AcMc@&h= zg@Ri2-BEXYE(&RfKot$XBr-ZMP>0?Xa*1t6KnMzIY4C@@pqM@wRHKg!UTup~IxtX2 zgFC5^9*`a-x)1wCO-0jhVAU#Ux#k)OXC{B+ae+6%k8jsSW1@GeRk%AyS zO3018Jz5A%kDB0K-X1*xP?sWlKW~>J3WSREttXsp=x+M$>C;h|4mHeGy%;3DZwy+8 zHh*_-ha?YzN*Wq>e}ykf=|btzGG6D~qhmxs4f=eJB(wscf`(X5xBK>lVS+#vdN*Pb z%?KSD{5`uE3%v{vf=U|l#G{~;E)>+FcgS7b+tb7%2I^?=20?m4f*`0w9}#~SFe>Q* z=~DtTgk2*V?qcCS72O&Dpie>e%=o@M%EET2bvF$54@X5vb7?Zi%5;P+P-U=Y&;`YO z9#JFEJc?$ClC8iq=*gDU8FDg<-Jv_YPq;&52-Km--BdP5y(AZ~b(a4Tse8cKIoCgG zJj?O}a$#{tj_EGn?W(R?s*`zTuN3a6K03!NTZeDK1;iby1Dp;$nd^r;lw}Y*G`ja` z=Yn_&)1_u?k-F7*m>xCsg5r)`!y74#TQlgX9VIla)a>gwJJE8o4$sIvBArM!xt+Bnjuozuegp}b)OYk>=|_1FXS0C_I_!T_f~i2 zCRiPDf(AYt{*JJfVEfeeW+*7@%}e)|8E;tb8trmD(6LN(M23`!{vn7ItV0<_t6x_P z)uD>G*ju7vs18-=V6UbSs6!DtC-1Yuk-mMyt<9XL^>ex-xucbAaC9O)t*7p)87Gd$bcOPX%lO24T3?eJluzq)LVsHC&5`pxowk-T zZYVpvbg%Q;OSpWKbC1(ADL6q4+&=cqjn1bCLQTT|C+^Lf&ey)| zoTE_)E<-x)C3M^CWtF?Iq9;cNEJHH!kvDtkImc)omXRyvWDjFBcmEAs+$+g@2HIkK3yoQ+))L@^*ak_29I&XFkqmm?j289J-kETDXeWEf#X ze@gSw(|P)R+IB=wMw073IgQsEiDekc@>mC@vQTo`%X#%V$2<;H0ja3T`1(eImDuae z{DfN`Ql4Wok@EaV0p&UpgUM+#_u1eQF(8InQqBTS=8CBxOG}yOb|E42{Le+qb;J-} zmJRLKg^M_37_y+0CEU>#vV=GKh?&k90xW37Y*)19Be*Q-0#6GUamNna((;yY%z(Hh zyfXru>7r58(w5D3)_|nh9_znAT*P7Huvu31VN1Ac6!isU&2-kVsF_jA2hDcXFl3HB z&D*`gKl9A!Vil3gJWZW5xiXR&w34#r&azzTtg~4Ob1j31URwT90}n5wi)P+=7zZ^r%$5`nZK*fA+cmY4pyebrFJl)Jw8bnZCs|ZJ zx@}@$5raxhEoc4{o$RG-W6`pxSdeKTXxBpu)511>^5>`;+Xb4<73=L z_A~N~==rj5az_+>S*C~P=|Jy*!!agrR-1M6ygjaGhwIaqyEoJ6K!~L$F;Zeqi#bMux@6-07zXduT zM6d2QyH(w79*=Yg_PTi(ifxg0VNXW2Y>avc2e+-lzN0y~)O{TM){5i%w0-DabH%|u z(jnMZb9G}|qy`&Z_I=xBtGnlQy=qj?6)%JUw3p`fZeAa1gn(~GJ^>lUTHZ^i*UQdN^Oe-sBBvt7OSRu zXb`Bu@#A8D*fsU)?s#7<4!Dx;u-S=%$?UP-Rfk=TxOaV;qT7?FqQRSLvzs?N6AM2S z!!wp3>#mypzJ6$k_j@qjY@0QmHQ(dE!@K2XRxcYhoD3q3VSfPjY`NJt(?tM|mvRK` z!Y-FEg%a+u-aq0dh12atr9e6e49@N0qv(POZP9j?JP6BklA&7nGAeD4%Dpy2-OE!c z5hA40cqp#YdvwaIHp&68)JX*Llo@Z2wsnLIi2%Mb#YF5u4sYkZ5 zc9dJ9gy}dZ8RW)G+scxKU`d;bCG`J;1pCU*s z#w$FiXGu1A*ljId1c^%)&j8=Z(Y-6H`-N!w(I{){L(?=2EqN?zndL$FvLtkVqqveK z5rWAQ%n%KmXemQT979^W<^Z^IBpO6aPErRV&u@ccNNdyZ7~`O%#^lzlSqRLo5@&og zbtOqeV3K4<(zXq9qr1~u*^$(hEIqnAlJU7r8~MFo?eUXMm3TyEbC4Fw{n0{Vg&b&d zIon_*??*d=%@#b%iWXboL6m+rt*L`-bnzbB|F_j_v&MYmh($;&uupNO@mq!Ste7&^ z*E8Jhcku>GZKrxSH&fl}P(Qq0?05C+H(V5Eh_+w2KQdRh8c2&|&0z%$t3lQfQ%I8) zI2H{R_S83wL*P`%>rYtNvymnA~-5BC+#!SyVz z1B=^}H{>Im)wbR>YQYX`cEM%4IB5)*L&K}i7p3Df@B60Q?3tH#g^vPs)pE8 z!^y2@T43xa8i+R;f=5Kd@Wkupee%gC(DmkFTonY3etk930QrctS6@vu46k2b;CcG` zd!g-)NYwnwTCxO;iU5JuiC>KdM}VlcB>~T zdXOMW50arUNJvOR;qmS8ZFP^d7u(&QijN#`UD6)x4_+=6P>vJz;7uk&Mtd3|9Kt@_ zx9)h=VFQ=67uy}FI3Hxvd22x>z zF@aQ6aHC^f>bEXwpWIG-j3YaQeYkdjjKkV=y{J}z>_D~X3@QR?bR!6fDa(F($%bK~ zd$t)>98-}E!xUdN>~-*rgKD~AsNy?<0jQd85GtEAMCJ763}H(2gCQ-%$oeHD;sGth z$cABR%fmmT9w!B*Q$F^LGp@b1d>^W&8zgIQ3qek|g_3t0+qqvJ1k)@X$YeKp5Jnb^ zyU9pzv8gh}>OKB<_Z0`i7Dz(x>V1QMW3B%hf8oCa4q<)O2f@z5>dd;`-r+PJmZ)kh zH&4~!vNPyuvo$(rG-unXlEshox$&FGUY|>Z@a>WS%L&n|r&UK&N{-0}LrN@EBgyLTw9VuJzy2po_{ z&tP+s4uU=$v}ilG3E?P$J{&t+4gqP3J|vy_$_zP#q$zrkSl|huxN#@(lvo?0asZen zsW2u|=KvTv(6bY9SQgx!1mEc|57JJnkKl7ot?tjH)qNYg&(K!$GifzHt5!Nqd}&W_ zTCI}1RU6C_r47cr@u{a1?-Bt_k5u+ZfU)CUB7l)Y_o4APdIrLS-N}k=#W0Pu$yRf` zXuM>u7fqZqa;jhR{OiH{XRl0Z~9g0_!DT~Xivq~2) z%H3IZ=Hi;-E(|d5!Z5`K13kfQfXP+$oBWVce)zqg-r(CoH6#oq?!_0M!wkjuiM#MG z-e~##dU7t{D$!M=i<7Way{fh=y;0m_D37)a{R7kx6}s&25Ov|b7iM|xY)+e|3vEI# ztIg}@eO2Gx?V2A8taQ%1B<-ls#fRA7xY^;cQ*M{43-MxNAcxA{S;g@3yHXo~U6=DB zYcM#m_!=+g{KHgjtc{oVqA*>8D6U4SAB?m*XCW|sl5vdPvJi|Uh_$Ie!L;M%^TlB` zo2khBBG5+mbkSSCNtMv`tlSTG;9+c>&HQ#pgIOz-xf1djL@t)STbipaG6-5gVt$b= zpI#|aD?oW4%Az^^{n>n_C1x23gX>v&TDN^Hw>8|pCj0F8kL}zjo`}HwELjpKiYG`y z2u2bU#m58T%znZ9No=qZ@_m3x;=%&8ugxd9-nRA)1|Mta8E=pA{EBHw4RKB_NAWA6 zn|gPqwjIyU zXsL6@@d2V8*HWXuJD#cWk-SA;Du!v>@LQ&Iy2n$2Y_L%7m<-yER8UN2KFL_2+%X%B z`9-#TI@>GN9I@OnM`=HI%ttF|!?us*wual+_*dsFAJm^wIcKgr2%K@pN3zEfzuXxg;spH? zTTwCqq$7PFlAc|w5g~x2DSD7ve+$`|m0rva&)dc_KUc;p4)G7&9b%^%T@+lCAe~yZ zkv8d~=ta`a&;g}Mda<-2IG-8z}L^;=!zqDEAC)YBO48)dWlrt3q1Jh#Q4?;-H7|Mz7hAu z;C&sC{!1MOU$Qv4L?VOh>~YomfsTIbIX^PE=gvhAohu64os(}7t;ID%n5my}nM2-H zG?r%xZ7+BmpRj0$d#vS(mT7G|hw-BAT}B3N4X2wUYKvRiu1~n0tv@PslgD|8KsYGw zuwld#=QS2=>FRiV49LhX7IS=oZ?2U`m}7-zd~o#UC)hnc)n8+%nN%Fr7mJq~x#+{j z(8mX2mPD5mLpmO&$I-`HgwFepKY7+~C~+{d05G#@BBXErL?F{rj!z_>0Uc<=@xy`# z?AmZVWWL#za{1S>^rMXaR05G@dVJdY~}%`Bb_>bFZWlxaODwkg2z9lhT# z%R&3L94~LwmgAvfwsa2}_M51;2GiW7^%Zg{jGXiaSLy^yT<0i1`{h%eQ<>9medsy@ zv>J?WE^*%_s-1f`p03$UVOvCJGAuD4zdMek+qg@DvC|oAy`2b^>bU*AuNX4xrKy;H zZ%#!ry*_Bi@hv*kjs=iCJC4VU*>OBl)Q);jW6&g*Z43U zJ&%MR44`AZk5k*r0NuzPv~hH^UeJpjri>u-8ThmtI!+qFPMlu$h*1Q!OXBfeV2H%I zs1b=nGokKg?5z>ul$=ucSf>zfx74}T7ZV`f-_w(Jt92q$yBTVa3A@Q7JW|Ka9$Cu3 zcFJ75F{RA8urZn0nAB&xC~1q0J(jAT&&`Vp7+r7hJjbNEeN)jl4>zCjkJ~HSFTyI# zP-2ZwDQ#ka6`MceZsO{GxxqucBn_rNr<>F5$Lgzo7xJahOK5O`?JKDPy|XOj=X1F- ziVS4J^+^tq^u6I?y~nwt>o0e-l;|HgJ|PK;Uye3@?I?w1d0nwoc5Yn}Q8a0F9J8}PU1Brol)r8$z9(p-ZMP{{{%@ONmdemYxX5y#r3Pp!&%CpJ9# zs!oGM4_Th2heWv)&?x50OLdSc(NJ;N0x}1^IaA;WW&vqqrpUZQDGpmeX4lW3&f@1$ zE(J7-nM>p-83_h9eK5138G;qBpUj$Z#&{g`$xMMGm<25C`polLd?w1JfJQN&5eL=F z`;7g`ec`}+^ZCciM05f!VC$e?W*Rzz`BKtmn>Z+MA^VD(yW|3nTvWTB2m2=;=*{z! zF^medM68cmH+qg=dy2yrkU7}SnF2>J3rOoXXmc*li8CsoSFDMxTT{z<4!a~Zedq|b za;Cr$Om5-f*9BZP|2fuT#&)6ONMhwQ{B)cqXMY0UR4^k%bK zFJHX)Ck*PkKyCjZ9;7R1CSEVoo^Td9bkBeoQHM)Cc(O*V{dx37nH{0i8#5n6H^{ z8jNFgX5Fl5#rQTHqg#>34aP9E65p5AEs(vBXJ~!YOdD)wVISR*FCTh&(N}v`es0!h z_E~Ewf4r_^TxjX9UA-(rYt{dySrurvp(EDU%tjl*r+`*oPdw-)jq~@!QLGE-KBjvd z@-l#NtP1Eh*o!h18^Nc5R-U*1{m*&pDAomZALBxQpU+$WE-`Kl_M%M1M(`=nVxG5} zV?^hVt)o~M(0z=zT4#`6HWOH#)mt+a8|w96~t1w~k_cW^c8Q9lWf!2F^~5 zXE@l4G8G%ar$CE&-fE6NoZnkVu`ZzdnAmC^92oCB<5-!WVu%QF1d!p~fGt@uB!-0)A=YmRSU-guL!2 z);=q_yI6u(>ON&aCiX$GU&=0pl!fNT$Xn;eNL~=QVAsBDvYP5F8F<@+sK(u6WX$+#y1-!_Zb+5CgO^| zd)l(s;H$408hL2oH48=|`03DW_;H*6d3(TlxJo|RP~V}|=t}Lodf(u_2Zls+_*7N* zQisy&tdvxQI~Y2|B{sH~3^-1V=n*3JgU|pfhV`WK8u5vt0|v4Q<(!B_i&ed>wi`%` z!=kUZDV2tBIy`QU`+7a!SNmo=l#^Gfj}u*dcaMgx=8K2LVLyaVph_Q?xAd_SK2?^l zm=9s%*BHWM-8_usVb|#50S_JT0ntiBIC+iPHrO;s z`N_6#hbWOjA`9rjbL@i=Y*27>3awed=||bTzG~YuMy+% z0X+1BVo_L&h$FFC8nMPDWRJL-=yZ!uH7u|$I)j&y?0T+|oHk1&U#9Vyb4;dGBqmeh zG}4nO3&)iwRWB1Gl5h9&+AKVA_0;boW7?%odOUu4K%PY7mkT2jr2;XDa;J2jWMu$- z38AZ*)L@ty{4rNx6wZ7YR;tV;49|cluXtmPKAm}mAniw`WMLqxA!VrP@zrITiR86UdQe(BtEDOh#C)Gj)V!qIe$rB0YuKHbM3@tfSyZrKiJc$xQ zby%WQASO|Eh;}6_1L#Yb9`hp-W&$z^dGhX!fqo&Y$x>>sqF2W11=qwqgbu1+EYE16 zRd_l09B?K;yb!j>SG%|L&M;OJkJwej{if6D4X%!$E%MKJN_jTLYT_HL6P@ba+^i2* zhx+05V!x|jzj^h#6|4kW8=^{}wX*T&&b$$rH=Hmdt7mzGYh%BV)uhIB-nI-jc#x(C z#}y>R%hkl)GxCLTHkBj+m&7IT#0U~_gup7eFGrN956P1!gk;;rU91sbBJVcG?PC34 zrGI^dMm7)zw(8{v-4Wm+^j-MK6-VKR=sCW%Xmo)khWmQCZ`O4EfwRWmP02A`9Z3dS z!pDMNeOUZxs{P_&?ZOYP)W?a|NN300uG&AZ?l#LId;(SaxR5?rSYM3R$E(CSSvDsB zM6m8}44052x@M*Alz_S>7)M+>P^FK{Xbb6`o=yve^cn42nv>^{TqibEOx}=Bg`TdC zEy8uwi1DD#=RIW|#Sc>(Yy_srYkSaLJSW~F51<{0OV5rE#TB%}aOD%u#zi~jm9ztJ z5tIho!O#xG9cl-{9cl;A4z`1#OcaPo<<;on@j<-# z5J&+7BaKDdgFBgwNJ3~pa_Rf<-+JR@uWh^tIb z!6ENOhrVObZE}N-u;+AdGv*kJchL0U^u_1kI24qpBQ^r0J77tTdJ%ec=|$+VSZ92e zTJ*>;C_XE7`{Oeawqdtlco#7c2?06rqpg7+T*KHQR>O<7y*#`cJv^+K+ki+K71$O_Q5;kz36tp?M1iA4LV|P zbn_5tw4bc?QxC&NVDJ*bIJTx9hHbt*F;?kO6AQ(A#Q0(86M6)K$cLdD@Q2;Fh$=2gyFPC4ua3O-5Y`BVp0 zFP7^IVJtz_hvnHJh~@PyzD?w*<`*(4tU^~2zc5x4c@k2^(BofrzGoqJR*G>#)-;|| zXQdb?h_~pLo{D3&!LqBiDmJyz@40PyChI+0had>L5ad)MczcSS!h6u& zHM@8sFGD(%!n3<(7f+g#_*tWK^p-MJcTW(Kx>S&209H$7+^&@fr@-Qb(QL@*u_y;uwGT$l|DT%%z%ECE-oLS zmZ&kHeO%fu-1ov<&qJEsA?-q)d{nSieRsEO@DACbnGcY>t6mpBVuwqD4v$0h@QAyR z#dBs7dZaGhH4RU{OL}RB>#AP<5RPSjd=G{^Nyg;~lXz1D zA6gH--OFGy%Vo=nyrH<98ndLFW--i+>IkKo7o5SMf&KJcP_xKZQc?q2(57DR$+f4~ zi)42k|3z&iey0L4nfZlzsDotQB{iT0CG~nwt}}VPh+pmCXN>H+Kv~Fivub*o9j|F; zYltPhuwB1pjS-=Ua}TWUS{U$mca@m3F(%06xVsP|XzjK1`#!3FQRGMUPwdPi)k9S7t>JoVfua$Qrihj*nC#^AtBm&BdS-%WZ-4)cd|OwZvyk0sx(p;&DT*^m72N;ats>(Ty5)JgN0DKpI83R9%}ljBiJ7YUknnUj9^|4 zxlGt5GDw!p?TUuLsW1_28MF*Mn#1 zy74^Q2P|T@0Z#27_YJOjnl%SJMR6rwnV_ub>*sHD6Wrn5ax<%!?4;H38b($c{`Dq> zoRbdTorrHIQNQ}xx%c|zxcIt^pZQyFf8xG%z1o2c^_ib8@}6n4!$#_QK?eIG+KUU; zur_i2g&uiD+Gy4#w7$4R60TlitWH?Y#O?NSjnA|`os~I9`xg>LTg8b3i1OlfsOuA6 zni(8DdTPaaiTFJxPO(wQmoCDGe`w)X(jnV1M0X|4i5}GneJ~^DZ1wE10lz@-9a&9t zb3_zJPRAct9BhJO_+9dkkH6#OFM%JCKXAFrVA%%M)qKfaA{W2m1L^_3HoCIr?0B3j zHEuXc);L&K^Xzjn${KFWAcpa_H8fL{EqW%j6G?eea3r;GTQ)D@H`? zuc$fFJ7uYvr??jLc%Wo}r+}xTC#HIt_?nDwb8(L-s{KRzwsa+F689pylZA=9IOO>c z?A~VZ*ZMp0E7hR~_pfpcIyD&Y$RjlaQ5#n4Y^0lB*PaxAfV~!7?u%UDA_6+c**Fy~NJ06%neZR)kmbAU8;+Lg<~czf>bj z*|X7Ovh$I1m@VTqS{_(Jt?K!_(w78dT)x4ZDU<53(x+pK^&Y1(uD{%28AdMzV-mT*-Nf{;_emYoz`kMNh{}06m)DsVaQwrq=g@g5 z=OQ|@S@+A_$<@W+Wi@yi_l)Y}u`8mT-deO9$K$2*0gB4WJ#Qc{qZf8!t7==%L#NiJ z@9=aN%BDOVBETccKRvMkpMhcINFRybApcWJWuaI3^O@ zx}46ISZ@k#S|%fK8B&u~rzb7X*^}bT3TPJVNy``QNkA_kd(hp>2p)qjAa%^*Y{19} z!yV`aWXBk%ryXKMc{*o5h%+moSW400a1#BO5*fNHXLBEvLrA!`_yOh1fol|llN-h>& z&x8FKuR<5eC`R!s&@wT94c&=3{+Lb&dI8yk4PQp^7<2)t{T6P{>`@*33g{PWb9OrZ z1@b?B?P&Vw5N!4`g2$k_#U~#Zcxt|>S9iyI^PGHeb?d76&#@LW$qOg$q++DWLCZ_n zp0e)Ig!zXH!2q}fsT*ISbLo@h{D{%wTnEVWBq(76aUGtv0WJj8mnHhU30R_;T!>XY ztn3|daSB}lgB4PHBuj0J5^|KVhxxGK{1@RQvM#FixSMJCLVjw)8?DE&E}=CIJ`|4z z`ufcMm|A>*HGaQ6fo%zG#i#dYR&^}TbL)xlb^FN~6H^^|jINq5*H_FT$9oeNj@!?n z&!PSDZOK@gi4sBhG*LjR*h4x`ymSbp_-_#={JWWnZ!tr1#}$jR%H|%!>)jKo)`c9k9+Yr2@2R? zj8FZ2b}t6U0y++Mt1=3XVOKyq&x_5mt$!>QkCUK)4aRtJ=*-v4W)z`wVB zV1qF}6*_3~vR)iI_42YDZ$bxQUY=!vmK@x9$~5B`cIVWtPy-HDkN9!@lD|xy(2H_v z8lgml+TB^yc(R=$8ZVI$aL>Ja*Zv9}bVx=QKeq z1S1I@ok}&y4-zB~z{oLP3~}6AT*FF_lGZqpl+->xjFBlpH6Ja_L_Us@D#20{IM1x! z*0aUoIn{mev6BUoBM*IavB$koc@8aXWWgAjQd*AmTkI?0QPP8GW8%WJn`YwfSPd-Rzs>t|lH3HW=B`Gzi|CbcYtw7>pcg)RPhr=Qul5_3^2? zm_8?t7y3yF7c56Uy2t?!OGwCc$vl`GnbbMZs$No$J8X8zUKK(zlBM+F5MW{$4?*R~ zCOqx2nSGz)R+U-e`0Ie=$RiHF;_KJhcN5Gr1dE~NNJz>q7pui#DuZZ(Ls$?wvWPJh zLG(KK z6K15j7D$FXl)tOEf%_jW6D{STWJ!WC?Wb90_QyCiO^)wy=V( zpCbic^2(B;t)C;s#q^KlPz6JX$~pWeIs8@S9R9+iFX@S=WS6uca%2&{ohOS0kt2(2 z+B~z6bCie|Elyg0m2Q$PiFh$ANdo!SSo&VTFUjMDsF~ph^({sG)Lh2Y&XXWLLP3Ds z2z7PWJS^6!PChHHCmK3H)!h{DaKpka+l!S2M}l`V<_rlMwDohOxSW}WNRUC- z&XM5#jQ5HJAs9f899P)y(!nV~3R68thRglpziO8(K?GepM}l{1Yc+L?zOA1l#fMe> zRAt$MBVOCPhJD`E+b!j_8Otv=L@8NPciJpz08&7n^ertdj6f(ONt*L8K}uL8=7$Haqj?g8K9V+iFirpzkYiwI$rN@lmkf=t zN+i5L!}D#360!_b96>16AB@bSSY_yj4aG!n5H&M6Yu6vBX{trXv&qp3YooMqo-Axz zzl0QNBknsbM9xSmzP4%maQeh11e9YNo*k#p{N&&vrn0#+KXouW`7oo-kn?ALQj*x@ zC~?Ns4O*Zjp?9L6>of6r>pmuA=bT7&K{D)uxLmXeJMi+POl~+xM0GQ`>p>yo46zN7 zAq#8zjHNLTB|{>kT82ChMus#@vt*BPFfybudL_$ZA!JBmbQ+jIAuGlAGwGYQG94eu z?9BR=Tm?_DZ-oDOt&q`c6Lgl`&Z}YacVG$n5wG)VcXPT;{rW3GKgsR98p5V$ZoOw@~*-G8F{_wdfpUVOhPx9*YiCgzVWh><7d zq>K92U%G1^fRSVTX7c6!RBxwWlfNZl^^Ft>%3O&Xz|v3r>FPN$T(;L&C1{{)=SVQ2 zs~_E)SQ2FMadM=(ykFqJ3-y}RlYtx|UlJMRX|*iDG*T1=kuQsmCCQQqfP6V*L`#+e z)pKOH+GV?l1yMkjEGJRI6z~$JR-(glgaUR+b`&K?rl(BalBeLT`)+@zHuqUkC5)A0 zBNs8ti6USn<;#dZu5{UP$OTMxv;a_+%`Sw;E$adf7lJA%Tb{ew!WD>J6B{wd*#bxf z?UwFpwp_Wf?LCWa>y3zSc}*Gz%(7kpmKrxTyPHJuUP8*mVKgRWR^Af=O?SqC8FM}I zT^sw9LuNH}3@)pkebBs46U8emWllWwWfW+IB}{ikU%pIFe6KGA6K$K=haHd{YZ)lD z*q1AjhAAmiazJ*K15gpU;G?;AB8Vcgh+`_b(nyeU@}!QStikL!Fn&F6a#8(6H~ChN zi+QudRZurMw^>EejLotooD`L?MJp#E+3=6#d#C~?6kz4#Bb|%MXTY?4w}Q2&%-wBzmJ z;?4bLcdB=Db9Hcas2^yoOA59xAjiv>lF@Q~m zPRKz_(m&pTP3;^B)b)#LUFegpog={o4wA@7{XR2NyEr*gO$tfn<7lb!hkKDY$fINh z!L)q&Ar%R`?4&pi_M)A10G|x4bU&l>D(QKI?CA<4M;g`VvZS#wa->laOiswtV;G-@ zC!lD35)ZHFIF>1eu|)|-Dd;IhT%~|Km@Q&0JJ#j^q0T?;j$8eheAkR$5w5HSP-Pg~*-&T{rYdT_m36JUgA`WJs zk6A>&&o8FnG@#&%a(lg_gOLA|N+ zEmiyKYlf|)R4r7FRP>0Id7-s^K{m^1G0Yq}tsMrss3l86A1z0=;9ILX?HdF%5~g(e zAfgem7-Ei$!fVPK~jAA~nVx1!vXRVq8>XYDBzLTUHwlT2xZ90bZ;vE2##}k<@*3Hlsfy zDYYN4&5(;G1N_3bEX(;|nUXnA&}P_-M03zGWTT{~z3(_fEE_08BJ8p91)K5lRRZKl zAl|9Xumv^|p+b%XV*e03%sIVZZdMaWjwE6~HCGY?k|POwxi+V57)*{d>;>B#X&6k7 zH2N{y98okzjvV??+Z;JGMvfe6|6Of{=15~B<;bK?CKQm#M#_9Sq?_X-El8du@_C4i27w?FBSQ}J ztZj}(S`Z^i!U|4{Vr-IyVq_Vgdg<44jUed|Mv4SoJTWpbj2z=tVUN~k7=)o1SrYVN zFh-a>7$ePi%b2HZjVKuyMveq^d_i(RawK6d>l&jZ$iiT9q%m*o=E!0|awOpo?dAx> zadPBopWMxnrbWq-#k{?nBZ>jZk%Ya#n{vL0ZL>$OSG(LLb z9!LGMZ%zioVKSr%Jk4v2G+ws=T83=xTfG?~wID{4gy7yj*=t0}LdlUuKHr-oheR+k zjBjU0gj4_{L4qyiW4vt-N{28~j90@IA{ik=hW1@u;}YY=XhDo52?lLZj3`+sMwamk znWuJ*BpDb+js$IdL2^KhB;&Pd-~P=oNehxE33kJ>Ry6cO!g*3;%K(5p31V-^v~ew| zp`)-F(&`rl^OvI>q*5}`hhrJ8ZAnE~1>}O8mk~+=m6523l|%vCJ;Fh7A_26(ur?+r2ChNd3w%aV$c_-67%wAE%b0^8Je+IQ!<<0K`J5BKnoyxm6ClN#|#~@)0^id5+Fl@ zk#3f0;RJ3uy6MM*^K5M1AkK^)TAHj8-3XHv$;8K2&Wp%7c}5T~r{(xT+3XoB%h$7K ztP-ohjFkfwuvBywmosjvR)}I3kXy`<3&@x|(`MsVcH??j8FoT|kD5QjY+bN<(&jcO zB+G3}J<7-zm2={ngOp(z<`el#5I$IjWJbq)xm>6WshEnn9_2!1NM#hvmB|LmkjN-E zJZHrfzIn^7$vn@jXXNd}oPdy`dQ6P-S|h)AC+M!2o>x=xzHY|Yn4qU%d0s8mTgm6u zQ!zcSrZDb5)1xDCkDkg?_m{I3@?<2;^Z8sk6DQwBWuzgL99h_F#+lZ! zkqXFE!ikhn8mfR)`EJAvRiy259ZAWP>q+i2!DOgRmx@5%?L+04iywxijC$G=DSViPAPf_PIu#wE5m6R=6EoM16$)fU+Z4(2F7*t|vIrE>RWG`bIi;coQ) zqw}1&*_F%BAH*QaMmL zQkhq%TPMwkf!6xL_?ZHKSv#lIw0-jC!KU#`G?}rpno8%inNcr)THac`fL#2=ZWHp- zyonY;3rHlMnbtsg9#u#p_JVi5iAq_hh#$c~1?1^_d^@KR`>^x+WaJycBDU?u&XGIt z!grou1|HPTkuUT>ca9H)@Qi#3E8hIUZX;JFj*;h#k8vB>&&V^P=gYpy9Z~c}nc@X- zxWvc1dS2Dbx64-Y%ZDic7>~u!Srhd@q`w}H>^scD2zu%QtJ<7=UKf!SY|fA`c^hY(xB!~ z@g|0_ar={NVpF1-Sr+z7jqotAU)tKklzHZLN(>;wlXXI1u5DW|*R*ztwCv;!nfCC! zZ5DH_udoj<@a@Y>rHT13t(C1`T|@Ii&D*kdkib|6<_;3HM&iYu(fvY$Yy-Qdw<@~U z_X}gFRFm2Ow|rEyr>FXE@nbT1kAE+5L4;_LYO%iG;2G0uzNwB|a({fpfBUAoxfxXR z0>G$AXSb{E@ou@8Rr}p+`gHU8hk&`gs7Qbw{%+g%(NBk9sz}$zdZ>vmgrf83wXo6C z@30X;?~ixYcRIN)t@il`c06fYMU=lo9a*8m6*9-=K?t7G8lQhi#H&iR(kMXLNVEDd zdn7pzAE_^jmPa%H{pz(DJ8pRy`~5od`)z+qwcytSh;_e8u@O9$_3WN@kGOoB#HLCx zRD&TsXSh0p&`gx*(`^u%RcN5tYAr~gd9kobK{Gp+ z40n%W9F0NFrsH6v2F9>>)Er^Dak#?`G!A#L8Tw+q$&h}4A*g+`ur>3nfQ1O=mrN6`&U9XV2(8#VQLex9ikIHJ!uL{ThmC~Jy>enxS z{QT3Gs`|Z}OfH*MvwLXPv*&8N*(_!DVv$_Z@0a(xrkURScs<*!_lNCnvwi(WBsxCn z2QeS456$%1rEVwU_!l7}^Pnsc`Cl#mu9~M=vpp;}YxSeXs^-nMSf52r1-Q7TR7}zj>3MH7*Qi>v^asn zjT5vSBF0vuKu2>h9$^fG9jscIkwwfy-QUb=_~b41!~n5dplZ+}ilNr)iq&7gemjU2 z@<0*&?tppqqUE+GYRSsO`$ZL4Q(LSU-EVfYW?miFCoEKHJ9HC;7SBAS5IZCkVAm`j z*1k0@mO;W0+aRH2?U`FG3aj58bIK^(u65bVQ6V-{KCX--r(GE11q=qiJ7V!dn}=&~ zF3z7eX+(O}&usU(pzR*r!2(6PX9bE{JVyy_jG;FY2X30hV1~_VIokc zZ%x<@D`*FbAZUXkgt}FiCF1m9QR4K&#p$q05Wd4Qae5_AIN+K#i4<$yBgHnh>!LIy zxD0|c4wn#3_1BllRr6RqEH`)ca$n64o1Itz+CQ$E6*fc`$OhZu_MbXNn_QpBM5VXY z!)#U^=Bo-D^z~Byh|QS?xxNwxCPpeNrCd>qb5H9}ZH}mZe&tT@6pvOqCbM3?3M*>t z7&L>~`v{lHW>U<%Or>Y=VclD?&C$^Tn4QdpIkj#PFiE3)q?1OmqNNM3aSW4isfG`i zhJlT9o0)}fcikR-0UK&X#+~X<2OLpu4V6FOjcY3Gne{yTnRcB``JnGI>W0 zQqTWB?hnXkG1;>>GjAtq+xpAJxmv8Y)5YTX1{?fJ z$EjZF_4%kcgOIhv#GrYC9G!VN}_O~LJfyDovwsSHEyufiOO`QjVKx%ZD1l`VXg;~P{tzHoV#=&)83*9T^$X;QK zYP-K)3xm9N0YkG2C}(^tQzf&;hclH;y*_RyA9eQiwW*PtA<>*Sp`1)*U}7e<-7Qx2 z?zv4YRiW7aQ2*XF@-N-vN{C>LSp-a*s|c8EED_HmCep%p(kPiaX&5VIVm&6%L{9z0 zfvkoQ(57*CP4gqKtAE7NQESnG0v)gTUdJz{x^7u+Y zewQ}CQ%#FQ9ju1X+xy^OF3Gboh*BP59rBsHxv#%B)#?aC1da=RnOtB7f54HYI0c?f zfWV3jhMR}@d=zX%sV~Hr$%I#LTZJ`BRB3%Ye=u!(PWVrDhUg;7fO!ey(d{Gwp$1fl zNY-65EM8O_y>-V_>83R<%W8B>6ksu+LV(X(q#7auTKy4c3pTVgLOn#fS}WPm8crv8 zE4;fp?P@$Pv7>eO*H}S0;8a{lD(qPJQaMq=6Kr6m)&;J)b9UPg9aoGE5660kBP+B2 z92dI=-OTIkVok;B&_AY^2z5c?D@tp4ztpr58KZ9Gh+9NPz=sp@MQVc^y zKAwp2Av9SKz>)h@ zeo_L6e$M>+Z58--dU`8AaUOtY1lls#Wi4CDR(tTje> zaDkYmN9rMNR)F0o8)rvkf5?43o6%^;4xL8s8|{t{(DVo$OWQ^lk;#L zKRXZ81=I5gX)r$z)21dgUiu$~&kz4Y8NJw4pbdIXiXPUuBS()`(2mQaIvq%jx|s3h z!8MF~53VsrsE$NEqDDui-c>^jWv5%=8mX?$BGdq5C37(?@}jzoF<5?Q9cQ`%{6-nE z0KZY@e7TTh`u`B$Isf!0+#g>~jzFALNqf6%(0A^Vwvh)@PbU+7c5|_QX!GB}0Oli= z5lqeJJ)`QF<@v#~Im%J$V{H!0oIZEq5I~oRg8&9;5C|3nMGw^+CUdA}hp;;6gu+y( zteq9RMD46NK+-^X93*I{-VixM^|Y8+HSqcX3(BoreS}7kK0?hoz*q+RmS>#AaEp_4 z@X-TDCnrPH#mf+Na5Do@C%cxai(gCC!H^GaojfhVF18k7H|KW9>|@O+dw4U-4(5Tu zxKo4>eU~61`VMhAhWt*ky6Sa_*Hy1WOr2u8yeg2T>tP6bAr@tKVE08YMBd{l^ATA)m0-anQ@Yufv$*O)*SDr?QNUM5zsEKc$Ju3oq;4STX(gneBISzGESV}6&K5+j7s8BMwy4APKN|R^0*j5@|Y~a zs2Z0gOdgdbOdgVjI&9q4%n;^E>DnL%i@GmIT#q$!BWF1 zSQ-E(tHgoZ(hzW48UwaZE-;xyRr{1eurvT{#-P?yS=F{QByn3B0T!c76j+wVfMsbM zSd2Td=0jys-T`inTTErLWnAvIGz8t22IN+SQMq|}2e_!OznXF6zF5qW#RLker9@#M z%cD-CQ{fZR;LcQ-gba-nr%38d^lmf{$S~iGqRp`2)A0N zG2>EpSBnbST`eY~+kkPgJj$pf9%Yod=NcXCecHGHK5a~du;ZE7<2GrSJSs?#T=fz9 zWb6r#HqJK7CFZ?2nt)SYzhN@8!d(csWeh8dZ_RWyKzspWOqbSsT+6<~t~e@~nVw62 zaqVQI;F1T8(?vB_~!pNgmp}8{KRDTSnp^USRC-fbUOQS(=H4SqvZ=ctOlJyu+UF&^bT5s&QxT&x6TkLHqckAAq$#t)k7Cz*NKN_Vn*v|l6Ko;coieHU8T$1MuEXq5MFN=?{TzlxmY9Zm_5m_ z%ogwP)C(SbnLf$=)?L`)XoD6{>TOf6uD?~^-c(b3)qJCp44)*VK`X-P=_D6^ zUF1+TBWC+izo!rLGDp+4Ra_gij>|2Y#-eR8mFav`TFp(ueF&%b-$T`v) zXBHc}p3qs)+67+#y3-z6me$=XEOZuhw>@&8wd3k3f|?#sWYQa*Y6^V$5>e$=7K!oEPXk1d2Z)z!~UGPpoW8U=7Ky`?y5$Lo}Bq*`F89e z(sycVGic~iDt4*Ny88Iq1JiJ|bj>$<$I3a9)46mKiL%*McwqwyW*M3dO_*hK(c(#l zX5*RVYu1}DOU-zCUO>eZuKBw5rs-1Gb2cJ)W#~0HRgsFBbUmj9lX;$1PqEZ}UNt4l zb8DFuaK^VKlsvP?X2#Un~BCRcD`le>+Df8v`?DIi(rm#-%u&OQ(Ukc^S0^=H^jmL(^s1T(n5j@0kUe zWwe>ntT#)RnvKlO`&3Nfny+hbZZ35_XCs1FhF*h*WU1Jg+&tQX$vn@hr~D)~qc4tE zQ?fj_mRSKONy#&NY-UUyuOcx#Yb)wB`K;cmnVwZswd9^NMviY!&Gf9A4$sXC23pPZ zteSdD@aJt^pMC#_KY8o%#TWW@zb_3ezet!&mYWBBlicifo89H<5g)0^XL-Ty?e4gy z4|u#nl<{i*^?g>c+}^c*YVQGbm;|6~DHNFfBZIr#;8Qw$Y1CDHs#(wmt*Dl!N=F4A?OrMMtY; zL**PiRLHNd*Rz}+z1J05g}oG ztO3a95h&*Pfntu$2a5o|HW3oWhsX6GmmmS>5hP$7oKY#rBu2ye#Ap~RcZ?14iV|^VF(SIzhTf>2 zZMM%9uKU0ZRCr}`Up1Ti(6t}aryFFBSLSvQN#5RB_4N)JavU+RmNo!UXVr1s(8Xc> zlA4UFIIy;SabV>eaoj`;>o{2)xZe_K66>`yc2N%9`GIQz@pu}pVSC0glbg>Mhn1dS z+JqNx)dhkJtk(RuX>Z%X<=9k1%)NLO+;yR`Pr$}Ch!O15v=dwVvdlvvE-98_Pa7xKBl`6Tc^f?#~-)q3s{R5BUGe7EE0vP)VH*h7b$7MLPLK{ zdYe|sZ~tg%;1qEkoFYpLyUf&GaDh*XUDU}1nyXi$=y_m^QM5<}P@|Dmi-j}`(2f#TkyuCxps~$0i{6U0 zb_oy9RteavK!hRgZT08Hc``r#Vz{kwyr6zX5}Ls9{}{|VU1)V0&Bzy5kxp> zL$#wg4YCZt5X3kbf;b1VMHd56-hnU58N3rALPm;^a3&FwC?BIJZwwp6ki_{Ik}f`; z!8|se$-)$j32#&tZ=-FZ%efk%`V8J4{$xD2@Ph=LL6CrP@CU#EmnaeE6eVKZtYK2y zgSUK;fO82Fa1Pes7|_L94Aml796|_;gY6R!7K?=?$jA1ijBjts=wPg)g@C@vHIq+`n z4s4MOxC&VHB}EqpNzuVXBnX{MBt;h!NzuVX?(R%;lFC=){w zV-nab;^~$wj>6007&e^68=frrH9-_#6T~<`y>1SgAj&}#XbuCjFw-Oh=?(v3^hi2C zBk%q7%O5}g^rfnPukf(a0uS%fku;MTUeW{T@@!f!tx9FT{rP(@sklSBmrCWpe>r$` zb2|hzZ?xmm(L=q)eUCq;c;LPf6YG9#+UpW|x49Yq{e8Vy9(T>pSK?l4>38khyjb#z zkqUL<#ceJh1JKXjqUB;F`ZS50E8u}=yk|lJSK>YU#rl5Z3XIe_M5bnOp`upMU`-}v zu$)!|ajE!mJFE9tkNx~R-J}j%)_02^a4!6NS?~9)z|)%>1bW>oATAy@rZ-(wJ1}Vi z1@`eGo1hESw7bhq74-Ls_iCo3{KT0sUF@Ithh`=F5n>C}dZYRj9^9sz))VfXP!q(L zfQ~FFaaNW&yY<76ru=IN9c+V;BX^)of2MBv>z^r|KHhoI4mp;O^+~LJya;Tnv>59x zZ|e?l$}i4z$R}SNN+?MNIzU0`#euSyr3T;j-c1##2wc$ zOCO;TppS3>XWIfDfVS#=gqrh!e2sZ&991WG?W}hQvX%mUGSsI$vv*K2n|Dz4F?6jR zhH_2aL8TeexE4||E#ovDv@EQ#VOdxstrvPlg50`Hq`afP*An)qDbGuqHt3BXfyCG_ z?+?*|+O0*ic*8K(cv~tfw@m*s9E|;Xbr30#G1xG2)wCcErQs%W#mY6eSh@C`c-%|R z%Z+dy2~!5TR_$fbU(hgK&itZ=^0~dF;e2j`42hoM*JK?lmPf;Vf>np97_3V2zCNy( zi|@_y`E}Q%MD0)xB^ELbB_1vXrbfb0!;tl(o`b2)v}@38g-tZZO3qOk+gWF>QWv0=}At~Dguh__AY3>X_>E>ifVL3^e z_JzhaOZifmT=!C#Om%;(OK&EY_D@RUaubxqWoEDk)iNe1g~`<~g~?SflLFYzUkKAu zy$~i--O3BfGqW)|9b8L0E2rg0Rd6cJ@@p0HrXw z_JuIjDG%qgCHoeFozt|wg7-iWTV- zi2*Uhrda6rxIyXkU!Vro1R^Ewc|Tf=wmyCSUR*ph>t?5~XEX=X^m&j# zjR`+4mtNuG?Yz0KkIRETg}YhL7l*}WjWdSeYHxymxwuqZ{gbdE>MN~Pm>iqdp@UC7 zB1LN9$m4&G3*3r`+YqMO?j`eV?L>mb;MB1^A;`55eiQa_-I|e7W0p|=(8f`9uM|t&$Mhj{QT3hM17#`o z4(8zT9tXeBr}g*8yXv|U*RDjh_09msoG5q@u#?!`uZwi5FmSjn1+BYN*C~WY90P7Q z4*!JHhguOwEA>D#&};Qz&<@dKE1H36Y{i(QVfFh3?Wq@)v!~uTG2>pZ_n`l0a9HTX z8mUevmQgY6Rh@NB;t~m~ot0Z95;*rrJ!I@=ULO`<5J;aEgFwb;c(?M)G=a?s1p$_mgLxzT8B?(rI>J?l_Jtb3}>HAb%g7x6O*m0PDHer zI-Rn0R*DJNSxHOhrGIty*?l!J>nZwAg|Gi4TKmLTECH9w4Wt!Z2GVM?hsPo( zYIYGB({&N`aC2QflyAzD)qUJ7w^tGcCK#>HbkMlGLO70Mq3MdpD@f!r3leE==wU;r zKP~q$m5elFDv@-r@m=xmaNNEgG3`=5o>EiDnZ(n~^SyalB=GQ0$=ol%;&ZNc9_8@~ z4~Ly>`m1;oyaC#Hb)szM^`WLYg&ib2SJm`EPp?kT+S={n-Qr=r*)`KAwea#*-ln>c z-@aal?!#=Wn7Jv(Y5Ript8sSgSKZgp)y8o)!{_LltsoWLoJ1Nk_Nc@$rFqCYFa9R81d8FKm%)QdKP1R3o%+^oZHflslH=*kyGkm-4+RM`& z{USUCSwBxAn^&v)dxPuQR$KjVx|9O{p4H1G9=N&RHwXN+YwoN69C5Yl{i507@A+as z+bvd$b$!^--?I(gRjTl5{&ra(ntip$^~cQ~1>1V|UHKROTHsZpCqri5^m)C-Q1JQ< z2p;h5aecRJ)NOS_iaUa+=k@jg*845)zB}B%o^5b3#df#ZqS_k6NwrXSACQ!<7yDf; z@apZhSwpstM}5Hv+eS@ujb7Pk1s*aX5lxE+pmI#2Tb64-0>i)Q%kw^j!Ke~S(*SdA*T9aly z+stv#VB0wRZ8O95zJ}mwyCaoW_3jyv4gPHQdtx$Ce<}%PKU&`r8YwrS_6MagFaF$% zy3$VMl<*kr7J;b!$^5a}kV#~LtB?E@6qS-e{vbmhS=7{oBjI^165ISln!wcf+cXOG z2J%D8?=*9?E>!{js(!v}v`A<&W|UWSTSsjW@#n*Awp`rdGX?Xbad)|5Y7%t!LlL$8 z*_KOe(Phy|M7M18s;gk@7O9~pSf(OJs0KVP8PA z);}2$M%L2OjjW~xA6d=hD(pg)OWN)fs`hJ%#dT?`<8FsejW(Y(+qSc*1f!EgD@-0T zi@<2@I%wqR?tOA)4eVa2JEn)e%A@^*(C_V7?!(gX60RjaY`NXXO6g#XD8*=rZ)QcL z-yLTN@$L0BH$QNa001DNdvO}X?ai}IAWLy+5k>}9Q~TzC8+7>93L)+73_S25CJ6MH zj*P=Ik!}|&g^5#{5xo;jGYs(a=IS0VNnsd8F}j$zNs7dl;QoQScE6Sds(dWW9BK)*a7CUq8&xFPFdxw%7**S4&C`#9&82&&ZyZNYp6f zZU3YyI#3wUPhY=PzkLJMVYzD_RE=G;-R#uqlUGQZzE}H3CS|AH;y_t1eto)?zd`hE zvv~XAU8P?v-8IV%cD}*3W{P9U@H~sw= zXgHz*4(3%zB_2+A6J59mfSW1feZBvEv(_$iz5XQg1wmkN8_Z3r z#Y#9FlFS`abdk0bXJj-owRvc?H?}{%rL?p<%vZQiuBq3UEs@tPF#&v_6nS+-@Q@RL z`y(cZ@W++>GXx>hM5})F@AZjhRxrh^nX5l;9%0jqSGo-P{`%GYb!+{FvQPi|$rR$x z>l^#8Yh2c6enDls{0rt-N3`NCO=a#EvtO`IWvGGnRj7GOOOxhjYU}BGw%qK|8UCdv zQl=D@2;^(Cl%An{vGxuwt3=KK^?w25b$&#uvh(rnRUT^lxrr8GTggD6&Ll}l^hXxmdw&p(7 zm_A_{quF87X&QlkwRi*-ul88&td}<7-ELFQ>0(IxXMw2uu@6r#)6AtTShumOnzG2x zzf}U3$klsk_A`}h*%DK8RlCh5Xc$q5yL^L%tHYBpoDfluxHkA={srC^5>1wT z!V*=$0J8A6uu`({cO*2|YLo|02wFWTmsaw$F<6f})J?UEwUZ|0udlows8S=-BWB1H z4o!91(fa%j%PC9j3{Y~W1`(B^AXni(*ai_UfiWVawJ1~bLunKxnizPnZLof5bh<_( zoi3&H8nJGMTprU*UV5w0ii!+_tCKAS5jp|B>NDha^@$*CY?%}-@w-U4W9`h zQD{4wO6aLcSiR-F`2)bs4@5iugPghXUqsXLA1G6ktCsjcNUK722>sqXAB){nH$|3g$m;^XVTbto1Rd@C15T}_IUm=T*oQ_khHjM0Q0kzyEuK~Z;Yd@XJCjI zKj>zVwzFfv{J6q;4)aIsN&Y~3Y4>@kz(|Y|BvaVKY15DU6#(>4qIpC@j2N{+dttw`5M2dFL(Sp-11m;X{6yq?hU>qzGt`}B96j`aR>n5REX`_g9BQ@vFNA4UbNV;_wZ()Pi?h}2hZugZQ`TKs?G+5fl`XP=t;QX0x4aB`i zERs^wcrA#6`QkwV?nJYxKd>aXSpHZ2A$?O3i?Amf8o$86f`~Ya`14Bq>(i}_H1ZDw zIjlL$66)VF^9K^!=bbTh6V1Ce5@YSVEzNcFBKnamRjF|J-g)SG3Zi z{#yqHbNf79dY)PdBW_4*k- zP}AKZ7@TI+Y>Vw2T4KX+vBIGo==b{K75*iP_kQ8z)!q=kL8G2#pj_P%&}l}sP!~Vf z_!%3@cj64qE7?*s)FDBoeFAw%2#NGg&l_HeEFfMiAt;K(X+)5T7e`C5eIem@IHXY_ z+5LK0{@Sd+;;+q0YHS66SZuB*ZF#@J^8aDDo6_hvf1SWr`n=J_O+ z32w2Ov3*1&#xM*o(A(}9uYVk>8X*9?9^j6Rj_Y6czZ@5+J>Q%bORSvlkUfYhAJoUz zWH9;(hq0N8VPB#*OSC6ga?XUDTF6_mi9nc8=L3ctqY!daq~WC2M7RWb+>~P1Cj{~Z z@?EphC}h;fj60i8SpcU1W;B&@^q010hbG?L;VkFwnOVJJW0h%&D!#u=+r=a}#t=k( z)_ULQ19^Ulm9Q&*!)a+cA*W7D(XZlDdVX0deiV%_b)crZ!uYv3h_(rRcrPB1(T&k| z%hCNrs6vC%hL!=OWLMfZEDxsUe2=4&9O|t;< zLRbKPq}=B{>uM_aNU<&vb(Xq+u0&>}xl=S>)zm2-Xw=8D+@X3}kWe^9K@MRDhQI@C z#N3T;A4GJ+DGFglcn%$33w2N#eZI+Fvd5%Rxk9)>GXP>K?IjW1l4_qG#EFgTvgZD{KLy8NSAReoUlk4H^%I7Y+V-^ zT;2OMt_g}bg?KrmlQGKjcuYmbgX(y={~$*kMBKK5HJY1_gdrLYVrFtb&+T|KZZsB+ zXBtfORqGm5I~08SDv#b#>egW((buH7%Bv9XWiJ_=y|>Xtw?meSGJ0Hzpri&>>QSLg z(fDLIkem=mT7%slu1+dEF^lB&rQ0KRo7Qs~dR~RnZzpkvzaV@xIJ?qjeA=1hDeq94 zKBIIhbh1oDb2W8R$A+}?q0`WmEU#5t>oJpAxxE|-Rbc5zi{-IPI|@uD_5APS{(z6E zmU22uQv%DWRqwU!tW^~Ii=%VI)?Gj75DhnDztSmrO0hqR!57DgWLT$uWCEXl$5)3J zp6f~n{@7;ptraP=XG52aislCsC#=b-$|*uQDC!ew>hSjJt2heU9kXfPM}{Vg;4{`+ zan=zB432X0K`qAbVJDGD$+Wgnwf#x5$OFAJ5>qFdB_rn$xM=K{)Jv1rWdR!9hY7IM(u62{KTNcR)A#UJd>k7rOuLo7PPGM!lFUp z5po{&%R=;gF+7>Im4snKa)T#5-P0<#9OS)~2r{ysHOy&!$>fz{M(SKaOfZ!Es*inj z?i=z`4D^Oh4J#O9CKYcmX8x?%rI6q!zffCF9k51+eLVV9W-jNu z&KepGaL)VE%u1v}n%|4)(@M_I;;a6oa|y9xLCs-8k?u300a7ic7-X6JKnrpvo}HSe z*UO-Cg@w;kfrWkmZcx*nMo=DyX@p6DX~_wzjaKrH832-E3L;o^A{60L?s5ofGQHHm zW{w)TXOg6hHil^RUyfUB{$f(DRv#+9h(nIR(#y#Qk#>pzg3n#!D}hRNBj3AbbC1P$ z$A?X^NO8ps3%y9312tOf1=p@F0}F|4(Hd;!Qi1I((vYFXm(<)pyQkrDY_bB6w5B*g z?XAIyvOkUoOsjsu^6A6v0iPs4&}NTbuM`7;31w=j5eLTp#s(S2SoOWBSVw?QwU%2p z_wCA7NHgP##DUgZnX73plO2VICrk=tQl-~CD5ly{CTD@lk=YQgBRc|n*G7humj`08 za2M(jiGiO)gZe6wMh7=4qvde+Uvx&fhyyMk<%$_{pYYO(=rwF25uG72J`^cLK%_ZE z%BUsBDQB^ex-Vahj;^;02Q>==W{7tB{{^P%e0nMO{38?0He-~F6zcedb<|LHNIfd5 zfD#%Nbr1}jQp8%J!aaHz*4}_i_Jp*Q*G~eqWVf*WCT$JXntzLR9DTA4Zle#`a~q+X zU6^i$AW!1Lt7v|#e{R=+exccnEO*zwg~C{&!o)^*B#Oyvwsa+buQc%wzueIBt6woR&U#1%@|r4D1wQeI^N=P?tz7kdXDYV`(=&q|LGGor5>&( z5qpQUt@K|U^S{SvR&Qa~6&*MbtFY+j$rC-839`riNi7beBmIQEUpgaB`%26eP4MHh zs5XVg3X$HU3Vr*d26;LJY9Bwc=ZaScd??3)n9SEGxue}Z971mGWxnicKjI3`lZAtJ z3@@eugnevJZNKclVk)>Arc>}s4wrtPnap(lQUBnq9OD`Z9K^xOG*~y@8RxE z`CZ3SfSLT%tNjC(LBv`;bss(P7L#j{T1hs%*IBxA^YK(wW7omk!$Ap!3g4)W9AbS3TM3 z<-jRJ5%)i7KF9wifoZR`8->Q;!JJ|_eb*~zs}uzX<#fUUtJA&oKo$Divn-es=y+#0 z3`~WP5Z+L*+EdNFKSDftK87NU+;C7?N^n5dQ+Bi2CpHE`7e`X`ra;+qUP}_0B`}jQ zDV4jAnztH})@`!Tu6Jp9X_KHrvm3<&s&{n%jT zQ+(-bj>=fR!g^)$_`s(@qG8=xs5l~_`bQu_c`i)eY0ZS}{T|t3?FKfey+aU@AY`Q> z%y*`*5PN?9bo&JdGk(T#TwE*&`>8_;YRf~02;DO_9V3a1cI{BE7rTYvsyTk6&+3); zskC2N$j#wnsyN#%q4hdD>PAhk&qS!MMeBOwhb|SM+Q=dgZpr+F7pnXUGpDP130~Bv zy#UQuthqB+JdqO4W<5bnQP`T$IUB0tJ7KJ$Z{%qVKFe&Ii}uolN@|O2641AI%>${688Gj@-PJ(PO!9n(yNLf#OA8^VpAwT2avW!FyuwD`>8mC0qo!FM{!E6J+<&J+&zddeDryuExt6ysBNon zTo}`#|HD0opD+*ow)u^|wWnxF9wzRAu$HgsGZ6W^Vvo7q7jYeKwI<;fY%#Dm>_Ym2tBo5n?fD{U-KxBrvs*Fb1Cv&BYvbny!YivhZ-w>(AwCZVA;Zqf1|Ni+I z`AMWNn2k7Ze?ez2ZsX(S))Sr?Y z4$So7Oe6bm*T4Vze--kMZ$EwcQvEXh`QN`*zy0*>f2Uu+f}9OB?FLkGYJm@jg+45E?S`epphn)0-0XPWBNp!06NS@;KI9>4C#u^CN-^sXn6hT)K>g2 z>@}-|#2_;}bDUfPv**1wim_x_dV!)w3g&BI4$4|U8RB-CPpAOhV=d-zSzDSmXD;Of zyfiQyWmYc01?5l>9ZFQ2z#!!Psm_u;&0TPH#UU{@2$yX>1RhLiIo_6zUnkxsIwQ~3 zXU>V4=z!BEi)>#8LBQb@G0mxZq%|HB{>CsfLv$ka9}Q+f9%k$(RsrqZ%a4hw_ZAek zwxA1A)1O^6t`E_el81(3iPgz}&?WfC?(RK;4_hB}rJ#pMM)K_yrj`nwnu*w4A7L3| zw*Bn~Cwr=ELU3YL6_dd0b5B;cTKPFyuUHgfCuSf(CItl1c+?J+rZ$@I6+1gB#w@W* zw)nR%A=pd4=tr~jhS&JIcH`?NO(f66}Z)G_KOHS_6}9dug=*YeC{F(fCsVbGEvYg!6Jz7#!D^$S!;36u5l}zmO5W027Q!9AQYu~N=9L{j#>R-I{vK*h zT2dnw4dE?r!CPMfJ)ObU8cQTkVI~bgSMEqX5ZO_CdrPU1+9~e(34_2sI|(tSfSr>< zc$@1|R_0brin9}Ih&%at?B4YxbEhjouRQ%udCME*Z@KioZp9}3^BV0$2rDG6sPyIp zDgiB0|HPa#C{ox`LhQ4146=6M@of5XdYXoMijhJpzJIN|#d#)4XauePe1Gq;Z?Th? z6p)&SL<5Y1fE06doL3b^HQ%vG&ZFn$HoVl;!txbr(5<>V!5bwA&4c0sHdo3Mk86-Y>hbZ*!2fqtl<<(Tb`bddz zj4e-0jG0vT)bXc8u3`p2c)U9B2R&D{*2TRyrf@;o^QRC8OZTZr^HMo#>av9o1%``t zx?%7q)#OK(IPI9()|7Tv`LZ-ve?Pnw6;M-~RFT}L;AJ3zl3-K{m2%;CL!5V?{)j&O z(Vn_2(7Exr`lfUyLuhTtC`Zl-OBNj5spq}l8B&@?N{1diji(G6MIDb(g$fv<7!KhB zJ#gw4A7f<4R@Ezs&Kit8z=H}~`4T(~+}x^s_{}lg=79;wa0*>{k#|mp7djZpaD<1u zK|t{-dI`v5IPR|J1-mLeUvX$7y<>Y}^x``rFPxcWZ+nt_F_XcT4P}5s#L|8^4*%C9 zoz$=tH1Jp7Up`2kFRFW%3ue3GlJHUFsTc4rz4CMzZ2{bwZQXseW+vld9Zuk54{D0R zer<}>ckp21YeINu9YcWR0M?%Kl%ofPrdWWn!IFVWBTRm4ZlGk(F{xfBjB_xcm-vG? zw413t*+e$!L`4T5MwDSPHs?|E8a%!o(h$rLSx+Q#^X8ZyO0PN^rQDLrbx53UQd{{+ zGv&e3vq!bgeguWZ)bB15v)#T<;zd)4DL93L}Mv zkp9LvJ*kRHW?ML2?vogeKWPh_=YW(6CVz|73c#Ac7bCj45r~Jot>j9&LQA3d{WBz} zZ>9ZD2Bf1H)>-`n$`@ybT4ltU=Nj2)5Z-khVT5{eI$(ncB8vUKUru`cG=ekgSJ12j z)w(qV{#n8YEjYn@f33-4fca>l-z9Hlw|6HYzVs?Z0X1jI%;9k6}(Ro zjBgl$FRnlai_Qm@rspmW$SbPXVbR!xI3W^fCKXQC+!aemiaFOq;bJZQCP7fD zM}9Xt^G}xjHBR*UA6=k6+8}INRA~grV}+hVpk_1|ZbAA+Y(?+m>b$H{k5zg|+<(OF zE0(z*f(l>Ikaf8|eJU{p&FS{WdgWd@?3D0V+H%P~<&8szt=8h%KDjW;8PU-X$lAqt zX!F5)l||9k8A`nPU89du^-4U0z55-0lcE-`r^7|Nm^pI$&ncnp` zL46^Gl=$K$dU9jRy29L%`5u8(CIr`zsdJ;nYMu=%1Gg z;p(E_!jXH@RfI+$k{q9#us^#&G25`?xwrxpY*##F!Dc`pmWr~bWI;raZyFq++Ul|+ z%k5(#Z5FHR^{52uCsAO74Q_&zhDf%T3B35MW&AKklt$*OaE99^4kCV~-X0e3oY;L8 zQ_E3Cenz0*LfGGNc{zsDg5c6spcBBP%aR2*H8q_lmDS+dK*}km}d}0|GCsZh_`sbdMQlk>}y3T zU1liUvV=z>8%=_WfTB*sLYgJU6I(9e6cLgM)gGfVHq+I;!x)2ideU_p4#~2*t_Ey0 zE89DTD{}KxUsxM1FEG+nqeMNNLA0DTG&yB8Je1$o80*iPqM4#g(+%MHSqRD+#))^d z;Kz5m$Jj-(N?(~dCJjv}RcSpqN&K%ptg}!2&7E}dZxcy~vk|r@UKaz6S~@%$+sG|- z=PS^B%oyn8oSB~xyzJc9Idc>61dB?ak{A*URUqkx5&*BBNLyoG(I`Vw!+1)>DLYVjShqy&Jj zuC};7lSh*~+~_dLAQwyQ%vm^kD6awsEY#nM-knN0M^NDK!hoM9z7>t}-9O)-OD)pS zT#-^}i8@Cs#)eP(oStf>O&&MJxSYPeWFQ741sdH$i!n($^Nn6XeYVMIt=xr%K1I6nYzXOcDSDw#mT!n z*lTZ2dQy@|6U3^oh_F|}b%lqcx0V#Y^BoZ_$F=DvEk$~^=o9;Hvnkk)6K0WTSERe0 z6UWi~*jUEv*9G)iZBW3z2L%)BMyYcetUtfI{`6UA0LH+k!p$04>9eV$%4uk9(KF);P6D_^gt7{A{JeTXG+LBow zdTyfljV`q%`P5tShrwm^Q$HXt(sv)2ycmCgN6iyb7-(#+{NoOH*k0b?I!l}b(J{~C zQguq9-;;F7eOp*ZLys{J6vagFX?LhoE(A-YXstO)OSK?mJWl@_UFN}P!xA2?fa8gW zhpk0iP(5RdBwApoIkyRt9Gqkl!-Wjhd+<9YNck}*VNP_2WH?)r876sLb^Cm%)#tZ2 zfM4`gm`!-4g8@{3Pv+nlgB8f6h+-TV7-!l%pL@dlsJyN_x?H7*b2W;$RDvg^<$$Uw z-cEz-R@?0~d+h#&-XsCeightfj(wlMpUfrl`&ojkcPC|GQ$yrnY)RN?27{&2tnII> zQ!y#(Ax>!->|rElSz%d_g>|eO`L2v`9WeKglO{NUFD-BZ61^oytQwtM$F&X;A{nM_-4Mzk+A3)1FKZJOXOX%A`LV{Kobr;FQ&y#@64oBU zpn#EJyx=uANPFVG3b_$BOeGy4ajNUx#(2kgCNvoE=b(6Haz3Yiz&d`-{*Be2D?8M> zQhJS(0aO$qVxg!jF6Lgrqk1p3 zCm+x(_4_?0(OmNXh`UtSv|ZQpD}NnzVX}TaOMo}m<;^rX0^oZec)*jNc}%JReGGXl zR->|;3BKT?M+9H+%0v;I6aZI*ykW>p(}IS|!bmJ>vysuGI&LQ37u6o7zY2LajTtMf zj8PT1W-M%MF%_`Eyv5IxCY^?9%))aT5=UiGaGt9YeMO>?d|6?M;X)uy*j&n_;!c!DS88#D!k+5MK%t3h;wnP&J=jen1^h# zSsjX=Yf^PVY>tI_Y+5|FrL=;U&WS%$NBK7A_jU;x3e9Z3Fy#LMpzj+xC@QMfrkCFQ zePfk3{cIC%t%GmpW?(hiS*~z3w3H2j>{pgSbBm@Tz5;Gf#87Z5U{(O^hqU>KT`-o( zO(FlX-JT<<-an6)RJUncUvu^q3QJm0wp)!)m69ZJ0NmS$u4_>b1e6ZK+zwU{8yPL?@t*u&G*oNGa45 zm>?|OqwN+w{~cwMx-1S+bp#I)N7&5yUpe=g)+s&^%++izqigz2JM3TkBvT_mG@$g^ z4We(GL({nh2qpPq6v+GKBJ#e8AorhWmYIpg3n(+Ytnd|B#A&t=gkP8gZR>|17Ugh? zQ=y`?K9C%&9gn!pSHUaTHPZA|3h|mMTHnniVBeV+1gmpJUc^T;%!|zZ0%d{YqgOzf zqf_8n4$ni*5DNfvR52CaLepS;OXXo3@HTUkD=A~t)e;5Ss>DqBCZ~Ld29|Ix>5=tE z9I$)V%T{d>z6nNnGE@$RScbP({&v3GZQT?Ztn5iAmKP%hLw-GF$tlwSph!O?_=eYp z8b3WYiQ-3t$5D6c<3N26d+|KWTvK(>QLBKoJr?P5Mcy1xP^T$mg*x#7I#Gi)Dod*( za`n|dr$(y+Dv@p+NvE>bQVlC9<@b^4+|kYQsJ4WH6MLkc;X-7_ zCNQbVgCb&R9+gIqA#QIm760A!&82BIc%a^3wRm$gMJOJr>g#5ajUSH&8#&#SQ!lv~ zOd36XJZYMKns^N7+q0W5f=;x6n$n&W5j2{KZm+Td__|XDenRA4 zPh~Ra`2bS?K;%X)N$Bc)ekI>+%jfugT1*>H(N=3B*NJwg7750u*PEVe)Xr>ROol`){Poe@4xa%$AJ_e`rxzm2o0*6!oRE{#?QvV5gqZ$3YrNUxkEUd`W z1k{%~TB=5GWIQMEl}x+rBLn&(WnVZF37)z%T1i4a6i;9tmG=;Kf>G3N6Dr16)TgO@ zduSUlPrg2-UEj5eg`a=B!R>BgmRj<6`m9;+L7iTZ zd4Nh9awl%NG*-yfLlf2-QCAKcLWVGyT%ijc{`t%O!h=9La? zD_OtJ+5ww`ks=D~U`-Rx?l7}53yqUAl!egdNi~!LfXKD5d=@3CXXn@7aS8j(=m>1; zahvJ%q3Ac3UPl&cgQhMpJ@l7{vvXX6%*zJ#bOPj@6HF5|* zPR3m8NeP33IW?sY`)y^}@u;c7;rHYbdBQz2SOPw>x7C`;Qev^uruv5n zOd>^K%x19lXuzZeM`bfs&JDgB7u!9s-G!_|Frae>HA)%ts8mfWA0tkT*_7%Bvg^2t ziEj$BgwWb%>||_C>mtgJ9O~0G#5wPOc{Zw3wKl@&Mi_k zCQYN_3YN)T6lVO1VK@n#(cU#nS{tQy3mE{Ah6zJ;3L-rsbgmPQB+EeqVO7gSZZ0_Y zwG;;7bJ8It7ryTz@(_?2MKI^MJg2Dduq;kM8#5~KB8Ry?@q`o2y@b`p8OrsHnN zn&PMqL5*-~gAj<(Sr4#rv1WlwyAIZpE|uY_GFbIELk`|@n)*LDW@A{(-5G|2=%{2_ zOaE9HweCR5U+QL($Wmq7R(gYy3>Iu0@$%Ddr-RJ$S9|Tj<{WtF!CQVDrP~!!MgR?_abl zxfNBBDJp|M8RlYyCps$A@Hu}M-HT@!Ot0}E6sUbeWxZFUZRB6KDCj^~vR9~yEMUo+ zC<52GR2E3tL^lky>Hv`oiqwyryANt9;M6HDimIy7u#|ZJCe|G+*L5C`?Ml5nRtO!5 zX?-lcc5*`g^B)(8C7I;|Z2UL)Wp{_z^j{a3 zx2*qE1tRxR!Hk`6UFf;+VC^n97#iEWQ9#q`Oz*E*m6RCKL_VY#nGm*3s1);q*)DLXlyra%D08FI;{Gfu&@D8}faLUn#9Bwe zwA#>g1d7|nnz(}%5yZ2*Giancm^RlJ_x|1(0(gFbJ22y|31jUoV;XjCra2AvapQwa!q%-0}Zcl8+-B#!rW&MEsrV2FN_p7w9n3A zeSimK4C33@eGhm>$QCJC+EZWLf4RQ>q3$o;zS#%*78bwc!`4*6x^Q`*9Fd|VeNQG6 zp+kWCNvXFx3nCmG2ym46m6< hwYaqi8)0{M63Q79fsES`)+`d?Sx+YdC_=wE`9GMqN*e$G diff --git a/include/SimpleIni.h b/include/SimpleIni.h new file mode 100644 index 0000000..1f0c0ae --- /dev/null +++ b/include/SimpleIni.h @@ -0,0 +1,3630 @@ +/** @mainpage + + +
Library SimpleIni +
File SimpleIni.h +
Author Brodie Thiesfield +
Source https://github.com/brofield/simpleini +
Version 4.22 +
+ + Jump to the @link CSimpleIniTempl CSimpleIni @endlink interface documentation. + + @section intro INTRODUCTION + + This component allows an INI-style configuration file to be used on both + Windows and Linux/Unix. It is fast, simple and source code using this + component will compile unchanged on either OS. + + @section features FEATURES + + - MIT Licence allows free use in all software (including GPL and commercial) + - multi-platform (Windows CE/9x/NT..10/etc, Linux, MacOSX, Unix) + - loading and saving of INI-style configuration files + - configuration files can have any newline format on all platforms + - liberal acceptance of file format + - key/values with no section + - removal of whitespace around sections, keys and values + - support for multi-line values (values with embedded newline characters) + - optional support for multiple keys with the same name + - optional case-insensitive sections and keys (for ASCII characters only) + - saves files with sections and keys in the same order as they were loaded + - preserves comments on the file, section and keys where possible. + - supports both char or wchar_t programming interfaces + - supports both MBCS (system locale) and UTF-8 file encodings + - system locale does not need to be UTF-8 on Linux/Unix to load UTF-8 file + - support for non-ASCII characters in section, keys, values and comments + - support for non-standard character types or file encodings + via user-written converter classes + - support for adding/modifying values programmatically + - should compile cleanly without warning usually at the strictest warning level + - it has been tested with the following compilers: + - Windows/VC6 (warning level 3) + - Windows/VC.NET 2003 (warning level 4) + - Windows/VC 2005 (warning level 4) + - Windows/VC 2019 (warning level 4) + - Linux/gcc (-Wall) + - Mac OS/c++ (-Wall) + + @section usage USAGE SUMMARY + + -# Decide if you will be using utf8 or MBCS files, and working with the + data in utf8, wchar_t or ICU chars. + -# If you will only be using straight utf8 files and access the data via the + char interface, then you do not need any conversion library and could define + SI_NO_CONVERSION. Note that no conversion also means no validation of the data. + If no converter is specified then the default converter is SI_CONVERT_GENERIC + on Mac/Linux and SI_CONVERT_WIN32 on Windows. If you need widechar support on + Mac/Linux then use either SI_CONVERT_GENERIC or SI_CONVERT_ICU. These are also + supported on all platforms. + -# Define the appropriate symbol for the converter you wish to use and + include the SimpleIni.h header file. + -# Declare an instance of the appropriate class. Note that the following + definitions are just shortcuts for commonly used types. Other types + (PRUnichar, unsigned short, unsigned char) are also possible. + +
Interface Case-sensitive Load UTF-8 Load MBCS Typedef +
SI_NO_CONVERSION +
char No Yes No CSimpleIniA +
char Yes Yes No CSimpleIniCaseA +
SI_CONVERT_GENERIC +
char No Yes Yes #1 CSimpleIniA +
char Yes Yes Yes CSimpleIniCaseA +
wchar_t No Yes Yes CSimpleIniW +
wchar_t Yes Yes Yes CSimpleIniCaseW +
SI_CONVERT_WIN32 +
char No No #2 Yes CSimpleIniA +
char Yes Yes Yes CSimpleIniCaseA +
wchar_t No Yes Yes CSimpleIniW +
wchar_t Yes Yes Yes CSimpleIniCaseW +
SI_CONVERT_ICU +
char No Yes Yes CSimpleIniA +
char Yes Yes Yes CSimpleIniCaseA +
UChar No Yes Yes CSimpleIniW +
UChar Yes Yes Yes CSimpleIniCaseW +
+ #1 On Windows you are better to use CSimpleIniA with SI_CONVERT_WIN32.
+ #2 Only affects Windows. On Windows this uses MBCS functions and + so may fold case incorrectly leading to uncertain results. + -# Set all the options that you require, see all the Set*() options below. + The SetUnicode() option is very common and can be specified in the constructor. + -# Call LoadData() or LoadFile() to load and parse the INI configuration file + -# Access and modify the data of the file using the following functions + +
GetAllSections Return all section names +
GetAllKeys Return all key names within a section +
GetAllValues Return all values within a section & key +
GetSection Return all key names and values in a section +
GetSectionSize Return the number of keys in a section +
GetValue Return a value for a section & key +
SetValue Add or update a value for a section & key +
Delete Remove a section, or a key from a section +
SectionExists Does a section exist? +
KeyExists Does a key exist? +
+ -# Call Save() or SaveFile() to save the INI configuration data + + @section iostreams IO STREAMS + + SimpleIni supports reading from and writing to STL IO streams. Enable this + by defining SI_SUPPORT_IOSTREAMS before including the SimpleIni.h header + file. Ensure that if the streams are backed by a file (e.g. ifstream or + ofstream) then the flag ios_base::binary has been used when the file was + opened. + + @section multiline MULTI-LINE VALUES + + Values that span multiple lines are created using the following format. + +

+        key = <<
+
+    Note the following:
+    - The text used for ENDTAG can be anything and is used to find
+      where the multi-line text ends.
+    - The newline after ENDTAG in the start tag, and the newline
+      before ENDTAG in the end tag is not included in the data value.
+    - The ending tag must be on it's own line with no whitespace before
+      or after it.
+    - The multi-line value is modified at load so that each line in the value
+      is delimited by a single '\\n' character on all platforms. At save time
+      it will be converted into the newline format used by the current
+      platform.
+
+    @section comments COMMENTS
+
+    Comments are preserved in the file within the following restrictions:
+    - Every file may have a single "file comment". It must start with the
+      first character in the file, and will end with the first non-comment
+      line in the file.
+    - Every section may have a single "section comment". It will start
+      with the first comment line following the file comment, or the last
+      data entry. It ends at the beginning of the section.
+    - Every key may have a single "key comment". This comment will start
+      with the first comment line following the section start, or the file
+      comment if there is no section name.
+    - Comments are set at the time that the file, section or key is first
+      created. The only way to modify a comment on a section or a key is to
+      delete that entry and recreate it with the new comment. There is no
+      way to change the file comment.
+
+    @section save SAVE ORDER
+
+    The sections and keys are written out in the same order as they were
+    read in from the file. Sections and keys added to the data after the
+    file has been loaded will be added to the end of the file when it is
+    written. There is no way to specify the location of a section or key
+    other than in first-created, first-saved order.
+
+    @section notes NOTES
+
+    - To load UTF-8 data on Windows 95, you need to use Microsoft Layer for
+      Unicode, or SI_CONVERT_GENERIC, or SI_CONVERT_ICU.
+    - When using SI_CONVERT_GENERIC, ConvertUTF.c must be compiled and linked.
+    - When using SI_CONVERT_ICU, ICU header files must be on the include
+      path and icuuc.lib must be linked in.
+    - To load a UTF-8 file on Windows AND expose it with SI_CHAR == char,
+      you should use SI_CONVERT_GENERIC.
+    - The collation (sorting) order used for sections and keys returned from
+      iterators is NOT DEFINED. If collation order of the text is important
+      then it should be done yourself by either supplying a replacement
+      SI_STRLESS class, or by sorting the strings external to this library.
+    - Usage of the  header on Windows can be disabled by defining
+      SI_NO_MBCS. This is defined automatically on Windows CE platforms.
+    - Not thread-safe so manage your own locking
+
+    @section contrib CONTRIBUTIONS
+
+    Many thanks to the following contributors:
+    
+    - 2010/05/03: Tobias Gehrig: added GetDoubleValue()
+    - See list of many contributors in github
+
+    @section licence MIT LICENCE
+
+    The licence text below is the boilerplate "MIT Licence" used from:
+    http://www.opensource.org/licenses/mit-license.php
+
+    Copyright (c) 2006-2024, Brodie Thiesfield
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is furnished
+    to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+    FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+    COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+    IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+    CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#ifndef INCLUDED_SimpleIni_h
+#define INCLUDED_SimpleIni_h
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+// Disable these warnings in MSVC:
+//  4127 "conditional expression is constant" as the conversion classes trigger
+//  it with the statement if (sizeof(SI_CHAR) == sizeof(char)). This test will
+//  be optimized away in a release build.
+//  4503 'insert' : decorated name length exceeded, name was truncated
+//  4702 "unreachable code" as the MS STL header causes it in release mode.
+//  Again, the code causing the warning will be cleaned up by the compiler.
+//  4786 "identifier truncated to 256 characters" as this is thrown hundreds
+//  of times VC6 as soon as STL is used.
+#ifdef _MSC_VER
+# pragma warning (push)
+# pragma warning (disable: 4127 4503 4702 4786)
+#endif
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#ifdef SI_SUPPORT_IOSTREAMS
+# include 
+#endif // SI_SUPPORT_IOSTREAMS
+
+#ifdef _DEBUG
+# ifndef assert
+#  include 
+# endif
+# define SI_ASSERT(x)   assert(x)
+#else
+# define SI_ASSERT(x)
+#endif
+
+using SI_Error = int;
+
+constexpr int SI_OK = 0;        //!< No error
+constexpr int SI_UPDATED = 1;   //!< An existing value was updated
+constexpr int SI_INSERTED = 2;  //!< A new value was inserted
+
+// note: test for any error with (retval < 0)
+constexpr int SI_FAIL = -1;     //!< Generic failure
+constexpr int SI_NOMEM = -2;    //!< Out of memory error
+constexpr int SI_FILE = -3;     //!< File error (see errno for detail error)
+
+#define SI_UTF8_SIGNATURE     "\xEF\xBB\xBF"
+
+#ifdef _WIN32
+# define SI_NEWLINE_A   "\r\n"
+# define SI_NEWLINE_W   L"\r\n"
+#else // !_WIN32
+# define SI_NEWLINE_A   "\n"
+# define SI_NEWLINE_W   L"\n"
+#endif // _WIN32
+
+#if defined(SI_CONVERT_ICU)
+# include 
+#endif
+
+#if defined(_WIN32)
+# define SI_HAS_WIDE_FILE
+# define SI_WCHAR_T     wchar_t
+#elif defined(SI_CONVERT_ICU)
+# define SI_HAS_WIDE_FILE
+# define SI_WCHAR_T     UChar
+#endif
+
+
+// ---------------------------------------------------------------------------
+//                              MAIN TEMPLATE CLASS
+// ---------------------------------------------------------------------------
+
+/** Simple INI file reader.
+
+    This can be instantiated with the choice of unicode or native characterset,
+    and case sensitive or insensitive comparisons of section and key names.
+    The supported combinations are pre-defined with the following typedefs:
+
+    
+        
Interface Case-sensitive Typedef +
char No CSimpleIniA +
char Yes CSimpleIniCaseA +
wchar_t No CSimpleIniW +
wchar_t Yes CSimpleIniCaseW +
+ + Note that using other types for the SI_CHAR is supported. For instance, + unsigned char, unsigned short, etc. Note that where the alternative type + is a different size to char/wchar_t you may need to supply new helper + classes for SI_STRLESS and SI_CONVERTER. + */ +template +class CSimpleIniTempl +{ +public: + typedef SI_CHAR SI_CHAR_T; + + /** key entry */ + struct Entry { + const SI_CHAR * pItem; + const SI_CHAR * pComment; + int nOrder; + + Entry(const SI_CHAR * a_pszItem = NULL, int a_nOrder = 0) + : pItem(a_pszItem) + , pComment(NULL) + , nOrder(a_nOrder) + { } + Entry(const SI_CHAR * a_pszItem, const SI_CHAR * a_pszComment, int a_nOrder) + : pItem(a_pszItem) + , pComment(a_pszComment) + , nOrder(a_nOrder) + { } + Entry(const Entry & rhs) { operator=(rhs); } + Entry & operator=(const Entry & rhs) { + pItem = rhs.pItem; + pComment = rhs.pComment; + nOrder = rhs.nOrder; + return *this; + } + +#if defined(_MSC_VER) && _MSC_VER <= 1200 + /** STL of VC6 doesn't allow me to specify my own comparator for list::sort() */ + bool operator<(const Entry & rhs) const { return LoadOrder()(*this, rhs); } + bool operator>(const Entry & rhs) const { return LoadOrder()(rhs, *this); } +#endif + + /** Strict less ordering by name of key only */ + struct KeyOrder { + bool operator()(const Entry & lhs, const Entry & rhs) const { + const static SI_STRLESS isLess = SI_STRLESS(); + return isLess(lhs.pItem, rhs.pItem); + } + }; + + /** Strict less ordering by order, and then name of key */ + struct LoadOrder { + bool operator()(const Entry & lhs, const Entry & rhs) const { + if (lhs.nOrder != rhs.nOrder) { + return lhs.nOrder < rhs.nOrder; + } + return KeyOrder()(lhs.pItem, rhs.pItem); + } + }; + }; + + /** map keys to values */ + typedef std::multimap TKeyVal; + + /** map sections to key/value map */ + typedef std::map TSection; + + /** set of dependent string pointers. Note that these pointers are + dependent on memory owned by CSimpleIni. + */ + typedef std::list TNamesDepend; + + /** interface definition for the OutputWriter object to pass to Save() + in order to output the INI file data. + */ + class OutputWriter { + public: + OutputWriter() { } + virtual ~OutputWriter() { } + virtual void Write(const char * a_pBuf) = 0; + private: + OutputWriter(const OutputWriter &); // disable + OutputWriter & operator=(const OutputWriter &); // disable + }; + + /** OutputWriter class to write the INI data to a file */ + class FileWriter : public OutputWriter { + FILE * m_file; + public: + FileWriter(FILE * a_file) : m_file(a_file) { } + void Write(const char * a_pBuf) { + fputs(a_pBuf, m_file); + } + private: + FileWriter(const FileWriter &); // disable + FileWriter & operator=(const FileWriter &); // disable + }; + + /** OutputWriter class to write the INI data to a string */ + class StringWriter : public OutputWriter { + std::string & m_string; + public: + StringWriter(std::string & a_string) : m_string(a_string) { } + void Write(const char * a_pBuf) { + m_string.append(a_pBuf); + } + private: + StringWriter(const StringWriter &); // disable + StringWriter & operator=(const StringWriter &); // disable + }; + +#ifdef SI_SUPPORT_IOSTREAMS + /** OutputWriter class to write the INI data to an ostream */ + class StreamWriter : public OutputWriter { + std::ostream & m_ostream; + public: + StreamWriter(std::ostream & a_ostream) : m_ostream(a_ostream) { } + void Write(const char * a_pBuf) { + m_ostream << a_pBuf; + } + private: + StreamWriter(const StreamWriter &); // disable + StreamWriter & operator=(const StreamWriter &); // disable + }; +#endif // SI_SUPPORT_IOSTREAMS + + /** Characterset conversion utility class to convert strings to the + same format as is used for the storage. + */ + class Converter : private SI_CONVERTER { + public: + Converter(bool a_bStoreIsUtf8) : SI_CONVERTER(a_bStoreIsUtf8) { + m_scratch.resize(1024); + } + Converter(const Converter & rhs) { operator=(rhs); } + Converter & operator=(const Converter & rhs) { + m_scratch = rhs.m_scratch; + return *this; + } + bool ConvertToStore(const SI_CHAR * a_pszString) { + size_t uLen = SI_CONVERTER::SizeToStore(a_pszString); + if (uLen == (size_t)(-1)) { + return false; + } + while (uLen > m_scratch.size()) { + m_scratch.resize(m_scratch.size() * 2); + } + return SI_CONVERTER::ConvertToStore( + a_pszString, + const_cast(m_scratch.data()), + m_scratch.size()); + } + const char * Data() { return m_scratch.data(); } + private: + std::string m_scratch; + }; + +public: + /*-----------------------------------------------------------------------*/ + + /** Default constructor. + + @param a_bIsUtf8 See the method SetUnicode() for details. + @param a_bMultiKey See the method SetMultiKey() for details. + @param a_bMultiLine See the method SetMultiLine() for details. + */ + CSimpleIniTempl( + bool a_bIsUtf8 = false, + bool a_bMultiKey = false, + bool a_bMultiLine = false + ); + + /** Destructor */ + ~CSimpleIniTempl(); + + /** Deallocate all memory stored by this object */ + void Reset(); + + /** Has any data been loaded */ + bool IsEmpty() const { return m_data.empty(); } + + /*-----------------------------------------------------------------------*/ + /** @{ @name Settings */ + + /** Set the storage format of the INI data. This affects both the loading + and saving of the INI data using all of the Load/Save API functions. + This value cannot be changed after any INI data has been loaded. + + If the file is not set to Unicode (UTF-8), then the data encoding is + assumed to be the OS native encoding. This encoding is the system + locale on Linux/Unix and the legacy MBCS encoding on Windows NT/2K/XP. + If the storage format is set to Unicode then the file will be loaded + as UTF-8 encoded data regardless of the native file encoding. If + SI_CHAR == char then all of the char* parameters take and return UTF-8 + encoded data regardless of the system locale. + + \param a_bIsUtf8 Assume UTF-8 encoding for the source? + */ + void SetUnicode(bool a_bIsUtf8 = true) { + if (!m_pData) m_bStoreIsUtf8 = a_bIsUtf8; + } + + /** Get the storage format of the INI data. */ + bool IsUnicode() const { return m_bStoreIsUtf8; } + + /** Should multiple identical keys be permitted in the file. If set to false + then the last value encountered will be used as the value of the key. + If set to true, then all values will be available to be queried. For + example, with the following input: + +
+        [section]
+        test=value1
+        test=value2
+        
+ + Then with SetMultiKey(true), both of the values "value1" and "value2" + will be returned for the key test. If SetMultiKey(false) is used, then + the value for "test" will only be "value2". This value may be changed + at any time. + + \param a_bAllowMultiKey Allow multi-keys in the source? + */ + void SetMultiKey(bool a_bAllowMultiKey = true) { + m_bAllowMultiKey = a_bAllowMultiKey; + } + + /** Get the storage format of the INI data. */ + bool IsMultiKey() const { return m_bAllowMultiKey; } + + /** Should data values be permitted to span multiple lines in the file. If + set to false then the multi-line construct << + SI_CHAR FORMAT + char same format as when loaded (MBCS or UTF-8) + wchar_t UTF-8 + other UTF-8 + + + Note that comments from the original data is preserved as per the + documentation on comments. The order of the sections and values + from the original file will be preserved. + + Any data prepended or appended to the output device must use the the + same format (MBCS or UTF-8). You may use the GetConverter() method to + convert text to the correct format regardless of the output format + being used by SimpleIni. + + To add a BOM to UTF-8 data, write it out manually at the very beginning + like is done in SaveFile when a_bUseBOM is true. + + @param a_oOutput Output writer to write the data to. + + @param a_bAddSignature Prepend the UTF-8 BOM if the output data is in + UTF-8 format. If it is not UTF-8 then this value is + ignored. Do not set this to true if anything has + already been written to the OutputWriter. + + @return SI_Error See error definitions + */ + SI_Error Save( + OutputWriter & a_oOutput, + bool a_bAddSignature = false + ) const; + +#ifdef SI_SUPPORT_IOSTREAMS + /** Save the INI data to an ostream. See Save() for details. + + @param a_ostream String to have the INI data appended to. + + @param a_bAddSignature Prepend the UTF-8 BOM if the output data is in + UTF-8 format. If it is not UTF-8 then this value is + ignored. Do not set this to true if anything has + already been written to the stream. + + @return SI_Error See error definitions + */ + SI_Error Save( + std::ostream & a_ostream, + bool a_bAddSignature = false + ) const + { + StreamWriter writer(a_ostream); + return Save(writer, a_bAddSignature); + } +#endif // SI_SUPPORT_IOSTREAMS + + /** Append the INI data to a string. See Save() for details. + + @param a_sBuffer String to have the INI data appended to. + + @param a_bAddSignature Prepend the UTF-8 BOM if the output data is in + UTF-8 format. If it is not UTF-8 then this value is + ignored. Do not set this to true if anything has + already been written to the string. + + @return SI_Error See error definitions + */ + SI_Error Save( + std::string & a_sBuffer, + bool a_bAddSignature = false + ) const + { + StringWriter writer(a_sBuffer); + return Save(writer, a_bAddSignature); + } + + /*-----------------------------------------------------------------------*/ + /** @} + @{ @name Accessing INI Data */ + + /** Retrieve all section names. The list is returned as an STL vector of + names and can be iterated or searched as necessary. Note that the + sort order of the returned strings is NOT DEFINED. You can sort + the names into the load order if desired. Search this file for ".sort" + for an example. + + NOTE! This structure contains only pointers to strings. The actual + string data is stored in memory owned by CSimpleIni. Ensure that the + CSimpleIni object is not destroyed or Reset() while these pointers + are in use! + + @param a_names Vector that will receive all of the section + names. See note above! + */ + void GetAllSections( + TNamesDepend & a_names + ) const; + + /** Retrieve all unique key names in a section. The sort order of the + returned strings is NOT DEFINED. You can sort the names into the load + order if desired. Search this file for ".sort" for an example. Only + unique key names are returned. + + NOTE! This structure contains only pointers to strings. The actual + string data is stored in memory owned by CSimpleIni. Ensure that the + CSimpleIni object is not destroyed or Reset() while these strings + are in use! + + @param a_pSection Section to request data for + @param a_names List that will receive all of the key + names. See note above! + + @return true Section was found. + @return false Matching section was not found. + */ + bool GetAllKeys( + const SI_CHAR * a_pSection, + TNamesDepend & a_names + ) const; + + /** Retrieve all values for a specific key. This method can be used when + multiple keys are both enabled and disabled. Note that the sort order + of the returned strings is NOT DEFINED. You can sort the names into + the load order if desired. Search this file for ".sort" for an example. + + NOTE! The returned values are pointers to string data stored in memory + owned by CSimpleIni. Ensure that the CSimpleIni object is not destroyed + or Reset while you are using this pointer! + + @param a_pSection Section to search + @param a_pKey Key to search for + @param a_values List to return if the key is not found + + @return true Key was found. + @return false Matching section/key was not found. + */ + bool GetAllValues( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + TNamesDepend & a_values + ) const; + + /** Query the number of keys in a specific section. Note that if multiple + keys are enabled, then this value may be different to the number of + keys returned by GetAllKeys. + + @param a_pSection Section to request data for + + @return -1 Section does not exist in the file + @return >=0 Number of keys in the section + */ + int GetSectionSize( + const SI_CHAR * a_pSection + ) const; + + /** Retrieve all key and value pairs for a section. The data is returned + as a pointer to an STL map and can be iterated or searched as + desired. Note that multiple entries for the same key may exist when + multiple keys have been enabled. + + NOTE! This structure contains only pointers to strings. The actual + string data is stored in memory owned by CSimpleIni. Ensure that the + CSimpleIni object is not destroyed or Reset() while these strings + are in use! + + @param a_pSection Name of the section to return + @return Section data + */ + const TKeyVal * GetSection( + const SI_CHAR * a_pSection + ) const; + + /** Test if a section exists. Convenience function */ + inline bool SectionExists( + const SI_CHAR * a_pSection + ) const { + return GetSection(a_pSection) != NULL; + } + + /** Test if the key exists in a section. Convenience function. */ + inline bool KeyExists( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey + ) const { + return GetValue(a_pSection, a_pKey) != NULL; + } + + /** Retrieve the value for a specific key. If multiple keys are enabled + (see SetMultiKey) then only the first value associated with that key + will be returned, see GetAllValues for getting all values with multikey. + + NOTE! The returned value is a pointer to string data stored in memory + owned by CSimpleIni. Ensure that the CSimpleIni object is not destroyed + or Reset while you are using this pointer! + + @param a_pSection Section to search + @param a_pKey Key to search for + @param a_pDefault Value to return if the key is not found + @param a_pHasMultiple Optionally receive notification of if there are + multiple entries for this key. + + @return a_pDefault Key was not found in the section + @return other Value of the key + */ + const SI_CHAR * GetValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + const SI_CHAR * a_pDefault = NULL, + bool * a_pHasMultiple = NULL + ) const; + + /** Retrieve a numeric value for a specific key. If multiple keys are enabled + (see SetMultiKey) then only the first value associated with that key + will be returned, see GetAllValues for getting all values with multikey. + + @param a_pSection Section to search + @param a_pKey Key to search for + @param a_nDefault Value to return if the key is not found + @param a_pHasMultiple Optionally receive notification of if there are + multiple entries for this key. + + @return a_nDefault Key was not found in the section + @return other Value of the key + */ + long GetLongValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + long a_nDefault = 0, + bool * a_pHasMultiple = NULL + ) const; + + /** Retrieve a numeric value for a specific key. If multiple keys are enabled + (see SetMultiKey) then only the first value associated with that key + will be returned, see GetAllValues for getting all values with multikey. + + @param a_pSection Section to search + @param a_pKey Key to search for + @param a_nDefault Value to return if the key is not found + @param a_pHasMultiple Optionally receive notification of if there are + multiple entries for this key. + + @return a_nDefault Key was not found in the section + @return other Value of the key + */ + double GetDoubleValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + double a_nDefault = 0, + bool * a_pHasMultiple = NULL + ) const; + + /** Retrieve a boolean value for a specific key. If multiple keys are enabled + (see SetMultiKey) then only the first value associated with that key + will be returned, see GetAllValues for getting all values with multikey. + + Strings starting with "t", "y", "on" or "1" are returned as logically true. + Strings starting with "f", "n", "of" or "0" are returned as logically false. + For all other values the default is returned. Character comparisons are + case-insensitive. + + @param a_pSection Section to search + @param a_pKey Key to search for + @param a_bDefault Value to return if the key is not found + @param a_pHasMultiple Optionally receive notification of if there are + multiple entries for this key. + + @return a_nDefault Key was not found in the section + @return other Value of the key + */ + bool GetBoolValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + bool a_bDefault = false, + bool * a_pHasMultiple = NULL + ) const; + + /** Add or update a section or value. This will always insert + when multiple keys are enabled. + + @param a_pSection Section to add or update + @param a_pKey Key to add or update. Set to NULL to + create an empty section. + @param a_pValue Value to set. Set to NULL to create an + empty section. + @param a_pComment Comment to be associated with the section or the + key. If a_pKey is NULL then it will be associated + with the section, otherwise the key. Note that a + comment may be set ONLY when the section or key is + first created (i.e. when this function returns the + value SI_INSERTED). If you wish to create a section + with a comment then you need to create the section + separately to the key. The comment string must be + in full comment form already (have a comment + character starting every line). + @param a_bForceReplace Should all existing values in a multi-key INI + file be replaced with this entry. This option has + no effect if not using multi-key files. The + difference between Delete/SetValue and SetValue + with a_bForceReplace = true, is that the load + order and comment will be preserved this way. + + @return SI_Error See error definitions + @return SI_UPDATED Value was updated + @return SI_INSERTED Value was inserted + */ + SI_Error SetValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + const SI_CHAR * a_pValue, + const SI_CHAR * a_pComment = NULL, + bool a_bForceReplace = false + ) + { + return AddEntry(a_pSection, a_pKey, a_pValue, a_pComment, a_bForceReplace, true); + } + + /** Add or update a numeric value. This will always insert + when multiple keys are enabled. + + @param a_pSection Section to add or update + @param a_pKey Key to add or update. + @param a_nValue Value to set. + @param a_pComment Comment to be associated with the key. See the + notes on SetValue() for comments. + @param a_bUseHex By default the value will be written to the file + in decimal format. Set this to true to write it + as hexadecimal. + @param a_bForceReplace Should all existing values in a multi-key INI + file be replaced with this entry. This option has + no effect if not using multi-key files. The + difference between Delete/SetLongValue and + SetLongValue with a_bForceReplace = true, is that + the load order and comment will be preserved this + way. + + @return SI_Error See error definitions + @return SI_UPDATED Value was updated + @return SI_INSERTED Value was inserted + */ + SI_Error SetLongValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + long a_nValue, + const SI_CHAR * a_pComment = NULL, + bool a_bUseHex = false, + bool a_bForceReplace = false + ); + + /** Add or update a double value. This will always insert + when multiple keys are enabled. + + @param a_pSection Section to add or update + @param a_pKey Key to add or update. + @param a_nValue Value to set. + @param a_pComment Comment to be associated with the key. See the + notes on SetValue() for comments. + @param a_bForceReplace Should all existing values in a multi-key INI + file be replaced with this entry. This option has + no effect if not using multi-key files. The + difference between Delete/SetDoubleValue and + SetDoubleValue with a_bForceReplace = true, is that + the load order and comment will be preserved this + way. + + @return SI_Error See error definitions + @return SI_UPDATED Value was updated + @return SI_INSERTED Value was inserted + */ + SI_Error SetDoubleValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + double a_nValue, + const SI_CHAR * a_pComment = NULL, + bool a_bForceReplace = false + ); + + /** Add or update a boolean value. This will always insert + when multiple keys are enabled. + + @param a_pSection Section to add or update + @param a_pKey Key to add or update. + @param a_bValue Value to set. + @param a_pComment Comment to be associated with the key. See the + notes on SetValue() for comments. + @param a_bForceReplace Should all existing values in a multi-key INI + file be replaced with this entry. This option has + no effect if not using multi-key files. The + difference between Delete/SetBoolValue and + SetBoolValue with a_bForceReplace = true, is that + the load order and comment will be preserved this + way. + + @return SI_Error See error definitions + @return SI_UPDATED Value was updated + @return SI_INSERTED Value was inserted + */ + SI_Error SetBoolValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + bool a_bValue, + const SI_CHAR * a_pComment = NULL, + bool a_bForceReplace = false + ); + + /** Delete an entire section, or a key from a section. Note that the + data returned by GetSection is invalid and must not be used after + anything has been deleted from that section using this method. + Note when multiple keys is enabled, this will delete all keys with + that name; to selectively delete individual key/values, use + DeleteValue. + + @param a_pSection Section to delete key from, or if + a_pKey is NULL, the section to remove. + @param a_pKey Key to remove from the section. Set to + NULL to remove the entire section. + @param a_bRemoveEmpty If the section is empty after this key has + been deleted, should the empty section be + removed? + + @return true Key or section was deleted. + @return false Key or section was not found. + */ + bool Delete( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + bool a_bRemoveEmpty = false + ); + + /** Delete an entire section, or a key from a section. If value is + provided, only remove keys with the value. Note that the data + returned by GetSection is invalid and must not be used after + anything has been deleted from that section using this method. + Note when multiple keys is enabled, all keys with the value will + be deleted. + + @param a_pSection Section to delete key from, or if + a_pKey is NULL, the section to remove. + @param a_pKey Key to remove from the section. Set to + NULL to remove the entire section. + @param a_pValue Value of key to remove from the section. + Set to NULL to remove all keys. + @param a_bRemoveEmpty If the section is empty after this key has + been deleted, should the empty section be + removed? + + @return true Key/value or section was deleted. + @return false Key/value or section was not found. + */ + bool DeleteValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + const SI_CHAR * a_pValue, + bool a_bRemoveEmpty = false + ); + + /*-----------------------------------------------------------------------*/ + /** @} + @{ @name Converter */ + + /** Return a conversion object to convert text to the same encoding + as is used by the Save(), SaveFile() and SaveString() functions. + Use this to prepare the strings that you wish to append or prepend + to the output INI data. + */ + Converter GetConverter() const { + return Converter(m_bStoreIsUtf8); + } + + /*-----------------------------------------------------------------------*/ + /** @} */ + +private: + // copying is not permitted + CSimpleIniTempl(const CSimpleIniTempl &); // disabled + CSimpleIniTempl & operator=(const CSimpleIniTempl &); // disabled + + /** Parse the data looking for a file comment and store it if found. + */ + SI_Error FindFileComment( + SI_CHAR *& a_pData, + bool a_bCopyStrings + ); + + /** Parse the data looking for the next valid entry. The memory pointed to + by a_pData is modified by inserting NULL characters. The pointer is + updated to the current location in the block of text. + */ + bool FindEntry( + SI_CHAR *& a_pData, + const SI_CHAR *& a_pSection, + const SI_CHAR *& a_pKey, + const SI_CHAR *& a_pVal, + const SI_CHAR *& a_pComment + ) const; + + /** Add the section/key/value to our data. + + @param a_pSection Section name. Sections will be created if they + don't already exist. + @param a_pKey Key name. May be NULL to create an empty section. + Existing entries will be updated. New entries will + be created. + @param a_pValue Value for the key. + @param a_pComment Comment to be associated with the section or the + key. If a_pKey is NULL then it will be associated + with the section, otherwise the key. This must be + a string in full comment form already (have a + comment character starting every line). + @param a_bForceReplace Should all existing values in a multi-key INI + file be replaced with this entry. This option has + no effect if not using multi-key files. The + difference between Delete/AddEntry and AddEntry + with a_bForceReplace = true, is that the load + order and comment will be preserved this way. + @param a_bCopyStrings Should copies of the strings be made or not. + If false then the pointers will be used as is. + */ + SI_Error AddEntry( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + const SI_CHAR * a_pValue, + const SI_CHAR * a_pComment, + bool a_bForceReplace, + bool a_bCopyStrings + ); + + /** Is the supplied character a whitespace character? */ + inline bool IsSpace(SI_CHAR ch) const { + return (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n'); + } + + /** Does the supplied character start a comment line? */ + inline bool IsComment(SI_CHAR ch) const { + return (ch == ';' || ch == '#'); + } + + + /** Skip over a newline character (or characters) for either DOS or UNIX */ + inline void SkipNewLine(SI_CHAR *& a_pData) const { + a_pData += (*a_pData == '\r' && *(a_pData+1) == '\n') ? 2 : 1; + } + + /** Make a copy of the supplied string, replacing the original pointer */ + SI_Error CopyString(const SI_CHAR *& a_pString); + + /** Delete a string from the copied strings buffer if necessary */ + void DeleteString(const SI_CHAR * a_pString); + + /** Internal use of our string comparison function */ + bool IsLess(const SI_CHAR * a_pLeft, const SI_CHAR * a_pRight) const { + const static SI_STRLESS isLess = SI_STRLESS(); + return isLess(a_pLeft, a_pRight); + } + + bool IsMultiLineTag(const SI_CHAR * a_pData) const; + bool IsMultiLineData(const SI_CHAR * a_pData) const; + bool IsSingleLineQuotedValue(const SI_CHAR* a_pData) const; + bool LoadMultiLineText( + SI_CHAR *& a_pData, + const SI_CHAR *& a_pVal, + const SI_CHAR * a_pTagName, + bool a_bAllowBlankLinesInComment = false + ) const; + bool IsNewLineChar(SI_CHAR a_c) const; + + bool OutputMultiLineText( + OutputWriter & a_oOutput, + Converter & a_oConverter, + const SI_CHAR * a_pText + ) const; + +private: + /** Copy of the INI file data in our character format. This will be + modified when parsed to have NULL characters added after all + interesting string entries. All of the string pointers to sections, + keys and values point into this block of memory. + */ + SI_CHAR * m_pData; + + /** Length of the data that we have stored. Used when deleting strings + to determine if the string is stored here or in the allocated string + buffer. + */ + size_t m_uDataLen; + + /** File comment for this data, if one exists. */ + const SI_CHAR * m_pFileComment; + + /** constant empty string */ + const SI_CHAR m_cEmptyString; + + /** Parsed INI data. Section -> (Key -> Value). */ + TSection m_data; + + /** This vector stores allocated memory for copies of strings that have + been supplied after the file load. It will be empty unless SetValue() + has been called. + */ + TNamesDepend m_strings; + + /** Is the format of our datafile UTF-8 or MBCS? */ + bool m_bStoreIsUtf8; + + /** Are multiple values permitted for the same key? */ + bool m_bAllowMultiKey; + + /** Are data values permitted to span multiple lines? */ + bool m_bAllowMultiLine; + + /** Should spaces be written out surrounding the equals sign? */ + bool m_bSpaces; + + /** Should quoted data in values be recognized and parsed? */ + bool m_bParseQuotes; + + /** Do keys always need to have an equals sign when reading/writing? */ + bool m_bAllowKeyOnly; + + /** Next order value, used to ensure sections and keys are output in the + same order that they are loaded/added. + */ + int m_nOrder; +}; + +// --------------------------------------------------------------------------- +// IMPLEMENTATION +// --------------------------------------------------------------------------- + +template +CSimpleIniTempl::CSimpleIniTempl( + bool a_bIsUtf8, + bool a_bAllowMultiKey, + bool a_bAllowMultiLine + ) + : m_pData(0) + , m_uDataLen(0) + , m_pFileComment(NULL) + , m_cEmptyString(0) + , m_bStoreIsUtf8(a_bIsUtf8) + , m_bAllowMultiKey(a_bAllowMultiKey) + , m_bAllowMultiLine(a_bAllowMultiLine) + , m_bSpaces(true) + , m_bParseQuotes(false) + , m_bAllowKeyOnly(false) + , m_nOrder(0) +{ } + +template +CSimpleIniTempl::~CSimpleIniTempl() +{ + Reset(); +} + +template +void +CSimpleIniTempl::Reset() +{ + // remove all data + delete[] m_pData; + m_pData = NULL; + m_uDataLen = 0; + m_pFileComment = NULL; + if (!m_data.empty()) { + m_data.erase(m_data.begin(), m_data.end()); + } + + // remove all strings + if (!m_strings.empty()) { + typename TNamesDepend::iterator i = m_strings.begin(); + for (; i != m_strings.end(); ++i) { + delete[] const_cast(i->pItem); + } + m_strings.erase(m_strings.begin(), m_strings.end()); + } +} + +template +SI_Error +CSimpleIniTempl::LoadFile( + const char * a_pszFile + ) +{ + FILE * fp = NULL; +#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE + fopen_s(&fp, a_pszFile, "rb"); +#else // !__STDC_WANT_SECURE_LIB__ + fp = fopen(a_pszFile, "rb"); +#endif // __STDC_WANT_SECURE_LIB__ + if (!fp) { + return SI_FILE; + } + SI_Error rc = LoadFile(fp); + fclose(fp); + return rc; +} + +#ifdef SI_HAS_WIDE_FILE +template +SI_Error +CSimpleIniTempl::LoadFile( + const SI_WCHAR_T * a_pwszFile + ) +{ +#ifdef _WIN32 + FILE * fp = NULL; +#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE + _wfopen_s(&fp, a_pwszFile, L"rb"); +#else // !__STDC_WANT_SECURE_LIB__ + fp = _wfopen(a_pwszFile, L"rb"); +#endif // __STDC_WANT_SECURE_LIB__ + if (!fp) return SI_FILE; + SI_Error rc = LoadFile(fp); + fclose(fp); + return rc; +#else // !_WIN32 (therefore SI_CONVERT_ICU) + char szFile[256]; + u_austrncpy(szFile, a_pwszFile, sizeof(szFile)); + return LoadFile(szFile); +#endif // _WIN32 +} +#endif // SI_HAS_WIDE_FILE + +template +SI_Error +CSimpleIniTempl::LoadFile( + FILE * a_fpFile + ) +{ + // load the raw file data + int retval = fseek(a_fpFile, 0, SEEK_END); + if (retval != 0) { + return SI_FILE; + } + long lSize = ftell(a_fpFile); + if (lSize < 0) { + return SI_FILE; + } + if (lSize == 0) { + return SI_OK; + } + + // allocate and ensure NULL terminated + char * pData = new(std::nothrow) char[lSize+static_cast(1)]; + if (!pData) { + return SI_NOMEM; + } + pData[lSize] = 0; + + // load data into buffer + fseek(a_fpFile, 0, SEEK_SET); + size_t uRead = fread(pData, sizeof(char), lSize, a_fpFile); + if (uRead != (size_t) lSize) { + delete[] pData; + return SI_FILE; + } + + // convert the raw data to unicode + SI_Error rc = LoadData(pData, uRead); + delete[] pData; + return rc; +} + +template +SI_Error +CSimpleIniTempl::LoadData( + const char * a_pData, + size_t a_uDataLen + ) +{ + if (!a_pData) { + return SI_OK; + } + + // if the UTF-8 BOM exists, consume it and set mode to unicode, if we have + // already loaded data and try to change mode half-way through then this will + // be ignored and we will assert in debug versions + if (a_uDataLen >= 3 && memcmp(a_pData, SI_UTF8_SIGNATURE, 3) == 0) { + a_pData += 3; + a_uDataLen -= 3; + SI_ASSERT(m_bStoreIsUtf8 || !m_pData); // we don't expect mixed mode data + SetUnicode(); + } + + if (a_uDataLen == 0) { + return SI_OK; + } + + // determine the length of the converted data + SI_CONVERTER converter(m_bStoreIsUtf8); + size_t uLen = converter.SizeFromStore(a_pData, a_uDataLen); + if (uLen == (size_t)(-1)) { + return SI_FAIL; + } + + // allocate memory for the data, ensure that there is a NULL + // terminator wherever the converted data ends + SI_CHAR * pData = new(std::nothrow) SI_CHAR[uLen+1]; + if (!pData) { + return SI_NOMEM; + } + memset(pData, 0, sizeof(SI_CHAR)*(uLen+1)); + + // convert the data + if (!converter.ConvertFromStore(a_pData, a_uDataLen, pData, uLen)) { + delete[] pData; + return SI_FAIL; + } + + // parse it + const static SI_CHAR empty = 0; + SI_CHAR * pWork = pData; + const SI_CHAR * pSection = ∅ + const SI_CHAR * pItem = NULL; + const SI_CHAR * pVal = NULL; + const SI_CHAR * pComment = NULL; + + // We copy the strings if we are loading data into this class when we + // already have stored some. + bool bCopyStrings = (m_pData != NULL); + + // find a file comment if it exists, this is a comment that starts at the + // beginning of the file and continues until the first blank line. + SI_Error rc = FindFileComment(pWork, bCopyStrings); + if (rc < 0) return rc; + + // add every entry in the file to the data table + while (FindEntry(pWork, pSection, pItem, pVal, pComment)) { + rc = AddEntry(pSection, pItem, pVal, pComment, false, bCopyStrings); + if (rc < 0) return rc; + } + + // store these strings if we didn't copy them + if (bCopyStrings) { + delete[] pData; + } + else { + m_pData = pData; + m_uDataLen = uLen+1; + } + + return SI_OK; +} + +#ifdef SI_SUPPORT_IOSTREAMS +template +SI_Error +CSimpleIniTempl::LoadData( + std::istream & a_istream + ) +{ + std::string strData; + char szBuf[512]; + do { + a_istream.get(szBuf, sizeof(szBuf), '\0'); + strData.append(szBuf); + } + while (a_istream.good()); + return LoadData(strData); +} +#endif // SI_SUPPORT_IOSTREAMS + +template +SI_Error +CSimpleIniTempl::FindFileComment( + SI_CHAR *& a_pData, + bool a_bCopyStrings + ) +{ + // there can only be a single file comment + if (m_pFileComment) { + return SI_OK; + } + + // Load the file comment as multi-line text, this will modify all of + // the newline characters to be single \n chars + if (!LoadMultiLineText(a_pData, m_pFileComment, NULL, false)) { + return SI_OK; + } + + // copy the string if necessary + if (a_bCopyStrings) { + SI_Error rc = CopyString(m_pFileComment); + if (rc < 0) return rc; + } + + return SI_OK; +} + +template +bool +CSimpleIniTempl::FindEntry( + SI_CHAR *& a_pData, + const SI_CHAR *& a_pSection, + const SI_CHAR *& a_pKey, + const SI_CHAR *& a_pVal, + const SI_CHAR *& a_pComment + ) const +{ + a_pComment = NULL; + + bool bHaveValue = false; + SI_CHAR * pTrail = NULL; + while (*a_pData) { + // skip spaces and empty lines + while (*a_pData && IsSpace(*a_pData)) { + ++a_pData; + } + if (!*a_pData) { + break; + } + + // skip processing of comment lines but keep a pointer to + // the start of the comment. + if (IsComment(*a_pData)) { + LoadMultiLineText(a_pData, a_pComment, NULL, true); + continue; + } + + // process section names + if (*a_pData == '[') { + // skip leading spaces + ++a_pData; + while (*a_pData && IsSpace(*a_pData)) { + ++a_pData; + } + + // find the end of the section name (it may contain spaces) + // and convert it to lowercase as necessary + a_pSection = a_pData; + while (*a_pData && *a_pData != ']' && !IsNewLineChar(*a_pData)) { + ++a_pData; + } + + // if it's an invalid line, just skip it + if (*a_pData != ']') { + continue; + } + + // remove trailing spaces from the section + pTrail = a_pData - 1; + while (pTrail >= a_pSection && IsSpace(*pTrail)) { + --pTrail; + } + ++pTrail; + *pTrail = 0; + + // skip to the end of the line + ++a_pData; // safe as checked that it == ']' above + while (*a_pData && !IsNewLineChar(*a_pData)) { + ++a_pData; + } + + a_pKey = NULL; + a_pVal = NULL; + return true; + } + + // find the end of the key name (it may contain spaces) + a_pKey = a_pData; + while (*a_pData && *a_pData != '=' && !IsNewLineChar(*a_pData)) { + ++a_pData; + } + // *a_pData is null, equals, or newline + + // if no value and we don't allow no value, then invalid + bHaveValue = (*a_pData == '='); + if (!bHaveValue && !m_bAllowKeyOnly) { + continue; + } + + // empty keys are invalid + if (bHaveValue && a_pKey == a_pData) { + while (*a_pData && !IsNewLineChar(*a_pData)) { + ++a_pData; + } + continue; + } + + // remove trailing spaces from the key + pTrail = a_pData - 1; + while (pTrail >= a_pKey && IsSpace(*pTrail)) { + --pTrail; + } + ++pTrail; + + if (bHaveValue) { + // process the value + *pTrail = 0; + + // skip leading whitespace on the value + ++a_pData; // safe as checked that it == '=' above + while (*a_pData && !IsNewLineChar(*a_pData) && IsSpace(*a_pData)) { + ++a_pData; + } + + // find the end of the value which is the end of this line + a_pVal = a_pData; + while (*a_pData && !IsNewLineChar(*a_pData)) { + ++a_pData; + } + + // remove trailing spaces from the value + pTrail = a_pData - 1; + if (*a_pData) { // prepare for the next round + SkipNewLine(a_pData); + } + while (pTrail >= a_pVal && IsSpace(*pTrail)) { + --pTrail; + } + ++pTrail; + *pTrail = 0; + + // check for multi-line entries + if (m_bAllowMultiLine && IsMultiLineTag(a_pVal)) { + // skip the "<<<" to get the tag that will end the multiline + const SI_CHAR* pTagName = a_pVal + 3; + return LoadMultiLineText(a_pData, a_pVal, pTagName); + } + + // check for quoted values, we are not supporting escapes in quoted values (yet) + if (m_bParseQuotes) { + --pTrail; + if (pTrail > a_pVal && *a_pVal == '"' && *pTrail == '"') { + ++a_pVal; + *pTrail = 0; + } + } + } + else { + // no value to process, just prepare for the next + if (*a_pData) { + SkipNewLine(a_pData); + } + *pTrail = 0; + } + + // return the standard entry + return true; + } + + return false; +} + +template +bool +CSimpleIniTempl::IsMultiLineTag( + const SI_CHAR * a_pVal + ) const +{ + // check for the "<<<" prefix for a multi-line entry + if (*a_pVal++ != '<') return false; + if (*a_pVal++ != '<') return false; + if (*a_pVal++ != '<') return false; + return true; +} + +template +bool +CSimpleIniTempl::IsMultiLineData( + const SI_CHAR * a_pData + ) const +{ + // data is multi-line if it has any of the following features: + // * whitespace prefix + // * embedded newlines + // * whitespace suffix + + // empty string + if (!*a_pData) { + return false; + } + + // check for prefix + if (IsSpace(*a_pData)) { + return true; + } + + // embedded newlines + while (*a_pData) { + if (IsNewLineChar(*a_pData)) { + return true; + } + ++a_pData; + } + + // check for suffix + if (IsSpace(*--a_pData)) { + return true; + } + + return false; +} + +template +bool +CSimpleIniTempl::IsSingleLineQuotedValue( + const SI_CHAR* a_pData +) const +{ + // data needs quoting if it starts or ends with whitespace + // and doesn't have embedded newlines + + // empty string + if (!*a_pData) { + return false; + } + + // check for prefix + if (IsSpace(*a_pData)) { + return true; + } + + // embedded newlines + while (*a_pData) { + if (IsNewLineChar(*a_pData)) { + return false; + } + ++a_pData; + } + + // check for suffix + if (IsSpace(*--a_pData)) { + return true; + } + + return false; +} + +template +bool +CSimpleIniTempl::IsNewLineChar( + SI_CHAR a_c + ) const +{ + return (a_c == '\n' || a_c == '\r'); +} + +template +bool +CSimpleIniTempl::LoadMultiLineText( + SI_CHAR *& a_pData, + const SI_CHAR *& a_pVal, + const SI_CHAR * a_pTagName, + bool a_bAllowBlankLinesInComment + ) const +{ + // we modify this data to strip all newlines down to a single '\n' + // character. This means that on Windows we need to strip out some + // characters which will make the data shorter. + // i.e. LINE1-LINE1\r\nLINE2-LINE2\0 will become + // LINE1-LINE1\nLINE2-LINE2\0 + // The pDataLine entry is the pointer to the location in memory that + // the current line needs to start to run following the existing one. + // This may be the same as pCurrLine in which case no move is needed. + SI_CHAR * pDataLine = a_pData; + SI_CHAR * pCurrLine; + + // value starts at the current line + a_pVal = a_pData; + + // find the end tag. This tag must start in column 1 and be + // followed by a newline. We ignore any whitespace after the end + // tag but not whitespace before it. + SI_CHAR cEndOfLineChar = *a_pData; + for(;;) { + // if we are loading comments then we need a comment character as + // the first character on every line + if (!a_pTagName && !IsComment(*a_pData)) { + // if we aren't allowing blank lines then we're done + if (!a_bAllowBlankLinesInComment) { + break; + } + + // if we are allowing blank lines then we only include them + // in this comment if another comment follows, so read ahead + // to find out. + SI_CHAR * pCurr = a_pData; + int nNewLines = 0; + while (IsSpace(*pCurr)) { + if (IsNewLineChar(*pCurr)) { + ++nNewLines; + SkipNewLine(pCurr); + } + else { + ++pCurr; + } + } + + // we have a comment, add the blank lines to the output + // and continue processing from here + if (IsComment(*pCurr)) { + for (; nNewLines > 0; --nNewLines) *pDataLine++ = '\n'; + a_pData = pCurr; + continue; + } + + // the comment ends here + break; + } + + // find the end of this line + pCurrLine = a_pData; + while (*a_pData && !IsNewLineChar(*a_pData)) ++a_pData; + + // move this line down to the location that it should be if necessary + if (pDataLine < pCurrLine) { + size_t nLen = (size_t) (a_pData - pCurrLine); + memmove(pDataLine, pCurrLine, nLen * sizeof(SI_CHAR)); + pDataLine[nLen] = '\0'; + } + + // end the line with a NULL + cEndOfLineChar = *a_pData; + *a_pData = 0; + + // if are looking for a tag then do the check now. This is done before + // checking for end of the data, so that if we have the tag at the end + // of the data then the tag is removed correctly. + if (a_pTagName) { + // strip whitespace from the end of this tag + SI_CHAR* pc = a_pData - 1; + while (pc > pDataLine && IsSpace(*pc)) --pc; + SI_CHAR ch = *++pc; + *pc = 0; + + if (!IsLess(pDataLine, a_pTagName) && !IsLess(a_pTagName, pDataLine)) { + break; + } + + *pc = ch; + } + + // if we are at the end of the data then we just automatically end + // this entry and return the current data. + if (!cEndOfLineChar) { + return true; + } + + // otherwise we need to process this newline to ensure that it consists + // of just a single \n character. + pDataLine += (a_pData - pCurrLine); + *a_pData = cEndOfLineChar; + SkipNewLine(a_pData); + *pDataLine++ = '\n'; + } + + // if we didn't find a comment at all then return false + if (a_pVal == a_pData) { + a_pVal = NULL; + return false; + } + + // the data (which ends at the end of the last line) needs to be + // null-terminated BEFORE before the newline character(s). If the + // user wants a new line in the multi-line data then they need to + // add an empty line before the tag. + *--pDataLine = '\0'; + + // if looking for a tag and if we aren't at the end of the data, + // then move a_pData to the start of the next line. + if (a_pTagName && cEndOfLineChar) { + SI_ASSERT(IsNewLineChar(cEndOfLineChar)); + *a_pData = cEndOfLineChar; + SkipNewLine(a_pData); + } + + return true; +} + +template +SI_Error +CSimpleIniTempl::CopyString( + const SI_CHAR *& a_pString + ) +{ + size_t uLen = 0; + if (sizeof(SI_CHAR) == sizeof(char)) { + uLen = strlen((const char *)a_pString); + } + else if (sizeof(SI_CHAR) == sizeof(wchar_t)) { + uLen = wcslen((const wchar_t *)a_pString); + } + else { + for ( ; a_pString[uLen]; ++uLen) /*loop*/ ; + } + ++uLen; // NULL character + SI_CHAR * pCopy = new(std::nothrow) SI_CHAR[uLen]; + if (!pCopy) { + return SI_NOMEM; + } + memcpy(pCopy, a_pString, sizeof(SI_CHAR)*uLen); + m_strings.push_back(pCopy); + a_pString = pCopy; + return SI_OK; +} + +template +SI_Error +CSimpleIniTempl::AddEntry( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + const SI_CHAR * a_pValue, + const SI_CHAR * a_pComment, + bool a_bForceReplace, + bool a_bCopyStrings + ) +{ + SI_Error rc; + bool bInserted = false; + + SI_ASSERT(!a_pComment || IsComment(*a_pComment)); + + // if we are copying strings then make a copy of the comment now + // because we will need it when we add the entry. + if (a_bCopyStrings && a_pComment) { + rc = CopyString(a_pComment); + if (rc < 0) return rc; + } + + // create the section entry if necessary + typename TSection::iterator iSection = m_data.find(a_pSection); + if (iSection == m_data.end()) { + // if the section doesn't exist then we need a copy as the + // string needs to last beyond the end of this function + if (a_bCopyStrings) { + rc = CopyString(a_pSection); + if (rc < 0) return rc; + } + + // only set the comment if this is a section only entry + Entry oSection(a_pSection, ++m_nOrder); + if (a_pComment && !a_pKey) { + oSection.pComment = a_pComment; + } + + typename TSection::value_type oEntry(oSection, TKeyVal()); + typedef typename TSection::iterator SectionIterator; + std::pair i = m_data.insert(oEntry); + iSection = i.first; + bInserted = true; + } + if (!a_pKey) { + // section only entries are specified with pItem as NULL + return bInserted ? SI_INSERTED : SI_UPDATED; + } + + // check for existence of the key + TKeyVal & keyval = iSection->second; + typename TKeyVal::iterator iKey = keyval.find(a_pKey); + bInserted = iKey == keyval.end(); + + // remove all existing entries but save the load order and + // comment of the first entry + int nLoadOrder = ++m_nOrder; + if (iKey != keyval.end() && m_bAllowMultiKey && a_bForceReplace) { + const SI_CHAR * pComment = NULL; + while (iKey != keyval.end() && !IsLess(a_pKey, iKey->first.pItem)) { + if (iKey->first.nOrder < nLoadOrder) { + nLoadOrder = iKey->first.nOrder; + pComment = iKey->first.pComment; + } + ++iKey; + } + if (pComment) { + DeleteString(a_pComment); + a_pComment = pComment; + CopyString(a_pComment); + } + Delete(a_pSection, a_pKey); + iKey = keyval.end(); + } + + // values need to be a valid string, even if they are an empty string + if (!a_pValue) { + a_pValue = &m_cEmptyString; + } + + // make string copies if necessary + bool bForceCreateNewKey = m_bAllowMultiKey && !a_bForceReplace; + if (a_bCopyStrings) { + if (bForceCreateNewKey || iKey == keyval.end()) { + // if the key doesn't exist then we need a copy as the + // string needs to last beyond the end of this function + // because we will be inserting the key next + rc = CopyString(a_pKey); + if (rc < 0) return rc; + } + + // we always need a copy of the value + rc = CopyString(a_pValue); + if (rc < 0) return rc; + } + + // create the key entry + if (iKey == keyval.end() || bForceCreateNewKey) { + Entry oKey(a_pKey, nLoadOrder); + if (a_pComment) { + oKey.pComment = a_pComment; + } + typename TKeyVal::value_type oEntry(oKey, static_cast(NULL)); + iKey = keyval.insert(oEntry); + } + + iKey->second = a_pValue; + return bInserted ? SI_INSERTED : SI_UPDATED; +} + +template +const SI_CHAR * +CSimpleIniTempl::GetValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + const SI_CHAR * a_pDefault, + bool * a_pHasMultiple + ) const +{ + if (a_pHasMultiple) { + *a_pHasMultiple = false; + } + if (!a_pSection || !a_pKey) { + return a_pDefault; + } + typename TSection::const_iterator iSection = m_data.find(a_pSection); + if (iSection == m_data.end()) { + return a_pDefault; + } + typename TKeyVal::const_iterator iKeyVal = iSection->second.find(a_pKey); + if (iKeyVal == iSection->second.end()) { + return a_pDefault; + } + + // check for multiple entries with the same key + if (m_bAllowMultiKey && a_pHasMultiple) { + typename TKeyVal::const_iterator iTemp = iKeyVal; + if (++iTemp != iSection->second.end()) { + if (!IsLess(a_pKey, iTemp->first.pItem)) { + *a_pHasMultiple = true; + } + } + } + + return iKeyVal->second; +} + +template +long +CSimpleIniTempl::GetLongValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + long a_nDefault, + bool * a_pHasMultiple + ) const +{ + // return the default if we don't have a value + const SI_CHAR * pszValue = GetValue(a_pSection, a_pKey, NULL, a_pHasMultiple); + if (!pszValue || !*pszValue) return a_nDefault; + + // convert to UTF-8/MBCS which for a numeric value will be the same as ASCII + char szValue[64] = { 0 }; + SI_CONVERTER c(m_bStoreIsUtf8); + if (!c.ConvertToStore(pszValue, szValue, sizeof(szValue))) { + return a_nDefault; + } + + // handle the value as hex if prefaced with "0x" + long nValue = a_nDefault; + char * pszSuffix = szValue; + if (szValue[0] == '0' && (szValue[1] == 'x' || szValue[1] == 'X')) { + if (!szValue[2]) return a_nDefault; + nValue = strtol(&szValue[2], &pszSuffix, 16); + } + else { + nValue = strtol(szValue, &pszSuffix, 10); + } + + // any invalid strings will return the default value + if (*pszSuffix) { + return a_nDefault; + } + + return nValue; +} + +template +SI_Error +CSimpleIniTempl::SetLongValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + long a_nValue, + const SI_CHAR * a_pComment, + bool a_bUseHex, + bool a_bForceReplace + ) +{ + // use SetValue to create sections + if (!a_pSection || !a_pKey) return SI_FAIL; + + // convert to an ASCII string + char szInput[64]; +#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE + sprintf_s(szInput, a_bUseHex ? "0x%lx" : "%ld", a_nValue); +#else // !__STDC_WANT_SECURE_LIB__ + snprintf(szInput, sizeof(szInput), a_bUseHex ? "0x%lx" : "%ld", a_nValue); +#endif // __STDC_WANT_SECURE_LIB__ + + // convert to output text + SI_CHAR szOutput[64]; + SI_CONVERTER c(m_bStoreIsUtf8); + c.ConvertFromStore(szInput, strlen(szInput) + 1, + szOutput, sizeof(szOutput) / sizeof(SI_CHAR)); + + // actually add it + return AddEntry(a_pSection, a_pKey, szOutput, a_pComment, a_bForceReplace, true); +} + +template +double +CSimpleIniTempl::GetDoubleValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + double a_nDefault, + bool * a_pHasMultiple + ) const +{ + // return the default if we don't have a value + const SI_CHAR * pszValue = GetValue(a_pSection, a_pKey, NULL, a_pHasMultiple); + if (!pszValue || !*pszValue) return a_nDefault; + + // convert to UTF-8/MBCS which for a numeric value will be the same as ASCII + char szValue[64] = { 0 }; + SI_CONVERTER c(m_bStoreIsUtf8); + if (!c.ConvertToStore(pszValue, szValue, sizeof(szValue))) { + return a_nDefault; + } + + char * pszSuffix = NULL; + double nValue = strtod(szValue, &pszSuffix); + + // any invalid strings will return the default value + if (!pszSuffix || *pszSuffix) { + return a_nDefault; + } + + return nValue; +} + +template +SI_Error +CSimpleIniTempl::SetDoubleValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + double a_nValue, + const SI_CHAR * a_pComment, + bool a_bForceReplace + ) +{ + // use SetValue to create sections + if (!a_pSection || !a_pKey) return SI_FAIL; + + // convert to an ASCII string + char szInput[64]; +#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE + sprintf_s(szInput, "%f", a_nValue); +#else // !__STDC_WANT_SECURE_LIB__ + snprintf(szInput, sizeof(szInput), "%f", a_nValue); +#endif // __STDC_WANT_SECURE_LIB__ + + // convert to output text + SI_CHAR szOutput[64]; + SI_CONVERTER c(m_bStoreIsUtf8); + c.ConvertFromStore(szInput, strlen(szInput) + 1, + szOutput, sizeof(szOutput) / sizeof(SI_CHAR)); + + // actually add it + return AddEntry(a_pSection, a_pKey, szOutput, a_pComment, a_bForceReplace, true); +} + +template +bool +CSimpleIniTempl::GetBoolValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + bool a_bDefault, + bool * a_pHasMultiple + ) const +{ + // return the default if we don't have a value + const SI_CHAR * pszValue = GetValue(a_pSection, a_pKey, NULL, a_pHasMultiple); + if (!pszValue || !*pszValue) return a_bDefault; + + // we only look at the minimum number of characters + switch (pszValue[0]) { + case 't': case 'T': // true + case 'y': case 'Y': // yes + case '1': // 1 (one) + return true; + + case 'f': case 'F': // false + case 'n': case 'N': // no + case '0': // 0 (zero) + return false; + + case 'o': case 'O': + if (pszValue[1] == 'n' || pszValue[1] == 'N') return true; // on + if (pszValue[1] == 'f' || pszValue[1] == 'F') return false; // off + break; + } + + // no recognized value, return the default + return a_bDefault; +} + +template +SI_Error +CSimpleIniTempl::SetBoolValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + bool a_bValue, + const SI_CHAR * a_pComment, + bool a_bForceReplace + ) +{ + // use SetValue to create sections + if (!a_pSection || !a_pKey) return SI_FAIL; + + // convert to an ASCII string + const char * pszInput = a_bValue ? "true" : "false"; + + // convert to output text + SI_CHAR szOutput[64]; + SI_CONVERTER c(m_bStoreIsUtf8); + c.ConvertFromStore(pszInput, strlen(pszInput) + 1, + szOutput, sizeof(szOutput) / sizeof(SI_CHAR)); + + // actually add it + return AddEntry(a_pSection, a_pKey, szOutput, a_pComment, a_bForceReplace, true); +} + +template +bool +CSimpleIniTempl::GetAllValues( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + TNamesDepend & a_values + ) const +{ + a_values.clear(); + + if (!a_pSection || !a_pKey) { + return false; + } + typename TSection::const_iterator iSection = m_data.find(a_pSection); + if (iSection == m_data.end()) { + return false; + } + typename TKeyVal::const_iterator iKeyVal = iSection->second.find(a_pKey); + if (iKeyVal == iSection->second.end()) { + return false; + } + + // insert all values for this key + a_values.push_back(Entry(iKeyVal->second, iKeyVal->first.pComment, iKeyVal->first.nOrder)); + if (m_bAllowMultiKey) { + ++iKeyVal; + while (iKeyVal != iSection->second.end() && !IsLess(a_pKey, iKeyVal->first.pItem)) { + a_values.push_back(Entry(iKeyVal->second, iKeyVal->first.pComment, iKeyVal->first.nOrder)); + ++iKeyVal; + } + } + + return true; +} + +template +int +CSimpleIniTempl::GetSectionSize( + const SI_CHAR * a_pSection + ) const +{ + if (!a_pSection) { + return -1; + } + + typename TSection::const_iterator iSection = m_data.find(a_pSection); + if (iSection == m_data.end()) { + return -1; + } + const TKeyVal & section = iSection->second; + + // if multi-key isn't permitted then the section size is + // the number of keys that we have. + if (!m_bAllowMultiKey || section.empty()) { + return (int) section.size(); + } + + // otherwise we need to count them + int nCount = 0; + const SI_CHAR * pLastKey = NULL; + typename TKeyVal::const_iterator iKeyVal = section.begin(); + for (int n = 0; iKeyVal != section.end(); ++iKeyVal, ++n) { + if (!pLastKey || IsLess(pLastKey, iKeyVal->first.pItem)) { + ++nCount; + pLastKey = iKeyVal->first.pItem; + } + } + return nCount; +} + +template +const typename CSimpleIniTempl::TKeyVal * +CSimpleIniTempl::GetSection( + const SI_CHAR * a_pSection + ) const +{ + if (a_pSection) { + typename TSection::const_iterator i = m_data.find(a_pSection); + if (i != m_data.end()) { + return &(i->second); + } + } + return 0; +} + +template +void +CSimpleIniTempl::GetAllSections( + TNamesDepend & a_names + ) const +{ + a_names.clear(); + typename TSection::const_iterator i = m_data.begin(); + for (int n = 0; i != m_data.end(); ++i, ++n ) { + a_names.push_back(i->first); + } +} + +template +bool +CSimpleIniTempl::GetAllKeys( + const SI_CHAR * a_pSection, + TNamesDepend & a_names + ) const +{ + a_names.clear(); + + if (!a_pSection) { + return false; + } + + typename TSection::const_iterator iSection = m_data.find(a_pSection); + if (iSection == m_data.end()) { + return false; + } + + const TKeyVal & section = iSection->second; + const SI_CHAR * pLastKey = NULL; + typename TKeyVal::const_iterator iKeyVal = section.begin(); + for (int n = 0; iKeyVal != section.end(); ++iKeyVal, ++n ) { + if (!pLastKey || IsLess(pLastKey, iKeyVal->first.pItem)) { + a_names.push_back(iKeyVal->first); + pLastKey = iKeyVal->first.pItem; + } + } + + return true; +} + +template +SI_Error +CSimpleIniTempl::SaveFile( + const char * a_pszFile, + bool a_bAddSignature + ) const +{ + FILE * fp = NULL; +#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE + fopen_s(&fp, a_pszFile, "wb"); +#else // !__STDC_WANT_SECURE_LIB__ + fp = fopen(a_pszFile, "wb"); +#endif // __STDC_WANT_SECURE_LIB__ + if (!fp) return SI_FILE; + SI_Error rc = SaveFile(fp, a_bAddSignature); + fclose(fp); + return rc; +} + +#ifdef SI_HAS_WIDE_FILE +template +SI_Error +CSimpleIniTempl::SaveFile( + const SI_WCHAR_T * a_pwszFile, + bool a_bAddSignature + ) const +{ +#ifdef _WIN32 + FILE * fp = NULL; +#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE + _wfopen_s(&fp, a_pwszFile, L"wb"); +#else // !__STDC_WANT_SECURE_LIB__ + fp = _wfopen(a_pwszFile, L"wb"); +#endif // __STDC_WANT_SECURE_LIB__ + if (!fp) return SI_FILE; + SI_Error rc = SaveFile(fp, a_bAddSignature); + fclose(fp); + return rc; +#else // !_WIN32 (therefore SI_CONVERT_ICU) + char szFile[256]; + u_austrncpy(szFile, a_pwszFile, sizeof(szFile)); + return SaveFile(szFile, a_bAddSignature); +#endif // _WIN32 +} +#endif // SI_HAS_WIDE_FILE + +template +SI_Error +CSimpleIniTempl::SaveFile( + FILE * a_pFile, + bool a_bAddSignature + ) const +{ + FileWriter writer(a_pFile); + return Save(writer, a_bAddSignature); +} + +template +SI_Error +CSimpleIniTempl::Save( + OutputWriter & a_oOutput, + bool a_bAddSignature + ) const +{ + Converter convert(m_bStoreIsUtf8); + + // add the UTF-8 signature if it is desired + if (m_bStoreIsUtf8 && a_bAddSignature) { + a_oOutput.Write(SI_UTF8_SIGNATURE); + } + + // get all of the sections sorted in load order + TNamesDepend oSections; + GetAllSections(oSections); +#if defined(_MSC_VER) && _MSC_VER <= 1200 + oSections.sort(); +#elif defined(__BORLANDC__) + oSections.sort(Entry::LoadOrder()); +#else + oSections.sort(typename Entry::LoadOrder()); +#endif + + // if there is an empty section name, then it must be written out first + // regardless of the load order + typename TNamesDepend::iterator is = oSections.begin(); + for (; is != oSections.end(); ++is) { + if (!*is->pItem) { + // move the empty section name to the front of the section list + if (is != oSections.begin()) { + oSections.splice(oSections.begin(), oSections, is, std::next(is)); + } + break; + } + } + + // write the file comment if we have one + bool bNeedNewLine = false; + if (m_pFileComment) { + if (!OutputMultiLineText(a_oOutput, convert, m_pFileComment)) { + return SI_FAIL; + } + bNeedNewLine = true; + } + + // iterate through our sections and output the data + typename TNamesDepend::const_iterator iSection = oSections.begin(); + for ( ; iSection != oSections.end(); ++iSection ) { + // write out the comment if there is one + if (iSection->pComment) { + if (bNeedNewLine) { + a_oOutput.Write(SI_NEWLINE_A); + a_oOutput.Write(SI_NEWLINE_A); + } + if (!OutputMultiLineText(a_oOutput, convert, iSection->pComment)) { + return SI_FAIL; + } + bNeedNewLine = false; + } + + if (bNeedNewLine) { + a_oOutput.Write(SI_NEWLINE_A); + a_oOutput.Write(SI_NEWLINE_A); + bNeedNewLine = false; + } + + // write the section (unless there is no section name) + if (*iSection->pItem) { + if (!convert.ConvertToStore(iSection->pItem)) { + return SI_FAIL; + } + a_oOutput.Write("["); + a_oOutput.Write(convert.Data()); + a_oOutput.Write("]"); + a_oOutput.Write(SI_NEWLINE_A); + } + + // get all of the keys sorted in load order + TNamesDepend oKeys; + GetAllKeys(iSection->pItem, oKeys); +#if defined(_MSC_VER) && _MSC_VER <= 1200 + oKeys.sort(); +#elif defined(__BORLANDC__) + oKeys.sort(Entry::LoadOrder()); +#else + oKeys.sort(typename Entry::LoadOrder()); +#endif + + // write all keys and values + typename TNamesDepend::const_iterator iKey = oKeys.begin(); + for ( ; iKey != oKeys.end(); ++iKey) { + // get all values for this key + TNamesDepend oValues; + GetAllValues(iSection->pItem, iKey->pItem, oValues); + + typename TNamesDepend::const_iterator iValue = oValues.begin(); + for ( ; iValue != oValues.end(); ++iValue) { + // write out the comment if there is one + if (iValue->pComment) { + a_oOutput.Write(SI_NEWLINE_A); + if (!OutputMultiLineText(a_oOutput, convert, iValue->pComment)) { + return SI_FAIL; + } + } + + // write the key + if (!convert.ConvertToStore(iKey->pItem)) { + return SI_FAIL; + } + a_oOutput.Write(convert.Data()); + + // write the value as long + if (*iValue->pItem || !m_bAllowKeyOnly) { + if (!convert.ConvertToStore(iValue->pItem)) { + return SI_FAIL; + } + a_oOutput.Write(m_bSpaces ? " = " : "="); + if (m_bParseQuotes && IsSingleLineQuotedValue(iValue->pItem)) { + // the only way to preserve external whitespace on a value (i.e. before or after) + // is to quote it. This is simple quoting, we don't escape quotes within the data. + a_oOutput.Write("\""); + a_oOutput.Write(convert.Data()); + a_oOutput.Write("\""); + } + else if (m_bAllowMultiLine && IsMultiLineData(iValue->pItem)) { + // multi-line data needs to be processed specially to ensure + // that we use the correct newline format for the current system + a_oOutput.Write("<<pItem)) { + return SI_FAIL; + } + a_oOutput.Write("END_OF_TEXT"); + } + else { + a_oOutput.Write(convert.Data()); + } + } + a_oOutput.Write(SI_NEWLINE_A); + } + } + + bNeedNewLine = true; + } + + return SI_OK; +} + +template +bool +CSimpleIniTempl::OutputMultiLineText( + OutputWriter & a_oOutput, + Converter & a_oConverter, + const SI_CHAR * a_pText + ) const +{ + const SI_CHAR * pEndOfLine; + SI_CHAR cEndOfLineChar = *a_pText; + while (cEndOfLineChar) { + // find the end of this line + pEndOfLine = a_pText; + for (; *pEndOfLine && *pEndOfLine != '\n'; ++pEndOfLine) /*loop*/ ; + cEndOfLineChar = *pEndOfLine; + + // temporarily null terminate, convert and output the line + *const_cast(pEndOfLine) = 0; + if (!a_oConverter.ConvertToStore(a_pText)) { + return false; + } + *const_cast(pEndOfLine) = cEndOfLineChar; + a_pText += (pEndOfLine - a_pText) + 1; + a_oOutput.Write(a_oConverter.Data()); + a_oOutput.Write(SI_NEWLINE_A); + } + return true; +} + +template +bool +CSimpleIniTempl::Delete( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + bool a_bRemoveEmpty + ) +{ + return DeleteValue(a_pSection, a_pKey, NULL, a_bRemoveEmpty); +} + +template +bool +CSimpleIniTempl::DeleteValue( + const SI_CHAR * a_pSection, + const SI_CHAR * a_pKey, + const SI_CHAR * a_pValue, + bool a_bRemoveEmpty + ) +{ + if (!a_pSection) { + return false; + } + + typename TSection::iterator iSection = m_data.find(a_pSection); + if (iSection == m_data.end()) { + return false; + } + + // remove a single key if we have a keyname + if (a_pKey) { + typename TKeyVal::iterator iKeyVal = iSection->second.find(a_pKey); + if (iKeyVal == iSection->second.end()) { + return false; + } + + const static SI_STRLESS isLess = SI_STRLESS(); + + // remove any copied strings and then the key + typename TKeyVal::iterator iDelete; + bool bDeleted = false; + do { + iDelete = iKeyVal++; + + if(a_pValue == NULL || + (isLess(a_pValue, iDelete->second) == false && + isLess(iDelete->second, a_pValue) == false)) { + DeleteString(iDelete->first.pItem); + DeleteString(iDelete->second); + iSection->second.erase(iDelete); + bDeleted = true; + } + } + while (iKeyVal != iSection->second.end() + && !IsLess(a_pKey, iKeyVal->first.pItem)); + + if(!bDeleted) { + return false; + } + + // done now if the section is not empty or we are not pruning away + // the empty sections. Otherwise let it fall through into the section + // deletion code + if (!a_bRemoveEmpty || !iSection->second.empty()) { + return true; + } + } + else { + // delete all copied strings from this section. The actual + // entries will be removed when the section is removed. + typename TKeyVal::iterator iKeyVal = iSection->second.begin(); + for ( ; iKeyVal != iSection->second.end(); ++iKeyVal) { + DeleteString(iKeyVal->first.pItem); + DeleteString(iKeyVal->second); + } + } + + // delete the section itself + DeleteString(iSection->first.pItem); + m_data.erase(iSection); + + return true; +} + +template +void +CSimpleIniTempl::DeleteString( + const SI_CHAR * a_pString + ) +{ + // strings may exist either inside the data block, or they will be + // individually allocated and stored in m_strings. We only physically + // delete those stored in m_strings. + if (a_pString < m_pData || a_pString >= m_pData + m_uDataLen) { + typename TNamesDepend::iterator i = m_strings.begin(); + for (;i != m_strings.end(); ++i) { + if (a_pString == i->pItem) { + delete[] const_cast(i->pItem); + m_strings.erase(i); + break; + } + } + } +} + +// --------------------------------------------------------------------------- +// CONVERSION FUNCTIONS +// --------------------------------------------------------------------------- + +// Defines the conversion classes for different libraries. Before including +// SimpleIni.h, set the converter that you wish you use by defining one of the +// following symbols. +// +// SI_NO_CONVERSION Do not make the "W" wide character version of the +// library available. Only CSimpleIniA etc is defined. +// SI_CONVERT_GENERIC Use the Unicode reference conversion library in +// the accompanying files ConvertUTF.h/c +// SI_CONVERT_ICU Use the IBM ICU conversion library. Requires +// ICU headers on include path and icuuc.lib +// SI_CONVERT_WIN32 Use the Win32 API functions for conversion. + +#if !defined(SI_NO_CONVERSION) && !defined(SI_CONVERT_GENERIC) && !defined(SI_CONVERT_WIN32) && !defined(SI_CONVERT_ICU) +# ifdef _WIN32 +# define SI_CONVERT_WIN32 +# else +# define SI_CONVERT_GENERIC +# endif +#endif + +/** + * Generic case-sensitive less than comparison. This class returns numerically + * ordered ASCII case-sensitive text for all possible sizes and types of + * SI_CHAR. + */ +template +struct SI_GenericCase { + bool operator()(const SI_CHAR * pLeft, const SI_CHAR * pRight) const { + long cmp; + for ( ;*pLeft && *pRight; ++pLeft, ++pRight) { + cmp = (long) *pLeft - (long) *pRight; + if (cmp != 0) { + return cmp < 0; + } + } + return *pRight != 0; + } +}; + +/** + * Generic ASCII case-insensitive less than comparison. This class returns + * numerically ordered ASCII case-insensitive text for all possible sizes + * and types of SI_CHAR. It is not safe for MBCS text comparison where + * ASCII A-Z characters are used in the encoding of multi-byte characters. + */ +template +struct SI_GenericNoCase { + inline SI_CHAR locase(SI_CHAR ch) const { + return (ch < 'A' || ch > 'Z') ? ch : (ch - 'A' + 'a'); + } + bool operator()(const SI_CHAR * pLeft, const SI_CHAR * pRight) const { + long cmp; + for ( ;*pLeft && *pRight; ++pLeft, ++pRight) { + cmp = (long) locase(*pLeft) - (long) locase(*pRight); + if (cmp != 0) { + return cmp < 0; + } + } + return *pRight != 0; + } +}; + +/** + * Null conversion class for MBCS/UTF-8 to char (or equivalent). + */ +template +class SI_ConvertA { + bool m_bStoreIsUtf8; +protected: + SI_ConvertA() { } +public: + SI_ConvertA(bool a_bStoreIsUtf8) : m_bStoreIsUtf8(a_bStoreIsUtf8) { } + + /* copy and assignment */ + SI_ConvertA(const SI_ConvertA & rhs) { operator=(rhs); } + SI_ConvertA & operator=(const SI_ConvertA & rhs) { + m_bStoreIsUtf8 = rhs.m_bStoreIsUtf8; + return *this; + } + + /** Calculate the number of SI_CHAR required for converting the input + * from the storage format. The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData Data in storage format to be converted to SI_CHAR. + * @param a_uInputDataLen Length of storage format data in bytes. This + * must be the actual length of the data, including + * NULL byte if NULL terminated string is required. + * @return Number of SI_CHAR required by the string when + * converted. If there are embedded NULL bytes in the + * input data, only the string up and not including + * the NULL byte will be converted. + * @return -1 cast to size_t on a conversion error. + */ + size_t SizeFromStore( + const char * a_pInputData, + size_t a_uInputDataLen) + { + (void)a_pInputData; + SI_ASSERT(a_uInputDataLen != (size_t) -1); + + // ASCII/MBCS/UTF-8 needs no conversion + return a_uInputDataLen; + } + + /** Convert the input string from the storage format to SI_CHAR. + * The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData Data in storage format to be converted to SI_CHAR. + * @param a_uInputDataLen Length of storage format data in bytes. This + * must be the actual length of the data, including + * NULL byte if NULL terminated string is required. + * @param a_pOutputData Pointer to the output buffer to received the + * converted data. + * @param a_uOutputDataSize Size of the output buffer in SI_CHAR. + * @return true if all of the input data was successfully + * converted. + */ + bool ConvertFromStore( + const char * a_pInputData, + size_t a_uInputDataLen, + SI_CHAR * a_pOutputData, + size_t a_uOutputDataSize) + { + // ASCII/MBCS/UTF-8 needs no conversion + if (a_uInputDataLen > a_uOutputDataSize) { + return false; + } + memcpy(a_pOutputData, a_pInputData, a_uInputDataLen); + return true; + } + + /** Calculate the number of char required by the storage format of this + * data. The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData NULL terminated string to calculate the number of + * bytes required to be converted to storage format. + * @return Number of bytes required by the string when + * converted to storage format. This size always + * includes space for the terminating NULL character. + * @return -1 cast to size_t on a conversion error. + */ + size_t SizeToStore( + const SI_CHAR * a_pInputData) + { + // ASCII/MBCS/UTF-8 needs no conversion + return strlen((const char *)a_pInputData) + 1; + } + + /** Convert the input string to the storage format of this data. + * The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData NULL terminated source string to convert. All of + * the data will be converted including the + * terminating NULL character. + * @param a_pOutputData Pointer to the buffer to receive the converted + * string. + * @param a_uOutputDataSize Size of the output buffer in char. + * @return true if all of the input data, including the + * terminating NULL character was successfully + * converted. + */ + bool ConvertToStore( + const SI_CHAR * a_pInputData, + char * a_pOutputData, + size_t a_uOutputDataSize) + { + // calc input string length (SI_CHAR type and size independent) + size_t uInputLen = strlen((const char *)a_pInputData) + 1; + if (uInputLen > a_uOutputDataSize) { + return false; + } + + // ascii/UTF-8 needs no conversion + memcpy(a_pOutputData, a_pInputData, uInputLen); + return true; + } +}; + + +// --------------------------------------------------------------------------- +// SI_CONVERT_GENERIC +// --------------------------------------------------------------------------- +#ifdef SI_CONVERT_GENERIC + +#define SI_Case SI_GenericCase +#define SI_NoCase SI_GenericNoCase + +#include +#include "ConvertUTF.h" + +/** + * Converts UTF-8 to a wchar_t (or equivalent) using the Unicode reference + * library functions. This can be used on all platforms. + */ +template +class SI_ConvertW { + bool m_bStoreIsUtf8; +protected: + SI_ConvertW() { } +public: + SI_ConvertW(bool a_bStoreIsUtf8) : m_bStoreIsUtf8(a_bStoreIsUtf8) { } + + /* copy and assignment */ + SI_ConvertW(const SI_ConvertW & rhs) { operator=(rhs); } + SI_ConvertW & operator=(const SI_ConvertW & rhs) { + m_bStoreIsUtf8 = rhs.m_bStoreIsUtf8; + return *this; + } + + /** Calculate the number of SI_CHAR required for converting the input + * from the storage format. The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData Data in storage format to be converted to SI_CHAR. + * @param a_uInputDataLen Length of storage format data in bytes. This + * must be the actual length of the data, including + * NULL byte if NULL terminated string is required. + * @return Number of SI_CHAR required by the string when + * converted. If there are embedded NULL bytes in the + * input data, only the string up and not including + * the NULL byte will be converted. + * @return -1 cast to size_t on a conversion error. + */ + size_t SizeFromStore( + const char * a_pInputData, + size_t a_uInputDataLen) + { + SI_ASSERT(a_uInputDataLen != (size_t) -1); + + if (m_bStoreIsUtf8) { + // worst case scenario for UTF-8 to wchar_t is 1 char -> 1 wchar_t + // so we just return the same number of characters required as for + // the source text. + return a_uInputDataLen; + } + +#if defined(SI_NO_MBSTOWCS_NULL) || (!defined(_MSC_VER) && !defined(_linux)) + // fall back processing for platforms that don't support a NULL dest to mbstowcs + // worst case scenario is 1:1, this will be a sufficient buffer size + (void)a_pInputData; + return a_uInputDataLen; +#else + // get the actual required buffer size + return mbstowcs(NULL, a_pInputData, a_uInputDataLen); +#endif + } + + /** Convert the input string from the storage format to SI_CHAR. + * The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData Data in storage format to be converted to SI_CHAR. + * @param a_uInputDataLen Length of storage format data in bytes. This + * must be the actual length of the data, including + * NULL byte if NULL terminated string is required. + * @param a_pOutputData Pointer to the output buffer to received the + * converted data. + * @param a_uOutputDataSize Size of the output buffer in SI_CHAR. + * @return true if all of the input data was successfully + * converted. + */ + bool ConvertFromStore( + const char * a_pInputData, + size_t a_uInputDataLen, + SI_CHAR * a_pOutputData, + size_t a_uOutputDataSize) + { + if (m_bStoreIsUtf8) { + // This uses the Unicode reference implementation to do the + // conversion from UTF-8 to wchar_t. The required files are + // ConvertUTF.h and ConvertUTF.c which should be included in + // the distribution but are publicly available from unicode.org + // at http://www.unicode.org/Public/PROGRAMS/CVTUTF/ + ConversionResult retval; + const UTF8 * pUtf8 = (const UTF8 *) a_pInputData; + if (sizeof(wchar_t) == sizeof(UTF32)) { + UTF32 * pUtf32 = (UTF32 *) a_pOutputData; + retval = ConvertUTF8toUTF32( + &pUtf8, pUtf8 + a_uInputDataLen, + &pUtf32, pUtf32 + a_uOutputDataSize, + lenientConversion); + } + else if (sizeof(wchar_t) == sizeof(UTF16)) { + UTF16 * pUtf16 = (UTF16 *) a_pOutputData; + retval = ConvertUTF8toUTF16( + &pUtf8, pUtf8 + a_uInputDataLen, + &pUtf16, pUtf16 + a_uOutputDataSize, + lenientConversion); + } + return retval == conversionOK; + } + + // convert to wchar_t + size_t retval = mbstowcs(a_pOutputData, + a_pInputData, a_uOutputDataSize); + return retval != (size_t)(-1); + } + + /** Calculate the number of char required by the storage format of this + * data. The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData NULL terminated string to calculate the number of + * bytes required to be converted to storage format. + * @return Number of bytes required by the string when + * converted to storage format. This size always + * includes space for the terminating NULL character. + * @return -1 cast to size_t on a conversion error. + */ + size_t SizeToStore( + const SI_CHAR * a_pInputData) + { + if (m_bStoreIsUtf8) { + // worst case scenario for wchar_t to UTF-8 is 1 wchar_t -> 6 char + size_t uLen = 0; + while (a_pInputData[uLen]) { + ++uLen; + } + return (6 * uLen) + 1; + } + else { + size_t uLen = wcstombs(NULL, a_pInputData, 0); + if (uLen == (size_t)(-1)) { + return uLen; + } + return uLen + 1; // include NULL terminator + } + } + + /** Convert the input string to the storage format of this data. + * The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData NULL terminated source string to convert. All of + * the data will be converted including the + * terminating NULL character. + * @param a_pOutputData Pointer to the buffer to receive the converted + * string. + * @param a_uOutputDataSize Size of the output buffer in char. + * @return true if all of the input data, including the + * terminating NULL character was successfully + * converted. + */ + bool ConvertToStore( + const SI_CHAR * a_pInputData, + char * a_pOutputData, + size_t a_uOutputDataSize + ) + { + if (m_bStoreIsUtf8) { + // calc input string length (SI_CHAR type and size independent) + size_t uInputLen = 0; + while (a_pInputData[uInputLen]) { + ++uInputLen; + } + ++uInputLen; // include the NULL char + + // This uses the Unicode reference implementation to do the + // conversion from wchar_t to UTF-8. The required files are + // ConvertUTF.h and ConvertUTF.c which should be included in + // the distribution but are publicly available from unicode.org + // at http://www.unicode.org/Public/PROGRAMS/CVTUTF/ + ConversionResult retval; + UTF8 * pUtf8 = (UTF8 *) a_pOutputData; + if (sizeof(wchar_t) == sizeof(UTF32)) { + const UTF32 * pUtf32 = (const UTF32 *) a_pInputData; + retval = ConvertUTF32toUTF8( + &pUtf32, pUtf32 + uInputLen, + &pUtf8, pUtf8 + a_uOutputDataSize, + lenientConversion); + } + else if (sizeof(wchar_t) == sizeof(UTF16)) { + const UTF16 * pUtf16 = (const UTF16 *) a_pInputData; + retval = ConvertUTF16toUTF8( + &pUtf16, pUtf16 + uInputLen, + &pUtf8, pUtf8 + a_uOutputDataSize, + lenientConversion); + } + return retval == conversionOK; + } + else { + size_t retval = wcstombs(a_pOutputData, + a_pInputData, a_uOutputDataSize); + return retval != (size_t) -1; + } + } +}; + +#endif // SI_CONVERT_GENERIC + + +// --------------------------------------------------------------------------- +// SI_CONVERT_ICU +// --------------------------------------------------------------------------- +#ifdef SI_CONVERT_ICU + +#define SI_Case SI_GenericCase +#define SI_NoCase SI_GenericNoCase + +#include + +/** + * Converts MBCS/UTF-8 to UChar using ICU. This can be used on all platforms. + */ +template +class SI_ConvertW { + const char * m_pEncoding; + UConverter * m_pConverter; +protected: + SI_ConvertW() : m_pEncoding(NULL), m_pConverter(NULL) { } +public: + SI_ConvertW(bool a_bStoreIsUtf8) : m_pConverter(NULL) { + m_pEncoding = a_bStoreIsUtf8 ? "UTF-8" : NULL; + } + + /* copy and assignment */ + SI_ConvertW(const SI_ConvertW & rhs) { operator=(rhs); } + SI_ConvertW & operator=(const SI_ConvertW & rhs) { + m_pEncoding = rhs.m_pEncoding; + m_pConverter = NULL; + return *this; + } + ~SI_ConvertW() { if (m_pConverter) ucnv_close(m_pConverter); } + + /** Calculate the number of UChar required for converting the input + * from the storage format. The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData Data in storage format to be converted to UChar. + * @param a_uInputDataLen Length of storage format data in bytes. This + * must be the actual length of the data, including + * NULL byte if NULL terminated string is required. + * @return Number of UChar required by the string when + * converted. If there are embedded NULL bytes in the + * input data, only the string up and not including + * the NULL byte will be converted. + * @return -1 cast to size_t on a conversion error. + */ + size_t SizeFromStore( + const char * a_pInputData, + size_t a_uInputDataLen) + { + SI_ASSERT(a_uInputDataLen != (size_t) -1); + + UErrorCode nError; + + if (!m_pConverter) { + nError = U_ZERO_ERROR; + m_pConverter = ucnv_open(m_pEncoding, &nError); + if (U_FAILURE(nError)) { + return (size_t) -1; + } + } + + nError = U_ZERO_ERROR; + int32_t nLen = ucnv_toUChars(m_pConverter, NULL, 0, + a_pInputData, (int32_t) a_uInputDataLen, &nError); + if (U_FAILURE(nError) && nError != U_BUFFER_OVERFLOW_ERROR) { + return (size_t) -1; + } + + return (size_t) nLen; + } + + /** Convert the input string from the storage format to UChar. + * The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData Data in storage format to be converted to UChar. + * @param a_uInputDataLen Length of storage format data in bytes. This + * must be the actual length of the data, including + * NULL byte if NULL terminated string is required. + * @param a_pOutputData Pointer to the output buffer to received the + * converted data. + * @param a_uOutputDataSize Size of the output buffer in UChar. + * @return true if all of the input data was successfully + * converted. + */ + bool ConvertFromStore( + const char * a_pInputData, + size_t a_uInputDataLen, + UChar * a_pOutputData, + size_t a_uOutputDataSize) + { + UErrorCode nError; + + if (!m_pConverter) { + nError = U_ZERO_ERROR; + m_pConverter = ucnv_open(m_pEncoding, &nError); + if (U_FAILURE(nError)) { + return false; + } + } + + nError = U_ZERO_ERROR; + ucnv_toUChars(m_pConverter, + a_pOutputData, (int32_t) a_uOutputDataSize, + a_pInputData, (int32_t) a_uInputDataLen, &nError); + if (U_FAILURE(nError)) { + return false; + } + + return true; + } + + /** Calculate the number of char required by the storage format of this + * data. The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData NULL terminated string to calculate the number of + * bytes required to be converted to storage format. + * @return Number of bytes required by the string when + * converted to storage format. This size always + * includes space for the terminating NULL character. + * @return -1 cast to size_t on a conversion error. + */ + size_t SizeToStore( + const UChar * a_pInputData) + { + UErrorCode nError; + + if (!m_pConverter) { + nError = U_ZERO_ERROR; + m_pConverter = ucnv_open(m_pEncoding, &nError); + if (U_FAILURE(nError)) { + return (size_t) -1; + } + } + + nError = U_ZERO_ERROR; + int32_t nLen = ucnv_fromUChars(m_pConverter, NULL, 0, + a_pInputData, -1, &nError); + if (U_FAILURE(nError) && nError != U_BUFFER_OVERFLOW_ERROR) { + return (size_t) -1; + } + + return (size_t) nLen + 1; + } + + /** Convert the input string to the storage format of this data. + * The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData NULL terminated source string to convert. All of + * the data will be converted including the + * terminating NULL character. + * @param a_pOutputData Pointer to the buffer to receive the converted + * string. + * @param a_pOutputDataSize Size of the output buffer in char. + * @return true if all of the input data, including the + * terminating NULL character was successfully + * converted. + */ + bool ConvertToStore( + const UChar * a_pInputData, + char * a_pOutputData, + size_t a_uOutputDataSize) + { + UErrorCode nError; + + if (!m_pConverter) { + nError = U_ZERO_ERROR; + m_pConverter = ucnv_open(m_pEncoding, &nError); + if (U_FAILURE(nError)) { + return false; + } + } + + nError = U_ZERO_ERROR; + ucnv_fromUChars(m_pConverter, + a_pOutputData, (int32_t) a_uOutputDataSize, + a_pInputData, -1, &nError); + if (U_FAILURE(nError)) { + return false; + } + + return true; + } +}; + +#endif // SI_CONVERT_ICU + + +// --------------------------------------------------------------------------- +// SI_CONVERT_WIN32 +// --------------------------------------------------------------------------- +#ifdef SI_CONVERT_WIN32 + +#define SI_Case SI_GenericCase + +// Windows CE doesn't have errno or MBCS libraries +#ifdef _WIN32_WCE +# ifndef SI_NO_MBCS +# define SI_NO_MBCS +# endif +#endif + +#include +#ifdef SI_NO_MBCS +# define SI_NoCase SI_GenericNoCase +#else // !SI_NO_MBCS +/** + * Case-insensitive comparison class using Win32 MBCS functions. This class + * returns a case-insensitive semi-collation order for MBCS text. It may not + * be safe for UTF-8 text returned in char format as we don't know what + * characters will be folded by the function! Therefore, if you are using + * SI_CHAR == char and SetUnicode(true), then you need to use the generic + * SI_NoCase class instead. + */ +#include +template +struct SI_NoCase { + bool operator()(const SI_CHAR * pLeft, const SI_CHAR * pRight) const { + if (sizeof(SI_CHAR) == sizeof(char)) { + return _mbsicmp((const unsigned char *)pLeft, + (const unsigned char *)pRight) < 0; + } + if (sizeof(SI_CHAR) == sizeof(wchar_t)) { + return _wcsicmp((const wchar_t *)pLeft, + (const wchar_t *)pRight) < 0; + } + return SI_GenericNoCase()(pLeft, pRight); + } +}; +#endif // SI_NO_MBCS + +/** + * Converts MBCS and UTF-8 to a wchar_t (or equivalent) on Windows. This uses + * only the Win32 functions and doesn't require the external Unicode UTF-8 + * conversion library. It will not work on Windows 95 without using Microsoft + * Layer for Unicode in your application. + */ +template +class SI_ConvertW { + UINT m_uCodePage; +protected: + SI_ConvertW() { } +public: + SI_ConvertW(bool a_bStoreIsUtf8) { + m_uCodePage = a_bStoreIsUtf8 ? CP_UTF8 : CP_ACP; + } + + /* copy and assignment */ + SI_ConvertW(const SI_ConvertW & rhs) { operator=(rhs); } + SI_ConvertW & operator=(const SI_ConvertW & rhs) { + m_uCodePage = rhs.m_uCodePage; + return *this; + } + + /** Calculate the number of SI_CHAR required for converting the input + * from the storage format. The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData Data in storage format to be converted to SI_CHAR. + * @param a_uInputDataLen Length of storage format data in bytes. This + * must be the actual length of the data, including + * NULL byte if NULL terminated string is required. + * @return Number of SI_CHAR required by the string when + * converted. If there are embedded NULL bytes in the + * input data, only the string up and not including + * the NULL byte will be converted. + * @return -1 cast to size_t on a conversion error. + */ + size_t SizeFromStore( + const char * a_pInputData, + size_t a_uInputDataLen) + { + SI_ASSERT(a_uInputDataLen != (size_t) -1); + + int retval = MultiByteToWideChar( + m_uCodePage, 0, + a_pInputData, (int) a_uInputDataLen, + 0, 0); + return (size_t)(retval > 0 ? retval : -1); + } + + /** Convert the input string from the storage format to SI_CHAR. + * The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData Data in storage format to be converted to SI_CHAR. + * @param a_uInputDataLen Length of storage format data in bytes. This + * must be the actual length of the data, including + * NULL byte if NULL terminated string is required. + * @param a_pOutputData Pointer to the output buffer to received the + * converted data. + * @param a_uOutputDataSize Size of the output buffer in SI_CHAR. + * @return true if all of the input data was successfully + * converted. + */ + bool ConvertFromStore( + const char * a_pInputData, + size_t a_uInputDataLen, + SI_CHAR * a_pOutputData, + size_t a_uOutputDataSize) + { + int nSize = MultiByteToWideChar( + m_uCodePage, 0, + a_pInputData, (int) a_uInputDataLen, + (wchar_t *) a_pOutputData, (int) a_uOutputDataSize); + return (nSize > 0); + } + + /** Calculate the number of char required by the storage format of this + * data. The storage format is always UTF-8. + * + * @param a_pInputData NULL terminated string to calculate the number of + * bytes required to be converted to storage format. + * @return Number of bytes required by the string when + * converted to storage format. This size always + * includes space for the terminating NULL character. + * @return -1 cast to size_t on a conversion error. + */ + size_t SizeToStore( + const SI_CHAR * a_pInputData) + { + int retval = WideCharToMultiByte( + m_uCodePage, 0, + (const wchar_t *) a_pInputData, -1, + 0, 0, 0, 0); + return (size_t) (retval > 0 ? retval : -1); + } + + /** Convert the input string to the storage format of this data. + * The storage format is always UTF-8 or MBCS. + * + * @param a_pInputData NULL terminated source string to convert. All of + * the data will be converted including the + * terminating NULL character. + * @param a_pOutputData Pointer to the buffer to receive the converted + * string. + * @param a_pOutputDataSize Size of the output buffer in char. + * @return true if all of the input data, including the + * terminating NULL character was successfully + * converted. + */ + bool ConvertToStore( + const SI_CHAR * a_pInputData, + char * a_pOutputData, + size_t a_uOutputDataSize) + { + int retval = WideCharToMultiByte( + m_uCodePage, 0, + (const wchar_t *) a_pInputData, -1, + a_pOutputData, (int) a_uOutputDataSize, 0, 0); + return retval > 0; + } +}; + +#endif // SI_CONVERT_WIN32 + + + +// --------------------------------------------------------------------------- +// SI_NO_CONVERSION +// --------------------------------------------------------------------------- +#ifdef SI_NO_CONVERSION + +#define SI_Case SI_GenericCase +#define SI_NoCase SI_GenericNoCase + +#endif // SI_NO_CONVERSION + + + +// --------------------------------------------------------------------------- +// TYPE DEFINITIONS +// --------------------------------------------------------------------------- + +typedef CSimpleIniTempl,SI_ConvertA > CSimpleIniA; +typedef CSimpleIniTempl,SI_ConvertA > CSimpleIniCaseA; + +#if defined(SI_NO_CONVERSION) +// if there is no wide char conversion then we don't need to define the +// widechar "W" versions of CSimpleIni +# define CSimpleIni CSimpleIniA +# define CSimpleIniCase CSimpleIniCaseA +# define SI_NEWLINE SI_NEWLINE_A +#else +# if defined(SI_CONVERT_ICU) +typedef CSimpleIniTempl,SI_ConvertW > CSimpleIniW; +typedef CSimpleIniTempl,SI_ConvertW > CSimpleIniCaseW; +# else +typedef CSimpleIniTempl,SI_ConvertW > CSimpleIniW; +typedef CSimpleIniTempl,SI_ConvertW > CSimpleIniCaseW; +# endif + +# ifdef _UNICODE +# define CSimpleIni CSimpleIniW +# define CSimpleIniCase CSimpleIniCaseW +# define SI_NEWLINE SI_NEWLINE_W +# else // !_UNICODE +# define CSimpleIni CSimpleIniA +# define CSimpleIniCase CSimpleIniCaseA +# define SI_NEWLINE SI_NEWLINE_A +# endif // _UNICODE +#endif + +#ifdef _MSC_VER +# pragma warning (pop) +#endif + +#endif // INCLUDED_SimpleIni_h + diff --git a/include/ansidecl.h b/include/ansidecl.h new file mode 100644 index 0000000..7c2b9f1 --- /dev/null +++ b/include/ansidecl.h @@ -0,0 +1,436 @@ +/* ANSI and traditional C compatability macros + Copyright (C) 1991-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* ANSI and traditional C compatibility macros + + ANSI C is assumed if __STDC__ is #defined. + + Macro ANSI C definition Traditional C definition + ----- ---- - ---------- ----------- - ---------- + PTR `void *' `char *' + const not defined `' + volatile not defined `' + signed not defined `' + + For ease of writing code which uses GCC extensions but needs to be + portable to other compilers, we provide the GCC_VERSION macro that + simplifies testing __GNUC__ and __GNUC_MINOR__ together, and various + wrappers around __attribute__. Also, __extension__ will be #defined + to nothing if it doesn't work. See below. */ + +#ifndef _ANSIDECL_H +#define _ANSIDECL_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* Every source file includes this file, + so they will all get the switch for lint. */ +/* LINTLIBRARY */ + +/* Using MACRO(x,y) in cpp #if conditionals does not work with some + older preprocessors. Thus we can't define something like this: + +#define HAVE_GCC_VERSION(MAJOR, MINOR) \ + (__GNUC__ > (MAJOR) || (__GNUC__ == (MAJOR) && __GNUC_MINOR__ >= (MINOR))) + +and then test "#if HAVE_GCC_VERSION(2,7)". + +So instead we use the macro below and test it against specific values. */ + +/* This macro simplifies testing whether we are using gcc, and if it + is of a particular minimum version. (Both major & minor numbers are + significant.) This macro will evaluate to 0 if we are not using + gcc at all. */ +#ifndef GCC_VERSION +#define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__) +#endif /* GCC_VERSION */ + +#if defined (__STDC__) || defined(__cplusplus) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(_WIN32) +/* All known AIX compilers implement these things (but don't always + define __STDC__). The RISC/OS MIPS compiler defines these things + in SVR4 mode, but does not define __STDC__. */ +/* eraxxon@alumni.rice.edu: The Compaq C++ compiler, unlike many other + C++ compilers, does not define __STDC__, though it acts as if this + was so. (Verified versions: 5.7, 6.2, 6.3, 6.5) */ + +#define PTR void * + +#undef const +#undef volatile +#undef signed + +/* inline requires special treatment; it's in C99, and GCC >=2.7 supports + it too, but it's not in C89. */ +#undef inline +#if __STDC_VERSION__ >= 199901L || defined(__cplusplus) || (defined(__SUNPRO_C) && defined(__C99FEATURES__)) +/* it's a keyword */ +#else +# if GCC_VERSION >= 2007 +# define inline __inline__ /* __inline__ prevents -pedantic warnings */ +# else +# define inline /* nothing */ +# endif +#endif + +#else /* Not ANSI C. */ + +#define PTR char * + +/* some systems define these in header files for non-ansi mode */ +#undef const +#undef volatile +#undef signed +#undef inline +#define const +#define volatile +#define signed +#define inline + +#endif /* ANSI C. */ + +/* Define macros for some gcc attributes. This permits us to use the + macros freely, and know that they will come into play for the + version of gcc in which they are supported. */ + +#if (GCC_VERSION < 2007) +# define __attribute__(x) +#endif + +/* Attribute __malloc__ on functions was valid as of gcc 2.96. */ +#ifndef ATTRIBUTE_MALLOC +# if (GCC_VERSION >= 2096) +# define ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +# else +# define ATTRIBUTE_MALLOC +# endif /* GNUC >= 2.96 */ +#endif /* ATTRIBUTE_MALLOC */ + +/* Attributes on labels were valid as of gcc 2.93 and g++ 4.5. For + g++ an attribute on a label must be followed by a semicolon. */ +#ifndef ATTRIBUTE_UNUSED_LABEL +# ifndef __cplusplus +# if GCC_VERSION >= 2093 +# define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED +# else +# define ATTRIBUTE_UNUSED_LABEL +# endif +# else +# if GCC_VERSION >= 4005 +# define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED ; +# else +# define ATTRIBUTE_UNUSED_LABEL +# endif +# endif +#endif + +/* Similarly to ARG_UNUSED below. Prior to GCC 3.4, the C++ frontend + couldn't parse attributes placed after the identifier name, and now + the entire compiler is built with C++. */ +#ifndef ATTRIBUTE_UNUSED +#if GCC_VERSION >= 3004 +# define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +#define ATTRIBUTE_UNUSED +#endif +#endif /* ATTRIBUTE_UNUSED */ + +/* Before GCC 3.4, the C++ frontend couldn't parse attributes placed after the + identifier name. */ +#if ! defined(__cplusplus) || (GCC_VERSION >= 3004) +# define ARG_UNUSED(NAME) NAME ATTRIBUTE_UNUSED +#else /* !__cplusplus || GNUC >= 3.4 */ +# define ARG_UNUSED(NAME) NAME +#endif /* !__cplusplus || GNUC >= 3.4 */ + +#ifndef ATTRIBUTE_NORETURN +#define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) +#endif /* ATTRIBUTE_NORETURN */ + +/* Attribute `nonnull' was valid as of gcc 3.3. */ +#ifndef ATTRIBUTE_NONNULL +# if (GCC_VERSION >= 3003) +# define ATTRIBUTE_NONNULL(m) __attribute__ ((__nonnull__ (m))) +# else +# define ATTRIBUTE_NONNULL(m) +# endif /* GNUC >= 3.3 */ +#endif /* ATTRIBUTE_NONNULL */ + +/* Attribute `returns_nonnull' was valid as of gcc 4.9. */ +#ifndef ATTRIBUTE_RETURNS_NONNULL +# if (GCC_VERSION >= 4009) +# define ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +# else +# define ATTRIBUTE_RETURNS_NONNULL +# endif /* GNUC >= 4.9 */ +#endif /* ATTRIBUTE_RETURNS_NONNULL */ + +/* Attribute `pure' was valid as of gcc 3.0. */ +#ifndef ATTRIBUTE_PURE +# if (GCC_VERSION >= 3000) +# define ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define ATTRIBUTE_PURE +# endif /* GNUC >= 3.0 */ +#endif /* ATTRIBUTE_PURE */ + +/* Use ATTRIBUTE_PRINTF when the format specifier must not be NULL. + This was the case for the `printf' format attribute by itself + before GCC 3.3, but as of 3.3 we need to add the `nonnull' + attribute to retain this behavior. */ +#ifndef ATTRIBUTE_PRINTF +#define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (gnu_printf, m, n))) ATTRIBUTE_NONNULL(m) +#define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2) +#define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3) +#define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4) +#define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5) +#define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6) +#endif /* ATTRIBUTE_PRINTF */ + +/* Use ATTRIBUTE_FPTR_PRINTF when the format attribute is to be set on + a function pointer. Format attributes were allowed on function + pointers as of gcc 3.1. */ +#ifndef ATTRIBUTE_FPTR_PRINTF +# if (GCC_VERSION >= 3001) +# define ATTRIBUTE_FPTR_PRINTF(m, n) ATTRIBUTE_PRINTF(m, n) +# else +# define ATTRIBUTE_FPTR_PRINTF(m, n) +# endif /* GNUC >= 3.1 */ +# define ATTRIBUTE_FPTR_PRINTF_1 ATTRIBUTE_FPTR_PRINTF(1, 2) +# define ATTRIBUTE_FPTR_PRINTF_2 ATTRIBUTE_FPTR_PRINTF(2, 3) +# define ATTRIBUTE_FPTR_PRINTF_3 ATTRIBUTE_FPTR_PRINTF(3, 4) +# define ATTRIBUTE_FPTR_PRINTF_4 ATTRIBUTE_FPTR_PRINTF(4, 5) +# define ATTRIBUTE_FPTR_PRINTF_5 ATTRIBUTE_FPTR_PRINTF(5, 6) +#endif /* ATTRIBUTE_FPTR_PRINTF */ + +/* Use ATTRIBUTE_NULL_PRINTF when the format specifier may be NULL. A + NULL format specifier was allowed as of gcc 3.3. */ +#ifndef ATTRIBUTE_NULL_PRINTF +# if (GCC_VERSION >= 3003) +# define ATTRIBUTE_NULL_PRINTF(m, n) __attribute__ ((__format__ (gnu_printf, m, n))) +# else +# define ATTRIBUTE_NULL_PRINTF(m, n) +# endif /* GNUC >= 3.3 */ +# define ATTRIBUTE_NULL_PRINTF_1 ATTRIBUTE_NULL_PRINTF(1, 2) +# define ATTRIBUTE_NULL_PRINTF_2 ATTRIBUTE_NULL_PRINTF(2, 3) +# define ATTRIBUTE_NULL_PRINTF_3 ATTRIBUTE_NULL_PRINTF(3, 4) +# define ATTRIBUTE_NULL_PRINTF_4 ATTRIBUTE_NULL_PRINTF(4, 5) +# define ATTRIBUTE_NULL_PRINTF_5 ATTRIBUTE_NULL_PRINTF(5, 6) +#endif /* ATTRIBUTE_NULL_PRINTF */ + +/* Attribute `sentinel' was valid as of gcc 3.5. */ +#ifndef ATTRIBUTE_SENTINEL +# if (GCC_VERSION >= 3005) +# define ATTRIBUTE_SENTINEL __attribute__ ((__sentinel__)) +# else +# define ATTRIBUTE_SENTINEL +# endif /* GNUC >= 3.5 */ +#endif /* ATTRIBUTE_SENTINEL */ + + +#ifndef ATTRIBUTE_ALIGNED_ALIGNOF +# if (GCC_VERSION >= 3000) +# define ATTRIBUTE_ALIGNED_ALIGNOF(m) __attribute__ ((__aligned__ (__alignof__ (m)))) +# else +# define ATTRIBUTE_ALIGNED_ALIGNOF(m) +# endif /* GNUC >= 3.0 */ +#endif /* ATTRIBUTE_ALIGNED_ALIGNOF */ + +/* Useful for structures whose layout must match some binary specification + regardless of the alignment and padding qualities of the compiler. */ +#ifndef ATTRIBUTE_PACKED +# define ATTRIBUTE_PACKED __attribute__ ((packed)) +#endif + +/* Attribute `hot' and `cold' was valid as of gcc 4.3. */ +#ifndef ATTRIBUTE_COLD +# if (GCC_VERSION >= 4003) +# define ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define ATTRIBUTE_COLD +# endif /* GNUC >= 4.3 */ +#endif /* ATTRIBUTE_COLD */ +#ifndef ATTRIBUTE_HOT +# if (GCC_VERSION >= 4003) +# define ATTRIBUTE_HOT __attribute__ ((__hot__)) +# else +# define ATTRIBUTE_HOT +# endif /* GNUC >= 4.3 */ +#endif /* ATTRIBUTE_HOT */ + +/* Attribute 'no_sanitize_undefined' was valid as of gcc 4.9. */ +#ifndef ATTRIBUTE_NO_SANITIZE_UNDEFINED +# if (GCC_VERSION >= 4009) +# define ATTRIBUTE_NO_SANITIZE_UNDEFINED __attribute__ ((no_sanitize_undefined)) +# else +# define ATTRIBUTE_NO_SANITIZE_UNDEFINED +# endif /* GNUC >= 4.9 */ +#endif /* ATTRIBUTE_NO_SANITIZE_UNDEFINED */ + +/* Attribute 'nonstring' was valid as of gcc 8. */ +#ifndef ATTRIBUTE_NONSTRING +# if GCC_VERSION >= 8000 +# define ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +# else +# define ATTRIBUTE_NONSTRING +# endif +#endif + +/* Attribute `alloc_size' was valid as of gcc 4.3. */ +#ifndef ATTRIBUTE_RESULT_SIZE_1 +# if (GCC_VERSION >= 4003) +# define ATTRIBUTE_RESULT_SIZE_1 __attribute__ ((alloc_size (1))) +# else +# define ATTRIBUTE_RESULT_SIZE_1 +#endif +#endif + +#ifndef ATTRIBUTE_RESULT_SIZE_2 +# if (GCC_VERSION >= 4003) +# define ATTRIBUTE_RESULT_SIZE_2 __attribute__ ((alloc_size (2))) +# else +# define ATTRIBUTE_RESULT_SIZE_2 +#endif +#endif + +#ifndef ATTRIBUTE_RESULT_SIZE_1_2 +# if (GCC_VERSION >= 4003) +# define ATTRIBUTE_RESULT_SIZE_1_2 __attribute__ ((alloc_size (1, 2))) +# else +# define ATTRIBUTE_RESULT_SIZE_1_2 +#endif +#endif + +/* Attribute `warn_unused_result' was valid as of gcc 3.3. */ +#ifndef ATTRIBUTE_WARN_UNUSED_RESULT +# if GCC_VERSION >= 3003 +# define ATTRIBUTE_WARN_UNUSED_RESULT __attribute__ ((warn_unused_result)) +# else +# define ATTRIBUTE_WARN_UNUSED_RESULT +# endif +#endif + +/* We use __extension__ in some places to suppress -pedantic warnings + about GCC extensions. This feature didn't work properly before + gcc 2.8. */ +#if GCC_VERSION < 2008 +#define __extension__ +#endif + +/* This is used to declare a const variable which should be visible + outside of the current compilation unit. Use it as + EXPORTED_CONST int i = 1; + This is because the semantics of const are different in C and C++. + "extern const" is permitted in C but it looks strange, and gcc + warns about it when -Wc++-compat is not used. */ +#ifdef __cplusplus +#define EXPORTED_CONST extern const +#else +#define EXPORTED_CONST const +#endif + +/* Be conservative and only use enum bitfields with C++ or GCC. + FIXME: provide a complete autoconf test for buggy enum bitfields. */ + +#ifdef __cplusplus +#define ENUM_BITFIELD(TYPE) enum TYPE +#elif (GCC_VERSION > 2000) +#define ENUM_BITFIELD(TYPE) __extension__ enum TYPE +#else +#define ENUM_BITFIELD(TYPE) unsigned int +#endif + +#if __cpp_constexpr >= 200704 +#define CONSTEXPR constexpr +#else +#define CONSTEXPR +#endif + +/* C++11 adds the ability to add "override" after an implementation of a + virtual function in a subclass, to: + (A) document that this is an override of a virtual function + (B) allow the compiler to issue a warning if it isn't (e.g. a mismatch + of the type signature). + + Similarly, it allows us to add a "final" to indicate that no subclass + may subsequently override the vfunc. + + Provide OVERRIDE and FINAL as macros, allowing us to get these benefits + when compiling with C++11 support, but without requiring C++11. + + For gcc, use "-std=c++11" to enable C++11 support; gcc 6 onwards enables + this by default (actually GNU++14). */ + +#if defined __cplusplus +# if __cplusplus >= 201103 + /* C++11 claims to be available: use it. Final/override were only + implemented in 4.7, though. */ +# if GCC_VERSION < 4007 +# define OVERRIDE +# define FINAL +# else +# define OVERRIDE override +# define FINAL final +# endif +# elif GCC_VERSION >= 4007 + /* G++ 4.7 supports __final in C++98. */ +# define OVERRIDE +# define FINAL __final +# else + /* No C++11 support; leave the macros empty. */ +# define OVERRIDE +# define FINAL +# endif +#else + /* No C++11 support; leave the macros empty. */ +# define OVERRIDE +# define FINAL +#endif + +/* A macro to disable the copy constructor and assignment operator. + When building with C++11 and above, the methods are explicitly + deleted, causing a compile-time error if something tries to copy. + For C++03, this just declares the methods, causing a link-time + error if the methods end up called (assuming you don't + define them). For C++03, for best results, place the macro + under the private: access specifier, like this, + + class name_lookup + { + private: + DISABLE_COPY_AND_ASSIGN (name_lookup); + }; + + so that most attempts at copy are caught at compile-time. */ + +#if __cplusplus >= 201103 +#define DISABLE_COPY_AND_ASSIGN(TYPE) \ + TYPE (const TYPE&) = delete; \ + void operator= (const TYPE &) = delete + #else +#define DISABLE_COPY_AND_ASSIGN(TYPE) \ + TYPE (const TYPE&); \ + void operator= (const TYPE &) +#endif /* __cplusplus >= 201103 */ + +#ifdef __cplusplus +} +#endif + +#endif /* ansidecl.h */ diff --git a/include/bfd.h b/include/bfd.h new file mode 100644 index 0000000..2ccffe6 --- /dev/null +++ b/include/bfd.h @@ -0,0 +1,7937 @@ +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically + generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c", + "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c", + "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c", + "linker.c", "simple.c" and "compress.c". + Run "make headers" in your build bfd/ to regenerate. */ + +/* Main header file for the bfd library -- portable access to object files. + + Copyright (C) 1990-2021 Free Software Foundation, Inc. + + Contributed by Cygnus Support. + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef __BFD_H_SEEN__ +#define __BFD_H_SEEN__ + +/* PR 14072: Ensure that config.h is included first. */ +#if !defined PACKAGE && !defined PACKAGE_VERSION +#error config.h must be included before this header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ansidecl.h" +#include "symcat.h" +#include "bfd_stdint.h" +#include "diagnostics.h" +#include +#include + +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) +#ifndef SABER +/* This hack is to avoid a problem with some strict ANSI C preprocessors. + The problem is, "32_" is not a valid preprocessing token, and we don't + want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will + cause the inner CONCAT2 macros to be evaluated first, producing + still-valid pp-tokens. Then the final concatenation can be done. */ +#undef CONCAT4 +#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d)) +#endif +#endif + +/* This is a utility macro to handle the situation where the code + wants to place a constant string into the code, followed by a + comma and then the length of the string. Doing this by hand + is error prone, so using this macro is safer. */ +#define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1) +/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro + to create the arguments to another macro, since the preprocessor + will mis-count the number of arguments to the outer macro (by not + evaluating STRING_COMMA_LEN and so missing the comma). This is a + problem for example when trying to use STRING_COMMA_LEN to build + the arguments to the strncmp() macro. Hence this alternative + definition of strncmp is provided here. + + Note - these macros do NOT work if STR2 is not a constant string. */ +#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0) + /* strcpy() can have a similar problem, but since we know we are + copying a constant string, we can use memcpy which will be faster + since there is no need to check for a NUL byte inside STR. We + can also save time if we do not need to copy the terminating NUL. */ +#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1) +#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2)) + + +#define BFD_SUPPORTS_PLUGINS 1 + +/* The word size used by BFD on the host. This may be 64 with a 32 + bit target if the host is 64 bit, or if other 64 bit targets have + been selected with --enable-targets, or if --enable-64-bit-bfd. */ +#define BFD_ARCH_SIZE 64 + +/* The word size of the default bfd target. */ +#define BFD_DEFAULT_TARGET_SIZE 64 + +#define BFD_HOST_64BIT_LONG 0 +#define BFD_HOST_64BIT_LONG_LONG 1 +#if 1 +#define BFD_HOST_64_BIT long long +#define BFD_HOST_U_64_BIT unsigned long long +typedef BFD_HOST_64_BIT bfd_int64_t; +typedef BFD_HOST_U_64_BIT bfd_uint64_t; +#endif + +#ifdef HAVE_INTTYPES_H +# include +#else +# if BFD_HOST_64BIT_LONG +# define BFD_PRI64 "l" +# elif defined (__MSVCRT__) +# define BFD_PRI64 "I64" +# else +# define BFD_PRI64 "ll" +# endif +# undef PRId64 +# define PRId64 BFD_PRI64 "d" +# undef PRIu64 +# define PRIu64 BFD_PRI64 "u" +# undef PRIx64 +# define PRIx64 BFD_PRI64 "x" +#endif + +#if BFD_ARCH_SIZE >= 64 +#define BFD64 +#endif + +#ifndef INLINE +#if __GNUC__ >= 2 +#define INLINE __inline__ +#else +#define INLINE +#endif +#endif + +/* Declaring a type wide enough to hold a host long and a host pointer. */ +#define BFD_HOSTPTR_T unsigned long +typedef BFD_HOSTPTR_T bfd_hostptr_t; + +/* Forward declaration. */ +typedef struct bfd bfd; + +/* Boolean type used in bfd. Too many systems define their own + versions of "boolean" for us to safely typedef a "boolean" of + our own. Using an enum for "bfd_boolean" has its own set of + problems, with strange looking casts required to avoid warnings + on some older compilers. Thus we just use an int. + + General rule: Functions which are bfd_boolean return TRUE on + success and FALSE on failure (unless they're a predicate). */ + +typedef int bfd_boolean; +#undef FALSE +#undef TRUE +#define FALSE 0 +#define TRUE 1 + +#ifdef BFD64 + +#ifndef BFD_HOST_64_BIT + #error No 64 bit integer type available +#endif /* ! defined (BFD_HOST_64_BIT) */ + +typedef BFD_HOST_U_64_BIT bfd_vma; +typedef BFD_HOST_64_BIT bfd_signed_vma; +typedef BFD_HOST_U_64_BIT bfd_size_type; +typedef BFD_HOST_U_64_BIT symvalue; + +#if BFD_HOST_64BIT_LONG +#define BFD_VMA_FMT "l" +#elif defined (__MSVCRT__) && !defined(__USE_MINGW_ANSI_STDIO) +#define BFD_VMA_FMT "I64" +#else +#define BFD_VMA_FMT "ll" +#endif + +#ifndef fprintf_vma +#define sprintf_vma(s,x) sprintf (s, "%016" BFD_VMA_FMT "x", x) +#define fprintf_vma(f,x) fprintf (f, "%016" BFD_VMA_FMT "x", x) +#endif + +#else /* not BFD64 */ + +/* Represent a target address. Also used as a generic unsigned type + which is guaranteed to be big enough to hold any arithmetic types + we need to deal with. */ +typedef unsigned long bfd_vma; + +/* A generic signed type which is guaranteed to be big enough to hold any + arithmetic types we need to deal with. Can be assumed to be compatible + with bfd_vma in the same way that signed and unsigned ints are compatible + (as parameters, in assignment, etc). */ +typedef long bfd_signed_vma; + +typedef unsigned long symvalue; +typedef unsigned long bfd_size_type; + +/* Print a bfd_vma x on stream s. */ +#define BFD_VMA_FMT "l" +#define fprintf_vma(s,x) fprintf (s, "%08" BFD_VMA_FMT "x", x) +#define sprintf_vma(s,x) sprintf (s, "%08" BFD_VMA_FMT "x", x) + +#endif /* not BFD64 */ + +#define HALF_BFD_SIZE_TYPE \ + (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2)) + +#ifndef BFD_HOST_64_BIT +/* Fall back on a 32 bit type. The idea is to make these types always + available for function return types, but in the case that + BFD_HOST_64_BIT is undefined such a function should abort or + otherwise signal an error. */ +typedef bfd_signed_vma bfd_int64_t; +typedef bfd_vma bfd_uint64_t; +#endif + +/* An offset into a file. BFD always uses the largest possible offset + based on the build time availability of fseek, fseeko, or fseeko64. */ +typedef BFD_HOST_64_BIT file_ptr; +typedef unsigned BFD_HOST_64_BIT ufile_ptr; + +extern void bfd_sprintf_vma (bfd *, char *, bfd_vma); +extern void bfd_fprintf_vma (bfd *, void *, bfd_vma); + +#define printf_vma(x) fprintf_vma(stdout,x) +#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x) + +typedef unsigned int flagword; /* 32 bits of flags */ +typedef unsigned char bfd_byte; + +/* File formats. */ + +typedef enum bfd_format +{ + bfd_unknown = 0, /* File format is unknown. */ + bfd_object, /* Linker/assembler/compiler output. */ + bfd_archive, /* Object archive file. */ + bfd_core, /* Core dump. */ + bfd_type_end /* Marks the end; don't use it! */ +} +bfd_format; + +/* Symbols and relocation. */ + +/* A count of carsyms (canonical archive symbols). */ +typedef unsigned long symindex; + +#define BFD_NO_MORE_SYMBOLS ((symindex) ~0) + +/* A canonical archive symbol. */ +/* This is a type pun with struct ranlib on purpose! */ +typedef struct carsym +{ + const char *name; + file_ptr file_offset; /* Look here to find the file. */ +} +carsym; /* To make these you call a carsymogen. */ + +/* Used in generating armaps (archive tables of contents). + Perhaps just a forward definition would do? */ +struct orl /* Output ranlib. */ +{ + char **name; /* Symbol name. */ + union + { + file_ptr pos; + bfd *abfd; + } u; /* bfd* or file position. */ + int namidx; /* Index into string table. */ +}; + +/* Linenumber stuff. */ +typedef struct lineno_cache_entry +{ + unsigned int line_number; /* Linenumber from start of function. */ + union + { + struct bfd_symbol *sym; /* Function name. */ + bfd_vma offset; /* Offset into section. */ + } u; +} +alent; + +/* Object and core file sections. */ +typedef struct bfd_section *sec_ptr; + +#define align_power(addr, align) \ + (((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align)))) + +/* Align an address upward to a boundary, expressed as a number of bytes. + E.g. align to an 8-byte boundary with argument of 8. Take care never + to wrap around if the address is within boundary-1 of the end of the + address space. */ +#define BFD_ALIGN(this, boundary) \ + ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this)) \ + ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \ + : ~ (bfd_vma) 0) + +typedef enum bfd_print_symbol +{ + bfd_print_symbol_name, + bfd_print_symbol_more, + bfd_print_symbol_all +} bfd_print_symbol_type; + +/* Information about a symbol that nm needs. */ + +typedef struct _symbol_info +{ + symvalue value; + char type; + const char *name; /* Symbol name. */ + unsigned char stab_type; /* Stab type. */ + char stab_other; /* Stab other. */ + short stab_desc; /* Stab desc. */ + const char *stab_name; /* String for stab type. */ +} symbol_info; + +/* Get the name of a stabs type code. */ + +extern const char *bfd_get_stab_name (int); + +/* Hash table routines. There is no way to free up a hash table. */ + +/* An element in the hash table. Most uses will actually use a larger + structure, and an instance of this will be the first field. */ + +struct bfd_hash_entry +{ + /* Next entry for this hash code. */ + struct bfd_hash_entry *next; + /* String being hashed. */ + const char *string; + /* Hash code. This is the full hash code, not the index into the + table. */ + unsigned long hash; +}; + +/* A hash table. */ + +struct bfd_hash_table +{ + /* The hash array. */ + struct bfd_hash_entry **table; + /* A function used to create new elements in the hash table. The + first entry is itself a pointer to an element. When this + function is first invoked, this pointer will be NULL. However, + having the pointer permits a hierarchy of method functions to be + built each of which calls the function in the superclass. Thus + each function should be written to allocate a new block of memory + only if the argument is NULL. */ + struct bfd_hash_entry *(*newfunc) + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); + /* An objalloc for this hash table. This is a struct objalloc *, + but we use void * to avoid requiring the inclusion of objalloc.h. */ + void *memory; + /* The number of slots in the hash table. */ + unsigned int size; + /* The number of entries in the hash table. */ + unsigned int count; + /* The size of elements. */ + unsigned int entsize; + /* If non-zero, don't grow the hash table. */ + unsigned int frozen:1; +}; + +/* Initialize a hash table. */ +extern bfd_boolean bfd_hash_table_init + (struct bfd_hash_table *, + struct bfd_hash_entry *(*) (struct bfd_hash_entry *, + struct bfd_hash_table *, + const char *), + unsigned int); + +/* Initialize a hash table specifying a size. */ +extern bfd_boolean bfd_hash_table_init_n + (struct bfd_hash_table *, + struct bfd_hash_entry *(*) (struct bfd_hash_entry *, + struct bfd_hash_table *, + const char *), + unsigned int, unsigned int); + +/* Free up a hash table. */ +extern void bfd_hash_table_free + (struct bfd_hash_table *); + +/* Look up a string in a hash table. If CREATE is TRUE, a new entry + will be created for this string if one does not already exist. The + COPY argument must be TRUE if this routine should copy the string + into newly allocated memory when adding an entry. */ +extern struct bfd_hash_entry *bfd_hash_lookup + (struct bfd_hash_table *, const char *, bfd_boolean create, + bfd_boolean copy); + +/* Insert an entry in a hash table. */ +extern struct bfd_hash_entry *bfd_hash_insert + (struct bfd_hash_table *, const char *, unsigned long); + +/* Rename an entry in a hash table. */ +extern void bfd_hash_rename + (struct bfd_hash_table *, const char *, struct bfd_hash_entry *); + +/* Replace an entry in a hash table. */ +extern void bfd_hash_replace + (struct bfd_hash_table *, struct bfd_hash_entry *old, + struct bfd_hash_entry *nw); + +/* Base method for creating a hash table entry. */ +extern struct bfd_hash_entry *bfd_hash_newfunc + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); + +/* Grab some space for a hash table entry. */ +extern void *bfd_hash_allocate + (struct bfd_hash_table *, unsigned int); + +/* Traverse a hash table in a random order, calling a function on each + element. If the function returns FALSE, the traversal stops. The + INFO argument is passed to the function. */ +extern void bfd_hash_traverse + (struct bfd_hash_table *, + bfd_boolean (*) (struct bfd_hash_entry *, void *), + void *info); + +/* Allows the default size of a hash table to be configured. New hash + tables allocated using bfd_hash_table_init will be created with + this size. */ +extern unsigned long bfd_hash_set_default_size (unsigned long); + +/* Types of compressed DWARF debug sections. We currently support + zlib. */ +enum compressed_debug_section_type +{ + COMPRESS_DEBUG_NONE = 0, + COMPRESS_DEBUG = 1 << 0, + COMPRESS_DEBUG_GNU_ZLIB = COMPRESS_DEBUG | 1 << 1, + COMPRESS_DEBUG_GABI_ZLIB = COMPRESS_DEBUG | 1 << 2 +}; + +/* This structure is used to keep track of stabs in sections + information while linking. */ + +struct stab_info +{ + /* A hash table used to hold stabs strings. */ + struct bfd_strtab_hash *strings; + /* The header file hash table. */ + struct bfd_hash_table includes; + /* The first .stabstr section. */ + struct bfd_section *stabstr; +}; + +#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table + +/* User program access to BFD facilities. */ + +/* Direct I/O routines, for programs which know more about the object + file than BFD does. Use higher level routines if possible. */ + +extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *); +extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *); +extern int bfd_seek (bfd *, file_ptr, int); +extern file_ptr bfd_tell (bfd *); +extern int bfd_flush (bfd *); +extern int bfd_stat (bfd *, struct stat *); + +/* Deprecated old routines. */ +#if __GNUC__ +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \ + (_bfd_warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \ + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD))) +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \ + (_bfd_warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \ + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD))) +#else +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \ + (_bfd_warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \ + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD))) +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \ + (_bfd_warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\ + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD))) +#endif +extern void _bfd_warn_deprecated (const char *, const char *, int, const char *); + +extern bfd_boolean bfd_cache_close + (bfd *abfd); +/* NB: This declaration should match the autogenerated one in libbfd.h. */ + +extern bfd_boolean bfd_cache_close_all (void); + +extern bfd_boolean bfd_record_phdr + (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma, + bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **); + +/* Byte swapping routines. */ + +bfd_uint64_t bfd_getb64 (const void *); +bfd_uint64_t bfd_getl64 (const void *); +bfd_int64_t bfd_getb_signed_64 (const void *); +bfd_int64_t bfd_getl_signed_64 (const void *); +bfd_vma bfd_getb32 (const void *); +bfd_vma bfd_getl32 (const void *); +bfd_signed_vma bfd_getb_signed_32 (const void *); +bfd_signed_vma bfd_getl_signed_32 (const void *); +bfd_vma bfd_getb16 (const void *); +bfd_vma bfd_getl16 (const void *); +bfd_signed_vma bfd_getb_signed_16 (const void *); +bfd_signed_vma bfd_getl_signed_16 (const void *); +void bfd_putb64 (bfd_uint64_t, void *); +void bfd_putl64 (bfd_uint64_t, void *); +void bfd_putb32 (bfd_vma, void *); +void bfd_putl32 (bfd_vma, void *); +void bfd_putb24 (bfd_vma, void *); +void bfd_putl24 (bfd_vma, void *); +void bfd_putb16 (bfd_vma, void *); +void bfd_putl16 (bfd_vma, void *); + +/* Byte swapping routines which take size and endiannes as arguments. */ + +bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean); +void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean); + + +/* mmap hacks */ + +struct _bfd_window_internal; +typedef struct _bfd_window_internal bfd_window_internal; + +typedef struct _bfd_window +{ + /* What the user asked for. */ + void *data; + bfd_size_type size; + /* The actual window used by BFD. Small user-requested read-only + regions sharing a page may share a single window into the object + file. Read-write versions shouldn't until I've fixed things to + keep track of which portions have been claimed by the + application; don't want to give the same region back when the + application wants two writable copies! */ + struct _bfd_window_internal *i; +} +bfd_window; + +extern void bfd_init_window + (bfd_window *); +extern void bfd_free_window + (bfd_window *); +extern bfd_boolean bfd_get_file_window + (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean); + +/* Externally visible ELF routines. */ + +/* Create a new BFD as if by bfd_openr. Rather than opening a file, + reconstruct an ELF file by reading the segments out of remote + memory based on the ELF file header at EHDR_VMA and the ELF program + headers it points to. If non-zero, SIZE is the known extent of the + object. If not null, *LOADBASEP is filled in with the difference + between the VMAs from which the segments were read, and the VMAs + the file headers (and hence BFD's idea of each section's VMA) put + them at. + + The function TARGET_READ_MEMORY is called to copy LEN bytes from + the remote memory at target address VMA into the local buffer at + MYADDR; it should return zero on success or an `errno' code on + failure. TEMPL must be a BFD for a target with the word size and + byte order found in the remote memory. */ +extern bfd *bfd_elf_bfd_from_remote_memory + (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep, + int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, + bfd_size_type len)); + +/* Forward declarations. */ +struct ecoff_debug_info; +struct ecoff_debug_swap; +struct ecoff_extr; +struct bfd_link_info; +struct bfd_link_hash_entry; +/* Extracted from init.c. */ +unsigned int bfd_init (void); + + +/* Value returned by bfd_init. */ + +#define BFD_INIT_MAGIC (sizeof (struct bfd_section)) +/* Extracted from opncls.c. */ +/* Set to N to open the next N BFDs using an alternate id space. */ +extern unsigned int bfd_use_reserved_id; +bfd *bfd_fopen (const char *filename, const char *target, + const char *mode, int fd); + +bfd *bfd_openr (const char *filename, const char *target); + +bfd *bfd_fdopenr (const char *filename, const char *target, int fd); + +bfd *bfd_fdopenw (const char *filename, const char *target, int fd); + +bfd *bfd_openstreamr (const char * filename, const char * target, + void * stream); + +bfd *bfd_openr_iovec (const char *filename, const char *target, + void *(*open_func) (struct bfd *nbfd, + void *open_closure), + void *open_closure, + file_ptr (*pread_func) (struct bfd *nbfd, + void *stream, + void *buf, + file_ptr nbytes, + file_ptr offset), + int (*close_func) (struct bfd *nbfd, + void *stream), + int (*stat_func) (struct bfd *abfd, + void *stream, + struct stat *sb)); + +bfd *bfd_openw (const char *filename, const char *target); + +bfd_boolean bfd_close (bfd *abfd); + +bfd_boolean bfd_close_all_done (bfd *); + +bfd *bfd_create (const char *filename, bfd *templ); + +bfd_boolean bfd_make_writable (bfd *abfd); + +bfd_boolean bfd_make_readable (bfd *abfd); + +void *bfd_alloc (bfd *abfd, bfd_size_type wanted); + +void *bfd_zalloc (bfd *abfd, bfd_size_type wanted); + +unsigned long bfd_calc_gnu_debuglink_crc32 + (unsigned long crc, const unsigned char *buf, bfd_size_type len); + +char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out); + +char *bfd_get_alt_debug_link_info (bfd * abfd, + bfd_size_type *buildid_len, + bfd_byte **buildid_out); + +char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir); + +char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir); + +struct bfd_section *bfd_create_gnu_debuglink_section + (bfd *abfd, const char *filename); + +bfd_boolean bfd_fill_in_gnu_debuglink_section + (bfd *abfd, struct bfd_section *sect, const char *filename); + +char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir); + +const char *bfd_set_filename (bfd *abfd, const char *filename); + +/* Extracted from libbfd.c. */ + +/* Byte swapping macros for user section data. */ + +#define bfd_put_8(abfd, val, ptr) \ + ((void) (*((unsigned char *) (ptr)) = (val) & 0xff)) +#define bfd_put_signed_8 \ + bfd_put_8 +#define bfd_get_8(abfd, ptr) \ + ((bfd_vma) *(const unsigned char *) (ptr) & 0xff) +#define bfd_get_signed_8(abfd, ptr) \ + ((((bfd_signed_vma) *(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80) + +#define bfd_put_16(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_putx16, ((val),(ptr))) +#define bfd_put_signed_16 \ + bfd_put_16 +#define bfd_get_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx16, (ptr)) +#define bfd_get_signed_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx_signed_16, (ptr)) + +#define bfd_put_24(abfd, val, ptr) \ + do \ + if (bfd_big_endian (abfd)) \ + bfd_putb24 ((val), (ptr)); \ + else \ + bfd_putl24 ((val), (ptr)); \ + while (0) + +bfd_vma bfd_getb24 (const void *p); +bfd_vma bfd_getl24 (const void *p); + +#define bfd_get_24(abfd, ptr) \ + (bfd_big_endian (abfd) ? bfd_getb24 (ptr) : bfd_getl24 (ptr)) + +#define bfd_put_32(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_putx32, ((val),(ptr))) +#define bfd_put_signed_32 \ + bfd_put_32 +#define bfd_get_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx32, (ptr)) +#define bfd_get_signed_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx_signed_32, (ptr)) + +#define bfd_put_64(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_putx64, ((val), (ptr))) +#define bfd_put_signed_64 \ + bfd_put_64 +#define bfd_get_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx64, (ptr)) +#define bfd_get_signed_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx_signed_64, (ptr)) + +#define bfd_get(bits, abfd, ptr) \ + ((bits) == 8 ? bfd_get_8 (abfd, ptr) \ + : (bits) == 16 ? bfd_get_16 (abfd, ptr) \ + : (bits) == 32 ? bfd_get_32 (abfd, ptr) \ + : (bits) == 64 ? bfd_get_64 (abfd, ptr) \ + : (abort (), (bfd_vma) - 1)) + +#define bfd_put(bits, abfd, val, ptr) \ + ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \ + : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \ + : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \ + : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \ + : (abort (), (void) 0)) + + +/* Byte swapping macros for file header data. */ + +#define bfd_h_put_8(abfd, val, ptr) \ + bfd_put_8 (abfd, val, ptr) +#define bfd_h_put_signed_8(abfd, val, ptr) \ + bfd_put_8 (abfd, val, ptr) +#define bfd_h_get_8(abfd, ptr) \ + bfd_get_8 (abfd, ptr) +#define bfd_h_get_signed_8(abfd, ptr) \ + bfd_get_signed_8 (abfd, ptr) + +#define bfd_h_put_16(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_h_putx16, (val, ptr)) +#define bfd_h_put_signed_16 \ + bfd_h_put_16 +#define bfd_h_get_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx16, (ptr)) +#define bfd_h_get_signed_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr)) + +#define bfd_h_put_32(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_h_putx32, (val, ptr)) +#define bfd_h_put_signed_32 \ + bfd_h_put_32 +#define bfd_h_get_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx32, (ptr)) +#define bfd_h_get_signed_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr)) + +#define bfd_h_put_64(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_h_putx64, (val, ptr)) +#define bfd_h_put_signed_64 \ + bfd_h_put_64 +#define bfd_h_get_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx64, (ptr)) +#define bfd_h_get_signed_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr)) + +/* Aliases for the above, which should eventually go away. */ + +#define H_PUT_64 bfd_h_put_64 +#define H_PUT_32 bfd_h_put_32 +#define H_PUT_16 bfd_h_put_16 +#define H_PUT_8 bfd_h_put_8 +#define H_PUT_S64 bfd_h_put_signed_64 +#define H_PUT_S32 bfd_h_put_signed_32 +#define H_PUT_S16 bfd_h_put_signed_16 +#define H_PUT_S8 bfd_h_put_signed_8 +#define H_GET_64 bfd_h_get_64 +#define H_GET_32 bfd_h_get_32 +#define H_GET_16 bfd_h_get_16 +#define H_GET_8 bfd_h_get_8 +#define H_GET_S64 bfd_h_get_signed_64 +#define H_GET_S32 bfd_h_get_signed_32 +#define H_GET_S16 bfd_h_get_signed_16 +#define H_GET_S8 bfd_h_get_signed_8 + + +/* Extracted from bfdio.c. */ +long bfd_get_mtime (bfd *abfd); + +ufile_ptr bfd_get_size (bfd *abfd); + +ufile_ptr bfd_get_file_size (bfd *abfd); + +void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len, + int prot, int flags, file_ptr offset, + void **map_addr, bfd_size_type *map_len); + +/* Extracted from bfdwin.c. */ +/* Extracted from section.c. */ + +typedef struct bfd_section +{ + /* The name of the section; the name isn't a copy, the pointer is + the same as that passed to bfd_make_section. */ + const char *name; + + /* A unique sequence number. */ + unsigned int id; + + /* A unique section number which can be used by assembler to + distinguish different sections with the same section name. */ + unsigned int section_id; + + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */ + unsigned int index; + + /* The next section in the list belonging to the BFD, or NULL. */ + struct bfd_section *next; + + /* The previous section in the list belonging to the BFD, or NULL. */ + struct bfd_section *prev; + + /* The field flags contains attributes of the section. Some + flags are read in from the object file, and some are + synthesized from other information. */ + flagword flags; + +#define SEC_NO_FLAGS 0x0 + + /* Tells the OS to allocate space for this section when loading. + This is clear for a section containing debug information only. */ +#define SEC_ALLOC 0x1 + + /* Tells the OS to load the section from the file when loading. + This is clear for a .bss section. */ +#define SEC_LOAD 0x2 + + /* The section contains data still to be relocated, so there is + some relocation information too. */ +#define SEC_RELOC 0x4 + + /* A signal to the OS that the section contains read only data. */ +#define SEC_READONLY 0x8 + + /* The section contains code only. */ +#define SEC_CODE 0x10 + + /* The section contains data only. */ +#define SEC_DATA 0x20 + + /* The section will reside in ROM. */ +#define SEC_ROM 0x40 + + /* The section contains constructor information. This section + type is used by the linker to create lists of constructors and + destructors used by <>. When a back end sees a symbol + which should be used in a constructor list, it creates a new + section for the type of name (e.g., <<__CTOR_LIST__>>), attaches + the symbol to it, and builds a relocation. To build the lists + of constructors, all the linker has to do is catenate all the + sections called <<__CTOR_LIST__>> and relocate the data + contained within - exactly the operations it would peform on + standard data. */ +#define SEC_CONSTRUCTOR 0x80 + + /* The section has contents - a data section could be + <> | <>; a debug section could be + <> */ +#define SEC_HAS_CONTENTS 0x100 + + /* An instruction to the linker to not output the section + even if it has information which would normally be written. */ +#define SEC_NEVER_LOAD 0x200 + + /* The section contains thread local data. */ +#define SEC_THREAD_LOCAL 0x400 + + /* The section's size is fixed. Generic linker code will not + recalculate it and it is up to whoever has set this flag to + get the size right. */ +#define SEC_FIXED_SIZE 0x800 + + /* The section contains common symbols (symbols may be defined + multiple times, the value of a symbol is the amount of + space it requires, and the largest symbol value is the one + used). Most targets have exactly one of these (which we + translate to bfd_com_section_ptr), but ECOFF has two. */ +#define SEC_IS_COMMON 0x1000 + + /* The section contains only debugging information. For + example, this is set for ELF .debug and .stab sections. + strip tests this flag to see if a section can be + discarded. */ +#define SEC_DEBUGGING 0x2000 + + /* The contents of this section are held in memory pointed to + by the contents field. This is checked by bfd_get_section_contents, + and the data is retrieved from memory if appropriate. */ +#define SEC_IN_MEMORY 0x4000 + + /* The contents of this section are to be excluded by the + linker for executable and shared objects unless those + objects are to be further relocated. */ +#define SEC_EXCLUDE 0x8000 + + /* The contents of this section are to be sorted based on the sum of + the symbol and addend values specified by the associated relocation + entries. Entries without associated relocation entries will be + appended to the end of the section in an unspecified order. */ +#define SEC_SORT_ENTRIES 0x10000 + + /* When linking, duplicate sections of the same name should be + discarded, rather than being combined into a single section as + is usually done. This is similar to how common symbols are + handled. See SEC_LINK_DUPLICATES below. */ +#define SEC_LINK_ONCE 0x20000 + + /* If SEC_LINK_ONCE is set, this bitfield describes how the linker + should handle duplicate sections. */ +#define SEC_LINK_DUPLICATES 0xc0000 + + /* This value for SEC_LINK_DUPLICATES means that duplicate + sections with the same name should simply be discarded. */ +#define SEC_LINK_DUPLICATES_DISCARD 0x0 + + /* This value for SEC_LINK_DUPLICATES means that the linker + should warn if there are any duplicate sections, although + it should still only link one copy. */ +#define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000 + + /* This value for SEC_LINK_DUPLICATES means that the linker + should warn if any duplicate sections are a different size. */ +#define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000 + + /* This value for SEC_LINK_DUPLICATES means that the linker + should warn if any duplicate sections contain different + contents. */ +#define SEC_LINK_DUPLICATES_SAME_CONTENTS \ + (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE) + + /* This section was created by the linker as part of dynamic + relocation or other arcane processing. It is skipped when + going through the first-pass output, trusting that someone + else up the line will take care of it later. */ +#define SEC_LINKER_CREATED 0x100000 + + /* This section contains a section ID to distinguish different + sections with the same section name. */ +#define SEC_ASSEMBLER_SECTION_ID 0x100000 + + /* This section should not be subject to garbage collection. + Also set to inform the linker that this section should not be + listed in the link map as discarded. */ +#define SEC_KEEP 0x200000 + + /* This section contains "short" data, and should be placed + "near" the GP. */ +#define SEC_SMALL_DATA 0x400000 + + /* Attempt to merge identical entities in the section. + Entity size is given in the entsize field. */ +#define SEC_MERGE 0x800000 + + /* If given with SEC_MERGE, entities to merge are zero terminated + strings where entsize specifies character size instead of fixed + size entries. */ +#define SEC_STRINGS 0x1000000 + + /* This section contains data about section groups. */ +#define SEC_GROUP 0x2000000 + + /* The section is a COFF shared library section. This flag is + only for the linker. If this type of section appears in + the input file, the linker must copy it to the output file + without changing the vma or size. FIXME: Although this + was originally intended to be general, it really is COFF + specific (and the flag was renamed to indicate this). It + might be cleaner to have some more general mechanism to + allow the back end to control what the linker does with + sections. */ +#define SEC_COFF_SHARED_LIBRARY 0x4000000 + + /* This input section should be copied to output in reverse order + as an array of pointers. This is for ELF linker internal use + only. */ +#define SEC_ELF_REVERSE_COPY 0x4000000 + + /* This section contains data which may be shared with other + executables or shared objects. This is for COFF only. */ +#define SEC_COFF_SHARED 0x8000000 + + /* This section should be compressed. This is for ELF linker + internal use only. */ +#define SEC_ELF_COMPRESS 0x8000000 + + /* When a section with this flag is being linked, then if the size of + the input section is less than a page, it should not cross a page + boundary. If the size of the input section is one page or more, + it should be aligned on a page boundary. This is for TI + TMS320C54X only. */ +#define SEC_TIC54X_BLOCK 0x10000000 + + /* This section should be renamed. This is for ELF linker + internal use only. */ +#define SEC_ELF_RENAME 0x10000000 + + /* Conditionally link this section; do not link if there are no + references found to any symbol in the section. This is for TI + TMS320C54X only. */ +#define SEC_TIC54X_CLINK 0x20000000 + + /* This section contains vliw code. This is for Toshiba MeP only. */ +#define SEC_MEP_VLIW 0x20000000 + + /* All symbols, sizes and relocations in this section are octets + instead of bytes. Required for DWARF debug sections as DWARF + information is organized in octets, not bytes. */ +#define SEC_ELF_OCTETS 0x40000000 + + /* Indicate that section has the no read flag set. This happens + when memory read flag isn't set. */ +#define SEC_COFF_NOREAD 0x40000000 + + /* Indicate that section has the purecode flag set. */ +#define SEC_ELF_PURECODE 0x80000000 + + /* End of section flags. */ + + /* Some internal packed boolean fields. */ + + /* See the vma field. */ + unsigned int user_set_vma : 1; + + /* A mark flag used by some of the linker backends. */ + unsigned int linker_mark : 1; + + /* Another mark flag used by some of the linker backends. Set for + output sections that have an input section. */ + unsigned int linker_has_input : 1; + + /* Mark flag used by some linker backends for garbage collection. */ + unsigned int gc_mark : 1; + + /* Section compression status. */ + unsigned int compress_status : 2; +#define COMPRESS_SECTION_NONE 0 +#define COMPRESS_SECTION_DONE 1 +#define DECOMPRESS_SECTION_SIZED 2 + + /* The following flags are used by the ELF linker. */ + + /* Mark sections which have been allocated to segments. */ + unsigned int segment_mark : 1; + + /* Type of sec_info information. */ + unsigned int sec_info_type:3; +#define SEC_INFO_TYPE_NONE 0 +#define SEC_INFO_TYPE_STABS 1 +#define SEC_INFO_TYPE_MERGE 2 +#define SEC_INFO_TYPE_EH_FRAME 3 +#define SEC_INFO_TYPE_JUST_SYMS 4 +#define SEC_INFO_TYPE_TARGET 5 +#define SEC_INFO_TYPE_EH_FRAME_ENTRY 6 + + /* Nonzero if this section uses RELA relocations, rather than REL. */ + unsigned int use_rela_p:1; + + /* Bits used by various backends. The generic code doesn't touch + these fields. */ + + unsigned int sec_flg0:1; + unsigned int sec_flg1:1; + unsigned int sec_flg2:1; + unsigned int sec_flg3:1; + unsigned int sec_flg4:1; + unsigned int sec_flg5:1; + + /* End of internal packed boolean fields. */ + + /* The virtual memory address of the section - where it will be + at run time. The symbols are relocated against this. The + user_set_vma flag is maintained by bfd; if it's not set, the + backend can assign addresses (for example, in <>, where + the default address for <<.data>> is dependent on the specific + target and various flags). */ + bfd_vma vma; + + /* The load address of the section - where it would be in a + rom image; really only used for writing section header + information. */ + bfd_vma lma; + + /* The size of the section in *octets*, as it will be output. + Contains a value even if the section has no contents (e.g., the + size of <<.bss>>). */ + bfd_size_type size; + + /* For input sections, the original size on disk of the section, in + octets. This field should be set for any section whose size is + changed by linker relaxation. It is required for sections where + the linker relaxation scheme doesn't cache altered section and + reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing + targets), and thus the original size needs to be kept to read the + section multiple times. For output sections, rawsize holds the + section size calculated on a previous linker relaxation pass. */ + bfd_size_type rawsize; + + /* The compressed size of the section in octets. */ + bfd_size_type compressed_size; + + /* Relaxation table. */ + struct relax_table *relax; + + /* Count of used relaxation table entries. */ + int relax_count; + + + /* If this section is going to be output, then this value is the + offset in *bytes* into the output section of the first byte in the + input section (byte ==> smallest addressable unit on the + target). In most cases, if this was going to start at the + 100th octet (8-bit quantity) in the output section, this value + would be 100. However, if the target byte size is 16 bits + (bfd_octets_per_byte is "2"), this value would be 50. */ + bfd_vma output_offset; + + /* The output section through which to map on output. */ + struct bfd_section *output_section; + + /* The alignment requirement of the section, as an exponent of 2 - + e.g., 3 aligns to 2^3 (or 8). */ + unsigned int alignment_power; + + /* If an input section, a pointer to a vector of relocation + records for the data in this section. */ + struct reloc_cache_entry *relocation; + + /* If an output section, a pointer to a vector of pointers to + relocation records for the data in this section. */ + struct reloc_cache_entry **orelocation; + + /* The number of relocation records in one of the above. */ + unsigned reloc_count; + + /* Information below is back end specific - and not always used + or updated. */ + + /* File position of section data. */ + file_ptr filepos; + + /* File position of relocation info. */ + file_ptr rel_filepos; + + /* File position of line data. */ + file_ptr line_filepos; + + /* Pointer to data for applications. */ + void *userdata; + + /* If the SEC_IN_MEMORY flag is set, this points to the actual + contents. */ + unsigned char *contents; + + /* Attached line number information. */ + alent *lineno; + + /* Number of line number records. */ + unsigned int lineno_count; + + /* Entity size for merging purposes. */ + unsigned int entsize; + + /* Points to the kept section if this section is a link-once section, + and is discarded. */ + struct bfd_section *kept_section; + + /* When a section is being output, this value changes as more + linenumbers are written out. */ + file_ptr moving_line_filepos; + + /* What the section number is in the target world. */ + int target_index; + + void *used_by_bfd; + + /* If this is a constructor section then here is a list of the + relocations created to relocate items within it. */ + struct relent_chain *constructor_chain; + + /* The BFD which owns the section. */ + bfd *owner; + + /* A symbol which points at this section only. */ + struct bfd_symbol *symbol; + struct bfd_symbol **symbol_ptr_ptr; + + /* The matching section name pattern in linker script. */ + const char *pattern; + + /* Early in the link process, map_head and map_tail are used to build + a list of input sections attached to an output section. Later, + output sections use these fields for a list of bfd_link_order + structs. The linked_to_symbol_name field is for ELF assembler + internal use. */ + union { + struct bfd_link_order *link_order; + struct bfd_section *s; + const char *linked_to_symbol_name; + } map_head, map_tail; + /* Points to the output section this section is already assigned to, if any. + This is used when support for non-contiguous memory regions is enabled. */ + struct bfd_section *already_assigned; + +} asection; + +/* Relax table contains information about instructions which can + be removed by relaxation -- replacing a long address with a + short address. */ +struct relax_table { + /* Address where bytes may be deleted. */ + bfd_vma addr; + + /* Number of bytes to be deleted. */ + int size; +}; + +static inline const char * +bfd_section_name (const asection *sec) +{ + return sec->name; +} + +static inline bfd_size_type +bfd_section_size (const asection *sec) +{ + return sec->size; +} + +static inline bfd_vma +bfd_section_vma (const asection *sec) +{ + return sec->vma; +} + +static inline bfd_vma +bfd_section_lma (const asection *sec) +{ + return sec->lma; +} + +static inline unsigned int +bfd_section_alignment (const asection *sec) +{ + return sec->alignment_power; +} + +static inline flagword +bfd_section_flags (const asection *sec) +{ + return sec->flags; +} + +static inline void * +bfd_section_userdata (const asection *sec) +{ + return sec->userdata; +} +static inline bfd_boolean +bfd_is_com_section (const asection *sec) +{ + return (sec->flags & SEC_IS_COMMON) != 0; +} + +/* Note: the following are provided as inline functions rather than macros + because not all callers use the return value. A macro implementation + would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some + compilers will complain about comma expressions that have no effect. */ +static inline bfd_boolean +bfd_set_section_userdata (asection *sec, void *val) +{ + sec->userdata = val; + return TRUE; +} + +static inline bfd_boolean +bfd_set_section_vma (asection *sec, bfd_vma val) +{ + sec->vma = sec->lma = val; + sec->user_set_vma = TRUE; + return TRUE; +} + +static inline bfd_boolean +bfd_set_section_lma (asection *sec, bfd_vma val) +{ + sec->lma = val; + return TRUE; +} + +static inline bfd_boolean +bfd_set_section_alignment (asection *sec, unsigned int val) +{ + sec->alignment_power = val; + return TRUE; +} + +/* These sections are global, and are managed by BFD. The application + and target back end are not permitted to change the values in + these sections. */ +extern asection _bfd_std_section[4]; + +#define BFD_ABS_SECTION_NAME "*ABS*" +#define BFD_UND_SECTION_NAME "*UND*" +#define BFD_COM_SECTION_NAME "*COM*" +#define BFD_IND_SECTION_NAME "*IND*" + +/* Pointer to the common section. */ +#define bfd_com_section_ptr (&_bfd_std_section[0]) +/* Pointer to the undefined section. */ +#define bfd_und_section_ptr (&_bfd_std_section[1]) +/* Pointer to the absolute section. */ +#define bfd_abs_section_ptr (&_bfd_std_section[2]) +/* Pointer to the indirect section. */ +#define bfd_ind_section_ptr (&_bfd_std_section[3]) + +static inline bfd_boolean +bfd_is_und_section (const asection *sec) +{ + return sec == bfd_und_section_ptr; +} + +static inline bfd_boolean +bfd_is_abs_section (const asection *sec) +{ + return sec == bfd_abs_section_ptr; +} + +static inline bfd_boolean +bfd_is_ind_section (const asection *sec) +{ + return sec == bfd_ind_section_ptr; +} + +static inline bfd_boolean +bfd_is_const_section (const asection *sec) +{ + return (sec >= _bfd_std_section + && sec < _bfd_std_section + (sizeof (_bfd_std_section) + / sizeof (_bfd_std_section[0]))); +} + +/* Return TRUE if input section SEC has been discarded. */ +static inline bfd_boolean +discarded_section (const asection *sec) +{ + return (!bfd_is_abs_section (sec) + && bfd_is_abs_section (sec->output_section) + && sec->sec_info_type != SEC_INFO_TYPE_MERGE + && sec->sec_info_type != SEC_INFO_TYPE_JUST_SYMS); +} + +#define BFD_FAKE_SECTION(SEC, SYM, NAME, IDX, FLAGS) \ + /* name, id, section_id, index, next, prev, flags, user_set_vma, */ \ + { NAME, IDX, 0, 0, NULL, NULL, FLAGS, 0, \ + \ + /* linker_mark, linker_has_input, gc_mark, decompress_status, */ \ + 0, 0, 1, 0, \ + \ + /* segment_mark, sec_info_type, use_rela_p, */ \ + 0, 0, 0, \ + \ + /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, */ \ + 0, 0, 0, 0, 0, 0, \ + \ + /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */ \ + 0, 0, 0, 0, 0, 0, 0, \ + \ + /* output_offset, output_section, alignment_power, */ \ + 0, &SEC, 0, \ + \ + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \ + NULL, NULL, 0, 0, 0, \ + \ + /* line_filepos, userdata, contents, lineno, lineno_count, */ \ + 0, NULL, NULL, NULL, 0, \ + \ + /* entsize, kept_section, moving_line_filepos, */ \ + 0, NULL, 0, \ + \ + /* target_index, used_by_bfd, constructor_chain, owner, */ \ + 0, NULL, NULL, NULL, \ + \ + /* symbol, symbol_ptr_ptr, pattern, */ \ + (struct bfd_symbol *) SYM, &SEC.symbol, NULL, \ + \ + /* map_head, map_tail, already_assigned */ \ + { NULL }, { NULL }, NULL \ + \ + } + +/* We use a macro to initialize the static asymbol structures because + traditional C does not permit us to initialize a union member while + gcc warns if we don't initialize it. + the_bfd, name, value, attr, section [, udata] */ +#ifdef __STDC__ +#define GLOBAL_SYM_INIT(NAME, SECTION) \ + { 0, NAME, 0, BSF_SECTION_SYM, SECTION, { 0 }} +#else +#define GLOBAL_SYM_INIT(NAME, SECTION) \ + { 0, NAME, 0, BSF_SECTION_SYM, SECTION } +#endif + +void bfd_section_list_clear (bfd *); + +asection *bfd_get_section_by_name (bfd *abfd, const char *name); + +asection *bfd_get_next_section_by_name (bfd *ibfd, asection *sec); + +asection *bfd_get_linker_section (bfd *abfd, const char *name); + +asection *bfd_get_section_by_name_if + (bfd *abfd, + const char *name, + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj), + void *obj); + +char *bfd_get_unique_section_name + (bfd *abfd, const char *templat, int *count); + +asection *bfd_make_section_old_way (bfd *abfd, const char *name); + +asection *bfd_make_section_anyway_with_flags + (bfd *abfd, const char *name, flagword flags); + +asection *bfd_make_section_anyway (bfd *abfd, const char *name); + +asection *bfd_make_section_with_flags + (bfd *, const char *name, flagword flags); + +asection *bfd_make_section (bfd *, const char *name); + +bfd_boolean bfd_set_section_flags (asection *sec, flagword flags); + +void bfd_rename_section + (asection *sec, const char *newname); + +void bfd_map_over_sections + (bfd *abfd, + void (*func) (bfd *abfd, asection *sect, void *obj), + void *obj); + +asection *bfd_sections_find_if + (bfd *abfd, + bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj), + void *obj); + +bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val); + +bfd_boolean bfd_set_section_contents + (bfd *abfd, asection *section, const void *data, + file_ptr offset, bfd_size_type count); + +bfd_boolean bfd_get_section_contents + (bfd *abfd, asection *section, void *location, file_ptr offset, + bfd_size_type count); + +bfd_boolean bfd_malloc_and_get_section + (bfd *abfd, asection *section, bfd_byte **buf); + +bfd_boolean bfd_copy_private_section_data + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec); + +#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \ + BFD_SEND (obfd, _bfd_copy_private_section_data, \ + (ibfd, isection, obfd, osection)) +bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec); + +const char *bfd_generic_group_name (bfd *, const asection *sec); + +bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group); + +/* Extracted from archures.c. */ +enum bfd_architecture +{ + bfd_arch_unknown, /* File arch not known. */ + bfd_arch_obscure, /* Arch known, not one of these. */ + bfd_arch_m68k, /* Motorola 68xxx. */ +#define bfd_mach_m68000 1 +#define bfd_mach_m68008 2 +#define bfd_mach_m68010 3 +#define bfd_mach_m68020 4 +#define bfd_mach_m68030 5 +#define bfd_mach_m68040 6 +#define bfd_mach_m68060 7 +#define bfd_mach_cpu32 8 +#define bfd_mach_fido 9 +#define bfd_mach_mcf_isa_a_nodiv 10 +#define bfd_mach_mcf_isa_a 11 +#define bfd_mach_mcf_isa_a_mac 12 +#define bfd_mach_mcf_isa_a_emac 13 +#define bfd_mach_mcf_isa_aplus 14 +#define bfd_mach_mcf_isa_aplus_mac 15 +#define bfd_mach_mcf_isa_aplus_emac 16 +#define bfd_mach_mcf_isa_b_nousp 17 +#define bfd_mach_mcf_isa_b_nousp_mac 18 +#define bfd_mach_mcf_isa_b_nousp_emac 19 +#define bfd_mach_mcf_isa_b 20 +#define bfd_mach_mcf_isa_b_mac 21 +#define bfd_mach_mcf_isa_b_emac 22 +#define bfd_mach_mcf_isa_b_float 23 +#define bfd_mach_mcf_isa_b_float_mac 24 +#define bfd_mach_mcf_isa_b_float_emac 25 +#define bfd_mach_mcf_isa_c 26 +#define bfd_mach_mcf_isa_c_mac 27 +#define bfd_mach_mcf_isa_c_emac 28 +#define bfd_mach_mcf_isa_c_nodiv 29 +#define bfd_mach_mcf_isa_c_nodiv_mac 30 +#define bfd_mach_mcf_isa_c_nodiv_emac 31 + bfd_arch_vax, /* DEC Vax. */ + + bfd_arch_or1k, /* OpenRISC 1000. */ +#define bfd_mach_or1k 1 +#define bfd_mach_or1knd 2 + + bfd_arch_sparc, /* SPARC. */ +#define bfd_mach_sparc 1 +/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */ +#define bfd_mach_sparc_sparclet 2 +#define bfd_mach_sparc_sparclite 3 +#define bfd_mach_sparc_v8plus 4 +#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */ +#define bfd_mach_sparc_sparclite_le 6 +#define bfd_mach_sparc_v9 7 +#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */ +#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */ +#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */ +#define bfd_mach_sparc_v8plusc 11 /* with UA2005 and T1 add'ns. */ +#define bfd_mach_sparc_v9c 12 /* with UA2005 and T1 add'ns. */ +#define bfd_mach_sparc_v8plusd 13 /* with UA2007 and T3 add'ns. */ +#define bfd_mach_sparc_v9d 14 /* with UA2007 and T3 add'ns. */ +#define bfd_mach_sparc_v8pluse 15 /* with OSA2001 and T4 add'ns (no IMA). */ +#define bfd_mach_sparc_v9e 16 /* with OSA2001 and T4 add'ns (no IMA). */ +#define bfd_mach_sparc_v8plusv 17 /* with OSA2011 and T4 and IMA and FJMAU add'ns. */ +#define bfd_mach_sparc_v9v 18 /* with OSA2011 and T4 and IMA and FJMAU add'ns. */ +#define bfd_mach_sparc_v8plusm 19 /* with OSA2015 and M7 add'ns. */ +#define bfd_mach_sparc_v9m 20 /* with OSA2015 and M7 add'ns. */ +#define bfd_mach_sparc_v8plusm8 21 /* with OSA2017 and M8 add'ns. */ +#define bfd_mach_sparc_v9m8 22 /* with OSA2017 and M8 add'ns. */ +/* Nonzero if MACH has the v9 instruction set. */ +#define bfd_mach_sparc_v9_p(mach) \ + ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9m8 \ + && (mach) != bfd_mach_sparc_sparclite_le) +/* Nonzero if MACH is a 64 bit sparc architecture. */ +#define bfd_mach_sparc_64bit_p(mach) \ + ((mach) >= bfd_mach_sparc_v9 \ + && (mach) != bfd_mach_sparc_v8plusb \ + && (mach) != bfd_mach_sparc_v8plusc \ + && (mach) != bfd_mach_sparc_v8plusd \ + && (mach) != bfd_mach_sparc_v8pluse \ + && (mach) != bfd_mach_sparc_v8plusv \ + && (mach) != bfd_mach_sparc_v8plusm \ + && (mach) != bfd_mach_sparc_v8plusm8) + bfd_arch_spu, /* PowerPC SPU. */ +#define bfd_mach_spu 256 + bfd_arch_mips, /* MIPS Rxxxx. */ +#define bfd_mach_mips3000 3000 +#define bfd_mach_mips3900 3900 +#define bfd_mach_mips4000 4000 +#define bfd_mach_mips4010 4010 +#define bfd_mach_mips4100 4100 +#define bfd_mach_mips4111 4111 +#define bfd_mach_mips4120 4120 +#define bfd_mach_mips4300 4300 +#define bfd_mach_mips4400 4400 +#define bfd_mach_mips4600 4600 +#define bfd_mach_mips4650 4650 +#define bfd_mach_mips5000 5000 +#define bfd_mach_mips5400 5400 +#define bfd_mach_mips5500 5500 +#define bfd_mach_mips5900 5900 +#define bfd_mach_mips6000 6000 +#define bfd_mach_mips7000 7000 +#define bfd_mach_mips8000 8000 +#define bfd_mach_mips9000 9000 +#define bfd_mach_mips10000 10000 +#define bfd_mach_mips12000 12000 +#define bfd_mach_mips14000 14000 +#define bfd_mach_mips16000 16000 +#define bfd_mach_mips16 16 +#define bfd_mach_mips5 5 +#define bfd_mach_mips_loongson_2e 3001 +#define bfd_mach_mips_loongson_2f 3002 +#define bfd_mach_mips_gs464 3003 +#define bfd_mach_mips_gs464e 3004 +#define bfd_mach_mips_gs264e 3005 +#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01. */ +#define bfd_mach_mips_octeon 6501 +#define bfd_mach_mips_octeonp 6601 +#define bfd_mach_mips_octeon2 6502 +#define bfd_mach_mips_octeon3 6503 +#define bfd_mach_mips_xlr 887682 /* decimal 'XLR'. */ +#define bfd_mach_mips_interaptiv_mr2 736550 /* decimal 'IA2'. */ +#define bfd_mach_mipsisa32 32 +#define bfd_mach_mipsisa32r2 33 +#define bfd_mach_mipsisa32r3 34 +#define bfd_mach_mipsisa32r5 36 +#define bfd_mach_mipsisa32r6 37 +#define bfd_mach_mipsisa64 64 +#define bfd_mach_mipsisa64r2 65 +#define bfd_mach_mipsisa64r3 66 +#define bfd_mach_mipsisa64r5 68 +#define bfd_mach_mipsisa64r6 69 +#define bfd_mach_mips_micromips 96 + bfd_arch_i386, /* Intel 386. */ +#define bfd_mach_i386_intel_syntax (1 << 0) +#define bfd_mach_i386_i8086 (1 << 1) +#define bfd_mach_i386_i386 (1 << 2) +#define bfd_mach_x86_64 (1 << 3) +#define bfd_mach_x64_32 (1 << 4) +#define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax) +#define bfd_mach_x86_64_intel_syntax (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax) +#define bfd_mach_x64_32_intel_syntax (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax) + bfd_arch_l1om, /* Intel L1OM. */ +#define bfd_mach_l1om (1 << 5) +#define bfd_mach_l1om_intel_syntax (bfd_mach_l1om | bfd_mach_i386_intel_syntax) + bfd_arch_k1om, /* Intel K1OM. */ +#define bfd_mach_k1om (1 << 6) +#define bfd_mach_k1om_intel_syntax (bfd_mach_k1om | bfd_mach_i386_intel_syntax) + bfd_arch_iamcu, /* Intel MCU. */ +#define bfd_mach_iamcu (1 << 8) +#define bfd_mach_i386_iamcu (bfd_mach_i386_i386 | bfd_mach_iamcu) +#define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax) + bfd_arch_romp, /* IBM ROMP PC/RT. */ + bfd_arch_convex, /* Convex. */ + bfd_arch_m98k, /* Motorola 98xxx. */ + bfd_arch_pyramid, /* Pyramid Technology. */ + bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300). */ +#define bfd_mach_h8300 1 +#define bfd_mach_h8300h 2 +#define bfd_mach_h8300s 3 +#define bfd_mach_h8300hn 4 +#define bfd_mach_h8300sn 5 +#define bfd_mach_h8300sx 6 +#define bfd_mach_h8300sxn 7 + bfd_arch_pdp11, /* DEC PDP-11. */ + bfd_arch_powerpc, /* PowerPC. */ +#define bfd_mach_ppc 32 +#define bfd_mach_ppc64 64 +#define bfd_mach_ppc_403 403 +#define bfd_mach_ppc_403gc 4030 +#define bfd_mach_ppc_405 405 +#define bfd_mach_ppc_505 505 +#define bfd_mach_ppc_601 601 +#define bfd_mach_ppc_602 602 +#define bfd_mach_ppc_603 603 +#define bfd_mach_ppc_ec603e 6031 +#define bfd_mach_ppc_604 604 +#define bfd_mach_ppc_620 620 +#define bfd_mach_ppc_630 630 +#define bfd_mach_ppc_750 750 +#define bfd_mach_ppc_860 860 +#define bfd_mach_ppc_a35 35 +#define bfd_mach_ppc_rs64ii 642 +#define bfd_mach_ppc_rs64iii 643 +#define bfd_mach_ppc_7400 7400 +#define bfd_mach_ppc_e500 500 +#define bfd_mach_ppc_e500mc 5001 +#define bfd_mach_ppc_e500mc64 5005 +#define bfd_mach_ppc_e5500 5006 +#define bfd_mach_ppc_e6500 5007 +#define bfd_mach_ppc_titan 83 +#define bfd_mach_ppc_vle 84 + bfd_arch_rs6000, /* IBM RS/6000. */ +#define bfd_mach_rs6k 6000 +#define bfd_mach_rs6k_rs1 6001 +#define bfd_mach_rs6k_rsc 6003 +#define bfd_mach_rs6k_rs2 6002 + bfd_arch_hppa, /* HP PA RISC. */ +#define bfd_mach_hppa10 10 +#define bfd_mach_hppa11 11 +#define bfd_mach_hppa20 20 +#define bfd_mach_hppa20w 25 + bfd_arch_d10v, /* Mitsubishi D10V. */ +#define bfd_mach_d10v 1 +#define bfd_mach_d10v_ts2 2 +#define bfd_mach_d10v_ts3 3 + bfd_arch_d30v, /* Mitsubishi D30V. */ + bfd_arch_dlx, /* DLX. */ + bfd_arch_m68hc11, /* Motorola 68HC11. */ + bfd_arch_m68hc12, /* Motorola 68HC12. */ +#define bfd_mach_m6812_default 0 +#define bfd_mach_m6812 1 +#define bfd_mach_m6812s 2 + bfd_arch_m9s12x, /* Freescale S12X. */ + bfd_arch_m9s12xg, /* Freescale XGATE. */ + bfd_arch_s12z, /* Freescale S12Z. */ +#define bfd_mach_s12z_default 0 + bfd_arch_z8k, /* Zilog Z8000. */ +#define bfd_mach_z8001 1 +#define bfd_mach_z8002 2 + bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH). */ +#define bfd_mach_sh 1 +#define bfd_mach_sh2 0x20 +#define bfd_mach_sh_dsp 0x2d +#define bfd_mach_sh2a 0x2a +#define bfd_mach_sh2a_nofpu 0x2b +#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1 +#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2 +#define bfd_mach_sh2a_or_sh4 0x2a3 +#define bfd_mach_sh2a_or_sh3e 0x2a4 +#define bfd_mach_sh2e 0x2e +#define bfd_mach_sh3 0x30 +#define bfd_mach_sh3_nommu 0x31 +#define bfd_mach_sh3_dsp 0x3d +#define bfd_mach_sh3e 0x3e +#define bfd_mach_sh4 0x40 +#define bfd_mach_sh4_nofpu 0x41 +#define bfd_mach_sh4_nommu_nofpu 0x42 +#define bfd_mach_sh4a 0x4a +#define bfd_mach_sh4a_nofpu 0x4b +#define bfd_mach_sh4al_dsp 0x4d + bfd_arch_alpha, /* Dec Alpha. */ +#define bfd_mach_alpha_ev4 0x10 +#define bfd_mach_alpha_ev5 0x20 +#define bfd_mach_alpha_ev6 0x30 + bfd_arch_arm, /* Advanced Risc Machines ARM. */ +#define bfd_mach_arm_unknown 0 +#define bfd_mach_arm_2 1 +#define bfd_mach_arm_2a 2 +#define bfd_mach_arm_3 3 +#define bfd_mach_arm_3M 4 +#define bfd_mach_arm_4 5 +#define bfd_mach_arm_4T 6 +#define bfd_mach_arm_5 7 +#define bfd_mach_arm_5T 8 +#define bfd_mach_arm_5TE 9 +#define bfd_mach_arm_XScale 10 +#define bfd_mach_arm_ep9312 11 +#define bfd_mach_arm_iWMMXt 12 +#define bfd_mach_arm_iWMMXt2 13 +#define bfd_mach_arm_5TEJ 14 +#define bfd_mach_arm_6 15 +#define bfd_mach_arm_6KZ 16 +#define bfd_mach_arm_6T2 17 +#define bfd_mach_arm_6K 18 +#define bfd_mach_arm_7 19 +#define bfd_mach_arm_6M 20 +#define bfd_mach_arm_6SM 21 +#define bfd_mach_arm_7EM 22 +#define bfd_mach_arm_8 23 +#define bfd_mach_arm_8R 24 +#define bfd_mach_arm_8M_BASE 25 +#define bfd_mach_arm_8M_MAIN 26 +#define bfd_mach_arm_8_1M_MAIN 27 + bfd_arch_nds32, /* Andes NDS32. */ +#define bfd_mach_n1 1 +#define bfd_mach_n1h 2 +#define bfd_mach_n1h_v2 3 +#define bfd_mach_n1h_v3 4 +#define bfd_mach_n1h_v3m 5 + bfd_arch_ns32k, /* National Semiconductors ns32000. */ + bfd_arch_tic30, /* Texas Instruments TMS320C30. */ + bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X. */ +#define bfd_mach_tic3x 30 +#define bfd_mach_tic4x 40 + bfd_arch_tic54x, /* Texas Instruments TMS320C54X. */ + bfd_arch_tic6x, /* Texas Instruments TMS320C6X. */ + bfd_arch_v850, /* NEC V850. */ + bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI). */ +#define bfd_mach_v850 1 +#define bfd_mach_v850e 'E' +#define bfd_mach_v850e1 '1' +#define bfd_mach_v850e2 0x4532 +#define bfd_mach_v850e2v3 0x45325633 +#define bfd_mach_v850e3v5 0x45335635 /* ('E'|'3'|'V'|'5'). */ + bfd_arch_arc, /* ARC Cores. */ +#define bfd_mach_arc_a4 0 +#define bfd_mach_arc_a5 1 +#define bfd_mach_arc_arc600 2 +#define bfd_mach_arc_arc601 4 +#define bfd_mach_arc_arc700 3 +#define bfd_mach_arc_arcv2 5 + bfd_arch_m32c, /* Renesas M16C/M32C. */ +#define bfd_mach_m16c 0x75 +#define bfd_mach_m32c 0x78 + bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D). */ +#define bfd_mach_m32r 1 /* For backwards compatibility. */ +#define bfd_mach_m32rx 'x' +#define bfd_mach_m32r2 '2' + bfd_arch_mn10200, /* Matsushita MN10200. */ + bfd_arch_mn10300, /* Matsushita MN10300. */ +#define bfd_mach_mn10300 300 +#define bfd_mach_am33 330 +#define bfd_mach_am33_2 332 + bfd_arch_fr30, +#define bfd_mach_fr30 0x46523330 + bfd_arch_frv, +#define bfd_mach_frv 1 +#define bfd_mach_frvsimple 2 +#define bfd_mach_fr300 300 +#define bfd_mach_fr400 400 +#define bfd_mach_fr450 450 +#define bfd_mach_frvtomcat 499 /* fr500 prototype. */ +#define bfd_mach_fr500 500 +#define bfd_mach_fr550 550 + bfd_arch_moxie, /* The moxie processor. */ +#define bfd_mach_moxie 1 + bfd_arch_ft32, /* The ft32 processor. */ +#define bfd_mach_ft32 1 +#define bfd_mach_ft32b 2 + bfd_arch_mcore, + bfd_arch_mep, +#define bfd_mach_mep 1 +#define bfd_mach_mep_h1 0x6831 +#define bfd_mach_mep_c5 0x6335 + bfd_arch_metag, +#define bfd_mach_metag 1 + bfd_arch_ia64, /* HP/Intel ia64. */ +#define bfd_mach_ia64_elf64 64 +#define bfd_mach_ia64_elf32 32 + bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */ +#define bfd_mach_ip2022 1 +#define bfd_mach_ip2022ext 2 + bfd_arch_iq2000, /* Vitesse IQ2000. */ +#define bfd_mach_iq2000 1 +#define bfd_mach_iq10 2 + bfd_arch_bpf, /* Linux eBPF. */ +#define bfd_mach_bpf 1 +#define bfd_mach_xbpf 2 + bfd_arch_epiphany, /* Adapteva EPIPHANY. */ +#define bfd_mach_epiphany16 1 +#define bfd_mach_epiphany32 2 + bfd_arch_mt, +#define bfd_mach_ms1 1 +#define bfd_mach_mrisc2 2 +#define bfd_mach_ms2 3 + bfd_arch_pj, + bfd_arch_avr, /* Atmel AVR microcontrollers. */ +#define bfd_mach_avr1 1 +#define bfd_mach_avr2 2 +#define bfd_mach_avr25 25 +#define bfd_mach_avr3 3 +#define bfd_mach_avr31 31 +#define bfd_mach_avr35 35 +#define bfd_mach_avr4 4 +#define bfd_mach_avr5 5 +#define bfd_mach_avr51 51 +#define bfd_mach_avr6 6 +#define bfd_mach_avrtiny 100 +#define bfd_mach_avrxmega1 101 +#define bfd_mach_avrxmega2 102 +#define bfd_mach_avrxmega3 103 +#define bfd_mach_avrxmega4 104 +#define bfd_mach_avrxmega5 105 +#define bfd_mach_avrxmega6 106 +#define bfd_mach_avrxmega7 107 + bfd_arch_bfin, /* ADI Blackfin. */ +#define bfd_mach_bfin 1 + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */ +#define bfd_mach_cr16 1 + bfd_arch_crx, /* National Semiconductor CRX. */ +#define bfd_mach_crx 1 + bfd_arch_cris, /* Axis CRIS. */ +#define bfd_mach_cris_v0_v10 255 +#define bfd_mach_cris_v32 32 +#define bfd_mach_cris_v10_v32 1032 + bfd_arch_riscv, +#define bfd_mach_riscv32 132 +#define bfd_mach_riscv64 164 + bfd_arch_rl78, +#define bfd_mach_rl78 0x75 + bfd_arch_rx, /* Renesas RX. */ +#define bfd_mach_rx 0x75 +#define bfd_mach_rx_v2 0x76 +#define bfd_mach_rx_v3 0x77 + bfd_arch_s390, /* IBM s390. */ +#define bfd_mach_s390_31 31 +#define bfd_mach_s390_64 64 + bfd_arch_score, /* Sunplus score. */ +#define bfd_mach_score3 3 +#define bfd_mach_score7 7 + bfd_arch_mmix, /* Donald Knuth's educational processor. */ + bfd_arch_xstormy16, +#define bfd_mach_xstormy16 1 + bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */ +#define bfd_mach_msp11 11 +#define bfd_mach_msp110 110 +#define bfd_mach_msp12 12 +#define bfd_mach_msp13 13 +#define bfd_mach_msp14 14 +#define bfd_mach_msp15 15 +#define bfd_mach_msp16 16 +#define bfd_mach_msp20 20 +#define bfd_mach_msp21 21 +#define bfd_mach_msp22 22 +#define bfd_mach_msp23 23 +#define bfd_mach_msp24 24 +#define bfd_mach_msp26 26 +#define bfd_mach_msp31 31 +#define bfd_mach_msp32 32 +#define bfd_mach_msp33 33 +#define bfd_mach_msp41 41 +#define bfd_mach_msp42 42 +#define bfd_mach_msp43 43 +#define bfd_mach_msp44 44 +#define bfd_mach_msp430x 45 +#define bfd_mach_msp46 46 +#define bfd_mach_msp47 47 +#define bfd_mach_msp54 54 + bfd_arch_xc16x, /* Infineon's XC16X Series. */ +#define bfd_mach_xc16x 1 +#define bfd_mach_xc16xl 2 +#define bfd_mach_xc16xs 3 + bfd_arch_xgate, /* Freescale XGATE. */ +#define bfd_mach_xgate 1 + bfd_arch_xtensa, /* Tensilica's Xtensa cores. */ +#define bfd_mach_xtensa 1 + bfd_arch_z80, +/* Zilog Z80 without undocumented opcodes. */ +#define bfd_mach_z80strict 1 +/* Zilog Z180: successor with additional instructions, but without + halves of ix and iy. */ +#define bfd_mach_z180 2 +/* Zilog Z80 with ixl, ixh, iyl, and iyh. */ +#define bfd_mach_z80 3 +/* Zilog eZ80 (successor of Z80 & Z180) in Z80 (16-bit address) mode. */ +#define bfd_mach_ez80_z80 4 +/* Zilog eZ80 (successor of Z80 & Z180) in ADL (24-bit address) mode. */ +#define bfd_mach_ez80_adl 5 +/* Z80N */ +#define bfd_mach_z80n 6 +/* Zilog Z80 with all undocumented instructions. */ +#define bfd_mach_z80full 7 +/* GameBoy Z80 (reduced instruction set). */ +#define bfd_mach_gbz80 8 +/* ASCII R800: successor with multiplication. */ +#define bfd_mach_r800 11 + bfd_arch_lm32, /* Lattice Mico32. */ +#define bfd_mach_lm32 1 + bfd_arch_microblaze,/* Xilinx MicroBlaze. */ + bfd_arch_tilepro, /* Tilera TILEPro. */ + bfd_arch_tilegx, /* Tilera TILE-Gx. */ +#define bfd_mach_tilepro 1 +#define bfd_mach_tilegx 1 +#define bfd_mach_tilegx32 2 + bfd_arch_aarch64, /* AArch64. */ +#define bfd_mach_aarch64 0 +#define bfd_mach_aarch64_8R 1 +#define bfd_mach_aarch64_ilp32 32 + bfd_arch_nios2, /* Nios II. */ +#define bfd_mach_nios2 0 +#define bfd_mach_nios2r1 1 +#define bfd_mach_nios2r2 2 + bfd_arch_visium, /* Visium. */ +#define bfd_mach_visium 1 + bfd_arch_wasm32, /* WebAssembly. */ +#define bfd_mach_wasm32 1 + bfd_arch_pru, /* PRU. */ +#define bfd_mach_pru 0 + bfd_arch_nfp, /* Netronome Flow Processor */ +#define bfd_mach_nfp3200 0x3200 +#define bfd_mach_nfp6000 0x6000 + bfd_arch_csky, /* C-SKY. */ +#define bfd_mach_ck_unknown 0 +#define bfd_mach_ck510 1 +#define bfd_mach_ck610 2 +#define bfd_mach_ck801 3 +#define bfd_mach_ck802 4 +#define bfd_mach_ck803 5 +#define bfd_mach_ck807 6 +#define bfd_mach_ck810 7 +#define bfd_mach_ck860 8 + bfd_arch_last + }; + +typedef struct bfd_arch_info +{ + int bits_per_word; + int bits_per_address; + int bits_per_byte; + enum bfd_architecture arch; + unsigned long mach; + const char *arch_name; + const char *printable_name; + unsigned int section_align_power; + /* TRUE if this is the default machine for the architecture. + The default arch should be the first entry for an arch so that + all the entries for that arch can be accessed via <>. */ + bfd_boolean the_default; + const struct bfd_arch_info * (*compatible) (const struct bfd_arch_info *, + const struct bfd_arch_info *); + + bfd_boolean (*scan) (const struct bfd_arch_info *, const char *); + + /* Allocate via bfd_malloc and return a fill buffer of size COUNT. If + IS_BIGENDIAN is TRUE, the order of bytes is big endian. If CODE is + TRUE, the buffer contains code. */ + void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian, + bfd_boolean code); + + const struct bfd_arch_info *next; + + /* On some architectures the offset for a relocation can point into + the middle of an instruction. This field specifies the maximum + offset such a relocation can have (in octets). This affects the + behaviour of the disassembler, since a value greater than zero + means that it may need to disassemble an instruction twice, once + to get its length and then a second time to display it. If the + value is negative then this has to be done for every single + instruction, regardless of the offset of the reloc. */ + signed int max_reloc_offset_into_insn; +} +bfd_arch_info_type; + +const char *bfd_printable_name (bfd *abfd); + +const bfd_arch_info_type *bfd_scan_arch (const char *string); + +const char **bfd_arch_list (void); + +const bfd_arch_info_type *bfd_arch_get_compatible + (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns); + +void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg); + +bfd_boolean bfd_default_set_arch_mach + (bfd *abfd, enum bfd_architecture arch, unsigned long mach); + +enum bfd_architecture bfd_get_arch (const bfd *abfd); + +unsigned long bfd_get_mach (const bfd *abfd); + +unsigned int bfd_arch_bits_per_byte (const bfd *abfd); + +unsigned int bfd_arch_bits_per_address (const bfd *abfd); + +const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd); + +const bfd_arch_info_type *bfd_lookup_arch + (enum bfd_architecture arch, unsigned long machine); + +const char *bfd_printable_arch_mach + (enum bfd_architecture arch, unsigned long machine); + +unsigned int bfd_octets_per_byte (const bfd *abfd, + const asection *sec); + +unsigned int bfd_arch_mach_octets_per_byte + (enum bfd_architecture arch, unsigned long machine); + +/* Extracted from reloc.c. */ + +typedef enum bfd_reloc_status +{ + /* No errors detected. Note - the value 2 is used so that it + will not be mistaken for the boolean TRUE or FALSE values. */ + bfd_reloc_ok = 2, + + /* The relocation was performed, but there was an overflow. */ + bfd_reloc_overflow, + + /* The address to relocate was not within the section supplied. */ + bfd_reloc_outofrange, + + /* Used by special functions. */ + bfd_reloc_continue, + + /* Unsupported relocation size requested. */ + bfd_reloc_notsupported, + + /* Unused. */ + bfd_reloc_other, + + /* The symbol to relocate against was undefined. */ + bfd_reloc_undefined, + + /* The relocation was performed, but may not be ok. If this type is + returned, the error_message argument to bfd_perform_relocation + will be set. */ + bfd_reloc_dangerous + } + bfd_reloc_status_type; + +typedef const struct reloc_howto_struct reloc_howto_type; + +typedef struct reloc_cache_entry +{ + /* A pointer into the canonical table of pointers. */ + struct bfd_symbol **sym_ptr_ptr; + + /* offset in section. */ + bfd_size_type address; + + /* addend for relocation value. */ + bfd_vma addend; + + /* Pointer to how to perform the required relocation. */ + reloc_howto_type *howto; + +} +arelent; + + +enum complain_overflow +{ + /* Do not complain on overflow. */ + complain_overflow_dont, + + /* Complain if the value overflows when considered as a signed + number one bit larger than the field. ie. A bitfield of N bits + is allowed to represent -2**n to 2**n-1. */ + complain_overflow_bitfield, + + /* Complain if the value overflows when considered as a signed + number. */ + complain_overflow_signed, + + /* Complain if the value overflows when considered as an + unsigned number. */ + complain_overflow_unsigned +}; +struct reloc_howto_struct +{ + /* The type field has mainly a documentary use - the back end can + do what it wants with it, though normally the back end's idea of + an external reloc number is stored in this field. */ + unsigned int type; + + /* The encoded size of the item to be relocated. This is *not* a + power-of-two measure. Use bfd_get_reloc_size to find the size + of the item in bytes. */ + unsigned int size:3; + + /* The number of bits in the field to be relocated. This is used + when doing overflow checking. */ + unsigned int bitsize:7; + + /* The value the final relocation is shifted right by. This drops + unwanted data from the relocation. */ + unsigned int rightshift:6; + + /* The bit position of the reloc value in the destination. + The relocated value is left shifted by this amount. */ + unsigned int bitpos:6; + + /* What type of overflow error should be checked for when + relocating. */ + ENUM_BITFIELD (complain_overflow) complain_on_overflow:2; + + /* The relocation value should be negated before applying. */ + unsigned int negate:1; + + /* The relocation is relative to the item being relocated. */ + unsigned int pc_relative:1; + + /* Some formats record a relocation addend in the section contents + rather than with the relocation. For ELF formats this is the + distinction between USE_REL and USE_RELA (though the code checks + for USE_REL == 1/0). The value of this field is TRUE if the + addend is recorded with the section contents; when performing a + partial link (ld -r) the section contents (the data) will be + modified. The value of this field is FALSE if addends are + recorded with the relocation (in arelent.addend); when performing + a partial link the relocation will be modified. + All relocations for all ELF USE_RELA targets should set this field + to FALSE (values of TRUE should be looked on with suspicion). + However, the converse is not true: not all relocations of all ELF + USE_REL targets set this field to TRUE. Why this is so is peculiar + to each particular target. For relocs that aren't used in partial + links (e.g. GOT stuff) it doesn't matter what this is set to. */ + unsigned int partial_inplace:1; + + /* When some formats create PC relative instructions, they leave + the value of the pc of the place being relocated in the offset + slot of the instruction, so that a PC relative relocation can + be made just by adding in an ordinary offset (e.g., sun3 a.out). + Some formats leave the displacement part of an instruction + empty (e.g., ELF); this flag signals the fact. */ + unsigned int pcrel_offset:1; + + /* src_mask selects the part of the instruction (or data) to be used + in the relocation sum. If the target relocations don't have an + addend in the reloc, eg. ELF USE_REL, src_mask will normally equal + dst_mask to extract the addend from the section contents. If + relocations do have an addend in the reloc, eg. ELF USE_RELA, this + field should normally be zero. Non-zero values for ELF USE_RELA + targets should be viewed with suspicion as normally the value in + the dst_mask part of the section contents should be ignored. */ + bfd_vma src_mask; + + /* dst_mask selects which parts of the instruction (or data) are + replaced with a relocated value. */ + bfd_vma dst_mask; + + /* If this field is non null, then the supplied function is + called rather than the normal function. This allows really + strange relocation methods to be accommodated. */ + bfd_reloc_status_type (*special_function) + (bfd *, arelent *, struct bfd_symbol *, void *, asection *, + bfd *, char **); + + /* The textual name of the relocation type. */ + const char *name; +}; + +#define HOWTO(type, right, size, bits, pcrel, left, ovf, func, name, \ + inplace, src_mask, dst_mask, pcrel_off) \ + { (unsigned) type, size < 0 ? -size : size, bits, right, left, ovf, \ + size < 0, pcrel, inplace, pcrel_off, src_mask, dst_mask, func, name } +#define EMPTY_HOWTO(C) \ + HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \ + NULL, FALSE, 0, 0, FALSE) + +unsigned int bfd_get_reloc_size (reloc_howto_type *); + +typedef struct relent_chain +{ + arelent relent; + struct relent_chain *next; +} +arelent_chain; + +bfd_reloc_status_type bfd_check_overflow + (enum complain_overflow how, + unsigned int bitsize, + unsigned int rightshift, + unsigned int addrsize, + bfd_vma relocation); + +bfd_boolean bfd_reloc_offset_in_range + (reloc_howto_type *howto, + bfd *abfd, + asection *section, + bfd_size_type offset); + +bfd_reloc_status_type bfd_perform_relocation + (bfd *abfd, + arelent *reloc_entry, + void *data, + asection *input_section, + bfd *output_bfd, + char **error_message); + +bfd_reloc_status_type bfd_install_relocation + (bfd *abfd, + arelent *reloc_entry, + void *data, bfd_vma data_start, + asection *input_section, + char **error_message); + +enum bfd_reloc_code_real { + _dummy_first_bfd_reloc_code_real, + + +/* Basic absolute relocations of N bits. */ + BFD_RELOC_64, + BFD_RELOC_32, + BFD_RELOC_26, + BFD_RELOC_24, + BFD_RELOC_16, + BFD_RELOC_14, + BFD_RELOC_8, + +/* PC-relative relocations. Sometimes these are relative to the address +of the relocation itself; sometimes they are relative to the start of +the section containing the relocation. It depends on the specific target. */ + BFD_RELOC_64_PCREL, + BFD_RELOC_32_PCREL, + BFD_RELOC_24_PCREL, + BFD_RELOC_16_PCREL, + BFD_RELOC_12_PCREL, + BFD_RELOC_8_PCREL, + +/* Section relative relocations. Some targets need this for DWARF2. */ + BFD_RELOC_32_SECREL, + +/* For ELF. */ + BFD_RELOC_32_GOT_PCREL, + BFD_RELOC_16_GOT_PCREL, + BFD_RELOC_8_GOT_PCREL, + BFD_RELOC_32_GOTOFF, + BFD_RELOC_16_GOTOFF, + BFD_RELOC_LO16_GOTOFF, + BFD_RELOC_HI16_GOTOFF, + BFD_RELOC_HI16_S_GOTOFF, + BFD_RELOC_8_GOTOFF, + BFD_RELOC_64_PLT_PCREL, + BFD_RELOC_32_PLT_PCREL, + BFD_RELOC_24_PLT_PCREL, + BFD_RELOC_16_PLT_PCREL, + BFD_RELOC_8_PLT_PCREL, + BFD_RELOC_64_PLTOFF, + BFD_RELOC_32_PLTOFF, + BFD_RELOC_16_PLTOFF, + BFD_RELOC_LO16_PLTOFF, + BFD_RELOC_HI16_PLTOFF, + BFD_RELOC_HI16_S_PLTOFF, + BFD_RELOC_8_PLTOFF, + +/* Size relocations. */ + BFD_RELOC_SIZE32, + BFD_RELOC_SIZE64, + +/* Relocations used by 68K ELF. */ + BFD_RELOC_68K_GLOB_DAT, + BFD_RELOC_68K_JMP_SLOT, + BFD_RELOC_68K_RELATIVE, + BFD_RELOC_68K_TLS_GD32, + BFD_RELOC_68K_TLS_GD16, + BFD_RELOC_68K_TLS_GD8, + BFD_RELOC_68K_TLS_LDM32, + BFD_RELOC_68K_TLS_LDM16, + BFD_RELOC_68K_TLS_LDM8, + BFD_RELOC_68K_TLS_LDO32, + BFD_RELOC_68K_TLS_LDO16, + BFD_RELOC_68K_TLS_LDO8, + BFD_RELOC_68K_TLS_IE32, + BFD_RELOC_68K_TLS_IE16, + BFD_RELOC_68K_TLS_IE8, + BFD_RELOC_68K_TLS_LE32, + BFD_RELOC_68K_TLS_LE16, + BFD_RELOC_68K_TLS_LE8, + +/* Linkage-table relative. */ + BFD_RELOC_32_BASEREL, + BFD_RELOC_16_BASEREL, + BFD_RELOC_LO16_BASEREL, + BFD_RELOC_HI16_BASEREL, + BFD_RELOC_HI16_S_BASEREL, + BFD_RELOC_8_BASEREL, + BFD_RELOC_RVA, + +/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */ + BFD_RELOC_8_FFnn, + +/* These PC-relative relocations are stored as word displacements -- +i.e., byte displacements shifted right two bits. The 30-bit word +displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the +SPARC. (SPARC tools generally refer to this as <>.) The +signed 16-bit displacement is used on the MIPS, and the 23-bit +displacement is used on the Alpha. */ + BFD_RELOC_32_PCREL_S2, + BFD_RELOC_16_PCREL_S2, + BFD_RELOC_23_PCREL_S2, + +/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of +the target word. These are used on the SPARC. */ + BFD_RELOC_HI22, + BFD_RELOC_LO10, + +/* For systems that allocate a Global Pointer register, these are +displacements off that register. These relocation types are +handled specially, because the value the register will have is +decided relatively late. */ + BFD_RELOC_GPREL16, + BFD_RELOC_GPREL32, + +/* SPARC ELF relocations. There is probably some overlap with other +relocation types already defined. */ + BFD_RELOC_NONE, + BFD_RELOC_SPARC_WDISP22, + BFD_RELOC_SPARC22, + BFD_RELOC_SPARC13, + BFD_RELOC_SPARC_GOT10, + BFD_RELOC_SPARC_GOT13, + BFD_RELOC_SPARC_GOT22, + BFD_RELOC_SPARC_PC10, + BFD_RELOC_SPARC_PC22, + BFD_RELOC_SPARC_WPLT30, + BFD_RELOC_SPARC_COPY, + BFD_RELOC_SPARC_GLOB_DAT, + BFD_RELOC_SPARC_JMP_SLOT, + BFD_RELOC_SPARC_RELATIVE, + BFD_RELOC_SPARC_UA16, + BFD_RELOC_SPARC_UA32, + BFD_RELOC_SPARC_UA64, + BFD_RELOC_SPARC_GOTDATA_HIX22, + BFD_RELOC_SPARC_GOTDATA_LOX10, + BFD_RELOC_SPARC_GOTDATA_OP_HIX22, + BFD_RELOC_SPARC_GOTDATA_OP_LOX10, + BFD_RELOC_SPARC_GOTDATA_OP, + BFD_RELOC_SPARC_JMP_IREL, + BFD_RELOC_SPARC_IRELATIVE, + +/* I think these are specific to SPARC a.out (e.g., Sun 4). */ + BFD_RELOC_SPARC_BASE13, + BFD_RELOC_SPARC_BASE22, + +/* SPARC64 relocations */ +#define BFD_RELOC_SPARC_64 BFD_RELOC_64 + BFD_RELOC_SPARC_10, + BFD_RELOC_SPARC_11, + BFD_RELOC_SPARC_OLO10, + BFD_RELOC_SPARC_HH22, + BFD_RELOC_SPARC_HM10, + BFD_RELOC_SPARC_LM22, + BFD_RELOC_SPARC_PC_HH22, + BFD_RELOC_SPARC_PC_HM10, + BFD_RELOC_SPARC_PC_LM22, + BFD_RELOC_SPARC_WDISP16, + BFD_RELOC_SPARC_WDISP19, + BFD_RELOC_SPARC_7, + BFD_RELOC_SPARC_6, + BFD_RELOC_SPARC_5, +#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL + BFD_RELOC_SPARC_PLT32, + BFD_RELOC_SPARC_PLT64, + BFD_RELOC_SPARC_HIX22, + BFD_RELOC_SPARC_LOX10, + BFD_RELOC_SPARC_H44, + BFD_RELOC_SPARC_M44, + BFD_RELOC_SPARC_L44, + BFD_RELOC_SPARC_REGISTER, + BFD_RELOC_SPARC_H34, + BFD_RELOC_SPARC_SIZE32, + BFD_RELOC_SPARC_SIZE64, + BFD_RELOC_SPARC_WDISP10, + +/* SPARC little endian relocation */ + BFD_RELOC_SPARC_REV32, + +/* SPARC TLS relocations */ + BFD_RELOC_SPARC_TLS_GD_HI22, + BFD_RELOC_SPARC_TLS_GD_LO10, + BFD_RELOC_SPARC_TLS_GD_ADD, + BFD_RELOC_SPARC_TLS_GD_CALL, + BFD_RELOC_SPARC_TLS_LDM_HI22, + BFD_RELOC_SPARC_TLS_LDM_LO10, + BFD_RELOC_SPARC_TLS_LDM_ADD, + BFD_RELOC_SPARC_TLS_LDM_CALL, + BFD_RELOC_SPARC_TLS_LDO_HIX22, + BFD_RELOC_SPARC_TLS_LDO_LOX10, + BFD_RELOC_SPARC_TLS_LDO_ADD, + BFD_RELOC_SPARC_TLS_IE_HI22, + BFD_RELOC_SPARC_TLS_IE_LO10, + BFD_RELOC_SPARC_TLS_IE_LD, + BFD_RELOC_SPARC_TLS_IE_LDX, + BFD_RELOC_SPARC_TLS_IE_ADD, + BFD_RELOC_SPARC_TLS_LE_HIX22, + BFD_RELOC_SPARC_TLS_LE_LOX10, + BFD_RELOC_SPARC_TLS_DTPMOD32, + BFD_RELOC_SPARC_TLS_DTPMOD64, + BFD_RELOC_SPARC_TLS_DTPOFF32, + BFD_RELOC_SPARC_TLS_DTPOFF64, + BFD_RELOC_SPARC_TLS_TPOFF32, + BFD_RELOC_SPARC_TLS_TPOFF64, + +/* SPU Relocations. */ + BFD_RELOC_SPU_IMM7, + BFD_RELOC_SPU_IMM8, + BFD_RELOC_SPU_IMM10, + BFD_RELOC_SPU_IMM10W, + BFD_RELOC_SPU_IMM16, + BFD_RELOC_SPU_IMM16W, + BFD_RELOC_SPU_IMM18, + BFD_RELOC_SPU_PCREL9a, + BFD_RELOC_SPU_PCREL9b, + BFD_RELOC_SPU_PCREL16, + BFD_RELOC_SPU_LO16, + BFD_RELOC_SPU_HI16, + BFD_RELOC_SPU_PPU32, + BFD_RELOC_SPU_PPU64, + BFD_RELOC_SPU_ADD_PIC, + +/* Alpha ECOFF and ELF relocations. Some of these treat the symbol or +"addend" in some special way. +For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when +writing; when reading, it will be the absolute section symbol. The +addend is the displacement in bytes of the "lda" instruction from +the "ldah" instruction (which is at the address of this reloc). */ + BFD_RELOC_ALPHA_GPDISP_HI16, + +/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as +with GPDISP_HI16 relocs. The addend is ignored when writing the +relocations out, and is filled in with the file's GP value on +reading, for convenience. */ + BFD_RELOC_ALPHA_GPDISP_LO16, + +/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16 +relocation except that there is no accompanying GPDISP_LO16 +relocation. */ + BFD_RELOC_ALPHA_GPDISP, + +/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference; +the assembler turns it into a LDQ instruction to load the address of +the symbol, and then fills in a register in the real instruction. + +The LITERAL reloc, at the LDQ instruction, refers to the .lita +section symbol. The addend is ignored when writing, but is filled +in with the file's GP value on reading, for convenience, as with the +GPDISP_LO16 reloc. + +The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16. +It should refer to the symbol to be referenced, as with 16_GOTOFF, +but it generates output not based on the position within the .got +section, but relative to the GP value chosen for the file during the +final link stage. + +The LITUSE reloc, on the instruction using the loaded address, gives +information to the linker that it might be able to use to optimize +away some literal section references. The symbol is ignored (read +as the absolute section symbol), and the "addend" indicates the type +of instruction using the register: +1 - "memory" fmt insn +2 - byte-manipulation (byte offset reg) +3 - jsr (target of branch) */ + BFD_RELOC_ALPHA_LITERAL, + BFD_RELOC_ALPHA_ELF_LITERAL, + BFD_RELOC_ALPHA_LITUSE, + +/* The HINT relocation indicates a value that should be filled into the +"hint" field of a jmp/jsr/ret instruction, for possible branch- +prediction logic which may be provided on some processors. */ + BFD_RELOC_ALPHA_HINT, + +/* The LINKAGE relocation outputs a linkage pair in the object file, +which is filled by the linker. */ + BFD_RELOC_ALPHA_LINKAGE, + +/* The CODEADDR relocation outputs a STO_CA in the object file, +which is filled by the linker. */ + BFD_RELOC_ALPHA_CODEADDR, + +/* The GPREL_HI/LO relocations together form a 32-bit offset from the +GP register. */ + BFD_RELOC_ALPHA_GPREL_HI16, + BFD_RELOC_ALPHA_GPREL_LO16, + +/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must +share a common GP, and the target address is adjusted for +STO_ALPHA_STD_GPLOAD. */ + BFD_RELOC_ALPHA_BRSGP, + +/* The NOP relocation outputs a NOP if the longword displacement +between two procedure entry points is < 2^21. */ + BFD_RELOC_ALPHA_NOP, + +/* The BSR relocation outputs a BSR if the longword displacement +between two procedure entry points is < 2^21. */ + BFD_RELOC_ALPHA_BSR, + +/* The LDA relocation outputs a LDA if the longword displacement +between two procedure entry points is < 2^16. */ + BFD_RELOC_ALPHA_LDA, + +/* The BOH relocation outputs a BSR if the longword displacement +between two procedure entry points is < 2^21, or else a hint. */ + BFD_RELOC_ALPHA_BOH, + +/* Alpha thread-local storage relocations. */ + BFD_RELOC_ALPHA_TLSGD, + BFD_RELOC_ALPHA_TLSLDM, + BFD_RELOC_ALPHA_DTPMOD64, + BFD_RELOC_ALPHA_GOTDTPREL16, + BFD_RELOC_ALPHA_DTPREL64, + BFD_RELOC_ALPHA_DTPREL_HI16, + BFD_RELOC_ALPHA_DTPREL_LO16, + BFD_RELOC_ALPHA_DTPREL16, + BFD_RELOC_ALPHA_GOTTPREL16, + BFD_RELOC_ALPHA_TPREL64, + BFD_RELOC_ALPHA_TPREL_HI16, + BFD_RELOC_ALPHA_TPREL_LO16, + BFD_RELOC_ALPHA_TPREL16, + +/* The MIPS jump instruction. */ + BFD_RELOC_MIPS_JMP, + BFD_RELOC_MICROMIPS_JMP, + +/* The MIPS16 jump instruction. */ + BFD_RELOC_MIPS16_JMP, + +/* MIPS16 GP relative reloc. */ + BFD_RELOC_MIPS16_GPREL, + +/* High 16 bits of 32-bit value; simple reloc. */ + BFD_RELOC_HI16, + +/* High 16 bits of 32-bit value but the low 16 bits will be sign +extended and added to form the final result. If the low 16 +bits form a negative number, we need to add one to the high value +to compensate for the borrow when the low bits are added. */ + BFD_RELOC_HI16_S, + +/* Low 16 bits. */ + BFD_RELOC_LO16, + +/* High 16 bits of 32-bit pc-relative value */ + BFD_RELOC_HI16_PCREL, + +/* High 16 bits of 32-bit pc-relative value, adjusted */ + BFD_RELOC_HI16_S_PCREL, + +/* Low 16 bits of pc-relative value */ + BFD_RELOC_LO16_PCREL, + +/* Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of +16-bit immediate fields */ + BFD_RELOC_MIPS16_GOT16, + BFD_RELOC_MIPS16_CALL16, + +/* MIPS16 high 16 bits of 32-bit value. */ + BFD_RELOC_MIPS16_HI16, + +/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign +extended and added to form the final result. If the low 16 +bits form a negative number, we need to add one to the high value +to compensate for the borrow when the low bits are added. */ + BFD_RELOC_MIPS16_HI16_S, + +/* MIPS16 low 16 bits. */ + BFD_RELOC_MIPS16_LO16, + +/* MIPS16 TLS relocations */ + BFD_RELOC_MIPS16_TLS_GD, + BFD_RELOC_MIPS16_TLS_LDM, + BFD_RELOC_MIPS16_TLS_DTPREL_HI16, + BFD_RELOC_MIPS16_TLS_DTPREL_LO16, + BFD_RELOC_MIPS16_TLS_GOTTPREL, + BFD_RELOC_MIPS16_TLS_TPREL_HI16, + BFD_RELOC_MIPS16_TLS_TPREL_LO16, + +/* Relocation against a MIPS literal section. */ + BFD_RELOC_MIPS_LITERAL, + BFD_RELOC_MICROMIPS_LITERAL, + +/* microMIPS PC-relative relocations. */ + BFD_RELOC_MICROMIPS_7_PCREL_S1, + BFD_RELOC_MICROMIPS_10_PCREL_S1, + BFD_RELOC_MICROMIPS_16_PCREL_S1, + +/* MIPS16 PC-relative relocation. */ + BFD_RELOC_MIPS16_16_PCREL_S1, + +/* MIPS PC-relative relocations. */ + BFD_RELOC_MIPS_21_PCREL_S2, + BFD_RELOC_MIPS_26_PCREL_S2, + BFD_RELOC_MIPS_18_PCREL_S3, + BFD_RELOC_MIPS_19_PCREL_S2, + +/* microMIPS versions of generic BFD relocs. */ + BFD_RELOC_MICROMIPS_GPREL16, + BFD_RELOC_MICROMIPS_HI16, + BFD_RELOC_MICROMIPS_HI16_S, + BFD_RELOC_MICROMIPS_LO16, + +/* MIPS ELF relocations. */ + BFD_RELOC_MIPS_GOT16, + BFD_RELOC_MICROMIPS_GOT16, + BFD_RELOC_MIPS_CALL16, + BFD_RELOC_MICROMIPS_CALL16, + BFD_RELOC_MIPS_GOT_HI16, + BFD_RELOC_MICROMIPS_GOT_HI16, + BFD_RELOC_MIPS_GOT_LO16, + BFD_RELOC_MICROMIPS_GOT_LO16, + BFD_RELOC_MIPS_CALL_HI16, + BFD_RELOC_MICROMIPS_CALL_HI16, + BFD_RELOC_MIPS_CALL_LO16, + BFD_RELOC_MICROMIPS_CALL_LO16, + BFD_RELOC_MIPS_SUB, + BFD_RELOC_MICROMIPS_SUB, + BFD_RELOC_MIPS_GOT_PAGE, + BFD_RELOC_MICROMIPS_GOT_PAGE, + BFD_RELOC_MIPS_GOT_OFST, + BFD_RELOC_MICROMIPS_GOT_OFST, + BFD_RELOC_MIPS_GOT_DISP, + BFD_RELOC_MICROMIPS_GOT_DISP, + BFD_RELOC_MIPS_SHIFT5, + BFD_RELOC_MIPS_SHIFT6, + BFD_RELOC_MIPS_INSERT_A, + BFD_RELOC_MIPS_INSERT_B, + BFD_RELOC_MIPS_DELETE, + BFD_RELOC_MIPS_HIGHEST, + BFD_RELOC_MICROMIPS_HIGHEST, + BFD_RELOC_MIPS_HIGHER, + BFD_RELOC_MICROMIPS_HIGHER, + BFD_RELOC_MIPS_SCN_DISP, + BFD_RELOC_MICROMIPS_SCN_DISP, + BFD_RELOC_MIPS_REL16, + BFD_RELOC_MIPS_RELGOT, + BFD_RELOC_MIPS_JALR, + BFD_RELOC_MICROMIPS_JALR, + BFD_RELOC_MIPS_TLS_DTPMOD32, + BFD_RELOC_MIPS_TLS_DTPREL32, + BFD_RELOC_MIPS_TLS_DTPMOD64, + BFD_RELOC_MIPS_TLS_DTPREL64, + BFD_RELOC_MIPS_TLS_GD, + BFD_RELOC_MICROMIPS_TLS_GD, + BFD_RELOC_MIPS_TLS_LDM, + BFD_RELOC_MICROMIPS_TLS_LDM, + BFD_RELOC_MIPS_TLS_DTPREL_HI16, + BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16, + BFD_RELOC_MIPS_TLS_DTPREL_LO16, + BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16, + BFD_RELOC_MIPS_TLS_GOTTPREL, + BFD_RELOC_MICROMIPS_TLS_GOTTPREL, + BFD_RELOC_MIPS_TLS_TPREL32, + BFD_RELOC_MIPS_TLS_TPREL64, + BFD_RELOC_MIPS_TLS_TPREL_HI16, + BFD_RELOC_MICROMIPS_TLS_TPREL_HI16, + BFD_RELOC_MIPS_TLS_TPREL_LO16, + BFD_RELOC_MICROMIPS_TLS_TPREL_LO16, + BFD_RELOC_MIPS_EH, + + +/* MIPS ELF relocations (VxWorks and PLT extensions). */ + BFD_RELOC_MIPS_COPY, + BFD_RELOC_MIPS_JUMP_SLOT, + + +/* Moxie ELF relocations. */ + BFD_RELOC_MOXIE_10_PCREL, + + +/* FT32 ELF relocations. */ + BFD_RELOC_FT32_10, + BFD_RELOC_FT32_20, + BFD_RELOC_FT32_17, + BFD_RELOC_FT32_18, + BFD_RELOC_FT32_RELAX, + BFD_RELOC_FT32_SC0, + BFD_RELOC_FT32_SC1, + BFD_RELOC_FT32_15, + BFD_RELOC_FT32_DIFF32, + + +/* Fujitsu Frv Relocations. */ + BFD_RELOC_FRV_LABEL16, + BFD_RELOC_FRV_LABEL24, + BFD_RELOC_FRV_LO16, + BFD_RELOC_FRV_HI16, + BFD_RELOC_FRV_GPREL12, + BFD_RELOC_FRV_GPRELU12, + BFD_RELOC_FRV_GPREL32, + BFD_RELOC_FRV_GPRELHI, + BFD_RELOC_FRV_GPRELLO, + BFD_RELOC_FRV_GOT12, + BFD_RELOC_FRV_GOTHI, + BFD_RELOC_FRV_GOTLO, + BFD_RELOC_FRV_FUNCDESC, + BFD_RELOC_FRV_FUNCDESC_GOT12, + BFD_RELOC_FRV_FUNCDESC_GOTHI, + BFD_RELOC_FRV_FUNCDESC_GOTLO, + BFD_RELOC_FRV_FUNCDESC_VALUE, + BFD_RELOC_FRV_FUNCDESC_GOTOFF12, + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI, + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO, + BFD_RELOC_FRV_GOTOFF12, + BFD_RELOC_FRV_GOTOFFHI, + BFD_RELOC_FRV_GOTOFFLO, + BFD_RELOC_FRV_GETTLSOFF, + BFD_RELOC_FRV_TLSDESC_VALUE, + BFD_RELOC_FRV_GOTTLSDESC12, + BFD_RELOC_FRV_GOTTLSDESCHI, + BFD_RELOC_FRV_GOTTLSDESCLO, + BFD_RELOC_FRV_TLSMOFF12, + BFD_RELOC_FRV_TLSMOFFHI, + BFD_RELOC_FRV_TLSMOFFLO, + BFD_RELOC_FRV_GOTTLSOFF12, + BFD_RELOC_FRV_GOTTLSOFFHI, + BFD_RELOC_FRV_GOTTLSOFFLO, + BFD_RELOC_FRV_TLSOFF, + BFD_RELOC_FRV_TLSDESC_RELAX, + BFD_RELOC_FRV_GETTLSOFF_RELAX, + BFD_RELOC_FRV_TLSOFF_RELAX, + BFD_RELOC_FRV_TLSMOFF, + + +/* This is a 24bit GOT-relative reloc for the mn10300. */ + BFD_RELOC_MN10300_GOTOFF24, + +/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes +in the instruction. */ + BFD_RELOC_MN10300_GOT32, + +/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes +in the instruction. */ + BFD_RELOC_MN10300_GOT24, + +/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes +in the instruction. */ + BFD_RELOC_MN10300_GOT16, + +/* Copy symbol at runtime. */ + BFD_RELOC_MN10300_COPY, + +/* Create GOT entry. */ + BFD_RELOC_MN10300_GLOB_DAT, + +/* Create PLT entry. */ + BFD_RELOC_MN10300_JMP_SLOT, + +/* Adjust by program base. */ + BFD_RELOC_MN10300_RELATIVE, + +/* Together with another reloc targeted at the same location, +allows for a value that is the difference of two symbols +in the same section. */ + BFD_RELOC_MN10300_SYM_DIFF, + +/* The addend of this reloc is an alignment power that must +be honoured at the offset's location, regardless of linker +relaxation. */ + BFD_RELOC_MN10300_ALIGN, + +/* Various TLS-related relocations. */ + BFD_RELOC_MN10300_TLS_GD, + BFD_RELOC_MN10300_TLS_LD, + BFD_RELOC_MN10300_TLS_LDO, + BFD_RELOC_MN10300_TLS_GOTIE, + BFD_RELOC_MN10300_TLS_IE, + BFD_RELOC_MN10300_TLS_LE, + BFD_RELOC_MN10300_TLS_DTPMOD, + BFD_RELOC_MN10300_TLS_DTPOFF, + BFD_RELOC_MN10300_TLS_TPOFF, + +/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the +instruction. */ + BFD_RELOC_MN10300_32_PCREL, + +/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the +instruction. */ + BFD_RELOC_MN10300_16_PCREL, + + +/* i386/elf relocations */ + BFD_RELOC_386_GOT32, + BFD_RELOC_386_PLT32, + BFD_RELOC_386_COPY, + BFD_RELOC_386_GLOB_DAT, + BFD_RELOC_386_JUMP_SLOT, + BFD_RELOC_386_RELATIVE, + BFD_RELOC_386_GOTOFF, + BFD_RELOC_386_GOTPC, + BFD_RELOC_386_TLS_TPOFF, + BFD_RELOC_386_TLS_IE, + BFD_RELOC_386_TLS_GOTIE, + BFD_RELOC_386_TLS_LE, + BFD_RELOC_386_TLS_GD, + BFD_RELOC_386_TLS_LDM, + BFD_RELOC_386_TLS_LDO_32, + BFD_RELOC_386_TLS_IE_32, + BFD_RELOC_386_TLS_LE_32, + BFD_RELOC_386_TLS_DTPMOD32, + BFD_RELOC_386_TLS_DTPOFF32, + BFD_RELOC_386_TLS_TPOFF32, + BFD_RELOC_386_TLS_GOTDESC, + BFD_RELOC_386_TLS_DESC_CALL, + BFD_RELOC_386_TLS_DESC, + BFD_RELOC_386_IRELATIVE, + BFD_RELOC_386_GOT32X, + +/* x86-64/elf relocations */ + BFD_RELOC_X86_64_GOT32, + BFD_RELOC_X86_64_PLT32, + BFD_RELOC_X86_64_COPY, + BFD_RELOC_X86_64_GLOB_DAT, + BFD_RELOC_X86_64_JUMP_SLOT, + BFD_RELOC_X86_64_RELATIVE, + BFD_RELOC_X86_64_GOTPCREL, + BFD_RELOC_X86_64_32S, + BFD_RELOC_X86_64_DTPMOD64, + BFD_RELOC_X86_64_DTPOFF64, + BFD_RELOC_X86_64_TPOFF64, + BFD_RELOC_X86_64_TLSGD, + BFD_RELOC_X86_64_TLSLD, + BFD_RELOC_X86_64_DTPOFF32, + BFD_RELOC_X86_64_GOTTPOFF, + BFD_RELOC_X86_64_TPOFF32, + BFD_RELOC_X86_64_GOTOFF64, + BFD_RELOC_X86_64_GOTPC32, + BFD_RELOC_X86_64_GOT64, + BFD_RELOC_X86_64_GOTPCREL64, + BFD_RELOC_X86_64_GOTPC64, + BFD_RELOC_X86_64_GOTPLT64, + BFD_RELOC_X86_64_PLTOFF64, + BFD_RELOC_X86_64_GOTPC32_TLSDESC, + BFD_RELOC_X86_64_TLSDESC_CALL, + BFD_RELOC_X86_64_TLSDESC, + BFD_RELOC_X86_64_IRELATIVE, + BFD_RELOC_X86_64_PC32_BND, + BFD_RELOC_X86_64_PLT32_BND, + BFD_RELOC_X86_64_GOTPCRELX, + BFD_RELOC_X86_64_REX_GOTPCRELX, + +/* ns32k relocations */ + BFD_RELOC_NS32K_IMM_8, + BFD_RELOC_NS32K_IMM_16, + BFD_RELOC_NS32K_IMM_32, + BFD_RELOC_NS32K_IMM_8_PCREL, + BFD_RELOC_NS32K_IMM_16_PCREL, + BFD_RELOC_NS32K_IMM_32_PCREL, + BFD_RELOC_NS32K_DISP_8, + BFD_RELOC_NS32K_DISP_16, + BFD_RELOC_NS32K_DISP_32, + BFD_RELOC_NS32K_DISP_8_PCREL, + BFD_RELOC_NS32K_DISP_16_PCREL, + BFD_RELOC_NS32K_DISP_32_PCREL, + +/* PDP11 relocations */ + BFD_RELOC_PDP11_DISP_8_PCREL, + BFD_RELOC_PDP11_DISP_6_PCREL, + +/* Picojava relocs. Not all of these appear in object files. */ + BFD_RELOC_PJ_CODE_HI16, + BFD_RELOC_PJ_CODE_LO16, + BFD_RELOC_PJ_CODE_DIR16, + BFD_RELOC_PJ_CODE_DIR32, + BFD_RELOC_PJ_CODE_REL16, + BFD_RELOC_PJ_CODE_REL32, + +/* Power(rs6000) and PowerPC relocations. */ + BFD_RELOC_PPC_B26, + BFD_RELOC_PPC_BA26, + BFD_RELOC_PPC_TOC16, + BFD_RELOC_PPC_B16, + BFD_RELOC_PPC_B16_BRTAKEN, + BFD_RELOC_PPC_B16_BRNTAKEN, + BFD_RELOC_PPC_BA16, + BFD_RELOC_PPC_BA16_BRTAKEN, + BFD_RELOC_PPC_BA16_BRNTAKEN, + BFD_RELOC_PPC_COPY, + BFD_RELOC_PPC_GLOB_DAT, + BFD_RELOC_PPC_JMP_SLOT, + BFD_RELOC_PPC_RELATIVE, + BFD_RELOC_PPC_LOCAL24PC, + BFD_RELOC_PPC_EMB_NADDR32, + BFD_RELOC_PPC_EMB_NADDR16, + BFD_RELOC_PPC_EMB_NADDR16_LO, + BFD_RELOC_PPC_EMB_NADDR16_HI, + BFD_RELOC_PPC_EMB_NADDR16_HA, + BFD_RELOC_PPC_EMB_SDAI16, + BFD_RELOC_PPC_EMB_SDA2I16, + BFD_RELOC_PPC_EMB_SDA2REL, + BFD_RELOC_PPC_EMB_SDA21, + BFD_RELOC_PPC_EMB_MRKREF, + BFD_RELOC_PPC_EMB_RELSEC16, + BFD_RELOC_PPC_EMB_RELST_LO, + BFD_RELOC_PPC_EMB_RELST_HI, + BFD_RELOC_PPC_EMB_RELST_HA, + BFD_RELOC_PPC_EMB_BIT_FLD, + BFD_RELOC_PPC_EMB_RELSDA, + BFD_RELOC_PPC_VLE_REL8, + BFD_RELOC_PPC_VLE_REL15, + BFD_RELOC_PPC_VLE_REL24, + BFD_RELOC_PPC_VLE_LO16A, + BFD_RELOC_PPC_VLE_LO16D, + BFD_RELOC_PPC_VLE_HI16A, + BFD_RELOC_PPC_VLE_HI16D, + BFD_RELOC_PPC_VLE_HA16A, + BFD_RELOC_PPC_VLE_HA16D, + BFD_RELOC_PPC_VLE_SDA21, + BFD_RELOC_PPC_VLE_SDA21_LO, + BFD_RELOC_PPC_VLE_SDAREL_LO16A, + BFD_RELOC_PPC_VLE_SDAREL_LO16D, + BFD_RELOC_PPC_VLE_SDAREL_HI16A, + BFD_RELOC_PPC_VLE_SDAREL_HI16D, + BFD_RELOC_PPC_VLE_SDAREL_HA16A, + BFD_RELOC_PPC_VLE_SDAREL_HA16D, + BFD_RELOC_PPC_16DX_HA, + BFD_RELOC_PPC_REL16DX_HA, + BFD_RELOC_PPC64_HIGHER, + BFD_RELOC_PPC64_HIGHER_S, + BFD_RELOC_PPC64_HIGHEST, + BFD_RELOC_PPC64_HIGHEST_S, + BFD_RELOC_PPC64_TOC16_LO, + BFD_RELOC_PPC64_TOC16_HI, + BFD_RELOC_PPC64_TOC16_HA, + BFD_RELOC_PPC64_TOC, + BFD_RELOC_PPC64_PLTGOT16, + BFD_RELOC_PPC64_PLTGOT16_LO, + BFD_RELOC_PPC64_PLTGOT16_HI, + BFD_RELOC_PPC64_PLTGOT16_HA, + BFD_RELOC_PPC64_ADDR16_DS, + BFD_RELOC_PPC64_ADDR16_LO_DS, + BFD_RELOC_PPC64_GOT16_DS, + BFD_RELOC_PPC64_GOT16_LO_DS, + BFD_RELOC_PPC64_PLT16_LO_DS, + BFD_RELOC_PPC64_SECTOFF_DS, + BFD_RELOC_PPC64_SECTOFF_LO_DS, + BFD_RELOC_PPC64_TOC16_DS, + BFD_RELOC_PPC64_TOC16_LO_DS, + BFD_RELOC_PPC64_PLTGOT16_DS, + BFD_RELOC_PPC64_PLTGOT16_LO_DS, + BFD_RELOC_PPC64_ADDR16_HIGH, + BFD_RELOC_PPC64_ADDR16_HIGHA, + BFD_RELOC_PPC64_REL16_HIGH, + BFD_RELOC_PPC64_REL16_HIGHA, + BFD_RELOC_PPC64_REL16_HIGHER, + BFD_RELOC_PPC64_REL16_HIGHERA, + BFD_RELOC_PPC64_REL16_HIGHEST, + BFD_RELOC_PPC64_REL16_HIGHESTA, + BFD_RELOC_PPC64_ADDR64_LOCAL, + BFD_RELOC_PPC64_ENTRY, + BFD_RELOC_PPC64_REL24_NOTOC, + BFD_RELOC_PPC64_D34, + BFD_RELOC_PPC64_D34_LO, + BFD_RELOC_PPC64_D34_HI30, + BFD_RELOC_PPC64_D34_HA30, + BFD_RELOC_PPC64_PCREL34, + BFD_RELOC_PPC64_GOT_PCREL34, + BFD_RELOC_PPC64_PLT_PCREL34, + BFD_RELOC_PPC64_ADDR16_HIGHER34, + BFD_RELOC_PPC64_ADDR16_HIGHERA34, + BFD_RELOC_PPC64_ADDR16_HIGHEST34, + BFD_RELOC_PPC64_ADDR16_HIGHESTA34, + BFD_RELOC_PPC64_REL16_HIGHER34, + BFD_RELOC_PPC64_REL16_HIGHERA34, + BFD_RELOC_PPC64_REL16_HIGHEST34, + BFD_RELOC_PPC64_REL16_HIGHESTA34, + BFD_RELOC_PPC64_D28, + BFD_RELOC_PPC64_PCREL28, + +/* PowerPC and PowerPC64 thread-local storage relocations. */ + BFD_RELOC_PPC_TLS, + BFD_RELOC_PPC_TLSGD, + BFD_RELOC_PPC_TLSLD, + BFD_RELOC_PPC_DTPMOD, + BFD_RELOC_PPC_TPREL16, + BFD_RELOC_PPC_TPREL16_LO, + BFD_RELOC_PPC_TPREL16_HI, + BFD_RELOC_PPC_TPREL16_HA, + BFD_RELOC_PPC_TPREL, + BFD_RELOC_PPC_DTPREL16, + BFD_RELOC_PPC_DTPREL16_LO, + BFD_RELOC_PPC_DTPREL16_HI, + BFD_RELOC_PPC_DTPREL16_HA, + BFD_RELOC_PPC_DTPREL, + BFD_RELOC_PPC_GOT_TLSGD16, + BFD_RELOC_PPC_GOT_TLSGD16_LO, + BFD_RELOC_PPC_GOT_TLSGD16_HI, + BFD_RELOC_PPC_GOT_TLSGD16_HA, + BFD_RELOC_PPC_GOT_TLSLD16, + BFD_RELOC_PPC_GOT_TLSLD16_LO, + BFD_RELOC_PPC_GOT_TLSLD16_HI, + BFD_RELOC_PPC_GOT_TLSLD16_HA, + BFD_RELOC_PPC_GOT_TPREL16, + BFD_RELOC_PPC_GOT_TPREL16_LO, + BFD_RELOC_PPC_GOT_TPREL16_HI, + BFD_RELOC_PPC_GOT_TPREL16_HA, + BFD_RELOC_PPC_GOT_DTPREL16, + BFD_RELOC_PPC_GOT_DTPREL16_LO, + BFD_RELOC_PPC_GOT_DTPREL16_HI, + BFD_RELOC_PPC_GOT_DTPREL16_HA, + BFD_RELOC_PPC64_TPREL16_DS, + BFD_RELOC_PPC64_TPREL16_LO_DS, + BFD_RELOC_PPC64_TPREL16_HIGH, + BFD_RELOC_PPC64_TPREL16_HIGHA, + BFD_RELOC_PPC64_TPREL16_HIGHER, + BFD_RELOC_PPC64_TPREL16_HIGHERA, + BFD_RELOC_PPC64_TPREL16_HIGHEST, + BFD_RELOC_PPC64_TPREL16_HIGHESTA, + BFD_RELOC_PPC64_DTPREL16_DS, + BFD_RELOC_PPC64_DTPREL16_LO_DS, + BFD_RELOC_PPC64_DTPREL16_HIGH, + BFD_RELOC_PPC64_DTPREL16_HIGHA, + BFD_RELOC_PPC64_DTPREL16_HIGHER, + BFD_RELOC_PPC64_DTPREL16_HIGHERA, + BFD_RELOC_PPC64_DTPREL16_HIGHEST, + BFD_RELOC_PPC64_DTPREL16_HIGHESTA, + BFD_RELOC_PPC64_TPREL34, + BFD_RELOC_PPC64_DTPREL34, + BFD_RELOC_PPC64_GOT_TLSGD_PCREL34, + BFD_RELOC_PPC64_GOT_TLSLD_PCREL34, + BFD_RELOC_PPC64_GOT_TPREL_PCREL34, + BFD_RELOC_PPC64_GOT_DTPREL_PCREL34, + BFD_RELOC_PPC64_TLS_PCREL, + +/* IBM 370/390 relocations */ + BFD_RELOC_I370_D12, + +/* The type of reloc used to build a constructor table - at the moment +probably a 32 bit wide absolute relocation, but the target can choose. +It generally does map to one of the other relocation types. */ + BFD_RELOC_CTOR, + +/* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are +not stored in the instruction. */ + BFD_RELOC_ARM_PCREL_BRANCH, + +/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is +not stored in the instruction. The 2nd lowest bit comes from a 1 bit +field in the instruction. */ + BFD_RELOC_ARM_PCREL_BLX, + +/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is +not stored in the instruction. The 2nd lowest bit comes from a 1 bit +field in the instruction. */ + BFD_RELOC_THUMB_PCREL_BLX, + +/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */ + BFD_RELOC_ARM_PCREL_CALL, + +/* ARM 26-bit pc-relative branch for B or conditional BL instruction. */ + BFD_RELOC_ARM_PCREL_JUMP, + +/* ARM 5-bit pc-relative branch for Branch Future instructions. */ + BFD_RELOC_THUMB_PCREL_BRANCH5, + +/* ARM 6-bit pc-relative branch for BFCSEL instruction. */ + BFD_RELOC_THUMB_PCREL_BFCSEL, + +/* ARM 17-bit pc-relative branch for Branch Future instructions. */ + BFD_RELOC_ARM_THUMB_BF17, + +/* ARM 13-bit pc-relative branch for BFCSEL instruction. */ + BFD_RELOC_ARM_THUMB_BF13, + +/* ARM 19-bit pc-relative branch for Branch Future Link instruction. */ + BFD_RELOC_ARM_THUMB_BF19, + +/* ARM 12-bit pc-relative branch for Low Overhead Loop instructions. */ + BFD_RELOC_ARM_THUMB_LOOP12, + +/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches. +The lowest bit must be zero and is not stored in the instruction. +Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an +"nn" one smaller in all cases. Note further that BRANCH23 +corresponds to R_ARM_THM_CALL. */ + BFD_RELOC_THUMB_PCREL_BRANCH7, + BFD_RELOC_THUMB_PCREL_BRANCH9, + BFD_RELOC_THUMB_PCREL_BRANCH12, + BFD_RELOC_THUMB_PCREL_BRANCH20, + BFD_RELOC_THUMB_PCREL_BRANCH23, + BFD_RELOC_THUMB_PCREL_BRANCH25, + +/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */ + BFD_RELOC_ARM_OFFSET_IMM, + +/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */ + BFD_RELOC_ARM_THUMB_OFFSET, + +/* Pc-relative or absolute relocation depending on target. Used for +entries in .init_array sections. */ + BFD_RELOC_ARM_TARGET1, + +/* Read-only segment base relative address. */ + BFD_RELOC_ARM_ROSEGREL32, + +/* Data segment base relative address. */ + BFD_RELOC_ARM_SBREL32, + +/* This reloc is used for references to RTTI data from exception handling +tables. The actual definition depends on the target. It may be a +pc-relative or some form of GOT-indirect relocation. */ + BFD_RELOC_ARM_TARGET2, + +/* 31-bit PC relative address. */ + BFD_RELOC_ARM_PREL31, + +/* Low and High halfword relocations for MOVW and MOVT instructions. */ + BFD_RELOC_ARM_MOVW, + BFD_RELOC_ARM_MOVT, + BFD_RELOC_ARM_MOVW_PCREL, + BFD_RELOC_ARM_MOVT_PCREL, + BFD_RELOC_ARM_THUMB_MOVW, + BFD_RELOC_ARM_THUMB_MOVT, + BFD_RELOC_ARM_THUMB_MOVW_PCREL, + BFD_RELOC_ARM_THUMB_MOVT_PCREL, + +/* ARM FDPIC specific relocations. */ + BFD_RELOC_ARM_GOTFUNCDESC, + BFD_RELOC_ARM_GOTOFFFUNCDESC, + BFD_RELOC_ARM_FUNCDESC, + BFD_RELOC_ARM_FUNCDESC_VALUE, + BFD_RELOC_ARM_TLS_GD32_FDPIC, + BFD_RELOC_ARM_TLS_LDM32_FDPIC, + BFD_RELOC_ARM_TLS_IE32_FDPIC, + +/* Relocations for setting up GOTs and PLTs for shared libraries. */ + BFD_RELOC_ARM_JUMP_SLOT, + BFD_RELOC_ARM_GLOB_DAT, + BFD_RELOC_ARM_GOT32, + BFD_RELOC_ARM_PLT32, + BFD_RELOC_ARM_RELATIVE, + BFD_RELOC_ARM_GOTOFF, + BFD_RELOC_ARM_GOTPC, + BFD_RELOC_ARM_GOT_PREL, + +/* ARM thread-local storage relocations. */ + BFD_RELOC_ARM_TLS_GD32, + BFD_RELOC_ARM_TLS_LDO32, + BFD_RELOC_ARM_TLS_LDM32, + BFD_RELOC_ARM_TLS_DTPOFF32, + BFD_RELOC_ARM_TLS_DTPMOD32, + BFD_RELOC_ARM_TLS_TPOFF32, + BFD_RELOC_ARM_TLS_IE32, + BFD_RELOC_ARM_TLS_LE32, + BFD_RELOC_ARM_TLS_GOTDESC, + BFD_RELOC_ARM_TLS_CALL, + BFD_RELOC_ARM_THM_TLS_CALL, + BFD_RELOC_ARM_TLS_DESCSEQ, + BFD_RELOC_ARM_THM_TLS_DESCSEQ, + BFD_RELOC_ARM_TLS_DESC, + +/* ARM group relocations. */ + BFD_RELOC_ARM_ALU_PC_G0_NC, + BFD_RELOC_ARM_ALU_PC_G0, + BFD_RELOC_ARM_ALU_PC_G1_NC, + BFD_RELOC_ARM_ALU_PC_G1, + BFD_RELOC_ARM_ALU_PC_G2, + BFD_RELOC_ARM_LDR_PC_G0, + BFD_RELOC_ARM_LDR_PC_G1, + BFD_RELOC_ARM_LDR_PC_G2, + BFD_RELOC_ARM_LDRS_PC_G0, + BFD_RELOC_ARM_LDRS_PC_G1, + BFD_RELOC_ARM_LDRS_PC_G2, + BFD_RELOC_ARM_LDC_PC_G0, + BFD_RELOC_ARM_LDC_PC_G1, + BFD_RELOC_ARM_LDC_PC_G2, + BFD_RELOC_ARM_ALU_SB_G0_NC, + BFD_RELOC_ARM_ALU_SB_G0, + BFD_RELOC_ARM_ALU_SB_G1_NC, + BFD_RELOC_ARM_ALU_SB_G1, + BFD_RELOC_ARM_ALU_SB_G2, + BFD_RELOC_ARM_LDR_SB_G0, + BFD_RELOC_ARM_LDR_SB_G1, + BFD_RELOC_ARM_LDR_SB_G2, + BFD_RELOC_ARM_LDRS_SB_G0, + BFD_RELOC_ARM_LDRS_SB_G1, + BFD_RELOC_ARM_LDRS_SB_G2, + BFD_RELOC_ARM_LDC_SB_G0, + BFD_RELOC_ARM_LDC_SB_G1, + BFD_RELOC_ARM_LDC_SB_G2, + +/* Annotation of BX instructions. */ + BFD_RELOC_ARM_V4BX, + +/* ARM support for STT_GNU_IFUNC. */ + BFD_RELOC_ARM_IRELATIVE, + +/* Thumb1 relocations to support execute-only code. */ + BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC, + BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC, + BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC, + BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC, + +/* These relocs are only used within the ARM assembler. They are not +(at present) written to any object files. */ + BFD_RELOC_ARM_IMMEDIATE, + BFD_RELOC_ARM_ADRL_IMMEDIATE, + BFD_RELOC_ARM_T32_IMMEDIATE, + BFD_RELOC_ARM_T32_ADD_IMM, + BFD_RELOC_ARM_T32_IMM12, + BFD_RELOC_ARM_T32_ADD_PC12, + BFD_RELOC_ARM_SHIFT_IMM, + BFD_RELOC_ARM_SMC, + BFD_RELOC_ARM_HVC, + BFD_RELOC_ARM_SWI, + BFD_RELOC_ARM_MULTI, + BFD_RELOC_ARM_CP_OFF_IMM, + BFD_RELOC_ARM_CP_OFF_IMM_S2, + BFD_RELOC_ARM_T32_CP_OFF_IMM, + BFD_RELOC_ARM_T32_CP_OFF_IMM_S2, + BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM, + BFD_RELOC_ARM_ADR_IMM, + BFD_RELOC_ARM_LDR_IMM, + BFD_RELOC_ARM_LITERAL, + BFD_RELOC_ARM_IN_POOL, + BFD_RELOC_ARM_OFFSET_IMM8, + BFD_RELOC_ARM_T32_OFFSET_U8, + BFD_RELOC_ARM_T32_OFFSET_IMM, + BFD_RELOC_ARM_HWLITERAL, + BFD_RELOC_ARM_THUMB_ADD, + BFD_RELOC_ARM_THUMB_IMM, + BFD_RELOC_ARM_THUMB_SHIFT, + +/* Renesas / SuperH SH relocs. Not all of these appear in object files. */ + BFD_RELOC_SH_PCDISP8BY2, + BFD_RELOC_SH_PCDISP12BY2, + BFD_RELOC_SH_IMM3, + BFD_RELOC_SH_IMM3U, + BFD_RELOC_SH_DISP12, + BFD_RELOC_SH_DISP12BY2, + BFD_RELOC_SH_DISP12BY4, + BFD_RELOC_SH_DISP12BY8, + BFD_RELOC_SH_DISP20, + BFD_RELOC_SH_DISP20BY8, + BFD_RELOC_SH_IMM4, + BFD_RELOC_SH_IMM4BY2, + BFD_RELOC_SH_IMM4BY4, + BFD_RELOC_SH_IMM8, + BFD_RELOC_SH_IMM8BY2, + BFD_RELOC_SH_IMM8BY4, + BFD_RELOC_SH_PCRELIMM8BY2, + BFD_RELOC_SH_PCRELIMM8BY4, + BFD_RELOC_SH_SWITCH16, + BFD_RELOC_SH_SWITCH32, + BFD_RELOC_SH_USES, + BFD_RELOC_SH_COUNT, + BFD_RELOC_SH_ALIGN, + BFD_RELOC_SH_CODE, + BFD_RELOC_SH_DATA, + BFD_RELOC_SH_LABEL, + BFD_RELOC_SH_LOOP_START, + BFD_RELOC_SH_LOOP_END, + BFD_RELOC_SH_COPY, + BFD_RELOC_SH_GLOB_DAT, + BFD_RELOC_SH_JMP_SLOT, + BFD_RELOC_SH_RELATIVE, + BFD_RELOC_SH_GOTPC, + BFD_RELOC_SH_GOT_LOW16, + BFD_RELOC_SH_GOT_MEDLOW16, + BFD_RELOC_SH_GOT_MEDHI16, + BFD_RELOC_SH_GOT_HI16, + BFD_RELOC_SH_GOTPLT_LOW16, + BFD_RELOC_SH_GOTPLT_MEDLOW16, + BFD_RELOC_SH_GOTPLT_MEDHI16, + BFD_RELOC_SH_GOTPLT_HI16, + BFD_RELOC_SH_PLT_LOW16, + BFD_RELOC_SH_PLT_MEDLOW16, + BFD_RELOC_SH_PLT_MEDHI16, + BFD_RELOC_SH_PLT_HI16, + BFD_RELOC_SH_GOTOFF_LOW16, + BFD_RELOC_SH_GOTOFF_MEDLOW16, + BFD_RELOC_SH_GOTOFF_MEDHI16, + BFD_RELOC_SH_GOTOFF_HI16, + BFD_RELOC_SH_GOTPC_LOW16, + BFD_RELOC_SH_GOTPC_MEDLOW16, + BFD_RELOC_SH_GOTPC_MEDHI16, + BFD_RELOC_SH_GOTPC_HI16, + BFD_RELOC_SH_COPY64, + BFD_RELOC_SH_GLOB_DAT64, + BFD_RELOC_SH_JMP_SLOT64, + BFD_RELOC_SH_RELATIVE64, + BFD_RELOC_SH_GOT10BY4, + BFD_RELOC_SH_GOT10BY8, + BFD_RELOC_SH_GOTPLT10BY4, + BFD_RELOC_SH_GOTPLT10BY8, + BFD_RELOC_SH_GOTPLT32, + BFD_RELOC_SH_SHMEDIA_CODE, + BFD_RELOC_SH_IMMU5, + BFD_RELOC_SH_IMMS6, + BFD_RELOC_SH_IMMS6BY32, + BFD_RELOC_SH_IMMU6, + BFD_RELOC_SH_IMMS10, + BFD_RELOC_SH_IMMS10BY2, + BFD_RELOC_SH_IMMS10BY4, + BFD_RELOC_SH_IMMS10BY8, + BFD_RELOC_SH_IMMS16, + BFD_RELOC_SH_IMMU16, + BFD_RELOC_SH_IMM_LOW16, + BFD_RELOC_SH_IMM_LOW16_PCREL, + BFD_RELOC_SH_IMM_MEDLOW16, + BFD_RELOC_SH_IMM_MEDLOW16_PCREL, + BFD_RELOC_SH_IMM_MEDHI16, + BFD_RELOC_SH_IMM_MEDHI16_PCREL, + BFD_RELOC_SH_IMM_HI16, + BFD_RELOC_SH_IMM_HI16_PCREL, + BFD_RELOC_SH_PT_16, + BFD_RELOC_SH_TLS_GD_32, + BFD_RELOC_SH_TLS_LD_32, + BFD_RELOC_SH_TLS_LDO_32, + BFD_RELOC_SH_TLS_IE_32, + BFD_RELOC_SH_TLS_LE_32, + BFD_RELOC_SH_TLS_DTPMOD32, + BFD_RELOC_SH_TLS_DTPOFF32, + BFD_RELOC_SH_TLS_TPOFF32, + BFD_RELOC_SH_GOT20, + BFD_RELOC_SH_GOTOFF20, + BFD_RELOC_SH_GOTFUNCDESC, + BFD_RELOC_SH_GOTFUNCDESC20, + BFD_RELOC_SH_GOTOFFFUNCDESC, + BFD_RELOC_SH_GOTOFFFUNCDESC20, + BFD_RELOC_SH_FUNCDESC, + +/* ARC relocs. */ + BFD_RELOC_ARC_NONE, + BFD_RELOC_ARC_8, + BFD_RELOC_ARC_16, + BFD_RELOC_ARC_24, + BFD_RELOC_ARC_32, + BFD_RELOC_ARC_N8, + BFD_RELOC_ARC_N16, + BFD_RELOC_ARC_N24, + BFD_RELOC_ARC_N32, + BFD_RELOC_ARC_SDA, + BFD_RELOC_ARC_SECTOFF, + BFD_RELOC_ARC_S21H_PCREL, + BFD_RELOC_ARC_S21W_PCREL, + BFD_RELOC_ARC_S25H_PCREL, + BFD_RELOC_ARC_S25W_PCREL, + BFD_RELOC_ARC_SDA32, + BFD_RELOC_ARC_SDA_LDST, + BFD_RELOC_ARC_SDA_LDST1, + BFD_RELOC_ARC_SDA_LDST2, + BFD_RELOC_ARC_SDA16_LD, + BFD_RELOC_ARC_SDA16_LD1, + BFD_RELOC_ARC_SDA16_LD2, + BFD_RELOC_ARC_S13_PCREL, + BFD_RELOC_ARC_W, + BFD_RELOC_ARC_32_ME, + BFD_RELOC_ARC_32_ME_S, + BFD_RELOC_ARC_N32_ME, + BFD_RELOC_ARC_SECTOFF_ME, + BFD_RELOC_ARC_SDA32_ME, + BFD_RELOC_ARC_W_ME, + BFD_RELOC_AC_SECTOFF_U8, + BFD_RELOC_AC_SECTOFF_U8_1, + BFD_RELOC_AC_SECTOFF_U8_2, + BFD_RELOC_AC_SECTOFF_S9, + BFD_RELOC_AC_SECTOFF_S9_1, + BFD_RELOC_AC_SECTOFF_S9_2, + BFD_RELOC_ARC_SECTOFF_ME_1, + BFD_RELOC_ARC_SECTOFF_ME_2, + BFD_RELOC_ARC_SECTOFF_1, + BFD_RELOC_ARC_SECTOFF_2, + BFD_RELOC_ARC_SDA_12, + BFD_RELOC_ARC_SDA16_ST2, + BFD_RELOC_ARC_32_PCREL, + BFD_RELOC_ARC_PC32, + BFD_RELOC_ARC_GOT32, + BFD_RELOC_ARC_GOTPC32, + BFD_RELOC_ARC_PLT32, + BFD_RELOC_ARC_COPY, + BFD_RELOC_ARC_GLOB_DAT, + BFD_RELOC_ARC_JMP_SLOT, + BFD_RELOC_ARC_RELATIVE, + BFD_RELOC_ARC_GOTOFF, + BFD_RELOC_ARC_GOTPC, + BFD_RELOC_ARC_S21W_PCREL_PLT, + BFD_RELOC_ARC_S25H_PCREL_PLT, + BFD_RELOC_ARC_TLS_DTPMOD, + BFD_RELOC_ARC_TLS_TPOFF, + BFD_RELOC_ARC_TLS_GD_GOT, + BFD_RELOC_ARC_TLS_GD_LD, + BFD_RELOC_ARC_TLS_GD_CALL, + BFD_RELOC_ARC_TLS_IE_GOT, + BFD_RELOC_ARC_TLS_DTPOFF, + BFD_RELOC_ARC_TLS_DTPOFF_S9, + BFD_RELOC_ARC_TLS_LE_S9, + BFD_RELOC_ARC_TLS_LE_32, + BFD_RELOC_ARC_S25W_PCREL_PLT, + BFD_RELOC_ARC_S21H_PCREL_PLT, + BFD_RELOC_ARC_NPS_CMEM16, + BFD_RELOC_ARC_JLI_SECTOFF, + +/* ADI Blackfin 16 bit immediate absolute reloc. */ + BFD_RELOC_BFIN_16_IMM, + +/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */ + BFD_RELOC_BFIN_16_HIGH, + +/* ADI Blackfin 'a' part of LSETUP. */ + BFD_RELOC_BFIN_4_PCREL, + +/* ADI Blackfin. */ + BFD_RELOC_BFIN_5_PCREL, + +/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */ + BFD_RELOC_BFIN_16_LOW, + +/* ADI Blackfin. */ + BFD_RELOC_BFIN_10_PCREL, + +/* ADI Blackfin 'b' part of LSETUP. */ + BFD_RELOC_BFIN_11_PCREL, + +/* ADI Blackfin. */ + BFD_RELOC_BFIN_12_PCREL_JUMP, + +/* ADI Blackfin Short jump, pcrel. */ + BFD_RELOC_BFIN_12_PCREL_JUMP_S, + +/* ADI Blackfin Call.x not implemented. */ + BFD_RELOC_BFIN_24_PCREL_CALL_X, + +/* ADI Blackfin Long Jump pcrel. */ + BFD_RELOC_BFIN_24_PCREL_JUMP_L, + +/* ADI Blackfin FD-PIC relocations. */ + BFD_RELOC_BFIN_GOT17M4, + BFD_RELOC_BFIN_GOTHI, + BFD_RELOC_BFIN_GOTLO, + BFD_RELOC_BFIN_FUNCDESC, + BFD_RELOC_BFIN_FUNCDESC_GOT17M4, + BFD_RELOC_BFIN_FUNCDESC_GOTHI, + BFD_RELOC_BFIN_FUNCDESC_GOTLO, + BFD_RELOC_BFIN_FUNCDESC_VALUE, + BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4, + BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI, + BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO, + BFD_RELOC_BFIN_GOTOFF17M4, + BFD_RELOC_BFIN_GOTOFFHI, + BFD_RELOC_BFIN_GOTOFFLO, + +/* ADI Blackfin GOT relocation. */ + BFD_RELOC_BFIN_GOT, + +/* ADI Blackfin PLTPC relocation. */ + BFD_RELOC_BFIN_PLTPC, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_PUSH, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_CONST, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_ADD, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_SUB, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_MULT, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_DIV, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_MOD, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_LSHIFT, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_RSHIFT, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_AND, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_OR, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_XOR, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_LAND, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_LOR, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_LEN, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_NEG, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_COMP, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_PAGE, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_HWPAGE, + +/* ADI Blackfin arithmetic relocation. */ + BFD_ARELOC_BFIN_ADDR, + +/* Mitsubishi D10V relocs. +This is a 10-bit reloc with the right 2 bits +assumed to be 0. */ + BFD_RELOC_D10V_10_PCREL_R, + +/* Mitsubishi D10V relocs. +This is a 10-bit reloc with the right 2 bits +assumed to be 0. This is the same as the previous reloc +except it is in the left container, i.e., +shifted left 15 bits. */ + BFD_RELOC_D10V_10_PCREL_L, + +/* This is an 18-bit reloc with the right 2 bits +assumed to be 0. */ + BFD_RELOC_D10V_18, + +/* This is an 18-bit reloc with the right 2 bits +assumed to be 0. */ + BFD_RELOC_D10V_18_PCREL, + +/* Mitsubishi D30V relocs. +This is a 6-bit absolute reloc. */ + BFD_RELOC_D30V_6, + +/* This is a 6-bit pc-relative reloc with +the right 3 bits assumed to be 0. */ + BFD_RELOC_D30V_9_PCREL, + +/* This is a 6-bit pc-relative reloc with +the right 3 bits assumed to be 0. Same +as the previous reloc but on the right side +of the container. */ + BFD_RELOC_D30V_9_PCREL_R, + +/* This is a 12-bit absolute reloc with the +right 3 bitsassumed to be 0. */ + BFD_RELOC_D30V_15, + +/* This is a 12-bit pc-relative reloc with +the right 3 bits assumed to be 0. */ + BFD_RELOC_D30V_15_PCREL, + +/* This is a 12-bit pc-relative reloc with +the right 3 bits assumed to be 0. Same +as the previous reloc but on the right side +of the container. */ + BFD_RELOC_D30V_15_PCREL_R, + +/* This is an 18-bit absolute reloc with +the right 3 bits assumed to be 0. */ + BFD_RELOC_D30V_21, + +/* This is an 18-bit pc-relative reloc with +the right 3 bits assumed to be 0. */ + BFD_RELOC_D30V_21_PCREL, + +/* This is an 18-bit pc-relative reloc with +the right 3 bits assumed to be 0. Same +as the previous reloc but on the right side +of the container. */ + BFD_RELOC_D30V_21_PCREL_R, + +/* This is a 32-bit absolute reloc. */ + BFD_RELOC_D30V_32, + +/* This is a 32-bit pc-relative reloc. */ + BFD_RELOC_D30V_32_PCREL, + +/* DLX relocs */ + BFD_RELOC_DLX_HI16_S, + +/* DLX relocs */ + BFD_RELOC_DLX_LO16, + +/* DLX relocs */ + BFD_RELOC_DLX_JMP26, + +/* Renesas M16C/M32C Relocations. */ + BFD_RELOC_M32C_HI8, + BFD_RELOC_M32C_RL_JUMP, + BFD_RELOC_M32C_RL_1ADDR, + BFD_RELOC_M32C_RL_2ADDR, + +/* Renesas M32R (formerly Mitsubishi M32R) relocs. +This is a 24 bit absolute address. */ + BFD_RELOC_M32R_24, + +/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */ + BFD_RELOC_M32R_10_PCREL, + +/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */ + BFD_RELOC_M32R_18_PCREL, + +/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */ + BFD_RELOC_M32R_26_PCREL, + +/* This is a 16-bit reloc containing the high 16 bits of an address +used when the lower 16 bits are treated as unsigned. */ + BFD_RELOC_M32R_HI16_ULO, + +/* This is a 16-bit reloc containing the high 16 bits of an address +used when the lower 16 bits are treated as signed. */ + BFD_RELOC_M32R_HI16_SLO, + +/* This is a 16-bit reloc containing the lower 16 bits of an address. */ + BFD_RELOC_M32R_LO16, + +/* This is a 16-bit reloc containing the small data area offset for use in +add3, load, and store instructions. */ + BFD_RELOC_M32R_SDA16, + +/* For PIC. */ + BFD_RELOC_M32R_GOT24, + BFD_RELOC_M32R_26_PLTREL, + BFD_RELOC_M32R_COPY, + BFD_RELOC_M32R_GLOB_DAT, + BFD_RELOC_M32R_JMP_SLOT, + BFD_RELOC_M32R_RELATIVE, + BFD_RELOC_M32R_GOTOFF, + BFD_RELOC_M32R_GOTOFF_HI_ULO, + BFD_RELOC_M32R_GOTOFF_HI_SLO, + BFD_RELOC_M32R_GOTOFF_LO, + BFD_RELOC_M32R_GOTPC24, + BFD_RELOC_M32R_GOT16_HI_ULO, + BFD_RELOC_M32R_GOT16_HI_SLO, + BFD_RELOC_M32R_GOT16_LO, + BFD_RELOC_M32R_GOTPC_HI_ULO, + BFD_RELOC_M32R_GOTPC_HI_SLO, + BFD_RELOC_M32R_GOTPC_LO, + +/* NDS32 relocs. +This is a 20 bit absolute address. */ + BFD_RELOC_NDS32_20, + +/* This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0. */ + BFD_RELOC_NDS32_9_PCREL, + +/* This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0. */ + BFD_RELOC_NDS32_WORD_9_PCREL, + +/* This is an 15-bit reloc with the right 1 bit assumed to be 0. */ + BFD_RELOC_NDS32_15_PCREL, + +/* This is an 17-bit reloc with the right 1 bit assumed to be 0. */ + BFD_RELOC_NDS32_17_PCREL, + +/* This is a 25-bit reloc with the right 1 bit assumed to be 0. */ + BFD_RELOC_NDS32_25_PCREL, + +/* This is a 20-bit reloc containing the high 20 bits of an address +used with the lower 12 bits */ + BFD_RELOC_NDS32_HI20, + +/* This is a 12-bit reloc containing the lower 12 bits of an address +then shift right by 3. This is used with ldi,sdi... */ + BFD_RELOC_NDS32_LO12S3, + +/* This is a 12-bit reloc containing the lower 12 bits of an address +then shift left by 2. This is used with lwi,swi... */ + BFD_RELOC_NDS32_LO12S2, + +/* This is a 12-bit reloc containing the lower 12 bits of an address +then shift left by 1. This is used with lhi,shi... */ + BFD_RELOC_NDS32_LO12S1, + +/* This is a 12-bit reloc containing the lower 12 bits of an address +then shift left by 0. This is used with lbisbi... */ + BFD_RELOC_NDS32_LO12S0, + +/* This is a 12-bit reloc containing the lower 12 bits of an address +then shift left by 0. This is only used with branch relaxations */ + BFD_RELOC_NDS32_LO12S0_ORI, + +/* This is a 15-bit reloc containing the small data area 18-bit signed offset +and shift left by 3 for use in ldi, sdi... */ + BFD_RELOC_NDS32_SDA15S3, + +/* This is a 15-bit reloc containing the small data area 17-bit signed offset +and shift left by 2 for use in lwi, swi... */ + BFD_RELOC_NDS32_SDA15S2, + +/* This is a 15-bit reloc containing the small data area 16-bit signed offset +and shift left by 1 for use in lhi, shi... */ + BFD_RELOC_NDS32_SDA15S1, + +/* This is a 15-bit reloc containing the small data area 15-bit signed offset +and shift left by 0 for use in lbi, sbi... */ + BFD_RELOC_NDS32_SDA15S0, + +/* This is a 16-bit reloc containing the small data area 16-bit signed offset +and shift left by 3 */ + BFD_RELOC_NDS32_SDA16S3, + +/* This is a 17-bit reloc containing the small data area 17-bit signed offset +and shift left by 2 for use in lwi.gp, swi.gp... */ + BFD_RELOC_NDS32_SDA17S2, + +/* This is a 18-bit reloc containing the small data area 18-bit signed offset +and shift left by 1 for use in lhi.gp, shi.gp... */ + BFD_RELOC_NDS32_SDA18S1, + +/* This is a 19-bit reloc containing the small data area 19-bit signed offset +and shift left by 0 for use in lbi.gp, sbi.gp... */ + BFD_RELOC_NDS32_SDA19S0, + +/* for PIC */ + BFD_RELOC_NDS32_GOT20, + BFD_RELOC_NDS32_9_PLTREL, + BFD_RELOC_NDS32_25_PLTREL, + BFD_RELOC_NDS32_COPY, + BFD_RELOC_NDS32_GLOB_DAT, + BFD_RELOC_NDS32_JMP_SLOT, + BFD_RELOC_NDS32_RELATIVE, + BFD_RELOC_NDS32_GOTOFF, + BFD_RELOC_NDS32_GOTOFF_HI20, + BFD_RELOC_NDS32_GOTOFF_LO12, + BFD_RELOC_NDS32_GOTPC20, + BFD_RELOC_NDS32_GOT_HI20, + BFD_RELOC_NDS32_GOT_LO12, + BFD_RELOC_NDS32_GOTPC_HI20, + BFD_RELOC_NDS32_GOTPC_LO12, + +/* for relax */ + BFD_RELOC_NDS32_INSN16, + BFD_RELOC_NDS32_LABEL, + BFD_RELOC_NDS32_LONGCALL1, + BFD_RELOC_NDS32_LONGCALL2, + BFD_RELOC_NDS32_LONGCALL3, + BFD_RELOC_NDS32_LONGJUMP1, + BFD_RELOC_NDS32_LONGJUMP2, + BFD_RELOC_NDS32_LONGJUMP3, + BFD_RELOC_NDS32_LOADSTORE, + BFD_RELOC_NDS32_9_FIXED, + BFD_RELOC_NDS32_15_FIXED, + BFD_RELOC_NDS32_17_FIXED, + BFD_RELOC_NDS32_25_FIXED, + BFD_RELOC_NDS32_LONGCALL4, + BFD_RELOC_NDS32_LONGCALL5, + BFD_RELOC_NDS32_LONGCALL6, + BFD_RELOC_NDS32_LONGJUMP4, + BFD_RELOC_NDS32_LONGJUMP5, + BFD_RELOC_NDS32_LONGJUMP6, + BFD_RELOC_NDS32_LONGJUMP7, + +/* for PIC */ + BFD_RELOC_NDS32_PLTREL_HI20, + BFD_RELOC_NDS32_PLTREL_LO12, + BFD_RELOC_NDS32_PLT_GOTREL_HI20, + BFD_RELOC_NDS32_PLT_GOTREL_LO12, + +/* for floating point */ + BFD_RELOC_NDS32_SDA12S2_DP, + BFD_RELOC_NDS32_SDA12S2_SP, + BFD_RELOC_NDS32_LO12S2_DP, + BFD_RELOC_NDS32_LO12S2_SP, + +/* for dwarf2 debug_line. */ + BFD_RELOC_NDS32_DWARF2_OP1, + BFD_RELOC_NDS32_DWARF2_OP2, + BFD_RELOC_NDS32_DWARF2_LEB, + +/* for eliminate 16-bit instructions */ + BFD_RELOC_NDS32_UPDATE_TA, + +/* for PIC object relaxation */ + BFD_RELOC_NDS32_PLT_GOTREL_LO20, + BFD_RELOC_NDS32_PLT_GOTREL_LO15, + BFD_RELOC_NDS32_PLT_GOTREL_LO19, + BFD_RELOC_NDS32_GOT_LO15, + BFD_RELOC_NDS32_GOT_LO19, + BFD_RELOC_NDS32_GOTOFF_LO15, + BFD_RELOC_NDS32_GOTOFF_LO19, + BFD_RELOC_NDS32_GOT15S2, + BFD_RELOC_NDS32_GOT17S2, + +/* NDS32 relocs. +This is a 5 bit absolute address. */ + BFD_RELOC_NDS32_5, + +/* This is a 10-bit unsigned pc-relative reloc with the right 1 bit assumed to be 0. */ + BFD_RELOC_NDS32_10_UPCREL, + +/* If fp were omitted, fp can used as another gp. */ + BFD_RELOC_NDS32_SDA_FP7U2_RELA, + +/* relaxation relative relocation types */ + BFD_RELOC_NDS32_RELAX_ENTRY, + BFD_RELOC_NDS32_GOT_SUFF, + BFD_RELOC_NDS32_GOTOFF_SUFF, + BFD_RELOC_NDS32_PLT_GOT_SUFF, + BFD_RELOC_NDS32_MULCALL_SUFF, + BFD_RELOC_NDS32_PTR, + BFD_RELOC_NDS32_PTR_COUNT, + BFD_RELOC_NDS32_PTR_RESOLVED, + BFD_RELOC_NDS32_PLTBLOCK, + BFD_RELOC_NDS32_RELAX_REGION_BEGIN, + BFD_RELOC_NDS32_RELAX_REGION_END, + BFD_RELOC_NDS32_MINUEND, + BFD_RELOC_NDS32_SUBTRAHEND, + BFD_RELOC_NDS32_DIFF8, + BFD_RELOC_NDS32_DIFF16, + BFD_RELOC_NDS32_DIFF32, + BFD_RELOC_NDS32_DIFF_ULEB128, + BFD_RELOC_NDS32_EMPTY, + +/* This is a 25 bit absolute address. */ + BFD_RELOC_NDS32_25_ABS, + +/* For ex9 and ifc using. */ + BFD_RELOC_NDS32_DATA, + BFD_RELOC_NDS32_TRAN, + BFD_RELOC_NDS32_17IFC_PCREL, + BFD_RELOC_NDS32_10IFCU_PCREL, + +/* For TLS. */ + BFD_RELOC_NDS32_TPOFF, + BFD_RELOC_NDS32_GOTTPOFF, + BFD_RELOC_NDS32_TLS_LE_HI20, + BFD_RELOC_NDS32_TLS_LE_LO12, + BFD_RELOC_NDS32_TLS_LE_20, + BFD_RELOC_NDS32_TLS_LE_15S0, + BFD_RELOC_NDS32_TLS_LE_15S1, + BFD_RELOC_NDS32_TLS_LE_15S2, + BFD_RELOC_NDS32_TLS_LE_ADD, + BFD_RELOC_NDS32_TLS_LE_LS, + BFD_RELOC_NDS32_TLS_IE_HI20, + BFD_RELOC_NDS32_TLS_IE_LO12, + BFD_RELOC_NDS32_TLS_IE_LO12S2, + BFD_RELOC_NDS32_TLS_IEGP_HI20, + BFD_RELOC_NDS32_TLS_IEGP_LO12, + BFD_RELOC_NDS32_TLS_IEGP_LO12S2, + BFD_RELOC_NDS32_TLS_IEGP_LW, + BFD_RELOC_NDS32_TLS_DESC, + BFD_RELOC_NDS32_TLS_DESC_HI20, + BFD_RELOC_NDS32_TLS_DESC_LO12, + BFD_RELOC_NDS32_TLS_DESC_20, + BFD_RELOC_NDS32_TLS_DESC_SDA17S2, + BFD_RELOC_NDS32_TLS_DESC_ADD, + BFD_RELOC_NDS32_TLS_DESC_FUNC, + BFD_RELOC_NDS32_TLS_DESC_CALL, + BFD_RELOC_NDS32_TLS_DESC_MEM, + BFD_RELOC_NDS32_REMOVE, + BFD_RELOC_NDS32_GROUP, + +/* For floating load store relaxation. */ + BFD_RELOC_NDS32_LSI, + +/* This is a 9-bit reloc */ + BFD_RELOC_V850_9_PCREL, + +/* This is a 22-bit reloc */ + BFD_RELOC_V850_22_PCREL, + +/* This is a 16 bit offset from the short data area pointer. */ + BFD_RELOC_V850_SDA_16_16_OFFSET, + +/* This is a 16 bit offset (of which only 15 bits are used) from the +short data area pointer. */ + BFD_RELOC_V850_SDA_15_16_OFFSET, + +/* This is a 16 bit offset from the zero data area pointer. */ + BFD_RELOC_V850_ZDA_16_16_OFFSET, + +/* This is a 16 bit offset (of which only 15 bits are used) from the +zero data area pointer. */ + BFD_RELOC_V850_ZDA_15_16_OFFSET, + +/* This is an 8 bit offset (of which only 6 bits are used) from the +tiny data area pointer. */ + BFD_RELOC_V850_TDA_6_8_OFFSET, + +/* This is an 8bit offset (of which only 7 bits are used) from the tiny +data area pointer. */ + BFD_RELOC_V850_TDA_7_8_OFFSET, + +/* This is a 7 bit offset from the tiny data area pointer. */ + BFD_RELOC_V850_TDA_7_7_OFFSET, + +/* This is a 16 bit offset from the tiny data area pointer. */ + BFD_RELOC_V850_TDA_16_16_OFFSET, + +/* This is a 5 bit offset (of which only 4 bits are used) from the tiny +data area pointer. */ + BFD_RELOC_V850_TDA_4_5_OFFSET, + +/* This is a 4 bit offset from the tiny data area pointer. */ + BFD_RELOC_V850_TDA_4_4_OFFSET, + +/* This is a 16 bit offset from the short data area pointer, with the +bits placed non-contiguously in the instruction. */ + BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET, + +/* This is a 16 bit offset from the zero data area pointer, with the +bits placed non-contiguously in the instruction. */ + BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET, + +/* This is a 6 bit offset from the call table base pointer. */ + BFD_RELOC_V850_CALLT_6_7_OFFSET, + +/* This is a 16 bit offset from the call table base pointer. */ + BFD_RELOC_V850_CALLT_16_16_OFFSET, + +/* Used for relaxing indirect function calls. */ + BFD_RELOC_V850_LONGCALL, + +/* Used for relaxing indirect jumps. */ + BFD_RELOC_V850_LONGJUMP, + +/* Used to maintain alignment whilst relaxing. */ + BFD_RELOC_V850_ALIGN, + +/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu +instructions. */ + BFD_RELOC_V850_LO16_SPLIT_OFFSET, + +/* This is a 16-bit reloc. */ + BFD_RELOC_V850_16_PCREL, + +/* This is a 17-bit reloc. */ + BFD_RELOC_V850_17_PCREL, + +/* This is a 23-bit reloc. */ + BFD_RELOC_V850_23, + +/* This is a 32-bit reloc. */ + BFD_RELOC_V850_32_PCREL, + +/* This is a 32-bit reloc. */ + BFD_RELOC_V850_32_ABS, + +/* This is a 16-bit reloc. */ + BFD_RELOC_V850_16_SPLIT_OFFSET, + +/* This is a 16-bit reloc. */ + BFD_RELOC_V850_16_S1, + +/* Low 16 bits. 16 bit shifted by 1. */ + BFD_RELOC_V850_LO16_S1, + +/* This is a 16 bit offset from the call table base pointer. */ + BFD_RELOC_V850_CALLT_15_16_OFFSET, + +/* DSO relocations. */ + BFD_RELOC_V850_32_GOTPCREL, + +/* DSO relocations. */ + BFD_RELOC_V850_16_GOT, + +/* DSO relocations. */ + BFD_RELOC_V850_32_GOT, + +/* DSO relocations. */ + BFD_RELOC_V850_22_PLT_PCREL, + +/* DSO relocations. */ + BFD_RELOC_V850_32_PLT_PCREL, + +/* DSO relocations. */ + BFD_RELOC_V850_COPY, + +/* DSO relocations. */ + BFD_RELOC_V850_GLOB_DAT, + +/* DSO relocations. */ + BFD_RELOC_V850_JMP_SLOT, + +/* DSO relocations. */ + BFD_RELOC_V850_RELATIVE, + +/* DSO relocations. */ + BFD_RELOC_V850_16_GOTOFF, + +/* DSO relocations. */ + BFD_RELOC_V850_32_GOTOFF, + +/* start code. */ + BFD_RELOC_V850_CODE, + +/* start data in text. */ + BFD_RELOC_V850_DATA, + +/* This is a 8bit DP reloc for the tms320c30, where the most +significant 8 bits of a 24 bit word are placed into the least +significant 8 bits of the opcode. */ + BFD_RELOC_TIC30_LDP, + +/* This is a 7bit reloc for the tms320c54x, where the least +significant 7 bits of a 16 bit word are placed into the least +significant 7 bits of the opcode. */ + BFD_RELOC_TIC54X_PARTLS7, + +/* This is a 9bit DP reloc for the tms320c54x, where the most +significant 9 bits of a 16 bit word are placed into the least +significant 9 bits of the opcode. */ + BFD_RELOC_TIC54X_PARTMS9, + +/* This is an extended address 23-bit reloc for the tms320c54x. */ + BFD_RELOC_TIC54X_23, + +/* This is a 16-bit reloc for the tms320c54x, where the least +significant 16 bits of a 23-bit extended address are placed into +the opcode. */ + BFD_RELOC_TIC54X_16_OF_23, + +/* This is a reloc for the tms320c54x, where the most +significant 7 bits of a 23-bit extended address are placed into +the opcode. */ + BFD_RELOC_TIC54X_MS7_OF_23, + +/* TMS320C6000 relocations. */ + BFD_RELOC_C6000_PCR_S21, + BFD_RELOC_C6000_PCR_S12, + BFD_RELOC_C6000_PCR_S10, + BFD_RELOC_C6000_PCR_S7, + BFD_RELOC_C6000_ABS_S16, + BFD_RELOC_C6000_ABS_L16, + BFD_RELOC_C6000_ABS_H16, + BFD_RELOC_C6000_SBR_U15_B, + BFD_RELOC_C6000_SBR_U15_H, + BFD_RELOC_C6000_SBR_U15_W, + BFD_RELOC_C6000_SBR_S16, + BFD_RELOC_C6000_SBR_L16_B, + BFD_RELOC_C6000_SBR_L16_H, + BFD_RELOC_C6000_SBR_L16_W, + BFD_RELOC_C6000_SBR_H16_B, + BFD_RELOC_C6000_SBR_H16_H, + BFD_RELOC_C6000_SBR_H16_W, + BFD_RELOC_C6000_SBR_GOT_U15_W, + BFD_RELOC_C6000_SBR_GOT_L16_W, + BFD_RELOC_C6000_SBR_GOT_H16_W, + BFD_RELOC_C6000_DSBT_INDEX, + BFD_RELOC_C6000_PREL31, + BFD_RELOC_C6000_COPY, + BFD_RELOC_C6000_JUMP_SLOT, + BFD_RELOC_C6000_EHTYPE, + BFD_RELOC_C6000_PCR_H16, + BFD_RELOC_C6000_PCR_L16, + BFD_RELOC_C6000_ALIGN, + BFD_RELOC_C6000_FPHEAD, + BFD_RELOC_C6000_NOCMP, + +/* This is a 48 bit reloc for the FR30 that stores 32 bits. */ + BFD_RELOC_FR30_48, + +/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into +two sections. */ + BFD_RELOC_FR30_20, + +/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in +4 bits. */ + BFD_RELOC_FR30_6_IN_4, + +/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset +into 8 bits. */ + BFD_RELOC_FR30_8_IN_8, + +/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset +into 8 bits. */ + BFD_RELOC_FR30_9_IN_8, + +/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset +into 8 bits. */ + BFD_RELOC_FR30_10_IN_8, + +/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative +short offset into 8 bits. */ + BFD_RELOC_FR30_9_PCREL, + +/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative +short offset into 11 bits. */ + BFD_RELOC_FR30_12_PCREL, + +/* Motorola Mcore relocations. */ + BFD_RELOC_MCORE_PCREL_IMM8BY4, + BFD_RELOC_MCORE_PCREL_IMM11BY2, + BFD_RELOC_MCORE_PCREL_IMM4BY2, + BFD_RELOC_MCORE_PCREL_32, + BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2, + BFD_RELOC_MCORE_RVA, + +/* Toshiba Media Processor Relocations. */ + BFD_RELOC_MEP_8, + BFD_RELOC_MEP_16, + BFD_RELOC_MEP_32, + BFD_RELOC_MEP_PCREL8A2, + BFD_RELOC_MEP_PCREL12A2, + BFD_RELOC_MEP_PCREL17A2, + BFD_RELOC_MEP_PCREL24A2, + BFD_RELOC_MEP_PCABS24A2, + BFD_RELOC_MEP_LOW16, + BFD_RELOC_MEP_HI16U, + BFD_RELOC_MEP_HI16S, + BFD_RELOC_MEP_GPREL, + BFD_RELOC_MEP_TPREL, + BFD_RELOC_MEP_TPREL7, + BFD_RELOC_MEP_TPREL7A2, + BFD_RELOC_MEP_TPREL7A4, + BFD_RELOC_MEP_UIMM24, + BFD_RELOC_MEP_ADDR24A4, + BFD_RELOC_MEP_GNU_VTINHERIT, + BFD_RELOC_MEP_GNU_VTENTRY, + + +/* Imagination Technologies Meta relocations. */ + BFD_RELOC_METAG_HIADDR16, + BFD_RELOC_METAG_LOADDR16, + BFD_RELOC_METAG_RELBRANCH, + BFD_RELOC_METAG_GETSETOFF, + BFD_RELOC_METAG_HIOG, + BFD_RELOC_METAG_LOOG, + BFD_RELOC_METAG_REL8, + BFD_RELOC_METAG_REL16, + BFD_RELOC_METAG_HI16_GOTOFF, + BFD_RELOC_METAG_LO16_GOTOFF, + BFD_RELOC_METAG_GETSET_GOTOFF, + BFD_RELOC_METAG_GETSET_GOT, + BFD_RELOC_METAG_HI16_GOTPC, + BFD_RELOC_METAG_LO16_GOTPC, + BFD_RELOC_METAG_HI16_PLT, + BFD_RELOC_METAG_LO16_PLT, + BFD_RELOC_METAG_RELBRANCH_PLT, + BFD_RELOC_METAG_GOTOFF, + BFD_RELOC_METAG_PLT, + BFD_RELOC_METAG_COPY, + BFD_RELOC_METAG_JMP_SLOT, + BFD_RELOC_METAG_RELATIVE, + BFD_RELOC_METAG_GLOB_DAT, + BFD_RELOC_METAG_TLS_GD, + BFD_RELOC_METAG_TLS_LDM, + BFD_RELOC_METAG_TLS_LDO_HI16, + BFD_RELOC_METAG_TLS_LDO_LO16, + BFD_RELOC_METAG_TLS_LDO, + BFD_RELOC_METAG_TLS_IE, + BFD_RELOC_METAG_TLS_IENONPIC, + BFD_RELOC_METAG_TLS_IENONPIC_HI16, + BFD_RELOC_METAG_TLS_IENONPIC_LO16, + BFD_RELOC_METAG_TLS_TPOFF, + BFD_RELOC_METAG_TLS_DTPMOD, + BFD_RELOC_METAG_TLS_DTPOFF, + BFD_RELOC_METAG_TLS_LE, + BFD_RELOC_METAG_TLS_LE_HI16, + BFD_RELOC_METAG_TLS_LE_LO16, + +/* These are relocations for the GETA instruction. */ + BFD_RELOC_MMIX_GETA, + BFD_RELOC_MMIX_GETA_1, + BFD_RELOC_MMIX_GETA_2, + BFD_RELOC_MMIX_GETA_3, + +/* These are relocations for a conditional branch instruction. */ + BFD_RELOC_MMIX_CBRANCH, + BFD_RELOC_MMIX_CBRANCH_J, + BFD_RELOC_MMIX_CBRANCH_1, + BFD_RELOC_MMIX_CBRANCH_2, + BFD_RELOC_MMIX_CBRANCH_3, + +/* These are relocations for the PUSHJ instruction. */ + BFD_RELOC_MMIX_PUSHJ, + BFD_RELOC_MMIX_PUSHJ_1, + BFD_RELOC_MMIX_PUSHJ_2, + BFD_RELOC_MMIX_PUSHJ_3, + BFD_RELOC_MMIX_PUSHJ_STUBBABLE, + +/* These are relocations for the JMP instruction. */ + BFD_RELOC_MMIX_JMP, + BFD_RELOC_MMIX_JMP_1, + BFD_RELOC_MMIX_JMP_2, + BFD_RELOC_MMIX_JMP_3, + +/* This is a relocation for a relative address as in a GETA instruction or +a branch. */ + BFD_RELOC_MMIX_ADDR19, + +/* This is a relocation for a relative address as in a JMP instruction. */ + BFD_RELOC_MMIX_ADDR27, + +/* This is a relocation for an instruction field that may be a general +register or a value 0..255. */ + BFD_RELOC_MMIX_REG_OR_BYTE, + +/* This is a relocation for an instruction field that may be a general +register. */ + BFD_RELOC_MMIX_REG, + +/* This is a relocation for two instruction fields holding a register and +an offset, the equivalent of the relocation. */ + BFD_RELOC_MMIX_BASE_PLUS_OFFSET, + +/* This relocation is an assertion that the expression is not allocated as +a global register. It does not modify contents. */ + BFD_RELOC_MMIX_LOCAL, + +/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative +short offset into 7 bits. */ + BFD_RELOC_AVR_7_PCREL, + +/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative +short offset into 12 bits. */ + BFD_RELOC_AVR_13_PCREL, + +/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually +program memory address) into 16 bits. */ + BFD_RELOC_AVR_16_PM, + +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually +data memory address) into 8 bit immediate value of LDI insn. */ + BFD_RELOC_AVR_LO8_LDI, + +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit +of data memory address) into 8 bit immediate value of LDI insn. */ + BFD_RELOC_AVR_HI8_LDI, + +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit +of program memory address) into 8 bit immediate value of LDI insn. */ + BFD_RELOC_AVR_HH8_LDI, + +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit +of 32 bit value) into 8 bit immediate value of LDI insn. */ + BFD_RELOC_AVR_MS8_LDI, + +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value +(usually data memory address) into 8 bit immediate value of SUBI insn. */ + BFD_RELOC_AVR_LO8_LDI_NEG, + +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value +(high 8 bit of data memory address) into 8 bit immediate value of +SUBI insn. */ + BFD_RELOC_AVR_HI8_LDI_NEG, + +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value +(most high 8 bit of program memory address) into 8 bit immediate value +of LDI or SUBI insn. */ + BFD_RELOC_AVR_HH8_LDI_NEG, + +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb +of 32 bit value) into 8 bit immediate value of LDI insn. */ + BFD_RELOC_AVR_MS8_LDI_NEG, + +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually +command address) into 8 bit immediate value of LDI insn. */ + BFD_RELOC_AVR_LO8_LDI_PM, + +/* This is a 16 bit reloc for the AVR that stores 8 bit value +(command address) into 8 bit immediate value of LDI insn. If the address +is beyond the 128k boundary, the linker inserts a jump stub for this reloc +in the lower 128k. */ + BFD_RELOC_AVR_LO8_LDI_GS, + +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit +of command address) into 8 bit immediate value of LDI insn. */ + BFD_RELOC_AVR_HI8_LDI_PM, + +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit +of command address) into 8 bit immediate value of LDI insn. If the address +is beyond the 128k boundary, the linker inserts a jump stub for this reloc +below 128k. */ + BFD_RELOC_AVR_HI8_LDI_GS, + +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit +of command address) into 8 bit immediate value of LDI insn. */ + BFD_RELOC_AVR_HH8_LDI_PM, + +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value +(usually command address) into 8 bit immediate value of SUBI insn. */ + BFD_RELOC_AVR_LO8_LDI_PM_NEG, + +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value +(high 8 bit of 16 bit command address) into 8 bit immediate value +of SUBI insn. */ + BFD_RELOC_AVR_HI8_LDI_PM_NEG, + +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value +(high 6 bit of 22 bit command address) into 8 bit immediate +value of SUBI insn. */ + BFD_RELOC_AVR_HH8_LDI_PM_NEG, + +/* This is a 32 bit reloc for the AVR that stores 23 bit value +into 22 bits. */ + BFD_RELOC_AVR_CALL, + +/* This is a 16 bit reloc for the AVR that stores all needed bits +for absolute addressing with ldi with overflow check to linktime */ + BFD_RELOC_AVR_LDI, + +/* This is a 6 bit reloc for the AVR that stores offset for ldd/std +instructions */ + BFD_RELOC_AVR_6, + +/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw +instructions */ + BFD_RELOC_AVR_6_ADIW, + +/* This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol +in .byte lo8(symbol) */ + BFD_RELOC_AVR_8_LO, + +/* This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol +in .byte hi8(symbol) */ + BFD_RELOC_AVR_8_HI, + +/* This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol +in .byte hlo8(symbol) */ + BFD_RELOC_AVR_8_HLO, + +/* AVR relocations to mark the difference of two local symbols. +These are only needed to support linker relaxation and can be ignored +when not relaxing. The field is set to the value of the difference +assuming no relaxation. The relocation encodes the position of the +second symbol so the linker can determine whether to adjust the field +value. */ + BFD_RELOC_AVR_DIFF8, + BFD_RELOC_AVR_DIFF16, + BFD_RELOC_AVR_DIFF32, + +/* This is a 7 bit reloc for the AVR that stores SRAM address for 16bit +lds and sts instructions supported only tiny core. */ + BFD_RELOC_AVR_LDS_STS_16, + +/* This is a 6 bit reloc for the AVR that stores an I/O register +number for the IN and OUT instructions */ + BFD_RELOC_AVR_PORT6, + +/* This is a 5 bit reloc for the AVR that stores an I/O register +number for the SBIC, SBIS, SBI and CBI instructions */ + BFD_RELOC_AVR_PORT5, + +/* RISC-V relocations. */ + BFD_RELOC_RISCV_HI20, + BFD_RELOC_RISCV_PCREL_HI20, + BFD_RELOC_RISCV_PCREL_LO12_I, + BFD_RELOC_RISCV_PCREL_LO12_S, + BFD_RELOC_RISCV_LO12_I, + BFD_RELOC_RISCV_LO12_S, + BFD_RELOC_RISCV_GPREL12_I, + BFD_RELOC_RISCV_GPREL12_S, + BFD_RELOC_RISCV_TPREL_HI20, + BFD_RELOC_RISCV_TPREL_LO12_I, + BFD_RELOC_RISCV_TPREL_LO12_S, + BFD_RELOC_RISCV_TPREL_ADD, + BFD_RELOC_RISCV_CALL, + BFD_RELOC_RISCV_CALL_PLT, + BFD_RELOC_RISCV_ADD8, + BFD_RELOC_RISCV_ADD16, + BFD_RELOC_RISCV_ADD32, + BFD_RELOC_RISCV_ADD64, + BFD_RELOC_RISCV_SUB8, + BFD_RELOC_RISCV_SUB16, + BFD_RELOC_RISCV_SUB32, + BFD_RELOC_RISCV_SUB64, + BFD_RELOC_RISCV_GOT_HI20, + BFD_RELOC_RISCV_TLS_GOT_HI20, + BFD_RELOC_RISCV_TLS_GD_HI20, + BFD_RELOC_RISCV_JMP, + BFD_RELOC_RISCV_TLS_DTPMOD32, + BFD_RELOC_RISCV_TLS_DTPREL32, + BFD_RELOC_RISCV_TLS_DTPMOD64, + BFD_RELOC_RISCV_TLS_DTPREL64, + BFD_RELOC_RISCV_TLS_TPREL32, + BFD_RELOC_RISCV_TLS_TPREL64, + BFD_RELOC_RISCV_ALIGN, + BFD_RELOC_RISCV_RVC_BRANCH, + BFD_RELOC_RISCV_RVC_JUMP, + BFD_RELOC_RISCV_RVC_LUI, + BFD_RELOC_RISCV_GPREL_I, + BFD_RELOC_RISCV_GPREL_S, + BFD_RELOC_RISCV_TPREL_I, + BFD_RELOC_RISCV_TPREL_S, + BFD_RELOC_RISCV_RELAX, + BFD_RELOC_RISCV_CFA, + BFD_RELOC_RISCV_SUB6, + BFD_RELOC_RISCV_SET6, + BFD_RELOC_RISCV_SET8, + BFD_RELOC_RISCV_SET16, + BFD_RELOC_RISCV_SET32, + BFD_RELOC_RISCV_32_PCREL, + +/* Renesas RL78 Relocations. */ + BFD_RELOC_RL78_NEG8, + BFD_RELOC_RL78_NEG16, + BFD_RELOC_RL78_NEG24, + BFD_RELOC_RL78_NEG32, + BFD_RELOC_RL78_16_OP, + BFD_RELOC_RL78_24_OP, + BFD_RELOC_RL78_32_OP, + BFD_RELOC_RL78_8U, + BFD_RELOC_RL78_16U, + BFD_RELOC_RL78_24U, + BFD_RELOC_RL78_DIR3U_PCREL, + BFD_RELOC_RL78_DIFF, + BFD_RELOC_RL78_GPRELB, + BFD_RELOC_RL78_GPRELW, + BFD_RELOC_RL78_GPRELL, + BFD_RELOC_RL78_SYM, + BFD_RELOC_RL78_OP_SUBTRACT, + BFD_RELOC_RL78_OP_NEG, + BFD_RELOC_RL78_OP_AND, + BFD_RELOC_RL78_OP_SHRA, + BFD_RELOC_RL78_ABS8, + BFD_RELOC_RL78_ABS16, + BFD_RELOC_RL78_ABS16_REV, + BFD_RELOC_RL78_ABS32, + BFD_RELOC_RL78_ABS32_REV, + BFD_RELOC_RL78_ABS16U, + BFD_RELOC_RL78_ABS16UW, + BFD_RELOC_RL78_ABS16UL, + BFD_RELOC_RL78_RELAX, + BFD_RELOC_RL78_HI16, + BFD_RELOC_RL78_HI8, + BFD_RELOC_RL78_LO16, + BFD_RELOC_RL78_CODE, + BFD_RELOC_RL78_SADDR, + +/* Renesas RX Relocations. */ + BFD_RELOC_RX_NEG8, + BFD_RELOC_RX_NEG16, + BFD_RELOC_RX_NEG24, + BFD_RELOC_RX_NEG32, + BFD_RELOC_RX_16_OP, + BFD_RELOC_RX_24_OP, + BFD_RELOC_RX_32_OP, + BFD_RELOC_RX_8U, + BFD_RELOC_RX_16U, + BFD_RELOC_RX_24U, + BFD_RELOC_RX_DIR3U_PCREL, + BFD_RELOC_RX_DIFF, + BFD_RELOC_RX_GPRELB, + BFD_RELOC_RX_GPRELW, + BFD_RELOC_RX_GPRELL, + BFD_RELOC_RX_SYM, + BFD_RELOC_RX_OP_SUBTRACT, + BFD_RELOC_RX_OP_NEG, + BFD_RELOC_RX_ABS8, + BFD_RELOC_RX_ABS16, + BFD_RELOC_RX_ABS16_REV, + BFD_RELOC_RX_ABS32, + BFD_RELOC_RX_ABS32_REV, + BFD_RELOC_RX_ABS16U, + BFD_RELOC_RX_ABS16UW, + BFD_RELOC_RX_ABS16UL, + BFD_RELOC_RX_RELAX, + +/* Direct 12 bit. */ + BFD_RELOC_390_12, + +/* 12 bit GOT offset. */ + BFD_RELOC_390_GOT12, + +/* 32 bit PC relative PLT address. */ + BFD_RELOC_390_PLT32, + +/* Copy symbol at runtime. */ + BFD_RELOC_390_COPY, + +/* Create GOT entry. */ + BFD_RELOC_390_GLOB_DAT, + +/* Create PLT entry. */ + BFD_RELOC_390_JMP_SLOT, + +/* Adjust by program base. */ + BFD_RELOC_390_RELATIVE, + +/* 32 bit PC relative offset to GOT. */ + BFD_RELOC_390_GOTPC, + +/* 16 bit GOT offset. */ + BFD_RELOC_390_GOT16, + +/* PC relative 12 bit shifted by 1. */ + BFD_RELOC_390_PC12DBL, + +/* 12 bit PC rel. PLT shifted by 1. */ + BFD_RELOC_390_PLT12DBL, + +/* PC relative 16 bit shifted by 1. */ + BFD_RELOC_390_PC16DBL, + +/* 16 bit PC rel. PLT shifted by 1. */ + BFD_RELOC_390_PLT16DBL, + +/* PC relative 24 bit shifted by 1. */ + BFD_RELOC_390_PC24DBL, + +/* 24 bit PC rel. PLT shifted by 1. */ + BFD_RELOC_390_PLT24DBL, + +/* PC relative 32 bit shifted by 1. */ + BFD_RELOC_390_PC32DBL, + +/* 32 bit PC rel. PLT shifted by 1. */ + BFD_RELOC_390_PLT32DBL, + +/* 32 bit PC rel. GOT shifted by 1. */ + BFD_RELOC_390_GOTPCDBL, + +/* 64 bit GOT offset. */ + BFD_RELOC_390_GOT64, + +/* 64 bit PC relative PLT address. */ + BFD_RELOC_390_PLT64, + +/* 32 bit rel. offset to GOT entry. */ + BFD_RELOC_390_GOTENT, + +/* 64 bit offset to GOT. */ + BFD_RELOC_390_GOTOFF64, + +/* 12-bit offset to symbol-entry within GOT, with PLT handling. */ + BFD_RELOC_390_GOTPLT12, + +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */ + BFD_RELOC_390_GOTPLT16, + +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */ + BFD_RELOC_390_GOTPLT32, + +/* 64-bit offset to symbol-entry within GOT, with PLT handling. */ + BFD_RELOC_390_GOTPLT64, + +/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */ + BFD_RELOC_390_GOTPLTENT, + +/* 16-bit rel. offset from the GOT to a PLT entry. */ + BFD_RELOC_390_PLTOFF16, + +/* 32-bit rel. offset from the GOT to a PLT entry. */ + BFD_RELOC_390_PLTOFF32, + +/* 64-bit rel. offset from the GOT to a PLT entry. */ + BFD_RELOC_390_PLTOFF64, + +/* s390 tls relocations. */ + BFD_RELOC_390_TLS_LOAD, + BFD_RELOC_390_TLS_GDCALL, + BFD_RELOC_390_TLS_LDCALL, + BFD_RELOC_390_TLS_GD32, + BFD_RELOC_390_TLS_GD64, + BFD_RELOC_390_TLS_GOTIE12, + BFD_RELOC_390_TLS_GOTIE32, + BFD_RELOC_390_TLS_GOTIE64, + BFD_RELOC_390_TLS_LDM32, + BFD_RELOC_390_TLS_LDM64, + BFD_RELOC_390_TLS_IE32, + BFD_RELOC_390_TLS_IE64, + BFD_RELOC_390_TLS_IEENT, + BFD_RELOC_390_TLS_LE32, + BFD_RELOC_390_TLS_LE64, + BFD_RELOC_390_TLS_LDO32, + BFD_RELOC_390_TLS_LDO64, + BFD_RELOC_390_TLS_DTPMOD, + BFD_RELOC_390_TLS_DTPOFF, + BFD_RELOC_390_TLS_TPOFF, + +/* Long displacement extension. */ + BFD_RELOC_390_20, + BFD_RELOC_390_GOT20, + BFD_RELOC_390_GOTPLT20, + BFD_RELOC_390_TLS_GOTIE20, + +/* STT_GNU_IFUNC relocation. */ + BFD_RELOC_390_IRELATIVE, + +/* Score relocations +Low 16 bit for load/store */ + BFD_RELOC_SCORE_GPREL15, + +/* This is a 24-bit reloc with the right 1 bit assumed to be 0 */ + BFD_RELOC_SCORE_DUMMY2, + BFD_RELOC_SCORE_JMP, + +/* This is a 19-bit reloc with the right 1 bit assumed to be 0 */ + BFD_RELOC_SCORE_BRANCH, + +/* This is a 32-bit reloc for 48-bit instructions. */ + BFD_RELOC_SCORE_IMM30, + +/* This is a 32-bit reloc for 48-bit instructions. */ + BFD_RELOC_SCORE_IMM32, + +/* This is a 11-bit reloc with the right 1 bit assumed to be 0 */ + BFD_RELOC_SCORE16_JMP, + +/* This is a 8-bit reloc with the right 1 bit assumed to be 0 */ + BFD_RELOC_SCORE16_BRANCH, + +/* This is a 9-bit reloc with the right 1 bit assumed to be 0 */ + BFD_RELOC_SCORE_BCMP, + +/* Undocumented Score relocs */ + BFD_RELOC_SCORE_GOT15, + BFD_RELOC_SCORE_GOT_LO16, + BFD_RELOC_SCORE_CALL15, + BFD_RELOC_SCORE_DUMMY_HI16, + +/* Scenix IP2K - 9-bit register number / data address */ + BFD_RELOC_IP2K_FR9, + +/* Scenix IP2K - 4-bit register/data bank number */ + BFD_RELOC_IP2K_BANK, + +/* Scenix IP2K - low 13 bits of instruction word address */ + BFD_RELOC_IP2K_ADDR16CJP, + +/* Scenix IP2K - high 3 bits of instruction word address */ + BFD_RELOC_IP2K_PAGE3, + +/* Scenix IP2K - ext/low/high 8 bits of data address */ + BFD_RELOC_IP2K_LO8DATA, + BFD_RELOC_IP2K_HI8DATA, + BFD_RELOC_IP2K_EX8DATA, + +/* Scenix IP2K - low/high 8 bits of instruction word address */ + BFD_RELOC_IP2K_LO8INSN, + BFD_RELOC_IP2K_HI8INSN, + +/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */ + BFD_RELOC_IP2K_PC_SKIP, + +/* Scenix IP2K - 16 bit word address in text section. */ + BFD_RELOC_IP2K_TEXT, + +/* Scenix IP2K - 7-bit sp or dp offset */ + BFD_RELOC_IP2K_FR_OFFSET, + +/* Scenix VPE4K coprocessor - data/insn-space addressing */ + BFD_RELOC_VPE4KMATH_DATA, + BFD_RELOC_VPE4KMATH_INSN, + +/* These two relocations are used by the linker to determine which of +the entries in a C++ virtual function table are actually used. When +the --gc-sections option is given, the linker will zero out the entries +that are not used, so that the code for those functions need not be +included in the output. + +VTABLE_INHERIT is a zero-space relocation used to describe to the +linker the inheritance tree of a C++ virtual function table. The +relocation's symbol should be the parent class' vtable, and the +relocation should be located at the child vtable. + +VTABLE_ENTRY is a zero-space relocation that describes the use of a +virtual function table entry. The reloc's symbol should refer to the +table of the class mentioned in the code. Off of that base, an offset +describes the entry that is being used. For Rela hosts, this offset +is stored in the reloc's addend. For Rel hosts, we are forced to put +this offset in the reloc's section offset. */ + BFD_RELOC_VTABLE_INHERIT, + BFD_RELOC_VTABLE_ENTRY, + +/* Intel IA64 Relocations. */ + BFD_RELOC_IA64_IMM14, + BFD_RELOC_IA64_IMM22, + BFD_RELOC_IA64_IMM64, + BFD_RELOC_IA64_DIR32MSB, + BFD_RELOC_IA64_DIR32LSB, + BFD_RELOC_IA64_DIR64MSB, + BFD_RELOC_IA64_DIR64LSB, + BFD_RELOC_IA64_GPREL22, + BFD_RELOC_IA64_GPREL64I, + BFD_RELOC_IA64_GPREL32MSB, + BFD_RELOC_IA64_GPREL32LSB, + BFD_RELOC_IA64_GPREL64MSB, + BFD_RELOC_IA64_GPREL64LSB, + BFD_RELOC_IA64_LTOFF22, + BFD_RELOC_IA64_LTOFF64I, + BFD_RELOC_IA64_PLTOFF22, + BFD_RELOC_IA64_PLTOFF64I, + BFD_RELOC_IA64_PLTOFF64MSB, + BFD_RELOC_IA64_PLTOFF64LSB, + BFD_RELOC_IA64_FPTR64I, + BFD_RELOC_IA64_FPTR32MSB, + BFD_RELOC_IA64_FPTR32LSB, + BFD_RELOC_IA64_FPTR64MSB, + BFD_RELOC_IA64_FPTR64LSB, + BFD_RELOC_IA64_PCREL21B, + BFD_RELOC_IA64_PCREL21BI, + BFD_RELOC_IA64_PCREL21M, + BFD_RELOC_IA64_PCREL21F, + BFD_RELOC_IA64_PCREL22, + BFD_RELOC_IA64_PCREL60B, + BFD_RELOC_IA64_PCREL64I, + BFD_RELOC_IA64_PCREL32MSB, + BFD_RELOC_IA64_PCREL32LSB, + BFD_RELOC_IA64_PCREL64MSB, + BFD_RELOC_IA64_PCREL64LSB, + BFD_RELOC_IA64_LTOFF_FPTR22, + BFD_RELOC_IA64_LTOFF_FPTR64I, + BFD_RELOC_IA64_LTOFF_FPTR32MSB, + BFD_RELOC_IA64_LTOFF_FPTR32LSB, + BFD_RELOC_IA64_LTOFF_FPTR64MSB, + BFD_RELOC_IA64_LTOFF_FPTR64LSB, + BFD_RELOC_IA64_SEGREL32MSB, + BFD_RELOC_IA64_SEGREL32LSB, + BFD_RELOC_IA64_SEGREL64MSB, + BFD_RELOC_IA64_SEGREL64LSB, + BFD_RELOC_IA64_SECREL32MSB, + BFD_RELOC_IA64_SECREL32LSB, + BFD_RELOC_IA64_SECREL64MSB, + BFD_RELOC_IA64_SECREL64LSB, + BFD_RELOC_IA64_REL32MSB, + BFD_RELOC_IA64_REL32LSB, + BFD_RELOC_IA64_REL64MSB, + BFD_RELOC_IA64_REL64LSB, + BFD_RELOC_IA64_LTV32MSB, + BFD_RELOC_IA64_LTV32LSB, + BFD_RELOC_IA64_LTV64MSB, + BFD_RELOC_IA64_LTV64LSB, + BFD_RELOC_IA64_IPLTMSB, + BFD_RELOC_IA64_IPLTLSB, + BFD_RELOC_IA64_COPY, + BFD_RELOC_IA64_LTOFF22X, + BFD_RELOC_IA64_LDXMOV, + BFD_RELOC_IA64_TPREL14, + BFD_RELOC_IA64_TPREL22, + BFD_RELOC_IA64_TPREL64I, + BFD_RELOC_IA64_TPREL64MSB, + BFD_RELOC_IA64_TPREL64LSB, + BFD_RELOC_IA64_LTOFF_TPREL22, + BFD_RELOC_IA64_DTPMOD64MSB, + BFD_RELOC_IA64_DTPMOD64LSB, + BFD_RELOC_IA64_LTOFF_DTPMOD22, + BFD_RELOC_IA64_DTPREL14, + BFD_RELOC_IA64_DTPREL22, + BFD_RELOC_IA64_DTPREL64I, + BFD_RELOC_IA64_DTPREL32MSB, + BFD_RELOC_IA64_DTPREL32LSB, + BFD_RELOC_IA64_DTPREL64MSB, + BFD_RELOC_IA64_DTPREL64LSB, + BFD_RELOC_IA64_LTOFF_DTPREL22, + +/* Motorola 68HC11 reloc. +This is the 8 bit high part of an absolute address. */ + BFD_RELOC_M68HC11_HI8, + +/* Motorola 68HC11 reloc. +This is the 8 bit low part of an absolute address. */ + BFD_RELOC_M68HC11_LO8, + +/* Motorola 68HC11 reloc. +This is the 3 bit of a value. */ + BFD_RELOC_M68HC11_3B, + +/* Motorola 68HC11 reloc. +This reloc marks the beginning of a jump/call instruction. +It is used for linker relaxation to correctly identify beginning +of instruction and change some branches to use PC-relative +addressing mode. */ + BFD_RELOC_M68HC11_RL_JUMP, + +/* Motorola 68HC11 reloc. +This reloc marks a group of several instructions that gcc generates +and for which the linker relaxation pass can modify and/or remove +some of them. */ + BFD_RELOC_M68HC11_RL_GROUP, + +/* Motorola 68HC11 reloc. +This is the 16-bit lower part of an address. It is used for 'call' +instruction to specify the symbol address without any special +transformation (due to memory bank window). */ + BFD_RELOC_M68HC11_LO16, + +/* Motorola 68HC11 reloc. +This is a 8-bit reloc that specifies the page number of an address. +It is used by 'call' instruction to specify the page number of +the symbol. */ + BFD_RELOC_M68HC11_PAGE, + +/* Motorola 68HC11 reloc. +This is a 24-bit reloc that represents the address with a 16-bit +value and a 8-bit page number. The symbol address is transformed +to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */ + BFD_RELOC_M68HC11_24, + +/* Motorola 68HC12 reloc. +This is the 5 bits of a value. */ + BFD_RELOC_M68HC12_5B, + +/* Freescale XGATE reloc. +This reloc marks the beginning of a bra/jal instruction. */ + BFD_RELOC_XGATE_RL_JUMP, + +/* Freescale XGATE reloc. +This reloc marks a group of several instructions that gcc generates +and for which the linker relaxation pass can modify and/or remove +some of them. */ + BFD_RELOC_XGATE_RL_GROUP, + +/* Freescale XGATE reloc. +This is the 16-bit lower part of an address. It is used for the '16-bit' +instructions. */ + BFD_RELOC_XGATE_LO16, + +/* Freescale XGATE reloc. */ + BFD_RELOC_XGATE_GPAGE, + +/* Freescale XGATE reloc. */ + BFD_RELOC_XGATE_24, + +/* Freescale XGATE reloc. +This is a 9-bit pc-relative reloc. */ + BFD_RELOC_XGATE_PCREL_9, + +/* Freescale XGATE reloc. +This is a 10-bit pc-relative reloc. */ + BFD_RELOC_XGATE_PCREL_10, + +/* Freescale XGATE reloc. +This is the 16-bit lower part of an address. It is used for the '16-bit' +instructions. */ + BFD_RELOC_XGATE_IMM8_LO, + +/* Freescale XGATE reloc. +This is the 16-bit higher part of an address. It is used for the '16-bit' +instructions. */ + BFD_RELOC_XGATE_IMM8_HI, + +/* Freescale XGATE reloc. +This is a 3-bit pc-relative reloc. */ + BFD_RELOC_XGATE_IMM3, + +/* Freescale XGATE reloc. +This is a 4-bit pc-relative reloc. */ + BFD_RELOC_XGATE_IMM4, + +/* Freescale XGATE reloc. +This is a 5-bit pc-relative reloc. */ + BFD_RELOC_XGATE_IMM5, + +/* Motorola 68HC12 reloc. +This is the 9 bits of a value. */ + BFD_RELOC_M68HC12_9B, + +/* Motorola 68HC12 reloc. +This is the 16 bits of a value. */ + BFD_RELOC_M68HC12_16B, + +/* Motorola 68HC12/XGATE reloc. +This is a PCREL9 branch. */ + BFD_RELOC_M68HC12_9_PCREL, + +/* Motorola 68HC12/XGATE reloc. +This is a PCREL10 branch. */ + BFD_RELOC_M68HC12_10_PCREL, + +/* Motorola 68HC12/XGATE reloc. +This is the 8 bit low part of an absolute address and immediately precedes +a matching HI8XG part. */ + BFD_RELOC_M68HC12_LO8XG, + +/* Motorola 68HC12/XGATE reloc. +This is the 8 bit high part of an absolute address and immediately follows +a matching LO8XG part. */ + BFD_RELOC_M68HC12_HI8XG, + +/* Freescale S12Z reloc. +This is a 15 bit relative address. If the most significant bits are all zero +then it may be truncated to 8 bits. */ + BFD_RELOC_S12Z_15_PCREL, + +/* NS CR16 Relocations. */ + BFD_RELOC_CR16_NUM8, + BFD_RELOC_CR16_NUM16, + BFD_RELOC_CR16_NUM32, + BFD_RELOC_CR16_NUM32a, + BFD_RELOC_CR16_REGREL0, + BFD_RELOC_CR16_REGREL4, + BFD_RELOC_CR16_REGREL4a, + BFD_RELOC_CR16_REGREL14, + BFD_RELOC_CR16_REGREL14a, + BFD_RELOC_CR16_REGREL16, + BFD_RELOC_CR16_REGREL20, + BFD_RELOC_CR16_REGREL20a, + BFD_RELOC_CR16_ABS20, + BFD_RELOC_CR16_ABS24, + BFD_RELOC_CR16_IMM4, + BFD_RELOC_CR16_IMM8, + BFD_RELOC_CR16_IMM16, + BFD_RELOC_CR16_IMM20, + BFD_RELOC_CR16_IMM24, + BFD_RELOC_CR16_IMM32, + BFD_RELOC_CR16_IMM32a, + BFD_RELOC_CR16_DISP4, + BFD_RELOC_CR16_DISP8, + BFD_RELOC_CR16_DISP16, + BFD_RELOC_CR16_DISP20, + BFD_RELOC_CR16_DISP24, + BFD_RELOC_CR16_DISP24a, + BFD_RELOC_CR16_SWITCH8, + BFD_RELOC_CR16_SWITCH16, + BFD_RELOC_CR16_SWITCH32, + BFD_RELOC_CR16_GOT_REGREL20, + BFD_RELOC_CR16_GOTC_REGREL20, + BFD_RELOC_CR16_GLOB_DAT, + +/* NS CRX Relocations. */ + BFD_RELOC_CRX_REL4, + BFD_RELOC_CRX_REL8, + BFD_RELOC_CRX_REL8_CMP, + BFD_RELOC_CRX_REL16, + BFD_RELOC_CRX_REL24, + BFD_RELOC_CRX_REL32, + BFD_RELOC_CRX_REGREL12, + BFD_RELOC_CRX_REGREL22, + BFD_RELOC_CRX_REGREL28, + BFD_RELOC_CRX_REGREL32, + BFD_RELOC_CRX_ABS16, + BFD_RELOC_CRX_ABS32, + BFD_RELOC_CRX_NUM8, + BFD_RELOC_CRX_NUM16, + BFD_RELOC_CRX_NUM32, + BFD_RELOC_CRX_IMM16, + BFD_RELOC_CRX_IMM32, + BFD_RELOC_CRX_SWITCH8, + BFD_RELOC_CRX_SWITCH16, + BFD_RELOC_CRX_SWITCH32, + +/* These relocs are only used within the CRIS assembler. They are not +(at present) written to any object files. */ + BFD_RELOC_CRIS_BDISP8, + BFD_RELOC_CRIS_UNSIGNED_5, + BFD_RELOC_CRIS_SIGNED_6, + BFD_RELOC_CRIS_UNSIGNED_6, + BFD_RELOC_CRIS_SIGNED_8, + BFD_RELOC_CRIS_UNSIGNED_8, + BFD_RELOC_CRIS_SIGNED_16, + BFD_RELOC_CRIS_UNSIGNED_16, + BFD_RELOC_CRIS_LAPCQ_OFFSET, + BFD_RELOC_CRIS_UNSIGNED_4, + +/* Relocs used in ELF shared libraries for CRIS. */ + BFD_RELOC_CRIS_COPY, + BFD_RELOC_CRIS_GLOB_DAT, + BFD_RELOC_CRIS_JUMP_SLOT, + BFD_RELOC_CRIS_RELATIVE, + +/* 32-bit offset to symbol-entry within GOT. */ + BFD_RELOC_CRIS_32_GOT, + +/* 16-bit offset to symbol-entry within GOT. */ + BFD_RELOC_CRIS_16_GOT, + +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */ + BFD_RELOC_CRIS_32_GOTPLT, + +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */ + BFD_RELOC_CRIS_16_GOTPLT, + +/* 32-bit offset to symbol, relative to GOT. */ + BFD_RELOC_CRIS_32_GOTREL, + +/* 32-bit offset to symbol with PLT entry, relative to GOT. */ + BFD_RELOC_CRIS_32_PLT_GOTREL, + +/* 32-bit offset to symbol with PLT entry, relative to this relocation. */ + BFD_RELOC_CRIS_32_PLT_PCREL, + +/* Relocs used in TLS code for CRIS. */ + BFD_RELOC_CRIS_32_GOT_GD, + BFD_RELOC_CRIS_16_GOT_GD, + BFD_RELOC_CRIS_32_GD, + BFD_RELOC_CRIS_DTP, + BFD_RELOC_CRIS_32_DTPREL, + BFD_RELOC_CRIS_16_DTPREL, + BFD_RELOC_CRIS_32_GOT_TPREL, + BFD_RELOC_CRIS_16_GOT_TPREL, + BFD_RELOC_CRIS_32_TPREL, + BFD_RELOC_CRIS_16_TPREL, + BFD_RELOC_CRIS_DTPMOD, + BFD_RELOC_CRIS_32_IE, + +/* OpenRISC 1000 Relocations. */ + BFD_RELOC_OR1K_REL_26, + BFD_RELOC_OR1K_SLO16, + BFD_RELOC_OR1K_PCREL_PG21, + BFD_RELOC_OR1K_LO13, + BFD_RELOC_OR1K_SLO13, + BFD_RELOC_OR1K_GOTPC_HI16, + BFD_RELOC_OR1K_GOTPC_LO16, + BFD_RELOC_OR1K_GOT16, + BFD_RELOC_OR1K_GOT_PG21, + BFD_RELOC_OR1K_GOT_LO13, + BFD_RELOC_OR1K_PLT26, + BFD_RELOC_OR1K_PLTA26, + BFD_RELOC_OR1K_GOTOFF_SLO16, + BFD_RELOC_OR1K_COPY, + BFD_RELOC_OR1K_GLOB_DAT, + BFD_RELOC_OR1K_JMP_SLOT, + BFD_RELOC_OR1K_RELATIVE, + BFD_RELOC_OR1K_TLS_GD_HI16, + BFD_RELOC_OR1K_TLS_GD_LO16, + BFD_RELOC_OR1K_TLS_GD_PG21, + BFD_RELOC_OR1K_TLS_GD_LO13, + BFD_RELOC_OR1K_TLS_LDM_HI16, + BFD_RELOC_OR1K_TLS_LDM_LO16, + BFD_RELOC_OR1K_TLS_LDM_PG21, + BFD_RELOC_OR1K_TLS_LDM_LO13, + BFD_RELOC_OR1K_TLS_LDO_HI16, + BFD_RELOC_OR1K_TLS_LDO_LO16, + BFD_RELOC_OR1K_TLS_IE_HI16, + BFD_RELOC_OR1K_TLS_IE_AHI16, + BFD_RELOC_OR1K_TLS_IE_LO16, + BFD_RELOC_OR1K_TLS_IE_PG21, + BFD_RELOC_OR1K_TLS_IE_LO13, + BFD_RELOC_OR1K_TLS_LE_HI16, + BFD_RELOC_OR1K_TLS_LE_AHI16, + BFD_RELOC_OR1K_TLS_LE_LO16, + BFD_RELOC_OR1K_TLS_LE_SLO16, + BFD_RELOC_OR1K_TLS_TPOFF, + BFD_RELOC_OR1K_TLS_DTPOFF, + BFD_RELOC_OR1K_TLS_DTPMOD, + +/* H8 elf Relocations. */ + BFD_RELOC_H8_DIR16A8, + BFD_RELOC_H8_DIR16R8, + BFD_RELOC_H8_DIR24A8, + BFD_RELOC_H8_DIR24R8, + BFD_RELOC_H8_DIR32A16, + BFD_RELOC_H8_DISP32A16, + +/* Sony Xstormy16 Relocations. */ + BFD_RELOC_XSTORMY16_REL_12, + BFD_RELOC_XSTORMY16_12, + BFD_RELOC_XSTORMY16_24, + BFD_RELOC_XSTORMY16_FPTR16, + +/* Self-describing complex relocations. */ + BFD_RELOC_RELC, + + +/* Infineon Relocations. */ + BFD_RELOC_XC16X_PAG, + BFD_RELOC_XC16X_POF, + BFD_RELOC_XC16X_SEG, + BFD_RELOC_XC16X_SOF, + +/* Relocations used by VAX ELF. */ + BFD_RELOC_VAX_GLOB_DAT, + BFD_RELOC_VAX_JMP_SLOT, + BFD_RELOC_VAX_RELATIVE, + +/* Morpho MT - 16 bit immediate relocation. */ + BFD_RELOC_MT_PC16, + +/* Morpho MT - Hi 16 bits of an address. */ + BFD_RELOC_MT_HI16, + +/* Morpho MT - Low 16 bits of an address. */ + BFD_RELOC_MT_LO16, + +/* Morpho MT - Used to tell the linker which vtable entries are used. */ + BFD_RELOC_MT_GNU_VTINHERIT, + +/* Morpho MT - Used to tell the linker which vtable entries are used. */ + BFD_RELOC_MT_GNU_VTENTRY, + +/* Morpho MT - 8 bit immediate relocation. */ + BFD_RELOC_MT_PCINSN8, + +/* msp430 specific relocation codes */ + BFD_RELOC_MSP430_10_PCREL, + BFD_RELOC_MSP430_16_PCREL, + BFD_RELOC_MSP430_16, + BFD_RELOC_MSP430_16_PCREL_BYTE, + BFD_RELOC_MSP430_16_BYTE, + BFD_RELOC_MSP430_2X_PCREL, + BFD_RELOC_MSP430_RL_PCREL, + BFD_RELOC_MSP430_ABS8, + BFD_RELOC_MSP430X_PCR20_EXT_SRC, + BFD_RELOC_MSP430X_PCR20_EXT_DST, + BFD_RELOC_MSP430X_PCR20_EXT_ODST, + BFD_RELOC_MSP430X_ABS20_EXT_SRC, + BFD_RELOC_MSP430X_ABS20_EXT_DST, + BFD_RELOC_MSP430X_ABS20_EXT_ODST, + BFD_RELOC_MSP430X_ABS20_ADR_SRC, + BFD_RELOC_MSP430X_ABS20_ADR_DST, + BFD_RELOC_MSP430X_PCR16, + BFD_RELOC_MSP430X_PCR20_CALL, + BFD_RELOC_MSP430X_ABS16, + BFD_RELOC_MSP430_ABS_HI16, + BFD_RELOC_MSP430_PREL31, + BFD_RELOC_MSP430_SYM_DIFF, + BFD_RELOC_MSP430_SET_ULEB128, + BFD_RELOC_MSP430_SUB_ULEB128, + +/* Relocations used by the Altera Nios II core. */ + BFD_RELOC_NIOS2_S16, + BFD_RELOC_NIOS2_U16, + BFD_RELOC_NIOS2_CALL26, + BFD_RELOC_NIOS2_IMM5, + BFD_RELOC_NIOS2_CACHE_OPX, + BFD_RELOC_NIOS2_IMM6, + BFD_RELOC_NIOS2_IMM8, + BFD_RELOC_NIOS2_HI16, + BFD_RELOC_NIOS2_LO16, + BFD_RELOC_NIOS2_HIADJ16, + BFD_RELOC_NIOS2_GPREL, + BFD_RELOC_NIOS2_UJMP, + BFD_RELOC_NIOS2_CJMP, + BFD_RELOC_NIOS2_CALLR, + BFD_RELOC_NIOS2_ALIGN, + BFD_RELOC_NIOS2_GOT16, + BFD_RELOC_NIOS2_CALL16, + BFD_RELOC_NIOS2_GOTOFF_LO, + BFD_RELOC_NIOS2_GOTOFF_HA, + BFD_RELOC_NIOS2_PCREL_LO, + BFD_RELOC_NIOS2_PCREL_HA, + BFD_RELOC_NIOS2_TLS_GD16, + BFD_RELOC_NIOS2_TLS_LDM16, + BFD_RELOC_NIOS2_TLS_LDO16, + BFD_RELOC_NIOS2_TLS_IE16, + BFD_RELOC_NIOS2_TLS_LE16, + BFD_RELOC_NIOS2_TLS_DTPMOD, + BFD_RELOC_NIOS2_TLS_DTPREL, + BFD_RELOC_NIOS2_TLS_TPREL, + BFD_RELOC_NIOS2_COPY, + BFD_RELOC_NIOS2_GLOB_DAT, + BFD_RELOC_NIOS2_JUMP_SLOT, + BFD_RELOC_NIOS2_RELATIVE, + BFD_RELOC_NIOS2_GOTOFF, + BFD_RELOC_NIOS2_CALL26_NOAT, + BFD_RELOC_NIOS2_GOT_LO, + BFD_RELOC_NIOS2_GOT_HA, + BFD_RELOC_NIOS2_CALL_LO, + BFD_RELOC_NIOS2_CALL_HA, + BFD_RELOC_NIOS2_R2_S12, + BFD_RELOC_NIOS2_R2_I10_1_PCREL, + BFD_RELOC_NIOS2_R2_T1I7_1_PCREL, + BFD_RELOC_NIOS2_R2_T1I7_2, + BFD_RELOC_NIOS2_R2_T2I4, + BFD_RELOC_NIOS2_R2_T2I4_1, + BFD_RELOC_NIOS2_R2_T2I4_2, + BFD_RELOC_NIOS2_R2_X1I7_2, + BFD_RELOC_NIOS2_R2_X2L5, + BFD_RELOC_NIOS2_R2_F1I5_2, + BFD_RELOC_NIOS2_R2_L5I4X1, + BFD_RELOC_NIOS2_R2_T1X1I6, + BFD_RELOC_NIOS2_R2_T1X1I6_2, + +/* PRU LDI 16-bit unsigned data-memory relocation. */ + BFD_RELOC_PRU_U16, + +/* PRU LDI 16-bit unsigned instruction-memory relocation. */ + BFD_RELOC_PRU_U16_PMEMIMM, + +/* PRU relocation for two consecutive LDI load instructions that load a +32 bit value into a register. If the higher bits are all zero, then +the second instruction may be relaxed. */ + BFD_RELOC_PRU_LDI32, + +/* PRU QBBx 10-bit signed PC-relative relocation. */ + BFD_RELOC_PRU_S10_PCREL, + +/* PRU 8-bit unsigned relocation used for the LOOP instruction. */ + BFD_RELOC_PRU_U8_PCREL, + +/* PRU Program Memory relocations. Used to convert from byte addressing to +32-bit word addressing. */ + BFD_RELOC_PRU_32_PMEM, + BFD_RELOC_PRU_16_PMEM, + +/* PRU relocations to mark the difference of two local symbols. +These are only needed to support linker relaxation and can be ignored +when not relaxing. The field is set to the value of the difference +assuming no relaxation. The relocation encodes the position of the +second symbol so the linker can determine whether to adjust the field +value. The PMEM variants encode the word difference, instead of byte +difference between symbols. */ + BFD_RELOC_PRU_GNU_DIFF8, + BFD_RELOC_PRU_GNU_DIFF16, + BFD_RELOC_PRU_GNU_DIFF32, + BFD_RELOC_PRU_GNU_DIFF16_PMEM, + BFD_RELOC_PRU_GNU_DIFF32_PMEM, + +/* IQ2000 Relocations. */ + BFD_RELOC_IQ2000_OFFSET_16, + BFD_RELOC_IQ2000_OFFSET_21, + BFD_RELOC_IQ2000_UHI16, + +/* Special Xtensa relocation used only by PLT entries in ELF shared +objects to indicate that the runtime linker should set the value +to one of its own internal functions or data structures. */ + BFD_RELOC_XTENSA_RTLD, + +/* Xtensa relocations for ELF shared objects. */ + BFD_RELOC_XTENSA_GLOB_DAT, + BFD_RELOC_XTENSA_JMP_SLOT, + BFD_RELOC_XTENSA_RELATIVE, + +/* Xtensa relocation used in ELF object files for symbols that may require +PLT entries. Otherwise, this is just a generic 32-bit relocation. */ + BFD_RELOC_XTENSA_PLT, + +/* Xtensa relocations for backward compatibility. These have been replaced +by BFD_RELOC_XTENSA_PDIFF and BFD_RELOC_XTENSA_NDIFF. +Xtensa relocations to mark the difference of two local symbols. +These are only needed to support linker relaxation and can be ignored +when not relaxing. The field is set to the value of the difference +assuming no relaxation. The relocation encodes the position of the +first symbol so the linker can determine whether to adjust the field +value. */ + BFD_RELOC_XTENSA_DIFF8, + BFD_RELOC_XTENSA_DIFF16, + BFD_RELOC_XTENSA_DIFF32, + +/* Generic Xtensa relocations for instruction operands. Only the slot +number is encoded in the relocation. The relocation applies to the +last PC-relative immediate operand, or if there are no PC-relative +immediates, to the last immediate operand. */ + BFD_RELOC_XTENSA_SLOT0_OP, + BFD_RELOC_XTENSA_SLOT1_OP, + BFD_RELOC_XTENSA_SLOT2_OP, + BFD_RELOC_XTENSA_SLOT3_OP, + BFD_RELOC_XTENSA_SLOT4_OP, + BFD_RELOC_XTENSA_SLOT5_OP, + BFD_RELOC_XTENSA_SLOT6_OP, + BFD_RELOC_XTENSA_SLOT7_OP, + BFD_RELOC_XTENSA_SLOT8_OP, + BFD_RELOC_XTENSA_SLOT9_OP, + BFD_RELOC_XTENSA_SLOT10_OP, + BFD_RELOC_XTENSA_SLOT11_OP, + BFD_RELOC_XTENSA_SLOT12_OP, + BFD_RELOC_XTENSA_SLOT13_OP, + BFD_RELOC_XTENSA_SLOT14_OP, + +/* Alternate Xtensa relocations. Only the slot is encoded in the +relocation. The meaning of these relocations is opcode-specific. */ + BFD_RELOC_XTENSA_SLOT0_ALT, + BFD_RELOC_XTENSA_SLOT1_ALT, + BFD_RELOC_XTENSA_SLOT2_ALT, + BFD_RELOC_XTENSA_SLOT3_ALT, + BFD_RELOC_XTENSA_SLOT4_ALT, + BFD_RELOC_XTENSA_SLOT5_ALT, + BFD_RELOC_XTENSA_SLOT6_ALT, + BFD_RELOC_XTENSA_SLOT7_ALT, + BFD_RELOC_XTENSA_SLOT8_ALT, + BFD_RELOC_XTENSA_SLOT9_ALT, + BFD_RELOC_XTENSA_SLOT10_ALT, + BFD_RELOC_XTENSA_SLOT11_ALT, + BFD_RELOC_XTENSA_SLOT12_ALT, + BFD_RELOC_XTENSA_SLOT13_ALT, + BFD_RELOC_XTENSA_SLOT14_ALT, + +/* Xtensa relocations for backward compatibility. These have all been +replaced by BFD_RELOC_XTENSA_SLOT0_OP. */ + BFD_RELOC_XTENSA_OP0, + BFD_RELOC_XTENSA_OP1, + BFD_RELOC_XTENSA_OP2, + +/* Xtensa relocation to mark that the assembler expanded the +instructions from an original target. The expansion size is +encoded in the reloc size. */ + BFD_RELOC_XTENSA_ASM_EXPAND, + +/* Xtensa relocation to mark that the linker should simplify +assembler-expanded instructions. This is commonly used +internally by the linker after analysis of a +BFD_RELOC_XTENSA_ASM_EXPAND. */ + BFD_RELOC_XTENSA_ASM_SIMPLIFY, + +/* Xtensa TLS relocations. */ + BFD_RELOC_XTENSA_TLSDESC_FN, + BFD_RELOC_XTENSA_TLSDESC_ARG, + BFD_RELOC_XTENSA_TLS_DTPOFF, + BFD_RELOC_XTENSA_TLS_TPOFF, + BFD_RELOC_XTENSA_TLS_FUNC, + BFD_RELOC_XTENSA_TLS_ARG, + BFD_RELOC_XTENSA_TLS_CALL, + +/* Xtensa relocations to mark the difference of two local symbols. +These are only needed to support linker relaxation and can be ignored +when not relaxing. The field is set to the value of the difference +assuming no relaxation. The relocation encodes the position of the +subtracted symbol so the linker can determine whether to adjust the field +value. PDIFF relocations are used for positive differences, NDIFF +relocations are used for negative differences. The difference value +is treated as unsigned with these relocation types, giving full +8/16 value ranges. */ + BFD_RELOC_XTENSA_PDIFF8, + BFD_RELOC_XTENSA_PDIFF16, + BFD_RELOC_XTENSA_PDIFF32, + BFD_RELOC_XTENSA_NDIFF8, + BFD_RELOC_XTENSA_NDIFF16, + BFD_RELOC_XTENSA_NDIFF32, + +/* 8 bit signed offset in (ix+d) or (iy+d). */ + BFD_RELOC_Z80_DISP8, + +/* First 8 bits of multibyte (32, 24 or 16 bit) value. */ + BFD_RELOC_Z80_BYTE0, + +/* Second 8 bits of multibyte (32, 24 or 16 bit) value. */ + BFD_RELOC_Z80_BYTE1, + +/* Third 8 bits of multibyte (32 or 24 bit) value. */ + BFD_RELOC_Z80_BYTE2, + +/* Fourth 8 bits of multibyte (32 bit) value. */ + BFD_RELOC_Z80_BYTE3, + +/* Lowest 16 bits of multibyte (32 or 24 bit) value. */ + BFD_RELOC_Z80_WORD0, + +/* Highest 16 bits of multibyte (32 or 24 bit) value. */ + BFD_RELOC_Z80_WORD1, + +/* Like BFD_RELOC_16 but big-endian. */ + BFD_RELOC_Z80_16_BE, + +/* DJNZ offset. */ + BFD_RELOC_Z8K_DISP7, + +/* CALR offset. */ + BFD_RELOC_Z8K_CALLR, + +/* 4 bit value. */ + BFD_RELOC_Z8K_IMM4L, + +/* Lattice Mico32 relocations. */ + BFD_RELOC_LM32_CALL, + BFD_RELOC_LM32_BRANCH, + BFD_RELOC_LM32_16_GOT, + BFD_RELOC_LM32_GOTOFF_HI16, + BFD_RELOC_LM32_GOTOFF_LO16, + BFD_RELOC_LM32_COPY, + BFD_RELOC_LM32_GLOB_DAT, + BFD_RELOC_LM32_JMP_SLOT, + BFD_RELOC_LM32_RELATIVE, + +/* Difference between two section addreses. Must be followed by a +BFD_RELOC_MACH_O_PAIR. */ + BFD_RELOC_MACH_O_SECTDIFF, + +/* Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol. */ + BFD_RELOC_MACH_O_LOCAL_SECTDIFF, + +/* Pair of relocation. Contains the first symbol. */ + BFD_RELOC_MACH_O_PAIR, + +/* Symbol will be substracted. Must be followed by a BFD_RELOC_32. */ + BFD_RELOC_MACH_O_SUBTRACTOR32, + +/* Symbol will be substracted. Must be followed by a BFD_RELOC_64. */ + BFD_RELOC_MACH_O_SUBTRACTOR64, + +/* PCREL relocations. They are marked as branch to create PLT entry if +required. */ + BFD_RELOC_MACH_O_X86_64_BRANCH32, + BFD_RELOC_MACH_O_X86_64_BRANCH8, + +/* Used when referencing a GOT entry. */ + BFD_RELOC_MACH_O_X86_64_GOT, + +/* Used when loading a GOT entry with movq. It is specially marked so that +the linker could optimize the movq to a leaq if possible. */ + BFD_RELOC_MACH_O_X86_64_GOT_LOAD, + +/* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. */ + BFD_RELOC_MACH_O_X86_64_PCREL32_1, + +/* Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. */ + BFD_RELOC_MACH_O_X86_64_PCREL32_2, + +/* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. */ + BFD_RELOC_MACH_O_X86_64_PCREL32_4, + +/* Used when referencing a TLV entry. */ + BFD_RELOC_MACH_O_X86_64_TLV, + +/* Addend for PAGE or PAGEOFF. */ + BFD_RELOC_MACH_O_ARM64_ADDEND, + +/* Relative offset to page of GOT slot. */ + BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21, + +/* Relative offset within page of GOT slot. */ + BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12, + +/* Address of a GOT entry. */ + BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT, + +/* This is a 32 bit reloc for the microblaze that stores the +low 16 bits of a value */ + BFD_RELOC_MICROBLAZE_32_LO, + +/* This is a 32 bit pc-relative reloc for the microblaze that +stores the low 16 bits of a value */ + BFD_RELOC_MICROBLAZE_32_LO_PCREL, + +/* This is a 32 bit reloc for the microblaze that stores a +value relative to the read-only small data area anchor */ + BFD_RELOC_MICROBLAZE_32_ROSDA, + +/* This is a 32 bit reloc for the microblaze that stores a +value relative to the read-write small data area anchor */ + BFD_RELOC_MICROBLAZE_32_RWSDA, + +/* This is a 32 bit reloc for the microblaze to handle +expressions of the form "Symbol Op Symbol" */ + BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM, + +/* This is a 64 bit reloc that stores the 32 bit pc relative +value in two words (with an imm instruction). No relocation is +done here - only used for relaxing */ + BFD_RELOC_MICROBLAZE_64_NONE, + +/* This is a 64 bit reloc that stores the 32 bit pc relative +value in two words (with an imm instruction). The relocation is +PC-relative GOT offset */ + BFD_RELOC_MICROBLAZE_64_GOTPC, + +/* This is a 64 bit reloc that stores the 32 bit pc relative +value in two words (with an imm instruction). The relocation is +GOT offset */ + BFD_RELOC_MICROBLAZE_64_GOT, + +/* This is a 64 bit reloc that stores the 32 bit pc relative +value in two words (with an imm instruction). The relocation is +PC-relative offset into PLT */ + BFD_RELOC_MICROBLAZE_64_PLT, + +/* This is a 64 bit reloc that stores the 32 bit GOT relative +value in two words (with an imm instruction). The relocation is +relative offset from _GLOBAL_OFFSET_TABLE_ */ + BFD_RELOC_MICROBLAZE_64_GOTOFF, + +/* This is a 32 bit reloc that stores the 32 bit GOT relative +value in a word. The relocation is relative offset from */ + BFD_RELOC_MICROBLAZE_32_GOTOFF, + +/* This is used to tell the dynamic linker to copy the value out of +the dynamic object into the runtime process image. */ + BFD_RELOC_MICROBLAZE_COPY, + +/* Unused Reloc */ + BFD_RELOC_MICROBLAZE_64_TLS, + +/* This is a 64 bit reloc that stores the 32 bit GOT relative value +of the GOT TLS GD info entry in two words (with an imm instruction). The +relocation is GOT offset. */ + BFD_RELOC_MICROBLAZE_64_TLSGD, + +/* This is a 64 bit reloc that stores the 32 bit GOT relative value +of the GOT TLS LD info entry in two words (with an imm instruction). The +relocation is GOT offset. */ + BFD_RELOC_MICROBLAZE_64_TLSLD, + +/* This is a 32 bit reloc that stores the Module ID to GOT(n). */ + BFD_RELOC_MICROBLAZE_32_TLSDTPMOD, + +/* This is a 32 bit reloc that stores TLS offset to GOT(n+1). */ + BFD_RELOC_MICROBLAZE_32_TLSDTPREL, + +/* This is a 32 bit reloc for storing TLS offset to two words (uses imm +instruction) */ + BFD_RELOC_MICROBLAZE_64_TLSDTPREL, + +/* This is a 64 bit reloc that stores 32-bit thread pointer relative offset +to two words (uses imm instruction). */ + BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL, + +/* This is a 64 bit reloc that stores 32-bit thread pointer relative offset +to two words (uses imm instruction). */ + BFD_RELOC_MICROBLAZE_64_TLSTPREL, + +/* This is a 64 bit reloc that stores the 32 bit pc relative +value in two words (with an imm instruction). The relocation is +PC-relative offset from start of TEXT. */ + BFD_RELOC_MICROBLAZE_64_TEXTPCREL, + +/* This is a 64 bit reloc that stores the 32 bit offset +value in two words (with an imm instruction). The relocation is +relative offset from start of TEXT. */ + BFD_RELOC_MICROBLAZE_64_TEXTREL, + +/* AArch64 pseudo relocation code to mark the start of the AArch64 +relocation enumerators. N.B. the order of the enumerators is +important as several tables in the AArch64 bfd backend are indexed +by these enumerators; make sure they are all synced. */ + BFD_RELOC_AARCH64_RELOC_START, + +/* Deprecated AArch64 null relocation code. */ + BFD_RELOC_AARCH64_NULL, + +/* AArch64 null relocation code. */ + BFD_RELOC_AARCH64_NONE, + +/* Basic absolute relocations of N bits. These are equivalent to +BFD_RELOC_N and they were added to assist the indexing of the howto +table. */ + BFD_RELOC_AARCH64_64, + BFD_RELOC_AARCH64_32, + BFD_RELOC_AARCH64_16, + +/* PC-relative relocations. These are equivalent to BFD_RELOC_N_PCREL +and they were added to assist the indexing of the howto table. */ + BFD_RELOC_AARCH64_64_PCREL, + BFD_RELOC_AARCH64_32_PCREL, + BFD_RELOC_AARCH64_16_PCREL, + +/* AArch64 MOV[NZK] instruction with most significant bits 0 to 15 +of an unsigned address/value. */ + BFD_RELOC_AARCH64_MOVW_G0, + +/* AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of +an address/value. No overflow checking. */ + BFD_RELOC_AARCH64_MOVW_G0_NC, + +/* AArch64 MOV[NZK] instruction with most significant bits 16 to 31 +of an unsigned address/value. */ + BFD_RELOC_AARCH64_MOVW_G1, + +/* AArch64 MOV[NZK] instruction with less significant bits 16 to 31 +of an address/value. No overflow checking. */ + BFD_RELOC_AARCH64_MOVW_G1_NC, + +/* AArch64 MOV[NZK] instruction with most significant bits 32 to 47 +of an unsigned address/value. */ + BFD_RELOC_AARCH64_MOVW_G2, + +/* AArch64 MOV[NZK] instruction with less significant bits 32 to 47 +of an address/value. No overflow checking. */ + BFD_RELOC_AARCH64_MOVW_G2_NC, + +/* AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 +of a signed or unsigned address/value. */ + BFD_RELOC_AARCH64_MOVW_G3, + +/* AArch64 MOV[NZ] instruction with most significant bits 0 to 15 +of a signed value. Changes instruction to MOVZ or MOVN depending on the +value's sign. */ + BFD_RELOC_AARCH64_MOVW_G0_S, + +/* AArch64 MOV[NZ] instruction with most significant bits 16 to 31 +of a signed value. Changes instruction to MOVZ or MOVN depending on the +value's sign. */ + BFD_RELOC_AARCH64_MOVW_G1_S, + +/* AArch64 MOV[NZ] instruction with most significant bits 32 to 47 +of a signed value. Changes instruction to MOVZ or MOVN depending on the +value's sign. */ + BFD_RELOC_AARCH64_MOVW_G2_S, + +/* AArch64 MOV[NZ] instruction with most significant bits 0 to 15 +of a signed value. Changes instruction to MOVZ or MOVN depending on the +value's sign. */ + BFD_RELOC_AARCH64_MOVW_PREL_G0, + +/* AArch64 MOV[NZ] instruction with most significant bits 0 to 15 +of a signed value. Changes instruction to MOVZ or MOVN depending on the +value's sign. */ + BFD_RELOC_AARCH64_MOVW_PREL_G0_NC, + +/* AArch64 MOVK instruction with most significant bits 16 to 31 +of a signed value. */ + BFD_RELOC_AARCH64_MOVW_PREL_G1, + +/* AArch64 MOVK instruction with most significant bits 16 to 31 +of a signed value. */ + BFD_RELOC_AARCH64_MOVW_PREL_G1_NC, + +/* AArch64 MOVK instruction with most significant bits 32 to 47 +of a signed value. */ + BFD_RELOC_AARCH64_MOVW_PREL_G2, + +/* AArch64 MOVK instruction with most significant bits 32 to 47 +of a signed value. */ + BFD_RELOC_AARCH64_MOVW_PREL_G2_NC, + +/* AArch64 MOVK instruction with most significant bits 47 to 63 +of a signed value. */ + BFD_RELOC_AARCH64_MOVW_PREL_G3, + +/* AArch64 Load Literal instruction, holding a 19 bit pc-relative word +offset. The lowest two bits must be zero and are not stored in the +instruction, giving a 21 bit signed byte offset. */ + BFD_RELOC_AARCH64_LD_LO19_PCREL, + +/* AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset. */ + BFD_RELOC_AARCH64_ADR_LO21_PCREL, + +/* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page +offset, giving a 4KB aligned page base address. */ + BFD_RELOC_AARCH64_ADR_HI21_PCREL, + +/* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page +offset, giving a 4KB aligned page base address, but with no overflow +checking. */ + BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL, + +/* AArch64 ADD immediate instruction, holding bits 0 to 11 of the address. +Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */ + BFD_RELOC_AARCH64_ADD_LO12, + +/* AArch64 8-bit load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */ + BFD_RELOC_AARCH64_LDST8_LO12, + +/* AArch64 14 bit pc-relative test bit and branch. +The lowest two bits must be zero and are not stored in the instruction, +giving a 16 bit signed byte offset. */ + BFD_RELOC_AARCH64_TSTBR14, + +/* AArch64 19 bit pc-relative conditional branch and compare & branch. +The lowest two bits must be zero and are not stored in the instruction, +giving a 21 bit signed byte offset. */ + BFD_RELOC_AARCH64_BRANCH19, + +/* AArch64 26 bit pc-relative unconditional branch. +The lowest two bits must be zero and are not stored in the instruction, +giving a 28 bit signed byte offset. */ + BFD_RELOC_AARCH64_JUMP26, + +/* AArch64 26 bit pc-relative unconditional branch and link. +The lowest two bits must be zero and are not stored in the instruction, +giving a 28 bit signed byte offset. */ + BFD_RELOC_AARCH64_CALL26, + +/* AArch64 16-bit load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */ + BFD_RELOC_AARCH64_LDST16_LO12, + +/* AArch64 32-bit load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */ + BFD_RELOC_AARCH64_LDST32_LO12, + +/* AArch64 64-bit load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */ + BFD_RELOC_AARCH64_LDST64_LO12, + +/* AArch64 128-bit load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */ + BFD_RELOC_AARCH64_LDST128_LO12, + +/* AArch64 Load Literal instruction, holding a 19 bit PC relative word +offset of the global offset table entry for a symbol. The lowest two +bits must be zero and are not stored in the instruction, giving a 21 +bit signed byte offset. This relocation type requires signed overflow +checking. */ + BFD_RELOC_AARCH64_GOT_LD_PREL19, + +/* Get to the page base of the global offset table entry for a symbol as +part of an ADRP instruction using a 21 bit PC relative value.Used in +conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC. */ + BFD_RELOC_AARCH64_ADR_GOT_PAGE, + +/* Unsigned 12 bit byte offset for 64 bit load/store from the page of +the GOT entry for this symbol. Used in conjunction with +BFD_RELOC_AARCH64_ADR_GOT_PAGE. Valid in LP64 ABI only. */ + BFD_RELOC_AARCH64_LD64_GOT_LO12_NC, + +/* Unsigned 12 bit byte offset for 32 bit load/store from the page of +the GOT entry for this symbol. Used in conjunction with +BFD_RELOC_AARCH64_ADR_GOT_PAGE. Valid in ILP32 ABI only. */ + BFD_RELOC_AARCH64_LD32_GOT_LO12_NC, + +/* Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry +for this symbol. Valid in LP64 ABI only. */ + BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC, + +/* Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry +for this symbol. Valid in LP64 ABI only. */ + BFD_RELOC_AARCH64_MOVW_GOTOFF_G1, + +/* Unsigned 15 bit byte offset for 64 bit load/store from the page of +the GOT entry for this symbol. Valid in LP64 ABI only. */ + BFD_RELOC_AARCH64_LD64_GOTOFF_LO15, + +/* Scaled 14 bit byte offset to the page base of the global offset table. */ + BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14, + +/* Scaled 15 bit byte offset to the page base of the global offset table. */ + BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15, + +/* Get to the page base of the global offset table entry for a symbols +tls_index structure as part of an adrp instruction using a 21 bit PC +relative value. Used in conjunction with +BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC. */ + BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21, + +/* AArch64 TLS General Dynamic */ + BFD_RELOC_AARCH64_TLSGD_ADR_PREL21, + +/* Unsigned 12 bit byte offset to global offset table entry for a symbols +tls_index structure. Used in conjunction with +BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21. */ + BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC, + +/* AArch64 TLS General Dynamic relocation. */ + BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC, + +/* AArch64 TLS General Dynamic relocation. */ + BFD_RELOC_AARCH64_TLSGD_MOVW_G1, + +/* AArch64 TLS INITIAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21, + +/* AArch64 TLS INITIAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC, + +/* AArch64 TLS INITIAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC, + +/* AArch64 TLS INITIAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19, + +/* AArch64 TLS INITIAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC, + +/* AArch64 TLS INITIAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1, + +/* bit[23:12] of byte offset to module TLS base address. */ + BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12, + +/* Unsigned 12 bit byte offset to module TLS base address. */ + BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12, + +/* No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12. */ + BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC, + +/* Unsigned 12 bit byte offset to global offset table entry for a symbols +tls_index structure. Used in conjunction with +BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21. */ + BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC, + +/* GOT entry page address for AArch64 TLS Local Dynamic, used with ADRP +instruction. */ + BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21, + +/* GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction. */ + BFD_RELOC_AARCH64_TLSLD_ADR_PREL21, + +/* bit[11:1] of byte offset to module TLS base address, encoded in ldst +instructions. */ + BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, + +/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check. */ + BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC, + +/* bit[11:2] of byte offset to module TLS base address, encoded in ldst +instructions. */ + BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, + +/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check. */ + BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC, + +/* bit[11:3] of byte offset to module TLS base address, encoded in ldst +instructions. */ + BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, + +/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check. */ + BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC, + +/* bit[11:0] of byte offset to module TLS base address, encoded in ldst +instructions. */ + BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, + +/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check. */ + BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC, + +/* bit[15:0] of byte offset to module TLS base address. */ + BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0, + +/* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0 */ + BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC, + +/* bit[31:16] of byte offset to module TLS base address. */ + BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1, + +/* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1 */ + BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC, + +/* bit[47:32] of byte offset to module TLS base address. */ + BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2, + +/* AArch64 TLS LOCAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2, + +/* AArch64 TLS LOCAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1, + +/* AArch64 TLS LOCAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC, + +/* AArch64 TLS LOCAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0, + +/* AArch64 TLS LOCAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC, + +/* AArch64 TLS LOCAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12, + +/* AArch64 TLS LOCAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12, + +/* AArch64 TLS LOCAL EXEC relocation. */ + BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC, + +/* bit[11:1] of byte offset to module TLS base address, encoded in ldst +instructions. */ + BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, + +/* Similar as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no overflow check. */ + BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC, + +/* bit[11:2] of byte offset to module TLS base address, encoded in ldst +instructions. */ + BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, + +/* Similar as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no overflow check. */ + BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC, + +/* bit[11:3] of byte offset to module TLS base address, encoded in ldst +instructions. */ + BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, + +/* Similar as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no overflow check. */ + BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC, + +/* bit[11:0] of byte offset to module TLS base address, encoded in ldst +instructions. */ + BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, + +/* Similar as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow check. */ + BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC, + +/* AArch64 TLS DESC relocation. */ + BFD_RELOC_AARCH64_TLSDESC_LD_PREL19, + +/* AArch64 TLS DESC relocation. */ + BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21, + +/* AArch64 TLS DESC relocation. */ + BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21, + +/* AArch64 TLS DESC relocation. */ + BFD_RELOC_AARCH64_TLSDESC_LD64_LO12, + +/* AArch64 TLS DESC relocation. */ + BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC, + +/* AArch64 TLS DESC relocation. */ + BFD_RELOC_AARCH64_TLSDESC_ADD_LO12, + +/* AArch64 TLS DESC relocation. */ + BFD_RELOC_AARCH64_TLSDESC_OFF_G1, + +/* AArch64 TLS DESC relocation. */ + BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC, + +/* AArch64 TLS DESC relocation. */ + BFD_RELOC_AARCH64_TLSDESC_LDR, + +/* AArch64 TLS DESC relocation. */ + BFD_RELOC_AARCH64_TLSDESC_ADD, + +/* AArch64 TLS DESC relocation. */ + BFD_RELOC_AARCH64_TLSDESC_CALL, + +/* AArch64 TLS relocation. */ + BFD_RELOC_AARCH64_COPY, + +/* AArch64 TLS relocation. */ + BFD_RELOC_AARCH64_GLOB_DAT, + +/* AArch64 TLS relocation. */ + BFD_RELOC_AARCH64_JUMP_SLOT, + +/* AArch64 TLS relocation. */ + BFD_RELOC_AARCH64_RELATIVE, + +/* AArch64 TLS relocation. */ + BFD_RELOC_AARCH64_TLS_DTPMOD, + +/* AArch64 TLS relocation. */ + BFD_RELOC_AARCH64_TLS_DTPREL, + +/* AArch64 TLS relocation. */ + BFD_RELOC_AARCH64_TLS_TPREL, + +/* AArch64 TLS relocation. */ + BFD_RELOC_AARCH64_TLSDESC, + +/* AArch64 support for STT_GNU_IFUNC. */ + BFD_RELOC_AARCH64_IRELATIVE, + +/* AArch64 pseudo relocation code to mark the end of the AArch64 +relocation enumerators that have direct mapping to ELF reloc codes. +There are a few more enumerators after this one; those are mainly +used by the AArch64 assembler for the internal fixup or to select +one of the above enumerators. */ + BFD_RELOC_AARCH64_RELOC_END, + +/* AArch64 pseudo relocation code to be used internally by the AArch64 +assembler and not (currently) written to any object files. */ + BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP, + +/* AArch64 unspecified load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */ + BFD_RELOC_AARCH64_LDST_LO12, + +/* AArch64 pseudo relocation code for TLS local dynamic mode. It's to be +used internally by the AArch64 assembler and not (currently) written to +any object files. */ + BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, + +/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check. */ + BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC, + +/* AArch64 pseudo relocation code for TLS local exec mode. It's to be +used internally by the AArch64 assembler and not (currently) written to +any object files. */ + BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, + +/* Similar as BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow check. */ + BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC, + +/* AArch64 pseudo relocation code to be used internally by the AArch64 +assembler and not (currently) written to any object files. */ + BFD_RELOC_AARCH64_LD_GOT_LO12_NC, + +/* AArch64 pseudo relocation code to be used internally by the AArch64 +assembler and not (currently) written to any object files. */ + BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC, + +/* AArch64 pseudo relocation code to be used internally by the AArch64 +assembler and not (currently) written to any object files. */ + BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC, + +/* Tilera TILEPro Relocations. */ + BFD_RELOC_TILEPRO_COPY, + BFD_RELOC_TILEPRO_GLOB_DAT, + BFD_RELOC_TILEPRO_JMP_SLOT, + BFD_RELOC_TILEPRO_RELATIVE, + BFD_RELOC_TILEPRO_BROFF_X1, + BFD_RELOC_TILEPRO_JOFFLONG_X1, + BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT, + BFD_RELOC_TILEPRO_IMM8_X0, + BFD_RELOC_TILEPRO_IMM8_Y0, + BFD_RELOC_TILEPRO_IMM8_X1, + BFD_RELOC_TILEPRO_IMM8_Y1, + BFD_RELOC_TILEPRO_DEST_IMM8_X1, + BFD_RELOC_TILEPRO_MT_IMM15_X1, + BFD_RELOC_TILEPRO_MF_IMM15_X1, + BFD_RELOC_TILEPRO_IMM16_X0, + BFD_RELOC_TILEPRO_IMM16_X1, + BFD_RELOC_TILEPRO_IMM16_X0_LO, + BFD_RELOC_TILEPRO_IMM16_X1_LO, + BFD_RELOC_TILEPRO_IMM16_X0_HI, + BFD_RELOC_TILEPRO_IMM16_X1_HI, + BFD_RELOC_TILEPRO_IMM16_X0_HA, + BFD_RELOC_TILEPRO_IMM16_X1_HA, + BFD_RELOC_TILEPRO_IMM16_X0_PCREL, + BFD_RELOC_TILEPRO_IMM16_X1_PCREL, + BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL, + BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL, + BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL, + BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL, + BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL, + BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL, + BFD_RELOC_TILEPRO_IMM16_X0_GOT, + BFD_RELOC_TILEPRO_IMM16_X1_GOT, + BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO, + BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO, + BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI, + BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI, + BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA, + BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA, + BFD_RELOC_TILEPRO_MMSTART_X0, + BFD_RELOC_TILEPRO_MMEND_X0, + BFD_RELOC_TILEPRO_MMSTART_X1, + BFD_RELOC_TILEPRO_MMEND_X1, + BFD_RELOC_TILEPRO_SHAMT_X0, + BFD_RELOC_TILEPRO_SHAMT_X1, + BFD_RELOC_TILEPRO_SHAMT_Y0, + BFD_RELOC_TILEPRO_SHAMT_Y1, + BFD_RELOC_TILEPRO_TLS_GD_CALL, + BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD, + BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD, + BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD, + BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD, + BFD_RELOC_TILEPRO_TLS_IE_LOAD, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA, + BFD_RELOC_TILEPRO_TLS_DTPMOD32, + BFD_RELOC_TILEPRO_TLS_DTPOFF32, + BFD_RELOC_TILEPRO_TLS_TPOFF32, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI, + BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA, + BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA, + +/* Tilera TILE-Gx Relocations. */ + BFD_RELOC_TILEGX_HW0, + BFD_RELOC_TILEGX_HW1, + BFD_RELOC_TILEGX_HW2, + BFD_RELOC_TILEGX_HW3, + BFD_RELOC_TILEGX_HW0_LAST, + BFD_RELOC_TILEGX_HW1_LAST, + BFD_RELOC_TILEGX_HW2_LAST, + BFD_RELOC_TILEGX_COPY, + BFD_RELOC_TILEGX_GLOB_DAT, + BFD_RELOC_TILEGX_JMP_SLOT, + BFD_RELOC_TILEGX_RELATIVE, + BFD_RELOC_TILEGX_BROFF_X1, + BFD_RELOC_TILEGX_JUMPOFF_X1, + BFD_RELOC_TILEGX_JUMPOFF_X1_PLT, + BFD_RELOC_TILEGX_IMM8_X0, + BFD_RELOC_TILEGX_IMM8_Y0, + BFD_RELOC_TILEGX_IMM8_X1, + BFD_RELOC_TILEGX_IMM8_Y1, + BFD_RELOC_TILEGX_DEST_IMM8_X1, + BFD_RELOC_TILEGX_MT_IMM14_X1, + BFD_RELOC_TILEGX_MF_IMM14_X1, + BFD_RELOC_TILEGX_MMSTART_X0, + BFD_RELOC_TILEGX_MMEND_X0, + BFD_RELOC_TILEGX_SHAMT_X0, + BFD_RELOC_TILEGX_SHAMT_X1, + BFD_RELOC_TILEGX_SHAMT_Y0, + BFD_RELOC_TILEGX_SHAMT_Y1, + BFD_RELOC_TILEGX_IMM16_X0_HW0, + BFD_RELOC_TILEGX_IMM16_X1_HW0, + BFD_RELOC_TILEGX_IMM16_X0_HW1, + BFD_RELOC_TILEGX_IMM16_X1_HW1, + BFD_RELOC_TILEGX_IMM16_X0_HW2, + BFD_RELOC_TILEGX_IMM16_X1_HW2, + BFD_RELOC_TILEGX_IMM16_X0_HW3, + BFD_RELOC_TILEGX_IMM16_X1_HW3, + BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST, + BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST, + BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST, + BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST, + BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST, + BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST, + BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT, + BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT, + BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT, + BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT, + BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT, + BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT, + BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE, + BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD, + BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL, + BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE, + BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE, + BFD_RELOC_TILEGX_TLS_DTPMOD64, + BFD_RELOC_TILEGX_TLS_DTPOFF64, + BFD_RELOC_TILEGX_TLS_TPOFF64, + BFD_RELOC_TILEGX_TLS_DTPMOD32, + BFD_RELOC_TILEGX_TLS_DTPOFF32, + BFD_RELOC_TILEGX_TLS_TPOFF32, + BFD_RELOC_TILEGX_TLS_GD_CALL, + BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD, + BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD, + BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD, + BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD, + BFD_RELOC_TILEGX_TLS_IE_LOAD, + BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD, + BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD, + BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD, + BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD, + +/* Linux eBPF relocations. */ + BFD_RELOC_BPF_64, + BFD_RELOC_BPF_32, + BFD_RELOC_BPF_16, + BFD_RELOC_BPF_DISP16, + BFD_RELOC_BPF_DISP32, + +/* Adapteva EPIPHANY - 8 bit signed pc-relative displacement */ + BFD_RELOC_EPIPHANY_SIMM8, + +/* Adapteva EPIPHANY - 24 bit signed pc-relative displacement */ + BFD_RELOC_EPIPHANY_SIMM24, + +/* Adapteva EPIPHANY - 16 most-significant bits of absolute address */ + BFD_RELOC_EPIPHANY_HIGH, + +/* Adapteva EPIPHANY - 16 least-significant bits of absolute address */ + BFD_RELOC_EPIPHANY_LOW, + +/* Adapteva EPIPHANY - 11 bit signed number - add/sub immediate */ + BFD_RELOC_EPIPHANY_SIMM11, + +/* Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement) */ + BFD_RELOC_EPIPHANY_IMM11, + +/* Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction. */ + BFD_RELOC_EPIPHANY_IMM8, + +/* Visium Relocations. */ + BFD_RELOC_VISIUM_HI16, + BFD_RELOC_VISIUM_LO16, + BFD_RELOC_VISIUM_IM16, + BFD_RELOC_VISIUM_REL16, + BFD_RELOC_VISIUM_HI16_PCREL, + BFD_RELOC_VISIUM_LO16_PCREL, + BFD_RELOC_VISIUM_IM16_PCREL, + +/* WebAssembly relocations. */ + BFD_RELOC_WASM32_LEB128, + BFD_RELOC_WASM32_LEB128_GOT, + BFD_RELOC_WASM32_LEB128_GOT_CODE, + BFD_RELOC_WASM32_LEB128_PLT, + BFD_RELOC_WASM32_PLT_INDEX, + BFD_RELOC_WASM32_ABS32_CODE, + BFD_RELOC_WASM32_COPY, + BFD_RELOC_WASM32_CODE_POINTER, + BFD_RELOC_WASM32_INDEX, + BFD_RELOC_WASM32_PLT_SIG, + +/* C-SKY relocations. */ + BFD_RELOC_CKCORE_NONE, + BFD_RELOC_CKCORE_ADDR32, + BFD_RELOC_CKCORE_PCREL_IMM8BY4, + BFD_RELOC_CKCORE_PCREL_IMM11BY2, + BFD_RELOC_CKCORE_PCREL_IMM4BY2, + BFD_RELOC_CKCORE_PCREL32, + BFD_RELOC_CKCORE_PCREL_JSR_IMM11BY2, + BFD_RELOC_CKCORE_GNU_VTINHERIT, + BFD_RELOC_CKCORE_GNU_VTENTRY, + BFD_RELOC_CKCORE_RELATIVE, + BFD_RELOC_CKCORE_COPY, + BFD_RELOC_CKCORE_GLOB_DAT, + BFD_RELOC_CKCORE_JUMP_SLOT, + BFD_RELOC_CKCORE_GOTOFF, + BFD_RELOC_CKCORE_GOTPC, + BFD_RELOC_CKCORE_GOT32, + BFD_RELOC_CKCORE_PLT32, + BFD_RELOC_CKCORE_ADDRGOT, + BFD_RELOC_CKCORE_ADDRPLT, + BFD_RELOC_CKCORE_PCREL_IMM26BY2, + BFD_RELOC_CKCORE_PCREL_IMM16BY2, + BFD_RELOC_CKCORE_PCREL_IMM16BY4, + BFD_RELOC_CKCORE_PCREL_IMM10BY2, + BFD_RELOC_CKCORE_PCREL_IMM10BY4, + BFD_RELOC_CKCORE_ADDR_HI16, + BFD_RELOC_CKCORE_ADDR_LO16, + BFD_RELOC_CKCORE_GOTPC_HI16, + BFD_RELOC_CKCORE_GOTPC_LO16, + BFD_RELOC_CKCORE_GOTOFF_HI16, + BFD_RELOC_CKCORE_GOTOFF_LO16, + BFD_RELOC_CKCORE_GOT12, + BFD_RELOC_CKCORE_GOT_HI16, + BFD_RELOC_CKCORE_GOT_LO16, + BFD_RELOC_CKCORE_PLT12, + BFD_RELOC_CKCORE_PLT_HI16, + BFD_RELOC_CKCORE_PLT_LO16, + BFD_RELOC_CKCORE_ADDRGOT_HI16, + BFD_RELOC_CKCORE_ADDRGOT_LO16, + BFD_RELOC_CKCORE_ADDRPLT_HI16, + BFD_RELOC_CKCORE_ADDRPLT_LO16, + BFD_RELOC_CKCORE_PCREL_JSR_IMM26BY2, + BFD_RELOC_CKCORE_TOFFSET_LO16, + BFD_RELOC_CKCORE_DOFFSET_LO16, + BFD_RELOC_CKCORE_PCREL_IMM18BY2, + BFD_RELOC_CKCORE_DOFFSET_IMM18, + BFD_RELOC_CKCORE_DOFFSET_IMM18BY2, + BFD_RELOC_CKCORE_DOFFSET_IMM18BY4, + BFD_RELOC_CKCORE_GOTOFF_IMM18, + BFD_RELOC_CKCORE_GOT_IMM18BY4, + BFD_RELOC_CKCORE_PLT_IMM18BY4, + BFD_RELOC_CKCORE_PCREL_IMM7BY4, + BFD_RELOC_CKCORE_TLS_LE32, + BFD_RELOC_CKCORE_TLS_IE32, + BFD_RELOC_CKCORE_TLS_GD32, + BFD_RELOC_CKCORE_TLS_LDM32, + BFD_RELOC_CKCORE_TLS_LDO32, + BFD_RELOC_CKCORE_TLS_DTPMOD32, + BFD_RELOC_CKCORE_TLS_DTPOFF32, + BFD_RELOC_CKCORE_TLS_TPOFF32, + BFD_RELOC_CKCORE_PCREL_FLRW_IMM8BY4, + BFD_RELOC_CKCORE_NOJSRI, + BFD_RELOC_CKCORE_CALLGRAPH, + BFD_RELOC_CKCORE_IRELATIVE, + BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4, + BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4, + +/* S12Z relocations. */ + BFD_RELOC_S12Z_OPR, + BFD_RELOC_UNUSED }; + +typedef enum bfd_reloc_code_real bfd_reloc_code_real_type; +reloc_howto_type *bfd_reloc_type_lookup + (bfd *abfd, bfd_reloc_code_real_type code); +reloc_howto_type *bfd_reloc_name_lookup + (bfd *abfd, const char *reloc_name); + +const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code); + +/* Extracted from syms.c. */ + +typedef struct bfd_symbol +{ + /* A pointer to the BFD which owns the symbol. This information + is necessary so that a back end can work out what additional + information (invisible to the application writer) is carried + with the symbol. + + This field is *almost* redundant, since you can use section->owner + instead, except that some symbols point to the global sections + bfd_{abs,com,und}_section. This could be fixed by making + these globals be per-bfd (or per-target-flavor). FIXME. */ + struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */ + + /* The text of the symbol. The name is left alone, and not copied; the + application may not alter it. */ + const char *name; + + /* The value of the symbol. This really should be a union of a + numeric value with a pointer, since some flags indicate that + a pointer to another symbol is stored here. */ + symvalue value; + + /* Attributes of a symbol. */ +#define BSF_NO_FLAGS 0 + + /* The symbol has local scope; <> in <>. The value + is the offset into the section of the data. */ +#define BSF_LOCAL (1 << 0) + + /* The symbol has global scope; initialized data in <>. The + value is the offset into the section of the data. */ +#define BSF_GLOBAL (1 << 1) + + /* The symbol has global scope and is exported. The value is + the offset into the section of the data. */ +#define BSF_EXPORT BSF_GLOBAL /* No real difference. */ + + /* A normal C symbol would be one of: + <>, <> or <>. */ + + /* The symbol is a debugging record. The value has an arbitrary + meaning, unless BSF_DEBUGGING_RELOC is also set. */ +#define BSF_DEBUGGING (1 << 2) + + /* The symbol denotes a function entry point. Used in ELF, + perhaps others someday. */ +#define BSF_FUNCTION (1 << 3) + + /* Used by the linker. */ +#define BSF_KEEP (1 << 5) + + /* An ELF common symbol. */ +#define BSF_ELF_COMMON (1 << 6) + + /* A weak global symbol, overridable without warnings by + a regular global symbol of the same name. */ +#define BSF_WEAK (1 << 7) + + /* This symbol was created to point to a section, e.g. ELF's + STT_SECTION symbols. */ +#define BSF_SECTION_SYM (1 << 8) + + /* The symbol used to be a common symbol, but now it is + allocated. */ +#define BSF_OLD_COMMON (1 << 9) + + /* In some files the type of a symbol sometimes alters its + location in an output file - ie in coff a <> symbol + which is also <> symbol appears where it was + declared and not at the end of a section. This bit is set + by the target BFD part to convey this information. */ +#define BSF_NOT_AT_END (1 << 10) + + /* Signal that the symbol is the label of constructor section. */ +#define BSF_CONSTRUCTOR (1 << 11) + + /* Signal that the symbol is a warning symbol. The name is a + warning. The name of the next symbol is the one to warn about; + if a reference is made to a symbol with the same name as the next + symbol, a warning is issued by the linker. */ +#define BSF_WARNING (1 << 12) + + /* Signal that the symbol is indirect. This symbol is an indirect + pointer to the symbol with the same name as the next symbol. */ +#define BSF_INDIRECT (1 << 13) + + /* BSF_FILE marks symbols that contain a file name. This is used + for ELF STT_FILE symbols. */ +#define BSF_FILE (1 << 14) + + /* Symbol is from dynamic linking information. */ +#define BSF_DYNAMIC (1 << 15) + + /* The symbol denotes a data object. Used in ELF, and perhaps + others someday. */ +#define BSF_OBJECT (1 << 16) + + /* This symbol is a debugging symbol. The value is the offset + into the section of the data. BSF_DEBUGGING should be set + as well. */ +#define BSF_DEBUGGING_RELOC (1 << 17) + + /* This symbol is thread local. Used in ELF. */ +#define BSF_THREAD_LOCAL (1 << 18) + + /* This symbol represents a complex relocation expression, + with the expression tree serialized in the symbol name. */ +#define BSF_RELC (1 << 19) + + /* This symbol represents a signed complex relocation expression, + with the expression tree serialized in the symbol name. */ +#define BSF_SRELC (1 << 20) + + /* This symbol was created by bfd_get_synthetic_symtab. */ +#define BSF_SYNTHETIC (1 << 21) + + /* This symbol is an indirect code object. Unrelated to BSF_INDIRECT. + The dynamic linker will compute the value of this symbol by + calling the function that it points to. BSF_FUNCTION must + also be also set. */ +#define BSF_GNU_INDIRECT_FUNCTION (1 << 22) + /* This symbol is a globally unique data object. The dynamic linker + will make sure that in the entire process there is just one symbol + with this name and type in use. BSF_OBJECT must also be set. */ +#define BSF_GNU_UNIQUE (1 << 23) + + /* This section symbol should be included in the symbol table. */ +#define BSF_SECTION_SYM_USED (1 << 24) + + flagword flags; + + /* A pointer to the section to which this symbol is + relative. This will always be non NULL, there are special + sections for undefined and absolute symbols. */ + struct bfd_section *section; + + /* Back end special data. */ + union + { + void *p; + bfd_vma i; + } + udata; +} +asymbol; + +#define bfd_get_symtab_upper_bound(abfd) \ + BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd)) + +bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym); + +bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name); + +#define bfd_is_local_label_name(abfd, name) \ + BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name)) + +bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym); + +#define bfd_is_target_special_symbol(abfd, sym) \ + BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym)) + +#define bfd_canonicalize_symtab(abfd, location) \ + BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location)) + +bfd_boolean bfd_set_symtab + (bfd *abfd, asymbol **location, unsigned int count); + +void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol); + +#define bfd_make_empty_symbol(abfd) \ + BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd)) + +asymbol *_bfd_generic_make_empty_symbol (bfd *); + +#define bfd_make_debug_symbol(abfd,ptr,size) \ + BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size)) + +int bfd_decode_symclass (asymbol *symbol); + +bfd_boolean bfd_is_undefined_symclass (int symclass); + +void bfd_symbol_info (asymbol *symbol, symbol_info *ret); + +bfd_boolean bfd_copy_private_symbol_data + (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym); + +#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \ + BFD_SEND (obfd, _bfd_copy_private_symbol_data, \ + (ibfd, isymbol, obfd, osymbol)) + +/* Extracted from bfd.c. */ + +enum bfd_direction + { + no_direction = 0, + read_direction = 1, + write_direction = 2, + both_direction = 3 + }; + +enum bfd_plugin_format + { + bfd_plugin_unknown = 0, + bfd_plugin_yes = 1, + bfd_plugin_no = 2 + }; + +struct bfd_build_id + { + bfd_size_type size; + bfd_byte data[1]; + }; + +struct bfd +{ + /* The filename the application opened the BFD with. */ + const char *filename; + + /* A pointer to the target jump table. */ + const struct bfd_target *xvec; + + /* The IOSTREAM, and corresponding IO vector that provide access + to the file backing the BFD. */ + void *iostream; + const struct bfd_iovec *iovec; + + /* The caching routines use these to maintain a + least-recently-used list of BFDs. */ + struct bfd *lru_prev, *lru_next; + + /* Track current file position (or current buffer offset for + in-memory BFDs). When a file is closed by the caching routines, + BFD retains state information on the file here. */ + ufile_ptr where; + + /* File modified time, if mtime_set is TRUE. */ + long mtime; + + /* A unique identifier of the BFD */ + unsigned int id; + + /* Format_specific flags. */ + flagword flags; + + /* Values that may appear in the flags field of a BFD. These also + appear in the object_flags field of the bfd_target structure, where + they indicate the set of flags used by that backend (not all flags + are meaningful for all object file formats) (FIXME: at the moment, + the object_flags values have mostly just been copied from backend + to another, and are not necessarily correct). */ + +#define BFD_NO_FLAGS 0x0 + + /* BFD contains relocation entries. */ +#define HAS_RELOC 0x1 + + /* BFD is directly executable. */ +#define EXEC_P 0x2 + + /* BFD has line number information (basically used for F_LNNO in a + COFF header). */ +#define HAS_LINENO 0x4 + + /* BFD has debugging information. */ +#define HAS_DEBUG 0x08 + + /* BFD has symbols. */ +#define HAS_SYMS 0x10 + + /* BFD has local symbols (basically used for F_LSYMS in a COFF + header). */ +#define HAS_LOCALS 0x20 + + /* BFD is a dynamic object. */ +#define DYNAMIC 0x40 + + /* Text section is write protected (if D_PAGED is not set, this is + like an a.out NMAGIC file) (the linker sets this by default, but + clears it for -r or -N). */ +#define WP_TEXT 0x80 + + /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the + linker sets this by default, but clears it for -r or -n or -N). */ +#define D_PAGED 0x100 + + /* BFD is relaxable (this means that bfd_relax_section may be able to + do something) (sometimes bfd_relax_section can do something even if + this is not set). */ +#define BFD_IS_RELAXABLE 0x200 + + /* This may be set before writing out a BFD to request using a + traditional format. For example, this is used to request that when + writing out an a.out object the symbols not be hashed to eliminate + duplicates. */ +#define BFD_TRADITIONAL_FORMAT 0x400 + + /* This flag indicates that the BFD contents are actually cached + in memory. If this is set, iostream points to a bfd_in_memory + struct. */ +#define BFD_IN_MEMORY 0x800 + + /* This BFD has been created by the linker and doesn't correspond + to any input file. */ +#define BFD_LINKER_CREATED 0x1000 + + /* This may be set before writing out a BFD to request that it + be written using values for UIDs, GIDs, timestamps, etc. that + will be consistent from run to run. */ +#define BFD_DETERMINISTIC_OUTPUT 0x2000 + + /* Compress sections in this BFD. */ +#define BFD_COMPRESS 0x4000 + + /* Decompress sections in this BFD. */ +#define BFD_DECOMPRESS 0x8000 + + /* BFD is a dummy, for plugins. */ +#define BFD_PLUGIN 0x10000 + + /* Compress sections in this BFD with SHF_COMPRESSED from gABI. */ +#define BFD_COMPRESS_GABI 0x20000 + + /* Convert ELF common symbol type to STT_COMMON or STT_OBJECT in this + BFD. */ +#define BFD_CONVERT_ELF_COMMON 0x40000 + + /* Use the ELF STT_COMMON type in this BFD. */ +#define BFD_USE_ELF_STT_COMMON 0x80000 + + /* Put pathnames into archives (non-POSIX). */ +#define BFD_ARCHIVE_FULL_PATH 0x100000 + + /* Flags bits to be saved in bfd_preserve_save. */ +#define BFD_FLAGS_SAVED \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \ + | BFD_PLUGIN | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON \ + | BFD_USE_ELF_STT_COMMON) + + /* Flags bits which are for BFD use only. */ +#define BFD_FLAGS_FOR_BFD_USE_MASK \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \ + | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \ + | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON) + + /* The format which belongs to the BFD. (object, core, etc.) */ + ENUM_BITFIELD (bfd_format) format : 3; + + /* The direction with which the BFD was opened. */ + ENUM_BITFIELD (bfd_direction) direction : 2; + + /* Is the file descriptor being cached? That is, can it be closed as + needed, and re-opened when accessed later? */ + unsigned int cacheable : 1; + + /* Marks whether there was a default target specified when the + BFD was opened. This is used to select which matching algorithm + to use to choose the back end. */ + unsigned int target_defaulted : 1; + + /* ... and here: (``once'' means at least once). */ + unsigned int opened_once : 1; + + /* Set if we have a locally maintained mtime value, rather than + getting it from the file each time. */ + unsigned int mtime_set : 1; + + /* Flag set if symbols from this BFD should not be exported. */ + unsigned int no_export : 1; + + /* Remember when output has begun, to stop strange things + from happening. */ + unsigned int output_has_begun : 1; + + /* Have archive map. */ + unsigned int has_armap : 1; + + /* Set if this is a thin archive. */ + unsigned int is_thin_archive : 1; + + /* Set if this archive should not cache element positions. */ + unsigned int no_element_cache : 1; + + /* Set if only required symbols should be added in the link hash table for + this object. Used by VMS linkers. */ + unsigned int selective_search : 1; + + /* Set if this is the linker output BFD. */ + unsigned int is_linker_output : 1; + + /* Set if this is the linker input BFD. */ + unsigned int is_linker_input : 1; + + /* If this is an input for a compiler plug-in library. */ + ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2; + + /* Set if this is a plugin output file. */ + unsigned int lto_output : 1; + + /* Set if this is a slim LTO object not loaded with a compiler plugin. */ + unsigned int lto_slim_object : 1; + + /* Do not attempt to modify this file. Set when detecting errors + that BFD is not prepared to handle for objcopy/strip. */ + unsigned int read_only : 1; + + /* Set to dummy BFD created when claimed by a compiler plug-in + library. */ + bfd *plugin_dummy_bfd; + + /* The offset of this bfd in the file, typically 0 if it is not + contained in an archive. */ + ufile_ptr origin; + + /* The origin in the archive of the proxy entry. This will + normally be the same as origin, except for thin archives, + when it will contain the current offset of the proxy in the + thin archive rather than the offset of the bfd in its actual + container. */ + ufile_ptr proxy_origin; + + /* A hash table for section names. */ + struct bfd_hash_table section_htab; + + /* Pointer to linked list of sections. */ + struct bfd_section *sections; + + /* The last section on the section list. */ + struct bfd_section *section_last; + + /* The number of sections. */ + unsigned int section_count; + + /* A field used by _bfd_generic_link_add_archive_symbols. This will + be used only for archive elements. */ + int archive_pass; + + /* Stuff only useful for object files: + The start address. */ + bfd_vma start_address; + + /* Symbol table for output BFD (with symcount entries). + Also used by the linker to cache input BFD symbols. */ + struct bfd_symbol **outsymbols; + + /* Used for input and output. */ + unsigned int symcount; + + /* Used for slurped dynamic symbol tables. */ + unsigned int dynsymcount; + + /* Pointer to structure which contains architecture information. */ + const struct bfd_arch_info *arch_info; + + /* Cached length of file for bfd_get_size. 0 until bfd_get_size is + called, 1 if stat returns an error or the file size is too large to + return in ufile_ptr. Both 0 and 1 should be treated as "unknown". */ + ufile_ptr size; + + /* Stuff only useful for archives. */ + void *arelt_data; + struct bfd *my_archive; /* The containing archive BFD. */ + struct bfd *archive_next; /* The next BFD in the archive. */ + struct bfd *archive_head; /* The first BFD in the archive. */ + struct bfd *nested_archives; /* List of nested archive in a flattened + thin archive. */ + + union { + /* For input BFDs, a chain of BFDs involved in a link. */ + struct bfd *next; + /* For output BFD, the linker hash table. */ + struct bfd_link_hash_table *hash; + } link; + + /* Used by the back end to hold private data. */ + union + { + struct aout_data_struct *aout_data; + struct artdata *aout_ar_data; + struct coff_tdata *coff_obj_data; + struct pe_tdata *pe_obj_data; + struct xcoff_tdata *xcoff_obj_data; + struct ecoff_tdata *ecoff_obj_data; + struct srec_data_struct *srec_data; + struct verilog_data_struct *verilog_data; + struct ihex_data_struct *ihex_data; + struct tekhex_data_struct *tekhex_data; + struct elf_obj_tdata *elf_obj_data; + struct mmo_data_struct *mmo_data; + struct sun_core_struct *sun_core_data; + struct sco5_core_struct *sco5_core_data; + struct trad_core_struct *trad_core_data; + struct som_data_struct *som_data; + struct hpux_core_struct *hpux_core_data; + struct hppabsd_core_struct *hppabsd_core_data; + struct sgi_core_struct *sgi_core_data; + struct lynx_core_struct *lynx_core_data; + struct osf_core_struct *osf_core_data; + struct cisco_core_struct *cisco_core_data; + struct versados_data_struct *versados_data; + struct netbsd_core_struct *netbsd_core_data; + struct mach_o_data_struct *mach_o_data; + struct mach_o_fat_data_struct *mach_o_fat_data; + struct plugin_data_struct *plugin_data; + struct bfd_pef_data_struct *pef_data; + struct bfd_pef_xlib_data_struct *pef_xlib_data; + struct bfd_sym_data_struct *sym_data; + void *any; + } + tdata; + + /* Used by the application to hold private data. */ + void *usrdata; + + /* Where all the allocated stuff under this BFD goes. This is a + struct objalloc *, but we use void * to avoid requiring the inclusion + of objalloc.h. */ + void *memory; + + /* For input BFDs, the build ID, if the object has one. */ + const struct bfd_build_id *build_id; +}; + +static inline const char * +bfd_get_filename (const bfd *abfd) +{ + return abfd->filename; +} + +static inline bfd_boolean +bfd_get_cacheable (const bfd *abfd) +{ + return abfd->cacheable; +} + +static inline enum bfd_format +bfd_get_format (const bfd *abfd) +{ + return abfd->format; +} + +static inline flagword +bfd_get_file_flags (const bfd *abfd) +{ + return abfd->flags; +} + +static inline bfd_vma +bfd_get_start_address (const bfd *abfd) +{ + return abfd->start_address; +} + +static inline unsigned int +bfd_get_symcount (const bfd *abfd) +{ + return abfd->symcount; +} + +static inline unsigned int +bfd_get_dynamic_symcount (const bfd *abfd) +{ + return abfd->dynsymcount; +} + +static inline struct bfd_symbol ** +bfd_get_outsymbols (const bfd *abfd) +{ + return abfd->outsymbols; +} + +static inline unsigned int +bfd_count_sections (const bfd *abfd) +{ + return abfd->section_count; +} + +static inline bfd_boolean +bfd_has_map (const bfd *abfd) +{ + return abfd->has_armap; +} + +static inline bfd_boolean +bfd_is_thin_archive (const bfd *abfd) +{ + return abfd->is_thin_archive; +} + +static inline void * +bfd_usrdata (const bfd *abfd) +{ + return abfd->usrdata; +} + +/* See note beside bfd_set_section_userdata. */ +static inline bfd_boolean +bfd_set_cacheable (bfd * abfd, bfd_boolean val) +{ + abfd->cacheable = val; + return TRUE; +} + +static inline void +bfd_set_thin_archive (bfd *abfd, bfd_boolean val) +{ + abfd->is_thin_archive = val; +} + +static inline void +bfd_set_usrdata (bfd *abfd, void *val) +{ + abfd->usrdata = val; +} + +static inline asection * +bfd_asymbol_section (const asymbol *sy) +{ + return sy->section; +} + +static inline bfd_vma +bfd_asymbol_value (const asymbol *sy) +{ + return sy->section->vma + sy->value; +} + +static inline const char * +bfd_asymbol_name (const asymbol *sy) +{ + return sy->name; +} + +static inline struct bfd * +bfd_asymbol_bfd (const asymbol *sy) +{ + return sy->the_bfd; +} + +static inline void +bfd_set_asymbol_name (asymbol *sy, const char *name) +{ + sy->name = name; +} + +static inline bfd_size_type +bfd_get_section_limit_octets (const bfd *abfd, const asection *sec) +{ + if (abfd->direction != write_direction && sec->rawsize != 0) + return sec->rawsize; + return sec->size; +} + +/* Find the address one past the end of SEC. */ +static inline bfd_size_type +bfd_get_section_limit (const bfd *abfd, const asection *sec) +{ + return (bfd_get_section_limit_octets (abfd, sec) + / bfd_octets_per_byte (abfd, sec)); +} + +/* Functions to handle insertion and deletion of a bfd's sections. These + only handle the list pointers, ie. do not adjust section_count, + target_index etc. */ +static inline void +bfd_section_list_remove (bfd *abfd, asection *s) +{ + asection *next = s->next; + asection *prev = s->prev; + if (prev) + prev->next = next; + else + abfd->sections = next; + if (next) + next->prev = prev; + else + abfd->section_last = prev; +} + +static inline void +bfd_section_list_append (bfd *abfd, asection *s) +{ + s->next = 0; + if (abfd->section_last) + { + s->prev = abfd->section_last; + abfd->section_last->next = s; + } + else + { + s->prev = 0; + abfd->sections = s; + } + abfd->section_last = s; +} + +static inline void +bfd_section_list_prepend (bfd *abfd, asection *s) +{ + s->prev = 0; + if (abfd->sections) + { + s->next = abfd->sections; + abfd->sections->prev = s; + } + else + { + s->next = 0; + abfd->section_last = s; + } + abfd->sections = s; +} + +static inline void +bfd_section_list_insert_after (bfd *abfd, asection *a, asection *s) +{ + asection *next = a->next; + s->next = next; + s->prev = a; + a->next = s; + if (next) + next->prev = s; + else + abfd->section_last = s; +} + +static inline void +bfd_section_list_insert_before (bfd *abfd, asection *b, asection *s) +{ + asection *prev = b->prev; + s->prev = prev; + s->next = b; + b->prev = s; + if (prev) + prev->next = s; + else + abfd->sections = s; +} + +static inline bfd_boolean +bfd_section_removed_from_list (const bfd *abfd, const asection *s) +{ + return s->next ? s->next->prev != s : abfd->section_last != s; +} + + +typedef enum bfd_error +{ + bfd_error_no_error = 0, + bfd_error_system_call, + bfd_error_invalid_target, + bfd_error_wrong_format, + bfd_error_wrong_object_format, + bfd_error_invalid_operation, + bfd_error_no_memory, + bfd_error_no_symbols, + bfd_error_no_armap, + bfd_error_no_more_archived_files, + bfd_error_malformed_archive, + bfd_error_missing_dso, + bfd_error_file_not_recognized, + bfd_error_file_ambiguously_recognized, + bfd_error_no_contents, + bfd_error_nonrepresentable_section, + bfd_error_no_debug_section, + bfd_error_bad_value, + bfd_error_file_truncated, + bfd_error_file_too_big, + bfd_error_sorry, + bfd_error_on_input, + bfd_error_invalid_error_code +} +bfd_error_type; + +bfd_error_type bfd_get_error (void); + +void bfd_set_error (bfd_error_type error_tag); + +void bfd_set_input_error (bfd *input, bfd_error_type error_tag); + +const char *bfd_errmsg (bfd_error_type error_tag); + +void bfd_perror (const char *message); + + +typedef void (*bfd_error_handler_type) (const char *, va_list); + +void _bfd_error_handler (const char *fmt, ...) ATTRIBUTE_PRINTF_1; + +bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type); + +void bfd_set_error_program_name (const char *); + + +typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg, + const char *bfd_version, + const char *bfd_file, + int bfd_line); + +bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type); + +long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect); + +long bfd_canonicalize_reloc + (bfd *abfd, asection *sec, arelent **loc, asymbol **syms); + +void bfd_set_reloc + (bfd *abfd, asection *sec, arelent **rel, unsigned int count); + +#define bfd_set_reloc(abfd, asect, location, count) \ + BFD_SEND (abfd, _bfd_set_reloc, (abfd, asect, location, count)) +bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags); + +int bfd_get_arch_size (bfd *abfd); + +int bfd_get_sign_extend_vma (bfd *abfd); + +bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma); + +unsigned int bfd_get_gp_size (bfd *abfd); + +void bfd_set_gp_size (bfd *abfd, unsigned int i); + +bfd_vma bfd_scan_vma (const char *string, const char **end, int base); + +bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd); + +#define bfd_copy_private_header_data(ibfd, obfd) \ + BFD_SEND (obfd, _bfd_copy_private_header_data, \ + (ibfd, obfd)) +bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd); + +#define bfd_copy_private_bfd_data(ibfd, obfd) \ + BFD_SEND (obfd, _bfd_copy_private_bfd_data, \ + (ibfd, obfd)) +bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags); + +#define bfd_set_private_flags(abfd, flags) \ + BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags)) +#define bfd_sizeof_headers(abfd, info) \ + BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info)) + +#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \ + BFD_SEND (abfd, _bfd_find_nearest_line, \ + (abfd, syms, sec, off, file, func, line, NULL)) + +#define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \ + line, disc) \ + BFD_SEND (abfd, _bfd_find_nearest_line, \ + (abfd, syms, sec, off, file, func, line, disc)) + +#define bfd_find_line(abfd, syms, sym, file, line) \ + BFD_SEND (abfd, _bfd_find_line, \ + (abfd, syms, sym, file, line)) + +#define bfd_find_inliner_info(abfd, file, func, line) \ + BFD_SEND (abfd, _bfd_find_inliner_info, \ + (abfd, file, func, line)) + +#define bfd_debug_info_start(abfd) \ + BFD_SEND (abfd, _bfd_debug_info_start, (abfd)) + +#define bfd_debug_info_end(abfd) \ + BFD_SEND (abfd, _bfd_debug_info_end, (abfd)) + +#define bfd_debug_info_accumulate(abfd, section) \ + BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section)) + +#define bfd_stat_arch_elt(abfd, stat) \ + BFD_SEND (abfd->my_archive ? abfd->my_archive : abfd, \ + _bfd_stat_arch_elt, (abfd, stat)) + +#define bfd_update_armap_timestamp(abfd) \ + BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd)) + +#define bfd_set_arch_mach(abfd, arch, mach)\ + BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach)) + +#define bfd_relax_section(abfd, section, link_info, again) \ + BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again)) + +#define bfd_gc_sections(abfd, link_info) \ + BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info)) + +#define bfd_lookup_section_flags(link_info, flag_info, section) \ + BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section)) + +#define bfd_merge_sections(abfd, link_info) \ + BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info)) + +#define bfd_is_group_section(abfd, sec) \ + BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec)) + +#define bfd_group_name(abfd, sec) \ + BFD_SEND (abfd, _bfd_group_name, (abfd, sec)) + +#define bfd_discard_group(abfd, sec) \ + BFD_SEND (abfd, _bfd_discard_group, (abfd, sec)) + +#define bfd_link_hash_table_create(abfd) \ + BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd)) + +#define bfd_link_add_symbols(abfd, info) \ + BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info)) + +#define bfd_link_just_syms(abfd, sec, info) \ + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info)) + +#define bfd_final_link(abfd, info) \ + BFD_SEND (abfd, _bfd_final_link, (abfd, info)) + +#define bfd_free_cached_info(abfd) \ + BFD_SEND (abfd, _bfd_free_cached_info, (abfd)) + +#define bfd_get_dynamic_symtab_upper_bound(abfd) \ + BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd)) + +#define bfd_print_private_bfd_data(abfd, file)\ + BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file)) + +#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \ + BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols)) + +#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \ + BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \ + dyncount, dynsyms, ret)) + +#define bfd_get_dynamic_reloc_upper_bound(abfd) \ + BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd)) + +#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \ + BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms)) + +extern bfd_byte *bfd_get_relocated_section_contents + (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, + bfd_boolean, asymbol **); + +bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative); + +bfd_vma bfd_emul_get_maxpagesize (const char *); + +bfd_vma bfd_emul_get_commonpagesize (const char *, bfd_boolean); + +char *bfd_demangle (bfd *, const char *, int); + +void bfd_update_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec); + +bfd_boolean bfd_check_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec, + bfd_size_type *uncompressed_size, + unsigned int *uncompressed_alignment_power); + +int bfd_get_compression_header_size (bfd *abfd, asection *sec); + +bfd_size_type bfd_convert_section_size + (bfd *ibfd, asection *isec, bfd *obfd, bfd_size_type size); + +bfd_boolean bfd_convert_section_contents + (bfd *ibfd, asection *isec, bfd *obfd, + bfd_byte **ptr, bfd_size_type *ptr_size); + +/* Extracted from archive.c. */ +symindex bfd_get_next_mapent + (bfd *abfd, symindex previous, carsym **sym); + +bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head); + +bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous); + +/* Extracted from corefile.c. */ +const char *bfd_core_file_failing_command (bfd *abfd); + +int bfd_core_file_failing_signal (bfd *abfd); + +int bfd_core_file_pid (bfd *abfd); + +bfd_boolean core_file_matches_executable_p + (bfd *core_bfd, bfd *exec_bfd); + +bfd_boolean generic_core_file_matches_executable_p + (bfd *core_bfd, bfd *exec_bfd); + +/* Extracted from targets.c. */ +#define BFD_SEND(bfd, message, arglist) \ + ((*((bfd)->xvec->message)) arglist) + +#ifdef DEBUG_BFD_SEND +#undef BFD_SEND +#define BFD_SEND(bfd, message, arglist) \ + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ + ((*((bfd)->xvec->message)) arglist) : \ + (bfd_assert (__FILE__,__LINE__), NULL)) +#endif +#define BFD_SEND_FMT(bfd, message, arglist) \ + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) + +#ifdef DEBUG_BFD_SEND +#undef BFD_SEND_FMT +#define BFD_SEND_FMT(bfd, message, arglist) \ + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \ + (bfd_assert (__FILE__,__LINE__), NULL)) +#endif + +/* Defined to TRUE if unused section symbol should be kept. */ +#ifndef TARGET_KEEP_UNUSED_SECTION_SYMBOLS +#define TARGET_KEEP_UNUSED_SECTION_SYMBOLS TRUE +#endif + +enum bfd_flavour +{ + /* N.B. Update bfd_flavour_name if you change this. */ + bfd_target_unknown_flavour, + bfd_target_aout_flavour, + bfd_target_coff_flavour, + bfd_target_ecoff_flavour, + bfd_target_xcoff_flavour, + bfd_target_elf_flavour, + bfd_target_tekhex_flavour, + bfd_target_srec_flavour, + bfd_target_verilog_flavour, + bfd_target_ihex_flavour, + bfd_target_som_flavour, + bfd_target_os9k_flavour, + bfd_target_versados_flavour, + bfd_target_msdos_flavour, + bfd_target_ovax_flavour, + bfd_target_evax_flavour, + bfd_target_mmo_flavour, + bfd_target_mach_o_flavour, + bfd_target_pef_flavour, + bfd_target_pef_xlib_flavour, + bfd_target_sym_flavour +}; + +enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN }; + +/* Forward declaration. */ +typedef struct bfd_link_info _bfd_link_info; + +/* Forward declaration. */ +typedef struct flag_info flag_info; + +typedef void (*bfd_cleanup) (bfd *); + +typedef struct bfd_target +{ + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */ + const char *name; + + /* The "flavour" of a back end is a general indication about + the contents of a file. */ + enum bfd_flavour flavour; + + /* The order of bytes within the data area of a file. */ + enum bfd_endian byteorder; + + /* The order of bytes within the header parts of a file. */ + enum bfd_endian header_byteorder; + + /* A mask of all the flags which an executable may have set - + from the set <>, <>, ...<>. */ + flagword object_flags; + + /* A mask of all the flags which a section may have set - from + the set <>, <>, ...<>. */ + flagword section_flags; + + /* The character normally found at the front of a symbol. + (if any), perhaps `_'. */ + char symbol_leading_char; + + /* The pad character for file names within an archive header. */ + char ar_pad_char; + + /* The maximum number of characters in an archive header. */ + unsigned char ar_max_namelen; + + /* How well this target matches, used to select between various + possible targets when more than one target matches. */ + unsigned char match_priority; + + /* TRUE if unused section symbols should be kept. */ + bfd_boolean keep_unused_section_symbols; + + /* Entries for byte swapping for data. These are different from the + other entry points, since they don't take a BFD as the first argument. + Certain other handlers could do the same. */ + bfd_uint64_t (*bfd_getx64) (const void *); + bfd_int64_t (*bfd_getx_signed_64) (const void *); + void (*bfd_putx64) (bfd_uint64_t, void *); + bfd_vma (*bfd_getx32) (const void *); + bfd_signed_vma (*bfd_getx_signed_32) (const void *); + void (*bfd_putx32) (bfd_vma, void *); + bfd_vma (*bfd_getx16) (const void *); + bfd_signed_vma (*bfd_getx_signed_16) (const void *); + void (*bfd_putx16) (bfd_vma, void *); + + /* Byte swapping for the headers. */ + bfd_uint64_t (*bfd_h_getx64) (const void *); + bfd_int64_t (*bfd_h_getx_signed_64) (const void *); + void (*bfd_h_putx64) (bfd_uint64_t, void *); + bfd_vma (*bfd_h_getx32) (const void *); + bfd_signed_vma (*bfd_h_getx_signed_32) (const void *); + void (*bfd_h_putx32) (bfd_vma, void *); + bfd_vma (*bfd_h_getx16) (const void *); + bfd_signed_vma (*bfd_h_getx_signed_16) (const void *); + void (*bfd_h_putx16) (bfd_vma, void *); + + /* Format dependent routines: these are vectors of entry points + within the target vector structure, one for each format to check. */ + + /* Check the format of a file being read. Return a <> on + success or zero on failure. */ + bfd_cleanup (*_bfd_check_format[bfd_type_end]) (bfd *); + + /* Set the format of a file being written. */ + bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *); + + /* Write cached information into a file being written, at <>. */ + bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *); + + + /* Generic entry points. */ +#define BFD_JUMP_TABLE_GENERIC(NAME) \ + NAME##_close_and_cleanup, \ + NAME##_bfd_free_cached_info, \ + NAME##_new_section_hook, \ + NAME##_get_section_contents, \ + NAME##_get_section_contents_in_window + + /* Called when the BFD is being closed to do any necessary cleanup. */ + bfd_boolean (*_close_and_cleanup) (bfd *); + /* Ask the BFD to free all cached information. */ + bfd_boolean (*_bfd_free_cached_info) (bfd *); + /* Called when a new section is created. */ + bfd_boolean (*_new_section_hook) (bfd *, sec_ptr); + /* Read the contents of a section. */ + bfd_boolean (*_bfd_get_section_contents) (bfd *, sec_ptr, void *, file_ptr, + bfd_size_type); + bfd_boolean (*_bfd_get_section_contents_in_window) (bfd *, sec_ptr, + bfd_window *, file_ptr, + bfd_size_type); + + /* Entry points to copy private data. */ +#define BFD_JUMP_TABLE_COPY(NAME) \ + NAME##_bfd_copy_private_bfd_data, \ + NAME##_bfd_merge_private_bfd_data, \ + _bfd_generic_init_private_section_data, \ + NAME##_bfd_copy_private_section_data, \ + NAME##_bfd_copy_private_symbol_data, \ + NAME##_bfd_copy_private_header_data, \ + NAME##_bfd_set_private_flags, \ + NAME##_bfd_print_private_bfd_data + + /* Called to copy BFD general private data from one object file + to another. */ + bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *); + /* Called to merge BFD general private data from one object file + to a common output file when linking. */ + bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *); + /* Called to initialize BFD private section data from one object file + to another. */ +#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \ + BFD_SEND (obfd, _bfd_init_private_section_data, \ + (ibfd, isec, obfd, osec, link_info)) + bfd_boolean (*_bfd_init_private_section_data) (bfd *, sec_ptr, bfd *, + sec_ptr, + struct bfd_link_info *); + /* Called to copy BFD private section data from one object file + to another. */ + bfd_boolean (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *, + sec_ptr); + /* Called to copy BFD private symbol data from one symbol + to another. */ + bfd_boolean (*_bfd_copy_private_symbol_data) (bfd *, asymbol *, bfd *, + asymbol *); + /* Called to copy BFD private header data from one object file + to another. */ + bfd_boolean (*_bfd_copy_private_header_data) (bfd *, bfd *); + /* Called to set private backend flags. */ + bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword); + + /* Called to print private BFD data. */ + bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *); + + /* Core file entry points. */ +#define BFD_JUMP_TABLE_CORE(NAME) \ + NAME##_core_file_failing_command, \ + NAME##_core_file_failing_signal, \ + NAME##_core_file_matches_executable_p, \ + NAME##_core_file_pid + + char * (*_core_file_failing_command) (bfd *); + int (*_core_file_failing_signal) (bfd *); + bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *); + int (*_core_file_pid) (bfd *); + + /* Archive entry points. */ +#define BFD_JUMP_TABLE_ARCHIVE(NAME) \ + NAME##_slurp_armap, \ + NAME##_slurp_extended_name_table, \ + NAME##_construct_extended_name_table, \ + NAME##_truncate_arname, \ + NAME##_write_armap, \ + NAME##_read_ar_hdr, \ + NAME##_write_ar_hdr, \ + NAME##_openr_next_archived_file, \ + NAME##_get_elt_at_index, \ + NAME##_generic_stat_arch_elt, \ + NAME##_update_armap_timestamp + + bfd_boolean (*_bfd_slurp_armap) (bfd *); + bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *); + bfd_boolean (*_bfd_construct_extended_name_table) (bfd *, char **, + bfd_size_type *, + const char **); + void (*_bfd_truncate_arname) (bfd *, const char *, char *); + bfd_boolean (*write_armap) (bfd *, unsigned int, struct orl *, + unsigned int, int); + void * (*_bfd_read_ar_hdr_fn) (bfd *); + bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *); + bfd * (*openr_next_archived_file) (bfd *, bfd *); +#define bfd_get_elt_at_index(b,i) \ + BFD_SEND (b, _bfd_get_elt_at_index, (b,i)) + bfd * (*_bfd_get_elt_at_index) (bfd *, symindex); + int (*_bfd_stat_arch_elt) (bfd *, struct stat *); + bfd_boolean (*_bfd_update_armap_timestamp) (bfd *); + + /* Entry points used for symbols. */ +#define BFD_JUMP_TABLE_SYMBOLS(NAME) \ + NAME##_get_symtab_upper_bound, \ + NAME##_canonicalize_symtab, \ + NAME##_make_empty_symbol, \ + NAME##_print_symbol, \ + NAME##_get_symbol_info, \ + NAME##_get_symbol_version_string, \ + NAME##_bfd_is_local_label_name, \ + NAME##_bfd_is_target_special_symbol, \ + NAME##_get_lineno, \ + NAME##_find_nearest_line, \ + NAME##_find_line, \ + NAME##_find_inliner_info, \ + NAME##_bfd_make_debug_symbol, \ + NAME##_read_minisymbols, \ + NAME##_minisymbol_to_symbol + + long (*_bfd_get_symtab_upper_bound) (bfd *); + long (*_bfd_canonicalize_symtab) (bfd *, struct bfd_symbol **); + struct bfd_symbol * + (*_bfd_make_empty_symbol) (bfd *); + void (*_bfd_print_symbol) (bfd *, void *, struct bfd_symbol *, + bfd_print_symbol_type); +#define bfd_print_symbol(b,p,s,e) \ + BFD_SEND (b, _bfd_print_symbol, (b,p,s,e)) + void (*_bfd_get_symbol_info) (bfd *, struct bfd_symbol *, + symbol_info *); +#define bfd_get_symbol_info(b,p,e) \ + BFD_SEND (b, _bfd_get_symbol_info, (b,p,e)) + const char *(*_bfd_get_symbol_version_string) (bfd *, struct bfd_symbol *, + bfd_boolean, + bfd_boolean *); +#define bfd_get_symbol_version_string(b,s,p,h) \ + BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,p,h)) + bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *); + bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *); + alent * (*_get_lineno) (bfd *, struct bfd_symbol *); + bfd_boolean (*_bfd_find_nearest_line) (bfd *, struct bfd_symbol **, + struct bfd_section *, bfd_vma, + const char **, const char **, + unsigned int *, unsigned int *); + bfd_boolean (*_bfd_find_line) (bfd *, struct bfd_symbol **, + struct bfd_symbol *, const char **, + unsigned int *); + bfd_boolean (*_bfd_find_inliner_info) + (bfd *, const char **, const char **, unsigned int *); + /* Back-door to allow format-aware applications to create debug symbols + while using BFD for everything else. Currently used by the assembler + when creating COFF files. */ + asymbol * (*_bfd_make_debug_symbol) (bfd *, void *, unsigned long size); +#define bfd_read_minisymbols(b, d, m, s) \ + BFD_SEND (b, _read_minisymbols, (b, d, m, s)) + long (*_read_minisymbols) (bfd *, bfd_boolean, void **, + unsigned int *); +#define bfd_minisymbol_to_symbol(b, d, m, f) \ + BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f)) + asymbol * (*_minisymbol_to_symbol) (bfd *, bfd_boolean, const void *, + asymbol *); + + /* Routines for relocs. */ +#define BFD_JUMP_TABLE_RELOCS(NAME) \ + NAME##_get_reloc_upper_bound, \ + NAME##_canonicalize_reloc, \ + NAME##_set_reloc, \ + NAME##_bfd_reloc_type_lookup, \ + NAME##_bfd_reloc_name_lookup + + long (*_get_reloc_upper_bound) (bfd *, sec_ptr); + long (*_bfd_canonicalize_reloc) (bfd *, sec_ptr, arelent **, + struct bfd_symbol **); + void (*_bfd_set_reloc) (bfd *, sec_ptr, arelent **, unsigned int); + /* See documentation on reloc types. */ + reloc_howto_type * + (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type); + reloc_howto_type * + (*reloc_name_lookup) (bfd *, const char *); + + /* Routines used when writing an object file. */ +#define BFD_JUMP_TABLE_WRITE(NAME) \ + NAME##_set_arch_mach, \ + NAME##_set_section_contents + + bfd_boolean (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture, + unsigned long); + bfd_boolean (*_bfd_set_section_contents) (bfd *, sec_ptr, const void *, + file_ptr, bfd_size_type); + + /* Routines used by the linker. */ +#define BFD_JUMP_TABLE_LINK(NAME) \ + NAME##_sizeof_headers, \ + NAME##_bfd_get_relocated_section_contents, \ + NAME##_bfd_relax_section, \ + NAME##_bfd_link_hash_table_create, \ + NAME##_bfd_link_add_symbols, \ + NAME##_bfd_link_just_syms, \ + NAME##_bfd_copy_link_hash_symbol_type, \ + NAME##_bfd_final_link, \ + NAME##_bfd_link_split_section, \ + NAME##_bfd_link_check_relocs, \ + NAME##_bfd_gc_sections, \ + NAME##_bfd_lookup_section_flags, \ + NAME##_bfd_merge_sections, \ + NAME##_bfd_is_group_section, \ + NAME##_bfd_group_name, \ + NAME##_bfd_discard_group, \ + NAME##_section_already_linked, \ + NAME##_bfd_define_common_symbol, \ + NAME##_bfd_link_hide_symbol, \ + NAME##_bfd_define_start_stop + + int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *); + bfd_byte * (*_bfd_get_relocated_section_contents) (bfd *, + struct bfd_link_info *, + struct bfd_link_order *, + bfd_byte *, bfd_boolean, + struct bfd_symbol **); + + bfd_boolean (*_bfd_relax_section) (bfd *, struct bfd_section *, + struct bfd_link_info *, bfd_boolean *); + + /* Create a hash table for the linker. Different backends store + different information in this table. */ + struct bfd_link_hash_table * + (*_bfd_link_hash_table_create) (bfd *); + + /* Add symbols from this object file into the hash table. */ + bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *); + + /* Indicate that we are only retrieving symbol values from this section. */ + void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *); + + /* Copy the symbol type and other attributes for a linker script + assignment of one symbol to another. */ +#define bfd_copy_link_hash_symbol_type(b, t, f) \ + BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f)) + void (*_bfd_copy_link_hash_symbol_type) (bfd *, + struct bfd_link_hash_entry *, + struct bfd_link_hash_entry *); + + /* Do a link based on the link_order structures attached to each + section of the BFD. */ + bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *); + + /* Should this section be split up into smaller pieces during linking. */ + bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *); + + /* Check the relocations in the bfd for validity. */ + bfd_boolean (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *); + + /* Remove sections that are not referenced from the output. */ + bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *); + + /* Sets the bitmask of allowed and disallowed section flags. */ + bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *, + struct flag_info *, asection *); + + /* Attempt to merge SEC_MERGE sections. */ + bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *); + + /* Is this section a member of a group? */ + bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *); + + /* The group name, if section is a member of a group. */ + const char *(*_bfd_group_name) (bfd *, const struct bfd_section *); + + /* Discard members of a group. */ + bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *); + + /* Check if SEC has been already linked during a reloceatable or + final link. */ + bfd_boolean (*_section_already_linked) (bfd *, asection *, + struct bfd_link_info *); + + /* Define a common symbol. */ + bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *, + struct bfd_link_hash_entry *); + + /* Hide a symbol. */ + void (*_bfd_link_hide_symbol) (bfd *, struct bfd_link_info *, + struct bfd_link_hash_entry *); + + /* Define a __start, __stop, .startof. or .sizeof. symbol. */ + struct bfd_link_hash_entry * + (*_bfd_define_start_stop) (struct bfd_link_info *, const char *, + asection *); + + /* Routines to handle dynamic symbols and relocs. */ +#define BFD_JUMP_TABLE_DYNAMIC(NAME) \ + NAME##_get_dynamic_symtab_upper_bound, \ + NAME##_canonicalize_dynamic_symtab, \ + NAME##_get_synthetic_symtab, \ + NAME##_get_dynamic_reloc_upper_bound, \ + NAME##_canonicalize_dynamic_reloc + + /* Get the amount of memory required to hold the dynamic symbols. */ + long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *); + /* Read in the dynamic symbols. */ + long (*_bfd_canonicalize_dynamic_symtab) (bfd *, struct bfd_symbol **); + /* Create synthetized symbols. */ + long (*_bfd_get_synthetic_symtab) (bfd *, long, struct bfd_symbol **, + long, struct bfd_symbol **, + struct bfd_symbol **); + /* Get the amount of memory required to hold the dynamic relocs. */ + long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *); + /* Read in the dynamic relocs. */ + long (*_bfd_canonicalize_dynamic_reloc) (bfd *, arelent **, + struct bfd_symbol **); + + /* Opposite endian version of this target. */ + const struct bfd_target *alternative_target; + + /* Data for use by back-end routines, which isn't + generic enough to belong in this structure. */ + const void *backend_data; + +} bfd_target; + +static inline const char * +bfd_get_target (const bfd *abfd) +{ + return abfd->xvec->name; +} + +static inline enum bfd_flavour +bfd_get_flavour (const bfd *abfd) +{ + return abfd->xvec->flavour; +} + +static inline flagword +bfd_applicable_file_flags (const bfd *abfd) +{ + return abfd->xvec->object_flags; +} + +static inline bfd_boolean +bfd_family_coff (const bfd *abfd) +{ + return (bfd_get_flavour (abfd) == bfd_target_coff_flavour + || bfd_get_flavour (abfd) == bfd_target_xcoff_flavour); +} + +static inline bfd_boolean +bfd_big_endian (const bfd *abfd) +{ + return abfd->xvec->byteorder == BFD_ENDIAN_BIG; +} +static inline bfd_boolean +bfd_little_endian (const bfd *abfd) +{ + return abfd->xvec->byteorder == BFD_ENDIAN_LITTLE; +} + +static inline bfd_boolean +bfd_header_big_endian (const bfd *abfd) +{ + return abfd->xvec->header_byteorder == BFD_ENDIAN_BIG; +} + +static inline bfd_boolean +bfd_header_little_endian (const bfd *abfd) +{ + return abfd->xvec->header_byteorder == BFD_ENDIAN_LITTLE; +} + +static inline flagword +bfd_applicable_section_flags (const bfd *abfd) +{ + return abfd->xvec->section_flags; +} + +static inline char +bfd_get_symbol_leading_char (const bfd *abfd) +{ + return abfd->xvec->symbol_leading_char; +} + +static inline enum bfd_flavour +bfd_asymbol_flavour (const asymbol *sy) +{ + if ((sy->flags & BSF_SYNTHETIC) != 0) + return bfd_target_unknown_flavour; + return sy->the_bfd->xvec->flavour; +} + +static inline bfd_boolean +bfd_keep_unused_section_symbols (const bfd *abfd) +{ + return abfd->xvec->keep_unused_section_symbols; +} + +bfd_boolean bfd_set_default_target (const char *name); + +const bfd_target *bfd_find_target (const char *target_name, bfd *abfd); + +const bfd_target *bfd_get_target_info (const char *target_name, + bfd *abfd, + bfd_boolean *is_bigendian, + int *underscoring, + const char **def_target_arch); +const char ** bfd_target_list (void); + +const bfd_target *bfd_iterate_over_targets + (int (*func) (const bfd_target *, void *), + void *data); + +const char *bfd_flavour_name (enum bfd_flavour flavour); + +/* Extracted from format.c. */ +bfd_boolean bfd_check_format (bfd *abfd, bfd_format format); + +bfd_boolean bfd_check_format_matches + (bfd *abfd, bfd_format format, char ***matching); + +bfd_boolean bfd_set_format (bfd *abfd, bfd_format format); + +const char *bfd_format_string (bfd_format format); + +/* Extracted from linker.c. */ +/* Return TRUE if the symbol described by a linker hash entry H + is going to be absolute. Linker-script defined symbols can be + converted from absolute to section-relative ones late in the + link. Use this macro to correctly determine whether the symbol + will actually end up absolute in output. */ +#define bfd_is_abs_symbol(H) \ + (((H)->type == bfd_link_hash_defined \ + || (H)->type == bfd_link_hash_defweak) \ + && bfd_is_abs_section ((H)->u.def.section) \ + && !(H)->rel_from_abs) + +bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec); + +#define bfd_link_split_section(abfd, sec) \ + BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec)) + +bfd_boolean bfd_section_already_linked (bfd *abfd, + asection *sec, + struct bfd_link_info *info); + +#define bfd_section_already_linked(abfd, sec, info) \ + BFD_SEND (abfd, _section_already_linked, (abfd, sec, info)) + +bfd_boolean bfd_generic_define_common_symbol + (bfd *output_bfd, struct bfd_link_info *info, + struct bfd_link_hash_entry *h); + +#define bfd_define_common_symbol(output_bfd, info, h) \ + BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h)) + +void _bfd_generic_link_hide_symbol + (bfd *output_bfd, struct bfd_link_info *info, + struct bfd_link_hash_entry *h); + +#define bfd_link_hide_symbol(output_bfd, info, h) \ + BFD_SEND (output_bfd, _bfd_link_hide_symbol, (output_bfd, info, h)) + +struct bfd_link_hash_entry *bfd_generic_define_start_stop + (struct bfd_link_info *info, + const char *symbol, asection *sec); + +#define bfd_define_start_stop(output_bfd, info, symbol, sec) \ + BFD_SEND (output_bfd, _bfd_define_start_stop, (info, symbol, sec)) + +struct bfd_elf_version_tree * bfd_find_version_for_sym + (struct bfd_elf_version_tree *verdefs, + const char *sym_name, bfd_boolean *hide); + +bfd_boolean bfd_hide_sym_by_version + (struct bfd_elf_version_tree *verdefs, const char *sym_name); + +bfd_boolean bfd_link_check_relocs + (bfd *abfd, struct bfd_link_info *info); + +bfd_boolean _bfd_generic_link_check_relocs + (bfd *abfd, struct bfd_link_info *info); + +bfd_boolean bfd_merge_private_bfd_data + (bfd *ibfd, struct bfd_link_info *info); + +#define bfd_merge_private_bfd_data(ibfd, info) \ + BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \ + (ibfd, info)) +/* Extracted from simple.c. */ +bfd_byte *bfd_simple_get_relocated_section_contents + (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table); + +/* Extracted from compress.c. */ +bfd_boolean bfd_get_full_section_contents + (bfd *abfd, asection *section, bfd_byte **ptr); + +void bfd_cache_section_contents + (asection *sec, void *contents); + +bfd_boolean bfd_is_section_compressed_with_header + (bfd *abfd, asection *section, + int *compression_header_size_p, + bfd_size_type *uncompressed_size_p, + unsigned int *uncompressed_alignment_power_p); + +bfd_boolean bfd_is_section_compressed + (bfd *abfd, asection *section); + +bfd_boolean bfd_init_section_decompress_status + (bfd *abfd, asection *section); + +bfd_boolean bfd_init_section_compress_status + (bfd *abfd, asection *section); + +bfd_boolean bfd_compress_section + (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/bfd_stdint.h b/include/bfd_stdint.h new file mode 100644 index 0000000..3f9e4c0 --- /dev/null +++ b/include/bfd_stdint.h @@ -0,0 +1,47 @@ +/* generated for gcc.exe (GCC) 10.3.0 */ + +#ifndef GCC_GENERATED_STDINT_H +#define GCC_GENERATED_STDINT_H 1 + +#include +#include +/* glibc uses these symbols as guards to prevent redefinitions. */ +#ifdef __int8_t_defined +#define _INT8_T +#define _INT16_T +#define _INT32_T +#endif +#ifdef __uint32_t_defined +#define _UINT32_T +#endif + + +/* Some systems have guard macros to prevent redefinitions, define them. */ +#ifndef _INT8_T +#define _INT8_T +#endif +#ifndef _INT16_T +#define _INT16_T +#endif +#ifndef _INT32_T +#define _INT32_T +#endif +#ifndef _UINT8_T +#define _UINT8_T +#endif +#ifndef _UINT16_T +#define _UINT16_T +#endif +#ifndef _UINT32_T +#define _UINT32_T +#endif + +/* system headers have good uint64_t and int64_t */ +#ifndef _INT64_T +#define _INT64_T +#endif +#ifndef _UINT64_T +#define _UINT64_T +#endif + +#endif /* GCC_GENERATED_STDINT_H */ diff --git a/include/bfdlink.h b/include/bfdlink.h new file mode 100644 index 0000000..079e312 --- /dev/null +++ b/include/bfdlink.h @@ -0,0 +1,1019 @@ +/* bfdlink.h -- header file for BFD link routines + Copyright (C) 1993-2021 Free Software Foundation, Inc. + Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support. + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#ifndef BFDLINK_H +#define BFDLINK_H + +/* Which symbols to strip during a link. */ +enum bfd_link_strip +{ + strip_none, /* Don't strip any symbols. */ + strip_debugger, /* Strip debugging symbols. */ + strip_some, /* keep_hash is the list of symbols to keep. */ + strip_all /* Strip all symbols. */ +}; + +/* Which local symbols to discard during a link. This is irrelevant + if strip_all is used. */ +enum bfd_link_discard +{ + discard_sec_merge, /* Discard local temporary symbols in SEC_MERGE + sections. */ + discard_none, /* Don't discard any locals. */ + discard_l, /* Discard local temporary symbols. */ + discard_all /* Discard all locals. */ +}; + +enum notice_asneeded_action { + notice_as_needed, + notice_not_needed, + notice_needed +}; + +/* Whether to generate ELF common symbols with the STT_COMMON type + during a relocatable link. */ +enum bfd_link_elf_stt_common +{ + unchanged, + elf_stt_common, + no_elf_stt_common +}; + +/* Describes the type of hash table entry structure being used. + Different hash table structure have different fields and so + support different linking features. */ +enum bfd_link_hash_table_type + { + bfd_link_generic_hash_table, + bfd_link_elf_hash_table + }; + +/* These are the possible types of an entry in the BFD link hash + table. */ + +enum bfd_link_hash_type +{ + bfd_link_hash_new, /* Symbol is new. */ + bfd_link_hash_undefined, /* Symbol seen before, but undefined. */ + bfd_link_hash_undefweak, /* Symbol is weak and undefined. */ + bfd_link_hash_defined, /* Symbol is defined. */ + bfd_link_hash_defweak, /* Symbol is weak and defined. */ + bfd_link_hash_common, /* Symbol is common. */ + bfd_link_hash_indirect, /* Symbol is an indirect link. */ + bfd_link_hash_warning /* Like indirect, but warn if referenced. */ +}; + +enum bfd_link_common_skip_ar_symbols +{ + bfd_link_common_skip_none, + bfd_link_common_skip_text, + bfd_link_common_skip_data, + bfd_link_common_skip_all +}; + +struct bfd_link_hash_common_entry + { + unsigned int alignment_power; /* Alignment. */ + asection *section; /* Symbol section. */ + }; + +/* The linking routines use a hash table which uses this structure for + its elements. */ + +struct bfd_link_hash_entry +{ + /* Base hash table entry structure. */ + struct bfd_hash_entry root; + + /* Type of this entry. */ + ENUM_BITFIELD (bfd_link_hash_type) type : 8; + + /* Symbol is referenced in a normal regular object file, + as distinct from a LTO IR object file. */ + unsigned int non_ir_ref_regular : 1; + + /* Symbol is referenced in a normal dynamic object file, + as distinct from a LTO IR object file. */ + unsigned int non_ir_ref_dynamic : 1; + + /* Symbol is a built-in define. These will be overridden by PROVIDE + in a linker script. */ + unsigned int linker_def : 1; + + /* Symbol defined in a linker script. */ + unsigned int ldscript_def : 1; + + /* Symbol will be converted from absolute to section-relative. Set for + symbols defined by a script from "dot" (also SEGMENT_START or ORIGIN) + outside of an output section statement. */ + unsigned int rel_from_abs : 1; + + /* A union of information depending upon the type. */ + union + { + /* Nothing is kept for bfd_hash_new. */ + /* bfd_link_hash_undefined, bfd_link_hash_undefweak. */ + struct + { + /* Undefined and common symbols are kept in a linked list through + this field. This field is present in all of the union element + so that we don't need to remove entries from the list when we + change their type. Removing entries would either require the + list to be doubly linked, which would waste more memory, or + require a traversal. When an undefined or common symbol is + created, it should be added to this list, the head of which is in + the link hash table itself. As symbols are defined, they need + not be removed from the list; anything which reads the list must + doublecheck the symbol type. + + Weak symbols are not kept on this list. + + Defined and defweak symbols use this field as a reference marker. + If the field is not NULL, or this structure is the tail of the + undefined symbol list, the symbol has been referenced. If the + symbol is undefined and becomes defined, this field will + automatically be non-NULL since the symbol will have been on the + undefined symbol list. */ + struct bfd_link_hash_entry *next; + /* BFD symbol was found in. */ + bfd *abfd; + } undef; + /* bfd_link_hash_defined, bfd_link_hash_defweak. */ + struct + { + struct bfd_link_hash_entry *next; + /* Symbol section. */ + asection *section; + /* Symbol value. */ + bfd_vma value; + } def; + /* bfd_link_hash_indirect, bfd_link_hash_warning. */ + struct + { + struct bfd_link_hash_entry *next; + /* Real symbol. */ + struct bfd_link_hash_entry *link; + /* Warning message (bfd_link_hash_warning only). */ + const char *warning; + } i; + /* bfd_link_hash_common. */ + struct + { + struct bfd_link_hash_entry *next; + /* The linker needs to know three things about common + symbols: the size, the alignment, and the section in + which the symbol should be placed. We store the size + here, and we allocate a small structure to hold the + section and the alignment. The alignment is stored as a + power of two. We don't store all the information + directly because we don't want to increase the size of + the union; this structure is a major space user in the + linker. */ + struct bfd_link_hash_common_entry *p; + /* Common symbol size. */ + bfd_size_type size; + } c; + } u; +}; + +/* This is the link hash table. It is a derived class of + bfd_hash_table. */ + +struct bfd_link_hash_table +{ + /* The hash table itself. */ + struct bfd_hash_table table; + /* A linked list of undefined and common symbols, linked through the + next field in the bfd_link_hash_entry structure. */ + struct bfd_link_hash_entry *undefs; + /* Entries are added to the tail of the undefs list. */ + struct bfd_link_hash_entry *undefs_tail; + /* Function to free the hash table on closing BFD. */ + void (*hash_table_free) (bfd *); + /* The type of the link hash table. */ + enum bfd_link_hash_table_type type; +}; + +/* Look up an entry in a link hash table. If FOLLOW is TRUE, this + follows bfd_link_hash_indirect and bfd_link_hash_warning links to + the real symbol. */ +extern struct bfd_link_hash_entry *bfd_link_hash_lookup + (struct bfd_link_hash_table *, const char *, bfd_boolean create, + bfd_boolean copy, bfd_boolean follow); + +/* Look up an entry in the main linker hash table if the symbol might + be wrapped. This should only be used for references to an + undefined symbol, not for definitions of a symbol. */ + +extern struct bfd_link_hash_entry *bfd_wrapped_link_hash_lookup + (bfd *, struct bfd_link_info *, const char *, bfd_boolean, + bfd_boolean, bfd_boolean); + +/* If H is a wrapped symbol, ie. the symbol name starts with "__wrap_" + and the remainder is found in wrap_hash, return the real symbol. */ + +extern struct bfd_link_hash_entry *unwrap_hash_lookup + (struct bfd_link_info *, bfd *, struct bfd_link_hash_entry *); + +/* Traverse a link hash table. */ +extern void bfd_link_hash_traverse + (struct bfd_link_hash_table *, + bfd_boolean (*) (struct bfd_link_hash_entry *, void *), + void *); + +/* Add an entry to the undefs list. */ +extern void bfd_link_add_undef + (struct bfd_link_hash_table *, struct bfd_link_hash_entry *); + +/* Remove symbols from the undefs list that don't belong there. */ +extern void bfd_link_repair_undef_list + (struct bfd_link_hash_table *table); + +/* Read symbols and cache symbol pointer array in outsymbols. */ +extern bfd_boolean bfd_generic_link_read_symbols (bfd *); + +/* Check the relocs in the BFD. Called after all the input + files have been loaded, and garbage collection has tagged + any unneeded sections. */ +extern bfd_boolean bfd_link_check_relocs (bfd *,struct bfd_link_info *); + +struct bfd_sym_chain +{ + struct bfd_sym_chain *next; + const char *name; +}; + +/* How to handle unresolved symbols. + There are four possibilities which are enumerated below: */ +enum report_method +{ + /* This is the initial value when then link_info structure is created. + It allows the various stages of the linker to determine whether they + allowed to set the value. */ + RM_NOT_YET_SET = 0, + RM_IGNORE, + RM_DIAGNOSE, +}; + +/* How to handle DT_TEXTREL. */ + +enum textrel_check_method +{ + textrel_check_none, + textrel_check_warning, + textrel_check_error +}; + +#define bfd_link_textrel_check(info) \ + (info->textrel_check != textrel_check_none) + +typedef enum {with_flags, without_flags} flag_type; + +/* A section flag list. */ +struct flag_info_list +{ + flag_type with; + const char *name; + bfd_boolean valid; + struct flag_info_list *next; +}; + +/* Section flag info. */ +struct flag_info +{ + flagword only_with_flags; + flagword not_with_flags; + struct flag_info_list *flag_list; + bfd_boolean flags_initialized; +}; + +struct bfd_elf_dynamic_list; +struct bfd_elf_version_tree; + +/* Types of output. */ + +enum output_type +{ + type_pde, + type_pie, + type_relocatable, + type_dll, +}; + +#define bfd_link_pde(info) ((info)->type == type_pde) +#define bfd_link_dll(info) ((info)->type == type_dll) +#define bfd_link_relocatable(info) ((info)->type == type_relocatable) +#define bfd_link_pie(info) ((info)->type == type_pie) +#define bfd_link_executable(info) (bfd_link_pde (info) || bfd_link_pie (info)) +#define bfd_link_pic(info) (bfd_link_dll (info) || bfd_link_pie (info)) + +/* This structure holds all the information needed to communicate + between BFD and the linker when doing a link. */ + +struct bfd_link_info +{ + /* Output type. */ + ENUM_BITFIELD (output_type) type : 2; + + /* TRUE if BFD should pre-bind symbols in a shared object. */ + unsigned int symbolic: 1; + + /* TRUE if executable should not contain copy relocs. + Setting this true may result in a non-sharable text segment. */ + unsigned int nocopyreloc: 1; + + /* TRUE if BFD should export all symbols in the dynamic symbol table + of an executable, rather than only those used. */ + unsigned int export_dynamic: 1; + + /* TRUE if a default symbol version should be created and used for + exported symbols. */ + unsigned int create_default_symver: 1; + + /* TRUE if unreferenced sections should be removed. */ + unsigned int gc_sections: 1; + + /* TRUE if exported symbols should be kept during section gc. */ + unsigned int gc_keep_exported: 1; + + /* TRUE if every symbol should be reported back via the notice + callback. */ + unsigned int notice_all: 1; + + /* TRUE if the LTO plugin is active. */ + unsigned int lto_plugin_active: 1; + + /* TRUE if all LTO IR symbols have been read. */ + unsigned int lto_all_symbols_read : 1; + + /* TRUE if global symbols in discarded sections should be stripped. */ + unsigned int strip_discarded: 1; + + /* TRUE if all data symbols should be dynamic. */ + unsigned int dynamic_data: 1; + + /* TRUE if section groups should be resolved. */ + unsigned int resolve_section_groups: 1; + + /* Set if output file is big-endian, or if that is unknown, from + the command line or first input file endianness. */ + unsigned int big_endian : 1; + + /* Which symbols to strip. */ + ENUM_BITFIELD (bfd_link_strip) strip : 2; + + /* Which local symbols to discard. */ + ENUM_BITFIELD (bfd_link_discard) discard : 2; + + /* Whether to generate ELF common symbols with the STT_COMMON type. */ + ENUM_BITFIELD (bfd_link_elf_stt_common) elf_stt_common : 2; + + /* Criteria for skipping symbols when determining + whether to include an object from an archive. */ + ENUM_BITFIELD (bfd_link_common_skip_ar_symbols) common_skip_ar_symbols : 2; + + /* What to do with unresolved symbols in an object file. + When producing executables the default is GENERATE_ERROR. + When producing shared libraries the default is IGNORE. The + assumption with shared libraries is that the reference will be + resolved at load/execution time. */ + ENUM_BITFIELD (report_method) unresolved_syms_in_objects : 2; + + /* What to do with unresolved symbols in a shared library. + The same defaults apply. */ + ENUM_BITFIELD (report_method) unresolved_syms_in_shared_libs : 2; + + /* TRUE if unresolved symbols are to be warned, rather than errored. */ + unsigned int warn_unresolved_syms: 1; + + /* TRUE if shared objects should be linked directly, not shared. */ + unsigned int static_link: 1; + + /* TRUE if symbols should be retained in memory, FALSE if they + should be freed and reread. */ + unsigned int keep_memory: 1; + + /* TRUE if BFD should generate relocation information in the final + executable. */ + unsigned int emitrelocations: 1; + + /* TRUE if PT_GNU_RELRO segment should be created. */ + unsigned int relro: 1; + + /* TRUE if separate code segment should be created. */ + unsigned int separate_code: 1; + + /* Nonzero if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment + should be created. 1 for DWARF2 tables, 2 for compact tables. */ + unsigned int eh_frame_hdr_type: 2; + + /* What to do with DT_TEXTREL in output. */ + ENUM_BITFIELD (textrel_check_method) textrel_check: 2; + + /* TRUE if .hash section should be created. */ + unsigned int emit_hash: 1; + + /* TRUE if .gnu.hash section should be created. */ + unsigned int emit_gnu_hash: 1; + + /* If TRUE reduce memory overheads, at the expense of speed. This will + cause map file generation to use an O(N^2) algorithm and disable + caching ELF symbol buffer. */ + unsigned int reduce_memory_overheads: 1; + + /* TRUE if the output file should be in a traditional format. This + is equivalent to the setting of the BFD_TRADITIONAL_FORMAT flag + on the output file, but may be checked when reading the input + files. */ + unsigned int traditional_format: 1; + + /* TRUE if non-PLT relocs should be merged into one reloc section + and sorted so that relocs against the same symbol come together. */ + unsigned int combreloc: 1; + + /* TRUE if a default symbol version should be created and used for + imported symbols. */ + unsigned int default_imported_symver: 1; + + /* TRUE if the new ELF dynamic tags are enabled. */ + unsigned int new_dtags: 1; + + /* FALSE if .eh_frame unwind info should be generated for PLT and other + linker created sections, TRUE if it should be omitted. */ + unsigned int no_ld_generated_unwind_info: 1; + + /* TRUE if BFD should generate a "task linked" object file, + similar to relocatable but also with globals converted to + statics. */ + unsigned int task_link: 1; + + /* TRUE if ok to have multiple definition. */ + unsigned int allow_multiple_definition: 1; + + /* TRUE if ok to have prohibit multiple definition of absolute symbols. */ + unsigned int prohibit_multiple_definition_absolute: 1; + + /* TRUE if ok to have version with no definition. */ + unsigned int allow_undefined_version: 1; + + /* TRUE if some symbols have to be dynamic, controlled by + --dynamic-list command line options. */ + unsigned int dynamic: 1; + + /* TRUE if PT_GNU_STACK segment should be created with PF_R|PF_W|PF_X + flags. */ + unsigned int execstack: 1; + + /* TRUE if PT_GNU_STACK segment should be created with PF_R|PF_W + flags. */ + unsigned int noexecstack: 1; + + /* TRUE if we want to produced optimized output files. This might + need much more time and therefore must be explicitly selected. */ + unsigned int optimize: 1; + + /* TRUE if user should be informed of removed unreferenced sections. */ + unsigned int print_gc_sections: 1; + + /* TRUE if we should warn alternate ELF machine code. */ + unsigned int warn_alternate_em: 1; + + /* TRUE if the linker script contained an explicit PHDRS command. */ + unsigned int user_phdrs: 1; + + /* TRUE if program headers ought to be loaded. */ + unsigned int load_phdrs: 1; + + /* TRUE if we should check relocations after all input files have + been opened. */ + unsigned int check_relocs_after_open_input: 1; + + /* TRUE if generation of .interp/PT_INTERP should be suppressed. */ + unsigned int nointerp: 1; + + /* TRUE if common symbols should be treated as undefined. */ + unsigned int inhibit_common_definition : 1; + + /* TRUE if "-Map map" is passed to linker. */ + unsigned int has_map_file : 1; + + /* TRUE if "--enable-non-contiguous-regions" is passed to the + linker. */ + unsigned int non_contiguous_regions : 1; + + /* TRUE if "--enable-non-contiguous-regions-warnings" is passed to + the linker. */ + unsigned int non_contiguous_regions_warnings : 1; + + /* TRUE if all symbol names should be unique. */ + unsigned int unique_symbol : 1; + + /* Char that may appear as the first char of a symbol, but should be + skipped (like symbol_leading_char) when looking up symbols in + wrap_hash. Used by PowerPC Linux for 'dot' symbols. */ + char wrap_char; + + /* Separator between archive and filename in linker script filespecs. */ + char path_separator; + + /* Compress DWARF debug sections. */ + enum compressed_debug_section_type compress_debug; + + /* Default stack size. Zero means default (often zero itself), -1 + means explicitly zero-sized. */ + bfd_signed_vma stacksize; + + /* Enable or disable target specific optimizations. + + Not all targets have optimizations to enable. + + Normally these optimizations are disabled by default but some targets + prefer to enable them by default. So this field is a tri-state variable. + The values are: + + zero: Enable the optimizations (either from --relax being specified on + the command line or the backend's before_allocation emulation function. + + positive: The user has requested that these optimizations be disabled. + (Via the --no-relax command line option). + + negative: The optimizations are disabled. (Set when initializing the + args_type structure in ldmain.c:main. */ + signed int disable_target_specific_optimizations; + + /* Function callbacks. */ + const struct bfd_link_callbacks *callbacks; + + /* Hash table handled by BFD. */ + struct bfd_link_hash_table *hash; + + /* Hash table of symbols to keep. This is NULL unless strip is + strip_some. */ + struct bfd_hash_table *keep_hash; + + /* Hash table of symbols to report back via the notice callback. If + this is NULL, and notice_all is FALSE, then no symbols are + reported back. */ + struct bfd_hash_table *notice_hash; + + /* Hash table of symbols which are being wrapped (the --wrap linker + option). If this is NULL, no symbols are being wrapped. */ + struct bfd_hash_table *wrap_hash; + + /* Hash table of symbols which may be left unresolved during + a link. If this is NULL, no symbols can be left unresolved. */ + struct bfd_hash_table *ignore_hash; + + /* The output BFD. */ + bfd *output_bfd; + + /* The import library generated. */ + bfd *out_implib_bfd; + + /* The list of input BFD's involved in the link. These are chained + together via the link.next field. */ + bfd *input_bfds; + bfd **input_bfds_tail; + + /* If a symbol should be created for each input BFD, this is section + where those symbols should be placed. It must be a section in + the output BFD. It may be NULL, in which case no such symbols + will be created. This is to support CREATE_OBJECT_SYMBOLS in the + linker command language. */ + asection *create_object_symbols_section; + + /* List of global symbol names that are starting points for marking + sections against garbage collection. */ + struct bfd_sym_chain *gc_sym_list; + + /* If a base output file is wanted, then this points to it */ + void *base_file; + + /* The function to call when the executable or shared object is + loaded. */ + const char *init_function; + + /* The function to call when the executable or shared object is + unloaded. */ + const char *fini_function; + + /* Number of relaxation passes. Usually only one relaxation pass + is needed. But a backend can have as many relaxation passes as + necessary. During bfd_relax_section call, it is set to the + current pass, starting from 0. */ + int relax_pass; + + /* Number of relaxation trips. This number is incremented every + time the relaxation pass is restarted due to a previous + relaxation returning true in *AGAIN. */ + int relax_trip; + + /* > 0 to treat protected data defined in the shared library as + reference external. 0 to treat it as internal. -1 to let + backend to decide. */ + int extern_protected_data; + + /* 1 to make undefined weak symbols dynamic when building a dynamic + object. 0 to resolve undefined weak symbols to zero. -1 to let + the backend decide. */ + int dynamic_undefined_weak; + + /* Non-zero if auto-import thunks for DATA items in pei386 DLLs + should be generated/linked against. Set to 1 if this feature + is explicitly requested by the user, -1 if enabled by default. */ + int pei386_auto_import; + + /* Non-zero if runtime relocs for DATA items with non-zero addends + in pei386 DLLs should be generated. Set to 1 if this feature + is explicitly requested by the user, -1 if enabled by default. */ + int pei386_runtime_pseudo_reloc; + + /* How many spare .dynamic DT_NULL entries should be added? */ + unsigned int spare_dynamic_tags; + + /* May be used to set DT_FLAGS for ELF. */ + bfd_vma flags; + + /* May be used to set DT_FLAGS_1 for ELF. */ + bfd_vma flags_1; + + /* May be used to set DT_GNU_FLAGS_1 for ELF. */ + bfd_vma gnu_flags_1; + + /* May be used to set ELF visibility for __start_* / __stop_. */ + unsigned int start_stop_visibility; + + /* The maximum page size for ELF. */ + bfd_vma maxpagesize; + + /* The common page size for ELF. */ + bfd_vma commonpagesize; + + /* Start and end of RELRO region. */ + bfd_vma relro_start, relro_end; + + /* List of symbols should be dynamic. */ + struct bfd_elf_dynamic_list *dynamic_list; + + /* The version information. */ + struct bfd_elf_version_tree *version_info; +}; + +/* Some forward-definitions used by some callbacks. */ + +struct elf_strtab_hash; +struct elf_internal_sym; + +/* This structures holds a set of callback functions. These are called + by the BFD linker routines. */ + +struct bfd_link_callbacks +{ + /* A function which is called when an object is added from an + archive. ABFD is the archive element being added. NAME is the + name of the symbol which caused the archive element to be pulled + in. This function may set *SUBSBFD to point to an alternative + BFD from which symbols should in fact be added in place of the + original BFD's symbols. Returns TRUE if the object should be + added, FALSE if it should be skipped. */ + bfd_boolean (*add_archive_element) + (struct bfd_link_info *, bfd *abfd, const char *name, bfd **subsbfd); + /* A function which is called when a symbol is found with multiple + definitions. H is the symbol which is defined multiple times. + NBFD is the new BFD, NSEC is the new section, and NVAL is the new + value. NSEC may be bfd_com_section or bfd_ind_section. */ + void (*multiple_definition) + (struct bfd_link_info *, struct bfd_link_hash_entry *h, + bfd *nbfd, asection *nsec, bfd_vma nval); + /* A function which is called when a common symbol is defined + multiple times. H is the symbol appearing multiple times. + NBFD is the BFD of the new symbol. NTYPE is the type of the new + symbol, one of bfd_link_hash_defined, bfd_link_hash_common, or + bfd_link_hash_indirect. If NTYPE is bfd_link_hash_common, NSIZE + is the size of the new symbol. */ + void (*multiple_common) + (struct bfd_link_info *, struct bfd_link_hash_entry *h, + bfd *nbfd, enum bfd_link_hash_type ntype, bfd_vma nsize); + /* A function which is called to add a symbol to a set. ENTRY is + the link hash table entry for the set itself (e.g., + __CTOR_LIST__). RELOC is the relocation to use for an entry in + the set when generating a relocatable file, and is also used to + get the size of the entry when generating an executable file. + ABFD, SEC and VALUE identify the value to add to the set. */ + void (*add_to_set) + (struct bfd_link_info *, struct bfd_link_hash_entry *entry, + bfd_reloc_code_real_type reloc, bfd *abfd, asection *sec, bfd_vma value); + /* A function which is called when the name of a g++ constructor or + destructor is found. This is only called by some object file + formats. CONSTRUCTOR is TRUE for a constructor, FALSE for a + destructor. This will use BFD_RELOC_CTOR when generating a + relocatable file. NAME is the name of the symbol found. ABFD, + SECTION and VALUE are the value of the symbol. */ + void (*constructor) + (struct bfd_link_info *, bfd_boolean constructor, const char *name, + bfd *abfd, asection *sec, bfd_vma value); + /* A function which is called to issue a linker warning. For + example, this is called when there is a reference to a warning + symbol. WARNING is the warning to be issued. SYMBOL is the name + of the symbol which triggered the warning; it may be NULL if + there is none. ABFD, SECTION and ADDRESS identify the location + which trigerred the warning; either ABFD or SECTION or both may + be NULL if the location is not known. */ + void (*warning) + (struct bfd_link_info *, const char *warning, const char *symbol, + bfd *abfd, asection *section, bfd_vma address); + /* A function which is called when a relocation is attempted against + an undefined symbol. NAME is the symbol which is undefined. + ABFD, SECTION and ADDRESS identify the location from which the + reference is made. IS_FATAL indicates whether an undefined symbol is + a fatal error or not. In some cases SECTION may be NULL. */ + void (*undefined_symbol) + (struct bfd_link_info *, const char *name, bfd *abfd, + asection *section, bfd_vma address, bfd_boolean is_fatal); + /* A function which is called when a reloc overflow occurs. ENTRY is + the link hash table entry for the symbol the reloc is against. + NAME is the name of the local symbol or section the reloc is + against, RELOC_NAME is the name of the relocation, and ADDEND is + any addend that is used. ABFD, SECTION and ADDRESS identify the + location at which the overflow occurs; if this is the result of a + bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then + ABFD will be NULL. */ + void (*reloc_overflow) + (struct bfd_link_info *, struct bfd_link_hash_entry *entry, + const char *name, const char *reloc_name, bfd_vma addend, + bfd *abfd, asection *section, bfd_vma address); + /* A function which is called when a dangerous reloc is performed. + MESSAGE is an appropriate message. + ABFD, SECTION and ADDRESS identify the location at which the + problem occurred; if this is the result of a + bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then + ABFD will be NULL. */ + void (*reloc_dangerous) + (struct bfd_link_info *, const char *message, + bfd *abfd, asection *section, bfd_vma address); + /* A function which is called when a reloc is found to be attached + to a symbol which is not being written out. NAME is the name of + the symbol. ABFD, SECTION and ADDRESS identify the location of + the reloc; if this is the result of a + bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then + ABFD will be NULL. */ + void (*unattached_reloc) + (struct bfd_link_info *, const char *name, + bfd *abfd, asection *section, bfd_vma address); + /* A function which is called when a symbol in notice_hash is + defined or referenced. H is the symbol, INH the indirect symbol + if applicable. ABFD, SECTION and ADDRESS are the (new) value of + the symbol. If SECTION is bfd_und_section, this is a reference. + FLAGS are the symbol BSF_* flags. */ + bfd_boolean (*notice) + (struct bfd_link_info *, struct bfd_link_hash_entry *h, + struct bfd_link_hash_entry *inh, + bfd *abfd, asection *section, bfd_vma address, flagword flags); + /* Error or warning link info message. */ + void (*einfo) + (const char *fmt, ...); + /* General link info message. */ + void (*info) + (const char *fmt, ...); + /* Message to be printed in linker map file. */ + void (*minfo) + (const char *fmt, ...); + /* This callback provides a chance for users of the BFD library to + override its decision about whether to place two adjacent sections + into the same segment. */ + bfd_boolean (*override_segment_assignment) + (struct bfd_link_info *, bfd * abfd, + asection * current_section, asection * previous_section, + bfd_boolean new_segment); + /* This callback provides a chance for callers of the BFD to examine the + ELF (dynamic) string table once it is complete. */ + void (*examine_strtab) + (struct elf_strtab_hash *symstrtab); + /* This callback is called just before a symbol is swapped out, so that the + CTF machinery can look up symbols during construction. The name is + already an external strtab offset at this point. */ + void (*ctf_new_symbol) + (int symidx, struct elf_internal_sym *sym); + /* Likewise, for dynamic symbols. */ + void (*ctf_new_dynsym) + (int symidx, struct elf_internal_sym *sym); + /* This callback should emit the CTF section into a non-loadable section in + the output BFD named .ctf or a name beginning with ".ctf.". */ + void (*emit_ctf) + (void); +}; + +/* The linker builds link_order structures which tell the code how to + include input data in the output file. */ + +/* These are the types of link_order structures. */ + +enum bfd_link_order_type +{ + bfd_undefined_link_order, /* Undefined. */ + bfd_indirect_link_order, /* Built from a section. */ + bfd_data_link_order, /* Set to explicit data. */ + bfd_section_reloc_link_order, /* Relocate against a section. */ + bfd_symbol_reloc_link_order /* Relocate against a symbol. */ +}; + +/* This is the link_order structure itself. These form a chain + attached to the output section whose contents they are describing. */ + +struct bfd_link_order +{ + /* Next link_order in chain. */ + struct bfd_link_order *next; + /* Type of link_order. */ + enum bfd_link_order_type type; + /* Offset within output section in bytes. */ + bfd_vma offset; + /* Size within output section in octets. */ + bfd_size_type size; + /* Type specific information. */ + union + { + struct + { + /* Section to include. If this is used, then + section->output_section must be the section the + link_order is attached to, section->output_offset must + equal the link_order offset field, and section->size + must equal the link_order size field. Maybe these + restrictions should be relaxed someday. */ + asection *section; + } indirect; + struct + { + /* Size of contents, or zero when contents should be filled by + the architecture-dependent fill function. + A non-zero value allows filling of the output section + with an arbitrary repeated pattern. */ + unsigned int size; + /* Data to put into file. */ + bfd_byte *contents; + } data; + struct + { + /* Description of reloc to generate. Used for + bfd_section_reloc_link_order and + bfd_symbol_reloc_link_order. */ + struct bfd_link_order_reloc *p; + } reloc; + } u; +}; + +/* A linker order of type bfd_section_reloc_link_order or + bfd_symbol_reloc_link_order means to create a reloc against a + section or symbol, respectively. This is used to implement -Ur to + generate relocs for the constructor tables. The + bfd_link_order_reloc structure describes the reloc that BFD should + create. It is similar to a arelent, but I didn't use arelent + because the linker does not know anything about most symbols, and + any asymbol structure it creates will be partially meaningless. + This information could logically be in the bfd_link_order struct, + but I didn't want to waste the space since these types of relocs + are relatively rare. */ + +struct bfd_link_order_reloc +{ + /* Reloc type. */ + bfd_reloc_code_real_type reloc; + + union + { + /* For type bfd_section_reloc_link_order, this is the section + the reloc should be against. This must be a section in the + output BFD, not any of the input BFDs. */ + asection *section; + /* For type bfd_symbol_reloc_link_order, this is the name of the + symbol the reloc should be against. */ + const char *name; + } u; + + /* Addend to use. The object file should contain zero. The BFD + backend is responsible for filling in the contents of the object + file correctly. For some object file formats (e.g., COFF) the + addend must be stored into in the object file, and for some + (e.g., SPARC a.out) it is kept in the reloc. */ + bfd_vma addend; +}; + +/* Allocate a new link_order for a section. */ +extern struct bfd_link_order *bfd_new_link_order (bfd *, asection *); + +struct bfd_section_already_linked; + +extern bfd_boolean bfd_section_already_linked_table_init (void); +extern void bfd_section_already_linked_table_free (void); +extern bfd_boolean _bfd_handle_already_linked + (struct bfd_section *, struct bfd_section_already_linked *, + struct bfd_link_info *); + +extern struct bfd_section *_bfd_nearby_section + (bfd *, struct bfd_section *, bfd_vma); + +extern void _bfd_fix_excluded_sec_syms + (bfd *, struct bfd_link_info *); + +/* These structures are used to describe version information for the + ELF linker. These structures could be manipulated entirely inside + BFD, but it would be a pain. Instead, the regular linker sets up + these structures, and then passes them into BFD. */ + +/* Glob pattern for a version. */ + +struct bfd_elf_version_expr +{ + /* Next glob pattern for this version. */ + struct bfd_elf_version_expr *next; + /* Glob pattern. */ + const char *pattern; + /* Set if pattern is not a glob. */ + unsigned int literal : 1; + /* Defined by ".symver". */ + unsigned int symver : 1; + /* Defined by version script. */ + unsigned int script : 1; + /* Pattern type. */ +#define BFD_ELF_VERSION_C_TYPE 1 +#define BFD_ELF_VERSION_CXX_TYPE 2 +#define BFD_ELF_VERSION_JAVA_TYPE 4 + unsigned int mask : 3; +}; + +struct bfd_elf_version_expr_head +{ + /* List of all patterns, both wildcards and non-wildcards. */ + struct bfd_elf_version_expr *list; + /* Hash table for non-wildcards. */ + void *htab; + /* Remaining patterns. */ + struct bfd_elf_version_expr *remaining; + /* What kind of pattern types are present in list (bitmask). */ + unsigned int mask; +}; + +/* Version dependencies. */ + +struct bfd_elf_version_deps +{ + /* Next dependency for this version. */ + struct bfd_elf_version_deps *next; + /* The version which this version depends upon. */ + struct bfd_elf_version_tree *version_needed; +}; + +/* A node in the version tree. */ + +struct bfd_elf_version_tree +{ + /* Next version. */ + struct bfd_elf_version_tree *next; + /* Name of this version. */ + const char *name; + /* Version number. */ + unsigned int vernum; + /* Regular expressions for global symbols in this version. */ + struct bfd_elf_version_expr_head globals; + /* Regular expressions for local symbols in this version. */ + struct bfd_elf_version_expr_head locals; + /* List of versions which this version depends upon. */ + struct bfd_elf_version_deps *deps; + /* Index of the version name. This is used within BFD. */ + unsigned int name_indx; + /* Whether this version tree was used. This is used within BFD. */ + int used; + /* Matching hook. */ + struct bfd_elf_version_expr *(*match) + (struct bfd_elf_version_expr_head *head, + struct bfd_elf_version_expr *prev, const char *sym); +}; + +struct bfd_elf_dynamic_list +{ + struct bfd_elf_version_expr_head head; + struct bfd_elf_version_expr *(*match) + (struct bfd_elf_version_expr_head *head, + struct bfd_elf_version_expr *prev, const char *sym); +}; + +#endif diff --git a/include/ctf-api.h b/include/ctf-api.h new file mode 100644 index 0000000..5cf3257 --- /dev/null +++ b/include/ctf-api.h @@ -0,0 +1,552 @@ +/* Public API to libctf. + Copyright (C) 2019-2021 Free Software Foundation, Inc. + + This file is part of libctf. + + libctf is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 3, or (at your option) any later + version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not see + . */ + +/* This header file defines the interfaces available from the CTF debugger + library, libctf. This API can be used by a debugger to operate on data in + the Compact ANSI-C Type Format (CTF). */ + +#ifndef _CTF_API_H +#define _CTF_API_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* Clients can open one or more CTF containers and obtain a pointer to an + opaque ctf_dict_t. Types are identified by an opaque ctf_id_t token. + They can also open or create read-only archives of CTF containers in a + ctf_archive_t. + + These opaque definitions allow libctf to evolve without breaking clients. */ + +typedef struct ctf_dict ctf_dict_t; +typedef struct ctf_archive_internal ctf_archive_t; +typedef unsigned long ctf_id_t; + +/* This opaque definition allows libctf to accept BFD data structures without + importing all the BFD noise into users' namespaces. */ + +struct bfd; + +/* If the debugger needs to provide the CTF library with a set of raw buffers + for use as the CTF data, symbol table, and string table, it can do so by + filling in ctf_sect_t structures and passing them to ctf_bufopen. + + The contents of this structure must always be in native endianness. At read + time, the symbol table endianness is derived from the BFD target (if BFD is + in use): if a BFD target is not in use, please call ctf_symsect_endianness or + ctf_arc_symsect_endianness. */ + +typedef struct ctf_sect +{ + const char *cts_name; /* Section name (if any). */ + const void *cts_data; /* Pointer to section data. */ + size_t cts_size; /* Size of data in bytes. */ + size_t cts_entsize; /* Size of each section entry (symtab only). */ +} ctf_sect_t; + +/* A minimal symbol extracted from a linker's internal symbol table + representation. The symbol name can be given either via st_name or via a + strtab offset in st_nameidx, which corresponds to one of the string offsets + communicated via the ctf_link_add_strtab callback. */ + +typedef struct ctf_link_sym +{ + /* The st_name and st_nameidx will not be accessed outside the call to + ctf_link_shuffle_syms. If you set st_nameidx to offset zero, make sure + to set st_nameidx_set as well. */ + + const char *st_name; + size_t st_nameidx; + int st_nameidx_set; + uint32_t st_symidx; + uint32_t st_shndx; + uint32_t st_type; + uint32_t st_value; +} ctf_link_sym_t; + +/* Flags applying to this specific link. */ + +/* Share all types that are not in conflict. The default. */ +#define CTF_LINK_SHARE_UNCONFLICTED 0x0 + +/* Share only types that are used by multiple inputs. */ +#define CTF_LINK_SHARE_DUPLICATED 0x1 + +/* Do a nondeduplicating link. */ +#define CTF_LINK_NONDEDUP 0x2 + +/* Create empty outputs for all registered CU mappings even if no types are + emitted into them. */ +#define CTF_LINK_EMPTY_CU_MAPPINGS 0x4 + +/* Omit the content of the variables section. */ +#define CTF_LINK_OMIT_VARIABLES_SECTION 0x8 + +/* Symbolic names for CTF sections. */ + +typedef enum ctf_sect_names + { + CTF_SECT_HEADER, + CTF_SECT_LABEL, + CTF_SECT_OBJT, + CTF_SECT_OBJTIDX = CTF_SECT_OBJT, + CTF_SECT_FUNC, + CTF_SECT_FUNCIDX = CTF_SECT_FUNC, + CTF_SECT_VAR, + CTF_SECT_TYPE, + CTF_SECT_STR + } ctf_sect_names_t; + +/* Encoding information for integers, floating-point values, and certain other + intrinsics can be obtained by calling ctf_type_encoding, below. The flags + field will contain values appropriate for the type defined in . */ + +typedef struct ctf_encoding +{ + uint32_t cte_format; /* Data format (CTF_INT_* or CTF_FP_* flags). */ + uint32_t cte_offset; /* Offset of value in bits. */ + uint32_t cte_bits; /* Size of storage in bits. */ +} ctf_encoding_t; + +typedef struct ctf_membinfo +{ + ctf_id_t ctm_type; /* Type of struct or union member. */ + unsigned long ctm_offset; /* Offset of member in bits. */ +} ctf_membinfo_t; + +typedef struct ctf_arinfo +{ + ctf_id_t ctr_contents; /* Type of array contents. */ + ctf_id_t ctr_index; /* Type of array index. */ + uint32_t ctr_nelems; /* Number of elements. */ +} ctf_arinfo_t; + +typedef struct ctf_funcinfo +{ + ctf_id_t ctc_return; /* Function return type. */ + uint32_t ctc_argc; /* Number of typed arguments to function. */ + uint32_t ctc_flags; /* Function attributes (see below). */ +} ctf_funcinfo_t; + +typedef struct ctf_lblinfo +{ + ctf_id_t ctb_type; /* Last type associated with the label. */ +} ctf_lblinfo_t; + +typedef struct ctf_snapshot_id +{ + unsigned long dtd_id; /* Highest DTD ID at time of snapshot. */ + unsigned long snapshot_id; /* Snapshot id at time of snapshot. */ +} ctf_snapshot_id_t; + +#define CTF_FUNC_VARARG 0x1 /* Function arguments end with varargs. */ + +/* Functions that return a ctf_id_t use the following value to indicate failure. + ctf_errno can be used to obtain an error code. Functions that return + a straight integral -1 also use ctf_errno. */ +#define CTF_ERR ((ctf_id_t) -1L) + +/* This macro holds information about all the available ctf errors. + It is used to form both an enum holding all the error constants, + and also the error strings themselves. To use, define _CTF_FIRST + and _CTF_ITEM to expand as you like, then mention the macro name. + See the enum after this for an example. */ +#define _CTF_ERRORS \ + _CTF_FIRST (ECTF_FMT, "File is not in CTF or ELF format.") \ + _CTF_ITEM (ECTF_BFDERR, "BFD error.") \ + _CTF_ITEM (ECTF_CTFVERS, "CTF dict version is too new for libctf.") \ + _CTF_ITEM (ECTF_BFD_AMBIGUOUS, "Ambiguous BFD target.") \ + _CTF_ITEM (ECTF_SYMTAB, "Symbol table uses invalid entry size.") \ + _CTF_ITEM (ECTF_SYMBAD, "Symbol table data buffer is not valid.") \ + _CTF_ITEM (ECTF_STRBAD, "String table data buffer is not valid.") \ + _CTF_ITEM (ECTF_CORRUPT, "File data structure corruption detected.") \ + _CTF_ITEM (ECTF_NOCTFDATA, "File does not contain CTF data.") \ + _CTF_ITEM (ECTF_NOCTFBUF, "Buffer does not contain CTF data.") \ + _CTF_ITEM (ECTF_NOSYMTAB, "Symbol table information is not available.") \ + _CTF_ITEM (ECTF_NOPARENT, "The parent CTF dictionary is unavailable.") \ + _CTF_ITEM (ECTF_DMODEL, "Data model mismatch.") \ + _CTF_ITEM (ECTF_LINKADDEDLATE, "File added to link too late.") \ + _CTF_ITEM (ECTF_ZALLOC, "Failed to allocate (de)compression buffer.") \ + _CTF_ITEM (ECTF_DECOMPRESS, "Failed to decompress CTF data.") \ + _CTF_ITEM (ECTF_STRTAB, "External string table is not available.") \ + _CTF_ITEM (ECTF_BADNAME, "String name offset is corrupt.") \ + _CTF_ITEM (ECTF_BADID, "Invalid type identifier.") \ + _CTF_ITEM (ECTF_NOTSOU, "Type is not a struct or union.") \ + _CTF_ITEM (ECTF_NOTENUM, "Type is not an enum.") \ + _CTF_ITEM (ECTF_NOTSUE, "Type is not a struct, union, or enum.") \ + _CTF_ITEM (ECTF_NOTINTFP, "Type is not an integer, float, or enum.") \ + _CTF_ITEM (ECTF_NOTARRAY, "Type is not an array.") \ + _CTF_ITEM (ECTF_NOTREF, "Type does not reference another type.") \ + _CTF_ITEM (ECTF_NAMELEN, "Buffer is too small to hold type name.") \ + _CTF_ITEM (ECTF_NOTYPE, "No type found corresponding to name.") \ + _CTF_ITEM (ECTF_SYNTAX, "Syntax error in type name.") \ + _CTF_ITEM (ECTF_NOTFUNC, "Symbol table entry or type is not a function.") \ + _CTF_ITEM (ECTF_NOFUNCDAT, "No function information available for function.") \ + _CTF_ITEM (ECTF_NOTDATA, "Symbol table entry does not refer to a data object.") \ + _CTF_ITEM (ECTF_NOTYPEDAT, "No type information available for symbol.") \ + _CTF_ITEM (ECTF_NOLABEL, "No label found corresponding to name.") \ + _CTF_ITEM (ECTF_NOLABELDATA, "File does not contain any labels.") \ + _CTF_ITEM (ECTF_NOTSUP, "Feature not supported.") \ + _CTF_ITEM (ECTF_NOENUMNAM, "Enum element name not found.") \ + _CTF_ITEM (ECTF_NOMEMBNAM, "Member name not found.") \ + _CTF_ITEM (ECTF_RDONLY, "CTF container is read-only.") \ + _CTF_ITEM (ECTF_DTFULL, "CTF type is full (no more members allowed).") \ + _CTF_ITEM (ECTF_FULL, "CTF container is full.") \ + _CTF_ITEM (ECTF_DUPLICATE, "Duplicate member or variable name.") \ + _CTF_ITEM (ECTF_CONFLICT, "Conflicting type is already defined.") \ + _CTF_ITEM (ECTF_OVERROLLBACK, "Attempt to roll back past a ctf_update.") \ + _CTF_ITEM (ECTF_COMPRESS, "Failed to compress CTF data.") \ + _CTF_ITEM (ECTF_ARCREATE, "Error creating CTF archive.") \ + _CTF_ITEM (ECTF_ARNNAME, "Name not found in CTF archive.") \ + _CTF_ITEM (ECTF_SLICEOVERFLOW, "Overflow of type bitness or offset in slice.") \ + _CTF_ITEM (ECTF_DUMPSECTUNKNOWN, "Unknown section number in dump.") \ + _CTF_ITEM (ECTF_DUMPSECTCHANGED, "Section changed in middle of dump.") \ + _CTF_ITEM (ECTF_NOTYET, "Feature not yet implemented.") \ + _CTF_ITEM (ECTF_INTERNAL, "Internal error: assertion failure.") \ + _CTF_ITEM (ECTF_NONREPRESENTABLE, "Type not representable in CTF.") \ + _CTF_ITEM (ECTF_NEXT_END, "End of iteration.") \ + _CTF_ITEM (ECTF_NEXT_WRONGFUN, "Wrong iteration function called.") \ + _CTF_ITEM (ECTF_NEXT_WRONGFP, "Iteration entity changed in mid-iterate.") \ + _CTF_ITEM (ECTF_FLAGS, "CTF header contains flags unknown to libctf.") \ + _CTF_ITEM (ECTF_NEEDSBFD, "This feature needs a libctf with BFD support.") \ + _CTF_ITEM (ECTF_INCOMPLETE, "Type is not a complete type.") + +#define ECTF_BASE 1000 /* Base value for libctf errnos. */ + +enum + { +#define _CTF_FIRST(NAME, STR) NAME = ECTF_BASE +#define _CTF_ITEM(NAME, STR) , NAME +_CTF_ERRORS +#undef _CTF_ITEM +#undef _CTF_FIRST + }; + +#define ECTF_NERR (ECTF_INCOMPLETE - ECTF_BASE + 1) /* Count of CTF errors. */ + +/* The CTF data model is inferred to be the caller's data model or the data + model of the given object, unless ctf_setmodel is explicitly called. */ +#define CTF_MODEL_ILP32 1 /* Object data model is ILP32. */ +#define CTF_MODEL_LP64 2 /* Object data model is LP64. */ +#ifdef _LP64 +# define CTF_MODEL_NATIVE CTF_MODEL_LP64 +#else +# define CTF_MODEL_NATIVE CTF_MODEL_ILP32 +#endif + +/* Dynamic CTF containers can be created using ctf_create. The ctf_add_* + routines can be used to add new definitions to the dynamic container. + New types are labeled as root or non-root to determine whether they are + visible at the top-level program scope when subsequently doing a lookup. */ + +#define CTF_ADD_NONROOT 0 /* Type only visible in nested scope. */ +#define CTF_ADD_ROOT 1 /* Type visible at top-level scope. */ + +/* Flags for ctf_member_next. */ + +#define CTF_MN_RECURSE 0x1 /* Recurse into unnamed members. */ + +/* These typedefs are used to define the signature for callback functions that + can be used with the iteration and visit functions below. There is also a + family of iteration functions that do not require callbacks. */ + +typedef int ctf_visit_f (const char *name, ctf_id_t type, unsigned long offset, + int depth, void *arg); +typedef int ctf_member_f (const char *name, ctf_id_t membtype, + unsigned long offset, void *arg); +typedef int ctf_enum_f (const char *name, int val, void *arg); +typedef int ctf_variable_f (const char *name, ctf_id_t type, void *arg); +typedef int ctf_type_f (ctf_id_t type, void *arg); +typedef int ctf_type_all_f (ctf_id_t type, int flag, void *arg); +typedef int ctf_label_f (const char *name, const ctf_lblinfo_t *info, + void *arg); +typedef int ctf_archive_member_f (ctf_dict_t *fp, const char *name, void *arg); +typedef int ctf_archive_raw_member_f (const char *name, const void *content, + size_t len, void *arg); +typedef char *ctf_dump_decorate_f (ctf_sect_names_t sect, + char *line, void *arg); + +typedef struct ctf_dump_state ctf_dump_state_t; + +/* Iteration state for the _next functions, and allocators/copiers/freers for + it. (None of these are needed for the simple case of iterating to the end: + the _next function allocate and free the iterators for you.) */ + +typedef struct ctf_next ctf_next_t; +extern ctf_next_t *ctf_next_create (void); +extern void ctf_next_destroy (ctf_next_t *); +extern ctf_next_t *ctf_next_copy (ctf_next_t *); + +/* Opening. These mostly return an abstraction over both CTF files and CTF + archives: so they can be used to open both. CTF files will appear to be an + archive with one member named '.ctf'. The low-level functions + ctf_simple_open and ctf_bufopen return ctf_dict_t's directly, and cannot + be used on CTF archives. */ + +extern ctf_archive_t *ctf_bfdopen (struct bfd *, int *); +extern ctf_archive_t *ctf_bfdopen_ctfsect (struct bfd *, const ctf_sect_t *, + int *); +extern ctf_archive_t *ctf_fdopen (int fd, const char *filename, + const char *target, int *errp); +extern ctf_archive_t *ctf_open (const char *filename, + const char *target, int *errp); +extern void ctf_close (ctf_archive_t *); +extern ctf_sect_t ctf_getdatasect (const ctf_dict_t *); +extern ctf_sect_t ctf_getsymsect (const ctf_dict_t *); +extern ctf_sect_t ctf_getstrsect (const ctf_dict_t *); +extern void ctf_symsect_endianness (ctf_dict_t *, int little_endian); +extern ctf_archive_t *ctf_get_arc (const ctf_dict_t *); +extern ctf_archive_t *ctf_arc_open (const char *, int *); +extern ctf_archive_t *ctf_arc_bufopen (const ctf_sect_t *, + const ctf_sect_t *, + const ctf_sect_t *, + int *); +extern void ctf_arc_symsect_endianness (ctf_archive_t *, int little_endian); +extern void ctf_arc_close (ctf_archive_t *); +extern ctf_dict_t *ctf_arc_lookup_symbol (ctf_archive_t *, + unsigned long symidx, + ctf_id_t *, int *errp); +extern void ctf_arc_flush_caches (ctf_archive_t *); +extern ctf_dict_t *ctf_dict_open (const ctf_archive_t *, + const char *, int *); +extern ctf_dict_t *ctf_dict_open_sections (const ctf_archive_t *, + const ctf_sect_t *, + const ctf_sect_t *, + const char *, int *); +extern size_t ctf_archive_count (const ctf_archive_t *); + +/* The next functions return or close real CTF files, or write out CTF archives, + not opaque containers around either. */ + +extern ctf_dict_t *ctf_simple_open (const char *, size_t, const char *, size_t, + size_t, const char *, size_t, int *); +extern ctf_dict_t *ctf_bufopen (const ctf_sect_t *, const ctf_sect_t *, + const ctf_sect_t *, int *); +extern void ctf_ref (ctf_dict_t *); +extern void ctf_dict_close (ctf_dict_t *); + +extern int ctf_arc_write (const char *, ctf_dict_t **, size_t, + const char **, size_t); +extern int ctf_arc_write_fd (int, ctf_dict_t **, size_t, const char **, + size_t); + +extern const char *ctf_cuname (ctf_dict_t *); +extern int ctf_cuname_set (ctf_dict_t *, const char *); +extern ctf_dict_t *ctf_parent_dict (ctf_dict_t *); +extern const char *ctf_parent_name (ctf_dict_t *); +extern int ctf_parent_name_set (ctf_dict_t *, const char *); +extern int ctf_type_isparent (ctf_dict_t *, ctf_id_t); +extern int ctf_type_ischild (ctf_dict_t *, ctf_id_t); + +extern int ctf_import (ctf_dict_t *, ctf_dict_t *); +extern int ctf_setmodel (ctf_dict_t *, int); +extern int ctf_getmodel (ctf_dict_t *); + +extern void ctf_setspecific (ctf_dict_t *, void *); +extern void *ctf_getspecific (ctf_dict_t *); + +extern int ctf_errno (ctf_dict_t *); +extern const char *ctf_errmsg (int); +extern int ctf_version (int); + +extern int ctf_func_info (ctf_dict_t *, unsigned long, ctf_funcinfo_t *); +extern int ctf_func_args (ctf_dict_t *, unsigned long, uint32_t, ctf_id_t *); +extern int ctf_func_type_info (ctf_dict_t *, ctf_id_t, ctf_funcinfo_t *); +extern int ctf_func_type_args (ctf_dict_t *, ctf_id_t, uint32_t, ctf_id_t *); + +extern ctf_id_t ctf_lookup_by_name (ctf_dict_t *, const char *); +extern ctf_id_t ctf_lookup_by_symbol (ctf_dict_t *, unsigned long); +extern ctf_id_t ctf_symbol_next (ctf_dict_t *, ctf_next_t **, + const char **name, int functions); +extern ctf_id_t ctf_lookup_variable (ctf_dict_t *, const char *); + +extern ctf_id_t ctf_type_resolve (ctf_dict_t *, ctf_id_t); +extern char *ctf_type_aname (ctf_dict_t *, ctf_id_t); +extern char *ctf_type_aname_raw (ctf_dict_t *, ctf_id_t); +extern ssize_t ctf_type_lname (ctf_dict_t *, ctf_id_t, char *, size_t); +extern char *ctf_type_name (ctf_dict_t *, ctf_id_t, char *, size_t); +extern const char *ctf_type_name_raw (ctf_dict_t *, ctf_id_t); +extern ssize_t ctf_type_size (ctf_dict_t *, ctf_id_t); +extern ssize_t ctf_type_align (ctf_dict_t *, ctf_id_t); +extern int ctf_type_kind (ctf_dict_t *, ctf_id_t); +extern int ctf_type_kind_forwarded (ctf_dict_t *, ctf_id_t); +extern ctf_id_t ctf_type_reference (ctf_dict_t *, ctf_id_t); +extern ctf_id_t ctf_type_pointer (ctf_dict_t *, ctf_id_t); +extern int ctf_type_encoding (ctf_dict_t *, ctf_id_t, ctf_encoding_t *); +extern int ctf_type_visit (ctf_dict_t *, ctf_id_t, ctf_visit_f *, void *); +extern int ctf_type_cmp (ctf_dict_t *, ctf_id_t, ctf_dict_t *, ctf_id_t); +extern int ctf_type_compat (ctf_dict_t *, ctf_id_t, ctf_dict_t *, ctf_id_t); + +extern int ctf_member_info (ctf_dict_t *, ctf_id_t, const char *, + ctf_membinfo_t *); +extern int ctf_array_info (ctf_dict_t *, ctf_id_t, ctf_arinfo_t *); + +extern const char *ctf_enum_name (ctf_dict_t *, ctf_id_t, int); +extern int ctf_enum_value (ctf_dict_t *, ctf_id_t, const char *, int *); + +extern void ctf_label_set (ctf_dict_t *, const char *); +extern const char *ctf_label_get (ctf_dict_t *); + +extern const char *ctf_label_topmost (ctf_dict_t *); +extern int ctf_label_info (ctf_dict_t *, const char *, ctf_lblinfo_t *); + +extern int ctf_member_count (ctf_dict_t *, ctf_id_t); +extern int ctf_member_iter (ctf_dict_t *, ctf_id_t, ctf_member_f *, void *); +extern ssize_t ctf_member_next (ctf_dict_t *, ctf_id_t, ctf_next_t **, + const char **name, ctf_id_t *membtype, + int flags); +extern int ctf_enum_iter (ctf_dict_t *, ctf_id_t, ctf_enum_f *, void *); +extern const char *ctf_enum_next (ctf_dict_t *, ctf_id_t, ctf_next_t **, + int *); +extern int ctf_type_iter (ctf_dict_t *, ctf_type_f *, void *); +extern int ctf_type_iter_all (ctf_dict_t *, ctf_type_all_f *, void *); +extern ctf_id_t ctf_type_next (ctf_dict_t *, ctf_next_t **, + int *flag, int want_hidden); +extern int ctf_label_iter (ctf_dict_t *, ctf_label_f *, void *); +extern int ctf_label_next (ctf_dict_t *, ctf_next_t **, const char **); /* TBD */ +extern int ctf_variable_iter (ctf_dict_t *, ctf_variable_f *, void *); +extern ctf_id_t ctf_variable_next (ctf_dict_t *, ctf_next_t **, + const char **); +extern int ctf_archive_iter (const ctf_archive_t *, ctf_archive_member_f *, + void *); +extern ctf_dict_t *ctf_archive_next (const ctf_archive_t *, ctf_next_t **, + const char **, int skip_parent, int *errp); + +/* This function alone does not currently operate on CTF files masquerading + as archives, and returns -EINVAL: the raw data is no longer available. It is + expected to be used only by archiving tools, in any case, which have no need + to deal with non-archives at all. */ +extern int ctf_archive_raw_iter (const ctf_archive_t *, + ctf_archive_raw_member_f *, void *); +extern char *ctf_dump (ctf_dict_t *, ctf_dump_state_t **state, + ctf_sect_names_t sect, ctf_dump_decorate_f *, + void *arg); + +/* Error-warning reporting: an 'iterator' that returns errors and warnings from + the error/warning list, in order of emission. Errors and warnings are popped + after return: the caller must free the returned error-text pointer. */ +extern char *ctf_errwarning_next (ctf_dict_t *, ctf_next_t **, + int *is_warning, int *errp); + +extern ctf_id_t ctf_add_array (ctf_dict_t *, uint32_t, + const ctf_arinfo_t *); +extern ctf_id_t ctf_add_const (ctf_dict_t *, uint32_t, ctf_id_t); +extern ctf_id_t ctf_add_enum_encoded (ctf_dict_t *, uint32_t, const char *, + const ctf_encoding_t *); +extern ctf_id_t ctf_add_enum (ctf_dict_t *, uint32_t, const char *); +extern ctf_id_t ctf_add_float (ctf_dict_t *, uint32_t, + const char *, const ctf_encoding_t *); +extern ctf_id_t ctf_add_forward (ctf_dict_t *, uint32_t, const char *, + uint32_t); +extern ctf_id_t ctf_add_function (ctf_dict_t *, uint32_t, + const ctf_funcinfo_t *, const ctf_id_t *); +extern ctf_id_t ctf_add_integer (ctf_dict_t *, uint32_t, const char *, + const ctf_encoding_t *); +extern ctf_id_t ctf_add_slice (ctf_dict_t *, uint32_t, ctf_id_t, const ctf_encoding_t *); +extern ctf_id_t ctf_add_pointer (ctf_dict_t *, uint32_t, ctf_id_t); +extern ctf_id_t ctf_add_type (ctf_dict_t *, ctf_dict_t *, ctf_id_t); +extern ctf_id_t ctf_add_typedef (ctf_dict_t *, uint32_t, const char *, + ctf_id_t); +extern ctf_id_t ctf_add_restrict (ctf_dict_t *, uint32_t, ctf_id_t); +extern ctf_id_t ctf_add_struct (ctf_dict_t *, uint32_t, const char *); +extern ctf_id_t ctf_add_union (ctf_dict_t *, uint32_t, const char *); +extern ctf_id_t ctf_add_struct_sized (ctf_dict_t *, uint32_t, const char *, + size_t); +extern ctf_id_t ctf_add_union_sized (ctf_dict_t *, uint32_t, const char *, + size_t); +extern ctf_id_t ctf_add_volatile (ctf_dict_t *, uint32_t, ctf_id_t); + +extern int ctf_add_enumerator (ctf_dict_t *, ctf_id_t, const char *, int); +extern int ctf_add_member (ctf_dict_t *, ctf_id_t, const char *, ctf_id_t); +extern int ctf_add_member_offset (ctf_dict_t *, ctf_id_t, const char *, + ctf_id_t, unsigned long); +extern int ctf_add_member_encoded (ctf_dict_t *, ctf_id_t, const char *, + ctf_id_t, unsigned long, + const ctf_encoding_t); + +extern int ctf_add_variable (ctf_dict_t *, const char *, ctf_id_t); + +extern int ctf_add_objt_sym (ctf_dict_t *, const char *, ctf_id_t); +extern int ctf_add_func_sym (ctf_dict_t *, const char *, ctf_id_t); + +extern int ctf_set_array (ctf_dict_t *, ctf_id_t, const ctf_arinfo_t *); + +extern ctf_dict_t *ctf_create (int *); +extern int ctf_update (ctf_dict_t *); +extern ctf_snapshot_id_t ctf_snapshot (ctf_dict_t *); +extern int ctf_rollback (ctf_dict_t *, ctf_snapshot_id_t); +extern int ctf_discard (ctf_dict_t *); +extern int ctf_write (ctf_dict_t *, int); +extern int ctf_gzwrite (ctf_dict_t *fp, gzFile fd); +extern int ctf_compress_write (ctf_dict_t * fp, int fd); +extern unsigned char *ctf_write_mem (ctf_dict_t *, size_t *, size_t threshold); + +extern int ctf_link_add_ctf (ctf_dict_t *, ctf_archive_t *, const char *); +/* The variable filter should return nonzero if a variable should not + appear in the output. */ +typedef int ctf_link_variable_filter_f (ctf_dict_t *, const char *, ctf_id_t, + void *); +extern int ctf_link_set_variable_filter (ctf_dict_t *, + ctf_link_variable_filter_f *, void *); +extern int ctf_link (ctf_dict_t *, int flags); +typedef const char *ctf_link_strtab_string_f (uint32_t *offset, void *arg); +extern int ctf_link_add_strtab (ctf_dict_t *, ctf_link_strtab_string_f *, + void *); +extern int ctf_link_add_linker_symbol (ctf_dict_t *, ctf_link_sym_t *); +extern int ctf_link_shuffle_syms (ctf_dict_t *); +extern unsigned char *ctf_link_write (ctf_dict_t *, size_t *size, + size_t threshold); + +/* Specialist linker functions. These functions are not used by ld, but can be + used by other programs making use of the linker machinery for other purposes + to customize its output. */ +extern int ctf_link_add_cu_mapping (ctf_dict_t *, const char *from, + const char *to); +typedef char *ctf_link_memb_name_changer_f (ctf_dict_t *, + const char *, void *); +extern void ctf_link_set_memb_name_changer + (ctf_dict_t *, ctf_link_memb_name_changer_f *, void *); + +extern void ctf_setdebug (int debug); +extern int ctf_getdebug (void); + +/* Deprecated aliases for existing functions and types. */ + +struct ctf_file; +typedef struct ctf_dict ctf_file_t; +extern void ctf_file_close (ctf_file_t *); +extern ctf_dict_t *ctf_parent_file (ctf_dict_t *); +extern ctf_dict_t *ctf_arc_open_by_name (const ctf_archive_t *, + const char *, int *); +extern ctf_dict_t *ctf_arc_open_by_name_sections (const ctf_archive_t *, + const ctf_sect_t *, + const ctf_sect_t *, + const char *, int *); + +#ifdef __cplusplus +} +#endif + +#endif /* _CTF_API_H */ diff --git a/include/ctf.h b/include/ctf.h new file mode 100644 index 0000000..5060574 --- /dev/null +++ b/include/ctf.h @@ -0,0 +1,620 @@ +/* CTF format description. + Copyright (C) 2019-2021 Free Software Foundation, Inc. + + This file is part of libctf. + + libctf is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 3, or (at your option) any later + version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not see + . */ + +#ifndef _CTF_H +#define _CTF_H + +#include +#include +#include + + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* CTF - Compact ANSI-C Type Format + + This file format can be used to compactly represent the information needed + by a debugger to interpret the ANSI-C types used by a given program. + Traditionally, this kind of information is generated by the compiler when + invoked with the -g flag and is stored in "stabs" strings or in the more + modern DWARF format. CTF provides a representation of only the information + that is relevant to debugging a complex, optimized C program such as the + operating system kernel in a form that is significantly more compact than + the equivalent stabs or DWARF representation. The format is data-model + independent, so consumers do not need different code depending on whether + they are 32-bit or 64-bit programs; libctf automatically compensates for + endianness variations. CTF assumes that a standard ELF symbol table is + available for use in the debugger, and uses the structure and data of the + symbol table to avoid storing redundant information. The CTF data may be + compressed on disk or in memory, indicated by a bit in the header. CTF may + be interpreted in a raw disk file, or it may be stored in an ELF section, + typically named .ctf. Data structures are aligned so that a raw CTF file or + CTF ELF section may be manipulated using mmap(2). + + The CTF file or section itself has the following structure: + + +--------+--------+---------+----------+--------+----------+... + | file | type | data | function | object | function |... + | header | labels | objects | info | index | index |... + +--------+--------+---------+----------+--------+----------+... + + ...+----------+-------+--------+ + ...| variable | data | string | + ...| info | types | table | + +----------+-------+--------+ + + The file header stores a magic number and version information, encoding + flags, and the byte offset of each of the sections relative to the end of the + header itself. If the CTF data has been uniquified against another set of + CTF data, a reference to that data also appears in the the header. This + reference is the name of the label corresponding to the types uniquified + against. + + Following the header is a list of labels, used to group the types included in + the data types section. Each label is accompanied by a type ID i. A given + label refers to the group of types whose IDs are in the range [0, i]. + + Data object and function records (collectively, "symtypetabs") are stored in + the same order as they appear in the corresponding symbol table, except that + symbols marked SHN_UNDEF are not stored and symbols that have no type data + are padded out with zeroes. For each entry in these tables, the type ID (a + small integer) is recorded. (Functions get CTF_K_FUNCTION types, just like + data objects that are function pointers.) + + For situations in which the order of the symbols in the symtab is not known, + or most symbols have no type in this dict and most entries would be + zero-pads, a pair of optional indexes follow the data object and function + info sections: each of these is an array of strtab indexes, mapped 1:1 to the + corresponding data object / function info section, giving each entry in those + sections a name so that the linker can correlate them with final symtab + entries and reorder them accordingly (dropping the indexes in the process). + + Variable records (as distinct from data objects) provide a modicum of support + for non-ELF systems, mapping a variable name to a CTF type ID. The variable + names are sorted into ASCIIbetical order, permitting binary searching. We do + not define how the consumer maps these variable names to addresses or + anything else, or indeed what these names represent: they might be names + looked up at runtime via dlsym() or names extracted at runtime by a debugger + or anything else the consumer likes. Variable records with identically- + named entries in the data object section are removed. + + The data types section is a list of variable size records that represent each + type, in order by their ID. The types themselves form a directed graph, + where each node may contain one or more outgoing edges to other type nodes, + denoted by their ID. Most type nodes are standalone or point backwards to + earlier nodes, but this is not required: nodes can point to later nodes, + particularly structure and union members. + + Strings are recorded as a string table ID (0 or 1) and a byte offset into the + string table. String table 0 is the internal CTF string table. String table + 1 is the external string table, which is the string table associated with the + ELF dynamic symbol table for this object. CTF does not record any strings + that are already in the symbol table, and the CTF string table does not + contain any duplicated strings. + + If the CTF data has been merged with another parent CTF object, some outgoing + edges may refer to type nodes that exist in another CTF object. The debugger + and libctf library are responsible for connecting the appropriate objects + together so that the full set of types can be explored and manipulated. + + This connection is done purely using the ctf_import() function. The + ctf_archive machinery (and thus ctf_open et al) automatically imports archive + members named ".ctf" into child dicts if available in the same archive, to + match the relationship set up by the linker, but callers can call ctf_import + themselves as well if need be, if they know a different relationship is in + force. */ + +#define CTF_MAX_TYPE 0xfffffffe /* Max type identifier value. */ +#define CTF_MAX_PTYPE 0x7fffffff /* Max parent type identifier value. */ +#define CTF_MAX_NAME 0x7fffffff /* Max offset into a string table. */ +#define CTF_MAX_VLEN 0xffffff /* Max struct, union, enum members or args. */ + +/* See ctf_type_t */ +#define CTF_MAX_SIZE 0xfffffffe /* Max size of a v2 type in bytes. */ +#define CTF_LSIZE_SENT 0xffffffff /* Sentinel for v2 ctt_size. */ + +# define CTF_MAX_TYPE_V1 0xffff /* Max type identifier value. */ +# define CTF_MAX_PTYPE_V1 0x7fff /* Max parent type identifier value. */ +# define CTF_MAX_VLEN_V1 0x3ff /* Max struct, union, enums or args. */ +# define CTF_MAX_SIZE_V1 0xfffe /* Max size of a type in bytes. */ +# define CTF_LSIZE_SENT_V1 0xffff /* Sentinel for v1 ctt_size. */ + + /* Start of actual data structure definitions. + + Every field in these structures must have corresponding code in the + endianness-swapping machinery in libctf/ctf-open.c. */ + +typedef struct ctf_preamble +{ + unsigned short ctp_magic; /* Magic number (CTF_MAGIC). */ + unsigned char ctp_version; /* Data format version number (CTF_VERSION). */ + unsigned char ctp_flags; /* Flags (see below). */ +} ctf_preamble_t; + +typedef struct ctf_header_v2 +{ + ctf_preamble_t cth_preamble; + uint32_t cth_parlabel; /* Ref to name of parent lbl uniq'd against. */ + uint32_t cth_parname; /* Ref to basename of parent. */ + uint32_t cth_lbloff; /* Offset of label section. */ + uint32_t cth_objtoff; /* Offset of object section. */ + uint32_t cth_funcoff; /* Offset of function section. */ + uint32_t cth_varoff; /* Offset of variable section. */ + uint32_t cth_typeoff; /* Offset of type section. */ + uint32_t cth_stroff; /* Offset of string section. */ + uint32_t cth_strlen; /* Length of string section in bytes. */ +} ctf_header_v2_t; + +typedef struct ctf_header +{ + ctf_preamble_t cth_preamble; + uint32_t cth_parlabel; /* Ref to name of parent lbl uniq'd against. */ + uint32_t cth_parname; /* Ref to basename of parent. */ + uint32_t cth_cuname; /* Ref to CU name (may be 0). */ + uint32_t cth_lbloff; /* Offset of label section. */ + uint32_t cth_objtoff; /* Offset of object section. */ + uint32_t cth_funcoff; /* Offset of function section. */ + uint32_t cth_objtidxoff; /* Offset of object index section. */ + uint32_t cth_funcidxoff; /* Offset of function index section. */ + uint32_t cth_varoff; /* Offset of variable section. */ + uint32_t cth_typeoff; /* Offset of type section. */ + uint32_t cth_stroff; /* Offset of string section. */ + uint32_t cth_strlen; /* Length of string section in bytes. */ +} ctf_header_t; + +#define cth_magic cth_preamble.ctp_magic +#define cth_version cth_preamble.ctp_version +#define cth_flags cth_preamble.ctp_flags + +#define CTF_MAGIC 0xdff2 /* Magic number identifying header. */ + +/* Data format version number. */ + +/* v1 upgraded to a later version is not quite the same as the native form, + because the boundary between parent and child types is different but not + recorded anywhere, and you can write it out again via ctf_compress_write(), + so we must track whether the thing was originally v1 or not. If we were + writing the header from scratch, we would add a *pair* of version number + fields to allow for this, but this will do for now. (A flag will not do, + because we need to encode both the version we came from and the version we + went to, not just "we were upgraded".) */ + +# define CTF_VERSION_1 1 +# define CTF_VERSION_1_UPGRADED_3 2 +# define CTF_VERSION_2 3 + +#define CTF_VERSION_3 4 +#define CTF_VERSION CTF_VERSION_3 /* Current version. */ + +/* All of these flags bar CTF_F_COMPRESS and CTF_F_IDXSORTED are bug-workaround + flags and are valid only in format v3: in v2 and below they cannot occur and + in v4 and later, they will be recycled for other purposes. */ + +#define CTF_F_COMPRESS 0x1 /* Data buffer is compressed by libctf. */ +#define CTF_F_NEWFUNCINFO 0x2 /* New v3 func info section format. */ +#define CTF_F_IDXSORTED 0x4 /* Index sections already sorted. */ +#define CTF_F_DYNSTR 0x8 /* Strings come from .dynstr. */ +#define CTF_F_MAX (CTF_F_COMPRESS | CTF_F_NEWFUNCINFO | CTF_F_IDXSORTED \ + | CTF_F_DYNSTR) + +typedef struct ctf_lblent +{ + uint32_t ctl_label; /* Ref to name of label. */ + uint32_t ctl_type; /* Last type associated with this label. */ +} ctf_lblent_t; + +typedef struct ctf_varent +{ + uint32_t ctv_name; /* Reference to name in string table. */ + uint32_t ctv_type; /* Index of type of this variable. */ +} ctf_varent_t; + +/* In format v2, type sizes, measured in bytes, come in two flavours. Nearly + all of them fit into a (UINT_MAX - 1), and thus can be stored in the ctt_size + member of a ctf_stype_t. The maximum value for these sizes is CTF_MAX_SIZE. + Types larger than this must be stored in the ctf_lsize member of a + ctf_type_t. Use of this member is indicated by the presence of + CTF_LSIZE_SENT in ctt_size. */ + +/* In v1, the same applies, only the limit is (USHRT_MAX - 1) and + CTF_MAX_SIZE_V1, and CTF_LSIZE_SENT_V1 is the sentinel. */ + +typedef struct ctf_stype_v1 +{ + uint32_t ctt_name; /* Reference to name in string table. */ + unsigned short ctt_info; /* Encoded kind, variant length (see below). */ +#ifndef __GNUC__ + union + { + unsigned short _size; /* Size of entire type in bytes. */ + unsigned short _type; /* Reference to another type. */ + } _u; +#else + __extension__ + union + { + unsigned short ctt_size; /* Size of entire type in bytes. */ + unsigned short ctt_type; /* Reference to another type. */ + }; +#endif +} ctf_stype_v1_t; + +typedef struct ctf_type_v1 +{ + uint32_t ctt_name; /* Reference to name in string table. */ + unsigned short ctt_info; /* Encoded kind, variant length (see below). */ +#ifndef __GNUC__ + union + { + unsigned short _size; /* Always CTF_LSIZE_SENT_V1. */ + unsigned short _type; /* Do not use. */ + } _u; +#else + __extension__ + union + { + unsigned short ctt_size; /* Always CTF_LSIZE_SENT_V1. */ + unsigned short ctt_type; /* Do not use. */ + }; +#endif + uint32_t ctt_lsizehi; /* High 32 bits of type size in bytes. */ + uint32_t ctt_lsizelo; /* Low 32 bits of type size in bytes. */ +} ctf_type_v1_t; + + +typedef struct ctf_stype +{ + uint32_t ctt_name; /* Reference to name in string table. */ + uint32_t ctt_info; /* Encoded kind, variant length (see below). */ +#ifndef __GNUC__ + union + { + uint32_t _size; /* Size of entire type in bytes. */ + uint32_t _type; /* Reference to another type. */ + } _u; +#else + __extension__ + union + { + uint32_t ctt_size; /* Size of entire type in bytes. */ + uint32_t ctt_type; /* Reference to another type. */ + }; +#endif +} ctf_stype_t; + +typedef struct ctf_type +{ + uint32_t ctt_name; /* Reference to name in string table. */ + uint32_t ctt_info; /* Encoded kind, variant length (see below). */ +#ifndef __GNUC__ +union + { + uint32_t _size; /* Always CTF_LSIZE_SENT. */ + uint32_t _type; /* Do not use. */ + } _u; +#else + __extension__ + union + { + uint32_t ctt_size; /* Always CTF_LSIZE_SENT. */ + uint32_t ctt_type; /* Do not use. */ + }; +#endif + uint32_t ctt_lsizehi; /* High 32 bits of type size in bytes. */ + uint32_t ctt_lsizelo; /* Low 32 bits of type size in bytes. */ +} ctf_type_t; + +#ifndef __GNUC__ +#define ctt_size _u._size /* For fundamental types that have a size. */ +#define ctt_type _u._type /* For types that reference another type. */ +#endif + +/* The following macros and inline functions compose and decompose values for + ctt_info and ctt_name, as well as other structures that contain name + references. Use outside libdtrace-ctf itself is explicitly for access to CTF + files directly: types returned from the library will always appear to be + CTF_V2. + + v1: (transparently upgraded to v2 at open time: may be compiled out of the + library) + ------------------------ + ctt_info: | kind | isroot | vlen | + ------------------------ + 15 11 10 9 0 + + v2: + ------------------------ + ctt_info: | kind | isroot | vlen | + ------------------------ + 31 26 25 24 0 + + CTF_V1 and V2 _INFO_VLEN have the same interface: + + kind = CTF_*_INFO_KIND(c.ctt_info); <-- CTF_K_* value (see below) + vlen = CTF_*_INFO_VLEN(fp, c.ctt_info); <-- length of variable data list + + stid = CTF_NAME_STID(c.ctt_name); <-- string table id number (0 or 1) + offset = CTF_NAME_OFFSET(c.ctt_name); <-- string table byte offset + + c.ctt_info = CTF_TYPE_INFO(kind, vlen); + c.ctt_name = CTF_TYPE_NAME(stid, offset); */ + +# define CTF_V1_INFO_KIND(info) (((info) & 0xf800) >> 11) +# define CTF_V1_INFO_ISROOT(info) (((info) & 0x0400) >> 10) +# define CTF_V1_INFO_VLEN(info) (((info) & CTF_MAX_VLEN_V1)) + +#define CTF_V2_INFO_KIND(info) (((info) & 0xfc000000) >> 26) +#define CTF_V2_INFO_ISROOT(info) (((info) & 0x2000000) >> 25) +#define CTF_V2_INFO_VLEN(info) (((info) & CTF_MAX_VLEN)) + +#define CTF_NAME_STID(name) ((name) >> 31) +#define CTF_NAME_OFFSET(name) ((name) & CTF_MAX_NAME) +#define CTF_SET_STID(name, stid) ((name) | (stid) << 31) + +/* V2 only. */ +#define CTF_TYPE_INFO(kind, isroot, vlen) \ + (((kind) << 26) | (((isroot) ? 1 : 0) << 25) | ((vlen) & CTF_MAX_VLEN)) + +#define CTF_TYPE_NAME(stid, offset) \ + (((stid) << 31) | ((offset) & CTF_MAX_NAME)) + +/* The next set of macros are for public consumption only. Not used internally, + since the relevant type boundary is dependent upon the version of the file at + *opening* time, not the version after transparent upgrade. Use + ctf_type_isparent() / ctf_type_ischild() for that. */ + +#define CTF_V2_TYPE_ISPARENT(fp, id) ((id) <= CTF_MAX_PTYPE) +#define CTF_V2_TYPE_ISCHILD(fp, id) ((id) > CTF_MAX_PTYPE) +#define CTF_V2_TYPE_TO_INDEX(id) ((id) & CTF_MAX_PTYPE) +#define CTF_V2_INDEX_TO_TYPE(id, child) ((child) ? ((id) | (CTF_MAX_PTYPE+1)) : (id)) + +# define CTF_V1_TYPE_ISPARENT(fp, id) ((id) <= CTF_MAX_PTYPE_V1) +# define CTF_V1_TYPE_ISCHILD(fp, id) ((id) > CTF_MAX_PTYPE_V1) +# define CTF_V1_TYPE_TO_INDEX(id) ((id) & CTF_MAX_PTYPE_V1) +# define CTF_V1_INDEX_TO_TYPE(id, child) ((child) ? ((id) | (CTF_MAX_PTYPE_V1+1)) : (id)) + +/* Valid for both V1 and V2. */ +#define CTF_TYPE_LSIZE(cttp) \ + (((uint64_t)(cttp)->ctt_lsizehi) << 32 | (cttp)->ctt_lsizelo) +#define CTF_SIZE_TO_LSIZE_HI(size) ((uint32_t)((uint64_t)(size) >> 32)) +#define CTF_SIZE_TO_LSIZE_LO(size) ((uint32_t)(size)) + +#define CTF_STRTAB_0 0 /* String table id 0 (in-CTF). */ +#define CTF_STRTAB_1 1 /* String table id 1 (ELF strtab). */ + +/* Values for CTF_TYPE_KIND(). If the kind has an associated data list, + CTF_INFO_VLEN() will extract the number of elements in the list, and + the type of each element is shown in the comments below. */ + +#define CTF_K_UNKNOWN 0 /* Unknown type (used for padding). */ +#define CTF_K_INTEGER 1 /* Variant data is CTF_INT_DATA (see below). */ +#define CTF_K_FLOAT 2 /* Variant data is CTF_FP_DATA (see below). */ +#define CTF_K_POINTER 3 /* ctt_type is referenced type. */ +#define CTF_K_ARRAY 4 /* Variant data is single ctf_array_t. */ +#define CTF_K_FUNCTION 5 /* ctt_type is return type, variant data is + list of argument types (unsigned short's for v1, + uint32_t's for v2). */ +#define CTF_K_STRUCT 6 /* Variant data is list of ctf_member_t's. */ +#define CTF_K_UNION 7 /* Variant data is list of ctf_member_t's. */ +#define CTF_K_ENUM 8 /* Variant data is list of ctf_enum_t's. */ +#define CTF_K_FORWARD 9 /* No additional data; ctt_name is tag. */ +#define CTF_K_TYPEDEF 10 /* ctt_type is referenced type. */ +#define CTF_K_VOLATILE 11 /* ctt_type is base type. */ +#define CTF_K_CONST 12 /* ctt_type is base type. */ +#define CTF_K_RESTRICT 13 /* ctt_type is base type. */ +#define CTF_K_SLICE 14 /* Variant data is a ctf_slice_t. */ + +#define CTF_K_MAX 63 /* Maximum possible (V2) CTF_K_* value. */ + +/* Values for ctt_type when kind is CTF_K_INTEGER. The flags, offset in bits, + and size in bits are encoded as a single word using the following macros. + (However, you can also encode the offset and bitness in a slice.) */ + +#define CTF_INT_ENCODING(data) (((data) & 0xff000000) >> 24) +#define CTF_INT_OFFSET(data) (((data) & 0x00ff0000) >> 16) +#define CTF_INT_BITS(data) (((data) & 0x0000ffff)) + +#define CTF_INT_DATA(encoding, offset, bits) \ + (((encoding) << 24) | ((offset) << 16) | (bits)) + +#define CTF_INT_SIGNED 0x01 /* Integer is signed (otherwise unsigned). */ +#define CTF_INT_CHAR 0x02 /* Character display format. */ +#define CTF_INT_BOOL 0x04 /* Boolean display format. */ +#define CTF_INT_VARARGS 0x08 /* Varargs display format. */ + +/* Use CTF_CHAR to produce a char that agrees with the system's native + char signedness. */ +#if CHAR_MIN == 0 +# define CTF_CHAR (CTF_INT_CHAR) +#else +# define CTF_CHAR (CTF_INT_CHAR | CTF_INT_SIGNED) +#endif + +/* Values for ctt_type when kind is CTF_K_FLOAT. The encoding, offset in bits, + and size in bits are encoded as a single word using the following macros. + (However, you can also encode the offset and bitness in a slice.) */ + +#define CTF_FP_ENCODING(data) (((data) & 0xff000000) >> 24) +#define CTF_FP_OFFSET(data) (((data) & 0x00ff0000) >> 16) +#define CTF_FP_BITS(data) (((data) & 0x0000ffff)) + +#define CTF_FP_DATA(encoding, offset, bits) \ + (((encoding) << 24) | ((offset) << 16) | (bits)) + +/* Variant data when kind is CTF_K_FLOAT is an encoding in the top eight bits. */ +#define CTF_FP_ENCODING(data) (((data) & 0xff000000) >> 24) + +#define CTF_FP_SINGLE 1 /* IEEE 32-bit float encoding. */ +#define CTF_FP_DOUBLE 2 /* IEEE 64-bit float encoding. */ +#define CTF_FP_CPLX 3 /* Complex encoding. */ +#define CTF_FP_DCPLX 4 /* Double complex encoding. */ +#define CTF_FP_LDCPLX 5 /* Long double complex encoding. */ +#define CTF_FP_LDOUBLE 6 /* Long double encoding. */ +#define CTF_FP_INTRVL 7 /* Interval (2x32-bit) encoding. */ +#define CTF_FP_DINTRVL 8 /* Double interval (2x64-bit) encoding. */ +#define CTF_FP_LDINTRVL 9 /* Long double interval (2x128-bit) encoding. */ +#define CTF_FP_IMAGRY 10 /* Imaginary (32-bit) encoding. */ +#define CTF_FP_DIMAGRY 11 /* Long imaginary (64-bit) encoding. */ +#define CTF_FP_LDIMAGRY 12 /* Long double imaginary (128-bit) encoding. */ + +#define CTF_FP_MAX 12 /* Maximum possible CTF_FP_* value */ + +/* A slice increases the offset and reduces the bitness of the referenced + ctt_type, which must be a type which has an encoding (fp, int, or enum). We + also store the referenced type in here, because it is easier to keep the + ctt_size correct for the slice than to shuffle the size into here and keep + the ctt_type where it is for other types. + + In a future version, where we loosen requirements on alignment in the CTF + file, the cts_offset and cts_bits will be chars: but for now they must be + shorts or everything after a slice will become unaligned. */ + +typedef struct ctf_slice +{ + uint32_t cts_type; + unsigned short cts_offset; + unsigned short cts_bits; +} ctf_slice_t; + +typedef struct ctf_array_v1 +{ + unsigned short cta_contents; /* Reference to type of array contents. */ + unsigned short cta_index; /* Reference to type of array index. */ + uint32_t cta_nelems; /* Number of elements. */ +} ctf_array_v1_t; + +typedef struct ctf_array +{ + uint32_t cta_contents; /* Reference to type of array contents. */ + uint32_t cta_index; /* Reference to type of array index. */ + uint32_t cta_nelems; /* Number of elements. */ +} ctf_array_t; + +/* Most structure members have bit offsets that can be expressed using a short. + Some don't. ctf_member_t is used for structs which cannot contain any of + these large offsets, whereas ctf_lmember_t is used in the latter case. If + any member of a given struct has an offset that cannot be expressed using a + uint32_t, all members will be stored as type ctf_lmember_t. This is expected + to be very rare (but nonetheless possible). */ + +#define CTF_LSTRUCT_THRESH 536870912 + +/* In v1, the same is true, except that lmembers are used for structs >= 8192 + bytes in size. (The ordering of members in the ctf_member_* structures is + different to improve padding.) */ + +#define CTF_LSTRUCT_THRESH_V1 8192 + +typedef struct ctf_member_v1 +{ + uint32_t ctm_name; /* Reference to name in string table. */ + unsigned short ctm_type; /* Reference to type of member. */ + unsigned short ctm_offset; /* Offset of this member in bits. */ +} ctf_member_v1_t; + +typedef struct ctf_lmember_v1 +{ + uint32_t ctlm_name; /* Reference to name in string table. */ + unsigned short ctlm_type; /* Reference to type of member. */ + unsigned short ctlm_pad; /* Padding. */ + uint32_t ctlm_offsethi; /* High 32 bits of member offset in bits. */ + uint32_t ctlm_offsetlo; /* Low 32 bits of member offset in bits. */ +} ctf_lmember_v1_t; + +typedef struct ctf_member_v2 +{ + uint32_t ctm_name; /* Reference to name in string table. */ + uint32_t ctm_offset; /* Offset of this member in bits. */ + uint32_t ctm_type; /* Reference to type of member. */ +} ctf_member_t; + +typedef struct ctf_lmember_v2 +{ + uint32_t ctlm_name; /* Reference to name in string table. */ + uint32_t ctlm_offsethi; /* High 32 bits of member offset in bits. */ + uint32_t ctlm_type; /* Reference to type of member. */ + uint32_t ctlm_offsetlo; /* Low 32 bits of member offset in bits. */ +} ctf_lmember_t; + +#define CTF_LMEM_OFFSET(ctlmp) \ + (((uint64_t)(ctlmp)->ctlm_offsethi) << 32 | (ctlmp)->ctlm_offsetlo) +#define CTF_OFFSET_TO_LMEMHI(offset) ((uint32_t)((uint64_t)(offset) >> 32)) +#define CTF_OFFSET_TO_LMEMLO(offset) ((uint32_t)(offset)) + +typedef struct ctf_enum +{ + uint32_t cte_name; /* Reference to name in string table. */ + int32_t cte_value; /* Value associated with this name. */ +} ctf_enum_t; + +/* The ctf_archive is a collection of ctf_dict_t's stored together. The format + is suitable for mmap()ing: this control structure merely describes the + mmap()ed archive (and overlaps the first few bytes of it), hence the + greater care taken with integral types. All CTF files in an archive + must have the same data model. (This is not validated.) + + All integers in this structure are stored in little-endian byte order. + + The code relies on the fact that everything in this header is a uint64_t + and thus the header needs no padding (in particular, that no padding is + needed between ctfa_ctfs and the unnamed ctfa_archive_modent array + that follows it). + + This is *not* the same as the data structure returned by the ctf_arc_*() + functions: this is the low-level on-disk representation. */ + +#define CTFA_MAGIC 0x8b47f2a4d7623eeb /* Random. */ +struct ctf_archive +{ + /* Magic number. (In loaded files, overwritten with the file size + so ctf_arc_close() knows how much to munmap()). */ + uint64_t ctfa_magic; + + /* CTF data model. */ + uint64_t ctfa_model; + + /* Number of CTF dicts in the archive. */ + uint64_t ctfa_ndicts; + + /* Offset of the name table. */ + uint64_t ctfa_names; + + /* Offset of the CTF table. Each element starts with a size (a uint64_t + in network byte order) then a ctf_dict_t of that size. */ + uint64_t ctfa_ctfs; +}; + +/* An array of ctfa_nnamed of this structure lies at + ctf_archive[ctf_archive->ctfa_modents] and gives the ctfa_ctfs or + ctfa_names-relative offsets of each name or ctf_dict_t. */ + +typedef struct ctf_archive_modent +{ + uint64_t name_offset; + uint64_t ctf_offset; +} ctf_archive_modent_t; + +#ifdef __cplusplus +} +#endif + +#endif /* _CTF_H */ diff --git a/include/diagnostics.h b/include/diagnostics.h new file mode 100644 index 0000000..f6fd30e --- /dev/null +++ b/include/diagnostics.h @@ -0,0 +1,103 @@ +/* Copyright (C) 2017-2021 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef DIAGNOSTICS_H +#define DIAGNOSTICS_H + +/* If at all possible, fix the source rather than using these macros + to silence warnings. If you do use these macros be aware that + you'll need to condition their use on particular compiler versions, + which can be done for gcc using ansidecl.h's GCC_VERSION macro. + + gcc versions between 4.2 and 4.6 do not allow pragma control of + diagnostics inside functions, giving a hard error if you try to use + the finer control available with later versions. + gcc prior to 4.2 warns about diagnostic push and pop. + + The other macros have restrictions too, for example gcc-5, gcc-6 + and gcc-7 warn that -Wstringop-truncation is unknown, unless you + also add DIAGNOSTIC_IGNORE ("-Wpragma"). */ + +#ifdef __GNUC__ +# define DIAGNOSTIC_PUSH _Pragma ("GCC diagnostic push") +# define DIAGNOSTIC_POP _Pragma ("GCC diagnostic pop") + +/* Stringification. */ +# define DIAGNOSTIC_STRINGIFY_1(x) #x +# define DIAGNOSTIC_STRINGIFY(x) DIAGNOSTIC_STRINGIFY_1 (x) + +# define DIAGNOSTIC_IGNORE(option) \ + _Pragma (DIAGNOSTIC_STRINGIFY (GCC diagnostic ignored option)) +#else +# define DIAGNOSTIC_PUSH +# define DIAGNOSTIC_POP +# define DIAGNOSTIC_IGNORE(option) +#endif + +#if defined (__clang__) /* clang */ + +# define DIAGNOSTIC_IGNORE_SELF_MOVE DIAGNOSTIC_IGNORE ("-Wself-move") +# define DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS \ + DIAGNOSTIC_IGNORE ("-Wdeprecated-declarations") +# define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER \ + DIAGNOSTIC_IGNORE ("-Wdeprecated-register") +# if __has_warning ("-Wenum-compare-switch") +# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES \ + DIAGNOSTIC_IGNORE ("-Wenum-compare-switch") +# endif + +# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \ + DIAGNOSTIC_IGNORE ("-Wformat-nonliteral") + +#elif defined (__GNUC__) /* GCC */ + +# if __GNUC__ >= 7 +# define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER \ + DIAGNOSTIC_IGNORE ("-Wregister") +# endif + +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") + +# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \ + DIAGNOSTIC_IGNORE ("-Wformat-nonliteral") + +#endif + +#ifndef DIAGNOSTIC_IGNORE_SELF_MOVE +# define DIAGNOSTIC_IGNORE_SELF_MOVE +#endif + +#ifndef DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS +# define DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS +#endif + +#ifndef DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER +# define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER +#endif + +#ifndef DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES +# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES +#endif + +#ifndef DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION +#endif + +#ifndef DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL +# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL +#endif + +#endif /* DIAGNOSTICS_H */ diff --git a/include/dis-asm.h b/include/dis-asm.h new file mode 100644 index 0000000..368eb27 --- /dev/null +++ b/include/dis-asm.h @@ -0,0 +1,400 @@ +/* Interface between the opcode library and its callers. + + Copyright (C) 1999-2021 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, + Boston, MA 02110-1301, USA. + + Written by Cygnus Support, 1993. + + The opcode library (libopcodes.a) provides instruction decoders for + a large variety of instruction sets, callable with an identical + interface, for making instruction-processing programs more independent + of the instruction set being processed. */ + +#ifndef DIS_ASM_H +#define DIS_ASM_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "bfd.h" + + typedef int (*fprintf_ftype) (void *, const char*, ...) ATTRIBUTE_FPTR_PRINTF_2; + +enum dis_insn_type +{ + dis_noninsn, /* Not a valid instruction. */ + dis_nonbranch, /* Not a branch instruction. */ + dis_branch, /* Unconditional branch. */ + dis_condbranch, /* Conditional branch. */ + dis_jsr, /* Jump to subroutine. */ + dis_condjsr, /* Conditional jump to subroutine. */ + dis_dref, /* Data reference instruction. */ + dis_dref2 /* Two data references in instruction. */ +}; + +/* This struct is passed into the instruction decoding routine, + and is passed back out into each callback. The various fields are used + for conveying information from your main routine into your callbacks, + for passing information into the instruction decoders (such as the + addresses of the callback functions), or for passing information + back from the instruction decoders to their callers. + + It must be initialized before it is first passed; this can be done + by hand, or using one of the initialization macros below. */ + +typedef struct disassemble_info +{ + fprintf_ftype fprintf_func; + void *stream; + void *application_data; + + /* Target description. We could replace this with a pointer to the bfd, + but that would require one. There currently isn't any such requirement + so to avoid introducing one we record these explicitly. */ + /* The bfd_flavour. This can be bfd_target_unknown_flavour. */ + enum bfd_flavour flavour; + /* The bfd_arch value. */ + enum bfd_architecture arch; + /* The bfd_mach value. */ + unsigned long mach; + /* Endianness (for bi-endian cpus). Mono-endian cpus can ignore this. */ + enum bfd_endian endian; + /* Endianness of code, for mixed-endian situations such as ARM BE8. */ + enum bfd_endian endian_code; + + /* Some targets need information about the current section to accurately + display insns. If this is NULL, the target disassembler function + will have to make its best guess. */ + asection *section; + + /* An array of pointers to symbols either at the location being disassembled + or at the start of the function being disassembled. The array is sorted + so that the first symbol is intended to be the one used. The others are + present for any misc. purposes. This is not set reliably, but if it is + not NULL, it is correct. */ + asymbol **symbols; + /* Number of symbols in array. */ + int num_symbols; + + /* Symbol table provided for targets that want to look at it. This is + used on Arm to find mapping symbols and determine Arm/Thumb code. */ + asymbol **symtab; + int symtab_pos; + int symtab_size; + + /* For use by the disassembler. + The top 16 bits are reserved for public use (and are documented here). + The bottom 16 bits are for the internal use of the disassembler. */ + unsigned long flags; + /* Set if the disassembler has determined that there are one or more + relocations associated with the instruction being disassembled. */ +#define INSN_HAS_RELOC (1u << 31) + /* Set if the user has requested the disassembly of data as well as code. */ +#define DISASSEMBLE_DATA (1u << 30) + /* Set if the user has specifically set the machine type encoded in the + mach field of this structure. */ +#define USER_SPECIFIED_MACHINE_TYPE (1u << 29) + /* Set if the user has requested wide output. */ +#define WIDE_OUTPUT (1u << 28) + + /* Use internally by the target specific disassembly code. */ + void *private_data; + + /* Function used to get bytes to disassemble. MEMADDR is the + address of the stuff to be disassembled, MYADDR is the address to + put the bytes in, and LENGTH is the number of bytes to read. + INFO is a pointer to this struct. + Returns an errno value or 0 for success. */ + int (*read_memory_func) + (bfd_vma memaddr, bfd_byte *myaddr, unsigned int length, + struct disassemble_info *dinfo); + + /* Function which should be called if we get an error that we can't + recover from. STATUS is the errno value from read_memory_func and + MEMADDR is the address that we were trying to read. INFO is a + pointer to this struct. */ + void (*memory_error_func) + (int status, bfd_vma memaddr, struct disassemble_info *dinfo); + + /* Function called to print ADDR. */ + void (*print_address_func) + (bfd_vma addr, struct disassemble_info *dinfo); + + /* Function called to determine if there is a symbol at the given ADDR. + If there is, the function returns 1, otherwise it returns 0. + This is used by ports which support an overlay manager where + the overlay number is held in the top part of an address. In + some circumstances we want to include the overlay number in the + address, (normally because there is a symbol associated with + that address), but sometimes we want to mask out the overlay bits. */ + int (* symbol_at_address_func) + (bfd_vma addr, struct disassemble_info *dinfo); + + /* Function called to check if a SYMBOL is can be displayed to the user. + This is used by some ports that want to hide special symbols when + displaying debugging outout. */ + bfd_boolean (* symbol_is_valid) + (asymbol *, struct disassemble_info *dinfo); + + /* These are for buffer_read_memory. */ + bfd_byte *buffer; + bfd_vma buffer_vma; + size_t buffer_length; + + /* This variable may be set by the instruction decoder. It suggests + the number of bytes objdump should display on a single line. If + the instruction decoder sets this, it should always set it to + the same value in order to get reasonable looking output. */ + int bytes_per_line; + + /* The next two variables control the way objdump displays the raw data. */ + /* For example, if bytes_per_line is 8 and bytes_per_chunk is 4, the */ + /* output will look like this: + 00: 00000000 00000000 + with the chunks displayed according to "display_endian". */ + int bytes_per_chunk; + enum bfd_endian display_endian; + + /* Number of octets per incremented target address + Normally one, but some DSPs have byte sizes of 16 or 32 bits. */ + unsigned int octets_per_byte; + + /* The number of zeroes we want to see at the end of a section before we + start skipping them. */ + unsigned int skip_zeroes; + + /* The number of zeroes to skip at the end of a section. If the number + of zeroes at the end is between SKIP_ZEROES_AT_END and SKIP_ZEROES, + they will be disassembled. If there are fewer than + SKIP_ZEROES_AT_END, they will be skipped. This is a heuristic + attempt to avoid disassembling zeroes inserted by section + alignment. */ + unsigned int skip_zeroes_at_end; + + /* Whether the disassembler always needs the relocations. */ + bfd_boolean disassembler_needs_relocs; + + /* Results from instruction decoders. Not all decoders yet support + this information. This info is set each time an instruction is + decoded, and is only valid for the last such instruction. + + To determine whether this decoder supports this information, set + insn_info_valid to 0, decode an instruction, then check it. */ + + char insn_info_valid; /* Branch info has been set. */ + char branch_delay_insns; /* How many sequential insn's will run before + a branch takes effect. (0 = normal) */ + char data_size; /* Size of data reference in insn, in bytes */ + enum dis_insn_type insn_type; /* Type of instruction */ + bfd_vma target; /* Target address of branch or dref, if known; + zero if unknown. */ + bfd_vma target2; /* Second target address for dref2 */ + + /* Command line options specific to the target disassembler. */ + const char *disassembler_options; + + /* If non-zero then try not disassemble beyond this address, even if + there are values left in the buffer. This address is the address + of the nearest symbol forwards from the start of the disassembly, + and it is assumed that it lies on the boundary between instructions. + If an instruction spans this address then this is an error in the + file being disassembled. */ + bfd_vma stop_vma; + + /* The end range of the current range being disassembled. This is required + in order to notify the disassembler when it's currently handling a + different range than it was before. This prevent unsafe optimizations when + disassembling such as the way mapping symbols are found on AArch64. */ + bfd_vma stop_offset; + +} disassemble_info; + +/* This struct is used to pass information about valid disassembler + option arguments from the target to the generic GDB functions + that set and display them. */ + +typedef struct +{ + /* Option argument name to use in descriptions. */ + const char *name; + + /* Vector of acceptable option argument values, NULL-terminated. */ + const char **values; +} disasm_option_arg_t; + +/* This struct is used to pass information about valid disassembler + options, their descriptions and arguments from the target to the + generic GDB functions that set and display them. Options are + defined by tuples of vector entries at each index. */ + +typedef struct +{ + /* Vector of option names, NULL-terminated. */ + const char **name; + + /* Vector of option descriptions or NULL if none to be shown. */ + const char **description; + + /* Vector of option argument information pointers or NULL if no + option accepts an argument. NULL entries denote individual + options that accept no argument. */ + const disasm_option_arg_t **arg; +} disasm_options_t; + +/* This struct is used to pass information about valid disassembler + options and arguments from the target to the generic GDB functions + that set and display them. */ + +typedef struct +{ + /* Valid disassembler options. Individual options that support + an argument will refer to entries in the ARGS vector. */ + disasm_options_t options; + + /* Vector of acceptable option arguments, NULL-terminated. This + collects all possible option argument choices, some of which + may be shared by different options from the OPTIONS member. */ + disasm_option_arg_t *args; +} disasm_options_and_args_t; + +/* Standard disassemblers. Disassemble one instruction at the given + target address. Return number of octets processed. */ +typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *); + +/* Disassemblers used out side of opcodes library. */ +extern int print_insn_m32c (bfd_vma, disassemble_info *); +extern int print_insn_mep (bfd_vma, disassemble_info *); +extern int print_insn_s12z (bfd_vma, disassemble_info *); +extern int print_insn_sh (bfd_vma, disassemble_info *); +extern int print_insn_sparc (bfd_vma, disassemble_info *); +extern int print_insn_rx (bfd_vma, disassemble_info *); +extern int print_insn_rl78 (bfd_vma, disassemble_info *); +extern int print_insn_rl78_g10 (bfd_vma, disassemble_info *); +extern int print_insn_rl78_g13 (bfd_vma, disassemble_info *); +extern int print_insn_rl78_g14 (bfd_vma, disassemble_info *); + +extern disassembler_ftype arc_get_disassembler (bfd *); +extern disassembler_ftype cris_get_disassembler (bfd *); + +extern void print_aarch64_disassembler_options (FILE *); +extern void print_i386_disassembler_options (FILE *); +extern void print_mips_disassembler_options (FILE *); +extern void print_nfp_disassembler_options (FILE *); +extern void print_ppc_disassembler_options (FILE *); +extern void print_riscv_disassembler_options (FILE *); +extern void print_arm_disassembler_options (FILE *); +extern void print_arc_disassembler_options (FILE *); +extern void print_s390_disassembler_options (FILE *); +extern void print_wasm32_disassembler_options (FILE *); +extern bfd_boolean aarch64_symbol_is_valid (asymbol *, struct disassemble_info *); +extern bfd_boolean arm_symbol_is_valid (asymbol *, struct disassemble_info *); +extern bfd_boolean csky_symbol_is_valid (asymbol *, struct disassemble_info *); +extern bfd_boolean riscv_symbol_is_valid (asymbol *, struct disassemble_info *); +extern void disassemble_init_powerpc (struct disassemble_info *); +extern void disassemble_init_s390 (struct disassemble_info *); +extern void disassemble_init_wasm32 (struct disassemble_info *); +extern void disassemble_init_nds32 (struct disassemble_info *); +extern const disasm_options_and_args_t *disassembler_options_arm (void); +extern const disasm_options_and_args_t *disassembler_options_mips (void); +extern const disasm_options_and_args_t *disassembler_options_powerpc (void); +extern const disasm_options_and_args_t *disassembler_options_s390 (void); + +/* Fetch the disassembler for a given architecture ARC, endianess (big + endian if BIG is true), bfd_mach value MACH, and ABFD, if that support + is available. ABFD may be NULL. */ +extern disassembler_ftype disassembler (enum bfd_architecture arc, + bfd_boolean big, unsigned long mach, + bfd *abfd); + +/* Amend the disassemble_info structure as necessary for the target architecture. + Should only be called after initialising the info->arch field. */ +extern void disassemble_init_for_target (struct disassemble_info *); + +/* Tidy any memory allocated by targets, such as info->private_data. */ +extern void disassemble_free_target (struct disassemble_info *); + +/* Document any target specific options available from the disassembler. */ +extern void disassembler_usage (FILE *); + +/* Remove whitespace and consecutive commas. */ +extern char *remove_whitespace_and_extra_commas (char *); + +/* Like STRCMP, but treat ',' the same as '\0' so that we match + strings like "foobar" against "foobar,xxyyzz,...". */ +extern int disassembler_options_cmp (const char *, const char *); + +/* A helper function for FOR_EACH_DISASSEMBLER_OPTION. */ +static inline const char * +next_disassembler_option (const char *options) +{ + const char *opt = strchr (options, ','); + if (opt != NULL) + opt++; + return opt; +} + +/* A macro for iterating over each comma separated option in OPTIONS. */ +#define FOR_EACH_DISASSEMBLER_OPTION(OPT, OPTIONS) \ + for ((OPT) = (OPTIONS); \ + (OPT) != NULL; \ + (OPT) = next_disassembler_option (OPT)) + + +/* This block of definitions is for particular callers who read instructions + into a buffer before calling the instruction decoder. */ + +/* Here is a function which callers may wish to use for read_memory_func. + It gets bytes from a buffer. */ +extern int buffer_read_memory + (bfd_vma, bfd_byte *, unsigned int, struct disassemble_info *); + +/* This function goes with buffer_read_memory. + It prints a message using info->fprintf_func and info->stream. */ +extern void perror_memory (int, bfd_vma, struct disassemble_info *); + + +/* Just print the address in hex. This is included for completeness even + though both GDB and objdump provide their own (to print symbolic + addresses). */ +extern void generic_print_address + (bfd_vma, struct disassemble_info *); + +/* Always true. */ +extern int generic_symbol_at_address + (bfd_vma, struct disassemble_info *); + +/* Also always true. */ +extern bfd_boolean generic_symbol_is_valid + (asymbol *, struct disassemble_info *); + +/* Method to initialize a disassemble_info struct. This should be + called by all applications creating such a struct. */ +extern void init_disassemble_info (struct disassemble_info *dinfo, void *stream, + fprintf_ftype fprintf_func); + +/* For compatibility with existing code. */ +#define INIT_DISASSEMBLE_INFO(INFO, STREAM, FPRINTF_FUNC) \ + init_disassemble_info (&(INFO), (STREAM), (fprintf_ftype) (FPRINTF_FUNC)) + +#ifdef __cplusplus +} +#endif + +#endif /* ! defined (DIS_ASM_H) */ diff --git a/include/plugin-api.h b/include/plugin-api.h new file mode 100644 index 0000000..6ffa4cf --- /dev/null +++ b/include/plugin-api.h @@ -0,0 +1,572 @@ +/* plugin-api.h -- External linker plugin API. */ + +/* Copyright (C) 2009-2021 Free Software Foundation, Inc. + Written by Cary Coutant . + + This file is part of binutils. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* This file defines the interface for writing a linker plugin, which is + described at < http://gcc.gnu.org/wiki/whopr/driver >. */ + +#ifndef PLUGIN_API_H +#define PLUGIN_API_H + +#ifdef HAVE_STDINT_H +#include +#elif defined(HAVE_INTTYPES_H) +#include +#endif +#include +#if !defined(HAVE_STDINT_H) && !defined(HAVE_INTTYPES_H) && \ + !defined(UINT64_MAX) && !defined(uint64_t) +#error cannot find uint64_t type +#endif + +/* Detect endianess based on __BYTE_ORDER__ macro. */ +#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && \ + defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_PDP_ENDIAN__) +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define PLUGIN_LITTLE_ENDIAN 1 +#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define PLUGIN_BIG_ENDIAN 1 +#elif __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__ +#define PLUGIN_PDP_ENDIAN 1 +#endif +#else +/* Older GCC releases (<4.6.0) can make detection from glibc macros. */ +#if defined(__GLIBC__) || defined(__GNU_LIBRARY__) || defined(__ANDROID__) +#include +#ifdef __BYTE_ORDER +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define PLUGIN_LITTLE_ENDIAN 1 +#elif __BYTE_ORDER == __BIG_ENDIAN +#define PLUGIN_BIG_ENDIAN 1 +#endif +#endif +#endif +/* Include all necessary header files based on target. */ +#if defined(__SVR4) && defined(__sun) +#include +#endif +#if defined(__FreeBSD__) || defined(__NetBSD__) || \ + defined(__DragonFly__) || defined(__minix) +#include +#endif +#if defined(__OpenBSD__) +#include +#endif +/* Detect endianess based on _BYTE_ORDER. */ +#ifdef _BYTE_ORDER +#if _BYTE_ORDER == _LITTLE_ENDIAN +#define PLUGIN_LITTLE_ENDIAN 1 +#elif _BYTE_ORDER == _BIG_ENDIAN +#define PLUGIN_BIG_ENDIAN 1 +#endif +#endif +/* Detect based on _WIN32. */ +#if defined(_WIN32) +#define PLUGIN_LITTLE_ENDIAN 1 +#endif +/* Detect based on __BIG_ENDIAN__ and __LITTLE_ENDIAN__ */ +#ifdef __LITTLE_ENDIAN__ +#define PLUGIN_LITTLE_ENDIAN 1 +#endif +#ifdef __BIG_ENDIAN__ +#define PLUGIN_BIG_ENDIAN 1 +#endif +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* Status code returned by most API routines. */ + +enum ld_plugin_status +{ + LDPS_OK = 0, + LDPS_NO_SYMS, /* Attempt to get symbols that haven't been added. */ + LDPS_BAD_HANDLE, /* No claimed object associated with given handle. */ + LDPS_ERR + /* Additional Error codes TBD. */ +}; + +/* The version of the API specification. */ + +enum ld_plugin_api_version +{ + LD_PLUGIN_API_VERSION = 1 +}; + +/* The type of output file being generated by the linker. */ + +enum ld_plugin_output_file_type +{ + LDPO_REL, + LDPO_EXEC, + LDPO_DYN, + LDPO_PIE +}; + +/* An input file managed by the plugin library. */ + +struct ld_plugin_input_file +{ + const char *name; + int fd; + off_t offset; + off_t filesize; + void *handle; +}; + +/* A symbol belonging to an input file managed by the plugin library. */ + +struct ld_plugin_symbol +{ + char *name; + char *version; + /* This is for compatibility with older ABIs. The older ABI defined + only 'def' field. */ +#if PLUGIN_BIG_ENDIAN == 1 + char unused; + char section_kind; + char symbol_type; + char def; +#elif PLUGIN_LITTLE_ENDIAN == 1 + char def; + char symbol_type; + char section_kind; + char unused; +#elif PLUGIN_PDP_ENDIAN == 1 + char symbol_type; + char def; + char unused; + char section_kind; +#else +#error "Could not detect architecture endianess" +#endif + int visibility; + uint64_t size; + char *comdat_key; + int resolution; +}; + +/* An object's section. */ + +struct ld_plugin_section +{ + const void* handle; + unsigned int shndx; +}; + +/* Whether the symbol is a definition, reference, or common, weak or not. */ + +enum ld_plugin_symbol_kind +{ + LDPK_DEF, + LDPK_WEAKDEF, + LDPK_UNDEF, + LDPK_WEAKUNDEF, + LDPK_COMMON +}; + +/* The visibility of the symbol. */ + +enum ld_plugin_symbol_visibility +{ + LDPV_DEFAULT, + LDPV_PROTECTED, + LDPV_INTERNAL, + LDPV_HIDDEN +}; + +/* The type of the symbol. */ + +enum ld_plugin_symbol_type +{ + LDST_UNKNOWN, + LDST_FUNCTION, + LDST_VARIABLE +}; + +enum ld_plugin_symbol_section_kind +{ + LDSSK_DEFAULT, + LDSSK_BSS +}; + +/* How a symbol is resolved. */ + +enum ld_plugin_symbol_resolution +{ + LDPR_UNKNOWN = 0, + + /* Symbol is still undefined at this point. */ + LDPR_UNDEF, + + /* This is the prevailing definition of the symbol, with references from + regular object code. */ + LDPR_PREVAILING_DEF, + + /* This is the prevailing definition of the symbol, with no + references from regular objects. It is only referenced from IR + code. */ + LDPR_PREVAILING_DEF_IRONLY, + + /* This definition was pre-empted by a definition in a regular + object file. */ + LDPR_PREEMPTED_REG, + + /* This definition was pre-empted by a definition in another IR file. */ + LDPR_PREEMPTED_IR, + + /* This symbol was resolved by a definition in another IR file. */ + LDPR_RESOLVED_IR, + + /* This symbol was resolved by a definition in a regular object + linked into the main executable. */ + LDPR_RESOLVED_EXEC, + + /* This symbol was resolved by a definition in a shared object. */ + LDPR_RESOLVED_DYN, + + /* This is the prevailing definition of the symbol, with no + references from regular objects. It is only referenced from IR + code, but the symbol is exported and may be referenced from + a dynamic object (not seen at link time). */ + LDPR_PREVAILING_DEF_IRONLY_EXP +}; + +/* The plugin library's "claim file" handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_claim_file_handler) ( + const struct ld_plugin_input_file *file, int *claimed); + +/* The plugin library's "all symbols read" handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_all_symbols_read_handler) (void); + +/* The plugin library's cleanup handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_cleanup_handler) (void); + +/* The linker's interface for registering the "claim file" handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_register_claim_file) (ld_plugin_claim_file_handler handler); + +/* The linker's interface for registering the "all symbols read" handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_register_all_symbols_read) ( + ld_plugin_all_symbols_read_handler handler); + +/* The linker's interface for registering the cleanup handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_register_cleanup) (ld_plugin_cleanup_handler handler); + +/* The linker's interface for adding symbols from a claimed input file. */ + +typedef +enum ld_plugin_status +(*ld_plugin_add_symbols) (void *handle, int nsyms, + const struct ld_plugin_symbol *syms); + +/* The linker's interface for getting the input file information with + an open (possibly re-opened) file descriptor. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_file) (const void *handle, + struct ld_plugin_input_file *file); + +typedef +enum ld_plugin_status +(*ld_plugin_get_view) (const void *handle, const void **viewp); + +/* The linker's interface for releasing the input file. */ + +typedef +enum ld_plugin_status +(*ld_plugin_release_input_file) (const void *handle); + +/* The linker's interface for retrieving symbol resolution information. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_symbols) (const void *handle, int nsyms, + struct ld_plugin_symbol *syms); + +/* The linker's interface for adding a compiled input file. */ + +typedef +enum ld_plugin_status +(*ld_plugin_add_input_file) (const char *pathname); + +/* The linker's interface for adding a library that should be searched. */ + +typedef +enum ld_plugin_status +(*ld_plugin_add_input_library) (const char *libname); + +/* The linker's interface for adding a library path that should be searched. */ + +typedef +enum ld_plugin_status +(*ld_plugin_set_extra_library_path) (const char *path); + +/* The linker's interface for issuing a warning or error message. */ + +typedef +enum ld_plugin_status +(*ld_plugin_message) (int level, const char *format, ...); + +/* The linker's interface for retrieving the number of sections in an object. + The handle is obtained in the claim_file handler. This interface should + only be invoked in the claim_file handler. This function sets *COUNT to + the number of sections in the object. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_count) (const void* handle, unsigned int *count); + +/* The linker's interface for retrieving the section type of a specific + section in an object. This interface should only be invoked in the + claim_file handler. This function sets *TYPE to an ELF SHT_xxx value. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_type) (const struct ld_plugin_section section, + unsigned int *type); + +/* The linker's interface for retrieving the name of a specific section in + an object. This interface should only be invoked in the claim_file handler. + This function sets *SECTION_NAME_PTR to a null-terminated buffer allocated + by malloc. The plugin must free *SECTION_NAME_PTR. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_name) (const struct ld_plugin_section section, + char **section_name_ptr); + +/* The linker's interface for retrieving the contents of a specific section + in an object. This interface should only be invoked in the claim_file + handler. This function sets *SECTION_CONTENTS to point to a buffer that is + valid until clam_file handler returns. It sets *LEN to the size of the + buffer. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_contents) (const struct ld_plugin_section section, + const unsigned char **section_contents, + size_t* len); + +/* The linker's interface for specifying the desired order of sections. + The sections should be specifed using the array SECTION_LIST in the + order in which they should appear in the final layout. NUM_SECTIONS + specifies the number of entries in each array. This should be invoked + in the all_symbols_read handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_update_section_order) (const struct ld_plugin_section *section_list, + unsigned int num_sections); + +/* The linker's interface for specifying that reordering of sections is + desired so that the linker can prepare for it. This should be invoked + before update_section_order, preferably in the claim_file handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_allow_section_ordering) (void); + +/* The linker's interface for specifying that a subset of sections is + to be mapped to a unique segment. If the plugin wants to call + unique_segment_for_sections, it must call this function from a + claim_file_handler or when it is first loaded. */ + +typedef +enum ld_plugin_status +(*ld_plugin_allow_unique_segment_for_sections) (void); + +/* The linker's interface for specifying that a specific set of sections + must be mapped to a unique segment. ELF segments do not have names + and the NAME is used as the name of the newly created output section + that is then placed in the unique PT_LOAD segment. FLAGS is used to + specify if any additional segment flags need to be set. For instance, + a specific segment flag can be set to identify this segment. Unsetting + segment flags that would be set by default is not possible. The + parameter SEGMENT_ALIGNMENT when non-zero will override the default. */ + +typedef +enum ld_plugin_status +(*ld_plugin_unique_segment_for_sections) ( + const char* segment_name, + uint64_t segment_flags, + uint64_t segment_alignment, + const struct ld_plugin_section * section_list, + unsigned int num_sections); + +/* The linker's interface for retrieving the section alignment requirement + of a specific section in an object. This interface should only be invoked in the + claim_file handler. This function sets *ADDRALIGN to the ELF sh_addralign + value of the input section. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_alignment) (const struct ld_plugin_section section, + unsigned int *addralign); + +/* The linker's interface for retrieving the section size of a specific section + in an object. This interface should only be invoked in the claim_file handler. + This function sets *SECSIZE to the ELF sh_size + value of the input section. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_size) (const struct ld_plugin_section section, + uint64_t *secsize); + +typedef +enum ld_plugin_status +(*ld_plugin_new_input_handler) (const struct ld_plugin_input_file *file); + +/* The linker's interface for registering the "new_input" handler. This handler + will be notified when a new input file has been added after the + all_symbols_read event, allowing the plugin to, for example, set a unique + segment for sections in plugin-generated input files. */ + +typedef +enum ld_plugin_status +(*ld_plugin_register_new_input) (ld_plugin_new_input_handler handler); + +/* The linker's interface for getting the list of wrapped symbols using the + --wrap option. This sets *NUM_SYMBOLS to number of wrapped symbols and + *WRAP_SYMBOL_LIST to the list of wrapped symbols. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_wrap_symbols) (uint64_t *num_symbols, + const char ***wrap_symbol_list); + +enum ld_plugin_level +{ + LDPL_INFO, + LDPL_WARNING, + LDPL_ERROR, + LDPL_FATAL +}; + +/* Values for the tv_tag field of the transfer vector. */ + +enum ld_plugin_tag +{ + LDPT_NULL = 0, + LDPT_API_VERSION = 1, + LDPT_GOLD_VERSION = 2, + LDPT_LINKER_OUTPUT = 3, + LDPT_OPTION = 4, + LDPT_REGISTER_CLAIM_FILE_HOOK = 5, + LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK = 6, + LDPT_REGISTER_CLEANUP_HOOK = 7, + LDPT_ADD_SYMBOLS = 8, + LDPT_GET_SYMBOLS = 9, + LDPT_ADD_INPUT_FILE = 10, + LDPT_MESSAGE = 11, + LDPT_GET_INPUT_FILE = 12, + LDPT_RELEASE_INPUT_FILE = 13, + LDPT_ADD_INPUT_LIBRARY = 14, + LDPT_OUTPUT_NAME = 15, + LDPT_SET_EXTRA_LIBRARY_PATH = 16, + LDPT_GNU_LD_VERSION = 17, + LDPT_GET_VIEW = 18, + LDPT_GET_INPUT_SECTION_COUNT = 19, + LDPT_GET_INPUT_SECTION_TYPE = 20, + LDPT_GET_INPUT_SECTION_NAME = 21, + LDPT_GET_INPUT_SECTION_CONTENTS = 22, + LDPT_UPDATE_SECTION_ORDER = 23, + LDPT_ALLOW_SECTION_ORDERING = 24, + LDPT_GET_SYMBOLS_V2 = 25, + LDPT_ALLOW_UNIQUE_SEGMENT_FOR_SECTIONS = 26, + LDPT_UNIQUE_SEGMENT_FOR_SECTIONS = 27, + LDPT_GET_SYMBOLS_V3 = 28, + LDPT_GET_INPUT_SECTION_ALIGNMENT = 29, + LDPT_GET_INPUT_SECTION_SIZE = 30, + LDPT_REGISTER_NEW_INPUT_HOOK = 31, + LDPT_GET_WRAP_SYMBOLS = 32, + LDPT_ADD_SYMBOLS_V2 = 33 +}; + +/* The plugin transfer vector. */ + +struct ld_plugin_tv +{ + enum ld_plugin_tag tv_tag; + union + { + int tv_val; + const char *tv_string; + ld_plugin_register_claim_file tv_register_claim_file; + ld_plugin_register_all_symbols_read tv_register_all_symbols_read; + ld_plugin_register_cleanup tv_register_cleanup; + ld_plugin_add_symbols tv_add_symbols; + ld_plugin_get_symbols tv_get_symbols; + ld_plugin_add_input_file tv_add_input_file; + ld_plugin_message tv_message; + ld_plugin_get_input_file tv_get_input_file; + ld_plugin_get_view tv_get_view; + ld_plugin_release_input_file tv_release_input_file; + ld_plugin_add_input_library tv_add_input_library; + ld_plugin_set_extra_library_path tv_set_extra_library_path; + ld_plugin_get_input_section_count tv_get_input_section_count; + ld_plugin_get_input_section_type tv_get_input_section_type; + ld_plugin_get_input_section_name tv_get_input_section_name; + ld_plugin_get_input_section_contents tv_get_input_section_contents; + ld_plugin_update_section_order tv_update_section_order; + ld_plugin_allow_section_ordering tv_allow_section_ordering; + ld_plugin_allow_unique_segment_for_sections tv_allow_unique_segment_for_sections; + ld_plugin_unique_segment_for_sections tv_unique_segment_for_sections; + ld_plugin_get_input_section_alignment tv_get_input_section_alignment; + ld_plugin_get_input_section_size tv_get_input_section_size; + ld_plugin_register_new_input tv_register_new_input; + ld_plugin_get_wrap_symbols tv_get_wrap_symbols; + } tv_u; +}; + +/* The plugin library's "onload" entry point. */ + +typedef +enum ld_plugin_status +(*ld_plugin_onload) (struct ld_plugin_tv *tv); + +#ifdef __cplusplus +} +#endif + +#endif /* !defined(PLUGIN_API_H) */ diff --git a/include/symcat.h b/include/symcat.h new file mode 100644 index 0000000..6eb94f2 --- /dev/null +++ b/include/symcat.h @@ -0,0 +1,55 @@ +/* Symbol concatenation utilities. + + Copyright (C) 1998-2021 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef SYM_CAT_H +#define SYM_CAT_H + +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) +#define CONCAT2(a,b) a##b +#define CONCAT3(a,b,c) a##b##c +#define CONCAT4(a,b,c,d) a##b##c##d +#define CONCAT5(a,b,c,d,e) a##b##c##d##e +#define CONCAT6(a,b,c,d,e,f) a##b##c##d##e##f +#define STRINGX(s) #s +#else +/* Note one should never pass extra whitespace to the CONCATn macros, + e.g. CONCAT2(foo, bar) because traditonal C will keep the space between + the two labels instead of concatenating them. Instead, make sure to + write CONCAT2(foo,bar). */ +#define CONCAT2(a,b) a/**/b +#define CONCAT3(a,b,c) a/**/b/**/c +#define CONCAT4(a,b,c,d) a/**/b/**/c/**/d +#define CONCAT5(a,b,c,d,e) a/**/b/**/c/**/d/**/e +#define CONCAT6(a,b,c,d,e,f) a/**/b/**/c/**/d/**/e/**/f +#define STRINGX(s) "s" +#endif + +#define XCONCAT2(a,b) CONCAT2(a,b) +#define XCONCAT3(a,b,c) CONCAT3(a,b,c) +#define XCONCAT4(a,b,c,d) CONCAT4(a,b,c,d) +#define XCONCAT5(a,b,c,d,e) CONCAT5(a,b,c,d,e) +#define XCONCAT6(a,b,c,d,e,f) CONCAT6(a,b,c,d,e,f) + +/* Note the layer of indirection here is typically used to allow + stringification of the expansion of macros. I.e. "#define foo + bar", "XSTRING(foo)", to yield "bar". Be aware that this only + works for __STDC__, not for traditional C which will still resolve + to "foo". */ +#define XSTRING(s) STRINGX(s) + +#endif /* SYM_CAT_H */