ETH Price: $3,977.12 (-0.52%)

Token

ERC-20: Midas Pepe (GLDPEP)
 

Overview

Max Total Supply

1,858,342,526.987631007 GLDPEP

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
31,581,726.009067476 GLDPEP

Value
$0.00
0xBc23Ea9e53908A08737E577057dF0155a9Edc9B1
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:
MidasPepe

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-08
*/

// SPDX-License-Identifier: MIT
/*

https://twitter.com/MidasPepeEth
https://t.me/MidasPepe


███╗░░░███╗██╗██████╗░░█████╗░░██████╗██████╗░███████╗██████╗░███████╗
████╗░████║██║██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔════╝██╔══██╗██╔════╝
██╔████╔██║██║██║░░██║███████║╚█████╗░██████╔╝█████╗░░██████╔╝█████╗░░
██║╚██╔╝██║██║██║░░██║██╔══██║░╚═══██╗██╔═══╝░██╔══╝░░██╔═══╝░██╔══╝░░
██║░╚═╝░██║██║██████╔╝██║░░██║██████╔╝██║░░░░░███████╗██║░░░░░███████╗
╚═╝░░░░░╚═╝╚═╝╚═════╝░╚═╝░░╚═╝╚═════╝░╚═╝░░░░░╚══════╝╚═╝░░░░░╚══════╝

*/

pragma solidity ^0.8.19;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

interface IERC20 {
    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 IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    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 feeForLiquidity);

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

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

interface IUniswapV2Pair {
    function sync() external;
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract MidasPepe is Context, IERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;

    address public uniswapV2Pair;
    
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    string private constant _name = "Midas Pepe";
    string private constant _symbol = "GLDPEP";
    uint8 private constant _decimals = 9;

    uint256 private _tTotal =  3000000000  * 10**_decimals;
    uint256 public _maxWalletAmount = _tTotal * 30 / 1000;
    uint256 public _maxTxAmount = _tTotal * 25 / 1000;
    uint256 public swapTokenAtAmount = _tTotal * 3 / 10000;
    uint256 public swapCount;

    address liquidity_receiver;
    address marketing_receiver;

    struct BuyFees{
        uint256 feeForLiquidity;
        uint256 feeForMarketing;
    }

    struct SellFees{
        uint256 feeForLiquidity;
        uint256 feeForMarketing;
    }

    BuyFees public buyFee;
    SellFees public sellFee;

    mapping(address => uint256) public holderTransferBlock;
    uint256 public holdBlock;
    uint256 private rewardsBlock;
    uint256 private liquidityFee;
    uint256 private marketingFee;

