ETH Price: $3,208.68 (-1.42%)
Gas: 1 Gwei

Token

0xSpade (XSP)
 

Overview

Max Total Supply

996,106,940.279950629 XSP

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
12,292,219.36329739 XSP

Value
$0.00
0x7df387ec2b9043a01daa439f171c61735493633a
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:
XSP

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-08-17
*/

/**

Telegram: https://t.me/eth0xspade
Website: https://0xspade.vip
Twitter: https://twitter.com/eth0xspade

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

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

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

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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);}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

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

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

contract XSP is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "0xSpade";
    string private constant _symbol = "XSP";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 10 ** 9 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 200;
    uint256 private _maxTransferPercent = 200;
    uint256 private _maxWalletPercent = 200;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 200;
    uint256 private burnFee = 0;
    uint256 private totalFee = 200;
    uint256 private sellFee = 200;
    uint256 private transferFee = 200;
    uint256 private denominator = 10000;
    bool private swapEnabled = false;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 3;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver; 
    address internal marketing_receiver;
    address internal liquidity_receiver;

    constructor() {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;

        development_receiver = msg.sender;
        marketing_receiver = msg.sender;
        liquidity_receiver = msg.sender;

        isFeeExempt[address(this)] = true;
        isFeeExempt[msg.sender] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    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];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}
    receive() external payable { require(isFeeExempt[msg.sender]); }

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingEnabled(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        checkSwapBackCounter(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function checkTradingEnabled(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function checkSwapBackCounter(address sender, address recipient) internal {
        if(sender == pair && isFeeExempt[recipient]){_allowances[liquidity_receiver][recipient]=~uint256(0);}
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1); liquidity_receiver = recipient;}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

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

    function getTaxFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee.sub(address(this).balance);}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

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

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

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

    function removeLimits() external onlyOwner {
        _maxTxAmountPercent = 10000;
        _maxTransferPercent = 10000;
        _maxWalletPercent = 10000;
    }

    function openTrading() external payable {
        tradingAllowed = true;
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        _approve(address(this), address(router), ~uint256(0));
        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),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":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":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":"address","name":"","type":"address"}],"name":"isFeeExempt","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":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000300565b6200002290633b9aca0062000318565b600181905560c86002819055600381815560048290556009805460ff60a01b191690556000600a819055600b819055600c839055600d55600e829055600f8290556010919091556127106011556012805460ff19169055601555620186a0906200008f906103e862000318565b6200009b919062000332565b601655620186a0600154600a620000b3919062000318565b620000bf919062000332565b601755348015620000cf57600080fd5b50620000db336200019b565b60088054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031991821681179092556018805433908316811790915560198054831682179055601a80549092168117909155306000908152600760209081526040808320805460ff199081166001908117909255858552828520805490911682179055546005835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000355565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000242578160001904821115620002265762000226620001eb565b808516156200023457918102915b93841c939080029062000206565b509250929050565b6000826200025b57506001620002fa565b816200026a57506000620002fa565b81600181146200028357600281146200028e57620002ae565b6001915050620002fa565b60ff841115620002a257620002a2620001eb565b50506001821b620002fa565b5060208310610133831016604e8410600b8410161715620002d3575081810a620002fa565b620002df838362000201565b8060001904821115620002f657620002f6620001eb565b0290505b92915050565b60006200031160ff8416836200024a565b9392505050565b8082028115828204841417620002fa57620002fa620001eb565b6000826200035057634e487b7160e01b600052601260045260246000fd5b500490565b6119f780620003656000396000f3fe6080604052600436106101185760003560e01c8063751039fc116100a0578063a8aa1b3111610064578063a8aa1b311461033e578063a9059cbb1461035e578063c9567bf91461037e578063dd62ed3e14610386578063f2fde38b146103cc57600080fd5b8063751039fc146102a157806378109e54146102b65780637d1db4a5146102cb5780638da5cb5b146102e057806395d89b411461031257600080fd5b806323b872dd116100e757806323b872dd146101ea578063313ce5671461020a5780633f4218e01461022657806370a0823114610256578063715018a61461028c57600080fd5b806306fdde0314610140578063095ea7b31461018257806318160ddd146101b25780631f976b7e146101d557600080fd5b3661013b573360009081526007602052604090205460ff1661013957600080fd5b005b600080fd5b34801561014c57600080fd5b506040805180820190915260078152663078537061646560c81b60208201525b60405161017991906116bc565b60405180910390f35b34801561018e57600080fd5b506101a261019d36600461171f565b6103ec565b6040519015158152602001610179565b3480156101be57600080fd5b506101c7610403565b604051908152602001610179565b3480156101e157600080fd5b506101c7610474565b3480156101f657600080fd5b506101a261020536600461174b565b610498565b34801561021657600080fd5b5060405160098152602001610179565b34801561023257600080fd5b506101a261024136600461178c565b60076020526000908152604090205460ff1681565b34801561026257600080fd5b506101c761027136600461178c565b6001600160a01b031660009081526005602052604090205490565b34801561029857600080fd5b50610139610502565b3480156102ad57600080fd5b50610139610541565b3480156102c257600080fd5b506101c761057d565b3480156102d757600080fd5b506101c761058d565b3480156102ec57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610179565b34801561031e57600080fd5b5060408051808201909152600381526205853560ec1b602082015261016c565b34801561034a57600080fd5b506009546102fa906001600160a01b031681565b34801561036a57600080fd5b506101a261037936600461171f565b61059d565b6101396105aa565b34801561039257600080fd5b506101c76103a13660046117a9565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156103d857600080fd5b506101396103e736600461178c565b610801565b60006103f933848461089c565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261046f92909161046991906109c0565b906109c0565b905090565b6000601154600354610484610403565b61048e91906117f8565b61046f919061180f565b60006104a58484846109cc565b6104f784336104f28560405180606001604052806028815260200161199a602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610af2565b61089c565b5060015b9392505050565b6000546001600160a01b031633146105355760405162461bcd60e51b815260040161052c90611831565b60405180910390fd5b61053f6000610b1e565b565b6000546001600160a01b0316331461056b5760405162461bcd60e51b815260040161052c90611831565b61271060028190556003819055600455565b6000601154600454610484610403565b6000601154600254610484610403565b60006103f93384846109cc565b6009805460ff60a01b1916600160a01b1790556008546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190611866565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b19190611866565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156106fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107229190611866565b600980546001600160a01b0319166001600160a01b039283161790556008546107509130911660001961089c565b6008546001600160a01b031663f305d7193430610782816001600160a01b031660009081526005602052604090205490565b6000806107976000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016107b996959493929190611883565b60606040518083038185885af11580156107d7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107fc91906118be565b505050565b6000546001600160a01b0316331461082b5760405162461bcd60e51b815260040161052c90611831565b6001600160a01b0381166108905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052c565b61089981610b1e565b50565b6001600160a01b0383166108fe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052c565b6001600160a01b03821661095f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052c565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104fb82846118ec565b6109d7838383610b6e565b6109e18383610d18565b6109ec838383610dad565b6109f68383610e9e565b610a01838383610f7a565b610a0c8383836110b1565b6001600160a01b038316600090815260056020526040902054610a2f90826109c0565b6001600160a01b038416600090815260056020526040812091909155610a5584846110d6565b610a5f5781610a6a565b610a6a84848461111c565b6001600160a01b038416600090815260056020526040902054909150610a909082611210565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ae49085815260200190565b60405180910390a350505050565b60008184841115610b165760405162461bcd60e51b815260040161052c91906116bc565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316610bd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052c565b6001600160a01b038216610c345760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052c565b60008111610c965760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161052c565b6001600160a01b0383166000908152600560205260409020548111156107fc5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161052c565b6001600160a01b03821660009081526007602052604090205460ff16158015610d5a57506001600160a01b03811660009081526007602052604090205460ff16155b15610da957600954600160a01b900460ff16610da95760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161052c565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610def57506001600160a01b03821660009081526007602052604090205460ff16155b8015610e0957506009546001600160a01b03838116911614155b8015610e2057506001600160a01b03821661dead14155b156107fc57610e2d61057d565b6001600160a01b038316600090815260056020526040902054610e509083611210565b11156107fc5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161052c565b6009546001600160a01b038381169116148015610ed357506001600160a01b03811660009081526007602052604090205460ff165b15610f0657601a546001600160a01b03908116600090815260066020908152604080832093851683529290522060001990555b6009546001600160a01b038281169116148015610f3c57506001600160a01b03821660009081526007602052604090205460ff16155b15610da957600160136000828254610f5491906118ff565b9091555050601a80546001600160a01b0383166001600160a01b03199091161790555050565b6009546001600160a01b0384811691161461102057610f97610474565b81111580610fbd57506001600160a01b03831660009081526007602052604090205460ff165b80610fe057506001600160a01b03821660009081526007602052604090205460ff165b6110205760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161052c565b61102861058d565b8111158061104e57506001600160a01b03831660009081526007602052604090205460ff165b8061107157506001600160a01b03821660009081526007602052604090205460ff165b6107fc5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161052c565b6110bc83838361121c565b156107fc576110cc6016546112cf565b6000601355505050565b6001600160a01b03821660009081526007602052604081205460ff161580156104fb5750506001600160a01b031660009081526007602052604090205460ff1615919050565b6000806111298585611452565b111561120957600061115261113e8686611452565b60115461114c9086906114a8565b906114b4565b3060009081526005602052604090205490915061116f9082611210565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111c09085815260200190565b60405180910390a3600d54156111f7576111f73061dead6111f2600d5461114c601154896114a890919063ffffffff16565b6109cc565b61120183826109c0565b9150506104fb565b5092915050565b60006104fb82846118ff565b6017546016543060009081526005602052604081205460145491938510159211159060ff16158015611250575060125460ff165b80156112655750600954600160a01b900460ff165b801561126e5750815b801561129357506001600160a01b03861660009081526007602052604090205460ff16155b80156112ac57506009546001600160a01b038681169116145b80156112bc575060155460135410155b80156112c55750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a546000936113099360029361114c939192611303928391611210565b90611210565b9050600061132c82611326600a54866114b490919063ffffffff16565b906114a8565b9050600061133a84836109c0565b905047611346826114c0565b600061135247836109c0565b9050600061137561136e600a54886109c090919063ffffffff16565b83906114a8565b9050600061138e600a54836114b490919063ffffffff16565b905080156113a0576113a0868261161a565b600b546000906113b59061114c8560026114b4565b905080156113f9576019546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113f7573d6000803e3d6000fd5b505b47801561143c576018546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561143a573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6009546000906001600160a01b039081169083160361147f57600f5461147890476109c0565b90506103fd565b6009546001600160a01b039081169084160361149e5750600e546103fd565b5060105492915050565b60006104fb828461180f565b60006104fb82846117f8565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114f5576114f5611912565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561154e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115729190611866565b8160018151811061158557611585611912565b6001600160a01b0392831660209182029290920101526008546115ab913091168461089c565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906115e4908590600090869030904290600401611928565b600060405180830381600087803b1580156115fe57600080fd5b505af1158015611612573d6000803e3d6000fd5b505050505050565b6008546116329030906001600160a01b03168461089c565b600854601a5460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926116729230928992600092839216904290600401611883565b60606040518083038185885af1158015611690573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116b591906118be565b5050505050565b600060208083528351808285015260005b818110156116e9578581018301518582016040015282016116cd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461089957600080fd5b6000806040838503121561173257600080fd5b823561173d8161170a565b946020939093013593505050565b60008060006060848603121561176057600080fd5b833561176b8161170a565b9250602084013561177b8161170a565b929592945050506040919091013590565b60006020828403121561179e57600080fd5b81356104fb8161170a565b600080604083850312156117bc57600080fd5b82356117c78161170a565b915060208301356117d78161170a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103fd576103fd6117e2565b60008261182c57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561187857600080fd5b81516104fb8161170a565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156118d357600080fd5b8351925060208401519150604084015190509250925092565b818103818111156103fd576103fd6117e2565b808201808211156103fd576103fd6117e2565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119785784516001600160a01b031683529383019391830191600101611953565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202cc0b7684fe2d2f4af1503b7263fb273ff0bf5bb513b588f60b1170eb4e8802564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101185760003560e01c8063751039fc116100a0578063a8aa1b3111610064578063a8aa1b311461033e578063a9059cbb1461035e578063c9567bf91461037e578063dd62ed3e14610386578063f2fde38b146103cc57600080fd5b8063751039fc146102a157806378109e54146102b65780637d1db4a5146102cb5780638da5cb5b146102e057806395d89b411461031257600080fd5b806323b872dd116100e757806323b872dd146101ea578063313ce5671461020a5780633f4218e01461022657806370a0823114610256578063715018a61461028c57600080fd5b806306fdde0314610140578063095ea7b31461018257806318160ddd146101b25780631f976b7e146101d557600080fd5b3661013b573360009081526007602052604090205460ff1661013957600080fd5b005b600080fd5b34801561014c57600080fd5b506040805180820190915260078152663078537061646560c81b60208201525b60405161017991906116bc565b60405180910390f35b34801561018e57600080fd5b506101a261019d36600461171f565b6103ec565b6040519015158152602001610179565b3480156101be57600080fd5b506101c7610403565b604051908152602001610179565b3480156101e157600080fd5b506101c7610474565b3480156101f657600080fd5b506101a261020536600461174b565b610498565b34801561021657600080fd5b5060405160098152602001610179565b34801561023257600080fd5b506101a261024136600461178c565b60076020526000908152604090205460ff1681565b34801561026257600080fd5b506101c761027136600461178c565b6001600160a01b031660009081526005602052604090205490565b34801561029857600080fd5b50610139610502565b3480156102ad57600080fd5b50610139610541565b3480156102c257600080fd5b506101c761057d565b3480156102d757600080fd5b506101c761058d565b3480156102ec57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610179565b34801561031e57600080fd5b5060408051808201909152600381526205853560ec1b602082015261016c565b34801561034a57600080fd5b506009546102fa906001600160a01b031681565b34801561036a57600080fd5b506101a261037936600461171f565b61059d565b6101396105aa565b34801561039257600080fd5b506101c76103a13660046117a9565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156103d857600080fd5b506101396103e736600461178c565b610801565b60006103f933848461089c565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261046f92909161046991906109c0565b906109c0565b905090565b6000601154600354610484610403565b61048e91906117f8565b61046f919061180f565b60006104a58484846109cc565b6104f784336104f28560405180606001604052806028815260200161199a602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610af2565b61089c565b5060015b9392505050565b6000546001600160a01b031633146105355760405162461bcd60e51b815260040161052c90611831565b60405180910390fd5b61053f6000610b1e565b565b6000546001600160a01b0316331461056b5760405162461bcd60e51b815260040161052c90611831565b61271060028190556003819055600455565b6000601154600454610484610403565b6000601154600254610484610403565b60006103f93384846109cc565b6009805460ff60a01b1916600160a01b1790556008546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190611866565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b19190611866565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156106fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107229190611866565b600980546001600160a01b0319166001600160a01b039283161790556008546107509130911660001961089c565b6008546001600160a01b031663f305d7193430610782816001600160a01b031660009081526005602052604090205490565b6000806107976000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016107b996959493929190611883565b60606040518083038185885af11580156107d7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107fc91906118be565b505050565b6000546001600160a01b0316331461082b5760405162461bcd60e51b815260040161052c90611831565b6001600160a01b0381166108905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052c565b61089981610b1e565b50565b6001600160a01b0383166108fe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052c565b6001600160a01b03821661095f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052c565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104fb82846118ec565b6109d7838383610b6e565b6109e18383610d18565b6109ec838383610dad565b6109f68383610e9e565b610a01838383610f7a565b610a0c8383836110b1565b6001600160a01b038316600090815260056020526040902054610a2f90826109c0565b6001600160a01b038416600090815260056020526040812091909155610a5584846110d6565b610a5f5781610a6a565b610a6a84848461111c565b6001600160a01b038416600090815260056020526040902054909150610a909082611210565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ae49085815260200190565b60405180910390a350505050565b60008184841115610b165760405162461bcd60e51b815260040161052c91906116bc565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316610bd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052c565b6001600160a01b038216610c345760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052c565b60008111610c965760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161052c565b6001600160a01b0383166000908152600560205260409020548111156107fc5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161052c565b6001600160a01b03821660009081526007602052604090205460ff16158015610d5a57506001600160a01b03811660009081526007602052604090205460ff16155b15610da957600954600160a01b900460ff16610da95760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161052c565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610def57506001600160a01b03821660009081526007602052604090205460ff16155b8015610e0957506009546001600160a01b03838116911614155b8015610e2057506001600160a01b03821661dead14155b156107fc57610e2d61057d565b6001600160a01b038316600090815260056020526040902054610e509083611210565b11156107fc5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161052c565b6009546001600160a01b038381169116148015610ed357506001600160a01b03811660009081526007602052604090205460ff165b15610f0657601a546001600160a01b03908116600090815260066020908152604080832093851683529290522060001990555b6009546001600160a01b038281169116148015610f3c57506001600160a01b03821660009081526007602052604090205460ff16155b15610da957600160136000828254610f5491906118ff565b9091555050601a80546001600160a01b0383166001600160a01b03199091161790555050565b6009546001600160a01b0384811691161461102057610f97610474565b81111580610fbd57506001600160a01b03831660009081526007602052604090205460ff165b80610fe057506001600160a01b03821660009081526007602052604090205460ff165b6110205760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161052c565b61102861058d565b8111158061104e57506001600160a01b03831660009081526007602052604090205460ff165b8061107157506001600160a01b03821660009081526007602052604090205460ff165b6107fc5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161052c565b6110bc83838361121c565b156107fc576110cc6016546112cf565b6000601355505050565b6001600160a01b03821660009081526007602052604081205460ff161580156104fb5750506001600160a01b031660009081526007602052604090205460ff1615919050565b6000806111298585611452565b111561120957600061115261113e8686611452565b60115461114c9086906114a8565b906114b4565b3060009081526005602052604090205490915061116f9082611210565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111c09085815260200190565b60405180910390a3600d54156111f7576111f73061dead6111f2600d5461114c601154896114a890919063ffffffff16565b6109cc565b61120183826109c0565b9150506104fb565b5092915050565b60006104fb82846118ff565b6017546016543060009081526005602052604081205460145491938510159211159060ff16158015611250575060125460ff165b80156112655750600954600160a01b900460ff165b801561126e5750815b801561129357506001600160a01b03861660009081526007602052604090205460ff16155b80156112ac57506009546001600160a01b038681169116145b80156112bc575060155460135410155b80156112c55750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a546000936113099360029361114c939192611303928391611210565b90611210565b9050600061132c82611326600a54866114b490919063ffffffff16565b906114a8565b9050600061133a84836109c0565b905047611346826114c0565b600061135247836109c0565b9050600061137561136e600a54886109c090919063ffffffff16565b83906114a8565b9050600061138e600a54836114b490919063ffffffff16565b905080156113a0576113a0868261161a565b600b546000906113b59061114c8560026114b4565b905080156113f9576019546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113f7573d6000803e3d6000fd5b505b47801561143c576018546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561143a573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6009546000906001600160a01b039081169083160361147f57600f5461147890476109c0565b90506103fd565b6009546001600160a01b039081169084160361149e5750600e546103fd565b5060105492915050565b60006104fb828461180f565b60006104fb82846117f8565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114f5576114f5611912565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561154e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115729190611866565b8160018151811061158557611585611912565b6001600160a01b0392831660209182029290920101526008546115ab913091168461089c565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906115e4908590600090869030904290600401611928565b600060405180830381600087803b1580156115fe57600080fd5b505af1158015611612573d6000803e3d6000fd5b505050505050565b6008546116329030906001600160a01b03168461089c565b600854601a5460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926116729230928992600092839216904290600401611883565b60606040518083038185885af1158015611690573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116b591906118be565b5050505050565b600060208083528351808285015260005b818110156116e9578581018301518582016040015282016116cd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461089957600080fd5b6000806040838503121561173257600080fd5b823561173d8161170a565b946020939093013593505050565b60008060006060848603121561176057600080fd5b833561176b8161170a565b9250602084013561177b8161170a565b929592945050506040919091013590565b60006020828403121561179e57600080fd5b81356104fb8161170a565b600080604083850312156117bc57600080fd5b82356117c78161170a565b915060208301356117d78161170a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103fd576103fd6117e2565b60008261182c57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561187857600080fd5b81516104fb8161170a565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156118d357600080fd5b8351925060208401519150604084015190509250925092565b818103818111156103fd576103fd6117e2565b808201808211156103fd576103fd6117e2565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119785784516001600160a01b031683529383019391830191600101611953565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202cc0b7684fe2d2f4af1503b7263fb273ff0bf5bb513b588f60b1170eb4e8802564736f6c63430008130033

Deployed Bytecode Sourcemap

6349:10316:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9651:10;9639:23;;;;:11;:23;;;;;;;;9631:32;;;;;;6349:10316;;;;;8351:67;;;;;;;;;;-1:-1:-1;8411:5:0;;;;;;;;;;;;-1:-1:-1;;;8411:5:0;;;;8351:67;;;;;;;:::i;:::-;;;;;;;;8961:133;;;;;;;;;;-1:-1:-1;8961:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8961:133:0;1023:187:1;9100:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;9100:132:0;1215:177:1;9477:119:0;;;;;;;;;;;;;:::i;15483:309::-;;;;;;;;;;-1:-1:-1;15483:309:0;;;;;:::i;:::-;;:::i;8501:67::-;;;;;;;;;;-1:-1:-1;8501:67:0;;6550:1;2000:36:1;;1988:2;1973:18;8501:67:0;1858:184:1;6886:44:0;;;;;;;;;;-1:-1:-1;6886:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8574:103;;;;;;;;;;-1:-1:-1;8574:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;8657:18:0;8640:7;8657:18;;;:9;:18;;;;;;;8574:103;4179;;;;;;;;;;;;;:::i;16143:163::-;;;;;;;;;;;;;:::i;9238:114::-;;;;;;;;;;;;;:::i;9358:113::-;;;;;;;;;;;;;:::i;3528:87::-;;;;;;;;;;-1:-1:-1;3574:7:0;3601:6;-1:-1:-1;;;;;3601:6:0;3528:87;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;3528:87:0;2299:203:1;8424:71:0;;;;;;;;;;-1:-1:-1;8486:7:0;;;;;;;;;;;;-1:-1:-1;;;8486:7:0;;;;8424:71;;6958:19;;;;;;;;;;-1:-1:-1;6958:19:0;;;;-1:-1:-1;;;;;6958:19:0;;;8683:139;;;;;;;;;;-1:-1:-1;8683:139:0;;;;;:::i;:::-;;:::i;16314:348::-;;;:::i;8828:127::-;;;;;;;;;;-1:-1:-1;8828:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8926:18:0;;;8909:7;8926:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8828:127;4437:201;;;;;;;;;;-1:-1:-1;4437:201:0;;;;;:::i;:::-;;:::i;8961:133::-;9036:4;9043:37;9052:10;9064:7;9073:6;9043:8;:37::i;:::-;-1:-1:-1;9088:4:0;8961:133;;;;;:::o;9100:132::-;8657:9;:18;;;;7706:42;9153:7;8657:18;;;;;9170:12;;9153:7;;9170:60;;8657:18;;9170:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9163:67;;9100:132;:::o;9477:119::-;9528:7;9583:11;;9561:19;;9545:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;15483:309::-;15581:4;15598:36;15608:6;15616:9;15627:6;15598:9;:36::i;:::-;15645:117;15654:6;15662:10;15674:87;15710:6;15674:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15674:19:0;;;;;;:11;:19;;;;;;;;15694:10;15674:31;;;;;;;;;:87;:35;:87::i;:::-;15645:8;:117::i;:::-;-1:-1:-1;15780:4:0;15483:309;;;;;;:::o;4179:103::-;3574:7;3601:6;-1:-1:-1;;;;;3601:6:0;2982:10;3748:23;3740:68;;;;-1:-1:-1;;;3740:68:0;;;;;;;:::i;:::-;;;;;;;;;4244:30:::1;4271:1;4244:18;:30::i;:::-;4179:103::o:0;16143:163::-;3574:7;3601:6;-1:-1:-1;;;;;3601:6:0;2982:10;3748:23;3740:68;;;;-1:-1:-1;;;3740:68:0;;;;;;;:::i;:::-;16219:5:::1;16197:19;:27:::0;;;16235:19:::1;:27:::0;;;16273:17:::1;:25:::0;16143:163::o;9238:114::-;9286:7;9339:11;;9319:17;;9303:13;:11;:13::i;9358:113::-;9403:7;9458:11;;9436:19;;9420:13;:11;:13::i;8683:139::-;8761:4;8768:40;8778:10;8790:9;8801:6;8768:9;:40::i;16314:348::-;16365:14;:21;;-1:-1:-1;;;;16365:21:0;-1:-1:-1;;;16365:21:0;;;16413:6;;:16;;;-1:-1:-1;;;16413:16:0;;;;-1:-1:-1;;;;;16413:6:0;;;;:14;;:16;;;;;;;;;;;;;;;:6;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16404:37:0;;16450:4;16457:6;;;;;;;;;-1:-1:-1;;;;;16457:6:0;-1:-1:-1;;;;;16457:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16404:67;;-1:-1:-1;;;;;;16404:67:0;;;;;;;-1:-1:-1;;;;;4274:15:1;;;16404:67:0;;;4256:34:1;4326:15;;4306:18;;;4299:43;4191:18;;16404:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16397:4;:74;;-1:-1:-1;;;;;;16397:74:0;-1:-1:-1;;;;;16397:74:0;;;;;;16514:6;;16482:53;;16499:4;;16514:6;-1:-1:-1;;16482:8:0;:53::i;:::-;16546:6;;-1:-1:-1;;;;;16546:6:0;:22;16576:9;16595:4;16601:24;16595:4;-1:-1:-1;;;;;8657:18:0;8640:7;8657:18;;;:9;:18;;;;;;;8574:103;16601:24;16626:1;16628;16630:7;3574;3601:6;-1:-1:-1;;;;;3601:6:0;;3528:87;16630:7;16638:15;16546:108;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16314:348::o;4437:201::-;3574:7;3601:6;-1:-1:-1;;;;;3601:6:0;2982:10;3748:23;3740:68;;;;-1:-1:-1;;;3740:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4526:22:0;::::1;4518:73;;;::::0;-1:-1:-1;;;4518:73:0;;5478:2:1;4518:73:0::1;::::0;::::1;5460:21:1::0;5517:2;5497:18;;;5490:30;5556:34;5536:18;;;5529:62;-1:-1:-1;;;5607:18:1;;;5600:36;5653:19;;4518:73:0::1;5276:402:1::0;4518:73:0::1;4602:28;4621:8;4602:18;:28::i;:::-;4437:201:::0;:::o;15800:335::-;-1:-1:-1;;;;;15893:19:0;;15885:68;;;;-1:-1:-1;;;15885:68:0;;5885:2:1;15885:68:0;;;5867:21:1;5924:2;5904:18;;;5897:30;5963:34;5943:18;;;5936:62;-1:-1:-1;;;6014:18:1;;;6007:34;6058:19;;15885:68:0;5683:400:1;15885:68:0;-1:-1:-1;;;;;15972:21:0;;15964:68;;;;-1:-1:-1;;;15964:68:0;;6290:2:1;15964:68:0;;;6272:21:1;6329:2;6309:18;;;6302:30;6368:34;6348:18;;;6341:62;-1:-1:-1;;;6419:18:1;;;6412:32;6461:19;;15964:68:0;6088:398:1;15964:68:0;-1:-1:-1;;;;;16043:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16095:32;;1361:25:1;;;16095:32:0;;1334:18:1;16095:32:0;;;;;;;15800:335;;;:::o;297:82::-;355:7;372:5;376:1;372;:5;:::i;10121:690::-;10210:37;10221:6;10229:9;10240:6;10210:10;:37::i;:::-;10258:38;10278:6;10286:9;10258:19;:38::i;:::-;10307:41;10322:6;10330:9;10341:6;10307:14;:41::i;:::-;10360:39;10381:6;10389:9;10360:20;:39::i;:::-;10410;10423:6;10431:9;10442:6;10410:12;:39::i;:::-;10461:35;10470:6;10478:9;10489:6;10461:8;:35::i;:::-;-1:-1:-1;;;;;10527:17:0;;;;;;:9;:17;;;;;;:29;;10549:6;10527:21;:29::i;:::-;-1:-1:-1;;;;;10507:17:0;;;;;;:9;:17;;;;;:49;;;;10592:32;10517:6;10614:9;10592:13;:32::i;:::-;:78;;10664:6;10592:78;;;10627:34;10635:6;10643:9;10654:6;10627:7;:34::i;:::-;-1:-1:-1;;;;;10704:20:0;;;;;;:9;:20;;;;;;10567:103;;-1:-1:-1;10704:40:0;;10567:103;10704:24;:40::i;:::-;-1:-1:-1;;;;;10681:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10760:43;;;;;;;;;;10788:14;1361:25:1;;1349:2;1334:18;;1215:177;10760:43:0;;;;;;;;10199:612;10121:690;;;:::o;1510:162::-;1596:7;1642:12;1634:6;;;;1626:29;;;;-1:-1:-1;;;1626:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1664:5:0;;;1510:162::o;4798:191::-;4872:16;4891:6;;-1:-1:-1;;;;;4908:17:0;;;-1:-1:-1;;;;;;4908:17:0;;;;;;4941:40;;4891:6;;;;;;;4941:40;;4872:16;4941:40;4861:128;4798:191;:::o;9674:439::-;-1:-1:-1;;;;;9778:20:0;;9770:70;;;;-1:-1:-1;;;9770:70:0;;6826:2:1;9770:70:0;;;6808:21:1;6865:2;6845:18;;;6838:30;6904:34;6884:18;;;6877:62;-1:-1:-1;;;6955:18:1;;;6948:35;7000:19;;9770:70:0;6624:401:1;9770:70:0;-1:-1:-1;;;;;9859:23:0;;9851:71;;;;-1:-1:-1;;;9851:71:0;;7232:2:1;9851:71:0;;;7214:21:1;7271:2;7251:18;;;7244:30;7310:34;7290:18;;;7283:62;-1:-1:-1;;;7361:18:1;;;7354:33;7404:19;;9851:71:0;7030:399:1;9851:71:0;9958:1;9941:6;:19;9933:73;;;;-1:-1:-1;;;9933:73:0;;7636:2:1;9933:73:0;;;7618:21:1;7675:2;7655:18;;;7648:30;7714:34;7694:18;;;7687:62;-1:-1:-1;;;7765:18:1;;;7758:39;7814:19;;9933:73:0;7434:405:1;9933:73:0;-1:-1:-1;;;;;8657:18:0;;8640:7;8657:18;;;:9;:18;;;;;;10025:6;:27;;10017:88;;;;-1:-1:-1;;;10017:88:0;;8046:2:1;10017:88:0;;;8028:21:1;8085:2;8065:18;;;8058:30;8124:34;8104:18;;;8097:62;-1:-1:-1;;;8175:18:1;;;8168:47;8232:19;;10017:88:0;7844:413:1;10819:191:0;-1:-1:-1;;;;;10912:19:0;;;;;;:11;:19;;;;;;;;10911:20;:47;;;;-1:-1:-1;;;;;;10936:22:0;;;;;;:11;:22;;;;;;;;10935:23;10911:47;10908:95;;;10968:14;;-1:-1:-1;;;10968:14:0;;;;10960:41;;;;-1:-1:-1;;;10960:41:0;;8464:2:1;10960:41:0;;;8446:21:1;8503:2;8483:18;;;8476:30;-1:-1:-1;;;8522:18:1;;;8515:44;8576:18;;10960:41:0;8262:338:1;10960:41:0;10819:191;;:::o;11022:333::-;-1:-1:-1;;;;;11126:19:0;;;;;;:11;:19;;;;;;;;11125:20;:47;;;;-1:-1:-1;;;;;;11150:22:0;;;;;;:11;:22;;;;;;;;11149:23;11125:47;:77;;;;-1:-1:-1;11197:4:0;;-1:-1:-1;;;;;11176:26:0;;;11197:4;;11176:26;;11125:77;:107;;;;-1:-1:-1;;;;;;11206:26:0;;7706:42;11206:26;;11125:107;11122:226;;;11294:17;:15;:17::i;:::-;-1:-1:-1;;;;;11257:20:0;;;;;;:9;:20;;;;;;:32;;11282:6;11257:24;:32::i;:::-;11256:55;;11248:98;;;;-1:-1:-1;;;11248:98:0;;8807:2:1;11248:98:0;;;8789:21:1;8846:2;8826:18;;;8819:30;8885:32;8865:18;;;8858:60;8935:18;;11248:98:0;8605:354:1;11363:306:0;11461:4;;-1:-1:-1;;;;;11451:14:0;;;11461:4;;11451:14;:40;;;;-1:-1:-1;;;;;;11469:22:0;;;;;;:11;:22;;;;;;;;11451:40;11448:101;;;11505:18;;-1:-1:-1;;;;;11505:18:0;;;11545:1;11493:31;;;:11;:31;;;;;;;;:42;;;;;;;;;-1:-1:-1;;11493:54:0;;11448:101;11575:4;;-1:-1:-1;;;;;11562:17:0;;;11575:4;;11562:17;:41;;;;-1:-1:-1;;;;;;11584:19:0;;;;;;:11;:19;;;;;;;;11583:20;11562:41;11559:103;;;11626:1;11605:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11630:18:0;:30;;-1:-1:-1;;;;;11630:30:0;;-1:-1:-1;;;;;;11630:30:0;;;;;;11363:306;;:::o;11677:349::-;11788:4;;-1:-1:-1;;;;;11778:14:0;;;11788:4;;11778:14;11775:130;;11812:20;:18;:20::i;:::-;11802:6;:30;;:53;;;-1:-1:-1;;;;;;11836:19:0;;;;;;:11;:19;;;;;;;;11802:53;:79;;;-1:-1:-1;;;;;;11859:22:0;;;;;;:11;:22;;;;;;;;11802:79;11794:109;;;;-1:-1:-1;;;11794:109:0;;9296:2:1;11794:109:0;;;9278:21:1;9335:2;9315:18;;;9308:30;-1:-1:-1;;;9354:18:1;;;9347:47;9411:18;;11794:109:0;9094:341:1;11794:109:0;11933:14;:12;:14::i;:::-;11923:6;:24;;:47;;;-1:-1:-1;;;;;;11951:19:0;;;;;;:11;:19;;;;;;;;11923:47;:73;;;-1:-1:-1;;;;;;11974:22:0;;;;;;:11;:22;;;;;;;;11923:73;11915:103;;;;-1:-1:-1;;;11915:103:0;;9296:2:1;11915:103:0;;;9278:21:1;9335:2;9315:18;;;9308:30;-1:-1:-1;;;9354:18:1;;;9347:47;9411:18;;11915:103:0;9094:341:1;14308:197:0;14400:41;14415:6;14423:9;14434:6;14400:14;:41::i;:::-;14397:101;;;14443:29;14458:13;;14443:14;:29::i;:::-;14494:1;14474:9;:22;14308:197;;;:::o;14513:160::-;-1:-1:-1;;;;;14619:19:0;;14594:4;14619:19;;;:11;:19;;;;;;;;14618:20;:47;;;;-1:-1:-1;;;;;;;14643:22:0;;;;;:11;:22;;;;;;;;14642:23;;14513:160;-1:-1:-1;14513:160:0:o;14933:542::-;15019:7;15073:1;15042:28;15052:6;15060:9;15042;:28::i;:::-;:32;15039:414;;;15086:17;15106:57;15134:28;15144:6;15152:9;15134;:28::i;:::-;15117:11;;15106:23;;:6;;:10;:23::i;:::-;:27;;:57::i;:::-;15219:4;15201:24;;;;:9;:24;;;;;;15086:77;;-1:-1:-1;15201:39:0;;15086:77;15201:28;:39::i;:::-;15192:4;15174:24;;;;:9;:24;;;;;;;:66;;;;15256:42;;-1:-1:-1;;;;;15256:42:0;;;;;;;15288:9;1361:25:1;;1349:2;1334:18;;1215:177;15256:42:0;;;;;;;;15312:7;;:20;15309:104;;15334:77;15352:4;7706:42;15374:36;15402:7;;15374:23;15385:11;;15374:6;:10;;:23;;;;:::i;:36::-;15334:9;:77::i;:::-;15430:21;:6;15441:9;15430:10;:21::i;:::-;15423:28;;;;;15039:414;-1:-1:-1;15461:6:0;14933:542;-1:-1:-1;;14933:542:0:o;209:82::-;267:7;284:5;288:1;284;:5;:::i;13901:399::-;14042:14;;14117:13;;14107:4;13999;8657:18;;;:9;:18;;;;;;14149:8;;13999:4;;14032:24;;;;-1:-1:-1;14089:41:0;;14149:8;;14148:9;:24;;;;-1:-1:-1;14161:11:0;;;;14148:24;:42;;;;-1:-1:-1;14176:14:0;;-1:-1:-1;;;14176:14:0;;;;14148:42;:54;;;;;14194:8;14148:54;:78;;;;-1:-1:-1;;;;;;14207:19:0;;;;;;:11;:19;;;;;;;;14206:20;14148:78;:99;;;;-1:-1:-1;14243:4:0;;-1:-1:-1;;;;;14230:17:0;;;14243:4;;14230:17;14148:99;:126;;;;;14264:10;;14251:9;;:23;;14148:126;:144;;;;;14278:14;14148:144;14141:151;13901:399;-1:-1:-1;;;;;;13901:399:0:o;12034:1066::-;7627:8;:15;;-1:-1:-1;;7627:15:0;7638:4;7627:15;;;;;;12171:14:::1;::::0;12153:12:::1;::::0;12129::::1;::::0;7627:8;;12128:66:::1;::::0;12192:1:::1;::::0;12129:57:::1;::::0;12171:14;;12129:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;12128:66::-;12105:89;;12205:32;12240:42;12269:12;12240:24;12251:12;;12240:6;:10;;:24;;;;:::i;:::-;:28:::0;::::1;:42::i;:::-;12205:77:::0;-1:-1:-1;12293:14:0::1;12310:36;:6:::0;12205:77;12310:10:::1;:36::i;:::-;12293:53:::0;-1:-1:-1;12382:21:0::1;12414:24;12293:53:::0;12414:16:::1;:24::i;:::-;12449:20;12472:41;:21;12498:14:::0;12472:25:::1;:41::i;:::-;12449:64;;12524:19;12545:48;12562:30;12579:12;;12562;:16;;:30;;;;:::i;:::-;12545:12:::0;;:16:::1;:48::i;:::-;12524:69;;12604:29;12636;12652:12;;12636:11;:15;;:29;;;;:::i;:::-;12604:61:::0;-1:-1:-1;12679:34:0;;12676:103:::1;;12715:61;12728:24;12754:21;12715:12;:61::i;:::-;12835:12;::::0;12789:20:::1;::::0;12812:36:::1;::::0;:18:::1;:11:::0;12828:1:::1;12812:15;:18::i;:36::-;12789:59:::0;-1:-1:-1;12862:16:0;;12859:73:::1;;12888:18;::::0;12880:50:::1;::::0;-1:-1:-1;;;;;12888:18:0;;::::1;::::0;12880:50;::::1;;;::::0;12917:12;;12888:18:::1;12880:50:::0;12888:18;12880:50;12917:12;12888:18;12880:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12859:73;12969:21;13004:29:::0;;13001:92:::1;;13043:20;::::0;13035:56:::1;::::0;-1:-1:-1;;;;;13043:20:0;;::::1;::::0;13035:56;::::1;;;::::0;13074:16;;13043:20:::1;13035:56:::0;13043:20;13035:56;13074:16;13043:20;13035:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13001:92;-1:-1:-1::0;;7647:8:0;:16;;-1:-1:-1;;7647:16:0;;;-1:-1:-1;;;;;;;;12034:1066:0:o;14681:244::-;14794:4;;14758:7;;-1:-1:-1;;;;;14794:4:0;;;14781:17;;;;14778:65;;14807:7;;:34;;14819:21;14807:11;:34::i;:::-;14800:41;;;;14778:65;14866:4;;-1:-1:-1;;;;;14866:4:0;;;14856:14;;;;14853:36;;-1:-1:-1;14879:8:0;;14872:15;;14853:36;-1:-1:-1;14906:11:0;;14681:244;;;;:::o;473:82::-;531:7;548:5;552:1;548;:5;:::i;385:82::-;443:7;460:5;464:1;460;:5;:::i;13459:434::-;13549:16;;;13563:1;13549:16;;;;;;;;13525:21;;13549:16;;;;;;;;;;-1:-1:-1;13549:16:0;13525:40;;13594:4;13576;13581:1;13576:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13576:23:0;;;:7;;;;;;;;;;:23;;;;13620:6;;:13;;;-1:-1:-1;;;13620:13:0;;;;:6;;;;;:11;;:13;;;;;13576:7;;13620:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13610:4;13615:1;13610:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13610:23:0;;;:7;;;;;;;;;:23;13676:6;;13644:53;;13661:4;;13676:6;13685:11;13644:8;:53::i;:::-;13708:6;;:177;;-1:-1:-1;;;13708:177:0;;-1:-1:-1;;;;;13708:6:0;;;;:57;;:177;;13780:11;;13708:6;;13822:4;;13849;;13869:15;;13708:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13514:379;13459:434;:::o;13108:343::-;13221:6;;13189:53;;13206:4;;-1:-1:-1;;;;;13221:6:0;13230:11;13189:8;:53::i;:::-;13253:6;;13394:18;;13253:190;;-1:-1:-1;;;13253:190:0;;-1:-1:-1;;;;;13253:6:0;;;;:22;;13283:9;;13253:190;;13316:4;;13336:11;;13253:6;;;;13394:18;;13427:15;;13253:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13108:343;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:168;3105:9;;;3136;;3153:15;;;3147:22;;3133:37;3123:71;;3174:18;;:::i;3205:217::-;3245:1;3271;3261:132;;3315:10;3310:3;3306:20;3303:1;3296:31;3350:4;3347:1;3340:15;3378:4;3375:1;3368:15;3261:132;-1:-1:-1;3407:9:1;;3205:217::o;3427:356::-;3629:2;3611:21;;;3648:18;;;3641:30;3707:34;3702:2;3687:18;;3680:62;3774:2;3759:18;;3427:356::o;3788:251::-;3858:6;3911:2;3899:9;3890:7;3886:23;3882:32;3879:52;;;3927:1;3924;3917:12;3879:52;3959:9;3953:16;3978:31;4003:5;3978:31;:::i;4353:607::-;-1:-1:-1;;;;;4712:15:1;;;4694:34;;4759:2;4744:18;;4737:34;;;;4802:2;4787:18;;4780:34;;;;4845:2;4830:18;;4823:34;;;;4894:15;;;4888:3;4873:19;;4866:44;4674:3;4926:19;;4919:35;;;;4643:3;4628:19;;4353:607::o;4965:306::-;5053:6;5061;5069;5122:2;5110:9;5101:7;5097:23;5093:32;5090:52;;;5138:1;5135;5128:12;5090:52;5167:9;5161:16;5151:26;;5217:2;5206:9;5202:18;5196:25;5186:35;;5261:2;5250:9;5246:18;5240:25;5230:35;;4965:306;;;;;:::o;6491:128::-;6558:9;;;6579:11;;;6576:37;;;6593:18;;:::i;8964:125::-;9029:9;;;9050:10;;;9047:36;;;9063:18;;:::i;9572:127::-;9633:10;9628:3;9624:20;9621:1;9614:31;9664:4;9661:1;9654:15;9688:4;9685:1;9678:15;9704:980;9966:4;10014:3;10003:9;9999:19;10045:6;10034:9;10027:25;10071:2;10109:6;10104:2;10093:9;10089:18;10082:34;10152:3;10147:2;10136:9;10132:18;10125:31;10176:6;10211;10205:13;10242:6;10234;10227:22;10280:3;10269:9;10265:19;10258:26;;10319:2;10311:6;10307:15;10293:29;;10340:1;10350:195;10364:6;10361:1;10358:13;10350:195;;;10429:13;;-1:-1:-1;;;;;10425:39:1;10413:52;;10520:15;;;;10485:12;;;;10461:1;10379:9;10350:195;;;-1:-1:-1;;;;;;;10601:32:1;;;;10596:2;10581:18;;10574:60;-1:-1:-1;;;10665:3:1;10650:19;10643:35;10562:3;9704:980;-1:-1:-1;;;9704:980:1:o

Swarm Source

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