From 56b73eada5ef1b72376f4a230949297b3edcc562 Mon Sep 17 00:00:00 2001 From: Jude Nelson Date: Tue, 13 Dec 2022 22:08:11 -0500 Subject: [PATCH] feat: SIP-021 first draft --- sips/sip-021/figure-1.png | Bin 0 -> 25689 bytes sips/sip-021/figure-2.png | Bin 0 -> 97491 bytes sips/sip-021/figure-3.png | Bin 0 -> 18893 bytes ...p-021-trustless-two-way-peg-for-bitcoin.md | 1385 +++++++++++++++++ 4 files changed, 1385 insertions(+) create mode 100644 sips/sip-021/figure-1.png create mode 100644 sips/sip-021/figure-2.png create mode 100644 sips/sip-021/figure-3.png create mode 100644 sips/sip-021/sip-021-trustless-two-way-peg-for-bitcoin.md diff --git a/sips/sip-021/figure-1.png b/sips/sip-021/figure-1.png new file mode 100644 index 0000000000000000000000000000000000000000..79139c3b5733c65199b86b3b0d2b1008ca358989 GIT binary patch literal 25689 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 literal 0 HcmV?d00001 diff --git a/sips/sip-021/figure-2.png b/sips/sip-021/figure-2.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb0c306a9f5301579642cb704b63df35bf30177 GIT binary patch literal 97491 zcmeFZX*8AX{|CB7+C^-cLr6(wsLbiV3|^lF2>AZh_>*9ap#^uJP$B&Hr#{ZFPN+eO;!Z(wD5^l@1G5_yh2NI~Z zSpV-|sVV;dfBXMr4Q@%0SKr6Fh`{z$YM8u@Q zgRD2XxuX31{6a#%t8UY8*|KHFjvb*aLOJi>k6fPWEpks%58sICev_VVQ0780M#sl%tE*ky+&0!< z{`Hz4Ii;bYp{uJ~R$wdPjjua#;)Jnz>nq(9&E%96)dgAtVLgDwn&2n4y1GhCTv_pO zc6M%Dh>^6{jFGspJl&g?mS+56i`eepKR(#JdGp5D^{^q<#HiTA@mJfyobMmg(&}4U zj>^dVsI1(Q$B27QdG$(AKWAjdo{rl>Rkfz$XBKDZJ$z}W)87XMjic&g&0a>CgfCdP<026Jl&A;;wR?qx-oAd_E?H7gpnv?hMP<Reh@Q4^xii?YB zSOinEvJN<3F*I~>b@lf4rstA*_3G7mef@g^=;4bO zFT%sMtgH?cSeTmfvh&Z+%?Vv8eE;Et>x+_j1z(v5YTkbr4qBOE2VcE9mTT1%9UcAT z>C@ogU)zyRn$K_~OFC((i6b+s-3F%~%m(<5G>W%uCq;r;{bb#Rsz_?fb+eBtCUN ze)w=8W1lifFUx3ulFzwwEpH9-a=L8i_gywH7{*3A<~;WG-n|{MSU#+a%kLlJ0XzD7;vZ|{7?EAdDf2*t8ckCE4XXD`DU}eSj#qx>*udPkYecCXn`4OKwp8fCNakB2h^z=>9;x_Yt{`{Gr|MY<4z`=v3 zsO9VH>*eI+82L3$o;;cFvzqhh5rYbGTfoz&Pw(Bkhvj?p=n+=esxg*$J=;@(DhYGEl_B2}WNl#CgbsVCi zrw@Ph=$wYeS8o3`Wl~UF92c(s@8V?Em7-@)pNzJ2E} zUJPMnlXc5@_KamC_VHttq!#Rb9UUDMn{3BnwIJ=|$Eh0Mrlyj1?aKN1(QkI30z0** zr-!6cQBfgqa(wzjjIF7^GlvbtIu#&!7cVcF&=Yy)lrRWo5tyD?7oHp%P= z+ZU-zmoE=}>cF)RQP(jZ(Buh{>SjQB5@7m_|CktHeeK$#XV2POT2>b(7#n?;r@2(> zzI+Mgxr5_K+`j!01FtfPfq{XTSXrrpeQA7WCx--yYHq4aG^n{HNxgpmjT<-i@7s6X z#-_`5>G@G}wFkQ|7#N%x`}_AV4({O9u>)H1_|BLTAwj|F>go-%evvDMK`|$>w|#tk z9QY*D-n}F7zQ<-*Tf}MNQx98MUOvEzoBMS84$mE&N;CmW%h8Y!>R1DOaI(%^TzxPN zD@oDqe@+GukVWz93*8T z8k?)D>)?~GUp0c7D+0G|53shkA0HjPl4G%5nY6gLh{eXqk8M~Q8yiCzTM^wb&-YuG z+4y`lmzkM)j_=O&wB3$imA*`pKXt?C=qQ!)ktmI=TerrRUTxSN^e`!juS=rLb@F16 z_O)vVl}QF4ZIy|R5)X$BIXGf&xsgy=2_z-TS=G5ee^iO}U%nj1O`y!^GohU1+4cTi znKO4fiW+ZeX*qvQf&cK~B9{rB03Osal8U3FV{Ac9O$|y?a&q$dL(G!A5f1%BG_1lT zsz*+9FA=Xa=UYm=f}(Kds$aTv-DfBg8-sK99}?|bKQ z%>W*(Q@-61Vt@czL}n(=)cW5=Vj?zjIJ>Btkx~5AsuHRCKD%gjO-=WYA5wa49UXb^ z-jyd@IDh_Ca`NU&5%T6EsaSYRC@>Lueb{Dt3RD%;q?|^GDguWOhdM9b=>B+4fQi$G zm5E7Pfa$`8@2_6%%XB_V3Mwotym_-cUf#PdhAN||$l&D3y1u?W{&8}i#}pM6`y6d6 z0=A;(V-0b8s5iLy*!1CCP8_gix-EoqdIBJpf3qnU%m$ZGKoT=$xaj~2e zyIkj)OP4N9Yz_?$RtP0&YHFT8^z?9MrGt6y`}bnw_pm#wg>tGB&OWx7%zFKrKa30g z45u$WE$yzkEDmT8fDxyaG}e@uh$ihS`8h_{eYpwV#CuirmJF1$I!dGO_@t+A90C+g=n6^3Uwea&Ulk7`4;Xq=<#Q69(Zs?Jv5qt z5cJ#%wl+2~V%NS^2GcY&G-$=i1b4ss^5u)Sm)F&%_#5WtRUcUVTxmjU_7ZWnUfO5x zV+l>p%F;^ImeM7u0I95qVw(h3ls`SMtBY#Ip|>3mapauSf52*GvBQ|2Q|g^?QIz{5;^MBr!-FHRM-mg)j z3@Y3TK1#&2)Kmw%_4c<0>zZ3A2?WI_iD3g21Y_E1$(}s_8`jnWD#T@be&P^*BUNiN zC_g_RWMPQqG<9HNW@cm5xV|;v+>s<_6CMPBmTPIv(xcuWJZbSnh zSX~3ocXM+3H8oYuRph8QflIsa-;YnvEK#$Ou9-?1_=!`-CAFj^j^_^8kFLNItaz#S zt-*)*uCCa-xIPr^nuw^>^z?8JNxBq(^P_CEjr)yDeG1%X`d+@=8^A-yB@=Y`?uYm9 z*>>;N5qJ{Lt=L!KY}J)x*%U9&=j=Y!d23_Jae8o2IawzrCT4p;d5c6>Xf)5Ag$0+O z=84vnyNdrV)qeWqWOw4?MK^3)%HKQ$!W!E~vQYD$J$rn|<+rMyIevU3w0Q4yKW!e@ zl5f%N^z_LvE?I1twY4>DaR5uK8#q%*aq;Yyf`WoC&xCUG@|G7CjuR(-{@k~3Ut3$- zfC4irjJ(%EYF?gXuu4U%62RH4r?15@Q#}| zZ+`xKn$z2qjP-z(wX|wQ)3Up4wX~W*H+p0YbaZwxGMd}igj&&|JVqSQQt;o9vnmp- zudWVKNyMibT)vDpGf<7i=VbcvQawoaE%#y<*74gHW%58ffo!6IQA?@MMOBy4V?fgm6k3D2?@ay zobSDd9*&xE@X(=3-%>oINJ0I1Tt@Pl$h|@Fa-L4$na0M(JuX6f_a3wBkuvl%H#gVN zxDOECb=BU?EFjR^a2u%YTF@boMHyr`D>Kv0 z#f8&)TZJN>p>Ub1L&4gfwKJ4I+uJYpJZ1DztTUloYohj&kH-lE{f-i~5;iLSIWWMp zcW(}WqQCzp*l>4OS8s{8q=dv$N`l|L`}eEA{QLVCbiWVl_T>wh$4L1tN-UiB(v&h$ z-@pK6$@I@y1Gl2zlgLP|Q>O~N7T<)2H@!R&s_k!osHMGKjmV|o)7jd}xSU_p)7x8B zRmCc7n18L6Us<`Lv$GS85tVhA(A(AJ*Mv>k z_HBM~aVHH8IC;!b^N{H1%V6A4BG4~mrJb=D%?WWkg|8I0_4E{**U~XEGWw8E^N$}t z4us%Pbc|gG4KhK_^BYKiQ_~E-6D14}bsPPj>TOY{lOG=){g!+NMHl$PY;N3;cN{tnNQK=Uf3Lc#iceVB?$dpCoA!)Hj~{z& ztgX%s*J61D`1s7PUw`xVEf*VGXItAstCpg;m>8#=heKQHIXXHzpd-*A;H`a|FWB;3(k!-Dyq0%xcn*RNf>8y;ROvZhM>@bP2x^XCp~vv?BF zhVWD5_IoHJJU@R06mV*4ijG?Wc!=lV!Kk=6+|&bS^)Sw;gak$GuGCZkNy$8X5B~Y} z>(^4Q7um*stNRZgy!P$YsjjXrup;zHuA^qv*vP0Aj%VJ189m;A2HSL|x2U$Z_O|ia zW7peK#ckTBK(M|(KZ*hh@W@YTy|%=NXKZZTZ(bWFEiH`#O`li$XLeRfMrJ7KR{F2s zzk7fDxYu9zb8yfRV2n>zvb4oHC~f4xm0NZZ^z2}Hn-ftwi9V3cEV%EDq_UG#ZGe^Z;U%?{)vj3IwUywDBJzDH6IYASQ`rq92-ff zA0^()nU_Btl9%^IamQ{uP6RRsA@KC{yi)4pIq@wSs*HrFXp!@H*sE6-o}Q~C^%3>8 zTfTk!mj8$Ll(x1*{p0;3Nrbi8Tbd~y9UU`WxwXB$T)aX59#H~o-d9;zcIx1che+3> z<8Kc&WcDxzfv`y?B0yoWgE<8S(xEljay83B1KS9ZUuH?9Bd{IgNzaNgw3 zimM37%dbP!!d@fEQxg0(`^95XHoV9-xQ1$IT&UjnA4@{MOdigWuEcfCybG z4$1F7&DVs)bMyc0zm@w#;iGe9Cai3`$(ly~*a1Z-MCuQATbh`>0GWCHTB7Yc#enQq z3bBJ?T(sV+$=aOR|s&ziO#1%a^fJvJ^5RHxH+ zsroJ>s{GKzgmjzumH}@n@_pkM0@aeDqN5w5#m{JH*rrZyDPN}fpMt$s3sr>2g?gYY zKwpadtFzo#*jefSr<;92zt9iF`-Zvy0(dTF839q{ zThu@HW0i6os%}lug37h9_4?WJS zf-X^+1S)|m(#x!dSJ^4?3A^!1_4J^CW& z`&Udsp%e-yak5L#&CTul^kY-M zzY;;73XLC{^0v>vr=~LAy!jjJR9IB><@0ARFR#B1Z`0CNX9rcw^Z`H)9X>ocJv}X% zmy$9r;>4gb(_gk3`wLHw;C~yqZ<>15IKd5Cj;o8yLd^AX=kG>*)OWc*6i{W8)!V;g5NFdgsqu z9ASf`fcEPBZ%L@Y%+>WndivowO|Ub34o)BlxCPKhccJSfq$f0zBvhK|o&pg!7u?y+ zjoJD6y+OxMocPxOTBl#+_7(-ZbT_1Ni@cbcH>^&-FoY_2d#1kiWax1JYPIgdGQ2ZHh!q52N;I-@5ajDoZ-389$P>76R zMYzuxK@kC0hTIVJFf{bb2b&H#d3hlrA(|aKBy2mCK8<22%USW^MUYETyF`qN^X=`h zHGn$+jG(tf*GC+PjEqFramO=2ZR0*_cKphf-hiz%YTq-UU%;~C1fyGCv$f?!E6h`nF*&JBSU-CPP?04R9hf8fTVWEG$bK>;K@DXn<()R$CnV{{1_e76&8a@Wez^Ow5<7 zxj;v0Z{I#3MFR=JHL5m_fm4<;Yd}jxgA=O7lvhK0`YHhZ zv#|U31w}+6pFDxEoR3FtZT%BEzvDED_0F9;0|Nue0)VdWpUJGU%li5!)YOK0(5;_G zMfoOEZYecr4jztycFM0f`ST}F5SUyY6AnA4JYNtX6pP>`ZDZrjpDlcuDv(>qF2ch7 zsOQfCqAadn-5Uf)fI(%l{p}e|%}>sO$MM+;7J#3u3=GonY%DBBP+3VT@XGFmhet+4 zs1o5Yfp2okn?oc8I%xX*S%nBH!V|>F#Z}*(oN`Wo@XHNhDK>!AhB=YL&wgv@J zL8%JTR#T&f+6|bXFBqqpaKv&(g z3kyRYg+_);U7VZi`UtJ&tiK+qZ87f(*bUE(VJa^$7Ni8)^#f+0d{DpM~cKVVoH7@ZrPGTq~`9v$XTq z%idn~_jTN+xDR(NjAj$mjFXK6Bi)*IdP~m#l?8xg(bd0ZUUM~ci$O}V(cmqFdZ=i>8W;=Mqp!4m@U zC*2DTH7M~~#BQdfqy!zGdq~sB9RNZ#bc-SXDQI-Zh#fjFTGR#@QbJiExlo%7-W|!0 z|A}MwR-yN81+oDTf<>*vqW^4@OPIw;MMv;f#u ze!{cB_JrvYgN^m_-*sz!v~IyEfgF32jVAYj){t5 z4gZZs8ut}@s`8_Q&;0m6!)sw~{%7@s<<+aW&Y>nq!6{k^7j<>3%qgTnpJ91k$#=M= zQD0a0T+~VvR*lNfx<`EAcsR9H`q(N`OU%1=p-;AeU4g)8X5OKxJ==lHLw$y{!0QZ^ zQ~@0TJHMDuY&VpI09*de_2vG_$w@{38LY|8ibBsnS9NqAleMezdtIHK0Kt1?T<&Oi zuFfaN#r4ANU{JxGqnm&ZNQK_MeY<$%dt2MrSZT&^x=Jhz%G~Vt=1-qqr=;9=b}G!X z@Bh)&b)zSrffpDaa0S%R(P_^cvRBW<fqrf*IM_jtBr?(P1oL z=XpiBT?0x<27_p-3Cz`1rAs@{%TC>IkC1cSdoQ%04*#=*z=tuN}a9VY^X(m+OS zY^3wYc>(ak&)E35B23$Ux(8Uc?c2A5S}6XP$oq(5)+j* zHx+C<-{B0b|68`Qv?Mp0Lq#oq3i%K= z`oh8jni)Ex22?Nf!hAYNjPOaZXy6*?^LRKYMsTSr3W$mDP2os!%esASYSPlx6_t_s zivme`){Y*#nf4x9jveJE81@oo)kH{NsP#@tkD#|j)H9JtO2iiH_mD>54y?fTMV-f2 z!E*(Q#-bB>9UbSep%eT!R)LRzHPKM8)_87}l->|rA>2MenSSzQ-@$`vSy>6u(br8( zZjxT=q+xpk(cqY1vw#Jn=z{4oLO^$QaBx7?ghvU6^(FOOlG}6-j`lxXv%OD#dGkw$ zoreD+9o*bLaqTHzu7cO5px~EkgF-&A8Te(?ovg}G{-oSlY7A*w^$Lg*e(aiqDSgzz zW)2@ZgpG)}!Cxq-xKc8sb4~v5cQ)vWFDl$An$ji)2V1(jP9?Q~_c+Lm7rnq=`*;J- z5BfY1CJ>YfJ4+co<|kkpL7D9@_JoAXdb_Q;frdZ`d5B(ryos>zALG4q=Z+wJV?b^^ zPb6Rj4;|Y5Yd5*&5F7#tyM4m3bRX^e`+odDDC@sJ9-z*3xH%Jf=T6;!L>SeEgQ{6E zpuN3a$lzlqnp#&EqBYRo4)F8SU9i-Qllg$&l=wpizsc(|(o0O`)KRiEBYxY7Q#)ipU#~-x1x7S zNr^{6VFO;U>V+sMS3soG{syqHS|IyE66xrWJaXg+HWPZ!%6gdb$H%y>(h$fW;Ih!% z7aIy8bHD@vRL#p`PWk)SYumQls9(H6!0a?MG$`-TaBsgl78e(X-GC;_`S@*M8RcK4 zP2zNa859kd$#$U~!QXm&l1DIzEB_&)Q1{Jsj*lB-n8;Mnr0+dG5Q`6EINF)+7^KZ#z97dcQ zpbXz!Z1(b|CJ|oVquTY@)MC5OLPi$N&dt?DXH!Y!34)j(rE#^NS5V1 z#9X@Mf!n~D1_D6_1p9QO;Rf!2%?USz#0DG_I zL?{XWMZWNL+&YmrM@c45Go`iQ;?%ESFz|;9S=`;+kX>;!Iu#QgjdMFI9(qPyy%q!s zwhr}=QE+xxnSRa{id$R;R}4XdXsP*dQbZrsTl|IP+?0OtEu5?}mx*s$itDdXXHrw8 z&?Ucp({UOEfd8JZ2gvUPQ4og<)naXSkh0M%x69Pj6n_g<0r(XnKC6h)KE0lgH)5cd z18?B#VYa@`$gnjvotqy$6Qqr+46I1a$gs%11knrd73c_8A|}R^B@3YvIA7%Q`;!o@ z&z^nz{(W0(Yb!)wcn6?Q1_m*jDfZnT-=?G-5D++d?%bma6FgnV#!|@SCCHxu@?ddb zEgn9cj&F9}6I54s5}#lE1>a+y+hshTzj+F)(BAI$Z|S$<=34H%ceA%Bx2>(OCqQ2j z|A_Uq{B(bLl($VEY9 z5jMP&r4Nk((I4N<4f)3FH*Q!SVZ)xsH}jq8D|9_vD&YxG;OWU5Bw^Q6XL1B}eHSxx zjmZ&gAd(6UPeeX&_R-R?lJW8J*vD9x{rhXWyA2S6!is2V&A@EI(Ug#oz<&hQ0aR|J zok0biJQ`%OPb^LowaOWOT$I6u3m=d_fL04)PDvRE6rJVss-k0yP;)|hQBhGw2JNyi z54_=r%aO1meEu$6yLj;#{vssgQ{XmwavKM$`7dk%_?7YYE%sh}ma)CH^$Iu%nt>-U z8;E;Ki?yGhAASYs4e>QwdwVPi@U15p64V|B6`U=Yo|g+Wm;0 zBzlP(Kgh9!Q>W^oItv^;nB6r6Xab?wFdfVtYBO&TghHTO_=%ZTpupkb^l_Ss&SM(T zk3(y&+uQf&*&CyGBH9L#6^B?YjPouDHgb{E=sgslr%x~7Qb5#i*xG_@LT(5o?VzXc zFK|ZQC^;s^Kvh*0d5Q6vx(*&8p&MwzAnkCwYCe5JT>%6!Mq^61VeU44~OftefznK7mePTP^chJaRZ7njvg5XKYZ8>yBdA1zP1)Z%G}1f_n9+afP!F_ zlYQYAFHB$x1L1aLUg1#i@xUEmV?r`PxCZWY?T1(gUu-ns=ET{3szL)KFJPB&$ZX$l8FGK%05^kYwltJw{WLu2cYG?=@>{)EiGPFBDkd z7{Jpf^%fAs)B7(EQroVvhle0rjI8V4>7*5GaDWxTD}@Vi8;QIKu%buxmw2;^aKjPn z>Vh7Xo{@2XlAKEdwTA3rV>1a-jie)NcWdAmDTF@+q@-5TxlCr6m080??nXv-eEarz z?M+frAgR*a8(~VSty^I_)f>WLBGb~!%Ax;4m-&T-kI5?luiM7Xj(_t2g9>hGpCX{i z>C*`UMMBCdYi()iitS}@m{)<4jY7mBAbId$ zeN9cWeMCj`j-5N9-gEuByk`D9I(q0QJMZz7R-A`9*SBxp{Hh6M#b(-jdlx`6R*@w% zm;~+M4MKil@kc?EQSW>zDxYiccfHyRS|%d0x%$U;!Pj*abfu0#LF(98aXXSe$m?w7 zZ3FCyi)*krHh1iKNs0W^(=|;mvC7tB(Sd=KQK8*6<%$gNmHbb=eEBj~m3?-T!!E2Q z@Q;);T!1-x^%Ezys#uftqZ7!BJk)>wX2nUO+$lg22vd}mkrDO= zpP--yiK;8Hzp`>KFYh3CM_+$yYp&DiX8_iwgsVqkiNN{>NizOmX50>xU~XnMyRgL< z)yOd4q2lvr-02Bz?OBeF8`{JGDTje_D4N?Y4?tW&w>zL2yYlSA-z>k?QP#$mrcITV z9p7d~(^68l@m5R6hyN)IAq@==^JP6xZK~NS($m`dXRzvasXrTT0)5zm^?K&xYht^t zW`32mFTbqU-yKhV&sk31vn2!ROMCk!2;EPfj2xmcZb17Aq30In;Zb`1rM`YqHi@vZ zp-hmMGTgkiGJdm~-OFj>_iwJBWvp2>-+w30(4Q@Xo@t;S%Wu(#%W4lFy1|yjr`n>5~{?2aA?hoaE zdOBHKz&98CMu2IDXX2WyKbx<}qxD9O@2r_mv$N+gD^QR#+ruTc`|Zrz8uvv>S_SUd zk4?dwNm8}nK7zI6<@t~O0@eel!X~viefI1FxDybe=5qJQrBhE}v!phyFXti1+}7P~ zV`4H;tqfTL?ezS4ro8Afzx8P6r_ep<&RH^mwj%?B02x}F!=%)T>?J|C;2g4Uf>C=9 z9AIT;hT5})*spV(dyqEvwRE%bgC;CM+kvD$Oz{TiOb2w7B7iON@AwtiG=(997EfpQ1E>e-`56@2z5 z(N+P4(bkaIW?^LP27FLbzI6WllY940<8Xa`dKg$3zz5K9{EQ@!FVau4i1Y&^08f%N zeUY8*9Ub@!Q5EZ!mnT3>f9I`1(*sGs=>on1>S77~-rIYYS`~F0X?HYpbOdZN1p8N4 z=J*QiZru0{+X|f$ux`rm@}0O8KnGYtLYLnY|D*rtG4pI*2ve$&Z6aJJq7!5+gr6r*$ey&fcM(8x zpDa>Us58sn9`(aF!yi9?PEJ??(r&xVwk-*y2qhGU2wOzfZHmWv?l;NP`wvhmD=RAi zJ+2B%cp{X=k@_bJ0C+}z2uN-W^g~xy@kVmq0~&eeH|$3Qx$6~egPH+QLBmkRU`OCT z2V|}1U=AX|@PxMwZ5awsMg}&WmEs@%-?gvt^{-z)i;n)h_<~PLD!;UJ4}H#N7Vr*w zFHm5;!ZdaY78KhZU!0qr?Fq^T3A1h#I030mY4sgDx69G}LV1j}Kc?t8KY{>+-{!h| zP&1wvI*r$YK$JJefp}8|R(8FhsU3%52T{ligC_`pKDd7$R%AT1T=%8LTVE3tH*skQ zZVDYb1RjR793CE?my?5hrZVwH=R000sm{hmI~+OO7n&BH(fzx32d55-@8j2sFLoHL zghh`sEh}4uzK9$Ls5qCj6P2Q?3_2ccO+i6Htd6XV3=SMQeUx=nwX&}64%|O6F&8AT zu^g%fQU0k&=zKt_4+M$LFM<@7ZAQd zy8-R-2}r>h!l6YFD84wYxY!3t9Ee|92>p$YA_>-=YZV?8bi7QpHq*Ea#pOBWJ=K5 zI%%*1K^E{F^4HQ#e}8lHJH+VMUK{&RVWtU-b;-b>2z&fm>+2E>p26rrUKbg12|tUe zp`l8%Z0vE!oe-=CfB%M+@o%J_aYwMz@TZ+Hvw+$1^QEvCVFlav7G3~JYH7(vcSoQP zCIvk$Z7hU7Fa)T$V0h>&8=If&>#y0^h)PJr%evda;+gEoLK+kL&|HwdAj_BPYM9;o zk<-3?+X|qbj8us)XY~1ql`z~ojQx><=qhp-LC->|C~blz`n|PP^yty-_wT` zMn(_wMktB!MmtM=z0vhFG-$~gN?s8WEmc+XntRMRL+A-GhZhzXAB2Wt60mcoY|}_r zcNhze#Q+H^RbK&^fi$nHqXXxLL)yvW+O-L&v|k$ zA%oI7*TjAxOMv@DmY(#V%d4g3j--^U>vu#KfO{a0p`=LO_^}}FKADU8sU9pbf_@02 zpx2>3O8NeM4@qsKMpRrJp}1+>5Hb=6&PKc7X~H9`dJ*S;Xvi36Bh7CX)j1D3h}`Sz z(4OJu;ZyKvq}&&O!S!g5{Q~DkH0morpKc2oK_}*FmMmm1(}HW>X8Q; zq$3M3juKIiVzFi8GU6S(cfUzVsf7k9ARvWoB#>p}cg!4+j~;$RM954CtT0VC#qZPL z$k@opf@PBv#7P8lP-{zVvp09aq#;75OD)xh%1%tYd6N*pGuwI>vdNI}T($dpI4a={6JQvUzAkx2{W&1nY+sV6^jSU{z5Yt-5-GqcP zFh-s`Alr~|ptC+S+^TrC(0QD0<1_LZ`YZTK1{Kt^iC@2V%X_^K2vG6$g<@uFTU|A~ zJ>U{DEf^NV)~RP^+_j6O0)?bXT@@D4>Ex?cRuMFSCqM?Ul3QDol9MsdrUx`Ny>$;O z*}d>{Z!IssDK}50JdkaN_OW7f=1eGT7!0=Jo(t|H4)pXiS)o%VNjX3xK|G_Tz+=lT zcq0$L0M|7>KbqA4780a2vOEA&BQmG+C+Q+FJA|hS_y`R;#|w>{g@t7$y`TVbsj9hg zJwvLa%jnEZf@=?QyhQm`YD0iU}KGF7o=d$jZFq6hB zs(0RoZOKR6(!URBv*52t@Te2vH!c+Y+cezl9-W6GgzSC!Ozmr(Gzfm!yLhf6TY$7o zjz!@a#M;0(A?tr@UMQGINFr^EY#0tQ|A7M$`lvLEv$NVdI+%(%cj3a7GCyCy>qfG~ zc`OQW#IPe0k7=k0=iKsG6uQWY4II^odY_FoPq_MKX0V7bEi6+o1R@PN9Df<*gummD z@Wj_0vqbg6|M8LiR9hgd{6teM8}?kjsv<1gT;z&@9w3E-zD!NoVp0R@lHXF|deb!R zV*geiME3eav*tn}P?1#$zzh+idHSY?2Ix|tiKY4;?cdN$bGoJ&_|zb4ISajb^F{{J zOaKp=F&^XG2l?>s>151g2Jq}r@Bz|9!NcO*+4h6()yI#|px(sEJk_X}O9sE5v+7~o zz58>)j`*#|0C#!rK+NL_+RMlHPsj)QE-?|^ukko?YP{hI8!Va)WCL9dryK-F>M{RdSg%xSjmQr}6wj#c=4Pct zZ8$aC1F&_KiCi+zM&(8SuPlJe9p^Xkz#GY3Z~sWO6N4ar4fB3kI<0^|~~6=4gn9G>>car^zF)LCTn% z*6Z-Y8BrTwWoBxUj@#R3p%7y%NSOpd1M+~)DY-5)7}7@1HB;c%+ztv_SU*^<+bAt7 zOD1rlCGX!qIh~B0?LAQjNpE8q?>t2Qh=aVmGXyVvS~ z0{G8H2L;|w%>1HA8(OoAiK$vN%(>zUd3g{l{EMcC4&Wrz{QY~dH}{~`PiPLGImudQ zQi}s?Fd7JyuJ>==TnBuC@9gobmV|j5gaFH)_l|9fyAc^X0#}MXD69 zNNiHll>vOjkb!epCX}aN6B8BkRNq=#A!=tC7E~6ndYI!gP zkV+l;wR|e26=(>p65KK;Hy6oX#`pm<$2e(sc5bTTFJMaK)q3X-r%Q=Zmx+l9b4ia% zWU=SSya*YX#y}nfCccLArW{sq0*N(E}VJ^C1&Uu>&AzY5pP;Rj6MbAT*;Q=AKtdc&_ka7OIN7b6=% zq>hX{c;>Juq)G*ag~70=x+fp`xNcFg9{v0j1xpI~2J~g*dYur7gC<>ip|UD>_Bq9U zQGPVZ3ceC4y$YIv0<+n5rLu^kK`-2_!>2evj_QOsq_sjBRLDj-<2lD;n8W5qCKTbq zOv8d4T#D*#I`9j5pA|%}UgzgON5AP0TglJ%1dLue>fUeWsPz*~bE)VH=pnErA{0E% z@Y{f?3a0m-G#u`p)x*9Z-@;3peq!s!hJJm1g0f?T3t01;}=kieb@Ob{1rL5~OCS_9o z+px$;J&gVzyp3uWA)-vAp+SC9g?Q@ZNen1tr>0u>%?TOj~vAP<2gJ$1J8)_A|gZI~!T!I4* zOoI7PoGKJTKuetAQxN=t z6X6*n0z6BHylLp&yN=U2ATnXyf7{6?2rrd*anX$>v4PQ&k{o@J8``HiRmXMb(bEg3Z27EzGJc`Ssm6u|%iON~O)&*oICK`-kgKr2pkE+pN|nhrJ~uNx9Tpl|l^eWJq>kJs zEmiYC?E#3Yz(MTn^@~FsM;?}*y-THRSmd^o{sZ)h3e$Al+0)Y{E)%;7I)TRFfMB}K zLF?vrMt*SpARlHoz?yhdQd#vRo-<;-xKJqsp_wGvm;N>Ku!JI}Umo=|A%Q&eDl8mE z+AV2k2=F<*{Q>5=fMWixtRVCZnFQ*=!)$Y7R9r;3M%u0dEQ3NEP`$u8g5&mxJR;(b z`(KfdgQEx^-os@7r!I}mq@>o)&Xd!_*x?XQNGfQ6`Ij2E9|j}HH?5-f$#>YcJ=2@5 zQSUZDBgR`0f2OxW&9VcmvmOwpf`VuM={|4FHBhsT$LMGPhJ&$v-AzqdiHW8-(y3+a zVUEWeSEIjS@`(2RB3L#&M5jrR1VojIiGEr;;%^nfZU(HB8pWwV5FeW<-<~?O2AP{m zku$%%-TqITu_qJ+8mjyl%Ai1qw{maek3iIid)Kajf83bgLkbZ# zOnX-sJMa7J-{1WFX$>6&>;)7Vc9%cQN<1-QB0wpOKT#wr(bAAV#_fW5fi`@q`T;k* zvdfZvef1Y9=gfQ9vK}7!NP2;X6%`hO4!zpo_MYMDI6uF>skQ6!&l0{9_jtIDGhCC< z*5|mhgXNvz%gHwxCBr|wS(%^abe=muB>+!^@XcFYW?!PJij%+p*BR%s<(>JHg(kf{SoQ)_TvzvAJYjEnnc>50MI3!1$I#v#jB1{{yeLjX( z0q|tsTlfKEzIAmF90oCqa3q@iiWelQ&}jo#RRMP}G6!HdG3b~z1UrttST)0 zi!Xzeyb7hgYM&Pd0N_^xBFru<#NvPe;UjH9vE!y1PslE&=bl!n4D9UN^N7l8QYbam zcooCI4Hb`s%@s^pqpJ=-`V2P$bQ*F88o}N@i!=x?-UE#WcE_q=z6|;c zUV~yvg$VYT1$NZ^J9l2RP9T#BiiUqSze!9y3JDM5J;WMCV7+>aOsH`{#BJ9E$KrnLd3;G&>L4r6JcG2-ZUm-#E&o;ETn1v}*9OUlpp zXowasp)A7C22dM0A%PUtp{HJWreqF}xdv!i1j4SnBS?jP|Go%`1i29iK4fUsSHhur z;c@*4AS+qafPVws8LC?M0VeftctFW}uEMQjv`tV^9d=`4u zr%xel?e`-R5)vXJauMifdlw%OLAfY)bnUXHW+Rd>FJ26wV0a;#dhgz6Kuv$Bpw`u7(aDL_eH+ouH=3uVR8ll4=7>9I3e_I<90rY09G42b*ke&iYE-oPv z5x5bKE4#K3@Cp@ZQAY5Zk*+6;>ohdL26)USFM=W3ynJbfSp{SQ`pW##pxjpHEs;(1 zFo1gi?*_~al?AB`Ux;5I=mVOdV36a)(VHbC+)#kASww_|v86p{I&v%M{uZuLu>Z_D zQ{B;A8#1p-fw4=#thsKQ>dkl8zaL@?mvZPSbOmi^Pq?khLn2o92bK!^E0tDt>>uJ* zKH7YTm#Sy@ZIk$QBGr~#N<1Xv?Yr=2L3nc({8){KQ2Y`8X6^AeQ2oAcfS? zANJp$-(t)7?=LWAhIYQ6pMSoa;eVeK$h_|bgDM@KG!k&L-8BEVKSj9*5ao}kw^t{B z`Yk2e(+_W|(Mn^*(P;6mu+`th|E}haGWl{6>ky93&COl?T@$VeBg4>;vu9Ud;|6*?ah5)}_>$XDoK<&(_Q>!8O`u(YpdIR%X=oRh|fs$1Wq{MM(-lG_5Gf)5| zns?}?{ajcRRYvlqGJvmR!pF~hE{Tzo6Jw`_@LN*E;gN&S;KXgt9Rd+q|3>FOF+Gjm zq5!d74kO@K-di(-*Zzwxbdl-BZ(=X@yG;NFA@t%~l8>mGlZ%TSW>NC4gc-vCw(2c( z?bmihv%)()kd=zUJ80m;l*xuD@r3Z7RN@QS3k3ex%2dp*MUUgCwo(Ab{iL09PDyXMnBp4VU?6t zJd=Y=rxPyje!vfz^!oL`{aJhQFYqt9y9Y(!SK;dd{c%1J@fEuCZs73bw+R4~RZcLp-gouMb_3a)5QqEw)1PR(c6(??u1! zW(ax#)MV)M@Q=j=1v5%YdQqyoyE#OZQd%3nl3&#@V2TfhH$X1o1egMcFJ_P!8LMcV zrDBm$MN6g*G`)7M0D>mOo)%49vBz^{YWtfH$(syEDCS>`iH)P8#xT{ zV}SY)FYgV3P!f3}94VBE;n(CG)RQN+eZ@%qtU$7bkA%aBDR^N)K`5LmmoNXoK85`Y zor^#q2Wk*6#b!nm0t1KMi%NsnZ=rI)i$KJC9lHegH%RFOoCPldA}b@IZwz zytW%te-M*{gKN-8aNv0M@Be_NKJ*1SpDyx>I5|N$flJV=x`6k?Y}>jOleM52Kf1f| z-Y_uY<)7jqrszk(%<#V;Z@@%=DEH!ZZ+cdf06*Ec z|16{U#EhBKHe|~Y7{+VyFhT%Ub^9WJg#M*VcW9zM+ZTCbI394aumT8NW4_$W!^8H+dklmhL4psr<}ory&Nt#0cim;e zVly&Qdhh(VvRwYi;#d@B3TUa5FmeN{09dV(CKka_92OMVl_+HS%gdE;8R+i-{veh3 z1Xfmc!9Zv9Lm(w} z2?!iHdbA5pag+uaaoC+Zc&)>2dPM?eoveXYVYA}ZQXY75+1=wZu#1q+0zVm>m_R8s zx^kt&v?>I}$-lUTNHuhTvH|@-0B0E(eI$=nQCM45;LxFO)_4s=Hquu($gl`A4D!NG zC!^xhR=t=#tEC0Sk_?dn!KlQ0;0xm|Zee@mceAk(3A2lf_yvC)BAf^c0vIh~xk6?;OIBn1*gNIRZV&q;BSaIl>LRB?;sX1&kb_N4fknH%CF3 z^(clWYze9i>;YLXScaMK4%RKqS-c?Dw#x|?94u7mbyKzS_%_^c zX->SaU<6MBA|)IN90eR|2@C_lj>KI8E<;LZ%XLHnLn;2_QH(0<*C2IZ|9(?8fbeI} zpA!!#K=;MFJ(#$;>HGJ3ZTr?d;ezrGN{^HRe*`<|$F5!9tUOdf??ADD&Q(-Z4>Iit ztaz85jSwi}NR$L%W%49DC*1+W?TwAO!{9NULd*xj9|{6uNO*rn3wy_g7KKq&wEbqWp)syehfJbKJj!;&lK=Ahbg)I~`Y;P4&{bpr#A zvXT`?1X>_|K-4|5EAVtOUfBXr#e7wSH**d3kRw>7z;T#bfl}ti4>4p)aJUHs#DGBD zf1=!f7bTb=V~Sr4e93Na1rmc)Mn2{~BHKg>16UI9N7S}z)~^VW+hRHlu@cO$A!G{I zMH{b`sI$l^D^vVR+P0yU(ugw%dh(7CTC;_K5FW)FD*_>+9=U7Vvx#js39Jm<=_`PxTp!Rg$gjzFA&yc z>xP&1^(oxv+0@xbp0j}lA!3+MSj>ZmVmL-jza0`XHaZ$7+(H0rgXol}7! zK?$Q?8VAg-U1MipI11Z{P!6HEz|hXY;fRmi$$j6D?Ig#hN1g0@^1-(;j&{^%m7Hz} z4W;Q5oSMg;PxPWD?@kJW$O;N_|SEEqLX z;HyK=gvv2@5A_P^7f=ZFZ>XI>fjGHe8XI9@2~NKO`Ns4&0(=-#x+3p6zwdk#;U=UI z6iz^%@)yoS=4g*0OsX!_WE6r8v$nKlPH`d3j1#YoJdTeo9cSLgz!n0{483>o(Pshy z^_oD4X`m)FTZ`dy(1)RC1If9d_Q=0PCd<;4Sc_sxL8$Ih-gOt+kkN`{oF)W0+8sM& z;C7P(&i)04!ba2=yI_ytSL-e2@xq`xdbeuOCd)^i=15!apga%=g%n$lW-DQI5wHh& zy8%VJRty?%eU>-N2_@41}% zeBSTZ>p32e$Mf+lB*rVYU1HX|-%04q_ZgS&yj@Oe0oQ7g?DUS?{!du!CaxS3zb;1S6JEK&p1=5PQc!hz17%5vac=kw`f4n4ORVL+dsV+lgUeUXfX2 zz^GAbcl;Q?e;iYvEHL@ z6o9qtgnUp{Q04ZKAM8@x*ZK7(F1F6bm+37PM)JFBj4u3Z+zEuyL4w2^ce5I}W(qvxc`CAoE*)oW~P-?fpm z;ketV>FJv2ol5>VIDsoI%&`#%IoCjO+cqd13YmbY5Mfzg)~G66@hH1qDa!P6LIU; zi;?xlR2omqs2-u3|A1BlQ+#F>j7pJg4RBD_$Plzn^K(uIKBL+=3mRJnZu~$CTe$H&8(Upc!Sh85BY= z9yDk=A`n@%4OtKP_|I9=j4uZk6wPi*wEtt4brbn_!r!#^d_mrvyPI2$5zOrS*QXik?nG_Ezw6WsW(#7EIz@#WJJgzn_Ow*7aAYkvV zQAF5IdT`Dfd*~j(azoJ8vU;k9x@F~gM}bw*`042C5~J5;%}Lad7ZQUw!Hll99QRKY zO$j@9p6cVneA*Gmt(wpEzk!Nv)te-G3kP%`zbpQYoL+~LMHfL%r%jk3 zblIcR^M~)G)BNJgW?qvlEG<e)wu}uC`2NExKEQoGx7rbruK-i0Es5|{i$=Hs_6)7+sNbE{ValA8p`u0|t-I%9J z4BxV4-Q1&1FRVj1=yiF6;GNr$yP9HT$r9TasFF9I`w;%#?f+>3&YeR?@G#l_vi6dl z^oeW@Hh&0$&l2;1G8}K_PH0Dv&^_u9tr+fe+Erlk zit*bW)LhoTJ%x+wgV&Y6%L%>3sODFqO_KR6OtW((kLQ4wuG=m5%MC5?8(QaS$GjUs z1H^+xWud~n#nX*OI+_WL!LG(&`S3zxKq!FFTyaE&qtW;!e6NCRK^{Z~DQHQb)UtKc z^=kGXp{lSB5JkXy_YSv0Kz4lZ-m8J9o0lKkw@;z;&eel-{}?5u%p~ZUSX+Oj zEgc1y_n=#Va?ZQc4HC>52B1B?*RUfww^A$#AxEt#2#T{weR_nk4& z*QbG05%M68&kR4(K|obEa?eK`3hKK5gG*15<2FpegQ2TSI%Q4i{hbae{5e4#A&DR` zFmm}c?^rf-GDUt%quh&){BBs5VUsxrm+LVVPlp<*t3)4+Sf%4GYL7oAOeoZ16vuG# zQB0AWr3MBX#|c)Ulcp1^G$GnmCT^-HCn^ZEzY5{ugcZS+pMFY$8{oy|y#UX~Z(?YY z16{jAE8Y)g8ZJ28FH>1(+JDmcT|?J&78>{z&MIw(a&UyX?b7z_pLy!7a~#8m$#=Vx znr3rVYf)m+b=PAX2xp>(u;uY=Z*Lh*e8Zs!dy=>!0CQk94NudJG_5mcPMny70?)!? z8_#$0f4UD}|1otcG>_qYM}TrJ0N&2dfj6bIH0v;gp-;Mj6~oSfI-^fGKLuC}S+Ibp zU%YPX8Xz?BZ{vCL-+%W_RS!Yi03dSOVFXLA(+0(3?@$+biz*-A@6Kt#dtc;pAW@P6*QR|6a@fr zrgm_q=e&6bs7-h7oJCZMh`7uLVrVnf^AqJ0ptileJrn~iEQ8`SC9^scNBPNMAm1*i z^boQUvJDt8m4E;Sj*0ZOx!)h%?`H9yW=eGI)v3@F7|X>`*2(ZTl%vPrd0Y~RZ_EK^ zQaIn*Hw|JL^9RQ7-n{XY1o!IK52L0YrQ@gl@khF++1@s)AaW3~bQj)885PG-VKjPz z(eejalb;bWf0sMyody-KL`!YswYjIf`Tp;(%=3l)CP(t+wr=fYYj}nGhCy}Pn{`@A z6lc31tS=8hXU~{q#QaOmMdPT_NZ{y>Yiet4{jRQe-cwtoG{Y_NjYnFv;Wx>fp0Q|g zm!#aeT|(FcL0fI+Ji_=_2A#`kZ!2l1;zy)h2sND)l!m_sh!xS3RhDw!qv4VsB-GW*|UFt zFJG;b7*fc?yLD?*^&H40@W2XWRh*;Ol{+4qc6XGIc_TO4KS4Hx_OSNX-+NLa<_wFn zA%$!mNZABaWcLbNN249HoOD~Y#3eQ`TPLcF{T1Lf6mUO3db-dil)YR!QB?)Xh=a@V z16CD-^D7NEW9|R@R1|2${FWbk+sbd%yt88MLxfKS9jj@w-rJ$ARiMA3k_d*j@T=!mpZOO401#FlFRO(U;l9XH%47U2`IowXPXG*0UDg2ljNu+>Plm(lR-+JEnYjJqv&`2;pW^^HMNvU zK&?OD-_6cu%LRZSn7~ZHD8RAw)$YdmU17!AqS<4DZi%y6VDQ!ve7!8Cds#?7WjQb? zrc?Sp3pweCpOCfnr#{sqcy|O6w`Z@87vOVZJ7B=4D@{GtR|bOSrl?@?^E~IeASDjjda@aDLkEuGq1CJL3`$k4?Y#IpdSho8^NAU-*!)6G6z|hVJ-a&MXc5T9QV2u(>D8}A%{7`eh`2MkxyA$3g_@-o z;5~?dNcm`vLbsnIbEB?;)WoLg%o&d30gvPGSis~$^tNqNfhrmE#t@i+s*4wyxLUPx zrMM=eMh|%>zZiKSeKVLw(MhJr5_0UyoH59H_1!QLA~!?1N&|M2C} zHHmq7j_1&T!SN7G^8|r>As3Thpb2J2!^`8~yAds|XZGN$QbYntf^%+8Pk(!7Enfk7 z_~2c0rcJ{^*V{X~$QMI$jwd8u%_asS&{1n>q(Cu1Rr1r3lLym}^|7`#9JF*l&&uiE zg9q1YLm6IyLO>{hi!h=JusH%?RP61;tp~^^4i1c||N8ke=l%#)x2V`2%7Zw7ZJN_q z)q-8jr?9-LXwE!a5b&xj3h_{ugDg-HM8{#OLs{9izyCPeAkTL}%9RiWqX_z7(C^j9 zk7AiExFS}L_oJzl6EGNf0r$}FbW~g91-G?u#J7*oWNIfAemhLoi4Be13Um~CmE`>FiCj+ui6 zh3<;W7cQ(~lARa!;N= zuM7!`RL#Hr(0p!UwBony*Ub?o_&>D4dB9Or*UnHVLu3n}B}PCM$c^=TL&@44Qe@sl zNi*G~@&ItK88bQv;Qt-t{eYaQqqv{o9kZ+*d-U)lok5rrDfKl~igQ!CI}WcE2gQgj zz#i>Q@{;fzz$T9I+O;e&lNzRC2!_K1<<{MQ|5aAUei}577c^J84T)oW^ms}c`{nMt4|+l4vCR-3lR(Gl7<|;GQM6MP24|ThYqA^QxKTO zP#QoE@^4EeQt@y0-b&}0>gSCx7gU-Gl+;aF00{)@Bq#w-`9A0Eu?Gu{H&g|LSLZHW zfD-_oe++u!Wzn(p{4o^FRAR@D-F)$4x0?yecM9bhdJw^uC{YsBmmo#XweT~Okg>ApoUko$?6TTbBT^AZ;Z2S;yySXd~AdxV&N zr@ZMig=nxtUumhY4SAJ63{67+!d{X8JS?`5rrE5(OHIe9$lBU@@w0)CWDL7$3Wtv$ zpLfa|oSn<+w2ECHfLxJ{F@|$N)lTBwZE1;pPf~S$iz{k}|5a%b=f|(-hZ|wd(L8H` zF$oaw4h`q}IN6$-DR00G8|-b8rMH$}9fgsSr=(akoSiaG8jnn`ix6F508Ahh@@g98 zff#}J8$Od}HzXzLbP7c&gL&}--d@(=6}=ZA5qJmQKC>{BgE3A^KqTi;z$H)eCYssa5yEA@Bp(Xny*A-F@veQ;F z^K{_Y)E&3xo??RxwWW%d-x;kJzxgdf^zPk=vHCbERR2-4Q`8Fx0ttnNqw3nbAWI61dthBv%vyf`Zz{dc^Ay%0yW2+@j*@m)Zjn=={<#%T^g${jp^^E#?RnF6$_x^bOa{hDkQi)+`)}z!t~b-l=w@{eDfb{^ z2+@c|{iLNYmvT#yvm`2!C8@xHacE&CSTbv9E=rhccA8jysI8R~GFfrJJhfI&QaA}H z|9%`wCaBl0Q!U@)QWe`Jbj6CTX=#P#1_3ZMf>3waU`HiInw?O?ZEf%h3uCtTAErpl z+kjPAmaA+2iixs~Qi|L-q@g}Xxoj20G*Svqfv7c43ja9E+YN=BW-g`@ACY!=f;y)Sp zOZO0My&z1}AY2V_bnIxlAAufWsYcJA)1OfR9$-D?yjz3fDt`Ue^mH{14dlz$IF93Y z4wO6pomoFtmh6Fk%~*ZMzt&*axSr{r;c2$vzozI z7*ZZ~`S_KL0h;}7Bxu$yt!)-nA~<0^sZVz|)>e?CJ&cMW7U8MER1@-B2kl1%CBu3XI>Pj`=|!4Z6ksPO4Bh;=C|c2SN%prMCv?2VjeE89 zLhccOXQ7ZQ=#ebFQ>;P}Dr2Clgd9LIFZL*}ZgxdU!~8RYcxapl?D*~2^)Vnjqo*hO z*D4RrI|_n8LfpQ6dr5C6!+y@rb9{XE49_XFr)bx}*NbtsC6#qFOL78SaVyTPt7qvQ z{2qP9LeuxNL${%`KBkYVCw1Xzr#kG=J<_7z_H&enFVwskod;(dj6Fl%YaQEkRh>8M zcuYVgKvkkP0K?Tslfgvl7ViT#6=zU|?AvF0gt}}u9Fc(@eCAB`&;EO!gDS**=_WvA zBp0|9eWA3ynxS=d2yD4`oh-U-jk#&-Yu`toQ)v3TQ6iB0nveOz&A}yTAI0 zPIVz+01g{$s=(mqjGDSbcwwbv&XqJaY4;!fS+xD7o}Zw8b=OVA%Z;0nGC>lh0p>qZ zztyZ8XF8GkbhNxcd_CK$g*FnyR?t%Q;#iaPGpgjzFHrFf zWnBjz=un(p;IMxnEf4&}r&C&!Ufb1`v_?oJs6LTBR#|;f5c8NKXWrEDZhhmH_BJeTYKJ)a$rswze)+J6 z1yip?Q5suh(9om!@f>QZUEL{PInDT2%x9zf*8=PiuQfp{M7(|R)H zzSTMS;nOE(b~L~KiIe7*@&KpZTZ?O17ON--%Pg27RuG^S8!s}%BQLO|rbDrf_hxXf z$4Yqt+OO1#Y^-|rR1viG^xUlc*)9MVda~F0=|d<6{LW=jCbHd*)K}fUqqkD?61^N z0~oTbxQufH=wDME+A9b_dB*C-)A(`z{`Ph<76`D(e`S1qFN&ih71iDh)ADiF;la23 z{vFkz6o-U_dZ4zpwq<2N13qk@{`=3(iCqLzC#9#fafuiD(M$BETs1M7ORK{D$Fe{u zWY*J0LRl89z|Ix_#)6pi`Dr3J5o0X zJGX&LXAKTgw#&kwlkFJJ-K^lFaeWS9AeUsP)eBzH^&ItdLrM7jD zCjS#nRR4VEqp+jWdBrU#b2=CX!}UhK-(vNOx99bJ%0R{aLiRv)zH9RWSs)bO;}79bMh9NPYgkb zYj2mCE@vj??b}|~*4VDRc=qfAAP8Yx3e_g6-;tm&DhX~$hX^9FO4i^fHD?tIcs;WG zO^)b&aIOu-kTYVUFYA}^K9F1qUbxV~-oAL6{+Dnki!I{c3)%6If2U_pY$_4Kmk>=x zjzlk16PQNZ>}1I8!xU5R+!ux%S$}}~awqW`Z}rBRNwU$hFDsH{(|b_7hZt$Msi7i5 z2LAQsT{15~?jAZ*m@glFnJ$b7!3hSl>FZb14i;_&BA-8bvcl;n!&s@+N;3|0bmoYi z{2d?IM%q77RnGj7SY$Nxt$ z5+z#0*w~1oVQK){!id{iI1{gad)J)m9>C+v!!13oLRd1PgI%o|(ymO8x#+k;eI!hV z7-6tMQw{~jDYfn2|K<51NLSlp6dmdcSjl~bDv%hAK4}HFz2(WV{g*C@^Gbwqys6BU zW&e88Zx{=s+=fm0Y@)2kMide_s%5AlL7?=!H$=Z{jBCqGZVr>@QZ|j?CbRhYV7(3T zt}Vf06Rm;}kRJ-4$FAOQJXJiL*1oRp3JXMgK$DseTK3oHpF>P7Eff1$ik!eM%&iFX zpcXt&Xs(8*28!}`RK)Hsg)6I%TAgP{MJ+B*peD{=w~e;z3LG`kB;xCxanDs1=T4YR z0n@G96NJZ@1HO2=%tSlUNCnvZcM?lqQEzj2#bGvWZSgo!?xK5-$rE`e=7mwf($0}o z=)6?wdW%Cg2GB`J+OShb>M8Ds^3xr`KQ4|{bTC4i{Qc|KHD6z)@VN`tcGX4`p3!&a zD|}W#zUlsfx#0!?*1m5n{rK)3(+;TPVRX?b&&G-N_TXebabg4L6@?-Dp+&2vd13Cx z%1WNDQ7(v@!5oJYa6wDErLgyPO`ie;o47%?X3pHwG86U+$t*R*dECqoN$deqTuPG`(!65Jlqi|*%lNx5pg;@;60X73X=5*}_x%7z8%h6m3)duKJ z2RwR4n}O5{27Q>^_L$a407<@muJ3oBOc`on%`>$ktKNSg> zc>9M65?pDDxI&Z`sJ@5^*rka&(4@*hkh0-J`;rfEj%Rxqj~THcFUL7dVCd?Xf}|K8 zifz`jX~Ez<_RdbwPAq~>tM1NE=Zio(a~Mf*QLQam;|^hyjtmSJ!s|C~fZS$QJ8KRk zz^9zqIR&C07ns962USUa&*Q7t%sSk45IB&n>d^}`_^V4bl9JG;7*{_X!_ zztDj@xr0C)aBNsF=>9&O=-LutELUknW=2F~jzz`7g-)y#5TXwse#0Z0xKLjt2LB{| zG3^Ox3f#~WLNO$a&MP{ao68x+QZ1%DRZgsj3DTq(-Z4V)Z^jy%*D#UE!)O=*(m8bK z6%xSYBU7ALf3F0v$KM`evb+29h@sN>*_Xp%)G#>##RTWeQuwb2U-b^{J76RXGqCrO zQ>Sc2;z?V9qZ3gB_Tgpmm4O)^IfoY}2#B#H%#yb1KW2tx?`s`H3FF|6hCS)!(K6ex zTRK1Qn@=7=n>10-qh}Z=iD4SLW1ePCPOYnqIkiX!4h@By$ekjz;(W3jA|zF8HN{Xx z7on%4!-8lPfweUTy9pF=qgSUL{FjYI8~`qf5Dg>D&!k?UCbRa=bw&2M*mYoH_MKq< z24|}6Tpbk#(syu@s>piP675>J5jc29JG;Tl-)KMc>_k%d#+y+=6XIr)&as4eikt*& zDB6BJ-<7&)tvx*wbpjDEE`f49cL*#G1vBd44qXVT4x(G&uvx_;907;b#8$^c)AvPRPb~kmx&a9nI;% zmryLrDC+@b!CUl_-hDPl~=(UB0KS7HmpOxj%O zIkbO%KtC!;1cpV zdo#ZxUQ|VwLhb5Z@P~)Du_0>%s1$?} zyonX<3jEG`dQ=Cda~hE|appn4rSS;zF+#kt~f6+l?zkLzn9sTcR(-CiR81_5lQgCRn_ST75lTan7v?CW7^DdX{7 zz9E92KN$X|OhCd;ILYahKLgMp65mUw2K>#VIZ@;qsNWIQtl=dAy+|d#Zw6Gwm%lQTm}k~fR?Dvy=sF8k*45kB{)v0W)*Y1ABcny&19DLQC3?r<5N^XViN?; zJ$QC>5Vs)v+@};UFcu9&;s!nv;`F^-ydMQifZZzQkxNA7x)9AY-?K$1;-7VB+Rr3h z(QUe6s>8jvk5XL3;6C?~qe7P;dX}8;ml*P&hwP$Ti$k`yrZcsUnrSo~9*2!TwLb}H zsIj0jTQ4?+(9$tvCv}O82ocpEOPBt`N}n@lus2stEu*wCwYFqIhUiJ4C<0L}(8Fxa zvkAJTPhKQVAg;M;{*eI5+<3{(8)mv3LpAYlVk!O`7uUI`ZT{;v?rX7Zp^uNxvktE_ zx#fa@R)HCOdP%qQSO^<#nu`b*D0f*&v0);FIU9&)MvgC$lq9ZY|KB#t0iMgA z^2Az|)PkLDB3r_NA|T8mA3NTr%l^@8L{w<@hxhivFWO4Nd*I~wulY<@zB_gFBV*!? zkDDORKz>9LgQ5zpYieR*IDQAw(XLE~VPLxFWar$+#DE{Nsp2$lR#w;L<5^S%Y&29q zevBa{CmO}1iOFCqB$Sd*3@(ccEDnv^)j?AeOIr<9)qz0BA>%2|5y5On6I( z8`tR>Il0t!-lSt>bTm2~VFtJ!vwejXDGMVQfQHK>U*6K?zJ>M8$wA*~CPCEdR3jRAYYMoxod;OehcFy_-5ZKIEjxls9oA zgafDQ)k$IS2*-~e{ffOlU8ShkWy*Ho&_PmW=kz)#X}QIaKz(W1rSZR!`-Vn#>0IbI zOHug06$Lig*kXn-AWnT)WyWtd?drSXJaI-`dv^A0?X+j$u7u4|W|KY#f|6dqmzO&t zFJKTr9!Z*f4&8ydxzfXIU?S*|(6%lD)mAx_dU?Pf4vb^a z7|>!)WpnG&|5Op}Del#h8LS_w2OoxE$4h>*I4!gD`d{hkOIEBfKOt@ICcD&o@1;vK zsYjU3#4xk0EQnGE4H2lAAP|@4`rtuMnm~p_Y=j}q1<(}=QKTSokN1OH6|b=z?#wTvD(%PIHU_^pAji@CjAnfA_vx<)GC3#dP>FGLW^4BzN8lID^Kj;gf2K`}1KOds{ zxznfLFS8^J;-uP845ENlvbH+XetJXNf8a`d8tC!aJt>aHIXL)Am8<0vE4rfBmV4+^ z7eoV#(x7RqV}}^mh)yV>z;T#jX1$ddbR(7fnz(&4^>qEZ2auAI6)uL31t3Fm!b+d~ zHluAL=ourZtkR+dzP~S&SI&TnpBv8HzhJzxZ^l7zkKZw1tk^#po0&PxyP=oaqPY~T zjZ!O^%Ce_Lb06kDFe{52E+=p$fnUIYyKkofAr1V&7>G57_fsv=e(#kV5H_CURuplQE$~wtN|wwce{C@ zYowzGPEha12>x=8TuWM!FAaZDgaL=C8o+4?MHz(~V;&`BX9anf#mM#Oo0@ifa*t2~ zML>+{ix4>21t!$L)%mps8+sP5TTLzlKOoKiIIL)YXR#5 zs!WEr<^pYT1qgctGv*IP4z#31@m5Z2pYKjm+~lJ6LET54zCU~7#Ktiec3CZz@45;N zO)JQqza}!;nuY)~Qkx@2Pf5Rod2!W{2jiI};nmSdr{h6Hyl};o5ENZQjk2UW%k;%a*0ias?l< zTt|UpX=%x*^o?7$pcKSmVaSDX<3z%Y8%8z+!)^cl6a#b)EMcJ%z{RALELD3l%7;;f z_xwX>-jd&$w1nC!q=IZFj9xDF%iKlBN9Xcvik48t4S4b5*7(;{qjiT~p)Ph@+!FQS z$|~2JPupZsfkzGwT{LOF`KXPa>OJP43P@V7v-Dp4V)g0&EGyrv`dN2kUa!pqdQ8fw z+WpSr$=TooYjdi`_o>kEo#p!N(}7HG5M z2BkTBTSyq5F+9bAo-u|>Vx7TyC9Lsz#LjDv8lZI_V$s9-GTtIOL?bykb^2ge}369wD}^rSAfJ=qPa#qH92>zPRQ=x!MTIuCslLayc%}zhWAO%Vck904c zL|eHh+*k4pZVNzibm){uqG55w7XRef1y`V(p?S$*bPN2O31@k;C?3g@;jx(z3zXpW zKQt5+;nplP<__gVRWj5FPbhgdWd@b@mb5h1%j)auik?OX4s?=AS)pKs_a&Po zQ1LH#Xw9N}0yMvpu3@6(U+@-PyLYc&$Dv-^>@E&h0`18zfJiM~$_QhTdB>0+bj{QT z#~DS7uf&UUHcCN51AQ)q_M7$7yuE|{{A>#=B8)KI_`)qli4N$@XJW4_)Bv7v3m7Ee zIY7sgYr95#4WU{8@ZrC@IzIE=J9qq&ZgOz&e?=pI=Z;QsE;2}nX%>>3bhJ~PD~ayW zx{SYxj69QVbd{8(e5;sdrSAKgl5&b(~1Ds2U zM!$88r3?y!qKZm!1t6%dsv^Z5g*S<7$dDme>2PwrS**i@yNqEbfA|N7TkF>H|E;|% zx&cx}fDv;@kaZen1Yr8$W-^fohvS~#2MEl&zw=%#m*S;KvUy~j!{i8Y>l2|8|55kzpMVr?`ro>3V+t=SCoo1qHDxPd zF})OI3`E$k@3*H&+)HgJwp9eYdC|~r^7Cd38wPz@UJx&ZHp$pytFqPjU&cawe2@Wi zQPVxK#R;`!H=%CQa@^3vr_=$ zAiFN26hhu_cqCr>E+)ZBOV73M_^^2Nik?u2<}!qMh;D|0xU#k3OS|SA3ZhjluuzF9o|BA{3I|vRa0a01Z%7uV8Yap+S`6p8MR^+TDnCZ@kgydL)J)J*aeE244HXsL?9uoIhr${W3XqS@B!C%Pn-0WjlbmYI-TV*8r zDDQXGiX%}oP0oLUkxor{OsU230%r!(Pdu_|pR+0RtsRrxIDAaPT~1>^DlfA^41ch9 z?b;pgAR27n4=e>)DHJloVh`7IffXr;818-n2OMXen^%pM02?7H3Dz%?rUcD zjg)_RfBWvjMckUT@q@!Y=?lJ`WuR)F!?|-`8XLc_`twZ%hj^3UBf_Vgz-ueJX5G8D zynyM=ewX<=s%{L}lAjs&<;5!B+wH#ZdH&ippn;rxg6;p!ElvQ5cz3@SH-^7X03oG; zr!l7FEB*Jyi&ngIAWqq5cNR7+Q~uuDZ{!!eZb2-H7{BerCn_CK^{!jBl56g^i9Xgk z1-jRjx6jAG!q3T65ZV!R(Qyil5lPU*i9K{x-e<7d7#JdZ+z}Wywu3H)1%exs{k)k#bm%H>Z-R7#-j-fs_BZzAoOM;(Rs#ySiJ*a26@yfykxTZk3nI35E9u zH5}oQhnl9bpHzqjd)CTdtyp({Kjizx!92Wyg9d3>gf7J{14|R|QE~PczmWIuIp;Im zfjt~u;{AyGr_Y_U&`qKVpjG9fv$T2XQe-hk`Qx;CvVRwIUqn00}YSH6UX+TmR2A2}Fc(YqgN3;u=E| zH^FfIXO{_YeQ;`Q9ZjL5EU=8i+CKv#4(Yp0UPxl`(U~(W{aGVx=)pVouclvjHvG*` z=K>|1e^pb14)4R)`|HBi4>yi9qW)-YZT^gBIt{UXew8M%C56i!6Eh4;V~9cEN_3I{ zpR|eeIn;|tRzzuNJ^3`04)d4nA4O7{ZW3_aK2EV%t0W{aATZj)<294lqPqRQqCq;x z1#1eAH_Y+>B`|(};`#G`)~b>$xdK(w`=andf5x%q zSE1V-lacMY3zgu*?tO z_aH<wW8RJ)@8^`t2meRMH5X4T$)4HARueF?8waIyAUnv&hi+j)u}9{@xvBq zy!ovVb890HUK)?Y0Rxw&Ce^BW+F_*$%HVP3;p;?AHXl^HCDU2VagKc9KoR@&ULi# z8VE5vM|41ksyd{}JrW8jIAM*LcI!tajEaHnwY}xElaqf@xomaq;BXK00nw{^>YV|K z5bj`|ZHrbR9iwI87G!l>v^;1%W356oK9zHDv;@k#5?I--{b)M<7#SJqj6EE^0ylEb zoZUNibU*VeZcSg(zmnj3R+nwn9>&^qKsDwLFE9&d-{paOZwcw~D{qH>ZN}9&xAVnM zMZ!_OCuJ`sNq}8f<@bdK-=%)Z9b^46!78|=`wk*Rvtn|GBkvQ!&_wOx!IG>=K0YjS zhkB-J7%h!%989!GbgRSAFLb;IfGGVo;gs5>-TeaXOXNwKqIGTW3(yqYy37Cu*OO7B zP?e?xDoxO}M|6acy$#pSBG^P5^i;t+{0*`!(eD$~2XLC*8d;5r$>yL+g23~N&A^UY zL9q78C!f)-(V8zw=R$g~2~#u$-^kV8?`l6bEKF>Y=vCd_&o6%7ZMatzogS2Z-n0#; z;kdvPZ2LcXb4!)jq$tpQ)S6dSb$wS9IyuYs$4G?Mi%p%mPo4Tq6@={KA!kgZ8tar^ z$bfm<*`mwTaLOWtsJQQWUr>IZkHHSzBswgoJ$&$>@;X;oU_U84one=2#ujv+^|-2v zxh-kIPU5oIUY=Ri+H!%K8O(#_(wrK^dneu(=XS4-jp|EL!ITnu*lu2^e+*or03h(* zqj;93P(COLzR9{Nt}VME&_&S}X7uY)jk@5+Y;0`9I6UNPT6qBS@ZhP_X3l*7`Sa)Z z@4KT_rVGvzSO1iw?wj)LO;H0iG3^KgueCu*z~{=s2XtE@_ntrRYhrRWJhX`iiQYwhs?WuwMVN*13Qo3JmWmw- zm-pwdUz&3advEP9R?|I>FN6>ec3ffFMi^JDV(n@9hyvYGFf?ShcIBJ&dob(RP4O(L zP%)c%@}$GQbI?L;on}UhcKw?pV~wV!_25VpO>mJv2N-$NyK|!Hx0!?{LN}Vli6fz# zHd$z^veNG7fJ+ED?dW2WsMXAa(4goyOjkHWrAOM@3Q_-paxDgDqs@QI0(_;W8qUfbRGiNJ`fv1`TUBKxUxjzG+#m|~b|Lk8_9|Br0bF@UEd z7>e}wM<&2k&(t^*g)~w(>3;RWFNif867LXviT}rTIZ^*ov-w*6=y6W*4oSr&O2jA zd!*s*6I%6zm6}W%5n>c2qa&*pAFD{sDJ(cSA6~vR$IMP#)-`bn9XIJ)`i}w?10D&0 zv-r+XjIjgy`ogd|b9iVk09$DY8I1)0NFR4-{B{RSuA%Y#plA4s93NsjFKRnOgI>uu z$Sk@5>V__nlH&9DYcpi~`N`S$V2Dr>Ea_t7x5!}|PMYE25yX3`ass7G9_2oBozWU5 zI!3d{%+~aI+WdtJMV%xrL}Xv^0!ou?1^vm%In&-z)Rr1op?nTF^Lr!>Twk6fB@A76 z6ey7KB@R48BDac*6;l5MbZmX@{h2OK3W^sucIUwKUAy2J-%`&8CSM*D!TMoFas3L# ztpdP2j8P!TYI4p?-Nvu$^nwo(e15|HA-|YCb?ShfOSopDSzE-a z(r3xkWy0i6o6Z@7jDG`B;08gtX>{no)svkAolDHmkKA*Wz_GbJfFWaYxo*<>gpuz) zeHzCOnbg$V01b5Sn6m&X#JKt{T9|U{);P#@BuexRq916n4e}}Z7-Gj#MwJW=4H-t~ z+XCqK?AcQ`fu2awXWySD?i+2-&oYS&Op~v4fKZIP)Q!Fr>{r}lF?#f`PnTVUDAwo- zIPvQA!+wed82YhJ!S2Ap{(q4GF<-!#k}mA;f&n%+%odX`9uYF20Fg5RH}HW7acYXg z(RPMi5|3$0%EwF7r^LIXvt%4O-4lZ&LGVHV^v^%KuV!o}-a0PcNw+VVs^R~ku>J}IrCj#M3WmRahv0I=_H%hk9ST+Q$o70TQprAw4 zSwgh!qgLZ#_VQSPFQfLK%_{9XcWkk|s@X;*{l7tzG3_4YqQ0tBnOuE4@4x!`j-5Iw zxg0uh0AdbE_SEPPoN#z?Mr{jK?}2v@g5^eTxpF0As|a=jed92oPBC)X{l|HCiP4!^ zCf=%(vJ*yfNaoJ11Ib|VH9UA>&E8N56bw$BHD58uO|w8D4RGyM9v!F%6dMmxy1Jnz zCM9Joa~=-eT6@sIQHR*5PeNDN?qC{vm;gcBiKzofqQ7+N%$a>GEw7_GSiCr&YLsz@ zz`)W>z4@6CU3%X-9-KXXd@9R@nMa)S>h){N#rjp*+Aa#~rduQGzHZ83hSQg;c2Km@q5>_$$Vx{}I?^H1R=2n}Dqw%Kg#Ah@<4o~Ed_ zW}iJvP130_c&0;4hNs#<&OrgcJ2}9~DS{%ZIO+`H7wE6BrPe=#!^w2J_zA*Cv9-nW z#yZy)74QS3lomENNJKGPxsdw9Yu_CdAm9l3Ps4~iZYDYh3!}3<^bHIcg*%Mf6brNb z{l5Y>q2}OL2+`ZOKjB$W;sRYJ92ttE@imr)V1&#YPQFJ6Zs32Kc+H@D2(bsYj#lIw z>GkVZcF&CW@+!I4w@2jC?DUJdxeaKl3BK5SpM!b9;*+|HT9Y1T*5z=W5lOEpn}2kc zJ*ubCCbfY?@;k?m55YrM5bUxdmhy&MZ8n)tsbfoL>6^s{(cs-Y^)=R_jL44yv2XI4IW#xQbM4xp zDk^0JM_WmAQ*~7PSb|=MYYg7~ZPjiRKrJmP#uvMvP>4#-w;ItJ;etLk*sM~QB_Fqo zifXYm{CJ4hm9z52lP8Q)~RkYN-@6|^=qHTB$54xeKr zcR|}$E;@cVAw5Wgu@f|9`9rdEJ` zflu3Z3T}?^(Vp|dC?1GWQKyb#WkM+7zDNtk2VW>!`0g{%6>5jlU6J~Dr7$Rhi6KwX zrwIucj}q+Y@_uj^RP+VQi%^M#&rp#R^B3rOl*4<)uI#5!(lFe()DpH1imm#5h>^s* zal};QZaEW3I@D}PG#FF2W6@Yk&o-b);sci8?Qq};1a8LK%mcHGCg;F`kvS9QTn;Z9 zUd!J%LA>|;BLeVgSanvF*;wH)A!@!#u3j>APn6p>1~dtZEN1e4Qbf+efvWoA1H=Cs z@}rk;+P|;Y&kDc6Et#dN!3w_^T_bDFI8B(9wI0AFt(TLdn+K%Bmy* zSnmn#GcuTCIP#>Xq{RI}^a#-JiTHZQ4sjS7SgU&L-xn@CMp+K%uX!LlyHGm%Un~ol zt)03gG*o|JsNiFjQ~DXJ6^Pn5jpb!!U5IrV841l{_|?>AE%zPp1vKQ@uKR_BqWdT% zG6j3CqSjSrnQ*UQP#)daaAWO;&$XA@rl^*9E55ox?E&@oxF+@Th~dL)LdpsYg&#~j zVn*0gH>n}x(%fquL@Z!HGf%hoR@8>rr*efBq&V70mZ9g+O=3!z<00+@TDcO2gDt14 z$^DZjZvm)D_k4DF6^0A;m`zgIP0#z8A|0gcZB65X!6YIQf?V^0W$0ocs?&8eY=4OD zyK7TXNc~Xqxq{I8^R>}I_c7zg)4~<-Ytml+?5g($5jrdknion%AhQB8l8O+%YE{vU z%vkk5%TbR}1`-fyBJc=_`0`&8@EKEH4Fe~0^xRCAkbQtc=!&@U{MCkrF27Dg2>MAo zck0AR!S?*w-Me3Ar`H_8l=n5rG(#xlxyrIKWcXTLUUBJ%^>u+kV0wi}CWQX_HvdtV zKU;9Vx5J-5C1q`E%b+e@9wJ|${N`iq-nv!ktEs+Ar2e@*EC686f-Z`B!p`0vh>3C9 z*SB~YqLU{g>UQBpY>awsB>U#Xg_E#>7<$umv3mg{6pv3@>s?zMtKNPiz+$K2b7|%A zg6hC1U=LDS)8k5pJ`7@9@pN{{J=t?My2|7$-gCFiAo~H-kU(3k4kLM8-RFl~`~lG! zV$u;n(3va$q^N~EpGq>I0HV@eYeS~XJK zfDRxeJ)I3A*-_ka6zk`W+l=6g{ti4TV*Pv_UIi=PDJ)U^(a$i>qhgae2rTLT8*CVaOu*zlk*=imsW8&&s5ugJHLw+C!oe19&Y0?N(gZlYr8GB_twNGFdT^lUiy@_?nQRt-7^Q5@G?67C=VucXTpz`ia*?)-ZemwzCZ|DSJ*xu_HR@}=RcXhh{| z0)mexL`JMMM%oARhTV*nG+jvLitqHR{pn@oavV^DYc1RI`0^?igP&kA-V+%Q0<7lF z%Nigna)#*40!4E8uqdRB8(v;n`Fn8~ftziaAj*3_~fNeAjW}8Ym1x zdP8wo0-xj84{NcJ0>@ob%1r}MDLR_{A_@t}JCfmRksg`)t9?YyN!zXho5@c4Y@` z|Be46#w@OO|P zyn0R?Qxq5!mlGJGDS0IJ9i9Ju@PJQQl>Dap3I=j?1%yO&W8WJa;UvPFx8^*~BSR+|*9cwE|{y)R8A}rBTvJqFhbV^T7N-32M?m zFuJOyhF&_>@Vt$6SsF=jkB#4OUtc_7O$B4P0~S%-n!;Ezm6QuRI;eBAQ$@fUNSA02 zA;RTm%@c~uoVMZ`y8HPH7OXq>JaJDJ^?Gx2b3u5c{P}7=*lK2sp?A=V64j|AJ*EvW zxvhM|?YaXcLwK?(;v>es0N)Otd5!G`PIt0ZR0$|qfGCc2`Bq@kzyDTOV_!+H?MPP< zIxz&GmjCCT(8s1*%7tj?meNlU030M_N&FZJonU1FdD+wvBNR?}PtXBwy%wva&Vb~b z<-ceWd{2Ye{iFbQVKUMT`}0)JZ^Xn z-{k6;!OW8E-sH$I=`M%)cM0e<^Wf|t#{I)er>U0Srf{W>DxRXMoj8&5yNFFp)B^bT zGdWafeD*akEy$33j4?vwkJRQ+H?7`Ols?@mz4Fb7oVH zr&&HC9Y7lL)|Z9`a>{k6jEagKxEkScjWP=qCD>s`aPS+j-Nr8U!$@RfrSA-_uw@N3MLYxwXgr8yT6A+!|LcvQ>$t>J9|m7k`2`gA_=U7C{&>D| zsB+-)+xsbeG5$+*n+pPM1-k<3%xF|^hXipmx2Ef(Y5rPF4_s~rbT68wpfz|G+&7CF zV|GYUGN4w;3|UC?K-C-WL4i$G^33U?7Nsp{4Afc!bI52V_D~i68XzuNWYPsBE8L%( z$w8)L{II}laOrgsnWA`>nI}(E9YIsGJeRub)r9Cj<@|@ArDp}R4!^jTwoMT96bw7p zm!q4r9R`LmWy)VEDV02-=4QFbF(D!SS_U!i^96~Os7I-XK&g$m- zov6s^Md<@V!@9bsM0|hOsT~Db-Kkjkftr~G93>@^pK~~Pd5$bP>Ai2Lbnf!5z8Apg z6otaJa@0_ijo2R}Xa$o%jfu-7@<7aUE-2>cFtRGUsj|MfKY!)dO(cI_-%3m@g3KHbq` z7Rc>ul1^>s@1&*BWwqRVASf>{_RRPO1Ssaa|M%wY+gj-SZ+DBxsgjzYZN#Bngtn18|JTCe7#&WtMtX;xDc>5CMFi%wmEhdO3MG{LdCiuiy=dvUc2@Z3gD*u zY#td2(B_fmkNz*lMTMjSg~Ij!BBd{0Y(2(F5hMtKFDMGBQMK7&T; zpBf4d-_n4){u8cro5xd4!W6HTT@e* z=gq3q-|#20m!R~NT@=iXo2ko~lp3CJ=heGtytn@63qW?^_Ssz=DYo`cpW1K026P1; zmf>%~2~e5HE}*6?FCT?VZBsut>OMOm(r-A6y zOkINV#{cF|Cnjw#Q)fo!PS-OOZy;6HuZqXBbL$xQh~%DlV_)T%g@() zr16v~U8Pc@{r1dELCAa(CXJ@dX#E=<3Io*j6)P!$vb^HIfNT+AVTWL`Fs<(5zIxo~ z(cL!LglAsn-3A*t&%e9BR+8x3$z@75_4i-68)AoHY%F}$vZ;Ihx~HY(z^is9r4qE! zdbIO&j#UGixQ%(X!hRx^x%o?KO8}Q{#y|fhA&Ix^uu0jqYbdgAW!ml=AK-Y9<`5jW z2Pv`@c{3gvexFou249KK1zYTK0mN7vq{PWde@2vsk7xT}&0U|-!-E4m>+9e2#%_#2@8$wnDL?Y_W7Dwt30BUwk zyz@U85*Rpu0zAD-N815N<+AfIQrY<)u`DJM7x|wa{~uH50oG&x_x-b-B$ZS~I|-#B zqLNfd(pA=FYm%LGDXXD9>`@_92p5+X*-eRzk}WEUtVAw~)crcUp8I%i$8$W#|GtcV zzw`WlKjZy*zuzCl4RQr(fDcRoP(Y@_gT<|#>1e>-e3MR!xJmYzGq?l2c=&MV)SCvB zXqc3W9;icKz+e#au{TY<)AC!~4=zN|_k4bYDndypzY#2M)vf86Z;NESZ(D0^cd=N; z^!@3g+U@Mv-7_`HAoh0mlrri^E z9~}Ix=7m^{q4Je0KTj`e2OMWt0&_PW^iIexDVd)tiE%K2odqd%FzJ#T6}If#$3Q~6 z%DC582wRaIdmMJ0b4b??F^f&`^i(MFT+mbopZP6#BdoJD{1Y!vXDOK#j?+xo=A(oW*p@#@Lk z;2BGS8KcxJ7@}CT554Eg7<^~x5!dH#Ja+6oeMaruUAxq=dEoow)L{NsR(r%SO_~pe zS3l2x7a1w42_C&Rr0&^6u1mv#zPp5#8+2WCIrJ3=-p&AUhigD}=yl@qWm`eq^k#BV z!>3en>BS|B7bBwk`6yfY%N}u56lnyRwjW($$ch#Ck7{f0kP^(Jm%P-B9Xf0n1Sr1S zdT4&sa&G^Q={)}SOa>u?{Izmr8LI4Kb=0D~X)XO3w!KezkNH|SPk}8!&yymR6|3CFioVBUGjoKHG?nKjKQ1g>TP%j zqf5mijC#9B7dHKPrcxwrnj){hfe(#N)lac^qPJ$c`@LJYI38!2y&N2=vvDk}Y5gpz ziQ(GjqonW1GvXSabM9R0uV2hi*yppZ$#p4PH5iX_m%yf|lf7&Aja(}T)!qJj%oy5W zIg(w7pu40)V^OfxfRN(H6WW2NI>cTYy?R~5(#5aLV&;K*)dI&Yk|PyRl`(U*OC9ArZJJ0ka!Q?Ekqosw zRyN%olOg;-*$`eLY^}N054V2`t)?eS`Ts*-+6S0k0zhxK0UkYD{HGa7)!zQvsZ+{k z;^N2{$6oomufbYLbsW~@Yf(;b_J_A~d1o-I2PeQEPO>WsO~eo|3e==bQo!2i9BpyrfPUrmYPz(Km-xBcP+njf`RAW@J@ht?oji4_jDYeI zcSLvte0m2s-^j+f7UEX7f*-WzOP4L}u5a@mQ z@X)5#dnzUiBI>^aM6}rIL7<#G86w~{W<*5Mt#!JuF6+vyQHxMtTWxbv#J+?k1V4wz z{&y7&DC5{j>JZg0FynuWGqJ^SR^E^P)L=;K^C1CRupOnPZ z>e;2g1_@qFWHe(T!vT8XGZARmn8XqZjyz>VFi6_R4|Q0L$uF;|tCJF_d5XL8nUS!V70x&b*h-FXD#5n6SZeD1(tQ+B&c6BeB;i{b<8yfiZj6>{S zid{1?DD)oz@~ec&S(OfpQL_gV=DP{Zq+siU3V@43rekOanIrmE4h>GY{s13E2kH0@ z^v+mE1fw}y{x{DDXr_JbR+Lm`_b8N5$xum=w4D!40yQ{mK(D~A3)(tvLxC#TEQZXa z&I@do+Qs&c6$laNLofuU=)skNU$CaF>RN z7VJ0akCOoW4`M*Kw()#&{C*ke(}@rc*&q+3h|w8+q2%3Ur}>Pr0CI?s^R9%hpvVXE zGNJPw1Ey{jOI0L4O=S7w01nBXLyWkjc7~_iVb(&Il`Tda&y~OauP4+RA+)1?Cl0fQhj_icQFdzy*n|5F(V>+%k!R7ry_B3adVRvOmHC~(op5_Hwf1{ zZ(it8r%%5U`h|=7PTU88pcsIuUxe!+3@K#goi7c1Md8 zmtR;2&{mC{?4;L22}2DXDiF>qjCAg}+a0X?$Dl+45$D~Rf9sP|53`Md4zPCNEXO)u zJU$+|(zyLY=d!@1>J&Q9(&FNSe@x&c(Bij@7&PbuZ6k-$KS7aqNjYhuk~@>hCg-;}S@1XsD>Pcz7DG*=IQm zsfNvmOu@NUah=4Ry`vi;SoZE0z(FJ$R!DMrNIB)-IY z*xh&=$9>mKetraSfSe8lf8E@Kty*|6e@uQ{a{W3j@@d00%kc0(IYT$kHws>PyR3|L zBGN`Lz~Br6A8bnfK--9aVWYyCfZ)KbXzeHY2uz&}8W+L(@0O4c8%iVC7cGD9Rf zJ;tS=7}Q3;_H3eo%63a*{`B*vuO%2_y)c}BTBH($ z{r<@uO-X4Jj{>WN)qpdkn#IeO%|CaA6BeS^ub)4IKP+MB7x*0@x9X*)h^F@V9Pm59wG>q5|O!DK$!Kk;4A<XG@7Jj~+do z4ow0*I>WetHA18h;53w*hqJSXe19ccjytS8heL->RSnT@s^QUC&@e@)tpFf*11OAj|Fk3tIPEE|+gZu?? zB{@DN0MAeo6)huIu?cXi%WR5%uo5M0JD02qXspO`FxisslfP87t}mI33lR456jsN> zV>^h0TJVwiF21#dsMVpN(|zXuo`e53t1B^xy7IBHkqP6&`}Yg`ZyzV489ncCmoM!2N3qX$0b`rdoWj>wU1@V3YRWRqLA+C!vpqeE-Ex*^7)Nt~| z39VkeMp$mZIAY#L$bVEUMBsfRR+c<@qWNRKwkFVa&z?Iup9nh`CY(Ndmiya#re={W zOcj7u;;Wd%4?-H@eiN+%tJkzpxv?%+N}lm95|?qQyKm-uUx<-y z>0NyZY;A7g4hyP7=yRu{8EWJHLhBoGRdX^{k@3}AD<0L{7|1k~((uOmiMY~Yz$)A8 z`T!BSqyH#d{x|({^sl3es^45;-^Tub_AUS7?{i4x3SZP{&N#QI=iUog|9RgW)zKy; zmVfHUpa$H>pq1 zuNONKatnU1!R96Na0`oc5Enze{0Mv}MBs~A+Yg)(&avh-A-=+AOIg2k_qZ8xP1`ty zdWP#9+MZF~UZDTvqne-lhk5Lbv-3p};hKLFPhWv^;OhDw@~~T%2&%OX zm?#F@T+N$LN#kdkX7Q}|ro6mx_+4;9;I?~pNq5I0(r15*Bl(!=6&YCcOM3azBq4YO z&=h+W7(jFK$ZGCsmi3nhGG-V=Fj!_*;K&B<(T1u#2qrol+_8qL#3^sPjTF=JFjCg2 zy7kHuHPF43v##r=l!04H2vB%xAj%8@j708CpDwqsUrdV@$c6_Y_6qkEoHlle()8K0 zsV*k!LK;fuPvJosNHN7b1=;whBnLncUoCBu&Y)%`40>R~g6UFb(@%L}Xpmg-NK-WO zWSrUmG)H^8%RyY$r@6L;V<9l#*Y`3D_U7K-zeF<@Ni56LPY=_Z&6JVpJ7Tt`ZA`!= z1tR%o?^L=!K^zsF6t@b%Hzp3wFqZOB>vcQmDPV6|*=5F%EhVDFyi?Nz%!?17Z}6Dn ze(zp)aq(W%=SQ*8(SiVMS?fP-nmTUrmD~H>4@==6WcEFBt*jaHbdf~4wnr#x z9F`yhl+G{~6q{#Ho*b2eGb@05aZyOtE8w}j1@T&fYd}*9^^e*T{IgAAF--ilus&``Z%6IM_n+~+Iook{Q%M5 z1i;|xx>nW0FMQMwI-q|U_J6ssLnmuN$QV9+IOxT-S?~HU6aEk0BYVy#}Hx~wQxy~VnS1MQ`5JFb--ANTW=c~8KD|jKYwAd zS&`SSG9X_`fskjRNKGTv=@&lj#g)~Q5%u|vaZc9qP*XY#_BtD^o=ZThL)s({AX(eK zZ5x@D4=3BSVbq#$M{v-iUZ+syLJ<;y1I-mHA3T83_Jv9t8?NwH*tM_vXS0!jH-~{+ z?c29V8kre?*R=&LWT143rOXugWcVeE7X3Vro`uLFihZe7O`ejTnIy0)r>WoPckjM@ z`^HK=I^sD5pJe|6>UcseIT2it!w;+t6PEDG5Xj*~%sFI3EaU?_PKb{eSv!J*(RQ|Q zYDR%`5Gio!I&?@7Ak$=3F!Px{SkdRWE|tjO!C@HoAme3XNsY~2oc?cX^MZAGijfYs zWLF7Kh5g){4o1YEmgX`ZW-}KBT&p`nt82T1K8diMX*TGBS=rlr<0@uALOxhd-t!9x>)qUz5Ymg(TRQ?@6^j<;0b>%q zaiG)g-u)ga`HO6Mrdkk#cf@|^pw$&TrcEnhk)Ul?^p`Y(GDW8VvvCPWrB-qx5sm<# zxSMw~CJCBtL9PE`qs%z+CopDGO+dJWs(+lDO|fRy^1&yok zx&vrn%*+3lk&}ZEf>?yw`6Ir@Kyb$|*^29{F8%$txPq}s_1?cD>1X8R;t02t+=VTD zcIy>x#`H7&hj7ilizxop-H@`fJ`f75N;gJ61Svw&a4<`v(ME2=8d8HD^jQ zKMpcU;^xhwO3OW9e2x@Zy*Jnc_{-`wYYHD|JNeS*&?l^Lja0vih}1VGd6eu-O>&=P z(J8Jw)hUwLb_}endUq=+8}-+FHTxKd_%H9>+gxwicjOv1q5SP)5Y-7(v_uY=!{SgF z#W6-BbFQx0S&u5hy*wzvOD{lf_d;rX8o&LNKL8upAJU46%%Fj|81dhovWg;CBlyI< zYM&uXu);By1{x8)n&lG_ZG^c}u+kJwWzC?!|Me-G;Gw+dIlX!PnjPg8=)47b*C_Al zU<~#u*a?XvE@;3!l;Mu|-+f!2esIt3-Lw*uJv>mJIvkorX9Fv5t4mu`Z4}!}(39t3 z)=>ZE4VFtHMT*Z=S-Fx&gr*z#;VOdG$VdrlgusJ82ZMr(i|^ei#IJbJH9^#+heWc^ zFQ{$&_TSS^;HmC?QHVc%w>rE-Tm(Z>L90QLOG`n+Kdt`sxHkRd^RgX-uptc+P0wsY zApdnUI_FAMpwA^4(u}`-`<8y#o+e)qMvV%mYdIS-?&Jgc;wK`zmODYQ$SLvop=C#{ z@!!xm>Vv4=J$>@@emY~#S+p{dC%0aV9gCnYHWtm8tgkm(90)IzEmlgn2F0$v&KO^z zlYaB!U+xA(Lo)9cnbJFVNMxUzd;Xgu^PNB>2wb9)LI!ZWNyQmLu~|NKOy?LES`qaL z{3N73(4G1j8O16dP)Qa+NEonk0v>Zi)S*z3i<_I9!+(BDINFJzCVSFz(9B?>u~BZI zwjp&HmybROk^)V_!&HHlzm(7sKe3=6 z+GOJ$4C}i8_w9zLZ0ciu7w3$*K`U0U5Rs8Hc1j}EPs2_2OP>vD4H-@7o_If+Z{|bQ z176|dMSTu?dsmD1y}WExcsqo5akc2-Xg~>qnX#FfsILN_V{&F5-Nt-0fz>wj+@-g5V$&IQt6xgL_Oz$U71OKovvJe#-J3 z97HZ1@K?eA`K=j!K1dONZwIjhxj1yTR8N$}OeZP)Hh0MBE4xI_-_1=RX#3w1S1$lR zz2G`(Ygjhk`Sw_4*+Xbc@?E=zTOWM_+>tspek-7PvL4Ty>+FwNFC!nlwcRPOC`$1( zsqM#$K^(f^9&7jJ&V{T&dvu=t5&Q{-7!<2E>u!#;v(wz@L}m8VxCcQN)yT3iN|Sgr zfG&pIU#z}4po-xi?ml^viqdfY5{OOGLe1F*+8-{7gdnON5)vX~XjX0*G;*@?5O30? zm)Ic8@YdIB>*)LE0SiUs8k9f1N4F~bD(pzuvJghkVfS<*`fA3=485cTh_nPh{=3)g zgYDuN8LlmZW9}^*GTJED;09O>15sS}qcJ@(@m8t5K+frgi7Ub^PAw+KsKhfeYK4Re za`S;BVU;CseN1%hKVZOWj*t*>@Zf8jEj$wIK7ZEH)^2?F?&6|{$7;*+n6Kz>MYtz# zMgfV&qE{cz0B4iwDyt&Q=I%vA1>*#xBeD}MIH+H@$&^00+xI0S3A}G{o3Zxf^1 z;3-q@+`MVQVv-nAH@FsuiP%iDj<~+jT*jeIDY=g|R%^cz{jnbP`9QS=>R&pBJnP-| zM1%<;M?~#s?7w1`6WuvypBA{?W-e4i4#cI$HIN{16#z>rtUkJ6$oT)|0#t_sXp``w zRyg@df1*AfHH!Nmr=*1|w8x4S7L&CI-Eilq-arB=#9pAv6sKQghs@(2JA6OimhySo z-Vr|k@Qg*zG!k4rcR9~Kq}p?vNz9S~I}SOz_DL|d)qA|#RNuer&h_2KWXO1azrSzW z`GxyOw*dr5382%gV9gi(Jc^vf%#9Zjgq32l9UDnsMf5nUS;p>a}axX_^>lb9;Zc&t?9o3m_=X+|8#DSK-P=6?mC5 zj(Yyk@%D0Q_40KXTeCx6q+xgb>5x?##qzE&Id-%q&^4jK+Y|u9_YWs{dRkan;f`|D z#eoHGPo6y^_5$H`8DXE-)l|J))2;t&Pz_*ppvS2EG#vsylyY3aD*S;AaVLXDeEK?x z5#aRZ)xX)*aqIJ@kJJOO4x6(sPd@DS?(s>TkR(`WQ3VdGf9x7OM?nBrd4Yq%K)c3I zpYA;VI4YCBi*<^-J1iV=ITQY`XU?CWfA%RZ0Ss+ioSfu28xs#rq62~^>1=8C=3Xpo zw(}z-91kBaXzS)BVJiRh=~GU9L*O`E${ANtC<_tvSHIWzo{A{(vgye`Z3}UbmO94d za)j$%)G#`Zq0IP6dq@IEutgoKN^zbrd2&?4ngRZjq93=RFcF9^*K?KyVM;iIo)H*A zqH7eIFuwx-koWCkjUfbH6UF<-ek^d3#~4Kr_zq4fw-oQ6@+}e zK>2LXo*Ul&-1Tmuo;*jKv%+~|C-mfL)9&88Mvft*Wec$&RoxES5si$%Bh?jHAmJ+BrZxwisog*YsV4dz=WI+Zkmb$ zmDHFNYA+BlN-f9dwVKIIWDnpqB)co{W8?C{vuzAWGEd*OXAd1gA>)qGV^KCgn z3y_4v#MvWzyK4Vy?_xDZsYaEZZT zOUU9G%`u=l?2}^X`C%4uo%hgPhO$vYfM80Ncf9*t7QUuPz)32h`Ulj^QZ$68yDaai zMfkvVrYW$(@L_W^nv7c(WsY&HqO4Oy$bnWMQt>Y!U0EtAAyCSZGB#H_`Iv|I=b+(O z$OHy@_VjD(F0wT<&w!6#T2={(1dUSjSEa9}Yw6@+61x-rZZz81=-G@ow{1zE^ zWo=>1reO+|3Hg${mt(-TZOayT#Uohu@!%_`7GtoBVWy*kHNzvm>UVw|@~atqd}>}wH>xEPrRnSoTTZ^i8~E41A97)$HGMpj-ZkCGD zKzJWDd0Si+$C`)E6Pp3Xlw71f5ED>S1Oy;u2@xXDv|gSW-?~wJue@|oa&(DZag~Ou z0{}gMV_yu$b7V$``t6UnnroeE^^gisJl_M0D1DMNv|kfa-JN1y9D zY)`t#s29=RMscYTv!ZVza=|2=*-7H2O$229)*cXp#H9&1?hdZFHj|Di#Mau%3d;ms zZ9YN$EL0mzpi>rfQOC_$_AF<-o7?d#SN1kEp#;M#kDuryA0@6&Lvd3|{q5pHkR>D3 z=c;y-E$X(p><}#UACfdrOAymFHnK3Ood)guFxBSE5hN~dVL(6tn(T7{CyyPI6skC5 z*_{$8K^a}!&Ygb&)4-di0^T9tU5My<)XO}57eF|3Ke&t(l&Uh$p>IJlP)`Mp8Ak8%tf(j|;OMbqlRP{`(|FrE@hw099kg-m z9t&UDOM8bd=HFkFWKXt(49K{3$*?`Pr%O<@#8kbz;T1Z2FgXSy1;<2Zfe4+dJr&%-pgmX`#rCOW{B2>T<# zB7Dg3_$|x%*YSYax@}u#cD6M;0NH#1KmfYM)#Wv`|NhkxEQ+g?;zV2CM+UaAXEZG` z*DK!eGMA)7zs$6hcQF{}M|4X7nv#lNDf@s%slbEBADZOZMODaW)`KSnM~+=lwn9EY zCJ`oP%DJX>h@0`tnlS_G%72Kw5&|SsEM(!HH7Spw_9PW!a^T)8Ve*Dx_^dMj!(+Vl{=|xmuPtoT&BAOE;LsC02(F;1dzrX zAc>HrqjMypS_dyRNg>CPS&f4bhNqXifKt))FwCG}aq8b+Q&F;OfHxE~3KBE&%S;#ljP`z_M}Q|m(sJuqrk9(aK08l@cQmF|f6oA((O@_G?HD3zJz^zQf}W zO)2wKoq}IMtsF@lf0+4o)3M(>yt{+|xOndGnAB={lLIof{4Qve8>_-nfOMSAZOyK% z|1}MErd#`{j$Y7%fh!@BQ@9s4Zw?X5OXs^#K$x6CX@#ftyb+D)=tGk(R(?M9RD`H| zZyW~8nf%0c=i|2-t97~Prrak-|21TNK|l!!4s}3XJqbJ?7)3@8k^%@bo3FxI#u{xt zV#Ex#HiFK&Y}GSoUI{?z6srh@xB0;6D39ygnXF3*=a*M2>G7Y81TRKI%7r|koafel zrOF6tEYq$K(e=9Jdxb@NmG#?mCye_HFOQjcvDTXB!+2JdR%AfQ+wrZYVs3$+u7mH2`BRtFN9#KiBw=&yl_TfBg9Ie( zq5`i7$f0WrPFN(za;1odd@Wy%-o0HjJnTW2^qV_IxeS&PkWEgox{ISGwqGOmh|A=s zT6}zTqL1LkI5>0nv&zaI0+9@t{>YgW%(9A_x^%MGwQ-itE&daOxM0+gfK{d7n9rYI z9^*Gm)?jAK%)xl5Up$K9o+3OL7O-=_{6AOe^)>_@4t6ZuiQL-MepA zzoi}3D${gfHbV(HY3T#E4hRvXOR^{J(-->+MwR3GxU=0VHz!dZ97r~ZTXX&g*_6(>bg?M z3;A>bdeId3PTKk6;k&}1bnDI6K+`IN`yQDxG~Jz5P>Qm?;Nyjl$6|@im!@S8xQdX< ze4u(L4z7hOBt;`lnuA&cnQ&L8L>^z3W*&lI>8x*xLeepH?_NbgUQuz$@*(D$%gCz` zxZI7l696s)H22=94l9MhrGF8=5)j@n`+N?W97!>h;~%rswdDTGbv$ zrzpiq3D_Xp1-*`kJ&9aI5T;(fL%{Rj0vMQ_`H^wZK}*iW$tPXz#$n?Aj-F zQFQ(D2PYzP%;?b>WRV7$BCO12&ALoTpR+XIOZotIK)ek6d9Y-MS3y6gDR?nQppkD+8?b+b?hc+>C(IGADrg zqc>*tUS>Gk5>KE0LMD7xq`8644G@;U(1Z14<8W2MN_dXKo0*9P@=|7Hq78(EfXZcb z3d2W+Jj#yhNusS?W0Z+gWoxd8|(R znLFUL3?xh1ycNJ|!ybZ=yCp_hVZZmK!-wYsv{4B#$r<(D7rPUDB#Ot;ciRo#6axP_=Nla)V5cE;kXM ztHDM_hoSE}iuV(PkY7rb>>%N{$`?2~ILVXj-Ua_e9^Yaq%h!!H1H2PCT!_40pEJ>< z4rrv{hdFwQY^uN2<%p5X{P{*ZUA4@;gn>!Fd13U?I1=gQ`EB)Or5RnId@ThMd=J=9 zv96ggk`5>VxkGYRsZD0z-2U)(05D3Mn(*!8SMme2JB@F+TdXSq4q=(?U`L`uSnZ07 zeStwJS1K;uHa!4G&f)lrQT;G*!y%j-Gv?$O+O8>};mSyv9C@*wrHcU$ zEUmkCmx9w+O~Iz%wR*X7A$uhNQksX_f{Q6`W;(z-!}JYf=I_}--#Ow9-C8e;Ap>S$ zl_|q52skd25E@Z|fPd1E;5x^7QNXTWcEo;&s%)51lrf_i?J1a3Lw`$B)6^UeF0fV2 z69PpGpM&oO2nO?klJ(fZgI0(eKCc=)U;z8UfF@3zJEz5X1sAhtEkBCA!X)elrw|`H z*^Z(WAeFs~1M>xOhgdj-&g+B;_FF=qbaRJYc40##K5cNb?V(0X#)~M*p58ROYqTg zGo0*eURd-iXf?Y>VL5&q`JOVHQl>)g!#*9`>OsT{rQ!9qS5tI}(d-Ymjt<-logXTFc`Ob=muhy==$gVi-x>TRM z3jnAT1ke%LsL{tiGsOuB4ra@!+2_A@o2U0OInX+vY$YYD=-{qFY~!Y5&Eq)WlW0}( z*n=O#H=COiu$A7I?UAf;5IWoBbtzQhgJ+z1&1iAMfSEu@LIjmw$Vzu;dwZSrAz~^Q zRzOtZaiV&21hPo2_aYZ%rT z{}tYZL=DrK+-0vFQ!icJ?&1^HZMsAAoh^D!@q0a79J1~~%%R$-^?%%d)Tj>FlbH%P zZ%FozS~!{q0X-O6a(>S|ELV}WA;V`b6ZSy#L>5>abDQ>`)f<~``n{>I@3Qx$xV(ZX zm2vi5m`Nan5&}>1jlW!P#}<+Z?;Ft^2fXWi!P-Q9F~B*kICUz(X7;3`&XYFO)OZQ` zyqpABbm3zks>kfth+6n(=#0T5`fdVLVfP!Nh|>p{$n+L!8X8J{UwA;^MJ#=O83rIc zhhzWz^QLTx+gs_b0oPcuXXqLn)U|=SO;UhK5@sWL>$VL*@1yZFm07KKT$2bpPLu{K z;e=B=UcYgpYuyz7Z-5>m*J#}pQ9-tS@pg#eA0RSZ4p}bbGnRg%c<~qY#CM3EQi|8TS|U^GRUbMp_B?l)MLPe! ze<(!ojhihi80CoDC7z{?>eJV`)Eeb+LUOY6^~4L{9_${mwr(DNms~P-Q{PqqmBtb} zJX9`@hO5Akdny-F&B2>tZ6)&%k&otL_)=%V>FJp1@RIh$#oZu=5Kbx604FHXfWm*g z7^kUNg7F`(0V*>&BSF(X65(85bZwM|G?+k&P}5qoYObt0#Q2rtF=3ak2!bOT zYS-*aLP$4(XT}0-4!vE7ULzkMGulz}_GhJ^F9K8+aR;wa$`DP#qjsc>rmSRhf-}(2 zustsZPxG;n;5=?*xQu3k&Ie*6aHOX%6CZ9k!B$qOZ)x3d1Sg0ghFDmDh&WyDl~mBy z^9pMvbak=3sHm>4ruJpzcJc;touOX&qG1ZXt=7mjQ`k3(o>YjSIcIO)xf4EA*L1b5 zcg}v9!{DD86Syv~4!6;(SATPz2+uJ(t=XVhM5-I&+zWqQs$IrTU4_v0wu`W55o`d~ zuy%Hm6ookCaO3+b893S)7&LeNSnTzz55XQflYY9AHI+7tm+SqvU?VKb1$l&0a!SOW z&-_2!B-J8u^qHFFGc_JqTE`ILLhsN@?$mYOb;Lq}U?BDH@;JhgBzZN$Nxu`CvmA@w`pw)c-E0~cx^jqd8m zW`&qz-fRIm@YBy&L;H(?I8dW_N{^pKA%Ox;|9Dw?TH3<-^T!%(2ZfOkJyw(p!TfB} z5j2;V!vPpG5>H~_(~5dJJRX3vzpQNY;+ho~Uk46{_UzIEDTxUM*v`M7o@)rK!Yz3$ zuAn6PC@Cl~V#Jfs!S|I(-*8#Zdogc{osy?WFf`3NW7NJVFWu@Xj%V0=)5)&-2j z?(n06;Gk0xZxVprR>Y|t`TKA72%#fmf$N_UYG+NQt)k7%%vkf5;+R3JYyzY?3|{Z^ zt7~)P;#fSEC~T(HZu#{KOB1eqNV`?)cZRKp&osasvv%*^9Z;=fo;q(c@K#*W=$@Ne#Gx&-4w4yxDnH?V zhaF!xin|2bTLMF_bc^%h7YG)h~=4&Q*X!k@7Xt!dpTY3#p&PE@U9_YszEBQ2u1o{ zB)C6bz#4!Kz~4tm*L&k5ME99Tq-C4;6#fdjSsN&J&J3=!wFl>0XzaN&c535ADp;eJ z&n?0Qj`c+PUGhHhm7Ycu77ladtSqN>PSGQFA3b@p10P9jNlG41p6=k=E=ywt-w{tg z>E?`|ge$HJc1*AF$nZJ6C1r?f!=^J2&KVo9d)$prsj@5kA7b!7|A17A)!P|=3PL`% zVI#!{;14}f)&%J1Jl*zy?{JhQ6vd_n=p8?dRgG0oUsZkN1qcx&(et6N0m@;7!mnpg zFATO%Zk6ILgT%GH-5(zBKavqMfEuLID}O}K-Z$;UOp16mCc;Uuoqm+ZVHY2ZU@IhPZqlQpNSJD;I%+k1|Mz&KO!hlP2gaM4`Ub!@=eI#QmZYA z2LHlEn*Qtx+?ZnPU@k4`m?TB5$w7mX;OzIunl(0NelQco<5>D9Ksw~qasVrwQD&wSXI^RSIdHft$>WC+^!9bR~@K% zd%rYf8^%WT=3>R3o^CpLu(pOqE|lF)uJY==rH>w+zrIx|`qYIB_|a{S56o|C^pdz^ z&B%ijaN@a0O!xB2uhRu*%JeX0{KYkRbU z736sp#}+zvY6-x%B){(rbuwRBHhkq(sVVqBIO6FX$J><@Jf6a65M}fn;;n9QWd>42 zvStX{CH^Fra1%hI?R)mA*lmf*k|xWoF)_QFF?*Ty%O-30 z24>)Jjj)Ax&xU08_VsHAd5$B4G^<4qjIYfNy!fg1hYE=heYd#Zouii9i5aFYv_;nySvY7A*{~X{1dKi$1^f$*9{_iF@udussBoC z-O0fXPLQ_xxn$wO5lfz!&ov4Hrye$J*^9fiftrf4?P0%riSHFQFiS3&RV+FEk7#Og za{SUjq&#qZA9*9+N3!#dOSbMQVDy{r2C!^Fiy&|~j}Fs^gSD-|E2q@J;;;8p=&_3L zCv2gW%$jnGsCdMm{cELZ+Zu}I43V*5ueHzq)DXz~u=;Rhrd3WTfsun_GNT1RIjRyE zfq|pG(pd@-5EC!`x9$ia=wL+v&7tY5Jr=2>WI>w9(6UjHi)0HrdX@t$0(M?;i&nja zi&<{GpD2e;a8|wWzQ^Iope?!|pPfr`GonktiAl?T-Ecd*sv9@NwU+26Qv9r`iyoDi zw=|v*Co(sWh0;UZ){#oOZnOF;%Z5Hso`<>x6xk9nvMK_qyszPmEC_vVSGnc%(6S5N zQsBjer&sUZ>}R)Mub_9E^_c=L^(rrLJQ?KhC|x~pcwg3HfxoDHZf2YckGmebPmUMl zW9kV(U^AzwHdBCcCwoxJi3)V{pw})c*G@B27F#`XnOLnf`z@2WiX9@5@YmrQHg7G= z&4<&}aFhYasECfy+h8!`_`}>y4rncch=H$vZ&SN?8fS9Im#-h0VxwsVvHmcNCJxfb z+cH%#HVJ)|-hwKCs@U_B;eZJS&;gjU0##^tdGts(w~kb(YD$SjrHU4D!_%q_WLZcQ z@)`J%46OM9T*^LSM87tQy(|v`eHA~uIsdFkbXez1BXgg5X2Jx36WR-8tXjQ_Y6Gb) zP-D!pdw6!i9~9pY3Q9|jEiEUx3^7l=+npFiT41UWVD$`k8cs@-U%2Gfe*Rqj(>!}A z6w+)4hgu&EiGgPW+bp1GsZo~_oA9AWM=$fa*Gb|iss16ktkEG<-kbdpBx*ET^M+Aj zwZ6c#t5SsNj?XZd9ywAeu7|QR)OQJi62Z?>Tta^0vRcj85pma3VWYodG73vpT3L-gb09em5|@Re~bU3-x)h>t`uSzChp{;vp$*;j-_U@ zo>Q!{7L$>NV4D#2w|I`*q{CSqaQlkp?d5Wt%UJE?3xY>rBj@L~!9aEF6L*`D9gv%; zsy)>j9vG{cZ*VW^&{U@SnI9e!ArpLK3mK6(I$*#>riRp(j5awM;`p3(KWo1ypUe;= z^ED`WIwOMo0I0~+%G1aFGcRxMq)A^Hoszuiz7gzF1KbQ*3-NLLO~0I>g9iSma>68@ zl?+C1_%P{8_Rxz4l9Lt=q-Nlxs}Q4qtlRPp*a&7ld_nG@jw1ZPAOf0lmU}%2?z39q zAR}Yr__0}7G*8Rf#mVl=HHMLmWS36KK^{~J)*Uz_Tj0(EHJ#UinJFz$SUbq`NEih` z*mM3Gw&~qo5lvxEz z@XP%n_V(I>?zY6LcoZPsMX?Zr0ztHu3$Zo>Oj~v`nZu4CjrRIL8Q=*Y=<%aRiMJx) z)l$w2`KTomO8AQ~EmzuZMKqQ9;tN(n-!kuhy0xL8tzXlb*$CyB8belXvJK^n5l{%N zN_w+_;b)QzuanwSOlMJU$IP42VO}h}Nm$kEK!uv;8OWG~0MrQF!#C6>sJ=%F`iP1HiY+7sNKpua!i(co9Dmnq-qvxY zjAc|y@_t)iKgMYL>TnOFRj?2mnz?{XPWE$E`6jz}Ut$U71B{K~B5A6qR1{kGZk~0& zLZN-R^!4^;%@r+^o0P2HSij;s$tm@nPIHs*|DE`zrlYg@SeWj#lXGAEOqn=iM%wca zx#^&mc>iH#8E|p^uVIkpjNcJTgb3#D@QbsS?*DbL4%#j6KIwxH~1v?rG-T0A_q@C-Qnp5N4(XE|+9Zl6@p{%iZztr-Un zltYA#92c-`*)SSsOH2Kit}&E-_5%mHwyZEuT@`a@KJBfzkT`4X#@$${xNg6#Ax_b9 z0xE#C%Io=zR7oB??umSeNs}laFm^$t&ts-u`ig-GR!Z?rfAFY>Gr|RS=V&6Q_pqoK z9VLqXGVCfF?o9!0rkinfRagT$=FS>AUN+xcEp!po8D_OT)zvw281dx(6~_}4#QAvA zV0fl*GU5+6NXne?$9LWB44Pu ziTerp0dCocvU;|C9!*du&{1+k2ZHu9BQH!A#Y<>Z`N6n&1T8q!Q;{LwyEaHl%zl?V zKR>ZX_ZuV&#y{WRKm0&%KqpCO1@)ElSN$pZ)_M$^Sm8E-sRM0isvANZO(7qHhpAp& z#9iRXd85#uzUxBwbF>PRx7Qy*$YcaX5Mp+ZUmlMov{XU(h-|%R&`+T9FfVgWk}SOkwGR=!Rmx z&9I?(k8#v{|G`ln(FC05W79B4=mX26>KW}^jHAlV6t!q`7#gmJezvrnnvO~1VX7!8 z!Q<9<@EprDJ4EA|LxPS>$8`J1{F5h7{`m5RP4-8Ra(dR~c7L|ksA?Dt83-3wuUv8V zmy&Ik)6EY8t>%?qf&xdCCnC?FqDzA@C*KS4EW~7caxyEMe329T`uO0dMHJ{FprpH| z94>wMECijCk)cDw+qVla z?lUlm5|=3OK$*YPm6=nCq;KctLsKDtQS^JZnBo?>m|FhZMa;~vUypG!x`*8!)>e-3 zJ|O^7fU88dP~30NTPL>o6K|>#YIURWVuH8pQV!fnjtS}?KNNBO{dZ}5=se+eVH0Pb zcAHbK^Vbk_^P0gAf|xt*2&cu?jh;7nwTXU1U0v4Sf8(2kz|L7lCPuw~N405IZ0jeH zzQDe#;mlJ&$zVfpP*vaBx=7?c*=2-oNlu84jdhf#0c65gl&)=w=?tlr^E1TC>b3O^ zb@lR8cNbUJTcpzV-#_L>W(Cgl;@7feN_uwCG=Le# zJ_m6yCXPfYZjsNqMCdY{MMWg(w) z60^T|RI5R&f0?)e>xb<+E+i8T+~&achb^mWS-d1a$69RWQNaCB#g`vzK!|{eu9IX z6xX>+o`SVUy{T^mYs3SKS1Aaf1XM~L?=}mYF-2nVGibm7)&P;2C6)$t%BP6ynORw! z;%j@Hr;Qm?&wDg3QHd%DHW5pU?%lIJjG=%G88!^Vp~aq>eVd)iGp1HRVPOEK(FNw6%l)Bgydi9wTdy2TaU zWO>h=Nxyg-*n?8bI_FX$34-WliUNG#P8&+#LR)>P`ff%#!vh_n!>?25x)^R_Jpdj3>5HG)-J5Me%&PtT{juJF+k9v5h)N3N2M^Q+yrW$TdVF`O z)a$|(WF2gfChoR6DmEk`ZsW(lqvY>wWDon|&pwB93STL7z?5Go((ug_>Byr*jyna{ zget^0e9o$8r@=v36LssBf+L|zPDo|b9(NQK_0h~sOVHHD@{zR`LxvbQ_Pp5X3zv_B zbHG!^jA?Gm3<9Qmu}=pUOU0-{vJ7rtWP*re;V6V4#AF7RFhJh=2i)7IZD;E5GYK3& zegK1V&>m_*y3Rf$*H|SuOA3T6h-mYCWe?9OAPl{^xBp~DhG-t1gKMG)kP0XuZ{2rxJoqIF@T#hhb#*XFB?RhwhU}S%9)@0)X;lN$B8qA| zw=^;v*3#A%-LDDDJpP1LtBOf165=S1Yh88n5%c~?qHJYvaxmeJ zfB-xuz5zNJNx!q4HDszQ%iluu%E&JO++o5J)?=x+jVY08<)Vd}sLraa95Q_Plj`dI1zw6e_I({&coGDI?)1nTxA-f{HqU`z2KnORRkMcR zOJF7p>_9_EYNciJi~`dj$NcbMM20d`yhgzg2S3M zKh4g|0bZEBp^t!R39fKtSbsA>aVY^H^Px@NENDA|@O$|cHm8&i9RD5!TteV+tK5DD zCwj-A-5QJljCSmvVQtS!Ou*bhG_^h1OZ2C>fxh)bop71u&~&A`5r|)7?`%E=5$t1bIWs=&wD+wpf(UeCu+{?NpT@vA+SCxQCbg% zDnu9$+sDXk*)sR63Xq&`dg2Nj7@rs;;+n?s<`GqcaQ3~pxj?=PFb=cba%)dbeAXE1 z0yng?-kHb%5VVgChtHnvcGj`}^zar`jVG|6{?10xx;)H105KzJI)#b$MkU z!gJR0Wf0%e+QQ}9?d|Oym6F~Wf>-GR2@tCJhZ_dznVMpP^A%uo?!NV04=TQkX9MM# zGo*g61IXbRvC?SV0LE{SYJ>=A3+Jx=%Ydk9-i#$y@Az*_J7|CJOjvZ~`~Xu^He}JC zHw1|gj6?UhqIWMYTeDUD!H&zzUJ-zZqIl69@ywFGt1ilZpu^@guV>fMw^UO* z2q97elw7C@fOwl6Rhjpj>gmxlMUD-{40PSPE2Tp=dYOltLI>mEXSz|Vmu(;6I_bf;XKuLtoj<4>2{Lx?k%W7~}x3z4y zR|6z?^(v^bYJ|j@;pYxtyhu`>;put$-?iLFYYBnbOyRw+b3mfdO3k2`nmd=0kb~u3 z6@=L~75iGZOHlT5nt$WabYnh$)bxv@ z#O>R=vz=2M-YZhZq{Ku`#jy~a$@s9*nb@xJqdn$7tf6{c`#iRwExqa7Y`zWVS3`j@ zK^aX=H(vLV5V-mkUBjPaW3t1x$^$$S!X77ynHA5Y-@x(SVasi17IcIudw-P&Ji}!O zjE(2iv~ACKGOcm{2++}uW1XT<%YaGH#9L@4BNO}L-~DA|N&FUaJWXa1d*Mc^T4wg% zYudgU4+63=Do52?XUZ8SeeCQSJNPjljmyWgBHWEx=m5(gY;;dmnh-)SaJl|SJJ-ax zzQYJF5(0nPDyS+&PtAg%eFr^Qo@R zm*~qnsZv?bi!oj{>LM!)juLP7>dLq7gnvp5fND<%JrQ;qrKLA$5Qq6HNO(quXt&5I z0TLHUWdEwMGWK@LNT!_5(6*guuac68M{d9BTLBYkSDZiXB-TPm5f?IC*6r%_pEs7^ zz%0V`kg8H2F71?o=Kzuc#m3n>iN3p=Q=;jL;YjV6`)bhF|K$Q~6z$T52o-~|$|207 z(%cTC7QZz6?EG$DDv^b(Ht|m^@RE)?S^pK_kC8pU=oprz=U-dOu+@2rz9AN0^taJ) zT5KOi7Pk2?x$c8w5K3S5jhu#tF>sK(*ahJmXg21>Od9>Mp^P}#Wqg{H0$6(fgEJ+D z5CMA;<}Ykqg_!#y^d44JOefyGp=YBL!D9EuU-jL(z z+3M^UajsvUU)txhr47FNfA(#w6Dwo7Loa4xuf^~R`3Z9^-I+96<*xV4crnq8@&ZZi zC=2+ZZ8DX5a`OmH95dAfE0R33ThDH=AL%&6qUq-}Xki>c5$*r_>U!6uOFxmhzW%zq zW&3spz*U)kUX(iII07Zcb|k|1ISY`d!En4=P)x(GRQzUz}&}j76==&66Ff{Oy z_a>GmrmJdbRDo7nOXhn!137$VPU*E3u29@j2%OMyl zyBJP#cUP(?^nH0#{eaqCfI$P%F^f?PPyl!2{pZhrWLG96Y?+O!VAPL;u!`U*NHS3M ziiXC<$=~Lffob;M%Ukcv&oYkTDK}eU?->OZN`QqW!JzwyYKGS^-_A1q4nR0Z<_@Af zNy$(*ug4px0z1bn<@G=m5(3wU!3J6_WA_pR-jTGfo?ZbJ5k5QnS`4V_zx z?(jSSIT%$ctBf$V?wdO^MtN>t*m}a6av@1bLO_PB|N07qPmZSZY~5%N5MujB5>0{+Derbe>^yPX#7C`1wF1pO+!sJIT|(!$iGg@~6P3QT5(S|HzI>@YM@iG% zi@v$D>x?zyAd*#i4m{cFit|my-1E10_B?)NXvOSX3#}=P6Gl{VMc${U({Ur6tQyJr zB)IBEBRiNpx%u+W+0qBDT8LHxLP_mQxzz4C=`qUeWpEVhl>```PRYe{~#Er*nN zV!0NZ#tA4_+%OV{>huUw0RIZlmJxwF?J--Ie*3NeGu=1LwsdL#i$ytXh&@FgGjgP8 zXbl?YykI2kKNfO?bG+$GAylTjkDJs-I7NIE^1*#8PLTc>jpt;yrsip=Cn16QLWhhM z%n9a85RS7<=Jz_Zqn-Co*z0H6z#!{iUX=>Y4SwM5{UsWjVmCFjGwj z{R1iy=r!NLWf3#~o^OD{q;z)0Vrn&;$62LCDZpYhe&OIcMwy2)v8rFA)k)d~ zDvJA$2+Z;d{Yaw4_RE;50NI1olg6-LmJw2iuh5Sxid05hgqkPAODaq>YuoHTlR}gh z^x1oABsqbU8Fg9e*n>}i5PHzh7_=xVD5&PkD#{u-QghN;Q2D)JqDk%o-p>>tE$9e3 zv@e#0D>dSf!-`b`U;L$oU4-l?%Sv5Db-Dqpa7#XVO3gL zJ-Bmc;_KGIVHPmnq&f~gb_i2(8Pub52^>wCUNk3w2B4ubdow6C+seEaeq}sSg37}! zO;UW!I0~X(6GZfp8W~ejA)l107tKUMh~SxhTSBS_Ny4L0Ldg4-XD8d-zoI1Q>C9ed zpMJ#n1w9eQyL9!-pXDU{(AiFj*W+y)wGNW6 zMfSoeGS;T^GR<*YuvOrun3?I|5tEsDzv4|(F%f_V&g{A2)vNnI|6#U(V<*5L^+AS6 zaQa6SjnXe?epV79uKQr{3lyGMZiw+8^&99w(SpSco+NL!k_!l3?3QxmG68RMQ8>I699f}`eG>T{a84|NAU1ND4lRs7bnVweIo z;d;_lJC&4l?A?sEW6v;V@iz8x(OUssCX9tjuMo3AH6LeHDdED^)AX4T0ut=4hYrPz zdhMDuJS)P1B2^NEwK>Q@;KE(B-i%$wlBG+#{Bh!ZuTf!Fkd1~cUopJz>{q|;At4*h zH@$%TFT`189&{CYD)eLEsAy@0E&&XaIU_4l#@DHEtCS1L!C-A8Y;E!U?l|1FWwP@z}Kh3>)Sk8Of_I)Pmq~uJ72Fh8;m?+8Aa7tw? zb4Vg2mIg^wDhh=pp%N-0t&j}M*rZG=OPQyr42d);3JuTa$NfBiKHK~L^KNh3wO#kR zuSK2xe&6qL?8koW$9_mdQSmXH!s@vaIC3l|sj$FiJnf0@U4Qyfx*b_*c@#UZ!~a{M z%G5%&&7OD{6dUpJTKgw+>$ctj${TKx=B)j}?W0oi+qjWo|1EcyF**75>tpU0{6hQM zyZO!5f~bkRpv3@~sFX@ea)Vey$+mF*{3`73*6eTDhkSunJ@2V$v5#?&o!!;c9#I2R z5A?DMD~o|=1UJy|Ecw}}>Gp^WPv7_0&^KIKSR1AQIdzueoczH36-YU`G&3FN;Deg?;mumOu z*4n#EGr|gaNHi)eE6sYT=#Lr|6BAA#;tXE}?3Gk+lzv4>u#a!)E%VSwcVe|3wC{|q;6DHs>qJx0Z>5z(rQh1BREYOkoM=1bQZr2lW`*YM)L>>3i@{wRL+b|Qv6|sgCVoX6Nu9=aK`e?(wwDWY&xkMlU(1@>Z zBf8iNC57Ei920tLtvddVy`NcqHB$+Y=^I;`TK!F5KGSz%{*8go6YOVy>3nm`+7yQx zt57wiL;8c-4RXkp&zSL7pS{6-CMNfs=(m5mZD7#7#_us*94s~`n$?(B??3$d@ZrvN z-P~;mn71ui6w45cuOm4A50Cl&XiRQ1+F6yQzt9 zG?H`}h{wJ?$vz>u>W{x~(Xn5<_FR1YLd=D^U=H+Gd6yG-_cuoUwf<3Q^x#eTUa;) zxkA=n0c+sW#+JNBA_pz9`RJ`m4icyF9w0}+Y)xJE9~q_hJ_V7;T9Z-(R)--EdgxfG zGO#dcKa3vU1K{1jUsadv4)bq#CRee)LFz*(&tz`dS~3m+1HSa#e}wm%e%A&xwVUg^ zIVgz2kjIb34zP`xNoE^8e-OJ+(i~c1!NvdbBE-l_H2*^s^IaFMj|sd7yc{WuHXt6#6?r?Oc*CB+vA42QqjM4??pLN3EC99&OYQLW17 z+Rm_mp5V$-s<(e>!O$Sc%ZdA zTp($ehDf<~6_%dNg@*27uHDV;Q|;p3?J9Hx2M7vSjy+ag^IsoW0)Z&&AI;)n&zZY9 z`(+wz&BcC_W(p80sO4MC#fu|lcTg)l-|0G{G+^VVO*cm^6y?~~|G2%JWg1TR|3Vf^ z>(A;7V`50cF0FY*Y`Iu?>WL?6uuyv{`!k(-(w%~MS`BE$6GfE=(H-4b=g({8o(2yu z3US6wk2+I+!AIt=P&dFv%;K;>6`~Gn+#zRyo8%R=k8t~peZj4T$z3+T&P_-A!2urv zfMY#fadGpj%3|;g1^lGGGue&D^N5Z{$vhiM%qy7RiVOsk6|rmA&m-&-Z>(A)675Q1UZ5q|82UQg*i{?Z<+b|`S^^KiH8|}`MvaUE!48WCkHOY9-mEp%K1a-gM-rWizdnDHe8$iHdW#p7Iejc|JK-qWkHx^zDm^jx96L!9*%{fCcxQ^W!MTm<~Mr zCc@0&dV2Cfxzl)Zwzd{x$Z%!Xybk6mxLT0(FjIlU9=EN`)yS`*f+F(J(-mh;$Bdz8 zGTq85wBnAhrzaboc7%lynKhV2U3Qo2#?fT%cVt+Mf@oI&lh2%jE$j``}tkY6>fywSjt?)T3m8UEM5+} zRHrx8Ce8fjE#XOc1rVKKLS=V~iw`wz)eOq*P1CmMjYvHeK?6!Q2%4&jiZF9+^V1%? zj<8{nf_mm#!j)8MRipJt+gPE8#cH+A}yDZiF> zrWpv)0Da04{Q3PmuK_Jsp#S*btvncEG)6C66@uUIHE>NdOVSFCRKSO+lo*z0ll%=_uqqC>j{3yI)X%iP5eCE(t%L zyN(4hF1B&e(e*c#5VRN$9QcW_1Y$+)MqzTf90^z`60`?!cnXy#L}@ws7v+$wZ@Qh_ z`n6yffoUEsVunJ^e2#{MtRU9^cErFSpqO(grKP_ zD%vAU+Tib>?e}dJnYkr(6&-&1ykaS%4a`Eo6*;l1@b^IyoRK)k69NW1JDeTU`A(xN zYG-aS00CzghBYWYZhqL{bsvObclges9yUC}m>5Q%KGCP8)F^qVZR^t5f~|Mmw{KJ; zeCp*s3$wJyr@WUYojwe>{d3{MzUe7wd>eoEWVtT6@f+lhLP!!fL{D!*Uw{52?L90q zwf?y!FLF3(9$7${h%-O$?E4_h76l@pt!D=745v+>zOCQvK<6U)@y;xZ`uD&8eAch; zA6Sy>xk~GLVyO)UAkD%zSA7a#BACvKjy4)K$`@Talq<YlI!Y@0Ma6Cqd5SI zk**x!tUA}GwxnNBP!L^x`tO7*3gpDZM2d7qoCxWiPadJxrdZ+=AiY$b)d_fQk~le0 z@#i(D^K+mQKB}ZLC#01LK>Uvk89`aOGN&K!3aa4Ag9oT&@#43eG|5s7oEn~h(Lu0e z0ShhOWiMAj99XdBDevHPLSzA*Mw%yht_KxtWtRnO0WTmJh9=}N=~nE;J?B=!;asuY zeABF35Ea5eBC-oLHJXIN=9kbSfJ*JMSFMOZ4g!~e6k&Ub#`L||%|byy671sSB3EG1W4Fgl z2ADBU*No_o=@ag{h3AEV&n0;Z+*jHF^dX$?_E+q5&NHAVQhlCdZ-$GIthwA$=0(lD zRB>(Ds#Qq$wSG_Iaohx*IaUEoZzJ^8(!pP`nCTlhk$X3X3?9tr`?tEf7a1;!m6|Fd z=gdGe1IlR#)4J8*3V2FBMR~yb#hA@UF;zkNneH)Iz0O&=VIF@-iNa^cj#X}M3m?cq6Dof>516Jp`@JOR`DYZP5xQ@ zQej7=k6*k%ruqEk%YP5ecyjaR2ga&|+IBKWOBf^wLQfPt49w3t6)P(j;}OMN5}Ax4 z7@lZY*d6%dU$gRHieO0i+IBTHc&oGc_Os`gJQDCLj9g}7}G(rJ7jF;(nk-igdG;5CswMvikuWIZ=Z!navjqj$|kKFKB{c z>cxfgTdDgf&v-81*xs=CQL(Wb zXnLZzLfyzLd8v#diNjhxX*Az}6bgOYk0G%Y_mHnHo#8Jh(klqojv@V!pa`F|DiV9L zK}YZC5T>2z26t%R9;fx7iF2Iuw}||5P=$?W=E!L)fDNA%?nX-aaS${=S? zt?4dueqZ_V-CpZsE#F^x0H93UA<#ZN%EO7M+BS^V93|OjRz-aIf@a#f!Gg&a&hwq@ z2AAMTq4F#-TjSvo`OL(HAqMK)b1W$&j}|`jq=5$)LVg4{7dy*~c6qi0 zIP!-4H*WkdcDRrpt&br|!C^un#OqJ*B=DvWo}h4h?15#~A)^uWCKTxg!3);^0( z5U>2((1hPzQW8tcQqdYWx4XA*Um`Z~Im&-5;~g7oGVk3^5ddeeaxAxhj%0=!39_?A?tv_C>V&} zxPFgH?DXo@D{v+S244!-GJ^N_QMw)cU!0NtkRe~V?wS9>lc>t>b(Axk$U@GN60n`% z3qNFt@~{S455(D`H*egREen+pMka_OXam%Gh?Gs()P>;#W)UOe5FE-ssJADQFb0T% zQr|>XX4N0B?50(;-iiGS$rRp6c)2cHmW(O~>D{mScKCDg!KtzDE<2Z)Sc-@cxU)Sm zGuX#rTozi zidr7(;!}#ZEY8mbS)wv)qu2d}!)RH_BR_cIhNJgecEfhe+a>ZhIL)~1-Zn<~w-{XNGC>(`4 z1VJ7>OYCZyn&M|i*;gq2Z!G}#*xNJU>rhNWqoSkrOlT+~u=gV7(~>VLVuO<~R_5jw zF7bn2BxO^(#ZA@THn!bjmWxSonF5fYZ3Ym)kJt%&O_9!0C=VPo=*Gb3fMti*14KEI z7DyRz;6aFoBipBM7U*LlAF(+{Qgr$bRkoJh$(S^ceUt zh%y+jq9QWSb=>UWp$dC}IbOVe4YX?k^^pYe#}RaH4S)|#6pXEyi5rIR=`O%*P7@0s zkebk&=(_XG<|Wawv6pH5AjAh9&%M+^RJ*C-=JkQ@wt*~PkB#pYH`fPffPN5Aq8g;|)Aqj{2(Ht?dM zNc2K$3yWX_`J%JVeQ&ZIH?q^NsVHCwrl2_j)V2?!9d0tnICiX7)>V;6fz48KOTjKwozG8WQ`}!w#ez5l4Yf5i6f}eM z+;l`78(DtRihcVjWbymYpLb+mAq$3X-(K_bqOfX6IQ&?@jQ9VC90*~DZAc%jXJKpx z5>|#&SOWEEj>sDB$>`M_brt1E*b=^+14U%JyX-4ylv#H|J~AP?F>ewcA!hO@zFY@q z@AQEjLhX;3b3)NF!(wN#O%UKVEEFmx)p!H+&QP?TP{U<_^2?sXdP$3ya-!o!sg7* znvNk9v=8H}^kckT>&beY8b+eSGai)w>fmJ&M5j3m^%k`W^8~t`;8YD5@gt}4_;Fuw zr!l#B20Lbjujpts*-3hR1pXq;&I4FESF78h(! z>EY=}UwNS9Yez@NmQ$0htOPp&ULSdbvW;`W(*Z6~DFQ9GRQ$Ltl3SO}2{RZz+zT*t z?}3pF3*nW#Arc@g7>Ny^!hqZZon&X5gT49wd`~Xs?t8$=CGNR*kdmr)>qdUK zjKeCAeC{ZOjX8TxV%2-@oFI&4<|6z_5z{&Fy3vRsC0xk7v{4P`WdKEZQ%DNR@D?~K zv6Pg_BQO6pKgYLoyNbYp0|r=#H?7hD+22K#1D(X?bAU%+#y|WvT(%MF%2-k?HA|8cGX+2v zV}CYXqWuIZsq{hHDhf}myMiVB#zMpfCsN&GxFY#9gyNk<($&+`)7SSB z!{nT>`LBC%y7Q92Aq2}S`L}OxkB|RFn{2}@R%O91K}-QjTbHh3&>Sol&l)=%NDPFr zQ%}!Ww7?Y0&WYu}*-Ab3|2P}6+%Q|+g60;s|7QN*Pd$s3PyztSlm60cN`}!Pa?C+jREQ&i{fGh!B)+(+C)JeZilr@5NL&8gb874L`PPG^}83qjV zt*cZS!gI^o{>&spfIA{F!k&%&qKF=xM&>5%9myaJa8IHdyvv+q`ZiLfgxeLYE z&li^-zI^%jsZ;j?&ISkPaPcS~u7TD#mh9HB%#t(w(kHmOC+rWb2Fs8L%NiQtO1!N| zJvWYI;jp(6Y?ehu-?{J>=8t`&Y&my48`j-Eef+q&xk+MZ1;pR7WeXskeS+o}&y5jr zdg1{=SWjSg&Vm7ro;_noJjgSh?#6J-_(nfx#p9k0okept{o4_yJ!riOKKF7BT|_-* zYQ%ykJ8i|{2F??96=QBMx~JE0C#9AHKqA*P^YO#n9JvPHF?BXjY!w16gOBgtG4(8v zp1)JHj{PO$A<18TsOq5AMi?29n0G}){5eq*D(fSs0Om-4nb)pqNte013p=*B>`QC7 z#B`9Lp@e0LL3J|DCJiK1RO86w%=X0=P$AGEWZ*HYYObi#Qq(eySmM=pT9Q5409wjS z$D$Ftrcgb%UNf`(8&#z1zC0i95bkNq>T$-O(0M>s72m(F5}7FkPnTbB-<`uzRhGo+ zo&&MX+a-kMXXG8qVzh3|$v!C5K11HprQfPUl~mqS%g*$p#-%h}ns>@Mi!=koB`>5g_ufavxxNPJAm_%?Ncx=1MIzbi>E%^7MfU)Al+%D`-77Qu5gj9c- z2V%LW0?sv5`03AP=5wffH6yl3mb$ujQC1F(>KMwOBAvo2vr^874k3~4l)EZ_=c#j` z<2h`4u};yBDSeguws*;3&H|UCd4Yq2daJL6?eyvEy}j|(F@s4nP=oj)?8fh&@PSJHei6**JLWr0#E+qWgF^3OTvh3i--`^YNyCA_HCG;-Y09I49AYa5F(9Y)BfcB*i@3^#sV1_KZ(IhE8| zK`CFOWEAQsVixsy##QO5-=s6^qAy*7j3mTaHYkfki9I2MNs$T7UL6%w8!UoKaPQv} z8~fb%Lvn%@afW3{ho=*#t|7HcikY zG*Dy>{EJ}eaJV~vbu@1+OUwMpyROP3ISP$QBp`|?kQ4Gq_~ujYJT8$a&`Dwu5_K{o z!;5O9$p@JNI98Y?#lICJN=k&M|8y4qp!sOqrViGJ7^=cSX5O4RQo&`8s0IWgvI?^^ z4`@k?L=Gx`iMe+k!nZJ*pYo`sxtV>RxTWA-^Y`h~|9xK1JLVDS@R{y>#mI?~2fQV? z8A@U?HYmG@Xip;koYOXEv7)*qG9lhQQWT6)P&x2&nPN`U>L7fZTJuCj&0T#^@==)s znfP?9=-9J&@0Myd2+&(H=C@OQPp3gLoY%&C3z7D6Zoj!gL-@CPI_-;u|0@zHi~hg< zrxHPmAeAPe7OXjgCj^V)3jM(R#7Xmu)TxcY%*8MAr4y3uiD>f?9`O~tgdA{b3@UDb zR7s})Gv8a<#lSe^7lW8 z6h!~$pMpc4bZ(kY`9IOd21yzF68s6{RAnI)zeF4WXk3?LGgHaSw5$>1v27C$;pgnF zmyb}o69)yGO^`tT8IBbU7$SXYUb?QFdTjVg7ZGOR##p|Jalr45un*a#z^679tfEJZ zICtT~Y}S>~b7sst^PmtR9UM*`KMp&&&2r=K_bAF51|2??C&8pSB;3c(pGn~h80Ttk z^1=xaj_qwM^Vx&9167?caj zK+-5>FGV$~Z{BJ-q1I3xnXgdD6lMQ;33^Hm7G2UXRVoGef=;$emQF8O;_PgZ{1Wbk z#-WfxnWjr;E1%3dQoE|UdiuU*C^X)_Ft0BryY~sjUHr}K*AWs(Tq@ z6P|LT$S*Owd$^UrtMAIXhSc@V6k!yrj+85rhUPg=wXxa$!oRc_-|*(D7a2;SmJtpA_96or)b)3ePUT zwgRaJ-;=(p;k*LYET`RUx#$TkqpDyeGas;9m$16sP5Dd7a~QywD_oYcgrR5PzYiVQhuzNB$pyte3v8 zsWIp13jMfEKljlc+qjWJnq^Vp2?^Q9k26i(`1g8#8=;RV9apSTGQ`rtqSWY;5EVtW z6SjzcE{y0swuh9PNS%J)(TSRF@#4bb<-aE8-|2LUwSQ7$HgT29x`y|~b4y>pr-sIl zR6pwo&5ImX{zIV$^lz>Mg0%kl$c=-OU~HRfPQm8uJ8J*rZ}s)p;GYnmP^WP`hU)5m zO{OHF-G(jV1I_D9ADcOV=+l630T+kVU*_8gSlbt2-y#5O3`HE`4hPL5o{H} zK|r1cB?!8Wb}Eecm!LWP0Co%EaOkmmHTvojLC&(~<>S?kin2S9&c8QGpt$HD-4`8= z@a-#5l|n)+R)fY5}TwYP$aeC=?$QT7n7)b&qE7r*vVFGzTmC&$2|3f`9 zJXA2X`z&F&v7jlP{=tdgf+bsgY$_wqjsQne2n%3$2>0>DRUbjY16<=aeH7^{HE2QrA(Tc3M+<6m|N)TwE8Tq99#{cr0D>V_?kYW z7B_G_O=B1DoD%7MDpSxOhaJ|8sDn)oc&Mb|R*Nh74RjPT695owIlNoslocch@&-XA zuSkzkHRf)+s;O;n7z8Q9qe*1}^xL!7J#6cVU>B}kd&PVMuj$?*TY)PGY72C7(w5mG z`C(bb#EHi}E>eHeC|Kw14H;cuSNCb;&W_Ujf`XkXB59~lcZY-!+v(~HQ&8{UTQzKz zhB76?Q2h^#`xzOQi+I((WMos_Z?M_sO79KRs#|JJ)?2uHznYp#pV4IcRhgd6#-aCB zRj*&Xn9u5Pq?E#bnC#;;3;g+BkdT~hm`w1IFpe-YbyHfVZw(uvdhU)_Ynw+Cfq%T; zK3D>iiT5$n@7qxEhvYtoL;{$a2Q&pY($(R?0pPGo=VAV#b!i-qMWu* z^bi=Nm^yWr@G?X4Y8@M}+{~N|`Va^M?H9aMD$lPUrjUM_f+IFC^#*O=wsIxNjsV6^ z?FYDt>m1s{NdLp59xxt4>ZPGS)~{hDaUG=#|2}NK9g%3{h!L8nuKPRp4G}(= z;b1NBL?E>w{Lk(Ar^yTZod8l04qr7ES^o7tQ>RQ(LXIf+r>JN$=V;tB zdcSQu_^a)_r{~(WUDM+VKUY@^!-myi8f-77PKO+>^;^;+s7h&Lp>-S{nVXZgR}fJ> zd7`?NqzhWkf8#X&>^9v`+UlG81phf38m$!@&kCzp0E*DnK=0qm0(1!YrzDz>FJe@a zP6AiajAb$2S7>m^2K4D;A(I`gnZF_T9Q~j28?BM*awQ}0+{hh4x`rO6t49EH^;yXA z3$D>}vi5}?Gxf6;vquYbk~Q$NA66+Cc0{w{9*c(b<8ugJ5*ZcwQUk}c&YOu#U@g`n z632!7xd;xE@v)G#W2wPJ2S@(#VdTPPp?O3Zm+`w`&1sy*Etj%VBuuXy){Li+)TXc? zV6vB21|&OkFATuKX0?kZ)j~rN?zBg*eGd=K$L7eOY7UQ#Bq@~gOP7};l3C5f)sgZ3 z08=U#R$kTRtgOwW2s{<_J6)TQx}nIO@>2LkMTYhy#*J{$+}P=cw+jmefKC^c;_StX zAE`+L`MCKZ20zbi?y9AgcKo;xWCn1U56V~RS||k+lg)nMAvzwkA81i4%WToJqolqg z?HuTQcHgMgsDV9^yhFzl)?JnuS$A`Yr%13qm=x%UR{)dB4GU6Z=F__H_rC^#CBtxw zFE_@udi831*7A(_w`kGOL4$T&JIZtuLEqAHGh8@`5q}s$zq|VZHmAOSpC7Uxi{=ms zHyxWB${65k+Ue6R6~_hV<{`HaLlpnsx{;ik8m^W11t^L33%ZhS6eSKQIpNAN!9+3& zSUtZFbvnIsaT3!*wBl%Ue)#y2MeaZwFQ^gz0^||eQcJN=LNQxU(+kd*4!^@$XE{b# zWdnu|t)gSRX|)MZQU0Hbbx7)(&_D4$5gyU{M^;@s9IlEi&D=8ah>8Hfn91e9a-lYI zu@DQ-qEKIK79=dKs#`$2|JjIllo$7s28CO}Y%X^)5&V1e_pIzS#zpWEVAN9<2Kd!~ zK8KwqGiUyM>_o)otNGy0ovW=*Z&leQZeKJ6of=()5Q*RK<;tgNEJE%G;h&L3*uc;| zyLaDb))p*7+n;$Q4`*k42Zzg4sMxv-{Zeml=zlZ%@mKD15fJClQdif|AkB^*Gv?Oq z+gcjJ7A(jaVc}ar!D`H5#7SH+TK0$wZ{_D#eEy8yo18!qjibmi+w9+rg{WD*Pw%4ah&<|FTvRe+HYPT&tif6zuK%T8gW!FOgcf;7v*oE%BxFS`FUnHVP@H>4`0 z9Rf?<4>RGKhyo&M%ZmwEJ$O}AX0%ojNE4>{m=e8Ad?U~a_|XDz%6ke_yMieb?OEyq z#gu(rI(B5&)Gb<9VWHag%c@ntN6ZCG1BSMuu@;zJN^u&do8=V+Jyq}Cn|KIi^R13uyvQPe zODNu~#0($cOtg;YN{=Yd(@mg(p+&YBemuXLmQ(zj-Ndb$8}S4mdY1eETuRtYt!|J% z!E&YXf){NFmzJs=%pPtpUvd;Kh86+NQdYXt;zj^IQFSciQ}Ulf1t}x&BvzbcWjUKY z4b7idVPPg{M&je^$^oT1=7GD+h4pU?9}s6Z%tP;1_w!m03Rc>Ldn@9skHKLG-dOjH z4oPI3dkBoNwb}e)Q+l0+5oP5ir*gN3Q8@>ZyF#qXdlMjR`~wV7(WR!P(Tb(BQbpe{ zPi;K&14zbr*KhyhQ}O}S9$lv%xh9(NSV%~ye;=etVoKdVv5A_7G?TXIL0V zo}ku2K|#ee#IlXy58TLzZ>02hT>(nK31}Gd4~)vDMHm0Hj1S|Y`G#c|chj?5cRU(O zRYojRbt$I4RBdBU!J$kX2ptfV$;dlgA^4NAEZXYq0v?Y$p#qfB1yZ> z!ock8Hs}^r8C*H_oEfSmL}%MlKecUas!amMXJowu_J*%pG@%Nro?;#aV{SYO4t_2z zwBAS3b_?Vxi}*D?*_Yx?xvqXXLB-qx1F zVq>aX#OrUoDyZ}*uIpyeU{LNLPP91*yCA657hYm3s+@GTgG0sp_d*XIVSXrHQO`I9 zDbwQn4;xl^y?Q04iL#X-P6{kgwdq{jNt5QEUop+wyPj_HeE(S@R0J$=ha^~GfFlsT zeM0dPkGg_7My-2yVB;UFi5{Z)H<8n_?b3dW3^q1G8?Hjwf-kx6*|=?PV5# zqn+R^gVkA(*j#AO5>hFTt^g;P4y7fA<-ScN;$*bp%&zUiUR!Vq8M9bsOv^Yxm9E=OHb{Fh%@6!rZ8JCZW z5?1bn{Qx95B+YxXl=uxW!{I^S57?2I=$zhXzs0c!^u{QRPw+u$-1Y0{Lu+(t4aERA zT|ft`R)I`E1HrC4;r7==KL?o>MlZC-&Y;^tR9no}_)W#HEAenN9}0s!D%|QuTN-sg z-UN_(-~cYi(+3a0Y#6&kUE?3$w^bRr2kgZ~m;ferxM*A-{u>Ea(?daP(pb}zSO4%K zb*5_f?&y~Cl;*%VZMV{$kvhBi3L9aVap4!r?}IheEt>CYI=`HP1RW16D$yJhXen`M zw=l3vo$xl8@kUys#OLNo3n9)UtbaXD=t^U$L;E5e-1H`p3n-0n)V$r~*(J5~`D;{1HX6VSQi{2IiKn@%JrOQK4cF$6&ZS{8Az7`&$GSys0B zS@Og-pG65{d^+i?FjYcIr?I&bxrU8L#N^`)%CJ`vaM22h3_hZHb@tMw1Y@_E;Bkfw zF=^pMvKwV{WKd)E;qdUgFthwpU(sNbs>w5D*3?lj2^ffZy!z)fuYe&c%$?XQZk1@g zF0J6s9r}ny+0pC9yhiBnw5R^B7&BOEg1A zkA@$61`REK>;K~Hk~~fZ=YyvBr*(emB1-Ioxz5d80VI0h!lrM}7E^=Qj++r$M5WE6 z#<3~Rjx_x4^J-g_-oro(y1o=ae^nCN04MF34Cq5qQVs zK13>d9{NS9GQK%NIGLCg%Dl%rj~^TB>kET=O>4eXRQ!(&hSP}wSUs-@vW-KCCRa7c z3sl2J;n6W7q~E_kfUmjrSIq_w;4XD1XmBxHC`>CykX!5L?;q5V*+CTSakFV46v*TA zk9qcBJDLD>E4W;sS1POYJgOd|62pUPy?Za3KY!9b{7#aCgjIN9E?`oSDfpCtv}nc* z%Y7)?P(R1)-#>iu0Nx|o^x7KlJ|uF7mMiLJ=r2rHGFJe!*!ca6M!i$>L^dDn9l#0c zt)=w}R9i<7G!d%)VAGtuJbCH9goMaZ6h}KGlkMzW4b@G*e5X}(4c1H|qX)#q|ClkF zzqy{H+G7sy?pb^zo}zYw`1FE{J4{85OM3R`@jWvYw8axQFgPQOOYJ2>(hs|TWPJSe z6t(SGsCsito4)ZPc?<~DCw@6>vW8h&9juE~RIJ4~Z>wDcQX;5LOB?*g*u>;OR8(#{ z6%+MHm>whFk&;eby71{PXOClt-t%}?6G_cD8*8D4fWFSr7 zSo$K7L80b5_4>+I%(Rpg#Ta!>&9?_irxjll$Y_O-2hX3cbap0Hy{H%nQnK%h3%;0LM3>D9<_@;!Zw6MH_x$VixeFGz0H%Ug~WXzr- z`i_m8JaU82B3}6UGZk$>j|PkL3Qn8$sgEB>BLZ9O?P()iTwQUA01(k`U#6{x`>H|x z@O!I|^2Q(@$3p7H#SOPRgG@$2vP6eeHfPVC!c1K66HWKTkJb#v3`-hKJ1Rae>I z)~w{u^am)O_GH+^^%5C~o7(zv^u=Sx8xzn*P*(eb9ojsp=Q<3{<9#oVRT>=Omk$y5YNR+mxSWU zb--1#@o9xjJ5Q@0~FPQfls8wpdD}R>vNIdcst2 z@mhXV@hUocs!rg5;PdfdB_I~|^s73-r+RhQ?f6?EA-A6{=w$oZy*n?^FK9yf#Q6+KEH7`!PiU05jYU zVsnsoRYkA^c3u4EpRPK;h}q+s+EYkvAUU*-RFEd0IDsqs zmIK`PNY9XYZ;Cp2PZM6LPn3)X#Bj~ z)%DUp|BTq~3xP{~OE?&T+kqe^mA^)5h9d;OciOY4CVkaIMIoa*>eYucxJh|oHA-L3 zF1T|4y!Mebg#`t9azClWJ1FN_>I~S#C6F8b>w7IFPNy3fazKy3Or)K1|gimjX zypg0;r{Y58PY{8kxwn;yo0)s?v1v}#e&aE^x-vMvX9LAaa1?Y;i)*oaPi8u+_f&s-I^5%}^T8j-kU^4Zg(=me?R5%^SFns6k4mab z34os5hDe{^c@En@4jfSF)Cs#hy}&l63t$uHonEljF8}bqO>6Q8Cw;$~&W956nOpv| z<*mlwud0R?;R*)71*Uw9{S`z3%Z(Ui-PAC?J>aAL_#%;V0v{W)q_OHoz4^!1 zp$B>p)O$xL+x{9#j#h5Cpx|BnBW};h%*^pDK6<`&?0&CZzaA(-W6)ex>nUr~N@VJp z+?7@ny)hk~VZCkN;^^^PJNE1eCh4}j+)Ghf|2&xqAv!6fuu|>GOof$uqh`iZBYieXjN1NZ8D7|4rwG*d`3~Khd%CuM4R$>?qGTX3KExobYqPf^3uDj# zbL)WGlxRi_u|g|wa8a~(4G+D2#;|eyv9>Y$z2-DMvOU#xYgu@Beo7Rk378iCxLT2& zF$t%S-0fc8-fXg4YKW?+$TYzvBui(}el+OBgqIVTN^1Ai>% z`JvsCK1`T1cP_psbLilG^d^pw*z)b(SGY(=CP8a#959rW2ST@g|DT|21-meP0<$KO zHMzFnKTw*<1qKHK>FG9eTVOSWG4QBKKdIzV1>Mv;>otXjoNe;C1BmaV?@}bvDW41R=$Ha+vUtSo%@?px9IX9Z^2Hrej@%{~Ff!GJZkG3uTBn*^Wk zkg>)3SlM+So&e^Jw*QiS{$bx0zgP!5^{R=KZFA?Eu&?A!<40UADOa2242_KufAlev zabVD;!H8@~I+PW3%xTHs{gZ{cfbuDvUs#)^7b5uuNrztUB}~QdK*^c$Q&`J6X;MeC z#PjE)bDa$v0~RwiZelW*3Dd}SpTAiy-yK{xFC75Z^&|1&$QU1%sS29+Cg-DShgXJE z;5s=oJPb9_cJt8$RT&%z6f2sNyz~F)ic0m7K(O0OkjqRzoc>b%zKM0ilc)!OK#8mH)oyd-vF@_k2pK0v>UGsTxo+T}HQk2Jwa}ZM;Y+{LC zDCb>O23Ns=CrBohMI~>B0|2%$#Rf^#>iEVZ4?&~_rd%P zpAX%toJe_n%JIrM5-nB<5fN3~vfnx(;t<*d`eTeNs;WluGEAQkXR8PTduCWH&ArcHuR zvoCT-m>X$ZdgiZ=;bS7?O}|{wn!WOUlJ1z<-MW2OT>5i@;?9ht19r&84X>QJzT4O5 z$4~BzskTh%bUr5}W=F?%^|}w-x}CG%D>=IMsOmVY4o|+6-M&A)s=BP8dW6CF!fEX{ z{utd9SpIEO$*0PNkm*n@gZ580aea2=;I!ScxjhAcH`eDG#c>`5A!!1z0X+@X_U9F= zgM*$8yKD9Jyhg8HkR>ZKZE}4XI-r`*w5dy&lJe-qUyKw9JBjXI4EeO~>ZMCU$^OLd zxEbS~6w4V7g2nFfna~D8`{!JFBh(P77To>BK+XNdIbrpPfXOHuGhA%eejWDW_*Fs{ zAnHKD2W0i{*IuDrICb`pn{Sc$tlGH> zEhNK3!@6W5T3m}aK6=d5MOgwT{;{4<0(zznfAQCMkPgNQle6L{A76W=m??U!JL&TF zkN#9slWt(=PN@s~h!7cKxfwR#t7NaX;BkG$vAUw-M>IDwIVlvn*ZeM27w#<#5Yi^QK0(;n$1`L%Zxgl3;SXzn z@IA3x{GH`eek(JCQLC%mt_uw-hYZ*`LL%+fGqVSMsQ>Z)QY~+sUl3btftkUw z=iR$^R~*lLPkx8~p92e8-aE{7#R@bt356fiew|MNDH=H9*8VAZFR$r{V-|-04;W>q zB!I{g#@&DTQ}&SWqW`LyUcHBJ(g+c@SLY&KTwb^SuwR6semzI)dl>GGX+hq#_tMtR z*^BF<3O?+;y!hg(Iaptjs%WWVjYf?Rq>c7XZk}+WU}J@ToWaK{v#WMzCI}lXgpuQ# z8MTM$K9JuZ`*#yH=dK&wg+C+jpC~8lV__jLvIs^Y5iF8JzAo2JQzUBF-dH4RFGc|^ zmZ1BV^!dO4!R7@ua*qW&HMnZw^iwBSf~~S#t{&PxHKyM3Z(1Gxko&dSOOzD<-+bf$ h$DiQ;7k{u;%izknX_A-Y2tLNGcxBb{|h)-@9qEq literal 0 HcmV?d00001 diff --git a/sips/sip-021/figure-3.png b/sips/sip-021/figure-3.png new file mode 100644 index 0000000000000000000000000000000000000000..983e819e56b88a331ba9ac78e9864864a5363ffc GIT binary patch literal 18893 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 literal 0 HcmV?d00001 diff --git a/sips/sip-021/sip-021-trustless-two-way-peg-for-bitcoin.md b/sips/sip-021/sip-021-trustless-two-way-peg-for-bitcoin.md new file mode 100644 index 00000000..346594ac --- /dev/null +++ b/sips/sip-021/sip-021-trustless-two-way-peg-for-bitcoin.md @@ -0,0 +1,1385 @@ +# Preamble + +SIP Number: 021 + +Title: A Trustless Two-way Peg for Bitcoin + +Authors: Aaron Blankstein , Jude Nelson , Don Park , +Alie Slade , Igor Sylvester , Joey Yandle + + +Considerations: Technical, Governance, Economics + +Type: Consensus + +Created: 13 December 2022 + +License: BSD 2-Clause + +Sign-off: + +Discussions-To: + +# Abstract + +This SIP proposes the creation of a **trustless two-way peg** in which BTC (the +tokens of the current Stacks burnchain) can be manifested on Stacks as a +SIP-010-compliant fungible token, called sBTC, and later redeemed for the same +number of BTC. This proposal redefines the act of Stacking to be the act of +maintaining a _peg wallet_, which is used to hold BTC and process sBTC +redemptions. Stackers are collectively responsible for ensuring that all +liquid sBTC are backed by an equal number of BTC, and that redemptions are +processed in a timely manner. As a reward, they continue to receive PoX +payouts. + +The novel aspects of this proposal over the state-of-the-art two-way pegs are +that: + +* It tolerates a reasonable degree of forking under Nakamoto consensus, but +such that no forks are permitted beyond a fixed time horizon (that is, the act +of forking the Stacks chain becomes as difficult as forking Bitcoin). + +* It places responsibility for managing the peg wallet in an open-membership set of +network actors (i.e. Stackers). + +* It offers a _recovery mode_ whereby PoX +rewards are repurposed to fulfill peg-out requests in the event that Stackers +temporarily fail in their duties. + +Two high-level summaries of this SIP and what is would mean for the Stacks blockchain can be found here: + +* [sBTC: Design of a Trustless Two-way Peg for Bitcoin](https://stacks.co/sbtc.pdf) +* [Stacks: A Bitcoin Layer for Smart Contracts](https://stacks.co/stacks.pdf) + +# Introduction + +The lack of a stateful smart contract system on Bitcoin necessitates the +construction of systems in which a representation of locked Bitcoin is traded +within a separate smart-contract-powered blockchain. These systems aim to +provide a "2-way peg" between the representation of the locked BTC ("wrapped +BTC") and the BTC itself. At a high level, these systems seek to provide two +primitive operations: + +* "Peg-in": a BTC holder rids themselves of their BTC, and in doing so, +receives the equivalent amount of wrapped BTC on the smart contract chain + +* "Peg-out": a wrapped BTC holder destroys their wrapped BTC on the smart +contract chain, and receives an equivalent amount of BTC on the Bitcoin chain + +While peg-in/peg-out operations are trivial to implement if a trusted +intermediary (a "custodian") can be found to exchange the wrapped BTC for the +BTC and vice versa, a robust, incentive-compatible system remains elusive. We +identify two key shortcomings in the state-of-the-art 2-way peg systems that we +believe renders them insufficiently robust for widespread usage: + +* **Peg safety failures are irrecoverable**. All existing 2-way peg systems +that we are aware of do not have a way to recover missing BTC should the peg +state ever become corrupted (i.e. through the loss of BTC). Any such recovery, +if it happens at all, happens out-of-band through the actions of a trusted +intermediary or intermediaries. This places an enormous barrier to entry for +users, who would need to vet intermediaries before trusting them with large +sums of BTC. + +* **Reliance on under-incentivized intermediaries.** State-of-the-art 2-way +peg systems rely on one or more intermediaries to maintain the peg state, but +do not reward them proportional to the value they create. Specifically, these +peg intermediaries provide value even when the peg transaction volume is low, +because user confidence in the system depends on the belief that the +intermediaries are nevertheless always available and trustworthy. For example, +the reason blockchains have a large coinbase relative to their transaction fees +is to incentivize miners to always be available to process transactions. But +today, there is no 2-way peg system we are aware of that rewards peg +intermediaries in this manner -- there is no "peg coinbase." Collateralized +pegs suffer a similar shortcoming -- there is little upside to honest +participation, but tremendous downside to going offline, which creates a high +barrier-to-entry for participating as an intermediary. + +The system we present, called "sBTC," addresses these two short-comings by +leveraging unique properties of the Stacks blockchain. Our key insight is that +Stacks' PoX consensus algorithm offers a way to _recover from_ peg safety +failures while also _properly rewarding_ peg intermediaries for the value they +provide. Specifically: + +* We use the fact that the Stacks blockchain "forks with" the Bitcoin +blockchain to implement an open-membership peg wallet maintained by Stackers. +If Bitcoin forks, then both the Stacker set and their wallet forks with it, and +the two resulting Stacker sets and wallets each own BTC on their respective +forks. This means that Stackers do not lose money from forks, nor do forks +pose a risk to the safety of users' BTC. + +* We use the fact that PoX pays BTC +to STX holders to implement a liveness recovery mechanism, whereby some BTC +payouts are repurposed to fulfill peg-out requests should the custodian fail. + +* We reward Stackers for staying online to process peg-out requests by +compensating them with BTC via PoX, regardless of the peg's volume. Stackers +are compensated proportional to their signing power on the peg (i.e how many +STX they locked), in addition to how many peg transactions they process. + +By leveraging these properties, sBTC offers the following advantages over the +state-of-the-art: + +* **If a majority of Stackers are honest, then sBTC remains safe.** Every BTC +peg-out is paired with an equivalent, legitimate request from a wrapped BTC +holder, _even if every miner is malicious_. This is achieved by ensuring that +all Stacking and peg-maintenance operations materialize in all Stacks forks. + +* **If a Byzantine fault-tolerant (BFT) majority of miners are honest, then sBTC +remains live**. All peg-out requests are eventually fulfilled, _even if every +Stacker is malicious_. This is because Stackers do not have a say in block +production, and Stackers that do not fulfill peg-outs lose their PoX-driven BTC +income from miners. + +* **Peg-outs of arbitrary amounts of BTC are fulfilled in +a fixed amount of time** if both Stackers and miners operate with a BFT honest +majority. This is the "happy path" of the system. + +The sBTC system is designed to operate on a variant of Nakamoto consensus while +being incentive-compatible with mining on the canonical fork, and is designed +to ensure that Stackers' most profitable course of action is to faithfully +maintain the peg. In the service of this, sBTC offers two modes of operation: +the Normal mode, and the Recovery mode. In **Normal mode**, the sBTC asset is +backed 1:1 by BTC sent to a wallet controlled by a large fraction of Stackers, +as measured by the fraction of locked STX they represent. Each time BTC is +sent to this wallet (a peg-in operation), an equal number of sBTC are +automatically minted to an address of the sender's choosing. Stackers respond +to peg-out requests by sending BTC to the requester's Bitcoin address, thereby +maintaining the peg. The act of responding to peg-out requests automatically +destroys the requester's equivalent amount of sBTC on the Stacks chain. + +If the Normal mode encounters a liveness failure for any reason (including loss +of BTC), the system transitions to a Recovery mode until enough Stackers come +back online. In **Recovery mode**, a fraction of the PoX payouts are +redirected to peg-out requests such that eventually, all outstanding requests +will be fulfilled, even if the Stackers _never_ come back online. While +considerably slower than Normal mode, the design of Recovery mode ensures all +sBTC can be redeemed so long as the Stacks blockchain and PoX are online. + +## New System Properties + +With sBTC implemented, the following novel Stacks system properties are +introduced: + +* Stacks offers open-membership mining, but now with _limited-depth_ forks. * +PoX pays the same APY in Normal mode as it does today, but PoX rewards are +instead paid to pending peg-out requests in recovery mode. Stackers do not +receive any BTC in recovery mode from PoX. + +* In Normal mode, there is no limit +on how much BTC can be pegged out at a time. All peg-out requests are +fulfilled within a fixed amount of time. + +* In Recovery mode, all peg-out +requests are eventually fulfilled but with no time limit. + +* The set of miners +that could mine in the next Bitcoin block _is known in advance_. + +# Specification + +The design of both Normal and Recovery modes require careful consideration of +the incentives for Stacks miners, Stackers, and users. To ensure that +operating the peg remains incentive-compatible with mining on the canonical +Stacks fork, this proposal includes significant changes to the PoX consensus +algorithm. Specifically, sBTC gives up on arbitrarily deep forks, and instead +supports forks of up to a constant depth. In exchange, the system supports +arbitrarily large peg-outs in a fixed amount of time and supports +open-membership mining. + +The most significant user-facing change in this proposal is that Stackers must +now perform active work to continue receiving PoX rewards. In this proposal, +Stackers collectively maintain a BTC wallet for the duration of each reward +cycle in which their STX are locked. This wallet is used to satisfy peg-out +requests. If Stackers fail to do so in a timely manner, then their STX tokens +remain locked and they do not receive PoX rewards until all peg-out requests +are satisfied. Their PoX rewards are instead used to fulfill peg-out requests +until they are able to resume their duties. + +The most significant change to the internals of transaction-processing is that +**all Stacking-related transactions and all peg transactions must be broadcast +via the Bitcoin chain, as Bitcoin transactions**. The reason for this is that +these operations must materialize in _all_ Stacks forks. This is required +because it prevents miners from deciding who the Stackers and peg participants +are (e.g. by deliberately ignoring them in the Stacks mempool). Instead, when +a miner produces a new Stacks block, it must consider all on-Bitcoin Stacks +operations in all Bitcoin blocks that lie between the Bitcoin block it will +commit to, and the Bitcoin block that chose the parent Stacks block. This +_prevents_ miners from generating blocks that ignore Stacking and sBTC +activity, since a block that fails to do this will not be valid in the new +consensus rules. The only way to avoid processing an on-Bitcoin Stacking +transaction is to stop mining altogether. + +There are two significant changes to mining. First, **forks of arbitrary +length are removed**. Instead, all Stacks blocks must build off of a parent +block no more than 100 Bitcoin blocks in the past. This de-facto prevents +forks that last longer than about 16-17 hours. An important consequence of +this is that the history of PoX anchor blocks _may never fork_. This new +property is needed to implement Recovery mode. In addition, miners cannot +initiate a fork deeper than 6 blocks unless they have the Stackers' permission +to do so. This is to ensure that the economic cost of executing a deep reorg +of the Stacks chain exceeds both the miners' mining budgets and 70% of the +value of all locked STX. This is explained in detail in the "Fork Rules" +section. + +The other significant change to mining is that the set of Stacks miners and the +minimum amount of BTC they will commit is known in advance of them mining the +next Stacks block. To achieve this, the **Stacks blockchain requires each +miner to additionally commit to the amount of BTC they intend to spend in their +next Bitcoin block.** If their next block-commit does not commit to exactly +this amount, then the block-commit is invalid. If the miner had not previously +sent a block-commit, or their last block-commit was invalid, or they did not +try to mine in the previous Bitcoin block, then their first subsequent block +commit is guaranteed to lose, but must nevertheless announce the BTC spend in +the following block-commit. We call this a _block pre-commit_. + +## Normal BTC/sBTC Lifecycle + +To better explain how and why the system functions the way it does in Normal +mode, a high-level description of the procedure for pegging in and pegging out +is provided below from the perspectives of the various Stacks network +participants facilitating the sBTC peg. + +Users: + +* Alice wants to materialize 1 BTC on the Stacks chain as sBTC in order +to use it within Stacks contracts. + +* Bob, Charlie, Dannielle, and Erica are +Stackers, who represent 90% of the Stacked STX + +* Fred eventually receives +Alice's 1 sBTC, and wants to convert it back into BTC. + +Bob, Charlie, Dannielle, and Erica independently stack their STX in for the +next reward cycle. To do so, they each send a Bitcoin transaction that not +only encodes their stack-stx request, but also registers a (Bitcoin) public key +with the system. At the start of the reward cycle, the `.pox` contract curates +a list of all four participants' Bitcoin public keys. + +Alice converts her BTC to sBTC by doing the following: + +1. Her wallet queries the `.pox` contract for Bob's, Charlie's, Dannielle's, +and Erica's Bitcoin public keys which they registered when Stacking, as well as +the fraction of Stacked STX they each represent. It deterministically derives +a Bitcoin address, called the peg wallet address, from these keys (such as a +Taproot address). The address has the property that as long as any set of +signers representing at least 70% of the Stacked STX have signed, then the +signers can spend the BTC. 2. She sends 1 BTC to the derived address from the +previous step. This creates a UTXO of 1 BTC that is spendable by some +combination of Bob, Charlie, Danielle, and Erica. 3. In all subsequent Stacks +blocks mined, Stacks miners make sure her sBTC is materialized. The act of +processing her Bitcoin transaction is the act of minting Alice an equivalent +number of sBTC tokens to her BTC (in this case, 1 sBTC). This way, Alice +receives 1 sBTC in all Stacks forks that arise henceforth. 4. 1 sBTC shows up +in Alice's wallet + +Now that Alice has 1 sBTC, she can use it in any smart contract that supports +it. The sBTC is represented as a SIP-010 fungible token. + +Suppose now that over the course of smart contract interactions with her sBTC, +there eventually exists a Stacks fork in which Fred has obtained 1 sBTC. Fred +issues a peg-out request by taking the following steps: + +1. Fred sends a Bitcoin transaction that encodes a peg-out request, which among +other things indicates the amount of BTC he expects to receive as well as an +address to which to send it. + +2. When Stacks miners build a subsequent block, +they ensure that the peg-out request materializes in this Stacks block if it +has not done so already. In doing so, Fred's peg-out request materializes in +all Stacks forks henceforth. Note that in Stacks forks where Fred does _not_ +own 1 sBTC, the peg-out request will materialize but be _unsatisfiable_. In +the forks in which he does, the peg-out request will materialize but be +_pending_. + +3. After at least 100 but no more than 150 Bitcoin blocks have +passed, users Bob, Charlie, Danielle, and Erica collectively sign a Bitcoin +transaction that sends 1 BTC to Fred's requested address. + +4. When miners build +a subsequent block, they ensure that the peg-out fulfillment sent by Bob, +Charlie, Danielle, and Erica materializes in their Stacks block if it has not +already materialized in the fork they are working on. In doing so, the peg-out +fulfillment materializes in all Stacks forks henceforth. This _satisfies_ the +peg-out request sent by Fred earlier by burning Fred's 1 sBTC. Note that this +means that the fork in which Fred had 1 sBTC has the property that no peg-out +requests are unsatisfiable, and all peg-out requests are either pending or +satisfied. + +Eventually, the reward cycle ends, and Bob, Charlie, Danielle, and Erica's +public keys expire (along with the Bitcoin address). In order to receive their +STX back, the four of them send a Bitcoin transaction at the start of the next +reward cycle that forwards the remaining BTC balance to the next peg wallet +address. This transaction is processed by Stacks miners in subsequent Stacks +blocks, so that in all subsequently-built Stacks forks, these four users will +have unlocked their STX when their lock-up period passes. + +## Normal Mode + +This section describes the Normal mode of operation. The key to understanding +the design decisions in Normal mode is understanding the incentives governing +mining. In particular, miners spend BTC to earn STX, and can generate Stacks +forks. Anyone with BTC, including peg-out recipients, can be miners. +Therefore, the peg design must ensure that miners' most profitable action is +building on the longest fork they know of. In other words, the peg design must +prevent miners from making more revenue by doing anything else, such as (but +not limited to) reorging the Stacks chain so as to double-spend a peg-out, or +limit the set of Stackers to confederates who will help miners steal pegged-in +BTC, and so on. + +### Peg Wallet Address + +In Normal mode, Stackers have the collective responsibility to maintain Bitcoin +sent to the peg wallet address. To do this, Stackers stack their STX by +sending on-Bitcoin transactions. These on-Bitcoin transactions encode the +relevant operation in the `OP_RETURN` field (see Appendix A). When miners +process these transactions, they call the appropriate methods in the `.pox` +contract on the sender's behalf to enact them, much as they do with `stack-stx` +on Bitcoin today. Right now, only `stack-stx` is supported on-Bitcoin; in this +proposal, this support is extended to _all_ means of Stacking, including +delegated stacking, delegate aggregation commits, stacking extensions, and +delegated stacking extensions. + + +When a Stacker stacks, she includes a Bitcoin public key in her transaction. +This public key is registered in the `.pox` contract, so that when the PoX +anchor block is mined, **the set of all Stackers' public keys is announced as +part of the PoX reward set**. Stackers, wallets and other blockchain clients +combine these public keys in a deterministic fashion to produce a peg wallet +address for this reward cycle. Public keys must be unique, and must never have +been registered before. + +Each reward cycle has a peg wallet address. As seen in the Normal mode +example, users send Bitcoin to this peg wallet address in order to (a) lock +their BTC and (b) mint sBTC. Stackers spend UTXOs created to this address in +order to fulfill peg-out requests. + +In summary, the act of Stacking is no longer just the act of passively +collecting BTC from PoX payouts. Stackers must additionally maintain this +wallet and process peg-out requests in order for their STX to continue earning +them BTC while they are locked (and to receive them once they unlock). If the +peg encounters a liveness failure, then Stackers' STX remain locked and do not +earn them BTC until the peg's liveness is restored. + +### Peg Transfer + +At the end of the reward cycle, the Stackers will learn the next reward cycle's +peg wallet address, and must transfer any outstanding BTC from the now-expired +peg wallet address to the new peg wallet address in order to receive their STX +back. They do so by crafting a special Bitcoin transaction with an `OP_RETURN` +that indicates that this is the "hand-off" transaction (see Appendix A). Once +the hand-off transaction is confirmed on the Bitcoin chain, Stacks miners +process it by returning the Stackers' STX in `.pox`. + +Due to the fork length limit of 100 Bitcoin blocks, each PoX anchor block, if +it exists, _must_ have been mined in the previous reward cycle. **This means +that there can be at most one distinct peg wallet address in any Stacks fork, +and the set of Stackers controlling it must have had STX Stacked in the +previous reward cycle**. This has an important implication for system +liveness: once a peg wallet address expires, _it remains expired forever_. + +Stackers must hand off the BTC within 100 blocks of the new reward cycle +starting. Moreover, they must ensure that the new peg wallet is sent a number +of BTC _equal to or greater than_ the number of sBTC that existed at the end of +their wallet's lifetime. Note that this means that Stackers must cover at +least some of the cost of peg-out transaction fees themselves; these are not +deducted from the circulating sBTC. Stackers can transfer this BTC via one or +more hand-off transactions, and Stackers do not need to use the peg wallet to +do so. Instead, it is sufficient that the new reward cycle's peg wallet has +enough BTC regardless of who sends it. This enables Stackers to continue to +keep the peg alive, and continue to earn BTC PoX rewards and get their STX +back, even if they are unable to use their peg wallet to do so. + +If they do not do this, then a _peg liveness failure_ is declared by the +system, and sBTC switches to Recovery mode at the 101st Bitcoin block in the +new reward cycle. The Stackers' STX remain locked until Recovery mode can +exit, and their PoX rewards will be redirected to fulfill pending peg-out +requests (see the "Recovery Mode" section). However, the Stackers can exit +Recovery mode and resume Normal mode by (1) fulfilling every pending peg-out +request they are responsible for in this reward cycle, and (2) transferring +sufficient BTC to the next peg wallet via one or more hand-offs to complete +their tenure. If some Stacker's STX are locked in the next reward cycle, then +they must repeat (1) and (2) for that reward cycle until either Recovery mode +can be exited, or until their STX's lock-up period passes. + +### Peg-In + +When a user wants to "peg-in" BTC, she transfers some BTC to the current peg +address, and indicates a recipient Stacks address to hold the minted sBTC. +Once the Bitcoin transaction confirms, miners materialize an equal number of +sBTC to her in her designated Stacks address. As with all Stacking and peg +operations, this materialization happens in all Stacks forks built upon after +this Bitcoin block. + +The sBTC token state is maintained in a boot-address contract called `.sbtc`, +and is exposed to the Stacks blockchain behind the SIP-010 fungible token +standard interface. Only the block's miner may mint sBTC or burn sBTC, and the +consensus rules for block validation stipulate that each sBTC mint or burn must +correspond to exactly one peg-in or peg-out transaction on the Bitcoin chain. + +Once materialized, sBTC tokens can be transferred to any Stacks address. This +means that different Stacks forks can represent different balances of sBTC. +However, a peg-out request could be valid on multiple Stacks forks but not +others, and could even be invalid on all forks. This is discussed below. + +### Peg-Out Request + +Due to the fact that sBTC balances can differ across forks, a peg-out request +may not be valid in all Stacks forks. To overcome this, the tactic sBTC uses +to implement the peg-out operation is to carry it out as a request that must be +responded to by Stackers (i.e. by sending the BTC). **Both the request and +response materialize on Bitcoin, and thus in all Stacks forks in the `.sbtc` +contract.** + +In order to peg-out, the user must own sBTC in a standard principal address. +This is required to associate the sBTC request with a Bitcoin address to which +to send BTC. The request is a Bitcoin transaction that commits to the +following information: + +* The number of sBTC to peg-out to BTC + +* The recipient Bitcoin address to +receive the BTC + +* A signature over both of the above from the standard Stacks +principal that owns the sBTC. + +When a miner processes a peg-out request, it validates it by first verifying +that the user's address owns at least as many sBTC as requested to peg-out in +this fork. If she does, then `.sbtc` records that the peg-out request is +satisfiable, and locks up the user's pegged-out sBTC until the peg-out request +is fulfilled. If she does not, the miner records to `.sbtc` that the peg-out +request is unsatisfiable. Stackers do not need to consider unsatisfiable +requests. Moreover, the presence of an unsatisfiable request does not +invalidate the fork (since anyone can send them, even if they don't use +Stacks). + +If the peg-out request is valid in at least one Stacks fork, then eventually +the block that validated it may receive more than 100 confirmations. Because +no Stacks block may be mined on top of a parent who was mined over 100 Bitcoin +blocks ago, the system guarantees that most one such block will be finalized, +and would be part of _all_ Stacks forks going forward. If such a block is +finalized, then the peg-out request it contains would be considered finalized +as well, and Stackers must respond to it to keep the peg live. If no such +block ever finalizes -- i.e. the peg-out request remains unsatisfiable in all +forks after 100 Bitcoin blocks, then the user's sBTC are unlocked and once +again show up in their balances. + +### Peg-out Fulfillment + +To respond to a peg-out request, Stackers send a Bitcoin transaction that pays +some amount of BTC to the peg-out address stipulated in the peg-out request. +The Stackers may send multiple responses for a single peg-out; what matters is +that the peg-out request is fulfilled on time. If Stackers have received their +peg-wallet hand-off for this reward cycle and fail to fulfill a request within +50 Bitcoin blocks of the request being finalized (i.e. at most 150 Bitcoin +blocks after the request is submitted), then the system transitions to Recovery +mode and PoX payouts are repurposed for fulfilling pending peg-out requests. +If Stackers have not yet received the peg-wallet hand-off, then the peg-out +request must be fulfilled within 50 blocks of its receipt. + +Stackers are incentivized to fulfill peg-out requests in a timely manner +because if they do not, their STX will be frozen by `.pox` and used to earn BTC +through PoX in Recovery mode to fulfill peg-out requests. The only way +Stackers can get their STX back and resume earning BTC is for all of the +finalized peg-out requests they were responsible for fulfilling -- either by +their peg-out wallet, by some other Bitcoin wallet, or by Recovery mode. + +While Stackers are _encouraged_ to use the peg wallet's BTC to process peg-out +requests, they are not _required_ to do so. This enables anyone to keep the +system live even if they cannot use the peg-in wallet for some reason. The +peg-out fulfillment transaction only requires that the payer specify a Stacks +chain tip (see Appendix A) that identifies the Stackers responsible for +fulfilling the peg-out. Otherwise, it is sufficient that _anyone_ fulfills all +of the unfulfilled peg-out requests. Once all such peg-outs are fulfilled, the +Stackers' STX resume earning BTC and may unlock. + +### Peg Interactions with PoX + +The peg is only active during the PoX reward phase. The reasons for this are +two-fold. First, it helps users build confidence in the system by ensuring +that their peg operations in Normal mode will be honored by a known Stacker +set. This way, each user can judge for themselves how well the current +peg-wallet operators behave before deciding whether or not to rely on them. +Second, it ensures that a peg wallet balance is fixed and known in advance for +up to 150 Bitcoin blocks, which gives the current Stackers a chance to muster +the BTC to send to the next Stacker peg wallet via a peg hand-off, even if they +cannot use the current peg wallet in time. + +If there is no PoX anchor block mined, then peg-ins and peg-outs are disabled +for the subsequent reward phase. The current Stackers must nevertheless hand +off their peg wallet's BTC to the first PoX reward sets' peg wallet address to +materialize, regardless of how far in the future it may be, for the peg to +reactivate in Normal mode and for them to recover their STX. If there is no +PoX anchor block mined, Recovery mode is engaged for that reward cycle to +ensure that peg-out requests can at least be partially fulfilled. + +**The PoX prepare phase is retained in sBTC to select the PoX anchor block, +just as it is today.** Miners burn BTC to vote on the PoX anchor block, which +necessarily falls in the previous reward phase. Just as in Stacks 2.1, the PoX +anchor block's block-commit will be the block-commit with (a) the most +confirmations in the prepare phase by descendant block-commits, or (b) if there +is a tie, the block-commit with the most BTC burnt to select it, or (c) if +there is still a tie, the block-commit that occurs latest in the Bitcoin chain. +The reason for preserving the prepare-phase as-is is to ensure that the PoX +reward sets, and thus the canonical chain tip, can be determined by light +clients and bootstrapping nodes without having to process full Stacks chain +state. + +The removal of long-lived forks from the system removes the possibility of a +deep chain reorg taking place due to the arrival of a late PoX anchor block. +If such a block arrives after its sortition has over 100 confirmations (or +indeed if _any_ such late block arrives), and it is not on the canonical chain, +then the block would simply be ignored by the network. + +### Peg Wallet Quorum Failure + +It is anticipated that the most likely failure mode sBTC will encounter is a +failure to gather sufficiently many signatures from Stackers to process a +peg-out or a peg hand-off in a timely fashion. To minimize the chance of this +transitioning the system into Recovery mode, the protocol does not mandate the +use of the peg wallet itself to fulfill peg-outs and peg hand-offs. Instead, +the protocol only requires that these transactions are valid and fulfilled with +the right amount of BTC. + +This design decision permits a vast array of non-consensus-critical remedies +for loss of control of a peg without entering Recovery mode. For example, +Stackers have the option to do any of the following: + +* Anyone can spend their own BTC, including their PoX-earned BTC, to fulfill +peg-outs and peg hand-offs. + +* Anyone can borrow BTC to fulfill requests, and +pay it back with BTC from the peg wallet once it is live again. + +* Anyone can +refill the peg wallet in the event it no longer backs any sBTC. + +Recovery mode engages once either (1) a peg-out or a peg hand-off times out, or +(2) the peg wallet no longer has enough BTC to back all liquid sBTC. +Short-term peg liveness failures can be addressed by the Stackers simply +fulfilling their duties as soon as possible, or by someone wishing to receive +their pegged-out BTC in a timely manner spending some BTC to unblock the peg +wallet. Longer-term peg liveness failures are more detrimental to the system, +and are addressed through one or more backup scripts (see "Peg Wallet Design"). + +### Peg Collateralization + +A key concern for incentivizing Stackers to faithfully maintain the peg is to +ensure that _foregoing_ their locked-up STX in order to keep the BTC is never +profitable. To do this, `.sbtc` contract imposes a STX-backed +collateralization limit on the number of sBTC that may be in circulation. For +example, the system could start with a cap of 200% -- for every BTC pegged in, +there must be 2 BTC-worth of STX participating in Stacking. However, the +`.sbtc` contract will be designed to permit sBTC holders to vote on what the +collateralization limit should be, or even disable it. These votes would +happen through Bitcoin transactions, so they materialize in all Stacks forks. + +Enforcing a collateralization limit is achievable in-band because each fork's +miners know for each Stacks block how much BTC was spent by all miners to mine +it, and how much BTC the winning Stacks block-commit spent. No oracle is +necessary, because this data is directly recorded to the Bitcoin chain through +the act of mining. Therefore, anyone can query a Stacks chain tip and +determine for any interval of time how much BTC a STX ought to be worth, given +a target miner profit margin. If we assume that miners mine at a perfect +break-even rate, and earn just as much STX as they spend in BTC, then we can +determine a lower bound for how much the Stackers' STX is worth in BTC +(assuming miners are economically rational, and never mine at a loss). + +Using this property of Stacks, the sBTC system will examine the set of valid +(i.e. accepted or missed) block-commits over a long window of prior Bitcoin +blocks, and determine how much the Stacked STX are worth in BTC. The length of +this window is to be determined at a later date, but a longer window is +desirable in order to be confident that miners do not deliberately mine at a +loss in order to create an apparent STX/BTC exchange rate that does not reflect +the market. To this end, the initial window size will be chosen from historic +mining data, and the `.sbtc` contract will determine what the window size will +be on a per-reward-cycle basis through an on-Bitcoin vote (similar to how the +collateralization limit is determined). + +If the peg wallet ever receives more BTC than is considered safe by the current +collateralization limit in the `.sbtc` contract, then the system will delay the +materialization of sBTC from subsequent peg-in requests until one of the +following is true: + +* Stackers lock up more STX to preserve this over-collateralization ratio * +Enough peg-outs are processed such that the total sBTC is once again worth less +than half of the Stacked STX + +* The BTC-denominated price of STX rises +sufficiently so that the sBTC is worth less than half of the Stacked STX + +Importantly, sending BTC to the peg wallet when there is not enough STX +collateral does _not_ lead to a loss of funds. It only delays the +materialization of the sBTC. Wallet implementations would need to monitor the +amount of circulating sBTC and BTC-determined value of STX in order to help +users avoid accidentally sending BTC to the peg wallet only for it to not +materialize in a timely manner. + +The temporary delay of sBTC minting is not treated as a peg liveness failure. +Peg-outs and peg hand-offs continue to execute in Normal mode if this situation +arises. + +## Recovery Mode + +The sBTC system continues to process peg-outs without a peg wallet, albeit more +slowly, by tapping PoX payouts. Peg-ins are disabled altogether; any attempt +to peg-in will cause the requestor's sBTC to materialize only after the system +transitions back to Normal mode. While the act of pegging out sBTC for BTC +will be slower than the Normal mode of operation, the fact that it exists at +all means that as long as both the Stacks blockchain and PoX consensus are +active, then **eventually all sBTC will be redeemed.** This enables the system +to not only keep working in the event of a peg failure, but also provides a way +for the system to transition back into Normal mode. The existence of Recovery +mode creates user confidence in the system, because their sBTC is still both +liquid and nominally representative of an equivalent amount of BTC. The user's +sBTC can even be _traded_ for BTC with someone who does not mind waiting for +the sBTC to be redeemed over time. + +### Entering Recovery Mode + +The system enters Recovery mode in the event a peg liveness failure is detected +in Normal mode. To summarize from preceding sections, a peg liveness failure +is declared when any of the following conditions are met: + +* A satisfiable peg-out request was finalized on all Stacks forks, but was not +fulfilled within 50 blocks of finalization. + +* A new reward cycle began, but +the new peg-wallet does not have enough BTC to back all circulating sBTC as of +the 51st Bitcoin block of the reward cycle. + +* The miners did not choose a PoX +anchor block in the preceding prepare phase. + +These conditions are checked at each Bitcoin block. If any of the above +conditions are met, then Normal mode ceases operation and the system +transitions to Recovery mode in the next Bitcoin block. + +### Block Pre-Commit + +The operation of Recovery mode is solely tied to the blockchain's liveness. +Miners themselves pay BTC to peg-out requests in order to fulfill them, instead +of paying BTC to Stackers. To make this work, it is important to ensure that +the set of miners do not consistently overpay peg-out requests, as doing so +would impose a moral hazard on behalf of peg-out requesters to force the system +to use Recovery mode and potentially earn more BTC than they are due. This +requires changing the way miners participate. In sBTC, the Stacks blockchain +must know two new pieces of information before the next Stacks block is mined: + +* Which miners could possibly win the next block + +* How much BTC each miner +intends to commit. + +If the Stacks blockchain knew this information in advance, then miners could +each calculate in advance how much BTC to set aside for fulfilling a pending +peg-out request. For example, if there were 5 miners, which each were going to +commit 20,000, 18,000, 16,000, 14,000, and 12,000 satoshis (for a total budget +of 80,000 satoshis), and there was a pending peg-out request for 15,000 +satoshis, then the Stacks blockchain could require that the miners paid a +pro-rata share of their block-commits (i.e. 3,750, 3,375, 3,000, 2,625, and +2,250 satoshis, respectively) to the peg-out recipient address in order for +their block-commit to be valid. + +In order to determine this information, the sBTC introduces the concept of a +_block pre-commit_. When a miner submits a Stacks block, it additionally +announces the amount of BTC it intends to spend in the next Stacks block's +block-commit. If the miner does not spend exactly this BTC in its next +block-commit, or if the block-commit does not arrive in the next Bitcoin block, +it will be treated as invalid, and will not be a candidate for sortition. +However, as it is today, missed block-commits will still be tracked for the +purposes of calculating the miner's sortition weight. + +### Peg-Out Fulfillment + +When a miner submits a block-commit in Recovery mode, it does not pay the PoX +reward set recipient BTC. Instead, blockchain builds an alternative _peg-out +queue_ from the `.sbtc` contract's timed out peg-out requests (i.e. those with +over 200 Bitcoin confirmations that have not been fulfilled), and requires +miners to pay to peg-out requesters instead. + +Peg-out requests are fulfilled in deterministic random order proportional to +the fraction of pegged-out sBTC they represent. That is, at each Bitcoin +block, a peg-out request is sampled from the peg-out queue at random +proportional to its sBTC, and miners pay their PoX BTC to that peg-out +requester's address. This way, each peg-out recipient has a non-zero chance of +receiving at least a partial fulfillment in each Bitcoin block. + +Unlike PoX reward sets, the peg-out queue is the same in all Stacks forks. It +does not matter which Stacks fork a miner builds on; it must pay to the same +scheduled peg-out reward recipient regardless. This means that even if a miner +receives a peg-out fulfillment from itself and other miners, it cannot +"double-spend" the peg-out request nor the peg-out fulfillment. Therefore, +mining in Recovery mode is just as incentive-compatible as mining in Stacks +today. + +The peg-out queue is not fixed-size. Instead, an unfulfilled peg-out request +is added to the peg-out queue after it receives 150 Bitcoin confirmations. +There is no equivalent reward set calculation; the request is simply added to +the queue. + +Because miners are paying BTC directly to the peg-out requester, there is a +lower bound on how much sBTC the peg-out requester must possess in order to be +fulfilled. This is simply `number-of-miners * bitcoin-dust-minimum`. There is +no equivalent "Stacking minimum" like there is in PoX. If a peg-out request no +longer represents enough sBTC that it can be fulfilled by miners when it is +selected for fulfillment, it is removed from the peg-out queue and the +remaining sBTC is burned. This means that a small amount of sBTC may be lost +in Recovery mode. It is expected that users who need to peg-out in Recovery +mode will pool their sBTC in order to minimize per-user loss. + +As with PoX, peg-out requests are partially fulfilled two-at-a-time. A miner's +block-commit transaction pays to at most two peg-out requesters' Bitcoin +addresses. This removes any incentive for miners to try and transition the +system to Recovery mode in order to save on Bitcoin transaction fees; this +design ensures that miners' operating expenses are the same in both Normal and +Recovery mode. + +Once the peg-out queue is empty, the system transitions back into Normal mode. + +### PoX Freeze + +When the system enters Recovery mode, PoX payouts are halted in the subsequent +Bitcoin blocks and the BTC that miners would have paid are instead paid to +peg-out queue recipients. The Stackers' STX no longer earn them BTC, because by +failing to maintain the peg, Stackers are no longer providing value to the sBTC +system. This is akin to miners in a blockchain foregoing coinbase rewards by +not mining. In addition to stopping rewards, the STX are kept in `.pox` until +the system transitions out of Recovery mode, even if the STX would have +unlocked. + +When in Recovery mode, all reward address slots in the reward phase are +repurposed for peg-out request fulfillment. There is no lingering +proof-of-burn period, because there are no unused reward slots. + +Recovery mode can last for multiple reward cycles, and new PoX anchor blocks +(and thus new Stacker sets and peg wallets) may be chosen during Recovery mode. +However, the system would remain in Recovery mode until all of the conditions +are met to restore the peg's liveness (see "Leaving Recovery Mode"). +Newly-stacked STX would be immediately frozen along with all of the current +STX. The peg wallet address would be re-generated in each reward cycle, as +before. + +To de-risk a permanent quorum failure, the peg wallet address is designed to +have at least two spending conditions: one condition when the quorum has been +reached (i.e. Normal mode), and one or more conditions that only activate once +a certain number of Bitcoin blocks has passed. In these conditions, other +signers can recover the Bitcoin and send it to the current peg wallet +(described below). + +## Peg Wallet Design + +Despite the fact that Recovery mode exists, it is very important that the peg +wallet be designed so as to minimize the chance of a _permanent_ loss of +liveness. This event is indistinguishable from the outright theft of this BTC +in terms of the downstream consequences to Stacks. While Recovery mode will +eventually allow all peg-out requests to be fulfilled, the permanent loss of +the peg's BTC will in all likelihood lead to an irreversible loss of confidence +in the system for the foreseeable future. + +This has two important implications for the design of the peg wallet address: + +* It should be possible to create a peg wallet address that enables BTC +recovery by a different set of keys than the Stackers after enough time has +passed. + +* Because Stackers must generate the peg wallet in advance, it should +be possible for the blockchain -- i.e. STX holders -- to not only determine the +keys themselves, but also determine the means by which these keys are chosen. + +To remedy this, the peg wallet will be implemented such that at least two +spending conditions are present: + +* **Normal script**: Signature(s) from Bitcoin key(s) that represent 70% or +more of the locked STX may spend the Bitcoin, OR + +* **Backup script**: The +Bitcoin block height is at least one reward cycle in the future from the end of +this Stacker set's reward cycle, AND a given backup script is satisfied. + +The first script encodes the Normal mode behavior -- enough Stackers are online +to sign a Bitcoin transaction representing at least 70% of the locked STX. + +The second script encodes a Recovery behavior. If there is a peg liveness +failure, then after the current reward cycle finishes, the peg wallet's BTC +can be spent by satisfying a condition of the backup script. This backup +script is either decided by STX holders within the `.sbtc` contract itself, or +if no decision is made, the system generates a sensible default backup script. + +The principals who can satisfy the backup script are entrusted to send the BTC +to the current peg wallet address, thereby allowing the current peg wallet's +Stacker set to restore the peg's liveness. To help ensure that this is the +_only_ thing that can be done, the Stacks blockchain will _halt_ if it detects +that the backup script was used to transfer the peg-wallet's BTC to _any other +address_ besides the current peg wallet. + +### Creating a Backup Script + +Ultimately, the choice of the backup script is made by STX holders voting +through the `.sbtc` contract itself, but via one layer of indirection. STX +holders vote for a smart contract that implements a "_backup steward_" trait. +This smart contract, in turn, produces the backup script to be used for a given +reward cycle. Votes are cast on the Bitcoin chain to ensure that they +materialize in all Stacks forks. + +The reason for this layer of indirection is to allow a DAO or some other +governance structure to be created for managing the peg backup script, such +that the means by which the script is chosen can be specified at a later date +by the STX holders themselves without a hard fork. The backup steward +implementation can have its own procedures for voting on which keys are to be +used to generate the script, for example. This de-risks the possibility that a +backup script generation algorithm proves too untenable for use; such an +untenable algorithm could be replaced in-band. + +If no script is decided, then the backup script will be generated such that a +quorum of 50% of the previous reward cycle's stackers (weighted by STX stacked) +may recover the BTC. + +### Selecting a Custom Backup Script + +The backup steward trait definition would only contain a single method: + +```clarity +(get-backup-script (reward-cycle uint) (response (optional (buff 1048576)) (uint))) +``` + +This method would take the target reward cycle as its sole argument, and +optionally return a Bitcoin script. The smart contract that implements this +trait is free to take any action it wants to implement this method. + +The `.sbtc` contract would enable STX holders to choose the address of this +smart contract through a majority vote on the Stacks chain. To minimize miner +interference with votes, they would do so by first calling a function that +commits their STX to a salted hash of their preferred contract identifier. +Then, once the transaction finalizes, the `.sbtc` contract would allow anyone +to reveal the hash preimage and salt via a separate function. This way, miners +do not know what contract is being voted on, and would not know this until +there was no way to censor or reorg the vote. + +The act of revealing the backup steward contract address and salt can be done +either through a Stacks transaction that calls into `.sbtc` to do so, or via a +Bitcoin transaction that does likewise (see Appendix A). If the latter option +is taken, miners are required to process it in any subsequent Stacks block on a +fork that does not yet include it (thereby materializing the revelation in all +forks). + +## Fork Rules + +This proposal preserves Stacks' Nakamoto consensus in order to remain resilient +in the face of node churn and network unavailability. The ability to fork +gives the blockchain a degree of resilience not found in traditional replicated +state machine systems (including PoS blockchains): there is no barrier-to-entry +to become a block producer, and the system will converge on the same canonical +fork history as long as there exists a BFT-majority of connected block +producers. + +However, a key challenge to designing a 2-way peg between Bitcoin and a +blockchain with Nakamoto consensus is that the blockchain can fork, potentially +leading to inconsistencies between blockchains forks and Bitcoin forks. Stacks +addresses this challenge in two ways: + +* Stacks blocks are tied to Bitcoin blocks, so if Bitcoin forks, the Stacks +blockchain's nodes will automatically track both forks. This ensures that +Bitcoin forks do not produce inconsistent Stacks forks. This is the behavior +of the system today. + +* Stacks maintains Nakamoto consensus for a fixed number +of Bitcoin blocks. That is, Stacks can fork independently of Bitcoin, but each +block in Stacks cannot have a parent that was mined more than 100 Bitcoin +blocks ago. This is a proposed change to the system. + +This latter design point is required to ensure that Stackers can redeem sBTC +peg-outs in a timely manner while preserving peg safety. If Stacks can't fork +beyond 100 Bitcoin blocks, then a peg-out request cannot be invalidated by +Stacks miners after 100 Bitcoin blocks have passed. While limiting the fork +length is necessary to implement sBTC, it introduces some challenges to +preserving system liveness under adverse conditions: dealing with the threat of +a persistent 51% miner, and dealing with the threat of a miner that does not +disclose blocks. + +The reader will recall that Stacks miners produce blocks by first sending a +block-commit transaction to the Bitcoin blockchain, which contains the hash of +the Stacks block. However, because Stacks is a single-leader blockchain that +can fork, there is no protocol-level requirement for the Stacks miner to ever +broadcast their block to the Stacks network (there are, however, incentives to +do so -- doing so is the only way in which the miner can receive a block +reward). What this means is that a malicious Stacks miner can effectively +decide the set of chain tips if they win 100 blocks in a row, and halt the +Stacks chain by winning 100 sortitions in a row and never announcing any Stacks +blocks. + +This proposal addresses both scenarios in three ways: + +* We increase the +economic cost to produce forks after a short time horizon. To produce a fork +of at least 7 blocks deep, the miner must have the explicit support of a +majority of the locked STX. + +* We provide a way for Stackers to preserve the +safety of the peg if the attacker wins up to 99 blocks in a row by culling +forks whose sBTC balance state is inconsistent with the peg state. + +* We +provide a way for a majority of Stackers and a minority of honest miners to +work together to thwart a hidden block attack before the attacker can win 100 +hidden blocks in a row. + +Now, the security budget of the system is no longer just the mining budget. In +the case of double-spend attacks whereby the attacker unwinds the last 6 Stacks +blocks, we make it so the attacker must control a majority of locked STX in +addition to the majority of mining power. In both chronic 51% and hidden block +attacks, we make it so that if honest miners can produce and broadcast one +Stacks block for every 100 sortitions, the system will remain live, and the +attacker's fork (hidden or public) will never become the canonical fork if its +sBTC state is revealed to be inconsistent with the honest fork. To halt the +Stacks chain, the attacker must vastly out-spend all honest miners for 100 +Bitcoin blocks. Even if the attacker succeeds, the peg wallet itself remains +safe -- the only way to steal the peg wallet's BTC is to control 70% of the +locked STX at the time of the attack. + +### Block-commit Lifecycle + + +In this proposal, a Stacks block-commit goes through three phases as the chain +grows: the **unconfirmed** phase, the **frozen** phase, and the **finalized** +phase (Figure 1). + +![Figure 1](./figure-1.png) + +_Figure 1: Finalized, Frozen, and Unconfirmed Stacks block-commits (all +unblessed). At most one of them is the highest frozen block-commit. Note the +typo in the figure -- a finalized block-commit is mined **100** Bitcoin blocks +in the past, not 150._ + +* A Stacks block-commit is **unconfirmed** if it does not yet have 6 Stacks +confirmations, AND, it descends from the highest frozen block-commit (see +below). + +* A Stacks block-commit is **frozen** if it either has at least 6 +Stacks confirmations OR it does not descend from the highest frozen +block-commit (see below), and the Bitcoin block it is mined in does not yet +have 100 Bitcoin confirmations. + +* A Stacks block-commit is **finalized** if it +has at least 6 Stacks confirmations, and the Bitcoin block it was mined in has +at least 100 Bitcoin confirmations. + +* Once frozen, it stays frozen. Once +finalized, it stays finalized. + +Because there is at most one Stacks block mined per Bitcoin block, then once +there exists a Stacks fork of 6+ blocks, then there exists exactly one +**highest frozen block-commit** in the chain, which was the most recent Stacks +block-commit to get 6 Stacks confirmations. The highest frozen block-commit +advances whenever a new Bitcoin block is appended to the Bitcoin chain which +contains a new valid block-commit. + +### Stacker Blessings + +While a block-commit is in the unconfirmed or frozen phases, it can be in one +of two states: blessed and unblessed (Figure 2). The introduction of a blessed +versus an unblessed block-commit is what empowers Stackers to help miners +overcome a hidden-block miner, even if the hidden-block miner has the vast +majority of the mining power. The differences are as follows: + +* Unblessed block-commits are just normal block-commits. + +* Blessed block-commits +are either selected by a majority of Stackers, or they descend from the +block-commit that Stackers blessed last. + +* Miners can build off of any blessed +block-commit (or any of its descendants). They cannot build off of frozen +block-commits that are not blessed. + +![Figure 2](./figure-2.png) + +_Figure 2: Block-commit states and state transitions. All non-finalized +block-commits' states, as well as the identity of the highest frozen +block-commit, are re-evaluated upon the arrival of a new sortition, which may +produce at most one block-commit and bless a frozen block-commit (thereby +revoking all outstanding blessings)._ + +A _blessed_ block-commit is a heretofore frozen block-commit that Stackers +permit miners to build off of. They permit this in order to enable honest +miners to recover from the scenario where the highest frozen block-commit's +Stacks block is hidden or has a hidden ancestor (rendering it unprocessable). +By blessing a frozen block-commit, Stackers enable honest miners to "fork +around" the unavailable data. + +Stackers may select any frozen block-commit to become a blessed block-commit +with a majority vote (as measured by locked STX). This vote is broadcast to +the network as a Bitcoin transaction to ensure that all Stacks nodes will see +it. Stackers vote individually; they do not need the peg wallet to be live to +activate a blessing. + +The ability to permit mining deep forks introduces the possibility of allowing +malicious miners to reorg the Stacks chain back more than 6 blocks. However, +the harm that could arise from this is mitigated by the fact that the _only +legitimate reason_ for Stackers to bless a block-commit is if (1) it is an +ancestor of the highest frozen block-commit or (2) the network does not seem to +have the Stacks block for it, or one of its descendants. Such a scenario will +be widely apparent (meaning that users, wallets, and exchanges would simply +increase the number of required confirmations before accepting transactions). +Similarly, any attempt to abuse the ability to bless block-commits will _also_ +be widely apparent. So, honest miners would be able to identify and ignore +illegitimate blessings should they ever arise, and the only way an illegitimate +blessing could be weaponized to bring harm to users is if the attacker both +controlled a majority of locked STX and mining power. + +Once blessed, a block-commit can be in one of two states: **unconfirmed** or +**finalized**. Miners can build on unconfirmed blessed block-commits _in +addition to_ unconfirmed unblessed block-commits. They may freely and +individually choose which commits to build off of. + +All unconfirmed blessed block-commits descend from the Stacker-blessed +block-commit. A blessed block-commit that reaches the finalized phase loses +its blessing -- it can no longer be built upon. + +There is at most one blessed tree of block-commits in the system at any given +time. If Stackers bless a different block-commit, then all existing blessings +are invalidated -- the prior blessed block-commits are no longer blessed, and +miners can no longer build atop them. This gives Stackers the ability to +re-attempt recovery from a hidden block attack should the attacker also attack +the nascent blessed fork, while also ensuring that Stackers do not arbitrarily +open mining to any Stacks block of their choosing (which could be exploited by +malicious miners trying to reorg the chain). + +If the longest blessed fork receives more Stacks confirmations than the +canonical fork -- i.e. its tip has a higher height than the heretofore +canonical fork -- then the blessing disappears and this new block becomes the +canonical tip (Figure 3). + +![Figure 3](./figure-3.png) + +_Figure 3: Once a blessed fork (in red) receives more confirmations than the +missing canonical Stacks fork blocks (missing blocks are marked with "?"), then +it becomes unblessed and this fork becomes the new canonical fork, with a new +highest frozen block-commit and a new set of unconfirmed blocks. Other blessed +forks become frozen._ + +These new behaviors give the system the following properties. + +* There is exactly one highest frozen block-commit across the entire Stacks +chain across all of its forks. The only exception to this is if there are +fewer than 6 Stacks blocks _anywhere_. + +* The highest frozen block-commit's +height monotonically increases. When a new Stacks block is mined, its parent +will either be the canonical Stacks tip, or it will be a sibling of an +unconfirmed Stacks block. In the first case, the highest frozen block-commit's +height increases by 1. In the second case, the highest frozen block-commit's +height is unchanged. + +* When mining off of unblessed block-commits, the highest +frozen block-commit at Bitcoin height N will either be the same as the one in +Bitcoin height N+1, or it will be the parent of the one in Bitcoin height N+1. +This is _not true_ when considering blessed block-commits. + +### Rules + +By introducing both lifecycle phases and Stacker blessings, this proposal +creates a new fork-choice rule for Stacks: the canonical fork is always tipped +by the highest descendant of the highest frozen block-commit's Stacks block, +even if the block for it is not yet published. + +In doing so, the system creates a new miner rule: a miner can mine off of any +descendant of the highest frozen block-commit (i.e. any unblessed +block-commit), and it can mine off of any descendant of a blessed block-commit. +Miners freely and individually choose which member of this set of block-commits +to mine off of. A miner cannot mine off of any other block-commits. + +### Finalization + +Once a block-commit receives 100 Bitcoin confirmations, it can no longer be +blessed. + +When Stackers fulfill a peg-out request, they invalidate all Stacks forks in +which the peg-out would result in an inconsistent chain state (i.e. someone's +sBTC balance becomes negative). These forks will never be treated as canonical +as long as they contain such inconsistencies. As such, the act of Stackers +fulfilling a peg-out request that materializes in Stacks block B is declaring +that any Stacks fork that descends from B might be canonical (i.e. the +canonical fork must include B). + +Consequently, the act of processing a peg-out is used to keep the chain alive +even if someone manages to mine 99 block-commits without disclosing their +blocks. As long as there exists at least one valid publicly-disclosed block, +then Stackers can use it to authenticate and process peg-outs and in doing so, +require that block to be part of the canonical chain. This enables miners and +Stackers to prevent a hidden-block miner from halting the chain while spending +far fewer resources than the attacker. It also prevents a 51% attacker from +denying sBTC transfers and peg-outs: if any sBTC transfer materializes in the +honest fork, and Stackers process at least one peg-out on that fork, then the +51% attacker's fork is obliged to _also_ process the _same_ sBTC transfers in +order to keep their fork canonical. + +# Related Work + +This section is not done yet. Notes follow. + +* PowPeg in RSK + + * Requires HSMs on a majority of Bitcoin miners (brittle; +closed-membership) + + * Has a token with coinbases to incentivize validator +liveness regardless of tx volume (good!) + + * Probably the closest system to what +we're building + +* Sidechains / drivechains + + * No incentive for validators to +process transactions, outside of miniscule tx fees + + * No compelling answer for +dealing with sidechain reorgs (Bitcoin miners have to fully validate, which +does not scale) + +* Liquid + + * No incentive for validators to process transactions, +outside of miniscule tx fees + + * Closed-membership federation is brittle and its +admission process is opaque + + * Why should users trust certain federation +members' decisions? + +* Merged mining + + * Requires majority Bitcoin miner + +participation (risky without 100% participation -- one Bitcoin miner could have +majority merged-mining power, like with Namecoin) + + * Bitcoin miners must +validate merged-mined chain (does not scale) + +None of the above can recover from a peg failure. + +Marvin Janssen (of Ryder) has a proposal for a "Bitcoin train" taproot script +for recovering from a peg liveness failure that should be given further +consideration. + +# Backwards Compatibility + +Two properties from the Stacks blockchain are dropped in this proposal: + +* **The ability to mine off of any prior Stacks block.** To date, there has +never been a Stacks block whose ancestor was over 100 Bitcoin blocks back (or +even 10 Bitcoin blocks back). Every deep fork in Stacks that has ever arisen +was due to a bug, not miners leveraging this feature. Furthermore, the +necessity of this feature is questionable, since its need is motivated by an +already-catastrophic blockchain failure (in which case, other remedies such as +hard forks would be viable alternatives). + +* **The ability for miners to choose their block-commit value on-the-fly.** In +this proposal, miners must choose a block-commit value for the next block they +intend to mine. However, to date miners do not appear to dynamically adjust +their PoX expenditures every block as it is, so this feature's ongoing utility +is questionable. + +# Activation + +This section will be filled in with the advice of the CABs. + +# Conclusion + +This proposal describes sBTC, a novel Bitcoin 2-way-peg that offers a +PoX-powered recovery procedure for temporary peg liveness failures while +rewarding the peg wallet's stewards (Stackers, via PoX) for staying online +regardless of how much or little peg traffic exists. The proposal sacrifices +forks of arbitrary length in order to handle peg-ins and peg-outs of arbitrary +size in a fixed amount of time in an in-band fashion, while keeping mining and +Stacking running in an open-membership setting. Building the peg on Stacks +avoids complicated designs related to Bitcoin forking by ensuring that the peg +state exists in all Bitcoin forks. By making sure that Stacking and +peg-operations materialize in all Stacks forks, we additionally ensure that +mining on the canonical chain is always the most profitable course of action +for miners. + +# Appendix A: New Transactions + +This section describes the wire formats of the various sBTC Bitcoin +transactions. + +### Peg Hand-off Transaction + +* **Description**: This is used by the current reward cycle's Stackers to send +the pegged-in BTC to the next reward cycle's Stackers' peg wallet address. + +* **Opcode**: `H` + +* **Data** + + * **Bytes 3-11**: The reward cycle number +(big-endian) corresponding to the Stacker set doing the hand-off + +* **Output 2**: the new peg wallet address + +* **Notes**: Anyone can send a hand-off +transaction in order to (re-)fill the current reward cycle's peg wallet. This +is used to recover from loss of BTC due to transaction fees, or even wallet +theft. + + +### Peg-In Transaction + +* **Description**: This is used by an sBTC user to peg-in BTC and materialize +sBTC. + +* **Opcode**: `<` + +* **Data** + + * **Bytes 3-80**: c32-encoded Stacks +address to receive the sBTC + +* **Output 2**: the current peg wallet address + +### Peg-out Request Transaction + +* **Description**: This is used by an sBTC holder to request a peg-out * +**Opcode**: `>` + +* **Data** + + * **Bytes 3-11**: The number of sBTC to peg-out, in +satoshis (big-endian) + + * **Bytes 11-76**: A 65-byte recoverable secp256k1 low-S +signature from the sBTC owner's private key(s), over the SHA512/256 hash of the +bytes consisting of + + * the number of sBTC (bytes 3-11 above) + + * Output 2's +scriptPubKey + +* **Output 2**: a dust output with the recipient Bitcoin +scriptPubKey + +* **Notes:** This representation includes the signature in the +`OP_RETURN` instead of the scriptSig or witness in order to separate the Stacks +account holder from the Bitcoin holder who will send this transaction. For +example, a Stacks user might receive sBTC but have no BTC with which to fund +the peg-out. In this case, the Stacks user could use a peg-out service to +create and broadcast a Bitcoin transaction on their behalf (possibly via an +atomic swap on the Stacks chain, in exchange for some sBTC or STX). + +### Peg-out Fulfillment Transaction + +* **Description**: This is used by the Stackers to fulfill a peg-out request + +* **Opcode**: `!` + +* **Data**: + + * **Bytes 3-35**: The Stacks block tip whose chain +state view was used to validate the peg-out request + +* **Output 2**: pays to an +existing peg-out request transaction's scriptPubKey + +* **Notes**: Anyone can +send this transaction to partially or completely fulfill a peg-out request. It +does not need to be the Stackers themselves. If this was sent by Stackers, +then the block and its ancestors effectively must be canonical (or 70% of +Stackers were lying). This has implications for when peg-outs are fulfilled +when the majority of block-commits' block data is hidden by an attacker. + +### Block Pre-commit + +* **Description**: This is a modified block-commit transaction in which the +amount of BTC the miner will spend on its next block-commit is disclosed. + +* **Opcode**: (same as a block-commit) + +* **Data**: (same as a block-commit) + +* **Output 2-3**: (same as a block-commit -- this is either 2 PoX outputs or 1 +PoB output) + +* **Output 4**: a change address that will be spent in the next +block-commit transaction, whose satoshi value will be equal to the value spent +in the next block-commit's PoX or PoB outputs. + +* **Output 5**: change address +for the remaining BTC + +* **Notes**: The block pre-commit transaction must +consume both change address outputs. This not only implements the mining +window, but proves that the miner committed in advance to paying an exact +amount of BTC to mine. + +### Backup Steward Contract Reveal + +* **Description**: This is used to reveal a STX holder's choice of a backup +steward smart contract. + +* **Opcode**: `b` + +* **Data**: + + * **Bytes 3-80**: The contract identifier + +* **Output 2** The 20-byte salt, as a p2wpkh scriptPubKey + +* **Notes**: Anyone can send this transaction. It will reveal at most one salted +hash in the `.sbtc` contract. It is expected that most users will just commit +to the salted hash, and privately disclose the contract identifier and salt to +a service that will send this transaction on their behalf. + +### Collateralization Parameter Vote + +* **Description**: This is used by a Stacker to vote for the parameters of the +peg wallet. + +* **Opcode**: `C` + +* **Data:** + + * **Bytes 3-11**: A big-endian +64-bit unsigned integer representing the size of the sample window for which to +derive the STX/BTC exchange rate, based on miner activity. + + * **Bytes 11-13**: A big-endian 16-bit unsigned integer representing the collateralization limit +as a whole-integer percentage. For example, a value of `200` indicates that the +locked STX must be worth at least 200% more than the sBTC in the peg wallet in +order for more sBTC to materialize. + +* **Notes**: Any sBTC holder can send +this transaction. New parameters take effect in the next reward cycle if (a) +the sender has _not_ touched their sBTC in-between when they voted and when the +reward cycle begins, and (b) the new parameters are backed by at least 70% of +the liquid sBTC. + +### Stacker Blessing + +* **Description**: This is used by a Stacker to vote to bless a block-commit. + +* **Opcode**: `B` + +* **Data:** + + * **Bytes 3-11**: A big-endian 64-bit unsigned +integer representing the absolute Bitcoin block height at which the target +block-commit can be found + + * **Bytes 12-14**: A big-endian 16-bit unsigned +integer representing the absolute offset in the Bitcoin block at which the +target block-commit can be found + + * **Bytes 14-69**: A 65-byte recoverable low-S +secp256k1 signature over the data between bytes 0 and 14 and the previous +Bitcoin block hash. The signature must be from the Stacker's peg wallet key. + +* **Notes**: Any Stacker can vote individually. The system tabulates votes +and declares that a blessing has taken place if a majority of the current +reward cycle's locked STX has voted for the same block-commit. +