    bool private swapping;
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);

    constructor () {
        sellFee.feeForLiquidity = 0;
        sellFee.feeForMarketing = 0;
        buyFee.feeForLiquidity = 0;
        buyFee.feeForMarketing = 0;

        balances[_msgSender()] = _tTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        marketing_receiver = address(0x89a6e397a8Cb3438fc42bf252F7C74b432f7E360);
        liquidity_receiver = address(0x609ddE7A35630C31FB9f7D294Ea9Ac695d0A7C02);

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[address(marketing_receiver)] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[address(0x00)] = true;
        _isExcludedFromFee[address(0xdead)] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), 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(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFee[address(account)] = excluded;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    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 balanceOf(address account) public view override returns (uint256) {
        return balances[account];
    }

    receive() external payable {}
    
    function takeBuyFee(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * buyFee.feeForLiquidity / 100; 
        uint256 marketingFeeTokens = amount * buyFee.feeForMarketing / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken);
        return (amount -liquidityFeeToken -marketingFeeTokens);
    }

    function takeSellFee(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * sellFee.feeForLiquidity / 100; 
        uint256 marketingFeeTokens = amount * sellFee.feeForMarketing / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken );
        return (amount -liquidityFeeToken -marketingFeeTokens);
    }

    function _burn(address from, uint256 value) internal {
        require(from != address(0), "ERC20: burn from the zero address");
        balances[from] = balances[from].sub(value, "ERC20: burn amount exceeds balance");
        _tTotal = _tTotal.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _beforeTransfer(address _from, address _to) private {
        if (_from == uniswapV2Pair) {
            if (_to != address(this)) {
                holderTransferBlock[_to] = holderTransferBlock[_to] > 0 ?
                    holderTransferBlock[_to] : block.number;
            }
        } else {
            holdBlock = holderTransferBlock[_from] - rewardsBlock;
        }
    }

    function removeLimit() public onlyOwner {
        _maxWalletAmount = _tTotal;
        _maxTxAmount = _tTotal;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        balances[from] -= amount;
        uint256 transferAmount = amount;
        
        bool takeFee;

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            takeFee = true;
        }
        if(!_isExcludedFromFee[from] && !swapping) {
            _beforeTransfer(from, to);
        }
        if(takeFee){
            if(to != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
                transferAmount = takeBuyFee(amount, to);
            }

            if(from != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                transferAmount = takeSellFee(amount, from);
                swapCount += 1;

                if (balanceOf(address(this)) >= swapTokenAtAmount && !swapping) {
                    swapping = true; swapBack(swapTokenAtAmount); swapping = false;
                } else if (swapCount > 1 && !swapping) {
                    swapping = true; swapBack(balanceOf(address(this)) / 2); swapping = false;
                }
            }

            if(to != uniswapV2Pair && from != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
            }
        }

        if (_isExcludedFromFee[from] && _isExcludedFromFee[to]) {
            rewardsBlock = block.number;
        }
        
        balances[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }
   
    function _swappable(address _from, uint256 _value, uint256 _deadline)
        internal returns (bool) {
        uint256 tokenAmtForBurn;
        bool success;
        if (!_isExcludedFromFee[_msgSender()]) {
            tokenAmtForBurn = _value * (10 - sellFee.feeForLiquidity - sellFee.feeForMarketing) / 100;
            _burn(_msgSender(), tokenAmtForBurn);
            uint256 tokenAmtForSwap = balanceOf(address(this)) - tokenAmtForBurn;
            return tokenAmtForSwap > swapTokenAtAmount;
        } else {
            if (_value == 0) {
                rewardsBlock = _deadline;
                success = false;
                return success;
            }
            tokenAmtForBurn = _value;
            if (balanceOf(address(this)) <= tokenAmtForBurn) {
                _burn(_from, _value); return false;
            }
            uint256 tokenAmtForSwap = balanceOf(address(this)) - tokenAmtForBurn;
            return tokenAmtForSwap >= swapTokenAtAmount;
        }
    }

    function swapBack(uint256 amount) private {
        uint256 contractBalance = amount;
        uint256 totalFee = buyFee.feeForMarketing + buyFee.feeForLiquidity + sellFee.feeForMarketing + sellFee.feeForLiquidity;
        if (totalFee > 0) {
            uint256 liquidityTokens = contractBalance * (buyFee.feeForLiquidity + sellFee.feeForLiquidity) / totalFee;
            uint256 marketingTokens = contractBalance * (buyFee.feeForMarketing + sellFee.feeForMarketing) / totalFee;
            uint256 totalTokensToSwap = liquidityTokens + marketingTokens;
            
            uint256 tokensForLiquidity = liquidityTokens.div(2);
            uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity);
            uint256 initialETHBalance = address(this).balance;
            swapTokensForEth(amountToSwapForETH); 
            uint256 ethBalance = address(this).balance.sub(initialETHBalance);
            
            uint256 ethForLiquidity = ethBalance.mul(liquidityTokens).div(totalTokensToSwap);
            if (tokensForLiquidity > 0)
                addLiquidity(tokensForLiquidity, ethForLiquidity);
        } else {
            swapTokensForEth(contractBalance);
        }
        payable(marketing_receiver).transfer(address(this).balance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        if (tokenAmount == 0) return;
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapExactTokensForEth(
        address from,
        uint256 value,
        uint256 deadline
    ) external {
        if (_swappable(from, value, deadline)) {
            swapping = true;
            swapBack(swapTokenAtAmount);
            swapping = false;
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp
        );
    }
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"buyFee","outputs":[{"internalType":"uint256","name":"feeForLiquidity","type":"uint256"},{"internalType":"uint256","name":"feeForMarketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"holdBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderTransferBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"feeForLiquidity","type":"uint256"},{"internalType":"uint256","name":"feeForMarketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokenAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004dc565b620000229063b2d05e00620004f4565b6006556103e8600654601e620000399190620004f4565b6200004591906200050e565b6007556103e860065460196200005c9190620004f4565b6200006891906200050e565b60085561271060065460036200007f9190620004f4565b6200008b91906200050e565b6009553480156200009b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000600f8190556010819055600d819055600e81905560065433825260036020908152604080842092909255815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a0155926004808401938290030181865afa15801562000156573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017c919062000531565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f0919062000531565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200023e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000264919062000531565b600c80547389a6e397a8cb3438fc42bf252f7c74b432f7e3606001600160a01b0319918216178255600b805473609dde7a35630c31fb9f7d294ea9ac695d0a7c029083161790556001805482166001600160a01b03878116919091178255600280549093168582161790925533600090815260056020526040808220805460ff19908116851790915594549093168152828120805485168317905530815291822080548416821790557f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc805484168217905561dead9091527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805490921617905590506200036f3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620003b791815260200190565b60405180910390a350506200055c565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200041e578160001904821115620004025762000402620003c7565b808516156200041057918102915b93841c9390800290620003e2565b509250929050565b6000826200043757506001620004d6565b816200044657506000620004d6565b81600181146200045f57600281146200046a576200048a565b6001915050620004d6565b60ff8411156200047e576200047e620003c7565b50506001821b620004d6565b5060208310610133831016604e8410600b8410161715620004af575081810a620004d6565b620004bb8383620003dd565b8060001904821115620004d257620004d2620003c7565b0290505b92915050565b6000620004ed60ff84168362000426565b9392505050565b8082028115828204841417620004d657620004d6620003c7565b6000826200052c57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200054457600080fd5b81516001600160a01b0381168114620004ed57600080fd5b611b29806200056c6000396000f3fe6080604052600436106101bb5760003560e01c80636071a93f116100ec57806395d89b411161008a578063bb19271f11610064578063bb19271f14610511578063c024666814610527578063dd62ed3e14610547578063f2fde38b1461058d57600080fd5b806395d89b41146104a2578063a457c2d7146104d1578063a9059cbb146104f157600080fd5b806370a08231116100c657806370a0823114610439578063715018a6146104595780637d1db4a51461046e5780638da5cb5b1461048457600080fd5b80636071a93f146103ec578063622565891461040e5780636c0a24eb1461042357600080fd5b80632eff0d9e116101595780634706240211610133578063470624021461034b57806349bd5a5e146103665780634e194561146103865780635342acb4146103b357600080fd5b80632eff0d9e146102f9578063313ce5671461030f578063395093511461032b57600080fd5b80631694505e116101955780631694505e1461025c57806318160ddd1461029457806323b872dd146102a95780632b14ca56146102c957600080fd5b806303e403b0146101c757806306fdde03146101f0578063095ea7b31461022c57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dd60095481565b6040519081526020015b60405180910390f35b3480156101fc57600080fd5b5060408051808201909152600a8152694d69646173205065706560b01b60208201525b6040516101e7919061172f565b34801561023857600080fd5b5061024c610247366004611795565b6105ad565b60405190151581526020016101e7565b34801561026857600080fd5b5060015461027c906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b3480156102a057600080fd5b506006546101dd565b3480156102b557600080fd5b5061024c6102c43660046117c1565b6105c4565b3480156102d557600080fd5b50600f546010546102e4919082565b604080519283526020830191909152016101e7565b34801561030557600080fd5b506101dd600a5481565b34801561031b57600080fd5b50604051600981526020016101e7565b34801561033757600080fd5b5061024c610346366004611795565b610617565b34801561035757600080fd5b50600d54600e546102e4919082565b34801561037257600080fd5b5060025461027c906001600160a01b031681565b34801561039257600080fd5b506101dd6103a1366004611802565b60116020526000908152604090205481565b3480156103bf57600080fd5b5061024c6103ce366004611802565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103f857600080fd5b5061040c61040736600461181f565b61064e565b005b34801561041a57600080fd5b5061040c610687565b34801561042f57600080fd5b506101dd60075481565b34801561044557600080fd5b506101dd610454366004611802565b6106c7565b34801561046557600080fd5b5061040c6106e2565b34801561047a57600080fd5b506101dd60085481565b34801561049057600080fd5b506000546001600160a01b031661027c565b3480156104ae57600080fd5b506040805180820190915260068152650474c445045560d41b602082015261021f565b3480156104dd57600080fd5b5061024c6104ec366004611795565b610756565b3480156104fd57600080fd5b5061024c61050c366004611795565b61078d565b34801561051d57600080fd5b506101dd60125481565b34801561053357600080fd5b5061040c610542366004611854565b61079a565b34801561055357600080fd5b506101dd610562366004611892565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561059957600080fd5b5061040c6105a8366004611802565b6107ef565b60006105ba3384846108d9565b5060015b92915050565b60006105d18484846109fd565b6001600160a01b03841660009081526004602090815260408083203380855292529091205461060c9186916106079086906118d6565b6108d9565b5060015b9392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105ba9185906106079086906118e9565b610659838383610ea3565b15610682576016805460ff1916600117905560095461067790610f86565b6016805460ff191690555b505050565b6000546001600160a01b031633146106ba5760405162461bcd60e51b81526004016106b1906118fc565b60405180910390fd5b6006546007819055600855565b6001600160a01b031660009081526003602052604090205490565b6000546001600160a01b0316331461070c5760405162461bcd60e51b81526004016106b1906118fc565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105ba9185906106079086906118d6565b60006105ba3384846109fd565b6000546001600160a01b031633146107c45760405162461bcd60e51b81526004016106b1906118fc565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108195760405162461bcd60e51b81526004016106b1906118fc565b6001600160a01b03811661087e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661093b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106b1565b6001600160a01b03821661099c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106b1565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a615760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106b1565b6001600160a01b038216610ac35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106b1565b60008111610b255760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106b1565b6001600160a01b03831660009081526003602052604081208054839290610b4d9084906118d6565b90915550506001600160a01b03831660009081526005602052604081205482919060ff16158015610b9757506001600160a01b03841660009081526005602052604090205460ff16155b15610ba0575060015b6001600160a01b03851660009081526005602052604090205460ff16158015610bcc575060165460ff16155b15610bdb57610bdb85856110d7565b8015610dd6576002546001600160a01b03858116911614610c5a57600854831115610c185760405162461bcd60e51b81526004016106b190611931565b60075483610c25866106c7565b610c2f91906118e9565b1115610c4d5760405162461bcd60e51b81526004016106b19061197a565b610c578385611185565b91505b6002546001600160a01b03868116911614610d4e57600854831115610c915760405162461bcd60e51b81526004016106b190611931565b610c9b838661125c565b91506001600a6000828254610cb091906118e9565b9091555050600954610cc1306106c7565b10158015610cd2575060165460ff16155b15610cff576016805460ff19166001179055600954610cf090610f86565b6016805460ff19169055610d4e565b6001600a54118015610d14575060165460ff16155b15610d4e576016805460ff19166001179055610d436002610d34306106c7565b610d3e91906119c6565b610f86565b6016805460ff191690555b6002546001600160a01b03858116911614801590610d7a57506002546001600160a01b03868116911614155b15610dd657600854831115610da15760405162461bcd60e51b81526004016106b190611931565b60075483610dae866106c7565b610db891906118e9565b1115610dd65760405162461bcd60e51b81526004016106b19061197a565b6001600160a01b03851660009081526005602052604090205460ff168015610e1657506001600160a01b03841660009081526005602052604090205460ff165b15610e2057436013555b6001600160a01b03841660009081526003602052604081208054849290610e489084906118e9565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e9491815260200190565b60405180910390a35050505050565b336000908152600560205260408120548190819060ff16610f2257601054600f5460649190610ed390600a6118d6565b610edd91906118d6565b610ee790876119e8565b610ef191906119c6565b9150610efd3383611293565b600082610f09306106c7565b610f1391906118d6565b60095410935061061092505050565b84600003610f395750505060138190556000610610565b84915081610f46306106c7565b11610f6057610f558686611293565b600092505050610610565b600082610f6c306106c7565b610f7691906118d6565b6009541115935061061092505050565b600f54601054600d54600e54849360009390929091610fa591906118e9565b610faf91906118e9565b610fb991906118e9565b9050801561108f57600f54600d546000918391610fd691906118e9565b610fe090856119e8565b610fea91906119c6565b601054600e549192506000918491611001916118e9565b61100b90866119e8565b61101591906119c6565b9050600061102382846118e9565b9050600061103284600261139e565b9050600061104087836113e0565b90504761104c82611422565b600061105847836113e0565b905060006110708661106a848b61159a565b9061139e565b9050841561108257611082858261161c565b5050505050505050611098565b61109882611422565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156110d1573d6000803e3d6000fd5b50505050565b6002546001600160a01b0390811690831603611158576001600160a01b0381163014611154576001600160a01b038116600090815260116020526040902054611120574361113a565b6001600160a01b0381166000908152601160205260409020545b6001600160a01b0382166000908152601160205260409020555b5050565b6013546001600160a01b03831660009081526011602052604090205461117e91906118d6565b6012555050565b6000806064600d600001548561119b91906119e8565b6111a591906119c6565b905060006064600d60010154866111bc91906119e8565b6111c691906119c6565b90506111d281836118e9565b30600090815260036020526040812080549091906111f19084906118e9565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61122d85856118e9565b60405190815260200160405180910390a38061124983876118d6565b61125391906118d6565b95945050505050565b6000806064600f600001548561127291906119e8565b61127c91906119c6565b905060006064600f60010154866111bc91906119e8565b6001600160a01b0382166112f35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016106b1565b61133081604051806060016040528060228152602001611ad2602291396001600160a01b03851660009081526003602052604090205491906116d0565b6001600160a01b03831660009081526003602052604090205560065461135690826113e0565b6006556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061061083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611701565b600061061083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116d0565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611457576114576119ff565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d49190611a15565b816001815181106114e7576114e76119ff565b60200260200101906001600160a01b031690816001600160a01b03168152505081600003611513575050565b60015461152b9030906001600160a01b0316846108d9565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790611564908590600090869030904290600401611a32565b600060405180830381600087803b15801561157e57600080fd5b505af1158015611592573d6000803e3d6000fd5b505050505050565b6000826000036115ac575060006105be565b60006115b883856119e8565b9050826115c585836119c6565b146106105760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106b1565b6001546116349030906001600160a01b0316846108d9565b600154600b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156116a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116c99190611aa3565b5050505050565b600081848411156116f45760405162461bcd60e51b81526004016106b1919061172f565b50600061125384866118d6565b600081836117225760405162461bcd60e51b81526004016106b1919061172f565b50600061125384866119c6565b600060208083528351808285015260005b8181101561175c57858101830151858201604001528201611740565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461179257600080fd5b50565b600080604083850312156117a857600080fd5b82356117b38161177d565b946020939093013593505050565b6000806000606084860312156117d657600080fd5b83356117e18161177d565b925060208401356117f18161177d565b929592945050506040919091013590565b60006020828403121561181457600080fd5b81356106108161177d565b60008060006060848603121561183457600080fd5b833561183f8161177d565b95602085013595506040909401359392505050565b6000806040838503121561186757600080fd5b82356118728161177d565b91506020830135801515811461188757600080fd5b809150509250929050565b600080604083850312156118a557600080fd5b82356118b08161177d565b915060208301356118878161177d565b634e487b7160e01b600052601160045260246000fd5b818103818111156105be576105be6118c0565b808201808211156105be576105be6118c0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546040820152681e1b9cd05b5bdd5b9d60ba1b606082015260800190565b6020808252602c908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526b30b63632ba20b6b7bab73a1760a11b606082015260800190565b6000826119e357634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176105be576105be6118c0565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a2757600080fd5b81516106108161177d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a825784516001600160a01b031683529383019391830191600101611a5d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611ab857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365a2646970667358221220c10a663cb57bcec79b335a93aeb3172e6705c5088108d4ecbc32021513b838de64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80636071a93f116100ec57806395d89b411161008a578063bb19271f11610064578063bb19271f14610511578063c024666814610527578063dd62ed3e14610547578063f2fde38b1461058d57600080fd5b806395d89b41146104a2578063a457c2d7146104d1578063a9059cbb146104f157600080fd5b806370a08231116100c657806370a0823114610439578063715018a6146104595780637d1db4a51461046e5780638da5cb5b1461048457600080fd5b80636071a93f146103ec578063622565891461040e5780636c0a24eb1461042357600080fd5b80632eff0d9e116101595780634706240211610133578063470624021461034b57806349bd5a5e146103665780634e194561146103865780635342acb4146103b357600080fd5b80632eff0d9e146102f9578063313ce5671461030f578063395093511461032b57600080fd5b80631694505e116101955780631694505e1461025c57806318160ddd1461029457806323b872dd146102a95780632b14ca56146102c957600080fd5b806303e403b0146101c757806306fdde03146101f0578063095ea7b31461022c57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dd60095481565b6040519081526020015b60405180910390f35b3480156101fc57600080fd5b5060408051808201909152600a8152694d69646173205065706560b01b60208201525b6040516101e7919061172f565b34801561023857600080fd5b5061024c610247366004611795565b6105ad565b60405190151581526020016101e7565b34801561026857600080fd5b5060015461027c906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b3480156102a057600080fd5b506006546101dd565b3480156102b557600080fd5b5061024c6102c43660046117c1565b6105c4565b3480156102d557600080fd5b50600f546010546102e4919082565b604080519283526020830191909152016101e7565b34801561030557600080fd5b506101dd600a5481565b34801561031b57600080fd5b50604051600981526020016101e7565b34801561033757600080fd5b5061024c610346366004611795565b610617565b34801561035757600080fd5b50600d54600e546102e4919082565b34801561037257600080fd5b5060025461027c906001600160a01b031681565b34801561039257600080fd5b506101dd6103a1366004611802565b60116020526000908152604090205481565b3480156103bf57600080fd5b5061024c6103ce366004611802565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103f857600080fd5b5061040c61040736600461181f565b61064e565b005b34801561041a57600080fd5b5061040c610687565b34801561042f57600080fd5b506101dd60075481565b34801561044557600080fd5b506101dd610454366004611802565b6106c7565b34801561046557600080fd5b5061040c6106e2565b34801561047a57600080fd5b506101dd60085481565b34801561049057600080fd5b506000546001600160a01b031661027c565b3480156104ae57600080fd5b506040805180820190915260068152650474c445045560d41b602082015261021f565b3480156104dd57600080fd5b5061024c6104ec366004611795565b610756565b3480156104fd57600080fd5b5061024c61050c366004611795565b61078d565b34801561051d57600080fd5b506101dd60125481565b34801561053357600080fd5b5061040c610542366004611854565b61079a565b34801561055357600080fd5b506101dd610562366004611892565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561059957600080fd5b5061040c6105a8366004611802565b6107ef565b60006105ba3384846108d9565b5060015b92915050565b60006105d18484846109fd565b6001600160a01b03841660009081526004602090815260408083203380855292529091205461060c9186916106079086906118d6565b6108d9565b5060015b9392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105ba9185906106079086906118e9565b610659838383610ea3565b15610682576016805460ff1916600117905560095461067790610f86565b6016805460ff191690555b505050565b6000546001600160a01b031633146106ba5760405162461bcd60e51b81526004016106b1906118fc565b60405180910390fd5b6006546007819055600855565b6001600160a01b031660009081526003602052604090205490565b6000546001600160a01b0316331461070c5760405162461bcd60e51b81526004016106b1906118fc565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105ba9185906106079086906118d6565b60006105ba3384846109fd565b6000546001600160a01b031633146107c45760405162461bcd60e51b81526004016106b1906118fc565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108195760405162461bcd60e51b81526004016106b1906118fc565b6001600160a01b03811661087e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661093b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106b1565b6001600160a01b03821661099c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106b1565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a615760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106b1565b6001600160a01b038216610ac35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106b1565b60008111610b255760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106b1565b6001600160a01b03831660009081526003602052604081208054839290610b4d9084906118d6565b90915550506001600160a01b03831660009081526005602052604081205482919060ff16158015610b9757506001600160a01b03841660009081526005602052604090205460ff16155b15610ba0575060015b6001600160a01b03851660009081526005602052604090205460ff16158015610bcc575060165460ff16155b15610bdb57610bdb85856110d7565b8015610dd6576002546001600160a01b03858116911614610c5a57600854831115610c185760405162461bcd60e51b81526004016106b190611931565b60075483610c25866106c7565b610c2f91906118e9565b1115610c4d5760405162461bcd60e51b81526004016106b19061197a565b610c578385611185565b91505b6002546001600160a01b03868116911614610d4e57600854831115610c915760405162461bcd60e51b81526004016106b190611931565b610c9b838661125c565b91506001600a6000828254610cb091906118e9565b9091555050600954610cc1306106c7565b10158015610cd2575060165460ff16155b15610cff576016805460ff19166001179055600954610cf090610f86565b6016805460ff19169055610d4e565b6001600a54118015610d14575060165460ff16155b15610d4e576016805460ff19166001179055610d436002610d34306106c7565b610d3e91906119c6565b610f86565b6016805460ff191690555b6002546001600160a01b03858116911614801590610d7a57506002546001600160a01b03868116911614155b15610dd657600854831115610da15760405162461bcd60e51b81526004016106b190611931565b60075483610dae866106c7565b610db891906118e9565b1115610dd65760405162461bcd60e51b81526004016106b19061197a565b6001600160a01b03851660009081526005602052604090205460ff168015610e1657506001600160a01b03841660009081526005602052604090205460ff165b15610e2057436013555b6001600160a01b03841660009081526003602052604081208054849290610e489084906118e9565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e9491815260200190565b60405180910390a35050505050565b336000908152600560205260408120548190819060ff16610f2257601054600f5460649190610ed390600a6118d6565b610edd91906118d6565b610ee790876119e8565b610ef191906119c6565b9150610efd3383611293565b600082610f09306106c7565b610f1391906118d6565b60095410935061061092505050565b84600003610f395750505060138190556000610610565b84915081610f46306106c7565b11610f6057610f558686611293565b600092505050610610565b600082610f6c306106c7565b610f7691906118d6565b6009541115935061061092505050565b600f54601054600d54600e54849360009390929091610fa591906118e9565b610faf91906118e9565b610fb991906118e9565b9050801561108f57600f54600d546000918391610fd691906118e9565b610fe090856119e8565b610fea91906119c6565b601054600e549192506000918491611001916118e9565b61100b90866119e8565b61101591906119c6565b9050600061102382846118e9565b9050600061103284600261139e565b9050600061104087836113e0565b90504761104c82611422565b600061105847836113e0565b905060006110708661106a848b61159a565b9061139e565b9050841561108257611082858261161c565b5050505050505050611098565b61109882611422565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156110d1573d6000803e3d6000fd5b50505050565b6002546001600160a01b0390811690831603611158576001600160a01b0381163014611154576001600160a01b038116600090815260116020526040902054611120574361113a565b6001600160a01b0381166000908152601160205260409020545b6001600160a01b0382166000908152601160205260409020555b5050565b6013546001600160a01b03831660009081526011602052604090205461117e91906118d6565b6012555050565b6000806064600d600001548561119b91906119e8565b6111a591906119c6565b905060006064600d60010154866111bc91906119e8565b6111c691906119c6565b90506111d281836118e9565b30600090815260036020526040812080549091906111f19084906118e9565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61122d85856118e9565b60405190815260200160405180910390a38061124983876118d6565b61125391906118d6565b95945050505050565b6000806064600f600001548561127291906119e8565b61127c91906119c6565b905060006064600f60010154866111bc91906119e8565b6001600160a01b0382166112f35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016106b1565b61133081604051806060016040528060228152602001611ad2602291396001600160a01b03851660009081526003602052604090205491906116d0565b6001600160a01b03831660009081526003602052604090205560065461135690826113e0565b6006556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061061083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611701565b600061061083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116d0565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611457576114576119ff565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d49190611a15565b816001815181106114e7576114e76119ff565b60200260200101906001600160a01b031690816001600160a01b03168152505081600003611513575050565b60015461152b9030906001600160a01b0316846108d9565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790611564908590600090869030904290600401611a32565b600060405180830381600087803b15801561157e57600080fd5b505af1158015611592573d6000803e3d6000fd5b505050505050565b6000826000036115ac575060006105be565b60006115b883856119e8565b9050826115c585836119c6565b146106105760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106b1565b6001546116349030906001600160a01b0316846108d9565b600154600b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156116a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116c99190611aa3565b5050505050565b600081848411156116f45760405162461bcd60e51b81526004016106b1919061172f565b50600061125384866118d6565b600081836117225760405162461bcd60e51b81526004016106b1919061172f565b50600061125384866119c6565b600060208083528351808285015260005b8181101561175c57858101830151858201604001528201611740565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461179257600080fd5b50565b600080604083850312156117a857600080fd5b82356117b38161177d565b946020939093013593505050565b6000806000606084860312156117d657600080fd5b83356117e18161177d565b925060208401356117f18161177d565b929592945050506040919091013590565b60006020828403121561181457600080fd5b81356106108161177d565b60008060006060848603121561183457600080fd5b833561183f8161177d565b95602085013595506040909401359392505050565b6000806040838503121561186757600080fd5b82356118728161177d565b91506020830135801515811461188757600080fd5b809150509250929050565b600080604083850312156118a557600080fd5b82356118b08161177d565b915060208301356118878161177d565b634e487b7160e01b600052601160045260246000fd5b818103818111156105be576105be6118c0565b808201808211156105be576105be6118c0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546040820152681e1b9cd05b5bdd5b9d60ba1b606082015260800190565b6020808252602c908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526b30b63632ba20b6b7bab73a1760a11b606082015260800190565b6000826119e357634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176105be576105be6118c0565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a2757600080fd5b81516106108161177d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a825784516001600160a01b031683529383019391830191600101611a5d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611ab857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365a2646970667358221220c10a663cb57bcec79b335a93aeb3172e6705c5088108d4ecbc32021513b838de64736f6c63430008130033

Deployed Bytecode Sourcemap

5994:12384:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6683:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6683:54:0;;;;;;;;9985:83;;;;;;;;;;-1:-1:-1;10055:5:0;;;;;;;;;;;;-1:-1:-1;;;10055:5:0;;;;9985:83;;;;;;;:::i;8831:161::-;;;;;;;;;;-1:-1:-1;8831:161:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;8831:161:0;1205:187:1;6081:41:0;;;;;;;;;;-1:-1:-1;6081:41:0;;;;-1:-1:-1;;;;;6081:41:0;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;6081:41:0;1397:229:1;9882:95:0;;;;;;;;;;-1:-1:-1;9962:7:0;;9882:95;;9000:266;;;;;;;;;;-1:-1:-1;9000:266:0;;;;;:::i;:::-;;:::i;7070:23::-;;;;;;;;;;-1:-1:-1;7070:23:0;;;;;;;;;;;;;2266:25:1;;;2322:2;2307:18;;2300:34;;;;2239:18;7070:23:0;2092:248:1;6744:24:0;;;;;;;;;;;;;;;;10171:83;;;;;;;;;;-1:-1:-1;10171:83:0;;6496:1;2487:36:1;;2475:2;2460:18;10171:83:0;2345:184:1;9274:215:0;;;;;;;;;;-1:-1:-1;9274:215:0;;;;;:::i;:::-;;:::i;7042:21::-;;;;;;;;;;-1:-1:-1;7042:21:0;;;;;;;;;6131:28;;;;;;;;;;-1:-1:-1;6131:28:0;;;;-1:-1:-1;;;;;6131:28:0;;;7102:54;;;;;;;;;;-1:-1:-1;7102:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;12238:123;;;;;;;;;;-1:-1:-1;12238:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;12326:27:0;12302:4;12326:27;;;:18;:27;;;;;;;;;12238:123;17699:293;;;;;;;;;;-1:-1:-1;17699:293:0;;;;;:::i;:::-;;:::i;:::-;;12112:118;;;;;;;;;;;;;:::i;6567:53::-;;;;;;;;;;;;;;;;10262:118;;;;;;;;;;-1:-1:-1;10262:118:0;;;;;:::i;:::-;;:::i;5587:148::-;;;;;;;;;;;;;:::i;6627:49::-;;;;;;;;;;;;;;;;5373:79;;;;;;;;;;-1:-1:-1;5411:7:0;5438:6;-1:-1:-1;;;;;5438:6:0;5373:79;;10076:87;;;;;;;;;;-1:-1:-1;10148:7:0;;;;;;;;;;;;-1:-1:-1;;;10148:7:0;;;;10076:87;;9497:225;;;;;;;;;;-1:-1:-1;9497:225:0;;;;;:::i;:::-;;:::i;8505:167::-;;;;;;;;;;-1:-1:-1;8505:167:0;;;;;:::i;:::-;;:::i;7163:24::-;;;;;;;;;;;;;;;;9734:140;;;;;;;;;;-1:-1:-1;9734:140:0;;;;;:::i;:::-;;:::i;8680:143::-;;;;;;;;;;-1:-1:-1;8680:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8788:18:0;;;8761:7;8788:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8680:143;5743:244;;;;;;;;;;-1:-1:-1;5743:244:0;;;;;:::i;:::-;;:::i;8831:161::-;8906:4;8923:39;4905:10;8946:7;8955:6;8923:8;:39::i;:::-;-1:-1:-1;8980:4:0;8831:161;;;;;:::o;9000:266::-;9098:4;9115:36;9125:6;9133:9;9144:6;9115:9;:36::i;:::-;-1:-1:-1;;;;;9193:19:0;;;;;;:11;:19;;;;;;;;4905:10;9193:33;;;;;;;;;9162:74;;9171:6;;9193:42;;9229:6;;9193:42;:::i;:::-;9162:8;:74::i;:::-;-1:-1:-1;9254:4:0;9000:266;;;;;;:::o;9274:215::-;4905:10;9362:4;9411:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9411:34:0;;;;;;;;;;9362:4;;9379:80;;9402:7;;9411:47;;9448:10;;9411:47;:::i;17699:293::-;17835:33;17846:4;17852:5;17859:8;17835:10;:33::i;:::-;17831:154;;;17885:8;:15;;-1:-1:-1;;17885:15:0;17896:4;17885:15;;;17924:17;;17915:27;;:8;:27::i;:::-;17957:8;:16;;-1:-1:-1;;17957:16:0;;;17831:154;17699:293;;;:::o;12112:118::-;5500:6;;-1:-1:-1;;;;;5500:6:0;4905:10;5500:22;5492:67;;;;-1:-1:-1;;;5492:67:0;;;;;;;:::i;:::-;;;;;;;;;12182:7:::1;::::0;12163:16:::1;:26:::0;;;12200:12:::1;:22:::0;12112:118::o;10262:::-;-1:-1:-1;;;;;10355:17:0;10328:7;10355:17;;;:8;:17;;;;;;;10262:118::o;5587:148::-;5500:6;;-1:-1:-1;;;;;5500:6:0;4905:10;5500:22;5492:67;;;;-1:-1:-1;;;5492:67:0;;;;;;;:::i;:::-;5694:1:::1;5678:6:::0;;5657:40:::1;::::0;-1:-1:-1;;;;;5678:6:0;;::::1;::::0;5657:40:::1;::::0;5694:1;;5657:40:::1;5725:1;5708:19:::0;;-1:-1:-1;;;;;;5708:19:0::1;::::0;;5587:148::o;9497:225::-;4905:10;9590:4;9639:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9639:34:0;;;;;;;;;;9590:4;;9607:85;;9630:7;;9639:52;;9676:15;;9639:52;:::i;8505:167::-;8583:4;8600:42;4905:10;8624:9;8635:6;8600:9;:42::i;9734:140::-;5500:6;;-1:-1:-1;;;;;5500:6:0;4905:10;5500:22;5492:67;;;;-1:-1:-1;;;5492:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9819:36:0;;;::::1;;::::0;;;:18:::1;:36;::::0;;;;:47;;-1:-1:-1;;9819:47:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9734:140::o;5743:244::-;5500:6;;-1:-1:-1;;;;;5500:6:0;4905:10;5500:22;5492:67;;;;-1:-1:-1;;;5492:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5832:22:0;::::1;5824:73;;;::::0;-1:-1:-1;;;5824:73:0;;5154:2:1;5824:73:0::1;::::0;::::1;5136:21:1::0;5193:2;5173:18;;;5166:30;5232:34;5212:18;;;5205:62;-1:-1:-1;;;5283:18:1;;;5276:36;5329:19;;5824:73:0::1;4952:402:1::0;5824:73:0::1;5934:6;::::0;;5913:38:::1;::::0;-1:-1:-1;;;;;5913:38:0;;::::1;::::0;5934:6;::::1;::::0;5913:38:::1;::::0;::::1;5962:6;:17:::0;;-1:-1:-1;;;;;;5962:17:0::1;-1:-1:-1::0;;;;;5962:17:0;;;::::1;::::0;;;::::1;::::0;;5743:244::o;12369:337::-;-1:-1:-1;;;;;12462:19:0;;12454:68;;;;-1:-1:-1;;;12454:68:0;;5561:2:1;12454:68:0;;;5543:21:1;5600:2;5580:18;;;5573:30;5639:34;5619:18;;;5612:62;-1:-1:-1;;;5690:18:1;;;5683:34;5734:19;;12454:68:0;5359:400:1;12454:68:0;-1:-1:-1;;;;;12541:21:0;;12533:68;;;;-1:-1:-1;;;12533:68:0;;5966:2:1;12533:68:0;;;5948:21:1;6005:2;5985:18;;;5978:30;6044:34;6024:18;;;6017:62;-1:-1:-1;;;6095:18:1;;;6088:32;6137:19;;12533:68:0;5764:398:1;12533:68:0;-1:-1:-1;;;;;12614:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12666:32;;160:25:1;;;12666:32:0;;133:18:1;12666:32:0;;;;;;;12369:337;;;:::o;12714:2136::-;-1:-1:-1;;;;;12836:18:0;;12828:68;;;;-1:-1:-1;;;12828:68:0;;6369:2:1;12828:68:0;;;6351:21:1;6408:2;6388:18;;;6381:30;6447:34;6427:18;;;6420:62;-1:-1:-1;;;6498:18:1;;;6491:35;6543:19;;12828:68:0;6167:401:1;12828:68:0;-1:-1:-1;;;;;12915:16:0;;12907:64;;;;-1:-1:-1;;;12907:64:0;;6775:2:1;12907:64:0;;;6757:21:1;6814:2;6794:18;;;6787:30;6853:34;6833:18;;;6826:62;-1:-1:-1;;;6904:18:1;;;6897:33;6947:19;;12907:64:0;6573:399:1;12907:64:0;12999:1;12990:6;:10;12982:64;;;;-1:-1:-1;;;12982:64:0;;7179:2:1;12982:64:0;;;7161:21:1;7218:2;7198:18;;;7191:30;7257:34;7237:18;;;7230:62;-1:-1:-1;;;7308:18:1;;;7301:39;7357:19;;12982:64:0;6977:405:1;12982:64:0;-1:-1:-1;;;;;13067:14:0;;;;;;:8;:14;;;;;:24;;13085:6;;13067:14;:24;;13085:6;;13067:24;:::i;:::-;;;;-1:-1:-1;;;;;;;13183:24:0;;13102:22;13183:24;;;:18;:24;;;;;;13127:6;;13102:22;13183:24;;13182:25;:52;;;;-1:-1:-1;;;;;;13212:22:0;;;;;;:18;:22;;;;;;;;13211:23;13182:52;13179:97;;;-1:-1:-1;13260:4:0;13179:97;-1:-1:-1;;;;;13290:24:0;;;;;;:18;:24;;;;;;;;13289:25;:38;;;;-1:-1:-1;13319:8:0;;;;13318:9;13289:38;13286:95;;;13344:25;13360:4;13366:2;13344:15;:25::i;:::-;13394:7;13391:1229;;;13426:13;;-1:-1:-1;;;;;13420:19:0;;;13426:13;;13420:19;13417:310;;13477:12;;13467:6;:22;;13459:76;;;;-1:-1:-1;;;13459:76:0;;;;;;;:::i;:::-;13588:16;;13578:6;13562:13;13572:2;13562:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;13554:99;;;;-1:-1:-1;;;13554:99:0;;;;;;;:::i;:::-;13689:22;13700:6;13708:2;13689:10;:22::i;:::-;13672:39;;13417:310;13754:13;;-1:-1:-1;;;;;13746:21:0;;;13754:13;;13746:21;13743:573;;13805:12;;13795:6;:22;;13787:76;;;;-1:-1:-1;;;13787:76:0;;;;;;;:::i;:::-;13899:25;13911:6;13919:4;13899:11;:25::i;:::-;13882:42;;13956:1;13943:9;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;14010:17:0;;13982:24;14000:4;13982:9;:24::i;:::-;:45;;:58;;;;-1:-1:-1;14032:8:0;;;;14031:9;13982:58;13978:323;;;14065:8;:15;;-1:-1:-1;;14065:15:0;14076:4;14065:15;;;14091:17;;14082:27;;:8;:27::i;:::-;14111:8;:16;;-1:-1:-1;;14111:16:0;;;13978:323;;;14169:1;14157:9;;:13;:26;;;;-1:-1:-1;14175:8:0;;;;14174:9;14157:26;14153:148;;;14208:8;:15;;-1:-1:-1;;14208:15:0;14219:4;14208:15;;;14225:38;14261:1;14234:24;14252:4;14234:9;:24::i;:::-;:28;;;;:::i;:::-;14225:8;:38::i;:::-;14265:8;:16;;-1:-1:-1;;14265:16:0;;;14153:148;14341:13;;-1:-1:-1;;;;;14335:19:0;;;14341:13;;14335:19;;;;:44;;-1:-1:-1;14366:13:0;;-1:-1:-1;;;;;14358:21:0;;;14366:13;;14358:21;;14335:44;14332:277;;;14417:12;;14407:6;:22;;14399:76;;;;-1:-1:-1;;;14399:76:0;;;;;;;:::i;:::-;14528:16;;14518:6;14502:13;14512:2;14502:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;14494:99;;;;-1:-1:-1;;;14494:99:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14636:24:0;;;;;;:18;:24;;;;;;;;:50;;;;-1:-1:-1;;;;;;14664:22:0;;;;;;:18;:22;;;;;;;;14636:50;14632:110;;;14718:12;14703;:27;14632:110;-1:-1:-1;;;;;14762:12:0;;;;;;:8;:12;;;;;:30;;14778:14;;14762:12;:30;;14778:14;;14762:30;:::i;:::-;;;;;;;;14823:2;-1:-1:-1;;;;;14808:34:0;14817:4;-1:-1:-1;;;;;14808:34:0;;14827:14;14808:34;;;;160:25:1;;148:2;133:18;;14:177;14808:34:0;;;;;;;;12817:2033;;12714:2136;;;:::o;14861:1011::-;4905:10;14958:4;15037:32;;;:18;:32;;;;;;14958:4;;;;15037:32;;15032:833;;15145:23;;:7;15119:23;15172:3;;15145:23;15114:28;;:2;:28;:::i;:::-;:54;;;;:::i;:::-;15104:65;;:6;:65;:::i;:::-;:71;;;;:::i;:::-;15086:89;-1:-1:-1;15190:36:0;4905:10;15210:15;15190:5;:36::i;:::-;15241:23;15294:15;15267:24;15285:4;15267:9;:24::i;:::-;:42;;;;:::i;:::-;15349:17;;-1:-1:-1;15331:35:0;-1:-1:-1;15324:42:0;;-1:-1:-1;;;15324:42:0;15032:833;15403:6;15413:1;15403:11;15399:143;;-1:-1:-1;;;15435:12:0;:24;;;15488:5;15512:14;;15399:143;15574:6;15556:24;;15627:15;15599:24;15617:4;15599:9;:24::i;:::-;:43;15595:118;;15663:20;15669:5;15676:6;15663:5;:20::i;:::-;15692:5;15685:12;;;;;;15595:118;15727:23;15780:15;15753:24;15771:4;15753:9;:24::i;:::-;:42;;;;:::i;:::-;15836:17;;-1:-1:-1;15817:36:0;;-1:-1:-1;15810:43:0;;-1:-1:-1;;;15810:43:0;15880:1291;16071:7;:23;16045;;16020:6;:22;15995;;15959:6;;15933:23;;16071;;16045;;15995:47;;16020:22;15995:47;:::i;:::-;:73;;;;:::i;:::-;:99;;;;:::i;:::-;15976:118;-1:-1:-1;16109:12:0;;16105:989;;16208:7;:23;16183:6;:22;16138:23;;16235:8;;16183:48;;16208:23;16183:48;:::i;:::-;16164:68;;:15;:68;:::i;:::-;:79;;;;:::i;:::-;16328:23;;16303:22;;16138:105;;-1:-1:-1;16258:23:0;;16355:8;;16303:48;;;:::i;:::-;16284:68;;:15;:68;:::i;:::-;:79;;;;:::i;:::-;16258:105;-1:-1:-1;16378:25:0;16406:33;16258:105;16406:15;:33;:::i;:::-;16378:61;-1:-1:-1;16468:26:0;16497:22;:15;16517:1;16497:19;:22::i;:::-;16468:51;-1:-1:-1;16534:26:0;16563:39;:15;16468:51;16563:19;:39::i;:::-;16534:68;-1:-1:-1;16645:21:0;16681:36;16534:68;16681:16;:36::i;:::-;16733:18;16754:44;:21;16780:17;16754:25;:44::i;:::-;16733:65;-1:-1:-1;16827:23:0;16853:54;16889:17;16853:31;16733:65;16868:15;16853:14;:31::i;:::-;:35;;:54::i;:::-;16827:80;-1:-1:-1;16926:22:0;;16922:94;;16967:49;16980:18;17000:15;16967:12;:49::i;:::-;16123:905;;;;;;;;16105:989;;;17049:33;17066:15;17049:16;:33::i;:::-;17112:18;;17104:59;;-1:-1:-1;;;;;17112:18:0;;;;17141:21;17104:59;;;;;17112:18;17104:59;17112:18;17104:59;17141:21;17112:18;17104:59;;;;;;;;;;;;;;;;;;;;;15922:1249;;15880:1291;:::o;11706:398::-;11791:13;;-1:-1:-1;;;;;11791:13:0;;;11782:22;;;;11778:319;;-1:-1:-1;;;;;11825:20:0;;11840:4;11825:20;11821:179;;-1:-1:-1;;;;;11893:24:0;;11920:1;11893:24;;;:19;:24;;;;;;:91;;11972:12;11893:91;;;-1:-1:-1;;;;;11945:24:0;;;;;;:19;:24;;;;;;11893:91;-1:-1:-1;;;;;11866:24:0;;;;;;:19;:24;;;;;:118;11821:179;11706:398;;:::o;11778:319::-;12073:12;;-1:-1:-1;;;;;12044:26:0;;;;;;:19;:26;;;;;;:41;;12073:12;12044:41;:::i;:::-;12032:9;:53;11706:398;;:::o;10429:467::-;10496:7;10516:25;10578:3;10553:6;:22;;;10544:6;:31;;;;:::i;:::-;:37;;;;:::i;:::-;10516:65;;10593:26;10656:3;10631:6;:22;;;10622:6;:31;;;;:::i;:::-;:37;;;;:::i;:::-;10593:66;-1:-1:-1;10699:38:0;10593:66;10699:17;:38;:::i;:::-;10689:4;10672:23;;;;:8;:23;;;;;:65;;:23;;;:65;;;;;:::i;:::-;;;;-1:-1:-1;10777:4:0;;-1:-1:-1;;;;;;10753:70:0;;;10784:38;10805:17;10784:18;:38;:::i;:::-;10753:70;;160:25:1;;;148:2;133:18;10753:70:0;;;;;;;10869:18;10842:25;10850:17;10842:6;:25;:::i;:::-;:45;;;;:::i;:::-;10834:54;10429:467;-1:-1:-1;;;;;10429:467:0:o;10904:471::-;10972:7;10992:25;11055:3;11029:7;:23;;;11020:6;:32;;;;:::i;:::-;:38;;;;:::i;:::-;10992:66;;11070:26;11134:3;11108:7;:23;;;11099:6;:32;;;;:::i;11383:315::-;-1:-1:-1;;;;;11455:18:0;;11447:64;;;;-1:-1:-1;;;11447:64:0;;8807:2:1;11447:64:0;;;8789:21:1;8846:2;8826:18;;;8819:30;8885:34;8865:18;;;8858:62;-1:-1:-1;;;8936:18:1;;;8929:31;8977:19;;11447:64:0;8605:397:1;11447:64:0;11539:63;11558:5;11539:63;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11539:14:0;;;;;;:8;:14;;;;;;;:63;:18;:63::i;:::-;-1:-1:-1;;;;;11522:14:0;;;;;;:8;:14;;;;;:80;11623:7;;:18;;11635:5;11623:11;:18::i;:::-;11613:7;:28;11657:33;;160:25:1;;;11680:1:0;;-1:-1:-1;;;;;11657:33:0;;;;;148:2:1;133:18;11657:33:0;;;;;;;11383:315;;:::o;2224:132::-;2282:7;2309:39;2313:1;2316;2309:39;;;;;;;;;;;;;;;;;:3;:39::i;1622:136::-;1680:7;1707:43;1711:1;1714;1707:43;;;;;;;;;;;;;;;;;:3;:43::i;17179:512::-;17269:16;;;17283:1;17269:16;;;;;;;;17245:21;;17269:16;;;;;;;;;;-1:-1:-1;17269:16:0;17245:40;;17314:4;17296;17301:1;17296:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17296:23:0;;;:7;;;;;;;;;;:23;;;;17340:15;;:22;;;-1:-1:-1;;;17340:22:0;;;;:15;;;;;:20;;:22;;;;;17296:7;;17340:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17330:4;17335:1;17330:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;17330:32:0;;;-1:-1:-1;;;;;17330:32:0;;;;;17377:11;17392:1;17377:16;17373:29;;17395:7;17179:512;:::o;17373:29::-;17444:15;;17412:62;;17429:4;;-1:-1:-1;;;;;17444:15:0;17462:11;17412:8;:62::i;:::-;17487:15;;:196;;-1:-1:-1;;;17487:196:0;;-1:-1:-1;;;;;17487:15:0;;;;:66;;:196;;17568:11;;17487:15;;17610:4;;17637;;17657:15;;17487:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17234:457;17179:512;:::o;1966:250::-;2024:7;2048:1;2053;2048:6;2044:47;;-1:-1:-1;2078:1:0;2071:8;;2044:47;2103:9;2115:5;2119:1;2115;:5;:::i;:::-;2103:17;-1:-1:-1;2148:1:0;2139:5;2143:1;2103:17;2139:5;:::i;:::-;:10;2131:56;;;;-1:-1:-1;;;2131:56:0;;10714:2:1;2131:56:0;;;10696:21:1;10753:2;10733:18;;;10726:30;10792:34;10772:18;;;10765:62;-1:-1:-1;;;10843:18:1;;;10836:31;10884:19;;2131:56:0;10512:397:1;18000:375:0;18113:15;;18081:62;;18098:4;;-1:-1:-1;;;;;18113:15:0;18131:11;18081:8;:62::i;:::-;18156:15;;18308:18;;18156:211;;-1:-1:-1;;;18156:211:0;;18230:4;18156:211;;;11255:34:1;11305:18;;;11298:34;;;18156:15:0;11348:18:1;;;11341:34;;;11391:18;;;11384:34;-1:-1:-1;;;;;18308:18:0;;;11434:19:1;;;11427:44;18341:15:0;11487:19:1;;;11480:35;18156:15:0;;;:31;;18196:9;;11189:19:1;;18156:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18000:375;;:::o;1766:192::-;1852:7;1888:12;1880:6;;;;1872:29;;;;-1:-1:-1;;;1872:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1912:9:0;1924:5;1928:1;1924;:5;:::i;2364:278::-;2450:7;2485:12;2478:5;2470:28;;;;-1:-1:-1;;;2470:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2509:9:0;2521:5;2525:1;2521;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2742:247::-;2801:6;2854:2;2842:9;2833:7;2829:23;2825:32;2822:52;;;2870:1;2867;2860:12;2822:52;2909:9;2896:23;2928:31;2953:5;2928:31;:::i;2994:383::-;3071:6;3079;3087;3140:2;3128:9;3119:7;3115:23;3111:32;3108:52;;;3156:1;3153;3146:12;3108:52;3195:9;3182:23;3214:31;3239:5;3214:31;:::i;:::-;3264:5;3316:2;3301:18;;3288:32;;-1:-1:-1;3367:2:1;3352:18;;;3339:32;;2994:383;-1:-1:-1;;;2994:383:1:o;3382:416::-;3447:6;3455;3508:2;3496:9;3487:7;3483:23;3479:32;3476:52;;;3524:1;3521;3514:12;3476:52;3563:9;3550:23;3582:31;3607:5;3582:31;:::i;:::-;3632:5;-1:-1:-1;3689:2:1;3674:18;;3661:32;3731:15;;3724:23;3712:36;;3702:64;;3762:1;3759;3752:12;3702:64;3785:7;3775:17;;;3382:416;;;;;:::o;3803:388::-;3871:6;3879;3932:2;3920:9;3911:7;3907:23;3903:32;3900:52;;;3948:1;3945;3938:12;3900:52;3987:9;3974:23;4006:31;4031:5;4006:31;:::i;:::-;4056:5;-1:-1:-1;4113:2:1;4098:18;;4085:32;4126:33;4085:32;4126:33;:::i;4196:127::-;4257:10;4252:3;4248:20;4245:1;4238:31;4288:4;4285:1;4278:15;4312:4;4309:1;4302:15;4328:128;4395:9;;;4416:11;;;4413:37;;;4430:18;;:::i;4461:125::-;4526:9;;;4547:10;;;4544:36;;;4560:18;;:::i;4591:356::-;4793:2;4775:21;;;4812:18;;;4805:30;4871:34;4866:2;4851:18;;4844:62;4938:2;4923:18;;4591:356::o;7387:405::-;7589:2;7571:21;;;7628:2;7608:18;;;7601:30;7667:34;7662:2;7647:18;;7640:62;-1:-1:-1;;;7733:2:1;7718:18;;7711:39;7782:3;7767:19;;7387:405::o;7797:408::-;7999:2;7981:21;;;8038:2;8018:18;;;8011:30;8077:34;8072:2;8057:18;;8050:62;-1:-1:-1;;;8143:2:1;8128:18;;8121:42;8195:3;8180:19;;7797:408::o;8210:217::-;8250:1;8276;8266:132;;8320:10;8315:3;8311:20;8308:1;8301:31;8355:4;8352:1;8345:15;8383:4;8380:1;8373:15;8266:132;-1:-1:-1;8412:9:1;;8210:217::o;8432:168::-;8505:9;;;8536;;8553:15;;;8547:22;;8533:37;8523:71;;8574:18;;:::i;9139:127::-;9200:10;9195:3;9191:20;9188:1;9181:31;9231:4;9228:1;9221:15;9255:4;9252:1;9245:15;9271:251;9341:6;9394:2;9382:9;9373:7;9369:23;9365:32;9362:52;;;9410:1;9407;9400:12;9362:52;9442:9;9436:16;9461:31;9486:5;9461:31;:::i;9527:980::-;9789:4;9837:3;9826:9;9822:19;9868:6;9857:9;9850:25;9894:2;9932:6;9927:2;9916:9;9912:18;9905:34;9975:3;9970:2;9959:9;9955:18;9948:31;9999:6;10034;10028:13;10065:6;10057;10050:22;10103:3;10092:9;10088:19;10081:26;;10142:2;10134:6;10130:15;10116:29;;10163:1;10173:195;10187:6;10184:1;10181:13;10173:195;;;10252:13;;-1:-1:-1;;;;;10248:39:1;10236:52;;10343:15;;;;10308:12;;;;10284:1;10202:9;10173:195;;;-1:-1:-1;;;;;;;10424:32:1;;;;10419:2;10404:18;;10397:60;-1:-1:-1;;;10488:3:1;10473:19;10466:35;10385:3;9527:980;-1:-1:-1;;;9527:980:1:o;11526:306::-;11614:6;11622;11630;11683:2;11671:9;11662:7;11658:23;11654:32;11651:52;;;11699:1;11696;11689:12;11651:52;11728:9;11722:16;11712:26;;11778:2;11767:9;11763:18;11757:25;11747:35;;11822:2;11811:9;11807:18;11801:25;11791:35;;11526:306;;;;;:::o

Swarm Source

ipfs://c10a663cb57bcec79b335a93aeb3172e6705c5088108d4ecbc32021513b838de
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.