@dcl/vesting-dashboard 2.1.4-4812386627.commit-2aca72d → 2.1.4-4918486269.commit-be0926b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/react-semantic-ui-datepickers/dist/locales sync /^/.//.*/.json$","modules/contract/actions.js","modules/contract/reducer.js","modules/ticker/actions.js","modules/contract/selectors.js","utils/index.js","modules/ethereum/actions.js","modules/ethereum/reducer.js","modules/ticker/reducer.js","modules/reducer.js","modules/api.js","modules/ethereum/selectors.js","modules/constants.js","context/DaoInitiativeContext.js","hooks/useResponsive.js","images/proposal_button_icon.svg","components/DaoInitiativeButton/DaoInitiativeButton.js","components/Header/utils.js","components/Header/Header.js","components/Header/index.js","components/Header/Header.container.js","components/Dashboard/Progress/Bar/Bar.js","images/info.svg","components/Info/Info.js","components/Dashboard/Progress/Progress.js","components/Dashboard/Progress/index.js","components/Dashboard/Progress/Progress.container.js","modules/ethereum/utils.js","images/address_icon.svg","components/ChangeBeneficiaryModal/ChangeBeneficiaryModal.js","components/ChangeBeneficiaryModal/ChangeBeneficiaryModal.container.js","components/ChangeBeneficiaryModal/index.js","components/Dashboard/Details/Details.js","components/Dashboard/Details/Details.container.js","components/Dashboard/Details/index.js","components/ManaWidget/ManaWidget.js","components/ManaWidget/index.js","images/copy.svg","images/link.svg","images/dai_logo.svg","images/usdt_logo.svg","images/usdc_logo.svg","hooks/useReviewUrl.js","components/Dashboard/Overview/Overview.js","components/Dashboard/Overview/Overview.container.js","components/Dashboard/Overview/index.js","images/grant_icon.svg","components/Dashboard/Beneficiary/Beneficiary.js","components/Dashboard/Beneficiary/index.js","components/Dashboard/Beneficiary/Beneficiary.container.js","images/future_events_icon.svg","components/Dashboard/Schedule/ScheduleEvent.js","components/Dashboard/Schedule/ShowMore.js","components/Dashboard/Schedule/Schedule.js","components/Dashboard/Schedule/index.js","components/Dashboard/Schedule/Schedule.container.js","modules/ticker/selectors.js","components/Dashboard/Chart/utils/index.js","components/Dashboard/Chart/Chart.js","components/Dashboard/Chart/index.js","components/Dashboard/Chart/Chart.container.js","components/Dashboard/Summary/Summary.js","components/Dashboard/Summary/index.js","components/Dashboard/Summary/Summary.container.js","components/Dashboard/PendingFunds/PendingFunds.js","components/Dashboard/PendingFunds/index.js","components/Dashboard/PendingFunds/PendingFunds.container.js","components/Dashboard/Dashboard.js","components/Dashboard/index.js","components/Footer/Footer.tsx","components/Footer/index.js","components/Input/Input.js","components/Input/index.js","components/LandingPage/LandingPage.js","components/ErrorPage/ErrorPage.js","components/LoadingPage/LoadingPage.js","components/WrongNetworkModal/WrongNetworkModal.js","components/App/App.js","components/App/App.container.js","components/App/index.js","index.js","modules/store.js"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","FETCH_CONTRACT_REQUEST","FETCH_CONTRACT_SUCCESS","FETCH_CONTRACT_FAILURE","RELEASE_REQUEST","RELEASE_SUCCESS","RELEASE_FAILURE","CHANGE_BENEFICIARY_REQUEST","CHANGE_BENEFICIARY_SUCCESS","CHANGE_BENEFICIARY_FAILURE","fetchContractSuccess","contract","type","changeBeneficiaryRequest","address","changeBeneficiarySuccess","changeBeneficiaryFailure","error","INITIAL_STATE","data","loading","FETCH_TICKER_REQUEST","FETCH_TICKER_SUCCESS","FETCH_TICKER_FAILURE","fetchTickerSuccess","ticker","getState","state","app","getContract","getAddress","routing","location","pathname","slice","isValidAddress","test","getMonthDiff","start","finish","getDate","date","moment","startOf","Math","abs","diff","openInNewTab","url","event","arguments","length","undefined","window","open","focus","preventDefault","copyToClipboard","text","navigator","clipboard","writeText","Promise","reject","CONNECT_REQUEST","CONNECT_SUCCESS","CONNECT_FAILURE","connectSuccess","network","chainId","combineReducers","vesting","tokenContracts","action","_objectSpread","ethereum","_action$address","toLowerCase","TokenAddressByChainId","MANA","DAI","USDT","USDC","ContractVersion","V1","V2","TopicByVersion","_TopicByVersion","_defineProperty","RELEASE","REVOKE","TRANSFER_OWNERSHIP","PAUSED","UNPAUSED","API","_classCallCheck","store","web3","localWallet","_createClass","key","value","this","Web3","providers","HttpProvider","getWeb3","eth","_logIn","_asyncToGenerator","_regeneratorRuntime","mark","_callee","accounts","wrap","_context","prev","next","request","method","sent","stop","apply","_connect","_callee2","_tokenContracts","TokenAddress","_context2","logIn","t0","console","getEth","getChainId","concat","Contract","manaAbi","daiAbi","usdtAbi","usdcAbi","abrupt","name","_fetchContract","_callee3","version","tokenContractAddress","decimals","promises","_yield$Promise$all","_yield$Promise$all2","symbol","balance","logs","owner","duration","cliff","beneficiary","vestedAmount","releasableAmount","revoked","revocable","released","periodDuration","vestedPerPeriod","paused","pausable","linear","_context3","periodicTokenVestingAbi","methods","getIsLinear","call","vestingAbi","token","getToken","v1","v2","getCliff","getBeneficiary","getVested","getReleasable","getIsRevoked","getIsRevocable","getReleased","getStart","getPeriod","getVestedPerPeriod","getIsPausable","getStop","all","balanceOf","getLogs","_slicedToArray","parseInt","pow","amount","total","reduce","a","b","_getLogs","_callee4","web3Logs","blocks","cumulativeReleased","Topic","idx","log","_context4","getPastLogs","fromBlock","toBlock","getBlock","blockNumber","t1","done","t2","topics","push","getTransferOwnershipLog","_toConsumableArray","timestamp","getReleaseLog","Big","acum","mul","toNumber","getRevokeLog","getPausedLog","getUnpausedLog","_x","_x2","topic","previousOwner","newOwner","totalReleased","currentReleased","cumulative","Number","div","minus","add","_release","_callee5","from","_context5","getFrom","release","send","changeBeneficiary","setBeneficiary","_fetchTicker","_callee6","resp","json","usd","_args6","_context6","fetch","mode","DaoInitiativeContext","createContext","DaoInitiativeContextProvider","_ref","children","_useState","useState","_useState2","proposalUrl","setProposalUrl","_jsx","Provider","onlyMobileMaxWidth","CURRENT_WIDTH","useResponsive","width","setWidth","useEffect","updateWidth","currentWidth","innerWidth","addEventListener","removeEventListener","useCallback","limits","minWidth","maxWidth","DaoInitiativeButton","useContext","isMobile","responsive","_jsxs","Button","primary","onClick","href","className","FormattedMessage","src","ButtonIcon","alt","DEFAULT_AVATAR","createDefaultProfile","userId","ethAddress","hasClaimedName","avatar","snapshots","face","face128","face256","body","bodyShape","eyes","color","r","g","hair","skin","wearables","email","description","blocked","inventory","tutorialStep","isDefaultProfile","_getDclProfile","response","profileResponse","profileData","avatars","signInHandler","enable","then","reload","Header","props","isSignedIn","setIsSignedIn","_useState3","_useState4","profile","setProfile","getDclProfile","Container","style","height","Grid","verticalAlign","marginLeft","marginRight","Row","Column","paddingLeft","Logo","padding","floated","paddingRight","UserMenu","onSignIn","onClickProfile","React","memo","connect","Bar","vested","Info","message","position","Popup","content","trigger","InfoSVG","on","basic","Progress","vestedPercentage","round","releasedPercentage","sub","display","FormattedNumber","textAlign","values","chunks","areSameAddress","ChangeBeneficiaryModal","onClose","onSubmit","errorMessage","successMessage","setState","setError","isError","msg","setLoading","isLoading","Modal","size","closeIcon","Close","Content","Field","onChange","_","addr","label","placeholder","disabled","Actions","setSuccess","br","catch","dispatch","_ref3","api","_x7","_x8","_x9","cursor","AddressIcon","substring","FormattedDate","Date","year","month","day","getCliffPeriod","vestingCliff","monthPl","FormattedPlural","one","other","getAmount","helperId","getRevocable","getPausable","getActionButton","Details","isBeneficiary","onRelease","isModalOpen","setIsModalOpen","_ref2","_x4","_x5","_x6","ManaWidget","script","document","createElement","appendChild","removeChild","useReviewUrl","reviewUrl","useMemo","process","logo","DaiLogo","UsdtLogo","UsdcLogo","Overview","vestingMonths","_useReviewUrl","_useReviewUrl2","handleClick","intl","useIntl","_Fragment","Helmet","formatMessage","columns","Link","Copy","months","monthsPl","monthsCliffPl","Beneficiary","_useContext","getProposal","proposals","proposal","_proposalUrl","filter","p","URL","searchParams","append","Icon","marginTop","ScheduleEvent","_props$timestamp","_props$future","future","textTransform","margin","fontSize","ShowMore","addFulfilledEvent","eventList","Schedule","filteredLogs","scheduleEvents","setScheduleEvents","revokedOrPaused","setRevokedOrPaused","scheduleEventsSetpUp","fullShow","endContractTs","endContractDate","fulfilledFlag","addEventHandler","logData","addReleasedEvent","addRevokedEvent","addPausedEvent","addUnpausedEvent","latestLog","_step","_iterator","_createForOfIteratorHelper","s","n","err","f","FutureIcon","cpLogs","sort","_step2","_iterator2","getTicker","DAY_IN_SECONDS","getDurationInDays","floor","getCliffEndDay","getDaysFromStart","ceil","getDaysFromRevoke","revokeTs","toDataArray","callback","Array","emptyDataArray","x","i","getRevokedData","revokeLog","isRevoked","getXAxisData","durationInDays","dateOptions","formatDate","getVestingData","cliffEndDay","vestingDays","vestedPerDay","_getRevokedData","_getRevokedData2","revokedDay","vestingData","fill","getVestingDataV2","vestedThatDay","elapsedPeriods","elapsedPeriodsTrunc","trunc","getReleaseData","releaseLogs","today","releaseDays","releaseData","_loop","_getRevokedData3","_getRevokedData4","finalDataPoint","getLabelInterval","durationInMonths","Chart","revokeOrPauseDay","getTime","daysFromStart","isPaused","_getRevokedData5","_getRevokedData6","_getPausedAndRevokedD","getPausedAndRevokedData","_getPausedAndRevokedD2","toBeVestedLabel","option","title","textStyle","tooltip","formatter","args","newName","axisValue","getFormattedValue","isNaN","formatNumber","forEach","marker","seriesName","dataIndex","getTooltipFormatter","legend","grid","left","right","bottom","containLabel","xAxis","boundaryGap","axisLabel","align","lineHeight","interval","axisTick","show","yAxis","lookup","magnitude","abv","magnitudes","obj","valueMag","log10","diffArr","minNumber","min","findIndex","inside","showMinLabel","series","markLine","backgroundColor","borderRadius","lineStyle","visualMap","seriesIndex","dimension","pieces","lte","gt","fundsChart","setFundsChart","echarts","TitleComponent","TooltipComponent","GridComponent","LegendComponent","LineChart","SVGRenderer","UniversalTransition","VisualMapComponent","MarkLineComponent","chartDom","getElementById","onresize","chart","resize","top","setOption","Summary","percentage","cliffEnd","nearly","PendingFunds","contractTotal","formattedMessageId","Segment","pending","Dashboard","stackable","padded","Footer","_Component","_inherits","_super","_createSuper","getFullYear","Component","_React$PureComponent","_this$props","rest","_objectWithoutProperties","_excluded","classes","PureComponent","defaultProps","Input","LandingPage","stateAddress","isNotFound","handleAddressChange","helpText","ErrorPage","connectionError","errorText","indexOf","LoadingPage","UNKNOWN_CHAIN_NAME","WrongNetworkModal","currentNetwork","expectedNetwork","onSwitchNetwork","expectedChainName","getChainName","ModalNavigation","currentChainName","chainName","fluid","parseChainIdHex","String","App","_this","_isMounted","target","trim","localStorage","setItem","handleKeyDown","isEnterKey","which","onAccess","showPrompt","handleWrongChain","showNetworkChangeModal","getItem","bind","_assertThisInitialized","onConnect","removeListener","nextProps","_this2","isConnected","_switchToMainnet","params","_this3","_this$props2","landingProps","loadingMessage","ChainId","ETHEREUM_MAINNET","switchToMainnet","_this$props3","contractError","isLoaded","renderLoading","renderNetworkChangeModal","renderError","renderPrompt","withRouter","getConnectionError","getContractError","getNetwork","isConnecting","isFetchingContract","contractAddress","_yield$api$connect","fetchContract","_x3","fetchTicker","history","createHashHistory","initialState","reducer","appReducer","routerReducer","router","routerMiddleware","logger","createLogger","predicate","collapsed","middleware","applyMiddleware","thunk","withExtraArgument","devtools","devToolsExtension","enhancer","compose","createStore","setStore","configureStore","ReactDOM","render","ConnectedRouter","Router","Route","path","IntlProvider","locale","messages","i18n_en"],"mappings":"65KAAA,IAAIA,EAAM,CACT,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,IAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,KAChB,eAAgB,MAIjB,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOG,EAAoBF,EAC5B,CACA,SAASC,EAAsBF,GAC9B,IAAIG,EAAoBC,EAAEN,EAAKE,GAAM,CACpC,IAAIK,EAAI,IAAIC,MAAM,uBAAyBN,EAAM,KAEjD,MADAK,EAAEE,KAAO,mBACHF,CACP,CACA,OAAOP,EAAIE,EACZ,CACAD,EAAeS,KAAO,WACrB,OAAOC,OAAOD,KAAKV,EACpB,EACAC,EAAeW,QAAUR,EACzBS,EAAOC,QAAUb,EACjBA,EAAeE,GAAK,I,qfC9CPY,EAAyB,2BACzBC,EAAyB,2BACzBC,EAAyB,2BAEzBC,EAAkB,oBAClBC,EAAkB,oBAClBC,EAAkB,oBAElBC,EAA6B,+BAC7BC,EAA6B,+BAC7BC,EAA6B,+BAQnC,SAASC,EAAqBC,GACnC,MAAO,CACLC,KAAMV,EACNS,WAEJ,CAsDO,SAASE,EAAyBC,GACvC,MAAO,CACLF,KAAML,EACNO,UAEJ,CAEO,SAASC,EAAyBD,GACvC,MAAO,CACLF,KAAMJ,EACNM,UAEJ,CAEO,SAASE,EAAyBF,EAASG,GAChD,MAAO,CACLL,KAAMH,EACNK,UACAG,QAEJ,CC/FO,IAAMC,EAAgB,CAC3BC,KAAM,KACNC,SAAS,EACTH,MAAO,MCJF,IAAMI,EAAuB,yBACvBC,EAAuB,yBACvBC,EAAuB,yBAQ7B,SAASC,EAAmBC,GACjC,MAAO,CACLb,KAAMU,EACNG,SAEJ,CChBO,IAAMC,EAAW,SAACC,GAAK,OAAKA,EAAMC,IAAIjB,QAAQ,EACxCkB,EAAc,SAACF,GAAK,OAAKD,EAASC,GAAOR,IAAI,EAI7CW,EAAa,SAACH,GAAK,OAC9BA,EAAMI,QAAQC,SAAWL,EAAMI,QAAQC,SAASC,SAASC,MAAM,GAAK,IAAI,E,yBCanE,SAASC,EAAerB,GAC7B,MAAO,uBAAuBsB,KAAKtB,EACrC,CAEO,SAASuB,EAAaC,EAAOC,GAClC,IAAMC,EAAU,SAACC,GAAI,OAAKC,IAAc,IAAPD,GAAaE,QAAQ,QAAQ,EAC9D,OAAOC,KAAKC,IAAIL,EAAQD,GAAQO,KAAKN,EAAQF,GAAQ,UACvD,CAEO,SAASS,EAAaC,GAAoB,IAAfC,EAAKC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KACxCG,OAAOC,KAAKN,EAAK,UAAUO,QACvBN,GACFA,EAAMO,gBAEV,CAEO,SAASC,EAAgBC,GAC9B,OAAIC,WAAaA,UAAUC,WAAaD,UAAUC,UAAUC,UACnDF,UAAUC,UAAUC,UAAUH,GAEhCI,QAAQC,OAAO,sCACxB,CCnCO,IAAMC,EAAkB,oBAClBC,EAAkB,oBAClBC,EAAkB,oBAQxB,SAASC,EAAerD,EAASsD,EAASC,GAC/C,MAAO,CACLzD,KAAMqD,EACNnD,UACAsD,UACAC,UAEJ,CCpBO,IAAMnD,EAAgB,CAC3BC,KAAM,CACJL,QAAS,MAEXM,SAAS,EACTH,MAAO,MCLF,IAAMC,EAAgB,CAC3BC,KAAM,KACNC,SAAS,EACTH,MAAO,MCDMqD,I,ECQXC,EAASC,EDREF,cAAgB,CAC7B3D,SPGa,WAAiD,IAAhCgB,EAAKuB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGhC,EAAeuD,EAAMvB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC3D,OAAQqB,EAAO7D,MACb,KAAKX,EACH,OAAAyE,wBAAA,GACK/C,GAAK,IACRV,MAAO,KACPG,SAAS,IAGb,KAAKlB,EACH,OAAAwE,wBAAA,GACK/C,GAAK,IACRV,MAAO,KACPG,SAAS,EACTD,KAAMsD,EAAO9D,WAGjB,KAAKR,EACH,OAAAuE,wBAAA,GACK/C,GAAK,IACRP,SAAS,EACTH,MAAOwD,EAAOxD,QAGlB,QACE,OAAOU,EAEb,EO7BEgD,SFIa,WAAiD,IAAhChD,EAAKuB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGhC,EAAeuD,EAAMvB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC3D,OAAQqB,EAAO7D,MACb,KAAKoD,EACH,OAAAU,wBAAA,GACK/C,GAAK,IACRV,MAAO,KACPG,SAAS,IAGb,KAAK6C,EAAkB,IAADW,EACpB,OAAAF,wBAAA,GACK/C,GAAK,IACRV,MAAO,KACPG,SAAS,EACTD,KAAIuD,wBAAA,GACC/C,EAAMR,MAAI,IACbL,QAAuB,QAAhB8D,EAAEH,EAAO3D,eAAO,IAAA8D,OAAA,EAAdA,EAAgBC,cACzBT,QAASK,EAAOL,QAChBC,QAASI,EAAOJ,YAItB,KAAKH,EACH,OAAAQ,wBAAA,GACK/C,GAAK,IACRP,SAAS,EACTH,MAAOwD,EAAOxD,QAGlB,IAAK,2BACH,OAAAyD,wBAAA,GACK/C,GAAK,IACRV,MAAO,OAGX,QACE,OAAOU,EAEb,EEzCEF,ODCa,WAAiD,IAAhCE,EAAKuB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGhC,EAAeuD,EAAMvB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC3D,OAAQqB,EAAO7D,MACb,KAAKS,EACH,OAAAqD,wBAAA,GACK/C,GAAK,IACRV,MAAO,KACPG,SAAS,IAGb,KAAKE,EACH,OAAAoD,wBAAA,GACK/C,GAAK,IACRV,MAAO,KACPG,SAAS,EACTD,KAAMsD,EAAOhD,SAGjB,KAAKF,EACH,OAAAmD,wBAAA,GACK/C,GAAK,IACRP,SAAS,EACTH,MAAOwD,EAAOxD,QAGlB,QACE,OAAOU,EAEb,I,yDGnCaD,GAAW,SAAAC,GAAK,OAAIA,EAAMC,IAAI+C,QAAQ,EACtC7C,GAAa,SAAAH,GAAK,OAAID,GAASC,GAAOR,KAAKL,OAAO,E,sGCDlDgE,GAAwB,CAEnC,EAAG,CACDC,KAAM,6CACNC,IAAK,6CACLC,KAAM,6CACNC,KAAM,8CAGR,EAAG,CACDH,KAAM,6CACNC,IAAK,6CACLC,KAAM,6CACNC,KAAM,+CAIGC,GAAkB,CAC7BC,GAAI,KACJC,GAAI,MAGOC,IAAcC,EAAA,GAAAC,aAAAD,EACxBJ,GAAgBC,GAAK,CACpBK,QACE,qEACFC,OACE,qEACFC,mBACE,qEACFC,OACE,qEACFC,SACE,uEACHL,aAAAD,EACAJ,GAAgBE,GAAK,CACpBI,QACE,qEACFC,OACE,qEACFC,mBACE,qEACFC,OACE,qEACFC,SACE,uEACHN,GFjCkBO,GAAG,oBAAAA,IAAAC,aAAA,KAAAD,GAAA,KACtBE,MAAQ,KAAI,KACZC,KAAO,KAAI,KACXC,YAAc,IAAI,CAgXjB,OAhXiBC,aAAAL,EAAA,EAAAM,IAAA,WAAAC,MAElB,SAASL,GACPM,KAAKN,MAAQA,CACf,GAAC,CAAAI,IAAA,UAAAC,MAED,WAOE,OANkB,OAAdC,KAAKL,OACPK,KAAKL,KAAO,IAAIM,KACd,IAAIA,KAAKC,UAAUC,aAAa,0CAI7BH,KAAKL,IACd,GAAC,CAAAG,IAAA,SAAAC,MAED,WACE,OAAOC,KAAKI,UAAUC,GACxB,GAAC,CAAAP,IAAA,QAAAC,MAAA,eAAAO,EAAAC,YAAAC,cAAAC,MAED,SAAAC,IAAA,IAAArC,EAAAsC,EAAA,OAAAH,cAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACkC,OAA1B1C,EAAWtB,OAAOsB,SAAQwC,EAAAE,KAAA,EACT1C,EAAS2C,QAAQ,CAAEC,OAAQ,iBAAiB,OAA7DN,EAAQE,EAAAK,KACdlB,KAAKJ,YAAce,EAAS9D,OAAS,EAAI8D,EAAS,GAAK,KAEvDX,KAAKL,KAAO,IAAIM,KAAK5B,GAAS,wBAAAwC,EAAAM,OAAA,GAAAT,EAAA,UAC/B,yBAAAJ,EAAAc,MAAA,KAAAxE,UAAA,EARA,IAQA,CAAAkD,IAAA,UAAAC,MAAA,eAAAsB,EAAAd,YAAAC,cAAAC,MAED,SAAAa,IAAA,IAAAC,EAAAlB,EAAAtC,EAAAyD,EAAA,OAAAhB,cAAAI,MAAA,SAAAa,GAAA,cAAAA,EAAAX,KAAAW,EAAAV,MAAA,cAAAU,EAAAX,KAAA,EAAAW,EAAAV,KAAA,EAEUf,KAAK0B,QAAO,OAAAD,EAAAV,KAAA,eAAAU,EAAAX,KAAA,EAAAW,EAAAE,GAAAF,EAAA,SAElBG,QAAQjH,MAAM,sBAAqB,OAGZ,OAAnB0F,EAAML,KAAK6B,SAAQJ,EAAAV,KAAA,GACHV,EAAIyB,aAAY,QAAzB,GAEE,KAFT/D,EAAO0D,EAAAP,MAEG,CAAAO,EAAAV,KAAA,eACR,IAAI3H,MAAM,wBAAD2I,OAAyBhE,IAAU,QAUnD,OAPKyD,EAAehD,GAAsBT,GAE7BwD,EAAA,GAAArC,aAAAqC,EACXC,EAAa/C,KAAO,IAAI4B,EAAI2B,SAASC,GAAST,EAAa/C,OAAKS,aAAAqC,EAChEC,EAAa9C,IAAM,IAAI2B,EAAI2B,SAASE,GAAQV,EAAa9C,MAAIQ,aAAAqC,EAC7DC,EAAa7C,KAAO,IAAI0B,EAAI2B,SAASG,GAASX,EAAa7C,OAAKO,aAAAqC,EAChEC,EAAa5C,KAAO,IAAIyB,EAAI2B,SAASI,GAASZ,EAAa5C,OAJ9DV,EAImEqD,EAClEE,EAAAY,OAAA,SAEM,CAAC7H,QAASwF,KAAKJ,YAAa9B,QAAS,CAAEwE,KAAkB,IAAZvE,EAAgB,UAAY,UAAWA,WAAWA,QAASA,IAAS,yBAAA0D,EAAAN,OAAA,GAAAG,EAAA,kBACzH,yBAAAD,EAAAD,MAAA,KAAAxE,UAAA,EA1BA,IA0BA,CAAAkD,IAAA,gBAAAC,MAAA,eAAAwC,EAAAhC,YAAAC,cAAAC,MAED,SAAA+B,IAAA,IAAAnH,EAAAb,EAAA6F,EAAAoC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA1H,EAAA2H,EAAAC,EAAAC,EAAAC,EAAA3C,EAAA4C,EAAA1J,EAAA,OAAAmG,cAAAI,MAAA,SAAAoD,GAAA,cAAAA,EAAAlD,KAAAkD,EAAAjD,MAAA,OAQgE,OAPxD1F,EAAQ2E,KAAKN,MAAMtE,WACnBZ,EAAUgB,EAAWH,GACrBgF,EAAML,KAAK6B,SAAQmC,EAAAlD,KAAA,EAKvB7C,EAAU,IAAIoC,EAAI2B,SAASiC,GAAyBzJ,GAAQwJ,EAAAjD,KAAA,EACtD9C,EAAQiG,QAAQC,cAAcC,OAAM,OAC1C3B,EAAU5D,GAAgBE,GAAEiF,EAAAjD,KAAA,iBAAAiD,EAAAlD,KAAA,GAAAkD,EAAArC,GAAAqC,EAAA,SAE5B/F,EAAU,IAAIoC,EAAI2B,SAASqC,GAAY7J,GACvCiI,EAAU5D,GAAgBC,GAAE,WAK1B2D,IAAY5D,GAAgBC,GAAE,CAAAkF,EAAAjD,KAAA,gBAAAiD,EAAAjD,KAAA,GACH9C,EAAQiG,QAAQI,QAAQF,OAAM,QAA3D1B,EAAoBsB,EAAA9C,KAAA8C,EAAAjD,KAAA,wBAAAiD,EAAAjD,KAAA,GAES9C,EAAQiG,QAAQK,WAAWH,OAAM,QAA9D1B,EAAoBsB,EAAA9C,KAAA,QAGmC,IAAzDwB,EAAuBA,EAAqBnE,iBAEdL,EAAe,CAAD8F,EAAAjD,KAAA,eACpC,IAAI3H,MAAM,uBAAsB,eAAA4K,EAAAjD,KAAA,GAGjB7C,EAAewE,GAAsBwB,QACzDvB,WACAyB,OAAM,QAqCR,OAvCKzB,EAAQqB,EAAA9C,KAIR0B,EAAW,CACf4B,GAAI,CACFrB,SAAU,kBAAMlF,EAAQiG,QAAQf,WAAWiB,MAAM,EACjDhB,MAAO,kBAAMnF,EAAQiG,QAAQd,QAAQgB,MAAM,EAC3Cf,YAAa,kBAAMpF,EAAQiG,QAAQb,cAAce,MAAM,EACvDd,aAAc,kBAAMrF,EAAQiG,QAAQZ,eAAec,MAAM,EACzDb,iBAAkB,kBAAMtF,EAAQiG,QAAQX,mBAAmBa,MAAM,EACjEZ,QAAS,kBAAMvF,EAAQiG,QAAQV,UAAUY,MAAM,EAC/CX,UAAW,kBAAMxF,EAAQiG,QAAQT,YAAYW,MAAM,EACnDV,SAAU,kBAAMzF,EAAQiG,QAAQR,WAAWU,MAAM,EACjDpI,MAAO,kBAAMiC,EAAQiG,QAAQlI,QAAQoI,MAAM,EAC3CT,eAAgB,kBAAMnG,QAAQhE,QAAQ,IAAI,EAC1CoK,gBAAiB,kBAAMpG,QAAQhE,QAAQ,GAAG,EAC1CqK,OAAQ,kBAAMrG,QAAQhE,SAAQ,EAAM,EACpCsK,SAAU,kBAAMtG,QAAQhE,SAAQ,EAAM,EACtC2H,KAAM,kBAAM3D,QAAQhE,QAAQ,IAAI,EAChCuK,OAAQ,kBAAMvG,QAAQhE,SAAQ,EAAM,GAEtCiL,GAAI,CACFtB,SAAU,kBAAM3F,QAAQhE,QAAQ,IAAI,EACpC4J,MAAO,kBAAMnF,EAAQiG,QAAQQ,WAAWN,MAAM,EAC9Cf,YAAa,kBAAMpF,EAAQiG,QAAQS,iBAAiBP,MAAM,EAC1Dd,aAAc,kBAAMrF,EAAQiG,QAAQU,YAAYR,MAAM,EACtDb,iBAAkB,kBAAMtF,EAAQiG,QAAQW,gBAAgBT,MAAM,EAC9DZ,QAAS,kBAAMvF,EAAQiG,QAAQY,eAAeV,MAAM,EACpDX,UAAW,kBAAMxF,EAAQiG,QAAQa,iBAAiBX,MAAM,EACxDV,SAAU,kBAAMzF,EAAQiG,QAAQc,cAAcZ,MAAM,EACpDpI,MAAO,kBAAMiC,EAAQiG,QAAQe,WAAWb,MAAM,EAC9CT,eAAgB,kBAAM1F,EAAQiG,QAAQgB,YAAYd,MAAM,EACxDR,gBAAiB,kBAAM3F,EAAQiG,QAAQiB,qBAAqBf,MAAM,EAClEP,OAAQ,kBAAM5F,EAAQiG,QAAQL,SAASO,MAAM,EAC7CN,SAAU,kBAAM7F,EAAQiG,QAAQkB,gBAAgBhB,MAAM,EACtDjD,KAAM,kBAAMlD,EAAQiG,QAAQmB,UAAUjB,MAAM,EAC5CL,OAAQ,kBAAM9F,EAAQiG,QAAQC,cAAcC,MAAM,IAErDJ,EAAAjD,KAAA,GAsBSvD,QAAQ8H,IAAI,CACpBpH,EAAewE,GAAsBwB,QAAQnB,SAASqB,OACtDlG,EAAewE,GAAsBwB,QAAQqB,UAAU/K,GAAS4J,OAChEpE,KAAKwF,QAAQ7C,EAAUF,GACvBxE,EAAQiG,QAAQhB,QAAQkB,OACxBxB,EAASH,GAASU,WAClBP,EAASH,GAASW,QAClBR,EAASH,GAASY,cAClBT,EAASH,GAASa,eAClBV,EAASH,GAASc,mBAClBX,EAASH,GAASe,UAClBZ,EAASH,GAASgB,YAClBb,EAASH,GAASiB,WAClBd,EAASH,GAASzG,QAClB4G,EAASH,GAASkB,iBAClBf,EAASH,GAASmB,kBAClBhB,EAASH,GAASoB,SAClBjB,EAASH,GAASqB,WAClBlB,EAASH,GAAStB,OAClByB,EAASH,GAASsB,WAClB,QAqCuD,OArCvDlB,EAAAmB,EAAA9C,KAAA4B,EAAA2C,aAAA5C,EAAA,IAvCAE,EAAMD,EAAA,GACNE,EAAOF,EAAA,GACPG,EAAIH,EAAA,GACJI,EAAKJ,EAAA,GACLK,EAAQL,EAAA,GACRM,EAAKN,EAAA,GACLO,EAAWP,EAAA,GACXQ,EAAYR,EAAA,GACZS,EAAgBT,EAAA,GAChBU,EAAOV,EAAA,GACPW,EAASX,EAAA,IACTY,EAAQZ,EAAA,IACR9G,EAAK8G,EAAA,IACLa,EAAcb,EAAA,IACdc,EAAed,EAAA,IACfe,EAAMf,EAAA,IACNgB,EAAQhB,EAAA,IACR3B,EAAI2B,EAAA,IACJiB,EAAMjB,EAAA,KAuBFzI,EAAW,CACfoI,UACAM,SACAvI,UACAwI,QAAS0C,SAAS1C,EAAS,IAAG1G,KAAAqJ,IAAG,GAAMhD,GACvCQ,SACEV,IAAY5D,GAAgBC,GACxB4G,SAASvC,EAAU,IACnBS,EAAgB/G,OAAS6I,SAAS/B,EAAgB,IACxDP,MACEX,IAAY5D,GAAgBC,GACxB4G,SAAStC,EAAO,IAChBsC,SAAStC,EAAO,IAAMsC,SAAS1J,EAAO,IAC5CqH,cACAC,aAAcoC,SAASpC,EAAc,IAAGhH,KAAAqJ,IAAG,GAAMhD,GACjDY,iBAAkBmC,SAASnC,EAAkB,IAAGjH,KAAAqJ,IAAG,GAAMhD,GACzDa,UACAC,YACAP,QACAQ,SAAUgC,SAAShC,EAAU,IAAGpH,KAAAqJ,IAAG,GAAMhD,GACzC3G,MAAO0J,SAAS1J,EAAO,IACvBiH,OACAU,iBACAC,gBAAiBA,EAAgBhL,KAC/B,SAACgN,GAAM,OAAKF,SAASE,EAAQ,IAAGtJ,KAAAqJ,IAAG,GAAMhD,EAAQ,IAEnDkB,SACAC,WACA3C,KAAMuE,SAASvE,EAAM,IACrB4C,WAGO8B,MACPpD,IAAY5D,GAAgBC,GACxBzE,EAAS2I,QAAU3I,EAASqJ,SAC5BrJ,EAASuJ,gBAAgBkC,QAAO,SAACC,EAAGC,GAAC,OAAKD,EAAIC,CAAC,GAAE,GAAEhC,EAAA3B,OAAA,SAElDhI,GAAQ,yBAAA2J,EAAA7C,OAAA,GAAAqB,EAAA,mBAChB,yBAAAD,EAAAnB,MAAA,KAAAxE,UAAA,EAzJA,IAyJA,CAAAkD,IAAA,UAAAC,MAAA,eAAAkG,EAAA1F,YAAAC,cAAAC,MAED,SAAAyF,EAAcvD,EAAUF,GAAO,IAAApH,EAAAb,EAAA6F,EAAA8F,EAAAC,EAAAnD,EAAAoD,EAAAC,EAAAC,EAAAC,EAAA,OAAAhG,cAAAI,MAAA,SAAA6F,GAAA,cAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,OAGJ,OAFnB1F,EAAQ2E,KAAKN,MAAMtE,WACnBZ,EAAUgB,EAAWH,GACrBgF,EAAML,KAAK6B,SAAQ4E,EAAA1F,KAAA,EAEFV,EAAIqG,YAAY,CACrClM,QAASA,EACTmM,UAAW,EACXC,QAAS,WACT,OAJY,OAART,EAAQM,EAAAvF,KAAAuF,EAAA1F,KAAA,EAMOvD,QAAQ8H,IAC3Ba,EAASvN,KAAI,SAAC4N,GAAG,OAAKnG,EAAIwG,SAASL,EAAIM,YAAY,KACpD,OAFKV,EAAMK,EAAAvF,KAGN+B,EAAO,GACToD,EAAqB,EAEnBC,EAAQtH,GAAeyD,GAAQgE,EAAA9E,GAAAnB,cAAAlH,KAEnB6M,GAAQ,YAAAM,EAAAM,GAAAN,EAAA9E,MAAAqF,KAAC,CAADP,EAAA1F,KAAA,SAAfwF,EAAGE,EAAAM,GAAAhH,MAAA0G,EAAAQ,GACJd,EAASI,GAAKW,OAAO,GAAET,EAAA1F,KAAA0F,EAAAQ,KACxBX,EAAMjH,mBAAkB,GAAAoH,EAAAQ,KASxBX,EAAMnH,QAAO,GAAAsH,EAAAQ,KAYbX,EAAMlH,OAAM,GAAAqH,EAAAQ,KAGZX,EAAMhH,OAAM,GAAAmH,EAAAQ,KAGZX,EAAM/G,SAAQ,oBApBhB,OAND0D,EAAKkE,KACHnH,KAAKoH,wBAAuBC,YACtBlB,EAASI,GAAKW,QAClBd,EAAOG,GAAKe,UACZhB,IAEHG,EAAApE,OAAA,oBAYqE,OAThEmE,EAAMxG,KAAKuH,cACf5E,EACAwD,EAASI,GAAK1L,KACdwL,EACAD,EAAOG,GAAKe,UACZ7E,EACA6D,GAEFrD,EAAKkE,KAAKX,GACVH,EAAqBmB,KAAIhB,EAAI3L,KAAK4M,MAAMC,IAAGpL,KAAAqJ,IAAC,GAAMhD,IAAUgF,WAAUlB,EAAApE,OAAA,oBAGZ,OAA1DY,EAAKkE,KAAKnH,KAAK4H,aAAaxB,EAAOG,GAAKe,UAAWhB,IAAOG,EAAApE,OAAA,oBAGA,OAA1DY,EAAKkE,KAAKnH,KAAK6H,aAAazB,EAAOG,GAAKe,UAAWhB,IAAOG,EAAApE,OAAA,oBAGE,OAA5DY,EAAKkE,KAAKnH,KAAK8H,eAAe1B,EAAOG,GAAKe,UAAWhB,IAAOG,EAAApE,OAAA,2BAAAoE,EAAApE,OAAA,oBAAAoE,EAAA1F,KAAA,wBAAA0F,EAAApE,OAAA,SAO3DY,GAAI,yBAAAwD,EAAAtF,OAAA,GAAA+E,EAAA,UACZ,gBAAA6B,EAAAC,GAAA,OAAA/B,EAAA7E,MAAA,KAAAxE,UAAA,EA3DA,IA2DA,CAAAkD,IAAA,0BAAAC,MAED,SAAwBmH,EAAQI,EAAWhB,GACzC,MAAO,CACL2B,MAAO3B,EAAMjH,mBACbxE,KAAM,CACJqN,cAAehB,EAAO,GAAGtL,MAAM,EAAG,GAAKsL,EAAO,GAAGtL,MAAM,IACvDuM,SAAUjB,EAAO,GAAGtL,MAAM,EAAG,GAAKsL,EAAO,GAAGtL,MAAM,IAClD0L,UAAWA,GAGjB,GAAC,CAAAxH,IAAA,gBAAAC,MAED,SAAc4C,EAAU9H,EAAMwL,EAAoBiB,EAAW7E,EAAS6D,GACpE,IAEI8B,EACAC,EAHEC,EAAad,KAAIe,OAAOlC,IAAuB,GAAGmC,IAAGlM,KAAAqJ,IAAC,GAAMhD,IAelE,OAVIF,IAAY5D,GAAgBC,GAE9BuJ,GADAD,EAAgBZ,KAAIe,OAAO1N,IAAS,GAAG2N,IAAGlM,KAAAqJ,IAAC,GAAMhD,KACjB8F,MAAMH,IAEtCD,EAAkBb,KAAIe,OAAO1N,IAAS,GAAG2N,IAAGlM,KAAAqJ,IAAC,GAAMhD,IACnDyF,EAAgBZ,KAAIe,OAAOlC,IAAuB,GAC/CmC,IAAGlM,KAAAqJ,IAAC,GAAMhD,IACV+F,IAAIL,IAGF,CACLJ,MAAO3B,EAAMnH,QACbtE,KAAM,CACJ+K,OAAQyC,EAAgBV,WACxBF,KAAMW,EAAcT,WACpBL,UAAWA,GAGjB,GAAC,CAAAxH,IAAA,eAAAC,MAED,SAAauH,EAAWhB,GACtB,MAAO,CACL2B,MAAO3B,EAAMlH,OACbvE,KAAM,CACJyM,UAAWA,GAGjB,GAAC,CAAAxH,IAAA,eAAAC,MAED,SAAauH,EAAWhB,GACtB,MAAO,CACL2B,MAAO3B,EAAMhH,OACbzE,KAAM,CACJyM,UAAWA,GAGjB,GAAC,CAAAxH,IAAA,iBAAAC,MAED,SAAeuH,EAAWhB,GACxB,MAAO,CACL2B,MAAO3B,EAAM/G,SACb1E,KAAM,CACJyM,UAAWA,GAGjB,GAAC,CAAAxH,IAAA,UAAAC,MAAA,eAAA4I,EAAApI,YAAAC,cAAAC,MAED,SAAAmI,IAAA,IAAAvN,EAAAhB,EAAAwO,EAAAtF,EAAA,OAAA/C,cAAAI,MAAA,SAAAkI,GAAA,cAAAA,EAAAhI,KAAAgI,EAAA/H,MAAA,OAG6B,GAFrB1F,EAAQ2E,KAAKN,MAAMtE,WACnBf,EAAWkB,EAAYF,GACvBwN,EAAOE,GAAQ1N,GAEjBhB,EAASoI,UAAY5D,GAAgBC,GAAE,CAAAgK,EAAA/H,KAAA,eAAA+H,EAAAzG,OAAA,SAClCpE,EAAQiG,QAAQ8E,UAAUC,KAAK,CAAEJ,UAAO,cAAAC,EAAA/H,KAAA,EAGlB9C,EAAQiG,QAAQW,gBAAgBT,OAAM,OAA/C,OAAhBb,EAAgBuF,EAAA5H,KAAA4H,EAAAzG,OAAA,SAEfpE,EAAQiG,QAAQ8E,QAAQH,EAAMtF,GAAkB0F,KAAK,CAAEJ,UAAO,wBAAAC,EAAA3H,OAAA,GAAAyH,EAAA,UACtE,yBAAAD,EAAAvH,MAAA,KAAAxE,UAAA,EAdA,IAcA,CAAAkD,IAAA,oBAAAC,MAED,SAAkBvF,GAChB,IAAMa,EAAQ2E,KAAKN,MAAMtE,WACnBf,EAAWkB,EAAYF,GACvBwN,EAAOE,GAAQ1N,GAErB,OAAOhB,EAASoI,UAAY5D,GAAgBC,GACxCb,EAAQiG,QAAQgF,kBAAkB1O,GAASyO,KAAK,CAAEJ,SAClD5K,EAAQiG,QAAQiF,eAAe3O,GAASyO,KAAK,CAAEJ,QACrD,GAAC,CAAA/I,IAAA,cAAAC,MAAA,eAAAqJ,EAAA7I,YAAAC,cAAAC,MAED,SAAA4I,IAAA,IAAAlO,EAAAmO,EAAAC,EAAAC,EAAAC,EAAA7M,UAAA,OAAA4D,cAAAI,MAAA,SAAA8I,GAAA,cAAAA,EAAA5I,KAAA4I,EAAA3I,MAAA,OAAyC,OAAvB5F,EAAMsO,EAAA5M,OAAA,QAAAC,IAAA2M,EAAA,GAAAA,EAAA,GAAG,eAAcC,EAAA5I,KAAA,EAAA4I,EAAA3I,KAAA,EAElB4I,MAAM,qDAAD5H,OAC+B5G,EAAM,sBAC3D,CACEyO,KAAM,SAET,OALS,OAAJN,EAAII,EAAAxI,KAAAwI,EAAA3I,KAAA,EAMSuI,EAAKC,OAAM,OACnB,OADLA,EAAIG,EAAAxI,KACFsI,EAAQD,EAAKpO,GAAbqO,IAAGE,EAAArH,OAAA,SACJmH,GAAG,eAAAE,EAAA5I,KAAA,GAAA4I,EAAA/H,GAAA+H,EAAA,SAAAA,EAAArH,OAAA,SAEH,GAAC,yBAAAqH,EAAAvI,OAAA,GAAAkI,EAAA,mBAEX,yBAAAD,EAAAhI,MAAA,KAAAxE,UAAA,EAhBA,MAgBA4C,CAAA,CAnXqB,G,6FGXXqK,GAAuBC,0BAWrBC,GATsB,SAAHC,GAAsB,IAAhBC,EAAQD,EAARC,SACtCC,EAAsCC,mBAAS,MAAKC,EAAA3E,aAAAyE,EAAA,GAA7CG,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAClC,OACEG,eAACV,GAAqBW,SAAQ,CAACzK,MAAO,CAAEsK,cAAaC,kBAAiBL,SACnEA,GAGP,ECTaQ,GAAqB,IAC9BC,GAAgBD,GAyCLE,OAvCf,WACE,IAAAT,EAA0BC,mBAASO,IAAcN,EAAA3E,aAAAyE,EAAA,GAA1CU,EAAKR,EAAA,GAAES,EAAQT,EAAA,GAsBtB,OArBAU,qBAAU,WACR,SAASC,IACP,IAAMC,EAAejO,OAAOkO,WAExBP,KAAkBM,IACpBN,GAAgBM,GAGdJ,IAAUI,GACZH,EAASG,EAEb,CAKA,OAHAD,IAEAhO,OAAOmO,iBAAiB,SAAUH,GAC3B,WACLhO,OAAOoO,oBAAoB,SAAUJ,EACvC,CACF,GAAG,CAACH,IAEGQ,uBACL,WAAkC,IAAdC,EAAMzO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC5B,aAAwBE,IAApBuO,EAAOC,UAA0BV,EAAQS,EAAOC,kBAI5BxO,IAApBuO,EAAOE,UAA0BX,EAAQS,EAAOE,SAKtD,GACA,CAACX,GAEL,E,UC1Ce,OAA0B,iDC2B1BY,OAnBf,WACE,IAAQnB,EAAgBoB,qBAAW5B,IAA3BQ,YAEFqB,EADaf,IACFgB,CAAW,CAAEJ,SAAUd,KACxC,OACEmB,gBAACC,UAAM,CACLC,SAAO,EACPC,QAAS,SAAC5S,GAAC,OAAKsD,EAAa4N,EAAalR,EAAE,EAC5C6S,KAAM3B,EACN4B,UAAU,sBAAqBhC,SAAA,CAE/BM,eAAC2B,KAAgB,CACfnT,GAAI2S,EAAW,4BAA8B,uBAE/CnB,eAAA,OAAK4B,IAAKC,GAAYC,IAAI,OAGhC,ECzBMC,I,QAAiB,4CAEVC,GAAuB,SAAC/R,GAAO,MAAM,CAChDgS,OAAQhS,EACRiS,WAAYjS,EACZkS,gBAAgB,EAChBC,OAAQ,CACNC,UAAW,CACTC,KAAMP,GACNQ,QAASR,GACTS,QAAST,GACTU,KAAM,IAERC,UAAW,8BACXC,KAAM,CACJC,MAAO,CACLC,EAAG,KACHC,EAAG,QACHrH,EAAG,YAGPsH,KAAM,CACJH,MAAO,CACLC,EAAG,QACHC,EAAG,UACHrH,EAAG,YAGPuH,KAAM,CACJJ,MAAO,CACLC,EAAG,UACHC,EAAG,UACHrH,EAAG,WAGPwH,UAAW,CACT,kCACA,iCACA,8BACA,oCACA,4BAEF/K,QAAS,GAEXH,KAAM,GACNmL,MAAO,GACPC,YAAa,GACbC,QAAS,GACTC,UAAW,GACXnL,QAAS,EACToL,aAAc,EACdC,kBAAkB,EACnB,EA6BA,SAAAC,KAAA,OAAAA,GAAAxN,YAAAC,cAAAC,MA3BM,SAAAC,EAA6BlG,GAAO,IAAAwT,EAAAC,EAAAC,EAAAtB,EAAAG,EAAA,OAAAvM,cAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEhB4I,MAAM,iDAAD5H,OACuBvH,IAClD,OAFa,OAARwT,EAAQnN,EAAAK,KAAAL,EAAAE,KAAA,EAGgBiN,EAASzE,OAAM,OAAxB,MAAf0E,EAAepN,EAAAK,MAEDrE,OAAS,GAAC,CAAAgE,EAAAE,KAAA,SAW3B,OAVKmN,EAAcD,EAAgB,GAAGE,QAAQ,GACzCvB,EAAYsB,EAAYvB,OAAOC,WAC/BG,EAAUH,EAAUG,WAGxBmB,EAAYvB,OAAOC,UAASxO,wBAAA,GACvBwO,GAAS,IACZC,KAAME,EACND,QAASC,KAEZlM,EAAAwB,OAAA,SAEM6L,GAAW,QAAArN,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAc,GAAAd,EAAA,SAGpBe,QAAQjH,MAAM,yBAAwBkG,EAAAc,IAAQ,eAAAd,EAAAwB,OAAA,SAGzCkK,GAAqB/R,IAAQ,yBAAAqG,EAAAM,OAAA,GAAAT,EAAA,oBACrCU,MAAA,KAAAxE,UAAA,CCrED,SAASwR,KACHrR,OAAOsB,SACTtB,OAAOsB,SAASgQ,SAASC,MAAK,WAC5BvR,OAAOrB,SAAS6S,QAClB,IAEA9R,EAAa,gCAEjB,CAEA,SAAS+R,GAAOC,GACd,IAAQjU,EAAYiU,EAAZjU,QACR0P,EAAoCC,oBAAS,GAAMC,EAAA3E,aAAAyE,EAAA,GAA5CwE,EAAUtE,EAAA,GAAEuE,EAAavE,EAAA,GAChCwE,EAA8BzE,wBAASrN,GAAU+R,EAAApJ,aAAAmJ,EAAA,GAA1CE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAElBxE,EAAgBoB,qBAAW5B,IAA3BQ,YAGFqB,EADaf,IACFgB,CAAW,CAAEJ,SAAUd,KAaxC,OAXAK,qBAAU,WACJtQ,GACFmU,GAAc,GDoBb,SAA4B5G,GAAA,OAAAgG,GAAA3M,MAAC,KAADxE,UAAA,CCnB7BoS,CAAcxU,GAAS8T,MAAK,SAACQ,GAC3BC,EAAWD,EACb,KAEAH,GAAc,EAElB,GAAG,CAACnU,IAGF+P,eAAA,OAAK0B,UAAU,SAAQhC,SACrBM,eAAC0E,KAAS,CAACC,MAAO,CAAEC,OAAQ,QAASlF,SACnCM,eAAC6E,KAAI,CAACC,cAAc,SAASH,MAAO,CAAEI,WAAY,EAAGC,YAAa,GAAItF,SACpE2B,gBAACwD,KAAKI,IAAG,CAAAvF,SAAA,CACPM,eAAC6E,KAAKK,OAAM,CAACP,MAAO,CAAEtE,MAAO,cAAe8E,YAAa,GAAIzF,SAC3DM,eAACoF,QAAI,MAEPpF,eAAC6E,KAAKK,OAAM,CAACP,MAAO,CAAEU,QAAS,GAAI3F,SACjCM,eAAA,MAAI0B,UAAU,eAAchC,SAAC,mBAE/BM,eAAC6E,KAAKK,OAAM,CACVI,QAAQ,QACRX,MAAO,CAAEtE,MAAO,cAAekF,aAAc,GAAI7F,SAEhDyB,EACCrB,GAAeE,eAACiB,GAAmB,IAEnCjB,eAACwF,YAAQ,CACPC,SAAU5B,GACVM,WAAYA,EACZ/B,OAAQmC,EACRmB,eAAgB,kBACdxT,EAAa,wDAADsF,OAC8CvH,GACzD,cAUrB,CAEe0V,WAAMC,KAAK3B,IC/EXA,GCSA4B,aANS,SAAC/U,GACvB,MAAO,CACLb,QAASgB,GAAWH,GAExB,GAEe+U,CAAkB5B,I,gBCIlB6B,OAXf,SAAa5B,GACX,IAAQ6B,EAAqB7B,EAArB6B,OAAQ5M,EAAa+K,EAAb/K,SAEhB,OACEkI,gBAAA,OAAKK,UAAU,iBAAgBhC,SAAA,CAC7BM,eAAA,OAAK0B,UAAU,aAAaiD,MAAO,CAAEtE,MAAM,GAAD7I,OAAKuO,EAAM,QACrD/F,eAAA,OAAK0B,UAAU,eAAeiD,MAAO,CAAEtE,MAAM,GAAD7I,OAAK2B,EAAQ,UAG/D,E,SCZe,OAA0B,iCCiC1B6M,OAjBf,SAAc9B,GACZ,IAAQ+B,EAAsB/B,EAAtB+B,QAASC,EAAahC,EAAbgC,SAEjB,OACElG,eAAA,QAAM0B,UAAU,OAAOiD,MAAO,CAAEU,QAAS,OAAQ3F,SAC/CM,eAACmG,SAAK,CACJC,QAASH,EACTC,SAAUA,EACVG,QAASrG,eAAA,OAAK4B,IAAK0E,GAASxE,IAAI,KAChCyE,GAAG,QACH5B,MAAO,CAAEC,OAAQ,QACjB4B,OAAK,KAIb,E,QCmCeC,OA1Df,SAAkBvC,GAChB,IAAQpU,EAAaoU,EAAbpU,SACF4W,EAAmB3U,KAAK4U,MAC3B7W,EAASiJ,aAAejJ,EAASwL,MAAS,KAEvCsL,EAAqB7U,KAAK4U,MAC7B7W,EAASqJ,SAAWrJ,EAASwL,MAAS,KAGzC,OACE+F,gBAAA,OAAK7S,GAAG,WAAUkR,SAAA,CAChB2B,gBAACwD,KAAI,CAAAnF,SAAA,CACH2B,gBAACwD,KAAKK,OAAM,CAACI,QAAQ,OAAM5F,SAAA,CACzB2B,gBAAC4C,UAAM,CAAC4C,KAAG,EAAAnH,SAAA,CACTM,eAAC2B,KAAgB,CAACnT,GAAG,oBACrBwR,eAACgG,GAAI,CACHC,QAASjG,eAAC2B,KAAgB,CAACnT,GAAG,0BAC9B0X,SAAS,oBAGb7E,gBAAA,OAAKK,UAAU,SAAQhC,SAAA,CACrB2B,gBAAC4C,UAAM,CAACU,MAAO,CAAEmC,QAAS,gBAAiBpH,SAAA,CACzCM,eAAC+G,KAAe,CAACvR,MAAOzD,KAAK4U,MAAM7W,EAASiJ,gBAAkB,IAC7DjJ,EAAS0I,UAEZ6I,gBAAA,QAAMK,UAAU,oBAAmBhC,SAAA,CAAEgH,EAAiB,aAG1DrF,gBAACwD,KAAKK,OAAM,CAACI,QAAQ,QAAQ0B,UAAU,QAAOtH,SAAA,CAC5C2B,gBAAC4C,UAAM,CAAC4C,KAAG,EAAAnH,SAAA,CACTM,eAACgG,GAAI,CACHC,QAASjG,eAAC2B,KAAgB,CAACnT,GAAG,yBAC9B0X,SAAS,gBAEXlG,eAAC2B,KAAgB,CAACnT,GAAG,sBAEvB6S,gBAAC4C,UAAM,CAACU,MAAO,CAAEmC,QAAS,gBAAiBpH,SAAA,CACzCM,eAAC+G,KAAe,CAACvR,MAAOzD,KAAK4U,MAAM7W,EAASwL,SAAW,IACtDxL,EAAS0I,gBAIhBwH,eAAC8F,GAAG,CAACC,OAAQW,EAAkBvN,SAAUyN,IACzCvF,gBAAA,OAAA3B,SAAA,CACEM,eAAC2B,KAAgB,CACfnT,GAAG,oBACHyY,OAAQ,CACNxL,EAAG,SAACyL,GAAM,OAAKlH,eAAA,KAAAN,SAAIwH,GAAW,EAC9B7L,OAAQ2E,eAAC+G,KAAe,CAACvR,MAAOzD,KAAK4U,MAAM7W,EAASqJ,YACpDY,MAAOjK,EAAS0I,UAGpB6I,gBAAA,QAAMK,UAAU,sBAAqBhC,SAAA,CAAEkH,EAAmB,YAIlE,EC/DeH,GCSAZ,aANS,SAAC/U,GACvB,MAAO,CACLhB,SAAUkB,EAAYF,GAE1B,GAEe+U,CAAkBY,ICV1B,SAASU,GAAe3L,EAAGC,GAChC,OAAOD,GAAKC,GAAKD,EAAExH,gBAAkByH,EAAEzH,aACzC,C,cCFe,OAA0B,yC,QC2F1BoT,OArFf,SAAgClD,GAC9B,IAAQzR,EAA4ByR,EAA5BzR,KAAM4U,EAAsBnD,EAAtBmD,QAASC,EAAapD,EAAboD,SAEvB3H,EAA0BC,mBAAS,CACjC3P,QAAS,GACTG,OAAO,EACPmX,aAAc,GACdhX,SAAS,EACTiX,eAAgB,KAChB3H,EAAA3E,aAAAyE,EAAA,GANK7O,EAAK+O,EAAA,GAAE4H,EAAQ5H,EAAA,GAShB6H,EAAW,SAACC,GAAO,IAAEC,EAAGvV,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAE,OACjCoV,GAAS,SAAClR,GAAI,OAAA1C,wBAAA,GAAW0C,GAAI,IAAEnG,MAAOuX,EAASJ,aAAcK,GAAG,GAAI,EAChEC,EAAa,SAACC,GAAS,OAC3BL,GAAS,SAAClR,GAAI,OAAA1C,wBAAA,GAAW0C,GAAI,IAAEhG,QAASuX,GAAS,GAAI,EA8BvD,OACEzG,gBAAC0G,SAAK,CACJrG,UAAU,yBACVsG,KAAK,QACLvV,KAAMA,EACN4U,QAASA,EACTY,UAAWjI,eAACkI,SAAK,IAAIxI,SAAA,CAErBM,eAAC+H,SAAM9D,OAAM,CAAAvE,SACXM,eAAC2B,KAAgB,CAACnT,GAAG,kBAEvB6S,gBAAC0G,SAAMI,QAAO,CAAAzI,SAAA,CACZM,eAAA,KAAAN,SACEM,eAAC2B,KAAgB,CAACnT,GAAG,oBAEvBwR,eAACoI,SAAK,CACJC,SAAU,SAACC,EAAGhY,GAlDH,IAACiY,IAmDCjY,EAAKkF,MAnDGiS,GAAS,SAAClR,GAAI,OAAA1C,wBAAA,GAAW0C,GAAI,IAAEtG,QAASsY,GAAI,IAoD/Db,GAAS,EACX,EACAc,MAAOxI,eAAC2B,KAAgB,CAACnT,GAAG,gBAC5Bia,YAAY,QACZrY,MAAOU,EAAMV,MACb6V,QAASnV,EAAMyW,aACfhX,QAASO,EAAMP,QACfmY,SAAU5X,EAAMP,aAGpByP,eAAC+H,SAAMY,QAAO,CAAAjJ,SACZM,eAACsB,UAAM,CAACC,SAAO,EAACC,QAvDL,WACXlQ,EAAeR,EAAMb,UACvB4X,GAAW,GACXH,GAAS,GACTJ,EAASxW,EAAMb,SACZ8T,MAAK,SAACwE,GACLV,GAAW,GATA,WAAH,IAAID,EAAGvV,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACxBoV,GAAS,SAAClR,GAAI,OAAA1C,wBAAA,GAAW0C,GAAI,IAAEiR,eAAgBI,GAAG,GAAI,CAShDgB,CACE5I,eAAC2B,KAAgB,CACfnT,GAAG,gBACHyY,OAAQ,CACNhX,QAASsY,EACTM,GAAI7I,eAAA,YAIZ,IACC8I,OAAM,SAACla,GACNiZ,GAAW,GACXH,GAAS,EAAM9Y,EAAEqX,QACnB,KAEFyB,GAAS,EAAM1H,eAAC2B,KAAgB,CAACnT,GAAG,gBAExC,EA+ByCka,SAAU5X,EAAMP,QAAQmP,SACzDM,eAAC2B,KAAgB,CAACnT,GAAG,qBAGzBwR,eAAC+H,SAAMI,QAAO,CAAAzI,SACZM,eAAA,KAAG0B,UAAU,UAAShC,SAAE5O,EAAM0W,qBAItC,ECjFe3B,gBAAQ,iBAAO,CAAC,CAAC,IAJL,SAACkD,GAAQ,MAAM,CACxCzB,SAAU,SAACrX,GAAO,OAAK8Y,E7B8FlB,SAA2B9Y,GAChC,sBAAA+Y,EAAAhT,YAAAC,cAAAC,MAAO,SAAA+B,EAAO8Q,EAAUlY,EAAUoY,GAAG,OAAAhT,cAAAI,MAAA,SAAAoD,GAAA,cAAAA,EAAAlD,KAAAkD,EAAAjD,MAAA,OACQ,OAA3CuS,EAAS/Y,EAAyBC,IAASwJ,EAAA3B,OAAA,SAEpC,IAAI7E,SAAQ,SAAChE,EAASiE,GAC3B+V,EACGtK,kBAAkB1O,GAClB8T,MAAK,WACJgF,EAAS7Y,EAAyBD,IAClChB,EAAQgB,EACV,IACC6Y,OAAM,SAACla,GACNma,EAAS5Y,EAAyBF,EAASrB,EAAEqX,UAC7C/S,EAAOtE,EACT,GACJ,KAAE,wBAAA6K,EAAA7C,OAAA,GAAAqB,EAAA,KAEH,gBAAAiR,EAAAC,EAAAC,GAAA,OAAAJ,EAAAnS,MAAA,KAAAxE,UAAA,EAhBD,EAiBF,C6BhHkCsM,CAAkB1O,GAAS,EAC5D,GAEc4V,CAAiCuB,ICNjCA,M,QCkBf,SAAShN,GAAemO,GACtB,OACElH,gBAAA,OAAKK,UAAU,mBAAkBhC,SAAA,CAC/BM,eAACiE,UAAM,CAAC4C,KAAG,EAAAnH,SACTM,eAAC2B,KAAgB,CAACnT,GAAG,0BAEvB6S,gBAAC4C,UAAM,CACLzC,QAAS,kBAAM5O,EAAgB2V,EAAK,EACpC5D,MAAO,CAAE0E,OAAQ,WAAY3J,SAAA,CAE7BM,eAAA,OAAK4B,IAAK0H,GAAaxH,IAAI,KAC3B9B,eAACmG,SAAK,CACJC,QAASpG,eAAC2B,KAAgB,CAACnT,GAAG,kBAC9B0X,SAAS,gBACTG,QAASrG,eAAA,QAAAN,UAlBOzP,EAkBiBsY,EAjBlCtY,EAAQsZ,UAAU,EAAG,GAAK,MAAQtZ,EAAQsZ,UAAU,GAAI,OAkBvDhD,GAAG,UAELvG,eAACgG,GAAI,CACHC,QAASjG,eAAC2B,KAAgB,CAACnT,GAAG,uBAC9B0X,SAAS,sBAvBnB,IAA0BjW,CA4B1B,CAEA,SAAS0B,GAAQnD,EAAIoD,GACnB,OACEyP,gBAAA,OAAKK,UAAU,OAAMhC,SAAA,CACnBM,eAACiE,UAAM,CAAC4C,KAAG,EAAAnH,SACTM,eAAC2B,KAAgB,CAACnT,GAAIA,MAExBwR,eAACiE,UAAM,CAAAvE,SACLM,eAACwJ,KAAa,CACZhU,MAAO,IAAIiU,KAAY,IAAP7X,GAChB8X,KAAK,UACLC,MAAM,OACNC,IAAI,gBAKd,CAEA,SAASC,GAAeC,GACtB,OACEzI,gBAAA,OAAKK,UAAU,OAAMhC,SAAA,CACnBM,eAACiE,UAAM,CAAC4C,KAAG,EAAAnH,SACTM,eAAC2B,KAAgB,CAACnT,GAAG,2BAEvB6S,gBAAC4C,UAAM,CAAAvE,SAAA,CACLM,eAAC2B,KAAgB,CACfnT,GAAG,4BACHyY,OAAQ,CACNpO,MAAOiR,EACPC,QACE/J,eAACgK,KAAe,CACdxU,MAAOsU,EACPG,IAAKjK,eAAC2B,KAAgB,CAACnT,GAAG,iBAC1B0b,MAAOlK,eAAC2B,KAAgB,CAACnT,GAAG,6BAKpCwR,eAACgG,GAAI,CACHC,QAASjG,eAAC2B,KAAgB,CAACnT,GAAG,wBAC9B0X,SAAS,qBAKnB,CAEA,SAASiE,GAAU3b,EAAIgH,EAAOgD,EAAQ4R,GACpC,OACE/I,gBAAA,OAAKK,UAAU,OAAMhC,SAAA,CACnBM,eAACiE,UAAM,CAAC4C,KAAG,EAAAnH,SACTM,eAAC2B,KAAgB,CAACnT,GAAIA,MAExB6S,gBAAC4C,UAAM,CAAAvE,SAAA,CACLM,eAAC+G,KAAe,CAACvR,MAAOA,IAAS,IAAEgD,EACnCwH,eAACgG,GAAI,CACHC,QAASjG,eAAC2B,KAAgB,CAACnT,GAAI4b,IAC/BlE,SAAS,qBAKnB,CAEA,SAASmE,GAAanR,GACpB,OACEmI,gBAAA,OAAKK,UAAU,OAAMhC,SAAA,CACnBM,eAACiE,UAAM,CAAC4C,KAAG,EAAAnH,SACTM,eAAC2B,KAAgB,CAACnT,GAAG,wBAEvBwR,eAACiE,UAAM,CAAAvE,SACJxG,EACC8G,eAAC2B,KAAgB,CAACnT,GAAG,eAErBwR,eAAC2B,KAAgB,CAACnT,GAAG,kBAK/B,CAEA,SAAS8b,GAAY/Q,GACnB,OACE8H,gBAAA,OAAKK,UAAU,OAAMhC,SAAA,CACnBM,eAACiE,UAAM,CAAC4C,KAAG,EAAAnH,SACTM,eAAC2B,KAAgB,CAACnT,GAAG,uBAEvBwR,eAACiE,UAAM,CAAAvE,SACJnG,EACCyG,eAAC2B,KAAgB,CAACnT,GAAG,eAErBwR,eAAC2B,KAAgB,CAACnT,GAAG,kBAK/B,CAEA,SAAS+b,GAAgB1X,EAAM2O,GAC7B,OACExB,eAACsB,UAAM,CAACkF,OAAK,EAAC9E,UAAU,SAASF,QAASA,EAAQ9B,SAC/C7M,GAGP,CAEA,SAAS2X,GAAQtG,GACf,IAAQpU,EAAuCoU,EAAvCpU,SAAU2a,EAA6BvG,EAA7BuG,cAAeC,EAAcxG,EAAdwG,UAE/BxS,EAUEpI,EAVFoI,QACAM,EASE1I,EATF0I,OACAW,EAQErJ,EARFqJ,SACA1H,EAOE3B,EAPF2B,MACAoH,EAME/I,EANF+I,MACAD,EAKE9I,EALF8I,SACAI,EAIElJ,EAJFkJ,iBACAE,EAGEpJ,EAHFoJ,UACAK,EAEEzJ,EAFFyJ,SACA+B,EACExL,EADFwL,MAGIwO,EAAetY,EAAaC,EAAOoH,GAEnCsI,EADaf,IACFgB,CAAW,CAAEJ,SAAUd,KAExCP,EAAsCC,oBAAS,GAAMC,EAAA3E,aAAAyE,EAAA,GAA9CgL,EAAW9K,EAAA,GAAE+K,EAAc/K,EAAA,GAGlC,OACEwB,gBAAA,OAAK7S,GAAG,UAAUkT,UAAYP,EAAY,SAAa,GAAGzB,SAAA,CACxD2B,gBAAA,OAAKK,UAAU,aAAYhC,SAAA,CACxBtF,GAAetK,EAASgJ,cACvBqI,GACAsJ,GACAF,GACEvK,eAAC2B,KAAgB,CAACnT,GAAG,gCACrB,kBAAMoc,GAAe,EAAK,IAE9BvJ,gBAAA,OAAKK,UAAU,QAAOhC,SAAA,CACnB/N,GAAQ,gBAAiBF,GACzBE,GAAQ,cAAeF,EAAQmH,SAGnCiR,GAAeC,GACfK,GACC,wBACA7O,EACA9C,EACA,wBAED2R,GAAU,mBAAoBhR,EAAUX,EAAQ,mBAChD2R,GACC,qBACAnR,EACAR,EACA,sBAEA2I,GACAsJ,GACAzR,EAAmB,GACnBuR,GACEvK,eAAC2B,KAAgB,CAACnT,GAAG,0BACrBkc,GAEHL,GAAanR,GACbhB,IAAY5D,GAAgBE,IAAM8V,GAAY/Q,GAC/CyG,eAACoH,GAAsB,CAAC3U,KAAMkY,EAAatD,QAxCrB,WAAH,OAASuD,GAAe,EAAM,MA2CvD,CAEejF,WAAMC,KAAK4E,ICrMX3E,gBAbS,SAAC/U,GACvB,IAAMhB,EAAWkB,EAAYF,GACvBb,EAAUgB,GAAWH,GAC3B,MAAO,CACLhB,WACA2a,cAAetD,GAAerX,EAASgJ,YAAa7I,GAExD,IAE2B,SAAC8Y,GAAQ,MAAM,CACxC2B,UAAW,kBAAM3B,EhCgDjB,eAAA8B,EAAA7U,YAAAC,cAAAC,MAAO,SAAAa,EAAOgS,EAAUlY,EAAUoY,GAAG,OAAAhT,cAAAI,MAAA,SAAAa,GAAA,cAAAA,EAAAX,KAAAW,EAAAV,MAAA,OACT,OAA1BuS,EApBK,CACLhZ,KAAMR,IAmBoB2H,EAAAX,KAAA,EAAAW,EAAAV,KAAA,EAElByS,EAAIxK,UAAS,OACO,OAA1BsK,EAjBG,CACLhZ,KAAMP,IAgBsB0H,EAAAY,OAAA,iBAAAZ,EAAAX,KAAA,EAAAW,EAAAE,GAAAF,EAAA,SAG1B6R,GAfyB3Y,EAeD8G,EAAAE,GAAE6O,QAdvB,CACLlW,KAAMN,EACNW,WAYqC,yBAAA8G,EAAAN,OAflC,IAAwBxG,CAeU,GAAA2G,EAAA,kBAEtC,gBAAA+T,EAAAC,EAAAC,GAAA,OAAAH,EAAAhU,MAAA,KAAAxE,UAAA,EATD,GgChDoC,EACrC,GAEcwT,CAA+B2E,ICnB/BA,M,qBCyBAS,ICzBAA,GDGf,WAYE,OATA1K,qBAAU,WACR,IAAM2K,EAASC,SAASC,cAAc,UAKtC,OAJAF,EAAOtJ,IAJS,kDAMhBuJ,SAAS1I,KAAK4I,YAAYH,GAEnB,kBAAMC,SAAS1I,KAAK6I,YAAYJ,EAAO,CAChD,GAAG,IAGDlL,eAAA,OACExR,GAAG,yBACH,cAAY,UACZ,aAAW,eACXmW,MAAO,CAAEtE,MAAO,SAGtB,EExBe,OAA0B,iCCA1B,OAA0B,iCCA1B,OAA0B,qCCA1B,OAA0B,sCCA1B,OAA0B,sC,QCG1B,SAASkL,GAAatb,GACnC,IAAMub,EAAYC,mBAChB,oBAAAjU,OAASkU,iCAAyClU,OAAGvH,EAAO,GAC5D,CAACA,IAIH,MAAO,CAACub,EAFa,SAAC5c,GAAC,OAAKsD,EAAasZ,EAAW5c,EAAE,EAGxD,CCWA,IAAM+c,GAAO,CACXxX,IAAKyX,GACLxX,KAAMyX,GACNxX,KAAMyX,ICrBD,ICHQC,GDUAlG,aAPS,SAAC/U,GACvB,MAAO,CACLb,QAASgB,EAAWH,GACpBhB,SAAUkB,EAAYF,GAE1B,GAEe+U,EDiBA,SAAkB3B,GAC/B,IAAQjU,EAAsBiU,EAAtBjU,QAASH,EAAaoU,EAAbpU,SAET0I,EAA0C1I,EAA1C0I,OAAQ/G,EAAkC3B,EAAlC2B,MAAOoH,EAA2B/I,EAA3B+I,MAAOD,EAAoB9I,EAApB8I,SAAU0C,EAAUxL,EAAVwL,MAClC0Q,EAAgBxa,EAAaC,EAAOA,EAAQmH,GAC5CkR,EAAetY,EAAaC,EAAOoH,GAEzCoT,EAAiCV,GAAatb,GAAQic,EAAAhR,aAAA+Q,EAAA,GAA/CT,EAASU,EAAA,GAAEC,EAAWD,EAAA,GAGvB/K,EADaf,IACFgB,CAAW,CAAEJ,SAAUd,KAElCkM,EAAOC,eAEb,OACEhL,gBAAAiL,YAAA,CAAA5M,SAAA,CACEM,eAACuM,KAAM,CAAA7M,SACLM,eAAA,SAAAN,SACG0M,EAAKI,cAAc,CAAEhe,GAAI,gBAAkB,CAAEuL,MAAOvB,QAGzDwH,eAAC6E,KAAI,CACH4H,QAAoB,SAAXjU,GAAsB2I,EAAe,EAAJ,EAC1CO,UAAU,WAAUhC,SAEpB2B,gBAACwD,KAAKI,IAAG,CAAAvF,SAAA,CACP2B,gBAACwD,KAAKK,OAAM,CAACI,QAAQ,OAAOX,MAAO,CAAEU,QAAS,GAAI3F,SAAA,CAChD2B,gBAACwD,KAAI,CAACnD,UAAU,WAAWiD,MAAO,CAAEtE,MAAO,QAASX,SAAA,CACtC,SAAXlH,EACCwH,eAAC6E,KAAKK,OAAM,CAACxD,UAAU,YAAWhC,SAChCM,eAAA,OACE4B,IAAK+J,GAAKnT,GACVmM,MAAO,CAAEtE,MAAOc,EAAW,OAAS,QACpCW,IAAI,OAIRX,GACEnB,eAAC6E,KAAKK,OAAM,CAACxD,UAAU,YAAWhC,SAChCM,eAACoF,QAAI,MAIX/D,gBAACwD,KAAKK,OAAM,CAACxD,UAAU,OAAMhC,SAAA,CAC3BM,eAACiE,UAAM,CAAC+D,KAAK,QAAQtG,UAAS,iBAAAlK,OAAmBgB,GAASkH,SACxDM,eAAC2B,KAAgB,CACfnT,GAAG,iBACHyY,OAAQ,CAAElN,MAAOvB,OAGrB6I,gBAAC4C,UAAM,CAAC4C,KAAG,EAAAnH,SAAA,CACRzP,EAAS,IACV+P,eAAA,KAAGyB,KAAM+J,EAAWhK,QAAS2K,EAAYzM,SACvCM,eAAA,OAAK4B,IAAK8K,GAAM5K,IAAI,OAEtB9B,eAACmG,SAAK,CACJC,QAASpG,eAAC2B,KAAgB,CAACnT,GAAG,kBAC9B0X,SAAS,gBACTG,QACErG,eAAA,OACE4B,IAAK+K,GACL7K,IAAI,GACJN,QAAS,kBAAM5O,EAAgB3C,EAAQ,IAG3CsW,GAAG,mBAKXvG,eAACiE,UAAM,CACLU,MACc,SAAXnM,IAAsB2I,GAAY,CAAEH,SAAU,UAAc,CAAC,EAC/DtB,SAEDM,eAAC2B,KAAgB,CACfnT,GAAG,mBACHyY,OAAQ,CACN5L,OAAQ2E,eAAC+G,KAAe,CAACvR,MAAOzD,KAAK4U,MAAMrL,KAC3CvB,MAAOvB,EACPoU,OAAQZ,EACRa,SACE7M,eAACgK,KAAe,CACdxU,MAAOwW,EACP/B,IAAKjK,eAAC2B,KAAgB,CAACnT,GAAG,iBAC1B0b,MAAOlK,eAAC2B,KAAgB,CAACnT,GAAG,0BAGhCqK,MAAOiR,EACPgD,cACE9M,eAACgK,KAAe,CACdxU,MAAOsU,EACPG,IAAKjK,eAAC2B,KAAgB,CAACnT,GAAG,iBAC1B0b,MAAOlK,eAAC2B,KAAgB,CAACnT,GAAG,kCAO5B,SAAXgK,IAAsB2I,GACrBnB,eAAC6E,KAAKK,OAAM,CAACI,QAAQ,QAAO5F,SAC1BM,eAACiL,GAAU,aAOzB,IGzIe,OAA0B,uC,QC6E1B8B,OAjEf,SAAqB7I,GACnB,IAAQjU,EAAYiU,EAAZjU,QAGFkR,EADaf,IACFgB,CAAW,CAAEJ,SAAUd,KAElCkM,EAAOC,eAEbW,EAAwC9L,qBAAW5B,IAA3CQ,EAAWkN,EAAXlN,YAAaC,EAAciN,EAAdjN,eA2BrB,OAzBAQ,qBAAU,WACR,IAAM0M,EAAW,eAAAxN,EAAAzJ,YAAAC,cAAAC,MAAG,SAAAC,IAAA,IAAA+W,EAAAC,EAAAC,EAAA,OAAAnX,cAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EAEV4I,MAAMsM,8CAA8C,cAAApV,EAAAE,KAAA,EAAAF,EAAAK,KAC1DqI,OAAI,QAFAkO,EAAS5W,EAAAK,QAQW,KAHpBwW,EAAWD,EAAUG,QAAO,SAACC,GAAC,OAChCnG,GAAemG,EAAmB,gBAAGrd,EAAQ,KAElCqC,QACX6a,EAAWA,EAAS,IACdrN,EAAc,IAAIyN,IAAI7B,kDAChB8B,aAAaC,OAAO,KAAMN,EAAS3e,IAC/CuR,EAAeD,IAEfzI,QAAQjH,MAAMgc,EAAKI,cAAc,CAAEhe,GAAI,6BAE1C,wBAAA8H,EAAAM,OAAA,GAAAT,EAAA,KACF,kBAlBgB,OAAAsJ,EAAA5I,MAAA,KAAAxE,UAAA,KAoBjB4a,GAEF,GAAG,CAAChd,EAASkR,IAGXrB,GACEE,eAAA,OAAKxR,GAAG,cAAakR,SACnB2B,gBAACwD,KAAI,CAACC,cAAc,SAAQpF,SAAA,CAC1B2B,gBAACwD,KAAKK,OAAM,CAACxD,UAAU,uBAAsBhC,SAAA,CAC3CM,eAAC6E,KAAKK,OAAM,CAACP,MAAO,CAAEtE,MAAO,eAAgBX,SAC3CM,eAAA,OAAK4B,IAAK8L,GAAM5L,IAAI,GAAG6C,MAAO,CAAEgJ,UAAW,WAE7CtM,gBAACwD,KAAKK,OAAM,CAACxD,UAAU,kBAAkBrB,MAAOc,EAAW,GAAK,EAAEzB,SAAA,CAChEM,eAACiE,UAAM,CAAAvE,SACLM,eAAC2B,KAAgB,CAACnT,GAAG,wBAEvBwR,eAACiE,UAAM,CAAC4C,KAAG,EAAAnH,SACTM,eAAC2B,KAAgB,CAACnT,GAAG,iCAI3BwR,eAAC6E,KAAKK,OAAM,CACVxD,UAAU,iBACV4D,QAAQ,QACR0B,UAAU,QAAOtH,SAEjBM,eAACiB,GAAmB,UAMhC,EC1Ee8L,GCSAlH,aANS,SAAC/U,GACvB,MAAO,CACLb,QAASgB,EAAWH,GAExB,GAEe+U,CAAkBkH,I,UCVlB,I,QAAA,IAA0B,gDCIzC,SAASa,GAAc1J,GACrB,IAAQ+B,EAA2C/B,EAA3C+B,QAAO4H,EAAoC3J,EAAlCnH,iBAAS,IAAA8Q,EAAG,EAACA,EAAAC,EAAqB5J,EAAnB6J,cAAM,IAAAD,GAAQA,EAE9C,OACE9N,eAAA,MAAI0B,UAAS,GAAAlK,OAAKuW,EAAS,SAAW,IAAKrO,SACzC2B,gBAAA,OAAKK,UAAU,kBAAiBhC,SAAA,EAC5BqO,GACA/N,eAACiE,UAAM,CAAC4C,KAAG,EAAClC,MAAO,CAAEqJ,cAAe,OAAQC,OAAQ,GAAIvO,SACtDM,eAACwJ,KAAa,CACZhU,MAAO,IAAIiU,KAAiB,IAAZ1M,GAChB2M,KAAK,UACLC,MAAM,OACNC,IAAI,cAIV5J,eAACiE,UAAM,CAACU,MAAO,CAAEuJ,SAAU,OAAQD,OAAQ,GAAIvO,SAAEuG,QAIzD,CAEeN,WAAMC,KAAKgI,ICtB1B,SAASO,GAASjK,GAChB,IAAQ1C,EAAY0C,EAAZ1C,QACR,OACExB,eAAA,MAAI0B,UAAU,OAAOiD,MAAO,CAAE0E,OAAQ,WAAa7H,QAASA,EAAQ9B,SAClEM,eAAA,OAAK0B,UAAU,kBAAiBhC,SAC9BM,eAACiE,UAAM,CAAC4C,KAAG,EAAClC,MAAO,CAAEuJ,SAAU,QAASxO,SACtCM,eAAC2B,KAAgB,CAACnT,GAAG,4BAK/B,CAEemX,WAAMC,KAAKuI,ICa1B,SAASC,GAAkBC,EAAWtR,GAA4B,IAC1DmH,EAAQ,CAAEnH,YAAWgR,OAD0B1b,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAClBkD,IAAK,aACxC8Y,EAAUzR,KACRoD,eAAC4N,GAAa/Z,YAAA,CACZoS,QAASjG,eAAC2B,KAAgB,CAACnT,GAAG,wBAC1B0V,IAGV,CAgCA,SAASoK,GAASpK,GAChB,IAAQpU,EAAaoU,EAAbpU,SACA0I,EAAkD1I,EAAlD0I,OAAQ/G,EAA0C3B,EAA1C2B,MAAOoH,EAAmC/I,EAAnC+I,MAAOD,EAA4B9I,EAA5B8I,SAAUF,EAAkB5I,EAAlB4I,KAAMR,EAAYpI,EAAZoI,QACxC4R,EAAetY,EAAaC,EAAOoH,GAEnC0V,EAAe9C,mBACnB,kBACE/S,EAAK2U,QACH,SAACpR,GAAG,OAAKA,EAAIyB,QAAUjJ,GAAeyD,GAASpD,kBAAkB,GAClE,GACH,CAAC4D,EAAMR,IAGTyH,EAA4CC,mBAAS,IAAGC,EAAA3E,aAAAyE,EAAA,GAAjD6O,EAAc3O,EAAA,GAAE4O,EAAiB5O,EAAA,GACxCwE,EAA8CzE,oBAAS,GAAM0E,EAAApJ,aAAAmJ,EAAA,GAAtDqK,EAAepK,EAAA,GAAEqK,EAAkBrK,EAAA,GAEpCvI,EAAQtH,GAAeyD,GAEvB0W,EAAuB,SAAvBA,IAA8C,IAAtBC,EAAQxc,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC9Bgc,EAAY,GAClBA,EAAUzR,KACRoD,eAAC4N,GAAa,CACZ3H,QAASjG,eAAC2B,KAAgB,CAACnT,GAAI,8BAC/BuO,UAAWtL,GACP,qBAGR4c,EAAUzR,KACRoD,eAAC4N,GAAa,CACZ3H,QACEjG,eAAC2B,KAAgB,CACfnT,GAAI,yBACJyY,OAAQ,CACN2F,OAAQ9C,EACR+C,SACE7M,eAACgK,KAAe,CACdxU,MAAOsU,EACPG,IAAKjK,eAAC2B,KAAgB,CAACnT,GAAG,iBAC1B0b,MAAOlK,eAAC2B,KAAgB,CAACnT,GAAG,6BAMtCuO,UAAWtL,GACN,kBAIL,IAAIgY,KAAa,IAAR5Q,GAAgB,IAAI4Q,OAC/B4E,EAAUzR,KACRoD,eAAC4N,GAAa,CACZ3H,QAASjG,eAAC2B,KAAgB,CAACnT,GAAG,yBAC9BuO,UAAWlE,GACP,gBAGRwV,EAAUzR,KACRoD,eAAC4N,GAAa,CACZ3H,QAASjG,eAAC2B,KAAgB,CAACnT,GAAG,4BAC9BuO,UAAWlE,GACP,oBAKV,IAAMiW,EAAgBrd,EAAQmH,EACxBmW,EAAkB,IAAItF,KAAqB,IAAhBqF,GAC7BE,GAAgB,EAEdC,EAAkB,SAAChT,GACvB,IAAMiT,EAAUjT,EAAI3L,KACpB,OAAQ2L,EAAIyB,OACV,KAAK3B,EAAMnH,SAnInB,SAA0ByZ,EAAWhT,EAAQtB,EAAOgD,GAClD,IAAMmH,EAAQ,CAAEnH,YAAWxH,IAAKwH,GAChCsR,EAAUzR,KACRoD,eAAC4N,GAAa/Z,YAAA,CACZoS,QACEjG,eAAC2B,KAAgB,CACfnT,GAAG,oBACHyY,OAAQ,CACN5L,OAAQ2E,eAAC+G,KAAe,CAACvR,MAAOzD,KAAK4U,MAAMtL,KAC3CtB,MAAOA,MAITmK,IAGV,CAoHUiL,CAAiBd,EAAWa,EAAQ7T,OAAQ7C,EAAQ0W,EAAQnS,WAC5D,MAEF,KAAKhB,EAAMlH,QA3GnB,SAAyBwZ,EAAWtR,GAClC,IAAMmH,EAAQ,CAAEnH,YAAWxH,IAAK,WAChC8Y,EAAUzR,KACRoD,eAAC4N,GAAa/Z,YAAA,CACZoS,QAASjG,eAAC2B,KAAgB,CAACnT,GAAG,sBAC1B0V,IAGV,CAoGUkL,CAAgBf,EAAWa,EAAQnS,WACnC,MAEF,KAAKhB,EAAMhH,QArGnB,SAAwBsZ,EAAWtR,GACjC,IAAMmH,EAAQ,CAAEnH,YAAWxH,IAAI,UAADiC,OAAYuF,IAC1CsR,EAAUzR,KACRoD,eAAC4N,GAAa/Z,YAAA,CACZoS,QAASjG,eAAC2B,KAAgB,CAACnT,GAAG,qBAC1B0V,IAGV,CA8FUmL,CAAehB,EAAWa,EAAQnS,WAClC,MAEF,KAAKhB,EAAM/G,UA/FnB,SAA0BqZ,EAAWtR,GACnC,IAAMmH,EAAQ,CAAEnH,YAAWxH,IAAI,YAADiC,OAAcuF,IAC5CsR,EAAUzR,KACRoD,eAAC4N,GAAa/Z,YAAA,CACZoS,QAASjG,eAAC2B,KAAgB,CAACnT,GAAG,uBAC1B0V,IAGV,CAwFUoL,CAAiBjB,EAAWa,EAAQnS,WAM1C,EAEA,GAAIwR,EAAajc,OAAS,EACxB,GAAIic,EAAajc,OAAS,IAAMuc,EAAU,CACxCR,EAAUzR,KACRoD,eAACmO,GAAQ,CAAgB3M,QAAS,kBAAMoN,GAAqB,EAAK,GAApD,aAEhB,IAAMW,EAAYhB,EAAaA,EAAajc,OAAS,GAC7CyK,EAAcwS,EAAUjf,KAAxByM,UAEJ,IAAI0M,KAAiB,IAAZ1M,GAAoBgS,IAC/BC,GAAgB,GAGlBC,EAAgBM,EAClB,KAAO,CAAC,IACwBC,EADzBC,EAAAC,aACanB,GAAY,IAA9B,IAAAkB,EAAAE,MAAAH,EAAAC,EAAAG,KAAAnT,MAAgC,CAAC,IAAtBR,EAAGuT,EAAAha,MACJuH,EAAcd,EAAI3L,KAAlByM,WACHiS,GAAiB,IAAIvF,KAAiB,IAAZ1M,GAAoBgS,IACjDC,GAAgB,EAChBZ,GAAkBC,EAAWS,IAG/BG,EAAgBhT,EAClB,CAAC,OAAA4T,GAAAJ,EAAA7gB,EAAAihB,EAAA,SAAAJ,EAAAK,GAAA,CACH,CAGGpB,GACEM,IACC,IAAIvF,MAAU,IAAIA,KAAqB,IAAhBqF,GACzBV,GAAkBC,EAAWS,IAE7BT,EAAUzR,KACRoD,eAAC4N,GAAa,CACZ3H,QAASjG,eAAA,OAAK4B,IAAKmO,GAAYrO,UAAU,eAAeI,IAAI,KAE5DiM,QAAM,GADF,iBAIRK,GAAkBC,EAAW,GAAG,KAKtCI,EAAkBJ,EACpB,EAEA9N,qBAAU,WACRqO,GAEF,GAAG,CAACF,IAEJnO,qBAAU,WACR,IAAMyP,EAAMlT,YAAOyR,GAEnByB,EAAOC,MAAK,SAACzU,EAAGC,GAAC,OAAKD,EAAElL,KAAKyM,UAAYtB,EAAEnL,KAAKyM,SAAS,IAAC,IAElCmT,EAFkCC,EAAAT,aAExCM,GAAM,IAAxB,IAAAG,EAAAR,MAAAO,EAAAC,EAAAP,KAAAnT,MAA0B,CACxB,OADYyT,EAAA1a,MACAkI,OACV,KAAK3B,EAAMlH,OACX,KAAKkH,EAAMhH,OACT4Z,GAAmB,GACnB,MACF,KAAK5S,EAAM/G,SACT2Z,GAAmB,GAIzB,CAAC,OAAAkB,GAAAM,EAAAvhB,EAAAihB,EAAA,SAAAM,EAAAL,GAAA,CACH,GAAG,CAAC/T,EAAOwS,IAEX,IACMpN,EADaf,IACFgB,CAAW,CAAEJ,SAAUd,KAExC,OACEmB,gBAAA,OAAKK,UAAS,YAAAlK,OAAckX,GAAmB,WAAYhP,SAAA,CACzD2B,gBAAC4C,UAAM,CAAC4C,KAAG,EAAAnH,SAAA,CACTM,eAAC2B,KAAgB,CAACnT,GAAG,mBACrBwR,eAACgG,GAAI,CACHC,QAASjG,eAAC2B,KAAgB,CAACnT,GAAG,4BAC9B0X,SAAQ,GAAA1O,OAAK2J,EAAW,QAAU,MAAK,gBAG3CnB,eAAA,MAAAN,SAAK8O,MAGX,CAEe7I,WAAMC,KAAK0I,IC1PXA,GCSAzI,aANS,SAAC/U,GACvB,MAAO,CACLhB,SAAUkB,EAAYF,GAE1B,GAEe+U,CAAkByI,ICVpBzd,GAAW,SAAAC,GAAK,OAAIA,EAAMC,IAAIH,MAAM,EACpCwf,GAAY,SAAAtf,GAAK,OAAID,GAASC,GAAOR,IAAI,E,iICDzC+f,GAAiB,MAEvB,SAASC,GAAkB1X,GAChC,OAAO7G,KAAKwe,MAAM3X,EAAWyX,IAAkB,CACjD,CAEO,SAASG,GAAe/e,EAAOoH,GACpC,OAAO9G,KAAKwe,OAAO1X,EAAQpH,GAAS4e,GACtC,CAEO,SAASI,GAAiBhf,GAC/B,OAAOM,KAAK2e,MAAM,IAAIjH,KAAS,IAAIA,KAAa,IAARhY,KAAmC,IAAjB4e,IAC5D,CAEO,SAASM,GAAkBC,EAAUnf,GAC1C,OAAOM,KAAKwe,OAAOK,EAAWnf,GAAS4e,IAAkB,CAC3D,CAEO,SAASQ,GAAYve,EAAQwe,GAClC,OAAOC,MAAMzS,KAAK,IAAIyS,MAAMze,GAASwe,EACvC,CAEO,SAASE,GAAe1e,GAC7B,OAAOue,GAAYve,GAAQ,SAAC2e,EAAGC,GAAC,MAAK,GAAG,GAC1C,CCGA,SAASC,GAAeC,EAAW3f,GACjC,IAAM4f,EAAYD,EAAU9e,OAAS,EAKrC,MAAO,CAAC+e,EAJWA,EACfV,GAAkBS,EAAU,GAAG9gB,KAAKyM,UAAWtL,IAC9C,EAGP,CAUA,SAAS6f,GAAa7f,EAAOmH,EAAUwT,GACrC,IAAMmF,EAAiBjB,GAAkB1X,GACnC4Y,EAAc,CAAE9H,KAAM,UAAWC,MAAO,QAASC,IAAK,WAM5D,OAJciH,GAAYU,GAAgB,SAACN,EAAGC,GAAC,OAC7C9E,EAAKqF,WAAW,IAAIhI,KAAoC,KAA9BhY,EAAQyf,EAAIb,KAAyBmB,EAAY,GAI/E,CAEA,SAASE,GAAejgB,EAAOoH,EAAOD,EAAU0C,EAAO8V,GACrD,IAAMO,EAAcnB,GAAe/e,EAAOoH,GACpC+Y,EAActB,GAAkB1X,GAChCiZ,EAAevW,EAAQsW,EAE7BE,EAAgCX,GAAeC,EAAW3f,GAAMsgB,EAAA7W,aAAA4W,EAAA,GAAzDT,EAASU,EAAA,GAAEC,EAAUD,EAAA,GAExBE,EAAc,IAAIlB,MAAMY,GAAaO,KAAK,GAE9C,OAAIb,IAEAY,EADED,GAAcL,EACF,IAAIZ,MAAMiB,GAAYE,KAAK,GAE3BD,EAAYza,OACxBqZ,GACEmB,GACA,SAACf,EAAGC,GAAC,OAAKnf,KAAK4U,MAAMkL,GAAgBF,EAAcT,EAAI,GAAK,KAAO,GAAG,MAKhEe,EAAY3f,OAAS,GAAKgJ,EAE/B2W,GAGFA,EAAYza,OACjBqZ,GACEe,EAAcD,GACd,SAACV,EAAGC,GAAC,OAAKnf,KAAK4U,MAAMkL,GAAgBF,EAAcT,EAAI,GAAK,KAAO,GAAG,IAG5E,CAEA,SAASiB,GACP1gB,EACAoH,EACAD,EACAQ,EACAC,EACAG,GAEA,IAAMmY,EAAcnB,GAAe/e,EAAOoH,GACpC+Y,EAActB,GAAkB1X,GAElCqZ,EAAc,GAElB,IAAK7Y,EACH,OAAO6Y,EAIT,IAAK,IAAIf,EAAI,EAAGA,EAAIU,EAAaV,IAAK,CACpC,IAAIkB,OAAa,EAEjB,GAAIlB,EAAIS,EACNS,EAAgB,MACX,CACL,IAAMC,EAAkBhC,GAAiBa,EAAK9X,EACxCkZ,EAAsBvgB,KAAKwgB,MAAMF,GAMvC,GAJAD,EAAgB/Y,EACbhI,MAAM,EAAGihB,GACT/W,QAAO,SAACC,EAAGC,GAAC,OAAKD,EAAIC,CAAC,GAAE,GAEvBjC,GAAU8Y,EAAsBjZ,EAAgB/G,OAKlD8f,GAJyB/Y,EAAgBiZ,IACVD,EAAiB,EAKpD,CAEAJ,EAAYrV,KAAKwV,EACnB,CAEA,OAAOH,CACT,CAEA,SAASO,GAAe/gB,EAAOoH,EAAO4Z,EAAarB,GACjD,GAAI,IAAI3H,KAAS,IAAIA,KAAa,IAAR5Q,GACxB,MAAO,GAGT,IAAM6Z,EAAQjC,GAAiBhf,GAAS,EAClCkgB,EAAcnB,GAAe/e,EAAOoH,GACpC8Z,EAAcF,EAAYpkB,KAAI,SAAC4N,GAAG,OACtClK,KAAK4U,OAAO1K,EAAIc,UAAYtL,GAAS4e,GAAe,IAGtD,GAAIsC,EAAYrgB,OAAS,EAAG,CAC1B,IAAIsgB,EAAc5B,GAAeW,GACjCiB,EAAcA,EAAYpb,OACxBqZ,GAAY8B,EAAY,GAAKhB,GAAa,kBAAM,CAAC,KAEnD,IADC,IAAAkB,EAAA,WAEC,IAAQ3V,EAASuV,EAAYvB,EAAI,GAAzBhU,KACR0V,EAAcA,EAAYpb,OACxBqZ,GACE8B,EAAYzB,GAAKyB,EAAYzB,EAAI,IACjC,kBAAMnf,KAAK4U,MAAa,IAAPzJ,GAAc,GAAG,IAGxC,EARSgU,EAAI,EAAGA,EAAIyB,EAAYrgB,OAAQ4e,IAAG2B,IAU3C,IAAAC,EAAgC3B,GAAeC,EAAW3f,GAAMshB,EAAA7X,aAAA4X,EAAA,GAAzDzB,EAAS0B,EAAA,GAAEf,EAAUe,EAAA,GACtBC,EAAiB3B,EAAYW,EAAa,EAAIU,EAE5CxV,EAASuV,EAAYA,EAAYngB,OAAS,GAA1C4K,KAOR,OANA0V,EAAcA,EAAYpb,OACxBqZ,GACEmC,EAAiBL,EAAYA,EAAYrgB,OAAS,IAClD,SAAC2e,EAAGC,GAAC,OAAKnf,KAAK4U,MAAa,IAAPzJ,GAAc,GAAG,IAI5C,CAEA,OAAO8T,GAAe0B,EACxB,CAEA,SAASO,GAAiBra,EAAUuI,GAClC,GAAIA,EACF,MAAO,OAGT,IAAM+R,EAAmB5C,GAAkB1X,GAAY,GAGvD,OACE,IACCsa,GAJe,EAKZ,EACAnhB,KAAK2e,KAAKwC,EANE,GAQpB,CAkCA,SAASC,GAAMjP,GACb,IA0BImN,EAAW+B,EA1BPtjB,EAAqBoU,EAArBpU,SAAUc,EAAWsT,EAAXtT,OAEhBsH,EAaEpI,EAbFoI,QACAM,EAYE1I,EAZF0I,OACA/G,EAWE3B,EAXF2B,MACAoH,EAUE/I,EAVF+I,MACAD,EASE9I,EATF8I,SACAF,EAQE5I,EARF4I,KACAW,EAOEvJ,EAPFuJ,gBACAD,EAMEtJ,EANFsJ,eACAI,EAKE1J,EALF0J,OACAF,EAIExJ,EAJFwJ,OACAL,EAGEnJ,EAHFmJ,QACArC,EAEE9G,EAFF8G,KACA0E,EACExL,EADFwL,MAGIoX,EAAQ3gB,KAAKwe,OAAM,IAAI9G,MAAO4J,UAAY,KAC1CC,EAAgB7hB,EAAQihB,EAAQ,EAAIjC,GAAiBhf,GACrDsK,EAAQtH,GAAeyD,GAEvBua,EAAc/Z,EACjB2U,QAAO,SAACpR,GAAG,OAAKA,EAAIyB,QAAU3B,EAAMnH,OAAO,IAC3CvG,KAAI,SAAC4N,GAAG,OAAKA,EAAI3L,IAAI,IAClB8gB,EAAY1Y,EAAK2U,QAAO,SAACpR,GAAG,OAAKA,EAAIyB,QAAU3B,EAAMlH,MAAM,IAG7D0e,GAAW,EAEf,GAAIrb,IAAY5D,GAAgBC,GAAI,CACjC,IAAAif,EAAgCrC,GAAeC,EAAW3f,GAAMgiB,EAAAvY,aAAAsY,EAAA,GAA/DnC,EAASoC,EAAA,GAAEL,EAAgBK,EAAA,EAC/B,KAAO,CACJ,IAAAC,EA9NL,SAAiCjiB,EAAO6H,EAAQL,EAASrC,GACvD,MAAO,CACLqC,EACAA,GAAWK,EAASqX,GAAkB/Z,EAAMnF,IAAU,EACtD6H,EAEJ,CAwN+Cqa,CACzCliB,EACA6H,EACAL,EACArC,GACDgd,EAAA1Y,aAAAwY,EAAA,GALCrC,EAASuC,EAAA,GAAER,EAAgBQ,EAAA,GAAEL,EAAQK,EAAA,EAMzC,CAEA,IAAMxH,EAAOC,eAGPlL,EADaf,IACFgB,CAAW,CAAEJ,SAAUd,KAClC2T,EAAkBzH,EAAKI,cAAc,CAAEhe,GAAI,uBAE3CslB,EAAS,CACbC,MAAO,CACLlhB,KAAMuZ,EAAKI,cAAc,CAAEhe,GAAI,gBAC/BwlB,UAAW,CACT9F,SAAU,SAGdtL,MAAO,CAAC,UAAW,WACnBqR,QAAS,CACP5N,QAAS,OACT6N,UAAW,SAACC,GAAI,OAzFtB,SAA6BzB,EAAO0B,EAAShI,EAAM+H,EAAM3b,EAAQ5H,GAC/D,IAAIqjB,EAAO,2BAAAzc,OAA8B2c,EAAK,GAAGE,UAAS,eAEpDC,EAAoB,SAAC9e,GAAK,OAC9B+e,MAAM/e,GAASA,EAAQ4W,EAAKoI,aAAaziB,KAAK4U,MAAMnR,GAAO,EAmB7D,OAjBA2e,EAAKM,SAAQ,SAAAhV,GAAoC,IAAjCiV,EAAMjV,EAANiV,OAAQC,EAAUlV,EAAVkV,WAAYnf,EAAKiK,EAALjK,MAElCye,GAAO,yBAAAzc,OAECkd,EAAM,KAAAld,OAAI2c,EAAK,GAAGS,UAAYlC,EAAQiC,EAAaP,EAAO,wDAAA5c,OAGlD8c,EAAkB9e,GAAM,KAAAgC,OAAIgB,EAAM,yDAAAhB,OAE1BgB,EAAM,kBAAAhB,OACtB8c,GAA2B,EAAR9e,GAAa5E,GAAO,qDAKjD,IAEOqjB,EAAU,gBACnB,CAkEQY,CACEpE,GAAiBhf,GAAS,EAC1BoiB,EACAzH,EACA+H,EACA3b,EACW,SAAXA,EAAoB5H,EAAS,EAC9B,GAELkkB,OAAQ,CACNxkB,KAAM,CACJ8b,EAAKI,cAAc,CAAEhe,GAAI,iBACzB4d,EAAKI,cAAc,CAAEhe,GAAI,qBAG7BumB,KAAM,CACJC,KAAM,IACNC,MAAO,IACPC,OAAQ,KACRC,cAAc,GAEhBC,MAAO,CACLrlB,KAAM,WACNslB,aAAa,EACb/kB,KAAMghB,GAAa7f,EAAOmH,EAAUwT,GACpCkJ,UAAW,CACTC,MAAO,OACPC,WAAY,GACZ5S,MAAO,UACP6S,SAAUxC,GAAiBra,EAAUuI,IAEvCuU,SAAU,CACRC,MAAM,IAGVC,MAAO,CACL7lB,KAAM,QACNulB,UAAW,CACTpB,UAAW,SAAC1e,GACV,IAAK2L,EACH,MAAM,GAAN3J,OAAU4U,EAAKoI,aAAahf,GAAM,KAAAgC,OAAIgB,GAGxC,IAAMqd,EAAS,CACb,CAAEC,UAAW,EAAGC,IAAK,IACrB,CAAED,UAAW,IAAKC,IAAK,KACvB,CAAED,UAAW,IAAKC,IAAK,KACvB,CAAED,UAAW,IAAKC,IAAK,KACvB,CAAED,UAAW,KAAMC,IAAK,KACxB,CAAED,UAAW,KAAMC,IAAK,KACxB,CAAED,UAAW,KAAMC,IAAK,MAEpBC,EAAaH,EAAOxnB,KAAI,SAAC4nB,GAAG,OAAKA,EAAIH,SAAS,IAC9CI,EAAQnkB,KAAAqJ,IAAG,GAAMrJ,KAAKwe,MAAMxe,KAAKokB,MAAM3gB,KACvC4gB,EAAUJ,EAAW3nB,KAAI,SAAC4iB,GAAC,OAAKlf,KAAKC,IAAIkkB,EAAWjF,EAAE,IACtDoF,EAAYtkB,KAAKukB,IAAGzf,MAAR9E,KAAI+K,YAAQsZ,IACxBpa,EAAMoa,EAAQG,WAAU,SAACtF,GAAC,OAAKA,IAAMoF,CAAS,IAEpD,MAAM,GAAN7e,OAAU4U,EAAKoI,aAAahf,EAAQqgB,EAAO7Z,GAAK8Z,YAAUte,OACxDqe,EAAO7Z,GAAK+Z,IAAG,KAAAve,OACbgB,EACN,EACAge,QAAQ,EACRvI,OAAQ,EACRnJ,cAAe,SACf2R,cAAc,EACdjB,WAAY,KAGhBkB,OAAQ,CACN,CACE3e,KAAMqU,EAAKI,cAAc,CAAEhe,GAAI,iBAC/BuB,KAAM,OACNO,KACE4H,IAAY5D,GAAgBC,GACxBmd,GAAejgB,EAAOoH,EAAOD,EAAU0C,EAAO8V,GAC9Ce,GACE1gB,EACAoH,EACAD,EACAQ,EACAC,EACAG,GAERhB,OAAQ,OACRme,SAAU,CACRne,OAAQ,OACRlI,KAAM,CACJ,CACEyH,KAAK,GAADP,OACF6Z,EACIjF,EAAKI,cAAc,CAAEhe,GAAI,kBACzB+kB,EACAnH,EAAKI,cAAc,CAAEhe,GAAI,iBACzB4d,EAAKI,cAAc,CAAEhe,GAAI,iBAE/B4mB,MACE/D,GAAakC,EACTH,EACA3C,GAAiBhf,GACvB+W,MAAO,CACL0L,UAAW,MACXyB,MAAM,EACN/S,MAAO,QACPgU,gBAAiB,UACjBvR,QAAS,CAAC,EAAG,GACbwR,aAAc,GAEhBC,UAAW,CACT/mB,KAAM,QACN6S,MAAO,eAMjB,CACE7K,KAAMqU,EAAKI,cAAc,CAAEhe,GAAI,mBAC/BuB,KAAM,OACNO,KAAMkiB,GAAe/gB,EAAOoH,EAAO4Z,EAAarB,GAChD5Y,OAAQ,SAGZue,UAAW,CACThnB,KAAM,YACNinB,YAAa,EACbrB,MAAM,EACNsB,UAAW,EACXC,OAAQ,CACN,CACEC,IAAK9F,GAAakC,EAAWH,EAAmBE,EAChD8D,IAAK,EACLxU,MAAO,WAET,CACEwU,GAAI/F,GAAakC,EAAWH,EAAmBE,EAC/C1Q,MAAO,+BAMfjD,EAAoCC,mBAAS,MAAKC,EAAA3E,aAAAyE,EAAA,GAA3C0X,EAAUxX,EAAA,GAAEyX,EAAazX,EAAA,GAsChC,OApCAU,qBAAU,WACRgX,KAAY,CACVC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OAGF,IAAMC,EAAW9M,SAAS+M,eAAe,SACzCZ,EAAcC,KAAaU,GAC7B,GAAG,IAEH1X,qBAAU,WACR/N,OAAO2lB,SAAW,WAlOtB,IAAuBC,KAkOmBf,IAhOtCe,EAAMC,QAgO2C,CACnD,IAEA9X,qBAAU,WACJ8W,IACElW,GACF2S,EAAOgB,OAAOwD,IAAM,SACpBxE,EAAOiB,KAAKG,OAAS,QAErBpB,EAAOgB,OAAOwD,IAAM,MACpBxE,EAAOiB,KAAKG,OAAS,MAGvBmC,EAAWkB,UAAUzE,GAGzB,GAAG,CAAC3S,EAAUkW,IAEPrX,eAAA,OAAKxR,GAAG,SACjB,CAEemX,WAAMC,KAAKuN,ICjdXA,GCWAtN,aAPS,SAAC/U,GACvB,MAAO,CACLhB,SAAUkB,EAAYF,GACtBF,OAAQwf,GAAUtf,GAEtB,GAEe+U,CAAkBsN,I,QCDjC,SAASqF,GAAQtU,GACf,IAAQjU,EAA8BiU,EAA9BjU,QAASH,EAAqBoU,EAArBpU,SAAUc,EAAWsT,EAAXtT,OACnB4H,EAAwD1I,EAAxD0I,OAAQW,EAAgDrJ,EAAhDqJ,SAAU1H,EAAsC3B,EAAtC2B,MAAOoH,EAA+B/I,EAA/B+I,MAAOE,EAAwBjJ,EAAxBiJ,aAAcuC,EAAUxL,EAAVwL,MAElDmd,EAAa1mB,KAAK4U,MAAOxN,EAAWJ,EAAgB,KAEpDwb,MAAMkE,KACRA,EAAa,GAGf,IAAM3O,EAAetY,EAAaC,EAAOoH,GAEzCoT,EAAiCV,GAAatb,GAAQic,EAAAhR,aAAA+Q,EAAA,GAA/CT,EAASU,EAAA,GAAEC,EAAWD,EAAA,GAE7B,OACE7K,gBAAA,OAAK7S,GAAG,UAAUmW,MAAO,CAAEqC,UAAW,WAAYtH,SAAA,CAChDM,eAAC2B,KAAgB,CACfnT,GAAG,eACHyY,OAAQ,CACNxL,EAAG,SAACyL,GAAM,OAAKlH,eAAA,KAAAN,SAAIwH,GAAW,EAC9B2B,GAAI7I,eAAA,SACJnH,MAAOiR,EACPC,QACE/J,eAACgK,KAAe,CACdxU,MAAOsU,EACPG,IAAKjK,eAAC2B,KAAgB,CAACnT,GAAG,iBAC1B0b,MAAOlK,eAAC2B,KAAgB,CAACnT,GAAG,0BAGhCkqB,SACE1Y,eAACwJ,KAAa,CACZhU,MAAO,IAAIiU,KAAa,IAAR5Q,GAChB6Q,KAAK,UACLC,MAAM,OACNC,IAAI,YAGR+O,OACEF,EAAa,EACXpX,gBAAAiL,YAAA,CAAA5M,SAAA,CAAE,QAEAM,eAAC2B,KAAgB,CAACnT,GAAG,mBAAmB,UAI1CwR,eAAAsM,YAAA,CAAA5M,SAAE,SAEN+Y,WAAYzY,eAAC+G,KAAe,CAACvR,MAAOijB,IACpCpd,OACE2E,eAAC+G,KAAe,CACdvR,MAAkB,SAAXgD,EAAoB8C,EAAQ1K,EAAS0K,OAKpD0E,eAAA,KAAGyB,KAAM+J,EAAWhK,QAAS2K,EAAYzM,SACvCM,eAAC2B,KAAgB,CAACnT,GAAG,gCAI7B,CAEemX,WAAMC,KAAK4S,ICxEXA,GCYA3S,aARS,SAAC/U,GACvB,MAAO,CACLb,QAASgB,EAAWH,GACpBhB,SAAUkB,EAAYF,GACtBF,OAAQwf,GAAUtf,GAEtB,GAEe+U,CAAkB2S,ICuClBI,OA/Cf,SAAsB1U,GACpB,IAAQpU,EAAaoU,EAAbpU,SAER,IAAKA,GAAYA,EAASoI,UAAY5D,GAAgBE,GACpD,OAAO,KAGT,IACEgE,EAME1I,EANF0I,OACAC,EAKE3I,EALF2I,QACAU,EAIErJ,EAJFqJ,SACO0f,EAGL/oB,EAHFwL,MACAvC,EAEEjJ,EAFFiJ,aAKI9G,GAHFnC,EADFmJ,QAGsBF,EAAe8f,IACjBpgB,EAAUU,GAEhC,IAAKlH,EACH,OAAO,KAGT,IAAM6mB,EACJ7mB,EAAO,EACH,sCACA,4BAEN,OACE+N,eAAC+Y,WAAO,CAAArZ,SACNM,eAAA,KAAAN,SACEM,eAAC2B,KAAgB,CACfnT,GAAIsqB,EACJ7R,OAAQ,CACN+R,QACEhZ,eAAA,KAAAN,SACEM,eAAC+G,KAAe,CAACvR,MAAOzD,KAAKC,IAAIC,OAGrC8H,MAAOiG,eAAA,KAAAN,SAAIlH,UAMvB,ECjDeogB,GCSA/S,aANS,SAAC/U,GACvB,MAAO,CACLhB,SAAUkB,EAAYF,GAE1B,GAEiC,KAAlB+U,CAAwB+S,IC0CxBK,ICnDAA,GDYf,WACE,IACM9X,EADaf,IACFgB,CAAW,CAAEJ,SAAUd,KAExC,OACEmB,gBAACqD,KAAS,CAAChD,UAAU,YAAWhC,SAAA,CAC9BM,eAAC+L,GAAQ,IACT/L,eAAC+M,GAAW,IACZ1L,gBAACwD,KAAI,CAACqU,WAAS,EAACzM,QAAS,EAAG0M,QAAM,EAACxU,MAAO,CAAEtE,MAAO,QAASX,SAAA,CAC1D2B,gBAACwD,KAAKK,OAAM,CAAC7E,MAAO,GAAIsE,MAAO,CAAEQ,YAAa,GAAIzF,SAAA,CAChDM,eAAC4Y,GAAY,IACb5Y,eAACyG,GAAQ,IACTzG,eAACmT,GAAK,IACNnT,eAACwY,GAAO,OAEVxY,eAAC6E,KAAKK,OAAM,CAAC7E,MAAO,EAAGsE,MAAO,CAAEY,aAAc,EAAGJ,YAAa,QAASzF,SACpEyB,EACCnB,eAAC6E,KAAI,CAAAnF,SACH2B,gBAACwD,KAAKI,IAAG,CAACwH,QAAS,EAAE/M,SAAA,CACnBM,eAAC6E,KAAKK,OAAM,CAAAxF,SACVM,eAACsO,GAAQ,MAEXtO,eAAC6E,KAAKK,OAAM,CAACxD,UAAU,gBAAehC,SACpCM,eAACwK,GAAO,WAKdnJ,gBAAAiL,YAAA,CAAA5M,SAAA,CACEM,eAACsO,GAAQ,IACTtO,eAACwK,GAAO,cAOtB,EE/CM4O,I,QAAM,SAAAC,GAAAC,aAAAF,EAAAC,GAAA,IAAAE,EAAAC,aAAAJ,GAAA,SAAAA,IAAA,OAAAlkB,aAAA,KAAAkkB,GAAAG,EAAA1iB,MAAA,KAAAxE,UAAA,CAcT,OAdSiD,aAAA8jB,EAAA,EAAA7jB,IAAA,SAAAC,MACV,WACE,OACE6L,gBAAA,OAAKK,UAAU,SAAQhC,SAAA,CACrB2B,gBAAA,OAAKK,UAAU,aAAYhC,SAAA,CACzBM,eAAA,OAAK0B,UAAU,sBACf1B,eAAA,OAAK0B,UAAU,iBACf1B,eAAA,OAAK0B,UAAU,oBAEjB1B,eAAA,OAAK0B,UAAU,gBAAehC,SAC5B2B,gBAAA,QAAMK,UAAU,mBAAkBhC,SAAA,CAAC,SAAG,IAAI+J,MAAOgQ,cAAc,uBAIvE,KAACL,CAAA,CAdS,CAASM,cCFNN,GDmBAA,G,sCEfM9X,GAAM,SAAAqY,GAAAL,aAAAhY,EAAAqY,GAAA,IAAAJ,EAAAC,aAAAlY,GAAA,SAAAA,IAAA,OAAApM,aAAA,KAAAoM,GAAAiY,EAAA1iB,MAAA,KAAAxE,UAAA,CAaxB,OAbwBiD,aAAAgM,EAAA,EAAA/L,IAAA,SAAAC,MASzB,WACE,IAAAokB,EAA+BnkB,KAAKyO,MAA5BxC,EAASkY,EAATlY,UAAcmY,EAAIC,aAAAF,EAAAG,IACpBC,EAAO,SAAAxiB,OAAYkK,GACzB,OAAO1B,eAAA,QAAAnM,YAAA,CAAO6N,UAAWsY,GAAaH,GACxC,KAACvY,CAAA,CAbwB,CAASqE,IAAMsU,eAArB3Y,GAKZ4Y,aAAe,CACpBxY,UAAW,ICTAyY,UCKf,SAASC,GAAYlW,GACnB,IAAQmW,EACNnW,EADMmW,aAAcC,EACpBpW,EADoBoW,WAAYrqB,EAChCiU,EADgCjU,QAASsD,EACzC2Q,EADyC3Q,QAASgnB,EAClDrW,EADkDqW,oBAG9CnO,EAAOC,eAETmO,EAAWpO,EAAKI,cAAc,CAAEhe,GAAI,iCAoBxC,OAnBK6rB,EAIO/oB,EAAe+oB,GAIhBC,GAAcD,IAAiBpqB,IACxCuqB,EACEpO,EAAKI,cAAc,oCAClBjZ,GACkB,YAAjBA,EAAQwE,MAAkB,KAAAP,OACrB4U,EAAKI,cAAc,CACtBhe,GAAI,8BACJyY,OAAQ,CAAE1T,QAASA,EAAQwE,WAVjCyiB,EAAWpO,EAAKI,cAAc,CAC5Bhe,GAAI,0CALNgsB,EAAWpO,EAAKI,cAAc,CAC5Bhe,GAAI,yCAkBN6S,gBAACqD,KAAS,CAAChD,UAAU,UAAShC,SAAA,CAC5BM,eAACoF,QAAI,IACLpF,eAAA,MAAAN,SACEM,eAAC2B,KAAgB,CAACnT,GAAG,yBAEvBwR,eAACma,GAAK,CACJ3kB,MAAO6kB,EACP5R,YAAY,QACZJ,SAAUkS,IAEZva,eAAA,KAAG0B,UAAU,OAAMhC,SAAE8a,MAG3B,CAEe7U,WAAMC,KAAKwU,IC5C1B,SAASK,GAAUvW,GACjB,IAAQwW,EAAoBxW,EAApBwW,gBAIJC,EAFStO,eAEQG,cACnB,CAAEhe,GAAI,qBACN,CAAE4B,MAAOsqB,GAAmB,SAU9B,OARIA,IAAmE,IAAhDA,EAAgBE,QAAQ,qBAC7CD,EACE3a,eAAA,KAAG0B,UAAU,QAAOhC,SAClBM,eAAC2B,KAAgB,CAACnT,GAAG,qCAMzB6S,gBAACqD,KAAS,CAAChD,UAAU,QAAOhC,SAAA,CAC1BM,eAACoF,QAAI,IACLpF,eAAA,MAAAN,SACEM,eAAC2B,KAAgB,CAACnT,GAAG,gCAEvBwR,eAAA,KAAAN,SAAIib,MAGV,CAEehV,WAAMC,KAAK6U,IC7B1B,SAASI,GAAY3W,GACnB,IAAQ0D,EAAQ1D,EAAR0D,IAER,OACEvG,gBAACqD,KAAS,CAAChD,UAAU,UAAShC,SAAA,CAC5BM,eAACoF,QAAI,IACLpF,eAAA,KAAG0B,UAAU,kBAAiBhC,SAAEkI,MAGtC,CAEejC,WAAMC,KAAKiV,I,wCCPpBC,GAAqB,gBAiDZC,OA/Cf,SAA2B7W,GACzB,IACE8W,EAEoB9W,EAFpB8W,eACAC,EACoB/W,EADpB+W,gBACAC,EAAoBhX,EAApBgX,gBAEIC,EAAoB,WACxB,OAAOnb,eAAA,KAAAN,SAAI0b,wBAAaH,IAC1B,EASA,OACE5Z,gBAAC0G,SAAK,CACJC,KAAK,OACLvV,MAAM,EACNkS,MAAO,CAAEuB,SAAU,YAAaxG,SAAA,CAElCM,eAACqb,mBAAe,CAACtH,MAAO/T,eAAC2B,KAAgB,CAACnT,GAAI,gCAC9CwR,eAAC+H,SAAMI,QAAO,CAAAzI,SACZM,eAAC2B,KAAgB,CAACnT,GAAI,8BACJyY,OAAQ,CACNkU,kBAAmBA,IACnBG,iBAlBC,WACvB,IAAIC,EAAYP,EACZI,wBAAaJ,GACbF,GACJ,OAAO9a,eAAA,KAAAN,SAAI6b,GAAaT,IAC1B,CAa0CQ,QAIvCtb,eAAC+H,SAAMI,QAAO,CAAAzI,SACZM,eAACsB,UAAM,CACLka,OAAK,EACLja,SAAO,EACPC,QAAS,kBAAM0Z,GAAmBA,EAAgBD,EAAgB,EAACvb,SAEnEM,eAAC2B,KAAgB,CAACnT,GAAG,6BACrByY,OAAQ,CACNkU,kBAAmBA,aAK9B,ECxCA,SAASM,GAAgBjoB,GACvB,OAAO2H,SAASugB,OAAOloB,GAAS+V,UAAU,GAAI,GAChD,CAAC,IAEKoS,GAAG,SAAAtC,GAAAC,aAAAqC,EAAAtC,GAAA,IAAAE,EAAAC,aAAAmC,GAUP,SAAAA,EAAYzX,GAAQ,IAAD0X,EAOuC,OAPvC1mB,aAAA,KAAAymB,IACjBC,EAAArC,EAAA1f,KAAA,KAAMqK,IAHR2X,YAAa,EAAKD,EAiElBrB,oBAAsB,SAAC3rB,GACrB,IAAMqB,EAAUrB,EAAEktB,OAAOtmB,MAAMumB,OAC/BC,aAAaC,QAAQ,UAAWhsB,GAChC2rB,EAAKnU,SAAS,CAAExX,WAClB,EAAC2rB,EAEDM,cAAgB,SAACttB,GACf,IAAMutB,EAAyB,KAAZvtB,EAAEwtB,OAA4B,KAAZxtB,EAAEwtB,MACvCxC,EAA0CgC,EAAK1X,MAAvCmY,EAAQzC,EAARyC,SAAUC,EAAU1C,EAAV0C,WAAYrsB,EAAO2pB,EAAP3pB,QAE5BksB,GACAG,GACAV,EAAK9qB,MAAMb,SACXqB,EAAesqB,EAAK9qB,MAAMb,UAC1B2rB,EAAK9qB,MAAMb,UAAYA,GAEvBosB,EAAST,EAAK9qB,MAAMb,QAExB,EAAC2rB,EAEDW,iBAAmB,SAAC/oB,GACdooB,EAAKC,YAnGgB,QAoGnBroB,GACFooB,EAAKnU,SAAS,CAAE+U,wBAAwB,EAAMhpB,QAASioB,GAAgBjoB,IAG7E,EAvFEooB,EAAK9qB,MAAQ,CACXb,QAAS2rB,EAAK1X,MAAMjU,SAAW+rB,aAAaS,QAAQ,YAAc,KAClEjpB,QAASooB,EAAK1X,MAAM1Q,SAAW,KAC/BgpB,wBAAwB,GAE1BZ,EAAKW,iBAAmBX,EAAKW,iBAAiBG,KAAIC,aAAAf,IAAMA,CAC1D,CAiKC,OAjKAtmB,aAAAqmB,EAAA,EAAApmB,IAAA,qBAAAC,MAED,YAEEonB,EADsBnnB,KAAKyO,MAAnB0Y,aAERzR,SAASxK,iBAAiB,UAAWlL,KAAKymB,cAC5C,GAAC,CAAA3mB,IAAA,uBAAAC,MAED,WACEC,KAAKomB,YAAa,EAClB1Q,SAASvK,oBAAoB,UAAWnL,KAAKymB,eACd,qBAApB1pB,OAAOsB,UAChBtB,OAAOsB,SAAS+oB,eAAe,eAAgBpnB,KAAK8mB,iBAExD,GAAC,CAAAhnB,IAAA,4BAAAC,MAED,SAA0BsnB,GACpBA,EAAU7sB,UAAYwF,KAAKyO,MAAMjU,UAEnC2sB,EADsBnnB,KAAKyO,MAAnB0Y,YAGZ,GAAC,CAAArnB,IAAA,oBAAAC,MAED,WAAqB,IAADunB,EAAA,KAClBtnB,KAAKomB,YAAa,EACa,qBAApBrpB,OAAOsB,UAChBtB,OAAOsB,SAASyS,GAAG,gBAAgB,SAAC/S,GAClCupB,EAAKR,iBAAiB/oB,EACxB,IAEGhB,OAAOsB,SAASkpB,eACjBxqB,OAAOsB,SAAS2C,QAAQ,CAAEC,OAAQ,gBAAiBqN,MAAK,SAAAvQ,GACtDupB,EAAKR,iBAAiB/oB,EACxB,IACCsV,OAAM,SAAA1Y,GAAK,OAAIiH,QAAQ4E,IAAI7L,EAAM,KAIpCiH,QAAQ4E,IAAI,0CAEhB,GAAC,CAAA1G,IAAA,kBAAAC,MAAA,eAAAynB,EAAAjnB,YAAAC,cAAAC,MAED,SAAAC,IAAA,OAAAF,cAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACE,IACEhE,OAAOsB,SAAS2C,QAAQ,CACtBC,OAAQ,6BACRwmB,OAAQ,CAAC,CAAE1pB,QArEU,UAsEpBuQ,MAAK,WACNvR,OAAOrB,SAAS6S,QAClB,GACF,CAAE,MAAO5T,GACPiH,QAAQjH,MAAMA,EAChB,CAAC,wBAAAkG,EAAAM,OAAA,GAAAT,EAAA,KACF,yBAAA8mB,EAAApmB,MAAA,KAAAxE,UAAA,EAbA,IAaA,CAAAkD,IAAA,eAAAC,MA8BD,WAAgB,IAAD2nB,EAAA,KACbC,EAAyC3nB,KAAKyO,MACxCmZ,EAAe,CACnB/C,WAFgB8C,EAAV9C,WAGNrqB,QAHyBmtB,EAAPntB,QAIlBsD,QAJkC6pB,EAAP7pB,QAK3BgnB,oBAAqB,SAAC3rB,GAAC,OAAKuuB,EAAK5C,oBAAoB3rB,EAAE,GAEzD,OACEoR,eAAA,OAAK0B,UAAU,YAAWhC,SACxBM,eAACoa,GAAWvmB,YAAA,CAACwmB,aAAc5kB,KAAK3E,MAAMb,SAAaotB,KAGzD,GAAC,CAAA9nB,IAAA,cAAAC,MAED,WACE,IAAQklB,EAAoBjlB,KAAKyO,MAAzBwW,gBAER,OACE1a,eAAA,OAAK0B,UAAU,YAAWhC,SACxBM,eAACya,GAAS,CAACC,gBAAiBA,KAGlC,GAAC,CAAAnlB,IAAA,gBAAAC,MAED,WACE,IAAQ8nB,EAAmB7nB,KAAKyO,MAAxBoZ,eACR,OACEtd,eAAA,OAAK0B,UAAU,YAAWhC,SACxBM,eAAC6a,GAAW,CAACjT,IAAK0V,KAGxB,GAAC,CAAA/nB,IAAA,2BAAAC,MAED,WACE,OACEwK,eAAA,OAAK0B,UAAU,YAAWhC,SACxBM,eAAC+a,GAAiB,CAChBC,eAAgBvlB,KAAK3E,MAAM0C,QAC3BynB,gBAAiBsC,WAAQC,iBACzBtC,gBAAiBzlB,KAAKgoB,mBAI9B,GAAC,CAAAloB,IAAA,SAAAC,MAED,WACE,IAAAkoB,EAMIjoB,KAAKyO,MALPoZ,EAAcI,EAAdJ,eACA5C,EAAegD,EAAfhD,gBACAiD,EAAaD,EAAbC,cACArB,EAAUoB,EAAVpB,WACAsB,EAAQF,EAARE,SAEF,OAAIN,EACK7nB,KAAKooB,gBAETpoB,KAAK3E,MAAM0rB,uBACP/mB,KAAKqoB,2BAEVpD,GAAmBiD,EACdloB,KAAKsoB,cAEVzB,EACK7mB,KAAKuoB,eAETJ,EAIH5d,eAAA,OAAK0B,UAAU,MAAKhC,SAClB2B,gBAAC7B,GAA4B,CAAAE,SAAA,CAC3BM,eAACiE,GAAM,IACPjE,eAACiZ,GAAS,IACVjZ,eAACoZ,GAAM,SAPJ,IAWX,KAACuC,CAAA,CAnLM,CAASjC,aAsLHiC,MCrJAsC,gBAAWpY,aAnCF,SAAA/U,GACtB,IAAIwsB,EAAiB,KACjB5C,EnEdkB,SAAA5pB,GAAK,OAAID,GAASC,GAAOV,KAAK,CmEc9B8tB,CAAmBptB,GACrC6sB,E1EjBkB,SAAC7sB,GAAK,OAAKD,EAASC,GAAOV,KAAK,C0EiBlC+tB,CAAiBrtB,GAC/BhB,EAAWkB,EAAYF,GACvByC,EnEpBkB,SAAAzC,GAAK,OAAID,GAASC,GAAOR,KAAKiD,OAAO,CmEoB7C6qB,CAAWttB,GACrBb,EAAUgB,EAAWH,GACrB0C,EnErBkB,SAAA1C,GAAK,OAAID,GAASC,GAAOR,KAAKkD,OAAO,CmEqB7C+D,CAAWzG,GACrBwpB,EAAaxqB,GAAqC,OAAzBA,EAASgJ,YAClCwjB,EAAahC,IAAerqB,EAQlC,OnE9BuB,SAAAa,GAAK,OAAID,GAASC,GAAOP,OAAO,CmEwBnD8tB,CAAavtB,G1E1BM,SAACA,GAAK,OAAKD,EAASC,GAAOP,OAAO,C0E4B9C+tB,CAAmBxtB,KAC5BwsB,EAAiB,mBAFjBA,EAAiB,gBAKZ,CACLrtB,UACAqtB,iBACA5C,kBACAiD,gBACArB,aACAhC,aACAsD,WAAY9tB,EACZyD,UACAC,UAEJ,IAE2B,SAAAuV,GAAQ,MAAK,CACtC6T,UAAW,kBAAM7T,ExEhBjB,eAAAtJ,EAAAzJ,YAAAC,cAAAC,MAAO,SAAAC,EAAO4S,EAAUlY,EAAUoY,GAAG,IAAAsV,EAAAC,EAAAvuB,EAAAsD,EAAAC,EAAA,OAAAyC,cAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACW,IAAxC+nB,EAAkBttB,EAAWJ,OACVS,EAAeitB,GAAgB,CAAAjoB,EAAAE,KAAA,eAAAF,EAAAwB,OAAA,iBAG9B,OAA1BiR,EA3BK,CACLhZ,KAAMoD,IA0BoBmD,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEoByS,EAAIpD,UAAS,OAGlC,OAHkC2Y,EAAAloB,EAAAK,KAAjD1G,EAAOuuB,EAAPvuB,QAASsD,EAAOirB,EAAPjrB,QAASC,EAAOgrB,EAAPhrB,QAC1BuV,EAASzV,EAAerD,EAASsD,EAASC,IAC1CuV,ELRJ,eAAAtJ,EAAAzJ,YAAAC,cAAAC,MAAO,SAAAC,EAAO4S,EAAUlY,EAAUoY,GAAG,IAAAnZ,EAAA,OAAAmG,cAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACH,OAAhCuS,EArBK,CACLhZ,KAAMX,IAoB0BkH,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEPyS,EAAIwV,gBAAe,OACF,OADlC3uB,EAAQwG,EAAAK,KACdoS,EAASlZ,EAAqBC,IAAUwG,EAAAwB,OAAA,SACjChI,GAAQ,OAAAwG,EAAAC,KAAA,EAAAD,EAAAc,GAAAd,EAAA,SAEfyS,GAf+B3Y,EAeDkG,EAAAc,GAAE6O,QAd7B,CACLlW,KAAMT,EACNc,WAY2C,yBAAAkG,EAAAM,OAfxC,IAA8BxG,CAeU,GAAA+F,EAAA,kBAE5C,gBAAAqH,EAAAC,EAAAihB,GAAA,OAAAjf,EAAA5I,MAAA,KAAAxE,UAAA,EATD,IKSI0W,EHhBJ,eAAAtJ,EAAAzJ,YAAAC,cAAAC,MAAO,SAAAC,EAAO4S,EAAUlY,EAAUoY,GAAG,IAAArY,EAAA,OAAAqF,cAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACL,OAA9BuS,EArBK,CACLhZ,KAAMS,IAoBwB8F,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEPyS,EAAI0V,YAAY,gBAAe,OAChB,OAD9B/tB,EAAM0F,EAAAK,KACZoS,EAASpY,EAAmBC,IAAQ0F,EAAAwB,OAAA,SAC7BlH,GAAM,OAAA0F,EAAAC,KAAA,EAAAD,EAAAc,GAAAd,EAAA,SAEbyS,GAf6B3Y,EAeDkG,EAAAc,GAAM6O,QAd/B,CACLlW,KAAMW,EACNN,WAY6C,yBAAAkG,EAAAM,OAf1C,IAA4BxG,CAec,GAAA+F,EAAA,kBAE9C,gBAAAqH,EAAAC,EAAAihB,GAAA,OAAAjf,EAAA5I,MAAA,KAAAxE,UAAA,EATD,IGgB2BiE,EAAAwB,OAAA,SAChB7H,GAAO,QAAAqG,EAAAC,KAAA,GAAAD,EAAAc,GAAAd,EAAA,SAEdyS,GArByB3Y,EAqBDkG,EAAAc,GAAE6O,QApBvB,CACLlW,KAAMsD,EACNjD,WAkBqC,yBAAAkG,EAAAM,OArBlC,IAAwBxG,CAqBU,GAAA+F,EAAA,mBAEtC,gBAAAqH,EAAAC,EAAAihB,GAAA,OAAAjf,EAAA5I,MAAA,KAAAxE,UAAA,EAfD,GwEgB8C,EAC9CgqB,SAAU,SAAApsB,GAAO,OAAI8Y,EAASnM,YAAK3M,GAAS,EAC7C,GAEyB4V,CAA+B8V,KCnD1CA,M,qBCcTiD,I,QAAUC,YAAkBrsB,OAAOosB,UACnCzpB,GCTS,SAAwBypB,EAASE,GAE9C,IAAMC,EAAUtrB,YAAgB,CAC9B1C,IAAKiuB,EACL9tB,QAAS+tB,MAILhW,EAAM,IAAIhU,GACViqB,EAASC,YAAiBP,GAC1BQ,EAASC,uBAAa,CAC1BC,UAAW,kBAAM,CAAI,EACrBC,UAAW,kBAAM,CAAI,IAEjBC,EAAaC,YAAgBC,IAAMC,kBAAkB1W,GAAMiW,EAAQE,GAGnEQ,EAAWptB,OAAOqtB,kBAAoBrtB,OAAOqtB,oBAAsB,SAAC/P,GAAC,OAAKA,CAAC,EAC3EgQ,EAAWC,YAAQP,EAAYI,GAG/BzqB,EAAQ6qB,YAAYjB,EAASD,EAAcgB,GAGjD,OAFA7W,EAAIgX,SAAS9qB,GAENA,CACT,CDhBc+qB,CAAetB,IAE7BuB,IAASC,OACPpgB,eAACC,IAAQ,CAAC9K,MAAOA,GAAMuK,SACrBM,eAACqgB,IAAe,CAAClrB,MAAOA,GAAOypB,QAASA,GAAQlf,SAC9CM,eAACsgB,KAAM,CAAC1B,QAASA,GAAQlf,SACvBM,eAACugB,KAAK,CAACC,KAAK,IAAG9gB,SACbM,eAACygB,KAAY,CAACC,OAAO,KAAKC,SAAUC,GAAQlhB,SAC1CM,eAAC2b,GAAG,cAMdxQ,SAAS+M,eAAe,Q","file":"static/js/main.07e68942.chunk.js","sourcesContent":["var map = {\n\t\"./bg-BG.json\": 1605,\n\t\"./ca-ES.json\": 1606,\n\t\"./cs-CZ.json\": 1607,\n\t\"./de-DE.json\": 1608,\n\t\"./el-GR.json\": 1609,\n\t\"./en-US.json\": 858,\n\t\"./es-ES.json\": 1610,\n\t\"./et-EE.json\": 1611,\n\t\"./fi-FI.json\": 1612,\n\t\"./fr-FR.json\": 1613,\n\t\"./he-IL.json\": 1614,\n\t\"./it-IT.json\": 1615,\n\t\"./ja-JP.json\": 1616,\n\t\"./ko-KR.json\": 1617,\n\t\"./nb-NO.json\": 1618,\n\t\"./nl-NL.json\": 1619,\n\t\"./nn-NO.json\": 1620,\n\t\"./pl-PL.json\": 1621,\n\t\"./pt-BR.json\": 1622,\n\t\"./ro-RO.json\": 1623,\n\t\"./ru-RU.json\": 1624,\n\t\"./sk-SK.json\": 1625,\n\t\"./sv-SE.json\": 1626,\n\t\"./tr-TR.json\": 1627,\n\t\"./zh-CN.json\": 1628\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1604;","export const FETCH_CONTRACT_REQUEST = '[Request] Fetch Contract'\nexport const FETCH_CONTRACT_SUCCESS = '[Success] Fetch Contract'\nexport const FETCH_CONTRACT_FAILURE = '[Failure] Fetch Contract'\n\nexport const RELEASE_REQUEST = '[Request] Release'\nexport const RELEASE_SUCCESS = '[Success] Release'\nexport const RELEASE_FAILURE = '[Failure] Release'\n\nexport const CHANGE_BENEFICIARY_REQUEST = '[Request] Change Beneficiary'\nexport const CHANGE_BENEFICIARY_SUCCESS = '[Success] Change Beneficiary'\nexport const CHANGE_BENEFICIARY_FAILURE = '[Failure] Change Beneficiary'\n\nexport function fetchContractRequest() {\n return {\n type: FETCH_CONTRACT_REQUEST\n }\n}\n\nexport function fetchContractSuccess(contract) {\n return {\n type: FETCH_CONTRACT_SUCCESS,\n contract\n }\n}\n\nexport function fetchContractFailure(error) {\n return {\n type: FETCH_CONTRACT_FAILURE,\n error\n }\n}\n\nexport function fetchContract() {\n return async (dispatch, getState, api) => {\n dispatch(fetchContractRequest())\n try {\n const contract = await api.fetchContract()\n dispatch(fetchContractSuccess(contract))\n return contract\n } catch (e) {\n dispatch(fetchContractFailure(e.message))\n }\n }\n}\n\nexport function releaseRequest() {\n return {\n type: RELEASE_REQUEST\n }\n}\n\nexport function releaseSuccess() {\n return {\n type: RELEASE_SUCCESS\n }\n}\n\nexport function releaseFailure(error) {\n return {\n type: RELEASE_FAILURE,\n error\n }\n}\n\nexport function release() {\n return async (dispatch, getState, api) => {\n dispatch(releaseRequest())\n try {\n await api.release()\n dispatch(releaseSuccess())\n return\n } catch (e) {\n dispatch(releaseFailure(e.message))\n }\n }\n}\n\nexport function changeBeneficiaryRequest(address) {\n return {\n type: CHANGE_BENEFICIARY_REQUEST,\n address\n }\n}\n\nexport function changeBeneficiarySuccess(address) {\n return {\n type: CHANGE_BENEFICIARY_SUCCESS,\n address\n }\n}\n\nexport function changeBeneficiaryFailure(address, error) {\n return {\n type: CHANGE_BENEFICIARY_FAILURE,\n address,\n error\n }\n}\n\nexport function changeBeneficiary(address) {\n return async (dispatch, getState, api) => {\n dispatch(changeBeneficiaryRequest(address))\n\n return new Promise((resolve, reject) => {\n api\n .changeBeneficiary(address)\n .then(() => {\n dispatch(changeBeneficiarySuccess(address))\n resolve(address)\n })\n .catch((e) => {\n dispatch(changeBeneficiaryFailure(address, e.message))\n reject(e)\n })\n })\n\n }\n}\n","import { FETCH_CONTRACT_REQUEST, FETCH_CONTRACT_SUCCESS, FETCH_CONTRACT_FAILURE } from './actions'\n\nexport const INITIAL_STATE = {\n data: null,\n loading: false,\n error: null\n}\n\nexport default function reducer(state = INITIAL_STATE, action) {\n switch (action.type) {\n case FETCH_CONTRACT_REQUEST: {\n return {\n ...state,\n error: null,\n loading: true\n }\n }\n case FETCH_CONTRACT_SUCCESS: {\n return {\n ...state,\n error: null,\n loading: false,\n data: action.contract\n }\n }\n case FETCH_CONTRACT_FAILURE: {\n return {\n ...state,\n loading: false,\n error: action.error\n }\n }\n default:\n return state\n }\n}\n","// Fetch Ticker\nexport const FETCH_TICKER_REQUEST = '[Request] Fetch Ticker'\nexport const FETCH_TICKER_SUCCESS = '[Success] Fetch Ticker'\nexport const FETCH_TICKER_FAILURE = '[Failure] Fetch Ticker'\n\nexport function fetchTickerRequest() {\n return {\n type: FETCH_TICKER_REQUEST\n }\n}\n\nexport function fetchTickerSuccess(ticker) {\n return {\n type: FETCH_TICKER_SUCCESS,\n ticker\n }\n}\n\nexport function fetchTickerFailure(error) {\n return {\n type: FETCH_TICKER_FAILURE,\n error\n }\n}\n\nexport function fetchTicker() {\n return async (dispatch, getState, api) => {\n dispatch(fetchTickerRequest())\n try {\n const ticker = await api.fetchTicker('decentraland')\n dispatch(fetchTickerSuccess(ticker))\n return ticker\n } catch (error) {\n dispatch(fetchTickerFailure(error.message))\n }\n }\n}\n","export const getState = (state) => state.app.contract\nexport const getContract = (state) => getState(state).data\nexport const isLoading = (state) => getState(state).loading\nexport const getError = (state) => getState(state).error\n\nexport const getAddress = (state) =>\n state.routing.location ? state.routing.location.pathname.slice(1) : null\n","import moment from 'moment'\nimport numeral from 'numeral'\n\nexport const toDate = (s) => moment(s * 1000).format('dddd, MMM Do, YYYY')\nexport const toUSD = (amount, ticker) => (ticker ? '$' + numeral(amount * ticker).format('0,0.00') : '...')\nexport const toMANA = (amount) => numeral(amount).format('0,0')\n\nexport const colors = {\n lightBlue: '#ff2d55',\n darkPurple: '#16141a',\n green: '#c640cd',\n darkGray: '#222222',\n lightGray: '#d3d3d3',\n}\n\nexport function getToday() {\n return moment().subtract(1, 'month').endOf('month').add(1, 'days').format('MMM Do, YYYY')\n}\n\nexport function isValidAddress(address) {\n return /^(0x)?[0-9a-f]{40}$/i.test(address)\n}\n\nexport function getMonthDiff(start, finish) {\n const getDate = (date) => moment(date * 1000).startOf('month')\n return Math.abs(getDate(finish).diff(getDate(start), 'months'))\n}\n\nexport function openInNewTab(url, event = null) {\n window.open(url, '_blank').focus()\n if (event) {\n event.preventDefault()\n }\n}\n\nexport function copyToClipboard(text) {\n if (navigator && navigator.clipboard && navigator.clipboard.writeText) {\n return navigator.clipboard.writeText(text)\n }\n return Promise.reject('The Clipboard API is not available.')\n}","import { fetchContract } from '../contract/actions'\nimport { fetchTicker } from '../ticker/actions'\nimport { getAddress } from '../contract/selectors'\nimport { isValidAddress } from '../../utils'\n\nexport const CONNECT_REQUEST = '[Request] Connect'\nexport const CONNECT_SUCCESS = '[Success] Connect'\nexport const CONNECT_FAILURE = '[Failure] Connect'\n\nexport function connectRequest() {\n return {\n type: CONNECT_REQUEST,\n }\n}\n\nexport function connectSuccess(address, network, chainId) {\n return {\n type: CONNECT_SUCCESS,\n address,\n network,\n chainId\n }\n}\n\nexport function connectFailure(error) {\n return {\n type: CONNECT_FAILURE,\n error,\n }\n}\n\nexport function connect() {\n return async (dispatch, getState, api) => {\n const contractAddress = getAddress(getState())\n if (!contractAddress || !isValidAddress(contractAddress)) {\n return\n }\n dispatch(connectRequest())\n try {\n const { address, network, chainId } = await api.connect()\n dispatch(connectSuccess(address, network, chainId))\n dispatch(fetchContract())\n dispatch(fetchTicker())\n return address\n } catch (e) {\n dispatch(connectFailure(e.message))\n }\n }\n}\n","import { CONNECT_REQUEST, CONNECT_SUCCESS, CONNECT_FAILURE } from './actions'\n\nexport const INITIAL_STATE = {\n data: {\n address: null\n },\n loading: false,\n error: null\n}\n\nexport default function reducer(state = INITIAL_STATE, action) {\n switch (action.type) {\n case CONNECT_REQUEST: {\n return {\n ...state,\n error: null,\n loading: true\n }\n }\n case CONNECT_SUCCESS: {\n return {\n ...state,\n error: null,\n loading: false,\n data: {\n ...state.data,\n address: action.address?.toLowerCase(),\n network: action.network,\n chainId: action.chainId\n },\n }\n }\n case CONNECT_FAILURE: {\n return {\n ...state,\n loading: false,\n error: action.error\n }\n }\n case '@@router/LOCATION_CHANGE': {\n return {\n ...state,\n error: null\n }\n }\n default:\n return state\n }\n}\n","import { FETCH_TICKER_REQUEST, FETCH_TICKER_SUCCESS, FETCH_TICKER_FAILURE } from './actions'\n\nexport const INITIAL_STATE = {\n data: null,\n loading: false,\n error: null\n}\n\nexport default function reducer(state = INITIAL_STATE, action) {\n switch (action.type) {\n case FETCH_TICKER_REQUEST: {\n return {\n ...state,\n error: null,\n loading: true\n }\n }\n case FETCH_TICKER_SUCCESS: {\n return {\n ...state,\n error: null,\n loading: false,\n data: action.ticker\n }\n }\n case FETCH_TICKER_FAILURE: {\n return {\n ...state,\n loading: false,\n error: action.error\n }\n }\n default:\n return state\n }\n}\n","import contract from './contract/reducer'\nimport ethereum from './ethereum/reducer'\nimport ticker from './ticker/reducer'\nimport { combineReducers } from 'redux'\nexport default combineReducers({\n contract,\n ethereum,\n ticker,\n})\n","import { getAddress, getContract } from './contract/selectors'\nimport { getAddress as getFrom } from './ethereum/selectors'\nimport Web3 from 'web3'\nimport Big from 'big.js'\nimport manaAbi from '../abi/mana.json'\nimport daiAbi from '../abi/dai.json'\nimport usdtAbi from '../abi/usdt.json'\nimport usdcAbi from '../abi/usdc.json'\nimport vestingAbi from '../abi/vesting.json'\nimport periodicTokenVestingAbi from '../abi/periodicTokenVesting.json'\nimport { ContractVersion, TokenAddressByChainId, TopicByVersion } from './constants'\n\nlet vesting, tokenContracts\nexport default class API {\n store = null\n web3 = null\n localWallet = null\n\n setStore(store) {\n this.store = store\n }\n\n getWeb3() {\n if (this.web3 === null) {\n this.web3 = new Web3(\n new Web3.providers.HttpProvider('https://rpc.decentraland.org/mainnet')\n )\n }\n\n return this.web3\n }\n\n getEth() {\n return this.getWeb3().eth\n }\n\n async logIn() {\n const ethereum = window.ethereum\n const accounts = await ethereum.request({ method: 'eth_accounts' })\n this.localWallet = accounts.length > 0 ? accounts[0] : null\n\n this.web3 = new Web3(ethereum)\n }\n\n async connect() {\n try {\n await this.logIn()\n } catch {\n console.error('Metamask not found')\n }\n\n const eth = this.getEth()\n const chainId = await eth.getChainId()\n\n if(chainId !== 1) {\n throw new Error(`Unsupported chain id ${chainId}`)\n }\n\n const TokenAddress = TokenAddressByChainId[chainId]\n\n tokenContracts = {\n [TokenAddress.MANA]: new eth.Contract(manaAbi, TokenAddress.MANA),\n [TokenAddress.DAI]: new eth.Contract(daiAbi, TokenAddress.DAI),\n [TokenAddress.USDT]: new eth.Contract(usdtAbi, TokenAddress.USDT),\n [TokenAddress.USDC]: new eth.Contract(usdcAbi, TokenAddress.USDC),\n }\n\n return {address: this.localWallet, network: { name: chainId === 1 ? 'mainnet' : 'unknown', chainId }, chainId: chainId }\n }\n\n async fetchContract() {\n const state = this.store.getState()\n const address = getAddress(state)\n const eth = this.getEth()\n\n let version\n\n try {\n vesting = new eth.Contract(periodicTokenVestingAbi, address)\n await vesting.methods.getIsLinear().call()\n version = ContractVersion.V2\n } catch (e) {\n vesting = new eth.Contract(vestingAbi, address)\n version = ContractVersion.V1\n }\n\n let tokenContractAddress\n\n if (version === ContractVersion.V1) {\n tokenContractAddress = await vesting.methods.token().call()\n } else {\n tokenContractAddress = await vesting.methods.getToken().call()\n }\n\n tokenContractAddress = tokenContractAddress.toLowerCase()\n\n if (!(tokenContractAddress in tokenContracts)) {\n throw new Error('Token not supported')\n }\n\n const decimals = await tokenContracts[tokenContractAddress].methods\n .decimals()\n .call()\n\n const promises = {\n v1: {\n duration: () => vesting.methods.duration().call(),\n cliff: () => vesting.methods.cliff().call(),\n beneficiary: () => vesting.methods.beneficiary().call(),\n vestedAmount: () => vesting.methods.vestedAmount().call(),\n releasableAmount: () => vesting.methods.releasableAmount().call(),\n revoked: () => vesting.methods.revoked().call(),\n revocable: () => vesting.methods.revocable().call(),\n released: () => vesting.methods.released().call(),\n start: () => vesting.methods.start().call(),\n periodDuration: () => Promise.resolve('0'),\n vestedPerPeriod: () => Promise.resolve([]),\n paused: () => Promise.resolve(false),\n pausable: () => Promise.resolve(false),\n stop: () => Promise.resolve('0'),\n linear: () => Promise.resolve(false),\n },\n v2: {\n duration: () => Promise.resolve('0'),\n cliff: () => vesting.methods.getCliff().call(),\n beneficiary: () => vesting.methods.getBeneficiary().call(),\n vestedAmount: () => vesting.methods.getVested().call(),\n releasableAmount: () => vesting.methods.getReleasable().call(),\n revoked: () => vesting.methods.getIsRevoked().call(),\n revocable: () => vesting.methods.getIsRevocable().call(),\n released: () => vesting.methods.getReleased().call(),\n start: () => vesting.methods.getStart().call(),\n periodDuration: () => vesting.methods.getPeriod().call(),\n vestedPerPeriod: () => vesting.methods.getVestedPerPeriod().call(),\n paused: () => vesting.methods.paused().call(),\n pausable: () => vesting.methods.getIsPausable().call(),\n stop: () => vesting.methods.getStop().call(),\n linear: () => vesting.methods.getIsLinear().call(),\n },\n }\n\n const [\n symbol,\n balance,\n logs,\n owner,\n duration,\n cliff,\n beneficiary,\n vestedAmount,\n releasableAmount,\n revoked,\n revocable,\n released,\n start,\n periodDuration,\n vestedPerPeriod,\n paused,\n pausable,\n stop,\n linear,\n ] = await Promise.all([\n tokenContracts[tokenContractAddress].methods.symbol().call(),\n tokenContracts[tokenContractAddress].methods.balanceOf(address).call(),\n this.getLogs(decimals, version),\n vesting.methods.owner().call(),\n promises[version].duration(),\n promises[version].cliff(),\n promises[version].beneficiary(),\n promises[version].vestedAmount(),\n promises[version].releasableAmount(),\n promises[version].revoked(),\n promises[version].revocable(),\n promises[version].released(),\n promises[version].start(),\n promises[version].periodDuration(),\n promises[version].vestedPerPeriod(),\n promises[version].paused(),\n promises[version].pausable(),\n promises[version].stop(),\n promises[version].linear(),\n ])\n\n const contract = {\n version,\n symbol,\n address,\n balance: parseInt(balance, 10) / 10 ** decimals,\n duration:\n version === ContractVersion.V1\n ? parseInt(duration, 10)\n : vestedPerPeriod.length * parseInt(periodDuration, 10),\n cliff:\n version === ContractVersion.V1\n ? parseInt(cliff, 10)\n : parseInt(cliff, 10) + parseInt(start, 10),\n beneficiary,\n vestedAmount: parseInt(vestedAmount, 10) / 10 ** decimals,\n releasableAmount: parseInt(releasableAmount, 10) / 10 ** decimals,\n revoked,\n revocable,\n owner,\n released: parseInt(released, 10) / 10 ** decimals,\n start: parseInt(start, 10),\n logs,\n periodDuration,\n vestedPerPeriod: vestedPerPeriod.map(\n (amount) => parseInt(amount, 10) / 10 ** decimals\n ),\n paused,\n pausable,\n stop: parseInt(stop, 10),\n linear,\n }\n\n contract.total =\n version === ContractVersion.V1\n ? contract.balance + contract.released\n : contract.vestedPerPeriod.reduce((a, b) => a + b, 0)\n\n return contract\n }\n\n async getLogs(decimals, version) {\n const state = this.store.getState()\n const address = getAddress(state)\n const eth = this.getEth()\n\n const web3Logs = await eth.getPastLogs({\n address: address,\n fromBlock: 0,\n toBlock: 'latest',\n })\n\n const blocks = await Promise.all(\n web3Logs.map((log) => eth.getBlock(log.blockNumber))\n )\n const logs = []\n let cumulativeReleased = 0\n\n const Topic = TopicByVersion[version]\n\n for (const idx in web3Logs) {\n switch (web3Logs[idx].topics[0]) {\n case Topic.TRANSFER_OWNERSHIP:\n logs.push(\n this.getTransferOwnershipLog(\n [...web3Logs[idx].topics],\n blocks[idx].timestamp,\n Topic\n )\n )\n break\n case Topic.RELEASE:\n const log = this.getReleaseLog(\n decimals,\n web3Logs[idx].data,\n cumulativeReleased,\n blocks[idx].timestamp,\n version,\n Topic\n )\n logs.push(log)\n cumulativeReleased = Big(log.data.acum).mul(10 ** decimals).toNumber()\n break\n case Topic.REVOKE:\n logs.push(this.getRevokeLog(blocks[idx].timestamp, Topic))\n break\n case Topic.PAUSED:\n logs.push(this.getPausedLog(blocks[idx].timestamp, Topic))\n break\n case Topic.UNPAUSED:\n logs.push(this.getUnpausedLog(blocks[idx].timestamp, Topic))\n break\n default:\n break\n }\n }\n\n return logs\n }\n\n getTransferOwnershipLog(topics, timestamp, Topic) {\n return {\n topic: Topic.TRANSFER_OWNERSHIP,\n data: {\n previousOwner: topics[1].slice(0, 2) + topics[1].slice(26),\n newOwner: topics[2].slice(0, 2) + topics[2].slice(26),\n timestamp: timestamp,\n },\n }\n }\n\n getReleaseLog(decimals, data, cumulativeReleased, timestamp, version, Topic) {\n const cumulative = Big(Number(cumulativeReleased) || 0).div(10 ** decimals)\n\n let totalReleased\n let currentReleased\n\n if (version === ContractVersion.V1) {\n totalReleased = Big(Number(data) || 0).div(10 ** decimals)\n currentReleased = totalReleased.minus(cumulative)\n } else {\n currentReleased = Big(Number(data) || 0).div(10 ** decimals)\n totalReleased = Big(Number(cumulativeReleased) || 0)\n .div(10 ** decimals)\n .add(currentReleased)\n }\n\n return {\n topic: Topic.RELEASE,\n data: {\n amount: currentReleased.toNumber(),\n acum: totalReleased.toNumber(),\n timestamp: timestamp,\n },\n }\n }\n\n getRevokeLog(timestamp, Topic) {\n return {\n topic: Topic.REVOKE,\n data: {\n timestamp: timestamp,\n },\n }\n }\n\n getPausedLog(timestamp, Topic) {\n return {\n topic: Topic.PAUSED,\n data: {\n timestamp: timestamp,\n },\n }\n }\n\n getUnpausedLog(timestamp, Topic) {\n return {\n topic: Topic.UNPAUSED,\n data: {\n timestamp: timestamp,\n },\n }\n }\n\n async release() {\n const state = this.store.getState()\n const contract = getContract(state)\n const from = getFrom(state)\n\n if (contract.version === ContractVersion.V1) {\n return vesting.methods.release().send({ from })\n }\n\n const releasableAmount = await vesting.methods.getReleasable().call()\n\n return vesting.methods.release(from, releasableAmount).send({ from })\n }\n\n changeBeneficiary(address) {\n const state = this.store.getState()\n const contract = getContract(state)\n const from = getFrom(state)\n\n return contract.version === ContractVersion.V1\n ? vesting.methods.changeBeneficiary(address).send({ from })\n : vesting.methods.setBeneficiary(address).send({ from })\n }\n\n async fetchTicker(ticker = 'decentraland') {\n try {\n const resp = await fetch(\n `https://api.coingecko.com/api/v3/simple/price?ids=${ticker}&vs_currencies=usd`,\n {\n mode: 'cors',\n }\n )\n const json = await resp.json()\n const { usd } = json[ticker]\n return usd\n } catch (e) {\n return 0\n }\n }\n}\n","export const getState = state => state.app.ethereum\nexport const getAddress = state => getState(state).data.address\nexport const getNetwork = state => getState(state).data.network\nexport const getChainId = state => getState(state).data.chainId\nexport const isLoading = state => getState(state).loading\nexport const getError = state => getState(state).error\n","export const TokenAddressByChainId = {\n // Mainnet\n 1: {\n MANA: '0x0f5d2fb29fb7d3cfee444a200298f468908cc942',\n DAI: '0x6b175474e89094c44da98b954eedeac495271d0f',\n USDT: '0xdac17f958d2ee523a2206206994597c13d831ec7',\n USDC: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n },\n // Goerli\n 5: {\n MANA: '0xe7fdae84acaba2a5ba817b6e6d8a2d415dbfedbe',\n DAI: '0x0000000000000000000000000000000000000000',\n USDT: '0x0000000000000000000000000000000000000000',\n USDC: '0x0000000000000000000000000000000000000000',\n },\n}\n\nexport const ContractVersion = {\n V1: 'v1',\n V2: 'v2',\n}\n\nexport const TopicByVersion = {\n [ContractVersion.V1]: {\n RELEASE:\n '0xfb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c565',\n REVOKE:\n '0x44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee6',\n TRANSFER_OWNERSHIP:\n '0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0',\n PAUSED:\n '0x0000000000000000000000000000000000000000000000000000000000000000',\n UNPAUSED:\n '0x0000000000000000000000000000000000000000000000000000000000000000',\n },\n [ContractVersion.V2]: {\n RELEASE:\n '0xb21fb52d5749b80f3182f8c6992236b5e5576681880914484d7f4c9b062e619e',\n REVOKE:\n '0x44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee6',\n TRANSFER_OWNERSHIP:\n '0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0',\n PAUSED:\n '0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258',\n UNPAUSED:\n '0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa',\n },\n}\n","import React, { createContext, useState } from 'react'\n\nexport const DaoInitiativeContext = createContext()\n\nconst DaoInitiativeContextProvider = ({ children }) => {\n const [proposalUrl, setProposalUrl] = useState(null)\n return (\n <DaoInitiativeContext.Provider value={{ proposalUrl, setProposalUrl }}>\n {children}\n </DaoInitiativeContext.Provider>\n )\n}\n\nexport default DaoInitiativeContextProvider\n","import { useState, useEffect, useCallback } from 'react'\n\nexport const onlyMobileMaxWidth = 767\nlet CURRENT_WIDTH = onlyMobileMaxWidth\n\nfunction useResponsive() {\n const [width, setWidth] = useState(CURRENT_WIDTH)\n useEffect(() => {\n function updateWidth() {\n const currentWidth = window.innerWidth\n\n if (CURRENT_WIDTH !== currentWidth) {\n CURRENT_WIDTH = currentWidth\n }\n\n if (width !== currentWidth) {\n setWidth(currentWidth)\n }\n }\n\n updateWidth()\n\n window.addEventListener('resize', updateWidth)\n return () => {\n window.removeEventListener('resize', updateWidth)\n }\n }, [width])\n\n return useCallback(\n function responsive(limits = {}) {\n if (limits.minWidth !== undefined && width < limits.minWidth) {\n return false\n }\n\n if (limits.maxWidth !== undefined && width > limits.maxWidth) {\n return false\n }\n\n return true\n },\n [width]\n )\n}\n\nexport default useResponsive\n","export default __webpack_public_path__ + \"static/media/proposal_button_icon.f662898f.svg\";","import React, { useContext } from 'react'\nimport { DaoInitiativeContext } from '../../context/DaoInitiativeContext'\nimport useResponsive, { onlyMobileMaxWidth } from '../../hooks/useResponsive'\nimport { Button } from 'decentraland-ui'\nimport { FormattedMessage } from 'react-intl'\nimport ButtonIcon from '../../images/proposal_button_icon.svg'\nimport { openInNewTab } from '../../utils'\n\nfunction DaoInitiativeButton() {\n const { proposalUrl } = useContext(DaoInitiativeContext)\n const responsive = useResponsive()\n const isMobile = responsive({ maxWidth: onlyMobileMaxWidth })\n return (\n <Button\n primary\n onClick={(e) => openInNewTab(proposalUrl, e)}\n href={proposalUrl}\n className=\"daoProposal__button\"\n >\n <FormattedMessage\n id={isMobile ? 'beneficiary.button.mobile' : 'beneficiary.button'}\n />\n <img src={ButtonIcon} alt=\"\" />\n </Button>\n )\n}\n\nexport default DaoInitiativeButton\n","const DEFAULT_AVATAR = 'https://decentraland.org/images/male.png'\n\nexport const createDefaultProfile = (address) => ({\n userId: address,\n ethAddress: address,\n hasClaimedName: false,\n avatar: {\n snapshots: {\n face: DEFAULT_AVATAR,\n face128: DEFAULT_AVATAR,\n face256: DEFAULT_AVATAR,\n body: '',\n },\n bodyShape: 'dcl://base-avatars/BaseMale',\n eyes: {\n color: {\n r: 0.125,\n g: 0.703125,\n b: 0.96484375,\n },\n },\n hair: {\n color: {\n r: 0.234375,\n g: 0.12890625,\n b: 0.04296875,\n },\n },\n skin: {\n color: {\n r: 0.94921875,\n g: 0.76171875,\n b: 0.6484375,\n },\n },\n wearables: [\n 'dcl://base-avatars/green_hoodie',\n 'dcl://base-avatars/brown_pants',\n 'dcl://base-avatars/sneakers',\n 'dcl://base-avatars/casual_hair_01',\n 'dcl://base-avatars/beard',\n ],\n version: 0,\n },\n name: '',\n email: '',\n description: '',\n blocked: [],\n inventory: [],\n version: 0,\n tutorialStep: 0,\n isDefaultProfile: true,\n})\n\nexport async function getDclProfile(address) {\n try {\n const response = await fetch(\n `https://peer.decentral.io/lambdas/profiles?id=${address}`\n )\n const profileResponse = await response.json()\n\n if (profileResponse.length > 0) {\n const profileData = profileResponse[0].avatars[0]\n const snapshots = profileData.avatar.snapshots\n const face256 = snapshots.face256\n\n if (!!face256) {\n profileData.avatar.snapshots = {\n ...snapshots,\n face: face256,\n face128: face256,\n }\n }\n\n return profileData\n }\n } catch (error) {\n console.error('Error fetching profile', error)\n }\n\n return createDefaultProfile(address)\n}\n","import { Logo, UserMenu } from 'decentraland-ui'\nimport React, { useContext, useEffect, useState } from 'react'\nimport { Container, Grid } from 'semantic-ui-react'\n\nimport { DaoInitiativeContext } from '../../context/DaoInitiativeContext'\nimport useResponsive, { onlyMobileMaxWidth } from '../../hooks/useResponsive'\nimport { openInNewTab } from '../../utils'\nimport DaoInitiativeButton from '../DaoInitiativeButton/DaoInitiativeButton'\n\nimport './Header.css'\nimport { getDclProfile } from './utils'\n\nfunction signInHandler() {\n if (window.ethereum) {\n window.ethereum.enable().then(() => {\n window.location.reload()\n })\n } else {\n openInNewTab('https://metamask.io/download/')\n }\n}\n\nfunction Header(props) {\n const { address } = props\n const [isSignedIn, setIsSignedIn] = useState(false)\n const [profile, setProfile] = useState(undefined)\n\n const { proposalUrl } = useContext(DaoInitiativeContext)\n\n const responsive = useResponsive()\n const isMobile = responsive({ maxWidth: onlyMobileMaxWidth })\n\n useEffect(() => {\n if (address) {\n setIsSignedIn(true)\n getDclProfile(address).then((profile) => {\n setProfile(profile)\n })\n } else {\n setIsSignedIn(false)\n }\n }, [address])\n\n return (\n <div className=\"header\">\n <Container style={{ height: 'auto' }}>\n <Grid verticalAlign=\"middle\" style={{ marginLeft: 0, marginRight: 0 }}>\n <Grid.Row>\n <Grid.Column style={{ width: 'fit-content', paddingLeft: 0 }}>\n <Logo />\n </Grid.Column>\n <Grid.Column style={{ padding: 0 }}>\n <h1 className=\"header-title\">Decentraland</h1>\n </Grid.Column>\n <Grid.Column\n floated=\"right\"\n style={{ width: 'fit-content', paddingRight: 0 }}\n >\n {isMobile ? (\n proposalUrl && <DaoInitiativeButton />\n ) : (\n <UserMenu\n onSignIn={signInHandler}\n isSignedIn={isSignedIn}\n avatar={profile}\n onClickProfile={() =>\n openInNewTab(\n `https://governance.decentraland.org/profile/?address=${address}`\n )\n }\n />\n )}\n </Grid.Column>\n </Grid.Row>\n </Grid>\n </Container>\n </div>\n )\n}\n\nexport default React.memo(Header)\n","import Header from './Header.container'\nexport default Header\n","import { connect } from 'react-redux'\nimport { getAddress } from '../../modules/ethereum/selectors'\nimport Header from './Header'\n\nexport const mapState = (state) => {\n return {\n address: getAddress(state),\n }\n}\n\nexport default connect(mapState)(Header)\n","import React from 'react'\nimport './Bar.css'\n\nfunction Bar(props) {\n const { vested, released } = props\n\n return (\n <div className=\"bar__container\">\n <div className=\"bar vested\" style={{ width: `${vested}%` }} />\n <div className=\"bar released\" style={{ width: `${released}%` }} />\n </div>\n )\n}\n\nexport default Bar\n","export default __webpack_public_path__ + \"static/media/info.56ffcff2.svg\";","import React from 'react'\nimport { Popup } from 'decentraland-ui'\nimport InfoSVG from '../../images/info.svg'\n\n/*\n Position for the popover.\n | 'top left'\n | 'top right'\n | 'bottom right'\n | 'bottom left'\n | 'right center'\n | 'left center'\n | 'top center'\n | 'bottom center'\n*/\n\nfunction Info(props) {\n const { message, position } = props\n\n return (\n <span className=\"info\" style={{ padding: '5px' }}>\n <Popup\n content={message}\n position={position}\n trigger={<img src={InfoSVG} alt=\"\" />}\n on=\"hover\"\n style={{ height: '100%' }}\n basic\n />\n </span>\n )\n}\n\nexport default Info\n","import React from 'react'\nimport { Grid } from 'semantic-ui-react'\nimport { Header } from 'decentraland-ui'\nimport Bar from './Bar/Bar'\nimport { FormattedMessage, FormattedNumber } from 'react-intl'\nimport Info from '../../Info/Info'\nimport './Progress.css'\n\nfunction Progress(props) {\n const { contract } = props\n const vestedPercentage = Math.round(\n (contract.vestedAmount / contract.total) * 100\n )\n const releasedPercentage = Math.round(\n (contract.released / contract.total) * 100\n )\n\n return (\n <div id=\"progress\">\n <Grid>\n <Grid.Column floated=\"left\">\n <Header sub>\n <FormattedMessage id=\"progress.vested\" />\n <Info\n message={<FormattedMessage id=\"helper.vesting_so_far\" />}\n position=\"right center\"\n />\n </Header>\n <div className=\"amount\">\n <Header style={{ display: 'inline-block' }}>\n <FormattedNumber value={Math.round(contract.vestedAmount)} />{' '}\n {contract.symbol}\n </Header>\n <span className=\"percentage vested\">{vestedPercentage}%</span>\n </div>\n </Grid.Column>\n <Grid.Column floated=\"right\" textAlign=\"right\">\n <Header sub>\n <Info\n message={<FormattedMessage id=\"helper.total_vesting\" />}\n position=\"left center\"\n />\n <FormattedMessage id=\"progress.total\" />\n </Header>\n <Header style={{ display: 'inline-block' }}>\n <FormattedNumber value={Math.round(contract.total)} />{' '}\n {contract.symbol}\n </Header>\n </Grid.Column>\n </Grid>\n <Bar vested={vestedPercentage} released={releasedPercentage} />\n <div>\n <FormattedMessage\n id=\"progress.released\"\n values={{\n b: (chunks) => <b>{chunks}</b>,\n amount: <FormattedNumber value={Math.round(contract.released)} />,\n token: contract.symbol,\n }}\n />\n <span className=\"percentage released\">{releasedPercentage}%</span>\n </div>\n </div>\n )\n}\n\nexport default Progress\n","import Progress from './Progress.container'\nexport default Progress\n","import { connect } from 'react-redux'\nimport { getContract } from '../../../modules/contract/selectors'\nimport Progress from './Progress'\n\nexport const mapState = (state) => {\n return {\n contract: getContract(state),\n }\n}\n\nexport default connect(mapState)(Progress)\n","export function areSameAddress(a, b) {\n return a && b && a.toLowerCase() === b.toLowerCase()\n}\n","export default __webpack_public_path__ + \"static/media/address_icon.334657a4.svg\";","import { Close, Field, Modal, Button } from 'decentraland-ui'\nimport React, { useState } from 'react'\nimport { FormattedMessage } from 'react-intl'\nimport { isValidAddress } from '../../utils'\nimport './ChangeBeneficiaryModal.css'\n\nfunction ChangeBeneficiaryModal(props) {\n const { open, onClose, onSubmit } = props\n\n const [state, setState] = useState({\n address: '',\n error: false,\n errorMessage: '',\n loading: false,\n successMessage: '',\n })\n\n const setAddress = (addr) => setState((prev) => ({ ...prev, address: addr }))\n const setError = (isError, msg = '') =>\n setState((prev) => ({ ...prev, error: isError, errorMessage: msg }))\n const setLoading = (isLoading) =>\n setState((prev) => ({ ...prev, loading: isLoading }))\n const setSuccess = (msg = '') =>\n setState((prev) => ({ ...prev, successMessage: msg }))\n\n const transfer = () => {\n if (isValidAddress(state.address)) {\n setLoading(true)\n setError(false)\n onSubmit(state.address)\n .then((addr) => {\n setLoading(false)\n setSuccess(\n <FormattedMessage\n id=\"modal.success\"\n values={{\n address: addr,\n br: <br />,\n }}\n />\n )\n })\n .catch((e) => {\n setLoading(false)\n setError(true, e.message)\n })\n } else {\n setError(true, <FormattedMessage id=\"modal.error\" />)\n }\n }\n\n return (\n <Modal\n className=\"changeBeneficiaryModal\"\n size=\"small\"\n open={open}\n onClose={onClose}\n closeIcon={<Close />}\n >\n <Modal.Header>\n <FormattedMessage id=\"modal.title\" />\n </Modal.Header>\n <Modal.Content>\n <p>\n <FormattedMessage id=\"modal.warning\" />\n </p>\n <Field\n onChange={(_, data) => {\n setAddress(data.value)\n setError(false)\n }}\n label={<FormattedMessage id=\"modal.label\" />}\n placeholder=\"0x...\"\n error={state.error}\n message={state.errorMessage}\n loading={state.loading}\n disabled={state.loading}\n />\n </Modal.Content>\n <Modal.Actions>\n <Button primary onClick={transfer} disabled={state.loading}>\n <FormattedMessage id=\"modal.button\" />\n </Button>\n </Modal.Actions>\n <Modal.Content>\n <p className=\"success\">{state.successMessage}</p>\n </Modal.Content>\n </Modal>\n )\n}\n\nexport default ChangeBeneficiaryModal\n","import { connect } from 'react-redux'\nimport { changeBeneficiary } from '../../modules/contract/actions'\nimport ChangeBeneficiaryModal from './ChangeBeneficiaryModal'\n\nexport const mapDispatch = (dispatch) => ({\n onSubmit: (address) => dispatch(changeBeneficiary(address)),\n})\n\nexport default connect(() => ({}), mapDispatch)(ChangeBeneficiaryModal)\n","import ChangeBeneficiaryModal from './ChangeBeneficiaryModal.container'\n\nexport default ChangeBeneficiaryModal\n","import React, { useState } from 'react'\nimport { Header, Popup, Button } from 'decentraland-ui'\nimport {\n FormattedDate,\n FormattedMessage,\n FormattedNumber,\n FormattedPlural,\n} from 'react-intl'\nimport { copyToClipboard, getMonthDiff } from '../../../utils'\nimport Info from '../../Info/Info'\nimport AddressIcon from '../../../images/address_icon.svg'\nimport useResponsive, { onlyMobileMaxWidth } from '../../../hooks/useResponsive'\nimport ChangeBeneficiaryModal from '../../ChangeBeneficiaryModal'\nimport { ContractVersion } from '../../../modules/constants'\nimport './Details.css'\n\nfunction addressShortener(address) {\n return address.substring(0, 6) + '...' + address.substring(38, 42)\n}\n\nfunction getBeneficiary(addr) {\n return (\n <div className=\"item beneficiary\">\n <Header sub>\n <FormattedMessage id=\"details.beneficiary\" />\n </Header>\n <Header\n onClick={() => copyToClipboard(addr)}\n style={{ cursor: 'pointer' }}\n >\n <img src={AddressIcon} alt=\"\" />\n <Popup\n content={<FormattedMessage id=\"global.copied\" />}\n position=\"bottom center\"\n trigger={<span>{addressShortener(addr)}</span>}\n on=\"click\"\n />\n <Info\n message={<FormattedMessage id=\"helper.beneficiary\" />}\n position=\"left center\"\n />\n </Header>\n </div>\n )\n}\n\nfunction getDate(id, date) {\n return (\n <div className=\"item\">\n <Header sub>\n <FormattedMessage id={id} />\n </Header>\n <Header>\n <FormattedDate\n value={new Date(date * 1000)}\n year=\"numeric\"\n month=\"long\"\n day=\"numeric\"\n />\n </Header>\n </div>\n )\n}\n\nfunction getCliffPeriod(vestingCliff) {\n return (\n <div className=\"item\">\n <Header sub>\n <FormattedMessage id=\"details.cliff_period\" />\n </Header>\n <Header>\n <FormattedMessage\n id=\"details.cliff_period.time\"\n values={{\n cliff: vestingCliff,\n monthPl: (\n <FormattedPlural\n value={vestingCliff}\n one={<FormattedMessage id=\"global.month\" />}\n other={<FormattedMessage id=\"global.month.plural\" />}\n />\n ),\n }}\n />\n <Info\n message={<FormattedMessage id=\"helper.cliff_period\" />}\n position=\"left center\"\n />\n </Header>\n </div>\n )\n}\n\nfunction getAmount(id, value, symbol, helperId) {\n return (\n <div className=\"item\">\n <Header sub>\n <FormattedMessage id={id} />\n </Header>\n <Header>\n <FormattedNumber value={value} /> {symbol}\n <Info\n message={<FormattedMessage id={helperId} />}\n position=\"left center\"\n />\n </Header>\n </div>\n )\n}\n\nfunction getRevocable(revocable) {\n return (\n <div className=\"item\">\n <Header sub>\n <FormattedMessage id=\"details.revocable\" />\n </Header>\n <Header>\n {revocable ? (\n <FormattedMessage id=\"global.yes\" />\n ) : (\n <FormattedMessage id=\"global.no\" />\n )}\n </Header>\n </div>\n )\n}\n\nfunction getPausable(pausable) {\n return (\n <div className=\"item\">\n <Header sub>\n <FormattedMessage id=\"details.pausable\" />\n </Header>\n <Header>\n {pausable ? (\n <FormattedMessage id=\"global.yes\" />\n ) : (\n <FormattedMessage id=\"global.no\" />\n )}\n </Header>\n </div>\n )\n}\n\nfunction getActionButton(text, onClick) {\n return (\n <Button basic className=\"action\" onClick={onClick}>\n {text}\n </Button>\n )\n}\n\nfunction Details(props) {\n const { contract, isBeneficiary, onRelease } = props\n const {\n version,\n symbol,\n released,\n start,\n cliff,\n duration,\n releasableAmount,\n revocable,\n pausable,\n total,\n } = contract\n\n const vestingCliff = getMonthDiff(start, cliff)\n const responsive = useResponsive()\n const isMobile = responsive({ maxWidth: onlyMobileMaxWidth })\n\n const [isModalOpen, setIsModalOpen] = useState(false)\n const closeModalHandler = () => setIsModalOpen(false)\n\n return (\n <div id=\"details\" className={(isMobile && 'mobile') || ''}>\n <div className=\"divToStyle\">\n {getBeneficiary(contract.beneficiary)}\n {!isMobile &&\n isBeneficiary &&\n getActionButton(\n <FormattedMessage id=\"details.change_beneficiary\" />,\n () => setIsModalOpen(true)\n )}\n <div className=\"dates\">\n {getDate('details.start', start)}\n {getDate('details.end', start + duration)}\n </div>\n </div>\n {getCliffPeriod(vestingCliff)}\n {getAmount(\n 'details.total_vesting',\n total,\n symbol,\n 'helper.total_vesting'\n )}\n {getAmount('details.released', released, symbol, 'helper.released')}\n {getAmount(\n 'details.releasable',\n releasableAmount,\n symbol,\n 'helper.releasable'\n )}\n {!isMobile &&\n isBeneficiary &&\n releasableAmount > 0 &&\n getActionButton(\n <FormattedMessage id=\"details.release_funds\" />,\n onRelease\n )}\n {getRevocable(revocable)}\n {version === ContractVersion.V2 && getPausable(pausable)}\n <ChangeBeneficiaryModal open={isModalOpen} onClose={closeModalHandler} />\n </div>\n )\n}\n\nexport default React.memo(Details)\n","import { connect } from 'react-redux'\nimport { release } from '../../../modules/contract/actions'\nimport { getContract } from '../../../modules/contract/selectors'\nimport { getAddress } from '../../../modules/ethereum/selectors'\nimport { areSameAddress } from '../../../modules/ethereum/utils'\nimport Details from './Details'\n\nexport const mapState = (state) => {\n const contract = getContract(state)\n const address = getAddress(state)\n return {\n contract,\n isBeneficiary: areSameAddress(contract.beneficiary, address),\n }\n}\n\nexport const mapDispatch = (dispatch) => ({\n onRelease: () => dispatch(release()),\n})\n\nexport default connect(mapState, mapDispatch)(Details)\n","import Details from './Details.container'\nexport default Details\n","import React, { useEffect } from 'react'\n\n// Source: https://crypto.com/price/widget\n\nfunction ManaWidget() {\n const widgetUrl = 'https://crypto.com/price/static/widget/index.js'\n\n useEffect(() => {\n const script = document.createElement('script')\n script.src = widgetUrl\n\n document.body.appendChild(script)\n\n return () => document.body.removeChild(script)\n }, [])\n\n return (\n <div\n id=\"crypto-widget-CoinList\"\n data-design=\"classic\"\n data-coins=\"decentraland\"\n style={{ width: '100%' }}\n />\n )\n}\n\nexport default ManaWidget\n","import ManaWidget from './ManaWidget'\nexport default ManaWidget\n","export default __webpack_public_path__ + \"static/media/copy.083a106e.svg\";","export default __webpack_public_path__ + \"static/media/link.d5fbe7e5.svg\";","export default __webpack_public_path__ + \"static/media/dai_logo.1096719c.svg\";","export default __webpack_public_path__ + \"static/media/usdt_logo.92d7fda4.svg\";","export default __webpack_public_path__ + \"static/media/usdc_logo.f08e02b1.svg\";","import { useMemo } from 'react'\nimport { openInNewTab } from '../utils'\n\nexport default function useReviewUrl(address) {\n const reviewUrl = useMemo(\n () => `${process.env.REACT_APP_REVIEW_CONTRACT_URL}${address}`,\n [address]\n )\n const clickHandler = (e) => openInNewTab(reviewUrl, e)\n\n return [reviewUrl, clickHandler]\n}\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { Grid } from 'semantic-ui-react'\nimport { Logo, Header, Popup } from 'decentraland-ui'\nimport {\n FormattedMessage,\n FormattedPlural,\n FormattedNumber,\n useIntl,\n} from 'react-intl'\nimport { copyToClipboard, getMonthDiff } from '../../../utils'\nimport ManaWidget from '../../ManaWidget'\nimport useResponsive, { onlyMobileMaxWidth } from '../../../hooks/useResponsive'\nimport Copy from '../../../images/copy.svg'\nimport Link from '../../../images/link.svg'\nimport DaiLogo from '../../../images/dai_logo.svg'\nimport UsdtLogo from '../../../images/usdt_logo.svg'\nimport UsdcLogo from '../../../images/usdc_logo.svg'\n\nimport './Overview.css'\nimport useReviewUrl from '../../../hooks/useReviewUrl'\n\nconst logo = {\n DAI: DaiLogo,\n USDT: UsdtLogo,\n USDC: UsdcLogo,\n}\n\nexport default function Overview(props) {\n const { address, contract } = props\n\n const { symbol, start, cliff, duration, total } = contract\n const vestingMonths = getMonthDiff(start, start + duration)\n const vestingCliff = getMonthDiff(start, cliff)\n\n const [reviewUrl, handleClick] = useReviewUrl(address)\n\n const responsive = useResponsive()\n const isMobile = responsive({ maxWidth: onlyMobileMaxWidth })\n\n const intl = useIntl()\n\n return (\n <>\n <Helmet>\n <title>\n {intl.formatMessage({ id: 'global.title' }, { token: symbol })}\n </title>\n </Helmet>\n <Grid\n columns={symbol === 'MANA' && !isMobile ? 2 : 1}\n className=\"overview\"\n >\n <Grid.Row>\n <Grid.Column floated=\"left\" style={{ padding: 0 }}>\n <Grid className=\"contract\" style={{ width: '100%' }}>\n {symbol !== 'MANA' ? (\n <Grid.Column className=\"TokenLogo\">\n <img\n src={logo[symbol]}\n style={{ width: isMobile ? '48px' : '72px' }}\n alt=\"\"\n />\n </Grid.Column>\n ) : (\n isMobile && (\n <Grid.Column className=\"TokenLogo\">\n <Logo />\n </Grid.Column>\n )\n )}\n <Grid.Column className=\"Info\">\n <Header size=\"large\" className={`TokenContract ${symbol}`}>\n <FormattedMessage\n id=\"overview.title\"\n values={{ token: symbol }}\n />\n </Header>\n <Header sub>\n {address}{' '}\n <a href={reviewUrl} onClick={handleClick}>\n <img src={Link} alt=\"\" />\n </a>\n <Popup\n content={<FormattedMessage id=\"global.copied\" />}\n position=\"bottom center\"\n trigger={\n <img\n src={Copy}\n alt=\"\"\n onClick={() => copyToClipboard(address)}\n />\n }\n on=\"click\"\n />\n </Header>\n </Grid.Column>\n </Grid>\n <Header\n style={\n (symbol === 'MANA' && !isMobile && { maxWidth: '500px' }) || {}\n }\n >\n <FormattedMessage\n id=\"overview.details\"\n values={{\n amount: <FormattedNumber value={Math.round(total)} />,\n token: symbol,\n months: vestingMonths,\n monthsPl: (\n <FormattedPlural\n value={vestingMonths}\n one={<FormattedMessage id=\"global.month\" />}\n other={<FormattedMessage id=\"global.month.plural\" />}\n />\n ),\n cliff: vestingCliff,\n monthsCliffPl: (\n <FormattedPlural\n value={vestingCliff}\n one={<FormattedMessage id=\"global.month\" />}\n other={<FormattedMessage id=\"global.month.plural\" />}\n />\n ),\n }}\n />\n </Header>\n </Grid.Column>\n {symbol === 'MANA' && !isMobile && (\n <Grid.Column floated=\"right\">\n <ManaWidget />\n </Grid.Column>\n )}\n </Grid.Row>\n </Grid>\n </>\n )\n}\n","import { connect } from 'react-redux'\nimport { getAddress, getContract } from '../../../modules/contract/selectors'\nimport Overview from './Overview'\n\nexport const mapState = (state) => {\n return {\n address: getAddress(state),\n contract: getContract(state),\n }\n}\n\nexport default connect(mapState)(Overview)\n","import Overview from './Overview.container'\nexport default Overview\n","export default __webpack_public_path__ + \"static/media/grant_icon.07ffda70.svg\";","import React, { useEffect, useContext } from 'react'\nimport { areSameAddress } from '../../../modules/ethereum/utils'\nimport { Grid } from 'semantic-ui-react'\nimport Icon from '../../../images/grant_icon.svg'\nimport { Header } from 'decentraland-ui'\nimport { useIntl, FormattedMessage } from 'react-intl'\nimport useResponsive, { onlyMobileMaxWidth } from '../../../hooks/useResponsive'\nimport { DaoInitiativeContext } from '../../../context/DaoInitiativeContext'\nimport DaoInitiativeButton from '../../DaoInitiativeButton/DaoInitiativeButton'\n\nimport './Beneficiary.css'\n\nfunction Beneficiary(props) {\n const { address } = props\n\n const responsive = useResponsive()\n const isMobile = responsive({ maxWidth: onlyMobileMaxWidth })\n\n const intl = useIntl()\n\n const { proposalUrl, setProposalUrl } = useContext(DaoInitiativeContext)\n\n useEffect(() => {\n const getProposal = async () => {\n const proposals = await (\n await fetch(process.env.REACT_APP_GRANT_PROPOSALS_API_URL)\n ).json()\n\n if (!!proposals) {\n let proposal = proposals.filter((p) =>\n areSameAddress(p['vesting_address'], address)\n )\n if (proposal.length === 1) {\n proposal = proposal[0]\n const proposalUrl = new URL(process.env.REACT_APP_PROPOSALS_URL)\n proposalUrl.searchParams.append('id', proposal.id)\n setProposalUrl(proposalUrl)\n } else {\n console.error(intl.formatMessage({ id: 'error.dao_proposal_url' }))\n }\n }\n }\n\n getProposal()\n // eslint-disable-next-line\n }, [address, isMobile])\n\n return (\n proposalUrl && (\n <div id=\"beneficiary\">\n <Grid verticalAlign=\"middle\">\n <Grid.Column className=\"beneficiaryContainer\">\n <Grid.Column style={{ width: 'fit-content' }}>\n <img src={Icon} alt=\"\" style={{ marginTop: '5px' }} />\n </Grid.Column>\n <Grid.Column className=\"beneficiaryText\" width={isMobile ? 12 : 9}>\n <Header>\n <FormattedMessage id=\"beneficiary.title\" />\n </Header>\n <Header sub>\n <FormattedMessage id=\"beneficiary.subtitle\" />\n </Header>\n </Grid.Column>\n </Grid.Column>\n <Grid.Column\n className=\"button__column\"\n floated=\"right\"\n textAlign=\"right\"\n >\n <DaoInitiativeButton />\n </Grid.Column>\n </Grid>\n </div>\n )\n )\n}\n\nexport default Beneficiary\n","import Beneficiary from './Beneficiary.container'\nexport default Beneficiary\n","import { connect } from 'react-redux'\nimport { getAddress } from '../../../modules/contract/selectors'\nimport Beneficiary from './Beneficiary'\n\nexport const mapState = (state) => {\n return {\n address: getAddress(state),\n }\n}\n\nexport default connect(mapState)(Beneficiary)\n","export default __webpack_public_path__ + \"static/media/future_events_icon.474a56f7.svg\";","import React from 'react'\nimport { Header } from 'decentraland-ui'\nimport { FormattedDate } from 'react-intl'\n\nfunction ScheduleEvent(props) {\n const { message, timestamp = 0, future = false } = props\n\n return (\n <li className={`${future ? 'future' : ''}`}>\n <div className=\"timeline__event\">\n {!future && (\n <Header sub style={{ textTransform: 'none', margin: 0 }}>\n <FormattedDate\n value={new Date(timestamp * 1000)}\n year=\"numeric\"\n month=\"long\"\n day=\"numeric\"\n />\n </Header>\n )}\n <Header style={{ fontSize: '15px', margin: 0 }}>{message}</Header>\n </div>\n </li>\n )\n}\n\nexport default React.memo(ScheduleEvent)\n","import React from 'react'\nimport { Header } from 'decentraland-ui'\nimport { FormattedMessage } from 'react-intl'\n\nfunction ShowMore(props) {\n const { onClick } = props\n return (\n <li className=\"more\" style={{ cursor: 'pointer' }} onClick={onClick}>\n <div className=\"timeline__event\">\n <Header sub style={{ fontSize: '11px' }}>\n <FormattedMessage id=\"schedule.show_more\" />\n </Header>\n </div>\n </li>\n )\n}\n\nexport default React.memo(ShowMore)\n","import './Schedule.css'\nimport React, { useState, useEffect, useMemo } from 'react'\nimport { Header } from 'decentraland-ui'\nimport { FormattedMessage, FormattedPlural, FormattedNumber } from 'react-intl'\nimport Info from '../../Info/Info'\nimport { getMonthDiff } from '../../../utils'\nimport FutureIcon from '../../../images/future_events_icon.svg'\nimport ScheduleEvent from './ScheduleEvent'\nimport ShowMore from './ShowMore'\nimport useResponsive, { onlyMobileMaxWidth } from '../../../hooks/useResponsive'\nimport { TopicByVersion } from '../../../modules/constants'\n\nfunction addReleasedEvent(eventList, amount, token, timestamp) {\n const props = { timestamp, key: timestamp }\n eventList.push(\n <ScheduleEvent\n message={\n <FormattedMessage\n id=\"schedule.released\"\n values={{\n amount: <FormattedNumber value={Math.round(amount)} />,\n token: token,\n }}\n />\n }\n {...props}\n />\n )\n}\n\nfunction addFulfilledEvent(eventList, timestamp, future = false) {\n const props = { timestamp, future, key: 'fulfilled' }\n eventList.push(\n <ScheduleEvent\n message={<FormattedMessage id=\"schedule.fulfilled\" />}\n {...props}\n />\n )\n}\n\nfunction addRevokedEvent(eventList, timestamp) {\n const props = { timestamp, key: 'revoked' }\n eventList.push(\n <ScheduleEvent\n message={<FormattedMessage id=\"schedule.revoked\" />}\n {...props}\n />\n )\n}\n\nfunction addPausedEvent(eventList, timestamp) {\n const props = { timestamp, key: `paused-${timestamp}` }\n eventList.push(\n <ScheduleEvent\n message={<FormattedMessage id=\"schedule.paused\" />}\n {...props}\n />\n )\n}\n\nfunction addUnpausedEvent(eventList, timestamp) {\n const props = { timestamp, key: `unpaused-${timestamp}` }\n eventList.push(\n <ScheduleEvent\n message={<FormattedMessage id=\"schedule.unpaused\" />}\n {...props}\n />\n )\n}\n\nfunction Schedule(props) {\n const { contract } = props\n const { symbol, start, cliff, duration, logs, version } = contract\n const vestingCliff = getMonthDiff(start, cliff)\n\n const filteredLogs = useMemo(\n () =>\n logs.filter(\n (log) => log.topic !== TopicByVersion[version].TRANSFER_OWNERSHIP\n ),\n [logs, version]\n )\n\n const [scheduleEvents, setScheduleEvents] = useState([])\n const [revokedOrPaused, setRevokedOrPaused] = useState(false)\n\n const Topic = TopicByVersion[version]\n\n const scheduleEventsSetpUp = (fullShow = false) => {\n const eventList = []\n eventList.push(\n <ScheduleEvent\n message={<FormattedMessage id={'schedule.contract_started'} />}\n timestamp={start}\n key=\"contract_started\"\n />\n )\n eventList.push(\n <ScheduleEvent\n message={\n <FormattedMessage\n id={'schedule.cliff_started'}\n values={{\n months: vestingCliff,\n monthsPl: (\n <FormattedPlural\n value={vestingCliff}\n one={<FormattedMessage id=\"global.month\" />}\n other={<FormattedMessage id=\"global.month.plural\" />}\n />\n ),\n }}\n />\n }\n timestamp={start}\n key={'cliff_started'}\n />\n )\n\n if (new Date(cliff * 1000) < new Date()) {\n eventList.push(\n <ScheduleEvent\n message={<FormattedMessage id=\"schedule.cliff_ended\" />}\n timestamp={cliff}\n key=\"cliff_ended\"\n />\n )\n eventList.push(\n <ScheduleEvent\n message={<FormattedMessage id=\"schedule.vesting_begins\" />}\n timestamp={cliff}\n key=\"vesting_begins\"\n />\n )\n }\n\n const endContractTs = start + duration\n const endContractDate = new Date(endContractTs * 1000)\n let fulfilledFlag = false\n\n const addEventHandler = (log) => {\n const logData = log.data\n switch (log.topic) {\n case Topic.RELEASE:\n addReleasedEvent(eventList, logData.amount, symbol, logData.timestamp)\n break\n\n case Topic.REVOKE:\n addRevokedEvent(eventList, logData.timestamp)\n break\n\n case Topic.PAUSED:\n addPausedEvent(eventList, logData.timestamp)\n break\n\n case Topic.UNPAUSED:\n addUnpausedEvent(eventList, logData.timestamp)\n break\n\n default:\n break\n }\n }\n\n if (filteredLogs.length > 0) {\n if (filteredLogs.length > 1 && !fullShow) {\n eventList.push(\n <ShowMore key=\"showMore\" onClick={() => scheduleEventsSetpUp(true)} />\n )\n const latestLog = filteredLogs[filteredLogs.length - 1]\n const { timestamp } = latestLog.data\n\n if (new Date(timestamp * 1000) > endContractDate) {\n fulfilledFlag = true\n }\n\n addEventHandler(latestLog)\n } else {\n for (const log of filteredLogs) {\n const { timestamp } = log.data\n if (!fulfilledFlag && new Date(timestamp * 1000) > endContractDate) {\n fulfilledFlag = true\n addFulfilledEvent(eventList, endContractTs)\n }\n\n addEventHandler(log)\n }\n }\n }\n\n if (!revokedOrPaused) {\n if (!fulfilledFlag) {\n if (new Date() >= new Date(endContractTs * 1000)) {\n addFulfilledEvent(eventList, endContractTs)\n } else {\n eventList.push(\n <ScheduleEvent\n message={<img src={FutureIcon} className=\"Future__Icon\" alt=\"\" />}\n key=\"Future__Icon\"\n future\n />\n )\n addFulfilledEvent(eventList, 0, true)\n }\n }\n }\n\n setScheduleEvents(eventList)\n }\n\n useEffect(() => {\n scheduleEventsSetpUp()\n // eslint-disable-next-line\n }, [revokedOrPaused])\n\n useEffect(() => {\n const cpLogs = [...filteredLogs]\n\n cpLogs.sort((a, b) => a.data.timestamp - b.data.timestamp)\n\n for (const log of cpLogs) {\n switch (log.topic) {\n case Topic.REVOKE:\n case Topic.PAUSED:\n setRevokedOrPaused(true)\n break\n case Topic.UNPAUSED:\n setRevokedOrPaused(false)\n break\n default:\n }\n }\n }, [Topic, filteredLogs])\n\n const responsive = useResponsive()\n const isMobile = responsive({ maxWidth: onlyMobileMaxWidth })\n\n return (\n <div className={`timeline ${revokedOrPaused && 'revoked'}`}>\n <Header sub>\n <FormattedMessage id=\"schedule.title\" />\n <Info\n message={<FormattedMessage id=\"helper.vesting_schedule\" />}\n position={`${isMobile ? 'right' : 'top'} center`}\n />\n </Header>\n <ul>{scheduleEvents}</ul>\n </div>\n )\n}\n\nexport default React.memo(Schedule)\n","import Schedule from './Schedule.container'\nexport default Schedule\n","import { connect } from 'react-redux'\nimport { getContract } from '../../../modules/contract/selectors'\nimport Schedule from './Schedule'\n\nexport const mapState = (state) => {\n return {\n contract: getContract(state),\n }\n}\n\nexport default connect(mapState)(Schedule)\n","export const getState = state => state.app.ticker\nexport const getTicker = state => getState(state).data\nexport const isLoading = state => getState(state).loading\nexport const getError = state => getState(state).error\n","export const DAY_IN_SECONDS = 86400\n\nexport function getDurationInDays(duration) {\n return Math.floor(duration / DAY_IN_SECONDS) + 1\n}\n\nexport function getCliffEndDay(start, cliff) {\n return Math.floor((cliff - start) / DAY_IN_SECONDS)\n}\n\nexport function getDaysFromStart(start) {\n return Math.ceil((new Date() - new Date(start * 1000)) / (DAY_IN_SECONDS * 1000))\n}\n\nexport function getDaysFromRevoke(revokeTs, start) {\n return Math.floor((revokeTs - start) / DAY_IN_SECONDS) + 1\n}\n\nexport function toDataArray(length, callback) {\n return Array.from(new Array(length), callback)\n}\n\nexport function emptyDataArray(length) {\n return toDataArray(length, (x, i) => '-')\n}\n","import './Chart.css'\nimport React, { useEffect, useState } from 'react'\nimport * as echarts from 'echarts/core'\nimport {\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n VisualMapComponent,\n MarkLineComponent,\n} from 'echarts/components'\nimport { LineChart } from 'echarts/charts'\nimport { UniversalTransition } from 'echarts/features'\nimport { SVGRenderer } from 'echarts/renderers'\nimport { useIntl } from 'react-intl'\nimport useResponsive, { onlyMobileMaxWidth } from '../../../hooks/useResponsive'\nimport { ContractVersion, TopicByVersion } from '../../../modules/constants'\nimport {\n DAY_IN_SECONDS,\n getDurationInDays,\n getDaysFromStart,\n getCliffEndDay,\n getDaysFromRevoke,\n toDataArray,\n emptyDataArray,\n} from './utils'\n\nfunction getRevokedData(revokeLog, start) {\n const isRevoked = revokeLog.length > 0\n const revokedDay = isRevoked\n ? getDaysFromRevoke(revokeLog[0].data.timestamp, start)\n : -1\n\n return [isRevoked, revokedDay]\n}\n\nfunction getPausedAndRevokedData(start, paused, revoked, stop) {\n return [\n revoked,\n revoked || paused ? getDaysFromRevoke(stop, start) : -1,\n paused,\n ]\n}\n\nfunction getXAxisData(start, duration, intl) {\n const durationInDays = getDurationInDays(duration)\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' }\n\n const xData = toDataArray(durationInDays, (x, i) =>\n intl.formatDate(new Date((start + i * DAY_IN_SECONDS) * 1000), dateOptions)\n )\n\n return xData\n}\n\nfunction getVestingData(start, cliff, duration, total, revokeLog) {\n const cliffEndDay = getCliffEndDay(start, cliff)\n const vestingDays = getDurationInDays(duration)\n const vestedPerDay = total / vestingDays\n\n const [isRevoked, revokedDay] = getRevokedData(revokeLog, start)\n\n let vestingData = new Array(cliffEndDay).fill(0)\n\n if (isRevoked) {\n if (revokedDay <= cliffEndDay) {\n vestingData = new Array(revokedDay).fill(0)\n } else {\n vestingData = vestingData.concat(\n toDataArray(\n revokedDay,\n (x, i) => Math.round(vestedPerDay * (cliffEndDay + i + 1) * 100) / 100\n )\n )\n }\n\n vestingData[vestingData.length - 1] = total\n\n return vestingData\n }\n\n return vestingData.concat(\n toDataArray(\n vestingDays - cliffEndDay,\n (x, i) => Math.round(vestedPerDay * (cliffEndDay + i + 1) * 100) / 100\n )\n )\n}\n\nfunction getVestingDataV2(\n start,\n cliff,\n duration,\n periodDuration,\n vestedPerPeriod,\n linear\n) {\n const cliffEndDay = getCliffEndDay(start, cliff)\n const vestingDays = getDurationInDays(duration)\n\n let vestingData = []\n\n if (!periodDuration) {\n return vestingData\n }\n\n // TODO: This can probably be optimized to avoid doing the same calculations for every day.\n for (let i = 0; i < vestingDays; i++) {\n let vestedThatDay\n\n if (i < cliffEndDay) {\n vestedThatDay = 0\n } else {\n const elapsedPeriods = (DAY_IN_SECONDS * i) / periodDuration\n const elapsedPeriodsTrunc = Math.trunc(elapsedPeriods)\n\n vestedThatDay = vestedPerPeriod\n .slice(0, elapsedPeriodsTrunc)\n .reduce((a, b) => a + b, 0)\n\n if (linear && elapsedPeriodsTrunc < vestedPerPeriod.length) {\n const toVestThisPeriod = vestedPerPeriod[elapsedPeriodsTrunc]\n const elapsedPeriodsDecimals = elapsedPeriods % 1\n const vestedThisPeriod = toVestThisPeriod * elapsedPeriodsDecimals\n\n vestedThatDay += vestedThisPeriod\n }\n }\n\n vestingData.push(vestedThatDay)\n }\n\n return vestingData\n}\n\nfunction getReleaseData(start, cliff, releaseLogs, revokeLog) {\n if (new Date() < new Date(cliff * 1000)) {\n return []\n }\n\n const today = getDaysFromStart(start) + 1\n const cliffEndDay = getCliffEndDay(start, cliff)\n const releaseDays = releaseLogs.map((log) =>\n Math.round((log.timestamp - start) / DAY_IN_SECONDS)\n )\n\n if (releaseDays.length > 0) {\n let releaseData = emptyDataArray(cliffEndDay)\n releaseData = releaseData.concat(\n toDataArray(releaseDays[0] - cliffEndDay, () => 0)\n )\n for (let i = 1; i < releaseDays.length; i++) {\n const { acum } = releaseLogs[i - 1]\n releaseData = releaseData.concat(\n toDataArray(\n releaseDays[i] - releaseDays[i - 1],\n () => Math.round(acum * 100) / 100\n )\n )\n }\n\n const [isRevoked, revokedDay] = getRevokedData(revokeLog, start)\n const finalDataPoint = isRevoked ? revokedDay + 1 : today\n\n const { acum } = releaseLogs[releaseLogs.length - 1]\n releaseData = releaseData.concat(\n toDataArray(\n finalDataPoint - releaseDays[releaseDays.length - 1],\n (x, i) => Math.round(acum * 100) / 100\n )\n )\n return releaseData\n }\n\n return emptyDataArray(today)\n}\n\nfunction getLabelInterval(duration, isMobile) {\n if (isMobile) {\n return 'auto'\n }\n\n const durationInMonths = getDurationInDays(duration) / 30\n const maxLabels = 7\n\n return (\n 30 *\n (durationInMonths <= maxLabels\n ? 1\n : Math.ceil(durationInMonths / maxLabels))\n )\n}\n\nfunction getTooltipFormatter(today, newName, intl, args, symbol, ticker) {\n let tooltip = `<div class='tooltip'><p>${args[0].axisValue}</p><table>`\n\n const getFormattedValue = (value) =>\n isNaN(value) ? value : intl.formatNumber(Math.round(value))\n\n args.forEach(({ marker, seriesName, value }) => {\n // prettier-ignore\n tooltip += `\n <tr>\n <td>${marker} ${args[0].dataIndex < today ? seriesName : newName}</td>\n <td>\n <div>\n <strong>${getFormattedValue(value)} ${symbol}</strong>\n </div>\n <div class='price ${symbol}'>\n ${getFormattedValue((value | 0) * ticker)} USD\n </div>\n </td>\n </tr>\n `\n })\n\n return tooltip + '</table></div>'\n}\n\nfunction resizeHandler(chart) {\n if (chart) {\n chart.resize()\n }\n}\n\nfunction Chart(props) {\n const { contract, ticker } = props\n const {\n version,\n symbol,\n start,\n cliff,\n duration,\n logs,\n vestedPerPeriod,\n periodDuration,\n linear,\n paused,\n revoked,\n stop,\n total,\n } = contract\n\n const today = Math.floor(new Date().getTime() / 1000)\n const daysFromStart = start > today ? 0 : getDaysFromStart(start)\n const Topic = TopicByVersion[version]\n\n const releaseLogs = logs\n .filter((log) => log.topic === Topic.RELEASE)\n .map((log) => log.data)\n const revokeLog = logs.filter((log) => log.topic === Topic.REVOKE)\n\n let isRevoked, revokeOrPauseDay\n let isPaused = false\n\n if (version === ContractVersion.V1) {\n ;[isRevoked, revokeOrPauseDay] = getRevokedData(revokeLog, start)\n } else {\n ;[isRevoked, revokeOrPauseDay, isPaused] = getPausedAndRevokedData(\n start,\n paused,\n revoked,\n stop\n )\n }\n\n const intl = useIntl()\n\n const responsive = useResponsive()\n const isMobile = responsive({ maxWidth: onlyMobileMaxWidth })\n const toBeVestedLabel = intl.formatMessage({ id: 'chart.to_be_vested' })\n\n const option = {\n title: {\n text: intl.formatMessage({ id: 'chart.title' }),\n textStyle: {\n fontSize: '13px',\n },\n },\n color: ['#44B600', '#FF7439'],\n tooltip: {\n trigger: 'axis',\n formatter: (args) =>\n getTooltipFormatter(\n getDaysFromStart(start) + 1,\n toBeVestedLabel,\n intl,\n args,\n symbol,\n symbol === 'MANA' ? ticker : 0\n ),\n },\n legend: {\n data: [\n intl.formatMessage({ id: 'chart.vested' }),\n intl.formatMessage({ id: 'chart.released' }),\n ],\n },\n grid: {\n left: '0',\n right: '0',\n bottom: '3%',\n containLabel: true,\n },\n xAxis: {\n type: 'category',\n boundaryGap: false,\n data: getXAxisData(start, duration, intl),\n axisLabel: {\n align: 'left',\n lineHeight: 30,\n color: '#B0AFB1',\n interval: getLabelInterval(duration, isMobile),\n },\n axisTick: {\n show: false,\n },\n },\n yAxis: {\n type: 'value',\n axisLabel: {\n formatter: (value) => {\n if (!isMobile) {\n return `${intl.formatNumber(value)} ${symbol}`\n }\n\n const lookup = [\n { magnitude: 1, abv: '' },\n { magnitude: 1e3, abv: 'k' },\n { magnitude: 1e6, abv: 'M' },\n { magnitude: 1e9, abv: 'G' },\n { magnitude: 1e12, abv: 'T' },\n { magnitude: 1e15, abv: 'P' },\n { magnitude: 1e18, abv: 'E' },\n ]\n const magnitudes = lookup.map((obj) => obj.magnitude)\n const valueMag = 10 ** Math.floor(Math.log10(value))\n const diffArr = magnitudes.map((x) => Math.abs(valueMag - x))\n const minNumber = Math.min(...diffArr)\n const idx = diffArr.findIndex((x) => x === minNumber)\n\n return `${intl.formatNumber(value / lookup[idx].magnitude)}${\n lookup[idx].abv\n } ${symbol}`\n },\n inside: true,\n margin: 0,\n verticalAlign: 'bottom',\n showMinLabel: false,\n lineHeight: 30,\n },\n },\n series: [\n {\n name: intl.formatMessage({ id: 'chart.vested' }),\n type: 'line',\n data:\n version === ContractVersion.V1\n ? getVestingData(start, cliff, duration, total, revokeLog)\n : getVestingDataV2(\n start,\n cliff,\n duration,\n periodDuration,\n vestedPerPeriod,\n linear\n ),\n symbol: 'none',\n markLine: {\n symbol: 'none',\n data: [\n {\n name: `${\n isRevoked\n ? intl.formatMessage({ id: 'chart.revoked' })\n : isPaused\n ? intl.formatMessage({ id: 'chart.paused' })\n : intl.formatMessage({ id: 'chart.today' })\n }`,\n xAxis:\n isRevoked || isPaused\n ? revokeOrPauseDay\n : getDaysFromStart(start),\n label: {\n formatter: '{b}',\n show: true,\n color: 'white',\n backgroundColor: '#ff2d55',\n padding: [3, 6],\n borderRadius: 5,\n },\n lineStyle: {\n type: 'solid',\n color: '#ff2d55',\n },\n },\n ],\n },\n },\n {\n name: intl.formatMessage({ id: 'chart.released' }),\n type: 'line',\n data: getReleaseData(start, cliff, releaseLogs, revokeLog),\n symbol: 'none',\n },\n ],\n visualMap: {\n type: 'piecewise',\n seriesIndex: 0,\n show: false,\n dimension: 0,\n pieces: [\n {\n lte: isRevoked || isPaused ? revokeOrPauseDay : daysFromStart,\n gt: -1,\n color: '#44B600',\n },\n {\n gt: isRevoked || isPaused ? revokeOrPauseDay : daysFromStart,\n color: 'rgba(115, 110, 125, 0.3)',\n },\n ],\n },\n }\n\n const [fundsChart, setFundsChart] = useState(null)\n\n useEffect(() => {\n echarts.use([\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n LineChart,\n SVGRenderer,\n UniversalTransition,\n VisualMapComponent,\n MarkLineComponent,\n ])\n\n const chartDom = document.getElementById('chart')\n setFundsChart(echarts.init(chartDom))\n }, [])\n\n useEffect(() => {\n window.onresize = () => resizeHandler(fundsChart)\n })\n\n useEffect(() => {\n if (fundsChart) {\n if (isMobile) {\n option.legend.top = 'bottom'\n option.grid.bottom = '10%'\n } else {\n option.legend.top = 'top'\n option.grid.bottom = '3%'\n }\n\n fundsChart.setOption(option)\n }\n // eslint-disable-next-line\n }, [isMobile, fundsChart])\n\n return <div id=\"chart\" />\n}\n\nexport default React.memo(Chart)\n","import Chart from './Chart.container'\nexport default Chart\n","import { connect } from 'react-redux'\nimport { getContract } from '../../../modules/contract/selectors'\nimport { getTicker } from '../../../modules/ticker/selectors'\nimport Chart from './Chart'\n\nexport const mapState = (state) => {\n return {\n contract: getContract(state),\n ticker: getTicker(state),\n }\n}\n\nexport default connect(mapState)(Chart)\n","import './Summary.css'\nimport React from 'react'\nimport { getMonthDiff } from '../../../utils'\nimport {\n FormattedDate,\n FormattedMessage,\n FormattedNumber,\n FormattedPlural,\n} from 'react-intl'\nimport useReviewUrl from '../../../hooks/useReviewUrl'\n\nfunction Summary(props) {\n const { address, contract, ticker } = props\n const { symbol, released, start, cliff, vestedAmount, total } = contract\n\n let percentage = Math.round((released / vestedAmount) * 100)\n\n if (isNaN(percentage)) {\n percentage = 0\n }\n\n const vestingCliff = getMonthDiff(start, cliff)\n\n const [reviewUrl, handleClick] = useReviewUrl(address)\n\n return (\n <div id=\"summary\" style={{ textAlign: 'justify' }}>\n <FormattedMessage\n id=\"summary.text\"\n values={{\n b: (chunks) => <b>{chunks}</b>,\n br: <br />,\n cliff: vestingCliff,\n monthPl: (\n <FormattedPlural\n value={vestingCliff}\n one={<FormattedMessage id=\"global.month\" />}\n other={<FormattedMessage id=\"global.month.plural\" />}\n />\n ),\n cliffEnd: (\n <FormattedDate\n value={new Date(cliff * 1000)}\n year=\"numeric\"\n month=\"long\"\n day=\"numeric\"\n />\n ),\n nearly:\n percentage > 0 ? (\n <>\n ,&nbsp;\n <FormattedMessage id=\"summary.nearly\" />\n &nbsp;\n </>\n ) : (\n <>&nbsp;</>\n ),\n percentage: <FormattedNumber value={percentage} />,\n amount: (\n <FormattedNumber\n value={symbol === 'MANA' ? total * ticker : total}\n />\n ),\n }}\n />\n <a href={reviewUrl} onClick={handleClick}>\n <FormattedMessage id=\"summary.review_contract\" />\n </a>\n </div>\n )\n}\n\nexport default React.memo(Summary)\n","import Summary from './Summary.container'\nexport default Summary\n","import { connect } from 'react-redux'\nimport { getAddress, getContract } from '../../../modules/contract/selectors'\nimport { getTicker } from '../../../modules/ticker/selectors'\nimport Summary from './Summary'\n\nexport const mapState = (state) => {\n return {\n address: getAddress(state),\n contract: getContract(state),\n ticker: getTicker(state),\n }\n}\n\nexport default connect(mapState)(Summary)\n","import React from 'react'\nimport { Segment } from 'decentraland-ui'\nimport { FormattedMessage, FormattedNumber } from 'react-intl'\nimport { ContractVersion } from '../../../modules/constants'\n\nfunction PendingFunds(props) {\n const { contract } = props\n\n if (!contract || contract.version !== ContractVersion.V2) {\n return null\n }\n\n const {\n symbol,\n balance,\n released,\n total: contractTotal,\n vestedAmount,\n revoked,\n } = contract\n\n const total = revoked ? vestedAmount : contractTotal\n const diff = total - (balance + released)\n\n if (!diff) {\n return null\n }\n\n const formattedMessageId =\n diff > 0\n ? 'pending_funds.requires_more_funding'\n : 'pending_funds.over_funded'\n\n return (\n <Segment>\n <p>\n <FormattedMessage\n id={formattedMessageId}\n values={{\n pending: (\n <b>\n <FormattedNumber value={Math.abs(diff)} />\n </b>\n ),\n token: <b>{symbol}</b>,\n }}\n />\n </p>\n </Segment>\n )\n}\n\nexport default PendingFunds\n","import PendingFunds from './PendingFunds.container'\nexport default PendingFunds\n","import { connect } from 'react-redux'\nimport { getContract } from '../../../modules/contract/selectors'\nimport PendingFunds from './PendingFunds'\n\nexport const mapState = (state) => {\n return {\n contract: getContract(state),\n }\n}\n\nexport default connect(mapState, null)(PendingFunds)\n","import './Dashboard.css'\nimport React from 'react'\nimport Progress from './Progress'\nimport Details from './Details'\nimport { Container, Grid } from 'semantic-ui-react'\nimport Overview from './Overview'\nimport Beneficiary from './Beneficiary'\nimport Schedule from './Schedule'\nimport Chart from './Chart'\nimport Summary from './Summary'\nimport useResponsive, { onlyMobileMaxWidth } from '../../hooks/useResponsive'\nimport PendingFunds from './PendingFunds'\n\nfunction Dashboard() {\n const responsive = useResponsive()\n const isMobile = responsive({ maxWidth: onlyMobileMaxWidth })\n\n return (\n <Container className=\"dashboard\">\n <Overview />\n <Beneficiary />\n <Grid stackable columns={2} padded style={{ width: '100%' }}>\n <Grid.Column width={12} style={{ paddingLeft: 0 }}>\n <PendingFunds />\n <Progress />\n <Chart />\n <Summary />\n </Grid.Column>\n <Grid.Column width={4} style={{ paddingRight: 0, paddingLeft: '41px' }}>\n {isMobile ? (\n <Grid>\n <Grid.Row columns={1}>\n <Grid.Column>\n <Schedule />\n </Grid.Column>\n <Grid.Column className=\"detailsMobile\">\n <Details />\n </Grid.Column>\n </Grid.Row>\n </Grid>\n ) : (\n <>\n <Schedule />\n <Details />\n </>\n )}\n </Grid.Column>\n </Grid>\n </Container>\n )\n}\n\nexport default Dashboard\n","import Dashboard from './Dashboard'\nexport default Dashboard\n","import { Component } from 'react'\nimport './Footer.css'\n\nclass Footer extends Component {\n render() {\n return (\n <div className=\"footer\">\n <div className=\"footer-top\">\n <div className=\"footer-foundation\"></div>\n <div className=\"footer-links\"></div>\n <div className=\"footer-icons\"></div>\n </div>\n <div className=\"footer-bottom\">\n <span className=\"footer-copyright\">© {new Date().getFullYear()} Decentraland</span>\n </div>\n </div>\n )\n }\n}\n\nexport default Footer\n","import Footer from './Footer'\nexport default Footer\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport './Input.css'\n\nexport default class Button extends React.PureComponent {\n static propTypes = {\n className: PropTypes.string\n }\n\n static defaultProps = {\n className: ''\n }\n\n render() {\n const { className, ...rest } = this.props\n const classes = `Input ${className}`\n return <input className={classes} {...rest} />\n }\n}\n","import Input from './Input'\n\nexport default Input\n","import { Logo } from 'decentraland-ui'\nimport React from 'react'\nimport { FormattedMessage, useIntl } from 'react-intl'\nimport { Container } from 'semantic-ui-react'\nimport { isValidAddress } from '../../utils'\nimport Input from '../Input'\n\nfunction LandingPage(props) {\n const { stateAddress, isNotFound, address, network, handleAddressChange } =\n props\n\n const intl = useIntl()\n\n let helpText = intl.formatMessage({ id: 'helper.landing_page.continue' })\n if (!stateAddress) {\n helpText = intl.formatMessage({\n id: 'helper.landing_page.provide_contract',\n })\n } else if (!isValidAddress(stateAddress)) {\n helpText = intl.formatMessage({\n id: 'helper.landing_page.address_not_valid',\n })\n } else if (isNotFound && stateAddress === address) {\n helpText =\n intl.formatMessage('helper.landing_page.no_contract') +\n (network &&\n network.name !== 'mainnet' &&\n `\\n${intl.formatMessage({\n id: 'helper.landing_page.network',\n values: { network: network.name },\n })}`)\n }\n\n return (\n <Container className=\"Landing\">\n <Logo />\n <h3>\n <FormattedMessage id=\"landing_page.title\" />\n </h3>\n <Input\n value={stateAddress}\n placeholder=\"0x...\"\n onChange={handleAddressChange}\n />\n <p className=\"help\">{helpText}</p>\n </Container>\n )\n}\n\nexport default React.memo(LandingPage)\n","import { Logo } from 'decentraland-ui'\nimport React from 'react'\nimport { FormattedMessage, useIntl } from 'react-intl'\nimport { Container } from 'semantic-ui-react'\n\nfunction ErrorPage(props) {\n const { connectionError } = props\n\n const intl = useIntl()\n\n let errorText = intl.formatMessage(\n { id: 'helper.error_page' },\n { error: connectionError || 'null' }\n )\n if (connectionError && connectionError.indexOf('Failed to fetch') !== -1) {\n errorText = (\n <p className=\"error\">\n <FormattedMessage id=\"helper.error_page.no_internet\" />\n </p>\n )\n }\n\n return (\n <Container className=\"Error\">\n <Logo />\n <h3>\n <FormattedMessage id=\"helper.error_page.message\" />\n </h3>\n <p>{errorText}</p>\n </Container>\n )\n}\n\nexport default React.memo(ErrorPage)\n","import { Logo } from 'decentraland-ui'\nimport React from 'react'\nimport { Container } from 'semantic-ui-react'\n\nfunction LoadingPage(props) {\n const { msg } = props\n\n return (\n <Container className=\"Loading\">\n <Logo />\n <p className=\"loading-message\">{msg}</p>\n </Container>\n )\n}\n\nexport default React.memo(LoadingPage)\n","import React from 'react'\n\nimport { getChainName } from '@dcl/schemas/dist/dapps/chain-id'\nimport { Button } from 'decentraland-ui/dist/components/Button/Button'\nimport { Modal } from 'decentraland-ui/dist/components/Modal/Modal'\nimport { ModalNavigation } from 'decentraland-ui/dist/components/ModalNavigation/ModalNavigation'\nimport { FormattedMessage } from 'react-intl'\n\nconst UNKNOWN_CHAIN_NAME = 'unknown chain'\n\nfunction WrongNetworkModal(props){\n const {\n currentNetwork,\n expectedNetwork,\n onSwitchNetwork } = props\n\n const expectedChainName = () => {\n return <b>{getChainName(expectedNetwork)}</b>\n }\n\n const currentChainName = () => {\n let chainName = currentNetwork\n ? getChainName(currentNetwork)\n : UNKNOWN_CHAIN_NAME\n return <b>{chainName || UNKNOWN_CHAIN_NAME}</b>\n }\n\n return (\n <Modal\n size=\"tiny\"\n open={true}\n style={{ position: 'absolute' }}\n >\n <ModalNavigation title={<FormattedMessage id={\"wrong_network_modal.title\"} />} />\n <Modal.Content>\n <FormattedMessage id={\"wrong_network_modal.content\"}\n values={{\n expectedChainName: expectedChainName(),\n currentChainName: currentChainName()\n }}\n />\n </Modal.Content>\n <Modal.Content>\n <Button\n fluid\n primary\n onClick={() => onSwitchNetwork && onSwitchNetwork(expectedNetwork)}\n >\n <FormattedMessage id=\"wrong_network_modal.button\"\n values={{\n expectedChainName: expectedChainName(),\n }}/>\n </Button>\n </Modal.Content>\n </Modal>)\n}\n\nexport default WrongNetworkModal;\n","import React, { Component } from 'react'\nimport './App.css'\nimport PropTypes from 'prop-types'\nimport Header from '../Header'\nimport Dashboard from '../Dashboard'\nimport Footer from '../Footer'\nimport { isValidAddress } from '../../utils'\nimport DaoInitiativeContextProvider from '../../context/DaoInitiativeContext'\nimport LandingPage from '../LandingPage/LandingPage'\nimport ErrorPage from '../ErrorPage/ErrorPage'\nimport LoadingPage from '../LoadingPage/LoadingPage'\nimport WrongNetworkModal from '../WrongNetworkModal/WrongNetworkModal'\nimport { ChainId } from '@dcl/schemas/dist/dapps/chain-id'\n\nconst MAINNET_CHAIN_ID_HEX = '0x1';\nfunction parseChainIdHex(chainId) {\n return parseInt(String(chainId).substring(2), 16)\n}\n\nclass App extends Component {\n static propTypes = {\n loadingMessage: PropTypes.string,\n errorMessage: PropTypes.string,\n isLoaded: PropTypes.bool,\n onConnect: PropTypes.func.isRequired,\n }\n\n _isMounted = false;\n\n constructor(props) {\n super(props)\n this.state = {\n address: this.props.address || localStorage.getItem('address') || null,\n chainId: this.props.chainId || null,\n showNetworkChangeModal: false,\n }\n this.handleWrongChain = this.handleWrongChain.bind(this)\n }\n\n componentWillMount() {\n const { onConnect } = this.props\n onConnect()\n document.addEventListener('keydown', this.handleKeyDown)\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n document.removeEventListener('keydown', this.handleKeyDown)\n if (typeof window.ethereum !== 'undefined'){\n window.ethereum.removeListener('chainChanged', this.handleWrongChain)\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.address !== this.props.address) {\n const { onConnect } = this.props\n onConnect()\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n if (typeof window.ethereum !== 'undefined'){\n window.ethereum.on('chainChanged', (chainId) => {\n this.handleWrongChain(chainId)\n });\n\n if(window.ethereum.isConnected()) {\n window.ethereum.request({ method: 'eth_chainId' }).then(chainId => {\n this.handleWrongChain(chainId)\n })\n .catch(error => console.log(error));\n }\n }\n else {\n console.log('Please install MetaMask to use this app');\n }\n }\n\n async switchToMainnet() {\n try {\n window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: MAINNET_CHAIN_ID_HEX }],\n }).then(() => {\n window.location.reload()\n })\n } catch (error) {\n console.error(error);\n }\n }\n\n handleAddressChange = (e) => {\n const address = e.target.value.trim()\n localStorage.setItem('address', address)\n this.setState({ address })\n }\n\n handleKeyDown = (e) => {\n const isEnterKey = e.which === 13 || e.which === 32\n const { onAccess, showPrompt, address } = this.props\n if (\n isEnterKey &&\n showPrompt &&\n this.state.address &&\n isValidAddress(this.state.address) &&\n this.state.address !== address\n ) {\n onAccess(this.state.address)\n }\n }\n\n handleWrongChain = (chainId) => {\n if (this._isMounted) {\n if (chainId !== MAINNET_CHAIN_ID_HEX) {\n this.setState({ showNetworkChangeModal: true, chainId: parseChainIdHex(chainId)});\n }\n }\n }\n\n renderPrompt() {\n const { isNotFound, address, network } = this.props\n const landingProps = {\n isNotFound,\n address,\n network,\n handleAddressChange: (e) => this.handleAddressChange(e),\n }\n return (\n <div className=\"app start\">\n <LandingPage stateAddress={this.state.address} {...landingProps} />\n </div>\n )\n }\n\n renderError() {\n const { connectionError } = this.props\n\n return (\n <div className=\"app start\">\n <ErrorPage connectionError={connectionError} />\n </div>\n )\n }\n\n renderLoading() {\n const { loadingMessage } = this.props\n return (\n <div className=\"app start\">\n <LoadingPage msg={loadingMessage} />\n </div>\n )\n }\n\n renderNetworkChangeModal() {\n return (\n <div className=\"app start\">\n <WrongNetworkModal\n currentNetwork={this.state.chainId}\n expectedNetwork={ChainId.ETHEREUM_MAINNET}\n onSwitchNetwork={this.switchToMainnet}\n />\n </div>\n )\n }\n\n render() {\n const {\n loadingMessage,\n connectionError,\n contractError,\n showPrompt,\n isLoaded,\n } = this.props\n if (loadingMessage) {\n return this.renderLoading()\n }\n if(!!this.state.showNetworkChangeModal) {\n return this.renderNetworkChangeModal()\n }\n if (connectionError || contractError) {\n return this.renderError()\n }\n if (showPrompt) {\n return this.renderPrompt()\n }\n if (!isLoaded) {\n return null\n }\n return (\n <div className=\"app\">\n <DaoInitiativeContextProvider>\n <Header />\n <Dashboard />\n <Footer />\n </DaoInitiativeContextProvider>\n </div>\n )\n }\n}\n\nexport default App\n","import { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { push } from 'react-router-redux'\nimport { connect as connectToEthereum } from '../../modules/ethereum/actions'\nimport {\n isLoading as isConnecting,\n getError as getConnectionError,\n getNetwork, getChainId\n} from '../../modules/ethereum/selectors'\nimport {\n isLoading as isFetchingContract,\n getError as getContractError,\n getAddress,\n getContract,\n} from '../../modules/contract/selectors'\nimport App from './App'\n\nexport const mapState = state => {\n let loadingMessage = null\n let connectionError = getConnectionError(state)\n let contractError = getContractError(state)\n const contract = getContract(state)\n const network = getNetwork(state)\n const address = getAddress(state)\n const chainId = getChainId(state)\n const isNotFound = contract && contract.beneficiary === '0x'\n const showPrompt = isNotFound || !address\n\n if (isConnecting(state)) {\n loadingMessage = 'Connecting...'\n } else if (isFetchingContract(state)) {\n loadingMessage = 'Loading data...'\n }\n\n return {\n address,\n loadingMessage,\n connectionError,\n contractError,\n showPrompt,\n isNotFound,\n isLoaded: !!contract,\n network,\n chainId\n }\n}\n\nexport const mapDispatch = dispatch => ({\n onConnect: () => dispatch(connectToEthereum()),\n onAccess: address => dispatch(push(address))\n})\n\nexport default withRouter(connect(mapState, mapDispatch)(App))\n","import App from './App.container'\nexport default App\n","import 'babel-polyfill'\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport { Provider } from 'react-redux'\nimport { ConnectedRouter } from 'react-router-redux'\nimport { createHashHistory } from 'history'\nimport configureStore from './modules/store'\n\nimport App from './components/App'\nimport { Router, Route } from 'react-router'\nimport { IntlProvider } from 'react-intl'\nimport i18n_en from './i18n/en.json'\n\nimport './index.css'\n\nconst history = createHashHistory(window.history)\nconst store = configureStore(history)\n\nReactDOM.render(\n <Provider store={store}>\n <ConnectedRouter store={store} history={history}>\n <Router history={history}>\n <Route path=\"*\">\n <IntlProvider locale=\"en\" messages={i18n_en}>\n <App />\n </IntlProvider>\n </Route>\n </Router>\n </ConnectedRouter>\n </Provider>,\n document.getElementById('root')\n)\n","import { createStore, combineReducers, applyMiddleware, compose } from 'redux'\nimport { createLogger } from 'redux-logger'\nimport { routerReducer, routerMiddleware } from 'react-router-redux'\nimport appReducer from './reducer'\nimport thunk from 'redux-thunk'\nimport API from './api'\n\nexport default function configureStore(history, initialState) {\n // reducer\n const reducer = combineReducers({\n app: appReducer,\n routing: routerReducer,\n })\n\n // middleware\n const api = new API()\n const router = routerMiddleware(history)\n const logger = createLogger({\n predicate: () => true,\n collapsed: () => true,\n })\n const middleware = applyMiddleware(thunk.withExtraArgument(api), router, logger)\n\n // enhancer\n const devtools = window.devToolsExtension ? window.devToolsExtension() : (f) => f\n const enhancer = compose(middleware, devtools)\n\n // store\n const store = createStore(reducer, initialState, enhancer)\n api.setStore(store)\n\n return store\n}\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ !function(e){function t(t){for(var n,a,l=t[0],i=t[1],c=t[2],p=0,s=[];p<l.length;p++)a=l[p],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&s.push(o[a][0]),o[a]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(f&&f(t);s.length;)s.shift()();return u.push.apply(u,c||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,l=1;l<r.length;l++){var i=r[l];0!==o[i]&&(n=!1)}n&&(u.splice(t--,1),e=a(a.s=r[0]))}return e}var n={},o={1:0},u=[];function a(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=e,a.c=n,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(r,n,function(t){return e[t]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="https://cdn.decentraland.org/@dcl/vesting-dashboard/2.1.4-4918486269.commit-be0926b/";var l=this["webpackJsonp@dcl/vesting-dashboard"]=this["webpackJsonp@dcl/vesting-dashboard"]||[],i=l.push.bind(l);l.push=t,l=l.slice();for(var c=0;c<l.length;c++)t(l[c]);var f=i;r()}([]);
2
+ //# sourceMappingURL=runtime-main.6f594031.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../webpack/bootstrap"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","this","oldJsonpFunction","slice"],"mappings":"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","file":"static/js/runtime-main.2a37f5da.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://cdn.decentraland.org/@dcl/vesting-dashboard/2.1.4-4812386627.commit-2aca72d/\";\n\n \tvar jsonpArray = this[\"webpackJsonp@dcl/vesting-dashboard\"] = this[\"webpackJsonp@dcl/vesting-dashboard\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../webpack/bootstrap"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","this","oldJsonpFunction","slice"],"mappings":"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","file":"static/js/runtime-main.6f594031.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://cdn.decentraland.org/@dcl/vesting-dashboard/2.1.4-4918486269.commit-be0926b/\";\n\n \tvar jsonpArray = this[\"webpackJsonp@dcl/vesting-dashboard\"] = this[\"webpackJsonp@dcl/vesting-dashboard\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}