ETH Price: $2,275.36 (+1.89%)

Token

Quiz AI Bot (QUIZ-AI)
 

Overview

Max Total Supply

1,000,000,000 QUIZ-AI

Holders

87

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 QUIZ-AI

Value
$0.00
0xc6a22711c570599a84bc229b71aa2f17f321e767
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
QUIZAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-09
*/

/*
Welcome to Quiz AI - An AI Powered Quiz and Trivia Bot
Web: https://quizai.fun
Tg: https://t.me/Quiz_AI_Official
X: https://twitter.com/Quiz_AI_ERC
Bot: https://t.me/QuizBot
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    function renounceOwnership() public onlyOwner {owner = address(0); emit OwnershipTransferred(address(0));}
    event OwnershipTransferred(address owner);
}

library SafeMathLibrary {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IUniswapFactory {
    function createPair(address tokenA, address tokenB) external returns (address uniswapPair);
    function getPair(address tokenA, address tokenB) external view returns (address uniswapPair);
}

interface IERC20Simple {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract QUIZAI is IERC20Simple, Ownable {
    using SafeMathLibrary for uint256;
    string private constant _name = 'Quiz AI Bot';
    string private constant _symbol = 'QUIZ-AI';
    uint8 private constant _decimals = 18;
    uint256 private _supply = 10 ** 9 * (10 ** _decimals);
    IUniswapRouter uniswapRouter;
    address public uniswapPair;
    bool private tradeOpened = false;
    bool private taxSwapActivated = true;
    uint256 private swapAfter;
    bool private _inswap;
    uint256 countOnSells = 1;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcluded;
    uint256 private swapMax = ( _supply * 3) / 100;
    uint256 private swapMin = ( _supply * 1) / 100000;
    modifier lockSwap {_inswap = true; _; _inswap = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0; 
    uint256 private developmentFee = 100; 
    uint256 private burnFee = 0;
    uint256 private totalFee = 2300; 
    uint256 private sellFee = 2300; 
    uint256 private transferFee = 2300;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x7137204b08B34cb97EA6a1cBBbf2fF7a48C6cafF;
    address internal marketing_receiver = 0x7137204b08B34cb97EA6a1cBBbf2fF7a48C6cafF; 
    address internal liquidity_receiver = 0x7137204b08B34cb97EA6a1cBBbf2fF7a48C6cafF;
    uint256 public maxTxTokens = ( _supply * 130 ) / 10000;
    uint256 public maxBuyTokens = ( _supply * 130 ) / 10000;
    uint256 public maxWalletTokens = ( _supply * 130 ) / 10000;

    constructor() Ownable(msg.sender) {
        IUniswapRouter _router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IUniswapFactory(_router.factory()).createPair(address(this), _router.WETH());
        uniswapRouter = _router; uniswapPair = _pair;
        _isExcluded[liquidity_receiver] = true;
        _isExcluded[marketing_receiver] = true;
        _isExcluded[development_receiver] = true;
        _isExcluded[msg.sender] = true;
        _balances[msg.sender] = _supply;
        emit Transfer(address(0), msg.sender, _supply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _supply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    
    function getFeeTokens(address sender, address recipient) internal view returns (uint256) {
        if(recipient == uniswapPair){return sellFee;}
        if(sender == uniswapPair){return totalFee;}
        return transferFee;
    }

    function getTransferTokens(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getFeeTokens(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getFeeTokens(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getFeeTokens(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function setMaxTokenAmount(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _supply.mul(_buy).div(10000); uint256 newTransfer = _supply.mul(_sell).div(10000); uint256 newWallet = _supply.mul(_wallet).div(10000);
        maxTxTokens = newTx; maxBuyTokens = newTransfer; maxWalletTokens = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setFeeDenominator(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator, "totalFee and sellFee cannot be more than 100%");
    }

    function swapBackFee(uint256 tokens) private lockSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapToETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
      return (a > b) ? b : a;
    }
    
    function shouldCASwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= swapMin;
        bool aboveThreshold = balanceOf(address(this)) >= swapMin;
        return !_inswap && taxSwapActivated && tradeOpened && aboveMin && !_isExcluded[sender] && recipient == uniswapPair && swapAfter >= countOnSells && aboveThreshold;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!_isExcluded[sender] && !_isExcluded[recipient]){require(tradeOpened, "tradeOpened");}
        if(!_isExcluded[sender] && !_isExcluded[recipient] && recipient != address(uniswapPair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= maxWalletTokens, "Exceeds maximum wallet amount.");}
        if(sender != uniswapPair){require(amount <= maxBuyTokens || _isExcluded[sender] || _isExcluded[recipient], "TX Limit Exceeded");}
        require(amount <= maxTxTokens || _isExcluded[sender] || _isExcluded[recipient], "TX Limit Exceeded"); 
        if(recipient == uniswapPair && !_isExcluded[sender]){swapAfter += uint256(1);}
        if(shouldCASwap(sender, recipient, amount)){swapBackFee(min(balanceOf(address(this)), swapMax)); swapAfter = uint256(0);}
        if (!tradeOpened || !_isExcluded[sender]) { _balances[sender] = _balances[sender].sub(amount); }
        uint256 amountReceived = shouldTaxBuyer(sender, recipient) ? getTransferTokens(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
    
    function launch() external onlyOwner {tradeOpened = true;}
    function swapToETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldTaxBuyer(address sender, address recipient) internal view returns (bool) {
        return !_isExcluded[sender] && !_isExcluded[recipient];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setFeeDenominator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setMaxTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620004bf565b6200002290633b9aca00620004d7565b60018181556003805461ffff60a01b1916600160a81b1781556006919091556064916200004f91620004d7565b6200005b9190620004f1565b600a55620186a06001546001620000739190620004d7565b6200007f9190620004f1565b600b556000600c819055600d8190556064600e55600f556108fc60108190556011819055601255612710601381905560148054737137204b08b34cb97ea6a1cbbbf2ff7a48c6caff6001600160a01b0319918216811790925560158054821683179055601680549091169091179055600154620000fe906082620004d7565b6200010a9190620004f1565b6017556127106001546082620001219190620004d7565b6200012d9190620004f1565b6018556127106001546082620001449190620004d7565b620001509190620004f1565b6019553480156200016057600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ee919062000514565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000262919062000514565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d6919062000514565b600280546001600160a01b038581166001600160a01b03199283161790925560038054848416921691909117905560165481166000908152600960209081526040808320805460ff19908116600190811790925560155486168552828520805482168317905560145490951684528184208054861682179055338085528285208054909616821790955554600783528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200053f565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000401578160001904821115620003e557620003e5620003aa565b80851615620003f357918102915b93841c9390800290620003c5565b509250929050565b6000826200041a57506001620004b9565b816200042957506000620004b9565b81600181146200044257600281146200044d576200046d565b6001915050620004b9565b60ff841115620004615762000461620003aa565b50506001821b620004b9565b5060208310610133831016604e8410600b841016171562000492575081810a620004b9565b6200049e8383620003c0565b8060001904821115620004b557620004b5620003aa565b0290505b92915050565b6000620004d060ff84168362000409565b9392505050565b8082028115828204841417620004b957620004b9620003aa565b6000826200050f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200052757600080fd5b81516001600160a01b0381168114620004d057600080fd5b611894806200054f6000396000f3fe60806040526004361061012e5760003560e01c806350dabcab116100ab57806395d89b411161006f57806395d89b4114610364578063a9059cbb14610394578063c816841b146103b4578063dd62ed3e146103d4578063f2fde38b1461041a578063fdba994c1461043a57600080fd5b806350dabcab146102bb57806363a803e1146102d157806370a08231146102e7578063715018a61461031d578063893d20e81461033257600080fd5b806323b872dd116100f257806323b872dd1461021a5780632b5011d21461023a5780632f54bf6e14610250578063313ce5671461027f578063411b9fde1461029b57600080fd5b806301339c211461013a57806306fdde0314610151578063095ea7b3146101975780630b285b1f146101c757806318160ddd146101f757600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5061014f61045a565b005b34801561015d57600080fd5b5060408051808201909152600b81526a145d5a5e88105248109bdd60aa1b60208201525b60405161018e919061152e565b60405180910390f35b3480156101a357600080fd5b506101b76101b2366004611594565b6104a2565b604051901515815260200161018e565b3480156101d357600080fd5b506101b76101e23660046115c0565b60096020526000908152604090205460ff1681565b34801561020357600080fd5b5061020c6104b9565b60405190815260200161018e565b34801561022657600080fd5b506101b76102353660046115dd565b61052a565b34801561024657600080fd5b5061020c60185481565b34801561025c57600080fd5b506101b761026b3660046115c0565b6000546001600160a01b0391821691161490565b34801561028b57600080fd5b506040516012815260200161018e565b3480156102a757600080fd5b5061014f6102b636600461161e565b610594565b3480156102c757600080fd5b5061020c60175481565b3480156102dd57600080fd5b5061020c60195481565b3480156102f357600080fd5b5061020c6103023660046115c0565b6001600160a01b031660009081526007602052604090205490565b34801561032957600080fd5b5061014f6106d5565b34801561033e57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161018e565b34801561037057600080fd5b506040805180820190915260078152665155495a2d414960c81b6020820152610181565b3480156103a057600080fd5b506101b76103af366004611594565b610744565b3480156103c057600080fd5b5060035461034c906001600160a01b031681565b3480156103e057600080fd5b5061020c6103ef36600461164a565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561042657600080fd5b5061014f6104353660046115c0565b610751565b34801561044657600080fd5b5061014f610455366004611683565b6107cf565b6000546001600160a01b0316331461048d5760405162461bcd60e51b8152600401610484906116cf565b60405180910390fd5b6003805460ff60a01b1916600160a01b179055565b60006104af3384846108a4565b5060015b92915050565b60076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5461dead60009081527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d54600154919261052592909161051f91906109c8565b906109c8565b905090565b60006105378484846109d4565b610589843361058485604051806060016040528060288152602001611837602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190610eed565b6108a4565b5060015b9392505050565b6000546001600160a01b031633146105be5760405162461bcd60e51b8152600401610484906116cf565b60006105e16127106105db86600154610f1990919063ffffffff16565b90610f25565b905060006106006127106105db86600154610f1990919063ffffffff16565b9050600061061f6127106105db86600154610f1990919063ffffffff16565b6017849055601883905560198190559050600061064b6103e86105db60056106456104b9565b90610f19565b905080841015801561065d5750808310155b80156106695750808210155b6106cc5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610484565b50505050505050565b6000546001600160a01b031633146106ff5760405162461bcd60e51b8152600401610484906116cf565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b60006104af3384846109d4565b6000546001600160a01b0316331461077b5760405162461bcd60e51b8152600401610484906116cf565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146107f95760405162461bcd60e51b8152600401610484906116cf565b600c879055600d869055600f859055600e8490556010839055601182905560128190556013548311801590610832575060135460115411155b8015610842575060135460125411155b6106cc5760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b6064820152608401610484565b6001600160a01b0383166109065760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610484565b6001600160a01b0382166109675760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610484565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061058d8284611705565b6001600160a01b038316610a385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610484565b6001600160a01b038216610a9a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610484565b6001600160a01b03831660009081526009602052604090205460ff16158015610adc57506001600160a01b03821660009081526009602052604090205460ff16155b15610b2857600354600160a01b900460ff16610b285760405162461bcd60e51b815260206004820152600b60248201526a1d1c98591953dc195b995960aa1b6044820152606401610484565b6001600160a01b03831660009081526009602052604090205460ff16158015610b6a57506001600160a01b03821660009081526009602052604090205460ff16155b8015610b8457506003546001600160a01b03838116911614155b8015610b9b57506001600160a01b03821661dead14155b15610c14576019546001600160a01b038316600090815260076020526040902054610bc69083610f31565b1115610c145760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610484565b6003546001600160a01b03848116911614610cb55760185481111580610c5257506001600160a01b03831660009081526009602052604090205460ff165b80610c7557506001600160a01b03821660009081526009602052604090205460ff165b610cb55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610484565b60175481111580610cde57506001600160a01b03831660009081526009602052604090205460ff165b80610d0157506001600160a01b03821660009081526009602052604090205460ff165b610d415760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610484565b6003546001600160a01b038381169116148015610d7757506001600160a01b03831660009081526009602052604090205460ff16155b15610d9557600160046000828254610d8f9190611718565b90915550505b610da0838383610f3d565b15610dd05730600090815260076020526040902054610dca90610dc590600a54610ff6565b61100b565b60006004555b600354600160a01b900460ff161580610e0257506001600160a01b03831660009081526009602052604090205460ff16155b15610e44576001600160a01b038316600090815260076020526040902054610e2a90826109c8565b6001600160a01b0384166000908152600760205260409020555b6000610e508484611188565b610e5a5781610e65565b610e658484846111ce565b6001600160a01b038416600090815260076020526040902054909150610e8b9082610f31565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610edf9085815260200190565b60405180910390a350505050565b60008184841115610f115760405162461bcd60e51b8152600401610484919061152e565b505050900390565b600061058d828461172b565b600061058d8284611742565b600061058d8284611718565b600b5430600090815260076020526040812054600554919280851015929110159060ff16158015610f775750600354600160a81b900460ff165b8015610f8c5750600354600160a01b900460ff165b8015610f955750815b8015610fba57506001600160a01b03861660009081526009602052604090205460ff16155b8015610fd357506003546001600160a01b038681169116145b8015610fe3575060065460045410155b8015610fec5750805b9695505050505050565b6000818311611005578261058d565b50919050565b6005805460ff19166001908117909155600e54600d54600c546000936110459360029361064593919261103f928391610f31565b90610f31565b90506000611062826105db600c5486610f1990919063ffffffff16565b9050600061107084836109c8565b90504761107c826112d5565b600061108847836109c8565b905060006110ab6110a4600c54886109c890919063ffffffff16565b8390610f25565b905060006110c4600c5483610f1990919063ffffffff16565b905080156110d6576110d6868261142f565b600d546000906110eb90610645856002610f19565b9050801561112f576015546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561112d573d6000803e3d6000fd5b505b478015611172576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611170573d6000803e3d6000fd5b505b50506005805460ff191690555050505050505050565b6001600160a01b03821660009081526009602052604081205460ff1615801561058d5750506001600160a01b031660009081526009602052604090205460ff1615919050565b6000806111db85856114e3565b11156112ce5760006111fe6111f086866114e3565b601354610645908690610f25565b3060009081526007602052604090205490915061121b9082610f31565b30600081815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061126c9085815260200190565b60405180910390a36000600f541180156112905750600f5461128e86866114e3565b115b156112bc576112bc3061dead6112b7600f5461064560135489610f2590919063ffffffff16565b6109d4565b6112c683826109c8565b91505061058d565b5092915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061130a5761130a611764565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611387919061177a565b8160018151811061139a5761139a611764565b6001600160a01b0392831660209182029290920101526002546113c091309116846108a4565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac947906113f9908590600090869030904290600401611797565b600060405180830381600087803b15801561141357600080fd5b505af1158015611427573d6000803e3d6000fd5b505050505050565b6002546114479030906001600160a01b0316846108a4565b60025460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156114b7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114dc9190611808565b5050505050565b6003546000906001600160a01b039081169083160361150557506011546104b3565b6003546001600160a01b039081169084160361152457506010546104b3565b5060125492915050565b600060208083528351808285015260005b8181101561155b5785810183015185820160400152820161153f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461159157600080fd5b50565b600080604083850312156115a757600080fd5b82356115b28161157c565b946020939093013593505050565b6000602082840312156115d257600080fd5b813561058d8161157c565b6000806000606084860312156115f257600080fd5b83356115fd8161157c565b9250602084013561160d8161157c565b929592945050506040919091013590565b60008060006060848603121561163357600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561165d57600080fd5b82356116688161157c565b915060208301356116788161157c565b809150509250929050565b600080600080600080600060e0888a03121561169e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156104b3576104b36116ef565b808201808211156104b3576104b36116ef565b80820281158282048414176104b3576104b36116ef565b60008261175f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178c57600080fd5b815161058d8161157c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e75784516001600160a01b0316835293830193918301916001016117c2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561181d57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e34b9caa01bfdc4bcfe52f6d608d45a72af6af68544c84035415ae8fbb1e7e8564736f6c63430008130033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806350dabcab116100ab57806395d89b411161006f57806395d89b4114610364578063a9059cbb14610394578063c816841b146103b4578063dd62ed3e146103d4578063f2fde38b1461041a578063fdba994c1461043a57600080fd5b806350dabcab146102bb57806363a803e1146102d157806370a08231146102e7578063715018a61461031d578063893d20e81461033257600080fd5b806323b872dd116100f257806323b872dd1461021a5780632b5011d21461023a5780632f54bf6e14610250578063313ce5671461027f578063411b9fde1461029b57600080fd5b806301339c211461013a57806306fdde0314610151578063095ea7b3146101975780630b285b1f146101c757806318160ddd146101f757600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5061014f61045a565b005b34801561015d57600080fd5b5060408051808201909152600b81526a145d5a5e88105248109bdd60aa1b60208201525b60405161018e919061152e565b60405180910390f35b3480156101a357600080fd5b506101b76101b2366004611594565b6104a2565b604051901515815260200161018e565b3480156101d357600080fd5b506101b76101e23660046115c0565b60096020526000908152604090205460ff1681565b34801561020357600080fd5b5061020c6104b9565b60405190815260200161018e565b34801561022657600080fd5b506101b76102353660046115dd565b61052a565b34801561024657600080fd5b5061020c60185481565b34801561025c57600080fd5b506101b761026b3660046115c0565b6000546001600160a01b0391821691161490565b34801561028b57600080fd5b506040516012815260200161018e565b3480156102a757600080fd5b5061014f6102b636600461161e565b610594565b3480156102c757600080fd5b5061020c60175481565b3480156102dd57600080fd5b5061020c60195481565b3480156102f357600080fd5b5061020c6103023660046115c0565b6001600160a01b031660009081526007602052604090205490565b34801561032957600080fd5b5061014f6106d5565b34801561033e57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161018e565b34801561037057600080fd5b506040805180820190915260078152665155495a2d414960c81b6020820152610181565b3480156103a057600080fd5b506101b76103af366004611594565b610744565b3480156103c057600080fd5b5060035461034c906001600160a01b031681565b3480156103e057600080fd5b5061020c6103ef36600461164a565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561042657600080fd5b5061014f6104353660046115c0565b610751565b34801561044657600080fd5b5061014f610455366004611683565b6107cf565b6000546001600160a01b0316331461048d5760405162461bcd60e51b8152600401610484906116cf565b60405180910390fd5b6003805460ff60a01b1916600160a01b179055565b60006104af3384846108a4565b5060015b92915050565b60076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5461dead60009081527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d54600154919261052592909161051f91906109c8565b906109c8565b905090565b60006105378484846109d4565b610589843361058485604051806060016040528060288152602001611837602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190610eed565b6108a4565b5060015b9392505050565b6000546001600160a01b031633146105be5760405162461bcd60e51b8152600401610484906116cf565b60006105e16127106105db86600154610f1990919063ffffffff16565b90610f25565b905060006106006127106105db86600154610f1990919063ffffffff16565b9050600061061f6127106105db86600154610f1990919063ffffffff16565b6017849055601883905560198190559050600061064b6103e86105db60056106456104b9565b90610f19565b905080841015801561065d5750808310155b80156106695750808210155b6106cc5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610484565b50505050505050565b6000546001600160a01b031633146106ff5760405162461bcd60e51b8152600401610484906116cf565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b60006104af3384846109d4565b6000546001600160a01b0316331461077b5760405162461bcd60e51b8152600401610484906116cf565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146107f95760405162461bcd60e51b8152600401610484906116cf565b600c879055600d869055600f859055600e8490556010839055601182905560128190556013548311801590610832575060135460115411155b8015610842575060135460125411155b6106cc5760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b6064820152608401610484565b6001600160a01b0383166109065760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610484565b6001600160a01b0382166109675760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610484565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061058d8284611705565b6001600160a01b038316610a385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610484565b6001600160a01b038216610a9a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610484565b6001600160a01b03831660009081526009602052604090205460ff16158015610adc57506001600160a01b03821660009081526009602052604090205460ff16155b15610b2857600354600160a01b900460ff16610b285760405162461bcd60e51b815260206004820152600b60248201526a1d1c98591953dc195b995960aa1b6044820152606401610484565b6001600160a01b03831660009081526009602052604090205460ff16158015610b6a57506001600160a01b03821660009081526009602052604090205460ff16155b8015610b8457506003546001600160a01b03838116911614155b8015610b9b57506001600160a01b03821661dead14155b15610c14576019546001600160a01b038316600090815260076020526040902054610bc69083610f31565b1115610c145760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610484565b6003546001600160a01b03848116911614610cb55760185481111580610c5257506001600160a01b03831660009081526009602052604090205460ff165b80610c7557506001600160a01b03821660009081526009602052604090205460ff165b610cb55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610484565b60175481111580610cde57506001600160a01b03831660009081526009602052604090205460ff165b80610d0157506001600160a01b03821660009081526009602052604090205460ff165b610d415760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610484565b6003546001600160a01b038381169116148015610d7757506001600160a01b03831660009081526009602052604090205460ff16155b15610d9557600160046000828254610d8f9190611718565b90915550505b610da0838383610f3d565b15610dd05730600090815260076020526040902054610dca90610dc590600a54610ff6565b61100b565b60006004555b600354600160a01b900460ff161580610e0257506001600160a01b03831660009081526009602052604090205460ff16155b15610e44576001600160a01b038316600090815260076020526040902054610e2a90826109c8565b6001600160a01b0384166000908152600760205260409020555b6000610e508484611188565b610e5a5781610e65565b610e658484846111ce565b6001600160a01b038416600090815260076020526040902054909150610e8b9082610f31565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610edf9085815260200190565b60405180910390a350505050565b60008184841115610f115760405162461bcd60e51b8152600401610484919061152e565b505050900390565b600061058d828461172b565b600061058d8284611742565b600061058d8284611718565b600b5430600090815260076020526040812054600554919280851015929110159060ff16158015610f775750600354600160a81b900460ff165b8015610f8c5750600354600160a01b900460ff165b8015610f955750815b8015610fba57506001600160a01b03861660009081526009602052604090205460ff16155b8015610fd357506003546001600160a01b038681169116145b8015610fe3575060065460045410155b8015610fec5750805b9695505050505050565b6000818311611005578261058d565b50919050565b6005805460ff19166001908117909155600e54600d54600c546000936110459360029361064593919261103f928391610f31565b90610f31565b90506000611062826105db600c5486610f1990919063ffffffff16565b9050600061107084836109c8565b90504761107c826112d5565b600061108847836109c8565b905060006110ab6110a4600c54886109c890919063ffffffff16565b8390610f25565b905060006110c4600c5483610f1990919063ffffffff16565b905080156110d6576110d6868261142f565b600d546000906110eb90610645856002610f19565b9050801561112f576015546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561112d573d6000803e3d6000fd5b505b478015611172576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611170573d6000803e3d6000fd5b505b50506005805460ff191690555050505050505050565b6001600160a01b03821660009081526009602052604081205460ff1615801561058d5750506001600160a01b031660009081526009602052604090205460ff1615919050565b6000806111db85856114e3565b11156112ce5760006111fe6111f086866114e3565b601354610645908690610f25565b3060009081526007602052604090205490915061121b9082610f31565b30600081815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061126c9085815260200190565b60405180910390a36000600f541180156112905750600f5461128e86866114e3565b115b156112bc576112bc3061dead6112b7600f5461064560135489610f2590919063ffffffff16565b6109d4565b6112c683826109c8565b91505061058d565b5092915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061130a5761130a611764565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611387919061177a565b8160018151811061139a5761139a611764565b6001600160a01b0392831660209182029290920101526002546113c091309116846108a4565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac947906113f9908590600090869030904290600401611797565b600060405180830381600087803b15801561141357600080fd5b505af1158015611427573d6000803e3d6000fd5b505050505050565b6002546114479030906001600160a01b0316846108a4565b60025460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156114b7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114dc9190611808565b5050505050565b6003546000906001600160a01b039081169083160361150557506011546104b3565b6003546001600160a01b039081169084160361152457506010546104b3565b5060125492915050565b600060208083528351808285015260005b8181101561155b5785810183015185820160400152820161153f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461159157600080fd5b50565b600080604083850312156115a757600080fd5b82356115b28161157c565b946020939093013593505050565b6000602082840312156115d257600080fd5b813561058d8161157c565b6000806000606084860312156115f257600080fd5b83356115fd8161157c565b9250602084013561160d8161157c565b929592945050506040919091013590565b60008060006060848603121561163357600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561165d57600080fd5b82356116688161157c565b915060208301356116788161157c565b809150509250929050565b600080600080600080600060e0888a03121561169e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156104b3576104b36116ef565b808201808211156104b3576104b36116ef565b80820281158282048414176104b3576104b36116ef565b60008261175f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178c57600080fd5b815161058d8161157c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e75784516001600160a01b0316835293830193918301916001016117c2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561181d57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e34b9caa01bfdc4bcfe52f6d608d45a72af6af68544c84035415ae8fbb1e7e8564736f6c63430008130033

Deployed Bytecode Sourcemap

5002:9951:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14269:58;;;;;;;;;;;;;:::i;:::-;;7357:67;;;;;;;;;;-1:-1:-1;7417:5:0;;;;;;;;;;;;-1:-1:-1;;;7417:5:0;;;;7357:67;;;;;;;:::i;:::-;;;;;;;;8051:133;;;;;;;;;;-1:-1:-1;8051:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8051:133:0;1023:187:1;5657:44:0;;;;;;;;;;-1:-1:-1;5657:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8190:127;;;;;;;;;;;;;:::i;:::-;;;1613:25:1;;;1601:2;1586:18;8190:127:0;1467:177:1;9729:309:0;;;;;;;;;;-1:-1:-1;9729:309:0;;;;;:::i;:::-;;:::i;6602:55::-;;;;;;;;;;;;;;;;435:87;;;;;;;;;;-1:-1:-1;435:87:0;;;;;:::i;:::-;490:4;515:5;-1:-1:-1;;;;;504:16:0;;;515:5;;504:16;;435:87;7507:67;;;;;;;;;;-1:-1:-1;7507:67:0;;5227:2;2252:36:1;;2240:2;2225:18;7507:67:0;2110:184:1;9182:535:0;;;;;;;;;;-1:-1:-1;9182:535:0;;;;;:::i;:::-;;:::i;6541:54::-;;;;;;;;;;;;;;;;6664:58;;;;;;;;;;;;;;;;7664:103;;;;;;;;;;-1:-1:-1;7664:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7747:18:0;7730:7;7747:18;;;:9;:18;;;;;;;7664:103;645:106;;;;;;;;;;;;;:::i;7580:78::-;;;;;;;;;;-1:-1:-1;7632:7:0;7650:5;-1:-1:-1;;;;;7650:5:0;7580:78;;;-1:-1:-1;;;;;2784:32:1;;;2766:51;;2754:2;2739:18;7580:78:0;2620:203:1;7430:71:0;;;;;;;;;;-1:-1:-1;7492:7:0;;;;;;;;;;;;-1:-1:-1;;;7492:7:0;;;;7430:71;;7773:139;;;;;;;;;;-1:-1:-1;7773:139:0;;;;;:::i;:::-;;:::i;5331:26::-;;;;;;;;;;-1:-1:-1;5331:26:0;;;;-1:-1:-1;;;;;5331:26:0;;;7918:127;;;;;;;;;;-1:-1:-1;7918:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8016:18:0;;;7999:7;8016:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7918:127;528:111;;;;;;;;;;-1:-1:-1;528:111:0;;;;;:::i;:::-;;:::i;10389:495::-;;;;;;;;;;-1:-1:-1;10389:495:0;;;;;:::i;:::-;;:::i;14269:58::-;490:4;515:5;-1:-1:-1;;;;;515:5:0;402:10;504:16;386:38;;;;-1:-1:-1;;;386:38:0;;;;;;;:::i;:::-;;;;;;;;;14307:11:::1;:18:::0;;-1:-1:-1;;;;14307:18:0::1;-1:-1:-1::0;;;14307:18:0::1;::::0;;14269:58::o;8051:133::-;8126:4;8133:37;8142:10;8154:7;8163:6;8133:8;:37::i;:::-;-1:-1:-1;8178:4:0;8051:133;;;;;:::o;8190:127::-;7747:9;:18;;;;6228:42;8243:7;7747:18;;;;;8260:7;;8243;;8260:55;;7747:18;;8260:28;;:7;:11;:28::i;:::-;:32;;:55::i;:::-;8253:62;;8190:127;:::o;9729:309::-;9827:4;9844:36;9854:6;9862:9;9873:6;9844:9;:36::i;:::-;9891:117;9900:6;9908:10;9920:87;9956:6;9920:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9920:19:0;;;;;;:11;:19;;;;;;;;9940:10;9920:31;;;;;;;;;:87;:35;:87::i;:::-;9891:8;:117::i;:::-;-1:-1:-1;10026:4:0;9729:309;;;;;;:::o;9182:535::-;490:4;515:5;-1:-1:-1;;;;;515:5:0;402:10;504:16;386:38;;;;-1:-1:-1;;;386:38:0;;;;;;;:::i;:::-;9285:13:::1;9301:28;9323:5;9301:17;9313:4;9301:7;;:11;;:17;;;;:::i;:::-;:21:::0;::::1;:28::i;:::-;9285:44;;9331:19;9353:29;9376:5;9353:18;9365:5;9353:7;;:11;;:18;;;;:::i;:29::-;9331:51;;9384:17;9404:31;9429:5;9404:20;9416:7;9404;;:11;;:20;;;;:::i;:31::-;9446:11;:19:::0;;;9467:12:::1;:26:::0;;;9495:15:::1;:27:::0;;;9384:51;-1:-1:-1;;9549:30:0::1;9574:4;9549:20;9567:1;9549:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;9533:46;;9607:5;9598;:14;;:38;;;;;9631:5;9616:11;:20;;9598:38;:60;;;;;9653:5;9640:9;:18;;9598:60;9590:119;;;::::0;-1:-1:-1;;;9590:119:0;;4614:2:1;9590:119:0::1;::::0;::::1;4596:21:1::0;4653:2;4633:18;;;4626:30;4692:34;4672:18;;;4665:62;-1:-1:-1;;;4743:18:1;;;4736:44;4797:19;;9590:119:0::1;4412:410:1::0;9590:119:0::1;9274:443;;;;9182:535:::0;;;:::o;645:106::-;490:4;515:5;-1:-1:-1;;;;;515:5:0;402:10;504:16;386:38;;;;-1:-1:-1;;;386:38:0;;;;;;;:::i;:::-;708:1:::1;692:18:::0;;-1:-1:-1;;;;;;692:18:0::1;::::0;;717:32:::1;::::0;2766:51:1;;;717:32:0::1;::::0;2754:2:1;2739:18;717:32:0::1;;;;;;;645:106::o:0;7773:139::-;7851:4;7858:40;7868:10;7880:9;7891:6;7858:9;:40::i;528:111::-;490:4;515:5;-1:-1:-1;;;;;515:5:0;402:10;504:16;386:38;;;;-1:-1:-1;;;386:38:0;;;;;;;:::i;:::-;594:5:::1;:11:::0;;-1:-1:-1;;;;;;594:11:0::1;-1:-1:-1::0;;;;;594:11:0;::::1;::::0;;::::1;::::0;;;612:25:::1;::::0;2766:51:1;;;612:25:0::1;::::0;2754:2:1;2739:18;612:25:0::1;;;;;;;528:111:::0;:::o;10389:495::-;490:4;515:5;-1:-1:-1;;;;;515:5:0;402:10;504:16;386:38;;;;-1:-1:-1;;;386:38:0;;;;;;;:::i;:::-;10570:12:::1;:25:::0;;;10597:12:::1;:25:::0;;;10624:7:::1;:15:::0;;;10641:14:::1;:29:::0;;;10672:8:::1;:17:::0;;;10691:7:::1;:15:::0;;;10708:11:::1;:20:::0;;;10759:11:::1;::::0;10747:23;::::1;::::0;::::1;::::0;:49:::1;;;10785:11;;10774:7;;:22;;10747:49;:79;;;;;10815:11;;10800;;:26;;10747:79;10739:137;;;::::0;-1:-1:-1;;;10739:137:0;;5245:2:1;10739:137:0::1;::::0;::::1;5227:21:1::0;5284:2;5264:18;;;5257:30;5323:34;5303:18;;;5296:62;-1:-1:-1;;;5374:18:1;;;5367:43;5427:19;;10739:137:0::1;5043:409:1::0;10046:335:0;-1:-1:-1;;;;;10139:19:0;;10131:68;;;;-1:-1:-1;;;10131:68:0;;5659:2:1;10131:68:0;;;5641:21:1;5698:2;5678:18;;;5671:30;5737:34;5717:18;;;5710:62;-1:-1:-1;;;5788:18:1;;;5781:34;5832:19;;10131:68:0;5457:400:1;10131:68:0;-1:-1:-1;;;;;10218:21:0;;10210:68;;;;-1:-1:-1;;;10210:68:0;;6064:2:1;10210:68:0;;;6046:21:1;6103:2;6083:18;;;6076:30;6142:34;6122:18;;;6115:62;-1:-1:-1;;;6193:18:1;;;6186:32;6235:19;;10210:68:0;5862:398:1;10210:68:0;-1:-1:-1;;;;;10289:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10341:32;;1613:25:1;;;10341:32:0;;1586:18:1;10341:32:0;;;;;;;10046:335;;;:::o;2059:98::-;2117:7;2144:5;2148:1;2144;:5;:::i;12838:1419::-;-1:-1:-1;;;;;12935:20:0;;12927:70;;;;-1:-1:-1;;;12927:70:0;;6732:2:1;12927:70:0;;;6714:21:1;6771:2;6751:18;;;6744:30;6810:34;6790:18;;;6783:62;-1:-1:-1;;;6861:18:1;;;6854:35;6906:19;;12927:70:0;6530:401:1;12927:70:0;-1:-1:-1;;;;;13016:23:0;;13008:71;;;;-1:-1:-1;;;13008:71:0;;7138:2:1;13008:71:0;;;7120:21:1;7177:2;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;-1:-1:-1;;;7267:18:1;;;7260:33;7310:19;;13008:71:0;6936:399:1;13008:71:0;-1:-1:-1;;;;;13094:19:0;;;;;;:11;:19;;;;;;;;13093:20;:47;;;;-1:-1:-1;;;;;;13118:22:0;;;;;;:11;:22;;;;;;;;13117:23;13093:47;13090:89;;;13150:11;;-1:-1:-1;;;13150:11:0;;;;13142:35;;;;-1:-1:-1;;;13142:35:0;;7542:2:1;13142:35:0;;;7524:21:1;7581:2;7561:18;;;7554:30;-1:-1:-1;;;7600:18:1;;;7593:41;7651:18;;13142:35:0;7340:335:1;13142:35:0;-1:-1:-1;;;;;13193:19:0;;;;;;:11;:19;;;;;;;;13192:20;:47;;;;-1:-1:-1;;;;;;13217:22:0;;;;;;:11;:22;;;;;;;;13216:23;13192:47;:84;;;;-1:-1:-1;13264:11:0;;-1:-1:-1;;;;;13243:33:0;;;13264:11;;13243:33;;13192:84;:114;;;;-1:-1:-1;;;;;;13280:26:0;;6228:42;13280:26;;13192:114;13189:227;;;13364:15;;-1:-1:-1;;;;;13327:20:0;;;;;;:9;:20;;;;;;:32;;13352:6;13327:24;:32::i;:::-;13326:53;;13318:96;;;;-1:-1:-1;;;13318:96:0;;7882:2:1;13318:96:0;;;7864:21:1;7921:2;7901:18;;;7894:30;7960:32;7940:18;;;7933:60;8010:18;;13318:96:0;7680:354:1;13318:96:0;13439:11;;-1:-1:-1;;;;;13429:21:0;;;13439:11;;13429:21;13426:129;;13470:12;;13460:6;:22;;:45;;;-1:-1:-1;;;;;;13486:19:0;;;;;;:11;:19;;;;;;;;13460:45;:71;;;-1:-1:-1;;;;;;13509:22:0;;;;;;:11;:22;;;;;;;;13460:71;13452:101;;;;-1:-1:-1;;;13452:101:0;;8241:2:1;13452:101:0;;;8223:21:1;8280:2;8260:18;;;8253:30;-1:-1:-1;;;8299:18:1;;;8292:47;8356:18;;13452:101:0;8039:341:1;13452:101:0;13583:11;;13573:6;:21;;:44;;;-1:-1:-1;;;;;;13598:19:0;;;;;;:11;:19;;;;;;;;13573:44;:70;;;-1:-1:-1;;;;;;13621:22:0;;;;;;:11;:22;;;;;;;;13573:70;13565:100;;;;-1:-1:-1;;;13565:100:0;;8241:2:1;13565:100:0;;;8223:21:1;8280:2;8260:18;;;8253:30;-1:-1:-1;;;8299:18:1;;;8292:47;8356:18;;13565:100:0;8039:341:1;13565:100:0;13693:11;;-1:-1:-1;;;;;13680:24:0;;;13693:11;;13680:24;:48;;;;-1:-1:-1;;;;;;13709:19:0;;;;;;:11;:19;;;;;;;;13708:20;13680:48;13677:78;;;13751:1;13730:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;13677:78:0;13768:39;13781:6;13789:9;13800:6;13768:12;:39::i;:::-;13765:121;;;13843:4;7730:7;7747:18;;;:9;:18;;;;;;13809:51;;13821:38;;13851:7;;13821:3;:38::i;:::-;13809:11;:51::i;:::-;13882:1;13862:9;:22;13765:121;13901:11;;-1:-1:-1;;;13901:11:0;;;;13900:12;;:36;;-1:-1:-1;;;;;;13917:19:0;;;;;;:11;:19;;;;;;;;13916:20;13900:36;13896:96;;;-1:-1:-1;;;;;13960:17:0;;;;;;:9;:17;;;;;;:29;;13982:6;13960:21;:29::i;:::-;-1:-1:-1;;;;;13940:17:0;;;;;;:9;:17;;;;;:49;13896:96;14002:22;14027:33;14042:6;14050:9;14027:14;:33::i;:::-;:89;;14110:6;14027:89;;;14063:44;14081:6;14089:9;14100:6;14063:17;:44::i;:::-;-1:-1:-1;;;;;14150:20:0;;;;;;:9;:20;;;;;;14002:114;;-1:-1:-1;14150:40:0;;14002:114;14150:24;:40::i;:::-;-1:-1:-1;;;;;14127:20:0;;;;;;;:9;:20;;;;;;;:63;;;;14206:43;;;;;;;;;;14234:14;1613:25:1;;1601:2;1586:18;;1467:177;14206:43:0;;;;;;;;12916:1341;12838:1419;;;:::o;2483:240::-;2603:7;2664:12;2656:6;;;;2648:29;;;;-1:-1:-1;;;2648:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2699:5:0;;;2483:240::o;2165:98::-;2223:7;2250:5;2254:1;2250;:5;:::i;2271:98::-;2329:7;2356:5;2360:1;2356;:5;:::i;1953:98::-;2011:7;2038:5;2042:1;2038;:5;:::i;12436:394::-;12575:7;;12633:4;12532;7747:18;;;:9;:18;;;;;;12669:7;;12532:4;;12565:17;;;;;-1:-1:-1;;12615:35:0;;12669:7;;12668:8;:28;;;;-1:-1:-1;12680:16:0;;-1:-1:-1;;;12680:16:0;;;;12668:28;:43;;;;-1:-1:-1;12700:11:0;;-1:-1:-1;;;12700:11:0;;;;12668:43;:55;;;;;12715:8;12668:55;:79;;;;-1:-1:-1;;;;;;12728:19:0;;;;;;:11;:19;;;;;;;;12727:20;12668:79;:107;;;;-1:-1:-1;12764:11:0;;-1:-1:-1;;;;;12751:24:0;;;12764:11;;12751:24;12668:107;:136;;;;;12792:12;;12779:9;;:25;;12668:136;:154;;;;;12808:14;12668:154;12661:161;12436:394;-1:-1:-1;;;;;;12436:394:0:o;12319:105::-;12376:7;12406:1;12402;:5;12401:15;;12415:1;12401:15;;;-1:-1:-1;12411:1:0;12319:105;-1:-1:-1;12319:105:0:o;10892:1050::-;5836:7;:14;;-1:-1:-1;;5836:14:0;5846:4;5836:14;;;;;;11023::::1;::::0;11005:12:::1;::::0;10981::::1;::::0;5836:7;;10980:66:::1;::::0;11044:1:::1;::::0;10981:57:::1;::::0;11023:14;;10981:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;10980:66::-;10957:89;;11057:32;11092:42;11121:12;11092:24;11103:12;;11092:6;:10;;:24;;;;:::i;:42::-;11057:77:::0;-1:-1:-1;11145:14:0::1;11162:36;:6:::0;11057:77;11162:10:::1;:36::i;:::-;11145:53:::0;-1:-1:-1;11234:21:0::1;11266:17;11145:53:::0;11266:9:::1;:17::i;:::-;11294:20;11317:41;:21;11343:14:::0;11317:25:::1;:41::i;:::-;11294:64;;11369:19;11390:48;11407:30;11424:12;;11407;:16;;:30;;;;:::i;:::-;11390:12:::0;;:16:::1;:48::i;:::-;11369:69;;11449:29;11481;11497:12;;11481:11;:15;;:29;;;;:::i;:::-;11449:61:::0;-1:-1:-1;11524:34:0;;11521:103:::1;;11560:61;11573:24;11599:21;11560:12;:61::i;:::-;11680:12;::::0;11634:20:::1;::::0;11657:36:::1;::::0;:18:::1;:11:::0;11673:1:::1;11657:15;:18::i;:36::-;11634:59:::0;-1:-1:-1;11707:16:0;;11704:73:::1;;11733:18;::::0;11725:50:::1;::::0;-1:-1:-1;;;;;11733:18:0;;::::1;::::0;11725:50;::::1;;;::::0;11762:12;;11733:18:::1;11725:50:::0;11733:18;11725:50;11762:12;11733:18;11725:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11704:73;11813:21;11848:28:::0;;11845:90:::1;;11886:20;::::0;11878:55:::1;::::0;-1:-1:-1;;;;;11886:20:0;;::::1;::::0;11878:55;::::1;;;::::0;11917:15;;11886:20:::1;11878:55:::0;11886:20;11878:55;11917:15;11886:20;11878:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11845:90;-1:-1:-1::0;;5855:7:0;:15;;-1:-1:-1;;5855:15:0;;;-1:-1:-1;;;;;;;;10892:1050:0:o;14789:161::-;-1:-1:-1;;;;;14896:19:0;;14871:4;14896:19;;;:11;:19;;;;;;;;14895:20;:47;;;;-1:-1:-1;;;;;;;14920:22:0;;;;;:11;:22;;;;;;;;14919:23;;14789:161;-1:-1:-1;14789:161:0:o;8571:603::-;8667:7;8724:1;8690:31;8703:6;8711:9;8690:12;:31::i;:::-;:35;8687:465;;;8737:17;8757:60;8785:31;8798:6;8806:9;8785:12;:31::i;:::-;8768:11;;8757:23;;:6;;:10;:23::i;:60::-;8873:4;8855:24;;;;:9;:24;;;;;;8737:80;;-1:-1:-1;8855:39:0;;8737:80;8855:28;:39::i;:::-;8846:4;8828:24;;;;:9;:24;;;;;;;:66;;;;8910:42;;-1:-1:-1;;;;;8910:42:0;;;;;;;8942:9;1613:25:1;;1601:2;1586:18;;1467:177;8910:42:0;;;;;;;;8984:1;8966:7;;:20;:65;;;;;9024:7;;8990:31;9003:6;9011:9;8990:12;:31::i;:::-;:41;8966:65;8963:149;;;9033:77;9051:4;6228:42;9073:36;9101:7;;9073:23;9084:11;;9073:6;:10;;:23;;;;:::i;:36::-;9033:9;:77::i;:::-;9129:21;:6;9140:9;9129:10;:21::i;:::-;9122:28;;;;;8687:465;-1:-1:-1;9160:6:0;8571:603;-1:-1:-1;;8571:603:0:o;14333:448::-;14416:16;;;14430:1;14416:16;;;;;;;;14392:21;;14416:16;;;;;;;;;;-1:-1:-1;14416:16:0;14392:40;;14461:4;14443;14448:1;14443:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14443:23:0;;;:7;;;;;;;;;;:23;;;;14487:13;;:20;;;-1:-1:-1;;;14487:20:0;;;;:13;;;;;:18;;:20;;;;;14443:7;;14487:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14477:4;14482:1;14477:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14477:30:0;;;:7;;;;;;;;;:30;14550:13;;14518:60;;14535:4;;14550:13;14566:11;14518:8;:60::i;:::-;14589:13;;:184;;-1:-1:-1;;;14589:184:0;;-1:-1:-1;;;;;14589:13:0;;;;:64;;:184;;14668:11;;14589:13;;14710:4;;14737;;14757:15;;14589:184;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14381:400;14333:448;:::o;11954:357::-;12067:13;;12035:60;;12052:4;;-1:-1:-1;;;;;12067:13:0;12083:11;12035:8;:60::i;:::-;12106:13;;12254:18;;12106:197;;-1:-1:-1;;;12106:197:0;;12176:4;12106:197;;;10756:34:1;10806:18;;;10799:34;;;12106:13:0;10849:18:1;;;10842:34;;;10892:18;;;10885:34;-1:-1:-1;;;;;12254:18:0;;;10935:19:1;;;10928:44;12287:15:0;10988:19:1;;;10981:35;12106:13:0;;;:29;;12143:9;;10690:19:1;;12106:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11954:357;;:::o;8329:234::-;8445:11;;8409:7;;-1:-1:-1;;;;;8445:11:0;;;8432:24;;;;8429:45;;-1:-1:-1;8465:7:0;;8458:14;;8429:45;8497:11;;-1:-1:-1;;;;;8497:11:0;;;8487:21;;;;8484:43;;-1:-1:-1;8517:8:0;;8510:15;;8484:43;-1:-1:-1;8544:11:0;;8329:234;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2299:316::-;2376:6;2384;2392;2445:2;2433:9;2424:7;2420:23;2416:32;2413:52;;;2461:1;2458;2451:12;2413:52;-1:-1:-1;;2484:23:1;;;2554:2;2539:18;;2526:32;;-1:-1:-1;2605:2:1;2590:18;;;2577:32;;2299:316;-1:-1:-1;2299:316:1:o;2828:388::-;2896:6;2904;2957:2;2945:9;2936:7;2932:23;2928:32;2925:52;;;2973:1;2970;2963:12;2925:52;3012:9;2999:23;3031:31;3056:5;3031:31;:::i;:::-;3081:5;-1:-1:-1;3138:2:1;3123:18;;3110:32;3151:33;3110:32;3151:33;:::i;:::-;3203:7;3193:17;;;2828:388;;;;;:::o;3481:592::-;3594:6;3602;3610;3618;3626;3634;3642;3695:3;3683:9;3674:7;3670:23;3666:33;3663:53;;;3712:1;3709;3702:12;3663:53;-1:-1:-1;;3735:23:1;;;3805:2;3790:18;;3777:32;;-1:-1:-1;3856:2:1;3841:18;;3828:32;;3907:2;3892:18;;3879:32;;-1:-1:-1;3958:3:1;3943:19;;3930:33;;-1:-1:-1;4010:3:1;3995:19;;3982:33;;-1:-1:-1;4062:3:1;4047:19;4034:33;;-1:-1:-1;3481:592:1;-1:-1:-1;3481:592:1:o;4078:329::-;4280:2;4262:21;;;4319:1;4299:18;;;4292:29;-1:-1:-1;;;4352:2:1;4337:18;;4330:36;4398:2;4383:18;;4078:329::o;6265:127::-;6326:10;6321:3;6317:20;6314:1;6307:31;6357:4;6354:1;6347:15;6381:4;6378:1;6371:15;6397:128;6464:9;;;6485:11;;;6482:37;;;6499:18;;:::i;8385:125::-;8450:9;;;8471:10;;;8468:36;;;8484:18;;:::i;8515:168::-;8588:9;;;8619;;8636:15;;;8630:22;;8616:37;8606:71;;8657:18;;:::i;8688:217::-;8728:1;8754;8744:132;;8798:10;8793:3;8789:20;8786:1;8779:31;8833:4;8830:1;8823:15;8861:4;8858:1;8851:15;8744:132;-1:-1:-1;8890:9:1;;8688:217::o;9042:127::-;9103:10;9098:3;9094:20;9091:1;9084:31;9134:4;9131:1;9124:15;9158:4;9155:1;9148:15;9174:251;9244:6;9297:2;9285:9;9276:7;9272:23;9268:32;9265:52;;;9313:1;9310;9303:12;9265:52;9345:9;9339:16;9364:31;9389:5;9364:31;:::i;9430:980::-;9692:4;9740:3;9729:9;9725:19;9771:6;9760:9;9753:25;9797:2;9835:6;9830:2;9819:9;9815:18;9808:34;9878:3;9873:2;9862:9;9858:18;9851:31;9902:6;9937;9931:13;9968:6;9960;9953:22;10006:3;9995:9;9991:19;9984:26;;10045:2;10037:6;10033:15;10019:29;;10066:1;10076:195;10090:6;10087:1;10084:13;10076:195;;;10155:13;;-1:-1:-1;;;;;10151:39:1;10139:52;;10246:15;;;;10211:12;;;;10187:1;10105:9;10076:195;;;-1:-1:-1;;;;;;;10327:32:1;;;;10322:2;10307:18;;10300:60;-1:-1:-1;;;10391:3:1;10376:19;10369:35;10288:3;9430:980;-1:-1:-1;;;9430:980:1:o;11027:306::-;11115:6;11123;11131;11184:2;11172:9;11163:7;11159:23;11155:32;11152:52;;;11200:1;11197;11190:12;11152:52;11229:9;11223:16;11213:26;;11279:2;11268:9;11264:18;11258:25;11248:35;;11323:2;11312:9;11308:18;11302:25;11292:35;;11027:306;;;;;:::o

Swarm Source

ipfs://e34b9caa01bfdc4bcfe52f6d608d45a72af6af68544c84035415ae8fbb1e7e85
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.