diff --git a/asset-manifest.json b/asset-manifest.json
index d213f0bc8..5c4d72769 100644
--- a/asset-manifest.json
+++ b/asset-manifest.json
@@ -7,8 +7,8 @@
"static/js/2.46aee897.chunk.js": "/static/js/2.46aee897.chunk.js",
"static/js/2.46aee897.chunk.js.map": "/static/js/2.46aee897.chunk.js.map",
"main.css": "/static/css/main.1369a069.chunk.css",
- "main.js": "/static/js/main.79313368.chunk.js",
- "main.js.map": "/static/js/main.79313368.chunk.js.map",
+ "main.js": "/static/js/main.a51842c6.chunk.js",
+ "main.js.map": "/static/js/main.a51842c6.chunk.js.map",
"runtime-main.js": "/static/js/runtime-main.b2531083.js",
"runtime-main.js.map": "/static/js/runtime-main.b2531083.js.map",
"static/css/5.7fc9bc2b.chunk.css": "/static/css/5.7fc9bc2b.chunk.css",
@@ -75,6 +75,6 @@
"static/css/5.7fc9bc2b.chunk.css",
"static/js/5.dfc4a0aa.chunk.js",
"static/css/main.1369a069.chunk.css",
- "static/js/main.79313368.chunk.js"
+ "static/js/main.a51842c6.chunk.js"
]
}
\ No newline at end of file
diff --git a/index.html b/index.html
index 445602f0c..18a0483bb 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-
Tribute You need to enable JavaScript to run this app.
\ No newline at end of file
+Tribute You need to enable JavaScript to run this app.
\ No newline at end of file
diff --git a/static/js/main.79313368.chunk.js b/static/js/main.79313368.chunk.js
deleted file mode 100644
index 018a223c0..000000000
--- a/static/js/main.79313368.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(this["webpackJsonptribute-ui"]=this["webpackJsonptribute-ui"]||[]).push([[3],{104:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var r=n(1),a=n(212);function c(){return Object(r.useContext)(a.a)}},106:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(0);function a(){return Object(r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true","data-icon":"times","data-prefix":"fal",viewBox:"0 0 320 512",children:Object(r.jsx)("path",{fill:"currentColor",d:"M193.94 256L296.5 153.44l21.15-21.15c3.12-3.12 3.12-8.19 0-11.31l-22.63-22.63c-3.12-3.12-8.19-3.12-11.31 0L160 222.06 36.29 98.34c-3.12-3.12-8.19-3.12-11.31 0L2.34 120.97c-3.12 3.12-3.12 8.19 0 11.31L126.06 256 2.34 379.71c-3.12 3.12-3.12 8.19 0 11.31l22.63 22.63c3.12 3.12 8.19 3.12 11.31 0L160 289.94 262.56 392.5l21.15 21.15c3.12 3.12 8.19 3.12 11.31 0l22.63-22.63c3.12-3.12 3.12-8.19 0-11.31L193.94 256z"})})}},11:function(e,t,n){"use strict";(function(e){n.d(t,"m",(function(){return V})),n.d(t,"C",(function(){return W})),n.d(t,"g",(function(){return Y})),n.d(t,"s",(function(){return H})),n.d(t,"c",(function(){return K})),n.d(t,"d",(function(){return z})),n.d(t,"k",(function(){return q})),n.d(t,"o",(function(){return J})),n.d(t,"n",(function(){return $})),n.d(t,"J",(function(){return Z})),n.d(t,"j",(function(){return ee})),n.d(t,"h",(function(){return te})),n.d(t,"b",(function(){return ne})),n.d(t,"I",(function(){return re})),n.d(t,"e",(function(){return ae})),n.d(t,"B",(function(){return ce})),n.d(t,"v",(function(){return se})),n.d(t,"q",(function(){return oe})),n.d(t,"A",(function(){return ie})),n.d(t,"t",(function(){return ue})),n.d(t,"i",(function(){return de})),n.d(t,"a",(function(){return le})),n.d(t,"y",(function(){return be})),n.d(t,"f",(function(){return je})),n.d(t,"F",(function(){return fe})),n.d(t,"l",(function(){return Oe})),n.d(t,"G",(function(){return pe})),n.d(t,"z",(function(){return he})),n.d(t,"x",(function(){return me})),n.d(t,"u",(function(){return ve})),n.d(t,"E",(function(){return xe})),n.d(t,"H",(function(){return Ne})),n.d(t,"w",(function(){return ge})),n.d(t,"p",(function(){return Ee})),n.d(t,"D",(function(){return Ae})),n.d(t,"r",(function(){return we}));var r,a,c,s,o,i,u,d,l,b,j,f,O,p,h,m,v,x,N,g,E,A,w=n(8),I=n(436),y=n(135),C=n(269),D=n(464);Object(I.config)({path:Object(C.resolve)(e,"../.env")});var S=Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0,REACT_APP_COUPON_API_URL:"https://coupon.dev.openlaw.io",REACT_APP_SNAPSHOT_SPACE:"tribute",REACT_APP_DAO_REGISTRY_CONTRACT_ADDRESS:"0xf5af0d9c3e4091a48925902eaAB2982e44E7a4C5",REACT_APP_SNAPSHOT_HUB_API_URL:"https://snapshot-hub-erc712.dev.thelao.io",REACT_APP_ENVIRONMENT:"development",REACT_APP_INFURA_PROJECT_ID_DEV:"d77d55afab36442eb530fac5e2a27ed1",REACT_APP_MULTICALL_CONTRACT_ADDRESS:"0xde0Ca6340FDE1906B3c4c1A2bdEE060933e4b253",REACT_APP_GRAPH_API_URL:"https://api.thegraph.com/subgraphs/name/openlawteam/tribute-dev"}),_=S.REACT_APP_DAO_REGISTRY_CONTRACT_ADDRESS,k=S.REACT_APP_DEFAULT_CHAIN_NAME_LOCAL,T=S.REACT_APP_ENVIRONMENT,R=S.REACT_APP_GRAPH_API_URL,P=S.REACT_APP_INFURA_PROJECT_ID_DEV,F=S.REACT_APP_INFURA_PROJECT_ID_LOCAL,L=S.REACT_APP_INFURA_PROJECT_ID_PROD,M=S.REACT_APP_MULTICALL_CONTRACT_ADDRESS,B=S.REACT_APP_SNAPSHOT_HUB_API_URL,G=S.REACT_APP_COUPON_API_URL,U=S.REACT_APP_SNAPSHOT_SPACE,V=T,W="localhost"===V?"/snapshot-hub":B,Y=G,H=R,K={MAINNET:1,ROPSTEN:3,RINKEBY:4,GOERLI:5,KOVAN:42,GANACHE:1337},z=(r={},Object(w.a)(r,K.MAINNET,"Main Ethereum Network"),Object(w.a)(r,K.ROPSTEN,"Ropsten Test Network"),Object(w.a)(r,K.RINKEBY,"Rinkeby Test Network"),Object(w.a)(r,K.GOERLI,"G\xf6rli Test Network"),Object(w.a)(r,K.KOVAN,"Kovan Test Network"),Object(w.a)(r,K.GANACHE,"Ganache Test Network"),r),q="production"===T?K.MAINNET:"development"===T?K.RINKEBY:k?K[k]:K.GANACHE,J=(a={},Object(w.a)(a,K.MAINNET,"https://etherscan.io"),Object(w.a)(a,K.ROPSTEN,"https://ropsten.etherscan.io"),Object(w.a)(a,K.RINKEBY,"https://rinkeby.etherscan.io"),Object(w.a)(a,K.GOERLI,"https://goerli.etherscan.io"),Object(w.a)(a,K.KOVAN,"https://kovan.etherscan.io"),a),Q=(c={},Object(w.a)(c,K.MAINNET,"wss://mainnet.infura.io/ws/v3"),Object(w.a)(c,K.ROPSTEN,"wss://ropsten.infura.io/ws/v3"),Object(w.a)(c,K.RINKEBY,"wss://rinkeby.infura.io/ws/v3"),Object(w.a)(c,K.GOERLI,"wss://goerli.infura.io/ws/v3"),Object(w.a)(c,K.KOVAN,"wss://kovan.infura.io/ws/v3"),c),X="production"===T?L:"development"===T?P:F,$=Q[q]?"".concat(Q[q],"/").concat(X):q===K.GANACHE?"ws://127.0.0.1:7545":"",Z={injected:{display:{name:"MetaMask",description:"Connect with the provider in your Browser"},package:null},walletconnect:{display:{name:"WalletConnect",description:"Connect with your mobile wallet"},package:D.a,options:{infuraId:X,qrcodeModalOptions:{mobileLinks:Object(y.isMobile)()?["rainbow","metamask","argent","trust"]:[]}}}},ee=_,te=(s={},Object(w.a)(s,K.MAINNET,""),Object(w.a)(s,K.ROPSTEN,""),Object(w.a)(s,K.RINKEBY,"0x392E9D1c7FaE6C62853e089466FFAE3F0a93c680"),Object(w.a)(s,K.GOERLI,""),Object(w.a)(s,K.KOVAN,""),Object(w.a)(s,K.GANACHE,"0x6d92a8E4aB80adcBbFDA44ef69fe847f82def641"),s),ne=(o={},Object(w.a)(o,K.MAINNET,""),Object(w.a)(o,K.ROPSTEN,""),Object(w.a)(o,K.RINKEBY,"0x0d316BAa42a0538f2aAca3F08D368FE9C4A87A7A"),Object(w.a)(o,K.GOERLI,""),Object(w.a)(o,K.KOVAN,""),Object(w.a)(o,K.GANACHE,"0xcD1639FD072113CC86e15f65f1505C6D58Aa7412"),o),re=(i={},Object(w.a)(i,K.MAINNET,""),Object(w.a)(i,K.ROPSTEN,""),Object(w.a)(i,K.RINKEBY,"0xf0D4BC92F8aD06CC163B96459787Dd563aAFC1f7"),Object(w.a)(i,K.GOERLI,""),Object(w.a)(i,K.KOVAN,""),Object(w.a)(i,K.GANACHE,"0xcF34FFFBba648719DAe106202674949f1679772B"),u={},Object(w.a)(u,K.MAINNET,""),Object(w.a)(u,K.ROPSTEN,""),Object(w.a)(u,K.RINKEBY,"0x69Bd1bE55Fff22bE1d5468dFf1a6d0a184c520F7"),Object(w.a)(u,K.GOERLI,""),Object(w.a)(u,K.KOVAN,""),Object(w.a)(u,K.GANACHE,"0x862d71d6E9Be8a7495EfEBa6f2b657b00E629c95"),d={},Object(w.a)(d,K.MAINNET,""),Object(w.a)(d,K.ROPSTEN,""),Object(w.a)(d,K.RINKEBY,"0xc9415afc432CC56912f54682cC2Ea80ADdE1a89B"),Object(w.a)(d,K.GOERLI,""),Object(w.a)(d,K.KOVAN,""),Object(w.a)(d,K.GANACHE,"0xfB4E7C2FD8Ceb2757D2C4cE4749ebE326fc369D4"),d),ae=(l={},Object(w.a)(l,K.MAINNET,""),Object(w.a)(l,K.ROPSTEN,""),Object(w.a)(l,K.RINKEBY,"0x92866ac08edFEAA8C52dEF0c12926FA7E95df8fB"),Object(w.a)(l,K.GOERLI,""),Object(w.a)(l,K.KOVAN,""),Object(w.a)(l,K.GANACHE,"0x65CaCA9F2638Fb2B245E9694f00343F0b6CB6F77"),l),ce=(b={},Object(w.a)(b,K.MAINNET,""),Object(w.a)(b,K.ROPSTEN,""),Object(w.a)(b,K.RINKEBY,"0xD3C2cE38c905B9207e35D7EcE51c17b22EAb4afe"),Object(w.a)(b,K.GOERLI,""),Object(w.a)(b,K.KOVAN,""),Object(w.a)(b,K.GANACHE,"0x314C824Ea4586798DF8B46121E881Defa40CB47E"),b),se=(j={},Object(w.a)(j,K.MAINNET,""),Object(w.a)(j,K.ROPSTEN,""),Object(w.a)(j,K.RINKEBY,"0x03BE4284E9F3E7d1fd19cB0442713609105db7E7"),Object(w.a)(j,K.GOERLI,""),Object(w.a)(j,K.KOVAN,""),Object(w.a)(j,K.GANACHE,"0xeD025b5BA14b8f3A085057b9D7Baa13998343aA8"),j),oe=(f={},Object(w.a)(f,K.MAINNET,""),Object(w.a)(f,K.ROPSTEN,""),Object(w.a)(f,K.RINKEBY,"0xA007fc56f540670F6ba17FD2b3B931FC72A7820a"),Object(w.a)(f,K.GOERLI,""),Object(w.a)(f,K.KOVAN,""),Object(w.a)(f,K.GANACHE,"0x4a7A5946567672c577EaF2b866BCeBc177E455E8"),f),ie=(O={},Object(w.a)(O,K.MAINNET,""),Object(w.a)(O,K.ROPSTEN,""),Object(w.a)(O,K.RINKEBY,"0x6fA3f2BC09fB13091BF40C6920a9251B72348456"),Object(w.a)(O,K.GOERLI,""),Object(w.a)(O,K.KOVAN,""),Object(w.a)(O,K.GANACHE,"0x4e1Ccf6Bca8d14B670478d8C4e2aEc9f6277A7f5"),O),ue=(p={},Object(w.a)(p,K.MAINNET,""),Object(w.a)(p,K.ROPSTEN,""),Object(w.a)(p,K.RINKEBY,"0xf6F042cB61E409dbFE34A5fbC76Db334B7a93364"),Object(w.a)(p,K.GOERLI,""),Object(w.a)(p,K.KOVAN,""),Object(w.a)(p,K.GANACHE,"0x72a011Aa67F8214a146A162A99B322017ad763fD"),p),de=(h={},Object(w.a)(h,K.MAINNET,""),Object(w.a)(h,K.ROPSTEN,""),Object(w.a)(h,K.RINKEBY,"0x35B3babfB8FF455903f6e89cEaa83140e09495F9"),Object(w.a)(h,K.GOERLI,""),Object(w.a)(h,K.KOVAN,""),Object(w.a)(h,K.GANACHE,"0x4d4243f2d605282CBd27C8391f05b77316d1a561"),h),le=(m={},Object(w.a)(m,K.MAINNET,""),Object(w.a)(m,K.ROPSTEN,""),Object(w.a)(m,K.RINKEBY,"0xed65eD0c561E77597E4D8472be1b4b184c31Fde4"),Object(w.a)(m,K.GOERLI,""),Object(w.a)(m,K.KOVAN,""),Object(w.a)(m,K.GANACHE,"0xA8EA078cF1D3837a025329c46A4E0F441Cb2eE87"),m),be=(v={},Object(w.a)(v,K.MAINNET,""),Object(w.a)(v,K.ROPSTEN,""),Object(w.a)(v,K.RINKEBY,"0xc69DF0C3855A6CaBF0c5983bD504770E5BFA8e84"),Object(w.a)(v,K.GOERLI,""),Object(w.a)(v,K.KOVAN,""),Object(w.a)(v,K.GANACHE,"0x538a4f00d64d2597717cAAd4D01C963317e3Ae40"),v),je=(x={},Object(w.a)(x,K.MAINNET,""),Object(w.a)(x,K.ROPSTEN,""),Object(w.a)(x,K.RINKEBY,"0xb5935758c16B785d3749F20D65F5B501578dCb1c"),Object(w.a)(x,K.GOERLI,""),Object(w.a)(x,K.KOVAN,""),Object(w.a)(x,K.GANACHE,"0x9A2E533FBa58Ec8b0dA34438154C48E295C80576"),x),fe=(N={},Object(w.a)(N,K.MAINNET,""),Object(w.a)(N,K.ROPSTEN,""),Object(w.a)(N,K.RINKEBY,"0xD0dCB66d60f6EbF838e22423f58B01D6F7a60187"),Object(w.a)(N,K.GOERLI,""),Object(w.a)(N,K.KOVAN,""),Object(w.a)(N,K.GANACHE,"0xa7D723BFc4deC341da03E70Af4026B3926b1E8Db"),N),Oe=(g={},Object(w.a)(g,K.MAINNET,""),Object(w.a)(g,K.ROPSTEN,""),Object(w.a)(g,K.RINKEBY,"0xB54D48D8471839D670C0e24548A7CfEA78bB1879"),Object(w.a)(g,K.GOERLI,""),Object(w.a)(g,K.KOVAN,""),Object(w.a)(g,K.GANACHE,"0x6749b9151B654A77ddA3Fa8f2b259E0E592065F6"),g),pe=(E={},Object(w.a)(E,K.MAINNET,""),Object(w.a)(E,K.ROPSTEN,""),Object(w.a)(E,K.RINKEBY,"0x939Fd23C38496aB54fa4BD0b2ED535DE100f7d8F"),Object(w.a)(E,K.GOERLI,""),Object(w.a)(E,K.KOVAN,""),Object(w.a)(E,K.GANACHE,"0x4Df3729e7B952EBE6d18b52132D2A8af2F2D167A"),E),he=(A={},Object(w.a)(A,K.MAINNET,""),Object(w.a)(A,K.ROPSTEN,""),Object(w.a)(A,K.RINKEBY,"0xDfbe754ec9c2aA26ac2f429CfcEd819910eF5926"),Object(w.a)(A,K.GOERLI,""),Object(w.a)(A,K.KOVAN,""),Object(w.a)(A,K.GANACHE,"0xae02a075290D2efD74F0D3fE2DfE64831320855a"),A),me=M,ve="0x000000000000000000000000000000000000dead",xe="0x000000000000000000000000000000000000babe",Ne="0x00000000000000000000000000000000000FF1CE",ge="0x00000000000000000000000000000000DECAFBAD",Ee="0x0000000000000000000000000000000000000000",Ae=U,we="production"===T?1e4:5e3}).call(this,"/")},12:function(e,t,n){"use strict";function r(e,t){var n=void 0!==t?e.filter((function(e){return e!==t})):e;return n[Math.floor(Math.random()*n.length)]}n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return c})),n.d(t,"c",(function(){return s})),n.d(t,"d",(function(){return o})),n.d(t,"e",(function(){return i})),n.d(t,"f",(function(){return d})),n.d(t,"g",(function(){return l})),n.d(t,"h",(function(){return p})),n.d(t,"i",(function(){return O})),n.d(t,"j",(function(){return v})),n.d(t,"k",(function(){return x})),n.d(t,"l",(function(){return N.a}));var a=n(4);function c(){var e=function(){},t=window.__REACT_DEVTOOLS_GLOBAL_HOOK__;if("object"===typeof t)for(var n=0,r=Object.entries(t);n0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=e+1-t;return Object(m.a)(Array(n)).map((function(e,n){return t+n}))}var x=function(e){return e.toString().replace(/,/g,"")};var N=n(201);n(25)},136:function(e,t,n){"use strict";n.d(t,"a",(function(){return I})),n.d(t,"b",(function(){return T})),n.d(t,"c",(function(){return W})),n.d(t,"d",(function(){return K})),n.d(t,"e",(function(){return z}));var r=n(2),a=n.n(r),c=n(3),s=n(5),o=n(4),i=n(22),u=n(14),d=n(1),l=n(11),b=n(32),j=n(42),f=n(7),O=n(51),p=n(12),h=n(57),m=n(36),v=n(15),x=n(69),N=n(30),g=n(50),E=n(24),A=n(41),w=n(0);function I(e){var t,n=e.adapterName,r=e.proposal,I=r.daoProposalVotingAdapter,y=r.snapshotProposal,C=Object(d.useState)(f.f.STANDBY),D=Object(o.a)(C,2),S=D[0],_=D[1],k=Object(d.useState)(),T=Object(o.a)(k,2),R=T[0],P=T[1],F=Object(u.c)((function(e){var t;return null===(t=e.contracts.BankExtensionContract)||void 0===t?void 0:t.contractAddress})),L=Object(u.c)((function(e){var t;return null===(t=e.contracts.BankExtensionContract)||void 0===t?void 0:t.instance.methods})),M=Object(u.c)((function(e){var t;return null===(t=e.contracts.BankExtensionContract)||void 0===t?void 0:t.abi.find((function(e){return"getPriorAmount"===e.name}))})),B=Object(u.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.contractAddress})),G=null===(t=Object(u.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.abi})))||void 0===t?void 0:t.find((function(e){return"getMemberAddress"===e.name})),U=Object(u.c)((function(e){return e.contracts})),V=Object(v.f)(),W=V.account,Y=V.provider,H=V.web3Instance,K=Object(v.a)(),z=K.txEtherscanURL,q=K.txIsPromptOpen,J=K.txSend,Q=K.txStatus,X=Object(m.g)(),$=X.isDisabled,Z=X.openWhyDisabledModal,ee=X.WhyDisabledModal,te=Object(v.b)().fast,ne=null===I||void 0===I?void 0:I.getWeb3VotingAdapterContract().methods,re=S===f.f.AWAITING_CONFIRM||S===f.f.PENDING||Q===f.f.AWAITING_CONFIRM||Q===f.f.PENDING,ae=Q===f.f.FULFILLED&&S===f.f.FULFILLED,ce=re||ae||q;function se(){return(se=Object(s.a)(a.a.mark((function e(){var t,r,s,o,u,d,m,v,x,N,g,E,A,w,I,C,D,S,k,T,R,V,K;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,B){e.next=3;break}throw new Error("No DAO Registry address was found.");case 3:if(F){e.next=5;break}throw new Error("No Bank Extension address was found.");case 5:if(G){e.next=7;break}throw new Error("No ABI for `getMemberAddress` was found.");case 7:if(M){e.next=9;break}throw new Error("No ABI for `getPriorAmount` was found.");case 9:if(y){e.next=11;break}throw new Error("No Snapshot proposal was found.");case 11:if(y.votes){e.next=13;break}throw new Error("No Snapshot proposal votes Array was found.");case 13:if(ne){e.next=15;break}throw new Error('No "OffchainVotingContract" methods were found.');case 15:if(H){e.next=17;break}throw new Error("No Web3 instance was found.");case 17:return _(f.f.AWAITING_CONFIRM),r=y.idInDAO,s=y.msg.payload.snapshot.toString(),o=Object(b.d)(n,U),e.next=23,L.getPriorAmount(l.E,l.w,s).call();case 23:return u=e.sent,d=Object(p.j)(Number(u)-1,0).map((function(e){return[B,G,[e.toString()]]})),e.next=27,Object(b.j)({calls:d,web3Instance:H});case 27:return m=e.sent,v=m.map((function(e){return[F,M,[e,l.H,s]]})),e.next=31,Object(b.j)({calls:v,web3Instance:H});case 31:return x=e.sent,N=m.map((function(e,t){var n,a=Object.values((null===(n=y.votes)||void 0===n?void 0:n.find((function(t){return Object(p.i)(e)===Object(p.i)(Object.values(t)[0].msg.payload.metadata.memberAddress)})))||{})[0];return Object(i.createVote)({proposalId:r,sig:(null===a||void 0===a?void 0:a.sig)||"0x",timestamp:a?Number(a.msg.timestamp):0,voteYes:(null===a||void 0===a?void 0:a.msg.payload.choice)===i.VoteChoicesIndex.Yes,weight:a?x[t]:"0"})})),e.next=35,Object(i.prepareVoteResult)({actionId:o,chainId:l.k,daoAddress:B,votes:N});case 35:return g=e.sent,E=g.voteResultTree,A=g.result,w=E.getHexRoot(),I=A[A.length-1],e.next=42,ne.getBadNodeError(B,r,!0,w,s,0,I).call();case 42:if(C=e.sent,Number(C)===j.a.OK){e.next=45;break}throw new Error("Cannot submit off-chain voting result. Node has an error: ".concat(j.a[C],"."));case 45:return D=Object(i.getVoteResultRootDomainDefinition)(B,o,l.k),S=D.domain,k=D.types,T=JSON.stringify({domain:S,message:{root:w},primaryType:h.a,types:k}),e.next=49,Object(i.signMessage)(Y,W,T);case 49:return R=e.sent,e.next=52,Object(O.b)(w);case 52:if(e.t2=t=e.sent,e.t1=null===e.t2,e.t1){e.next=56;break}e.t1=void 0===t;case 56:if(!e.t1){e.next=60;break}e.t3=void 0,e.next=61;break;case 60:e.t3=t.merkle_root.length;case 61:if(e.t0=e.t3,e.t0){e.next=64;break}e.t0="";case 64:if(e.t4=e.t0,e.t4>0){e.next=69;break}return e.next=69,Object(O.g)({actionId:o,chainId:l.k,steps:A,merkleRoot:w,verifyingContract:B});case 69:return _(f.f.FULFILLED),V=[B,r,w,I,R],K=Object(c.a)({from:W||""},te?{gasPrice:te}:null),e.next=74,J("submitVoteResult",ne,V,K);case 74:e.next=80;break;case 76:e.prev=76,e.t5=e.catch(0),P(e.t5),_(f.f.REJECTED);case 80:case"end":return e.stop()}}),e,null,[[0,76]])})))).apply(this,arguments)}return Object(w.jsxs)(w.Fragment,{children:[Object(w.jsxs)("div",{children:[Object(w.jsx)("button",{className:"proposaldetails__button",disabled:$||ce,onClick:$||ce?function(){}:function(){return se.apply(this,arguments)},children:re?Object(w.jsx)(A.a,{}):ae?"Done":"Submit Vote Result"}),Object(w.jsx)(N.a,{error:R,renderText:"Something went wrong"}),ce&&Object(w.jsx)("div",{className:"form__submit-status-container",children:function(){if(Q===f.f.AWAITING_CONFIRM||S===f.f.AWAITING_CONFIRM)return"Awaiting your confirmation\u2026";switch(Q){case f.f.PENDING:return Object(w.jsxs)(w.Fragment,{children:[Object(w.jsx)(x.a,{intervalMs:2e3,messages:h.b,useFirstItemStart:!0,render:function(e){return Object(w.jsx)(E.a,{children:e},e)}}),Object(w.jsx)(g.a,{url:z,isPending:!0})]});case f.f.FULFILLED:return Object(w.jsxs)(w.Fragment,{children:[Object(w.jsx)("div",{children:"Result submitted!"}),Object(w.jsx)(g.a,{url:z})]});default:return null}}()}),$&&Object(w.jsx)("button",{className:"button--help-centered",onClick:Z,children:"Why is submitting disabled?"})]}),Object(w.jsx)(ee,{title:"Why is this disabled?"})]})}var y=n(8),C=n(9),D=n(46),S=C.a.FULFILLED,_=C.a.PENDING,k=C.a.REJECTED;function T(e){var t=e.adapterName,n=e.proposal,r=n.snapshotProposal,l=n.refetchProposalOrDraft,b=Object(d.useState)(),j=Object(o.a)(b,2),h=j[0],x=j[1],g=Object(d.useState)(),E=Object(o.a)(g,2),A=E[0],I=E[1],C=Object(d.useRef)({addressIsDelegatedMessage:"",alreadyVotedMessage:"",fetchingMembershipAtSnapshotMessage:"",noMembershipAtSnapshotMessage:"",undeterminedMembershipAtSnapshotMessage:""}),T=Object(u.c)((function(e){var t;return null===(t=e.connectedMember)||void 0===t?void 0:t.delegateKey})),R=Object(u.c)((function(e){var t;return null===(t=e.connectedMember)||void 0===t?void 0:t.isAddressDelegated})),P=Object(u.c)((function(e){var t;return null===(t=e.connectedMember)||void 0===t?void 0:t.memberAddress})),F=Object(v.f)().account,L=Object(D.h)(),M=L.signAndSendVote,B=L.voteDataStatus,G=Object(O.c)(null===r||void 0===r?void 0:r.votes,F||""),U=Object(m.g)(),V=U.isDisabled,W=U.openWhyDisabledModal,Y=U.setOtherDisabledReasons,H=U.WhyDisabledModal,K=Object(m.h)(P,null===r||void 0===r?void 0:r.msg.payload.snapshot),q=K.hasMembershipAtSnapshot,J=K.memberUnitsAtSnapshotError,Q=K.memberUnitsAtSnapshotStatus,X=null===r||void 0===r?void 0:r.msg.payload.snapshot,$=(null===r||void 0===r?void 0:r.idInDAO)||"",Z=(null===r||void 0===r?void 0:r.idInSnapshot)||"",ee=B===f.f.AWAITING_CONFIRM||B===f.f.PENDING,te=B===f.f.FULFILLED,ne=V||(ee||te),re=ee?h:void 0,ae=A||J;function ce(){return(ce=Object(s.a)(a.a.mark((function e(n){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,$){e.next=3;break}throw new Error("No proposal hash was found.");case 3:if(Z){e.next=5;break}throw new Error("No proposal ID was found.");case 5:return x(i.VoteChoices[n]),e.next=8,M(Object(c.a)(Object(c.a)({},t?{adapterName:t}:void 0),{},{partialVoteData:{choice:n},proposalIdInDAO:$,proposalIdInSnapshot:Z}));case 8:return e.next=10,l();case 10:e.next=15;break;case 12:e.prev=12,e.t0=e.catch(0),I(e.t0);case 15:case"end":return e.stop()}}),e,null,[[0,12]])})))).apply(this,arguments)}function se(e,t){C.current=Object(c.a)(Object(c.a)({},C.current),{},Object(y.a)({},e,t))}return Object(d.useEffect)((function(){var e;T&&se("addressIsDelegatedMessage",R?(e=T,"Your member address is delegated to ".concat(Object(p.l)(e,7),". You must use that address to vote.")):""),se("alreadyVotedMessage",G?"You have already voted.":""),se("noMembershipAtSnapshotMessage",q||Q!==S?"":"You were not a member when the proposal was sponsored at snapshot ".concat(X,".")),se("fetchingMembershipAtSnapshotMessage",Q===_?"We are waiting on your membership status for when this proposal was sponsored at snapshot ".concat(X,"."):""),se("undeterminedMembershipAtSnapshotMessage",Q===k?"Something went wrong. Your membership status when this proposal was sponsored at snapshot ".concat(X," cannot be determined."):""),Y(Object.values(C.current))}),[T,q,R,Q,Y,X,G]),Object(w.jsxs)(w.Fragment,{children:[Object(w.jsx)(z,{onClick:ne?function(){}:function(e){return ce.apply(this,arguments)},buttonProps:{disabled:ne,"aria-disabled":ne},voteChosen:G,voteProgress:re}),V&&Object(w.jsx)("button",{className:"button--help-centered",onClick:W,children:"Why is voting disabled?"}),Object(w.jsx)(N.a,{error:ae,renderText:"Something went wrong"}),Object(w.jsx)(H,{title:"Why is voting disabled?"})]})}var R=n(59);function P(e){var t=e.countdownFrom,n=e.renderCountdownText,r=e.showDaysOnly,a=Object(p.f)(t),c=a.days,s=a.hours,o=a.minutes,i=a.seconds,u=null===n||void 0===n?void 0:n({days:c,formatTimePeriod:F,hours:s,minutes:o,seconds:i,showDaysOnly:r}),d=F;return u||(c>2&&r?"~".concat(c," days"):c>0?"".concat(d(c,"day")," : ").concat(d(s,"hr")," : ").concat(d(o,"min")):s>0?"".concat(d(s,"hr")," : ").concat(d(o,"min")):o>0?"".concat(d(o,"min")," : ").concat(d(i,"sec")):Object(w.jsx)("span",{className:"color-brightsalmon",children:d(i,"sec")}))}function F(e,t){var n=0===e||e>1?"".concat(t,"s"):t;return"".concat(e," ").concat(n)}function L(e){var t=e.endedLabel,n=e.endLabel,r=e.endPeriodMs,a=e.renderCountdownText,c=e.startLabel,s=e.startPeriodMs,i=Object(d.useState)(),u=Object(o.a)(i,2),l=u[0],b=u[1],j=new Date(s),f=new Date(r);return Object(d.useEffect)((function(){var e=setInterval((function(){b(new Date)}),1e3);return function(){clearInterval(e)}}),[]),l?l0)return"".concat(r(t,"day")," : ").concat(r(n,"hr"))}var U=Object(w.jsx)("span",{children:"Grace period:"}),V={duration:150};function W(e){var t=e.countdownGracePeriodEndMs,n=void 0===t?0:t,r=e.countdownGracePeriodStartMs,a=void 0===r?0:r,c=e.countdownVotingEndMs,s=void 0===c?0:c,o=e.countdownVotingStartMs,i=void 0===o?0:o,u=e.onGracePeriodChange,l=e.onVotingPeriodChange,b=e.proposalId,j=e.renderStatus,f=e.votingResult,O=Object(m.i)(i/1e3,s/1e3),p=O.hasTimeEnded,h=O.hasTimeStarted,v=O.timeStartEndInitReady,x=Object(m.i)(a/1e3,n/1e3),N=x.hasTimeEnded,g=x.hasTimeStarted,E=x.timeStartEndInitReady,A=E&&g&&!N,I=(null===f||void 0===f?void 0:f.No.units)||0,y=(null===f||void 0===f?void 0:f.totalUnits)||0,C=(null===f||void 0===f?void 0:f.Yes.units)||0,D=p?C>I:void 0,S=null===j||void 0===j?void 0:j({countdownGracePeriodEndMs:n,countdownGracePeriodStartMs:a,countdownVotingEndMs:s,countdownVotingStartMs:i,didVotePassSimpleMajority:D,gracePeriodStartEndInitReady:E,hasGracePeriodEnded:N,hasGracePeriodStarted:g,hasVotingEnded:p,hasVotingStarted:h,votingStartEndInitReady:v});return Object(d.useEffect)((function(){v&&(null===l||void 0===l||l({hasVotingStarted:h,hasVotingEnded:p,proposalId:b,votingStartEndInitReady:v}))}),[p,h,l,b,v]),Object(d.useEffect)((function(){E&&(null===u||void 0===u||u({hasGracePeriodEnded:N,hasGracePeriodStarted:g,proposalId:b,gracePeriodStartEndInitReady:E}))}),[E,N,g,u,b]),Object(w.jsx)(B,{hasVotingEnded:p,noUnits:I,renderStatus:function(){return S||(v?A?"":D?"Approved":!1===D?"Failed":void 0:Object(w.jsx)(R.a,{ariaLabel:"Getting off-chain voting status",fadeInProps:V,intervalMs:200}))},renderTimer:function(e){return v&&h&&!p?Object(w.jsx)(e,{endPeriodMs:s,renderCountdownText:G,startPeriodMs:i}):A?Object(w.jsx)(e,{endLabel:U,endPeriodMs:n||0,renderCountdownText:G,startPeriodMs:a||0}):void 0},totalUnits:y,yesUnits:C})}function Y(e){return Object(w.jsx)("svg",Object(c.a)(Object(c.a)({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:"18",height:"18",viewBox:"0 0 512 512"},e),{},{children:Object(w.jsx)("path",{fill:"currentColor",d:"M435.848 83.466L172.804 346.51l-96.652-96.652c-4.686-4.686-12.284-4.686-16.971 0l-28.284 28.284c-4.686 4.686-4.686 12.284 0 16.971l133.421 133.421c4.686 4.686 12.284 4.686 16.971 0l299.813-299.813c4.686-4.686 4.686-12.284 0-16.971l-28.284-28.284c-4.686-4.686-12.284-4.686-16.97 0z"})}))}function H(e,t){return(e/t*100).toFixed(2).replace(/\.00$/,"")}function K(e){var t=e.yesUnits,n=void 0===t?0:t,r=e.noUnits,a=void 0===r?0:r,c=e.totalUnits,s=e.votingExpired,o=e.showPercentages,i=c?H(n,c):"0",u=c?H(a,c):"0";return Object(w.jsxs)("div",{className:"votingbar-container",children:[Object(w.jsxs)("div",{className:"votingbar",children:[Object(w.jsx)("div",{className:"votingbar__segment--yes","aria-label":"".concat(i,"% yes votes"),style:{width:"".concat(i,"%")}}),Object(w.jsx)("div",{className:"votingbar__segment--no","aria-label":"".concat(u,"% no votes"),style:{width:"".concat(u,"%")}})]}),Object(w.jsx)("div",{className:"votingbar__percentages",children:o&&Object(w.jsxs)(w.Fragment,{children:[s&&n>a&&Object(w.jsx)("span",{className:"yes-check",children:Object(w.jsx)(Y,{"aria-label":"Vote has passed"})}),Object(w.jsxs)("span",{className:"yes-percent",children:[i,"%"]}),Object(w.jsxs)("span",{className:"no-percent",children:[u,"%"]}),s&&n<=a&&Object(w.jsx)("span",{className:"no-check",children:Object(w.jsx)(Y,{"aria-label":"Vote has failed"})})]})})]})}function z(e){var t=e.buttonProps,n=e.onClick,r=e.voteChosen,a=e.voteProgress;function s(e){return a===e?{"aria-label":"Voting ".concat(e," \u2026")}:{}}function o(e){return a===e?Object(w.jsx)(A.a,{"aria-label":"Currently voting ".concat(e,"..."),role:"img"}):r===e?"Voted ".concat(e):"Vote ".concat(e)}function u(e){return function(){n(e)}}function d(e,t){return r===e?Object(w.jsxs)(w.Fragment,{children:[Object(w.jsx)(Y,{"aria-label":t})," "]}):""}return Object(w.jsxs)(w.Fragment,{children:[Object(w.jsxs)("button",Object(c.a)(Object(c.a)(Object(c.a)({},t),s(i.VoteChoices.Yes)),{},{className:"proposaldetails__button",onClick:u(i.VoteChoices.Yes),children:[d(i.VoteChoices.Yes,"You voted yes"),o(i.VoteChoices.Yes)]})),Object(w.jsxs)("button",Object(c.a)(Object(c.a)(Object(c.a)({},t),s(i.VoteChoices.No)),{},{className:"proposaldetails__button",onClick:u(i.VoteChoices.No),children:[d(i.VoteChoices.No,"You voted no"),o(i.VoteChoices.No)]}))]})}},15:function(e,t,n){"use strict";n.d(t,"a",(function(){return j})),n.d(t,"b",(function(){return g})),n.d(t,"c",(function(){return w})),n.d(t,"d",(function(){return I})),n.d(t,"e",(function(){return D})),n.d(t,"f",(function(){return l.a}));n(34);var r=n(2),a=n.n(r),c=n(5),s=n(4),o=n(1);var i=n(11),u=n(32),d=n(12),l=n(104),b=n(7);function j(){var e=Object(o.useState)(),t=Object(s.a)(e,2),n=t[0],r=t[1],j=Object(o.useState)(""),f=Object(s.a)(j,2),O=f[0],p=f[1],h=Object(o.useState)(!1),m=Object(s.a)(h,2),v=m[0],x=m[1],N=Object(o.useState)(),g=Object(s.a)(N,2),E=g[0],A=g[1],w=Object(o.useState)(b.f.STANDBY),I=Object(s.a)(w,2),y=I[0],C=I[1],D=Object(l.a)().networkId;function S(e){return function(t){C(b.f.PENDING),x(!1),D&&D!==i.c.GANACHE&&p("".concat(i.o[D],"/tx/").concat(t)),e&&e(t)}}function _(){return(_=Object(c.a)(a.a.mark((function e(){var t,n,c,s,o,i=arguments;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(t=Object(d.c)(),e.prev=1,r(void 0),p(""),C(b.f.AWAITING_CONFIRM),x(!0),n=i.length,c=new Array(n),s=0;s0&&void 0!==arguments[0]?arguments[0]:v,t=arguments.length>1?arguments[1]:void 0,n=t.type,r=t.payload;switch(n){case a.CONNECT_WEB3MODAL:var c=r||{},s=c.provider,o=c.networkId,i=c.account,u=c.connected,l=c.web3Instance;return Object(d.a)(Object(d.a)({},e),{},{account:i,connected:u,networkId:o,provider:s,web3Instance:l});case a.DEACTIVATE_PROVIDER_WEB3MODAL:return v;case a.ERROR_WEB3MODAL:var b=r||{},j=b.error;return Object(d.a)(Object(d.a)({},e),{},{error:j});case a.INITIAL_CACHED_CONNECTOR_CHECK_STATUS:var f=r||{},O=f.initialCachedConnectorCheckStatus;return Object(d.a)(Object(d.a)({},e),{},{initialCachedConnectorCheckStatus:O});case a.NEW_WEB3MODAL:var p=r||{},h=p.web3Modal;return{web3Modal:h};case a.UPDATE_ACCOUNT:var m=r||{},x=m.account;return Object(d.a)(Object(d.a)({},e),{},{account:x});default:return v}}function N(e){var t,n,r=e.defaultChain,s=e.defaultTheme,b=e.onBeforeConnect,f=e.onBeforeDisconnect,v=e.providerOptions,N=Object(l.useReducer)(x,{initialCachedConnectorCheckStatus:p.a.STANDBY}),g=Object(u.a)(N,2),E=g[0],A=g[1],w=s,I=r||h.k,y=Object(l.useCallback)(_,[b,E.web3Modal]),C=Object(l.useCallback)((function(e){var t,n;if(!(null===(t=E.web3Modal)||void 0===t?void 0:t.cachedProvider))return;y(null===(n=E.web3Modal)||void 0===n?void 0:n.cachedProvider)}),[y,null===(t=E.web3Modal)||void 0===t?void 0:t.cachedProvider]);function D(e){var t=Object(u.a)(e,1)[0];A({type:a.UPDATE_ACCOUNT,payload:{account:t}})}function S(){return(S=Object(i.a)(o.a.mark((function e(t,n){var r;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=a.INITIAL_CACHED_CONNECTOR_CHECK_STATUS,"string"===typeof t){e.next=3;break}return e.abrupt("return");case 3:if(A({type:r,payload:{initialCachedConnectorCheckStatus:p.a.PENDING}}),!t){e.next=7;break}return e.next=7,n(t);case 7:A({type:r,payload:{initialCachedConnectorCheckStatus:p.a.FULFILLED}});case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function _(e){return k.apply(this,arguments)}function k(){return(k=Object(i.a)(o.a.mark((function e(t){var n,r,s,i,d;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,E.web3Modal){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,E.web3Modal.connectTo(t);case 5:return n=e.sent,r=new j.a(n),e.next=9,r.eth.getAccounts();case 9:return s=e.sent,i=Object(u.a)(s,1),d=i[0],e.next=14,null===b||void 0===b?void 0:b();case 14:return e.t0=A,e.t1=a.CONNECT_WEB3MODAL,e.t2=d,e.next=19,r.eth.net.getId();case 19:e.t3=e.sent,e.t4=n,e.t5=r,e.t6={account:e.t2,connected:!0,networkId:e.t3,provider:e.t4,web3Instance:e.t5},e.t7={type:e.t1,payload:e.t6},(0,e.t0)(e.t7),e.next=30;break;case 27:e.prev=27,e.t8=e.catch(0),A({type:a.ERROR_WEB3MODAL,payload:{error:{connectorId:t,error:new Error("Failed to connect to ".concat(t,".")),type:c.CONNECT}}});case 30:case"end":return e.stop()}}),e,null,[[0,27]])})))).apply(this,arguments)}function T(){return(T=Object(i.a)(o.a.mark((function e(){var t,n,r,s;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,null===(t=E.provider)||void 0===t||null===(n=t.close)||void 0===n?void 0:n.call(t);case 3:if(e.t0=E.web3Modal,!e.t0){e.next=7;break}return e.next=7,E.web3Modal.clearCachedProvider();case 7:return e.next=9,null===f||void 0===f?void 0:f();case 9:A({type:a.DEACTIVATE_PROVIDER_WEB3MODAL}),e.next=16;break;case 12:e.prev=12,e.t1=e.catch(0),s=(null===(r=E.web3Modal)||void 0===r?void 0:r.cachedProvider)||"",A({type:a.ERROR_WEB3MODAL,payload:{error:{connectorId:s,error:new Error("Failed to disconnect from ".concat(s||"provider",".")),type:c.DISCONNECT}}});case 16:case"end":return e.stop()}}),e,null,[[0,12]])})))).apply(this,arguments)}return Object(l.useEffect)((function(){var e,t,n=E.provider;return null===n||void 0===n||null===(e=n.on)||void 0===e||e.call(n,"accountsChanged",D),null===n||void 0===n||null===(t=n.on)||void 0===t||t.call(n,"chainChanged",C),function(){var e,t;null===n||void 0===n||null===(e=n.removeListener)||void 0===e||e.call(n,"accountsChanged",D),null===n||void 0===n||null===(t=n.removeListener)||void 0===t||t.call(n,"chainChanged",C)}}),[C,E.provider]),Object(l.useEffect)((function(){E.web3Modal||A({type:a.NEW_WEB3MODAL,payload:{web3Modal:new O.a({cacheProvider:!0,network:m.c[m.b[I]],providerOptions:v,theme:w})}})}),[v,E.web3Modal,I,w]),Object(l.useEffect)((function(){var e;E.initialCachedConnectorCheckStatus!==p.a.FULFILLED&&E.initialCachedConnectorCheckStatus!==p.a.PENDING&&function(e,t){S.apply(this,arguments)}(null===(e=E.web3Modal)||void 0===e?void 0:e.cachedProvider,y)}),[y,E.initialCachedConnectorCheckStatus,null===(n=E.web3Modal)||void 0===n?void 0:n.cachedProvider]),Object(d.a)(Object(d.a)({},E),{},{connectWeb3Modal:_,disconnectWeb3Modal:function(){return T.apply(this,arguments)},providerOptions:v})}},20:function(e,t,n){"use strict";n.d(t,"A",(function(){return r.d})),n.d(t,"w",(function(){return r.c})),n.d(t,"y",(function(){return a.c})),n.d(t,"z",(function(){return a.d})),n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return h})),n.d(t,"c",(function(){return m})),n.d(t,"d",(function(){return v})),n.d(t,"e",(function(){return x})),n.d(t,"f",(function(){return N})),n.d(t,"g",(function(){return g})),n.d(t,"h",(function(){return E})),n.d(t,"i",(function(){return A})),n.d(t,"j",(function(){return w})),n.d(t,"k",(function(){return I})),n.d(t,"l",(function(){return y})),n.d(t,"m",(function(){return C})),n.d(t,"n",(function(){return D})),n.d(t,"o",(function(){return S})),n.d(t,"p",(function(){return _})),n.d(t,"q",(function(){return k})),n.d(t,"r",(function(){return T})),n.d(t,"s",(function(){return R})),n.d(t,"t",(function(){return P})),n.d(t,"u",(function(){return F})),n.d(t,"v",(function(){return L})),n.d(t,"x",(function(){return M})),n.d(t,"D",(function(){return B})),n.d(t,"G",(function(){return G})),n.d(t,"H",(function(){return U})),n.d(t,"Q",(function(){return Y})),n.d(t,"C",(function(){return H})),n.d(t,"S",(function(){return K})),n.d(t,"J",(function(){return z})),n.d(t,"N",(function(){return q})),n.d(t,"B",(function(){return J})),n.d(t,"O",(function(){return Q})),n.d(t,"I",(function(){return X})),n.d(t,"R",(function(){return $})),n.d(t,"M",(function(){return Z})),n.d(t,"L",(function(){return ee})),n.d(t,"E",(function(){return te})),n.d(t,"T",(function(){return ne})),n.d(t,"F",(function(){return re})),n.d(t,"P",(function(){return ae})),n.d(t,"K",(function(){return ce})),n.d(t,"U",(function(){return se})),n.d(t,"V",(function(){return ue.b}));var r=n(175),a=n(176),c=n(3),s=n(61),o=n(2),i=n.n(o),u=n(5),d=n(7),l=n(11),b=n(32),j=n(17),f=n(202),O=["type"],p="CLEAR_CONTRACTS",h="CONTRACT_BANK_ADAPTER",m="CONTRACT_BANK_EXTENSION",v="CONTRACT_BANK_FACTORY",x="CONTRACT_CONFIGURATION",N="CONTRACT_COUPON_ONBOARDING",g="CONTRACT_DAO_FACTORY",E="CONTRACT_DAO_REGISTRY",A="CONTRACT_DAO_REGISTRY_ADAPTER",w="CONTRACT_DISTRIBUTE",I="CONTRACT_ERC20_EXTENSION",y="CONTRACT_FINANCING",C="CONTRACT_GUILDKICK",D="CONTRACT_MANAGING",S="CONTRACT_NFT_ADAPTER",_="CONTRACT_NFT_EXTENSION",k="CONTRACT_ONBOARDING",T="CONTRACT_RAGEQUIT",R="CONTRACT_TRIBUTE",P="CONTRACT_TRIBUTE_NFT",F="CONTRACT_VOTING",L="CONTRACT_VOTING_OP_ROLLUP";function M(){return{type:p}}function B(e){return function(){var t=Object(u.a)(i.a.mark((function t(r){var a,c,s,o,u;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.prev=0,!e){t.next=10;break}return t.next=4,n.e(13).then(n.t.bind(null,951,3));case 4:a=t.sent,c=a.default,s=c,o=l.b[l.k],u=new e.eth.Contract(s,o),r(oe({type:v,abi:s,contractAddress:o,instance:u}));case 10:t.next=15;break;case 12:throw t.prev=12,t.t0=t.catch(0),t.t0;case 15:case"end":return t.stop()}}),t,null,[[0,12]])})));return function(e){return t.apply(this,arguments)}}()}function G(e){return function(){var t=Object(u.a)(i.a.mark((function t(r){var a,c,s,o,u;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.prev=0,!e){t.next=10;break}return t.next=4,n.e(16).then(n.t.bind(null,952,3));case 4:a=t.sent,c=a.default,s=c,o=l.h[l.k],u=new e.eth.Contract(s,o),r(oe({type:g,abi:s,contractAddress:o,instance:u}));case 10:t.next=15;break;case 12:throw t.prev=12,t.t0=t.catch(0),t.t0;case 15:case"end":return t.stop()}}),t,null,[[0,12]])})));return function(e){return t.apply(this,arguments)}}()}function U(e){return function(){var t=Object(u.a)(i.a.mark((function t(r){var a,c,s,o,u;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.prev=0,!e){t.next=12;break}return t.next=4,n.e(17).then(n.t.bind(null,953,3));case 4:if(a=t.sent,c=a.default,s=c,o=l.j){t.next=10;break}throw new Error("No DAO Registry contract address was found.");case 10:u=new e.eth.Contract(s,o),r(oe({type:E,abi:s,contractAddress:o,instance:u}));case 12:t.next=17;break;case 14:throw t.prev=14,t.t0=t.catch(0),t.t0;case 17:case"end":return t.stop()}}),t,null,[[0,14]])})));return function(e){return t.apply(this,arguments)}}()}function V(e,t){return ie({actionType:F,adapterOrExtensionName:d.a.voting,adapterNameForRedux:j.c.VotingContract,contractAddress:t,lazyImport:function(){return n.e(2).then(n.t.bind(null,954,3))},web3Instance:e})}function W(e,t){return ie({actionType:L,adapterOrExtensionName:d.a.voting,adapterNameForRedux:j.c.OffchainVotingContract,contractAddress:t,lazyImport:function(){return n.e(1).then(n.t.bind(null,955,3))},web3Instance:e})}function Y(e,t){return ie({actionType:k,adapterNameForRedux:j.a.ONBOARDING,adapterOrExtensionName:d.a.onboarding,contractAddress:t,lazyImport:function(){return n.e(27).then(n.t.bind(null,956,3))},web3Instance:e})}function H(e,t){return ie({actionType:m,adapterNameForRedux:j.b.BANK,adapterOrExtensionName:d.c.bank,contractAddress:t,isExtension:!0,lazyImport:function(){return n.e(12).then(n.t.bind(null,957,3))},web3Instance:e})}function K(e,t){return ie({actionType:R,adapterNameForRedux:j.a.TRIBUTE,adapterOrExtensionName:d.a.tribute,contractAddress:t,lazyImport:function(){return n.e(29).then(n.t.bind(null,958,3))},web3Instance:e})}function z(e,t){return ie({actionType:w,adapterNameForRedux:j.a.DISTRIBUTE,adapterOrExtensionName:d.a.distribute,contractAddress:t,lazyImport:function(){return n.e(19).then(n.t.bind(null,959,3))},web3Instance:e})}function q(e,t){return ie({actionType:D,adapterNameForRedux:j.a.MANAGING,adapterOrExtensionName:d.a.managing,contractAddress:t,lazyImport:function(){return n.e(23).then(n.t.bind(null,960,3))},web3Instance:e})}function J(e,t){return ie({actionType:h,adapterNameForRedux:j.a.BANK,adapterOrExtensionName:d.a.bank,contractAddress:t,lazyImport:function(){return n.e(11).then(n.t.bind(null,961,3))},web3Instance:e})}function Q(e,t){return ie({actionType:S,adapterNameForRedux:j.a.NFT,adapterOrExtensionName:d.a.nft,contractAddress:t,lazyImport:function(){return n.e(25).then(n.t.bind(null,962,3))},web3Instance:e})}function X(e,t){return ie({actionType:A,adapterNameForRedux:j.a.DAO_REGISTRY,adapterOrExtensionName:d.a.dao_registry,contractAddress:t,lazyImport:function(){return n.e(18).then(n.t.bind(null,963,3))},web3Instance:e})}function $(e,t){return ie({actionType:T,adapterNameForRedux:j.a.RAGEQUIT,adapterOrExtensionName:d.a.ragequit,contractAddress:t,lazyImport:function(){return n.e(28).then(n.t.bind(null,964,3))},web3Instance:e})}function Z(e,t){return ie({actionType:C,adapterNameForRedux:j.a.GUILDKICK,adapterOrExtensionName:d.a.guildkick,contractAddress:t,lazyImport:function(){return n.e(22).then(n.t.bind(null,965,3))},web3Instance:e})}function ee(e,t){return ie({actionType:y,adapterNameForRedux:j.a.FINANCING,adapterOrExtensionName:d.a.financing,contractAddress:t,lazyImport:function(){return n.e(21).then(n.t.bind(null,966,3))},web3Instance:e})}function te(e,t){return ie({actionType:x,adapterNameForRedux:j.a.CONFIGURATION,adapterOrExtensionName:d.a.configuration,contractAddress:t,lazyImport:function(){return n.e(14).then(n.t.bind(null,967,3))},web3Instance:e})}function ne(e,t){return ie({actionType:P,adapterNameForRedux:j.a.TRIBUTE_NFT,adapterOrExtensionName:d.a.tribute_nft,contractAddress:t,lazyImport:function(){return n.e(30).then(n.t.bind(null,968,3))},web3Instance:e})}function re(e,t){return ie({actionType:N,adapterNameForRedux:j.a.COUPON_ONBOARDING,adapterOrExtensionName:d.a.coupon_onboarding,contractAddress:t,lazyImport:function(){return n.e(15).then(n.t.bind(null,969,3))},web3Instance:e})}function ae(e,t){return ie({actionType:_,adapterNameForRedux:j.b.NFT,adapterOrExtensionName:d.c.nft,contractAddress:t,isExtension:!0,lazyImport:function(){return n.e(26).then(n.t.bind(null,970,3))},web3Instance:e})}function ce(e,t){return ie({actionType:I,adapterNameForRedux:j.b.ERC20,adapterOrExtensionName:d.c.erc20,contractAddress:t,isExtension:!0,lazyImport:function(){return n.e(20).then(n.t.bind(null,971,3))},web3Instance:e})}function se(e,t){return function(){var n=Object(u.a)(i.a.mark((function n(r,a){var c,s,o;return i.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(n.prev=0,!e){n.next=29;break}if(a().contracts.DaoRegistryContract){n.next=6;break}return console.warn("Please init the DaoRegistry contract before the voting contract."),n.abrupt("return");case 6:if(c="",!(s=t||"")){n.next=12;break}return n.next=11,Object(b.h)(s,e);case 11:c=n.sent;case 12:if(s||c){n.next=19;break}return n.next=15,Object(b.c)(d.a.voting,null===(o=a().contracts.DaoRegistryContract)||void 0===o?void 0:o.instance);case 15:return s=n.sent,n.next=18,Object(b.h)(s,e);case 18:c=n.sent;case 19:n.t0=c,n.next="VotingContract"===n.t0?22:"OffchainVotingContract"===n.t0?25:28;break;case 22:return n.next=24,V(e,s)(r,a);case 24:return n.abrupt("return",n.sent);case 25:return n.next=27,W(e,s)(r,a);case 27:return n.abrupt("return",n.sent);case 28:throw new Error("Voting contract name could not be found.");case 29:n.next=34;break;case 31:n.prev=31,n.t1=n.catch(0),console.warn("The voting contract could not be found in the DAO. Are you sure you meant to add this contract's ABI?");case 34:case"end":return n.stop()}}),n,null,[[0,31]])})));return function(e,t){return n.apply(this,arguments)}}()}function oe(e){var t=e.type,n=Object(s.a)(e,O);return Object(c.a)({type:t},n)}function ie(e){var t=e.actionType,n=e.adapterNameForRedux,r=e.adapterOrExtensionName,a=e.contractAddress,c=e.isExtension,s=void 0!==c&&c,o=e.lazyImport,d=e.web3Instance;return function(){var e=Object(u.a)(i.a.mark((function e(c,u){var l,j,O,p,h,m;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o();case 3:if(O=e.sent,p=O.default,h=p,e.t0=a,e.t0){e.next=18;break}if(!s){e.next=14;break}return e.next=11,Object(f.a)(r,null===(l=u().contracts.DaoRegistryContract)||void 0===l?void 0:l.instance);case 11:e.t1=e.sent,e.next=17;break;case 14:return e.next=16,Object(b.c)(r,null===(j=u().contracts.DaoRegistryContract)||void 0===j?void 0:j.instance);case 16:e.t1=e.sent;case 17:e.t0=e.t1;case 18:m=e.t0,c(oe({type:t,abi:h,contractAddress:m,adapterOrExtensionName:n,instance:new d.eth.Contract(h,m)})),e.next=25;break;case 22:e.prev=22,e.t2=e.catch(0),console.warn('The contract "'.concat(r,"\" could not be found in the DAO. Are you sure you meant to add this contract's ABI?"));case 25:case"end":return e.stop()}}),e,null,[[0,22]])})));return function(t,n){return e.apply(this,arguments)}}()}var ue=n(203)},201:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(85);function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;if(null===e||"undefined"===typeof e)return"---";if(Object(r.a)(e)){var n=e.substring(0,t),a=e.substring(e.length-3);return n+"..."+a}return e}},202:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(2),a=n.n(r),c=n(5),s=n(64),o=n.n(s);function i(e,t){return u.apply(this,arguments)}function u(){return(u=Object(c.a)(a.a.mark((function e(t,n){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n){e.next=3;break}throw new Error("No DaoRegistry contract instance provided.");case 3:return e.next=5,n.methods.getExtensionAddress(o.a.utils.sha3(t)).call();case 5:return e.abrupt("return",e.sent);case 8:throw e.prev=8,e.t0=e.catch(0),e.t0;case 11:case"end":return e.stop()}}),e,null,[[0,8]])})))).apply(this,arguments)}},203:function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return c}));var r=n(3),a="SET_SUBGRAPH_NETWORK_STATUS";function c(e){return Object(r.a)({type:a},e)}},205:function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));var r=n(4),a=n(3),c=n(1),s=n(24),o=n(0),i=["",".",".","."],u={position:"absolute"},d={height:1,width:1};function l(e){var t=e.ariaLabel,n=e.intervalMs,l=void 0===n?1e3:n,b=e.fadeInProps,j=Object(a.a)(Object(a.a)({},b),{},{inline:!0}),f=Object(c.useState)(1),O=Object(r.a)(f,2),p=O[0],h=O[1];return Object(c.useEffect)((function(){var e=setInterval((function(){return h((function(e){return(e+1)%i.length}))}),l);return function(){clearInterval(e)}}),[l]),Object(o.jsxs)(o.Fragment,{children:[Object(o.jsxs)("span",{"aria-label":t,style:u,children:[Object(o.jsx)("span",{children:p>=0&&i[0]}),Object(o.jsx)("span",{children:p>=1&&Object(o.jsx)(s.a,Object(a.a)(Object(a.a)({},j),{},{children:i[1]}))}),Object(o.jsx)("span",{children:p>=2&&Object(o.jsx)(s.a,Object(a.a)(Object(a.a)({},j),{},{children:i[2]}))}),Object(o.jsx)("span",{children:p>=3&&Object(o.jsx)(s.a,Object(a.a)(Object(a.a)({},j),{},{children:i[3]}))})]}),Object(o.jsx)("span",{style:d,children:"\xa0"})]})}},206:function(e,t,n){"use strict";n.d(t,"a",(function(){return _}));var r=n(2),a=n.n(r),c=n(34),s=n(5),o=n(3),i=n(4),u=n(1),d=n(14),l=n(22),b=n(9),j=n(32),f=n(11),O=n(57),p=n(46),h=n(15),m=n(36),v=n(7),x=n(69),N=n(30),g=n(50),E=n(24),A=n(41),w=n(0),I=b.a.FULFILLED,y=v.f.AWAITING_CONFIRM,C=v.f.FULFILLED,D=v.f.PENDING,S=O.c;function _(e){var t=e.checkApplicant,n=e.proposal,r=n.snapshotDraft,b=n.snapshotProposal,v=n.refetchProposalOrDraft,_=b||{msg:{payload:{}}},k=_.msg,T=k.payload,R=T.choices,P=void 0===R?S:R,F=T.name,L=void 0===F?"":F,M=T.body,B=void 0===M?"":M,G=T.start,U=void 0===G?0:G,V=T.end,W=void 0===V?0:V,Y=T.snapshot,H=void 0===Y?0:Y,K=k.timestamp,z=void 0===K?"":K,q=_.sig,J=void 0===q?"":q,Q=Object(u.useState)(((null===b||void 0===b?void 0:b.sig.length)||"")>0),X=Object(i.a)(Q,2),$=X[0],Z=X[1],ee=Object(u.useRef)({body:B,choices:P,end:W,name:L,sig:J,snapshot:H,space:f.D||"",start:U,timestamp:z}),te=Object(u.useState)(),ne=Object(i.a)(te,2),re=ne[0],ae=ne[1],ce=Object(u.useRef)({invalidApplicantMessage:""}),se=Object(d.c)((function(e){return e.contracts})),oe=Object(d.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.contractAddress})),ie=Object(h.f)(),ue=ie.account,de=ie.web3Instance,le=Object(h.a)(),be=le.txEtherscanURL,je=le.txIsPromptOpen,fe=le.txSend,Oe=le.txStatus,pe=Object(m.g)(),he=pe.isDisabled,me=pe.openWhyDisabledModal,ve=pe.WhyDisabledModal,xe=pe.setOtherDisabledReasons,Ne=Object(p.i)(),ge=Ne.proposalSignAndSendStatus,Ee=Ne.signAndSendProposal,Ae=Object(h.b)().fast,we=Object(p.a)(t),Ie=we.checkApplicantError,ye=we.checkApplicantInvalidMsg,Ce=we.checkApplicantStatus,De=we.isApplicantValid,Se=Oe===y||Oe===D||ge===y||ge===D,_e=$?Oe===C:Oe===C&&ge===C,ke=Se||_e||je;function Te(){return(Te=Object(s.a)(a.a.mark((function e(){var t,n,s,i,u,d,f,O,p,h,m,x,N,g,E,A,w,I,y,C,D,S,_,k,T,R,P,F,L;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,oe){e.next=3;break}throw new Error("No DAO Registry address was found.");case 3:if(i=(null===(t=r||b)||void 0===t?void 0:t.actionId)||"",u=Object(j.e)(i,se)){e.next=7;break}throw Error("No contract was found for action id ".concat(i,"."));case 7:if(d=(null===(n=r||b)||void 0===n?void 0:n.idInDAO)||"",f=null===(s=(null===r||void 0===r?void 0:r.msg.payload)||(null===b||void 0===b?void 0:b.msg.payload))||void 0===s?void 0:s.metadata.submitActionArgs,$||!r){e.next=18;break}return O=r.msg,p=O.payload,h=p.name,m=p.body,x=p.metadata,N=O.timestamp,e.next=13,Ee({partialProposalData:{name:h,body:m,metadata:x,timestamp:N},adapterAddress:u.contractAddress,type:l.SnapshotType.proposal});case 13:g=e.sent,E=g.data,A=g.signature,ee.current={body:E.payload.body,choices:E.payload.choices,end:E.payload.end,name:E.payload.name,sig:A,snapshot:E.payload.snapshot,space:E.space,start:E.payload.start,timestamp:E.timestamp},Z(!0);case 18:return w=ee.current,I=w.body,y=w.choices,C=w.end,D=w.name,S=w.sig,_=w.snapshot,k=w.space,T=w.start,R=w.timestamp,P=Object(l.prepareVoteProposalData)({payload:{body:I,choices:y,end:C,name:D,snapshot:_.toString(),start:T},sig:S,space:k,timestamp:parseInt(R)},de),F=[oe,d].concat(Object(c.a)(f||[]),[P]),L=Object(o.a)({from:ue||""},Ae?{gasPrice:Ae}:null),e.next=24,fe("submitProposal",u.instance.methods,F,L);case 24:v(),e.next=30;break;case 27:e.prev=27,e.t0=e.catch(0),ae(e.t0);case 30:case"end":return e.stop()}}),e,null,[[0,27]])})))).apply(this,arguments)}return Object(u.useEffect)((function(){t&&Ce===I&&(!De&&ye&&(ce.current=Object(o.a)(Object(o.a)({},ce.current),{},{invalidApplicantMessage:ye})),xe(Object.values(ce.current)))}),[t,ye,Ce,De,xe]),Ie&&console.warn("Error checking if the applicant address is valid: ".concat(Ie.message)),Object(w.jsxs)(w.Fragment,{children:[Object(w.jsxs)("div",{children:[Object(w.jsx)("button",{className:"proposaldetails__button",disabled:he||ke,onClick:he||ke?function(){}:function(){return Te.apply(this,arguments)},children:Se?Object(w.jsx)(A.a,{}):_e?"Done":"Sponsor"}),Object(w.jsx)(N.a,{error:re,renderText:"Something went wrong"}),ke&&Object(w.jsx)("div",{className:"form__submit-status-container",children:function(){if(Oe===y||ge===y)return"Awaiting your confirmation\u2026";switch(Oe){case D:return Object(w.jsxs)(w.Fragment,{children:[Object(w.jsx)(x.a,{intervalMs:2e3,messages:O.b,useFirstItemStart:!0,render:function(e){return Object(w.jsx)(E.a,{children:e},e)}}),Object(w.jsx)(g.a,{url:be,isPending:!0})]});case C:return Object(w.jsxs)(w.Fragment,{children:[Object(w.jsx)("div",{children:"Proposal submitted!"}),Object(w.jsx)(g.a,{url:be})]});default:return null}}()}),he&&Object(w.jsx)("button",{className:"button--help-centered",onClick:me,children:"Why is sponsoring disabled?"})]}),Object(w.jsx)(ve,{title:"Why is sponsoring disabled?"})]})}},212:function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"b",(function(){return b}));var r=n(4),a=n(1),c=n(64),s=n.n(c),o=n(178),i=n(9),u=n(11),d=n(0),l=Object(a.createContext)({});function b(e){var t,n=e.children,c=e.defaultChain,b=e.defaultTheme,j=void 0===b?o.a.DARK:b,f=e.onBeforeConnect,O=e.onBeforeDisconnect,p=e.providerOptions,h=Object(a.useRef)(new s.a(new s.a.providers.WebsocketProvider(u.n))),m=Object(a.useState)(),v=Object(r.a)(m,2),x=v[0],N=v[1],g={defaultChain:c,defaultTheme:j,onBeforeConnect:f,onBeforeDisconnect:O,providerOptions:p},E=Object(o.b)(g),A=E.account,w=E.connected,I=E.connectWeb3Modal,y=E.disconnectWeb3Modal,C=E.error,D=E.initialCachedConnectorCheckStatus,S=E.networkId,_=void 0===S?x:S,k=E.provider,T=void 0===k?null===(t=h.current)||void 0===t?void 0:t.currentProvider:k,R=E.web3Instance,P=void 0===R?h.current:R,F=E.web3Modal;Object(a.useEffect)((function(){var e;w||D!==i.a.FULFILLED||(null===(e=h.current)||void 0===e||e.eth.net.getId().then(N).catch((function(){return N(void 0)})))}),[w,D]);var L={account:A,connected:w,connectWeb3Modal:I,disconnectWeb3Modal:y,error:C,initialCachedConnectorCheckStatus:D,networkId:_,provider:T,providerOptions:p,web3Instance:P,web3Modal:F};return Object(d.jsx)(l.Provider,{value:L,children:n})}},24:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(3),a=(n(1),n(930)),c=n(0),s=function(e){return{transition:"opacity ".concat(e.duration||300,"ms cubic-bezier(0, 0.69, 0.32, 0.64)"),opacity:0}},o={entering:{opacity:0},entered:{opacity:1},exiting:{opacity:0},exited:{opacity:0}};function i(e){var t=e.inline;return Object(c.jsx)(a.a,{appear:!0,in:void 0===e.show||e.show,timeout:e.duration||300,children:function(n){return t?Object(c.jsx)("span",{style:Object(r.a)(Object(r.a)({},s(e)),o[n]),children:e.children}):Object(c.jsx)("div",{style:Object(r.a)(Object(r.a)({},s(e)),o[n]),children:e.children})}})}},30:function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var r=n(3),a=n(4),c=n(1),s=n(12),o=n(24),i=n(0);function u(e){var t=e.error,n=e.renderText,u=Object(c.useState)(!1),d=Object(a.a)(u,2),l=d[0],b=d[1],j="function"!==typeof t&&(4001===(null===t||void 0===t?void 0:t.code)||/^(the )?user rejected (the )?request$/g.test(Object(s.i)((null===t||void 0===t?void 0:t.message)||""))),f="string"===typeof n?n:n(),O="string"===typeof n&&"function"!==typeof t&&Object(s.i)(n)===Object(s.i)((null===t||void 0===t?void 0:t.message)||"");return!t||j?null:Object(i.jsx)(o.a,{children:Object(i.jsxs)("div",{className:"text-center",children:[Object(i.jsx)("p",{className:"error-message",children:f}),t&&!O&&Object(i.jsxs)("details",Object(r.a)(Object(r.a)({},e.detailsProps),{},{children:[Object(i.jsx)("summary",{"aria-expanded":l,className:"error-message",onClick:function(){return b(!l)},style:{cursor:"pointer",outline:"none"},children:Object(i.jsx)("small",{children:"Details"})}),Object(i.jsx)("p",{className:"error-message",children:Object(i.jsx)("small",{children:"function"===typeof t?t():t.message})})]}))]})})}},32:function(e,t,n){"use strict";n.d(t,"b",(function(){return d})),n.d(t,"c",(function(){return f})),n.d(t,"d",(function(){return m})),n.d(t,"e",(function(){return N})),n.d(t,"f",(function(){return g})),n.d(t,"a",(function(){return v})),n.d(t,"g",(function(){return A})),n.d(t,"h",(function(){return I})),n.d(t,"i",(function(){return C})),n.d(t,"j",(function(){return _}));var r=n(2),a=n.n(r),c=n(3),s=n(34),o=n(5),i=n(122),u=n.n(i);function d(e,t,n,r,a){return l.apply(this,arguments)}function l(){return(l=Object(o.a)(a.a.mark((function e(t,n,r,i,d){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=Object(o.a)(a.a.mark((function e(o,l){var b,j,f,O;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,b=u.a,j=n[t],e.next=5,j.apply(void 0,Object(s.a)(r)).estimateGas({from:i.from,value:i.value});case 5:return f=e.sent,O=new b(f).decimalPlaces(0,u.a.ROUND_DOWN).toNumber(),e.next=9,j.apply(void 0,Object(s.a)(r)).send(Object(c.a)(Object(c.a)({},i),{},{gas:O})).on("transactionHash",(function(e){d&&d(e)})).on("receipt",(function(e){o(e)})).on("error",(function(e){l(e)}));case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(0),l(e.t0);case 14:case"end":return e.stop()}}),e,null,[[0,11]])})));return function(t,n){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var b=n(64),j=n.n(b);function f(e,t){return O.apply(this,arguments)}function O(){return(O=Object(o.a)(a.a.mark((function e(t,n){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n){e.next=3;break}throw new Error("No DaoRegistry contract instance provided.");case 3:return e.next=5,n.methods.getAdapterAddress(j.a.utils.sha3(t)).call();case 5:return e.abrupt("return",e.sent);case 8:throw e.prev=8,e.t0=e.catch(0),e.t0;case 11:case"end":return e.stop()}}),e,null,[[0,8]])})))).apply(this,arguments)}var p=n(7);function h(e){try{var t=null===e||void 0===e?void 0:e.contractAddress;if(!t)throw new Error("Contract address was not found in the store.");return t}catch(n){throw n}}function m(e,t){try{switch(e){case p.a.configuration:return"";case p.a.distribute:return h(t.DistributeContract);case p.a.financing:case p.a.guildkick:return"";case p.a.managing:return h(t.ManagingContract);case p.a.onboarding:return h(t.OnboardingContract);case p.a.ragequit:return"";case p.a.tribute:return h(t.TributeContract);case p.a.tribute_nft:return h(t.TributeNFTContract);case p.a.voting:return h(t.VotingContract);default:throw new Error("Contract address was not found in the store.")}}catch(n){throw n}}var v,x=n(12);function N(e,t){try{var n=Object.values(t).find((function(t){return(null===t||void 0===t?void 0:t.contractAddress)&&Object(x.i)(t.contractAddress)===Object(x.i)(e)}));if(!n)throw new Error("Contract was not found in the store.");return n}catch(r){throw r}}function g(e,t){return E.apply(this,arguments)}function E(){return(E=Object(o.a)(a.a.mark((function e(t,n){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n){e.next=3;break}throw new Error("No DaoRegistry contract instance provided.");case 3:return e.next=5,n.methods.getConfiguration(j.a.utils.sha3(t)).call();case 5:return e.abrupt("return",e.sent);case 8:throw e.prev=8,e.t0=e.catch(0),e.t0;case 11:case"end":return e.stop()}}),e,null,[[0,8]])})))).apply(this,arguments)}function A(e){return w.apply(this,arguments)}function w(){return(w=Object(o.a)(a.a.mark((function e(t){var n,r;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,t){e.next=3;break}throw new Error("No DaoRegistry contract instance provided.");case 3:return n=t.methods,e.next=6,n.state().call();case 6:return r=e.sent,e.abrupt("return",0===Number(r)?v.CREATION:v.READY);case 10:throw e.prev=10,e.t0=e.catch(0),e.t0;case 13:case"end":return e.stop()}}),e,null,[[0,10]])})))).apply(this,arguments)}!function(e){e.CREATION="CREATION",e.READY="READY"}(v||(v={}));n(202);function I(e,t){return y.apply(this,arguments)}function y(){return(y=Object(o.a)(a.a.mark((function e(t,r){var c,s;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.e(0).then(n.t.bind(null,949,3));case 3:return c=e.sent,s=c.default,e.next=7,new r.eth.Contract(s,t).methods.getAdapterName().call();case 7:return e.abrupt("return",e.sent);case 10:throw e.prev=10,e.t0=e.catch(0),e.t0;case 13:case"end":return e.stop()}}),e,null,[[0,10]])})))).apply(this,arguments)}function C(e,t){return e===Math.log2(Number(t)+1)-1}var D=n(4),S=n(11);function _(e){return k.apply(this,arguments)}function k(){return(k=Object(o.a)(a.a.mark((function e(t){var r,c,s,o,i,u,d,l,b,j;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.blockNumber,c=void 0===r?"latest":r,s=t.calls,o=t.web3Instance,e.next=3,n.e(24).then(n.t.bind(null,950,3));case 3:if(i=e.sent,u=i.default,S.x){e.next=8;break}return console.error("No Multicall address was found. Are you sure it is set?"),e.abrupt("return");case 8:return e.prev=8,d=new o.eth.Contract(u,S.x),l=d.methods,e.next=12,l.aggregate(s.map((function(e){var t=Object(D.a)(e,3),n=t[0],r=t[1],a=t[2];return[n.toLowerCase(),o.eth.abi.encodeFunctionCall(r,a)]}))).call({},c);case 12:return b=e.sent,j=b.returnData,e.abrupt("return",j.map((function(e,t){var n=s[t][1].outputs||[],r=o.eth.abi.decodeParameters(n,e);return 1===r.__length__&&void 0!==r[0]?r[0]:o.eth.abi.decodeParameters(n||[],e)})));case 17:throw e.prev=17,e.t0=e.catch(8),e.t0;case 20:case"end":return e.stop()}}),e,null,[[8,17]])})))).apply(this,arguments)}},35:function(e,t,n){"use strict";var r,a,c,s;n.d(t,"b",(function(){return r})),n.d(t,"c",(function(){return a})),n.d(t,"a",(function(){return c})),n.d(t,"d",(function(){return s})),function(e){e[e.GOERLI=5]="GOERLI",e[e.KOVAN=42]="KOVAN",e[e.RINKEBY=4]="RINKEBY",e[e.ROPSTEN=3]="ROPSTEN",e[e.MAINNET=1]="MAINNET"}(r||(r={})),function(e){e.GOERLI="goerli",e.KOVAN="kovan",e.RINKEBY="rinkeby",e.ROPSTEN="ropsten",e.MAINNET="mainnet"}(a||(a={})),function(e){e.REQUIRED="This field is required.",e.INVALID_BYTES32="The value is not a bytes32.",e.INVALID_BYTES32_ARRAY="The value is not a comma-separated bytes32 format, ie. 0x...,0x...",e.INVALID_EMAIL="The email address is invalid.",e.INVALID_ETHEREUM_ADDRESS="The ethereum address is invalid.",e.INVALID_NUMBER="The value is not a number.",e.INVALID_NUMBER_ARRAY="The value is not a comma-separated number format, ie. 42,5,124"}(c||(c={})),function(e){e.FAILED="Failed",e.PASSED="Passed",e.REQUESTS="Proposals",e.VOTING="Voting"}(s||(s={}))},36:function(e,t,n){"use strict";n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return b})),n.d(t,"d",(function(){return x})),n.d(t,"e",(function(){return E})),n.d(t,"f",(function(){return A})),n.d(t,"g",(function(){return S})),n.d(t,"h",(function(){return G})),n.d(t,"i",(function(){return H}));var r=n(4),a=n(1);function c(){var e=Object(a.useState)(),t=Object(r.a)(e,2),n=t[0],c=t[1],s=Object(a.useRef)(!1);return Object(a.useEffect)((function(){return s.current=!0,!n&&c(new AbortController),function(){s.current=!1,n&&n.abort()}}),[n]),{abortController:n,isMountedRef:s}}var s={count:0};function o(e,t){switch(t.type){case"increment":return{count:e.count+1};default:return e}}function i(){var e=Object(a.useReducer)(o,s),t=Object(r.a)(e,2),n=t[0],c=t[1];return[n.count,c]}var u=n(946),d=n(14),l=n(92);function b(){var e=Object(d.c)((function(e){return e.contracts.DaoRegistryContract})),t=Object(u.a)(l.b,{variables:{id:null===e||void 0===e?void 0:e.contractAddress.toLowerCase()}}),n=Object(r.a)(t,2),c=n[0],s=n[1],o=s.called,i=s.loading,b=s.data,j=s.error,f=Object(a.useState)(),O=Object(r.a)(f,2),p=O[0],h=O[1],m=Object(a.useState)(),v=Object(r.a)(m,2),x=v[0],N=v[1],g=Object(a.useCallback)((function(){try{if(!i&&b){if(h(b.tributeDaos[0]),0===b.tributeDaos.length)throw new Error('"'.concat(null===e||void 0===e?void 0:e.contractAddress,'" dao address not found.'))}else if(j)throw new Error('"'.concat(null===e||void 0===e?void 0:e.contractAddress,'" is not a valid dao address.'))}catch(j){N(j)}}),[null===e||void 0===e?void 0:e.contractAddress,b,j,i]);return Object(a.useEffect)((function(){o||c()}),[o,c]),Object(a.useEffect)((function(){!i&&(null===e||void 0===e?void 0:e.contractAddress)&&g()}),[null===e||void 0===e?void 0:e.contractAddress,g,i]),{dao:p,gqlError:x}}var j=n(2),f=n.n(j),O=n(5),p=n(9),h=n(32),m=n(15),v=[];function x(e){var t=Object(d.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.contractAddress})),n=Object(d.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.abi})),c=Object(a.useState)(v),s=Object(r.a)(c,2),o=s[0],i=s[1],u=Object(a.useState)(p.a.STANDBY),l=Object(r.a)(u,2),b=l[0],j=l[1],x=Object(a.useState)(),N=Object(r.a)(x,2),g=N[0],E=N[1],A=Object(m.f)().web3Instance,w=null===n||void 0===n?void 0:n.find((function(e){return"getConfiguration"===e.name}));function I(){return(I=Object(O.a)(f.a.mark((function e(t){var n,r,a,c,s;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.abi,r=t.configKeys,a=t.contractAddress,c=t.web3Instance,e.prev=1,s=r.map((function(e){return[a,n,[c.utils.sha3(e)||""]]})),E(void 0),j(p.a.PENDING),e.t0=i,e.next=8,Object(h.j)({calls:s,web3Instance:c});case 8:e.t1=e.sent,(0,e.t0)(e.t1),j(p.a.FULFILLED),e.next=18;break;case 13:e.prev=13,e.t2=e.catch(1),i(v),j(p.a.REJECTED),E(e.t2);case 18:case"end":return e.stop()}}),e,null,[[1,13]])})))).apply(this,arguments)}return Object(a.useEffect)((function(){t&&w&&A&&function(e){I.apply(this,arguments)}({abi:w,configKeys:e,contractAddress:t,web3Instance:A})}),[e,t,w,A]),{daoConfigurations:o,daoConfigurationsError:g,daoConfigurationsStatus:b}}var N=n(96),g=n(11);function E(){var e=Object(d.c)((function(e){return e.contracts.DaoRegistryContract})),t=Object(d.c)((function(e){return e.contracts.BankExtensionContract})),n=Object(d.c)((function(e){return e.subgraphNetworkStatus.status})),c=Object(u.a)(l.b,{variables:{id:null===e||void 0===e?void 0:e.contractAddress.toLowerCase()}}),s=Object(r.a)(c,2),o=s[0],i=s[1],b=i.called,j=i.loading,h=i.data,m=i.error,v=Object(a.useState)(),x=Object(r.a)(v,2),E=x[0],A=x[1],w=Object(a.useState)(p.a.STANDBY),I=Object(r.a)(w,2),y=I[0],C=I[1],D=Object(a.useState)(),S=Object(r.a)(D,2),_=S[0],k=S[1],T=Object(a.useCallback)((function(){return P.apply(this,arguments)}),[t]),R=Object(a.useCallback)((function(){try{if(C(p.a.PENDING),!j&&h){var e=h.tributeDaos[0].totalUnits;A(Number(e)),C(p.a.FULFILLED)}else if(m)throw new Error(m.message)}catch(m){console.log("subgraph query error: ".concat(m.message)),T()}}),[h,m,T,j]);function P(){return(P=Object(O.a)(f.a.mark((function e(){var n;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,C(p.a.PENDING),e.next=6,t.instance.methods.balanceOf(g.E,g.H).call();case 6:n=e.sent,A(Number(n)),C(p.a.FULFILLED),e.next=17;break;case 11:e.prev=11,e.t0=e.catch(2),console.log(e.t0),A(void 0),k(e.t0),C(p.a.REJECTED);case 17:case"end":return e.stop()}}),e,null,[[2,11]])})))).apply(this,arguments)}return Object(a.useEffect)((function(){b||o()}),[b,o]),Object(a.useEffect)((function(){n===N.a.OK?!j&&(null===e||void 0===e?void 0:e.contractAddress)&&R():T()}),[null===e||void 0===e?void 0:e.contractAddress,T,R,j,n]),{totalUnits:E,totalUnitsError:_,totalUnitsStatus:y}}function A(){var e=Object(a.useRef)(!1);return Object(a.useEffect)((function(){return e.current=!0,function(){e.current=!1}}),[]),{isMountedRef:e}}var w=n(152),I=n.n(w),y=n(24),C=n(106),D=n(0);function S(e){var t=(e||{}).skipIsActiveMemberCheck,n=void 0!==t&&t,c=Object(a.useState)([]),s=Object(r.a)(c,2),o=s[0],i=s[1],u=Object(a.useState)(!1),l=Object(r.a)(u,2),b=l[0],j=l[1],f=Object(d.c)((function(e){var t;return null===(t=e.connectedMember)||void 0===t?void 0:t.isActiveMember})),O=Object(m.f)().connected,p=o&&o.find((function(e){return e})),h=function(){if(!O)return"Your wallet is not connected.";if(!f&&!n)return"Either you are not a member, or your membership is not active.";return p||""}(),v=!!h||!!p,x=!(!v||!h),N=Object(a.useCallback)((function(e){if(!x)return null;var t=e.title;return Object(D.jsx)(I.a,{ariaHideApp:!1,className:"modal-container",isOpen:b,onRequestClose:function(){j(!1)},overlayClassName:"modal-overlay",role:"dialog",style:{overlay:{zIndex:1e3}},children:Object(D.jsx)(y.a,{children:Object(D.jsxs)("div",{className:"modal",children:[Object(D.jsx)("button",{className:"modal__close-button modal__close-button--icon",onClick:function(){j(!1)},children:Object(D.jsx)(C.a,{})}),Object(D.jsxs)("div",{className:"card",children:[Object(D.jsx)("h2",{className:"modal__title",children:t||"Why disabled?"}),Object(D.jsx)("p",{children:h})]})]})})})}),[x,h,b]),g=Object(a.useCallback)((function(e){i(e.filter(Boolean))}),[]);return{disabledReason:h,isDisabled:v,openWhyDisabledModal:function(){j(!0)},setOtherDisabledReasons:g,WhyDisabledModal:N}}var _=n(122),k=n.n(_),T=p.a.STANDBY,R=p.a.PENDING,P=p.a.FULFILLED,F=p.a.REJECTED,L="production"===g.m?15e3:5e3;function M(e){return B.apply(this,arguments)}function B(){return(B=Object(O.a)(f.a.mark((function e(t){var n,r,a,c,s,o,i;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.block,r=t.blockOffset,a=void 0===r?2:r,c=t.isMountedRef,s=t.pollInterval,o=void 0===s?L:s,i=t.web3Instance,e.abrupt("return",new Promise(function(){var e=Object(O.a)(f.a.mark((function e(t,r){var s,u;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=function(e,t){return t-e>=Math.abs(a)},e.prev=1,e.t0=s,e.t1=n,e.next=6,i.eth.getBlockNumber();case 6:if(e.t2=e.sent,!(0,e.t0)(e.t1,e.t2)){e.next=10;break}return t(!0),e.abrupt("return");case 10:e.next=16;break;case 12:return e.prev=12,e.t3=e.catch(1),r(e.t3),e.abrupt("return");case 16:u=setInterval(Object(O.a)(f.a.mark((function e(){return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,null===c||void 0===c?void 0:c.current){e.next=4;break}return clearInterval(u),e.abrupt("return");case 4:return e.t0=s,e.t1=n,e.next=8,i.eth.getBlockNumber();case 8:if(e.t2=e.sent,!(0,e.t0)(e.t1,e.t2)){e.next=12;break}clearInterval(u),t(!0);case 12:e.next=18;break;case 14:e.prev=14,e.t3=e.catch(0),clearInterval(u),r(e.t3);case 18:case"end":return e.stop()}}),e,null,[[0,14]])}))),o);case 17:case"end":return e.stop()}}),e,null,[[1,12]])})));return function(t,n){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function G(e,t,n){var c=n||{},s=c.blockCheckOffset,o=c.currentBlockPollIntervalMs,i=Object(d.c)((function(e){var t;return null===(t=e.contracts.BankExtensionContract)||void 0===t?void 0:t.instance.methods})),u=Object(a.useState)(),l=Object(r.a)(u,2),b=l[0],j=l[1],p=Object(a.useState)(!1),h=Object(r.a)(p,2),v=h[0],x=h[1],N=Object(a.useState)(),E=Object(r.a)(N,2),w=E[0],I=E[1],y=Object(a.useState)(T),C=Object(r.a)(y,2),D=C[0],S=C[1],_=Object(m.f)().web3Instance,L=A().isMountedRef,B=Object(a.useCallback)((function(e){return G.apply(this,arguments)}),[L]);function G(){return(G=Object(O.a)(f.a.mark((function e(t){var n,r,a,c,s,o,i;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.bankExtensionMethods,r=t.blockCheckOffset,a=t.currentBlockPollIntervalMs,c=t.memberAddress,s=t.snapshot,o=t.web3Instance,e.prev=1,I(void 0),S(R),e.next=6,M({block:s,blockOffset:r,isMountedRef:L,pollInterval:a,web3Instance:o});case 6:return e.next=8,n.getPriorAmount(c,g.H,s).call();case 8:if(i=e.sent,L.current){e.next=11;break}return e.abrupt("return");case 11:j(i),x(new k.a(i).isGreaterThan(new k.a(0))),S(P),e.next=24;break;case 16:if(e.prev=16,e.t0=e.catch(1),L.current){e.next=20;break}return e.abrupt("return");case 20:x(!1),j(void 0),I(e.t0),S(F);case 24:case"end":return e.stop()}}),e,null,[[1,16]])})))).apply(this,arguments)}return Object(a.useEffect)((function(){e&&t&&i&&_&&B({bankExtensionMethods:i,blockCheckOffset:s,currentBlockPollIntervalMs:o,memberAddress:e,snapshot:t,web3Instance:_})}),[i,s,o,B,e,t,_]),{hasMembershipAtSnapshot:v,memberUnitsAtSnapshot:b,memberUnitsAtSnapshotError:w,memberUnitsAtSnapshotStatus:D}}n(153);var U=p.a.FULFILLED,V=p.a.PENDING,W=p.a.STANDBY;function Y(e){return Object.values(e).every((function(e){return e===U}))}function H(e,t){var n=Object(a.useRef)({start:W,end:W}),c=Object(a.useState)(!1),s=Object(r.a)(c,2),o=s[0],i=s[1],u=Object(a.useState)(!1),d=Object(r.a)(u,2),l=d[0],b=d[1],j=Object(a.useState)(Y(n.current)),f=Object(r.a)(j,2),O=f[0],p=f[1],h=void 0===e||void 0===t||e<=0||t<=0;return Object(a.useEffect)((function(){if(!o&&!h){p((function(){return n.current.start=V,Y(n.current)}));var t=setInterval((function(){var t=Math.floor(Date.now()/1e3)>(null!==e&&void 0!==e?e:0);i(t),n.current.start!==U&&p((function(){return n.current.start=U,Y(n.current)}))}),1e3);return function(){t&&clearInterval(t)}}p((function(){return n.current.start=U,Y(n.current)}))}),[o,h,e]),Object(a.useEffect)((function(){if(!l&&!h){p((function(){return n.current.end=V,Y(n.current)}));var e=setInterval((function(){var e=Math.ceil(Date.now()/1e3)>(null!==t&&void 0!==t?t:0);b(e),n.current.end!==U&&p((function(){return n.current.end=U,Y(n.current)}))}),1e3);return function(){e&&clearInterval(e)}}p((function(){return n.current.end=U,Y(n.current)}))}),[t,l,h]),{hasTimeStarted:o,hasTimeEnded:l,timeStartEndInitReady:O}}},39:function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"c",(function(){return a})),n.d(t,"a",(function(){return c})),n.d(t,"d",(function(){return s}));var r,a,c,s;n(22),n(17);!function(e){e[e.EXISTS=0]="EXISTS",e[e.SPONSORED=1]="SPONSORED",e[e.PROCESSED=2]="PROCESSED"}(r||(r={})),function(e){e.Submit="Submit",e.Sponsor="Sponsor",e.OffchainVoting="OffchainVoting",e.OffchainVotingSubmitResult="OffchainVotingSubmitResult",e.OffchainVotingGracePeriod="OffchainVotingGracePeriod",e.OnchainVoting="OnchainVoting",e.Process="Process",e.Completed="Completed"}(a||(a={})),function(e){e[e.NOT_STARTED=0]="NOT_STARTED",e[e.IN_PROGRESS=1]="IN_PROGRESS",e[e.DONE=2]="DONE",e[e.FAILED=3]="FAILED"}(c||(c={})),function(e){e.Governance="Governance"}(s||(s={}))},41:function(e,t,n){"use strict";var r=n(4),a=n(61),c=n(3),s=n(1),o=n(0),i=["showAfterMs","text","textProps"];function u(e){return Object(o.jsx)("div",Object(c.a)({className:"loader"},e))}t.a=function(e){var t=e.showAfterMs,n=e.text,d=e.textProps,l=Object(a.a)(e,i),b=Object(s.useState)(!1),j=Object(r.a)(b,2),f=j[0],O=j[1];return Object(s.useEffect)((function(){var e=t&&setTimeout((function(){return O(!0)}),t);return function(){e&&clearTimeout(e)}}),[t]),(!t||t&&f)&&e.text?Object(o.jsxs)("div",{className:"loader-container",children:[Object(o.jsx)(u,Object(c.a)({},l)),Object(o.jsx)("span",Object(c.a)(Object(c.a)({className:"loader__text"},d),{},{children:n}))]}):(!t||t&&f)&&!e.text?Object(o.jsx)(u,Object(c.a)({},l)):null}},42:function(e,t,n){"use strict";var r,a;n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return a})),function(e){e[e.NOT_STARTED=0]="NOT_STARTED",e[e.TIE=1]="TIE",e[e.PASS=2]="PASS",e[e.NOT_PASS=3]="NOT_PASS",e[e.IN_PROGRESS=4]="IN_PROGRESS",e[e.GRACE_PERIOD=5]="GRACE_PERIOD"}(r||(r={})),function(e){e[e.OK=0]="OK",e[e.WRONG_PROPOSAL_ID=1]="WRONG_PROPOSAL_ID",e[e.INVALID_CHOICE=2]="INVALID_CHOICE",e[e.AFTER_VOTING_PERIOD=3]="AFTER_VOTING_PERIOD",e[e.BAD_SIGNATURE=4]="BAD_SIGNATURE",e[e.INDEX_OUT_OF_BOUND=5]="INDEX_OUT_OF_BOUND"}(a||(a={}))},435:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(1),a=n(0),c=Object(r.lazy)((function(){return n.e(6).then(n.bind(null,972))})),s=Object(r.lazy)((function(){return n.e(7).then(n.bind(null,973))})),o={injected:Object(a.jsx)(c,{}),walletconnect:Object(a.jsx)(s,{})};function i(e){var t=e.providerName;return t&&o[t]?Object(a.jsx)(r.Suspense,{fallback:null,children:Object(a.jsx)("span",{className:"walletconnect__wallet-icon",children:o[t]})}):null}},459:function(e){e.exports=JSON.parse('[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]')},46:function(e,t,n){"use strict";n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return h})),n.d(t,"c",(function(){return w})),n.d(t,"d",(function(){return T})),n.d(t,"f",(function(){return G})),n.d(t,"g",(function(){return U})),n.d(t,"e",(function(){return Z})),n.d(t,"h",(function(){return ne})),n.d(t,"i",(function(){return re}));var r=n(2),a=n.n(r),c=n(5),s=n(4),o=n(1),i=n(14),u=n(457),d=n.n(u),l=n(9),b=n(32),j=n(15),f=n(12);function O(e){var t=Object(i.c)((function(e){return e.contracts.DaoRegistryContract})),n=Object(o.useState)(),r=Object(s.a)(n,2),u=r[0],O=r[1],p=Object(o.useState)(),h=Object(s.a)(p,2),m=h[0],v=h[1],x=Object(o.useState)(l.a.STANDBY),N=Object(s.a)(x,2),g=N[0],E=N[1],A=Object(o.useState)(),w=Object(s.a)(A,2),I=w[0],y=w[1],C=Object(j.f)().web3Instance,D=d()(e),S=Object(o.useCallback)((function(){return _.apply(this,arguments)}),[t,e,C]);function _(){return(_=Object(c.a)(a.a.mark((function n(){var r,c,o,i,u,d,j,p,h,m,x,N,g,A;return a.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e&&t&&C){n.next=2;break}return n.abrupt("return");case 2:return n.prev=2,E(l.a.PENDING),r=Object(f.l)(e,7),c=t.abi,o=t.contractAddress,i=c.find((function(e){return"isNotReservedAddress"===e.name})),u=[o,i,[e]],d=c.find((function(e){return"isNotZeroAddress"===e.name})),j=[o,d,[e]],p=c.find((function(e){return"getAddressIfDelegated"===e.name})),h=[u,j,[o,p,[e]]],n.next=15,Object(b.j)({calls:h,web3Instance:C});case 15:m=n.sent,x=Object(s.a)(m,3),N=x[0],g=x[1],A=x[2],N?g?Object(f.i)(e)!==Object(f.i)(A)?(y(!1),v("The applicant address ".concat(r," is already in use as a delegate key. The address must be removed as a delegate before it can become a member."))):(y(!0),v(void 0)):(y(!1),v("The applicant address ".concat(r," is invalid."))):(y(!1),v("The applicant address ".concat(r," is invalid because it is a DAO reserved address."))),E(l.a.FULFILLED),n.next=30;break;case 24:n.prev=24,n.t0=n.catch(2),y(void 0),v(void 0),O(n.t0),E(l.a.REJECTED);case 30:case"end":return n.stop()}}),n,null,[[2,24]])})))).apply(this,arguments)}return Object(o.useEffect)((function(){D&&!e&&(O(void 0),v(void 0),y(void 0),E(l.a.STANDBY)),e&&S()}),[e,S,D]),{checkApplicantError:u,checkApplicantInvalidMsg:m,checkApplicantStatus:g,isApplicantValid:I}}var p=[];function h(e){var t=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.abi.find((function(e){return"proposals"===e.name}))})),n=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.contractAddress})),r=Object(o.useState)(p),u=Object(s.a)(r,2),d=u[0],f=u[1],O=Object(o.useState)(l.a.STANDBY),h=Object(s.a)(O,2),m=h[0],v=h[1],x=Object(o.useState)(),N=Object(s.a)(x,2),g=N[0],E=N[1],A=Object(j.f)().web3Instance;function w(){return(w=Object(c.a)(a.a.mark((function e(t){var n,r,c,s,o,i,u;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.proposalIds,r=t.proposalsAbi,c=t.registryAddress,s=t.web3Instance,e.prev=1,n.length){e.next=4;break}return e.abrupt("return");case 4:if((o=n.filter(s.utils.isHexStrict)).length){e.next=9;break}return v(l.a.FULFILLED),f([]),e.abrupt("return");case 9:return v(l.a.PENDING),E(void 0),i=o.map((function(e){return[c,r,[e]]})),e.next=14,Object(b.j)({calls:i,web3Instance:s});case 14:u=e.sent,f(o.map((function(e,t){return[e,u[t]]}))),v(l.a.FULFILLED),e.next=24;break;case 19:e.prev=19,e.t0=e.catch(1),f(p),E(e.t0),v(l.a.REJECTED);case 24:case"end":return e.stop()}}),e,null,[[1,19]])})))).apply(this,arguments)}return Object(o.useEffect)((function(){e.length&&t&&n&&A&&function(e){w.apply(this,arguments)}({proposalIds:e,proposalsAbi:t,registryAddress:n,web3Instance:A})}),[e,t,n,A]),{daoProposals:d,daoProposalsStatus:m,daoProposalsError:g}}var m=n(458),v=n(34),x=n(8),N=n(22),g=n(11),E=n(36),A=n(7);function w(e){var t=Object(i.c)((function(e){var t;return null===(t=e.contracts.BankExtensionContract)||void 0===t?void 0:t.abi})),n=Object(i.c)((function(e){var t;return null===(t=e.contracts.BankExtensionContract)||void 0===t?void 0:t.contractAddress})),r=Object(o.useState)([]),u=Object(s.a)(r,2),d=u[0],f=u[1],O=Object(o.useState)(l.a.STANDBY),p=Object(s.a)(O,2),h=p[0],w=p[1],I=Object(o.useState)(),y=Object(s.a)(I,2),C=y[0],D=y[1],S=Object(j.f)().web3Instance,_=Object(E.f)().isMountedRef,k=null===t||void 0===t?void 0:t.find((function(e){return"getPriorAmount"===e.name})),T=Object(o.useCallback)((function(e){return R.apply(this,arguments)}),[]);function R(){return(R=Object(c.a)(a.a.mark((function e(t){var n,r,c,o,i,u,d,l,j,f,O,p,h;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.bankAddress,r=t.getPriorAmountABI,c=t.snapshot,o=t.voterAddressesAndChoices,i=t.web3Instance,e.prev=1,u={},Object(x.a)(u,A.e.Yes,{percentage:0,units:0}),Object(x.a)(u,A.e.No,{percentage:0,units:0}),Object(x.a)(u,"totalUnits",0),d=u,l=[n,r,[g.E,g.H,c.toString()]],j=o.map((function(e){var t=Object(s.a)(e,1)[0];return[n,r,[t,g.H,c.toString()]]})),f=[l].concat(Object(v.a)(j)),e.next=8,Object(b.j)({calls:f,web3Instance:i});case 8:return O=e.sent,p=Object(m.a)(O),h=p[0],p.slice(1).forEach((function(e,t){var n=N.VoteChoicesIndex[o[t][1]]===N.VoteChoicesIndex[N.VoteChoicesIndex.Yes]?A.e.Yes:A.e.No;d[n].units+=Number(e)})),d[A.e.Yes].percentage=d[A.e.Yes].units/Number(h)*100,d[A.e.No].percentage=d[A.e.No].units/Number(h)*100,d.totalUnits=Number(h),e.abrupt("return",d);case 19:throw e.prev=19,e.t0=e.catch(1),e.t0;case 22:case"end":return e.stop()}}),e,null,[[1,19]])})))).apply(this,arguments)}return Object(o.useEffect)((function(){var t=Array.isArray(e)?e:[e];if(n&&k&&t.length&&S){w(l.a.PENDING);var r=t.map(function(){var e=Object(c.a)(a.a.mark((function e(t){var r,c,s,o,i,u;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=null===t||void 0===t?void 0:t.msg.payload.snapshot,(s=null===t||void 0===t?void 0:t.idInSnapshot)&&c){e.next=4;break}return e.abrupt("return");case 4:if((o=null===t||void 0===t||null===(r=t.votes)||void 0===r?void 0:r.map((function(e){var t=e[Object.keys(e)[0]];return[t.msg.payload.metadata.memberAddress,t.msg.payload.choice]})))&&o.length){e.next=7;break}return e.abrupt("return");case 7:return i=Object.entries(Object.fromEntries(o)),e.prev=8,e.next=11,T({bankAddress:n,getPriorAmountABI:k,snapshot:c,voterAddressesAndChoices:i,web3Instance:S});case 11:return u=e.sent,e.abrupt("return",[s,u]);case 15:return e.prev=15,e.t0=e.catch(8),e.abrupt("return");case 18:case"end":return e.stop()}}),e,null,[[8,15]])})));return function(t){return e.apply(this,arguments)}}());Promise.all(r).then((function(e){return e.filter((function(e){return e}))})).then((function(e){_.current&&(w(l.a.FULFILLED),f(e),D(void 0))})).catch((function(e){_.current&&(w(l.a.REJECTED),f([]),D(e))}))}}),[n,k,T,_,e,S]),{offchainVotingResults:d,offchainVotingResultsError:C,offchainVotingResultsStatus:h}}var I=n(3),y=n(54),C=n(51),D=[];function S(e){var t=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.contractAddress})),r=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.abi})),u=Object(j.f)().web3Instance,d=Object(o.useState)(D),f=Object(s.a)(d,2),O=f[0],p=f[1],h=Object(o.useState)(),m=Object(s.a)(h,2),v=m[0],x=m[1],N=Object(o.useState)(l.a.STANDBY),g=Object(s.a)(N,2),E=g[0],A=g[1],w=Object(o.useCallback)((function(){return I.apply(this,arguments)}),[e,r,t,u]);function I(){return(I=Object(c.a)(a.a.mark((function s(){var o,i,d,j,f,O,h,m,v,N,g,E;return a.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:if(e.length&&r&&t&&u){s.next=2;break}return s.abrupt("return");case 2:if((o=e.filter(u.utils.isHexStrict)).length){s.next=7;break}return p(D),A(l.a.FULFILLED),s.abrupt("return");case 7:if(s.prev=7,i=r.find((function(e){return"votingAdapter"===e.name}))){s.next=11;break}throw new Error('No "votingAdapter" ABI function was found in the DAO registry ABI.');case 11:return d=o.map((function(e){return[t,i,[e]]})),A(l.a.PENDING),s.next=15,Object(b.j)({calls:d,web3Instance:u});case 15:return j=s.sent,s.next=18,n.e(0).then(n.t.bind(null,949,3));case 18:if(f=s.sent,O=f.default,h=O.find((function(e){return"getAdapterName"===e.name}))){s.next=23;break}throw new Error('No "getAdapterName" ABI function was found in the IVoting ABI.');case 23:if(m=o.filter((function(e,t){return j[t]!==y.a})),(v=j.filter((function(e){return e!==y.a}))).length){s.next=29;break}return p(D),A(l.a.FULFILLED),s.abrupt("return");case 29:return N=v.map((function(e){return[e,h,[]]})),s.next=32,Object(b.j)({calls:N,web3Instance:u});case 32:return g=s.sent,s.next=35,Promise.all(m.map(function(){var e=Object(c.a)(a.a.mark((function e(t,n){var r,c;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(C.d)(g[n]);case 2:return r=e.sent,c=v[n],e.abrupt("return",[t,{votingAdapterName:g[n],votingAdapterAddress:c,getVotingAdapterABI:function(){return r},getWeb3VotingAdapterContract:function(){return new u.eth.Contract(r,c)}}]);case 5:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()));case 35:E=s.sent,p(E),A(l.a.FULFILLED),s.next=45;break;case 40:s.prev=40,s.t0=s.catch(7),A(l.a.REJECTED),p([]),x(s.t0);case 45:case"end":return s.stop()}}),s,null,[[7,40]])})))).apply(this,arguments)}return Object(o.useEffect)((function(){w()}),[w]),{proposalsVotingAdapters:O,proposalsVotingAdaptersError:v,proposalsVotingAdaptersStatus:E}}var _="Something went wrong while getting the proposal.",k="Proposal was not found.";function T(e,t){var n,r=Object(o.useState)(),i=Object(s.a)(r,1)[0],u=Object(o.useState)(),d=Object(s.a)(u,2),b=d[0],j=d[1],f=Object(o.useState)(),O=Object(s.a)(f,2),p=O[0],h=O[1],m=Object(o.useState)(!1),v=Object(s.a)(m,2),x=v[0],A=v[1],w=Object(o.useState)(),y=Object(s.a)(w,2),C=y[0],D=y[1],T=Object(o.useState)(l.a.STANDBY),R=Object(s.a)(T,2),P=R[0],F=R[1],L=Object(o.useState)([e]),M=Object(s.a)(L,2),B=M[0],G=M[1],U=Object(o.useState)(l.a.STANDBY),V=Object(s.a)(U,2),W=V[0],Y=V[1],H=Object(o.useState)(),K=Object(s.a)(H,2),z=K[0],q=K[1],J=Object(E.a)(),Q=J.abortController,X=J.isMountedRef,$=Object(E.b)(),Z=Object(s.a)($,2),ee=Z[0],te=Z[1],ne=S(B),re=ne.proposalsVotingAdapters,ae=ne.proposalsVotingAdaptersError,ce=ne.proposalsVotingAdaptersStatus,se=Object(o.useCallback)((function(){return le.apply(this,arguments)}),[null===Q||void 0===Q?void 0:Q.signal,e,X]),oe=Object(o.useCallback)((function(){return be.apply(this,arguments)}),[null===Q||void 0===Q?void 0:Q.signal,e,X,t]),ie=Object(o.useCallback)((function(){return je.apply(this,arguments)}),[se,oe]),ue=p?N.SnapshotType.proposal:b?N.SnapshotType.draft:void 0,de=b||p?{daoProposal:i,daoProposalVotingAdapter:null===(n=re[0])||void 0===n?void 0:n[1],getCommonSnapshotProposalData:function(){switch(ue){case N.SnapshotType.draft:return b;case N.SnapshotType.proposal:return p;default:return}},refetchProposalOrDraft:function(){te({type:"increment"})},snapshotDraft:b,snapshotProposal:p,snapshotType:ue}:void 0;function le(){return(le=Object(c.a)(a.a.mark((function t(){var n,r,c,s;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,F(l.a.PENDING),t.next=4,fetch("".concat(g.C,"/api/").concat(g.D,"/draft/").concat(e),{signal:null===Q||void 0===Q?void 0:Q.signal});case 4:if((n=t.sent).ok){t.next=7;break}throw new Error(_);case 7:return t.next=9,n.json();case 9:if(r=t.sent,X.current){t.next=12;break}return t.abrupt("return");case 12:if(r&&Object.keys(r).length){t.next=15;break}throw A(!0),new Error(k);case 15:return c=Object.keys(r)[0],s=Object(I.a)({idInDAO:c,idInSnapshot:c},r[c]),F(l.a.FULFILLED),j(s),t.abrupt("return",s);case 22:if(t.prev=22,t.t0=t.catch(0),X.current){t.next=26;break}return t.abrupt("return");case 26:F(l.a.REJECTED),D(t.t0);case 28:case"end":return t.stop()}}),t,null,[[0,22]])})))).apply(this,arguments)}function be(){return(be=Object(c.a)(a.a.mark((function n(){var r,c,s,o,i,u;return a.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,F(l.a.PENDING),n.next=4,fetch("".concat(g.C,"/api/").concat(g.D,"/proposal/").concat(e,"?searchUniqueDraftId=true&includeVotes=true"),{signal:null===Q||void 0===Q?void 0:Q.signal});case 4:if((c=n.sent).ok){n.next=9;break}if(t!==N.SnapshotType.proposal){n.next=8;break}throw new Error(_);case 8:return n.abrupt("return");case 9:return n.next=11,c.json();case 11:if(s=n.sent,X.current){n.next=14;break}return n.abrupt("return");case 14:if(s&&Object.keys(s).length){n.next=19;break}if(t!==N.SnapshotType.proposal){n.next=18;break}throw A(!0),new Error(k);case 18:return n.abrupt("return");case 19:return o=Object.keys(s)[0],i=(null===(r=s[o])||void 0===r?void 0:r.data.erc712DraftHash)||o,u=Object(I.a)({idInDAO:i,idInSnapshot:o},s[o]),F(l.a.FULFILLED),h(u),n.abrupt("return",u);case 27:if(n.prev=27,n.t0=n.catch(0),X.current){n.next=31;break}return n.abrupt("return");case 31:F(l.a.REJECTED),D(n.t0);case 33:case"end":return n.stop()}}),n,null,[[0,27]])})))).apply(this,arguments)}function je(){return(je=Object(c.a)(a.a.mark((function e(){var t,n;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,oe();case 2:if(t=e.sent){e.next=9;break}return e.next=6,se();case 6:return n=e.sent,j(n),e.abrupt("return");case 9:h(t);case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}return Object(o.useEffect)((function(){if(null===Q||void 0===Q?void 0:Q.signal)switch(t){case N.SnapshotType.draft:se();break;case N.SnapshotType.proposal:oe();break;default:ie()}}),[null===Q||void 0===Q?void 0:Q.signal,se,oe,ie,ee,t]),Object(o.useEffect)((function(){0!==ee&&G([e])}),[e,ee]),Object(o.useEffect)((function(){var e=l.a.STANDBY,t=l.a.PENDING,n=l.a.FULFILLED,r=l.a.REJECTED,a=[P,ce];P!==e?a.some((function(e){return e===t}))&&0===ee?Y(t):a.every((function(e){return e===n}))?Y(n):P!==n||ce!==n||re.length?a.some((function(e){return e===r}))&&Y(r):Y(n):Y(e)}),[P,re.length,ce,ee]),Object(o.useEffect)((function(){q([C,ae].find((function(e){return e})))}),[C,ae]),{proposalData:de,proposalError:z,proposalNotFound:x,proposalStatus:W}}var R=n(17);var P=[];function F(e){return L.apply(this,arguments)}function L(){return(L=Object(c.a)(a.a.mark((function e(t){var n,r,c,o;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n="".concat(g.C,"/api/").concat(g.D),e.next=4,fetch("".concat(n,"/drafts/").concat(t));case 4:if((r=e.sent).ok){e.next=7;break}throw new Error("Something went wrong while fetching the Snapshot drafts.");case 7:return e.next=9,r.json();case 9:return c=e.sent,o=Object.entries(c).filter((function(e){var t=Object(s.a)(e,2);t[0];return!1===t[1].data.sponsored})),e.abrupt("return",o);case 14:throw e.prev=14,e.t0=e.catch(0),e.t0;case 17:case"end":return e.stop()}}),e,null,[[0,14]])})))).apply(this,arguments)}function M(e){return B.apply(this,arguments)}function B(){return(B=Object(c.a)(a.a.mark((function e(t){var n,r,c,o;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n="".concat(g.C,"/api/").concat(g.D),e.next=4,fetch("".concat(n,"/proposals/").concat(t,"?includeVotes=true"));case 4:if((r=e.sent).ok){e.next=7;break}throw new Error("Something went wrong while fetching the Snapshot proposals.");case 7:return e.next=9,r.json();case 9:return c=e.sent,o=Object.entries(c).map((function(e){var t=Object(s.a)(e,2),n=t[0],r=t[1];return[r.data.erc712DraftHash||n,r]})),e.abrupt("return",o);case 14:throw e.prev=14,e.t0=e.catch(0),e.t0;case 17:case"end":return e.stop()}}),e,null,[[0,14]])})))).apply(this,arguments)}function G(e){var t=e.adapterName,n=e.includeProposalsExistingOnlyOffchain,r=void 0!==n&&n,u=Object(o.useState)(),d=Object(s.a)(u,2),O=d[0],p=d[1],m=Object(o.useState)(P),g=Object(s.a)(m,2),E=g[0],A=g[1],w=Object(o.useState)(l.a.STANDBY),y=Object(s.a)(w,2),C=y[0],D=y[1],_=Object(o.useState)(),k=Object(s.a)(_,2),T=k[0],L=k[1],B=Object(o.useState)(P),G=Object(s.a)(B,2),V=G[0],W=G[1],Y=Object(o.useState)(P),H=Object(s.a)(Y,2),K=H[0],z=H[1],q=Object(o.useState)(l.a.STANDBY),J=Object(s.a)(q,2),Q=J[0],X=J[1],$=Object(o.useState)(),Z=Object(s.a)($,2),ee=Z[0],te=Z[1],ne=Object(i.c)((function(e){return e.contracts})),re=h(Object(o.useMemo)((function(){return E.map((function(e){return e[0]}))}),[E])),ae=re.daoProposals,ce=re.daoProposalsError,se=re.daoProposalsStatus,oe=S(V),ie=oe.proposalsVotingAdapters,ue=oe.proposalsVotingAdaptersError,de=oe.proposalsVotingAdaptersStatus,le=U(ie),be=le.proposalsVotingState,je=le.proposalsVotingStateError,fe=le.proposalsVotingStateStatus,Oe=function(e){var t=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.contractAddress})),n=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.abi})),r=Object(j.f)().web3Instance,u=Object(o.useState)([]),d=Object(s.a)(u,2),f=d[0],O=d[1],p=Object(o.useState)(),h=Object(s.a)(p,2),m=h[0],v=h[1],N=Object(o.useState)(l.a.STANDBY),g=Object(s.a)(N,2),E=g[0],A=g[1],w=Object(o.useCallback)((function(){return I.apply(this,arguments)}),[e,n,t,r]);function I(){return(I=Object(c.a)(a.a.mark((function o(){var i,u,d;return a.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(e.length&&n&&t&&r){o.next=2;break}return o.abrupt("return");case 2:if((i=e.filter((function(e){var t=Object(s.a)(e,1)[0];return r.utils.isHexStrict(t)}))).length){o.next=7;break}return A(l.a.FULFILLED),O([]),o.abrupt("return");case 7:return o.prev=7,A(l.a.PENDING),o.next=11,Promise.all(i.map(function(){var e=Object(c.a)(a.a.mark((function e(n){var r,c,o,i,u,d;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=Object(s.a)(n,2),c=r[0],o=r[1],i=o.votingAdapterAddress,u=o.getVotingAdapterABI,d=o.votingAdapterName,e.t0=i,e.next=4,y(d,u());case 4:return e.t1=e.sent,e.t2=[t,c],e.abrupt("return",[e.t0,e.t1,e.t2]);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 11:return u=o.sent,o.next=14,Object(b.j)({calls:u,web3Instance:r});case 14:d=o.sent,A(l.a.FULFILLED),O(i.map((function(e,t){var n=Object(s.a)(e,2),r=n[0],a=n[1].votingAdapterName;return[r,Object(x.a)({},a,d[t])]}))),o.next=24;break;case 19:o.prev=19,o.t0=o.catch(7),A(l.a.REJECTED),O([]),v(o.t0);case 24:case"end":return o.stop()}}),o,null,[[7,19]])})))).apply(this,arguments)}function y(e,t){return C.apply(this,arguments)}function C(){return(C=Object(c.a)(a.a.mark((function e(t,n){var r,c;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,e.t0=t,e.next=e.t0===R.c.OffchainVotingContract?4:e.t0===R.c.VotingContract?8:12;break;case 4:if(r=n.find((function(e){return"votes"===e.name}))){e.next=7;break}throw new Error('No "votes" function ABI was found for "'.concat(t,'".'));case 7:return e.abrupt("return",r);case 8:if(c=n.find((function(e){return"votes"===e.name}))){e.next=11;break}throw new Error('No "votes" function ABI was found for "'.concat(t,'".'));case 11:return e.abrupt("return",c);case 12:throw new Error('No voting adapter name was found for "'.concat(t,'".'));case 13:e.next=18;break;case 15:throw e.prev=15,e.t1=e.catch(0),e.t1;case 18:case"end":return e.stop()}}),e,null,[[0,15]])})))).apply(this,arguments)}return Object(o.useEffect)((function(){w()}),[w]),{proposalsVotes:f,proposalsVotesError:m,proposalsVotesStatus:E}}(ie),pe=Oe.proposalsVotes,he=Oe.proposalsVotesError,me=Oe.proposalsVotesStatus;function ve(){return(ve=Object(c.a)(a.a.mark((function e(t){var n,r,c;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,D(l.a.PENDING),L(void 0),e.next=5,F(t);case 5:return n=e.sent,e.next=8,M(t);case 8:if(r=e.sent,(c=[].concat(Object(v.a)(n),Object(v.a)(r))).length){e.next=13;break}return D(l.a.FULFILLED),e.abrupt("return");case 13:A(c),D(l.a.FULFILLED),e.next=22;break;case 17:e.prev=17,e.t0=e.catch(0),D(l.a.REJECTED),A(P),L(e.t0);case 22:case"end":return e.stop()}}),e,null,[[0,17]])})))).apply(this,arguments)}return Object(o.useEffect)((function(){var e,n,r=null===(e=Object.entries(ne).find((function(e){var n=Object(s.a)(e,2),r=(n[0],n[1]);return(null===r||void 0===r?void 0:r.adapterOrExtensionName)===t})))||void 0===e||null===(n=e[1])||void 0===n?void 0:n.contractAddress;p(r)}),[O,t,ne]),Object(o.useEffect)((function(){O&&function(e){ve.apply(this,arguments)}(O)}),[O]),Object(o.useEffect)((function(){if(ae.length)return W(r?ae.map((function(e){return Object(s.a)(e,1)[0]})):ae.filter((function(e){var t=Object(s.a)(e,2);t[0];return"0"!==t[1].flags})).map((function(e){return Object(s.a)(e,1)[0]})))}),[ae,r]),Object(o.useEffect)((function(){if(Q===l.a.FULFILLED){var e=V.map((function(e){var t,n,r,a=ae.find((function(t){var n=Object(s.a)(t,1)[0];return Object(f.i)(n)===Object(f.i)(e)}))||[],c=Object(s.a)(a,2)[1],o=E.find((function(t){var n=Object(s.a)(t,1)[0];return Object(f.i)(n)===Object(f.i)(e)}))||[],i=Object(s.a)(o,2),u=i[0],d=i[1],l=(null===d||void 0===d?void 0:d.msg.type)===N.SnapshotType.draft,b=u&&l?Object(I.a)(Object(I.a)({},d),{},{idInDAO:e,idInSnapshot:u}):void 0,j=u&&!l?Object(I.a)(Object(I.a)({},d),{},{idInDAO:e,idInSnapshot:u}):void 0,O=null===(t=ie.find((function(t){var n=Object(s.a)(t,1)[0];return Object(f.i)(n)===Object(f.i)(e)})))||void 0===t?void 0:t[1],p=null===(n=be.find((function(t){var n=Object(s.a)(t,1)[0];return Object(f.i)(n)===Object(f.i)(e)})))||void 0===n?void 0:n[1];return{daoProposal:c,daoProposalVote:null===(r=pe.find((function(t){var n=Object(s.a)(t,1)[0];return Object(f.i)(e)===Object(f.i)(n)})))||void 0===r?void 0:r[1],daoProposalVotingAdapter:O,daoProposalVotingState:p,idInDAO:e,snapshotDraft:b,snapshotProposal:j,snapshotType:l?N.SnapshotType.draft:N.SnapshotType.proposal,getCommonSnapshotProposalData:function(){},refetchProposalOrDraft:function(){}}})).filter((function(e){return e.snapshotDraft||e.snapshotProposal}));z(e)}}),[V,ae,Q,pe,ie,be,E]),Object(o.useEffect)((function(){var e=l.a.STANDBY,t=l.a.PENDING,n=l.a.FULFILLED,r=l.a.REJECTED,a=[se,de,fe,me,C];C!==e?a.some((function(e){return e===t}))?X(t):a.every((function(e){return e===n}))?X(n):(C!==n||E.length)&&(de!==n||ie.length)?a.some((function(e){return e===r}))&&X(r):X(n):X(e)}),[V.length,se,me,ie,de,fe,E.length,C]),Object(o.useEffect)((function(){te([ce,he,ue,je,T].find((function(e){return e})))}),[ce,he,ue,je,T]),{proposals:K,proposalsError:ee,proposalsStatus:Q}}function U(e){var t=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.contractAddress})),r=Object(j.f)().web3Instance,u=Object(o.useState)([]),d=Object(s.a)(u,2),f=d[0],O=d[1],p=Object(o.useState)(),h=Object(s.a)(p,2),m=h[0],v=h[1],x=Object(o.useState)(l.a.STANDBY),N=Object(s.a)(x,2),g=N[0],E=N[1],A=Object(o.useCallback)((function(){return w.apply(this,arguments)}),[e,t,r]);function w(){return(w=Object(c.a)(a.a.mark((function c(){var o,i,u,d,j;return a.a.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(t&&e.length&&r){a.next=2;break}return a.abrupt("return");case 2:if((o=e.filter((function(e){var t=Object(s.a)(e,1)[0];return r.utils.isHexStrict(t)}))).length){a.next=6;break}return E(l.a.FULFILLED),a.abrupt("return");case 6:return a.prev=6,a.next=9,n.e(0).then(n.t.bind(null,949,3));case 9:if(i=a.sent.default,u=i.find((function(e){return"voteResult"===e.name}))){a.next=13;break}throw new Error('No "voteResult" ABI function was found on the "IVoting" contract.');case 13:return d=o.map((function(e){var n=Object(s.a)(e,2),r=n[0];return[n[1].votingAdapterAddress,u,[t,r]]})),E(l.a.PENDING),a.next=17,Object(b.j)({calls:d,web3Instance:r});case 17:j=a.sent,E(l.a.FULFILLED),O(o.map((function(e,t){return[Object(s.a)(e,1)[0],j[t]]}))),a.next=27;break;case 22:a.prev=22,a.t0=a.catch(6),E(l.a.REJECTED),O([]),v(a.t0);case 27:case"end":return a.stop()}}),c,null,[[6,22]])})))).apply(this,arguments)}return Object(o.useEffect)((function(){A()}),[A]),{proposalsVotingState:f,proposalsVotingStateError:m,proposalsVotingStateStatus:g}}var V=n(25),W=n(39),Y=n(42),H=W.c.Completed,K=W.c.OffchainVotingGracePeriod,z=W.c.OffchainVotingSubmitResult,q=W.c.OffchainVoting,J=W.c.Process,Q=W.c.Sponsor,X=W.c.Submit,$="production"===g.m?15e3:5e3;function Z(e){var t=e.countdownVotingEndSeconds,n=void 0===t?0:t,r=e.countdownVotingStartSeconds,u=void 0===r?0:r,d=e.pollInterval,l=void 0===d?$:d,O=e.proposal,p=e.useCountdownToCheckInVoting,h=void 0!==p&&p,m=Object(j.f)().web3Instance,v=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.contractAddress})),x=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.abi})),N=Object(o.useState)(),g=Object(s.a)(N,2),A=g[0],w=g[1],I=Object(o.useState)(!1),D=Object(s.a)(I,2),S=D[0],_=D[1],k=Object(o.useState)(),T=Object(s.a)(k,2),R=T[0],P=T[1],F=Object(o.useState)(),L=Object(s.a)(F,2),M=L[0],B=L[1],G=Object(o.useState)(),U=Object(s.a)(G,2),Z=U[0],ee=U[1],te=Object(o.useState)(),ne=Object(s.a)(te,2),re=ne[0],ae=ne[1],ce=Object(o.useRef)(),se=Object(o.useRef)(!1),oe=Object(E.i)(u,n),ie=oe.hasTimeStarted,ue=oe.hasTimeEnded,de=oe.timeStartEndInitReady,le=S&&(!h||de),be=O.daoProposalVotingAdapter,je=O.snapshotDraft,fe=O.snapshotProposal,Oe=(null===je||void 0===je?void 0:je.idInDAO)||(null===fe||void 0===fe?void 0:fe.idInDAO),pe=!!R&&Object(C.e)(W.b.EXISTS,R.flags),he=!!R&&Object(C.e)(W.b.SPONSORED,R.flags),me=!!R&&Object(C.e)(W.b.PROCESSED,R.flags),ve=null===be||void 0===be?void 0:be.votingAdapterAddress,xe=null===be||void 0===be?void 0:be.getVotingAdapterABI(),Ne=Object(V.isAddress)((null===M||void 0===M?void 0:M.reporter)||"")&&Object(f.i)((null===M||void 0===M?void 0:M.reporter)||"")!==y.a,ge=h?ie&&!ue:Y.b[Z||""]===Y.b[Y.b.IN_PROGRESS],Ee=Y.b[Z||""]===Y.b[Y.b.GRACE_PERIOD],Ae=Object(o.useCallback)((function(){return we.apply(this,arguments)}),[be,x,v,xe,ve,Oe,m]);function we(){return(we=Object(c.a)(a.a.mark((function e(){var t,n,r,c,o,i,u,d,l,j,f,O;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,x&&v&&Oe&&m){e.next=3;break}return e.abrupt("return");case 3:if(t=x.filter((function(e){return"proposals"===e.name}))[0],be){e.next=13;break}return e.next=7,Object(b.j)({calls:[[v,t,[Oe]]],web3Instance:m});case 7:return n=e.sent,r=Object(s.a)(n,1),c=r[0],P(c),_(!0),e.abrupt("return",c);case 13:if(xe&&ve){e.next=15;break}return e.abrupt("return");case 15:return o=xe.filter((function(e){return"voteResult"===e.name}))[0],i=xe.filter((function(e){return"votes"===e.name}))[0],u=[[v,t,[Oe]],[ve,i,[v,Oe]],[ve,o,[v,Oe]]],e.next=20,Object(b.j)({calls:u,web3Instance:m});case 20:return d=e.sent,l=Object(s.a)(d,3),j=l[0],f=l[1],O=l[2],P(j),B(f),ee(O),_(!0),e.abrupt("return",{proposal:j,voteResult:O,votes:f});case 32:throw e.prev=32,e.t0=e.catch(0),e.t0;case 35:case"end":return e.stop()}}),e,null,[[0,32]])})))).apply(this,arguments)}function Ie(){ce.current&&(clearInterval(ce.current),ce.current=void 0)}return Object(o.useEffect)((function(){S||Ae().catch((function(e){ae(e)}))}),[Ae,S]),Object(o.useEffect)((function(){me&&(se.current=!0),Ie();var e=setInterval(Object(c.a)(a.a.mark((function e(){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,se.current&&Ie(),e.next=4,Ae();case 4:e.next=10;break;case 6:e.prev=6,e.t0=e.catch(0),Ie(),ae(e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,6]])}))),l);ce.current=e}),[me,l,Ae]),Object(o.useEffect)((function(){return me&&Ie(),function(){Ie()}}),[me]),Object(o.useEffect)((function(){if(le){var e=void 0===A;pe||he||me||A!==X&&!e?!pe||ge||A!==X&&!e?!he||!ge||Ne||A!==X&&A!==Q&&!e?!he||ge||Ne||A!==q&&!e?he&&!ge&&Ne&&Ee&&(A===z||e)?w(K):!he||ge||!Ne||Ee||A!==K&&!e?!me||A!==J&&!e||w(H):w(J):w(z):w(q):w(Q):w(X)}else w(void 0)}),[pe,me,he,A,le,ge,Ee,Ne]),{daoProposal:R,daoProposalVote:M,daoProposalVoteResult:Z,proposalFlowStatusError:re,status:A,stopPollingForStatus:Ie}}var ee=n(57),te=n(104);function ne(){var e=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.contractAddress})),t=Object(i.c)((function(e){return e.contracts})),n=Object(i.c)((function(e){var t;return null===(t=e.connectedMember)||void 0===t?void 0:t.memberAddress})),r=Object(te.a)(),u=r.account,d=r.provider,l=r.web3Instance,j=Object(o.useState)(),f=Object(s.a)(j,2),O=f[0],p=f[1],h=Object(o.useState)(),m=Object(s.a)(h,2),v=m[0],x=m[1],E=Object(o.useState)(A.f.STANDBY),w=Object(s.a)(E,2),C=w[0],D=w[1];function S(){return(S=Object(c.a)(a.a.mark((function r(c){var s,o,i,j,f,O,h,m,v,E,w,C,S,_,k,T,R,P,F,L,M,B;return a.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(s=c.partialVoteData,o=c.adapterName,i=c.proposalIdInDAO,j=c.proposalIdInSnapshot,r.prev=1,l){r.next=4;break}throw new Error("No Web3 instance was found.");case 4:if(u){r.next=6;break}throw new Error("No account was found.");case 6:if(n){r.next=8;break}throw new Error("No member address was found.");case 8:if(e){r.next=10;break}throw new Error('No "DaoRegistry" address was found.');case 10:if(g.C){r.next=12;break}throw new Error('No "SNAPSHOT_HUB_API_URL" was found.');case 12:if(g.D){r.next=14;break}throw new Error('No Snapshot "SPACE" was found.');case 14:return D(A.f.AWAITING_CONFIRM),f=o?Object(b.d)(o,t):y.a,O=s.choice,h=s.metadata,m=void 0===h?{}:h,r.next=19,Object(N.getSpace)(g.C,g.D);case 19:return v=r.sent,E=v.data,w={chainId:g.k,choice:O,metadata:Object(I.a)(Object(I.a)({},m),{},{memberAddress:n})},C={proposalId:i,space:g.D,token:E.token},r.next=25,Object(N.buildVoteMessage)(w,C,g.C);case 25:return S=r.sent,_=Object(N.prepareVoteMessage)({timestamp:S.timestamp,payload:{proposalId:S.payload.proposalId,choice:N.VoteChoicesIndex[O]}}),k=Object(N.getDomainDefinition)(Object(I.a)(Object(I.a)({},_),{},{type:N.SnapshotType.vote}),e,f,g.k),T=k.domain,R=k.types,P=JSON.stringify({types:R,domain:T,primaryType:ee.a,message:_}),r.next=31,Object(N.signMessage)(d,u,P);case 31:return F=r.sent,D(A.f.PENDING),r.next=35,Object(N.submitMessage)(g.C,u,Object(I.a)(Object(I.a)({},S),{},{payload:Object(I.a)(Object(I.a)({},S.payload),{},{proposalId:j})}),F,{actionId:T.actionId,chainId:T.chainId,verifyingContract:T.verifyingContract,message:_});case 35:return L=r.sent,M=L.data,B={data:S,signature:F,uniqueId:M.uniqueId},D(A.f.FULFILLED),p(B),r.abrupt("return",B);case 43:throw r.prev=43,r.t0=r.catch(1),D(A.f.REJECTED),x(r.t0),r.t0;case 48:case"end":return r.stop()}}),r,null,[[1,43]])})))).apply(this,arguments)}return{signAndSendVote:function(e){return S.apply(this,arguments)},voteData:O,voteDataError:v,voteDataStatus:C}}function re(){var e=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.contractAddress})),t=Object(i.c)((function(e){var t;return null===(t=e.contracts.DaoRegistryContract)||void 0===t?void 0:t.instance})),n=Object(i.c)((function(e){return e.contracts})),r=Object(te.a)(),u=r.account,d=r.provider,l=r.web3Instance,j=Object(o.useState)(),f=Object(s.a)(j,2),O=f[0],p=f[1],h=Object(o.useState)(),m=Object(s.a)(h,2),v=m[0],x=m[1],E=Object(o.useState)(A.f.STANDBY),w=Object(s.a)(E,2),C=w[0],D=w[1];function S(e){return _.apply(this,arguments)}function _(){return(_=Object(c.a)(a.a.mark((function e(n){var r,c;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(g.C){e.next=2;break}throw new Error('No "SNAPSHOT_HUB_API_URL" was found.');case 2:if(l){e.next=4;break}throw new Error("No Web3 instance was found.");case 4:return e.next=6,l.eth.getBlockNumber();case 6:return r=e.sent,e.t0=parseInt,e.next=10,Object(b.f)(A.b.offchainVotingVotingPeriod,t);case 10:return e.t1=e.sent,c=(0,e.t0)(e.t1),e.next=14,Object(N.buildProposalMessage)(Object(I.a)(Object(I.a)({},n),{},{votingTimeSeconds:c,snapshot:r}),g.C);case 14:return e.abrupt("return",e.sent);case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function k(){return(k=Object(c.a)(a.a.mark((function t(r){var c,s,o,i,j,f,O,h,m,v,E,w,C,_,k,T,R,P,F,L,M,B;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c=r.partialProposalData,s=r.adapterAddress,o=r.adapterName,i=r.type,t.prev=1,u){t.next=4;break}throw new Error("No account was found to send.");case 4:if(l){t.next=6;break}throw new Error("No Web3 instance was found.");case 6:if(e){t.next=8;break}throw new Error('No "DaoRegistry" address was found.');case 8:if(g.C){t.next=10;break}throw new Error('No "SNAPSHOT_HUB_API_URL" was found.');case 10:if(g.D){t.next=12;break}throw new Error('No Snapshot "SPACE" was found.');case 12:if(i===N.SnapshotType.draft||i===N.SnapshotType.proposal){t.next=14;break}throw new Error('Handling for type "vote" is not implemented.');case 14:return D(A.f.AWAITING_CONFIRM),j=s||(o?Object(b.d)(o,n):y.a),f=c.body,O=c.name,h=c.metadata,m=c.timestamp,t.next=19,Object(N.getSpace)(g.C,g.D);case 19:if(v=t.sent,E=v.data,w={name:O,body:f,metadata:h,token:E.token,space:g.D},i!==N.SnapshotType.draft){t.next=28;break}return t.next=25,Object(N.buildDraftMessage)(w,g.C);case 25:t.t0=t.sent,t.next=31;break;case 28:return t.next=30,S(Object(I.a)(Object(I.a)({},w),{},{timestamp:m}));case 30:t.t0=t.sent;case 31:return C=t.t0,_=i===N.SnapshotType.draft?Object(N.prepareDraftMessage)(C):Object(N.prepareProposalMessage)(C),k=Object(N.getDomainDefinition)(Object(I.a)(Object(I.a)({},_),{},{type:i}),e,j,g.k),T=k.domain,R=k.types,P=JSON.stringify({types:R,domain:T,primaryType:ee.a,message:_}),t.next=37,Object(N.signMessage)(d,u,P);case 37:return F=t.sent,D(A.f.PENDING),t.next=41,Object(N.submitMessage)(g.C,u,C,F,{actionId:T.actionId,chainId:T.chainId,verifyingContract:T.verifyingContract,message:_});case 41:return L=t.sent,M=L.data,B={data:C,signature:F,uniqueId:M.uniqueId,uniqueIdDraft:M.uniqueIdDraft||""},D(A.f.FULFILLED),p(B),t.abrupt("return",B);case 49:throw t.prev=49,t.t1=t.catch(1),D(A.f.REJECTED),x(t.t1),t.t1;case 54:case"end":return t.stop()}}),t,null,[[1,49]])})))).apply(this,arguments)}return{proposalData:O,proposalSignAndSendError:v,proposalSignAndSendStatus:C,signAndSendProposal:function(e){return k.apply(this,arguments)}}}},484:function(e,t){},50:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(0);function a(e){var t=e.url,n=e.isPending,a=void 0!==n&&n;return Object(r.jsx)("small",{children:Object(r.jsx)("a",{href:t,rel:"noopener noreferrer",target:"_blank",children:a?"view progress":"view transaction"})})}},51:function(e,t,n){"use strict";function r(e){var t=e.gracePeriodLength,n=e.gracePeriodStartingTime,r=e.votePeriodLength,a=e.voteStartingTime,c=1e3,s=function(e){return Number(e||0)},o=s(n)*c,i=s(a)*c;return{voteEndMs:i+s(r)*c,voteStartMs:i,gracePeriodEndMs:o+s(t)*c,gracePeriodStartMs:o}}n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return f})),n.d(t,"d",(function(){return p})),n.d(t,"e",(function(){return m})),n.d(t,"f",(function(){return x})),n.d(t,"g",(function(){return N}));var a=n(2),c=n.n(a),s=n(5),o=n(11);function i(e){return u.apply(this,arguments)}function u(){return(u=Object(s.a)(c.a.mark((function e(t){var n;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch("".concat(o.C,"/api/").concat(o.D,"/offchain_proof/").concat(t));case 3:if(404!==(n=e.sent).status){e.next=6;break}return e.abrupt("return",void 0);case 6:if(n.ok){e.next=8;break}throw new Error("Something went wrong while getting the off-chain vote proof.");case 8:return e.next=10,n.json();case 10:return e.abrupt("return",e.sent);case 13:throw e.prev=13,e.t0=e.catch(0),e.t0;case 16:case"end":return e.stop()}}),e,null,[[0,13]])})))).apply(this,arguments)}var d=n(4),l=n(22),b=n(12),j=n(7);function f(e,t){var n=(e||[]).find((function(e){return Object.entries(e).find((function(e){var n=Object(d.a)(e,2),r=n[0];n[1];return Object(b.i)(r)===Object(b.i)(t||"")}))}));if(n)return Object.entries(n)[0][1].msg.payload.choice===l.VoteChoicesIndex.Yes?j.e.Yes:j.e.No}var O=n(17);function p(e){return h.apply(this,arguments)}function h(){return(h=Object(s.a)(c.a.mark((function e(t){var r,a,s,o;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,e.t0=t,e.next=e.t0===O.c.OffchainVotingContract?4:e.t0===O.c.VotingContract?9:14;break;case 4:return e.next=6,n.e(1).then(n.t.bind(null,955,3));case 6:return r=e.sent,a=r.default,e.abrupt("return",a);case 9:return e.next=11,n.e(2).then(n.t.bind(null,954,3));case 11:return s=e.sent,o=s.default,e.abrupt("return",o);case 14:throw new Error('No voting adapter name was found for "'.concat(t,'".'));case 15:e.next=20;break;case 17:throw e.prev=17,e.t1=e.catch(0),e.t1;case 20:case"end":return e.stop()}}),e,null,[[0,17]])})))).apply(this,arguments)}function m(e,t){return e===Math.log2(Number(t)+1)-1}var v=n(42);function x(e,t){return v.b[t]===v.b[e]}function N(e){return g.apply(this,arguments)}function g(){return(g=Object(s.a)(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch("".concat(o.C,"/api/").concat(o.D,"/offchain_proofs"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});case 3:if(e.sent.ok){e.next=6;break}throw new Error("Something went wrong while submitting the off-chain vote proof.");case 6:e.next=11;break;case 8:throw e.prev=8,e.t0=e.catch(0),e.t0;case 11:case"end":return e.stop()}}),e,null,[[0,8]])})))).apply(this,arguments)}},527:function(e,t){},529:function(e,t){},54:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r="0x0000000000000000000000000000000000000000"},553:function(e,t){},555:function(e,t){},568:function(e,t){},569:function(e,t){},57:function(e,t,n){"use strict";n.d(t,"c",(function(){return a})),n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return s}));var r=n(7),a=[r.e.Yes,r.e.No],c="Message",s=["Submitting\u2026","Working\u2026","DAOing\u2026","Getting closer\u2026","Dreaming of ETH\u2026"]},59:function(e,t,n){"use strict";var r=n(205);n.d(t,"a",(function(){return r.a}))},590:function(e,t){},592:function(e,t){},69:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var r=n(4),a=n(1),c=n(12);function s(e){var t=e.intervalMs,n=e.messages,s=e.useFirstItemStart?n[0]:Object(c.a)(n),o=Object(a.useState)(s),i=Object(r.a)(o,2),u=i[0],d=i[1];return Object(a.useEffect)((function(){var e=setInterval((function(){return d((function(e){return Object(c.a)(n,e)}))}),t);return function(){clearInterval(e)}}),[t,n]),e.render(u)}},695:function(e,t){},7:function(e,t,n){"use strict";var r,a,c,s,o,i;n.d(t,"d",(function(){return r})),n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return c})),n.d(t,"b",(function(){return s})),n.d(t,"e",(function(){return o})),n.d(t,"f",(function(){return i})),function(e){e[e.EXISTS=0]="EXISTS"}(r||(r={})),function(e){e.bank="bank",e.configuration="configuration",e.coupon_onboarding="coupon-onboarding",e.dao_registry="daoRegistry",e.distribute="distribute",e.financing="financing",e.guildkick="guildkick",e.managing="managing",e.nft="nft",e.onboarding="onboarding",e.ragequit="ragequit",e.tribute="tribute",e.tribute_nft="tribute-nft",e.voting="voting"}(a||(a={})),function(e){e.bank="bank",e.erc20="erc20-ext",e.nft="nft"}(c||(c={})),function(e){e.offchainVotingGracePeriod="offchainvoting.gracePeriod",e.offchainVotingStakingAmount="offchainvoting.stakingAmount",e.offchainVotingVotingPeriod="offchainvoting.votingPeriod",e.onboardingChunkSize="onboarding.chunkSize",e.onboardingMaximumChunks="onboarding.maximumChunks",e.onboardingUnitsPerChunk="onboarding.unitsPerChunk",e.onboardingTokenAddr="onboarding.tokenAddr",e.votingGracePeriod="voting.gracePeriod",e.votingStakingAmount="voting.stakingAmount",e.votingVotingPeriod="voting.votingPeriod"}(s||(s={})),function(e){e.Yes="Yes",e.No="No"}(o||(o={})),function(e){e.STANDBY="STANDBY",e.AWAITING_CONFIRM="AWAITING_CONFIRM",e.PENDING="PENDING",e.FULFILLED="FULFILLED",e.REJECTED="REJECTED"}(i||(i={}))},702:function(e,t){},719:function(e,t){},720:function(e,t){},77:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var r=n(4),a=n(1),c=n(0);function s(e){var t=e.showAfterMs,n=Object(a.useState)(!1),s=Object(r.a)(n,2),o=s[0],i=s[1];return Object(a.useEffect)((function(){var e=t&&setTimeout((function(){return i(!0)}),t);return function(){e&&clearTimeout(e)}}),[t]),!t||t&&o?Object(c.jsx)("div",{className:"loader--large","aria-label":"Loading content..."}):null}},790:function(e,t){},791:function(e,t){},814:function(e,t){},85:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var r=n(64),a=n.n(r),c=function(e){return a.a.utils.isAddress(e)}},896:function(e,t){},9:function(e,t,n){"use strict";var r;n.d(t,"a",(function(){return r})),function(e){e.STANDBY="STANDBY",e.PENDING="PENDING",e.FULFILLED="FULFILLED",e.REJECTED="REJECTED"}(r||(r={}))},919:function(e,t,n){},92:function(e,t,n){"use strict";n.d(t,"b",(function(){return u})),n.d(t,"a",(function(){return d})),n.d(t,"c",(function(){return l})),n.d(t,"d",(function(){return b})),n.d(t,"e",(function(){return p}));var r,a,c,s,o=n(120),i=n(149),u=Object(i.a)(r||(r=Object(o.a)(["\n query GetDao($id: ID) {\n tributeDaos(where: {id: $id}) {\n id # dao address\n daoAddress\n name\n totalUnits\n }\n }\n"]))),d=Object(i.a)(a||(a=Object(o.a)(["\n query GetAdaptersAndExtensions($daoAddress: String) {\n tributeDaos(where: {daoAddress: $daoAddress}) {\n daoAddress\n adapters {\n id\n acl\n adapterId\n adapterAddress\n }\n extensions {\n id\n extensionId\n extensionAddress\n }\n }\n }\n"]))),l=Object(i.a)(c||(c=Object(o.a)(["\n query GetMembers($daoAddress: String) {\n tributeDaos(where: {daoAddress: $daoAddress}) {\n members(orderBy: createdAt, orderDirection: desc) {\n createdAt\n address: memberAddress\n delegateKey\n isDelegated\n units\n didFullyRagequit\n }\n }\n }\n"]))),b=Object(i.a)(s||(s=Object(o.a)(["\n query GetTokenHolderBalances($tokenAddress: String) {\n tokens(where: {tokenAddress: $tokenAddress}) {\n symbol\n tokenAddress\n holders {\n balance\n member {\n id\n delegateKey\n }\n }\n }\n }\n"]))),j=n(447),f=n(20),O=n(96);function p(e){return Object(j.a)((function(t){var n=t.networkError;n&&(e.getState().subgraphNetworkStatus.status!==O.a.ERR&&(e.dispatch(Object(f.V)({status:O.a.ERR})),console.error("[Subgraph network error]: ".concat(n))));n||e.getState().subgraphNetworkStatus.status!==O.a.OK&&e.dispatch(Object(f.V)({status:O.a.OK}))}))}},923:function(e,t,n){"use strict";n.r(t),n.d(t,"getApolloClient",(function(){return Lr}));var r=n(34),a=n(112),c=n(14),s=n(40),o=n(922),i=n(268),u=n(150),d=n(945),l=n(924),b=n(11),j=n(20),f=n(12),O=n(92),p=n(137),h=n(450),m=n(451),v=n(3),x=n(61),N=n(175),g=["type"],E=null;function A(e,t){return Object(v.a)(Object(v.a)({},e),t)}function w(){return E}var I=n(176),y={isOpen:!1};function C(e){return Object(v.a)(Object(v.a)({},e),{},{isOpen:!1})}function D(e){return Object(v.a)(Object(v.a)({},e),{},{isOpen:!0})}var S=["type"],_={BankAdapterContract:null,BankExtensionContract:null,BankFactoryContract:null,ConfigurationContract:null,CouponOnboardingContract:null,DaoFactoryContract:null,DaoRegistryAdapterContract:null,DaoRegistryContract:null,DistributeContract:null,ERC20ExtensionContract:null,FinancingContract:null,GuildBankContract:null,ManagingContract:null,NFTAdapterContract:null,NFTExtensionContract:null,OnboardingContract:null,RagequitContract:null,TributeContract:null,TributeNFTContract:null,VotingContract:null};function k(e){return Object(v.a)(Object(v.a)({},e),_)}function T(e,t){return Object(v.a)(Object(v.a)({},e),{},{BankFactoryContract:Object(v.a)({},t)})}function R(e,t){return Object(v.a)(Object(v.a)({},e),{},{DaoFactoryContract:Object(v.a)({},t)})}function P(e,t){return Object(v.a)(Object(v.a)({},e),{},{DaoRegistryContract:Object(v.a)({},t)})}function F(e,t){return Object(v.a)(Object(v.a)({},e),{},{DaoRegistryAdapterContract:Object(v.a)({},t)})}function L(e,t){return Object(v.a)(Object(v.a)({},e),{},{BankExtensionContract:Object(v.a)({},t)})}function M(e,t){return Object(v.a)(Object(v.a)({},e),{},{ConfigurationContract:Object(v.a)({},t)})}function B(e,t){return Object(v.a)(Object(v.a)({},e),{},{DistributeContract:Object(v.a)({},t)})}function G(e,t){return Object(v.a)(Object(v.a)({},e),{},{FinancingContract:Object(v.a)({},t)})}function U(e,t){return Object(v.a)(Object(v.a)({},e),{},{GuildBankContract:Object(v.a)({},t)})}function V(e,t){return Object(v.a)(Object(v.a)({},e),{},{OnboardingContract:Object(v.a)({},t)})}function W(e,t){return Object(v.a)(Object(v.a)({},e),{},{RagequitContract:Object(v.a)({},t)})}function Y(e,t){return Object(v.a)(Object(v.a)({},e),{},{TributeContract:Object(v.a)({},t)})}function H(e,t){return Object(v.a)(Object(v.a)({},e),{},{VotingContract:Object(v.a)({},t)})}function K(e,t){return Object(v.a)(Object(v.a)({},e),{},{ManagingContract:Object(v.a)({},t)})}function z(e,t){return Object(v.a)(Object(v.a)({},e),{},{BankAdapterContract:Object(v.a)({},t)})}function q(e,t){return Object(v.a)(Object(v.a)({},e),{},{NFTAdapterContract:Object(v.a)({},t)})}function J(e,t){return Object(v.a)(Object(v.a)({},e),{},{TributeNFTContract:Object(v.a)({},t)})}function Q(e,t){return Object(v.a)(Object(v.a)({},e),{},{CouponOnboardingContract:Object(v.a)({},t)})}function X(e,t){return Object(v.a)(Object(v.a)({},e),{},{NFTExtensionContract:Object(v.a)({},t)})}function $(e,t){return Object(v.a)(Object(v.a)({},e),{},{ERC20ExtensionContract:Object(v.a)({},t)})}var Z=n(203),ee=n(96),te=["type"],ne={status:ee.a.OK};function re(e,t){return Object(v.a)(Object(v.a)({},e),t)}var ae=Object(p.combineReducers)({connectModal:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y,t=arguments.length>1?arguments[1]:void 0,n=t.type;switch(n){case I.a:return C(e);case I.b:return D(e);default:return e}},connectedMember:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:E,t=arguments.length>1?arguments[1]:void 0,n=t.type,r=Object(x.a)(t,g);switch(n){case N.b:return A(e,r);case N.a:return w();default:return e}},contracts:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:_,t=arguments.length>1?arguments[1]:void 0,n=t.type,r=Object(x.a)(t,S);switch(n){case j.a:return k(e);case j.b:return z(e,r);case j.c:return L(e,r);case j.d:return T(e,r);case j.e:return M(e,r);case j.f:return Q(e,r);case j.g:return R(e,r);case j.h:return P(e,r);case j.i:return F(e,r);case j.j:return B(e,r);case j.k:return $(e,r);case j.l:return G(e,r);case j.m:return U(e,r);case j.n:return K(e,r);case j.o:return q(e,r);case j.p:return X(e,r);case j.q:return V(e,r);case j.r:return W(e,r);case j.s:return Y(e,r);case j.t:return J(e,r);case j.u:case j.v:return H(e,r);default:return e}},subgraphNetworkStatus:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ne,t=arguments.length>1?arguments[1]:void 0,n=t.type,r=Object(x.a)(t,te);switch(n){case Z.a:return re(e,r);default:return e}}}),ce=Object(p.createStore)(ae,Object(h.composeWithDevTools)(Object(p.applyMiddleware)(m.a))),se=n(58),oe=n(1),ie=n.n(oe),ue=n(0);function de(e){return Object(ue.jsx)("svg",Object(v.a)(Object(v.a)({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 12 14"},e),{},{children:Object(ue.jsx)("g",{fillRule:"evenodd",stroke:"none",strokeWidth:"1",children:Object(ue.jsx)("g",{transform:"translate(-737 -124)",children:Object(ue.jsx)("g",{transform:"translate(596 124)",children:Object(ue.jsx)("path",{fill:"currentColor",d:"M151.166.8h-8.679c-.733 0-1.344.611-1.344 1.345v8.8c0 .734.611 1.345 1.344 1.345h7.395l-.366-1.223.855.795.795.733 1.405 1.223V2.145c-.06-.734-.61-1.345-1.405-1.345zm-2.506 8.495s-.244-.306-.428-.55c.49-.122.917-.367 1.161-.795a2.065 2.065 0 01-.733.367c-.306.122-.611.245-.917.306a4.039 4.039 0 01-1.71 0 6.007 6.007 0 01-.979-.306 1.83 1.83 0 01-.489-.244s-.06 0-.06-.061c-.123-.062-.184-.123-.184-.123.305.367.672.673 1.161.795-.183.244-.428.55-.428.55a2.579 2.579 0 01-2.017-.978c0-1.344.367-2.628.917-3.79.55-.427 1.161-.671 1.834-.671l.06.06c-.61.184-1.222.429-1.71.856l.366-.183c.49-.183.978-.367 1.467-.428h.122a4.947 4.947 0 011.345 0c.672.061 1.344.306 1.955.611a5.299 5.299 0 00-1.65-.855l.061-.122c.673.06 1.284.244 1.834.672.611 1.161.917 2.506.917 3.789-.367.733-1.1 1.1-1.895 1.1zm-2.995-3.056c-.427-.06-.733.245-.794.673-.061.427.244.733.672.794.428.061.734-.244.795-.672v-.061c0-.367-.306-.734-.673-.734zm2.384 0c-.428-.06-.733.245-.795.673-.06.427.245.733.673.794.427.061.733-.244.794-.672v-.061c0-.367-.305-.734-.672-.734z"})})})})}))}var le,be=n(18),je=n(21),fe=n(29),Oe=n(28),pe=function(e){Object(fe.a)(n,e);var t=Object(Oe.a)(n);function n(){return Object(be.a)(this,n),t.apply(this,arguments)}return Object(je.a)(n,[{key:"render",value:function(){return Object(ue.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true","data-icon":"github","data-prefix":"fab",viewBox:"0 0 496 512",children:Object(ue.jsx)("path",{fill:"currentColor",d:"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"})})}}]),n}(ie.a.Component),he=function(e){Object(fe.a)(n,e);var t=Object(Oe.a)(n);function n(){return Object(be.a)(this,n),t.apply(this,arguments)}return Object(je.a)(n,[{key:"render",value:function(){return Object(ue.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true","data-icon":"medium","data-prefix":"fab",viewBox:"0 0 448 512",children:Object(ue.jsx)("path",{fill:"currentColor",d:"M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z"})})}}]),n}(ie.a.Component);function me(){return Object(ue.jsxs)("div",{className:"socialmedia",children:[Object(ue.jsx)("a",{href:le.MEDIUM,target:"_blank",rel:"noopener noreferrer",children:Object(ue.jsx)(he,{})}),Object(ue.jsx)("a",{href:le.DISCORD,target:"_blank",rel:"noopener noreferrer",children:Object(ue.jsx)(de,{})}),Object(ue.jsx)("a",{href:le.GITHUB,target:"_blank",rel:"noopener noreferrer",children:Object(ue.jsx)(pe,{})})]})}function ve(){return Object(ue.jsx)("div",{className:"footer",children:Object(ue.jsx)(me,{})})}!function(e){e.DISCORD="#",e.GITHUB="https://github.com/search?q=org%3Aopenlawteam+tribute-ui+OR+tribute-contracts+in%3Aname&type=repositories",e.MEDIUM="#"}(le||(le={}));var xe=n(4),Ne=n(15),ge=n(9),Ee=Object(oe.lazy)((function(){return n.e(9).then(n.bind(null,975))}));function Ae(){var e=Object(c.c)((function(e){return e.connectModal.isOpen})),t=Object(oe.useState)({isOpen:e,onRequestClose:function(){f(Object(j.y)())}}),n=Object(xe.a)(t,2),r=n[0],a=n[1],s=Object(Ne.f)(),o=s.account,i=s.connected,u=s.initialCachedConnectorCheckStatus,d=s.web3Instance,l=Object(Ne.d)().isDefaultChain,b=Object(Ne.e)(o,null===d||void 0===d?void 0:d.currentProvider),f=Object(c.b)(),O=Object(se.g)().pathname;return Object(oe.useEffect)((function(){a((function(t){return Object(v.a)(Object(v.a)({},t),{},{isOpen:e})}))}),[e]),Object(oe.useEffect)((function(){u===ge.a.FULFILLED&&f(!(!i||l&&!b)?Object(j.z)():Object(j.y)())}),[i,f,u,l,b,O]),e?Object(ue.jsx)(oe.Suspense,{fallback:null,children:Object(ue.jsx)(Ee,{maybeContractWallet:b,modalProps:r})}):null}var we=n(453);function Ie(){return Object(ue.jsxs)(we.a,{children:[Object(ue.jsx)("title",{children:"Tribute"}),Object(ue.jsx)("meta",{name:"description",content:"A modular DAO framework developed and coordinated by its members"})]})}function ye(e){return Object(ue.jsx)("div",{className:"logo ".concat(e.size?"logo--".concat(e.size):""),children:"TRIBUTE"})}function Ce(){return Object(ue.jsx)("div",{className:"logo-container logo-container--center",children:Object(ue.jsx)(ye,{size:"small"})})}function De(){return Object(ue.jsx)("div",{className:"logo-container logo-container--header",children:Object(ue.jsx)(ye,{size:"medium"})})}function Se(){return Object(ue.jsx)("div",{className:"logo-container logo-container--center",children:Object(ue.jsx)(ye,{size:"large"})})}var _e=n(930),ke=n(465),Te=n(152),Re=n.n(Te);function Pe(){return Object(ue.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true","data-icon":"bars","data-prefix":"fal",viewBox:"0 0 448 512",children:Object(ue.jsx)("path",{fill:"currentColor",d:"M442 114H6a6 6 0 01-6-6V84a6 6 0 016-6h436a6 6 0 016 6v24a6 6 0 01-6 6zm0 160H6a6 6 0 01-6-6v-24a6 6 0 016-6h436a6 6 0 016 6v24a6 6 0 01-6 6zm0 160H6a6 6 0 01-6-6v-24a6 6 0 016-6h436a6 6 0 016 6v24a6 6 0 01-6 6z"})})}var Fe=n(106),Le=n(135),Me=n(435);function Be(e){var t=e.customWalletText,n=e.showWalletETHBadge,r=void 0===n||n,a=Object(Ne.f)(),s=a.account,o=a.connected,i=a.web3Modal,u=Object(Ne.d)().isDefaultChain,d=Object(c.b)(),l=!1===u;return Object(ue.jsxs)("button",{className:"walletconnect__connect-button \n ".concat(l&&o?"walletconnect__connect-button--error":""),onClick:function(){d(Object(j.z)())},children:[Object(ue.jsx)("span",{className:"connect-button-text ".concat(o?"connect-button-text--ethAddress":""),children:t?"function"===typeof t?t({account:s,connected:o,isMobile:Object(Le.isMobile)()}):t:s?Object(f.l)(s):"Connect"}),l&&o&&Object(ue.jsx)("span",{children:"Wrong Network"}),r&&Object(ue.jsx)(Me.a,{providerName:null===i||void 0===i?void 0:i.cachedProvider})]})}var Ge=n(24),Ue=n(2),Ve=n.n(Ue),We=n(5);function Ye(){var e=Object(c.c)((function(e){var t;return null===(t=e.contracts)||void 0===t?void 0:t.ERC20ExtensionContract})),t=Object(oe.useState)(),n=Object(xe.a)(t,2),r=n[0],a=n[1],s=Object(oe.useState)(ge.a.STANDBY),o=Object(xe.a)(s,2),i=o[0],u=o[1],d=Object(oe.useState)(),l=Object(xe.a)(d,2),b=l[0],j=l[1],f=Object(oe.useCallback)((function(){return O.apply(this,arguments)}),[e]);function O(){return(O=Object(We.a)(Ve.a.mark((function t(){var n,r;return Ve.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=2;break}return t.abrupt("return");case 2:return t.prev=2,u(ge.a.PENDING),t.next=6,e.instance.methods.symbol().call();case 6:return n=t.sent,t.next=9,e.instance.methods.decimals().call();case 9:r=t.sent,a({address:e.contractAddress,symbol:n,decimals:Number(r),image:"".concat(window.location.origin,"/favicon.ico")}),u(ge.a.FULFILLED),t.next=20;break;case 14:t.prev=14,t.t0=t.catch(2),console.log(t.t0),a(void 0),j(t.t0),u(ge.a.REJECTED);case 20:case"end":return t.stop()}}),t,null,[[2,14]])})))).apply(this,arguments)}return Object(oe.useEffect)((function(){f()}),[f]),{daoTokenDetails:r,daoTokenDetailsError:b,daoTokenDetailsStatus:i}}var He=n(946);var Ke=["customStyles"],ze="".concat(window.location.origin,"/favicon.ico");function qe(e){var t=e.customStyles,n=Object(x.a)(e,Ke),r=Object(oe.useState)(),a=Object(xe.a)(r,2),s=a[0],o=a[1],i=Object(oe.useState)(),u=Object(xe.a)(i,2),d=u[0],l=u[1],j=Object(oe.useState)(""),p=Object(xe.a)(j,2),h=p[0],m=p[1],N=function(){var e=Object(c.c)((function(e){var t;return null===(t=e.contracts)||void 0===t?void 0:t.ERC20ExtensionContract})),t=Object(c.c)((function(e){return e.connectedMember})),n=Object(He.a)(O.d,{variables:{tokenAddress:null===e||void 0===e?void 0:e.contractAddress.toLowerCase()}}),r=Object(xe.a)(n,2),a=r[0],s=r[1],o=s.called,i=s.loading,u=s.data,d=s.error,l=s.startPolling,b=s.stopPolling,j=Object(oe.useState)(),f=Object(xe.a)(j,2),p=f[0],h=f[1],m=Object(oe.useState)(),v=Object(xe.a)(m,2),x=v[0],N=v[1],g=Object(oe.useCallback)((function(){try{if(!i&&u){if(h(u.tokens[0]),0===u.tokens.length)throw new Error('"'.concat(null===e||void 0===e?void 0:e.contractAddress,'" erc20 address not found.'))}else if(d)throw new Error('"'.concat(null===e||void 0===e?void 0:e.contractAddress,'" is not a valid erc20 address.'))}catch(d){N(d)}}),[null===e||void 0===e?void 0:e.contractAddress,u,d,i]);return Object(oe.useEffect)((function(){o||a()}),[o,a]),Object(oe.useEffect)((function(){!i&&(null===e||void 0===e?void 0:e.contractAddress)&&g()}),[null===e||void 0===e?void 0:e.contractAddress,g,i]),Object(oe.useEffect)((function(){t&&l&&l(2e3);var e=b&&setTimeout(b,1e4);return function(){e&&clearTimeout(e)}}),[t,l,b]),{tokenHolderBalances:p,gqlError:x}}().tokenHolderBalances,g=Object(Ne.f)(),E=g.account,A=g.networkId,w=Object(oe.useCallback)((function(){try{(e=ze,fetch(e).then((function(e){return e.blob()})).then((function(e){return new Promise((function(t,n){var r=new FileReader;r.onloadend=function(){return t(r.result)},r.onerror=n,r.readAsDataURL(e)}))}))).then((function(e){e&&l(e)}))}catch(t){console.log(t)}var e}),[]);return Object(oe.useEffect)((function(){if(o(void 0),E&&N){var e=N.holders,t=N.symbol,n=N.tokenAddress,r=null===e||void 0===e?void 0:e.find((function(e){var t;return(null===(t=e.member)||void 0===t?void 0:t.id.toLowerCase())===E.toLowerCase()}));r&&o({balance:r.balance,tokenAddress:n,symbol:t}),E&&A&&m("".concat(b.o[A],"/token/").concat(n,"?a=").concat(E)),w()}}),[E,A,N,w]),s?Object(ue.jsx)(Ge.a,{children:Object(ue.jsxs)("a",{className:"daotokenholder__button",rel:"noopener noreferrer",target:"_blank",href:h,style:Object(v.a)(Object(v.a)({},n),t),children:[Object(ue.jsx)("span",{className:"daotokenholder__balance",children:Object(f.e)(s.balance)}),Object(ue.jsx)("span",{className:"daotokenholder__symbol",children:s.symbol}),d&&Object(ue.jsx)("img",{src:d,alt:"Token Icon"})]})}):Object(ue.jsx)(ue.Fragment,{})}var Je={transition:"0.1s"},Qe={entering:{right:"-300px"},entered:{right:0},exiting:{right:0,opacity:0},exited:{right:"-300px",opacity:0}},Xe={entering:{right:0,opacity:1},entered:{right:"-300px",opacity:1},exiting:{right:"-300px",opacity:1},exited:{right:0,opacity:1}};function $e(){return Object(ue.jsx)("nav",{role:"navigation",id:"navigation",children:Object(ue.jsxs)("ul",{className:"nav__list","data-testid":"nav__list",children:[Object(ue.jsx)("li",{tabIndex:0,children:Object(ue.jsx)(s.c,{to:"/membership",children:Object(ue.jsx)("span",{children:"Membership"})})}),Object(ue.jsx)("li",{tabIndex:0,children:Object(ue.jsx)(s.c,{to:"/governance",children:Object(ue.jsx)("span",{children:"Governance"})})}),Object(ue.jsx)("li",{tabIndex:0,children:Object(ue.jsx)(s.c,{to:"/transfers",children:Object(ue.jsx)("span",{children:"Transfer"})})}),Object(ue.jsx)("li",{tabIndex:0,children:Object(ue.jsx)(s.c,{to:"/tributes",children:Object(ue.jsx)("span",{children:"Tribute"})})})]})})}function Ze(){var e=Object(c.c)((function(e){return e.connectedMember})),t=Object(oe.useState)(!1),n=Object(xe.a)(t,2),r=n[0],a=n[1],o=Object(oe.useState)(Qe),i=Object(xe.a)(o,2),u=i[0],d=i[1],l=Object(Ne.f)().account,b=Object(oe.useRef)();Object(oe.useEffect)((function(){return function(){b.current&&clearTimeout(b.current)}}),[]);var j=!(!l||!(null===e||void 0===e?void 0:e.isActiveMember)),f=!(!l||!(null===e||void 0===e?void 0:e.isActiveMember)||l.toLowerCase()!==(null===e||void 0===e?void 0:e.memberAddress.toLowerCase()));function O(e){if(!e)return d(Xe),b.current=setTimeout((function(){return a(e)}),500),function(){return b.current&&clearTimeout(b.current)};a(e),d(Qe)}return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{tabIndex:0,className:"nav__hamburger-wrapper",children:Object(ue.jsx)("div",{className:"nav__hamburger","aria-label":"Menu","aria-controls":"navigation",onClick:function(e){e.preventDefault(),O(!0)},children:Object(ue.jsx)(Pe,{})})}),Object(ue.jsx)(Re.a,{ariaHideApp:!1,className:"nav-modal-container",isOpen:r,onRequestClose:function(){O(!1)},overlayClassName:"nav-modal-overlay",role:"dialog",style:{overlay:{zIndex:"99"}},children:Object(ue.jsx)(_e.a,{appear:!0,in:r,timeout:200,children:function(e){return Object(ue.jsx)("nav",{role:"navigation",id:"navigation",children:Object(ue.jsxs)("div",{style:Object(v.a)(Object(v.a)({},Je),u[e]),className:"nav-modal",children:[Object(ue.jsx)("button",{className:"modal__close-button modal__close-button--icon",onClick:function(e){e.preventDefault(),O(!1)},children:Object(ue.jsx)(Fe.a,{})}),Object(ue.jsx)(Ce,{}),Object(ue.jsx)("div",{className:"nav-modal__walletconnect-button-container",children:Object(ue.jsx)(Be,{})}),Object(ue.jsxs)("ul",{className:"nav__list",children:[Object(ue.jsx)("li",{onClick:function(){O(!1)},children:Object(ue.jsx)(s.c,{to:"/membership",children:Object(ue.jsx)("span",{children:"Membership"})})}),Object(ue.jsx)("li",{onClick:function(){O(!1)},children:Object(ue.jsx)(s.c,{to:"/governance",children:Object(ue.jsx)("span",{children:"Governance"})})}),Object(ue.jsx)("li",{onClick:function(){O(!1)},children:Object(ue.jsx)(s.c,{to:"/transfers",children:Object(ue.jsx)("span",{children:"Transfer"})})}),Object(ue.jsx)("li",{onClick:function(){O(!1)},children:Object(ue.jsx)(s.c,{to:"/tributes",children:Object(ue.jsx)("span",{children:"Tribute"})})}),f&&Object(ue.jsx)("li",{onClick:function(){O(!1)},children:Object(ue.jsx)(s.c,{to:"/members/".concat(l),children:Object(ue.jsx)("span",{children:"Profile"})})}),j&&Object(ue.jsx)("li",{onClick:function(){O(!1)},children:Object(ue.jsx)(s.c,{to:"/dao-manager",children:Object(ue.jsx)("span",{children:"Manage DAO"})})})]})]})})}})})]})}function et(){return Object(ue.jsx)(ke.a,{query:"(max-width: 62em)",children:function(e){return Object(ue.jsx)("div",{className:"nav-header",children:Object(ue.jsxs)("div",{className:"nav-header__menu-container",children:[Object(ue.jsx)($e,{}),Object(ue.jsx)(qe,{border:"1px solid #c3d6dc"}),Object(ue.jsx)(Ze,{}),Object(ue.jsx)("div",{className:"nav-header__walletconnect-button-container",children:Object(ue.jsx)(Be,{})})]})})}})}function tt(){function e(e){return Object(ue.jsx)(s.b,{to:"/",children:e.children})}return Object(ue.jsxs)("header",{className:"header",children:[Object(ue.jsx)(e,{children:Object(ue.jsx)(De,{})}),Object(ue.jsx)("div",{className:"header__nav-container",children:Object(ue.jsx)(et,{})})]})}var nt=n(8),rt=n(17),at=n(64),ct=n.n(at);function st(e){return t=e,ct.a.utils.sha3(t);var t}function ot(e){var t;return{acl:it((t={},Object(nt.a)(t,rt.b.BANK,{}),Object(nt.a)(t,rt.a.CONFIGURATION,{SUBMIT_PROPOSAL:!0,PROCESS_PROPOSAL:!0,SPONSOR_PROPOSAL:!0,SET_CONFIGURATION:!0}),Object(nt.a)(t,rt.a.DISTRIBUTE,{SUBMIT_PROPOSAL:!0,SPONSOR_PROPOSAL:!0,PROCESS_PROPOSAL:!0,INTERNAL_TRANSFER:!0}),Object(nt.a)(t,rt.a.EXECUTION,{}),Object(nt.a)(t,rt.a.TRIBUTE,{SUBMIT_PROPOSAL:!0,SPONSOR_PROPOSAL:!0,PROCESS_PROPOSAL:!0,NEW_MEMBER:!0,ADD_TO_BALANCE:!0,REGISTER_NEW_TOKEN:!0}),Object(nt.a)(t,rt.a.FINANCING,{SUBMIT_PROPOSAL:!0,SPONSOR_PROPOSAL:!0,PROCESS_PROPOSAL:!0,ADD_TO_BALANCE:!0,SUB_FROM_BALANCE:!0}),Object(nt.a)(t,rt.a.GUILDKICK,{SUBMIT_PROPOSAL:!0,SPONSOR_PROPOSAL:!0,PROCESS_PROPOSAL:!0,SUB_FROM_BALANCE:!0,ADD_TO_BALANCE:!0,JAIL_MEMBER:!0,UNJAIL_MEMBER:!0,INTERNAL_TRANSFER:!0}),Object(nt.a)(t,rt.a.MANAGING,{SUBMIT_PROPOSAL:!0,PROCESS_PROPOSAL:!0,SPONSOR_PROPOSAL:!0,REMOVE_ADAPTER:!0,ADD_ADAPTER:!0}),Object(nt.a)(t,rt.a.OFFCHAINVOTING,{}),Object(nt.a)(t,rt.a.ONBOARDING,{SUBMIT_PROPOSAL:!0,SPONSOR_PROPOSAL:!0,PROCESS_PROPOSAL:!0,ADD_TO_BALANCE:!0,UPDATE_DELEGATE_KEY:!0,NEW_MEMBER:!0}),Object(nt.a)(t,rt.a.NONVOTING_ONBOARDING,{}),Object(nt.a)(t,rt.a.RAGEQUIT,{SUB_FROM_BALANCE:!0,JAIL_MEMBER:!0,UNJAIL_MEMBER:!0,INTERNAL_TRANSFER:!0}),Object(nt.a)(t,rt.a.VOTING,{}),Object(nt.a)(t,rt.a.BANK,{WITHDRAW:!0,SUB_FROM_BALANCE:!0,UPDATE_TOKEN:!0}),Object(nt.a)(t,rt.a.NFT,{COLLECT_NFT:!0}),Object(nt.a)(t,rt.a.COUPON_ONBOARDING,{SUBMIT_PROPOSAL:!1,ADD_TO_BALANCE:!0,UPDATE_DELEGATE_KEY:!1,NEW_MEMBER:!0}),Object(nt.a)(t,rt.a.TRIBUTE_NFT,{SUBMIT_PROPOSAL:!0,NEW_MEMBER:!0,ADD_TO_BALANCE:!0,COLLECT_NFT:!0}),Object(nt.a)(t,rt.b.NFT,{WITHDRAW_NFT:!0,COLLECT_NFT:!0,INTERNAL_TRANSFER:!0}),Object(nt.a)(t,rt.a.DAO_REGISTRY,{UPDATE_DELEGATE_KEY:!0}),t)[e])}}function it(e){var t=[e.ADD_ADAPTER,e.REMOVE_ADAPTER,e.JAIL_MEMBER,e.UNJAIL_MEMBER,e.SUBMIT_PROPOSAL,e.SPONSOR_PROPOSAL,e.PROCESS_PROPOSAL,e.UPDATE_DELEGATE_KEY,e.SET_CONFIGURATION,e.ADD_EXTENSION,e.REMOVE_EXTENSION,e.NEW_MEMBER],n=[e.TRANSFER_NFT];return function(e){return e.map((function(e,t){return void 0!==e?Math.pow(2,t):0})).reduce((function(e,t){return e+t}))}([].concat(t,n))}var ut=[{name:rt.a.CONFIGURATION,adapterId:st(rt.a.CONFIGURATION),contractAddress:b.e[b.k],abiFunctionName:"submitConfigurationProposal",description:"Manages storing and retrieving per-DAO settings required by shared adapters."},{name:rt.a.DISTRIBUTE,adapterId:st(rt.a.DISTRIBUTE),contractAddress:b.l[b.k],abiFunctionName:"submitProposal",description:"Allows the members to distribute funds to one or all members of the DAO."},{name:rt.a.FINANCING,adapterId:st(rt.a.FINANCING),contractAddress:b.q[b.k],abiFunctionName:"createFinancingRequest",description:"Allows individuals and/or organizations to request funds to finance their projects, and the members of the DAO have the power to vote and decide which projects should be funded."},{name:rt.a.GUILDKICK,adapterId:st(rt.a.GUILDKICK),contractAddress:b.t[b.k],abiFunctionName:"submitKickProposal",description:"Gives the members the freedom to choose which individuals or organizations should really be part of the DAO."},{name:rt.a.MANAGING,adapterId:st(rt.a.MANAGING),contractAddress:b.v[b.k],abiFunctionName:"submitProposal",description:"Enhances the DAO capabilities by adding/updating the DAO Adapters through a voting process."},{name:rt.a.ONBOARDING,adapterId:st(rt.a.ONBOARDING),contractAddress:b.A[b.k],abiFunctionName:"configureDao",description:"Triggers the process of minting internal tokens in exchange of a specific token at a fixed price."},{name:rt.a.RAGEQUIT,adapterId:st(rt.a.RAGEQUIT),contractAddress:b.B[b.k],abiFunctionName:"ragequit",description:"Gives the members the freedom to choose when it is the best time to exit the DAO for any given reason."},{name:rt.a.TRIBUTE,adapterId:st(rt.a.TRIBUTE),contractAddress:b.F[b.k],abiFunctionName:"configureDao",description:"Allows potential and existing DAO members to contribute any amount of ERC-20 tokens to the DAO in exchange for any amount of DAO internal tokens."},{name:rt.a.TRIBUTE_NFT,adapterId:st(rt.a.TRIBUTE_NFT),contractAddress:b.G[b.k],abiFunctionName:"provideTributeNFT",description:"Allows potential DAO members to contribute a registered ERC-721 asset to the DAO in exchange for any amount of DAO units."},{options:[{name:rt.a.VOTING,displayName:rt.a.OFFCHAINVOTING,adapterId:st(rt.a.VOTING),contractAddress:b.z[b.k],abiFunctionName:"configureDao",description:"Adds the offchain voting governance process to the DAO to support gasless voting.",setAclToExtensionForAdapter:!0},{name:rt.a.VOTING,displayName:rt.a.VOTING,adapterId:st(rt.a.VOTING),contractAddress:b.I[b.k],abiFunctionName:"configureDao",description:"Adds the simple on chain voting governance process to the DAO.",setAclToExtensionForAdapter:!0}],optionDefaultTarget:rt.a.VOTING},{name:rt.a.BANK,adapterId:st(rt.a.BANK),contractAddress:b.a[b.k],abiFunctionName:"withdraw",description:"Allows the members to withdraw their funds from the DAO bank."},{name:rt.a.NFT,adapterId:st(rt.a.NFT),contractAddress:b.y[b.k],abiFunctionName:"collect",description:"Transfers ownership of an NFT to the DAO collection."},{name:rt.a.COUPON_ONBOARDING,adapterId:st(rt.a.COUPON_ONBOARDING),contractAddress:b.f[b.k],abiFunctionName:"configureDao",description:"Provides a way to onboard an initial group of members quickly without requiring multiple proposals."},{name:rt.a.DAO_REGISTRY,adapterId:st(rt.a.DAO_REGISTRY),contractAddress:b.i[b.k],abiFunctionName:"updateDelegateKey",description:"Allows the member to update delegate key."}],dt=n(32),lt=["DaoRegistryContract"];function bt(){var e=Object(c.c)((function(e){return e.contracts})),t=e.DaoRegistryContract,n=Object(x.a)(e,lt),r=Object(He.a)(O.a,{pollInterval:b.r,variables:{daoAddress:null===t||void 0===t?void 0:t.contractAddress.toLowerCase()}}),a=Object(xe.a)(r,2),s=a[0],o=a[1],i=o.called,u=o.data,d=o.error,l=Object(oe.useState)(),j=Object(xe.a)(l,2),f=j[0],p=j[1],h=Object(oe.useState)(),m=Object(xe.a)(h,2),N=m[0],g=m[1],E=Object(oe.useState)(ge.a.STANDBY),A=Object(xe.a)(E,2),w=A[0],I=A[1],y=Object(oe.useCallback)((function(e,t){var n=[],r=[],a=function(t){return e.find((function(e){var n;return(null===(n=e.adapterId)||void 0===n?void 0:n.toLowerCase())===(null===t||void 0===t?void 0:t.toLowerCase())}))},c=function(e){return t.find((function(t){var n;return(null===(n=t.extensionId)||void 0===n?void 0:n.toLowerCase())===(null===e||void 0===e?void 0:e.toLowerCase())}))};return ut.forEach((function(e){if(null===e||void 0===e?void 0:e.isExtension){var t=c(e.extensionId);t?n.push(Object(v.a)(Object(v.a)(Object(v.a)({},t),e),{},{name:e.name,description:e.description})):r.push(Object(v.a)(Object(v.a)({},e),{},{name:e.name,description:e.description}))}else if(null===e||void 0===e?void 0:e.options){var s=null===e||void 0===e?void 0:e.options.some((function(e){return!e.isExtension&&a(e.adapterId)})),o=null===e||void 0===e?void 0:e.options.some((function(e){return e.isExtension&&c(e.extensionId)}));if(s||o){var i,u=!1;null===e||void 0===e||null===(i=e.options)||void 0===i||i.forEach((function(e){if(!u)if(null===e||void 0===e?void 0:e.isExtension){var t=c(e.extensionId);if(t)return n.push(Object(v.a)(Object(v.a)(Object(v.a)({},t),e),{},{name:e.name,description:e.description})),void(u=!0);r.push(Object(v.a)(Object(v.a)({},e),{},{name:e.name,description:e.description}))}else{var s=a(e.adapterId);if(s)return n.push(Object(v.a)(Object(v.a)(Object(v.a)({},s),e),{},{name:e.name,description:e.description})),void(u=!0);r.push(Object(v.a)(Object(v.a)({},e),{},{name:e.name,description:e.description}))}}))}else r.push(e)}else{var d=a(e.adapterId);d?n.push(Object(v.a)(Object(v.a)(Object(v.a)({},d),e),{},{name:e.name,description:e.description})):r.push(Object(v.a)(Object(v.a)({},e),{},{name:e.name,description:e.description}))}})),{registeredList:n,unRegisteredList:r}}),[]);return Object(oe.useEffect)((function(){i||s()}),[i,s]),Object(oe.useEffect)((function(){if(null===t||void 0===t?void 0:t.contractAddress)try{if(I(ge.a.PENDING),u){var e=u.tributeDaos[0],n=e.adapters,r=e.extensions,a=y(n,r),c=a.registeredList,s=a.unRegisteredList;p(c),g(s),I(ge.a.FULFILLED)}else if(d)throw new Error(d.message)}catch(d){p(void 0),g(void 0),I(ge.a.REJECTED)}}),[t,u,d,y]),{adapterExtensionStatus:w,getAdapterOrExtensionFromRedux:function(e){return Object.keys(n).map((function(e){return n[e]})).filter((function(e){return e})).filter((function(t){return t.adapterOrExtensionName===e}))[0]},registeredAdaptersOrExtensions:f,unRegisteredAdaptersOrExtensions:N}}var jt,ft=n(35);function Ot(){var e=Object(Ne.d)().defaultChain;return{isParamInputValid:function(t,n){var r=t.toString();return n===jt.ADDRESS?function(t){try{return!!t&&(ct.a.utils.checkAddressChecksum(t,e)||ct.a.utils.isAddress(t,e))}catch(n){return!1}}(r):n===jt.BYTES32?function(e){try{return!!e&&(66===e.length&&ct.a.utils.isHex(e))}catch(t){return!1}}(r):n===jt.BYTES32_ARRAY?function(e){try{return Array.from(e.split(",")).every((function(e){return 66===e.length&&ct.a.utils.isHex(e)}))}catch(t){return!1}}(r):n===jt.UINT256?function(e){return!isNaN(Number(e))}(r):n!==jt.UINT256_ARRAY||function(e){return Array.from(e.split(",")).every((function(e){return Number(e)}))}(r)},getFormFieldError:function(e){return e===jt.ADDRESS?ft.a.INVALID_ETHEREUM_ADDRESS:e===jt.BYTES32?ft.a.INVALID_BYTES32:e===jt.BYTES32_ARRAY?ft.a.INVALID_BYTES32_ARRAY:e===jt.UINT256?ft.a.INVALID_NUMBER:e===jt.UINT256_ARRAY?ft.a.INVALID_NUMBER_ARRAY:ft.a.REQUIRED},formatInputByType:function(e,t){return t===jt.BYTES32_ARRAY?Array.from(e.split(",")):t===jt.UINT256_ARRAY?Array.from(e.split(",").map((function(e){return Number(e)}))):t===jt.UINT256?Number(e):e}}}!function(e){e.ADDRESS="address",e.BYTES32="bytes32",e.BYTES32_ARRAY="bytes32[]",e.UINT256="uint256",e.UINT256_ARRAY="uint256[]"}(jt||(jt={}));var pt=n(36);function ht(e){var t=e.adapterOrExtension,n=e.defaultTarget,r=e.renderActions,a=e.renderCheckboxAction,c=Object(oe.useState)(n||null),s=Object(xe.a)(c,2),o=s[0],i=s[1],u=Object(oe.useState)({}),d=Object(xe.a)(u,2),l=d[0],b=d[1];return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsxs)("div",{className:"adapter-extension__inner-wrapper ",children:[a({selectedTargetOption:o}),Object(ue.jsxs)("div",{className:"adapter-extension__info",children:[Object(ue.jsxs)("span",{className:"adapter-extension__name",children:[null===t||void 0===t?void 0:t.optionDefaultTarget,(null===t||void 0===t?void 0:t.isExtension)&&"(EXTENSION)"]}),Object(ue.jsxs)("select",{className:"select",onChange:function(e){var n=e.target.value;i(n);var r=null===t||void 0===t?void 0:t.options.find((function(e){return e.displayName===n}));b(r)},children:[Object(ue.jsxs)("option",{value:"",disabled:null!==o,children:["Select a ",null===t||void 0===t?void 0:t.optionDefaultTarget," type\u2026"]},"adapterOrExtensionSelect"),null===t||void 0===t?void 0:t.options.map((function(e){return Object(ue.jsx)("option",{value:e.displayName,children:e.displayName.toUpperCase()},e.displayName)}))]}),function(e){if(!e)return null;try{var n=(null===t||void 0===t?void 0:t.options.find((function(t){return t.displayName===e})).description)||"";return Object(ue.jsx)("span",{className:"adapter-extension__desc",children:n})}catch(r){console.warn(r)}}(o)]})]}),r({selectedTargetOption:o,selectedTargetOptionProps:l})]})}var mt=n(93),vt=n(7),xt=n(54),Nt=n(30),gt=["error"];function Et(e){var t=e.error,n=Object(x.a)(e,gt);return Object(ue.jsx)(ue.Fragment,{children:t&&Object(ue.jsx)(Ge.a,{children:Object(ue.jsx)("p",Object(v.a)(Object(v.a)({},n),{},{className:"error-message ".concat(n.className||""),children:t}))})})}var At=n(41);function wt(e){var t=e.abiConfigurationInputs,n=e.abiMethodName,r=e.adapterOrExtension,a=e.closeHandler,s=Object(c.c)((function(e){return e.contracts})).DaoRegistryContract,o=Object(oe.useState)(),i=Object(xe.a)(o,2),u=i[0],d=i[1],l=Object(oe.useState)(vt.f.STANDBY),b=Object(xe.a)(l,2),j=b[0],O=b[1],p=Object(oe.useState)(vt.f.STANDBY),h=Object(xe.a)(p,2),m=h[0],x=h[1],N=Object(Ne.a)(),g=N.txError,E=N.txIsPromptOpen,A=N.txSend,w=N.txStatus,I=Object(Ne.b)().fast,y=Object(Ne.f)(),C=y.connected,D=y.account,S=Ot(),_=S.isParamInputValid,k=S.getFormFieldError,T=S.formatInputByType,R=bt().getAdapterOrExtensionFromRedux,P=Object(mt.a)({mode:"onBlur",reValidateMode:"onChange"}),F=P.errors,L=P.formState,M=P.getValues,B=P.setValue,G=P.register,U=P.trigger,V=u||g,W=C&&D,Y=(null===r||void 0===r?void 0:r.isExtension)?"extension":"adapter",H=L.isValid,K=(w===vt.f.AWAITING_CONFIRM||w===vt.f.PENDING)&&(j===vt.f.AWAITING_CONFIRM||j===vt.f.PENDING),z=(w===vt.f.AWAITING_CONFIRM||w===vt.f.PENDING)&&(m===vt.f.AWAITING_CONFIRM||m===vt.f.PENDING),q=w===vt.f.FULFILLED&&j===vt.f.FULFILLED,J=w===vt.f.FULFILLED&&m===vt.f.FULFILLED,Q=(K||q)&&E,X=(z||J)&&E;function $(){return($=Object(We.a)(Ve.a.mark((function e(){var t,n,c;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,x(vt.f.AWAITING_CONFIRM),t=[null===r||void 0===r?void 0:r.extensionId],n=[null===r||void 0===r?void 0:r.adapterId,xt.a,0,[],[]],c=Object(v.a)({from:D||""},I?{gasPrice:I}:null),e.next=9,A((null===r||void 0===r?void 0:r.isExtension)?"removeExtension":"replaceAdapter",s.instance.methods,(null===r||void 0===r?void 0:r.isExtension)?t:n,c);case 9:x(vt.f.FULFILLED),a&&setTimeout((function(){a()}),3e3),e.next=17;break;case 13:e.prev=13,e.t0=e.catch(2),d(e.t0),x(vt.f.REJECTED);case 17:case"end":return e.stop()}}),e,null,[[2,13]])})))).apply(this,arguments)}function Z(){return(Z=Object(We.a)(Ve.a.mark((function e(a){var c,s,o,i,u;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,O(vt.f.PENDING),c=R(null===r||void 0===r?void 0:r.name),s=c.contractAddress,o=c.instance.methods,W){e.next=5;break}throw new Error("No user account was found. Please make sure your wallet is connected.");case 5:if(s){e.next=7;break}throw new Error("No ".concat(null===r||void 0===r?void 0:r.name," contract found."));case 7:if(D){e.next=9;break}throw new Error("No account found.");case 9:return i=[],null===t||void 0===t||t.forEach((function(e){var t=Object.entries(a).find((function(t){return t[0]===e.name}));if(t){var n=T(t[1],e.type);i.push(n)}})),u=Object(v.a)({from:D||""},I?{gasPrice:I}:null),O(vt.f.AWAITING_CONFIRM),e.next=15,A(n,o,i,u);case 15:O(vt.f.FULFILLED),e.next=22;break;case 18:e.prev=18,e.t0=e.catch(0),d(e.t0),O(vt.f.REJECTED);case 22:case"end":return e.stop()}}),e,null,[[0,18]])})))).apply(this,arguments)}return Object(ue.jsxs)("form",{className:"form",onSubmit:function(e){return e.preventDefault()},children:[t&&t.map((function(e){return Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",children:e.name}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap",children:[Object(ue.jsx)("input",{"aria-describedby":"error-".concat(e.name),"aria-invalid":F[e.name]?"true":"false",name:e.name,placeholder:e.type,type:"text",onChange:function(){return B(e.name[0],M()[e.name])},ref:G({validate:function(t){return""===t?ft.a.REQUIRED:!!_(t,e.type)||k(e.type)}}),disabled:Q}),Object(ue.jsx)(Et,{error:Object(f.g)(e.name,F),id:"error-".concat(e.name)})]})]},e.name)})),Object(ue.jsx)("button",{className:"button",disabled:Q||X,onClick:function(){Q||(H?function(e){Z.apply(this,arguments)}(M()):U())},type:"submit",children:K?Object(ue.jsx)(At.a,{}):q?"Done":"Submit"}),V&&Object(ue.jsx)("div",{className:"form__submit-error-container",children:Object(ue.jsx)(Nt.a,{renderText:"Something went wrong while submitting the adapter configuration.",error:V})}),Object(ue.jsxs)("div",{className:"adapter-extension__remove",children:[Object(ue.jsxs)("p",{children:["Delete this ",Y,". Once you delete this"," ",Y,", it can be re-added if the DAO isn't finalized."]}),Object(ue.jsx)("button",{className:"button--secondary",disabled:X||Q,onClick:function(){return J?{}:function(){return $.apply(this,arguments)}()},children:z?Object(ue.jsx)(At.a,{}):J?"Done":"Remove"})]})]})}var It=n(151);function yt(e){var t=e.abiMethodName,n=e.adapterOrExtension,r=e.configurationInputs,a=e.isOpen,c=e.closeHandler;return Object(ue.jsx)(It.a,{keyProp:"adapter-extension-configuration",modalClassNames:"adapter-extension-configure-modal",isOpen:a,isOpenHandler:function(){c()},children:Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("span",{className:"modal__close-button",onClick:function(){c()},children:Object(ue.jsx)(Fe.a,{})}),Object(ue.jsx)("h1",{children:null===n||void 0===n?void 0:n.name.toUpperCase()}),Object(ue.jsx)("p",{children:null===n||void 0===n?void 0:n.description}),Object(ue.jsx)(wt,{abiConfigurationInputs:r,abiMethodName:t,adapterOrExtension:n,closeHandler:c})]})})}var Ct,Dt=["size"];function St(e){var t=e.size,n=Object(x.a)(e,Dt);return Object(ue.jsxs)(oe.Fragment,{children:[Object(ue.jsx)("input",Object(v.a)(Object(v.a)({},n),{},{"aria-checked":n.checked,checked:n.checked,className:"checkbox-input ".concat(n.className||""," "),id:n.id,name:n.name,onChange:n.onChange,type:"checkbox"})),Object(ue.jsxs)("label",{className:"checkbox-label",htmlFor:n.id,children:[Object(ue.jsx)("span",{className:"checkbox-box ".concat(t||Ct.SMALL)}),Object(ue.jsx)("span",{className:"checkbox-text",children:n.label})]})]})}!function(e){e.LARGE="large",e.SMALL="small"}(Ct||(Ct={}));var _t=n(57),kt=n(59),Tt=n(69),Rt=n(50);function Pt(e){var t=e.isOpen,n=e.closeHandler,r=Object(oe.useState)(),a=Object(xe.a)(r,2),s=a[0],o=a[1],i=Object(c.c)((function(e){return e.contracts})).DaoRegistryContract,u=Object(Ne.a)(),d=u.txError,l=u.txEtherscanURL,b=u.txIsPromptOpen,j=u.txSend,O=u.txStatus,p=Object(Ne.b)().fast,h=Object(pt.c)().dao,m=Object(Ne.f)(),x=m.connected,N=m.account,g=x&&N,E=O===vt.f.AWAITING_CONFIRM||O===vt.f.PENDING,A=O===vt.f.FULFILLED,w=E||A||b,I=s||d;function y(){return(y=Object(We.a)(Ve.a.mark((function e(){var t;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,g){e.next=3;break}throw new Error("No user account was found. Please make sure your wallet is connected.");case 3:if(i){e.next=5;break}throw new Error("No DAO Registry contract was found.");case 5:return t=Object(v.a)({from:N||""},p?{gasPrice:p}:null),e.next=9,j("finalizeDao",i.instance.methods,[],t);case 9:n&&setTimeout((function(){n()}),3e3),e.next=15;break;case 12:e.prev=12,e.t0=e.catch(0),o(e.t0);case 15:case"end":return e.stop()}}),e,null,[[0,12]])})))).apply(this,arguments)}return Object(ue.jsx)(It.a,{keyProp:"adapter-extension-finalize",isOpen:t,isOpenHandler:function(){n()},children:Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("span",{className:"modal__close-button",onClick:function(){n()},children:Object(ue.jsx)(Fe.a,{})}),Object(ue.jsx)("h1",{children:"Finalize"}),Object(ue.jsxs)("h2",{children:[h&&h.name," ",Object(ue.jsx)("small",{children:h&&Object(f.l)(h.daoAddress,7)})]}),Object(ue.jsx)("p",{children:"After your DAO is finalized you will need to submit a proposal to make changes."}),Object(ue.jsx)("button",{className:"button",disabled:w,onClick:function(){w||function(){y.apply(this,arguments)}()},type:"submit",children:E?Object(ue.jsx)(At.a,{}):A?"Done":"Submit"}),w&&Object(ue.jsx)("div",{className:"form__submit-status-container",children:function(){switch(O){case vt.f.AWAITING_CONFIRM:return Object(ue.jsxs)(ue.Fragment,{children:["Awaiting your confirmation",Object(ue.jsx)(kt.a,{})]});case vt.f.PENDING:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)(Tt.a,{intervalMs:2e3,messages:_t.b,useFirstItemStart:!0,render:function(e){return Object(ue.jsx)(Ge.a,{children:e},e)}}),Object(ue.jsx)(Rt.a,{url:l,isPending:!0})]});case vt.f.FULFILLED:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{children:"Finalized!"}),Object(ue.jsx)(Rt.a,{url:l})]});default:return null}}()}),I&&Object(ue.jsx)("div",{className:"form__submit-error-container",children:Object(ue.jsx)(Nt.a,{renderText:"Something went wrong while trying to finalize the DAO.",error:I})})]})})}var Ft,Lt=["children"],Mt=function(e){var t=e.children,n=Object(x.a)(e,Lt);return Object(ue.jsx)("div",Object(v.a)(Object(v.a)({style:{position:"relative"}},n),{},{children:t}))};function Bt(){var e=Object(c.c)((function(e){return e.contracts})),t=e.DaoRegistryContract,n=e.DaoFactoryContract,r=Object(c.c)((function(e){var t;return null===(t=e.connectedMember)||void 0===t?void 0:t.isActiveMember})),a=Object(oe.useState)(""),s=Object(xe.a)(a,2),o=s[0],i=s[1],u=Object(oe.useState)(),d=Object(xe.a)(u,2),l=d[0],b=d[1],O=Object(oe.useState)(),p=Object(xe.a)(O,2),h=p[0],m=p[1],x=Object(oe.useState)(),N=Object(xe.a)(x,2),g=N[0],E=N[1],A=Object(oe.useState)(),w=Object(xe.a)(A,2),I=w[0],y=w[1],C=Object(oe.useState)(!1),D=Object(xe.a)(C,2),S=D[0],_=D[1],k=Object(oe.useState)(!1),T=Object(xe.a)(k,2),R=T[0],P=T[1],F=Object(oe.useState)(!1),L=Object(xe.a)(F,2),M=L[0],B=L[1],G=Object(oe.useState)(0),U=Object(xe.a)(G,2),V=U[0],W=U[1],Y=Object(oe.useState)(),H=Object(xe.a)(Y,2),K=H[0],z=H[1],q=Object(oe.useState)(),J=Object(xe.a)(q,2),Q=J[0],X=J[1],$=Object(oe.useState)(),Z=Object(xe.a)($,2),ee=Z[0],te=Z[1],ne=Object(oe.useState)(),re=Object(xe.a)(ne,2),ae=re[0],ce=re[1],se=Object(Ne.d)().defaultChainError,ie=Object(Ne.f)(),de=ie.connected,le=ie.account,be=ie.web3Instance,je=Object(pt.c)(),fe=je.dao,Oe=je.gqlError,pe=bt(),he=pe.adapterExtensionStatus,me=pe.getAdapterOrExtensionFromRedux,ve=pe.registeredAdaptersOrExtensions,Ee=pe.unRegisteredAdaptersOrExtensions,Ae=function(){var e=Object(c.b)();function t(){return(t=Object(We.a)(Ve.a.mark((function t(n,r){return Ve.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:t.t0=n,t.next=t.t0===rt.a.CONFIGURATION?3:t.t0===rt.a.FINANCING?6:t.t0===rt.a.GUILDKICK?9:t.t0===rt.a.MANAGING?12:t.t0===rt.a.RAGEQUIT?15:t.t0===rt.a.BANK?18:t.t0===rt.b.NFT?21:t.t0===rt.a.ONBOARDING?24:t.t0===rt.a.TRIBUTE?27:t.t0===rt.a.DISTRIBUTE?30:t.t0===rt.a.VOTING?33:t.t0===rt.a.COUPON_ONBOARDING?36:t.t0===rt.a.TRIBUTE_NFT?39:t.t0===rt.a.NFT?42:t.t0===rt.a.DAO_REGISTRY?45:t.t0===rt.b.ERC20?48:51;break;case 3:return t.next=5,e(Object(j.E)(r));case 5:return t.abrupt("break",51);case 6:return t.next=8,e(Object(j.L)(r));case 8:return t.abrupt("break",51);case 9:return t.next=11,e(Object(j.M)(r));case 11:return t.abrupt("break",51);case 12:return t.next=14,e(Object(j.N)(r));case 14:return t.abrupt("break",51);case 15:return t.next=17,e(Object(j.R)(r));case 17:return t.abrupt("break",51);case 18:return t.next=20,e(Object(j.B)(r));case 20:return t.abrupt("break",51);case 21:return t.next=23,e(Object(j.P)(r));case 23:return t.abrupt("break",51);case 24:return t.next=26,e(Object(j.Q)(r));case 26:return t.abrupt("break",51);case 27:return t.next=29,e(Object(j.S)(r));case 29:return t.abrupt("break",51);case 30:return t.next=32,e(Object(j.J)(r));case 32:return t.abrupt("break",51);case 33:return t.next=35,e(Object(j.U)(r));case 35:return t.abrupt("break",51);case 36:return t.next=38,e(Object(j.F)(r));case 38:return t.abrupt("break",51);case 39:return t.next=41,e(Object(j.T)(r));case 41:return t.abrupt("break",51);case 42:return t.next=44,e(Object(j.O)(r));case 44:return t.abrupt("break",51);case 45:return t.next=47,e(Object(j.I)(r));case 47:return t.abrupt("break",51);case 48:return t.next=50,e(Object(j.K)(r));case 50:return t.abrupt("break",51);case 51:case"end":return t.stop()}}),t)})))).apply(this,arguments)}return{initAdapterExtensionContract:function(e,n){return t.apply(this,arguments)}}}().initAdapterExtensionContract,we=Object(Ne.a)().txSend,Ie=Object(Ne.b)().fast,ye=Object(pt.g)(),Ce=ye.isDisabled,De=ye.openWhyDisabledModal,Se=ye.setOtherDisabledReasons,_e=ye.WhyDisabledModal,ke=de&&le,Te=fe,Re=l===dt.a.READY,Pe=he===ge.a.REJECTED&&void 0===ve&&void 0===Ee,Fe=he===ge.a.PENDING,Le=0===(null===Ee||void 0===Ee?void 0:Ee.length),Me=Object(oe.useCallback)((function(){return Be.apply(this,arguments)}),[t,null===fe||void 0===fe?void 0:fe.name,Se]);function Be(){return(Be=Object(We.a)(Ve.a.mark((function e(){var n,r;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,n="".concat(null===fe||void 0===fe?void 0:fe.name," is already finalized"),e.next=6,Object(dt.g)(t.instance);case 6:r=e.sent,b(r),r===dt.a.READY&&Se([n]),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(2),b(void 0);case 14:case"end":return e.stop()}}),e,null,[[2,11]])})))).apply(this,arguments)}function Ge(e){new Promise((function(t,n){try{t(me(e.name).contractAddress)}catch(a){var r=e.contractAddress;r?t(r):n(a)}})).then((function(t){Ye(t,e.name,"ADAPTER")})).catch((function(t){console.warn('Dao adapter contract not found, try adding the default "'.concat(e.name,'" contract'))}))}function Ue(e){new Promise((function(t,n){try{t(me(e.name).contractAddress)}catch(a){var r=e.contractAddress;r?t(r):n(a)}})).then((function(t){Ye(t,e.name,"EXTENSION")})).catch((function(t){console.warn('Dao extension contract not found, try adding the default "'.concat(e.name,'" contract'),t)}))}function Ye(e,t,n){return He.apply(this,arguments)}function He(){return(He=Object(We.a)(Ve.a.mark((function e(n,r,a){var c,s,o,i,u,d,l;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(y(void 0),t){e.next=3;break}throw new Error("No DAO Registry contract was found.");case 3:if(be){e.next=5;break}throw new Error("No Web3 instance was found.");case 5:if(e.prev=5,te((function(e){return Object(v.a)(Object(v.a)({},e),{},Object(nt.a)({},r,!0))})),n){e.next=9;break}throw new Error("".concat(a," address must not be empty"));case 9:return c=st(r),s=ot(r),o=s.acl,i="ADAPTER"===a?[c,n,o,[],[]]:[c,n,le],u=Object(v.a)({from:le||""},Ie?{gasPrice:Ie}:null),d="ADAPTER"===a?"replaceAdapter":"addExtension",e.next=16,we(d,t.instance.methods,i,u);case 16:te((function(e){return Object(v.a)(Object(v.a)({},e),{},Object(nt.a)({},r,!1))})),m((function(e){return Object(v.a)(Object(v.a)({},e),{},Object(nt.a)({},r,!0))})),Ae(r,be),e.next=26;break;case 21:e.prev=21,e.t0=e.catch(5),te((function(e){return Object(v.a)(Object(v.a)({},e),{},Object(nt.a)({},r,!1))})),l=new Error(e.t0&&4001===(null===e.t0||void 0===e.t0?void 0:e.t0.code)?e.t0.message:"Unable to add ".concat(r," ").concat(a,"; ").concat(e.t0)),y(l);case 26:case"end":return e.stop()}}),e,null,[[5,21]])})))).apply(this,arguments)}function Ke(){return(Ke=Object(We.a)(Ve.a.mark((function e(){var t,r,a,c,s,o,i,u,d;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(y(void 0),n){e.next=3;break}throw new Error("DaoFactoryContract not found");case 3:if(be){e.next=5;break}throw new Error("No Web3 instance was found.");case 5:for(a in e.prev=5,t=[],r=function(e){if(K[e]){var n=ut.filter((function(t){return t.name===e}))[0],r=n.adapterId,a=n.contractAddress;if(!a){var c=me(e);a=null===c||void 0===c?void 0:c.contractAddress}var s=ot(e).acl;r&&a&&(t.push([r,a,s]),te((function(t){return Object(v.a)(Object(v.a)({},t),{},Object(nt.a)({},e,!0))})))}},K)r(a);return c=[null===fe||void 0===fe?void 0:fe.daoAddress,t],s=Object(v.a)({from:le||""},Ie?{gasPrice:Ie}:null),e.next=13,we("addAdapters",n.instance.methods,c,s);case 13:for(o in K)K[o]&&o&&Ae(o,be);e.next=23;break;case 16:for(d in e.prev=16,e.t0=e.catch(5),i=new Error(e.t0&&4001===(null===e.t0||void 0===e.t0?void 0:e.t0.code)?e.t0.message:"Unable to add adapters; ".concat(e.t0)),y(i),qe(!1),u=function(e){te((function(t){return Object(v.a)(Object(v.a)({},t),{},Object(nt.a)({},e,!1))}))},K)u(d);case 23:case"end":return e.stop()}}),e,null,[[5,16]])})))).apply(this,arguments)}function ze(){return(ze=Object(We.a)(Ve.a.mark((function e(t){var n,r,a,c,s,o;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(y(void 0),e.prev=1,n=t.abiFunctionName,r=t.name,n){e.next=5;break}throw new Error("ABI function not found for ".concat(r));case 5:a=me(r),c=a.abi,s=c.filter((function(e){return e.name===n}))[0].inputs,i(n),X(t),E(s),_(!0),e.next=17;break;case 13:e.prev=13,e.t0=e.catch(1),o=new Error(e.t0&&4001===(null===e.t0||void 0===e.t0?void 0:e.t0.code)?e.t0.message:"".concat(t.name," contract not found")),y(o);case 17:case"end":return e.stop()}}),e,null,[[1,13]])})))).apply(this,arguments)}function qe(e){B(e);var t=function(t){z((function(n){return Object(v.a)(Object(v.a)({},n),{},Object(nt.a)({},t,e))}))};for(var n in K)t(n)}return Object(oe.useEffect)((function(){Me()}),[Me,t]),Object(oe.useEffect)((function(){B(!1),Ee&&Ee&&(null===Ee||void 0===Ee||Ee.forEach((function(e){!(null===e||void 0===e?void 0:e.options)&&!e.isExtension&&z((function(t){return Object(v.a)(Object(v.a)({},t),{},Object(nt.a)({},e.name,!1))}))})))}),[Ce,Ee]),Object(oe.useEffect)((function(){K&&W(Object.values(K).filter((function(e){return!0===e})).length)}),[K]),ke&&r&&!se?Object(ue.jsx)(Gt,{children:Object(ue.jsxs)("div",{className:"adaptermanager",children:[!fe&&Oe?(window.scrollTo({top:0,left:200,behavior:"smooth"}),Object(ue.jsx)(Nt.a,{error:Oe,renderText:"Something went wrong"})):fe?Object(ue.jsxs)("h3",{children:[fe.name," ",Object(ue.jsx)("small",{children:Object(f.l)(fe.daoAddress,7)})]}):void 0,I?(window.scrollTo({top:0,left:200,behavior:"smooth"}),Object(ue.jsx)(Nt.a,{error:I,renderText:"Something went wrong"})):Object(ue.jsx)(ue.Fragment,{}),Object(ue.jsx)("p",{children:"Nulla aliquet porttitor venenatis. Donec a dui et dui fringilla consectetur id nec massa. Aliquam erat volutpat. Sed ut dui ut lacus dictum fermentum vel tincidunt neque. Sed sed lacinia..."}),Object(ue.jsxs)("div",{className:"adapter-extension__selection",children:[Object(ue.jsx)("div",{children:Object(ue.jsx)(St,{"data-testid":"selectall",role:"checkbox",id:"selectall",label:"".concat(V," selected"),checked:!0===M,disabled:Ce||Pe||Le||!Te,name:"selectall",size:Ct.LARGE,onChange:function(e){qe(e.target.checked)}})}),Object(ue.jsx)("div",{children:Object(ue.jsx)("button",{className:"button--secondary",disabled:0===V||Ce,onClick:function(){return Ke.apply(this,arguments)},children:"Add selected"})})]}),Fe&&Object(ue.jsx)("div",{className:"adapter-extension__loader",children:Object(ue.jsx)(At.a,{text:"Loading data from subgraph..."})}),Pe&&Object(ue.jsx)("p",{children:"No adapters/extensions available"}),Te&&Ee&&(null===Ee||void 0===Ee?void 0:Ee.length)>0&&Ee.map((function(e,t){return Object(ue.jsx)("div",{className:"adapter-extension__grid unregistered",children:(null===e||void 0===e?void 0:e.options)?Object(ue.jsx)(ht,{adapterOrExtension:e,renderCheckboxAction:function(t){var n=t.selectedTargetOption;return Object(ue.jsx)(ue.Fragment,{children:Object(ue.jsx)("div",{className:"adapter-extension__checkbox",children:Object(ue.jsx)(St,{id:n||"empty",label:"",checked:n&&K&&!0===K[n]||!1,disabled:Ce||null===n||(null===e||void 0===e?void 0:e.isExtension),name:n||"",size:Ct.LARGE,onChange:function(e){n&&function(e){var t=e.event,n=e.selectedTargetOption;z((function(e){return Object(v.a)(Object(v.a)({},e),{},Object(nt.a)({},n,t.target.checked))}))}({event:e,selectedTargetOption:n})}})})})},renderActions:function(e){var t=e.selectedTargetOption,n=e.selectedTargetOptionProps;return Object(ue.jsx)(ue.Fragment,{children:Object(ue.jsx)("div",{className:"adapter-extension__add",children:Object(ue.jsx)("button",{className:"button--secondary",disabled:null===t||ee&&ee[n.name]||Ce,onClick:function(){return(null===n||void 0===n?void 0:n.isExtension)?Ue(n):Ge(n)},children:ee&&ee[n.name]?Object(ue.jsx)(At.a,{}):h&&h[n.name]?"Done":"Add"})})})}}):Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsxs)("div",{className:"adapter-extension__inner-wrapper ",children:[Object(ue.jsx)("div",{className:"adapter-extension__checkbox",children:!(null===e||void 0===e?void 0:e.isExtension)&&Object(ue.jsx)(St,{id:e.name,label:"",checked:K&&!0===K[e.name]||!1,disabled:Ce,name:e.name,size:Ct.LARGE,onChange:function(t){z((function(n){return Object(v.a)(Object(v.a)({},n),{},Object(nt.a)({},e.name,t.target.checked))}))}})}),Object(ue.jsxs)("div",{className:"adapter-extension__info",children:[Object(ue.jsxs)("span",{className:"adapter-extension__name",children:[e.name," ",(null===e||void 0===e?void 0:e.isExtension)&&"(EXTENSION)"]}),Object(ue.jsx)("span",{className:"adapter-extension__desc",children:e.description})]})]}),Object(ue.jsx)("div",{className:"adapter-extension__add",children:Object(ue.jsx)("button",{className:"button--secondary",disabled:ee&&ee[e.name]||h&&h[e.name]||Ce,onClick:function(){return(null===e||void 0===e?void 0:e.isExtension)?Ue(e):Ge(e)},children:ee&&ee[e.name]?Object(ue.jsx)(At.a,{}):h&&h[e.name]?"Done":"Add"})})]})},t)})),Te&&ve&&(null===ve||void 0===ve?void 0:ve.length)>0&&ve.map((function(e,t){return Object(ue.jsxs)("div",{className:"adapter-extension__grid registered",children:[Object(ue.jsxs)("div",{className:"adapter-extension__info",children:[Object(ue.jsxs)("span",{className:"adapter-extension__name",children:[e.name," ",(null===e||void 0===e?void 0:e.isExtension)&&"(EXTENSION)"]}),Object(ue.jsx)("span",{className:"adapter-extension__desc",children:e.description})]}),Object(ue.jsx)("div",{className:"adapter-extension__configure",children:Object(ue.jsx)("button",{className:"button--secondary",disabled:Ce||(null===e||void 0===e?void 0:e.isExtension),onClick:function(){return function(e){return ze.apply(this,arguments)}(e)},children:"Configure"})})]},"".concat(e.id,"-").concat(t))})),Ce&&Object(ue.jsx)("div",{children:Object(ue.jsx)("button",{className:"button--help",onClick:function(){De(),ce(Ft.CONFIGURATION_REASON)},children:Ft.CONFIGURATION_REASON})}),Object(ue.jsxs)("div",{className:"adapter-adapter-extension__finalize",children:[Object(ue.jsx)("p",{children:"If you're happy with your setup, you can finalize your DAO. After your DAO is finalized you will need to submit a proposal to make changes."}),Object(ue.jsx)("div",{children:Object(ue.jsx)("button",{"data-testid":"finalizedao",className:"button--secondary finalize",disabled:Pe||!Te||Re,onClick:function(){return P(!0)},children:"Finalize Dao"})}),Ce&&Object(ue.jsx)("div",{children:Object(ue.jsx)("button",{className:"button--help",onClick:function(){De(),ce(Ft.FINALIZED_REASON)},children:Ft.FINALIZED_REASON})}),Object(ue.jsx)(_e,{title:ae})]}),S&&Object(ue.jsx)(yt,{abiMethodName:o,adapterOrExtension:Q,configurationInputs:g,isOpen:S,closeHandler:function(){_(!1)}}),R&&Object(ue.jsx)(Pt,{isOpen:R,closeHandler:function(){P(!1),Me()}})]})}):Object(ue.jsx)(Gt,{children:Object(ue.jsx)("div",{className:"adapter-extension__unauthorized-message",children:Object(ue.jsx)("p",{children:ke?se?se.message:r?void 0:"Either you are not a member, or your membership is not active.":"Connect your wallet to manage the DAO adapters and extensions."})})})}function Gt(e){return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsx)("div",{className:"titlebar",children:Object(ue.jsx)("h2",{className:"titlebar__title",children:"Adapter/Extension Manager"})}),e.children]})})}!function(e){e.FINALIZED_REASON="Why is finalizing disabled?",e.CONFIGURATION_REASON="Why are configurations disabled?"}(Ft||(Ft={}));var Ut,Vt=n(22),Wt=n(39),Yt=n(46),Ht=n(213);function Kt(e){var t=e.value;return t?Object(ue.jsxs)("details",{children:[Object(ue.jsx)("summary",{style:{cursor:"pointer",outline:"none"},children:Object(ue.jsx)("small",{children:"Preview Markdown"})}),Object(ue.jsx)("div",{style:{marginTop:"1em"},children:Object(ue.jsx)(Ht.a,{children:t})})]}):null}function zt(){var e=Object(c.c)((function(e){var t;return null===(t=e.connectedMember)||void 0===t?void 0:t.isActiveMember})),t=Object(oe.useState)(),n=Object(xe.a)(t,2),r=n[0],a=n[1],s=Object(Ne.f)(),o=s.connected,i=s.account,u=Object(Yt.i)(),d=u.proposalSignAndSendStatus,l=u.signAndSendProposal,b=Object(Ne.d)().defaultChainError,j=Object(mt.a)({mode:"onBlur",reValidateMode:"onChange"}),O=Object(se.f)(),p=j.errors,h=j.getValues,m=j.register,v=j.trigger,x=j.watch,N=o&&i,g=d===vt.f.AWAITING_CONFIRM||d===vt.f.PENDING,E=d===vt.f.FULFILLED,A=g||E;function w(e){return I.apply(this,arguments)}function I(){return(I=Object(We.a)(Ve.a.mark((function e(t){var n,r;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,l({partialProposalData:{name:t.title,body:t.description,metadata:{type:Wt.d.Governance}},type:Vt.SnapshotType.proposal});case 3:n=e.sent,r=n.uniqueId,O.push("/governance/".concat(r)),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(0),a(e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,8]])})))).apply(this,arguments)}return N&&e&&!b?Object(ue.jsx)(qt,{children:Object(ue.jsxs)("form",{className:"form",onSubmit:function(e){return e.preventDefault()},children:[Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",htmlFor:Ut.title,children:"Title"}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap",children:[Object(ue.jsx)("input",{"aria-describedby":"error-".concat(Ut.title),"aria-invalid":p.title?"true":"false",id:Ut.title,name:Ut.title,ref:m({required:ft.a.REQUIRED}),type:"text",disabled:A}),Object(ue.jsx)(Et,{error:Object(f.g)(Ut.title,p),id:"error-".concat(Ut.title)})]})]}),Object(ue.jsxs)("div",{className:"form__textarea-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",htmlFor:Ut.description,children:"Description"}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap",children:[Object(ue.jsx)("textarea",{"aria-describedby":"error-".concat(Ut.description),"aria-invalid":p.description?"true":"false",id:Ut.description,name:Ut.description,placeholder:"Say something about your governance proposal...",ref:m({required:ft.a.REQUIRED}),disabled:A}),Object(ue.jsx)(Et,{error:Object(f.g)(Ut.description,p),id:"error-".concat(Ut.description)}),Object(ue.jsx)(Kt,{value:x(Ut.description)})]})]}),Object(ue.jsx)("button",{"aria-label":g?"Submitting your proposal...":"",className:"button",disabled:A,onClick:Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!A){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,v();case 4:if(e.sent){e.next=6;break}return e.abrupt("return");case 6:w(h());case 7:case"end":return e.stop()}}),e)}))),type:"submit",children:g?Object(ue.jsx)(At.a,{}):E?"Done":"Submit"}),A&&Object(ue.jsx)("div",{className:"form__submit-status-container",children:function(){switch(d){case vt.f.AWAITING_CONFIRM:return Object(ue.jsxs)(ue.Fragment,{children:["Awaiting your confirmation",Object(ue.jsx)(kt.a,{intervalMs:500})]});case vt.f.PENDING:return Object(ue.jsxs)(ue.Fragment,{children:["Submitting",Object(ue.jsx)(kt.a,{intervalMs:500})]});case vt.f.FULFILLED:return"Done!";default:return""}}()}),r&&Object(ue.jsx)("div",{className:"form__submit-error-container",children:Object(ue.jsx)(Nt.a,{renderText:"Something went wrong while submitting the proposal.",error:r})})]})}):Object(ue.jsx)(qt,{children:Object(ue.jsx)("div",{className:"form__description--unauthorized",children:Object(ue.jsx)("p",{children:N?b?b.message:e?void 0:"Either you are not a member, or your membership is not active.":"Connect your wallet to submit a governance proposal."})})})}function qt(e){return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsx)("div",{className:"titlebar",children:Object(ue.jsx)("h2",{className:"titlebar__title",children:"Governance Proposal"})}),Object(ue.jsxs)("div",{className:"form-wrapper",children:[Object(ue.jsx)("div",{className:"form__description",children:Object(ue.jsx)("p",{children:"Nulla aliquet porttitor venenatis. Donec a dui et dui fringilla consectetur id nec massa. Aliquam erat volutpat. Sed ut dui ut lacus dictum fermentum vel tincidunt neque. Sed sed lacinia..."})}),e.children]})]})})}!function(e){e.title="title",e.description="description"}(Ut||(Ut={}));var Jt,Qt=n(25),Xt=n(85);function $t(){var e=Object(Ne.d)().defaultChainError,t=Object(Ne.f)(),n=t.connected,r=t.account,a=t.web3Instance,c=Object(Yt.i)(),s=c.proposalData,o=c.proposalSignAndSendError,i=c.proposalSignAndSendStatus,u=c.signAndSendProposal,d=Object(mt.a)({mode:"onBlur",reValidateMode:"onChange"}),l=Object(se.f)(),j=Object(oe.useState)(),O=Object(xe.a)(j,2),p=O[0],h=O[1],m=Object(oe.useState)(),v=Object(xe.a)(m,2),x=v[0],N=v[1],g=d.errors,E=d.getValues,A=d.setValue,w=d.register,I=d.trigger,y=(0,d.watch)(Jt.ethAddress),C=p||o,D=n&&r,S=i===vt.f.AWAITING_CONFIRM||i===vt.f.PENDING,_=i===vt.f.FULFILLED,k=S||_,T=Object(Yt.a)(y),R=T.checkApplicantError,P=T.checkApplicantInvalidMsg,F=T.checkApplicantStatus,L=T.isApplicantValid,M=Object(oe.useCallback)((function(){return B.apply(this,arguments)}),[r,a]);function B(){return(B=Object(We.a)(Ve.a.mark((function e(){var t;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a&&r){e.next=3;break}return N(void 0),e.abrupt("return");case 3:return e.prev=3,e.next=6,a.eth.getBalance(r);case 6:t=e.sent,N(a.utils.fromWei(t,"ether")),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(3),N(void 0);case 13:case"end":return e.stop()}}),e,null,[[3,10]])})))).apply(this,arguments)}function G(e){return U.apply(this,arguments)}function U(){return(U=Object(We.a)(Ve.a.mark((function e(t){var n,a,c,o,i,d,j,O,p,m,v;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,D){e.next=3;break}throw new Error("No user account was found. Please make sure your wallet is connected.");case 3:if(r){e.next=5;break}throw new Error("No account found.");case 5:if(R&&console.warn("Error checking if the applicant address is valid: ".concat(R.message)),F!==ge.a.FULFILLED||L||!P){e.next=8;break}throw new Error(P);case 8:if(n=(null===s||void 0===s?void 0:s.uniqueId)||"",a=t.ethAddress,c=t.ethAmount,o=Object(Qt.toChecksumAddress)(a),i=Object(Qt.toWei)(Object(f.k)(c),"ether"),d=Object(Qt.toChecksumAddress)(r),j={tributeAmount:c,tributeAmountUnit:"ETH"},O=[o,b.H,i],n){e.next=22;break}return p=Object(f.i)(a)===Object(f.i)(r)?"Membership for ".concat(Object(f.l)(o,7),"."):"Membership proposal from ".concat(Object(f.l)(d,7)," for applicant ").concat(Object(f.l)(o,7),"."),e.next=19,u({partialProposalData:{name:o,body:p,metadata:{proposalAmountValues:j,submitActionArgs:O,accountAuthorizedToProcessPassedProposal:d}},adapterName:vt.a.onboarding,type:Vt.SnapshotType.draft});case 19:m=e.sent,v=m.uniqueId,n=v;case 22:l.push("/membership/".concat(n)),e.next=28;break;case 25:e.prev=25,e.t0=e.catch(0),h(e.t0);case 28:case"end":return e.stop()}}),e,null,[[0,25]])})))).apply(this,arguments)}return Object(oe.useEffect)((function(){M()}),[M]),Object(oe.useEffect)((function(){A(Jt.ethAddress,r)}),[r,A]),!D||e?Object(ue.jsx)(Zt,{children:Object(ue.jsx)("div",{className:"form__description--unauthorized",children:Object(ue.jsx)("p",{children:D?e?e.message:void 0:"Connect your wallet to submit a membership proposal."})})}):Object(ue.jsx)(Zt,{children:Object(ue.jsxs)("form",{className:"form",onSubmit:function(e){return e.preventDefault()},children:[Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",htmlFor:Jt.ethAddress,children:"Applicant Address"}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap",children:[Object(ue.jsx)("input",{"aria-describedby":"error-".concat(Jt.ethAddress),"aria-invalid":g.ethAddress?"true":"false",id:Jt.ethAddress,name:Jt.ethAddress,ref:w({validate:function(e){return e?!!Object(Xt.a)(e)||ft.a.INVALID_ETHEREUM_ADDRESS:ft.a.REQUIRED}}),type:"text",disabled:k}),Object(ue.jsx)(Et,{error:Object(f.g)(Jt.ethAddress,g),id:"error-".concat(Jt.ethAddress)})]})]}),Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",htmlFor:Jt.ethAmount,children:"Amount"}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap--narrow",children:[Object(ue.jsxs)("div",{className:"input__suffix-wrap",children:[Object(ue.jsx)("input",{className:"input__suffix","aria-describedby":"error-".concat(Jt.ethAmount),"aria-invalid":g.ethAmount?"true":"false",id:Jt.ethAmount,name:Jt.ethAmount,onChange:function(){return A(Jt.ethAmount,Object(f.e)(E().ethAmount))},ref:w({validate:function(e){var t=Number(Object(f.k)(e));return""===e?ft.a.REQUIRED:isNaN(t)?ft.a.INVALID_NUMBER:t<=0?"The value must be greater than 0 ETH.":!(t>=Number(x))||"Insufficient funds."}}),type:"text",disabled:k}),Object(ue.jsx)("div",{className:"input__suffix-item",children:"ETH"})]}),Object(ue.jsx)(Et,{error:Object(f.g)(Jt.ethAmount,g),id:"error-".concat(Jt.ethAmount)})]}),Object(ue.jsxs)("div",{className:"form__input-addon",children:["available: ",Object(ue.jsx)("span",{children:x?Number.isInteger(Number(x))?x:Object(f.d)(Number(x)):"---"})]})]}),Object(ue.jsx)("button",{"aria-label":S?"Submitting your proposal.":"",className:"button",disabled:k,onClick:Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!k){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,I();case 4:if(e.sent){e.next=6;break}return e.abrupt("return");case 6:G(E());case 7:case"end":return e.stop()}}),e)}))),type:"submit",children:S?Object(ue.jsx)(At.a,{}):_?"Done":"Submit"}),k&&Object(ue.jsx)("div",{className:"form__submit-status-container",children:function(){switch(i){case vt.f.AWAITING_CONFIRM:return Object(ue.jsxs)(ue.Fragment,{children:["Awaiting your confirmation",Object(ue.jsx)(kt.a,{intervalMs:500})]});case vt.f.PENDING:return Object(ue.jsxs)(ue.Fragment,{children:["Submitting",Object(ue.jsx)(kt.a,{intervalMs:500})]});case vt.f.FULFILLED:return"Done!";default:return""}}()}),C&&Object(ue.jsx)("div",{className:"form__submit-error-container",children:Object(ue.jsx)(Nt.a,{renderText:"Something went wrong while submitting the proposal.",error:C})})]})})}function Zt(e){return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsx)("div",{className:"titlebar",children:Object(ue.jsx)("h2",{className:"titlebar__title",children:"Join"})}),Object(ue.jsxs)("div",{className:"form-wrapper",children:[Object(ue.jsx)("div",{className:"form__description",children:Object(ue.jsx)("p",{children:"Nulla aliquet porttitor venenatis. Donec a dui et dui fringilla consectetur id nec massa. Aliquam erat volutpat. Sed ut dui ut lacus dictum fermentum vel tincidunt neque. Sed sed lacinia..."})}),e.children]})]})})}!function(e){e.ethAddress="ethAddress",e.ethAmount="ethAmount"}(Jt||(Jt={}));var en,tn,nn=n(459);function rn(){var e=Object(c.c)((function(e){var t;return null===(t=e.contracts)||void 0===t?void 0:t.DistributeContract})),t=Object(c.c)((function(e){var t;return null===(t=e.contracts)||void 0===t?void 0:t.DaoRegistryContract})),n=Object(c.c)((function(e){var t;return null===(t=e.contracts)||void 0===t?void 0:t.BankExtensionContract})),a=Object(c.c)((function(e){var t;return null===(t=e.connectedMember)||void 0===t?void 0:t.isActiveMember})),s=Object(Ne.d)().defaultChainError,o=Object(Ne.f)(),i=o.connected,u=o.account,d=o.web3Instance,l=Object(Ne.b)().fast,j=Object(Ne.a)(),O=j.txError,p=j.txEtherscanURL,h=j.txIsPromptOpen,m=j.txSend,x=j.txStatus,N=Object(Yt.i)(),g=N.proposalData,E=N.proposalSignAndSendStatus,A=N.signAndSendProposal,w=Object(mt.a)({mode:"onBlur",reValidateMode:"onChange"}),I=Object(se.f)(),y=Object(oe.useState)(),C=Object(xe.a)(y,2),D=C[0],S=C[1],_=Object(oe.useState)(),k=Object(xe.a)(_,2),T=k[0],R=k[1],P=Object(oe.useState)(),F=Object(xe.a)(P,2),L=F[0],M=F[1],B=w.errors,G=w.getValues,U=w.setValue,V=w.register,W=w.trigger,Y=w.watch,H="all members"===Y("type"),K=Y("selectedToken"),z=D||O,q=i&&u,J=nn,Q=x===vt.f.AWAITING_CONFIRM||x===vt.f.PENDING||E===vt.f.AWAITING_CONFIRM||E===vt.f.PENDING,X=x===vt.f.FULFILLED&&E===vt.f.FULFILLED,$=Q||X||h,Z=Object(oe.useCallback)((function(){return te.apply(this,arguments)}),[n,u,J,d]),ee=Object(oe.useCallback)((function(){return ne.apply(this,arguments)}),[u,K]);function te(){return(te=Object(We.a)(Ve.a.mark((function e(){var t,a,c,s,o,i,l,j,f,O,p,h,m,x,N,g,E,A,w,I,y,C,D,S,_,k,T;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(u&&n&&d){e.next=3;break}return R(void 0),e.abrupt("return");case 3:return e.prev=3,t=n.abi,a=n.contractAddress,c=n.instance.methods,e.next=7,c.nbTokens().call();case 7:if(s=e.sent,!(Number(s)<1)){e.next=12;break}R([]),e.next=44;break;case 12:return o=[],i=t.find((function(e){return"getToken"===e.name})),l=Object(r.a)(Array(Number(s)).keys()).map((function(e){return[a,i,[e.toString()]]})),e.next=17,Object(dt.j)({calls:l,web3Instance:d});case 17:return j=e.sent,f=t.find((function(e){return"balanceOf"===e.name})),O=j.map((function(e){return[a,f,[b.u,e]]})),e.next=22,Object(dt.j)({calls:O,web3Instance:d});case 22:if(p=e.sent,h=j.map((function(e,t){return{address:e,daoBalance:p[t]}})).filter((function(e){return Object(Qt.toBN)(e.daoBalance).gt(Object(Qt.toBN)(0))})),(m=h.find((function(e){return e.address===b.p})))&&o.push(Object(v.a)(Object(v.a)({},m),{},{name:"Ether",symbol:"ETH",decimals:18})),!((x=h.filter((function(e){return e.address!==b.p}))).length>0)){e.next=43;break}return N=J.find((function(e){return"name"===e.name})),g=x.map((function(e){return[e.address,N,[]]})),E=J.find((function(e){return"symbol"===e.name})),A=x.map((function(e){return[e.address,E,[]]})),w=J.find((function(e){return"decimals"===e.name})),I=x.map((function(e){return[e.address,w,[]]})),y=[].concat(Object(r.a)(g),Object(r.a)(A),Object(r.a)(I)),e.next=37,Object(dt.j)({calls:y,web3Instance:d});case 37:for(C=e.sent,D=[];C.length;)D.push(C.splice(0,x.length));S=D[0],_=D[1],k=D[2],T=x.map((function(e,t){return Object(v.a)(Object(v.a)({},e),{},{name:S[t],symbol:_[t],decimals:k[t]})})).sort((function(e,t){return e.name.localeCompare(t.name)})),o=[].concat(Object(r.a)(o),Object(r.a)(T));case 43:R(o);case 44:e.next=50;break;case 46:e.prev=46,e.t0=e.catch(3),console.error(e.t0),R(void 0);case 50:case"end":return e.stop()}}),e,null,[[3,46]])})))).apply(this,arguments)}function ne(){return(ne=Object(We.a)(Ve.a.mark((function e(){var t,n,r,a,c,s,o,i;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(u&&K){e.next=3;break}return M(void 0),e.abrupt("return");case 3:try{t=JSON.parse(K),n=t.daoBalance,r=Object(Qt.toBN)(n),a=t.decimals,c=Object(Qt.toBN)(10).pow(Object(Qt.toBN)(a)),s=r.div(c),o=r.mod(c),i=o.eq(Object(Qt.toBN)(0))?s.toString():"".concat(s.toString(),".").concat(o.toString()),M(i)}catch(d){console.error(d),M(void 0)}case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function re(e){return ae.apply(this,arguments)}function ae(){return(ae=Object(We.a)(Ve.a.mark((function n(r){var a,c,s,o,i,j,O,p,h,x,N,E,w,y,C,D,_,k,T,R,P,F,L,M,B,G,U,V;return Ve.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(n.prev=0,q){n.next=3;break}throw new Error("No user account was found. Please make sure your wallet is connected.");case 3:if(e){n.next=5;break}throw new Error("No DistributeContract found.");case 5:if(t){n.next=7;break}throw new Error("No DaoRegistryContract found.");case 7:if(u){n.next=9;break}throw new Error("No account found.");case 9:if(d){n.next=11;break}throw new Error("No Web3 instance was found.");case 11:if(a=r.selectedToken,c=r.memberAddress,s=r.amount,o=r.notes,i=Object(Qt.toChecksumAddress)(c),j=JSON.parse(a),O=j.symbol,p=j.decimals,(h=j.address)===b.p?x=Object(Qt.toWei)(Object(f.k)(s),"ether"):(N=Object(Qt.toBN)(10).pow(Object(Qt.toBN)(p)),E=Object(Qt.toBN)(Object(f.k)(s)).mul(N),x=E.toString()),w=(null===g||void 0===g?void 0:g.uniqueId)||"",y=null===g||void 0===g?void 0:g.data,C=(null===g||void 0===g?void 0:g.signature)||"",D=H?"Transfer to all members pro rata.":"Transfer to ".concat(Object(f.l)(i,7),"."),_={transferAmount:s,transferAmountUnit:O},w){n.next=34;break}return k=o?"".concat(D,"\n").concat(o):D,T=H?"All members":i,R=Math.floor(Date.now()/1e3),n.next=27,A({partialProposalData:{name:T,body:k,metadata:{proposalAmountValues:_,isTypeAllMembers:H},timestamp:R.toString()},adapterName:vt.a.distribute,type:Vt.SnapshotType.proposal});case 27:P=n.sent,F=P.uniqueId,L=P.data,M=P.signature,w=F,y=L,C=M;case 34:return B=H?xt.a:i,G=y?Object(Vt.prepareVoteProposalData)({payload:{name:y.payload.name,body:y.payload.body,choices:y.payload.choices,snapshot:y.payload.snapshot.toString(),start:y.payload.start,end:y.payload.end},sig:C,space:y.space,timestamp:parseInt(y.timestamp)},d):"",U=[t.contractAddress,w,B,h,x,G],V=Object(v.a)({from:u||""},l?{gasPrice:l}:null),n.next=40,m("submitProposal",e.instance.methods,U,V);case 40:I.push("/transfers/".concat(w)),n.next=46;break;case 43:n.prev=43,n.t0=n.catch(0),S(n.t0);case 46:case"end":return n.stop()}}),n,null,[[0,43]])})))).apply(this,arguments)}function ce(e){return ie.apply(this,arguments)}function ie(){return(ie=Object(We.a)(Ve.a.mark((function e(t){var r;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n){e.next=3;break}return console.error("No BankExtensionContract found."),e.abrupt("return",!1);case 3:return e.next=5,n.instance.methods.balanceOf(t,b.H).call();case 5:return r=e.sent,e.abrupt("return",Object(Qt.toBN)(r).gt(Object(Qt.toBN)(0)));case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}return Object(oe.useEffect)((function(){Z()}),[Z]),Object(oe.useEffect)((function(){ee()}),[ee]),q&&!s&&a?Object(ue.jsx)(an,{children:Object(ue.jsxs)("form",{className:"form",onSubmit:function(e){return e.preventDefault()},children:[Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",children:"Type"}),Object(ue.jsx)("div",{className:"form__input-row-fieldwrap",children:Object(ue.jsxs)("select",{name:en.type,ref:V,disabled:$,children:[Object(ue.jsx)("option",{value:"single member",children:"Single member"}),Object(ue.jsx)("option",{value:"all members",children:"All members"})]})})]}),!H&&Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",children:"Member Address"}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap",children:[Object(ue.jsx)("input",{"aria-describedby":"error-".concat(en.memberAddress),"aria-invalid":B.memberAddress?"true":"false",name:en.memberAddress,ref:V({validate:function(){var e=Object(We.a)(Ve.a.mark((function e(t){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=4;break}e.t0=ft.a.REQUIRED,e.next=17;break;case 4:if(Object(Xt.a)(t)){e.next=8;break}e.t1=ft.a.INVALID_ETHEREUM_ADDRESS,e.next=16;break;case 8:return e.next=10,ce(t);case 10:if(e.sent){e.next=14;break}e.t2="The address is not an active member with membership tokens.",e.next=15;break;case 14:e.t2=!0;case 15:e.t1=e.t2;case 16:e.t0=e.t1;case 17:return e.abrupt("return",e.t0);case 18:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}),type:"text",disabled:$}),Object(ue.jsx)(Et,{error:Object(f.g)(en.memberAddress,B),id:"error-".concat(en.memberAddress)})]})]}),Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",children:"Asset"}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap",children:[Object(ue.jsxs)("select",{"aria-describedby":"error-".concat(en.selectedToken),"aria-invalid":B.selectedToken?"true":"false",name:en.selectedToken,ref:V({validate:function(e){return!T||T.length<1?"No tokens available for distribution.":!!e||ft.a.REQUIRED}}),disabled:$,children:[Object(ue.jsx)("option",{value:"",children:"Select from DAO assets"}),null===T||void 0===T?void 0:T.map((function(e){return Object(ue.jsx)("option",{value:JSON.stringify(e),children:"".concat(e.name," (").concat(e.symbol,")")},e.address)}))]}),Object(ue.jsx)(Et,{error:Object(f.g)(en.selectedToken,B),id:"error-".concat(en.selectedToken)})]})]}),Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",children:"Amount"}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap--narrow",children:[Object(ue.jsxs)("div",{className:"input__suffix-wrap",children:[Object(ue.jsx)("input",{className:"input__suffix","aria-describedby":"error-".concat(en.amount),"aria-invalid":B.amount?"true":"false",name:en.amount,onChange:function(){return U(en.amount,Object(f.e)(G().amount))},ref:V({validate:function(e){var t=Number(Object(f.k)(e)),n=K&&JSON.parse(K),r=(null===n||void 0===n?void 0:n.address)===b.p;return""===e?ft.a.REQUIRED:isNaN(t)?ft.a.INVALID_NUMBER:t<=0?"The value must be greater than 0.":t>Number(L)?"Insufficient funds.":!!r||(!!Number.isInteger(t)||"The value must be an integer for an ERC20 token.")}}),type:"text",disabled:$}),Object(ue.jsx)("div",{className:"input__suffix-item",children:K&&JSON.parse(K).symbol||"___"})]}),Object(ue.jsx)(Et,{error:Object(f.g)(en.amount,B),id:"error-".concat(en.amount)}),Object(ue.jsx)("div",{className:"form__input-description",children:H?"If the proposal passes, this total amount will be distributed pro rata to all members' internal accounts, based on the current number of membership tokens held by each member.":"If the proposal passes, this amount will be distributed to the member's internal account."})]}),Object(ue.jsxs)("div",{className:"form__input-addon",children:["available: ",Object(ue.jsx)("span",{children:L?Number.isInteger(Number(L))?L:Object(f.d)(Number(L)):"---"})]})]}),Object(ue.jsxs)("div",{className:"form__textarea-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",children:"Notes"}),Object(ue.jsx)("div",{className:"form__input-row-fieldwrap",children:Object(ue.jsx)("textarea",{name:en.notes,placeholder:"Transactions purpose...",ref:V,disabled:$})})]}),Object(ue.jsx)("button",{className:"button",disabled:$,onClick:Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!$){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,W();case 4:if(e.sent){e.next=6;break}return e.abrupt("return");case 6:re(G());case 7:case"end":return e.stop()}}),e)}))),type:"submit",children:Q?Object(ue.jsx)(At.a,{}):X?"Done":"Submit"}),$&&Object(ue.jsx)("div",{className:"form__submit-status-container",children:function(){if(x===vt.f.AWAITING_CONFIRM||E===vt.f.AWAITING_CONFIRM)return"Awaiting your confirmation\u2026";switch(x){case vt.f.PENDING:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)(Tt.a,{intervalMs:2e3,messages:_t.b,useFirstItemStart:!0,render:function(e){return Object(ue.jsx)(Ge.a,{children:e},e)}}),Object(ue.jsx)(Rt.a,{url:p,isPending:!0})]});case vt.f.FULFILLED:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{children:"Proposal submitted!"}),Object(ue.jsx)(Rt.a,{url:p})]});default:return null}}()}),z&&Object(ue.jsx)("div",{className:"form__submit-error-container",children:Object(ue.jsx)(Nt.a,{renderText:"Something went wrong while submitting the proposal.",error:z})})]})}):Object(ue.jsx)(an,{children:Object(ue.jsx)("div",{className:"form__description--unauthorized",children:Object(ue.jsx)("p",{children:q?s?s.message:a?void 0:"Either you are not a member, or your membership is not active.":"Connect your wallet to submit a transfer proposal."})})})}function an(e){return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsx)("div",{className:"titlebar",children:Object(ue.jsx)("h2",{className:"titlebar__title",children:"Transfer Proposal"})}),Object(ue.jsxs)("div",{className:"form-wrapper",children:[Object(ue.jsx)("div",{className:"form__description",children:Object(ue.jsx)("p",{children:"Nulla aliquet porttitor venenatis. Donec a dui et dui fringilla consectetur id nec massa. Aliquam erat volutpat. Sed ut dui ut lacus dictum fermentum vel tincidunt neque. Sed sed lacinia..."})}),e.children]})]})})}function cn(){var e=Object(c.c)((function(e){var t;return null===(t=e.contracts)||void 0===t?void 0:t.ERC20ExtensionContract})),t=Object(Ne.d)().defaultChainError,r=Object(Ne.f)(),a=r.connected,s=r.account,o=r.web3Instance,i=Object(Yt.i)(),u=i.proposalData,d=i.proposalSignAndSendError,l=i.proposalSignAndSendStatus,j=i.signAndSendProposal,O=Object(mt.a)({mode:"onBlur",reValidateMode:"onChange"}),p=Object(se.f)(),h=Object(oe.useState)(),m=Object(xe.a)(h,2),v=m[0],x=m[1],N=Object(oe.useState)(),g=Object(xe.a)(N,2),E=g[0],A=g[1],w=Object(oe.useState)(),I=Object(xe.a)(w,2),y=I[0],C=I[1],D=Object(oe.useState)(),S=Object(xe.a)(D,2),_=S[0],k=S[1],T=O.errors,R=O.getValues,P=O.setValue,F=O.register,L=O.trigger,M=O.watch,B=M(tn.erc20Address),G=M(tn.applicantAddress),U=v||d,V=a&&s,W=l===vt.f.AWAITING_CONFIRM||l===vt.f.PENDING,Y=l===vt.f.FULFILLED,H=W||Y,K=Object(Yt.a)(G),z=K.checkApplicantError,q=K.checkApplicantInvalidMsg,J=K.checkApplicantStatus,Q=K.isApplicantValid,X=Object(oe.useCallback)((function(){return ee.apply(this,arguments)}),[B,o]),$=Object(oe.useCallback)((function(){return te.apply(this,arguments)}),[s,_]),Z=Object(oe.useCallback)((function(){return ne.apply(this,arguments)}),[s,_]);function ee(){return(ee=Object(We.a)(Ve.a.mark((function e(){var t,r,a,c;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o&&B){e.next=3;break}return k(void 0),e.abrupt("return");case 3:return e.prev=3,e.next=6,Promise.resolve().then(n.t.bind(null,459,3));case 6:t=e.sent,r=t.default,a=r,c=new o.eth.Contract(a,B),k(c),e.next=17;break;case 13:e.prev=13,e.t0=e.catch(3),console.error(e.t0),k(void 0);case 17:case"end":return e.stop()}}),e,null,[[3,13]])})))).apply(this,arguments)}function te(){return(te=Object(We.a)(Ve.a.mark((function e(){var t,n;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s&&_){e.next=3;break}return C(void 0),e.abrupt("return");case 3:return e.prev=3,e.next=6,_.methods.symbol().call();case 6:return t=e.sent,e.next=9,_.methods.decimals().call();case 9:n=e.sent,C({symbol:t,decimals:Number(n)}),e.next=17;break;case 13:e.prev=13,e.t0=e.catch(3),console.error(e.t0),C(void 0);case 17:case"end":return e.stop()}}),e,null,[[3,13]])})))).apply(this,arguments)}function ne(){return(ne=Object(We.a)(Ve.a.mark((function e(){var t,n,r,a,c,o,i;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s&&_){e.next=3;break}return A(void 0),e.abrupt("return");case 3:return e.prev=3,e.next=6,_.methods.balanceOf(s).call();case 6:return t=e.sent,n=Object(Qt.toBN)(t),e.next=10,_.methods.decimals().call();case 10:r=e.sent,a=Object(Qt.toBN)(10).pow(Object(Qt.toBN)(r)),c=n.div(a),o=n.mod(a),i=o.eq(Object(Qt.toBN)(0))?c.toString():"".concat(c.toString(),".").concat(o.toString()),A(i),e.next=22;break;case 18:e.prev=18,e.t0=e.catch(3),console.error(e.t0),A(void 0);case 22:case"end":return e.stop()}}),e,null,[[3,18]])})))).apply(this,arguments)}function re(){return ae.apply(this,arguments)}function ae(){return(ae=Object(We.a)(Ve.a.mark((function t(){return Ve.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=4;break}return t.abrupt("return","UNITS");case 4:return t.prev=4,t.next=7,e.instance.methods.symbol().call();case 7:return t.abrupt("return",t.sent);case 10:return t.prev=10,t.t0=t.catch(4),console.log(t.t0),t.abrupt("return","UNITS");case 14:case"end":return t.stop()}}),t,null,[[4,10]])})))).apply(this,arguments)}function ce(e){return ie.apply(this,arguments)}function ie(){return(ie=Object(We.a)(Ve.a.mark((function e(t){var n,r,a,c,o,i,d,l,O,h,m,v,N,g,E,A,w;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,V){e.next=3;break}throw new Error("No user account was found. Please make sure your wallet is connected.");case 3:if(s){e.next=5;break}throw new Error("No account found.");case 5:if(_){e.next=7;break}throw new Error("No ERC20Contract found.");case 7:if(y){e.next=9;break}throw new Error("No ERC20 details found.");case 9:if(z&&console.warn("Error checking if the applicant address is valid: ".concat(z.message)),J!==ge.a.FULFILLED||Q||!q){e.next=12;break}throw new Error(q);case 12:if(n=t.applicantAddress,r=t.erc20Address,a=t.tributeAmount,c=t.requestAmount,o=t.description,i=Object(Qt.toBN)(10).pow(Object(Qt.toBN)(y.decimals)),d=Object(Qt.toBN)(Object(f.k)(a)).mul(i),l=Object(f.k)(c),O=Object(Qt.toChecksumAddress)(n),h=Object(Qt.toChecksumAddress)(s),m=(null===u||void 0===u?void 0:u.uniqueId)||""){e.next=35;break}return v=Object(f.i)(n)===Object(f.i)(s)?"Tribute from ".concat(Object(f.l)(O,7),"."):"Tribute from ".concat(Object(f.l)(h,7)," for applicant ").concat(Object(f.l)(O,7),"."),N=o?"".concat(v,"\n").concat(o):v,e.t0=c,e.next=25,re();case 25:return e.t1=e.sent,e.t2=a,e.t3=y.symbol,g={requestAmount:e.t0,requestAmountUnit:e.t1,tributeAmount:e.t2,tributeAmountUnit:e.t3},E=[O,b.H,l,Object(Qt.toChecksumAddress)(r),d.toString(),h],e.next=32,j({partialProposalData:{name:O,body:N,metadata:{proposalAmountValues:g,submitActionArgs:E,accountAuthorizedToProcessPassedProposal:h}},adapterName:vt.a.tribute,type:Vt.SnapshotType.draft});case 32:A=e.sent,w=A.uniqueId,m=w;case 35:p.push("/tributes/".concat(m)),e.next=41;break;case 38:e.prev=38,e.t4=e.catch(0),x(e.t4);case 41:case"end":return e.stop()}}),e,null,[[0,38]])})))).apply(this,arguments)}return Object(oe.useEffect)((function(){X()}),[X]),Object(oe.useEffect)((function(){$()}),[$]),Object(oe.useEffect)((function(){Z()}),[Z]),Object(oe.useEffect)((function(){P(tn.applicantAddress,s)}),[s,P]),!V||t?Object(ue.jsx)(sn,{children:Object(ue.jsx)("div",{className:"form__description--unauthorized",children:Object(ue.jsx)("p",{children:V?t?t.message:void 0:"Connect your wallet to submit a tribute proposal."})})}):Object(ue.jsx)(sn,{children:Object(ue.jsxs)("form",{className:"form",onSubmit:function(e){return e.preventDefault()},children:[Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",children:"Applicant Address"}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap",children:[Object(ue.jsx)("input",{"aria-describedby":"error-".concat(tn.applicantAddress),"aria-invalid":T.applicantAddress?"true":"false",name:tn.applicantAddress,ref:F({validate:function(e){return e?!!Object(Xt.a)(e)||ft.a.INVALID_ETHEREUM_ADDRESS:ft.a.REQUIRED}}),type:"text",disabled:H}),Object(ue.jsx)(Et,{error:Object(f.g)(tn.applicantAddress,T),id:"error-".concat(tn.applicantAddress)})]})]}),Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",children:"ERC20 Address"}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap",children:[Object(ue.jsx)("input",{"aria-describedby":"error-".concat(tn.erc20Address),"aria-invalid":T.erc20Address?"true":"false",name:tn.erc20Address,ref:F({validate:function(e){return e?!!Object(Xt.a)(e)||ft.a.INVALID_ETHEREUM_ADDRESS:ft.a.REQUIRED}}),type:"text",disabled:H}),Object(ue.jsx)(Et,{error:Object(f.g)(tn.erc20Address,T),id:"error-".concat(tn.erc20Address)})]})]}),Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",children:"Amount"}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap--narrow",children:[Object(ue.jsxs)("div",{className:"input__suffix-wrap",children:[Object(ue.jsx)("input",{className:"input__suffix","aria-describedby":"error-".concat(tn.tributeAmount),"aria-invalid":T.tributeAmount?"true":"false",name:tn.tributeAmount,onChange:function(){return P(tn.tributeAmount,Object(f.e)(R().tributeAmount))},ref:F({validate:function(e){var t=Number(Object(f.k)(e));return""===e?ft.a.REQUIRED:isNaN(t)?ft.a.INVALID_NUMBER:t<=0?"The value must be greater than 0.":t>Number(E)?"Insufficient funds.":!!Number.isInteger(t)||"The value must be an integer for an ERC20 token."}}),type:"text",disabled:H}),Object(ue.jsx)("div",{className:"input__suffix-item",children:(null===y||void 0===y?void 0:y.symbol)||"___"})]}),Object(ue.jsx)(Et,{error:Object(f.g)(tn.tributeAmount,T),id:"error-".concat(tn.tributeAmount)}),Object(ue.jsx)("div",{className:"form__input-description",children:"This amount will be held in escrow pending a member vote. If the proposal passes, the funds will automatically be sent to the DAO. If the proposal fails, the funds will be refunded to you."})]}),Object(ue.jsxs)("div",{className:"form__input-addon",children:["available: ",Object(ue.jsx)("span",{children:E?Number.isInteger(Number(E))?E:Object(f.d)(Number(E)):"---"})]})]}),Object(ue.jsxs)("div",{className:"form__input-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",children:"Request Amount"}),Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap--narrow",children:[Object(ue.jsx)("input",{"aria-describedby":"error-".concat(tn.requestAmount),"aria-invalid":T.requestAmount?"true":"false",name:tn.requestAmount,onChange:function(){return P(tn.requestAmount,Object(f.e)(R().requestAmount))},ref:F({validate:function(e){var t=Number(Object(f.k)(e));return""===e?ft.a.REQUIRED:isNaN(t)?ft.a.INVALID_NUMBER:!(t<0)||"The value must be at least 0."}}),type:"text",disabled:H}),Object(ue.jsx)(Et,{error:Object(f.g)(tn.requestAmount,T),id:"error-".concat(tn.requestAmount)}),Object(ue.jsx)("div",{className:"form__input-description",children:"This is the amount of DAO membership tokens you are requesting be sent to the Applicant Address in exchange for your tribute."})]})]}),Object(ue.jsxs)("div",{className:"form__textarea-row",children:[Object(ue.jsx)("label",{className:"form__input-row-label",children:"Description"}),Object(ue.jsx)("div",{className:"form__input-row-fieldwrap",children:Object(ue.jsx)("textarea",{name:tn.description,placeholder:"Say something about your tribute...",ref:F,disabled:H})})]}),Object(ue.jsx)("button",{className:"button",disabled:H,onClick:Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!H){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,L();case 4:if(e.sent){e.next=6;break}return e.abrupt("return");case 6:ce(R());case 7:case"end":return e.stop()}}),e)}))),type:"submit",children:W?Object(ue.jsx)(At.a,{}):Y?"Done":"Submit"}),H&&Object(ue.jsx)("div",{className:"form__submit-status-container",children:function(){switch(l){case vt.f.AWAITING_CONFIRM:return Object(ue.jsxs)(ue.Fragment,{children:["Awaiting your confirmation",Object(ue.jsx)(kt.a,{intervalMs:500})]});case vt.f.PENDING:return Object(ue.jsxs)(ue.Fragment,{children:["Submitting",Object(ue.jsx)(kt.a,{intervalMs:500})]});case vt.f.FULFILLED:return"Done!";default:return""}}()}),U&&Object(ue.jsx)("div",{className:"form__submit-error-container",children:Object(ue.jsx)(Nt.a,{renderText:"Something went wrong while submitting the proposal.",error:U})})]})})}function sn(e){return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsx)("div",{className:"titlebar",children:Object(ue.jsx)("h2",{className:"titlebar__title",children:"Tribute Proposal"})}),Object(ue.jsxs)("div",{className:"form-wrapper",children:[Object(ue.jsx)("div",{className:"form__description",children:Object(ue.jsx)("p",{children:"Nulla aliquet porttitor venenatis. Donec a dui et dui fringilla consectetur id nec massa. Aliquam erat volutpat. Sed ut dui ut lacus dictum fermentum vel tincidunt neque. Sed sed lacinia..."})}),e.children]})]})})}!function(e){e.type="type",e.selectedToken="selectedToken",e.memberAddress="memberAddress",e.amount="amount",e.notes="notes"}(en||(en={})),function(e){e.applicantAddress="applicantAddress",e.erc20Address="erc20Address",e.tributeAmount="tributeAmount",e.requestAmount="requestAmount",e.description="description"}(tn||(tn={}));var on=n(460),un=n.n(on),dn=(n(918),Object(oe.memo)((function(){return Object(ue.jsxs)("div",{className:"cube","data-testid":"cube","data-aos":"fade-up","data-aos-delay":"150",children:[Object(ue.jsx)("div",{className:"cube__segment--top"}),Object(ue.jsx)("div",{className:"cube__segment--left"}),Object(ue.jsx)("div",{className:"cube__segment--right"})]})})));function ln(){return Object(ue.jsxs)("div",{"data-testid":"get-started-header",className:"landing__header",children:[Object(ue.jsx)(me,{}),Object(ue.jsx)(Ze,{})]})}function bn(){var e=Object(se.f)();return Object(oe.useEffect)((function(){un.a.init({duration:800,offset:40,delay:120,mirror:!1,once:!0})}),[]),Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)(ln,{}),Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsx)(Se,{}),Object(ue.jsxs)("div",{className:"landing",children:[Object(ue.jsx)("div",{className:"landing__subtitle",children:"A next generation DAO framework"}),Object(ue.jsx)("div",{className:"landing__img",children:Object(ue.jsx)(dn,{})}),Object(ue.jsx)("div",{className:"landing__button",children:Object(ue.jsx)("button",{className:"button",onClick:function(){e.push("/join")},children:"Join"})})]})]})})]})}var jn=n(136);function fn(e){var t,n=e.proposal,r=n.snapshotProposal,a=1e3*Number((null===r||void 0===r?void 0:r.msg.payload.start)||0),c=1e3*Number((null===r||void 0===r?void 0:r.msg.payload.end)||0),s=Object(oe.useState)({hasVotingStarted:!1,hasVotingEnded:!1,votingStartEndInitReady:!1}),o=Object(xe.a)(s,2),i=o[0],u=o[1],d=Object(Yt.c)(r).offchainVotingResults,l=Object(oe.useCallback)((function(e){u(e)}),[]),b=null===(t=d[0])||void 0===t?void 0:t[1],j=i.hasVotingEnded,f=i.hasVotingStarted,O=i.votingStartEndInitReady;return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)(jn.c,{countdownVotingEndMs:c,countdownVotingStartMs:a,onVotingPeriodChange:l,votingResult:b}),O&&f&&!j&&Object(ue.jsx)(jn.b,{proposal:n})]})}var On=n(77);function pn(){return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsx)(Ge.a,{children:Object(ue.jsx)("div",{style:{textAlign:"center",fontSize:"5rem"},children:Object(ue.jsxs)("h3",{children:["4",Object(ue.jsx)("span",{className:"pulse",role:"img","aria-label":"404, not found",style:{display:"inline-block"},children:"\ud83d\ude35"}),"4"]})})})})}function hn(e){var t=e.proposal,n=e.renderAmountBadge,r=e.renderActions,a=t.getCommonSnapshotProposalData();return a?Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"proposaldetails__header",children:"Proposal Details"}),Object(ue.jsxs)("div",{className:"proposaldetails",children:[Object(ue.jsxs)("div",{className:"proposaldetails__content",children:[Object(ue.jsx)("h3",{children:Object(f.l)(a.msg.payload.name||"",7)}),Object(ue.jsx)(Ht.a,{children:a.msg.payload.body})]}),Object(ue.jsxs)("div",{className:"proposaldetails__status",children:[n&&n(),r()]})]})]}):null}function mn(){var e=Object(se.h)().proposalId,t=Object(Yt.d)(e,Vt.SnapshotType.proposal),n=t.proposalData,r=t.proposalError,a=t.proposalNotFound,c=t.proposalStatus,s=Object(Ne.d)().defaultChainError,o=r||s;return c===ge.a.PENDING&&!o?Object(ue.jsx)(vn,{children:Object(ue.jsx)("div",{className:"loader--large-container",children:Object(ue.jsx)(On.a,{})})}):a?Object(ue.jsx)(vn,{children:Object(ue.jsx)(pn,{})}):o?Object(ue.jsx)(vn,{children:Object(ue.jsx)("div",{className:"text-center",children:Object(ue.jsx)(Nt.a,{error:o,renderText:"Something went wrong while getting the proposal."})})}):n?Object(ue.jsx)(vn,{children:Object(ue.jsx)(hn,{proposal:n,renderActions:function(){return Object(ue.jsx)(fn,{proposal:n})}})}):Object(ue.jsx)(ue.Fragment,{})}function vn(e){var t=Object(se.f)();return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsxs)("div",{className:"titlebar",children:[Object(ue.jsx)("h2",{className:"titlebar__title",children:"Governance"}),Object(ue.jsx)("button",{className:"titlebar__action",onClick:function(e){e.preventDefault(),t.push("/governance")},children:"View all"})]}),e.children]})})}var xn=n(461),Nn=n(462),gn="View Proposal",En=n.n(Nn)()()(xn.a);function An(e){var t=e.buttonText,n=void 0===t?gn:t,r=e.proposalOnClickId,a=e.linkPath,c=e.onClick,o=e.name,i=e.renderStatus,u=Object(se.f)().location,d="/"===u.pathname?"":u.pathname,l="function"===typeof a?a(r):a||"".concat(d,"/").concat(r);return Object(ue.jsx)(s.b,{className:"proposalcard__link",to:l,onClick:function(){null===c||void 0===c||c(r)},children:Object(ue.jsxs)("div",{className:"proposalcard",children:[Object(ue.jsx)("h3",{className:"proposalcard__title",children:function(e){return Object(Xt.a)(e)?Object(f.l)(e,7):Object(ue.jsx)(En,{text:e,maxLine:1,ellipsis:"...",trimRight:!0,basedOn:"letters"})}(o)}),i&&i(),Object(ue.jsx)("button",{className:"proposalcard__button",children:n||gn})]})})}function wn(e){var t=e.actionId,n=void 0===t?xt.a:t,r=e.onProposalClick,a=void 0===r?function(){}:r,c=e.proposalLinkPath,s=e.renderProposalCard,o=Object(oe.useState)([]),i=Object(xe.a)(o,2),u=i[0],d=i[1],l=Object(oe.useState)({failedProposals:[],passedProposals:[],votingProposals:[]}),j=Object(xe.a)(l,2),O=j[0],p=j[1],h=function(e){var t=e.actionId,n=void 0===t?xt.a:t,r=Object(oe.useState)([]),a=Object(xe.a)(r,2),c=a[0],s=a[1],o=Object(oe.useState)(),i=Object(xe.a)(o,2),u=i[0],d=i[1],l=Object(oe.useState)(ge.a.STANDBY),j=Object(xe.a)(l,2),f=j[0],O=j[1],p=Object(pt.f)().isMountedRef,h=Object(oe.useCallback)((function(){return N.apply(this,arguments)}),[n,p]);function m(e){return x.apply(this,arguments)}function x(){return(x=Object(We.a)(Ve.a.mark((function e(t){var n,r,a;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n="".concat(b.C,"/api/").concat(b.D),e.next=4,fetch("".concat(n,"/proposals/").concat(t,"?includeVotes=true"));case 4:if((r=e.sent).ok){e.next=7;break}throw new Error("Something went wrong while fetching the Snapshot proposals.");case 7:return e.next=9,r.json();case 9:return a=e.sent,e.abrupt("return",Object.entries(a).map((function(e){var t=Object(xe.a)(e,2),n=t[0],r=t[1];return{daoProposal:void 0,snapshotDraft:void 0,snapshotProposal:Object(v.a)(Object(v.a)({},r),{},{idInSnapshot:n,idInDAO:""}),getCommonSnapshotProposalData:function(){},refetchProposalOrDraft:function(){},snapshotType:Vt.SnapshotType.proposal}})));case 13:throw e.prev=13,e.t0=e.catch(0),e.t0;case 16:case"end":return e.stop()}}),e,null,[[0,13]])})))).apply(this,arguments)}function N(){return(N=Object(We.a)(Ve.a.mark((function e(){var t;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,O(ge.a.PENDING),e.next=4,m(n);case 4:if(t=e.sent,p.current){e.next=7;break}return e.abrupt("return");case 7:O(ge.a.FULFILLED),s(t),e.next=18;break;case 11:if(e.prev=11,e.t0=e.catch(0),p.current){e.next=15;break}return e.abrupt("return");case 15:O(ge.a.REJECTED),s([]),d(e.t0);case 18:case"end":return e.stop()}}),e,null,[[0,11]])})))).apply(this,arguments)}return Object(oe.useEffect)((function(){h()}),[h]),{governanceProposals:c,governanceProposalsError:u,governanceProposalsStatus:f}}({actionId:n}),m=h.governanceProposals,x=h.governanceProposalsError,N=h.governanceProposalsStatus,g=Object(Yt.c)(u),E=g.offchainVotingResults,A=g.offchainVotingResultsError,w=g.offchainVotingResultsStatus,I=Object(Ne.d)().defaultChainError,y=O.failedProposals,C=O.passedProposals,D=O.votingProposals,S=N===ge.a.STANDBY||N===ge.a.PENDING||w===ge.a.STANDBY&&u.length>0||w===ge.a.PENDING,_=x||A||I;function k(e){return e.map((function(e){var t,n=e.snapshotProposal,r=null===n||void 0===n?void 0:n.idInSnapshot,o=(null===n||void 0===n?void 0:n.msg.payload.name)||"",i=1e3*Number((null===n||void 0===n?void 0:n.msg.payload.start)||0),u=1e3*Number((null===n||void 0===n?void 0:n.msg.payload.end)||0);if(!r)return null;var d=null===(t=E.find((function(e){var t=Object(xe.a)(e,2),n=t[0];t[1];return Object(f.i)(n)===Object(f.i)(r)})))||void 0===t?void 0:t[1];return s?Object(ue.jsx)(oe.Fragment,{children:s({proposalData:e,votingResult:d})},r):Object(ue.jsx)(An,{name:o,linkPath:c,onClick:a,proposalOnClickId:r,renderStatus:function(){return Object(ue.jsx)(jn.c,{votingResult:d,countdownVotingEndMs:u,countdownVotingStartMs:i})}},r)}))}return Object(oe.useEffect)((function(){d(m.map((function(e){return e.snapshotProposal})))}),[m]),Object(oe.useEffect)((function(){if(N===ge.a.FULFILLED){var e={failedProposals:[],passedProposals:[],votingProposals:[]};m.forEach((function(t){var n,r;if(((null===(n=t.snapshotProposal)||void 0===n?void 0:n.msg.payload.end)||0)a.No.units;c?e.passedProposals.push(t):c||e.failedProposals.push(t)}else e.votingProposals.push(t)})),p((function(t){return Object(v.a)(Object(v.a)({},t),e)}))}}),[m,N,E]),S&&!_?Object(ue.jsx)("div",{className:"loader--large-container",children:Object(ue.jsx)(On.a,{})}):m.length||Object.values(O).flatMap((function(e){return e})).length||N!==ge.a.FULFILLED?_?Object(ue.jsx)("div",{className:"text-center",children:Object(ue.jsx)(Nt.a,{error:_,renderText:"Something went wrong while getting the proposals."})}):Object(ue.jsxs)("div",{className:"grid--fluid grid-container",children:[D.length>0&&Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"grid__header",children:ft.d.VOTING}),Object(ue.jsx)("div",{className:"grid__cards",children:k(D)})]}),C.length>0&&Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"grid__header",children:ft.d.PASSED}),Object(ue.jsx)("div",{className:"grid__cards",children:k(C)})]}),y.length>0&&Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"grid__header",children:ft.d.FAILED}),Object(ue.jsx)("div",{className:"grid__cards",children:k(y)})]})]}):Object(ue.jsx)("p",{className:"text-center",children:"No proposals, yet!"})}function In(){return Object(ue.jsx)(yn,{children:Object(ue.jsx)(wn,{actionId:xt.a,proposalLinkPath:function(e){return"/governance/".concat(e)}})})}function yn(e){var t=Object(se.f)();return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsxs)("div",{className:"titlebar",children:[Object(ue.jsx)("h2",{className:"titlebar__title",children:"Governance"}),Object(ue.jsx)("button",{className:"titlebar__action",onClick:function(e){e.preventDefault(),t.push("/governance-proposal")},children:"New Proposal"})]}),e.children]})})}var Cn=["createdAt","didFullyRagequit"];function Dn(){var e=Object(c.c)((function(e){return e.contracts.DaoRegistryContract})),t=Object(c.c)((function(e){return e.contracts.BankExtensionContract})),n=Object(c.c)((function(e){return e.subgraphNetworkStatus.status})),a=Object(Ne.f)().web3Instance,s=Object(He.a)(O.c,{variables:{daoAddress:null===e||void 0===e?void 0:e.contractAddress.toLowerCase()}}),o=Object(xe.a)(s,2),i=o[0],u=o[1],d=u.called,l=u.loading,j=u.data,p=u.error,h=Object(oe.useState)([]),m=Object(xe.a)(h,2),N=m[0],g=m[1],E=Object(oe.useState)(ge.a.STANDBY),A=Object(xe.a)(E,2),w=A[0],I=A[1],y=Object(oe.useState)(),C=Object(xe.a)(y,2),D=C[0],S=C[1],_=Object(oe.useCallback)((function(){return T.apply(this,arguments)}),[t,e,a]),k=Object(oe.useCallback)((function(){try{if(I(ge.a.PENDING),!l&&j){var e=j.tributeDaos[0].members.filter((function(e){return!e.didFullyRagequit})).map((function(e){e.createdAt,e.didFullyRagequit;var t=Object(x.a)(e,Cn);return Object(v.a)(Object(v.a)({},t),{},{address:Object(Qt.toChecksumAddress)(e.address),delegateKey:Object(Qt.toChecksumAddress)(e.delegateKey)})}));I(ge.a.FULFILLED),g(e)}else if(p)throw new Error(p.message)}catch(p){console.log("subgraph query error: ".concat(p.message)),_()}}),[j,p,_,l]);function T(){return(T=Object(We.a)(Ve.a.mark((function n(){var c,s,o,i,u,d,l,j,O,p,h,m,v,x,N,E,A;return Ve.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e&&t&&a){n.next=2;break}return n.abrupt("return");case 2:return n.prev=2,I(ge.a.PENDING),c=e.abi,s=e.contractAddress,o=e.instance.methods,n.next=7,o.getNbMembers().call();case 7:if(i=n.sent,!(Number(i)>0)){n.next=28;break}return u=c.find((function(e){return"getMemberAddress"===e.name})),d=Object(r.a)(Array(Number(i)).keys()).map((function(e){return[s,u,[e.toString()]]})),n.next=13,Object(dt.j)({calls:d,web3Instance:a});case 13:return l=n.sent,j=c.find((function(e){return"memberAddressesByDelegatedKey"===e.name})),O=l.map((function(e){return[s,j,[e]]})),n.next=18,Object(dt.j)({calls:O,web3Instance:a});case 18:return p=n.sent,h=t.abi,m=t.contractAddress,v=h.find((function(e){return"balanceOf"===e.name})),x=p.map((function(e){return[m,v,[e,b.H]]})),n.next=24,Object(dt.j)({calls:x,web3Instance:a});case 24:N=n.sent,E=l.map((function(e,t){return{address:e,delegateKey:p[t],isDelegated:Object(f.i)(e)!==Object(f.i)(p[t]),units:N[t]}})),A=E.filter((function(e){return Object(Qt.toBN)(e.units).gt(Object(Qt.toBN)(0))})).reverse(),g(A);case 28:I(ge.a.FULFILLED),n.next=36;break;case 31:n.prev=31,n.t0=n.catch(2),I(ge.a.REJECTED),g([]),S(n.t0);case 36:case"end":return n.stop()}}),n,null,[[2,31]])})))).apply(this,arguments)}return Object(oe.useEffect)((function(){d||i()}),[d,i]),Object(oe.useEffect)((function(){n===ee.a.OK?!l&&(null===e||void 0===e?void 0:e.contractAddress)&&k():_()}),[null===e||void 0===e?void 0:e.contractAddress,_,k,l,n]),{members:N,membersError:D,membersStatus:w}}var Sn,_n,kn,Tn=n(201);function Rn(e){return Object(ue.jsx)("svg",Object(v.a)(Object(v.a)({"aria-hidden":"true",focusable:"false","data-icon":"copy",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},e),{},{children:Object(ue.jsx)("path",{fill:"currentColor",d:"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"})}))}function Pn(e){return Object(ue.jsx)("svg",Object(v.a)(Object(v.a)({"aria-hidden":"true",focusable:"false","data-icon":"wallet",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},e),{},{children:Object(ue.jsx)("path",{fill:"currentColor",d:"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"})}))}function Fn(e){var t=e.daoTokenDetails;function n(){return(n=Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,window.ethereum.request({method:"wallet_watchAsset",params:{type:"ERC20",options:t}});case 5:e.next=10;break;case 7:e.prev=7,e.t0=e.catch(2),console.log(e.t0);case 10:case"end":return e.stop()}}),e,null,[[2,7]])})))).apply(this,arguments)}return t?Object(ue.jsxs)("div",{children:["Token: ",Object(ue.jsx)("span",{children:Object(Tn.a)(t.address,7)}),Object(ue.jsx)("div",{className:"daotoken__tooltip",children:Object(ue.jsxs)("button",{className:"daotoken__button",onClick:function(){if(t){var e=document.createElement("input");document.body.appendChild(e),e.setAttribute("value",t.address),e.select(),document.execCommand("copy"),document.body.removeChild(e),document.getElementById("copyTooltip").innerHTML="copied!"}},onMouseLeave:function(){document.getElementById("copyTooltip").innerHTML="copy address"},children:[Object(ue.jsx)("span",{className:"daotoken__tooltiptext",id:"copyTooltip",children:"copy address"}),Object(ue.jsx)(Rn,{})]})}),Object(ue.jsx)("div",{className:"daotoken__tooltip",children:Object(ue.jsxs)("button",{className:"daotoken__button",onClick:function(){return n.apply(this,arguments)},children:[Object(ue.jsx)("span",{className:"daotoken__tooltiptext",children:"add to wallet"}),Object(ue.jsx)(Pn,{})]})})]}):Object(ue.jsx)(ue.Fragment,{})}function Ln(e){return Object(ue.jsx)("svg",Object(v.a)(Object(v.a)({"aria-hidden":"true",focusable:"false","data-icon":"user",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},e),{},{children:Object(ue.jsx)("path",{fill:"currentColor",d:"M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"})}))}function Mn(e){var t=e.isOpen,n=e.closeHandler,r=e.currentStep,a=Object(c.c)((function(e){return e.contracts.DaoRegistryContract})),s=Object(c.c)((function(e){return e.contracts.DaoRegistryAdapterContract})),o=Object(c.c)((function(e){return e.connectedMember})),i=Object(Ne.f)(),u=i.account,d=i.web3Instance,l=Object(Ne.b)().fast,b=Object(Ne.a)(),O=b.txError,p=b.txEtherscanURL,h=b.txIsPromptOpen,m=b.txSend,x=b.txStatus,N=Object(mt.a)({mode:"onBlur",reValidateMode:"onChange"}),g=Object(c.b)(),E=Object(oe.useState)(),A=Object(xe.a)(E,2),w=A[0],I=A[1],y=N.errors,C=N.getValues,D=N.register,S=N.trigger,_=N.watch,k=x===vt.f.AWAITING_CONFIRM||x===vt.f.PENDING,T=x===vt.f.FULFILLED,R=k||T||h,P=w||O,F=_(kn.delegateAddress),L=_(kn.confirmDelegation),M=!F||!L,B={setDelegation:function(){return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"modal__title",children:"Delegate"}),Object(ue.jsx)("p",{children:"Transfer your voting rights"}),Object(ue.jsx)("div",{className:"delegation-modal__arrow-down",children:"\u2193"}),Object(ue.jsxs)("form",{className:"form",onSubmit:function(e){return e.preventDefault()},children:[Object(ue.jsx)("div",{className:"form__input-row",children:Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap",children:[Object(ue.jsx)("input",{"aria-describedby":"error-".concat(kn.delegateAddress),"aria-invalid":y.delegateAddress?"true":"false",name:kn.delegateAddress,ref:D({validate:function(e){return e?!(!Object(Xt.a)(e)||e===xt.a)||ft.a.INVALID_ETHEREUM_ADDRESS:ft.a.REQUIRED}}),type:"text",disabled:R,placeholder:"Enter delegate address"}),Object(f.g)(kn.delegateAddress,y).includes("invalid")&&Object(ue.jsx)(Et,{error:Object(f.g)(kn.delegateAddress,y),id:"error-".concat(kn.delegateAddress)})]})}),Object(ue.jsx)("div",{className:"form__input-row",style:{marginTop:0},children:Object(ue.jsxs)("div",{className:"form__input-row-fieldwrap",children:[Object(ue.jsx)("input",{className:"checkbox-input","aria-describedby":"error-".concat(kn.confirmDelegation),"aria-invalid":y.confirmDelegation?"true":"false",id:kn.confirmDelegation,name:kn.confirmDelegation,ref:D({required:ft.a.REQUIRED}),type:"checkbox",disabled:R}),Object(ue.jsxs)("label",{className:"checkbox-label",htmlFor:kn.confirmDelegation,children:[Object(ue.jsx)("span",{className:"checkbox-box ".concat(Ct.SMALL)}),Object(ue.jsx)("span",{className:"checkbox-text",children:"Confirm delegation to the above address. You can revoke this at any time from your profile."})]})]})}),Object(ue.jsx)("button",{"aria-label":k?"Updating your delegate key...":"",className:"button",disabled:R||M,onClick:Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!R){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,S();case 4:if(e.sent){e.next=6;break}return e.abrupt("return");case 6:G(C());case 7:case"end":return e.stop()}}),e)}))),type:"submit",children:k?Object(ue.jsx)(At.a,{}):T?"Done":"Confirm"}),R&&Object(ue.jsx)("div",{className:"form__submit-status-container",children:Y()}),P&&Object(ue.jsx)("div",{className:"form__submit-error-container",children:Object(ue.jsx)(Nt.a,{renderText:"Something went wrong with your delegation.",error:P})})]})]})},revokeDelegation:function(){if(o)return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"modal__title",children:"Revoke Delegation"}),Object(ue.jsx)("p",{children:Object(f.l)(o.delegateKey,7)}),Object(ue.jsx)("div",{className:"delegation-modal__arrow-down",children:"\u2193"}),Object(ue.jsxs)("p",{children:[Object(ue.jsx)(Ln,{}),"Back to you"]}),Object(ue.jsx)("div",{className:"delegation-modal__text",children:"You'll be able to resume voting from your account. You can delegate again at any time from your profile."}),Object(ue.jsx)("button",{"aria-label":k?"Updating your delegate key...":"",className:"button",disabled:R,onClick:V,children:k?Object(ue.jsx)(At.a,{}):T?"Done":"Confirm"}),R&&Object(ue.jsx)("div",{className:"form__submit-status-container",children:Y()}),P&&Object(ue.jsx)("div",{className:"form__submit-error-container",children:Object(ue.jsx)(Nt.a,{renderText:"Something went wrong with your revocation.",error:P})})]});return Object(ue.jsx)(ue.Fragment,{})}};function G(e){return U.apply(this,arguments)}function U(){return(U=Object(We.a)(Ve.a.mark((function e(t){var r,c,o,i;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,a){e.next=3;break}throw new Error("No DAO Registry contract was found.");case 3:if(s){e.next=5;break}throw new Error("No DAO Registry Adapter contract was found.");case 5:if(u){e.next=7;break}throw new Error("No account found.");case 7:if(d){e.next=9;break}throw new Error("No Web3 instance was found.");case 9:return r=t.delegateAddress,c=[a.contractAddress,Object(Qt.toChecksumAddress)(r)],o=Object(v.a)({from:u||""},l?{gasPrice:l}:null),e.next=14,m("updateDelegateKey",s.instance.methods,c,o);case 14:e.sent&&setTimeout(Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,g(Object(j.A)({account:u,daoRegistryContract:a,web3Instance:d}));case 2:n();case 3:case"end":return e.stop()}}),e)}))),2e3),e.next=24;break;case 18:e.prev=18,e.t0=e.catch(0),console.log(e.t0),i=e.t0,(e.t0.message.includes("cannot overwrite existing delegated keys")||e.t0.message.includes("address already taken as delegated key"))&&(i=new Error("The provided address cannot be another member or already in use as a delegate.")),I(i);case 24:case"end":return e.stop()}}),e,null,[[0,18]])})))).apply(this,arguments)}function V(){return W.apply(this,arguments)}function W(){return(W=Object(We.a)(Ve.a.mark((function e(){var t,r;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,a){e.next=3;break}throw new Error("No DAO Registry contract was found.");case 3:if(s){e.next=5;break}throw new Error("No DAO Registry Adapter contract was found.");case 5:if(u){e.next=7;break}throw new Error("No account found.");case 7:if(d){e.next=9;break}throw new Error("No Web3 instance was found.");case 9:return t=[a.contractAddress,Object(Qt.toChecksumAddress)(u)],r=Object(v.a)({from:u||""},l?{gasPrice:l}:null),e.next=13,m("updateDelegateKey",s.instance.methods,t,r);case 13:e.sent&&setTimeout(Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,g(Object(j.A)({account:u,daoRegistryContract:a,web3Instance:d}));case 2:n();case 3:case"end":return e.stop()}}),e)}))),2e3),e.next=21;break;case 17:e.prev=17,e.t0=e.catch(0),console.log(e.t0),I(e.t0);case 21:case"end":return e.stop()}}),e,null,[[0,17]])})))).apply(this,arguments)}function Y(){switch(x){case vt.f.AWAITING_CONFIRM:return"Awaiting your confirmation\u2026";case vt.f.PENDING:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)(Tt.a,{intervalMs:2e3,messages:_t.b,useFirstItemStart:!0,render:function(e){return Object(ue.jsx)(Ge.a,{children:e},e)}}),Object(ue.jsx)(Rt.a,{url:p,isPending:!0})]});case vt.f.FULFILLED:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{children:"Submitted!"}),Object(ue.jsx)(Rt.a,{url:p})]});default:return null}}return Object(ue.jsxs)(It.a,{keyProp:"delegation",isOpen:t,isOpenHandler:function(){},modalClassNames:"delegation-modal",children:[Object(ue.jsx)("span",{className:"modal__close-button",onClick:function(){n()},children:Object(ue.jsx)(Fe.a,{})}),B[r]()]})}function Bn(){var e=Object(c.c)((function(e){return e.connectedMember})),t=Object(oe.useState)(_n.SET_DELEGATION),n=Object(xe.a)(t,2),r=n[0],a=n[1],s=Object(oe.useState)(""),o=Object(xe.a)(s,2),i=o[0],u=o[1],d=Object(oe.useState)(!1),l=Object(xe.a)(d,2),b=l[0],j=l[1],O=Object(oe.useCallback)((function(){return p.apply(this,arguments)}),[e]);function p(){return(p=Object(We.a)(Ve.a.mark((function t(){var n,r;return Ve.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.prev=0,e){t.next=3;break}throw new Error("No connected account found.");case 3:n=e.isAddressDelegated?_n.REVOKE_DELEGATION:_n.SET_DELEGATION,a(n),r=e.isAddressDelegated?Sn.REVOKE_DELEGATION:Sn.DELEGATE_VOTES,u(r),t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),console.log(t.t0);case 12:case"end":return t.stop()}}),t,null,[[0,9]])})))).apply(this,arguments)}return Object(oe.useEffect)((function(){O()}),[O]),e?Object(ue.jsxs)(ue.Fragment,{children:[""!==i&&Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"memberprofile__action-description",children:e.isAddressDelegated?Object(ue.jsxs)(ue.Fragment,{children:["Your voting rights have been delegated to"," ",Object(ue.jsx)("span",{className:"delegation__delegate-address-text",children:Object(f.l)(e.delegateKey,7)}),". You can revoke this at any time."]}):Object(ue.jsx)(ue.Fragment,{children:"You can delegate your voting rights to a different ETH address. The address cannot be another member or already in use as a delegate."})}),Object(ue.jsx)("button",{className:"memberprofile__action-button",onClick:function(){return j(!0)},children:i})]}),b&&Object(ue.jsx)(Mn,{isOpen:b,closeHandler:function(){j(!1)},currentStep:r})]}):Object(ue.jsx)(ue.Fragment,{})}function Gn(){var e=Dn(),t=e.members,n=e.membersError,r=e.membersStatus,a=Object(Ne.d)().defaultChainError,c=Object(Ne.f)().account,s=Ye(),o=s.daoTokenDetails,i=s.daoTokenDetailsStatus,u=Object(pt.e)(),d=u.totalUnits,l=u.totalUnitsStatus,b=Object(se.h)().ethereumAddress,j=Object(oe.useState)(),O=Object(xe.a)(j,2),p=O[0],h=O[1],m=Object(oe.useState)(!1),v=Object(xe.a)(m,2),x=v[0],N=v[1];Object(oe.useEffect)((function(){if(r===ge.a.FULFILLED){var e=t.find((function(e){return Object(f.i)(e.address)===Object(f.i)(b)}));h(e),e||N(!0)}}),[b,t,r]);var g=r===ge.a.STANDBY||r===ge.a.PENDING||i===ge.a.STANDBY||i===ge.a.PENDING||l===ge.a.STANDBY||l===ge.a.PENDING,E=r===ge.a.FULFILLED,A=n||a,w=!(!c||!p||Object(f.i)(c)!==Object(f.i)(p.address)),I=p&&"number"===typeof d?(Number(p.units)/d*100).toFixed(2):"";return g&&!A?Object(ue.jsx)(Un,{children:Object(ue.jsx)("div",{className:"loader--large-container",children:Object(ue.jsx)(On.a,{})})}):A?Object(ue.jsx)(Un,{children:Object(ue.jsx)("div",{className:"text-center",children:Object(ue.jsx)(Nt.a,{error:A,renderText:"Something went wrong while getting the member."})})}):x&&E?Object(ue.jsx)(Un,{children:Object(ue.jsx)("div",{className:"text-center error-message",children:Object(ue.jsx)("p",{children:"Member not found."})})}):Object(ue.jsx)(Un,{children:p?Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"memberprofile__header",children:"Member Profile"}),Object(ue.jsxs)("div",{className:"proposaldetails",children:[Object(ue.jsxs)("div",{className:"memberprofile__left-column",children:[Object(ue.jsx)("h3",{children:Object(f.l)(p.address,7)}),function(){if(p)return Object(ue.jsxs)("div",{children:[Object(ue.jsx)("div",{className:"memberprofile__info-item",children:o?Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{children:"DAO Tokens"}),Object(ue.jsx)("div",{children:"".concat(Object(f.e)(p.units)," ").concat(o.symbol||"tokens")}),w&&Object(ue.jsx)("small",{children:Object(ue.jsx)(Fn,{daoTokenDetails:o})})]}):Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{children:"Membership Units"}),Object(ue.jsx)("div",{children:Object(f.e)(p.units)})]})}),Object(ue.jsxs)("div",{className:"memberprofile__info-item",children:[Object(ue.jsx)("div",{children:"Voting Weight"}),Object(ue.jsx)("div",{children:"".concat(I,"%")})]})]})}()]}),Object(ue.jsx)("div",{className:"memberprofile__right-column",children:w?Object(ue.jsx)("div",{children:Object(ue.jsxs)("div",{className:"memberprofile__action",children:[Object(ue.jsx)("div",{className:"memberprofile__action-header",children:"Delegation"}),Object(ue.jsx)(Bn,{})]})}):Object(ue.jsx)("div",{className:"memberprofile__actions-unavailable",children:"Connect your wallet with this member address to view available actions."})})]})]}):Object(ue.jsx)(ue.Fragment,{})})}function Un(e){var t=Object(se.f)();return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsxs)("div",{className:"titlebar",children:[Object(ue.jsx)("h2",{className:"titlebar__title",children:"Members"}),Object(ue.jsx)("button",{className:"titlebar__action",onClick:function(e){e.preventDefault(),t.push("/members")},children:"View all"})]}),e.children]})})}!function(e){e.DELEGATE_VOTES="Delegate Votes",e.REVOKE_DELEGATION="Revoke Delegation"}(Sn||(Sn={})),function(e){e.SET_DELEGATION="setDelegation",e.REVOKE_DELEGATION="revokeDelegation"}(_n||(_n={})),function(e){e.delegateAddress="delegateAddress",e.confirmDelegation="confirmDelegation"}(kn||(kn={}));function Vn(e){var t=e.member,n=e.to,r=void 0===n?"#":n,a=Object(Ne.f)().account;return Object(ue.jsx)(s.b,{className:"membercard__link",to:r,children:Object(ue.jsx)("div",{className:"membercard ".concat(a&&a.toLowerCase()===t.address.toLowerCase()?"membercard--connected-account":""),children:Object(ue.jsx)("h3",{className:"membercard__title",children:Object(f.l)(t.address,7)})})})}function Wn(){var e=Dn(),t=e.members,n=e.membersError,r=e.membersStatus,a=Object(Ne.d)().defaultChainError,c=r===ge.a.STANDBY||r===ge.a.PENDING,s=r===ge.a.FULFILLED,o=n||a;return c&&!o?Object(ue.jsx)(Yn,{children:Object(ue.jsx)("div",{className:"loader--large-container",children:Object(ue.jsx)(On.a,{})})}):o?Object(ue.jsx)(Yn,{children:Object(ue.jsx)("div",{className:"text-center",children:Object(ue.jsx)(Nt.a,{error:o,renderText:"Something went wrong while getting the members."})})}):!Object.values(t).length&&s?Object(ue.jsx)(Yn,{children:Object(ue.jsx)("p",{className:"text-center",children:"No members, yet!"})}):Object(ue.jsx)(Yn,{children:Object(ue.jsx)("div",{className:"grid--fluid grid-container",children:Object(ue.jsxs)("div",{children:[Object(ue.jsx)("div",{className:"grid__header",children:"Active Members"}),Object(ue.jsx)("div",{className:"grid__cards",children:function(e){return e.map((function(e){return Object(ue.jsx)(Vn,{to:"/members/".concat(e.address),member:e},e.address)}))}(t)})]})})})}function Yn(e){return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsx)("div",{className:"titlebar",children:Object(ue.jsx)("h2",{className:"titlebar__title",children:"Members"})}),e.children]})})}var Hn=n(51),Kn=n(42),zn=[vt.b.offchainVotingVotingPeriod,vt.b.offchainVotingGracePeriod];function qn(e){var t=e.adapterName,n=e.onProposalClick,r=void 0===n?function(){}:n,a=e.proposalLinkPath,c=e.renderProposalCard,s=e.includeProposalsExistingOnlyOffchain,o=void 0!==s&&s,i=Object(oe.useState)([]),u=Object(xe.a)(i,2),d=u[0],l=u[1],b=Object(oe.useState)({failedProposals:[],nonsponsoredProposals:[],passedProposals:[],votingProposals:[]}),j=Object(xe.a)(b,2),O=j[0],p=j[1],h=Object(pt.d)(zn),m=Object(xe.a)(h.daoConfigurations,2),x=m[0],N=m[1],g=Object(Yt.f)({adapterName:t,includeProposalsExistingOnlyOffchain:o}),E=g.proposals,A=g.proposalsError,w=g.proposalsStatus,I=Object(Yt.c)(d),y=I.offchainVotingResults,C=I.offchainVotingResultsError,D=I.offchainVotingResultsStatus,S=Object(Ne.d)().defaultChainError,_=O.failedProposals,k=O.nonsponsoredProposals,T=O.passedProposals,R=O.votingProposals,P=w===ge.a.STANDBY||w===ge.a.PENDING||D===ge.a.STANDBY&&d.length>0||D===ge.a.PENDING,F=A||C||S;function L(e){return e.map((function(e){var t,n=e.daoProposalVote,s=e.daoProposalVotingAdapter,o=e.snapshotDraft,i=e.snapshotProposal,u=(null===o||void 0===o?void 0:o.idInDAO)||(null===i||void 0===i?void 0:i.idInDAO),d=null===s||void 0===s?void 0:s.votingAdapterName,l=0,b=0,j=0,O=0;switch(d){case rt.c.OffchainVotingContract:var p=(null===n||void 0===n?void 0:n[rt.c.OffchainVotingContract])||{},h=p.startingTime,m=p.gracePeriodStartingTime,v=Object(Hn.a)({gracePeriodLength:N,gracePeriodStartingTime:m,votePeriodLength:x,voteStartingTime:h});l=v.gracePeriodEndMs,b=v.gracePeriodStartMs,j=v.voteEndMs,O=v.voteStartMs}if(!u)return null;if(c)return Object(ue.jsx)(oe.Fragment,{children:c({proposalData:e})},u);var g=(null===o||void 0===o?void 0:o.msg.payload.name)||(null===i||void 0===i?void 0:i.msg.payload.name)||"",E=null===(t=y.find((function(e){var t=Object(xe.a)(e,2),n=t[0];t[1];return Object(f.i)(n)===Object(f.i)(u)})))||void 0===t?void 0:t[1];return Object(ue.jsx)(An,{linkPath:a,name:g,onClick:r,proposalOnClickId:u,renderStatus:function(){switch(d){case rt.c.OffchainVotingContract:return Object(ue.jsx)(jn.c,{countdownGracePeriodEndMs:l,countdownGracePeriodStartMs:b,countdownVotingEndMs:j,countdownVotingStartMs:O,votingResult:E});default:return Object(ue.jsx)(ue.Fragment,{})}}},u)}))}return Object(oe.useEffect)((function(){l(E.map((function(e){return e.snapshotProposal})))}),[E]),Object(oe.useEffect)((function(){if(w===ge.a.FULFILLED){var e={failedProposals:[],nonsponsoredProposals:[],passedProposals:[],votingProposals:[]};E.forEach((function(t){var n,r,a,c,s=t.daoProposal,i=t.daoProposalVotingState,u=t.daoProposalVote;if(s){var d=0===(null===(n=t.snapshotProposal)||void 0===n||null===(r=n.votes)||void 0===r?void 0:r.length),l=void 0!==i&&(Object(Hn.f)(Kn.b.GRACE_PERIOD,i)||Object(Hn.f)(Kn.b.TIE,i))&&Object(Hn.e)(Wt.b.SPONSORED,s.flags)&&(null===u||void 0===u||null===(a=u.OffchainVotingContract)||void 0===a?void 0:a.reporter)===xt.a;if(void 0!==i)if(void 0!==i&&Object(Hn.f)(Kn.b.PASS,i)&&(Object(Hn.e)(Wt.b.SPONSORED,s.flags)||Object(Hn.e)(Wt.b.PROCESSED,s.flags)))e.passedProposals.push(t);else{var b=null===(c=y.find((function(e){var n,r=Object(xe.a)(e,2),a=r[0];r[1];return Object(f.i)(a)===Object(f.i)((null===(n=t.snapshotProposal)||void 0===n?void 0:n.idInDAO)||"")})))||void 0===c?void 0:c[1],j=!!b&&b.Yes.units>b.No.units;l&&!1===d&&j?e.votingProposals.push(t):void 0===i||!Object(Hn.f)(Kn.b.NOT_PASS,i)&&!Object(Hn.f)(Kn.b.TIE,i)||!Object(Hn.e)(Wt.b.SPONSORED,s.flags)&&!Object(Hn.e)(Wt.b.PROCESSED,s.flags)?void 0!==i&&l&&d?e.failedProposals.push(t):void 0===i||!l||j?void 0!==i&&(Object(Hn.f)(Kn.b.GRACE_PERIOD,i)||Object(Hn.f)(Kn.b.IN_PROGRESS,i))&&Object(Hn.e)(Wt.b.SPONSORED,s.flags)&&e.votingProposals.push(t):e.failedProposals.push(t):e.failedProposals.push(t)}else(o||Object(Hn.e)(Wt.b.EXISTS,s.flags))&&e.nonsponsoredProposals.push(t)}})),p((function(t){return Object(v.a)(Object(v.a)({},t),e)}))}}),[o,y,E,w]),P&&!F?Object(ue.jsx)("div",{className:"loader--large-container",children:Object(ue.jsx)(On.a,{})}):F?Object(ue.jsx)("div",{className:"text-center",children:Object(ue.jsx)(Nt.a,{error:F,renderText:"Something went wrong while getting the proposals."})}):Object.values(O).flatMap((function(e){return e})).length||w!==ge.a.FULFILLED?Object(ue.jsxs)("div",{className:"grid--fluid grid-container",children:[R.length>0&&Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"grid__header",children:ft.d.VOTING}),Object(ue.jsx)("div",{className:"grid__cards",children:L(R)})]}),k.length>0&&Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"grid__header",children:ft.d.REQUESTS}),Object(ue.jsx)("div",{className:"grid__cards",children:L(k)})]}),T.length>0&&Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"grid__header",children:ft.d.PASSED}),Object(ue.jsx)("div",{className:"grid__cards",children:L(T)})]}),_.length>0&&Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{className:"grid__header",children:ft.d.FAILED}),Object(ue.jsx)("div",{className:"grid__cards",children:L(_)})]})]}):Object(ue.jsx)("p",{className:"text-center",children:"No proposals, yet!"})}function Jn(){return Object(ue.jsx)(Qn,{children:Object(ue.jsx)(qn,{adapterName:rt.a.ONBOARDING,proposalLinkPath:function(e){return"/membership/".concat(e)},includeProposalsExistingOnlyOffchain:!0})})}function Qn(e){var t=Object(se.f)();return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsxs)("div",{className:"titlebar",children:[Object(ue.jsx)("h2",{className:"titlebar__title",children:"Membership"}),Object(ue.jsx)("button",{className:"titlebar__action",onClick:function(e){e.preventDefault(),t.push("/members")},children:"View members"})]}),e.children]})})}var Xn={skipIsActiveMemberCheck:!0};function $n(e){var t=e.disabled,n=e.proposal.snapshotProposal,r=Object(oe.useState)(),a=Object(xe.a)(r,2),s=a[0],o=a[1],i=Object(oe.useState)(),u=Object(xe.a)(i,2),d=u[0],l=u[1],b=Object(oe.useRef)({notProposerMessage:""}),f=Object(c.c)((function(e){var t;return null===(t=e.contracts)||void 0===t?void 0:t.OnboardingContract})),O=Object(c.c)((function(e){return e.contracts.DaoRegistryContract})),p=Object(Ne.f)(),h=p.account,m=p.web3Instance,x=Object(Ne.a)(),N=x.txEtherscanURL,g=x.txIsPromptOpen,E=x.txSend,A=x.txStatus,w=Object(pt.g)(Xn),I=w.isDisabled,y=w.openWhyDisabledModal,C=w.WhyDisabledModal,D=w.setOtherDisabledReasons,S=Object(Ne.b)().fast,_=Ye().daoTokenDetails,k=Object(c.b)(),T=A===vt.f.AWAITING_CONFIRM||A===vt.f.PENDING,R=A===vt.f.FULFILLED,P=T||R||g,F=I||P||t,L=Object(oe.useCallback)((function(){return M.apply(this,arguments)}),[f,null===O||void 0===O?void 0:O.contractAddress,n]);function M(){return(M=Object(We.a)(Ve.a.mark((function e(){var t;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n&&f){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,f.instance.methods.proposals(null===O||void 0===O?void 0:O.contractAddress,n.idInDAO).call();case 5:t=e.sent,l(t.amount),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(0),console.error(e.t0),l(void 0);case 13:case"end":return e.stop()}}),e,null,[[0,9]])})))).apply(this,arguments)}function B(){return(B=Object(We.a)(Ve.a.mark((function e(){var t,r;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,O){e.next=3;break}throw new Error("No DAO Registry contract was found.");case 3:if(n){e.next=5;break}throw new Error("No Snapshot proposal was found.");case 5:if(f){e.next=7;break}throw new Error("No OnboardingContract found.");case 7:if(h){e.next=9;break}throw new Error("No account found.");case 9:if(m){e.next=11;break}throw new Error("No Web3 instance was found.");case 11:return t=[O.contractAddress,n.idInDAO],r=Object(v.a)({from:h||"",value:d},S?{gasPrice:S}:null),e.next=15,E("processProposal",f.instance.methods,t,r);case 15:if(!e.sent){e.next=22;break}return e.next=19,k(Object(j.A)({account:h,daoRegistryContract:O,web3Instance:m}));case 19:if(h.toLowerCase()!==n.msg.payload.metadata.submitActionArgs[0].toLowerCase()){e.next=22;break}return e.next=22,G();case 22:e.next=27;break;case 24:e.prev=24,e.t0=e.catch(0),o(e.t0);case 27:case"end":return e.stop()}}),e,null,[[0,24]])})))).apply(this,arguments)}function G(){return U.apply(this,arguments)}function U(){return(U=Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(_){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,window.ethereum.request({method:"wallet_watchAsset",params:{type:"ERC20",options:_}});case 5:e.next=10;break;case 7:e.prev=7,e.t0=e.catch(2),console.log(e.t0);case 10:case"end":return e.stop()}}),e,null,[[2,7]])})))).apply(this,arguments)}return Object(oe.useEffect)((function(){L()}),[L]),Object(oe.useEffect)((function(){var e=n.msg.payload.metadata.accountAuthorizedToProcessPassedProposal;e&&h&&(b.current=Object(v.a)(Object(v.a)({},b.current),{},{notProposerMessage:e.toLowerCase()!==h.toLowerCase()?"Only the original proposer can process the proposal.":""})),D(Object.values(b.current))}),[h,D,n]),Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsxs)("div",{children:[Object(ue.jsx)("button",{className:"proposaldetails__button",disabled:F,onClick:F?function(){}:function(){return B.apply(this,arguments)},children:T?Object(ue.jsx)(At.a,{}):R?"Done":"Process"}),Object(ue.jsx)(Nt.a,{error:s,renderText:"Something went wrong"}),P&&Object(ue.jsx)("div",{className:"form__submit-status-container",children:function(){switch(A){case vt.f.AWAITING_CONFIRM:return Object(ue.jsxs)(ue.Fragment,{children:["Confirm to process the proposal",Object(ue.jsx)(kt.a,{})]});case vt.f.PENDING:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)(Tt.a,{intervalMs:2e3,messages:_t.b,useFirstItemStart:!0,render:function(e){return Object(ue.jsx)(Ge.a,{children:e},e)}}),Object(ue.jsx)(Rt.a,{url:N,isPending:!0})]});case vt.f.FULFILLED:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{children:"Proposal submitted!"}),Object(ue.jsx)(Rt.a,{url:N})]});default:return null}}()}),I&&Object(ue.jsx)("button",{className:"button--help-centered",onClick:y,children:"Why is processing disabled?"})]}),Object(ue.jsx)(C,{title:"Why is processing disabled?"})]})}var Zn=Object(oe.lazy)((function(){return n.e(8).then(n.bind(null,976))})),er={duration:150},tr={display:"inline-block",width:"100%",fontSize:"1.5rem"};function nr(e){var t,n=e.adapterName,r=e.proposal,a=e.renderAction,s=Object(c.c)((function(e){var t;return null===(t=e.contracts.VotingContract)||void 0===t?void 0:t.adapterOrExtensionName})),o=(null===(t=r.daoProposalVotingAdapter)||void 0===t?void 0:t.votingAdapterName)||s;return Object(ue.jsx)(oe.Suspense,{fallback:Object(ue.jsx)("span",{className:"text-center",style:tr,children:Object(ue.jsx)(kt.a,{intervalMs:200,fadeInProps:er})}),children:function(){if(!o)return Object(ue.jsx)(ue.Fragment,{});switch(o){case rt.c.OffchainVotingContract:return Object(ue.jsx)(Zn,{adapterName:n,proposal:r,renderAction:a});case rt.c.VotingContract:return Object(ue.jsx)(ue.Fragment,{});default:return Object(ue.jsx)(Nt.a,{error:new Error('"'.concat(o,'" is not a valid voting adapter name.')),renderText:"Something went wrong"})}}()})}var rr=n(206);function ar(e){var t=e.amount,n=e.amountUnit,r=e.amount2,a=e.amount2Unit;return Object(ue.jsx)("div",{className:"proposaldetails__amount",children:Object(ue.jsxs)("span",{children:["".concat(t," ").concat(n),r&&Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("br",{}),Object(ue.jsx)("small",{children:"for"}),Object(ue.jsx)("br",{}),"".concat(r," ").concat(a)]})]})})}function cr(){var e=Object(se.h)().proposalId,t=Object(Yt.d)(e),n=t.proposalData,r=t.proposalError,a=t.proposalNotFound,c=t.proposalStatus,s=Object(Ne.d)().defaultChainError,o=r||s;function i(e){var t=e.OffchainVotingContract,n=t.daoProposalVoteResult,r=t.proposal,a=t.status;if(a===Wt.c.Submit){var c=r.snapshotDraft,s=null===c||void 0===c?void 0:c.msg.payload.metadata.submitActionArgs[0];return Object(ue.jsx)(rr.a,{checkApplicant:s,proposal:r})}return a===Wt.c.Process||a===Wt.c.OffchainVotingGracePeriod?n&&Kn.b[n]!==Kn.b[Kn.b.PASS]?Object(ue.jsx)(ue.Fragment,{}):Object(ue.jsx)($n,{disabled:a===Wt.c.OffchainVotingGracePeriod,proposal:r}):null}if(c===ge.a.PENDING&&!o)return Object(ue.jsx)(sr,{children:Object(ue.jsx)("div",{className:"loader--large-container",children:Object(ue.jsx)(On.a,{})})});if(a)return Object(ue.jsx)(sr,{children:Object(ue.jsx)(pn,{})});if(o)return Object(ue.jsx)(sr,{children:Object(ue.jsx)("div",{className:"text-center",children:Object(ue.jsx)(Nt.a,{error:o,renderText:"Something went wrong while getting the proposal."})})});if(n){var u=n.getCommonSnapshotProposalData(),d="\u2014",l="";try{var b=null===u||void 0===u?void 0:u.msg.payload.metadata.proposalAmountValues;d=b.tributeAmount,l=b.tributeAmountUnit}catch(o){d="\u2014",l=""}return Object(ue.jsx)(sr,{children:Object(ue.jsx)(hn,{proposal:n,renderAmountBadge:function(){return Object(ue.jsx)(ar,{amount:d,amountUnit:l})},renderActions:function(){return Object(ue.jsx)(nr,{adapterName:vt.a.onboarding,proposal:n,renderAction:i})}})})}return Object(ue.jsx)(ue.Fragment,{})}function sr(e){var t=Object(se.f)();return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsxs)("div",{className:"titlebar",children:[Object(ue.jsx)("h2",{className:"titlebar__title",children:"Membership"}),Object(ue.jsx)("button",{className:"titlebar__action",onClick:function(e){e.preventDefault(),t.push("/membership")},children:"View all"})]}),e.children]})})}function or(e){var t=e.showAfterMs,n=Object(oe.useState)(!1),r=Object(xe.a)(n,2),a=r[0],c=r[1];return Object(oe.useEffect)((function(){var e=t&&setTimeout((function(){return c(!0)}),t);return function(){e&&clearTimeout(e)}}),[t]),!t||t&&a?Object(ue.jsx)("div",{className:"loader--emoji",children:Object(ue.jsx)("span",{role:"img","aria-label":"Loading content...",children:e.emoji})}):null}var ir=n(205),ur=n(153),dr={skipIsActiveMemberCheck:!0};function lr(e){var t=e.redeemables,n=e.daoTokenDetails;return Object(ue.jsx)(jr,{children:Object(ue.jsx)(br,{redeemable:t[0],daoTokenDetails:n})})}function br(e){var t=e.redeemable,n=e.daoTokenDetails,r=Object(oe.useRef)({invalidApplicantMessage:""}),a=Object(ur.b)(),c=a.redeemCoupon,s=a.submitStatus,o=a.submitError,i=a.txStatus,u=a.txEtherscanURL,d=a.txIsPromptOpen,l=Object(pt.g)(dr),b=l.isDisabled,j=l.openWhyDisabledModal,O=l.WhyDisabledModal,p=l.setOtherDisabledReasons,h=Object(Yt.a)(t.recipient),m=h.checkApplicantError,x=h.checkApplicantInvalidMsg,N=h.checkApplicantStatus,g=h.isApplicantValid,E=s===ur.a.PENDING||i===vt.f.AWAITING_CONFIRM||i===vt.f.PENDING,A=s===ur.a.FULFILLED||i===vt.f.FULFILLED||t.isRedeemd,w=E||A||d;return Object(oe.useEffect)((function(){t.recipient&&(m&&console.warn("Error checking if the applicant address '".concat(t.recipient,"' is valid: ").concat(m.message)),N===ge.a.FULFILLED&&!g&&x&&(r.current=Object(v.a)(Object(v.a)({},r.current),{},{invalidApplicantMessage:x})),p(Object.values(r.current)))}),[m,x,N,g,t.recipient,p]),Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsxs)("div",{className:"redeemcard redeemcard__content ".concat(A?"fireworks":""," "),children:[Object(ue.jsxs)("p",{className:"redeemcard__recipient",children:["Recipient:"," ",Object(f.l)(Object(Qt.toChecksumAddress)(t.recipient),7)]}),Object(ue.jsxs)("p",{className:"redeemcard__unit",children:[Object(f.e)(t.amount),Object(ue.jsx)("sup",{children:Object(ue.jsx)("small",{children:(null===n||void 0===n?void 0:n.symbol)||"tokens"})})]}),Object(ue.jsx)(Fn,{daoTokenDetails:n}),A&&Object(ue.jsx)("p",{className:"redeemcard__redeemed",children:Object(ue.jsx)("span",{className:"pulse",role:"img","aria-label":"Redeemed!",style:{display:"inline-block"},children:"\ud83e\udd73"})}),Object(ue.jsx)("button",{className:"button",style:{marginTop:A?"1rem":"1.5rem"},onClick:Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(t,n);case 2:case"end":return e.stop()}}),e)}))),disabled:b||w,children:E?Object(ue.jsx)(At.a,{}):A?"Redeemed!":"Redeem"}),w&&!t.isRedeemd&&Object(ue.jsx)("div",{className:"form__submit-status-container",style:{marginTop:"1rem"},children:function(){switch(i){case vt.f.AWAITING_CONFIRM:return Object(ue.jsxs)(ue.Fragment,{children:["Awaiting your confirmation",Object(ue.jsx)(ir.a,{})]});case vt.f.PENDING:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)(Tt.a,{intervalMs:2e3,messages:_t.b,useFirstItemStart:!0,render:function(e){return Object(ue.jsx)(Ge.a,{children:e},e)}}),Object(ue.jsx)(Rt.a,{url:u,isPending:!0})]});case vt.f.FULFILLED:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{children:"Finalized!"}),Object(ue.jsx)(Rt.a,{url:u})]});default:return null}}()}),b&&Object(ue.jsx)("button",{className:"button--help-centered",onClick:j,style:{margin:"1rem auto 0"},children:"Why is redeeming disabled?"}),o&&Object(ue.jsx)("div",{className:"form__submit-error-container",children:Object(ue.jsx)(Nt.a,{renderText:"Something went wrong while redeeming the coupon.",error:o})})]}),Object(ue.jsx)(O,{title:"Why is redeeming disabled?"})]})}function jr(e){return Object(ue.jsx)(Ge.a,{children:Object(ue.jsx)("div",{className:"grid--fluid grid-container",children:e.children})})}function fr(){var e=Object(oe.useState)([]),t=Object(xe.a)(e,2),n=t[0],r=t[1],a=Object(oe.useState)(ge.a.STANDBY),c=Object(xe.a)(a,2),s=c[0],o=c[1],i=Object(Ne.f)(),u=i.connected,d=i.account,l=Object(Ne.d)().defaultChainError,j=Object(pt.a)(),f=j.abortController,O=j.isMountedRef,p=Ye(),h=p.daoTokenDetails,m=p.daoTokenDetailsStatus,v=Object(se.g)(),x=new URLSearchParams(v.search).get("coupon"),N=s===ge.a.STANDBY||s===ge.a.PENDING||m===ge.a.STANDBY||m===ge.a.PENDING,g=Object(oe.useCallback)((function(){return E.apply(this,arguments)}),[null===f||void 0===f?void 0:f.signal,x,O]);function E(){return(E=Object(We.a)(Ve.a.mark((function e(){var t,n;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,null===f||void 0===f?void 0:f.signal){e.next=3;break}return e.abrupt("return");case 3:return o(ge.a.PENDING),e.next=6,fetch("".concat(b.g,"/api/coupon/redeem"),{method:"POST",body:JSON.stringify({signature:x}),headers:{"Content-Type":"application/json"},signal:f.signal});case 6:if(t=e.sent,O.current){e.next=9;break}return e.abrupt("return");case 9:return e.next=11,t.json();case 11:n=e.sent,r(n),o(ge.a.FULFILLED),e.next=21;break;case 16:if(e.prev=16,e.t0=e.catch(0),O.current){e.next=20;break}return e.abrupt("return");case 20:o(ge.a.REJECTED);case 21:case"end":return e.stop()}}),e,null,[[0,16]])})))).apply(this,arguments)}return Object(oe.useEffect)((function(){d&&u&&!l&&g()}),[d,u,g,l]),u?l?Object(ue.jsx)(Or,{children:Object(ue.jsx)("p",{className:"color-brightsalmon",children:l.message})}):u&&N?Object(ue.jsxs)(Or,{children:[Object(ue.jsx)(or,{emoji:"\ud83c\udf9f"}),Object(ue.jsx)("p",{children:"Checking\u2026 please wait."})]}):void 0!==x&&x?n&&n.length?Object(ue.jsx)(Or,{children:Object(ue.jsx)(lr,{daoTokenDetails:h,redeemables:n})}):Object(ue.jsx)(Or,{children:Object(ue.jsx)("p",{className:"color-brightsalmon",children:"Coupon not found."})}):Object(ue.jsx)(Or,{children:Object(ue.jsx)("p",{className:"color-brightsalmon",children:"Coupon signature missing."})}):Object(ue.jsx)(Or,{children:Object(ue.jsx)("p",{className:"color-brightsalmon",children:"Connect your wallet to view the coupon."})})}function Or(e){return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsx)("div",{className:"titlebar",children:Object(ue.jsx)("h2",{className:"titlebar__title",children:"Redeem Coupon"})}),Object(ue.jsxs)("div",{className:"form-wrapper",children:[Object(ue.jsx)("div",{className:"form__description",children:Object(ue.jsx)("p",{children:"Redeem coupon to issue the membership tokens."})}),e.children]})]})})}function pr(e){var t=e.proposal.snapshotProposal,n=Object(oe.useState)(),r=Object(xe.a)(n,2),a=r[0],s=r[1],o=Object(oe.useRef)({alreadyCompletedMessage:""}),i=Object(c.c)((function(e){var t;return null===(t=e.contracts)||void 0===t?void 0:t.DistributeContract})),u=Object(c.c)((function(e){return e.contracts.DaoRegistryContract})),d=Object(Ne.f)(),l=d.account,b=d.web3Instance,f=Object(Ne.a)(),O=f.txEtherscanURL,p=f.txIsPromptOpen,h=f.txSend,m=f.txStatus,x=Object(pt.g)(),N=x.isDisabled,g=x.openWhyDisabledModal,E=x.WhyDisabledModal,A=x.setOtherDisabledReasons,w=Object(Ne.b)().fast,I=Object(c.b)(),y=m===vt.f.AWAITING_CONFIRM||m===vt.f.PENDING,C=m===vt.f.FULFILLED,D=y||C||p,S=N||D;function _(){return(_=Object(We.a)(Ve.a.mark((function e(){var n,r,a,c;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,u){e.next=3;break}throw new Error("No DAO Registry contract was found.");case 3:if(t){e.next=5;break}throw new Error("No Snapshot proposal was found.");case 5:if(i){e.next=7;break}throw new Error("No DistributeContract found.");case 7:if(l){e.next=9;break}throw new Error("No account found.");case 9:if(b){e.next=11;break}throw new Error("No Web3 instance was found.");case 11:if(n="0",!(null===t||void 0===t?void 0:t.msg.payload.metadata.isTypeAllMembers)){e.next=24;break}return e.prev=14,e.next=17,u.instance.methods.getNbMembers().call();case 17:r=e.sent,n=r.toString(),e.next=24;break;case 21:throw e.prev=21,e.t0=e.catch(14),new Error("Error while retrieving number of DAO members");case 24:return a=[u.contractAddress,n],c=Object(v.a)({from:l||""},w?{gasPrice:w}:null),e.next=28,h("distribute",i.instance.methods,a,c);case 28:if(!e.sent){e.next=32;break}return e.next=32,I(Object(j.A)({account:l,daoRegistryContract:u,web3Instance:b}));case 32:e.next=37;break;case 34:e.prev=34,e.t1=e.catch(0),s(e.t1);case 37:case"end":return e.stop()}}),e,null,[[0,34],[14,21]])})))).apply(this,arguments)}return Object(oe.useEffect)((function(){function e(){return(e=Object(We.a)(Ve.a.mark((function e(){var n;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,t){e.next=3;break}throw new Error("No Snapshot proposal was found.");case 3:if(u){e.next=5;break}throw new Error("No DAO Registry contract was found.");case 5:if(i){e.next=7;break}throw new Error("No DistributeContract found.");case 7:return e.next=9,i.instance.methods.distributions(u.contractAddress,t.idInDAO).call();case 9:n=e.sent,o.current=Object(v.a)(Object(v.a)({},o.current),{},{alreadyCompletedMessage:Wt.a[n.status]!==Wt.a[Wt.a.IN_PROGRESS]?"The transfer has already been completed.":""}),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(0),console.error(e.t0);case 16:A(Object.values(o.current));case 17:case"end":return e.stop()}}),e,null,[[0,13]])})))).apply(this,arguments)}!function(){e.apply(this,arguments)}()}),[i,u,A,t]),Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsxs)("div",{children:[Object(ue.jsx)("button",{className:"proposaldetails__button",disabled:S,onClick:S?function(){}:function(){return _.apply(this,arguments)},children:y?Object(ue.jsx)(At.a,{}):C?"Transfer done":"Transfer assets"}),Object(ue.jsx)(Nt.a,{error:a,renderText:"Something went wrong"}),D&&Object(ue.jsx)("div",{className:"form__submit-status-container",children:function(){switch(m){case vt.f.AWAITING_CONFIRM:return Object(ue.jsxs)(ue.Fragment,{children:["Confirm to transfer assets",Object(ue.jsx)(kt.a,{})]});case vt.f.PENDING:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)(Tt.a,{intervalMs:2e3,messages:_t.b,useFirstItemStart:!0,render:function(e){return Object(ue.jsx)(Ge.a,{children:e},e)}}),Object(ue.jsx)(Rt.a,{url:O,isPending:!0})]});case vt.f.FULFILLED:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{children:"Assets transferred!"}),Object(ue.jsx)(Rt.a,{url:O})]});default:return null}}()}),N&&Object(ue.jsx)("button",{className:"button--help-centered",onClick:g,children:"Why is action disabled?"})]}),Object(ue.jsx)(E,{title:"Why is transfer disabled?"})]})}function hr(){var e=Object(se.h)().proposalId,t=Object(Yt.d)(e),n=t.proposalData,r=t.proposalError,a=t.proposalNotFound,c=t.proposalStatus,s=Object(Ne.d)().defaultChainError,o=r||s;function i(e){var t=e.OffchainVotingContract,n=t.daoProposalVoteResult,r=t.proposal;return t.status===Wt.c.Completed&&n&&Kn.b[n]===Kn.b[Kn.b.PASS]?Object(ue.jsx)(pr,{proposal:r}):null}if(c===ge.a.PENDING&&!o)return Object(ue.jsx)(mr,{children:Object(ue.jsx)("div",{className:"loader--large-container",children:Object(ue.jsx)(On.a,{})})});if(a)return Object(ue.jsx)(mr,{children:Object(ue.jsx)(pn,{})});if(o)return Object(ue.jsx)(mr,{children:Object(ue.jsx)("div",{className:"text-center",children:Object(ue.jsx)(Nt.a,{error:o,renderText:"Something went wrong."})})});if(n){var u=n.getCommonSnapshotProposalData(),d="\u2014",l="";try{var b=null===u||void 0===u?void 0:u.msg.payload.metadata.proposalAmountValues;d=b.transferAmount,l=b.transferAmountUnit}catch(o){d="\u2014",l=""}return Object(ue.jsx)(mr,{children:Object(ue.jsx)(hn,{proposal:n,renderAmountBadge:function(){return Object(ue.jsx)(ar,{amount:d,amountUnit:l})},renderActions:function(){return Object(ue.jsx)(nr,{adapterName:vt.a.distribute,proposal:n,renderAction:i})}})})}return Object(ue.jsx)(ue.Fragment,{})}function mr(e){var t=Object(se.f)();return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsxs)("div",{className:"titlebar",children:[Object(ue.jsx)("h2",{className:"titlebar__title",children:"Transfers"}),Object(ue.jsx)("button",{className:"titlebar__action",onClick:function(e){e.preventDefault(),t.push("/transfers")},children:"View all"})]}),e.children]})})}function vr(){return Object(ue.jsx)(xr,{children:Object(ue.jsx)(qn,{adapterName:rt.a.DISTRIBUTE,proposalLinkPath:function(e){return"/transfers/".concat(e)}})})}function xr(e){var t=Object(se.f)();return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsxs)("div",{className:"titlebar",children:[Object(ue.jsx)("h2",{className:"titlebar__title",children:"Transfers"}),Object(ue.jsx)("button",{className:"titlebar__action",onClick:function(e){e.preventDefault(),t.push("/transfer")},children:"Make Transfer"})]}),e.children]})})}var Nr={skipIsActiveMemberCheck:!0};function gr(e){var t=e.disabled,r=e.proposal.snapshotProposal,a=Object(oe.useState)(),s=Object(xe.a)(a,2),o=s[0],i=s[1],u=Object(oe.useState)(),d=Object(xe.a)(u,2),l=d[0],b=d[1],f=Object(oe.useRef)({notProposerMessage:""}),O=Object(c.c)((function(e){var t;return null===(t=e.contracts)||void 0===t?void 0:t.TributeContract})),p=Object(c.c)((function(e){return e.contracts.DaoRegistryContract})),h=Object(Ne.f)(),m=h.account,x=h.web3Instance,N=Object(Ne.a)(),g=N.txEtherscanURL,E=N.txIsPromptOpen,A=N.txSend,w=N.txStatus,I=Object(Ne.a)(),y=I.txEtherscanURL,C=I.txIsPromptOpen,D=I.txSend,S=I.txStatus,_=Object(pt.g)(Nr),k=_.isDisabled,T=_.openWhyDisabledModal,R=_.WhyDisabledModal,P=_.setOtherDisabledReasons,F=Object(Ne.b)().fast,L=Ye().daoTokenDetails,M=Object(c.b)(),B=w===vt.f.AWAITING_CONFIRM||w===vt.f.PENDING||S===vt.f.AWAITING_CONFIRM||S===vt.f.PENDING,G=w===vt.f.FULFILLED,U=B||G||E||C,V=k||U||t,W=Object(oe.useCallback)((function(){return Y.apply(this,arguments)}),[O,null===p||void 0===p?void 0:p.contractAddress,r]);function Y(){return(Y=Object(We.a)(Ve.a.mark((function e(){var t,n,a;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,r&&O){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,O.instance.methods.proposals(null===p||void 0===p?void 0:p.contractAddress,r.idInDAO).call();case 5:t=e.sent,n=t.token,a=t.tributeAmount,b({tokenAddress:n,tributeAmount:a}),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(0),console.error(e.t0),b(void 0);case 14:case"end":return e.stop()}}),e,null,[[0,10]])})))).apply(this,arguments)}function H(){return K.apply(this,arguments)}function K(){return(K=Object(We.a)(Ve.a.mark((function e(){var t,r,a,c,s,o,i,u,d,b,j,f,p;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,l){e.next=3;break}throw new Error("No Tribute proposal details found.");case 3:if(O){e.next=5;break}throw new Error("No TributeContract found.");case 5:if(m){e.next=7;break}throw new Error("No account found.");case 7:if(x){e.next=9;break}throw new Error("No Web3 instance was found.");case 9:return t=l.tokenAddress,r=l.tributeAmount,e.next=12,Promise.resolve().then(n.t.bind(null,459,3));case 12:return a=e.sent,c=a.default,s=c,o=new x.eth.Contract(s,t),e.next=18,o.methods.allowance(m,O.contractAddress).call();case 18:if(i=e.sent,u=Object(Qt.toBN)(r),d=Object(Qt.toBN)(i),!u.gt(d)){e.next=34;break}return e.prev=22,b=u.sub(d),j=d.add(b),f=[O.contractAddress,j.toString()],p=Object(v.a)({from:m||""},F?{gasPrice:F}:null),e.next=29,D("approve",o.methods,f,p);case 29:e.next=34;break;case 31:throw e.prev=31,e.t0=e.catch(22),e.t0;case 34:e.next=39;break;case 36:throw e.prev=36,e.t1=e.catch(0),e.t1;case 39:case"end":return e.stop()}}),e,null,[[0,36],[22,31]])})))).apply(this,arguments)}function z(){return(z=Object(We.a)(Ve.a.mark((function e(){var t,n;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,p){e.next=3;break}throw new Error("No DAO Registry contract was found.");case 3:if(r){e.next=5;break}throw new Error("No Snapshot proposal was found.");case 5:if(O){e.next=7;break}throw new Error("No TributeContract found.");case 7:if(m){e.next=9;break}throw new Error("No account found.");case 9:if(x){e.next=11;break}throw new Error("No Web3 instance was found.");case 11:return e.next=13,H();case 13:return t=[p.contractAddress,r.idInDAO],n=Object(v.a)({from:m||""},F?{gasPrice:F}:null),e.next=17,A("processProposal",O.instance.methods,t,n);case 17:if(!e.sent){e.next=24;break}return e.next=21,M(Object(j.A)({account:m,daoRegistryContract:p,web3Instance:x}));case 21:if(m.toLowerCase()!==r.msg.payload.metadata.submitActionArgs[0].toLowerCase()){e.next=24;break}return e.next=24,q();case 24:e.next=29;break;case 26:e.prev=26,e.t0=e.catch(0),i(e.t0);case 29:case"end":return e.stop()}}),e,null,[[0,26]])})))).apply(this,arguments)}function q(){return J.apply(this,arguments)}function J(){return(J=Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(L){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,window.ethereum.request({method:"wallet_watchAsset",params:{type:"ERC20",options:L}});case 5:e.next=10;break;case 7:e.prev=7,e.t0=e.catch(2),console.log(e.t0);case 10:case"end":return e.stop()}}),e,null,[[2,7]])})))).apply(this,arguments)}return Object(oe.useEffect)((function(){W()}),[W]),Object(oe.useEffect)((function(){var e=r.msg.payload.metadata.accountAuthorizedToProcessPassedProposal;e&&m&&(f.current=Object(v.a)(Object(v.a)({},f.current),{},{notProposerMessage:e.toLowerCase()!==m.toLowerCase()?"Only the original proposer can process the proposal.":""})),P(Object.values(f.current))}),[m,P,r]),Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsxs)("div",{children:[Object(ue.jsx)("button",{className:"proposaldetails__button",disabled:V,onClick:V?function(){}:function(){return z.apply(this,arguments)},children:B?Object(ue.jsx)(At.a,{}):G?"Done":"Process"}),Object(ue.jsx)(Nt.a,{error:o,renderText:"Something went wrong"}),U&&Object(ue.jsx)("div",{className:"form__submit-status-container",children:function(){if(S===vt.f.AWAITING_CONFIRM)return Object(ue.jsxs)(ue.Fragment,{children:["Confirm to transfer your tokens",Object(ue.jsx)(kt.a,{})]});if(S===vt.f.PENDING)return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsxs)("div",{children:["Approving your tokens for transfer",Object(ue.jsx)(kt.a,{})]}),Object(ue.jsx)(Rt.a,{url:y,isPending:!0})]});switch(w){case vt.f.AWAITING_CONFIRM:return Object(ue.jsxs)(ue.Fragment,{children:["Confirm to process the proposal",Object(ue.jsx)(kt.a,{})]});case vt.f.PENDING:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)(Tt.a,{intervalMs:2e3,messages:_t.b,useFirstItemStart:!0,render:function(e){return Object(ue.jsx)(Ge.a,{children:e},e)}}),Object(ue.jsx)(Rt.a,{url:g,isPending:!0})]});case vt.f.FULFILLED:return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)("div",{children:"Proposal submitted!"}),Object(ue.jsx)(Rt.a,{url:g})]});default:return null}}()}),k&&Object(ue.jsx)("button",{className:"button--help-centered",onClick:T,children:"Why is processing disabled?"})]}),Object(ue.jsx)(R,{title:"Why is processing disabled?"})]})}var Er="\u2014";function Ar(){var e=Object(se.h)().proposalId,t=Object(Yt.d)(e),n=t.proposalData,r=t.proposalError,a=t.proposalNotFound,c=t.proposalStatus,s=Object(Ne.d)().defaultChainError,o=r||s;function i(e){var t=e.OffchainVotingContract,n=t.daoProposalVoteResult,r=t.proposal,a=t.status;if(a===Wt.c.Submit){var c=r.snapshotDraft,s=null===c||void 0===c?void 0:c.msg.payload.metadata.submitActionArgs[0];return Object(ue.jsx)(rr.a,{checkApplicant:s,proposal:r})}return a===Wt.c.Process||a===Wt.c.OffchainVotingGracePeriod?n&&Kn.b[n]!==Kn.b[Kn.b.PASS]?Object(ue.jsx)(ue.Fragment,{}):Object(ue.jsx)(gr,{disabled:a===Wt.c.OffchainVotingGracePeriod,proposal:r}):null}if(c===ge.a.PENDING&&!o)return Object(ue.jsx)(wr,{children:Object(ue.jsx)("div",{className:"loader--large-container",children:Object(ue.jsx)(On.a,{})})});if(a)return Object(ue.jsx)(wr,{children:Object(ue.jsx)(pn,{})});if(o)return Object(ue.jsx)(wr,{children:Object(ue.jsx)("div",{className:"text-center",children:Object(ue.jsx)(Nt.a,{error:o,renderText:"Something went wrong."})})});if(n){var u=n.getCommonSnapshotProposalData(),d=Er,l="",b=Er,j="";try{var f=null===u||void 0===u?void 0:u.msg.payload.metadata.proposalAmountValues;d=f.tributeAmount,l=f.tributeAmountUnit,b=f.requestAmount,j=f.requestAmountUnit}catch(o){d=Er,l="",b=Er,j=""}return Object(ue.jsx)(wr,{children:Object(ue.jsx)(hn,{proposal:n,renderAmountBadge:function(){return Object(ue.jsx)(ar,{amount:d,amountUnit:l,amount2:b,amount2Unit:j})},renderActions:function(){return Object(ue.jsx)(nr,{adapterName:vt.a.tribute,proposal:n,renderAction:i})}})})}return Object(ue.jsx)(ue.Fragment,{})}function wr(e){var t=Object(se.f)();return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsxs)("div",{className:"titlebar",children:[Object(ue.jsx)("h2",{className:"titlebar__title",children:"Tributes"}),Object(ue.jsx)("button",{className:"titlebar__action",onClick:function(e){e.preventDefault(),t.push("/tributes")},children:"View all"})]}),e.children]})})}function Ir(){return Object(ue.jsx)(yr,{children:Object(ue.jsx)(qn,{adapterName:rt.a.TRIBUTE,proposalLinkPath:function(e){return"/tributes/".concat(e)},includeProposalsExistingOnlyOffchain:!0})})}function yr(e){var t=Object(se.f)();return Object(ue.jsx)(Mt,{className:"section-wrapper",children:Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsxs)("div",{className:"titlebar",children:[Object(ue.jsx)("h2",{className:"titlebar__title",children:"Tributes"}),Object(ue.jsx)("button",{className:"titlebar__action",onClick:function(e){e.preventDefault(),t.push("/tribute")},children:"Provide Tribute"})]}),e.children]})})}var Cr,Dr=":proposalId";function Sr(){return Object(ue.jsx)(se.c,{children:[Object(ue.jsx)(se.a,{exact:!0,path:"/",render:function(){return Object(ue.jsx)(bn,{})}},"splash"),Object(ue.jsx)(se.a,{exact:!0,path:"/join",render:function(){return Object(ue.jsx)($t,{})}},"join"),Object(ue.jsx)(se.a,{exact:!0,path:"/membership",render:function(){return Object(ue.jsx)(Jn,{})}},"membership"),Object(ue.jsx)(se.a,{exact:!0,path:"/membership/".concat(Dr),render:function(){return Object(ue.jsx)(cr,{})}},"membership-details"),Object(ue.jsx)(se.a,{exact:!0,path:"/transfer",render:function(){return Object(ue.jsx)(rn,{})}},"transfer"),Object(ue.jsx)(se.a,{exact:!0,path:"/transfers",render:function(){return Object(ue.jsx)(vr,{})}},"transfers"),Object(ue.jsx)(se.a,{exact:!0,path:"/transfers/".concat(Dr),render:function(){return Object(ue.jsx)(hr,{})}},"transfer-details"),Object(ue.jsx)(se.a,{exact:!0,path:"/tribute",render:function(){return Object(ue.jsx)(cn,{})}},"tribute"),Object(ue.jsx)(se.a,{exact:!0,path:"/tributes",render:function(){return Object(ue.jsx)(Ir,{})}},"tributes"),Object(ue.jsx)(se.a,{exact:!0,path:"/tributes/".concat(Dr),render:function(){return Object(ue.jsx)(Ar,{})}},"tribute-details"),Object(ue.jsx)(se.a,{exact:!0,path:"/governance-proposal",render:function(){return Object(ue.jsx)(zt,{})}},"governance-proposal"),Object(ue.jsx)(se.a,{exact:!0,path:"/governance",render:function(){return Object(ue.jsx)(In,{})}},"governance-proposals"),Object(ue.jsx)(se.a,{exact:!0,path:"/governance/".concat(Dr),render:function(){return Object(ue.jsx)(mn,{})}},"governance-proposal-details"),Object(ue.jsx)(se.a,{exact:!0,path:"/members",render:function(){return Object(ue.jsx)(Wn,{})}},"members"),Object(ue.jsx)(se.a,{exact:!0,path:"/members/:ethereumAddress",render:function(){return Object(ue.jsx)(Gn,{})}},"member-profile"),Object(ue.jsx)(se.a,{exact:!0,path:"/dao-manager",render:function(){return Object(ue.jsx)(Bt,{})}},"dao-manager"),Object(ue.jsx)(se.a,{exact:!0,path:"/redeem",render:function(){return Object(ue.jsx)(fr,{})}},"redeem"),Object(ue.jsx)(se.a,{component:pn},"no-match")]})}function _r(e){var t=Object(se.g)().pathname,n=(e||{}).renderMainContent,r=Object(ue.jsx)("main",{children:n?n():Object(ue.jsx)(Sr,{})});return Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)(Ie,{}),"/"===t?Object(ue.jsx)(ue.Fragment,{children:r}):Object(ue.jsxs)(ue.Fragment,{children:[Object(ue.jsx)(tt,{}),r,Object(ue.jsx)(ve,{})]}),Object(ue.jsx)(Ae,{})]})}function kr(e){var t=e.render,n=Object(c.c)((function(e){return e.contracts.DaoRegistryContract})),r=Object(oe.useState)(),a=Object(xe.a)(r,2),s=a[0],o=a[1],i=Object(oe.useState)(!1),u=Object(xe.a)(i,2),d=u[0],l=u[1],f=Object(oe.useState)(Object(nt.a)({},Cr.initSnapshotAPI,ge.a.STANDBY)),O=Object(xe.a)(f,2),p=O[0],h=O[1],m=Object(Ne.f)(),x=m.account,N=m.web3Instance,g=Object(Ne.d)().isDefaultChain,E=Object(pt.f)().isMountedRef,A=Object(Ne.c)(),w=Object(c.b)(),I=Object(oe.useCallback)((function(){return S.apply(this,arguments)}),[A,g,N]),y=Object(oe.useCallback)((function(){return _.apply(this,arguments)}),[x,n,w,g,N]),C=Object(oe.useCallback)((function(){return D.apply(this,arguments)}),[E]);function D(){return(D=Object(We.a)(Ve.a.mark((function e(){var t;return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,b.C){e.next=3;break}throw new Error("No Snapshot Hub API URL was found.");case 3:return e.next=5,Object(Vt.getApiStatus)(b.C);case 5:if(t=e.sent,t.data.version){e.next=9;break}throw new Error("Snapshot API is not ready.");case 9:if(E.current){e.next=11;break}return e.abrupt("return");case 11:h((function(e){return Object(v.a)(Object(v.a)({},e),{},Object(nt.a)({},Cr.initSnapshotAPI,ge.a.FULFILLED))})),e.next=19;break;case 14:if(e.prev=14,e.t0=e.catch(0),E.current){e.next=18;break}return e.abrupt("return");case 18:o(new Error("Snapshot API is not responding."));case 19:case"end":return e.stop()}}),e,null,[[0,14]])})))).apply(this,arguments)}function S(){return(S=Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,g&&N){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,A({web3Instance:N});case 5:e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),o(e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))).apply(this,arguments)}function _(){return(_=Object(We.a)(Ve.a.mark((function e(){return Ve.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,x&&n&&g&&N){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,w(Object(j.A)({account:x,daoRegistryContract:n,web3Instance:N}));case 5:e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),o(e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))).apply(this,arguments)}return Object(oe.useEffect)((function(){l(Object.values(p).every((function(e){return e===ge.a.FULFILLED})))}),[p]),Object(oe.useEffect)((function(){I()}),[I,N]),Object(oe.useEffect)((function(){y()}),[y]),Object(oe.useEffect)((function(){C()}),[C]),t({error:s,isInitComplete:d})}function Tr(e){var t=e.error;return Object(ue.jsxs)(Ge.a,{children:[Object(ue.jsx)("div",{style:{padding:"2em 1em 1em",textAlign:"center"},children:Object(ue.jsxs)("h1",{style:{fontSize:"2rem"},children:[Object(ue.jsx)("span",{className:"pulse",role:"img","aria-label":"Emoji with eyes crossed out.",style:{display:"inline-block"},children:"\ud83d\ude35"})," ","Oops, something went wrong."]})}),Object(ue.jsx)("div",{style:{textAlign:"center",maxWidth:600,display:"block",margin:"0 auto"},children:Object(ue.jsx)(Nt.a,{error:t,renderText:""})})]})}!function(e){e.initSnapshotAPI="initSnapshotAPI"}(Cr||(Cr={}));var Rr=function(e){e&&e instanceof Function&&n.e(10).then(n.bind(null,974)).then((function(t){var n=t.getCLS,r=t.getFID,a=t.getFCP,c=t.getLCP,s=t.getTTFB;n(e),r(e),a(e),c(e),s(e)}))},Pr=n(212),Fr=(n(919),document.getElementById("root"));"production"===b.m&&Object(f.b)(),window.ethereum&&window.ethereum.autoRefreshOnNetworkChange&&(window.ethereum.autoRefreshOnNetworkChange=!1);var Lr=function(e){return new i.a({link:Object(u.concat)(Object(O.e)(e),new d.a({uri:function(e){var t=e.operationName;return"".concat(b.s,"?").concat(t)}})),cache:new l.a({typePolicies:{Adapter:{fields:{adapters:{merge:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return[].concat(Object(r.a)(e),Object(r.a)(t))}}}},Extension:{fields:{extensions:{merge:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return[].concat(Object(r.a)(e),Object(r.a)(t))}}}}}})})};null!==Fr&&Object(a.render)(Object(ue.jsx)(c.a,{store:ce,children:Object(ue.jsx)(s.a,{children:Object(ue.jsx)(Pr.b,{onBeforeDisconnect:function(){ce.dispatch(Object(j.w)()),ce.dispatch(Object(j.x)())},onBeforeConnect:function(){ce.dispatch(Object(j.x)())},providerOptions:b.J,children:Object(ue.jsx)(o.a,{client:Lr(ce),children:Object(ue.jsx)(kr,{render:function(e){var t=e.error,n=e.isInitComplete;return t?Object(ue.jsx)(_r,{renderMainContent:function(){return Object(ue.jsx)(Tr,{error:t})}}):n?Object(ue.jsx)(_r,{}):null}})})})})}),Fr),Rr()},96:function(e,t,n){"use strict";var r;n.d(t,"a",(function(){return r})),function(e){e.OK="OK",e.ERR="ERR"}(r||(r={}))}},[[923,4,5]]]);
-//# sourceMappingURL=main.79313368.chunk.js.map
\ No newline at end of file
diff --git a/static/js/main.79313368.chunk.js.map b/static/js/main.79313368.chunk.js.map
deleted file mode 100644
index 1bb93d9ca..000000000
--- a/static/js/main.79313368.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["components/web3/hooks/useWeb3Modal.ts","assets/svg/TimesSVG.tsx","config.ts","util/helpers/chooseRandom.ts","util/helpers/disableReactDevTools.ts","util/helpers/dontCloseWindowWarning.ts","util/helpers/formatDecimal.ts","util/helpers/formatNumber.ts","util/helpers/getTimeRemaining.ts","util/helpers/getValidationError.ts","util/helpers/normalizeString.ts","util/helpers/isPossibleContractWallet.ts","util/helpers/numberRangeArray.ts","util/helpers/stripFormatNumber.ts","components/proposals/voting/OffchainOpRollupVotingSubmitResultAction.tsx","components/proposals/voting/OffchainVotingAction.tsx","components/proposals/ProposalPeriodCountdown.tsx","assets/svg/StopwatchSVG.tsx","components/proposals/voting/VotingStatus.tsx","components/proposals/voting/OffchainVotingStatus.tsx","assets/svg/CheckSVG.tsx","components/proposals/voting/SquareRootVotingBar.tsx","components/proposals/voting/VotingActionButtons.tsx","components/web3/hooks/useContractSend.ts","components/web3/hooks/useETHGasPrice.ts","components/web3/hooks/useInitContracts.ts","components/web3/hooks/useIsDefaultChain.ts","components/web3/hooks/useMaybeContractWallet.ts","components/common/Modal.tsx","hooks/useRedeemCoupon.ts","components/adapters-extensions/enums.ts","store/connectedMember/actions.ts","store/connectModal/actions.ts","components/web3/hooks/useWeb3ModalManager.ts","store/contracts/actions.ts","util/helpers/truncateEthAddress.ts","components/web3/helpers/getExtensionAddress.ts","store/subgraphNetworkStatus/actions.ts","components/feedback/CycleEllipsis.tsx","components/proposals/SubmitAction.tsx","components/web3/Web3ModalManager.tsx","components/common/FadeIn.tsx","components/common/ErrorMessageWithDetails.tsx","components/web3/helpers/contractSend.ts","components/web3/helpers/getAdapterAddress.ts","components/web3/helpers/getAdapterAddressFromContracts.ts","components/web3/helpers/getDaoState.ts","components/web3/helpers/getContractByAddress.ts","components/web3/helpers/getDAOConfigEntry.ts","components/web3/helpers/getVotingAdapterName.ts","components/web3/helpers/hasFlag.ts","components/web3/helpers/multicall.ts","util/enums.ts","hooks/useAbortController.ts","hooks/useCounter.ts","hooks/useDao.ts","hooks/useDaoConfigurations.ts","hooks/useDaoTotalUnits.ts","hooks/useIsMounted.ts","hooks/useMemberActionDisabled.tsx","hooks/useMemberUnitsAtSnapshot.ts","hooks/useTimeStartEnd.ts","components/proposals/types.ts","components/feedback/Loader.tsx","components/proposals/voting/types.ts","components/web3/WalletIcon.tsx","components/proposals/hooks/useCheckApplicant.ts","components/proposals/hooks/useDaoProposals.ts","components/proposals/hooks/useOffchainVotingResults.ts","components/proposals/hooks/useProposalsVotingAdapter.ts","components/proposals/hooks/useProposalOrDraft.ts","components/proposals/hooks/useProposals.ts","components/proposals/hooks/useProposalsVotes.ts","components/proposals/hooks/useProposalsVotingState.ts","components/proposals/hooks/useProposalWithOffchainVoteStatus.ts","components/proposals/hooks/useSignAndSendVote.ts","components/proposals/hooks/useSignAndSubmitProposal.ts","components/web3/EtherscanURL.tsx","components/proposals/helpers/calculateVotingTimeRanges.ts","components/proposals/helpers/getOffchainVotingProof.ts","components/proposals/helpers/getVoteChosen.ts","components/proposals/helpers/getVotingAdapterABI.ts","components/proposals/helpers/proposalHasFlag.ts","components/proposals/helpers/proposalHasVotingState.ts","components/proposals/helpers/submitOffchainVotingProof.ts","util/constants.ts","components/web3/config.ts","components/feedback/index.ts","components/feedback/CycleMessage.tsx","components/web3/types.ts","components/feedback/LoaderLarge.tsx","util/validation.ts","util/types.ts","gql/queryDao.ts","gql/queryAdaptersAndExtensions.ts","gql/queryMembers.ts","gql/queryTokenHolderBalances.ts","gql/handleSubgraphError.ts","store/connectedMember/reducers.ts","store/connectModal/reducers.ts","store/contracts/reducers.ts","store/subgraphNetworkStatus/reducers.ts","store/reducers.ts","store/index.ts","assets/svg/DiscordSVG.tsx","components/common/SocialMedia.tsx","assets/svg/GitHubSVG.tsx","assets/svg/MediumSVG.tsx","components/Footer.tsx","GlobalConnectWalletModal.tsx","Head.tsx","components/logo/Logo.tsx","components/logo/index.tsx","assets/svg/HamburgerSVG.tsx","components/web3/Web3ModalButton.tsx","components/dao-token/hooks/useDaoTokenDetails.ts","components/dao-token/DaoTokenHolder.tsx","components/dao-token/hooks/useTokenHolderBalances.ts","components/Nav.tsx","components/Header.tsx","components/adapters-extensions/helpers.ts","components/adapters-extensions/config.ts","components/adapters-extensions/hooks/useAdaptersOrExtensions.ts","components/adapters-extensions/hooks/useValidation.ts","components/adapters-extensions/AdapterOrExtensionSelectTarget.tsx","components/common/InputError.tsx","components/adapters-extensions/ConfigurationForm.tsx","components/adapters-extensions/ConfigurationModal.tsx","components/common/Checkbox.tsx","components/adapters-extensions/FinalizeModal.tsx","components/adapters-extensions/AdapterOrExtensionManager.tsx","components/common/Wrap.tsx","components/adapters-extensions/hooks/useInitAdapterExtensionContracts.ts","pages/governance/CreateGovernanceProposal.tsx","components/common/PreviewInputMarkdown.tsx","pages/membership/CreateMembershipProposal.tsx","pages/transfers/CreateTransferProposal.tsx","pages/tributes/CreateTributeProposal.tsx","pages/start/GetStarted.tsx","components/governance/GovernanceActions.tsx","pages/subpages/NotFound.tsx","components/proposals/ProposalDetails.tsx","pages/governance/GovernanceProposalDetails.tsx","components/proposals/ProposalCard.tsx","components/governance/GovernanceProposalsList.tsx","components/governance/hooks/useGovernanceProposals.ts","pages/governance/GovernanceProposals.tsx","pages/members/hooks/useMembers.ts","pages/members/Delegation.tsx","assets/svg/CopySVG.tsx","assets/svg/WalletSVG.tsx","components/dao-token/DaoToken.tsx","assets/svg/UserSVG.tsx","pages/members/MemberProfile.tsx","pages/members/MemberCard.tsx","pages/members/Members.tsx","components/proposals/Proposals.tsx","pages/membership/Membership.tsx","components/proposals/ProcessActionMembership.tsx","components/proposals/ProposalActions.tsx","components/proposals/ProposalAmount.tsx","pages/membership/MembershipDetails.tsx","components/feedback/LoaderWithEmoji.tsx","pages/redeem/RedeemManager.tsx","pages/redeem/Redeem.tsx","components/proposals/PostProcessActionTransfer.tsx","pages/transfers/TransferDetails.tsx","pages/transfers/Transfers.tsx","components/proposals/ProcessActionTribute.tsx","pages/tributes/TributeDetails.tsx","pages/tributes/Tributes.tsx","Routes.tsx","Init.tsx","App.tsx","InitError.tsx","reportWebVitals.ts","index.tsx","store/subgraphNetworkStatus/types.ts"],"names":["useWeb3Modal","useContext","Web3ModalContext","TimesSVG","xmlns","viewBox","fill","d","dotenvConfig","path","resolve","__dirname","process","REACT_APP_DAO_REGISTRY_CONTRACT_ADDRESS","REACT_APP_DEFAULT_CHAIN_NAME_LOCAL","REACT_APP_ENVIRONMENT","REACT_APP_GRAPH_API_URL","REACT_APP_INFURA_PROJECT_ID_DEV","REACT_APP_INFURA_PROJECT_ID_LOCAL","REACT_APP_INFURA_PROJECT_ID_PROD","REACT_APP_MULTICALL_CONTRACT_ADDRESS","REACT_APP_SNAPSHOT_HUB_API_URL","REACT_APP_COUPON_API_URL","REACT_APP_SNAPSHOT_SPACE","ENVIRONMENT","SNAPSHOT_HUB_API_URL","COUPON_API_URL","GRAPH_API_URL","CHAINS","MAINNET","ROPSTEN","RINKEBY","GOERLI","KOVAN","GANACHE","CHAIN_NAME_FULL","DEFAULT_CHAIN","ETHERSCAN_URLS","INFURA_WS_URLS","INFURA_PROJECT_ID","ETHEREUM_PROVIDER_URL","WALLETCONNECT_PROVIDER_OPTIONS","injected","display","name","description","package","walletconnect","WalletConnectProvider","options","infuraId","qrcodeModalOptions","mobileLinks","isMobile","DAO_REGISTRY_CONTRACT_ADDRESS","DAO_FACTORY_CONTRACT_ADDRESS","BANK_FACTORY_CONTRACT_ADDRESS","VOTING_CONTRACT_ADDRESS","CONFIGURATION_CONTRACT_ADDRESS","RAGEQUIT_CONTRACT_ADDRESS","MANAGING_CONTRACT_ADDRESS","FINANCING_CONTRACT_ADDRESS","ONBOARDING_CONTRACT_ADDRESS","GUILDKICK_CONTRACT_ADDRESS","DAO_REGISTRY_ADAPTER_CONTRACT_ADDRESS","BANK_ADAPTER_CONTRACT_ADDRESS","NFT_ADAPTER_CONTRACT_ADDRESS","COUPONONBOARDING_CONTRACT_ADDRESS","TRIBUTE_CONTRACT_ADDRESS","DISTRIBUTE_CONTRACT_ADDRESS","TRIBUTE_NFT_CONTRACT_ADDRESS","OFFCHAINVOTING_CONTRACT_ADDRESS","MULTICALL_CONTRACT_ADDRESS","GUILD_ADDRESS","TOTAL_ADDRESS","UNITS_ADDRESS","MEMBER_COUNT_ADDRESS","ETH_TOKEN_ADDRESS","SPACE","GQL_QUERY_POLLING_INTERVAL","chooseRandom","array","doNotChooseItem","arrayToUse","undefined","filter","a","Math","floor","random","length","disableReactDevTools","noop","DEV_TOOLS","window","__REACT_DEVTOOLS_GLOBAL_HOOK__","Object","entries","key","value","dontCloseWindowWarning","callback","event","preventDefault","returnValue","addEventListener","removeEventListener","formatDecimal","n","toFixed","formatNumber","regEx","RegExp","toString","replace","DEFAULT_REMAINING","days","hours","minutes","seconds","total","getTimeRemaining","endTime","nowDate","Date","getTime","getValidationError","field","errors","message","normalizeString","stringToNormalize","toLowerCase","trim","isPossibleContractWallet","address","provider","getCode","bytecode","addressIsExernallyOwnedAccount","numberRangeArray","size","startAt","adjustedSize","Array","map","_","i","stripFormatNumber","OffchainOpRollupVotingSubmitResultAction","props","adapterName","proposal","daoProposalVotingAdapter","snapshotProposal","useState","Web3TxStatus","STANDBY","signatureStatus","setSignatureStatus","submitError","setSubmitError","bankExtensionAddress","useSelector","s","contracts","BankExtensionContract","contractAddress","bankExtensionMethods","instance","methods","getPriorAmountABI","abi","find","ai","daoRegistryAddress","DaoRegistryContract","getMemberAddressABI","account","web3Instance","useContractSend","txEtherscanURL","txIsPromptOpen","txSend","txStatus","useMemberActionDisabled","isDisabled","openWhyDisabledModal","WhyDisabledModal","fastGasPrice","useETHGasPrice","fast","votingAdapterMethods","getWeb3VotingAdapterContract","isInProcess","AWAITING_CONFIRM","PENDING","isDone","FULFILLED","isInProcessOrDone","Error","votes","proposalHash","idInDAO","snapshot","msg","payload","adapterAddress","getAdapterAddressFromContracts","getPriorAmount","call","numberOfDAOMembersAtSnapshot","getMemberAddressCalls","Number","memberIndex","multicall","calls","memberAddresses","memberBalanceCalls","m","memberBalancesAtSnapshot","memberAddress","voteData","values","v","metadata","createVote","proposalId","sig","timestamp","voteYes","choice","VoteChoicesIndex","Yes","weight","prepareVoteResult","actionId","chainId","daoAddress","voteResultTree","result","voteResultTreeHexRoot","getHexRoot","resultNodeLast","getBadNodeError","getBadNodeErrorResponse","BadNodeError","OK","getVoteResultRootDomainDefinition","domain","types","messageParams","JSON","stringify","root","primaryType","PRIMARY_TYPE_ERC712","signMessage","signature","getOffchainVotingProof","merkle_root","submitOffchainVotingProof","steps","merkleRoot","verifyingContract","submitVoteResultArguments","txArguments","from","gasPrice","REJECTED","className","disabled","onClick","Loader","ErrorMessageWithDetails","error","renderText","CycleMessage","intervalMs","messages","TX_CYCLE_MESSAGES","useFirstItemStart","render","FadeIn","EtherscanURL","url","isPending","renderSubmitStatus","title","AsyncStatus","OffchainVotingAction","refetchProposalOrDraft","voteChoiceClicked","setVoteChoiceClicked","votingDisabledReasonsRef","useRef","addressIsDelegatedMessage","alreadyVotedMessage","fetchingMembershipAtSnapshotMessage","noMembershipAtSnapshotMessage","undeterminedMembershipAtSnapshotMessage","delegateAddress","connectedMember","delegateKey","isAddressDelegated","useSignAndSendVote","signAndSendVote","voteDataStatus","voteChosen","getVoteChosen","setOtherDisabledReasons","useMemberUnitsAtSnapshot","hasMembershipAtSnapshot","memberUnitsAtSnapshotError","memberUnitsAtSnapshotStatus","snapshotProposalId","idInSnapshot","isSubmitDisabled","voteChoiceProgress","VoteChoices","partialVoteData","proposalIdInDAO","proposalIdInSnapshot","setDisabledReasonHelper","current","useEffect","truncateEthAddress","VotingActionButtons","buttonProps","voteProgress","displayCountdown","countdownFrom","renderCountdownText","showDaysOnly","renderedCountdownText","formatTimePeriod","format","time","period","formattedPeriod","ProposalPeriodCountdown","endedLabel","endLabel","endPeriodMs","startLabel","startPeriodMs","currentDate","setCurrentDate","startDate","endDate","interval","setInterval","clearInterval","StopwatchSVG","width","height","version","id","stroke","strokeWidth","fillRule","xlinkHref","VotingStatus","hasVotingEnded","noUnits","renderStatus","renderTimer","showPercentages","totalUnits","yesUnits","renderedStatus","role","SquareRootVotingBar","votingExpired","gracePeriodLabel","cycleEllipsisFadeInProps","duration","OffchainVotingStatus","countdownGracePeriodEndMs","countdownGracePeriodStartMs","countdownVotingEndMs","countdownVotingStartMs","onGracePeriodChange","onVotingPeriodChange","votingResult","useTimeStartEnd","hasTimeEnded","hasVotingStarted","hasTimeStarted","votingStartEndInitReady","timeStartEndInitReady","hasGracePeriodEnded","hasGracePeriodStarted","gracePeriodStartEndInitReady","isGracePeriodActive","No","units","didVotePassSimpleMajority","renderedStatusFromProp","ariaLabel","fadeInProps","ProposalPeriodComponent","CheckSVG","xmlnsXlink","getUnitsPercent","percentYes","percentNo","style","getButtonARIALabel","getButtonText","handleClick","renderVotedCheck","txError","setTxError","setTxEtherscanURL","setTxIsPromptOpen","txReceipt","setTxReceipt","setTxStatus","networkId","handleOnTxProcess","txHash","unsubscribeDontCloseWindow","contractSendParams","contractSend","receipt","convertGasToWEI","gasStationPrice","toWei","BigNumber","INITIAL_GAS_PRICES","average","fastest","safeLow","ignoreEnvironment","gasPrices","setGasPrices","gasPriceError","setGasPriceError","gasPriceStatus","setGasPriceStatus","useAbortController","abortController","isMountedRef","shouldExitIfNotProduction","signal","fetch","then","response","ok","json","jsonResponse","catch","abort","useInitContracts","dispatch","useDispatch","initContractDaoRegistry","initContractDaoFactory","initContractBankFactory","initContractConfiguration","initContractFinancing","initContractGuildKick","initContractManaging","initContractRagequit","initContractBankAdapter","initContractBankExtension","initContractOnboarding","initContractTribute","initContractDistribute","initRegisteredVotingAdapter","initContractTributeNFT","initContractNFTExtension","initContractNFTAdapter","initContractCouponOnboarding","initContractDaoRegistryAdapter","initContractERC20Extension","useCallback","useIsDefaultChain","connected","defaultChainError","setDefaultChainError","defaultChain","isDefaultChain","INITIAL_MAYBE_CONTRACT_WALLET_STATE","useMaybeContractWallet","web3Provider","maybeContractWallet","setMaybeContractWallet","useIsMounted","handleIsPossibleContractWalletCached","Web3Provider","Modal","children","isOpen","isOpenHandler","keyProp","modalClassNames","styleProps","ariaHideApp","onRequestClose","overlayClassName","overlay","zIndex","FetchStatus","useRedeemCoupon","daoRegistryContract","couponOnboardingContract","CouponOnboardingContract","submitStatus","setSubmitStatus","redeemableCoupon","erc20Details","applicantAddressToChecksum","toChecksumAddress","recipient","redeemCouponArguments","String","amount","nonce","method","body","headers","getConnectedMember","addTokenToWallet","ethereum","request","params","type","console","log","redeemCoupon","DaoAdapterConstants","DaoExtensionConstants","VotingAdapterName","SET_CONNECTED_MEMBER","CLEAR_CONNECTED_MEMBER","daoRegistryMethods","getAddressIfDelegatedABI","membersABI","isActiveMemberABI","getCurrentDelegateKeyABI","clearConnectedMember","addressIfDelegated","memberFlag","isActiveMember","currentDelegateKey","doesMemberExist","hasFlag","MemberFlag","EXISTS","BURN_ADDRESS","CONNECT_MODAL_CLOSE","CONNECT_MODAL_OPEN","connectModalClose","connectModalOpen","DefaultTheme","ActionType","Web3ModalErrorType","INITIAL_STATE","reducer","state","CONNECT_WEB3MODAL","DEACTIVATE_PROVIDER_WEB3MODAL","ERROR_WEB3MODAL","INITIAL_CACHED_CONNECTOR_CHECK_STATUS","initialCachedConnectorCheckStatus","NEW_WEB3MODAL","web3Modal","UPDATE_ACCOUNT","useWeb3ModalManager","defaultTheme","onBeforeConnect","onBeforeDisconnect","providerOptions","useReducer","web3ModalTheme","web3ModalChain","connectWeb3ModalCached","connectWeb3Modal","chainChangedCallbackCached","_chainIdHex","cachedProvider","accountsChangedCallback","connectorId","connectCallback","statusAction","connectTo","Web3","eth","getAccounts","net","getId","CONNECT","close","clearCachedProvider","DISCONNECT","on","removeListener","Web3Modal","cacheProvider","network","NetworkNames","NetworkIDs","theme","attemptUpdateFromCachedConnector","disconnectWeb3Modal","CLEAR_CONTRACTS","CONTRACT_BANK_ADAPTER","CONTRACT_BANK_EXTENSION","CONTRACT_BANK_FACTORY","CONTRACT_CONFIGURATION","CONTRACT_COUPON_ONBOARDING","CONTRACT_DAO_FACTORY","CONTRACT_DAO_REGISTRY","CONTRACT_DAO_REGISTRY_ADAPTER","CONTRACT_DISTRIBUTE","CONTRACT_ERC20_EXTENSION","CONTRACT_FINANCING","CONTRACT_GUILDKICK","CONTRACT_MANAGING","CONTRACT_NFT_ADAPTER","CONTRACT_NFT_EXTENSION","CONTRACT_ONBOARDING","CONTRACT_RAGEQUIT","CONTRACT_TRIBUTE","CONTRACT_TRIBUTE_NFT","CONTRACT_VOTING","CONTRACT_VOTING_OP_ROLLUP","clearContracts","lazyBankFactoryABI","default","bankFactoryContract","Contract","createContractAction","lazyDaoFactoryABI","daoFactoryContract","lazyDaoRegistryABI","initContractVoting","initContractThunkFactory","actionType","adapterOrExtensionName","ContractAdapterNames","voting","adapterNameForRedux","VotingContract","lazyImport","initContractVotingOpRollup","OffchainVotingContract","ONBOARDING","onboarding","BANK","ContractExtensionNames","bank","isExtension","TRIBUTE","tribute","DISTRIBUTE","distribute","MANAGING","managing","NFT","nft","DAO_REGISTRY","dao_registry","RAGEQUIT","ragequit","GUILDKICK","guildkick","FINANCING","financing","CONFIGURATION","configuration","TRIBUTE_NFT","tribute_nft","COUPON_ONBOARDING","coupon_onboarding","ERC20","erc20","getState","warn","votingAdapterName","getVotingAdapterName","getAdapterAddress","lazyABI","contractABI","getExtensionAddress","addr","maxLength","isEthAddressValid","firstSegment","substring","secondPart","extensionName","daoContractInstance","utils","sha3","SET_SUBGRAPH_NETWORK_STATUS","setSubgraphNetworkStatus","MESSAGES","rootStyles","position","nbspStyles","CycleEllipsis","fadeInPropsMerged","inline","upToIndex","setUpToIndex","intervalId","prevIndex","WEB3_TX_FULFILLED","defaultChoices","VOTE_CHOICES","SubmitAction","checkApplicant","snapshotDraft","choices","proposalChoices","proposalName","proposalBody","start","proposalStart","end","proposalEnd","proposalSnapshot","proposalTimestamp","proposalSig","snapshotProposalSubmitted","setSnapshotProposalSubmitted","proposalDataForDaoRef","space","actionDisabledReasonsRef","invalidApplicantMessage","useSignAndSubmitProposal","proposalSignAndSendStatus","signAndSendProposal","useCheckApplicant","checkApplicantError","checkApplicantInvalidMsg","checkApplicantStatus","isApplicantValid","contract","getContractByAddress","idForDAO","submitActionArgs","draftName","draftBody","draftMetadata","draftTimestamp","partialProposalData","SnapshotType","data","preparedVoteVerificationBytes","prepareVoteProposalData","parseInt","submitArguments","createContext","Web3ModalManager","DARK","defaultWeb3InstanceRef","providers","WebsocketProvider","defaultWeb3NetID","setDefaultWeb3NetID","web3ModalProviderArguments","currentProvider","web3ModalContext","Provider","defaultStyle","transition","opacity","transitionStyles","entering","entered","exiting","exited","appear","in","show","timeout","isExpanded","setIsExpanded","isWalletRejectedRequest","code","test","textToDisplay","areErrorMessageAndTextStringSame","detailsProps","cursor","outline","methodName","contractInstanceMethods","methodArguments","onProcess","Promise","reject","BN","estimateGas","gas","gastoBN","decimalPlaces","ROUND_DOWN","toNumber","send","getContractAddressOrThrow","DistributeContract","ManagingContract","OnboardingContract","TributeContract","TributeNFTContract","DaoState","c","getDAOConfigEntry","configKey","getConfiguration","getDaoState","CREATION","READY","lazyIVotingABI","getAdapterName","flagToCheck","daoProposalFlag","log2","blockNumber","lazyMulticallABI","multicallMethods","aggregate","encodeFunctionCall","returnData","hexString","outputsABIItem","outputs","decodedOutputs","decodeParameters","__length__","FormFieldErrors","ProposalHeaderNames","setAbortController","AbortController","initialState","count","action","useCounter","useDao","useLazyQuery","GET_DAO","variables","getDao","called","loading","dao","setDao","gqlError","setGqlError","getDaoRegistryCallback","tributeDaos","INITIAL_CONFIG_ENTRIES","useDaoConfigurations","configKeys","daoRegistryABI","daoConfigurations","setDaoConfigurations","daoConfigurationsStatus","setDaoConfigurationsStatus","daoConfigurationsError","setDaoConfigurationsError","getConfigurationABI","ck","handleGetConfigurations","useDaoTotalUnits","subgraphNetworkStatus","status","getDaoFromSubgraphResult","setTotalUnits","totalUnitsStatus","setTotalUnitsStatus","totalUnitsError","setTotalUnitsError","getTotalUnitsFromExtensionCached","getTotalUnitsFromSubgraphCached","balanceOf","SubgraphNetworkStatus","skipIsActiveMemberCheck","otherDisabledReasons","shouldShowWhyModal","setShouldShowWhyModal","otherReasonNext","r","disabledReason","getDisabledReason","canShowDisabledReason","WhyDisabledModalCached","handleSetOtherDisabledReasonsCached","otherReasons","Boolean","DEFAULT_POLL_INTERVAL_MS","pollUntilBlockInPast","block","blockOffset","pollInterval","blockOffsetCheck","currentBlock","abs","getBlockNumber","blockCheckOffset","currentBlockPollIntervalMs","memberUnitsAtSnapshot","setMemberUnitsAtSnapshot","setHasMembershipAtSnapshot","setMemberUnitsAtSnapshotError","setMemberUnitsAtSnapshotStatus","handleGetPriorUnitsAmountCached","isGreaterThan","areAllAsyncReady","asyncMapping","every","startSeconds","endSeconds","startEndStatusRef","setHasTimeStarted","setHasTimeEnded","setTimeStartEndInitReady","shouldNotCheck","intervalID","hasStartedCheck","now","hasEndedCheck","ceil","ProposalFlag","ProposalFlowStatus","DistributionStatus","SnapshotMetadataType","Spinner","showAfterMs","text","textProps","loaderProps","showLoaderAfterMs","setShowLoaderAfterMs","timeoutId","setTimeout","clearTimeout","VotingState","MetaMaskSVG","lazy","WalletConnectSVG","walletIconMap","WalletIcon","providerName","fallback","setCheckApplicantError","setCheckApplicantInvalidMsg","setCheckApplicantStatus","setIsApplicantValid","prevAddress","usePreviousDistinct","checkApplicantValidityCached","truncatedAddress","getIsNotReservedAddressABI","item","isNotReservedAddressCall","getIsNotZeroAddressABI","isNotZeroAddressCall","getGetAddressIfDelegatedABI","isNotReservedAddressResult","isNotZeroAddressResult","getAddressIfDelegatedResult","INITIAL_DAO_PROPOSAL_ENTRIES","useDaoProposals","proposalIds","proposalsAbi","registryAddress","daoProposals","setDaoProposals","daoProposalsStatus","setDaoProposalsStatus","daoProposalsError","setDaoProposalsError","safeProposalIds","isHexStrict","proposals","handleGetDaoProposals","useOffchainVotingResults","bankABI","bankAddress","votingResults","setVotingResults","offchainVotingResultsStatus","setOffchainVotingResultsStatus","offchainVotingResultsError","setOffchainVotingResultsError","getUnitsPerChoiceCached","voterAddressesAndChoices","percentage","results","totalUnitsCall","unitsCalls","totalUnitsResult","forEach","proposalsToMap","isArray","votingResultPromises","p","voterEntries","vote","keys","fromEntries","all","offchainVotingResults","INITIAL_VOTING_ADAPTERS","useProposalsVotingAdapter","registryABI","proposalsVotingAdapters","setProposalsVotingAdapters","proposalsVotingAdaptersError","setProposalsVotingAdaptersError","proposalsVotingAdaptersStatus","setProposalsVotingAdaptersStatus","getProposalsVotingAdaptersOnchainCached","votingAdapterABI","votingAdapterCalls","votingAdapterAddressResults","getAdapterNameABI","filteredProposalIds","_id","filteredVotingAdapterAddressResults","votingAdapterNameCalls","votingAdapterAddress","adapterNameResults","getVotingAdapterABI","votingAdaptersToSet","ERROR_PROPOSAL","ERROR_PROPOSAL_NOT_FOUND","useProposalOrDraft","daoProposal","setSnapshotDraft","setSnapshotProposal","proposalNotFound","setProposalNotFound","proposalError","setProposalError","proposalStatus","setProposalStatus","proposalVotingAdapterId","setProposalVotingAdapterId","proposalInclusiveStatus","setProposalInclusiveStatus","proposalInclusiveError","setProposalInclusiveError","refetchCount","updateRefetchCount","handleGetDraftCached","handleGetProposalCached","handleGetProposalOrDraftCached","snapshotType","draft","proposalData","getCommonSnapshotProposalData","responseJSON","idKey","erc712DraftHash","statuses","some","e","INITIAL_ARRAY","getSnapshotDraftsByAdapterAddress","baseURL","drafts","draftsJSON","draftEntries","sponsored","getSnapshotProposalsByAdapterAddress","proposalsJSON","proposalEntries","useProposals","includeProposalsExistingOnlyOffchain","setAdapterAddress","snapshotDraftAndProposals","setSnapshotDraftAndProposals","snapshotDraftAndProposalsStatus","setSnapshotDraftAndProposalsStatus","snapshotDraftAndProposalsError","setSnapshotDraftAndProposalsError","daoProposalIdsToUse","setDaoProposalIdsToUse","setProposals","proposalsInclusiveStatus","setProposalsInclusiveStatus","proposalsInclusiveError","setProposalsInclusiveError","useMemo","useProposalsVotingState","proposalsVotingState","proposalsVotingStateError","proposalsVotingStateStatus","proposalVotingAdapters","proposalsVotes","setProposalsVotes","proposalsVotesError","setProposalsVotesError","proposalsVotesStatus","setProposalsVotesStatus","getProposalsVotesOnchainCached","safeProposalVotingAdapters","getVotesDataABI","votesDataCalls","votesDataResults","offchainVotesDataABI","votingVotesDataABI","useProposalsVotes","snapshotDraftEntries","snapshotProposalEntries","mergedEntries","handleGetAllSnapshotDraftsAndProposals","flags","proposalsToSet","daoProposalId","snapshotId","snapshotDataId","snapshotData","isSnapshotDraft","proposalIdVotingAdapter","daoProposalVotingState","proposalIdVotingState","daoProposalVote","proposalIdVotes","proposalsError","proposalsStatus","setProposaslsVotingState","setProposalsVotingStateError","setProposalsVotingStateStatus","getProposalsVotingStateOnchainCached","votingResultAbi","proposalsVotingStateResult","Completed","OffchainVotingGracePeriod","OffchainVotingSubmitResult","OffchainVoting","Process","Sponsor","Submit","useProposalWithOffchainVoteStatus","countdownVotingEndSeconds","countdownVotingStartSeconds","useCountdownToCheckInVoting","setStatus","initComplete","setInitComplete","setDAOProposal","setDAOProposalVote","daoProposalVoteResult","setDAOProposalVoteResult","proposalFlowStatusError","setProposalFlowStatusError","pollingIntervalIdRef","stopPollingRef","initialAsyncChecksCompleted","atExistsInDAO","proposalHasFlag","atSponsoredInDAO","SPONSORED","atProcessedInDAO","PROCESSED","offchainVotingAddress","offchainVotingABI","offchainResultSubmitted","isAddress","reporter","isInVoting","IN_PROGRESS","isInVotingGracePeriod","GRACE_PERIOD","getStatusFromContractCached","proposalsABI","voteResultABI","voteABI","voteResult","handleStopPollingForStatus","isStatusInitial","stopPollingForStatus","setVoteData","voteDataError","setVoteDataError","setVoteDataStatus","getSpace","snapshotSpace","voteProposalData","token","buildVoteMessage","erc712Message","prepareVoteMessage","getDomainDefinition","dataToSign","submitMessage","dataToReturn","uniqueId","daoRegistryInstance","setProposalData","proposalSignAndSendError","setProposalSignAndSendError","setProposalSignAndSendStatus","buildProposalMessageHelper","commonData","ContractDAOConfigKeys","offchainVotingVotingPeriod","votingTimeSeconds","buildProposalMessage","buildDraftMessage","prepareDraftMessage","prepareProposalMessage","uniqueIdDraft","href","rel","target","calculateVotingTimeRanges","gracePeriodLength","gracePeriodStartingTime","votePeriodLength","voteStartingTime","MS_MULTIPLIER","gracePeriodStartMs","voteStartMs","voteEndMs","gracePeriodEndMs","merkleRootHex","voteEntry","ve","lazyOffchainVotingABI","lazyVotingABI","proposalHasVotingState","votingStateToCheck","votingState","INITIAL_ITEM","activeMessage","setActiveMessage","prevMessage","LoaderLarge","ethAddress","gql","GET_ADAPTERS_AND_EXTENSIONS","GET_MEMBERS","GET_TOKEN_HOLDER_BALANCES","handleSubgraphError","store","onError","networkError","ERR","setConnectedMemberReducer","clearConnectedMemberReducer","BankAdapterContract","BankFactoryContract","ConfigurationContract","DaoFactoryContract","DaoRegistryAdapterContract","ERC20ExtensionContract","FinancingContract","GuildBankContract","NFTAdapterContract","NFTExtensionContract","RagequitContract","contractBankFactory","contractDAOFactory","contractDAORegistry","contractDaoRegistryAdapter","contractBankExtension","contractConfiguration","contractDistribute","contractFinancing","contractGuildBank","contractOnboarding","contractRagequit","contractTribute","contractVoting","contractManaging","contractBankAdapter","contractNFTAdapter","contractTributeNFT","contractCouponOnboarding","contractNFTExtension","contractERC20Extension","combineReducers","connectModal","createStore","rootReducer","composeWithDevTools","applyMiddleware","thunk","DiscordSVG","transform","SocialMediaLinks","GitHubSVG","React","Component","MediumSVG","SocialMedia","MEDIUM","DISCORD","GITHUB","Footer","ConnectWalletModal","GlobalConnectWalletModal","isConnectModalOpen","modalProps","setModalProps","pathname","useLocation","prevState","Head","Helmet","content","Logo","ModalLogo","LeftLogo","CenterLogo","HamburgerSVG","ConnectWalletButton","customWalletText","showWalletETHBadge","isWrongNetwork","useDaoTokenDetails","daoTokenDetails","setDaoTokenDetails","daoTokenDetailsStatus","setDaoTokenDetailsStatus","daoTokenDetailsError","setDaoTokenDetailsError","getDaoTokenDetailsCached","symbol","decimals","image","location","origin","DaoTokenHolder","customStyles","badgeStyles","tokenHolder","setTokenHolder","tokenImageUrl","setTokenImageURL","tokenEtherscanURL","setTokenEtherscanURL","tokenHolderBalances","erc20ExtensionContract","tokenAddress","getTokenHolderBalances","startPolling","stopPolling","setTokenHolderBalances","getTokenBalanceCallback","tokens","pollingTimeoutId","useTokenHolderBalances","getTokenImageCallback","blob","reader","FileReader","onloadend","onerror","readAsDataURL","dataUrl","holders","holderData","holder","member","balance","src","alt","transitionOpeningStyles","right","transitionClosingStyles","NavLinks","tabIndex","to","NavHamburger","shouldShowMenuModal","setShouldShowMenuModal","setTransitionStyles","closeMenuRef","isCurrentMemberOrDelegateConnected","isCurrentMemberConnected","handleMenuModalClose","Transition","Nav","query","_matches","border","Header","RenderLogo","getAdapterOrExtensionId","getAccessControlLayer","acl","accessFlags","SUBMIT_PROPOSAL","PROCESS_PROPOSAL","SPONSOR_PROPOSAL","SET_CONFIGURATION","INTERNAL_TRANSFER","EXECUTION","NEW_MEMBER","ADD_TO_BALANCE","REGISTER_NEW_TOKEN","SUB_FROM_BALANCE","JAIL_MEMBER","UNJAIL_MEMBER","REMOVE_ADAPTER","ADD_ADAPTER","OFFCHAINVOTING","UPDATE_DELEGATE_KEY","NONVOTING_ONBOARDING","VOTING","WITHDRAW","UPDATE_TOKEN","COLLECT_NFT","WITHDRAW_NFT","ADAPTER_ACCESS_FLAGS","ADD_EXTENSION","REMOVE_EXTENSION","EXTENSION_ACCESS_FLAGS","TRANSFER_NFT","idx","reduce","b","entry","defaultAdaptersAndExtensions","adapterId","abiFunctionName","displayName","setAclToExtensionForAdapter","optionDefaultTarget","useAdaptersOrExtensions","adapterExtensionContracts","getRegisteredAdaptersAndExtensions","registeredAdaptersOrExtensions","setRegisteredAdaptersOrExtensions","unRegisteredAdaptersOrExtensions","setUnRegisteredAdaptersOrExtensions","adapterExtensionStatus","setAdapterExtensionStatus","getAdaptersAndExtensionsCached","registeredDaoAdapters","registeredDaoExtensions","registeredList","unRegisteredList","getAdapterFromGql","adapter","getExtensionFromGql","extensionId","extension","adapterOrExtension","gqlExtension","push","maybeSomeAdapters","maybeSomeExtensions","shouldSkip","option","gqlAdapter","adapters","extensions","getAdapterOrExtensionFromRedux","ae","ParamType","useValidation","isParamInputValid","paramInput","paramType","parameter","ADDRESS","checkAddressChecksum","isAddressValid","BYTES32","isHex","isBytes32Valid","BYTES32_ARRAY","split","isBytes32ArrayValid","UINT256","isNaN","isUint256Valid","UINT256_ARRAY","isUint256ArrayValid","getFormFieldError","INVALID_ETHEREUM_ADDRESS","INVALID_BYTES32","INVALID_BYTES32_ARRAY","INVALID_NUMBER","INVALID_NUMBER_ARRAY","REQUIRED","formatInputByType","inputValue","inputType","AdapterExtensionSelectTarget","defaultTarget","renderActions","renderCheckboxAction","selectedTargetOption","setSelectedTargetOption","selectedTargetOptionProps","setSelectedTargetOptionProps","onChange","selectedTargetProps","selectedOption","toUpperCase","renderDescription","InputError","restProps","ConfigurationForm","abiConfigurationInputs","abiMethodName","closeHandler","configureAdapterStatus","setConfigureAdapterStatus","removeStatus","setRemoveStatus","form","useForm","mode","reValidateMode","formState","getValues","setValue","register","trigger","configureAdapterError","isConnected","adapterOrExtensionText","isValid","isConfigureInProcess","isRemoveInProcess","isConfigureDone","isRemoveDone","isConfigureInProcessOrDone","isRemoveInProcessOrDone","removeExtensionArgument","removeAdapterArguments","adapterConfigArguments","abiInput","formattedValue","onSubmit","input","placeholder","ref","validate","handleSubmit","handleRemove","ConfigurationModal","configurationInputs","CheckboxSize","Checkbox","checked","htmlFor","SMALL","label","FinalizeModal","finalizeError","finalizeDao","WhyDisableModalTitles","Wrap","rest","AdapterOrExtensionManager","setABIMethodName","daoState","setDaoState","setIsDone","inputParameters","setInputParameters","openConfigureModal","setOpenConfigureModal","openFinalizeModal","setOpenFinalizeModal","selectAll","setSelectAll","selectionCount","setSelectionCount","selections","setSelections","configureAdapterOrExtension","setConfigureAdapterOrExtension","setIsInProcess","whyDisabledReason","setWhyDisabledReason","initAdapterExtensionContract","adapterExtensionName","useInitAdapterExtensionContracts","isDAOExisting","isDAOReady","isUnavailable","isLoading","nothingToAdd","checkDaoStateCached","finalizedMessage","daoRegistryState","handleAddAdapter","addAdapterOrExtension","handleAddExtension","adapterOrExtensionAddress","adapterOrExtensionType","adapterOrExtensionId","addAdapterOrExtensionArguments","txSendMethod","errorMessage","adaptersArguments","adapterContractAddress","contractAddressFromRedux","addAdaptersArguments","checkboxesSelection","inputs","RenderWrapper","scrollTo","top","left","behavior","LARGE","handleSelectTargetChange","handleConfigure","CONFIGURATION_REASON","FINALIZED_REASON","Fields","PreviewInputMarkdown","marginTop","CreateGovernanceProposal","history","useHistory","watch","Governance","required","CreateMembershipProposal","userAccountBalance","setUserAccountBalance","ethAddressValue","createMemberError","getUserAccountBalanceCached","getBalance","accountBalanceInWei","fromWei","ethAmount","ethAddressToChecksum","ethAmountInWei","proposerAddressToChecksum","proposalAmountValues","tributeAmount","tributeAmountUnit","accountAuthorizedToProcessPassedProposal","isInteger","CreateTransferProposal","daoTokens","setDaoTokens","selectedTokenBalance","setSelectedTokenBalance","isTypeAllMembers","selectedTokenValue","createTransferError","erc20ABI","ERC20ABI","getDaoTokensCached","getSelectedTokenBalanceCached","bankMethods","nbTokens","parsedAndSortedTokens","getTokenABI","getTokenCalls","index","fetchedTokens","balanceOfABI","getDaoTokenBalanceCalls","daoTokenBalances","tokensArray","daoBalance","tokenObj","toBN","gt","ethToken","erc20Tokens","nameABI","nameCalls","symbolABI","symbolCalls","decimalsABI","decimalsCalls","erc20DetailsCalls","chunkedResults","splice","names","symbols","parsedAndSortedERC20Tokens","sort","localeCompare","selectedTokenObj","parse","balanceBN","divisor","pow","beforeDecimal","div","afterDecimal","mod","balanceReadable","eq","selectedToken","notes","memberAddressToChecksum","amountArg","multiplier","amountWithDecimals","mul","bodyIntro","transferAmount","transferAmountUnit","returnSignature","memberAddressArg","transferArguments","isActiveMemberWithUnits","unitsBalance","amountToNumber","isSelectedTokenEth","CreateTributeProposal","userERC20Balance","setUserERC20Balance","setERC20Details","erc20Contract","setERC20Contract","erc20AddressValue","erc20Address","applicantAddressValue","applicantAddress","createTributeError","getERC20ContractCached","getERC20DetailsCached","getUserERC20BalanceCached","lazyERC20ABI","getRequestAmountUnit","requestAmount","tributeAmountWithDecimals","requestAmountArg","requestAmountUnit","TributeCube","memo","GetStartedHeader","GetStarted","AOS","init","offset","delay","mirror","once","GovernanceActions","votingStartMs","votingEndMs","votingPeriodData","setVotingPeriodData","handleOnVotingPeriodChangeCached","votingPeriodProps","NotFound","textAlign","fontSize","ProposalDetails","renderAmountBadge","GovernanceProposalDetails","useParams","DEFAULT_BUTTON_TEXT","ResponsiveEllipsis","responsiveHOC","LinesEllipsis","ProposalCard","buttonText","proposalOnClickId","linkPath","maxLine","ellipsis","trimRight","basedOn","renderName","GovernanceProposalsList","onProposalClick","proposalLinkPath","renderProposalCard","proposalsForVotingResults","setProposalsForVotingResults","failedProposals","passedProposals","votingProposals","filteredProposals","setFilteredProposals","governanceProposals","setGovernanceProposals","governanceProposalsError","setGovernanceProposalsError","governanceProposalsStatus","setGovernanceProposalsStatus","handleGetProposalsCached","getSnapshotProposalsByActionId","useGovernanceProposals","renderProposalCards","offchainResult","gp","filteredProposalsToSet","didPassSimpleMajority","flatMap","PASSED","FAILED","GovernanceProposals","useMembers","getMembersFromSubgraphResult","members","setMembers","membersStatus","setMembersStatus","membersError","setMembersError","getMembersFromRegistryCached","getMembersFromSubgraphCached","filteredMembersWithDetails","didFullyRagequit","createdAt","parsedMember","getNbMembers","nbMembers","memberAddressesByDelegatedKeyABI","memberAddressesByDelegatedKeyCalls","memberAddressesByDelegatedKey","unitsBalanceOfCalls","unitsBalances","membersWithDetails","isDelegated","reverse","DelegationStatus","DelegationStep","CopySVG","focusable","ArrowsSVG","DaoToken","copyText","document","createElement","appendChild","setAttribute","select","execCommand","removeChild","getElementById","innerHTML","onMouseLeave","UserSVG","DelegationModal","currentStep","daoRegistryAdapterContract","delegateError","delegateAddressValue","confirmDelegationValue","confirmDelegation","isFormFieldEmpty","setDelegation","includes","handleConfirmDelegation","revokeDelegation","handleRevokeDelegation","updateDelegateKeyArguments","parsedError","Delegation","SET_DELEGATION","setCurrentStep","delegationStatus","setDelegationStatus","showDelegationModal","setShowDelegationModal","fetchDelegationInfoCached","REVOKE_DELEGATION","DELEGATE_VOTES","MemberProfile","ethereumAddress","memberDetails","setMemberDetails","memberNotFound","setMemberNotFound","activeMember","isLoadingDone","votingWeight","renderMemberInfo","MemberCard","Members","renderMemberCards","configurationKeysToGet","offchainVotingGracePeriod","Proposals","nonsponsoredProposals","offchainVotingPeriod","offchainGracePeriod","startingTime","times","voteState","votesData","noSnapshotVotes","offchainResultNotYetSubmitted","TIE","PASS","NOT_PASS","REQUESTS","Membership","useMemberActionDisabledProps","ProcessActionMembership","propsDisabled","membershipProposalAmount","setMembershipProposalAmount","notProposerMessage","areSomeDisabled","getMembershipProposalAmountCached","proposalDetails","processArguments","ProposalWithOffchainVoteActions","cycleEllipsisStyles","ProposalActions","renderAction","daoVotingAdapterName","ProposalAmount","amountUnit","amount2","amount2Unit","MembershipDetails","applicant","LoaderWithEmoji","emoji","RedeemManager","redeemables","RedeemCard","redeemable","isRedeemd","margin","RedeemCoupon","setReedemableCoupon","couponStatus","setCouponStatus","coupon","URLSearchParams","search","get","checkBySigOrAddrCached","coupons","PostProcessActionTransfer","alreadyCompletedMessage","toIndexArg","distributeArguments","distributions","distributeProposal","getActionDisabledReasons","TransferDetails","Transfers","ProcessActionTribute","tributeProposalDetails","setTributeProposalDetails","txEtherscanURLTokenApprove","txIsPromptOpenTokenApprove","txSendTokenApprove","txStatusTokenApprove","getTributeProposalDetailsCached","handleSubmitTokenApprove","erc20Instance","allowance","tributeAmountBN","allowanceBN","difference","sub","approveValue","add","tokenApproveArguments","PLACEHOLDER","TributeDetails","Tributes","ProcessName","proposalIdParameter","Routes","exact","component","App","renderMainContent","mainContent","Init","setError","isInitComplete","setIsInitComplete","initSnapshotAPI","processReadyMap","setProcessReadyMap","initContracts","handleInitContractsCached","handleGetMemberCached","handleGetSnapshotAPIStatusCached","getSnapshotAPIStatus","fs","InitError","padding","maxWidth","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","autoRefreshOnNetworkChange","getApolloClient","ApolloClient","link","concat","HttpLink","uri","operationName","cache","InMemoryCache","typePolicies","Adapter","fields","merge","existing","incoming","Extension","ApolloProvider","client"],"mappings":"gHAAA,sDAYO,SAASA,IACd,OAAOC,qBAAWC,O,8ECbL,SAASC,IACtB,OACE,qBACEC,MAAM,6BACN,cAAY,OACZ,YAAU,QACV,cAAY,MACZC,QAAQ,cALV,SAME,sBACEC,KAAK,eACLC,EAAE,ga,02CCFVC,iBAAa,CAACC,KAAMC,kBAAQC,EAAW,aAMvC,MAYIC,kpBAXFC,EADF,EACEA,wCACAC,EAFF,EAEEA,mCACAC,EAHF,EAGEA,sBACAC,EAJF,EAIEA,wBACAC,EALF,EAKEA,gCACAC,EANF,EAMEA,kCACAC,EAPF,EAOEA,iCACAC,EARF,EAQEA,qCACAC,EATF,EASEA,+BACAC,EAVF,EAUEA,yBACAC,EAXF,EAWEA,yBAGWC,EAAcT,EAWdU,EACK,cAAhBD,EACI,gBACAH,EAEOK,EAAqCJ,EAGrCK,EAAgBX,EAGhBY,EAAS,CACpBC,QAAS,EACTC,QAAS,EACTC,QAAS,EACTC,OAAQ,EACRC,MAAO,GACPC,QAAS,MAIEC,GAAe,mBACzBP,EAAOC,QAAU,yBADQ,cAEzBD,EAAOE,QAAU,wBAFQ,cAGzBF,EAAOG,QAAU,wBAHQ,cAIzBH,EAAOI,OAAS,yBAJS,cAKzBJ,EAAOK,MAAQ,sBALU,cAMzBL,EAAOM,QAAU,wBANQ,GASfE,EACe,eAA1BrB,EACIa,EAAOC,QACmB,gBAA1Bd,EACAa,EAAOG,QACPjB,EACAc,EAAOd,GACPc,EAAOM,QAEAG,GAA2C,mBACrDT,EAAOC,QAD8C,sCAErDD,EAAOE,QAF8C,8CAGrDF,EAAOG,QAH8C,8CAIrDH,EAAOI,OAJ8C,6CAKrDJ,EAAOK,MAL8C,iCAQ3CK,GAA2C,mBACrDV,EAAOC,QAD8C,+CAErDD,EAAOE,QAF8C,+CAGrDF,EAAOG,QAH8C,+CAIrDH,EAAOI,OAJ8C,8CAKrDJ,EAAOK,MAL8C,kCAS3CM,EACe,eAA1BxB,EACII,EAC0B,gBAA1BJ,EACAE,EACAC,EAGOsB,EAAgCF,EAAeF,GAAf,UACtCE,EAAeF,GADuB,YACLG,GACpCH,IAAkBR,EAAOM,QAOzB,sBACA,GAYSO,EAAmD,CAE9DC,SAAU,CACRC,QAAS,CACPC,KAAM,WACNC,YAAa,6CAEfC,QAAS,MAGXC,cAAe,CACbJ,QAAS,CACPC,KAAM,gBACNC,YAAa,mCAEfC,QAASE,IACTC,QAAS,CACPC,SAAUX,EACVY,mBAAoB,CAClBC,YAAaC,qBACT,CAAC,UAAW,WAAY,SAAU,SAClC,OAeCC,GACXzC,EAEW0C,IAA4B,mBACtC3B,EAAOC,QAAU,IADqB,cAEtCD,EAAOE,QAAU,IAFqB,cAGtCF,EAAOG,QAAU,8CAHqB,cAItCH,EAAOI,OAAS,IAJsB,cAKtCJ,EAAOK,MAAQ,IALuB,cAMtCL,EAAOM,QAAU,8CANqB,GAS5BsB,IAA6B,mBACvC5B,EAAOC,QAAU,IADsB,cAEvCD,EAAOE,QAAU,IAFsB,cAGvCF,EAAOG,QAAU,8CAHsB,cAIvCH,EAAOI,OAAS,IAJuB,cAKvCJ,EAAOK,MAAQ,IALwB,cAMvCL,EAAOM,QAAU,8CANsB,GAkD7BuB,IAxCuC,mBACjD7B,EAAOC,QAAU,IADgC,cAEjDD,EAAOE,QAAU,IAFgC,cAGjDF,EAAOG,QAAU,8CAHgC,cAIjDH,EAAOI,OAAS,IAJiC,cAKjDJ,EAAOK,MAAQ,IALkC,cAMjDL,EAAOM,QAAU,8CAI6B,mBAC9CN,EAAOC,QAAU,IAD6B,cAE9CD,EAAOE,QAAU,IAF6B,cAG9CF,EAAOG,QAAU,8CAH6B,cAI9CH,EAAOI,OAAS,IAJ8B,cAK9CJ,EAAOK,MAAQ,IAL+B,cAM9CL,EAAOM,QAAU,8CAwBgB,mBACjCN,EAAOC,QAAU,IADgB,cAEjCD,EAAOE,QAAU,IAFgB,cAGjCF,EAAOG,QAAU,8CAHgB,cAIjCH,EAAOI,OAAS,IAJiB,cAKjCJ,EAAOK,MAAQ,IALkB,cAMjCL,EAAOM,QAAU,8CANgB,GASvBwB,IAA8B,mBACxC9B,EAAOC,QAAU,IADuB,cAExCD,EAAOE,QAAU,IAFuB,cAGxCF,EAAOG,QAAU,8CAHuB,cAIxCH,EAAOI,OAAS,IAJwB,cAKxCJ,EAAOK,MAAQ,IALyB,cAMxCL,EAAOM,QAAU,8CANuB,GAS9ByB,IAAyB,mBACnC/B,EAAOC,QAAU,IADkB,cAEnCD,EAAOE,QAAU,IAFkB,cAGnCF,EAAOG,QAAU,8CAHkB,cAInCH,EAAOI,OAAS,IAJmB,cAKnCJ,EAAOK,MAAQ,IALoB,cAMnCL,EAAOM,QAAU,8CANkB,GASzB0B,IAAyB,mBACnChC,EAAOC,QAAU,IADkB,cAEnCD,EAAOE,QAAU,IAFkB,cAGnCF,EAAOG,QAAU,8CAHkB,cAInCH,EAAOI,OAAS,IAJmB,cAKnCJ,EAAOK,MAAQ,IALoB,cAMnCL,EAAOM,QAAU,8CANkB,GASzB2B,IAA0B,mBACpCjC,EAAOC,QAAU,IADmB,cAEpCD,EAAOE,QAAU,IAFmB,cAGpCF,EAAOG,QAAU,8CAHmB,cAIpCH,EAAOI,OAAS,IAJoB,cAKpCJ,EAAOK,MAAQ,IALqB,cAMpCL,EAAOM,QAAU,8CANmB,GAS1B4B,IAA2B,mBACrClC,EAAOC,QAAU,IADoB,cAErCD,EAAOE,QAAU,IAFoB,cAGrCF,EAAOG,QAAU,8CAHoB,cAIrCH,EAAOI,OAAS,IAJqB,cAKrCJ,EAAOK,MAAQ,IALsB,cAMrCL,EAAOM,QAAU,8CANoB,GAS3B6B,IAA0B,mBACpCnC,EAAOC,QAAU,IADmB,cAEpCD,EAAOE,QAAU,IAFmB,cAGpCF,EAAOG,QAAU,8CAHmB,cAIpCH,EAAOI,OAAS,IAJoB,cAKpCJ,EAAOK,MAAQ,IALqB,cAMpCL,EAAOM,QAAU,8CANmB,GAS1B8B,IAAqC,mBAC/CpC,EAAOC,QAAU,IAD8B,cAE/CD,EAAOE,QAAU,IAF8B,cAG/CF,EAAOG,QAAU,8CAH8B,cAI/CH,EAAOI,OAAS,IAJ+B,cAK/CJ,EAAOK,MAAQ,IALgC,cAM/CL,EAAOM,QAAU,8CAN8B,GASrC+B,IAA6B,mBACvCrC,EAAOC,QAAU,IADsB,cAEvCD,EAAOE,QAAU,IAFsB,cAGvCF,EAAOG,QAAU,8CAHsB,cAIvCH,EAAOI,OAAS,IAJuB,cAKvCJ,EAAOK,MAAQ,IALwB,cAMvCL,EAAOM,QAAU,8CANsB,GAS7BgC,IAA4B,mBACtCtC,EAAOC,QAAU,IADqB,cAEtCD,EAAOE,QAAU,IAFqB,cAGtCF,EAAOG,QAAU,8CAHqB,cAItCH,EAAOI,OAAS,IAJsB,cAKtCJ,EAAOK,MAAQ,IALuB,cAMtCL,EAAOM,QAAU,8CANqB,GAS5BiC,IAAiC,mBAC3CvC,EAAOC,QAAU,IAD0B,cAE3CD,EAAOE,QAAU,IAF0B,cAG3CF,EAAOG,QAAU,8CAH0B,cAI3CH,EAAOI,OAAS,IAJ2B,cAK3CJ,EAAOK,MAAQ,IAL4B,cAM3CL,EAAOM,QAAU,8CAN0B,GASjCkC,IAAwB,mBAClCxC,EAAOC,QAAU,IADiB,cAElCD,EAAOE,QAAU,IAFiB,cAGlCF,EAAOG,QAAU,8CAHiB,cAIlCH,EAAOI,OAAS,IAJkB,cAKlCJ,EAAOK,MAAQ,IALmB,cAMlCL,EAAOM,QAAU,8CANiB,GASxBmC,IAA2B,mBACrCzC,EAAOC,QAAU,IADoB,cAErCD,EAAOE,QAAU,IAFoB,cAGrCF,EAAOG,QAAU,8CAHoB,cAIrCH,EAAOI,OAAS,IAJqB,cAKrCJ,EAAOK,MAAQ,IALsB,cAMrCL,EAAOM,QAAU,8CANoB,GAS3BoC,IAA4B,mBACtC1C,EAAOC,QAAU,IADqB,cAEtCD,EAAOE,QAAU,IAFqB,cAGtCF,EAAOG,QAAU,8CAHqB,cAItCH,EAAOI,OAAS,IAJsB,cAKtCJ,EAAOK,MAAQ,IALuB,cAMtCL,EAAOM,QAAU,8CANqB,GAS5BqC,IAA+B,mBACzC3C,EAAOC,QAAU,IADwB,cAEzCD,EAAOE,QAAU,IAFwB,cAGzCF,EAAOG,QAAU,8CAHwB,cAIzCH,EAAOI,OAAS,IAJyB,cAKzCJ,EAAOK,MAAQ,IAL0B,cAMzCL,EAAOM,QAAU,8CANwB,GAU/BsC,GAA6BpD,EAS7BqD,GACX,6CACWC,GACX,6CACWC,GACX,6CAGWC,GACX,6CACWC,GACX,6CAQWC,GAA4BvD,EAO5BwD,GACe,eAA1BhE,EAAyC,IAAQ,M,gDCnY5C,SAASiE,EAAgBC,EAAYC,GAC1C,IAAMC,OACgBC,IAApBF,EACID,EAAMI,QAAO,SAACC,GAAD,OAAOA,IAAMJ,KAC1BD,EAEN,OAAOE,EAAWI,KAAKC,MAAMD,KAAKE,SAAWN,EAAWO,S,qaCNnD,SAASC,IACd,IAAMC,EAAO,aACPC,EAAaC,OAAeC,+BAElC,GAAyB,kBAAdF,EACT,cAA2BG,OAAOC,QAAQJ,GAA1C,eAAsD,CAAjD,0BAAOK,EAAP,KAAYC,EAAZ,KACHN,EAAUK,GAAwB,oBAAVC,EAAuBP,EAAO,MCPrD,SAASQ,IAEd,IAAMC,EAAW,SAACC,GAEhBA,EAAMC,iBAEND,EAAME,YAAc,IAKtB,OAFAV,OAAOW,iBAAiB,eAAgBJ,GAEjC,WACLP,OAAOY,oBAAoB,eAAgBL,ICNxC,SAASM,EAAcC,GAC5B,OAAOA,EAAI,IAAOA,EAAEC,QAAQ,GAAKD,EAAEC,QAAQ,GCJtC,IAAMC,EAAe,SAACX,GAC3B,IAAMY,EAAQ,IAAIC,OAAO,gCACzB,MAAwB,kBAAVb,EACVA,EAAMc,WAAWC,QAAQ,KAAM,IAAIA,QAAQH,EAAO,OAClDZ,EAAMe,QAAQ,KAAM,IAAIA,QAAQH,EAAO,QCNvCI,EAAmC,CACvCC,KAAM,EACNC,MAAO,EACPC,QAAS,EACTC,QAAS,EACTC,MAAO,GAGF,SAASC,EAAiBC,GAC/B,IAAMC,EAAgB,IAAIC,KAE1B,GAAIF,GAAWC,EACb,OAAOR,EAGT,IAAMK,EAAgBE,EAAQG,UAAYF,EAAQE,UAC5CN,EAAkBhC,KAAKC,MAAOgC,EAAQ,IAAQ,IAC9CF,EAAkB/B,KAAKC,MAAOgC,EAAQ,IAAO,GAAM,IACnDH,EAAgB9B,KAAKC,MAAOgC,EAAK,KAAuB,IAG9D,MAAO,CACLJ,KAHmB7B,KAAKC,MAAMgC,EAAK,OAInCH,QACAC,UACAC,UACAC,SCxBG,SAASM,EACdC,EACAC,GAEA,OAAOA,EAAOD,IAAU,YAAaC,EAAOD,GACvCC,EAAOD,GAAOE,QACf,G,2BCRC,SAASC,EAAgBC,GAC9B,OAAOA,EAAkBC,cAAcC,OCMlC,SAAeC,EAAtB,oC,4CAAO,WAILC,EAMAC,GAVK,iBAAAlD,EAAA,+EAaoBkD,EAASC,QAAQP,EAAgBK,IAbrD,cAaGG,EAbH,OAgBGC,GACHD,GACY,OAAbA,GACa,QAAbA,GACa,SAAbA,EApBC,mBAsBuC,IAAnCC,GAtBJ,qG,kCCLA,SAASC,IAAmD,IAAlCC,EAAiC,uDAA1B,EAAGC,EAAuB,uDAAb,EAC7CC,EAAeF,EAAO,EAAIC,EAEhC,OAAO,YAAIE,MAAMD,IAAeE,KAAI,SAACC,EAAGC,GAAJ,OAAUL,EAAUK,KCHnD,IAAMC,EAAoB,SAACjD,GAAD,OAC/BA,EAAMc,WAAWC,QAAQ,KAAM,K,qZC0C1B,SAASmC,EACdC,GACC,IAAD,EAEEC,EAEED,EAFFC,YADF,EAGID,EADFE,SAAWC,EAFb,EAEaA,yBAA0BC,EAFvC,EAEuCA,iBAOvC,EAA8CC,mBAC5CC,IAAaC,SADf,mBAAOC,EAAP,KAAwBC,EAAxB,KAGA,EAAsCJ,qBAAtC,mBAAOK,EAAP,KAAoBC,EAApB,KAMMC,EAAuBC,aAC3B,SAACC,GAAD,uBAAmBA,EAAEC,UAAUC,6BAA/B,aAAmB,EAAmCC,mBAElDC,EAAuBL,aAC3B,SAACC,GAAD,uBAAmBA,EAAEC,UAAUC,6BAA/B,aAAmB,EAAmCG,SAASC,WAE3DC,EAAoBR,aAAY,SAACC,GAAD,uBACpCA,EAAEC,UAAUC,6BADwB,aACpC,EAAmCM,IAAIC,MACrC,SAACC,GAAD,MAAoB,mBAAZA,EAAGlI,WAGTmI,EAAqBZ,aACzB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCT,mBAEhDU,EAAmB,UAAGd,aAC1B,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCJ,cAD7B,aAAG,EAEzBC,MAAK,SAACC,GAAD,MAAoB,qBAAZA,EAAGlI,QAEbyH,EAAYF,aAAY,SAACC,GAAD,OAAmBA,EAAEC,aAMnD,EAA0CrK,cAAnCkL,EAAP,EAAOA,QAAS1C,EAAhB,EAAgBA,SAAU2C,EAA1B,EAA0BA,aAE1B,EAA2DC,cAApDC,EAAP,EAAOA,eAAgBC,EAAvB,EAAuBA,eAAgBC,EAAvC,EAAuCA,OAAQC,EAA/C,EAA+CA,SAE/C,EACEC,cADKC,EAAP,EAAOA,WAAYC,EAAnB,EAAmBA,qBAAsBC,GAAzC,EAAyCA,iBAG5BC,GAAgBC,cAAtBC,KAMDC,GAAoB,OACxBvC,QADwB,IACxBA,OADwB,EACxBA,EAA0BwC,+BAA+BvB,QAErDwB,GACJpC,IAAoBF,IAAauC,kBACjCrC,IAAoBF,IAAawC,SACjCZ,IAAa5B,IAAauC,kBAC1BX,IAAa5B,IAAawC,QAEtBC,GACJb,IAAa5B,IAAa0C,WAC1BxC,IAAoBF,IAAa0C,UAE7BC,GAAoBL,IAAeG,IAAUf,EArEnD,8CA2EA,wEAAAhG,EAAA,kEAESyF,EAFT,sBAGY,IAAIyB,MAAM,sCAHtB,UAMStC,EANT,sBAOY,IAAIsC,MAAM,wCAPtB,UAUSvB,EAVT,sBAWY,IAAIuB,MAAM,4CAXtB,UAcS7B,EAdT,sBAeY,IAAI6B,MAAM,0CAftB,UAkBS9C,EAlBT,uBAmBY,IAAI8C,MAAM,mCAnBtB,WAsBS9C,EAAiB+C,MAtB1B,uBAuBY,IAAID,MAAM,+CAvBtB,WA0BSR,GA1BT,uBA2BY,IAAIQ,MAAM,mDA3BtB,WA8BSrB,EA9BT,uBA+BY,IAAIqB,MAAM,+BA/BtB,eAkCIzC,EAAmBH,IAAauC,kBAEhBO,EAAgBhD,EAAzBiD,QAEDC,EAAmBlD,EAAiBmD,IAAIC,QAAQF,SAAS3F,WAEzD8F,EAAiBC,YACrBzD,EACAc,GA1CN,UA8CuDG,EAChDyC,eAAevI,IAAeE,IAAsBgI,GACpDM,OAhDP,eA8CUC,EA9CV,OAkDUC,EAA0CxE,YAC9CyE,OAAOF,GAAgC,EACvC,GACAlE,KACA,SAACqE,GAAD,MAAiC,CAC/BvC,EACAE,EACA,CAACqC,EAAYrG,gBAzDrB,UA8D4CsG,YAAU,CAChDC,MAAOJ,EACPjC,iBAhEN,eA8DUsC,EA9DV,OAmEUC,EAAuCD,EAAgBxE,KAC3D,SAAC0E,GAAD,MAAuB,CACrBzD,EACAS,EACA,CAACgD,EAAGhJ,IAAeiI,OAvE3B,UA4EqDW,YAAU,CACzDC,MAAOE,EACPvC,iBA9EN,eA4EUyC,EA5EV,OAkFUnB,EAAqBgB,EAAgBxE,KAAI,SAAC4E,EAAe1E,GAAO,IAAD,EAC7D2E,EAAW9H,OAAO+H,QACtB,UAAArE,EAAiB+C,aAAjB,eAAwB5B,MACtB,SAACmD,GAAD,OACE9F,YAAgB2F,KAChB3F,YACElC,OAAO+H,OAAOC,GAAG,GAAGnB,IAAIC,QAAQmB,SAASJ,oBAE1C,IACL,GAGF,OAAOK,qBAAW,CAChBC,WAAYzB,EACZ0B,KAAa,OAARN,QAAQ,IAARA,OAAA,EAAAA,EAAUM,MAAO,KACtBC,UAAWP,EAAWT,OAAOS,EAASjB,IAAIwB,WAAa,EACvDC,SAAiB,OAARR,QAAQ,IAARA,OAAA,EAAAA,EAAUjB,IAAIC,QAAQyB,UAAWC,mBAAiBC,IAC3DC,OAAQZ,EAAWF,EAAyBzE,GAAK,SAnGzD,UAwG2CwF,4BAAkB,CACvDC,SAAU7B,EACV8B,QAASzM,IACT0M,WAAY/D,EACZ0B,UA5GN,wBAwGWsC,EAxGX,EAwGWA,eAAgBC,EAxG3B,EAwG2BA,OAOjBC,EAAgCF,EAAeG,aAE/CC,EAAmCH,EAAOA,EAAOtJ,OAAS,GAjHpE,UAoHkDsG,GAC3CoD,gBACCrE,EACA2B,GAEA,EACAuC,EACArC,EAEA,EACAuC,GAEDjC,OAhIP,WAoHUmC,EApHV,OAkIQhC,OAAOgC,KAA6BC,IAAaC,GAlIzD,uBAmIY,IAAI/C,MAAJ,oEACyD8C,IAAaD,GADtE,MAnIZ,iBAyI4BG,4CACtBzE,EACAgC,EACA3K,KAHKqN,EAzIX,EAyIWA,OAAQC,EAzInB,EAyImBA,MAMTC,EAAwBC,KAAKC,UAAU,CAC3CJ,SACAxH,QAAS,CAAC6H,KAAMb,GAChBc,YAAaC,IACbN,UAnJN,UAuJoCO,sBAC9BzH,EACA0C,EACAyE,GA1JN,eAuJUO,EAvJV,iBA+JcC,YAAuBlB,GA/JrC,2JA+JO,EAAuDmB,YACrD1K,OAhKT,gDAgKmB,GAhKnB,0BAgKyB,EAhKzB,kCA0KY2K,YAA0B,CAC9BzB,SAAU7B,EACV8B,QAASzM,IACTkO,MAAOtB,EACPuB,WAAYtB,EACZuB,kBAAmBzF,IA/K3B,eAmLIhB,EAAmBH,IAAa0C,WAE1BmE,EAAuD,CAC3D1F,EACA2B,EACAuC,EACAE,EACAe,GAGIQ,EA7LV,aA8LMC,KAAMzF,GAAW,IACbW,GAAe,CAAC+E,SAAU/E,IAAgB,MA/LpD,UAmMUN,EACJ,mBACAS,GACAyE,EACAC,GAvMN,0DA0MIzG,EAAe,EAAD,IACdF,EAAmBH,IAAaiH,UA3MpC,2DA3EA,sBAqUA,OACE,qCACE,gCACE,wBACEC,UAAU,0BACVC,SAAUrF,GAAca,GACxByE,QAAStF,GAAca,GAAoB,aA3UnD,4CAwUM,SAIGL,GAAc,cAAC+E,EAAA,EAAD,IAAa5E,GAAS,OAAS,uBAGhD,cAAC6E,EAAA,EAAD,CACEC,MAAOnH,EACPoH,WAAW,yBAIZ7E,IACC,qBAAKuE,UAAU,gCAAf,SA5DR,WAEE,GACEtF,IAAa5B,IAAauC,kBAC1BrC,IAAoBF,IAAauC,iBAEjC,MAAO,mCAIT,OAAQX,GACN,KAAK5B,IAAawC,QAChB,OACE,qCACE,cAACiF,EAAA,EAAD,CACEC,WAAY,IACZC,SAAUC,IACVC,mBAAiB,EACjBC,OAAQ,SAACzJ,GACP,OAAO,cAAC0J,EAAA,EAAD,UAAuB1J,GAAVA,MAIxB,cAAC2J,EAAA,EAAD,CAAcC,IAAKxG,EAAgByG,WAAS,OAGlD,KAAKlI,IAAa0C,UAChB,OACE,qCACE,oDAEA,cAACsF,EAAA,EAAD,CAAcC,IAAKxG,OAGzB,QACE,OAAO,MA0BF0G,KAIJrG,GACC,wBACEoF,UAAU,wBACVE,QAASrF,EAFX,4CAQJ,cAACC,GAAD,CAAkBoG,MAAM,6B,0BC3XvB1F,EAAgC2F,IAAhC3F,UAAWF,EAAqB6F,IAArB7F,QAASyE,EAAYoB,IAAZpB,SAepB,SAASqB,EACd5I,GAEA,IACEC,EAEED,EAFFC,YADF,EAGID,EADFE,SAAWE,EAFb,EAEaA,iBAAkByI,EAF/B,EAE+BA,uBAO/B,EAAkDxI,qBAAlD,mBAAOyI,EAAP,KAA0BC,EAA1B,KACA,EAAsC1I,qBAAtC,mBAAOK,EAAP,KAAoBC,EAApB,KAMMqI,EAA2BC,iBAA8B,CAC7DC,0BAA2B,GAC3BC,oBAAqB,GACrBC,oCAAqC,GACrCC,8BAA+B,GAC/BC,wCAAyC,KAOrCC,EAAkB1I,aACtB,SAACC,GAAD,uBAAmBA,EAAE0I,uBAArB,aAAmB,EAAmBC,eAGlCC,EAAqB7I,aACzB,SAACC,GAAD,uBAAmBA,EAAE0I,uBAArB,aAAmB,EAAmBE,sBAGlCnF,EAAgB1D,aACpB,SAACC,GAAD,uBAAmBA,EAAE0I,uBAArB,aAAmB,EAAmBjF,iBAOjC3C,EAAWlL,cAAXkL,QACP,EAA0C+H,cAAnCC,EAAP,EAAOA,gBAAiBC,EAAxB,EAAwBA,eAClBC,EAAaC,YAAa,OAAC3J,QAAD,IAACA,OAAD,EAACA,EAAkB+C,MAAOvB,GAAW,IAErE,EAKIO,cAJFC,EADF,EACEA,WACAC,EAFF,EAEEA,qBACA2H,EAHF,EAGEA,wBACA1H,EAJF,EAIEA,iBAGF,EAII2H,YACF1F,EAD0B,OAE1BnE,QAF0B,IAE1BA,OAF0B,EAE1BA,EAAkBmD,IAAIC,QAAQF,UAL9B4G,EADF,EACEA,wBACAC,EAFF,EAEEA,2BACAC,EAHF,EAGEA,4BAUI9G,EAA4B,OAAGlD,QAAH,IAAGA,OAAH,EAAGA,EAAkBmD,IAAIC,QAAQF,SAC7DF,GAAuC,OAAhBhD,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBiD,UAAW,GACpDgH,GAA6C,OAAhBjK,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBkK,eAAgB,GAE/D1H,GACJiH,IAAmBvJ,IAAauC,kBAChCgH,IAAmBvJ,IAAawC,QAE5BC,GAAS8G,IAAmBvJ,IAAa0C,UAIzCuH,GAAmBnI,IAFCQ,IAAeG,IAInCyH,GAA8C5H,GAChDkG,OACAhN,EAEE+L,GAA2BnH,GAAeyJ,EAvF5B,8CAsJpB,WAAgClF,GAAhC,SAAAjJ,EAAA,kEAESoH,EAFT,sBAGY,IAAIF,MAAM,+BAHtB,UAMSmH,EANT,sBAOY,IAAInH,MAAM,6BAPtB,cAUI6F,EAAqB0B,cAAYxF,IAVrC,SAYU2E,EAAgB,2BAChB3J,EAAc,CAACA,oBAAenE,GADf,IAEnB4O,gBAAiB,CAACzF,UAClB0F,gBAAiBvH,EACjBwH,qBAAsBP,KAhB5B,wBAoBUxB,IApBV,0DAsBIlI,EAAe,EAAD,IAtBlB,2DAtJoB,sBAgLpB,SAASkK,GACPjO,EACA+B,GAEAqK,EAAyB8B,QAAzB,2BACK9B,EAAyB8B,SAD9B,kBAGGlO,EAAM+B,IAIX,OA9FAoM,qBAAU,WA5GuB,IAAC/O,EAgH5BuN,GACFsB,GACE,4BACAnB,GAnH4B1N,EAmHoBuN,EAnHrB,8CACMyB,YACrChP,EACA,GAH+B,yCAmHwC,IAKvE6O,GACE,sBACAf,EAAa,0BAA4B,IAI3Ce,GACE,gCACCX,GAA2BE,IAAgCpH,EAExD,GAFJ,4EACyEM,EADzE,MAMFuH,GACE,sCACAT,IAAgCtH,EAAhC,oGACiGQ,EADjG,KAEI,IAINuH,GACE,0CACAT,IAAgC7C,EAAhC,oGACiGjE,EADjG,0BAEI,IAIN0G,EAAwBtN,OAAO+H,OAAOuE,EAAyB8B,YAC9D,CACDvB,EACAW,EACAR,EACAU,EACAJ,EACA1G,EACAwG,IA6CA,qCACE,cAACmB,EAAD,CACEvD,QAAS6C,GAAmB,aA9Ld,6CA+LdW,YAAa,CACXzD,SAAU8C,GACV,gBAAiBA,IAEnBT,WAAYA,EACZqB,aAAcX,KAGfpI,GACC,wBACEoF,UAAU,wBACVE,QAASrF,EAFX,qCAOF,cAACuF,EAAA,EAAD,CACEC,MAAOA,GACPC,WAAW,yBAGb,cAACxF,EAAD,CAAkBoG,MAAM,+B,YChP9B,SAAS0C,EAAT,GAQ8B,IAP5BC,EAO2B,EAP3BA,cACAC,EAM2B,EAN3BA,oBACAC,EAK2B,EAL3BA,aAMA,EAAwCpN,YAAiBkN,GAAlDvN,EAAP,EAAOA,KAAMC,EAAb,EAAaA,MAAOC,EAApB,EAAoBA,QAASC,EAA7B,EAA6BA,QAEvBuN,EAAqB,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAsB,CAClDxN,OACA2N,mBACA1N,QACAC,UACAC,UACAsN,iBAGIG,EAASD,EAGf,OAAID,IAKA1N,EAAO,GAAKyN,EACR,IAAN,OAAWzN,EAAX,SAIEA,EAAO,EACH,GAAN,OAAU4N,EAAO5N,EAAM,OAAvB,cAAmC4N,EAAO3N,EAAO,MAAjD,cAA4D2N,EAC1D1N,EACA,QAKAD,EAAQ,EACJ,GAAN,OAAU2N,EAAO3N,EAAO,MAAxB,cAAmC2N,EAAO1N,EAAS,QAIjDA,EAAU,EACN,GAAN,OAAU0N,EAAO1N,EAAS,OAA1B,cAAsC0N,EAAOzN,EAAS,QAIjD,sBAAMuJ,UAAU,qBAAhB,SAAsCkE,EAAOzN,EAAS,UAG/D,SAASwN,EAAiBE,EAAcC,GACtC,IAAMC,EAA2B,IAATF,GAAcA,EAAO,EAArB,UAA4BC,EAA5B,KAAwCA,EAEhE,MAAM,GAAN,OAAUD,EAAV,YAAkBE,GAGL,SAASC,EACtB9L,GAEA,IACE+L,EAME/L,EANF+L,WACAC,EAKEhM,EALFgM,SACAC,EAIEjM,EAJFiM,YACAX,EAGEtL,EAHFsL,oBACAY,EAEElM,EAFFkM,WACAC,EACEnM,EADFmM,cAOF,EAAsC9L,qBAAtC,mBAAO+L,EAAP,KAAoBC,EAApB,KAMMC,EAAkB,IAAIhO,KAAK6N,GAC3BI,EAAgB,IAAIjO,KAAK2N,GAqB/B,OAdAlB,qBAAU,WACR,IAAMyB,EAAWC,aAAY,WAC3BJ,EAAe,IAAI/N,QAClB,KAEH,OAAO,WACLoO,cAAcF,MAEf,IAMEJ,EAGDA,EAAcE,EAEd,8BACE,iCACE,sBAAM9E,UAAU,eAAhB,SAAgC0E,GAAc,YAAkB,IAChE,sBAAM1E,UAAU,sBAAhB,SACG4D,EAAiB,CAChBC,cAAeiB,EACfhB,sBACAC,cAAc,WAStBa,EAAcG,EAEd,8BACE,iCACE,sBAAM/E,UAAU,eAAhB,SAAgCwE,GAAY,UAAgB,IAC5D,sBAAMxE,UAAU,sBAAhB,SACG4D,EAAiB,CAACC,cAAekB,EAASjB,+BASnD,8BACE,sBAAM9D,UAAU,eAAhB,SAAgCuE,GAAc,YArCzB,KC3HZ,SAASY,EAAa3M,GACnC,OACE,8CACE4M,MAAM,OACNC,OAAO,OACP9V,QAAQ,YACR+V,QAAQ,OACJ9M,GALN,cAME,+BACE,sBACE/I,EAAE,u7BACF8V,GAAG,aAEP,mBACEA,GAAG,SACHC,OAAO,OACPC,YAAY,IACZjW,KAAK,OACLkW,SAAS,UALX,SAME,oBAAGH,GAAG,WAAN,UACE,sBAAMA,GAAG,SAAS/V,KAAK,QAAvB,SACE,qBAAKmW,UAAU,cAEjB,qBAAKJ,GAAG,UAAU/V,KAAK,eAAemW,UAAU,qBCMnD,SAASC,EAAapN,GAC3B,IACEqN,EAOErN,EAPFqN,eACAC,EAMEtN,EANFsN,QACAC,EAKEvN,EALFuN,aACAC,EAIExN,EAJFwN,YAJF,EAQIxN,EAHFyN,uBALF,SAMEC,EAEE1N,EAFF0N,WACAC,EACE3N,EADF2N,SAGIC,EAAiBL,IAEvB,OACE,qCACE,sBAAK/F,UAAU,yBAAf,UACE,cAACmF,EAAD,CAAc,aAAW,kBAAkBkB,KAAK,QAE/CD,GACC,sBAAMpG,UAAU,eAAhB,SAAgCoG,IAGjCJ,EAAY1B,MAIf,cAACgC,EAAD,CACEH,SAAUA,EACVL,QAASA,EACTI,WAAYA,EACZK,cAAeV,EACfI,gBAAiBA,OCwBzB,SAASnC,EAAT,GAI8B,IAH5BxN,EAG2B,EAH3BA,KACAC,EAE2B,EAF3BA,MACkB2N,EACS,EAD3BD,iBAEA,GAAI3N,EAAO,EACT,MAAM,GAAN,OAAU4N,EAAO5N,EAAM,OAAvB,cAAmC4N,EAAO3N,EAAO,OAKrD,IAAMiQ,EAAmB,iDAEnBC,EAA2B,CAACC,SAAU,KAUrC,SAASC,EAAT,GAUqC,IAAD,IATzCC,iCASyC,MATb,EASa,MARzCC,mCAQyC,MARX,EAQW,MAPzCC,4BAOyC,MAPlB,EAOkB,MANzCC,8BAMyC,MANhB,EAMgB,EALzCC,EAKyC,EALzCA,oBACAC,EAIyC,EAJzCA,qBACA5J,EAGyC,EAHzCA,WACA0I,EAEyC,EAFzCA,aACAmB,EACyC,EADzCA,aAMA,EAIIC,YACFJ,EAAyB,IACzBD,EAAuB,KALTjB,EADhB,EACEuB,aACgBC,EAFlB,EAEEC,eACuBC,EAHzB,EAGEC,sBAMF,EAIIL,YACFN,EAA8B,IAC9BD,EAA4B,KALda,EADhB,EACEL,aACgBM,EAFlB,EAEEJ,eACuBK,EAHzB,EAGEH,sBAUII,EACJD,GACAD,IACCD,EAEG3B,GAA8B,OAAZoB,QAAY,IAAZA,OAAA,EAAAA,EAAcW,GAAGC,QAAS,EAC5C5B,GAAiC,OAAZgB,QAAY,IAAZA,OAAA,EAAAA,EAAchB,aAAc,EACjDC,GAA+B,OAAZe,QAAY,IAAZA,OAAA,EAAAA,EAAcvJ,IAAImK,QAAS,EAG9CC,EAAiDlC,EACnDM,EAAWL,OACXxR,EAEE0T,EAAsB,OAAGjC,QAAH,IAAGA,OAAH,EAAGA,EAAe,CAC5Ca,4BACAC,8BACAC,uBACAC,yBACAgB,4BACAJ,+BACAF,sBACAC,wBACA7B,iBACAwB,mBACAE,4BAiHF,OAzGAhE,qBAAU,WACHgE,IAEe,OAApBN,QAAoB,IAApBA,KAAuB,CACrBI,mBACAxB,iBACAxI,aACAkK,+BAED,CACD1B,EACAwB,EACAJ,EACA5J,EACAkK,IAIFhE,qBAAU,WACHoE,IAEc,OAAnBX,QAAmB,IAAnBA,KAAsB,CACpBS,sBACAC,wBACArK,aACAsK,oCAED,CACDA,EACAF,EACAC,EACAV,EACA3J,IA0EA,cAACuI,EAAD,CACEC,eAAgBA,EAChBC,QAASA,EACTC,aAtEJ,WAEE,OAAIiC,IAKCT,EAWDK,EACK,GAILG,EACK,YAIyB,IAA9BA,EACK,cADT,EAnBI,cAAC,IAAD,CACEE,UAAU,kCACVC,YAAazB,EACbjG,WAAY,QA2DhBwF,YAtCJ,SACEmC,GAKA,OAAIZ,GAA2BF,IAAqBxB,EAEhD,cAACsC,EAAD,CACE1D,YAAaqC,EACbhD,oBAAqBA,EACrBa,cAAeoC,IAMjBa,EAEA,cAACO,EAAD,CACE3D,SAAUgC,EACV/B,YAAamC,GAA6B,EAC1C9C,oBAAqBA,EACrBa,cAAekC,GAA+B,SANpD,GAsBEX,WAAYA,EACZC,SAAUA,ICjSD,SAASiC,EAAS5P,GAC/B,OACE,6CACElJ,MAAM,6BACN+Y,WAAW,+BACXjD,MAAM,KACNC,OAAO,KACP9V,QAAQ,eACJiJ,GANN,aAOE,sBACEhJ,KAAK,eACLC,EAAE,gSCiBV,SAAS6Y,EAAgBR,EAAe5B,GACtC,OAAS4B,EAAQ5B,EAAc,KAAKnQ,QAAQ,GAAGK,QAAQ,QAAS,IAG3D,SAASkQ,EAAT,GAMuB,IAAD,IAL3BH,gBAK2B,MALhB,EAKgB,MAJ3BL,eAI2B,MAJjB,EAIiB,EAH3BI,EAG2B,EAH3BA,WACAK,EAE2B,EAF3BA,cACAN,EAC2B,EAD3BA,gBAMMsC,EAAarC,EAAaoC,EAAgBnC,EAAUD,GAAc,IAClEsC,EAAYtC,EAAaoC,EAAgBxC,EAASI,GAAc,IAMtE,OACE,sBAAKlG,UAAU,sBAAf,UACE,sBAAKA,UAAU,YAAf,UAEE,qBACEA,UAAU,0BACV,uBAAeuI,EAAf,eACAE,MAAO,CACLrD,MAAM,GAAD,OAAKmD,EAAL,QAKT,qBACEvI,UAAU,yBACV,uBAAewI,EAAf,cACAC,MAAO,CACLrD,MAAM,GAAD,OAAKoD,EAAL,WAKX,qBAAKxI,UAAU,yBAAf,SACGiG,GACC,qCAEGM,GAAiBJ,EAAWL,GAC3B,sBAAM9F,UAAU,YAAhB,SACE,cAACoI,EAAD,CAAU,aAAW,sBAGzB,uBAAMpI,UAAU,cAAhB,UAA+BuI,EAA/B,OAGA,uBAAMvI,UAAU,aAAhB,UAA8BwI,EAA9B,OACCjC,GAAiBJ,GAAYL,GAC5B,sBAAM9F,UAAU,WAAhB,SACE,cAACoI,EAAD,CAAU,aAAW,8BCnE9B,SAAS3E,EACdjL,GAEA,IAAOkL,EAAkDlL,EAAlDkL,YAAaxD,EAAqC1H,EAArC0H,QAASoC,EAA4B9J,EAA5B8J,WAAYqB,EAAgBnL,EAAhBmL,aAMzC,SAAS+E,EACPjL,GAEA,OAAOkG,IAAiBlG,EACpB,CAAC,aAAa,UAAb,OAAwBA,EAAxB,YACD,GAGN,SAASkL,EAAclL,GACrB,OAAOkG,IAAiBlG,EACtB,cAAC0C,EAAA,EAAD,CAAQ,wCAAgC1C,EAAhC,OAA6C4I,KAAK,QACxD/D,IAAe7E,EAAf,gBACOA,GADP,eAGMA,GAIZ,SAASmL,EAAYnL,GACnB,OAAO,WACLyC,EAAQzC,IAIZ,SAASoL,EACPpL,EACAwK,GAEA,OAAO3F,IAAe7E,EACpB,qCACE,cAAC2K,EAAD,CAAU,aAAYH,IAAc,OAGtC,GAQJ,OACE,qCACE,+DACMvE,GACAgF,EAAmBzF,cAAYtF,MAFrC,IAGEqC,UAAS,0BACTE,QAAS0I,EAAY3F,cAAYtF,KAJnC,UAKGkL,EAAiB5F,cAAYtF,IAAK,iBAClCgL,EAAc1F,cAAYtF,SAG7B,+DACM+F,GACAgF,EAAmBzF,cAAY4E,KAFrC,IAGE7H,UAAS,0BACTE,QAAS0I,EAAY3F,cAAY4E,IAJnC,UAKGgB,EAAiB5F,cAAY4E,GAAI,gBACjCc,EAAc1F,cAAY4E,a,yUC9D5B,SAASvN,IACd,MAA8BzB,qBAA9B,mBAAOiQ,EAAP,KAAgBC,EAAhB,KACA,EAA4ClQ,mBAAiB,IAA7D,mBAAO0B,EAAP,KAAuByO,EAAvB,KACA,EAA4CnQ,oBAAkB,GAA9D,mBAAO2B,EAAP,KAAuByO,EAAvB,KACA,EAAkCpQ,qBAAlC,mBAAOqQ,EAAP,KAAkBC,EAAlB,KACA,EAAgCtQ,mBAAuBC,IAAaC,SAApE,mBAAO2B,EAAP,KAAiB0O,EAAjB,KAMOC,EAAana,cAAbma,UAMP,SAASC,EAAkB/T,GACzB,OAAO,SAACgU,GACNH,EAAYtQ,IAAawC,SACzB2N,GAAkB,GAGdI,GAAaA,IAAcvY,IAAOM,SACpC4X,EAAkB,GAAD,OAAIzX,IAAe8X,GAAnB,eAAoCE,IAGvDhU,GAAYA,EAASgU,IA3B8B,4CA+BvD,gDAAA/U,EAAA,0DAIQgV,EAA6BlU,cAJrC,SAQIyT,OAAWzU,GACX0U,EAAkB,IAElBI,EAAYtQ,IAAauC,kBACzB4N,GAAkB,GAZtB,WACKQ,EADL,yBACKA,EADL,eAeIA,EAAmB,GAAKH,EAAkBG,EAAmB,IAfjE,UAiB0BC,IAAY,WAAZ,EAAgBD,GAjB1C,eAiBUE,EAjBV,OAmBIR,EAAaQ,GACbP,EAAYtQ,IAAa0C,WAEzBgO,IAtBJ,kBAwBWG,GAxBX,wCA0BIZ,EAAW,EAAD,IACVK,EAAYtQ,IAAaiH,UACzBkJ,GAAkB,GAElBO,IA9BJ,gEA/BuD,sBAmEvD,MAAO,CACLV,UACAvO,iBACAC,iBACA0O,YACAzO,OAxEqD,2CAyErDC,Y,oDCzDJ,SAASkP,EAAgBC,GAMvB,OAL8BC,gBAC5B,IAAIC,KAAWF,EAAkB,IAAI9T,QAAQ,IAAII,WACjD,QAMJ,IAAM6T,EAAgC,CACpCC,aAAS3V,EACT2G,UAAM3G,EACN4V,aAAS5V,EACT6V,aAAS7V,GAWJ,SAAS0G,EAAexC,GAG7B,OAAoCA,GAAS,IAAtC4R,yBAAP,SAMA,EAAkCvR,mBAAoBmR,GAAtD,mBAAOK,EAAP,KAAkBC,EAAlB,KACA,EAA0CzR,qBAA1C,mBAAO0R,EAAP,KAAsBC,EAAtB,KAEA,EAA4C3R,mBAC1CsI,IAAYpI,SADd,mBAAO0R,EAAP,KAAuBC,EAAvB,KAQA,EAAwCC,cAAjCC,EAAP,EAAOA,gBAAiBC,EAAxB,EAAwBA,aASlBC,GACkB,IAAtBV,GAA+C,eAAhB1Z,IAwDjC,OAlDA6S,qBAAU,WACR,IAAI,OAACqH,QAAD,IAACA,OAAD,EAACA,EAAiBG,UAClBD,EAuCJ,OArCAN,OAAiBlW,GACjBoW,EAAkBvJ,IAAY7F,SAE9B0P,MA3EQ,iDA2EG,CAACD,OAAQH,EAAgBG,SACjCE,MAAK,SAACC,GACL,GAAKL,EAAavH,QAAlB,CAEA,IAAK4H,EAASC,GACZ,MAAM,IAAIzP,MACR,4DAMJ,OAFAgP,EAAkBvJ,IAAY3F,WAEvB0P,EAASE,WAEjBH,MAAK,SAACI,GACL,GAAKR,EAAavH,QAAlB,CAEA,IAAO2G,EAAmCoB,EAAnCpB,QAAShP,EAA0BoQ,EAA1BpQ,KAAMiP,EAAoBmB,EAApBnB,QAASC,EAAWkB,EAAXlB,QAE/BG,EAAa,CACXL,QAASL,EAAgBK,GACzBhP,KAAM2O,EAAgB3O,GACtBiP,QAASN,EAAgBM,GACzBC,QAASP,EAAgBO,SAG5BmB,OAAM,SAACjL,GACDwK,EAAavH,UAElBkH,EAAiBnK,GACjBiK,EAAaN,GACbU,EAAkBvJ,IAAYpB,cAG3B,WACL6K,EAAgBW,WAEjB,CAACX,EAAiBC,EAAcC,IAM5B,2BAAIT,GAAX,IAAsBE,gBAAeE,mB,oBCtHhC,SAASe,IAOd,IAAMC,EAAWC,cALC,4CAgBlB,6BAAAlX,EAAA,6DAA8B6F,EAA9B,EAA8BA,aAA9B,kBAGUoR,EAASE,YAAwBtR,IAH3C,uBAKUoR,EAASG,YAAuBvR,IAL1C,uBAMUoR,EAASI,YAAwBxR,IAN3C,wBAOUoR,EAASK,YAA0BzR,IAP7C,yBAQUoR,EAASM,YAAsB1R,IARzC,yBASUoR,EAASO,YAAsB3R,IATzC,yBAUUoR,EAASQ,YAAqB5R,IAVxC,yBAWUoR,EAASS,YAAqB7R,IAXxC,yBAYUoR,EAASU,YAAwB9R,IAZ3C,yBAaUoR,EAASW,YAA0B/R,IAb7C,yBAcUoR,EAASQ,YAAqB5R,IAdxC,yBAeUoR,EAASY,YAAuBhS,IAf1C,yBAgBUoR,EAASa,YAAoBjS,IAhBvC,yBAiBUoR,EAASc,YAAuBlS,IAjB1C,yBAkBUoR,EAASe,YAA4BnS,IAlB/C,yBAmBUoR,EAASgB,YAAuBpS,IAnB1C,yBAoBUoR,EAASiB,YAAyBrS,IApB5C,yBAqBUoR,EAASkB,YAAuBtS,IArB1C,yBAsBUoR,EAASmB,YAA6BvS,IAtBhD,yBAuBUoR,EAASoB,YAA+BxS,IAvBlD,yBAwBUoR,EAASqB,YAA2BzS,IAxB9C,gIAhBkB,sBA8ClB,OAnC4B0S,uBAXV,6CAWqC,CAACtB,ICrBnD,SAASuB,IAKd,MAA+B9d,cAAxBma,EAAP,EAAOA,UAAW4D,EAAlB,EAAkBA,UAMlB,EAAkDpU,qBAAlD,mBAAOqU,EAAP,KAA0BC,EAA1B,KAqBA,OAdA5J,qBAAU,WAEJ0J,GAAa5D,IAAc/X,IAC7B6b,EACE,IAAIzR,MAAJ,gCAAmCrK,IAAgBC,KAAnD,OAOJ6b,OAAqB7Y,KACpB,CAAC2Y,EAAW5D,IAER,CACL+D,aAAc9b,IACd4b,oBACAG,eAAgBhE,IAAc/X,K,aCtD5Bgc,GAA+C,EAE9C,SAASC,EACdnT,EACAoT,GAMA,MAAsD3U,mBACpDyU,GADF,mBAAOG,EAAP,KAA4BC,EAA5B,KAQO7C,EAAgB8C,cAAhB9C,aAMD+C,EAAuCb,uBAnBpC,+CAqBP,CAAClC,IArBM,4CAsCT,WACEzQ,EACAoT,GAFF,eAAAhZ,EAAA,+EAK2BgD,YACrB4C,EAKA,IAAIyT,IAAaL,IAXvB,UAKUtC,EALV,OAcSL,EAAavH,QAdtB,iDAgBIoK,EAAuBxC,GAhB3B,mDAkBSL,EAAavH,QAlBtB,mDAoBIoK,EAAuBJ,GApB3B,0DAtCS,sBAkET,OAtCA/J,qBAAU,WACHiK,GAAiBpT,GAEtBwT,EAAqCxT,EAASoT,KAC7C,CAACpT,EAASwT,EAAsCJ,IAkC5CC,E,uHClEM,SAASK,EAAT,GAOC,IANdC,EAMa,EANbA,SACAC,EAKa,EALbA,OACAC,EAIa,EAJbA,cACAC,EAGa,EAHbA,QACAC,EAEa,EAFbA,gBACAC,EACa,EADbA,WAEA,OACE,cAAC,IAAD,CAEEC,aAAa,EACbrO,UAAS,0BAAqBmO,GAC9BH,OAAQA,EACRM,eAAgB,WACdL,EAAcD,IAEhBO,iBAAiB,gBACjBlI,KAAK,SACLoC,MAAK,aAED+F,QAAS,CAACC,OAAQ,OACfL,GAbT,SAgBE,cAAC,IAAD,UACE,qBAAKpO,UAAU,QAAf,SAAwB+N,OAhBrBG,K,yGCNCQ,E,4FA6BL,SAASC,IAKd,IAAMC,EAAsBvV,aAC1B,SAACC,GAAD,OAAmBA,EAAEC,UAAUW,uBAE3B2U,EAA2BxV,aAC/B,SAACC,GAAD,OAAmBA,EAAEC,UAAUuV,4BAOjC,EAAsCjW,qBAAtC,mBAAOK,EAAP,KAAoBC,EAApB,KACA,EAAwCN,mBACtC6V,EAAY3V,SADd,mBAAOgW,EAAP,KAAqBC,EAArB,KAQajU,EAAgBC,cAAtBC,KACP,EAAgC/L,cAAzBkL,EAAP,EAAOA,QAASC,EAAhB,EAAgBA,aACT6S,EAAqBF,cAArBE,kBACP,EACE5S,cADKwO,EAAP,EAAOA,QAASvO,EAAhB,EAAgBA,eAAgBC,EAAhC,EAAgCA,eAAgBC,EAAhD,EAAgDA,OAAQC,EAAxD,EAAwDA,SAOlD+Q,EAAWC,cAnCsC,4CAiDvD,WACEuD,EACAC,GAFF,mBAAA1a,EAAA,mEAKQ0Y,EALR,sBAMY,IAAIxR,MAAM,4BANtB,UASSuT,EATT,sBAUY,IAAIvT,MAAM,6BAVtB,UAaStB,EAbT,sBAcY,IAAIsB,MAAM,qBAdtB,UAiBSkT,EAjBT,sBAkBY,IAAIlT,MAAM,uCAlBtB,UAqBSmT,EArBT,uBAsBY,IAAInT,MAAM,4CAtBtB,WAyBSrB,EAzBT,uBA0BY,IAAIqB,MAAM,+BA1BtB,eA6BIsT,EAAgBN,EAAYpT,SAEtB6T,EAA6BC,4BACjCH,EAAiBI,WAIbC,EAA+C,CACnDV,EAAoBnV,gBACpB0V,EACAI,OAAON,EAAiBO,QACxBjT,OAAO0S,EAAiBQ,OACxBR,EAAiB7P,WAGbQ,EA5CV,aA6CMC,KAAMzF,GAAW,IACbW,EAAe,CAAC+E,SAAU/E,GAAgB,MA9CpD,UAkD4BN,EACtB,eACAoU,EAAyBlV,SAASC,QAClC0V,EACA1P,GAtDN,qDA2D6BoL,MAAM,GAAD,OAAIpa,IAAJ,sBAAwC,CAClE8e,OAAQ,QACRC,KAAM7Q,KAAKC,UAAU,CAEnBK,UAAW6P,EAAiB7P,YAE9BwQ,QAAS,CACP,eAAgB,sBAlE1B,kBAsEoBzE,GAtEpB,uBAuEc,IAAIzP,MAAM,mDAvExB,WA0EMsT,EAAgBN,EAAYlT,WAI1BpE,YAAgB6X,EAAiBI,aACjCjY,YAAgBgD,GA/ExB,kCAkFcqR,EACJoE,YAAmB,CACjBzV,UACAwU,sBACAvU,kBAtFZ,yBA2FcyV,EAAiBZ,GA3F/B,0DA+FI/V,EAAe,EAAD,IACd6V,EAAgBN,EAAY3O,UAhGhC,2DAjDuD,+BAqJxC+P,EArJwC,8EAqJvD,WAAgCZ,GAAhC,SAAA1a,EAAA,yDACO0a,EADP,0EAIUla,OAAO+a,SAASC,QAAQ,CAC5BN,OAAQ,oBACRO,OAAQ,CACNC,KAAM,QACN/d,QAAS+c,KARjB,uDAYIiB,QAAQC,IAAR,MAZJ,0DArJuD,sBAqKvD,MAAO,CACL3U,kBA5HAsT,IAAiBL,EAAYpT,SAC7ByT,IAAiBL,EAAYlT,UA4H7B6U,aAvKqD,8CAwKrDnX,cACA6V,eACArU,WACAoO,UACAvO,iBACAC,mB,SA1MQkU,K,kBAAAA,E,kBAAAA,E,sBAAAA,E,qBAAAA,M,sCCZL,IAAK4B,EAoBAC,EAYAC,EArCZ,sG,SAKYF,K,YAAAA,E,8BAAAA,E,sCAAAA,E,2BAAAA,E,wBAAAA,E,sBAAAA,E,sBAAAA,E,sBAAAA,E,oBAAAA,E,UAAAA,E,4CAAAA,E,gCAAAA,E,wBAAAA,E,oBAAAA,E,kBAAAA,E,0BAAAA,E,iBAAAA,M,cAoBAC,K,YAAAA,E,kBAAAA,E,WAAAA,M,cAYAC,K,gDAAAA,E,iCAAAA,M,uPC3BCC,EAAuB,uBACvBC,EAAyB,yBAa/B,SAASb,EAAT,GAQH,IAPFzV,EAOC,EAPDA,QACAwU,EAMC,EANDA,oBACAvU,EAKC,EALDA,aAMA,8CAAO,WAAgBoR,GAAhB,6CAAAjX,EAAA,yDACCmc,EADD,OACsB/B,QADtB,IACsBA,OADtB,EACsBA,EAAqBjV,SAASC,QACnDK,EAFD,OAEsB2U,QAFtB,IAEsBA,OAFtB,EAEsBA,EAAqBnV,gBAE1CmX,EAJD,OAI4BhC,QAJ5B,IAI4BA,OAJ5B,EAI4BA,EAAqB9U,IAAIC,MACxD,SAACC,GAAD,MAAoB,0BAAZA,EAAGlI,QAEP+e,EAPD,OAOcjC,QAPd,IAOcA,OAPd,EAOcA,EAAqB9U,IAAIC,MAC1C,SAACC,GAAD,MAAoB,YAAZA,EAAGlI,QAEPgf,EAVD,OAUqBlC,QAVrB,IAUqBA,OAVrB,EAUqBA,EAAqB9U,IAAIC,MACjD,SAACC,GAAD,MAAoB,mBAAZA,EAAGlI,QAEPif,EAbD,OAa4BnC,QAb5B,IAa4BA,OAb5B,EAa4BA,EAAqB9U,IAAIC,MACxD,SAACC,GAAD,MAAoB,0BAAZA,EAAGlI,QAIVsI,GACAH,GACA0W,GACAC,GACAG,GACAD,GACAD,EAxBE,uBA0BHpF,EAASuF,KA1BN,oDAyCOvU,YAAU,CAClBC,MAAO,CACL,CAACzC,EAAoB2W,EAA0B,CAACxW,IAChD,CAACH,EAAoB4W,EAAY,CAACzW,IAClC,CACEH,EACA6W,EACA,CAAC7W,EAAoBG,IAEvB,CAACH,EAAoB8W,EAA0B,CAAC3W,KAElDC,iBApDC,oCAqCD4W,EArCC,KAsCDC,EAtCC,KAuCDC,EAvCC,KAwCDC,EAxCC,KAwDGC,EAA2BC,YAAQC,IAAWC,OAAQN,GAGtDjP,EACJkP,GAAkBE,EAAkBD,EAAqBK,IAGrD1U,EACJoU,GAAkBE,EAAkBJ,EAAqBQ,IAErDvP,EACJ9K,YAAgBgD,KAAahD,YAAgB2F,IAC7C3F,YAAgBgD,KAAahD,YAAgB6K,GAE/CwJ,GAgB6BzP,EAfR,CACjBiG,cACAC,qBACAiP,iBACApU,iBAYD,aAACmT,KAAMO,GAAyBzU,KAvFhC,wDA+EHyP,EAASuF,KA/EN,uCAsFF,IAA4BhV,IAtF1B,qBAAP,sDA0FK,SAASgV,IACd,MAAO,CAACd,KAAMQ,K,iCC5HhB,wIAAO,IAAMgB,EAAsB,sBACtBC,EAAqB,qBAE3B,SAASC,IACd,MAAO,CAAC1B,KAAMwB,GAGT,SAASG,IACd,MAAO,CAAC3B,KAAMyB,K,yGCAJG,EAKPC,EAcOC,E,gHAnBAF,K,YAAAA,E,eAAAA,M,cAKPC,O,yCAAAA,I,iEAAAA,I,qCAAAA,I,iFAAAA,I,iCAAAA,I,oCAAAA,M,cAcOC,K,kBAAAA,E,yBAAAA,M,KAoCZ,IAAMC,EAAgB,GAEtB,SAASC,IAGiB,IAFxBC,EAEuB,uDAFQF,EAER,yCADtB/B,EACsB,EADtBA,KAAMlU,EACgB,EADhBA,QAEP,OAAQkU,GACN,KAAK6B,EAAWK,kBACd,MACEpW,GAAW,GADNtE,EAAP,EAAOA,SAAU2R,EAAjB,EAAiBA,UAAWjP,EAA5B,EAA4BA,QAAS6S,EAArC,EAAqCA,UAAW5S,EAAhD,EAAgDA,aAGhD,OAAO,2BACF8X,GADL,IAEE/X,UACA6S,YACA5D,YACA3R,WACA2C,iBAIJ,KAAK0X,EAAWM,8BACd,OAAOJ,EAGT,KAAKF,EAAWO,gBACd,MAAgBtW,GAAW,GAApBqE,EAAP,EAAOA,MAEP,OAAO,2BACF8R,GADL,IAEE9R,UAIJ,KAAK0R,EAAWQ,sCACd,MAA4CvW,GAAW,GAAhDwW,EAAP,EAAOA,kCAEP,OAAO,2BACFL,GADL,IAEEK,sCAIJ,KAAKT,EAAWU,cACd,MAAoBzW,GAAW,GAAxB0W,EAAP,EAAOA,UACP,MAAO,CAACA,aAGV,KAAKX,EAAWY,eACd,MAAkB3W,GAAW,GAAtB5B,EAAP,EAAOA,QAEP,OAAO,2BACF+X,GADL,IAEE/X,YAIJ,QACE,OAAO6X,GAIE,SAASW,EAAT,GAM2C,IAAD,IALvDxF,EAKuD,EALvDA,aACAyF,EAIuD,EAJvDA,aACAC,EAGuD,EAHvDA,gBACAC,EAEuD,EAFvDA,mBACAC,EACuD,EADvDA,gBAMA,EAA0BC,qBAA2Bf,EAAS,CAC5DM,kCAAmCrR,IAAYpI,UADjD,mBAAOoZ,EAAP,KAAc1G,EAAd,KAQMyH,EAAiBL,EACjBM,EAAyB/F,GAAgB9b,IAMzC8hB,EAAyBrG,sBAAYsG,EAAkB,CAC3DP,EACAX,EAAMO,YAGFY,EAA6BvG,uBA2EnC,SAA8BwG,GAAsB,IAAD,IACjD,KAAI,UAACpB,EAAMO,iBAAP,aAAC,EAAiBc,gBAAgB,OAEtCJ,EAAsB,UAACjB,EAAMO,iBAAP,aAAC,EAAiBc,kBA9E2B,CACnEJ,EADmE,UAEnEjB,EAAMO,iBAF6D,aAEnE,EAAiBc,iBAgEnB,SAASC,EAAT,GAAuD,IAArBrZ,EAAoB,oBACpDqR,EAAS,CACPyE,KAAM6B,EAAWY,eACjB3W,QAAS,CACP5B,aA/FiD,4CAoHvD,WACEsZ,EACAC,GAFF,eAAAnf,EAAA,yDAIQof,EAAe7B,EAAWQ,sCAML,kBAAhBmB,EAVb,oDAYEjI,EAAS,CACPyE,KAAM0D,EACN5X,QAAS,CAACwW,kCAAmCrR,IAAY7F,YAGvDoY,EAjBN,gCAmBUC,EAAgBD,GAnB1B,OAsBEjI,EAAS,CACPyE,KAAM0D,EACN5X,QAAS,CAACwW,kCAAmCrR,IAAY3F,aAxB7D,4CApHuD,+BAoJxC6X,EApJwC,8EAoJvD,WAAgCK,GAAhC,uBAAAlf,EAAA,kEAES2d,EAAMO,UAFf,iEAI2BP,EAAMO,UAAUmB,UAAUH,GAJrD,cAIUhc,EAJV,OAMU2C,EAAqB,IAAIyZ,IAAKpc,GANxC,SAS4B2C,EAAa0Z,IAAIC,cAT7C,0CASW5Z,EATX,sBAYU0Y,QAZV,IAYUA,OAZV,EAYUA,IAZV,oBAcIrH,EAdJ,KAeYsG,EAAWK,kBAfvB,KAiBQhY,EAjBR,UAmByBC,EAAa0Z,IAAIE,IAAIC,QAnB9C,yBAoBQxc,EApBR,KAqBQ2C,EArBR,MAiBQD,QAjBR,KAkBQ6S,WAAW,EACX5D,UAnBR,KAoBQ3R,SApBR,KAqBQ2C,aArBR,YAeM6V,KAfN,KAgBMlU,QAhBN,uEAyBIyP,EAAS,CACPyE,KAAM6B,EAAWO,gBACjBtW,QAAS,CACPqE,MAAO,CACLqT,cACArT,MAAO,IAAI3E,MAAJ,+BAAkCgY,EAAlC,MACPxD,KAAM8B,EAAmBmC,YA/BnC,2DApJuD,kEA6LvD,kCAAA3f,EAAA,yFAEU2d,EAAMza,gBAFhB,iBAEU,EAAgB0c,aAF1B,aAEU,UAFV,eAQIjC,EAAMO,WARV,qCAQ8BP,EAAMO,UAAU2B,sBAR9C,8BAWUtB,QAXV,IAWUA,OAXV,EAWUA,IAXV,OAcItH,EAAS,CAACyE,KAAM6B,EAAWM,gCAd/B,kDAgBUqB,GAAsB,UAAAvB,EAAMO,iBAAN,eAAiBc,iBAAkB,GAE/D/H,EAAS,CACPyE,KAAM6B,EAAWO,gBACjBtW,QAAS,CACPqE,MAAO,CACLqT,cACArT,MAAO,IAAI3E,MAAJ,oCACwBgY,GAAe,WADvC,MAGPxD,KAAM8B,EAAmBsC,eA1BnC,2DA7LuD,sBA8NvD,OA5LA/Q,qBAAU,WAAO,IAAD,IACR7L,EAAWya,EAAMza,SAQvB,OALQ,OAARA,QAAQ,IAARA,GAAA,UAAAA,EAAU6c,UAAV,cAAA7c,EAAe,kBAAmB+b,GAG1B,OAAR/b,QAAQ,IAARA,GAAA,UAAAA,EAAU6c,UAAV,cAAA7c,EAAe,eAAgB4b,GAExB,WAAO,IAAD,IAEH,OAAR5b,QAAQ,IAARA,GAAA,UAAAA,EAAU8c,sBAAV,cAAA9c,EAA2B,kBAAmB+b,GACtC,OAAR/b,QAAQ,IAARA,GAAA,UAAAA,EAAU8c,sBAAV,cAAA9c,EAA2B,eAAgB4b,MAE5C,CAACA,EAA4BnB,EAAMza,WAGtC6L,qBAAU,WACJ4O,EAAMO,WAEVjH,EAAS,CACPyE,KAAM6B,EAAWU,cACjBzW,QAAS,CACP0W,UAAW,IAAI+B,IAAU,CACvBC,eAAe,EACfC,QAASC,IAAaC,IAAW1B,IACjCH,kBACA8B,MAAO5B,SAIZ,CAACF,EAAiBb,EAAMO,UAAWS,EAAgBD,IAGtD3P,qBAAU,WAAO,IAAD,EAGZ4O,EAAMK,oCAAsCrR,IAAY3F,WACxD2W,EAAMK,oCAAsCrR,IAAY7F,SAxEL,sCA6ErDyZ,CAAgC,UAC9B5C,EAAMO,iBADwB,aAC9B,EAAiBc,eACjBJ,KAED,CACDA,EACAjB,EAAMK,kCAFL,UAGDL,EAAMO,iBAHL,aAGD,EAAiBc,iBA0IZ,2BACFrB,GADL,IAEEkB,mBACA2B,oBAjOqD,2CAkOrDhC,sB,iwDClTSiC,EAAkB,kBAClBC,EAAwB,wBACxBC,EAA0B,0BAC1BC,EAAwB,wBACxBC,EAAyB,yBACzBC,EAA6B,6BAC7BC,EAAuB,uBACvBC,EAAwB,wBACxBC,EAAgC,gCAChCC,EAAsB,sBACtBC,EAA2B,2BAC3BC,EAAqB,qBACrBC,EAAqB,qBACrBC,EAAoB,oBACpBC,EAAuB,uBACvBC,EAAyB,yBACzBC,EAAsB,sBACtBC,EAAoB,oBACpBC,EAAmB,mBACnBC,EAAuB,uBACvBC,EAAkB,kBAClBC,EAA4B,4BAElC,SAASC,IACd,MAAO,CACLrG,KAAM+E,GAIH,SAASpJ,EAAwBxR,GACtC,8CAAO,WAAgBoR,GAAhB,uBAAAjX,EAAA,mEAEC6F,EAFD,iCAG2C,mCAH3C,gBAGemc,EAHf,EAGMC,QAGDC,EAAiCF,EACjC/c,EAAkB/G,IAA8BpB,KAChDqI,EAAW,IAAIU,EAAa0Z,IAAI4C,SACpCD,EACAjd,GAGFgS,EACEmL,GAAqB,CACnB1G,KAAMkF,EACNtb,IAAK4c,EACLjd,kBACAE,cAlBH,+HAAP,sDA4BK,SAASiS,EAAuBvR,GACrC,8CAAO,WAAgBoR,GAAhB,uBAAAjX,EAAA,mEAEC6F,EAFD,iCAG0C,mCAH1C,gBAGewc,EAHf,EAGMJ,QAGDK,EAAgCD,EAChCpd,EAAkBhH,IAA6BnB,KAC/CqI,EAAW,IAAIU,EAAa0Z,IAAI4C,SACpCG,EACArd,GAGFgS,EACEmL,GAAqB,CACnB1G,KAAMqF,EACNzb,IAAKgd,EACLrd,kBACAE,cAlBH,+HAAP,sDA4BK,SAASgS,EAAwBtR,GACtC,8CAAO,WAAgBoR,GAAhB,uBAAAjX,EAAA,mEAEC6F,EAFD,iCAG2C,mCAH3C,mBAGe0c,EAHf,EAGMN,QAID7H,EAAiCmI,EACjCtd,EAAkBjH,IARvB,uBAWO,IAAIkJ,MAAM,+CAXjB,QAcK/B,EAAW,IAAIU,EAAa0Z,IAAI4C,SACpC/H,EACAnV,GAGFgS,EACEmL,GAAqB,CACnB1G,KAAMsF,EACN1b,IAAK8U,EACLnV,kBACAE,cAxBH,+HAAP,sDAkCK,SAASqd,EACd3c,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYb,EACZc,uBAAwBC,IAAqBC,OAC7CC,oBAAqB9G,IAAkB+G,eACvC9d,kBACA+d,WAAY,kBAAM,mCAClBnd,iBAIG,SAASod,EACdpd,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYZ,EACZa,uBAAwBC,IAAqBC,OAC7CC,oBAAqB9G,IAAkBkH,uBACvCje,kBACA+d,WAAY,kBACV,mCACFnd,iBAIG,SAASgS,EACdhS,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYjB,EACZqB,oBAAqBhH,IAAoBqH,WACzCR,uBAAwBC,IAAqBQ,WAC7Cne,kBACA+d,WAAY,kBAAM,oCAClBnd,iBAIG,SAAS+R,EACd/R,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAY/B,EACZmC,oBAAqB/G,IAAsBsH,KAC3CV,uBAAwBW,IAAuBC,KAC/Cte,kBACAue,aAAa,EACbR,WAAY,kBAAM,oCAClBnd,iBAIG,SAASiS,EACdjS,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYf,EACZmB,oBAAqBhH,IAAoB2H,QACzCd,uBAAwBC,IAAqBc,QAC7Cze,kBACA+d,WAAY,kBAAM,oCAClBnd,iBAIG,SAASkS,EACdlS,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYxB,EACZ4B,oBAAqBhH,IAAoB6H,WACzChB,uBAAwBC,IAAqBgB,WAC7C3e,kBACA+d,WAAY,kBAAM,oCAClBnd,iBAIG,SAAS4R,EACd5R,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYpB,EACZwB,oBAAqBhH,IAAoB+H,SACzClB,uBAAwBC,IAAqBkB,SAC7C7e,kBACA+d,WAAY,kBAAM,oCAClBnd,iBAIG,SAAS8R,EACd9R,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYhC,EACZoC,oBAAqBhH,IAAoBuH,KACzCV,uBAAwBC,IAAqBW,KAC7Cte,kBACA+d,WAAY,kBACV,oCACFnd,iBAIG,SAASsS,EACdtS,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYnB,EACZuB,oBAAqBhH,IAAoBiI,IACzCpB,uBAAwBC,IAAqBoB,IAC7C/e,kBACA+d,WAAY,kBAAM,oCAClBnd,iBAIG,SAASwS,EACdxS,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYzB,EACZ6B,oBAAqBhH,IAAoBmI,aACzCtB,uBAAwBC,IAAqBsB,aAC7Cjf,kBACA+d,WAAY,kBACV,oCACFnd,iBAIG,SAAS6R,EACd7R,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYhB,EACZoB,oBAAqBhH,IAAoBqI,SACzCxB,uBAAwBC,IAAqBwB,SAC7Cnf,kBACA+d,WAAY,kBAAM,oCAClBnd,iBAIG,SAAS2R,EACd3R,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYrB,EACZyB,oBAAqBhH,IAAoBuI,UACzC1B,uBAAwBC,IAAqB0B,UAC7Crf,kBACA+d,WAAY,kBAAM,oCAClBnd,iBAIG,SAAS0R,GACd1R,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYtB,EACZ0B,oBAAqBhH,IAAoByI,UACzC5B,uBAAwBC,IAAqB4B,UAC7Cvf,kBACA+d,WAAY,kBAAM,oCAClBnd,iBAIG,SAASyR,GACdzR,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAY7B,EACZiC,oBAAqBhH,IAAoB2I,cACzC9B,uBAAwBC,IAAqB8B,cAC7Czf,kBACA+d,WAAY,kBACV,oCACFnd,iBAIG,SAASoS,GACdpS,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYd,EACZkB,oBAAqBhH,IAAoB6I,YACzChC,uBAAwBC,IAAqBgC,YAC7C3f,kBACA+d,WAAY,kBAAM,oCAClBnd,iBAIG,SAASuS,GACdvS,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAY5B,EACZgC,oBAAqBhH,IAAoB+I,kBACzClC,uBAAwBC,IAAqBkC,kBAC7C7f,kBACA+d,WAAY,kBACV,oCACFnd,iBAIG,SAASqS,GACdrS,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYlB,EACZsB,oBAAqB/G,IAAsBgI,IAC3CpB,uBAAwBW,IAAuBU,IAC/C/e,kBACAue,aAAa,EACbR,WAAY,kBAAM,oCAClBnd,iBAIG,SAASyS,GACdzS,EACAZ,GAEA,OAAOwd,GAAyB,CAC9BC,WAAYvB,EACZ2B,oBAAqB/G,IAAsBgJ,MAC3CpC,uBAAwBW,IAAuB0B,MAC/C/f,kBACAue,aAAa,EACbR,WAAY,kBAAM,oCAClBnd,iBASG,SAASmS,GACdnS,EACAZ,GAEA,8CAAO,WAAgBgS,EAAyBgO,GAAzC,mBAAAjlB,EAAA,mEAEC6F,EAFD,oBAG2Bof,IAAWlgB,UAAUW,oBAHhD,uBAMCiW,QAAQuJ,KACN,oEAPH,6BAYGC,EAA4B,KAC5BliB,EAAkBgC,GAAmB,IAbxC,kCAgB2BmgB,YAAqBniB,EAAS4C,GAhBzD,QAgBCsf,EAhBD,kBAmBIliB,GAAYkiB,EAnBhB,kCAoBiBE,YACdzC,IAAqBC,OADU,UAE/BoC,IAAWlgB,UAAUW,2BAFU,aAE/B,EAA0CP,UAtB7C,eAoBClC,EApBD,iBAyB2BmiB,YAAqBniB,EAAS4C,GAzBzD,QAyBCsf,EAzBD,oBAgCOA,EAhCP,OAiCM,mBAjCN,QAsCM,2BAtCN,0CAkCgB3C,EAAmB3c,EAAc5C,EAAjCuf,CACXvL,EACAgO,GApCL,kEAuCgBhC,EAA2Bpd,EAAc5C,EAAzCggB,CACXhM,EACAgO,GAzCL,uDA4CS,IAAI/d,MAAM,4CA5CnB,0DAgDHyU,QAAQuJ,KAAR,yGAhDG,0DAAP,wDAuDK,SAAS9C,GAAT,GAKmB,IAJxB1G,EAIuB,EAJvBA,KACGlU,EAGoB,iBACvB,OAAO,aACLkU,QACGlU,GAIA,SAASib,GAAT,GA2BH,IA1BFC,EA0BC,EA1BDA,WACAI,EAyBC,EAzBDA,oBACAH,EAwBC,EAxBDA,uBACA1d,EAuBC,EAvBDA,gBAuBC,IAtBDue,mBAsBC,SArBDR,EAqBC,EArBDA,WACAnd,EAoBC,EApBDA,aAsBA,8CAAO,WAAgBoR,EAAyBgO,GAAzC,yBAAAjlB,EAAA,+EAE8BgjB,IAF9B,mBAEasC,EAFb,EAEIrD,QAEDsD,EAAyBD,EAJ5B,KAODrgB,EAPC,0BAQAue,EARA,kCASSgC,YACJ7C,EADuB,UAEvBsC,IAAWlgB,UAAUW,2BAFE,aAEvB,EAA0CP,UAX/C,6DAaSkgB,YACJ1C,EADqB,UAErBsC,IAAWlgB,UAAUW,2BAFA,aAErB,EAA0CP,UAf/C,8CAMGlC,EANH,KAkBHgU,EACEmL,GAAqB,CACnB1G,KAAMgH,EACNpd,IAAKigB,EACLtgB,gBAAiBhC,EACjB0f,uBAAwBG,EACxB3d,SAAU,IAAIU,EAAa0Z,IAAI4C,SAASoD,EAAatiB,MAxBtD,kDA6BH0Y,QAAQuJ,KAAR,wBACmBvC,EADnB,yFA7BG,0DAAP,wD,gDC1hBF,8CAWO,SAAS3T,EACdyW,GAES,IADTC,EACQ,uDADY,EAEpB,GAAa,OAATD,GAAiC,qBAATA,EAAsB,MAAO,MAEzD,GAAIE,YAAkBF,GAAO,CAC3B,IAAMG,EAAeH,EAAKI,UAAU,EAAGH,GACjCI,EAAaL,EAAKI,UAAUJ,EAAKrlB,OAAS,GAChD,OAAOwlB,EAAe,MAAQE,EAG9B,OAAOL,I,+GClBJ,SAAeD,EAAtB,oC,4CAAO,WACLO,EACAC,GAFK,SAAAhmB,EAAA,kEAKEgmB,EALF,sBAMK,IAAI9e,MAAM,8CANf,uBASU8e,EAAoB5gB,QAC9BogB,oBAAoBlG,IAAK2G,MAAMC,KAAKH,IACpCne,OAXA,6I,wICHMue,EAA8B,8BAEpC,SAASC,EAAyB5e,GACvC,OAAO,aAACkU,KAAMyK,GAAgC3e,K,2GCU1C6e,EAAW,CAAC,GAAI,IAAK,IAAK,KAC1BC,EAAa,CAACC,SAAU,YACxBC,EAAa,CACjB3V,OAAQ,EACRD,MAAO,GAGF,SAAS6V,EAAcziB,GAC5B,IAAOyP,EAA6CzP,EAA7CyP,UAAP,EAAoDzP,EAAlCgI,kBAAlB,MAA+B,IAA/B,EAAqC0H,EAAe1P,EAAf0P,YAC/BgT,EAAiB,2BAAOhT,GAAP,IAAoBiT,QAAQ,IAEnD,EAAkCtiB,mBAAiB,GAAnD,mBAAOuiB,EAAP,KAAkBC,EAAlB,KAaA,OAXA9X,qBAAU,WACR,IAAM+X,EAAarW,aACjB,kBAAMoW,GAAa,SAACE,GAAD,OAAgBA,EAAY,GAAKV,EAASjmB,YAC7D4L,GAGF,OAAO,WACL0E,cAAcoW,MAEf,CAAC9a,IAGF,qCACE,uBAAM,aAAYyH,EAAWQ,MAAOqS,EAApC,UACE,+BAAOM,GAAa,GAAKP,EAAS,KAClC,+BACGO,GAAa,GACZ,cAAC,IAAD,2BAAYF,GAAZ,aAAgCL,EAAS,QAG7C,+BACGO,GAAa,GACZ,cAAC,IAAD,2BAAYF,GAAZ,aAAgCL,EAAS,QAG7C,+BACGO,GAAa,GACZ,cAAC,IAAD,2BAAYF,GAAZ,aAAgCL,EAAS,WAK/C,sBAAMpS,MAAOuS,EAAb,uB,wPCRCxf,EAAa2F,IAAb3F,UACAH,EAA2DvC,IAA3DuC,iBAA6BmgB,EAA8B1iB,IAAzC0C,UAA8BF,EAAWxC,IAAXwC,QACjDmgB,EAA0CC,IAEjC,SAASC,EAAanjB,GACnC,IACEojB,EAEEpjB,EAFFojB,eADF,EAGIpjB,EADFE,SAAWmjB,EAFb,EAEaA,cAAejjB,EAF5B,EAE4BA,iBAAkByI,EAF9C,EAE8CA,uBAO9C,EAaIzI,GAAoB,CAACmD,IAAK,CAACC,QAAS,KAbxC,IACED,IADF,IAEIC,QAFJ,IAGM8f,QAASC,OAHf,MAGiCN,EAHjC,MAIM3pB,KAAMkqB,OAJZ,MAI2B,GAJ3B,MAKMrM,KAAMsM,OALZ,MAK2B,GAL3B,MAMMC,MAAOC,OANb,MAM6B,EAN7B,MAOMC,IAAKC,OAPX,MAOyB,EAPzB,MAQMvgB,SAAUwgB,OARhB,MAQmC,EARnC,MAUI/e,UAAWgf,OAVf,MAUmC,GAVnC,MAYEjf,IAAKkf,OAZP,MAYqB,GAZrB,EAmBA,EACE3jB,qBAAmC,OAAhBD,QAAgB,IAAhBA,OAAA,EAAAA,EAAkB0E,IAAI1I,SAAU,IAAM,GAD3D,mBAAO6nB,EAAP,KAAkCC,EAAlC,KAGMC,GAAwBlb,iBAA2B,CACvDkO,KAAMsM,EACNH,QAASC,EACTK,IAAKC,EACLvqB,KAAMkqB,EACN1e,IAAKkf,EACL1gB,SAAUwgB,EACVM,MAAO5oB,KAAS,GAChBkoB,MAAOC,EACP5e,UAAWgf,IAGb,GAAsC1jB,qBAAtC,qBAAOK,GAAP,MAAoBC,GAApB,MAMM0jB,GAA2Bpb,iBAA8B,CAC7Dqb,wBAAyB,KAOrBvjB,GAAYF,aAAY,SAACC,GAAD,OAAmBA,EAAEC,aAE7CU,GAAqBZ,aACzB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCT,mBAOtD,GAAgCvK,cAAzBkL,GAAP,GAAOA,QAASC,GAAhB,GAAgBA,aAEhB,GAA2DC,cAApDC,GAAP,GAAOA,eAAgBC,GAAvB,GAAuBA,eAAgBC,GAAvC,GAAuCA,OAAQC,GAA/C,GAA+CA,SAE/C,GAKIC,cAJFC,GADF,GACEA,WACAC,GAFF,GAEEA,qBACAC,GAHF,GAGEA,iBACA0H,GAJF,GAIEA,wBAGF,GACEua,cADKC,GAAP,GAAOA,0BAA2BC,GAAlC,GAAkCA,oBAGrBliB,GAAgBC,cAAtBC,KAEP,GAKIiiB,YAAkBtB,GAJpBuB,GADF,GACEA,oBACAC,GAFF,GAEEA,yBACAC,GAHF,GAGEA,qBACAC,GAJF,GAIEA,iBAOIliB,GACJV,KAAaW,GACbX,KAAaY,GACb0hB,KAA8B3hB,GAC9B2hB,KAA8B1hB,EAE1BC,GAASkhB,EACX/hB,KAAa8gB,EACb9gB,KAAa8gB,GACbwB,KAA8BxB,EAE5B/f,GAAoBL,IAAeG,IAAUf,GA1GU,8CA+I7D,oFAAAhG,EAAA,kEAESyF,GAFT,sBAGY,IAAIyB,MAAM,sCAHtB,UAMUoC,GACJ,UAAC+d,GAAiBjjB,SAAlB,eAAqCkF,WAAY,GAE7Cyf,EAAWC,YAAqB1f,EAAUvE,IATpD,sBAYYmC,MAAM,uCAAD,OAAwCoC,EAAxC,MAZjB,UAeU2f,GACJ,UAAC5B,GAAiBjjB,SAAlB,eAAqCiD,UAAW,GAE5C6hB,EAlBV,WAmBmB,OAAb7B,QAAa,IAAbA,OAAA,EAAAA,EAAe9f,IAAIC,WAAnB,OAA8BpD,QAA9B,IAA8BA,OAA9B,EAA8BA,EAAkBmD,IAAIC,gBAnB1D,aAkBoC,EAE7BmB,SAASugB,iBAGPjB,IAA6BZ,EAvBtC,0BAiCUA,EARF9f,IAzBR,IA0BUC,QACQ2hB,EA3BlB,EA2BY7rB,KACM8rB,EA5BlB,EA4BYjO,KACUkO,EA7BtB,EA6BY1gB,SAES2gB,EA/BrB,EA+BUvgB,UA/BV,UAoCsC0f,GAAoB,CAClDc,oBAAqB,CACnBjsB,KAAM6rB,EACNhO,KAAMiO,EACNzgB,SAAU0gB,EACVtgB,UAAWugB,GAEb7hB,eAAgBshB,EAAS9jB,gBACzByW,KAAM8N,eAAatlB,WA5C3B,iBAoCaulB,EApCb,EAoCaA,KAAM7e,EApCnB,EAoCmBA,UAYbud,GAAsBrZ,QAAU,CAC9BqM,KAAMsO,EAAKjiB,QAAQ2T,KACnBmM,QAASmC,EAAKjiB,QAAQ8f,QACtBM,IAAK6B,EAAKjiB,QAAQogB,IAClBtqB,KAAMmsB,EAAKjiB,QAAQlK,KACnBwL,IAAK8B,EACLtD,SAAUmiB,EAAKjiB,QAAQF,SACvB8gB,MAAOqB,EAAKrB,MACZV,MAAO+B,EAAKjiB,QAAQkgB,MACpB3e,UAAW0gB,EAAK1gB,WAGlBmf,GAA6B,GA5DnC,iBAgEMC,GAAsBrZ,QADjBqM,EA/DX,EA+DWA,KAAMmM,EA/DjB,EA+DiBA,QAASM,EA/D1B,EA+D0BA,IAAKtqB,EA/D/B,EA+D+BA,KAAMwL,EA/DrC,EA+DqCA,IAAKxB,EA/D1C,EA+D0CA,SAAU8gB,EA/DpD,EA+DoDA,MAAOV,EA/D3D,EA+D2DA,MAAO3e,EA/DlE,EA+DkEA,UASxD2gB,EAAgCC,kCACpC,CACEniB,QAAS,CACP2T,OACAmM,UACAM,MACAtqB,OACAgK,SAAUA,EAAS3F,WACnB+lB,SAEF5e,MACAsf,QACArf,UAAW6gB,SAAS7gB,IAEtBlD,IAGIgkB,EAzFV,CA0FMpkB,GACAwjB,GA3FN,mBA4FUC,GAAoB,IA5F9B,CA6FMQ,IAGIte,EAhGV,aAiGMC,KAAMzF,IAAW,IACbW,GAAe,CAAC+E,SAAU/E,IAAgB,MAlGpD,UAqGUN,GACJ,iBACA8iB,EAAS5jB,SAASC,QAClBykB,EACAze,GAzGN,QA6GIyB,IA7GJ,kDA+GIlI,GAAe,EAAD,IA/GlB,2DA/I6D,sBAwT7D,OAxMAoK,qBAAU,WACJqY,GAAkByB,KAAyB7hB,KAQxC8hB,IAAoBF,KACvBP,GAAyBvZ,QAAzB,2BACKuZ,GAAyBvZ,SAD9B,IAEEwZ,wBAAyBM,MAK7B5a,GAAwBtN,OAAO+H,OAAO4f,GAAyBvZ,aAEhE,CACDsY,EACAwB,GACAC,GACAC,GACA9a,KA0KE2a,IACFhN,QAAQuJ,KAAR,4DACuDyD,GAAoBhmB,UAK3E,qCACE,gCACE,wBACE6I,UAAU,0BACVC,SAAUrF,IAAca,GACxByE,QAAStF,IAAca,GAAoB,aA9TU,4CA2TvD,SAIGL,GAAc,cAAC,IAAD,IAAaG,GAAS,OAAS,YAGhD,cAAC,IAAD,CACE8E,MAAOnH,GACPoH,WAAW,yBAKZ7E,IACC,qBAAKuE,UAAU,gCAAf,SApER,WAEE,GACEtF,KAAaW,GACb2hB,KAA8B3hB,EAE9B,MAAO,mCAIT,OAAQX,IACN,KAAKY,EACH,OACE,qCACE,cAAC,IAAD,CACEkF,WAAY,IACZC,SAAUC,IACVC,mBAAiB,EACjBC,OAAQ,SAACzJ,GACP,OAAO,cAAC,IAAD,UAAuBA,GAAVA,MAIxB,cAAC,IAAD,CAAc4J,IAAKxG,GAAgByG,WAAS,OAGlD,KAAKwa,EACH,OACE,qCACE,sDAEA,cAAC,IAAD,CAAcza,IAAKxG,QAGzB,QACE,OAAO,MAkCF0G,KAIJrG,IACC,wBACEoF,UAAU,wBACVE,QAASrF,GAFX,4CAQJ,cAACC,GAAD,CAAkBoG,MAAM,qC,uKCjWjB9R,EAAmBkvB,wBAC9B,IAoBa,SAASC,EAAT,GAOY,IAAD,EANxBxQ,EAMwB,EANxBA,SACAX,EAKwB,EALxBA,aAKwB,IAJxByF,oBAIwB,MAJTf,IAAa0M,KAIJ,EAHxB1L,EAGwB,EAHxBA,gBACAC,EAEwB,EAFxBA,mBACAC,EACwB,EADxBA,gBAMMyL,EAAyBhd,iBAC7B,IAAIqS,IAAK,IAAIA,IAAK4K,UAAUC,kBAAkBjtB,OAOhD,EAAgDmH,qBAAhD,mBAAO+lB,EAAP,KAAyBC,EAAzB,KAQMC,EAAyD,CAC7D1R,eACAyF,eACAC,kBACAC,qBACAC,mBAOF,EAWIJ,YAAoBkM,GAVtB1kB,EADF,EACEA,QACA6S,EAFF,EAEEA,UACAoG,EAHF,EAGEA,iBACA2B,EAJF,EAIEA,oBACA3U,EALF,EAKEA,MACAmS,EANF,EAMEA,kCANF,IAOEnJ,iBAPF,MAOcuV,EAPd,MAQElnB,gBARF,gBAQa+mB,EAAuBnb,eARpC,aAQa,EAAgCyb,gBAR7C,MASE1kB,oBATF,MASiBokB,EAAuBnb,QATxC,EAUEoP,EAVF,EAUEA,UAQFnP,qBAAU,WAIL,IAAD,EAFC0J,GACDuF,IAAsCrR,IAAY3F,YAElD,UAAAijB,EAAuBnb,eAAvB,SAAgCyQ,IAAIE,IACjCC,QACAjJ,KAAK4T,GACLvT,OAAM,kBAAMuT,OAAoBvqB,SAEpC,CAAC2Y,EAAWuF,IAMf,IAAMwM,EAA0C,CAC9C5kB,UACA6S,YACAoG,mBACA2B,sBACA3U,QACAmS,oCACAnJ,YACA3R,WACAsb,kBACA3Y,eACAqY,aAGF,OACE,cAACtjB,EAAiB6vB,SAAlB,CAA2B5pB,MAAO2pB,EAAlC,SACGjR,M,oGC3IDmR,EAAe,SAAC1mB,GAAD,MAAyB,CAC5C2mB,WAAW,WAAD,OACR3mB,EAAMkO,UAAY,IADV,wCAGV0Y,QAAS,IAGLC,EAAwC,CAC5CC,SAAU,CAACF,QAAS,GACpBG,QAAS,CAACH,QAAS,GACnBI,QAAS,CAACJ,QAAS,GACnBK,OAAQ,CAACL,QAAS,IAGL,SAASve,EAAOrI,GAC7B,IAAO2iB,EAAU3iB,EAAV2iB,OAEP,OACE,cAAC,IAAD,CACEuE,QAAM,EACNC,QAAmBrrB,IAAfkE,EAAMonB,MAAqBpnB,EAAMonB,KACrCC,QAASrnB,EAAMkO,UAvBI,IAoBrB,SAIG,SAACyY,GAAD,OACChE,EACE,sBACE1S,MAAK,2BACAyW,EAAa1mB,IACb6mB,EAAiBF,IAHxB,SAKG3mB,EAAMuV,WAGT,qBACEtF,MAAK,2BACAyW,EAAa1mB,IACb6mB,EAAiBF,IAHxB,SAKG3mB,EAAMuV,gB,kHC5CJ,SAAS3N,EACtB5H,GAEA,IAAO6H,EAAqB7H,EAArB6H,MAAOC,EAAc9H,EAAd8H,WAMd,EAAoCzH,oBAAkB,GAAtD,mBAAOinB,EAAP,KAAmBC,EAAnB,KAWMC,EACa,oBAAV3f,IACgC,QAAtC,OAACA,QAAD,IAACA,OAAD,EAACA,EAA4B4f,OAC5B,yCAAyCC,KACvC9oB,aAAqB,OAALiJ,QAAK,IAALA,OAAA,EAAAA,EAAOlJ,UAAW,MAGlCgpB,EACkB,kBAAf7f,EAA0BA,EAAaA,IAE1C8f,EACkB,kBAAf9f,GACU,oBAAVD,GACPjJ,YAAgBkJ,KAAgBlJ,aAAqB,OAALiJ,QAAK,IAALA,OAAA,EAAAA,EAAOlJ,UAAW,IAQpE,OAAKkJ,GAAS2f,EAAgC,KAG5C,cAAC,IAAD,UACE,sBAAKhgB,UAAU,cAAf,UACE,mBAAGA,UAAU,gBAAb,SAA8BmgB,IAE7B9f,IAAU+f,GACT,oDAAa5nB,EAAM6nB,cAAnB,cACE,yBACE,gBAAeP,EACf9f,UAAU,gBACVE,QAAS,kBAAM6f,GAAeD,IAC9BrX,MAAO,CAAC6X,OAAQ,UAAWC,QAAS,QAJtC,SAKE,8CAGF,mBAAGvgB,UAAU,gBAAb,SACE,gCACoB,oBAAVK,EAAuBA,IAAUA,EAAMlJ,uB,gbCvDxD,SAAeuS,EAAtB,0C,4CAAO,WACL8W,EACAC,EACAC,EACA9gB,EACA+gB,GALK,SAAAnsB,EAAA,+EAQE,IAAIosB,QAAJ,uCAAgC,WAAOhxB,EAASixB,GAAhB,qBAAArsB,EAAA,sEAE7BssB,EAAK/W,IACL2F,EAAS+Q,EAAwBD,GAHJ,SAMjB9Q,EAAM,WAAN,cAAUgR,IAAiBK,YAAY,CACvDlhB,KAAMD,EAAYC,KAClBxK,MAAOuK,EAAYvK,QARc,cAM7B2rB,EAN6B,OAW7BC,EAAU,IAAIH,EAAGE,GACpBE,cAAc,EAAGnX,IAAUoX,YAC3BC,WAbgC,SAe7B1R,EAAM,WAAN,cAAUgR,IACbW,KADG,2BAECzhB,GAFD,IAGFohB,IAAKC,KAEN1M,GAAG,mBAAmB,SAAUhL,GAE/BoX,GAAaA,EAAUpX,MAExBgL,GAAG,WAAW,SAAU5K,GAEvB/Z,EAAQ+Z,MAET4K,GAAG,SAAS,SAAClU,GAEZwgB,EAAOxgB,MA9BwB,yDAkCnCwgB,EAAO,EAAD,IAlC6B,0DAAhC,0DARF,4C,2CCZA,SAAehH,EAAtB,oC,4CAAO,WACLphB,EACA+hB,GAFK,SAAAhmB,EAAA,kEAKEgmB,EALF,sBAMK,IAAI9e,MAAM,8CANf,uBASU8e,EAAoB5gB,QAC9BigB,kBAAkB/F,IAAK2G,MAAMC,KAAKjiB,IAClC2D,OAXA,6I,iCCDP,SAASklB,EACP/D,GAEA,IACE,IAAM9lB,EAAO,OAAG8lB,QAAH,IAAGA,OAAH,EAAGA,EAAU9jB,gBAE1B,IAAKhC,EACH,MAAM,IAAIiE,MAAJ,gDAGR,OAAOjE,EACP,MAAO4I,GACP,MAAMA,GAYH,SAASnE,EACdpK,EACAyH,GAEA,IACE,OAAQzH,GACN,KAAKslB,IAAqB8B,cACxB,MAAO,GACT,KAAK9B,IAAqBgB,WACxB,OAAOkJ,EAA0B/nB,EAAUgoB,oBAC7C,KAAKnK,IAAqB4B,UAE1B,KAAK5B,IAAqB0B,UACxB,MAAO,GACT,KAAK1B,IAAqBkB,SACxB,OAAOgJ,EAA0B/nB,EAAUioB,kBAC7C,KAAKpK,IAAqBQ,WACxB,OAAO0J,EAA0B/nB,EAAUkoB,oBAC7C,KAAKrK,IAAqBwB,SACxB,MAAO,GACT,KAAKxB,IAAqBc,QACxB,OAAOoJ,EAA0B/nB,EAAUmoB,iBAC7C,KAAKtK,IAAqBgC,YACxB,OAAOkI,EAA0B/nB,EAAUooB,oBAC7C,KAAKvK,IAAqBC,OACxB,OAAOiK,EAA0B/nB,EAAUge,gBAC7C,QACE,MAAM,IAAI7b,MAAJ,iDAEV,MAAO2E,GACP,MAAMA,G,ICxDEuhB,E,QCYL,SAASpE,EACd/lB,EACA8B,GAEA,IACE,IAAMgkB,EAAWroB,OAAO+H,OAAO1D,GAAWQ,MACxC,SAAC8nB,GAAD,OACG,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAGpoB,kBACHrC,YAAgByqB,EAAEpoB,mBAAqBrC,YAAgBK,MAG3D,IAAK8lB,EACH,MAAM,IAAI7hB,MAAJ,wCAGR,OAAO6hB,EACP,MAAOld,GACP,MAAMA,GC1BH,SAAeyhB,EAAtB,oC,4CAAO,WACLC,EACAvH,GAFK,SAAAhmB,EAAA,kEAKEgmB,EALF,sBAMK,IAAI9e,MAAM,8CANf,uBASU8e,EAAoB5gB,QAC9BooB,iBAAiBlO,IAAK2G,MAAMC,KAAKqH,IACjC3lB,OAXA,6I,sBFEA,SAAe6lB,EAAtB,kC,4CAAO,WACLzH,GADK,iBAAAhmB,EAAA,kEAIEgmB,EAJF,sBAKK,IAAI9e,MAAM,8CALf,cAQGiV,EAAqB6J,EAAoB5gB,QAR5C,SASiB+W,EAAmBwB,QAAQ/V,OAT5C,cASG+V,EATH,yBAWsB,IAAlB5V,OAAO4V,GAAeyP,EAASM,SAAWN,EAASO,OAXvD,wG,gCALKP,K,oBAAAA,E,eAAAA,M,YGEL,SAAehI,EAAtB,oC,4CAAO,WACLniB,EACA4C,GAFK,iBAAA7F,EAAA,+EAKqC,kCALrC,uBAKa4tB,EALb,EAKI3L,QALJ,SASU,IAAIpc,EAAa0Z,IAAI4C,SAChCyL,EACA3qB,GACAmC,QACCyoB,iBACAjmB,OAdA,gJ,sBCcA,SAASkV,EACdgR,EACAC,GAEA,OAAOD,IAAgB7tB,KAAK+tB,KAAKjmB,OAAOgmB,GAAmB,GAAK,E,mBCX3D,SAAe9lB,EAAtB,kC,4CAAO,+CAAAjI,EAAA,iEACLiuB,mBADK,MACS,SADT,EAEL/lB,EAFK,EAELA,MACArC,EAHK,EAGLA,aAHK,SAYqC,mCAZrC,mBAYWqoB,EAZX,EAYEjM,QAKF/iB,IAjBA,uBAkBHyc,QAAQ9P,MAAM,2DAlBX,4CAuBiC,IAAIhG,EAAa0Z,IAAI4C,SACvD+L,EACAhvB,KAFcivB,EAvBb,EAuBI/oB,QAvBJ,UA4BwB+oB,EACxBC,UACClmB,EAAMvE,KAAI,mCAAEV,EAAF,KAAWqC,EAAX,KAAgBmW,EAAhB,WAA4B,CACpCxY,EAAQH,cACR+C,EAAa0Z,IAAIja,IAAI+oB,mBAAmB/oB,EAAKmW,QAGhD7T,KAAK,GAAIqmB,GAnCT,wBA4BIK,EA5BJ,EA4BIA,WA5BJ,kBAqCIA,EAAW3qB,KAAI,SAAC4qB,EAAmB1qB,GACxC,IAAM2qB,EAAiBtmB,EAAMrE,GAAG,GAAG4qB,SAAW,GACxCC,EAAiB7oB,EAAa0Z,IAAIja,IAAIqpB,iBAC1CH,EACAD,GAIF,OACgC,IAA9BG,EAAeE,iBACS9uB,IAAxB4uB,EAAe,GAERA,EAAe,GAGjB7oB,EAAa0Z,IAAIja,IAAIqpB,iBAC1BH,GAAkB,GAClBD,OAtDD,wG,wDCGA,IAAKlO,EAWAD,EAQAyO,EAUAC,EA3CZ,wI,SAcYzO,O,mBAAAA,I,kBAAAA,I,qBAAAA,I,qBAAAA,I,sBAAAA,M,cAWAD,K,gBAAAA,E,cAAAA,E,kBAAAA,E,kBAAAA,E,mBAAAA,M,cAQAyO,K,mCAAAA,E,8CAAAA,E,2FAAAA,E,8CAAAA,E,4DAAAA,E,4CAAAA,E,uFAAAA,M,cAUAC,K,gBAAAA,E,gBAAAA,E,qBAAAA,E,iBAAAA,M,0WC7BL,SAAS3Y,IAKd,MAA8C9R,qBAA9C,mBAAO+R,EAAP,KAAwB2Y,EAAxB,KAMM1Y,EAAepJ,kBAAgB,GAkBrC,OAZA8B,qBAAU,WAKR,OAJAsH,EAAavH,SAAU,GAEtBsH,GAAmB2Y,EAAmB,IAAIC,iBAEpC,WACL3Y,EAAavH,SAAU,EAEvBsH,GAAmBA,EAAgBW,WAEpC,CAACX,IAEG,CACLA,kBACAC,gBCjCJ,IAAM4Y,EAAe,CAACC,MAAO,GAE7B,SAASxR,EAAQC,EAAqBwR,GACpC,OAAQA,EAAOzT,MACb,IAAK,YACH,MAAO,CAACwT,MAAOvR,EAAMuR,MAAQ,GAC/B,QACE,OAAOvR,GAaN,SAASyR,IACd,MAA0B3Q,qBAAWf,EAASuR,GAA9C,mBAAOtR,EAAP,KAAc1G,EAAd,KAEA,MAAO,CAAC0G,EAAMuR,MAAOjY,G,6BCfhB,SAASoY,IACd,IAAMjV,EAAsBvV,aAC1B,SAACC,GAAD,OAAmBA,EAAEC,UAAUW,uBAGjC,EAAiD4pB,YAAaC,IAAS,CACrEC,UAAW,CAACze,GAAE,OAAEqJ,QAAF,IAAEA,OAAF,EAAEA,EAAqBnV,gBAAgBnC,iBADvD,mBAAO2sB,EAAP,YAAgBC,EAAhB,EAAgBA,OAAQC,EAAxB,EAAwBA,QAASlG,EAAjC,EAAiCA,KAAM5d,EAAvC,EAAuCA,MAIvC,EAAsBxH,qBAAtB,mBAAOurB,EAAP,KAAYC,EAAZ,KACA,EAAgCxrB,qBAAhC,mBAAOyrB,EAAP,KAAiBC,EAAjB,KAEMC,EAAyBzX,uBAmB/B,WACE,IACE,IAAKoX,GAAWlG,GAGd,GAFAoG,EAAOpG,EAAKwG,YAAY,IAEQ,IAA5BxG,EAAKwG,YAAY7vB,OAKnB,MAJc,IAAI8G,MAAJ,kBACRkT,QADQ,IACRA,OADQ,EACRA,EAAqBnV,gBADb,kCAOhB,GAAI4G,EAKF,MAJc,IAAI3E,MAAJ,kBACRkT,QADQ,IACRA,OADQ,EACRA,EAAqBnV,gBADb,kCAOlB,MAAO4G,GACPkkB,EAAYlkB,MAzC2C,QACzDuO,QADyD,IACzDA,OADyD,EACzDA,EAAqBnV,gBACrBwkB,EACA5d,EACA8jB,IAyCF,OAtCA5gB,qBAAU,WACH2gB,GACHD,MAED,CAACC,EAAQD,IAEZ1gB,qBAAU,YACH4gB,IAAD,OAAYvV,QAAZ,IAAYA,OAAZ,EAAYA,EAAqBnV,kBACnC+qB,MAED,QAAC5V,QAAD,IAACA,OAAD,EAACA,EAAqBnV,gBAAiB+qB,EAAwBL,IA4B3D,CAACC,MAAKE,Y,kDC5DTI,EAAmE,GAWlE,SAASC,EAIdC,GAMA,IAAM3qB,EAAqBZ,aACzB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCT,mBAGhDorB,EAAiBxrB,aACrB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCJ,OAOtD,EAAkDjB,mBAEhD6rB,GAFF,mBAAOI,EAAP,KAA0BC,EAA1B,KAIA,EAA8DlsB,mBAE5DsI,IAAYpI,SAFd,mBAAOisB,EAAP,KAAgCC,EAAhC,KAIA,EACEpsB,qBADF,mBAAOqsB,EAAP,KAA+BC,EAA/B,KAOO9qB,EAAgBnL,cAAhBmL,aAMD+qB,EAAmB,OAAGP,QAAH,IAAGA,OAAH,EAAGA,EAAgB9qB,MAC1C,SAACC,GAAD,MAAoB,qBAAZA,EAAGlI,QAvCQ,4CAgErB,qCAAA0C,EAAA,6DACEsF,EADF,EACEA,IACA8qB,EAFF,EAEEA,WACAnrB,EAHF,EAGEA,gBACAY,EAJF,EAIEA,aAJF,SAYUqC,EAA0BkoB,EAAWzsB,KAAI,SAACktB,GAAD,MAAQ,CACrD5rB,EACAK,EACA,CAACO,EAAaogB,MAAMC,KAAK2K,IAAO,QAGlCF,OAA0B7wB,GAC1B2wB,EAA2B9jB,IAAY7F,SAnB3C,KAqBIypB,EArBJ,SAqB+BtoB,YAAU,CAACC,QAAOrC,iBArBjD,kCAuBI4qB,EAA2B9jB,IAAY3F,WAvB3C,kDAyBIupB,EAAqBL,GACrBO,EAA2B9jB,IAAYpB,UACvColB,EAA0B,EAAD,IA3B7B,2DAhEqB,sBA+FrB,OAhDA5hB,qBAAU,WACHtJ,GAAuBmrB,GAAwB/qB,GAhDjC,oCAoDnBirB,CAAwB,CACtBxrB,IAAKsrB,EACLR,aACAnrB,gBAAiBQ,EACjBI,mBAED,CAACuqB,EAAY3qB,EAAoBmrB,EAAqB/qB,IAqClD,CACLyqB,oBACAI,yBACAF,2B,oBC5GG,SAASO,IAKd,IAAMrrB,EAAsBb,aAC1B,SAAC8Y,GAAD,OAAuBA,EAAM5Y,UAAUW,uBAEnCV,EAAwBH,aAC5B,SAAC8Y,GAAD,OAAuBA,EAAM5Y,UAAUC,yBAEnCgsB,EAAwBnsB,aAC5B,SAAC8Y,GAAD,OAAuBA,EAAMqT,sBAAsBC,UAOrD,EACE3B,YAAaC,IAAS,CACpBC,UAAW,CACTze,GAAE,OAAErL,QAAF,IAAEA,OAAF,EAAEA,EAAqBT,gBAAgBnC,iBAH/C,mBAAOouB,EAAP,YAAkCxB,EAAlC,EAAkCA,OAAQC,EAA1C,EAA0CA,QAASlG,EAAnD,EAAmDA,KAAM5d,EAAzD,EAAyDA,MAWzD,EAAoCxH,qBAApC,mBAAOqN,EAAP,KAAmByf,EAAnB,KACA,EAAgD9sB,mBAC9CsI,IAAYpI,SADd,mBAAO6sB,EAAP,KAAyBC,EAAzB,KAGA,EAA8ChtB,qBAA9C,mBAAOitB,EAAP,KAAwBC,EAAxB,KAMMC,EAAmCjZ,uBAxCgB,4CA0CvD,CAACvT,IAGGysB,EAAkClZ,uBAqCxC,WACE,IAGE,GAFA8Y,EAAoB1kB,IAAY7F,UAE3B6oB,GAAWlG,EAAM,CAEpB,IAAO/X,EAAc+X,EAAKwG,YAAY,GAA/Bve,WACPyf,EAAcppB,OAAO2J,IACrB2f,EAAoB1kB,IAAY3F,gBAEhC,GAAI6E,EACF,MAAM,IAAI3E,MAAM2E,EAAMlJ,SAG1B,MAAOkJ,GAGP8P,QAAQC,IAAR,gCAAqC/P,EAAMlJ,UAC3C6uB,OArDF,CAAC/H,EAAM5d,EAAO2lB,EAAkC7B,IA/CO,4CAwGzD,4BAAA3vB,EAAA,yDACOgF,EADP,iEAMIqsB,EAAoB1kB,IAAY7F,SANpC,SAQ6B9B,EAAsBG,SAASC,QACrDssB,UAAUtyB,IAAeC,KACzBuI,OAVP,OAQU8J,EARV,OAYIyf,EAAcppB,OAAO2J,IACrB2f,EAAoB1kB,IAAY3F,WAbpC,kDAeI2U,QAAQC,IAAR,MACAuV,OAAcrxB,GACdyxB,EAAmB,EAAD,IAClBF,EAAoB1kB,IAAYpB,UAlBpC,2DAxGyD,sBA8HzD,OAxEAwD,qBAAU,WACH2gB,GACHwB,MAED,CAACxB,EAAQwB,IAEZniB,qBAAU,WACJiiB,IAA0BW,IAAsB1nB,IAC7C0lB,IAAD,OAAYjqB,QAAZ,IAAYA,OAAZ,EAAYA,EAAqBT,kBACnCwsB,IAKFD,MAED,QACD9rB,QADC,IACDA,OADC,EACDA,EAAqBT,gBACrBusB,EACAC,EACA9B,EACAqB,IAmDK,CAACtf,aAAY4f,kBAAiBF,oBCzIhC,SAASjY,IAKd,IAAM9C,EAAepJ,kBAAgB,GAcrC,OARA8B,qBAAU,WAGR,OAFAsH,EAAavH,SAAU,EAEhB,WACLuH,EAAavH,SAAU,KAExB,IAEI,CACLuH,gB,8CCWG,SAASlQ,EACdnC,GAEA,OAA0CA,GAAS,IAA5C4tB,+BAAP,SAMA,EAAwDvtB,mBACtD,IADF,mBAAOwtB,EAAP,KAA6B7jB,EAA7B,KAGA,EAAoD3J,oBAAkB,GAAtE,mBAAOytB,EAAP,KAA2BC,EAA3B,KAMMpV,EAAiB9X,aACrB,SAACC,GAAD,uBAAmBA,EAAE0I,uBAArB,aAAmB,EAAmBmP,kBAOjClE,EAAa/d,cAAb+d,UAODuZ,EACJH,GAAwBA,EAAqBtsB,MAAK,SAAC0sB,GAAD,OAAOA,KACrDC,EA4BN,WACE,IAAKzZ,EACH,MAAO,gCAGT,IAAKkE,IAAmBiV,EACtB,MAAO,iEAGT,OAAOI,GAAmB,GArCLG,GACjB/rB,IACH8rB,KAAmCF,EAChCI,KAAwBhsB,IAAc8rB,GAMtCG,EAAyB9Z,uBAmC/B,SAA0BvU,GACxB,IAAKouB,EAAuB,OAAO,KAEnC,IAAO1lB,EAAS1I,EAAT0I,MAEP,OACE,cAAC,IAAD,CACEmN,aAAa,EACbrO,UAAU,kBACVgO,OAAQsY,EACRhY,eAAgB,WACdiY,GAAsB,IAExBhY,iBAAiB,gBACjBlI,KAAK,SACLoC,MAAO,CAAC+F,QAAS,CAACC,OAAQ,MAT5B,SAUE,cAAC5N,EAAA,EAAD,UACE,sBAAKb,UAAU,QAAf,UACE,wBACEA,UAAU,gDACVE,QAAS,WACPqmB,GAAsB,IAH1B,SAKE,cAACl3B,EAAA,EAAD,MAEF,sBAAK2Q,UAAU,OAAf,UACE,oBAAIA,UAAU,eAAd,SAA8BkB,GAAS,kBACvC,4BAAIwlB,gBA9D6C,CAC3DE,EACAF,EACAJ,IAGIQ,EAAsC/Z,uBAS5C,SAAuCga,GACrCvkB,EAAwBukB,EAAaxyB,OAAOyyB,YAR5C,IA8DF,MAAO,CACLN,iBACA9rB,aACAC,qBA1CF,WACE0rB,GAAsB,IA0CtB/jB,wBAAyBskB,EACzBhsB,iBAAkB+rB,G,sBCxIf9tB,EAAyCoI,IAAzCpI,QAASuC,EAAgC6F,IAAhC7F,QAASE,EAAuB2F,IAAvB3F,UAAWuE,EAAYoB,IAAZpB,SAE9BknB,EACY,eAAhBv2B,IAA+B,KAAQ,I,SAiB1Bw2B,E,8EAAf,yCAAA1yB,EAAA,6DACE2yB,EADF,EACEA,MADF,IAEEC,mBAFF,MAf2C,EAe3C,EAGEvc,EAHF,EAGEA,aAHF,IAIEwc,oBAJF,MAIiBJ,EAJjB,EAKE5sB,EALF,EAKEA,aALF,kBAaS,IAAIumB,QAAJ,uCAAqB,WAAOhxB,EAASixB,GAAhB,iBAAArsB,EAAA,6DASpB8yB,EAAmB,SAACH,EAAeI,GAGvC,OAFgCA,EAAeJ,GAErB1yB,KAAK+yB,IAAIJ,IAZX,cAiBpBE,EAjBoB,KAiBHH,EAjBG,SAiBU9sB,EAAa0Z,IAAI0T,iBAjB3B,mEAkBtB73B,GAAQ,GAlBc,oFAuBxBixB,EAAO,EAAD,IAvBkB,2BA6BpBvF,EAAarW,YAAW,sBAAC,sBAAAzQ,EAAA,yEAEtBqW,QAFsB,IAEtBA,OAFsB,EAEtBA,EAAcvH,QAFQ,uBAGzB4B,cAAcoW,GAHW,sCAQvBgM,EARuB,KAQNH,EARM,SAQO9sB,EAAa0Z,IAAI0T,iBARxB,4DASzBviB,cAAcoW,GACd1rB,GAAQ,GAViB,0DAa3BsV,cAAcoW,GACduF,EAAO,EAAD,IAdqB,0DAgB5BwG,GA7CuB,0DAArB,0DAbT,4C,sBA8DO,SAAS5kB,EACd1F,EACAjB,EACA3J,GAKA,MAAuDA,GAAW,GAA3Du1B,EAAP,EAAOA,iBAAkBC,EAAzB,EAAyBA,2BAMnBjuB,EAAuBL,aAC3B,SAACC,GAAD,uBAAmBA,EAAEC,UAAUC,6BAA/B,aAAmB,EAAmCG,SAASC,WAOjE,EAA0Df,qBAA1D,mBAAO+uB,EAAP,KAA8BC,EAA9B,KAEA,EACEhvB,oBAAkB,GADpB,mBAAO6J,EAAP,KAAgColB,EAAhC,KAGA,EACEjvB,qBADF,mBAAO8J,EAAP,KAAmColB,EAAnC,KAGA,EACElvB,mBAAsBE,GADxB,mBAAO6J,EAAP,KAAoColB,EAApC,KAOO3tB,EAAgBnL,cAAhBmL,aACAwQ,EAAgB8C,IAAhB9C,aAMDod,EAAkClb,uBArCR,6CAuC9B,CAAClC,IAvC6B,4CA0EhC,yCAAArW,EAAA,6DACEkF,EADF,EACEA,qBACAguB,EAFF,EAEEA,iBACAC,EAHF,EAGEA,2BACA5qB,EAJF,EAIEA,cACAjB,EALF,EAKEA,SACAzB,EANF,EAMEA,aANF,SAiBI0tB,OAA8BzzB,GAC9B0zB,EAA+B1sB,GAlBnC,SA6BU4rB,EAAqB,CACzBC,MAAOrrB,EACPsrB,YAAaM,EACb7c,eACAwc,aAAcM,EACdttB,iBAlCN,uBAqCgDX,EACzCyC,eAAeY,EAAelJ,IAAeiI,GAC7CM,OAvCP,UAqCUwrB,EArCV,OAyCS/c,EAAavH,QAzCtB,mDA2CIukB,EAAyBD,GAEzBE,EACE,IAAI/d,IAAU6d,GAAuBM,cAAc,IAAIne,IAAU,KAGnEie,EAA+BxsB,GAjDnC,qDAmDSqP,EAAavH,QAnDtB,mDAqDIwkB,GAA2B,GAC3BD,OAAyBvzB,GACzByzB,EAA8B,EAAD,IAC7BC,EAA+BjoB,GAxDnC,2DA1EgC,sBAsIhC,OAxFAwD,qBAAU,WAEHxG,GAAkBjB,GAAapC,GAAyBW,GAI7D4tB,EAAgC,CAC9BvuB,uBACAguB,mBACAC,6BACA5qB,gBACAjB,WACAzB,mBAED,CACDX,EACAguB,EACAC,EACAM,EACAlrB,EACAjB,EACAzB,IAmEK,CACLqI,0BACAklB,wBACAjlB,6BACAC,+B,WC5OGpH,EAA+B2F,IAA/B3F,UAAWF,EAAoB6F,IAApB7F,QAASvC,EAAWoI,IAAXpI,QAE3B,SAASovB,EAAiBC,GACxB,OAAOlzB,OAAO+H,OAAOmrB,GAAcC,OAAM,SAAC/uB,GAAD,OAAOA,IAAMkC,KAajD,SAAS2L,EACdmhB,EACAC,GAMA,IAAMC,EAAoB/mB,iBAAuB,CAC/Cya,MAAOnjB,EACPqjB,IAAKrjB,IAOP,EAA4CF,oBAAkB,GAA9D,mBAAOyO,EAAP,KAAuBmhB,EAAvB,KACA,EAAwC5vB,oBAAkB,GAA1D,mBAAOuO,EAAP,KAAqBshB,EAArB,KAEA,EAA0D7vB,mBACxDsvB,EAAiBK,EAAkBllB,UADrC,mBAAOkE,EAAP,KAA8BmhB,EAA9B,KAQMC,OACat0B,IAAjBg0B,QACeh0B,IAAfi0B,GACAD,GAAgB,GAChBC,GAAc,EAoFhB,OA7EAhlB,qBAAU,WACR,IAAI+D,IAAkBshB,EAAtB,CASAD,GAAyB,WAEvB,OADAH,EAAkBllB,QAAQ4Y,MAAQ5gB,EAC3B6sB,EAAiBK,EAAkBllB,YAI5C,IAAMulB,EAAa5jB,aAAY,WAC7B,IAAM6jB,EACJr0B,KAAKC,MAAMoC,KAAKiyB,MAAQ,MAAxB,OAAiCT,QAAjC,IAAiCA,IAAgB,GAEnDG,EAAkBK,GAGdN,EAAkBllB,QAAQ4Y,QAAU1gB,GACtCmtB,GAAyB,WAEvB,OADAH,EAAkBllB,QAAQ4Y,MAAQ1gB,EAC3B2sB,EAAiBK,EAAkBllB,cAG7C,KAEH,OAAO,WACDulB,GACF3jB,cAAc2jB,IA/BhBF,GAAyB,WAEvB,OADAH,EAAkBllB,QAAQ4Y,MAAQ1gB,EAC3B2sB,EAAiBK,EAAkBllB,cAgC7C,CAACgE,EAAgBshB,EAAgBN,IAGpC/kB,qBAAU,WACR,IAAI6D,IAAgBwhB,EAApB,CASAD,GAAyB,WAEvB,OADAH,EAAkBllB,QAAQ8Y,IAAM9gB,EACzB6sB,EAAiBK,EAAkBllB,YAI5C,IAAMulB,EAAa5jB,aAAY,WAC7B,IAAM+jB,EACJv0B,KAAKw0B,KAAKnyB,KAAKiyB,MAAQ,MAAvB,OAAgCR,QAAhC,IAAgCA,IAAc,GAEhDG,EAAgBM,GAGZR,EAAkBllB,QAAQ8Y,MAAQ5gB,GACpCmtB,GAAyB,WAEvB,OADAH,EAAkBllB,QAAQ8Y,IAAM5gB,EACzB2sB,EAAiBK,EAAkBllB,cAG7C,KAEH,OAAO,WACDulB,GACF3jB,cAAc2jB,IA/BhBF,GAAyB,WAEvB,OADAH,EAAkBllB,QAAQ8Y,IAAM5gB,EACzB2sB,EAAiBK,EAAkBllB,cAgC7C,CAACilB,EAAYnhB,EAAcwhB,IAEvB,CACLthB,iBACAF,eACAI,2B,gCCxJJ,4IA4BY0hB,EAOAC,EAcAC,EAcAC,EA/DZ,a,SA4BYH,O,mBAAAA,I,yBAAAA,I,0BAAAA,M,cAOAC,K,gBAAAA,E,kBAAAA,E,gCAAAA,E,wDAAAA,E,sDAAAA,E,8BAAAA,E,kBAAAA,E,uBAAAA,M,cAcAC,O,6BAAAA,I,6BAAAA,I,eAAAA,I,oBAAAA,M,cAcAC,K,yBAAAA,M,mHCpDZ,SAASC,EAAQ9wB,GACf,OAAO,iCAAKwH,UAAU,UAAaxH,IA+BtB2H,IA5BA,SACb3H,GAEA,IAAO+wB,EAAgD/wB,EAAhD+wB,YAAaC,EAAmChxB,EAAnCgxB,KAAMC,EAA6BjxB,EAA7BixB,UAAcC,EAAxC,YAAuDlxB,EAAvD,GACA,EAAkDK,oBAAkB,GAApE,mBAAO8wB,EAAP,KAA0BC,EAA1B,KAYA,OAVArmB,qBAAU,WAER,IAAMsmB,EACJN,GAAeO,YAAW,kBAAMF,GAAqB,KAAOL,GAE9D,OAAO,WACLM,GAAaE,aAAaF,MAE3B,CAACN,MAEKA,GAAgBA,GAAeI,IAAuBnxB,EAAMgxB,KACnE,sBAAKxpB,UAAU,mBAAf,UACE,cAACspB,EAAD,eAAaI,IACb,8CAAM1pB,UAAU,gBAAmBypB,GAAnC,aACGD,UAGDD,GAAgBA,GAAeI,KAAwBnxB,EAAMgxB,KACjE,cAACF,EAAD,eAAaI,IACX,O,gCCnCC,IAAKM,EAYAxrB,EAfZ,oE,SAGYwrB,O,6BAAAA,I,aAAAA,I,eAAAA,I,uBAAAA,I,6BAAAA,I,gCAAAA,M,cAYAxrB,O,WAAAA,I,yCAAAA,I,mCAAAA,I,6CAAAA,I,iCAAAA,I,4CAAAA,M,2FCPNyrB,EAAcC,gBAAK,kBAAM,iCAEzBC,EAAmBD,gBACvB,kBAAM,iCAIFE,EAA6C,CACjDx4B,SAAU,cAACq4B,EAAD,IACVh4B,cAAe,cAACk4B,EAAD,KAGV,SAASE,EAAT,GAEkC,IADvCC,EACsC,EADtCA,aAEA,OAAKA,GAAiBF,EAAcE,GAGlC,cAAC,WAAD,CAAUC,SAAU,KAApB,SACE,sBAAMvqB,UAAU,6BAAhB,SACGoqB,EAAcE,OALqC,O,qkHCErD,SAASpN,EAAkBzlB,GAKhC,IAAMyC,EAAsBb,aAC1B,SAAC8Y,GAAD,OAAuBA,EAAM5Y,UAAUW,uBAOzC,EAAsDrB,qBAAtD,mBAAOskB,EAAP,KAA4BqN,EAA5B,KAEA,EACE3xB,qBADF,mBAAOukB,EAAP,KAAiCqN,EAAjC,KAGA,EAAwD5xB,mBACtDsI,IAAYpI,SADd,mBAAOskB,EAAP,KAA6BqN,EAA7B,KAIA,EAAgD7xB,qBAAhD,mBAAOykB,EAAP,KAAyBqN,EAAzB,KAMOtwB,EAAgBnL,cAAhBmL,aAMDuwB,EAAcC,IAAoBpzB,GAMlCqzB,EAA+B/d,uBAxCsC,4CAwCF,CACvE7S,EACAzC,EACA4C,IA3CyE,4CAoE3E,sDAAA7F,EAAA,yDACOiD,GAAYyC,GAAwBG,EAD3C,iEAIIqwB,EAAwBvpB,IAAY7F,SAE9ByvB,EAAmBvnB,YAAmB/L,EAAS,GAEzCotB,EACV3qB,EADKJ,IAAsCG,EAC3CC,EAD0BT,gBAItBuxB,EAA6BnG,EAAe9qB,MAChD,SAACkxB,GAAD,MAAwB,yBAAdA,EAAKn5B,QAEXo5B,EAA2C,CAC/CjxB,EACA+wB,EACA,CAACvzB,IAGG0zB,EAAyBtG,EAAe9qB,MAC5C,SAACkxB,GAAD,MAAwB,qBAAdA,EAAKn5B,QAEXs5B,EAAuC,CAC3CnxB,EACAkxB,EACA,CAAC1zB,IAGG4zB,EAA8BxG,EAAe9qB,MACjD,SAACkxB,GAAD,MAAwB,0BAAdA,EAAKn5B,QAQX4K,EAAQ,CACZwuB,EACAE,EARgD,CAChDnxB,EACAoxB,EACA,CAAC5zB,KApCP,UAiD0CgF,YAAU,CAACC,QAAOrC,iBAjD5D,oCA8CMixB,EA9CN,KA+CMC,EA/CN,KAgDMC,EAhDN,KAmDSF,EAMOC,EAOVn0B,YAAgBK,KAChBL,YAAgBo0B,IAGhBb,GAAoB,GACpBF,EAA4B,yBAAD,OACAM,EADA,qHAI3BJ,GAAoB,GACpBF,OAA4Bn2B,KAf5Bq2B,GAAoB,GACpBF,EAA4B,yBAAD,OACAM,EADA,mBAP3BJ,GAAoB,GACpBF,EAA4B,yBAAD,OACAM,EADA,uDAuB7BL,EAAwBvpB,IAAY3F,WA7ExC,kDA+EImvB,OAAoBr2B,GACpBm2B,OAA4Bn2B,GAC5Bk2B,EAAuB,EAAD,IACtBE,EAAwBvpB,IAAYpB,UAlFxC,2DApE2E,sBA0J3E,OAxGAwD,qBAAU,WAEJqnB,IAAgBnzB,IAClB+yB,OAAuBl2B,GACvBm2B,OAA4Bn2B,GAC5Bq2B,OAAoBr2B,GACpBo2B,EAAwBvpB,IAAYpI,UAGlCtB,GACFqzB,MAED,CAACrzB,EAASqzB,EAA8BF,IA4FpC,CACLzN,sBACAC,2BACAC,uBACAC,oBCtKJ,IAAMmO,EAAmD,GAUlD,SAASC,EAAgBC,GAK9B,IAAMC,EAAevyB,aAAY,SAACC,GAAD,uBAC/BA,EAAEC,UAAUW,2BADmB,aAC/B,EAAiCJ,IAAIC,MAAK,SAACvF,GAAD,MAAkB,cAAXA,EAAE1C,WAG/C+5B,EAAkBxyB,aACtB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCT,mBAOtD,EAAwCZ,mBACtC4yB,GADF,mBAAOK,EAAP,KAAqBC,EAArB,KAIA,EAAoDlzB,mBAClDsI,IAAYpI,SADd,mBAAOizB,EAAP,KAA2BC,EAA3B,KAIA,EAAkDpzB,qBAAlD,mBAAOqzB,EAAP,KAA0BC,EAA1B,KAMO9xB,EAAgBnL,cAAhBmL,aA/BqE,4CA2D5E,yCAAA7F,EAAA,yDACEm3B,EADF,EACEA,YACAC,EAFF,EAEEA,aACAC,EAHF,EAGEA,gBACAxxB,EAJF,EAIEA,aAJF,SAYSsxB,EAAY/2B,OAZrB,qDAeUw3B,EAAkBT,EAAYp3B,OAClC8F,EAAaogB,MAAM4R,cAGAz3B,OAnBzB,uBAoBMq3B,EAAsB9qB,IAAY3F,WAClCuwB,EAAgB,IArBtB,iCA0BIE,EAAsB9qB,IAAY7F,SAElC6wB,OAAqB73B,GAEfoI,EAA0B0vB,EAAgBj0B,KAAI,SAACoN,GAAD,MAAQ,CAC1DsmB,EACAD,EACA,CAACrmB,OAjCP,UAoC4B9I,YAAU,CAChCC,QACArC,iBAtCN,QAoCUiyB,EApCV,OAyCIP,EAAgBK,EAAgBj0B,KAAI,SAACoN,EAAIlN,GAAL,MAAW,CAACkN,EAAI+mB,EAAUj0B,QAC9D4zB,EAAsB9qB,IAAY3F,WA1CtC,kDA4CIuwB,EAAgBN,GAChBU,EAAqB,EAAD,IACpBF,EAAsB9qB,IAAYpB,UA9CtC,2DA3D4E,sBA6G5E,OAxEAwD,qBAAU,WAELooB,EAAY/2B,QACZg3B,GACAC,GACAxxB,GA1CuE,oCA+C1EkyB,CAAsB,CACpBZ,cACAC,eACAC,kBACAxxB,mBAED,CAACsxB,EAAaC,EAAcC,EAAiBxxB,IAwDzC,CACLyxB,eACAE,qBACAE,qB,2DChHG,SAASM,EAIdF,GAMA,IAAMG,EAAUpzB,aACd,SAACC,GAAD,uBAAmBA,EAAEC,UAAUC,6BAA/B,aAAmB,EAAmCM,OAElD4yB,EAAcrzB,aAClB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUC,6BAA/B,aAAmB,EAAmCC,mBAOxD,EACEZ,mBAAsC,IADxC,mBAAO8zB,EAAP,KAAsBC,EAAtB,KAGA,EACE/zB,mBAAsBsI,IAAYpI,SADpC,mBAAO8zB,EAAP,KAAoCC,EAApC,KAGA,EAAoEj0B,qBAApE,mBAAOk0B,EAAP,KAAmCC,EAAnC,KAQO3yB,EAAgBnL,cAAhBmL,aACAwQ,EAAgB8C,cAAhB9C,aAMDhR,EAAiB,OAAG4yB,QAAH,IAAGA,OAAH,EAAGA,EAAS1yB,MACjC,SAACkxB,GAAD,MAAwB,mBAAdA,EAAKn5B,QAOXm7B,EAA0BlgB,uBA7CA,6CA+C9B,IA/C8B,4CA2IhC,qDAAAvY,EAAA,6DACEk4B,EADF,EACEA,YACA7yB,EAFF,EAEEA,kBACAiC,EAHF,EAGEA,SACAoxB,EAJF,EAIEA,yBACA7yB,EALF,EAKEA,aALF,4BAgBO4I,IAAYtF,IAAM,CACjBwvB,WAAY,EACZrlB,MAAO,IAlBf,cAoBO7E,IAAY4E,GAAK,CAChBslB,WAAY,EACZrlB,MAAO,IAtBf,2BAwBkB,GATRslB,EAfV,EA4BUC,EAAiC,CACrCX,EACA7yB,EACA,CACEjG,IACAC,IACAiI,EAAS3F,aAKPm3B,EAAaJ,EAAyB/0B,KAC1C,gBAAEV,EAAF,0BAA+B,CAC7Bi1B,EACA7yB,EACA,CACEpC,EACA5D,IACAiI,EAAS3F,gBAKTuG,EAnDV,CAmDmB2wB,GAnDnB,mBAmDsCC,IAnDtC,SAqDiE7wB,YAAU,CACrEC,QACArC,iBAvDN,wCAqDWkzB,EArDX,gBA2DkBC,SAAQ,SAAC1lB,EAAOzP,GAC5B,IAGMoF,EAFJC,mBAAiBwvB,EAAyB70B,GAAG,MAC7CqF,mBAAiBA,mBAAiBC,KACbsF,IAAYtF,IAAMsF,IAAY4E,GAErDulB,EAAQ3vB,GAAQqK,OAASvL,OAAOuL,MAIlCslB,EAAQnqB,IAAYtF,KAAKwvB,WACtBC,EAAQnqB,IAAYtF,KAAKmK,MAAQvL,OAAOgxB,GAAqB,IAEhEH,EAAQnqB,IAAY4E,IAAIslB,WACrBC,EAAQnqB,IAAY4E,IAAIC,MAAQvL,OAAOgxB,GAAqB,IAG/DH,EAAQlnB,WAAa3J,OAAOgxB,GA5EhC,kBA8EWH,GA9EX,wGA3IgC,sBA+NhC,OAxKA7pB,qBAAU,WACR,IAAMkqB,EAAiBv1B,MAAMw1B,QAAQpB,GAAaA,EAAY,CAACA,GAE/D,GACGI,GACA7yB,GACA4zB,EAAe74B,QACfyF,EAJH,CASAyyB,EAA+B3rB,IAAY7F,SAE3C,IAAMqyB,EAAuBF,EAAet1B,IAAf,uCAAmB,WAAOy1B,GAAP,yBAAAp5B,EAAA,yDACxCsH,EADwC,OAC7B8xB,QAD6B,IAC7BA,OAD6B,EAC7BA,EAAG7xB,IAAIC,QAAQF,UAC1BgH,EAFwC,OAEzB8qB,QAFyB,IAEzBA,OAFyB,EAEzBA,EAAG9qB,eAEFhH,EAJwB,qDAMxC+xB,EANwC,OAMzBD,QANyB,IAMzBA,GANyB,UAMzBA,EAAGjyB,aANsB,aAMzB,EAAUxD,KAAI,SAAC+E,GAClC,IAAM4wB,EAAO5wB,EAAEhI,OAAO64B,KAAK7wB,GAAG,IAE9B,MAAO,CAKL4wB,EAAK/xB,IAAIC,QAAQmB,SAASJ,cAC1B+wB,EAAK/xB,IAAIC,QAAQyB,aAICowB,EAAaj5B,OAnBW,wDAsBxCs4B,EAA2Bh4B,OAAOC,QACtCD,OAAO84B,YAAYH,IAvByB,mBA2BvBZ,EAAwB,CAC3CP,cACA7yB,oBACAiC,WACAoxB,2BACA7yB,iBAhC0C,eA2BtC6D,EA3BsC,yBAmCrC,CAAC4E,EAAc5E,IAnCsB,sHAAnB,uDAyC7B0iB,QAAQqN,IAAIN,GACT1iB,MAAK,SAAC2iB,GAAD,OAAOA,EAAEr5B,QAAO,SAACq5B,GAAD,OAAOA,QAC5B3iB,MAAK,SAACwb,GACA5b,EAAavH,UAElBwpB,EAA+B3rB,IAAY3F,WAC3CoxB,EAAiBnG,GACjBuG,OAA8B14B,OAE/BgX,OAAM,SAACjL,GACDwK,EAAavH,UAElBwpB,EAA+B3rB,IAAYpB,UAC3C6sB,EAAiB,IACjBI,EAA8B3sB,UAEjC,CACDqsB,EACA7yB,EACAozB,EACApiB,EACAyhB,EACAjyB,IA2FK,CACL6zB,sBAAuBvB,EACvBI,6BACAF,+B,2BC7OEsB,EAAwD,GASvD,SAASC,EACdzC,GAMA,IAAME,EAAkBxyB,aACtB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCT,mBAEhD40B,EAAch1B,aAClB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCJ,OAO/CO,EAAgBnL,cAAhBmL,aAMP,EAA8DxB,mBAE5Ds1B,GAFF,mBAAOG,EAAP,KAAgCC,EAAhC,KAIA,EACE11B,qBADF,mBAAO21B,EAAP,KAAqCC,EAArC,KAGA,EACE51B,mBAAsBsI,IAAYpI,SADpC,mBAAO21B,EAAP,KAAsCC,EAAtC,KAOMC,EAA0C7hB,uBApCf,4CAsC/B,CAAC4e,EAAa0C,EAAaxC,EAAiBxxB,IAtCb,4CAqDjC,kDAAA7F,EAAA,yDAEKm3B,EAAY/2B,QACZy5B,GACAxC,GACAxxB,EALL,qDAWQ+xB,EAAkBT,EAAYp3B,OAAO8F,EAAaogB,MAAM4R,cAEzCz3B,OAbvB,uBAcI25B,EAA2BJ,GAC3BQ,EAAiCxtB,IAAY3F,WAfjD,sCAqBUqzB,EAAmBR,EAAYt0B,MACnC,SAACC,GAAD,MAAoB,kBAAZA,EAAGlI,QAtBjB,uBA0BY,IAAI4J,MACR,sEA3BR,eAgCUozB,EAAuC1C,EAAgBj0B,KAAI,SAACoN,GAAD,MAAQ,CACvEsmB,EACAgD,EACA,CAACtpB,OAGHopB,EAAiCxtB,IAAY7F,SAtCjD,UAwCwDmB,YAAU,CAC5DC,MAAOoyB,EACPz0B,iBA1CN,eAwCU00B,EAxCV,iBA6C4C,kCA7C5C,oBA6CoB3M,EA7CpB,EA6CW3L,QAIDuY,EAAqB5M,EAAsCroB,MAC/D,SAACC,GAAD,MAAoB,mBAAZA,EAAGlI,QAlDjB,uBAsDY,IAAI4J,MACR,kEAvDR,WAmEUuzB,EAAsB7C,EAAgB73B,QAC1C,SAAC26B,EAAK72B,GAAN,OAAY02B,EAA4B12B,KAAOoZ,QAG3C0d,EACJJ,EAA4Bx6B,QAAO,SAACC,GAAD,OAAOA,IAAMid,QAMT7c,OA9E7C,wBA+EM25B,EAA2BJ,GAC3BQ,EAAiCxtB,IAAY3F,WAhFnD,kCAqFU4zB,EACJD,EAAoCh3B,KAAI,SAACk3B,GAAD,MAA0B,CAChEA,EACAL,EACA,OAzFR,UA4F0DvyB,YAAU,CAC9DC,MAAO0yB,EACP/0B,iBA9FN,eA4FUi1B,EA5FV,iBAiGsC1O,QAAQqN,IACxCgB,EAAoB92B,IAApB,uCACE,WAAOoN,EAAIlN,GAAX,iBAAA7D,EAAA,sEACiC+6B,YAC7BD,EAAmBj3B,IAFvB,cACQw2B,EADR,OAIQQ,EAAuBF,EAAoC92B,GAJnE,kBAMS,CACLkN,EACA,CACEoU,kBAAmB2V,EAAmBj3B,GACtCg3B,uBACAE,oBAAqB,kBAAMV,GAC3B1zB,6BAA8B,kBAC5B,IAAId,EAAa0Z,IAAI4C,SACnBkY,EACAQ,OAfV,2CADF,0DAlGN,QAiGUG,EAjGV,OA0HIjB,EAA2BiB,GAC3Bb,EAAiCxtB,IAAY3F,WA3HjD,kDA6HImzB,EAAiCxtB,IAAYpB,UAC7CwuB,EAA2B,IAC3BE,EAAgC,EAAD,IA/HnC,2DArDiC,sBAwLjC,OA3IAlrB,qBAAU,WACRqrB,MACC,CAACA,IAyIG,CACLN,0BACAE,+BACAE,iCClMJ,IAAMe,EACJ,mDACIC,EAAmC,0BAgBlC,SAASC,EACdpqB,EACA2K,GACoB,IAAD,EAUnB,EAA2CrX,qBAApC+2B,EAAP,oBACA,EAA0C/2B,qBAA1C,mBAAOgjB,EAAP,KAAsBgU,EAAtB,KACA,EAAgDh3B,qBAAhD,mBAAOD,EAAP,KAAyBk3B,EAAzB,KACA,EAAgDj3B,oBAAkB,GAAlE,mBAAOk3B,EAAP,KAAyBC,EAAzB,KACA,EAA0Cn3B,qBAA1C,mBAAOo3B,EAAP,KAAsBC,EAAtB,KACA,EAA4Cr3B,mBAC1CsI,IAAYpI,SADd,mBAAOo3B,EAAP,KAAuBC,EAAvB,KAGA,EAA8Dv3B,mBAE5D,CAAC0M,IAFH,mBAAO8qB,EAAP,KAAgCC,EAAhC,KAKA,EACEz3B,mBAAsBsI,IAAYpI,SADpC,mBAAOw3B,EAAP,KAAgCC,EAAhC,KAIA,EAA4D33B,qBAA5D,mBAAO43B,EAAP,KAA+BC,EAA/B,KAMA,EAAwC/lB,cAAjCC,EAAP,EAAOA,gBAAiBC,EAAxB,EAAwBA,aAExB,EAA2C+Y,cAA3C,mBAAO+M,GAAP,KAAqBC,GAArB,KAMA,GAIIxC,EAA0BiC,GAH5B/B,GADF,GACEA,wBACAE,GAFF,GAEEA,6BACAE,GAHF,GAGEA,8BAOImC,GAAuB9jB,uBAnDV,6CAmDsC,QACvDnC,QADuD,IACvDA,OADuD,EACvDA,EAAiBG,OACjBxF,EACAsF,IAGIimB,GAA0B/jB,uBAzDb,6CAyD4C,QAC7DnC,QAD6D,IAC7DA,OAD6D,EAC7DA,EAAiBG,OACjBxF,EACAsF,EACAqF,IAGI6gB,GAAiChkB,uBAhEpB,6CAgE0D,CAC3E8jB,GACAC,KAOIE,GAAwDp4B,EAC1DolB,eAAatlB,SACbmjB,EACAmC,eAAaiT,WACb38B,EAME48B,GACJrV,GAAiBjjB,EACb,CAEEg3B,cACAj3B,yBAAwB,UAAE21B,GAAwB,UAA1B,aAAE,EAA6B,GACvD6C,8BA+PR,WACE,OAAQH,IACN,KAAKhT,eAAaiT,MAChB,OAAOpV,EACT,KAAKmC,eAAatlB,SAChB,OAAOE,EACT,QACE,SArQEyI,uBAyQR,WACEuvB,GAAmB,CAAC1gB,KAAM,eAzQpB2L,gBACAjjB,mBACAo4B,sBAEF18B,EA/Fa,8CA+MnB,kCAAAE,EAAA,sEAEI47B,EAAkBjvB,IAAY7F,SAFlC,SAI2B0P,MAAM,GAAD,OACvBra,IADuB,gBACKqD,IADL,kBACoBuR,GAC9C,CAACwF,OAAM,OAAEH,QAAF,IAAEA,OAAF,EAAEA,EAAiBG,SANhC,WAIUG,EAJV,QASkBC,GATlB,sBAUY,IAAIzP,MAAM+zB,GAVtB,uBAasDvkB,EAASE,OAb/D,UAaUgmB,EAbV,OAeSvmB,EAAavH,QAftB,sDAkBS8tB,GAAiBl8B,OAAO64B,KAAKqD,GAAcx8B,OAlBpD,uBAmBMo7B,GAAoB,GAEd,IAAIt0B,MAAMg0B,GArBtB,eAwBU2B,EAAQn8B,OAAO64B,KAAKqD,GAAc,GAElCH,EA1BV,aA2BMp1B,QAASw1B,EACTvuB,aAAcuuB,GACXD,EAAaC,IAGlBjB,EAAkBjvB,IAAY3F,WAC9Bq0B,EAAiBoB,GAjCrB,kBAmCWA,GAnCX,qCAqCSpmB,EAAavH,QArCtB,mDAuCI8sB,EAAkBjvB,IAAYpB,UAC9BmwB,EAAiB,EAAD,IAxCpB,2DA/MmB,oEA2PnB,sCAAA17B,EAAA,sEAEI47B,EAAkBjvB,IAAY7F,SAFlC,SAQ2B0P,MAAM,GAAD,OACvBra,IADuB,gBACKqD,IADL,qBACuBuR,EADvB,+CAE1B,CAACwF,OAAM,OAAEH,QAAF,IAAEA,OAAF,EAAEA,EAAiBG,SAVhC,WAQUG,EARV,QAakBC,GAblB,mBAkBU+E,IAAS8N,eAAatlB,SAlBhC,sBAmBc,IAAIgD,MAAM+zB,GAnBxB,yDAyByDvkB,EAASE,OAzBlE,WAyBUgmB,EAzBV,OA2BSvmB,EAAavH,QA3BtB,sDA8BS8tB,GAAiBl8B,OAAO64B,KAAKqD,GAAcx8B,OA9BpD,oBAmCUsb,IAAS8N,eAAatlB,SAnChC,uBAoCQs3B,GAAoB,GACd,IAAIt0B,MAAMg0B,GArCxB,iDA2CU2B,EAAQn8B,OAAO64B,KAAKqD,GAAc,GAElC/zB,GACJ,UAAA+zB,EAAaC,UAAb,eAAqBpT,KAAKqT,kBAAmBD,EAEzC34B,EAhDV,aAiDMmD,QAASwB,EACTyF,aAAcuuB,GACXD,EAAaC,IAGlBjB,EAAkBjvB,IAAY3F,WAC9Bs0B,EAAoBp3B,GAvDxB,kBAyDWA,GAzDX,qCA2DSmS,EAAavH,QA3DtB,mDA6DI8sB,EAAkBjvB,IAAYpB,UAC9BmwB,EAAiB,EAAD,IA9DpB,2DA3PmB,oEAmUnB,8BAAA17B,EAAA,sEAEyBs8B,KAFzB,UAEQp4B,EAFR,uCAMwBm4B,KANxB,cAMUI,EANV,OAQIpB,EAAiBoB,GARrB,0BAaEnB,EAAoBp3B,GAbtB,6CAnUmB,sBAuWnB,OAlQA6K,qBAAU,WACR,GAAI,OAACqH,QAAD,IAACA,OAAD,EAACA,EAAiBG,OAEtB,OAAQmF,GACN,KAAK8N,eAAaiT,MAChBJ,KACA,MACF,KAAK7S,eAAatlB,SAChBo4B,KACA,MACF,QACEC,QAGH,QACDnmB,QADC,IACDA,OADC,EACDA,EAAiBG,OACjB8lB,GACAC,GACAC,GAEAJ,GACAzgB,IAGF3M,qBAAU,WACa,IAAjBotB,IAOJL,EAA2B,CAAC/qB,MAC3B,CAACA,EAAIorB,KAGRptB,qBAAU,WACR,IAAOxK,EAAyCoI,IAAzCpI,QAASuC,EAAgC6F,IAAhC7F,QAASE,EAAuB2F,IAAvB3F,UAAWuE,EAAYoB,IAAZpB,SAC9BwxB,EAAW,CAACpB,EAAgBzB,IAS9ByB,IAAmBp3B,EAWnBw4B,EAASC,MAAK,SAACl4B,GAAD,OAAOA,IAAMgC,MAA6B,IAAjBq1B,GACzCH,EAA2Bl1B,GAMzBi2B,EAASlJ,OAAM,SAAC/uB,GAAD,OAAOA,IAAMkC,KAC9Bg1B,EAA2Bh1B,GAO3B20B,IAAmB30B,GACnBkzB,KAAkClzB,GACjC8yB,GAAwB15B,OAQvB28B,EAASC,MAAK,SAACl4B,GAAD,OAAOA,IAAMyG,MAC7BywB,EAA2BzwB,GAP3BywB,EAA2Bh1B,GA7B3Bg1B,EAA2Bz3B,KAwC5B,CACDo3B,EACA7B,GAAwB15B,OACxB85B,GACAiC,KAIFptB,qBAAU,WAGRmtB,EAFe,CAACT,EAAezB,IAEEz0B,MAAK,SAAC03B,GAAD,OAAOA,QAC5C,CAACxB,EAAezB,KA8JZ,CACL0C,gBACAjB,cAAeQ,EACfV,mBACAI,eAAgBI,G,YC5XpB,IAAMmB,EAAuB,G,SAGdC,E,8EAAf,WACE11B,GADF,qBAAAzH,EAAA,sEAIUo9B,EAJV,UAIuBjhC,IAJvB,gBAImDqD,KAJnD,SAMyBgX,MAAM,GAAD,OAAI4mB,EAAJ,mBAAsB31B,IANpD,WAMU41B,EANV,QAQgB1mB,GARhB,sBASY,IAAIzP,MACR,4DAVR,uBAcoDm2B,EAAOzmB,OAd3D,cAcU0mB,EAdV,OAiBUC,EAAe78B,OAAOC,QAAQ28B,GAAYv9B,QAC9C,+CAAiC,IAAjC,KAAc0pB,KAAK+T,aAlBzB,kBAqBWD,GArBX,wG,+BA4BeE,E,8EAAf,WACEh2B,GADF,qBAAAzH,EAAA,sEAIUo9B,EAJV,UAIuBjhC,IAJvB,gBAImDqD,KAJnD,SAM4BgX,MAAM,GAAD,OACxB4mB,EADwB,sBACH31B,EADG,uBANjC,WAMUqwB,EANV,QAUmBnhB,GAVnB,sBAWY,IAAIzP,MACR,+DAZR,uBAgB0D4wB,EAAUlhB,OAhBpE,cAgBU8mB,EAhBV,OAsBUC,EAAkBj9B,OAAOC,QAAQ+8B,GAAe/5B,KACpD,mCAAEoN,EAAF,KAAMqoB,EAAN,WAAqD,CACnDA,EAAE3P,KAAKqT,iBAAmB/rB,EAC1BqoB,MAzBR,kBA6BWuE,GA7BX,wG,sBA0CO,SAASC,EAAT,GAMiB,IALtB35B,EAKqB,EALrBA,YAKqB,IAJrB45B,4CAIqB,SAKrB,EAA4Cx5B,qBAA5C,mBAAOoD,EAAP,KAAuBq2B,EAAvB,KAEA,EACEz5B,mBAA0C64B,GAD5C,mBAAOa,EAAP,KAAkCC,EAAlC,KAGA,EACE35B,mBAAsBsI,IAAYpI,SADpC,mBAAO05B,EAAP,KAAwCC,EAAxC,KAGA,EACE75B,qBADF,mBAAO85B,EAAP,KAAuCC,EAAvC,KAGA,EACE/5B,mBAAmB64B,GADrB,mBAAOmB,EAAP,KAA4BC,EAA5B,KAGA,EAAkCj6B,mBAAyB64B,GAA3D,mBAAOpF,EAAP,KAAkByG,EAAlB,KAGA,EACEl6B,mBAAsBsI,IAAYpI,SADpC,mBAAOi6B,EAAP,KAAiCC,EAAjC,KAIA,EACEp6B,qBADF,mBAAOq6B,GAAP,KAAgCC,GAAhC,KAOM55B,GAAYF,aAAY,SAACC,GAAD,OAAmBA,EAAEC,aAoBnD,GAA8DmyB,EAdf0H,mBAC7C,kBAAMb,EAA0Bp6B,KAAI,SAACs5B,GAAD,OAAOA,EAAE,QAC7C,CAACc,KAYIzG,GAAP,GAAOA,aAAcI,GAArB,GAAqBA,kBAAmBF,GAAxC,GAAwCA,mBASxC,GAIIoC,EAA0ByE,GAH5BvE,GADF,GACEA,wBACAE,GAFF,GAEEA,6BACAE,GAHF,GAGEA,8BAQF,GAII2E,EAAwB/E,IAH1BgF,GADF,GACEA,qBACAC,GAFF,GAEEA,0BACAC,GAHF,GAGEA,2BAQF,GCzKK,SAKLC,GAMA,IAAM5H,EAAkBxyB,aACtB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCT,mBAEhD40B,EAAch1B,aAClB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCJ,OAO/CO,EAAgBnL,cAAhBmL,aAMP,EAA4CxB,mBAC1C,IADF,mBAAO66B,EAAP,KAAuBC,EAAvB,KAGA,EAAsD96B,qBAAtD,mBAAO+6B,EAAP,KAA4BC,EAA5B,KACA,EAAwDh7B,mBACtDsI,IAAYpI,SADd,mBAAO+6B,EAAP,KAA6BC,EAA7B,KAQMC,EAAiCjnB,uBAlCd,4CAkCoD,CAC3E0mB,EACApF,EACAxC,EACAxxB,IAtCuB,4CAqDzB,gCAAA7F,EAAA,yDAEKi/B,EAAuB7+B,QACvBy5B,GACAxC,GACAxxB,EALL,qDAWQ45B,EAA6BR,EAAuBl/B,QAAO,gBAAEgR,EAAF,2BAC/DlL,EAAaogB,MAAM4R,YAAY9mB,OAGD3Q,OAflC,uBAgBIm/B,EAAwB5yB,IAAY3F,WACpCm4B,EAAkB,IAjBtB,0CAuBII,EAAwB5yB,IAAY7F,SAvBxC,UA0BmDslB,QAAQqN,IACrDgG,EAA2B97B,IAA3B,uCACE,uCAAA3D,EAAA,gFACE6I,EADF,YAEGgyB,EAFH,EAEGA,qBAAsBE,EAFzB,EAEyBA,oBAAqB5V,EAF9C,EAE8CA,kBAF9C,KAIE0V,EAJF,SAKQ6E,EAAgBva,EAAmB4V,KAL3C,+BAUE,CAAC1D,EAAiBxuB,GAVpB,+EADF,wDA3BN,eA0BU82B,EA1BV,iBA2CmC13B,YAAU,CACvCC,MAAOy3B,EACP95B,iBA7CN,QA2CU+5B,EA3CV,OAgDIL,EAAwB5yB,IAAY3F,WACpCm4B,EACEM,EAA2B97B,KACzB,WAAoCE,GAApC,uBAAEgF,EAAF,KAAesc,EAAf,KAAeA,kBAAf,MAA0C,CACxCtc,EADwC,eAGrCsc,EAAoBya,EAAiB/7B,SAtDlD,kDA4DI07B,EAAwB5yB,IAAYpB,UACpC4zB,EAAkB,IAClBE,EAAuB,EAAD,IA9D1B,2DArDyB,+BA+HVK,EA/HU,gFA+HzB,WACEva,EACAkV,GAFF,iBAAAr6B,EAAA,oEAKYmlB,EALZ,cAMWnJ,IAAkBkH,uBAN7B,SAmBWlH,IAAkB+G,eAnB7B,qBAOc8c,EAAuBxF,EAAiB90B,MAC5C,SAACC,GAAD,MAAoB,UAAZA,EAAGlI,QARrB,sBAYgB,IAAI4J,MAAJ,iDACsCie,EADtC,OAZhB,gCAiBe0a,GAjBf,UAoBcC,EAAqBzF,EAAiB90B,MAC1C,SAACC,GAAD,MAAoB,UAAZA,EAAGlI,QArBrB,uBAyBgB,IAAI4J,MAAJ,iDACsCie,EADtC,OAzBhB,iCA8Be2a,GA9Bf,cAiCc,IAAI54B,MAAJ,gDACqCie,EADrC,OAjCd,gIA/HyB,sBAyKzB,OA5HApW,qBAAU,WACRywB,MACC,CAACA,IA0HG,CACLN,iBACAE,sBACAE,wBDRAS,CAAkBjG,IADboF,GAAP,GAAOA,eAAgBE,GAAvB,GAAuBA,oBAAqBE,GAA5C,GAA4CA,qBApFvB,8CAqUrB,WACE73B,GADF,mBAAAzH,EAAA,sEAIIk+B,EAAmCvxB,IAAY7F,SAE/Cs3B,OAAkCt+B,GANtC,SAQuCq9B,EACjC11B,GATN,cAQUu4B,EARV,gBAaYvC,EAAqCh2B,GAbjD,UAYUw4B,EAZV,QAeUC,EAfV,sBAgBSF,GAhBT,YAiBSC,KAGc7/B,OApBvB,wBAqBM89B,EAAmCvxB,IAAY3F,WArBrD,2BA0BIg3B,EAA6BkC,GAC7BhC,EAAmCvxB,IAAY3F,WA3BnD,kDA6BIk3B,EAAmCvxB,IAAYpB,UAC/CyyB,EAA6Bd,GAC7BkB,EAAkC,EAAD,IA/BrC,2DArUqB,sBAwWrB,OA5QArvB,qBAAU,WAAO,IAAD,IAER9L,EAAO,UAAGvC,OAAOC,QAAQoE,IAAWQ,MACxC,mCAAK8nB,GAAL,kBAAa,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAG1K,0BAA2B1e,YAD/B,iBAAG,EAEZ,UAFS,aAAG,EAERgB,gBAER64B,EAAkB76B,KACjB,CAACwE,EAAgBxD,EAAac,KAGjCgK,qBAAU,WACHtH,GAvGc,qCAyGnB04B,CAAuC14B,KACtC,CAACA,IAGJsH,qBAAU,WACR,GAAKuoB,GAAal3B,OAElB,OAESk+B,EAFLT,EAE4BvG,GAAa3zB,KAAI,0CAK/C2zB,GAAav3B,QAAO,8CAAwB,MAAxB,KAAcqgC,SAAez8B,KAAI,6CAEtD,CAAC2zB,GAAcuG,IAGlB9uB,qBAAU,WACR,GAAIyvB,IAA6B7xB,IAAY3F,UAA7C,CAIA,IAAMq5B,EAAiBhC,EACpB16B,KAAI,SAACoN,GAAsB,IAAD,MACzB,EACEumB,GAAa/xB,MACX,gBAAE+6B,EAAF,2BACE19B,YAAgB09B,KAAmB19B,YAAgBmO,OAClD,GAJEqqB,EAAT,oBAMA,EACE2C,EAA0Bx4B,MACxB,gBAAEg7B,EAAF,2BACE39B,YAAgB29B,KAAgB39B,YAAgBmO,OAC/C,GAJP,mBAAOyvB,EAAP,KAAuBC,EAAvB,KAMMC,GACQ,OAAZD,QAAY,IAAZA,OAAA,EAAAA,EAAcl5B,IAAImU,QAAS8N,eAAaiT,MAEpCpV,EACJmZ,GAAkBE,EAAlB,2BAEUD,GAFV,IAIMp5B,QAAS0J,EACTzC,aAAckyB,SAEhB1gC,EAEAsE,EACJo8B,IAAmBE,EAAnB,2BAEUD,GAFV,IAIMp5B,QAAS0J,EACTzC,aAAckyB,SAEhB1gC,EAEAqE,EAAwB,UAAG21B,GAAwBv0B,MACvD,gBAAEo7B,EAAF,2BACE/9B,YAAgB+9B,KAA6B/9B,YAAgBmO,aAFnC,aAAG,EAG7B,GAEE6vB,EAAsB,UAAG9B,GAAqBv5B,MAClD,gBAAEs7B,EAAF,2BACEj+B,YAAgBi+B,KAA2Bj+B,YAAgBmO,aAFnC,aAAG,EAG3B,GAOJ,MAAO,CACLqqB,cACA0F,gBAPmB,UAAG5B,GAAe35B,MACrC,gBAAEw7B,EAAF,2BACEn+B,YAAgBmO,KAAQnO,YAAgBm+B,aAFvB,aAAG,EAGpB,GAKF58B,2BACAy8B,yBAIAv5B,QAAS0J,EACTsW,gBACAjjB,mBACAo4B,aAAckE,EACVlX,eAAaiT,MACbjT,eAAatlB,SAGjBy4B,8BAA+B,aAE/B9vB,uBAAwB,iBAG3B9M,QAAO,SAACq5B,GAAD,OAAOA,EAAE/R,eAAiB+R,EAAEh1B,oBAGtCm6B,EAAa8B,MACZ,CACDhC,EACA/G,GACAkH,EACAU,GACApF,GACAgF,GACAf,IAIFhvB,qBAAU,WACR,IAAOxK,EAAyCoI,IAAzCpI,QAASuC,EAAgC6F,IAAhC7F,QAASE,EAAuB2F,IAAvB3F,UAAWuE,EAAYoB,IAAZpB,SAE9BwxB,EAAW,CACfvF,GACA0C,GACA8E,GACAM,GACArB,GAUEA,IAAoC15B,EAOpCw4B,EAASC,MAAK,SAACl4B,GAAD,OAAOA,IAAMgC,KAC7B23B,EAA4B33B,GAM1Bi2B,EAASlJ,OAAM,SAAC/uB,GAAD,OAAOA,IAAMkC,KAC9By3B,EAA4Bz3B,IAY5Bi3B,IAAoCj3B,GACnC+2B,EAA0B39B,UAc3B85B,KAAkClzB,GACjC8yB,GAAwB15B,QAQvB28B,EAASC,MAAK,SAACl4B,GAAD,OAAOA,IAAMyG,MAC7BkzB,EAA4BlzB,GAtB5BkzB,EAA4Bz3B,GA7B5By3B,EAA4Bl6B,KAuD7B,CACD85B,EAAoBj+B,OACpBo3B,GACA8H,GACAxF,GACAI,GACA8E,GACAjB,EAA0B39B,OAC1B69B,IAIFlvB,qBAAU,WACR4vB,GACE,CACEjH,GACA0H,GACApF,GACA+E,GACAZ,GACA54B,MAAK,SAAC03B,GAAD,OAAOA,QAEf,CACDvF,GACA0H,GACApF,GACA+E,GACAZ,IA0CK,CACLrG,YACAkJ,eAAgBtC,GAChBuC,gBAAiBzC,GEncd,SAASK,EAKdI,GAMA,IAAM5H,EAAkBxyB,aACtB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCT,mBAO/CY,EAAgBnL,cAAhBmL,aAMP,EACExB,mBAAqC,IADvC,mBAAOy6B,EAAP,KAA6BoC,EAA7B,KAGA,EACE78B,qBADF,mBAAO06B,EAAP,KAAkCoC,EAAlC,KAGA,EACE98B,mBAAsBsI,IAAYpI,SADpC,mBAAOy6B,EAAP,KAAmCoC,EAAnC,KAOMC,EAAuC9oB,uBAhCd,4CAkC7B,CAAC0mB,EAAwB5H,EAAiBxxB,IAlCb,4CAiD/B,oCAAA7F,EAAA,yDACOq3B,GAAoB4H,EAAuB7+B,QAAWyF,EAD7D,qDAMQ45B,EAA6BR,EAAuBl/B,QAAO,gBAAEgR,EAAF,2BAC/DlL,EAAaogB,MAAM4R,YAAY9mB,OAGD3Q,OAVlC,uBAWIghC,EAA8Bz0B,IAAY3F,WAX9C,mDAkBY,kCAlBZ,UAiBU4mB,EAjBV,OAmBM3L,QAEIqf,EAAkB1T,EAAeroB,MACrC,SAACC,GAAD,MAAoB,eAAZA,EAAGlI,QAtBjB,uBA0BY,IAAI4J,MACR,qEA3BR,eA+BUgB,EAA0Bu3B,EAA2B97B,KACzD,mCAAEkF,EAAF,WAA0C,CAA1C,KAAegyB,qBAEbyG,EACA,CAACjK,EAAiBxuB,OAItBu4B,EAA8Bz0B,IAAY7F,SAvC9C,UAyC6CmB,YAAU,CACjDC,QACArC,iBA3CN,QAyCU07B,EAzCV,OA8CIH,EAA8Bz0B,IAAY3F,WAC1Ck6B,EACEzB,EAA2B97B,KAAI,WAAeE,GAAf,MAAqB,CAArB,oBAE7B09B,EAA2B19B,QAlDnC,kDAsDIu9B,EAA8Bz0B,IAAYpB,UAC1C21B,EAAyB,IACzBC,EAA6B,EAAD,IAxDhC,2DAjD+B,sBA6G/B,OApEApyB,qBAAU,WACRsyB,MACC,CAACA,IAkEG,CACLvC,uBACAC,4BACAC,8B,4BC7EFwC,EAOE7M,IAPF6M,UACAC,EAME9M,IANF8M,0BACAC,EAKE/M,IALF+M,2BACAC,EAIEhN,IAJFgN,eACAC,EAGEjN,IAHFiN,QACAC,EAEElN,IAFFkN,QACAC,EACEnN,IADFmN,OAGIrP,EACY,eAAhBv2B,IAA+B,KAAQ,IAclC,SAAS6lC,EAAT,GAM8E,IAAD,IALlFC,iCAKkF,MALtD,EAKsD,MAJlFC,mCAIkF,MAJpD,EAIoD,MAHlFpP,oBAGkF,MAHnEJ,EAGmE,EAFlFvuB,EAEkF,EAFlFA,SAEkF,IADlFg+B,mCACkF,SAK3Er8B,EAAgBnL,cAAhBmL,aAEDJ,EAAqBZ,aACzB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCT,mBAGhDorB,EAAiBxrB,aACrB,SAACC,GAAD,uBAAmBA,EAAEC,UAAUW,2BAA/B,aAAmB,EAAiCJ,OAOtD,EAA4BjB,qBAA5B,mBAAO4sB,EAAP,KAAekR,EAAf,KAEA,EAAwC99B,oBAAkB,GAA1D,mBAAO+9B,EAAP,KAAqBC,EAArB,KAEA,EACEh+B,qBADF,mBAAO+2B,EAAP,KAAoBkH,EAApB,KAGA,EACEj+B,qBADF,mBAAOy8B,EAAP,KAAwByB,EAAxB,KAGA,EACEl+B,qBADF,mBAAOm+B,EAAP,KAA8BC,GAA9B,KAKA,GACEp+B,qBADF,qBAAOq+B,GAAP,MAAgCC,GAAhC,MAOMC,GAAuB31B,mBACvB41B,GAAiB51B,kBAAgB,GAMvC,GAII0F,YAAgBsvB,EAA6BD,GAH/BnvB,GADlB,GACEC,eACczB,GAFhB,GAEEuB,aACAI,GAHF,GAGEA,sBAOI8vB,GACJV,KACCF,GAA8BlvB,IAE1B7O,GAA6DD,EAA7DC,yBAA0BkjB,GAAmCnjB,EAAnCmjB,cAAejjB,GAAoBF,EAApBE,iBAC1CyE,IAA0B,OAAbwe,SAAa,IAAbA,QAAA,EAAAA,GAAehgB,WAAf,OAA0BjD,SAA1B,IAA0BA,QAA1B,EAA0BA,GAAkBiD,SAEzD07B,KAAgB3H,GAClB4H,YAAgBtO,IAAa1X,OAAQoe,EAAYgF,OAG/C6C,KAAmB7H,GACrB4H,YAAgBtO,IAAawO,UAAW9H,EAAYgF,OAGlD+C,KAAmB/H,GACrB4H,YAAgBtO,IAAa0O,UAAWhI,EAAYgF,OAGlDiD,GAAqB,OAAGl/B,SAAH,IAAGA,QAAH,EAAGA,GAA0B02B,qBAClDyI,GAAiB,OAAGn/B,SAAH,IAAGA,QAAH,EAAGA,GAA0B42B,sBAQ9CwI,GACJC,qBAAyB,OAAf1C,QAAe,IAAfA,OAAA,EAAAA,EAAiB2C,WAAY,KACvC7gC,aAA+B,OAAfk+B,QAAe,IAAfA,OAAA,EAAAA,EAAiB2C,WAAY,MAAQxmB,IAIjDymB,GAAsBxB,EAFSrvB,KAAqBxB,GAItDmkB,IAAYgN,GAAyB,MACrChN,IAAYA,IAAYmO,aAEtBC,GACJpO,IAAYgN,GAAyB,MACrChN,IAAYA,IAAYqO,cAMpBC,GAA8BvrB,uBAzG8C,6CAyGX,CACrEpU,GACAksB,EACA5qB,EACA69B,GACAD,GACAx6B,GACAhD,IAhHgF,8CA2RlF,kDAAA7F,EAAA,kEAUOqwB,GACA5qB,GACAoD,IACAhD,EAbP,oDAkBUk+B,EAAe1T,EAAetwB,QAClC,SAAC02B,GAAD,MAAwB,cAAdA,EAAKn5B,QACf,GAMG6G,GA1BT,iCA2B+B8D,YAAU,CACjCC,MAAO,CAEL,CAACzC,EAAoBs+B,EAAc,CAACl7B,MAEtChD,iBAhCR,0CA2Ba3B,EA3Bb,KAmCMo+B,EAAep+B,GAEfm+B,GAAgB,GArCtB,kBAuCan+B,GAvCb,WA0CSo/B,IAAsBD,GA1C/B,0DA4CUW,EAAgBV,GAAkBvjC,QACtC,SAAC02B,GAAD,MAAwB,eAAdA,EAAKn5B,QACf,GAEI2mC,EAAUX,GAAkBvjC,QAChC,SAAC02B,GAAD,MAAwB,UAAdA,EAAKn5B,QACf,GAEI4K,EAA0B,CAE9B,CAACzC,EAAoBs+B,EAAc,CAACl7B,KAEpC,CAACw6B,GAAuBY,EAAS,CAACx+B,EAAoBoD,KAEtD,CACEw6B,GACAW,EACA,CAACv+B,EAAoBoD,MA7D7B,UAiEgDZ,YAAU,CACpDC,QACArC,iBAnEN,2CAiEW3B,EAjEX,KAiEqBiD,EAjErB,KAiE4B+8B,EAjE5B,KAsEI5B,EAAep+B,GACfq+B,EAAmBp7B,GACnBs7B,GAAyByB,GAEzB7B,GAAgB,GA1EpB,kBA4EW,CACLn+B,WACAggC,aACA/8B,UA/EN,wGA3RkF,sBAiXlF,SAASg9B,KACHvB,GAAqB9zB,UACvB4B,cAAckyB,GAAqB9zB,SAEnC8zB,GAAqB9zB,aAAUhP,GAQnC,OArQAiP,qBAAU,WACJqzB,GAIJ0B,KAA8BhtB,OAAM,SAACjL,GACnC82B,GAA2B92B,QAE5B,CAACi4B,GAA6B1B,IAGjCrzB,qBAAU,WAKJo0B,KACFN,GAAe/zB,SAAU,GAI3Bq1B,KAGA,IAAMrd,EAAarW,YAAW,sBAAC,sBAAAzQ,EAAA,sEAEvB6iC,GAAe/zB,SACjBq1B,KAHyB,SAMrBL,KANqB,uDAQ3BK,KAEAxB,GAA2B,EAAD,IAVC,yDAY5B9P,GAEH+P,GAAqB9zB,QAAUgY,IAC9B,CAACqc,GAAkBtQ,EAAciR,KAGpC/0B,qBAAU,WAMR,OALIo0B,IACFgB,KAIK,WACLA,QAED,CAAChB,KAGJp0B,qBAAU,WAER,GAAK+zB,GAAL,CAMA,IAAMsB,OAAsCtkC,IAAXmxB,EAI9B8R,IACAE,IACAE,IACAlS,IAAW6Q,IAAUsC,GActBrB,IACCW,IACAzS,IAAW6Q,IAAUsC,GAStBnB,KACAS,IACCH,IACAtS,IAAW6Q,GAAU7Q,IAAW4Q,IAAWuC,GAS5CnB,IACCS,IACAH,IACAtS,IAAW0Q,IAAkByC,EAS9BnB,KACCS,IACDH,IACAK,KACC3S,IAAWyQ,GAA8B0C,GAE1CjC,EAAUV,IAOVwB,IACCS,KACDH,IACCK,IACA3S,IAAWwQ,IAA6B2C,GAQvCjB,IAAqBlS,IAAW2Q,IAAWwC,GAC7CjC,EAAUX,GAPVW,EAAUP,GA1BVO,EAAUT,GAZVS,EAAUR,GAZVQ,EAAUN,GAhBVM,EAAUL,QAdVK,OAAUriC,KA2FX,CACDijC,GACAI,GACAF,GACAhS,EACA6R,GACAY,GACAE,GACAL,KAyGK,CACLnI,cACA0F,kBACA0B,wBACAE,2BACAzR,SACAoT,qBAAsBF,I,uBCvanB,SAASx2B,KAKd,IAAMlI,EAAqBZ,aACzB,SAAC8Y,GAAD,uBAAuBA,EAAM5Y,UAAUW,2BAAvC,aAAuB,EAAqCT,mBAGxDF,EAAYF,aAAY,SAACC,GAAD,OAAmBA,EAAEC,aAE7CwD,EAAgB1D,aACpB,SAACC,GAAD,uBAAmBA,EAAE0I,uBAArB,aAAmB,EAAmBjF,iBAOxC,EAA0C7N,eAAnCkL,EAAP,EAAOA,QAAS1C,EAAhB,EAAgBA,SAAU2C,EAA1B,EAA0BA,aAM1B,EAAgCxB,qBAAhC,mBAAOmE,EAAP,KAAiB87B,EAAjB,KACA,EAA0CjgC,qBAA1C,mBAAOkgC,EAAP,KAAsBC,EAAtB,KACA,EAA4CngC,mBAC1CC,IAAaC,SADf,mBAAOsJ,EAAP,KAAuB42B,EAAvB,KA3B6D,4CA8C7D,uEAAAzkC,EAAA,yDACE0O,EADF,EACEA,gBACAzK,EAFF,EAEEA,YACA0K,EAHF,EAGEA,gBACAC,EAJF,EAIEA,qBAJF,SAwBS/I,EAxBT,sBAyBY,IAAIqB,MAAM,+BAzBtB,UA4BStB,EA5BT,sBA6BY,IAAIsB,MAAM,yBA7BtB,UAgCSqB,EAhCT,sBAiCY,IAAIrB,MAAM,gCAjCtB,UAoCSzB,EApCT,uBAqCY,IAAIyB,MAAM,uCArCtB,WAwCS/K,IAxCT,uBAyCY,IAAI+K,MAAM,wCAzCtB,WA4CS1H,IA5CT,uBA6CY,IAAI0H,MAAM,kCA7CtB,eAgDIu9B,EAAkBngC,IAAauC,kBAEzBY,EAAiBxD,EACnByD,YAA+BzD,EAAac,GAC5CkY,IAEGhU,EAAyByF,EAAzBzF,OAtDX,EAsDoCyF,EAAjB/F,gBAtDnB,MAsD8B,GAtD9B,YAwDwC+7B,mBAASvoC,IAAsBqD,KAxDvE,wBAwDiBmlC,EAxDjB,EAwDWlb,KAEDjhB,EAAgC,CACpCe,QAASzM,IACTmM,SACAN,SAAS,2BACJA,GADG,IAONJ,mBAIEq8B,EAAyC,CAC7C/7B,WAAY8F,EACZyZ,MAAO5oB,IACPqlC,MAAOF,EAAcE,OA3E3B,UA+E0BC,2BACpBt8B,EACAo8B,EACAzoC,KAlFN,eA+EUwG,EA/EV,OAqFUoiC,EAAgBC,6BAAmB,CACvCj8B,UAAWpG,EAAQoG,UACnBvB,QAAS,CACPqB,WAAYlG,EAAQ6E,QAAQqB,WAC5BI,OAAQC,mBAAiBD,MAzFjC,EA6F4Bg8B,8BAAoB,2BACtCF,GADqC,IACtBrpB,KAAM8N,eAAa8P,OACtC7zB,EACAgC,EACA3K,KAJKqN,EA7FX,EA6FWA,OAAQC,EA7FnB,EA6FmBA,MAOT86B,EAAa56B,KAAKC,UAAU,CAChCH,MAAOA,EACPD,OAAQA,EACRM,YAAaC,KACb/H,QAASoiC,IAxGf,UA2GoCp6B,sBAC9BzH,EACA0C,EACAs/B,GA9GN,eA2GUt6B,EA3GV,OAiHI65B,EAAkBngC,IAAawC,SAjHnC,UAoHyBq+B,wBACnBhpC,IACAyJ,EAFgC,2BAI3BjD,GAJ2B,IAK9B6E,QAAQ,2BAAK7E,EAAQ6E,SAAd,IAAuBqB,WAAY+F,MAE5ChE,EACA,CACEtB,SAAUa,EAAOb,SACjBC,QAASY,EAAOZ,QAChB2B,kBAAmBf,EAAOe,kBAC1BvI,QAASoiC,IAhIjB,wBAoHWtb,EApHX,EAoHWA,KAgBD2b,EAAe,CACnB3b,KAAM9mB,EACNiI,YACAy6B,SAAU5b,EAAK4b,UAGjBZ,EAAkBngC,IAAa0C,WAC/Bs9B,EAAYc,GA3IhB,kBA6IWA,GA7IX,wCA+IIX,EAAkBngC,IAAaiH,UAC/Bi5B,EAAiB,EAAD,IAhJpB,gEA9C6D,sBAoM7D,MAAO,CACL52B,gBArM2D,4CAsM3DpF,WACA+7B,gBACA12B,kBCjLG,SAAS0a,KAOd,IAAM9iB,EAAqBZ,aACzB,SAAC8Y,GAAD,uBAAuBA,EAAM5Y,UAAUW,2BAAvC,aAAuB,EAAqCT,mBAExDqgC,EAAsBzgC,aAC1B,SAAC8Y,GAAD,uBAAuBA,EAAM5Y,UAAUW,2BAAvC,aAAuB,EAAqCP,YAExDJ,EAAYF,aAAY,SAAC8Y,GAAD,OAAuBA,EAAM5Y,aAM3D,EAA0CrK,eAAnCkL,EAAP,EAAOA,QAAS1C,EAAhB,EAAgBA,SAAU2C,EAA1B,EAA0BA,aAM1B,EACExB,qBADF,mBAAOq4B,EAAP,KAAqB6I,EAArB,KAEA,EACElhC,qBADF,mBAAOmhC,EAAP,KAAiCC,EAAjC,KAEA,EACEphC,mBAAuBC,IAAaC,SADtC,mBAAOikB,EAAP,KAAkCkd,EAAlC,KA3BqC,SAyCtBC,EAzCsB,8EAyCrC,WACEC,GADF,iBAAA5lC,EAAA,yDAGO7D,IAHP,sBAIU,IAAI+K,MAAM,wCAJpB,UAOOrB,EAPP,sBAQU,IAAIqB,MAAM,+BARpB,uBAWiCrB,EAAa0Z,IAAI0T,iBAXlD,cAWQ3rB,EAXR,YAaoCsiB,SAbpC,UAcU0D,YACJuY,IAAsBC,2BACtBR,GAhBN,2BAaQS,GAbR,wBAoBeC,+BAAqB,2BAE3BJ,GAF0B,IAG7BG,oBACAz+B,aAEFnL,KA1BJ,sFAzCqC,kEA8ErC,uEAAA6D,EAAA,yDACEupB,EADF,EACEA,oBACA9hB,EAFF,EAEEA,eACAxD,EAHF,EAGEA,YACAyX,EAJF,EAIEA,KAJF,SAOS9V,EAPT,sBAQY,IAAIsB,MAAM,iCARtB,UAWSrB,EAXT,sBAYY,IAAIqB,MAAM,+BAZtB,UAeSzB,EAfT,sBAgBY,IAAIyB,MAAM,uCAhBtB,UAmBS/K,IAnBT,uBAoBY,IAAI+K,MAAM,wCApBtB,WAuBS1H,IAvBT,uBAwBY,IAAI0H,MAAM,kCAxBtB,WA2BQwU,IAAS8N,eAAaiT,OAAS/gB,IAAS8N,eAAatlB,SA3B7D,uBA4BY,IAAIgD,MAAM,gDA5BtB,eA+BIw+B,EAA6BphC,IAAauC,kBAEpCyC,EAAW7B,IAEbxD,EACAyD,YAA+BzD,EAAac,GAC5CkY,KAEG9B,EAAmCoO,EAAnCpO,KAAM7d,EAA6BisB,EAA7BjsB,KAAMqL,EAAuB4gB,EAAvB5gB,SAAUI,EAAawgB,EAAbxgB,UAvCjC,UAyCwC27B,mBAASvoC,IAAsBqD,KAzCvE,oBAyCiBmlC,EAzCjB,EAyCWlb,KAEDmc,EAAkC,CACtCtoC,OACA6d,OACAxS,WACAk8B,MAAOF,EAAcE,MACrBzc,MAAO5oB,KAKPkc,IAAS8N,eAAaiT,MArD5B,kCAsDgBwJ,4BAAkBL,EAAYzpC,KAtD9C,6DAuDgBwpC,EAA2B,2BAC5BC,GAD2B,IAE9B78B,eAzDZ,mCAoDUpG,EApDV,KA8DUoiC,EACJrpB,IAAS8N,eAAaiT,MAClByJ,8BAAoBvjC,GACpBwjC,iCAAuBxjC,GAjEjC,EAmE4BsiC,8BAAoB,2BACtCF,GADqC,IACtBrpB,SACnBjW,EACA6D,EACAxM,KAJKqN,EAnEX,EAmEWA,OAAQC,EAnEnB,EAmEmBA,MAOT86B,EAAa56B,KAAKC,UAAU,CAChCH,QACAD,SACAM,YAAaC,KACb/H,QAASoiC,IA9Ef,UAkF4Bp6B,sBAAYzH,EAAU0C,EAASs/B,GAlF3D,eAkFUt6B,EAlFV,OAoFI86B,EAA6BphC,IAAawC,SApF9C,UAuFyBq+B,wBACnBhpC,IACAyJ,EACAjD,EACAiI,EACA,CACEtB,SAAUa,EAAOb,SACjBC,QAASY,EAAOZ,QAChB2B,kBAAmBf,EAAOe,kBAC1BvI,QAASoiC,IAhGjB,wBAuFWtb,EAvFX,EAuFWA,KAaD2b,EAAe,CACnB3b,KAAM9mB,EACNiI,YACAy6B,SAAU5b,EAAK4b,SACfe,cAAe3c,EAAK2c,eAAiB,IAGvCV,EAA6BphC,IAAa0C,WAC1Cu+B,EAAgBH,GA5GpB,kBA8GWA,GA9GX,wCAgHIM,EAA6BphC,IAAaiH,UAC1Ck6B,EAA4B,EAAD,IAjH/B,gEA9EqC,sBAqMrC,MAAO,CACL/I,eACA8I,2BACAhd,4BACAC,oBAzMmC,+C,iGC7ExB,SAASnc,EAAatI,GACnC,IAAOuI,EAA0BvI,EAA1BuI,IAAP,EAAiCvI,EAArBwI,iBAAZ,SAEA,OACE,gCACE,mBAAG65B,KAAM95B,EAAK+5B,IAAI,sBAAsBC,OAAO,SAA/C,SACG/5B,EAAY,gBAAkB,yB,gCCXhC,SAASg6B,EAAT,GAeJ,IAdDC,EAcA,EAdAA,kBACAC,EAaA,EAbAA,wBACAC,EAYA,EAZAA,iBACAC,EAWA,EAXAA,iBAYMC,EAAwB,IACxBja,EAAW,SAAC/rB,GAAD,OAAuCkH,OAAOlH,GAAS,IAElEimC,EACJla,EAAS8Z,GAA2BG,EAEhCE,EAAsBna,EAASga,GAAoBC,EAEzD,MAAO,CACLG,UAAWD,EAAcna,EAAS+Z,GAAoBE,EACtDE,cACAE,iBACEH,EAAqBla,EAAS6Z,GAAqBI,EACrDC,sB,iRClBG,SAAej8B,EAAtB,kC,4CAAO,WACLq8B,GADK,eAAAlnC,EAAA,+EAIoBwW,MAAM,GAAD,OACvBra,IADuB,gBACKqD,IADL,2BAC6B0nC,IALtD,UASqB,OALlBxwB,EAJH,QASUua,OATV,8CAUMnxB,GAVN,UAcE4W,EAASC,GAdX,sBAeK,IAAIzP,MACR,gEAhBD,wBAoBUwP,EAASE,OApBnB,iJ,wDCLA,SAAS7I,EACd5G,EACAvB,GAEA,IAAMuhC,GAAahgC,GAAS,IAAI5B,MAAK,SAAC6hC,GAAD,OACnC1mC,OAAOC,QAAQymC,GAAI7hC,MACjB,mCAAEtC,EAAF,iBACEL,YAAgBK,KAAaL,YAAgBgD,GAAW,UAI9D,GAAIuhC,EAIF,OAHiBzmC,OAAOC,QAAQwmC,GAAW,GAAG,GACtB5/B,IAAIC,QAAQyB,SAElBC,mBAAiBC,IAAMsF,IAAYtF,IAAMsF,IAAY4E,G,YCTpE,SAAe0nB,EAAtB,kC,4CAAO,WACL5V,GADK,qBAAAnlB,EAAA,oEAIKmlB,EAJL,cAMInJ,IAAkBkH,uBANtB,SAcIlH,IAAkB+G,eAdtB,kCAOgD,kCAPhD,uBAOiBskB,EAPjB,EAOQplB,QAPR,kBAWQolB,GAXR,wBAewC,kCAfxC,wBAeiBC,EAfjB,EAeQrlB,QAfR,kBAmBQqlB,GAnBR,cAsBO,IAAIpgC,MAAJ,gDACqCie,EADrC,OAtBP,gI,sBCCA,SAAS6d,EACdlV,EACAC,GAEA,OAAOD,IAAgB7tB,KAAK+tB,KAAKjmB,OAAOgmB,GAAmB,GAAK,E,YCf3D,SAASwZ,EACdC,EACAC,GAEA,OAAOjS,IAAYiS,KAAiBjS,IAAYgS,GC8B3C,SAAez8B,EAAtB,kC,4CAAO,WACL0e,GADK,SAAAzpB,EAAA,+EAIoBwW,MAAM,GAAD,OACvBra,IADuB,gBACKqD,IADL,oBAE1B,CACE0b,OAAQ,OACRE,QAAS,CACP,eAAgB,oBAElBD,KAAM7Q,KAAKC,UAAUkf,KAXtB,iBAeW9S,GAfX,sBAgBK,IAAIzP,MACR,mEAjBD,4H,gGCpCP,kCAMO,IAAM+V,EACX,8C,gHCNF,iHAOaiK,EAAwC,CACnDzY,IAAYtF,IACZsF,IAAY4E,IAID3I,EAAsB,UAEtBwB,EAA8B,CACzC,mBACA,gBACA,eACA,uBACA,0B,gCCrBF,kD,oICwBe,SAASH,EAAa/H,GACnC,IAAOgI,EAA2ChI,EAA3CgI,WAAYC,EAA+BjI,EAA/BiI,SAGby7B,EAH4C1jC,EAArBmI,kBAIzBF,EAAS,GACTvM,YAAqBuM,GAEzB,EAA0C5H,mBAAiBqjC,GAA3D,mBAAOC,EAAP,KAAsBC,EAAtB,KAgBA,OAdA74B,qBAAU,WACR,IAAM+X,EAAarW,aACjB,kBACEm3B,GAAiB,SAACC,GAAD,OACfnoC,YAAqBuM,EAAU47B,QAEnC77B,GAGF,OAAO,WACL0E,cAAcoW,MAEf,CAAC9a,EAAYC,IAETjI,EAAMoI,OAAOu7B,K,mDC7Bf,IAAK5qB,EASA6F,EAsBAU,EAWAuiB,EAaAp3B,EAKAnK,EA/EZ,4M,SAmBYyY,O,oBAAAA,M,cASA6F,K,YAAAA,E,8BAAAA,E,sCAAAA,E,2BAAAA,E,wBAAAA,E,sBAAAA,E,sBAAAA,E,oBAAAA,E,UAAAA,E,wBAAAA,E,oBAAAA,E,kBAAAA,E,0BAAAA,E,iBAAAA,M,cAsBAU,K,YAAAA,E,kBAAAA,E,WAAAA,M,cAWAuiB,K,uDAAAA,E,2DAAAA,E,yDAAAA,E,2CAAAA,E,mDAAAA,E,mDAAAA,E,2CAAAA,E,uCAAAA,E,2CAAAA,E,0CAAAA,M,cAaAp3B,K,UAAAA,E,SAAAA,M,cAKAnK,K,kBAAAA,E,oCAAAA,E,kBAAAA,E,sBAAAA,E,qBAAAA,M,6JCvEG,SAASwjC,EAAY9jC,GAClC,IAAO+wB,EAAe/wB,EAAf+wB,YACP,EAAkD1wB,oBAAkB,GAApE,mBAAO8wB,EAAP,KAA0BC,EAA1B,KAYA,OAVArmB,qBAAU,WAER,IAAMsmB,EACJN,GAAeO,YAAW,kBAAMF,GAAqB,KAAOL,GAE9D,OAAO,WACLM,GAAaE,aAAaF,MAE3B,CAACN,KAEIA,GAAgBA,GAAeI,EACrC,qBAAK3pB,UAAU,gBAAgB,aAAW,uBACxC,O,4FCxBN,uDAOama,EAAoB,SAACoiB,GAAD,OAC/BzoB,IAAK2G,MAAMud,UAAUuE,K,mDCKhB,IAAKp7B,EAbZ,kC,SAaYA,K,kBAAAA,E,kBAAAA,E,sBAAAA,E,qBAAAA,M,oQCXC4iB,EAAUyY,YAAH,gLCAPC,EAA8BD,YAAH,+VCA3BE,EAAcF,YAAH,kVCAXG,EAA4BH,YAAH,oS,yBCkC/B,SAASI,EAAoBC,GAClC,OAAOC,aAAQ,YAAyC,IAAnBC,EAAkB,EAAlBA,aAC/BA,IAECF,EAAMpjB,WAA0B+L,sBAAsBC,SACvDU,IAAsB6W,MAGtBH,EAAMpxB,SACJmP,YAAyB,CAAC6K,OAAQU,IAAsB6W,OAI1D7sB,QAAQ9P,MAAR,oCAA2C08B,MAK1CA,GAEAF,EAAMpjB,WAA0B+L,sBAAsBC,SACvDU,IAAsB1nB,IAGtBo+B,EAAMpxB,SACJmP,YAAyB,CAAC6K,OAAQU,IAAsB1nB,W,yQC1D5DwT,EAAgB,KAkBtB,SAASgrB,EACP9qB,EACAnW,GAEA,OAAO,2BAAImW,GAAUnW,GAGvB,SAASkhC,IACP,OAAOjrB,E,aC1BHA,EAAgB,CACpBjE,QAAQ,GAmBV,SAAS4D,EACPO,GAEA,OAAO,2BAAIA,GAAX,IAAkBnE,QAAQ,IAG5B,SAAS6D,EACPM,GAEA,OAAO,2BAAIA,GAAX,IAAkBnE,QAAQ,I,eCNtByV,EAAe,CACnB0Z,oBAAqB,KACrB3jC,sBAAuB,KACvB4jC,oBAAqB,KACrBC,sBAAuB,KACvBvuB,yBAA0B,KAC1BwuB,mBAAoB,KACpBC,2BAA4B,KAC5BrjC,oBAAqB,KACrBqnB,mBAAoB,KACpBic,uBAAwB,KACxBC,kBAAmB,KACnBC,kBAAmB,KACnBlc,iBAAkB,KAClBmc,mBAAoB,KACpBC,qBAAsB,KACtBnc,mBAAoB,KACpBoc,iBAAkB,KAClBnc,gBAAiB,KACjBC,mBAAoB,KACpBpK,eAAgB,MA4DlB,SAAShB,EAAepE,GACtB,OAAO,2BAAIA,GAAUsR,GAGvB,SAASqa,EAAoB3rB,EAAuBnW,GAClD,OAAO,2BAAImW,GAAX,IAAkBirB,oBAAoB,eAAKphC,KAG7C,SAAS+hC,EAAmB5rB,EAAuBnW,GACjD,OAAO,2BAAImW,GAAX,IAAkBmrB,mBAAmB,eAAKthC,KAG5C,SAASgiC,EAAoB7rB,EAAuBnW,GAClD,OAAO,2BAAImW,GAAX,IAAkBjY,oBAAoB,eAAK8B,KAG7C,SAASiiC,EACP9rB,EACAnW,GAEA,OAAO,2BAAImW,GAAX,IAAkBorB,2BAA2B,eAAKvhC,KAGpD,SAASkiC,EACP/rB,EACAnW,GAEA,OAAO,2BAAImW,GAAX,IAAkB3Y,sBAAsB,eAAKwC,KAG/C,SAASmiC,EAAsBhsB,EAAuBnW,GACpD,OAAO,2BAAImW,GAAX,IAAkBkrB,sBAAsB,eAAKrhC,KAG/C,SAASoiC,EACPjsB,EACAnW,GAEA,OAAO,2BAAImW,GAAX,IAAkBoP,mBAAmB,eAAKvlB,KAG5C,SAASqiC,EAAkBlsB,EAAuBnW,GAChD,OAAO,2BAAImW,GAAX,IAAkBsrB,kBAAkB,eAAKzhC,KAG3C,SAASsiC,EAAkBnsB,EAAuBnW,GAChD,OAAO,2BAAImW,GAAX,IAAkBurB,kBAAkB,eAAK1hC,KAG3C,SAASuiC,EAAmBpsB,EAAuBnW,GACjD,OAAO,2BAAImW,GAAX,IAAkBsP,mBAAmB,eAAKzlB,KAG5C,SAASwiC,EAAiBrsB,EAAuBnW,GAC/C,OAAO,2BAAImW,GAAX,IAAkB0rB,iBAAiB,eAAK7hC,KAG1C,SAASyiC,EAAgBtsB,EAAuBnW,GAC9C,OAAO,2BAAImW,GAAX,IAAkBuP,gBAAgB,eAAK1lB,KAGzC,SAAS0iC,EAAevsB,EAAuBnW,GAC7C,OAAO,2BAAImW,GAAX,IAAkBoF,eAAe,eAAKvb,KAGxC,SAAS2iC,EAAiBxsB,EAAuBnW,GAC/C,OAAO,2BAAImW,GAAX,IAAkBqP,iBAAiB,eAAKxlB,KAG1C,SAAS4iC,EACPzsB,EACAnW,GAEA,OAAO,2BAAImW,GAAX,IAAkBgrB,oBAAoB,eAAKnhC,KAG7C,SAAS6iC,EACP1sB,EACAnW,GAEA,OAAO,2BAAImW,GAAX,IAAkBwrB,mBAAmB,eAAK3hC,KAG5C,SAAS8iC,EACP3sB,EACAnW,GAEA,OAAO,2BAAImW,GAAX,IAAkBwP,mBAAmB,eAAK3lB,KAG5C,SAAS+iC,EACP5sB,EACAnW,GAEA,OAAO,2BAAImW,GAAX,IAAkBrD,yBAAyB,eAAK9S,KAGlD,SAASgjC,EACP7sB,EACAnW,GAEA,OAAO,2BAAImW,GAAX,IAAkByrB,qBAAqB,eAAK5hC,KAG9C,SAASijC,EACP9sB,EACAnW,GAEA,OAAO,2BAAImW,GAAX,IAAkBqrB,uBAAuB,eAAKxhC,K,kCCnN1CiW,GAAgB,CACpBwT,OAAQU,KAAsB1nB,IAiBhC,SAASmc,GACPzI,EACAnW,GAEA,OAAO,2BAAImW,GAAUnW,GClBRkjC,iCAAgB,CAC7BC,aHDa,WAGZ,IAFDhtB,EAEA,uDAF2BF,EAC3B0R,EACA,uCACOzT,EAAQyT,EAARzT,KAEP,OAAQA,GACN,KAAKwB,IACH,OAAOE,EAAkBO,GAC3B,KAAKR,IACH,OAAOE,EAAiBM,GAC1B,QACE,OAAOA,IGVXnQ,gBJJa,WAGZ,IAFDmQ,EAEA,uDAF8BF,EAC9B0R,EACA,uCACOzT,EAAoByT,EAApBzT,KAASlU,EAAhB,YAA2B2nB,EAA3B,GAEA,OAAQzT,GACN,KAAKO,IACH,OAAOwsB,EAA0B9qB,EAAOnW,GAC1C,KAAK0U,IACH,OAAOwsB,IACT,QACE,OAAO/qB,IIPX5Y,UFuCa,WAGZ,IAFD4Y,EAEA,uDAFwBsR,EACxBE,EACA,uCACOzT,EAAoByT,EAApBzT,KAASlU,EAAhB,YAA2B2nB,EAA3B,GAEA,OAAQzT,GACN,KAAK+E,IACH,OAAOsB,EAAepE,GACxB,KAAK+C,IACH,OAAO0pB,EAAoBzsB,EAAOnW,GACpC,KAAKmZ,IACH,OAAO+oB,EAAsB/rB,EAAOnW,GACtC,KAAKoZ,IACH,OAAO0oB,EAAoB3rB,EAAOnW,GACpC,KAAKqZ,IACH,OAAO8oB,EAAsBhsB,EAAOnW,GACtC,KAAKsZ,IACH,OAAOypB,EAAyB5sB,EAAOnW,GACzC,KAAKuZ,IACH,OAAOwoB,EAAmB5rB,EAAOnW,GACnC,KAAKwZ,IACH,OAAOwoB,EAAoB7rB,EAAOnW,GACpC,KAAKyZ,IACH,OAAOwoB,EAA2B9rB,EAAOnW,GAC3C,KAAK0Z,IACH,OAAO0oB,EAAmBjsB,EAAOnW,GACnC,KAAK2Z,IACH,OAAOspB,EAAuB9sB,EAAOnW,GACvC,KAAK4Z,IACH,OAAOyoB,EAAkBlsB,EAAOnW,GAClC,KAAK6Z,IACH,OAAOyoB,EAAkBnsB,EAAOnW,GAClC,KAAK8Z,IACH,OAAO6oB,EAAiBxsB,EAAOnW,GACjC,KAAK+Z,IACH,OAAO8oB,EAAmB1sB,EAAOnW,GACnC,KAAKga,IACH,OAAOgpB,EAAqB7sB,EAAOnW,GACrC,KAAKia,IACH,OAAOsoB,EAAmBpsB,EAAOnW,GACnC,KAAKka,IACH,OAAOsoB,EAAiBrsB,EAAOnW,GACjC,KAAKma,IACH,OAAOsoB,EAAgBtsB,EAAOnW,GAChC,KAAKoa,IACH,OAAO0oB,EAAmB3sB,EAAOnW,GACnC,KAAKqa,IAEL,KAAKC,IACH,OAAOooB,EAAevsB,EAAOnW,GAE/B,QACE,OAAOmW,IE3FXqT,sBDJa,WAGZ,IAFDrT,EAEA,uDAFoCF,GACpC0R,EACA,uCACOzT,EAAoByT,EAApBzT,KAASlU,EAAhB,YAA2B2nB,EAA3B,IAEA,OAAQzT,GACN,KAAKyK,IACH,OAAOC,GAAyBzI,EAAOnW,GACzC,QACE,OAAOmW,MEXA0qB,GAAQuC,sBACnBC,GACAC,8BAAoBC,0BAAgBC,O,oCCNvB,SAASC,GAAWjnC,GACjC,OACE,8CAAKlJ,MAAM,6BAA6BC,QAAQ,aAAgBiJ,GAAhE,aACE,oBAAGkN,SAAS,UAAUF,OAAO,OAAOC,YAAY,IAAhD,SACE,oBAAGi6B,UAAU,uBAAb,SACE,oBAAGA,UAAU,qBAAb,SACE,uBACElwC,KAAK,eACLC,EAAE,+hC,ICLXkwC,G,oCCeUC,G,gKAjBb,WACE,OACE,sBACEtwC,MAAM,6BACN,cAAY,OACZ,YAAU,SACV,cAAY,MACZC,QAAQ,cALV,SAME,uBACEC,KAAK,eACLC,EAAE,myC,GAXYowC,KAAMC,WCkBfC,G,gKAjBb,WACE,OACE,sBACEzwC,MAAM,6BACN,cAAY,OACZ,YAAU,SACV,cAAY,MACZC,QAAQ,cALV,SAME,uBACEC,KAAK,eACLC,EAAE,2V,GAXYowC,KAAMC,WFWf,SAASE,KACtB,OACE,uBAAKhgC,UAAU,cAAf,UACE,oBACE66B,KAAM8E,GAAiBM,OACvBlF,OAAO,SACPD,IAAI,sBAHN,SAIE,eAAC,GAAD,MAEF,oBACED,KAAM8E,GAAiBO,QACvBnF,OAAO,SACPD,IAAI,sBAHN,SAIE,eAAC2E,GAAD,MAEF,oBACE5E,KAAM8E,GAAiBQ,OACvBpF,OAAO,SACPD,IAAI,sBAHN,SAIE,eAAC,GAAD,SG9BO,SAASsF,KACtB,OACE,sBAAKpgC,UAAU,SAAf,SACE,eAACggC,GAAD,O,SHADL,K,YAAAA,E,mHAAAA,E,YAAAA,Q,kCIYCU,GAAqBnW,iBACzB,kBAAM,iCAGO,SAASoW,KAKtB,IAAMC,EAA8BlnC,aAClC,qBAAE8lC,aAA2CnxB,UAO/C,EAAoCnV,oBAElC,CACAmV,OAAQuyB,EACRjyB,eAAgB,WACd7C,EAASmG,kBALb,oBAAO4uB,EAAP,KAAmBC,EAAnB,KAaA,EACEvxC,eADKkL,EAAP,EAAOA,QAAS6S,EAAhB,EAAgBA,UAAWuF,EAA3B,EAA2BA,kCAAmCnY,EAA9D,EAA8DA,aAGvDgT,EAAkBL,eAAlBK,eAEDI,EAAsBF,aAC1BnT,EADgD,OAEhDC,QAFgD,IAEhDA,OAFgD,EAEhDA,EAAc0kB,iBAOVtT,EAAWC,cACVg1B,EAAYC,eAAZD,SAyCP,OAnCAn9B,sBAAU,WACRk9B,GAAc,SAACG,GAAD,mBAAC,eAAmBA,GAApB,IAA+B5yB,OAAQuyB,SACpD,CAACA,IAWJh9B,sBAAU,WACJiP,IAAsCrR,KAAY3F,WAKhDiQ,KAHFwB,GAAeI,IAAkBI,GAGtBoE,cACAD,iBAEd,CACD3E,EACAxB,EACA+G,EACAnF,EACAI,EACAizB,IAOGH,EAGH,eAAC,YAAD,CAAUhW,SAAU,KAApB,SACE,eAAC8V,GAAD,CAEE5yB,oBAAqBA,EACrB+yB,WAAYA,MAPc,K,cCrGnB,SAASK,KACtB,OACE,gBAACC,GAAA,EAAD,WACE,6CACA,uBACEhvC,KAAK,cACLivC,QAAQ,wECJD,SAASC,GAAKxoC,GAC3B,OACE,sBAAKwH,UAAS,eAAUxH,EAAMT,KAAN,gBAAsBS,EAAMT,MAAS,IAA7D,qBCEG,SAASkpC,KACd,OACE,sBAAKjhC,UAAU,wCAAf,SACE,eAACghC,GAAD,CAAMjpC,KAAK,YASV,SAASmpC,KACd,OACE,sBAAKlhC,UAAU,wCAAf,SACE,eAACghC,GAAD,CAAMjpC,KAAK,aASV,SAASopC,KACd,OACE,sBAAKnhC,UAAU,wCAAf,SACE,eAACghC,GAAD,CAAMjpC,KAAK,Y,6CCnCF,SAASqpC,KACtB,OACE,sBACE9xC,MAAM,6BACN,cAAY,OACZ,YAAU,OACV,cAAY,MACZC,QAAQ,cALV,SAME,uBACEC,KAAK,eACLC,EAAE,0N,kCCUK,SAAS4xC,GAAT,GAI4B,IAHzCC,EAGwC,EAHxCA,iBAGwC,IADxCC,0BACwC,SAKxC,EAAwCryC,eAAjCkL,EAAP,EAAOA,QAAS6S,EAAhB,EAAgBA,UAAWyF,EAA3B,EAA2BA,UAEpBrF,EAAkBL,eAAlBK,eAMD5B,EAAWC,cAMX81B,GAA6C,IAAnBn0B,EAwBhC,OACE,0BACErN,UAAS,kDAELwhC,GAAkBv0B,EACd,uCACA,IAER/M,QAAS,WACPuL,EAASoG,gBARb,UAUE,uBACE7R,UAAS,8BACPiN,EAAY,kCAAoC,IAFpD,SA5BEq0B,EACiC,oBAArBA,EACVA,EAAiB,CAAClnC,UAAS6S,YAAW1a,SAAUA,wBAChD+uC,EAGFlnC,EACKoJ,YAAmBpJ,GAGrB,YAyBJonC,GAAkBv0B,GAAa,kDAE/Bs0B,GACC,eAAC,KAAD,CAAYjX,aAAY,OAAE5X,QAAF,IAAEA,OAAF,EAAEA,EAAWc,oB,wCCpEtC,SAASiuB,KAKd,IAAMjE,EAAyBnkC,aAC7B,SAAC8Y,GAAD,uBAAuBA,EAAM5Y,iBAA7B,aAAuB,EAAiBikC,0BAO1C,EACE3kC,sBADF,oBAAO6oC,EAAP,KAAwBC,EAAxB,KAEA,EACE9oC,oBAAsBsI,KAAYpI,SADpC,oBAAO6oC,EAAP,KAA8BC,EAA9B,KAEA,EAAwDhpC,sBAAxD,oBAAOipC,EAAP,KAA6BC,EAA7B,KAMMC,EAA2Bj1B,wBAvB4B,4CAuBI,CAC/DywB,IAxB2D,8CAuC7D,+BAAAhpC,EAAA,yDACOgpC,EADP,iEAIIqE,EAAyB1gC,KAAY7F,SAJzC,SAMyBkiC,EAAuB7jC,SAASC,QAClDqoC,SACA7lC,OARP,cAMU6lC,EANV,gBAS2BzE,EAAuB7jC,SAASC,QACpDsoC,WACA9lC,OAXP,OASU8lC,EATV,OAaIP,EAAmB,CACjBlqC,QAAS+lC,EAAuB/jC,gBAChCwoC,SACAC,SAAU3lC,OAAO2lC,GACjBC,MAAM,GAAD,OAAKntC,OAAOotC,SAASC,OAArB,kBAGPR,EAAyB1gC,KAAY3F,WApBzC,kDAsBI2U,QAAQC,IAAR,MACAuxB,OAAmBrtC,GACnBytC,EAAwB,EAAD,IACvBF,EAAyB1gC,KAAYpB,UAzBzC,2DAvC6D,sBAoE7D,OArCAwD,sBAAU,WACRy+B,MACC,CAACA,IAmCG,CAACN,kBAAiBI,uBAAsBF,yB,sCCnE3CO,GAAK,UAAMntC,OAAOotC,SAASC,OAAtB,gBAeI,SAASC,GAAT,GAGuB,IAFpCC,EAEmC,EAFnCA,aACGC,EACgC,kBAKnC,EAAsC3pC,sBAAtC,oBAAO4pC,EAAP,KAAoBC,EAApB,KACA,EAA0C7pC,sBAA1C,oBAAO8pC,EAAP,KAAsBC,EAAtB,KACA,EAAkD/pC,oBAAiB,IAAnE,oBAAOgqC,EAAP,KAA0BC,EAA1B,KAMOC,ECjCF,WAKL,IAAMC,EAAyB3pC,aAC7B,SAACC,GAAD,uBAAmBA,EAAEC,iBAArB,aAAmB,EAAaikC,0BAG5Bx7B,EAAkB3I,aAAY,SAACC,GAAD,OAAmBA,EAAE0I,mBAMzD,EAGI8hB,aAAa6Y,IAA2B,CAC1C3Y,UAAW,CACTif,aAAY,OAAED,QAAF,IAAEA,OAAF,EAAEA,EAAwBvpC,gBAAgBnC,iBAL1D,oBACE4rC,EADF,YAEGhf,EAFH,EAEGA,OAAQC,EAFX,EAEWA,QAASlG,EAFpB,EAEoBA,KAAM5d,EAF1B,EAE0BA,MAAO8iC,EAFjC,EAEiCA,aAAcC,EAF/C,EAE+CA,YAW/C,EAAsDvqC,sBAAtD,oBAAOkqC,EAAP,KAA4BM,EAA5B,KAGA,EAAgCxqC,sBAAhC,oBAAOyrB,EAAP,KAAiBC,EAAjB,KAMM+e,EAA0Bv2B,wBAoDhC,WACE,IACE,IAAKoX,GAAWlG,GAEd,GADAolB,EAAuBplB,EAAKslB,OAAO,IACR,IAAvBtlB,EAAKslB,OAAO3uC,OAId,MAHc,IAAI8G,MAAJ,kBACRsnC,QADQ,IACRA,OADQ,EACRA,EAAwBvpC,gBADhB,oCAMhB,GAAI4G,EAKF,MAJc,IAAI3E,MAAJ,kBACRsnC,QADQ,IACRA,OADQ,EACRA,EAAwBvpC,gBADhB,oCAOlB,MAAO4G,GACPkkB,EAAYlkB,MAxE6C,QAC3D2iC,QAD2D,IAC3DA,OAD2D,EAC3DA,EAAwBvpC,gBACxBwkB,EACA5d,EACA8jB,IAwEF,OAjEA5gB,sBAAU,WACH2gB,GACHgf,MAED,CAAChf,EAAQgf,IAEZ3/B,sBAAU,YACH4gB,IAAD,OAAY6e,QAAZ,IAAYA,OAAZ,EAAYA,EAAwBvpC,kBACtC6pC,MAED,QACDN,QADC,IACDA,OADC,EACDA,EAAwBvpC,gBACxB6pC,EACAnf,IAYF5gB,sBAAU,WAGRvB,GAAmBmhC,GAAgBA,EAAa,KAEhD,IAAMK,EAAmBJ,GAAetZ,WAAWsZ,EAAa,KAEhE,OAAO,WACLI,GAAoBzZ,aAAayZ,MAElC,CAACxhC,EAAiBmhC,EAAcC,IA8B5B,CAACL,sBAAqBze,YDhFCmf,GAAvBV,oBACP,EAA6B7zC,eAAtBkL,EAAP,EAAOA,QAASiP,EAAhB,EAAgBA,UAMVq6B,EAAwB32B,wBAsC9B,WACE,KA3EehM,EA4EHohC,GA3Edn3B,MAAMjK,GACHkK,MAAK,SAACC,GAAD,OAAcA,EAASy4B,UAC5B14B,MACC,SAAC04B,GAAD,OACE,IAAI/iB,SAAQ,SAAChxB,EAASixB,GACpB,IAAM+iB,EAAS,IAAIC,WACnBD,EAAOE,UAAY,kBAAMl0C,EAAQg0C,EAAO1lC,SACxC0lC,EAAOG,QAAUljB,EACjB+iB,EAAOI,cAAcL,UAmER14B,MAAK,SAACg5B,GACrBA,GAAWrB,EAAiBqB,MAE9B,MAAO5jC,GACP8P,QAAQC,IAAI/P,GAhFA,IAACU,IAoCwC,IAoDzD,OA9CAwC,sBAAU,WAGR,GAFAm/B,OAAepuC,GAEX8F,GAAW2oC,EAAqB,CAClC,IAAOmB,EAAiCnB,EAAjCmB,QAASjC,EAAwBc,EAAxBd,OAAQgB,EAAgBF,EAAhBE,aAElBkB,EAAU,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAASnqC,MAC1B,SAACqqC,GAAD,aACE,UAAAA,EAAOC,cAAP,eAAe9+B,GAAGjO,iBAAkB8C,EAAQ9C,iBAGhD6sC,GACEzB,EAAe,CACb4B,QAASH,EAAWG,QACpBrB,eACAhB,WAGJ7nC,GACEiP,GACAy5B,EAAqB,GAAD,OACfvxC,IAAe8X,GADA,kBACoB45B,EADpB,cACsC7oC,IAG5DspC,OAED,CAACtpC,EAASiP,EAAW05B,EAAqBW,IAoBzCjB,EAEA,eAAC5hC,GAAA,EAAD,UACE,qBACEb,UAAU,yBACV86B,IAAI,sBACJC,OAAO,SACPF,KAAMgI,EACNp6B,MAAK,2BAAM+5B,GAAgBD,GAL7B,UAME,uBAAMviC,UAAU,0BAAhB,SACGhK,YAAaysC,EAAY6B,WAE5B,uBAAMtkC,UAAU,yBAAhB,SAA0CyiC,EAAYR,SAErDU,GAAiB,sBAAK4B,IAAK5B,EAAe6B,IAAI,oBAMhD,+BEnHT,IAEMtlB,GAAe,CACnBC,WAAY,QAGRslB,GAA+C,CACnDnlB,SAAU,CAAColB,MAAO,UAClBnlB,QAAS,CAACmlB,MAAO,GACjBllB,QAAS,CAACklB,MAAO,EAAGtlB,QAAS,GAC7BK,OAAQ,CAACilB,MAAO,SAAUtlB,QAAS,IAG/BulB,GAA+C,CACnDrlB,SAAU,CAAColB,MAAO,EAAGtlB,QAAS,GAC9BG,QAAS,CAACmlB,MAAO,SAAUtlB,QAAS,GACpCI,QAAS,CAACklB,MAAO,SAAUtlB,QAAS,GACpCK,OAAQ,CAACilB,MAAO,EAAGtlB,QAAS,IAGvB,SAASwlB,KACd,OACE,sBAAKv+B,KAAK,aAAad,GAAG,aAA1B,SACE,sBAAIvF,UAAU,YAAY,cAAY,YAAtC,UACE,qBAAI6kC,SAAU,EAAd,SACE,eAAC,IAAD,CAASC,GAAG,cAAZ,SACE,mDAGJ,qBAAID,SAAU,EAAd,SACE,eAAC,IAAD,CAASC,GAAG,cAAZ,SACE,mDAGJ,qBAAID,SAAU,EAAd,SACE,eAAC,IAAD,CAASC,GAAG,aAAZ,SACE,iDAGJ,qBAAID,SAAU,EAAd,SACE,eAAC,IAAD,CAASC,GAAG,YAAZ,SACE,qDAQL,SAASC,KAKd,IAAM/iC,EAAkB3I,aAAY,SAACC,GAAD,OAAmBA,EAAE0I,mBAMzD,EAAsDnJ,qBAAS,GAA/D,oBAAOmsC,EAAP,KAA4BC,EAA5B,KACA,EAAgDpsC,oBAC9C4rC,IADF,oBAAOplB,EAAP,KAAyB6lB,EAAzB,KAQO9qC,EAAWlL,eAAXkL,QAMD+qC,EAAe1jC,oBAMrB8B,sBAAU,WAER,OAAO,WACL4hC,EAAa7hC,SAAWymB,aAAaob,EAAa7hC,YAEnD,IAMH,IAAM8hC,KACJhrC,KAAO,OAAI4H,QAAJ,IAAIA,OAAJ,EAAIA,EAAiBmP,iBACxBk0B,KACJjrC,KAAO,OACP4H,QADO,IACPA,OADO,EACPA,EAAiBmP,iBACjB/W,EAAQ9C,iBAAR,OAA0B0K,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAiBjF,cAAczF,gBAQ3D,SAASguC,EAAqBlxB,GAE5B,IAAIA,EASF,OALA8wB,EAAoBP,IACpBQ,EAAa7hC,QAAUwmB,YACrB,kBAAMmb,EAAuB7wB,KAC7B,KAEK,kBAAM+wB,EAAa7hC,SAAWymB,aAAaob,EAAa7hC,UAR/D2hC,EAAuB7wB,GACvB8wB,EAAoBT,IAexB,OACE,uCACE,sBAAKI,SAAU,EAAG7kC,UAAU,yBAA5B,SACE,sBACEA,UAAU,iBACV,aAAW,OACX,gBAAc,aACdE,QAAS,SAAC1K,GACRA,EAAMC,iBACN6vC,GAAqB,IANzB,SAQE,eAAClE,GAAD,QAKJ,eAAC,KAAD,CACE/yB,aAAa,EACbrO,UAAU,sBACVgO,OAAQg3B,EACR12B,eAAgB,WACdg3B,GAAqB,IAEvB/2B,iBAAiB,oBACjBlI,KAAK,SACLoC,MAAO,CAAC+F,QAAS,CAACC,OAAQ,OAT5B,SAUE,eAAC82B,GAAA,EAAD,CAAY7lB,QAAM,EAACC,GAAIqlB,EAAqBnlB,QAtJnC,IAsJT,SACG,SAACV,GAAD,OACC,sBAAK9Y,KAAK,aAAad,GAAG,aAA1B,SACE,uBACEkD,MAAK,2BACAyW,IACAG,EAAiBF,IAEtBnf,UAAU,YALZ,UAME,yBACEA,UAAU,gDACVE,QAAS,SAAC1K,GACRA,EAAMC,iBACN6vC,GAAqB,IAJzB,SAME,eAACj2C,GAAA,EAAD,MAGF,eAAC4xC,GAAD,IAEA,sBAAKjhC,UAAU,4CAAf,SACE,eAAC,GAAD,MAEF,sBAAIA,UAAU,YAAd,UACE,qBACEE,QAAS,WACPolC,GAAqB,IAFzB,SAIE,eAAC,IAAD,CAASR,GAAG,cAAZ,SACE,mDAGJ,qBACE5kC,QAAS,WACPolC,GAAqB,IAFzB,SAIE,eAAC,IAAD,CAASR,GAAG,cAAZ,SACE,mDAGJ,qBACE5kC,QAAS,WACPolC,GAAqB,IAFzB,SAIE,eAAC,IAAD,CAASR,GAAG,aAAZ,SACE,iDAGJ,qBACE5kC,QAAS,WACPolC,GAAqB,IAFzB,SAIE,eAAC,IAAD,CAASR,GAAG,YAAZ,SACE,gDAIHO,GACC,qBACEnlC,QAAS,WACPolC,GAAqB,IAFzB,SAIE,eAAC,IAAD,CAASR,GAAE,mBAAc1qC,GAAzB,SACE,gDAKLgrC,GACC,qBACEllC,QAAS,WACPolC,GAAqB,IAFzB,SAIE,eAAC,IAAD,CAASR,GAAG,eAAZ,SACE,mEAcT,SAASU,KAKtB,OACE,eAAC,KAAD,CAAOC,MAAM,oBAAb,SACG,SAACC,GAAD,OACC,sBAAK1lC,UAAU,aAAf,SACE,uBAAKA,UAAU,6BAAf,UAEE,eAAC4kC,GAAD,IACA,eAACtC,GAAD,CAAgBqD,OAAQ,sBACxB,eAACZ,GAAD,IACA,sBAAK/kC,UAAU,6CAAf,SACE,eAAC,GAAD,cCxQC,SAAS4lC,KAMtB,SAASC,EAAWrtC,GAClB,OAAO,eAAC,IAAD,CAAMssC,GAAG,IAAT,SAActsC,EAAMuV,WAO7B,OACE,0BAAQ/N,UAAU,SAAlB,UACE,eAAC6lC,EAAD,UACE,eAAC3E,GAAD,MAGF,sBAAKlhC,UAAU,wBAAf,SACE,eAACwlC,GAAD,S,yCCrBD,SAASM,GACdrtC,GAEA,OA2JYpD,EA3JAoD,EA4JLqb,KAAK2G,MAAMC,KAAKrlB,GADzB,IAAcA,EAnJP,SAAS0wC,GACd5uB,GACsB,IAAD,EAsGrB,MAAO,CAAC6uB,IAAKC,IAhGZ,oBACE11B,KAAsBsH,KAAO,IAD/B,eAEEvH,KAAoB2I,cAAgB,CACnCitB,iBAAiB,EACjBC,kBAAkB,EAClBC,kBAAkB,EAClBC,mBAAmB,IANtB,eAQE/1B,KAAoB6H,WAAa,CAChC+tB,iBAAiB,EACjBE,kBAAkB,EAClBD,kBAAkB,EAClBG,mBAAmB,IAZtB,eAcEh2B,KAAoBi2B,UAAY,IAdlC,eAeEj2B,KAAoB2H,QAAU,CAC7BiuB,iBAAiB,EACjBE,kBAAkB,EAClBD,kBAAkB,EAClBK,YAAY,EACZC,gBAAgB,EAChBC,oBAAoB,IArBvB,eAuBEp2B,KAAoByI,UAAY,CAC/BmtB,iBAAiB,EACjBE,kBAAkB,EAClBD,kBAAkB,EAClBM,gBAAgB,EAChBE,kBAAkB,IA5BrB,eA8BEr2B,KAAoBuI,UAAY,CAC/BqtB,iBAAiB,EACjBE,kBAAkB,EAClBD,kBAAkB,EAClBQ,kBAAkB,EAClBF,gBAAgB,EAChBG,aAAa,EACbC,eAAe,EACfP,mBAAmB,IAtCtB,eAwCEh2B,KAAoB+H,SAAW,CAC9B6tB,iBAAiB,EACjBC,kBAAkB,EAClBC,kBAAkB,EAClBU,gBAAgB,EAChBC,aAAa,IA7ChB,eA+CEz2B,KAAoB02B,eAAiB,IA/CvC,eAgDE12B,KAAoBqH,WAAa,CAChCuuB,iBAAiB,EACjBE,kBAAkB,EAClBD,kBAAkB,EAClBM,gBAAgB,EAChBQ,qBAAqB,EACrBT,YAAY,IAtDf,eAwDEl2B,KAAoB42B,qBAAuB,IAxD7C,eAyDE52B,KAAoBqI,SAAW,CAC9BguB,kBAAkB,EAClBC,aAAa,EACbC,eAAe,EACfP,mBAAmB,IA7DtB,eA+DEh2B,KAAoB62B,OAAS,IA/D/B,eAgEE72B,KAAoBuH,KAAO,CAC1BuvB,UAAU,EACVT,kBAAkB,EAClBU,cAAc,IAnEjB,eAqEE/2B,KAAoBiI,IAAM,CACzB+uB,aAAa,IAtEhB,eAwEEh3B,KAAoB+I,kBAAoB,CACvC6sB,iBAAiB,EACjBO,gBAAgB,EAChBQ,qBAAqB,EACrBT,YAAY,IA5Ef,eA8EEl2B,KAAoB6I,YAAc,CACjC+sB,iBAAiB,EACjBM,YAAY,EACZC,gBAAgB,EAChBa,aAAa,IAlFhB,eAoFE/2B,KAAsBgI,IAAM,CAC3BgvB,cAAc,EACdD,aAAa,EACbhB,mBAAmB,IAvFtB,eAyFEh2B,KAAoBmI,aAAe,CAClCwuB,qBAAqB,IA1FxB,GA8FsC9vB,KAczC,SAAS8uB,GAAYrR,GACnB,IAAM4S,EAAuB,CAC3B5S,EAAMmS,YACNnS,EAAMkS,eACNlS,EAAMgS,YACNhS,EAAMiS,cACNjS,EAAMsR,gBACNtR,EAAMwR,iBACNxR,EAAMuR,iBACNvR,EAAMqS,oBACNrS,EAAMyR,kBACNzR,EAAM6S,cACN7S,EAAM8S,iBACN9S,EAAM4R,YAEFmB,EAAyB,CAAC/S,EAAMgT,cAOtC,OAkBF,SAAe3qC,GACb,OAAOA,EACJ9E,KAAI,SAAC+E,EAAQ2qC,GAAT,YAAgCvzC,IAAN4I,EAAA,SAAkB,EAAK2qC,GAAM,KAC3DC,QAAO,SAACtzC,EAAQuzC,GAAT,OAAoBvzC,EAAIuzC,KArB3BC,CALgB,UAClBR,EACAG,ICnFA,IAAMM,GAA4D,CACvE,CACEn2C,KAAMwe,KAAoB2I,cAC1BivB,UAAWpC,GAAwBx1B,KAAoB2I,eACvDxf,gBAAiB7G,IAA+BtB,KAChD62C,gBAAiB,8BACjBp2C,YACE,gFAEJ,CACED,KAAMwe,KAAoB6H,WAC1B+vB,UAAWpC,GAAwBx1B,KAAoB6H,YACvD1e,gBAAiBlG,IAA4BjC,KAC7C62C,gBAAiB,iBACjBp2C,YACE,4EAEJ,CACED,KAAMwe,KAAoByI,UAC1BmvB,UAAWpC,GAAwBx1B,KAAoByI,WACvDtf,gBAAiB1G,IAA2BzB,KAC5C62C,gBAAiB,yBACjBp2C,YACE,qLAEJ,CACED,KAAMwe,KAAoBuI,UAC1BqvB,UAAWpC,GAAwBx1B,KAAoBuI,WACvDpf,gBAAiBxG,IAA2B3B,KAC5C62C,gBAAiB,qBACjBp2C,YACE,gHAEJ,CACED,KAAMwe,KAAoB+H,SAC1B6vB,UAAWpC,GAAwBx1B,KAAoB+H,UACvD5e,gBAAiB3G,IAA0BxB,KAC3C62C,gBAAiB,iBACjBp2C,YACE,+FAEJ,CACED,KAAMwe,KAAoBqH,WAC1BuwB,UAAWpC,GAAwBx1B,KAAoBqH,YACvDle,gBAAiBzG,IAA4B1B,KAC7C62C,gBAAiB,eACjBp2C,YACE,qGAEJ,CACED,KAAMwe,KAAoBqI,SAC1BuvB,UAAWpC,GAAwBx1B,KAAoBqI,UACvDlf,gBAAiB5G,IAA0BvB,KAC3C62C,gBAAiB,WACjBp2C,YACE,0GAEJ,CACED,KAAMwe,KAAoB2H,QAC1BiwB,UAAWpC,GAAwBx1B,KAAoB2H,SACvDxe,gBAAiBnG,IAAyBhC,KAC1C62C,gBAAiB,eACjBp2C,YACE,qJAEJ,CACED,KAAMwe,KAAoB6I,YAC1B+uB,UAAWpC,GAAwBx1B,KAAoB6I,aACvD1f,gBAAiBjG,IAA6BlC,KAC9C62C,gBAAiB,oBACjBp2C,YACE,6HAEJ,CACEI,QAAS,CACP,CACEL,KAAMwe,KAAoB62B,OAC1BiB,YAAa93B,KAAoB02B,eACjCkB,UAAWpC,GAAwBx1B,KAAoB62B,QACvD1tC,gBAAiBhG,IAAgCnC,KACjD62C,gBAAiB,eACjBp2C,YACE,oFACFs2C,6BAA6B,GAE/B,CACEv2C,KAAMwe,KAAoB62B,OAC1BiB,YAAa93B,KAAoB62B,OACjCe,UAAWpC,GAAwBx1B,KAAoB62B,QACvD1tC,gBAAiB9G,IAAwBrB,KACzC62C,gBAAiB,eACjBp2C,YACE,iEACFs2C,6BAA6B,IAGjCC,oBAAqBh4B,KAAoB62B,QAE3C,CACEr1C,KAAMwe,KAAoBuH,KAC1BqwB,UAAWpC,GAAwBx1B,KAAoBuH,MACvDpe,gBAAiBtG,IAA8B7B,KAC/C62C,gBAAiB,WACjBp2C,YACE,iEAEJ,CACED,KAAMwe,KAAoBiI,IAC1B2vB,UAAWpC,GAAwBx1B,KAAoBiI,KACvD9e,gBAAiBrG,IAA6B9B,KAC9C62C,gBAAiB,UACjBp2C,YAAa,wDAEf,CACED,KAAMwe,KAAoB+I,kBAC1B6uB,UAAWpC,GAAwBx1B,KAAoB+I,mBACvD5f,gBAAiBpG,IAAkC/B,KACnD62C,gBAAiB,eACjBp2C,YACE,uGAEJ,CACED,KAAMwe,KAAoBmI,aAC1ByvB,UAAWpC,GAAwBx1B,KAAoBmI,cACvDhf,gBAAiBvG,IAAsC5B,KACvD62C,gBAAiB,oBACjBp2C,YAAa,8C,oCC7IV,SAASw2C,KAId,MAA4DlvC,aAC1D,SAACC,GAAD,OAAmBA,EAAEC,aADhBW,EAAP,EAAOA,oBAAwBsuC,EAA/B,kBAOA,EACE1kB,aAAa2Y,IAA6B,CACxCpV,aAAcpzB,IACd+vB,UAAW,CACThmB,WAAU,OAAE9D,QAAF,IAAEA,OAAF,EAAEA,EAAqBT,gBAAgBnC,iBAJvD,oBAAOmxC,EAAP,YAA4CvkB,EAA5C,EAA4CA,OAAQjG,EAApD,EAAoDA,KAAM5d,EAA1D,EAA0DA,MAW1D,EACExH,sBADF,oBAAO6vC,EAAP,KAAuCC,EAAvC,KAEA,EAGI9vC,sBAHJ,oBACE+vC,EADF,KAEEC,EAFF,KAIA,EACEhwC,oBAAsBsI,KAAYpI,SADpC,oBAAO+vC,EAAP,KAA+BC,EAA/B,KAGMC,EAAiCj8B,wBAuDvC,SACEk8B,EACAC,GAIA,IAAIC,EAA8C,GAC9CC,EAAgD,GAE9CC,EAAoB,SAACnB,GACzB,OAAOe,EAAsBlvC,MAC3B,SAACuvC,GAAwC,IAAD,EACtC,OAAO,UAAAA,EAAQpB,iBAAR,eAAmB5wC,kBAAnB,OAAqC4wC,QAArC,IAAqCA,OAArC,EAAqCA,EAAW5wC,mBAKvDiyC,EAAsB,SAACC,GAC3B,OAAON,EAAwBnvC,MAC7B,SAAC0vC,GAA0C,IAAD,EACxC,OACE,UAAAA,EAAUD,mBAAV,eAAuBlyC,kBAAvB,OAAyCkyC,QAAzC,IAAyCA,OAAzC,EAAyCA,EAAalyC,mBA4H9D,OAtHA2wC,GAA6Bza,SAC3B,SAACkc,GACC,UAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAoB1xB,YAAa,CAGnC,IAAM2xB,EAAeJ,EACnBG,EAAmBF,aAGjBG,EACFR,EAAeS,KAAf,uCACKD,GACAD,GAFL,IAGE53C,KAAM43C,EAAmB53C,KACzBC,YAAa23C,EAAmB33C,eAGlCq3C,EAAiBQ,KAAjB,2BACKF,GADL,IAEE53C,KAAM43C,EAAmB53C,KACzBC,YAAa23C,EAAmB33C,oBAG/B,UAAI23C,QAAJ,IAAIA,OAAJ,EAAIA,EAAoBv3C,QAAS,CAItC,IAAM03C,EAAiB,OAAGH,QAAH,IAAGA,OAAH,EAAGA,EAAoBv3C,QAAQq/B,MACpD,SAACl4B,GACC,OAAQA,EAAE0e,aAAeqxB,EAAkB/vC,EAAE4uC,cAK3C4B,EAAmB,OAAGJ,QAAH,IAAGA,OAAH,EAAGA,EAAoBv3C,QAAQq/B,MACtD,SAACl4B,GACC,OAAOA,EAAE0e,aAAeuxB,EAAoBjwC,EAAEkwC,gBAMlD,GAAIK,GAAqBC,EAAqB,CAAC,IAAD,EACxCC,GAAa,EAEC,OAAlBL,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBv3C,eAApB,SAA6Bq7B,SAAQ,SAACwc,GACpC,IAAID,EAIJ,UAAIC,QAAJ,IAAIA,OAAJ,EAAIA,EAAQhyB,YAAa,CACvB,IAAM2xB,EAAeJ,EAAoBS,EAAOR,aAEhD,GAAIG,EASF,OARAR,EAAeS,KAAf,uCACKD,GACAK,GAFL,IAGEl4C,KAAMk4C,EAAOl4C,KACbC,YAAai4C,EAAOj4C,oBAGtBg4C,GAAa,GAGbX,EAAiBQ,KAAjB,2BACKI,GADL,IAEEl4C,KAAMk4C,EAAOl4C,KACbC,YAAai4C,EAAOj4C,mBAGnB,CACL,IAAMk4C,EAAaZ,EAAkBW,EAAO9B,WAC5C,GAAI+B,EASF,OARAd,EAAeS,KAAf,uCACKK,GACAD,GAFL,IAGEl4C,KAAMk4C,EAAOl4C,KACbC,YAAai4C,EAAOj4C,oBAGtBg4C,GAAa,GAGbX,EAAiBQ,KAAjB,2BACKI,GADL,IAEEl4C,KAAMk4C,EAAOl4C,KACbC,YAAai4C,EAAOj4C,wBAQ5Bq3C,EAAiBQ,KAAKF,OAEnB,CAEL,IAAMO,EAAaZ,EAAkBK,EAAmBxB,WAEpD+B,EACFd,EAAeS,KAAf,uCACKK,GACAP,GAFL,IAGE53C,KAAM43C,EAAmB53C,KACzBC,YAAa23C,EAAmB33C,eAGlCq3C,EAAiBQ,KAAjB,2BACKF,GADL,IAEE53C,KAAM43C,EAAmB53C,KACzBC,YAAa23C,EAAmB33C,mBAOnC,CACLo3C,iBACAC,sBAxMF,IA0NF,OAvNA7lC,sBAAU,WACH2gB,GACHukB,MAED,CAACvkB,EAAQukB,IAGZllC,sBAAU,WACR,GAAI,OAACrJ,QAAD,IAACA,OAAD,EAACA,EAAqBT,gBAE1B,IAGE,GAFAsvC,EAA0B5nC,KAAY7F,SAElC2iB,EAAM,CAER,MAA+BA,EAAKwG,YAAY,GAAzCylB,EAAP,EAAOA,SAAUC,EAAjB,EAAiBA,WAMjB,EACEnB,EAA+BkB,EAAUC,GADpChB,EAAP,EAAOA,eAAgBC,EAAvB,EAAuBA,iBAGvBT,EAAkCQ,GAClCN,EAAoCO,GAGpCL,EAA0B5nC,KAAY3F,gBAEtC,GAAI6E,EACF,MAAM,IAAI3E,MAAM2E,EAAMlJ,SAG1B,MAAOkJ,GACPsoC,OAAkCr0C,GAClCu0C,OAAoCv0C,GAEpCy0C,EAA0B5nC,KAAYpB,aAEvC,CAAC7F,EAAqB+jB,EAAM5d,EAAO2oC,IA+K/B,CACLF,yBACAsB,+BAXF,SACEjzB,GAEA,OAAOjiB,OAAO64B,KAAKya,GAChBrwC,KAAI,SAACkyC,GAAD,OAAQ7B,EAA0B6B,MACtC91C,QAAO,SAAC81C,GAAD,OAAQA,KACf91C,QAAO,SAAC81C,GAAD,OAAQA,EAAGlzB,yBAA2BA,KAAwB,IAMxEuxB,iCACAE,oC,ICtSQ0B,G,SAwBL,SAASC,KAId,IAAOn9B,EAAgBJ,eAAhBI,aA+HP,MAAO,CACLo9B,kBA9HF,SACEC,EACAC,GAEA,IAAMC,EAAoBF,EAAWt0C,WAerC,OAZEu0C,IAAcJ,GAAUM,QAqC5B,SAAwBD,GACtB,IACE,QAAKA,IAGH72B,KAAK2G,MAAMowB,qBAAqBF,EAAWv9B,IAC3C0G,KAAK2G,MAAMud,UAAU2S,EAAWv9B,IAElC,MAAO/M,GACP,OAAO,GA7CHyqC,CAAeH,GACfD,IAAcJ,GAAUS,QAsDhC,SAAwBJ,GACtB,IACE,QAAKA,IAEuB,KAArBA,EAAU/1C,QAAiBkf,KAAK2G,MAAMuwB,MAAML,IACnD,MAAOtqC,GACP,OAAO,GA3DH4qC,CAAeN,GACfD,IAAcJ,GAAUY,cAoEhC,SAA6BP,GAC3B,IACE,OAAOzyC,MAAM2H,KAAK8qC,EAAUQ,MAAM,MAAM9iB,OACtC,SAACuF,GAAD,OAAoB,KAAbA,EAAEh5B,QAAiBkf,KAAK2G,MAAMuwB,MAAMpd,MAE7C,MAAOvtB,GACP,OAAO,GAzEH+qC,CAAoBT,GACpBD,IAAcJ,GAAUe,QAkFhC,SAAwBV,GACtB,OAAQW,MAAM/uC,OAAOouC,IAlFfY,CAAeZ,GACfD,IAAcJ,GAAUkB,eA0FhC,SAA6Bb,GAC3B,OAAOzyC,MAAM2H,KAAK8qC,EAAUQ,MAAM,MAAM9iB,OAAM,SAACuF,GAAD,OAAOrxB,OAAOqxB,MA1FtD6d,CAAoBd,IA+G1Be,kBAzGF,SACEhB,GAEA,OAAOA,IAAcJ,GAAUM,QAC3BvnB,KAAgBsoB,yBAChBjB,IAAcJ,GAAUS,QACxB1nB,KAAgBuoB,gBAChBlB,IAAcJ,GAAUY,cACxB7nB,KAAgBwoB,sBAChBnB,IAAcJ,GAAUe,QACxBhoB,KAAgByoB,eAChBpB,IAAcJ,GAAUkB,cACxBnoB,KAAgB0oB,qBAChB1oB,KAAgB2oB,UA6FpBC,kBAnBF,SAA2BC,EAAiBC,GAO1C,OAAOA,IAAc7B,GAAUY,cAL7BhzC,MAAM2H,KAAKqsC,EAAWf,MAAM,MAO1BgB,IAAc7B,GAAUkB,cALnBtzC,MAAM2H,KAAKqsC,EAAWf,MAAM,KAAKhzC,KAAI,SAACE,GAAD,OAAekE,OAAOlE,OAOhE8zC,IAAc7B,GAAUe,QACxB9uC,OAAO2vC,GACPA,K,SAxJI5B,K,kBAAAA,E,kBAAAA,E,0BAAAA,E,kBAAAA,E,2BAAAA,Q,kBCqBG,SAAS8B,GACtB5zC,GAEA,IACEkxC,EAIElxC,EAJFkxC,mBACA2C,EAGE7zC,EAHF6zC,cACAC,EAEE9zC,EAFF8zC,cACAC,EACE/zC,EADF+zC,qBAOF,EACE1zC,oBAAiCwzC,GAAiB,MADpD,oBAAOG,EAAP,KAA6BC,EAA7B,KAGA,EACE5zC,oBAAc,IADhB,oBAAO6zC,EAAP,KAAkCC,EAAlC,KAuCA,OACE,uCACE,uBAAK3sC,UAAU,oCAAf,UAEGusC,EAAqB,CAACC,yBAEvB,uBAAKxsC,UAAU,0BAAf,UAEE,wBAAMA,UAAU,0BAAhB,iBACG0pC,QADH,IACGA,OADH,EACGA,EAAoBpB,qBACF,OAAlBoB,QAAkB,IAAlBA,OAAA,EAAAA,EAAoB1xB,cAAe,iBAItC,0BAAQhY,UAAU,SAAS4sC,SA9CnC,SACEp3C,GAEA,IAAOH,EAASG,EAAMulC,OAAf1lC,MAEPo3C,EAAwBp3C,GAExB,IAAMw3C,EAA2B,OAAGnD,QAAH,IAAGA,OAAH,EAAGA,EAAoBv3C,QAAQ4H,MAC9D,SAAC+yC,GAAD,OAAyBA,EAAe1E,cAAgB/yC,KAG1Ds3C,EAA6BE,IAmCvB,UACE,0BAEEx3C,MAAM,GACN4K,SAAmC,OAAzBusC,EAHZ,6BAIY9C,QAJZ,IAIYA,OAJZ,EAIYA,EAAoBpB,oBAJhC,gBACO,4BAFT,OAQGoB,QARH,IAQGA,OARH,EAQGA,EAAoBv3C,QAAQgG,KAAI,SAAC6xC,GAAD,OAC/B,yBAAiC30C,MAAO20C,EAAO5B,YAA/C,SACG4B,EAAO5B,YAAY2E,eADT/C,EAAO5B,mBAzChC,SACEoE,GAEA,IAAKA,EAAsB,OAAO,KAElC,IACE,IAAMz6C,GACc,OAAlB23C,QAAkB,IAAlBA,OAAA,EAAAA,EAAoBv3C,QAAQ4H,MAC1B,SAAC+yC,GAAD,OACEA,EAAe1E,cAAgBoE,KACjCz6C,cAAe,GAEnB,OAAO,uBAAMiO,UAAU,0BAAhB,SAA2CjO,IAClD,MAAOsO,GACP8P,QAAQuJ,KAAKrZ,IAiCR2sC,CAAkBR,SAKtBF,EAAc,CAACE,uBAAsBE,iC,oDCrH7B,SAASO,GACtBz0C,GAEA,IAAO6H,EAAuB7H,EAAvB6H,MAAU6sC,EAAjB,YAA8B10C,EAA9B,IAEA,OACE,qCACG6H,GACC,eAACQ,GAAA,EAAD,UACE,8CACMqsC,GADN,IAEEltC,UAAS,wBAAmBktC,EAAUltC,WAAa,IAFrD,SAGGK,S,aCyBE,SAAS8sC,GAAT,GAKa,IAJ1BC,EAIyB,EAJzBA,uBACAC,EAGyB,EAHzBA,cACA3D,EAEyB,EAFzBA,mBACA4D,EACyB,EADzBA,aAKOpzC,EAAuBb,aAC5B,SAAC8Y,GAAD,OAAuBA,EAAM5Y,aADxBW,oBAOP,EAAsCrB,sBAAtC,oBAAOK,EAAP,KAAoBC,EAApB,KACA,EACEN,oBAAuBC,KAAaC,SADtC,oBAAOw0C,EAAP,KAA+BC,EAA/B,KAEA,EAAwC30C,oBACtCC,KAAaC,SADf,oBAAO00C,EAAP,KAAqBC,EAArB,KAOA,EAMIpzC,eALFwO,EADF,EACEA,QAEAtO,EAHF,EAGEA,eACAC,EAJF,EAIEA,OACAC,EALF,EAKEA,SAEWK,EAAgBC,eAAtBC,KACP,EAA6B/L,eAAtB+d,EAAP,EAAOA,UAAW7S,EAAlB,EAAkBA,QAClB,EACEmwC,KADKC,EAAP,EAAOA,kBAAmBkB,EAA1B,EAA0BA,kBAAmBO,EAA7C,EAA6CA,kBAEtC7B,EAAkC7B,KAAlC6B,+BAKDuD,EAAOC,aAA6B,CACxCC,KAAM,SACNC,eAAgB,aAMX52C,EAA6Dy2C,EAA7Dz2C,OAAQ62C,EAAqDJ,EAArDI,UAAWC,EAA0CL,EAA1CK,UAAWC,EAA+BN,EAA/BM,SAAUC,EAAqBP,EAArBO,SAAUC,EAAWR,EAAXQ,QACnDC,EAAwBl1C,GAAe4P,EACvCulC,EAAcphC,GAAa7S,EAC3Bk0C,GAA2C,OAAlB5E,QAAkB,IAAlBA,OAAA,EAAAA,EAAoB1xB,aAC/C,YACA,UAMGu2B,EAAWR,EAAXQ,QAEDC,GACH9zC,IAAa5B,KAAauC,kBACzBX,IAAa5B,KAAawC,WAC3BiyC,IAA2Bz0C,KAAauC,kBACvCkyC,IAA2Bz0C,KAAawC,SACtCmzC,GACH/zC,IAAa5B,KAAauC,kBACzBX,IAAa5B,KAAawC,WAC3BmyC,IAAiB30C,KAAauC,kBAC7BoyC,IAAiB30C,KAAawC,SAE5BozC,EACJh0C,IAAa5B,KAAa0C,WAC1B+xC,IAA2Bz0C,KAAa0C,UACpCmzC,EACJj0C,IAAa5B,KAAa0C,WAC1BiyC,IAAiB30C,KAAa0C,UAE1BozC,GACHJ,GAAwBE,IAAoBl0C,EACzCq0C,GACHJ,GAAqBE,IAAiBn0C,EA/EhB,8CAoFzB,iCAAAhG,EAAA,yDACO0F,EADP,iEAIIwzC,EAAgB50C,KAAauC,kBAEvByzC,EAAmD,QACvDpF,QADuD,IACvDA,OADuD,EACvDA,EAAoBF,aAGhBuF,EAAiD,QACrDrF,QADqD,IACrDA,OADqD,EACrDA,EAAoBxB,UACpBz2B,KACA,EACA,GACA,IAGI7R,EAlBV,aAmBMC,KAAMzF,GAAW,IACbW,EAAe,CAAC+E,SAAU/E,GAAgB,MApBpD,SAwBUN,GACc,OAAlBivC,QAAkB,IAAlBA,OAAA,EAAAA,EAAoB1xB,aAAc,kBAAoB,iBACtD9d,EAAoBP,SAASC,SACX,OAAlB8vC,QAAkB,IAAlBA,OAAA,EAAAA,EAAoB1xB,aAChB82B,EACAC,EACJnvC,GA9BN,OAiCI8tC,EAAgB50C,KAAa0C,WAG7B8xC,GACExjB,YAAW,WACTwjB,MAEC,KAxCT,kDA0CIn0C,EAAe,EAAD,IACdu0C,EAAgB50C,KAAaiH,UA3CjC,2DApFyB,oEAuIzB,WAA4B9C,GAA5B,wBAAAzI,EAAA,kEAEIg5C,EAA0B10C,KAAawC,SAF3C,EAOQ8uC,EAA8B,OAChCV,QADgC,IAChCA,OADgC,EAChCA,EAAoB53C,MAHpB2H,EALN,EAKMA,gBACWG,EANjB,EAMMD,SAAWC,QAKRy0C,EAXT,sBAYY,IAAI3yC,MACR,yEAbR,UAiBSjC,EAjBT,sBAkBY,IAAIiC,MAAJ,oBAAgBguC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAoB53C,KAApC,qBAlBZ,UAqBSsI,EArBT,sBAsBY,IAAIsB,MAAM,qBAtBtB,cAyBQszC,EAAgD,GAE9B,OAAtB5B,QAAsB,IAAtBA,KAAwB5f,SAAQ,SAACyhB,GAC/B,IAAM/C,EAAah3C,OAAOC,QAAQ8H,GAAQlD,MACxC,SAACmD,GAAD,OAAYA,EAAE,KAAO+xC,EAASn9C,QAGhC,GAAIo6C,EAAY,CACd,IAAMgD,EAAiCjD,EACrCC,EAAW,GACX+C,EAAS/+B,MAGX8+B,EAAuBpF,KAAKsF,OAI1BtvC,EA1CV,aA2CMC,KAAMzF,GAAW,IACbW,EAAe,CAAC+E,SAAU/E,GAAgB,MAGhDyyC,EAA0B10C,KAAauC,kBA/C3C,UAkDUZ,EAAO4yC,EAAezzC,EAASo1C,EAAwBpvC,GAlDjE,QAoDI4tC,EAA0B10C,KAAa0C,WApD3C,kDAuDIrC,EAAe,EAAD,IACdq0C,EAA0B10C,KAAaiH,UAxD3C,2DAvIyB,sBAmMzB,OACE,wBAAMC,UAAU,OAAOmvC,SAAU,SAAC1d,GAAD,OAAOA,EAAEh8B,kBAA1C,UAEG23C,GACCA,EAAuBj1C,KAAI,SAACi3C,GAAD,OACzB,uBAAKpvC,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAjB,SAA0CovC,EAAMt9C,OAChD,uBAAKkO,UAAU,4BAAf,UACE,wBACE,mCAA2BovC,EAAMt9C,MACjC,eAAcoF,EAAOk4C,EAAMt9C,MAAQ,OAAS,QAC5CA,KAAMs9C,EAAMt9C,KACZu9C,YAAaD,EAAMl/B,KACnBA,KAAK,OACL08B,SAAU,kBACRqB,EAASmB,EAAMt9C,KAAK,GAAIk8C,IAAYoB,EAAMt9C,QAE5Cw9C,IAAKpB,EAAS,CACZqB,SAAU,SAACl6C,GACT,MAAiB,KAAVA,EACHguB,KAAgB2oB,WAChBxB,EAAkBn1C,EAAO+5C,EAAMl/B,OAE/Bw7B,EAAkB0D,EAAMl/B,SAGhCjQ,SAAU2uC,IAGZ,eAAC3B,GAAD,CACE5sC,MAAOrJ,YAAmBo4C,EAAMt9C,KAAMoF,GACtCqO,GAAE,gBAAW6pC,EAAMt9C,aA1Bas9C,EAAMt9C,SAiChD,yBACEkO,UAAU,SACVC,SAAU2uC,GAA8BC,EACxC3uC,QAAS,WACH0uC,IAECL,EA/OY,oCAoPjBiB,CAAaxB,KAJXG,MAMJj+B,KAAK,SAbP,SAcGs+B,EACC,eAACruC,GAAA,EAAD,IACEuuC,EACF,OAEA,WAKHN,GACC,sBAAKpuC,UAAU,+BAAf,SACE,eAACI,GAAA,EAAD,CACEE,WAAW,mEACXD,MAAO+tC,MAMb,uBAAKpuC,UAAU,4BAAf,UACE,8CACesuC,EADf,yBAC6D,IAC1DA,EAFH,sDAKA,yBACEtuC,UAAU,oBACVC,SAAU4uC,GAA2BD,EACrC1uC,QAAS,kBAAOyuC,EAAe,GApRd,0CAoRmBc,IAHtC,SAIGhB,EAAoB,eAACtuC,GAAA,EAAD,IAAawuC,EAAe,OAAS,iB,cCzTrD,SAASe,GAAT,GAMc,IAL3BrC,EAK0B,EAL1BA,cACA3D,EAI0B,EAJ1BA,mBACAiG,EAG0B,EAH1BA,oBACA3hC,EAE0B,EAF1BA,OACAs/B,EAC0B,EAD1BA,aAEA,OACE,eAACx/B,GAAA,EAAD,CACEI,QAAQ,kCACRC,gBAAgB,oCAChBH,OAAQA,EACRC,cAAe,WACbq/B,KALJ,SAQE,uCACE,uBACEttC,UAAU,sBACVE,QAAS,WACPotC,KAHJ,SAKE,eAACj+C,GAAA,EAAD,MAGF,qCAAKq6C,QAAL,IAAKA,OAAL,EAAKA,EAAoB53C,KAAKi7C,gBAC9B,oCAAIrD,QAAJ,IAAIA,OAAJ,EAAIA,EAAoB33C,cAExB,eAACo7C,GAAD,CACEC,uBAAwBuC,EACxBtC,cAAeA,EACf3D,mBAAoBA,EACpB4D,aAAcA,S,IClCZsC,G,YAKG,SAASC,GAAT,GAA0D,IAAvC93C,EAAsC,EAAtCA,KAASS,EAA6B,kBACtE,OACE,gBAAC,YAAD,WACE,kDACMA,GADN,IAEE,eAAcA,EAAMs3C,QACpBA,QAASt3C,EAAMs3C,QACf9vC,UAAS,yBAAoBxH,EAAMwH,WAAa,GAAvC,KACTuF,GAAI/M,EAAM+M,GACVzT,KAAM0G,EAAM1G,KACZ86C,SAAUp0C,EAAMo0C,SAChB18B,KAAK,cAGP,yBAAOlQ,UAAS,iBAAoB+vC,QAASv3C,EAAM+M,GAAnD,UACE,uBAAMvF,UAAS,uBAAkBjI,GAAQ63C,GAAaI,SACtD,uBAAMhwC,UAAS,gBAAf,SAAmCxH,EAAMy3C,e,SArBrCL,K,cAAAA,E,eAAAA,Q,6CCYG,SAASM,GAAT,GAGS,IAFtBliC,EAEqB,EAFrBA,OACAs/B,EACqB,EADrBA,aAKA,EAAsCz0C,sBAAtC,oBAAOK,EAAP,KAAoBC,EAApB,KAKOe,EAAuBb,aAC5B,SAAC8Y,GAAD,OAAuBA,EAAM5Y,aADxBW,oBAOP,EACEI,eADKwO,EAAP,EAAOA,QAASvO,EAAhB,EAAgBA,eAAgBC,EAAhC,EAAgCA,eAAgBC,EAAhD,EAAgDA,OAAQC,EAAxD,EAAwDA,SAE3CK,EAAgBC,eAAtBC,KACAmpB,EAAOP,eAAPO,IACP,EAA6Bl1B,eAAtB+d,EAAP,EAAOA,UAAW7S,EAAlB,EAAkBA,QAMZi0C,EAAcphC,GAAa7S,EAC3BgB,EACJV,IAAa5B,KAAauC,kBAC1BX,IAAa5B,KAAawC,QACtBC,EAASb,IAAa5B,KAAa0C,UACnCC,EAAoBL,GAAeG,GAAUf,EAC7C21C,EAAgBj3C,GAAe4P,EAhChB,8CAuFrB,6BAAAtU,EAAA,kEAES65C,EAFT,sBAGY,IAAI3yC,MACR,yEAJR,UAQSxB,EART,sBASY,IAAIwB,MAAM,uCATtB,cAeUkE,EAfV,aAgBMC,KAAMzF,GAAW,IACbW,EAAe,CAAC+E,SAAU/E,GAAgB,MAjBpD,SAqBUN,EACJ,cACAP,EAAoBP,SAASC,QAC7B,GACAgG,GAzBN,OA6BI0tC,GACExjB,YAAW,WACTwjB,MA7FiB,KA8DzB,kDAkCIn0C,EAAe,EAAD,IAlClB,2DAvFqB,sBA6HrB,OACE,eAAC2U,GAAA,EAAD,CACEI,QAAQ,6BACRF,OAAQA,EACRC,cAAe,WACbq/B,KAJJ,SAOE,uCACE,uBACEttC,UAAU,sBACVE,QAAS,WACPotC,KAHJ,SAKE,eAACj+C,GAAA,EAAD,MAGF,2CACA,gCACG+0B,GAAOA,EAAItyB,KAAM,IAClB,iCAAQsyB,GAAO5gB,YAAmB4gB,EAAIpmB,WAAY,QAEpD,iHAMA,yBACEgC,UAAU,SACVC,SAAUxE,EACVyE,QAAS,WACHzE,GA7JO,mCA+JX20C,IAEFlgC,KAAK,SARP,SASG9U,EAAc,eAAC+E,GAAA,EAAD,IAAa5E,EAAS,OAAS,WAK/CE,GACC,sBAAKuE,UAAU,gCAAf,SAtIR,WAEE,OAAQtF,GACN,KAAK5B,KAAauC,iBAChB,OACE,oEAEE,eAAC,KAAD,OAGN,KAAKvC,KAAawC,QAChB,OACE,uCACE,eAACiF,GAAA,EAAD,CACEC,WAAY,IACZC,SAAUC,KACVC,mBAAiB,EACjBC,OAAQ,SAACzJ,GACP,OAAO,eAAC0J,GAAA,EAAD,UAAuB1J,GAAVA,MAIxB,eAAC2J,GAAA,EAAD,CAAcC,IAAKxG,EAAgByG,WAAS,OAGlD,KAAKlI,KAAa0C,UAChB,OACE,uCACE,+BAAM,eAEN,eAACsF,GAAA,EAAD,CAAcC,IAAKxG,OAGzB,QACE,OAAO,MAqGF0G,KAKJkvC,GACC,sBAAKnwC,UAAU,+BAAf,SACE,eAACI,GAAA,EAAD,CACEE,WAAW,yDACXD,MAAO8vC,W,ICjKhBE,G,gBC5BUC,GATF,SAAC,GAAD,IACXviC,EADW,EACXA,SACGwiC,EAFQ,yBAIX,8CAAK9nC,MAAO,CAACsS,SAAU,aAAiBw1B,GAAxC,aACGxiC,MD+CU,SAASyiC,KAItB,MAAkDn3C,aAChD,SAACC,GAAD,OAAmBA,EAAEC,aADhBW,EAAP,EAAOA,oBAAqBojC,EAA5B,EAA4BA,mBAGtBnsB,EAAiB9X,aACrB,SAACC,GAAD,uBAAmBA,EAAE0I,uBAArB,aAAmB,EAAmBmP,kBAMxC,EAA0CtY,oBAAiB,IAA3D,oBAAOw0C,EAAP,KAAsBoD,EAAtB,KACA,EAAgC53C,sBAAhC,oBAAO63C,EAAP,KAAiBC,EAAjB,KACA,EAA4B93C,sBAA5B,oBAAO0C,EAAP,KAAeq1C,EAAf,KACA,EAA8C/3C,sBAA9C,oBAAOg4C,EAAP,KAAwBC,EAAxB,KACA,EAAsCj4C,sBAAtC,oBAAOK,EAAP,KAAoBC,EAApB,KACA,EAAoDN,qBAAkB,GAAtE,oBAAOk4C,EAAP,KAA2BC,EAA3B,KACA,EAAkDn4C,qBAAkB,GAApE,oBAAOo4C,EAAP,KAA0BC,EAA1B,KACA,EAAkCr4C,qBAAkB,GAApD,oBAAOs4C,EAAP,KAAkBC,EAAlB,KACA,EAA4Cv4C,oBAAiB,GAA7D,oBAAOw4C,EAAP,KAAuBC,EAAvB,KACA,EAAoCz4C,sBAApC,oBAAO04C,EAAP,KAAmBC,EAAnB,KAGA,EACE34C,sBADF,oBAAO44C,EAAP,KAAoCC,EAApC,KAEA,EAAsC74C,sBAAtC,oBAAOuC,GAAP,KAAoBu2C,GAApB,KAGA,GAAkD94C,sBAAlD,sBAAO+4C,GAAP,MAA0BC,GAA1B,MAOO3kC,GAAqBF,eAArBE,kBACP,GAA2Che,eAApC+d,GAAP,GAAOA,UAAW7S,GAAlB,GAAkBA,QAASC,GAA3B,GAA2BA,aAC3B,GAAwBwpB,eAAjBO,GAAP,GAAOA,IAAKE,GAAZ,GAAYA,SACZ,GAKIikB,KAJFO,GADF,GACEA,uBACAsB,GAFF,GAEEA,+BACA1B,GAHF,GAGEA,+BACAE,GAJF,GAIEA,iCAEKkJ,GE1EF,WAKL,IAAMrmC,EAAWC,cALwE,8CAWzF,WACEqmC,EACA13C,GAFF,UAAA7F,EAAA,2DAIUu9C,EAJV,cAKSzhC,KAAoB2I,cAL7B,SAQS3I,KAAoByI,UAR7B,SAWSzI,KAAoBuI,UAX7B,SAcSvI,KAAoB+H,SAd7B,UAiBS/H,KAAoBqI,SAjB7B,UAoBSrI,KAAoBuH,KApB7B,UAuBStH,KAAsBgI,IAvB/B,UA0BSjI,KAAoBqH,WA1B7B,UA6BSrH,KAAoB2H,QA7B7B,UAgCS3H,KAAoB6H,WAhC7B,UAmCS7H,KAAoB62B,OAnC7B,UAsCS72B,KAAoB+I,kBAtC7B,UAyCS/I,KAAoB6I,YAzC7B,UA4CS7I,KAAoBiI,IA5C7B,UA+CSjI,KAAoBmI,aA/C7B,UAkDSlI,KAAsBgJ,MAlD/B,mCAMY9N,EAASK,YAA0BzR,IAN/C,0DASYoR,EAASM,YAAsB1R,IAT3C,2DAYYoR,EAASO,YAAsB3R,IAZ3C,6DAeYoR,EAASQ,YAAqB5R,IAf1C,6DAkBYoR,EAASS,YAAqB7R,IAlB1C,6DAqBYoR,EAASU,YAAwB9R,IArB7C,6DAwBYoR,EAASiB,YAAyBrS,IAxB9C,6DA2BYoR,EAASY,YAAuBhS,IA3B5C,6DA8BYoR,EAASa,YAAoBjS,IA9BzC,6DAiCYoR,EAASc,YAAuBlS,IAjC5C,6DAoCYoR,EAASe,YAA4BnS,IApCjD,6DAuCYoR,EAASmB,YAA6BvS,IAvClD,6DA0CYoR,EAASgB,YAAuBpS,IA1C5C,6DA6CYoR,EAASkB,YAAuBtS,IA7C5C,6DAgDYoR,EAASoB,YAA+BxS,IAhDpD,6DAmDYoR,EAASqB,YAA2BzS,IAnDhD,iFAXyF,sBAmEzF,MAAO,CACLy3C,6BApEuF,+CF0ElDE,GAAhCF,6BAEAr3C,GAAUH,eAAVG,OACMM,GAAgBC,eAAtBC,KACP,GAKIN,eAJFC,GADF,GACEA,WACAC,GAFF,GAEEA,qBACA2H,GAHF,GAGEA,wBACA1H,GAJF,GAIEA,iBAMIuzC,GAAcphC,IAAa7S,GAC3B63C,GAAiD7tB,GACjD8tB,GAAsBxB,IAAa9uB,KAASO,MAC5CgwB,GACJrJ,KAA2B3nC,KAAYpB,eACJzL,IAAnCo0C,SACqCp0C,IAArCs0C,GACIwJ,GAAqBtJ,KAA2B3nC,KAAY7F,QAC5D+2C,GAA4D,KAAb,OAAhCzJ,SAAgC,IAAhCA,QAAA,EAAAA,GAAkCh0C,QAOjD09C,GAAsBvlC,wBA5EsB,6CA4EK,CACrD7S,EADqD,OAErDkqB,SAFqD,IAErDA,QAFqD,EAErDA,GAAKtyB,KACL0Q,KA/EgD,gDAkIlD,+BAAAhO,EAAA,yDACO0F,EADP,iEAMUq4C,EANV,iBAMgCnuB,SANhC,IAMgCA,QANhC,EAMgCA,GAAKtyB,KANrC,kCAQmCmwB,aAAY/nB,EAAoBP,UARnE,OAQU64C,EARV,OASI7B,EAAY6B,GAEZA,IAAqB5wB,KAASO,OAC5B3f,GAAwB,CAAC+vC,IAZ/B,kDAcI5B,OAAYr8C,GAdhB,2DAlIkD,sBA2JlD,SAASm+C,GAAiBnJ,GACU,IAAI1oB,SAAa,SAAChxB,EAASixB,GAC3D,IAMEjxB,EAJ0Bw6C,GACxBd,EAAQx3C,MADH2H,iBAKP,MAAO4G,GAEP,IAAM5G,EAAkB6vC,EAAQ7vC,gBAE5BA,EACF7J,EAAQ6J,GAERonB,EAAOxgB,OAMV4K,MAAK,SAACxR,GACLi5C,GAAsBj5C,EAAiB6vC,EAAQx3C,KAAM,cAEtDwZ,OAAM,SAACjL,GACN8P,QAAQuJ,KAAR,kEAC6D4vB,EAAQx3C,KADrE,kBAYN,SAAS6gD,GAAmBlJ,GACQ,IAAI7oB,SAAa,SAAChxB,EAASixB,GAC3D,IAMEjxB,EAJ0Bw6C,GACxBX,EAAU33C,MADL2H,iBAKP,MAAO4G,GAGP,IAAM5G,EAAkBgwC,EAAUhwC,gBAE9BA,EACF7J,EAAQ6J,GAERonB,EAAOxgB,OAMV4K,MAAK,SAACxR,GACLi5C,GAAsBj5C,EAAiBgwC,EAAU33C,KAAM,gBAExDwZ,OAAM,SAACjL,GACN8P,QAAQuJ,KAAR,oEAC+D+vB,EAAU33C,KADzE,cAEEuO,MA9N0C,SAmOnCqyC,GAnOmC,uFAmOlD,WACEE,EACAz7B,EACA07B,GAHF,4BAAAr+C,EAAA,yDAKE2E,OAAe7E,GAEV4F,EAPP,sBAQU,IAAIwB,MAAM,uCARpB,UAWOrB,GAXP,sBAYU,IAAIqB,MAAM,+BAZpB,mBAgBIi2C,IAAe,SAAC/Q,GAAD,mBAAC,eACXA,GADU,mBAEZzpB,GAAyB,OAGvBy7B,EArBT,sBAsBY,IAAIl3C,MAAJ,UAAam3C,EAAb,+BAtBZ,cA0BUC,EAAuBhN,GAC3B3uB,GA3BN,EAgCkB4uB,GAAsB5uB,GAA7B6uB,EAhCX,EAgCWA,IAGD+M,EAGuB,YAA3BF,EACK,CACCC,EACAF,EACA5M,EACA,GACA,IAED,CACC8M,EACAF,EACAx4C,IAGFwF,EApDV,aAqDMC,KAAMzF,IAAW,IACbW,GAAe,CAAC+E,SAAU/E,IAAgB,MAG1Ci4C,EACuB,YAA3BH,EACI,iBACA,eA5DV,UA+DUp4C,GACJu4C,EACA94C,EAAoBP,SAASC,QAC7Bm5C,EACAnzC,GAnEN,QAsEI+xC,IAAe,SAAC/Q,GAAD,mBAAC,eACXA,GADU,mBAEZzpB,GAAyB,OAE5By5B,GAAU,SAAChQ,GAAD,mBAAC,eACNA,GADK,mBAEPzpB,GAAyB,OAI5B26B,GAA6B36B,EAAwB9c,IAhFzD,kDAkFIs3C,IAAe,SAAC/Q,GAAD,mBAAC,eACXA,GADU,mBAEZzpB,GAAyB,OAGtB87B,EAAe,IAAIv3C,MACvB,MAAyB,QAAhB,uCAAOukB,MACZ,KAAM9oB,QADV,wBAEqBggB,EAFrB,YAE+C07B,EAF/C,oBAIF15C,EAAe85C,GA5FnB,2DAnOkD,sEAwUlD,6CAAAz+C,EAAA,yDACE2E,OAAe7E,GAEVgpC,EAHP,sBAIU,IAAI5hC,MAAM,gCAJpB,UAOOrB,GAPP,sBAQU,IAAIqB,MAAM,+BARpB,OAeI,IAAWjD,KAff,SAYQy6C,EAA4C,GAZpD,WAeez6C,GACT,GAAI84C,EAAW94C,GAAc,CAE3B,MACEwvC,GAA6B1zC,QAC3B,SAACC,GAAD,OAAkCA,EAAE1C,OAAS2G,KAC7C,GAHGyvC,EAAP,EAAOA,UAKHiL,EALJ,EAAkB15C,gBAOlB,IAAK05C,EAAwB,CAE3B,IAAIC,EAA2BhJ,GAC7B3xC,GAGF06C,EAAsB,OAAGC,QAAH,IAAGA,OAAH,EAAGA,EAA0B35C,gBAKrD,IAAOusC,EAAOD,GAAsBttC,GAA7ButC,IAGHkC,GAAaiL,IACfD,EAAkBtJ,KAAK,CACrB1B,EACAiL,EACAnN,IAGF2L,IAAe,SAAC/Q,GAAD,mBAAC,eACXA,GADU,mBAEZnoC,GAAc,UAjCG84C,EAAa,EAA5B94C,GAff,OAsDU46C,EAAyD,QAC7DjvB,SAD6D,IAC7DA,QAD6D,EAC7DA,GAAKpmB,WACLk1C,GAGItzC,EA3DV,aA4DMC,KAAMzF,IAAW,IACbW,GAAe,CAAC+E,SAAU/E,IAAgB,MA7DpD,UAiEUN,GACJ,cACA6iC,EAAmB3jC,SAASC,QAC5By5C,EACAzzC,GArEN,QAyEI,IAAWnH,KAAe84C,EACpBA,EAAW94C,IACbA,GACEq5C,GACEr5C,EACA4B,IA9EZ,wBA6FI,IAAW5B,KA7Ff,0BAmFUw6C,EAAe,IAAIv3C,MACvB,MAAyB,QAAhB,uCAAOukB,MACZ,KAAM9oB,QADV,yCAIFgC,EAAe85C,GAGfK,IAAoB,GA3FxB,WA6Fe76C,GACTk5C,IAAe,SAAC/Q,GAAD,mBAAC,eACXA,GADU,mBAEZnoC,GAAc,QAHO84C,EAAa,EAA5B94C,GA7Ff,2DAxUkD,sEAmblD,WACEixC,GADF,0BAAAl1C,EAAA,yDAGE2E,OAAe7E,GAHjB,SAMW6zC,EAAyBuB,EAAzBvB,gBAAiBr2C,EAAQ43C,EAAR53C,KAEnBq2C,EART,sBASY,IAAIzsC,MAAJ,qCAAwC5J,IATpD,SAakBs4C,GAA+Bt4C,GAAtCgI,EAbX,EAaWA,IAEAy5C,EAAUz5C,EAAIvF,QACnB,SAACq5B,GAAD,OAA4BA,EAAE97B,OAASq2C,KACvC,GAFKoL,OAIP9C,EAAiBtI,GACjBuJ,EAA+BhI,GAC/BoH,EAAmByC,GACnBvC,GAAsB,GAtB1B,kDAwBUiC,EAAe,IAAIv3C,MACvB,MAAyB,QAAhB,uCAAOukB,MACZ,KAAM9oB,QADV,UAEOuyC,EAAmB53C,KAF1B,wBAIFqH,EAAe85C,GA7BnB,2DAnbkD,sBAydlD,SAASK,GAAoBxD,GAE3BsB,EAAatB,GAFsC,eAKxC16C,GACTo8C,GAAc,SAACl4C,GAAD,mBAAC,eACVA,GADS,mBAEXlE,EAAM06C,QAHX,IAAK,IAAM16C,KAAOm8C,EAAa,EAApBn8C,GAqFb,OA7dAmO,sBAAU,WACR+uC,OACC,CAACA,GAAqBp4C,IAEzBqJ,sBAAU,WAER6tC,GAAa,GAERxI,IASLA,KAAgC,OAC9BA,SAD8B,IAC9BA,OAAkCpb,SAChC,SAACkc,KAGC,OAACA,QAAD,IAACA,OAAD,EAACA,EAAoBv3C,WAClBu3C,EAAmB1xB,aACpBw5B,GAAc,SAAC5Q,GAAD,mBAAC,eACVA,GADS,mBAEX8I,EAAmB53C,MAAO,aAIpC,CAAC8I,GAAYguC,KAGhBrlC,sBAAU,WACRguC,GACED,EACEp8C,OAAO+H,OAAOs0C,GAAYh9C,QAAO,SAAC+0C,GAAD,OAAkC,IAAZA,KACpD10C,UAEN,CAAC28C,IAsbClD,IAAgBl9B,IAAkBjE,GAerC,eAACsmC,GAAD,UACE,uBAAKxzC,UAAU,iBAAf,WAjFGokB,IAAOE,IACVtvB,OAAOy+C,SAAS,CACdC,IAAK,EACLC,KAAM,IACNC,SAAU,WAIV,eAACxzC,GAAA,EAAD,CACEC,MAAOikB,GACPhkB,WAAW,0BAKb8jB,GAEA,gCACGA,GAAItyB,KADP,IACa,iCAAQ0R,YAAmB4gB,GAAIpmB,WAAY,aAH5D,EAUI9E,GACFlE,OAAOy+C,SAAS,CACdC,IAAK,EACLC,KAAM,IACNC,SAAU,WAIV,eAACxzC,GAAA,EAAD,CACEC,MAAOnH,EACPoH,WAAW,0BAIR,+BA6CL,+NAKA,uBAAKN,UAAU,+BAAf,UACE,+BACE,eAAC6vC,GAAD,CACE,cAAY,YACZxpC,KAAK,WACLd,GAAG,YACH0qC,MAAK,UAAKoB,EAAL,aACLvB,SAAuB,IAAdqB,EACTlxC,SACErF,IACAu3C,IACAE,KACCJ,GAEHngD,KAAK,YACLiG,KAAM63C,GAAaiE,MACnBjH,SAtIZ,SAAwBp3C,GACtB89C,GAAoB99C,EAAMulC,OAAO+U,cAwI3B,+BACE,yBACE9vC,UAAU,oBACVC,SAA6B,IAAnBoxC,GAAwBz2C,GAClCsF,QAlmBsC,4CA+lBxC,+BASHkyC,IACC,sBAAKpyC,UAAU,4BAAf,SACE,eAACG,GAAA,EAAD,CAAQqpB,KAAK,oCAGhB2oB,IAAiB,kEAGjBF,IACCrJ,KACgC,OAAhCA,SAAgC,IAAhCA,QAAA,EAAAA,GAAkCh0C,QAAS,GAC3Cg0C,GAAiCzwC,KAC/B,SAACuxC,EAAyC7B,GAA1C,OACE,sBAAK7nC,UAAU,uCAAf,UAEqB,OAAlB0pC,QAAkB,IAAlBA,OAAA,EAAAA,EAAoBv3C,SACnB,eAACi6C,GAAD,CACE1C,mBAAoBA,EACpB6C,qBAAsB,YAA6B,IAA3BC,EAA0B,EAA1BA,qBACtB,OACE,qCACE,sBAAKxsC,UAAU,8BAAf,SACE,eAAC6vC,GAAD,CACEtqC,GAAIinC,GAAwB,QAC5ByD,MAAO,GACPH,QACGtD,GACC+E,IACqC,IAArCA,EAAW/E,KACb,EAEFvsC,SACErF,IACyB,OAAzB4xC,IADA,OAEA9C,QAFA,IAEAA,OAFA,EAEAA,EAAoB1xB,aAEtBlmB,KAAM06C,GAAwB,GAC9Bz0C,KAAM63C,GAAaiE,MACnBjH,SAAU,SAACp3C,GACTg3C,GAzK9B,YAA6E,IAA1Ch3C,EAAyC,EAAzCA,MAAOg3C,EAAkC,EAAlCA,qBAKxCgF,GAAc,SAACl4C,GAAD,mBAAC,eACVA,GADS,mBAEXkzC,EAAuBh3C,EAAMulC,OAAO+U,aAmKTgE,CAAyB,CACvBt+C,QACAg3C,iCAQhBF,cAAe,YAGR,IAFLE,EAEI,EAFJA,qBACAE,EACI,EADJA,0BAEA,OACE,qCACE,sBAAK1sC,UAAU,yBAAf,SACE,yBACEA,UAAU,oBACVC,SAC2B,OAAzBusC,GACCpxC,IACCA,GACEsxC,EAA0B56C,OAE9B8I,GAEFsF,QAAS,kBACkB,OAAzBwsC,QAAyB,IAAzBA,OAAA,EAAAA,EAA2B10B,aACvB26B,GACEjG,GAEF+F,GAAiB/F,IAfzB,SAiBGtxC,IACDA,GAAYsxC,EAA0B56C,MACpC,eAACqO,GAAA,EAAD,IACE5E,GACFA,EAAOmxC,EAA0B56C,MACjC,OAEA,eASd,uCAEE,uBAAKkO,UAAU,oCAAf,UACE,sBAAKA,UAAU,8BAAf,WACG,OAAC0pC,QAAD,IAACA,OAAD,EAACA,EAAoB1xB,cACpB,eAAC63B,GAAD,CACEtqC,GAAImkC,EAAmB53C,KACvBm+C,MAAO,GACPH,QACGyB,IACyC,IAAxCA,EAAW7H,EAAmB53C,QAChC,EAEFmO,SAAUrF,GACV9I,KAAM43C,EAAmB53C,KACzBiG,KAAM63C,GAAaiE,MACnBjH,SAAU,SAACp3C,GACTg8C,GAAc,SAACl4C,GAAD,mBAAC,eACVA,GADS,mBAEXowC,EAAmB53C,KAAO0D,EAAMulC,OAAO+U,kBAOlD,uBAAK9vC,UAAU,0BAAf,UACE,wBAAMA,UAAU,0BAAhB,UACG0pC,EAAmB53C,KAAM,KACP,OAAlB43C,QAAkB,IAAlBA,OAAA,EAAAA,EAAoB1xB,cAAe,iBAEtC,uBAAMhY,UAAU,0BAAhB,SACG0pC,EAAmB33C,oBAK1B,sBAAKiO,UAAU,yBAAf,SACE,yBACEA,UAAU,oBACVC,SACG7E,IACCA,GAAYsuC,EAAmB53C,OAChCyJ,GAAUA,EAAOmuC,EAAmB53C,OACrC8I,GAEFsF,QAAS,kBACW,OAAlBwpC,QAAkB,IAAlBA,OAAA,EAAAA,EAAoB1xB,aAChB26B,GAAmBjJ,GACnB+I,GAAiB/I,IAXzB,SAaGtuC,IAAeA,GAAYsuC,EAAmB53C,MAC7C,eAACqO,GAAA,EAAD,IACE5E,GAAUA,EAAOmuC,EAAmB53C,MACtC,OAEA,cArI+C+1C,MAgJhEoK,IACCvJ,KAC8B,OAA9BA,SAA8B,IAA9BA,QAAA,EAAAA,GAAgC9zC,QAAS,GACzC8zC,GAA+BvwC,KAC7B,SAACuxC,EAAyC7B,GAA1C,OACE,uBACE7nC,UAAU,qCADZ,UAGE,uBAAKA,UAAU,0BAAf,UACE,wBAAMA,UAAU,0BAAhB,UACG0pC,EAAmB53C,KAAM,KACP,OAAlB43C,QAAkB,IAAlBA,OAAA,EAAAA,EAAoB1xB,cAAe,iBAEtC,uBAAMhY,UAAU,0BAAhB,SACG0pC,EAAmB33C,iBAIxB,sBAAKiO,UAAU,+BAAf,SACE,yBACEA,UAAU,oBACVC,SAAUrF,KAAU,OAAI8uC,QAAJ,IAAIA,OAAJ,EAAIA,EAAoB1xB,aAC5C9X,QAAS,kBA3xBuB,4CA4xB9B6zC,CACErK,IALN,2BAdJ,UAEUA,EAAmBnkC,GAF7B,YAEmCsiC,OA2BxCjtC,IACC,+BACE,yBACEoF,UAAU,eACVE,QAAS,WACPrF,KACAg3C,GACExB,GAAsB2D,uBAL5B,SAQG3D,GAAsB2D,yBAK7B,uBAAKh0C,UAAU,sCAAf,UACE,6KAKA,+BACE,yBACE,cAAY,cACZA,UAAU,6BACVC,SACEkyC,KAAkBF,IAAiBC,GAMrChyC,QAAS,kBAAMgxC,GAAqB,IAVtC,4BAeDt2C,IACC,+BACE,yBACEoF,UAAU,eACVE,QAAS,WACPrF,KAEAg3C,GAAqBxB,GAAsB4D,mBAL/C,SAOG5D,GAAsB4D,qBAK7B,eAACn5C,GAAD,CAAkBoG,MAAO0wC,QAG1Bb,GACC,eAACrB,GAAD,CACErC,cAAeA,EACf3D,mBAAoB+H,EACpB9B,oBAAqBkB,EACrB7iC,OAAQ+iC,EACRzD,aAAc,WACZ0D,GAAsB,MAK3BC,GACC,eAACf,GAAD,CACEliC,OAAQijC,EACR3D,aAAc,WACZ4D,GAAqB,GAGrBoB,aA3TR,eAACkB,GAAD,UACE,sBAAKxzC,UAAU,0CAAf,SACE,6BAxBDquC,GAKDnhC,GACKA,GAAkB/V,QAItBga,OAAL,EACS,iEAVA,uEAyVb,SAASqiC,GAAch7C,GAKrB,OACE,eAAC,GAAD,CAAMwH,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,sBAAKb,UAAU,WAAf,SACE,qBAAIA,UAAU,kBAAd,yCAIDxH,EAAMuV,e,SAr5BVsiC,K,+CAAAA,E,yDAAAA,Q,SGvBA6D,G,qCCfU,SAASC,GAAqB37C,GAC3C,IAAOnD,EAASmD,EAATnD,MAEP,OAAKA,EAGH,qCACE,0BAASoT,MAAO,CAAC6X,OAAQ,UAAWC,QAAS,QAA7C,SACE,wDAGF,sBAAK9X,MAAO,CAAC2rC,UAAW,OAAxB,SACE,eAAC,KAAD,UAAW/+C,SATE,KDsBN,SAASg/C,KAKtB,IAAMljC,EAAiB9X,aACrB,SAACC,GAAD,uBAAmBA,EAAE0I,uBAArB,aAAmB,EAAmBmP,kBAOxC,EAAsCtY,sBAAtC,oBAAOK,EAAP,KAAoBC,EAApB,KAMA,EAA6BjK,eAAtB+d,EAAP,EAAOA,UAAW7S,EAAlB,EAAkBA,QAClB,EACE2iB,eADKC,EAAP,EAAOA,0BAA2BC,EAAlC,EAAkCA,oBAE3B/P,EAAqBF,eAArBE,kBAMDygC,EAAOC,aAAoB,CAC/BC,KAAM,SACNC,eAAgB,aAEZwG,EAAUC,eAMTr9C,EAA+Cy2C,EAA/Cz2C,OAAQ82C,EAAuCL,EAAvCK,UAAWE,EAA4BP,EAA5BO,SAAUC,EAAkBR,EAAlBQ,QAASqG,EAAS7G,EAAT6G,MACvCnG,EAAcphC,GAAa7S,EAC3BgB,EACJ4hB,IAA8BlkB,KAAauC,kBAC3C2hB,IAA8BlkB,KAAawC,QAEvCC,EAASyhB,IAA8BlkB,KAAa0C,UACpDC,EAAoBL,GAAeG,EA7CQ,SAoElCi0C,EApEkC,gFAoEjD,WAA4BvyC,GAA5B,kBAAAzI,EAAA,+EAG6ByoB,EAAoB,CAC3Cc,oBAAqB,CACnBjsB,KAAMmL,EAAOiE,MACbyO,KAAM1S,EAAOlL,YACboL,SAAU,CACR+S,KAAMmZ,KAAqBorB,aAG/BvkC,KAAM8N,gBAAatlB,WAXzB,gBAGWmhC,EAHX,EAGWA,SAYPya,EAAQ1K,KAAR,sBAA4B/P,IAfhC,gDAiBI1gC,EAAe,EAAD,IAjBlB,0DApEiD,sBAqHjD,OAAKk1C,GAAgBl9B,IAAkBjE,EAWrC,eAAC,GAAD,UACE,wBAAMlN,UAAU,OAAOmvC,SAAU,SAAC1d,GAAD,OAAOA,EAAEh8B,kBAA1C,UAEE,uBAAKuK,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAwB+vC,QAASmE,GAAOhzC,MAAzD,mBAGA,uBAAKlB,UAAU,4BAAf,UACE,wBACE,mCAA2Bk0C,GAAOhzC,OAClC,eAAchK,EAAOgK,MAAQ,OAAS,QACtCqE,GAAI2uC,GAAOhzC,MACXpP,KAAMoiD,GAAOhzC,MACbouC,IAAKpB,EAAS,CACZwG,SAAUrxB,KAAgB2oB,WAE5B97B,KAAK,OACLjQ,SAAUxE,IAGZ,eAACwxC,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAOhzC,MAAOhK,GACxCqO,GAAE,gBAAW2uC,GAAOhzC,eAM1B,uBAAKlB,UAAU,qBAAf,UACE,wBAAOA,UAAU,wBAAwB+vC,QAASmE,GAAOniD,YAAzD,yBAGA,uBAAKiO,UAAU,4BAAf,UACE,2BACE,mCAA2Bk0C,GAAOniD,aAClC,eAAcmF,EAAOnF,YAAc,OAAS,QAC5CwT,GAAI2uC,GAAOniD,YACXD,KAAMoiD,GAAOniD,YACbs9C,YAAY,kDACZC,IAAKpB,EAAS,CACZwG,SAAUrxB,KAAgB2oB,WAE5B/rC,SAAUxE,IAGZ,eAACwxC,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAOniD,YAAamF,GAC9CqO,GAAE,gBAAW2uC,GAAOniD,eAGtB,eAACoiD,GAAD,CAAsB9+C,MAAOm/C,EAAMN,GAAOniD,qBAK9C,yBACE,aAAYqJ,EAAc,8BAAgC,GAC1D4E,UAAU,SACVC,SAAUxE,EACVyE,QAAO,wBAAE,uBAAA1L,EAAA,0DACHiH,EADG,iEAGK0yC,IAHL,kEAOPqB,EAAaxB,KAPN,2CAST99B,KAAK,SAbP,SAcG9U,EAAc,eAAC+E,GAAA,EAAD,IAAa5E,EAAS,OAAS,WAI/CE,GACC,sBAAKuE,UAAU,gCAAf,SAjHR,WACE,OAAQgd,GACN,KAAKlkB,KAAauC,iBAChB,OACE,oEAEE,eAAC,KAAD,CAAemF,WAAY,SAGjC,KAAK1H,KAAawC,QAChB,OACE,oDAEE,eAAC,KAAD,CAAekF,WAAY,SAGjC,KAAK1H,KAAa0C,UAChB,MAAO,QACT,QACE,MAAO,IA+FFyF,KAKJ/H,GACC,sBAAK8G,UAAU,+BAAf,SACE,eAACI,GAAA,EAAD,CACEE,WAAW,sDACXD,MAAOnH,WA7Ff,eAAC,GAAD,UACE,sBAAK8G,UAAU,kCAAf,SACE,6BApEDquC,EAKDnhC,EACKA,EAAkB/V,QAItBga,OAAL,EACS,iEAVA,6DAuKb,SAASqiC,GAAch7C,GACrB,OACE,eAAC,GAAD,CAAMwH,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,sBAAKb,UAAU,WAAf,SACE,qBAAIA,UAAU,kBAAd,mCAGF,uBAAKA,UAAU,eAAf,UACE,sBAAKA,UAAU,oBAAf,SACE,iOAQDxH,EAAMuV,kB,SAzPZmmC,K,cAAAA,E,2BAAAA,Q,SEUAA,G,kBAgBU,SAASS,KAKtB,IAAOznC,EAAqBF,eAArBE,kBACP,EAA2Che,eAApC+d,EAAP,EAAOA,UAAW7S,EAAlB,EAAkBA,QAASC,EAA3B,EAA2BA,aAC3B,EAKI0iB,eAJFmU,EADF,EACEA,aACA8I,EAFF,EAEEA,yBACAhd,EAHF,EAGEA,0BACAC,EAJF,EAIEA,oBAOI0wB,EAAOC,aAAoB,CAC/BC,KAAM,SACNC,eAAgB,aAEZwG,EAAUC,eAMhB,EAAsC17C,sBAAtC,oBAAOK,EAAP,KAAoBC,EAApB,KACA,EAAoDN,sBAApD,oBAAO+7C,EAAP,KAA2BC,EAA3B,KAMO39C,EAAyDy2C,EAAzDz2C,OAAQ82C,EAAiDL,EAAjDK,UAAWC,EAAsCN,EAAtCM,SAAUC,EAA4BP,EAA5BO,SAAUC,EAAkBR,EAAlBQ,QAExC2G,GAAkBN,EAFwC7G,EAAT6G,OAEzBN,GAAO3X,YAE/BwY,EAAoB77C,GAAe8gC,EACnCqU,EAAcphC,GAAa7S,EAE3BgB,EACJ4hB,IAA8BlkB,KAAauC,kBAC3C2hB,IAA8BlkB,KAAawC,QAEvCC,EAASyhB,IAA8BlkB,KAAa0C,UAEpDC,EAAoBL,GAAeG,EAEzC,EAKI2hB,aAAkB43B,GAJpB33B,EADF,EACEA,oBACAC,EAFF,EAEEA,yBACAC,EAHF,EAGEA,qBACAC,EAJF,EAIEA,iBAOI03B,EAA8BjoC,wBA7Da,4CA6DsB,CACrE3S,EACAC,IA/D+C,8CAmFjD,6BAAA7F,EAAA,yDACO6F,GAAiBD,EADxB,uBAEIy6C,OAAsBvgD,GAF1B,mDAQsC+F,EAAa0Z,IAAIkhC,WAAW76C,GARlE,OAQU86C,EARV,OASIL,EACEx6C,EAAaogB,MAAM06B,QAAQD,EAAqB,UAVtD,kDAaIL,OAAsBvgD,GAb1B,2DAnFiD,+BAoGlCk7C,EApGkC,gFAoGjD,WAA4BvyC,GAA5B,oCAAAzI,EAAA,kEAES65C,EAFT,sBAGY,IAAI3yC,MACR,yEAJR,UAQStB,EART,sBASY,IAAIsB,MAAM,qBATtB,UAYQyhB,GAIFhN,QAAQuJ,KAAR,4DACuDyD,EAAoBhmB,UAK3EkmB,IAAyBlc,KAAY3F,WACpC8hB,IACDF,EAxBN,sBA0BY,IAAI1hB,MAAM0hB,GA1BtB,UA8BQ/f,GAAiC,OAAZ6zB,QAAY,IAAZA,OAAA,EAAAA,EAAc2I,WAAY,GAE5C0C,EAAyBt/B,EAAzBs/B,WAAY6Y,EAAan4C,EAAbm4C,UACbC,EAAuBjmC,6BAAkBmtB,GACzC+Y,EAAiBxrC,iBAAMxR,YAAkB88C,GAAY,SACrDG,EAA4BnmC,6BAAkBhV,GAM9Co7C,EAAuB,CAC3BC,cAAeL,EACfM,kBAAmB,OAKfh4B,EAA0C,CAC9C23B,EACAxhD,IACAyhD,GAIGj4C,EAvDT,wBAwDYsS,EACJvY,YAAgBmlC,KAAgBnlC,YAAgBgD,GAAhD,yBACsBoJ,YAAmB6xC,EAAsB,GAD/D,wCAEgC7xC,YAC1B+xC,EACA,GAJN,0BAKuB/xC,YAAmB6xC,EAAsB,GALhE,KAzDR,UAiE+Bp4B,EAAoB,CAC3Cc,oBAAqB,CACnBjsB,KAAMujD,EACN1lC,OACAxS,SAAU,CACRq4C,uBACA93B,mBACAi4B,yCACEJ,IAGN98C,YAAa2e,KAAqBQ,WAClC1H,KAAM8N,gBAAaiT,QA7E3B,iBAiEa4I,EAjEb,EAiEaA,SAePx8B,EAAaw8B,EAhFnB,QAoFIya,EAAQ1K,KAAR,sBAA4BvsC,IApFhC,kDAuFIlE,EAAe,EAAD,IAvFlB,2DApGiD,sBAkPjD,OA5KAoK,sBAAU,WACRyxC,MACC,CAACA,IAGJzxC,sBAAU,WACR0qC,EAASiG,GAAO3X,WAAYniC,KAC3B,CAACA,EAAS6zC,KAqKRI,GAAenhC,EAEhB,eAAC,GAAD,UACE,sBAAKlN,UAAU,kCAAf,SACE,6BAnBDquC,EAKDnhC,EACKA,EAAkB/V,aAD3B,EAJS,6DAyBT,eAAC,GAAD,UACE,wBAAM6I,UAAU,OAAOmvC,SAAU,SAAC1d,GAAD,OAAOA,EAAEh8B,kBAA1C,UAEE,uBAAKuK,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAwB+vC,QAASmE,GAAO3X,WAAzD,+BAGA,uBAAKv8B,UAAU,4BAAf,UAEE,wBACE,mCAA2Bk0C,GAAO3X,YAClC,eAAcrlC,EAAOqlC,WAAa,OAAS,QAC3Ch3B,GAAI2uC,GAAO3X,WACXzqC,KAAMoiD,GAAO3X,WACb+S,IAAKpB,EAAS,CACZqB,SAAU,SAAChT,GACT,OAAQA,IAEHpiB,aAAkBoiB,IACnBlZ,KAAgBsoB,yBAFhBtoB,KAAgB2oB,YAMxB97B,KAAK,OACLjQ,SAAUxE,IAGZ,eAACwxC,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAO3X,WAAYrlC,GAC7CqO,GAAE,gBAAW2uC,GAAO3X,oBAM1B,uBAAKv8B,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAwB+vC,QAASmE,GAAOkB,UAAzD,oBAGA,uBAAKp1C,UAAU,oCAAf,UACE,uBAAKA,UAAU,qBAAf,UACE,wBACEA,UAAU,gBACV,mCAA2Bk0C,GAAOkB,WAClC,eAAcl+C,EAAOk+C,UAAY,OAAS,QAC1C7vC,GAAI2uC,GAAOkB,UACXtjD,KAAMoiD,GAAOkB,UACbxI,SAAU,kBACRqB,EACEiG,GAAOkB,UACPp/C,YAAag4C,IAAYoH,aAG7B9F,IAAKpB,EAAS,CACZqB,SAAU,SAACl6C,GACT,IAAMma,EAASjT,OAAOjE,YAAkBjD,IAExC,MAAiB,KAAVA,EACHguB,KAAgB2oB,SAChBV,MAAM97B,GACN6T,KAAgByoB,eAChBt8B,GAAU,EACV,0CACAA,GAAUjT,OAAOq4C,KACjB,yBAIR1kC,KAAK,OACLjQ,SAAUxE,IAEZ,sBAAKuE,UAAU,qBAAf,oBAGF,eAACitC,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAOkB,UAAWl+C,GAC5CqO,GAAE,gBAAW2uC,GAAOkB,gBAGxB,uBAAKp1C,UAAU,oBAAf,wBACa,gCAtHd40C,EAIgBr4C,OAAOq5C,UAAUr5C,OAAOq4C,IAEzCA,EACA/+C,YAAc0G,OAAOq4C,IANhB,cA0HL,yBACE,aAAYx5C,EAAc,4BAA8B,GACxD4E,UAAU,SACVC,SAAUxE,EACVyE,QAAO,wBAAE,uBAAA1L,EAAA,0DACHiH,EADG,iEAGK0yC,IAHL,kEAOPqB,EAAaxB,KAPN,2CAST99B,KAAK,SAbP,SAcG9U,EAAc,eAAC+E,GAAA,EAAD,IAAa5E,EAAS,OAAS,WAI/CE,GACC,sBAAKuE,UAAU,gCAAf,SAtKR,WACE,OAAQgd,GACN,KAAKlkB,KAAauC,iBAChB,OACE,oEAEE,eAAC,KAAD,CAAemF,WAAY,SAGjC,KAAK1H,KAAawC,QAChB,OACE,oDAEE,eAAC,KAAD,CAAekF,WAAY,SAGjC,KAAK1H,KAAa0C,UAChB,MAAO,QACT,QACE,MAAO,IAoJFyF,KAKJ8zC,GACC,sBAAK/0C,UAAU,+BAAf,SACE,eAACI,GAAA,EAAD,CACEE,WAAW,sDACXD,MAAO00C,WASrB,SAASvB,GAAch7C,GAKrB,OACE,eAAC,GAAD,CAAMwH,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,sBAAKb,UAAU,WAAf,SACE,qBAAIA,UAAU,kBAAd,oBAGF,uBAAKA,UAAU,eAAf,UACE,sBAAKA,UAAU,oBAAf,SACE,iOAQDxH,EAAMuV,kB,SA9ZZmmC,K,wBAAAA,E,uBAAAA,Q,SCWAA,GCRAA,G,UD4CU,SAAS2B,KAKtB,IAAMt0B,EAAqBloB,aACzB,SAAC8Y,GAAD,uBAAuBA,EAAM5Y,iBAA7B,aAAuB,EAAiBgoB,sBAEpCrnB,EAAsBb,aAC1B,SAAC8Y,GAAD,uBAAuBA,EAAM5Y,iBAA7B,aAAuB,EAAiBW,uBAEpCV,EAAwBH,aAC5B,SAAC8Y,GAAD,uBAAuBA,EAAM5Y,iBAA7B,aAAuB,EAAiBC,yBAEpC2X,EAAiB9X,aACrB,SAACC,GAAD,uBAAmBA,EAAE0I,uBAArB,aAAmB,EAAmBmP,kBAOjCjE,EAAqBF,eAArBE,kBACP,EAA2Che,eAApC+d,EAAP,EAAOA,UAAW7S,EAAlB,EAAkBA,QAASC,EAA3B,EAA2BA,aACdU,EAAgBC,eAAtBC,KACP,EACEX,eADKwO,EAAP,EAAOA,QAASvO,EAAhB,EAAgBA,eAAgBC,EAAhC,EAAgCA,eAAgBC,EAAhD,EAAgDA,OAAQC,EAAxD,EAAwDA,SAExD,EACEqiB,eADKmU,EAAP,EAAOA,aAAclU,EAArB,EAAqBA,0BAA2BC,EAAhD,EAAgDA,oBAO1C0wB,EAAOC,aAAoB,CAC/BC,KAAM,SACNC,eAAgB,aAEZwG,EAAUC,eAMhB,EAAsC17C,sBAAtC,oBAAOK,EAAP,KAAoBC,EAApB,KACA,EAAkCN,sBAAlC,oBAAOi9C,EAAP,KAAkBC,EAAlB,KACA,EAAwDl9C,sBAAxD,oBAAOm9C,EAAP,KAA6BC,EAA7B,KAMO/+C,EAAyDy2C,EAAzDz2C,OAAQ82C,EAAiDL,EAAjDK,UAAWC,EAAsCN,EAAtCM,SAAUC,EAA4BP,EAA5BO,SAAUC,EAAkBR,EAAlBQ,QAASqG,EAAS7G,EAAT6G,MAEjD0B,EAAiC,gBADrB1B,EAAM,QAElB2B,EAAqB3B,EAAM,iBAE3B4B,EAAsBl9C,GAAe4P,EACrCulC,EAAcphC,GAAa7S,EAC3Bi8C,EAAsBC,GAEtBl7C,EACJV,IAAa5B,KAAauC,kBAC1BX,IAAa5B,KAAawC,SAC1B0hB,IAA8BlkB,KAAauC,kBAC3C2hB,IAA8BlkB,KAAawC,QAEvCC,EACJb,IAAa5B,KAAa0C,WAC1BwhB,IAA8BlkB,KAAa0C,UAEvCC,EAAoBL,GAAeG,GAAUf,EAM7C+7C,EAAqBxpC,wBA7EoB,6CA6EM,CACnDvT,EACAY,EACAi8C,EACAh8C,IAGIm8C,GAAgCzpC,wBApFS,6CAoF4B,CACzE3S,EACA+7C,IAtF6C,gDAyG/C,iFAAA3hD,EAAA,yDACO4F,GAAYZ,GAA0Ba,EAD7C,uBAEI07C,OAAazhD,GAFjB,0CAQWm4B,EAGHjzB,EAHFM,IACiB4yB,EAEflzB,EAFFC,gBACoBg9C,EAClBj9C,EADFG,SAAWC,QAVjB,SAa2B68C,EAAYC,WAAWt6C,OAblD,UAaUs6C,EAbV,SAeQn6C,OAAOm6C,GAAY,GAf3B,iBAgBMX,EAAa,IAhBnB,+BAkBUY,EAAwC,GAGtCC,EAAcnqB,EAAQ1yB,MAAK,SAACkxB,GAAD,MAAwB,aAAdA,EAAKn5B,QAC1C+kD,EAAgB,YAAI3+C,MAAMqE,OAAOm6C,IAAW3oB,QAAQ51B,KACxD,SAAC2+C,GAAD,MAA2B,CACzBpqB,EACAkqB,EACA,CAACE,EAAM3gD,gBA1BjB,UA6B4CsG,aAAU,CAC9CC,MAAOm6C,EACPx8C,iBA/BR,eA6BY08C,EA7BZ,OAkCYC,EAAevqB,EAAQ1yB,MAAK,SAACkxB,GAAD,MAAwB,cAAdA,EAAKn5B,QAC3CmlD,EAA0BF,EAAc5+C,KAC5C,SAACkhC,GAAD,MAA2B,CACzB3M,EACAsqB,EACA,CAACrjD,IAAe0lC,OAvC1B,UA0C+C58B,aAAU,CACjDC,MAAOu6C,EACP58C,iBA5CR,WA0CY68C,EA1CZ,OA+CYC,EAAqCJ,EACxC5+C,KAAI,SAACkhC,EAAOyd,GAAR,MAAmB,CACtBr/C,QAAS4hC,EACT+d,WAAYF,EAAiBJ,OAG9BviD,QAAO,SAAC8iD,GAAD,OAAcC,gBAAKD,EAASD,YAAYG,GAAGD,gBAAK,QAEpDE,EAAWL,EAAYp9C,MAC3B,SAACs/B,GAAD,OAAWA,EAAM5hC,UAAY1D,SAG7B4iD,EAAsB/M,KAAtB,2BACK4N,GADL,IAEE1lD,KAAM,QACNmwC,OAAQ,MACRC,SAAU,SAKRuV,EAAcN,EAAY5iD,QAC9B,SAAC8kC,GAAD,OAAWA,EAAM5hC,UAAY1D,QAGfa,OAAS,GAxE/B,wBAyEc8iD,EAAUrB,EAASt8C,MAAK,SAACkxB,GAAD,MAAwB,SAAdA,EAAKn5B,QACvC6lD,EAAYF,EAAYt/C,KAC5B,SAACkhC,GAAD,MAA2B,CACzBA,EAAM5hC,QACNigD,EACA,OAGEE,EAAYvB,EAASt8C,MAAK,SAACkxB,GAAD,MAAwB,WAAdA,EAAKn5B,QACzC+lD,EAAcJ,EAAYt/C,KAC9B,SAACkhC,GAAD,MAA2B,CACzBA,EAAM5hC,QACNmgD,EACA,OAGEE,EAAczB,EAASt8C,MAAK,SAACkxB,GAAD,MAAwB,aAAdA,EAAKn5B,QAC3CimD,EAAgBN,EAAYt/C,KAChC,SAACkhC,GAAD,MAA2B,CACzBA,EAAM5hC,QACNqgD,EACA,OAGEE,EAjGd,sBAkGaL,GAlGb,YAmGaE,GAnGb,YAoGaE,IApGb,UAsG4Bt7C,aAAU,CAC5BC,MAAOs7C,EACP39C,iBAxGV,QA2GQ,IALI+yB,EAtGZ,OA0GY6qB,EAAiB,GACd7qB,EAAQx4B,QACbqjD,EAAerO,KAAKxc,EAAQ8qB,OAAO,EAAGT,EAAY7iD,SAE7CujD,EAA4BF,EA9G3C,GA8GsBG,EAAqBH,EA9G3C,GA8G+B/V,EAAY+V,EA9G3C,GAgHcI,EAA6BZ,EAChCt/C,KAAI,SAACkhC,EAAOyd,GAAR,mBAAC,eACDzd,GADA,IAEHvnC,KAAMqmD,EAAMrB,GACZ7U,OAAQmW,EAAQtB,GAChB5U,SAAUA,EAAS4U,QAEpBwB,MAAK,SAAC9jD,EAAGuzC,GAAJ,OAAUvzC,EAAE1C,KAAKymD,cAAcxQ,EAAEj2C,SAEzC6kD,EAAqB,sBAChBA,GADgB,YAEhB0B,IA3Hb,QA+HMtC,EAAaY,GA/HnB,0DAkIIxmC,QAAQ9P,MAAR,MACA01C,OAAazhD,GAnIjB,2DAzG+C,sEAgP/C,2CAAAE,EAAA,yDACO4F,GAAY+7C,EADnB,uBAEIF,OAAwB3hD,GAF5B,0BAME,IACQkkD,EAAmB15C,KAAK25C,MAAMtC,GAC9B7R,EAAUkU,EAAiBpB,WAC3BsB,EAAYpB,gBAAKhT,GACjBpC,EAAWsW,EAAiBtW,SAC5ByW,EAAUrB,gBAAK,IAAIsB,IAAItB,gBAAKpV,IAC5B2W,EAAgBH,EAAUI,IAAIH,GAC9BI,EAAeL,EAAUM,IAAIL,GAC7BM,EAAkBF,EAAaG,GAAG5B,gBAAK,IACzCuB,EAAc1iD,WADM,UAEjB0iD,EAAc1iD,WAFG,YAEW4iD,EAAa5iD,YAEhD8/C,EAAwBgD,GACxB,MAAO54C,GACP8P,QAAQ9P,MAAMA,GACd41C,OAAwB3hD,GArB5B,4CAhP+C,+BAyQhCk7C,GAzQgC,mFAyQ/C,WAA4BvyC,GAA5B,sEAAAzI,EAAA,kEAES65C,EAFT,sBAGY,IAAI3yC,MACR,yEAJR,UAQS6lB,EART,sBASY,IAAI7lB,MAAM,gCATtB,UAYSxB,EAZT,sBAaY,IAAIwB,MAAM,iCAbtB,UAgBStB,EAhBT,sBAiBY,IAAIsB,MAAM,qBAjBtB,UAoBSrB,EApBT,uBAqBY,IAAIqB,MAAM,+BArBtB,WAwBWy9C,EAA+Cl8C,EAA/Ck8C,cAAep8C,EAAgCE,EAAhCF,cAAeyS,EAAiBvS,EAAjBuS,OAAQ4pC,EAASn8C,EAATm8C,MACvCC,EAA0BjqC,6BAAkBrS,GAC5Cy7C,EAAmB15C,KAAK25C,MAAMU,GAC7BlX,EAA2CuW,EAA3CvW,OAAQC,EAAmCsW,EAAnCtW,UAAmBe,EAAgBuV,EAAzB/gD,WAEJ1D,IACnBulD,EAAYxvC,iBAAMxR,YAAkBkX,GAAS,UAEvC+pC,EAAajC,gBAAK,IAAIsB,IAAItB,gBAAKpV,IAC/BsX,EAAqBlC,gBAAKh/C,YAAkBkX,IAASiqC,IACzDF,GAEFD,EAAYE,EAAmBrjD,YAI7BkH,GAAiC,OAAZ6zB,QAAY,IAAZA,OAAA,EAAAA,EAAc2I,WAAY,GAC/C5b,EAzCR,OAyCiDiT,QAzCjD,IAyCiDA,OAzCjD,EAyCiDA,EAAcjT,KACvD7e,GAAgC,OAAZ8xB,QAAY,IAAZA,OAAA,EAAAA,EAAc9xB,YAAa,GAE7Cs6C,EAAYxD,EACd,oCAD8B,sBAEf1yC,YAAmB61C,EAAyB,GAF7B,KAQ5B7D,EAAuB,CAC3BmE,eAAgBnqC,EAChBoqC,mBAAoB3X,GAIjB5kC,EA1DT,wBA2DYsS,EAAOypC,EAAK,UAAMM,EAAN,aAAoBN,GAAUM,EAC1C5nD,EAAOokD,EAAmB,cAAgBmD,EAC1CtwB,EAAMt0B,KAAKC,MAAMoC,KAAKiyB,MAAQ,KA7D1C,UAoEgB9L,EAAoB,CAC5Bc,oBAAqB,CACnBjsB,OACA6d,OACAxS,SAAU,CACRq4C,uBACAU,oBAEF34C,UAAWwrB,EAAI5yB,YAEjBsC,YAAa2e,KAAqBgB,WAClClI,KAAM8N,gBAAatlB,WA/E3B,iBAiEQmhC,EAjER,EAiEQA,SACM/W,EAlEd,EAkEQ7E,KACW47B,EAnEnB,EAmEQz6C,UAeF/B,EAAaw8B,EACb5b,EAAO6E,EACP1jB,EAAYy6C,EApFlB,eAuFUC,EAAmB5D,EACrBzkC,KACA4nC,EAOEn7B,EAAgCD,EAClCE,mCACE,CACEniB,QAAS,CACPlK,KAAMmsB,EAAKjiB,QAAQlK,KACnB6d,KAAMsO,EAAKjiB,QAAQ2T,KACnBmM,QAASmC,EAAKjiB,QAAQ8f,QACtBhgB,SAAUmiB,EAAKjiB,QAAQF,SAAS3F,WAChC+lB,MAAO+B,EAAKjiB,QAAQkgB,MACpBE,IAAK6B,EAAKjiB,QAAQogB,KAEpB9e,IAAK8B,EACLwd,MAAOqB,EAAKrB,MACZrf,UAAW6gB,SAASH,EAAK1gB,YAE3BlD,GAEF,GAEE0/C,EAAuC,CAC3C7/C,EAAoBT,gBACpB4D,EACAy8C,EACA7W,EACAqW,EACAp7B,GAGIte,EA5HV,aA6HMC,KAAMzF,GAAW,IACbW,EAAe,CAAC+E,SAAU/E,GAAgB,MA9HpD,UAkIUN,EACJ,iBACA8mB,EAAmB5nB,SAASC,QAC5BmgD,EACAn6C,GAtIN,QA0II00C,EAAQ1K,KAAR,qBAA2BvsC,IA1I/B,kDA6IIlE,EAAe,EAAD,IA7IlB,2DAzQ+C,+BA6dhC6gD,GA7dgC,mFA6d/C,WAAuCviD,GAAvC,gBAAAjD,EAAA,yDACOgF,EADP,uBAEI2W,QAAQ9P,MAAM,mCAFlB,mBAGW,GAHX,uBAM6B7G,EAAsBG,SAASC,QACvDssB,UAAUzuB,EAAS5D,KACnBuI,OARL,cAMQ69C,EANR,yBAUS3C,gBAAK2C,GAAc1C,GAAGD,gBAAK,KAVpC,4CA7d+C,sBA+e/C,OAlZA/zC,sBAAU,WACRgzC,MACC,CAACA,IAEJhzC,sBAAU,WACRizC,OACC,CAACA,KA4YCnI,IAAenhC,GAAsBiE,EAWxC,eAAC,GAAD,UACE,wBAAMnR,UAAU,OAAOmvC,SAAU,SAAC1d,GAAD,OAAOA,EAAEh8B,kBAA1C,UAEE,uBAAKuK,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAjB,kBACA,sBAAKA,UAAU,4BAAf,SACE,0BACElO,KAAMoiD,GAAOhkC,KACbo/B,IAAKpB,EACLjuC,SAAUxE,EAHZ,UAIE,yBAAQpG,MAAM,gBAAd,2BACA,yBAAQA,MAAM,cAAd,kCAMJ6gD,GACA,uBAAKl2C,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAjB,4BACA,uBAAKA,UAAU,4BAAf,UACE,wBACE,mCAA2Bk0C,GAAOn3C,eAClC,eAAc7F,EAAO6F,cAAgB,OAAS,QAC9CjL,KAAMoiD,GAAOn3C,cACbuyC,IAAKpB,EAAS,CACZqB,SAAS,WAAD,8BAAE,WACRxyC,GADQ,UAAAvI,EAAA,yDAGAuI,EAHA,qBAIJsmB,KAAgB2oB,SAJZ,0BAKH7xB,aAAkBpd,GALf,qBAMJsmB,KAAgBsoB,yBANZ,wCAOIqO,GAAwBj9C,GAP5B,wCAQJ,8DARI,8BASJ,EATI,uHAAF,mDAAC,KAYXmT,KAAK,OACLjQ,SAAUxE,IAGZ,eAACwxC,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAOn3C,cAAe7F,GAChDqO,GAAE,gBAAW2uC,GAAOn3C,uBAO5B,uBAAKiD,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAjB,mBACA,uBAAKA,UAAU,4BAAf,UACE,0BACE,mCAA2Bk0C,GAAOiF,eAClC,eAAcjiD,EAAOiiD,cAAgB,OAAS,QAC9CrnD,KAAMoiD,GAAOiF,cACb7J,IAAKpB,EAAS,CACZqB,SAAU,SAAClW,GACT,OAAQyc,GAAaA,EAAUlhD,OAAS,EACpC,0CACCykC,GACDhW,KAAgB2oB,YAIxB/rC,SAAUxE,EAbZ,UAcE,yBAAQpG,MAAM,GAAd,oCAdF,OAeGygD,QAfH,IAeGA,OAfH,EAeGA,EAAW39C,KAAI,SAACkhC,GAAD,OACd,yBAEEhkC,MAAOyJ,KAAKC,UACVs6B,GAHJ,mBAISA,EAAMvnC,KAJf,aAIwBunC,EAAM4I,OAJ9B,MACO5I,EAAM5hC,eAOjB,eAACw1C,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAOiF,cAAejiD,GAChDqO,GAAE,gBAAW2uC,GAAOiF,uBAM1B,uBAAKn5C,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAjB,oBACA,uBAAKA,UAAU,oCAAf,UACE,uBAAKA,UAAU,qBAAf,UACE,wBACEA,UAAU,gBACV,mCAA2Bk0C,GAAO1kC,QAClC,eAActY,EAAOsY,OAAS,OAAS,QACvC1d,KAAMoiD,GAAO1kC,OACbo9B,SAAU,kBACRqB,EAASiG,GAAO1kC,OAAQxZ,YAAag4C,IAAYx+B,UAEnD8/B,IAAKpB,EAAS,CACZqB,SAAU,SAAC//B,GACT,IAAM0qC,EAAiB39C,OAAOjE,YAAkBkX,IAC1CgpC,EACJrC,GAAsBr3C,KAAK25C,MAAMtC,GAC7BgE,GACY,OAAhB3B,QAAgB,IAAhBA,OAAA,EAAAA,EAAkB/gD,WAAY1D,IAEhC,MAAkB,KAAXyb,EACH6T,KAAgB2oB,SAChBV,MAAM4O,GACN72B,KAAgByoB,eAChBoO,GAAkB,EAClB,oCACAA,EAAiB39C,OAAOy5C,GACxB,wBACAmE,MAEC59C,OAAOq5C,UAAUsE,IAClB,uDAIRhqC,KAAK,OACLjQ,SAAUxE,IAGZ,sBAAKuE,UAAU,qBAAf,SACIm2C,GACAr3C,KAAK25C,MAAMtC,GAAoBlU,QAC/B,WAIN,eAACgL,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAO1kC,OAAQtY,GACzCqO,GAAE,gBAAW2uC,GAAO1kC,UAGtB,sBAAKxP,UAAU,0BAAf,SACGk2C,EACG,kLACA,iGAIR,uBAAKl2C,UAAU,oBAAf,wBACa,gCAzMdg2C,EAIgBz5C,OAAOq5C,UAAUr5C,OAAOy5C,IAEzCA,EACAngD,YAAc0G,OAAOy5C,IANhB,cA6ML,uBAAKh2C,UAAU,qBAAf,UACE,wBAAOA,UAAU,wBAAjB,mBACA,sBAAKA,UAAU,4BAAf,SACE,2BACElO,KAAMoiD,GAAOkF,MACb/J,YAAY,0BACZC,IAAKpB,EACLjuC,SAAUxE,SAMhB,yBACEuE,UAAU,SACVC,SAAUxE,EACVyE,QAAO,wBAAE,uBAAA1L,EAAA,0DACHiH,EADG,iEAGK0yC,IAHL,kEAOPqB,GAAaxB,KAPN,2CAST99B,KAAK,SAZP,SAaG9U,EAAc,eAAC+E,GAAA,EAAD,IAAa5E,EAAS,OAAS,WAI/CE,GACC,sBAAKuE,UAAU,gCAAf,SArRR,WAEE,GACEtF,IAAa5B,KAAauC,kBAC1B2hB,IAA8BlkB,KAAauC,iBAE3C,MAAO,mCAIT,OAAQX,GACN,KAAK5B,KAAawC,QAChB,OACE,uCACE,eAACiF,GAAA,EAAD,CACEC,WAAY,IACZC,SAAUC,KACVC,mBAAiB,EACjBC,OAAQ,SAACzJ,GACP,OAAO,eAAC0J,GAAA,EAAD,UAAuB1J,GAAVA,MAIxB,eAAC2J,GAAA,EAAD,CAAcC,IAAKxG,EAAgByG,WAAS,OAGlD,KAAKlI,KAAa0C,UAChB,OACE,uCACE,uDAEA,eAACsF,GAAA,EAAD,CAAcC,IAAKxG,OAGzB,QACE,OAAO,MAmPF0G,KAKJm1C,GACC,sBAAKp2C,UAAU,+BAAf,SACE,eAACI,GAAA,EAAD,CACEE,WAAW,sDACXD,MAAO+1C,WAxMf,eAAC,GAAD,UACE,sBAAKp2C,UAAU,kCAAf,SACE,6BArCDquC,EAKDnhC,EACKA,EAAkB/V,QAItBga,OAAL,EACS,iEAVA,2DAmPb,SAASqiC,GAAch7C,GAKrB,OACE,eAAC,GAAD,CAAMwH,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,sBAAKb,UAAU,WAAf,SACE,qBAAIA,UAAU,kBAAd,iCAGF,uBAAKA,UAAU,eAAf,UACE,sBAAKA,UAAU,oBAAf,SACE,iOAQDxH,EAAMuV,iBCtuBF,SAASqsC,KAKtB,IAAM5c,EAAyBnkC,aAC7B,SAAC8Y,GAAD,uBAAuBA,EAAM5Y,iBAA7B,aAAuB,EAAiBikC,0BAOnCtwB,EAAqBF,eAArBE,kBACP,EAA2Che,eAApC+d,EAAP,EAAOA,UAAW7S,EAAlB,EAAkBA,QAASC,EAA3B,EAA2BA,aAC3B,EAKI0iB,eAJFmU,EADF,EACEA,aACA8I,EAFF,EAEEA,yBACAhd,EAHF,EAGEA,0BACAC,EAJF,EAIEA,oBAOI0wB,EAAOC,aAAoB,CAC/BC,KAAM,SACNC,eAAgB,aAEZwG,EAAUC,eAMhB,EAAsC17C,sBAAtC,oBAAOK,EAAP,KAAoBC,EAApB,KACA,EAAgDN,sBAAhD,oBAAOwhD,EAAP,KAAyBC,EAAzB,KACA,EAAwCzhD,sBAAxC,oBAAOqW,EAAP,KAAqBqrC,EAArB,KACA,EAA0C1hD,sBAA1C,oBAAO2hD,EAAP,KAAsBC,EAAtB,KAMOvjD,EAAyDy2C,EAAzDz2C,OAAQ82C,EAAiDL,EAAjDK,UAAWC,EAAsCN,EAAtCM,SAAUC,EAA4BP,EAA5BO,SAAUC,EAAkBR,EAAlBQ,QAASqG,EAAS7G,EAAT6G,MAEjDkG,EAAoBlG,EAAMN,GAAOyG,cAEjCC,EAAwBpG,EAAMN,GAAO2G,kBAErCC,EAAqB5hD,GAAe8gC,EAEpCqU,EAAcphC,GAAa7S,EAE3BgB,EACJ4hB,IAA8BlkB,KAAauC,kBAC3C2hB,IAA8BlkB,KAAawC,QAEvCC,EAASyhB,IAA8BlkB,KAAa0C,UAEpDC,EAAoBL,GAAeG,EAEzC,EAKI2hB,aAAkB09B,GAJpBz9B,EADF,EACEA,oBACAC,EAFF,EAEEA,yBACAC,EAHF,EAGEA,qBACAC,EAJF,EAIEA,iBAOIy9B,EAAyBhuC,wBA1Ee,6CA0Ee,CAC3D2tC,EACArgD,IAGI2gD,EAAwBjuC,wBA/EgB,6CA+Ea,CACzD3S,EACAogD,IAGIS,EAA4BluC,wBApFY,6CAoFqB,CACjE3S,EACAogD,IAtF4C,gDAkH9C,mCAAAhmD,EAAA,yDACO6F,GAAiBqgD,EADxB,uBAEID,OAAiBnmD,GAFrB,mDAO0C,6CAP1C,gBAOoB4mD,EAPpB,EAOWzkC,QAGD+jC,EAA2BU,EAC3BvhD,EAAW,IAAIU,EAAa0Z,IAAI4C,SACpC6jC,EACAE,GAEFD,EAAiB9gD,GAfrB,kDAiBIwW,QAAQ9P,MAAR,MACAo6C,OAAiBnmD,GAlBrB,2DAlH8C,sEAwI9C,+BAAAE,EAAA,yDACO4F,GAAYogD,EADnB,uBAEID,OAAgBjmD,GAFpB,mDAOyBkmD,EAAc5gD,QAAQqoC,SAAS7lC,OAPxD,cAOU6lC,EAPV,gBAQ2BuY,EAAc5gD,QAAQsoC,WAAW9lC,OAR5D,OAQU8lC,EARV,OASIqY,EAAgB,CAACtY,SAAQC,SAAU3lC,OAAO2lC,KAT9C,kDAWI/xB,QAAQ9P,MAAR,MACAk6C,OAAgBjmD,GAZpB,2DAxI8C,sEAwJ9C,yCAAAE,EAAA,yDACO4F,GAAYogD,EADnB,uBAEIF,OAAoBhmD,GAFxB,mDAO0BkmD,EAAc5gD,QAAQssB,UAAU9rB,GAASgC,OAPnE,cAOUkoC,EAPV,OAQUoU,EAAYpB,gBAAKhT,GAR3B,UAS2BkW,EAAc5gD,QAAQsoC,WAAW9lC,OAT5D,QASU8lC,EATV,OAUUyW,EAAUrB,gBAAK,IAAIsB,IAAItB,gBAAKpV,IAC5B2W,EAAgBH,EAAUI,IAAIH,GAC9BI,EAAeL,EAAUM,IAAIL,GAC7BM,EAAkBF,EAAaG,GAAG5B,gBAAK,IACzCuB,EAAc1iD,WADM,UAEjB0iD,EAAc1iD,WAFG,YAEW4iD,EAAa5iD,YAEhDmkD,EAAoBrB,GAjBxB,kDAmBI9oC,QAAQ9P,MAAR,MACAi6C,OAAoBhmD,GApBxB,2DAxJ8C,+BAgL/B6mD,KAhL+B,gFAgL9C,uBAAA3mD,EAAA,yDACOgpC,EADP,yCAEW,SAFX,gCAKmBA,EAAuB7jC,SAASC,QAAQqoC,SAAS7lC,OALpE,iFAOM+T,QAAQC,IAAR,MAPN,kBAQa,SARb,2DAhL8C,+BA6L/Bo/B,GA7L+B,mFA6L9C,WAA4BvyC,GAA5B,gDAAAzI,EAAA,kEAES65C,EAFT,sBAGY,IAAI3yC,MACR,yEAJR,UAQStB,EART,sBASY,IAAIsB,MAAM,qBATtB,UAYS8+C,EAZT,sBAaY,IAAI9+C,MAAM,2BAbtB,UAgBSwT,EAhBT,sBAiBY,IAAIxT,MAAM,2BAjBtB,UAoBQyhB,GAIFhN,QAAQuJ,KAAR,4DACuDyD,EAAoBhmB,UAK3EkmB,IAAyBlc,KAAY3F,WACpC8hB,IACDF,EAhCN,uBAkCY,IAAI1hB,MAAM0hB,GAlCtB,WAsCMy9B,EAKE59C,EALF49C,iBACAF,EAIE19C,EAJF09C,aACAlF,EAGEx4C,EAHFw4C,cACA2F,EAEEn+C,EAFFm+C,cACArpD,EACEkL,EADFlL,YAEIwnD,EAAajC,gBAAK,IAAIsB,IAAItB,gBAAKpoC,EAAagzB,WAC5CmZ,EAA4B/D,gBAChCh/C,YAAkBm9C,IAClBgE,IAAIF,GACA+B,EAAmBhjD,YAAkB8iD,GACrCjsC,EAA6BC,6BAAkByrC,GAC/CtF,EAA4BnmC,6BAAkBhV,GAGhDiD,GAAiC,OAAZ6zB,QAAY,IAAZA,OAAA,EAAAA,EAAc2I,WAAY,GArDvD,wBAyDY6f,EACJtiD,YAAgByjD,KAAsBzjD,YAAgBgD,GAAtD,uBACoBoJ,YACd2L,EACA,GAHN,4BAKoB3L,YACd+xC,EACA,GAPN,0BAQuB/xC,YACjB2L,EACA,GAVN,KAYIQ,EAAO5d,EAAW,UAAM2nD,EAAN,aAAoB3nD,GAAgB2nD,EAtElE,KA6EQ0B,EA7ER,UA8EiCD,KA9EjC,gCA+EQ1F,EA/ER,KAgF2BvmC,EAAa+yB,OAJ5BuT,EA5EZ,CA6EQ4F,cA7ER,KA8EQG,kBA9ER,KA+EQ9F,cA/ER,KAgFQC,kBAhFR,MAqFYh4B,EAA0C,CAC9CvO,EACAtb,IACAynD,EACAlsC,6BAAkBurC,GAClBU,EAA0BllD,WAC1Bo/C,GA3FR,UA+F+Bt4B,EAAoB,CAC3Cc,oBAAqB,CACnBjsB,KAAMqd,EACNQ,OACAxS,SAAU,CACRq4C,uBACA93B,mBACAi4B,yCACEJ,IAGN98C,YAAa2e,KAAqBc,QAClChI,KAAM8N,gBAAaiT,QA3G3B,iBA+Fa4I,EA/Fb,EA+FaA,SAePx8B,EAAaw8B,EA9GnB,QAkHIya,EAAQ1K,KAAR,oBAA0BvsC,IAlH9B,kDAqHIlE,EAAe,EAAD,IArHlB,2DA7L8C,sBAyW9C,OA5QAoK,sBAAU,WACRw3C,MACC,CAACA,IAEJx3C,sBAAU,WACRy3C,MACC,CAACA,IAEJz3C,sBAAU,WACR03C,MACC,CAACA,IAGJ13C,sBAAU,WACR0qC,EAASiG,GAAO2G,iBAAkBzgD,KACjC,CAACA,EAAS6zC,KA6PRI,GAAenhC,EAEhB,eAAC,GAAD,UACE,sBAAKlN,UAAU,kCAAf,SACE,6BAnBDquC,EAKDnhC,EACKA,EAAkB/V,aAD3B,EAJS,0DAyBT,eAAC,GAAD,UACE,wBAAM6I,UAAU,OAAOmvC,SAAU,SAAC1d,GAAD,OAAOA,EAAEh8B,kBAA1C,UAEE,uBAAKuK,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAjB,+BACA,uBAAKA,UAAU,4BAAf,UAEE,wBACE,mCAA2Bk0C,GAAO2G,kBAClC,eAAc3jD,EAAO2jD,iBAAmB,OAAS,QACjD/oD,KAAMoiD,GAAO2G,iBACbvL,IAAKpB,EAAS,CACZqB,SAAU,SAACsL,GACT,OAAQA,IAEH1gC,aAAkB0gC,IACnBx3B,KAAgBsoB,yBAFhBtoB,KAAgB2oB,YAMxB97B,KAAK,OACLjQ,SAAUxE,IAGZ,eAACwxC,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAO2G,iBAAkB3jD,GACnDqO,GAAE,gBAAW2uC,GAAO2G,0BAM1B,uBAAK76C,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAjB,2BACA,uBAAKA,UAAU,4BAAf,UACE,wBACE,mCAA2Bk0C,GAAOyG,cAClC,eAAczjD,EAAOyjD,aAAe,OAAS,QAC7C7oD,KAAMoiD,GAAOyG,aACbrL,IAAKpB,EAAS,CACZqB,SAAU,SAACoL,GACT,OAAQA,IAEHxgC,aAAkBwgC,IACnBt3B,KAAgBsoB,yBAFhBtoB,KAAgB2oB,YAMxB97B,KAAK,OACLjQ,SAAUxE,IAGZ,eAACwxC,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAOyG,aAAczjD,GAC/CqO,GAAE,gBAAW2uC,GAAOyG,sBAM1B,uBAAK36C,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAjB,oBACA,uBAAKA,UAAU,oCAAf,UACE,uBAAKA,UAAU,qBAAf,UACE,wBACEA,UAAU,gBACV,mCAA2Bk0C,GAAOuB,eAClC,eAAcv+C,EAAOu+C,cAAgB,OAAS,QAC9C3jD,KAAMoiD,GAAOuB,cACb7I,SAAU,kBACRqB,EACEiG,GAAOuB,cACPz/C,YAAag4C,IAAYyH,iBAG7BnG,IAAKpB,EAAS,CACZqB,SAAU,SAACkG,GACT,IAAMjmC,EAASjT,OAAOjE,YAAkBm9C,IAExC,MAAyB,KAAlBA,EACHpyB,KAAgB2oB,SAChBV,MAAM97B,GACN6T,KAAgByoB,eAChBt8B,GAAU,EACV,oCACAA,EAASjT,OAAO89C,GAChB,wBACC99C,OAAOq5C,UAAUpmC,IAClB,sDAIRU,KAAK,OACLjQ,SAAUxE,IAGZ,sBAAKuE,UAAU,qBAAf,UACe,OAAZkP,QAAY,IAAZA,OAAA,EAAAA,EAAc+yB,SAAU,WAI7B,eAACgL,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAOuB,cAAev+C,GAChDqO,GAAE,gBAAW2uC,GAAOuB,iBAGtB,sBAAKz1C,UAAU,0BAAf,6MAOF,uBAAKA,UAAU,oBAAf,wBACa,gCAxJdq6C,EAIgB99C,OAAOq5C,UAAUr5C,OAAO89C,IAEzCA,EACAxkD,YAAc0G,OAAO89C,IANhB,cA4JL,uBAAKr6C,UAAU,kBAAf,UACE,wBAAOA,UAAU,wBAAjB,4BACA,uBAAKA,UAAU,oCAAf,UACE,wBACE,mCAA2Bk0C,GAAOkH,eAClC,eAAclkD,EAAOkkD,cAAgB,OAAS,QAC9CtpD,KAAMoiD,GAAOkH,cACbxO,SAAU,kBACRqB,EACEiG,GAAOkH,cACPplD,YAAag4C,IAAYoN,iBAG7B9L,IAAKpB,EAAS,CACZqB,SAAU,SAAC6L,GACT,IAAM5rC,EAASjT,OAAOjE,YAAkB8iD,IAExC,MAAyB,KAAlBA,EACH/3B,KAAgB2oB,SAChBV,MAAM97B,GACN6T,KAAgByoB,iBAChBt8B,EAAS,IACT,mCAIRU,KAAK,OACLjQ,SAAUxE,IAGZ,eAACwxC,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAOkH,cAAelkD,GAChDqO,GAAE,gBAAW2uC,GAAOkH,iBAGtB,sBAAKp7C,UAAU,0BAAf,iJAQJ,uBAAKA,UAAU,qBAAf,UACE,wBAAOA,UAAU,wBAAjB,yBACA,sBAAKA,UAAU,4BAAf,SACE,2BACElO,KAAMoiD,GAAOniD,YACbs9C,YAAY,sCACZC,IAAKpB,EACLjuC,SAAUxE,SAMhB,yBACEuE,UAAU,SACVC,SAAUxE,EACVyE,QAAO,wBAAE,uBAAA1L,EAAA,0DACHiH,EADG,iEAGK0yC,IAHL,kEAOPqB,GAAaxB,KAPN,2CAST99B,KAAK,SAZP,SAaG9U,EAAc,eAAC+E,GAAA,EAAD,IAAa5E,EAAS,OAAS,WAI/CE,GACC,sBAAKuE,UAAU,gCAAf,SA/PR,WACE,OAAQgd,GACN,KAAKlkB,KAAauC,iBAChB,OACE,oEAEE,eAAC,KAAD,CAAemF,WAAY,SAGjC,KAAK1H,KAAawC,QAChB,OACE,oDAEE,eAAC,KAAD,CAAekF,WAAY,SAGjC,KAAK1H,KAAa0C,UAChB,MAAO,QACT,QACE,MAAO,IA6OFyF,KAKJ65C,GACC,sBAAK96C,UAAU,+BAAf,SACE,eAACI,GAAA,EAAD,CACEE,WAAW,sDACXD,MAAOy6C,WASrB,SAAStH,GAAch7C,GAKrB,OACE,eAAC,GAAD,CAAMwH,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,sBAAKb,UAAU,WAAf,SACE,qBAAIA,UAAU,kBAAd,gCAGF,uBAAKA,UAAU,eAAf,UACE,sBAAKA,UAAU,oBAAf,SACE,iOAQDxH,EAAMuV,kB,SDpnBZmmC,K,YAAAA,E,8BAAAA,E,8BAAAA,E,gBAAAA,E,eAAAA,Q,cCRAA,K,oCAAAA,E,4BAAAA,E,8BAAAA,E,8BAAAA,E,2BAAAA,Q,8BCvBCsH,I,OAAcC,iBAAK,WACvB,OACE,uBACEz7C,UAAU,OACV,cAAY,OACZ,WAAS,UACT,iBAAe,MAJjB,UAKE,sBAAKA,UAAU,uBACf,sBAAKA,UAAU,wBACf,sBAAKA,UAAU,gCAKrB,SAAS07C,KACP,OACE,uBAAK,cAAY,qBAAqB17C,UAAU,kBAAhD,UACE,eAACggC,GAAD,IACA,eAAC+E,GAAD,OAKS,SAAS4W,KAKtB,IAAMrH,EAAUC,eAoBhB,OAdAhxC,sBAAU,WACRq4C,KAAIC,KAAK,CACPn1C,SAAU,IACVo1C,OAAQ,GACRC,MAAO,IACPC,QAAQ,EACRC,MAAM,MAEP,IAOD,uCACE,eAACP,GAAD,IACA,eAAC,GAAD,CAAM17C,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,eAACsgC,GAAD,IAEA,uBAAKnhC,UAAU,UAAf,UACE,sBAAKA,UAAU,oBAAf,6CAIA,sBAAKA,UAAU,eAAf,SACE,eAACw7C,GAAD,MAGF,sBAAKx7C,UAAU,kBAAf,SACE,yBACEA,UAAU,SACVE,QAAS,WACPo0C,EAAQ1K,KAAK,UAHjB,+B,cC9DP,SAASsS,GAAkB1jD,GAAgC,IAAD,EACxDE,EAAYF,EAAZE,SACAE,EAAoBF,EAApBE,iBAEDujD,EAC+C,IAAnD5/C,QAAuB,OAAhB3D,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBmD,IAAIC,QAAQkgB,QAAS,GAE1CkgC,EAC6C,IAAjD7/C,QAAuB,OAAhB3D,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBmD,IAAIC,QAAQogB,MAAO,GAM9C,EACEvjB,oBAAoC,CAClCwO,kBAAkB,EAClBxB,gBAAgB,EAChB0B,yBAAyB,IAJ7B,oBAAO80C,EAAP,KAAyBC,EAAzB,KAWOpuB,EAAyB1B,aAAyB5zB,GAAlDs1B,sBAMDquB,EAAmCxvC,wBAkBzC,SACEyvC,GAEAF,EAAoBE,KAnBpB,IAOIt1C,EAAY,UAAGgnB,EAAsB,UAAzB,aAAG,EAA2B,GAEzCroB,EACLw2C,EADKx2C,eAAgBwB,EACrBg1C,EADqBh1C,iBAAkBE,EACvC80C,EADuC90C,wBAiBzC,OACE,uCACE,eAAC,KAAD,CACET,qBAAsBs1C,EACtBr1C,uBAAwBo1C,EACxBl1C,qBAAsBs1C,EACtBr1C,aAAcA,IAGfK,GAA2BF,IAAqBxB,GAC/C,eAAC,KAAD,CAAsBnN,SAAUA,O,aC9EzB,SAAS+jD,KACtB,OACE,eAAC,GAAD,CAAMz8C,UAAU,kBAAhB,SACE,eAACa,GAAA,EAAD,UACE,sBAAK4H,MAAO,CAACi0C,UAAW,SAAUC,SAAU,QAA5C,SACE,oCAEE,uBACE38C,UAAU,QACVqG,KAAK,MACL,aAAW,iBACXoC,MAAO,CAAC5W,QAAS,gBAJnB,0BAFF,aCOK,SAAS+qD,GAAgBpkD,GACtC,IAAOE,EAA8CF,EAA9CE,SAAUmkD,EAAoCrkD,EAApCqkD,kBAAmBvQ,EAAiB9zC,EAAjB8zC,cAE9BlS,EAAa1hC,EAASy4B,gCAM5B,OAAKiJ,EAKH,uCACE,sBAAKp6B,UAAU,0BAAf,8BACA,uBAAKA,UAAU,kBAAf,UAEE,uBAAKA,UAAU,2BAAf,UACE,8BAEGwD,YAAmB42B,EAAWr+B,IAAIC,QAAQlK,MAAQ,GAAI,KAGzD,eAAC,KAAD,UAAWsoC,EAAWr+B,IAAIC,QAAQ2T,UAIpC,uBAAK3P,UAAU,0BAAf,UAEG68C,GAAqBA,IAGrBvQ,aAvBA,KCZI,SAASwQ,KAMtB,IAAOz/C,EAAc0/C,eAAd1/C,WAMP,EACEsyB,aAAmBtyB,EAAY2gB,gBAAatlB,UADvCw4B,EAAP,EAAOA,aAAcjB,EAArB,EAAqBA,cAAeF,EAApC,EAAoCA,iBAAkBI,EAAtD,EAAsDA,eAG/CjjB,EAAqBF,eAArBE,kBAOD7M,EAA2B4vB,GAAiB/iB,EAOlD,OAR2BijB,IAAmBhvB,KAAY7F,UAQxC+E,EAEd,eAAC,GAAD,UACE,sBAAKL,UAAU,0BAAf,SACE,eAACs8B,GAAA,EAAD,QAOJvM,EAEA,eAAC,GAAD,UACE,eAAC0sB,GAAD,MAMFp8C,EAEA,eAAC,GAAD,UACE,sBAAKL,UAAU,cAAf,SACE,eAACI,GAAA,EAAD,CACEC,MAAOA,EACPC,WAAW,yDAQjB4wB,EAEA,eAAC,GAAD,UACE,eAAC0rB,GAAD,CACElkD,SAAUw4B,EACVob,cAAe,kBAAM,eAAC4P,GAAD,CAAmBxjD,SAAUw4B,SAOnD,+BAGT,SAASsiB,GAAch7C,GAKrB,IAAM87C,EAAUC,eAgBhB,OACE,eAAC,GAAD,CAAMv0C,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,uBAAKb,UAAU,WAAf,UACE,qBAAIA,UAAU,kBAAd,wBAEA,yBAAQA,UAAU,mBAAmBE,QAhB7C,SAAiB1K,GACfA,EAAMC,iBAEN6+C,EAAQ1K,KAAK,gBAaP,yBAMDpxC,EAAMuV,c,wBChGTivC,GAA8B,gBAE9BC,G,OAAqBC,KAAgBC,MAQ5B,SAASC,GAAa5kD,GACnC,MAOIA,EANF6kD,kBADF,MACeL,GADf,EAEEM,EAKE9kD,EALF8kD,kBACAC,EAIE/kD,EAJF+kD,SACAr9C,EAGE1H,EAHF0H,QACApO,EAEE0G,EAFF1G,KACAiU,EACEvN,EADFuN,aAOKq8B,EAAYmS,eAAZnS,SAMD1B,EAAyC,MAAtB0B,EAAS1B,SAAmB,GAAK0B,EAAS1B,SAE7D/wC,EACgB,oBAAb4tD,EACHA,EAASD,GACTC,GAAQ,UAAO7c,EAAP,YAAmB4c,GA8BjC,OACE,eAAC,IAAD,CAAMt9C,UAAU,qBAAqB8kC,GAAIn1C,EAAMuQ,QAzBjD,WACS,OAAPA,QAAO,IAAPA,KAAUo9C,IAwBV,SACE,uBAAKt9C,UAAU,eAAf,UAEE,qBAAIA,UAAU,sBAAd,SAxBN,SAAoBlO,GAClB,OAAIqoB,aAAkBroB,GACb0R,YAAmB1R,EAAM,GAG9B,eAACmrD,GAAD,CACEzzB,KAAM13B,EACN0rD,QAAS,EACTC,SAAS,MACTC,WAAS,EACTC,QAAQ,YAc2BC,CAAW9rD,KAG/CiU,GAAgBA,IAOjB,yBAAQ/F,UAAU,uBAAlB,SACGq9C,GAAcL,UCjEV,SAASa,GACtBrlD,GAEA,MAKIA,EAJFsF,gBADF,MACa2T,KADb,IAKIjZ,EAHFslD,uBAFF,MAEoB,aAFpB,EAGEC,EAEEvlD,EAFFulD,iBACAC,EACExlD,EADFwlD,mBAOF,EAAkEnlD,oBAEhE,IAFF,oBAAOolD,EAAP,KAAkCC,EAAlC,KAGA,EAAkDrlD,oBAChD,CACEslD,gBAAiB,GACjBC,gBAAiB,GACjBC,gBAAiB,KAJrB,oBAAOC,EAAP,KAA0BC,EAA1B,KAYA,EC/CK,YAI2B,IAAD,IAH/BzgD,gBAG+B,MAHpB2T,KAGoB,EAK/B,EAAsD5Y,oBAEpD,IAFF,oBAAO2lD,EAAP,KAA4BC,EAA5B,KAGA,EACE5lD,sBADF,oBAAO6lD,EAAP,KAAiCC,EAAjC,KAEA,EACE9lD,oBAAsBsI,KAAYpI,SADpC,oBAAO6lD,EAAP,KAAkCC,EAAlC,KAOOh0C,EAAgB8C,eAAhB9C,aAMDi0C,EAA2B/xC,wBAvBF,4CAuBkC,CAC/DjP,EACA+M,IAzB6B,SA2ChBk0C,EA3CgB,gFA2C/B,WACEjhD,GADF,oBAAAtJ,EAAA,sEAIUo9B,EAJV,UAIuBjhC,IAJvB,gBAImDqD,KAJnD,SAM4BgX,MAAM,GAAD,OACxB4mB,EADwB,sBACH9zB,EADG,uBANjC,WAMUwuB,EANV,QAUmBnhB,GAVnB,sBAWY,IAAIzP,MACR,+DAZR,uBAgB0D4wB,EAAUlhB,OAhBpE,cAgBU8mB,EAhBV,yBAwBWh9B,OAAOC,QAAQ+8B,GAAe/5B,KACnC,oCAAEoN,EAAF,KAAM3M,EAAN,WAA2C,CACzCg3B,iBAAat7B,EACbunB,mBAAevnB,EACfsE,iBAAiB,2BACZA,GADW,IAEdkK,aAAcyC,EACd1J,QAAS,KAEXs1B,8BAA+B,aAC/B9vB,uBAAwB,aACxB2vB,aAAchT,gBAAatlB,cAnCnC,wGA3C+B,oEAsF/B,6BAAAlE,EAAA,sEAEIqqD,EAA6B19C,KAAY7F,SAF7C,SAI0CyjD,EACpCjhD,GALN,UAIU22B,EAJV,OAQS5pB,EAAavH,QARtB,iDAUIu7C,EAA6B19C,KAAY3F,WACzCijD,EAAuBhqB,GAX3B,qDAaS5pB,EAAavH,QAbtB,mDAeIu7C,EAA6B19C,KAAYpB,UACzC0+C,EAAuB,IACvBE,EAA4B,EAAD,IAjB/B,2DAtF+B,sBA2G/B,OA3EAp7C,sBAAU,WACRu7C,MACC,CAACA,IAyEG,CACLN,sBACAE,2BACAE,6BD/DEI,CAAuB,CACzBlhD,aAJA0gD,EADF,EACEA,oBACAE,EAFF,EAEEA,yBACAE,EAHF,EAGEA,0BAKF,EAIIpyB,aAAyByxB,GAH3B/vB,EADF,EACEA,sBACAnB,EAFF,EAEEA,2BACAF,EAHF,EAGEA,4BAGK3f,EAAqBF,eAArBE,kBAMAixC,EAAqDG,EAArDH,gBAAiBC,EAAoCE,EAApCF,gBAAiBC,EAAmBC,EAAnBD,gBAEnCjM,EACJwM,IAA8Bz9C,KAAYpI,SAC1C6lD,IAA8Bz9C,KAAY7F,SAEzCuxB,IAAgC1rB,KAAYpI,SAC3CklD,EAA0BrpD,OAAS,GACrCi4B,IAAgC1rB,KAAY7F,QAExC+E,EACJq+C,GAA4B3xB,GAA8B7f,EAqE5D,SAAS+xC,EACP3yB,GAEA,OAAOA,EAAUn0B,KAAI,SAACO,GAAc,IAAD,EAC1BE,EAAoBF,EAApBE,iBACDyE,EAAU,OAAGzE,QAAH,IAAGA,OAAH,EAAGA,EAAkBkK,aAC/BkZ,GAA+B,OAAhBpjB,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBmD,IAAIC,QAAQlK,OAAQ,GAErDqqD,EAC+C,IAAnD5/C,QAAuB,OAAhB3D,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBmD,IAAIC,QAAQkgB,QAAS,GAE1CkgC,EAC6C,IAAjD7/C,QAAuB,OAAhB3D,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBmD,IAAIC,QAAQogB,MAAO,GAE9C,IAAK/e,EAAY,OAAO,KAExB,IAAM6hD,EAAc,UAAGhxB,EAAsBn0B,MAC3C,oCAAE6B,EAAF,iBACExE,YAAgBwE,KAAkBxE,YAAgBiG,aAFlC,aAAG,EAGnB,GAEJ,OAAI2gD,EAEA,eAAC,YAAD,UACGA,EAAmB,CAClB9sB,aAAcx4B,EACdwO,aAAcg4C,KAHH7hD,GAUjB,eAAC+/C,GAAD,CAEEtrD,KAAMkqB,EACNuhC,SAAUQ,EACV79C,QAAS49C,EACTR,kBAAmBjgD,EACnB0I,aAAc,kBACZ,eAAC,KAAD,CACEmB,aAAcg4C,EACdp4C,qBAAsBs1C,EACtBr1C,uBAAwBo1C,MATvB9+C,MAsBb,OAvHAkG,sBAAU,WACR26C,EACEM,EAAoBrmD,KAAI,SAACgnD,GAAD,OAAQA,EAAGvmD,uBAEpC,CAAC4lD,IAGJj7C,sBAAU,WACR,GAAIq7C,IAA8Bz9C,KAAY3F,UAA9C,CAEA,IAAM4jD,EAA4C,CAChDjB,gBAAiB,GACjBC,gBAAiB,GACjBC,gBAAiB,IAGnBG,EAAoBhxB,SAAQ,SAACI,GAAO,IAAD,IAKjC,KAJY,UAAAA,EAAEh1B,wBAAF,eAAoBmD,IAAIC,QAAQogB,MAAO,GACxB3nB,KAAKw0B,KAAKnyB,KAAKiyB,MAAQ,KAGlD,CAMA,IAAMm2B,EAAc,UAAGhxB,EAAsBn0B,MAC3C,sCAAE6B,EAAF,iBACExE,YAAgBwE,KAChBxE,aAAgB,UAAAw2B,EAAEh1B,wBAAF,eAAoBkK,eAAgB,cAHpC,aAAG,EAInB,GAGEu8C,IAAiCH,GACnCA,EAAevhD,IAAImK,MAAQo3C,EAAer3C,GAAGC,MAI7Cu3C,EACFD,EAAuBhB,gBAAgBxU,KAAKhc,GAMzCyxB,GACHD,EAAuBjB,gBAAgBvU,KAAKhc,QAzB5CwxB,EAAuBf,gBAAgBzU,KAAKhc,MA+BhD2wB,GAAqB,SAAC3d,GAAD,mBAAC,eACjBA,GACAwe,SAEJ,CAACZ,EAAqBI,EAA2B1wB,IA8DhDkkB,IAAc/xC,EAEd,sBAAKL,UAAU,0BAAf,SACE,eAACs8B,GAAA,EAAD,MAOHkiB,EAAoB5pD,QACpBM,OAAO+H,OAAOqhD,GAAmBgB,SAAQ,SAAC1xB,GAAD,OAAOA,KAAGh5B,QACpDgqD,IAA8Bz9C,KAAY3F,UAMxC6E,EAEA,sBAAKL,UAAU,cAAf,SACE,eAACI,GAAA,EAAD,CACEC,MAAOA,EACPC,WAAW,wDAOjB,uBAAKN,UAAU,6BAAf,UAEGq+C,EAAgBzpD,OAAS,GACxB,uCACE,sBAAKoL,UAAU,eAAf,SAA+BsjB,KAAoB6jB,SACnD,sBAAKnnC,UAAU,cAAf,SACGi/C,EAAoBZ,QAM1BD,EAAgBxpD,OAAS,GACxB,uCACE,sBAAKoL,UAAU,eAAf,SAA+BsjB,KAAoBi8B,SACnD,sBAAKv/C,UAAU,cAAf,SACGi/C,EAAoBb,QAM1BD,EAAgBvpD,OAAS,GACxB,uCACE,sBAAKoL,UAAU,eAAf,SAA+BsjB,KAAoBk8B,SACnD,sBAAKx/C,UAAU,cAAf,SACGi/C,EAAoBd,WA1CtB,oBAAGn+C,UAAU,cAAb,gCE5OI,SAASy/C,KAatB,OACE,eAAC,GAAD,UACE,eAAC5B,GAAD,CACE//C,SAAU2T,KACVssC,iBAZN,SAA0Bx4C,GACxB,MAAM,eAAN,OAAsBA,QAiB1B,SAASiuC,GAAch7C,GAKrB,IAAM87C,EAAUC,eAehB,OACE,eAAC,GAAD,CAAMv0C,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,uBAAKb,UAAU,WAAf,UACE,qBAAIA,UAAU,kBAAd,wBACA,yBAAQA,UAAU,mBAAmBE,QAd7C,SAAyB1K,GACvBA,EAAMC,iBACN6+C,EAAQ1K,KAAK,yBAYP,6BAMDpxC,EAAMuV,c,wCClCA,SAAS2xC,KAKtB,IAAMxlD,EAAsBb,aAC1B,SAAC8Y,GAAD,OAAuBA,EAAM5Y,UAAUW,uBAEnCV,EAAwBH,aAC5B,SAAC8Y,GAAD,OAAuBA,EAAM5Y,UAAUC,yBAEnCgsB,EAAwBnsB,aAC5B,SAAC8Y,GAAD,OAAuBA,EAAMqT,sBAAsBC,UAO9CprB,EAAgBnL,eAAhBmL,aAMP,EACEypB,aAAa4Y,IAAa,CACxB1Y,UAAW,CACThmB,WAAU,OAAE9D,QAAF,IAAEA,OAAF,EAAEA,EAAqBT,gBAAgBnC,iBAHvD,oBAAOqoD,EAAP,YAAsCz7B,EAAtC,EAAsCA,OAAQC,EAA9C,EAA8CA,QAASlG,EAAvD,EAAuDA,KAAM5d,EAA7D,EAA6DA,MAW7D,EAA8BxH,oBAAmB,IAAjD,oBAAO+mD,EAAP,KAAgBC,EAAhB,KACA,EAA0ChnD,oBACxCsI,KAAYpI,SADd,oBAAO+mD,EAAP,KAAsBC,EAAtB,KAGA,EAAwClnD,sBAAxC,oBAAOmnD,EAAP,KAAqBC,EAArB,KAMMC,EAA+BnzC,wBA9CgB,4CA8CoB,CACvEvT,EACAU,EACAG,IAGI8lD,EAA+BpzC,wBAuCrC,WACE,IAGE,GAFAgzC,EAAiB5+C,KAAY7F,UAExB6oB,GAAWlG,EAAM,CAEpB,IAMMmiC,EANYniC,EAAKwG,YAAY,GAA5Bm7B,QAGyBrrD,QAC9B,SAAC8vC,GAAD,OAAkCA,EAAOgc,oBAEQloD,KACjD,SAACksC,GAEwDA,EAAhDic,UAAgDjc,EAArCgc,iBAAlB,IAAuCE,EAAvC,YAAuDlc,EAAvD,IAEA,OAAO,2BACFkc,GADL,IAGE9oD,QAAS2X,6BAAkBi1B,EAAO5sC,SAClCwK,YAAamN,6BAAkBi1B,EAAOpiC,kBAK5C89C,EAAiB5+C,KAAY3F,WAC7BqkD,EAAWO,QAEX,GAAI//C,EACF,MAAM,IAAI3E,MAAM2E,EAAMlJ,SAG1B,MAAOkJ,GAGP8P,QAAQC,IAAR,gCAAqC/P,EAAMlJ,UAC3C+oD,OA5EqE,CACvEjiC,EACA5d,EACA6/C,EACA/7B,IAxDmD,8CAoIrD,6DAAA3vB,EAAA,yDACO0F,GAAwBV,GAA0Ba,EADzD,iEAMI0lD,EAAiB5+C,KAAY7F,SAGtBupB,EAGH3qB,EAHFJ,IACiBG,EAEfC,EAFFT,gBACoBkX,EAClBzW,EADFP,SAAWC,QAXjB,SAc4B+W,EAAmB6vC,eAAepkD,OAd9D,UAcUqkD,EAdV,SAgBQlkD,OAAOkkD,GAAa,GAhB5B,wBAkBYtmD,EAAsB0qB,EAAe9qB,MACzC,SAACkxB,GAAD,MAAwB,qBAAdA,EAAKn5B,QAEXwK,EAAwB,YAAIpE,MAAMqE,OAAOkkD,IAAY1yB,QAAQ51B,KACjE,SAAC2+C,GAAD,MAA2B,CACzB78C,EACAE,EACA,CAAC28C,EAAM3gD,gBAzBjB,UA4B8CsG,aAAU,CAChDC,MAAOJ,EACPjC,iBA9BR,eA4BYsC,EA5BZ,OAkCY+jD,EAAmC77B,EAAe9qB,MACtD,SAACkxB,GAAD,MAAwB,kCAAdA,EAAKn5B,QAEX6uD,EAAqChkD,EAAgBxE,KACzD,SAACV,GAAD,MAA6B,CAC3BwC,EACAymD,EACA,CAACjpD,OAzCX,UA4C4DgF,aAAU,CAC9DC,MAAOikD,EACPtmD,iBA9CR,eA4CYumD,EA5CZ,OAkDkBn0B,EACVjzB,EADKM,IAA+B4yB,EACpClzB,EADmBC,gBAGfu9C,EAAevqB,EAAQ1yB,MAAK,SAACkxB,GAAD,MAAwB,cAAdA,EAAKn5B,QAC3C+uD,EAAsBD,EAA8BzoD,KACxD,SAACV,GAAD,MAA6B,CAC3Bi1B,EACAsqB,EACA,CAACv/C,EAAS5D,SA1DpB,UA6D4C4I,aAAU,CAC9CC,MAAOmkD,EACPxmD,iBA/DR,QA6DYymD,EA7DZ,OAkEYC,EAAqBpkD,EAAgBxE,KAAI,SAACV,EAASq/C,GAAV,MAAqB,CAClEr/C,UACAwK,YAAa2+C,EAA8B9J,GAC3CkK,YACE5pD,YAAgBK,KAChBL,YAAgBwpD,EAA8B9J,IAChDhvC,MAAOg5C,EAAchK,OAKjBsJ,EAA6BW,EAChCxsD,QAAO,SAAC8vC,GAAD,OAAYiT,gBAAKjT,EAAOv8B,OAAOyvC,GAAGD,gBAAK,OAG9C2J,UAEHpB,EAAWO,GAnFjB,QAsFIL,EAAiB5+C,KAAY3F,WAtFjC,kDAwFIukD,EAAiB5+C,KAAYpB,UAC7B8/C,EAAW,IACXI,EAAgB,EAAD,IA1FnB,2DApIqD,sBAkOrD,OAnKA18C,sBAAU,WACH2gB,GACHy7B,MAED,CAACz7B,EAAQy7B,IAEZp8C,sBAAU,WACJiiB,IAA0BW,KAAsB1nB,IAC7C0lB,IAAD,OAAYjqB,QAAZ,IAAYA,OAAZ,EAAYA,EAAqBT,kBACnC0mD,IAKFD,MAED,QACDhmD,QADC,IACDA,OADC,EACDA,EAAqBT,gBACrBymD,EACAC,EACAh8B,EACAqB,IA8IK,CAACo6B,UAASI,eAAcF,iB,ICjO5BoB,GAKAC,GAKAjN,G,UCrCU,SAASkN,GAAQ5oD,GAC9B,OACE,8CACE,cAAY,OACZ6oD,UAAU,QACV,YAAU,OACVh7C,KAAK,MACL/W,MAAM,6BACNC,QAAQ,eACJiJ,GAPN,aAQE,uBACEhJ,KAAK,eACLC,EAAE,ogBCZK,SAAS6xD,GAAU9oD,GAChC,OACE,8CACE,cAAY,OACZ6oD,UAAU,QACV,YAAU,SACVh7C,KAAK,MACL/W,MAAM,6BACNC,QAAQ,eACJiJ,GAPN,aAQE,uBACEhJ,KAAK,eACLC,EAAE,0SCCK,SAAS8xD,GAAT,GAEiB,IAD9B7f,EAC6B,EAD7BA,gBAC6B,8CAK7B,uBAAAltC,EAAA,yDACOktC,EADP,0EAIU1sC,OAAO+a,SAASC,QAAQ,CAC5BN,OAAQ,oBACRO,OAAQ,CACNC,KAAM,QACN/d,QAASuvC,KARjB,uDAYIvxB,QAAQC,IAAR,MAZJ,0DAL6B,sBA4C7B,OAAIsxB,EAEA,2CACS,gCAAOl+B,aAAmBk+B,EAAgBjqC,QAAS,KAC1D,sBAAKuI,UAAU,oBAAf,SACE,0BACEA,UAAU,mBACVE,QA9BV,WACE,GAAKwhC,EAAL,CAEA,IAAM8f,EAAWC,SAASC,cAAc,SACxCD,SAAS9xC,KAAKgyC,YAAYH,GAC1BA,EAASI,aAAa,QAASlgB,EAAgBjqC,SAC/C+pD,EAASK,SACTJ,SAASK,YAAY,QACrBL,SAAS9xC,KAAKoyC,YAAYP,GAEVC,SAASO,eAAe,eACfC,UAAY,YAoB7BC,aAjBV,WACkBT,SAASO,eAAe,eACfC,UAAY,gBAY/B,UAIE,uBAAMjiD,UAAU,wBAAwBuF,GAAG,cAA3C,0BAGA,eAAC67C,GAAD,SAGJ,sBAAKphD,UAAU,oBAAf,SACE,0BAAQA,UAAU,mBAAmBE,QA5DhB,2CA4DrB,UACE,uBAAMF,UAAU,wBAAhB,2BACA,eAAC,GAAD,YAOH,+BCpFM,SAASmiD,GAAQ3pD,GAC9B,OACE,8CACE,cAAY,OACZ6oD,UAAU,QACV,YAAU,OACVh7C,KAAK,MACL/W,MAAM,6BACNC,QAAQ,eACJiJ,GAPN,aAQE,uBACEhJ,KAAK,eACLC,EAAE,icJkDV,SAAS2yD,GAAT,GAIuC,IAHrCp0C,EAGoC,EAHpCA,OACAs/B,EAEoC,EAFpCA,aACA+U,EACoC,EADpCA,YAMMzzC,EAAsBvV,aAC1B,SAACC,GAAD,OAAmBA,EAAEC,UAAUW,uBAE3BooD,EAA6BjpD,aACjC,SAACC,GAAD,OAAmBA,EAAEC,UAAUgkC,8BAE3Bv7B,EAAkB3I,aAAY,SAACC,GAAD,OAAmBA,EAAE0I,mBAMzD,EAAgC9S,eAAzBkL,EAAP,EAAOA,QAASC,EAAhB,EAAgBA,aACHU,EAAgBC,eAAtBC,KACP,EACEX,eADKwO,EAAP,EAAOA,QAASvO,EAAhB,EAAgBA,eAAgBC,EAAhC,EAAgCA,eAAgBC,EAAhD,EAAgDA,OAAQC,EAAxD,EAAwDA,SAOlDizC,EAAOC,aAAoB,CAC/BC,KAAM,SACNC,eAAgB,aAEZriC,EAAWC,cAMjB,EAAsC7S,sBAAtC,oBAAOK,EAAP,KAAoBC,EAApB,KAMOjC,EAA+Cy2C,EAA/Cz2C,OAAQ82C,EAAuCL,EAAvCK,UAAWE,EAA4BP,EAA5BO,SAAUC,EAAkBR,EAAlBQ,QAASqG,EAAS7G,EAAT6G,MACvCp5C,EACJV,IAAa5B,KAAauC,kBAC1BX,IAAa5B,KAAawC,QACtBC,EAASb,IAAa5B,KAAa0C,UACnCC,EAAoBL,GAAeG,GAAUf,EAC7C+nD,EAAgBrpD,GAAe4P,EAE/B05C,EAAuBhO,EAAMN,GAAOnyC,iBACpC0gD,EAAyBjO,EAAMN,GAAOwO,mBACtCC,GAAoBH,IAAyBC,EAC7CjjD,EAAmB,CACvBojD,cAYF,WACE,OACE,uCAEE,sBAAK5iD,UAAU,eAAf,sBAEA,6DACA,sBAAKA,UAAU,+BAAf,oBACA,wBAAMA,UAAU,OAAOmvC,SAAU,SAAC1d,GAAD,OAAOA,EAAEh8B,kBAA1C,UAEE,sBAAKuK,UAAU,kBAAf,SACE,uBAAKA,UAAU,4BAAf,UACE,wBACE,mCAA2Bk0C,GAAOnyC,iBAClC,eAAc7K,EAAO6K,gBAAkB,OAAS,QAChDjQ,KAAMoiD,GAAOnyC,gBACbutC,IAAKpB,EAAS,CACZqB,SAAU,SAACxtC,GACT,OAAQA,KAEHoY,aAAkBpY,IACnBA,IAAoB0P,OACpB4R,KAAgBsoB,yBAHhBtoB,KAAgB2oB,YAOxB97B,KAAK,OACLjQ,SAAUxE,EACV4zC,YAAY,2BAGbr4C,YAAmBk9C,GAAOnyC,gBAAiB7K,GAAQ2rD,SAClD,YAEA,eAAC5V,GAAD,CACE5sC,MAAOrJ,YAAmBk9C,GAAOnyC,gBAAiB7K,GAClDqO,GAAE,gBAAW2uC,GAAOnyC,wBAO5B,sBAAK/B,UAAU,kBAAkByI,MAAO,CAAC2rC,UAAW,GAApD,SACE,uBAAKp0C,UAAU,4BAAf,UACE,wBACEA,UAAU,iBACV,mCAA2Bk0C,GAAOwO,mBAClC,eAAcxrD,EAAOwrD,kBAAoB,OAAS,QAClDn9C,GAAI2uC,GAAOwO,kBACX5wD,KAAMoiD,GAAOwO,kBACbpT,IAAKpB,EAAS,CACZwG,SAAUrxB,KAAgB2oB,WAE5B97B,KAAK,WACLjQ,SAAUxE,IAGZ,yBACEuE,UAAU,iBACV+vC,QAASmE,GAAOwO,kBAFlB,UAGE,uBAAM1iD,UAAS,uBAAkB4vC,GAAaI,SAC9C,uBAAMhwC,UAAU,gBAAhB,iHASN,yBACE,aAAY5E,EAAc,gCAAkC,GAC5D4E,UAAU,SACVC,SAAUxE,GAAqBknD,EAC/BziD,QAAO,wBAAE,uBAAA1L,EAAA,0DACHiH,EADG,iEAGK0yC,IAHL,kEAOP2U,EAAwB9U,KAPjB,2CAST99B,KAAK,SAbP,SAcG9U,EAAc,eAAC+E,GAAA,EAAD,IAAa5E,EAAS,OAAS,YAI/CE,GACC,sBAAKuE,UAAU,gCAAf,SACGiB,MAKJshD,GACC,sBAAKviD,UAAU,+BAAf,SACE,eAACI,GAAA,EAAD,CACEE,WAAW,6CACXD,MAAOkiD,aA/GnBQ,iBAwHF,WACE,GAAI/gD,EACF,OACE,uCAEE,sBAAKhC,UAAU,eAAf,+BAEA,6BAAIwD,YAAmBxB,EAAgBC,YAAa,KACpD,sBAAKjC,UAAU,+BAAf,oBACA,+BACE,eAACmiD,GAAD,IADF,iBAIA,sBAAKniD,UAAU,yBAAf,sHAMA,yBACE,aAAY5E,EAAc,gCAAkC,GAC5D4E,UAAU,SACVC,SAAUxE,EACVyE,QAAS8iD,EAJX,SAKG5nD,EAAc,eAAC+E,GAAA,EAAD,IAAa5E,EAAS,OAAS,YAI/CE,GACC,sBAAKuE,UAAU,gCAAf,SACGiB,MAKJshD,GACC,sBAAKviD,UAAU,+BAAf,SACE,eAACI,GAAA,EAAD,CACEE,WAAW,6CACXD,MAAOkiD,SAQnB,OAAO,iCA9N2B,SAiOrBO,EAjOqB,gFAiOpC,WAAuC7lD,GAAvC,sBAAAzI,EAAA,kEAESoa,EAFT,sBAGY,IAAIlT,MAAM,uCAHtB,UAMS4mD,EANT,sBAOY,IAAI5mD,MAAM,+CAPtB,UAUStB,EAVT,sBAWY,IAAIsB,MAAM,qBAXtB,UAcSrB,EAdT,sBAeY,IAAIqB,MAAM,+BAftB,cAkBWqG,EAAmB9E,EAAnB8E,gBAEDkhD,EAAyD,CAC7Dr0C,EAAoBnV,gBACpB2V,6BAAkBrN,IAGdnC,EAzBV,aA0BMC,KAAMzF,GAAW,IACbW,EAAe,CAAC+E,SAAU/E,GAAgB,MA3BpD,UA+BqBN,EACf,oBACA6nD,EAA2B3oD,SAASC,QACpCqpD,EACArjD,GAnCN,gBAuCMkqB,WAAU,wBAAC,uBAAAt1B,EAAA,sEAEHiX,EACJoE,YAAmB,CACjBzV,UACAwU,sBACAvU,kBANK,OAUTizC,IAVS,2CAWR,KAlDT,kDAqDIn9B,QAAQC,IAAR,MACI8yC,EAtDR,MAyDM,KAAM/rD,QAAQ0rD,SAAS,6CACvB,KAAM1rD,QAAQ0rD,SAAS,6CAEvBK,EAAc,IAAIxnD,MAChB,mFAIJvC,EAAe+pD,GAjEnB,2DAjOoC,+BAsSrBF,IAtSqB,6EAsSpC,+BAAAxuD,EAAA,kEAESoa,EAFT,sBAGY,IAAIlT,MAAM,uCAHtB,UAMS4mD,EANT,sBAOY,IAAI5mD,MAAM,+CAPtB,UAUStB,EAVT,sBAWY,IAAIsB,MAAM,qBAXtB,UAcSrB,EAdT,sBAeY,IAAIqB,MAAM,+BAftB,cAkBUunD,EAAyD,CAC7Dr0C,EAAoBnV,gBACpB2V,6BAAkBhV,IAGdwF,EAvBV,aAwBMC,KAAMzF,GAAW,IACbW,EAAe,CAAC+E,SAAU/E,GAAgB,MAzBpD,UA6BqBN,EACf,oBACA6nD,EAA2B3oD,SAASC,QACpCqpD,EACArjD,GAjCN,gBAqCMkqB,WAAU,wBAAC,uBAAAt1B,EAAA,sEAEHiX,EACJoE,YAAmB,CACjBzV,UACAwU,sBACAvU,kBANK,OAUTizC,IAVS,2CAWR,KAhDT,kDAmDIn9B,QAAQC,IAAR,MAEAjX,EAAe,EAAD,IArDlB,2DAtSoC,sBA+VpC,SAAS8H,IACP,OAAQvG,GACN,KAAK5B,KAAauC,iBAChB,MAAO,mCACT,KAAKvC,KAAawC,QAChB,OACE,uCACE,eAACiF,GAAA,EAAD,CACEC,WAAY,IACZC,SAAUC,KACVC,mBAAiB,EACjBC,OAAQ,SAACzJ,GACP,OAAO,eAAC0J,GAAA,EAAD,UAAuB1J,GAAVA,MAIxB,eAAC2J,GAAA,EAAD,CAAcC,IAAKxG,EAAgByG,WAAS,OAGlD,KAAKlI,KAAa0C,UAChB,OACE,uCACE,8CAEA,eAACsF,GAAA,EAAD,CAAcC,IAAKxG,OAGzB,QACE,OAAO,MAQb,OACE,gBAACuT,GAAA,EAAD,CACEI,QAAQ,aACRF,OAAQA,EAGRC,cAAe,aACfE,gBAAgB,mBANlB,UAQE,uBACEnO,UAAU,sBACVE,QAAS,WACPotC,KAHJ,SAKE,eAACj+C,GAAA,EAAD,MAlVGmQ,EAAM6iD,QAyVF,SAASc,KAKtB,IAAMnhD,EAAkB3I,aAAY,SAACC,GAAD,OAAmBA,EAAE0I,mBAMzD,EAAsCnJ,oBACpCsoD,GAAeiC,gBADjB,oBAAOf,EAAP,KAAoBgB,EAApB,KAGA,EAAgDxqD,oBAAiB,IAAjE,oBAAOyqD,EAAP,KAAyBC,EAAzB,KACA,EACE1qD,qBAAkB,GADpB,oBAAO2qD,EAAP,KAA4BC,EAA5B,KAOMC,EAA4B32C,wBAtBC,4CAsBgC,CACjE/K,IAvBiC,8CAsCnC,+BAAAxN,EAAA,kEAESwN,EAFT,sBAGY,IAAItG,MAAM,+BAHtB,OAMU2mD,EAAcrgD,EAAgBE,mBAChCi/C,GAAewC,kBACfxC,GAAeiC,eACnBC,EAAehB,GAETiB,EAAmBthD,EAAgBE,mBACrCg/C,GAAiByC,kBACjBzC,GAAiB0C,eACrBL,EAAoBD,GAdxB,gDAgBInzC,QAAQC,IAAR,MAhBJ,0DAtCmC,sBA8DnC,OAhCA7M,sBAAU,WACRmgD,MACC,CAACA,IA8BA1hD,EAEA,uCACwB,KAArBshD,GACC,uCACE,sBAAKtjD,UAAU,oCAAf,SACGgC,EAAgBE,mBAEf,mFAC4C,IAC1C,uBAAMlC,UAAU,oCAAhB,SACGwD,YAAmBxB,EAAgBC,YAAa,KAHrD,wCAQA,iLASJ,yBACEjC,UAAU,+BACVE,QAAS,kBAAMujD,GAAuB,IAFxC,SAGGH,OAKNE,GACC,eAACpB,GAAD,CACEp0C,OAAQw1C,EACRlW,aAAc,WACZmW,GAAuB,IAEzBpB,YAAaA,OAOhB,+BKnjBM,SAASwB,KAKtB,MAA+CnE,KAAxCE,EAAP,EAAOA,QAASI,EAAhB,EAAgBA,aAAcF,EAA9B,EAA8BA,cACvB5yC,EAAqBF,eAArBE,kBACA9S,EAAWlL,eAAXkL,QACP,EAAiDqnC,KAA1CC,EAAP,EAAOA,gBAAiBE,EAAxB,EAAwBA,sBACxB,EAAuCrc,eAAhCrf,EAAP,EAAOA,WAAY0f,EAAnB,EAAmBA,iBAOZk+B,EAAmB/G,eAAnB+G,gBAMP,EAA0CjrD,sBAA1C,oBAAOkrD,EAAP,KAAsBC,EAAtB,KACA,EAA4CnrD,qBAAkB,GAA9D,oBAAOorD,EAAP,KAAuBC,EAAvB,KAMA3gD,sBAAU,WACR,GAAIu8C,IAAkB3+C,KAAY3F,UAAlC,CAEA,IAAM2oD,EAAevE,EAAQ7lD,MAC3B,SAACsqC,GAAD,OACEjtC,YAAgBitC,EAAO5sC,WAAaL,YAAgB0sD,MAGxDE,EAAiBG,GACZA,GACHD,GAAkB,MAEnB,CAACJ,EAAiBlE,EAASE,IAM9B,IAAM1N,EACJ0N,IAAkB3+C,KAAYpI,SAC9B+mD,IAAkB3+C,KAAY7F,SAC9BsmC,IAA0BzgC,KAAYpI,SACtC6oC,IAA0BzgC,KAAY7F,SACtCsqB,IAAqBzkB,KAAYpI,SACjC6sB,IAAqBzkB,KAAY7F,QAC7B8oD,EAAyBtE,IAAkB3+C,KAAY3F,UACvD6E,EAA2B2/C,GAAgB9yC,EAC3Cm4B,KACJjrC,IACA2pD,GACA3sD,YAAgBgD,KAAahD,YAAgB2sD,EAActsD,UAGvD4sD,EACJN,GAAuC,kBAAf79C,GAClB3J,OAAOwnD,EAAcj8C,OAAS5B,EAAc,KAAKnQ,QAAQ,GAC3D,GAgEN,OAAIq8C,IAAc/xC,EAEd,eAAC,GAAD,UACE,sBAAKL,UAAU,0BAAf,SACE,eAACs8B,GAAA,EAAD,QAOJj8B,EAEA,eAAC,GAAD,UACE,sBAAKL,UAAU,cAAf,SACE,eAACI,GAAA,EAAD,CACEC,MAAOA,EACPC,WAAW,uDAQjB2jD,GAAkBG,EAElB,eAAC,GAAD,UACE,sBAAKpkD,UAAU,4BAAf,SACE,uDAON,eAAC,GAAD,UACG+jD,EACC,uCACE,sBAAK/jD,UAAU,wBAAf,4BACA,uBAAKA,UAAU,kBAAf,UAGE,uBAAKA,UAAU,6BAAf,UAEE,8BAAKwD,YAAmBugD,EAActsD,QAAS,KAvG3D,WACE,GAAKssD,EAEL,OACE,iCACE,sBAAK/jD,UAAU,2BAAf,SACG0hC,EACC,uCACE,8CACA,yCAAS1rC,YAAa+tD,EAAcj8C,OAApC,YACE45B,EAAgBO,QAAU,YAE3BoD,GACC,iCACE,eAACkc,GAAD,CAAU7f,gBAAiBA,SAKjC,uCACE,oDACA,+BAAM1rC,YAAa+tD,EAAcj8C,cAIvC,uBAAK9H,UAAU,2BAAf,UACE,iDACA,yCAASqkD,EAAT,aA+EKC,MAIH,sBAAKtkD,UAAU,8BAAf,SA5EJqlC,EAEA,+BACE,uBAAKrlC,UAAU,wBAAf,UACE,sBAAKA,UAAU,+BAAf,wBACA,eAACmjD,GAAD,SAMJ,sBAAKnjD,UAAU,qCAAf,6FAyEA,iCAMR,SAASwzC,GAAch7C,GAKrB,IAAM87C,EAAUC,eAehB,OACE,eAAC,GAAD,CAAMv0C,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,uBAAKb,UAAU,WAAf,UACE,qBAAIA,UAAU,kBAAd,qBACA,yBAAQA,UAAU,mBAAmBE,QAd7C,SAAiB1K,GACfA,EAAMC,iBACN6+C,EAAQ1K,KAAK,aAYP,yBAMDpxC,EAAMuV,e,SL1NVmzC,K,gCAAAA,E,uCAAAA,Q,cAKAC,K,+BAAAA,E,sCAAAA,Q,cAKAjN,K,kCAAAA,E,uCAAAA,Q,KMpBU,SAASqQ,GAAW/rD,GACjC,IAAO6rC,EAAkC7rC,EAAlC6rC,OAAP,EAAyC7rC,EAA1BssC,UAAf,MATgC,IAShC,EAMO1qC,EAAWlL,eAAXkL,QAMP,OACE,eAAC,IAAD,CAAM4F,UAAW,mBAAoB8kC,GAAIA,EAAzC,SACE,sBACE9kC,UAAS,qBACP5F,GAAWA,EAAQ9C,gBAAkB+sC,EAAO5sC,QAAQH,cAApD,gCAEI,IAJR,SAOE,qBAAI0I,UAAU,oBAAd,SACGwD,YAAmB6gC,EAAO5sC,QAAS,SChC/B,SAAS+sD,KAKtB,MAA+C9E,KAAxCE,EAAP,EAAOA,QAASI,EAAhB,EAAgBA,aAAcF,EAA9B,EAA8BA,cACvB5yC,EAAqBF,eAArBE,kBAMDklC,EACJ0N,IAAkB3+C,KAAYpI,SAC9B+mD,IAAkB3+C,KAAY7F,QAE1B8oD,EAAyBtE,IAAkB3+C,KAAY3F,UAEvD6E,EAA2B2/C,GAAgB9yC,EAuBjD,OAAIklC,IAAc/xC,EAEd,eAAC,GAAD,UACE,sBAAKL,UAAU,0BAAf,SACE,eAACs8B,GAAA,EAAD,QAOJj8B,EAEA,eAAC,GAAD,UACE,sBAAKL,UAAU,cAAf,SACE,eAACI,GAAA,EAAD,CACEC,MAAOA,EACPC,WAAW,yDAQhBpL,OAAO+H,OAAO2iD,GAAShrD,QAAUwvD,EAElC,eAAC,GAAD,UACE,oBAAGpkD,UAAU,cAAb,gCAMJ,eAAC,GAAD,UACE,sBAAKA,UAAU,6BAAf,SAEE,iCACE,sBAAKA,UAAU,eAAf,4BACA,sBAAKA,UAAU,cAAf,SAxDR,SAA2B4/C,GACzB,OAAOA,EAAQznD,KAAI,SAACksC,GAClB,OACE,eAACkgB,GAAD,CAEEzf,GAAE,mBAAcT,EAAO5sC,SACvB4sC,OAAQA,GAFHA,EAAO5sC,YAoDkBgtD,CAAkB7E,YAO1D,SAASpM,GAAch7C,GAKrB,OACE,eAAC,GAAD,CAAMwH,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,sBAAKb,UAAU,WAAf,SACE,qBAAIA,UAAU,kBAAd,uBAGDxH,EAAMuV,c,sBCrDT22C,GAAkD,CACtDrqB,KAAsBC,2BACtBD,KAAsBsqB,2BAGT,SAASC,GAAUpsD,GAChC,IACEC,EAKED,EALFC,YADF,EAMID,EAJFslD,uBAFF,MAEoB,aAFpB,EAGEC,EAGEvlD,EAHFulD,iBACAC,EAEExlD,EAFFwlD,mBAJF,EAMIxlD,EADF65B,4CALF,SAYA,EAAkEx5B,oBAEhE,IAFF,oBAAOolD,EAAP,KAAkCC,EAAlC,KAIA,EAAkDrlD,oBAChD,CACEslD,gBAAiB,GACjB0G,sBAAuB,GACvBzG,gBAAiB,GACjBC,gBAAiB,KALrB,oBAAOC,EAAP,KAA0BC,EAA1B,KAaA,EAEI55B,aAAqB+/B,IAFzB,iBACE5/B,kBADF,GACsBggC,EADtB,KAC4CC,EAD5C,KAIA,EAAqD3yB,aAAa,CAChE35B,cACA45B,yCAFK/F,EAAP,EAAOA,UAAWkJ,EAAlB,EAAkBA,eAAgBC,EAAlC,EAAkCA,gBAKlC,EAIIjJ,aAAyByxB,GAH3B/vB,EADF,EACEA,sBACAnB,EAFF,EAEEA,2BACAF,EAHF,EAGEA,4BAGK3f,EAAqBF,eAArBE,kBAOLixC,EAIEG,EAJFH,gBACA0G,EAGEvG,EAHFuG,sBACAzG,EAEEE,EAFFF,gBACAC,EACEC,EADFD,gBAGIjM,EACJ3c,IAAoBt0B,KAAYpI,SAChC08B,IAAoBt0B,KAAY7F,SAG/BuxB,IAAgC1rB,KAAYpI,SAC3CklD,EAA0BrpD,OAAS,GACrCi4B,IAAgC1rB,KAAY7F,QAExC+E,EACJm1B,GAAkBzI,GAA8B7f,EA6JlD,SAAS+xC,EACP3yB,GAEA,OAAOA,EAAUn0B,KAAI,SAACO,GAAc,IAAD,EAE/B48B,EAIE58B,EAJF48B,gBACA38B,EAGED,EAHFC,yBACAkjB,EAEEnjB,EAFFmjB,cACAjjB,EACEF,EADFE,iBAGIyE,GAA0B,OAAbwe,QAAa,IAAbA,OAAA,EAAAA,EAAehgB,WAAf,OAA0BjD,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAkBiD,SACzD8d,EAAiB,OAAGhhB,QAAH,IAAGA,OAAH,EAAGA,EAA0BghB,kBAEhD8hB,EAA2B,EAC3BH,EAA6B,EAC7BE,EAAoB,EACpBD,EAAsB,EAE1B,OAAQ5hB,GACN,KAAKnJ,KAAkBkH,uBACrB,OACiB,OAAf4d,QAAe,IAAfA,OAAA,EAAAA,EAAkB9kB,KAAkBkH,0BAA2B,GAD1DstC,EAAP,EAAOA,aAAc9pB,EAArB,EAAqBA,wBAGf+pB,EAAQjqB,aAA0B,CACtCC,kBAAmB8pB,EACnB7pB,0BACAC,iBAAkB2pB,EAClB1pB,iBAAkB4pB,IAGpBvpB,EAAmBwpB,EAAMxpB,iBACzBH,EAAqB2pB,EAAM3pB,mBAC3BE,EAAYypB,EAAMzpB,UAClBD,EAAc0pB,EAAM1pB,YAWxB,IAAKl+B,EAAY,OAAO,KAExB,GAAI2gD,EACF,OACE,eAAC,YAAD,UACGA,EAAmB,CAAC9sB,aAAcx4B,KADtB2E,GAMnB,IAAM2e,GACS,OAAbH,QAAa,IAAbA,OAAA,EAAAA,EAAe9f,IAAIC,QAAQlK,QAA3B,OACA8G,QADA,IACAA,OADA,EACAA,EAAkBmD,IAAIC,QAAQlK,OAC9B,GAEIoV,EAAY,UAAGgnB,EAAsBn0B,MACzC,oCAAE6B,EAAF,iBACExE,YAAgBwE,KAAkBxE,YAAgBiG,aAFpC,aAAG,EAGjB,GAEJ,OACE,eAAC+/C,GAAD,CAEEG,SAAUQ,EACVjsD,KAAMkqB,EACN9b,QAAS49C,EACTR,kBAAmBjgD,EACnB0I,aAAc,WACZ,OAAQ4T,GACN,KAAKnJ,KAAkBkH,uBACrB,OACE,eAAC,KAAD,CACE9Q,0BAA2B60B,EAC3B50B,4BAA6By0B,EAC7Bx0B,qBAAsB00B,EACtBz0B,uBAAwBw0B,EACxBr0B,aAAcA,IAMpB,QACE,OAAO,kCArBR7J,MAkCb,OA5PAkG,sBAAU,WACR26C,EAA6B5xB,EAAUn0B,KAAI,SAACy1B,GAAD,OAAOA,EAAEh1B,uBACnD,CAAC0zB,IAGJ/oB,sBAAU,WACR,GAAIkyB,IAAoBt0B,KAAY3F,UAApC,CAEA,IAAM4jD,EAA4C,CAChDjB,gBAAiB,GACjB0G,sBAAuB,GACvBzG,gBAAiB,GACjBC,gBAAiB,IAGnB/xB,EAAUkB,SAAQ,SAACI,GAAO,IAAD,QAErBgC,EAGEhC,EAHFgC,YACwBs1B,EAEtBt3B,EAFFwH,uBACiB+vB,EACfv3B,EADF0H,gBAGF,GAAK1F,EAAL,CAEA,IAAMw1B,EAAiE,KAAtC,UAAAx3B,EAAEh1B,wBAAF,mBAAoB+C,aAApB,eAA2B/G,QAEtDywD,OACU/wD,IAAd4wD,IACCnpB,aAAuB/R,KAAYqO,aAAc6sB,IAChDnpB,aAAuB/R,KAAYs7B,IAAKJ,KAC1C1tB,aAAgBtO,KAAawO,UAAW9H,EAAYgF,SAC3C,OAATuwB,QAAS,IAATA,GAAA,UAAAA,EAAWztC,8BAAX,eAAmCugB,YAAaxmB,KAGlD,QAAkBnd,IAAd4wD,EAWJ,QACgB5wD,IAAd4wD,GACAnpB,aAAuB/R,KAAYu7B,KAAML,KACxC1tB,aAAgBtO,KAAawO,UAAW9H,EAAYgF,QACnD4C,aAAgBtO,KAAa0O,UAAWhI,EAAYgF,QAEtDwqB,EAAuBhB,gBAAgBxU,KAAKhc,OAN9C,CAWA,IAAMsxB,EAAc,UAAGhxB,EAAsBn0B,MAC3C,sCAAE6B,EAAF,iBACExE,YAAgBwE,KAChBxE,aAAgB,UAAAw2B,EAAEh1B,wBAAF,eAAoBiD,UAAW,cAH/B,aAAG,EAInB,GAGEwjD,IAAiCH,GACnCA,EAAevhD,IAAImK,MAAQo3C,EAAer3C,GAAGC,MAe/Cu9C,IACoB,IAApBD,GACA/F,EAEAD,EAAuBf,gBAAgBzU,KAAKhc,QAO9Bt5B,IAAd4wD,IACCnpB,aAAuB/R,KAAYw7B,SAAUN,KAC5CnpB,aAAuB/R,KAAYs7B,IAAKJ,KACzC1tB,aAAgBtO,KAAawO,UAAW9H,EAAYgF,SACnD4C,aAAgBtO,KAAa0O,UAAWhI,EAAYgF,YASxCtgC,IAAd4wD,GACAG,GACAD,EAEAhG,EAAuBjB,gBAAgBvU,KAAKhc,QAO9Bt5B,IAAd4wD,IACAG,GACChG,OASa/qD,IAAd4wD,IACCnpB,aAAuB/R,KAAYqO,aAAc6sB,IAChDnpB,aAAuB/R,KAAYmO,YAAa+sB,KAClD1tB,aAAgBtO,KAAawO,UAAW9H,EAAYgF,QAEpDwqB,EAAuBf,gBAAgBzU,KAAKhc,GAZ5CwxB,EAAuBjB,gBAAgBvU,KAAKhc,GAtB5CwxB,EAAuBjB,gBAAgBvU,KAAKhc,QA7DxCyE,GAEOmF,aAAgBtO,KAAa1X,OAAQoe,EAAYgF,SAD1DwqB,EAAuByF,sBAAsBjb,KAAKhc,OAoGxD2wB,GAAqB,SAAC3d,GAAD,mBAAC,eACjBA,GACAwe,SAEJ,CACD/sB,EACAnE,EACA5B,EACAmJ,IA4GE2c,IAAc/xC,EAEd,sBAAKL,UAAU,0BAAf,SACE,eAACs8B,GAAA,EAAD,MAMFj8B,EAEA,sBAAKL,UAAU,cAAf,SACE,eAACI,GAAA,EAAD,CACEC,MAAOA,EACPC,WAAW,wDAQhBpL,OAAO+H,OAAOqhD,GAAmBgB,SAAQ,SAAC1xB,GAAD,OAAOA,KAAGh5B,QACpD6gC,IAAoBt0B,KAAY3F,UAOhC,uBAAKwE,UAAU,6BAAf,UAEGq+C,EAAgBzpD,OAAS,GACxB,uCACE,sBAAKoL,UAAU,eAAf,SAA+BsjB,KAAoB6jB,SACnD,sBAAKnnC,UAAU,cAAf,SACGi/C,EAAoBZ,QAM1BwG,EAAsBjwD,OAAS,GAC9B,uCACE,sBAAKoL,UAAU,eAAf,SAA+BsjB,KAAoBmiC,WACnD,sBAAKzlD,UAAU,cAAf,SACGi/C,EAAoB4F,QAM1BzG,EAAgBxpD,OAAS,GACxB,uCACE,sBAAKoL,UAAU,eAAf,SAA+BsjB,KAAoBi8B,SACnD,sBAAKv/C,UAAU,cAAf,SACGi/C,EAAoBb,QAM1BD,EAAgBvpD,OAAS,GACxB,uCACE,sBAAKoL,UAAU,eAAf,SAA+BsjB,KAAoBk8B,SACnD,sBAAKx/C,UAAU,cAAf,SACGi/C,EAAoBd,WAzCtB,oBAAGn+C,UAAU,cAAb,gCCpZI,SAAS0lD,KAatB,OACE,eAAC,GAAD,UACE,eAACd,GAAD,CACEnsD,YAAa6X,KAAoBqH,WACjComC,iBAZN,SAA0Bx4C,GACxB,MAAM,eAAN,OAAsBA,IAYlB8sB,sCAAsC,MAM9C,SAASmhB,GAAch7C,GAKrB,IAAM87C,EAAUC,eAehB,OACE,eAAC,GAAD,CAAMv0C,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,uBAAKb,UAAU,WAAf,UACE,qBAAIA,UAAU,kBAAd,wBACA,yBAAQA,UAAU,mBAAmBE,QAd7C,SAAqB1K,GACnBA,EAAMC,iBACN6+C,EAAQ1K,KAAK,aAYP,6BAMDpxC,EAAMuV,cCzBf,IAAM43C,GAA+B,CAEnCv/B,yBAAyB,GAGZ,SAASw/B,GACtBptD,GAEA,IACYqtD,EAERrtD,EAFFyH,SACWrH,EACTJ,EADFE,SAAWE,iBAOb,EAAsCC,sBAAtC,oBAAOK,EAAP,KAAoBC,EAApB,KACA,EACEN,sBADF,oBAAOitD,EAAP,KAAiCC,EAAjC,KAOMlpC,EAA2Bpb,kBAA8B,CAC7DukD,mBAAoB,KAOhBvkC,EAAqBpoB,aACzB,SAACC,GAAD,uBAAmBA,EAAEC,iBAArB,aAAmB,EAAakoB,sBAE5B7S,EAAsBvV,aAC1B,SAACC,GAAD,OAAmBA,EAAEC,UAAUW,uBAOjC,EAAgChL,eAAzBkL,EAAP,EAAOA,QAASC,EAAhB,EAAgBA,aAChB,EAA2DC,eAApDC,EAAP,EAAOA,eAAgBC,EAAvB,EAAuBA,eAAgBC,EAAvC,EAAuCA,OAAQC,EAA/C,EAA+CA,SAC/C,EAKIC,aAAwBgrD,IAJ1B/qD,EADF,EACEA,WACAC,EAFF,EAEEA,qBACAC,EAHF,EAGEA,iBACA0H,EAJF,EAIEA,wBAEWzH,EAAgBC,eAAtBC,KACAymC,EAAmBD,KAAnBC,gBAMDj2B,EAAWC,cAMXtQ,EACJV,IAAa5B,KAAauC,kBAC1BX,IAAa5B,KAAawC,QACtBC,EAASb,IAAa5B,KAAa0C,UACnCC,EAAoBL,GAAeG,GAAUf,EAC7CyrD,EAAkBrrD,GAAca,GAAqBoqD,EAMrDK,EAAoCn5C,wBArE1C,4CAuEE,CAAC0U,EAAD,OAAqB7S,QAArB,IAAqBA,OAArB,EAAqBA,EAAqBnV,gBAAiBb,IAvE7D,8CAkHA,6BAAApE,EAAA,kEAESoE,GAAqB6oB,EAF9B,iEAIkCA,EAAmB9nB,SAASC,QACvD0yB,UAD2B,OAE1B1d,QAF0B,IAE1BA,OAF0B,EAE1BA,EAAqBnV,gBACrBb,EAAiBiD,SAElBO,OATP,OAIU+pD,EAJV,OAWIJ,EAA4BI,EAAgB32C,QAXhD,gDAaIW,QAAQ9P,MAAR,MACA0lD,OAA4BzxD,GAdhC,0DAlHA,oEAoIA,+BAAAE,EAAA,kEAESoa,EAFT,sBAGY,IAAIlT,MAAM,uCAHtB,UAMS9C,EANT,sBAOY,IAAI8C,MAAM,mCAPtB,UAUS+lB,EAVT,sBAWY,IAAI/lB,MAAM,gCAXtB,UAcStB,EAdT,sBAeY,IAAIsB,MAAM,qBAftB,UAkBSrB,EAlBT,uBAmBY,IAAIqB,MAAM,+BAnBtB,eAsBU0qD,EAAqC,CACzCx3C,EAAoBnV,gBACpBb,EAAiBiD,SAGb+D,EA3BV,aA4BMC,KAAMzF,GAAW,GACjB/E,MAAOywD,GACH/qD,EAAe,CAAC+E,SAAU/E,GAAgB,MA9BpD,UAiCqBN,EACf,kBACAgnB,EAAmB9nB,SAASC,QAC5BwsD,EACAxmD,GArCN,qDA0CY6L,EACJoE,YAAmB,CACjBzV,UACAwU,sBACAvU,kBA9CV,WAqDQD,EAAQ9C,gBACRsB,EAAiBmD,IAAIC,QAAQmB,SAASugB,iBAAiB,GAAGpmB,cAtDlE,kCAwDcwY,IAxDd,0DA4DI3W,EAAe,EAAD,IA5DlB,2DApIA,+BAoMe2W,IApMf,6EAoMA,uBAAAtb,EAAA,yDACOktC,EADP,0EAIU1sC,OAAO+a,SAASC,QAAQ,CAC5BN,OAAQ,oBACRO,OAAQ,CACNC,KAAM,QACN/d,QAASuvC,KARjB,uDAYIvxB,QAAQC,IAAR,MAZJ,0DApMA,sBA8PA,OAhLA7M,sBAAU,WACR2iD,MACC,CAACA,IAEJ3iD,sBAAU,WASR,IAAOoyC,EACL/8C,EACAmD,IAAIC,QAAQmB,SAFPw4C,yCAIHA,GAA4Cv7C,IAC9CyiB,EAAyBvZ,QAAzB,2BACKuZ,EAAyBvZ,SAD9B,IAEE0iD,mBACErQ,EAAyCr+C,gBACzC8C,EAAQ9C,cACJ,uDACA,MAKVkL,EAAwBtN,OAAO+H,OAAO4f,EAAyBvZ,YAC9D,CAAClJ,EAASoI,EAAyB5J,IAmJpC,uCACE,iCACE,yBACEoH,UAAU,0BACVC,SAAUgmD,EACV/lD,QAAS+lD,EAAkB,aApQnC,2CAiQM,SAIG7qD,EAAc,eAAC+E,GAAA,EAAD,IAAa5E,EAAS,OAAS,YAGhD,eAAC6E,GAAA,EAAD,CACEC,MAAOnH,EACPoH,WAAW,yBAKZ7E,GACC,sBAAKuE,UAAU,gCAAf,SAxDR,WAEE,OAAQtF,GACN,KAAK5B,KAAauC,iBAChB,OACE,yEAEE,eAAC,KAAD,OAGN,KAAKvC,KAAawC,QAChB,OACE,uCACE,eAACiF,GAAA,EAAD,CACEC,WAAY,IACZC,SAAUC,KACVC,mBAAiB,EACjBC,OAAQ,SAACzJ,GACP,OAAO,eAAC0J,GAAA,EAAD,UAAuB1J,GAAVA,MAIxB,eAAC2J,GAAA,EAAD,CAAcC,IAAKxG,EAAgByG,WAAS,OAGlD,KAAKlI,KAAa0C,UAChB,OACE,uCACE,uDAEA,eAACsF,GAAA,EAAD,CAAcC,IAAKxG,OAGzB,QACE,OAAO,MAuBF0G,KAIJrG,GACC,yBACEoF,UAAU,wBACVE,QAASrF,EAFX,4CAQJ,eAACC,EAAD,CAAkBoG,MAAM,mCChT9B,IAAMmlD,GAAkCn8B,iBACtC,kBAAM,iCAGFhiB,GAAc,CAACxB,SAAU,KACzB4/C,GAAsB,CAC1Bz0D,QAAS,eACTuT,MAAO,OACPu3C,SAAU,UAaG,SAAS4J,GACtB/tD,GACc,IAAD,EACNC,EAAuCD,EAAvCC,YAAaC,EAA0BF,EAA1BE,SAAU8tD,EAAgBhuD,EAAhBguD,aAMxBC,EAAuBptD,aAC3B,SAACC,GAAD,uBAAmBA,EAAEC,UAAUge,sBAA/B,aAAmB,EAA4BJ,0BAQ3CwC,GACJ,UAAAjhB,EAASC,gCAAT,eAAmCghB,oBACnC8sC,EA2CF,OACE,eAAC,YAAD,CACEl8B,SACE,uBAAMvqB,UAAU,cAAcyI,MAAO69C,GAArC,SACE,eAAC,KAAD,CAAe9lD,WAAY,IAAK0H,YAAaA,OAHnD,SAtCF,WACE,IAAKyR,EACH,OAAO,+BAGT,OAAQA,GACN,KAAKnJ,KAAkBkH,uBACrB,OACE,eAAC2uC,GAAD,CACE5tD,YAAaA,EACbC,SAAUA,EACV8tD,aAAcA,IAKpB,KAAKh2C,KAAkB+G,eACrB,OAAO,+BAET,QACE,OACE,eAACnX,GAAA,EAAD,CACEC,MACE,IAAI3E,MAAJ,WACMie,EADN,0CAIFrZ,WAAW,0BAiBhBgsC,K,cC/GQ,SAASoa,GAAeluD,GACrC,IAAOgX,EAA4ChX,EAA5CgX,OAAQm3C,EAAoCnuD,EAApCmuD,WAAYC,EAAwBpuD,EAAxBouD,QAASC,EAAeruD,EAAfquD,YAMpC,OACE,sBAAK7mD,UAAU,0BAAf,SACE,4CACMwP,EADN,YACgBm3C,GAEbC,GACC,uCACE,wBACA,yCACA,wBAHF,UAIMA,EAJN,YAIiBC,WCCZ,SAASC,KAgBtB,IAAOzpD,EAAc0/C,eAAd1/C,WAcP,EACEsyB,aAAmBtyB,GADd6zB,EAAP,EAAOA,aAAcjB,EAArB,EAAqBA,cAAeF,EAApC,EAAoCA,iBAAkBI,EAAtD,EAAsDA,eAG/CjjB,EAAqBF,eAArBE,kBAOD7M,EAA2B4vB,GAAiB/iB,EAOlD,SAASs5C,EAAavoC,GACpB,MAEIA,EADFvG,uBAAyBsf,EAD3B,EAC2BA,sBAAuBt+B,EADlD,EACkDA,SAAU+sB,EAD5D,EAC4DA,OAI5D,GAAIA,IAAW0D,KAAmBmN,OAAQ,CACxC,IAAOza,EAAiBnjB,EAAjBmjB,cACDkrC,EAAS,OAAGlrC,QAAH,IAAGA,OAAH,EAAGA,EAAe9f,IAAIC,QAAQmB,SAASugB,iBAAiB,GAEvE,OAAO,eAAC/B,GAAA,EAAD,CAAcC,eAAgBmrC,EAAWruD,SAAUA,IAI5D,OACE+sB,IAAW0D,KAAmBiN,SAC9B3Q,IAAW0D,KAAmB8M,0BAG5Be,GACAhN,KAAYgN,KAA2BhN,KAAYA,KAAYu7B,MAGxD,+BAIP,eAACK,GAAD,CAEE3lD,SAAUwlB,IAAW0D,KAAmB8M,0BACxCv9B,SAAUA,IAMT,KAQT,GApD2By3B,IAAmBhvB,KAAY7F,UAoDxC+E,EAChB,OACE,eAAC,GAAD,UACE,sBAAKL,UAAU,0BAAf,SACE,eAACs8B,GAAA,EAAD,QAOR,GAAIvM,EACF,OACE,eAAC,GAAD,UACE,eAAC0sB,GAAD,MAMN,GAAIp8C,EACF,OACE,eAAC,GAAD,UACE,sBAAKL,UAAU,cAAf,SACE,eAACI,GAAA,EAAD,CACEC,MAAOA,EACPC,WAAW,yDAQrB,GAAI4wB,EAAc,CAChB,IAAMkJ,EAAalJ,EAAaC,gCAG5BskB,EAnIY,SAoIZC,EAAoB,GACxB,IAAK,IAAD,SAEAtb,QAFA,IAEAA,OAFA,EAEAA,EAAYr+B,IAAIC,QAAQmB,SAASq4C,qBADjCC,EADA,EACAA,cAAeC,EADf,EACeA,kBAEjB,MAAOr1C,GACPo1C,EAzIc,SA0IdC,EAAoB,GAGtB,OACE,eAAC,GAAD,UACE,eAACkH,GAAD,CACElkD,SAAUw4B,EACV2rB,kBAAmB,kBACjB,eAAC6J,GAAD,CACEl3C,OAAQimC,EACRkR,WAAYjR,KAGhBpJ,cAAe,kBACb,eAACia,GAAD,CACE9tD,YAAa2e,KAAqBQ,WAClClf,SAAUw4B,EACVs1B,aAAcA,SAS1B,OAAO,+BAGT,SAAShT,GAAch7C,GAKrB,IAAM87C,EAAUC,eAgBhB,OACE,eAAC,GAAD,CAAMv0C,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,uBAAKb,UAAU,WAAf,UACE,qBAAIA,UAAU,kBAAd,wBACA,yBAAQA,UAAU,mBAAmBE,QAf7C,SAAiB1K,GACfA,EAAMC,iBAEN6+C,EAAQ1K,KAAK,gBAYP,yBAMDpxC,EAAMuV,cCrNA,SAASi5C,GAAgBxuD,GACtC,IAAO+wB,EAAe/wB,EAAf+wB,YACP,EAAkD1wB,qBAAkB,GAApE,oBAAO8wB,EAAP,KAA0BC,EAA1B,KAYA,OAVArmB,sBAAU,WAER,IAAMsmB,EACJN,GAAeO,YAAW,kBAAMF,GAAqB,KAAOL,GAE9D,OAAO,WACLM,GAAaE,aAAaF,MAE3B,CAACN,KAEIA,GAAgBA,GAAeI,EACrC,sBAAK3pB,UAAU,gBAAf,SACE,uBAAMqG,KAAK,MAAM,aAAW,qBAA5B,SACG7N,EAAMyuD,UAGT,K,wBCWAtB,GAA+B,CAEnCv/B,yBAAyB,GAGZ,SAAS8gC,GAAT,GAGS,IAFtBC,EAEqB,EAFrBA,YACAzlB,EACqB,EADrBA,gBAOA,OACE,eAAC,GAAD,UACE,eAAC0lB,GAAD,CACEC,WAAYF,EAAY,GACxBzlB,gBAAiBA,MAMzB,SAAS0lB,GAAT,GAAqE,IAAhDC,EAA+C,EAA/CA,WAAY3lB,EAAmC,EAAnCA,gBAKzB7kB,EAA2Bpb,kBAA8B,CAC7Dqb,wBAAyB,KAO3B,EAOInO,eANF0B,EADF,EACEA,aACAtB,EAFF,EAEEA,aACA7V,EAHF,EAGEA,YACAwB,EAJF,EAIEA,SACAH,EALF,EAKEA,eACAC,EANF,EAMEA,eAGF,EAKIG,aAAwBgrD,IAJ1B/qD,EADF,EACEA,WACAC,EAFF,EAEEA,qBACAC,EAHF,EAGEA,iBACA0H,EAJF,EAIEA,wBAGF,EAKI0a,aAAkBmqC,EAAWh4C,WAJ/B8N,EADF,EACEA,oBACAC,EAFF,EAEEA,yBACAC,EAHF,EAGEA,qBACAC,EAJF,EAIEA,iBAOIliB,EACJ2T,IAAiBL,KAAYpT,SAC7BZ,IAAa5B,KAAauC,kBAC1BX,IAAa5B,KAAawC,QACtBC,EACJwT,IAAiBL,KAAYlT,WAC7Bd,IAAa5B,KAAa0C,WAC1B6rD,EAAWC,UACP7rD,EAAoBL,GAAeG,GAAUf,EAwFnD,OAlFA+I,sBAAU,WACJ8jD,EAAWh4C,YAMT8N,GACFhN,QAAQuJ,KAAR,mDAC8C2tC,EAAWh4C,UADzD,uBACiF8N,EAAoBhmB,UAKrGkmB,IAAyBlc,KAAY3F,YACpC8hB,GACDF,IAEAP,EAAyBvZ,QAAzB,2BACKuZ,EAAyBvZ,SAD9B,IAEEwZ,wBAAyBM,KAK7B5a,EAAwBtN,OAAO+H,OAAO4f,EAAyBvZ,aAEhE,CACD6Z,EACAC,EACAC,EACAC,EACA+pC,EAAWh4C,UACX7M,IAkDA,uCACE,uBACExC,UAAS,yCACPzE,EAAS,YAAc,GADhB,KADX,UAIE,qBAAGyE,UAAU,wBAAb,uBACa,IACVwD,YAAmB4L,6BAAkBi4C,EAAWh4C,WAAY,MAE/D,qBAAGrP,UAAU,mBAAb,UACGhK,YAAaqxD,EAAW73C,QACzB,+BACE,kCAAuB,OAAfkyB,QAAe,IAAfA,OAAA,EAAAA,EAAiBO,SAAU,gBAIvC,eAACsf,GAAD,CAAU7f,gBAAiBA,IAE1BnmC,GACC,oBAAGyE,UAAU,uBAAb,SACE,uBACEA,UAAU,QACVqG,KAAK,MACL,aAAW,YACXoC,MAAO,CAAC5W,QAAS,gBAJnB,4BAUJ,yBACEmO,UAAU,SACVyI,MAAO,CAAC2rC,UAAW74C,EAAS,OAAS,UACrC2E,QAAO,wBAAE,uBAAA1L,EAAA,sEACD6b,EAAag3C,EAAY3lB,GADxB,2CAGTzhC,SAAUrF,GAAca,EAN1B,SAOGL,EAAc,eAAC+E,GAAA,EAAD,IAAa5E,EAAS,YAAc,WAIpDE,IAAsB4rD,EAAWC,WAChC,sBACEtnD,UAAU,gCACVyI,MAAO,CAAC2rC,UAAW,QAFrB,SArFR,WAEE,OAAQ15C,GACN,KAAK5B,KAAauC,iBAChB,OACE,oEAEE,eAAC4f,GAAA,EAAD,OAGN,KAAKniB,KAAawC,QAChB,OACE,uCACE,eAACiF,GAAA,EAAD,CACEC,WAAY,IACZC,SAAUC,KACVC,mBAAiB,EACjBC,OAAQ,SAACzJ,GACP,OAAO,eAAC0J,GAAA,EAAD,UAAuB1J,GAAVA,MAIxB,eAAC2J,GAAA,EAAD,CAAcC,IAAKxG,EAAgByG,WAAS,OAGlD,KAAKlI,KAAa0C,UAChB,OACE,uCACE,+BAAM,eAEN,eAACsF,GAAA,EAAD,CAAcC,IAAKxG,OAGzB,QACE,OAAO,MAsDF0G,KAIJrG,GACC,yBACEoF,UAAU,wBACVE,QAASrF,EACT4N,MAAO,CAAC8+C,OAAQ,eAHlB,wCASDruD,GACC,sBAAK8G,UAAU,+BAAf,SACE,eAACI,GAAA,EAAD,CACEE,WAAW,mDACXD,MAAOnH,SAMf,eAAC4B,EAAD,CAAkBoG,MAAM,kCAK9B,SAASsyC,GAAch7C,GACrB,OACE,eAACqI,GAAA,EAAD,UACE,sBAAKb,UAAU,6BAAf,SAEGxH,EAAMuV,aClQA,SAASy5C,KAKtB,MAAgD3uD,oBAC9C,IADF,oBAAOoW,EAAP,KAAyBw4C,EAAzB,KAGA,EAAwC5uD,oBACtCsI,KAAYpI,SADd,oBAAO2uD,EAAP,KAAqBC,EAArB,KAQA,EAA6Bz4D,eAAtB+d,EAAP,EAAOA,UAAW7S,EAAlB,EAAkBA,QACX8S,EAAqBF,eAArBE,kBACP,EAAwCvC,eAAjCC,EAAP,EAAOA,gBAAiBC,EAAxB,EAAwBA,aACxB,EAAiD42B,KAA1CC,EAAP,EAAOA,gBAAiBE,EAAxB,EAAwBA,sBAMlBQ,EAAWzB,eAMXinB,EAAS,IAAIC,gBAAgBzlB,EAAS0lB,QAAQC,IAAI,UAElD3sD,EACJssD,IAAiBvmD,KAAYpI,SAC7B2uD,IAAiBvmD,KAAY7F,SAC7BsmC,IAA0BzgC,KAAYpI,SACtC6oC,IAA0BzgC,KAAY7F,QAMlC0sD,EAAyBj7C,wBA3CM,4CA2CwB,QAC3DnC,QAD2D,IAC3DA,OAD2D,EAC3DA,EAAiBG,OACjB68C,EACA/8C,IA9CmC,8CAgErC,+BAAArW,EAAA,yEAESoW,QAFT,IAESA,OAFT,EAESA,EAAiBG,OAF1B,wDAII48C,EAAgBxmD,KAAY7F,SAJhC,SAO2B0P,MAAM,GAAD,OAAIpa,IAAJ,sBAAwC,CAClE8e,OAAQ,OACRC,KAAM7Q,KAAKC,UAAU,CACnBK,UAAWwoD,IAEbh4C,QAAS,CACP,eAAgB,oBAElB7E,OAAQH,EAAgBG,SAf9B,UAOUG,EAPV,OAkBSL,EAAavH,QAlBtB,kEAoB0B4H,EAASE,OApBnC,QAoBU68C,EApBV,OAsBIR,EAAoBQ,GACpBN,EAAgBxmD,KAAY3F,WAvBhC,qDAyBSqP,EAAavH,QAzBtB,mDA2BIqkD,EAAgBxmD,KAAYpB,UA3BhC,2DAhEqC,sBAoGrC,OA/CAwD,sBAAU,WACHnJ,GAAY6S,IAAaC,GAE9B86C,MACC,CAAC5tD,EAAS6S,EAAW+6C,EAAwB96C,IA2C3CD,EAUDC,EAEA,eAAC,GAAD,UACE,oBAAGlN,UAAU,qBAAb,SAAmCkN,EAAkB/V,YAKvD8V,GAAa7R,EAEb,gBAAC,GAAD,WACE,eAAC4rD,GAAD,CAAiBC,MAAO,iBACxB,qEAKS3yD,IAAXszD,GAAyBA,EAQxB34C,GAAqBA,EAAiBra,OASzC,eAAC,GAAD,UACE,eAACsyD,GAAD,CACExlB,gBAAiBA,EACjBylB,YAAal4C,MAVf,eAAC,GAAD,UACE,oBAAGjP,UAAU,qBAAb,iCATF,eAAC,GAAD,UACE,oBAAGA,UAAU,qBAAb,yCA5BF,eAAC,GAAD,UACE,oBAAGA,UAAU,qBAAb,uDAkDR,SAASwzC,GAAch7C,GACrB,OACE,eAAC,GAAD,CAAMwH,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,sBAAKb,UAAU,WAAf,SACE,qBAAIA,UAAU,kBAAd,6BAGF,uBAAKA,UAAU,eAAf,UACE,sBAAKA,UAAU,oBAAf,SACE,iFAIDxH,EAAMuV,iBC/JF,SAASm6C,GACtB1vD,GAEA,IACaI,EACTJ,EADFE,SAAWE,iBAOb,EAAsCC,sBAAtC,oBAAOK,EAAP,KAAoBC,EAApB,KAMM0jB,EAA2Bpb,kBAA8B,CAC7D0mD,wBAAyB,KAOrB5mC,EAAqBloB,aACzB,SAACC,GAAD,uBAAmBA,EAAEC,iBAArB,aAAmB,EAAagoB,sBAE5B3S,EAAsBvV,aAC1B,SAACC,GAAD,OAAmBA,EAAEC,UAAUW,uBAOjC,EAAgChL,eAAzBkL,EAAP,EAAOA,QAASC,EAAhB,EAAgBA,aAChB,EAA2DC,eAApDC,EAAP,EAAOA,eAAgBC,EAAvB,EAAuBA,eAAgBC,EAAvC,EAAuCA,OAAQC,EAA/C,EAA+CA,SAC/C,EAKIC,eAJFC,EADF,EACEA,WACAC,EAFF,EAEEA,qBACAC,EAHF,EAGEA,iBACA0H,EAJF,EAIEA,wBAEWzH,EAAgBC,eAAtBC,KAMDwQ,EAAWC,cAMXtQ,EACJV,IAAa5B,KAAauC,kBAC1BX,IAAa5B,KAAawC,QACtBC,EAASb,IAAa5B,KAAa0C,UACnCC,EAAoBL,GAAeG,GAAUf,EAC7CyrD,EAAkBrrD,GAAca,EA3DtC,8CAoHA,mCAAAjH,EAAA,kEAESoa,EAFT,sBAGY,IAAIlT,MAAM,uCAHtB,UAMS9C,EANT,sBAOY,IAAI8C,MAAM,mCAPtB,UAUS6lB,EAVT,sBAWY,IAAI7lB,MAAM,gCAXtB,UAcStB,EAdT,sBAeY,IAAIsB,MAAM,qBAftB,UAkBSrB,EAlBT,uBAmBY,IAAIqB,MAAM,+BAnBtB,WAsBQ0sD,EAAa,MAtBrB,OAwBMxvD,QAxBN,IAwBMA,OAxBN,EAwBMA,EAAkBmD,IAAIC,QAAQmB,SAAS+4C,kBAxB7C,4CA2BgCtnC,EAAoBjV,SAASC,QAClD4mD,eACApkD,OA7BX,QA2BcqkD,EA3Bd,OA8BQ2H,EAAa3H,EAAUtqD,WA9B/B,yDAgCc,IAAIuF,MAAM,gDAhCxB,eAoCU2sD,EAA2C,CAC/Cz5C,EAAoBnV,gBACpB2uD,GAGIxoD,EAzCV,aA0CMC,KAAMzF,GAAW,IACbW,EAAe,CAAC+E,SAAU/E,GAAgB,MA3CpD,UA8CqBN,EACf,aACA8mB,EAAmB5nB,SAASC,QAC5ByuD,EACAzoD,GAlDN,qDAuDY6L,EACJoE,YAAmB,CACjBzV,UACAwU,sBACAvU,kBA3DV,0DAgEIlB,EAAe,EAAD,IAhElB,mEApHA,sBAkOA,OAjKAoK,sBAAU,WAAM,8CACd,6BAAA/O,EAAA,kEAKSoE,EALT,sBAMY,IAAI8C,MAAM,mCANtB,UAQSkT,EART,sBASY,IAAIlT,MAAM,uCATtB,UAWS6lB,EAXT,sBAYY,IAAI7lB,MAAM,gCAZtB,uBAeqC6lB,EAAmB5nB,SAASC,QAC1D0uD,cACC15C,EAAoBnV,gBACpBb,EAAiBiD,SAElBO,OApBP,OAeUmsD,EAfV,OAsBI1rC,EAAyBvZ,QAAzB,2BACKuZ,EAAyBvZ,SAD9B,IAEE6kD,wBACE/+B,KAAmBm/B,EAAmB9iC,UACtC2D,KAAmBA,KAAmB+O,aAClC,2CACA,KA5BZ,kDA+BIhoB,QAAQ9P,MAAR,MA/BJ,QAmCEmC,EAAwBtN,OAAO+H,OAAO4f,EAAyBvZ,UAnCjE,2DADc,uBAAC,WAAD,wBAuCdklD,KACC,CACDjnC,EACA3S,EACApM,EACA5J,IAsHA,uCACE,iCACE,yBACEoH,UAAU,0BACVC,SAAUgmD,EACV/lD,QAAS+lD,EAAkB,aAxOnC,2CAqOM,SAIG7qD,EACC,eAAC+E,GAAA,EAAD,IACE5E,EACF,gBAEA,oBAIJ,eAAC6E,GAAA,EAAD,CACEC,MAAOnH,EACPoH,WAAW,yBAKZ7E,GACC,sBAAKuE,UAAU,gCAAf,SA9DR,WAEE,OAAQtF,GACN,KAAK5B,KAAauC,iBAChB,OACE,oEAEE,eAAC,KAAD,OAGN,KAAKvC,KAAawC,QAChB,OACE,uCACE,eAACiF,GAAA,EAAD,CACEC,WAAY,IACZC,SAAUC,KACVC,mBAAiB,EACjBC,OAAQ,SAACzJ,GACP,OAAO,eAAC0J,GAAA,EAAD,UAAuB1J,GAAVA,MAIxB,eAAC2J,GAAA,EAAD,CAAcC,IAAKxG,EAAgByG,WAAS,OAGlD,KAAKlI,KAAa0C,UAChB,OACE,uCACE,uDAEA,eAACsF,GAAA,EAAD,CAAcC,IAAKxG,OAGzB,QACE,OAAO,MA6BF0G,KAIJrG,GACC,yBACEoF,UAAU,wBACVE,QAASrF,EAFX,wCAQJ,eAACC,EAAD,CAAkBoG,MAAM,iCChRf,SAASunD,KAgBtB,IAAOprD,EAAc0/C,eAAd1/C,WAcP,EACEsyB,aAAmBtyB,GADd6zB,EAAP,EAAOA,aAAcjB,EAArB,EAAqBA,cAAeF,EAApC,EAAoCA,iBAAkBI,EAAtD,EAAsDA,eAG/CjjB,EAAqBF,eAArBE,kBAOD7M,EAA2B4vB,GAAiB/iB,EAOlD,SAASs5C,EAAavoC,GACpB,MAEIA,EADFvG,uBAAyBsf,EAD3B,EAC2BA,sBAAuBt+B,EADlD,EACkDA,SAKlD,OANA,EAC4D+sB,SAM/C0D,KAAmB6M,WAC9BgB,GACAhN,KAAYgN,KAA2BhN,KAAYA,KAAYu7B,MAExD,eAAC2C,GAAD,CAA2BxvD,SAAUA,IAIvC,KAQT,GAhC2By3B,IAAmBhvB,KAAY7F,UAgCxC+E,EAChB,OACE,eAAC,GAAD,UACE,sBAAKL,UAAU,0BAAf,SACE,eAACs8B,GAAA,EAAD,QAOR,GAAIvM,EACF,OACE,eAAC,GAAD,UACE,eAAC0sB,GAAD,MAMN,GAAIp8C,EACF,OACE,eAAC,GAAD,UACE,sBAAKL,UAAU,cAAf,SACE,eAACI,GAAA,EAAD,CACEC,MAAOA,EACPC,WAAW,8BAQrB,GAAI4wB,EAAc,CAChB,IAAMkJ,EAAalJ,EAAaC,gCAG5BwoB,EA/GY,SAgHZC,EAAqB,GACzB,IAAK,IAAD,SAEAxf,QAFA,IAEAA,OAFA,EAEAA,EAAYr+B,IAAIC,QAAQmB,SAASq4C,qBADjCmE,EADA,EACAA,eAAgBC,EADhB,EACgBA,mBAElB,MAAOv5C,GACPs5C,EArHc,SAsHdC,EAAqB,GAGvB,OACE,eAAC,GAAD,UACE,eAACgD,GAAD,CACElkD,SAAUw4B,EACV2rB,kBAAmB,kBACjB,eAAC6J,GAAD,CACEl3C,OAAQmqC,EACRgN,WAAY/M,KAGhBtN,cAAe,kBACb,eAACia,GAAD,CACE9tD,YAAa2e,KAAqBgB,WAClC1f,SAAUw4B,EACVs1B,aAAcA,SAS1B,OAAO,+BAGT,SAAShT,GAAch7C,GAKrB,IAAM87C,EAAUC,eAgBhB,OACE,eAAC,GAAD,CAAMv0C,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,uBAAKb,UAAU,WAAf,UACE,qBAAIA,UAAU,kBAAd,uBACA,yBAAQA,UAAU,mBAAmBE,QAf7C,SAAiB1K,GACfA,EAAMC,iBAEN6+C,EAAQ1K,KAAK,eAYP,yBAMDpxC,EAAMuV,cCjMA,SAAS26C,KAatB,OACE,eAAC,GAAD,UACE,eAAC9D,GAAD,CACEnsD,YAAa6X,KAAoB6H,WACjC4lC,iBAZN,SAA0Bx4C,GACxB,MAAM,cAAN,OAAqBA,QAiBzB,SAASiuC,GAAch7C,GAKrB,IAAM87C,EAAUC,eAehB,OACE,eAAC,GAAD,CAAMv0C,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,uBAAKb,UAAU,WAAf,UACE,qBAAIA,UAAU,kBAAd,uBACA,yBAAQA,UAAU,mBAAmBE,QAd7C,SAAyB1K,GACvBA,EAAMC,iBACN6+C,EAAQ1K,KAAK,cAYP,8BAMDpxC,EAAMuV,cCbf,IAAM43C,GAA+B,CAEnCv/B,yBAAyB,GAGZ,SAASuiC,GAAqBnwD,GAC3C,IACYqtD,EAERrtD,EAFFyH,SACWrH,EACTJ,EADFE,SAAWE,iBAOb,EAAsCC,sBAAtC,oBAAOK,EAAP,KAAoBC,EAApB,KACA,EACEN,sBADF,oBAAO+vD,EAAP,KAA+BC,EAA/B,KAOMhsC,EAA2Bpb,kBAA8B,CAC7DukD,mBAAoB,KAOhBtkC,EAAkBroB,aACtB,SAACC,GAAD,uBAAmBA,EAAEC,iBAArB,aAAmB,EAAamoB,mBAE5B9S,EAAsBvV,aAC1B,SAACC,GAAD,OAAmBA,EAAEC,UAAUW,uBAOjC,EAAgChL,eAAzBkL,EAAP,EAAOA,QAASC,EAAhB,EAAgBA,aAChB,EAA2DC,eAApDC,EAAP,EAAOA,eAAgBC,EAAvB,EAAuBA,eAAgBC,EAAvC,EAAuCA,OAAQC,EAA/C,EAA+CA,SAC/C,EAKIJ,eAJcwuD,EADlB,EACEvuD,eACgBwuD,EAFlB,EAEEvuD,eACQwuD,EAHV,EAGEvuD,OACUwuD,EAJZ,EAIEvuD,SAEF,EAKIC,aAAwBgrD,IAJ1B/qD,EADF,EACEA,WACAC,EAFF,EAEEA,qBACAC,EAHF,EAGEA,iBACA0H,EAJF,EAIEA,wBAEWzH,EAAgBC,eAAtBC,KACAymC,EAAmBD,KAAnBC,gBAMDj2B,EAAWC,cAMXtQ,EACJV,IAAa5B,KAAauC,kBAC1BX,IAAa5B,KAAawC,SAC1B2tD,IAAyBnwD,KAAauC,kBACtC4tD,IAAyBnwD,KAAawC,QAClCC,EAASb,IAAa5B,KAAa0C,UACnCC,EACJL,GAAeG,GAAUf,GAAkBuuD,EACvC9C,EAAkBrrD,GAAca,GAAqBoqD,EAMrDqD,EAAkCn8C,wBA9EqC,4CAgF3E,CAAC2U,EAAD,OAAkB9S,QAAlB,IAAkBA,OAAlB,EAAkBA,EAAqBnV,gBAAiBb,IAhFmB,8CA2H7E,iCAAApE,EAAA,kEAESoE,GAAqB8oB,EAF9B,iEAIkCA,EAAgB/nB,SAASC,QACpD0yB,UAD2B,OAE1B1d,QAF0B,IAE1BA,OAF0B,EAE1BA,EAAqBnV,gBACrBb,EAAiBiD,SAElBO,OATP,OAIU+pD,EAJV,OAUkBljB,EAA+BkjB,EAAtC9sB,MAAqBoc,EAAiB0Q,EAAjB1Q,cAE5BoT,EAA0B,CAAC5lB,eAAcwS,kBAZ7C,kDAcItlC,QAAQ9P,MAAR,MACAwoD,OAA0Bv0D,GAf9B,2DA3H6E,+BA8I9D60D,IA9I8D,6EA8I7E,qDAAA30D,EAAA,kEAESo0D,EAFT,sBAGY,IAAIltD,MAAM,sCAHtB,UAMSgmB,EANT,sBAOY,IAAIhmB,MAAM,6BAPtB,UAUStB,EAVT,sBAWY,IAAIsB,MAAM,qBAXtB,UAcSrB,EAdT,sBAeY,IAAIqB,MAAM,+BAftB,cAkBWunC,EAA+B2lB,EAA/B3lB,aAAcwS,EAAiBmT,EAAjBnT,cAlBzB,UAoB0C,6CApB1C,wBAoBoByF,EApBpB,EAoBWzkC,QAGD+jC,EAA2BU,EAC3BkO,EAAgB,IAAI/uD,EAAa0Z,IAAI4C,SACzC6jC,EACAvX,GA1BN,UAgC4BmmB,EAAcxvD,QACnCyvD,UAAUjvD,EAASsnB,EAAgBjoB,iBACnC2C,OAlCP,WAgCUitD,EAhCV,OAoCUC,EAAkBhS,gBAAK7B,GACvB8T,EAAcjS,gBAAK+R,IAErBC,EAAgB/R,GAAGgS,GAvC3B,kCAyCcC,EAAaF,EAAgBG,IAAIF,GACjCG,EAAeH,EAAYI,IAAIH,GAC/BI,EAA+C,CACnDloC,EAAgBjoB,gBAChBiwD,EAAavzD,YAETyJ,EA/Cd,aAgDUC,KAAMzF,GAAW,IACbW,EAAe,CAAC+E,SAAU/E,GAAgB,MAjDxD,UAqDciuD,EACJ,UACAI,EAAcxvD,QACdgwD,EACAhqD,GAzDV,8MA9I6E,oEAkN7E,+BAAApL,EAAA,kEAESoa,EAFT,sBAGY,IAAIlT,MAAM,uCAHtB,UAMS9C,EANT,sBAOY,IAAI8C,MAAM,mCAPtB,UAUSgmB,EAVT,sBAWY,IAAIhmB,MAAM,6BAXtB,UAcStB,EAdT,sBAeY,IAAIsB,MAAM,qBAftB,UAkBSrB,EAlBT,uBAmBY,IAAIqB,MAAM,+BAnBtB,yBAsBUytD,IAtBV,eAwBU/C,EAAqC,CACzCx3C,EAAoBnV,gBACpBb,EAAiBiD,SAGb+D,EA7BV,aA8BMC,KAAMzF,GAAW,IACbW,EAAe,CAAC+E,SAAU/E,GAAgB,MA/BpD,UAkCqBN,EACf,kBACAinB,EAAgB/nB,SAASC,QACzBwsD,EACAxmD,GAtCN,qDA2CY6L,EACJoE,YAAmB,CACjBzV,UACAwU,sBACAvU,kBA/CV,WAsDQD,EAAQ9C,gBACRsB,EAAiBmD,IAAIC,QAAQmB,SAASugB,iBAAiB,GAAGpmB,cAvDlE,kCAyDcwY,IAzDd,0DA6DI3W,EAAe,EAAD,IA7DlB,2DAlN6E,+BAmR9D2W,IAnR8D,6EAmR7E,uBAAAtb,EAAA,yDACOktC,EADP,0EAIU1sC,OAAO+a,SAASC,QAAQ,CAC5BN,OAAQ,oBACRO,OAAQ,CACNC,KAAM,QACN/d,QAASuvC,KARjB,uDAYIvxB,QAAQC,IAAR,MAZJ,0DAnR6E,sBAmW7E,OA5QA7M,sBAAU,WACR2lD,MACC,CAACA,IAEJ3lD,sBAAU,WASR,IAAOoyC,EACL/8C,EACAmD,IAAIC,QAAQmB,SAFPw4C,yCAIHA,GAA4Cv7C,IAC9CyiB,EAAyBvZ,QAAzB,2BACKuZ,EAAyBvZ,SAD9B,IAEE0iD,mBACErQ,EAAyCr+C,gBACzC8C,EAAQ9C,cACJ,uDACA,MAKVkL,EAAwBtN,OAAO+H,OAAO4f,EAAyBvZ,YAC9D,CAAClJ,EAASoI,EAAyB5J,IA+OpC,uCACE,iCACE,yBACEoH,UAAU,0BACVC,SAAUgmD,EACV/lD,QAAS+lD,EAAkB,aAzW0C,2CAsWvE,SAIG7qD,EAAc,eAAC+E,GAAA,EAAD,IAAa5E,EAAS,OAAS,YAGhD,eAAC6E,GAAA,EAAD,CACEC,MAAOnH,EACPoH,WAAW,yBAKZ7E,GACC,sBAAKuE,UAAU,gCAAf,SA9ER,WAEE,GAAIipD,IAAyBnwD,KAAauC,iBACxC,OACE,yEAEE,eAAC,KAAD,OAKN,GAAI4tD,IAAyBnwD,KAAawC,QACxC,OACE,uCACE,sEAEE,eAAC,KAAD,OAEF,eAACwF,GAAA,EAAD,CAAcC,IAAK+nD,EAA4B9nD,WAAS,OAM9D,OAAQtG,GACN,KAAK5B,KAAauC,iBAChB,OACE,yEAEE,eAAC,KAAD,OAGN,KAAKvC,KAAawC,QAChB,OACE,uCACE,eAACiF,GAAA,EAAD,CACEC,WAAY,IACZC,SAAUC,KACVC,mBAAiB,EACjBC,OAAQ,SAACzJ,GACP,OAAO,eAAC0J,GAAA,EAAD,UAAuB1J,GAAVA,MAIxB,eAAC2J,GAAA,EAAD,CAAcC,IAAKxG,EAAgByG,WAAS,OAGlD,KAAKlI,KAAa0C,UAChB,OACE,uCACE,uDAEA,eAACsF,GAAA,EAAD,CAAcC,IAAKxG,OAGzB,QACE,OAAO,MAuBF0G,KAIJrG,GACC,yBACEoF,UAAU,wBACVE,QAASrF,EAFX,4CAQJ,eAACC,EAAD,CAAkBoG,MAAM,mCCla9B,IAAM2oD,GAAc,SAEL,SAASC,KAgBtB,IAAOzsD,EAAc0/C,eAAd1/C,WAcP,EACEsyB,aAAmBtyB,GADd6zB,EAAP,EAAOA,aAAcjB,EAArB,EAAqBA,cAAeF,EAApC,EAAoCA,iBAAkBI,EAAtD,EAAsDA,eAG/CjjB,EAAqBF,eAArBE,kBAOD7M,EAA2B4vB,GAAiB/iB,EAOlD,SAASs5C,EAAavoC,GACpB,MAEIA,EADFvG,uBAAyBsf,EAD3B,EAC2BA,sBAAuBt+B,EADlD,EACkDA,SAAU+sB,EAD5D,EAC4DA,OAI5D,GAAIA,IAAW0D,KAAmBmN,OAAQ,CACxC,IAAOza,EAAiBnjB,EAAjBmjB,cACDkrC,EAAS,OAAGlrC,QAAH,IAAGA,OAAH,EAAGA,EAAe9f,IAAIC,QAAQmB,SAASugB,iBAAiB,GAEvE,OAAO,eAAC/B,GAAA,EAAD,CAAcC,eAAgBmrC,EAAWruD,SAAUA,IAI5D,OACE+sB,IAAW0D,KAAmBiN,SAC9B3Q,IAAW0D,KAAmB8M,0BAG5Be,GACAhN,KAAYgN,KAA2BhN,KAAYA,KAAYu7B,MAGxD,+BAIP,eAACoD,GAAD,CAEE1oD,SAAUwlB,IAAW0D,KAAmB8M,0BACxCv9B,SAAUA,IAMT,KAQT,GApD2By3B,IAAmBhvB,KAAY7F,UAoDxC+E,EAChB,OACE,eAAC,GAAD,UACE,sBAAKL,UAAU,0BAAf,SACE,eAACs8B,GAAA,EAAD,QAOR,GAAIvM,EACF,OACE,eAAC,GAAD,UACE,eAAC0sB,GAAD,MAMN,GAAIp8C,EACF,OACE,eAAC,GAAD,UACE,sBAAKL,UAAU,cAAf,SACE,eAACI,GAAA,EAAD,CACEC,MAAOA,EACPC,WAAW,8BAQrB,GAAI4wB,EAAc,CAChB,IAAMkJ,EAAalJ,EAAaC,gCAG5BskB,EAAgBoU,GAChBnU,EAAoB,GACpB0F,EAAgByO,GAChBtO,EAAoB,GACxB,IAAK,IAAD,SAEAnhB,QAFA,IAEAA,OAFA,EAEAA,EAAYr+B,IAAIC,QAAQmB,SAASq4C,qBADjCC,EADA,EACAA,cAAeC,EADf,EACeA,kBAAmB0F,EADlC,EACkCA,cAAeG,EADjD,EACiDA,kBAEnD,MAAOl7C,GACPo1C,EAAgBoU,GAChBnU,EAAoB,GACpB0F,EAAgByO,GAChBtO,EAAoB,GAGtB,OACE,eAAC,GAAD,UACE,eAACqB,GAAD,CACElkD,SAAUw4B,EACV2rB,kBAAmB,kBACjB,eAAC6J,GAAD,CACEl3C,OAAQimC,EACRkR,WAAYjR,EACZkR,QAASxL,EACTyL,YAAatL,KAGjBjP,cAAe,kBACb,eAACia,GAAD,CACE9tD,YAAa2e,KAAqBc,QAClCxf,SAAUw4B,EACVs1B,aAAcA,SAS1B,OAAO,+BAGT,SAAShT,GAAch7C,GAKrB,IAAM87C,EAAUC,eAgBhB,OACE,eAAC,GAAD,CAAMv0C,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,uBAAKb,UAAU,WAAf,UACE,qBAAIA,UAAU,kBAAd,sBACA,yBAAQA,UAAU,mBAAmBE,QAf7C,SAAiB1K,GACfA,EAAMC,iBAEN6+C,EAAQ1K,KAAK,cAYP,yBAMDpxC,EAAMuV,cC5NA,SAASg8C,KAatB,OACE,eAAC,GAAD,UACE,eAACnF,GAAD,CACEnsD,YAAa6X,KAAoB2H,QACjC8lC,iBAZN,SAA0Bx4C,GACxB,MAAM,aAAN,OAAoBA,IAYhB8sB,sCAAsC,MAM9C,SAASmhB,GAAch7C,GAKrB,IAAM87C,EAAUC,eAehB,OACE,eAAC,GAAD,CAAMv0C,UAAU,kBAAhB,SACE,gBAACa,GAAA,EAAD,WACE,uBAAKb,UAAU,WAAf,UACE,qBAAIA,UAAU,kBAAd,sBACA,yBAAQA,UAAU,mBAAmBE,QAd7C,SAAyB1K,GACvBA,EAAMC,iBACN6+C,EAAQ1K,KAAK,aAYP,gCAMDpxC,EAAMuV,cC1Cf,ICOKi8C,GDPCC,GAA8B,cAErB,SAASC,KACtB,OACE,eAAC,KAAD,UACG,CAEC,eAAC,KAAD,CAAoBC,OAAK,EAACx6D,KAAK,IAAIiR,OAAQ,kBAAM,eAAC+6C,GAAD,MAAtC,UACX,eAAC,KAAD,CAEEwO,OAAK,EACLx6D,KAAK,QACLiR,OAAQ,kBAAM,eAAC+zC,GAAD,MAHV,QAKN,eAAC,KAAD,CAEEwV,OAAK,EACLx6D,KAAK,cACLiR,OAAQ,kBAAM,eAAC8kD,GAAD,MAHV,cAKN,eAAC,KAAD,CAEEyE,OAAK,EACLx6D,KAAI,sBAAiBs6D,IACrBrpD,OAAQ,kBAAM,eAACkmD,GAAD,MAHV,sBAKN,eAAC,KAAD,CAEEqD,OAAK,EACLx6D,KAAK,YACLiR,OAAQ,kBAAM,eAACi1C,GAAD,MAHV,YAKN,eAAC,KAAD,CAEEsU,OAAK,EACLx6D,KAAK,aACLiR,OAAQ,kBAAM,eAAC8nD,GAAD,MAHV,aAKN,eAAC,KAAD,CAEEyB,OAAK,EACLx6D,KAAI,qBAAgBs6D,IACpBrpD,OAAQ,kBAAM,eAAC6nD,GAAD,MAHV,oBAKN,eAAC,KAAD,CAEE0B,OAAK,EACLx6D,KAAK,WACLiR,OAAQ,kBAAM,eAACw5C,GAAD,MAHV,WAKN,eAAC,KAAD,CAEE+P,OAAK,EACLx6D,KAAK,YACLiR,OAAQ,kBAAM,eAACmpD,GAAD,MAHV,YAKN,eAAC,KAAD,CAEEI,OAAK,EACLx6D,KAAI,oBAAes6D,IACnBrpD,OAAQ,kBAAM,eAACkpD,GAAD,MAHV,mBAKN,eAAC,KAAD,CAEEK,OAAK,EACLx6D,KAAK,uBACLiR,OAAQ,kBAAM,eAACyzC,GAAD,MAHV,uBAKN,eAAC,KAAD,CAEE8V,OAAK,EACLx6D,KAAK,cACLiR,OAAQ,kBAAM,eAAC6+C,GAAD,MAHV,wBAKN,eAAC,KAAD,CAEE0K,OAAK,EACLx6D,KAAI,sBAAiBs6D,IACrBrpD,OAAQ,kBAAM,eAACk8C,GAAD,MAHV,+BAKN,eAAC,KAAD,CAEEqN,OAAK,EACLx6D,KAAK,WACLiR,OAAQ,kBAAM,eAAC4jD,GAAD,MAHV,WAKN,eAAC,KAAD,CAEE2F,OAAK,EACLx6D,KAAK,4BACLiR,OAAQ,kBAAM,eAACijD,GAAD,MAHV,kBAKN,eAAC,KAAD,CAEEsG,OAAK,EACLx6D,KAAK,eACLiR,OAAQ,kBAAM,eAAC4vC,GAAD,MAHV,eAKN,eAAC,KAAD,CAAoB2Z,OAAK,EAACx6D,KAAK,UAAUiR,OAAQ,kBAAM,eAAC,GAAD,MAA5C,UAEX,eAAC,KAAD,CAAsBwpD,UAAW3N,IAAtB,eE1GJ,SAAS4N,GAAI7xD,GAK1B,IAAOkoC,EAAYC,eAAZD,SAMA4pB,GAAqB9xD,GAAS,IAA9B8xD,kBAEDC,EACJ,gCAAOD,EAAoBA,IAAsB,eAACJ,GAAD,MA2BnD,OACE,uCAEE,eAACrpB,GAAD,IArBe,MAAbH,EACK,qCAAG6pB,IAKV,uCACE,eAAC3kB,GAAD,IACC2kB,EACD,eAACnqB,GAAD,OAkBF,eAACE,GAAD,ODtBS,SAASkqB,GAAKhyD,GAC3B,IAAOoI,EAAUpI,EAAVoI,OAMDgO,EAAsBvV,aAC1B,SAACC,GAAD,OAAmBA,EAAEC,UAAUW,uBAOjC,EAA0BrB,sBAA1B,oBAAOwH,EAAP,KAAcoqD,EAAd,KACA,EAA4C5xD,qBAAkB,GAA9D,oBAAO6xD,EAAP,KAAuBC,EAAvB,KACA,EAA8C9xD,oBAAQ,gBAGnDmxD,GAAYY,gBAAkBzpD,KAAYpI,UAH7C,oBAAO8xD,EAAP,KAAwBC,EAAxB,KAUA,EAAgC57D,eAAzBkL,EAAP,EAAOA,QAASC,EAAhB,EAAgBA,aACTgT,EAAkBL,eAAlBK,eACAxC,EAAgB8C,eAAhB9C,aACDkgD,EAAgBv/C,eAMhBC,EAAWC,cAMXs/C,EAA4Bj+C,wBA1CW,4CA0CsB,CACjEg+C,EACA19C,EACAhT,IAGI4wD,EAAwBl+C,wBAhDe,4CAgDc,CACzD3S,EACAwU,EACAnD,EACA4B,EACAhT,IAGI6wD,EAAmCn+C,wBAxDI,4CA0D3C,CAAClC,IA1D0C,8CAuF7C,6BAAArW,EAAA,kEAES7D,IAFT,sBAGY,IAAI+K,MAAM,sCAHtB,uBAMyByvD,wBAAqBx6D,KAN9C,qBAMWstB,KAGG3Y,QATd,sBAUY,IAAI5J,MAAM,8BAVtB,UAaSmP,EAAavH,QAbtB,mDAeIwnD,GAAmB,SAACl9B,GAAD,mBAAC,eACfA,GADc,mBAEhBo8B,GAAYY,gBAAkBzpD,KAAY3F,eAjBjD,qDAoBSqP,EAAavH,QApBtB,mDAsBImnD,EAAS,IAAI/uD,MAAM,oCAtBvB,2DAvF6C,oEAiH7C,uBAAAlH,EAAA,kEAES6Y,GAAmBhT,EAF5B,iEAMU0wD,EAAc,CAAC1wD,iBANzB,uDAQIowD,EAAS,EAAD,IARZ,0DAjH6C,oEA6H7C,uBAAAj2D,EAAA,kEAGO4F,GACAwU,GACAvB,GACAhT,EANP,iEAWUoR,EACJoE,YAAmB,CACjBzV,UACAwU,sBACAvU,kBAfR,uDAmBIowD,EAAS,EAAD,IAnBZ,0DA7H6C,sBAqJ7C,OApFAlnD,sBAAU,WACRonD,EACEz1D,OAAO+H,OAAO4tD,GAAiBxiC,OAAM,SAAC+iC,GAAD,OAAQA,IAAOjqD,KAAY3F,gBAEjE,CAACqvD,IAEJtnD,sBAAU,WACRynD,MACC,CAACA,EAA2B3wD,IAE/BkJ,sBAAU,WACR0nD,MACC,CAACA,IAEJ1nD,sBAAU,WACR2nD,MACC,CAACA,IAoEGtqD,EAAO,CAACP,QAAOqqD,mBEjLT,SAASW,GAAU7yD,GAChC,IAAO6H,EAAS7H,EAAT6H,MAEP,OACE,gBAACQ,GAAA,EAAD,WACE,sBACE4H,MAAO,CACL6iD,QAAS,cACT5O,UAAW,UAHf,SAKE,sBAAIj0C,MAAO,CAACk0C,SAAU,QAAtB,UACE,uBACE38C,UAAU,QACVqG,KAAK,MACL,aAAW,+BACXoC,MAAO,CAAC5W,QAAS,gBAJnB,0BAMQ,IAPV,mCAYF,sBACE4W,MAAO,CACLi0C,UAAW,SACX6O,SAAU,IACV15D,QAAS,QACT01D,OAAQ,UALZ,SAOE,eAACnnD,GAAA,EAAD,CAAyBC,MAAOA,EAAOC,WAAW,W,SFhBrD0pD,K,mCAAAA,Q,KG1BL,IAYewB,GAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,+BAAqBzgD,MAAK,YAAgD,IAA9C0gD,EAA6C,EAA7CA,OAAQC,EAAqC,EAArCA,OAAQC,EAA6B,EAA7BA,OAAQC,EAAqB,EAArBA,OAAQC,EAAa,EAAbA,QAC1DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,O,UCqBRzsD,I,OAAOyiD,SAASO,eAAe,SAGrB,eAAhBtxD,KAAgCmE,cAIhCG,OAAO+a,UACL/a,OAAO+a,SAASi8C,6BACfh3D,OAAO+a,SAASi8C,4BAA6B,GAGzC,IAAMC,GAAkB,SAC7BpvB,GAD6B,OAG7B,IAAIqvB,IAAa,CACfC,KAAMC,iBACJxvB,YAAoBC,GACpB,IAAIwvB,IAAS,CACXC,IAAK,gBAAEC,EAAF,EAAEA,cAAF,gBAAwB17D,IAAxB,YAAyC07D,OAGlDC,MAAO,IAAIC,IAAc,CAOvBC,aAAc,CACZC,QAAS,CACPC,OAAQ,CACN1iB,SAAU,CACR2iB,MADQ,WAC+B,IAAjCC,EAAgC,uDAArB,GAAIC,EAAiB,uCACpC,MAAM,GAAN,mBAAWD,GAAX,YAAwBC,QAKhCC,UAAW,CACTJ,OAAQ,CACNziB,WAAY,CACV0iB,MADU,WAC6B,IAAjCC,EAAgC,uDAArB,GAAIC,EAAiB,uCACpC,MAAM,GAAN,mBAAWD,GAAX,YAAwBC,cAS3B,OAAT/tD,IACF4B,iBACE,eAAC,IAAD,CAAUi8B,MAAOA,GAAjB,SACE,eAAC,IAAD,UACE,eAACte,GAAA,EAAD,CACExL,mBAAoB,WAElB8pB,GAAMpxB,SAASuF,eACf6rB,GAAMpxB,SAAS8K,gBAEjBzD,gBAAiB,WAEf+pB,GAAMpxB,SAAS8K,gBAEjBvD,gBAAiBrhB,IAVnB,SAWE,eAACs7D,EAAA,EAAD,CAAgBC,OAAQjB,GAAgBpvB,IAAxC,SACE,eAAC2tB,GAAD,CACE5pD,OAAQ,gBAAEP,EAAF,EAAEA,MAAOqqD,EAAT,EAASA,eAAT,OACNrqD,EACE,eAACgqD,GAAD,CAAKC,kBAAmB,kBAAM,eAACe,GAAD,CAAWhrD,MAAOA,OAC9CqqD,EACF,eAACL,GAAD,IACE,gBAOhBrrD,IAOJwsD,M,gCCtHO,IAAKrlC,EAAZ,kC,SAAYA,K,QAAAA,E,WAAAA,M","file":"static/js/main.79313368.chunk.js","sourcesContent":["import {useContext} from 'react';\n\nimport {Web3ModalContextValue, Web3ModalContext} from '../Web3ModalManager';\n\n/**\n * useWeb3Modal(): Web3ModalContextValue\n *\n * Internal hook to access wallet connectivity and connected state.\n *\n * @example\n * const {account, connected, networkId, ...} = useWeb3Modal();\n */\nexport function useWeb3Modal(): Web3ModalContextValue {\n return useContext(Web3ModalContext);\n}\n","export default function TimesSVG() {\n return (\n \n \n \n );\n}\n","import {config as dotenvConfig} from 'dotenv';\nimport {IProviderOptions} from 'web3modal';\nimport {isMobile} from '@walletconnect/browser-utils';\nimport {resolve} from 'path';\nimport WalletConnectProvider from '@walletconnect/web3-provider';\n\nimport {EnvironmentName} from './util/types';\n\ndotenvConfig({path: resolve(__dirname, '../.env')});\n\n/**\n * Global DApp Config\n */\n\nconst {\n REACT_APP_DAO_REGISTRY_CONTRACT_ADDRESS,\n REACT_APP_DEFAULT_CHAIN_NAME_LOCAL,\n REACT_APP_ENVIRONMENT,\n REACT_APP_GRAPH_API_URL,\n REACT_APP_INFURA_PROJECT_ID_DEV,\n REACT_APP_INFURA_PROJECT_ID_LOCAL,\n REACT_APP_INFURA_PROJECT_ID_PROD,\n REACT_APP_MULTICALL_CONTRACT_ADDRESS,\n REACT_APP_SNAPSHOT_HUB_API_URL,\n REACT_APP_COUPON_API_URL,\n REACT_APP_SNAPSHOT_SPACE,\n} = process.env;\n\nexport const ENVIRONMENT = REACT_APP_ENVIRONMENT as EnvironmentName | undefined;\n\n/**\n * SNAPSHOT_HUB_API_URL\n *\n * @note For `ENVIRONMENT=localhost` we need to use CRA's local proxy\n * so that we can communicate with our develop Snapshot Hub API\n * without any CORS issues.\n *\n * @see src/setupProxy.js\n */\nexport const SNAPSHOT_HUB_API_URL: string | undefined =\n ENVIRONMENT === 'localhost'\n ? '/snapshot-hub'\n : REACT_APP_SNAPSHOT_HUB_API_URL;\n\nexport const COUPON_API_URL: string | undefined = REACT_APP_COUPON_API_URL;\n\n// The Graph API URL\nexport const GRAPH_API_URL = REACT_APP_GRAPH_API_URL;\n\n// Network IDs, when users change wallet networks\nexport const CHAINS = {\n MAINNET: 1,\n ROPSTEN: 3,\n RINKEBY: 4,\n GOERLI: 5,\n KOVAN: 42,\n GANACHE: 1337,\n};\n\n// Network names for modal messaging\nexport const CHAIN_NAME_FULL = {\n [CHAINS.MAINNET]: 'Main Ethereum Network',\n [CHAINS.ROPSTEN]: 'Ropsten Test Network',\n [CHAINS.RINKEBY]: 'Rinkeby Test Network',\n [CHAINS.GOERLI]: 'Görli Test Network',\n [CHAINS.KOVAN]: 'Kovan Test Network',\n [CHAINS.GANACHE]: 'Ganache Test Network',\n};\n\nexport const DEFAULT_CHAIN =\n REACT_APP_ENVIRONMENT === 'production'\n ? CHAINS.MAINNET\n : REACT_APP_ENVIRONMENT === 'development'\n ? CHAINS.RINKEBY\n : REACT_APP_DEFAULT_CHAIN_NAME_LOCAL // Set this to change local development chain\n ? CHAINS[REACT_APP_DEFAULT_CHAIN_NAME_LOCAL]\n : CHAINS.GANACHE; // Defaults to a Ganache private network (1337)\n\nexport const ETHERSCAN_URLS: {[chainId: number]: string} = {\n [CHAINS.MAINNET]: `https://etherscan.io`,\n [CHAINS.ROPSTEN]: `https://ropsten.etherscan.io`,\n [CHAINS.RINKEBY]: `https://rinkeby.etherscan.io`,\n [CHAINS.GOERLI]: `https://goerli.etherscan.io`,\n [CHAINS.KOVAN]: `https://kovan.etherscan.io`,\n};\n\nexport const INFURA_WS_URLS: {[chainId: number]: string} = {\n [CHAINS.MAINNET]: `wss://mainnet.infura.io/ws/v3`,\n [CHAINS.ROPSTEN]: `wss://ropsten.infura.io/ws/v3`,\n [CHAINS.RINKEBY]: `wss://rinkeby.infura.io/ws/v3`,\n [CHAINS.GOERLI]: `wss://goerli.infura.io/ws/v3`,\n [CHAINS.KOVAN]: `wss://kovan.infura.io/ws/v3`,\n};\n\n// Infura Project Id\nexport const INFURA_PROJECT_ID =\n REACT_APP_ENVIRONMENT === 'production'\n ? REACT_APP_INFURA_PROJECT_ID_PROD\n : REACT_APP_ENVIRONMENT === 'development'\n ? REACT_APP_INFURA_PROJECT_ID_DEV\n : REACT_APP_INFURA_PROJECT_ID_LOCAL;\n\n// Ethereum Provider URL\nexport const ETHEREUM_PROVIDER_URL: string = INFURA_WS_URLS[DEFAULT_CHAIN]\n ? `${INFURA_WS_URLS[DEFAULT_CHAIN]}/${INFURA_PROJECT_ID}`\n : DEFAULT_CHAIN === CHAINS.GANACHE\n ? /**\n * Ganache over WebSocket should work. @note Is not tested, yet.\n * Attempting to be consistent with a WebSocket URL to avoid more logic.\n *\n * @link https://www.trufflesuite.com/docs/truffle/reference/configuration#networks\n */\n 'ws://127.0.0.1:7545'\n : '';\n\n/**\n * Wallet Connect config\n */\n\n/**\n * Tell Web3modal what providers we have available.\n *\n * The built-in web browser provider (only one can exist at a time),\n * MetaMask, Brave or Opera is added automatically by Web3modal\n */\nexport const WALLETCONNECT_PROVIDER_OPTIONS: IProviderOptions = {\n // Injected providers\n injected: {\n display: {\n name: 'MetaMask',\n description: 'Connect with the provider in your Browser',\n },\n package: null,\n },\n // WalletConnect provider\n walletconnect: {\n display: {\n name: 'WalletConnect',\n description: 'Connect with your mobile wallet',\n },\n package: WalletConnectProvider,\n options: {\n infuraId: INFURA_PROJECT_ID, // required\n qrcodeModalOptions: {\n mobileLinks: isMobile()\n ? ['rainbow', 'metamask', 'argent', 'trust']\n : [],\n },\n },\n },\n};\n\n/**\n * CORE CONTRACTS\n * @note as per https://github.com/openlawteam/tribute-contracts#architecture\n *\n * - DAO Registry (@note uses dao address for the contract address)\n * - DAO Factory\n */\n\n// If developing locally, include your DaoRegistry contract address in your `.env` file.\nexport const DAO_REGISTRY_CONTRACT_ADDRESS =\n REACT_APP_DAO_REGISTRY_CONTRACT_ADDRESS;\n\nexport const DAO_FACTORY_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0x392E9D1c7FaE6C62853e089466FFAE3F0a93c680',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x6d92a8E4aB80adcBbFDA44ef69fe847f82def641',\n};\n\nexport const BANK_FACTORY_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0x0d316BAa42a0538f2aAca3F08D368FE9C4A87A7A',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0xcD1639FD072113CC86e15f65f1505C6D58Aa7412',\n};\n\n// @todo\nexport const NFT_COLLECTION_FACTORY_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0xf0D4BC92F8aD06CC163B96459787Dd563aAFC1f7',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0xcF34FFFBba648719DAe106202674949f1679772B',\n};\n\n// @todo\nexport const ERC20_TOKEN_FACTORY_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0x69Bd1bE55Fff22bE1d5468dFf1a6d0a184c520F7',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x862d71d6E9Be8a7495EfEBa6f2b657b00E629c95',\n};\n\n/**\n * ADAPTER CONTRACTS\n * @note as per https://github.com/openlawteam/tribute-contracts#architecture\n *\n * - Configuration\n * - CouponOnboardingContract\n * - Managing\n * - Onboarding\n * - Voting\n * - Offchain voting\n * - Financing\n * - Tribute\n * - Distribute\n * - Rage quit\n * - Guild kick\n * - BankAdapter\n * - TributeNFT\n * - NFTAdapter\n * - DaoRegistryAdapter\n */\n\nexport const VOTING_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0xc9415afc432CC56912f54682cC2Ea80ADdE1a89B',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0xfB4E7C2FD8Ceb2757D2C4cE4749ebE326fc369D4',\n};\n\nexport const CONFIGURATION_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0x92866ac08edFEAA8C52dEF0c12926FA7E95df8fB',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x65CaCA9F2638Fb2B245E9694f00343F0b6CB6F77',\n};\n\nexport const RAGEQUIT_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0xD3C2cE38c905B9207e35D7EcE51c17b22EAb4afe',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x314C824Ea4586798DF8B46121E881Defa40CB47E',\n};\n\nexport const MANAGING_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0x03BE4284E9F3E7d1fd19cB0442713609105db7E7',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0xeD025b5BA14b8f3A085057b9D7Baa13998343aA8',\n};\n\nexport const FINANCING_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0xA007fc56f540670F6ba17FD2b3B931FC72A7820a',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x4a7A5946567672c577EaF2b866BCeBc177E455E8',\n};\n\nexport const ONBOARDING_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0x6fA3f2BC09fB13091BF40C6920a9251B72348456',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x4e1Ccf6Bca8d14B670478d8C4e2aEc9f6277A7f5',\n};\n\nexport const GUILDKICK_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0xf6F042cB61E409dbFE34A5fbC76Db334B7a93364',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x72a011Aa67F8214a146A162A99B322017ad763fD',\n};\n\nexport const DAO_REGISTRY_ADAPTER_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0x35B3babfB8FF455903f6e89cEaa83140e09495F9',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x4d4243f2d605282CBd27C8391f05b77316d1a561',\n};\n\nexport const BANK_ADAPTER_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0xed65eD0c561E77597E4D8472be1b4b184c31Fde4',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0xA8EA078cF1D3837a025329c46A4E0F441Cb2eE87',\n};\n\nexport const NFT_ADAPTER_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0xc69DF0C3855A6CaBF0c5983bD504770E5BFA8e84',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x538a4f00d64d2597717cAAd4D01C963317e3Ae40',\n};\n\nexport const COUPONONBOARDING_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0xb5935758c16B785d3749F20D65F5B501578dCb1c',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x9A2E533FBa58Ec8b0dA34438154C48E295C80576',\n};\n\nexport const TRIBUTE_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0xD0dCB66d60f6EbF838e22423f58B01D6F7a60187',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0xa7D723BFc4deC341da03E70Af4026B3926b1E8Db',\n};\n\nexport const DISTRIBUTE_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0xB54D48D8471839D670C0e24548A7CfEA78bB1879',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x6749b9151B654A77ddA3Fa8f2b259E0E592065F6',\n};\n\nexport const TRIBUTE_NFT_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0x939Fd23C38496aB54fa4BD0b2ED535DE100f7d8F',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0x4Df3729e7B952EBE6d18b52132D2A8af2F2D167A',\n};\n\nexport const OFFCHAINVOTING_CONTRACT_ADDRESS = {\n [CHAINS.MAINNET]: '',\n [CHAINS.ROPSTEN]: '',\n [CHAINS.RINKEBY]: '0xDfbe754ec9c2aA26ac2f429CfcEd819910eF5926',\n [CHAINS.GOERLI]: '',\n [CHAINS.KOVAN]: '',\n [CHAINS.GANACHE]: '0xae02a075290D2efD74F0D3fE2DfE64831320855a',\n};\n\n// If developing locally, include your Multicall contract address in your `.env` file.\nexport const MULTICALL_CONTRACT_ADDRESS = REACT_APP_MULTICALL_CONTRACT_ADDRESS;\n\n/**\n * These addresses are important as the contracts use them in their configs.\n *\n * @todo Remove and get from the chain/subgraph?\n *\n * @see https://github.com/openlawteam/tribute-contracts/blob/9e0e03616a00e41e666351e146ee109b9fe37fb2/utils/DaoFactory.js\n */\nexport const GUILD_ADDRESS: string =\n '0x000000000000000000000000000000000000dead';\nexport const TOTAL_ADDRESS: string =\n '0x000000000000000000000000000000000000babe';\nexport const UNITS_ADDRESS: string =\n '0x00000000000000000000000000000000000FF1CE';\nexport const LOOT_ADDRESS: string =\n '0x00000000000000000000000000000000B105F00D';\nexport const MEMBER_COUNT_ADDRESS: string =\n '0x00000000000000000000000000000000DECAFBAD';\nexport const ETH_TOKEN_ADDRESS: string =\n '0x0000000000000000000000000000000000000000';\nexport const DAI_TOKEN_ADDRESS: string =\n '0x95b58a6bff3d14b7db2f5cb5f0ad413dc2940658';\n\n/**\n * `SPACE` is used inside Snapshot Hub for matching a `space`\n * with its own proposals and votes.\n */\nexport const SPACE: string | undefined = REACT_APP_SNAPSHOT_SPACE;\n\n/**\n * POLLING INTERVAL FOR GQL QUERIES\n * localhost | development - ms, poll every 5sec = 5000\n * production - ms, poll every 10sec = 10000\n */\nexport const GQL_QUERY_POLLING_INTERVAL: number =\n REACT_APP_ENVIRONMENT === 'production' ? 10000 : 5000;\n","/**\n * chooseRandom\n *\n * Choose a random item from an array.\n *\n * @param {array} array - The array to choose from.\n * @param doNotChooseItem - An item to not choose (e.g. previously chosen item)\n */\nexport function chooseRandom(array: T[], doNotChooseItem?: T) {\n const arrayToUse =\n doNotChooseItem !== undefined\n ? array.filter((a) => a !== doNotChooseItem)\n : array;\n\n return arrayToUse[Math.floor(Math.random() * arrayToUse.length)];\n}\n","/**\n * disableReactDevTools\n *\n * Run before the app mounts to disable React dev tools.\n * Ideally, this is run conditionally based on environment.\n *\n * @see: https://github.com/facebook/react-devtools/issues/191#issuecomment-443607190\n */\nexport function disableReactDevTools() {\n const noop = (): void => undefined;\n const DEV_TOOLS = (window as any).__REACT_DEVTOOLS_GLOBAL_HOOK__;\n\n if (typeof DEV_TOOLS === 'object') {\n for (const [key, value] of Object.entries(DEV_TOOLS)) {\n DEV_TOOLS[key] = typeof value === 'function' ? noop : null;\n }\n }\n}\n","/**\n * dontCloseWindowWarning\n *\n * Warns user not to close the window.\n *\n * @returns {() => void} unsubscribe function to stop listening, and the callback from firing.\n */\nexport function dontCloseWindowWarning(): () => void {\n // @see: https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#Example\n const callback = (event: BeforeUnloadEvent) => {\n // Cancel the event\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = '';\n };\n\n window.addEventListener('beforeunload', callback);\n\n return function unsubscribe() {\n window.removeEventListener('beforeunload', callback);\n };\n}\n","/**\n * formatDecimal\n *\n * A simple formatter with respect for dynamic decimal places\n * from `toFixed(2)` to `toFixed(4)`. If the number provided\n * is less than `0.01`, then `toFixed(4)` is used, else `toFixed(2)`.\n *\n * This may not work for all cases where the number is tiny, as it could\n * result in `\"0.0000\"`.\n *\n * @param {number} n\n * @returns {string} A `.toFixed()` representation of the decimal number.\n */\nexport function formatDecimal(n: number): string {\n return n < 0.01 ? n.toFixed(4) : n.toFixed(2);\n}\n","/**\n * formatNumber\n *\n * Formats a number (U.S. region) with commas (e.g. 1000 -> 1,000).\n *\n * @param {string | number} value\n * @returns {string}\n *\n * @todo maybe a more friendly way via Intl API in JS core?\n */\nexport const formatNumber = (value: number | string): string => {\n const regEx = new RegExp(/(\\d)(?=(\\d{3})+(?:\\.\\d+)?$)/g);\n return typeof value === 'number'\n ? value.toString().replace(/,/g, '').replace(regEx, '$1,')\n : value.replace(/,/g, '').replace(regEx, '$1,');\n};\n","type TimeRemaining = {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n total: number;\n};\n\nconst DEFAULT_REMAINING: TimeRemaining = {\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n total: 0,\n};\n\nexport function getTimeRemaining(endTime: Date): TimeRemaining {\n const nowDate: Date = new Date();\n\n if (endTime <= nowDate) {\n return DEFAULT_REMAINING;\n }\n\n const total: number = endTime.getTime() - nowDate.getTime();\n const seconds: number = Math.floor((total / 1000) % 60);\n const minutes: number = Math.floor((total / 1000 / 60) % 60);\n const hours: number = Math.floor((total / (1000 * 60 * 60)) % 24);\n const days: number = Math.floor(total / (1000 * 60 * 60 * 24));\n\n return {\n days,\n hours,\n minutes,\n seconds,\n total,\n };\n}\n","/**\n * getValidationError\n *\n * Used with react-hook-form (mostly to solve a TS incorrect behavior)\n * Gets the associated error message with a field.\n *\n * @param {string} field\n * @param {Record} errors\n * @returns string\n */\nexport function getValidationError(\n field: string,\n errors: Record\n): string {\n return errors[field] && 'message' in errors[field]\n ? (errors[field].message as string)\n : '';\n}\n","/**\n * normalizeString\n *\n * Converts string case to lowerCase and trims whitespace.\n *\n * @param {string} stringToNormalize\n * @returns {string} The normalized string lowercased and trimmed.\n */\nexport function normalizeString(stringToNormalize: string): string {\n return stringToNormalize.toLowerCase().trim();\n}\n","import {providers} from 'ethers';\n\nimport {normalizeString} from './normalizeString';\n\n/**\n * isPossibleContractWallet\n *\n * When passing a connected ethereum address, if there is bytecode at the address,\n * there is a good chance that it's a contract wallet. This is not 100% accurate, but it's\n * good enough to make a guess and do something trivial in the UI.\n *\n * @param address\n * @param provider\n * @returns `boolean`\n */\nexport async function isPossibleContractWallet(\n /**\n * Ethereum wallet address to check\n */\n address: string,\n /**\n * Ethers provider\n *\n * E.g. `new JsonRpcProvider(...)`\n */\n provider: providers.Provider\n): Promise {\n try {\n const bytecode = await provider.getCode(normalizeString(address));\n\n // It's a bit easier to detect an EOA (typical public/private key crypto wallet)\n const addressIsExernallyOwnedAccount: boolean =\n !bytecode ||\n bytecode === '0x' ||\n bytecode === '0x0' ||\n bytecode === '0x00';\n\n return addressIsExernallyOwnedAccount === false;\n } catch (error) {\n throw error;\n }\n}\n","/**\n * numberRangeArray\n *\n * Outputs an array sequence of numbers given a total size and starting offset.\n * e.g. Years 1920..2002\n *\n * @param {size} number - Maximum number and last value of array. Default is 1.\n * @param {startAt} number - Offset to begin from. Default is 0.\n * @returns {number[]}\n */\nexport function numberRangeArray(size = 1, startAt = 0): number[] {\n const adjustedSize = size + 1 - startAt;\n\n return [...Array(adjustedSize)].map((_, i) => startAt + i);\n}\n","/**\n * stripFormatNumber\n *\n * Strips a number string formatting (via `formatNumber`) (e.g. 10,000 -> 10000).\n *\n * @param {string} value Number string to strip formatting (via `formatNumber`) from.\n * @returns {string} A Number string without any formatting form `formatNumber`.\n *\n * @todo maybe a more friendly way via Intl API in JS core?\n */\nexport const stripFormatNumber = (value: string): string =>\n value.toString().replace(/,/g, '');\n","import {\n createVote,\n getVoteResultRootDomainDefinition,\n prepareVoteResult,\n signMessage,\n VoteChoicesIndex,\n} from '@openlaw/snapshot-js-erc712';\nimport {\n ToStepNodeResult,\n VoteEntry,\n} from '@openlaw/snapshot-js-erc712/dist/types';\nimport {useSelector} from 'react-redux';\nimport {useState} from 'react';\n\nimport {\n DEFAULT_CHAIN,\n MEMBER_COUNT_ADDRESS,\n TOTAL_ADDRESS,\n UNITS_ADDRESS,\n} from '../../../config';\nimport {\n getAdapterAddressFromContracts,\n multicall,\n MulticallTuple,\n} from '../../web3/helpers';\nimport {BadNodeError} from './types';\nimport {ContractAdapterNames, Web3TxStatus} from '../../web3/types';\nimport {getOffchainVotingProof, submitOffchainVotingProof} from '../helpers';\nimport {normalizeString, numberRangeArray} from '../../../util/helpers';\nimport {PRIMARY_TYPE_ERC712, TX_CYCLE_MESSAGES} from '../../web3/config';\nimport {ProposalData} from '../types';\nimport {StoreState} from '../../../store/types';\nimport {useMemberActionDisabled} from '../../../hooks';\nimport {useWeb3Modal, useContractSend, useETHGasPrice} from '../../web3/hooks';\nimport CycleMessage from '../../feedback/CycleMessage';\nimport ErrorMessageWithDetails from '../../common/ErrorMessageWithDetails';\nimport EtherscanURL from '../../web3/EtherscanURL';\nimport FadeIn from '../../common/FadeIn';\nimport Loader from '../../feedback/Loader';\n\ntype OffchainVotingSubmitResultActionProps = {\n adapterName: ContractAdapterNames;\n proposal: ProposalData;\n};\n\ntype SubmitVoteResultArguments = [\n daoAddress: string,\n proposalId: string,\n resultRoot: string,\n lastResult: ToStepNodeResult,\n rootSig: string\n];\n\nexport function OffchainOpRollupVotingSubmitResultAction(\n props: OffchainVotingSubmitResultActionProps\n) {\n const {\n adapterName,\n proposal: {daoProposalVotingAdapter, snapshotProposal},\n } = props;\n\n /**\n * State\n */\n\n const [signatureStatus, setSignatureStatus] = useState(\n Web3TxStatus.STANDBY\n );\n const [submitError, setSubmitError] = useState();\n\n /**\n * Selectors\n */\n\n const bankExtensionAddress = useSelector(\n (s: StoreState) => s.contracts.BankExtensionContract?.contractAddress\n );\n const bankExtensionMethods = useSelector(\n (s: StoreState) => s.contracts.BankExtensionContract?.instance.methods\n );\n const getPriorAmountABI = useSelector((s: StoreState) =>\n s.contracts.BankExtensionContract?.abi.find(\n (ai) => ai.name === 'getPriorAmount'\n )\n );\n const daoRegistryAddress = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.contractAddress\n );\n const getMemberAddressABI = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.abi\n )?.find((ai) => ai.name === 'getMemberAddress');\n\n const contracts = useSelector((s: StoreState) => s.contracts);\n\n /**\n * Our hooks\n */\n\n const {account, provider, web3Instance} = useWeb3Modal();\n\n const {txEtherscanURL, txIsPromptOpen, txSend, txStatus} = useContractSend();\n\n const {isDisabled, openWhyDisabledModal, WhyDisabledModal} =\n useMemberActionDisabled();\n\n const {fast: fastGasPrice} = useETHGasPrice();\n\n /**\n * Variables\n */\n\n const votingAdapterMethods =\n daoProposalVotingAdapter?.getWeb3VotingAdapterContract().methods;\n\n const isInProcess =\n signatureStatus === Web3TxStatus.AWAITING_CONFIRM ||\n signatureStatus === Web3TxStatus.PENDING ||\n txStatus === Web3TxStatus.AWAITING_CONFIRM ||\n txStatus === Web3TxStatus.PENDING;\n\n const isDone =\n txStatus === Web3TxStatus.FULFILLED &&\n signatureStatus === Web3TxStatus.FULFILLED;\n\n const isInProcessOrDone = isInProcess || isDone || txIsPromptOpen;\n\n /**\n * Functions\n */\n\n async function handleSubmit() {\n try {\n if (!daoRegistryAddress) {\n throw new Error('No DAO Registry address was found.');\n }\n\n if (!bankExtensionAddress) {\n throw new Error('No Bank Extension address was found.');\n }\n\n if (!getMemberAddressABI) {\n throw new Error('No ABI for `getMemberAddress` was found.');\n }\n\n if (!getPriorAmountABI) {\n throw new Error('No ABI for `getPriorAmount` was found.');\n }\n\n if (!snapshotProposal) {\n throw new Error('No Snapshot proposal was found.');\n }\n\n if (!snapshotProposal.votes) {\n throw new Error('No Snapshot proposal votes Array was found.');\n }\n\n if (!votingAdapterMethods) {\n throw new Error('No \"OffchainVotingContract\" methods were found.');\n }\n\n if (!web3Instance) {\n throw new Error('No Web3 instance was found.');\n }\n\n setSignatureStatus(Web3TxStatus.AWAITING_CONFIRM);\n\n const {idInDAO: proposalHash} = snapshotProposal;\n\n const snapshot: string = snapshotProposal.msg.payload.snapshot.toString();\n\n const adapterAddress = getAdapterAddressFromContracts(\n adapterName,\n contracts\n );\n\n // Get total number of potential and admitted members in the DAO at the snapshot\n const numberOfDAOMembersAtSnapshot: string = await bankExtensionMethods\n .getPriorAmount(TOTAL_ADDRESS, MEMBER_COUNT_ADDRESS, snapshot)\n .call();\n\n const getMemberAddressCalls: MulticallTuple[] = numberRangeArray(\n Number(numberOfDAOMembersAtSnapshot) - 1,\n 0\n ).map(\n (memberIndex): MulticallTuple => [\n daoRegistryAddress,\n getMemberAddressABI,\n [memberIndex.toString()],\n ]\n );\n\n // Get all member addresses in the DAO based on the member count\n const memberAddresses: string[] = await multicall({\n calls: getMemberAddressCalls,\n web3Instance,\n });\n\n const memberBalanceCalls: MulticallTuple[] = memberAddresses.map(\n (m): MulticallTuple => [\n bankExtensionAddress,\n getPriorAmountABI,\n [m, UNITS_ADDRESS, snapshot],\n ]\n );\n\n // Get all member balances\n const memberBalancesAtSnapshot: string[] = await multicall({\n calls: memberBalanceCalls,\n web3Instance,\n });\n\n // Create vote entries\n const votes: VoteEntry[] = memberAddresses.map((memberAddress, i) => {\n const voteData = Object.values(\n snapshotProposal.votes?.find(\n (v) =>\n normalizeString(memberAddress) ===\n normalizeString(\n Object.values(v)[0].msg.payload.metadata.memberAddress\n )\n ) || {}\n )[0];\n\n // Create votes based on whether `voteData` was found for `memberAddress`\n return createVote({\n proposalId: proposalHash,\n sig: voteData?.sig || '0x',\n timestamp: voteData ? Number(voteData.msg.timestamp) : 0,\n voteYes: voteData?.msg.payload.choice === VoteChoicesIndex.Yes,\n weight: voteData ? memberBalancesAtSnapshot[i] : '0',\n });\n });\n\n // Prepare vote Result\n const {voteResultTree, result} = await prepareVoteResult({\n actionId: adapterAddress,\n chainId: DEFAULT_CHAIN,\n daoAddress: daoRegistryAddress,\n votes,\n });\n\n const voteResultTreeHexRoot: string = voteResultTree.getHexRoot();\n // The last of the result node tree steps\n const resultNodeLast: ToStepNodeResult = result[result.length - 1];\n\n // Validate the vote result node by calling the contract\n const getBadNodeErrorResponse: number = await votingAdapterMethods\n .getBadNodeError(\n daoRegistryAddress,\n proposalHash,\n // `bool submitNewVote`\n true,\n voteResultTreeHexRoot,\n snapshot,\n // `gracePeriodStartingTime` should be `0` as `submitNewVote` is `true`\n 0,\n resultNodeLast\n )\n .call();\n\n if (Number(getBadNodeErrorResponse) !== BadNodeError.OK) {\n throw new Error(\n `Cannot submit off-chain voting result. Node has an error: ${BadNodeError[getBadNodeErrorResponse]}.`\n );\n }\n\n // Prepare to sign root hex result\n const {domain, types} = getVoteResultRootDomainDefinition(\n daoRegistryAddress,\n adapterAddress,\n DEFAULT_CHAIN\n );\n\n const messageParams: string = JSON.stringify({\n domain,\n message: {root: voteResultTreeHexRoot},\n primaryType: PRIMARY_TYPE_ERC712,\n types,\n });\n\n // Sign root hex result message\n const signature: string = await signMessage(\n provider,\n account,\n messageParams\n );\n\n // Check if off-chain proof has already been submitted\n const snapshotOffchainProofExists: boolean =\n ((await getOffchainVotingProof(voteResultTreeHexRoot))?.merkle_root\n .length || '') > 0;\n\n /**\n * Send off-chain vote proof silently to Snapshot Hub for storage and later use.\n *\n * We're piggy-backing off of the signature async call's status, instead of setting another status.\n * E.g. It may confuse the user if we were to display text saying we're \"submitting\n * off-chain proof\", or something to this effect, for a second or two.\n */\n if (!snapshotOffchainProofExists) {\n await submitOffchainVotingProof({\n actionId: adapterAddress,\n chainId: DEFAULT_CHAIN,\n steps: result,\n merkleRoot: voteResultTreeHexRoot,\n verifyingContract: daoRegistryAddress,\n });\n }\n\n setSignatureStatus(Web3TxStatus.FULFILLED);\n\n const submitVoteResultArguments: SubmitVoteResultArguments = [\n daoRegistryAddress,\n proposalHash,\n voteResultTreeHexRoot,\n resultNodeLast,\n signature,\n ];\n\n const txArguments = {\n from: account || '',\n ...(fastGasPrice ? {gasPrice: fastGasPrice} : null),\n };\n\n // Send the tx\n await txSend(\n 'submitVoteResult',\n votingAdapterMethods,\n submitVoteResultArguments,\n txArguments\n );\n } catch (error) {\n setSubmitError(error);\n setSignatureStatus(Web3TxStatus.REJECTED);\n }\n }\n\n function renderSubmitStatus(): React.ReactNode {\n // Either Snapshot or chain tx\n if (\n txStatus === Web3TxStatus.AWAITING_CONFIRM ||\n signatureStatus === Web3TxStatus.AWAITING_CONFIRM\n ) {\n return 'Awaiting your confirmation\\u2026';\n }\n\n // Only for chain tx\n switch (txStatus) {\n case Web3TxStatus.PENDING:\n return (\n <>\n {\n return {message} ;\n }}\n />\n\n \n >\n );\n case Web3TxStatus.FULFILLED:\n return (\n <>\n Result submitted!
\n\n \n >\n );\n default:\n return null;\n }\n }\n\n /**\n * Render\n */\n\n return (\n <>\n \n
{} : handleSubmit}>\n {isInProcess ? : isDone ? 'Done' : 'Submit Vote Result'}\n \n\n
\n\n {/* SUBMIT STATUS */}\n {isInProcessOrDone && (\n
\n {renderSubmitStatus()}\n
\n )}\n\n {isDisabled && (\n
\n Why is submitting disabled?\n \n )}\n
\n\n \n >\n );\n}\n","import {useEffect, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {VoteChoices} from '@openlaw/snapshot-js-erc712';\n\nimport {\n useMemberActionDisabled,\n useMemberUnitsAtSnapshot,\n} from '../../../hooks';\nimport {AsyncStatus} from '../../../util/types';\nimport {ContractAdapterNames, Web3TxStatus} from '../../web3/types';\nimport {getVoteChosen} from '../helpers';\nimport {ProposalData} from '../types';\nimport {StoreState} from '../../../store/types';\nimport {truncateEthAddress} from '../../../util/helpers';\nimport {useSignAndSendVote} from '../hooks';\nimport {useWeb3Modal} from '../../web3/hooks';\nimport {VotingActionButtons} from '.';\nimport ErrorMessageWithDetails from '../../common/ErrorMessageWithDetails';\n\ntype OffchainVotingActionProps = {\n adapterName?: ContractAdapterNames;\n proposal: ProposalData;\n};\n\ntype VotingDisabledReasons = {\n addressIsDelegatedMessage: string;\n alreadyVotedMessage: string;\n fetchingMembershipAtSnapshotMessage: string;\n noMembershipAtSnapshotMessage: string;\n undeterminedMembershipAtSnapshotMessage: string;\n};\n\nconst {FULFILLED, PENDING, REJECTED} = AsyncStatus;\n\nconst getDelegatedAddressMessage = (a: string) =>\n `Your member address is delegated to ${truncateEthAddress(\n a,\n 7\n )}. You must use that address to vote.`;\n\n/**\n * OffchainVotingAction\n *\n * An off-chain voting action component which facilitates submitting to Snapshot Hub.\n *\n * @returns {JSX.Element}\n */\nexport function OffchainVotingAction(\n props: OffchainVotingActionProps\n): JSX.Element | null {\n const {\n adapterName,\n proposal: {snapshotProposal, refetchProposalOrDraft},\n } = props;\n\n /**\n * State\n */\n\n const [voteChoiceClicked, setVoteChoiceClicked] = useState();\n const [submitError, setSubmitError] = useState();\n\n /**\n * Refs\n */\n\n const votingDisabledReasonsRef = useRef({\n addressIsDelegatedMessage: '',\n alreadyVotedMessage: '',\n fetchingMembershipAtSnapshotMessage: '',\n noMembershipAtSnapshotMessage: '',\n undeterminedMembershipAtSnapshotMessage: '',\n });\n\n /**\n * Selectors\n */\n\n const delegateAddress = useSelector(\n (s: StoreState) => s.connectedMember?.delegateKey\n );\n\n const isAddressDelegated = useSelector(\n (s: StoreState) => s.connectedMember?.isAddressDelegated\n );\n\n const memberAddress = useSelector(\n (s: StoreState) => s.connectedMember?.memberAddress\n );\n\n /**\n * Our hooks\n */\n\n const {account} = useWeb3Modal();\n const {signAndSendVote, voteDataStatus} = useSignAndSendVote();\n const voteChosen = getVoteChosen(snapshotProposal?.votes, account || '');\n\n const {\n isDisabled,\n openWhyDisabledModal,\n setOtherDisabledReasons,\n WhyDisabledModal,\n } = useMemberActionDisabled();\n\n const {\n hasMembershipAtSnapshot,\n memberUnitsAtSnapshotError,\n memberUnitsAtSnapshotStatus,\n } = useMemberUnitsAtSnapshot(\n memberAddress,\n snapshotProposal?.msg.payload.snapshot\n );\n\n /**\n * Variables\n */\n\n const snapshot: number | undefined = snapshotProposal?.msg.payload.snapshot;\n const proposalHash: string = snapshotProposal?.idInDAO || '';\n const snapshotProposalId: string = snapshotProposal?.idInSnapshot || '';\n\n const isInProcess =\n voteDataStatus === Web3TxStatus.AWAITING_CONFIRM ||\n voteDataStatus === Web3TxStatus.PENDING;\n\n const isDone = voteDataStatus === Web3TxStatus.FULFILLED;\n\n const isInProcessOrDone = isInProcess || isDone;\n\n const isSubmitDisabled = isDisabled || isInProcessOrDone;\n\n const voteChoiceProgress: VoteChoices | undefined = isInProcess\n ? voteChoiceClicked\n : undefined;\n\n const error: Error | undefined = submitError || memberUnitsAtSnapshotError;\n\n /**\n * Effects\n */\n\n useEffect(() => {\n // 1. Determine and set local reasons why voting would be disabled\n\n // Reason: address is delegated\n if (delegateAddress) {\n setDisabledReasonHelper(\n 'addressIsDelegatedMessage',\n isAddressDelegated ? getDelegatedAddressMessage(delegateAddress) : ''\n );\n }\n\n // Reason: already voted\n setDisabledReasonHelper(\n 'alreadyVotedMessage',\n voteChosen ? 'You have already voted.' : ''\n );\n\n // Reason: did not hold membership by snapshot\n setDisabledReasonHelper(\n 'noMembershipAtSnapshotMessage',\n !hasMembershipAtSnapshot && memberUnitsAtSnapshotStatus === FULFILLED\n ? `You were not a member when the proposal was sponsored at snapshot ${snapshot}.`\n : ''\n );\n\n // Reason: determining membership by snapshot\n setDisabledReasonHelper(\n 'fetchingMembershipAtSnapshotMessage',\n memberUnitsAtSnapshotStatus === PENDING\n ? `We are waiting on your membership status for when this proposal was sponsored at snapshot ${snapshot}.`\n : ''\n );\n\n // Reason: cannot determine membership by snapshot\n setDisabledReasonHelper(\n 'undeterminedMembershipAtSnapshotMessage',\n memberUnitsAtSnapshotStatus === REJECTED\n ? `Something went wrong. Your membership status when this proposal was sponsored at snapshot ${snapshot} cannot be determined.`\n : ''\n );\n\n // 2. Set reasons\n setOtherDisabledReasons(Object.values(votingDisabledReasonsRef.current));\n }, [\n delegateAddress,\n hasMembershipAtSnapshot,\n isAddressDelegated,\n memberUnitsAtSnapshotStatus,\n setOtherDisabledReasons,\n snapshot,\n voteChosen,\n ]);\n\n /**\n * Functions\n */\n\n async function handleSubmitVote(choice: VoteChoices) {\n try {\n if (!proposalHash) {\n throw new Error('No proposal hash was found.');\n }\n\n if (!snapshotProposalId) {\n throw new Error('No proposal ID was found.');\n }\n\n setVoteChoiceClicked(VoteChoices[choice]);\n\n await signAndSendVote({\n ...(adapterName ? {adapterName} : undefined),\n partialVoteData: {choice},\n proposalIdInDAO: proposalHash,\n proposalIdInSnapshot: snapshotProposalId,\n });\n\n // Refetch to show the vote the user submitted\n await refetchProposalOrDraft();\n } catch (error) {\n setSubmitError(error);\n }\n }\n\n function setDisabledReasonHelper(\n key: keyof VotingDisabledReasons,\n message: string\n ): void {\n votingDisabledReasonsRef.current = {\n ...votingDisabledReasonsRef.current,\n\n [key]: message,\n };\n }\n\n return (\n <>\n {} : handleSubmitVote}\n buttonProps={{\n disabled: isSubmitDisabled,\n 'aria-disabled': isSubmitDisabled,\n }}\n voteChosen={voteChosen}\n voteProgress={voteChoiceProgress}\n />\n\n {isDisabled && (\n \n Why is voting disabled?\n \n )}\n\n \n\n \n >\n );\n}\n","import {useEffect, useState} from 'react';\n\nimport {getTimeRemaining} from '../../util/helpers';\n\nexport type RenderCountdownTextProps = {\n formatTimePeriod: typeof formatTimePeriod;\n showDaysOnly?: boolean;\n} & Pick<\n ReturnType,\n 'days' | 'hours' | 'minutes' | 'seconds'\n>;\n\ntype ProposalPeriodCountdownProps = {\n endedLabel?: React.ReactNode;\n endLabel?: React.ReactNode;\n endPeriodMs: number;\n renderCountdownText?: (p: RenderCountdownTextProps) => React.ReactNode;\n startLabel?: React.ReactNode;\n startPeriodMs: number;\n};\n\nfunction displayCountdown({\n countdownFrom,\n renderCountdownText,\n showDaysOnly,\n}: {\n countdownFrom: Date;\n renderCountdownText?: ProposalPeriodCountdownProps['renderCountdownText'];\n showDaysOnly?: boolean;\n}): string | React.ReactNode {\n const {days, hours, minutes, seconds} = getTimeRemaining(countdownFrom);\n\n const renderedCountdownText = renderCountdownText?.({\n days,\n formatTimePeriod,\n hours,\n minutes,\n seconds,\n showDaysOnly,\n });\n\n const format = formatTimePeriod;\n\n // Custom\n if (renderedCountdownText) {\n return renderedCountdownText;\n }\n\n // days\n if (days > 2 && showDaysOnly) {\n return `~${days} days`;\n }\n\n // days : hrs : min\n if (days > 0) {\n return `${format(days, 'day')} : ${format(hours, 'hr')} : ${format(\n minutes,\n 'min'\n )}`;\n }\n\n // hrs : min\n if (hours > 0) {\n return `${format(hours, 'hr')} : ${format(minutes, 'min')}`;\n }\n\n // min : sec\n if (minutes > 0) {\n return `${format(minutes, 'min')} : ${format(seconds, 'sec')}`;\n }\n\n // sec\n return {format(seconds, 'sec')} ;\n}\n\nfunction formatTimePeriod(time: number, period: 'day' | 'hr' | 'min' | 'sec') {\n const formattedPeriod = time === 0 || time > 1 ? `${period}s` : period;\n\n return `${time} ${formattedPeriod}`;\n}\n\nexport default function ProposalPeriodCountdown(\n props: ProposalPeriodCountdownProps\n) {\n const {\n endedLabel,\n endLabel,\n endPeriodMs,\n renderCountdownText,\n startLabel,\n startPeriodMs,\n } = props;\n\n /**\n * State\n */\n\n const [currentDate, setCurrentDate] = useState();\n\n /**\n * Variables\n */\n\n const startDate: Date = new Date(startPeriodMs);\n const endDate: Date = new Date(endPeriodMs);\n\n /**\n * Effects\n */\n\n // Every current `Date` each 1000ms (1 second)\n useEffect(() => {\n const interval = setInterval(() => {\n setCurrentDate(new Date());\n }, 1000);\n\n return function cleanup() {\n clearInterval(interval);\n };\n }, []);\n\n /**\n * Render\n */\n\n if (!currentDate) return null;\n\n // If time period has not yet started\n if (currentDate < startDate) {\n return (\n \n \n {startLabel || 'Starts:'} {' '}\n \n {displayCountdown({\n countdownFrom: startDate,\n renderCountdownText,\n showDaysOnly: true,\n })}\n \n \n
\n );\n }\n\n // If time period is happening now\n if (currentDate < endDate) {\n return (\n \n \n {endLabel || 'Ends:'} {' '}\n \n {displayCountdown({countdownFrom: endDate, renderCountdownText})}\n \n \n
\n );\n }\n\n // Default fallthrough: time period has ended\n return (\n \n {endedLabel || 'Ended'} \n
\n );\n}\n","import {SVGAttributes} from 'react';\n\nexport default function StopwatchSVG(props: SVGAttributes) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\n\nimport {SquareRootVotingBar} from '.';\nimport ProposalPeriodCountdown from '../ProposalPeriodCountdown';\nimport StopwatchSVG from '../../../assets/svg/StopwatchSVG';\n\ntype VotingStatusProps = {\n hasVotingEnded: boolean;\n /**\n * A render prop to display status to before / after the clock timer is shown.\n */\n renderStatus: () => React.ReactNode;\n /**\n * A render prop: display the `ProposalPeriod` timer.\n * `renderTimer` Provides `ProposalPeriod` component as an argument.\n *\n * Passing the `ProposalPeriod` component via the render prop\n * gives the opportunity to easily show a timer for voting, or grace period, for example,\n * without adding more props.\n */\n renderTimer: (component: typeof ProposalPeriodCountdown) => React.ReactNode;\n /**\n * Set to `false` to hide percentage data under the voting progress bar.\n * Defaults to `true`.\n */\n showPercentages?: boolean;\n noUnits: Parameters[0]['noUnits'];\n totalUnits: Parameters[0]['totalUnits'];\n yesUnits: Parameters[0]['yesUnits'];\n};\n\nexport function VotingStatus(props: VotingStatusProps) {\n const {\n hasVotingEnded,\n noUnits,\n renderStatus,\n renderTimer,\n showPercentages = true,\n totalUnits,\n yesUnits,\n } = props;\n\n const renderedStatus = renderStatus();\n\n return (\n <>\n \n \n\n {renderedStatus && (\n {renderedStatus} \n )}\n\n {renderTimer(ProposalPeriodCountdown)}\n
\n\n {/* VOTES */}\n \n >\n );\n}\n","import {useEffect} from 'react';\n\nimport {CycleEllipsis} from '../../feedback';\nimport {RenderCountdownTextProps} from '../ProposalPeriodCountdown';\nimport {useTimeStartEnd} from '../../../hooks';\nimport {VotingResult} from '../types';\nimport {VotingStatus} from './VotingStatus';\n\nexport type OffchainVotingStatusRenderStatusProps = {\n countdownGracePeriodEndMs: OffchainVotingStatusProps['countdownGracePeriodEndMs'];\n countdownGracePeriodStartMs: OffchainVotingStatusProps['countdownGracePeriodStartMs'];\n countdownVotingEndMs: OffchainVotingStatusProps['countdownVotingEndMs'];\n countdownVotingStartMs: OffchainVotingStatusProps['countdownVotingStartMs'];\n didVotePassSimpleMajority: boolean | undefined;\n gracePeriodStartEndInitReady: boolean;\n hasGracePeriodEnded: boolean;\n hasGracePeriodStarted: boolean;\n hasVotingEnded: boolean;\n hasVotingStarted: boolean;\n votingStartEndInitReady: boolean;\n};\n\nexport type OnGracePeriodChangeProps = {\n hasGracePeriodEnded: boolean;\n hasGracePeriodStarted: boolean;\n /**\n * Helpful if responding to events for multiple proposals\n */\n proposalId?: string;\n gracePeriodStartEndInitReady: boolean;\n};\n\nexport type OnVotingPeriodChangeProps = {\n hasVotingEnded: boolean;\n hasVotingStarted: boolean;\n /**\n * Helpful if responding to events for multiple proposals\n */\n proposalId?: string;\n votingStartEndInitReady: boolean;\n};\n\ntype OffchainVotingStatusProps = {\n /**\n * Voting start time\n * i.e. calculated from the `OffchainVoting` contract's vote's start time, or Snapshot proposal's start time\n */\n countdownVotingStartMs: number | undefined;\n /**\n * Voting end time\n * i.e. calculated from the `OffchainVoting` contract's vote's end time, or Snapshot proposal's end time\n */\n countdownVotingEndMs: number | undefined;\n /**\n * Grace period start time\n * i.e. calculated from the `OffchainVoting` contract's vote's start time, or Snapshot proposal's start time\n */\n countdownGracePeriodStartMs?: number;\n /**\n * Grace period end time\n * i.e. calculated from the `OffchainVoting` contract's vote's end time, or Snapshot proposal's end time\n */\n countdownGracePeriodEndMs?: number;\n /**\n * An optional callback to run on grace period time changes\n */\n onGracePeriodChange?: (p: OnGracePeriodChangeProps) => void;\n /**\n * An optional callback to run on voting time changes\n */\n onVotingPeriodChange?: (p: OnVotingPeriodChangeProps) => void;\n /**\n * An optional proposal ID if working with multiple proposals (i.e. listing).\n * Helps when repsonding to events from callbacks like `onVotingPeriodChange` and `onGracePeriodChange`.\n */\n proposalId?: string;\n /**\n * Render a custom status\n */\n renderStatus?: (p: OffchainVotingStatusRenderStatusProps) => React.ReactNode;\n /**\n * A single proposal's `VotingResult` (i.e. as provided by `useOffchainVotingResults`)\n */\n votingResult: VotingResult | undefined;\n};\n\nfunction renderCountdownText({\n days,\n hours,\n formatTimePeriod: format,\n}: RenderCountdownTextProps) {\n if (days > 0) {\n return `${format(days, 'day')} : ${format(hours, 'hr')}`;\n }\n}\n\n// Grace period label\nconst gracePeriodLabel = Grace period: ;\n\nconst cycleEllipsisFadeInProps = {duration: 150};\n\n/**\n * OffchainVotingStatus\n *\n * A read-only component to show voting status information.\n *\n * @param {OffchainVotingStatusProps} props\n * @returns {JSX.Element}\n */\nexport function OffchainVotingStatus({\n countdownGracePeriodEndMs = 0,\n countdownGracePeriodStartMs = 0,\n countdownVotingEndMs = 0,\n countdownVotingStartMs = 0,\n onGracePeriodChange,\n onVotingPeriodChange,\n proposalId,\n renderStatus,\n votingResult,\n}: OffchainVotingStatusProps): JSX.Element {\n /**\n * Our hooks\n */\n\n const {\n hasTimeEnded: hasVotingEnded,\n hasTimeStarted: hasVotingStarted,\n timeStartEndInitReady: votingStartEndInitReady,\n } = useTimeStartEnd(\n countdownVotingStartMs / 1000,\n countdownVotingEndMs / 1000\n );\n\n const {\n hasTimeEnded: hasGracePeriodEnded,\n hasTimeStarted: hasGracePeriodStarted,\n timeStartEndInitReady: gracePeriodStartEndInitReady,\n } = useTimeStartEnd(\n countdownGracePeriodStartMs / 1000,\n countdownGracePeriodEndMs / 1000\n );\n\n /**\n * Variables\n */\n\n const isGracePeriodActive: boolean =\n gracePeriodStartEndInitReady &&\n hasGracePeriodStarted &&\n !hasGracePeriodEnded;\n\n const noUnits: number = votingResult?.No.units || 0;\n const totalUnits: number = votingResult?.totalUnits || 0;\n const yesUnits: number = votingResult?.Yes.units || 0;\n\n // We use `undefined` to indicate that the result has not yet been determined.\n const didVotePassSimpleMajority: boolean | undefined = hasVotingEnded\n ? yesUnits > noUnits\n : undefined;\n\n const renderedStatusFromProp = renderStatus?.({\n countdownGracePeriodEndMs,\n countdownGracePeriodStartMs,\n countdownVotingEndMs,\n countdownVotingStartMs,\n didVotePassSimpleMajority,\n gracePeriodStartEndInitReady,\n hasGracePeriodEnded,\n hasGracePeriodStarted,\n hasVotingEnded,\n hasVotingStarted,\n votingStartEndInitReady,\n });\n\n /**\n * Effects\n */\n\n // When voting times are updated, call the `onVotingPeriodChange` callback\n useEffect(() => {\n if (!votingStartEndInitReady) return;\n\n onVotingPeriodChange?.({\n hasVotingStarted,\n hasVotingEnded,\n proposalId,\n votingStartEndInitReady,\n });\n }, [\n hasVotingEnded,\n hasVotingStarted,\n onVotingPeriodChange,\n proposalId,\n votingStartEndInitReady,\n ]);\n\n // When voting times are updated, call the `onGracePeriodChange` callback\n useEffect(() => {\n if (!gracePeriodStartEndInitReady) return;\n\n onGracePeriodChange?.({\n hasGracePeriodEnded,\n hasGracePeriodStarted,\n proposalId,\n gracePeriodStartEndInitReady,\n });\n }, [\n gracePeriodStartEndInitReady,\n hasGracePeriodEnded,\n hasGracePeriodStarted,\n onGracePeriodChange,\n proposalId,\n ]);\n\n /**\n * Functions\n */\n\n function renderOffchainVotingStatus(): React.ReactNode {\n // Render status from prop\n if (renderedStatusFromProp) {\n return renderedStatusFromProp;\n }\n\n // Loading\n if (!votingStartEndInitReady) {\n return (\n \n );\n }\n\n // If in grace period, do not show a status.\n if (isGracePeriodActive) {\n return '';\n }\n\n // If passed on voting period ended\n if (didVotePassSimpleMajority) {\n return 'Approved';\n }\n\n // If failed on voting period ended\n if (didVotePassSimpleMajority === false) {\n return 'Failed';\n }\n }\n\n function renderTimer(\n ProposalPeriodComponent: Parameters<\n Parameters[0]['renderTimer']\n >[0]\n ): React.ReactNode {\n // Vote countdown timer\n if (votingStartEndInitReady && hasVotingStarted && !hasVotingEnded) {\n return (\n \n );\n }\n\n // Grace period countdown timer\n if (isGracePeriodActive) {\n return (\n \n );\n }\n }\n\n /**\n * Render\n */\n\n return (\n \n );\n}\n","import {SVGAttributes} from 'react';\n\nexport default function CheckSVG(props: SVGAttributes) {\n return (\n \n \n \n );\n}\n","import CheckSVG from '../../../assets/svg/CheckSVG';\n\ntype SquareRootVotingBarProps = {\n /**\n * Allow values to not be set as they may not be ready\n */\n yesUnits: number | undefined;\n /**\n * Allow values to not be set as they may not be ready\n */\n noUnits: number | undefined;\n /**\n * Allow values to not be set as they may not be ready\n */\n totalUnits: number | undefined;\n votingExpired: boolean;\n showPercentages: boolean;\n};\n\n/**\n * Provides a formatted number string for display as a percentage.\n * Two decimal places are used, unless the decimals are `.00`,\n * then they are removed.\n *\n * E.g. 50%; 50.77%; 0%\n *\n * @param units\n * @param totalUnits\n * @returns `string`\n */\nfunction getUnitsPercent(units: number, totalUnits: number): string {\n return ((units / totalUnits) * 100).toFixed(2).replace(/\\.00$/, '');\n}\n\nexport function SquareRootVotingBar({\n yesUnits = 0,\n noUnits = 0,\n totalUnits,\n votingExpired,\n showPercentages,\n}: SquareRootVotingBarProps) {\n /**\n * Variables\n */\n\n const percentYes = totalUnits ? getUnitsPercent(yesUnits, totalUnits) : '0';\n const percentNo = totalUnits ? getUnitsPercent(noUnits, totalUnits) : '0';\n\n /**\n * Render\n */\n\n return (\n \n
\n {/* YES */}\n
\n\n {/* NO */}\n
\n
\n\n
\n {showPercentages && (\n <>\n {/* YES */}\n {votingExpired && yesUnits > noUnits && (\n \n \n \n )}\n {percentYes}% \n\n {/* NO */}\n {percentNo}% \n {votingExpired && yesUnits <= noUnits && (\n \n \n \n )}\n >\n )}\n
\n
\n );\n}\n","import React, {ButtonHTMLAttributes} from 'react';\nimport {VoteChoices} from '@openlaw/snapshot-js-erc712';\n\nimport CheckSVG from '../../../assets/svg/CheckSVG';\nimport Loader from '../../feedback/Loader';\n\ntype VotingActionButtonsProps = {\n /**\n * Common props for both buttons\n */\n buttonProps?: ButtonHTMLAttributes;\n onClick: (choice: VoteChoices) => void;\n /**\n * Which vote did the current connected user submit?\n */\n voteChosen?: VoteChoices;\n /**\n * Shows a loading spinner for a voting button.\n */\n voteProgress?: VoteChoices;\n};\n\nexport function VotingActionButtons(\n props: VotingActionButtonsProps\n): JSX.Element {\n const {buttonProps, onClick, voteChosen, voteProgress} = props;\n\n /**\n * Functions\n */\n\n function getButtonARIALabel(\n choice: VoteChoices\n ): Partial> {\n return voteProgress === choice\n ? {'aria-label': `Voting ${choice} \\u2026`}\n : {};\n }\n\n function getButtonText(choice: VoteChoices): React.ReactNode {\n return voteProgress === choice ? (\n \n ) : voteChosen === choice ? (\n `Voted ${choice}`\n ) : (\n `Vote ${choice}`\n );\n }\n\n function handleClick(choice: VoteChoices) {\n return () => {\n onClick(choice);\n };\n }\n\n function renderVotedCheck(\n choice: VoteChoices,\n ariaLabel: string\n ): React.ReactNode {\n return voteChosen === choice ? (\n <>\n {' '}\n >\n ) : (\n ''\n );\n }\n\n /**\n * Render\n */\n\n return (\n <>\n \n {renderVotedCheck(VoteChoices.Yes, 'You voted yes')}\n {getButtonText(VoteChoices.Yes)}\n \n\n \n {renderVotedCheck(VoteChoices.No, 'You voted no')}\n {getButtonText(VoteChoices.No)}\n \n >\n );\n}\n","import {useState} from 'react';\nimport {TransactionReceipt} from 'web3-core/types';\n\nimport {CHAINS, ETHERSCAN_URLS} from '../../../config';\nimport {contractSend} from '../helpers';\nimport {dontCloseWindowWarning} from '../../../util/helpers';\nimport {useWeb3Modal} from './useWeb3Modal';\nimport {Web3TxStatus} from '../types';\n\ntype UseContractSendReturn = {\n txError: Error | undefined;\n txEtherscanURL: string;\n txIsPromptOpen: boolean;\n txReceipt: TransactionReceipt | undefined;\n txSend: (\n ...p: Parameters\n ) => Promise;\n txStatus: Web3TxStatus;\n};\n\n/**\n * useContractSend\n *\n * A React hook which encapsulates the call and related values of `contractSend`.\n *\n * @returns {UseContractSendReturn}\n */\nexport function useContractSend(): UseContractSendReturn {\n const [txError, setTxError] = useState();\n const [txEtherscanURL, setTxEtherscanURL] = useState('');\n const [txIsPromptOpen, setTxIsPromptOpen] = useState(false);\n const [txReceipt, setTxReceipt] = useState();\n const [txStatus, setTxStatus] = useState(Web3TxStatus.STANDBY);\n\n /**\n * Our hooks\n */\n\n const {networkId} = useWeb3Modal();\n\n /**\n * Functions\n */\n\n function handleOnTxProcess(callback?: (txh: string) => void) {\n return (txHash: string) => {\n setTxStatus(Web3TxStatus.PENDING);\n setTxIsPromptOpen(false);\n\n // Ganache transactions do not show on Etherscan.\n if (networkId && networkId !== CHAINS.GANACHE) {\n setTxEtherscanURL(`${ETHERSCAN_URLS[networkId]}/tx/${txHash}`);\n }\n\n callback && callback(txHash);\n };\n }\n\n async function txSend(\n ...contractSendParams: Parameters\n ) {\n // Activate \"don't close window\" warning\n const unsubscribeDontCloseWindow = dontCloseWindowWarning();\n\n try {\n // Reset state in case trying again after error.\n setTxError(undefined);\n setTxEtherscanURL('');\n\n setTxStatus(Web3TxStatus.AWAITING_CONFIRM);\n setTxIsPromptOpen(true);\n\n // Intercept the on process callback to allow us to set our internal state.\n contractSendParams[4] = handleOnTxProcess(contractSendParams[4]);\n\n const receipt = await contractSend(...contractSendParams);\n\n setTxReceipt(receipt);\n setTxStatus(Web3TxStatus.FULFILLED);\n\n unsubscribeDontCloseWindow();\n\n return receipt;\n } catch (error) {\n setTxError(error);\n setTxStatus(Web3TxStatus.REJECTED);\n setTxIsPromptOpen(false);\n\n unsubscribeDontCloseWindow();\n\n throw error;\n }\n }\n\n return {\n txError,\n txEtherscanURL,\n txIsPromptOpen,\n txReceipt,\n txSend,\n txStatus,\n };\n}\n","import {useEffect, useState} from 'react';\nimport {toWei} from 'web3-utils';\nimport BigNumber from 'bignumber.js';\n\nimport {AsyncStatus} from '../../../util/types';\nimport {ENVIRONMENT} from '../../../config';\nimport {useAbortController} from '../../../hooks';\n\ntype GasStationResponse = {\n average: number;\n avgWait: number;\n block_time: number;\n blockNum: number;\n fast: number;\n fastest: number;\n fastestWait: number;\n fastWait: number;\n gasPriceRange: Record;\n safeLow: number;\n safeLowWait: number;\n speed: number;\n};\n\ntype GasPrices = {\n average: string | undefined;\n fast: string | undefined;\n fastest: string | undefined;\n safeLow: string | undefined;\n};\n\ntype UseETHGasPriceReturn = GasPrices & {\n gasPriceError: Error | undefined;\n gasPriceStatus: AsyncStatus;\n};\n\nconst URL = 'https://ethgasstation.info/json/ethgasAPI.json';\n\n/**\n * To prepare the provided ETHGasStation values for conversion from Gwei->wei,\n * first divide by `10`, per the API docs.\n *\n * @see https://docs.ethgasstation.info/gas-price#gas-price\n */\nfunction convertGasToWEI(gasStationPrice: number) {\n const gasPriceToWEI: string = toWei(\n new BigNumber((gasStationPrice / 10).toFixed(4)).toString(),\n 'Gwei'\n );\n\n return gasPriceToWEI;\n}\n\nconst INITIAL_GAS_PRICES: GasPrices = {\n average: undefined,\n fast: undefined,\n fastest: undefined,\n safeLow: undefined,\n};\n\n/**\n * useETHGasPrice\n *\n * Returns the latest mainnet gas prices, converted to WEI string from ETHGasStation.\n *\n * @returns {UseETHGasPriceReturn}\n * @see https://ethgasstation.info/json/ethgasAPI.json\n */\nexport function useETHGasPrice(props?: {\n ignoreEnvironment?: boolean;\n}): UseETHGasPriceReturn {\n const {ignoreEnvironment = false} = props || {};\n\n /**\n * State\n */\n\n const [gasPrices, setGasPrices] = useState(INITIAL_GAS_PRICES);\n const [gasPriceError, setGasPriceError] = useState();\n\n const [gasPriceStatus, setGasPriceStatus] = useState(\n AsyncStatus.STANDBY\n );\n\n /**\n * Our hooks\n */\n\n const {abortController, isMountedRef} = useAbortController();\n\n /**\n * Variables\n */\n\n /**\n * Sometimes using mainnet gas prices for testnets won't work well with wallets.\n */\n const shouldExitIfNotProduction: boolean =\n ignoreEnvironment === false && ENVIRONMENT !== 'production';\n\n /**\n * Effects\n */\n\n useEffect(() => {\n if (!abortController?.signal) return;\n if (shouldExitIfNotProduction) return;\n\n setGasPriceError(undefined);\n setGasPriceStatus(AsyncStatus.PENDING);\n\n fetch(URL, {signal: abortController.signal})\n .then((response) => {\n if (!isMountedRef.current) return;\n\n if (!response.ok) {\n throw new Error(\n 'Something went wrong while getting the latest gas price.'\n );\n }\n\n setGasPriceStatus(AsyncStatus.FULFILLED);\n\n return response.json();\n })\n .then((jsonResponse: GasStationResponse) => {\n if (!isMountedRef.current) return;\n\n const {average, fast, fastest, safeLow} = jsonResponse;\n\n setGasPrices({\n average: convertGasToWEI(average),\n fast: convertGasToWEI(fast),\n fastest: convertGasToWEI(fastest),\n safeLow: convertGasToWEI(safeLow),\n });\n })\n .catch((error) => {\n if (!isMountedRef.current) return;\n\n setGasPriceError(error);\n setGasPrices(INITIAL_GAS_PRICES);\n setGasPriceStatus(AsyncStatus.REJECTED);\n });\n\n return () => {\n abortController.abort();\n };\n }, [abortController, isMountedRef, shouldExitIfNotProduction]);\n\n /**\n * Result\n */\n\n return {...gasPrices, gasPriceError, gasPriceStatus};\n}\n","import {useCallback} from 'react';\nimport {useDispatch} from 'react-redux';\nimport Web3 from 'web3';\n\nimport {\n initContractBankAdapter,\n initContractBankExtension,\n initContractBankFactory,\n initContractConfiguration,\n initContractCouponOnboarding,\n initContractDaoFactory,\n initContractDaoRegistry,\n initContractDaoRegistryAdapter,\n initContractDistribute,\n initContractERC20Extension,\n initContractFinancing,\n initContractGuildKick,\n initContractManaging,\n initContractNFTAdapter,\n initContractNFTExtension,\n initContractOnboarding,\n initContractRagequit,\n initContractTribute,\n initContractTributeNFT,\n initRegisteredVotingAdapter,\n} from '../../../store/actions';\nimport {ReduxDispatch} from '../../../store/types';\n\n/**\n * useInitContracts\n *\n * Initiates all contracts used in the app.\n *\n * @todo Use subgraph to pass the address to each init function, so it skips chain calls.\n */\nexport function useInitContracts(): (data: {\n web3Instance: Web3;\n}) => Promise {\n /**\n * Their hooks\n */\n\n const dispatch = useDispatch();\n\n /**\n * Cached callbacks\n */\n\n const initContractsCached = useCallback(initContracts, [dispatch]);\n\n /**\n * Init contracts\n */\n async function initContracts({web3Instance}: {web3Instance: Web3}) {\n try {\n // Must init registry first\n await dispatch(initContractDaoRegistry(web3Instance));\n\n await dispatch(initContractDaoFactory(web3Instance));\n await dispatch(initContractBankFactory(web3Instance));\n await dispatch(initContractConfiguration(web3Instance));\n await dispatch(initContractFinancing(web3Instance));\n await dispatch(initContractGuildKick(web3Instance));\n await dispatch(initContractManaging(web3Instance));\n await dispatch(initContractRagequit(web3Instance));\n await dispatch(initContractBankAdapter(web3Instance));\n await dispatch(initContractBankExtension(web3Instance));\n await dispatch(initContractManaging(web3Instance));\n await dispatch(initContractOnboarding(web3Instance));\n await dispatch(initContractTribute(web3Instance));\n await dispatch(initContractDistribute(web3Instance));\n await dispatch(initRegisteredVotingAdapter(web3Instance));\n await dispatch(initContractTributeNFT(web3Instance));\n await dispatch(initContractNFTExtension(web3Instance));\n await dispatch(initContractNFTAdapter(web3Instance));\n await dispatch(initContractCouponOnboarding(web3Instance));\n await dispatch(initContractDaoRegistryAdapter(web3Instance));\n await dispatch(initContractERC20Extension(web3Instance));\n } catch (error) {\n throw error;\n }\n }\n\n return initContractsCached;\n}\n","import {useEffect, useState} from 'react';\n\nimport {CHAIN_NAME_FULL, DEFAULT_CHAIN} from '../../../config';\nimport {useWeb3Modal} from './useWeb3Modal';\n\ntype UseIsDefaultChainReturn = {\n /**\n * The default chain of the app\n */\n defaultChain: number;\n /**\n * Any error derived from detecting the default chain\n */\n defaultChainError: Error | undefined;\n /**\n * Specifies if the curently connected chain matches the app's default chain\n */\n isDefaultChain: boolean;\n};\n\n/**\n * useIsDefaultChain\n *\n * Checks if the connected account it connected to the default chain.\n *\n * @returns UseIsDefaultChainReturn\n */\nexport function useIsDefaultChain(): UseIsDefaultChainReturn {\n /**\n * Our hooks\n */\n\n const {networkId, connected} = useWeb3Modal();\n\n /**\n * State\n */\n\n const [defaultChainError, setDefaultChainError] = useState();\n\n /**\n * Effects\n */\n\n // Determine `defaultChainError`\n useEffect(() => {\n // User is already connected to a wallet, and chain is incorrect.\n if (connected && networkId !== DEFAULT_CHAIN) {\n setDefaultChainError(\n new Error(`Please connect to the ${CHAIN_NAME_FULL[DEFAULT_CHAIN]}.`)\n );\n\n return;\n }\n\n // Reset error after successful checks.\n setDefaultChainError(undefined);\n }, [connected, networkId]);\n\n return {\n defaultChain: DEFAULT_CHAIN,\n defaultChainError,\n isDefaultChain: networkId === DEFAULT_CHAIN,\n };\n}\n","import {provider} from 'web3-core/types';\nimport {useCallback, useEffect, useState} from 'react';\nimport {Web3Provider} from '@ethersproject/providers';\n\nimport {isPossibleContractWallet} from '../../../util/helpers';\nimport Web3 from 'web3';\nimport {useIsMounted} from '../../../hooks';\n\nconst INITIAL_MAYBE_CONTRACT_WALLET_STATE: boolean = false;\n\nexport function useMaybeContractWallet(\n account: string | undefined,\n web3Provider: Web3['currentProvider'] | undefined\n): boolean {\n /**\n * State\n */\n\n const [maybeContractWallet, setMaybeContractWallet] = useState(\n INITIAL_MAYBE_CONTRACT_WALLET_STATE\n );\n\n /**\n * Our hooks\n */\n\n const {isMountedRef} = useIsMounted();\n\n /**\n * Cached callbacks\n */\n\n const handleIsPossibleContractWalletCached = useCallback(\n handleIsPossibleContractWallet,\n [isMountedRef]\n );\n\n /**\n * Effects\n */\n\n useEffect(() => {\n if (!web3Provider || !account) return;\n\n handleIsPossibleContractWalletCached(account, web3Provider);\n }, [account, handleIsPossibleContractWalletCached, web3Provider]);\n\n /**\n * Functions\n */\n\n async function handleIsPossibleContractWallet(\n account: string,\n web3Provider: provider\n ): Promise {\n try {\n const response = await isPossibleContractWallet(\n account,\n /**\n * Web3 `provider` doesn't provide the correct types to satisfy `Web3Provider`,\n * but this does work.\n */\n new Web3Provider(web3Provider as any)\n );\n\n if (!isMountedRef.current) return;\n\n setMaybeContractWallet(response);\n } catch (error) {\n if (!isMountedRef.current) return;\n\n setMaybeContractWallet(INITIAL_MAYBE_CONTRACT_WALLET_STATE);\n }\n }\n\n /**\n * Return\n */\n\n return maybeContractWallet;\n}\n","import ReactModal from 'react-modal';\n\nimport FadeIn from './FadeIn';\n\ntype ModalProps = {\n children: React.ReactNode;\n isOpen: boolean;\n isOpenHandler: (isOpen: boolean) => void;\n keyProp: string;\n modalClassNames?: string;\n styleProps?: Record;\n};\n\nexport default function Modal({\n children,\n isOpen,\n isOpenHandler,\n keyProp,\n modalClassNames,\n styleProps,\n}: ModalProps) {\n return (\n {\n isOpenHandler(isOpen);\n }}\n overlayClassName=\"modal-overlay\"\n role=\"dialog\"\n style={\n {\n overlay: {zIndex: '99'},\n ...styleProps,\n } as any\n }>\n \n {children}
\n \n \n );\n}\n","import {useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {toChecksumAddress} from 'web3-utils';\n\nimport {\n useContractSend,\n useETHGasPrice,\n useIsDefaultChain,\n useWeb3Modal,\n} from '../components/web3/hooks';\nimport {COUPON_API_URL} from '../config';\nimport {ERC20RegisterDetails} from '../components/dao-token/DaoToken';\nimport {getConnectedMember} from '../store/actions';\nimport {ReduxDispatch, StoreState} from '../store/types';\nimport {Web3TxStatus} from '../components/web3/types';\nimport {normalizeString} from '../util/helpers';\n\nexport enum FetchStatus {\n STANDBY = 'STANDBY',\n PENDING = 'PENDING',\n FULFILLED = 'FULFILLED',\n REJECTED = 'REJECTED',\n}\n\ntype RedeemCouponArguments = [\n string, // `dao`\n string, // `authorizedMember`\n string, // `amount`\n number, // `nonce`\n string // `signature`\n];\n\ntype ReturnUseRedeemCoupon = {\n isInProcessOrDone: boolean;\n redeemCoupon: (\n {redeemableCoupon}: Record,\n erc20Details?: ERC20RegisterDetails\n ) => Promise;\n submitStatus: FetchStatus;\n submitError: Error | undefined;\n txStatus: Web3TxStatus;\n txError: Error | undefined;\n txEtherscanURL: string;\n txIsPromptOpen: boolean;\n};\n\nexport function useRedeemCoupon(): ReturnUseRedeemCoupon {\n /**\n * Selectors\n */\n\n const daoRegistryContract = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract\n );\n const couponOnboardingContract = useSelector(\n (s: StoreState) => s.contracts.CouponOnboardingContract\n );\n\n /**\n * State\n */\n\n const [submitError, setSubmitError] = useState();\n const [submitStatus, setSubmitStatus] = useState(\n FetchStatus.STANDBY\n );\n\n /**\n * Our hooks\n */\n\n const {fast: fastGasPrice} = useETHGasPrice();\n const {account, web3Instance} = useWeb3Modal();\n const {defaultChainError} = useIsDefaultChain();\n const {txError, txEtherscanURL, txIsPromptOpen, txSend, txStatus} =\n useContractSend();\n\n /**\n * Their hooks\n */\n\n const dispatch = useDispatch();\n\n /**\n * Variables\n */\n\n const isInProcessOrDone =\n submitStatus === FetchStatus.PENDING ||\n submitStatus === FetchStatus.FULFILLED;\n\n /**\n * Functions\n */\n\n async function handleRedeemCoupon(\n redeemableCoupon: Record,\n erc20Details?: ERC20RegisterDetails\n ) {\n try {\n if (defaultChainError) {\n throw new Error('Wrong network connected.');\n }\n\n if (!redeemableCoupon) {\n throw new Error('No coupon data was found.');\n }\n\n if (!account) {\n throw new Error('No account found.');\n }\n\n if (!daoRegistryContract) {\n throw new Error('No DAO Registry contract was found.');\n }\n\n if (!couponOnboardingContract) {\n throw new Error('No Coupon Onboarding contract was found.');\n }\n\n if (!web3Instance) {\n throw new Error('No Web3 instance was found.');\n }\n\n setSubmitStatus(FetchStatus.PENDING);\n\n const applicantAddressToChecksum = toChecksumAddress(\n redeemableCoupon.recipient\n );\n\n // initiate tx\n const redeemCouponArguments: RedeemCouponArguments = [\n daoRegistryContract.contractAddress,\n applicantAddressToChecksum,\n String(redeemableCoupon.amount),\n Number(redeemableCoupon.nonce),\n redeemableCoupon.signature,\n ];\n\n const txArguments = {\n from: account || '',\n ...(fastGasPrice ? {gasPrice: fastGasPrice} : null),\n };\n\n // Execute contract call for `redeemCoupon`\n const txReceipt = await txSend(\n 'redeemCoupon',\n couponOnboardingContract.instance.methods,\n redeemCouponArguments,\n txArguments\n );\n\n if (txReceipt) {\n // update the db and send email\n const response = await fetch(`${COUPON_API_URL}/api/coupon/redeem`, {\n method: 'PATCH',\n body: JSON.stringify({\n // search by signature\n signature: redeemableCoupon.signature,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error('Something went wrong while updating the coupon.');\n }\n\n setSubmitStatus(FetchStatus.FULFILLED);\n\n // if connected account is the coupon recipient\n if (\n normalizeString(redeemableCoupon.recipient) ===\n normalizeString(account)\n ) {\n // re-fetch member\n await dispatch(\n getConnectedMember({\n account,\n daoRegistryContract,\n web3Instance,\n })\n );\n\n // suggest adding DAO token to wallet\n await addTokenToWallet(erc20Details);\n }\n }\n } catch (error) {\n setSubmitError(error);\n setSubmitStatus(FetchStatus.REJECTED);\n }\n }\n\n async function addTokenToWallet(erc20Details?: ERC20RegisterDetails) {\n if (!erc20Details) return;\n\n try {\n await window.ethereum.request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: erc20Details,\n },\n });\n } catch (error) {\n console.log(error);\n }\n }\n\n return {\n isInProcessOrDone,\n redeemCoupon: handleRedeemCoupon,\n submitError,\n submitStatus,\n txStatus,\n txError,\n txEtherscanURL,\n txIsPromptOpen,\n };\n}\n","/**\n * DaoConstants as defined in the solidity DaoConstants.sol contract\n * and the available adapters as detailed here:\n * https://github.com/openlawteam/tribute-contracts\n */\nexport enum DaoAdapterConstants {\n BANK = 'bank',\n CONFIGURATION = 'configuration',\n COUPON_ONBOARDING = 'coupon-onboarding',\n DAO_REGISTRY = 'daoRegistry',\n DISTRIBUTE = 'distribute',\n EXECUTION = 'execution',\n FINANCING = 'financing',\n GUILDKICK = 'guildkick',\n MANAGING = 'managing',\n NFT = 'nft',\n NONVOTING_ONBOARDING = 'nonvoting-onboarding',\n OFFCHAINVOTING = 'offchainvoting',\n ONBOARDING = 'onboarding',\n RAGEQUIT = 'ragequit',\n TRIBUTE = 'tribute',\n TRIBUTE_NFT = 'tribute-nft',\n VOTING = 'voting',\n}\n\nexport enum DaoExtensionConstants {\n BANK = 'bank',\n ERC20 = 'erc20-ext',\n NFT = 'nft',\n}\n\n/**\n * Voting adapter names as defined in the solidity voting adapter contracts\n * i.e. `string public constant ADAPTER_NAME = \"VotingContract\"`.\n *\n * @link https://github.com/openlawteam/tribute-contracts/blob/master/contracts/adapters/voting\n */\nexport enum VotingAdapterName {\n OffchainVotingContract = 'OffchainVotingContract',\n VotingContract = 'VotingContract',\n}\n","import {Dispatch} from 'redux';\nimport Web3 from 'web3';\n\nimport {BURN_ADDRESS} from '../../util/constants';\nimport {ConnectedMemberState} from '../connectedMember/types';\nimport {ContractsStateEntry} from '../contracts/types';\nimport {hasFlag, multicall} from '../../components/web3/helpers';\nimport {MemberFlag} from '../../components/web3/types';\nimport {normalizeString} from '../../util/helpers';\n\nexport const SET_CONNECTED_MEMBER = 'SET_CONNECTED_MEMBER';\nexport const CLEAR_CONNECTED_MEMBER = 'CLEAR_CONNECTED_MEMBER';\n\n/**\n * getConnectedMember\n *\n * Gets information about a connected address from the DAO's `members`.\n * If the user is not a member, the defaults for a non-existent member of the DAO are returned (e.g. \"0x000000...\")\n * and `isActiveMember` will be `false`.\n *\n * The reason state is set for both a member and a non-member\n * is to ensure we're not too restrictive in our Dapp logic and\n * letting the contract do its job.\n */\nexport function getConnectedMember({\n account,\n daoRegistryContract,\n web3Instance,\n}: {\n account: string;\n daoRegistryContract: ContractsStateEntry;\n web3Instance: Web3;\n}) {\n return async function (dispatch: Dispatch) {\n const daoRegistryMethods = daoRegistryContract?.instance.methods;\n const daoRegistryAddress = daoRegistryContract?.contractAddress;\n\n const getAddressIfDelegatedABI = daoRegistryContract?.abi.find(\n (ai) => ai.name === 'getAddressIfDelegated'\n );\n const membersABI = daoRegistryContract?.abi.find(\n (ai) => ai.name === 'members'\n );\n const isActiveMemberABI = daoRegistryContract?.abi.find(\n (ai) => ai.name === 'isActiveMember'\n );\n const getCurrentDelegateKeyABI = daoRegistryContract?.abi.find(\n (ai) => ai.name === 'getCurrentDelegateKey'\n );\n\n if (\n !account ||\n !daoRegistryAddress ||\n !daoRegistryMethods ||\n !getAddressIfDelegatedABI ||\n !getCurrentDelegateKeyABI ||\n !isActiveMemberABI ||\n !membersABI\n ) {\n dispatch(clearConnectedMember());\n\n return;\n }\n\n try {\n /**\n * @link https://github.com/openlawteam/tribute-contracts/blob/master/docs/core/DaoRegistry.md\n */\n\n const [\n addressIfDelegated,\n memberFlag,\n isActiveMember,\n currentDelegateKey,\n ] = await multicall({\n calls: [\n [daoRegistryAddress, getAddressIfDelegatedABI, [account]],\n [daoRegistryAddress, membersABI, [account]],\n [\n daoRegistryAddress,\n isActiveMemberABI,\n [daoRegistryAddress, account],\n ],\n [daoRegistryAddress, getCurrentDelegateKeyABI, [account]],\n ],\n web3Instance,\n });\n\n // A member can exist in the DAO, yet not be an active member (has units > 0)\n const doesMemberExist: boolean = hasFlag(MemberFlag.EXISTS, memberFlag);\n\n // Is this address known to the DAO?\n const delegateKey: string =\n isActiveMember || doesMemberExist ? currentDelegateKey : BURN_ADDRESS;\n\n // Is this address known to the DAO?\n const memberAddress: string =\n isActiveMember || doesMemberExist ? addressIfDelegated : BURN_ADDRESS;\n\n const isAddressDelegated: boolean =\n normalizeString(account) === normalizeString(memberAddress) &&\n normalizeString(account) !== normalizeString(delegateKey);\n\n dispatch(\n setConnectedMember({\n delegateKey,\n isAddressDelegated,\n isActiveMember,\n memberAddress,\n })\n );\n } catch (error) {\n dispatch(clearConnectedMember());\n\n throw error;\n }\n };\n}\n\nexport function setConnectedMember(payload: ConnectedMemberState) {\n return {type: SET_CONNECTED_MEMBER, ...payload};\n}\n\nexport function clearConnectedMember() {\n return {type: CLEAR_CONNECTED_MEMBER};\n}\n","export const CONNECT_MODAL_CLOSE = 'CONNECT_MODAL_CLOSE';\nexport const CONNECT_MODAL_OPEN = 'CONNECT_MODAL_OPEN';\n\nexport function connectModalClose() {\n return {type: CONNECT_MODAL_CLOSE};\n}\n\nexport function connectModalOpen() {\n return {type: CONNECT_MODAL_OPEN};\n}\n","import {useReducer, useCallback, useEffect} from 'react';\nimport Web3 from 'web3';\nimport Web3Modal, {IProviderOptions} from 'web3modal';\n\nimport {AsyncStatus} from '../../../util/types';\nimport {DEFAULT_CHAIN} from '../../../config';\nimport {NetworkNames, NetworkIDs} from '../../../util/enums';\n\nexport enum DefaultTheme {\n DARK = 'dark',\n LIGHT = 'light',\n}\n\nenum ActionType {\n CONNECT_WEB3MODAL,\n DEACTIVATE_PROVIDER_WEB3MODAL,\n ERROR_WEB3MODAL,\n INITIAL_CACHED_CONNECTOR_CHECK_STATUS,\n NEW_WEB3MODAL,\n UPDATE_ACCOUNT,\n}\n\ninterface Action {\n type: ActionType;\n payload?: Partial;\n}\n\nexport enum Web3ModalErrorType {\n CONNECT = 'CONNECT',\n DISCONNECT = 'DISCONNECT',\n}\n\nexport type Web3ModalError = {\n connectorId: string;\n error: Error;\n type: Web3ModalErrorType;\n};\n\ntype Web3ModalManagerState = {\n account?: undefined | string;\n connected?: boolean;\n error?: Web3ModalError;\n initialCachedConnectorCheckStatus?: AsyncStatus;\n networkId?: number;\n provider?: any;\n web3Instance?: Web3;\n web3Modal?: Web3Modal;\n};\n\ninterface Web3ModalManagerInterface {\n defaultChain?: number;\n defaultTheme?: DefaultTheme;\n onBeforeDisconnect?: () => void;\n onBeforeConnect?: () => void;\n providerOptions: IProviderOptions;\n}\n\ntype UseWeb3ModalManagerReturn = {\n connectWeb3Modal: (connectorId: string) => Promise;\n disconnectWeb3Modal: () => Promise;\n providerOptions: Web3ModalManagerInterface['providerOptions'];\n} & Web3ModalManagerState;\n\nconst INITIAL_STATE = {};\n\nfunction reducer(\n state: Web3ModalManagerState = INITIAL_STATE,\n {type, payload}: Action\n): Web3ModalManagerState {\n switch (type) {\n case ActionType.CONNECT_WEB3MODAL: {\n const {provider, networkId, account, connected, web3Instance} =\n payload || {};\n\n return {\n ...state,\n account,\n connected,\n networkId,\n provider,\n web3Instance,\n };\n }\n\n case ActionType.DEACTIVATE_PROVIDER_WEB3MODAL: {\n return INITIAL_STATE;\n }\n\n case ActionType.ERROR_WEB3MODAL: {\n const {error} = payload || {};\n\n return {\n ...state,\n error,\n };\n }\n\n case ActionType.INITIAL_CACHED_CONNECTOR_CHECK_STATUS: {\n const {initialCachedConnectorCheckStatus} = payload || {};\n\n return {\n ...state,\n initialCachedConnectorCheckStatus,\n };\n }\n\n case ActionType.NEW_WEB3MODAL: {\n const {web3Modal} = payload || {};\n return {web3Modal};\n }\n\n case ActionType.UPDATE_ACCOUNT: {\n const {account} = payload || {};\n\n return {\n ...state,\n account,\n };\n }\n\n default:\n return INITIAL_STATE;\n }\n}\n\nexport default function useWeb3ModalManager({\n defaultChain,\n defaultTheme,\n onBeforeConnect,\n onBeforeDisconnect,\n providerOptions,\n}: Web3ModalManagerInterface): UseWeb3ModalManagerReturn {\n /**\n * Reducers\n */\n\n const [state, dispatch] = useReducer(reducer, {\n initialCachedConnectorCheckStatus: AsyncStatus.STANDBY,\n });\n\n /**\n * Variables\n */\n\n const web3ModalTheme = defaultTheme;\n const web3ModalChain: number = defaultChain || DEFAULT_CHAIN;\n\n /**\n * Cached callbacks\n */\n\n const connectWeb3ModalCached = useCallback(connectWeb3Modal, [\n onBeforeConnect,\n state.web3Modal,\n ]);\n\n const chainChangedCallbackCached = useCallback(chainChangedCallback, [\n connectWeb3ModalCached,\n state.web3Modal?.cachedProvider,\n ]);\n\n /**\n * Effects\n */\n\n useEffect(() => {\n const provider = state.provider;\n\n // Subscribe to accounts change\n provider?.on?.('accountsChanged', accountsChangedCallback);\n\n // Subscribe to chainId change\n provider?.on?.('chainChanged', chainChangedCallbackCached);\n\n return () => {\n // Remove listeners on unmount\n provider?.removeListener?.('accountsChanged', accountsChangedCallback);\n provider?.removeListener?.('chainChanged', chainChangedCallbackCached);\n };\n }, [chainChangedCallbackCached, state.provider]);\n\n // Init Web3Modal\n useEffect(() => {\n if (state.web3Modal) return;\n\n dispatch({\n type: ActionType.NEW_WEB3MODAL,\n payload: {\n web3Modal: new Web3Modal({\n cacheProvider: true, // optional\n network: NetworkNames[NetworkIDs[web3ModalChain]], // optional\n providerOptions, // required\n theme: web3ModalTheme, // optional; `light` or `dark`. `dark` is default\n }),\n },\n });\n }, [providerOptions, state.web3Modal, web3ModalChain, web3ModalTheme]);\n\n // Attempt to initialise connection to a cached provider\n useEffect(() => {\n // If the initial check has ran, or is running, exit.\n if (\n state.initialCachedConnectorCheckStatus === AsyncStatus.FULFILLED ||\n state.initialCachedConnectorCheckStatus === AsyncStatus.PENDING\n ) {\n return;\n }\n\n attemptUpdateFromCachedConnector(\n state.web3Modal?.cachedProvider,\n connectWeb3ModalCached\n );\n }, [\n connectWeb3ModalCached,\n state.initialCachedConnectorCheckStatus,\n state.web3Modal?.cachedProvider,\n ]);\n\n /**\n * Functions\n */\n\n function accountsChangedCallback([account]: string[]) {\n dispatch({\n type: ActionType.UPDATE_ACCOUNT,\n payload: {\n account,\n },\n });\n }\n\n function chainChangedCallback(_chainIdHex: string) {\n if (!state.web3Modal?.cachedProvider) return;\n\n connectWeb3ModalCached(state.web3Modal?.cachedProvider);\n }\n\n /**\n * attemptUpdateFromCachedConnector\n *\n * Will attempt to connect if a `connectorId` (e.g. `\"injected\"`)\n * and cached provider (via `localStorage`) is available.\n *\n * @param connectorId `String | undefined`\n * @param connectCallback `Function` callback which dispatches an action to connect\n * @returns void\n */\n async function attemptUpdateFromCachedConnector(\n connectorId: string | undefined,\n connectCallback: (cid: string) => Promise\n ): Promise {\n const statusAction = ActionType.INITIAL_CACHED_CONNECTOR_CHECK_STATUS;\n\n /**\n * Wait for the `state.web3Modal` object to be available, as `cachedProvider`\n * defaults to an empty `String` if not set.\n */\n if (typeof connectorId !== 'string') return;\n\n dispatch({\n type: statusAction,\n payload: {initialCachedConnectorCheckStatus: AsyncStatus.PENDING},\n });\n\n if (connectorId) {\n // @note Does not throw\n await connectCallback(connectorId);\n }\n\n dispatch({\n type: statusAction,\n payload: {initialCachedConnectorCheckStatus: AsyncStatus.FULFILLED},\n });\n }\n\n /**\n * Connect to a specfic wallet; get account assets and\n * subscribe to provider events\n */\n async function connectWeb3Modal(connectorId: string): Promise {\n try {\n if (!state.web3Modal) return;\n\n const provider = await state.web3Modal.connectTo(connectorId);\n\n const web3Instance: Web3 = new Web3(provider);\n\n // Get index `0` account\n const [account] = await web3Instance.eth.getAccounts();\n\n // Run callback if provided\n await onBeforeConnect?.();\n\n dispatch({\n type: ActionType.CONNECT_WEB3MODAL,\n payload: {\n account,\n connected: true,\n networkId: await web3Instance.eth.net.getId(),\n provider,\n web3Instance,\n },\n });\n } catch (error) {\n dispatch({\n type: ActionType.ERROR_WEB3MODAL,\n payload: {\n error: {\n connectorId,\n error: new Error(`Failed to connect to ${connectorId}.`),\n type: Web3ModalErrorType.CONNECT,\n },\n },\n });\n }\n }\n\n /**\n * Disconnect wallet button pressed.\n */\n async function disconnectWeb3Modal(): Promise {\n try {\n await state.provider?.close?.();\n\n // If the cached provider is not cleared,\n // WalletConnect will default to the existing session\n // and does not allow to re-scan the QR code with a new wallet.\n // Depending on your use case you may want or want not his behaviour.\n state.web3Modal && (await state.web3Modal.clearCachedProvider());\n\n // Run callback if provided\n await onBeforeDisconnect?.();\n\n // Reset all state\n dispatch({type: ActionType.DEACTIVATE_PROVIDER_WEB3MODAL});\n } catch (error) {\n const connectorId: string = state.web3Modal?.cachedProvider || '';\n\n dispatch({\n type: ActionType.ERROR_WEB3MODAL,\n payload: {\n error: {\n connectorId,\n error: new Error(\n `Failed to disconnect from ${connectorId || 'provider'}.`\n ),\n type: Web3ModalErrorType.DISCONNECT,\n },\n },\n });\n }\n }\n\n return {\n ...state,\n connectWeb3Modal,\n disconnectWeb3Modal,\n providerOptions,\n };\n}\n","import Web3 from 'web3';\nimport {AbiItem} from 'web3-utils/types';\nimport {Dispatch} from 'redux';\n\nimport {\n ContractAdapterNames,\n ContractExtensionNames,\n} from '../../components/web3/types';\nimport {\n DEFAULT_CHAIN,\n BANK_FACTORY_CONTRACT_ADDRESS,\n DAO_FACTORY_CONTRACT_ADDRESS,\n DAO_REGISTRY_CONTRACT_ADDRESS,\n} from '../../config';\nimport {\n getAdapterAddress,\n getVotingAdapterName,\n} from '../../components/web3/helpers';\nimport {\n DaoAdapterConstants,\n DaoExtensionConstants,\n VotingAdapterName,\n} from '../../components/adapters-extensions/enums';\nimport {ContractsStateEntry} from './types';\nimport {getExtensionAddress} from '../../components/web3/helpers/getExtensionAddress';\nimport {StoreState} from '../types';\n\ntype ContractAction =\n | typeof CLEAR_CONTRACTS\n | typeof CONTRACT_BANK_ADAPTER\n | typeof CONTRACT_BANK_EXTENSION\n | typeof CONTRACT_BANK_FACTORY\n | typeof CONTRACT_CONFIGURATION\n | typeof CONTRACT_COUPON_ONBOARDING\n | typeof CONTRACT_DAO_FACTORY\n | typeof CONTRACT_DAO_REGISTRY\n | typeof CONTRACT_DAO_REGISTRY_ADAPTER\n | typeof CONTRACT_DISTRIBUTE\n | typeof CONTRACT_ERC20_EXTENSION\n | typeof CONTRACT_FINANCING\n | typeof CONTRACT_GUILDKICK\n | typeof CONTRACT_MANAGING\n | typeof CONTRACT_NFT_ADAPTER\n | typeof CONTRACT_NFT_EXTENSION\n | typeof CONTRACT_ONBOARDING\n | typeof CONTRACT_RAGEQUIT\n | typeof CONTRACT_TRIBUTE\n | typeof CONTRACT_TRIBUTE_NFT\n | typeof CONTRACT_VOTING\n | typeof CONTRACT_VOTING_OP_ROLLUP;\n\nexport const CLEAR_CONTRACTS = 'CLEAR_CONTRACTS';\nexport const CONTRACT_BANK_ADAPTER = 'CONTRACT_BANK_ADAPTER';\nexport const CONTRACT_BANK_EXTENSION = 'CONTRACT_BANK_EXTENSION';\nexport const CONTRACT_BANK_FACTORY = 'CONTRACT_BANK_FACTORY';\nexport const CONTRACT_CONFIGURATION = 'CONTRACT_CONFIGURATION';\nexport const CONTRACT_COUPON_ONBOARDING = 'CONTRACT_COUPON_ONBOARDING';\nexport const CONTRACT_DAO_FACTORY = 'CONTRACT_DAO_FACTORY';\nexport const CONTRACT_DAO_REGISTRY = 'CONTRACT_DAO_REGISTRY';\nexport const CONTRACT_DAO_REGISTRY_ADAPTER = 'CONTRACT_DAO_REGISTRY_ADAPTER';\nexport const CONTRACT_DISTRIBUTE = 'CONTRACT_DISTRIBUTE';\nexport const CONTRACT_ERC20_EXTENSION = 'CONTRACT_ERC20_EXTENSION';\nexport const CONTRACT_FINANCING = 'CONTRACT_FINANCING';\nexport const CONTRACT_GUILDKICK = 'CONTRACT_GUILDKICK';\nexport const CONTRACT_MANAGING = 'CONTRACT_MANAGING';\nexport const CONTRACT_NFT_ADAPTER = 'CONTRACT_NFT_ADAPTER';\nexport const CONTRACT_NFT_EXTENSION = 'CONTRACT_NFT_EXTENSION';\nexport const CONTRACT_ONBOARDING = 'CONTRACT_ONBOARDING';\nexport const CONTRACT_RAGEQUIT = 'CONTRACT_RAGEQUIT';\nexport const CONTRACT_TRIBUTE = 'CONTRACT_TRIBUTE';\nexport const CONTRACT_TRIBUTE_NFT = 'CONTRACT_TRIBUTE_NFT';\nexport const CONTRACT_VOTING = 'CONTRACT_VOTING';\nexport const CONTRACT_VOTING_OP_ROLLUP = 'CONTRACT_VOTING_OP_ROLLUP';\n\nexport function clearContracts(): Record<'type', typeof CLEAR_CONTRACTS> {\n return {\n type: CLEAR_CONTRACTS,\n };\n}\n\nexport function initContractBankFactory(web3Instance: Web3) {\n return async function (dispatch: Dispatch) {\n try {\n if (web3Instance) {\n const {default: lazyBankFactoryABI} = await import(\n '../../truffle-contracts/BankFactory.json'\n );\n const bankFactoryContract: AbiItem[] = lazyBankFactoryABI as any;\n const contractAddress = BANK_FACTORY_CONTRACT_ADDRESS[DEFAULT_CHAIN];\n const instance = new web3Instance.eth.Contract(\n bankFactoryContract,\n contractAddress\n );\n\n dispatch(\n createContractAction({\n type: CONTRACT_BANK_FACTORY,\n abi: bankFactoryContract,\n contractAddress,\n instance,\n })\n );\n }\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function initContractDaoFactory(web3Instance: Web3) {\n return async function (dispatch: Dispatch) {\n try {\n if (web3Instance) {\n const {default: lazyDaoFactoryABI} = await import(\n '../../truffle-contracts/DaoFactory.json'\n );\n const daoFactoryContract: AbiItem[] = lazyDaoFactoryABI as any;\n const contractAddress = DAO_FACTORY_CONTRACT_ADDRESS[DEFAULT_CHAIN];\n const instance = new web3Instance.eth.Contract(\n daoFactoryContract,\n contractAddress\n );\n\n dispatch(\n createContractAction({\n type: CONTRACT_DAO_FACTORY,\n abi: daoFactoryContract,\n contractAddress,\n instance,\n })\n );\n }\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function initContractDaoRegistry(web3Instance: Web3) {\n return async function (dispatch: Dispatch) {\n try {\n if (web3Instance) {\n const {default: lazyDaoRegistryABI} = await import(\n '../../truffle-contracts/DaoRegistry.json'\n );\n\n const daoRegistryContract: AbiItem[] = lazyDaoRegistryABI as any;\n const contractAddress = DAO_REGISTRY_CONTRACT_ADDRESS;\n\n if (!contractAddress) {\n throw new Error('No DAO Registry contract address was found.');\n }\n\n const instance = new web3Instance.eth.Contract(\n daoRegistryContract,\n contractAddress\n );\n\n dispatch(\n createContractAction({\n type: CONTRACT_DAO_REGISTRY,\n abi: daoRegistryContract,\n contractAddress,\n instance,\n })\n );\n }\n } catch (error) {\n throw error;\n }\n };\n}\n\nexport function initContractVoting(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_VOTING,\n adapterOrExtensionName: ContractAdapterNames.voting,\n adapterNameForRedux: VotingAdapterName.VotingContract,\n contractAddress,\n lazyImport: () => import('../../truffle-contracts/VotingContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractVotingOpRollup(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_VOTING_OP_ROLLUP,\n adapterOrExtensionName: ContractAdapterNames.voting,\n adapterNameForRedux: VotingAdapterName.OffchainVotingContract,\n contractAddress,\n lazyImport: () =>\n import('../../truffle-contracts/OffchainVotingContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractOnboarding(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_ONBOARDING,\n adapterNameForRedux: DaoAdapterConstants.ONBOARDING,\n adapterOrExtensionName: ContractAdapterNames.onboarding,\n contractAddress,\n lazyImport: () => import('../../truffle-contracts/OnboardingContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractBankExtension(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_BANK_EXTENSION,\n adapterNameForRedux: DaoExtensionConstants.BANK,\n adapterOrExtensionName: ContractExtensionNames.bank,\n contractAddress,\n isExtension: true,\n lazyImport: () => import('../../truffle-contracts/BankExtension.json'),\n web3Instance,\n });\n}\n\nexport function initContractTribute(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_TRIBUTE,\n adapterNameForRedux: DaoAdapterConstants.TRIBUTE,\n adapterOrExtensionName: ContractAdapterNames.tribute,\n contractAddress,\n lazyImport: () => import('../../truffle-contracts/TributeContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractDistribute(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_DISTRIBUTE,\n adapterNameForRedux: DaoAdapterConstants.DISTRIBUTE,\n adapterOrExtensionName: ContractAdapterNames.distribute,\n contractAddress,\n lazyImport: () => import('../../truffle-contracts/DistributeContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractManaging(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_MANAGING,\n adapterNameForRedux: DaoAdapterConstants.MANAGING,\n adapterOrExtensionName: ContractAdapterNames.managing,\n contractAddress,\n lazyImport: () => import('../../truffle-contracts/ManagingContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractBankAdapter(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_BANK_ADAPTER,\n adapterNameForRedux: DaoAdapterConstants.BANK,\n adapterOrExtensionName: ContractAdapterNames.bank,\n contractAddress,\n lazyImport: () =>\n import('../../truffle-contracts/BankAdapterContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractNFTAdapter(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_NFT_ADAPTER,\n adapterNameForRedux: DaoAdapterConstants.NFT,\n adapterOrExtensionName: ContractAdapterNames.nft,\n contractAddress,\n lazyImport: () => import('../../truffle-contracts/NFTAdapterContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractDaoRegistryAdapter(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_DAO_REGISTRY_ADAPTER,\n adapterNameForRedux: DaoAdapterConstants.DAO_REGISTRY,\n adapterOrExtensionName: ContractAdapterNames.dao_registry,\n contractAddress,\n lazyImport: () =>\n import('../../truffle-contracts/DaoRegistryAdapterContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractRagequit(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_RAGEQUIT,\n adapterNameForRedux: DaoAdapterConstants.RAGEQUIT,\n adapterOrExtensionName: ContractAdapterNames.ragequit,\n contractAddress,\n lazyImport: () => import('../../truffle-contracts/RagequitContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractGuildKick(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_GUILDKICK,\n adapterNameForRedux: DaoAdapterConstants.GUILDKICK,\n adapterOrExtensionName: ContractAdapterNames.guildkick,\n contractAddress,\n lazyImport: () => import('../../truffle-contracts/GuildKickContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractFinancing(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_FINANCING,\n adapterNameForRedux: DaoAdapterConstants.FINANCING,\n adapterOrExtensionName: ContractAdapterNames.financing,\n contractAddress,\n lazyImport: () => import('../../truffle-contracts/FinancingContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractConfiguration(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_CONFIGURATION,\n adapterNameForRedux: DaoAdapterConstants.CONFIGURATION,\n adapterOrExtensionName: ContractAdapterNames.configuration,\n contractAddress,\n lazyImport: () =>\n import('../../truffle-contracts/ConfigurationContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractTributeNFT(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_TRIBUTE_NFT,\n adapterNameForRedux: DaoAdapterConstants.TRIBUTE_NFT,\n adapterOrExtensionName: ContractAdapterNames.tribute_nft,\n contractAddress,\n lazyImport: () => import('../../truffle-contracts/TributeNFTContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractCouponOnboarding(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_COUPON_ONBOARDING,\n adapterNameForRedux: DaoAdapterConstants.COUPON_ONBOARDING,\n adapterOrExtensionName: ContractAdapterNames.coupon_onboarding,\n contractAddress,\n lazyImport: () =>\n import('../../truffle-contracts/CouponOnboardingContract.json'),\n web3Instance,\n });\n}\n\nexport function initContractNFTExtension(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_NFT_EXTENSION,\n adapterNameForRedux: DaoExtensionConstants.NFT,\n adapterOrExtensionName: ContractExtensionNames.nft,\n contractAddress,\n isExtension: true,\n lazyImport: () => import('../../truffle-contracts/NFTExtension.json'),\n web3Instance,\n });\n}\n\nexport function initContractERC20Extension(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return initContractThunkFactory({\n actionType: CONTRACT_ERC20_EXTENSION,\n adapterNameForRedux: DaoExtensionConstants.ERC20,\n adapterOrExtensionName: ContractExtensionNames.erc20,\n contractAddress,\n isExtension: true,\n lazyImport: () => import('../../truffle-contracts/ERC20Extension.json'),\n web3Instance,\n });\n}\n\n/**\n * Inits the currently registered `voting` contract.\n *\n * @note The DaoRegistry and Managing contracts must be initialised beforehand.\n */\nexport function initRegisteredVotingAdapter(\n web3Instance: Web3,\n contractAddress?: string\n) {\n return async function (dispatch: Dispatch, getState: () => StoreState) {\n try {\n if (web3Instance) {\n const daoRegistryContract = getState().contracts.DaoRegistryContract;\n\n if (!daoRegistryContract) {\n console.warn(\n 'Please init the DaoRegistry contract before the voting contract.'\n );\n return;\n }\n\n let votingAdapterName: string = '';\n let address: string = contractAddress || '';\n\n if (address) {\n votingAdapterName = await getVotingAdapterName(address, web3Instance);\n }\n\n if (!address && !votingAdapterName) {\n address = await getAdapterAddress(\n ContractAdapterNames.voting,\n getState().contracts.DaoRegistryContract?.instance\n );\n\n votingAdapterName = await getVotingAdapterName(address, web3Instance);\n }\n\n /**\n * @todo Move voting adapter enum names (see contracts: `ADAPTER_NAME`)\n * to an appropriate adapter config file.\n */\n switch (votingAdapterName) {\n case 'VotingContract':\n return await initContractVoting(web3Instance, address)(\n dispatch,\n getState\n );\n case 'OffchainVotingContract':\n return await initContractVotingOpRollup(web3Instance, address)(\n dispatch,\n getState\n );\n default:\n throw new Error('Voting contract name could not be found.');\n }\n }\n } catch (error) {\n console.warn(\n `The voting contract could not be found in the DAO. Are you sure you meant to add this contract's ABI?`\n );\n }\n };\n}\n\nexport function createContractAction({\n type,\n ...payload\n}: {\n type: ContractAction;\n} & ContractsStateEntry) {\n return {\n type,\n ...payload,\n };\n}\n\nexport function initContractThunkFactory({\n actionType,\n adapterNameForRedux,\n adapterOrExtensionName,\n contractAddress,\n isExtension = false,\n lazyImport,\n web3Instance,\n}: {\n actionType: ContractAction;\n adapterOrExtensionName: ContractAdapterNames | ContractExtensionNames;\n /**\n * The name to be shown in Redux state as `adapterOrExtensionName`.\n */\n adapterNameForRedux?: ContractsStateEntry['adapterOrExtensionName'];\n contractAddress?: string;\n /**\n * If set to `true` an Extenion address will be searched for instead of an Adapter.\n */\n isExtension?: boolean;\n /**\n * Provide a Dynamic Import wrapped in a function.\n *\n * e.g. `() => import('./path/to/import')`\n */\n lazyImport: () => any;\n web3Instance: Web3;\n}) {\n // Return a Redux Thunk\n return async function (dispatch: Dispatch, getState: () => StoreState) {\n try {\n const {default: lazyABI} = await lazyImport();\n\n const contractABI: AbiItem[] = lazyABI as any;\n\n const address =\n contractAddress ||\n (isExtension\n ? await getExtensionAddress(\n adapterOrExtensionName as unknown as ContractExtensionNames,\n getState().contracts.DaoRegistryContract?.instance\n )\n : await getAdapterAddress(\n adapterOrExtensionName as unknown as ContractAdapterNames,\n getState().contracts.DaoRegistryContract?.instance\n ));\n\n dispatch(\n createContractAction({\n type: actionType,\n abi: contractABI,\n contractAddress: address,\n adapterOrExtensionName: adapterNameForRedux,\n instance: new web3Instance.eth.Contract(contractABI, address),\n })\n );\n } catch (error) {\n // Warn instead of throwing as we want the Dapp to fail gracefully.\n console.warn(\n `The contract \"${adapterOrExtensionName}\" could not be found in the DAO. Are you sure you meant to add this contract's ABI?`\n );\n }\n };\n}\n","import {isEthAddressValid} from '../validation';\n\n/**\n * truncateEthAddress\n *\n * Truncates Ethereum address.\n *\n * @param {string} addr\n * @param {number} [maxLength=5]\n * @returns {string}\n */\nexport function truncateEthAddress(\n addr: string,\n maxLength: number = 5\n): string {\n if (addr === null || typeof addr === 'undefined') return '---';\n\n if (isEthAddressValid(addr)) {\n const firstSegment = addr.substring(0, maxLength);\n const secondPart = addr.substring(addr.length - 3);\n return firstSegment + '...' + secondPart;\n } else {\n // in case string argument is not actually an Ethereum address\n return addr;\n }\n}\n","import Web3 from 'web3';\n\nimport {ContractsStateEntry} from '../../../store/contracts/types';\nimport {ContractExtensionNames} from '../types';\n\nexport async function getExtensionAddress(\n extensionName: ContractExtensionNames,\n daoContractInstance: ContractsStateEntry['instance'] | undefined\n): Promise {\n try {\n if (!daoContractInstance) {\n throw new Error('No DaoRegistry contract instance provided.');\n }\n\n return await daoContractInstance.methods\n .getExtensionAddress(Web3.utils.sha3(extensionName))\n .call();\n } catch (error) {\n throw error;\n }\n}\n","import {SubgraphNetworkStatusState} from './types';\n\nexport const SET_SUBGRAPH_NETWORK_STATUS = 'SET_SUBGRAPH_NETWORK_STATUS';\n\nexport function setSubgraphNetworkStatus(payload: SubgraphNetworkStatusState) {\n return {type: SET_SUBGRAPH_NETWORK_STATUS, ...payload};\n}\n","import React, {useState, useEffect, CSSProperties} from 'react';\nimport FadeIn from '../common/FadeIn';\n\ntype CycleEllipsisProps = {\n ariaLabel?: string;\n /**\n * What is the interval of cycling the message?\n */\n intervalMs?: number;\n /**\n * Optional settings for the inner ` ` component.\n */\n fadeInProps?: Parameters[0];\n};\n\nconst MESSAGES = ['', '.', '.', '.'];\nconst rootStyles = {position: 'absolute'} as CSSProperties;\nconst nbspStyles = {\n height: 1,\n width: 1,\n} as CSSProperties;\n\nexport function CycleEllipsis(props: CycleEllipsisProps) {\n const {ariaLabel, intervalMs = 1000, fadeInProps} = props;\n const fadeInPropsMerged = {...fadeInProps, inline: true};\n\n const [upToIndex, setUpToIndex] = useState(1);\n\n useEffect(() => {\n const intervalId = setInterval(\n () => setUpToIndex((prevIndex) => (prevIndex + 1) % MESSAGES.length),\n intervalMs\n );\n\n return () => {\n clearInterval(intervalId);\n };\n }, [intervalMs]);\n\n return (\n <>\n \n {upToIndex >= 0 && MESSAGES[0]} \n \n {upToIndex >= 1 && (\n {MESSAGES[1]} \n )}\n \n \n {upToIndex >= 2 && (\n {MESSAGES[2]} \n )}\n \n \n {upToIndex >= 3 && (\n {MESSAGES[3]} \n )}\n \n \n {/* @note Keep as it's an alignment fallback in certain CSS situations when no other text is a sibiling */}\n \n >\n );\n}\n","import {useState, useRef, useEffect} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n CoreProposalVoteChoices,\n prepareVoteProposalData,\n SnapshotType,\n} from '@openlaw/snapshot-js-erc712';\n\nimport {AsyncStatus} from '../../util/types';\nimport {getContractByAddress} from '../web3/helpers';\nimport {ProposalData} from './types';\nimport {SPACE} from '../../config';\nimport {StoreState} from '../../store/types';\nimport {TX_CYCLE_MESSAGES, VOTE_CHOICES} from '../web3/config';\nimport {useCheckApplicant, useSignAndSubmitProposal} from './hooks';\nimport {useContractSend, useETHGasPrice, useWeb3Modal} from '../web3/hooks';\nimport {useMemberActionDisabled} from '../../hooks';\nimport {Web3TxStatus} from '../web3/types';\nimport CycleMessage from '../feedback/CycleMessage';\nimport ErrorMessageWithDetails from '../common/ErrorMessageWithDetails';\nimport EtherscanURL from '../web3/EtherscanURL';\nimport FadeIn from '../common/FadeIn';\nimport Loader from '../feedback/Loader';\n\ntype SubmitArguments = [\n string, // `dao`\n string, // `proposalId`\n ...any[],\n string // `proposal data`\n];\n\ntype SubmitActionProps = {\n checkApplicant?: string;\n proposal: ProposalData;\n};\n\ntype ActionDisabledReasons = {\n invalidApplicantMessage: string;\n};\n\ntype ProposalDataForDao = {\n body: string;\n choices: CoreProposalVoteChoices;\n end: number;\n name: string;\n sig: string;\n snapshot: number;\n space: string;\n start: number;\n timestamp: string;\n};\n\nconst {FULFILLED} = AsyncStatus;\nconst {AWAITING_CONFIRM, FULFILLED: WEB3_TX_FULFILLED, PENDING} = Web3TxStatus;\nconst defaultChoices: CoreProposalVoteChoices = VOTE_CHOICES;\n\nexport default function SubmitAction(props: SubmitActionProps) {\n const {\n checkApplicant,\n proposal: {snapshotDraft, snapshotProposal, refetchProposalOrDraft},\n } = props;\n\n /**\n * Default proposal data for submission to the DAO.\n * This will be used for `proposalDataForDaoRef`.\n */\n const {\n msg: {\n payload: {\n choices: proposalChoices = defaultChoices,\n name: proposalName = '',\n body: proposalBody = '',\n start: proposalStart = 0,\n end: proposalEnd = 0,\n snapshot: proposalSnapshot = 0,\n },\n timestamp: proposalTimestamp = '',\n },\n sig: proposalSig = '',\n } = snapshotProposal || {msg: {payload: {}}};\n\n /**\n * State\n */\n\n const [snapshotProposalSubmitted, setSnapshotProposalSubmitted] =\n useState((snapshotProposal?.sig.length || '') > 0);\n\n const proposalDataForDaoRef = useRef({\n body: proposalBody,\n choices: proposalChoices,\n end: proposalEnd,\n name: proposalName,\n sig: proposalSig,\n snapshot: proposalSnapshot,\n space: SPACE || '',\n start: proposalStart,\n timestamp: proposalTimestamp,\n });\n\n const [submitError, setSubmitError] = useState();\n\n /**\n * Refs\n */\n\n const actionDisabledReasonsRef = useRef({\n invalidApplicantMessage: '',\n });\n\n /**\n * Selectors\n */\n\n const contracts = useSelector((s: StoreState) => s.contracts);\n\n const daoRegistryAddress = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.contractAddress\n );\n\n /**\n * Our hooks\n */\n\n const {account, web3Instance} = useWeb3Modal();\n\n const {txEtherscanURL, txIsPromptOpen, txSend, txStatus} = useContractSend();\n\n const {\n isDisabled,\n openWhyDisabledModal,\n WhyDisabledModal,\n setOtherDisabledReasons,\n } = useMemberActionDisabled();\n\n const {proposalSignAndSendStatus, signAndSendProposal} =\n useSignAndSubmitProposal();\n\n const {fast: fastGasPrice} = useETHGasPrice();\n\n const {\n checkApplicantError,\n checkApplicantInvalidMsg,\n checkApplicantStatus,\n isApplicantValid,\n } = useCheckApplicant(checkApplicant);\n\n /**\n * Variables\n */\n\n const isInProcess =\n txStatus === AWAITING_CONFIRM ||\n txStatus === PENDING ||\n proposalSignAndSendStatus === AWAITING_CONFIRM ||\n proposalSignAndSendStatus === PENDING;\n\n const isDone = snapshotProposalSubmitted\n ? txStatus === WEB3_TX_FULFILLED\n : txStatus === WEB3_TX_FULFILLED &&\n proposalSignAndSendStatus === WEB3_TX_FULFILLED;\n\n const isInProcessOrDone = isInProcess || isDone || txIsPromptOpen;\n\n /**\n * Effects\n */\n\n useEffect(() => {\n if (checkApplicant && checkApplicantStatus === FULFILLED) {\n // 1. Determine and set reasons why action would be disabled\n\n /**\n * Reason: If the applicant address is invalid (see `useCheckApplicant`\n * hook for reasons) the `submitProposal` smart contract transaction will\n * fail.\n */\n if (!isApplicantValid && checkApplicantInvalidMsg) {\n actionDisabledReasonsRef.current = {\n ...actionDisabledReasonsRef.current,\n invalidApplicantMessage: checkApplicantInvalidMsg,\n };\n }\n\n // 2. Set reasons\n setOtherDisabledReasons(Object.values(actionDisabledReasonsRef.current));\n }\n }, [\n checkApplicant,\n checkApplicantInvalidMsg,\n checkApplicantStatus,\n isApplicantValid,\n setOtherDisabledReasons,\n ]);\n\n /**\n * Functions\n */\n\n async function handleSubmit() {\n try {\n if (!daoRegistryAddress) {\n throw new Error('No DAO Registry address was found.');\n }\n\n const actionId: string =\n (snapshotDraft || snapshotProposal)?.actionId || '';\n\n const contract = getContractByAddress(actionId, contracts);\n\n if (!contract) {\n throw Error(`No contract was found for action id ${actionId}.`);\n }\n\n const idForDAO: string =\n (snapshotDraft || snapshotProposal)?.idInDAO || '';\n\n const submitActionArgs: any[] = (\n snapshotDraft?.msg.payload || snapshotProposal?.msg.payload\n )?.metadata.submitActionArgs;\n\n // If the Snapshot Proposal has not yet been submitted to Snapshot Hub\n if (!snapshotProposalSubmitted && snapshotDraft) {\n const {\n msg: {\n payload: {\n name: draftName,\n body: draftBody,\n metadata: draftMetadata,\n },\n timestamp: draftTimestamp,\n },\n } = snapshotDraft;\n\n // Sign and submit draft for snapshot-hub\n const {data, signature} = await signAndSendProposal({\n partialProposalData: {\n name: draftName,\n body: draftBody,\n metadata: draftMetadata,\n timestamp: draftTimestamp,\n },\n adapterAddress: contract.contractAddress,\n type: SnapshotType.proposal,\n });\n\n // Set the proposal data for submission to the DAO\n proposalDataForDaoRef.current = {\n body: data.payload.body,\n choices: data.payload.choices,\n end: data.payload.end,\n name: data.payload.name,\n sig: signature,\n snapshot: data.payload.snapshot,\n space: data.space,\n start: data.payload.start,\n timestamp: data.timestamp,\n };\n\n setSnapshotProposalSubmitted(true);\n }\n\n const {body, choices, end, name, sig, snapshot, space, start, timestamp} =\n proposalDataForDaoRef.current;\n\n /**\n * Prepare `data` argument for submission to DAO\n *\n * For information about which data the smart contract needs for signature verification (e.g. `hashMessage`):\n * @link https://github.com/openlawteam/tribute-contracts/blob/master/contracts/adapters/voting/OffchainVoting.sol\n */\n const preparedVoteVerificationBytes = prepareVoteProposalData(\n {\n payload: {\n body,\n choices,\n end,\n name,\n snapshot: snapshot.toString(),\n start,\n },\n sig,\n space,\n timestamp: parseInt(timestamp),\n },\n web3Instance\n );\n\n const submitArguments: SubmitArguments = [\n daoRegistryAddress,\n idForDAO,\n ...(submitActionArgs || []),\n preparedVoteVerificationBytes,\n ];\n\n const txArguments = {\n from: account || '',\n ...(fastGasPrice ? {gasPrice: fastGasPrice} : null),\n };\n\n await txSend(\n 'submitProposal',\n contract.instance.methods,\n submitArguments,\n txArguments\n );\n\n // Update the proposal\n refetchProposalOrDraft();\n } catch (error) {\n setSubmitError(error);\n }\n }\n\n /**\n * Render\n */\n\n function renderSubmitStatus(): React.ReactNode {\n // Either Snapshot or chain tx\n if (\n txStatus === AWAITING_CONFIRM ||\n proposalSignAndSendStatus === AWAITING_CONFIRM\n ) {\n return 'Awaiting your confirmation\\u2026';\n }\n\n // Only for chain tx\n switch (txStatus) {\n case PENDING:\n return (\n <>\n {\n return {message} ;\n }}\n />\n\n \n >\n );\n case WEB3_TX_FULFILLED:\n return (\n <>\n Proposal submitted!
\n\n \n >\n );\n default:\n return null;\n }\n }\n\n /**\n * Log-out check applicant error\n *\n * @todo Use logging service\n */\n if (checkApplicantError) {\n console.warn(\n `Error checking if the applicant address is valid: ${checkApplicantError.message}`\n );\n }\n\n return (\n <>\n \n
{} : handleSubmit}>\n {isInProcess ? : isDone ? 'Done' : 'Sponsor'}\n \n\n
\n\n {/* SUBMIT STATUS */}\n\n {isInProcessOrDone && (\n
\n {renderSubmitStatus()}\n
\n )}\n\n {isDisabled && (\n
\n Why is sponsoring disabled?\n \n )}\n
\n\n \n >\n );\n}\n","import {createContext, useEffect, useRef, useState} from 'react';\nimport Web3 from 'web3';\nimport Web3Modal, {IProviderOptions} from 'web3modal';\n\nimport useWeb3ModalManager, {\n DefaultTheme,\n Web3ModalError,\n} from './hooks/useWeb3ModalManager';\nimport {AsyncStatus} from '../../util/types';\nimport {ETHEREUM_PROVIDER_URL} from '../../config';\n\ntype Web3ModalProviderArguments = {\n defaultChain?: number;\n defaultTheme?: DefaultTheme;\n /**\n * Optional: Any action to take after disconnecting from an Ethereum provider.\n */\n onBeforeDisconnect?: Parameters<\n typeof useWeb3ModalManager\n >[0]['onBeforeDisconnect'];\n /**\n * Optional: Any action to take before connecting to an Ethereum provider.\n */\n onBeforeConnect?: Parameters<\n typeof useWeb3ModalManager\n >[0]['onBeforeConnect'];\n providerOptions: IProviderOptions; // required\n};\n\ntype Web3ModalManagerProps = {\n children: JSX.Element;\n} & Web3ModalProviderArguments;\n\nexport type Web3ModalContextValue = {\n account: string | undefined;\n connected: boolean | undefined;\n connectWeb3Modal: (providerName: string) => void;\n disconnectWeb3Modal: () => void;\n error: Web3ModalError | undefined;\n initialCachedConnectorCheckStatus: AsyncStatus | undefined;\n networkId: number | undefined;\n provider: any;\n providerOptions: IProviderOptions;\n web3Instance: Web3 | undefined;\n web3Modal: Web3Modal | undefined;\n};\n\nexport const Web3ModalContext = createContext(\n {} as Web3ModalContextValue\n);\n\n/**\n * Web3ModalManager\n *\n * A provider for the `web3modal` wallet connection, provides access to\n * the wallet states, enables connections and disconnections.\n *\n * @example\n * \n * ...\n * \n *\n * @param children: React.JSX\n * @param defaultChain?: number\n * @param defaultTheme?: DefaultTheme; default is `dark`\n * @param providerOptions: Record\n */\n\nexport default function Web3ModalManager({\n children,\n defaultChain,\n defaultTheme = DefaultTheme.DARK,\n onBeforeConnect,\n onBeforeDisconnect,\n providerOptions,\n}: Web3ModalManagerProps) {\n /**\n * Refs\n */\n\n const defaultWeb3InstanceRef = useRef(\n new Web3(new Web3.providers.WebsocketProvider(ETHEREUM_PROVIDER_URL))\n );\n\n /**\n * State\n */\n\n const [defaultWeb3NetID, setDefaultWeb3NetID] = useState<\n number | undefined\n >();\n\n /**\n * Variables\n */\n\n const web3ModalProviderArguments: Web3ModalProviderArguments = {\n defaultChain,\n defaultTheme,\n onBeforeConnect,\n onBeforeDisconnect,\n providerOptions,\n };\n\n /**\n * Our hooks\n */\n\n const {\n account,\n connected,\n connectWeb3Modal,\n disconnectWeb3Modal,\n error,\n initialCachedConnectorCheckStatus,\n networkId = defaultWeb3NetID,\n provider = defaultWeb3InstanceRef.current?.currentProvider,\n web3Instance = defaultWeb3InstanceRef.current,\n web3Modal,\n } = useWeb3ModalManager(web3ModalProviderArguments);\n\n /**\n * Effects\n */\n\n // Set network ID when using `defaultWeb3InstanceRef` (i.e. not connected to a wallet)\n useEffect(() => {\n if (\n !connected &&\n initialCachedConnectorCheckStatus === AsyncStatus.FULFILLED\n ) {\n defaultWeb3InstanceRef.current?.eth.net\n .getId()\n .then(setDefaultWeb3NetID)\n .catch(() => setDefaultWeb3NetID(undefined));\n }\n }, [connected, initialCachedConnectorCheckStatus]);\n\n /**\n * Render\n */\n\n const web3ModalContext: Web3ModalContextValue = {\n account,\n connected,\n connectWeb3Modal,\n disconnectWeb3Modal,\n error,\n initialCachedConnectorCheckStatus,\n networkId,\n provider,\n providerOptions,\n web3Instance,\n web3Modal,\n };\n\n return (\n \n {children}\n \n );\n}\n","// see: http://reactcommunity.org/react-transition-group/transition\nimport React from 'react';\nimport {Transition} from 'react-transition-group';\n\ntype FadeInProps = {\n children?: React.ReactNode;\n duration?: number;\n /**\n * Defaults to `true`\n */\n show?: boolean;\n /**\n * Renders a `` wrapper where the animation CSS is applied.\n */\n inline?: boolean;\n};\n\nconst DEFAULT_DURATION = 300;\n\nconst defaultStyle = (props: FadeInProps) => ({\n transition: `opacity ${\n props.duration || 300\n }ms cubic-bezier(0, 0.69, 0.32, 0.64)`,\n opacity: 0,\n});\n\nconst transitionStyles: Record = {\n entering: {opacity: 0},\n entered: {opacity: 1},\n exiting: {opacity: 0},\n exited: {opacity: 0},\n};\n\nexport default function FadeIn(props: FadeInProps) {\n const {inline} = props;\n\n return (\n \n {(transition) =>\n inline ? (\n \n {props.children}\n \n ) : (\n \n {props.children}\n
\n )\n }\n \n );\n}\n","import {useState} from 'react';\n\nimport {MetaMaskRPCError} from '../../util/types';\nimport {normalizeString} from '../../util/helpers';\nimport FadeIn from './FadeIn';\n\ntype ErrorMessageWithDetailsProps = {\n detailsProps?: React.DetailsHTMLAttributes;\n error: Error | (() => React.ReactElement) | undefined;\n renderText: (() => React.ReactElement) | string;\n};\n\nexport default function ErrorMessageWithDetails(\n props: ErrorMessageWithDetailsProps\n) {\n const {error, renderText} = props;\n\n /**\n * State\n */\n\n const [isExpanded, setIsExpanded] = useState(false);\n\n /**\n * Variables\n */\n\n /**\n * Some wallets will provide proper error codes. The `4001` is a \"user rejected transaction\".\n *\n * @link https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1193.md#provider-errors\n */\n const isWalletRejectedRequest =\n typeof error !== 'function' &&\n ((error as MetaMaskRPCError)?.code === 4001 ||\n /^(the )?user rejected (the )?request$/g.test(\n normalizeString(error?.message || '')\n ));\n\n const textToDisplay: React.ReactNode =\n typeof renderText === 'string' ? renderText : renderText();\n\n const areErrorMessageAndTextStringSame: boolean =\n typeof renderText === 'string' &&\n typeof error !== 'function' &&\n normalizeString(renderText) === normalizeString(error?.message || '')\n ? true\n : false;\n\n /**\n * Render\n */\n\n if (!error || isWalletRejectedRequest) return null;\n\n return (\n \n \n
{textToDisplay}
\n\n {error && !areErrorMessageAndTextStringSame && (\n
\n setIsExpanded(!isExpanded)}\n style={{cursor: 'pointer', outline: 'none'}}>\n Details \n \n\n \n \n {typeof error === 'function' ? error() : error.message}\n \n
\n \n )}\n
\n \n );\n}\n","import {Contract, SendOptions} from 'web3-eth-contract/types';\nimport {TransactionReceipt} from 'web3-core/types';\nimport BigNumber from 'bignumber.js';\n\n/**\n * contractSend\n *\n * Returns the resolved transaction receipt or error\n *\n * @param {string} methodName\n * @param {Record} contractInstanceMethods An object of the methods for the Web3 contract instance.\n * @param {any[]} methodArguments An array of any arguments for the contract's method.\n * @param {Record} txArguments\n * @param {(txHash: string) => void} onProcess Callback which runs after a txHash has been received,\n * but before the transaction is complete.\n * @returns {Promise} Resolved or rejected transaction.\n */\nexport async function contractSend(\n methodName: string,\n contractInstanceMethods: typeof Contract.prototype.methods,\n methodArguments: any[],\n txArguments: SendOptions,\n onProcess?: (txHash: string) => void\n): Promise {\n // Promisify so we can both `reject()` inside .on('error') and from transactions.\n return new Promise(async (resolve, reject) => {\n try {\n const BN = BigNumber;\n const method = contractInstanceMethods[methodName];\n\n // estimate gas limit for transaction\n const gas = await method(...methodArguments).estimateGas({\n from: txArguments.from,\n value: txArguments.value,\n });\n\n const gastoBN = new BN(gas)\n .decimalPlaces(0, BigNumber.ROUND_DOWN)\n .toNumber();\n\n await method(...methodArguments)\n .send({\n ...txArguments,\n gas: gastoBN,\n })\n .on('transactionHash', function (txHash: string) {\n // Call onProcess with transaction hash\n onProcess && onProcess(txHash);\n })\n .on('receipt', function (receipt: TransactionReceipt) {\n // resolve on transaction receipt; contains event returnValues\n resolve(receipt);\n })\n .on('error', (error: Error) => {\n // reject on transaction error\n reject(error);\n });\n } catch (error) {\n // reject on estimate gas or transaction error\n reject(error);\n }\n });\n}\n","import Web3 from 'web3';\n\nimport {ContractsStateEntry} from '../../../store/contracts/types';\nimport {ContractAdapterNames} from '../types';\n\nexport async function getAdapterAddress(\n adapterName: ContractAdapterNames,\n daoContractInstance: ContractsStateEntry['instance'] | undefined\n): Promise {\n try {\n if (!daoContractInstance) {\n throw new Error('No DaoRegistry contract instance provided.');\n }\n\n return await daoContractInstance.methods\n .getAdapterAddress(Web3.utils.sha3(adapterName))\n .call();\n } catch (error) {\n throw error;\n }\n}\n","import {ContractAdapterNames} from '../types';\nimport {ContractsStateEntry} from '../../../store/contracts/types';\nimport {StoreState} from '../../../store/types';\n\nfunction getContractAddressOrThrow(\n contract: ContractsStateEntry | null\n): string {\n try {\n const address = contract?.contractAddress;\n\n if (!address) {\n throw new Error(`Contract address was not found in the store.`);\n }\n\n return address;\n } catch (error) {\n throw error;\n }\n}\n\n/**\n * getAdapterAddressFromContracts\n *\n * Gets an adapter's address by its name (`type ContractAdapterNames`) from the Redux contracts state slice.\n *\n * @param {string} name\n * @param {StoreState['contracts']} contracts\n */\nexport function getAdapterAddressFromContracts(\n name: ContractAdapterNames,\n contracts: StoreState['contracts']\n): string {\n try {\n switch (name) {\n case ContractAdapterNames.configuration:\n return '';\n case ContractAdapterNames.distribute:\n return getContractAddressOrThrow(contracts.DistributeContract);\n case ContractAdapterNames.financing:\n return '';\n case ContractAdapterNames.guildkick:\n return '';\n case ContractAdapterNames.managing:\n return getContractAddressOrThrow(contracts.ManagingContract);\n case ContractAdapterNames.onboarding:\n return getContractAddressOrThrow(contracts.OnboardingContract);\n case ContractAdapterNames.ragequit:\n return '';\n case ContractAdapterNames.tribute:\n return getContractAddressOrThrow(contracts.TributeContract);\n case ContractAdapterNames.tribute_nft:\n return getContractAddressOrThrow(contracts.TributeNFTContract);\n case ContractAdapterNames.voting:\n return getContractAddressOrThrow(contracts.VotingContract);\n default:\n throw new Error(`Contract address was not found in the store.`);\n }\n } catch (error) {\n throw error;\n }\n}\n","import {ContractsStateEntry} from '../../../store/contracts/types';\n\nexport enum DaoState {\n CREATION = 'CREATION',\n READY = 'READY',\n}\n\nexport async function getDaoState(\n daoContractInstance: ContractsStateEntry['instance'] | undefined\n): Promise {\n try {\n if (!daoContractInstance) {\n throw new Error('No DaoRegistry contract instance provided.');\n }\n\n const daoRegistryMethods = daoContractInstance.methods;\n const state = await daoRegistryMethods.state().call();\n\n return Number(state) === 0 ? DaoState.CREATION : DaoState.READY;\n } catch (error) {\n throw error;\n }\n}\n","import {ContractsStateEntry} from '../../../store/contracts/types';\nimport {normalizeString} from '../../../util/helpers';\nimport {StoreState} from '../../../store/types';\n\n/**\n * getContractByAddress\n *\n * Gets a Contract from the Redux contracts state slice by its `contractAddress`, or throws an Error.\n * A use case for this would be when using ERC712 signing data `actionId` to get\n * the appropriate Contract for submitting on-chain transactions.\n *\n * @param {string} address\n * @param {StoreState['contracts']} contracts\n */\nexport function getContractByAddress(\n address: string,\n contracts: StoreState['contracts']\n): ContractsStateEntry {\n try {\n const contract = Object.values(contracts).find(\n (c) =>\n c?.contractAddress &&\n normalizeString(c.contractAddress) === normalizeString(address)\n );\n\n if (!contract) {\n throw new Error(`Contract was not found in the store.`);\n }\n\n return contract;\n } catch (error) {\n throw error;\n }\n}\n","import Web3 from 'web3';\n\nimport {ContractsStateEntry} from '../../../store/contracts/types';\nimport {ContractDAOConfigKeys} from '../types';\n\nexport async function getDAOConfigEntry(\n configKey: ContractDAOConfigKeys,\n daoContractInstance: ContractsStateEntry['instance'] | undefined\n): Promise {\n try {\n if (!daoContractInstance) {\n throw new Error('No DaoRegistry contract instance provided.');\n }\n\n return await daoContractInstance.methods\n .getConfiguration(Web3.utils.sha3(configKey))\n .call();\n } catch (error) {\n throw error;\n }\n}\n","import {AbiItem} from 'web3-utils/types';\nimport {VotingAdapterName} from '../../adapters-extensions/enums';\nimport Web3 from 'web3';\n\nexport async function getVotingAdapterName(\n address: string,\n web3Instance: Web3\n): Promise {\n try {\n const {default: lazyIVotingABI} = await import(\n '../../../truffle-contracts/IVoting.json'\n );\n\n return await new web3Instance.eth.Contract(\n lazyIVotingABI as AbiItem[],\n address\n ).methods\n .getAdapterName()\n .call();\n } catch (error) {\n throw error;\n }\n}\n","import {MemberFlag} from '../types';\nimport {ProposalFlag} from '../../proposals/types';\n\n/**\n * hasFlag\n *\n * A quicker alternative than calling `getProposalFlag` or `getMemberFlag` using `Multicall` for every possiblity.\n *\n * @todo Though this is faster, we may want to switch to using the contract and Multicall instead of re-creating the logic.\n *\n * @param flagToCheck\n * @param daoProposalFlag\n * @returns {boolean}\n *\n * @see `ProposalFlag` `DaoRegistry.sol`\n * @see `getFlag` `DaoConstants.sol`\n * @see `setFlag` `DaoConstants.sol`\n */\nexport function hasFlag(\n flagToCheck: ProposalFlag | MemberFlag,\n daoProposalFlag: number | string\n): boolean {\n return flagToCheck === Math.log2(Number(daoProposalFlag) + 1) - 1;\n}\n","import Web3 from 'web3';\nimport {AbiItem} from 'web3-utils/types';\n\nimport {MULTICALL_CONTRACT_ADDRESS} from '../../../config';\n\nexport type MulticallTuple = [\n contractAddress: string,\n functionABI: AbiItem,\n parameters: string[]\n];\n\nexport async function multicall({\n blockNumber = 'latest',\n calls,\n web3Instance,\n}: {\n /**\n * Defaults to `latest`\n */\n blockNumber?: number | string | ReturnType;\n calls: MulticallTuple[];\n web3Instance: Web3;\n}) {\n const {default: lazyMulticallABI} = await import(\n '../../../truffle-contracts/Multicall.json'\n );\n\n // Let's `console.error` and exit instead of throwing.\n if (!MULTICALL_CONTRACT_ADDRESS) {\n console.error('No Multicall address was found. Are you sure it is set?');\n return;\n }\n\n try {\n const {methods: multicallMethods} = new web3Instance.eth.Contract(\n lazyMulticallABI as AbiItem[],\n MULTICALL_CONTRACT_ADDRESS\n );\n\n const {returnData} = await multicallMethods\n .aggregate(\n calls.map(([address, abi, params]) => [\n address.toLowerCase(),\n web3Instance.eth.abi.encodeFunctionCall(abi, params),\n ])\n )\n .call({}, blockNumber);\n\n return returnData.map((hexString: string, i: number) => {\n const outputsABIItem = calls[i][1].outputs || [];\n const decodedOutputs = web3Instance.eth.abi.decodeParameters(\n outputsABIItem,\n hexString\n );\n\n // Output as single result\n if (\n decodedOutputs.__length__ === 1 &&\n decodedOutputs['0'] !== undefined\n ) {\n return decodedOutputs['0'];\n }\n\n return web3Instance.eth.abi.decodeParameters(\n outputsABIItem || [],\n hexString\n );\n });\n } catch (error) {\n throw error;\n }\n}\n","/**\n * FOR HIGH REUSE ENUMS\n *\n * For any other more specific enum types, co-locate them in either:\n *\n * 1) The actual code file.\n * 2) In a type file in the location of the code files which mainly use the types.\n *\n * @see https://kentcdodds.com/blog/colocation\n */\n\n/**\n * @see https://chainid.network/\n */\nexport enum NetworkIDs {\n GOERLI = 5,\n KOVAN = 42,\n RINKEBY = 4,\n ROPSTEN = 3,\n MAINNET = 1,\n}\n\n/**\n * @see https://chainid.network/\n */\nexport enum NetworkNames {\n GOERLI = 'goerli',\n KOVAN = 'kovan',\n RINKEBY = 'rinkeby',\n ROPSTEN = 'ropsten',\n MAINNET = 'mainnet',\n}\n\nexport enum FormFieldErrors {\n REQUIRED = 'This field is required.',\n INVALID_BYTES32 = 'The value is not a bytes32.',\n INVALID_BYTES32_ARRAY = 'The value is not a comma-separated bytes32 format, ie. 0x...,0x...',\n INVALID_EMAIL = 'The email address is invalid.',\n INVALID_ETHEREUM_ADDRESS = 'The ethereum address is invalid.',\n INVALID_NUMBER = 'The value is not a number.',\n INVALID_NUMBER_ARRAY = 'The value is not a comma-separated number format, ie. 42,5,124',\n}\n\nexport enum ProposalHeaderNames {\n FAILED = 'Failed',\n PASSED = 'Passed',\n REQUESTS = 'Proposals',\n VOTING = 'Voting',\n}\n","import {useState, useEffect, useRef} from 'react';\n\ntype UseAbortControllerReturn = {\n abortController: AbortController | undefined;\n isMountedRef: React.MutableRefObject;\n};\n\n/**\n * useAbortController\n *\n * Provides an `AbortController` to cancel requests.\n * Also provides a helper `isMountedRef` to see if the React component has\n * been unmounted and therefore should not run any setting of state.\n */\nexport function useAbortController(): UseAbortControllerReturn {\n /**\n * State\n */\n\n const [abortController, setAbortController] = useState();\n\n /**\n * Refs\n */\n\n const isMountedRef = useRef(false);\n\n /**\n * Effects\n */\n\n useEffect(() => {\n isMountedRef.current = true;\n\n !abortController && setAbortController(new AbortController());\n\n return () => {\n isMountedRef.current = false;\n\n abortController && abortController.abort();\n };\n }, [abortController]);\n\n return {\n abortController,\n isMountedRef,\n };\n}\n","import {useReducer} from 'react';\n\ntype CounterState = {\n count: number;\n};\n\ntype CounterAction = {\n type: 'increment';\n};\n\ntype CounterReturn = [number, React.Dispatch];\n\nconst initialState = {count: 0};\n\nfunction reducer(state: CounterState, action: CounterAction) {\n switch (action.type) {\n case 'increment':\n return {count: state.count + 1};\n default:\n return state;\n }\n}\n\n/**\n * useCounter\n *\n * A counter which is kept track of via a reducer.\n *\n * @note This is mainly to use inside a custom hook's callback resulting in a\n * changed dependency for consumer's useEffect when a consumer higher up wants to trigger a \"re-run\"\n * (i.e. re-fetch, refresh some data), similarly to dispatching a Redux action again to update the state.\n */\nexport function useCounter(): CounterReturn {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return [state.count, dispatch];\n}\n","import {useCallback, useEffect, useState} from 'react';\nimport {useLazyQuery} from '@apollo/react-hooks';\n\nimport {StoreState} from '../store/types';\nimport {useSelector} from 'react-redux';\n\nimport {GET_DAO} from '../gql';\n\ntype UseDaoReturn = {\n dao: Record | undefined;\n gqlError: Error | undefined;\n};\n\n/**\n * useDao\n *\n * This component queries The Graph API to get data on the dao\n *\n * @returns {UseDaoReturn}\n */\nexport function useDao(): UseDaoReturn {\n const daoRegistryContract = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract\n );\n\n const [getDao, {called, loading, data, error}] = useLazyQuery(GET_DAO, {\n variables: {id: daoRegistryContract?.contractAddress.toLowerCase()},\n });\n\n const [dao, setDao] = useState | undefined>();\n const [gqlError, setGqlError] = useState();\n\n const getDaoRegistryCallback = useCallback(getDaoRegistry, [\n daoRegistryContract?.contractAddress,\n data,\n error,\n loading,\n ]);\n\n useEffect(() => {\n if (!called) {\n getDao();\n }\n }, [called, getDao]);\n\n useEffect(() => {\n if (!loading && daoRegistryContract?.contractAddress) {\n getDaoRegistryCallback();\n }\n }, [daoRegistryContract?.contractAddress, getDaoRegistryCallback, loading]);\n\n function getDaoRegistry() {\n try {\n if (!loading && data) {\n setDao(data.tributeDaos[0]);\n\n if (data.tributeDaos.length === 0) {\n const error = new Error(\n `\"${daoRegistryContract?.contractAddress}\" dao address not found.`\n );\n\n throw error;\n }\n } else {\n if (error) {\n const error = new Error(\n `\"${daoRegistryContract?.contractAddress}\" is not a valid dao address.`\n );\n\n throw error;\n }\n }\n } catch (error) {\n setGqlError(error);\n }\n }\n\n return {dao, gqlError};\n}\n","import {AbiItem} from 'web3-utils/types';\nimport {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport Web3 from 'web3';\n\nimport {AsyncStatus} from '../util/types';\nimport {ContractDAOConfigKeys} from '../components/web3/types';\nimport {multicall, MulticallTuple} from '../components/web3/helpers';\nimport {StoreState} from '../store/types';\nimport {useWeb3Modal} from '../components/web3/hooks';\n\ntype ConfigEntriesReturn = {\n daoConfigurations: string[];\n daoConfigurationsError: Error | undefined;\n daoConfigurationsStatus: AsyncStatus;\n};\n\nconst INITIAL_CONFIG_ENTRIES: ConfigEntriesReturn['daoConfigurations'] = [];\n\n/**\n * useDaoConfigurations\n *\n * Pass in an array of plain text DAO configuration names to get\n * and the hook will return their values in an array, in the same order.\n *\n * @param configKeys\n * @returns `ConfigEntriesReturn`\n */\nexport function useDaoConfigurations(\n /**\n * The keys of any configuration settings to get from the DAO.\n */\n configKeys: ContractDAOConfigKeys[]\n): ConfigEntriesReturn {\n /**\n * Selectors\n */\n\n const daoRegistryAddress = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.contractAddress\n );\n\n const daoRegistryABI = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.abi\n );\n\n /**\n * State\n */\n\n const [daoConfigurations, setDaoConfigurations] = useState<\n ConfigEntriesReturn['daoConfigurations']\n >(INITIAL_CONFIG_ENTRIES);\n\n const [daoConfigurationsStatus, setDaoConfigurationsStatus] = useState<\n ConfigEntriesReturn['daoConfigurationsStatus']\n >(AsyncStatus.STANDBY);\n\n const [daoConfigurationsError, setDaoConfigurationsError] =\n useState();\n\n /**\n * Our hooks\n */\n\n const {web3Instance} = useWeb3Modal();\n\n /**\n * Variables\n */\n\n const getConfigurationABI = daoRegistryABI?.find(\n (ai) => ai.name === 'getConfiguration'\n );\n\n /**\n * Effects\n */\n\n // Handle getting the configurations\n useEffect(() => {\n if (!daoRegistryAddress || !getConfigurationABI || !web3Instance) {\n return;\n }\n\n handleGetConfigurations({\n abi: getConfigurationABI,\n configKeys,\n contractAddress: daoRegistryAddress,\n web3Instance,\n });\n }, [configKeys, daoRegistryAddress, getConfigurationABI, web3Instance]);\n\n /**\n * Functions\n */\n\n async function handleGetConfigurations({\n abi,\n configKeys,\n contractAddress,\n web3Instance,\n }: {\n configKeys: ContractDAOConfigKeys[];\n contractAddress: string;\n abi: AbiItem;\n web3Instance: Web3;\n }) {\n try {\n const calls: MulticallTuple[] = configKeys.map((ck) => [\n contractAddress,\n abi,\n [web3Instance.utils.sha3(ck) || ''],\n ]);\n\n setDaoConfigurationsError(undefined);\n setDaoConfigurationsStatus(AsyncStatus.PENDING);\n\n setDaoConfigurations(await multicall({calls, web3Instance}));\n\n setDaoConfigurationsStatus(AsyncStatus.FULFILLED);\n } catch (error) {\n setDaoConfigurations(INITIAL_CONFIG_ENTRIES);\n setDaoConfigurationsStatus(AsyncStatus.REJECTED);\n setDaoConfigurationsError(error);\n }\n }\n\n return {\n daoConfigurations,\n daoConfigurationsError,\n daoConfigurationsStatus,\n };\n}\n","import {useCallback, useEffect, useState} from 'react';\nimport {useLazyQuery} from '@apollo/react-hooks';\nimport {useSelector} from 'react-redux';\n\nimport {AsyncStatus} from '../util/types';\nimport {StoreState} from '../store/types';\nimport {SubgraphNetworkStatus} from '../store/subgraphNetworkStatus/types';\nimport {GET_DAO} from '../gql';\nimport {TOTAL_ADDRESS, UNITS_ADDRESS} from '../config';\n\ntype UseDaoTotalUnitsReturn = {\n totalUnits: number | undefined;\n totalUnitsError: Error | undefined;\n totalUnitsStatus: AsyncStatus;\n};\n\n/**\n * useDaoTotalUnits\n *\n * Gets DAO total units from subgraph with direct onchain fallback.\n *\n * @returns {UseDaoTotalUnitsReturn}\n */\nexport function useDaoTotalUnits(): UseDaoTotalUnitsReturn {\n /**\n * Selectors\n */\n\n const DaoRegistryContract = useSelector(\n (state: StoreState) => state.contracts.DaoRegistryContract\n );\n const BankExtensionContract = useSelector(\n (state: StoreState) => state.contracts.BankExtensionContract\n );\n const subgraphNetworkStatus = useSelector(\n (state: StoreState) => state.subgraphNetworkStatus.status\n );\n\n /**\n * GQL Query\n */\n\n const [getDaoFromSubgraphResult, {called, loading, data, error}] =\n useLazyQuery(GET_DAO, {\n variables: {\n id: DaoRegistryContract?.contractAddress.toLowerCase(),\n },\n });\n\n /**\n * State\n */\n\n const [totalUnits, setTotalUnits] = useState();\n const [totalUnitsStatus, setTotalUnitsStatus] = useState(\n AsyncStatus.STANDBY\n );\n const [totalUnitsError, setTotalUnitsError] = useState();\n\n /**\n * Cached callbacks\n */\n\n const getTotalUnitsFromExtensionCached = useCallback(\n getTotalUnitsFromExtension,\n [BankExtensionContract]\n );\n\n const getTotalUnitsFromSubgraphCached = useCallback(\n getTotalUnitsFromSubgraph,\n [data, error, getTotalUnitsFromExtensionCached, loading]\n );\n\n /**\n * Effects\n */\n\n useEffect(() => {\n if (!called) {\n getDaoFromSubgraphResult();\n }\n }, [called, getDaoFromSubgraphResult]);\n\n useEffect(() => {\n if (subgraphNetworkStatus === SubgraphNetworkStatus.OK) {\n if (!loading && DaoRegistryContract?.contractAddress) {\n getTotalUnitsFromSubgraphCached();\n }\n } else {\n // If there is a subgraph network error fallback to fetching totalUnits\n // directly from smart contract\n getTotalUnitsFromExtensionCached();\n }\n }, [\n DaoRegistryContract?.contractAddress,\n getTotalUnitsFromExtensionCached,\n getTotalUnitsFromSubgraphCached,\n loading,\n subgraphNetworkStatus,\n ]);\n\n /**\n * Functions\n */\n\n function getTotalUnitsFromSubgraph() {\n try {\n setTotalUnitsStatus(AsyncStatus.PENDING);\n\n if (!loading && data) {\n // extract totalUnits from gql data\n const {totalUnits} = data.tributeDaos[0] as Record;\n setTotalUnits(Number(totalUnits));\n setTotalUnitsStatus(AsyncStatus.FULFILLED);\n } else {\n if (error) {\n throw new Error(error.message);\n }\n }\n } catch (error) {\n // If there is a subgraph query error fallback to fetching totalUnits\n // directly from smart contract\n console.log(`subgraph query error: ${error.message}`);\n getTotalUnitsFromExtensionCached();\n }\n }\n\n async function getTotalUnitsFromExtension() {\n if (!BankExtensionContract) {\n return;\n }\n\n try {\n setTotalUnitsStatus(AsyncStatus.PENDING);\n\n const totalUnits = await BankExtensionContract.instance.methods\n .balanceOf(TOTAL_ADDRESS, UNITS_ADDRESS)\n .call();\n\n setTotalUnits(Number(totalUnits));\n setTotalUnitsStatus(AsyncStatus.FULFILLED);\n } catch (error) {\n console.log(error);\n setTotalUnits(undefined);\n setTotalUnitsError(error);\n setTotalUnitsStatus(AsyncStatus.REJECTED);\n }\n }\n\n return {totalUnits, totalUnitsError, totalUnitsStatus};\n}\n","import {useEffect, useRef} from 'react';\n\ntype UseIsMountedReturn = {\n isMountedRef: React.MutableRefObject;\n};\n\n/**\n * useIsMounted\n *\n * A hook that returns a React Ref which tells if the component is mounted, or not.\n * This is helpful when needing to stop state updates in hooks with effects.\n */\nexport function useIsMounted(): UseIsMountedReturn {\n /**\n * Refs\n */\n\n const isMountedRef = useRef(false);\n\n /**\n * Effects\n */\n\n useEffect(() => {\n isMountedRef.current = true;\n\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n return {\n isMountedRef,\n };\n}\n","import React, {useCallback, useState} from 'react';\nimport ReactModal from 'react-modal';\n\nimport {StoreState} from '../store/types';\nimport {useSelector} from 'react-redux';\nimport {useWeb3Modal} from '../components/web3/hooks';\nimport FadeIn from '../components/common/FadeIn';\nimport TimesSVG from '../assets/svg/TimesSVG';\n\n/**\n * Props should be cached somehow to prevent a new object\n * making the hook re-render each time the parent re-renders,\n * causing a continuous loop.\n */\ntype UseMemberActionDisabledProps = {\n /**\n * Allows the active member check to be skipped.\n * e.g. A tx does not require the account to be a member.\n */\n skipIsActiveMemberCheck?: boolean;\n};\n\ntype UseMemberActionDisabledReturn = {\n disabledReason: string;\n isDisabled: boolean;\n openWhyDisabledModal: () => void;\n setOtherDisabledReasons: (r: string[]) => void;\n WhyDisabledModal: (p: WhyDisabledModalProps) => JSX.Element | null;\n};\n\ntype WhyDisabledModalProps = {\n title?: string;\n};\n\n/**\n * useMemberActionDisabled\n *\n * This component covers the most common cases for why a member action button should be disabled.\n * More reasons for disabling the button can be added via props using `setOtherDisabledReasons`.\n *\n * @param {ProposalActionWhyDisabledProps} props\n * @returns {UseMemberActionDisabledReturn}\n */\nexport function useMemberActionDisabled(\n props?: UseMemberActionDisabledProps\n): UseMemberActionDisabledReturn {\n const {skipIsActiveMemberCheck = false} = props || {};\n\n /**\n * State\n */\n\n const [otherDisabledReasons, setOtherDisabledReasons] = useState(\n []\n );\n const [shouldShowWhyModal, setShouldShowWhyModal] = useState(false);\n\n /**\n * Selectors\n */\n\n const isActiveMember = useSelector(\n (s: StoreState) => s.connectedMember?.isActiveMember\n );\n\n /**\n * Our hooks\n */\n\n const {connected} = useWeb3Modal();\n\n /**\n * Variables\n */\n\n // Get the first index of other reasons.\n const otherReasonNext =\n otherDisabledReasons && otherDisabledReasons.find((r) => r);\n const disabledReason = getDisabledReason();\n const isDisabled =\n (disabledReason ? true : false) || (otherReasonNext ? true : false);\n const canShowDisabledReason = isDisabled && disabledReason ? true : false;\n\n /**\n * Cached callbacks\n */\n\n const WhyDisabledModalCached = useCallback(WhyDisabledModal, [\n canShowDisabledReason,\n disabledReason,\n shouldShowWhyModal,\n ]);\n\n const handleSetOtherDisabledReasonsCached = useCallback(\n handleSetOtherDisabledReasons,\n []\n );\n\n /**\n * Functions\n */\n\n function handleSetOtherDisabledReasons(otherReasons: string[]) {\n setOtherDisabledReasons(otherReasons.filter(Boolean));\n }\n\n function getDisabledReason() {\n if (!connected) {\n return 'Your wallet is not connected.';\n }\n\n if (!isActiveMember && !skipIsActiveMemberCheck) {\n return 'Either you are not a member, or your membership is not active.';\n }\n\n return otherReasonNext || '';\n }\n\n function handleOpenWhyDisabledModal() {\n setShouldShowWhyModal(true);\n }\n\n function WhyDisabledModal(props: WhyDisabledModalProps): JSX.Element | null {\n if (!canShowDisabledReason) return null;\n\n const {title} = props;\n\n return (\n {\n setShouldShowWhyModal(false);\n }}\n overlayClassName=\"modal-overlay\"\n role=\"dialog\"\n style={{overlay: {zIndex: 1000}}}>\n \n \n
{\n setShouldShowWhyModal(false);\n }}>\n \n \n
\n
{title || 'Why disabled?'} \n
{disabledReason}
\n
\n
\n \n \n );\n }\n\n return {\n disabledReason,\n isDisabled,\n openWhyDisabledModal: handleOpenWhyDisabledModal,\n setOtherDisabledReasons: handleSetOtherDisabledReasonsCached,\n WhyDisabledModal: WhyDisabledModalCached,\n };\n}\n","import {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport BigNumber from 'bignumber.js';\nimport Web3 from 'web3';\n\nimport {AsyncStatus} from '../util/types';\nimport {ENVIRONMENT, UNITS_ADDRESS} from '../config';\nimport {StoreState} from '../store/types';\nimport {useIsMounted} from './useIsMounted';\nimport {useWeb3Modal} from '../components/web3/hooks';\n\ntype UseMemberUnitsAtSnapshotReturn = {\n /**\n * Was the member to check a member of the DAO at the\n * requested snapshot?\n */\n hasMembershipAtSnapshot: boolean;\n /**\n * Member units as a `string`.\n * Convert to a `BigNumber`, if needed for calculation.\n */\n memberUnitsAtSnapshot: string | undefined;\n memberUnitsAtSnapshotError: Error | undefined;\n memberUnitsAtSnapshotStatus: AsyncStatus;\n};\n\nconst {STANDBY, PENDING, FULFILLED, REJECTED} = AsyncStatus;\n\nconst DEFAULT_POLL_INTERVAL_MS: number =\n ENVIRONMENT === 'production' ? 15000 : 5000;\n\nconst DEFAULT_BLOCK_CHECK_OFFSET: number = 2;\n\n/**\n * In order for `getPriorAmount` to return without reverting,\n * we must be sending a block number from the past.\n *\n * We must poll to wait until the block is in the past.\n * We could poll `getPriorAmount` until it does not revert, but\n * doing this could hide other errors.\n *\n * @param number `blockToCompare`\n * @param Web3 `web3Instance`\n * @returns `boolean`\n * @see `getPriorAmount` in `tribute-contracts`\n */\nasync function pollUntilBlockInPast({\n block,\n blockOffset = DEFAULT_BLOCK_CHECK_OFFSET,\n isMountedRef,\n pollInterval = DEFAULT_POLL_INTERVAL_MS,\n web3Instance,\n}: {\n block: number;\n blockOffset?: number;\n isMountedRef?: React.MutableRefObject;\n pollInterval?: number;\n web3Instance: Web3;\n}) {\n return new Promise(async (resolve, reject) => {\n /**\n * Uses a positive block offset to check if the difference between `block` provided\n * and `currentBlock` is at least at or greater than the `blockOffset`.\n *\n * This is used to limit errors from `getPriorAmount` when the block is not in the past.\n * If we set an offset, it helps to mitigate issues where the fetched block number\n * and the `block.number in the contract are not yet aligned.\n */\n const blockOffsetCheck = (block: number, currentBlock: number): boolean => {\n const blockDifference: number = currentBlock - block;\n\n return blockDifference >= Math.abs(blockOffset);\n };\n\n // Check immediately\n try {\n if (blockOffsetCheck(block, await web3Instance.eth.getBlockNumber())) {\n resolve(true);\n\n return;\n }\n } catch (error) {\n reject(error);\n\n return;\n }\n\n // If the initial check did not succeed, begin to poll.\n const intervalId = setInterval(async () => {\n try {\n if (!isMountedRef?.current) {\n clearInterval(intervalId);\n\n return;\n }\n\n if (blockOffsetCheck(block, await web3Instance.eth.getBlockNumber())) {\n clearInterval(intervalId);\n resolve(true);\n }\n } catch (error) {\n clearInterval(intervalId);\n reject(error);\n }\n }, pollInterval);\n });\n}\n\nexport function useMemberUnitsAtSnapshot(\n memberAddress: string | undefined,\n snapshot: number | undefined,\n options?: {\n blockCheckOffset?: number;\n currentBlockPollIntervalMs?: number;\n }\n): UseMemberUnitsAtSnapshotReturn {\n const {blockCheckOffset, currentBlockPollIntervalMs} = options || {};\n\n /**\n * Selectors\n */\n\n const bankExtensionMethods = useSelector(\n (s: StoreState) => s.contracts.BankExtensionContract?.instance.methods\n );\n\n /**\n * State\n */\n\n const [memberUnitsAtSnapshot, setMemberUnitsAtSnapshot] = useState();\n\n const [hasMembershipAtSnapshot, setHasMembershipAtSnapshot] =\n useState(false);\n\n const [memberUnitsAtSnapshotError, setMemberUnitsAtSnapshotError] =\n useState();\n\n const [memberUnitsAtSnapshotStatus, setMemberUnitsAtSnapshotStatus] =\n useState(STANDBY);\n\n /**\n * Our hooks\n */\n\n const {web3Instance} = useWeb3Modal();\n const {isMountedRef} = useIsMounted();\n\n /**\n * Cached Callbacks\n */\n\n const handleGetPriorUnitsAmountCached = useCallback(\n handleGetPriorUnitsAmount,\n [isMountedRef]\n );\n\n /**\n * Effects\n */\n\n useEffect(() => {\n // These parameters may be arriving async and not ready, yet.\n if (!memberAddress || !snapshot || !bankExtensionMethods || !web3Instance) {\n return;\n }\n\n handleGetPriorUnitsAmountCached({\n bankExtensionMethods,\n blockCheckOffset,\n currentBlockPollIntervalMs,\n memberAddress,\n snapshot,\n web3Instance,\n });\n }, [\n bankExtensionMethods,\n blockCheckOffset,\n currentBlockPollIntervalMs,\n handleGetPriorUnitsAmountCached,\n memberAddress,\n snapshot,\n web3Instance,\n ]);\n\n /**\n * Functions\n */\n\n async function handleGetPriorUnitsAmount({\n bankExtensionMethods,\n blockCheckOffset,\n currentBlockPollIntervalMs,\n memberAddress,\n snapshot,\n web3Instance,\n }: {\n bankExtensionMethods: any;\n blockCheckOffset?: number;\n currentBlockPollIntervalMs?: number;\n memberAddress: string;\n snapshot: number;\n web3Instance: Web3;\n }): Promise {\n try {\n // Reset any error\n setMemberUnitsAtSnapshotError(undefined);\n setMemberUnitsAtSnapshotStatus(PENDING);\n\n /**\n * Poll until we are at a block in the past.\n *\n * For example, in governance votes, this can be an issue for anyone trying\n * to vote in the same block as the proposal's snapshot,\n * as `getPriorAmount` will revert if `blockToCheck >= block.number`.\n *\n * This is not an issue with on-chain proposals.\n */\n await pollUntilBlockInPast({\n block: snapshot,\n blockOffset: blockCheckOffset,\n isMountedRef,\n pollInterval: currentBlockPollIntervalMs,\n web3Instance,\n });\n\n const memberUnitsAtSnapshot: string = await bankExtensionMethods\n .getPriorAmount(memberAddress, UNITS_ADDRESS, snapshot)\n .call();\n\n if (!isMountedRef.current) return;\n\n setMemberUnitsAtSnapshot(memberUnitsAtSnapshot);\n\n setHasMembershipAtSnapshot(\n new BigNumber(memberUnitsAtSnapshot).isGreaterThan(new BigNumber(0))\n );\n\n setMemberUnitsAtSnapshotStatus(FULFILLED);\n } catch (error) {\n if (!isMountedRef.current) return;\n\n setHasMembershipAtSnapshot(false);\n setMemberUnitsAtSnapshot(undefined);\n setMemberUnitsAtSnapshotError(error);\n setMemberUnitsAtSnapshotStatus(REJECTED);\n }\n }\n\n return {\n hasMembershipAtSnapshot,\n memberUnitsAtSnapshot,\n memberUnitsAtSnapshotError,\n memberUnitsAtSnapshotStatus,\n };\n}\n","import {useEffect, useRef, useState} from 'react';\n\nimport {AsyncStatus} from '../util/types';\n\ntype UseTimeStartEndReturn = {\n hasTimeEnded: boolean;\n hasTimeStarted: boolean;\n /**\n * Informs if the initial async checks have run.\n * This helps to tame UI false-positives that can arise when\n * using only booleans to check status.\n */\n timeStartEndInitReady: boolean;\n};\n\ntype StartEndStatus = {start: AsyncStatus; end: AsyncStatus};\n\nconst {FULFILLED, PENDING, STANDBY} = AsyncStatus;\n\nfunction areAllAsyncReady(asyncMapping: Record) {\n return Object.values(asyncMapping).every((s) => s === FULFILLED);\n}\n\n/**\n * Provides `boolean` results when time starts and ends.\n *\n * If either `startSeconds` or `endSeconds` are `undefined`, or `<= 0`\n * the checks will never run; only `timeStartEndInitReady` will ever be `true`.\n *\n * @param startSeconds\n * @param endSeconds\n * @returns `UseTimeStartEndReturn`\n */\nexport function useTimeStartEnd(\n startSeconds: number | undefined,\n endSeconds: number | undefined\n): UseTimeStartEndReturn {\n /**\n * Refs\n */\n\n const startEndStatusRef = useRef({\n start: STANDBY,\n end: STANDBY,\n });\n\n /**\n * State\n */\n\n const [hasTimeStarted, setHasTimeStarted] = useState(false);\n const [hasTimeEnded, setHasTimeEnded] = useState(false);\n\n const [timeStartEndInitReady, setTimeStartEndInitReady] = useState(\n areAllAsyncReady(startEndStatusRef.current)\n );\n\n /**\n * Variables\n */\n\n const shouldNotCheck: boolean =\n startSeconds === undefined ||\n endSeconds === undefined ||\n startSeconds <= 0 ||\n endSeconds <= 0;\n\n /**\n * Effects\n */\n\n // Actively check if time has started\n useEffect(() => {\n if (hasTimeStarted || shouldNotCheck) {\n setTimeStartEndInitReady(() => {\n startEndStatusRef.current.start = FULFILLED;\n return areAllAsyncReady(startEndStatusRef.current);\n });\n\n return;\n }\n\n setTimeStartEndInitReady(() => {\n startEndStatusRef.current.start = PENDING;\n return areAllAsyncReady(startEndStatusRef.current);\n });\n\n // Check if time has started every 1 second\n const intervalID = setInterval(() => {\n const hasStartedCheck: boolean =\n Math.floor(Date.now() / 1000) > (startSeconds ?? 0);\n\n setHasTimeStarted(hasStartedCheck);\n\n // The interval async process has run once\n if (startEndStatusRef.current.start !== FULFILLED) {\n setTimeStartEndInitReady(() => {\n startEndStatusRef.current.start = FULFILLED;\n return areAllAsyncReady(startEndStatusRef.current);\n });\n }\n }, 1000);\n\n return function cleanup() {\n if (intervalID) {\n clearInterval(intervalID);\n }\n };\n }, [hasTimeStarted, shouldNotCheck, startSeconds]);\n\n // Actively check if time has ended\n useEffect(() => {\n if (hasTimeEnded || shouldNotCheck) {\n setTimeStartEndInitReady(() => {\n startEndStatusRef.current.end = FULFILLED;\n return areAllAsyncReady(startEndStatusRef.current);\n });\n\n return;\n }\n\n setTimeStartEndInitReady(() => {\n startEndStatusRef.current.end = PENDING;\n return areAllAsyncReady(startEndStatusRef.current);\n });\n\n // Check if time has ended every 1 second\n const intervalID = setInterval(() => {\n const hasEndedCheck: boolean =\n Math.ceil(Date.now() / 1000) > (endSeconds ?? 0);\n\n setHasTimeEnded(hasEndedCheck);\n\n // The interval async process has run once\n if (startEndStatusRef.current.end !== FULFILLED) {\n setTimeStartEndInitReady(() => {\n startEndStatusRef.current.end = FULFILLED;\n return areAllAsyncReady(startEndStatusRef.current);\n });\n }\n }, 1000);\n\n return function cleanup() {\n if (intervalID) {\n clearInterval(intervalID);\n }\n };\n }, [endSeconds, hasTimeEnded, shouldNotCheck]);\n\n return {\n hasTimeStarted,\n hasTimeEnded,\n timeStartEndInitReady,\n };\n}\n","import {\n SnapshotDraftData,\n SnapshotProposalData,\n SnapshotDraftResponseData,\n SnapshotProposalResponseData,\n SnapshotType,\n VoteChoices,\n} from '@openlaw/snapshot-js-erc712';\nimport {AbiItem} from 'web3-utils/types';\nimport {Contract} from 'web3-eth-contract/types';\n\nimport {ContractAdapterNames} from '../web3/types';\nimport {VotingAdapterName} from '../adapters-extensions/enums';\nimport {VotingState} from './voting/types';\n\n/**\n * ENUMS\n */\n\n/**\n * Mapping of DaoRegistry proposal flags.\n * This should match the enum (including order) in the `DaoRegistry`. If it does not match,\n * the results of checking the proposal's state via flag will be wrong.\n *\n * @see `ProposalFlag` `DaoRegistry.sol`\n * @see `getFlag` `DaoConstants.sol`\n * @see `setFlag` `DaoConstants.sol`\n */\nexport enum ProposalFlag {\n EXISTS,\n SPONSORED,\n PROCESSED,\n}\n\n// @todo Need more information about the vote challenge flow.\nexport enum ProposalFlowStatus {\n Submit = 'Submit',\n Sponsor = 'Sponsor',\n OffchainVoting = 'OffchainVoting',\n OffchainVotingSubmitResult = 'OffchainVotingSubmitResult',\n OffchainVotingGracePeriod = 'OffchainVotingGracePeriod',\n OnchainVoting = 'OnchainVoting',\n Process = 'Process',\n Completed = 'Completed',\n}\n\n/**\n * @see `Distribute.sol` in tribute-contracts\n */\nexport enum DistributionStatus {\n NOT_STARTED,\n IN_PROGRESS,\n DONE,\n FAILED,\n}\n\n/**\n * This is an internal type we use for sending to Snapshot Hub via\n * `metadata: {}` to indicate the proposal is only meant for xyz.\n *\n * @note Only set the `metadata.type` in the case where the proposal's usage\n * cannot be determined by the `actionId` (adapter address) alone.\n */\nexport enum SnapshotMetadataType {\n Governance = 'Governance',\n}\n\n/**\n * TYPES\n */\n\nexport type Proposal = {\n adapterAddress: string;\n flags: string; // unint256 of Proposal's current flag\n};\n\n// Arguments for an optional render prop for ` ` and its child action wrapping components.\nexport type RenderActionPropArguments = {\n [VotingAdapterName.OffchainVotingContract]: {\n adapterName: ContractAdapterNames;\n // An enum name (`string`) of the DAO proposal's `VotingState` index\n daoProposalVoteResult: typeof VotingState[any] | undefined;\n daoProposalVote: OffchainVotingAdapterVote | undefined;\n gracePeriodStartMs: number | undefined;\n gracePeriodEndMs: number | undefined;\n proposal: ProposalData;\n status: ProposalFlowStatus | undefined;\n };\n};\n\n// @todo Change the type to be precise\nexport type SubgraphProposal = Record;\n\n/**\n * We augment the response data to add a few helpful data pieces.\n */\nexport type SnapshotDraft = {\n /**\n * The ID used to reference the DAO.\n */\n idInDAO: string;\n /**\n * An ID helper to reference the Draft hash\n */\n idInSnapshot: string;\n} & SnapshotDraftResponseData;\n\n/**\n * We augment the response data to add a few helpful data pieces.\n */\nexport type SnapshotProposal = {\n /**\n * The ID used to reference the DAO.\n */\n idInDAO: string;\n /**\n * An ID helper to reference the Proposal hash\n */\n idInSnapshot: string;\n} & SnapshotProposalResponseData;\n\n/**\n * Common data shared between a Snapshot Drafts and Proposals.\n * Helpful when we need to display information which is accessible on both.\n */\nexport type SnapshotProposalCommon = SnapshotDraft | SnapshotProposal;\n\nexport type ProposalData = {\n // @todo Make non-nullable?\n idInDAO?: string;\n // @todo Make non-nullable?\n daoProposalVotingAdapter?: ProposalVotingAdapterData;\n // @todo Make non-nullable?\n daoProposalVote?: ProposalVotesData;\n // @todo Make non-nullable?\n daoProposalVotingState?: VotingState;\n daoProposal: Proposal | undefined;\n /**\n * Data for either a Draft or Proposal which is shared between the two types.\n */\n getCommonSnapshotProposalData: () => SnapshotProposalCommon | undefined;\n refetchProposalOrDraft: () => void;\n snapshotDraft: SnapshotDraft | undefined;\n snapshotProposal: SnapshotProposal | undefined;\n snapshotType: ProposalOrDraftSnapshotType | undefined;\n};\n\n/**\n * A conditional helper type for determining which data shape to use.\n *\n * @link https://www.typescriptlang.org/docs/handbook/2/conditional-types.html\n */\nexport type ProposalOrDraftSnapshotData =\n | SnapshotDraftResponseData\n | SnapshotProposalResponseData;\n\nexport type ProposalOrDraftSnapshotType =\n | SnapshotType.proposal\n | SnapshotType.draft;\n\n/**\n * A conditional helper type for determining which data shape to use based on the `ProposalOrDraftSnapshotType`.\n *\n * @link https://www.typescriptlang.org/docs/handbook/2/conditional-types.html\n */\nexport type ProposalOrDraftSignDataFromType<\n T extends ProposalOrDraftSnapshotType\n> = T extends SnapshotType.proposal ? SnapshotProposalData : SnapshotDraftData;\n\n/**\n * Voting.sol->Voting\n *\n * @link https://github.com/openlawteam/tribute-contracts/blob/master/contracts/adapters/voting/Voting.sol\n */\nexport type VotingAdapterVotes = {\n blockNumber: string;\n nbNo: string;\n nbYes: string;\n startingTime: string;\n};\n\n/**\n * OffchainVoting.sol->Voting\n *\n * @link https://github.com/openlawteam/tribute-contracts/blob/master/contracts/adapters/voting/OffchainVoting.sol\n */\nexport type OffchainVotingAdapterVote = {\n fallbackVotesCount: string;\n forceFailed: boolean;\n gracePeriodStartingTime: string;\n index: string;\n isChallenged: boolean;\n nbNo: string;\n nbYes: string;\n reporter: string;\n resultRoot: string;\n snapshot: string;\n startingTime: string;\n};\n\n/**\n * VotingResult\n *\n * A custom result we build to deliver to components.\n * It should accommodate all types of yes/no voting (i.e. on-chain, off-chain).\n */\n\nexport type VoteChoiceResult = {\n percentage: number;\n units: number;\n};\n\nexport type VotingResult = {\n [VoteChoices.Yes]: VoteChoiceResult;\n [VoteChoices.No]: VoteChoiceResult;\n totalUnits: number;\n};\n\n/**\n * Proposal's voting adapter data\n */\nexport type ProposalVotingAdapterData = {\n votingAdapterName: VotingAdapterName;\n votingAdapterAddress: string;\n /**\n * Get the ABI for the proposal.\n * The object is not included inline to\n * save from repetitive data (some ABIs can be large).\n */\n getVotingAdapterABI: () => AbiItem[];\n // Helper to use the Web3 Contract directly\n getWeb3VotingAdapterContract: () => Contract;\n};\n\nexport type ProposalVotingAdapterTuple = [\n proposalId: string,\n votingAdapterData: ProposalVotingAdapterData\n];\n\n/**\n * Proposal on-chain votes data\n *\n * @see `useProposalsVotes`\n */\nexport type ProposalVotesData = {\n [VotingAdapterName.OffchainVotingContract]?: OffchainVotingAdapterVote;\n [VotingAdapterName.VotingContract]?: VotingAdapterVotes;\n};\n","import React, {useEffect, useState} from 'react';\n\ninterface IProps {\n // Show spinner after some time has elapsed.\n // Prevents the \"sudden spinner\" UI/UX no-no.\n // Esp. if we could have cached data.\n showAfterMs?: number;\n text?: string;\n textProps?: {[key: string]: any};\n}\n\nfunction Spinner(props: Partial) {\n return
;\n}\n\nconst Loader = (\n props: IProps & React.PropsWithoutRef\n) => {\n const {showAfterMs, text, textProps, ...loaderProps} = props;\n const [showLoaderAfterMs, setShowLoaderAfterMs] = useState(false);\n\n useEffect(() => {\n /* 200ms is approx. the time a user will notice a stalled, blank screen */\n const timeoutId =\n showAfterMs && setTimeout(() => setShowLoaderAfterMs(true), showAfterMs);\n\n return function cleanup() {\n timeoutId && clearTimeout(timeoutId);\n };\n }, [showAfterMs]);\n\n return (!showAfterMs || (showAfterMs && showLoaderAfterMs)) && props.text ? (\n \n \n \n {text}\n \n
\n ) : (!showAfterMs || (showAfterMs && showLoaderAfterMs)) && !props.text ? (\n \n ) : null;\n};\n\nexport default Loader;\n","import {ToStepNodeResult} from '@openlaw/snapshot-js-erc712/dist/types';\n\n/**\n * @see `IVoting.sol` in tribute-contracts\n */\nexport enum VotingState {\n NOT_STARTED,\n TIE,\n PASS,\n NOT_PASS,\n IN_PROGRESS,\n GRACE_PERIOD,\n}\n\n/**\n * @see `OffchainVoting.sol->getBadNodeError` in tribute-contracts\n */\nexport enum BadNodeError {\n OK,\n WRONG_PROPOSAL_ID,\n INVALID_CHOICE,\n AFTER_VOTING_PERIOD,\n BAD_SIGNATURE,\n INDEX_OUT_OF_BOUND,\n}\n\n/**\n * Response when calling `GET snapshot-hub/api/:space/offchain_proof/:merkle_root`\n */\nexport type SnapshotOffchainProofResponse = {\n merkle_root: string;\n space: string;\n steps: ToStepNodeResult[];\n};\n","import {lazy, Suspense} from 'react';\n\ntype WalletIconProps = {\n providerName: string | undefined;\n};\n\n/**\n * Lazy load SVG's\n */\n\nconst MetaMaskSVG = lazy(() => import('../../assets/svg/MetaMaskSVG'));\n\nconst WalletConnectSVG = lazy(\n () => import('../../assets/svg/WalletConnectSVG')\n);\n\n// Mapping of provider name to lazy component\nconst walletIconMap: Record = {\n injected: ,\n walletconnect: ,\n};\n\nexport function WalletIcon({\n providerName,\n}: WalletIconProps): JSX.Element | null {\n if (!providerName || !walletIconMap[providerName]) return null;\n\n return (\n \n \n {walletIconMap[providerName]}\n \n \n );\n}\n","import {useState, useEffect, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport usePreviousDistinct from 'react-use/lib/usePreviousDistinct';\nimport {AbiItem} from 'web3-utils';\n\nimport {AsyncStatus} from '../../../util/types';\nimport {StoreState} from '../../../store/types';\nimport {multicall, MulticallTuple} from '../../../components/web3/helpers';\nimport {useWeb3Modal} from '../../../components/web3/hooks';\nimport {normalizeString, truncateEthAddress} from '../../../util/helpers';\n\ntype UseCheckApplicantReturn = {\n checkApplicantError: Error | undefined;\n checkApplicantInvalidMsg: string | undefined;\n checkApplicantStatus: AsyncStatus;\n isApplicantValid: boolean | undefined;\n};\n\n/**\n * useCheckApplicant\n *\n * Checks if the provided applicant address is valid to become a potential new member.\n *\n * @export\n * @param {string} [address]\n * @returns {UseCheckApplicantReturn}\n */\nexport function useCheckApplicant(address?: string): UseCheckApplicantReturn {\n /**\n * Selectors\n */\n\n const DaoRegistryContract = useSelector(\n (state: StoreState) => state.contracts.DaoRegistryContract\n );\n\n /**\n * State\n */\n\n const [checkApplicantError, setCheckApplicantError] = useState();\n\n const [checkApplicantInvalidMsg, setCheckApplicantInvalidMsg] =\n useState();\n\n const [checkApplicantStatus, setCheckApplicantStatus] = useState(\n AsyncStatus.STANDBY\n );\n\n const [isApplicantValid, setIsApplicantValid] = useState();\n\n /**\n * Our hooks\n */\n\n const {web3Instance} = useWeb3Modal();\n\n /**\n * Their hooks\n */\n\n const prevAddress = usePreviousDistinct(address);\n\n /**\n * Cached callbacks\n */\n\n const checkApplicantValidityCached = useCallback(checkApplicantValidity, [\n DaoRegistryContract,\n address,\n web3Instance,\n ]);\n\n /**\n * Effects\n */\n\n useEffect(() => {\n // Reset state if no address is detected\n if (prevAddress && !address) {\n setCheckApplicantError(undefined);\n setCheckApplicantInvalidMsg(undefined);\n setIsApplicantValid(undefined);\n setCheckApplicantStatus(AsyncStatus.STANDBY);\n }\n\n if (address) {\n checkApplicantValidityCached();\n }\n }, [address, checkApplicantValidityCached, prevAddress]);\n\n /**\n * Functions\n */\n\n async function checkApplicantValidity() {\n if (!address || !DaoRegistryContract || !web3Instance) return;\n\n try {\n setCheckApplicantStatus(AsyncStatus.PENDING);\n\n const truncatedAddress = truncateEthAddress(address, 7);\n\n const {abi: daoRegistryABI, contractAddress: daoRegistryAddress} =\n DaoRegistryContract;\n\n // Build calls to DaoRegistry contract (which includes relevant DaoConstants functions)\n const getIsNotReservedAddressABI = daoRegistryABI.find(\n (item) => item.name === 'isNotReservedAddress'\n );\n const isNotReservedAddressCall: MulticallTuple = [\n daoRegistryAddress,\n getIsNotReservedAddressABI as AbiItem,\n [address],\n ];\n\n const getIsNotZeroAddressABI = daoRegistryABI.find(\n (item) => item.name === 'isNotZeroAddress'\n );\n const isNotZeroAddressCall: MulticallTuple = [\n daoRegistryAddress,\n getIsNotZeroAddressABI as AbiItem,\n [address],\n ];\n\n const getGetAddressIfDelegatedABI = daoRegistryABI.find(\n (item) => item.name === 'getAddressIfDelegated'\n );\n const getAddressIfDelegatedCall: MulticallTuple = [\n daoRegistryAddress,\n getGetAddressIfDelegatedABI as AbiItem,\n [address],\n ];\n\n const calls = [\n isNotReservedAddressCall,\n isNotZeroAddressCall,\n getAddressIfDelegatedCall,\n ];\n\n const [\n isNotReservedAddressResult,\n isNotZeroAddressResult,\n getAddressIfDelegatedResult,\n ]: [boolean, boolean, string] = await multicall({calls, web3Instance});\n\n if (!isNotReservedAddressResult) {\n // Applicant address cannot be a reserved address.\n setIsApplicantValid(false);\n setCheckApplicantInvalidMsg(\n `The applicant address ${truncatedAddress} is invalid because it is a DAO reserved address.`\n );\n } else if (!isNotZeroAddressResult) {\n // Applicant address cannot be 0x0 address.\n setIsApplicantValid(false);\n setCheckApplicantInvalidMsg(\n `The applicant address ${truncatedAddress} is invalid.`\n );\n } else if (\n normalizeString(address) !==\n normalizeString(getAddressIfDelegatedResult)\n ) {\n // Applicant address cannot already be in use as a delegate key.\n setIsApplicantValid(false);\n setCheckApplicantInvalidMsg(\n `The applicant address ${truncatedAddress} is already in use as a delegate key. The address must be removed as a delegate before it can become a member.`\n );\n } else {\n setIsApplicantValid(true);\n setCheckApplicantInvalidMsg(undefined);\n }\n\n setCheckApplicantStatus(AsyncStatus.FULFILLED);\n } catch (error) {\n setIsApplicantValid(undefined);\n setCheckApplicantInvalidMsg(undefined);\n setCheckApplicantError(error);\n setCheckApplicantStatus(AsyncStatus.REJECTED);\n }\n }\n\n return {\n checkApplicantError,\n checkApplicantInvalidMsg,\n checkApplicantStatus,\n isApplicantValid,\n };\n}\n","import {AbiItem} from 'web3-utils/types';\nimport {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport Web3 from 'web3';\n\nimport {AsyncStatus} from '../../../util/types';\nimport {multicall, MulticallTuple} from '../../web3/helpers';\nimport {Proposal} from '../types';\nimport {StoreState} from '../../../store/types';\nimport {useWeb3Modal} from '../../web3/hooks';\n\ntype DaoProposalEntries = [proposalId: string, proposal: Proposal][];\n\ntype UseDaoProposalsReturn = {\n daoProposals: DaoProposalEntries;\n daoProposalsStatus: AsyncStatus;\n daoProposalsError: Error | undefined;\n};\n\nconst INITIAL_DAO_PROPOSAL_ENTRIES: DaoProposalEntries = [];\n\n/**\n * useDaoProposals\n *\n * Gets `proposals` by their id from the DAO via `multicall`.\n *\n * @param proposalIds\n * @returns `UseDaoProposalsReturn`\n */\nexport function useDaoProposals(proposalIds: string[]): UseDaoProposalsReturn {\n /**\n * Selectors\n */\n\n const proposalsAbi = useSelector((s: StoreState) =>\n s.contracts.DaoRegistryContract?.abi.find((a) => a.name === 'proposals')\n );\n\n const registryAddress = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.contractAddress\n );\n\n /**\n * State\n */\n\n const [daoProposals, setDaoProposals] = useState(\n INITIAL_DAO_PROPOSAL_ENTRIES\n );\n\n const [daoProposalsStatus, setDaoProposalsStatus] = useState(\n AsyncStatus.STANDBY\n );\n\n const [daoProposalsError, setDaoProposalsError] = useState();\n\n /**\n * Our hooks\n */\n\n const {web3Instance} = useWeb3Modal();\n\n /**\n * Effects\n */\n\n useEffect(() => {\n if (\n !proposalIds.length ||\n !proposalsAbi ||\n !registryAddress ||\n !web3Instance\n ) {\n return;\n }\n\n handleGetDaoProposals({\n proposalIds,\n proposalsAbi,\n registryAddress,\n web3Instance,\n });\n }, [proposalIds, proposalsAbi, registryAddress, web3Instance]);\n\n /**\n * Functions\n */\n\n async function handleGetDaoProposals({\n proposalIds,\n proposalsAbi,\n registryAddress,\n web3Instance,\n }: {\n proposalIds: string[];\n proposalsAbi: AbiItem;\n registryAddress: string;\n web3Instance: Web3;\n }) {\n try {\n if (!proposalIds.length) return;\n\n // Only use hex (more specifically `bytes32`) id's\n const safeProposalIds = proposalIds.filter(\n web3Instance.utils.isHexStrict\n );\n\n if (!safeProposalIds.length) {\n setDaoProposalsStatus(AsyncStatus.FULFILLED);\n setDaoProposals([]);\n\n return;\n }\n\n setDaoProposalsStatus(AsyncStatus.PENDING);\n // Reset error\n setDaoProposalsError(undefined);\n\n const calls: MulticallTuple[] = safeProposalIds.map((id) => [\n registryAddress,\n proposalsAbi,\n [id],\n ]);\n\n const proposals = await multicall({\n calls,\n web3Instance,\n });\n\n setDaoProposals(safeProposalIds.map((id, i) => [id, proposals[i]]));\n setDaoProposalsStatus(AsyncStatus.FULFILLED);\n } catch (error) {\n setDaoProposals(INITIAL_DAO_PROPOSAL_ENTRIES);\n setDaoProposalsError(error);\n setDaoProposalsStatus(AsyncStatus.REJECTED);\n }\n }\n\n return {\n daoProposals,\n daoProposalsStatus,\n daoProposalsError,\n };\n}\n","import {AbiItem} from 'web3-utils/types';\nimport {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {VoteChoicesIndex} from '@openlaw/snapshot-js-erc712';\nimport Web3 from 'web3';\n\nimport {AsyncStatus} from '../../../util/types';\nimport {multicall, MulticallTuple} from '../../web3/helpers';\nimport {SnapshotProposal, VotingResult} from '../types';\nimport {StoreState} from '../../../store/types';\nimport {UNITS_ADDRESS, TOTAL_ADDRESS} from '../../../config';\nimport {useIsMounted} from '../../../hooks';\nimport {useWeb3Modal} from '../../web3/hooks';\nimport {VoteChoices} from '../../web3/types';\n\ntype OffchainVotingResultEntries = [\n proposalHash: string,\n votingResult: VotingResult\n][];\n\ntype UseOffchainVotingResultsReturn = {\n offchainVotingResults: OffchainVotingResultEntries;\n offchainVotingResultsError: Error | undefined;\n offchainVotingResultsStatus: AsyncStatus;\n};\n\n/**\n * @todo Polling\n */\nexport function useOffchainVotingResults(\n /**\n * Accepts a single `SnapshotProposal` or `SnapshotProposal[]`\n */\n proposals: (SnapshotProposal | undefined) | (SnapshotProposal | undefined)[]\n): UseOffchainVotingResultsReturn {\n /**\n * Selectors\n */\n\n const bankABI = useSelector(\n (s: StoreState) => s.contracts.BankExtensionContract?.abi\n );\n const bankAddress = useSelector(\n (s: StoreState) => s.contracts.BankExtensionContract?.contractAddress\n );\n\n /**\n * State\n */\n\n const [votingResults, setVotingResults] =\n useState([]);\n\n const [offchainVotingResultsStatus, setOffchainVotingResultsStatus] =\n useState(AsyncStatus.STANDBY);\n\n const [offchainVotingResultsError, setOffchainVotingResultsError] = useState<\n Error | undefined\n >();\n\n /**\n * Our hooks\n */\n\n const {web3Instance} = useWeb3Modal();\n const {isMountedRef} = useIsMounted();\n\n /**\n * Variables\n */\n\n const getPriorAmountABI = bankABI?.find(\n (item) => item.name === 'getPriorAmount'\n );\n\n /**\n * Cached callbacks\n */\n\n const getUnitsPerChoiceCached = useCallback(\n getUnitsPerChoiceFromContract,\n []\n );\n\n /**\n * Effects\n */\n\n // Build result entries of `OffchainVotingResultEntries`\n useEffect(() => {\n const proposalsToMap = Array.isArray(proposals) ? proposals : [proposals];\n\n if (\n !bankAddress ||\n !getPriorAmountABI ||\n !proposalsToMap.length ||\n !web3Instance\n ) {\n return;\n }\n\n setOffchainVotingResultsStatus(AsyncStatus.PENDING);\n\n const votingResultPromises = proposalsToMap.map(async (p) => {\n const snapshot = p?.msg.payload.snapshot;\n const idInSnapshot = p?.idInSnapshot;\n\n if (!idInSnapshot || !snapshot) return;\n\n const voterEntries = p?.votes?.map((v): [string, number] => {\n const vote = v[Object.keys(v)[0]];\n\n return [\n /**\n * Must be the true member's address for calculating voting power.\n * This value is (or at least should be) derived from `OffchainVoting.memberAddressesByDelegatedKey`.\n */\n vote.msg.payload.metadata.memberAddress,\n vote.msg.payload.choice,\n ];\n });\n\n if (!voterEntries || !voterEntries.length) return;\n\n // Dedupe any duplicate addresses to be safe.\n const voterAddressesAndChoices = Object.entries(\n Object.fromEntries(voterEntries)\n );\n\n try {\n const result = await getUnitsPerChoiceCached({\n bankAddress,\n getPriorAmountABI,\n snapshot,\n voterAddressesAndChoices,\n web3Instance,\n });\n\n return [idInSnapshot, result];\n } catch (error) {\n return;\n }\n });\n\n Promise.all(votingResultPromises)\n .then((p) => p.filter((p) => p) as OffchainVotingResultEntries)\n .then((r) => {\n if (!isMountedRef.current) return;\n\n setOffchainVotingResultsStatus(AsyncStatus.FULFILLED);\n setVotingResults(r);\n setOffchainVotingResultsError(undefined);\n })\n .catch((error) => {\n if (!isMountedRef.current) return;\n\n setOffchainVotingResultsStatus(AsyncStatus.REJECTED);\n setVotingResults([]);\n setOffchainVotingResultsError(error);\n });\n }, [\n bankAddress,\n getPriorAmountABI,\n getUnitsPerChoiceCached,\n isMountedRef,\n proposals,\n web3Instance,\n ]);\n\n /**\n * Functions\n */\n\n async function getUnitsPerChoiceFromContract({\n bankAddress,\n getPriorAmountABI,\n snapshot,\n voterAddressesAndChoices,\n web3Instance,\n }: {\n bankAddress: string;\n getPriorAmountABI: AbiItem;\n snapshot: number;\n voterAddressesAndChoices: [string, number][];\n web3Instance: Web3;\n }): Promise {\n try {\n // Create results object to set later\n const results = {\n [VoteChoices.Yes]: {\n percentage: 0,\n units: 0,\n },\n [VoteChoices.No]: {\n percentage: 0,\n units: 0,\n },\n totalUnits: 0,\n };\n\n // Build a call for total units\n const totalUnitsCall: MulticallTuple = [\n bankAddress,\n getPriorAmountABI,\n [\n TOTAL_ADDRESS, // account\n UNITS_ADDRESS, // tokenAddr\n snapshot.toString(), // blockNumber\n ],\n ];\n\n // Build calls to Bank contract\n const unitsCalls = voterAddressesAndChoices.map(\n ([address]): MulticallTuple => [\n bankAddress,\n getPriorAmountABI,\n [\n address, // account\n UNITS_ADDRESS, // tokenAddr\n snapshot.toString(), // blockNumber\n ],\n ]\n );\n\n const calls = [totalUnitsCall, ...unitsCalls];\n\n const [totalUnitsResult, ...votingResults]: string[] = await multicall({\n calls,\n web3Instance,\n });\n\n // Set Units values for choices\n votingResults.forEach((units, i) => {\n const isYes =\n VoteChoicesIndex[voterAddressesAndChoices[i][1]] ===\n VoteChoicesIndex[VoteChoicesIndex.Yes];\n const choice = isYes ? VoteChoices.Yes : VoteChoices.No;\n\n results[choice].units += Number(units);\n });\n\n // Set percentages\n results[VoteChoices.Yes].percentage =\n (results[VoteChoices.Yes].units / Number(totalUnitsResult)) * 100;\n\n results[VoteChoices.No].percentage =\n (results[VoteChoices.No].units / Number(totalUnitsResult)) * 100;\n\n // Set total units\n results.totalUnits = Number(totalUnitsResult);\n\n return results;\n } catch (error) {\n throw error;\n }\n }\n\n return {\n offchainVotingResults: votingResults,\n offchainVotingResultsError,\n offchainVotingResultsStatus,\n };\n}\n","import {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {AsyncStatus} from '../../../util/types';\nimport {BURN_ADDRESS} from '../../../util/constants';\nimport {getVotingAdapterABI} from '../helpers';\nimport {multicall, MulticallTuple} from '../../web3/helpers';\nimport {ProposalVotingAdapterData} from '../types';\nimport {StoreState} from '../../../store/types';\nimport {useWeb3Modal} from '../../web3/hooks';\nimport {VotingAdapterName} from '../../adapters-extensions/enums';\n\ntype ProposalVotingAdapterTuple = [\n proposalId: string,\n votingAdapterData: ProposalVotingAdapterData\n];\n\ntype UseProposalsVotingAdapterReturn = {\n proposalsVotingAdapters: ProposalVotingAdapterTuple[];\n proposalsVotingAdaptersError: Error | undefined;\n proposalsVotingAdaptersStatus: AsyncStatus;\n};\n\nconst INITIAL_VOTING_ADAPTERS: ProposalVotingAdapterTuple[] = [];\n\n/**\n * Fetch voting adapter data for proposals by DAO proposal id.\n * Only returns data for proposals of which voting adapters have been assigned (i.e. sponsored).\n *\n * @param {string[]}\n * @returns {UseProposalsVotingAdapterReturn}\n */\nexport function useProposalsVotingAdapter(\n proposalIds: string[]\n): UseProposalsVotingAdapterReturn {\n /**\n * Selectors\n */\n\n const registryAddress = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.contractAddress\n );\n const registryABI = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.abi\n );\n\n /**\n * Our hooks\n */\n\n const {web3Instance} = useWeb3Modal();\n\n /**\n * State\n */\n\n const [proposalsVotingAdapters, setProposalsVotingAdapters] = useState<\n ProposalVotingAdapterTuple[]\n >(INITIAL_VOTING_ADAPTERS);\n\n const [proposalsVotingAdaptersError, setProposalsVotingAdaptersError] =\n useState();\n\n const [proposalsVotingAdaptersStatus, setProposalsVotingAdaptersStatus] =\n useState(AsyncStatus.STANDBY);\n\n /**\n * Cached callbacks\n */\n\n const getProposalsVotingAdaptersOnchainCached = useCallback(\n getProposalsVotingAdaptersOnchain,\n [proposalIds, registryABI, registryAddress, web3Instance]\n );\n\n /**\n * Effects\n */\n\n useEffect(() => {\n getProposalsVotingAdaptersOnchainCached();\n }, [getProposalsVotingAdaptersOnchainCached]);\n\n /**\n * Functions\n */\n\n async function getProposalsVotingAdaptersOnchain(): Promise {\n if (\n !proposalIds.length ||\n !registryABI ||\n !registryAddress ||\n !web3Instance\n ) {\n return;\n }\n\n // Only use hex (more specifically `bytes32`) id's\n const safeProposalIds = proposalIds.filter(web3Instance.utils.isHexStrict);\n\n if (!safeProposalIds.length) {\n setProposalsVotingAdapters(INITIAL_VOTING_ADAPTERS);\n setProposalsVotingAdaptersStatus(AsyncStatus.FULFILLED);\n\n return;\n }\n\n try {\n const votingAdapterABI = registryABI.find(\n (ai) => ai.name === 'votingAdapter'\n );\n\n if (!votingAdapterABI) {\n throw new Error(\n 'No \"votingAdapter\" ABI function was found in the DAO registry ABI.'\n );\n }\n\n // `DaoRegistry.votingAdapter` calls\n const votingAdapterCalls: MulticallTuple[] = safeProposalIds.map((id) => [\n registryAddress,\n votingAdapterABI,\n [id],\n ]);\n\n setProposalsVotingAdaptersStatus(AsyncStatus.PENDING);\n\n const votingAdapterAddressResults: string[] = await multicall({\n calls: votingAdapterCalls,\n web3Instance,\n });\n\n const {default: lazyIVotingABI} = await import(\n '../../../truffle-contracts/IVoting.json'\n );\n\n const getAdapterNameABI = (lazyIVotingABI as typeof registryABI).find(\n (ai) => ai.name === 'getAdapterName'\n );\n\n if (!getAdapterNameABI) {\n throw new Error(\n 'No \"getAdapterName\" ABI function was found in the IVoting ABI.'\n );\n }\n\n /**\n * Filter out `safeProposalIds` which are not sponsored (i.e. voting adapter address === `BURN_ADDRESS`).\n * Filter out `votingAdapterAddressResults` which equal the `BURN_ADDRESS`.\n *\n * This ensures these two arrays maintain the same length as they rely on indexes for the\n * proposals to match up to the array of `multicall` results.\n */\n\n const filteredProposalIds = safeProposalIds.filter(\n (_id, i) => votingAdapterAddressResults[i] !== BURN_ADDRESS\n );\n\n const filteredVotingAdapterAddressResults =\n votingAdapterAddressResults.filter((a) => a !== BURN_ADDRESS);\n\n /**\n * Exit early if there's no voting adapter addresses.\n * It means no proposals were found to be sponsored\n */\n if (!filteredVotingAdapterAddressResults.length) {\n setProposalsVotingAdapters(INITIAL_VOTING_ADAPTERS);\n setProposalsVotingAdaptersStatus(AsyncStatus.FULFILLED);\n\n return;\n }\n\n const votingAdapterNameCalls: MulticallTuple[] =\n filteredVotingAdapterAddressResults.map((votingAdapterAddress) => [\n votingAdapterAddress,\n getAdapterNameABI,\n [],\n ]);\n\n const adapterNameResults: VotingAdapterName[] = await multicall({\n calls: votingAdapterNameCalls,\n web3Instance,\n });\n\n const votingAdaptersToSet = await Promise.all(\n filteredProposalIds.map(\n async (id, i): Promise => {\n const votingAdapterABI = await getVotingAdapterABI(\n adapterNameResults[i]\n );\n const votingAdapterAddress = filteredVotingAdapterAddressResults[i];\n\n return [\n id,\n {\n votingAdapterName: adapterNameResults[i],\n votingAdapterAddress,\n getVotingAdapterABI: () => votingAdapterABI,\n getWeb3VotingAdapterContract: () =>\n new web3Instance.eth.Contract(\n votingAdapterABI,\n votingAdapterAddress\n ),\n },\n ];\n }\n )\n );\n\n setProposalsVotingAdapters(votingAdaptersToSet);\n setProposalsVotingAdaptersStatus(AsyncStatus.FULFILLED);\n } catch (error) {\n setProposalsVotingAdaptersStatus(AsyncStatus.REJECTED);\n setProposalsVotingAdapters([]);\n setProposalsVotingAdaptersError(error);\n }\n }\n\n return {\n proposalsVotingAdapters,\n proposalsVotingAdaptersError,\n proposalsVotingAdaptersStatus,\n };\n}\n","import {useCallback, useEffect, useState} from 'react';\nimport {\n SnapshotDraftResponse,\n SnapshotProposalResponse,\n SnapshotType,\n} from '@openlaw/snapshot-js-erc712';\n\nimport {\n Proposal,\n ProposalData,\n ProposalOrDraftSnapshotType,\n SnapshotDraft,\n SnapshotProposal,\n SnapshotProposalCommon,\n} from '../types';\nimport {AsyncStatus} from '../../../util/types';\nimport {SNAPSHOT_HUB_API_URL, SPACE} from '../../../config';\nimport {useAbortController, useCounter} from '../../../hooks';\nimport {useProposalsVotingAdapter} from './useProposalsVotingAdapter';\n\ntype UseProposalReturn = {\n proposalData: ProposalData | undefined;\n proposalError: Error | undefined;\n proposalNotFound: boolean;\n proposalStatus: AsyncStatus;\n};\n\nconst ERROR_PROPOSAL: string =\n 'Something went wrong while getting the proposal.';\nconst ERROR_PROPOSAL_NOT_FOUND: string = 'Proposal was not found.';\n\n/**\n * useProposalOrDraft\n *\n * Fetches a snapshot-hub `proposal` or `draft` type by an ID string.\n *\n * If no `type` argument is provided it will search first for a\n * `proposal`, then if not found, search for a `draft`.\n *\n * @todo Fetch subgraph proposal on mount before a draft or proposal has been fetched.\n *\n * @param {string} id A draft's or a proposal's ID to search for.\n * @param {SnapshotType?} type An optional snapshot-hub `type` to search by.\n * @returns {UseProposalReturn}\n */\nexport function useProposalOrDraft(\n id: string,\n type?: ProposalOrDraftSnapshotType\n): UseProposalReturn {\n /**\n * State\n */\n\n /**\n * @todo Get subgraph data using useLazyQuery\n * @link https://www.apollographql.com/docs/react/data/queries/#executing-queries-manually\n */\n\n const [daoProposal /* setDAOProposal */] = useState();\n const [snapshotDraft, setSnapshotDraft] = useState();\n const [snapshotProposal, setSnapshotProposal] = useState();\n const [proposalNotFound, setProposalNotFound] = useState(false);\n const [proposalError, setProposalError] = useState();\n const [proposalStatus, setProposalStatus] = useState(\n AsyncStatus.STANDBY\n );\n const [proposalVotingAdapterId, setProposalVotingAdapterId] = useState<\n string[]\n >([id]);\n\n // The overall status of the async data being fetched\n const [proposalInclusiveStatus, setProposalInclusiveStatus] =\n useState(AsyncStatus.STANDBY);\n\n // Any error of the async data being fetched\n const [proposalInclusiveError, setProposalInclusiveError] = useState();\n\n /**\n * Our hooks\n */\n\n const {abortController, isMountedRef} = useAbortController();\n\n const [refetchCount, updateRefetchCount] = useCounter();\n\n /**\n * Fetch on-chain voting adapter data for proposals.\n * Only returns data for proposals of which voting adapters have been assigned (i.e. sponsored).\n */\n const {\n proposalsVotingAdapters,\n proposalsVotingAdaptersError,\n proposalsVotingAdaptersStatus,\n } = useProposalsVotingAdapter(proposalVotingAdapterId);\n\n /**\n * Cached callbacks\n */\n\n const handleGetDraftCached = useCallback(handleGetDraft, [\n abortController?.signal,\n id,\n isMountedRef,\n ]);\n\n const handleGetProposalCached = useCallback(handleGetProposal, [\n abortController?.signal,\n id,\n isMountedRef,\n type,\n ]);\n\n const handleGetProposalOrDraftCached = useCallback(handleGetProposalOrDraft, [\n handleGetDraftCached,\n handleGetProposalCached,\n ]);\n\n /**\n * Variables\n */\n\n const snapshotType: ProposalOrDraftSnapshotType | undefined = snapshotProposal\n ? SnapshotType.proposal\n : snapshotDraft\n ? SnapshotType.draft\n : undefined;\n\n /**\n * We need to at least have Snapshot data to provide the proposal,\n * otherwise we will have nothing to show the user.\n */\n const proposalData: UseProposalReturn['proposalData'] =\n snapshotDraft || snapshotProposal\n ? {\n // idInDAO: '',\n daoProposal,\n daoProposalVotingAdapter: proposalsVotingAdapters[0]?.[1],\n getCommonSnapshotProposalData,\n refetchProposalOrDraft,\n snapshotDraft,\n snapshotProposal,\n snapshotType,\n }\n : undefined;\n\n /**\n * Effects\n */\n\n useEffect(() => {\n if (!abortController?.signal) return;\n\n switch (type) {\n case SnapshotType.draft:\n handleGetDraftCached();\n break;\n case SnapshotType.proposal:\n handleGetProposalCached();\n break;\n default:\n handleGetProposalOrDraftCached();\n break;\n }\n }, [\n abortController?.signal,\n handleGetDraftCached,\n handleGetProposalCached,\n handleGetProposalOrDraftCached,\n // Required in order to refetch\n refetchCount,\n type,\n ]);\n\n useEffect(() => {\n if (refetchCount === 0) return;\n\n /**\n * Provide a different Array reference to force a re-render\n * of the `useProposalsVotingAdapter` hook. If the `id` argument changes,\n * that's fine as well, but it's unlikely.\n */\n setProposalVotingAdapterId([id]);\n }, [id, refetchCount]);\n\n // Set overall async status\n useEffect(() => {\n const {STANDBY, PENDING, FULFILLED, REJECTED} = AsyncStatus;\n const statuses = [proposalStatus, proposalsVotingAdaptersStatus];\n\n /**\n * Standby\n *\n * The other statuses rely on a Snapshot Hub proposal or draft being fetched,\n * so it's only in `STANDBY` at the point the proposals have\n * not yet been fetched.\n */\n if (proposalStatus === STANDBY) {\n setProposalInclusiveStatus(STANDBY);\n\n return;\n }\n\n /**\n * Pending\n *\n * Do not trigger pending requests (UI may show loader) for refetches (meant to be silent).\n */\n if (statuses.some((s) => s === PENDING) && refetchCount === 0) {\n setProposalInclusiveStatus(PENDING);\n\n return;\n }\n\n // Fulfilled\n if (statuses.every((s) => s === FULFILLED)) {\n setProposalInclusiveStatus(FULFILLED);\n\n return;\n }\n\n // Fulfilled: checked for DAO proposals' voting adapters and none were returned - not sponsored\n if (\n proposalStatus === FULFILLED &&\n proposalsVotingAdaptersStatus === FULFILLED &&\n !proposalsVotingAdapters.length\n ) {\n setProposalInclusiveStatus(FULFILLED);\n\n return;\n }\n\n // Rejected\n if (statuses.some((s) => s === REJECTED)) {\n setProposalInclusiveStatus(REJECTED);\n\n return;\n }\n }, [\n proposalStatus,\n proposalsVotingAdapters.length,\n proposalsVotingAdaptersStatus,\n refetchCount,\n ]);\n\n // Set any error from async calls\n useEffect(() => {\n const errors = [proposalError, proposalsVotingAdaptersError];\n\n setProposalInclusiveError(errors.find((e) => e));\n }, [proposalError, proposalsVotingAdaptersError]);\n\n /**\n * Functions\n */\n\n async function handleGetDraft(): Promise {\n try {\n setProposalStatus(AsyncStatus.PENDING);\n\n const response = await fetch(\n `${SNAPSHOT_HUB_API_URL}/api/${SPACE}/draft/${id}`,\n {signal: abortController?.signal}\n );\n\n if (!response.ok) {\n throw new Error(ERROR_PROPOSAL);\n }\n\n const responseJSON: SnapshotDraftResponse = await response.json();\n\n if (!isMountedRef.current) return;\n\n // @note API does not provide a 404\n if (!responseJSON || !Object.keys(responseJSON).length) {\n setProposalNotFound(true);\n\n throw new Error(ERROR_PROPOSAL_NOT_FOUND);\n }\n\n const idKey = Object.keys(responseJSON)[0];\n // Get the `SnapshotDraftResponseData` by the address key of the single result.\n const draft: SnapshotDraft = {\n idInDAO: idKey,\n idInSnapshot: idKey,\n ...responseJSON[idKey],\n };\n\n setProposalStatus(AsyncStatus.FULFILLED);\n setSnapshotDraft(draft);\n\n return draft;\n } catch (error) {\n if (!isMountedRef.current) return;\n\n setProposalStatus(AsyncStatus.REJECTED);\n setProposalError(error);\n }\n }\n\n async function handleGetProposal(): Promise {\n try {\n setProposalStatus(AsyncStatus.PENDING);\n\n /**\n * @note `searchUniqueDraftId` includes the draft id in the search for the proposal\n * as a Tribute proposal's ID hash could be the Snapshot Draft's ID.\n */\n const response = await fetch(\n `${SNAPSHOT_HUB_API_URL}/api/${SPACE}/proposal/${id}?searchUniqueDraftId=true&includeVotes=true`,\n {signal: abortController?.signal}\n );\n\n if (!response.ok) {\n /**\n * If `type` is set then we know we can determine `handleGetDraft`\n * will not be called after in `handleGetProposalOrDraft`.\n */\n if (type === SnapshotType.proposal) {\n throw new Error(ERROR_PROPOSAL);\n }\n\n return;\n }\n\n const responseJSON: SnapshotProposalResponse = await response.json();\n\n if (!isMountedRef.current) return;\n\n // @note API does not provide a 404\n if (!responseJSON || !Object.keys(responseJSON).length) {\n /**\n * If `type` is set then we know we can determine `handleGetDraft`\n * will not be called after in `handleGetProposalOrDraft`.\n */\n if (type === SnapshotType.proposal) {\n setProposalNotFound(true);\n throw new Error(ERROR_PROPOSAL_NOT_FOUND);\n }\n\n return;\n }\n\n const idKey = Object.keys(responseJSON)[0];\n // Determine ID submitted to DAO, i.e. if there's a Draft ID hash, we should use that.\n const proposalId: string =\n responseJSON[idKey]?.data.erc712DraftHash || idKey;\n // Get the `SnapshotProposalResponseData` by the address key of the single result.\n const proposal: SnapshotProposal = {\n idInDAO: proposalId,\n idInSnapshot: idKey,\n ...responseJSON[idKey],\n };\n\n setProposalStatus(AsyncStatus.FULFILLED);\n setSnapshotProposal(proposal);\n\n return proposal;\n } catch (error) {\n if (!isMountedRef.current) return;\n\n setProposalStatus(AsyncStatus.REJECTED);\n setProposalError(error);\n }\n }\n\n /**\n * Searches all possible combinations to return a proposal or a draft:\n *\n * 1. Search for a proposal (including by using the `id` as the Draft's ID hash via `searchUniqueDraftId`)\n * 2. Search for a draft, if nothing is returned for a proposal.\n */\n async function handleGetProposalOrDraft() {\n // 1. Attempt to search for a proposal.\n const proposal = await handleGetProposalCached();\n\n if (!proposal) {\n // 2. If not found, attempt a search for a draft.\n const draft = await handleGetDraftCached();\n\n setSnapshotDraft(draft);\n\n return;\n }\n\n setSnapshotProposal(proposal);\n }\n\n /**\n * getCommonSnapshotProposalData\n *\n * @returns `SnapshotProposalCommon | undefined` Data for either a Draft or Proposal which is shared between the two types.\n */\n function getCommonSnapshotProposalData(): SnapshotProposalCommon | undefined {\n switch (snapshotType) {\n case SnapshotType.draft:\n return snapshotDraft;\n case SnapshotType.proposal:\n return snapshotProposal;\n default:\n return undefined;\n }\n }\n\n function refetchProposalOrDraft(): void {\n updateRefetchCount({type: 'increment'});\n }\n\n return {\n proposalData,\n proposalError: proposalInclusiveError,\n proposalNotFound,\n proposalStatus: proposalInclusiveStatus,\n };\n}\n","import {useEffect, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n SnapshotDraftResponse,\n SnapshotDraftResponseData,\n SnapshotProposalResponse,\n SnapshotProposalResponseData,\n SnapshotType,\n} from '@openlaw/snapshot-js-erc712';\n\nimport {AsyncStatus} from '../../../util/types';\nimport {DaoAdapterConstants} from '../../adapters-extensions/enums';\nimport {normalizeString} from '../../../util/helpers';\nimport {ProposalData, SnapshotDraft, SnapshotProposal} from '../types';\nimport {SNAPSHOT_HUB_API_URL, SPACE} from '../../../config';\nimport {StoreState} from '../../../store/types';\nimport {useDaoProposals, useProposalsVotingState} from '.';\nimport {useProposalsVotes} from './useProposalsVotes';\nimport {useProposalsVotingAdapter} from './useProposalsVotingAdapter';\n\ntype UseProposalsReturn = {\n proposals: ProposalData[];\n proposalsStatus: AsyncStatus;\n proposalsError: Error | undefined;\n};\n\ntype SnapshotDraftAndProposalEntries = [\n string,\n SnapshotDraftResponseData | SnapshotProposalResponseData\n][];\n\nconst INITIAL_ARRAY: any[] = [];\n\n// Gets Drafts (unsponsored Proposals) from Snapshot Hub\nasync function getSnapshotDraftsByAdapterAddress(\n adapterAddress: string\n): Promise<[string, SnapshotDraftResponseData][]> {\n try {\n const baseURL = `${SNAPSHOT_HUB_API_URL}/api/${SPACE}`;\n\n const drafts = await fetch(`${baseURL}/drafts/${adapterAddress}`);\n\n if (!drafts.ok) {\n throw new Error(\n 'Something went wrong while fetching the Snapshot drafts.'\n );\n }\n\n const draftsJSON: SnapshotDraftResponse = await drafts.json();\n\n // Get Drafts which have not yet been sponsored (Proposal created)\n const draftEntries = Object.entries(draftsJSON).filter(\n ([_, d]) => d.data.sponsored === false\n );\n\n return draftEntries;\n } catch (error) {\n throw error;\n }\n}\n\n// Gets Proposals from Snapshot Hub\nasync function getSnapshotProposalsByAdapterAddress(\n adapterAddress: string\n): Promise<[string, SnapshotProposalResponseData][]> {\n try {\n const baseURL = `${SNAPSHOT_HUB_API_URL}/api/${SPACE}`;\n\n const proposals = await fetch(\n `${baseURL}/proposals/${adapterAddress}?includeVotes=true`\n );\n\n if (!proposals.ok) {\n throw new Error(\n 'Something went wrong while fetching the Snapshot proposals.'\n );\n }\n\n const proposalsJSON: SnapshotProposalResponse = await proposals.json();\n\n /**\n * Re-map entries setting the correct id used for the `proposalId` in the DAO.\n * If it has a draft hash, then this is what was submitted to the DAO, most likely (e.g. submit proposal)\n */\n const proposalEntries = Object.entries(proposalsJSON).map(\n ([id, p]): [string, SnapshotProposalResponseData] => [\n p.data.erc712DraftHash || id,\n p,\n ]\n );\n\n return proposalEntries;\n } catch (error) {\n throw error;\n }\n}\n\n/**\n * useProposals\n *\n * @param {string} adapterName Name of the adapter contract to get proposals for.\n * @param {string} includeProposalsExistingOnlyOffchain To handle proposal types where the first step is creating a snapshot draft/offchain proposal only (no onchain proposal exists).\n * @returns `UseProposalsReturn` An object with the proposals, and the current async status.\n */\nexport function useProposals({\n adapterName,\n includeProposalsExistingOnlyOffchain = false,\n}: {\n adapterName: DaoAdapterConstants;\n includeProposalsExistingOnlyOffchain?: boolean;\n}): UseProposalsReturn {\n /**\n * State\n */\n\n const [adapterAddress, setAdapterAddress] = useState();\n\n const [snapshotDraftAndProposals, setSnapshotDraftAndProposals] =\n useState(INITIAL_ARRAY);\n\n const [snapshotDraftAndProposalsStatus, setSnapshotDraftAndProposalsStatus] =\n useState(AsyncStatus.STANDBY);\n\n const [snapshotDraftAndProposalsError, setSnapshotDraftAndProposalsError] =\n useState();\n\n const [daoProposalIdsToUse, setDaoProposalIdsToUse] =\n useState(INITIAL_ARRAY);\n\n const [proposals, setProposals] = useState(INITIAL_ARRAY);\n\n // The overall status of the async data being fetched\n const [proposalsInclusiveStatus, setProposalsInclusiveStatus] =\n useState(AsyncStatus.STANDBY);\n\n // Any error of the async data being fetched\n const [proposalsInclusiveError, setProposalsInclusiveError] =\n useState();\n\n /**\n * Selectors\n */\n\n const contracts = useSelector((s: StoreState) => s.contracts);\n\n /**\n * Memo\n */\n\n const snapshotDraftAndProposalsIds: string[] = useMemo(\n () => snapshotDraftAndProposals.map((e) => e[0]),\n [snapshotDraftAndProposals]\n );\n\n /**\n * Our hooks\n */\n\n /**\n * Fetch DAO proposals, if there are `snapshotDraftAndProposals`.\n *\n * Dependent upon `snapshotDraftAndProposals`.\n */\n const {daoProposals, daoProposalsError, daoProposalsStatus} = useDaoProposals(\n snapshotDraftAndProposalsIds\n );\n\n /**\n * Fetch on-chain voting adapter data for proposals of which voting adapters have been assigned (i.e. sponsored).\n *\n * Dependent upon `daoProposals`.\n */\n const {\n proposalsVotingAdapters,\n proposalsVotingAdaptersError,\n proposalsVotingAdaptersStatus,\n } = useProposalsVotingAdapter(daoProposalIdsToUse);\n\n /**\n * Fetch on-chain voting state for proposals of which voting adapters have been assigned (i.e. sponsored).\n *\n * Dependent upon `useProposalsVotingAdapter`.\n */\n const {\n proposalsVotingState,\n proposalsVotingStateError,\n proposalsVotingStateStatus,\n } = useProposalsVotingState(proposalsVotingAdapters);\n\n /**\n * Fetch on-chain votes data for proposals of which voting adapters have been assigned (i.e. sponsored)\n *\n * Dependent upon `useProposalsVotingAdapter`.\n */\n const {proposalsVotes, proposalsVotesError, proposalsVotesStatus} =\n useProposalsVotes(proposalsVotingAdapters);\n\n /**\n * Effects\n */\n\n // Get and set the adapter address\n useEffect(() => {\n // @note We don't use the helper function as we don't want it to throw here.\n const address = Object.entries(contracts).find(\n ([_, c]) => c?.adapterOrExtensionName === adapterName\n )?.[1]?.contractAddress;\n\n setAdapterAddress(address);\n }, [adapterAddress, adapterName, contracts]);\n\n // Get and set all Snapshot drafts and proposal entries\n useEffect(() => {\n if (!adapterAddress) return;\n\n handleGetAllSnapshotDraftsAndProposals(adapterAddress);\n }, [adapterAddress]);\n\n // Set the DAO proposal IDs we want to work with\n useEffect(() => {\n if (!daoProposals.length) return;\n\n if (includeProposalsExistingOnlyOffchain) {\n // Do not filter-out proposals which exist only off-chain\n return setDaoProposalIdsToUse(daoProposals.map(([id]) => id));\n }\n\n // Filter-out proposals which do not exist onchain\n return setDaoProposalIdsToUse(\n daoProposals.filter(([_, p]) => p.flags !== '0').map(([id]) => id)\n );\n }, [daoProposals, includeProposalsExistingOnlyOffchain]);\n\n // Set `proposals` with any returned data, once overall `AsyncStatus` equals `FULFILLED`\n useEffect(() => {\n if (proposalsInclusiveStatus !== AsyncStatus.FULFILLED) {\n return;\n }\n\n const proposalsToSet = daoProposalIdsToUse\n .map((id): ProposalData => {\n const [, daoProposal] =\n daoProposals.find(\n ([daoProposalId]) =>\n normalizeString(daoProposalId) === normalizeString(id)\n ) || [];\n\n const [snapshotDataId, snapshotData] =\n snapshotDraftAndProposals.find(\n ([snapshotId]) =>\n normalizeString(snapshotId) === normalizeString(id)\n ) || [];\n\n const isSnapshotDraft: boolean =\n snapshotData?.msg.type === SnapshotType.draft;\n\n const snapshotDraft: SnapshotDraft | undefined =\n snapshotDataId && isSnapshotDraft\n ? {\n ...(snapshotData as SnapshotDraft),\n // @todo Rename to `idForDAO` as it is more accurate, as the ID may not yet exist in the DAO.\n idInDAO: id,\n idInSnapshot: snapshotDataId,\n }\n : undefined;\n\n const snapshotProposal: SnapshotProposal | undefined =\n snapshotDataId && !isSnapshotDraft\n ? {\n ...(snapshotData as SnapshotProposal),\n // @todo Rename to `idForDAO` as it is more accurate, as the ID may not yet exist in the DAO.\n idInDAO: id,\n idInSnapshot: snapshotDataId,\n }\n : undefined;\n\n const daoProposalVotingAdapter = proposalsVotingAdapters.find(\n ([proposalIdVotingAdapter]) =>\n normalizeString(proposalIdVotingAdapter) === normalizeString(id)\n )?.[1];\n\n const daoProposalVotingState = proposalsVotingState.find(\n ([proposalIdVotingState]) =>\n normalizeString(proposalIdVotingState) === normalizeString(id)\n )?.[1];\n\n const daoProposalVote = proposalsVotes.find(\n ([proposalIdVotes]) =>\n normalizeString(id) === normalizeString(proposalIdVotes)\n )?.[1];\n\n return {\n daoProposal,\n daoProposalVote,\n daoProposalVotingAdapter,\n daoProposalVotingState,\n /**\n * @todo Work to remove `idInDAO` on the root. Don't think we use this?\n */\n idInDAO: id,\n snapshotDraft,\n snapshotProposal,\n snapshotType: isSnapshotDraft\n ? SnapshotType.draft\n : SnapshotType.proposal,\n\n // @todo Make type optional\n getCommonSnapshotProposalData: () => undefined,\n // @todo Make type optional\n refetchProposalOrDraft: () => {},\n };\n })\n .filter((p) => p.snapshotDraft || p.snapshotProposal);\n\n // Set proposals\n setProposals(proposalsToSet);\n }, [\n daoProposalIdsToUse,\n daoProposals,\n proposalsInclusiveStatus,\n proposalsVotes,\n proposalsVotingAdapters,\n proposalsVotingState,\n snapshotDraftAndProposals,\n ]);\n\n // Set overall async status\n useEffect(() => {\n const {STANDBY, PENDING, FULFILLED, REJECTED} = AsyncStatus;\n\n const statuses = [\n daoProposalsStatus,\n proposalsVotingAdaptersStatus,\n proposalsVotingStateStatus,\n proposalsVotesStatus,\n snapshotDraftAndProposalsStatus,\n ];\n\n /**\n * Standby\n *\n * The other statuses rely on Snapshot drafts and proposals being fetched,\n * so it's only in `STANDBY` at the point the Snapshot data has\n * not yet been fetched.\n */\n if (snapshotDraftAndProposalsStatus === STANDBY) {\n setProposalsInclusiveStatus(STANDBY);\n\n return;\n }\n\n // Pending\n if (statuses.some((s) => s === PENDING)) {\n setProposalsInclusiveStatus(PENDING);\n\n return;\n }\n\n // Fulfilled\n if (statuses.every((s) => s === FULFILLED)) {\n setProposalsInclusiveStatus(FULFILLED);\n\n return;\n }\n\n /**\n * Fulfilled: no `snapshotDraftAndProposals` were found.\n *\n * Since the other data-fetching hooks rely on `snapshotDraftAndProposals`\n * their statuses will be in `STANDBY` if `snapshotDraftAndProposals` is empty.\n */\n if (\n snapshotDraftAndProposalsStatus === FULFILLED &&\n !snapshotDraftAndProposals.length\n ) {\n setProposalsInclusiveStatus(FULFILLED);\n\n return;\n }\n\n /**\n * Fulfilled: No data was returned after running `useProposalsVotingAdapter`.\n *\n * The hooks `useProposalsVotingState`, `useProposalsVotes` are dependent upon `proposalsVotingAdapters`,\n * so if there is no data, at this point, it's safe to return `FULFILLED`.\n */\n if (\n proposalsVotingAdaptersStatus === FULFILLED &&\n !proposalsVotingAdapters.length\n ) {\n setProposalsInclusiveStatus(FULFILLED);\n\n return;\n }\n\n // Rejected\n if (statuses.some((s) => s === REJECTED)) {\n setProposalsInclusiveStatus(REJECTED);\n\n return;\n }\n }, [\n daoProposalIdsToUse.length,\n daoProposalsStatus,\n proposalsVotesStatus,\n proposalsVotingAdapters,\n proposalsVotingAdaptersStatus,\n proposalsVotingStateStatus,\n snapshotDraftAndProposals.length,\n snapshotDraftAndProposalsStatus,\n ]);\n\n // Set any error from async calls\n useEffect(() => {\n setProposalsInclusiveError(\n [\n daoProposalsError,\n proposalsVotesError,\n proposalsVotingAdaptersError,\n proposalsVotingStateError,\n snapshotDraftAndProposalsError,\n ].find((e) => e)\n );\n }, [\n daoProposalsError,\n proposalsVotesError,\n proposalsVotingAdaptersError,\n proposalsVotingStateError,\n snapshotDraftAndProposalsError,\n ]);\n\n /**\n * Functions\n */\n\n async function handleGetAllSnapshotDraftsAndProposals(\n adapterAddress: string\n ) {\n try {\n setSnapshotDraftAndProposalsStatus(AsyncStatus.PENDING);\n // Reset error\n setSnapshotDraftAndProposalsError(undefined);\n\n const snapshotDraftEntries = await getSnapshotDraftsByAdapterAddress(\n adapterAddress\n );\n\n const snapshotProposalEntries =\n await getSnapshotProposalsByAdapterAddress(adapterAddress);\n\n const mergedEntries = [\n ...snapshotDraftEntries,\n ...snapshotProposalEntries,\n ];\n\n if (!mergedEntries.length) {\n setSnapshotDraftAndProposalsStatus(AsyncStatus.FULFILLED);\n\n return;\n }\n\n setSnapshotDraftAndProposals(mergedEntries);\n setSnapshotDraftAndProposalsStatus(AsyncStatus.FULFILLED);\n } catch (error) {\n setSnapshotDraftAndProposalsStatus(AsyncStatus.REJECTED);\n setSnapshotDraftAndProposals(INITIAL_ARRAY);\n setSnapshotDraftAndProposalsError(error);\n }\n }\n\n return {\n proposals,\n proposalsError: proposalsInclusiveError,\n proposalsStatus: proposalsInclusiveStatus,\n };\n}\n","import {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {AbiItem} from 'web3-utils/types';\n\nimport {AsyncStatus} from '../../../util/types';\nimport {multicall, MulticallTuple} from '../../web3/helpers';\nimport {ProposalVotesData, ProposalVotingAdapterTuple} from '../types';\nimport {StoreState} from '../../../store/types';\nimport {useWeb3Modal} from '../../web3/hooks';\nimport {VotingAdapterName} from '../../adapters-extensions/enums';\n\ntype ProposalsVotesTuple = [\n proposalId: string,\n /**\n * For each proposal, each result is stored under its adapter name.\n */\n adapterData: ProposalVotesData\n];\n\ntype UseProposalsVotesReturn = {\n proposalsVotes: ProposalsVotesTuple[];\n proposalsVotesError: Error | undefined;\n proposalsVotesStatus: AsyncStatus;\n};\n\nexport function useProposalsVotes(\n /**\n * A tuple of proposal id's and voting adapter data.\n * This data is returned by `useProposalsVotingAdapter`.\n */\n proposalVotingAdapters: ProposalVotingAdapterTuple[]\n): UseProposalsVotesReturn {\n /**\n * Selectors\n */\n\n const registryAddress = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.contractAddress\n );\n const registryABI = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.abi\n );\n\n /**\n * Our hooks\n */\n\n const {web3Instance} = useWeb3Modal();\n\n /**\n * State\n */\n\n const [proposalsVotes, setProposalsVotes] = useState(\n []\n );\n const [proposalsVotesError, setProposalsVotesError] = useState();\n const [proposalsVotesStatus, setProposalsVotesStatus] = useState(\n AsyncStatus.STANDBY\n );\n\n /**\n * Cached callbacks\n */\n\n const getProposalsVotesOnchainCached = useCallback(getProposalsVotesOnchain, [\n proposalVotingAdapters,\n registryABI,\n registryAddress,\n web3Instance,\n ]);\n\n /**\n * Effects\n */\n\n useEffect(() => {\n getProposalsVotesOnchainCached();\n }, [getProposalsVotesOnchainCached]);\n\n /**\n * Functions\n */\n\n async function getProposalsVotesOnchain() {\n if (\n !proposalVotingAdapters.length ||\n !registryABI ||\n !registryAddress ||\n !web3Instance\n ) {\n return;\n }\n\n // Only use hex (more specifically `bytes32`) id's\n const safeProposalVotingAdapters = proposalVotingAdapters.filter(([id]) =>\n web3Instance.utils.isHexStrict(id)\n );\n\n if (!safeProposalVotingAdapters.length) {\n setProposalsVotesStatus(AsyncStatus.FULFILLED);\n setProposalsVotes([]);\n\n return;\n }\n\n try {\n setProposalsVotesStatus(AsyncStatus.PENDING);\n\n // Build votes results\n const votesDataCalls: MulticallTuple[] = await Promise.all(\n safeProposalVotingAdapters.map(\n async ([\n proposalId,\n {votingAdapterAddress, getVotingAdapterABI, votingAdapterName},\n ]): Promise => [\n votingAdapterAddress,\n await getVotesDataABI(votingAdapterName, getVotingAdapterABI()),\n /**\n * We build the call arguments the same way for the different voting adapters\n * (i.e. [dao, proposalId]). If we need to change this we can move it to another function.\n */\n [registryAddress, proposalId],\n ]\n )\n );\n\n const votesDataResults = await multicall({\n calls: votesDataCalls,\n web3Instance,\n });\n\n setProposalsVotesStatus(AsyncStatus.FULFILLED);\n setProposalsVotes(\n safeProposalVotingAdapters.map(\n ([proposalId, {votingAdapterName}], i) => [\n proposalId,\n {\n [votingAdapterName]: votesDataResults[i],\n },\n ]\n )\n );\n } catch (error) {\n setProposalsVotesStatus(AsyncStatus.REJECTED);\n setProposalsVotes([]);\n setProposalsVotesError(error);\n }\n }\n\n /**\n * getVotesDataABI\n *\n * Gets the ABI for the public mapping getter of voting data.\n *\n * @param {VotingAdapterName} votingAdapterName\n * @returns {Promise}\n */\n async function getVotesDataABI(\n votingAdapterName: VotingAdapterName,\n votingAdapterABI: AbiItem[]\n ): Promise {\n try {\n switch (votingAdapterName) {\n case VotingAdapterName.OffchainVotingContract:\n const offchainVotesDataABI = votingAdapterABI.find(\n (ai) => ai.name === 'votes'\n );\n\n if (!offchainVotesDataABI) {\n throw new Error(\n `No \"votes\" function ABI was found for \"${votingAdapterName}\".`\n );\n }\n\n return offchainVotesDataABI;\n\n case VotingAdapterName.VotingContract:\n const votingVotesDataABI = votingAdapterABI.find(\n (ai) => ai.name === 'votes'\n );\n\n if (!votingVotesDataABI) {\n throw new Error(\n `No \"votes\" function ABI was found for \"${votingAdapterName}\".`\n );\n }\n\n return votingVotesDataABI;\n\n default:\n throw new Error(\n `No voting adapter name was found for \"${votingAdapterName}\".`\n );\n }\n } catch (error) {\n throw error;\n }\n }\n\n return {\n proposalsVotes,\n proposalsVotesError,\n proposalsVotesStatus,\n };\n}\n","import {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {AbiItem} from 'web3-utils/types';\n\nimport {AsyncStatus} from '../../../util/types';\nimport {multicall, MulticallTuple} from '../../web3/helpers';\nimport {ProposalVotingAdapterTuple} from '../types';\nimport {StoreState} from '../../../store/types';\nimport {useWeb3Modal} from '../../web3/hooks';\nimport {VotingState} from '../voting/types';\n\ntype ProposalsVotingStateTuples = [\n proposalId: string,\n votingState: VotingState\n][];\n\ntype UseProposalsVotingStateReturn = {\n proposalsVotingState: ProposalsVotingStateTuples;\n proposalsVotingStateError: Error | undefined;\n proposalsVotingStateStatus: AsyncStatus;\n};\n\nexport function useProposalsVotingState(\n /**\n * A tuple of proposal id's and voting adapter data.\n * This data is returned by `useProposalsVotingAdapter`.\n */\n proposalVotingAdapters: ProposalVotingAdapterTuple[]\n): UseProposalsVotingStateReturn {\n /**\n * Selectors\n */\n\n const registryAddress = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.contractAddress\n );\n\n /**\n * Our hooks\n */\n\n const {web3Instance} = useWeb3Modal();\n\n /**\n * State\n */\n\n const [proposalsVotingState, setProposaslsVotingState] =\n useState([]);\n\n const [proposalsVotingStateError, setProposalsVotingStateError] =\n useState();\n\n const [proposalsVotingStateStatus, setProposalsVotingStateStatus] =\n useState(AsyncStatus.STANDBY);\n\n /**\n * Cached callbacks\n */\n\n const getProposalsVotingStateOnchainCached = useCallback(\n getProposalsVotingStateOnchain,\n [proposalVotingAdapters, registryAddress, web3Instance]\n );\n\n /**\n * Effects\n */\n\n useEffect(() => {\n getProposalsVotingStateOnchainCached();\n }, [getProposalsVotingStateOnchainCached]);\n\n /**\n * Functions\n */\n\n async function getProposalsVotingStateOnchain() {\n if (!registryAddress || !proposalVotingAdapters.length || !web3Instance) {\n return;\n }\n\n // Only use hex (more specifically `bytes32`) id's\n const safeProposalVotingAdapters = proposalVotingAdapters.filter(([id]) =>\n web3Instance.utils.isHexStrict(id)\n );\n\n if (!safeProposalVotingAdapters.length) {\n setProposalsVotingStateStatus(AsyncStatus.FULFILLED);\n\n return;\n }\n\n try {\n const lazyIVotingABI = (\n await import('../../../truffle-contracts/IVoting.json')\n ).default as AbiItem[];\n\n const votingResultAbi = lazyIVotingABI.find(\n (ai) => ai.name === 'voteResult'\n );\n\n if (!votingResultAbi) {\n throw new Error(\n 'No \"voteResult\" ABI function was found on the \"IVoting\" contract.'\n );\n }\n\n const calls: MulticallTuple[] = safeProposalVotingAdapters.map(\n ([proposalId, {votingAdapterAddress}]) => [\n votingAdapterAddress,\n votingResultAbi,\n [registryAddress, proposalId],\n ]\n );\n\n setProposalsVotingStateStatus(AsyncStatus.PENDING);\n\n const proposalsVotingStateResult = await multicall({\n calls,\n web3Instance,\n });\n\n setProposalsVotingStateStatus(AsyncStatus.FULFILLED);\n setProposaslsVotingState(\n safeProposalVotingAdapters.map(([proposalId], i) => [\n proposalId,\n proposalsVotingStateResult[i],\n ])\n );\n } catch (error) {\n setProposalsVotingStateStatus(AsyncStatus.REJECTED);\n setProposaslsVotingState([]);\n setProposalsVotingStateError(error);\n }\n }\n\n return {\n proposalsVotingState,\n proposalsVotingStateError,\n proposalsVotingStateStatus,\n };\n}\n","import {useSelector} from 'react-redux';\nimport {useCallback, useEffect, useRef, useState} from 'react';\nimport {isAddress} from 'web3-utils';\n\nimport {\n ProposalFlowStatus,\n ProposalData,\n ProposalFlag,\n OffchainVotingAdapterVote,\n} from '../types';\nimport {BURN_ADDRESS} from '../../../util/constants';\nimport {ENVIRONMENT} from '../../../config';\nimport {multicall, MulticallTuple} from '../../web3/helpers';\nimport {normalizeString} from '../../../util/helpers';\nimport {proposalHasFlag} from '../helpers';\nimport {StoreState} from '../../../store/types';\nimport {useTimeStartEnd} from '../../../hooks';\nimport {useWeb3Modal} from '../../web3/hooks';\nimport {VotingState} from '../voting/types';\n\ntype UseProposalWithOffchainVoteStatusReturn = {\n daoProposal: {adapterAddress: string; flags: number} | undefined;\n daoProposalVote: OffchainVotingAdapterVote | undefined;\n /**\n * An enum name (`string`) of the DAO proposal's `VotingState` index\n */\n daoProposalVoteResult: typeof VotingState[any] | undefined;\n proposalFlowStatusError: Error | undefined;\n status: ProposalFlowStatus | undefined;\n stopPollingForStatus: () => void;\n};\n\ntype UseProposalWithOffchainVoteStatusProps = {\n /**\n * Voting start time if `useCountdownToCheckInVoting: true`\n * i.e. calculated from the `OffchainVoting` contract's vote's start time, or Snapshot proposal's start time.\n *\n * If not available and/or determined, use `0`.\n */\n countdownVotingStartSeconds?: number;\n /**\n * Voting end time if `useCountdownToCheckInVoting: true`\n * i.e. calculated from the `OffchainVoting` contract's vote's end time, or Snapshot proposal's end time\n *\n * If not available and/or determined, use `0`.\n */\n countdownVotingEndSeconds?: number;\n proposal: ProposalData;\n /**\n * Defaults to `DEFAULT_POLL_INTERVAL_MS`:\n * - Production: 15000ms\n * - Development: 5000ms\n */\n pollInterval?: number;\n /**\n * If `true` \"in voting\" will be determined by an internal timer using\n * `countdownVotingStartSeconds` and `countdownVotingEndSeconds`, and not by the\n * contract's `VotingState`.\n */\n useCountdownToCheckInVoting?: boolean;\n};\n\nconst {\n Completed,\n OffchainVotingGracePeriod,\n OffchainVotingSubmitResult,\n OffchainVoting,\n Process,\n Sponsor,\n Submit,\n} = ProposalFlowStatus;\n\nconst DEFAULT_POLL_INTERVAL_MS: number =\n ENVIRONMENT === 'production' ? 15000 : 5000;\n\n/**\n * Derives where in the \"proposal flow\" a proposal currently is.\n *\n * Most flow states are derived from the contract.\n * Determing whether a proposal is in voting works a bit differently, depending\n * on which vote start and end times are to be used (i.e. Snapshot proposal vs. Contract proposal).\n *\n * Therefore, we pass these two timing values as props to be more agnostic.\n *\n * @param UseProposalWithOffchainVoteStatusProps\n * @returns `UseProposalWithOffchainVoteStatusReturn`\n */\nexport function useProposalWithOffchainVoteStatus({\n countdownVotingEndSeconds = 0,\n countdownVotingStartSeconds = 0,\n pollInterval = DEFAULT_POLL_INTERVAL_MS,\n proposal,\n useCountdownToCheckInVoting = false,\n}: UseProposalWithOffchainVoteStatusProps): UseProposalWithOffchainVoteStatusReturn {\n /**\n * Selectors\n */\n\n const {web3Instance} = useWeb3Modal();\n\n const daoRegistryAddress = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.contractAddress\n );\n\n const daoRegistryABI = useSelector(\n (s: StoreState) => s.contracts.DaoRegistryContract?.abi\n );\n\n /**\n * State\n */\n\n const [status, setStatus] = useState();\n\n const [initComplete, setInitComplete] = useState(false);\n\n const [daoProposal, setDAOProposal] =\n useState();\n\n const [daoProposalVote, setDAOProposalVote] =\n useState();\n\n const [daoProposalVoteResult, setDAOProposalVoteResult] =\n useState<\n UseProposalWithOffchainVoteStatusReturn['daoProposalVoteResult']\n >();\n\n const [proposalFlowStatusError, setProposalFlowStatusError] =\n useState();\n\n /**\n * Refs\n */\n\n const pollingIntervalIdRef = useRef();\n const stopPollingRef = useRef(false);\n\n /**\n * Our hooks\n */\n\n const {\n hasTimeStarted: hasVotingStarted,\n hasTimeEnded: hasVotingEnded,\n timeStartEndInitReady,\n } = useTimeStartEnd(countdownVotingStartSeconds, countdownVotingEndSeconds);\n\n /**\n * Variables\n */\n\n const initialAsyncChecksCompleted: boolean =\n initComplete &&\n (useCountdownToCheckInVoting ? timeStartEndInitReady : true);\n\n const {daoProposalVotingAdapter, snapshotDraft, snapshotProposal} = proposal;\n const proposalId = snapshotDraft?.idInDAO || snapshotProposal?.idInDAO;\n\n const atExistsInDAO = daoProposal\n ? proposalHasFlag(ProposalFlag.EXISTS, daoProposal.flags)\n : false;\n\n const atSponsoredInDAO = daoProposal\n ? proposalHasFlag(ProposalFlag.SPONSORED, daoProposal.flags)\n : false;\n\n const atProcessedInDAO = daoProposal\n ? proposalHasFlag(ProposalFlag.PROCESSED, daoProposal.flags)\n : false;\n\n const offchainVotingAddress = daoProposalVotingAdapter?.votingAdapterAddress;\n const offchainVotingABI = daoProposalVotingAdapter?.getVotingAdapterABI();\n\n /**\n * Check if vote result was submitted.\n * We can do this by checking if `reporter` and `resultRoot` has been set.\n *\n * @see `submitVoteResult` in tribute-contracts off-chain voting adapters\n */\n const offchainResultSubmitted: boolean =\n isAddress(daoProposalVote?.reporter || '') &&\n normalizeString(daoProposalVote?.reporter || '') !== BURN_ADDRESS;\n\n const isInVotingFromTimer: boolean = hasVotingStarted && !hasVotingEnded;\n\n const isInVoting: boolean = useCountdownToCheckInVoting\n ? isInVotingFromTimer\n : VotingState[daoProposalVoteResult || ''] ===\n VotingState[VotingState.IN_PROGRESS];\n\n const isInVotingGracePeriod: boolean =\n VotingState[daoProposalVoteResult || ''] ===\n VotingState[VotingState.GRACE_PERIOD];\n\n /**\n * Cached callbacks\n */\n\n const getStatusFromContractCached = useCallback(getStatusFromContract, [\n daoProposalVotingAdapter,\n daoRegistryABI,\n daoRegistryAddress,\n offchainVotingABI,\n offchainVotingAddress,\n proposalId,\n web3Instance,\n ]);\n\n /**\n * Effects\n */\n\n // Get status as soon as possible.\n useEffect(() => {\n if (initComplete) {\n return;\n }\n\n getStatusFromContractCached().catch((error) => {\n setProposalFlowStatusError(error);\n });\n }, [getStatusFromContractCached, initComplete]);\n\n // Poll for status, etc.\n useEffect(() => {\n /**\n * Stop polling if processed:\n * Set our ref to be accessed inside of the polling interval callback\n */\n if (atProcessedInDAO) {\n stopPollingRef.current = true;\n }\n\n // Clear any previous intervals\n handleStopPollingForStatus();\n\n // Then, poll every `x` Ms\n const intervalId = setInterval(async () => {\n try {\n if (stopPollingRef.current) {\n handleStopPollingForStatus();\n }\n\n await getStatusFromContractCached();\n } catch (error) {\n handleStopPollingForStatus();\n\n setProposalFlowStatusError(error);\n }\n }, pollInterval);\n\n pollingIntervalIdRef.current = intervalId;\n }, [atProcessedInDAO, pollInterval, getStatusFromContractCached]);\n\n // Stop polling if propsal is processed, or on unmount.\n useEffect(() => {\n if (atProcessedInDAO) {\n handleStopPollingForStatus();\n }\n\n // Cleanup polling on unmount\n return function cleanup() {\n handleStopPollingForStatus();\n };\n }, [atProcessedInDAO]);\n\n // Determine the `status`\n useEffect(() => {\n // Status: cannot yet be determined\n if (!initialAsyncChecksCompleted) {\n setStatus(undefined);\n\n return;\n }\n\n const isStatusInitial: boolean = status === undefined;\n\n // Status: Submit\n if (\n !atExistsInDAO &&\n !atSponsoredInDAO &&\n !atProcessedInDAO &&\n (status === Submit || isStatusInitial)\n ) {\n setStatus(Submit);\n\n return;\n }\n\n /**\n * Status: Sponsor\n *\n * This may never occur for many adapter's proposals as submit and sponsor\n * take place in 1 transaction.\n */\n if (\n atExistsInDAO &&\n !isInVoting &&\n (status === Submit || isStatusInitial)\n ) {\n setStatus(Sponsor);\n\n return;\n }\n\n // Status: Off-Chain Voting\n if (\n atSponsoredInDAO &&\n isInVoting &&\n !offchainResultSubmitted &&\n (status === Submit || status === Sponsor || isStatusInitial)\n ) {\n setStatus(OffchainVoting);\n\n return;\n }\n\n // Status: Ready to Submit Vote Result\n if (\n atSponsoredInDAO &&\n !isInVoting &&\n !offchainResultSubmitted &&\n (status === OffchainVoting || isStatusInitial)\n ) {\n setStatus(OffchainVotingSubmitResult);\n\n return;\n }\n\n // Status: Grace period\n if (\n atSponsoredInDAO &&\n !isInVoting &&\n offchainResultSubmitted &&\n isInVotingGracePeriod &&\n (status === OffchainVotingSubmitResult || isStatusInitial)\n ) {\n setStatus(OffchainVotingGracePeriod);\n\n return;\n }\n\n // Status: Process\n if (\n atSponsoredInDAO &&\n !isInVoting &&\n offchainResultSubmitted &&\n !isInVotingGracePeriod &&\n (status === OffchainVotingGracePeriod || isStatusInitial)\n ) {\n setStatus(Process);\n\n return;\n }\n\n // Status: Processed (completed)\n if (atProcessedInDAO && (status === Process || isStatusInitial)) {\n setStatus(Completed);\n\n return;\n }\n }, [\n atExistsInDAO,\n atProcessedInDAO,\n atSponsoredInDAO,\n status,\n initialAsyncChecksCompleted,\n isInVoting,\n isInVotingGracePeriod,\n offchainResultSubmitted,\n ]);\n\n /**\n * Functions\n */\n\n async function getStatusFromContract(): Promise<\n | Partial<{\n proposal: typeof daoProposal;\n voteResult: typeof daoProposalVoteResult;\n votes: typeof daoProposalVote;\n }>\n | undefined\n > {\n try {\n if (\n !daoRegistryABI ||\n !daoRegistryAddress ||\n !proposalId ||\n !web3Instance\n ) {\n return;\n }\n\n const proposalsABI = daoRegistryABI.filter(\n (item) => item.name === 'proposals'\n )[0];\n\n /**\n * If there is no voting adapter (i.e. the proposal is not yet sponsored)\n * then only call the DAO for the proposal data and exit early.\n */\n if (!daoProposalVotingAdapter) {\n const [proposal] = await multicall({\n calls: [\n // DAO proposals call\n [daoRegistryAddress, proposalsABI, [proposalId]],\n ],\n web3Instance,\n });\n\n setDAOProposal(proposal);\n // Set last\n setInitComplete(true);\n\n return proposal;\n }\n\n if (!offchainVotingABI || !offchainVotingAddress) return;\n\n const voteResultABI = offchainVotingABI.filter(\n (item) => item.name === 'voteResult'\n )[0];\n\n const voteABI = offchainVotingABI.filter(\n (item) => item.name === 'votes'\n )[0];\n\n const calls: MulticallTuple[] = [\n // DAO proposals call\n [daoRegistryAddress, proposalsABI, [proposalId]],\n // Vote data call\n [offchainVotingAddress, voteABI, [daoRegistryAddress, proposalId]],\n // Vote result (state) call\n [\n offchainVotingAddress,\n voteResultABI,\n [daoRegistryAddress, proposalId],\n ],\n ];\n\n const [proposal, votes, voteResult] = await multicall({\n calls,\n web3Instance,\n });\n\n setDAOProposal(proposal);\n setDAOProposalVote(votes);\n setDAOProposalVoteResult(voteResult);\n // Set last\n setInitComplete(true);\n\n return {\n proposal,\n voteResult,\n votes,\n };\n } catch (error) {\n throw error;\n }\n }\n\n function handleStopPollingForStatus() {\n if (pollingIntervalIdRef.current) {\n clearInterval(pollingIntervalIdRef.current);\n\n pollingIntervalIdRef.current = undefined;\n }\n }\n\n /**\n * Return\n */\n\n return {\n daoProposal,\n daoProposalVote,\n daoProposalVoteResult,\n proposalFlowStatusError,\n status,\n stopPollingForStatus: handleStopPollingForStatus,\n };\n}\n","import {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n buildVoteMessage,\n getDomainDefinition,\n getSpace,\n prepareVoteMessage,\n signMessage,\n SnapshotMessageVote,\n SnapshotSubmitBaseReturn,\n SnapshotType,\n SnapshotVoteData,\n SnapshotVoteProposal,\n submitMessage,\n VoteChoicesIndex,\n} from '@openlaw/snapshot-js-erc712';\n\nimport {BURN_ADDRESS} from '../../../util/constants';\nimport {ContractAdapterNames, Web3TxStatus} from '../../web3/types';\nimport {DEFAULT_CHAIN, SNAPSHOT_HUB_API_URL, SPACE} from '../../../config';\nimport {getAdapterAddressFromContracts} from '../../web3/helpers';\nimport {PRIMARY_TYPE_ERC712} from '../../web3/config';\nimport {StoreState} from '../../../store/types';\nimport {useWeb3Modal} from '../../web3/hooks/useWeb3Modal';\n\ntype SignAndSendVoteDataParam = {\n choice: SnapshotMessageVote['choice'];\n metadata?: Record;\n};\n\ntype UseSignAndSendVoteReturn = {\n signAndSendVote: (data: {\n partialVoteData: SignAndSendVoteDataParam;\n // e.g. Governance does not have an adpater name\n adapterName?: ContractAdapterNames;\n proposalIdInDAO: SnapshotVoteData['payload']['proposalId'];\n proposalIdInSnapshot: string;\n }) => Promise;\n voteData: SignAndSendVoteReturn | undefined;\n voteDataError: Error | undefined;\n voteDataStatus: Web3TxStatus;\n};\n\ntype SignAndSendVoteReturn = {\n data: SnapshotVoteData;\n signature: string;\n uniqueId: SnapshotSubmitBaseReturn['uniqueId'];\n};\n\n/**\n * useSignAndSendVote\n *\n * React hook which prepares proposal data for submission\n * to Snapshot and Tribute and signs it (ERC712)\n *\n * @returns {Promise} An object with the proposal data and the ERC712 signature string.\n */\nexport function useSignAndSendVote(): UseSignAndSendVoteReturn {\n /**\n * Selectors\n */\n\n const daoRegistryAddress = useSelector(\n (state: StoreState) => state.contracts.DaoRegistryContract?.contractAddress\n );\n\n const contracts = useSelector((s: StoreState) => s.contracts);\n\n const memberAddress = useSelector(\n (s: StoreState) => s.connectedMember?.memberAddress\n );\n\n /**\n * Our hooks\n */\n\n const {account, provider, web3Instance} = useWeb3Modal();\n\n /**\n * State\n */\n\n const [voteData, setVoteData] = useState();\n const [voteDataError, setVoteDataError] = useState();\n const [voteDataStatus, setVoteDataStatus] = useState(\n Web3TxStatus.STANDBY\n );\n\n /**\n * Functions\n */\n\n /**\n * signAndSendVote\n *\n * Builds the vote data for submission to Snapshot and signs it (ERC712).\n *\n * @param {SignAndSendVoteDataParam}\n * @param {adapterName} ContractAdapterNames - An adapter's contract address this data is related to.\n * @note Does not accept voting adapter names.\n * @param {SnapshotVoteData['payload']['proposalHash']} proposalHash - The unique hash of the proposal from snapshot-hub.\n * @returns {Promise} An object with the vote data and the ERC712 signature string.\n */\n async function signAndSendVote({\n partialVoteData,\n adapterName,\n proposalIdInDAO,\n proposalIdInSnapshot,\n }: {\n partialVoteData: SignAndSendVoteDataParam;\n // e.g. Governance does not have an adpater name\n adapterName?: ContractAdapterNames;\n /**\n * This is the hash of the content as submitted to the DAO.\n * The hash should be the same as the Snapshot draft's, or\n * proposal's (if not submitted as a draft), ID.\n *\n * We need to make sure this matches what has been submitted to\n * the DAO for later signature verifications.\n */\n proposalIdInDAO: SnapshotVoteData['payload']['proposalId'];\n /**\n * Must match a `proposal` type's ID in Snapshot so a `vote` may be attached.\n */\n proposalIdInSnapshot: string;\n }): Promise {\n try {\n if (!web3Instance) {\n throw new Error('No Web3 instance was found.');\n }\n\n if (!account) {\n throw new Error('No account was found.');\n }\n\n if (!memberAddress) {\n throw new Error('No member address was found.');\n }\n\n if (!daoRegistryAddress) {\n throw new Error('No \"DaoRegistry\" address was found.');\n }\n\n if (!SNAPSHOT_HUB_API_URL) {\n throw new Error('No \"SNAPSHOT_HUB_API_URL\" was found.');\n }\n\n if (!SPACE) {\n throw new Error('No Snapshot \"SPACE\" was found.');\n }\n\n setVoteDataStatus(Web3TxStatus.AWAITING_CONFIRM);\n\n const adapterAddress = adapterName\n ? getAdapterAddressFromContracts(adapterName, contracts)\n : BURN_ADDRESS;\n\n const {choice, metadata = {}} = partialVoteData;\n\n const {data: snapshotSpace} = await getSpace(SNAPSHOT_HUB_API_URL, SPACE);\n\n const voteData: SnapshotMessageVote = {\n chainId: DEFAULT_CHAIN,\n choice,\n metadata: {\n ...metadata,\n /**\n * Must be the true member's address for calculating voting power.\n * It's safest to use our helper Redux value `memberAddress: string`,\n * as it uses `OffchainVoting.memberAddressesByDelegatedKey`.\n */\n memberAddress,\n },\n };\n\n const voteProposalData: SnapshotVoteProposal = {\n proposalId: proposalIdInDAO,\n space: SPACE,\n token: snapshotSpace.token,\n };\n\n // 1. Check proposal type and get appropriate message\n const message = await buildVoteMessage(\n voteData,\n voteProposalData,\n SNAPSHOT_HUB_API_URL\n );\n\n const erc712Message = prepareVoteMessage({\n timestamp: message.timestamp,\n payload: {\n proposalId: message.payload.proposalId,\n choice: VoteChoicesIndex[choice],\n },\n });\n\n const {domain, types} = getDomainDefinition(\n {...erc712Message, type: SnapshotType.vote},\n daoRegistryAddress,\n adapterAddress,\n DEFAULT_CHAIN\n );\n\n const dataToSign = JSON.stringify({\n types: types,\n domain: domain,\n primaryType: PRIMARY_TYPE_ERC712,\n message: erc712Message,\n });\n\n const signature: string = await signMessage(\n provider,\n account,\n dataToSign\n );\n\n setVoteDataStatus(Web3TxStatus.PENDING);\n\n // 3. Send data to snapshot-hub\n const {data} = await submitMessage(\n SNAPSHOT_HUB_API_URL,\n account,\n {\n ...message,\n payload: {...message.payload, proposalId: proposalIdInSnapshot},\n },\n signature,\n {\n actionId: domain.actionId,\n chainId: domain.chainId,\n verifyingContract: domain.verifyingContract,\n message: erc712Message,\n }\n );\n\n const dataToReturn = {\n data: message,\n signature,\n uniqueId: data.uniqueId,\n };\n\n setVoteDataStatus(Web3TxStatus.FULFILLED);\n setVoteData(dataToReturn);\n\n return dataToReturn;\n } catch (error) {\n setVoteDataStatus(Web3TxStatus.REJECTED);\n setVoteDataError(error);\n\n throw error;\n }\n }\n\n return {\n signAndSendVote,\n voteData,\n voteDataError,\n voteDataStatus,\n };\n}\n","import {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n buildDraftMessage,\n buildProposalMessage,\n getDomainDefinition,\n getSpace,\n prepareDraftMessage,\n prepareProposalMessage,\n signMessage,\n SnapshotMessageBase,\n SnapshotMessageProposal,\n SnapshotProposalData,\n SnapshotSubmitBaseReturn,\n SnapshotSubmitProposalReturn,\n SnapshotType,\n submitMessage,\n} from '@openlaw/snapshot-js-erc712';\n\nimport {\n ContractAdapterNames,\n ContractDAOConfigKeys,\n Web3TxStatus,\n} from '../../web3/types';\nimport {DEFAULT_CHAIN, SNAPSHOT_HUB_API_URL, SPACE} from '../../../config';\nimport {\n getAdapterAddressFromContracts,\n getDAOConfigEntry,\n} from '../../web3/helpers';\nimport {PRIMARY_TYPE_ERC712} from '../../web3/config';\nimport {\n ProposalOrDraftSignDataFromType,\n ProposalOrDraftSnapshotType,\n} from '../types';\nimport {StoreState} from '../../../store/types';\nimport {useWeb3Modal} from '../../web3/hooks/useWeb3Modal';\nimport {BURN_ADDRESS} from '../../../util/constants';\n\ntype SignAndSendData = {\n partialProposalData: PrepareAndSignProposalDataParam;\n adapterAddress?: string;\n adapterName?: ContractAdapterNames;\n type: T;\n};\n\ntype PrepareAndSignProposalDataParam = {\n body: SnapshotProposalData['payload']['body'];\n name: SnapshotProposalData['payload']['name'];\n metadata: SnapshotProposalData['payload']['metadata'];\n /**\n * Helpful for Proposal types when hashes between created Drafts\n * and yet to be created Proposals need to match.\n */\n timestamp?: SnapshotProposalData['timestamp'];\n};\n\ntype UseSignAndSubmitProposalReturn = {\n signAndSendProposal: (\n d: SignAndSendData\n ) => Promise>;\n proposalData: SignAndSendProposalReturn | undefined;\n proposalSignAndSendError: Error | undefined;\n proposalSignAndSendStatus: Web3TxStatus;\n};\n\ntype SignAndSendProposalReturn = {\n data: ProposalOrDraftSignDataFromType;\n signature: string;\n uniqueId: SnapshotSubmitBaseReturn['uniqueId'];\n uniqueIdDraft: SnapshotSubmitProposalReturn['uniqueIdDraft'];\n};\n\n/**\n * useSignAndSubmitProposal\n *\n * React hook which prepares proposal data for submission\n * to Snapshot and Tribute and signs it (ERC712)\n *\n * @returns {Promise} An object with the proposal data and the ERC712 signature string.\n */\nexport function useSignAndSubmitProposal<\n T extends ProposalOrDraftSnapshotType\n>(): UseSignAndSubmitProposalReturn {\n /**\n * Selectors\n */\n\n const daoRegistryAddress = useSelector(\n (state: StoreState) => state.contracts.DaoRegistryContract?.contractAddress\n );\n const daoRegistryInstance = useSelector(\n (state: StoreState) => state.contracts.DaoRegistryContract?.instance\n );\n const contracts = useSelector((state: StoreState) => state.contracts);\n\n /**\n * Our hooks\n */\n\n const {account, provider, web3Instance} = useWeb3Modal();\n\n /**\n * State\n */\n\n const [proposalData, setProposalData] =\n useState>();\n const [proposalSignAndSendError, setProposalSignAndSendError] =\n useState();\n const [proposalSignAndSendStatus, setProposalSignAndSendStatus] =\n useState(Web3TxStatus.STANDBY);\n\n /**\n * Functions\n */\n\n /**\n * A wrapper to clearly separate the running of functions\n * specific to Proposals.\n *\n * @param {SnapshotMessageBase & Partial} commonData\n * @returns {Promise}\n */\n async function buildProposalMessageHelper(\n commonData: SnapshotMessageBase & Partial\n ): Promise {\n if (!SNAPSHOT_HUB_API_URL) {\n throw new Error('No \"SNAPSHOT_HUB_API_URL\" was found.');\n }\n\n if (!web3Instance) {\n throw new Error('No Web3 instance was found.');\n }\n\n const snapshot: number = await web3Instance.eth.getBlockNumber();\n\n const votingTimeSeconds: number = parseInt(\n await getDAOConfigEntry(\n ContractDAOConfigKeys.offchainVotingVotingPeriod,\n daoRegistryInstance\n )\n );\n\n return await buildProposalMessage(\n {\n ...commonData,\n votingTimeSeconds,\n snapshot,\n },\n SNAPSHOT_HUB_API_URL\n );\n }\n\n /**\n * signAndSendProposal\n *\n * Builds the proposal data for submission to Tribute and Snapshot and signs it (ERC712).\n *\n * @returns {Promise} An object with the proposal data, signature string, and propsal hash(es) from snapshot-hub.\n */\n async function signAndSendProposal({\n partialProposalData,\n adapterAddress,\n adapterName,\n type,\n }: SignAndSendData): Promise> {\n try {\n if (!account) {\n throw new Error('No account was found to send.');\n }\n\n if (!web3Instance) {\n throw new Error('No Web3 instance was found.');\n }\n\n if (!daoRegistryAddress) {\n throw new Error('No \"DaoRegistry\" address was found.');\n }\n\n if (!SNAPSHOT_HUB_API_URL) {\n throw new Error('No \"SNAPSHOT_HUB_API_URL\" was found.');\n }\n\n if (!SPACE) {\n throw new Error('No Snapshot \"SPACE\" was found.');\n }\n\n if (type !== SnapshotType.draft && type !== SnapshotType.proposal) {\n throw new Error('Handling for type \"vote\" is not implemented.');\n }\n\n setProposalSignAndSendStatus(Web3TxStatus.AWAITING_CONFIRM);\n\n const actionId = adapterAddress\n ? adapterAddress\n : adapterName\n ? getAdapterAddressFromContracts(adapterName, contracts)\n : BURN_ADDRESS;\n\n const {body, name, metadata, timestamp} = partialProposalData;\n\n const {data: snapshotSpace} = await getSpace(SNAPSHOT_HUB_API_URL, SPACE);\n\n const commonData: SnapshotMessageBase = {\n name,\n body,\n metadata,\n token: snapshotSpace.token,\n space: SPACE,\n };\n\n // 1. Check proposal type and prepare appropriate message\n const message = (\n type === SnapshotType.draft\n ? await buildDraftMessage(commonData, SNAPSHOT_HUB_API_URL)\n : await buildProposalMessageHelper({\n ...commonData,\n timestamp,\n })\n ) as ProposalOrDraftSignDataFromType;\n\n // 2. Prepare signing data. Snapshot and the contracts will verify this same data against the signature.\n const erc712Message =\n type === SnapshotType.draft\n ? prepareDraftMessage(message)\n : prepareProposalMessage(message as SnapshotProposalData);\n\n const {domain, types} = getDomainDefinition(\n {...erc712Message, type},\n daoRegistryAddress,\n actionId,\n DEFAULT_CHAIN\n );\n\n const dataToSign = JSON.stringify({\n types,\n domain,\n primaryType: PRIMARY_TYPE_ERC712,\n message: erc712Message,\n });\n\n // 3. Sign data\n const signature = await signMessage(provider, account, dataToSign);\n\n setProposalSignAndSendStatus(Web3TxStatus.PENDING);\n\n // 3. Send data to snapshot-hub\n const {data} = await submitMessage(\n SNAPSHOT_HUB_API_URL,\n account,\n message,\n signature,\n {\n actionId: domain.actionId,\n chainId: domain.chainId,\n verifyingContract: domain.verifyingContract,\n message: erc712Message,\n }\n );\n\n const dataToReturn = {\n data: message,\n signature,\n uniqueId: data.uniqueId,\n uniqueIdDraft: data.uniqueIdDraft || '',\n };\n\n setProposalSignAndSendStatus(Web3TxStatus.FULFILLED);\n setProposalData(dataToReturn);\n\n return dataToReturn;\n } catch (error) {\n setProposalSignAndSendStatus(Web3TxStatus.REJECTED);\n setProposalSignAndSendError(error);\n\n throw error;\n }\n }\n\n return {\n proposalData,\n proposalSignAndSendError,\n proposalSignAndSendStatus,\n signAndSendProposal,\n };\n}\n","type EtherscanURLProps = {\n url: string;\n isPending?: boolean;\n};\n\nexport default function EtherscanURL(props: EtherscanURLProps) {\n const {url, isPending = false} = props;\n\n return (\n \n \n {isPending ? 'view progress' : 'view transaction'}\n \n \n );\n}\n","export function calculateVotingTimeRanges({\n gracePeriodLength,\n gracePeriodStartingTime,\n votePeriodLength,\n voteStartingTime,\n}: {\n gracePeriodLength: string | undefined;\n gracePeriodStartingTime: string | undefined;\n votePeriodLength: string | undefined;\n voteStartingTime: string | undefined;\n}): {\n gracePeriodEndMs: number;\n gracePeriodStartMs: number;\n voteEndMs: number;\n voteStartMs: number;\n} {\n const MS_MULTIPLIER: number = 1000;\n const toNumber = (value: string | undefined): number => Number(value || 0);\n\n const gracePeriodStartMs: number =\n toNumber(gracePeriodStartingTime) * MS_MULTIPLIER;\n\n const voteStartMs: number = toNumber(voteStartingTime) * MS_MULTIPLIER;\n\n return {\n voteEndMs: voteStartMs + toNumber(votePeriodLength) * MS_MULTIPLIER,\n voteStartMs,\n gracePeriodEndMs:\n gracePeriodStartMs + toNumber(gracePeriodLength) * MS_MULTIPLIER,\n gracePeriodStartMs,\n };\n}\n","import {SNAPSHOT_HUB_API_URL, SPACE} from '../../../config';\nimport {SnapshotOffchainProofResponse} from '../voting/types';\n\n/**\n * getOffchainVotingProof\n *\n * Gets a Merkle hex root's steps from Snapshot Hub\n * for verification.\n *\n * @link https://github.com/openlawteam/snapshot-hub\n */\nexport async function getOffchainVotingProof(\n merkleRootHex: string\n): Promise {\n try {\n const response = await fetch(\n `${SNAPSHOT_HUB_API_URL}/api/${SPACE}/offchain_proof/${merkleRootHex}`\n );\n\n // Return empty if not found\n if (response.status === 404) {\n return undefined;\n }\n\n // Some other error occured\n if (!response.ok) {\n throw new Error(\n 'Something went wrong while getting the off-chain vote proof.'\n );\n }\n\n return await response.json();\n } catch (error) {\n throw error;\n }\n}\n","import {VoteChoicesIndex} from '@openlaw/snapshot-js-erc712';\n\nimport {normalizeString} from '../../../util/helpers';\nimport {SnapshotProposal} from '../types';\nimport {VoteChoices} from '../../web3/types';\n\nexport function getVoteChosen(\n votes: SnapshotProposal['votes'],\n account: string\n): VoteChoices | undefined {\n const voteEntry = (votes || []).find((ve) =>\n Object.entries(ve).find(\n ([address, _voteData]) =>\n normalizeString(address) === normalizeString(account || '')\n )\n );\n\n if (voteEntry) {\n const voteData = Object.entries(voteEntry)[0][1];\n const choice = voteData.msg.payload.choice;\n\n return choice === VoteChoicesIndex.Yes ? VoteChoices.Yes : VoteChoices.No;\n }\n\n return undefined;\n}\n","import {AbiItem} from 'web3-utils/types';\n\nimport {VotingAdapterName} from '../../adapters-extensions/enums';\n\n/**\n * getVotingAdapterABI\n *\n * Gets the ABI for a voting adapter by the adapter's adapter name.\n *\n * @param {VotingAdapterName} votingAdapterName\n * @returns {Promise}\n */\nexport async function getVotingAdapterABI(\n votingAdapterName: VotingAdapterName\n): Promise {\n try {\n switch (votingAdapterName) {\n // Off-chain optimistic rollup\n case VotingAdapterName.OffchainVotingContract:\n const {default: lazyOffchainVotingABI} = await import(\n '../../../truffle-contracts/OffchainVotingContract.json'\n );\n\n return lazyOffchainVotingABI as AbiItem[];\n\n // On-chain voting\n case VotingAdapterName.VotingContract:\n const {default: lazyVotingABI} = await import(\n '../../../truffle-contracts/VotingContract.json'\n );\n\n return lazyVotingABI as AbiItem[];\n\n default:\n throw new Error(\n `No voting adapter name was found for \"${votingAdapterName}\".`\n );\n }\n } catch (error) {\n throw error;\n }\n}\n","import {ProposalFlag} from '../types';\n\n/**\n * proposalHasFlag\n *\n * @param flagToCheck\n * @param daoProposalFlag\n * @returns {boolean}\n *\n * @see `ProposalFlag` `DaoRegistry.sol`\n * @see `getFlag` `DaoConstants.sol`\n * @see `setFlag` `DaoConstants.sol`\n */\nexport function proposalHasFlag(\n flagToCheck: ProposalFlag,\n daoProposalFlag: number | string\n): boolean {\n return flagToCheck === Math.log2(Number(daoProposalFlag) + 1) - 1;\n}\n","import {VotingState} from '../voting/types';\n\nexport function proposalHasVotingState(\n votingStateToCheck: VotingState,\n votingState: number | string\n): boolean {\n return VotingState[votingState] === VotingState[votingStateToCheck];\n}\n","import {SNAPSHOT_HUB_API_URL, SPACE} from '../../../config';\nimport {ToStepNodeResult} from '@openlaw/snapshot-js-erc712/dist/types';\n\ntype SubmitOffchainVotingProofArguments = {\n /**\n * DAO Adapter address\n */\n actionId: string;\n /**\n * Blockchain network ID\n */\n chainId: number;\n /**\n * Hex string of the Merkle root\n */\n merkleRoot: string;\n /**\n * An array of Merkle tree steps\n */\n steps: ToStepNodeResult[];\n /**\n * DAO Registry address\n */\n verifyingContract: string;\n};\n\n/**\n * submitOffchainVotingProof\n *\n * Submits a Merkle hex root and its steps to Snapshot Hub\n * for verification and storage (if successful).\n *\n * The API endpoint does not have any return data, only a `201` response.\n *\n * @link https://github.com/openlawteam/snapshot-hub\n */\nexport async function submitOffchainVotingProof(\n data: SubmitOffchainVotingProofArguments\n): Promise {\n try {\n const response = await fetch(\n `${SNAPSHOT_HUB_API_URL}/api/${SPACE}/offchain_proofs`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(data),\n }\n );\n\n if (!response.ok) {\n throw new Error(\n 'Something went wrong while submitting the off-chain vote proof.'\n );\n }\n } catch (error) {\n throw error;\n }\n}\n","/**\n * BURN_ADDRESS\n *\n * - e.g. Helpful when detecting no address.\n * - e.g. Helpful for ERC-712 signatures which have no action id (like Governance).\n */\nexport const BURN_ADDRESS: '0x0000000000000000000000000000000000000000' =\n '0x0000000000000000000000000000000000000000';\n","import {CoreProposalVoteChoices} from '@openlaw/snapshot-js-erc712';\nimport {VoteChoices} from './types';\n\n/**\n * WEB3 CONFIG for TRIBUTE\n */\n\n// Vote choices should be \"yes\", \"no\" unless Tribute contracts change.\nexport const VOTE_CHOICES: CoreProposalVoteChoices = [\n VoteChoices.Yes,\n VoteChoices.No,\n];\n\n// When signing data this is the `primaryType` key's value which is part of the data to sign.\nexport const PRIMARY_TYPE_ERC712 = 'Message';\n\nexport const TX_CYCLE_MESSAGES: string[] = [\n 'Submitting\\u2026',\n 'Working\\u2026',\n 'DAOing\\u2026',\n 'Getting closer\\u2026',\n 'Dreaming of ETH\\u2026',\n];\n","export * from './CycleEllipsis';\n","import React, {useState, useEffect} from 'react';\n\nimport {chooseRandom} from '../../util/helpers';\n\ntype CycleMessageProps = {\n /**\n * Use the first item as the default.\n */\n useFirstItemStart?: boolean;\n /**\n * What is the interval of cycling the message?\n */\n intervalMs: number;\n /**\n * Provide multiple strings to cycle through.\n */\n messages: string[];\n /**\n * Render a React Element.\n * activeMessage is passed in.\n */\n render: (m: string) => React.ReactElement;\n};\n\nexport default function CycleMessage(props: CycleMessageProps) {\n const {intervalMs, messages, useFirstItemStart} = props;\n\n // Default item at start.\n const INITIAL_ITEM = useFirstItemStart\n ? messages[0]\n : chooseRandom(messages);\n\n const [activeMessage, setActiveMessage] = useState(INITIAL_ITEM);\n\n useEffect(() => {\n const intervalId = setInterval(\n () =>\n setActiveMessage((prevMessage) =>\n chooseRandom(messages, prevMessage)\n ),\n intervalMs\n );\n\n return () => {\n clearInterval(intervalId);\n };\n }, [intervalMs, messages]);\n\n return props.render(activeMessage);\n}\n","/**\n * WEB3 TYPES\n */\n\n// ...\n\n/**\n * WEB3 ENUMS\n */\n\n/**\n * Mapping of DaoRegistry member flags.\n * This should match the enum (including order) in the `DaoRegistry`. If it does not match,\n * the results of checking the proposal's state via flag will be wrong.\n *\n * @see `MemberFlag` `DaoRegistry.sol`\n * @see `getFlag` `DaoConstants.sol`\n * @see `setFlag` `DaoConstants.sol`\n */\nexport enum MemberFlag {\n EXISTS,\n}\n\n/**\n * Should match tribute-contracts constants\n *\n * @todo Add other extensions as needs arise\n */\nexport enum ContractAdapterNames {\n bank = 'bank',\n configuration = 'configuration',\n coupon_onboarding = 'coupon-onboarding',\n dao_registry = 'daoRegistry',\n distribute = 'distribute',\n financing = 'financing',\n guildkick = 'guildkick',\n managing = 'managing',\n nft = 'nft',\n onboarding = 'onboarding',\n ragequit = 'ragequit',\n tribute = 'tribute',\n tribute_nft = 'tribute-nft',\n voting = 'voting',\n}\n\n/**\n * Should match tribute-contracts constants\n *\n * @todo Add other extensions as needs arise\n */\nexport enum ContractExtensionNames {\n bank = 'bank',\n erc20 = 'erc20-ext',\n nft = 'nft',\n}\n\n/**\n * Should match tribute-contracts constants\n *\n * @todo Add other extensions as needs arise\n */\nexport enum ContractDAOConfigKeys {\n offchainVotingGracePeriod = 'offchainvoting.gracePeriod',\n offchainVotingStakingAmount = 'offchainvoting.stakingAmount',\n offchainVotingVotingPeriod = 'offchainvoting.votingPeriod',\n onboardingChunkSize = 'onboarding.chunkSize',\n onboardingMaximumChunks = 'onboarding.maximumChunks',\n onboardingUnitsPerChunk = 'onboarding.unitsPerChunk',\n onboardingTokenAddr = 'onboarding.tokenAddr',\n votingGracePeriod = 'voting.gracePeriod',\n votingStakingAmount = 'voting.stakingAmount',\n votingVotingPeriod = 'voting.votingPeriod',\n}\n\nexport enum VoteChoices {\n Yes = 'Yes',\n No = 'No',\n}\n\nexport enum Web3TxStatus {\n STANDBY = 'STANDBY',\n AWAITING_CONFIRM = 'AWAITING_CONFIRM',\n PENDING = 'PENDING',\n FULFILLED = 'FULFILLED',\n REJECTED = 'REJECTED',\n}\n","import {useState, useEffect} from 'react';\n\ntype LoaderLargeProps = {\n // Show waiting effect after some time has elapsed. Prevents the \"sudden\n // spinner\" UI/UX no-no. Esp. if we could have cached data.\n showAfterMs?: number;\n};\n\nexport default function LoaderLarge(props: LoaderLargeProps) {\n const {showAfterMs} = props;\n const [showLoaderAfterMs, setShowLoaderAfterMs] = useState(false);\n\n useEffect(() => {\n /* 200ms is approx. the time a user will notice a stalled, blank screen */\n const timeoutId =\n showAfterMs && setTimeout(() => setShowLoaderAfterMs(true), showAfterMs);\n\n return function cleanup() {\n timeoutId && clearTimeout(timeoutId);\n };\n }, [showAfterMs]);\n\n return !showAfterMs || (showAfterMs && showLoaderAfterMs) ? (\n
\n ) : null;\n}\n","import Web3 from 'web3';\n\nexport const hasValue = (value: string) => (value !== '' ? true : false);\n\nexport const isEmailValid = (email: string) =>\n /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i.test(email);\n\nexport const isEthAddressValid = (ethAddress: string) =>\n Web3.utils.isAddress(ethAddress);\n","/**\n * FOR HIGH REUSE TYPES\n *\n * For any other more specific types, co-locate them in either:\n *\n * 1) The actual code file.\n * 2) In a type file in the location of the code files which mainly use the types.\n *\n * @see https://kentcdodds.com/blog/colocation\n */\n\nexport type EnvironmentName = 'localhost' | 'development' | 'production';\n\nexport enum AsyncStatus {\n STANDBY = 'STANDBY',\n PENDING = 'PENDING',\n FULFILLED = 'FULFILLED',\n REJECTED = 'REJECTED',\n}\n\nexport interface MetaMaskRPCError extends Error {\n code: number;\n}\n","import {gql} from '@apollo/client';\n\nexport const GET_DAO = gql`\n query GetDao($id: ID) {\n tributeDaos(where: {id: $id}) {\n id # dao address\n daoAddress\n name\n totalUnits\n }\n }\n`;\n","import {gql} from '@apollo/client';\n\nexport const GET_ADAPTERS_AND_EXTENSIONS = gql`\n query GetAdaptersAndExtensions($daoAddress: String) {\n tributeDaos(where: {daoAddress: $daoAddress}) {\n daoAddress\n adapters {\n id\n acl\n adapterId\n adapterAddress\n }\n extensions {\n id\n extensionId\n extensionAddress\n }\n }\n }\n`;\n","import {gql} from '@apollo/client';\n\nexport const GET_MEMBERS = gql`\n query GetMembers($daoAddress: String) {\n tributeDaos(where: {daoAddress: $daoAddress}) {\n members(orderBy: createdAt, orderDirection: desc) {\n createdAt\n address: memberAddress\n delegateKey\n isDelegated\n units\n didFullyRagequit\n }\n }\n }\n`;\n","import {gql} from '@apollo/client';\n\nexport const GET_TOKEN_HOLDER_BALANCES = gql`\n query GetTokenHolderBalances($tokenAddress: String) {\n tokens(where: {tokenAddress: $tokenAddress}) {\n symbol\n tokenAddress\n holders {\n balance\n member {\n id\n delegateKey\n }\n }\n }\n }\n`;\n","import {ApolloLink} from '@apollo/client';\nimport {onError} from '@apollo/client/link/error';\nimport {Store} from 'redux';\n\nimport {setSubgraphNetworkStatus} from '../store/actions';\nimport {SubgraphNetworkStatus} from '../store/subgraphNetworkStatus/types';\nimport {StoreState} from '../store/types';\n\n/**\n * handleSubgraphError\n *\n * Handles an error from The Graph's GQL server at the Apollo\n * Link level.\n *\n * Handles network errors from The Graph's GQL server.\n *\n * About network errors from the Apollo Docs:\n *\n * \"Network errors occur \"These are errors encountered while attempting\n * to communicate with your GraphQL server, usually resulting in a\n * 4xx or 5xx response status code (and no data).\"\n *\n * We do not handle GQL errors that arise from individual queries.\n * Perhaps it best to handle those inside of the concerned components\n * (i.e. IF query error || subgraph is down THEN fallback)\n *\n * About GQL errors from the Apollo Docs:\n *\n * - Syntax errors (e.g., a query was malformed)\n * - Validation errors (e.g., a query included a schema field that doesn't exist)\n * - Resolver errors (e.g., an error occurred while attempting to populate a query field)\n *\n * @param {Store} store\n * @returns {ApolloLink}\n * @link https://www.apollographql.com/docs/react/data/error-handling\n */\nexport function handleSubgraphError(store: Store): ApolloLink {\n return onError(({/* graphQLErrors */ networkError}) => {\n if (networkError) {\n const reduxStateNotYetSet =\n (store.getState() as StoreState).subgraphNetworkStatus.status !==\n SubgraphNetworkStatus.ERR;\n\n if (reduxStateNotYetSet) {\n store.dispatch(\n setSubgraphNetworkStatus({status: SubgraphNetworkStatus.ERR})\n );\n\n // Show error once\n console.error(`[Subgraph network error]: ${networkError}`);\n }\n }\n\n // Reset when there's no more network error\n if (!networkError) {\n const reduxStateNotYetSet =\n (store.getState() as StoreState).subgraphNetworkStatus.status !==\n SubgraphNetworkStatus.OK;\n\n if (reduxStateNotYetSet) {\n store.dispatch(\n setSubgraphNetworkStatus({status: SubgraphNetworkStatus.OK})\n );\n }\n }\n });\n}\n","import {CLEAR_CONNECTED_MEMBER, SET_CONNECTED_MEMBER} from './actions';\nimport {ConnectedMemberState} from './types';\n\nconst INITIAL_STATE = null;\n\nexport default function reducer(\n state: ConnectedMemberState = INITIAL_STATE,\n action: any\n) {\n const {type, ...payload} = action;\n\n switch (type) {\n case SET_CONNECTED_MEMBER:\n return setConnectedMemberReducer(state, payload);\n case CLEAR_CONNECTED_MEMBER:\n return clearConnectedMemberReducer();\n default:\n return state;\n }\n}\n\nfunction setConnectedMemberReducer(\n state: Partial,\n payload: Record\n) {\n return {...state, ...payload};\n}\n\nfunction clearConnectedMemberReducer() {\n return INITIAL_STATE;\n}\n","import {CONNECT_MODAL_CLOSE, CONNECT_MODAL_OPEN} from './actions';\nimport {ConnectModalState} from './types';\n\nconst INITIAL_STATE = {\n isOpen: false,\n};\n\nexport default function reducer(\n state: ConnectModalState = INITIAL_STATE,\n action: any\n) {\n const {type} = action;\n\n switch (type) {\n case CONNECT_MODAL_CLOSE:\n return connectModalClose(state);\n case CONNECT_MODAL_OPEN:\n return connectModalOpen(state);\n default:\n return state;\n }\n}\n\nfunction connectModalClose(\n state: Partial\n): ConnectModalState {\n return {...state, isOpen: false};\n}\n\nfunction connectModalOpen(\n state: Partial\n): ConnectModalState {\n return {...state, isOpen: true};\n}\n","import {\n CLEAR_CONTRACTS,\n CONTRACT_BANK_ADAPTER,\n CONTRACT_BANK_EXTENSION,\n CONTRACT_BANK_FACTORY,\n CONTRACT_CONFIGURATION,\n CONTRACT_COUPON_ONBOARDING,\n CONTRACT_DAO_FACTORY,\n CONTRACT_DAO_REGISTRY_ADAPTER,\n CONTRACT_DAO_REGISTRY,\n CONTRACT_DISTRIBUTE,\n CONTRACT_ERC20_EXTENSION,\n CONTRACT_FINANCING,\n CONTRACT_GUILDKICK,\n CONTRACT_MANAGING,\n CONTRACT_NFT_ADAPTER,\n CONTRACT_NFT_EXTENSION,\n CONTRACT_ONBOARDING,\n CONTRACT_RAGEQUIT,\n CONTRACT_TRIBUTE_NFT,\n CONTRACT_TRIBUTE,\n CONTRACT_VOTING_OP_ROLLUP,\n CONTRACT_VOTING,\n} from '../actions';\nimport {ContractsState} from './types';\n\nconst initialState = {\n BankAdapterContract: null,\n BankExtensionContract: null,\n BankFactoryContract: null,\n ConfigurationContract: null,\n CouponOnboardingContract: null,\n DaoFactoryContract: null,\n DaoRegistryAdapterContract: null,\n DaoRegistryContract: null,\n DistributeContract: null,\n ERC20ExtensionContract: null,\n FinancingContract: null,\n GuildBankContract: null,\n ManagingContract: null,\n NFTAdapterContract: null,\n NFTExtensionContract: null,\n OnboardingContract: null,\n RagequitContract: null,\n TributeContract: null,\n TributeNFTContract: null,\n VotingContract: null,\n};\n\nexport default function reducer(\n state: ContractsState = initialState,\n action: any\n) {\n const {type, ...payload} = action;\n\n switch (type) {\n case CLEAR_CONTRACTS:\n return clearContracts(state);\n case CONTRACT_BANK_ADAPTER:\n return contractBankAdapter(state, payload);\n case CONTRACT_BANK_EXTENSION:\n return contractBankExtension(state, payload);\n case CONTRACT_BANK_FACTORY:\n return contractBankFactory(state, payload);\n case CONTRACT_CONFIGURATION:\n return contractConfiguration(state, payload);\n case CONTRACT_COUPON_ONBOARDING:\n return contractCouponOnboarding(state, payload);\n case CONTRACT_DAO_FACTORY:\n return contractDAOFactory(state, payload);\n case CONTRACT_DAO_REGISTRY:\n return contractDAORegistry(state, payload);\n case CONTRACT_DAO_REGISTRY_ADAPTER:\n return contractDaoRegistryAdapter(state, payload);\n case CONTRACT_DISTRIBUTE:\n return contractDistribute(state, payload);\n case CONTRACT_ERC20_EXTENSION:\n return contractERC20Extension(state, payload);\n case CONTRACT_FINANCING:\n return contractFinancing(state, payload);\n case CONTRACT_GUILDKICK:\n return contractGuildBank(state, payload);\n case CONTRACT_MANAGING:\n return contractManaging(state, payload);\n case CONTRACT_NFT_ADAPTER:\n return contractNFTAdapter(state, payload);\n case CONTRACT_NFT_EXTENSION:\n return contractNFTExtension(state, payload);\n case CONTRACT_ONBOARDING:\n return contractOnboarding(state, payload);\n case CONTRACT_RAGEQUIT:\n return contractRagequit(state, payload);\n case CONTRACT_TRIBUTE:\n return contractTribute(state, payload);\n case CONTRACT_TRIBUTE_NFT:\n return contractTributeNFT(state, payload);\n case CONTRACT_VOTING:\n return contractVoting(state, payload);\n case CONTRACT_VOTING_OP_ROLLUP:\n return contractVoting(state, payload);\n\n default:\n return state;\n }\n}\n\nfunction clearContracts(state: ContractsState) {\n return {...state, ...initialState};\n}\n\nfunction contractBankFactory(state: ContractsState, payload: any) {\n return {...state, BankFactoryContract: {...payload}};\n}\n\nfunction contractDAOFactory(state: ContractsState, payload: any) {\n return {...state, DaoFactoryContract: {...payload}};\n}\n\nfunction contractDAORegistry(state: ContractsState, payload: any) {\n return {...state, DaoRegistryContract: {...payload}};\n}\n\nfunction contractDaoRegistryAdapter(\n state: ContractsState,\n payload: any\n): ContractsState {\n return {...state, DaoRegistryAdapterContract: {...payload}};\n}\n\nfunction contractBankExtension(\n state: ContractsState,\n payload: any\n): ContractsState {\n return {...state, BankExtensionContract: {...payload}};\n}\n\nfunction contractConfiguration(state: ContractsState, payload: any) {\n return {...state, ConfigurationContract: {...payload}};\n}\n\nfunction contractDistribute(\n state: ContractsState,\n payload: any\n): ContractsState {\n return {...state, DistributeContract: {...payload}};\n}\n\nfunction contractFinancing(state: ContractsState, payload: any) {\n return {...state, FinancingContract: {...payload}};\n}\n\nfunction contractGuildBank(state: ContractsState, payload: any) {\n return {...state, GuildBankContract: {...payload}};\n}\n\nfunction contractOnboarding(state: ContractsState, payload: any) {\n return {...state, OnboardingContract: {...payload}};\n}\n\nfunction contractRagequit(state: ContractsState, payload: any) {\n return {...state, RagequitContract: {...payload}};\n}\n\nfunction contractTribute(state: ContractsState, payload: any): ContractsState {\n return {...state, TributeContract: {...payload}};\n}\n\nfunction contractVoting(state: ContractsState, payload: any): ContractsState {\n return {...state, VotingContract: {...payload}};\n}\n\nfunction contractManaging(state: ContractsState, payload: any): ContractsState {\n return {...state, ManagingContract: {...payload}};\n}\n\nfunction contractBankAdapter(\n state: ContractsState,\n payload: any\n): ContractsState {\n return {...state, BankAdapterContract: {...payload}};\n}\n\nfunction contractNFTAdapter(\n state: ContractsState,\n payload: any\n): ContractsState {\n return {...state, NFTAdapterContract: {...payload}};\n}\n\nfunction contractTributeNFT(\n state: ContractsState,\n payload: any\n): ContractsState {\n return {...state, TributeNFTContract: {...payload}};\n}\n\nfunction contractCouponOnboarding(\n state: ContractsState,\n payload: any\n): ContractsState {\n return {...state, CouponOnboardingContract: {...payload}};\n}\n\nfunction contractNFTExtension(\n state: ContractsState,\n payload: any\n): ContractsState {\n return {...state, NFTExtensionContract: {...payload}};\n}\n\nfunction contractERC20Extension(\n state: ContractsState,\n payload: any\n): ContractsState {\n return {...state, ERC20ExtensionContract: {...payload}};\n}\n","import {SET_SUBGRAPH_NETWORK_STATUS} from './actions';\nimport {SubgraphNetworkStatus, SubgraphNetworkStatusState} from './types';\n\nconst INITIAL_STATE = {\n status: SubgraphNetworkStatus.OK,\n};\n\nexport default function reducer(\n state: SubgraphNetworkStatusState = INITIAL_STATE,\n action: any\n) {\n const {type, ...payload} = action;\n\n switch (type) {\n case SET_SUBGRAPH_NETWORK_STATUS:\n return setSubgraphNetworkStatus(state, payload);\n default:\n return state;\n }\n}\n\nfunction setSubgraphNetworkStatus(\n state: Partial,\n payload: Record\n) {\n return {...state, ...payload};\n}\n","import {combineReducers} from 'redux';\n\nimport connectedMember from './connectedMember/reducers';\nimport connectModal from './connectModal/reducers';\nimport contracts from './contracts/reducers';\nimport subgraphNetworkStatus from './subgraphNetworkStatus/reducers';\n\nexport default combineReducers({\n connectModal,\n connectedMember,\n contracts,\n subgraphNetworkStatus,\n});\n","import {applyMiddleware, createStore} from 'redux';\nimport {composeWithDevTools} from 'redux-devtools-extension/logOnlyInProduction';\nimport thunk from 'redux-thunk';\n\nimport rootReducer from './reducers';\n\nexport const store = createStore(\n rootReducer,\n composeWithDevTools(applyMiddleware(thunk))\n);\n","import React from 'react';\n\nexport default function DiscordSVG(props: React.SVGAttributes) {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","import DiscordSVG from '../../assets/svg/DiscordSVG';\nimport GitHubSVG from '../../assets/svg/GitHubSVG';\nimport MediumSVG from '../../assets/svg/MediumSVG';\n\n// @todo Add missing URLs when available\nenum SocialMediaLinks {\n DISCORD = '#',\n // query params search sepcifically for openlawteam/tribute-ui and\n // openlawteam/tribute-contracts\n GITHUB = 'https://github.com/search?q=org%3Aopenlawteam+tribute-ui+OR+tribute-contracts+in%3Aname&type=repositories',\n MEDIUM = '#',\n}\n\nexport default function SocialMedia() {\n return (\n \n );\n}\n","import React from 'react';\n\nclass GitHubSVG extends React.Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nexport default GitHubSVG;\n","import React from 'react';\n\nclass MediumSVG extends React.Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nexport default MediumSVG;\n","import SocialMedia from './common/SocialMedia';\n\nexport default function Footer() {\n return (\n \n \n
\n );\n}\n","import {lazy, Suspense, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useEffect} from 'react';\n\nimport {\n useIsDefaultChain,\n useMaybeContractWallet,\n useWeb3Modal,\n} from './components/web3/hooks';\nimport {AsyncStatus} from './util/types';\nimport {connectModalClose, connectModalOpen} from './store/actions';\nimport {StoreState} from './store/types';\nimport {useLocation} from 'react-router-dom';\n\n/**\n * Lazy load ConnectWalletModal only when open\n */\nconst ConnectWalletModal = lazy(\n () => import('./components/web3/ConnectWalletModal')\n);\n\nexport default function GlobalConnectWalletModal() {\n /**\n * Selectors\n */\n\n const isConnectModalOpen: boolean = useSelector(\n ({connectModal}: StoreState) => connectModal.isOpen\n );\n\n /**\n * State\n */\n\n const [modalProps, setModalProps] = useState<\n Parameters[0]['modalProps']\n >({\n isOpen: isConnectModalOpen,\n onRequestClose: () => {\n dispatch(connectModalClose());\n },\n });\n\n /**\n * Our hooks\n */\n\n const {account, connected, initialCachedConnectorCheckStatus, web3Instance} =\n useWeb3Modal();\n\n const {isDefaultChain} = useIsDefaultChain();\n\n const maybeContractWallet = useMaybeContractWallet(\n account,\n web3Instance?.currentProvider\n );\n\n /**\n * Their hooks\n */\n\n const dispatch = useDispatch();\n const {pathname} = useLocation();\n\n /**\n * Effects\n */\n\n useEffect(() => {\n setModalProps((prevState) => ({...prevState, isOpen: isConnectModalOpen}));\n }, [isConnectModalOpen]);\n\n /**\n * Effects\n */\n\n /**\n * Will automatically re-show the modal (on app `pathname` change) only when:\n * - If wrong chain\n * - If smart contract wallet\n */\n useEffect(() => {\n if (initialCachedConnectorCheckStatus === AsyncStatus.FULFILLED) {\n const shouldAutomaticallyOpenModal: boolean =\n connected && (!isDefaultChain || maybeContractWallet) ? true : false;\n\n shouldAutomaticallyOpenModal\n ? dispatch(connectModalOpen())\n : dispatch(connectModalClose());\n }\n }, [\n connected,\n dispatch,\n initialCachedConnectorCheckStatus,\n isDefaultChain,\n maybeContractWallet,\n pathname,\n ]);\n\n /**\n * Render\n */\n\n if (!isConnectModalOpen) return null;\n\n return (\n \n \n \n );\n}\n","import {Helmet} from 'react-helmet';\n\nexport default function Head() {\n return (\n \n Tribute \n \n \n );\n}\n","interface LogoProps {\n size?: 'small' | 'medium' | 'large' | '';\n}\n\nexport default function Logo(props: LogoProps) {\n return (\n \n TRIBUTE\n
\n );\n}\n","import React from 'react';\n\nimport Logo from './Logo';\n\n/**\n * ModalLogo\n * This component is used for modal menu\n */\nexport function ModalLogo() {\n return (\n \n \n
\n );\n}\n\n/**\n * LeftLogo\n * This component is used for main pages\n */\nexport function LeftLogo() {\n return (\n \n \n
\n );\n}\n\n/**\n * CenterLogo\n * This component is used for splash page\n */\nexport function CenterLogo() {\n return (\n \n \n
\n );\n}\n","export default function HamburgerSVG() {\n return (\n \n \n \n );\n}\n","import {isMobile} from '@walletconnect/browser-utils';\nimport {useDispatch} from 'react-redux';\n\nimport {connectModalOpen} from '../../store/actions';\nimport {truncateEthAddress} from '../../util/helpers';\nimport {useIsDefaultChain} from './hooks';\nimport {useWeb3Modal} from './hooks';\nimport {WalletIcon} from './';\n\ntype CustomWalletTextProps = {\n account: ReturnType['account'];\n connected: ReturnType['connected'];\n isMobile: ReturnType;\n};\n\ntype ConnectWalletButtonProps = {\n customWalletText?: ((o: CustomWalletTextProps) => string) | string;\n showWalletETHBadge?: boolean;\n};\n\nexport default function ConnectWalletButton({\n customWalletText,\n // Defaults to `true`\n showWalletETHBadge = true,\n}: ConnectWalletButtonProps): JSX.Element {\n /**\n * Our hooks\n */\n\n const {account, connected, web3Modal} = useWeb3Modal();\n\n const {isDefaultChain} = useIsDefaultChain();\n\n /**\n * Their hooks\n */\n\n const dispatch = useDispatch();\n\n /**\n * Variables\n */\n\n const isWrongNetwork: boolean = isDefaultChain === false;\n\n /**\n * Functions\n */\n\n function getWalletText(): string {\n if (customWalletText) {\n return typeof customWalletText === 'function'\n ? customWalletText({account, connected, isMobile: isMobile()})\n : customWalletText;\n }\n\n if (account) {\n return truncateEthAddress(account);\n }\n\n return 'Connect';\n }\n\n /**\n * Return\n */\n\n return (\n {\n dispatch(connectModalOpen());\n }}>\n \n {getWalletText()}\n \n\n {isWrongNetwork && connected && Wrong Network }\n\n {showWalletETHBadge && (\n \n )}\n \n );\n}\n","import {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {StoreState} from '../../../store/types';\nimport {ERC20RegisterDetails} from '../DaoToken';\nimport {AsyncStatus} from '../../../util/types';\n\ntype UseDaoTokenDetailsReturn = {\n daoTokenDetails: ERC20RegisterDetails | undefined;\n daoTokenDetailsError: Error | undefined;\n daoTokenDetailsStatus: AsyncStatus;\n};\n\n/**\n * useDaoTokenDetails\n *\n * Gets DAO token details from ERC20Extension contract.\n *\n * @returns {UseDaoTokenDetailsReturn}\n */\nexport function useDaoTokenDetails(): UseDaoTokenDetailsReturn {\n /**\n * Selectors\n */\n\n const ERC20ExtensionContract = useSelector(\n (state: StoreState) => state.contracts?.ERC20ExtensionContract\n );\n\n /**\n * State\n */\n\n const [daoTokenDetails, setDaoTokenDetails] =\n useState();\n const [daoTokenDetailsStatus, setDaoTokenDetailsStatus] =\n useState(AsyncStatus.STANDBY);\n const [daoTokenDetailsError, setDaoTokenDetailsError] = useState();\n\n /**\n * Cached callbacks\n */\n\n const getDaoTokenDetailsCached = useCallback(getDaoTokenDetails, [\n ERC20ExtensionContract,\n ]);\n\n /**\n * Effects\n */\n\n useEffect(() => {\n getDaoTokenDetailsCached();\n }, [getDaoTokenDetailsCached]);\n\n /**\n * Functions\n */\n\n async function getDaoTokenDetails() {\n if (!ERC20ExtensionContract) return;\n\n try {\n setDaoTokenDetailsStatus(AsyncStatus.PENDING);\n\n const symbol = await ERC20ExtensionContract.instance.methods\n .symbol()\n .call();\n const decimals = await ERC20ExtensionContract.instance.methods\n .decimals()\n .call();\n\n setDaoTokenDetails({\n address: ERC20ExtensionContract.contractAddress,\n symbol,\n decimals: Number(decimals),\n image: `${window.location.origin}/favicon.ico`,\n });\n\n setDaoTokenDetailsStatus(AsyncStatus.FULFILLED);\n } catch (error) {\n console.log(error);\n setDaoTokenDetails(undefined);\n setDaoTokenDetailsError(error);\n setDaoTokenDetailsStatus(AsyncStatus.REJECTED);\n }\n }\n\n return {daoTokenDetails, daoTokenDetailsError, daoTokenDetailsStatus};\n}\n","import {useCallback, useEffect, useState} from 'react';\n\nimport FadeIn from '../../components/common/FadeIn';\nimport {useWeb3Modal} from '../../components/web3/hooks';\nimport {useTokenHolderBalances} from './hooks';\nimport {formatNumber} from '../../util/helpers';\nimport {ETHERSCAN_URLS} from '../../config';\n\nexport type ERC20HolderDetails = {\n symbol: string;\n balance: number;\n tokenAddress: string;\n};\n\ntype DaoTokenHolderProps = {\n backgroundColor?: string;\n border?: string;\n color?: string;\n customStyles?: Record;\n};\n\nconst image = `${window.location.origin}/favicon.ico`;\n\nconst toDataURL = (url: string) =>\n fetch(url)\n .then((response) => response.blob())\n .then(\n (blob) =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n })\n );\n\nexport default function DaoTokenHolder({\n customStyles,\n ...badgeStyles\n}: DaoTokenHolderProps): JSX.Element {\n /**\n * State\n */\n\n const [tokenHolder, setTokenHolder] = useState();\n const [tokenImageUrl, setTokenImageURL] = useState();\n const [tokenEtherscanURL, setTokenEtherscanURL] = useState('');\n\n /**\n * Our hooks\n */\n\n const {tokenHolderBalances} = useTokenHolderBalances();\n const {account, networkId} = useWeb3Modal();\n\n /**\n * Cached callbacks\n */\n\n const getTokenImageCallback = useCallback(getTokenImage, []);\n\n /**\n * Effects\n */\n\n useEffect(() => {\n setTokenHolder(undefined);\n\n if (account && tokenHolderBalances) {\n const {holders, symbol, tokenAddress} = tokenHolderBalances;\n\n const holderData = holders?.find(\n (holder: any) =>\n holder.member?.id.toLowerCase() === account.toLowerCase()\n );\n\n holderData &&\n setTokenHolder({\n balance: holderData.balance,\n tokenAddress,\n symbol,\n });\n\n account &&\n networkId &&\n setTokenEtherscanURL(\n `${ETHERSCAN_URLS[networkId]}/token/${tokenAddress}?a=${account}`\n );\n\n getTokenImageCallback();\n }\n }, [account, networkId, tokenHolderBalances, getTokenImageCallback]);\n\n /**\n * Functions\n */\n\n function getTokenImage() {\n try {\n toDataURL(image).then((dataUrl: any) => {\n dataUrl && setTokenImageURL(dataUrl);\n });\n } catch (error) {\n console.log(error);\n }\n }\n\n /**\n * Render\n */\n\n if (tokenHolder) {\n return (\n \n \n \n {formatNumber(tokenHolder.balance)}\n \n {tokenHolder.symbol} \n\n {tokenImageUrl && }\n \n \n );\n }\n\n return <>>;\n}\n","import {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useLazyQuery} from '@apollo/react-hooks';\n\nimport {StoreState} from '../../../store/types';\nimport {GET_TOKEN_HOLDER_BALANCES} from '../../../gql';\n\ntype UseTokenHolderBalancesReturn = {\n tokenHolderBalances: Record | undefined;\n gqlError: Error | undefined;\n};\n\n/**\n * useTokenHolderBalances\n *\n * This component queries The Graph API to get data on the token holders\n *\n * @returns {UseTokenHolderBalancesReturn}\n */\nexport function useTokenHolderBalances(): UseTokenHolderBalancesReturn {\n /**\n * Selectors\n */\n\n const erc20ExtensionContract = useSelector(\n (s: StoreState) => s.contracts?.ERC20ExtensionContract\n );\n\n const connectedMember = useSelector((s: StoreState) => s.connectedMember);\n\n /**\n * GQL Query\n */\n\n const [\n getTokenHolderBalances,\n {called, loading, data, error, startPolling, stopPolling},\n ] = useLazyQuery(GET_TOKEN_HOLDER_BALANCES, {\n variables: {\n tokenAddress: erc20ExtensionContract?.contractAddress.toLowerCase(),\n },\n });\n\n /**\n * State\n */\n\n const [tokenHolderBalances, setTokenHolderBalances] = useState<\n Record | undefined\n >();\n const [gqlError, setGqlError] = useState();\n\n /**\n * Cached callbacks\n */\n\n const getTokenBalanceCallback = useCallback(getTokenBalance, [\n erc20ExtensionContract?.contractAddress,\n data,\n error,\n loading,\n ]);\n\n /**\n * Effects\n */\n\n useEffect(() => {\n if (!called) {\n getTokenHolderBalances();\n }\n }, [called, getTokenHolderBalances]);\n\n useEffect(() => {\n if (!loading && erc20ExtensionContract?.contractAddress) {\n getTokenBalanceCallback();\n }\n }, [\n erc20ExtensionContract?.contractAddress,\n getTokenBalanceCallback,\n loading,\n ]);\n\n // When the `SET_CONNECTED_MEMBER` redux action is dispatched in other\n // components (to refetch the connected user's member status info) the\n // `useSelector` hook above will return a new `connectedMember` object. By\n // default, the `useEffect` hook uses a strict equality comparison which will\n // consider the new object a changed value (even if the individual fields are\n // the same from the previous `connectedMember` store state). This change is\n // used to trigger a refresh of the `GET_TOKEN_HOLDER_BALANCES` query result\n // so any change to the connected token holder's balance can be shown in the\n // nav badge without having to do a page reload.\n useEffect(() => {\n // a single refetch may not be enough to catch any token balance change so\n // we poll but only for a short time period\n connectedMember && startPolling && startPolling(2000);\n\n const pollingTimeoutId = stopPolling && setTimeout(stopPolling, 10000);\n\n return function cleanup() {\n pollingTimeoutId && clearTimeout(pollingTimeoutId);\n };\n }, [connectedMember, startPolling, stopPolling]);\n\n /**\n * Functions\n */\n\n function getTokenBalance() {\n try {\n if (!loading && data) {\n setTokenHolderBalances(data.tokens[0]);\n if (data.tokens.length === 0) {\n const error = new Error(\n `\"${erc20ExtensionContract?.contractAddress}\" erc20 address not found.`\n );\n throw error;\n }\n } else {\n if (error) {\n const error = new Error(\n `\"${erc20ExtensionContract?.contractAddress}\" is not a valid erc20 address.`\n );\n\n throw error;\n }\n }\n } catch (error) {\n setGqlError(error);\n }\n }\n\n return {tokenHolderBalances, gqlError};\n}\n","import {NavLink} from 'react-router-dom';\nimport {Transition} from 'react-transition-group';\nimport {useSelector} from 'react-redux';\nimport {useState, useEffect, useRef} from 'react';\nimport Media from 'react-media';\nimport ReactModal from 'react-modal';\n\nimport {ModalLogo} from './logo';\nimport {StoreState} from '../store/types';\nimport {useWeb3Modal} from './web3/hooks';\nimport HamburgerSVG from '../assets/svg/HamburgerSVG';\nimport TimesSVG from '../assets/svg/TimesSVG';\nimport Web3ModalButton from './web3/Web3ModalButton';\nimport DaoTokenHolder from './dao-token/DaoTokenHolder';\n\n// see: http://reactcommunity.org/react-transition-group/transition\nconst duration = 200;\n\nconst defaultStyle = {\n transition: '0.1s',\n};\n\nconst transitionOpeningStyles: Record = {\n entering: {right: '-300px'},\n entered: {right: 0},\n exiting: {right: 0, opacity: 0},\n exited: {right: '-300px', opacity: 0},\n};\n\nconst transitionClosingStyles: Record = {\n entering: {right: 0, opacity: 1},\n entered: {right: '-300px', opacity: 1},\n exiting: {right: '-300px', opacity: 1},\n exited: {right: 0, opacity: 1},\n};\n\nexport function NavLinks() {\n return (\n \n \n \n \n Membership \n \n \n \n \n Governance \n \n \n \n \n Transfer \n \n \n \n \n Tribute \n \n \n \n \n );\n}\n\nexport function NavHamburger() {\n /**\n * Selectors\n */\n\n const connectedMember = useSelector((s: StoreState) => s.connectedMember);\n\n /**\n * State\n */\n\n const [shouldShowMenuModal, setShouldShowMenuModal] = useState(false);\n const [transitionStyles, setTransitionStyles] = useState>(\n transitionOpeningStyles\n );\n\n /**\n * Our hooks\n */\n\n const {account} = useWeb3Modal();\n\n /**\n * Refs\n */\n\n const closeMenuRef = useRef();\n\n /**\n * Effects\n */\n\n useEffect(() => {\n // Clean up on unmount\n return () => {\n closeMenuRef.current && clearTimeout(closeMenuRef.current);\n };\n }, []);\n\n /**\n * Variables\n */\n\n const isCurrentMemberOrDelegateConnected: boolean =\n account && connectedMember?.isActiveMember ? true : false;\n const isCurrentMemberConnected: boolean =\n account &&\n connectedMember?.isActiveMember &&\n account.toLowerCase() === connectedMember?.memberAddress.toLowerCase()\n ? true\n : false;\n\n /**\n * Functions\n */\n\n function handleMenuModalClose(close: boolean) {\n // delay transition for closing\n if (close) {\n setShouldShowMenuModal(close);\n setTransitionStyles(transitionOpeningStyles);\n } else {\n setTransitionStyles(transitionClosingStyles);\n closeMenuRef.current = setTimeout(\n () => setShouldShowMenuModal(close),\n 500\n );\n return () => closeMenuRef.current && clearTimeout(closeMenuRef.current);\n }\n }\n\n /**\n * Render\n */\n\n return (\n <>\n \n
{\n event.preventDefault();\n handleMenuModalClose(true);\n }}>\n \n
\n
\n\n {/** MODAL MENU */}\n {\n handleMenuModalClose(false);\n }}\n overlayClassName=\"nav-modal-overlay\"\n role=\"dialog\"\n style={{overlay: {zIndex: '99'}} as any}>\n \n {(transition) => (\n \n \n
{\n event.preventDefault();\n handleMenuModalClose(false);\n }}>\n \n \n\n
\n\n
\n \n
\n
\n {\n handleMenuModalClose(false);\n }}>\n \n Membership \n \n \n {\n handleMenuModalClose(false);\n }}>\n \n Governance \n \n \n {\n handleMenuModalClose(false);\n }}>\n \n Transfer \n \n \n {\n handleMenuModalClose(false);\n }}>\n \n Tribute \n \n \n {/* The Profile link is available to only the connected member user (not any delegate) because the profile exists for the member account. */}\n {isCurrentMemberConnected && (\n {\n handleMenuModalClose(false);\n }}>\n \n Profile \n \n \n )}\n {/* The Manage DAO link is available to both connected member users and connected delegate users. */}\n {isCurrentMemberOrDelegateConnected && (\n {\n handleMenuModalClose(false);\n }}>\n \n Manage DAO \n \n \n )}\n \n
\n \n )}\n \n \n >\n );\n}\n\nexport default function Nav() {\n /**\n * Render\n */\n\n return (\n \n {(_matches: boolean) => (\n \n
\n {/* NAV */}\n
\n
\n
\n
\n \n
\n
\n
\n )}\n \n );\n}\n","import {Link} from 'react-router-dom';\n\nimport {LeftLogo} from './logo';\nimport Nav from './Nav';\n\nexport default function Header() {\n /**\n * Functions\n */\n\n // Render the location with a link\n function RenderLogo(props: React.PropsWithChildren) {\n return {props.children};\n }\n\n /**\n * Render\n */\n\n return (\n \n );\n}\n","import Web3 from 'web3';\n\nimport {DaoAdapterConstants, DaoExtensionConstants} from './enums';\nimport {AclFlag} from './types';\n\nexport function getAdapterOrExtensionId(\n adapterName: DaoAdapterConstants | DaoExtensionConstants\n): string {\n return sha3(adapterName) as string;\n}\n\n/**\n * getAccessControlLayer\n *\n * @param adapterName\n */\nexport function getAccessControlLayer(\n adapterOrExtensionName: string\n): Record {\n const adapterAndExtensionFlags: Record<\n | DaoAdapterConstants\n | DaoExtensionConstants.BANK\n | DaoExtensionConstants.NFT,\n any\n > = {\n [DaoExtensionConstants.BANK]: {},\n [DaoAdapterConstants.CONFIGURATION]: {\n SUBMIT_PROPOSAL: true,\n PROCESS_PROPOSAL: true,\n SPONSOR_PROPOSAL: true,\n SET_CONFIGURATION: true,\n },\n [DaoAdapterConstants.DISTRIBUTE]: {\n SUBMIT_PROPOSAL: true,\n SPONSOR_PROPOSAL: true,\n PROCESS_PROPOSAL: true,\n INTERNAL_TRANSFER: true,\n },\n [DaoAdapterConstants.EXECUTION]: {},\n [DaoAdapterConstants.TRIBUTE]: {\n SUBMIT_PROPOSAL: true,\n SPONSOR_PROPOSAL: true,\n PROCESS_PROPOSAL: true,\n NEW_MEMBER: true,\n ADD_TO_BALANCE: true,\n REGISTER_NEW_TOKEN: true,\n },\n [DaoAdapterConstants.FINANCING]: {\n SUBMIT_PROPOSAL: true,\n SPONSOR_PROPOSAL: true,\n PROCESS_PROPOSAL: true,\n ADD_TO_BALANCE: true,\n SUB_FROM_BALANCE: true,\n },\n [DaoAdapterConstants.GUILDKICK]: {\n SUBMIT_PROPOSAL: true,\n SPONSOR_PROPOSAL: true,\n PROCESS_PROPOSAL: true,\n SUB_FROM_BALANCE: true,\n ADD_TO_BALANCE: true,\n JAIL_MEMBER: true,\n UNJAIL_MEMBER: true,\n INTERNAL_TRANSFER: true,\n },\n [DaoAdapterConstants.MANAGING]: {\n SUBMIT_PROPOSAL: true,\n PROCESS_PROPOSAL: true,\n SPONSOR_PROPOSAL: true,\n REMOVE_ADAPTER: true,\n ADD_ADAPTER: true,\n },\n [DaoAdapterConstants.OFFCHAINVOTING]: {},\n [DaoAdapterConstants.ONBOARDING]: {\n SUBMIT_PROPOSAL: true,\n SPONSOR_PROPOSAL: true,\n PROCESS_PROPOSAL: true,\n ADD_TO_BALANCE: true,\n UPDATE_DELEGATE_KEY: true,\n NEW_MEMBER: true,\n },\n [DaoAdapterConstants.NONVOTING_ONBOARDING]: {},\n [DaoAdapterConstants.RAGEQUIT]: {\n SUB_FROM_BALANCE: true,\n JAIL_MEMBER: true,\n UNJAIL_MEMBER: true,\n INTERNAL_TRANSFER: true,\n },\n [DaoAdapterConstants.VOTING]: {},\n [DaoAdapterConstants.BANK]: {\n WITHDRAW: true,\n SUB_FROM_BALANCE: true,\n UPDATE_TOKEN: true,\n },\n [DaoAdapterConstants.NFT]: {\n COLLECT_NFT: true,\n },\n [DaoAdapterConstants.COUPON_ONBOARDING]: {\n SUBMIT_PROPOSAL: false,\n ADD_TO_BALANCE: true,\n UPDATE_DELEGATE_KEY: false,\n NEW_MEMBER: true,\n },\n [DaoAdapterConstants.TRIBUTE_NFT]: {\n SUBMIT_PROPOSAL: true,\n NEW_MEMBER: true,\n ADD_TO_BALANCE: true,\n COLLECT_NFT: true,\n },\n [DaoExtensionConstants.NFT]: {\n WITHDRAW_NFT: true,\n COLLECT_NFT: true,\n INTERNAL_TRANSFER: true,\n },\n [DaoAdapterConstants.DAO_REGISTRY]: {\n UPDATE_DELEGATE_KEY: true,\n },\n };\n\n const flags = adapterAndExtensionFlags[adapterOrExtensionName];\n\n return {acl: accessFlags(flags)};\n}\n\n/**\n * === INTERNAL HELPER FUNCTIONS ===\n */\n\n/**\n * accessFlags()\n *\n * @param flags\n */\nfunction accessFlags(flags: Record): number {\n const ADAPTER_ACCESS_FLAGS = [\n flags.ADD_ADAPTER,\n flags.REMOVE_ADAPTER,\n flags.JAIL_MEMBER,\n flags.UNJAIL_MEMBER,\n flags.SUBMIT_PROPOSAL,\n flags.SPONSOR_PROPOSAL,\n flags.PROCESS_PROPOSAL,\n flags.UPDATE_DELEGATE_KEY,\n flags.SET_CONFIGURATION,\n flags.ADD_EXTENSION,\n flags.REMOVE_EXTENSION,\n flags.NEW_MEMBER,\n ];\n const EXTENSION_ACCESS_FLAGS = [flags.TRANSFER_NFT];\n\n const values: boolean[] = [\n ...ADAPTER_ACCESS_FLAGS,\n ...EXTENSION_ACCESS_FLAGS,\n ];\n\n return entry(values) as number;\n}\n\n/**\n * sha3()\n *\n * @returns string | null\n * @param value\n */\nfunction sha3(value: string): string | null {\n return Web3.utils.sha3(value);\n}\n\n/**\n * entry()\n *\n * @param values\n */\nfunction entry(values: Boolean[]): number {\n return values\n .map((v: any, idx: number) => (v !== undefined ? 2 ** idx : 0))\n .reduce((a: any, b: any) => a + b);\n}\n","import {DaoAdapterConstants /*DaoExtensionConstants*/} from './enums';\nimport {getAdapterOrExtensionId} from './helpers';\n\nimport {\n BANK_ADAPTER_CONTRACT_ADDRESS,\n CONFIGURATION_CONTRACT_ADDRESS,\n COUPONONBOARDING_CONTRACT_ADDRESS,\n DAO_REGISTRY_ADAPTER_CONTRACT_ADDRESS,\n DEFAULT_CHAIN,\n DISTRIBUTE_CONTRACT_ADDRESS,\n FINANCING_CONTRACT_ADDRESS,\n GUILDKICK_CONTRACT_ADDRESS,\n MANAGING_CONTRACT_ADDRESS,\n NFT_ADAPTER_CONTRACT_ADDRESS,\n // NFT_EXTENSION_CONTRACT_ADDRESS,\n OFFCHAINVOTING_CONTRACT_ADDRESS,\n ONBOARDING_CONTRACT_ADDRESS,\n RAGEQUIT_CONTRACT_ADDRESS,\n TRIBUTE_CONTRACT_ADDRESS,\n TRIBUTE_NFT_CONTRACT_ADDRESS,\n VOTING_CONTRACT_ADDRESS,\n} from '../../config';\n\ntype AdapterProps = {\n abiFunctionName: string;\n adapterId?: string;\n contractAddress: string;\n description: string;\n extensionId?: string;\n name: string;\n /**\n * Sets the access control for a particular adapter (by address)\n * to a specific extension. Both adapter and extension need to be\n * already registered to the DAO.\n *\n * We call the `setAclToExtensionForAdapter` function from the\n * DaoRegistry, and set the access for each adapter based on this flag\n */\n setAclToExtensionForAdapter?: boolean;\n};\n\nexport type AdaptersAndExtensionsType = {\n isExtension?: boolean;\n options?: Omit<\n AdapterProps,\n | 'abiFunctionName'\n | 'adapterId'\n | 'contractAddress'\n | 'description'\n | 'extensionId'\n | 'name'\n | 'setAclToExtensionForAdapter'\n >;\n optionDefaultTarget?: DaoAdapterConstants;\n} & Partial;\n\n/**\n * @note README [IMPORTANT]\n *\n * HOW TO ADD A NEW DEFAULT ADAPTER OR EXTENSION\n *\n * 1. Add the new contract address to the `./src/config.ts`\n * list ie: _CONTRACT_ADDRESS\n *\n * 2. Create a new object in the following variable `defaultAdaptersAndExtensions`\n * - Extensions: must have the key/value pair set `isExtension: true`\n * - Choosing an adapter/extension from a group: must be defined within a nested `options` key\n */\nexport const defaultAdaptersAndExtensions: AdaptersAndExtensionsType[] = [\n {\n name: DaoAdapterConstants.CONFIGURATION,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.CONFIGURATION),\n contractAddress: CONFIGURATION_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'submitConfigurationProposal',\n description:\n 'Manages storing and retrieving per-DAO settings required by shared adapters.',\n },\n {\n name: DaoAdapterConstants.DISTRIBUTE,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.DISTRIBUTE),\n contractAddress: DISTRIBUTE_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'submitProposal',\n description:\n 'Allows the members to distribute funds to one or all members of the DAO.',\n },\n {\n name: DaoAdapterConstants.FINANCING,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.FINANCING),\n contractAddress: FINANCING_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'createFinancingRequest',\n description:\n 'Allows individuals and/or organizations to request funds to finance their projects, and the members of the DAO have the power to vote and decide which projects should be funded.',\n },\n {\n name: DaoAdapterConstants.GUILDKICK,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.GUILDKICK),\n contractAddress: GUILDKICK_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'submitKickProposal',\n description:\n 'Gives the members the freedom to choose which individuals or organizations should really be part of the DAO.',\n },\n {\n name: DaoAdapterConstants.MANAGING,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.MANAGING),\n contractAddress: MANAGING_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'submitProposal',\n description:\n 'Enhances the DAO capabilities by adding/updating the DAO Adapters through a voting process.',\n },\n {\n name: DaoAdapterConstants.ONBOARDING,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.ONBOARDING),\n contractAddress: ONBOARDING_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'configureDao',\n description:\n 'Triggers the process of minting internal tokens in exchange of a specific token at a fixed price.',\n },\n {\n name: DaoAdapterConstants.RAGEQUIT,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.RAGEQUIT),\n contractAddress: RAGEQUIT_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'ragequit',\n description:\n 'Gives the members the freedom to choose when it is the best time to exit the DAO for any given reason.',\n },\n {\n name: DaoAdapterConstants.TRIBUTE,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.TRIBUTE),\n contractAddress: TRIBUTE_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'configureDao',\n description:\n 'Allows potential and existing DAO members to contribute any amount of ERC-20 tokens to the DAO in exchange for any amount of DAO internal tokens.',\n },\n {\n name: DaoAdapterConstants.TRIBUTE_NFT,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.TRIBUTE_NFT),\n contractAddress: TRIBUTE_NFT_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'provideTributeNFT',\n description:\n 'Allows potential DAO members to contribute a registered ERC-721 asset to the DAO in exchange for any amount of DAO units.',\n },\n {\n options: [\n {\n name: DaoAdapterConstants.VOTING,\n displayName: DaoAdapterConstants.OFFCHAINVOTING,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.VOTING),\n contractAddress: OFFCHAINVOTING_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'configureDao',\n description:\n 'Adds the offchain voting governance process to the DAO to support gasless voting.',\n setAclToExtensionForAdapter: true,\n },\n {\n name: DaoAdapterConstants.VOTING,\n displayName: DaoAdapterConstants.VOTING,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.VOTING),\n contractAddress: VOTING_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'configureDao',\n description:\n 'Adds the simple on chain voting governance process to the DAO.',\n setAclToExtensionForAdapter: true,\n },\n ],\n optionDefaultTarget: DaoAdapterConstants.VOTING,\n },\n {\n name: DaoAdapterConstants.BANK,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.BANK),\n contractAddress: BANK_ADAPTER_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'withdraw',\n description:\n 'Allows the members to withdraw their funds from the DAO bank.',\n },\n {\n name: DaoAdapterConstants.NFT,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.NFT),\n contractAddress: NFT_ADAPTER_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'collect',\n description: 'Transfers ownership of an NFT to the DAO collection.',\n },\n {\n name: DaoAdapterConstants.COUPON_ONBOARDING,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.COUPON_ONBOARDING),\n contractAddress: COUPONONBOARDING_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'configureDao',\n description:\n 'Provides a way to onboard an initial group of members quickly without requiring multiple proposals.',\n },\n {\n name: DaoAdapterConstants.DAO_REGISTRY,\n adapterId: getAdapterOrExtensionId(DaoAdapterConstants.DAO_REGISTRY),\n contractAddress: DAO_REGISTRY_ADAPTER_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n abiFunctionName: 'updateDelegateKey',\n description: 'Allows the member to update delegate key.',\n },\n // {\n // isExtension: true,\n // name: DaoExtensionConstants.NFT,\n // extensionId: getAdapterOrExtensionId(DaoExtensionConstants.NFT),\n // contractAddress: NFT_EXTENSION_CONTRACT_ADDRESS[DEFAULT_CHAIN],\n // abiFunctionName: 'registerPotentialNewNFT',\n // description:\n // 'Adds to the DAO the capability of managing and curate a collection of standard NFTs.',\n // },\n];\n","import {useCallback, useEffect, useState} from 'react';\nimport {useLazyQuery} from '@apollo/react-hooks';\nimport {useSelector} from 'react-redux';\n\nimport {StoreState} from '../../../store/types';\nimport {AsyncStatus} from '../../../util/types';\nimport {Adapters, Extensions} from '../types';\n\nimport {GET_ADAPTERS_AND_EXTENSIONS} from '../../../gql';\n\nimport {\n defaultAdaptersAndExtensions,\n AdaptersAndExtensionsType,\n} from '../config';\nimport {GQL_QUERY_POLLING_INTERVAL} from '../../../config';\n\nimport {DaoAdapterConstants, DaoExtensionConstants} from '../enums';\n\nexport type AdapterType = {\n __typename: string;\n id: string;\n acl: string;\n adapterId: string;\n adapterAddress: string;\n};\n\nexport type ExtensionType = {\n __typename: string;\n id: string;\n extensionId: string;\n extensionAddress: string;\n};\n\ntype UseAdaptersOrExtensionsReturn = {\n adapterExtensionStatus: AsyncStatus;\n getAdapterOrExtensionFromRedux: (\n adapterName: DaoAdapterConstants | DaoExtensionConstants\n ) => Record;\n registeredAdaptersOrExtensions: AdapterType[] | undefined;\n unRegisteredAdaptersOrExtensions: Adapters[] | undefined;\n};\n\nexport type AdaptersType = AdapterType & Adapters;\nexport type ExtensionsType = ExtensionType & Extensions;\n\n/**\n * useAdaptersOrExtensions\n *\n * This component queries The Graph API to get the daos adapters.\n * It returns the available adapters filtered by a search on the current dao.\n *\n * @returns {UseAdaptersOrExtensionsReturn}\n */\nexport function useAdaptersOrExtensions(): UseAdaptersOrExtensionsReturn {\n /**\n * Selectors\n */\n const {DaoRegistryContract, ...adapterExtensionContracts} = useSelector(\n (s: StoreState) => s.contracts\n );\n\n /**\n * Their hooks\n */\n const [getRegisteredAdaptersAndExtensions, {called, data, error}] =\n useLazyQuery(GET_ADAPTERS_AND_EXTENSIONS, {\n pollInterval: GQL_QUERY_POLLING_INTERVAL,\n variables: {\n daoAddress: DaoRegistryContract?.contractAddress.toLowerCase(),\n },\n });\n\n /**\n * State\n */\n const [registeredAdaptersOrExtensions, setRegisteredAdaptersOrExtensions] =\n useState();\n const [\n unRegisteredAdaptersOrExtensions,\n setUnRegisteredAdaptersOrExtensions,\n ] = useState();\n const [adapterExtensionStatus, setAdapterExtensionStatus] =\n useState(AsyncStatus.STANDBY);\n\n const getAdaptersAndExtensionsCached = useCallback(\n getAdaptersAndExtensions,\n []\n );\n\n useEffect(() => {\n if (!called) {\n getRegisteredAdaptersAndExtensions();\n }\n }, [called, getRegisteredAdaptersAndExtensions]);\n\n // Get adapters and extensions from GQL\n useEffect(() => {\n if (!DaoRegistryContract?.contractAddress) return;\n\n try {\n setAdapterExtensionStatus(AsyncStatus.PENDING);\n\n if (data) {\n // extract adapters and extensions from gql data\n const {adapters, extensions} = data.tributeDaos[0] as Record<\n string,\n any\n >;\n\n // create a list of registered and un-registered adapters and extensions\n const {registeredList, unRegisteredList} =\n getAdaptersAndExtensionsCached(adapters, extensions);\n\n setRegisteredAdaptersOrExtensions(registeredList);\n setUnRegisteredAdaptersOrExtensions(unRegisteredList);\n\n // done; lets set status to fulfilled\n setAdapterExtensionStatus(AsyncStatus.FULFILLED);\n } else {\n if (error) {\n throw new Error(error.message);\n }\n }\n } catch (error) {\n setRegisteredAdaptersOrExtensions(undefined);\n setUnRegisteredAdaptersOrExtensions(undefined);\n\n setAdapterExtensionStatus(AsyncStatus.REJECTED);\n }\n }, [DaoRegistryContract, data, error, getAdaptersAndExtensionsCached]);\n\n /**\n * getAdaptersAndExtensions\n *\n * Find all registered and un-registered adapters and extensions\n *\n * @param registeredDaoAdapters\n * @param registeredDaoExtensions\n */\n function getAdaptersAndExtensions(\n registeredDaoAdapters: any,\n registeredDaoExtensions: any\n ): Record {\n //@todo types\n\n let registeredList: AdaptersAndExtensionsType[] = [];\n let unRegisteredList: AdaptersAndExtensionsType[] = [];\n\n const getAdapterFromGql = (adapterId: string) => {\n return registeredDaoAdapters.find(\n (adapter: AdaptersAndExtensionsType) => {\n return adapter.adapterId?.toLowerCase() === adapterId?.toLowerCase();\n }\n );\n };\n\n const getExtensionFromGql = (extensionId: string) => {\n return registeredDaoExtensions.find(\n (extension: AdaptersAndExtensionsType) => {\n return (\n extension.extensionId?.toLowerCase() === extensionId?.toLowerCase()\n );\n }\n );\n };\n\n defaultAdaptersAndExtensions.forEach(\n (adapterOrExtension: AdaptersAndExtensionsType | any) => {\n if (adapterOrExtension?.isExtension) {\n // Add an extenaion\n\n const gqlExtension = getExtensionFromGql(\n adapterOrExtension.extensionId\n );\n\n if (gqlExtension) {\n registeredList.push({\n ...gqlExtension,\n ...adapterOrExtension,\n name: adapterOrExtension.name as DaoAdapterConstants,\n description: adapterOrExtension.description,\n } as AdaptersAndExtensionsType);\n } else {\n unRegisteredList.push({\n ...adapterOrExtension,\n name: adapterOrExtension.name as DaoAdapterConstants,\n description: adapterOrExtension.description,\n } as AdaptersAndExtensionsType);\n }\n } else if (adapterOrExtension?.options) {\n // Check options for adapters and extensions\n\n // dry-run check to see if any of the options have already been registered\n const maybeSomeAdapters = adapterOrExtension?.options.some(\n (s: any) => {\n return !s.isExtension && getAdapterFromGql(s.adapterId);\n }\n );\n\n // dry-run check to see if any of the options have already been registered\n const maybeSomeExtensions = adapterOrExtension?.options.some(\n (s: any) => {\n return s.isExtension && getExtensionFromGql(s.extensionId);\n }\n );\n\n // this means an adapter or extension has already been\n // added from the options\n if (maybeSomeAdapters || maybeSomeExtensions) {\n let shouldSkip = false;\n\n adapterOrExtension?.options?.forEach((option: any) => {\n if (shouldSkip) {\n return;\n }\n\n if (option?.isExtension) {\n const gqlExtension = getExtensionFromGql(option.extensionId);\n\n if (gqlExtension) {\n registeredList.push({\n ...gqlExtension,\n ...option,\n name: option.name as DaoAdapterConstants,\n description: option.description,\n } as AdaptersAndExtensionsType);\n\n shouldSkip = true;\n return;\n } else {\n unRegisteredList.push({\n ...option,\n name: option.name as DaoAdapterConstants,\n description: option.description,\n } as AdaptersAndExtensionsType);\n }\n } else {\n const gqlAdapter = getAdapterFromGql(option.adapterId);\n if (gqlAdapter) {\n registeredList.push({\n ...gqlAdapter,\n ...option,\n name: option.name as DaoAdapterConstants,\n description: option.description,\n } as AdaptersAndExtensionsType);\n\n shouldSkip = true;\n return;\n } else {\n unRegisteredList.push({\n ...option,\n name: option.name as DaoAdapterConstants,\n description: option.description,\n } as AdaptersAndExtensionsType);\n }\n }\n });\n } else {\n // just add the options as a nested object;\n // this will trigger the dropdown to display the options\n unRegisteredList.push(adapterOrExtension);\n }\n } else {\n // Add an adapter\n const gqlAdapter = getAdapterFromGql(adapterOrExtension.adapterId);\n\n if (gqlAdapter) {\n registeredList.push({\n ...gqlAdapter,\n ...adapterOrExtension,\n name: adapterOrExtension.name as DaoAdapterConstants,\n description: adapterOrExtension.description,\n } as AdaptersAndExtensionsType);\n } else {\n unRegisteredList.push({\n ...adapterOrExtension,\n name: adapterOrExtension.name as DaoAdapterConstants,\n description: adapterOrExtension.description,\n } as AdaptersAndExtensionsType);\n }\n }\n }\n );\n\n return {\n registeredList,\n unRegisteredList,\n };\n }\n\n /**\n * getAdapterOrExtensionFromRedux\n *\n * @param adapterOrExtensionName DaoAdapterConstants\n */\n function getAdapterOrExtensionFromRedux(\n adapterOrExtensionName: DaoAdapterConstants | DaoExtensionConstants\n ): Record {\n return Object.keys(adapterExtensionContracts)\n .map((ae) => adapterExtensionContracts[ae])\n .filter((ae) => ae) // filter out any `null` objects\n .filter((ae) => ae.adapterOrExtensionName === adapterOrExtensionName)[0];\n }\n\n return {\n adapterExtensionStatus,\n getAdapterOrExtensionFromRedux,\n registeredAdaptersOrExtensions,\n unRegisteredAdaptersOrExtensions,\n };\n}\n","import Web3 from 'web3';\n\nimport {FormFieldErrors} from '../../../util/enums';\nimport {useIsDefaultChain} from '../../web3/hooks';\n\ntype ValidationType =\n | 'address'\n | 'bytes32'\n | 'bytes32[]'\n | 'uint256'\n | 'uint256[]';\n\nexport type ParamInputType = string | string[] | number | number[];\n\nexport enum ParamType {\n ADDRESS = 'address',\n BYTES32 = 'bytes32',\n BYTES32_ARRAY = 'bytes32[]',\n UINT256 = 'uint256',\n UINT256_ARRAY = 'uint256[]',\n}\n\ntype UseValidationReturn = {\n isParamInputValid: (\n paramInput: ParamInputType,\n paramType: ValidationType\n ) => boolean;\n getFormFieldError: (paramType: ValidationType) => string | FormFieldErrors;\n formatInputByType: (inputValue: any, inputType: ParamType) => string;\n};\n\n/**\n * useValidation\n *\n * This hook validates the input values for the ABI parameters.\n *\n * @returns {UseValidationReturn}\n */\nexport function useValidation(): UseValidationReturn {\n /**\n * Hooks\n */\n const {defaultChain} = useIsDefaultChain();\n\n function isParamInputValid(\n paramInput: ParamInputType,\n paramType: ValidationType\n ): boolean {\n const parameter: string = paramInput.toString();\n\n const isValid: boolean =\n paramType === ParamType.ADDRESS\n ? isAddressValid(parameter)\n : paramType === ParamType.BYTES32\n ? isBytes32Valid(parameter)\n : paramType === ParamType.BYTES32_ARRAY\n ? isBytes32ArrayValid(parameter)\n : paramType === ParamType.UINT256\n ? isUint256Valid(parameter)\n : paramType === ParamType.UINT256_ARRAY\n ? isUint256ArrayValid(parameter)\n : true;\n\n return isValid;\n }\n\n function getFormFieldError(\n paramType: ValidationType\n ): string | FormFieldErrors {\n return paramType === ParamType.ADDRESS\n ? FormFieldErrors.INVALID_ETHEREUM_ADDRESS\n : paramType === ParamType.BYTES32\n ? FormFieldErrors.INVALID_BYTES32\n : paramType === ParamType.BYTES32_ARRAY\n ? FormFieldErrors.INVALID_BYTES32_ARRAY\n : paramType === ParamType.UINT256\n ? FormFieldErrors.INVALID_NUMBER\n : paramType === ParamType.UINT256_ARRAY\n ? FormFieldErrors.INVALID_NUMBER_ARRAY\n : FormFieldErrors.REQUIRED;\n }\n\n /**\n * isAddressValid()\n *\n * @returns boolean\n * @param parameter string\n */\n function isAddressValid(parameter: string): boolean {\n try {\n if (!parameter) return false;\n\n return (\n Web3.utils.checkAddressChecksum(parameter, defaultChain) ||\n Web3.utils.isAddress(parameter, defaultChain)\n );\n } catch (error) {\n return false;\n }\n }\n\n /**\n * isBytes32Valid()\n *\n * @returns boolean\n * @param parameter string\n */\n function isBytes32Valid(parameter: string): boolean {\n try {\n if (!parameter) return false;\n\n return parameter.length === 66 && Web3.utils.isHex(parameter);\n } catch (error) {\n return false;\n }\n }\n\n /**\n * isBytes32ArrayValid()\n *\n * @returns boolean\n * @param parameter string\n */\n function isBytes32ArrayValid(parameter: string): boolean {\n try {\n return Array.from(parameter.split(',')).every(\n (p) => p.length === 66 && Web3.utils.isHex(p)\n );\n } catch (error) {\n return false;\n }\n }\n\n /**\n * isUint256Valid\n *\n * @returns boolean\n * @param parameter string\n */\n function isUint256Valid(parameter: string): boolean {\n return !isNaN(Number(parameter));\n }\n\n /**\n * isUint256ArrayValid()\n *\n * @returns boolean\n * @param parameter string\n */\n function isUint256ArrayValid(parameter: string): boolean {\n return Array.from(parameter.split(',')).every((p) => Number(p));\n }\n\n function formatInputByType(inputValue: any, inputType: any) {\n const formatBytes32Array = (): string[] =>\n Array.from(inputValue.split(','));\n const formatUint256Array = (): number[] => {\n return Array.from(inputValue.split(',').map((i: string) => Number(i)));\n };\n\n return inputType === ParamType.BYTES32_ARRAY\n ? formatBytes32Array()\n : inputType === ParamType.UINT256_ARRAY\n ? formatUint256Array()\n : inputType === ParamType.UINT256\n ? Number(inputValue)\n : inputValue;\n }\n\n return {\n isParamInputValid,\n getFormFieldError,\n formatInputByType,\n };\n}\n","import React, {useState} from 'react';\n\nimport {DaoAdapterConstants, DaoExtensionConstants} from './enums';\n\ntype AdapterExtensionTarget =\n | DaoAdapterConstants\n | DaoExtensionConstants\n | null;\n\ntype AdapterExtensionSelectTargetRenderActionsArgs = {\n selectedTargetOption: AdapterExtensionTarget;\n selectedTargetOptionProps: any;\n};\n\ntype AdapterExtensionSelectTargetProps = {\n defaultTarget?: AdapterExtensionTarget;\n adapterOrExtension: Record;\n renderActions: (\n a: AdapterExtensionSelectTargetRenderActionsArgs\n ) => JSX.Element | null;\n renderCheckboxAction: (a: {\n selectedTargetOption: AdapterExtensionTarget;\n }) => JSX.Element | null;\n};\n\n/**\n * AdapterExtensionSelectTarget\n *\n * Displays a drop-down confirm list with options to\n * choose to from the defined list of options in `./config.ts`\n\n *\n * @param {AdapterExtensionSelectTargetProps} props\n * @returns {JSX.Element}\n */\nexport default function AdapterExtensionSelectTarget(\n props: AdapterExtensionSelectTargetProps\n) {\n const {\n adapterOrExtension,\n defaultTarget,\n renderActions,\n renderCheckboxAction,\n } = props;\n\n /**\n * State\n */\n\n const [selectedTargetOption, setSelectedTargetOption] =\n useState(defaultTarget || null);\n\n const [selectedTargetOptionProps, setSelectedTargetOptionProps] =\n useState({});\n\n /**\n * Functions\n */\n\n function handleSelectTargetChange(\n event: React.ChangeEvent\n ) {\n const {value} = event.target;\n\n setSelectedTargetOption(value as AdapterExtensionTarget);\n\n const selectedTargetProps: string = adapterOrExtension?.options.find(\n (selectedOption: any) => selectedOption.displayName === value\n );\n\n setSelectedTargetOptionProps(selectedTargetProps);\n }\n\n function renderDescription(\n selectedTargetOption: DaoAdapterConstants | DaoExtensionConstants | null\n ) {\n if (!selectedTargetOption) return null;\n\n try {\n const description: string =\n adapterOrExtension?.options.find(\n (selectedOption: any) =>\n selectedOption.displayName === selectedTargetOption\n ).description || '';\n\n return {description} ;\n } catch (error) {\n console.warn(error);\n }\n }\n\n return (\n <>\n \n {/* CHECKBOX ACTIONS */}\n {renderCheckboxAction({selectedTargetOption})}\n\n
\n {/* ADAPTER/EXTENSION TARGET DEFAULT NAME */}\n \n {adapterOrExtension?.optionDefaultTarget}\n {adapterOrExtension?.isExtension && '(EXTENSION)'}\n \n\n {/* CHOOSE ADAPTER/EXTENSION TARGET */}\n \n \n Select a {adapterOrExtension?.optionDefaultTarget} type…\n \n\n {adapterOrExtension?.options.map((option: any) => (\n \n {option.displayName.toUpperCase()}\n \n ))}\n \n\n {renderDescription(selectedTargetOption)}\n
\n
\n\n {/* BUTTON ACTIONS */}\n {renderActions({selectedTargetOption, selectedTargetOptionProps})}\n >\n );\n}\n","import React from 'react';\n\nimport FadeIn from './FadeIn';\n\ntype InputErrorProps = {\n error: string;\n};\n\nexport default function InputError(\n props: InputErrorProps & React.HtmlHTMLAttributes\n) {\n const {error, ...restProps} = props;\n\n return (\n <>\n {error && (\n \n \n {error}\n
\n \n )}\n >\n );\n}\n","import {useState} from 'react';\nimport {useForm} from 'react-hook-form';\nimport {useSelector} from 'react-redux';\nimport {AbiItem} from 'web3-utils/types';\n\nimport {DaoAdapterConstants} from './enums';\nimport {AdaptersOrExtensions} from './types';\nimport {StoreState} from '../../store/types';\nimport {Web3TxStatus} from '../web3/types';\nimport {FormFieldErrors} from '../../util/enums';\nimport {getValidationError} from '../../util/helpers';\nimport {BURN_ADDRESS} from '../../util/constants';\nimport {useContractSend, useETHGasPrice, useWeb3Modal} from '../web3/hooks';\nimport {useAdaptersOrExtensions, useValidation} from './hooks';\nimport {ParamInputType, ParamType} from './hooks/useValidation';\n\nimport ErrorMessageWithDetails from '../common/ErrorMessageWithDetails';\nimport InputError from '../common/InputError';\nimport Loader from '../feedback/Loader';\n\ntype ConfigurationFormProps = {\n abiConfigurationInputs: Record | undefined;\n abiMethodName: string;\n adapterOrExtension: Pick | undefined;\n closeHandler?: () => void;\n};\n\ntype RemoveExtensionArgument = [\n //`extensionId`\n string\n];\n\ntype RemoveAdapterArguments = [\n // `adapterId`\n string,\n // set to `BURN_ADDRESS` zero address\n string,\n // acl set to `0` - no access/permissions\n number,\n // keys\n [],\n // values\n []\n];\n\nexport default function ConfigurationForm({\n abiConfigurationInputs,\n abiMethodName,\n adapterOrExtension,\n closeHandler,\n}: ConfigurationFormProps) {\n /**\n * Selectors\n */\n const {DaoRegistryContract} = useSelector(\n (state: StoreState) => state.contracts\n );\n\n /**\n * State\n */\n const [submitError, setSubmitError] = useState();\n const [configureAdapterStatus, setConfigureAdapterStatus] =\n useState(Web3TxStatus.STANDBY);\n const [removeStatus, setRemoveStatus] = useState