From e24c6f2010bc7079f6984ebd940ad116a7927d70 Mon Sep 17 00:00:00 2001 From: Aniketh Panchidi <53865329+comandar21@users.noreply.github.com> Date: Wed, 23 Nov 2022 21:39:28 +0530 Subject: [PATCH] feat(mahadao): Add MahaDAO app (#1748) * feat(mahadao): Add MahaDAO app --- src/apps/arth/arth.module.ts | 2 +- src/apps/mahadao/assets/logo.png | Bin 0 -> 173225 bytes .../contracts/abis/mahado-mahax-locker.json | 1509 +++++++++++++ .../contracts/ethers/MahadoMahaxLocker.ts | 1959 +++++++++++++++++ src/apps/mahadao/contracts/ethers/common.ts | 32 + .../factories/MahadoMahaxLocker__factory.ts | 1527 +++++++++++++ .../contracts/ethers/factories/index.ts | 4 + src/apps/mahadao/contracts/ethers/index.ts | 6 + src/apps/mahadao/contracts/index.ts | 23 + .../ethereum/mahadao.balance-fetcher.ts | 52 + ...ahadao.locker.contract-position-fetcher.ts | 35 + src/apps/mahadao/index.ts | 3 + src/apps/mahadao/mahadao.definition.ts | 43 + src/apps/mahadao/mahadao.module.ts | 22 + 14 files changed, 5216 insertions(+), 1 deletion(-) create mode 100644 src/apps/mahadao/assets/logo.png create mode 100644 src/apps/mahadao/contracts/abis/mahado-mahax-locker.json create mode 100644 src/apps/mahadao/contracts/ethers/MahadoMahaxLocker.ts create mode 100644 src/apps/mahadao/contracts/ethers/common.ts create mode 100644 src/apps/mahadao/contracts/ethers/factories/MahadoMahaxLocker__factory.ts create mode 100644 src/apps/mahadao/contracts/ethers/factories/index.ts create mode 100644 src/apps/mahadao/contracts/ethers/index.ts create mode 100644 src/apps/mahadao/contracts/index.ts create mode 100644 src/apps/mahadao/ethereum/mahadao.balance-fetcher.ts create mode 100644 src/apps/mahadao/ethereum/mahadao.locker.contract-position-fetcher.ts create mode 100644 src/apps/mahadao/index.ts create mode 100644 src/apps/mahadao/mahadao.definition.ts create mode 100644 src/apps/mahadao/mahadao.module.ts diff --git a/src/apps/arth/arth.module.ts b/src/apps/arth/arth.module.ts index 23075e747..0e00e3e09 100644 --- a/src/apps/arth/arth.module.ts +++ b/src/apps/arth/arth.module.ts @@ -15,4 +15,4 @@ import { EthereumArthTroveContractPositionFetcher } from './ethereum/arth.trove. EthereumArthTroveContractPositionFetcher, ], }) -export class ArthAppModule extends AbstractApp() {} +export class ArthAppModule extends AbstractApp() { } diff --git a/src/apps/mahadao/assets/logo.png b/src/apps/mahadao/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4d50c736be78a85d47965cb08d0f87cf07bb5d GIT binary patch literal 173225 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 P&WLz!9kHSsGJaR&;#R#9EpddKN0 z%#>JDUHcH3#apVUwuw5X1+6QuhJPOzeim=IL+gHtu9aA~m@BSoFZP}Pfa6}Za-~F? zJTfOObIecoCh*@X*jqJM1`&bX;Ym$(mvVuhe(3E~(*R@6WQh;A!X$lPv>Eb{t??8u z7`AJucfV>q|z0cIYZ$QY6;qi2nHx?PbT zB)^fe6a;5)FE1#RB52fqD0E#cE!v;0G7=$>)TRzazfCm%7**hS-2z zX6#NXC=Ub0&3uBkdr%&^e=7+O@I^v0H$r8<9B&`?hHtf-R3pDV6sN!bB`WE@X8)o0c~z2*52bZ}Bc8lKJ+4cGLZnB0tbK5bh(Wt&GNN~wP-C80bpPjXsr(8$ zoVG>q^q4#Rx`{{XD##sEta?E`A>%_oskGR;q{& z7AC6zQ|-6WZu-{1*=oK%n-t-X;N*#-DH8GCzOh%=T(zMH0b9*D6kw!-mj!0(|7YoU zjPr?7*&VR}E_T>4zBI&Z^V)0-!=n1P#}ig#UE>RBmFS>?B=)F{V*86$0rO+F)v6zKX{!wct(o>n%5zC{JJx-k;%y*B z$`rtXzO1TWPizrr`~=?QHrj|mWi76CFafNN5ABAN)=7=nV~;w5GM~3K^8y;hdpzxR zcaWFfb-#&fWu<5nRUFmI znk)sl;E9VD;KeC9ogDTrqUj-99t`UW4DI7)v2nenu-J{oMo~W=uxuft<~aF}p`P?I zJN-35+%_-d$af_bK=JWG&ad-4_6soPb z&`I=qD_3FO3%oBM+Hc~!-&Tw`pb*}!t7F@}<1mvl1=zG})Uh8LEp_oT`ytXL3h^6A zMzH3dB5@jK&#z-zWeLAL6J(tNO%+_)A>t8Tqz!|fhplOZ0VD-Dq1{#kmaN7>Sj0s; zv^1!ZPI?${*icFqdW8kR;gB0s%OP1*^XmK4^;Ab0GbI#?s5g2)V^)?wCOgu;GjTPk z`Zi<$JY`qB;)&~jL(qS>2fls9lw#-Wfw`haN8Q7W@IU#7TF51Dr~TshNvA~Aubsdp zh1jIUkdlP{U+9TEbZ2)P!7dn_xoU#cIRmyUy4%SupK%w0&rVcF#M#mhN2R_m&#}rx z0vA-sFF0b_X?92pjYQk)2Vamk>Jfp-=dU`oXiw0XvPFVonZ&lAX3&5U@3pte9n_c&?)GKne% zeL*JKA0QDeE=JfxxxCBpk1mvm_KG{UhDAPRu9Nx2jICwijIy4s^EviKtHN)hPZ=Tw zB}!ePRxhjuoi?IsFG{CaAbi|_RgRf+j&=At3cBWMh&0p9M>BWfhi@%POL7>8S`;P} zBV5Uh3WgVWR2^9hAyOE$F;a3=4jE>H+nZN@B5(6=KDuIZ{M~4|5zbmlk`ow@&i1$m zWA;+H*AycIlF2pSlSK&;Zo6^$IaaydhfKU+gFu(4_r6PNqoIf$vga6hczc3~k-6|w zm)yJ*zSRx*~N$94EVPaXqS=%QI61rwGze{WK&a7@R-gYuejtE@nTi?diY;7c#_^w% z==QxVJ#zd@d_SgaY@xN=94JapX@T=-s00O3-oRhvkIVYsJqb#R`Ke4pm^ZXFX%3AF?;a3hQ0 zcaPIKB&#dG6E#Y~brF7%C?Baj0Xqb5`2UkdgUJBb+-bL&4ie5Tzjti?H^3;@Gh>nUE^<8TeTDz7`ULtc@FtJ>k~=Wafan3pJ~s8s=p5=r3EDzF z-^K|c*G!I&OstT`_&yMn-kH&2@o~a(Mxl|0A4wj$4ZYFc-Bz6{3m6gd&Q!njoMR6y zW{rVr4_uiBD5^y}hfMj6q5Mj2L_QKfXe0Nron$Sh=*mowU9`r>MVgoG`6mf> z*?$?F=*^W=IUqgR*k~0WamkgE8VHnHcQvD+q=eTBzXtXVL}HzeVVy`y4G==#%~-dW zt!@9QV&j~)T>rEN1nr!VU-42i-3dqVsB}*5sA~ZgLgqB=CKAvxaRK ztp!P}u2NHahF;o7{R5cfm!o;CXo}?>+|lMg0hpM%SM_=}+Dl*6krnjE#tKoUAWnGJ zY#FeS&Fee6FR;_8(24F!CkhF1s?rj;(j~C6EIw!ektkv4119l8=M#Ui1h~DNab?2W z=ix~%#^JS7#-$m=(N`2nwpkPUwZ2gXRawL+?}x_FR`1~Bk)WrOB81LH<2ZrO=&fS< zx9GN=LckO4IsZ^K=y2J3J(B;AsIQEQ^84Bzy1To(kyN_7yBnoDB!=#8kQV7iy1P?K zX^@gG$$|Iw|9jSYzt4O*>puJJtM30xQHJSeXwjv#Mlwd7mWzBssHB4*5XxN zRl8+JRQm-dYhB%1W*sJK!;n&7q*0Yn8dpN)b$G|?*(T;$H4C74?h1ax_Sv879sIBF zU_negJ0GeY{4UpYLXWb(kC#rDbq%MNaJ(GHIn;frBf-88YnqJ0iNs)12)_NwR&AP- z)>V2r=Uv9-ks!%OExP5Rks?+-b@mc-#YpDqP-H&OqK5=%Z3#QX zoU&VTF6Rp^Hs;-9vRuQknc1Xi%~Jd-W(>&hNH0Wwtz_KC+XIWACW9{*YE}rqoz%Zx zL~}plE!C424W^qByj|u>Gzy?d6%p-|QSbH6Q*a6i$45q>QvoY%T;Eun!I1`C=Qrt3 zccu!+RMn#f=>$QA&#H?yufIM7ps$TaB+sF)>wptI)}aLtc=e)NJ+J&rmJCe}ANicM zCZu-7aAqmhY}X@$0tkmSYjE!iI7I=$mlw&*&+j=9NJ5wc$g_jfW7*SE6bj{Uez-?X z9NhhU3`m|U5cl0j2(X16WTF=4S=S}VDgepra|fn#NQ|E*zA|J_tLZYjsTI6nR(!Z2_?iq%IrJgGY zaSPS!Dg3?Q^NP5kd|MY>>m}qqsbR#j%Gc-mMmJ%~In|!FjixP~zusi&%+WDhes#L@ zGjoCwJq~8;W?xbkcnLyRTdY8#WX8h{8o!w*^7p+PN);7?a0R#*mwi3Mr^rPH2I z5N%1ZgoJxF<)gGW%T|?D2y8oFo#Cph@^6^c4x3L{&!&A^-~!I?#RZdE96m*&i ziMwu2Hp*DP^hZTc&KOj7!;{|uchc~Ac{?^%=iQal?r(4hMv@|5s{PWDQ_)1Y>kK?} zp60+}9QY4&V!=k@M(S7K_ogQ=n0z*h1A@~lE%arIuB-=V1`=vB=rSYsvCm?Vq(eX6 zvWHfV?>&hH+pNH|$&x@W{AB%JhXnKf_Esp@``iim=EPmdK?#U$er7U%EK2fe@Cizk z#s}Ke_m`=$(c?Q*v7pU^DfNTXr#&Hj|2B&GspwamI=Gxr2Y%L&-)8NZTQ>P4D?w!L zD1|8s>kZCu4QaTp`^$WMm0ciGwEnfTlqV&2 z-yeA8>Es7UeD19N+}qz(fxwGPfMpCt%R{-6opjc@;X<38in>Bz{5B&oyMn)DB+T=w z)P*nQ&KJM4x_3gdCwoOPqNx&9dMP(L{b2EIFm_0H{8?(#C`?UfCjlVvdW`n%u=0Z! zovoZe(PgJ!e2UT~BCrp5WkyCvdu13JbQ%HImM*2&OB>mi$o3jSRFeen?9LjV}PRmdZ5Dx7);Sf3ndAjvJ$?R zP7)}u#WGAzR^(pw%%;P=!%_u*uUe(%EFu#6d!Uc1I)x~KDZYwwSiE)l&}#9b*uEh1 z8_T#^LA;2MZjm%~@7OTY4A7i)NsJbHoj1F%uleJsq6I^8{GjR$qKNxNmf2yS2I1lwv`j5US`muyvbUdw$bA{p1N zWt`Ey@<(@{0||48>PPsKX=(>R*%QV<(HiNckNoY`t1hkD2VmG75H^Hvp!Lkvp}-ed zwRl7Nyf04;!mcHLnbiH@dg<^9Yd8AKkb9Ky*P^t0vrpVzYULloImL)N<3Hw2P^Kv| zl?w<#Du_`38qiJ&0~}>&XIYGQ3?16++OHT+b@}s;?HKB4`X*iS!O2e&N4CYSgc?#4 zEbJ70KPXNl03zWLbPm}$-p!*()xj)pa^ZeY(gih!L&-=YzKwg6sKzeQSiWt?d`Q(Z ztWADuH!B}h#R2@6zk2GeB|)DD+&89%DrKpf^=uVVTM4Z@$^5X@JAA`C{o_@9{XUio zRk^h7t@JW-(y7m^b1Jd8;Hy$4(_U9i;f%vWEPT=54uL_8t=Uw!(3IrEv zx(_&Dn|o2l1VP*q)-Td!b-6#*YobB)N0Wl*$BhZnDlpx-fg-&Z%zIK7R$~&E{y-QZ|5a!59_kMUJ|6!<+ar)Q zs=sSN{|~A^Ow3NUDd%u|K=&1wywn}2PrQ~)O2fN}>W|5C;KV`=a4XYFY_68}usd{q z;;O}WFm8e+AxKw`m}*4~CaErmvtY-BiV76_*|-m`0UInchbLcDjX&k>T@8+EF7(1T zcwP}Z{4p7->>{QZs#@SRBq66B&A}5iEMYJ$M`Vfer$3EKLRo%$={>WJjQI^ln%>6f z6fsHyp&HgbJ~#9GAi)kK5lOJsEfq?TV~)cX(j#pLynBO_{3`^U6X-OPVWPLbwe>#X z#qr(0gCiAn=H#+;x!;b{JB_c$l&^paN@0^;4XV&x*PFv!3k?4AuD{S?RCt*k`pIo? zge4MSZ0NV;f?kbgd+dpXeV`sW2ZQBE39aP6PDqbl@6Sh0^e`Yx=C=2?eDVdFW7@y* z%7+0ogT?^~QS)mvMCNFVC7?SHK4vHkVxBH*7UCH!6mK8mLbB-I%%;kzFn@SKLBU9R z+;ptpWpndnsMs0hC`j_vO-TF%HZMy%Fmpg;qpbULWzJwitE%PmRVq-{zYwsFthk+k zDUYM;F?gj;JvY`JdFDCT#alJ#ycLZX7>nf+-pWSM@c@^{bYDAUYs=NxI)9Edkak7- zgc}Wf!83qUoqRSf)&Ch%Hak&#_ja{x@6!zMn%K3lzXM*@_V)Jb7TOo23~H7EG*#;Y zz@779YKqPc1;ylMGXfXzl7b?(UQwiVRoWCAr6a;`c}ih8=-E?I`^iY#dS6H29B={k zu_t-V5GIN>3^C+m*Km^C8NFUrI|!S#3zx_WQ=IWw%60#wUA4p?q&%<>v-;tHwNJgb zTrcdX(7%Z{r+i&Bx0L`VAmJ(e=$%Z9ZChl=$!xXZXX!&2mmSnKc*b0DKXq5c1nUdd zxwNWif^SpOR`&W6?p@1|_PDYbws)!%V0Rbxx3vuPhj*eXLzc9QmweXg#Espb{n9@o zbAv$pp49cuPex7<3P3S=aCk-*TJY7poJhj>>DWy$HZ*aIS#u?RoVe_0sv|l}g4Gy) z^g-|RBUvB64In7(AP->tmiKBH2n%DuQw{8ec~(*Qtc$Wwuk=TzzNft7DCISCSR!IS z9H!g{My*o@vE`O)_C@yx6R=6s$K~E58KW?43B@l7F?_e^NtQMIml<2(Q_F}lCu6MZ zOz>QfxM^g6Q-R!`bWr`iz2Zx-Xtfd|Wm*PH{jnR%Xhwit`7_)y%K6^1(gXF)n zIGZ$w3f}~`y6kJ{T3sqrH`SCpj7)8;g;E-*xJ-WMU-QJjiElvb7{Ba|Kyd%2#X<*B zY->!i&gQ;mfiA46VFSFpMtDF$CVx3O-|ZF)r(!Rn_n*|ob4Nv7;re=kjMP5>48g~r zw@Kmy9a_Jvi{>y50Io!G$wOB1ms;;KK6-3+pN2$t5!{s!HD>2VgR0Q_BMsxpFm<|u zpocg#2vJXm2pyaQGEn_PpJmcQR0eGF(xY%5kFBhvvmXcsSW0fG7rGTTX9sF>HCg#s zPy4mWoykhx5H0~tvSpRyx`qF|Wk{L8Ch+%J|7v@AQn2E$PZ(vnRdaTDU> z<8S{pVycDXsOc`lgG_JEafIvclc=_+34hdB!GM)qz!VlBcSkGTC^u!IOz?Ew)WOoN z(%y#ut{^GWHXt_oXFo%-zcCej@yS9qVQi+g(!kpy`5nO5AgN1D_7JYQ)(jI50x z%;TP480&Pr8cH8Zov@0Y_!#ic3z21}?|rWplZSgeKAEMajv3k2w8hv7zhP?WWD=V9 zWD(iusTPVJ3Gf}ep-Crtba4#m)W+7;;uAusvY?u4e}0?&@qB6QhYUQG#47nhk9GUL zbmjjlzv*vhUDaPZVfMt%2>?Lv4)4^-n7|#4mtgc;M%ggWN9a!OJO5-mcP$nMy|Q28 zB#wzxJBSPZgNMKowcfsPKnquYC`ApG)5kK(%2zuUQ}Zye3s$F+uw!O5n$eLxd5d_K zG+s;QZ2IIIk%^&f$wNd$+<%@d?_jVH-Jkm{RiVq@-&IQxD_Z;tQz~&mTdCytGd9bO z^uynp{r2dzy+n>bLo8(sF2F1i94P>GCpsHMtI&YC5ZU6x9ZMw($MDKevb5`UEjlYq zwEYbO8!ranUe5c|R%`yzlD4{=aZc?KIX@eDj@+heawfizlW58@ps5?@7WLjBp00`1pCR6>A`tqX zpYMZ!%7!UQ2oN1OzD32pzeAb#q2$^sFIUgmPep!>;B+pX2eXEa)NWeXvtNXa)kZZu z9iFhv@~GPlSx_?zKQ#~m7@f6Sd1vQBnPAx~25XW1O-CPOmD@Uh5D9WqJ-7_UW>YMJ z*>17_PJ}Zcg=+GY4yWrdb-x6tDG6pDi`U<$REO&Lr2RU2Bw7%eXi~UGG?t-5#65qF z@C#4S)~45BwVS;>jXdxc3F>+I(Btu(v)j3_PRMW)n+}GKRF}(iP*+8|ms!U{XR%yH zCb$kwP4)TsW)2)fPc<4xO?!!;-5{kR~E1aJW4F~3K zVaZ7Zqrz-Bvpn~b6TS@nI^Lqu^>mn!(iQLCK^YCX9r4{ZhktTsLI$A*Re`6L9L| z#l&;a28Z4+|~G2>j|L5&CTF2 zo9z^+_t&FItCVf)x2zw4Eh)A3w*+GQj47X<)32SO1V2O;PlZh?Ena5@`Wz8P(5KofYp!ROGN#I{%;En=C+SkLjks~`^0t zcCmbIAp)*1mXQbuFyT6HiqOzMH!4NIw!sZD7cHP94L~qA)73hn;2swh$tMxwuyP?!TxY9NVAt}iu1M0b~Y?=0$t z&5`>)_8&0@hHGKhuc>V~=|vjn`xHO(vRggA^fOHY=blv@*rJ%s{$_5+58Qmto`4-5 zKu+sD=^^{_%TnWqmT;9v1O1Qqj#O0#9vZ*Ilxv-QIUhfhu)xEoNrF;vP{AsXGca+` zC(z&jrSn=sdQY#-WrxhStQP?|N1})s8-dixi2@=kYi7n%@vC=9(QPHDL_&&ao#+$R z@&*W>9*ZDlp+0tUzLeobtomz)_!sYU{_z;XWvn8Nt7aS2urg8k?oeB*xH~u~XuRcN z$XO3!_e~R!$H`<+9jWuqP?+?Pq zSbA8Kg~KoK#Zf4bzWtRyyv7)?imwzN%tBs1Re)hx(5Q_~5KZjnOKp^dj$jK0p6 zsQgAL$axj)SyG^qMAGGRYyYk42EEM-EZkj_19Et^2B#0M2wvyTH}=sUgLjcOd<2qA zStGG=9!Kfg)hUYFt3eF|#OfKsPxC|$26_Jqo@t;nvE<>zo(4F%mPA4f^H*fFRji%> zk{=$*3Up1qo}Q6Z!|VzB`4pfZcLMhw{wke+Ho_mY?_Q!-be)3d3c1a#d1xhkOMY&= zTKV{bLq+(vM%QHi<#gX@uT~`BB!!x`@Kaj}c(&FMtDS2IHrp%G0$M6k0XFJ+!u%u4 zQ0`2!TJme`thXUVIFOO)O}U@xjiXkdVFbM!QAhX$n%6R-57w}a5``roTC&QAoB?&( zsBaJGRk*5WKVJcHl_d3V3Z@2RE5zF>ZOWP!o&&W zeFAdbzqerC(EiO>4j-gU1i*wQxs^Aw6|Uh_xg3zr5K>32muVN5?C=c}B6|nJf|{$d zu1o*j?Gcp!sHcECkDFTs=@u0*4ue^h>!;h{M!$<%B=RgBND8T{pu{YZj=?1slq3oh zv~~3MQ-Nlc{^9dfYE5`#XFELgOFxi=WCFSi0WO(>2Y)~hhUMuhi)G@S4rxif>fq@n zf21ZrQv&I$aH&ILO)v?cD2LmD{9PC=X#pAzt zP5t4d-QC>Tl8-%-y^(x*%Nwb_&gY_n_f*8O(e35|mXDpSIfAD{+9!fO{lnh377J)bwHFEH;wX#Z>0v?C7v~Dvxd>ulzX)BK z9C@>ryQkqcu&?t&f@|Z_gsNq^jk+ZNNGc7b&E$3tOJs)Ip-qZ%#HLW-kz<$JUs9lE zEz?!StiJ6s8Nz6OVAIJ{SDuFZ);r#;iR)vhyruagi=_AM@059$8`XZd6Y}iA#M@Jg z+oqb6@ca`|7YyYescb#pDMMZYt;t6krQd=QVO4{5%7Fxf|3mT6ak)ai*U=9aH5v0i ze%w6zV^#z5yLQapAzH5N1z;#*HF@%B`V19bqv()q7A%Ab6CzgFW=6th!=12>%olV{ zHnuW2Y~1&MVE!7a`iyI}e(3F0<4+tMD#*d0ew{&ywnoQ{86S23JteQW`qjC%<0`}p zMe>jhfF92yr6|(RwLJ-9PZhGH@!-fTWQ$hsqD_PDn)Gow-( z8BZ4NmDzG~r5BC+gYVkF8!vLFo@~1;qPZjeuI8Uwcg2`aE}^CJEE{{;ErJoxsD72L zQV>bu$6TKsCwk&jK>?gi1OKeW#cEpA^F1Om{L4eDxDQ**S6g=9{Fu9628(CpRHCWZ zk#ZVlYsvxcIT(Eb%Pq}{ko)wZ$XQEJl}to(Z*m*Cw6@lpSLj@Rn<7(qPF53PewM-n zIF!)gqR-vlY4?%ag$G~zTt>ujCcNlS1w@^ReB$z11W+K=oDe3 zCjS+=F%hboixjF|EH+7y182Tgv}R8zag@9KrQ6KPILhtG4}{D3m-Hl;=0f(@t)dLj z7=o4pY?h1i_V|Uj*_OO8>i0q?sVP1beDQPISorT^DjDz{PN9^0~lrQl<=-1O;Da zw*EP>B4+f3{(fCR`KqNcaWZlgiI-1dAJ78_G=tWvG2i=f@sViz6Rc^(NA`3xTFp<+ z08973sRftYn{L@@uvEgXmT@^KKGi7UJXzw7YGDuZvJ)xoZ4w;zAF5uyh6c2)`&gV| zqk6QSw9kM^9vxZqJE%Uf*X8=^H2=Y}u2LwHee@&x3yqnNnTXb#m-5Ps2-uok&Febw zf9`i%FVhJ+UJ+JiU&tY)Wtb4Na^*1#i&b_yr3LIa{6Ij#2nw^g)VPpE!49H4j1({$ zn<*X3RI19yiJR)jF(8NxAx*-G&m5nzAih`e=b#HyY9m&+U#z>sJ3TpZPnjMBURZd5 zc)XyPz5LQTTmM`$Hx1IXY>MZP+X-jZd6m?$H`S+y$7$)mo>mC&$EOWa)XD;Sx6l9@ ze8}UwHuq2Q&^7|4>B5rVQ!K3tlAPlEyXV71ik?*;5b?dJ9SqK|p{4-x4bA*WBD?1E zj}#Rz^GF?yxMUaH`chhSPv-qQeVkp`dDdP!~(Uo?q-SSr8b@1mu`3jt5_$Gw;oRSnTBx?c{t6skb}MF`rCrRRo!RGl}8grZW2(r2QSLX^B1! zi%aaj{iah#FL!+ZL6`v;cnWJGXmizmf~Mmo3+;G|YOP~OghIxS@7w^Q{yw~o6;xhJ zk3lQaT8hR&ku#nyOv@8wOryE_y$#2n;Cn+jcM{aAvHloM$k@?m^?ZAAe9HB@#lQ`^ zB~*7?XW0gpzUT_Y6Zi`u)K{MkHxFCw*lw+ZEX1U+jH}x2(&bJ%ug6TOiYK;Nb0BAL10-(WeD2VWob6?;&u@SQ5I=GVkq3U+!c0ovlxy6EmdRROX$QJSlJUa%?0GuSL|`0-gvSMsCG{ zXCYo7@a5rR*|=_rQO51J^K&wAgLiUy`fXsSwkMW(bTPN_bhw((KF zdrL51aVeo85hFt3A!AM#l*@!R+2Y~45@VxfOk4WcVBeF0$p8ll=gA1o27j1f;wX5^ zOyO%(0h*ys5=ebeA)8@(>&R1Ux=#DF$@Xe-kprk~=@!emflWEMH&AKVQ1nLbJ`YPy zsPWd@gq!aPc(Ho~<(1V|(db^QT07>u`&WbA5Q38!(fOzcC;6T`gG3=q$JDgI?5Uk= zD4{k#;^yf+Fi&)ibiqF*oW%yb_cRS_H7ADrtuX`$HhS~luwotuPR2!fN!qg&Z0C&4UR z-49QZf$qC&nk`NWvd=PrK_vA}w&(ml8wq<~Uoh$D6E08oQ#o8N6Hlb9jG)8z+yd}&?ZR_I{| zb*6T=uNew>QY>njpoBwNr^Fh+Tata`&16lVo!^AO9fJu_yd1hdxy8+ZqX#txAzmuH z^my(`u9n1^xTD!*vq(cax=p7 ztP?hfm)rvnLmGv#op!Os5vh`-t!tDgoBsJKPshOz&F#Yh0nQ(0(KOmQQ17b0>*PCH zp95|@E@q3uWxQYa{o7pIES+ED1M=XYIC;22??VApe<|C_j#0oSkDl%jKN3ugLfTt5 zA}_?Tpe>(kqm-~9@J>bz`SEQ_#2vlY`;rzoIx|^>{O)rZ59^D1dZOmlE4nSNUD%v! zV>q6#~7LBLa+LtRkH~gzfV_L1yQ(EW->6v&a7sxE_3H$`BYwst*wv zJeL|L`US~=HTF8WJMUVs=4I95%eBvx>zS28*;-CivHVY>$9UUN+CigCPcKX&I-<2H zSCfUNJ)*?+sX200+Ygtf`4NJ?=Z**bEOf2c@DbDpr zC}IB8*_3EX&7w>fw7sE78`C!l{XbgSnXn(ab=&;%yF=5#dR20uxdO=*ho$9Nr!6D$ z&+T|Oxw#1ameCu%MdzOEZ;5Dh`@KxJ`wDNdD_a^}qwCtn`6R~+bzl(h)+Pdv(%$?MA*euU3oyhWXG(dEzT#-JN4Eaj9(Ewe@)Sk-wq5m}7M+Kq zMa~5~RWqx(>mDpG5a{^f!Wu)#1VCg7Hh$TQJsU5OI9TENZc0L-uH1M^R?7YT~&D%u^Mi##ljT*-80WqP(&G~;%+cnhsbLfv@KeZQW-^mGF@GH?X_oofiwWMOFnakw{ z7y75<*(r{j;^eyxrt1V)pE|&=6GVd^hNrB542LzmgN#`ciL|A>iIZBQ6GwAw-iM@p z{O&=v^TPH&2U3Rv@3L3MqpXkUed82k3kg*LT8%xnlm~o@u>lz7YeHpaP&oCH)xcP! z>N$s8P*{5;fbdU??8}?bG7-W)4_&qCR4tb-NsnLWA zZG0{}1L68eK`pWC9z}roaPzoh0X(RoSy^1G?Y(5ZzH2-kT`Jn_45tZ%utqpmX=;h+ zRuH|_6_hj%lykRDM;-jnEA2h#v1pSH0C2zr9H-e#v7Nf(B~DVmRx9fV>0g*xXeaH9 z;EpRRlv{mQQd%rVLxjsxGv#oAqlg~I7wPO`87rcqAZ{NTwImm^#Z?d@i}j^T`|`wg zTXLuPSCoT>U?rD&Yb$vt{RfT@|LXhINN|fok@F~GxG^T`^@Z6A{kN{0EvDu`1+#K0 z;rtQ?m@U)I=Z8zCF7D6d{~VSn`>P!ubP^nDn(Ce+Gy!o1Wk?F5HBoMHZSM%QF@C`3TSM{dOHALgq** zvpc3H619F55B6HbK8P-v3_t#Q>DT)ngZpJMPJ49n-sq4=pcoE@T`wuc0s z#Gm@Kmu6=eU{TY|i(5hICX1@R)kEviD|H7^A$zyIut`)vC_P-+&=V3^szXav&LP_M z{+ur(q&H*UZ;<;pvFJT~@s|_V-zS2@Z&#ZC=goXQPv4h!Xse@Zz>52;71v<5;BoOo6Y6MKO6p+n#yK3)g>w+kj+nb9MVf=DXs#Yga~N(CsjW>Rzzt1xJJK0K#bIs}u3y;e@45 z;A%P%e6vEbmpfgnw&}+S5lI3^&a)0~lx(yFmI?0+Z$l@v(Mx3(+I&}zKCPRb ztYcxQjUNAknve3cGmL~HCws_J{?Qrr%ZJRJBz)5Jv2r!DZ_z&biGZ>;~=p0=4s!*w$+0*;Z@EnoLc~m_FKe z*0NXWJn-T{z}^@Mp(C9{7ZPfV=U#MpDR5y&l&b#Vw zfrTs6NvX783MXSZ`8VuZ!QYU#rP%b|)C(8DB+TlP)eq>txq+P!nGsFDcydOSwZ&@@4b^5E05(zfU z1?p9)zW5NSnL(AJUrpg@h0w(477NwN`14`Hb)i7r=Ye@r3%fNG_jH%+YT6&X?5bf% z0n9#v;g?XMP4o;AGiT#S#s9P%!?DKGVplhUX{foMKYfe3yCL_mCEyVkc?nboEt^EGEM=4BRs8(PRHue{MZ)6P& z19gNnN{6^g$}OqvrF(>rswo1eK?5=Cc$pYx9wQdBKQ&x`HJ0jjz8VU?0UL*8l%y8- zv0p^MA1=Rsng3^tIS zRducG9raK<`t$ibO;Fb>S1_SWCdF1x)5l_Gx~E%x@6uu)xUCB+fa{l7(zeNh>zBudlAcG%rAF>` z;INFsh?)7fu=ttDaAo9^0nMygi0x0G`N_#;j%LEV3HcbDXxNX?TY&w~Z`tPP;*wzO zYiJ>^$j-Amz5YD1iYc;`|sCUYXB7@z0ey>GQYKq|2`4R{>xtn?3mB- zJp=?=&qVQX-9Qw3&MIT=&qZqj{r!1q{kP}$4#qw(W9E?~&8W^*G=h_w^Xf_)o(=dK z!tBBHvE|+_hHDJ>dnBn$3{nHU(G+osiErb>%w1nglQ6n2D5PZXJ3q4rM1C^GtAz->o{QuViWPo|V-~7(zw|LQ+!#t6 zFQOhNAAdsWH2u=i7YG6akO}z00L(Xeb-BAEJaU<$uag$vai3+yfo;Wt7-DO}*5Qtv z8 zyI@Rx_FyCEHC~(mq2Hg5kNx!OCU)+RwP}(2)hT5HZno3}W&hY+a#udLp4Pag2KDg> zP~Vh+oMqAM_r2ks#6k|1n{YW6(Yusg>o9~Qt>sV1DSKOl4YftoYg!V!wBvFGXI&Bo z1ef9NqJU)69OF;g{q_9SN$B5D1}bs$qw4<951kV@njB4vMUlVpX$aj+9$=FlEzHMT z@fhG@(-0o#VT4;K|AkC%5DZqYMo@8hqU6buKJn7QF;{Xal7rB2U^&=Io?8MaHrx~u z_}CPwsFlsPR(Z(%ER}G4lJMO@{T3J?19J@g<<%T`#@K8T0({5>tj0ZC4JBe>6kXJ7 z^=E6$A*=(wSBp|NHu?`$H+u4fLcSki{buRl>HzA}I1LBHlC~m)MDk>|(S={9TiyF; zVhLydsmf3qUSeF!MpCsfec}zp_J>!Jvbo``GNFSd5#oqWH$GLgEXmlHpQF8Sek4o6 ze#0M`AJ`4PL&9%FN7PiHf&QWjsP;?V)i>BzBjDqbiHgR z!AB@_A~+Vm5NeD5pIc={3|M!G4=|8N_kvSq325Lb6L#DmmgiBl?S)@__|*Bp8a;CJ z*p~U#zZYflhP97A`74vh21-G+4hpveb@E{ejBx_IrKI4pE?F=5LgePQXnJPxguoW4 zYZ!Ur|BGp_>C`Z(hV7P0q}phXytuPhS_!=iU#B&P`hFKncXtzGD;FJrb9l9Q3@p-O zaxiYgzvs|{s~EX?Sg~per{|EDNuKR;din7;7?x&067wMaqsUZZt7=zx_d82~1|Mm7 z%VX}M`7hJ`Sg63ngM)2Xzb8xP^Xi$2LD|@$51Yy3n2dwmxg*V{cO>-P!gg@C;?!P) zDJbLX`pJBvGJxL!LW4=DtxBnbAyvQPFvk~fF5{4^`^Pmb)TEe+AS{ax+b7?5jR7?K z_1EV*`mJ?1K7TVifI`x9eE@i2Y|^kPU@cb-X30aeZa409Vx#FTzuzg%;JpayG;4Pm zGFnz$<0Ik?Gmz-Z{?6wNxx_AkZnb2A)g5PBoh$A1zZ}rgcqJK$wRisA1{PNsUVA-$ zL@KIF518!j9*-K?qqD|!2^s6t-Im!F(akFoV1(f4Vcxvq9eJ(09m1aV{1nE zc0YtF<~V+r<}oGg{0~?X^m=2v8E{avwMmA8{zPii#l{9oL1+Q=|1uwd)v_Bbn$p|) z@->CFXvg*w?mqwI1OJNyq!U$ir(>}-3buY}MCwae%G7u9hCM?mH_;;0ltL9S49cko z>sren6t(eyIxDEFT*0F1R7n(FCc|}Iiczy~lzArF* zy9Y`R)WwARn=uyX5%d8txP=+SsSv+BfenJ@kzgDJ_bf9JWeq|E<1?)HqO4|$5YGn; zls}*h%QqM*4~VFcQU=~6t8gtvO)MYIimDI z3m(N#W=V+#oxeYhLQil?+3ug5zc2Au6!_zB*x1;YgWj4IXB%1ufR*TvzuIQ#zjG46 z-hS{6o!tORBbS4@f+wA4_rIJ&$j0B8}Jk;|V z+WDW0pqUcYx6kuGW2#CO{?6$bI+*fHtn(>=7^s9XVX4r zJV}{i(1wb>jx;o_isTx-eF4f>-+J_tC4JDo0t0R-EMA_GPvfni`3ZffaT=tGqX`pD z9|TSERFJ4}ut~3Z@9h7%f}o= z^INpk>^E~8JXC+5Q%A{g41w)%o{TKJ>Z<`pnQ8hw__3iD#130%8Ij%%U(>b?XmrP@ z$FtctXLRgtNbNvbZ}gyVe^d4RS{Hyn&b-sO*T6qoe}9@*@893MHg*zec@}$B5bX$& zDpU93l0#A;F2fUf~2jC55iFjpt1~s3brd zq3!x0)KXQoN)}XOD&{Hb?V=>`ki!wAR7`gRciF+T=L7YL$f}B>(DE$Ev6m+mAZ@~m zTw^&Pd3;SLq*xN)t}!|qn|1u_uwxvCNebP{u$~J0wnMs{{b_*;gpF}V#&!)QhtfrQ zK`WP9zSSuib*%EG$(&GgYoFjq^`lEGqc`Z0^#`wTzg+dh8$G2x$yZ$!No# zsulv7Z_k0Bp^>J|PbTmPKVC5AtI{(dPe@bYfz7AUCW-Gjjzy@?=V6l>>g+OUXyn4& z@;aR#{`tG9{>_W)<_{(Z{5i6FqV&X)(Yc9XYmqz_au)(b*IJuJ_exxWDeeGiTL8vE zLPCO~VNl6!^AH4)UPEQKz$nT25cpiKp>V!Whl46Lnwrpas91!v7SVa7HV`w=&XTp& zDB3kfvRVHo-PZeK_Zyfyyl3WLs1q2}v5N5%MUqKVB0BXV2QjH()6>s3G~S-xPKxoP z#u#@GjBtGmnW2*kFxVwz65(t^r0+*fwn52`S#}+A z%rw^V9cj3KD^yb`DIyuhNMUcu@O}m@q*4LuP%N8bCO!wWs3Hl|wN7fHOnr>`3>HLk zeexzxTy1wqktMlHM8xxt&%XktsK^JTVfO`OrDS4!#S_4q{B@YsK2WZ0Uvr;^T* zv^kD=Hn#@U&xQ3J?Xy5A(G;?ei#&(x)ipmbGuYKl(W!|NtcNHH)&EhWZ0dM6Nq%Dh z??e>X@=(cY+(gk0jI?>K+BFzhH(MFQ&G)w#%02N1y%G=We__U=WQoiLMI1oYgpr6- zVozh<$fSg9qh9vhGp-nGd9fB6Gfi}SHsMwu-4yYF|Dc-pucEuYsaBid&1m~%(?SUu z1Rka!V}Z*3(YyGvIVr+RN@VKH==!ZFyEWGF%Q$k$`u}Q<0?~>5F}AlATjK!@XV`wZ z8_d)+ooW`+{4nI7h^D49me={r4sGG}keAoATMnwC81I^@-YVK4bS5k_iGj}1xt}S9 z&*>+*jcm9+Nq2*cMKN$*_+4>j>rBxJ>9K`Ia{Ca@C~~Y@StjY9I;$ zT}Rs7X6qR7Iumn{VAm6Mq}6s1VM}a0YqiDg|D|Pt*nFPlSzPx^{|3w2<;xr@y@A|E zP^UY#*^gcHYUAy0t}!=*hOa~)b&c3Q#u{i%kyC7Y1PQe+hPFJR;ENs!hRezDZb_Na zF0!adQB1vU1sp(=zxpa{F5%{0n+`!*+XeeR!pluDg=icE>K^lmcu=~)`zM-}40o@~ zH!=$KnfrW3#vl_6iq=mb2%C&%Ls>DiuZw+djVjGCbEsdIa+4#Y7L@iyj~}F_;31AiS}qh-&ml`gx@KqW~{)lNdkH-$7X2EM$geR(>+-CdkHzi#C{OtOr`X6qe|X!nniz0;BBzh-*QZma1`{hQxKwz0YPbm! zmUqERL>=;NWnOgsYCjuUx}@b{`rUs@)^*1hMVD;zhS#uU?zzX}`w~EMUbUL|!lARz zOqHmE`{JJR0{ib<%SY8)$Dc2Ni^G)*c*}z|Urmh~$rl*=1tV9#$R0n)s3Q6^ri37e zF3nV+!-iG$ zRy;y-|5(V~(c#9T7jDYX5S%cQiy@xa6F`BVs+g{HGy!LvSC`q2N5=`}tNiyw`+)C;(O6O?29LE0%QpEYzTs^B`0?CeERHvL&~ zVhn1h9E)<+Rq0*s13|^r+S!?7FwwWLfRX5a9T&i25$8@0#tpf)Ao0_WXETFC7j79$ zhs@`(GD~O*mcOCYlwWmbEKNl{p+Bhf#seH$vo{DBbQdC5`hv=bnHVy`WL~vLVIh*d z*Xyw4haP6jaaeI}N;5G=w2xvbIxZgs3=v4;MCrLPVeUO41)&43Q~T@IY2a(|SrG`_ z#Fgr^U7qoY?J=(+r#{KT&ha>{!=3x4PX8MZF@p#O@4}etd;K==+z;j%Z!+Zx6P$-v z`B*UD*dwTNSqoZTg|x}^4D(4uXW%8-`itSu2w+CgP+iwq{N%e+p-M?S>;rT^nX-96 zYpU%*S3ON?bP6Fz!cB{(43St5ps%~?)hf6@&TyQIe&AMLqf(-LnvvoTTZ40zUMUde zN&q^P|KR1@jdJLbee6&#=gS@$l@@|H&vBR}b<2K0L?&%Bdio0L@k`NJQ3cb>auEa| z%h(UVinBSpS>(z|`Y+MR?g?G(ZQ_aG^v*HDo%SKe90eL)$3Z&ChoCo}?5Lu!u%AhF zhqH-^iM>xwC%p_6qK-F2NJxXy-5mzqNGRRiE!`p|B_bWt zFmx&s7tN>Z`;7#W@i|^wXw&l1 zfyjGHHW^rRhi{n>cjC#pqw3;@vCJ zl2YK?eRJB4h_UoOfC94*rauWBqb32G*AUfhz;3{VNJqaOu)!YmFJ_&$F)y8G&3+ln zH5-|=1*dI3Lievt-)D(%k0ccT0@1s$-9V34U_;&fgx4L%`v{Hy+Oe)Xw2)YEd!4>u z?9I9C@JreFk*6HJgjWtm8RkohZvg@SztQh4qp-GI=@__g0<1E>gq=`>xBCr6?pc(`FI42z$q zmcc^^`Plfd>TG&MhX-bC9nTaGgz`lG09X`+!1WC=@^70MK*&{8A_&VEjVikHYI7V`^tDW>NkAFx`uwChqoiQ|J9g)c&Kf#GoYEdnX(*&+NB z!kAig1i==znO?*!%1((3#*GhFrlc~qK=kRG5od-o#=0l6_fb4=nk7}z z_&gbFiD^n0llMPXmT+NNF*_9;TTA&QNA%N*`OD?rRn&C5P_;#g*WUoEV)WlwUpGWE za(=La#Qe9GE*9ErmUZ=%$q)?^xq9YrBd+Yks;&CA5law>gxpOV08G-^vgL`@=oO_e zW3wN%$MqUUFE%{#V#=F ze`qePz1~hEnwl~~c8{f`y*XrvV|Maw@6>Ma9$KSL0ZVAi=_Hd>x|!5o*xOI;|0B?o ziv?XFdSc~cjxQCcbw*0j{3>O17um;*Nu(>*kHLMSj8L#Hc>pd=+LPZCUA{PBKI>M_eT4e5B zjh3;Tls|x;a9CxIhz6SdDNf_lVZ}%WHRf`X4rwEFuE*|^8uz(pDsgp~*)aQ(yU$+U z(??yHgz6GTCUs&5Zvx;uB$k)Np{+ZJR+3jIaWyr!>y*51dNDN=Jv-gkOTIOVweGqk z!;BEgt+rWfT3j5YzR{nJ#xt={FwhW2&rNS$m98SDJAE6Xu|QQ3Yk`|$;93{=7__JL z<=F8BAlM~TcFf8CMMM1^Aaw$jwp@B4QYUjIm82dSPrmpVZByi`3xc=?LgvP4dj!XT zrD~ZTQO41_(>3u8aYB%TgF`g~J^eaTw-3URxcR(;BtJtLPB~24^Ggc*qz5y)nx4@N zqDH!S@f)G$%?RcZ)TSrbXMr4;W1+zZ@OgAFWC{2tEw!c{emfx}sP@MyS!oj}E3o-V z*OAI~MFxfic_@kk1I}JaYEBtMDhp}jmetX0EaZJgbV)ne9Bz#5^BlUz{2VtT^G^<1 z3?Fp=a%1m8u2(zQ+`Lk~H(H6wj*7)-e7VdI%fa6Pydb*vxWbp5ielr|el%&e=s*LX zyS)O2O8_d|+y9iQ3>Pc(D3%&R>Kae?S1eu+7DFXEXI%Wvo24$FGEE{^9Qz0lJ2wSJ zDeEid*48^0ejqAwU-ux1p?4IJ@NnE{G;jyVhUE#b_`9IFMfp-nY?ha2ZK^qf{5w$F z8Tos$L2RKAqn9u)$&y_o*C$i{XK_$f7vi&UDFg%4g2qaG{TD`j0ZUzKIG*!36;pQ znW2Rk>IH-)42EW{GN*_u`O9uBp=)!3VKdm&&+GT|;(QA33n18=uk?ApLG+aOEj4N=c(9PpP8aJwG@SICw@?b9(K@PX01s^(0A37_5F1~6SkU6=-*_@~b%jNIL_3}8}w zl*`@wK=nT+eLqZ$e?pYy2RMoJ>*8yo-n8DP$p1Al0Ac*lnKBP*QffU@^r3#-yA{0F;dcz`#AMRo@ zLM5n+J`@vtV)q*2pf$(AuSjLe+Hw$O%gbqKzQ7^`N{dFg(pSX*bZk7q?W zC1ww$vP{eVX5`}zrp)`+w>g;bj2GTFj^`A&TQ!Hi3nU|~B*a(7^Fzl-Xl2S|a5d=O zWf?h4Rvf-@LpwhnPJJ#$HNA;Xkxnx~N--cp0xogeOByk0o+#|nbL>&()cKz&RMH{4RFB-E=Ug{Ar1kOVujpE>@l zRpdS$!5=oc@XucrQ-c`Q&`njJXn-;FKg@jOePMa)^ z9_iP(8sisN&?t)u)G*|)GNf-Q_C|Q-(`Dqp^~`=4<(Z%l3`&0eTF)^e)af(v(*nJ+ ztm}QE8=|v-mkV#T>uLAX|0_e1dxnSOM{QJaR~C@;>u(g6C_+pz2WJ~7=XD!yqn-73 z2UvL`nFKO`Jf_=jnhOoU2Pr1f1iS%ut(BVH@1SERz^)(Oa)cJi@+njCOH(~R%MX8( z%9-(O5k<^@Cv!>*xIPyDe$ou`5CIxEbU=u=lswBY=?$a~S0QK?k*6WbKj!OyVVD0A z6g)JuR98_NE?E;bw1{QssH}{zOJQ7zvpn}E*!~9+d^?`FP%cIK+cf@_dGzlRLt9#B_N+fyph8+1-#cpYV9isv&u)Opw*o`BMinL zEa=nO!Kq|LJhJM#1?nwZpy>^LZrxm>DB#^gX1_DPUSRQ~7bpLbWV}>9>(C)140V2+ ztWGCUHqTc4CWJfxiTt^S;8)1eNVpBT%|@d0K>$W&GJsSs*6b#|<-vB$fp=pRNt{8A z^nSx*-9knoC{mFQ~)e|4+bi$~QfqP`TzgFW;@eoNS zOJm4-=JFklw02yx968@dS*)fnuh8W@7LZJZ_(Q2nHJ(dz!**b}No5!A^*D`9z)1qP%Kk2Ma$i-D%R} z6;`N@8_({4;WQu5)wdyozJ=O@M7P+ftP(*pay`c$M>*GUwm0}(W}lUSv%9-%b?7{& zEirvS1`LsqUxO;<)aGr>cOnI$PCVXWLz?*|ko%O~Kp@5GE4x2c`Ppz@#KAX4kVb+> ztP2inY~}fu=Cn>aolJ8oyWG0$hC~8=0)G$VpVx+SH#>4tEI<@j&INp`GAuL+-yJVG zQsSemK`^-mRPhO|9?NN;xoVH4Tb?9q#jPA}shIdo#x{1R4yVFTxRn zx7MH3QfMle29dyuQ088c8sQ&vio2)JG`>gWFuWW(AUsJm9BwhJE3`k%{Wst6JiJ1D z-al;|Q8_i;JBd z`N^?9id}Ion5rBSV97S7-XN{N*^A$HJg_~}XB3K#9?DuZaUYrjX+Wk5_bpVoIvCyk}Z+A>8L&f&Oj3 zU9u)$Ff!?yHE?9*J9QRBWI{f(%a9Q4kPLEz996H!D|XPV!Z{}s=3XI;7 zUIwqzNo&x>QQU_Sps6ktiojH(jTnOUvaupGx@NKQvq4Vvk=LIKz_K!-U0-Qk*Rh1qN zz^v=!u^eud>j)Jo%WfCCx}z1|y+F8wIM_HGS)yhkPI5ClAT?y^DSPB-3rnc z+$6bx3to8wTU(hJlzyaZlR2Q^cp@H(a^F^6620gaI-}h+`!~0l>3!m;5=TF|K7NNz zP_t;3Hp5ZR{~F!X+Mf~(Aj)lmPq=gzM++S8CtoZ`C&0ZiwN04&S}j^uv_&KQ6mND; z*(!K|N`38vKggdB+@6=0mwkb;{_nr{%$cd{+zmCqt?Unow!-D(3co_1n{H*3^ZWYvnf^Wfdf2Ah@!Tfu?KR5!N|Iuv)jMv7Js;n8LTU$2 z4#W2nAjbAc^c;d5U@c zqqu5%ToGy*)|siKhLaW~MO0&KJy?8Awl1%+h#SG|{rB&#GVFO)YJc2@b9=?Xo^Ut_ z=89Rl#P>t=#zo{3Fn?OZlW%=@g^9Gyxitnqo|kSH$r2z?Rl1`a8r;l}2jrtKw=uX( z-KAoHlLLq?CGDCEVzMk3F2iB-bFT_-HVZ+p9ToWgtFg8}>V-VBZEp`4D%QH|H4FG_ zm#mX`ZkQojF8l))P@4sRl^8nSc)cre>2fUyQFdP$1<}*GP1BD&4TrB1*>xx!~*Iw-e-` z4IsZv7!WV^Yo5VSTZZYpxEy|llC~n1!4&=K)`Ko(#|)X@K;dXvR?)~Ptoh>GeWIP zHHt((P5yQ58w;nK(GSbV`3siCdME}L{j;AD3xFB9BKkW@q55NXYta3)m0l~C;O?-} z^DnI+T<~Uytqo&Dco4-h5zey^l|;{2in!AqMVUw<)vH!)xJ9wb56Sf&5P zFQd8Ug$d?+tRT9ZpIDRLmHLum=S3_;578BcjFG#v*XdEX)ZKZPq`*ItbpxhbA)D!E zA_oiI!Ip-F+^w{pCm!@@B8CK;I5l|b?a`W9h5{X;WE>Po@xh>_qGf_X){%e~=fAT< zi+gf3U`wy6?=;C>&yME9RnfvwMZ5T*%eCIv7|=0~L}aN}3s!kaBokm-+HVR?9e$n{ zoI_zGov_xM9=fFt-U|)^qdZ(hz$v{Q+A=+aAyY=AEI6)zcYyS*+sv2 z%{Ox&+N0H%BX_QmYp69`csV_ov6E>J%- zm_vJQH-R#>hHNAq{-|;KeD%NVF24)D>ymD#{fG>0e&tS>k* zKglGeIzDzX&#@#Wv66VMT2G);Yw2MJEJ#)N>k9smlTcr;rERQnk|PkWxKh2fZ&mpI zRRd*G(f((I{()TIyE|59(!7@XqBB$_@6%?d?(6w^h_S)LCFJ#}3d48*mIy;CQf}SS z3e`>c&=6v~PebW!Ti8V;5zm<2cj5#q^^rFWO^BH964!kS)rgoEbx*o=L=uR~Fa@{| z2Qm)*fH@T~+i5Zew~O&guAk!YR;6r7t9s zXj{z7IGch+^HLB6LUa@K#hixG@@Bis+x3VpF z2yy`yjshLm+d$lAYSlAQ_DtJMW6izr-S;driX&gkk7W=tZq?1q=dere>pEl7 z6!>PHs(5kl_nh#jl6_NZkz2)tT~ddU9lg3_O>=AD zri;fmWB2_9@cu*`Ucxxv~qF-;U`2j@{R{8S?t!Wj$D_d5@-9=Jz5 zrp#Q_+Xt7BKZ{ELeK6&R?TZYvoQ&L@n?naL2LTPj`BPG2OEth*J03*qLSqIklkV;B z`w0EleznhgG;^|mta;`KNdif>unCbAIEK1gomfr365ON-k&^poNlgp~76(gHjI7Kx z0lw=p`2XuXQi*6e>je%(;iz-+&_3lq8uj_ zE2(t1b*uj%1vhL?xH6oZ>!We>^Ol^dxLi~i^$|=a{V6YsK%ffBu{$pT?sUVaEHDmom;s*87WVJw& zCyWqVi!gV7!84NgvoZe4&mRc`PVH~v1X=!()T#po8(fp!5t}Kf9aer$$@XNBAoWoS z??W?6$&n~BnoJ65mx*i}v*P(Szog>x8`wKkYdIK5N{g2{^6~Z+(5-QaN`T!EB0B`7 z@Sw`c%q6t6AET@jZC2Nr-Nq=0uL}ydAsJ<7au?%kLx)#%L*K#M!m(C`pi1ik8+4trBgH+p| zNF8CUMo%-sGoO$~RuI=NQPZj~QyuOen=)h+{If5lf>p!#0Lv!oZZxYMaf!K1(nxVc zoIpkaGJ;GQ*^y)Kzot@u&?%~+&J8KIh3>0$_#1xzyM=pcfT666I`fB?H~@0dzVSGE zv&m9>D+5^ikx`f0&NhA-c37GGxeT^ANZZAwEgXSn+dgGFK2@y!bHv-`3?#)<&41eo zz$Tcs0cB@uQ?wbmnF(1+;*NVbQyFMfgcMk?XrSdNH5LW9u?;gXI^5TprN>^RCSp;q zeKh5ed7tX7|NFPD%Lmqsunv--hs1w05cT!pfXW>7H8;kuIe3Hd-*$CVf2vQPL8Wu_ zv|f4Wtd#SA$(+AQ1|E~eP(^n}|J*ubtcc7M`1`U=#hgakcONXPDM6MJk_~QToCor|G#e}|x@im@QeJeteBONiy-lKZ|^w4%yMKzN5{=3|JKL&(@np!_z ziKcc{_R}mYJFwUdNf03m%AevX+BuX!mkLrvO}|^0H_CeQL?~peQ-jeq)H2wgAJkZ* z@M+EEy=4}DxYNUWzR~!5>XQ=u+57ds(WYO#T zDd3GsCt)#&ZW(kLACl}%*zhwGk%1a5b4|wj58i0@I;0);<4w!U2c^h@+Tx?X zZ;a|X0vNeyrF0l4WPKviCT1nGj*U%7vBMv+?8wu{F*be-y_(BshqJd~d(tT1gP0th z4ttB{xaGZS<4IT^8R>I3o%x3514<);klR7&{blbdcmLmQ? z3f2>al#68*@|e~q6(Av1zWq~oK8le!HE)NXHu+Us&o5%qaOno-X1N9jR!`2bdM$5u zJ^FGyClhvjO6V@A>Dl(||9KW4wY0+T{vwfmQ!_DDH?zED5bJ;{{Jf_9$#j9`<|B=+ zl1&>Q3FYNcm zc|@#gcirD!P#G=5!G>+EN*Q~BKmR1Qm>D-MS^_6cdu0Fo1QZNRe=+v9-M$WA!-^O& zYdrgf$?}QQ2%|G@@r21DC4b2QDWTtJo=Jy!2{%r`&i1V%fbKmxGm3J|J1`~U87 z69&B>5!N>K(Fv7(-~+?{wbKnt7{Iv&U}b^IBooM{86uhRD2T zO5r(&nJo|q^r7E+wG;=lF}lB-KUcs6M7v)-1%3mZ1p(c&FCN#mY)`3Vy0${x@o{e{ zR+8eY+WbL>k2aGQRrEsJaMKFCkPwt)LvZ4gAnPTlAx18UnXw5@5?8>Jdm*xoz^WWv zM=i0_$gTE!{aQ9)V}G8anw~Nxkes&@$=-df4I|z zQySp!!s0?X9q5T3o|Bp=JQ%Gc+Q(5@0_#^SEy@?;oOFd&V*k4*vtxWQdUq zA?l*&NGe{v(=UbKIz-dUV(MMYI&EyqI5a-{s9ki!PpP8G{aLd_Cw`BmWWU+4fHs?N zJ%tsHllcefdr{G*Es*nY`g{<_);Nv^$I1Oqeta@dx9sOU!UMqukzKlDL1}wHrg^$b z_7(bs%unrE374@41|3f12ayonNN)1+uV*x8BigZkvlLfe=$IOntCgHW?#fQ|@~aFo z1(+nCKQ9>-A76ZZ*eTVu_FgwT{ML8{dr0ZOJ3jOsaoLHmclf*87e6p$W1AMLuHfy< zRLnzRSH$P|c-5le-eAbFpM|wKr?3gRyAQ3hS!IvjLBg)Xb2VkaWN0h<=XL3&C6vN3 zigjW%tsjnXBXIOw|yB`FMfW zAPG2|=`sAzx`f!*oE+#1;8XaU!JZihayI=5EMNb-UylcV`IY}jbRn{Hc>{JnqmjL_ zZGz#nPFwRssx)~@S{Xt1Jy3Jp-QazuA|hgAs^fE>8_`L|G=mJwA^v%j^zQ* zYV4qZ?qk)Wf?S%wm^7pGzOt-1_H#P6&MRO%naKV34BAa@6x&?nMh}>!p7!hs!*j@r z`OHnqycC%b#Cr=9=DiFtc1b=sOdzM2eQYOWe_)_(C!z6sx7Yq$#^~3@ z7bLCOzUY(c86CpQiun%u(0_ta&K3`gR88ueFr#xwqdng1Ms>5pwZ~ws$3OIQa*b++Cm@f{rQsJYKx|#qxm!(;*xj3622!U8m(?Dg{_)ay0Ga9b=rSV)5&`Uyxktj+0%Fsv1%(J3Z_IRXUE;kHpY@0rlz1O_Q z2sO9r9&D;c!|QGE)?X;~*A~_c|9V?Xgu5_pG?$Mjp`43-llEjaw=|cL(p1+$IKJG7 z6)RfDP|(UWKH`NO3zmjHKDfnxzamryvEO*0z3MaB?_b9VgSJ~?Ys7JNbxpb1j@oNo z>0=D_l`@DOe&17-H}OSaL+K3{2z{(Qlj18>Bfv7gSA+oUNg$No>#t9YeTO4&px-t_ z$+RePk4CacVS@X0-ORa><2`B6H|=nT1|Du5KA*`7Z|i3)=kv3)ZUMYB z@_;zY=zUgAVm9s6qB=r@v0}ixwz&pF>#!5lr&O-AvFd43Q|^qbmhbsdAh7SJcjeW1 zMhgFk7?3+`)qrv2-MevEJ!nA0jze!6obnn}L9oL9ZT!}d9 z4d2*a68N!9Q**}roeJsxu;+cGxD#hY9D?WC?)ETx@E}-v=(_ub*ou?4Aup2En+n_f zKt4W;G4xC2gx@O;-aE5)c9sS4v8|YhUDD8EgL4*S>sejGhwt@&NEqWA5zv> zpB~RWcWOS9pMRV5zwCQ?4I-nYT!H{3KxYYa_y4Z#b&eyygx{MmQRWhCoVSaZSe;<| z=o7R;zmHEMO)`ylhnjo`{AE8>Uo^YY*IahJ%ylJLec2f_wZUJ0X;bsP)AXkXzL8|X zXn(*5K^MYL93-Lizb37lZU23#n5S^QqCmfg<<7*qz^_;A3%CQrb;_XDFfYOpubmj7 zR7{w>T9A&)nMntx&Z^Wwj9UpFVp5NPa~|9+u&zVMw2@U~@e^{v;4A-T$R4i=&1Jm@ zxl(*P%b%B80Z|y?zcSh!%^%;S;y%mfO^z=g7VCKYB29}Eyo%6R(dWIJKX5!uXS^ac zu_$!7ndRx%2?AfoK0^TD*8A6YSD_L^WC3W5uo6bYmL4AK#!LMRUoyAkbJI>q{|C;a zEQ)8z#H#=05-ibqxa2$sbf+bu@Bgeixg`|T>(}ZzwL1RLVQuQkpR+aYPyl`ReVdac zQ>Yy-}S7P>jVtq+61JecTKIf_<=mRhE{pQf&=i6VeCd z{RmjA4*3+uhgX%T$y&i?# z%4a}P2dvukF6gP8va~i(pMWX5YeMLZ8+@3?x<30!@BY>5O#QAyNqZiso8rQMuj&;9 zcQtg+SPE(i7Y!PPL|v>pAN8WKz7LitLZ@UsB_Abjll+Tv4}nbr=(DDF8{tG__Flv| z&m;5E9=bpBR_sRxSd$WejWi*RLQP4g9jmfq$3ah_8uEp<{g6nA zdT8X9XbLh+I3*j5Ax2w?3wvkpt{J#~-plgk4;+}e1Mmtt$EVE1#_h(vH!kyWk?C8e zdSIU??o-mkn&ev-TQZ9k{gxt-Mu< z?Y8z21>Y>x!tp1^FIQXOaxw6T$TN=| zxM~2%KeurcPVJ$ZUPi}`6R|MS-(8)zt*%d~?{#R|XAuu9<@O#PDw9Zi%xtX@O(i-2 zz#WEL*l2;Fsp}_p2ehwA6JpHPSe~?>2c4?DYU__!f37&hzn!3~a4T6KW51C4Id~Gj zc)+r)&M2wPL|#m?k`dwP*G0N&3;glT^dgdM9Wtz&v|U$HG!en6DJQO}uNO5q(%3m%fML8@EVb`jvVYF`T;&$zHNMS9 zPcH|TOym{Q#Dw+g(uBxUKmWRjn2i1vRncy*dIIzCQOUS5J{()CH-C^6oUBMY!DUlQ zR0`o|)McxH)8NYMWB*OCE+)_@{S)No-hg5LJntLl)mhr}iqRhKPEigW_`dODJwIxh zGxA}is`k?R&g>ZwHC|y9E85n>L_OqN`>JgShgUcAdU<}dP%oj`G)Xa7499DtD-Wt30^NJm z@@(^dNu7=Gx81k(1oXE*et3pWokqlbPr749B~6zZu3`jCMuhVLJsTm}e8|-Ydkd)P z+)6nLd3RsX$4P#v#9K4;%`RG)o?H;x8?6FhIo;kHr+kye2>7VO3XhEZSWX$lK&LUh zKcn5XxY;pn4#(ZN#+5e8RLLq~@dZf_^!llu^enzs_ABp0)GEJ7e5Yqv8;REhT8Jfd zAwn-O>dY9M1snV0cVY}ododCd~Qm&XUKHvP#TZfP;d9QJN` z#6g}MDE^k$-D32IBB{lH4^`O7iB>!=b3FHX0=-N}8><-?AO8f(B+Hb47z5jnASEU7 z-~yKFTwrIHWytPU5{;m%B)0SY6vDdW=U;{>hsK+jHl~l+GT4l!u{lr3SlnFpWi4nJSO*}CI;?};G#5FmLdf? z5BBs>=-S_AvM)NwA9WJf-dnW??N6CHJ}Mf5tb2?l`_3slR!kRYe(U>UH`_V%XM|La z%m%xI-yOlc?a@lW`(hgzhaDw;zdq!NV!FM_xxm{=4Y5@w5PTHY)y!LxU^ee zcWmQ$2!3^eU~kyQqze|Fg-Z3()#oMk?IocvS+wk-~420M+fc+tZNOvPP^6p!!q!Qjizc^?ac+vI}gdRn6k(;T!n5W8Hp6jV1YDSQ9SaU=9S^8lVWq$EOMg3EmyJ@%cf-c+~ z?Znh?Ti=(|iwvsib+a=f8TuQn)JmH2r0-#3@K`_qBd?VOy~KIl^Tny|B5zGSSSJ~M zV#pr8zMTrssyilC)L8#JyC({xmL)athQ_;n-*V%)eHX`@xNVkPrOnrn8H}CrRHGUk zzUOt3WBhgWaSq7WQ-z!9&hxG34Mu^3D%k{AkM)_? zK_~V#xDur}^Od?ir6M0pRZR8sdgtx=H(nS+ipGzo=duW^oKV?Fo-29 zkPFGItE5s{h1J5PO~adr#{_T&*mT9vg_-G(tUp>NMy7hJL4$3w-y@LCML-c%Uqd_2 z*_q$wqu_f(%p?6;QER$H^m_wxlDf(ZivD!7{Zx!7JR%@HR;irc*tBJ$uJ`f12Wpo;jZGp1!rhL$Dk6W_}q9&U+!y%m+5esOPZ5n%mrO^Szw@ zPJUff=`Eru_&uTcot9}f--MM0q0_xHd0kg4Z+bcn;>GO`7ka|`boH1+R>gwX$f&po zm>#*~oUnr}6evV7abv{-ph`T5@GURQRSk&xJSmO7mQ*3s&)4ssfC#=K3}PAN=bvPC zLv2npUdUQMDOvHp?@QmraE4#d08yEI)0EoRr^QWM{2ozQlymqhxfJ7tniyV0y1gw> zIPL9!>E(ct7GBQ~pwqYP{q^k2LnwtPPGe)Lo=bHO5U$`vzeBx}33~)Kl&^b4QzM@p zJtX&ck8_rmmX9vv&I{%DI z;y?Cv$S~;nn1aQz)FzJ8I4~QvCTx~}|N6khvFs+6406LR6+4!|f!=T?PbjI#=k^rj zm1zm+v2bvc)BhRaTd=NF=mmTr>3BE*f6M7t?(CJ?N){Bo zZnW@1ZX#QqJy5i(&RGS8%?WrDuvvr^MNRUZ9((y;ZxIDrePTgv<>D;|FZ z!`f>J-Gu!vG!1;0{JN&_k*ok$TU7rJU&pg?{hzAH`9ayRkxMS*$#V2S{%%p-q`Un1 z!a|2wGL7l4n!F!wlMFuk&wKPykKz=?@X_iHf#=P!p8qFvYMl>-ttrk}xfJfam$cK1 z=C#@o#T($fdcf^n_jT`0s2@C^&U)ULngHF<0+yiBX0_%DSo;4~rc9qzkoGQiw58hn zolg~d69lu(O8opB4YCF|JsKZAAm|uyYrCiupC-{VBI9i~qBa0^fUHm;LjSCvS9O*4 zD~qrc$(_m{dNY`%Dzd+m(J_Kt-#{BQ9QQ`gHn_R_)Wrjpu`NeF zvj;M}B7(Zze#q?`j7zd7yY@UPymA~sFD#%co~F@6WBPQGc@+fxWJIwVihGzJ?4O{ZIatrTxC+R+%w`#A5 z4d>@Qi8UVDIA9y#Jf(XOMNdM$etV51>{!)KE2pnEm{d$ZB-ZJ-^gk_<4V4eQw}!`@ z1fRG14Nq+cA%TsUVVHIj<cSs_W6e{Rj!rbR{yDlcbKoHF)4}V zN0LwN8NZnym0`V3d5zbXG<#CyxovZwe?~btZZ>$154dX|E~K9}uA9uX6^?w1k7Qkc zFpFuh!z%H9D7=lcfRgznV*IPBj9a!L0CIyd`C`e~RWu7Om0flzPMX@P5 ze-%h8aWQ(84NoMrIiK3cty&W%=n6=TSM`?&Ui-#T2aP@bY>Da7JQ#jXOB4XfAl{x< zjDw1L#M%#E<@?;$Iocnb_MIf}$RYw15L!qh)geiPtVW24(F?U=`nNkn;-T^Nh|sli zhmo=GgAO?uf!-Dr@Qun%wt7F=JHgSpwUdZgyvIMRsA_eHzHBq3MN6ASDMO_a+BeiK zZc^}YJ7AL}6|`AZoU+`jBb_Is>4{7dxjo;U~}AJ4+W<|8KrQ|>FzQ7;l6 zMdxlwOc1zY){O`eC?8wTNC8($KBs9k*THF{ieq}z+v{@e+3rirbabtv#KF9D@MVQ8 ze$hWp=)XDK%|7>$qgCWa4wD4M%<7b*_$oZkbdM+5iK<_w-FuH#=+TvNx-LhQ{-3wd zVVmmh7LrnRKFMqv;VMCz9k> zW#MDa(C9$SoVgY%LY|)T5Ps#c%Fx2ldEY7^<}6D&_6GsKra-b+5?p{3g^V5SEw?2Kr`?V@uF7U7NY z)A1?*i@ytcSNtnh@EF6aSF)C1bF?IsA<($wj*pVy={OF%Blm9OT3i@^B99Q^U1mDE zbHI6?6=v=6kA83W8g9w)G(^+V_TjIA*Gr&ZYOn5idpgW5ey6(_?0eCG1>FhS#!aLE zUAm?SDJbws{re=<4%+vN@3PR&k8NF--x&~y7`7#(oQTOFb%#*0PXCMNu_r}8p)kT3 z1s5Y07eC4F-qDdid%i8nvw&*Sef;7Kejo3Gb@hA1JBW-k&bua?i=A&ONqL8b^I#CW zk0ko-_W~whJv;47|HRks4tVw0T4fSX)BMdOuuCB8J&TjZE0*Jv^*&XE`2{`xQ^D9& z;x{{w)^B_sg>T0lNcU2ZJDr_(QeI-Zf62uZo^NlZ&d&Hv4AD%)zVWT;uAB{eqdFiy zcWRvPc<(y^w=OwY{CplTYi)HV3r#~f9o;v z5lkj<)wo{L_JAp$8Hh#$m)c%Xc?aH;{Pl$irDBE)F5Mk}ptD1SuV7X%6k%+`eBM)g zIsb+)q##Ds^4fDYFf;f}F!RD@h$(1Lcf z)SVJwiKxOKpub%{83x+ZJr>Q@eIG(+&+$N#oP71t`|V<^-BlY#Xji0LFR~QoMr+&G z0^&s;lYP?g;PPz9X4R?C>qzRT@eNmtQ8U5Dl~uz8o8+xzV&}4od6{nd(MD#3eWya7 zus|nc4UhSg%HiHMPOZzYEfr7=zrj*W1~V^>7eJHEg&s1wAA6e^QgxGaXFF(S z_RiF+>MC1h=|jItsx`6R`4ioM_UoN1Qv!IdS_N6Ec_S596?bbhTodMv4sdA}4jsF8 z@;diES2W937Rezy2mNd@d6)3bBS(o%UgG}z!7j?QcXjyk`8z|z4Zy&y=CXFfL3*_o z{k!!XemKAddP!gi>n3Up7~zI8bvmS}`^Nfd_(jdz7g=v%p&CEB!b!&mXAdOC^LN3SbQX~;HqNJZQM|8(fmdK~){6an zXe#~ZORx-9;Oodj;mACP(OK^(y_G6CF~@0fpD=(vHE@$$^!&U@?v2jYCW{o|M49An zGN57}V0HRF(ILMz7;=y1nD5M9@hiE6SSFmgV40Tv!}vEkboTX33693J2&8u}F)rph z;C8y}*nqKi-e3HzH2-t9Je#?;r_MTo0dHKTmMdD!{O^`u(9{jW76U&NQJpneaky|+ zj2Pe$0L-( zUJZYw&F#tBZ&{%4_ECrKni?1}qf}@scr)2CB#pc|P)5|(xs7`z7q^Gh*a(-WQTao1 z77%~F{!gk&+52?2gA$0K&P!+S)f zoVAkOHGm@S{ppNZ>FtYjA4QGOHy;i3-0m*NGd^j2)j&JjeV(p+ zfaF7qP3!cY`ql86ih=5AgS4mhwuT?}ozvS(@*gnVO8FrjCoCX7y#JD++dMW1Z7H-M z;W!~y?jfz;6l@d0AIfw@x}N_U$`NZ>Z0;JvQF!& z#rBxapHlpADXMTsLL$MZ8HdS6V!6mVM9TLMKN`^4BeavTbynZLIxR@hg>{dJ#m7n^ zf7Ovj{OG_O)YM;2hsyWPWIPcb)imJjZE@1%?#6YQ_+(G@rL#74i;cTWDfSIp+cwJN zx9xmqk|(8^>n1}@vKd{H5sB|<+h)APJ+q&?q~jM;3PJV0(bf#^JMu>Ho{*5xJn}L6mzX15_H6(Oot>Tg+uGXx zMgGTiBOxJSUSf38;P^R%&)w`}M1`=b1$?m8i>zuwxFxG-aDA16vap&$C~(2;+Z(q^ z3m%KxD;8KRXg7Fec+RG+1c6;AEFQQygA0o$t7SFWm;?6{X?;bwr>3eE!fBmlEU-dC z5%)>uw8h>;${jSp6OlecXueApXqKV<2k5lwZ0e z3u?bisQX6;&g0JxHJ7|=-`Gr%PvNe`9mP5QjXeJO`v;f(@(&LPbBxbGS~qtDg&p*~ z^vqO}0X%OIuOq#xsZZ)zM|=n07lM_ZzCt_~8fa1jJTByXsQygFLmAnc0{3fCV)fq- z@%`)WCk#!_;Gs8`fwJCEO&T+HjzaH%W>-Qy;I`(Vsw}!()`j{>5Juh5MMDp@c+Y+&2PjXI=PI!+k3EkOL4kHODWY* z0g(Jo`D5{8l6yttgo5$CQ!07)<8ze)oEV@ZsrHb8QZhb237UX%Vl(_c;dQ2SS0wkt z_0!8;Bp&v}t|KZ7RC<3{2Rb>vmY*#?0mA#6Up4#8hrT_97i!C(jrZZvZTOX4SHvB# zywe6Tn2+E8(y*&?($OsrSp}d}^A{o$1Mc=`=a1vz)135=s8yK1MZb6QT%h+5jTVQcE#=Ge}r{C{0_=J7UF$7 z4?snQpg11_kQKuNY{~zBdw3qL;@%@wOrEpl#NvGxLqnQ<|K+hlejLf2NCR`7WD3H) zD35~=1@_616EqI#fPA^SA;^!@@Fuy7`nf0kGGZ49%gYVLB!GDBIw|Il$3&D~ zhlu~n>wfB$Sv+@+=XBo;cHDm+{3oA$}Vr zhfq8|xl-e}f1=j&BsS27CIA)}7Z00*8wa8hwSjy8WDAbEjzy(p??G~rUyHqNvB51H z*&%o;E?lEMZQ!R3T-RnPjgPe38SMl9;6GpDd;pu|Q_t1$_)GPW1dGY9 zTgM6n9hX%xkS{h76JN#ZZf*m2e?G?FCNlJ@x%6ZIi^uKHKY8I?UIEZ5?0f+C{$({J z`@;Sp0$qP!vw*hzxg~+Rj>jNbF%%Ousbu~V|2c`F81l9jL6lPQ^@MTwko$16XG?yI z_}YAuDoOgpU&#mlawY&JpUf{C_9K@Z4aeK`HOaL;Gd+)oUtx1=GmMz*oSpH1q|$6$ z57J|YINtev#Lp$+kAL;>={Ej-)$srbe=Lzt+$73tY_|U5_fQVYk?99x}hK>KX zHgqtp9R@HoG-Okv?*S3DG+SzKhXefNjjnuD_D(c}c(MW7I5s=<)T&tSD$8%vcq@*( zO~;vst>=>hUcX)A$rm{vz-D-Q2Dtr7gVV(GOe06?>V#|LOhstIAE zaytr8<>)HR&?W+LsK!?+qo}5<$ej~;K#o#_JRNZkh%RDrB__#YdAEw2PD&MI&}=U= zgan#f;lTH6_}ycz*Sl+z0Q0LFw_o0u-wvhi#f|V*B=1T&8Kgw1zu0Buw$cO<(kcOlE<9J#loF(c#B^y+~JR7B5~@MyLV<1 z&(?T02%=VE%l{V^7B;j3V8dI_!^6XNa)Wz7L@jUfOwmx?dsQ(@aA-)VwBegv53^BQ zGA$7K#=0!8mAzPLqq=y)*sduW^EYhMnB#l^o1$hqoexfF+;Npj#`GzqC8=dukdsyYlT1I>!z)KdDJ5X3%M0;VKQtMo)qzzqMhCMVk%ypCX8(QIU{ql=R$G?}y ztRt`eZwT;oI^5ykomj;`{L9Uo^zV&4JGX+HhkEdq!HNu<^MAuI0Hu=evm6Vr#aszW ze$FAVNfQV%$>jM8jIf-jzDPc$5agF<`S-^=wZ^foyr24Y;uoQ`Hy}L&fY^q69{+s# zK9-e!S^3&SB|!SV*z3oZR`7Se!%6=(%l(({#7B2rmS0y*j(Z{a4|fz74b>mbj%DtC z)g;JIo=_y}<#*zr&Q9ZB%%21iwU#W)?yFX-6WBlsn_$BE&RcqXR-In zm9)|7t8Hkdx}ZwB!6YfJ)chTW!< z>x;K#=2D3s%VuW>P)&L?%a5=9JpS`{OXlQ07=lR+Bt-*SY=4b)?dz@Ab=p&0dM(Mm zC-&R?cdd(rSNKN;`SLaBCU5vaTU!tbsqR}INOx^jmT3CV_Sm#XHhFQ1*q{?}dt5w)C&>FMd~u)#K^)olKN zJq99b8~1!^3ntIVo=VYMTFYu7xmZwb4H zTRRx)RFez92M^Y9>})(`n{FD(>(IIl4c+qN;V1Gzqnt)fm!BcutT_L==+PA$$=9tX zjpx!nm#OJ=3cXjeRl*s))y(7H#@OpJ@?H6xn90zQ#pQ}~yQ-5}@ z<%54~ensPFo}0y~B_9CWf8tp`R4I6o!M)1TV@94Q$^82gj{|Y+ypH!J^9IOByA=E@ z8D#rwX%a!^5};J6x82_-j#1&kIH9SJ-Q=Wx{xglw2&7d2{t+z_BJOw9Fk7qII-x7Z5I4Auh zYDMOleh8ajvl0LsI?(|UU7Y!v!u~(niZe^GBs#`YS~O-g(n+nfXl$pa)CyyA5!V$r zT%$V%3=oqZX@AAoJygemALUHfo5dypKJX`XbLj%$BeFD5A)m8k@-&(=hr5^b5c^@pxpZzO2-|j^!OyU9kwY;56WHn{&*LXR&as6d;v0%rIR>LyW?t{JTL}`{|7Y=wU#iCR&XWshMKY|0E;cAUe|(9k{RDu)3OwTYQ?85UO+Zoj5zWR^N0T=3$9 zv<$_qSXLd|LcVuD_UIL{kxGJuhIW&9LKRy4#nQF{U|T$3ZYc_qn2|M_#{BOMGg5`As(CD@eZXb1F<`Z?*K$K zgG!F0#baVl1eM-zZ%)=$@gWBPo9h0ZJMrIc-;QKQb^EXXu){EvxZ^b(#e87zzaQyg zPbJ?QFBwkb_9HoD?o+3y@#TfqIaMeTC2aZseb@w>)>l)e9J!9mlTz45M3@ zo4<#pz&!aJ6hxv$xy5ySpOEfPA&-h`R}>2OZZzyrg40E6|_0-7#_kyS6qp5@Lx{u72kicpDOXU z4M_LzhMiF!(~uS*`R8y451Bl8eEu{ZIPofosAWC4u(0q|Y=TWo0QC0u9`5Ps`2`SB zTlu<40^If16^!=FqG>cVRzr`jlQ&^}Bcqv# z$HE460PUc!}G=mL$9}Q!GC{h6iqq#NRKqicN&=;lc@6yU`Gpe;_}B|4F~7pu{x^#)`TzB+uEuDkQjWw$ zvO8WjWlSC%TUo|OUYkHow`bCjs2iB$#K)@D>MSIt zjiI5Tedg*O5K-Hxttvcag6yBXaT)zRvCS=K+Rksg2EI}aEopJpHFBY1kE!Ug>8tNrA5*J(7%qbPlpk)l%HbYj` zY5bF;bLP9o;BGVhySH42-FER zs~i?W)WQx;Pfs7fCfU>hvnByx2Tk1pB5EtPhy8oA8ScEnHZY2YxpI~FzJZdqZCt=E z?-z}3m4rYdFmf&R(6bgA$YQ-LJq6g#EgD;T6z2ojWKYikM`ktNby+blK=Q$r! zK|FQt1pZxZ2A$&7l_hLd6^x$ShF4Av;fn3&&|9gCV?^n5b{Qghn$RLPifNPl`!64N z>-u2?x)ewyDVY#gm8+LhVZE?l#)MHw1St6vACE^sm)sD)XZjnv&|k?Tr#-f2;rF)V z{r|h~oWPSO&w)1A{W~wm9mB(D*jvKR&?G=t>0d9%Mbmq+Rw6;}Q;o|M8~gd0SMbca z1rSl|GRO4?P4E9Y)eCBk$KrOA9={l$;>Fjt z;p^WU!&#FAm|CgfH_uL>)BNSi8N97Bj1fJ6qbG(;;znb~ke#8t^gfq!0V*91P~1*W z3z%MsLx~zD)kCu&A7Z~#favK5{WWuyBYt;z_~bM` zJ9`pD)Y@vb+J0LNk4>_v2>|xthV< zWlxj$=g*Jf<>_J6P4ePoeHjO;-^V%Knd7^^yIRFNdPdQY9?Z-Qx$=@T(;x>Uj`AiHuHDj(UT`nK8{Va={2&$!^6|&;vNuDTYCD{9=!j$6^st} zwn=GBztb=Qnu16a=pKFPoDZM{JbMaw(j)># zdV!m_H$+SE%33q*Cp$(u%fAemiY4NZl;pf`$+kj-rbh7W3p-Ig*B4&mXUaNUp1Jq$;H>#YbPBJ0PxGn$baJ>2tf~!@5}( zgMKX%7|O4OBv~O79A7@Qi2dI=iG#B>(B>O4pXI-K%O32i^oVG~6zhOm`+S0`ilk}7+`5dw8bevJo~*d96LUQdR>M6`Cp$qj{jIYjZSw`FJaLn0)DV( zG{3#Hnqg*s3tm346+4G(=FUSzMiM!C1xS|BLVTvPlHIWRfE1mU=NVxP-n+d;?2^Ct}4-?l4QHOYJVPWAZY_jt? z;#_j$)=X;9vLS>DO2Z(2DNfqj3LC3cCkOf0D#!onKSpbZa5|Q<^wX)Mxwq!+J3qgWs~& zX&HFhSV!y)UaKQk$L%#;#tkE|f&YuIj^fl@e;#UT|CoDOCsvp7YqJwLX)e3T7FEGN z9DExt%X~SAl6B9x=JEyHc-0)X_KAR4$Hi2W&&_w$`_DY~vN!H4@-Zaogt)PgycCH? zi2X_idU2nNuc_IV!>?$5=2tX+>(weg^IA2(POZg``~S1I{XlyB(9Kgy@wl|s{Y}Pd$!gJF@Y6J z!+-Jk_c2}HvTO@6&ua=`B+>3!vGyl%6+^!ViR5x}dt#eCDGQH{akvs&5uk-~UWDuN z>;rZ_fSWI?=aT|bYs!ZPd{5(<Cp?o*-UR&=?_@&0MKez-eQGNGj7 zPF7w}>{H1;D~At==U6u1gQL@<_=^{J;@F8nEY^CGectcU{=Wa`%yArEnn$;q*DF{- z9XC~mQU1vMdpv)x4@XZ9;$`!G+Oq}p_SB2B25517kqJVSKO?{0#sJF?!ARyBQE03n z5nEQG7go+k5PE5w^!C~{=9lYu^29lO@}+q^eDn;CEG(nenJ0Vb2%o$5D%`xKG)0x$ z=ZaJCx%P8x9?W<8!D_X77%iY>5&(UD zeG`>R zMx7=DAl8+^zj!RYTVciQ^RJ#9#*43R!*?fln4bTB^O7>eGYH5;mI?`rKUtW?7Z;|{ z?d*I2BdQnI^lZ)NRD=Bf`(%#!j8|4Gc8G)i^(d#&NHUB|1+;HCQWSFc{{t;Yjm;s7$|4&uVfQZ_Lo&0Yo)J{h+@NN?dFbxJOe;nPm3Np(Pq+eiP*sR?)iWF@zey9 z0PSS=Ah36*!uzkzaFc11U%l1d8~W0bPPUcyx~}zDkd%uzgpHv`*Z25(3+H+ME+4L8OW%qZLQsB|c-$y%rL+9Y9)Fv3^kv&R>7jM6Nyj}fsqr`FRy3YE zxtIt3Uow|0@oz78j11+y|HWtTzyIY*5S4cPH|$do$Cf6<->znlt#wTL%&C+31x*T)e5a5aZO+GG9 zJL%U5JE>@UudHTRINOV}i+v{O@55}hKkxO|$U@S|_5U`%jWiKpJAi*-=KJ~Ne-zot z0RO?@+uVErgk| z$=|`X69gy?Upl(Hg!jGlBIfHHH$v1-T4nM-ucZKwaA>iFXiSMy|mJlr%) zm{sa^^NptR<8cG!$AF|9Q=`cQUOGt(Ja;m~2mj3g=9gOTFi3BbO$zvAz%_#kx9#Z1 zu<1n=ngHJh^sDs>&YtTrw-pwbdr({I$$R=2YekKDK5?JhMzbFN z5L9Z2vEUi%=09j(9RU3HsTmwR%TsqXb8BS>{_fy4@ZV{j2liR=rB040t~x_Oiy_v2 z!nGnHG`e*;uMDtf6WG$bis3Cq;$>@p9X(kc74svHNixx}Qn&j>hUFE7(@Vh9XR9XI zU&j2Z&V&A=i!1Em?;u~h@dxtYzv)>={B=iG2$dfTLzECF`%FeFm6u0pqRQlPg)=7T z|FM@|;JAOH_R}(x|9P!A8`hIx0)VI^OwMQc`+u?pkG}t`=%i^{U2)b`Iml`uyW(Oj75}Vo$M* z`wZQ*BJRFo-JZ-&FsSpn1#IB&mxtT7y?t=utoaPjf;!KGSMD^ye=$5PRugG7*80cq zv%7+D76304tHsCk8U-!!Z=-muwCpcUzsBI7s12F#|6^z|EjI|Zx3~9sP6kNSIbJwj z!N`Edtz)aP?G&iwnhGo#g7?KK$Z!+tF)3R#$CO>;pRV;@bevr-YIT`Z6C%#{H$ZUL*!Gkyuhq zmWx5EPJ&f`{gtH^960$3==FVf`7GYnGlCtNP0;zz$CunA{`lZu$sgsa0aX5Z6|=Q# zcRel#_jwlE2nUFK->|z%hID&=*7qBFw&J#4~3XY#sp!PRxy7nKraXWVO`tIE@$9qWrXkAA#OT61RWMztM+^19w@|!&FpTln? z#tI6jm+Sb)$B*JH$M3$Ox(Uj^vw8;as%*zVmdQL|NCp-`J<_1w-6wB{<4nGCJp}TZ zKMuKNGrw)P^)tJStrjrb%;IzQS2EnvKb)VzVHqs_?*zO1dhr|AT!DU{D0KYUXNnu) zAB6HX8O=8Y_-UfRNKz^o$SY<1EQKX>9p_@<$MQQIQ7oemyOx{P*j)ZTrc&R0zW2vc9C#E;HI! z$D@Clz`NMc|1$Vt(T>AaauA2t~bri`1?b`Nr zJMEuaNBm@P+eO%K%e~XTWqR?BuW-iy^L4Vmgx^^_nqT)*EBHX&e}3Wfa-T;Q5{%mQ z+83Xr3d<9Sws+)21$V!_7{l1CmsN!RD9_B^a9fFXk`iT;P12glha?0#POKkzyUm1?K~3S3kI=AOG_W z!^wUiCy|6K-S?ONF{NB>F4Cld-*0R$pi;3%7!ZMh4?f+EPz8WceR8;3!*8CP2E92i z)X(6$%8==G?+d;7MHK)-6+jH!-Nb!ayq=H!2gG=P_nBoXBn@Ik0YtS2(h34mIpUKC zKQgoxN0t^awam(nc69&P4*bl{?Zu6TPI>p87H5}9A5wUIjgKdBzu$qIEo$z6_{4F1 zVU9^dqIPBewmfJ$wGX2OwQK^Qx3_nSlK~QSo@b|faP#GLyk&bm1Yw>$f3gVQpv9y} zzO>)3StJ2uXyzUl!9cOPg3K`#F<-1Tu>an^dj(IwTES$MNq}~8MSlgqcH=09Dn9U! z86Y3vNf^a-;pPM=9{8bwL40lT49=|b zGj1n0o222dUu%bP#N$G7sglchsAwMWmyadsa>Zlz(M+j^X#+y?T8rm4*Pp6Z@e8lL z1|n)(Ejjt0*RrkLS;JhkWZ47}U7WxF$6IjhOctYY&$YJGW|mGCljW2;StgeK7R!l* zg3AJE*ANq7ALQ)K_VU2KCF~w%L%yB-(pyF_Hef!>d<<`0^x*1HzFVC7&5!eU0l$gl zZ0~L+X6!GPuNMI$-12UGe<&XpW5UDs{Wil-u|NLfV;uLt9?oDHzg0boWvxp=y${^o zTmYG`2(W9_k<8Noap{K$_+I@C;xqKg1SI>BzaEnb#r`qg+k;Q+90RovJL%u&uDe3~ zJ&6<4`o9}-jv0kCdn~u)Pc19H{0W(wPQ_CLYOzg?V=K$}Ex^Ktvs-wyN;VD?Rv$>z6Rl6MOM}Z>_A5)X9Br7JsDk1cYASh8~+JDGx?z zaTT9uwBPg$T~^2A-|YdlzQ4PBD}H>eKfhkY;=ZRo4*LkR@@J)qV|<#*)yQ za%iLs;edutlcZrKgDxMiMB0<>TxV-4kfu1zO!1z zJNrg4nq|p2|13=WCnogEVo!b1;~$d&{`2?4LLdYE(vX1A5kDsJhXck+#d>;`Hhb^jQ_WE`L9zr03^o+8T=RPH9o%vke*4zZ%W}a zCr{zw<0n8w?alQ5-)GNghZffI2>_lFkf^hLeY%3%u35&|pbW|p`)_?uO1Vv?(!frO zbwZ%0b(3Bgl{D^Da@+Up6^*&ucWXTPVo!bwLuwsLEBwx_!?zMR9^)2N(>aq z_ZOec5heS6a!Dnc_<8Ss-E{)0xIARC$;S_FKSOcn;wtcomtVu_RgU|=RF=)>@!V1s z`?l^tZVFeJX>G#hr~}V>r2YyTr=*9f2{PU zBlFA4WzFr$rDc5V*sG}NCRqa_YA1H`zx&YQ+NEpjNf1#-ny)GB|D(bD5~95nnn7Vg zCd7t3V$ZC9Fb4lhoK3)QONXWXRDepw-drt9zU?iy{zzXPpZlAO=8}!FR&xIhTX5yp zN)qV#iQS5c-{59&FD7?G=G*Uf(zbdC0Q2ka@hq7vu3qZlRiWftxtxP9GcUh}-<~;z z8J-gElAEsA@Y{2*iC|vz%0nkXe3GC~Qte^_ z!1!S3-}Sw@Kr)_EmRCaia$k2}=($m%Ul(CL|Fdh0#+C}_185b0`|5uD-RlNi54;XZ zoa9q<0XvdXTX`SivcCKq2)+D1CXn+10FA>$!u=?!3x4nTJpS<1JZNJaTRn#n)r0H% zw}>Q+oXk&@^M}a-<*EMUSp*OgJXzB7?|b-dp2(dtFcT95ii(3wJl_v)>BmyGioaM` z0&Ttruf7boj}DeQa`H%` z4$#u4{*&6GMQbMm92^|nVh)=7Ktvtsh0_&`^y_>+fHGa0s43i+ETv+{3Sw`IoYu*& zujFEJpi4sb>u$D0llnXv@1#IF#*X zvB$r(y=32$_dz_DND7=-TE#z@nC8T9n?Rcn_*+X=yk}qpTg4dwR6|dF4En9G9DFZ+ zv46-@{`sjn%~m-dz$WqI{`*CsA7cA(NJx+A zF~Jvar@j7YGE$()-vw2=9w(^DFODqM@Uh8PK}4OQ)ldB=wM}={tYI@NAfk@;@vm&b zv1%m^)WbC`#%;RWV%^x+>*odl(j|3T3f`pD(~r@N$%W$iM*B2A&-nm0&Ck894_9sR zJ@AMDSm@zZAzA4^j>gjd{Bv`?_;O;uxP0-r{X8>2u0QNcagGSNp067469*O(1J>c^Ah7FP zVFJ(xuel7g@$6)OUwrG8#iW0w_+0yclpjhIABojs2Wg~Y_VNYDlB?@lxVb#_5(L;*LdQ^9?-`5*|+rJ?_ArPU$^Dh zzI`2f>SSYF#UA~13_lQ02dVRDO}XX6V{la=t}LWH!@sN+@TUO$m(x{z`E(Vuxu#ZY zSYB1QW$P9Z_$$$KuS3~>xU{AFV%&eM8YrJyP+XVu3uI`h1ZYe`C|uLui?eza-{O1# z8|tBJFUNa_wzyJ!h+~78&%^ywt{Tg~_gN-J1H_0v$tB1?OumO-CI(6s27c}RFCWV* z0EnnFm;}K7vuDpvp-r?^0)VFkB6XEMyy6mGwE8DUVhQVk{lvQ*RGALa{CMIpb7 z(;DfxzHbDEo*&;>L}?xYZ4&@>%yB+|4fFQl3V!V!eX;TGqP5s?_gtf17Z1dSeg@g# zkIRX%{AjYha$>+gF1iK3etHG}^w=p-Yxv&MB5vs2iYraP9X@}=pgolG%iez#hX5q= z2e|vKJUI~N0)R^%xCsXp;^_gydLo%%*0I9^{@UmOzOk@~S8A*j*$DSvu{|IAUryxu zi9>xM*;-}&{#39rcHlNaEQLyb=YJUo38Uzp`&p+p_z(9F!tLueyy*Me=A z(<>0s#re!P`|+h0d-E~AaE*D{lJX6F-_8obyYIn8obkI*8d4zIb!nA=dnO%+43x`6 z|IywW_Fln;{H10~{vWxu53-Eg_pU-*BAliTqF2_<%I-?CWq=lYXMs4L-zN#`;W@(j z-=UGr6pz)s_D{OiWj{4l&M{9SQ3l}sn5 zx6{8t8mdWFIi4<56@Q0f(Lh-K%kvBQ#D7H8In4L_F|?Vs`%C1i0PZnYw}FT{+QG?Q z-1XKKjP{4wn3CY#mvhJVoJxA^{k^`oU$nn2Ev0)xcgW(qN`%oPJ zU!L{*@BQU0UR_!SwU#9lj6c6v!`~PhLZ2wv&&1?>J~{^#`~e6<4(vQ48EzWt!5<#yDc>%Y-TgiI-5bV>asNSS5L6`%>OZM1Q_&^?V2`JFfQUL; zZB^l!S9);g4NEZXIuZOAEpP3|XTvqzTsN>>PWwR51@uX3z~3m(_FUHxZMzs0ia>O9 z!1Od-rt$c9IUm5K@ISn@7kBQC?`;^a;XfF-Y7ZS}b&s@h$neg=EwS1IzSQ4UhR9&ueYgFDenka< zauoq^kJ&&zbCoE5;y*VGAoKHwXc0&j*DDnjDi7@KEBksd+N=3jqA>uz*T>{KB^7c62fOcjoH8pO{+2=UzPnYHi=HoyBFQiEzW#9vAS}^Y3h4 zs_)DHU4ZXT7Z}U^5r+jRSv8HaIXND{kM{q0Y_dIAT}EP#kQ zN?Z2+TW#5DT{H#<2e+65>pl=s$9s0V2P6F&w~mW(_i`AgzoKI=zUZI{kB9O6qQNKm z=AkZ?fQKXld{UuU(k2z&JzmFiCo{Y-%Si#(gB|z(Pv2cJpSOFL^O?9~!&-@qOftcr zuLMBx`TG4J3>$C{#`bw^%@^}VAgmu6{^5CwD^p8#{K^aSsA&yqea|nR!;cINVOwuj z925L7fDrim;9kS;0_AxD>`d@sqCXk@t0E~CCjs>3{%-qz7=iMWEfx1EH|NBUjP~P8 zC(mJimHX0qxMSN^JS0xHDB|^mKc1KGQ>DKPuQyyEr(=?!9P~q_&-|Gav-!k-MATW# zcmIIt{Xc{@)V3|wrKP1uOyheNMAQ{N^|b*UIpGF!``}DA&LDbo-K1M8+(IbD%$N1S zp^^cgTUMumpFb;fm^Ip6(PBuzf!mg_dzj-o*TcX3>pi%7Fr-*akX1~|XXTfw9(rH> zgnjvC=1$8d&hZ}R3&>(p$Om95^N)%9%IhIc{&%*nao>^CCSc>_kL_Y!ui$@qbqb4h zKe1yye&&8|0Hwm1{w(ZMhzSBeDWr;L0I0ZO0`atfF5u6at%rPH%PI=;bb%v18UC-E zcbH2Bx;S>+|F7)64B|^(6z<4{lHPlbG?v$5+4Pp|#ka@)_*lG*6Ac0o$w+H*d6~gK zQRjLTZK`eSR#^o=)Lra+00)ou;wNuhLSGmf9s~IhhzbmUyP#uENR)*r zUz(ehP6sF_1XMnO6i+qjCkOP;|LO0a#n;d9JnrpgzP^g-n#PZgZb3ZtUpzxdGD)C4 zWnZOuEOTcQ@nijca38h-KLh}2LMc=Vh&cu1nE`aH1Q<3+fGw2_|KDlO2XHaIa?_Q# zy1)3NpwKV{Y`8za^nWlK{!)lzNvJkTHjpfnR1)}2x`UQq#_oIn#S4=-zQUv-QKvD9 zzelI1ryoO`YU_ck!^6W9=HgxuQCFC+DSU6Xg1c@g#?Cg5?iAORYozHo6TB!8aESvI zCl636Y3u1w${B|NxW$TP6k>9~H0XD3(b!@F0?r5U=Ip;d!{2|qn`F(+>aW}fRi1%A z_TVYVAs+=XW*4#%uhZcJNK1E%<>JtfxTwbOOxEzbuW|ftyP8<8;j*j`HxBlR$`1D( z);n_Gl2cNU?)Wz$Ne`6fm{tG zoJ|7!huIpAFL4;rh4|>$2=2d1o)KER<8(~iqT&1RsD=2A^NH z=CxSoG|OG8#` zxOxBF#C?9eeilDlm2}j(9zBF@`3K^eAH+JYJlij0OUFO{t$Cc`L~U))eu9V3*0676 z5Q9B%^FsLJgA43cdR_h~Kg2{-2V`z;iTv>_U8hJ8s8YZWF$AGr?6+n;oA}zdqaVLN zeGWC|0M3gY_y6l}xg7mUi9}#p<>jk~n$Fqjm-mMa6(<2qmeHl{`uoFrjTwR?=W6)a z%hMpD&eZO`|5n>iTRk;3b;w*C0ugnUkN@#jOrELu$PMze07a~*W3R3o++UjBDI^Mf zvcOO9C);#>(kK~B`bnR3j3>k8s0n00|Kp2!l>)u7U%o}*nj!z5*F|6+Khw~YT2Ubg z^QG1P6mRg8w5fD#cPQx=$%HU@o0#y;&(aPNsQs_sIfvI6k#&q$mzVHsubfOy-&Zl$ zD@vT=&+lhpg1=%izoJq=jQ@9&3T8?q1ym_Pkgw;rD<&b-^<-`UyZc?;pW(M}+6H=K zb^^sO-Z+MlN>)nxq7<0B$zWBQ0E|gKjd&W_QgxV;mrW)HgikKW*=K-b%PaWE#A_g; z&SZQ4P3$>=HrEk#s>8#>FN0M8L|w(s2XN#>1$W=L6e4!5f$}6xDqN2x<2v;86_SbH z+#PbbfUgojSf(`YT>IiX?zYof@ z%qIwSn7l8X+E2+-3X1B1q%z1S3fx=*h-am+`(Kd+P$6lxd!Q%3d}fyO0lc1vuHAvX zBLnVMIPxNy2sV7#T@v_>HY$(xVm-fcc{R5b&bh08RkqP;I?a)ef$@MU=pQ0zt(FvW?hI$cZ^$!&z zKEN-sO(C!sj~9=L9)DF-j36Wg5Kc$wPcf+ckO4p>4iKtX;3^2-yRFY80G4oUk(DRS z+<)aZeDsPDgo*mffx9l1@k=r}D8({>WL*^=LmUdAAdXWCa_HE@Q>XETQ)fU#9qZ8a z^z?)1039<^6{`Sxufy4SB=Vqn&cw|Uyc$wBq(>-duwH{0(KvQgof zdcJQgd1ALYIULTPuG=bg+|u5yf4;LmVw`47`p3XU=mm8&&&TM)Y?t` zKKe>3WKWjcrn@hu^d((Z?$KqrLs={h+n`bG0o z+o`Q%f4oOU&1exMl;<7i>nut$#}iWVZu{6j{ra|51eq)&ue*z)rlpN?L+7Inj+1$* ze9t!9zF2#}aMOL(dz>WEN4BXr;0RmVr`-ZEE0v}+hYJVf;PGnotq&E5`zoy~J8(5V zMt!{&enczS_Rz-QQugZcO0L5lS27rx;*dLVkIvDX%u6=-()%(rq-w&{UA7FI@jQIy zeIem-(HfHFHeWCJRX;ftCjxfQmvtt1+6OmQMaqH9 zU1+}%M#PZ$P5ni89gzKzt}&vj=Wi!U4CTRj!#!=Mw~10uzoy8>hy6hMCguEu17Hrjn$r4~TPW!t>N7_cX z@If-RESIrMbEdz$`?9yMJLKm+9Z%|7DjeYRotFC)X!ZMe^_OqJgOz4&?y<~t>poP2 zZP)z;jaQzg)si3&ESo|zd~rdoeXd&& zqLwcPr>$Ul?WE3e*puXl&*C@(Q$XtzUG&rBt`-N2u9 zSQk{{#n%@ZL5Z=#kH#lmyQjW$vaD-%OP*#{DA^Ar8GV62e*7Rw4)g}!u9g{uFCJmkP3Gvjvn_f2y$*1w&`leh&U#elnW?-0HIH{JE;jGgDb?j6^zCk^r)5FXzt zD-L49Dx9L0A&%Q51^()15?4g)=6^RSPh-M+K#HK3(ZY%B zXi@Cq4;52=xY(v!UPuwE@6Xa-VPKHIFdFOFz7ZcAUT{)|cFSLnfq;038s=2Ubr~ud z$5Wp8^AJhWZoy9$HH%-fSSB5I);2GvI%<>35mg0yT4<$$nm*n%Pc&Y14$f^Gn?kSm znM#yX{l;j4jto;X6Y)~Q*A$r#=%KF{4KL5`rM)SxEqa)jXS1R z<-6{(VtqXe4VT_y;R;dqj`GD8l7sR>41I89eV!y^zAv3?^8CPM{y+!WKhJBbj_9mpXfnc?rznH|K;}r z&x0&WvX_t5D87swgg5x;YYfKtvj?G7*^-_mo*I*|><~ajeIIrzno8fY0!v=J#c=Zv zq{@yAn;^-Xmbwj!fwkDy%pTcevykbqeoQuqpDJLpemw64y>t2bSr^BH!s~)Wzw8&6 zIW=aI)>z@W^X`8~VI}5PnR5mZ#mPZhp3*4l1Pzp{_Imq?<^3l`ZZXD1(4syD9)4RVjbXP|59vreQ^!n&9 zC-7-jW;!vO*9ePgi*lq7XOqA8rdNR4o7u2F-c4?NgFMH-X&MwK9c^+!PjQ(!^Y;^K zB41w}?-GBjZV`;;N1bq2A9nl>7i&pc`4j8Py+C}f?3pf<6>}_`q-KZ@eW`22*~`wq zIjL)J_#zGHa|N8hgrVnQ@9wMom}Qr0@y(s{u81^;MYQzl=xLbsUfnDqR% zTjCDCnwdP&V=afY_hwox-gPcNS4E>H-@IgEOxN2OCE&6Dg?4N>6x#oemH*3!thZWA zLTlaApnoq?G?UITd_MMQOuxvJX)-MJ{>DOUb1`2WV|s7u8nq9k=DR! z_n6Qu+r9_8tG%=QP(yt>Az^EHpJ3?0sXK?yAw)czX}0l=D|YREC3Rz&0|`{r=Y0Bn zoX|+Tb0$4mvc5J5wljI}pNiWUvjycRV3qROqArut(lEnmh;jh;+PH|nv1nw?)hwVUUpiZ=Q&B~ zl-b-KAl9$$WY9Nid2Ez;jodv{J&HxL9`y-CFc!<$VlEkYU~?LW_aYe&w6z`b#3x~J z>-CNBwWmhhof_tcj)m9Yq;;_8J zC5+)IY-A22l^)@KT0des%(u?dEx+z@72eiRp%ab$;G;pJwB>Rvr{O=JG}e<$I`eh? z%}nF%%T+;^rk78hV()N-zIImS-A9s%hoy^=Nmd;?(E(sl*Rh&BrMZnt+}McQf@6+ zYcQ?RJGU0Ssv|k?AjyRAU@qbh6fgl%i<59dOYnM_KZmV@@xiwH7#2dVAG?KuB!sshiYD&@3XYpd!7 zG}?a}%v#|S4>htI_! zjoz22x1ey>%kbY|{j_2I>sn`%M4lP?%<~UJ|rsX(tH4dp=K419asrARx zLOC{)8@;wMITf0tes|Fd&)Q1VakHZY;r>{Qn1!GcdDF2-Dy z6e`PUtZQ`D$7p%C+Q>BQ=6PVcEiNxh?9_rbXujwPo)DQIE0jig z!gT2}$hjqwD*5~uC^?Cr9!n7_U2E;ZEA^>u^x2nzohuvlKfOTd9UO%gpZeB`^^6Ix z#NqGx@#kN!w0P-$H@q7C^F856U$2=9GgD|PY^Y;&9ep-!dkYkqs+X(ibiYU~>7DO- zf9X)~N4uB?bGA_t&6Y**sxwgc>PIbjm+_8m615kvo%oube9-TaY4G_H)O*=yE%T;%315#!uj@$Li<+-vp)uuah`e+uv%ZVIl zS^YZmpJ3^u+F18OyBB!cWCWdN9ohCVo!Ii!UfN9Rn(+v+qwIOS&*t@WA6Nuus)|Ow zeIeKxqd~}3!6_%?WwPo%Hi2GAp~K6exfo2jXX`y`&w1X|>BHjjkjKD7vVw^)I!d?K zAm;k2$=3xUn&`&Kt?GE=l+iW@^{hK@7R#Cl-yB+bvCDlgYe7>xPSGyif3kMM5=lMh zImeT0pNugq46Ioz4l$_u?DWqgqtG1nayo2~yFD23 z#snf%m_X#UwJzS`wJf-(LRh|ofkxy$@h{w$!)x@Pxkc_{%@ODUnhn@^_YoT55mmz0_}Kr6Tt5jv zT~b7&ij!q#S)qdYqryNnV{xLF1@CYge2lK56o#l_ZJKJch?B(5^0#{(VOnuN-Y4-%{%i%={ zIwq!RbD5b0V8(l|jl*^VxgDDR#(TbhS05SZJI?xi*7>LKC&>~Itru%PbswuQI+lK0 zBC;f&Va{kYBj~Kh!l0WWuyk}86*#E+h(6Bp~Ht#`LeVBNffvB*sa3Ej5Fcl=8 zcO8>%b0}`YQylv9zonSzrVvzGWyrJ2+Wm8jQa+y;=HI=RRRJ4S`zc|UFYr4Rx5OW= zZs#gJ^*soU-~X<+c_YxLBzInu^1@g)IbH_2-r+K9fA_HI^!uPi7|njvkCQvoZv@}4 zI*7i6{Gx?0Uc74^9Awthapj>4?Jb;Z(>YvhL1-MjE~4{3nO98QEjwWkL*A;<8h0gj zRwefeRxRWy2)#JAEaY!vkUUpoHOX33CqL=u33Zxzw>dhN5T?vR6?-e5W^Kl?pwgFB zT&i;|T!0#mHJ1oO*FMU_;VE2?4cjkpzbJClm^~5Fpi&-Et1mj9UdzV`_%kta{zo}$ zuVSfL76Jqx9QrQNIGk~a#eqlceIi25w`)1y^kJ$z`;oh`QNy0^A0!!f|L$w9%7 zV_h~|A*%fQ7IM2kYi{_jdyyGZJnsFoFTK+!=}X}A_al8t4ie`j`9c)$ULnom``fTd zCenea_1fab)Vj^_-9r!KGTd)Vdv7ZWQv8$UKoy8nrUoK(_sI*QXJ)JddH7nZzIeYz z5N-xDS`)!@44`QEJ-3bf$?x@@0I92^&qL>d?LOJb4=W$C*{ytB8bfz6*^}E}o?g=>>B_<_G5QB;;3ib267^BnsGenAS zcxYpdl10CL&1@XfPV-&9V8|Lc(tqr;Zv)Y@`-Pyiv$omA<8{)zT^2m(ZfHN7$9U-3V)yE%T&Ccjl6+) zR&hvQoqj75QWug+Iit>2sYTSNl;elZKhUS14wf~3d_pMe7ZYwPLydLj zlu_z({OqRdm>}wC*~&q$I~IcSAbL(vPHwd3PUI1G%oe6(@e47XO)#~2t?m44@@MX+ z4UT(L8bagNS830Rgf=U4yME6%CY$&?cUD~wbUgh>MX|77ZXPvyT8tyAc_EN=?tHt1Q zRSP0=cbJSjcZO7?J-000-R9&k6f!w3B{)H@*RHxu%p+_ZzBATvNFVOTLAt$1F6RAN zvgomyP9507Zf0&vM$343;#JBPnKhvD+M3&7{mE9UUwV%EZO?Xj9H;3VL~&O4e0YN< zGm(e`Y5tOgXH(3VDC%GLLinGywR<~s@4dw4P}?~_She(BRU}5Ln$7%deT&=j#tseA zvV1$+NNbI2_m$j2GN0%rq+ht8zB3@utGgt`O8o=0WQu#wIFX(A?-X>o&BwmzEE>tzSva5n%)6Vuu(Lw@*4#?y)AEhd&S~GIAHv!DE}8r? zUZ)<`cAlJ~3fgpf*`n>|AMgJjY?rS$b?(3WBzikonG(m?Q*(A6{jo*XJ`G#cu_Lr( zLqSV=VY%$5W7hN-^Dp1L1Cgis6xPEQ;mA8^sn>CVe9wDxGjj|XV>j})(v zijmp``4^R;-?DY4)$e)^J|%s$x4tW>qy8kbi)vpaZ z?BuA8j8Zbv)jYv=5-(`tM!e&o!uz_LD&?&D;)~KZv1xVb)F(WK--lLi_NE-6b4t38 z-<-J*Of#wZoXwwEb3x-He9voBZ|ovb?zpZS?cda%b>RtonA9&94nF-HpI84(;d!(! z=X>M_U9W`%M_;=l3%!fT@NHM=w1LX8^-t5kvP&usk}ri^tToCQCTk5d5#LmGf15v2 zg^T0~aLJO$G6lR-?HWB~lx+&|F<$Uw$>4MU3HIZ^;~PFS2^_MCI)yn+vrd3{EAfN>oC} zP|ru-Dbev2&CHr_oN}(cs6J*gEMBLCXlrYSb}>aG7^pe*K)6 zyDlUq@a_5KZ)?7^%S&uJEuv6UD_Aa@zqxcC)U=d9B)!`grePv_zFJ&g0f&r0de}kkLY{Z5w zU+!JL7k-cln z8!vW+;k7Jw0!hyLQW`E(4##q*ejh2X=W~#ESv489w1t9MPp|Xiy@FGx01x~1u<6Ig zOvB@7%eN8ggJFWXBT8=r#P*u;ezF*8L`uFEZ?rkf_bdHSY6)Na%=VhI_$~8yB zbD+UI*GYLQ)Ki+{*7MkH#3S*%HKCwiwsyXbTIs%CH}RJFF7wF3a)m8lzR>~mUi}~{ zP7rD`%3$i`Tg*A_4l*qT!zPH9Uqt} zUhVqew+BCdUD!wgbs7zcN!gozg7_n54534Ao+IfH=v~jOxqfyOUm0Z+%PMCS&)%Ut zN^iE>7uNpuL0CKdK@5bTv!1%3H6Zpk8Y zF(0G1lMT0Y?Wxi~n@~pOhO6D>O@N&lM$2wOHqFoVFc*L%zu|y7Px4w}^f0%Tju*w?ATLb?4}Vw=)xn<-A&3-<@7l zUXRZk@D}F66dS3gGS+d z&%zxKu8+Js$SDC+lathT9;y;e2cH2PG?SDIsJzh#a?25ia^i2k;s3EY+yS*qWnA4! z;qY52IG#(o{9E1=6xY0?4+MTGmAv0QdZIjTjznDlp>Uh(_2ZXXP5EY)0V}-x3BMnN zPYKu6DnGtB8~ONYF@IoPIZgX$oI2`eZ$kVso|3rBS*?`c7rO=p2SZ`nuXjaPTbH-lGV2%7A2^E-XM9ube0Ei;Zpg-IhDM-=Orui$FQK22B9xcXFW9N&UXkx%)Sve zue%#&o4Y-i2(LjbZSAFaojBp9OLWP;95PBv)$cx@ZItxhn?U*82y!`1C6R>fZ>yh> zoNec8$gEW^8b0_Cwwpw3Ukf&Vhd?J}B~OF9d| zvMfSYBF0!kXJn(-@3ws%Q-^;dY5u3A_^$E$qCARRvA);nDT}h ziF_#1BGynnk-gK>od2sj_K_B|@!!7Lx_~8V7bSE0*TD@21L4iPG^aqJ$pL4|OeT3gfDB4Rt^jQy04m7^0YP3bkv}I5GAyf1kzx4GxB9?=MmGF_1)7+W7j$M{7HeS<7W5(~%OB8+liliD zX&{C!J4TRGLe%ckN%1n17cH*pybpsM8Eqotewa)u2d%!6mm;J4TP{B-P;A`O{B{)b zLMh21Q5fPR?cY&rHsX6zyOEn+>zZ;y{DL!ESm4gw^S!lL6{fO zlc1~eXKbkxmI3=5N7Hl$NE-H2@k!QpIy-zp# zXMYA312*W^+-pHANNpOs+Py3?1?9%SN*Fa1hcf!`}Q}R9zQr6luc3Q2i{3iAe zJ6%@>l1Ggleyx53S9Sb=m4l4f{AWNjf2>HMc{3CJg1?VM9zJ|lzHWDGq;IzD;PB@N zBX?@Y{?CyZJTy8`8a?#Vj>4o;XLi`$e>xrsz0d2x&!_{B6P}aT)Vy62TRg3+^t4z+ z_qzmSmCfJm93{Dd7+IW;MhrxU?C=}rAaC==1ZB{0=fSzQVim#$rXyNp$;IEyA->D0 z2|{-yfZ;$8sN+9Tv@KN%01?RFj~Ya|D)J>1n)Z3rckjP3JZ|7S{49*qp#(E1`)tj^ z^Ya(>~?BG*3FE0#zm6&FE*D`p|Gk z+f7gNk+Q?-qk7{QH7%YG(zCP7aXk0rQGR$Gz8~EFEg9x0gKB)~dn6or%9(MI=$bD5 zoj&&t2gE2el`J|3mn~z&bwQD|>B5Z3VY(uy-#>z8Dm%h-x_}BfPwjRhN_=)1vG-wI z=o9IL%5Zq&K1(#ea0b2iNzCDU*xX;7)$NQq%JW2K0-75Gih*_~36i|e_Z-WlCC8>^ z(brM0GkT7?^2|=6r6uK_jK0ibrp;nAQ=mm$Jg8fY*^WDZ!2OYkNWMW|!=EVycg@tc z{6XFY-Gcj{jY8Jl+%KK4)t&8B(x=aG5iNHyQKhNoAZk5JZ$)adeaMF_T6e(!^132Ruh!se4blRaiL= zB=R4k&hZq;_%e1gHA_Bzj_)j)r^a9B=;e#Kp(k<}J}p1uUjNzV;X@42ZXWC%T`8IPF~n|I`+WiRFXHYbFsst&{OK&lxemY&%Yvud?RCGS=zF&B~hX<0e zQa@d+dwNiC{w((!vt>%hQ_H8DJ0dqSmw+&Ty3Hy5w#;h#=PD7?Nll}e%lj5t_k>@r zhrUJul5Y-|T(N)7=#$_M%zb~JW}InY8eIBf=&3qW6IyMUN_vAuoItSaN%(Rcl7Jyp z_;k^NJ%Hr;?`1>t;v0enEDbVmEm(*6yFPcI9MfBO7bW2EyRLSg(Uj;$L0k!ba33^( zQn)lTt2Z`NW7a#3i=W~jNbVmsFH>jW=(x2jM1JExt{3iGOev=273I1aH$f14c8att zVfbC)l3<*k=n8Qb3sz-a(c;f4c@*8dR&%cZnEPb0hTi_Er0#dYFU9*q0+J z2x=g7&xL}2Oj`$MfbbWNDJmbqJ3gYNP-1%bzV(OOZX1)wCF~!dFS;v`doqY(-{BL< zOBIA3&Iu*Bu%GljTl6&#C)mM!;ORZb>)Q(Ifc z=-_a+!QycQs0A*yLM#YS*$4>;4h|kkl6_JW0AC>nRc(z=-pDS+3mG8%{yfM2^0)PH z^Po?qM41X(DXH;hT-n!6K?jNdzV~xDKnrKvhJOnQZEZ2#w#}h z;q{5BCyuXPEwS`@X@1$S?p|46_X(rKqUe8HN{Q`1SMs?n6dd{RI@(-d{@Yg^!CoC< zc5EV)5YS068g~4s%q_NNO?y zx#LAgk+Lt`h{$N>CsAI;5@m3WCeL@2m*o9=99_GMBI*|&s6Z_g-sfQUA5`9S-57NYLO+&Y zjvxpSZDE66ZKh-Orrh#Br;ypzxmo5jdSv~}sBDyo|F~~C>JygV$>ML}s%VBwL8ZRY zl$^nLHGaii3FqN9ShO4A?IGwIDQKcqsJ!pe6H@Yo$IWMg1v4 zJHuWS{J*f_+ukd)uv7x2OOaUZvp@5t%xHrE-4O=K2g)rD^(6PfS%N}(WBpxUuNm2v z=5%<^bxxEIAuTR?H461JiuxYN|v^ByVx){n_R1UUUir>9Mf6^`=g ztHcz)N=Qno$Ar#xHp){fdO~Uc)i;Y0f^g5JKZG)ehcc17oa2xqJ1A3AIjM*7So*ZO z#&;c(g@+v)wG8ajUYosK0cL#Agc)sa1+BUHYHgXKT;IY`&(p1wdQ6?v?JC!ky1^2vTQsG7@nHt_6m7il}m1OW6mZa*Vro^s|xajhBk_y*+73-`t1#wqT+hj3*6DK&~1bR?Y3|N*hphH+5KuLK4L373?f*`>=+qN z&@3e$DLUrAvZ`}xhtg;q3g%aPwnu=1=L&;re;~DsoMLEP709?qzHC~v;0m~j7v?g@ zuO@Z&>pYpAl)M`H5q~GDn}1~2z`XqvsDi%3r zKAv5gCETJ}Z&OpCiltfU-sbOZ-R7jVSLMrY`#?tll~2A~*;6v>Mp6g;t-Y{s|hF#1UdS%|E+;RMqr%&8~WG1j@RvW8couJH#<+ltZS5rJ{;vr z(VAeRF1$4apIJN9G5$W{>@B*PK(rTT9Sn%<50=UZ>$y}Rg|T48=wAvP4j${t(gWCK z>4a74=!Z{Zf>!d1SI@d7YiBv0{CWnK9yO@&^Tygb_f_!}l=bSVx6b}{*p!!-r|`wS zg$1(yK>>&q<{9qz3N8nlkXwJJ02!tQyd=jwhPUXo$3_V&i^XtEQk}UVS1n%dLt5FPUMPP}Y@G`~PEE?tIw+Y=8HD zKnkXmwO1Nl^wkd}{ssa@8spk?_dxrwHu9k7XJ;hIA4Ylq8|tpqqH*{PS-?#b4dO&l z1nM(sz`yUpBAh*cBZh%g@Mh>0^^gz~|LOW8`HyKsP}LoDc=j>+&Qlc=tS@ix-o5MV z4l1@w{KqL!OU4_`l$w-u`tWHdX7Gy2O1F}_#D4;#d7dm#*6sHtz7)6 z_iteP&dBqcGUD7UCw#f<569f`FT^kX@r?_x^{AUQ)zMu`R@*Grn9nxH$~mZu1XEy(9t@?BhI2pNSG;-`s;| z5(Am&##DF2Jh@f31X|G8U*dD*>`hbpM@BrNW3ebO+|<0D1X|p`R5y!5#zPoXV*h_+ z(`yf5I3~5BSA|r51ZqW)g7cq}aNJ9cJszXM9TE}4lS|11_m_cu|C^N`GXF%!9&2zP zJp;}lI0lRpE<>!ff!71G=G(%#5}*Db-mN(3LRANaTUdSBnEM)B1^;PqM#Q~YGjbaR z@V`5fcfO=L1^)*mu)SrW5%P9-v20X8qoC;QwF<{85w0XZaveY%{ZN8T{B3P*-T!>! zpQP}ytDlX~CPG#qAeY$(HX^t$sd!z#q6K_7A@yL}{7W^G1;SwV`t_=jla}0-km?zK zJ}3zmfcCM7-C@3hwWxvsjPvqF?zaz7QQP;F0>CmB=BdX&^uA05vM)=tM)Mi_OWU)8 zKVjgW7;)D_l7BR46hH3n>XL%40o&&G9FepOLVE<&0|x)UmpT>qP}8_; z5&&nGG{!4dXYJRXUD20t%|;bM25SB^NdRO*gE#&g z^+wiE@ZjJef^f}S74o!LuZYp?AH{MjMrU9)HfvC_KmrH_$Pr;Q-8H%v_v(j3!>Zp= zf|M82*I7fYpkJERCM_upcxzugMQ|l-HUux@{p>*CbcZYzj{~yO01ipFaS-eX{rBm(n{wVI zm~5hgR;0jxsoOcApcv@V|5?bC#U@~Ory>2gprA0{D9|&V(9qD$3-a@Sc+meoxRA9D z0`lCCYlamt^$Ao%hbuua|IUc83`PUnfhTvsAplUK`;VCPp)In8cL6LJ0>I@4kK3x? zNzP$24#e<2$G{%+(c!Xg43tB zeGjh{YzGIAJJ;Y+YIpgD`4!KsW4Xxe%TpyirpzcHc-_4qrHbi8Lw}KyJ`u?z>rbPY z!iC+>QGxfsNAA83=M}k!UUJY}Xcw5^LaILO?(Rx2&3N`1Ok!WL>`3(Mr+RxE8yhS| z-T)xccm5%y8EUel!5gXo$;}$Y&Xj%{)ON+ETt9|aI~qlBD#*~ktxj*un!$Plc!p$1 zMr^7kUJ;X3(QtsTHpi>hHDf_d-YWpB#0DMwx(?2!u`_NyhiYEe*VXkj^Yk3$$p2@M zavy>P8+nW>X59RN1F35Ge?n#RobLn%Q3R7C#OAsP0l32T|Lj7>u=6y~(vqNDVkZ)a z4G&P@`auKVDT|k&d=7Z5W37vd+y#1|a)yDi*ch)t^Pb-N%R%)9TVP1Z;1ah0 zjfBO-ujYj~r*hdfZd!PKh;%97zDII_#+5CsPbRovs<2nMh8|KA!-Kd}{f7s~39JtX zb?gGZ61jyXXJ~sBVubgm$U-Kr&|>I~JQk%sw|ezTmt5HpX#bkcXKKulxwcLXvhLCt zup;)a?1B4RPO+(UxGRJVoCw1hACgzda}5m**oXPcutW$mAyB2SEiEmM$+8sNf}-O5 z7=_fNub98Axa)&hJ%rs*{4{?HqR9T=4>lP@QYAdf7Sg#oa3KA3z@cRnq-MgyFuN)i z8!$WYCAQ+H88S$QFmM{Bgn=C9RQX5!V*cln>BaM&irQBje@;vD4*(D(o8v1U#^ zK#NCeUy!Hby?~H427;mRL?ic^orh$gi&&4%PE$GQ$ZA| zP3-J8j9hoGG^jt@g&lo#0~Qqk5+RhJ5w3uR5pj`8#YQ8>_qcB#ltd0ftJHT)O+>X&?QuD2S#mm z%2_W4=Gr0^uotv7(#A%g9OT~$9etwbq!)n+0o*0FKG3Z&Q0A1 zmB{)0ZNLOX9)CeuL<*2Dx+lsuv%j=<<@EHYI6t{lmClY}^5X0FD^5&q5)7`RQIwqOQlzZoWSBv4z!Jl8qGB^=iw%aEYeGi{{$M+RmG>nR zF1bAyz|TGin5)D;7zl>mk^l|5ynD(yehbjgp2DNP8B=TrcU{cXcDf0(UCT%`e#o@#i19vP`RNW zfA3(E23=9fZIvN^Wc?Ue-Or0CMf>*z5McOBp#W&NyqzI`#nfORk`fS30>JbPm6l3g zMngS4Z}hKNPQbl!Mjp`ERc!cu>%LNeM)1{$2TRT|vKb`pfFPk@Up}mv_&PI2VEC*5 z%667xbL@aAWXM?zCm>e=_(KXHf{Ak0#n3G^M*&zR3{@cH?ii}LL)9rTMz{y-EmdX|4*Zr=+;e*@>2F@j)-abCAJH~qRUhPt}_ z016qAvsma*5IAW7Yd#0gPZa|Ou@Y{S26#830<_k^rdvft`|ikn(G~>nF+hSG*uD&o zzZZ~nJRXdR7$--bQfg`gVeC&9lf{6dp9E5%{?|}ITY$KL)dF%LE<^PjVz7yMS!wA@ zd^p?)j}yw4AYi927glSYUS&&@v=+)nY~g^#S?}#r!Ha^>q;waL)uW&B|BJ?TTQe zDtgL;-sCUn=DE4K+ZfX5VE`T)uw!jDI3d8sgzC8+0w90<2DpvnRm5oz0BU+&A*bR` z3;r-#0=PDTJH~1wDfN~a7;_=@jmL`iU_u17%_Tjy8anPbZ!Jmzjj5DR6M(srT#W=K zF7hgALDQM2pf+sa{xCTE%96WN0Gj50b4mm9rpFoD)f;m4xYd9e2VPHC00>n7gT+Y;9NKpQ5=b71>6;1%$zw&Z3Jr%V z>r%;qYk)RXQBk~LvsKHKKWhdYK$amqnh%M^uN^VCBq-$$fahkNCS7#@d93D$#sP!_ zuCk)yatj;w(Vz80AJwPl2eKN$R6G!*l9cjkBaJK(Nr#r2Si6H4+T zehjR`NgCG@3uH~{iZE7SIYJ(!ZnN3|$@|$WZAbVd6`N54v|vf)8vQ{^IA{6Y3U*ZJ zO8|@8YYdqxq3sKSN1uW`g5bHGb!n(J2Lm)E$UejQq%nhwB&uFZO!q4!V$N`2QJ*+w z!vGV3k?4Moc>yTvn#J91PF5QR4DeNCX=5`rxF-u!8IZ>)-nN~l;`Iy|=#gUQg+f9~md*K?ouEx<_W8NV4u!ARqe zD1rE4#*x4;zy{){nwZWBIL30cM@jCEu{Cgs#3GX1XWTW3?=Ca|x>DWDt4sV|$;Gy~dj;q{-cpOAh_Y}gj)1hlHhyK3&@zyVACGNJ}1OyE5H zNx*c}ys?3SR988m*%p`r$jNbqSWI|u#Vi7HF9l{eSu?6IfGgTkC|vXZv`mCVkF-Zxlcm0U}nQTPVF2IWOa6ZoeP|ZO9Uwi+zo;dLTx-<5y`6Ed z?bCU4r<{+o-?C$e#c8l&QLy5PIaeL>^WV#v|9l{~p{RkyoHJhT!S2_U6VBhO0XB$I zK%o;D{^>B+n;Pb4%hpTmxaQ}Uq4#}5(}KM_@BQZdZ0R@S^z^%5Z4LlWuG~DQr5{)* z02e#~3;k??bgdiD+QgoC0w?V{n|jS3>c8#z_3ZEbX6|=)lZAQS0eeTYK!tY43#FSb zjV~kbrBzMaeln%emv6@DKy#LZT;H45aQ^PsKmMI@@7}qoH(Mgq_Mba252*eTI7+s7 zraU@uZ`(;`;UBk_95f40WSH;r;dMt!)Asb97hHq@O1TaS?83{1OTD+x;6j+ literal 0 HcmV?d00001 diff --git a/src/apps/mahadao/contracts/abis/mahado-mahax-locker.json b/src/apps/mahadao/contracts/abis/mahado-mahax-locker.json new file mode 100644 index 000000000..430e170c5 --- /dev/null +++ b/src/apps/mahadao/contracts/abis/mahado-mahax-locker.json @@ -0,0 +1,1509 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + }, + { + "internalType": "address", + "name": "_royaltyRcv", + "type": "address" + }, + { + "internalType": "address", + "name": "_renderingContract", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_royaltyFeeNumerator", + "type": "uint96" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "locktime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "enum INFTLocker.DepositType", + "name": "deposit_type", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "ts", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevSupply", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "supply", + "type": "uint256" + } + ], + "name": "Supply", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "ts", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIGRATION_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_approved", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_block", + "type": "uint256" + } + ], + "name": "balanceOfAtNFT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "balanceOfNFT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_t", + "type": "uint256" + } + ], + "name": "balanceOfNFTAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "blockNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "checkpoint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockDuration", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_stakeNFT", + "type": "bool" + } + ], + "name": "createLock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockDuration", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "bool", + "name": "_stakeNFT", + "type": "bool" + } + ], + "name": "createLockFor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "depositFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "emergencyRefund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "epoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "getLastUserSlope", + "outputs": [ + { + "internalType": "int128", + "name": "", + "type": "int128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inBootstrapMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "increaseAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockDuration", + "type": "uint256" + } + ], + "name": "increaseUnlockTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "isApprovedOrOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "isStaked", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "locked", + "outputs": [ + { + "internalType": "int128", + "name": "amount", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "end", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "start", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "lockedEnd", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_from", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_to", + "type": "uint256" + } + ], + "name": "merge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockDuration", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "migrateTokenFor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "minLockAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "ownershipChange", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "pointHistory", + "outputs": [ + { + "internalType": "int128", + "name": "bias", + "type": "int128" + }, + { + "internalType": "int128", + "name": "slope", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "ts", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blk", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registry", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renderingContract", + "outputs": [ + { + "internalType": "contract ITokenURIGenerator", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_salePrice", + "type": "uint256" + } + ], + "name": "royaltyInfo", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minLockAmount", + "type": "uint256" + } + ], + "name": "setMinLockAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ITokenURIGenerator", + "name": "_contract", + "type": "address" + } + ], + "name": "setRenderingContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_royaltyRcv", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_royaltyFeeNumerator", + "type": "uint96" + } + ], + "name": "setRoyaltyInfo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "slopeChanges", + "outputs": [ + { + "internalType": "int128", + "name": "", + "type": "int128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stopBootstrapMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "supply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceID", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenIndex", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_block", + "type": "uint256" + } + ], + "name": "totalSupplyAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "t", + "type": "uint256" + } + ], + "name": "totalSupplyAtT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupplyWithoutDecay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_users", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_value", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_lockDuration", + "type": "uint256[]" + }, + { + "internalType": "bool", + "name": "_stakeNFT", + "type": "bool" + } + ], + "name": "uploadUsers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "userPointEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "userPointHistory", + "outputs": [ + { + "internalType": "int128", + "name": "bias", + "type": "int128" + }, + { + "internalType": "int128", + "name": "slope", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "ts", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blk", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_idx", + "type": "uint256" + } + ], + "name": "userPointHistoryTs", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "votingPowerOf", + "outputs": [ + { + "internalType": "uint256", + "name": "_power", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/src/apps/mahadao/contracts/ethers/MahadoMahaxLocker.ts b/src/apps/mahadao/contracts/ethers/MahadoMahaxLocker.ts new file mode 100644 index 000000000..85f9d7abd --- /dev/null +++ b/src/apps/mahadao/contracts/ethers/MahadoMahaxLocker.ts @@ -0,0 +1,1959 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common'; + +export interface MahadoMahaxLockerInterface extends utils.Interface { + functions: { + 'DEFAULT_ADMIN_ROLE()': FunctionFragment; + 'MIGRATION_ROLE()': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'balanceOfAtNFT(uint256,uint256)': FunctionFragment; + 'balanceOfNFT(uint256)': FunctionFragment; + 'balanceOfNFTAt(uint256,uint256)': FunctionFragment; + 'blockNumber()': FunctionFragment; + 'checkpoint()': FunctionFragment; + 'createLock(uint256,uint256,bool)': FunctionFragment; + 'createLockFor(uint256,uint256,address,bool)': FunctionFragment; + 'decimals()': FunctionFragment; + 'depositFor(uint256,uint256)': FunctionFragment; + 'emergencyRefund(address)': FunctionFragment; + 'epoch()': FunctionFragment; + 'getApproved(uint256)': FunctionFragment; + 'getLastUserSlope(uint256)': FunctionFragment; + 'getRoleAdmin(bytes32)': FunctionFragment; + 'grantRole(bytes32,address)': FunctionFragment; + 'hasRole(bytes32,address)': FunctionFragment; + 'inBootstrapMode()': FunctionFragment; + 'increaseAmount(uint256,uint256)': FunctionFragment; + 'increaseUnlockTime(uint256,uint256)': FunctionFragment; + 'isApprovedForAll(address,address)': FunctionFragment; + 'isApprovedOrOwner(address,uint256)': FunctionFragment; + 'isStaked(uint256)': FunctionFragment; + 'locked(uint256)': FunctionFragment; + 'lockedEnd(uint256)': FunctionFragment; + 'merge(uint256,uint256)': FunctionFragment; + 'migrateTokenFor(uint256,uint256,address)': FunctionFragment; + 'minLockAmount()': FunctionFragment; + 'name()': FunctionFragment; + 'ownerOf(uint256)': FunctionFragment; + 'ownershipChange(uint256)': FunctionFragment; + 'pointHistory(uint256)': FunctionFragment; + 'registry()': FunctionFragment; + 'renderingContract()': FunctionFragment; + 'renounceRole(bytes32,address)': FunctionFragment; + 'revokeRole(bytes32,address)': FunctionFragment; + 'royaltyInfo(uint256,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256,bytes)': FunctionFragment; + 'setApprovalForAll(address,bool)': FunctionFragment; + 'setMinLockAmount(uint256)': FunctionFragment; + 'setRenderingContract(address)': FunctionFragment; + 'setRoyaltyInfo(address,uint96)': FunctionFragment; + 'slopeChanges(uint256)': FunctionFragment; + 'stopBootstrapMode()': FunctionFragment; + 'supply()': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'symbol()': FunctionFragment; + 'tokenOfOwnerByIndex(address,uint256)': FunctionFragment; + 'tokenURI(uint256)': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'totalSupplyAt(uint256)': FunctionFragment; + 'totalSupplyAtT(uint256)': FunctionFragment; + 'totalSupplyWithoutDecay()': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + 'uploadUsers(address[],uint256[],uint256[],bool)': FunctionFragment; + 'userPointEpoch(uint256)': FunctionFragment; + 'userPointHistory(uint256,uint256)': FunctionFragment; + 'userPointHistoryTs(uint256,uint256)': FunctionFragment; + 'version()': FunctionFragment; + 'votingPowerOf(address)': FunctionFragment; + 'withdraw(uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'DEFAULT_ADMIN_ROLE' + | 'MIGRATION_ROLE' + | 'approve' + | 'balanceOf' + | 'balanceOfAtNFT' + | 'balanceOfNFT' + | 'balanceOfNFTAt' + | 'blockNumber' + | 'checkpoint' + | 'createLock' + | 'createLockFor' + | 'decimals' + | 'depositFor' + | 'emergencyRefund' + | 'epoch' + | 'getApproved' + | 'getLastUserSlope' + | 'getRoleAdmin' + | 'grantRole' + | 'hasRole' + | 'inBootstrapMode' + | 'increaseAmount' + | 'increaseUnlockTime' + | 'isApprovedForAll' + | 'isApprovedOrOwner' + | 'isStaked' + | 'locked' + | 'lockedEnd' + | 'merge' + | 'migrateTokenFor' + | 'minLockAmount' + | 'name' + | 'ownerOf' + | 'ownershipChange' + | 'pointHistory' + | 'registry' + | 'renderingContract' + | 'renounceRole' + | 'revokeRole' + | 'royaltyInfo' + | 'safeTransferFrom(address,address,uint256)' + | 'safeTransferFrom(address,address,uint256,bytes)' + | 'setApprovalForAll' + | 'setMinLockAmount' + | 'setRenderingContract' + | 'setRoyaltyInfo' + | 'slopeChanges' + | 'stopBootstrapMode' + | 'supply' + | 'supportsInterface' + | 'symbol' + | 'tokenOfOwnerByIndex' + | 'tokenURI' + | 'totalSupply' + | 'totalSupplyAt' + | 'totalSupplyAtT' + | 'totalSupplyWithoutDecay' + | 'transferFrom' + | 'uploadUsers' + | 'userPointEpoch' + | 'userPointHistory' + | 'userPointHistoryTs' + | 'version' + | 'votingPowerOf' + | 'withdraw', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'DEFAULT_ADMIN_ROLE', values?: undefined): string; + encodeFunctionData(functionFragment: 'MIGRATION_ROLE', values?: undefined): string; + encodeFunctionData( + functionFragment: 'approve', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'balanceOfAtNFT', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'balanceOfNFT', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'balanceOfNFTAt', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'blockNumber', values?: undefined): string; + encodeFunctionData(functionFragment: 'checkpoint', values?: undefined): string; + encodeFunctionData( + functionFragment: 'createLock', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'createLockFor', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + ], + ): string; + encodeFunctionData(functionFragment: 'decimals', values?: undefined): string; + encodeFunctionData( + functionFragment: 'depositFor', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'emergencyRefund', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'epoch', values?: undefined): string; + encodeFunctionData(functionFragment: 'getApproved', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'getLastUserSlope', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'getRoleAdmin', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'grantRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'hasRole', values: [PromiseOrValue, PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'inBootstrapMode', values?: undefined): string; + encodeFunctionData( + functionFragment: 'increaseAmount', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'increaseUnlockTime', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'isApprovedForAll', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'isApprovedOrOwner', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'isStaked', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'locked', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'lockedEnd', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'merge', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'migrateTokenFor', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'minLockAmount', values?: undefined): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'ownerOf', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'ownershipChange', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'pointHistory', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'registry', values?: undefined): string; + encodeFunctionData(functionFragment: 'renderingContract', values?: undefined): string; + encodeFunctionData( + functionFragment: 'renounceRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'revokeRole', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'royaltyInfo', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256)', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'setApprovalForAll', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'setMinLockAmount', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'setRenderingContract', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'setRoyaltyInfo', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'slopeChanges', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'stopBootstrapMode', values?: undefined): string; + encodeFunctionData(functionFragment: 'supply', values?: undefined): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData( + functionFragment: 'tokenOfOwnerByIndex', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'tokenURI', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupplyAt', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'totalSupplyAtT', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'totalSupplyWithoutDecay', values?: undefined): string; + encodeFunctionData( + functionFragment: 'transferFrom', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'uploadUsers', + values: [ + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue, + ], + ): string; + encodeFunctionData(functionFragment: 'userPointEpoch', values: [PromiseOrValue]): string; + encodeFunctionData( + functionFragment: 'userPointHistory', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData( + functionFragment: 'userPointHistoryTs', + values: [PromiseOrValue, PromiseOrValue], + ): string; + encodeFunctionData(functionFragment: 'version', values?: undefined): string; + encodeFunctionData(functionFragment: 'votingPowerOf', values: [PromiseOrValue]): string; + encodeFunctionData(functionFragment: 'withdraw', values: [PromiseOrValue]): string; + + decodeFunctionResult(functionFragment: 'DEFAULT_ADMIN_ROLE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'MIGRATION_ROLE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOfAtNFT', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOfNFT', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOfNFTAt', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'blockNumber', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'checkpoint', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'createLock', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'createLockFor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositFor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'emergencyRefund', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'epoch', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getApproved', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getLastUserSlope', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRoleAdmin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'grantRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'hasRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'inBootstrapMode', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'increaseAmount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'increaseUnlockTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isApprovedForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isApprovedOrOwner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isStaked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'locked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockedEnd', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'merge', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'migrateTokenFor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'minLockAmount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'ownerOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'ownershipChange', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pointHistory', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'registry', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renderingContract', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'revokeRole', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'royaltyInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setApprovalForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setMinLockAmount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setRenderingContract', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setRoyaltyInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'slopeChanges', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stopBootstrapMode', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenOfOwnerByIndex', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupplyAt', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupplyAtT', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupplyWithoutDecay', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'uploadUsers', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userPointEpoch', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userPointHistory', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userPointHistoryTs', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'version', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'votingPowerOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + + events: { + 'Approval(address,address,uint256)': EventFragment; + 'ApprovalForAll(address,address,bool)': EventFragment; + 'Deposit(address,uint256,uint256,uint256,uint8,uint256)': EventFragment; + 'RoleAdminChanged(bytes32,bytes32,bytes32)': EventFragment; + 'RoleGranted(bytes32,address,address)': EventFragment; + 'RoleRevoked(bytes32,address,address)': EventFragment; + 'Supply(uint256,uint256)': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + 'Withdraw(address,uint256,uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ApprovalForAll'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleAdminChanged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleGranted'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RoleRevoked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Supply'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdraw'): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + approved: string; + tokenId: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface ApprovalForAllEventObject { + owner: string; + operator: string; + approved: boolean; +} +export type ApprovalForAllEvent = TypedEvent<[string, string, boolean], ApprovalForAllEventObject>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export interface DepositEventObject { + provider: string; + tokenId: BigNumber; + value: BigNumber; + locktime: BigNumber; + deposit_type: number; + ts: BigNumber; +} +export type DepositEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber, number, BigNumber], DepositEventObject>; + +export type DepositEventFilter = TypedEventFilter; + +export interface RoleAdminChangedEventObject { + role: string; + previousAdminRole: string; + newAdminRole: string; +} +export type RoleAdminChangedEvent = TypedEvent<[string, string, string], RoleAdminChangedEventObject>; + +export type RoleAdminChangedEventFilter = TypedEventFilter; + +export interface RoleGrantedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleGrantedEvent = TypedEvent<[string, string, string], RoleGrantedEventObject>; + +export type RoleGrantedEventFilter = TypedEventFilter; + +export interface RoleRevokedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleRevokedEvent = TypedEvent<[string, string, string], RoleRevokedEventObject>; + +export type RoleRevokedEventFilter = TypedEventFilter; + +export interface SupplyEventObject { + prevSupply: BigNumber; + supply: BigNumber; +} +export type SupplyEvent = TypedEvent<[BigNumber, BigNumber], SupplyEventObject>; + +export type SupplyEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + tokenId: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface WithdrawEventObject { + provider: string; + tokenId: BigNumber; + value: BigNumber; + ts: BigNumber; +} +export type WithdrawEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber], WithdrawEventObject>; + +export type WithdrawEventFilter = TypedEventFilter; + +export interface MahadoMahaxLocker extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: MahadoMahaxLockerInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>; + + MIGRATION_ROLE(overrides?: CallOverrides): Promise<[string]>; + + approve( + _approved: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + balanceOf(_owner: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + balanceOfAtNFT( + _tokenId: PromiseOrValue, + _block: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber]>; + + balanceOfNFT(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + balanceOfNFTAt( + _tokenId: PromiseOrValue, + _t: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber]>; + + blockNumber(overrides?: CallOverrides): Promise<[BigNumber]>; + + checkpoint(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + createLock( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + createLockFor( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _to: PromiseOrValue, + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + depositFor( + _tokenId: PromiseOrValue, + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + emergencyRefund( + to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + epoch(overrides?: CallOverrides): Promise<[BigNumber]>; + + getApproved(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise<[string]>; + + getLastUserSlope(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise<[string]>; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[boolean]>; + + inBootstrapMode(overrides?: CallOverrides): Promise<[boolean]>; + + increaseAmount( + _tokenId: PromiseOrValue, + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + increaseUnlockTime( + _tokenId: PromiseOrValue, + _lockDuration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isApprovedForAll( + _owner: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[boolean]>; + + isApprovedOrOwner( + _spender: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[boolean]>; + + isStaked(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + locked( + arg0: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + amount: BigNumber; + end: BigNumber; + start: BigNumber; + } + >; + + lockedEnd(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + merge( + _from: PromiseOrValue, + _to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + migrateTokenFor( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + minLockAmount(overrides?: CallOverrides): Promise<[BigNumber]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + ownerOf(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise<[string]>; + + ownershipChange(arg0: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + pointHistory( + arg0: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + bias: BigNumber; + slope: BigNumber; + ts: BigNumber; + blk: BigNumber; + } + >; + + registry(overrides?: CallOverrides): Promise<[string]>; + + renderingContract(overrides?: CallOverrides): Promise<[string]>; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + royaltyInfo( + _tokenId: PromiseOrValue, + _salePrice: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[string, BigNumber]>; + + 'safeTransferFrom(address,address,uint256)'( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setApprovalForAll( + _operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setMinLockAmount( + _minLockAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setRenderingContract( + _contract: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setRoyaltyInfo( + _royaltyRcv: PromiseOrValue, + _royaltyFeeNumerator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + slopeChanges(arg0: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + stopBootstrapMode(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + supply(overrides?: CallOverrides): Promise<[BigNumber]>; + + supportsInterface(_interfaceID: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + tokenOfOwnerByIndex( + _owner: PromiseOrValue, + _tokenIndex: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber]>; + + tokenURI(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + totalSupplyAt(_block: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + totalSupplyAtT(t: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + totalSupplyWithoutDecay(overrides?: CallOverrides): Promise<[BigNumber]>; + + transferFrom( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + uploadUsers( + _users: PromiseOrValue[], + _value: PromiseOrValue[], + _lockDuration: PromiseOrValue[], + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + userPointEpoch(arg0: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]>; + + userPointHistory( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + bias: BigNumber; + slope: BigNumber; + ts: BigNumber; + blk: BigNumber; + } + >; + + userPointHistoryTs( + _tokenId: PromiseOrValue, + _idx: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber]>; + + version(overrides?: CallOverrides): Promise<[string]>; + + votingPowerOf( + _owner: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { _power: BigNumber }>; + + withdraw( + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MIGRATION_ROLE(overrides?: CallOverrides): Promise; + + approve( + _approved: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + balanceOf(_owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + balanceOfAtNFT( + _tokenId: PromiseOrValue, + _block: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + balanceOfNFT(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + balanceOfNFTAt( + _tokenId: PromiseOrValue, + _t: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + blockNumber(overrides?: CallOverrides): Promise; + + checkpoint(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + createLock( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + createLockFor( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _to: PromiseOrValue, + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + depositFor( + _tokenId: PromiseOrValue, + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + emergencyRefund( + to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + epoch(overrides?: CallOverrides): Promise; + + getApproved(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + getLastUserSlope(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + inBootstrapMode(overrides?: CallOverrides): Promise; + + increaseAmount( + _tokenId: PromiseOrValue, + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + increaseUnlockTime( + _tokenId: PromiseOrValue, + _lockDuration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isApprovedForAll( + _owner: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isApprovedOrOwner( + _spender: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isStaked(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + locked( + arg0: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + amount: BigNumber; + end: BigNumber; + start: BigNumber; + } + >; + + lockedEnd(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + merge( + _from: PromiseOrValue, + _to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + migrateTokenFor( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + minLockAmount(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + ownershipChange(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + pointHistory( + arg0: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + bias: BigNumber; + slope: BigNumber; + ts: BigNumber; + blk: BigNumber; + } + >; + + registry(overrides?: CallOverrides): Promise; + + renderingContract(overrides?: CallOverrides): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + royaltyInfo( + _tokenId: PromiseOrValue, + _salePrice: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[string, BigNumber]>; + + 'safeTransferFrom(address,address,uint256)'( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setApprovalForAll( + _operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setMinLockAmount( + _minLockAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setRenderingContract( + _contract: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setRoyaltyInfo( + _royaltyRcv: PromiseOrValue, + _royaltyFeeNumerator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + slopeChanges(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + stopBootstrapMode(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + supply(overrides?: CallOverrides): Promise; + + supportsInterface(_interfaceID: PromiseOrValue, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex( + _owner: PromiseOrValue, + _tokenIndex: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + tokenURI(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAt(_block: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupplyAtT(t: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupplyWithoutDecay(overrides?: CallOverrides): Promise; + + transferFrom( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + uploadUsers( + _users: PromiseOrValue[], + _value: PromiseOrValue[], + _lockDuration: PromiseOrValue[], + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + userPointEpoch(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + userPointHistory( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + bias: BigNumber; + slope: BigNumber; + ts: BigNumber; + blk: BigNumber; + } + >; + + userPointHistoryTs( + _tokenId: PromiseOrValue, + _idx: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + version(overrides?: CallOverrides): Promise; + + votingPowerOf(_owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw( + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + callStatic: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MIGRATION_ROLE(overrides?: CallOverrides): Promise; + + approve( + _approved: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + balanceOf(_owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + balanceOfAtNFT( + _tokenId: PromiseOrValue, + _block: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + balanceOfNFT(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + balanceOfNFTAt( + _tokenId: PromiseOrValue, + _t: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + blockNumber(overrides?: CallOverrides): Promise; + + checkpoint(overrides?: CallOverrides): Promise; + + createLock( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _stakeNFT: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + createLockFor( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _to: PromiseOrValue, + _stakeNFT: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + depositFor( + _tokenId: PromiseOrValue, + _value: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + emergencyRefund(to: PromiseOrValue, overrides?: CallOverrides): Promise; + + epoch(overrides?: CallOverrides): Promise; + + getApproved(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + getLastUserSlope(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + inBootstrapMode(overrides?: CallOverrides): Promise; + + increaseAmount( + _tokenId: PromiseOrValue, + _value: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + increaseUnlockTime( + _tokenId: PromiseOrValue, + _lockDuration: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isApprovedForAll( + _owner: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isApprovedOrOwner( + _spender: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isStaked(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + locked( + arg0: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + amount: BigNumber; + end: BigNumber; + start: BigNumber; + } + >; + + lockedEnd(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + merge( + _from: PromiseOrValue, + _to: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + migrateTokenFor( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _to: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + minLockAmount(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + ownershipChange(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + pointHistory( + arg0: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + bias: BigNumber; + slope: BigNumber; + ts: BigNumber; + blk: BigNumber; + } + >; + + registry(overrides?: CallOverrides): Promise; + + renderingContract(overrides?: CallOverrides): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + royaltyInfo( + _tokenId: PromiseOrValue, + _salePrice: PromiseOrValue, + overrides?: CallOverrides, + ): Promise<[string, BigNumber]>; + + 'safeTransferFrom(address,address,uint256)'( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + setApprovalForAll( + _operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + setMinLockAmount(_minLockAmount: PromiseOrValue, overrides?: CallOverrides): Promise; + + setRenderingContract(_contract: PromiseOrValue, overrides?: CallOverrides): Promise; + + setRoyaltyInfo( + _royaltyRcv: PromiseOrValue, + _royaltyFeeNumerator: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + slopeChanges(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + stopBootstrapMode(overrides?: CallOverrides): Promise; + + supply(overrides?: CallOverrides): Promise; + + supportsInterface(_interfaceID: PromiseOrValue, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex( + _owner: PromiseOrValue, + _tokenIndex: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + tokenURI(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAt(_block: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupplyAtT(t: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupplyWithoutDecay(overrides?: CallOverrides): Promise; + + transferFrom( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + uploadUsers( + _users: PromiseOrValue[], + _value: PromiseOrValue[], + _lockDuration: PromiseOrValue[], + _stakeNFT: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + userPointEpoch(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + userPointHistory( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + bias: BigNumber; + slope: BigNumber; + ts: BigNumber; + blk: BigNumber; + } + >; + + userPointHistoryTs( + _tokenId: PromiseOrValue, + _idx: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + version(overrides?: CallOverrides): Promise; + + votingPowerOf(_owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + }; + + filters: { + 'Approval(address,address,uint256)'( + owner?: PromiseOrValue | null, + approved?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null, + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + approved?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null, + ): ApprovalEventFilter; + + 'ApprovalForAll(address,address,bool)'( + owner?: PromiseOrValue | null, + operator?: PromiseOrValue | null, + approved?: null, + ): ApprovalForAllEventFilter; + ApprovalForAll( + owner?: PromiseOrValue | null, + operator?: PromiseOrValue | null, + approved?: null, + ): ApprovalForAllEventFilter; + + 'Deposit(address,uint256,uint256,uint256,uint8,uint256)'( + provider?: PromiseOrValue | null, + tokenId?: null, + value?: null, + locktime?: PromiseOrValue | null, + deposit_type?: null, + ts?: null, + ): DepositEventFilter; + Deposit( + provider?: PromiseOrValue | null, + tokenId?: null, + value?: null, + locktime?: PromiseOrValue | null, + deposit_type?: null, + ts?: null, + ): DepositEventFilter; + + 'RoleAdminChanged(bytes32,bytes32,bytes32)'( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null, + ): RoleAdminChangedEventFilter; + RoleAdminChanged( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null, + ): RoleAdminChangedEventFilter; + + 'RoleGranted(bytes32,address,address)'( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleGrantedEventFilter; + RoleGranted( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleGrantedEventFilter; + + 'RoleRevoked(bytes32,address,address)'( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleRevokedEventFilter; + RoleRevoked( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + ): RoleRevokedEventFilter; + + 'Supply(uint256,uint256)'(prevSupply?: null, supply?: null): SupplyEventFilter; + Supply(prevSupply?: null, supply?: null): SupplyEventFilter; + + 'Transfer(address,address,uint256)'( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null, + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null, + ): TransferEventFilter; + + 'Withdraw(address,uint256,uint256,uint256)'( + provider?: PromiseOrValue | null, + tokenId?: null, + value?: null, + ts?: null, + ): WithdrawEventFilter; + Withdraw(provider?: PromiseOrValue | null, tokenId?: null, value?: null, ts?: null): WithdrawEventFilter; + }; + + estimateGas: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MIGRATION_ROLE(overrides?: CallOverrides): Promise; + + approve( + _approved: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + balanceOf(_owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + balanceOfAtNFT( + _tokenId: PromiseOrValue, + _block: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + balanceOfNFT(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + balanceOfNFTAt( + _tokenId: PromiseOrValue, + _t: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + blockNumber(overrides?: CallOverrides): Promise; + + checkpoint(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + createLock( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + createLockFor( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _to: PromiseOrValue, + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + depositFor( + _tokenId: PromiseOrValue, + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + emergencyRefund( + to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + epoch(overrides?: CallOverrides): Promise; + + getApproved(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + getLastUserSlope(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + inBootstrapMode(overrides?: CallOverrides): Promise; + + increaseAmount( + _tokenId: PromiseOrValue, + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + increaseUnlockTime( + _tokenId: PromiseOrValue, + _lockDuration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isApprovedForAll( + _owner: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isApprovedOrOwner( + _spender: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isStaked(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + locked(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + lockedEnd(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + merge( + _from: PromiseOrValue, + _to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + migrateTokenFor( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + minLockAmount(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + ownershipChange(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + pointHistory(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + registry(overrides?: CallOverrides): Promise; + + renderingContract(overrides?: CallOverrides): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + royaltyInfo( + _tokenId: PromiseOrValue, + _salePrice: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setApprovalForAll( + _operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setMinLockAmount( + _minLockAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setRenderingContract( + _contract: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setRoyaltyInfo( + _royaltyRcv: PromiseOrValue, + _royaltyFeeNumerator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + slopeChanges(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + stopBootstrapMode(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + supply(overrides?: CallOverrides): Promise; + + supportsInterface(_interfaceID: PromiseOrValue, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex( + _owner: PromiseOrValue, + _tokenIndex: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + tokenURI(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAt(_block: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupplyAtT(t: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupplyWithoutDecay(overrides?: CallOverrides): Promise; + + transferFrom( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + uploadUsers( + _users: PromiseOrValue[], + _value: PromiseOrValue[], + _lockDuration: PromiseOrValue[], + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + userPointEpoch(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + userPointHistory( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + userPointHistoryTs( + _tokenId: PromiseOrValue, + _idx: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + version(overrides?: CallOverrides): Promise; + + votingPowerOf(_owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw( + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; + + populateTransaction: { + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + MIGRATION_ROLE(overrides?: CallOverrides): Promise; + + approve( + _approved: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + balanceOf(_owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + balanceOfAtNFT( + _tokenId: PromiseOrValue, + _block: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + balanceOfNFT(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + balanceOfNFTAt( + _tokenId: PromiseOrValue, + _t: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + blockNumber(overrides?: CallOverrides): Promise; + + checkpoint(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + createLock( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + createLockFor( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _to: PromiseOrValue, + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + depositFor( + _tokenId: PromiseOrValue, + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + emergencyRefund( + to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + epoch(overrides?: CallOverrides): Promise; + + getApproved(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + getLastUserSlope(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + getRoleAdmin(role: PromiseOrValue, overrides?: CallOverrides): Promise; + + grantRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + hasRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + inBootstrapMode(overrides?: CallOverrides): Promise; + + increaseAmount( + _tokenId: PromiseOrValue, + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + increaseUnlockTime( + _tokenId: PromiseOrValue, + _lockDuration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + isApprovedForAll( + _owner: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isApprovedOrOwner( + _spender: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + isStaked(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + locked(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + lockedEnd(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + merge( + _from: PromiseOrValue, + _to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + migrateTokenFor( + _value: PromiseOrValue, + _lockDuration: PromiseOrValue, + _to: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + minLockAmount(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + ownershipChange(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + pointHistory(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + registry(overrides?: CallOverrides): Promise; + + renderingContract(overrides?: CallOverrides): Promise; + + renounceRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + revokeRole( + role: PromiseOrValue, + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + royaltyInfo( + _tokenId: PromiseOrValue, + _salePrice: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setApprovalForAll( + _operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setMinLockAmount( + _minLockAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setRenderingContract( + _contract: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + setRoyaltyInfo( + _royaltyRcv: PromiseOrValue, + _royaltyFeeNumerator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + slopeChanges(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + stopBootstrapMode(overrides?: Overrides & { from?: PromiseOrValue }): Promise; + + supply(overrides?: CallOverrides): Promise; + + supportsInterface( + _interfaceID: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex( + _owner: PromiseOrValue, + _tokenIndex: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + tokenURI(_tokenId: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAt(_block: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupplyAtT(t: PromiseOrValue, overrides?: CallOverrides): Promise; + + totalSupplyWithoutDecay(overrides?: CallOverrides): Promise; + + transferFrom( + _from: PromiseOrValue, + _to: PromiseOrValue, + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + uploadUsers( + _users: PromiseOrValue[], + _value: PromiseOrValue[], + _lockDuration: PromiseOrValue[], + _stakeNFT: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + + userPointEpoch(arg0: PromiseOrValue, overrides?: CallOverrides): Promise; + + userPointHistory( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + userPointHistoryTs( + _tokenId: PromiseOrValue, + _idx: PromiseOrValue, + overrides?: CallOverrides, + ): Promise; + + version(overrides?: CallOverrides): Promise; + + votingPowerOf(_owner: PromiseOrValue, overrides?: CallOverrides): Promise; + + withdraw( + _tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue }, + ): Promise; + }; +} diff --git a/src/apps/mahadao/contracts/ethers/common.ts b/src/apps/mahadao/contracts/ethers/common.ts new file mode 100644 index 000000000..35f31be99 --- /dev/null +++ b/src/apps/mahadao/contracts/ethers/common.ts @@ -0,0 +1,32 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from '@ethersproject/providers'; +import type { Event, EventFilter } from 'ethers'; + +export interface TypedEvent = any, TArgsObject = any> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + (eventFilter: TypedEventFilter, listener: TypedListener): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory ? C : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory ? Parameters : never; + +export type PromiseOrValue = T | Promise; diff --git a/src/apps/mahadao/contracts/ethers/factories/MahadoMahaxLocker__factory.ts b/src/apps/mahadao/contracts/ethers/factories/MahadoMahaxLocker__factory.ts new file mode 100644 index 000000000..7313330a5 --- /dev/null +++ b/src/apps/mahadao/contracts/ethers/factories/MahadoMahaxLocker__factory.ts @@ -0,0 +1,1527 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { MahadoMahaxLocker, MahadoMahaxLockerInterface } from '../MahadoMahaxLocker'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: '_registry', + type: 'address', + }, + { + internalType: 'address', + name: '_royaltyRcv', + type: 'address', + }, + { + internalType: 'address', + name: '_renderingContract', + type: 'address', + }, + { + internalType: 'uint96', + name: '_royaltyFeeNumerator', + type: 'uint96', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'approved', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + indexed: false, + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'ApprovalForAll', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'provider', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + { + indexed: true, + internalType: 'uint256', + name: 'locktime', + type: 'uint256', + }, + { + indexed: false, + internalType: 'enum INFTLocker.DepositType', + name: 'deposit_type', + type: 'uint8', + }, + { + indexed: false, + internalType: 'uint256', + name: 'ts', + type: 'uint256', + }, + ], + name: 'Deposit', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'previousAdminRole', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'newAdminRole', + type: 'bytes32', + }, + ], + name: 'RoleAdminChanged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'sender', + type: 'address', + }, + ], + name: 'RoleGranted', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'sender', + type: 'address', + }, + ], + name: 'RoleRevoked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'prevSupply', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'supply', + type: 'uint256', + }, + ], + name: 'Supply', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'provider', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'ts', + type: 'uint256', + }, + ], + name: 'Withdraw', + type: 'event', + }, + { + inputs: [], + name: 'DEFAULT_ADMIN_ROLE', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'MIGRATION_ROLE', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_approved', + type: 'address', + }, + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_owner', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_block', + type: 'uint256', + }, + ], + name: 'balanceOfAtNFT', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'balanceOfNFT', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_t', + type: 'uint256', + }, + ], + name: 'balanceOfNFTAt', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'blockNumber', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'checkpoint', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_value', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_lockDuration', + type: 'uint256', + }, + { + internalType: 'bool', + name: '_stakeNFT', + type: 'bool', + }, + ], + name: 'createLock', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_value', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_lockDuration', + type: 'uint256', + }, + { + internalType: 'address', + name: '_to', + type: 'address', + }, + { + internalType: 'bool', + name: '_stakeNFT', + type: 'bool', + }, + ], + name: 'createLockFor', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'decimals', + outputs: [ + { + internalType: 'uint8', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_value', + type: 'uint256', + }, + ], + name: 'depositFor', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + ], + name: 'emergencyRefund', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'epoch', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'getApproved', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'getLastUserSlope', + outputs: [ + { + internalType: 'int128', + name: '', + type: 'int128', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + ], + name: 'getRoleAdmin', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'grantRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'hasRole', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'inBootstrapMode', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_value', + type: 'uint256', + }, + ], + name: 'increaseAmount', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_lockDuration', + type: 'uint256', + }, + ], + name: 'increaseUnlockTime', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_owner', + type: 'address', + }, + { + internalType: 'address', + name: '_operator', + type: 'address', + }, + ], + name: 'isApprovedForAll', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_spender', + type: 'address', + }, + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'isApprovedOrOwner', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'isStaked', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'locked', + outputs: [ + { + internalType: 'int128', + name: 'amount', + type: 'int128', + }, + { + internalType: 'uint256', + name: 'end', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'start', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'lockedEnd', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_from', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_to', + type: 'uint256', + }, + ], + name: 'merge', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_value', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_lockDuration', + type: 'uint256', + }, + { + internalType: 'address', + name: '_to', + type: 'address', + }, + ], + name: 'migrateTokenFor', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'minLockAmount', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'ownerOf', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'ownershipChange', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'pointHistory', + outputs: [ + { + internalType: 'int128', + name: 'bias', + type: 'int128', + }, + { + internalType: 'int128', + name: 'slope', + type: 'int128', + }, + { + internalType: 'uint256', + name: 'ts', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'blk', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'registry', + outputs: [ + { + internalType: 'contract IRegistry', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'renderingContract', + outputs: [ + { + internalType: 'contract ITokenURIGenerator', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'renounceRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'role', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'revokeRole', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_salePrice', + type: 'uint256', + }, + ], + name: 'royaltyInfo', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_from', + type: 'address', + }, + { + internalType: 'address', + name: '_to', + type: 'address', + }, + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_from', + type: 'address', + }, + { + internalType: 'address', + name: '_to', + type: 'address', + }, + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + { + internalType: 'bytes', + name: '_data', + type: 'bytes', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_operator', + type: 'address', + }, + { + internalType: 'bool', + name: '_approved', + type: 'bool', + }, + ], + name: 'setApprovalForAll', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_minLockAmount', + type: 'uint256', + }, + ], + name: 'setMinLockAmount', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract ITokenURIGenerator', + name: '_contract', + type: 'address', + }, + ], + name: 'setRenderingContract', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_royaltyRcv', + type: 'address', + }, + { + internalType: 'uint96', + name: '_royaltyFeeNumerator', + type: 'uint96', + }, + ], + name: 'setRoyaltyInfo', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'slopeChanges', + outputs: [ + { + internalType: 'int128', + name: '', + type: 'int128', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'stopBootstrapMode', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'supply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: '_interfaceID', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_owner', + type: 'address', + }, + { + internalType: 'uint256', + name: '_tokenIndex', + type: 'uint256', + }, + ], + name: 'tokenOfOwnerByIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'tokenURI', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_block', + type: 'uint256', + }, + ], + name: 'totalSupplyAt', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 't', + type: 'uint256', + }, + ], + name: 'totalSupplyAtT', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupplyWithoutDecay', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_from', + type: 'address', + }, + { + internalType: 'address', + name: '_to', + type: 'address', + }, + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address[]', + name: '_users', + type: 'address[]', + }, + { + internalType: 'uint256[]', + name: '_value', + type: 'uint256[]', + }, + { + internalType: 'uint256[]', + name: '_lockDuration', + type: 'uint256[]', + }, + { + internalType: 'bool', + name: '_stakeNFT', + type: 'bool', + }, + ], + name: 'uploadUsers', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'userPointEpoch', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'userPointHistory', + outputs: [ + { + internalType: 'int128', + name: 'bias', + type: 'int128', + }, + { + internalType: 'int128', + name: 'slope', + type: 'int128', + }, + { + internalType: 'uint256', + name: 'ts', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'blk', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_idx', + type: 'uint256', + }, + ], + name: 'userPointHistoryTs', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'version', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_owner', + type: 'address', + }, + ], + name: 'votingPowerOf', + outputs: [ + { + internalType: 'uint256', + name: '_power', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_tokenId', + type: 'uint256', + }, + ], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class MahadoMahaxLocker__factory { + static readonly abi = _abi; + static createInterface(): MahadoMahaxLockerInterface { + return new utils.Interface(_abi) as MahadoMahaxLockerInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): MahadoMahaxLocker { + return new Contract(address, _abi, signerOrProvider) as MahadoMahaxLocker; + } +} diff --git a/src/apps/mahadao/contracts/ethers/factories/index.ts b/src/apps/mahadao/contracts/ethers/factories/index.ts new file mode 100644 index 000000000..3c0c8b2e3 --- /dev/null +++ b/src/apps/mahadao/contracts/ethers/factories/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { MahadoMahaxLocker__factory } from './MahadoMahaxLocker__factory'; diff --git a/src/apps/mahadao/contracts/ethers/index.ts b/src/apps/mahadao/contracts/ethers/index.ts new file mode 100644 index 000000000..5d8c4b11a --- /dev/null +++ b/src/apps/mahadao/contracts/ethers/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { MahadoMahaxLocker } from './MahadoMahaxLocker'; +export * as factories from './factories'; +export { MahadoMahaxLocker__factory } from './factories/MahadoMahaxLocker__factory'; diff --git a/src/apps/mahadao/contracts/index.ts b/src/apps/mahadao/contracts/index.ts new file mode 100644 index 000000000..08f072c2b --- /dev/null +++ b/src/apps/mahadao/contracts/index.ts @@ -0,0 +1,23 @@ +import { Injectable, Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { ContractFactory } from '~contract/contracts'; +import { Network } from '~types/network.interface'; + +import { MahadoMahaxLocker__factory } from './ethers'; + +// eslint-disable-next-line +type ContractOpts = { address: string; network: Network }; + +@Injectable() +export class MahadaoContractFactory extends ContractFactory { + constructor(@Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit) { + super((network: Network) => appToolkit.getNetworkProvider(network)); + } + + mahadoMahaxLocker({ address, network }: ContractOpts) { + return MahadoMahaxLocker__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } +} + +export type { MahadoMahaxLocker } from './ethers'; diff --git a/src/apps/mahadao/ethereum/mahadao.balance-fetcher.ts b/src/apps/mahadao/ethereum/mahadao.balance-fetcher.ts new file mode 100644 index 000000000..28ca58cdc --- /dev/null +++ b/src/apps/mahadao/ethereum/mahadao.balance-fetcher.ts @@ -0,0 +1,52 @@ +import { Inject } from '@nestjs/common'; +import { BigNumber } from 'ethers'; +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present'; +import { CurveVotingEscrowContractPositionBalanceHelper } from '~apps/curve/helpers/curve.voting-escrow.contract-position-balance-helper'; +import { BalanceFetcher } from '~balance/balance-fetcher.interface'; +import { Network } from '~types/network.interface'; + +import { MAHADAO_DEFINITION } from '../mahadao.definition'; +import { MahadaoContractFactory, MahadoMahaxLocker } from '../contracts'; + +const network = Network.ETHEREUM_MAINNET; + +@Register.BalanceFetcher(MAHADAO_DEFINITION.id, network) +export class EthereumMahadaoBalanceFetcher implements BalanceFetcher { + constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(CurveVotingEscrowContractPositionBalanceHelper) + private readonly curveVotingEscrowContractPositionBalanceHelper: CurveVotingEscrowContractPositionBalanceHelper, + @Inject(MahadaoContractFactory) private readonly bluebitContractFactory: MahadaoContractFactory,) { } + + async getMAHALockedAmount(address: string) { + return this.curveVotingEscrowContractPositionBalanceHelper.getBalances({ + address, + network, + appId: MAHADAO_DEFINITION.id, + groupId: MAHADAO_DEFINITION.groups.locker.id, + resolveContract: ({ address }) => this.bluebitContractFactory.mahadoMahaxLocker({ network, address }), + resolveLockedTokenBalance: async ({ contract, multicall }) => { + const noOfNft = await multicall.wrap(contract).balanceOf(address) + let totalAmount = BigNumber.from(0) + for (let i = 0; i < noOfNft.toNumber(); i++) { + const nftId = await multicall.wrap(contract).tokenOfOwnerByIndex(address, i) + const nftAmount = await multicall.wrap(contract).locked(nftId.toNumber()) + totalAmount = totalAmount.add(nftAmount.amount) + } + return totalAmount + } + }); + } + + async getBalances(address: string) { + const [mahaLockAmounts] = await Promise.all([ + this.getMAHALockedAmount(address), + ]); + + return presentBalanceFetcherResponse([{ + label: "MAHA Lock", + assets: mahaLockAmounts + }]); + } +} diff --git a/src/apps/mahadao/ethereum/mahadao.locker.contract-position-fetcher.ts b/src/apps/mahadao/ethereum/mahadao.locker.contract-position-fetcher.ts new file mode 100644 index 000000000..ce888df79 --- /dev/null +++ b/src/apps/mahadao/ethereum/mahadao.locker.contract-position-fetcher.ts @@ -0,0 +1,35 @@ +import { Inject } from '@nestjs/common'; +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { CurveVotingEscrowContractPositionHelper } from '~apps/curve/helpers/curve.voting-escrow.contract-position-helper'; +import { ContractPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { MahadaoContractFactory, MahadoMahaxLocker } from '../contracts'; +import { MAHADAO_DEFINITION } from '../mahadao.definition'; + +const appId = MAHADAO_DEFINITION.id; +const groupId = MAHADAO_DEFINITION.groups.locker.id; +const network = Network.ETHEREUM_MAINNET; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class EthereumMahadaoLockerContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(CurveVotingEscrowContractPositionHelper) + private readonly curveVotingEscrowContractPositionHelper: CurveVotingEscrowContractPositionHelper, + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(MahadaoContractFactory) private readonly mahadaoContractFactory: MahadaoContractFactory, + ) { } + + async getPositions() { + return this.curveVotingEscrowContractPositionHelper.getContractPositions({ + votingEscrowAddress: '0xbdD8F4dAF71C2cB16ccE7e54BB81ef3cfcF5AAcb', + appId: MAHADAO_DEFINITION.id, + groupId: MAHADAO_DEFINITION.groups.locker.id, + network, + resolveContract: ({ address }) => this.mahadaoContractFactory.mahadoMahaxLocker({ network, address }), + resolveLockedTokenAddress: () => Promise.resolve("0xB4d930279552397bbA2ee473229f89Ec245bc365"), + }); + } +} diff --git a/src/apps/mahadao/index.ts b/src/apps/mahadao/index.ts new file mode 100644 index 000000000..a9e1e7b06 --- /dev/null +++ b/src/apps/mahadao/index.ts @@ -0,0 +1,3 @@ +export { MAHADAO_DEFINITION, MahadaoAppDefinition } from './mahadao.definition'; +export { MahadaoAppModule } from './mahadao.module'; +export { MahadaoContractFactory } from './contracts'; diff --git a/src/apps/mahadao/mahadao.definition.ts b/src/apps/mahadao/mahadao.definition.ts new file mode 100644 index 000000000..5ea9cb45e --- /dev/null +++ b/src/apps/mahadao/mahadao.definition.ts @@ -0,0 +1,43 @@ +import { Register } from '~app-toolkit/decorators'; +import { appDefinition, AppDefinition } from '~app/app.definition'; +import { AppAction, AppTag, GroupType } from '~app/app.interface'; +import { Network } from '~types/network.interface'; + +export const MAHADAO_DEFINITION = appDefinition({ + id: 'mahadao', + name: 'mahadao', + description: + 'MahaDAO is on a community-driven mission to promote financial liberty with a decentralized currency ($ARTH) and a governance token ($MAHA)', + url: 'https://gov.mahadao.com/#/', + + groups: { + locker: { + id: 'locker', + type: GroupType.TOKEN, + label: 'MAHAX Locker', + }, + }, + + tags: [AppTag.FARMING, AppTag.STAKING], + keywords: [], + links: {}, + + supportedNetworks: { + [Network.ETHEREUM_MAINNET]: [AppAction.VIEW], + }, + // token: { + // address: '0xbdD8F4dAF71C2cB16ccE7e54BB81ef3cfcF5AAcb', + // network: Network.ETHEREUM_MAINNET, + // }, + + primaryColor: '#fff', +}); + +@Register.AppDefinition(MAHADAO_DEFINITION.id) +export class MahadaoAppDefinition extends AppDefinition { + constructor() { + super(MAHADAO_DEFINITION); + } +} + +export default MAHADAO_DEFINITION; diff --git a/src/apps/mahadao/mahadao.module.ts b/src/apps/mahadao/mahadao.module.ts new file mode 100644 index 000000000..4df4f4f11 --- /dev/null +++ b/src/apps/mahadao/mahadao.module.ts @@ -0,0 +1,22 @@ +import { Register } from '~app-toolkit/decorators'; +import { AbstractApp } from '~app/app.dynamic-module'; +import { CurveVotingEscrowContractPositionBalanceHelper } from '~apps/curve/helpers/curve.voting-escrow.contract-position-balance-helper'; +import { CurveVotingEscrowContractPositionHelper } from '~apps/curve/helpers/curve.voting-escrow.contract-position-helper'; + +import { MahadaoContractFactory } from './contracts'; +import { EthereumMahadaoBalanceFetcher } from './ethereum/mahadao.balance-fetcher'; +import { EthereumMahadaoLockerContractPositionFetcher } from './ethereum/mahadao.locker.contract-position-fetcher'; +import { MahadaoAppDefinition, MAHADAO_DEFINITION } from './mahadao.definition'; + +@Register.AppModule({ + appId: MAHADAO_DEFINITION.id, + providers: [ + CurveVotingEscrowContractPositionBalanceHelper, + CurveVotingEscrowContractPositionHelper, + EthereumMahadaoBalanceFetcher, + EthereumMahadaoLockerContractPositionFetcher, + MahadaoAppDefinition, + MahadaoContractFactory, + ], +}) +export class MahadaoAppModule extends AbstractApp() {}