ETH Price: $2,644.65 (-0.85%)

Token

Copy Capital V2 (CC)
 

Overview

Max Total Supply

1,000,000,000,000 CC

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,042,577,418.848937087 CC

Value
$0.00
0x8941351fb0a6Ef4E42552921B21eCE0160835D02
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:
CopyCapital

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-03
*/

/*  t.me/JesusERC
    Total tokens:  100,000,000
    Taxes: 12%
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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

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);
}

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;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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 transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

abstract contract IERC20Extented is IERC20 {
    function decimals() external view virtual returns (uint8);
    function name() external view virtual returns (string memory);
    function symbol() external view virtual returns (string memory);
}

contract CopyCapital is Context, IERC20, IERC20Extented, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Copy Capital V2";
    string private constant _symbol = "CC";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant _tTotal = 1000 * 1e9 * 1e9; // 1,000,000,000,000

    uint256 private _firstBlock;
    uint256 private _sniporBlocks;
    uint256 public _maxWalletAmount;

    // fees
    uint256 public _liquidityFee = 20; // divided by 1000
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 public _marketingFee = 100; // divided by 1000
    uint256 private _previousMarketingFee = _marketingFee;
    
    uint256 private _marketingPercent = 1000;
    

    struct FeeBreakdown {
        uint256 tLiquidity;
        uint256 tMarketing;
        uint256 tAmount;
    }

    mapping(address => bool) private snipors;
    address payable private _marketingAddress = payable(0x81CAd79E9A7Fdd1ccd7b872301840e8016d2a35f);
    
    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    uint256 private _maxTxAmount;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private trdg = true;
    bool private pairSwapped = false;

    event EndedTrdg(bool trdg);
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event FeesUpdated(uint256 _marketingFee, uint256 _liquidityFee);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);
        _maxTxAmount = _tTotal; // start off transaction limit at 100% of total supply
        _maxWalletAmount = _tTotal.div(1); // 100%
        
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() override external pure returns (string memory) {
        return _name;
    }

    function symbol() override external pure returns (string memory) {
        return _symbol;
    }

    function decimals() override external pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() external pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) external view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function removeAllFee() private {
        if (_marketingFee == 0 && _liquidityFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;

        _marketingFee = 0;
        _liquidityFee = 0;
    }

    function setSniporFee() private {
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;
        
        _marketingFee = 1000;
        _liquidityFee = 0;
    }
    
    function restoreAllFee() private {
        _marketingFee = _previousMarketingFee;
        _liquidityFee = _previousLiquidityFee;
    }

    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");

        bool takeFee = true;

        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {
            require(tradingOpen);
            require(amount <= _maxTxAmount);

            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {//buys

                if (block.number <= _firstBlock.add(_sniporBlocks)) {
                    snipors[to] = true;
                }             
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "wallet balance after transfer must be less than max wallet amount");

                if (snipors[to]) {
                    setSniporFee();
                    takeFee = true;
                }
            }
            
            if (!inSwap && from != uniswapV2Pair) { //sells, transfers
                require(!snipors[from] && !snipors[to]);

                uint256 contractTokenBalance = balanceOf(address(this));

                if (contractTokenBalance > 1000000000 * 1e9) {
                    swapAndLiquify(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                    
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from, to, amount, takeFee);
        restoreAllFee();
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
              address(this),
              tokenAmount,
              0, // slippage is unavoidable
              0, // slippage is unavoidable
              owner(),
              block.timestamp
          );
    }
  
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 autoLPamount = _liquidityFee.mul(contractTokenBalance).div(_marketingFee.add(_liquidityFee));

        // split the contract balance into halves
        uint256 half =  autoLPamount.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(otherHalf); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = ((address(this).balance.sub(initialBalance)).mul(half)).div(otherHalf);

        addLiquidity(half, newBalance);
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
        
    }

    function openTrading(uint256 sniporBlocks) private {
        _firstBlock = block.number;
        _sniporBlocks = sniporBlocks;
        tradingOpen = true;
    }

    function manualSwap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance > 0) {
            swapTokensForEth(contractBalance);
        }
    }

    function manualSend() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(contractETHBalance);
        }
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) { 
                removeAllFee();
        }
        _transferStandard(sender, recipient, amount);
        restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 amount) private {
        FeeBreakdown memory fees;
        fees.tMarketing = amount.mul(_marketingFee).div(1000);
        fees.tLiquidity = amount.mul(_liquidityFee).div(1000);
        
        fees.tAmount = amount.sub(fees.tMarketing).sub(fees.tLiquidity);
        
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(fees.tAmount);
        _balances[address(this)] = _balances[address(this)].add(fees.tMarketing.add(fees.tLiquidity));
        
        emit Transfer(sender, recipient, fees.tAmount);
    }
    
    receive() external payable {}
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount > _tTotal.div(10000), "Amount must be greater than 0.01% of supply");
        require(maxTxAmount <= _tTotal, "Amount must be less than or equal to totalSupply");
        _maxTxAmount = maxTxAmount;
        emit MaxTxAmountUpdated(_maxTxAmount);
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner() {
        require(maxWalletAmount > _tTotal.div(200), "Amount must be greater than 0.5% of supply");
        require(maxWalletAmount <= _tTotal, "Amount must be less than or equal to totalSupply");
        _maxWalletAmount = maxWalletAmount;
    }

    function setTaxes(uint256 marketingFee, uint256 liquidityFee) external onlyOwner() {
        uint256 totalFee = marketingFee.add(liquidityFee);
        require(totalFee.div(10) < 50, "Sum of fees must be less than 50");

        _marketingFee = marketingFee;
        _liquidityFee = liquidityFee;
        
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;
        
        uint256 totalETHfees = _marketingFee;
        
        _marketingPercent = (_marketingFee.mul(1000)).div(totalETHfees);
        
        emit FeesUpdated(_marketingFee, _liquidityFee);   
    }

    function endTrdg(uint256 sniporBlocks) external onlyOwner() {
        require(trdg == true, "done");
        trdg = false;
        openTrading(sniporBlocks);
        emit EndedTrdg(trdg);
    }
}

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":"bool","name":"trdg","type":"bool"}],"name":"EndedTrdg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":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":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"sniporBlocks","type":"uint256"}],"name":"endTrdg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setTaxes","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":"pure","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"},{"stateMutability":"payable","type":"receive"}]

6080604052601460088190556009556064600a819055600b556103e8600c55600e80546001600160a01b0319167381cad79e9a7fdd1ccd7b872301840e8016d2a35f1790556012805463ffffffff1916620100001790553480156200006357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155620000e43082683635c9adc5dea0000062000381565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014991906200053a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bd91906200053a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200020b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023191906200053a565b601080546001600160a01b0319166001600160a01b03928316908117909155600f5460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af115801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000565565b50683635c9adc5dea00000601181905550620002f46001683635c9adc5dea00000620004ad60201b620009991790919060201c565b600755336000818152600260209081526040808320683635c9adc5dea000009081905583546001600160a01b03168452600483528184208054600160ff1991821681179092553086528386208054909116909117905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000604565b6001600160a01b038316620003e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200044c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620003e0565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000620004f783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004fe60201b60201c565b9392505050565b60008183620005225760405162461bcd60e51b8152600401620003e0919062000589565b506000620005318486620005e1565b95945050505050565b6000602082840312156200054d57600080fd5b81516001600160a01b0381168114620004f757600080fd5b6000602082840312156200057857600080fd5b81518015158114620004f757600080fd5b600060208083528351808285015260005b81811015620005b8578581018301518582016040015282016200059a565b81811115620005cb576000604083870101525b50601f01601f1916929092016040019392505050565b600082620005ff57634e487b7160e01b600052601260045260246000fd5b500490565b61197980620006146000396000f3fe60806040526004361061012e5760003560e01c80636bc87c3a116100ab578063a9059cbb1161006f578063a9059cbb14610366578063c647b20e14610386578063dd62ed3e146103a6578063ec28438a146103ec578063f2fde38b1461040c578063f42938901461042c57600080fd5b80636bc87c3a146102bb5780636c0a24eb146102d157806370a08231146102e75780638da5cb5b1461031d57806395d89b411461033b57600080fd5b806327a14fc2116100f257806327a14fc214610210578063313ce5671461023257806349bd5a5e1461024e57806351bc3c85146102865780635d12d79d1461029b57600080fd5b806306fdde031461013a578063095ea7b31461018457806318160ddd146101b457806322976e0d146101da57806323b872dd146101f057600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5060408051808201909152600f81526e21b7b83c9021b0b834ba30b6102b1960891b60208201525b60405161017b91906115d6565b60405180910390f35b34801561019057600080fd5b506101a461019f366004611640565b610441565b604051901515815260200161017b565b3480156101c057600080fd5b50683635c9adc5dea000005b60405190815260200161017b565b3480156101e657600080fd5b506101cc600a5481565b3480156101fc57600080fd5b506101a461020b36600461166c565b610458565b34801561021c57600080fd5b5061023061022b3660046116ad565b6104c1565b005b34801561023e57600080fd5b506040516009815260200161017b565b34801561025a57600080fd5b5060105461026e906001600160a01b031681565b6040516001600160a01b03909116815260200161017b565b34801561029257600080fd5b50610230610597565b3480156102a757600080fd5b506102306102b63660046116ad565b6105e3565b3480156102c757600080fd5b506101cc60085481565b3480156102dd57600080fd5b506101cc60075481565b3480156102f357600080fd5b506101cc6103023660046116c6565b6001600160a01b031660009081526002602052604090205490565b34801561032957600080fd5b506000546001600160a01b031661026e565b34801561034757600080fd5b50604080518082019091526002815261434360f01b602082015261016e565b34801561037257600080fd5b506101a4610381366004611640565b6106b0565b34801561039257600080fd5b506102306103a13660046116e3565b6106bd565b3480156103b257600080fd5b506101cc6103c1366004611705565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156103f857600080fd5b506102306104073660046116ad565b6107c8565b34801561041857600080fd5b506102306104273660046116c6565b6108c7565b34801561043857600080fd5b5061023061095f565b600061044e3384846109e2565b5060015b92915050565b6000610465848484610b06565b6104b784336104b28560405180606001604052806028815260200161191c602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610f30565b6109e2565b5060019392505050565b6000546001600160a01b031633146104f45760405162461bcd60e51b81526004016104eb9061173e565b60405180910390fd5b610508683635c9adc5dea0000060c8610999565b81116105695760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b60648201526084016104eb565b683635c9adc5dea000008111156105925760405162461bcd60e51b81526004016104eb90611773565b600755565b6000546001600160a01b031633146105c15760405162461bcd60e51b81526004016104eb9061173e565b3060009081526002602052604090205480156105e0576105e081610f6a565b50565b6000546001600160a01b0316331461060d5760405162461bcd60e51b81526004016104eb9061173e565b60125462010000900460ff1615156001146106535760405162461bcd60e51b81526004016104eb90602080825260049082015263646f6e6560e01b604082015260600190565b6012805443600555600683905562ff00ff191660011790556012546040516201000090910460ff16151581527fbbd2154e443da58493f520fb1a0b04614579664458bbef399ac6a4021c401c17906020015b60405180910390a150565b600061044e338484610b06565b6000546001600160a01b031633146106e75760405162461bcd60e51b81526004016104eb9061173e565b60006106f383836110de565b9050603261070282600a610999565b1061074f5760405162461bcd60e51b815260206004820181905260248201527f53756d206f662066656573206d757374206265206c657373207468616e20353060448201526064016104eb565b600a8390556008829055600b83905560098290558261077a81610774816103e861113d565b90610999565b600c55600a546008546040517f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1926107ba92908252602082015260400190565b60405180910390a150505050565b6000546001600160a01b031633146107f25760405162461bcd60e51b81526004016104eb9061173e565b610807683635c9adc5dea00000612710610999565b81116108695760405162461bcd60e51b815260206004820152602b60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e303160448201526a25206f6620737570706c7960a81b60648201526084016104eb565b683635c9adc5dea000008111156108925760405162461bcd60e51b81526004016104eb90611773565b60118190556040518181527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf906020016106a5565b6000546001600160a01b031633146108f15760405162461bcd60e51b81526004016104eb9061173e565b6001600160a01b0381166109565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104eb565b6105e0816111bc565b6000546001600160a01b031633146109895760405162461bcd60e51b81526004016104eb9061173e565b4780156105e0576105e08161120c565b60006109db83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061124a565b9392505050565b6001600160a01b038316610a445760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104eb565b6001600160a01b038216610aa55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104eb565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b6a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104eb565b6001600160a01b038216610bcc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104eb565b60008111610c2e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104eb565b6001610c426000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610c7157506000546001600160a01b03848116911614155b8015610c8657506001600160a01b0384163014155b8015610c9b57506001600160a01b0383163014155b15610ec55760125460ff16610caf57600080fd5b601154821115610cbe57600080fd5b6010546001600160a01b038581169116148015610ce95750600f546001600160a01b03848116911614155b15610e1357600654600554610cfd916110de565b4311610d27576001600160a01b0383166000908152600d60205260409020805460ff191660011790555b600754610d5383610d4d866001600160a01b031660009081526002602052604090205490565b906110de565b1115610dd15760405162461bcd60e51b815260206004820152604160248201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560448201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6064820152601d60fa1b608482015260a4016104eb565b6001600160a01b0383166000908152600d602052604090205460ff1615610e1357610e0f600a8054600b55600880546009556103e890915560009055565b5060015b601254610100900460ff16158015610e3957506010546001600160a01b03858116911614155b15610ec5576001600160a01b0384166000908152600d602052604090205460ff16158015610e8057506001600160a01b0383166000908152600d602052604090205460ff16155b610e8957600080fd5b30600090815260026020526040902054670de0b6b3a7640000811115610eb257610eb281611278565b478015610ec257610ec24761120c565b50505b6001600160a01b03841660009081526004602052604090205460ff1680610f0457506001600160a01b03831660009081526004602052604090205460ff165b15610f0d575060005b610f19848484846112f9565b610f2a600b54600a55600954600855565b50505050565b60008184841115610f545760405162461bcd60e51b81526004016104eb91906115d6565b506000610f6184866117d9565b95945050505050565b6012805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610fae57610fae6117f0565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102b9190611806565b8160018151811061103e5761103e6117f0565b6001600160a01b039283166020918202929092010152600f5461106491309116846109e2565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061109d908590600090869030904290600401611823565b600060405180830381600087803b1580156110b757600080fd5b505af11580156110cb573d6000803e3d6000fd5b50506012805461ff001916905550505050565b6000806110eb8385611894565b9050838110156109db5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104eb565b60008261114c57506000610452565b600061115883856118ac565b90508261116585836118cb565b146109db5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104eb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611246573d6000803e3d6000fd5b5050565b6000818361126b5760405162461bcd60e51b81526004016104eb91906115d6565b506000610f6184866118cb565b6012805461ff001916610100179055600854600a546000916112aa9161129d916110de565b600854610774908561113d565b905060006112b9826002610999565b905060006112c78483611311565b9050476112d382610f6a565b60006112ed83610774866112e74787611311565b9061113d565b90506110cb8482611353565b8061130657611306611428565b610f19848484611456565b60006109db83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f30565b600f5461136b9030906001600160a01b0316846109e2565b600f546001600160a01b031663f305d7198230856000806113946000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156113fc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061142191906118ed565b5050505050565b600a541580156114385750600854155b1561143f57565b600a8054600b556008805460095560009182905555565b61147a60405180606001604052806000815260200160008152602001600081525090565b6114956103e8610774600a548561113d90919063ffffffff16565b60208201526008546114b0906103e89061077490859061113d565b80825260208201516114ce91906114c8908590611311565b90611311565b6040808301919091526001600160a01b0385166000908152600260205220546114f79083611311565b6001600160a01b0380861660009081526002602052604080822093909355838301519186168152919091205461152c916110de565b6001600160a01b0384166000908152600260209081526040909120919091558151908201516115759161155f91906110de565b30600090815260026020526040902054906110de565b30600090815260026020908152604091829020929092558281015190519081526001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600060208083528351808285015260005b81811015611603578581018301518582016040015282016115e7565b81811115611615576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146105e057600080fd5b6000806040838503121561165357600080fd5b823561165e8161162b565b946020939093013593505050565b60008060006060848603121561168157600080fd5b833561168c8161162b565b9250602084013561169c8161162b565b929592945050506040919091013590565b6000602082840312156116bf57600080fd5b5035919050565b6000602082840312156116d857600080fd5b81356109db8161162b565b600080604083850312156116f657600080fd5b50508035926020909101359150565b6000806040838503121561171857600080fd5b82356117238161162b565b915060208301356117338161162b565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160408201526f6c20746f20746f74616c537570706c7960801b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000828210156117eb576117eb6117c3565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561181857600080fd5b81516109db8161162b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118735784516001600160a01b03168352938301939183019160010161184e565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156118a7576118a76117c3565b500190565b60008160001904831182151516156118c6576118c66117c3565b500290565b6000826118e857634e487b7160e01b600052601260045260246000fd5b500490565b60008060006060848603121561190257600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220648e3471ebe4c2820c8483b40fe5d57fbe1beaa5b125564d41ab19d251ce616264736f6c634300080c0033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c80636bc87c3a116100ab578063a9059cbb1161006f578063a9059cbb14610366578063c647b20e14610386578063dd62ed3e146103a6578063ec28438a146103ec578063f2fde38b1461040c578063f42938901461042c57600080fd5b80636bc87c3a146102bb5780636c0a24eb146102d157806370a08231146102e75780638da5cb5b1461031d57806395d89b411461033b57600080fd5b806327a14fc2116100f257806327a14fc214610210578063313ce5671461023257806349bd5a5e1461024e57806351bc3c85146102865780635d12d79d1461029b57600080fd5b806306fdde031461013a578063095ea7b31461018457806318160ddd146101b457806322976e0d146101da57806323b872dd146101f057600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5060408051808201909152600f81526e21b7b83c9021b0b834ba30b6102b1960891b60208201525b60405161017b91906115d6565b60405180910390f35b34801561019057600080fd5b506101a461019f366004611640565b610441565b604051901515815260200161017b565b3480156101c057600080fd5b50683635c9adc5dea000005b60405190815260200161017b565b3480156101e657600080fd5b506101cc600a5481565b3480156101fc57600080fd5b506101a461020b36600461166c565b610458565b34801561021c57600080fd5b5061023061022b3660046116ad565b6104c1565b005b34801561023e57600080fd5b506040516009815260200161017b565b34801561025a57600080fd5b5060105461026e906001600160a01b031681565b6040516001600160a01b03909116815260200161017b565b34801561029257600080fd5b50610230610597565b3480156102a757600080fd5b506102306102b63660046116ad565b6105e3565b3480156102c757600080fd5b506101cc60085481565b3480156102dd57600080fd5b506101cc60075481565b3480156102f357600080fd5b506101cc6103023660046116c6565b6001600160a01b031660009081526002602052604090205490565b34801561032957600080fd5b506000546001600160a01b031661026e565b34801561034757600080fd5b50604080518082019091526002815261434360f01b602082015261016e565b34801561037257600080fd5b506101a4610381366004611640565b6106b0565b34801561039257600080fd5b506102306103a13660046116e3565b6106bd565b3480156103b257600080fd5b506101cc6103c1366004611705565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156103f857600080fd5b506102306104073660046116ad565b6107c8565b34801561041857600080fd5b506102306104273660046116c6565b6108c7565b34801561043857600080fd5b5061023061095f565b600061044e3384846109e2565b5060015b92915050565b6000610465848484610b06565b6104b784336104b28560405180606001604052806028815260200161191c602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610f30565b6109e2565b5060019392505050565b6000546001600160a01b031633146104f45760405162461bcd60e51b81526004016104eb9061173e565b60405180910390fd5b610508683635c9adc5dea0000060c8610999565b81116105695760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b60648201526084016104eb565b683635c9adc5dea000008111156105925760405162461bcd60e51b81526004016104eb90611773565b600755565b6000546001600160a01b031633146105c15760405162461bcd60e51b81526004016104eb9061173e565b3060009081526002602052604090205480156105e0576105e081610f6a565b50565b6000546001600160a01b0316331461060d5760405162461bcd60e51b81526004016104eb9061173e565b60125462010000900460ff1615156001146106535760405162461bcd60e51b81526004016104eb90602080825260049082015263646f6e6560e01b604082015260600190565b6012805443600555600683905562ff00ff191660011790556012546040516201000090910460ff16151581527fbbd2154e443da58493f520fb1a0b04614579664458bbef399ac6a4021c401c17906020015b60405180910390a150565b600061044e338484610b06565b6000546001600160a01b031633146106e75760405162461bcd60e51b81526004016104eb9061173e565b60006106f383836110de565b9050603261070282600a610999565b1061074f5760405162461bcd60e51b815260206004820181905260248201527f53756d206f662066656573206d757374206265206c657373207468616e20353060448201526064016104eb565b600a8390556008829055600b83905560098290558261077a81610774816103e861113d565b90610999565b600c55600a546008546040517f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1926107ba92908252602082015260400190565b60405180910390a150505050565b6000546001600160a01b031633146107f25760405162461bcd60e51b81526004016104eb9061173e565b610807683635c9adc5dea00000612710610999565b81116108695760405162461bcd60e51b815260206004820152602b60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e303160448201526a25206f6620737570706c7960a81b60648201526084016104eb565b683635c9adc5dea000008111156108925760405162461bcd60e51b81526004016104eb90611773565b60118190556040518181527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf906020016106a5565b6000546001600160a01b031633146108f15760405162461bcd60e51b81526004016104eb9061173e565b6001600160a01b0381166109565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104eb565b6105e0816111bc565b6000546001600160a01b031633146109895760405162461bcd60e51b81526004016104eb9061173e565b4780156105e0576105e08161120c565b60006109db83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061124a565b9392505050565b6001600160a01b038316610a445760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104eb565b6001600160a01b038216610aa55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104eb565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b6a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104eb565b6001600160a01b038216610bcc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104eb565b60008111610c2e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104eb565b6001610c426000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610c7157506000546001600160a01b03848116911614155b8015610c8657506001600160a01b0384163014155b8015610c9b57506001600160a01b0383163014155b15610ec55760125460ff16610caf57600080fd5b601154821115610cbe57600080fd5b6010546001600160a01b038581169116148015610ce95750600f546001600160a01b03848116911614155b15610e1357600654600554610cfd916110de565b4311610d27576001600160a01b0383166000908152600d60205260409020805460ff191660011790555b600754610d5383610d4d866001600160a01b031660009081526002602052604090205490565b906110de565b1115610dd15760405162461bcd60e51b815260206004820152604160248201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560448201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6064820152601d60fa1b608482015260a4016104eb565b6001600160a01b0383166000908152600d602052604090205460ff1615610e1357610e0f600a8054600b55600880546009556103e890915560009055565b5060015b601254610100900460ff16158015610e3957506010546001600160a01b03858116911614155b15610ec5576001600160a01b0384166000908152600d602052604090205460ff16158015610e8057506001600160a01b0383166000908152600d602052604090205460ff16155b610e8957600080fd5b30600090815260026020526040902054670de0b6b3a7640000811115610eb257610eb281611278565b478015610ec257610ec24761120c565b50505b6001600160a01b03841660009081526004602052604090205460ff1680610f0457506001600160a01b03831660009081526004602052604090205460ff165b15610f0d575060005b610f19848484846112f9565b610f2a600b54600a55600954600855565b50505050565b60008184841115610f545760405162461bcd60e51b81526004016104eb91906115d6565b506000610f6184866117d9565b95945050505050565b6012805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610fae57610fae6117f0565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102b9190611806565b8160018151811061103e5761103e6117f0565b6001600160a01b039283166020918202929092010152600f5461106491309116846109e2565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061109d908590600090869030904290600401611823565b600060405180830381600087803b1580156110b757600080fd5b505af11580156110cb573d6000803e3d6000fd5b50506012805461ff001916905550505050565b6000806110eb8385611894565b9050838110156109db5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104eb565b60008261114c57506000610452565b600061115883856118ac565b90508261116585836118cb565b146109db5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104eb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611246573d6000803e3d6000fd5b5050565b6000818361126b5760405162461bcd60e51b81526004016104eb91906115d6565b506000610f6184866118cb565b6012805461ff001916610100179055600854600a546000916112aa9161129d916110de565b600854610774908561113d565b905060006112b9826002610999565b905060006112c78483611311565b9050476112d382610f6a565b60006112ed83610774866112e74787611311565b9061113d565b90506110cb8482611353565b8061130657611306611428565b610f19848484611456565b60006109db83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f30565b600f5461136b9030906001600160a01b0316846109e2565b600f546001600160a01b031663f305d7198230856000806113946000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156113fc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061142191906118ed565b5050505050565b600a541580156114385750600854155b1561143f57565b600a8054600b556008805460095560009182905555565b61147a60405180606001604052806000815260200160008152602001600081525090565b6114956103e8610774600a548561113d90919063ffffffff16565b60208201526008546114b0906103e89061077490859061113d565b80825260208201516114ce91906114c8908590611311565b90611311565b6040808301919091526001600160a01b0385166000908152600260205220546114f79083611311565b6001600160a01b0380861660009081526002602052604080822093909355838301519186168152919091205461152c916110de565b6001600160a01b0384166000908152600260209081526040909120919091558151908201516115759161155f91906110de565b30600090815260026020526040902054906110de565b30600090815260026020908152604091829020929092558281015190519081526001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600060208083528351808285015260005b81811015611603578581018301518582016040015282016115e7565b81811115611615576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146105e057600080fd5b6000806040838503121561165357600080fd5b823561165e8161162b565b946020939093013593505050565b60008060006060848603121561168157600080fd5b833561168c8161162b565b9250602084013561169c8161162b565b929592945050506040919091013590565b6000602082840312156116bf57600080fd5b5035919050565b6000602082840312156116d857600080fd5b81356109db8161162b565b600080604083850312156116f657600080fd5b50508035926020909101359150565b6000806040838503121561171857600080fd5b82356117238161162b565b915060208301356117338161162b565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160408201526f6c20746f20746f74616c537570706c7960801b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000828210156117eb576117eb6117c3565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561181857600080fd5b81516109db8161162b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118735784516001600160a01b03168352938301939183019160010161184e565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156118a7576118a76117c3565b500190565b60008160001904831182151516156118c6576118c66117c3565b500290565b6000826118e857634e487b7160e01b600052601260045260246000fd5b500490565b60008060006060848603121561190257600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220648e3471ebe4c2820c8483b40fe5d57fbe1beaa5b125564d41ab19d251ce616264736f6c634300080c0033

Deployed Bytecode Sourcemap

7344:11863:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9889:94;;;;;;;;;;-1:-1:-1;9970:5:0;;;;;;;;;;;;-1:-1:-1;;;9970:5:0;;;;9889:94;;;;;;;:::i;:::-;;;;;;;;10765:163;;;;;;;;;;-1:-1:-1;10765:163:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;10765:163:0;1072:187:1;10199:97:0;;;;;;;;;;-1:-1:-1;7814:16:0;10199:97;;;1410:25:1;;;1398:2;1383:18;10199:97:0;1264:177:1;8102:34:0;;;;;;;;;;;;;;;;10936:312;;;;;;;;;;-1:-1:-1;10936:312:0;;;;;:::i;:::-;;:::i;18040:325::-;;;;;;;;;;-1:-1:-1;18040:325:0;;;;;:::i;:::-;;:::i;:::-;;10097:94;;;;;;;;;;-1:-1:-1;10097:94:0;;7585:1;2234:36:1;;2222:2;2207:18;10097:94:0;2092:184:1;8607:28:0;;;;;;;;;;-1:-1:-1;8607:28:0;;;;-1:-1:-1;;;;;8607:28:0;;;;;;-1:-1:-1;;;;;2445:32:1;;;2427:51;;2415:2;2400:18;8607:28:0;2281:203:1;16277:207:0;;;;;;;;;;;;;:::i;19006:198::-;;;;;;;;;;-1:-1:-1;19006:198:0;;;;;:::i;:::-;;:::i;7983:33::-;;;;;;;;;;;;;;;;7930:31;;;;;;;;;;;;;;;;10304:119;;;;;;;;;;-1:-1:-1;10304:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;10397:18:0;10370:7;10397:18;;;:9;:18;;;;;;;10304:119;2447:79;;;;;;;;;;-1:-1:-1;2485:7:0;2512:6;-1:-1:-1;;;;;2512:6:0;2447:79;;9991:98;;;;;;;;;;-1:-1:-1;10074:7:0;;;;;;;;;;;;-1:-1:-1;;;10074:7:0;;;;9991:98;;10435:169;;;;;;;;;;-1:-1:-1;10435:169:0;;;;;:::i;:::-;;:::i;18373:625::-;;;;;;;;;;-1:-1:-1;18373:625:0;;;;;:::i;:::-;;:::i;10612:145::-;;;;;;;;;;-1:-1:-1;10612:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;10722:18:0;;;10695:7;10722:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10612:145;17680:352;;;;;;;;;;-1:-1:-1;17680:352:0;;;;;:::i;:::-;;:::i;2665:201::-;;;;;;;;;;-1:-1:-1;2665:201:0;;;;;:::i;:::-;;:::i;16492:209::-;;;;;;;;;;;;;:::i;10765:163::-;10842:4;10859:39;248:10;10882:7;10891:6;10859:8;:39::i;:::-;-1:-1:-1;10916:4:0;10765:163;;;;;:::o;10936:312::-;11036:4;11053:36;11063:6;11071:9;11082:6;11053:9;:36::i;:::-;11100:118;11109:6;248:10;11129:88;11167:6;11129:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11129:19:0;;;;;;:11;:19;;;;;;;;248:10;11129:33;;;;;;;;;;:37;:88::i;:::-;11100:8;:118::i;:::-;-1:-1:-1;11236:4:0;10936:312;;;;;:::o;18040:325::-;2574:6;;-1:-1:-1;;;;;2574:6:0;248:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;;;;;;;;;18151:16:::1;7814;18163:3;18151:11;:16::i;:::-;18133:15;:34;18125:89;;;::::0;-1:-1:-1;;;18125:89:0;;3950:2:1;18125:89:0::1;::::0;::::1;3932:21:1::0;3989:2;3969:18;;;3962:30;4028:34;4008:18;;;4001:62;-1:-1:-1;;;4079:18:1;;;4072:40;4129:19;;18125:89:0::1;3748:406:1::0;18125:89:0::1;7814:16;18233:15;:26;;18225:87;;;;-1:-1:-1::0;;;18225:87:0::1;;;;;;;:::i;:::-;18323:16;:34:::0;18040:325::o;16277:207::-;2574:6;;-1:-1:-1;;;;;2574:6:0;248:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;16375:4:::1;16331:23;10397:18:::0;;;:9;:18;;;;;;16396:19;;16392:85:::1;;16432:33;16449:15;16432:16;:33::i;:::-;16320:164;16277:207::o:0;19006:198::-;2574:6;;-1:-1:-1;;;;;2574:6:0;248:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;19085:4:::1;::::0;;;::::1;;;:12;;19093:4;19085:12;19077:29;;;;-1:-1:-1::0;;;19077:29:0::1;;;;;;4778:2:1::0;4760:21;;;4817:1;4797:18;;;4790:29;-1:-1:-1;;;4850:2:1;4835:18;;4828:34;4894:2;4879:18;;4576:327;19077:29:0::1;19117:4;:12:::0;;16181;16167:11;:26;16204:13;:28;;;-1:-1:-1;;16243:18:0;-1:-1:-1;16243:18:0;;;19191:4:::1;::::0;19181:15:::1;::::0;19191:4;;;::::1;;;1237:14:1::0;1230:22;1212:41;;19181:15:0::1;::::0;1200:2:1;1185:18;19181:15:0::1;;;;;;;;19006:198:::0;:::o;10435:169::-;10515:4;10532:42;248:10;10556:9;10567:6;10532:9;:42::i;18373:625::-;2574:6;;-1:-1:-1;;;;;2574:6:0;248:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;18467:16:::1;18486:30;:12:::0;18503;18486:16:::1;:30::i;:::-;18467:49:::0;-1:-1:-1;18554:2:0::1;18535:16;18467:49:::0;18548:2:::1;18535:12;:16::i;:::-;:21;18527:66;;;::::0;-1:-1:-1;;;18527:66:0;;5110:2:1;18527:66:0::1;::::0;::::1;5092:21:1::0;;;5129:18;;;5122:30;5188:34;5168:18;;;5161:62;5240:18;;18527:66:0::1;4908:356:1::0;18527:66:0::1;18606:13;:28:::0;;;18645:13:::1;:28:::0;;;18694:21:::1;:37:::0;;;18742:21:::1;:37:::0;;;18622:12;18877:43:::1;18622:12:::0;18878:23:::1;18622:12:::0;18896:4:::1;18878:17;:23::i;:::-;18877:29:::0;::::1;:43::i;:::-;18857:17;:63:::0;18958:13:::1;::::0;18973::::1;::::0;18946:41:::1;::::0;::::1;::::0;::::1;::::0;18958:13;5443:25:1;;5499:2;5484:18;;5477:34;5431:2;5416:18;;5269:248;18946:41:0::1;;;;;;;;18456:542;;18373:625:::0;;:::o;17680:352::-;2574:6;;-1:-1:-1;;;;;2574:6:0;248:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;17779:18:::1;7814:16;17791:5;17779:11;:18::i;:::-;17765:11;:32;17757:88;;;::::0;-1:-1:-1;;;17757:88:0;;5724:2:1;17757:88:0::1;::::0;::::1;5706:21:1::0;5763:2;5743:18;;;5736:30;5802:34;5782:18;;;5775:62;-1:-1:-1;;;5853:18:1;;;5846:41;5904:19;;17757:88:0::1;5522:407:1::0;17757:88:0::1;7814:16;17864:11;:22;;17856:83;;;;-1:-1:-1::0;;;17856:83:0::1;;;;;;;:::i;:::-;17950:12;:26:::0;;;17992:32:::1;::::0;1410:25:1;;;17992:32:0::1;::::0;1398:2:1;1383:18;17992:32:0::1;1264:177:1::0;2665:201:0;2574:6;;-1:-1:-1;;;;;2574:6:0;248:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2754:22:0;::::1;2746:73;;;::::0;-1:-1:-1;;;2746:73:0;;6136:2:1;2746:73:0::1;::::0;::::1;6118:21:1::0;6175:2;6155:18;;;6148:30;6214:34;6194:18;;;6187:62;-1:-1:-1;;;6265:18:1;;;6258:36;6311:19;;2746:73:0::1;5934:402:1::0;2746:73:0::1;2830:28;2849:8;2830:18;:28::i;16492:209::-:0;2574:6;;-1:-1:-1;;;;;2574:6:0;248:10;2574:22;2566:67;;;;-1:-1:-1;;;2566:67:0;;;;;;;:::i;:::-;16575:21:::1;16611:22:::0;;16607:87:::1;;16650:32;16663:18;16650:12;:32::i;1757:132::-:0;1815:7;1842:39;1846:1;1849;1842:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1835:46;1757:132;-1:-1:-1;;;1757:132:0:o;11883:335::-;-1:-1:-1;;;;;11976:19:0;;11968:68;;;;-1:-1:-1;;;11968:68:0;;6543:2:1;11968:68:0;;;6525:21:1;6582:2;6562:18;;;6555:30;6621:34;6601:18;;;6594:62;-1:-1:-1;;;6672:18:1;;;6665:34;6716:19;;11968:68:0;6341:400:1;11968:68:0;-1:-1:-1;;;;;12055:21:0;;12047:68;;;;-1:-1:-1;;;12047:68:0;;6948:2:1;12047:68:0;;;6930:21:1;6987:2;6967:18;;;6960:30;7026:34;7006:18;;;6999:62;-1:-1:-1;;;7077:18:1;;;7070:32;7119:19;;12047:68:0;6746:398:1;12047:68:0;-1:-1:-1;;;;;12126:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12178:32;;1410:25:1;;;12178:32:0;;1383:18:1;12178:32:0;;;;;;;11883:335;;;:::o;12230:1839::-;-1:-1:-1;;;;;12318:18:0;;12310:68;;;;-1:-1:-1;;;12310:68:0;;7351:2:1;12310:68:0;;;7333:21:1;7390:2;7370:18;;;7363:30;7429:34;7409:18;;;7402:62;-1:-1:-1;;;7480:18:1;;;7473:35;7525:19;;12310:68:0;7149:401:1;12310:68:0;-1:-1:-1;;;;;12397:16:0;;12389:64;;;;-1:-1:-1;;;12389:64:0;;7757:2:1;12389:64:0;;;7739:21:1;7796:2;7776:18;;;7769:30;7835:34;7815:18;;;7808:62;-1:-1:-1;;;7886:18:1;;;7879:33;7929:19;;12389:64:0;7555:399:1;12389:64:0;12481:1;12472:6;:10;12464:64;;;;-1:-1:-1;;;12464:64:0;;8161:2:1;12464:64:0;;;8143:21:1;8200:2;8180:18;;;8173:30;8239:34;8219:18;;;8212:62;-1:-1:-1;;;8290:18:1;;;8283:39;8339:19;;12464:64:0;7959:405:1;12464:64:0;12556:4;12585:7;2485;2512:6;-1:-1:-1;;;;;2512:6:0;;2447:79;12585:7;-1:-1:-1;;;;;12577:15:0;:4;-1:-1:-1;;;;;12577:15:0;;;:32;;;;-1:-1:-1;2485:7:0;2512:6;-1:-1:-1;;;;;12596:13:0;;;2512:6;;12596:13;;12577:32;:57;;;;-1:-1:-1;;;;;;12613:21:0;;12629:4;12613:21;;12577:57;:80;;;;-1:-1:-1;;;;;;12638:19:0;;12652:4;12638:19;;12577:80;12573:1291;;;12682:11;;;;12674:20;;;;;;12727:12;;12717:6;:22;;12709:31;;;;;;12769:13;;-1:-1:-1;;;;;12761:21:0;;;12769:13;;12761:21;:55;;;;-1:-1:-1;12800:15:0;;-1:-1:-1;;;;;12786:30:0;;;12800:15;;12786:30;;12761:55;12757:502;;;12881:13;;12865:11;;:30;;:15;:30::i;:::-;12849:12;:46;12845:113;;-1:-1:-1;;;;;12920:11:0;;;;;;:7;:11;;;;;:18;;-1:-1:-1;;12920:18:0;12934:4;12920:18;;;12845:113;13026:16;;12997:25;13015:6;12997:13;13007:2;-1:-1:-1;;;;;10397:18:0;10370:7;10397:18;;;:9;:18;;;;;;;10304:119;12997:13;:17;;:25::i;:::-;:45;;12989:123;;;;-1:-1:-1;;;12989:123:0;;8571:2:1;12989:123:0;;;8553:21:1;8610:2;8590:18;;;8583:30;8649:34;8629:18;;;8622:62;8720:34;8700:18;;;8693:62;-1:-1:-1;;;8771:19:1;;;8764:32;8813:19;;12989:123:0;8369:469:1;12989:123:0;-1:-1:-1;;;;;13137:11:0;;;;;;:7;:11;;;;;;;;13133:111;;;13173:14;11588:13;;;11564:21;:37;11636:13;;;11612:21;:37;11686:4;11670:20;;;-1:-1:-1;11701:17:0;;11521:205;13173:14;-1:-1:-1;13220:4:0;13133:111;13292:6;;;;;;;13291:7;:32;;;;-1:-1:-1;13310:13:0;;-1:-1:-1;;;;;13302:21:0;;;13310:13;;13302:21;;13291:32;13287:566;;;-1:-1:-1;;;;;13372:13:0;;;;;;:7;:13;;;;;;;;13371:14;:30;;;;-1:-1:-1;;;;;;13390:11:0;;;;;;:7;:11;;;;;;;;13389:12;13371:30;13363:39;;;;;;13472:4;13423:28;10397:18;;;:9;:18;;;;;;13526:16;13503:39;;13499:124;;;13567:36;13582:20;13567:14;:36::i;:::-;13670:21;13714:22;;13710:106;;13761:35;13774:21;13761:12;:35::i;:::-;13325:528;;13287:566;-1:-1:-1;;;;;13880:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;13908:22:0;;;;;;:18;:22;;;;;;;;13880:50;13876:98;;;-1:-1:-1;13957:5:0;13876:98;13994:41;14009:4;14015:2;14019:6;14027:7;13994:14;:41::i;:::-;14046:15;11798:21;;11782:13;:37;11846:21;;11830:13;:37;11738:137;14046:15;12299:1770;12230:1839;;;:::o;1305:190::-;1391:7;1427:12;1419:6;;;;1411:29;;;;-1:-1:-1;;;1411:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1451:9:0;1463:5;1467:1;1463;:5;:::i;:::-;1451:17;1305:190;-1:-1:-1;;;;;1305:190:0:o;14077:407::-;9014:6;:13;;-1:-1:-1;;9014:13:0;;;;;14179:16:::1;::::0;;14193:1:::1;14179:16:::0;;;;;::::1;::::0;;-1:-1:-1;;14179:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14179:16:0::1;14155:40;;14224:4;14206;14211:1;14206:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14206:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14250:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;14250:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;14206:7;;14250:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14240:4;14245:1;14240:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14240:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;14315:15:::1;::::0;14283:62:::1;::::0;14300:4:::1;::::0;14315:15:::1;14333:11:::0;14283:8:::1;:62::i;:::-;14356:15;::::0;:120:::1;::::0;-1:-1:-1;;;14356:120:0;;-1:-1:-1;;;;;14356:15:0;;::::1;::::0;:66:::1;::::0;:120:::1;::::0;14423:11;;14356:15:::1;::::0;14439:4;;14453::::1;::::0;14460:15:::1;::::0;14356:120:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9050:6:0;:14;;-1:-1:-1;;9050:14:0;;;-1:-1:-1;;;;14077:407:0:o;974:179::-;1032:7;;1064:5;1068:1;1064;:5;:::i;:::-;1052:17;;1093:1;1088;:6;;1080:46;;;;-1:-1:-1;;;1080:46:0;;10945:2:1;1080:46:0;;;10927:21:1;10984:2;10964:18;;;10957:30;11023:29;11003:18;;;10996:57;11070:18;;1080:46:0;10743:351:1;1503:246:0;1561:7;1585:6;1581:47;;-1:-1:-1;1615:1:0;1608:8;;1581:47;1638:9;1650:5;1654:1;1650;:5;:::i;:::-;1638:17;-1:-1:-1;1683:1:0;1674:5;1678:1;1638:17;1674:5;:::i;:::-;:10;1666:56;;;;-1:-1:-1;;;1666:56:0;;11696:2:1;1666:56:0;;;11678:21:1;11735:2;11715:18;;;11708:30;11774:34;11754:18;;;11747:62;-1:-1:-1;;;11825:18:1;;;11818:31;11866:19;;1666:56:0;11494:397:1;2874:191:0;2948:16;2967:6;;-1:-1:-1;;;;;2984:17:0;;;-1:-1:-1;;;;;;2984:17:0;;;;;;3017:40;;2967:6;;;;;;;3017:40;;2948:16;3017:40;2937:128;2874:191;:::o;15988:109::-;16045:17;;:34;;-1:-1:-1;;;;;16045:17:0;;;;:34;;;;;16072:6;;16045:17;:34;:17;:34;16072:6;16045:17;:34;;;;;;;;;;;;;;;;;;;;;15988:109;:::o;1897:189::-;1983:7;2018:12;2011:5;2003:28;;;;-1:-1:-1;;;2003:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2042:9:0;2054:5;2058:1;2054;:5;:::i;14966:1014::-;9014:6;:13;;-1:-1:-1;;9014:13:0;;;;;15136::::1;::::0;15118::::1;::::0;9014;;15074:77:::1;::::0;15118:32:::1;::::0;:17:::1;:32::i;:::-;15074:13;::::0;:39:::1;::::0;15092:20;15074:17:::1;:39::i;:77::-;15051:100:::0;-1:-1:-1;15215:12:0::1;15231:19;15051:100:::0;15248:1:::1;15231:16;:19::i;:::-;15215:35:::0;-1:-1:-1;15261:17:0::1;15281:30;:20:::0;15215:35;15281:24:::1;:30::i;:::-;15261:50:::0;-1:-1:-1;15614:21:0::1;15680:27;15261:50:::0;15680:16:::1;:27::i;:::-;15838:18;15859:70;15919:9:::0;15860:53:::1;15908:4:::0;15861:41:::1;:21;15887:14:::0;15861:25:::1;:41::i;:::-;15860:47:::0;::::1;:53::i;15859:70::-;15838:91;;15942:30;15955:4;15961:10;15942:12;:30::i;16709:256::-:0;16822:7;16817:60;;16851:14;:12;:14::i;:::-;16887:44;16905:6;16913:9;16924:6;16887:17;:44::i;1161:136::-;1219:7;1246:43;1250:1;1253;1246:43;;;;;;;;;;;;;;;;;:3;:43::i;14496:460::-;14609:15;;14577:62;;14594:4;;-1:-1:-1;;;;;14609:15:0;14627:11;14577:8;:62::i;:::-;14682:15;;-1:-1:-1;;;;;14682:15:0;:31;14721:9;14756:4;14778:11;14682:15;;14896:7;2485;2512:6;-1:-1:-1;;;;;2512:6:0;;2447:79;14896:7;14682:266;;;;;;-1:-1:-1;;;;;;14682:266:0;;;-1:-1:-1;;;;;12255:15:1;;;14682:266:0;;;12237:34:1;12287:18;;;12280:34;;;;12330:18;;;12323:34;;;;12373:18;;;12366:34;12437:15;;;12416:19;;;12409:44;14920:15:0;12469:19:1;;;12462:35;12171:19;;14682:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14496:460;;:::o;11256:257::-;11303:13;;:18;:40;;;;-1:-1:-1;11325:13:0;;:18;11303:40;11299:53;;;11256:257::o;11299:53::-;11386:13;;;11362:21;:37;11434:13;;;11410:21;:37;-1:-1:-1;11460:17:0;;;;11488;11256:257::o;16973:654::-;17070:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;17070:24:0;17123:35;17153:4;17123:25;17134:13;;17123:6;:10;;:25;;;;:::i;:35::-;17105:15;;;:53;17198:13;;17187:35;;17217:4;;17187:25;;:6;;:10;:25::i;:35::-;17169:53;;;17269:15;;;;17258:48;;17169:53;17258:27;;:6;;:10;:27::i;:::-;:31;;:48::i;:::-;17243:12;;;;:63;;;;-1:-1:-1;;;;;17347:17:0;;;;;;:9;:17;;;;:29;;17369:6;17347:21;:29::i;:::-;-1:-1:-1;;;;;17327:17:0;;;;;;;:9;:17;;;;;;:49;;;;17435:12;;;;17410:20;;;;;;;;;;:38;;:24;:38::i;:::-;-1:-1:-1;;;;;17387:20:0;;;;;;:9;:20;;;;;;;;:61;;;;17535:15;;17515;;;;17486:66;;17515:36;;:15;:19;:36::i;:::-;17504:4;17486:24;;;;:9;:24;;;;;;;:28;:66::i;:::-;17477:4;17459:24;;;;:9;:24;;;;;;;;;:93;;;;17606:12;;;;17578:41;;1410:25:1;;;-1:-1:-1;;;;;17578:41:0;;;;;;;;;;1383:18:1;17578:41:0;;;;;;;17059:568;16973:654;;;:::o;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:1;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:1;1877:18;;;;1864:32;;1446:456::o;1907:180::-;1966:6;2019:2;2007:9;1998:7;1994:23;1990:32;1987:52;;;2035:1;2032;2025:12;1987:52;-1:-1:-1;2058:23:1;;1907:180;-1:-1:-1;1907:180:1:o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:248::-;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;-1:-1:-1;;2909:23:1;;;2979:2;2964:18;;;2951:32;;-1:-1:-1;2741:248:1:o;2994:388::-;3062:6;3070;3123:2;3111:9;3102:7;3098:23;3094:32;3091:52;;;3139:1;3136;3129:12;3091:52;3178:9;3165:23;3197:31;3222:5;3197:31;:::i;:::-;3247:5;-1:-1:-1;3304:2:1;3289:18;;3276:32;3317:33;3276:32;3317:33;:::i;:::-;3369:7;3359:17;;;2994:388;;;;;:::o;3387:356::-;3589:2;3571:21;;;3608:18;;;3601:30;3667:34;3662:2;3647:18;;3640:62;3734:2;3719:18;;3387:356::o;4159:412::-;4361:2;4343:21;;;4400:2;4380:18;;;4373:30;4439:34;4434:2;4419:18;;4412:62;-1:-1:-1;;;4505:2:1;4490:18;;4483:46;4561:3;4546:19;;4159:412::o;8843:127::-;8904:10;8899:3;8895:20;8892:1;8885:31;8935:4;8932:1;8925:15;8959:4;8956:1;8949:15;8975:125;9015:4;9043:1;9040;9037:8;9034:34;;;9048:18;;:::i;:::-;-1:-1:-1;9085:9:1;;8975:125::o;9237:127::-;9298:10;9293:3;9289:20;9286:1;9279:31;9329:4;9326:1;9319:15;9353:4;9350:1;9343:15;9369:251;9439:6;9492:2;9480:9;9471:7;9467:23;9463:32;9460:52;;;9508:1;9505;9498:12;9460:52;9540:9;9534:16;9559:31;9584:5;9559:31;:::i;9625:980::-;9887:4;9935:3;9924:9;9920:19;9966:6;9955:9;9948:25;9992:2;10030:6;10025:2;10014:9;10010:18;10003:34;10073:3;10068:2;10057:9;10053:18;10046:31;10097:6;10132;10126:13;10163:6;10155;10148:22;10201:3;10190:9;10186:19;10179:26;;10240:2;10232:6;10228:15;10214:29;;10261:1;10271:195;10285:6;10282:1;10279:13;10271:195;;;10350:13;;-1:-1:-1;;;;;10346:39:1;10334:52;;10441:15;;;;10406:12;;;;10382:1;10300:9;10271:195;;;-1:-1:-1;;;;;;;10522:32:1;;;;10517:2;10502:18;;10495:60;-1:-1:-1;;;10586:3:1;10571:19;10564:35;10483:3;9625:980;-1:-1:-1;;;9625:980:1:o;10610:128::-;10650:3;10681:1;10677:6;10674:1;10671:13;10668:39;;;10687:18;;:::i;:::-;-1:-1:-1;10723:9:1;;10610:128::o;11099:168::-;11139:7;11205:1;11201;11197:6;11193:14;11190:1;11187:21;11182:1;11175:9;11168:17;11164:45;11161:71;;;11212:18;;:::i;:::-;-1:-1:-1;11252:9:1;;11099:168::o;11272:217::-;11312:1;11338;11328:132;;11382:10;11377:3;11373:20;11370:1;11363:31;11417:4;11414:1;11407:15;11445:4;11442:1;11435:15;11328:132;-1:-1:-1;11474:9:1;;11272:217::o;12508:306::-;12596:6;12604;12612;12665:2;12653:9;12644:7;12640:23;12636:32;12633:52;;;12681:1;12678;12671:12;12633:52;12710:9;12704:16;12694:26;;12760:2;12749:9;12745:18;12739:25;12729:35;;12804:2;12793:9;12789:18;12783:25;12773:35;;12508:306;;;;;:::o

Swarm Source

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