From 3b928a1c0544d8c117133cf80c4a3bcc58697345 Mon Sep 17 00:00:00 2001 From: whilefoo Date: Fri, 29 Mar 2024 12:26:38 +0100 Subject: [PATCH] feat: permits --- .cspell.json | 2 +- .github/workflows/compute.yml | 2 +- bun.lockb | Bin 0 -> 424484 bytes package.json | 5 +- src/adapters/supabase/helpers/wallet.ts | 4 +- src/handlers/generate-erc20-permit.ts | 95 +++++++---------- src/handlers/generate-erc721-permit.ts | 124 ++++++++++------------ src/handlers/generate-payout-permit.ts | 130 ++++-------------------- src/index.ts | 75 +++----------- src/types/botConfig.ts | 56 ---------- src/types/context.ts | 2 + src/types/env.ts | 12 +++ src/types/permits.ts | 71 +++---------- src/types/plugin-input.ts | 29 +++--- src/types/typeguards.ts | 2 +- src/utils/helpers.ts | 26 ----- src/utils/payoutConfigByNetworkId.ts | 10 +- 17 files changed, 183 insertions(+), 462 deletions(-) create mode 100755 bun.lockb delete mode 100644 src/types/botConfig.ts create mode 100644 src/types/env.ts diff --git a/.cspell.json b/.cspell.json index db0c387..a2af128 100644 --- a/.cspell.json +++ b/.cspell.json @@ -4,7 +4,7 @@ "ignorePaths": ["**/*.json", "**/*.css", "node_modules", "**/*.log", "supabase"], "useGitignore": true, "language": "en", - "words": ["dataurl", "devpool", "outdir", "servedir"], + "words": ["dataurl", "devpool", "outdir", "servedir", "typebox"], "dictionaries": ["typescript", "node", "software-terms"], "import": ["@cspell/dict-typescript/cspell-ext.json", "@cspell/dict-node/cspell-ext.json", "@cspell/dict-software-terms"], "ignoreRegExpList": ["[0-9a-fA-F]{6}"], diff --git a/.github/workflows/compute.yml b/.github/workflows/compute.yml index dadd8dd..be8e555 100644 --- a/.github/workflows/compute.yml +++ b/.github/workflows/compute.yml @@ -30,7 +30,7 @@ jobs: node-version: "20.10.0" - name: Install dependencies - run: yarn + run: npm install -g bun && bun install - name: Generate Permit run: npx tsx ./src/index.ts diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..594ad896abe9a167cd61ab58f2f9fccfc88065fb GIT binary patch literal 424484 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


HPga5 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

