\n \n );\n}\n","import { createActions, createAction } from 'redux-actions';\nimport {\n LOADING_REQUEST,\n LOADING_SUCCESS,\n SET_AUTOPLAY,\n SET_CONNECT_MODAL_VISIBLE,\n SET_DARK_MODE,\n SET_IS_DESKTOP,\n SET_IS_MOBILE,\n SET_IS_TABLET,\n SET_IS_LANDSCAPE_VISIBLE\n} from './reducer';\n\nexport const setAutoplay = createAction(SET_AUTOPLAY);\nexport const setDarkMode = createAction(SET_DARK_MODE);\nexport const setIsMobile = createAction(SET_IS_MOBILE);\nexport const setIsTablet = createAction(SET_IS_TABLET);\nexport const setIsDesktop = createAction(SET_IS_DESKTOP);\nexport const setConnectModalVisible = createAction(SET_CONNECT_MODAL_VISIBLE);\nexport const setIsLandscapeVisible = createAction(SET_IS_LANDSCAPE_VISIBLE);\n\nconst { loadingRequest, loadingSuccess } = createActions({\n [LOADING_REQUEST]: () => { },\n [LOADING_SUCCESS]: () => { }\n});\n\nexport const loadApp = () => dispatch => {\n dispatch(loadingRequest());\n\n setTimeout(() => dispatch(loadingSuccess()), 4500)\n};\n","\nimport React from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {getAccountSymbol} from '../../../services/web3';\nimport Header from './Header';\nimport {setConnectModalVisible} from '../../../store/modules/App/actions';\n\nexport default function HeaderContainer(props) {\n /*\n Use container to interact with external data sources (store, api, etc.)\n */\n const dispatch = useDispatch();\n\n const {isMobile, isTablet} = useSelector(state => state.app);\n const isConnected = useSelector(state => state.user?.connectWallet.isConnect);\n const address = useSelector(state => state.user?.userAccount.accounts ? state.user.userAccount.accounts[0] : '');\n const balance = useSelector(state => state.user?.userAccount.balance ?? 0);\n const chainId = useSelector(state => state.user?.chainId);\n const symbol = getAccountSymbol(chainId);\n const onConnectClick = () => dispatch(setConnectModalVisible(true));\n\n\n return (\n
\n )\n}\n","export const getAccountSymbol = () => {\n return 'ETH';\n};\n\nexport const etherscanApiUrl = chainId => {\n const address = {};\n return address[chainId] || address['0x1'];\n};\n\nexport const getProvider = chainId => {\n const address = {};\n return address[chainId] || address['0x1'];\n};\n\nexport const getBlockchain = () => {\n return 'ethereum';\n};\n","import Header from './Header';\nimport HeaderContainer from './HeaderContainer';\n\nexport {HeaderContainer};\nexport default Header;\n","import React, {useState} from 'react';\nimport Footer from './Footer';\nimport {HeaderContainer} from './Header';\nimport cn from 'classnames';\n\nimport style from './Layout.module.scss';\n\nexport default function PageLayout(props) {\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n
\n
setIsOpen(false)}/>\n setIsOpen(!isOpen)}\n />\n {props.children} \n \n
\n )\n}\n","export default __webpack_public_path__ + \"static/media/mwars-coin.6dd70ee4.png\";","export default __webpack_public_path__ + \"static/media/game-icon.1afccebc.png\";","export default __webpack_public_path__ + \"static/media/section1-bg.39455d4c.png\";","export default __webpack_public_path__ + \"static/media/i-stack-1.3b3c50d8.svg\";","export default __webpack_public_path__ + \"static/media/i-stack-2.0d934c70.svg\";","export default __webpack_public_path__ + \"static/media/i-stack-3.0d934c70.svg\";","export default __webpack_public_path__ + \"static/media/i-stack-4.3b3c50d8.svg\";","import React from 'react';\nimport cn from 'classnames';\n\nimport Button from '../../../components/Button';\n\nimport mWarsCoin from '../../../assets/img/home/mwars-coin.png';\nimport gameIcon from '../../../assets/img/home/game-icon.png';\nimport bnbIcon from './assets/bnb.png';\nimport bgImage from './assets/section1-bg.png';\nimport stackIcon1 from './assets/i-stack-1.svg';\nimport stackIcon2 from './assets/i-stack-2.svg';\nimport stackIcon3 from './assets/i-stack-3.svg';\nimport stackIcon4 from './assets/i-stack-4.svg';\nimport style from './SectionOne.module.scss';\nimport { useHistory } from 'react-router-dom';\n\nexport default function SectionOne() {\n const history = useHistory();\n return (\n
\n \n
\n \n
Welcome to MemeWars \n \n \n The first ever DeFi game that allows players to strategically stake, defend and attack enemy\n staking pools. Full game launching on Dec 23rd, 2021.\n
\n \n history.push('/game')}\n wrapperClass={cn(style.comingBtn, style.ido)}\n >\n \n Play Game \n \n\n {\n window.open('https://medium.com/@MemeWars/introducing-the-memewars-gamepaper-learn-how-to-play-stake-earn-with-memewars-3804c2891c9b', '_blank')\n }}\n >\n \n Read Game Paper \n \n \n\n \n Exclusively on
\n \n Binance Smart Chain
\n \n \n\n
\n
\n \n )\n}\n","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/token.f0637ca0.svg\";","export default __webpack_public_path__ + \"static/media/attack.e6533fe3.svg\";","export default __webpack_public_path__ + \"static/media/artboard.64b4a4f9.svg\";","export default __webpack_public_path__ + \"static/media/Landingpage Staking Coins.ee9c5310.mp4\";","export default __webpack_public_path__ + \"static/media/Landingpage Voting.4d0ca4f3.mp4\";","export default __webpack_public_path__ + \"static/media/Landingpage Victory.e51d9d42.mp4\";","import React from 'react';\nimport cn from 'classnames';\n\nimport tokenIcon from './assets/token.svg';\nimport atackIcon from './assets/attack.svg';\nimport artboardIcon from './assets/artboard.svg';\nimport firstVideo from './assets/Landingpage Staking Coins.mp4';\nimport secondVideo from './assets/Landingpage Voting.mp4';\nimport thirdVideo from './assets/Landingpage Victory.mp4';\n\nimport style from './SectionTwo.module.scss';\n\nexport default function SectionTwo() {\n return (\n
\n \n
\n \n
\n\n
\n
\n
Choose & Stake in your team \n
\n
\n
Stake MWAR tokens into a team and sub-pool to gain ownership and voting\n rights in that pool.You can stake in one of three teams, and one of three sub-pools in each team\n (attack, defense & production).\n
\n
\n
\n\n \n
\n
\n
Vote & Wage War \n
\n
\n
If your team is chosen to declare war by the random on-chain lottery, you\n and your team members can vote on which of the other two nations to attack.
\n
\n\n
\n
\n\n \n
\n\n
\n
\n
Loot Enemy Staking Rewards \n
\n
\n
After waging war, your team will take loot from the enemy team and\n distribute it amongst your stakers proportional to their ownership in your team’s pool.
\n
\n
\n \n )\n}\n","export default __webpack_public_path__ + \"static/media/section3_2.17552637.png\";","export default __webpack_public_path__ + \"static/media/section3_3.5c4a8ff0.png\";","export default __webpack_public_path__ + \"static/media/section3_4.54cf959a.png\";","export default __webpack_public_path__ + \"static/media/section3_5.68c39d1e.png\";","import secondItemLogo from './assets/section3_2.png';\nimport thirdItemLogo from './assets/section3_3.png';\nimport fourthItemLogo from './assets/section3_4.png';\nimport fifthItemLogo from './assets/section3_5.png';\n\nexport const FEATURE_LIST = [\n {\n image: `${fourthItemLogo}`,\n heading: 'MemePad Buyback Program',\n text: '2% of all MWAR transactions are used to automatically buyback MEPAD tokens.'\n },\n {\n image: `${fifthItemLogo}`,\n heading: '1% Liquidity Fee',\n text: 'Each non-whitelisted transaction takes a 1% transaction fee and adds it directly to PancakeSwap Liquidity.'\n },\n {\n image: `${secondItemLogo}`,\n heading: 'Staking Burns Tokens',\n text: 'Staking in any team of the game burns 100% of tokens, creating significant deflation.'\n },\n {\n image: `${thirdItemLogo}`,\n heading: 'Earn Rewards Forever',\n text: 'In return for your burned stake in the game, you own a permanent share of your teams earnings - forever!'\n }\n];\n","export default __webpack_public_path__ + \"static/media/Group 8.86c446e7.png\";","export default __webpack_public_path__ + \"static/media/mempad-logo.f0229759.svg\";","import React, { useEffect } from 'react';\nimport {FEATURE_LIST} from './constants';\nimport {Col, Row,Image, Badge} from 'antd';\n// import astronautIcon from '../../../assets/img/home/astronaut.png';\nimport chartCircleIcon from '../../../assets/img/home/Group 8.png';\nimport lottie from 'lottie-web';\nimport loadingJson from './Astronaut_1';\nimport logoIcon from '../../../assets/img/home/mempad-logo.svg';\nimport style from './SectionThree.module.scss';\n\nexport default function SectionThree() {\n useEffect(() => {\n const id = 'Astro'\n if (!document.getElementById(id).hasChildNodes()) {\n\n lottie.loadAnimation({\n container: document.getElementById(id),\n animationData: loadingJson, // the dom element that will contain the animation\n renderer: 'svg',\n loop: true,\n autoplay: true,\n // the path to the animation json\n });\n lottie.destroy('Astro')\n }\n }, []);\n\n return (\n
\n \n \n
\n
\n
\n
MemePad will be hosting the MemeWars IDO on November 4th, 2021.
\n
Learn more on how to participate on the MemePad Website.
\n
\n window.open('https://memepad.co', '_blank').focus()}>Join IDO \n
\n
\n
\n
\n\n \n \n\n \n
Tokenomics \n
Below is the tokenomics of the MemeWars game economy.
\n
\n \n \n \n \n \n \n
Total Initial Supply: 250M
\n
Memepad Stacking Program: 20%
\n
Initial Liquidity: 20%
\n
MemePad IDO: 20%
\n
Marketing: 20%
\n
Team: 20%
\n
\n \n \n \n
50,000,000
\n
50,000,000
\n
50,000,000
\n
50,000,000
\n
50,000,000
\n
\n \n {/* \n Memepad Stacking Program: 25%250,000,000
\n Marketing: 25%250,000,000
\n P2E Ecosystem 20%200,000,000
\n Team 20%200,000,000
\n Initial Liquidity: 5%50,000,000
\n MemePad Pre-Sale: 5%50,000,000
\n */}\n
\n\n \n
Wars Fueled by MWAR Token \n
\n {FEATURE_LIST.map((item, i) => (\n \n \n {item.heading} \n {item.text}
\n \n ))}\n \n
\n \n )\n}\n","export default __webpack_public_path__ + \"static/media/mac.cfc2a623.svg\";","export default __webpack_public_path__ + \"static/media/android.21ba8446.svg\";","export default __webpack_public_path__ + \"static/media/windows.e53456bb.svg\";","export default __webpack_public_path__ + \"static/media/iphone.462ed5ce.png\";","import React from 'react';\nimport {Col, Row} from 'antd';\nimport macIcon from './assets/mac.svg';\nimport androidIcon from './assets/android.svg';\nimport webIcon from './assets/web.png';\nimport windowsIcon from './assets/windows.svg';\nimport huaweiIcon from './assets/huawei.png';\nimport iphoneImage from './assets/iphone.png';\nimport style from './SectionFour.module.scss';\n\nexport default function SectionFour() {\n return (\n
\n \n \n \n \n \n Mobile Friendly Gameplay for all Devices. \n The MemeWars web app will be available on both desktop and mobile devices,\n optimized for all screen sizes and compatible with the leading crypto wallets like TrustWallet,\n Metamask, Coinbase Wallet and more.
\n \n \n
\n \n )\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAABZCAYAAABVC4ivAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACNdJREFUeNrsXXlsFkUUn7YIPbgpSMUgV1C5jBqKBRGURIgKEhPBvzhSTAgmghcShCAaE6OGOxrlMkYkRmOMUQQSDChFSUEQ5KqUEqAcRaAUaSlQ1vfyzZes2ze7Mzuz+03r90teKO+befvmt293zp3JcByHWYx2IK+BDAEZB1Ln+i0HZAPIDpD3QC5bWwokOUXSNeD350BOOQnUCdLU8t9P8/Q614tMMmO+p7kgL4CUgHT2SbcYZD1IN/7/E4J0J/m/BTz9Eh+beL3fQGaA5DXHSM4HmQ9yhkfeKz5p1zuNUSZIW0akXe9j+2We5izIApBOcZQ/6gtkg7wJctlFwhc+6dc6NFRIdrgdmZuIfr0FktNUSZ4KUukpfA1IS0H6OY4YqiQjXhfkacn9cAP9LG5KJPcC2SAo+CRBnqGOP8KQ7HC7VL7JgvQbQfrYTvIUV43vxQFBnhYgVRGRfA4kS5D3oCBPHX8KrWxdrARZy9uvFGYJ9MsDWho66MLtq/iTDbIGZJVNrYvOIDsCImqvIG9/Rw5hIzmJ/oL8ewPyYbm6pDqSB4LsASkKSDffJ/rjwCcC/byAfEW8fANTFclD+fsrCOWC/CMdeehGssOvR9mokMiL5RwWdyQP5722bIm0ol7YBzH3Nt/36V0GAcu5HeSRuCK5UCF6sKWRR9goctRgIpIdfl2vjdaST2QShVFHcm+QbQrpvwK5GuJdGBXeIHT/gHytYAPL30floiok4+DOVslXRBJUMwgHfZ5IEclPugadwlbA2ZyHvChI3gRyp0L6UyC/EPrnUzy6O43Q/cz9lQXeqI0m38mtQDY76lhO2GrjhAflW1i0IWytCGFnM+fHl8MWEvehFW9J/ID3ROFuf0PoWoLM8cxwyKBaoJ8M0l7RVg73w4t3QcoU7GSAdOD81PsmtHz6qVkgM01BmuQ0yWnIQVTxDeMdjzD4myWm6qk2aqeQNmtAviX040HahrR5gVfmXmAbPj+kzXLeSAis+NBpnTUM2J4eY9jmdV6Le1EvaCnIoh2/gV7/Hzdpk3pdzNV8Or4kdA9p2jyhqJfFEEn/VTA36J2MXcaZmhfZQ+gKNW06inpZDCZ0v2vanOkdevCSPF1xbILqNBwm9A9YWic9SOgO+3R+ZMc2pvuRPEvT6UMg1wj9QEtJpvy6JggU1WgmSR4Bcpemccq5O0B6WUoytqAKJMuhgh7MNcDvJrnYgNNU3/8ei9vjmdw/mXKoothLMjaDxhowXEHobI1iP/8qDNgdl2xeJkkexdRHsygcFzySNqOPZDlUgXw+5iZ5tCGHzxC67paT3F2yHGEw2hvJusDu9HlC381ykin/zvNuty5GJUnG2nWAAYNVjB6Mv91ykrsQulpBwIRpInbNFPR6wuAiocsVFMI2knMJ/QVD9gdnGuwoXCJ0HfmAic3ACqqDZHlCRTOS3NeQsWpBAbIsJzlL0LKqNmS/L5Lc05CxGkLXljUNtJUsTxj0zDRU6TFBxHaMsHJiBt/3HSXLEwYDcGbkKEsswm7QMIQD6kcEtTSO+d5k4Yclkz5S2MU7EzdD2s7g9usE4xe44KVeM/CqcGYkOQWlQ/JtLDF7ISpEgybJopuU4fo9LMlZ3L9bxO/YLb6h+3Sn113EgPRsdZrkNMmydjIs5yAjan6w0igx0LrACmIpyDKP/lGW+ChGt+LD9QxjiN9w+WpvAxUfLufd6vntRZaYRrquWfGdxwL0N9T17Ufo8pjiqnTF9nCRoQ4PtaAbeTEx4dAZH4d9hh47KpouGrJ9TlGviouS5QmDfUhyhSFj1NNg724qwX6aGtiqQJLLIiS5WvNdHwcaIia5DEneH2H//xIzN5oVFS4x8TCtCexHkksjJNnUDEOUqOJ+RkEytqhKkWScNPzTRC3K6BmGc02AZC9ymZmdC5DXs8nG9hYDBvMFjlVaTnKlIGA6GbC9xd2j2WTI4a6E7oTlJJ8kdAWGbG90k7zFUHOrB6Ert5zko5LlUAVW+D+5Scau43cGDFNTWccsJ/mYZDlUgXze8A6AmNgO5m5Ch8tpb1lK8C3unxcmJpdXJ/9wk4zfFx/XNEytkDxjcTTjq+ysZDlUcJzz2YhkxBIDJFMr9fdbSjLlV44Bkv/Do5fkj5n6d89utBc4uNtSkncLAkVnhWsd51FIMi7lX6rp+P2ETrdXmaGol0WppP8qWMY8n3RE8R3fZtZ4Ke7/+js+6otUTPAw0/silbL5FNP7IpXCRKb3RWqNIBLXaVSkjWymlwTEgPRsdZrkNMlpSEJmDyKsWF7iAx6qexB5d6jCim8aC7cH0WeEfhILtwfRKtZ4JT3uFPaMYrMSF48vYkHLbCV309oUYqepFendtOR3OKzn7d7tihHzNKG7ArIwxBP3l6LeDwu4H16MV7Sznben602+k0cztQ3q8PEbTuhXpvgVSY024nfQKp/CVTKFbx9VSMbJxpGM3gVAhGkCBzekiODvQU4TepVdF69xHmqjal2UM7XtbScwegnU2yki+R1C1xrkWQUbWP6jUTfhSgWvAQo47EntPoAn1+yKmeBd/LpeFAvGRUQEqw92xbAT+DFB/hEx7588QmMn8FrB3suR72mPp4cVsuApf5wvo7Z52MZtxIESRu/7jH71CMh7ipfz19BXN3Q6Q4nlpzP0E+T/Q+J0hnwbzhnBZVjDmP9E7H2CMdoDIB9GHMUfgRwk9OjPIJ98OBE6lNFDt7FHsvfEnKuCqDgoyJPFT7aJ6sScTEHeQz7vX2tPzEF8yhJfuP5I/HYvH2vwoiFEb0sWaJdajjCF0XORuOIHP+hfa9SLiE8xO6lwitlsw5E82+cUsyvEKWZTnWZ0Hp/foYRrDJG8WvI8vmqQhU35PD634AmO81zn873qk/ZzTZLXSZwsWcVvfrM4WZKK7Bm8yTfIJ91iD3FHBOmOeNIt8rGJ19vJr986znKn8rTfgoDfJ0qc9pvscWK6Cbae9mv7bDXOysxmia2Bx7LG51bjysmdLHFudY2thfhXgAEA1SNEwTZzYtMAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import React from 'react';\nimport {Col, Row} from 'antd';\nimport pancakeIcon from '../../../assets/img/home/pancake.png'\nimport telegramIcon from '../../../assets/img/social/telegram.svg';\nimport cn from 'classnames';\n\nimport style from './SectionFive.module.scss';\n\nexport default function SectionFive() {\n return (\n
\n \n \n \n Are you Ready for Battle? \n\n \n \n \n
\n \n )\n}\n","export default __webpack_public_path__ + \"static/media/doge.2718afb8.png\";","export default __webpack_public_path__ + \"static/media/wojak.7ce64cb9.png\";","export default __webpack_public_path__ + \"static/media/pepe.31c12718.png\";","export default __webpack_public_path__ + \"static/media/doge_small.34f99562.png\";","export default __webpack_public_path__ + \"static/media/pepe_small.529dfaa5.png\";","import dogeImage from '../assets/img/maps/doge.png';\nimport wojakImg from '../assets/img/maps/wojak.png';\nimport pepeImg from '../assets/img/maps/pepe.png';\n\nimport dogeImageSmall from '../assets/img/maps/doge_small.png';\nimport wojakImgSmall from '../assets/img/maps/wojak_small.png';\nimport pepeImgSmall from '../assets/img/maps/pepe_small.png';\n\nexport const CHAIN_MAINNET = 56;\nexport const CHAIN_TESTNET = 97;\n\nexport const RPC_URL = {\n 56: 'https://bsc-dataseed.binance.org/',\n 97: 'https://data-seed-prebsc-1-s1.binance.org:8545/'\n};\n\nexport const TEAMS = {\n DOGE: {\n ID : 0,\n CODE: 'doge',\n NAME_NATION: 'Doge Nation',\n IMG : dogeImage,\n IMG_SMALL : dogeImageSmall\n },\n PEPE: {\n ID : 1,\n CODE: 'pepe',\n NAME_NATION: 'Pepe Nation',\n IMG : pepeImg,\n IMG_SMALL : pepeImgSmall\n },\n WOJAK: {\n ID : 2,\n CODE: 'wojak',\n NAME_NATION: 'Wojak Nation',\n IMG : wojakImg,\n IMG_SMALL : wojakImgSmall\n }\n}\n\n\nexport const STAKING = 'STAKING';\nexport const PRODUCTION = 'PRODUCTION';\nexport const RANDOM_WAR = 'RANDOM_WAR';\nexport const VOTING = 'VOTING';\nexport const WAR_TIME = 'WAR_TIME';\nexport const RESULT = 'RESULT';\n\nexport const STAGE_INFO = {\n STAKING: {\n CODE: STAKING,\n INDEX: 0,\n STAGE_NAMES : 'STAKING'\n },\n PRODUCTION: {\n CODE: PRODUCTION,\n INDEX: 1,\n STAGE_NAMES : 'PRODUCTION'\n },\n RANDOM_WAR: {\n CODE: RANDOM_WAR,\n INDEX: 2,\n STAGE_NAMES : 'RANDOM WAR'\n },\n VOTING: {\n CODE: VOTING,\n INDEX: 3,\n STAGE_NAMES : 'VOTING'\n },\n WAR_TIME: {\n CODE: WAR_TIME,\n INDEX: 4,\n STAGE_NAMES : 'WAR'\n },\n RESULT: {\n CODE: RESULT,\n INDEX: 5,\n STAGE_NAMES : 'RESULT'\n }\n}\n\n\nexport const TEAMS_LIST = Object.values(TEAMS);\nexport const STAGE_INFO_LIST = Object.values(STAGE_INFO);","export default \"data:image/png;base64,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\"","import axios from 'axios';\n\nconst API_ROOT = process.env.REACT_APP_API_ROOT;\n/* eslint-disable dot-notation */\n\naxios.defaults.baseURL = API_ROOT;\naxios.defaults.timeout = 120000;\naxios.defaults.headers.common['Accept'] = 'application/json';\naxios.interceptors.request.use(\n config => config,\n error => Promise.reject(error)\n);\n\naxios.interceptors.response.use(\n response => response,\n error => Promise.reject(error.response || error.request || error.message)\n);\n\nconst http = {\n setAuthorizationHeader(accessToken) {\n axios.defaults.headers.Authorization = accessToken;\n },\n request(config = {}) {\n return axios.request(config);\n },\n get(url, config = {}) {\n return axios.get(url, config);\n },\n post(url, data = {}, config = {}) {\n return axios.post(url, data, config);\n },\n put(url, data = {}, config = {}) {\n return axios.put(url, data, config);\n },\n patch(url, data = {}, config = {}) {\n return axios.patch(url, data, config);\n },\n delete(url, config = {}) {\n return axios.delete(url, config);\n }\n};\n\nexport default http;\n","import http from '../../../services/http';\n\nexport default class User {\n static fetchWalletInfo(address) {\n // TODO: UNCOMMENT WHEN API IS READY\n return http.get(`/wallet/${address}`);\n }\n\n static sendVerifyEmail(body) {\n return http.post('/wallet/send-verify-email', body);\n }\n\n static checkVerifyEmail(body) {\n return http.post('/wallet/check-verify-email', body);\n }\n\n static registerNotify(body) {\n return http.post('/wallet/notify', body);\n }\n}\n","const networkList = process.env.REACT_APP_ALLOWED_NETWORKS && process.env.REACT_APP_ALLOWED_NETWORKS.split(',').map(item => item.trim());\nexport const ALLOWED_NETWORKS = networkList && networkList.length ? networkList : ['0x38'];\n\nexport const FAKE_NOTIFICATION_LIST = [\n {\n picture: '',\n title: 'Title Lorem Ipsum',\n text: '@fuadasa2 has followed you'\n },\n {\n picture: '',\n title: 'Title Lorem Ipsum',\n text: '@fuadasa2 has followed you'\n },\n {\n picture: '',\n title: 'Title Lorem Ipsum',\n text: '@fuadasa2 has followed you'\n }\n]","\nimport Logger from 'js-logger';\nimport { get } from 'lodash';\n\nexport const CONTRACT_TIMEOUT = 5;\nexport const ERROR_CODE_TIME_OUT = 408;\nexport const MESSAGE_TIMEOUT_MINT = 'There was a timeout while attempting to mint your transaction.'\n\nexport const getUserInfo = async (presenterContract, address, teamIndex) => {\n return presenterContract.methods.users(address, teamIndex).call();\n};\n\nexport const getTeamInfo = async (presenterContract, teamIndex) => {\n return presenterContract.methods.teams(teamIndex).call();\n};\n\nexport const getCycleIndex = async (presentContract) => {\n return presentContract.methods.cycleIndex().call();\n};\n\nexport const getCycleInfo = async (presentContract, cycleIndex) => {\n return presentContract.methods.cycles(cycleIndex).call();\n};\n\nexport const getVoteInfo = async (presentContract, cycleIndex, teamIndex, address) => {\n return presentContract.methods.votes(cycleIndex, teamIndex, address).call();\n};\n\nexport const getStageDurationByIndex = async (presentContract, stageIndex) => {\n return presentContract.methods.getStageDurationByIndex(stageIndex).call();\n};\n\nexport const deposit = (presentContract, teamIndex, poolIndex, amount, address, cb) => {\n return presentContract.methods.deposit(teamIndex, poolIndex, amount).send({ from: address })\n .on('error', function (error) {\n Logger.log(`deposit error ${error}`);\n cb(null, { ...error, description: error.message });\n })\n .on('transactionHash', (tx) => {\n waitForReceipt(tx, cb, 0);\n return tx.transactionHash;\n });\n};\n\nexport const getPendingReward = async (presentContract, teamIndex, address) => {\n return presentContract.methods.getPendingReward(address, teamIndex).call();\n};\n\nexport const claimReward = async (presentContract, teamIndex, address, cb) => {\n return presentContract.methods.claimReward(teamIndex)\n .send({ from: address })\n .on('error', function (error) {\n Logger.log(`claimReward error ${error}`);\n cb(null, { ...error, description: error.message });\n })\n .on('transactionHash', (tx) => {\n waitForReceipt(tx, cb, 0);\n return tx.transactionHash;\n });\n};\n\nexport const getProductionBySecond = async (presentContract, teamIndex) => {\n return presentContract.methods.getProductionBySecond(teamIndex).call();\n};\n\nexport const castVoteForVictimTeam = async (presentContract, teamIndex, address) => {\n return presentContract.methods.castVoteForVictimTeam(teamIndex).send({ from: address })\n .on('transactionHash', (tx) => {\n return tx.transactionHash;\n });\n};\n\nexport const castVoteForVictimTeamCallback = async (presentContract, teamIndex, address, cb) => {\n return presentContract.methods.castVoteForVictimTeam(teamIndex).send({ from: address })\n .on('error', function (error) {\n Logger.log(`castVoteForVictimTeamCallback error ${error}`);\n cb(null, { ...error, description: error.message });\n })\n .on('transactionHash', (tx) => {\n waitForReceipt(tx, cb, 0);\n return tx.transactionHash;\n });\n};\n\nexport const startProduction = (presentContract, address) => {\n return presentContract.methods.startProduction().send({ from: address })\n .on('transactionHash', (tx) => {\n return tx.transactionHash;\n });\n};\n\nexport const startRandomWarTeam = (presentContract, address) => {\n return presentContract.methods.startRandomWarTeam().send({ from: address })\n .on('transactionHash', (tx) => {\n return tx.transactionHash;\n });\n};\n\nexport const randomWarTeamVRF = (presentContract, address) => {\n return presentContract.methods.randomWarTeamVRF().send({ from: address })\n .on('transactionHash', (tx) => {\n return tx.transactionHash;\n });\n};\n\nexport const startVotingForVictimTeam = (presentContract, address) => {\n return presentContract.methods.startVotingForVictimTeam().send({ from: address })\n .on('transactionHash', (tx) => {\n return tx.transactionHash;\n });\n};\n\nexport const startWarTimeStage = (presentContract, address) => {\n return presentContract.methods.startWarTimeStage().send({ from: address })\n .on('transactionHash', (tx) => {\n return tx.transactionHash;\n });\n};\n\nexport const startResultStage = (presentContract, address) => {\n return presentContract.methods.startResultStage().send({ from: address })\n .on('transactionHash', (tx) => {\n return tx.transactionHash;\n });\n};\n\nexport const startStaking = (presentContract, duration, amount, address) => {\n return presentContract.methods.startStaking(duration, amount).send({ from: address })\n .on('transactionHash', (tx) => {\n return tx.transactionHash;\n });\n};\n\nexport const SetWarTeam = (presentContract, teamIndex, address) => {\n return presentContract.methods.SetWarTeam(teamIndex).send({ from: address })\n .on('transactionHash', (tx) => {\n return tx.transactionHash;\n })\n};\n\nexport const approve = (warTokenContract, amount, senderAddress, address, cb) => {\n return warTokenContract.methods.approve(senderAddress, amount).send({ from: address })\n .on('error', function (error) {\n Logger.log(`approve error ${error}`);\n cb(null, { ...error, description: error.message });\n })\n .on('transactionHash', (tx) => {\n waitForReceipt(tx, cb, 0);\n return tx.transactionHash;\n })\n}\n\nexport const validateStageChangeable = (presentContract, stageIndex) => {\n return presentContract.methods.validateStageChangeable(stageIndex).call();\n}\n\nexport const getAllowance = async (presentContract, accountAddress, spenderAddress) => {\n return presentContract.methods.allowance(accountAddress, spenderAddress).call();\n}\n\n\nexport const waitForReceipt = (hash, cb, timeout) => {\n window.web3 ? window.web3.eth.getTransactionReceipt(hash, function (error, receipt) {\n if (timeout >= (CONTRACT_TIMEOUT * 60 * 1000)) {\n return cb({ code: ERROR_CODE_TIME_OUT, description: MESSAGE_TIMEOUT_MINT });\n }\n if (error) {\n Logger.log(`waitForReceipt ${error}`);\n cb({ ...error, description: error.message });\n }\n if (receipt !== null) {\n Logger.log(`waitForReceipt receipt ${receipt} ${error}`);\n const status = get(receipt, 'status', false);\n // Transaction went through\n if (cb) {\n status ? cb(receipt) : cb(null, null);\n }\n } else {\n // Try again in 1 second\n window.setTimeout(function () {\n waitForReceipt(hash, cb, (timeout + 1000));\n }, 1000);\n }\n }) : '';\n}","import Web3 from 'web3';\nimport { filter, get } from 'lodash';\nimport { createAction, createActions } from 'redux-actions';\nimport detectEthereumProvider from '@metamask/detect-provider';\nimport WalletConnectProvider from '@walletconnect/web3-provider';\nimport Logger from 'js-logger';\nimport BigNumber from 'bignumber.js';\nimport { message } from 'antd';\n\nimport User from './api';\nimport {ALLOWED_NETWORKS} from './constants';\nimport WarTokenABI from '../../../abi/warTokenAbi';\nimport PresenterABI from '../../../abi/presenterAbi';\nimport { contractAddresses, fromWeiDecimals } from '../../../utils';\nimport { getUserInfo } from '../../../utils/callHelpers';\nimport { setConnectModalVisible } from '../App/actions';\n\nexport const setWalletInfo = createAction('SET_WALLET_INFO');\nexport const setAppliedTermsOfService = createAction('SET_APPLIED_TERMS_OF_SERVICE');\nexport const setChainId = createAction('SET_NETWORK');\nexport const setWrongNetwork = createAction('SET_WRONG_NETWORK');\nexport const setUserAccounts = createAction('SET_USER_ACCOUNTS');\nexport const setBalance = createAction('SET_BALANCE');\nexport const setUserInfo = createAction('SET_USER_INFO');\n\n/* CREATE TRANSACTION LOG */\nexport const storeTransactionLog = createAction('STORE_TRANSACTION_LOG');\n\n/* CLEAR TRANSACTION LOGS */\nexport const clearTransactionLogs = createAction('CLEAR_TRANSACTION_LOGS');\n\nconst { fetchWalletInfoRequest, fetchWalletInfoSuccess, fetchWalletInfoFail } = createActions({\n FETCH_WALLET_INFO_REQUEST: () => { },\n FETCH_WALLET_INFO_SUCCESS: data => ({ data }),\n FETCH_WALLET_INFO_FAIL: error => ({ error })\n});\n\nexport const fetchWalletInfo = address => (dispatch) => {\n dispatch(fetchWalletInfoRequest());\n\n return User.fetchWalletInfo(address)\n .then(({ data }) => {\n dispatch(fetchWalletInfoSuccess(data))\n // dispatch(setWalletInfo(result.data))\n\n return data\n })\n .catch(err => {\n dispatch(fetchWalletInfoFail(err));\n\n return err;\n });\n};\n\nconst { sendVerifyEmailRequest, sendVerifyEmailSuccess, sendVerifyEmailFail } = createActions({\n SEND_VERIFY_EMAIL_REQUEST: () => { },\n SEND_VERIFY_EMAIL_SUCCESS: data => ({ data }),\n SEND_VERIFY_EMAIL_FAIL: error => ({ error })\n});\n\nexport const sendVerifyEmail = body => dispatch => {\n dispatch(sendVerifyEmailRequest());\n return User.sendVerifyEmail(body)\n .then(({ data }) => {\n message.success('Verify Email Sent! Please check your email.');\n dispatch(sendVerifyEmailSuccess(data));\n })\n .catch(error => {\n message.error(error?.data?.message);\n sendVerifyEmailFail(error);\n })\n}\n\nexport const checkVerifyEmail = body => dispatch => {\n return User.checkVerifyEmail(body)\n .then(() => {\n dispatch(fetchWalletInfo(body.address))\n return true;\n })\n .catch(error => error)\n}\n\nexport const registerNotify = body => dispatch => {\n return User.registerNotify(body)\n .then(() => {\n dispatch(fetchWalletInfo(body.address))\n return true;\n })\n .catch(error => {\n message.error(error?.data?.message);\n return error?.data?.message;\n })\n}\n\nconst { connectWalletRequest, connectWalletSuccess, connectWalletFail } = createActions({\n CONNECT_WALLET_REQUEST: () => { },\n CONNECT_WALLET_SUCCESS: data => ({ data }),\n CONNECT_WALLET_FAIL: error => ({ error })\n});\n\nexport const setNetwork = (chainId) => (dispatch) => {\n dispatch(setChainId(chainId));\n dispatch(validateNetwork(chainId));\n};\n\nexport const validateNetwork = (chainId) => (dispatch, getState) => {\n const {wrongNetwork} = getState().user;\n if (chainId) {\n const hexChainId = `${chainId.toString().slice(0,2) === '0x' ? '' : '0x'}${chainId.toString(16)}`;\n const isValid = ALLOWED_NETWORKS.indexOf(hexChainId) !== -1;\n\n if (!isValid) {\n dispatch(setWrongNetwork(true));\n } else if (isValid) {\n dispatch(setWrongNetwork(false));\n }\n } else if (wrongNetwork) {\n dispatch(setWrongNetwork(false));\n }\n};\n\nexport const connectMetaMask = (isMobile, needLoad = true) => async dispatch => {\n needLoad && dispatch(connectWalletRequest());\n\n // Check metamask is install or not\n if (window.ethereum) {\n if (window.ethereum.isMetaMask) {\n window.ethereum.autoRefreshOnNetworkChange = false;\n }\n\n const provider = await detectEthereumProvider();\n // If the provider returned by detectEthereumProvider is not the same as\n // window.ethereum, something is overwriting it, perhaps another wallet.\n if (provider !== window.ethereum) {\n window.web3 = new Web3(provider);\n } else {\n window.web3 = new Web3(window.ethereum);\n }\n\n window.ethereum.on('accountsChanged', async (accounts) => {\n // const chainId = window.ethereum.chainId;\n // const hexChainId = window.web3.utils.toHex(chainId);\n\n // if (ALLOWED_NETWORKS.indexOf(hexChainId) === -1) {\n // await clearUserInfo(dispatch);\n // dispatch(setWrongNetwork(true));\n // return;\n // }else {\n // dispatch(setWrongNetwork(false));\n // }\n \n // await clearUserInfo(dispatch);\n \n if (accounts || accounts[0]) {\n const chainId = window.ethereum.chainId;\n const accounts = await window.web3.eth.getAccounts();\n const balance = await window.web3.eth.getBalance(accounts[0]);\n\n const warTokenContract = new window.web3.eth.Contract(WarTokenABI, contractAddresses(chainId)['WARTOKEN']);\n const tokenBalance = await warTokenContract.methods.balanceOf(accounts[0]).call();\n dispatch(setUserAccounts({ accounts, balance, chainId, tokenBalance: fromWeiDecimals(tokenBalance) }));\n\n const presenterContract = new window.web3.eth.Contract(PresenterABI, contractAddresses(chainId)['PRESENTER']);\n const dogeInfo = await getUserInfo(presenterContract, accounts[0], 0);\n const pepeInfo = await getUserInfo(presenterContract, accounts[0], 1);\n const wojakInfo = await getUserInfo(presenterContract, accounts[0], 2);\n\n dispatch(setUserInfo({dogeInfo, pepeInfo, wojakInfo}));\n dispatch(fetchWalletInfo(accounts[0]));\n } else {\n dispatch(setUserAccounts({ accounts }));\n // dispatch(disconnect());\n }\n });\n\n window.ethereum.on('chainChanged', async (chainId) => {\n window.web3 = new Web3(window.ethereum);\n const accounts = await window.web3.eth.getAccounts();\n dispatch(setNetwork(chainId));\n\n if (ALLOWED_NETWORKS.indexOf(verifyChainId(chainId)) === -1) {\n const balance = await window.web3.eth.getBalance(accounts[0]);\n const warTokenContract = new window.web3.eth.Contract(WarTokenABI, contractAddresses(chainId)['WARTOKEN']);\n const tokenBalance = await warTokenContract.methods.balanceOf(accounts[0]).call();\n // await clearUserInfo(dispatch);\n dispatch(setConnectModalVisible(false));\n dispatch(setWrongNetwork(true));\n dispatch(setUserAccounts({ accounts, balance, chainId, tokenBalance: fromWeiDecimals(tokenBalance) }));\n return;\n } else {\n dispatch(setWrongNetwork(false));\n }\n\n if (accounts && accounts[0]) {\n const balance = await window.web3.eth.getBalance(accounts[0]);\n\n const warTokenContract = new window.web3.eth.Contract(WarTokenABI, contractAddresses(chainId)['WARTOKEN']);\n const tokenBalance = await warTokenContract.methods.balanceOf(accounts[0]).call();\n dispatch(setUserAccounts({ accounts, balance, chainId, tokenBalance: fromWeiDecimals(tokenBalance) }));\n\n const presenterContract = new window.web3.eth.Contract(PresenterABI, contractAddresses(chainId)['PRESENTER']);\n const dogeInfo = await getUserInfo(presenterContract, accounts[0], 0);\n const pepeInfo = await getUserInfo(presenterContract, accounts[0], 1);\n const wojakInfo = await getUserInfo(presenterContract, accounts[0], 2);\n\n dispatch(setUserInfo({dogeInfo, pepeInfo, wojakInfo}));\n dispatch(fetchWalletInfo(accounts[0]));\n }\n });\n\n // window.ethereum.on('disconnect', () => {\n // dispatch(disconnect());\n // });\n\n return window.ethereum.request({ method: 'eth_requestAccounts' })\n .then(async () => {\n const chainId = await window.web3.eth.getChainId();\n\n const hexChainId = window.web3.utils.toHex(chainId);\n if (ALLOWED_NETWORKS.indexOf(hexChainId) === -1) {\n dispatch(setConnectModalVisible(false));\n dispatch(setWrongNetwork(true));\n needLoad && dispatch(connectWalletFail());\n } else {\n const chainId = window.ethereum.chainId;\n const accounts = await window.web3.eth.getAccounts();\n const balance = await window.web3.eth.getBalance(accounts[0]);\n\n const warTokenContract = new window.web3.eth.Contract(WarTokenABI, contractAddresses(chainId)['WARTOKEN']);\n const tokenBalance = await warTokenContract.methods.balanceOf(accounts[0]).call();\n dispatch(setUserAccounts({ accounts, balance, chainId, tokenBalance: fromWeiDecimals(tokenBalance) }));\n\n const presenterContract = new window.web3.eth.Contract(PresenterABI, contractAddresses(chainId)['PRESENTER']);\n const dogeInfo = await getUserInfo(presenterContract, accounts[0], 0);\n const pepeInfo = await getUserInfo(presenterContract, accounts[0], 1);\n const wojakInfo = await getUserInfo(presenterContract, accounts[0], 2);\n\n dispatch(setUserInfo({dogeInfo, pepeInfo, wojakInfo}));\n // Load notifications\n dispatch(fetchWalletInfo(accounts[0]));\n\n needLoad && dispatch(connectWalletSuccess());\n return true;\n }\n })\n .catch((err) => {\n Logger.error(err);\n needLoad && dispatch(connectWalletFail(err.message));\n return false;\n });\n }\n\n return new Promise((resolve, reject) => {\n const err = 'Metamask/TrustWallet not installed.';\n const mobileError = 'Please Use MetaMask/TrustWallet Mobile\\'s built-in browser';\n needLoad && dispatch(connectWalletFail(isMobile ? mobileError : err));\n dispatch(removeProvider());\n reject(isMobile ? mobileError : err);\n });\n};\n\nexport const removeProvider = () => async () => {\n window.localStorage.removeItem('connectorId');\n await window.web3?.provider?.disconnect();\n window.web3 = undefined;\n}\n\n/** CONNECT TO WALLET CONNECT **/\nexport const connectToWalletConnect = () => async (dispatch) => {\n try {\n const walletConnectProvider = new WalletConnectProvider({\n infuraId: 'a288a32fdbae4840820ca7260600f195',\n rpc: {\n 1: 'https://mainnet.infura.io/v3/a288a32fdbae4840820ca7260600f195',\n 4: 'https://ropsten.infura.io/v3/a288a32fdbae4840820ca7260600f195',\n 56: 'https://bsc-dataseed1.ninicoin.io',\n 97: 'https://data-seed-prebsc-2-s3.binance.org:8545'\n },\n bridge: 'https://bridge.walletconnect.org',\n qrcode: true,\n pollingInterval: 12000\n });\n\n const supportedChainIds = [56, 97, 1, 4];\n\n if (!walletConnectProvider.wc.connected) {\n await walletConnectProvider.wc.createSession({\n chainId: supportedChainIds[0]\n });\n }\n\n // Enable session (triggers QR Code modal)\n await walletConnectProvider.enable();\n // Create Web3\n const web3 = new Web3(walletConnectProvider);\n window.web3 = web3;\n window.web3.eth.transactionPollingTimeout = Number(process.env.CONTRACT_TIMEOUT_SECONDS);\n dispatch(connectWalletRequest());\n\n const chainId = await web3.eth.getChainId();\n const hexChainId = web3.utils.toHex(chainId);\n\n let accounts = await web3.eth.getAccounts();\n\n if (ALLOWED_NETWORKS.indexOf(hexChainId) === -1) {\n dispatch(setWrongNetwork(true));\n dispatch(connectWalletFail());\n return false;\n }\n const initUserInfo = async () => {\n accounts = await web3.eth.getAccounts();\n const chainId = await web3.eth.getChainId();\n const hexChainId = web3.utils.toHex(chainId);\n \n if (ALLOWED_NETWORKS.indexOf(hexChainId) === -1) {\n dispatch(setWrongNetwork(true));\n dispatch(connectWalletFail());\n return false;\n }\n \n dispatch(setWrongNetwork(false));\n const ethBalance = await web3.eth.getBalance(accounts[0]);\n const balance = new BigNumber(ethBalance).toJSON();\n const warTokenContract = new window.web3.eth.Contract(WarTokenABI, contractAddresses(chainId)['WARTOKEN']);\n const tokenBalance = await warTokenContract.methods.balanceOf(accounts[0]).call().catch(0);\n\n dispatch(setNetwork(chainId));\n dispatch(connectWalletSuccess());\n dispatch(setUserAccounts({ accounts, balance, chainId, tokenBalance: fromWeiDecimals(tokenBalance) }));\n\n const presenterContract = new window.web3.eth.Contract(PresenterABI, contractAddresses(chainId)['PRESENTER']);\n const dogeInfo = await getUserInfo(presenterContract, accounts[0], 0);\n const pepeInfo = await getUserInfo(presenterContract, accounts[0], 1);\n const wojakInfo = await getUserInfo(presenterContract, accounts[0], 2);\n\n dispatch(setUserInfo({dogeInfo, pepeInfo, wojakInfo}));\n dispatch(fetchWalletInfo(accounts[0]));\n }\n await initUserInfo();\n\n walletConnectProvider.on('accountsChanged', async (accounts) => {\n if (accounts && accounts[0]) {\n await initUserInfo();\n } else {\n dispatch(disconnect());\n }\n });\n\n // Subscribe to chainId change\n walletConnectProvider.on('chainChanged', async (chainId) => {\n if (!accounts || !accounts[0]) {\n accounts = await web3.eth.getAccounts();\n }\n const hexChainId = web3.utils.toHex(chainId);\n if (ALLOWED_NETWORKS.indexOf(verifyChainId(hexChainId)) === -1) {\n // await clearUserInfo(dispatch);\n dispatch(setConnectModalVisible(false));\n dispatch(setWrongNetwork(true));\n return;\n } else {\n dispatch(setWrongNetwork(false));\n }\n\n await initUserInfo();\n });\n\n walletConnectProvider.on('session_update', async (error, payload) => {\n Logger.log(`session_update ${error} ${payload}`);\n if (error) {\n dispatch(connectWalletFail(error));\n dispatch(removeProvider());\n return;\n }\n await initUserInfo();\n });\n\n walletConnectProvider.on('connect', async () => {\n await initUserInfo();\n });\n\n walletConnectProvider.on('disconnect', () => {\n dispatch(disconnect());\n });\n return true;\n } catch (error) {\n dispatch(connectWalletFail(error));\n dispatch(removeProvider());\n return false;\n }\n};\n\nexport const refeshBalance = () => async (dispatch, getState) => {\n try {\n const account = getState()?.user?.userAccount?.accounts[0];\n const chainId = getState()?.user?.chainId;\n if (account && chainId) {\n const warTokenContract = new window.web3.eth.Contract(WarTokenABI, contractAddresses(chainId)['WARTOKEN']);\n const tokenBalance = await warTokenContract.methods.balanceOf(account).call();\n dispatch(setBalance({ tokenBalance: fromWeiDecimals(tokenBalance) }));\n }\n } catch (err) {\n Logger.error(err)\n }\n};\n\n\n/** CLEAR TRANSACTION LOGS **/\nexport const clearTransactionLog = (accountAddress, chainId) => (dispatch, getState) => {\n const transactionLogs = getState().user.transactionLogs;\n const logData = transactionLogs.result;\n\n const filterLog = filter(logData, item => {\n return item.chainId === chainId && get(item, 'account', '').toLowerCase() !== (accountAddress || '').toLowerCase();\n });\n\n dispatch(clearTransactionLogs(filterLog));\n};\n\nconst { userLogout } = createActions({\n USER_LOGOUT: () => {},\n});\n\nexport const disconnect = () => async (dispatch) => {\n window.localStorage.removeItem('connectorId');\n window.localStorage.removeItem('walletconnect');\n await window.web3?.provider?.disconnect();\n window.web3 = undefined;\n await dispatch(setWrongNetwork(false));\n // window.location.href = window.location.pathname;\n dispatch(userLogout());\n};\n\nexport const clearUserInfo = async dispatch => {\n await dispatch(setUserAccounts({accounts: []}));\n await dispatch(setUserAccounts({walletUsername:''}));\n await dispatch(setWrongNetwork(false));\n window.localStorage.removeItem('walletconnect');\n window.localStorage.removeItem('nonce');\n}\n\nexport const refeshUserInfo = async (presenterContract, account, dispatch) => {\n const dogeInfo = await getUserInfo(presenterContract, account, 0);\n const pepeInfo = await getUserInfo(presenterContract, account, 1);\n const wojakInfo = await getUserInfo(presenterContract, account, 2);\n dispatch(setUserInfo({ dogeInfo, pepeInfo, wojakInfo }));\n}\n\nexport const getDataUserInfoAndUpdate = () => async (dispatch, getState) => {\n try {\n const account = getState()?.user?.userAccount?.accounts[0];\n const chainId = getState()?.user?.chainId;\n if (account && chainId) {\n const presenterContract = new window.web3.eth.Contract(PresenterABI, contractAddresses(chainId)['PRESENTER']);\n const dogeInfo = await getUserInfo(presenterContract, account, 0);\n const pepeInfo = await getUserInfo(presenterContract, account, 1);\n const wojakInfo = await getUserInfo(presenterContract, account, 2);\n dispatch(setUserInfo({ dogeInfo, pepeInfo, wojakInfo }));\n }\n } catch (err){\n Logger.error(err)\n }\n};\n\nexport const verifyChainId = chainId => {\n if (typeof chainId !== 'number' && typeof chainId !== 'string') {\n return '0x1';\n }\n if (typeof chainId === 'number') {\n return '0x' + chainId.toString(16);\n }\n if (!chainId.startsWith('0x')) {\n return '0x' + parseInt(chainId.replace(/\\D+/g, '')).toString(16);\n }\n return chainId;\n};\n\nexport const CONNECTION_TYPES = {\n metamask: 'metamask',\n walletconnect: 'walletconnect'\n};\n\nexport const closeNetworkAction = () => async (dispatch) => {\n const connectorId = window.localStorage.getItem('connectorId');\n if (connectorId === CONNECTION_TYPES.metamask) {\n dispatch(setWrongNetwork(false));\n } else if (connectorId === CONNECTION_TYPES.walletconnect) {\n window.localStorage.removeItem('connectorId');\n window.localStorage.removeItem('walletconnect');\n dispatch(setWrongNetwork(false));\n }\n}\n","import { CHAIN_MAINNET } from './constants';\nimport fromExponential from 'from-exponential';\nimport { detect } from 'detect-browser';\nimport { BigNumber } from 'bignumber.js';\nimport { ethers } from 'ethers';\nimport prettyNum, { ROUNDING_MODE } from 'pretty-num';\n\nimport { verifyChainId } from '../store/modules/User/actions';\n\nconst browser = detect();\n\nexport const LENGTH_TO_FIXED_PRICE = 7;\nexport const THOUSANDS_SEPARATOR = '.';\n\nexport default function formatNumber(value, prefix = '', fixed_amount = 0, thousands_separator = ',') {\n const removeDecimal = value.toString().split(THOUSANDS_SEPARATOR)[0];\n const newValue = normalizeValue(removeDecimal);\n\n if (isNaN(value)) {\n return 'NaN';\n }\n\n return prefix + separateThousands(newValue.toFixed(fixed_amount), thousands_separator);\n}\n\nfunction normalizeValue(value) {\n if (typeof value === 'string') {\n return parseFloat(value);\n }\n\n return value;\n}\n\nexport function formatNumberExtend(value, prefix = '', fixed_amount = 0, thousands_separator = ',') {\n const newValue = normalizeValue(value);\n\n if (isNaN(value)) {\n return 'NaN';\n }\n\n return prefix + separateThousands(newValue.toFixed(fixed_amount), thousands_separator);\n}\n\nfunction separateThousands(x, s) {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, s);\n}\n\nexport function formatNumberFull(value, fixed_amount = LENGTH_TO_FIXED_PRICE, thousands_separator = ',', prefix = '') {\n if (!value) {\n return 0;\n }\n const valueReplace = value.toString().split(thousands_separator).join('');\n let newValueFloat = parseFloatWithDecimal(valueReplace, fixed_amount);\n return prefix + separateThousandsWithFloat(newValueFloat.toString(), thousands_separator);\n}\n\nexport function parseFloatWithDecimal(value, fixed_amount) {\n if (typeof value === 'string') {\n return fromExponential(parseFloat(parseFloat(value).toFixed(fixed_amount)) || 0);\n }\n\n return fromExponential(parseFloat(value.toFixed(fixed_amount)) || 0);\n}\n\nfunction separateThousandsWithFloat(value, separator) {\n const arrSplitValue = value.split('.');\n if (arrSplitValue && arrSplitValue.length < 2) {\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n }\n const firstNumber = arrSplitValue[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n return `${firstNumber}.${arrSplitValue[1]}`;\n}\n\nexport function formatBlockchainAddress(address, precision = 4, precisionEnd) {\n if (!address) {\n return '';\n }\n\n return `${address.slice(0, precision + 2)}...${address.slice(precisionEnd ? -precisionEnd : -precision)}`;\n}\n\nexport function contractAddresses(chainId) {\n if (verifyChainId(chainId) === verifyChainId(CHAIN_MAINNET)) {\n return {\n 'WARTOKEN': process.env.REACT_APP_WAR_TOKEN_ADDRESS_MAINNET,\n 'PRESENTER': process.env.REACT_APP_PRESENTER_CONTRACT_ADDRES_MAINNET,\n };\n }\n return {\n 'WARTOKEN': process.env.REACT_APP_WAR_TOKEN_ADDRESS_TESTNET,\n 'PRESENTER': process.env.REACT_APP_PRESENTER_CONTRACT_ADDRES_TESTNET,\n };\n}\n\n\nexport const getTeamIndex = (teamString) => {\n switch (teamString) {\n case 'doge':\n return 0;\n case 'pepe':\n return 1;\n case 'wojak':\n return 2;\n }\n};\n\nexport const getTeamString = (teamIndex) => {\n switch (teamIndex) {\n case 0:\n return 'doge';\n case 1:\n return 'pepe';\n case 2:\n return 'wojak';\n }\n};\n\nexport const getPoolIndex = (poolString) => {\n switch (poolString) {\n case 'attack':\n return 0;\n case 'defense':\n return 1;\n case 'production':\n return 2;\n }\n};\n\nexport const getPercent = (value, total) => {\n if (parseInt(total) === 0) {\n return 0;\n } else {\n return parseInt(parseInt(value) * 100 / parseInt(total));\n }\n};\n\nexport const checkIsValidVoteTeam = (warTeamIndex, teamsList = {}) => {\n const index = parseInt(warTeamIndex);\n\n if (index > 3) return;\n if (!teamsList) return;\n\n const teamName = getTeamString(index); // war team\n\n const totalAmountDoge = Number(teamsList['doge']?.totalAmount);\n const totalAmountPepe = Number(teamsList['pepe']?.totalAmount);\n const totalAmountWojak = Number(teamsList['wojak']?.totalAmount);\n\n const data = [\n { amount: totalAmountDoge, name: 'doge' },\n { amount: totalAmountPepe, name: 'pepe' },\n { amount: totalAmountWojak, name: 'wojak'}\n ];\n\n const filterData = data.map(e => {\n if (e.amount > 0) return e.name;\n });\n\n const isNotStakedAnyTeams = totalAmountDoge === 0 && totalAmountPepe === 0 && totalAmountWojak === 0;\n const isStakedButNotWar = filterData.includes(teamName);\n\n return { isNotStakedAnyTeams, isStakedButNotWar }\n};\n\nexport const isStakingDay = (stageIndex) => {\n return stageIndex === 0;\n};\n\nexport const capitalizeFirstChar = (word) => {\n if (!word) return;\n return (word[0] ?? '').toUpperCase() + (word ?? '').slice(1).toLowerCase();\n};\n\nexport const getQueryParam = (name, defaultData = '') => {\n const q = window.location.search.match(new RegExp('[?&]' + name + '=([^]*)'));\n return q ? q[1] : defaultData;\n};\n\nexport const validateEmail = email => {\n return typeof email === 'string' && /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n};\n\nexport const isLandscapeOrientation = () => {\n if (browser.os.toLowerCase() === 'ios' || browser.os.toLowerCase().includes('android')) {\n return Math.abs(window.orientation) === 90;\n }\n\n return !window.matchMedia('(orientation: portrait)').matches;\n};\n\nexport const onFocusHandle = () => {\n let viewheight = window.screen.height;\n let viewwidth = window.screen.width;\n let viewport = document.querySelector('meta[name=viewport]');\n viewport.setAttribute('content', 'height=' + viewheight + 'px, width=' + viewwidth + 'px, initial-scale=1.0');\n}\n\nexport const onBlurHandle = () => {\n let viewport = document.querySelector('meta[name=viewport]');\n viewport.setAttribute('content', 'height=' + null + 'px, width=' + null + 'px, initial-scale=1.0');\n}\n\nexport const ua = window.navigator.userAgent;\nexport const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\nexport const isChrome = navigator.userAgent.indexOf('Chrome') !== -1;\n\n// // 1 => 1000000000000000000\nexport const toWeiDecimals = (amount, decimals = 18) => {\n return fromExponential(Number(new BigNumber(amount * 10 ** decimals)));\n}\n\n// 1e18 => 1\nexport const fromWeiDecimals = (amount, decimals = 18) => {\n amount = BigNumber.isBigNumber(amount) ? amount.toNumber() : amount;\n return Number(ethers.utils.formatUnits(prettyNum(fromExponential(amount || 0), {\n precision: decimals,\n roundingMode: ROUNDING_MODE.DOWN\n }), decimals));\n};\n","import React from 'react';\n\nexport default function CloseIcon(){\n return (\n
\n \n \n )\n}","import React from 'react';\nimport style from './Modal.module.scss';\nimport cn from 'classnames';\nimport { Modal as AntdModal } from 'antd';\nimport CloseIcon from './CloseIcon';\n\nexport default function Modal(props) {\n const {wrapperClass, title, handleCancel, closeable, children, ...restProps} = props;\n\n return (\n
}\n closable={closeable}\n onCancel={handleCancel}\n centered\n {...restProps}\n >\n {title && (\n \n
{title} \n \n )}\n \n {children}\n
\n \n )\n}\n","import React, { useEffect, useState } from 'react';\nimport PageLayout from '../../components/PageLayout';\nimport SectionOne from './SectionOne';\nimport SectionTwo from './SectionTwo';\nimport SectionThree from './SectionThree';\nimport SectionFour from './SectionFour';\nimport SectionFive from './SectionFive';\nimport { getQueryParam } from '../../utils';\nimport { useDispatch } from 'react-redux';\nimport { checkVerifyEmail } from '../../store/modules/User/actions';\nimport Modal from '../../components/Modal';\nimport style from '../../components/TermsModal/TermsOfServiceModal.module.scss';\nimport Button from '../../components/Button';\n\nexport default function Home() {\n const dispatch = useDispatch();\n\n const [isVisibleModal, setIsVisibleModal] = useState(false);\n const [title, setTitle] = useState('');\n const [subTitle, setSubTitle] = useState('');\n\n useEffect(() => {\n const email = getQueryParam('verify');\n const code = getQueryParam('code');\n const address = getQueryParam('address');\n if (email && code && address) {\n const body = {\n email,\n code,\n address\n };\n dispatch(checkVerifyEmail(body))\n .then(res => {\n const messageText = res?.data?.message;\n if (messageText) {\n setTitle('Verify Email Address');\n setSubTitle(messageText);\n setIsVisibleModal(true);\n } else {\n setTitle('Verify Email Address');\n setSubTitle(`Your email ${email} has been verified`);\n setIsVisibleModal(true);\n }\n });\n }\n }, [dispatch])\n\n const closeModal = () => setIsVisibleModal(false);\n\n return (\n
\n \n \n \n \n \n {\n isVisibleModal && (\n \n \n {title}\n \n \n {subTitle}\n
\n \n \n )\n }\n\n \n )\n}\n","import { createAction } from 'redux-actions';\n\nexport const setCycleInfo = createAction('SET_ROUND_DATA');\nexport const setLoadingNextStep = createAction('SET_LOADING_NEXT_STEP');\nexport const setVisibleRoundHistory = createAction('SET_VISIBLE_ROUND_HISTORY');\nexport const setRoundHistoryRequesting = createAction('SET_ROUND_HISTORY_REQUESTING');\nexport const getRoundHistoryList = createAction('GET_ROUND_HISTORY_LIST');\nexport const getListDuration = createAction('GET_LIST_DURATION');\n\nexport const updateCycleInfo = (cycleIndex, cycleInfo) => (dispatch) => {\n dispatch(setCycleInfo({cycleIndex, cycleInfo}));\n};","import { getCycleInfo } from '../../../utils/callHelpers';\n\nexport const getRoundHistoriesList = async (currentCycleIndex, offset = 10, presenterABI, address) => {\n const currentIndex = parseInt(currentCycleIndex) - 1;\n const pastCurrentIndex = currentIndex - offset || 1; // limit 50\n\n let roundList = [];\n let roundIndex = [];\n let response = null;\n let lastItem;\n\n if (lastItem <= 0) return;\n\n try {\n const presenterContract = new window.web3.eth.Contract(presenterABI, address);\n\n for (let index = currentIndex; index >= pastCurrentIndex; index--) {\n if (index <= 0) break;\n\n roundIndex.push(index);\n roundList.push(getCycleInfo(presenterContract, index));\n lastItem = index;\n }\n\n response = await Promise.all(roundList)\n .then(res => {\n return res;\n })\n .catch(err => err)\n return { response, roundIndex, offset, lastItem };\n } catch (error) {\n return error\n }\n}","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport PresenterABI from '../../../abi/presenterAbi';\nimport { contractAddresses } from '../../../utils/index';\nimport { getRoundHistoryList } from '../../../store/modules/Round/actions';\nimport { getRoundHistoriesList } from '../../../store/modules/Round/utils';\n\nfunction useRoundHistory(props) {\n const dispatch = useDispatch();\n\n const { load, setLoad } = props;\n\n const [isLoading, setLoading] = useState(false);\n const [isError, setError] = useState(false);\n // const [pivot, setPivot] = useState(0);\n\n const chainId = useSelector(state => state.user?.chainId);\n const roundHistoryList = useSelector(state => state.round?.roundHistoryList?.response);\n const roundIndexList = useSelector(state => state.round?.roundHistoryList?.roundIndex);\n const currentLastItem = useSelector(state => state.round?.roundHistoryList?.lastItem);\n const cycleIndex = useSelector(state => state.round?.cycleIndex);\n\n const addresses = contractAddresses(chainId);\n\n useEffect(async () => {\n // if (pivot > 0) return;\n\n try {\n const {\n response,\n roundIndex,\n offset,\n lastItem\n } = await getRoundHistoriesList(\n cycleIndex,\n 9,\n PresenterABI,\n addresses['PRESENTER']\n );\n \n const result = {\n response,\n roundIndex,\n offset,\n lastItem\n }\n \n dispatch(getRoundHistoryList(result));\n } catch (error) {\n return error;\n }\n }, [cycleIndex]);\n\n useEffect(async () => {\n if (!load) return;\n if (currentLastItem <= 1) return;\n\n try {\n setLoading(true);\n setError(false);\n\n const { response, roundIndex, offset, lastItem } = await getRoundHistoriesList(\n currentLastItem,\n 10,\n PresenterABI,\n addresses['PRESENTER']\n );\n\n const result = {\n response: [...roundHistoryList, ...response],\n roundIndex: [...roundIndexList, ...roundIndex],\n offset,\n lastItem\n };\n\n dispatch(getRoundHistoryList(result));\n // setPivot(5);\n setLoading(false);\n setLoad(false);\n } catch (error) {\n setLoading(false);\n setError(true);\n setLoad(false)\n\n return error;\n }\n }, [load]);\n\n return {\n isError,\n isLoading\n };\n}\n\nexport default useRoundHistory;","import React from 'react';\nimport { Input } from 'antd';\nimport cn from 'classnames';\n\nimport style from './TextInput.module.scss';\n\nexport default function TextInput(props) {\n const {\n id,\n value,\n disabled,\n prefix,\n placeholder,\n onChange,\n onFocus,\n onBlur,\n light,\n icon,\n email,\n small,\n suffix,\n wrapperClass\n } = props;\n\n const prefixIcon = prefix ? prefix :
;\n const suffixIcon = suffix ? suffix :
;\n\n return (\n
onChange(e.target.value)}\n type={id ?? email}\n {...{id, value, placeholder, onFocus, disabled, onBlur}}\n />\n )\n}","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqBAMAAAA37dRoAAAAHlBMVEVHcEwzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzN1RKBtAAAACXRSTlMAtswQEZ5Wa04U1Re5AAAA6UlEQVQoz23TrQ7CMBQF4MPfQA6BmCMwM0fgBQhPMAwBN4PAYXEYHmAkg9y3Zev6c09DTdvTT7T3psD/8TpFwfUMTERSCgciJW4iNaWZyAcXYdxSabojwv3+IYQ7Kl8MhXBHZYlxobGh7z1w0NjQvF1o7ClhTzVWVGFFAybqMVGH50yBrbiRq5KMChtqGnBOpbaYqcN51EJz16iD9llRBy2NcWbT+h9lbOgqwn2xdgVjQ9f9nWumG/vAlCkIOwrCnmocqMaKBpwo6nDV/YBALS5N6qnFJWZEe/xE+zEUNbhpp+R4p1JPFxV+0mzK8h18D2UAAAAASUVORK5CYII=\"","import React, { useCallback, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { message, Spin } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\n\nimport Modal from '../../../Modal';\nimport Button from '../../../Button';\nimport TextInput from '../../../TextInput';\n\nimport {\n registerNotify,\n sendVerifyEmail,\n fetchWalletInfo\n} from '../../../../store/modules/User/actions';\nimport { validateEmail, onFocusHandle, onBlurHandle } from '../../../../utils';\n\nimport closeIcon from './img/close.png';\nimport tickIcon from './img/tick.png';\n\nimport style from './EmailNotificationPopup.module.scss';\n\nconst antIcon =
;\n\nfunction EmailNotificationPopup(props) {\n const dispatch = useDispatch()\n\n const { visible, onCancel } = props;\n\n const address = useSelector(state => state.user.userAccount.accounts[0] ?? '');\n const nonce = useSelector(state => state?.user?.walletInfo?.result?.nonce ?? '');\n\n const emailStore = useSelector(state => state?.user?.walletInfo?.result?.email ?? '');\n const verifiedStore = useSelector(state => state?.user?.walletInfo?.result?.verified ?? '');\n const isRewardStore = useSelector(state => state?.user?.walletInfo?.result?.isReward ?? false);\n const isVoteStore = useSelector(state => state?.user?.walletInfo?.result?.isVote ?? false);\n const isFinishStore = useSelector(state => state?.user?.walletInfo?.result?.isFinish ?? false);\n const isLoadingWallet = useSelector(state => state?.user?.walletInfo?.requesting);\n const isLoadingVerify = useSelector(state => state?.user?.sendVerifyEmail?.requesting);\n\n const lists = {\n 'Reward': isRewardStore,\n 'Vote': isVoteStore,\n 'Finish': isFinishStore\n }\n\n const [valueEmail, setValueEmail] = useState(emailStore);\n const [valueCheck, setValueCheck] = useState(lists);\n\n useEffect(() => {\n if (visible) {\n if (address) {\n dispatch(fetchWalletInfo(address));\n }\n }\n\n }, [address, visible]);\n\n useEffect(() => {\n if (address) {\n const values = {\n 'Reward': isRewardStore,\n 'Vote': isVoteStore,\n 'Finish': isFinishStore\n }\n setValueEmail(emailStore);\n setValueCheck(values);\n }\n }, [address, emailStore, verifiedStore, isRewardStore, isVoteStore, isFinishStore])\n\n const handleCloseModal = useCallback(() => {\n const lists = {\n 'Reward': isRewardStore,\n 'Vote': isVoteStore,\n 'Finish': isFinishStore\n }\n setValueEmail(emailStore);\n setValueCheck(lists);\n onCancel();\n }, [isRewardStore, isVoteStore, isFinishStore, emailStore]);\n\n const handleValueCheck = useCallback((key, value) => {\n const newValueCheck = {\n ...valueCheck,\n [key]: value\n };\n setValueCheck(newValueCheck);\n }, [valueCheck]);\n\n const disableVerified = verifiedStore && emailStore === valueEmail;\n\n const sendVerify = useCallback(async () => {\n if (window.web3) {\n const signKey = await window.web3.eth.personal.sign(nonce, address);\n const body = {\n address,\n email: valueEmail,\n sign: signKey\n };\n\n dispatch(sendVerifyEmail(body))\n .then(() => {\n onCancel();\n })\n .catch(err => {\n return err;\n })\n }\n }, [window.web3, valueEmail]);\n\n const onSubmit = useCallback(async () => {\n const {\n 'Reward': isReward,\n 'Vote': isVote,\n 'Finish': isFinish,\n } = valueCheck;\n\n const signKey = await window.web3.eth.personal.sign(nonce, address);\n const body = {\n isReward,\n isVote,\n isFinish,\n address,\n sign: signKey\n }\n dispatch(registerNotify(body))\n .then(res => {\n if (typeof res === 'string') {\n message.error(res);\n }\n onCancel();\n });\n }, [valueCheck])\n\n return (\n
handleCloseModal()}\n closable={false}\n maskClosable={false}\n >\n \n\n {isLoadingWallet ? (\n \n \n
\n ) : (\n \n
\n }\n />\n\n
\n {\n Object.keys(valueCheck).map((key, index) => {\n const value = valueCheck[key];\n return (\n handleValueCheck(key, !value)} className={style.item} key={index}>\n {value ? (\n
\n ) : (\n
\n )}\n
{key}
\n
\n )\n })\n }\n \n\n
\n
\n )}\n \n );\n}\n\nexport default EmailNotificationPopup;","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAsCAMAAAAkRNp0AAAAM1BMVEVHcEz/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukksnIvnAAAAEHRSTlMAGuukReGDTfqvDFvP0CS9wj0YVgAAAQxJREFUOMu9lduWwyAIRY1FgolO+f+v7TjjrUZMeel5ZS9CDheN+YIOQB+dddEjHCtw98RN5HcRDDwqTOHN80x+u5BgeS4LA3kSS6LzneSVehZoiVKrYbO8lq3/5vlOvvjJ98r+hg/QcJf0CYB9WrnSRwpjq/agJWmObNjvnMGaLChD/YBE1jiKpRZyp2ZtrH4gWpnkaIzrgpsTSXbGlEx/bc7shGTbsubJcQKZssZmRmanZKq1OOB+MotTMjlQfS3snEy+tm69sSOZCuxmoGMvZJqBvl2VvZD/e9DPa2avZF6DMLITMkx2y+L5kHdrHC6SN1ZzBxTXRXOzNJdQc181V1vzFqheGNW7tdYLOGVEw9JQ35UAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/coin.da6fc05c.png\";","export const getDurations = stageDuration => {\n const staking = Number(stageDuration);\n const production = Number(stageDuration);\n const random = Number(stageDuration) * 10 / 100;\n const voting = Number(stageDuration) * 40 / 100;\n const war = Number(stageDuration) * 20 / 100;\n const result = Number(stageDuration) * 30 / 100;\n\n return [\n staking,\n production,\n random,\n voting,\n war,\n result,\n ];\n};\n\nexport const getTimeCycles = ({ stageIndex, stageStartTime, victimTeam, durations }) => {\n const staking = durations[0];\n const production = durations[1];\n const random = durations[2];\n const voting = durations[3];\n const war = durations[4];\n const result = durations[5];\n\n let timeDurationToCalc = 0;\n\n for (let i = stageIndex - 1; i >= 0; i--) {\n timeDurationToCalc += durations[i];\n }\n\n if (stageIndex === 5 && !(victimTeam < 3)) {\n timeDurationToCalc -= durations[4];\n }\n\n const hasWar = victimTeam < 3;\n\n // Calc startTime of stageIndex = 0\n const stakingStartTime = stageStartTime - timeDurationToCalc;\n\n // Calc startTime of stageIndex = 1\n const productionStartTime = stakingStartTime + staking;\n\n // Calc startTime of stageIndex = 2\n const randomStartTime = productionStartTime + production;\n\n // Calc startTime of stageIndex = 3\n const votingStartTime = randomStartTime + random;\n\n // Calc startTime of stageIndex = 4\n const warStartTime = hasWar ? votingStartTime + voting : 0;\n\n // Calc startTime of stageIndex = 5\n const resultStartTime = hasWar ? warStartTime + war : votingStartTime + voting;\n\n return {\n staking: {\n startTime: stakingStartTime,\n duration: staking,\n },\n production: {\n startTime: productionStartTime,\n duration: production,\n },\n random: {\n startTime: randomStartTime,\n duration: random,\n },\n voting: {\n startTime: votingStartTime,\n duration: voting,\n },\n war: {\n startTime: warStartTime,\n duration: hasWar ? war : 0,\n },\n result: {\n startTime: resultStartTime,\n duration: result,\n },\n };\n};\n\nexport const prepareDataForRender = (time, render) => [\n {\n duration: time?.staking?.duration,\n starTime: time?.staking?.startTime * 1000,\n endTime: (time?.staking?.startTime + time?.staking?.duration) * 1000,\n render: render.staking\n },\n {\n duration: time?.production?.duration,\n starTime: time?.production?.startTime * 1000,\n endTime: (time?.production?.startTime + time?.production?.duration) * 1000,\n render: render.production\n },\n {\n duration: time?.random?.duration,\n starTime: time?.random?.startTime * 1000,\n endTime: (time?.random?.startTime + time?.random?.duration) * 1000,\n render: render.random\n },\n {\n duration: time?.voting?.duration,\n starTime: time?.voting?.startTime * 1000,\n endTime: (time?.voting?.startTime + time?.voting?.duration) * 1000,\n render: render.voting\n },\n {\n duration: time?.war?.duration,\n starTime: time?.war?.startTime * 1000,\n endTime: (time?.war?.startTime + time?.war?.duration) * 1000,\n render: render.war\n },\n {\n duration: time?.result?.duration,\n starTime: time?.result?.startTime * 1000,\n endTime: (time?.result?.startTime + time?.result?.duration) * 1000,\n render: render.result\n },\n].filter(item => item?.duration !== 0).reverse()","import React, { useEffect, useState } from 'react';\nimport moment from 'moment';\n\nimport coinImg from '../../../../Maps/img/coin.png';\n\nimport style from './RoundHistoryItem.module.scss';\nimport { getDurations, getTimeCycles, prepareDataForRender } from '../utils';\n\nfunction RoundHistoryItem(props) {\n const {\n item = {},\n roundIndex,\n } = props;\n\n const [time, setTime] = useState({});\n\n useEffect(() => {\n const time = getTimeCycles({\n stageIndex: Number(item?.stageIndex),\n stageStartTime: Number(item?.stageStart),\n victimTeam: Number(item?.victimTeam),\n durations: getDurations(Number(item?.['0']))\n });\n setTime(time)\n }, [item, roundIndex]);\n\n const heading = (nameStage, beginDay, endDay, isLive) => (\n
\n \n
ROUND {roundIndex} - {nameStage} \n\n {Number(item?.stageIndex || 0) === isLive && (\n
\n )}\n
\n\n Begins {moment.utc(beginDay).format('MM/DD/YY HH:mm UTC')}, Ends {moment.utc(endDay).format('MM/DD/YY HH:mm UTC')}
\n \n );\n\n const renderStakingDay = (key, startTime, endTime) => {\n return (\n
\n
\n
\n
\n\n {heading('STAKING DAY', startTime, endTime, 0)}\n
\n )\n };\n\n const renderProductionDay = (key, startTime, endTime) => {\n return (\n
0 ? 'flex' : 'none' }} className={style.item}>\n
\n
\n
\n\n {heading('PRODUCTION DAY', startTime, endTime, 1)}\n
\n )\n }\n\n const renderRandomDay = (key, startTime, endTime) => {\n return (\n
1 ? 'flex' : 'none' }} className={style.item}>\n
\n
\n
\n\n {heading('RANDOM DAY', startTime, endTime, 2)}\n
\n )\n }\n\n const renderVotingDay = (key, startTime, endTime) => {\n return (\n
2 ? 'flex' : 'none' }} className={style.item}>\n
\n
\n
\n\n {heading('VOTING DAY', startTime, endTime, 3)}\n
\n )\n };\n\n const renderBattleDay = (key, startTime, endTime) => {\n return (\n
3 ? 'flex' : 'none' }} className={style.item}>\n
\n
\n
\n\n {heading('BATTLE DAY', startTime, endTime, 4)}\n
\n )\n };\n\n const renderResultDay = (key, startTime, endTime) => {\n return (\n
4 ? 'flex' : 'none' }} className={style.item}>\n
\n
\n
\n\n {heading('RESULT DAY', startTime, endTime, 5)}\n
\n )\n };\n\n const dataRender = prepareDataForRender(time, {\n staking: renderStakingDay,\n production: renderProductionDay,\n random: renderRandomDay,\n voting: renderVotingDay,\n war: renderBattleDay,\n result: renderResultDay,\n });\n\n return (\n
\n {dataRender.map((item, i) => item.render(i, item.starTime, item.endTime))}\n
\n );\n}\n\nexport default RoundHistoryItem;","import React, { useEffect, useState } from 'react';\nimport moment from 'moment';\nimport { BigNumber } from 'bignumber.js';\n\nimport coinImg from '../../../../Maps/img/coin.png';\nimport style from '../RoundHistoryItem/RoundHistoryItem.module.scss';\nimport { getDurations, getTimeCycles, prepareDataForRender } from '../utils';\n\nfunction RoundHistoryItem(props) {\n const { item = {}, roundIndex } = props;\n\n const [time, setTime] = useState({});\n\n useEffect(() => {\n const time = getTimeCycles({\n stageIndex: Number(item?.stageIndex),\n stageStartTime: Number(item?.stageStart),\n victimTeam: new BigNumber(item?.victimTeam).toNumber(),\n durations: getDurations(Number(item?.['0']))\n });\n setTime(time);\n }, [item]);\n\n const heading = (nameStage, beginDay, endDay) => (\n
\n \n
ROUND {roundIndex} - {nameStage} \n \n\n Begins {moment.utc(beginDay).format('MM/DD/YY HH:mm UTC')}, Ends {moment.utc(endDay).format('MM/DD/YY HH:mm UTC')}
\n \n );\n\n const stakingDay = (key, startTime, endTime) => {\n return (\n
\n
\n
\n
\n\n {heading('STAKING DAY', startTime, endTime)}\n
\n )\n };\n\n const productionDay = (key, startTime, endTime) => {\n return (\n
\n
\n
\n
\n\n {heading('PRODUCTION DAY', startTime, endTime)}\n
\n )\n }\n\n const randomDay = (key, startTime, endTime) => {\n return (\n
\n
\n
\n
\n\n {heading('RANDOM DAY', startTime, endTime)}\n
\n )\n };\n\n const votingDay = (key, startTime, endTime) => {\n return (\n
\n
\n
\n
\n\n {heading('VOTING DAY', startTime, endTime)}\n
\n )\n };\n\n const battleDay = (key, startTime, endTime) => {\n return (\n
\n
\n
\n
\n\n {heading('BATTLE DAY', startTime, endTime)}\n
\n )\n };\n\n const resultDay = (key, startTime, endTime) => {\n return (\n
\n
\n
\n
\n\n {heading('RESULT DAY', startTime, endTime)}\n
\n )\n };\n\n const dataRender = prepareDataForRender(time, {\n staking: stakingDay,\n production: productionDay,\n random: randomDay,\n voting: votingDay,\n war: battleDay,\n result: resultDay,\n });\n\n return (\n
\n {dataRender.map((item, i) => item.render(i, item.starTime, item.endTime))}\n
\n );\n}\n\nexport default RoundHistoryItem;\n","import React, { useRef, useCallback } from 'react';\nimport { Spin } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\n\nimport RoundItem from './RoundHistoryItem';\nimport RoundLast from './RoundHistoryLastItem';\nimport Modal from '../../../Modal';\n// import Button from '../../../Button';\n\nimport closeIcon from '../../../ConnectToWalletModal/img/close.png';\n\nimport style from './RoundHistoryModal.module.scss';\n\nconst antIcon =
;\n\nexport default function RoundHistoryModal(props) {\n const {\n visible,\n onCancel,\n items = [],\n cycleInfo = {},\n roundIndex = [],\n onLoadMore,\n isLoading,\n isHasMore,\n cycleIndex,\n // listDuration\n } = props;\n\n const observer = useRef();\n const lastElement = useCallback(node => {\n if (isLoading) return;\n\n if (observer.current) observer.current.disconnect();\n\n observer.current = new IntersectionObserver(entries => {\n entries.forEach((entry) => {\n if (!isLoading && entry.intersectionRatio > 0) {\n onLoadMore && onLoadMore()\n }\n });\n }, {\n root: null,\n rootMargin: '0px',\n threshold: 0.5\n });\n\n if (node) observer.current.observe(node);\n }, [isLoading, isHasMore]);\n\n const lastList = items && items;\n\n return (\n
\n \n
Round History \n\n
onCancel()} className={style.closeIcon}>\n
\n
\n
\n\n View all past rounds and timestamps
\n\n \n
\n\n {lastList && lastList.length ? lastList.map((e, i) => (\n
\n \n
\n )) : (\n null\n )}\n\n
\n {isLoading && }\n
\n
\n \n )\n}","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqBAMAAAA37dRoAAAAHlBMVEVHcEwzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzN1RKBtAAAACXRSTlMAtswQEZ5Wa04U1Re5AAAA6UlEQVQoz23TrQ7CMBQF4MPfQA6BmCMwM0fgBQhPMAwBN4PAYXEYHmAkg9y3Zev6c09DTdvTT7T3psD/8TpFwfUMTERSCgciJW4iNaWZyAcXYdxSabojwv3+IYQ7Kl8MhXBHZYlxobGh7z1w0NjQvF1o7ClhTzVWVGFFAybqMVGH50yBrbiRq5KMChtqGnBOpbaYqcN51EJz16iD9llRBy2NcWbT+h9lbOgqwn2xdgVjQ9f9nWumG/vAlCkIOwrCnmocqMaKBpwo6nDV/YBALS5N6qnFJWZEe/xE+zEUNbhpp+R4p1JPFxV+0mzK8h18D2UAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/copy.4c59a9ec.svg\";","export default __webpack_public_path__ + \"static/media/check-mark.77a4ddb2.svg\";","import React, {useState, useEffect} from 'react';\nimport cn from 'classnames';\nimport copy from './copy.svg';\nimport check from './check-mark.svg';\nimport Button from '../Button';\nimport { Tooltip } from 'antd';\n\nimport style from './CopyToClipboard.module.scss';\n\nexport default function CopyToClipboard(props) {\n const {text, buttonText, tooltip, wrapperClass, buttonClass, icon} = props;\n const [copied, setCopied] = useState(false);\n\n useEffect(() => {\n if (copied) {\n setTimeout(() => setCopied(false), 2000)\n }\n }, [copied]);\n\n return (\n
\n \n navigator.clipboard.writeText(text).then(() => setCopied(true))}\n />\n
\n \n )\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAiBAMAAADMnMbMAAAAIVBMVEWRkZFHcEyRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFC/VirAAAACnRSTlP0ANo+NmxZHrWb1bUgzwAAAJ1JREFUKM9jUGCAA6ZAQUFBhlVIACzAtUgJChSgAqrGUGABFVAXhAJJqIAKEQLiaWCQsWoakAQJiEKcwbVqAdAtYAFkt0AENDqgoGEBRKC9HATcy8uToAITYTYVoQs4DZyAuqAYqoBaeSmqAEdHE4oA2M/TkQRAEYWiAhhqmSgCQFKUFIEiqEAzLDqDoAJMsAjXggogRwNIgAEp0QAA1Ht7iZqrGx8AAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/view.7fea07c0.svg\";","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { get, orderBy, filter } from 'lodash';\nimport CloseIcon from '../Modal/CloseIcon';\nimport Jazzicon, { jsNumberForAddress } from 'react-jazzicon';\n\nimport Modal from '../Modal';\nimport Button from '../Button';\nimport { clearTransactionLog } from '../../store/modules/User/actions';\nimport CopyToClipboard from '../CopyToClipboard';\nimport copyIcon from './assets/copy.png';\nimport viewIcon from './assets/view.svg';\nimport checkIcon from './assets/check.png';\nimport failed from './assets/failed.png';\nimport transactionViewIcon from './assets/transaction_view.png';\n\nimport style from './ProfileModal.module.scss';\nimport { formatBlockchainAddress } from '../../utils';\n\nconst BLOCK_EXPLORER_URL_MAINNET = process.env.REACT_APP_BLOCK_EXPLORER_URL_MAINNET;\nconst BLOCK_EXPLORER_URL_TESTNET = process.env.REACT_APP_BLOCK_EXPLORER_URL_TESTNET;\n\nexport default function ProfileModal(props) {\n const { onCancel, visible, ...restProps } = props;\n const dispatch = useDispatch();\n const address = useSelector(state => state.user.userAccount.accounts ? state.user.userAccount.accounts[0] : '');\n const chainId = useSelector(state => state.user.chainId);\n const etherscanUrl = chainId === '0x38' ? `${BLOCK_EXPLORER_URL_MAINNET}/address/${address}` : `${BLOCK_EXPLORER_URL_TESTNET}/address/${address}`;\n\n const transactionLogs = useSelector(state => state.user.transactionLogs);\n const logData = filter(transactionLogs.result, item => {\n return item.chainId === chainId && get(item, 'account', '').toLowerCase() === (address || '').toLowerCase();\n });\n const recentlyLogs = orderBy(logData, ['date'], ['desc']).slice(0, 20);\n\n useEffect(() => {\n const body = document.querySelector('#transactionList');\n body?.scrollTo(0,0)\n }, [visible])\n\n return (\n
\n \n
\n Profile\n \n\n
onCancel()} className={style.closeIcon}>\n \n
\n
\n\n \n
\n Connected with Metamask\n
\n\n
\n {/*
*/}\n
\n \n
\n {formatBlockchainAddress(address)}\n
\n\n
\n \n\n window.open(etherscanUrl, '_blank')}\n />\n
\n
\n\n \n
\n Recent Transactions\n dispatch(clearTransactionLog(address, chainId))}\n />\n \n\n {recentlyLogs && recentlyLogs.length ? (\n
\n {recentlyLogs.map((item, i) => (\n \n \n {item.type}\n
\n \n \n
\n {item.isError ? (\n \n ) : (\n \n )}\n \n ))}\n \n ) : (\n
Have No Recent Transactions
\n )}\n
\n \n );\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAaBAMAAABfkYHAAAAAJ1BMVEVHcEyRkZGRkZGSkpKRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGcMyWoAAAADHRSTlMA8KEHDjK6iNJEKFZggxCAAAAAiUlEQVQY02NgYGBgDoWABUA2g8UZCDgE4qyBcg6COEyCICAD4YABcw4Sx+wMggOUqDmIkDjucxAhUQDnGJ05zgDn6JxRgHOMQLbDOCAJGIcJ7CwoBywB5QAlDOCcmjPJDDAO+5ljIAkGjmMICQaWyQgJBiQdYIAiMedMCpzNsOeEA4LDXsKAHQAA8ZJBaNr+kFIAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAXCAYAAAARIY8tAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVBJREFUeNqclktKA0EQhnuaiGbjQly59gTOBYwY3CmSKHglvYZE48qdZJUDKPjYGleOuBfBB6L+BdVQNJ3pqi74YNKd+T+mJpWZqq5rh1oA++ANTMCfK6sK7IBlcAm+PW+cgzG44uNOQTidM+IMyroIiyTZE1885LUj8GMMPxBru2CRgn7BdXTCEJwpryQVTnUDvkKLaHNWIJkX/gQGjltB1YCeUdIWTlnPUmCVtIVvhvBYoJXkwpv4Mt0cyRSsRxLHM6IKdy03MCdRhadapGmXOjwnCJI++EjsfYLttnCNgFp4DLqJvSVwkhtGXzBEpmH0BRP6aJF4Yzjd0C2LxBvDG0Yt8cZw+etSSbx4Eo0sE6qQVFIwSITPckOUkQylYCUR3ssNUUayKgXUnls+fjCEx5J7/nwHTuWf3Tug14s18MqPUWuRZIMzXsKbyb8AAwCvCHBhcb+EhQAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjBAMAAADs965qAAAAMFBMVEVHcEz/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/ukn/uknWkcRwAAAAD3RSTlMA73MDy6gy5B6I3A83jULX2DFqAAABEElEQVQoz2NgAIOkkMKSoAQGBODW+g8Cv7ThIsyK/yHgozJMqOU/DHxpgIiwycOF/pdBhBIRIv8/gq3gQFL0/78ESMgEWeT/FwOgkD6K0H8FoJvkUYWkGRiYkLhOF////8TAwIUQ+WrAB/QCA0M+QiiYgaH+//8EJNO/GjAwy4PMj0dWxAukAhj8gWQJVBHDfCDtANL91yAdoogTJFXAANQtzMBRD1f0XwCkagEDQztcEVAV0Kx/DAwWpTBFQLOANn48wMDQDFMEtBHkLhlwuM2H+RvkepAymCKg68F+lEEo+gUNCaAymKJPsPCSY76PCC+ovxcihSoDC2bYY4khLPGIEttiONMEtpSDJX2hpUIAMbGGjl0QeL8AAAAASUVORK5CYII=\"","import React from 'react';\nimport ProfileModal from './ProfileModal';\n\nexport default function ProfileModalContainer(props) {\n const {visible} = props;\n return (\n
\n );\n}\n","import ProfileModal from './ProfileModal';\nimport ProfileModalContainer from './ProfileModalContainer';\n\nexport {ProfileModalContainer};\nexport default ProfileModal;\n","export default __webpack_public_path__ + \"static/media/balanceIcon.2148f82b.svg\";","import React, { useState, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport cn from 'classnames';\nimport { Dropdown, Menu } from 'antd';\nimport Jazzicon, { jsNumberForAddress } from 'react-jazzicon';\n\nimport useRoundHistory from './useRoundHistory';\nimport EmailNotificationModal from './EmailNotificationPopup';\nimport RoundHistoryModal from './RoundHistoryModal';\n\nimport Button from '../../Button';\nimport { ProfileModalContainer } from '../../ProfileModal';\n\nimport {PAGE_HOME_PATH} from '../../../router/constants';\nimport {\n disconnect,\n // fetchWalletInfo\n} from '../../../store/modules/User/actions';\nimport { setConnectModalVisible } from '../../../store/modules/App/actions';\nimport {\n setVisibleRoundHistory,\n} from '../../../store/modules/Round/actions';\nimport formatNumber, { formatBlockchainAddress } from '../../../utils';\n\n// import flagUKIcon from './img/flag_uk.svg';\nimport moreIcon from './img/more.png';\nimport balanceIcon from './img/balanceIcon.svg';\n// import emailIcon from './img/email.png';\n// import disconnectIcon from './img/logout.png';\n// import historyIcon from './img/history.png';\nimport logo from '../../../assets/img/logo.png';\n\nimport style from './Header.module.scss';\n\nexport default function Header(props) {\n const dispatch = useDispatch();\n\n const {\n wrapperClass,\n fullWidth\n } = props;\n\n const [isVisibleMore, setVisibleMore] = useState(false);\n const [isVisibleProfileModal, setVisibleProfileModal] = useState(false);\n const [isVisibleEmailNotificationModal, setVisibleEmailNotificationModal] = useState(false);\n const [myBalance, setMyBalance] = useState(0);\n\n const [load, setLoad] = useState(false);\n\n const {isLandscapeVisible} = useSelector(state => state.app);\n const isConnected = useSelector(state => state.user.connectWallet.isConnect);\n const address = useSelector(state => state.user.userAccount.accounts ? state.user.userAccount.accounts[0] : '');\n const balance = useSelector(state => state.user.userAccount.tokenBalance);\n\n const isVisibleRoundHistory = useSelector(state => state.round?.isVisibleRoundHistory);\n const cycleInfo = useSelector(state => state.round?.cycleInfo);\n const cycleIndex = useSelector(state => state.round?.cycleIndex);\n const roundHistoryList = useSelector(state => state.round?.roundHistoryList?.response);\n const roundIndexList = useSelector(state => state.round?.roundHistoryList?.roundIndex);\n\n // const listDuration = useSelector(state => state.round?.listDuration);\n\n const { isLoading } = useRoundHistory({ load, setLoad });\n\n useEffect(() => {\n if (balance) {\n setMyBalance(balance);\n }\n }, [balance, address]);\n\n const handleProfileModalVisible = () => {\n setVisibleProfileModal(true);\n };\n\n const handleProfileModalHidden = () => {\n setVisibleProfileModal(false);\n };\n\n const handleShowEmailNotificationModal = (value) => {\n // dispatch(fetchWalletInfo(address)).then(res => console.log(res))\n\n setVisibleEmailNotificationModal(value);\n };\n\n const handleConnectWallet = () => {\n dispatch(setConnectModalVisible(true));\n };\n\n const disconnectWallet = () => {\n dispatch(disconnect());\n };\n\n const handleShowRoundHistory = (value) => {\n dispatch(setVisibleRoundHistory(value));\n };\n\n const handleLoadMore = () => {\n setLoad(true);\n }\n\n const menu = (\n
\n handleShowEmailNotificationModal(true)}\n className={style.dropdownItem}\n >\n {/* */}\n Email Notification \n \n\n handleShowRoundHistory(true)}\n className={style.dropdownItem}\n >\n {/* */}\n Round History \n \n\n \n {/* */}\n Disconnect \n \n \n );\n\n return (\n
\n );\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAICAYAAACccC2SAAAACXBIWXMAAC4jAAAuIwF4pT92AAAFzmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuMTY0NzUzLCAyMDIxLzAyLzE1LTExOjUyOjEzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjEtMDgtMDJUMTY6MzU6MjkrMDc6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjEtMDgtMDJUMTY6MzU6MjkrMDc6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIxLTA4LTAyVDE2OjM1OjI5KzA3OjAwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUzNDcwYWJkLThiMzItNDQ4Ny1hNzhjLTU3N2U2OWRjZGU0ZCIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjRkZjUzN2RlLWIzZGMtMjQ0ZS05MzMyLTk2MTFlYzRjZmE0NCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmU1ZDdjNGM0LTBkMDQtNGJlNi04OWY0LWEyYjE5NTAzZDRmNyIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmU1ZDdjNGM0LTBkMDQtNGJlNi04OWY0LWEyYjE5NTAzZDRmNyIgc3RFdnQ6d2hlbj0iMjAyMS0wOC0wMlQxNjozNToyOSswNzowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKE1hY2ludG9zaCkiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjUzNDcwYWJkLThiMzItNDQ4Ny1hNzhjLTU3N2U2OWRjZGU0ZCIgc3RFdnQ6d2hlbj0iMjAyMS0wOC0wMlQxNjozNToyOSswNzowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+wPvnKgAAARZJREFUOI2Fkb0uRFEURtdcM4VkgoZEI6KVaTQz8QoaDQ2JqKZU6JSeQDyARqLyCERHp5BQSEZEQij8RTAkLM3c5rr7zEl2c7717f1lb1TUlnqkfqr36rZa72lRVdS2eql21XN1tY9nXj1Vv9QrdUMdUMlDdP3/TtRqoulmiUd1PeCX1N8SficPchg0VF0Mmo6p34HnQx0u8Jl6l5jTyIBZ4hdpM0At0AaBRuFvChhPzGlmwGsCiLS3hKdMfwFM8upWsK4ftRGcpqZeB76L3imKnoOAf1ZHUIfU45IQa0GIvJrqY8H3kAg/qXYK/Ls6p1JRAarAAtDqnWMfOOuzfoBRYAWYADrALvCU4OvAMjAN3AJ7wA3AH1n9ZU3HwijnAAAAAElFTkSuQmCC\"","\nimport React from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {getAccountSymbol} from '../../../services/web3';\nimport Header from './Header';\nimport {setConnectModalVisible} from '../../../store/modules/App/actions';\n\nexport default function HeaderContainer(props) {\n /*\n Use container to interact with external data sources (store, api, etc.)\n */\n const dispatch = useDispatch();\n\n const {isMobile, isTablet} = useSelector(state => state.app);\n const isConnected = useSelector(state => state.user?.connectWallet.isConnect);\n const address = useSelector(state => state.user?.userAccount.accounts ? state.user.userAccount.accounts[0] : '');\n const balance = useSelector(state => state.user?.userAccount.balance ?? 0);\n const chainId = useSelector(state => state.user?.chainId);\n const symbol = getAccountSymbol(chainId);\n const onConnectClick = () => dispatch(setConnectModalVisible(true));\n\n\n return (\n
\n )\n}\n","import Header from './Header';\nimport HeaderContainer from './HeaderContainer';\n\nexport {HeaderContainer};\nexport default Header;\n","import React from 'react';\nimport style from './ProviderList.module.scss';\nimport cn from 'classnames';\nimport spinner from './spinner.png';\nimport Button from '../../Button';\n\nexport default function ProviderList(props) {\n const {wrapperClass, onSelect, onRepeat, selectedItem, requesting, error, items} = props;\n const itemList = selectedItem ? [selectedItem] : items;\n\n return (\n
\n {requesting && (\n
\n
\n Initializing\n
\n )}\n\n {selectedItem && error && (\n
\n {error}\n onRepeat && onRepeat(selectedItem)}\n />\n
\n )}\n
\n {itemList && itemList.map((item, i) => (\n \n !selectedItem && onSelect && onSelect(item)}>\n \n\n \n \n {item.name}\n \n {selectedItem && item.description && (\n \n {item.description}\n \n )}\n \n \n \n ))}\n \n
\n )\n}\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import metamask from './img/metamask.png';\nimport walletconnect from './img/walletconnect.png';\n\nexport const PROVIDER_TYPES = {\n METAMASK: 'MetaMask',\n WALLETCONNECT: 'WalletConnect',\n};\n\nexport const CONNECTION_TYPES = {\n metamask: 'metamask',\n walletconnect: 'walletconnect'\n};\n\nexport const PROVIDER_ITEMS = [\n {\n name: PROVIDER_TYPES.METAMASK,\n connector: CONNECTION_TYPES.metamask,\n description: 'Easy to use browser extension.',\n picture: metamask\n },\n {\n name: PROVIDER_TYPES.WALLETCONNECT,\n connector: CONNECTION_TYPES.walletconnect,\n description: 'Easy to use browser extension.',\n picture: walletconnect\n }\n];\n\nexport const LOADING_STATUSES = {\n LOADING: 'loading',\n LOADED: 'loaded',\n ERROR: 'error'\n};","export default \"data:image/png;base64,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\"","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport Modal from '../Modal';\nimport ProviderList from './ProviderList';\nimport { CONNECTION_TYPES, PROVIDER_ITEMS, LOADING_STATUSES } from './constants';\n\nimport { connectMetaMask, connectToWalletConnect } from '../../store/modules/User/actions';\n\nimport closeIcon from './img/close.png';\n\nimport style from './ConnectToWallet.module.scss'; \n\nexport default function ConnectToWalletModal(props) {\n const dispatch = useDispatch();\n\n const {\n wrapperClass,\n onCancel,\n visible,\n ...restProps\n } = props;\n\n const [selectedItem, setSelectedItem] = useState(null);\n const [loadingStatus, setLoadingStatus] = useState(null);\n\n const isConnected = useSelector(state => state.user?.connectWallet?.isConnect);\n\n const dispatchConnect = () => dispatch(connectMetaMask());\n const dispatchWalletConnect = () => dispatch(connectToWalletConnect());\n\n useEffect(() => {\n !selectedItem && setLoadingStatus(null);\n\n return () => {\n setSelectedItem(null);\n }\n }, [selectedItem, isConnected]);\n\n const onSelect = async (item) => {\n setSelectedItem(item);\n window.localStorage.setItem('connectorId', item.connector);\n if (item.connector === CONNECTION_TYPES.metamask) {\n setLoadingStatus(LOADING_STATUSES.LOADING);\n dispatchConnect()\n .then(res => {\n if (res) {\n setLoadingStatus(LOADING_STATUSES.LOADED);\n onCancel();\n } else {\n setLoadingStatus(LOADING_STATUSES.ERROR);\n }\n });\n } else if (item.connector === CONNECTION_TYPES.walletconnect) {\n setLoadingStatus(LOADING_STATUSES.LOADING);\n dispatchWalletConnect()\n .then(res => {\n if (res) {\n setLoadingStatus(LOADING_STATUSES.LOADED);\n onCancel();\n } else {\n setLoadingStatus(LOADING_STATUSES.ERROR);\n }\n });\n } else {\n setLoadingStatus(LOADING_STATUSES.ERROR);\n }\n };\n\n return (\n
\n \n
Connect Wallet \n\n
onCancel()} className={style.closeIcon}>\n
\n
\n
\n\n \n \n );\n}\n\n// function renderTitle(selectedItem, setSelectedItem) {\n// if (selectedItem) {\n// return (\n//
setSelectedItem(null)}\n// text={'Back'}\n// />\n// );\n// }\n// return 'Connect to a Wallet';\n// }\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqBAMAAAA37dRoAAAAHlBMVEVHcEwzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzN1RKBtAAAACXRSTlMAtswQEZ5Wa04U1Re5AAAA6UlEQVQoz23TrQ7CMBQF4MPfQA6BmCMwM0fgBQhPMAwBN4PAYXEYHmAkg9y3Zev6c09DTdvTT7T3psD/8TpFwfUMTERSCgciJW4iNaWZyAcXYdxSabojwv3+IYQ7Kl8MhXBHZYlxobGh7z1w0NjQvF1o7ClhTzVWVGFFAybqMVGH50yBrbiRq5KMChtqGnBOpbaYqcN51EJz16iD9llRBy2NcWbT+h9lbOgqwn2xdgVjQ9f9nWumG/vAlCkIOwrCnmocqMaKBpwo6nDV/YBALS5N6qnFJWZEe/xE+zEUNbhpp+R4p1JPFxV+0mzK8h18D2UAAAAASUVORK5CYII=\"","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport cn from 'classnames';\n\nimport { HeaderContainer } from './Header';\nimport ConnectToWalletModalContainer from '../ConnectToWallet';\nimport { PAGE_GAME_PATH } from '../../router/constants';\n\nimport { setConnectModalVisible } from '../../store/modules/App/actions';\n\nimport style from './Layout.module.scss';\n\nexport default function Layout(props) {\n const dispatch = useDispatch();\n const history = useHistory();\n\n const { pathname = '/' } = history.location;\n\n const { connectModalVisible } = useSelector(state => state.app);\n const isConnected = useSelector(state => state.user?.connectWallet?.isConnect);\n\n return (\n \n \n\n {props.children} \n\n {pathname === PAGE_GAME_PATH && (\n dispatch(setConnectModalVisible(false))}\n />\n )}\n
\n )\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport cn from 'classnames';\n\nimport { isChrome, iOS } from '../../utils/index';\nimport styles from './Regions.module.scss';\n\nexport const Regions = (props) => {\n const { onClick, selectedRegion, onBlur } = props;\n const [hoverRegion, setHoverRegion] = useState('');\n const imageRef = useRef(null);\n const dessertRef = useRef(null);\n const landRef = useRef(null);\n const snowRef = useRef(null);\n\n useEffect(() => {\n if (selectedRegion === '') {\n if (hoverRegion === 'doge') {\n imageRef.current.appendChild(dessertRef.current);\n } else if (hoverRegion === 'wojak') {\n imageRef.current.appendChild(snowRef.current);\n } else if (hoverRegion === 'pepe') {\n imageRef.current.appendChild(landRef.current);\n }\n }\n }, [hoverRegion]);\n return (\n\t \n \n\n \n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n {onBlur();setHoverRegion('');}}\n\t\t\t onMouseOut={() => setHoverRegion('')}>\n {\n onClick('wojak')\n }} onMouseEnter={() => {\n\t\t\t\t if (!isChrome) return;\n if (selectedRegion === '') {\n setHoverRegion('wojak');\n }\n }} d='M74.44,20.28c-1.16,1.02-1.44,1.63-1.42,3.23c0.02,1.25,0.43,2.4,1.03,3.14c1.4,1.58,2.05,2.88,2.53,4.87\n\t c0.21,0.95,0.67,1.95,1.02,2.29c0.35,0.35,0.76,1.54,0.97,2.64c0.22,1.25,0.72,2.3,1.47,2.78c0.84,0.59,0.94,0.84,0.46,1.2\n\t c-0.78,0.46-0.6,2.22,0.18,1.95c0.29-0.11,0.48-0.41,0.43-0.66c-0.05-0.3,0.23-0.81,0.57-1.16c0.53-0.51,0.73-0.41,0.99,0.64\n\t c0.16,0.7,0.23,1.9,0.14,2.76c-0.08,0.8-0.03,1.35,0.17,1.2c0.19-0.1,0.31,1.2,0.34,2.9c-0.02,1.76,0.11,3.76,0.37,4.51\n\t c0.31,1.1,0.17,1.4-0.71,1.72c-0.58,0.16-2.32,1.79-3.91,3.58c-2.88,3.26-3.95,4.03-3.39,2.46c0.23-0.71,0.13-0.75-0.84-0.19\n\t c-0.58,0.31-1.75,0.53-2.59,0.39c-0.83-0.09-2.05,0.13-2.73,0.5c-1.26,0.72-2.79,0.15-2.22-0.82c0.14-0.25-0.35-0.45-1.04-0.43\n\t c-0.98,0.02-1.27,0.22-1.02,0.77c0.31,0.85-0.42,1.06-0.93,0.27c-0.15-0.3-0.74-0.49-1.23-0.48c-0.49,0.01-1.08-0.18-1.23-0.48\n\t c-0.2-0.3,0.04-0.35,0.58-0.21c0.79,0.24,0.79,0.19-0.06-0.5c-1.09-0.88-1.98-1.02-1.52-0.28c0.15,0.25-0.04,0.5-0.43,0.51\n\t c-0.44,0.01-0.79-0.24-0.79-0.49c0-0.3-0.89-0.49-1.97-0.47c-2.2,0.04-2.63,0.9-0.57,1.16c0.74,0.09-2.1,0.13-6.26,0.15\n\t c-4.85-0.02-7.54-0.23-7.5-0.58c0.09-0.3-0.84-0.49-2.21-0.52c-4.6,0.03-3.98-0.69,0.72-0.76c2.64-0.04,5.63-0.19,6.65-0.31\n\t c1.12-0.12,2.06,0.02,2.45,0.41c0.5,0.54,0.45,0.59-0.09,0.3c-0.44-0.24-0.59-0.19-0.39,0.11c0.4,0.65,3.3,1.1,3.29,0.55\n\t c0-0.2-0.5-0.49-1.09-0.58c-0.64-0.09,1.12-0.27,3.91-0.37c2.79-0.05,5.44,0.06,5.93,0.35c0.49,0.24,2.21,0.62,3.78,0.89\n\t c1.57,0.23,3.24,0.5,3.63,0.59c0.39,0.04,0.68-0.11,0.63-0.41c-0.05-0.3,1.22-0.52,3.37-0.56c2.55,0.01,3.57-0.21,3.71-0.71\n\t c0.14-0.4-0.01-0.55-0.35-0.35c-1.11,0.77-0.44-0.14,2.11-2.94c2.41-2.55,2.6-2.95,2.28-4.45c-0.53-2.7-1.23-3.44-1.05-1.09\n\t c0.07,1.4-0.16,2.31-0.83,3.02c-0.48,0.56-1.73,2.03-2.69,3.2l-1.83,2.14l-5.09,0.13c-3.72,0.06-5.49-0.16-6.62-0.74\n\t c-1.28-0.63-3.49-0.75-13.86-0.58c-11.4,0.19-12.43,0.1-13.67-0.78c-0.74-0.49-1.53-0.93-1.83-0.92c-0.24,0-0.99-0.39-1.63-0.88\n\t c-3.12-2.41-6.48-1.2-8.66,3.15l-1.19,2.33l2.16,3.28c1.96,2.93,2.55,3.47,3.58,3.35c0.19-0.05,0.3,0.3,0.26,0.8\n\t c0.01,0.45,0.31,0.85,0.7,0.84c0.39,0.04,0.69,0.34,0.6,0.74c-0.09,0.35-0.17,1.56-0.2,2.61c-0.02,1.71,0.28,2.2,2.82,4.67\n\t c1.59,1.48,3.47,2.9,4.16,3.19l1.28,0.48l-0.09,15.4l-0.09,15.4l-1.31,0.97c-2.18,1.69-4.91,4.9-6.72,7.89\n\t c-0.9,1.57-1.86,2.89-2.11,2.99c-0.19,0.1-0.38,0.41-0.38,0.66s-0.76,1.47-1.67,2.79c-1,1.42-1.67,2.89-1.65,3.74\n\t c0.01,0.8-0.45,2.67-0.96,4.13c-0.75,2.02-1.01,3.93-1.05,7.84c0,2.81-0.16,5.27-0.3,5.47c-0.19,0.15-0.33,0.86-0.32,1.51\n\t c0.01,0.9-0.42,1.41-1.63,1.93c-0.92,0.42-2.47,1.55-3.43,2.56c-1.01,0.97-1.98,1.79-2.12,1.79c-0.49,0.01-2.46,2.4-2.45,3\n\t c0,0.3-0.24,0.56-0.53,0.56c-0.64,0.01-3.33,2.81-3.32,3.47c0,0.25-0.42,1.01-0.9,1.72c-1.58,2.13-1.61,3.49-0.12,7.88\n\t c0.98,2.89,1.89,4.58,3.18,5.92c2.19,2.17,3.88,3.55,4.42,3.54c0.78-0.01,2.53,2.22,2.9,3.71c0.21,0.8,0.57,1.8,0.87,2.14\n\t c0.95,1.24,1.47,9.21,0.79,12.18c-0.37,1.51-0.67,4.22-0.63,6.13c0.04,2.71-0.18,3.77-1.09,5.28c-1.43,2.38-2.09,6.81-0.97,6.34\n\t c0.92-0.37,0.98,0.23,0.12,1.4c-0.33,0.51-0.77,0.77-0.97,0.57c-0.55-0.59-1.26,0.97-1.23,2.88c-0.03,0.95-0.3,2.41-0.73,3.27\n\t c-0.57,1.26-0.61,1.31-0.39,0.26c0.14-0.7,0.4-2.31,0.58-3.62c0.17-1.31,0.69-2.77,1.12-3.28c0.53-0.66,0.62-1.16,0.32-1.66\n\t c-0.25-0.4-0.5-0.54-0.49-0.24c0,0.25-0.24,0.15-0.54-0.24c-0.45-0.64-0.5-0.64-0.29,0.11c0.15,0.45-0.12,1.36-0.65,1.97\n\t c-0.58,0.71-0.95,1.92-0.93,3.18c-0.02,10.78,0.15,12.34,1.45,13.77c0.45,0.44,0.8,1.09,0.81,1.34c0,0.3,1.01,2.04,2.27,3.88\n\t c1.71,2.58,2.27,3.93,2.29,5.38c0.02,1.1,0.28,2.4,0.59,2.95c0.4,0.8,0.36,1.25-0.21,1.91c-0.43,0.51-0.62,1.06-0.42,1.26\n\t c0.25,0.2,0.2,0.35-0.09,0.3c-1.33-0.28-2.1,0.13-2.33,1.14c-0.14,0.65-0.55,2.07-0.98,3.18c-0.98,2.83-0.89,5.38,0.31,6.92\n\t c1.7,2.13,3.53,6.16,3.56,7.82c0.01,0.85,0.23,1.95,0.48,2.4c0.25,0.45,0.57,1.9,0.69,3.15c0.17,1.3,0.53,2.65,0.88,3\n\t c2.55,2.97,3.25,4.01,4.41,6.5c0.71,1.59,1.52,2.88,1.71,2.88c0.69-0.01,0.46-1.71-0.39-2.9c-0.4-0.6-0.61-1.09-0.46-1.1\n\t c0.49-0.01,1.49,1.13,1.89,2.08c0.16,0.5,0.55,0.89,0.85,0.89s0.39,0.19,0.25,0.5c-0.14,0.25-0.09,0.5,0.16,0.5\n\t c0.69-0.01,1.06,1.74,0.53,2.65c-0.28,0.61-0.13,1.11,0.62,1.85c0.55,0.54,1,1.29,1.01,1.64c0.01,0.4,0.76,1.49,1.7,2.43\n\t c2.89,2.96,4.07,6.5,3.96,11.77c-0.05,2.86,0.05,3.26,1.55,5.14c1.15,1.49,1.69,1.83,1.98,1.32c0.24-0.41,0.03-1-0.57-1.65\n\t c-1.25-1.33-1.96-3.28-1.54-4.44c0.28-0.91,0.33-0.91,0.63-0.11c0.2,0.5,0.37,1.5,0.38,2.3c0.02,1,0.32,1.45,1.1,1.64\n\t c0.59,0.19,0.94,0.44,0.74,0.64c-0.14,0.2-0.09,0.75,0.22,1.3c0.4,0.7,0.9,0.94,1.73,0.72c0.63-0.11,1.42,0.08,1.72,0.42\n\t c0.3,0.4,0.89,0.69,1.28,0.68c0.34-0.01,0.79,0.34,0.94,0.74c0.2,0.55,0.5,0.59,0.89,0.29c0.39-0.36,1.37,0.23,3.16,1.85\n\t c2.39,2.17,3.44,3.61,2,2.73c-0.35-0.19-0.39-0.14-0.19,0.25c0.2,0.3,0.64,0.39,0.93,0.19c0.34-0.21,0.25,0.1-0.14,0.6\n\t c-0.43,0.56-0.48,0.81-0.09,0.55c0.29-0.21,0.58-0.16,0.59,0.14c0,0.25,0.4,0.39,0.89,0.29c0.44-0.11,0.93-0.22,1.02-0.22\n\t c0.15-0.05-0.3-0.6-0.95-1.29l-1.15-1.24l1.76-0.08c0.98-0.07,2.1-0.13,2.44-0.19c0.29-0.05,0.54,0.24,0.45,0.59\n\t c-0.04,0.4,0.11,0.55,0.4,0.34c0.24-0.15,1.03,0.08,1.72,0.57c1.24,0.93,1.75,1.93,0.66,1.39c-0.35-0.19-0.24,0,0.25,0.4\n\t c0.45,0.39,0.85,1.29,0.86,1.99c0.01,0.7,0.23,1.8,0.48,2.45c0.61,1.44,3.8,4.85,5.98,6.32c1.44,0.98,1.88,1.07,3.04,0.55\n\t c1.12-0.42,1.56-0.38,2.16,0.22c0.55,0.49,0.74,0.54,0.74,0.09c-0.01-0.35,0.14-0.5,0.29-0.31c0.15,0.15,0.11,0.65-0.18,1.11\n\t c-0.38,0.81-0.48,0.81-0.78-0.04c-0.31-0.8-0.4-0.8-0.79-0.19c-0.67,1.11-0.54,3.12,0.26,4.16c0.7,0.94,1.62,0.32,1.02-0.67\n\t c-0.15-0.3,0.04-0.35,0.44-0.21c0.54,0.19,0.78-0.01,0.77-0.51c-0.01-0.5,0.27-1.46,0.65-2.22c0.99-2.17,1.41-3.84,0.78-3.42\n\t c-0.29,0.21-0.54,0.06-0.54-0.29c-0.01-0.45-0.15-0.45-0.49,0.11c-0.24,0.41-0.48,0.51-0.49,0.21c-0.01-0.35-0.74-0.59-1.72-0.57\n\t c-0.93,0.02-1.56,0.23-1.41,0.47s-0.29,0.26-0.98-0.03c-0.84-0.29-1.28-0.28-1.27,0.02c0,0.3,0.25,0.5,0.6,0.49\n\t c0.29,0,0.39,0.14,0.25,0.35c-0.19,0.15-0.79-0.14-1.38-0.73c-0.55-0.64-1.19-0.98-1.39-0.88c-0.19,0.15-0.39-0.04-0.4-0.34\n\t c-0.01-0.45,0.48-0.61,1.41-0.47c0.74,0.09,1.38,0.38,1.38,0.63c0,0.2,1.03,0.28,2.35,0.11c1.27-0.22,3.52-0.11,5,0.22\n\t c1.47,0.28,3.98,0.69,5.55,0.91c2.06,0.27,3.29,0.75,4.19,1.59c0.75,0.69,2.67,1.86,4.25,2.54c1.63,0.73,3.5,1.7,4.15,2.24\n\t c1.04,0.79,1.73,0.87,4.46,0.58c3.62-0.41,6.41,0.05,11.78,1.86c4.53,1.48,5.61,1.46,10.77-0.23c3.41-1.11,4.73-1.33,7.13-1.07\n\t c1.62,0.12,3.53,0.29,4.31,0.33c0.74,0.04,1.33,0.23,1.33,0.38c0.01,0.7,3.19,0.7,6.27-0.05c3.66-0.86,4.2-0.87,9.54-0.46\n\t c2.99,0.2,4.36,0.08,6.5-0.66c2.97-1,6.25-0.91,8.18,0.32c0.59,0.39,2.66,0.86,4.52,0.98c1.91,0.17,3.68,0.54,4.03,0.79\n\t c0.3,0.25,1.77,0.57,3.19,0.7c2.45,0.16,2.79,0.05,5.31-1.84c2.37-1.79,3.15-2.06,6.03-2.31c3.13-0.25,3.42-0.41,4.86-2.14\n\t c1.92-2.34,4.3-3.43,7.58-3.49c2.55-0.04,6.34,1.2,6.35,2.05c0,0.2,0.2,0.3,0.39,0.14c0.24-0.15,1.57,0.28,3,0.95\n\t c3.16,1.4,3.74,1.44,6.17,0.05c1.07-0.57,3.06-1.2,4.38-1.38c2.2-0.29,2.64-0.14,4.38,1.23c2.08,1.67,1.98,1.62,8.69,1.61l4.65-0.03\n\t l2.53,2.07c1.89,1.57,2.64,2.67,3.16,4.36c0.36,1.2,0.92,2.49,1.32,2.79c0.74,0.64,1.81,0.12,1.36-0.67\n\t c-0.25-0.35-0.1-0.4,0.29-0.16c0.49,0.29,0.4,0.6-0.37,1.31c-1.21,0.97-1.34,1.58-0.42,1.41c0.98-0.17,2.51,0.56,3.8,1.99\n\t c1.39,1.43,2.97,1.76,2.95,0.6c-0.01-0.4,0.19-0.6,0.43-0.46s0.93-0.17,1.56-0.68c0.63-0.51,1.65-1.08,2.18-1.29\n\t c0.58-0.21,1.65-0.93,2.32-1.59c1.83-1.79,4.52-1.83,5.19-0.09c0.26,0.7,0.71,1.24,1,1.24c0.29,0,1.05,1.14,1.66,2.53\n\t c0.86,1.84,1.66,2.78,3.09,3.61c1.09,0.58,1.93,1.37,1.84,1.73c-0.04,0.35,0.11,0.5,0.35,0.3c0.68-0.41,2.7,3.62,2.43,4.78\n\t c-0.37,1.46,0.66,4.45,1.95,5.74c1.05,1.04,1.44,1.08,5.89,0.81c2.64-0.14,5.03-0.48,5.37-0.79c0.29-0.26,1.9-0.58,3.56-0.76\n\t s3.22-0.4,3.47-0.56c0.53-0.36,7.06,0.54,7.75,1.03c0.25,0.15,0.8,0.89,1.25,1.63c0.5,0.69,1.5,1.63,2.24,2.02\n\t c0.74,0.39,2.07,1.07,2.96,1.51c0.84,0.44,2.51,1.01,3.69,1.19c1.62,0.32,1.77,0.42,0.74,0.49c-1.22,0.07-1.32,0.17-0.62,0.81\n\t c0.4,0.39,1.14,0.73,1.68,0.72c0.93-0.02,0.93-0.12,0.24-3.16c-2.58-10.94-3.03-14.6-2.87-22.88c0.27-13.1,1.53-29.27,2.53-33.9\n\t c1.65-7.1,2.02-8.01,4.47-10.86c4.85-5.5,4.99-5.95,4.87-13.37c-0.09-5.77-0.26-6.97-1.54-10.51c-1.95-5.54-2.26-6.43-4.05-10.97\n\t c-1.38-3.59-1.54-4.59-1.63-10.01c-0.1-3.41,0.09-6.62,0.37-7.43c0.56-1.46,0.23-4.12-1.38-9.36c-2.96-10.03-4.21-12.12-9.26-15.45\n\t c-2.57-1.76-15.73-9.72-17.9-10.89c-5.24-2.82-9.06-6.12-16.88-14.47c-3.09-3.31-5.51-4.62-12.65-6.97c-3.2-1-4.14-1.64-7.82-5.09\n\t l-4.23-3.94l-0.51-4.26c-0.34-2.95-0.97-5.2-1.98-7.24c-0.81-1.64-1.93-3.98-2.53-5.18c-2.23-4.63-1.18-9.11,3.93-16.82\n\t c3.25-4.87,3.49-5.22,5.29-9.07l1.37-2.88l-1.11-1.94c-0.6-1.04-2.4-3.12-3.99-4.6c-4.77-4.39-6.72-6.46-6.73-7.26\n\t c-0.01-0.4,1.38-2.28,3.11-4.21c1.68-1.93,3.55-4.57,4.06-5.89c0.57-1.36,1.18-2.88,1.41-3.43c2.35-5.81,3.72-11.85,3.65-16.21\n\t c-0.05-3.31-0.26-4.21-1.88-7.44c-1.72-3.53-4.87-7.29-7.94-9.45c-15.21-10.99-23.36-18.48-26.25-24.3\n\t c-0.51-0.94-1.11-2.09-1.36-2.49c-0.3-0.4-1.67-3.18-3.04-6.12l-2.59-5.43l-0.2-6.32c-0.15-6.12,0.1-8.58,1.63-13.92\n\t c0.55-2.07,0.23-3.87-0.81-4.5c-0.35-0.19-2.16-0.32-4.07-0.28c-2.59,0.09-3.67,0.31-4.05,0.87c-0.29,0.46-0.77,0.82-1.06,0.82\n\t c-0.49,0.01-3.41,1.31-5.93,2.61c-2.09,1.04-3.8,1.07-7.1-0.03c-2.46-0.86-4.13-1.09-5.89-0.91c-1.61,0.18-3.77-0.09-6.28-0.8\n\t l-3.84-1.04l-1.06,1.12c-0.72,0.66-1.74,1.08-2.92,1.1c-3.38,0.06-9.62,1.81-9.6,2.72c0,0.2-0.67,0.91-1.54,1.53\n\t c-1.26,0.97-1.5,1.03-1.22,0.27c0.19-0.5,0.13-0.75-0.2-0.55c-0.24,0.2-0.83,0.06-1.23-0.28c-0.6-0.49-0.64-0.44-0.34,0.36\n\t c0.16,0.5,0.56,1.09,0.85,1.29c0.35,0.25,0.25,0.4-0.19,0.4c-1.08-0.03-2.22-1.02-3.13-2.81c-1.21-2.29-4.41-3.39-7.73-2.58\n\t c-3.71,0.86-5.35,1.94-5.67,3.7c-0.13,0.8-0.46,1.61-0.75,1.82c-0.29,0.21-0.39,0.01-0.2-0.5c0.56-1.56-0.41-1.25-2.29,0.74\n\t c-1.78,1.78-3.39,2.56-5.88,2.81c-0.54,0.06-1.61,0.13-2.35,0.19c-0.78,0.06-1.27,0.27-1.17,0.47c0.25,0.4-0.82,0.62-3.51,0.76\n\t c-0.83,0.06-0.98,0.17-0.48,0.46c0.5,0.34,0.35,0.55-0.67,0.96c-0.73,0.31-1.31,0.77-1.31,1.02c0,0.3-0.34,0.41-0.73,0.26\n\t c-0.49-0.19-0.64,0.01-0.48,0.81c0.16,0.65-0.08,1.16-0.61,1.36c-0.44,0.21-0.97,0.62-1.16,0.97c-0.24,0.36-1.41,0.78-2.73,1\n\t c-1.86,0.28-2.79,0.15-4.86-0.82c-1.43-0.63-2.42-1.36-2.23-1.57c0.19-0.25,0.04-0.25-0.25-0.05c-0.34,0.21-1.42-0.03-2.41-0.46\n\t c-1.04-0.48-2.66-0.81-3.73-0.79c-1.03,0.02-1.86-0.12-1.87-0.32c0-0.25-0.45-0.29-0.98-0.13c-0.54,0.16-2.01-0.02-3.29-0.45\n\t c-1.33-0.38-2.95-0.85-3.69-0.99c-0.79-0.14-1.33-0.48-1.33-0.68c0.13-0.91-0.12-1.6-0.61-1.6c-0.24,0-0.34,0.26-0.14,0.6\n\t c0.2,0.35,0.15,0.4-0.19,0.2c-0.3-0.2-0.4-0.7-0.26-1.15c0.19-0.55,0.14-0.7-0.3-0.45c-0.29,0.21-0.49,0.16-0.44-0.09\n\t c0.09-0.3-0.06-0.55-0.35-0.6c-0.69-0.14-1.98-1.07-3.91-2.8c-0.89-0.84-2.18-1.67-2.82-1.86c-1.62-0.47-2.47-1.21-2.09-1.87\n\t c0.14-0.25,0.09-0.4-0.15-0.25c-0.24,0.15-1.18-0.28-2.07-1.07c-1.24-1.03-1.49-1.43-0.91-1.64c0.44-0.21,1.23,0.18,1.87,0.87\n\t c0.65,0.69,1.39,1.23,1.68,1.23c1.08-0.02,8.17,5.53,7.93,6.19c-0.14,0.4,0.01,0.55,0.45,0.39c0.34-0.16,1.23,0.48,2.08,1.47\n\t c0.9,1.19,1.79,1.78,2.62,1.76c0.69-0.01,2.21,0.31,3.39,0.75c1.23,0.38,3.39,0.65,4.81,0.57c2.05-0.13,2.94,0.05,4.08,0.89\n\t c0.79,0.59,1.98,1.07,2.66,1.06c0.69-0.01,1.62,0.42,2.12,0.92c0.5,0.54,1.93,1.07,3.15,1.25c2.75,0.36,4.93-0.63,5.98-2.76\n\t c0.38-0.76,1.15-1.82,1.68-2.33c1.01-0.97,5.3-2.29,9.21-2.81c1.12-0.17,2.05-0.54,2.04-0.84c0-0.3,0.14-0.35,0.34-0.21\n\t c0.15,0.2,0.88-0.01,1.51-0.48c1.11-0.77,1.21-0.77,0.93-0.02c-0.19,0.55-0.13,0.75,0.2,0.55c0.29-0.21,0.38-0.66,0.23-1.01\n\t c-0.1-0.35,0.03-0.9,0.32-1.26c0.34-0.36-0.05-0.25-0.78,0.26c-0.73,0.51-1.46,0.78-1.66,0.58c-0.2-0.15-0.78,0.01-1.36,0.42\n\t c-0.58,0.41-2.48,0.89-4.19,1.12c-4.01,0.47-7.51,2.08-8.84,4.11c-0.57,0.86-1.34,1.98-1.77,2.44c-0.96,1.22-3.95,1.22-5.97,0\n\t c-0.89-0.54-2.12-0.97-2.71-0.96c-0.59,0.01-1.18-0.18-1.38-0.43c-0.6-0.99-3.46-2-5.61-1.96c-1.22-0.03-3.78-0.39-5.69-0.81\n\t c-2.95-0.7-3.79-1.19-5.93-3.26c-3.08-3.01-5.96-5.27-7.29-5.8c-0.54-0.19-1.83-1.02-2.87-1.81C79.16,18.55,76.52,18.49,74.44,20.28\n\t z'/>\n {\n onClick('pepe');\n setHoverRegion('');\n }} onMouseEnter={() => {\n\t\t\t\t if (!isChrome) return;\n if (selectedRegion === '') {\n setHoverRegion('pepe');\n }\n }} d='M315.32,3c-4.19,0.81-8.62,2.02-9.48,2.52c-0.76,0.4-1.11,0.3-1.66-0.4c-0.35-0.5-0.71-1.06-0.71-1.26\n\t c0-0.15-1.31-0.25-2.87-0.15c-1.61,0.05-4.64,0.2-6.71,0.3c-3.38,0.2-3.78,0.3-3.63,1.16c0.15,0.76-0.05,0.91-0.86,0.66\n\t c-0.61-0.15-0.96,0-0.91,0.3c0.1,0.61-6.2,2.57-10.99,3.43c-4.79,0.86-11.35,1.11-11.35,0.5c0-0.3-0.45-0.55-1.01-0.55\n\t c-0.61,0-1.11-0.45-1.26-1.16c-0.15-0.61-1.11-1.66-2.12-2.37c-1.46-1.01-2.42-1.26-4.69-1.21c-1.56,0.05-3.38,0.35-4.03,0.76\n\t c-0.71,0.35-1.46,0.71-1.77,0.71c-0.25,0-0.45,0.4-0.45,0.86c0.05,0.55-0.2,0.71-0.71,0.55c-0.45-0.2-0.66-0.1-0.45,0.2\n\t c0.5,0.81-0.86,1.16-4.34,1.21c-4.03,0-10.09,2.87-11.8,5.55c-2.02,3.08-2.02,3.08-4.09,1.82c-1.01-0.61-2.98-1.41-4.29-1.77\n\t c-2.22-0.55-2.62-0.55-4.14,0.4c-0.91,0.55-1.97,1.01-2.42,1.01c-0.4,0-1.26,0.4-1.92,0.91c-3.83,3.13-5.55,24.56-2.42,29.86\n\t c0.25,0.4,0.71,1.31,1.01,2.02c3.08,7.36,7.31,14.42,11.05,18.46c2.12,2.27,13.77,11.7,18.36,14.83c5.7,3.83,9.83,9.48,10.59,14.37\n\t c0.4,2.62-0.25,6.91-1.92,13.01c-1.97,7.26-3.33,9.83-6.86,13.11c-3.58,3.33-4.09,4.84-2.77,8.17c0.45,1.26,1.01,2.27,1.21,2.27\n\t c0.76,0,9.13,8.37,9.13,9.08c-0.05,0.4-0.61,1.66-1.26,2.77c-0.66,1.11-1.66,2.93-2.27,4.03c-0.61,1.11-2.17,3.48-3.48,5.3\n\t c-2.42,3.33-4.59,8.98-4.59,11.85c0,2.27,1.26,6.56,2.98,10.04c1.82,3.73,1.92,4.09,2.57,8.78c0.5,3.48,1.46,6.15,2.72,7.41\n\t c2.02,2.02,7.67,6.81,8.02,6.81c0.4,0,3.18,1.01,9.94,3.68c1.66,0.71,3.43,1.87,4.54,3.13c7.41,8.32,13.01,13.21,19.97,17.3\n\t c8.27,4.89,18.76,11.6,19.92,12.66c2.32,2.22,5.19,9.53,6.2,15.84c0.35,2.17,0.91,4.19,1.21,4.49c0.45,0.45,1.46,0.45,4.14,0\n\t c1.97-0.35,4.84-0.61,6.46-0.61c2.72-0.05,4.64-0.81,4.64-1.87c0-0.71,2.87-3.18,3.68-3.18c0.35,0,1.41-0.66,2.32-1.46\n\t c1.97-1.77,3.63-2.02,16.44-2.17l9.08-0.15l7.31,3.63c13.57,6.76,17.05,7.51,26.98,5.95c9.83-1.51,9.53-1.36,11.2-5.25\n\t c2.72-6.51,5.4-9.73,9.08-11.15c3.43-1.26,6.71-1.26,10.24,0.05c5.95,2.17,6.41,2.22,8.22,0.81c0.91-0.71,3.13-2.77,4.89-4.59\n\t l3.28-3.33v-4.44c0-4.09,0.1-4.59,1.36-6.3c0.81-0.96,1.41-2.02,1.41-2.27c0-0.25,0.35-0.76,0.76-1.11\n\t c0.55-0.45,0.76-1.66,0.76-4.24c0-3.83,0.55-5.14,3.38-8.17c2.98-3.18,5.09-6.61,6.46-10.54c0.76-2.22,2.42-6.1,3.68-8.57\n\t c1.26-2.52,2.72-5.4,3.23-6.41c0.96-1.97,1.21-5.19,0.45-5.65c-0.25-0.15-0.55-1.01-0.71-1.92c-0.1-0.91-0.45-2.42-0.76-3.28\n\t c-0.5-1.51-0.4-1.82,1.16-3.68c0.91-1.06,2.62-3.73,3.78-5.85c2.02-3.68,2.12-4.03,1.87-6.96c-0.15-1.71-0.55-4.34-0.81-5.85\n\t c-0.45-2.47-0.4-2.82,0.5-3.83c1.56-1.66,1.97-3.98,1.97-10.79c0-3.48,0.25-7.21,0.55-8.32c0.61-2.17,2.77-5.3,3.68-5.3\n\t c0.35,0,1.87-1.11,3.38-2.42c2.93-2.62,10.94-6.81,15.23-7.97c1.97-0.5,4.29-0.61,8.93-0.4c5.3,0.3,6.61,0.2,7.92-0.45\n\t c2.12-1.11,3.68-3.18,3.68-4.89c0-1.51,0.91-2.02,3.88-2.02c1.36,0,2.12-0.5,4.03-2.62c5.4-5.9,5.4-5.85,8.17-6.25\n\t c2.27-0.3,2.82-0.61,3.63-1.92c0.5-0.86,0.96-2.17,0.96-2.87c0-1.21,0.3-1.41,2.93-2.12c1.56-0.4,3.63-0.91,4.54-1.11\n\t c3.23-0.66,8.27-5.25,10.29-9.33c0.76-1.51,2.42-3.93,3.68-5.3c1.31-1.41,3.23-3.53,4.24-4.79c1.01-1.26,1.92-2.37,2.07-2.52\n\t s1.06-1.21,1.97-2.42c1.61-2.07,1.66-2.32,1.41-5.3c-0.3-3.78-0.96-5.04-3.88-7.72c-2.82-2.57-4.19-3.33-5.35-2.87\n\t c-0.55,0.2-0.76,0.15-0.55-0.2c0.25-0.4-0.3-0.4-1.77-0.1c-1.11,0.3-2.42,0.45-2.87,0.4c-0.45-0.1-1.66,0.25-2.77,0.71\n\t c-1.06,0.45-2.12,0.86-2.27,0.86c-0.2,0-1.26,0.66-2.37,1.51c-1.06,0.81-2.22,1.51-2.57,1.51c-0.86,0-1.36-2.02-0.71-2.67\n\t c0.86-0.86,0.71-1.16-1.46-3.48c-1.71-1.82-2.12-2.07-2.57-1.41c-0.45,0.66-0.5,0.66-0.25-0.1c0.15-0.45-0.15-1.31-0.61-1.87\n\t c-0.96-1.06-10.04-6.61-10.89-6.61c-0.3,0-1.11-0.45-1.82-1.01c-0.71-0.55-1.46-1.01-1.77-1.01c-0.25,0-1.82-1.26-3.48-2.72\n\t c-2.98-2.77-4.39-3.33-8.47-3.33c-1.06,0-1.92,0.15-1.92,0.4c0,0.2,0.86,0.4,1.92,0.45c4.29,0.2,6.35,0.96,8.12,2.87\n\t c1.56,1.66,0.81,1.71-0.96,0.05c-1.31-1.26-2.07-1.41-9.48-1.97c-2.17-0.15-3.33-0.05-3.73,0.4c-0.35,0.35-1.06,0.55-1.56,0.4\n\t c-0.55-0.15-1.11-0.05-1.31,0.25c-0.15,0.25-0.86,0.35-1.51,0.15c-1.01-0.2-0.4-0.5,2.62-1.26c2.12-0.5,3.88-1.16,3.88-1.36\n\t c0-0.55-0.96-0.45-3.28,0.35c-1.11,0.4-2.47,0.76-3.08,0.76c-0.55,0-1.46,0.35-2.02,0.81c-0.5,0.4-0.66,0.61-0.3,0.45\n\t c0.5-0.25,0.66-0.1,0.5,0.55c-0.2,1.26-2.62,2.37-5.3,2.52c-2.17,0.15-4.94,1.77-4.29,2.47c0.2,0.25,0.05,0.25-0.3,0.05\n\t c-0.4-0.25-1.11,0-1.71,0.55c-0.61,0.5-0.91,0.61-0.71,0.25c0.35-0.55,0.2-0.55-0.61-0.05c-0.61,0.35-1.26,0.5-1.46,0.3\n\t c-0.2-0.25-0.05-0.61,0.35-0.86c0.55-0.35,0.05-0.5-1.51-0.45c-1.71,0-2.02,0.1-1.26,0.45c0.55,0.25,0.81,0.45,0.5,0.5\n\t c-0.25,0.05-0.05,0.3,0.5,0.55c0.86,0.4,0.81,0.45-0.25,0.15c-0.71-0.15-1.82-0.4-2.52-0.5c-1.21-0.25-1.21-0.25-0.3,0.5\n\t c0.66,0.55,0.76,0.81,0.3,0.81c-0.35,0-1.11-0.35-1.61-0.86c-0.86-0.76-0.91-0.76-0.91,0c0,0.5-0.25,0.86-0.55,0.86\n\t c-0.25,0-0.35-0.2-0.2-0.5c0.35-0.55-2.87-0.05-3.28,0.5c-0.35,0.55-4.54,0.25-6.05-0.4c-0.71-0.3-1.87-0.66-2.62-0.81\n\t c-0.81-0.2-1.41-0.66-1.41-1.01c0-0.61,0.2-0.61,1.41-0.05c1.97,0.91,4.29,1.41,3.88,0.81c-0.15-0.3-1.11-0.66-2.17-0.86\n\t s-2.37-0.91-3.03-1.66c-0.71-0.76-1.06-0.96-0.96-0.5c0.25,0.76,0.15,0.76-1.26,0.05c-1.82-0.91-7.51-1.01-9.68-0.15\n\t c-0.86,0.35-1.66,0.4-2.02,0.15c-0.3-0.25-1.21-0.66-2.07-0.86l-1.51-0.45l2.02-0.3l2.02-0.3l-2.67-0.25\n\t c-2.62-0.2-2.67-0.2-2.37,1.06c0.3,1.16,0.15,1.11-1.36-0.55c-2.22-2.42-3.63-3.23-7.06-3.98c-2.32-0.5-3.48-0.5-6.05,0\n\t c-1.77,0.3-3.48,0.86-3.83,1.11c-0.45,0.4-0.55,0.35-0.3-0.3c0.15-0.45,0.5-0.81,0.81-0.81c0.25,0,0.81-0.35,1.21-0.76\n\t c1.31-1.26-0.15-0.86-1.77,0.55c-1.61,1.31-3.08,1.36-3.08,0c0-0.35-0.35-0.86-0.81-1.01c-0.76-0.3-0.76-0.2,0,0.91\n\t c1.01,1.56,1.06,2.37,0.1,2.02c-0.4-0.15-1.01-0.96-1.31-1.77c-0.91-2.12-2.27-2.87-5.65-3.28c-2.22-0.25-2.93-0.55-2.93-1.11\n\t c0-0.76-2.87-3.63-3.63-3.63c-0.2,0-0.25,0.5-0.15,1.11l0.2,1.16l-0.86-1.06c-1.16-1.46-2.72-2.22-4.64-2.22\n\t c-0.86,0-2.37-0.35-3.38-0.76c-2.17-0.91-5.4-0.96-8.52-0.15c-2.02,0.55-2.37,0.55-2.77-0.2c-0.35-0.66-1.31-0.81-5.35-0.76\n\t c-2.72,0.05-4.14,0.2-3.18,0.35c1.36,0.2,1.56,0.35,0.86,0.66c-0.5,0.2-1.31,0.35-1.77,0.35c-0.4,0-1.16,0.35-1.66,0.81\n\t s-2.02,0.86-3.58,0.96c-1.46,0.1-3.68,0.4-4.84,0.66c-1.92,0.45-2.32,0.4-3.18-0.45c-0.5-0.5-0.96-0.76-0.96-0.45\n\t c0,0.25-1.41,0.4-3.38,0.3c-4.03-0.25-6.71-0.76-6.71-1.31c0-0.4-3.68-1.16-6.05-1.31c-2.52-0.1-2.82-0.2-2.87-1.26\n\t c-0.1-1.36-0.3-1.56-1.36-1.16c-0.45,0.15-0.66,0.5-0.5,0.81c0.15,0.25-0.15,0.2-0.66-0.15c-0.55-0.3-1.01-0.91-1.01-1.26\n\t c0-0.81,0.66-0.91,1.11-0.2c0.15,0.25,0.55,0.5,0.91,0.5c0.61,0-2.62-2.98-3.28-3.03c-0.2,0-0.15,0.61,0.1,1.36l0.5,1.41l-1.21-1.36\n\t c-0.86-0.96-2.17-1.51-5.14-2.17c-2.22-0.5-4.84-1.31-5.95-1.87c-1.26-0.66-3.48-1.06-6.41-1.26c-3.63-0.25-4.79-0.5-6.1-1.46\n\t C320.87,2.4,319.05,2.24,315.32,3z'/>\n {\n onClick('doge')\n }} onMouseEnter={() => {\n\t\t\t\t if (!isChrome) return;\n if (selectedRegion === '') {\n setHoverRegion('doge');\n }\n }} d='M590,13.74c-0.36,0.41-0.82,0.67-0.97,0.51c-0.2-0.1-1.18,0.67-2.15,1.74c-1.23,1.28-2.61,2.15-4.25,2.61\n c-1.38,0.36-3.02,1.18-3.68,1.79c-1.28,1.18-1.69,2.15-0.61,1.48c0.36-0.2,0.41-0.15,0.2,0.2c-0.2,0.36-0.67,0.61-1.07,0.61\n c-0.87,0-4.96,5.58-4.55,6.19c0.15,0.26-0.05,0.36-0.41,0.2c-1.18-0.41-2.61,2.25-2.76,5.17c-0.1,1.53-0.26,2.97-0.41,3.22\n c-0.15,0.26-0.15,2.25,0.05,4.45c0.31,4.04,0.36,4.04,3.07,6.91c4.2,4.45,3.84,6.7-2.2,13.25c-4.71,5.07-8.9,10.49-8.9,11.51\n c0,0.72-4.86,5.47-6.4,6.24c-0.56,0.31-2.51,0.82-4.35,1.18c-5.37,1.02-6.65,1.94-6.65,5.01c0,2.05-0.46,2.4-3.63,3.12\n c-2.61,0.56-3.27,0.97-6.5,4.35c-3.48,3.58-3.79,3.73-6.6,4.09c-3.58,0.41-4.25,0.92-4.25,3.33c0,3.73-1.07,4.14-11.36,4.14h-8.39\n l-6.55,3.27c-3.58,1.84-6.91,3.79-7.32,4.35c-0.41,0.61-1.84,1.84-3.17,2.76c-2.81,1.89-5.42,4.71-6.14,6.65\n c-0.31,0.77-0.77,5.22-1.02,9.87c-0.51,7.93-0.61,8.54-1.84,9.98c-1.48,1.79-1.53,2.51-0.51,7.11c1.18,5.37,1.02,7.21-0.92,10.03\n c-4.76,7.01-5.58,8.75-5.32,11.1c0.15,1.23,0.67,3.43,1.18,4.91l0.82,2.66l-2.81,6.24c-1.59,3.43-3.58,8.19-4.5,10.59\n c-1.89,5.12-2.71,6.34-6.8,10.64l-3.07,3.17l-0.31,3.99c-0.26,2.97-0.72,4.76-2.05,7.42c-0.92,1.89-1.89,3.58-2.1,3.73\n c-0.26,0.15-0.46,2.25-0.46,4.71v4.5l-2.97,2.81c-5.32,5.07-4.5,4.81-9,3.02c-3.12-1.23-4.66-1.53-7.78-1.53\n c-5.83,0-8.19,1.23-11.92,6.14c-1.64,2.15-3.48,5.22-4.14,6.8c-1.38,3.27-0.56,2.97-10.9,4.45l-7.06,1.02l-3.12-1.02\n c-1.74-0.56-3.43-1.02-3.79-1.02c-0.31,0-4.09-1.74-8.34-3.84c-10.23-5.07-11.46-5.37-20.26-5.17c-3.94,0.1-9,0.2-11.26,0.26\n c-3.99,0.05-4.14,0.1-5.01,1.53c-0.51,0.87-1.38,1.69-2.05,1.89c-1.94,0.61-4.81,2.76-5.37,4.04c-0.51,1.07-0.92,1.28-3.02,1.28\n c-4.2,0.05-8.9,0.92-9.98,1.89c-1.94,1.74-2.61,4.2-2.61,9.46c0.05,4.6,0.2,5.47,2.71,12.53c4.04,11.61,4.71,14.22,4.76,19.34\n c0.1,5.17-0.31,6.14-4.6,11.15c-1.28,1.48-2.76,3.63-3.27,4.76c-1.07,2.35-2.66,9.82-3.53,16.63c-1.48,11.26-2.51,37.04-1.53,38.01\n c0.26,0.26,0.51,1.48,0.51,2.66c0,2.2,1.13,7.73,2.05,10.18c0.26,0.72,0.87,1.28,1.38,1.28c0.72,0,0.77,0.1,0.26,0.46\n c-1.07,0.67,0.67,2.1,2.51,2.1c1.89,0,3.68-0.87,3.22-1.59c-0.15-0.31,0.15-0.26,0.77,0.15c0.61,0.36,1.23,1.43,1.38,2.35\n c0.26,1.28,0.82,1.94,2.46,2.92c1.84,1.07,2.66,1.23,6.14,1.07c3.27-0.1,4.2-0.31,4.86-1.13c0.67-0.82,1.89-1.18,5.68-1.59\n c2.66-0.31,5.99-0.41,7.37-0.31c1.38,0.15,3.38,0,4.45-0.36c1.94-0.67,2-0.67,3.99,1.38c2.35,2.46,6.34,3.99,8.85,3.48\n c0.92-0.2,2.25-1.02,2.97-1.84c0.82-1.02,1.89-1.59,3.07-1.74c2.05-0.26,6.96,1.02,8.03,2.1c0.51,0.51,1.89,0.72,4.5,0.72\n c4.09,0,4.14,0,7.06-4.55c0.61-0.97,1.48-1.94,1.89-2.15c0.92-0.51,3.99-1.74,5.37-2.2c0.72-0.26,0.82-0.46,0.36-0.77\n c-0.51-0.31-0.46-0.56,0.2-1.13c0.77-0.61,0.87-0.61,0.46,0c-0.26,0.51-0.2,0.61,0.2,0.36c0.31-0.2,0.46-0.56,0.31-0.82\n c-0.15-0.26,0.05-0.72,0.41-1.13c0.36-0.36,1.18-1.48,1.79-2.51c0.61-1.02,1.89-2.56,2.87-3.38c2.1-1.79,2.4-2.97,2.66-11.77\n c0.26-9.06,0.31-9.36,1.84-11.66c0.77-1.13,1.53-2.66,1.69-3.43c0.2-0.72,1.07-2.25,2-3.33c0.92-1.07,1.94-2.46,2.3-3.12\n c0.36-0.61,0.82-1.02,1.13-0.87c0.26,0.2,0.46-0.31,0.46-1.13c0.05-1.89,1.94-5.17,3.58-6.09c1.64-0.92,4.25-1.94,4.76-1.84\n c0.2,0.05,0.36-0.1,0.36-0.41c0-0.56,2.71-2.05,3.79-2.05c0.46,0,1.38,0.92,2.05,2c0.97,1.53,1.89,2.2,3.79,2.81\n c1.38,0.46,3.43,1.53,4.5,2.35c2.71,2.05,4.3,1.94,10.69-0.56c2.97-1.18,5.73-1.94,6.24-1.79c0.51,0.2,1.28,1.07,1.69,1.94\n c0.82,1.74,1.48,2.25,3.63,2.66c1.07,0.26,1.43,0.67,1.69,2.2c0.61,3.84,4.6,6.65,8.34,5.99c1.02-0.2,2.92,0.15,5.42,1.02\n c2.15,0.72,4.76,1.33,5.83,1.33c1.79,0,7.16-1.28,9.52-2.3c0.72-0.31,0.87-0.1,0.87,0.92c0,0.72,0.15,1.38,0.41,1.48\n c0.2,0.1,1.13,1.74,2.1,3.63c1.89,3.79,3.73,5.53,7.21,6.75c1.89,0.67,3.53,0.72,11.36,0.26l9.16-0.51l3.94-2.71\n c3.99-2.76,6.96-6.24,9.41-11c0.61-1.18,1.33-2.2,1.64-2.2c0.31-0.05,1.28-0.15,2.1-0.26c2.92-0.31,3.58-0.36,10.54-0.2\n c6.65,0.15,7.11,0.1,9.72-1.23c3.53-1.74,6.45-4.55,8.34-8.03c0.82-1.53,1.69-3.02,1.94-3.38c0.46-0.56,6.5-4.2,7.83-4.71\n c1.13-0.41,2.3-1.79,2.3-2.66c0-2.1,1.28-3.53,4.55-5.27c1.84-0.97,4.14-2.56,5.12-3.53c1.79-1.89,1.79-1.94,2.15-12.38\n c0-0.56-0.15-2.25-0.36-3.68c-0.31-2.56-0.26-2.71,0.77-2.71c1.28,0,4.14-2.61,4.14-3.73c0-0.41,1.23-2,2.71-3.48\n c1.43-1.48,3.38-3.99,4.2-5.58c1.69-3.22,8.08-9.52,9.06-8.9c0.36,0.2,0.41,0.15,0.2-0.26c-0.2-0.31,0-0.72,0.56-0.92\n c0.51-0.15,2-1.07,3.38-2.05c1.64-1.13,2.97-1.69,4.2-1.69c2.4,0,5.63-2.1,6.7-4.35c0.92-2,1.28-2.3,3.48-3.07\n c1.94-0.67,2.4-2.4,2-7.26c-0.31-3.53-0.36-3.79-2-4.76c-1.43-0.82-1.74-1.28-1.74-2.66c0-0.97-0.31-2.97-0.72-4.45\n c-0.41-1.69-0.56-3.33-0.31-4.14c0.46-1.53,0.1-3.94-0.56-4.4c-1.23-0.72,0.36-3.79,2-3.79c0.67,0,3.17-2.4,3.17-3.02\n c0-0.2,0.46-0.82,1.02-1.33c1.48-1.33,1.28-3.38-0.56-5.42c-1.18-1.33-1.48-2.05-1.23-3.02c0.15-0.72,0.46-1.89,0.61-2.66\n c0.15-0.77,0.56-1.69,0.97-2c0.41-0.31,0.72-0.87,0.72-1.28c0-0.36,0.36-1.02,0.82-1.48c2.1-2.1,3.27-4.45,3.27-6.55\n c0-1.89-0.36-2.56-2.51-5.01c-1.94-2.2-2.56-3.27-2.81-5.22c-0.41-2.61-0.46-2.66-4.91-7.52c-7.16-7.78-5.68-6.96-16.78-9.16\n c-2.97-0.61-6.75-3.22-6.75-4.66c0-0.51,0.46-1.23,1.07-1.59c0.67-0.46,1.13-1.48,1.33-3.02c0.31-2.25,1.13-3.58,2.15-3.58\n c0.87,0,1.64-1.94,1.28-3.33c-0.72-2.97,1.64-6.4,4.45-6.4c2.51,0,6.5-2.05,6.86-3.53c0.31-1.23,2.05-3.12,2.92-3.12\n c0.2,0,1.28-0.82,2.4-1.79c1.07-0.97,2.66-2.05,3.48-2.4c1.94-0.82,4.25-3.53,4.25-5.01c0-0.67,0.92-2.15,2.05-3.38\n s2.05-2.46,2.05-2.76c0-0.26,0.36-0.51,0.77-0.51c0.77,0,4.3-4.4,4.35-5.42c0-0.31,0.36-0.87,0.77-1.23\n c0.41-0.36,0.77-0.97,0.77-1.38c0-0.36,0.41-1.33,0.87-2.05c0.87-1.33,1.33-2.3,2.71-6.29c0.77-2.05,2.87-6.8,3.84-8.75\n c1.53-2.92,1.43-8.24-0.26-11.97c-1.64-3.58-3.07-7.98-3.07-9.31c0-0.87-0.36-2.56-0.77-3.73c-0.41-1.18-0.77-3.58-0.77-5.32\n c0-2.87,0.15-3.27,1.53-4.4c0.82-0.72,1.48-1.59,1.53-1.94c0-0.31,0.46-1.48,1.02-2.51c0.67-1.28,1.02-2.92,1.02-4.71\n c0-1.89,0.41-3.63,1.28-5.47c1.28-2.66,1.28-2.66,2.92-2.2c0.87,0.26,1.74,0.31,1.89,0.2c0.31-0.36-0.2-0.82-1.13-0.97\n c-0.41-0.05-1.59-0.67-2.61-1.33c-1.94-1.33-2.3-2.97-0.56-2.66c0.82,0.15,0.87,0.05,0.36-0.56c-0.36-0.41-1.07-0.67-1.53-0.51\n c-0.92,0.2-3.07-1.64-2.56-2.2c0.15-0.15-0.26-0.82-0.97-1.53c-0.67-0.67-1.07-1.48-0.92-1.74c0.15-0.31,0.1-0.51-0.2-0.51\n c-0.97,0-1.53-1.84-1.07-3.73c0.2-1.02,0.26-1.89,0.05-1.89c-0.15,0-0.61-0.72-1.02-1.59c-0.36-0.87-1.74-2.25-3.07-3.07\n c-2.25-1.48-3.02-2.46-3.07-4.04c-0.05-0.67,0-0.67,0.51,0c0.41,0.61,0.51,0.61,0.36,0.05c-0.1-0.41-1.02-1.18-2-1.69\n c-1.43-0.77-2.4-0.87-5.58-0.61c-2.1,0.2-4.14,0.56-4.5,0.87c-0.46,0.36-0.56,0.26-0.26-0.46c0.31-0.87,0.26-0.87-0.51-0.26\n c-0.61,0.51-0.72,0.92-0.36,1.59c0.56,1.07-0.2,1.53-2.71,1.53c-0.92,0-2.51,0.26-3.63,0.56c-1.33,0.36-2.4,0.36-3.33,0.05\n c-2.51-0.97-4.6-1.13-5.32-0.41c-0.56,0.56-0.87,0.51-1.74-0.41c-0.56-0.56-1.18-1.79-1.38-2.66c-0.46-1.94-4.14-4.81-6.29-4.81\n c-1.13,0-1.28-0.1-0.67-0.51c0.46-0.31,0.51-0.51,0.15-0.51c-0.36,0-1.43,0.72-2.46,1.59c-1.74,1.59-1.84,1.59-4.04,0.92\n c-1.38-0.41-2.4-1.02-2.51-1.59c-0.15-0.56-0.56-0.82-1.02-0.61c-0.97,0.36-3.89-2.25-3.07-2.76c0.41-0.26,0.46-0.67,0.15-1.13\n c-0.41-0.67-0.51-0.61-0.51,0.1c0,1.07-0.36,1.13-2.05,0.15C594.91,12.77,590.82,12.77,590,13.74z'/>\n \n \n );\n};","import React, { useEffect, useState } from 'react';\nimport lottie from 'lottie-web';\n\nimport Modal from '../../Modal';\nimport { capitalizeFirstChar } from '../../../utils';\n\nimport style from './WarBeginPopup.module.scss';\n\nfunction WarBeginPopup(props) {\n const { visible, activeTeam, attackTeam, onEnd } = props;\n\n const [versusInfo, serVersusInfo] = useState('');\n\n useEffect(async () => {\n let dataJson = null;\n\n if (activeTeam && attackTeam) {\n if (activeTeam === 'doge' && attackTeam === 'pepe') {\n dataJson = await import('./voteTeamAnimation/DogePepe/vote_doge_pepe');\n } else if (activeTeam === 'doge' && attackTeam === 'wojak') {\n dataJson = await import('./voteTeamAnimation/DogeWojak/vote_doge_wojak');\n } else if (activeTeam === 'pepe' && attackTeam === 'doge') {\n dataJson = await import('./voteTeamAnimation/PepeDoge/vote_pepe_doge');\n } else if (activeTeam === 'pepe' && attackTeam === 'wojak') {\n dataJson = await import('./voteTeamAnimation/PepeWojak/vote_pepe_wojak');\n } else if (activeTeam === 'wojak' && attackTeam === 'doge') {\n dataJson = await import('./voteTeamAnimation/WojakDoge/vote_wojak_doge');\n } else if (activeTeam === 'wojak' && attackTeam === 'pepe') {\n dataJson = await import('./voteTeamAnimation/WojakPepe/vote_wojak_pepe');\n }\n\n if (dataJson) {\n lottie.destroy('vote-team');\n serVersusInfo(`Attacking ${capitalizeFirstChar(attackTeam)} Nation`);\n\n let attackAnimation = lottie.loadAnimation({\n container: document.getElementById('vote-team'),\n animationData: dataJson,\n // renderer: 'svg',\n loop: 1,\n autoplay: true,\n name: 'vote-team'\n });\n \n attackAnimation.play();\n \n attackAnimation.addEventListener('complete', () => {\n onEnd(false);\n attackAnimation.destroy('vote-team');\n });\n\n return () => {\n attackAnimation.removeEventListener('complete');\n }\n }\n }\n\n return () => {\n lottie.destroy('vote-team');\n }\n }, [activeTeam, attackTeam]);\n\n return (\n \n
\n {versusInfo}
\n \n );\n}\n\nexport default WarBeginPopup;","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { updateTeamInfo } from './actions';\n\nimport { contractAddresses } from '../../../utils';\nimport PresenterABI from '../../../abi/presenterAbi';\nimport { getTeamInfo, getPendingReward } from '../../../utils/callHelpers';\n\nexport const UseTeamHooks = () => {\n const dispatch = useDispatch();\n\n const [isReload, setReload] = useState(0);\n\n const chainId = useSelector(state => state.user.chainId);\n const account = useSelector(state => state.user.userAccount.accounts)[0];\n const isConnect = useSelector(state => state.user.connectWallet.isConnect);\n const stageIndex = useSelector(state => state.round?.cycleInfo?.stageIndex ?? 0);\n\n useEffect(async () => {\n try {\n if (chainId && account && window.web3) {\n const addresses = contractAddresses(chainId);\n const presenterContract = new window.web3.eth.Contract(PresenterABI, addresses['PRESENTER']);\n\n const dataTeamInfo = await callDataTeamData(presenterContract, account);\n \n dispatch(updateTeamInfo(dataTeamInfo));\n }\n } catch (error) {\n return error;\n }\n }, [chainId, account, isReload, stageIndex]);\n\n useEffect(() => {\n if (!isConnect) return;\n \n // this is the live voting day\n if (parseInt(stageIndex) === 3) {\n const timer = setInterval(() => {\n setReload(prevState => prevState + 1);\n }, 2000);\n \n return () => {\n clearInterval(timer);\n }\n }\n }, [parseInt(stageIndex)]);\n};\n\n\nexport const callDataTeamData = async (presenterContract, account) => {\n const dogeInfo = await getTeamInfo(presenterContract, 0);\n const pepeInfo = await getTeamInfo(presenterContract, 1);\n const wojakInfo = await getTeamInfo(presenterContract, 2);\n\n const dogeInfoPendingReward = await getPendingReward(presenterContract, 0, account);\n const pepeInfoPendingReward = await getPendingReward(presenterContract, 1, account);\n const wojakInfoPendingReward = await getPendingReward(presenterContract, 2, account);\n\n return {\n pepe: { ...pepeInfo, pendingReward: pepeInfoPendingReward },\n doge: { ...dogeInfo, pendingReward: dogeInfoPendingReward },\n wojak: { ...wojakInfo, pendingReward: wojakInfoPendingReward }\n }\n}","import { createAction } from 'redux-actions';\nimport Logger from 'js-logger';\nimport { contractAddresses, fromWeiDecimals } from '../../../utils';\nimport { callDataTeamData } from './hooks';\nimport { getProductionBySecond, getTeamInfo } from '../../../utils/callHelpers';\nimport PresenterABI from '../../../abi/presenterAbi';\n\nexport const updateActiveTeam = createAction('UPDATE_ACTIVE_TEAM');\nexport const updateAttackTeam = createAction('UPDATE_ATTACK_TEAM');\nexport const updateAttacking = createAction('UPDATE_ATTACKING');\n\nexport const setActiveTeam = (team) => (dispatch) => {\n // TODO: Implement get round data with api\n\n dispatch(updateActiveTeam(team));\n};\n\nexport const setAttackTeam = (team) => (dispatch) => {\n dispatch(updateAttackTeam(team));\n};\n\nexport const isAttacking = (attacking) => (dispatch) => {\n dispatch(updateAttacking(attacking));\n};\n\n\nexport const setTeamInfo = createAction('SET_TEAM_INFO');\nexport const updateTeamInfo = (info) => (dispatch) => {\n dispatch(setTeamInfo(info));\n};\n\nexport const setRewardAmount = createAction('SET_REWARD_AMOUNT');\nexport const updateRewardAmount = (info) => (dispatch) => {\n dispatch(setRewardAmount(info));\n};\n\nexport const getProductionData = async (presenterContract) => {\n try {\n const [dogeInfo, pepeInfo, wojakInfo] = await Promise.all([\n getProductionBySecond(presenterContract, 0),\n getProductionBySecond(presenterContract, 1),\n getProductionBySecond(presenterContract, 2)]\n );\n\n const total = parseInt(fromWeiDecimals(dogeInfo)) + parseInt(fromWeiDecimals(pepeInfo)) + parseInt(fromWeiDecimals(wojakInfo));\n\n return {\n total,\n doge: parseFloat(fromWeiDecimals(dogeInfo)),\n pepe: parseFloat(fromWeiDecimals(pepeInfo)),\n wojak: parseFloat(fromWeiDecimals(wojakInfo))\n }\n } catch (err) {\n Logger.error(err)\n }\n}\n\nexport const getDataTeamInfo = async (presenterContract) => {\n try {\n const [dogeInfo, pepeInfo, wojakInfo] = await Promise.all([\n getTeamInfo(presenterContract, 0),\n getTeamInfo(presenterContract, 1),\n getTeamInfo(presenterContract, 2)]\n );\n\n const dogeReward = parseFloat(fromWeiDecimals(dogeInfo?.rewardAmount));\n const pepeReward = parseFloat(fromWeiDecimals(pepeInfo?.rewardAmount));\n const wojakReward = parseFloat(fromWeiDecimals(wojakInfo?.rewardAmount));\n\n const total = dogeReward + pepeReward + wojakReward;\n return {\n total,\n doge: dogeReward,\n pepe: pepeReward,\n wojak: wojakReward\n }\n\n } catch (err) {\n Logger.error(err)\n }\n}\n\nexport const getDataTeamInfoAndupdate = () => async (dispatch, getState) => {\n try {\n const account = getState()?.user?.userAccount?.accounts[0];\n const chainId = getState()?.user?.chainId;\n if (account && chainId) {\n const presenterContract = new window.web3.eth.Contract(PresenterABI, contractAddresses(chainId)['PRESENTER']);\n const dataTeamInfo = await callDataTeamData(presenterContract, account);\n dispatch(updateTeamInfo(dataTeamInfo));\n }\n } catch (err) {\n Logger.error(err)\n }\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport lottie from 'lottie-web';\n\nimport boatsJson from './data';\nimport { Regions } from './Regions';\nimport WarBeginPopup from './WarBeginPopup/WarBeginPopup';\n\nimport {\n isAttacking,\n setActiveTeam,\n setAttackTeam\n} from '../../store/modules/Team/actions';\nimport { PAGE_GAME_PATH } from '../../router/constants';\n\nimport style from './Maps.module.scss';\n\nconst teamList = ['doge', 'pepe', 'wojak'];\n\nexport default function MapRegions() {\n const dispatch = useDispatch();\n\n const [selected, setSelected] = useState(false);\n const [selectedRegion, setSelectedRegion] = useState('');\n const [isBeginVisible, setBeginVisible] = useState(false);\n\n const warTeam = parseInt(useSelector(state => state.round?.cycleInfo?.warTeam));\n const stageStart = parseInt(useSelector(state => state.round?.cycleInfo?.stageStart));\n const victimTeam = parseInt(useSelector(state => state.round?.cycleInfo?.victimTeam));\n const stageIndex = parseInt(useSelector(state => state.round?.cycleInfo?.stageIndex));\n const {attacking, activeTeam, attackTeam} = useSelector(state => state.team);\n // const listDuration = useSelector(state => state.round?.listDuration ?? []);\n\n const isWarStageAppear = warTeam < 3 && victimTeam < 3 && stageIndex === 4;\n const hasWarTeam = warTeam < 3 && teamList[warTeam];\n const hasVictimTeam = victimTeam < 3 && teamList[victimTeam];\n\n // const durationWar = listDuration && (Number(listDuration[3]) || 34560);\n\n // const hasWarTeam = teamList[0];\n // const hasVictimTeam = teamList[1];\n\n const id = 'boats-container';\n\n useEffect(() => {\n if (!isWarStageAppear) return;\n if (!stageStart) return;\n\n if (Math.floor(Date.now() / 1000) - stageStart < 20) {\n setBeginVisible(true);\n } else {\n dispatch(setActiveTeam(hasWarTeam));\n dispatch(setAttackTeam(hasVictimTeam));\n dispatch(isAttacking(true));\n }\n }, [isWarStageAppear, stageStart, isBeginVisible]);\n\n useEffect(() => {\n lottie.destroy('boat_animation');\n let animation = lottie.loadAnimation({\n container: document.getElementById(id),\n animationData: boatsJson,\n renderer: 'svg',\n loop: true,\n autoplay: false,\n name: 'boat_animation',\n });\n\n animation.setSpeed(1.3);\n\n animation.play();\n\n return () => {\n if (!window.location.pathname.includes(PAGE_GAME_PATH)){\n lottie.destroy('boat_animation');\n }\n }\n }, []);\n\n useEffect(async () => {\n if (!isWarStageAppear) return lottie.destroy('attack_animation');\n\n if (activeTeam && attackTeam) {\n let dataJson = null;\n\n if (activeTeam === 'doge' && attackTeam === 'pepe') {\n dataJson = await import('./attackAnimation/doge_pepe');\n } else if (activeTeam === 'doge' && attackTeam === 'wojak') {\n dataJson = await import('./attackAnimation/doge_wojak');\n } else if (activeTeam === 'pepe' && attackTeam === 'doge') {\n dataJson = await import('./attackAnimation/pepe_doge');\n } else if (activeTeam === 'pepe' && attackTeam === 'wojak') {\n dataJson = await import('./attackAnimation/pepe_wojak');\n } else if (activeTeam === 'wojak' && attackTeam === 'doge') {\n dataJson = await import('./attackAnimation/wojak_doge');\n } else if (activeTeam === 'wojak' && attackTeam === 'pepe') {\n dataJson = await import('./attackAnimation/wojak_pepe');\n }\n\n if (dataJson) {\n lottie.destroy('attack_animation');\n let attackAnimation = lottie.loadAnimation({\n container: document.getElementById('attack_animation'),\n animationData: dataJson,\n renderer: 'svg',\n loop: true,\n autoplay: true,\n name: 'attack_animation'\n });\n\n attackAnimation.play();\n\n attackAnimation.addEventListener('complete', () => {\n dispatch(setActiveTeam(null));\n dispatch(setAttackTeam(null));\n dispatch(isAttacking(false));\n attackAnimation.destroy('attack_animation');\n });\n\n return () => {\n attackAnimation.removeEventListener('complete')\n }\n }\n }\n\n return () => {\n lottie.destroy('attack_animation');\n }\n }, [activeTeam, attackTeam, isWarStageAppear]);\n\n const handleSelect = (region) => {\n setSelected(true);\n setSelectedRegion(region);\n dispatch(setActiveTeam(region));\n };\n\n const handleBlur = () => {\n setSelected(false);\n setSelectedRegion('');\n };\n\n return (\n <>\n \n \n
\n \n
\n\n {isBeginVisible && (\n
\n )}\n >\n )\n}","export default __webpack_public_path__ + \"static/media/worldmap.e9deb7d4.svg\";","export default __webpack_public_path__ + \"static/media/doge.2718afb8.png\";","export const TEAM_NAME = {\n DOGE: 'doge',\n PEPE: 'pepe',\n WOJAK: 'wojak'\n}","import React from 'react';\nimport { Radio } from 'antd';\n\nimport style from './RadioGroupCustom.module.scss';\n\nexport default function RadioGroupCustom(props) {\n const {\n items,\n isVoted,\n activeTeam,\n nationItem\n } = props;\n\n return (\n
\n {items.map((item) => (\n \n
\n \n
\n
{item.displayName}
\n
{item.description}
\n
\n\n
\n {item.value === activeTeam ? (\n
War
\n ) : (\n
{item.value === nationItem && isVoted && 'Voted'}
\n )}\n
\n
\n \n\n
\n
\n
\n
\n ))}\n \n )\n}\n","export default \"data:image/png;base64,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\"","import React, { useState, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport moment from 'moment';\nimport lottie from 'lottie-web';\nimport { notification } from 'antd';\n\nimport { TEAM_NAME } from './constants';\nimport { TEAMS } from '../../utils/constants';\n\nimport Modal from '../Modal';\nimport Button from '../Button';\nimport RadioGroupCustom from '../RadioGroupCustom';\n\nimport { storeTransactionLog } from '../../store/modules/User/actions';\nimport PresenterABI from '../../abi/presenterAbi';\nimport { getVoteInfo, castVoteForVictimTeamCallback, ERROR_CODE_TIME_OUT } from '../../utils/callHelpers';\nimport formatNumber, {\n contractAddresses,\n getTeamIndex,\n capitalizeFirstChar, fromWeiDecimals\n} from '../../utils';\n\nimport coinImage from './assets/coin.png';\nimport style from './VoteModal.module.scss';\n\nconst ID_VOTE_LOADING = 'vote-loading';\n\nconst getAvatarImage = (itemSelected) => {\n let imgSrc = coinImage;\n\n switch (itemSelected) {\n case TEAM_NAME.DOGE:\n imgSrc = TEAMS.DOGE.IMG;\n break;\n\n case TEAM_NAME.PEPE:\n imgSrc = TEAMS.PEPE.IMG;\n break;\n\n case TEAM_NAME.WOJAK:\n imgSrc = TEAMS.WOJAK.IMG;\n break;\n\n default:\n break;\n }\n\n return imgSrc;\n}\n\nconst NAME_LIST = ['doge', 'pepe', 'wojak'];\n\nexport default function VoteModal(props) {\n const dispatch = useDispatch();\n\n const { handleClose, warTeam, stageIndex, ...restProps } = props;\n\n const [nationItem, setNationItem] = useState(null);\n const [isVoting, setVoting] = useState(false);\n const [isVoted, setVoted] = useState(false);\n\n const isConnected = useSelector(state => state.user?.connectWallet?.isConnect);\n const teamInfo = useSelector(state => state.team.teamInfo);\n const chainId = useSelector(state => state.user.chainId);\n const account = useSelector(state => state.user.userAccount.accounts)[0];\n const cycleIndex = useSelector(state => state.round?.cycleIndex);\n\n const nationList = [{\n displayName: 'Doge Nation',\n description: `${teamInfo ? formatNumber(fromWeiDecimals(teamInfo.doge.totalAmount), '', 0) : 0} MWAR Staked`,\n image: TEAMS.DOGE.IMG_SMALL,\n value: TEAM_NAME.DOGE,\n color: '#feb540'\n }, {\n displayName: 'Pepe Nation',\n description: `${teamInfo ? formatNumber(fromWeiDecimals(teamInfo.pepe.totalAmount), '', 0) : 0} MWAR Staked`,\n image: TEAMS.PEPE.IMG_SMALL,\n value: TEAM_NAME.PEPE,\n color: '#23a62f'\n }, {\n displayName: 'Wojak Nation',\n description: `${teamInfo ? formatNumber(fromWeiDecimals(teamInfo.wojak.totalAmount), '', 0) : 0} MWAR Staked`,\n image: TEAMS.WOJAK.IMG_SMALL,\n value: TEAM_NAME.WOJAK,\n color: '#e64646'\n }];\n\n // warTeam larger than 2 that is the team war is not chosen\n const activeTeamIndex = warTeam > 2 ? '' : nationList[warTeam].value;\n\n useEffect(async () => {\n if (!isVoting) return;\n let voteLoadingAnimation = null;\n\n const voteLoadingData = await import('./LoadingAnimation/loadingAnimation.json');\n voteLoadingAnimation = lottie.loadAnimation({\n container: document.getElementById(ID_VOTE_LOADING),\n animationData: voteLoadingData,\n // renderer: 'svg',\n loop: true,\n autoplay: true,\n name: 'vote-animation'\n });\n\n voteLoadingAnimation.play();\n }, [isVoting]);\n\n useEffect(async () => {\n try {\n if (!isConnected) return;\n if (stageIndex !== 3) return; // avoid call contract too many time, just call at voting day.\n if (parseInt(warTeam) > 3) return; // has no war team will not call contract.\n\n const victimTeams = [0,1,2].filter(e => e !== parseInt(warTeam));\n\n const presenterContract = new window.web3.eth.Contract(PresenterABI, contractAddresses(chainId)['PRESENTER']);\n const votedA = await getVoteInfo(presenterContract, parseInt(cycleIndex), victimTeams[0], account);\n const votedB = await getVoteInfo(presenterContract, parseInt(cycleIndex), victimTeams[1], account);\n\n // get voted variable\n const voted = parseInt(votedA) > 0 || parseInt(votedB) > 0;\n setVoted(voted);\n\n // get itemName is voted\n if (parseInt(votedA) > 0) return setNationItem(NAME_LIST[victimTeams[0]]);\n if (parseInt(votedB) > 0) return setNationItem(NAME_LIST[victimTeams[1]]);\n } catch (error) {\n return error;\n }\n });\n\n useEffect(() => {\n onClose();\n }, [account])\n\n const onVote = async() => {\n try {\n const addresses = contractAddresses(chainId);\n const presenterContract = new window.web3.eth.Contract(PresenterABI, addresses['PRESENTER']);\n const teamIndex = getTeamIndex(nationItem);\n\n // const log = {\n // date: moment().valueOf(),\n // type: `Voted ${capitalizeFirstChar(nationItem)} victim team`,\n // chainId,\n // account,\n // };\n\n setVoting(true);\n\n castVoteForVictimTeamCallback(presenterContract, teamIndex, account, handleVoteResponse);\n\n // await castVoteForVictimTeam(presenterContract, teamIndex, account).then(res => {\n // log.isError = false;\n // log.transactionHash = res?.transactionHash;\n\n // dispatch(storeTransactionLog(log));\n // setVoting(false);\n // handleClose();\n // }).catch((error) => {\n // log.isError = true;\n // log.transactionHash = error?.receipt?.transactionHash;\n\n // dispatch(storeTransactionLog(log));\n // setVoting(false);\n\n // notification.error({\n // message: 'Vote Failed',\n // description: error?.message\n // });\n // })\n\n // handleClose();\n } catch (err) {\n handleVoteResponse(null, err);\n setVoting(false);\n }\n };\n\n const handleVoteResponse = (receipt, error = null) => {\n const log = {\n date: moment().valueOf(),\n type: `Voted ${capitalizeFirstChar(nationItem)} victim team`,\n chainId,\n account,\n };\n\n // ERROR\n if (error) {\n // TIMEOUT\n if (error?.code === ERROR_CODE_TIME_OUT) {\n notification.error({\n message: 'Voted timeout',\n description: error?.message\n });\n setVoting(false);\n return;\n }\n\n log.isError = true;\n log.transactionHash = error?.receipt?.transactionHash;\n\n dispatch(storeTransactionLog(log));\n setVoting(false);\n\n notification.error({\n message: 'Vote Failed',\n description: error?.message\n });\n return;\n }\n\n\n // SUCCESS\n if (receipt && receipt?.transactionHash) {\n log.isError = false;\n log.transactionHash = receipt?.transactionHash;\n\n dispatch(storeTransactionLog(log));\n setVoting(false);\n handleClose();\n }\n }\n\n const onClose = () => {\n if (isVoting) return;\n\n handleClose();\n setNationItem(null);\n setVoting(false);\n }\n\n return (\n
\n {isVoting && (\n <>\n
\n \n Placing Vote...\n
\n >\n )}\n\n {!isVoting && (\n <>\n \n
\n
\n
\n
\n Vote for War\n
\n
\n Choose which country you want your nation to declare war on.\n
\n
\n\n \n {\n setNationItem(evt.target.value);\n }}\n isVoted={isVoted}\n nationItem={nationItem}\n />\n
\n\n \n \n\n \n
\n >\n )}\n \n );\n}\n","import React from 'react';\nimport VoteModal from './VoteModal';\n\nexport default function VoteModalContainer(props) {\n const {visible, isStakedWarTeam} = props;\n return (\n
\n );\n}\n","import VoteModal from './VoteModal';\nimport VoteModalContainer from './VoteModalContainer';\n\nexport {VoteModalContainer};\nexport default VoteModal;\n","export default __webpack_public_path__ + \"static/media/vote.3da138a2.svg\";","import VoteContainer from './VoteContainer';\n\nexport default VoteContainer;\n","import React, { useState, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Tooltip } from 'antd';\n\n// import Button from '../Button';\nimport { VoteModalContainer } from '../VoteModal';\n\nimport { setUserInfo } from '../../store/modules/User/actions';\nimport { setConnectModalVisible } from '../../store/modules/App/actions';\nimport { contractAddresses, checkIsValidVoteTeam } from '../../utils';\nimport { getUserInfo } from '../../utils/callHelpers';\nimport PresenterABI from '../../abi/presenterAbi';\n\n// import {ReactComponent as VoteIcon} from './img/vote.svg';\nimport voteIcon from './img/vote.svg';\n\nimport style from './Vote.module.scss';\n\nexport default function VoteContainer() {\n const dispatch = useDispatch();\n\n const [isVisibleVoteModal, setVisibleVoteModal] = useState(false);\n const [textTooltip, setTextTooltip] = useState('');\n\n const isConnected = useSelector(state => state.user?.connectWallet?.isConnect);\n const cycleInfo = useSelector(state => state.round?.cycleInfo ?? {});\n const teamsList = useSelector(state => state.user?.userInfo);\n const userAddress = useSelector(state => state.user?.userAccount?.accounts[0] ?? '');\n const chainId = useSelector(state => state.user?.chainId ?? '');\n\n const stageIndex = cycleInfo ? parseInt(cycleInfo.stageIndex) : 0;\n const warTeam = cycleInfo?.warTeam ?? 0;\n const isValidVoteTeam = warTeam && cycleInfo && checkIsValidVoteTeam(warTeam, teamsList);\n const isNotStakedAnyTeams = isValidVoteTeam?.isNotStakedAnyTeams;\n const isStakedButNotWar = isValidVoteTeam?.isStakedButNotWar;\n\n useEffect(async () => {\n try {\n if (!isConnected) return;\n\n const presenterContract = new window.web3.eth.Contract(PresenterABI, contractAddresses(chainId)['PRESENTER']);\n const dogeInfo = await getUserInfo(presenterContract, userAddress, 0);\n const pepeInfo = await getUserInfo(presenterContract, userAddress, 1);\n const wojakInfo = await getUserInfo(presenterContract, userAddress, 2);\n \n dispatch(setUserInfo({ dogeInfo, pepeInfo, wojakInfo }));\n } catch (error) {\n return error;\n }\n }, [stageIndex, userAddress]);\n\n useEffect(() => {\n if (stageIndex !== 3) {\n setTextTooltip('Cannot vote yet because it is not yet voting day');\n } else if (stageIndex === 3 && isNotStakedAnyTeams) {\n setTextTooltip('You have not staked in any teams yet');\n } else if (stageIndex === 3 && !isNotStakedAnyTeams && !isStakedButNotWar) {\n setTextTooltip('Your team was not chosen to declare war');\n }\n }, [stageIndex, warTeam, isValidVoteTeam])\n\n const handleModalVisible = () => {\n if (isConnected) {\n setVisibleVoteModal(true);\n } else {\n dispatch(setConnectModalVisible(true));\n }\n };\n\n const handleModalHidden = () => {\n setVisibleVoteModal(false);\n };\n\n return (\n
\n {stageIndex !== 3 || isNotStakedAnyTeams || !isStakedButNotWar ? (\n
\n {}}\n >\n \n VOTE\n \n \n ) : (\n
handleModalVisible()}\n >\n \n VOTE\n \n )}\n {/*
}\n iconClass={style.icon}\n iconWidth={60}\n iconAlignStart\n disabled={stageIndex !== 3 || !isValidVoteTeam}\n onClick={handleModalVisible}\n /> */}\n
\n
\n );\n}\n","import React from 'react';\nimport { Radio } from 'antd';\nimport style from './RadioGroup.module.scss';\n\nexport default function RadioGroup(props) {\n const { items, activeTeam } = props;\n\n return (\n
\n {items.map((item) => (\n \n
\n \n
{item.displayName}
\n
\n {item.isPrefix && ~ }\n {item.description}\n
\n
\n \n {item.image &&\n
\n
\n
\n }\n
\n ))\n }\n \n )\n}","import React from 'react';\nimport cn from 'classnames';\n\nimport style from './Switch.module.scss';\n\nexport default function Switch(props) {\n const { onChange, options, selectedOption } = props;\n return (\n
\n {options.map(option =>\n
onChange(option)}>\n {option.label}\n
\n )}\n
\n );\n}\n","import React from 'react';\nimport {Input} from 'antd';\n\nimport style from './TextInput.module.scss';\nimport cn from 'classnames';\n\nexport default function NumberInput(props) {\n const {\n id,\n idCreateSong,\n regexCreatSong,\n value,\n disabled,\n prefix,\n placeholder,\n onChange,\n onFocus,\n onBlur,\n light,\n icon,\n small,\n min,\n suffix,\n type,\n royalType,\n defaultValue,\n wrapperClass,\n maxlength\n } = props;\n \n const prefixIcon = prefix ? prefix :
;\n const suffixIcon = suffix ? suffix :
;\n\n const FLOAT_REGEX = /^-?\\d*(\\.\\d*)?$/;\n const INTEGER_REGEX = /^\\d+$/;\n\n const handleChange = (value) => {\n const reg = type === 'integer' ? INTEGER_REGEX : (idCreateSong ? regexCreatSong : FLOAT_REGEX);\n const valueSplit = value.toString().replace(/,/g, '');\n const length = maxlength || 15;\n if ((!isNaN(valueSplit) && reg.test(valueSplit)) && valueSplit.length <= length) {\n // use parseFloat(value) at onChange will make it impossible to enter decimals\n onChange(type === 'integer' ? parseInt(valueSplit) : valueSplit);\n }\n };\n\n return (\n
{\n royalType ? onChange(parseInt(e.target.value)) : handleChange(e.target.value)\n }}\n type='text'\n {...{id, value, min, placeholder, onFocus, disabled, defaultValue, onBlur}}\n />\n )\n}","import React from 'react';\nimport style from './StakeModal.module.scss';\nimport Button from '../Button';\nimport NumberInput from '../NumberInput';\nimport formatNumber, { onFocusHandle, onBlurHandle } from '../../utils';\n\nexport default function StakeAmount(props) {\n const { balance, amount, onChangeAmount } = props;\n return (\n
\n
\n
Stake
\n
Balance: {formatNumber(balance)}
\n
\n
\n
\n {\n onChangeAmount(val);\n }} />\n {\n onChangeAmount(formatNumber(balance));\n }}>MAX \n
\n
\n
\n
\n )\n}","export default \"data:image/png;base64,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\"","import formatNumber, { formatNumberExtend, fromWeiDecimals } from '../../utils';\nimport { TEAMS } from '../../utils/constants';\nimport attackImage from './assets/attack.png';\nimport defenseImage from './assets/defense.png';\nimport productionImage from './assets/production.png';\n\n\nexport const ID_LOADING_STAKE = 'loading-staking'\n\nexport const LINK_BUY = process.env.REACT_APP_LINK_BUY\n\nexport const TAB_STAKE_POP_UP = [{\n id: 1,\n label: 'NEW STAKE'\n}, {\n id: 2,\n label: 'MY STAKE'\n}, {\n id: 3,\n label: 'REWARD'\n}];\n\nexport const getNewStake = (teamInfo) => {\n return (teamInfo ? formatNumber(fromWeiDecimals(teamInfo.totalAmount), '', 0) : 0)\n}\n\nexport const getMyStake = (userInfo) => {\n return (userInfo ? formatNumberExtend(fromWeiDecimals(userInfo.totalAmount), '', 0) : 0);\n}\n\nexport const getReward = (teamInfo) => {\n return (teamInfo ? formatNumber(fromWeiDecimals(teamInfo.pendingReward), '', 0) : 0);\n}\n\nexport const isNewStake = (selectedOption) => {\n return selectedOption.id === 1;\n}\n\nexport const isMyStake = (selectedOption) => {\n return selectedOption.id === 2;\n}\n\nexport const isReward = (selectedOption) => {\n return selectedOption.id === 3;\n}\nexport const getNumberByTab = (teamInfo, userInfo, tab) => {\n\n switch (tab.id) {\n case 1:\n return getNewStake(teamInfo);\n case 2:\n return getMyStake(userInfo);\n case 3:\n return getReward(teamInfo);\n }\n}\n\nexport const isRewardZero = (nationTeam) => {\n if (!nationTeam) {\n return true;\n }\n return getReward(nationTeam) === 0 || getReward(nationTeam) === '0';\n}\n\nexport const getNationList = (teamInfo, userInfo, selectedOption) => {\n return [{\n displayName: 'Doge Nation',\n description: `${getNumberByTab(teamInfo?.doge, userInfo?.doge, selectedOption)} MWAR Staked`,\n image: TEAMS.DOGE.IMG_SMALL,\n value: TEAMS.DOGE.CODE\n }, {\n displayName: 'Pepe Nation',\n description: `${getNumberByTab(teamInfo?.pepe, userInfo?.pepe, selectedOption)} MWAR Staked`,\n image: TEAMS.PEPE.IMG_SMALL,\n value: TEAMS.PEPE.CODE\n }, {\n displayName: 'Wojak Nation',\n description: `${getNumberByTab(teamInfo?.wojak, userInfo?.wojak, selectedOption)} MWAR Staked`,\n image: TEAMS.WOJAK.IMG_SMALL,\n value: TEAMS.WOJAK.CODE\n }];\n}\n\nexport const getNationListReward = (teamInfo, userInfo, selectedOption) => {\n return [{\n displayName: 'Doge Nation',\n description: `${getNumberByTab(teamInfo?.doge, userInfo?.doge, selectedOption)} MWAR`,\n image: TEAMS.DOGE.IMG_SMALL,\n value: TEAMS.DOGE.CODE,\n isPrefix : isLessOneAndGreaterZero(teamInfo?.doge)\n }, {\n displayName: 'Pepe Nation',\n description: `${getNumberByTab(teamInfo?.pepe, userInfo?.pepe, selectedOption)} MWAR`,\n image: TEAMS.PEPE.IMG_SMALL,\n value: TEAMS.PEPE.CODE,\n isPrefix : isLessOneAndGreaterZero(teamInfo?.pepe)\n }, {\n displayName: 'Wojak Nation',\n description: `${getNumberByTab(teamInfo?.wojak, userInfo?.wojak, selectedOption)} MWAR`,\n image: TEAMS.WOJAK.IMG_SMALL,\n value: TEAMS.WOJAK.CODE,\n isPrefix : isLessOneAndGreaterZero(teamInfo?.wojak)\n }];\n}\n\nexport const getPoolList = (nationTeam) => {\n return [{\n displayName: 'Attack',\n description: `${nationTeam ? formatNumber(fromWeiDecimals(String(nationTeam.attackAmount)), '', 0) : 0} MWAR Staked`,\n image: attackImage,\n value: 'attack'\n }, {\n displayName: 'Defense',\n description: `${nationTeam ? formatNumber(fromWeiDecimals(String(nationTeam.defenceAmount)), '', 0) : 0} MWAR Staked`,\n image: defenseImage,\n value: 'defense'\n }, {\n displayName: 'Production',\n description: `${nationTeam ? formatNumber(fromWeiDecimals(String(nationTeam.factoryAmount)), '', 0) : 0} MWAR Staked`,\n image: productionImage,\n value: 'production'\n }]\n}\n\nconst isLessOneAndGreaterZero = (data) => {\n if (data?.pendingReward === undefined) {\n return false;\n }\n if (data?.pendingReward && data?.pendingReward > 0 && Number(fromWeiDecimals(data.pendingReward)) < 1) {\n return true;\n }\n return false;\n}\n","export default \"data:image/png;base64,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\"","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { notification } from 'antd';\nimport Web3 from 'web3';\nimport moment from 'moment';\nimport lottie from 'lottie-web';\n\nimport Modal from '../Modal';\nimport Button from '../Button';\nimport RadioGroup from '../RadioGroup';\nimport Switch from '../Switch';\nimport StakeAmount from './StakeAmount';\nimport { isAttacking, setAttackTeam } from '../../store/modules/Team/actions';\nimport { storeTransactionLog, getDataUserInfoAndUpdate } from '../../store/modules/User/actions';\nimport { approve, deposit, claimReward, getAllowance, ERROR_CODE_TIME_OUT } from '../../utils/callHelpers'; //getTeamInfo\nimport formatNumber, { contractAddresses, getPoolIndex, getTeamIndex, isStakingDay } from '../../utils';\nimport PresenterABI from '../../abi/presenterAbi';\nimport WarTokenABI from '../../abi/warTokenAbi';\nimport {\n TAB_STAKE_POP_UP, ID_LOADING_STAKE,\n isNewStake, isReward, isMyStake, isRewardZero, LINK_BUY,\n getNationList, getNationListReward, getPoolList\n} from './constants';\nimport { TEAMS } from '../../utils/constants';\nimport { getDataTeamInfoAndupdate } from '../../store/modules/Team/actions';\nimport { refeshBalance } from '../../store/modules/User/actions';\n\nimport coinImage from './assets/coin.png';\nimport style from './StakeModal.module.scss';\n\nconst STEP = {\n NATION: 'nation',\n POOL: 'pool',\n AMOUNT: 'amount',\n STAKING: 'staking',\n CLAIMING: 'Claiming'\n}\nconst MAX_INT = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';\n\nexport default function StakeModal(props) {\n const { handleClose, stageIndex, handleCancel, visible, isMobile, isTablet } = props;\n const dispatch = useDispatch();\n\n const [step, setStep] = useState(STEP.NATION);\n const [isSuccess, setIsSuccess] = useState(false);\n const [nationTeam, setNationTeam] = useState(null);\n const [nationItem, setNationItem] = useState(null);\n const [poolItem, setPoolItem] = useState(null);\n const [selectedOption, updateSelectedOption] = useState(TAB_STAKE_POP_UP[0]);\n const [amount, setAmount] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n\n const chainId = useSelector(state => state.user.chainId);\n const account = useSelector(state => state.user.userAccount.accounts)[0];\n const teamInfo = useSelector(state => state.team.teamInfo);\n const userInfo = useSelector(state => state.user.userInfo);\n\n const tokenBalance = useSelector(state => state.user.userAccount.tokenBalance);\n const addresses = contractAddresses(chainId);\n\n const [avatar, setAvatar] = useState(coinImage);\n const [isShowErrorBalance, setIsShowErrorBalance] = useState(false);\n\n let stakeAnimation = null;\n useEffect(async () => {\n if (step === STEP.STAKING || step === STEP.CLAIMING) {\n const stakeLoadingData = await import('./animation/stake.json');\n stakeAnimation = lottie.loadAnimation({\n container: document.getElementById(ID_LOADING_STAKE),\n animationData: stakeLoadingData,\n renderer: 'svg',\n loop: true,\n autoplay: true,\n name: 'stake-animation'\n });\n stakeAnimation.play();\n }\n\n if (nationItem === TEAMS.DOGE.CODE) {\n setAvatar(TEAMS.DOGE.IMG);\n } else if (nationItem === TEAMS.PEPE.CODE) {\n setAvatar(TEAMS.PEPE.IMG);\n } else if (nationItem === TEAMS.WOJAK.CODE) {\n setAvatar(TEAMS.WOJAK.IMG);\n }\n\n if (visible) {\n dispatch(refeshBalance());\n dispatch(getDataTeamInfoAndupdate());\n }\n }, [step, nationItem, visible]);\n\n const nationList = getNationList(teamInfo, userInfo, selectedOption);\n\n const nationListReward = getNationListReward(teamInfo, userInfo, selectedOption);\n\n const poolList = getPoolList(nationTeam);\n\n\n /**\n * HANDLE STEP\n * CHECK & APPROVE\n * @param {*} step \n */\n const handleStep = async (step) => {\n\n if (step === STEP.STAKING) {\n setStep(step);\n setIsLoading(true);\n\n const warTokenContract = new window.web3.eth.Contract(WarTokenABI, addresses['WARTOKEN']);\n let amountApprove = String(amount).toString().replace(/,/g, '');\n\n // CHECK APPROVE \n let isApprove = true;\n isApprove = await getAllowance(warTokenContract, account, addresses['PRESENTER'])\n .then(async response => {\n const allowance = BigInt(response || 0);\n const amount = BigInt(amountApprove);\n return allowance < amount;\n }).catch(() => {\n return true\n });\n\n // APROOVE\n if (isApprove) {\n try {\n approve(warTokenContract, MAX_INT, addresses['PRESENTER'], account, handleApprove);\n } catch (e) {\n handleApprove(null, e);\n }\n return;\n }\n\n // DEPOSIT\n depositProcess();\n }\n\n if (step === STEP.NATION) {\n setPoolItem(null);\n }\n setStep(step);\n };\n\n const handleApprove = (receipt, error = null) => {\n const log = {\n date: moment().valueOf(),\n type: 'Approve',\n account,\n chainId\n };\n\n // ERROR\n if (error) {\n // TIMEOUT\n if (error?.code === ERROR_CODE_TIME_OUT) {\n notification.error({\n message: 'Approve Timeout',\n description: error?.message\n });\n setStep(STEP.AMOUNT);\n setIsLoading(false);\n return;\n }\n\n // FAILED\n if (error?.receipt?.transactionHash) {\n log.isError = true;\n log.transactionHash = error?.receipt?.transactionHash;\n dispatch(storeTransactionLog(log));\n notification.error({\n message: 'Approve Failed',\n description: error?.message\n });\n setStep(STEP.AMOUNT);\n setIsLoading(false);\n return;\n }\n\n // Reject\n notification.error({\n message: 'Approve Failed'\n });\n setStep(STEP.AMOUNT);\n setIsLoading(false);\n return;\n }\n\n\n // SUCCESS\n if (receipt && receipt?.transactionHash) {\n log.isError = false;\n log.transactionHash = receipt?.transactionHash;\n dispatch(storeTransactionLog(log));\n depositProcess();\n }\n }\n\n /**\n * CALL DEPOSIT CONTRACT\n */\n const depositProcess = () => {\n const presenterContract = new window.web3.eth.Contract(PresenterABI, addresses['PRESENTER']);\n\n const teamIndex = getTeamIndex(nationItem);\n const poolIndex = getPoolIndex(poolItem);\n let amountApprove = String(amount).toString().replace(/,/g, '');\n\n try {\n deposit(presenterContract, teamIndex, poolIndex, Web3.utils.toWei(amountApprove), account, handleDepositResponse);\n } catch (e) {\n handleDepositResponse(null, e);\n }\n }\n\n const handleDepositResponse = (receipt, error = null) => {\n let amountApprove = String(amount).toString().replace(/,/g, '');\n const log = {\n date: moment().valueOf(),\n type: `Deposit ${amountApprove} MWAR`,\n amount,\n chainId,\n account,\n };\n\n // ERROR\n if (error) {\n // TIMEOUT\n if (error?.code === ERROR_CODE_TIME_OUT) {\n notification.error({\n message: 'Stake timeout',\n description: error?.message\n });\n setIsLoading(false);\n setStep(STEP.AMOUNT);\n return;\n }\n\n // FAILED\n const description = error?.message ?? '';\n if (error?.receipt?.transactionHash) {\n log.isError = true;\n log.transactionHash = error?.receipt?.transactionHash;\n dispatch(storeTransactionLog(log));\n notification.error({\n message: 'Stake failed',\n description\n });\n setStep(STEP.AMOUNT);\n setIsLoading(false);\n return;\n }\n\n // Reject\n notification.error({\n message: 'Stake failed'\n });\n setStep(STEP.AMOUNT);\n setIsLoading(false);\n return;\n }\n\n\n // SUCCESS\n if (receipt && receipt?.transactionHash) {\n dispatch(setAttackTeam(nationItem));\n dispatch(isAttacking(true));\n dispatch(refeshBalance());\n dispatch(getDataTeamInfoAndupdate());\n dispatch(getDataUserInfoAndUpdate());\n\n log.isError = false;\n log.transactionHash = receipt?.transactionHash;\n dispatch(storeTransactionLog(log));\n\n setIsLoading(false);\n setIsSuccess(true);\n }\n }\n\n /**\n * CLAIM REWARD\n * @param {*} stepInput \n */\n const handleClaimReward = (stepInput) => {\n setStep(stepInput);\n setIsLoading(true);\n const presenterContract = new window.web3.eth.Contract(PresenterABI, addresses['PRESENTER']);\n const teamIndex = getTeamIndex(nationItem);\n\n try {\n claimReward(presenterContract, teamIndex, account, handleClaimRewardResponse);\n } catch (e) {\n handleClaimRewardResponse(null, e);\n }\n }\n\n const handleClaimRewardResponse = (receipt, error = null) => {\n const log = {\n date: moment().valueOf(),\n type: `Claim Reward ${nationItem} team`,\n amount,\n chainId,\n account,\n };\n\n // ERROR\n if (error) {\n // TIMEOUT\n if (error?.code === ERROR_CODE_TIME_OUT) {\n notification.error({\n message: 'Claim Reward timeout',\n description: error?.message\n });\n setIsLoading(false);\n setStep(STEP.NATION);\n return;\n }\n\n // FAILED\n if (error?.receipt?.transactionHash) {\n log.isError = true;\n log.transactionHash = error?.receipt?.transactionHash;\n dispatch(storeTransactionLog(log));\n notification.error({\n message: 'Claim Reward failed',\n description: error?.message\n });\n setIsLoading(false);\n setStep(STEP.NATION);\n return;\n }\n\n // Reject\n notification.error({\n message: 'Claim Reward failed'\n });\n setIsLoading(false);\n setStep(STEP.NATION);\n return;\n }\n\n // SUCCESS\n if (receipt && receipt?.transactionHash) {\n dispatch(refeshBalance());\n dispatch(getDataTeamInfoAndupdate());\n\n log.isError = false;\n log.transactionHash = receipt?.transactionHash;\n dispatch(storeTransactionLog(log));\n\n setIsLoading(false);\n setIsSuccess(true);\n }\n }\n\n\n const handleSwitch = (option) => {\n resetDataSelect();\n updateSelectedOption(option);\n };\n\n const onClose = () => {\n setStep(STEP.NATION);\n resetDataSelect();\n handleClose();\n };\n\n\n const resetDataSelect = () => {\n setIsLoading(false);\n setIsSuccess(false);\n setStep(STEP.NATION)\n setNationTeam(null);\n setNationItem(null);\n setPoolItem(null);\n setAmount(0);\n setIsShowErrorBalance(false);\n setAvatar(coinImage);\n updateSelectedOption(TAB_STAKE_POP_UP[0]);\n }\n\n const renderBody = () => {\n if (isMyStake(selectedOption)) {\n return
\n \n
\n }\n return
{\n setNationItem(evt.target.value);\n if (evt.target.value === TEAMS.DOGE.CODE) {\n setNationTeam(teamInfo.doge);\n } else if (evt.target.value === TEAMS.PEPE.CODE) {\n setNationTeam(teamInfo.pepe);\n } else if (evt.target.value === TEAMS.WOJAK.CODE) {\n setNationTeam(teamInfo.wojak);\n }\n }} />\n }\n\n const renderButton = () => {\n return \n \n {isNewStake(selectedOption) &&\n handleStep(STEP.POOL)}\n />\n }\n {isReward(selectedOption) &&\n handleClaimReward(STEP.CLAIMING)}\n />\n }\n
\n }\n\n const isShowLoadingStake = (stepInput, isSuccessInput, isLoadingInput) => {\n return stepInput === STEP.STAKING && !isSuccessInput && isLoadingInput;\n }\n\n const isShowLoadingClaim = (stepInput, isSuccessInput, isLoadingInput) => {\n return stepInput === STEP.CLAIMING && !isSuccessInput && isLoadingInput;\n }\n\n return (\n {\n onClose();\n handleCancel();\n }}\n >\n {step === STEP.NATION &&\n \n
\n
\n
\n Choose Team to Stake In\n \n
\n Stakes are permanent, and your tokens will be burned in return for your permanent stake representation in the game.\n
\n
\n
\n\n {renderBody()}\n\n {renderButton()}\n\n
\n }\n {step === STEP.POOL &&\n \n
\n
\n
\n Choose Sub-Pool to Stake In\n \n
\n You must choose which area of your team to stake in.\n
\n
\n
\n {\n setPoolItem(evt.target.value);\n }} />\n
\n
\n handleStep(STEP.NATION)}\n />\n handleStep(STEP.AMOUNT)}\n />\n
\n
\n }\n {step === STEP.AMOUNT &&\n \n
\n
\n
\n Enter Stake Amount\n \n
\n
\n {\n if (!newAmount) {\n setAmount(0);\n return;\n }\n if (tokenBalance > parseInt(newAmount)) {\n setAmount(formatNumber(newAmount.toString().replace(/,/g, '')));\n setIsShowErrorBalance(false);\n } else {\n setAmount(formatNumber(newAmount.toString().replace(/,/g, '')));\n setIsShowErrorBalance(true);\n }\n }} />\n
\n {isShowErrorBalance &&
\n You will need to buy MWAR to stake in this pool!\n }\n
\n handleStep(STEP.POOL)}\n />\n handleStep(STEP.STAKING)}\n />\n {isShowErrorBalance && window.open(LINK_BUY, '_blank')} />\n }\n
\n
\n }\n\n {/* LOADING - SUCCESS POP - UP */}\n {isShowLoadingStake(step, isSuccess, isLoading) &&\n \n
\n
\n
\n STAKING COINS ...\n \n
\n
\n }\n\n {step === STEP.STAKING && isSuccess && !isLoading &&\n \n
\n
\n
\n Staking Coin Success!\n \n
\n
\n
\n }\n\n {isShowLoadingClaim(step, isSuccess, isLoading) &&\n \n
\n
\n
\n CLAIM REWARD ...\n \n
\n
\n }\n\n {step === STEP.CLAIMING && isSuccess && !isLoading &&\n \n
\n
\n
\n Claim Reward Success!\n \n
\n
\n
\n }\n \n );\n}\n","import StakeModal from './StakeModal';\nexport default StakeModal;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEoAAAA+CAYAAACMY42mAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAABWXSURBVHja7Jt7dFXVncc/e5/HfeXmRSCEgIAiQoiixQdFHlW0OO3U2ped2tYWKk6tHbS1a6ydutDa2qm0axxnRqYV7WOGRS06uHyNQEoLFmFsJA0SCDcggSTknXvzuM/z2PPHfXBvEsBxRtuu4bfWXXfl3H32+e3v+T2+v9/eEUopzsnZRZ6D4BxQ54A6B9Q5oM4B9f9GxDu8r1ZKud913W8DD7+D+33AJKAq862fZbwL9ABdme+Rd/DMv5NSPuS67iXAgfcKqM0vPP/8J//xsceoq6v7GPDcWcYbwFXAZ69ZMusLt37yUt/7asqoLNUJGCl0EUMniVBJhGujlIVyXVyh43hnYykPQ3GX/iHYd7CfJza+bu/5r9CzwI+B3UDqLM+/6frrrtuyZs0aPnLjjc8An/rfAqUD9tnuqaiocA4cOCD8Ph+XX3EFoVCoBjh0mvFfvuWTlz/+g6+/T0wuFUirFxFvhVQ3ItUL6gxr9M+E0kWjgoUJ0o9t2zQfO8l9/3ycF1/Z/yDwIDAee547e/bsg2/U1xONRqm9+GLV19ennWbsabHIj1HrysrKLGDjWSxt8tKlS4XjOHg8Hnbt2kVJScl+oGScsVc1vPTF9b94aIGo5jX0jg3I7v9ADO1DJDrATaXVHe8jvBBcMI4TpsCOoA/uotZ8gRe+EeK5f3n/WuCD4zy/tLS0dP+ru3ZhmiaO67J06VIBTD6L8WzMYLFuPKCuqKur48kNG26RUg4A004zUU1tbS2O42BZFmWlpfzX3r26lLJ9nFizvHa6H9m7HTF8AFwnA4IPVDnEK1F9k1FtlbihiaTerCKxfyqDb0whfmAyzr5mVHMIdfw49HdDfAgcG5IDMNKcnstJ8BezjgBcO9rdpZRte/fs0UtLS7EsC8dxqK2tBag5zdqmSSkHn3ryyVvq6uoALss3r6wkdE3jc5/7HNcuX1764Q996MTBQ4e+C9w/arIZVVVVuK5LPJHAMAxmzpzJtq1bi667/vpjwHlZsy4t9t4sjCAkutPheGQyQ4cDtFPLQHAW4aIZDPqnESubQGxyefplKsGPXmxOG5aCqeYI88ttqqwOqu02plvHubTkCJW1lRDoAsAsKsMwBj5qWc69eVbx1vZt24pmzpwJQDwex3VdqqqqAGaMA9L35s2b962XXnyRqqoqmg4eBEiMB5RfNwziiQRTqqqor6/nB4888u0HH3zwi8A8YCgzzqtpGkopYrEYxcEgAEuWLGH9+vVT77jjjt8AHwAqfvL9D8/HGkTYURCSrbGv03LZClxpoISGQqYRVQIlBOn6XJAyinPXjUlTOGoIjnrnoZQCpRBuiuX7t/Gt9z8Mmh+KL+ORb0656GsP/bYa6AB2rl+/furixYtzi4vF4yil0DQNwJu37hKg6TsPPlj9jW98A03TiMfj6LoOEBjP9U729fUxPDycm/Bb991HQ0PD1MrKygjwxcy4wUQigeu62LZNPB7PTbBq5UruuuuuZcCrE8r8r39saRUy8jooUG4Fx8qX4WoelGaC0EFIEBIlZNoIhMh8p69XlnrxmHoaVKnjSgNX8+BoAXZqH8B1K6D0ShA6X71pIkUBzx5g99fuvnvJqpUrc3rF43Fs28Z1XRKJBMBg5qeVVVVV4YaGhup7772XrAEMj4wwMDAAcHI8oJrb2tqwbZtoLHYqIM2dS0soJFatWvVTYB9gdXZ24rourusyODRUYL9///3vc+NHPrQ4tPULM4UziBj8Ayjo6J6Po3kzoJw+5Ugh0KXAa0gmBc0xvyvAFZL2qMnrRy4Bb1XaNQyTtpeWTvvLD/3FoocfLqR2g0NDOX07OzsBLGDfqlWrnjrc3Cxq5s7NjY3GYti2TXt7O0DLeEC92tDQgOM4hMNhHNfN/eDxeFj/+ONs27btskAgsKmxsTH34EQiQTQazY0Nd+5i8/dmUapH0Do2g+uinEp2BO/ClUbaWs5WLkiYVu5FiPGTb8pWdAy5/HXjX+EO9afRSw5QOlzHs19rpvOtracWHo2S9QDXdWlsbCQQCGzavn37ZesffxyPx5Mbm1u747Bv3z6AneMB9XpdXV1uwt7e3owrnJJlS5fS2toqfD4fqVQqN7avv5+h5u8hQ1+nMvwkRu8ryPZfgpMAWcqek7cwXHQeSupnB0nApKAHv6mddsyJgSQuGsflDH76YhWkotC/F5TCjB9jZuvNyL1X0VN/D339/Tk9U6kUgUCA1tZWsXTJklGkQBSMzWS9+vGAGm5sbKwLhULpjBaPMzAwgJCFFlAcDPLTp55ieHg4N6lK9lNmptBO/AzZsRkxEkqnLCo40HIDf5j+RVxpjgF+PNE0weRS87S/949YjCQcFIJrZvs4b/lnObHbhZR2ioM5FvpgI1P7/wXLsnJ6Dg8P8+SGDbkElMNISsLhMLFYDNd1CYVC7N+/vw4YPl1RvOaxxx7LTRwOhwmHw8hRYGmaxvnnn3/qTVEEroOwYmkaIEpwuqaws+12dl10H67uQQntbVVMJT4dXY7vnpajOBlJM/mPzNG47wMmE8rL6Hr/33Ho5GdxuqpAFKd1yHyyOrquy/nnn5/NegUgRSIRBgYGcuMeffRRgDVn6h4c2rZt2zM7duzAcRwcx6Gnp4e+/v4Cy9I0DdMw8Pl8KKXSaTtLJhUcabuGjRVP0XTBZ9JZTmhvq6r0mRqmJk47tG0ggeMqPlWrc89iA12TeDwevF4v0QWf47Upj3K8fTFu9acy2ULL6efz+TANowAoISUDAwN0d3fn1vvrX/+aurq6Z0aXZOO9us+vXbs22dHRkUO4p6eHkx0dCCkRQiCEQNd1SkpKEELgum66BssA1Tn1CqKBqjQNkNrbKjo1KSjyaAgh0ORYqMJRm6G4wxfeZ3LnQiNNNE0TIQRSSkzTRBVPZqj6EpQWzAAlcV0XIQQlJSXoup7TX0hJ58mTdHd359bZ0dHBAw88kAQ+P14/6h8yZHIL8BHA6e/vv3X16tVuV1fXKTeMRDhy5AhO5sGmaaJJSUVFRcairPR0CgL0oRD/o+ZEsVdHirQ1jQ5ltqs4GU7y5au8rFqQjl+GYRSEBNu2UUrh16KIbA2JjlKKiooKtAyYQggc1+Xo0aMMhMO59XV1dbF69Wq3v7//VsDJYLElg80/SOD6ra+8EmxoaLjpRz/60fPz5s1LAT9ra2s7sXLlSrelpSU3WTwep7m5OcedPB4PpmkyceJEcFIo6QMFfjeMeBvleVa8hsTUT08bOsNJ/maRl8/MNzMJSmAYxqk6OZPR0mVDEpxkmuQKDxMnTsQ0TUyPB5XhVM3NzbnA7bouLS0trFy50m1razsB/GzevHmpH/7wh883NDTctPWVV4LA9TrwzV2vvvrCPffcw1fvvJOv3nknsVjMd+jQoRmvbN3Kfffdx0033cTNN9+cfhuOw7Fjx/D5fEybNg1NynSscizQisCKUkIXKBeByljWmeiAIOgtpA16nuuNJB3uWOjhugsMsnuQplmYFZPJZJqMKoXftMAaAQWu8uDz+ZBS4jgOra2txPLItFKKX/3qVzz33HPcdttt8oYVK2bMnTsXv9+fI5/PPPMMwDcFUHz55ZcPPvvss/j9/jGp07ZtwuEwoZYWhoeHqaysLAzAPh/l5eVMan8AY+C3iJGjDJkL2OjdgKv70uWHylpXtp4DpdJgFPsMPLqWY91eXbK5voeBqAUKPlkjWXSengvKmqah66f+tiyLRCKRqz0XGr/Aax9F9v6OlHE+vVfuIhwOF5BigO7uboLBILMvvJCysrJsbZeToeFhYrEYn/jEJ6ivry/RgaH6+vqtb7755oqamhpc16WkuDjHinVdp6KigmAwiO04JOJxenp7icViCCGIRqNEo1HKbYWhF4ECDxFy6JzBoDy6xGtI8jers8NNTfD5S01qJ5KzpKzLZf9WSuVcLuuCuqEhYkOgIOkGOXHiRIEF+f1+Jk2cyIUXXoiuaXg8noIKQCnF4NAQ0WiUgwcPUl9fvxUYysL4lXXr1h194oknGBwcJBqNUllZiZF5c0IIvF4vjuOgaRrnZWjByMgIQ0NDjIyMEE2ZeLVShAuGO4jAPWOUkgKCvvGZulcX3LrQz8ySdAzJSjYYZ4HKB0kpheM4SN0DyUFwYchJ9+eKioooLi6mqKgonVUz9KaAKgiBZdt0dXXhOE66k7luHcBX8tssb+3cuXPDli1bbrvxxhtxHIcTJ05QXFzMhAkTkBnlNE3Dp2m4rotl25QUFxPMuGri4PlALyiQ1iB41RmBKspkuTHNdV1w+8IiJhhJ8jBC07QxWS67oFPXLIQRRCTSeiRKruSiiy7KxUJN1zF0vWAeIdMUoq+vj6G8Av/5559n586dG4C30ozslLyye/fulYsWLSqeMGFCLstlC2Sfz4fUtNzidE3DMAw0PZPWPeV44geQ/fvAdTnhW86InDSKR6XvNXVJkccYc92jCRbO8OIngW3bOUsRQhQUr67rkkwmC1zQcRwCqRDVgX5k9660xc3/J3zBCZgeDx7TRNe0HO8iw/96e3vp7OzMNfZc16WpqYm777673bbtD2Y4fgHhtOLx+MW33357pLGxMcdUbdumr6+Pw4cPc/ToUSKRCK5S6fAjBLqmYZomRZVzQPfnuNQs+3cINdb9hGBMlktTBFg800fAEGMsJZ8KZF1u9CkcpRRTZAjiaWtC91NefRFmHkBkOFQ4EuHo0aMcPnyY/v7+nHU6jkNjYyO33357JB6PX5xpx4zpcAJEIpHIjC996Uuvr1mzZvanP/3pMRkwmz2klHi9XgKBQO5tlydjSHMCItHLNPv3CHP1GO8r8uhoUhQE8IBH8P7pPnyGLIhJWZfLNtSyrZDRQGatbIJ3GBE7CQpsWUY4EkEpRTKZzLVbznTM6emnn+axxx4LJZPJK/Oae+MCBTCYTCZr1q1b98DLL7/87dWrV7Nw4cLx+0KpVIFf++KKoG8qxHspdo6DcshPfYYm8Y1qnwQ9kqum+/HqaVfIX8hoYjk6gOdbk23beAIGItIOCobVVFpbW98W4d27dy9PPPEETU1N3wUeyDBzzgYUmYH3NzU1PXr33Xfvqq6urrn22mtZtGgRs2fPxuv1jntTrzWZIn81or8BLdGHFrBwlAtCIoDiUVmu1Kdx1Xl+DC292GxdllMuU5tlwbMsa1yLUErhOjGEWQYjaaBOysvHtTyARCJBKBTitddeY8eOHXR0dBwElgL9Z9rkO5OE/X5/zSOPPMKll15KRUUFpmGQSCZz2z+O45wKkKmPo/p6Mi0Om/lso159HCUgMMrlJvg1rpjuRxenXKewyykLXC7box93v911mcHvITmISKU3MrzzVhHwleesNOvChmHg9XionTePpUuXcsMNN7B69eqaWCwWPttu6Bn3/GOx2N6WUGjhsmXL8JgmPp8Pv9+fVoDMnlImSgsqUX0SpQcRvjIu9h3gjeSN6LpZ0LGsCBhceZ4fKcgx7NGWku9yo4nlmD6VZVHtOYmItKZLF+9EqmfMHUe/9AvIZtKSkhJaQiFisdjebHZ7p0ABXP2dhx7aU1JaeuXy5cvRNI1AIEBxcTFerzfHb7LLjCU1gmU1UDIVvyYwEyP4vcEc5Z4cNFkw7RRIo61JKVVQouR3Bk5nTU5qELO8FNH+JigI6/MpzpQkIjsmQ3eGhoeJRqM4jsOOHTv4zkMP/R64+qxtoLcBlFJK/Xz79u0fCAaD0+fMmUM8HicSiZDd3opGoySTSWKxGDG9mmK/hXBigGSSPE6HfiVKSKpLPSyYFihoo4x2OSFEbmtpdGcgH8x8a5rjvoRfDSK7fgdSo/OSDaTwEo1GCYfD9Pb20tXVRWRwkHg8juM4bNq0ibVr1/7Odd1l4wXvdwIUgKuU+vnu3bsDTU1Ni2pqaigqKsotIh6PMzw8nAbN0qmULWhY4FoEiRBSi6iuCHLp1KICkLIBfDQdyE/j+cRyNFCu65KKRZgTfAt58jeIeB9J/0xaSz6T0ycWixVshLS3t3P//fezadOmHyqlPvt2QHqnx35qNE3bfN1119WsWLGCBQsWjKm8yxL7mDOpHzGY3hYbpAJnzv0YppmLEaNdSimFlBKZ6WFnzzZkyWX+JxugE4kEF6V+SZmWQGt+EgTUT/p7UhMXF6Zwx6G+vp6tW7dSV1d30HGcTwEH34vzUQCzgC8YhvHl6dOnV0yePDndjlWKnp4e3vj5R/HYPWDHQbn0Va1GK780F6RzOzh51pItUiORCLZt5/bjxgPKslLI4SbeVxxChjYioh3E/TO54gd+Jk2alC5yLYvOzk6OHz/eZ1nWvwI/B468lyfuxjsoVpTZ008BvptX1Lb8ct0nvGIwrZcbbqF7wWb8gRJkphDND9gy04/PApWNJeMBZVkW0eEIV3ueQwuHkO11oJt8+KnqkZf3HJuVOddkZg5ZjOSXIn/sM5wWEAY6M6St/VdbD9zU2zUI3goYbEe2vc6Ehi+RTCbH8KF8kLIBenTsyo9PiUSCBXILMhVHtv8WXNgfu4SX9xy7HujO6NCZ0cn6v1jgu3nYdWvlBx/d4uBBdR8EBWZrHYE3/5ZkMpkDIrsrkp8FT0css3XbXHsLfk1DtmwGxyYVmMb8u+p/DOx9txbzbp8K/quFK5/uVVOuTidYBYH27ZQc+0EGLGfM5uqZLCmZTHJhYjNluoNs3ohIjaC8JVz2YKwd+Oq7uZB3G6hU/YHjF//txn7bPe9aEAZUX4nP6qX8yFqSyUQBMKPjVv71eDzG3PhGSkUCefBniEQYTD+ff3py4uCx/tq3cfb0fyUa775E9+w/sck34YI1i5ZdhdDSWU9TFv6jPyFWfjVKDxZYU/5OiWVZqJE25tv/gTcZQTu8CWFFwfTxtbpZ9hMvHrwg3Vp9d+W9AApg4Nevv7XJUzzljsULpkthx2G4E3nsVfyt/45teIgXXXLqdFxmzy2ZTDBx8CVmyUNo3Y3IYy+DY4EvyFf+c4b1z1sOzALa3osFCN5bqbrxmksOb/nekqBs3AiJyKmm4KQ59M9bi12xhK6uLopijcxw30C34si3XkLEetLkMVjJ8n8ywjsb2y88U1vkzx0oAJ/fZ/5n57+tWBbs2Y2IDxR2UaddgV12MQYS2bYLEW5JN/+EpDswjxlrml9KJK2Pc/ZD+H/2QGWfe9tPv/Xhn9w69xiypxlUXraTevp0TKYnoYrKWff7mdz75Bu3AJv+WAr/MaXCNPRfNv3rB5dfYO9DDHWNsr0iGpNzueLefS9YtnMrEOH/ucwP+D1/2PfoNcpdX6Hc9RVq18MLlddj/Aa46E9BQfEnBtgFGeKYBP4xU4b8SYg491/qfxrM/BxQ54A6J+eAOgfUOaDOAfVnJ/89AKYqI/iMO267AAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/stake.de2f0704.svg\";","import StakeContainer from './StakeContainer';\n\nexport default StakeContainer;\n","var _ellipse, _path, _path2, _path3, _path4, _path5, _path6, _path7;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTotalStaked(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n \"data-name\": \"Layer 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 200 200\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 69.05,\n cy: 47.43,\n rx: 42.8,\n ry: 15.85\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.74,59.87c-6,6.28-22.83,10.8-42.69,10.8S32.47,66.18,26.42,59.94V74.49C28.31,82.6,46.67,89,69.05,89c22.67,0,41.21-6.53,42.69-14.78Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.74,86.35c-6,6.28-22.83,10.81-42.69,10.81s-36.58-4.5-42.63-10.74V101c1.89,8.1,20.25,14.47,42.63,14.47,22.67,0,41.21-6.53,42.69-14.79Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131,63.28a112.32,112.32,0,0,0-11.54.59V94.38A112.32,112.32,0,0,0,131,95c23.64,0,42.8-7.09,42.8-15.84S154.59,63.28,131,63.28Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131,102.37c-4,0-7.86-.19-11.54-.53v18.23a112.32,112.32,0,0,0,11.54.59c22.68,0,41.22-6.53,42.69-14.79V91.56C167.66,97.84,150.81,102.37,131,102.37Z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131,128.85c-4,0-7.86-.18-11.54-.53v18.23a112.32,112.32,0,0,0,11.54.59c22.68,0,41.22-6.53,42.69-14.79v-14.3C167.66,124.33,150.81,128.85,131,128.85Z\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.74,112.84c-6,6.28-22.83,10.8-42.69,10.8s-36.58-4.49-42.63-10.74v14.56c1.89,8.11,20.25,14.47,42.63,14.47,22.67,0,41.21-6.53,42.69-14.79Z\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.74,139.32c-6,6.28-22.83,10.81-42.69,10.81s-36.58-4.5-42.63-10.74V154c1.89,8.1,20.25,14.46,42.63,14.46,22.67,0,41.21-6.53,42.69-14.78Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTotalStaked);\nexport default __webpack_public_path__ + \"static/media/totalStaked.9bb3148c.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Tooltip } from 'antd';\n// import Button from '../Button';\nimport StakeModal from '../StakeModal';\n\nimport { setConnectModalVisible } from '../../store/modules/App/actions';\n\n// import { ReactComponent as StakeIcon } from './img/stake.svg';\n\nimport stakeIcon from './img/stake.svg';\n\nimport style from './Stake.module.scss';\n\nexport default function StakeContainer() {\n const dispatch = useDispatch();\n\n const [isVisibleStakeModal, setVisibleStakeModal] = useState(false);\n\n const {isMobile, isTablet} = useSelector(state => state.app);\n const isConnected = useSelector(state => state.user.connectWallet.isConnect);\n const cycleInfo = useSelector(state => state.round.cycleInfo);\n\n const stageIndex = cycleInfo ? parseInt(cycleInfo.stageIndex) : 0;\n\n const handleModalVisible = () => {\n if (isConnected) {\n setVisibleStakeModal(true);\n } else {\n dispatch(setConnectModalVisible(true));\n }\n };\n\n const handleModalHidden = () => {\n setVisibleStakeModal(false);\n };\n\n return (\n \n {/*
}\n iconClass={style.icon}\n iconWidth={50}\n iconAlignStart\n disabled={stageIndex !== 0}\n onClick={handleModalVisible}\n hasTooltip={stageIndex !== 0}\n toolTipText={'It not staking day'}\n toolTipPlacement={'topLeft'}\n /> */}\n\n {stageIndex !== 0 ? (\n
\n {}}\n >\n \n STAKE\n \n \n ) : (\n
handleModalVisible()}\n >\n \n STAKE\n \n )}\n\n
\n
\n );\n}\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDefense(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n \"data-name\": \"Layer 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 200 200\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100,39c9,0,23.43,1.27,31.75,4.05,2.12,10.13,8.46,20.51,20.89,25.58-.34,10.19-1.7,23.34-6.54,41.86-3.31,12.69-9.83,21-19.39,30.86A86.46,86.46,0,0,1,100,160a86.46,86.46,0,0,1-26.71-18.68c-9.56-9.84-16.08-18.17-19.39-30.86C49.06,92,47.7,78.8,47.36,68.61,59.79,63.54,66.13,53.16,68.25,43,76.57,40.25,91,39,100,39h0m0-12.36h0c-.31,0-28.83,0-41.6,7.26a3.46,3.46,0,0,0-1.72,2.79c-.31,4.89-2.67,18.64-19,22a3.52,3.52,0,0,0-2.78,3.43c0,7.9.52,26.55,7,51.51,8.11,31.07,32.47,50.05,58.06,59.78,25.59-9.73,49.95-28.71,58.06-59.78,6.52-25,7.07-43.61,7-51.51a3.52,3.52,0,0,0-2.78-3.43c-16.33-3.35-18.68-17.1-19-22a3.46,3.46,0,0,0-1.72-2.79c-12.77-7.24-41.29-7.26-41.6-7.26Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100,47.5A129.71,129.71,0,0,1,124.8,50a42.86,42.86,0,0,0,19.07,23.78c-.62,10.15-2.19,19.93-6,34.56-2.94,11.25-8.75,18.3-17.27,27.08A78.35,78.35,0,0,1,100,150.57,78.35,78.35,0,0,1,79.41,135.4c-8.52-8.78-14.33-15.83-17.27-27.08-3.82-14.63-5.39-24.41-6-34.56A42.86,42.86,0,0,0,75.2,50,128.91,128.91,0,0,1,100,47.5\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDefense);\nexport default __webpack_public_path__ + \"static/media/defense.c560f812.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _polygon, _path2, _polygon2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgAttack(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n \"data-name\": \"Layer 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 200 200\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.08,155.05l37.47-37.47a4.95,4.95,0,0,1,7,7l-11.18,11.18,19.07,23.73a2.71,2.71,0,0,1-.2,3.6l-6.65,6.65a2.7,2.7,0,0,1-3.6.2l-23.73-19.07-11.18,11.18a4.95,4.95,0,0,1-7-7Z\"\n })), _polygon || (_polygon = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"105.82 128.12 123.45 141.97 131.78 133.64 117.42 119.29 105.82 128.12\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.75,76.62l-8.36-8.37a4.51,4.51,0,0,1,.32-6.66,4.64,4.64,0,0,1,6.18.43l7.44,7.45L93.91,52.05,84,39.39a9,9,0,0,0-5.48-3.3l-36-6.5A7.2,7.2,0,0,0,34.08,38l6.51,36a9,9,0,0,0,3.3,5.48l17.76,14Z\"\n })), _polygon2 || (_polygon2 = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"135.76 105.33 124.65 113.79 138.14 127.28 146.46 118.95 135.76 105.33\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.92,155.05,40.45,117.58a4.95,4.95,0,0,0-7,7l11.18,11.18L25.56,159.49a2.71,2.71,0,0,0,.2,3.6l6.65,6.65a2.7,2.7,0,0,0,3.6.2l23.73-19.07,11.18,11.18a4.95,4.95,0,0,0,7-7Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M159.41,74l6.51-36a7.2,7.2,0,0,0-8.37-8.36l-36,6.5a9,9,0,0,0-5.48,3.3L53.54,119l8.32,8.33L127.11,62a4.64,4.64,0,0,1,6.18-.43,4.51,4.51,0,0,1,.32,6.66L68.22,133.64,76.55,142l79.56-62.49A9,9,0,0,0,159.41,74Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAttack);\nexport default __webpack_public_path__ + \"static/media/attack.5deb698b.svg\";\nexport { ForwardRef as ReactComponent };","var _polygon, _polygon2, _polygon3, _polygon4, _polygon5, _polygon6, _polygon7;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgProduction(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n \"data-name\": \"Layer 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 200 200\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _polygon || (_polygon = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"19.38 69.93 57.54 79.92 64.05 56.08 33.73 47.71 19.38 69.93\"\n })), _polygon2 || (_polygon2 = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"130.05 35.74 67.43 35.74 45.06 43.06 69.16 49.71 128.57 49.71 152.26 43.56 130.05 35.74\"\n })), _polygon3 || (_polygon3 = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"71.51 57.21 65.09 80.73 131.5 80.73 126.07 57.21 71.51 57.21\"\n })), _polygon4 || (_polygon4 = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"57.47 87.65 23.92 78.88 85.47 151.76 57.47 87.65\"\n })), _polygon5 || (_polygon5 = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"163.66 48.35 133.53 56.17 139.02 79.95 180.62 69.97 163.66 48.35\"\n })), _polygon6 || (_polygon6 = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"138.95 87.69 111.54 153.88 176.7 78.62 138.95 87.69\"\n })), _polygon7 || (_polygon7 = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"130.6 88.24 65.91 88.24 99.11 164.26 130.6 88.24\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgProduction);\nexport default __webpack_public_path__ + \"static/media/production.58957f16.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _g2, _g3, _g4, _g5, _g6, _g7, _g8, _g9, _g10, _g11, _g12, _g13, _g14, _g15, _g16;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgUpArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 487 487\",\n style: {\n enableBackground: \"new 0 0 487 487\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"white\",\n d: \"M397.7,376.1c20.4,20.4,53.6,20.4,74,0s20.4-53.6,0-74L280.5,110.9c-20.4-20.4-53.6-20.4-74,0L15.3,302.1 c-20.4,20.4-20.4,53.6,0,74s53.6,20.4,74,0l154.2-154.2L397.7,376.1z\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null)), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", null)), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", null)), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", null)), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", null)), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", null)), _g8 || (_g8 = /*#__PURE__*/React.createElement(\"g\", null)), _g9 || (_g9 = /*#__PURE__*/React.createElement(\"g\", null)), _g10 || (_g10 = /*#__PURE__*/React.createElement(\"g\", null)), _g11 || (_g11 = /*#__PURE__*/React.createElement(\"g\", null)), _g12 || (_g12 = /*#__PURE__*/React.createElement(\"g\", null)), _g13 || (_g13 = /*#__PURE__*/React.createElement(\"g\", null)), _g14 || (_g14 = /*#__PURE__*/React.createElement(\"g\", null)), _g15 || (_g15 = /*#__PURE__*/React.createElement(\"g\", null)), _g16 || (_g16 = /*#__PURE__*/React.createElement(\"g\", null)));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUpArrow);\nexport default __webpack_public_path__ + \"static/media/up-arrow.4bd7b048.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDownArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 55.751 55.751\",\n style: {\n enableBackground: \"new 0 0 55.751 55.751\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"white\",\n d: \"M31.836,43.006c0.282-0.281,0.518-0.59,0.725-0.912L54.17,20.485c2.107-2.109,2.109-5.528,0-7.638 c-2.109-2.107-5.527-2.109-7.638,0l-18.608,18.61L9.217,12.753c-2.109-2.108-5.527-2.109-7.637,0 C0.527,13.809-0.002,15.19,0,16.571c-0.002,1.382,0.527,2.764,1.582,3.816l21.703,21.706c0.207,0.323,0.445,0.631,0.729,0.913 c1.078,1.078,2.496,1.597,3.91,1.572C29.336,44.604,30.758,44.084,31.836,43.006z\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDownArrow);\nexport default __webpack_public_path__ + \"static/media/down-arrow.f4721ba4.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport cn from 'classnames';\n\nimport style from './MultiProgressBar.module.scss';\n\nexport const MultiPrgressBar = (props) => {\n const {items, width, direction, classes} = props;\n return (\n \n {direction === 'left' && items.map((item, index) => (\n
\n {item.title}\n
\n ))}\n\n {direction === 'right' && items.map((item, index) => (\n
\n {item.title}\n
\n ))}\n
\n )\n};","export const DEFAULT_NATION_INFO = {\n attackAmount: 0,\n defenceAmount: 0,\n factoryAmount: 0,\n rewardAmount: 0,\n totalAmount: 0,\n victimVotedCount: 0\n}","import React, { useEffect, useLayoutEffect, useState } from 'react';\nimport cn from 'classnames';\nimport { ReactComponent as TotalStackedIcon } from './img/totalStaked.svg';\nimport { ReactComponent as DefenseIcon } from './img/defense.svg';\nimport { ReactComponent as AttackIcon } from './img/attack.svg';\nimport { ReactComponent as ProductionIcon } from './img/production.svg';\nimport { InfoCircleOutlined } from '@ant-design/icons';\nimport { ReactComponent as UpArrow} from './img/up-arrow.svg';\nimport {ReactComponent as DownArrow} from './img/down-arrow.svg';\n\nimport { MultiPrgressBar } from '../MultiProgressBar';\nimport style from './NationInfo.module.scss';\nimport { useSelector } from 'react-redux';\nimport formatNumber, {\n fromWeiDecimals\n} from '../../utils';\nimport { TEAMS } from '../../utils/constants';\nimport { DEFAULT_NATION_INFO } from './constants';\n\nexport default function NationInfo() {\n const [isHide, setHide] = useState(false);\n const [nationName, updateNationName] = useState('');\n const [nationImg, updateNationImg] = useState(null);\n const [activeTeamInfo, setActiveTeamInfo] = useState(null);\n\n const isConnect = useSelector(state => state.user?.connectWallet?.isConnect);\n const activeTeam = useSelector(state => state.team.activeTeam);\n const teamInfo = useSelector(state => state.team.teamInfo);\n\n useEffect(() => {\n if (teamInfo && isConnect) {\n switch (activeTeam) {\n case TEAMS.DOGE.CODE:\n updateNationName(TEAMS.DOGE.NAME_NATION);\n updateNationImg(TEAMS.DOGE.IMG);\n setActiveTeamInfo(teamInfo.doge);\n break;\n case TEAMS.PEPE.CODE:\n updateNationName(TEAMS.PEPE.NAME_NATION);\n updateNationImg(TEAMS.PEPE.IMG);\n setActiveTeamInfo(teamInfo.pepe);\n break;\n case TEAMS.WOJAK.CODE:\n updateNationName(TEAMS.WOJAK.NAME_NATION);\n updateNationImg(TEAMS.WOJAK.IMG);\n setActiveTeamInfo(teamInfo.wojak);\n break;\n default:\n updateNationName(TEAMS.DOGE.NAME_NATION);\n updateNationImg(TEAMS.DOGE.IMG);\n setActiveTeamInfo(teamInfo.doge);\n break;\n }\n } else {\n switch (activeTeam) {\n case TEAMS.DOGE.CODE:\n updateNationName(TEAMS.DOGE.NAME_NATION);\n updateNationImg(TEAMS.DOGE.IMG);\n break;\n case TEAMS.PEPE.CODE:\n updateNationName(TEAMS.PEPE.NAME_NATION);\n updateNationImg(TEAMS.PEPE.IMG);\n break;\n case TEAMS.WOJAK.CODE:\n updateNationName(TEAMS.WOJAK.NAME_NATION);\n updateNationImg(TEAMS.WOJAK.IMG);\n break;\n default:\n updateNationName(TEAMS.DOGE.NAME_NATION);\n updateNationImg(TEAMS.DOGE.IMG);\n break;\n }\n setActiveTeamInfo(DEFAULT_NATION_INFO);\n }\n }, [activeTeam, teamInfo, isConnect]);\n\n\n function useWindowSize() {\n const [size, setSize] = useState(0);\n useLayoutEffect(() => {\n function updateSize() {\n setSize(window.innerHeight);\n if (window.innerHeight <= 562) {\n setHide(true);\n } else {\n setHide(false);\n }\n }\n window.addEventListener('resize', updateSize);\n updateSize();\n return () => window.removeEventListener('resize', updateSize);\n }, []);\n return size;\n }\n\n const height = useWindowSize();\n\n const attack = activeTeamInfo && (activeTeamInfo?.attackAmount / activeTeamInfo?.totalAmount) * 100;\n const defense = activeTeamInfo && (activeTeamInfo?.defenceAmount / activeTeamInfo?.totalAmount) * 100;\n const production = attack === 0 && defense === 0 && (activeTeamInfo?.factoryAmount === 0 || activeTeamInfo?.factoryAmount === '0')\n ? 0\n : 100 - parseFloat(attack).toFixed(2) - parseFloat(defense).toFixed(2);\n\n return (\n <>\n {activeTeamInfo &&\n \n
\n\n
\n
\n {nationName} \n
\n\n
\n
\n
\n
\n
\n Total Staked: \n \n {formatNumber(fromWeiDecimals(String(activeTeamInfo.totalAmount)))} MWAR \n \n
\n
\n
\n\n
\n
\n
\n
\n Defense: \n \n {parseFloat(defense || 0).toFixed(2)}% \n ({formatNumber(fromWeiDecimals(String(activeTeamInfo.defenceAmount)))} MWAR )\n \n
\n
\n
\n\n
\n
\n
\n
\n Attack: \n \n {parseFloat(attack || 0).toFixed(2)}% ({formatNumber(fromWeiDecimals(String(activeTeamInfo.attackAmount)))} MWAR )\n \n
\n
\n
\n\n
\n
\n
\n
\n Production: \n \n {parseFloat(production || 0).toFixed(2)}% ({formatNumber(fromWeiDecimals(String(activeTeamInfo.factoryAmount)))} MWAR )\n \n
\n
\n
\n
\n\n
\n
\n
\n }\n {height <= 562 &&\n\t\t\t\t {setHide(!isHide)}}\n\t\t\t\t>\n\t\t\t\t \n\t\t\t\t {isHide ? : }\n\t\t\t\t \n\t\t\t\t
\n }\n >\n\n )\n}\n","import React from 'react';\nimport cn from 'classnames';\nimport style from './ProgressBar.module.scss';\n\nexport const PrgressBar = (props) => {\n const {\n value,\n title,\n direction,\n classes,\n startColor,\n endColor,\n loading,\n // highlight\n } = props;\n\n return (\n \n {direction === 'left' && (\n
\n )}\n\n {direction === 'left' && (\n
\n {loading ? 'Loading...' : title}\n
\n )}\n {direction === 'right' && (\n
\n )}\n\n {direction === 'right' && (\n
\n {title}\n
\n )}\n
\n )\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { InfoCircleOutlined } from '@ant-design/icons';\nimport dayjs from 'dayjs';\n\nimport { PrgressBar } from '../ProgressBar';\n// import { STAGE_NAMES } from '../../store/modules/Round/constants';\n\nimport { STAGE_INFO_LIST } from '../../utils/constants';\nimport {\n setVisibleRoundHistory\n} from '../../store/modules/Round/actions';\n\nimport style from './RoundContainer.module.scss';\n\nexport default function RoundContainer(props) {\n const dispatch = useDispatch();\n\n const isConnect = useSelector(state => state.user?.connectWallet?.isConnect);\n const { roundImage } = props;\n const [stakeTime, setStakeTime] = useState('');\n const [percent, setPercent] = useState(0);\n\n const cycleIndex = useSelector(state => state.round.cycleIndex);\n const cycleInfo = useSelector(state => state.round.cycleInfo);\n const isLoadingNextStep = useSelector(state => state.round.isLoadingNextStep);\n\n const stageIndex = cycleInfo ? cycleInfo.stageIndex : 0;\n const stageStartDate = cycleInfo ? cycleInfo.stageStart * 1000 : null;\n const stageDuration = cycleInfo ? parseInt(cycleInfo.stageDuration) : 0;\n const stageStartObject = dayjs(stageStartDate);\n const stageEndObjet = stageStartObject.add(stageDuration, 'second');\n\n const zeroPad = (num, places) => String(num).padStart(places, '0');\n\n useEffect(() => {\n if (stageStartDate && isConnect) {\n let timer = setInterval(async () => {\n const now = dayjs();\n let diffSeconds = stageEndObjet.diff(now, 'second');\n\n if (diffSeconds < 0) {\n setStakeTime('Loading...');\n diffSeconds = 0;\n } else {\n const seconds = diffSeconds % 60;\n const minutes = Math.floor(diffSeconds / 60) % 60;\n const hours = Math.floor(diffSeconds / 3600) % 24;\n setStakeTime(`${zeroPad(hours, 2)}H ${zeroPad(minutes, 2)}M ${zeroPad(seconds, 2)}S`);\n \n // setPercent(Math.floor(diffSeconds * 100 / 3600 / 24));\n setPercent(Math.floor(diffSeconds / stageDuration * 100));\n }\n\n }, 1000);\n\n return () => {\n clearInterval(timer);\n };\n }\n\n }, [stageStartDate, cycleIndex, stageIndex, stakeTime, cycleInfo, isConnect] );\n\n const handleShowRoundHistory = () => {\n dispatch(setVisibleRoundHistory(true));\n };\n\n return (\n \n
\n
\n
\n
\n
\n
\n
\n
{`ROUND ${cycleIndex} - ${STAGE_INFO_LIST[stageIndex].STAGE_NAMES} day`}
\n\n
handleShowRoundHistory()}\n className={style.iconRoundTitle}> \n \n
\n
\n
\n
\n
\n
\n\n );\n}","export const DEFAULT_POINT_DATA = {\n doge: {\n value: '0%',\n title: '0 MWAR',\n startColor: '#fdc66e',\n endColor: '#ffb946',\n color: '#ffffff'\n },\n wojak: {\n value: '0%',\n title: '0 MWAR',\n startColor: '#e34545',\n endColor: '#d55e5e',\n color: '#ffffff'\n },\n pepe: {\n value: '0%',\n title: '0 MWAR',\n startColor: '#21962b',\n endColor: '#509a58',\n color: '#ffffff'\n }\n}\n\nexport const INTERVAL_STEP = {\n BLANK : '',\n INTERVAL: 'INTERVAL',\n STOP: 'STOP'\n}\n\nexport const INTERVAL_TIME = 3;","import React from 'react';\n\nimport { PrgressBar } from '../ProgressBar';\n\nimport style from './PointContainer.module.scss';\n\nexport default function PointItem(props) {\n const { avatar, ...restProps } = props;\n\n return (\n \n
\n
\n
\n
\n
\n\n )\n}","export default __webpack_public_path__ + \"static/media/pepe.31c12718.png\";","export default __webpack_public_path__ + \"static/media/doge.2718afb8.png\";","export default __webpack_public_path__ + \"static/media/wojak.5ee0a857.svg\";","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport dayjs from 'dayjs';\n\nimport { DEFAULT_POINT_DATA, INTERVAL_TIME } from './constants';\nimport { getPercent, contractAddresses, formatNumberFull } from '../../utils';\nimport { STAGE_INFO } from '../../utils/constants';\nimport { updateRewardAmount, getProductionData, getDataTeamInfo } from '../../store/modules/Team/actions';\n\nimport style from './PointContainer.module.scss';\nimport PresenterABI from '../../abi/presenterAbi';\nimport PointItem from './PointItem';\nimport pepeImage from './img/pepe.png';\nimport dogeImage from './img/doge.png';\nimport wojakImage from './img/wojak.svg';\nimport { logger } from 'ethers';\n\nexport default function PointContainer() {\n const isConnect = useSelector(state => state.user?.connectWallet?.isConnect);\n const dispatch = useDispatch();\n\n const rewardAmount = useSelector(state => state.team.rewardAmount);\n\n const [pointData, setPointData] = useState(null);\n const [loop, setLoop] = useState();\n\n const chainId = useSelector(state => state.user.chainId);\n const addresses = contractAddresses(chainId);\n const account = useSelector(state => state.user.userAccount.accounts)[0];\n const cycleIndex = useSelector(state => state.round.cycleIndex);\n const cycleInfo = useSelector(state => state.round.cycleInfo);\n const stageIndex = cycleInfo ? cycleInfo.stageIndex : 0;\n\n const stageStartDate = cycleInfo ? cycleInfo.stageStart * 1000 : null;\n const stageDuration = cycleInfo ? parseInt(cycleInfo.stageDuration) : 0;\n const stageStartObject = dayjs(stageStartDate);\n const stageEndObjet = stageStartObject.add(stageDuration, 'second');\n\n useEffect(async () => {\n try {\n if (window.web3 && chainId && window.web3.eth) {\n const presenterContract = new window.web3.eth.Contract(PresenterABI, addresses['PRESENTER']);\n if (stageIndex === STAGE_INFO.PRODUCTION.INDEX || stageIndex === STAGE_INFO.PRODUCTION.INDEX.toString()) {\n // get data reward by second\n handleInterval(presenterContract);\n } else {\n // get normal data team\n clearInterval(loop);\n const dataTeamInfo = await getDataTeamInfo(presenterContract, account);\n dispatch(updateRewardAmount(dataTeamInfo));\n }\n }\n } catch (e) {\n logger.debug(e);\n }\n }, [chainId, account, cycleIndex, stageIndex]);\n\n useEffect(() => {\n if (rewardAmount && isConnect) {\n const newPointData = {\n doge: {\n value: `${getPercent(rewardAmount?.doge, rewardAmount?.total)}`,\n title: `${formatNumberFull(rewardAmount.doge, 4)} MWAR`,\n startColor: '#ffb63f',\n endColor: '#ffb63f',\n color: '#ffffff'\n },\n wojak: {\n value: `${getPercent(rewardAmount?.wojak, rewardAmount?.total)}`,\n title: `${formatNumberFull(rewardAmount.wojak, 4)} MWAR`,\n startColor: '#e66969',\n endColor: '#e64646',\n color: '#ffffff'\n },\n pepe: {\n value: `${getPercent(rewardAmount?.pepe, rewardAmount?.total)}`,\n title: `${formatNumberFull(rewardAmount.pepe, 4)} MWAR`,\n startColor: '#62ad69',\n endColor: '#23a62f',\n color: '#ffffff'\n }\n };\n\n setPointData(newPointData);\n return;\n }\n\n setPointData(DEFAULT_POINT_DATA);\n }, [rewardAmount, isConnect]);\n\n const handleInterval = (presenterContract) => {\n setLoop(setInterval(async () => {\n try {\n\n if (stageStartDate) {\n // check remain time => clear interval \n const now = dayjs();\n let diffSeconds = stageEndObjet.diff(now, 'second');\n if (diffSeconds < INTERVAL_TIME) {\n clearInterval(loop);\n return;\n }\n }\n\n // CALL REWARD PRODUCTION BY SECOND\n const dataTeamInfo = await getProductionData(presenterContract, account);\n dispatch(updateRewardAmount(dataTeamInfo));\n } catch {\n clearInterval(loop);\n }\n }, INTERVAL_TIME * 1000))\n }\n\n return (\n <>\n {pointData &&\n \n }\n >\n )\n}","export default __webpack_public_path__ + \"static/media/wojakSquare.5ee0a857.svg\";","import dogeImg from '../../../assets/img/maps/doge.png';\nimport pepeImg from '../../../assets/img/maps/pepe.png';\nimport wojakImg from '../../../assets/img/maps/wojakSquare.svg';\n\nexport const TEAMS_LIST_CHOSEN = [\n {\n teamIndex: 0,\n name: 'doge',\n title: 'DOGE NATION',\n image: dogeImg,\n percent: 0,\n startColor: '#feb540',\n endColor: '#fdc66e'\n },\n {\n teamIndex: 1,\n name: 'pepe',\n title: 'PEPE NATION',\n image: pepeImg,\n percent: 0,\n startColor: '#23a62f',\n endColor: '#62ad69'\n },\n {\n teamIndex: 2,\n name: 'wojak',\n title: 'WOJAK NATION',\n image: wojakImg,\n percent: 0,\n startColor: '#e64646',\n endColor: '#e66969'\n }\n];","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { InfoCircleOutlined } from '@ant-design/icons';\nimport { isEmpty } from 'lodash';\n\nimport { TEAMS_LIST_CHOSEN } from './constants';\n\nimport { getTeamString } from '../../../utils';\nimport { MultiPrgressBar } from '../../../components/MultiProgressBar';\n\nimport style from './DogeNation.module.scss';\n\nexport default function DogeNation() {\n const [title, setTitle] = useState('');\n const [warTeamChosen, setWarTeamChosen] = useState(null);\n const [victimTeams, setVictimsTeams] = useState([]);\n const [totalVotes, setTotalVotes] = useState(0);\n\n const cycleInfo = useSelector(state => state.round?.cycleInfo ?? {});\n const cycleIndex = useSelector(state => state.round?.cycleIndex);\n const teamInfo = useSelector(state => state.team?.teamInfo ?? {});\n\n const stageIndex = cycleInfo ? parseInt(cycleInfo.stageIndex) : 0;\n const warTeam = cycleInfo ? parseInt(cycleInfo.warTeam) : null;\n const isChosenWarTeam = warTeam < 3;\n\n const votedCountA = !isEmpty(victimTeams) && teamInfo[victimTeams[0].name]?.victimVotedCount;\n const votedCountB = !isEmpty(victimTeams) && teamInfo[victimTeams[1].name]?.victimVotedCount;\n\n useEffect(() => {\n if (isChosenWarTeam) {\n const warTeamString = getTeamString(warTeam);\n setTitle(`${warTeamString} Nation War Vote`);\n\n const getWarTeamChosen = TEAMS_LIST_CHOSEN.find(item => item.teamIndex === warTeam);\n const getVictimTeams = TEAMS_LIST_CHOSEN.filter(item => item.teamIndex !== warTeam);\n setWarTeamChosen(getWarTeamChosen);\n setVictimsTeams(getVictimTeams);\n }\n }, [stageIndex, warTeam, cycleIndex]);\n\n useEffect(() => {\n if (warTeamChosen) {\n const victimA = victimTeams[0];\n const victimB = victimTeams[1];\n\n const nameVictimA = victimA?.name;\n const nameVictimB = victimB?.name;\n\n const percentVotingA = teamInfo[nameVictimA]?.victimVotedCount;\n const percentVotingB = teamInfo[nameVictimB]?.victimVotedCount;\n\n const updateVictimA = {...victimA, percent: parseInt(percentVotingA)};\n const updateVictimB = {...victimB, percent: parseInt(percentVotingB)};\n\n setVictimsTeams([updateVictimA, updateVictimB]);\n setTotalVotes(parseInt(percentVotingA) + parseInt(percentVotingB));\n }\n }, [votedCountA, votedCountB, stageIndex]);\n\n const renderVictimTeams = () => (\n victimTeams && victimTeams.map((item, index) => {\n const calcPercent = (totalVotes === 0) ? 0 : Math.round(item?.percent / totalVotes * 100);\n\n return (\n \n {item.image && (\n
\n )}\n\n
\n
{item.title}
\n
{calcPercent}%
\n
\n
\n );\n })\n );\n\n return (\n <>\n {isChosenWarTeam &&\n \n
\n\n
\n
{title}
\n
\n {renderVictimTeams()}\n
\n\n
{\n const percent = totalVotes === 0 ? 0 : Math.round(item.percent / totalVotes * 100);\n\n return {\n value: percent,\n title: '',\n startColor: item.startColor,\n endColor: item.endColor\n }\n })}\n />\n \n
\n }\n >\n )\n}","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport formatNumber, { contractAddresses, getTeamString, capitalizeFirstChar, fromWeiDecimals } from '../../../utils';\nimport { STAGE_INFO } from '../../../utils/constants';\nimport { getPendingReward } from '../../../utils/callHelpers';\nimport PresenterABI from '../../../abi/presenterAbi';\n\nimport style from './News.module.scss';\n\nexport default function News(props) {\n const {title, icon} = props;\n\n const [description, setDescription] = useState('');\n const [resultStage, setResultStage] = useState('');\n const [hasMwar, setHasMwar] = useState(false);\n\n const account = useSelector(state => state.user.userAccount.accounts)[0];\n const cycleInfo = useSelector(state => state.round.cycleInfo);\n const chainId = useSelector(state => state.user.chainId);\n\n const stageIndex = cycleInfo ? parseInt(cycleInfo.stageIndex) : 0;\n const warTeam = cycleInfo ? parseInt(cycleInfo.warTeam) : null;\n const victimTeam = cycleInfo ? parseInt(cycleInfo.victimTeam) : null;\n\n const warTeamString = getTeamString(warTeam);\n const victimTeamString = getTeamString(victimTeam);\n\n const warTeamUpperCaseFirstChar = capitalizeFirstChar(warTeamString ?? '');\n const victimTeamUpperCaseFirstChar = capitalizeFirstChar(victimTeamString ?? '');\n\n const smallerOne = resultStage &&\n fromWeiDecimals(`${parseInt(resultStage) || 0}`) > 0 && fromWeiDecimals(`${parseInt(resultStage) || 0}`) < 1;\n\n useEffect(async () => {\n switch (stageIndex) {\n case STAGE_INFO.STAKING.INDEX:\n setResultStage('');\n setHasMwar(false);\n setDescription('This time for staking. You can withdraw the reward, stake new.');\n break;\n case STAGE_INFO.PRODUCTION.INDEX:\n setResultStage('');\n setHasMwar(false);\n setDescription('Time for production.');\n break;\n case STAGE_INFO.RANDOM_WAR.INDEX:\n setResultStage('');\n setHasMwar(false);\n setDescription('War team will be determined shortly');\n break;\n case STAGE_INFO.VOTING.INDEX:\n setResultStage('');\n setHasMwar(false);\n setDescription(`This time for the voting victim team. All stakers of the ${warTeamUpperCaseFirstChar} Nation can vote now.`);\n break;\n case STAGE_INFO.WAR_TIME.INDEX:\n setResultStage('');\n setHasMwar(false);\n setDescription(`${warTeamUpperCaseFirstChar} Nation is attacking ${victimTeamUpperCaseFirstChar}`);\n break;\n case STAGE_INFO.RESULT.INDEX:\n if (victimTeamUpperCaseFirstChar && window.web3 && chainId) {\n const addresses = contractAddresses(chainId);\n const presenterContract = new window.web3.eth.Contract(PresenterABI, addresses['PRESENTER']);\n const reward = await getPendingReward(presenterContract, victimTeam, account);\n\n setResultStage(reward);\n setHasMwar(true);\n } else {\n setResultStage(true);\n setHasMwar(false);\n }\n break;\n }\n }, [stageIndex, warTeam, victimTeam, chainId, account]);\n\n return (\n \n
\n
\n
{title} \n
\n
\n {!resultStage ? (\n
{description}
\n ) : (\n hasMwar ? (\n smallerOne ? (\n
\n {warTeamUpperCaseFirstChar} steal ∼{formatNumber(fromWeiDecimals(resultStage))} mwar from {victimTeamUpperCaseFirstChar}\n
\n ) : (\n
\n {warTeamUpperCaseFirstChar} steal {formatNumber(fromWeiDecimals(resultStage))} mwar from {victimTeamUpperCaseFirstChar}\n
\n )\n ) : (\n
No war in this cycle
\n )\n )}\n
\n
\n )\n}\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport MapRegions from './MapRegion';\nimport coinImage from './img/coin.png';\nimport worldMap from './img/worldmap.svg';\nimport dogeImage from './img/doge.png';\n\nimport VoteContainer from '../Vote';\nimport StakeContainer from '../Stake';\nimport NationInfo from '../NationInfo';\nimport RoundContainer from '../RoundContainer';\nimport PointContainer from '../PointContainer';\n\nimport DogeNation from '../../pages/GamePlay/DogeNation';\nimport News from '../../pages/GamePlay/News';\n\nimport style from './Maps.module.scss';\n\nexport const Maps = () => {\n const isConnect = useSelector(state => state.user?.connectWallet?.isConnect);\n\n return (\n \n
\n {isConnect && }\n {isConnect && }\n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n )\n};","import React, { useEffect } from 'react';\nimport Layout from '../../components/Layout';\nimport {Maps} from '../../components/Maps';\nimport { useDispatch } from 'react-redux';\nimport { isLandscapeOrientation } from '../../utils';\nimport { setIsLandscapeVisible } from '../../store/modules/App/actions';\n\nexport default function GamePlay() {\n const dispatch = useDispatch();\n useEffect(() => {\n if (!isLandscapeOrientation()) {\n dispatch(setIsLandscapeVisible(true));\n } else {\n dispatch(setIsLandscapeVisible(false));\n }\n }, [dispatch])\n\n return (\n \n \n \n )\n}\n","import React from 'react'\nimport style from './NotFound.module.scss';\nimport PageLayout from '../../components/PageLayout';\nimport { Result } from 'antd';\n\nexport default function NotFound() {\n return (\n \n \n \n
\n \n )\n}\n","import React, {PureComponent} from 'react';\nimport {Switch, Route, withRouter} from 'react-router-dom';\nimport {\n PAGE_GAME_PATH,\n PAGE_HOME_PATH\n} from './constants';\nimport Home from '../pages/Home';\nimport GamePlay from '../pages/GamePlay';\nimport NotFound from '../pages/NotFound';\nimport {TransitionGroup, CSSTransition} from 'react-transition-group';\n\nconst disableGamePage = process.env.REACT_APP_DISABLE_GAME_PAGE === 'true';\n\n@withRouter\nclass Router extends PureComponent {\n componentDidUpdate(prevProps) {\n const {location} = this.props;\n\n if (location.key !== prevProps.location.key) {\n window.scrollTo(0,0);\n }\n }\n\n render() {\n const {location} = this.props;\n\n return (\n \n \n \n \n {\n !disableGamePage && \n }\n \n \n \n \n )\n }\n}\n\nexport default Router;\n","export const BREAKPOINTS = {\n SM_MAX: 767,\n MD_MIN: 768,\n MD_MAX: 1023,\n LG_MIN: 1024\n};\n","import { useRef } from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useCallback, useEffect} from 'react';\n\nimport {BREAKPOINTS} from './constants';\nimport { loadApp, setIsDesktop, setIsLandscapeVisible, setIsMobile, setIsTablet } from './actions';\n\nimport { PAGE_GAME_PATH } from '../../../router/constants';\nimport { isLandscapeOrientation } from '../../../utils';\n\nexport function UseAppInit() {\n /*\n Basic initialization logic for the module:\n init scripts, event listeners, etc...\n */\n\n const dispatch = useDispatch();\n const value = useRef(document.body.offsetHeight);\n\n const {isMobile, isTablet, isDesktop, isLandscapeVisible} = useSelector(state => state.app);\n\n // RESIZE LOGIC\n\n const onResize = useCallback(() => {\n if ((window.innerWidth < BREAKPOINTS.MD_MIN) && !isMobile) {\n dispatch(setIsMobile())\n } else if ((window.innerWidth > BREAKPOINTS.SM_MAX) && (window.innerWidth < BREAKPOINTS.LG_MIN) && !isTablet) {\n dispatch(setIsTablet())\n } else if ((window.innerWidth > BREAKPOINTS.MD_MAX) && !isDesktop) {\n dispatch(setIsDesktop())\n }\n }, [dispatch, isMobile, isTablet, isDesktop]);\n\n useEffect(() => {\n onResize();\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n }\n }, [onResize]);\n \n const onOrientationChange = useCallback(() => {\n const isMobileSize = window.innerWidth < BREAKPOINTS.MD_MIN;\n const isTableSize = window.innerWidth < BREAKPOINTS.SM_MAX;\n if (isMobileSize || isTableSize) {\n if (\n (!isLandscapeOrientation())\n && window.location.pathname === '/game'\n ) {\n dispatch(setIsLandscapeVisible(true))\n } else {\n dispatch(setIsLandscapeVisible(false))\n }\n } else {\n dispatch(setIsLandscapeVisible(false))\n }\n }, [dispatch, isMobile, isTablet, isDesktop, window.location.pathname])\n\n useEffect(() => {\n onOrientationChange();\n window.addEventListener('orientationchange', onOrientationChange);\n\n return () => {\n window.removeEventListener('orientationchange', onOrientationChange);\n }\n }, [onOrientationChange]);\n\n useEffect(() => {\n if (isLandscapeVisible) return;\n\n const gamePage = window.location.pathname;\n\n if (gamePage === PAGE_GAME_PATH) {\n document.body.style.height = '150vh';\n document.body.style.overflowY = 'auto';\n window.scrollTo(0, value.current + 100);\n }\n }, [isLandscapeVisible]);\n \n // LOADER LOGIC\n\n useEffect(() => {\n dispatch(loadApp());\n }, [dispatch]);\n}\n","export default \"data:image/png;base64,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\"","import metamask from './img/metamask.png';\nimport walletconnect from './img/walletconnect.png';\n\nexport const PROVIDER_TYPES = {\n METAMASK: 'MetaMask',\n WALLETCONNECT: 'WalletConnect',\n};\n\nexport const CONNECTION_TYPES = {\n metamask: 'metamask',\n walletconnect: 'walletconnect'\n};\n\nexport const PROVIDER_ITEMS = [\n {\n name: PROVIDER_TYPES.METAMASK,\n connector: CONNECTION_TYPES.metamask,\n description: 'Easy to use browser extension.',\n picture: metamask\n },\n {\n name: PROVIDER_TYPES.WALLETCONNECT,\n connector: CONNECTION_TYPES.walletconnect,\n description: '',\n picture: walletconnect\n }\n];\n\nexport const LOADING_STATUSES = {\n LOADING: 'loading',\n LOADED: 'loaded',\n ERROR: 'error'\n};","import {useEffect} from 'react';\nimport {\n connectMetaMask, connectToWalletConnect\n} from './actions';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { CONNECTION_TYPES } from '../../../components/ConnectToWalletModal/constants';\n\nexport function UseUserInit() {\n /*\n Basic initialization logic for the module:\n init scripts, event listeners, etc...\n */\n\n const dispatch = useDispatch();\n const { isMobile } = useSelector(state => state.app);\n // Init wallet\n\n useEffect(() => {\n dispatch(connectWallet(isMobile));\n }, [dispatch]);\n}\n\nexport const connectWallet = (isMobile) => dispatch => {\n const connectorId = window.localStorage.getItem('connectorId');\n if (connectorId === CONNECTION_TYPES.metamask) {\n dispatch(connectMetaMask(isMobile));\n } else if (connectorId === CONNECTION_TYPES.walletconnect) {\n dispatch(connectToWalletConnect());\n }\n}\n\nexport const autoConnectWallet = (isMobile) => dispatch => {\n const connectorId = window.localStorage.getItem('connectorId');\n if (connectorId === CONNECTION_TYPES.metamask) {\n dispatch(connectMetaMask(isMobile, false));\n }\n}","import React from 'react';\nimport Loader from './index';\nimport {useSelector} from 'react-redux';\n\nexport default function LoaderContainer(props) {\n const {load:{loaded}} = useSelector(state => state.app);\n\n return (\n \n )\n}\n","import Loader from './Loader';\nimport LoaderContainer from './LoaderContainer';\n\nexport default Loader;\nexport {LoaderContainer};\n","import React, {useEffect} from 'react';\nimport lottie from 'lottie-web';\nimport loadingJson from './data';\nimport cn from 'classnames';\nimport gameSharkLogo from './assets/game-shark-logo.png';\nimport style from './Loader.module.scss';\nimport { useSelector } from 'react-redux';\n\nexport default function Loader(props) {\n const {isVisible} = props;\n const id = 'loading-container';\n\n const {isMobile} = useSelector(state => state.app);\n\n useEffect(() => {\n let animation = lottie.loadAnimation({\n container: document.getElementById(id),\n animationData: loadingJson,\n renderer: 'svg',\n loop: true,\n autoplay: false,\n name: 'animation',\n });\n\n animation.setSpeed(1.3);\n\n setTimeout(() => {\n animation.play()\n }, 350);\n\n return () => {\n lottie.destroy('animation');\n }\n }, []);\n\n return (\n \n \n
\n
\n
\n
\n
\n {\n false && (\n
\n
Powered by
\n
\n
\n )\n }\n
\n
\n
\n )\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFMAAABTCAMAAADUbMsyAAAANlBMVEVHcEwKX+AKX+AKX+AKX+AKX+AKX+AKX+AKX+AKX+AKX+AKX+AKX+AKX+AKX+AKX+AKX+AKX+Am+0KkAAAAEnRSTlMATUFrNOl6ChYlilzcz7WnmcKYYJj+AAADaklEQVRYw7XY24KrIAwFULkUAqjg///sSbjbqdUqJ9R5XLNDpLadptMCyYRSNlirBJMwPS3p7LrUmpd5npcg5H3QqHXblmXDlURCiZ03e4vVzm9YC10tZhRjbUL/KIJYt1TLsvRoUV94Wfgp47plM+bc3nO+4vWa1eWs0ldy1/k+Z1wLuxZSrZGsQbshdTkjiRUubIDxK1UfdGtBSyUxojM/I1kGi9rF3A2+xKQS30mx5upzrkE5xiVnToWtF4tqv5Fq9R1K7KrYfsOA2WVunadyx6StZO794LjwMPfi67Uep/RIdkGVOZ6k3auHe+nXtFKdnBLjX+cm8xizJvWnd8jElrPepfcRTeSlowxrMT+fJh1SzMSKi6dYJVIdzqfm9Ozyuw3383y0TanzXHwaUdr64EtSNoSMMy+qG0PigELIqhpDTi4gGSIZYFTMJNKSg2KykArJUZ1PNrcehnU+mVBLTAMnlHuHka0PjkmtZ9aMMnkl7ShyEkim5YaZtpBh1P0+QSGt1cNGZC0lxWvYGZpkBOnPuO1kthT7DyYfZrpqDhm73pvmMaczOszU+Y8mU+Gi14icuuSMpHq6nzp3r2nuKieVI3JqyskTiV9S+WOy5JSKQLqenSNKmF/4RdUmVT18l9exCJ1AxSJVP8+Z9nNKIanM85gZdYVUbBSJgy8lhpiEQiWfNL/POYkE4rrfvAZcnckiGFl4FBOaaZIn8OJPYkJkyxNe5SXuBs0klJh4PIkjUdzcUQ2ZhGpqkVvHMrc7B+hax1u0xBTC6Vsxk9hixqC1fu8+ifHqA/FKup9/jEspIY1p90TOIC1zi4zs/lNTy+mcuUe+xcTDlLj0Mj+Q5igm/URHaHSx5OXxGGjqh18SsxeLX7qlkDNN/fShMfZdXHZ+SrUxnQgfU/AWlOE6iwokmhIVDjKw1juijEn9bTaxMmjgsC3WUkb06FfuJlb1+L/zvnlCGTfvG4WpJK6qRvTrF7DeSyjjCOQTjYTEMl2RejJPs+udRMZjSS5zGdkFJfT0vgPm+pyFJJN/IDHmhVsZNxUt10jWi4VtO3rxxNWcrfXW/C4nXH8LN59a3+1oUn96JGqTxH5Ef3L+/JDVhvc5/+7ovcc2SMJYEvluQvDgsyqemS5mvpng+ZdyDfF40xbunraH9Q+g4Ef3kxXfNQAAAABJRU5ErkJggg==\"","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport Modal from '../Modal';\nimport { closeNetworkAction } from '../../store/modules/User/actions';\n\nimport loading from '../../assets/img/loading.png';\nimport style from './WrongNetworkModal.module.scss';\n\nexport default function WrongNetworkModal(props) {\n const { wrapperClass, isMobile, isTablet, ...restProps } = props;\n\n const dispatch = useDispatch();\n\n const closeNetwork = () => {\n dispatch(closeNetworkAction());\n }\n\n return (\n
\n \n \n Wrong network\n \n \n Change network to Binance Smart Chain\n
\n \n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport WrongNetworkModal from './WrongNetworkModal';\n\nexport default function WrongNetworkModalContainer(props) {\n const {wrongNetwork} = useSelector(state => state.user);\n const {isMobile, isTablet} = useSelector(state => state.app);\n const isGamePage = window.location.pathname === '/game';\n\n return (\n
\n );\n}\n","import WrongNetworkModal from './WrongNetworkModal';\nimport WrongNetworkModalContainer from './WrongNetworkModalContainer';\n\nexport {WrongNetworkModalContainer};\nexport default WrongNetworkModal;","import React from 'react';\nimport Modal from '../Modal';\nimport Button from '../Button';\nimport logo from '../../assets/img/logo.png';\n\nimport style from './TermsOfServiceModal.module.scss';\n\nexport default function TermsModal(props) {\n const {onApply, ...restProps} = props;\n\n return (\n
\n \n
\n
\n \n Welcome to MEMEWARS\n \n \n This product is in Beta development and there may be some unexpected bugs.\n The beta data may be deleted in production version.\n
\n \n \n );\n}\n","import React from 'react';\nimport TermsModal from './TermsModal';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {setAppliedTermsOfService} from '../../store/modules/User/actions';\n\nexport default function TermsModalContainer(props) {\n const dispatch = useDispatch();\n\n const {appliedTermsOfService} = useSelector(state => state.user);\n const onApply = () => dispatch(setAppliedTermsOfService(true));\n\n return (\n
\n );\n}\n","import TermsModal from './TermsModal';\nimport TermsModalContainer from './TermsModalContainer';\n\nexport {TermsModalContainer};\nexport default TermsModal;\n","import React from 'react';\nimport Modal from '../Modal';\nimport loading from '../../assets/img/loading.png';\n\nimport style from './LandscapeModal.module.scss';\n\nexport default function LandscapeModal(props) {\n const { wrapperClass, ...restProps } = props;\n\n return (\n
\n \n \n Wrong Orientation\n \n \n Memewars does not support portrait\n
\n \n Please rotate your device to landscape.\n
\n \n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport LandscapeModal from './LandscapeModal';\n\nexport default function LandscapeModalContainer(props) {\n const {isLandscapeVisible} = useSelector(state => state.app);\n\n return (\n
\n );\n}\n","import React from 'react';\nimport Router from './router';\n\nimport {UseAppInit} from './store/modules/App/hooks';\nimport {UseUserInit} from './store/modules/User/hooks';\nimport Logger from 'js-logger';\nimport {LoaderContainer} from './components/PageLayout/Loader';\nimport {WrongNetworkModalContainer} from './components/WrongNetworkModal';\nimport {TermsModalContainer} from './components/TermsModal';\nimport { UseCycleHooks } from './store/modules/Round/hooks';\nimport { UseTeamHooks } from './store/modules/Team/hooks';\nimport { LandscapeModalContainer } from './components/LandscapeModal';\n\n\nfunction App() {\n Logger.useDefaults();\n // Initiate state\n UseAppInit();\n UseUserInit();\n UseCycleHooks();\n UseTeamHooks();\n\n return (\n <>\n
\n
\n
\n
\n
\n >\n );\n}\n\nexport default App;\n","import { useDispatch, useSelector } from 'react-redux';\nimport { useEffect } from 'react';\n\nimport {\n updateCycleInfo,\n setLoadingNextStep,\n // getRoundHistoryList,\n getListDuration\n} from './actions';\n// import { getRoundHistoriesList } from './utils';\n\nimport PresenterABI from '../../../abi/presenterAbi';\nimport { contractAddresses } from '../../../utils';\nimport {\n getCycleIndex,\n getCycleInfo,\n getStageDurationByIndex\n} from '../../../utils/callHelpers';\n\nimport dayjs from 'dayjs';\n\nexport const UseCycleHooks = () => {\n const dispatch = useDispatch();\n\n const chainId = useSelector(state => state.user.chainId);\n const account = useSelector(state => state.user.userAccount.accounts)[0];\n const isConnect = useSelector(state => state.user?.connectWallet?.isConnect);\n const cycleIndex = useSelector(state => state.round?.cycleIndex);\n\n const addresses = contractAddresses(chainId);\n\n const sleep = (ms) => {\n return new Promise(resolve => setTimeout(resolve, ms));\n };\n\n const getNewCycleInfo = async () => {\n try {\n dispatch(setLoadingNextStep(false));\n\n const presenterContract = new window.web3.eth.Contract(PresenterABI, addresses['PRESENTER']);\n const cycleIndex = await getCycleIndex(presenterContract);\n const cycleInfo = await getCycleInfo(presenterContract, cycleIndex);\n const stageDuration = await getStageDurationByIndex(presenterContract, cycleInfo.stageIndex);\n\n dispatch(updateCycleInfo(cycleIndex, {\n ...cycleInfo,\n stageDuration: stageDuration\n }));\n \n const now = dayjs();\n const stageStartObject = dayjs(Number(cycleInfo.stageStart) * 1000);\n const stageEndObjet = stageStartObject.add(stageDuration, 'second');\n\n let diffSeconds = stageEndObjet.diff(now, 'second');\n\n if (diffSeconds > 0) {\n await sleep((diffSeconds + 1) * 1000);\n } else {\n dispatch(setLoadingNextStep(true));\n await sleep(3000);\n }\n \n getNewCycleInfo().then().catch();\n } catch (error) {\n dispatch(setLoadingNextStep(false));\n return error;\n }\n };\n\n useEffect(async () => {\n if (chainId && account && window.web3) {\n getNewCycleInfo().then().catch();\n }\n }, [chainId, account, isConnect, dispatch]);\n\n // useEffect(async () => {\n // const {\n // response,\n // roundIndex,\n // offset,\n // lastItem\n // } = await getRoundHistoriesList(\n // cycleIndex,\n // 0,\n // PresenterABI,\n // addresses['PRESENTER']\n // );\n\n // const result = {\n // response,\n // roundIndex,\n // offset,\n // lastItem\n // }\n\n // dispatch(getRoundHistoryList(result));\n // }, [cycleIndex]);\n\n useEffect(async () => {\n try {\n const presenterContract = new window.web3.eth.Contract(PresenterABI, addresses['PRESENTER']);\n\n const listDuration = await Promise.all([\n getStageDurationByIndex(presenterContract, '0'),\n getStageDurationByIndex(presenterContract, '1'),\n getStageDurationByIndex(presenterContract, '2'),\n getStageDurationByIndex(presenterContract, '3'),\n getStageDurationByIndex(presenterContract, '4'),\n getStageDurationByIndex(presenterContract, '5')\n ]);\n \n dispatch(getListDuration(listDuration));\n } catch (error) {\n return error;\n }\n }, [cycleIndex])\n};","import configureStore from './configureStore';\n\nconst { store, history, persist } = configureStore();\n\nexport { history, persist };\nexport default store;\n\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport reportWebVitals from './reportWebVitals';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport 'antd/dist/antd.compact.min.css';\nimport './styles/index.scss';\nimport App from './App';\nimport store from './store';\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":""}