{"version":3,"sources":["connectors/index.ts","reportWebVitals.ts","state/state.tsx","utils/fetchers.ts","utils/toShort.ts","utils/index.ts","components/Token/Token.tsx","utils/formatPriceEth.ts","components/Header/Header.tsx","components/Gallery/Gallery.tsx","components/UserMenu/UserMenu.tsx","components/PrivateRoute/PrivateRoute.tsx","components/Identicon/Identicon.tsx","components/TransactionProgress/TransactionProgress.tsx","components/Login/Login.tsx","layout/Marketplace.tsx","layout/Root.tsx","layout/Profile.tsx","layout/Connect.tsx","hooks/web3.ts","theme/index.ts","index.tsx"],"names":["ConnectorNames","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","useAppState","create","set","get","isAuthenticated","contract","undefined","user","tokensOnSale","ethPrice","activatingConnector","transaction","setAuthenticated","authenticated","setContract","library","chainId","a","Error","networkid","id","deployedNetwork","NFTT","networks","String","address","Contract","abi","getSigner","name","symbol","contractDetails","console","log","setUser","getUserTokens","utils","getBalance","balance","formatEther","ownedTokens","setTokensOnSale","setEthPrice","setActivatingConnector","setTransaction","userAddress","ownedTokensEvents","filters","Transfer","queryFilter","results","Map","Promise","all","map","current","ownerOf","args","tokenId","tokenMeta","price","tokenURI","uri","Array","from","buyToken","purchaseToken","value","tx","updateTokensOnSale","getAllOnSale","tokensForSale","reduce","acc","b","push","setTokenSale","onSale","transferToken","to","fetcherETHUSD","url","getState","fetch","json","ethusd","result","fetcherMetadata","error","message","fetchOwner","toShort","factor","slice","Math","round","length","substr","REACT_APP_SERVICE_URL","process","ETHSCAN_API","METADATA_API","Token","token","isOnSale","onTransfer","onBuy","useState","transfer","setTransfer","onSaleActive","setOnSale","setAddress","setPrice","onTransferClick","e","preventDefault","isAddress","onSaleClick","parseEther","owner","useSWR","data","tokenPriceEth","Intl","NumberFormat","style","currency","format","Number","formatPriceEth","variant","sx","width","bg","borderBottom","src","image","p","pt","as","color","fontSize","fontWeight","m","constants","EtherSymbol","toFixed","mt","target","href","textOverflow","position","overflow","justifyContent","onSubmit","flexDirection","onChange","currentTarget","placeholder","onClick","ml","opacity","find","formatUnits","pointerEvents","Header","history","useHistory","location","useLocation","alignItems","cursor","display","py","pathname","Gallery","useCallback","order","setOrder","useEffect","mb","mr","disabled","gap","columns","sort","BigNumber","toString","localeCompare","numeric","sub","i","index","t","UserMenu","justifySelf","textAlign","height","borderRadius","size","PrivateRoute","Component","component","path","render","props","Identicon","ref","useRef","innerHTML","appendChild","jazzicon","parseInt","TransactionProgress","transactionRef","loading","setLoading","update","subscribe","wait","confirmations","destroy","hash","injected","InjectedConnector","supportedChainIds","walletconnect","WalletConnectConnector","qrcode","pollingInterval","infuraId","REACT_APP_INFURA_ID","rpc","connectorsByName","Metamask","WalletConnect","iconsMap","Login","useWeb3React","connector","activate","Object","keys","currentConnector","activating","connected","borderColor","maxWidth","Marketplace","active","getLibrary","provider","Web3Provider","Root","basename","Profile","exact","my","getErrorMessage","NoEthereumProviderError","UnsupportedChainIdError","UserRejectedRequestErrorInjected","UserRejectedRequestErrorWalletConnect","Connect","children","account","suppress","ethereum","window","autoRefreshOnNetworkChange","useInactiveListener","tried","setTried","isAuthorized","catch","useEagerConnect","breakpoints","space","fontSizes","fonts","body","heading","layout","container","px","pb","sizes","header","button","logo","sidemenu","chart","cards","nft","border","top","right","links","nav","transition","openSea","content","buttons","primary","fontFamily","lineHeight","paddingX","paddingY","outline","whiteSpace","minWidth","secondary","tertiary","quartiary","filter","connect","fontWeights","bold","lineHeights","subheading","colors","text","white","background","gray","lightGray","midGray","lightBlue","navy","green","amber","lightGreen","red","muted","transparent","white20","black66","divider","forms","input","paragraph","letterSpacing","h1","h2","h3","h4","h5","styles","root","hr","Sentry","dsn","integrations","Integrations","BrowserTracing","enabled","tracesSampleRate","ReactDOM","StrictMode","theme","document","getElementById"],"mappings":"6KAcYA,E,6DCAGC,EAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,8BAAqBC,MAAK,YAAkD,IAA/CC,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAON,GACPO,EAAQP,O,4FCuBRQ,EAAcC,aAAqB,SAACC,EAAKC,GAAN,MAAe,CACtDC,iBAAiB,EACjBC,cAAUC,EACVC,UAAMD,EACNE,aAAc,GACdC,SAAU,MACVC,yBAAqBJ,EACrBK,iBAAaL,EAEbM,iBAAkB,SAACC,GAAD,OAA4BX,EAAI,CAAEE,gBAAiBS,KACrEC,YAAY,WAAD,4BAAE,WAAOC,EAAcC,GAArB,yBAAAC,EAAA,kEAEJF,EAFI,sBAEW,IAAIG,MAAM,iBAFrB,UAIHC,EAAY,SAACC,GACjB,OAAQA,GACN,KAAK,KACH,OAAO,KACT,QACE,OAAOA,IAGPC,EACJC,EAAKC,SAASC,OAAOL,EAAUH,KAbxB,sBAgBD,IAAIE,MAAM,iDAhBT,cAmBDO,EAAYJ,EAAZI,QACFpB,EAAW,IAAIqB,IAASD,EAASH,EAAKK,IAAKZ,EAAQa,aApBhD,UAsBUvB,EAASwB,OAtBnB,eAsBHA,EAtBG,iBAuBYxB,EAASyB,SAvBrB,QAuBHA,EAvBG,OAyBT5B,EAAI,CACFa,UACAV,WACA0B,gBAAiB,CACfF,OACAC,SACAL,aA/BK,kDAmCTO,QAAQC,IAAR,MAnCS,0DAAF,qDAAC,GAsCZC,QAAQ,WAAD,4BAAE,WAAOT,GAAP,2BAAAR,EAAA,oEAE8Cd,IAA3CE,EAFH,EAEGA,SAAUE,EAFb,EAEaA,KAAMQ,EAFnB,EAEmBA,QAASoB,EAF5B,EAE4BA,cAE5BpB,EAJA,sBAIe,IAAIG,MAAM,iBAJzB,UAKAb,EALA,sBAKgB,IAAIa,MAAM,qBAL1B,UAMAX,GAASkB,EANT,sBAMwB,IAAIP,MAAM,iBANlC,mBAQWkB,IARX,UAQmCrB,EAAQsB,WAAWZ,IAAO,OAAIlB,QAAJ,IAAIA,OAAJ,EAAIA,EAAMkB,UAAW,IARlF,2BAQCa,EARD,KAQiBC,YARjB,0BASqBJ,EAAcV,IAAO,OAAIlB,QAAJ,IAAIA,OAAJ,EAAIA,EAAMkB,UATpD,QASCe,EATD,OAWLtC,EAAI,CACFE,iBAAiB,EACjBG,KAAM,CAAEkB,QAASA,IAAO,OAAIlB,QAAJ,IAAIA,OAAJ,EAAIA,EAAMkB,UAAW,GAAIa,UAASE,iBAbvD,kDAgBLR,QAAQC,IAAR,MAhBK,0DAAF,mDAAC,GAmBRQ,gBAAiB,SAACjC,GAAD,OAAgCN,EAAI,CAAEM,aAAcA,KACrEkC,YAAa,SAACjC,GAAD,OAAsBP,EAAI,CAAEO,SAAUA,KACnDkC,uBAAwB,SAACjC,GAAD,OACtBR,EAAI,CAAEQ,oBAAqBA,KAC7BkC,eAAgB,SAACjC,GAAD,OAAsBT,EAAI,CAAES,YAAaA,KAGzDwB,cAAc,WAAD,4BAAE,WAAOV,GAAP,6BAAAR,EAAA,oEAEyBd,IAA5BE,EAFG,EAEHA,SAAUU,EAFP,EAEOA,QAASR,EAFhB,EAEgBA,KAEtBQ,EAJM,sBAIS,IAAIG,MAAM,iBAJnB,UAKNb,EALM,sBAKU,IAAIa,MAAM,qBALpB,WAMP,OAACX,QAAD,IAACA,OAAD,EAACA,EAAMkB,UAAYA,EANZ,sBAM2B,IAAIP,MAAM,iBANrC,cAQL2B,GAAkB,OAAJtC,QAAI,IAAJA,OAAA,EAAAA,EAAMkB,UAAWA,EAE/BqB,EAAoBzC,EAAS0C,QAAQC,SAAS,KAAMH,GAV/C,UAWoBxC,EAAS4C,YAAYH,EAAmB,EAAG,UAX/D,eAWLI,EAXK,OAaLV,EAAuC,IAAIW,IAbtC,UAcLC,QAAQC,IACZH,EAAQI,IAAR,uCAAY,WAAMC,GAAN,6BAAAtC,EAAA,sEACeZ,EAASmD,QAAT,UAAiBD,EAAQE,YAAzB,aAAiB,EAAcC,SAD9C,mBAGSb,EAHT,iCAI0BxC,EAASsD,UAAT,UAAmBJ,EAAQE,YAA3B,aAAmB,EAAcC,SAJ3D,uBAIAtC,EAJA,EAIAA,GAAIS,EAJJ,EAIIA,KAAM+B,EAJV,EAIUA,MAJV,UAKUvD,EAASwD,SAAT,UAAkBN,EAAQE,YAA1B,aAAkB,EAAcC,SAL1C,QAKFI,EALE,OAORtB,EAAYtC,IAAI4D,EAAK,CACnB1C,KACAS,OACA+B,QACAE,QAXM,4CAAZ,wDAfS,iCAgCJC,MAAMC,KAAKxB,GAAac,KAAI,wDAhCxB,yCAkCXtB,QAAQC,IAAR,MAlCW,kBAmCJ,IAnCI,0DAAF,mDAAC,GAuCdgC,SAAS,WAAD,4BAAE,WAAO7C,EAAYwC,GAAnB,qBAAA3C,EAAA,oEAE+Bd,IAA7ByC,EAFF,EAEEA,eAAgBvC,EAFlB,EAEkBA,SAFlB,sBAGe,IAAIa,MAAM,qBAHzB,uBAIWb,EAAS6D,cAAc9C,EAAI,CAAE+C,MAAOP,IAJ/C,OAIAQ,EAJA,OAKNxB,EAAewB,GALT,kDAONpC,QAAQC,IAAI,SAAZ,MAPM,0DAAF,qDAAC,GAWToC,mBAAmB,WAAD,4BAAE,kCAAApD,EAAA,oEAEsBd,IAA9BE,EAFQ,EAERA,SAAUoC,EAFF,EAEEA,gBACbpC,EAHW,sBAGK,IAAIa,MAAM,qBAHf,uBAKab,EAASiE,eALtB,cAKVC,EALU,OAKsCC,QAAO,SAACC,EAAmBC,GAK/E,MAJc,KAAVA,EAAEZ,KACJW,EAAIE,KAAK,CAAEvD,GAAIsD,EAAEtD,GAAIwC,MAAOc,EAAEd,MAAO/B,KAAM6C,EAAE7C,KAAMiC,IAAKY,EAAEZ,MAGrDW,IACN,IACHhC,EAAgB8B,GAZA,mBAaT,GAbS,yCAehBvC,QAAQC,IAAR,MAfgB,mBAgBT,GAhBS,0DAAF,kDAAC,GAoBnB2C,aAAa,WAAD,4BAAE,WAAOxD,EAAYwC,GAAnB,qCAAA3C,EAAA,yDAAqC4D,EAArC,2CAEiC1E,IAAnCE,EAFE,EAEFA,SAAUE,EAFR,EAEQA,KAAMqC,EAFd,EAEcA,eACnBvC,EAHK,sBAGW,IAAIa,MAAM,qBAHrB,UAILX,EAJK,sBAIO,IAAIW,MAAM,iBAJjB,uBAMOb,EAASuE,aAAaxD,EAAIyD,EAAQjB,EAAO,CAAEI,KAAMzD,EAAKkB,UAN7D,cAMJ2C,EANI,OAOVxB,EAAewB,GAPL,mBAQH,GARG,yCAUVpC,QAAQC,IAAR,MAVU,mBAWH,GAXG,0DAAF,qDAAC,GAeb6C,cAAc,WAAD,4BAAE,WAAO1D,EAAY2D,GAAnB,uBAAA9D,EAAA,oEAEgCd,IAAnCE,EAFG,EAEHA,SAAUE,EAFP,EAEOA,KAAMqC,EAFb,EAEaA,eACnBvC,EAHM,sBAGU,IAAIa,MAAM,qBAHpB,UAINX,EAJM,sBAIM,IAAIW,MAAM,iBAJhB,uBAMMb,EAAS,6CAA6CE,EAAKkB,QAASsD,EAAI3D,EAAI,CAC3F4C,KAAMzD,EAAKkB,UAPF,OAML2C,EANK,OAWXxB,EAAewB,GAXJ,kDAaXpC,QAAQC,IAAR,MAbW,0DAAF,qDAAC,OC7LH+C,EAAa,uCAAG,WAAOC,GAAP,qBAAAhE,EAAA,wEAEDjB,EAAYkF,WAA5BxC,EAFiB,EAEjBA,YAFiB,SAMRyC,MAAMF,GANE,8BAMIG,OANJ,gBAKbC,EALa,EAKvBC,OAAUD,OAEZ3C,EAAY2C,GAPa,kDASzBrD,QAAQC,IAAR,MATyB,0DAAH,sDAabsD,EAAe,uCAAG,WAAON,GAAP,SAAAhE,EAAA,+EAEPkE,MAAMF,GAFC,8BAEKG,OAFL,iGAIpB,CAAEI,MAAO,KAAEC,UAJS,yDAAH,sDAQfC,EAAU,uCAAG,WAAOtE,GAAP,iBAAAH,EAAA,oEAEDjB,EAAYkF,WAAzB7E,EAFc,EAEdA,SAFc,sBAGD,IAAIa,MAAM,sBAHT,8BAKTb,QALS,IAKTA,OALS,EAKTA,EAAUmD,QAAQpC,GALT,iGAOf,CAAEoE,MAAO,KAAEC,UAPI,yDAAH,sDCvBjBE,EAAU,SAACxB,GAAuC,IAAxByB,EAAuB,uDAAN,EACzCC,EAAQC,KAAKC,MAAM5B,EAAM6B,OAASJ,GACxC,MAAM,GAAN,OAAUzB,EAAM8B,OAAO,EAAGJ,GAA1B,cAAsC1B,EAAM8B,OAAO9B,EAAM6B,OAASH,EAAO1B,EAAM6B,UCFzEE,EAA0BC,iQAA1BD,sBAEKE,EAAW,UAAMF,EAAN,WACXG,EAAeH,GAAyB,G,OCgC/CI,EAAQ,SAAC,GAAoE,IAAlEC,EAAiE,EAAjEA,MAAOC,EAA0D,EAA1DA,SAAUC,EAAgD,EAAhDA,WAAYC,EAAoC,EAApCA,MAAO7B,EAA6B,EAA7BA,OACnD,EAAgC8B,oBAAkB,GAAlD,mBAAOC,EAAP,KAAiBC,EAAjB,KACA,EAAkCF,oBAAkB,GAApD,mBAAOG,EAAP,KAAqBC,EAArB,KACA,EAA8BJ,mBAAiB,IAA/C,mBAAOlF,EAAP,KAAgBuF,EAAhB,KACA,EAA0BL,mBAAiB,IAA3C,mBAAO/C,EAAP,KAAcqD,EAAd,KACA,EAAmFjH,IAA3EO,EAAR,EAAQA,KAAME,EAAd,EAAcA,SAAUsB,EAAxB,EAAwBA,gBAAiB+C,EAAzC,EAAyCA,cAAeb,EAAxD,EAAwDA,SAAUW,EAAlE,EAAkEA,aAE5DsC,EAAe,uCAAG,WAAOC,GAAP,SAAAlG,EAAA,sDACtBkG,EAAEC,iBACEX,GAAcrE,IAAMiF,UAAU5F,KAChCqD,EAAcyB,EAAMnF,GAAIK,GACxBoF,GAAY,IAJQ,2CAAH,sDAafS,EAAW,uCAAG,WAAOH,GAAP,SAAAlG,EAAA,yDAClBkG,EAAEC,iBACGvC,EAFa,0EAIVD,EAAa2B,EAAMnF,GAAIgB,IAAMmF,WAAW3D,IAAQ,GAJtC,OAKhBmD,GAAU,GALM,sDAOV,IAAI7F,MAAJ,MAPU,yDAAH,sDAWHsG,EAAUC,YAAOlB,EAAMnF,GAAIsE,GAAjCgC,KACAA,EAASD,YAAO,GAAD,OAAIpB,EAAJ,kBAA0BE,EAAMnF,IAAMmE,GAArDmC,KAEFC,ECnEe,SAAC/D,GAAD,IAAsBnD,EAAtB,uDAAyC,IAAzC,OACrB,IAAImH,KAAKC,aAAa,QAAS,CAC7BC,MAAO,WACPC,SAAU,QACTC,OAAOC,OAAO7F,IAAMG,YAAYqB,IAAUqE,OAAOxH,ID+D9ByH,CAAe3B,EAAM3C,MAAOnD,GAElD,OAAKiH,EAOAA,EAAK7F,KAGR,eAAC,IAAD,CAAMsG,QAAQ,MAAd,UACE,cAAC,IAAD,CACEC,GAAI,CAAEC,MAAO,OAAQC,GAAI,QAASC,aAAc,mBAChDC,IAAKd,EAAKe,QAEZ,eAAC,IAAD,CAAKC,EAAG,EAAGC,GAAI,EAAf,UACE,cAAC,IAAD,CAASC,GAAG,KAAZ,SAAkBlB,EAAK7F,OACvB,cAAC,IAAD,CAASsG,QAAQ,gBACjB,eAAC,IAAD,WACE,cAAC,IAAD,CAAMC,GAAI,CAAES,MAAO,YAAaC,SAAU,EAAGC,WAAY,QAAzD,mBACA,eAAC,IAAD,CAASH,GAAG,KAAKR,GAAI,CAAES,MAAO,QAASG,EAAG,EAAGD,WAAY,QAAzD,UACGE,IAAUC,YADb,IAC2BjB,OAAO7F,IAAMG,YAAYgE,EAAM3C,QAAQuF,QAAQ,GAAI,IAC5E,eAAC,IAAD,CAAMf,GAAI,CAAES,MAAO,QAAUD,GAAG,OAAOT,QAAQ,YAA/C,cACIR,EADJ,UAIDH,GAA0B,kBAAVA,IAAuBf,GACtC,eAAC,IAAD,CAAK2C,GAAI,EAAT,UACE,cAAC,IAAD,CAAMR,GAAG,IAAIR,GAAI,CAAES,MAAO,YAAaC,SAAU,EAAGC,WAAY,QAAhE,mBAGA,cAAC,IAAD,CACEM,OAAO,SACPC,KAAI,+CAA0C9B,GAC9CW,QAAQ,QACRL,MAAO,CACLyB,aAAc,WACdlB,MAAO,OACPmB,SAAU,WACVC,SAAU,UARd,SAWG9D,EAAQ6B,QAIf,cAAC,IAAD,CAAK4B,GAAI,EAAT,SACE,cAAC,IAAD,CACEC,OAAO,SACPC,KAAI,oDAAwCvH,QAAxC,IAAwCA,OAAxC,EAAwCA,EAAiBN,QAAzD,YAAoE8E,EAAMnF,IAC9E+G,QAAQ,UAHV,qCAUH1B,GACC,eAAC,IAAD,CAAM2C,GAAI,EAAGhB,GAAI,CAAEsB,eAAgB,UAAnC,UACG9C,GACC,eAAC,IAAD,CAAKwB,GAAI,CAAEC,MAAO,QAAlB,UACE,cAAC,IAAD,CACEsB,SAAUzC,EACVkB,GAAI,CAAEC,MAAO,OAAQuB,cAAe,UACpChB,GAAG,OAHL,SAKE,cAAC,IAAD,CACEiB,SAAU,SAAA1C,GAAC,OAAIH,EAAWG,EAAE2C,cAAc3F,QAC1C4F,YAAY,yBAGhB,eAAC,IAAD,CAAMX,GAAI,EAAV,UACE,cAAC,IAAD,CAAQhB,GAAI,CAAEE,GAAI,SAAW0B,QAAS9C,EAAiBiB,QAAQ,YAA/D,qBAGA,cAAC,IAAD,CACEC,GAAI,CAAEE,GAAI,OACV2B,GAAI,EACJD,QAAS,kBAAMnD,GAAY,IAC3BsB,QAAQ,YAJV,0BAWLrB,GACC,eAAC,IAAD,CAAKsB,GAAI,CAAEC,MAAO,QAAlB,UACE,cAAC,IAAD,CACEsB,SAAUzC,EACVkB,GAAI,CAAEC,MAAO,OAAQuB,cAAe,UACpChB,GAAG,OAHL,SAKE,cAAC,IAAD,CACEiB,SAAU,SAAA1C,GAAC,OAAIF,EAASE,EAAE2C,cAAc3F,QACxC4F,YAAY,yBAGhB,eAAC,IAAD,CAAMX,GAAI,EAAV,UACE,cAAC,IAAD,CAAQhB,GAAI,CAAEE,GAAI,SAAW0B,QAAS1C,EAAaa,QAAQ,YAA3D,qBAGA,cAAC,IAAD,CACEC,GAAI,CAAEE,GAAI,OACV2B,GAAI,EACJD,QAAS,kBAAMjD,GAAU,IACzBoB,QAAQ,YAJV,2BAWJvB,IAAaE,GACb,eAAC,IAAD,CAAMsB,GAAI,CAAEwB,cAAe,SAAUvB,MAAO,OAAQqB,eAAgB,UAApE,UACE,cAAC,IAAD,CAAQM,QAAS,kBAAMnD,GAAaD,IAAWuB,QAAQ,WAAvD,sBAGC3B,EACC,cAAC,IAAD,CACE4C,GAAI,EACJY,QAAS,kBAAMnF,GAAUD,EAAa2B,EAAMnF,GAAImF,EAAM3C,OAAO,IAC7DuE,QAAQ,WAHV,8BAQA,cAAC,IAAD,CAAQiB,GAAI,EAAGY,QAAS,kBAAMjD,GAAWD,IAAeqB,QAAQ,WAAhE,sCAQTzB,GACC,cAAC,IAAD,CAAM0C,GAAI,EAAGhB,GAAI,CAAEsB,eAAgB,SAAUrB,MAAO,QAApD,SACE,cAAC,IAAD,CACED,GAAI,CACF8B,SAAU,OAAC3J,QAAD,IAACA,OAAD,EAACA,EAAMiC,YAAY2H,MAC3B,SAAAlJ,GAAC,OAAImB,IAAMgI,YAAYnJ,EAAEG,MAAQgB,IAAMgI,YAAY7D,EAAMnF,QAEvD,GACA,EACJiJ,eAAgB,OAAC9J,QAAD,IAACA,OAAD,EAACA,EAAMiC,YAAY2H,MACjC,SAAAlJ,GAAC,OAAImB,IAAMgI,YAAYnJ,EAAEG,MAAQgB,IAAMgI,YAAY7D,EAAMnF,QAEvD,OACA,WAEN4I,QA3KO,SAAC7C,GAClBA,EAAEC,iBACFV,GAASzC,EAASsC,EAAMnF,GAAImF,EAAM3C,QA0KxBuE,QAAQ,YAdV,+BAlIa,KALnB,cAAC,IAAD,CAAMA,QAAQ,MAAd,SACE,cAAC,IAAD,O,QEjEFmC,EAAS,WACb,IAAMC,EAAUC,cACVC,EAAWC,cAEjB,EAAkC1K,IAA1BO,EAAR,EAAQA,KAAMH,EAAd,EAAcA,gBAEd,OACE,eAAC,IAAD,CAAKkI,GAAG,QAAR,UACE,eAAC,IAAD,CAAMF,GAAI,CAAEuC,WAAY,SAAUjC,EAAG,GAAKE,GAAG,MAA7C,UACE,cAAC,IAAD,CACEoB,QAAS,WACPO,EAAQ5F,KAAK,MAEfyD,GAAI,CAAEC,MAAO,GAAIuC,OAAQ,WACzBpC,IAAI,qBAEN,eAAC,IAAD,CAASJ,GAAI,CAAE6B,GAAI,CAAC,EAAG,GAAIpB,MAAO,SAAWD,GAAG,KAAhD,+BACqB,IACnB,cAAC,IAAD,CAAMR,GAAI,CAAEyC,QAAS,CAAC,OAAQ,UAA9B,gDAEF,cAAC,EAAD,OAEDzK,GAAmBG,GAClB,eAAC,IAAD,CAAM+H,GAAG,UAAUwC,GAAI,EAAG1C,GAAI,CAAEsB,eAAgB,UAAhD,UACE,cAAC,IAAD,CACEtB,GAAI,CACFiC,cAAqC,MAAtBI,EAASM,SAAmB,OAAS,UACpDlC,MAA6B,MAAtB4B,EAASM,SAAmB,QAAU,SAE/Cf,QAAS,kBAAMO,EAAQ5F,KAAK,MAL9B,yBASA,cAAC,IAAD,CAAKyD,GAAI,CAAEC,MAAO,MAClB,cAAC,IAAD,CACED,GAAI,CACFiC,cAAqC,aAAtBI,EAASM,SAA0B,OAAS,UAC3DlC,MAA6B,aAAtB4B,EAASM,SAA0B,QAAU,SAEtDf,QAAS,kBAAMO,EAAQ5F,KAAK,aAL9B,4B,QClCJqG,EAAU,WACd,MAA+BhL,IAAvBO,EAAR,EAAQA,KAAMC,EAAd,EAAcA,aACR6D,EAAqBrE,EACzBiL,uBAAY,qBAAG5G,qBAA6C,KAG9D,EAA0BsC,mBAAqB,SAA/C,mBAAOuE,EAAP,KAAcC,EAAd,KAMA,OAJAC,qBAAU,WACR/G,MACC,CAACA,IAGF,eAAC,IAAD,WACE,cAAC,IAAD,CAASuE,GAAG,KAAZ,yBACA,eAAC,IAAD,CAAMR,GAAI,CAAEuC,WAAY,UAAYU,GAAI,EAAxC,UACE,cAAC,IAAD,CAASzC,GAAG,KAAKR,GAAI,CAAES,MAAO,aAA9B,oBAGA,eAAC,IAAD,CAAMoB,GAAI,EAAV,UACE,cAAC,IAAD,CACEqB,GAAI,EACJtB,QAAS,kBAAMmB,EAAS,UACxBhD,QAAQ,SACRoD,SAAoB,UAAVL,EAJZ,4BAQA,cAAC,IAAD,CAAQlB,QAAS,kBAAMmB,EAAS,UAAUhD,QAAQ,SAASoD,SAAoB,UAAVL,EAArE,yBAKJ,cAAC,IAAD,CAAMM,IAAK,EAAGC,QAAS,CAAC,UAAW,UAAW,eAA9C,gBACGjL,QADH,IACGA,OADH,EACGA,EACGkL,MAAK,SAACzK,EAAGyD,GAAJ,MACK,UAAVwG,EACIS,IAAU3H,KAAK/C,EAAEG,IACdwK,WACAC,cAAcF,IAAU3H,KAAKU,EAAEtD,IAAIwK,gBAAYtL,EAAW,CAAEwL,SAAS,IACxE7D,OAAO7F,IAAMG,YAAYtB,EAAE2C,MAAMmI,IAAIrH,EAAEd,YAE5CN,KAAI,SAAC0I,EAAGC,GAAJ,OACH,cAAC,EAAD,CAAOvF,QAAO,OAACnG,QAAD,IAACA,OAAD,EAACA,EAAMiC,YAAY2H,MAAK,SAAA+B,GAAC,OAAIA,EAAE9K,KAAO4K,EAAE5K,OAAKmF,MAAOyF,GAAQC,Y,SCzChFE,EAAW,WACf,MAAkCnM,IAA1BO,EAAR,EAAQA,KAAMH,EAAd,EAAcA,gBAERmK,EAAUC,cAEhB,OACE,cAAC,IAAD,CAAMpC,GAAI,CAAE6B,GAAI,OAAQmC,YAAa,YAArC,SACGhM,GAAmBG,GAClB,qCACE,eAAC,IAAD,CAAK6H,GAAI,CAAEyC,QAAS,CAAC,OAAQ,UAA7B,UACE,cAAC,IAAD,CAASzC,GAAI,CAAEM,EAAG,EAAGG,MAAO,SAAWD,GAAG,KAA1C,SACGjD,EAAQpF,EAAKkB,WAEhB,eAAC,IAAD,CAAS2G,GAAI,CAAEM,EAAG,EAAGU,GAAI,EAAGiD,UAAW,QAASxD,MAAO,SAAWD,GAAG,KAArE,UACGM,IACA3I,EAAK+B,cAGV,cAAC,IAAD,CACE0H,QAAS,WACPO,EAAQ5F,KAAK,aAEfyD,GAAI,CACFwC,OAAQ,UACRX,GAAI,CAAC,EAAG,GACRqC,OAAQ,GACRjE,MAAO,GACPkE,aAAc,QATlB,SAYE,cAAC,EAAD,CAAWC,KAAM,GAAI/K,QAASlB,EAAKkB,kB,QC/BzCgL,EAAe,SAAC,GAAuD,IAA1CC,EAAyC,EAApDC,UAAsBC,EAA8B,EAA9BA,KACpCxM,EAAoBJ,IAApBI,gBAER,OACE,cAAC,IAAD,CACEwM,KAAMA,EACNC,OAAQ,SAAAC,GAAK,OAAK1M,EAAkB,cAACsM,EAAD,eAAeI,IAAY,cAAC,IAAD,CAAU/H,GAAG,U,kBCP5EgI,EAAY,SAAC,GAA4C,IAA1CtL,EAAyC,EAAzCA,QAAyC,IAAhC+K,YAAgC,MAAzB,GAAyB,EACtDQ,EAAMC,iBAAuB,MAWnC,OAVA7B,qBAAU,WACR,GAAK4B,EAAIzJ,QACT,IACEyJ,EAAIzJ,QAAQ2J,UAAY,GACxBF,EAAIzJ,QAAQ4J,YAAYC,IAASZ,EAAMa,SAAS5L,EAAQoE,MAAM,EAAG,IAAK,MACtE,MAAOsB,GACPnF,QAAQC,IAAIkF,MAEb,CAAC1F,EAAS+K,IAGX,cAAC,IAAD,CACEQ,IAAKA,EACL5E,GAAI,CACFsB,eAAgB,SAChBrB,MAAOmE,EAAO,MCrBhBc,EAAsB,WAC1B,MAAwDtN,EACtDiL,uBACE,kBAAsD,CACpDrI,eADF,EAAGA,eAEDV,QAFF,EAAmBA,QAGjBmC,mBAHF,EAA4BA,sBAK5B,KAPIzB,EAAR,EAAQA,eAAgBV,EAAxB,EAAwBA,QAASmC,EAAjC,EAAiCA,mBAW3BkJ,EAAiBN,iBAAOjN,EAAYkF,WAAWvE,aACrD,EAA8BgG,oBAAkB,GAAhD,mBAAO6G,EAAP,KAAgBC,EAAhB,KAEMC,EAASzC,sBAAW,sBAAC,sBAAAhK,EAAA,sEACnBiB,IADmB,OAEzBU,OAAetC,GACf+D,IACAoJ,GAAW,GAJc,2CAKxB,CAAC7K,EAAgBV,EAASmC,IAuB7B,OArBA+G,qBAAU,WAgBR,OAfApL,EAAY2N,UAAZ,uCAAsB,6BAAA1M,EAAA,yDAASN,EAAT,EAASA,YAAT,SAElB4M,EAAehK,QAAU5C,EACpBA,EAHa,wDAIlB8M,GAAW,GAJO,SAKI9M,EAAYiN,OALhB,cAMNC,eAAiB,GAC3BH,IAPgB,kDAUlB1L,QAAQC,IAAI,cAAZ,MACAwL,GAAW,GAXO,0DAAtB,uDAeO,WACLzN,EAAY8N,aAEb,CAACJ,IAECF,EAGH,cAAC,IAAD,CAAMrF,QAAQ,cAAd,SACE,eAAC,IAAD,CAAMC,GAAI,CAAEuC,WAAY,UAAxB,UACE,cAAC,IAAD,CAAS6B,KAAM,GAAI3D,MAAM,QAAQT,GAAI,CAAEkD,GAAI,KAD7C,gBACkE,IAC/D3F,EAAQ4H,EAAehK,QAAQwK,WANjB,M,mCblCXzO,K,oBAAAA,E,+BAAAA,M,KAKZ,I,EAMa0O,EAAW,IAAIC,IAAkB,CAAEC,kBAAmB,CAAC,KAAM,KAAM,KAUnEC,EAAgB,IAAIC,IAAuB,CACtDC,QAAQ,EACRC,gBAlBuB,KAmBvBC,SAAUpI,iQAAYqI,oBACtBC,IAAK,CAAE,EAjBJtI,iEAkBHnF,QAAS,EACTkN,kBAAmB,CAAC,KAkDTQ,GAA4D,mBACtEpP,EAAeqP,SAAWX,GAD4C,cAGtE1O,EAAesP,cAAgBT,GAHuC,GcrFnEU,GAAQ,mBACXvP,EAAeqP,SAAW,6CADf,cAEXrP,EAAesP,cAAgB,oDAFpB,GAKRE,GAAQ,WACZ,MAAwD9O,IAAhDU,EAAR,EAAQA,oBAAqBiC,EAA7B,EAA6BA,uBAC7B,EAAgCoM,cAAxBC,EAAR,EAAQA,UAAWC,EAAnB,EAAmBA,SACnB,OACE,cAAC,IAAD,CAAM7G,GAAI,CAAEsB,eAAgB,UAA5B,SACGwF,OAAOC,KAAKT,GAAkBpL,KAAI,SAACzB,GAClC,IAAMuN,EAAmBV,EAAiB7M,GACpCwN,EAAaD,IAAqB1O,EAClC4O,EAAYF,IAAqBJ,EAEvC,OACE,eAAC,IAAD,CACE5F,GAAI,EACJkC,GAAI,EACJnD,QAAQ,UACRC,GAAI,CACFmH,YAAaF,EAAa,SAAWC,EAAY,QAAU,QAC3D9F,SAAU,WACVgG,SAAU,KAGZxF,QAAS,WACPrH,EAAuByM,GACvBH,EAASP,EAAiB7M,KAZ9B,UAeGgN,EAAShN,IACR,cAAC,IAAD,CACEuG,GAAI,CAAEC,MAAO,GAAIiE,OAAQ,IACzBhB,GAAI,EACJ9C,IAAKqG,EAAShN,KAIjBA,EACAwN,GAAc,cAAC,IAAD,CAAS7C,KAAM,GAAI3D,MAAM,QAAQT,GAAI,CAAE6B,GAAI,OAfrDpI,SC3BX4N,GAAc,WAClB,IAAQlP,EAASP,IAATO,KACAmP,EAAWX,cAAXW,OAER,OACE,sCACInP,GAAQ,cAAC,GAAD,IACTA,GAAQmP,GAAU,cAAC,EAAD,Q,oBCHzB,SAASC,GAAWC,GAClB,IAAM7O,EAAU,IAAI8O,KAAaD,GAEjC,OADA7O,EAAQuN,gBAAkB,KACnBvN,EAGT,IAAM+O,GAAO,WACX,OACE,eAAC,KAAD,CAAQC,SAAU5J,GAAlB,UACE,cAAC,EAAD,IACA,cAAC,IAAD,CAAmBwJ,WAAYA,GAA/B,SACE,cAAC,GAAD,UACE,eAAC,IAAD,WACE,eAAC,IAAD,WACE,cAAC,EAAD,CAAc/C,KAAK,WAAWD,UAAWqD,KACzC,cAAC,IAAD,CAAOC,OAAK,EAACrD,KAAK,IAAID,UAAW8C,QAEnC,cAAC,EAAD,eClBNO,GAAU,WACd,MAA+BhQ,IAAvBO,EAAR,EAAQA,KAAMC,EAAd,EAAcA,aAEd,IAAKD,EAAM,OAAO,KAElB,IAAQkB,EAAkClB,EAAlCkB,QAASa,EAAyB/B,EAAzB+B,QAASE,EAAgBjC,EAAhBiC,YAE1B,OACE,eAAC,IAAD,WACE,cAAC,IAAD,CAASoG,GAAG,KAAZ,wBACA,eAAC,IAAD,CAAM6C,QAAS,CAAC,MAAO,WAAYrD,GAAI,CAAEqB,SAAU,SAAU+B,IAAK,UAAlE,UACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAS5C,GAAG,KAAKR,GAAI,CAAES,MAAO,SAA9B,qBAGA,cAAC,IAAD,UAAOpH,OAET,eAAC,IAAD,WACE,cAAC,IAAD,CAASmH,GAAG,KAAKR,GAAI,CAAES,MAAO,SAA9B,qBAGA,eAAC,IAAD,qBAASvG,WAGb,cAAC,IAAD,CAAS6F,QAAQ,cAAcC,GAAI,CAAE8H,GAAI,KACzC,cAAC,IAAD,CAAKA,GAAI,EAAT,SACG1N,GAAeA,EAAYwD,OAAS,EACnC,eAAC,IAAD,WACE,eAAC,IAAD,CAAS4C,GAAG,KAAZ,qBACW,IACT,eAAC,IAAD,CAAMT,QAAQ,YAAYS,GAAG,OAA7B,cACIpG,EAAYwD,OADhB,eAIF,cAAC,IAAD,CAAMwF,IAAK,EAAGC,QAAS,CAAC,UAAW,eAAnC,SACGjJ,EAAYc,KAAI,SAAC4I,EAAGD,GAAJ,OACf,cAAC,EAAD,CACEzF,YACG,OAAChG,QAAD,IAACA,OAAD,EAACA,EAAc2J,MAAK,SAAAlJ,GAAC,OAAImB,IAAMgI,YAAYnJ,EAAEG,MAAQgB,IAAMgI,YAAY8B,EAAE9K,QAE5EyD,QAAM,EACN4B,YAAU,EACVF,MAAO2F,GACFD,WAMbzJ,GACE,cAAC,IAAD,UACE,cAAC,IAAD,CAASoG,GAAG,KAAZ,kDC3Cd,SAASuH,GAAgB3K,GAGvB,OAFAxD,QAAQC,IAAIuD,GAERA,aAAiB4K,IACZ,8GACE5K,aAAiB6K,IACnB,gFAEP7K,aAAiB8K,KACjB9K,aAAiB+K,IAEV,kEAEPvO,QAAQwD,MAAMA,GACP,kEAIX,IAAMgL,GAAc,SAAC,GAAkB,IAAhBC,EAAe,EAAfA,SACb/P,EAAwBV,IAAxBU,oBACR,EAA6CqO,cAArChO,EAAR,EAAQA,QAASC,EAAjB,EAAiBA,QAAS0P,EAA1B,EAA0BA,QAASlL,EAAnC,EAAmCA,MAEnC,EAAiCxF,EAC/BiL,uBACE,kBAA+B,CAC7BnK,YADF,EAAGA,YAEDoB,QAFF,EAAgBA,WAIhB,KANIpB,EAAR,EAAQA,YAAaoB,EAArB,EAAqBA,QA8BrB,OApBAuF,YAAOrB,EAAapB,GAEpBoG,qBAAU,WACHpK,GAAY0P,GAAY3P,GAEjB,uCAAG,sBAAAE,EAAA,+EAELH,EAAYC,EAASC,GAFhB,OAGXkB,EAAQwO,GAHG,+CAKX1O,QAAQC,IAAR,MALW,wDAAH,oDASZyL,KACC,CAAC1M,EAAS0P,EAAS3P,EAASD,EAAaoB,ICdvC,WAAyD,IAA5ByO,EAA2B,wDAC7D,EAA0B5B,cAAlBW,EAAR,EAAQA,OAAQlK,EAAhB,EAAgBA,MAEhB4F,qBAAU,WACR,IAAQwF,EAAaC,OAAbD,SAEJA,IAAUA,EAASE,4BAA6B,KAoCnD,CAACpB,EAAQlK,EAAOmL,IDzBnBI,EC3DK,WACL,MAAwChC,cAAhCE,EAAR,EAAQA,SAAUS,EAAlB,EAAkBA,OAAQV,EAA1B,EAA0BA,UAE1B,EAA0BrI,oBAAS,GAAnC,mBAAOqK,EAAP,KAAcC,EAAd,KA+BA,OA7BA7F,qBAAU,WASJ4D,IAAchB,GAChBA,EAASkD,eAAexR,MAAK,SAACwR,GACxBA,EACFjC,EAASjB,OAAU1N,GAAW,GAAM6Q,OAAM,WACxCF,GAAS,MAGXA,GAAS,QAId,CAAChC,EAAUD,IAGd5D,qBAAU,YACH4F,GAAStB,GACZuB,GAAS,KAEV,CAACD,EAAOtB,IAEJsB,EDwBYI,MACkB1Q,GAGnC,mCACG8E,EACC,eAAC,IAAD,WACE,cAAC,IAAD,CAASoD,GAAG,KAAZ,2CACA,cAAC,IAAD,CAAMR,GAAI,CAAEgB,GAAI,GAAhB,SAAsB+G,GAAgB3K,QAGxCiL,KExBO,IACbY,YAAa,CAAC,OAAQ,OAAQ,QAC9BC,MAAO,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,KAC/CC,UAAW,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IACpCC,MAAO,CACLC,KAAM,gJACNC,QAAS,WAEXC,OAAQ,CACNC,UAAW,CACT9G,GAAI,EACJ+G,GAAI,EACJC,GAAI,KAGRC,MAAM,eAxBa,CACnBC,OAAQ,GACRJ,UAAW,KACXK,OAAQ,CAAC,IAAK,KACdC,KAAM,GACNC,SAAU,IACVC,MAAO,MAqBPC,MAAO,CACLC,IAAK,CACHhK,GAAI,aACJiK,OAAQ,YACRhD,YAAa,QACblD,UAAW,QAEb1L,YAAa,CACX2H,GAAI,QACJkB,SAAU,QACVgJ,IAAK,GACLC,MAAO,GACP/J,EAAG,EACH6D,aAAc,KAGlBmG,MAAO,CACLC,IAAK,CACH9J,MAAO,QACP+B,OAAQ,UACRgI,WAAY,mBACZ,UAAW,CACT1I,QAAS,GACTrB,MAAO,UAGXgK,QAAS,CACPhK,MAAO,QACPC,SAAU,EACVoB,QAAS,GACT,UAAW,CACT4I,QAAQ,iOACR7I,GAAI,GAEN2I,WAAY,mBACZ,UAAW,CACT1I,QAAS,EACTrB,MAAO,UAGXrB,MAAO,CACLqB,MAAO,QACPC,SAAU,EACVoB,QAAS,GACT0I,WAAY,mBACZ,UAAW,CACT1I,QAAS,EACTrB,MAAO,SAET,UAAW,CACTiK,QAAQ,qNACR7I,GAAI,KAIV8I,QAAS,CACPC,QAAQ,2BA3HU,CACpBT,OAAQ,EACRU,WAAY,OACZlK,WAAY,SACZmK,WAAY,OACZpK,SAAU,CAAC,EAAG,GACdqK,SAAU,EACVC,SAAU,EACVC,QAAS,OACTC,WAAY,SACZ1I,OAAQ,UACRgI,WAAY,oBACZ,UAAW,CACT1I,QAAS,MA8GF,IAELnB,WAAY,OACZwK,SAAU,SACVjL,GAAI,UACJO,MAAO,QACPwD,UAAW,SACXxB,QAAS,OACTxC,MAAO,OACPsC,WAAY,SACZjB,eAAgB,WAGlB8J,UAAW,CACT5I,OAAQ,UACRzC,QAAS,kBACTG,GAAI,YACJS,WAAY,QAEd0K,SAAU,CACRtL,QAAS,oBACTU,MAAO,QACPP,GAAI,WAENoL,UAAW,CACTvL,QAAS,mBACTG,GAAI,QACJO,MAAO,QACP0K,SAAU,OACVzI,GAAI,GAEN6I,OAAQ,CACNxL,QAAS,mBACTG,GAAI,aACJO,MAAO,QACP0K,SAAU,OACVzI,GAAI,EACJhC,SAAU,EACV,aAAc,CACZuB,cAAe,OACfH,QAAS,KAGb0J,QAAS,CACPzL,QAAS,mBACT2C,GAAI,EACJ+G,GAAI,IAGRgC,YAAa,CACXnC,QAAS,IACTD,KAAM,IACNqC,KAAM,KAERC,YAAa,CACXtC,KAAM,YACNC,QAAS,YACTsC,WAAY,GAEdC,OAAO,eArKc,CACrBC,KAAM,OACNC,MAAO,OACPC,WAAY,OACZpB,QAAS,OACTQ,UAAW,OACXa,KAAM,UACNC,UAAW,UACXC,QAAS,OACTC,UAAW,UACXC,KAAM,UACNC,MAAO,oBACPC,MAAO,UACPC,WAAY,OACZC,IAAK,OACLC,MAAO,OACPC,YAAa,cACbC,QAAS,0BACTC,QAAS,uBAsJTC,QAAS,CACP5C,IAAK,CACHzJ,MAAO,QACPyD,OAAQ,EACR4D,GAAI,IAGRiF,MAAO,CACLC,MAAO,CACLjC,SAAU,EACVC,SAAU,EACV7G,aAAc,MACdjE,GAAI,QACJO,MAAO,YAGXqL,KAAM,CACJzC,KAAM,CACJwB,WAAY,OACZlK,WAAY,OACZmK,WAAY,OACZpK,SAAU,GAEZ4I,QAAS,CACP5G,GAAI,GAENgJ,KAAM,CACJ/K,WAAY,QAEdsM,UAAW,CACTpC,WAAY,OACZlK,WAAY,OACZmK,WAAY,EACZpK,SAAU,EACVwM,cAAe,IACfzM,MAAO,SAET0M,GAAI,CACFtC,WAAY,UACZC,WAAY,UACZnK,WAAY,UACZD,SAAU,EACVwM,eAAgB,KAElBE,GAAI,CACFvC,WAAY,UACZC,WAAY,UACZnK,WAAY,UACZD,SAAU,EACVwM,eAAgB,KAElBG,GAAI,CACFxC,WAAY,UACZC,WAAY,aACZnK,WAAY,UACZD,SAAU,GAEZ4M,GAAI,CACFzC,WAAY,UACZC,WAAY,aACZnK,WAAY,OACZD,SAAU,CAAC,EAAG,IAEhB6M,GAAI,CACF1C,WAAY,UACZlK,WAAY,OACZmK,WAAY,IACZpK,SAAU,EACVwM,cAAe,MAGnBM,OAAQ,CACNC,KAAM,CACJ5C,WAAY,OACZC,WAAY,OACZnK,WAAY,QAEd9H,EAAG,CACD4H,MAAO,UACP,UAAW,CACTA,MAAO,YAGXiN,GAAI,CACFxJ,OAAQ,EACRpC,QAAS,GACT5B,GAAI,QACJO,MAAO,QACPqH,GAAI,KC1QV6F,IAAY,CACVC,IAAK,2EACLC,aAAc,CAAC,IAAIC,IAAaC,gBAChCC,SAASjQ,EAKTkQ,iBAAkB,IAGpBC,IAASzJ,OACP,cAAC,IAAM0J,WAAP,UACE,cAAC,IAAD,CAAeC,MAAOA,GAAtB,SACE,cAAC,GAAD,QAGJC,SAASC,eAAe,SAM1BnX,M","file":"static/js/main.1ee742ff.chunk.js","sourcesContent":["import { InjectedConnector } from '@web3-react/injected-connector'\n// import { NetworkConnector } from '@web3-react/network-connector'\nimport { WalletConnectConnector } from '@web3-react/walletconnect-connector'\n// import { WalletLinkConnector } from '@web3-react/walletlink-connector'\n// import { LedgerConnector } from '@web3-react/ledger-connector'\n// import { TrezorConnector } from '@web3-react/trezor-connector'\n// import { LatticeConnector } from '@web3-react/lattice-connector'\n// import { FrameConnector } from '@web3-react/frame-connector'\n// import { AuthereumConnector } from '@web3-react/authereum-connector'\n// // import { FortmaticConnector } from '@web3-react/fortmatic-connector'\n// // import { MagicConnector } from '@web3-react/magic-connector'\n// // import { PortisConnector } from '@web3-react/portis-connector'\n// import { TorusConnector } from '@web3-react/torus-connector'\n\nexport enum ConnectorNames {\n Metamask = 'Metamask',\n WalletConnect = 'WalletConnect',\n}\n\nconst POLLING_INTERVAL = 12000\nconst RPC_URLS: { [chainId: number]: string } = {\n 1: process.env.REACT_APP_RPC_URL_1 as string,\n 4: process.env.REACT_APP_RPC_URL_4 as string,\n}\n\nexport const injected = new InjectedConnector({ supportedChainIds: [5777, 1337, 4] })\n\n// export const network = new NetworkConnector({\n// urls: {\n// 1337: RPC_URLS[1],\n// 4: RPC_URLS[4],\n// },\n// defaultChainId: 1337,\n// })\n\nexport const walletconnect = new WalletConnectConnector({\n qrcode: true,\n pollingInterval: POLLING_INTERVAL,\n infuraId: process.env.REACT_APP_INFURA_ID,\n rpc: { 4: RPC_URLS[4] },\n chainId: 4,\n supportedChainIds: [4],\n})\n\n// export const walletlink = new WalletLinkConnector({\n// url: RPC_URLS[1],\n// appName: 'NFT-marketplace',\n// })\n\n// export const ledger = new LedgerConnector({\n// chainId: 1,\n// url: RPC_URLS[1],\n// pollingInterval: POLLING_INTERVAL,\n// })\n\n// export const trezor = new TrezorConnector({\n// chainId: 1,\n// url: RPC_URLS[1],\n// pollingInterval: POLLING_INTERVAL,\n// manifestEmail: 'dummy@abc.xyz',\n// manifestAppUrl: 'http://localhost:3000',\n// })\n\n// export const lattice = new LatticeConnector({\n// chainId: 4,\n// appName: 'NFT-marketplace',\n// url: RPC_URLS[4],\n// })\n\n// export const frame = new FrameConnector({ supportedChainIds: [1] })\n\n// export const authereum = new AuthereumConnector({ chainId: 42 })\n\n// export const fortmatic = new FortmaticConnector({\n// apiKey: process.env.REACT_APP_FORTMATIC_API_KEY as string,\n// chainId: 4,\n// })\n\n// export const magic = new MagicConnector({\n// apiKey: process.env.REACT_APP_MAGIC_API_KEY as string,\n// chainId: 4,\n// email: 'hello@example.org',\n// })\n\n// export const portis = new PortisConnector({\n// dAppId: process.env.REACT_APP_PORTIS_DAPP_ID as string,\n// networks: [1, 100],\n// })\n\n// export const torus = new TorusConnector({ chainId: 1 })\n\nexport const connectorsByName: { [connectorName in ConnectorNames]: any } = {\n [ConnectorNames.Metamask]: injected,\n // [ConnectorNames.Network]: network,\n [ConnectorNames.WalletConnect]: walletconnect,\n // [ConnectorNames.WalletLink]: walletlink,\n // [ConnectorNames.Ledger]: ledger,\n // [ConnectorNames.Trezor]: trezor,\n // [ConnectorNames.Lattice]: lattice,\n // [ConnectorNames.Frame]: frame,\n // [ConnectorNames.Authereum]: authereum,\n // [ConnectorNames.Fortmatic]: fortmatic,\n // [ConnectorNames.Magic]: magic,\n // [ConnectorNames.Portis]: portis,\n // [ConnectorNames.Torus]: torus,\n}\n","import { ReportHandler } from 'web-vitals'\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry)\n getFID(onPerfEntry)\n getFCP(onPerfEntry)\n getLCP(onPerfEntry)\n getTTFB(onPerfEntry)\n })\n }\n}\n\nexport default reportWebVitals\n","import NFTT from '@fluuuid/nft-contracts/build/contracts/NFTT.json'\nimport create from 'zustand'\nimport { BigNumber, Contract, utils, Event } from 'ethers'\n\nimport { TokenProps } from '../components/Token'\nimport { ContractPropsDetails, UserProps } from '../types'\nexport interface StateContext {\n isAuthenticated: boolean\n contract?: Contract\n contractDetails?: ContractPropsDetails\n user?: UserProps\n tokensOnSale?: TokenProps[]\n ethPrice?: string\n activatingConnector?: any\n transaction?: any\n library?: any\n\n setAuthenticated(authenticated: boolean): void\n setContract(library: any, chainId: number): void\n setTokensOnSale(tokensOnSale: TokenProps[]): void\n setEthPrice(ethPrice: string): void\n setActivatingConnector(activatingConnector: any): void\n setTransaction(transaction: any): void\n //\n buyToken(id: string, price: BigNumber): void\n setUser(address?: string): void\n updateTokensOnSale(): Promise\n setTokenSale(id: string, price: BigNumber, onSale: boolean): Promise\n transferToken(id: string, to: string): void\n getUserTokens(address?: string): Promise\n}\n\nconst useAppState = create((set, get) => ({\n isAuthenticated: false,\n contract: undefined,\n user: undefined,\n tokensOnSale: [],\n ethPrice: '0.0',\n activatingConnector: undefined,\n transaction: undefined,\n\n setAuthenticated: (authenticated: boolean) => set({ isAuthenticated: authenticated }),\n setContract: async (library: any, chainId: number) => {\n try {\n if (!library) throw new Error('No Web3 Found')\n\n const networkid = (id: number) => {\n switch (id) {\n case 1337:\n return 5777\n default:\n return id\n }\n }\n const deployedNetwork =\n NFTT.networks[String(networkid(chainId)) as keyof typeof NFTT.networks]\n\n if (!deployedNetwork) {\n throw new Error('The network you selected is no supported yet.')\n }\n\n const { address } = deployedNetwork\n const contract = new Contract(address, NFTT.abi, library.getSigner())\n\n const name = await contract.name()\n const symbol = await contract.symbol()\n\n set({\n library,\n contract,\n contractDetails: {\n name,\n symbol,\n address,\n },\n })\n } catch (e) {\n console.log(e)\n }\n },\n setUser: async (address?: string) => {\n try {\n const { contract, user, library, getUserTokens } = get()\n\n if (!library) throw new Error('No Web3 Found')\n if (!contract) throw new Error('No contract found')\n if (!user && !address) throw new Error('No user found')\n\n const balance = utils.formatEther(await library.getBalance(address || user?.address || ''))\n const ownedTokens = await getUserTokens(address || user?.address)\n\n set({\n isAuthenticated: true,\n user: { address: address || user?.address || '', balance, ownedTokens },\n })\n } catch (e) {\n console.log(e)\n }\n },\n setTokensOnSale: (tokensOnSale: TokenProps[]) => set({ tokensOnSale: tokensOnSale }),\n setEthPrice: (ethPrice: string) => set({ ethPrice: ethPrice }),\n setActivatingConnector: (activatingConnector: any) =>\n set({ activatingConnector: activatingConnector }),\n setTransaction: (transaction: any) => set({ transaction: transaction }),\n\n //\n getUserTokens: async (address?: string): Promise => {\n try {\n const { contract, library, user } = get()\n\n if (!library) throw new Error('No Web3 Found')\n if (!contract) throw new Error('No contract found')\n if (!user?.address && !address) throw new Error('No user found')\n\n const userAddress = user?.address || address\n\n const ownedTokensEvents = contract.filters.Transfer(null, userAddress)\n const results: Event[] = await contract.queryFilter(ownedTokensEvents, 0, 'latest')\n\n const ownedTokens: Map = new Map()\n await Promise.all(\n results.map(async current => {\n const ownerToken = await contract.ownerOf(current.args?.tokenId)\n\n if (ownerToken === userAddress) {\n const { id, name, price } = await contract.tokenMeta(current.args?.tokenId)\n const uri = await contract.tokenURI(current.args?.tokenId)\n\n ownedTokens.set(uri, {\n id,\n name,\n price,\n uri,\n })\n }\n })\n )\n\n return Array.from(ownedTokens).map(([_, token]) => token)\n } catch (e) {\n console.log(e)\n return []\n }\n },\n\n buyToken: async (id: string, price: BigNumber) => {\n try {\n const { setTransaction, contract } = get()\n if (!contract) throw new Error('No contract found')\n const tx = await contract.purchaseToken(id, { value: price })\n setTransaction(tx)\n } catch (e) {\n console.log('on buy', e)\n }\n },\n //\n updateTokensOnSale: async () => {\n try {\n const { contract, setTokensOnSale } = get()\n if (!contract) throw new Error('No contract found')\n\n const tokensForSale = (await contract.getAllOnSale()).reduce((acc: TokenProps[], b: any) => {\n if (b.uri !== '') {\n acc.push({ id: b.id, price: b.price, name: b.name, uri: b.uri })\n }\n\n return acc\n }, [] as TokenProps[])\n setTokensOnSale(tokensForSale)\n return true\n } catch (e) {\n console.log(e)\n return false\n }\n },\n //\n setTokenSale: async (id: string, price: BigNumber, onSale: boolean = false) => {\n try {\n const { contract, user, setTransaction } = get()\n if (!contract) throw new Error('No contract found')\n if (!user) throw new Error('No user found')\n\n const tx = await contract.setTokenSale(id, onSale, price, { from: user.address })\n setTransaction(tx)\n return true\n } catch (e) {\n console.log(e)\n return false\n }\n },\n //\n transferToken: async (id: string, to: string) => {\n try {\n const { contract, user, setTransaction } = get()\n if (!contract) throw new Error('No contract found')\n if (!user) throw new Error('No user found')\n\n const tx = await contract['safeTransferFrom(address,address,uint256)'](user.address, to, id, {\n from: user.address,\n })\n\n // console.log(tx)\n setTransaction(tx)\n } catch (e) {\n console.log(e)\n }\n },\n}))\n\nexport { useAppState }\n\n// const getAllTokens = async ({ contract }: Props) => {\n// try {\n// const logs = await contract.provider.getLogs({\n// address: contract.address,\n// fromBlock: 0,\n// toBlock: 'latest',\n// })\n\n// const decoder = new utils.AbiCoder()\n\n// console.log(contract)\n\n// const tokens = await Promise.all(\n// await logs.reduce(async (acc: TokenProps[], log: Log) => {\n// const [from] = decoder.decode(['address'], log.topics[1])\n\n// const list = await acc\n\n// if (from === utils.getAddress('0x0000000000000000000000000000000000000000')) {\n// const tokenId =\n// log.topics && log.topics[3]\n// ? utils.formatUnits(BigNumber.from(log.topics[3]), 'wei')\n// : undefined\n\n// const token = tokenId && (await contract.tokenMeta(tokenId))\n// if (token) {\n// list.push(token)\n// }\n// }\n// return list\n// }, Promise.resolve([]) as Promise)\n// )\n\n// return tokens\n// } catch (e) {\n// console.log(e)\n// }\n// }\n","import { useAppState } from '../state'\n\nexport const fetcherETHUSD = async (url: string) => {\n try {\n const { setEthPrice } = useAppState.getState()\n\n const {\n result: { ethusd },\n } = await (await fetch(url)).json()\n setEthPrice(ethusd)\n } catch (e) {\n console.log(e)\n }\n}\n\nexport const fetcherMetadata = async (url: string) => {\n try {\n return await (await fetch(url)).json()\n } catch (e) {\n return { error: e.message }\n }\n}\n\nexport const fetchOwner = async (id: string) => {\n try {\n const { contract } = useAppState.getState()\n if (!contract) throw new Error('Contract not found')\n\n return await contract?.ownerOf(id)\n } catch (e) {\n return { error: e.message }\n }\n}\n","const toShort = (value: string, factor: number = 5) => {\n const slice = Math.round(value.length / factor)\n return `${value.substr(0, slice)}...${value.substr(value.length - slice, value.length)}`\n}\n\nexport { toShort }\n","const { REACT_APP_SERVICE_URL } = process.env\n\nexport const ETHSCAN_API = `${REACT_APP_SERVICE_URL}/ethusd`\nexport const METADATA_API = REACT_APP_SERVICE_URL || ''\n\nexport * from './toShort'\nexport * from './formatPriceEth'\n","import { FormEvent, MouseEvent, useState } from 'react'\nimport { utils, BigNumber, constants } from 'ethers'\nimport {\n Spinner,\n Box,\n Flex,\n Card,\n Button,\n Image,\n Input,\n Text,\n Heading,\n Divider,\n NavLink,\n} from 'theme-ui'\nimport useSWR from 'swr'\nimport { useAppState } from '../../state'\nimport { fetcherMetadata, fetchOwner } from '../../utils/fetchers'\nimport { formatPriceEth, METADATA_API, toShort } from '../../utils'\n\nexport type TokenProps = {\n id: string\n uri: string\n price: BigNumber\n name: string\n}\n\nexport type TokenCompProps = {\n token: TokenProps\n isOnSale?: boolean\n onTransfer?: boolean\n onBuy?: boolean\n onSale?: boolean\n}\n\nconst Token = ({ token, isOnSale, onTransfer, onBuy, onSale }: TokenCompProps) => {\n const [transfer, setTransfer] = useState(false)\n const [onSaleActive, setOnSale] = useState(false)\n const [address, setAddress] = useState('')\n const [price, setPrice] = useState('')\n const { user, ethPrice, contractDetails, transferToken, buyToken, setTokenSale } = useAppState()\n\n const onTransferClick = async (e: FormEvent | MouseEvent) => {\n e.preventDefault()\n if (onTransfer && utils.isAddress(address)) {\n transferToken(token.id, address)\n setTransfer(false)\n }\n }\n\n const onBuyClick = (e: MouseEvent) => {\n e.preventDefault()\n onBuy && buyToken(token.id, token.price)\n }\n\n const onSaleClick = async (e: MouseEvent) => {\n e.preventDefault()\n if (!onSale) return\n try {\n await setTokenSale(token.id, utils.parseEther(price), true)\n setOnSale(false)\n } catch (e) {\n throw new Error(e)\n }\n }\n\n const { data: owner } = useSWR(token.id, fetchOwner)\n const { data } = useSWR(`${METADATA_API}/token/${token.id}`, fetcherMetadata)\n\n const tokenPriceEth = formatPriceEth(token.price, ethPrice)\n\n if (!data)\n return (\n \n \n \n )\n\n if (!data.name) return null\n\n return (\n \n \n \n {data.name}\n \n \n Price\n \n {constants.EtherSymbol} {Number(utils.formatEther(token.price)).toFixed(2)}{' '}\n \n ({tokenPriceEth})\n \n \n {owner && typeof owner === 'string' && !onTransfer && (\n \n \n Owner\n \n \n {toShort(owner)}\n \n \n )}\n \n \n View on Opensea.io\n \n \n \n\n {onTransfer && (\n \n {transfer && (\n \n \n setAddress(e.currentTarget.value)}\n placeholder=\"ETH Address 0x0...\"\n />\n \n \n \n setTransfer(false)}\n variant=\"quartiary\"\n >\n Cancel\n \n \n \n )}\n {onSaleActive && (\n \n \n setPrice(e.currentTarget.value)}\n placeholder=\"Token Price in ETH\"\n />\n \n \n \n setOnSale(false)}\n variant=\"quartiary\"\n >\n Cancel\n \n \n \n )}\n {!transfer && !onSaleActive && (\n \n \n {isOnSale ? (\n onSale && setTokenSale(token.id, token.price, false)}\n variant=\"tertiary\"\n >\n Remove from Sale\n \n ) : (\n \n )}\n \n )}\n \n )}\n {onBuy && (\n \n utils.formatUnits(a.id) === utils.formatUnits(token.id)\n )\n ? 0.5\n : 1,\n pointerEvents: !!user?.ownedTokens.find(\n a => utils.formatUnits(a.id) === utils.formatUnits(token.id)\n )\n ? 'none'\n : 'visible',\n }}\n onClick={onBuyClick}\n variant=\"quartiary\"\n >\n Buy Token\n \n \n )}\n \n \n )\n}\n\nexport { Token }\n","import { BigNumberish, utils } from 'ethers'\n\nconst formatPriceEth = (price: BigNumberish, ethPrice: string = '0') =>\n new Intl.NumberFormat('us-GB', {\n style: 'currency',\n currency: 'USD',\n }).format(Number(utils.formatEther(price)) * Number(ethPrice))\n\nexport { formatPriceEth }\n","import { useHistory, useLocation } from 'react-router'\nimport { Box, NavLink, Flex, Heading, Image, Text } from 'theme-ui'\nimport { useAppState } from '../../state'\nimport { UserMenu } from '..'\n\nexport type HeaderProps = {\n //\n}\n\nconst Header = () => {\n const history = useHistory()\n const location = useLocation()\n\n const { user, isAuthenticated } = useAppState()\n\n return (\n \n \n {\n history.push('/')\n }}\n sx={{ width: 50, cursor: 'pointer' }}\n src=\"/static/logo.png\"\n />\n \n ERC721 Marketplace{' '}\n + OpenSea.io on Rinkeby Network\n \n \n \n {isAuthenticated && user && (\n \n history.push('/')}\n >\n Marketplace\n \n \n history.push('/profile')}\n >\n Profile\n \n \n )}\n \n )\n}\n\nexport { Header }\n","import { BigNumber, utils } from 'ethers'\nimport { useCallback, useEffect, useState } from 'react'\nimport { Box, Button, Flex, Grid, Heading } from 'theme-ui'\nimport { useAppState } from '../../state'\nimport { Token } from '..'\n\nexport type GalleryProps = {}\ntype StateOrder = 'price' | 'alpha'\n\nconst Gallery = () => {\n const { user, tokensOnSale } = useAppState()\n const updateTokensOnSale = useAppState(\n useCallback(({ updateTokensOnSale }) => updateTokensOnSale, [])\n )\n\n const [order, setOrder] = useState('alpha')\n\n useEffect(() => {\n updateTokensOnSale()\n }, [updateTokensOnSale])\n\n return (\n \n Marketplace\n \n \n Order:\n \n \n setOrder('alpha')}\n variant=\"filter\"\n disabled={order === 'alpha'}\n >\n Alphabetically\n \n \n \n \n \n {tokensOnSale\n ?.sort((a, b) =>\n order === 'alpha'\n ? BigNumber.from(a.id)\n .toString()\n .localeCompare(BigNumber.from(b.id).toString(), undefined, { numeric: true })\n : Number(utils.formatEther(a.price.sub(b.price)))\n )\n .map((i, index) => (\n t.id === i.id)} token={i} key={index} />\n ))}\n \n \n )\n}\n\nexport { Gallery }\n","import { Flex, Heading, Box } from 'theme-ui'\nimport { useHistory } from 'react-router'\nimport { EtherSymbol } from '@ethersproject/constants'\nimport { useAppState } from '../../state'\nimport { Identicon } from '..'\nimport { toShort } from '../../utils'\n\nexport type UserMenuProps = {\n //\n}\n\nconst UserMenu = () => {\n const { user, isAuthenticated } = useAppState()\n\n const history = useHistory()\n\n return (\n \n {isAuthenticated && user && (\n <>\n \n \n {toShort(user.address)}\n \n \n {EtherSymbol}\n {user.balance}\n \n \n {\n history.push('/profile')\n }}\n sx={{\n cursor: 'pointer',\n ml: [0, 3],\n height: 30,\n width: 30,\n borderRadius: '100%',\n }}\n >\n \n \n \n )}\n \n )\n}\n\nexport { UserMenu }\n","import { ElementType } from 'react'\nimport { Redirect } from 'react-router'\nimport { Route } from 'react-router-dom'\nimport { useAppState } from '../../state'\n\ntype PrivateRouteProps = {\n component: ElementType\n path: string\n}\n\nconst PrivateRoute = ({ component: Component, path }: PrivateRouteProps) => {\n const { isAuthenticated } = useAppState()\n\n return (\n (isAuthenticated ? : )}\n />\n )\n}\n\nexport { PrivateRoute }\n","import { useEffect, useRef } from 'react'\nimport { Flex } from 'theme-ui'\nimport jazzicon from 'jazzicon'\n\nexport type IdenticonProps = {\n address: string\n size?: number\n}\n\nconst Identicon = ({ address, size = 16 }: IdenticonProps) => {\n const ref = useRef(null)\n useEffect(() => {\n if (!ref.current) return\n try {\n ref.current.innerHTML = ''\n ref.current.appendChild(jazzicon(size, parseInt(address.slice(2, 10), 16)))\n } catch (e) {\n console.log(e)\n }\n }, [address, size])\n\n return (\n \n )\n}\n\nexport { Identicon }\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport { Card, Flex, Spinner } from 'theme-ui'\nimport { useAppState } from '../../state'\nimport { toShort } from '../../utils'\n\nconst TransactionProgress = () => {\n const { setTransaction, setUser, updateTokensOnSale } = useAppState(\n useCallback(\n ({ setTransaction, setUser, updateTokensOnSale }) => ({\n setTransaction,\n setUser,\n updateTokensOnSale,\n }),\n []\n )\n )\n\n const transactionRef = useRef(useAppState.getState().transaction)\n const [loading, setLoading] = useState(false)\n\n const update = useCallback(async () => {\n await setUser()\n setTransaction(undefined)\n updateTokensOnSale()\n setLoading(false)\n }, [setTransaction, setUser, updateTokensOnSale])\n\n useEffect(() => {\n useAppState.subscribe(async ({ transaction }) => {\n try {\n transactionRef.current = transaction\n if (!transaction) return\n setLoading(true)\n const receipt = await transaction.wait()\n if (receipt.confirmations >= 1) {\n update()\n }\n } catch (e) {\n console.log('transaction', e)\n setLoading(false)\n }\n })\n\n return () => {\n useAppState.destroy()\n }\n }, [update])\n\n if (!loading) return null\n\n return (\n \n \n Transaction:{' '}\n {toShort(transactionRef.current.hash)}\n \n \n )\n}\n\nexport { TransactionProgress }\n","import { AbstractConnector } from '@web3-react/abstract-connector'\nimport { Flex, Button, Spinner, Image } from 'theme-ui'\nimport { useWeb3React } from '@web3-react/core'\nimport { ConnectorNames, connectorsByName } from '../../connectors'\nimport { useAppState } from '../../state'\n\nconst iconsMap = {\n [ConnectorNames.Metamask]: 'https://docs.metamask.io/metamask-fox.svg',\n [ConnectorNames.WalletConnect]: 'https://walletconnect.org/walletconnect-logo.svg',\n}\n\nconst Login = () => {\n const { activatingConnector, setActivatingConnector } = useAppState()\n const { connector, activate } = useWeb3React()\n return (\n \n {Object.keys(connectorsByName).map((name: string) => {\n const currentConnector = connectorsByName[name as keyof typeof connectorsByName]\n const activating = currentConnector === activatingConnector\n const connected = currentConnector === connector\n\n return (\n {\n setActivatingConnector(currentConnector)\n activate(connectorsByName[name as keyof typeof connectorsByName] as AbstractConnector)\n }}\n >\n {iconsMap[name as keyof typeof connectorsByName] && (\n \n )}\n\n {name}\n {activating && }\n \n )\n })}\n \n )\n}\n\nexport { Login }\n","import { useWeb3React } from '@web3-react/core'\nimport { Gallery, Login } from '../components'\nimport { useAppState } from '../state'\n\nconst Marketplace = () => {\n const { user } = useAppState()\n const { active } = useWeb3React()\n\n return (\n <>\n {!user && }\n {user && active && }\n \n )\n}\n\nexport { Marketplace }\n","import { BrowserRouter as Router, Switch, Route } from 'react-router-dom'\nimport { Web3ReactProvider } from '@web3-react/core'\nimport { Web3Provider } from '@ethersproject/providers'\n\nimport { Marketplace, Profile, Connect } from './'\nimport { Header, PrivateRoute, TransactionProgress } from '../components'\nimport { Container } from 'theme-ui'\n\nfunction getLibrary(provider: any): Web3Provider {\n const library = new Web3Provider(provider)\n library.pollingInterval = 12000\n return library\n}\n\nconst Root = () => {\n return (\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport { Root }\n","import { utils } from 'ethers'\nimport { Text, Box, Heading, Grid, Divider } from 'theme-ui'\nimport { Token } from '../components'\nimport { useAppState } from '../state'\n\nexport type ProfileProps = {}\n\nconst Profile = () => {\n const { user, tokensOnSale } = useAppState()\n\n if (!user) return null\n\n const { address, balance, ownedTokens } = user\n\n return (\n \n My Profile\n \n \n \n Address\n \n {address}\n \n \n \n Balance\n \n Ξ {balance}\n \n \n \n \n {ownedTokens && ownedTokens.length > 0 ? (\n \n \n My items{' '}\n \n ({ownedTokens.length} item)\n \n \n \n {ownedTokens.map((t, index) => (\n utils.formatUnits(a.id) === utils.formatUnits(t.id))\n }\n onSale\n onTransfer\n token={t}\n key={index}\n />\n ))}\n \n \n ) : (\n ownedTokens && (\n \n You don't own any NFT tokens\n \n )\n )}\n \n \n )\n}\n\nexport { Profile }\n","import { FC, useEffect, useCallback } from 'react'\nimport { useWeb3React, UnsupportedChainIdError } from '@web3-react/core'\nimport {\n NoEthereumProviderError,\n UserRejectedRequestError as UserRejectedRequestErrorInjected,\n} from '@web3-react/injected-connector'\nimport { UserRejectedRequestError as UserRejectedRequestErrorWalletConnect } from '@web3-react/walletconnect-connector'\n\nimport { Container, Text, Heading } from 'theme-ui'\nimport useSWR from 'swr'\nimport { useEagerConnect, useInactiveListener } from '../hooks/web3'\nimport { ETHSCAN_API } from '../utils'\nimport { fetcherETHUSD } from '../utils/fetchers'\nimport { useAppState } from '../state'\n\nfunction getErrorMessage(error: Error) {\n console.log(error)\n\n if (error instanceof NoEthereumProviderError) {\n return 'No Ethereum browser extension detected, install MetaMask on desktop or visit from a dApp browser on mobile.'\n } else if (error instanceof UnsupportedChainIdError) {\n return \"You're connected to an unsupported network. Please connect to Rinkeby network\"\n } else if (\n error instanceof UserRejectedRequestErrorInjected ||\n error instanceof UserRejectedRequestErrorWalletConnect\n ) {\n return 'Please authorize this website to access your Ethereum account.'\n } else {\n console.error(error)\n return 'An unknown error occurred. Check the console for more details.'\n }\n}\n\nconst Connect: FC = ({ children }) => {\n const { activatingConnector } = useAppState()\n const { library, chainId, account, error } = useWeb3React()\n\n const { setContract, setUser } = useAppState(\n useCallback(\n ({ setContract, setUser }) => ({\n setContract,\n setUser,\n }),\n []\n )\n )\n\n useSWR(ETHSCAN_API, fetcherETHUSD)\n\n useEffect(() => {\n if (!chainId || !account || !library) return\n\n const update = async () => {\n try {\n await setContract(library, chainId)\n setUser(account)\n } catch (e) {\n console.log(e)\n }\n }\n\n update()\n }, [chainId, account, library, setContract, setUser])\n\n const triedEager = useEagerConnect()\n useInactiveListener(!triedEager || !!activatingConnector)\n\n return (\n <>\n {error ? (\n \n ❌ Something is not right\n {getErrorMessage(error)}\n \n ) : (\n children\n )}\n \n )\n}\n\nexport { Connect }\n","import { useState, useEffect } from 'react'\nimport { useWeb3React } from '@web3-react/core'\n\nimport { injected } from '../connectors'\n// import { URI_AVAILABLE } from '@web3-react/walletconnect-connector'\n\nexport function useEagerConnect() {\n const { activate, active, connector } = useWeb3React()\n\n const [tried, setTried] = useState(false)\n\n useEffect(() => {\n // console.log(connector)\n\n // if (connector === walletconnect) {\n // walletconnect.on(URI_AVAILABLE, uri => {\n // console.log(uri)\n // })\n // }\n\n if (connector === injected) {\n injected.isAuthorized().then((isAuthorized: boolean) => {\n if (isAuthorized) {\n activate(injected, undefined, true).catch(() => {\n setTried(true)\n })\n } else {\n setTried(true)\n }\n })\n }\n }, [activate, connector])\n\n // if the connection worked, wait until we get confirmation of that to flip the flag\n useEffect(() => {\n if (!tried && active) {\n setTried(true)\n }\n }, [tried, active])\n\n return tried\n}\n\n// type OnChangeProps = {\n// account?: string\n// chainId?: string | number\n// }\n\nexport function useInactiveListener(suppress: boolean = false) {\n const { active, error } = useWeb3React()\n\n useEffect(() => {\n const { ethereum } = window as any\n\n if (ethereum) ethereum.autoRefreshOnNetworkChange = true\n\n // if (ethereum && ethereum.on && !active && !error && !suppress) {\n // const handleConnect = () => {\n // console.log(\"!!!!! Handling 'connect' event\")\n // activate(injected)\n // }\n // const handleChainChanged = (chainId: string | number) => {\n // console.log(\"11111 Handling 'chainChanged' event with payload\", chainId)\n // activate(injected)\n // }\n // const handleAccountsChanged = (accounts: string[]) => {\n // console.log(\"11111 Handling 'accountsChanged' event with payload\", accounts)\n // if (accounts.length > 0) {\n // activate(injected)\n // }\n // }\n // const handleNetworkChanged = (networkId: string | number) => {\n // console.log(\"11111 Handling 'networkChanged' event with payload\", networkId)\n // activate(injected)\n // }\n\n // ethereum.on('connect', handleConnect)\n // ethereum.on('chainChanged', handleChainChanged)\n // ethereum.on('accountsChanged', handleAccountsChanged)\n // ethereum.on('networkChanged', handleNetworkChanged)\n\n // return () => {\n // if (ethereum.removeListener) {\n // ethereum.removeListener('connect', handleConnect)\n // ethereum.removeListener('chainChanged', handleChainChanged)\n // ethereum.removeListener('accountsChanged', handleAccountsChanged)\n // ethereum.removeListener('networkChanged', handleNetworkChanged)\n // }\n // }\n // }\n }, [active, error, suppress])\n}\n","import { SxProp, Theme } from 'theme-ui'\n\nconst defaultButton = {\n border: 0,\n fontFamily: 'body',\n fontWeight: 'normal',\n lineHeight: 'body',\n fontSize: [1, 2],\n paddingX: 3,\n paddingY: 2,\n outline: 'none',\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n transition: 'all 0.1s ease-out',\n '&:hover': {\n opacity: 0.7,\n },\n} as SxProp\n\nexport const Palette = {\n text: '#FFF',\n white: '#fff',\n background: '#333',\n primary: '#111',\n secondary: '#333',\n gray: '#F7F9FA',\n lightGray: '#e0e0e0',\n midGray: '#222',\n lightBlue: '#EFF7FF',\n navy: '#e0e0e0',\n green: 'rgb(99, 255, 203)',\n amber: '#D58408',\n lightGreen: '#AEC',\n red: '#999',\n muted: '#999',\n transparent: 'transparent',\n white20: 'rgba(255, 255, 255, .2)',\n black66: 'rgba(0, 0, 0, .66)',\n}\n\nexport type PaletteKeys = keyof typeof Palette\n\nexport const Sizes = {\n header: 60,\n container: 1020,\n button: [100, 250],\n logo: 60,\n sidemenu: 240,\n chart: 950,\n}\n\nexport default {\n breakpoints: ['40em', '52em', '64em'],\n space: [0, 4, 10, 16, 20, 30, 42, 56, 78, 125, 150],\n fontSizes: [10, 12, 16, 26, 36, 50, 75],\n fonts: {\n body: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n heading: 'inherit',\n },\n layout: {\n container: {\n py: 4,\n px: 3,\n pb: 10,\n },\n },\n sizes: {\n ...Sizes,\n },\n cards: {\n nft: {\n bg: 'background',\n border: '1px solid',\n borderColor: 'muted',\n textAlign: 'left',\n },\n transaction: {\n bg: 'amber',\n position: 'fixed',\n top: 50,\n right: 20,\n p: 4,\n borderRadius: 10,\n },\n },\n links: {\n nav: {\n color: 'white',\n cursor: 'pointer',\n transition: 'all .2s ease-out',\n '&:hover': {\n opacity: 0.5,\n color: 'white',\n },\n },\n openSea: {\n color: 'green',\n fontSize: 1,\n opacity: 0.5,\n '&:after': {\n content: `url(\"data:image/svg+xml,%3Csvg width='8' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.262 0l2.529 2.524L0 6.314 1.685 8l3.79-3.79L8 6.732V0z' fill='rgb(99, 255, 203)' fill-rule='nonzero' /%3E%3C/svg%3E\")`,\n ml: 1,\n },\n transition: 'all .2s ease-out',\n '&:hover': {\n opacity: 1,\n color: 'green',\n },\n },\n owner: {\n color: 'white',\n fontSize: 1,\n opacity: 0.5,\n transition: 'all .2s ease-out',\n '&:hover': {\n opacity: 1,\n color: 'white',\n },\n '&:after': {\n content: `url(\"data:image/svg+xml,%3Csvg width='8' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.262 0l2.529 2.524L0 6.314 1.685 8l3.79-3.79L8 6.732V0z' fill='white' fill-rule='nonzero' /%3E%3C/svg%3E\")`,\n ml: 1,\n },\n },\n },\n buttons: {\n primary: {\n ...defaultButton,\n fontWeight: 'bold',\n minWidth: 'button',\n bg: 'primary',\n color: 'white',\n textAlign: 'center',\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n secondary: {\n cursor: 'pointer',\n variant: 'buttons.primary',\n bg: 'secondary',\n fontWeight: 'body',\n },\n tertiary: {\n variant: 'buttons.secondary',\n color: 'white',\n bg: 'primary',\n },\n quartiary: {\n variant: 'buttons.tertiary',\n bg: 'green',\n color: 'black',\n minWidth: 'auto',\n py: 2,\n },\n filter: {\n variant: 'buttons.tertiary',\n bg: 'lightGreen',\n color: 'black',\n minWidth: 'auto',\n py: 1,\n fontSize: 1,\n '&:disabled': {\n pointerEvents: 'none',\n opacity: 0.5,\n },\n },\n connect: {\n variant: 'buttons.tertiary',\n py: 4,\n px: 5,\n },\n },\n fontWeights: {\n heading: 300,\n body: 400,\n bold: 700,\n },\n lineHeights: {\n body: 1.333333333,\n heading: 1.066666667,\n subheading: 2,\n },\n colors: {\n ...Palette,\n },\n divider: {\n nft: {\n color: 'muted',\n height: 1,\n my: 2,\n },\n },\n forms: {\n input: {\n paddingX: 2,\n paddingY: 2,\n borderRadius: '5px',\n bg: 'white',\n color: 'primary',\n },\n },\n text: {\n body: {\n fontFamily: 'body',\n fontWeight: 'body',\n lineHeight: 'body',\n fontSize: 1,\n },\n heading: {\n py: 2,\n },\n bold: {\n fontWeight: 'bold',\n },\n paragraph: {\n fontFamily: 'body',\n fontWeight: 'body',\n lineHeight: 2,\n fontSize: 2,\n letterSpacing: 0.44,\n color: 'white',\n },\n h1: {\n fontFamily: 'heading',\n lineHeight: 'heading',\n fontWeight: 'heading',\n fontSize: 6,\n letterSpacing: -0.44,\n },\n h2: {\n fontFamily: 'heading',\n lineHeight: 'heading',\n fontWeight: 'heading',\n fontSize: 5,\n letterSpacing: -0.44,\n },\n h3: {\n fontFamily: 'heading',\n lineHeight: 'subheading',\n fontWeight: 'heading',\n fontSize: 3,\n },\n h4: {\n fontFamily: 'heading',\n lineHeight: 'subheading',\n fontWeight: 'bold',\n fontSize: [1, 2],\n },\n h5: {\n fontFamily: 'heading',\n fontWeight: 'bold',\n lineHeight: 1.6,\n fontSize: 0,\n letterSpacing: 1.5,\n },\n },\n styles: {\n root: {\n fontFamily: 'body',\n lineHeight: 'body',\n fontWeight: 'body',\n },\n a: {\n color: 'primary',\n '&:hover': {\n color: 'inherit',\n },\n },\n hr: {\n height: 1,\n opacity: 0.5,\n bg: 'black',\n color: 'black',\n my: 6,\n },\n },\n} as Theme\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { ThemeProvider } from 'theme-ui'\nimport * as Sentry from '@sentry/react'\nimport { Integrations } from '@sentry/tracing'\nimport reportWebVitals from './reportWebVitals'\nimport { Root } from './layout'\nimport theme from './theme'\n\nSentry.init({\n dsn: 'https://06951a956c7a4a6db2f776b1bc697efd@o72860.ingest.sentry.io/5842491',\n integrations: [new Integrations.BrowserTracing()],\n enabled: process.env.NODE_ENV !== 'development',\n\n // Set tracesSampleRate to 1.0 to capture 100%\n // of transactions for performance monitoring.\n // We recommend adjusting this value in production\n tracesSampleRate: 1.0,\n})\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n)\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"sourceRoot":""}