*NJ z3TM78ia%-k_Sa!p;7g6~QbkZGBm6JL%woa64I!ic$6;aCIa%7`B=REg=Ldj$0J@bh z)|eub->~5+I8|@hoGBCT8(;8NL^x&)F?I4jrHK-B1#DNzS9cJtbS5Qi1uFkDSbxZ z#olR^fj4uX3Gd7=8LbXVh%{Re1*y{s6@e6Rk3g3vy5Xz8TnO@h(fk?>Zf;803VAvb zGfQ!nrAxV3uB1`OW@qt|TedU5s8OG6_Z?H_y8q?{5_3)cnU9)s@lf#vx^ ztNxpU^-$8CSBnZ3b9p?5(C`aO_~XA(GHYx`pNIHyw%RAsJ!~vL>duRgW`8=D#VIxN z4~UE;Vcvt|$|s?2aXMG5lT84 z#^IX}-JfCCh1#7e%!I{;Q9Fwm+>>@fwX(e*zGiP1RJOsM$(Dh1Jb-%!y4IBTlfOO4;F~lB%Z8JR3xks=E@F z^Dg9wodNe8bbYJ&o_^gyDqsp!sqwR%Sk$xI&f9G}*8C>D>8IJ{O=mHyBZwI?qr~`) z_|-Nf?U!c{EreO%FR}l&taMj&wci8oZ_s6z7OfQMMNj-QjLE++?CPLebfnR^q_fhc z#vvmaKJg0~Y1uoY%p}4rJ*7L@3xeYyCwXd1E9i?I#@jM1+5;NkUVyH+M~2I4jWr?X zup_P{MBf6V@Ta1veB-*jj zpYAgN_YdeAIKp+J5ObVBo)jYt|6mqn#H#l>k6d=wC0tzB(Udphx;1ECk|(n7A;c`+ zrW0A!ndnN7DPYlkuY?th$ykL5xR;>I?Gq?>V-VOMP#`6M`(FM^iuzk$feZ^_M4AE0 z<8C+K^SsDwPCxQM+Dy(1vJ*B|t2PmdJgn+nvv$)^Mzf?H;9i05vxZsp%&jo`bpC85 zl~jdI-HSRTi}3b{1Dvlx;-ehx55HzwQ3QC}8;OF7NKxG`4V2#+3}kG?#d$Y0S4!DJ zfO`$P{3GkpCCfHiF$6O+^V?|p79t9d(>tcZmHY*i)d#6D5SeHZ-Pdj$!PBw0D_gw1 z@Xx(^dKb=icD?H%qjff@fO`YF^~^J$V;Ypl+D_`wvG4PmZ6{n!s|s;uA88tv)oAS= z_?sP)<>#Txj&}1DvB?MC@KaYxEmxD z0<=9=dBRHF?D*am#{l;pbSb7WjFYqOJkp3TdEVT4t9iBprFU4Unp1YdLw15C8kCO@ z`9}pZZCuNd+;nc37nR>Wr*Y$cIjXM=!@nRu1?K}EKv%vmNY$CiyJX8DeW|<2dx zY(6aTg~Fl9Lq{s9vk}#e@3G3Hg79;McK4R!`MbZ2y-KHBxb+e?d2= zt6Tega_SJXBx_lsg!!L6zEZ~c;NmH&Zn-^i&THg>k-9)=W|NB8;(ElJG4HoO;i;(> zitH*4Z7aTJcZA^n`A5*j*GwCcyglc*G9u4s;4_Cel4*X?c1mPmxxh?loTGG_9!=&+ z55?&A%HX|tCaFV4Y)mMK!^C{gr#r|qR(TFy&z?Y+InM9M|J$31XJ`?BgoTvvBKN|H zk?0R^3mU8xna)HW!8a6G+B!n4YxCF5emLO^kMjTsp$0fc4E}tV1~Dt}y7LUW;|CGg z$|{#=sX6`Tq)w88>Geqe`Z324LP`%HebNIADhYnr|IH$<b`0(&iYO9Yn zzx;RRXNc{;`)Dy+MyUmmZbp7)%6+&9s^GZXKhRxmE0#=@eUJGDj~C0Q7cTQbA@(%E zGje^*;X+B&X|(}4so=L9lXhBr@*vp<26~2r+=OLS)~ROJl0-vn&bRjbN=(gixt}OpEsk|6{n&*6KN@R zf~q!0ig!*W?{rGav-r==G)S(WX3Fzguz(8z_1~BO{{zj@&IK)mG&sWoU5rvur1_Au z+&k*GlX-jz_X@Fg(-CxonN==|*IYHnh5q+1*<>`7 z2q=2ybgtQ9z10u?C2VMj`S|ZF(iLSgvt{c1C=q{~T5j_zIKlb;@bJ68<2a#;9LEOk1zslv8@m!J*pB~7Pq5qXT9!ac^_ zmLj6=UB-wE=?3n*g#+EA$YV}cD_cwXR7Z7vhIW;_orO1E0pq2l9D`X8rJoPR_#03#%`pu!A zJc?3@8}j?dqD9wE()Z$QObV4`*y&4~cX^U6MyLZP?L{QIX!F}aIT?QJKz%=e?%Dz} zg&*Vc{J+SiH{^EL?vW^{-KhHa|E<|^77+jD{X6ZlQ~Ni+XeL3L2Iqb&e1L zD{{q$Ln+K?NwEDQfbMPrqC%A=s@8-7gTqB=G@5BP$N33wN{!c08(vw8;(MKwbnX>0 z$ssPfS8{xAvC9C7rcu6bKYrEdpW;{KL*_tUM9|$c3%Z<-L&y1?GfS@W{&VF&jeh}` zH7etMDi`u`p5$LOT=z5mW9r&R#ty67Mxrh-Y1XF&f^c4UY;6}ENNeW+7YTH8YoxZ+ zN(adjEU9(<@f?go4t|Wth)F5G^EGWyhYC$eBKdKs=8Bsl$ZyLC`B81E-3v`GG86aF z&7ZB5cqFg_aFIb**c6+%kZ<5=UBup7&TjqaU$0&0twKv@=~?B&Fr}nZP>&F+UAx%# zK<-PLL)Jo({m5H!>GJ~$v7Cj=4gnW4z(oPwA1w~OZtiz#r3+D#EML7W#;p`O5F|!X zGyE2=;>O!-;q=z*&3Kg8;o?<4tJxk5sw;^;E_g0Oal)bQB>HMN0xl}(T6*wr#XGg7 z2vmnTX@$Q(?+{H=d_RXdGU6glv?|n<#1_@o=mI}xP&0+4>3u>Gm$Am*f~D6>S{tuu zR*@S5&NHBaZn9wK?|+(%?`>v~k^jQekg6-4{x>1(Er77$?vagCMkr&KIHWCRCISDk zePVy74kB9AGxBJT1;T4u<;L?<5IT?-9dzGFm`NYhtS@bBL>m=NCuw*n8Q)q+&g+Ur zjp5&&Gvabp1z>Rz1zlo(<}xEw$Gzs=JTBDIme3nXgu-2m$TbFB4A6ZZadi1KnvEh} zRF5;Uf!0tvUW+fo_36s^*zWz`g$HjblP(cVu?~z~N#Xf~GR5O!y_ zzJ~RUSgKQkpX~8lS9*ixu#HZ~3_i2{#Oz|sasIkgx=BLC8P)Uh@pbqWPLgT=U3rF# zSv-&z2Xv8eGtIh!YFDHKf`xjPHUE1zCX3sckj58DQX8$TYIcXNf?Vufk&vb$k`GfK zP}6UFu=R*kMmJ8`d;J7&Jh=)17Z-G2e|r==)r2?KddA35h+ZU4;iRVjjTGlgJDvH6(@H|PrR(EX#Ts+VXP9OMWzQ1?DgD3!B zE)M(Et@uFm+S6q16Y0SUG~uu4^qSU+Y5(nFs7eeTDs44b!k)eagh)csI(NfLzR^5z zoE9H+(dN@XbRyLnbIv?5Jril;kjPV3^_?MhF1=4L_F?Hg7h}xq+4Wf&O?|G}f$OD7 zuHEf-C47FzBlxi(acb{#8<3X(bmP{xm8<9}{@5_Fnz;48?0fVxrx;c@HlpiP)0TGo z#OuFzeAd{_)^}pzxm+M3o0?pbg@eEs4oMlyrus$y6I>5N2)fG=+0YfV*-E~8JerQG z=?b*6k1!q=#ex@qIHp3Z?)n}TvU}6emJ1-6WVdXnIbG?*U?g!Mb;mJJ-B^ohrkX^EQIJH%18q8l7Oz|`3o^AORX(+Ou2Qa z)6!wo)2Ov#-$k&cEtBGnqu_n?PnAo7=)0q>FOJvWRnHiY^^OJ1?}0=vuI zMw|TO>0zsgdS~3uC2wy}OZ3=AZg)a`FT1TOTMxpYPlu4T)JXKlWO@1z1i0)@Kwb*a z_1La%$yiQ`$$;B$w`_wfQH^Jy4G}Aq!o(@rexd3qjmB2!HpDy&!Sz&{zqXPH9lw!M zNX|4pIk!-gp#Jm41aK)qw~CI+5t7PJtpsb`zr1ZpzR4hEfcN@r^{lAdlDan9CcKMs z=>yNlPh67ygGo>)ldZR>4pF2~d$v>c-{$)c0sxl^bfGq>Gm)cxQZlzce}dIrYrIW{;jt#{3GXD(ne3Jj_#8g+jq~=Cq&-L0pWjdD%}+&o;Xf2DSMlJ%!+s zwg2x(5sg;&5})5lYx7zx+H`O*@Tx!pk1r;k%eRr}caQZaMl=RN&Qxj)pbr1d4GW2)~U(=U6IJ3$u4f8u^ z4N7IYR6!dJi$9dIqR$K9I3him_iIj9`njbwJApK|W?*F7qGC)YJDJgBvg5MdcYf)M z!buCeM@ZQ(v#&KRNS6!crTh1^PfHr#h}?Brt>r2Z%Kyvuzv~$T=yLzTjOf8Zv=$K1 znBI2e&>*q2drYSBSz&}JkdL58$b5_#DGlweJUooKxj0+LAZeXr_KAe}jbp6|n}uMB z4qks5L6@4fY%JqjRQX-=EDQ#rvDZw5N2c!-Dk{{dCpItdc9^XbV`ZJwAQheU-Kx877&KIJFF$&VvR}% z@TH{h~@ZkH64P@{ICIv!Koqj+6x3CdDhFyCPXwhj&~-P^B& zQ}YDLN<*2>=`m~gN{!d(l zcF@fWx=9#K42qqorp+)i?JAJySL*nk`@)T$>F{=pPBu?O-)A*<0qGkgLHW|PLmt&i zAKGurmW7feKEmBH)NKd29H2W>VOs90(bdfUVeqa2+E1Uov9mf^R2=cR-|GA+4i-pdey?K;6`)dDv3`ks>jYo{DowI%L%$LOUL6U-i=68c=jQ&WKud} zkIdW7vFiI<&U<53_`{4FiCb?}w9W1A(~Hn0?yAv!)yX_1ut^9V=d?dG>7PCUE*I!x zZIVJ@zmE3$r&Tat?U6Jxl*`gTCKKBDg$BJoxH<|}xCD&PHx$C3g|T;|75bO4l?KwX zy1obp@M;t)!LSGd?nlr?pR3KgC>kLD_xZvpA}vfIU3CJl{d42fuf|h^=VXbE_w+U$ zTs}GWE}sYZ-bHpWUF|Pb$&Tq!BwOip4r`Oz04_J^LSnRuNKssCf3dX_{BEVBX5=;> z_;tu-lVub&U57z-qDz+Nu3m|hg4WAPmJr|gFN*|oFr@Pny1Y0twLda77U1%LF4vzN zjELJ;s?s7vv779Mb(H8C0#EU+w~y?O5*x{wPSiDwY<`*N7N0$&%1wq00-h1yuC_|7 zIsM}{B*;a%nE;m;bPWmNF2(XS;IK=}f>?h4n(OBC3-fyStwBc7ljzc8bSAjXdD$gi z&v>u;$#dx2LaV&=#hd<@mcZ|V9He%SHQRv82fBZzr}YILlj{2e1o|7=DJoZ7rsbAV z&X1lu*o&lEeO=i;SXz`{{Xo5C%OFh@LgD`utFAsr_83j%w$w*_w=ywq=+17p`KE!BP0 za!sXRNEg+ByaJ%hRA}0Sl>`&pH9>5NapUMzfjFifo4DU)<|48vuwmOLpUa#*<|T~3 zx%|57Clb*j9~OM-BUO@eyi!-6QP&2xUqR44x3T^AwLZOme-(0tA;_huztV(*%r#1@ zHS&5D!j@67IOddy{=rOVdcBlfW}Qk}Gyay3NvaFUs-ax`ZXuRboU0#d>OI`zkuIj3Zh78$Rv^3-> zgGLFfT+)j<-^38HB#fMUeXXXtiqZErY<(Q9(k*W7ODMjOfX`VXpldix&sx9hUH^ki zc+QE)2jg^;EQ&tpA*AJr!Ygefo{VwA!X6T^^4H4I3kniVNg1vG zb2Jfp#29id+mW!A#P5)5pG-b_wrD54l0aqM!jUks+(}jD|AV(MY zFN5I6VMU!z=@WI{&#MJXEcjDRKdTwBr^4+>llP;q)do#|{XU2OwmhO1Ur5k7638B< z3AhrV%Q`G9c_1#v6Rof-cFBWSVdW^LFCu}m4*gcnyhJ3!yS3hje060I9wct(`(!?E z?yK|+wfqnu&vQ$3EINJ(?gNwr-GcUXD{YE`#uFUhA|!I&w=RvycR3btrMR}uAA=Ht zTm|iYsB(-Bx1Em?^wBUpUvpTOr4*j6qrVO3;=Qry_X2sPK({Ydh{?TRjP}RCqjkjE z8g#2`Z2u-2`-wt^@{1YbnbWlLEQOjK&}lViBak5a9}E}vefvXiQofsb7Fh!A@q90+ z*j9@`9MJTeobC`&c^Q1ZkO5uSGq;6{1Njj#j)Q+`#IT0jt5unz%8BD|@Op|roNI`s zJAT8N%>8$!+zj4_Z`a>c=Md2~O>=J-7^3>~d|}PWfjY>7F1_U#i`x^yzE;N@($dp| zVwD-o6C^hLJy*y;bK%QN=LubfI#fW1qlQkN{+ya`3!D(nSdyRb-!furrpTIkunuyd zJIWGw$g~6VIs_}_LF<73ds~6aRFdgqa6c@zD(#5T)J?S}6o;^cp2wb`wWg)I(QnD@ zuc_h4R-IA$!x?39;Ce)P(2aFpWJZ`T%x<^wNgGKFRS482I6KOQWx}C_#5GPBf+& z{`C_L;r^L}NcB+Wt0_4Vg2@9E%JUSj_(Kc$J5~nWsRMoN2Kb2WAQ3UhN!Xy{g8R#n zql!Ww14sIB*-nAg?qG^}Y0EP`irhXytNy@2hi8Q`6Q#a>U5&lAAg>DOIuLAX zh4^%*5bV0cCaT?m z7tU>xoC?jP0P~<>$Jjk$`nx-5E8)mv$oV4kM@Zh@O2i#jDRUq z9kx&_;0HcmXn^jo8ttul^fMTl<}u7veS|ZK>;!ZT*Q@3oWMXr+ha4xbl*~CqaG)rJImkCp%aj>mBS$||QHz4@X_Ci>dEI6SD}_=6Vc7I#mWn4dSo zv)7?HU8hA;=t^QPz+oc&iBlM=3}A-Rk~n>L@^-duQ3;8gQr^viw1LuESm)SP8A~;~ z`Wu@a{2hM=T|A^EpkM0w$G)=80QeSn2=mns!w(JN#+>irUgOI}CGGvJ$p? zTAchi28A!XKo`e`;e6bZPFRO$`~=iN8+1SX@simH7+($K5^#$okIATV?Y1jaQD>P` zr%5t(Uao+C$Q2w>ii6730&*AcnW0!H94)BBvf^jWfE~?r}@GRufY{<4mE@O z+#c|Ep$obQvw`XeJm}S{2zP_R&KS&Oql56?QCB?eHcYx{_G)1~Pi zjJt0nL!GUwe)+Ni%Sgd2Iq+d(#iN+nS2#;X+3Wf0tqK^i;Qh@AbhR+1x7RXNd7jwv zkge}>RDHAbP1ZlGnkHy4ng4^!-oz2xM`D4z@@PHKsa@pw%N1Bd_=Ah2+=udW zYt!4QI#C&gpfIH`UMl|=lW=vwH33~HGUXWwi`qlQB>1a5wNSn)Rbejw_q9K53Ss5! z&O42$l5a8w+e11BUQj-FOgq)*4xd?TrE{)EpZw7s#@c59TvO2fsu~b|S5R9^?o=_d zO7lv+E&jqorWL}$31jd;D^7jBDK6zsjgg44jA@m$DO3IYZD>Zh>csI>#%Id+Q8nEP zaLqth-*usfVYjZ@%DP`t{7u#8*JtP%#K?W69yAMkO>vwC?}m3PBFx?9kNh%(Y}-Pn z>ty%Knn)63T!>;w8uy~vfNKuAel3KU*DW$mQl&(m$^rG_xr0>inOaL+Cv~GYo_Y%d zju_nW#}~zQ#l1%EVF;NZ0?X{CQv8gxJFYex28_EPh|71YgLr?#M= z_3ek|P3m@h{BD0SF~F;`^u%Jp4nf~`GuF7{4|jMRH{UL`7+~I?)cd0(%rGBtZ9q3- z*B*+hteovlF1mXl`GM5w<1*Zq z{?8>f2P?R=@6_OZ{tM``xpj6|;@EYthp!%Ay#8_Funx;(WL+#R8W44|+j$*H<$^_P z9cOgMPdprezpShbbNQqb)1OrQH@Ay8so>!|kk=M;19z$LaTS>mNy^W9Wk0x`bSD@F zas`vUmTXhj8BspCUE7uu;?I^lRrZKb_*UGP6cTeddj7#b6BjT{a`Mjd1YA4N&3_Sj zKft8?yz{T2mbRI(T*0^(BB!NS@S2zAE%k5AY}XsHw)-U9jQne}=3Y2nW!3vBdXj=` zdcz6F7wRwYR3l9~E_ayx1 zu5L@0Aro+&KzEjAOo&N2-(sjZ_w4h4H?^-2UJ=IaB_fm6BHzVNK{0i`7{guvMB?;S z42|Cn7aE4+WM)kB5WNF|D<9h6|4IO^Gw4zjtTn@oI*iuQ>Wz#;bu99#qdcW#3!eoO z*DHu^eA*!BO~qk1F8eU#6tWTDWoS5^x|IDJVaST1=u>%|@Z~@(-kej^k85NdO zKe~QptSF)8bLU)abji6zpm1h`*8S5Tj5f*OkJ)?|q_$TsUlw{?<}(;jZ8J1R!6 z={+p{)_QW>t8xF_7CDv9{wTXKI>Jy+2bsm^thPQ@82`2CGr)BNU7;$nCxUZL`)owX zj^WABtj09L^GW2*t=VOXFHSa2@J18T<&95~k6u%hOEppFb0*Z-~uIk3njr7=f%D;^I$Vr|87b2l@Z_EHR;>t?kX486kr=H;pPS`rDl zI{nrb(CpiBhXYXlOPsk9#(?Vqx^KUS#Je^S-v#?jCD!dz{!=Q6G{jIdWxS1ENNQ1M zC%g}7AL3%qj$OBmgxOLp!wvRP8CL30buQ{sbJS4E(gs{l&~+5N)75>zFQyW`?}f9( zN#BT$U8rH?h+PWiG}4VkSfkJWTIFy1-`Vp&7_iq*M#SIAub-=g3}@&qy^jN2 zFVMxM=pk%BBlUHEoJ4OcW$nbKSY?#aN2at^pFhGy*c3aP&Pg2-aa#z;k0#@Kw8QUj zrGqh()T@ony1zbEFHZ;D|F^i{zwiI|frh+VAI*`;ra9fDM<3(sjq`KX{oW2mC-64U z{=)jNz&WS=&BO1*ME-CIzZnFjGF6V_cI`sO* zkxpglNK%asdeomae=<>xi`f-mF}k26rRVRyGkXbb`dZ!nMpFE3hJSQ@pX-jr`*xDb zs%81Qtz#8%eL>fSl=qZ0iV)5detnNJwAChDW^}K~xC0^5S#K+mT0*hB;3rH}K>DQo zMUhp!!0|RQiW>6;_ux-Q14Xxu8#Y?N{RX<~=DjL2q7j!P?M*;5EGUHtPF^37#4# z%rGnPd<}ol9WiV8(#4i20eh`f&P;6O6-r)xO|BDTH~+*v;nc(bMFp8!Z_xDFj}a-^ z!^WZJ>~yfEk0ri=5>W?B&f8z3704R^x{ZoAO;O8)VfCF;lTVoL1^^i+~eq zk`?cN^LoqH3%Lhl*%lvt*}m}3HcXea;u?vJ9odgr4JSYPoO2Sp(AZtxbU7iSuLYsT z)7}7igFu(bh;70vo45xr=}~+nJGM~BpM3IV*L1V2NwoTR`3(N_t;4?hmwayO&mUB$ zP6iKhc1_0xNU6tX^^lF|n(f^I_|%Q8Bt^AbXvbjC!9 zshD}Zio4)fg%{{Ut)A%vhmMZGMnv@eJsCm0=YHh)bh=Vvf!F?aTxXa~r7sw)58nVc z3UqU5gIVulwdRP$Fq- zNAz(vc@@itKC^b2I8*D8Q8v^5gC^|Xq-=3{5qZVPp0Fl6UMepxx{bsa1t4z%=rX2A z;`Ua^^)&=Ie~}*NR=Nl+$RB$6^v>nBQ*V)#)_L(yrjM(m;{00LTS){S;`nqQlh^vE>ek^3gx?8- zN6fEb_n356An%Erv1$}4p;uv*?!qqE*nsnpNuVo9xJ%2opUP3%f=XcO$ihYJ)8`~f z9=#$roz1novXvjwW?G}iHYmHqy8lG9^R}qp(EY5d)xrpg5Vhn(R1TgSnhd&*;XZUc zC&}xB6Zv`7#W*{4&Ni>+2-*31>}A`{v#o=c&XYGm;d(N!@0-LwKmPOgk#ylMk)3qQ z6;0ZybT$x~KZ!l{q9QuB}(OY=Q$L6`?NfUBTN}Wb~gWT+7W7g!b`M%sW6kcYdhqYM_>B>>^*l%LmvtMY0}_#T>L6C zvInjc%L3gxUz~%GXx$u`o#vF^T{4u!?emF&(4ls!WmAE8GMxLW`)m9n(b9%`>-%~N zA1_Gj^3uszseMLTBi2*VdohB6_K*#_wc6^OF=l+>?0a)nLMZ5Lu;f43!XX0#`2DgF z>se8P5Zngqm#UbHr%ooU>^5!o+9}8dv9Ol?b?4f!m^&0h0XGM9HyrE;AJA=6el|$1 zm)r1ZGC(77MjvrhA+=3g*LhcU6iOyq&Fw4`p)2EzK-lUXE3t}%!eeB#%tf5XWw!T% z>*8}kH;HX5X6($qaLu#I{jY=VT)S3Of8#0CvS6^OL};z;YT35Z=7y7@7I#*pOB@oE zSo*&#fpex?smGMx#mKfK)Ii=m&|T8Mj=pi=_^9-~sRODlPVGBJp#YY-9w+3LxI0U< zbEWQpUt(ut5$9Mu&yHrb@VyZ47=cpo7da^k)7@iBvRuH;2VKT{p7FfLyqNxttv1R& zDTWs|V@~`vRe9-k>jo3MRzosd_+F9D-N2CGD9I5!OsPdj`B^_A(bAF}PNWZ{OoM=1 z0J@Eh&jA?N4sJmBo_~@~d_(woZ>cb&opt0OtB(u1WswW< zTYuTFvL0IQ<2hbaOvt?c#E(8A?X?vzbidfbfV?H3TPk^m?&|EonV`eMh}WKs_PQs-dZ_o}ZGegCkg`os^0<5a zYAH@Kt6zH6J+2FhLb?2vfEJ&B)hE$u9)Zbt4{%FCw+;W`EIstcNv%?YQ+=GrK=Gi; z$s|HOd4i3KxdY}@$*J?jsyG!%{jX$_#=B~(*#JBW$MAve%cdpWpn?llG{7wb-Tv>v zWww9cV7@`)nX=&6W3D1rZJgE5C?I*38Ky(+h~JQPp^uBR+Zj~_StTp&yV6<3iz9mp z7uLXz;Cx>;s|DP0(5MO%lzs0;@e@yyJa71$K?RG0(23)cAbXAP~3f;3Y0}Bzp*}?sWuAD z1w=?5V)<^&g=7%g0%;=QVcEvg~-47^a0xaXfOvO~%hL{V3Nd8g=M|01Dl&1IptE zzNs7{uK7L+r0>??@&;EX=f+}T@Aa51uwk&$!?fGS9d#j{BZAvPs1U>M=@%o7c zFwwZPZHlV7hb;tH1u)D{I2}!gRFt>Ba4wj@WDol;eJUvuw=6l^0NiTOrCCII`oRj_ zG9@-ZdOyQRzmWFNyd*}j>8DVGKD%HDdjH~1Q=3?%)16fZd{w$mk}glIbRok{otKO= z_mGKJ5a8B;E<6*4gXO&`G~SM;*P}@fe`d^NCprJ$G#NbiU5US5UOy`iu9%`Ozh3$G zz47)^zZYD=zn(2HQ+qA#jjd<;4(=zb1>MG?1eG@tN{Mf{Nf1W1yxynG!BWlUPJF+_ z+o9`oHqy&;cohidY*O3;LPZe=$|tc!S5`3IP@!G=eT6MtYQTBvI?&}j7I4#j_;XLs zESw8FrKrDa@z0XP;j+Qw|6}h=;CkxTzTafZkQ61PkfD@DMP|vADWx>gJkNs)i4=uI zhLFq|%B+l)NXAsk5QU0Dgfc|v{asoA*M5$>=Y601+|PN=InVxo&iAZq|JGX9UhCRx zuf6x$JNL_2hwWRedmO)X*=zTlhG~-0zHc;z1Kc#b9dqk8Y??x0zqt9z>eIR3SD)be zji`xHb-%s;j+oQeYZs)7j((NXKa%#Tyy>#?iR6@b$*xt&y1iHBXGJAXd>=98w2ez< zp9}Hfdll{|5AC@>z}xyGC%z}SemlQzy*EE)DZo+LsciSeCRj zlsEO~Wi}UZ{HAgJdh8Ak|CX}kjn&)SfMK^)Q^zdUd|}n5O5y9XB8!{l_IuK|XPbNU zzUg5&?~qK@)`~2v^>$YlT)Q_X@{wNR^`?DA9KY#YzdmQx_ZY`N>tp`x@hqiT&rZ6? zC(i9CKJT7t!;ixE_6Lf?(x<%IDTMQmm7^S!GjK@$YhQ$l?bZvGBCK-tJuAM zg-H6+nuMigTa?Q;y>%I4v%c$_T|266b&cORbX?>s+jdLUbHiFrd(U$HI)_X4?G)zq zW&QH3Gfrp5-*R#GFRgYFUZFQ$uFd-m6Nv#My>KxduCk`k}&d+O+@?F=RZE)^(lC@S{ldid9L5(`&`YwSjp~b_%_^N zE=Voqa@yE&oezcjKALkN<68Ij9KRV{zdHVz>$D2wlDGCtJ`?vgNW0aGgF|+IzCSbX zd()7azE>QLTd6k1n|(gl{ZJqIONXap&JmuHQRjI}US@ zm)B8R(x=z=ovVM?ZB8GnU}or5B5Pu$;9ep5;=?@euik5`M!+lCz^VDJ{vX%X)Kw?vhn@Zc?o^hbKy>o23|Z@6`F-xCvV?nngbG?Yn4^kAllc#nESXUy3^MLjB-T zPJ6StezjUnvzXJjqyF?YVKY{adQr9hl<{$sZ&eCDn=4lzk#q?%FnVO)|4@nhy^%rr zBN`-je0l7cRU3M@D(qUH15<;0!0rE?&n|KO&TyRUd9l{9qm;L8w`^rq^*Z}yiD^Fy zlNQdLy>Gln_Z_doAKZQT_*UlI?UjeMXD6N6e&X@5GT)M-n~k!&?`Mjw=lH$M_4{^n z|NgB;Mz>Yz^EoZ;V?JN=`}v|Wuma+mLMbw21=)%Bs@sl>or z4Y_4wyo|PvzL~WW=cT2yd2i3#5o+$LGRhAheGVD&IZk7yN3YdxUn~6G5}zJRm>hb4 z&!V;*zqwq$TeSx!=RR4Y>9Ky*ur^DpymGfs+R)9l%cNfj3ygX-BXO`^JD8FLt_cq@&BPteh$HP^wU(qM_&sq;upHbYZqnD52BlXEqagXmv zjq!G{cswPb?4ISJw<`O57Wj2PxJ7wz@tfTJd*|Pi-4XXPZsgQ{1HF`OMseDEjq7)o zXxlyKEZ;l0B$-cn-})-|bUVLk%Hr9vuGw?)g>J}b)`wQ* z+*y?3zG#m`wQ1S-S=dm zla}7u_%n`ncPB(HX|MbC?04VWAwTYY?eyw|%pt4saXnW04vyUU(*DucU3*hXd?KO? zleOCTD{%bYV7w2i4Beq^SMTddWt*XC3svz*FA`_Bh9PA*C=(`?tH zwQ=#g74wE)8Z0w%sij4p>B#$M3YF@$E@pB3-s1Z0>2ZALvj?*kR=>JwvT#?sWebA4 ztT-kVTd#5dmHx}tu_1F4I@f>C3E9`A@;xWm;>f9ESuYEsd#)KPHd^eoti`pP9KU&7 zzcp9fIv1YpdHDQ|O*;;xdDQL6G#qdBM)zd9M+rxJ%l6;+szi9plc`lY>!SO`ovE+v zx?^d2fYPFEn`X~hRJc(3?rDzS+g!ib{5$_xYN2(!B+%mSw)&ywL2E{JIMOeyTj<;_ zCKJ|Axt8)ITEo&+wBKMyYgyawwu9Bnx(R!~Ra?JfkXiq_8LLNg{N{80>a<@x=A_>A zC(1`=n%b8*Xsmu>SL9#+<4|_Oh`nn{)m>*KjY=NA!8fPfd9h2=J{%T`UYpiNBxK{v zbJd3J4n`aq%JEyk_1iaFdWG`SMdwPV8{I9_PVF%$FimA`>X`bYM%$~r1B^v|#~DRf zk9$^@xq72`y!a;9p?8yt4=d(fcXl!;9W0a1T`wu*`mL_cf7jGOx*$`u|2PS`?1x*r zOTRyPu+@g!8pZKe^?#XHI z9j@O;u{qPqpB}v%Z*XIU=c!)#9m>!5kA7cNbY5jc=ZhUvv?SYDR5m?~>{B75ayFpr z61xwkk9s|wx%r1${=tMZiu&YAaGzSl^*iXPc>3&ZF(`v-Wx~gsT z%aHG3YroQOe`)Cm_bw9_tvY32{4zWFh@sic)}voKdEb)1bN*FktOdt!G1qUf`UOw@ zqVH|Z7jzkO&ZN)!>fK9Y#~d%1)!QRtkY`=S^YbS@={AhWt6%#`XHvh*){@ivSXv~z zPk-3j^q$fMW9uOtzjwKQ-)}9H-xa#%ZTy5?E=pE|^V{9F&bk{ClfPwzMCA8wxrr~k z>&o7=2$=M3OUX0mA31hEqN>f?4D>3vm~wQdl32$`j^E~+cWl#7Oncvhgq$Vv8RJ7g z$cN7i)@pO>x#fp#k!^F5XHQ!d@fm;gKKY@O$+}dnsPeFPilK(<8fC9+cp5oAY~0cK z!sTt>!iONf_qpx86}ev5t(SV>~Ln>NjOumqMyJ7jF zuQekTE*k}>4=jJCtfD+_gLvSDl3qu*ZeGTHfBb;!cTB$W6ZOZ{*W8Q`)VPW!=WU;= zu*7(-$m|W{mi3Nq_i*_T)h+rHPRV2z+$!-^F8kKctYBH@`-Z_Ch0IOEETQf_~+tJL_ciwIAQv&TeiAKjP8W9TV?x(j=w%YxO3oa@2Gh* zvJDgMcSv*Bt4q0lZ_P<7vFW5%{Ka}g)A-1#8M@g^D)$!lEiImHsP*l;-`!r()6?ow z#rL_E6)3)b^32Vkx~_}F<*4#U8cxc7?d+vEYGL@dIv$2uwHiKayY{MO zo#GdmxOLgtd#l^_8$yzEJOZ8Xs_&E@vVXtl_4l4jqc>G9GSU^B>F3*bNU^ZxCXV07 zT)#^5>dv(aIgu&qMDbEw3e z3GOiu*L<8>z4o%GQ-@FSLqhcfHN#B(=f-%|bi1vR^H_Gah4cW9-=|!^(MMuC?roJ9 zdiR{Q{^AciJ=aCL4Y#S6b?#VkE&0Ub>)$@de2~6-XP|siUA{rv-RYq>svDB5o|bRy zx9Mq(?33$F9KYpUzjGF-cI!FnO2aqP!@g>O^cNYB1_aE<7U;1d5~0YOR|oUaYvHNCtb-%7%^eZ#khc5Q9jUMMV#cYe-k zZzb37O>1Y_$+H#bEt?VK{ps;t<#}_6(D*0H#SQ&QB`u3U4`RQNut zG_0#)T&EZ7CRSb_xUTfUoiR3Z%HuqwPX8F4nC#m*UFULujd{g4?)QDqxqkg;7ai;P z#_q)6!LIG%HLf&DOn6{)e6jC=a-(SfmjnS;fZ z=WCXa7dtjDRletCEyGTuri&&VxG_INZqmu6cH@mXeyh2DH}0P8?q~VMWRQzm#PRZS znbT%-b`>p(zhp3Uxz~UtK__=DQ<-l!HEUyyk@23*-6A&@X||np=4HU*!(Z?9EkD&^ z0>^Lj$0pdOpIF}q?=%bu z?}uJ-{g&UW?>qcx?1Mg9Ti@NA?%sLfSfM+~LDjZB6b#(70`9)ojNI8a>V~+k+KIOn z9Y6c^-fQV&|KQN7v!abX#UtBy?1w%J+FQf*YuqU#q3B>(U4(F6+&gVoO}+Y{ht*ky zrIW7wD7WmMGt$C2**|ru{t>JDt?$O)=-PhLrJY5Y;gRrPn37-u(}`u={O#`(&x9+*Si@cl~Zcb?-JZeB*ZbHwKjKdyR@4(;-ELCJER!#7X7D>^;wbe4jF{;3(sk1k5o z1eZISxlSr-C8M&}EONt;ZsO-ROpFcXzHfQQ^?T!sx}{+CzC-}dS(|N6P-PQ%*KE0<_i#`oM2UDx|@ zt58*?=zvACl5ai6OZVB?r&qe(rb)wQ`-)vTvRwS*ovbzi9KZEkzZQMphfhjTv>qKC zvD(jftmu+!N^#u}9DFC*>O|&ey9!H{yYtsPaxD*R`W%>XdDmv?H9A34_Sg3n_1mAC zo|{*_mE-pV*YE2muO3@%X-FHl|787nx$8%lt@e-{8tIiiBfVqv;m-x-zKTD3J zlaM&t>+BtyOCuhy(<;5K)O~@ro7)1^% zzkSx*sjrxFJT+{P!SIXw&NxLLlni%}lkR)5ZDof+-EzBWo9t4Izolh={6Bo(_lfJ* z?t+}?)SN-7`K>2^h}lq~xnb*?@H-1D_Kf{n8F|qtXWNq7L2oxKSTtJVuA9@zXJdlr zHh7dNNtW$!%I=XhdZDfzCk~&veuZVnC3}5XqHA@bxc8{lXFf!2O*|;Iv1{amc&$S+ z?YyKTCv0m>{P5Ocvz2|uhvJB;4DYP{2J;nN3p$+ejc)ABU8il}`i(3K%(f`;%*Y6q z+%2bR8Qj#)gaZHuxP=C?!-}WO zw_FsV7HY(4?+>ouEAK3<+bljhU~!O1MCQV4cP!s8I^j6KwZBdD27ApLX%l0|)vv8e zI3(;Im40SUX!2&22ev!&E3R!GCOmI**p<({IDVVBes?L=yLudKoBeErYTgA&xe*IK zC|?}5wZ2BLp|iPukBIAyyVHX{kJoNJKPy&jZpG(zFSIX44Szj(Wv}DjR~oXXi*fu4 z(FXg8HC`33)gCjUs-Ko!Os_^Aoh>zPFwLy~` zj&CnZxMbsJKQZpvV*3}0bKSVtV_~k}b-AHmyk_QIS}=OHYGdAQClHc<_pb249bcI zgjsuyJy903bW(1e_*u(UPgj53emy=he#ohDCz4-q-}8!b{T6N8Jw4oXQG?CCoNiKc zX13~mZO@X!-oawK@7X8Ds?HdZA8)f}aee4~q4^h0MASS=LOxyg^XPV9V`51_L+z20 z9h^9{;`%+_BW?ZWPM`a{vF|)3bAM52?fBqgKRa#HAOZv%9aHw7gDh z?cLfz({IclF~IdjNaW>XYgK2SNz5L>@!Oi~*ZTW_xwY$#zpjwJnJKcvGDfM#)-7%? zhb-A&`|eF-{Zzhn=aeVO6}lPI56ui_j$7o*ROW| z=+PygZFI^Nw|v}i#-Zy@5u@jlV}tKS+6aq&a30>Iktu%oP@K$%h%;NHHKz8OwJBCL zMfZ^R)J~huZ`D^VJI85nTdv>QyhisIo3159&8loAb7<-2{#MbGTh*;F7V)iEbL{iW z@X}Lf43(pl(jL_gc-Lxi_j5j73e&oe^ii4-l-(-*$)_V6zwNkw-+Q#}wx&|#`KT4M zpV`(Lhxv8Ff1~h}uH-q-s!{)u%8=!V%F3_`c~N^ zh5IXQANFI*B$1sPuicdr={LhXe9B65@H)gax!(zuJ4@nIt2f*X{#2-DdbW_$-VR*9 zCOgv#4Q{F4FkO8~uIED8;#9@6+NuG|*2b+cm1?!|%c_&gM&%pUJk(V?u*WQ1H@Qi| zt|)CwyM@mCSM1BVFDip>O6xo7ch6p+KTW!Q)ua$x_XVL9$(_UJ zCavhuZJbSJitgeQh2HrW`hM>1X(qHM`naLR?2+HT<%QkZ&hguc>-V@!%&=vXlzub> zb(uc2tKPyHuUF`$rKed=o_~9Jve@&$ApP>j$r%wbJ=Od#%(*f*tdsDJ>%&*-F1odN zv{g#NrcNBc5?sGu><%3}oblAZi@!^b$Adxgn*)^UgrkybByHpl1|I5`8NM-e$d^G@ z;k_ngP4jy=HmTHkMB~`x)IpJQB^5<6V>T>vbe4uiz z+5Bs!xvgcjD_=>f`DxXyon5m|u`##Tkx2C&w}nnRsdnLJk zb*~f}MRYi{^XXKzu7mef4`|x8*J)bA`+}8Q?t}&@kKAYat>93Xl~Rdq=Bl=hQtoNi z5SLotdQ*yfpjBYZa98s>j^8d^zcbn|PaO2#Gp|OZVcxg&+}b-P5_)d)6rHmcc-}g> zHe4}l`O}+kY@Lr^=$AgG@%n@S!*h>Ee+e8R^6LBYoi8mbH*ow)asA>wRd-3%3}d(M zTi*#e_)IL^p0wtHZ_?(>s;yr?wyGPQdFlG`)Q-z{gnaP5dRO0Vquz;em2)dA&Tr|+XU%Po1a_8AY( zuC_|-{IY*5uZhoMt3{uFT@u*ySfBidjd!@$p{`uNv#yo)d%id6q=U?!oAdHs`S=eX z7~FMWN!J>u5$@X(I$D0eUKnR4)JFZ#ihzX2cTMgko97lf4Qi|B-mak2{4go*dUZFh z-_~7k6|_$;=_$RvQX*Sn{|)Ket90k=Tq-g9(VznHt;Jt1Ysk;ZvNg00uRO15ptxlD z9tX?%9tjH*YLdKW?h$Jh&xwN!*YDTxqD{|2%_o&vjWbGAJ^7+jtBJxcb~Se*O%3F7 z&M$1EJxecrT!FZ{rq_`0@sgHd&qv)_ZJ|>l^=+Bd>bG0Px$9@LT)$~=^G*x-g!P@J z+B7LPb-|3u&krWVm4w!u>QVdU(#`i9+~vlf(hjJNxGXE3dSJ@=regsQC+)A;IJr-r z&E^$S?YQsBx^w+Xy+}Dzlu1*R;aPGW2NyNj^7?! zzayT>WNw~X^JLkks=+aHC%;irRQ`6@PAB7ncdqi5Cyi3yX1U0A&M$Pibya@FBcWpz zgVOWwdP_@2@07FtZZW>(1jlbru3v)}d48Qosp5RjazqW_~b^J1HXS&3`hRb@5Cn|Ia5e}Cm!D~{h@T)*no*JH=FTl=k( z%R8Sc4g2Z$tFLCP>mi7qiditsLn`%|Mt~Se9J9Sa6jJ)WyxRCSaOCp-`s?PLW zJ-|jngh;+>^)r7-28=vNSlB^h-!!Zt;CHz{@aY< zl>g8CYwky&e}JvMi{mWimfK9_7I^!)JNh{YT}L^5{~P|#+^>IB+bAx!_TGM8NJrtL zCOY>2sD1yH`=NgLIr@8h1UU-XY5vb1Uuuh&t(P~Q!O_}6LRdQrC(Y5{F3{D(LFgtl ze*FEFN1ylguM`3PT=-WyTK|4+6+@Q<2zp0jGQgky+EYl#7%zwaEB8M9cy12czwQ6g zSfRg*!I=2B`~4jEs&0<{0srASpjkj~EzEx2t5CVW)&A{*!FPy{03QK90(=DisUkqv z9)CyAAV)tTp~b#G*Tep)8u)iK=8yW;e698O_R@i0dHjPD;{Rl8GQw!rbNqp9*MEX` z{fw2PKYi~qXVJgz`qdu|A?n-CB|o1h9(0Lw+<0{(H`&zqgHl zTc6tO=KmkpLH@Q3Z8w*54R9s9ws6F-X8y!%2z_?!1|AEf`P-y%{!yd2!{ zrsUT*%>NVd5|_xgW#59ydYdwAPX6qdjG-?@%N zF%Yb!mDT>&zKf)|@jpHS|Jx!!=Zu}LU5E#6Ow=3yd*%(=ho`%Ps~_&>&AkocZ&e7k))hj?qXw3J2ukUI8pu4=pN8o>D1n4{;jWsR$R;X78 z;s2KJ$mm^>JfM{S{fYp^UZ=Bg^WXl_^Fm8=@vj>Hxkdh(KL$biSNQwS_r~Y)5#S@h zM}UvO|5OBMz8}&_xcS=^e!l;oItu?f`=#+BKlJB4-aqoYaN2JVJ>ll>;Qo>O{nt4% zd`tNV{Ch@#&ix}3g@tPqd5vT_!=B>2IR= zA0Gie0(=Dc2=Ec$Bfv+1j{qM5J_39M_z3V3;3L3CfR6wl0X_nJ1o#N>5#S@hM}Ut2 z9|1lBd<6Ii@Dbo6z(;_O03QK90(=Dc2=Ec$Bfv+1j{qM5J_39M_z3V3;3L3CfR6wl z0X_nJ1o#N>5#S@hM}Ut29|1lBd<6Ii@Dbo6z(;_O03QK90(=Dc2=Ec$Bfv+1j{qM5 zJ_39M_z3V3;3L3CfR6wl0X_nJ1o#N>5#S@hM}Ut29|1lBd<6Ii@Dbo6z(;_O03QK9 z0(=Dc2=Ec$Bfv+1j{qM5J_39M_z3V3;3L3CfR6wl0X_nJ1o#N>5#S@hM}Ut29|1lB zd<6Ii@Dbo6z(;_O03QK90(=Dc2=Ec$Bfv+1j{qM5J_39M_z3V3;3L3CfR6wl0X_nJ z1o#N>5#S@hM}Ut29|1lBd<6Ii@Dbo6z(;_O03QK90(=Dc2=Ec$Bfv+1j{qM5J_39M z_z3V3;3L3CfR6wl0X_nJ1o#N>5#S@hM}Ut29|1lBd<6Ii@Dbo6z(;_O03QK90(=Dc z2=Ec$Bfv-CzYqZzDY53#vIBmm;v@Y1?A2Vo`~z$~Jk&hA?cJSRJsj0c{2U!eDQK!I z_`8NWdOHnP&{nYZaCP?bb`obh`_c6CN1F>og@lBWc4B$7jsFRW0BNR$vNEK1W!gff zQB%4xZ4or8*9yomEesmfYYloZZ7HkU2HU-uwv1_Qv8}|k2&T2e_8_J$XBzco13ADi zl4Z(>>$(>g#)VA=|%b%eH>X)BpV{h!OUXr@U(dq@q(FNSHIVS6!c71Jc41wx}Z zu4Y;n*x^iD!!#*qaZHP48pSx5`CH30im^Ba62CZTWKxXVGi^O9M=|cmw0Ne;LUVyX zk~c7|JM0xWDA*L*$TT_FE9pStw~1+Vd{!}SGt+uPTg|itrqMBrW!e^|$wOPuw5?3* z4b2=Hjgf88D7*^569N_84UO8V2)vlK7aEoC1N_Lq?*Q}H7j_c`8NY+9Za>(qSPW8F zIVEU?C`VyUg+_7e4@_9y%dFf0Xr|DpT{+Mw#sh&hEBBC%cX^)tu3{8@0rA$+S z))oVp#%3AQ2E)F|#?@n{sY1(#M&tDf)6`%WuyRkCHUwHcG#bO@OjC#5gY~xp8kriP zH`AW6a+=Vpnf9D%TF_oFt%_;d(6pIW%`_co4%jc96EB!H6!vR2PG2%j7up-9y<(ak zw2w@yfkv)}0X-OWp1fh@hQpR%$G4Vg`p`Nv?JYDiM}RI&tA~dF35^6@nf8g*9R;l$ zG&*-aGi@~N9;{pgt2+i-Z>BY}a$}(>GVL4F#zE`DwC~WUALBt^rZus02GEq4Mh&JR zF#+^vnlRH0p((?r_K7fUBJ446Oyf?JX_Ht!5+O0BO@`eC?w#no$qa!W(0czJ05MBHVv8~G@1k2F>N~8teiMBayG)F`q26y?Zq@J*oMgLiD`yLP2UWn2#uAx!U?0_1{t2CDlW|}MPZQdU=kX`axMnWhPi#)}uAx-{qMuyWq82SB4aZz$7z zU=L)PF4KIW^@B$9pdQowV3$Fod2krh{9!+aM!(@q3xItH8qJORObdj4l$9I7v><4% ztj!~twg8$u(?&5Z7}{Xer8#dj(?VeHW#`ctriDV=gK{(vj%C_H*ppz>JUEVNi(s3; zrr&s`ErvaZX$DLSgJuSs>P}$V64>UfoFUV~q0Oa$<2R9MOJQ3;qq&y$Ph(>lpyNUF z>SU%xz@7$;ep8sX9QJf*G}lgLS|se*teg?kqM+@`4(Uv$#lS9rHXi9Lrmcdl4$T0mG1FGV-UMv|(%DQ~1DpCb5h=x%`Wp*q zZl(Fxlxb^WQ#qP{Dc)2r4$$06=Mu%6v~{2>JH8Ze($)hRXf*%MWm-J!?yQ^z(>6d; zW11z?HbT>ZMsuB4rfVqk0T5G0lhJ6tl{cND2sX_@Ln`!e|xh>ExG0m1~TcMqV zM)R~CtGf;M0#?p}X^GH+q0yY|#OiK`?FEhIWM@_`iSnV*ob1ZV?SM`3qdC-#X**$$ zz&N0vJJWW-cBaPT=fSkyur*PR=1{s{q?qmjH^{(`?ib123#i@n^JdyU*mMrkT;{{H zWTw#^<;%4Fun)2G*AE&s;Q&ZsS^z6|5ZV!FG;akm?GWsvtXvQ@>QV|g#EVHpPnOtwl^b3cDN{&0C9^c8ryyc`J-*$6?E`{VrkJ3098g znQ*3^WZFWcOPO{G_BQN;=9FbjOM@N4j!^_OGSdM)^MxagV&zW5re{9-tzg<2*wl}u zNLMoLENqIwGNjQ=I|rNY86%L!Fzq~Ss=FNNDyCh4U5Ij#NLMp01NL3E-!)9jghq9v zkj64Ci)ky6u4URqrqP@d$Fyvw(VVi5X_uHrbIN+AU1l21De+9pflYm*Ib{RWuE3^e zC7M$k{wLD1^WY>&>XOnX?d_y*?F{!X}6(KKj@s@&9r>jZqRli-2)A#Pyz5`b@#Dy zh0so8{Lwj)%(OeO&oFI2t6Kz(_Ce$SAS+kQG#dYhn06O7#f8Ry3e)bfay0%^nRcIP zG}aF@?E%whtRG=o3G8(^9yG3xGVLL3dS)i=7}FlXruNYoKF+jK*whvpuP2yR#>&xn zJ;}7ktQ?KkQ%rjTo1WWfyrwbjDQwyYjn{Ohl{1aT>uIJ{Fzq7JGfb;wS~k+NOnb(( zOGwW#?K#sfBR$WwD%kW~PGj=|)2dlH8iyH7djVSk=wqtp1h!phacrgMhIQZCcp!ak2NL}TeHG*l6K2Pl3t zMy|7R?_pD2I?gwkR>#WG@w>^idZy8_y2Z2)u<7{HvC3oGN7!^fN&UXfv`?^U&Zhq4 zGwm~M6{Zz1tpOUvnfg=6v@cAfcHUvySJ>1K+J6z#8kt7>DrVZG0Wk1Oq#IWJ#76{b zX^z60UW==HKd*~$-5hJGMRN!aLGwCCTcquPIA{+#fR3OOkN};5BLgt=DY{32+RSk@#P~J1)vbz0Y#t~+y(c* zeeeL309yZh1WG{}cmke+li2qukOtDhX>bOd1?RwdZ~V}DuA`fdycdU&{`p_4bocRP_P7f z;b1Y^{s`N4uzLX$@D1bO8K?p;!7ES$Xnl~@18c!MPzUP42S96rpTRC139dhQ+xMu8M)so((E4wAq&+D6-UqFw^*Eg&58ZamTrU^BQ4ZUG7S z=nN!57tj^R09nu-$blZ9Cy)odfdWtjeL!EJ1p0$PU~1}4B1%mHS=9Lxn4z!F#iYhVNBf%(7y(7N43KcYXW`LPs7BB|0 zfeA1LbATBz2Xlc1umrBQOn22Q$DdK5VIN!Y^?gE5HJXs{RCJHS$mvt?i`w8>x^m=0!unP3($0ds&k zpfxT#pbmQ~{L#AAOhD^WCcp)G?!Xu91wqgjfiSQXM1vFHB%t-EbKoM#1=qn1kPn6c zO)w6O1s$+IC$!fQH~>3f3%Y`CKo)cdlYtsg2bw?&NP#lM;4!!Zia{%A=a8NU7Xhv9 z&{|Fo$OTuyHE;vm1h+sQxDAeg6r3ZprsE0x(7q{1=~;xHJ?L5E44`L;H=q{01)+e} zC1@QY3@icRU^$2c^!!iH_R)Zz-B*J(AQr3zabO)-58}ZFun}wmn?VBD0=9ufK+m*E zU2d7pUk>Qq_e$V` z*vtpkU@PhdL!&huTAx{sZF;vy@9pxy9Z&>{0j;CZyUIY|4{m}Ol)r$q2I*_?2GoML z;2n4m>OejC06v0Gpd|a(1bt@?AM?iJOM`m ztx>ok4FJ;sJu509RRn!NZy*IkK@;*S0X-+ubD<*I?~XRYBOr`E z)*^iiDnKQmXH|MOrDxH6v?CClgWq&;3H1k|P9w_EyZA&9i0yC?2k0F?z0;oq=pDN! ze0Tw0PzXP!Upf&n*7wxcm-;}E)Wf3z$&mBtO2oLErAe-br=oQPdJlC7=z^YzV@H%} z11`eO2DA=9?}7{wcY6Oa6_^2Y#E0I?IDkatlYe^GG7HQDyPz*bO7BK40D2!n??32$ z2OT#m-wJ*xZG+SZ`;r0Fh9N))NCQzo?-nw^WkBx*BEfP%YyTd=3pfHN-~)dqNGF4- zU=$bwXg?#-re1*7?zMmvIEonU2aCW+Fc9QoT+;dp^}PwP5W*OJft0o#0Ij#504JG7 z{TT!V{VIn|`#T1_P^LFfgjf0W@Bz4}x(@^#pwq?1So2zbPf30>6}hjc(lW zdrgA~zyE9vj_wH_p*~$#w*$IH(Dz^T+(6gcB0$d{w~^)mTW|y0bkAZ1ECJoa(7g<; z8z>>AaZJ}TnvW$3=&eBw>b(N~z!!J`Ye3I0^c+LaGvk01ptU_(c6C=JE}CD0G_0g8a0k>mia z5z?CB7(nZUv<9LLXuXiu6X_bI3uqmY)=9KLUqI_60|8yfXzg(T&5(v zmxM$jIv9|e>pe}7ws+DAJ1qJ9hVX`AYEx2b=mQTwUg z6dOTZ!M-SFf;to{Zd+(y6bEh{>dRn2YpE(g8PIwXtt*j6YfJ*2)|E)3GGq(dEQo<% zzkhUWsC{%iX#doHLCm=^q;}CU6|`A!EUBL0xDAD^1E{PXOUVbdi`p?92--oqzz3D3 zeGB{u_AiJr#fr)c>I&LG^{CGOYfK8pj^G$^$DUxHbj(JBQ9y7m{Ox!b>|f9x!SVjv z<4XGzv{7*EY3+g5APfMlM@$0a+4cma6M-SyrZtNxU@{Q2Wh!hVK=lP!!JZ4ufeDxc zXg$LWSO7~f54Zz2U;{`e%@w!+CtwFiw*~W=?TFMKH~?oLC^H{6m8F#G3T*Nz@a+j( zuwUAz5AXusfb#snOK=@r1LwdVup8_G+rU<^87u~yKrjdbfq>@U1z8`NC0$PlE8M5 z2zG#-;4C-;PJ?ui22O#K-~>1hj)9}#2sjK=74)B3$&+;o859*Bc>pe<+vxaZv~sxR{M z9(O46=$TRi+f?2ObOp4Ipbn@WUDK(~N2a|&D#h|hvts&Sr0>ByKxJqRg8cUbwEjuH zdLxwwy+BVO1G)j)XAeNnCW3WR$|G9=C<4KDAK3K%g4#C((0)~bGEf3^uRZ|u2ZI3B zRRwB*@^k>L(b8DgKuYyB0X-X09{Hs_()EBYpmFAd^fjP-dWI9^(=%NOzzYas>J6LPFfhP=>Z6z%sBDY(yQp{w#-0De2rc(Y{uK6@d0dZJ|DqA7VXN2Udd^Ky6+H z;=o!E3)TR6K<5#a6YPH@Z1VNrm6C6DKz%v}1_O%mQ6Lz9H124;(U{%`Xw2^hd%+$+ z^^X8LH|ScK0-Ndz>e2a0bq@f#_8dfd2&96;fa+2IGQc@-9vo+OI?@y1BuE3Nz*%qx zsGuI@*&{v8QU}=7Cpwno>jI#7-vBw_GROj%ARAl+mq0GK0%lIhFTpWT1q3modOn~Ucr#mYu2K0HAP@-7xf3{9ryt1femPldk6AG?WH;tTMMMrUOgbF{~0#<*bgZ7G=}Mzege}0H%@fy z=YVN|;z8|`1r!&mNAYX`)EJ7tjd4GsI9<1c-uGpcA0J zaQi{yi~2(Sum;qRbU?AV06L;hJJ12N1=J^M51o_LUNb;#Zi75(H~G^60iZoJs!M*v zk*Xqf0yKw`M%P&%q;$N_0n#Y{D3}Z;07ulLb;suO6e+zUq<4iza9atfd?5R@lP&>t#G+k!fzD*=iTt);lgbPBN1C8b7nNo^q?G%jfzQXbj!fEh3abASz?>x(r~b6^GL0!v`QY)a{T zw?#^I=7Z7LwnOR$TmjX022MZ}xPY}FmVp1|NF#tZp!v)TsVDFN;a~{}1HoVc@Bu-< zANT@45C{U;_F|+9K?vIxln=!=m01J?^WIX}`^X+rSn;eM>+(4(Vp38^Hz;57vVa#9|#%np5d{lD0Qt zdn?!rlE5Ws+mVv5T}XF;oq+OpgFT=-@{*D62M540a1^9~RB!|w29=-~Tn8t>6;KYI zfX5&M`=V<{3G4^pE}-(a0nN3yklqA00QtBEu7X^U4YB~m(se;RYt2C``%WalBh1M&go7a}cS&~_1Qx<1`QdLPie z*(0P6K`BeikW$$ZzyUnPb_FND3O4QQ8Pey>cE)xC?APEGr~xm*3qWN_OF|#XHiu2I z{S4lLT0rf714t+PEl5MzI;8Kx2OxuOU!-)stVgPVl*TOOk^TvMWHycAC?JM$Nj{qZ zwdDtB1k{c%NWX&b;2RJ{SrH%v1Z@_yUl^L8uT+n|y`a8Q+v$BT^_S|>_ZT!D#gWoj zq<3L`fCA_Z==%kxfQA5f}mkFdmEp^!{@= z7zXH@1N!!W&ZoWbL2GV0*xrI|dgrGGv;f_6xPrm3seSbA3Vqi??@%=Wedj`DRRQUO z?_Ts^lTUr5S5R*RQaT4mAsq`w0~*I;kWK)!t~CiMwVUiIOs70S`{|x&2DYbx>0maX zep4GM7GzVOsc+P;IY_BLls_DpW7`befld3N7|#RNfbQGq9T#bms6(j@pf%L_NG}5q z;0~g|T9mnjG#g|AAK(d`0L_)uRtMPjq`{`KZ3o*C2>QPYHuGg9&|Xd~r$akgom736X2(|&1R{va4E02fg<2x%Z#3TPgo z_p=K@D4_AO7%AOvFG5Q85)clSf#rbOL~&jLI~v501~R|}a2}ikXTce88l;0Xa0;9R zC%|!V3>*bVz+sRIQotc_5F7yeK{D6}_JTcNH`oPsf*l|UYzK*88`uiAfX!eN*a$X& zc(5L<194z2hy`oFYLEcvcw7WD4k(6sAQxN(R{)JgWu{GJsX)JuZ8|q--l4H^4cl~` zyoK}zXdXYvqw6C*U)+R7zN!9PK>NA_@`1qTP}nr)>0A}~%z;L2umFXi0C3w$0|H> zP?>T-*Uv_zUqJ;BTt~ma{sihl9jFCwz)MgCo`Ywg5*&t)YNRhf4)#-n^c8pw%#cUd zKDzGFwT^q;dXM~f;4SzFJ^)(VXh8ZI3_{Vjrijz8R-)$LSk#`j(u&aU-3+7ncU~4Y>@UZ>Q+na#=v%lgj}*rc{>30j1PO1xsY$ zCqB5<&vb;P=1}WEJ^ZUZL;vsJ^=SOZf3;^QN_NNTACq;q^P|$r$hN|Rpmc;X1E~bk zqa(ItR$O_0qph%whMw9`HI3$XdcBb|D>Fe}AuaN(AV;(LiC7Xjo7;t@?D7$7ha7D+ zbv3P@#IV(JaV+uwA3{8n%_FfAm`J?n=^gHBqulLXsBu897PK{A!k`) zQ-YJI`CQtMCR(80{MM&Ea`X>I>>DE)x~;9S<}fuKH4V+?cSqEpAtzUR?VT`i7V4<0 z>8k1de2YVM)(x>((?4zGu(rbV&ZZrd))YIW*KXZ@B{$PX4Rv(UYK@<7C&-&q$>Gm?mKe)f;RQ1n_Hks?i~F+ zT)hG?Z<>TJJlgp{LvtM+>JL4wbi;mj*u8#jYgmXkLN>$HG{_s>`%}(0WA%oml8$SU zgMLy(-I3E3Ica0<=BVYFdHviEHNhp&-<|H;Woqs9^=s3Uo4ug{8bWT4{@6dRKCyeJ z+?}yuNORoKSGa*UaU@d*tTNl-qTRNwum&1NIqqJrK2#?=Kr1L&disp!7BojE26ZT+ zpVljd=+fMa@P=dBJPwfKHfWo=+Ata+0sg_%G@%ZY zr4wRbiDowMN0*M=PS&3tO5uZ5A|36Jql58=xGnIr^>X%b^s6v%3)niU=lh>6&_Y)a zp$?7wPVcu3st_-xYhb43-8ua z&QRoN3pob3IQscxwz5=okJPn%jT}q{2vGBSQ5SgIvF@W)?Tb|g$f0viL#ufui_Wm? z)7$pBc%!o{dHXpZSfD?2ZtuTwd}6Dd@0XhEVDxA--@#Iy%+f(M+w-rf{_=Jh^BkQE zYsE`-J9-8W5fNsGr}++#j@;pld2bd^*s+gtnnTch-K3nMm$G_3YV&m&J%+On1 z?tFk8JvC~9maQX(B6|9ursnpxvhnLggy|~S0bT-d2HT;Y;f}IHyJgNdhzM)`Jn4lN zpgjHBh)rI6CU(S45n(+{NH_@1GdIQB#s5gtSBVr?>7R2Vj&^TM*A#;S9ch!fr61ZL z2UVzXbhZEER*!1^vn2=34(=E^qvH=mhc$t|rfoi^AwNFu&7IV_Ij8vyw$rw4Zkt^7 zcSCoZoAJn@qktB)T;~stHl07HLw~J7t-c{F`EW+ci?7Yznseyy%4i%6o3OqxVqL;E z5n&w+1BwBCy{dp5ljHhfF(=n=_?1K7w#y^O#Unzd&T&2oAiGtVLtPA{;!;A~0*~Q9w>(a?mbBccE;J^uuWOW`m1iX=!yoWhNP{$ZKbe+5X+Gr)vIqt}zxHahyex4FyuJbd8&YuY8EpAB0>S^PD^!rsO0XZ}da;x62`0*&F;8)He z&#kDdT?Sh~Y$_h<#4&9RrZIV|{YR5jpr!`p%*UN=Z3f2eyzDq^ONiE zEoi>$#O>hT&Oe{Khg-Xjh+bW}@YjA?Xd61za@!8W8{NB%>9^ENcw$HFX!)Mv_q$HP82$aOQ;_r5oSO zyWokRa_Ek@<>>r=?=R?2%XL~l=YBu81@l|W$MpB7LqQAv%sJO`+y2avYdJbCpCy0h znEsjbr{(e1a@<~_w@T}o-Wq;hW;Ps{sX*; zSXlL+>R72vwG4TOdnDlCez)B|zw%1PHwoNPv*g3B9)fp@rT; z=phhlfc#&xyQh<-TM7I3em>tnd7fBzubbJ~+1c6I*}Xj=v<`zwe~Pks-gz;_@BDAA zDmDE_ZXt3zkoyC9EBs%@{&Krcji->;RPHHyA|*vxDa)@rHgq`sB{IQCY|sLS&W_s@ zUl*PbRq3zg@jnw1PRk{_Q9vjwwdv)I0eM1>+8BalG}a;ow;J2c1y>f#9z!&{co*W5lt;x;Lz<8+$N;kn)JurBxK#Og1{v3E(h6TWbu*RM~aQ?I!A&1 zGxMLUc@9xD<)RT0JMCfNV5+Mfb>qV94I@8J6EK7pI8e}P&`@4%X~nDK<6BmM1X#;q zH1cwWBV9(>xAe2H6sjAT%frNxXaVhDI z_3QEEx_92cB2^Fns$m*IS^iA6x(Due{B|2^imVh?KQ!7$(VM)cawHn5Nm@T$a68|q z*e`8sY1YP9E4~7P#v5i^oT=K*_Ny~O2ei(Fz-lfKn&n&_GPzx*g%|z>BHCvI5L%l` zf4+5qb8+=yDw4S{U*X6&_TvoKmMo_AAIh?!P4fVu^@UCPw95j2-HTkO!fi1SvcyS? z)^~aL1!d+$Fpm6LXDRPKZ_Gcv2? z+y(-&VGCx5KVN#b{B|Iuyh1MghQdWuy;VZ?S5(EWMPo#gh!Hs(3qV>G<>9RpUy z+NV4aYK2UDH>|nT^EP~lvfe1?R-y!N?dHRteE(&OdKSiwNo}(lO%OtNXkFvkvl0!| z3RnfC`d}?IE-nckWA5)K$_*X}tD+d5{$(r4Wjj#*M7bPYM{EX-XrI*7G&S{+(@0tY zqVIy_+Pao=lUs;3H(IZk)0`;9Tkem1zoc0){%i7LqD?(%fRKeiYI$FfTf8&gYBgd1 zLD%N>uavt~=o4^5TT_S(V(XQDLyG=9;Ao#~ zTxo&aez>*ZuHx^o&V(jl^WZ8#sHQjmm^b3_o|=U3aZpkC%Q;Te+P4`{7`dcMJEvs>}^ z_m`6+w=TSm^*OXQTSj;a8qz_D?YaMKf2YAhhA>}cG{jls^iD_XvAGs3{Gv_*5L*3* zcXaju4_UG2{wCwlRZ*5r(Z_n!xtT}zFinxNTc3yJVg$~F3A>ej6qGCpWEN5{y&ZL zpd8wV0*wx`F@x9X!*4xk-el-*j!@S!+F+y5>Ga>0-VW*fC_R%JeHc6L;_<1SWFQEZ)|!}cE(>oXjQ&i zxb8G)NY^(T-28KM%jL%z4QwY=SD*rqxN7Vkzww)oZzz_Ca=a}Ot-wt2A!ukUxl_Vi ze{{+3XmM-76ODu=My*U^ci8_e@jK$0m1M%Z1bst zZH&Y1eN-eC2wAW0WAp5S)rXf?k+DE%jsM5`X*%9*nRcOyM4BSvqtObJM(DzB6g)!v zP_PMw?7(}c1+yK}wF3nBxAfr2R#UTZGn)k-|njM`lzX6q(C46vR}3Ybkr6N#%CJa>N-}~!Hs$H7pN2U z{yDRc6dVw{ISZp<>dB74hwR``h7L2E-HqLo4%*>Q~wv zFyokt{4BVIw>h?P(X^ijsffXv6l-uAV_wC-9@*u=G{n6_&`Zf%M%WETlLL`g?h7An z-TP-ThOkkyNj>iQ=6|*AsB}?o*V~+x-jh8?9fMBY!SMI zkx_T5w2!Y2gkpd6u3my>@JGGo)SIx(D#`(k-DHT2G~44!7Moe1NXbr!0w5a&X*&6+ zxdhy3lzV&%;%slVL#gQ3qRbvQ7AnXJNk^?l66E=QozC8c2 z+ULBbW-}JhY-+%{)qA$<$0I@2F?&~bmc9c*I!MHZ#K4GlCj1< zisNC2G+`(Kglu%}fIl9;YVznU5QO(+*K%%YTJhL_O769rXRpYY4Ky@EMwBM+3!Vu4 z4m=gMELWY-n#-0ad&|#^G3RT8TNol@^b(0js)oI$pb3K1MXNP4+#U3FNhSds(Y5*< z6%(r2=QyI(=QyI(=QyI(=QyI(=QyI(=QyI(=QyI(=QyI(=QyI(=QyI(=QyI(=QyI( z=QyI(=QyI(=QyI(=QyI(=QyI(=QyI(=QyI(=QyI(=QyI(=Q!d$2Sop2GrfzQxg|Ee zS#SULxwmL0PV)uCqxS_eWb#kPie)dT*eH-U0_pbo%Rh1r{eiN1M1xT#^Cz5JhI-kq zjayo`szA^eH0PRZ4yZZTWMeS$11z4-y1(T4jx#%w1fZaD3ZfhuPoEyVm?^wl+hA4> zLn6&lQABh%ap0MWZN?U4G%Thl4;qTR&8_?A37$5VGN&}xgr^7vk{if@tj}(}DMb5j znMVSWgs7YT9X+u1McamJ8_~))BhfVj4aF3rdLHUKyiMl&xdZCgL%36=de!yP9ADbGb4_C)Rof=8eG5T;x}E>qCR-Jf*Pow!)8V3tE+8~=v^=WYMQ;%9337h z5HzIG{Zq0`Zt&^d>}dkR1UGNJg$Tr9iXCXOV`k9uk598rD~;W?h+S9~rwF)_zpfX3 zGIH?fe%LMCJCsZ$L{}RK>EP$rMK4YnHh**OfC{*i19zGVw}YUex!L^1IR~!&#hf>H!1uUA zvroAM*}8FE7-z0{AAc$%%}@QxW{fdd`lC&My*0dQo4h@-D_M#8ih>*Ix@c^k$^SO) zl~3hnN;Eskhyqt#zt-~9dM6Mx4%J6q(+Yyy=90PV4Eb)?rz$sXdn1j8frfNY^WX25 z_DHf0RcVsYxgC&T@`IbJY7Bc!D;$`fQZhiUH>f$@44VAqMjFm64DA3K%EzOhnjA)h z#Sm$FYuWp*ZI8r0KtxA%LITS3tu?Pcdo0(Eyd(i=&KqaqY-(7XiP zW&okqerE|-7gw^$MIe;lK`%)PsmVM-lcxbs|JdQ&1%%>waMQMUV%M=dZ-s}EpLMxX zcNb-3NNRYoobB}+%YPR9fw&4vqq&T{H~tM8^1Y+ePb+_^ z&ZSG>Ci1=VzVJp!;9R(1@%)AJP!9Dh>f07dw!*496)l^XBW=&`fROD#>I}WO)Isw{ zO+PaHG{uRcH+B`syu{C=x_vRYoytu^Z`3~EhMB9;sW&?&=jmnGvh~|ipusCh1kou- zWQob%0}G|s7&W+w5s;2QC4b#?uhDqC+%r44Axlo>AX}u5vKXSLUyj+Dt=pv|Kt#*Q zrG5u)g~4ss@`{gM-idlZ_2E(%=*w;Ni=1^sH*T`v{Sw7SJx8-N0TrP|`d76t?>{rE zx4nL-W;R;sLf=Nfp_8{y0%&qUf>rm1Ici=D-m7veVc_H3yLmN+R_+{JNkzP+RwR(y zj$CTFY(}%*Y>l$vG=MB``#oHPu@O3eevpU7>tWPOYPLG^ICM_IL?GlTYDwnk%!hc6 zfS^Ikg&^d-1#Y>)?b)Y|>h4YG+YyLg@9#M_sx+yo&r3)^J*&yNy|Zuc%)eID2jc=u z)Szvnx=wstuzS0vTx#-(avkW5Tsz;ldDN|AzM~Xdiuz;$k_Y8vypSp1s*-oIs))Rw z76%P^@+RLzZT`L~j*nv8s0RlFA%9)B;#YkSw=amCkWx+^A;HO_?M6;3_V}cVq-M-& z25#i59>ngO)9ufWN5PGH7JO9)fy7krvpl%+BU)<{YwvO&;;>-THZ=NZUZ&g?OcPIl zMtJ|vz>WGs`yWmvJUU+hc`@dZ;4M9^H@BDEQ74c2Dqw+wyi2PM|6RY@^LiI> z6F%N#$98VLDe=m^J7X?a`Fa)*%6X%l+Mp={nmXeaUk)wtnpQ<<1qv45Rd5@0saVi4 zqdtkzkn!r;V6BAu!VBv+U*^udoctRiB;xivkRTvC2b8JJy(;?bc%$PO$4r&@ovg;x#E zJmRuS^S|}5rdYGnX|gA++`aHz*H3GGhH?-cP=(~)Wr3*amw{bpncJ3cpvorqF5iQO zM$Hacx(>X&toT@!W-E}KKzgj*w&ldO3%6C|7!cCiux`H$3tn~bs*1?{&K1y*M>3ax zKRGC-?`f4r?sx79nv+HTG3u6NqMjw%=Q$ASS(AFjn$y+2RbNHo^cFKzr+eP3!-RK^ zBNc&&*oBT`r}}&oG^|mzUTfg5VY>8^wyqBl;x_WX4fFrapT`Os(dQ(qim=hEf+l!H z{atrPMex;s7HxQXBz1I_*EFg>*Ur(5_sX_vcjOq=hxdAoo+V;sjh-d?w%mGCW1}@J zT(;U#s~pqI_3j7RXherU(C|A#0=f0db?`CDp?*5Ob&WOaYt}2s%3%@lG$7;?2jo9_ zXX4ivb)tRH>*euv$5`(9cIT|~yic2HG%~^Wk{6Nt1G#p*<0_?nE}|S7nc@$X44;30 zRCysAEJV&tZXt4w%KMyLqw?`oa|FbWv5;zVsrO<^K>g=f|7)wahkyMBH5E20ms;+t zyHLHOYp)tubZ^spa1P9~<{?qhGYxQ?^lpTP&77j@xM7 zHd+7rdB^8$X9CZZrG8`D<4bb)*A}hGC^;zmi_W_P-v6(TyK;qNmX)|6m?Qc2zFfp2=&HuH9xkEY{hc7Vr)!} zRaFDG;@~!;RkI@nofxOpuMmf~lrD9+A z`KnQ?-YSiJmeW(zbn)vmTjpQ-IZCCGTa~=Et>8xSTb`gFw+)(XhomZ7jbjXAER6VWu?F^$$(c=aoEt)nd{CK99)7{v4!o(HJTdj$i1b!ob(PJ^PQ>p z{D;sq&&VGLUnOq^c{y@Rlym#vwyC_Fy0FhOXzl6ch8ns&Zubf`MG}eTrv@N}fb?D! zSn_f41U>`9&Q6>PC}?KH#-GSHd%z$;17r~p>Lrgmbe(iJhlMPjxB=M>qy&&|pN;r* zbHIiNDsmG@2#_Df&bhR!^8lJJ2%22+$O{3f(y_+j{U5hGtRf!+!6wFG_se(My)fz7 zBo#3O!KT7tCr$q>oOb`&TNRlCq!N%qzs-uMyK;t`Y}*94Yt{dG@;XQ9zf_tVKuUw= zmvOU;4nDipO$VO-4XX%ZhFotT&r|54cIwQcX7v2+dfU-?TKXxO)?2g4x_TM7IzK zdH=wVn_UX5_o$|d`~ZY{edG3B+P9rJoknLyQ&qQJAO&B=KKib8$#Du2qSN%fkh-ew zC}_y{KDhhsx1EFcwgHWZDKz)n*c?dFOJ4`laJiSA${8vjjCkLsB=&z1m!G?WdosQp;K{L?>^#DoMQMUd|1? z@zv%d6S)MGjc5;qde)J=Z}Mag{QImT8`j!@P!6T`mhqqbn#)BS>@w)aO(X)|bboTeG;1fYf%&;?)ZAYJDGI3{tTrv1e|o`26q_0F~ZOavewpD)ucg&2N`FqjnkY~*%zRU z!T*nG=$yp=3)%kvxg3@$`G4O&o)U0-qooIV7DwX!aSrYBG2CBIo?HCN+hNsdwu_yH z)a&Il33(*sy%z^#2^%rwvqO3QK%NVb&-COOrZ}_R;KZiwp^qOV)oqoR=IC&uG%Jv2 z%(g*0InW!kmDyRh$*EwIpn-qOJC^s;;J}O##issr9|-&raVsH^9i7a3)4czUG)g|P zhOgXUzj54?+j_<}T;DIDD=UXBe#oWQV zuI2f7c`GDflMd~b`nN;Hi^UxoX)g}!154r>yF?*1)}V0mI_g9DgZ|~m)X7%<0U{J4 z!B$Y6Gd2!cVw`b4uvUN5uBF>Jf^bI{;h<8ms`$~D-52CJ`xAd(24=0BH=gH}*Dv4J z#nvIiNk{-IAm1z3wWhyjGyZcEczm!TF3+VG*}n)7^#QlPf#ihLC-3xH{c6BgihIdI zAa&Y_JW5M@uSVOYx_h+3L3<-$I|YHz=sa)jtAA$py+r$JL}o$GO_H+%w z6z*Z?WKP&}IBNf|kWK8Gki=D}kH*d(T3Lm%qs-PweSDlQ`yF%kf*U$Iz)kFg`3vQc z4u%z(p1=8D^=bkkdjmI|l9*(Owdf}OK0fgElJEIDk!)4*KhTi9J$w~$rBAMmVW1Ja zbg(Tg&R}<#(gZ#}`{|ym?5t!oH@uk15ob5Y8gzT7Z~4K{DBU$C0ke?G)3}99|8zw_ zi)8`Z*&Zeq4L$)v7V>GwqwNeqKOa=f`Bxy#2j^N8(fh^Enok60&dh71}-^XCCL2nV{j9hZFzm<>lpGp zd7U`kKHjSp@)an#1aghaWs`H;J(JJPmYh9Q{@MD|!O#IaYa-Og*eK7(%O#Mvc9B`! zi{>3h+PYB7HJ_p`K5IT^rME(VuoM_XpTGns9@kANi?Jbh!Y zT^})pvT7x-soeX^b*&i%u#8MENRSUwcPv+>)P`?+6i_9Qub*miV}&Sw7IaNJq9FCd`Fvzr)UU>dgRcku2SoU5d3>!I$FrKIrfa~(P$Z+U6- zZvlt*EuS@^M=pq5QFk`>GB@ zEZZ;t_|x~`Mr-`&r%!-nMw^!Z`|4kgd`~t35fRE8AlZN{`)2;b^u_x&qSoe_g$#>% zlyS%TxupHmWXi)!736Iii%+~!FgE>N{Qa<#4-k(k?W3`CUc3*ek!=-kX>0BrVHsz+1d?|I zpaaj?AF^S`0G-IC8TT?olHG?@X-dGNPDy=`TlZdtQ{IS|zvZLRgXwJ|)JJ2)p#FpS zZTWY+P0LifnsY(dWw}vP+HC?F%^W^kd5AMdI_)Nt?nvYDy$<#mIYiK)XVHm9dIZ^f z8b7*!@Yd$pKtyj`k8&vUletRnp)Fc=9t;G_om9>*Kxl6ExI^h*dL0$I2 z6pvP^yVrDgTxWXcTVybnigL=dEwON4gUh)X0=coXX*KsDP4>U7)!^uWae@Zr)CW=s z+@1_O+M#0E*WU^Rt=%06&8BR#N8VjpbeFRF0;%Qov4Ms>(vg*;123d+enl;3D3Clr zPKG}WXm>PED;1d`kc%UB=g)iMZyL=+eZB)iQD^=IpUwGQ0cfQIT*sneDP9m)=BDQM8z-GPvHV!z#9Vya=s9w5{g zP}3MuPL|*Q`MTT2EPSPl9g*Pxk`**TZH|3f*Is_C;D-7P1ws~bxogeuC+WA4g@{(b z8D4f%v?*~@vn6v6Rj$r0gsoyv1`Sza{!xc!@96d&&2~jimjNLiI4p*J+w(7w6b+lqbEr(q?+ksFk{GM-Sm7K$(XlIYm=m9~~G^z2o+jck2#%aij zoB=`_EtPx6yane^Jyf{iYt2ANZ{ckQRjRV!uPQ)j4GbRXArO+f)X-)Xo;@s19troU z< zznIf++Nv~1faCzu?fafjOISLcVF=o%daC?R6umQx<3DvJ?~NM2hQjtVv(bxtw-P69P-j1cdr&mYa3%x1K&#_(X~+3IYiNlD132 zxI5nzej#YkrV_6Ve^61Bvv79i@M2pg{3U3rNi7~VmGo0cAV=hSlha5v3LQwe!H=fK z??`$*bRZwIq~=$vF4xsBcK&9p zl@p$i;$HHJV%Fv{J48+8wjP(Ck_)CV<{*GI0m6x%i0R3ZUdF2y|<+$60Hjmld=9;NBF^O;e$ystic zGJ&lo(MXF?Q!cf<9Eoh;CZEe_wgQV2B@&?JQX_$c8#JmZ0m~yb(exBF6_;D0B<_U{ z5`W=yz{1Uj54?LJO)(K|(1@-bhxqgda$QSe3UHIyfjp-0>EGnDYKg94@$!~SF}GC8 zCeJ-dr1t44WEN6QyQVCQBWXEAT=Lw8BR%I8r#FpdoOv?J@P8}>!Rhm4sxGu3GCmFE);-kU>QX z?B;XY&&ur%A3o)i(~KMQ@tXTBX+NFD8&&1Og(CZ!_*)o%=RC=^dhg}g6#J6|u->16 zWCb#)VWpeZ^q*u=CD;Wd50Khx+w}UgZ6l|Ol-t8)%h13wZfo%!kwP}aF5y6^ys}42 zZ`pbMF6C53P37F=G@9!&Y~@blL@?0`a*b-7z#wFkpVZZPAJ542jBEC=)tUz9P#-ay zvYL%1+7?_Y;$7Oz>)z4|q4541t9=w7K-U_%b$m*WW?&lYfHdC*qOlH0NUapE1Cngu z=ADlhM{DV_9OO27E_*F&&OEJ=H54ziVxOJocSY#4B5=w&?=@sPP6!p%~UrSwx;7>*qf}sbp86r-t?vhms)p-Tl_<3`9ZbDm!V9Su$`&Kvs->WGZVYkNrq&wH#F~350TxlY86ezie)(1w^a^+M^=r z1z6p#zW3%_FPr5(5RA5?C-71Ze=v~Cs<8qssC zdYA2O##=$$i;?GB10*+)7VG!K6l~oPZ}17V>GlAj@pS#*8|!ZEK7e;c6yyXD%HdD_ zZ~m}h7t*f1(FX);D_%>##|D=DPTUhd?| zn?r4*@Fh3V3Y7#>?ZxB`oexbz93m3VI`5M_N!P^95g!|CuqWwi)C~CLv#SG5OFy*Cv>%vAg-i{(uM1_i;;dU@Sa>kF_FCM-I z8a6U%SuaKzHm`3|kB^P&H-nUYPq8L@vmD$iGp2KvQLx*PKbj2O6hCh&O}e-)EBVLTm;J$nz}? z{psCrj+nmuT^dCc`|7=Inlr?D9f)uha=pcZCJ5Y) zug`q7Ym+u_KtqZHH;o9Nb_2oU9S+)Qr_=TR_?tcZs&1nA8Wd#mUkKS|f4g^R(>1^S zsmeAD2(?1pxuw3D-*Y^qCZCAOyH4J6OF@$ZG~08$p8n(3-!Y#PuZ8M10HGe-dGml) zYvy!%0tv)0a|j4U(I>}eUXrEt7q6)tcI2<_Hz2uz{PJzZ65m!>{+&9S{V8a^{%^vo zK=Z)M93gM%IRe7-3GGDKEYz`dhhmeu7r2}U?^P>^HIhy)!dEV%8ox5>HrN{;?YOxyEQ7iGn{FZc_c@i#q2~+-WOga&GYdq zX#bArbIusMEj~IX)G$0#v(+0{(4G>}v%I-cE$N^4+r~_4f-iH6-*);=#7f7{qrr`I z4O7f6kj2%`wOg?4bq$8FUa}MjwL*zY!M)4%E&)3jB2KyXmOznu;T5hObDQ!%ti3zP z25zJ`WQ%?RLi3VCkIw4f8QMhv5j7opm1`%bb8lBu?;`!v1hCg-Ahf)1m%hfiO?k0w z;npH)zf2R5A9pCuDNupisM}XGMXw(qXc{cP_cpYs^*NJ`=|FC8nlpa%#}MtFg%*M} zNv&6IiJJYC1xaL8aR!IO@zInojI(MdLTV93ue{0i7SUtVSJRJ&BR*iB0@f7ez%k!W zyP?+?tEzV&lC>o3+brCW)CW?Ny+@fXrq+8`o~?O(AZ3dvB8G)LK{=$^x93}>Y5K{D zF{~WsUF3*oIT+_?WP+=}OVxHm6yD8$HOTUOQtLk8M(qQs<@;fcxA|=Mbl0;tuRWbI zLzQ4X5b_5vdz@?4Vuv%2ifCw*PW(VkV@g%ls#6j?T!9xC-+*e)RyrS~A0fu=hHw~-8Ku2MkMt#JL zU*kM{VFz`0dF51v1bAo2h*$Ze!&gnpH?{Mp6(ND3(bNw6ZjxLA%`eKb@7!r}W4e~) zR58|T=#35bA-V(idE`(aXHLr}r2@||sab2E146OOu7YJg+SaEpk3(2F8oOS_E^BXJ zbq!n!g3D|CrLkmGP*00xWWZdM1J6sw<1O3A4|v2N=caM42aPhYMESWM*&lKrGJn;y z2YK_H#(a)_mj`~Q5Rf3qwle9xt=hsu_|hx&ZBl|pK195!u|v?jdh>bAo^CUir3qMp zJ2Yq3%t|rYZs7^qHyGJ{@1FUA3)80wIDtD91#0AxD7uARr+>ty4$1uYgNn^^r%My? zH)zP?X=Y>?ji%I00=aAxP!7q~{Xlr9`>kHnE<_PUYh>nX@mY?XnTkoweDU&N=ce=rVGi%Gh?H|_!rwf3u(1)eRM z7oohR4cj>hgmS7U>vcchzo(OS`U$I&_c@JhxbVsvZ^h6X6etJTeZA2ZY1+`fUOCf? z;m1Tdutd9wpX(8DGUodFd}~LrR={~&Rdo}d@Tg`--4#P$^m{?)p$NY-A4ma6-L_Kb zv==3w!9o5ViK)_92AGt@8YgEon!}}|dcgnm!)0hp97jha*tqMAiO$X}m$pVkz3Wn3Bc6r}HgkX8Mh&M|t-w$Cum zLD9raw@pYeH|>z=g?nt|d+M1-+AqqPasBzxoSo0FL^&WKsm}t*0d9GgR4&~$-S$XrhA^7Hf#d}8TfdgCg8zLwOr=TtoJXqfhDOgR9(1ZI5Rnhj z{Gx0K1xd(;=xq`Gbob2_&$erH@(O5#?F0&LfBmuS_4P}Ob^;Mn7Xm__V)36pJqcPc zk7#(u(v=57^)Wt)dt+{?tlSNN#t5q6}5re!Kq>hg_v$qrqJ#N$TWSOEzL4&iW zX;zTPm(6rxf8@IL{EyEg1vk)`92PU3x3T4uVV|!JTKOs{pzu4y)~Ml^_)F)4I<|LN zy(Uc{&uFqrV;}zee+VY6X6Yhf+Ar_+G2|)ea}umg2gKvUK)Q3)p5M*( zQ+eJOSn9{*hxBmI+Ghm~^;4A780C;hDsX6OrYob?k-gDKi*h;wp*9V* z{PgU|uQAk1guQ8;OCUxjjVv|Mpd6Y>c%H9}f)H^SP!7e)`?^r@B`^%CenW7H&F1Cf7w;5%@m z{!@Hlt9AC=t#+|;YEk>h{lQOyrpxa)D&;KJdJv;wdaM2)=l0X#q0<^ie_sX&^&dzb zX)?v(gNwS~OC2vWvcf-`sG)iPpO9l=&eVNYG7itND$7Mv1*SNjszi z=uNJj2+#z9TjG}IHPY8^N%lsT7_QUFW%Dj)h$u%+qdBiXV`q z=tN)8%xts1uqkZ-Ytw@j`V33B5fum>kf(sR#J4E%ZLdh(sfE|htl3y>6+_tm5WI@c z+}QiOCI5Np%tLRY;rL)`1$j*PAhBz;Bli zf}2>|)%^A}dMUoc4jSsGvt~5hcV=_9{EUWqK8deFL7v=#0?Z!;usQ8s{3ULNJtg)x zpH+aYiu@?b(Ugr@uN+CSe}in^Z@?ZUgIxi zC7kDfeRj$EOBYoF`d~wUd`s@DPpo70L*CL(GQ8PGUMwgpm-=<$h`(=@nO}guEy>e{ z4Y0bL7u*&^JbY+qc1ow7h3GATLW6d5I?X2g<=$00t*^9YBCSaCphAm=C*XdB1TP(Cs>&&GS>pmmK#wyV2{*Oax-At1EZ zFyTUrJB==k$7&L)NsX<$4I~$kjrOgV3LmU{Nkv`)$ql4o$QQx?d>eq7xI&X9djQkH z(3`_w-g%KdkBVr-Vq!B}3DD5Ey?bNh#Al0hbZ4!=>Z7rOOY?nnx?s=*fo5Q*JCm{v z`k|9rP6Hq`E7)IP{(}t5a|~3GRzS!j>24+7UAM9+_DU&IcLqWl%^cQi*SqI$E~|+5 z?hIHj^NE_?g-NXuSBboGFCjtjSGEi_8WbQOFETQkSptkrno)q*FBT=F&hy{SWb)|bO+kalwj@&}_fQEY3=s_PHXx?QD`nIC$ z)Y#7Ng4>>6n;JH+njf*h!tDtVip7?s9Xqmgd^w7HX-*5D_*NiqSO4~=<9|2e8N#BP zj6vK&@-DCaDqrv#iW5Z?kPAo-aQkD>VH?Q?KdCnNQU4up+970k@JU=j)2YPDVvOS7z^6)05kq+z#ZeEth(D zP98x#y#4g>8sj_68xxd;WVG z7MK7#pz#zDT@p-?+cB7yQItC*ZKp>5q&{EZycPLYv=ci?P6}_tU%dg(hfYVM%JCmfe#rA8XD*7 ze~~TkE&C?K*DQ8{?Z~-lthox`t1)9C37{R!SSZP+YyZp2$@TBGyoqvzt~FvLfyjHX zW{ku}rV$1Bh`##S%f(gC{&fiD2-!jl^6~W3>%W}7e+p?Kj*x6tGhzYcd4^1j`zhlM zjHl#a0qBAXahiYMA8?#MY{)5Spts@zx!PvSjF#`mR#&-I1(E|AEgSe##d5PMQl_5R zp-meBq3CIN?^@>PEr%}#!dg2-*Hv(9n*HFgYj>K@1445d&_n|%0-Bq>ns%%A`R3LP zVQo4RNG>3zTGPjs`=q&s^z_ZT!caM7r1RoMu0fb~TmhDyQ+V0JIAf#)Q zvsrL+R#=ntSf$Th)_sdBmHunW0JnY{B z$r<)p*Ab!5w=iz3oOFc)bfq9ct)EJMfAK-pFd(9}%K^y=q{fSRBj==lI~{u#NCl9s zmOw5?^}L4pdiDB1u* zdh0v5^ZtKl&I<=3Z1gL^ZAPx7i#^|;(lKuAyp6d)D1VUj^!@wm^-Gh~M1x+k0Z0&# zw-s*OI_LQ3BSyp8XTK;XZ{II^%-i;S3=r}Zpt%5q`rOy{f|e%{YjOc08->9=1VZi8 zK)+-6wACY{1Ol3OKuQ2{oDST5;^*hICL!#)Xc10xa?Q5wCHfDE0Ya?+zY`3EG`e_1 znu?|FEvEdnsA(f0B=wes{a$}x`!e>2Fa&npQP4yu+`01KxjXOGa*ROogQmg~>zaS= z*KDjJp9^ji%tswlKdC^`Ey;$K8xJH8Xu_Lx|83@`ZfH|h4qD+0^e(FD%uGX8FN#Y? z^HV{yP;e{tb-?BQ_ZpMEG0#_Bw@x6b$igNmka?+2_@?zh{Nb(0l>Mwv$FZtMca`v)Ej}dJst?(TrAicfVbrhW>M@t|g zn>SrZ5P4-uNcDY`d$g%7c8HxSbcI|i?M(rY}?^Z*Tzn7Gs*rUk#o$wi@DVg_|TBf%$^>%oVE@)oC&#mq2s&&Y~JQO=@JL zd`LtRtm{JGp+&6!ogrP5C#_0jFxw21Ff!^+mG<$w7{+QoDDZtp}=4~AK#rhPQmnJ}j7bX%p?8x+dN z`l*}t?lqST!HA()q8-OWI9rCb;?uC6HzwRpSU7^__;+?rbDDs{^aJ$}oI=!7C z7#V!Eg1oimK18kqxu=kGlef0qBguQCTmtQHcaX_v=*4F&LGwpVKQjDuHtMH5jbjMo zBjAodi`R8D>zfq_HsVt@%?_j@bRD~;^^LpEbJIjCU}VZ)oqLKujt-vjiQz}&p4iBQ zR)_>b`Kq;>-q%=q=H*-B#`~PcJWFKv>-ZGa%?ARMYPF-$3~h?^VD(s&EddqP&200ul6hW%$3R35GBtbZ7YV83YArbPdFi>V zO(7eUy$%TJ+LCVXxoc~-Q~r(K6@gvv5HuT3{rT=d-@AM!K?AMsxS;8_De1w}T#ti6 zBgVN)K!U)n?sDC!b$>RS%IBKYrW!j-$qoQL01b_rUAi9YXnHuL1-LQ)M*GG17f0UL z_^VsYmWF(-jnTXS4S7D}(F~i@X0yEmjo_v+M~59ib-E&5xxLkkJ{dW9bU#|Hpw&ji z0rIzep4Z}iJL>A*vFq2bQmhwJH>%Au&X%m(;@7q~c?8^qk!q~Hi+-wcHmZ2zKvQbA zAGSsvK59N4{6oW?9n(;xO4%YvprKLv;x7=5xAjHW(kzDpJFVTq6d$1fXztZzyf>%Nm@<6}vdhCJSxx4-O)ier!cp(3S#(40v( z@x|U1jsLx%B65!;9~bI_8}+Q6Lub9c(de^2;6}TSFgt7sgz_$ZkN+22ywqpSfC#Ch zfY9uH;i;{0r?Oio0il|LM!suekSJ&Hxu754Ee@xd9<6-Cs=R%?QjYh#vD9+3ZSP-r z3zB+j@MjatZm3r)C;;Ow`{!97T5GFGu1Y&5XEgE*x_m8Ev;Qz}DUYHTBIctNs0HH9 zR9aOG!#2d~I=LOl+f-9(=J`Hq%suSdF$=0R-+bpd(>2?>BGWuak~c-GzCuLL;x~4AA5Rw=F;aX$jo-hCHk&XE_j( z`h2~*J@Ou}zeh#30HIz|FLR&kcP^$cuOjkt`$MD=@s#EPY!Be*BNglHdH-b%(1@sJ4G{8Te+B(M^GxC}l1+G* zaxJ*Oj{7F?ZdS`k8qp~hLk2Je2(560JzCHx)AakTfRKeiHjPM#ts&zbHSf0zg}=TD zZWN_W8Fc@n-eaGqRk=A@a!)=iVpHo@8CDHp60p84-bmDiPs)B})E|YAOB;-5sZYxz ze7SbK$Hp3%N1!@BG%EMx-72SN-Yl^S|C_n4!)~mC*NdD6i=_%Lt4h;Er^#+LSUS@t z$LRXSL&A$Y%!5p}sLI7_7B}Dvu2x$Vs)I9b>;`MJ#bm$Pq@VNK`i1}Qf(>+}tu$|j zY%F**=s+Z{Y2GsQMW(c)63)kZ;!X!UXhpZ{-`vaWGp6K@Fk6G^Uf|UwbsrZQu+{0n zXL|>l?7e;~KD<*@>sOgu^T=yt&FaSj60^T|I`md-#L7yZ_>bxTYRHbM&rdhkgt>(Fxa-FN>x%ZN5{peyXS%H(vHs%Ar{l2ugXHVG zd2Fwx-`GPu@s+~LCM11C=Az47H@+s!$z@F;$*f7IYZxD49uRMiusMU{O!io_Qy*=z zn(&=&v&|Y4@93XYTv#fcN@&&4u&N<6X={iV|KlUEpTTYlPO#bWJ!yyDnG|PoG&I^` z!Gv}{2OBNsWS8_3XEa_fu@1zy2*KW9X~=6E9BDQ>nOP;f;jl$H6HtO4T_YBpnP&L2 ztSqD59OrC^eZe+t77FIYv;PP8GdY|M`A_W0ao8fw@v(aLwP6TKGY3jL))G&UIrE>4 zp`K?Yg83hPoFzWmY}LS-8R2{}sw!2A>ZWWcN=7TWi+5TL_I?f$Ro^e(%5|oPQ;0T2 zTH|8%WJqujZZ$O+No$T^BaTmKs9Z#woiXtdE-gSHRV4|gh!~r#zr%$pH$+=G%vPht zV74>eMc5J>I^yFD5eA1TSowkNcnu+&Bf$_S%p+9qi0mI}GUEHgmMZ;d%aezCoe3tB z(`qnUTtD=*J37YcjC0fu4#r{kbgETS71Xhxql(QQ9i05ZV7;A2$R!LrMiy-6R5BRhaL+B&=<;y zh>ybC!PIQ=&M19N{Xmoxi4Q^h;K6pkferhsXVY9idN-IHFfWksA9{CT{gAr#T+mYo z)+6jAEAiLZ$hky))L;3`RBi3rL+He?v z$?o)FCh9|Ar(S>~;>8b>gB9i`43+&s1{V=#AhIw66djKLeAimb?}3~TlFSRLO^=tw zlk{fmK)jMhTmKE~0;A zRHz37+LDDnVfLz|(g>bh5a37JVm-LnEpZ-q95DvZqNv$0d!P^Nc|L4|1IO!fp10X- z!&3mL*y<4Rg$Dt}DV~pWeR@2INW=4v%^pbyS~`4q2N?-E3iQp%^P9~Mno)qV_vB{;c zF-1z_Sxa|*A5_;EMJ#Y~{r(`z2)m6&dC-YptnvK0kL0c!dEpP3cqEU1l(+>2D?d}y z5%`D?Cj7?-*{g@+;z15r@E@sR;U3I^k^7~}&cRw0^GqMM=XwTQT)*{fkCz{Z?m2~J z>)3v1JQTrWMwHBdsFM2-*n7+%_m01TY2&l52$yeZBBc9MTq>oZR7rV~wVJzPgVhEoKAC<5UON1*$;b8t@a$xwxn@ zgNu3rF38+5HVH8XXF{|--tH?6sy+lZ>IK?Gs1sp}Inu%t=ynICf_+rd`(fhh#o>e8 zoYNi_4r=;?IM;thRc$)AMgjx3D<}uYERc#tE-x;|X0nBvFF#GoX{aet5^GVuW>Ae$##^yoVdgn>A1&bi7}&U9qD@07y7?e6gl51( z{DQxroSz?JmwCE(A7bLxo4|<jWD8F)JOnHASv*Tb=h=WLMVeZhQ*#&4!VsUcMt9O(~?k!I|$AXhyM z@y-}Mmdj06*R5!~AueWs#dR&JA7R2rUQK#K6xQDLo&7=e--qS2h66CJ6}Lu263pXndFG*}`r$#y(6BLs5+ULyTK_77Uf2 zdU_+nZ-k=QtS~{)i(eRc{cFQjAJwSALA~JX$sei|R~O{NFFHS%dEaDAKUmX(KAF2w z*(SRUjeS5SKKZ5(QW)F)!Fmwy>BN_!jM_Vr`M}7A(~$Pq8)oYHSsqeF6$OR0NZF;|imp%`(tb z1wU}4`j(_r#=R$ zPV87zHjoiTh!0J;^GLS0j8x;k*9@J}C4xT-iE@}|*BQ+mm7mOO`W-FYHoAFM2)sOR z(G0||C&sb-G*-|bHvMKT9AUFLX(c5N_Toc1E=@BALhIn-QUo^_?3J@Q>A*B(!<4qu zV@5~~%TA4>Rq+0%L~Qq?!JP~Vae=S{Btqh_56oi1))u9SeKi<969sATf0BcC{`ek< zl5FutTD4<;K_YfMu!#rdv`oI-gxgbK;daIRL`^C>+Ju=4tF;e3stVs~v0Irof*_#tQ7Ns*!C31yDUL|cZ3xv_WM z`yVm)6yM!`Qc{G=6GK+lZ!i$^Iv=f;+@pg$`3-a%dauN{qjn7sAb0(S8}c8hB4J~V z)3ec5`H2$!Z`<+QL`sPO-!ih-&LJQB3kQNX82wPhQVbAF%M`S8(>Hf@s059Akv!02 z_kA=4!(H_3MJ)eOhmY|atlUNzF{nem;7rwN*w1c`j5Z};8J)H$@VG6`cOFklgR+wG zKrz*jGWIA&1dcRXx^v=E(uhI8FHsULB?S~Rl_<4f0J&Uz{)Jc^T4Al!p%XaGcpiN$9&?mn^?#q8mW3pyTu!5NX zP}@XVbC`W^808v?1IaS;gpc3dA1*C;o%Y zAec6ZgP14#P^@?Y^vawX5kKDS;9gBZF=e$w6bjpvS#_}6J=*ciXXLKCiEj7Y$9va< z;->p^Q8+j{!of;$qgL*^Kgq)@cWGRA+$i}yv!NPx1`F}{EsM=&jrMvl)*R;u4>P&) z26*d*Le;o9qt~N$v%@&h>#n0(t*Y4PovbK#sjtQs#>o*28SL1&;6B5G3g)UOZ#uX;2wM{7_m+Byn>vu|- zxU~t`xLu``k=owiqh6$x4L3tHE4a9Rr;Z7;P!}6^l{!YE1Grd;>(nu0J~;JyRX|-Y8fd)DXdbZCpTg!%I)d{r834K?F6-e zSow*-L#(p1xiunEB$yGUAq+9tld#C_jB&l9$*z2iFLb&PeVGdEm7gm6I5S?VHegGf z4+gGhz`^w!@t*$}F}aK&PksYp_+RNqtw{$U7Qfg!8Jp$e2EO-8s1NDYhd2vCK|wB` z)cU4%(>SMhyTN$y3_EWZ@Wxx0es<3Z2I{lm>vfN**WVn#%{IWp?TRhW`%6GX&;*_m z7W@Zm3`RrCJ$me&j`o#fRUZNe^@1(0vY1;5!~Jqf{vfy|zoD*{qb2!Ue!g3bKLb9l z=b2FclxeUgv5o*j+qXO5D{qd#W&AoH85uLaL@a2Fk*Y0 z-Da`G#|bX%xC7UkoUb&z692kSSg?e~%)k}g8q6YY_n~*!!>;HTGP{10oc_}p9z3)H z;goYxJUo|0@$V_&;|hIIBiHW~*2pdH1sAug6!KByUNQ;S3@C+MTyZa$xPGUKhjs{@ z67BNxeod1(j0Dd(evyDlXuH&Uf3dH9=h$+V*1lygyfM)Ke{ReW430?!m`M~P5* zNauEyN@oKD#im4YVl*m2MRr#bw9wnsI3VT!1UJ4&YN6D^JSUWdbRL<=x zrF@jZg}5lcKa7X3F%R5)!BhZ`{*pgsw$kwiKE^q%$GytpT-1OHyGW6Y?oY*sz*ZQg7e;V&puLXza+8AaOoBC0FGLJ2H9^SsZjjKzr(~oYRqrO42vQU<|Ym1!u9b zv!r}bx<3XM?w5=gtBqJs(Z}_Vrj1*^B=LL{JUwrH&~k@Xph~BL`ZIK;0o7O(61c~u zsbHcNn5Ke_;)Rn(rYU0N3P({X*Kb%|ikP@XqhRB9l~P7(JPJPQMM~MYB2sX1{Z1Vd z?eH{3+VK~krh=JvfSL+MN1|d^lIuCwZT_ex7rpXwhlxb-5ef+TQB$QRc)3-)(%Dc6C0O7SQq|)+)Z;qL z<2u}kOf-8(3de)mO|duwj=ya*I_%lu_dZOW(@% zAg`*BSN$+@m_MDQ3M%nSkFUar-6;_cJwLLGUNOPZ05}5<+mo?NTFmh9ehNE*@Enc@~!w5qJUOJ(jNex-qY%;)ZGFfOo zLHB+4U?DXV03wS$lAIy2HpkMQeN@0`u&}R)gcKhk zkG{vs!Q=#rQht)Ak`;?{y`1!FWW2>GES4VSkF&W6`}qN9f-?1?B(BDg8YqVK8Je-6 zI(R2Uk5vg1y?6%?qsIamCiXUa5}$bM6U>oLUu$0Ot>Y?%H7LNScTvA9)=8Eu# ztzfXtW9|9NkLS3)%K`W6Sj3fwi!2V|IZt4Liw<~O_^}o>QWh&s|b&oCT z_-lI)8w4MZJK#d^7WnpBl*_Of*f9~xPd2Ri9U3g=cu|{?{lkmoukG6Gt3T)i2V8^uJi&`6P7MmSbi_^M&p6HtFIjWL79aAE!8ozBd z#QIvWR3CCNA_@!v;=EZORZ8ZRK%VT{&BqzR&|<`aMeG5VJi+M^?Bwnw+IEWtMjxdl zdk&=}yLKyuJ8%cWqgWi&CVy`jF&55aHPaHW@{^7-_WvG?TbqH_?FxO{KXo$kKraNP z3WWPzO>O9TZa5gw*vC)c2(95a18AXl@j%4>vi{=FYb0wcP$s+nFsa!G8bHeavS^BR zQrA9TW_vzbD*1z8l>7#IpntVv8!p?K3~J>kB=PU|TsBMcEB1?_Ky+0fQoBVapk)z? zo4UkKaLjxR)`)luMe^wJ=juMF8xC7I+tTHX^|K zKyKn`7gKe>r*{*4yK70Ez{{lqQB5|Mv4Gi=hIGUq@-MK9t4icvmU@>Jms087Tg#KJ z(u&Lh`jkaH5jg8f62i_ywJa zx1W6|nu*IZ=8EwA%1wOH2Pmp_(D6Drqro0&GR3h^v2q4xyD^@BiUDVi3vEnKSHAX6{Y(Zn^~p|?})a6+tR{7LfXG%=#XLfCN{^i>SJa*iwx z{D~z#*5^@WUe7`TuX~6A{J&c4QzUTpiKDCd-z~>#haGKTru>9t;1m8PItHH)igD7eKsLttvO@JC zuvIVE9Nga+?O7l=xC+;h%Vfc^=*pKR5NYB(dTgJh=_}3I-0);i(8-wQQWQ| zjeq0g@wu22kPef@`gE9_zcGwcP*Cq8cSZRAXcYsKTMlVgj*=06!0~XZF9$pIf*F@T z^|}oSAa=X*8jheu3?d?P^2Livoj> zN*IjTxF09AK55vv3W;+h=5#V4g;ysIyXS|YzOKt>mGf|#Ug~M{O%W=#S|$*+h!(17 zyzCe(NGj%is|2m1 zg{|u%SnUC}u+dpb+S3h4TF4FNh169|oVZx#al#{R=cpTyq7mrX7zk!*4prWv$r(&? z2k(M|a$GJ-aIsaJrfXJa(+ouOZeEK8qM{{I&6F8_X|){n4W==4Zzp=TGQ6HrcV*M4 z6lq+Y+qj!#)Xo(DmKTqwvK*c8W_o%&W~KJckj>kKf7y^nHOt{uLYwMUiYgT=abL3} z^yViFkFQx|$d1@fAGp8y#^&tXV!Bio=~2OiMhU4o@QGz}N!EMmh(~wMImbA^+P$A- z&Yubpv35$RfG#W`=?WCDljm1_DB1xk_l4|;C_ex?JmyV#tkrf;%wz}jXw0ltQt%ecV=`QVJkPQ^`sqtL3pn$!{KNeUb!c91x4I}ptiUEdEXQhTJ}&>3z! z_foXz21eVCJ|o!r1fwR_pQf<{a2`~RjzJaX!>}RH&|23L(bxrPltl}G6cCHEXv-wH zEsuyE;Vo${^;3{Hi#P~d{KSitC-dllkz0B-YY9G|isFKGyNE;^{Ul#36TpG+o}(M{ zP{&hB()L(^TaF)>0iHR?V_(nA-Ey>YYXVOJSfqd(PP8bQ|WIuAgIOVT4hc&`cvDz73aDrn8P#2i z={S1W$0I8%>Mvf5#1f?p^FqEoj*ga5rXRRY;+^Hl0dW@IAiG$&+oQ4hNa~Y3nP$c= zYnJhd&ZMTE24xDkb{O<^UrjypzEBg_RTt`NrI{b|;6$h6C6h*Ng-kvq+>tV;uSwUJ z4Re=lcvqasC7KHt16K*A77lj`U7Z&OVWV#0W2!q>l2$crm88L0!->o!0ysBYd^e_R zYk+K@POOuIf%1oa2d#dY`gU#|(BukZayHjy)`ULJR+`;-*uM^)qdnEM)I_L+sdG|> z1(Q_$gZeGz2l=VM!t`U6Yc~juM<*6>a(ytOp&Kf*rM99g8$4Pu=^ceXduHuOC^?e^ zHsxESVpg}k<JX9m8OHQLU?9rv_W=b34+zdHAHDt80?kQdnY8v{5k5)#u zFU^Rw0est-o7Wz7Hml=6Y%xcbcZy!+(?>Qs1Q><6MV4H*9 zlcw2iI=puy7ZS?=khc6GZDQ2x|M>gAK{0yX!940{18EnR*z!YUUAt6eFfAoR9CyO7 zmmIT0-=JXfQB_Y3{~zD4W?(~)AWmm+u}w8M0L|a zAFN(@`>p6?D+JQvcj%?7(}K`(n+&DB_+TXUv)u!=miDQseOC5iPkCY>wrk8=!CBpA zIVdfA?vJZ*sW87q9hB&^{R_p;Hqi4TXIcJwakE|hth8AU3d2M@;tqLO^lduOIV_ZW zQ9tq5t2@$?%qSRT{udg-t8!*#`j3CTnn@C{2Yt4)65O|cp%PQ2)~uLm1}h8UaHUw% z51XW1n-!6g|9UG;6??M+rWsUJIPgt3Ytnm?J3(5*PNOMKTRi6!tGf4BBnjOh*q~tJ zq<+A&W_c-SmL~PKHX-|`^DF;z*8XVvL3pS+z#iatxxnmVvhs*la#tMCE@tPFA@6wE zqaBd`CWlmyXy+`Qcr$FH+)2thWwwB-O+vv^6I>tW11@J6cz=Vx1r(Z3+vh>k>ZJ;E zyp{qIZFEz^u5ZZ*YXDsH0AIsN_=|R%Z|r4&vL69Nl8&nlU@j*4Fe>c^As;aNA%7OY zC1#>1A38W~nSgH*hE9CSGVc>`xE^98nN`nN4!wM>%G%-Lohwx{5^NSHzO|Fxy_zxv z4z+T_eJ(uWkJERDM>N5&R= z*gMo6P)7@K!eFY8!IWy5z}zB?H)B@gq0$#;ly&86o<%do^qWB14=YSow%?yVae8tv zr;GA9ZDy4>7+9U(MtwKU3fgH>;uS%)FkF_6CGaIExQGWkssVK|K}U0AK9WI_hP2j= zNO-s~?yV9SL(~faZAQo#SY6y@D7NNW9meW)3@R)Wh;qngd43Kcsp@wpsoX)c zJC%!;fxHisk>MDvpaIu#6938o34v1llt-|jJ>7<6^Z1dpXbV;#Vvq8mQu+(Yyhz!2P)^$rN-L07}_Mx#_9u1E*D5#Obj==qpzvZS;d27p6D8IK#Jge z-`V!6;G3pjfwCC%7gQzgP$ZlF&GYWvu0joH>@$L~Pgpf=RL@&of-5AYm?H>@x*Y)D zSE)OA)GBY2ZYzVi7IuM?kNHpud0bAYcoJw#I;x6@ax;} zznfK8t_SNCqOpMvD4XT2#bj$(byqWj%=yzwu5U8Lh)bA4v~s3jtZv!lvacIzL|KIm z3R?y!W&QqpL16+ye6^~_mJQ}yLpv;e);g{F}S&Q&0%Q1ritYQ(syE zlR)<$;U)jHf=L}xENe}{)hD=-nHB9O<#N$@{|!UwUH&=6Hh3PIQhc;=z_M+_!`Glu zT`n-Wm=>~#VVS>89N7SwLrmOQkT&fyAoimTPSW^b9qt_PjQ5l-BZyqgHSwU*nDITm z=)uMuf;r}!kta4tSjGnKYHB7*ZxGt`MT*lehuzs4OuuU6XrGwImbXcr3V7*;K6Vr0 zIvjxVQo^0i3Q|hxRvfMIXgycL_d|(PSe9TQ`{K8CEk7r);OwYghm89fx7zdDFB`F} z4zt!BwlguQjkfDycKln@BD2WoK8)N>FSkf~(CA zU=6E%BFIPIdq8*bRdsG70q_=)(mE>L4Jd$JjHMyF;W#}aT3{t_y8xs^9ZbAGa!8l- zSS>!_O3F_G`c<<;17Lq*3IL&BK|~CDLMO13l!m2z(5cyg>@J@}m`>YlI}{O>7+hsy z;HY882tME39(TzXV!GegsaX?5m(+IT#-fvoH)T6V5XM_5iH9OL{VYl=6$n{c*SppZ+`_O_a8q*PjsC-j1dy`SgM>y5Uaz0tD5)@I~`b zt!SD!T|K%(E`LUaUax4Gr)triGS4Y=jJZSDf5m0f^Q~PR zbEMft6kF>#$6@H4_P1L2Kb~%m2hb;H#6Tns>f0kX-tbnEd-|j1;F4TUe>+-$XO}^M zW|57835%x#o=CGZoLo_&Hh`=_2-X@Be%?KBxrN7@|GDGIU667AzqD5aPIct7YfWPB z_`hJEn8zG7vTM3IhCFsk!B6R$pVr?O*BbUpG~P1qF-|}B>VKb{2H*MFJnq%rPC}B)Hkd85yo~%=8sndTY4=7a zyKy$aY{S9j1n(q8(>hvM+@Q)B@(>erv^{({zT5$3Kgu61_T7XqKtDmi5IdeSdc}n^ zwF>SCfdGB~Te9M~Eby@E8hQkcgIzaI14pk2Tr z($w{tlZg!!?lP!sZeF_)+%X}Fx%5euiH6ynr-E^wC|r@`w^SvtEhU35w(476Kft*B zK{TrKUfApJ&AYW@1smi0qt*B_5G7vzxT<9)dpF3Gh-4`LwEji+C>~RXrp7+=)DExJ=}2 z60YcqgeoS4AOJ5xwNu2{X5w`z-;3PB6ix5_NgyI10h^{NI$c;6`a!b%0ZQ^ke`YXL+rXUMw>BrT{9k)oJs{A!WEYFJ-5IrDVvDRW9A82t-}HDIEs&&66eXw<-#@ zmD+$=cgCmH45Pe#13`-bYd>?8ZaJ~820_#m7sMtHXuP1w35b>Rv;b$^?1)Tro) zI16=4!#gP!5(=Lp4Q4d&y3M%Z@SAhdkwks`uG$4byciz_9e#4zK<1;u6)mStp#XG? ztm>C#6@}qph9z;UY9`QK2xl~Y%G`0v0Gpy9z3>IBKZM>WCi)k!O;W&;*CjfcQNi0# zx}7*^`932k`vlcC;(<_M+^FA|&l6XT?lzX4+yYsP>7p*&IW?VF(}K(~ULngkT8bny zO%i3%Ow^=XR_{UI;H$7le4?Auy&!k#(<-W+f*2}Y3~2KpI_9kAgvwqG1+)akZ`6yj ztJkGVd${KrcTL*^?<7@|dTV7JfSTYq7}PZnrPOdMW(3J=O$Nlzs{G3|f?@dsQ=m9= zMy<-$^8t$t^GpAuJ+}0d{rPwM^K-Gn-C{NDY|$`F1C#6emSg8}R$g+`1|>kCZT{&jJ6Lp0cmO$-E-pk$4R{%81UzLZjeDo>4O-HvUv znKNyf1CvobWCBFS}W5XUyf=0524M^)Vd?a48`8`8oY6e5huIlsN)VeffhekwQFKjGJb zyHu>~qh+POL`D%cj4eoP>SFazkDlemND&N);(JbJlvuSAEwajlDYv^G=WE@N-s-Dm z+YSSNL^%68?NJOzFA^?g2lrC)s+s4W#{-RvZQ31;!N63Dq_^MzcQG0$R*${j-_;V${a>9H;Tybd#d0kLKRUxQdRFxVq4y}Ssb3tv`U$7>Y; zQH!*d4b%R$fd8Nt>kG>iir>d#~sWjatFUDdzcBnLqkS9?V4x$+BZjw8Y@Rj8kS@mt&Y9Xu04YpHGJZk zonfvugE(oIx~hEVt;Dc2e<##C=D~AAU0aQ!Iv49)3M|1@tz2xSOpE~5N9p_6*r$je zz?R^uav2#kFVUcw??%!!AN8=pIU{ zjca1pm*@SQb!!RBrmF9_!7 z#|R_;5_VJQ`la%QT|WpF}SwItE!KmPtPA; zzGFB4c(ykV?{>#`-fcVOOE31+RdUpi6C?aob9^qxC8nvA9pK02>2!L+ND8aA!#|IA z<>4yZaz{RBma@|}OUW8hk>2QZ#-ds`wQ~rT8+T{o4%$uGKtRB=RbwGlV>0AGr7a9c z2_q)Nb`7;Tfvn+Gl49CYJ{j31xN7d!&NaZ&(SnR>DK{)g&H$F6ji;UE0Nj3z(0EkTQ4UlMGYYfaqo0**vqpCVad-c)vmHhXQ2dHp z`jbg-M5O88nzM&8U-Kcjr@5D&`PiD;)MY(y>i9vJ&+< zqB*I3YPwCss~?Bq35(ALCLdK}XhqdaRvSG^_O?BJ88pNsCm1IwLK?A}uJP&rTtz|} znc=xZ<)#3#kIJmI)n`zF_uH~H%OQ13)R|ZUY9v_`t zmOenWB$Oofu33~|O`a{X4Ql|=|4bivaP@BcnR9UtaB|8{u1K12WS8)Hwpr4U;bBX8 zJa8{)FvsSZA=Ja#TjaUkpa1#gXy?RiRdEx;jY(uE)4iBt>4R~Fc7l_jv@jbAY@TuM zb=aI=<&|q=*O_@K$?PEPg=slov!79T;o7^iYL0bPCWwSt~p! zaiMQPu#mb+q~->NaVq;s`NeJ|l&LbQbr?i2(f!x`-FZ7Q*l3x+*&@^{-kdL#36h0W zhWT2qSXL4Js(xA@%Vfvv;&%K%_9Q0+p`%YwQVFhO&OKMKT6JtfglXQYozlxezv`~4 zG7bhq%LLXINe!M6*@P3G4ez;*yxF%*g+xK9y`yO*ONa9-YW-uL0N|J>imm4!ErM8hZ z{jzGlC)|FW1EG&~a|n%WX3~HW`v8)#N+C zYFHF&e$jaBJ@fU3LHS)iP<3&&y3pMsZo=Bk<<#*h#=4XpGr7p>0%%lC^g6m;?1s-6GMd4G7r zpd3UcxN2RUSX2Q%NzqguJF22hoj)VQghe@kXl&RjM<DpkR4XKgXs5>}<#Gc&X^gDjhTq$WmriVVda_pvKRpe-3)_JV zi0#LwJ z0WKHCx)`%YLIqszw_jZ*9qzY=}Oq&wsE?*{CRIsTN9~(^#l+!!hW+nhyeN7$W29 zc|rm9QJ9)p;W3cR(ny9zk)4sV1Ol0hF_L1nMPG~|=*l&jk5N2czNZroEYl=OBGGts zoD&rAPqBDu>&qv2TgrTuqg#a~`|*d#4BB9lvry1rO`8xebr)qB5MKP& zwyyz!i*?MTE`Do^XMnkH&y2E9L}18@)&Z`?*$BEaRODPx+x}=!6il{jsD~m_9&`z+ zVaEt`c3=-RZ0?T-l+~uwuA*%c(@mP9|{@2sMZ1ktTtH1|lK2*mU{jk*J%eLvl(}Diu$PIrJG+cIG zWZsZz#og|oxScwfc!~FT9=tlf<|sGl%u&Gcoy#xDCDjL)6`$Ys_zEdVFxe86c^@)p zbB}R29=~iK8AI9Om_)&RvGrxU$4)gp9LVfG?@q4>xVFKE+30m3-nXr8xNI2Tnd7A` zO%ChgIO_bIEHlS%Ww=~4jEk9cne51ur0~gxk)6=I9I<#G4DqGxpk7MWIv-8ezE)uB z6WZR9beUYK_5%XDd(D*(G%PJS#+5TAL^&cX(Y&2@pEc5?M};S9pxL+p(JZai zYfzhRxPhgMUxPt|w;@o}gz%7g7)Pd5Kyzpn$9md6;Bz&NFoCwHl^W|tz8=hChrb$; zk!<2;D_}mVjeXQ%^Z5^!dE%-DcWlLwG$sRdEE3MRl;N0iu2pnQ`5%a;Nvj4x>IDfSpG-+% zzV$z_7#eRYawf3kkZD`ZynDR0YD=NYH@|eYEqr7;AP;~zk4c$KzIZm9o2x3B0m*b^yUW(@a| zxKre<4%Bj3U+*vqWjsoM#^wVqCwU#=(j>98c9?n0I||g}nRh5SJ|kXT!D3pP->Rn6 zH;(s`jrO3=TPE7PMXYzj8Q6*fwnc#bl{rY4VIO0!LT(PH&s$8`&p1|iL?nIOo0Zqy z##BQ(9?&LM?Q<~wD5|C1e)MwVG%LkVle8p9hr*O*%*%ctI<~`Y#9Cw7A%`dzY&7>< zTL9Z4%;nhV=3?uCs#3DIentoK!aFkpu zT*P8J=7^xV3^jQOu%6ir$jvY98MmTL7h83-QeNr(0XYd zU~PTca_K%C7-qyLK{W*+H(ttL&OCLE+(+3Z$RLg<&=P6jSW1>y5KYJnvLq;{;-%L2 zs5QreD_AF@?5f3dg47GjVDwRwCfLv?b#yOYXEjZFcX=?BCxvxjl-9+?cA~Yd3H*R_ zT_Y9C_gHP$pLFS{3 z`&jYal>>q- zbI@)Xb>7>u7`(ml$^|4Ze}Et7Ww2!B)qC>{xIy`ef9-N1HbH9>AKg{T1?A~d&^8Jt zA6TMdO(d`W-hPoPB8QlOzoaMU%+%nO$@w~B_bn52$fnk|0};o)g$SK5-L0$B>fHi0p4Pw519<@nU3o`!Vf0Mql}^+KeG~)JZgHlx3`Cvbhz6^R>2y0B1~$o4?QI;inD&5C*^{PhqoFiz8xn)& zDqUZ&+2nSpEc#dQ7~g1UEVc?ured!ba1+J-SFgut8l;$9Rgz4K(~3;aI~~*FtsV%FtxN*n0n`C@&3c}6f4xR7(^Z0i6A_s zBM#no#1|9?{@nC5S%}x?{HYbI*A68|QVtLLt;eVZ& z8+-n1Z`+Gmn$~kQ3A#%YJnmHA7HSvQ27R`aozj+)DbN%$W1+pH1w>t3eGpZ?yRHI; zF0M*P7?$p&fM_Xs)t<;2V}4y>jiUGN$Z;9QG?ZR~P4_tH63I8v6J1{{Gnq$~yCghrecSiBxW-|NHeMO9x|Xw>;~vOL`Mc%FYh_jzm&W&CH7dgPLK2YElQu6b_cWcc<=m+^r;sd;nQy*~9A*o*cV zkG9F^l33Bdu($5hc&T-kP@WTDSHuo?Li``RywyScaX#$(lrO*ZwAq&VTL)ua60vfA z!F5-ke(o{ZtFzXIT_$XqyZFmvKTuwd@2GIhjIGahzQLC!doy__?8%+? zaMg<26{X>N%UuyWX%w24A{ipo$a-pObtu zZHvlYdk2dIb-)%uzo@88}zzfJSFqUus z3u|S%s&QQ%qTxCW75w@RPBXb6NU^kDYMgX+l{<*j?Vj~#_4M*Er4*m0!4%qJ zb!5EsjHzIqB&#VR1CSnX<%1PvO;M*rJF*_zqvT*)$ziw}7FSUN*Dhq(WfVIa&abLo zzAM@hVBSP32GgUOPVuTLl+~nQDe>!B(cxU@8Nur*aqC|p#w7{gRkKzrY{g{D?e#cV zwF?G<*E2=Q0R@91X)Xj?&aRJ5xTq)yYnWU$%=FfLeh#U~F9qY$x9i)e%#c(K*duw2Ws=HIN8p28U>Fc(1W-Ty&lsILv3Ih z5_U5*43f;1lq_wO9M*+xl$Nrq##q{+Rjk^tsRyp2HEsP0mJ}0*xr!D}YS>dYEEZG4 zUDfz$vs$re>q?E{L*cFqZ4X>=5LU}x)h4&{Sd=#8r!=au(-~_CI}&cY36^5&n(MI0 zolR2)luAvN1lM;LYKMvp+l6}aKTt09^()GZilro^X?qpNHdRT%qZ@$M<5%_9_Px$~ zf@XN0CcK|DH|m&RLgfTY=2 z!y8=*4?)eZdp*#n`2K`n6FS0C#z}6C&f35*renS?xi!>i{J9->vMWjMCyeQ!*X2l$ zLs*kKn5M}AulDO0O_&wScgZl2hT(+yb>VwbNX^UWQtTb61z2wnd0h=WB=zvoR-5Zk ziePZ*_g_L%+RtiT5c;%+oRxq3ve!x7=xEkwGlUL`p%vR(nu1u{=oE0i{?f4+$12Cs z9SZc)8v~{65)`|Nc!ln!SbG9k!{QRrWN>r=>td`)D^|5`@Xd!YD7#_ZI^?<`lg+e} zp%_TJctg4{@{PdM?F%1e#C9De#SAXlzfI<|w>VA3#V_%7`K-OtgM5EuZxU*e)cU?q z;KjF+K_?BfX16}?!`5gZY?0Q`VVm)a%+2X|w?9AWLXjEgfoh(JX&g@O!=*G=6k~I% zAwQcRf2Dy|h&(Jc`!@~DY&*b@JrHKLK(-%TNHxFF=2gPjv@K5=J~fkr*2}{WJDg%6 zOE;tmWW;5B?lF=?V5N7QS=}x14HE1iQ62;aUFEZ>qz2Vw{lpT+4kyboD@aNZi7jTA z6*qu2yh?G!wj{o9zZfz`!v%je_f znT^%)_pPiPI5Fxjc*XxO=2;BqlD5a-``_t1_pZ6S2NHxduQ-r<9=BU`ymHrN%Dj;AKmEkTGaI7{N|?$=o+@c5_?tcXf$w7^D2>s z8@#Y-KvO_45@yV%>IGLz_IXfypA9TN+HldzF{YLYJT0Q>7tI>iZK_J`#I!aCW4|^! zur(}e^0npqLd{!^+k9N`z&L2qJeub|o$Mrql9oR(eeCYfn7b^4UdCx_OC&YWReQ_; z-pUjL+cXIgISaYi{Jb2t3T9G1N>>JHbQE>X`y2kRzw7oa&0@s0BOZyzGxJe1#?am|``)tNA zMiTWbueGkhTqu?sM0ld{P*1zl3H`25!l_&&$uDK6=mP0V9}F*#B$EM-9J(Gws+;wl zD(Mj9`B+!l9RISzlay_Ka{Tm+m7tIF^Z+}g`u+TZ*65xs?MTYcxLRHanx!$N<2&Sq zszOCWggIv-3_MwVKWOHHr_|2jDM{do_uCmyZMBA{CS8N4_C~`~lhi)f%wA0#5b4+T z`~}69U7I^_)y^r&%D&wEp>QxVXwLx@6b!z$73=^0@BjSw|LVCi_<-CgnT~u==JY)+ zx$6$3Aiw{Id&eE@X`v=QD)y`n5w((6?5(*GZ<^!;<0M7rdDFPR z`s^QnH_7>L|Mp)$4H_~({AR?Y*We%`Rvy(dfU9AV5DBmSaNxneq@K+K5Om`VSBtxC cT>*ECxG6Dc9M6!GY7rzU;1K+u|4;w>f7mAl3IG5A literal 0 HcmV?d00001 diff --git a/package.json b/package.json index ba6b03e..4baa70c 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,6 @@ "node": ">=20.10.0" }, "scripts": { - "start": "tsx build/esbuild-server.ts", - "build": "tsx build/esbuild-build.ts", "format": "run-s format:lint format:prettier format:cspell", "format:lint": "eslint --fix .", "format:prettier": "prettier --write .", @@ -18,7 +16,6 @@ "knip": "knip", "knip-ci": "knip --no-exit-code --reporter json", "prepare": "husky install", - "worker": "wrangler dev --port 8789", "test": "jest" }, "keywords": [ @@ -40,7 +37,7 @@ "blake2b": "^2.1.4", "decimal.js": "^10.4.3", "dotenv": "^16.4.4", - "ethers": "^5.7.2", + "ethers": "^6.11.1", "libsodium-wrappers": "^0.7.13", "tweetnacl": "^1.0.3", "tweetnacl-util": "^0.15.1" diff --git a/src/adapters/supabase/helpers/wallet.ts b/src/adapters/supabase/helpers/wallet.ts index e70fb86..a915e9a 100644 --- a/src/adapters/supabase/helpers/wallet.ts +++ b/src/adapters/supabase/helpers/wallet.ts @@ -15,8 +15,8 @@ export class Wallet extends Super { throw error; } - console.info("Successfully fetched wallet", { userId, address: data?.address }); - return data?.address as `0x${string}` | undefined; + console.info("Successfully fetched wallet", { userId, address: data.address }); + return data.address; } async getWalletByUsername(username: string) { diff --git a/src/handlers/generate-erc20-permit.ts b/src/handlers/generate-erc20-permit.ts index e975d65..c75f987 100644 --- a/src/handlers/generate-erc20-permit.ts +++ b/src/handlers/generate-erc20-permit.ts @@ -1,55 +1,33 @@ import { MaxUint256, PERMIT2_ADDRESS, PermitTransferFrom, SignatureTransfer } from "@uniswap/permit2-sdk"; -import { BigNumber, ethers } from "ethers"; -import { keccak256, toUtf8Bytes } from "ethers/lib/utils"; +import { ethers, keccak256, parseUnits, toUtf8Bytes } from "ethers"; import { getPayoutConfigByNetworkId } from "../utils/payoutConfigByNetworkId"; import { decryptKeys } from "../utils/keys"; -import { PermitTransactionData } from "../types/permits"; +import { Permit } from "../types/permits"; import { Context } from "../types/context"; -export async function generateErc20PermitSignature(context: Context, wallet: `0x${string}`, amount: number): Promise { +export async function generateErc20PermitSignature(context: Context, username: string, amount: number): Promise { const config = context.config; const logger = context.logger; const { evmNetworkId, evmPrivateEncrypted } = config; + const { user, wallet } = context.adapters.supabase; - if (!evmPrivateEncrypted || !evmNetworkId) { - logger.fatal("EVM configuration is not defined"); - throw new Error("EVM configuration is not defined"); - } - - const { user } = context.adapters.supabase; - - const beneficiary = wallet; - const userId = user.getUserIdByWallet(beneficiary); + const userId = await user.getUserIdByUsername(username); + const walletAddress = await wallet.getWalletByUserId(userId); let issueId: number | null = null; - if ("issue" in context.payload) { - issueId = context.payload.issue.number; + issueId = context.payload.issue.id; } else if ("pull_request" in context.payload) { - issueId = context.payload.pull_request.number; + issueId = context.payload.pull_request.id; } - if (!beneficiary) { - logger.error("No beneficiary found for permit"); - return "Permit not generated: No beneficiary found for permit"; - } - - if (!userId) { - logger.error("No wallet found for user"); - return "Permit not generated: no wallet found for user"; - } - - if (!evmPrivateEncrypted) throw logger.warn("No bot wallet private key defined"); - const { rpc, paymentToken } = getPayoutConfigByNetworkId(evmNetworkId); + const { rpc, token, decimals } = getPayoutConfigByNetworkId(evmNetworkId); const { privateKey } = await decryptKeys(evmPrivateEncrypted); - - if (!rpc) throw logger.error("RPC is not defined"); if (!privateKey) throw logger.error("Private key is not defined"); - if (!paymentToken) throw logger.error("Payment token is not defined"); let provider; let adminWallet; try { - provider = new ethers.providers.JsonRpcProvider(rpc); + provider = new ethers.JsonRpcProvider(rpc); } catch (error) { throw logger.debug("Failed to instantiate provider", error); } @@ -62,40 +40,45 @@ export async function generateErc20PermitSignature(context: Context, wallet: `0x const permitTransferFromData: PermitTransferFrom = { permitted: { - token: paymentToken, - amount: ethers.utils.parseUnits(amount.toString(), 18), + token: token, + amount: parseUnits(amount.toString(), decimals), }, - spender: beneficiary, - nonce: BigNumber.from(keccak256(toUtf8Bytes(`${userId}-${issueId}`))), + spender: walletAddress, + nonce: BigInt(keccak256(toUtf8Bytes(`${userId}-${issueId}`))), deadline: MaxUint256, }; const { domain, types, values } = SignatureTransfer.getPermitData(permitTransferFromData, PERMIT2_ADDRESS, evmNetworkId); - const signature = await adminWallet._signTypedData(domain, types, values).catch((error) => { - throw logger.debug("Failed to sign typed data", error); - }); - - const transactionData = { - type: "erc20-permit", - permit: { - permitted: { - token: permitTransferFromData.permitted.token, - amount: permitTransferFromData.permitted.amount.toString(), + const signature = await adminWallet + .signTypedData( + { + name: domain.name, + version: domain.version, + chainId: domain.chainId ? domain.chainId.toString() : undefined, + verifyingContract: domain.verifyingContract, + salt: domain.salt?.toString(), }, - nonce: permitTransferFromData.nonce.toString(), - deadline: permitTransferFromData.deadline.toString(), - }, - transferDetails: { - to: permitTransferFromData.spender, - requestedAmount: permitTransferFromData.permitted.amount.toString(), - }, + types, + values + ) + .catch((error) => { + throw logger.debug("Failed to sign typed data", error); + }); + + const erc20Permit: Permit = { + tokenType: "erc20", + tokenAddress: permitTransferFromData.permitted.token, + beneficiary: permitTransferFromData.spender, + nonce: permitTransferFromData.nonce.toString(), + deadline: permitTransferFromData.deadline.toString(), + amount: permitTransferFromData.permitted.amount.toString(), owner: adminWallet.address, signature: signature, networkId: evmNetworkId, - } as PermitTransactionData; + }; - logger.info("Generated ERC20 permit2 signature", transactionData); + logger.info("Generated ERC20 permit2 signature", erc20Permit); - return transactionData; + return erc20Permit; } diff --git a/src/handlers/generate-erc721-permit.ts b/src/handlers/generate-erc721-permit.ts index 7369784..7378ad8 100644 --- a/src/handlers/generate-erc721-permit.ts +++ b/src/handlers/generate-erc721-permit.ts @@ -1,9 +1,18 @@ import { getPayoutConfigByNetworkId } from "../utils/payoutConfigByNetworkId"; -import { BigNumber, ethers, utils } from "ethers"; +import { ethers } from "ethers"; import { MaxUint256 } from "@uniswap/permit2-sdk"; -import { keccak256, toUtf8Bytes } from "ethers/lib/utils"; -import { Erc721PermitSignatureData, PermitTransactionData } from "../types/permits"; +import { keccak256, toUtf8Bytes } from "ethers"; +import { Permit } from "../types/permits"; import { Context } from "../types/context"; +import { isIssueEvent } from "../types/typeguards"; + +interface Erc721PermitSignatureData { + beneficiary: string; + deadline: bigint; + keys: string[]; + nonce: bigint; + values: string[]; +} const SIGNING_DOMAIN_NAME = "NftReward-Domain"; const SIGNING_DOMAIN_VERSION = "1"; @@ -18,17 +27,8 @@ const types = { ], }; -const keys = ["GITHUB_ORGANIZATION_NAME", "GITHUB_REPOSITORY_NAME", "GITHUB_ISSUE_ID", "GITHUB_USERNAME", "GITHUB_CONTRIBUTION_TYPE"]; - -export async function generateErc721PermitSignature( - context: Context, - issueId: number, - contributionType: string, - username: string -): Promise { - const NFT_MINTER_PRIVATE_KEY = process.env.NFT_MINTER_PRIVATE_KEY; - const NFT_CONTRACT_ADDRESS = process.env.NFT_CONTRACT_ADDRESS; - +export async function generateErc721PermitSignature(context: Context, username: string, contributionType: string): Promise { + const { NFT_MINTER_PRIVATE_KEY, NFT_CONTRACT_ADDRESS } = context.env; const { evmNetworkId } = context.config; const adapters = context.adapters; const logger = context.logger; @@ -39,14 +39,6 @@ export async function generateErc721PermitSignature( logger.error("RPC is not defined"); throw new Error("RPC is not defined"); } - if (!NFT_MINTER_PRIVATE_KEY) { - logger.error("NFT minter private key is not defined"); - throw new Error("NFT minter private key is not defined"); - } - if (!NFT_CONTRACT_ADDRESS) { - logger.error("NFT contract address is not defined"); - throw new Error("NFT contract address is not defined"); - } const beneficiary = await adapters.supabase.wallet.getWalletByUsername(username); if (!beneficiary) { @@ -58,12 +50,15 @@ export async function generateErc721PermitSignature( const organizationName = context.payload.repository.owner.login; const repositoryName = context.payload.repository.name; - const issueNumber = issueId.toString(); + let issueId = ""; + if (isIssueEvent(context)) { + issueId = context.payload.issue.id.toString(); + } let provider; let adminWallet; try { - provider = new ethers.providers.JsonRpcProvider(rpc); + provider = new ethers.JsonRpcProvider(rpc); } catch (error) { logger.error("Failed to instantiate provider", error); throw new Error("Failed to instantiate provider"); @@ -76,64 +71,53 @@ export async function generateErc721PermitSignature( throw new Error("Failed to instantiate wallet"); } + const erc721Metadata = { + GITHUB_ORGANIZATION_NAME: organizationName, + GITHUB_REPOSITORY_NAME: repositoryName, + GITHUB_ISSUE_ID: issueId, + GITHUB_USERNAME: username, + GITHUB_CONTRIBUTION_TYPE: contributionType, + }; + + const metadata = Object.entries(erc721Metadata); const erc721SignatureData: Erc721PermitSignatureData = { beneficiary: beneficiary, - deadline: MaxUint256, - keys: keys.map((key) => utils.keccak256(utils.toUtf8Bytes(key))), - nonce: BigNumber.from(keccak256(toUtf8Bytes(`${userId}-${issueId}`))), - values: [organizationName, repositoryName, issueNumber, username, contributionType], + deadline: MaxUint256.toBigInt(), + keys: metadata.map(([key]) => keccak256(toUtf8Bytes(key))), + nonce: BigInt(keccak256(toUtf8Bytes(`${userId}-${issueId}`))), + values: metadata.map(([, value]) => value), }; - const signature = await adminWallet - ._signTypedData( - { - name: SIGNING_DOMAIN_NAME, - version: SIGNING_DOMAIN_VERSION, - verifyingContract: NFT_CONTRACT_ADDRESS, - chainId: evmNetworkId, - }, - types, - erc721SignatureData - ) - .catch((error: unknown) => { - logger.error("Failed to sign typed data", error); - throw new Error("Failed to sign typed data"); - }); - - const nftMetadata = {} as Record; - - keys.forEach((element, index) => { - nftMetadata[element] = erc721SignatureData.values[index]; + const domain = { + name: SIGNING_DOMAIN_NAME, + version: SIGNING_DOMAIN_VERSION, + verifyingContract: NFT_CONTRACT_ADDRESS, + chainId: evmNetworkId, + }; + + const signature = await adminWallet.signTypedData(domain, types, erc721SignatureData).catch((error: unknown) => { + logger.error("Failed to sign typed data", error); + throw new Error("Failed to sign typed data"); }); - const erc721Data: PermitTransactionData = { - type: "erc721-permit", - permit: { - permitted: { - token: NFT_CONTRACT_ADDRESS, - amount: "1", - }, - nonce: erc721SignatureData.nonce.toString(), - deadline: erc721SignatureData.deadline.toString(), - }, - transferDetails: { - to: beneficiary, - requestedAmount: "1", - }, - owner: adminWallet.address, + const erc721Permit: Permit = { + tokenType: "erc721", + tokenAddress: NFT_CONTRACT_ADDRESS, + beneficiary: beneficiary, + amount: "1", + nonce: erc721SignatureData.nonce.toString(), + deadline: erc721SignatureData.deadline.toString(), signature: signature, + owner: adminWallet.address, networkId: evmNetworkId, - nftMetadata: nftMetadata as PermitTransactionData["nftMetadata"], - request: { - beneficiary: erc721SignatureData.beneficiary, - deadline: erc721SignatureData.deadline.toString(), + erc721Request: { keys: erc721SignatureData.keys.map((key) => key.toString()), - nonce: erc721SignatureData.nonce.toString(), values: erc721SignatureData.values, + metadata: erc721Metadata, }, }; - console.info("Generated ERC721 permit signature", { erc721Data }); + console.info("Generated ERC721 permit signature", { erc721Permit }); - return erc721Data; + return erc721Permit; } diff --git a/src/handlers/generate-payout-permit.ts b/src/handlers/generate-payout-permit.ts index ad52d85..b763be3 100644 --- a/src/handlers/generate-payout-permit.ts +++ b/src/handlers/generate-payout-permit.ts @@ -1,123 +1,35 @@ -import { PermitTransactionData } from "../types/permits"; +import { Permit } from "../types/permits"; import { Context } from "../types/context"; import { generateErc20PermitSignature } from "./generate-erc20-permit"; import { generateErc721PermitSignature } from "./generate-erc721-permit"; -import { getLabelsFromLinkedIssue, getPriceFromLabels, getWalletRecord, handleNoWalletFound, unpackInputs } from "../utils/helpers"; +import { PermitRequest } from "../types/plugin-input"; /** * Generates a payout permit based on the provided context. * @param context - The context object containing the configuration and payload. * @returns A Promise that resolves to the generated permit transaction data or an error message. */ -export async function generatePayoutPermit(context: Context): Promise { - const { isNftRewardEnabled } = context.config; - const logger = context.logger; - const eventName = context.eventName; - - if (eventName == "pull_request.closed") { - const payload = context.payload as Context<"pull_request.closed">["payload"]; - return await generatePayoutForPullRequest(context, payload, isNftRewardEnabled); - } else if (eventName == "workflow_dispatch") { - return await generatePayoutForWorkflowDispatch(context, isNftRewardEnabled); - } else { - logger.error("Invalid payload"); - return "Permit not generated: invalid payload"; - } -} - -/** - * Generates a payout permit from a workflow dispatch. - * @notice All inputs must be passed in from the previous plugin/kernel. - */ -export async function generatePayoutForWorkflowDispatch(context: Context, isNftRewardEnabled: boolean): Promise { - const inputs = unpackInputs(context); - const logger = context.logger; - - let permit: PermitTransactionData | string; - - if (inputs.erc20) { - if (!inputs.erc20.token || !inputs.erc20.amount || !inputs.erc20.spender || !inputs.erc20.networkId) { - logger.error("No token, amount, spender, or networkId found for ERC20 permit"); - return "Permit not generated: no token, amount, spender, or networkId found for ERC20 permit"; +export async function generatePayoutPermit(context: Context, permitRequests: PermitRequest[]): Promise { + const permits: Permit[] = []; + + for (const permitRequest of permitRequests) { + const { type, amount, username, contributionType } = permitRequest; + + let permit: Permit; + switch (type) { + case "erc20": + permit = await generateErc20PermitSignature(context, username, amount); + break; + case "erc721": + permit = await generateErc721PermitSignature(context, username, contributionType); + break; + default: + context.logger.error(`Invalid permit type: ${type}`); + continue; } - permit = await generateErc20PermitSignature(context, inputs.erc20.spender, inputs.erc20.amount); - } else if (inputs.erc721 && isNftRewardEnabled) { - if (!inputs.erc721.username || !inputs.erc721.issueID || !inputs.erc721.contribution_type) { - logger.error("No username or issueID found for ERC721 permit"); - return "Permit not generated: no username or issueID found for ERC721 permit"; - } - - permit = await generateErc721PermitSignature(context, inputs.erc721.issueID, inputs.erc721.contribution_type, inputs.erc721.username); - } else { - logger.error("No config found for permit generation"); - return "Permit not generated: no config found for permit generation"; + permits.push(permit); } - if (typeof permit === "string") { - logger.error(permit); - return CHECK_LOGS_MESSAGE; - } else { - return permit; - } + return permits; } - -export async function generatePayoutForPullRequest( - context: Context, - payload: Context<"pull_request.closed">["payload"], - isNftRewardEnabled: boolean -): Promise { - const issue = payload.pull_request; - if (!issue.merged) { - return "Permit not generated: PR not merged\n\n ###### If this was an error tag your reviewer to process a manual permit via /permit )"; - } - - const spenderId = issue.user.id; - const walletRecord = await getWalletRecord(context, spenderId, issue.user.login); - - if (!walletRecord) { - await handleNoWalletFound(context, issue.number, issue.user.login); - return "Permit not generated: no wallet found"; - } else { - await generatePermit(context, walletRecord, isNftRewardEnabled, payload); - } - return CHECK_LOGS_MESSAGE; -} - -export async function generatePermit( - context: Context, - walletRecord: `0x${string}`, - isNftRewardEnabled: boolean, - payload: Context<"pull_request.closed">["payload"] -): Promise { - const logger = context.logger; - logger.info("Wallet found for user", { walletRecord }); - let permit: PermitTransactionData | string = ""; - - const labels = await getLabelsFromLinkedIssue(context, payload.pull_request.number); - const payoutAmount = getPriceFromLabels(labels); - - if (!payoutAmount) { - logger.error("No payout amount found on issue"); - return "Permit not generated: no payout amount found on issue"; - } - - if (isNftRewardEnabled) { - if (payoutAmount.toNumber() > 1) { - permit = await generateErc20PermitSignature(context, walletRecord, payoutAmount.toNumber()); - } else { - // permit = await generateErc721PermitSignature(context, walletRecord, "pull_request", payload.pull_request.number); - } - } else { - permit = await generateErc20PermitSignature(context, walletRecord, payoutAmount.toNumber()); - } - - if (typeof permit === "string") { - logger.error(permit); - return CHECK_LOGS_MESSAGE; - } - - return permit; -} - -const CHECK_LOGS_MESSAGE = "Permit not generated: check logs for more information"; diff --git a/src/index.ts b/src/index.ts index 14eda96..e442165 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,43 +1,39 @@ import * as core from "@actions/core"; import * as github from "@actions/github"; import { Octokit } from "@octokit/rest"; -import { PluginInputs } from "./types/plugin-input"; +import { PluginInputs, permitGenerationSettingsSchema } from "./types/plugin-input"; import { Context } from "./types/context"; -import { generateErc20PermitSignature } from "./handlers/generate-erc20-permit"; import { createClient } from "@supabase/supabase-js"; import { createAdapters } from "./adapters"; import { Database } from "./adapters/supabase/types/database"; import { registerWallet } from "./handlers/register-wallet"; import { generatePayoutPermit } from "./handlers/generate-payout-permit"; -import { generateErc721PermitSignature } from "./handlers/generate-erc721-permit"; -import { PermitTransactionData } from "./types/permits"; - -const SUPABASE_URL = process.env.SUPABASE_URL; -const SUPABASE_KEY = process.env.SUPABASE_KEY; +import { Value } from "@sinclair/typebox/value"; +import { envSchema } from "./types/env"; async function run() { const webhookPayload = github.context.payload.inputs; + + const env = Value.Decode(envSchema, process.env); + const settings = Value.Decode(permitGenerationSettingsSchema, JSON.parse(webhookPayload.settings)); + const inputs: PluginInputs = { stateId: webhookPayload.stateId, eventName: webhookPayload.eventName, eventPayload: JSON.parse(webhookPayload.eventPayload), - settings: JSON.parse(webhookPayload.settings), + settings: settings, authToken: webhookPayload.authToken, ref: webhookPayload.ref, }; const octokit = new Octokit({ auth: inputs.authToken }); - - if (!SUPABASE_URL || !SUPABASE_KEY) { - throw new Error("SUPABASE_URL and SUPABASE_KEY must be provided"); - } - - const supabaseClient = createClient(SUPABASE_URL, SUPABASE_KEY); + const supabaseClient = createClient(env.SUPABASE_URL, env.SUPABASE_KEY); const context: Context = { eventName: inputs.eventName, payload: inputs.eventPayload, config: inputs.settings, octokit, + env, logger: { debug(message: unknown, ...optionalParams: unknown[]) { console.debug(message, ...optionalParams); @@ -60,18 +56,12 @@ async function run() { context.adapters = createAdapters(supabaseClient, context); - if (context.eventName === "workflow_dispatch" || context.eventName === "pull_request.closed") { - const permit = await generatePayoutPermit(context); - - if (permit) { - return JSON.stringify(permit); - } else { - return "No permit generated"; - } - } else if (context.eventName === "issue_comment.created") { + if (context.eventName === "issue_comment.created") { await handleSlashCommands(context, octokit); } else { - context.logger.error(`Unsupported event: ${context.eventName}`); + const permits = await generatePayoutPermit(context, settings.permitRequests); + // TODO: return permits to kernel + return JSON.stringify(permits); } return "No permit generated"; @@ -95,44 +85,7 @@ async function handleSlashCommands(context: Context, octokit: Octokit) { body: `Failed to register wallet: ${address}`, }); } - } else { - await handlePermitSlashCommand(context, payload); - } -} - -async function handlePermitSlashCommand(context: Context, payload: Context<"issue_comment.created">["payload"]) { - const body = payload.comment.body; - - // `/permit ` || `/permit ` - const permitSlashCommand = /^\/permit\\s+((0x[a-fA-F0-9]{40})|([a-zA-Z0-9]{4,})|([a-zA-Z0-9]{3,}\\.eth))\\s+([a-zA-Z0-9]+|\\d+)$/g; - - const permitMatches = [...body.matchAll(permitSlashCommand)]; - let permit: PermitTransactionData | string | null = null; - - if (permitMatches.length > 0) { - const walletOrNftAddress = permitMatches[0][1] as `0x${string}`; - const tokenAmountOrUsername = permitMatches[0][5]; - - if (tokenAmountOrUsername === undefined || tokenAmountOrUsername === "") { - context.logger.error("tokenOrAmount is undefined or empty"); - } else { - const parsedNumber = parseFloat(tokenAmountOrUsername); - if (!isNaN(parsedNumber) && parsedNumber.toString() === tokenAmountOrUsername) { - permit = await generateErc20PermitSignature(context, walletOrNftAddress, parsedNumber); - } else { - const contributionType = "pull_request"; // TODO: must be a better way to determine this, probably with inputs - permit = await generateErc721PermitSignature(context, payload.issue.number, contributionType, tokenAmountOrUsername); - } - } - } else { - context.logger.error("No matches found for permit command"); } - - if (typeof permit === "string" || permit === null) { - throw new Error(permit || "Permit not generated"); - } - - return permit; } run() diff --git a/src/types/botConfig.ts b/src/types/botConfig.ts deleted file mode 100644 index 6c03dfe..0000000 --- a/src/types/botConfig.ts +++ /dev/null @@ -1,56 +0,0 @@ -export type BotConfig = { - keys: { - evmPrivateEncrypted?: string; - openAi?: string; - }; - features: { - assistivePricing: boolean; - defaultLabels: string[]; - newContributorGreeting: { - enabled: boolean; - header: string; - displayHelpMenu: boolean; - footer: string; - }; - publicAccessControl: { - setLabel: boolean; - fundExternalClosedIssue: boolean; - }; - isNftRewardEnabled: boolean; - }; - timers: { - reviewDelayTolerance: number; - taskStaleTimeoutDuration: number; - taskFollowUpDuration: number; - taskDisqualifyDuration: number; - }; - payments: { - maxPermitPrice: number; - evmNetworkId: number; - basePriceMultiplier: number; - issueCreatorMultiplier: number; - }; - disabledCommands: string[]; - incentives: { - comment: { - elements: Record; - totals: { - character: number; - word: number; - sentence: number; - paragraph: number; - comment: number; - }; - }; - }; - labels: { - time: string[]; - priority: string[]; - }; - miscellaneous: { - maxConcurrentTasks: number; - promotionComment: string; - registerWalletWithVerification: boolean; - openAiTokenLimit: number; - }; -}; diff --git a/src/types/context.ts b/src/types/context.ts index 5555412..4e9a5dc 100644 --- a/src/types/context.ts +++ b/src/types/context.ts @@ -2,6 +2,7 @@ import { EmitterWebhookEvent as WebhookEvent, EmitterWebhookEventName as Webhook import { Octokit } from "@octokit/rest"; import { PermitGenerationSettings } from "./plugin-input"; import { createAdapters } from "../adapters"; +import { Env } from "./env"; export type SupportedEvents = "issue_comment.created" | "workflow_dispatch" | "pull_request.closed"; @@ -11,6 +12,7 @@ export interface Context { octokit: InstanceType; adapters: ReturnType; config: PermitGenerationSettings; + env: Env; logger: { fatal: (message: unknown, ...optionalParams: unknown[]) => void; error: (message: unknown, ...optionalParams: unknown[]) => void; diff --git a/src/types/env.ts b/src/types/env.ts new file mode 100644 index 0000000..8c01ac2 --- /dev/null +++ b/src/types/env.ts @@ -0,0 +1,12 @@ +import { Type as T } from "@sinclair/typebox"; +import { StaticDecode } from "@sinclair/typebox"; +import "dotenv/config"; + +export const envSchema = T.Object({ + SUPABASE_URL: T.String(), + SUPABASE_KEY: T.String(), + NFT_MINTER_PRIVATE_KEY: T.String(), + NFT_CONTRACT_ADDRESS: T.String(), +}); + +export type Env = StaticDecode; diff --git a/src/types/permits.ts b/src/types/permits.ts index 5fbb54d..cbc6d1c 100644 --- a/src/types/permits.ts +++ b/src/types/permits.ts @@ -1,65 +1,24 @@ -import { BigNumber } from "ethers"; +type TokenType = "erc20" | "erc721"; -export interface Erc721PermitSignatureData { +export interface Permit { + tokenType: TokenType; + tokenAddress: string; beneficiary: string; - deadline: BigNumber; - keys: string[]; - nonce: BigNumber; - values: string[]; -} - -export interface PermitTransactionData extends Erc20PermitTransactionData, Erc721PermitTransactionData {} - -type PermitType = "erc20-permit" | "erc721-permit"; - -interface Erc20PermitTransactionData { - type: PermitType; - permit: { - permitted: { - token: string; - amount: string; - }; - nonce: string; - deadline: string; - }; - transferDetails: { - to: string; - requestedAmount: string; - }; + amount: string; + nonce: string; + deadline: string; owner: string; signature: string; networkId: number; -} - -interface Erc721PermitTransactionData { - type: PermitType; - permit: { - permitted: { - token: string; - amount: string; - }; - nonce: string; - deadline: string; - }; - transferDetails: { - to: string; - requestedAmount: string; - }; - owner: string; - signature: string; - networkId: number; - nftMetadata: { - GITHUB_ORGANIZATION_NAME: string; - GITHUB_REPOSITORY_NAME: string; - GITHUB_ISSUE_ID: string; - GITHUB_USERNAME: string; - GITHUB_CONTRIBUTION_TYPE: string; - }; - request: { - beneficiary: string; - deadline: string; + erc721Request?: { keys: string[]; - nonce: string; values: string[]; + metadata: { + GITHUB_ORGANIZATION_NAME: string; + GITHUB_REPOSITORY_NAME: string; + GITHUB_ISSUE_ID: string; + GITHUB_USERNAME: string; + GITHUB_CONTRIBUTION_TYPE: string; + }; }; } diff --git a/src/types/plugin-input.ts b/src/types/plugin-input.ts index 300165b..60c5b52 100644 --- a/src/types/plugin-input.ts +++ b/src/types/plugin-input.ts @@ -1,5 +1,6 @@ import { EmitterWebhookEvent as WebhookEvent, EmitterWebhookEventName as WebhookEventName } from "@octokit/webhooks"; import { SupportedEvents } from "./context"; +import { StaticDecode, Type as T } from "@sinclair/typebox"; export interface PluginInputs { stateId: string; @@ -10,19 +11,19 @@ export interface PluginInputs { ref: string; } -export interface PermitGenerationSettings { - evmNetworkId: number; - evmPrivateEncrypted: string; - isNftRewardEnabled: boolean; +export const permitRequestSchema = T.Object({ + type: T.Union([T.Literal("erc20"), T.Literal("erc721")]), + username: T.String(), + amount: T.Number(), + contributionType: T.String(), +}); - // possible inputs from workflow_dispatch - token?: `0x${string}`; - amount?: number; - spender?: `0x${string}`; - userId?: number; +export type PermitRequest = StaticDecode; - // nft specific inputs - contribution_type?: string; - username?: string; - issueID?: number; -} +export const permitGenerationSettingsSchema = T.Object({ + evmNetworkId: T.Number(), + evmPrivateEncrypted: T.String(), + permitRequests: T.Array(permitRequestSchema), +}); + +export type PermitGenerationSettings = StaticDecode; diff --git a/src/types/typeguards.ts b/src/types/typeguards.ts index 0a71135..4279166 100644 --- a/src/types/typeguards.ts +++ b/src/types/typeguards.ts @@ -1,6 +1,6 @@ import { RestEndpointMethodTypes } from "@octokit/rest"; import { Context } from "./context"; -export function isIssueEvent(context: Context): context is Context & { issue: RestEndpointMethodTypes["issues"]["list"]["response"]["data"][0] } { +export function isIssueEvent(context: Context): context is Context & { payload: { issue: RestEndpointMethodTypes["issues"]["list"]["response"]["data"][0] } } { return context.eventName.startsWith("issues."); } diff --git a/src/utils/helpers.ts b/src/utils/helpers.ts index 582d3ff..4d3788f 100644 --- a/src/utils/helpers.ts +++ b/src/utils/helpers.ts @@ -45,32 +45,6 @@ export function getPriceFromLabels(labels: string[] | null): Decimal | null { return new Decimal(payoutLabel.replace("Price:", "").trim()); } -export function unpackInputs(context: Context): { - erc721: { userId?: number; username?: string; issueID: number; contribution_type: string } | null; - erc20: { token: `0x${string}`; amount: number; spender: `0x${string}`; networkId: number } | null; -} { - const { userId, token, amount, spender, evmNetworkId: networkId, contribution_type, username, issueID } = context.config; - - let erc721 = null; - let erc20 = null; - - if (contribution_type && username && issueID) { - erc721 = { - username, - userId, - issueID, - contribution_type, - }; - } else if (token && amount && spender && networkId) { - erc20 = { token, amount, spender, networkId }; - } - - return { - erc721, - erc20, - }; -} - export async function getLabelsFromLinkedIssue(context: Context, pullRequestNumber: number): Promise { const { octokit, logger } = context; const { owner, name } = context.payload.repository; diff --git a/src/utils/payoutConfigByNetworkId.ts b/src/utils/payoutConfigByNetworkId.ts index 74081b3..5aa96a2 100644 --- a/src/utils/payoutConfigByNetworkId.ts +++ b/src/utils/payoutConfigByNetworkId.ts @@ -1,16 +1,19 @@ // available tokens for payouts -export const PAYMENT_TOKEN_PER_NETWORK: Record = { +export const PAYMENT_TOKEN_PER_NETWORK: Record = { "1": { rpc: "https://rpc.mevblocker.io", token: "0x6B175474E89094C44Da98b954EedeAC495271d0F", // DAI + decimals: 18, }, "100": { rpc: "https://rpc.gnosis.gateway.fm", token: "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", // WXDAI + decimals: 18, }, "31337": { rpc: "http://localhost:8545", token: "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", // WXDAI + decimals: 18, }, }; @@ -20,8 +23,5 @@ export function getPayoutConfigByNetworkId(evmNetworkId: number) { throw new Error(`No config setup for evmNetworkId: ${evmNetworkId}`); } - return { - rpc: paymentToken.rpc, - paymentToken: paymentToken.token, - }; + return paymentToken; }