ETH Price: $2,785.48 (+6.12%)

Token

Evil Kermit (Constantine)
 

Overview

Max Total Supply

1,000,000,000 Constantine

Holders

55

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Filtered by Token Holder
Uniswap V2: Constantine
Balance
7,039,902.377999 Constantine

Value
$0.00
0xc1e6732c401adc7aa6be4601fb3c6edf13d2c28d
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:
Constantine

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 99999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-27
*/

/*


                    ██████  ███████ ██████  ███████     ██   ██ ██ ██      ██      ███████ ██████  
                    ██   ██ ██      ██   ██ ██          ██  ██  ██ ██      ██      ██      ██   ██ 
                    ██████  █████   ██████  █████       █████   ██ ██      ██      █████   ██████  
                    ██      ██      ██      ██          ██  ██  ██ ██      ██      ██      ██   ██ 
                    ██      ███████ ██      ███████     ██   ██ ██ ███████ ███████ ███████ ██   ██ 


Website: https://evilkermit.vip/

Telegram https://t.me/Evil_Kermiterc

Twitter: https://x.com/evilkermiterc

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.22;

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

interface UniswapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

}

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

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() {
        _setOwner(_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");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface SafeErc20 {
    error ERC20InsufficientAllowance(address spender,uint currentAllowance, uint value);
    error ERC20InvalidApprover(address Approver);
    error ERC20InvalidSpender(address Sender);
    error ERC20InvalidSender(address Sender);
    error ERC20InvalidReceiver(address Receiver);
    error ERC20ZeroTransfer();
}

contract Constantine is Context , SafeErc20, IERC20, Ownable {

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public _excludedFromFee;
    mapping (address => bool) public _pairAddress;

    address public developerWallet;

    string _name = "Evil Kermit";
    string _symbol = "Constantine";
    uint8 _decimals = 6; 

    uint256 _totalSupply; 

    uint256 public maxTransaction;      
    uint256 public maxWallet;        

    uint256 public swapThreshold;

    uint256 public buyFee;
    uint256 public sellFee;

    bool public swapEnabled = true;
    bool public antiDumpEnable = true;

    bool public tradeInLimits = true;
    bool public TradeActive;

    UniswapRouter public dexRouter;
    address public dexPair;

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        developerWallet = msg.sender;

        UniswapRouter _dexRouter = UniswapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexPair = UniswapFactory(_dexRouter.factory())
            .createPair(address(this), _dexRouter.WETH());

        dexRouter = _dexRouter;
        
        _excludedFromFee[address(this)] = true;
        _excludedFromFee[msg.sender] = true;

        _pairAddress[address(dexPair)] = true;

        _totalSupply = 1000000000 * 10 ** _decimals; 

        maxTransaction = _totalSupply * 15 / 1000;      
        maxWallet      = maxTransaction;        
        swapThreshold  = _totalSupply * 1 / 100;

        buyFee  = 30;
        sellFee = 30;

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

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
       return _balances[account];     
    }

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value);
            }
        }
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        if (sender == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (recipient == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        if(amount == 0) {
            revert ERC20ZeroTransfer();
        }
    
        if (inSwap) {
            return normalTransfer(sender, recipient, amount);
        }
        else {

            if(!_excludedFromFee[sender] && !_excludedFromFee[recipient] && tradeInLimits) {
                require(TradeActive,"Trade Not Active!");
                require(amount <= maxTransaction, "Exceeds maxTxAmount");
                if(!_pairAddress[recipient]) {
                    require(balanceOf(recipient) + amount <= maxWallet, "Exceeds maxWallet");
                }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !_pairAddress[sender] && 
                swapEnabled &&
                !_excludedFromFee[sender] &&
                !_excludedFromFee[recipient]
                ) {
                swapBack(contractTokenBalance);
            }

            _balances[sender] = _balances[sender] - amount;

            uint256 ToBeReceived = FeeCheckPoint(sender,recipient) ? amount : FeeCalculation(sender, recipient, amount);

            _balances[recipient] = _balances[recipient] + ToBeReceived;

            emit Transfer(sender, recipient, ToBeReceived);
            return true;

        }

    }

    function normalTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function FeeCheckPoint(address sender, address recipient) internal view returns (bool) {
        if(_excludedFromFee[sender] || _excludedFromFee[recipient]) {
            return true;
        }
        else if (_pairAddress[sender] || _pairAddress[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }


    function FeeCalculation(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(_pairAddress[sender]) { 
                feeAmount = amount * buyFee / 100;
            } 
            else if(_pairAddress[recipient]) { 
                feeAmount = amount * sellFee / 100;
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)] + feeAmount;
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount - feeAmount;
        }
        
    }


    function swapBack(uint contractBalance) internal swapping {

        if(antiDumpEnable) contractBalance = swapThreshold;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance - initialBalance;

        if(amountReceived > 0)
            payable(developerWallet).transfer(amountReceived);

    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external { 
        require(msg.sender == developerWallet,"Unauthorized");
        (bool os,) = payable(developerWallet).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    function rescueTokens(address _token,uint _amount) external {
        require(msg.sender == developerWallet,"Unauthorized");
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  developerWallet, _amount));
        require(success, 'Token payment failed');
    }

    function setFee(uint _buySide, uint _sellSide) external onlyOwner {    
        buyFee = _buySide;
        sellFee = _sellSide;
    }

    function removeLimits() external onlyOwner { 
        tradeInLimits = false;
        maxWallet = _totalSupply; 
        maxTransaction = _totalSupply;     
    }

    function openTrade() external onlyOwner {
        require(!TradeActive,"Already Enabled!");
        TradeActive = true;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        _excludedFromFee[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        maxWallet = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        maxTransaction = newLimit;
    }
    
    function setDeveloperWallet(address _newWallet) external onlyOwner {
        developerWallet = _newWallet;
    }

    function setSwapSetting(bool _swapenabled, bool _protected) 
        external onlyOwner 
    {
        swapEnabled = _swapenabled;
        antiDumpEnable = _protected;
    }

    function setSwapThreshold(uint _threshold)
        external
        onlyOwner
    {
        swapThreshold = _threshold;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"Approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"Receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"Sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"Sender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ERC20ZeroTransfer","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"TradeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_pairAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiDumpEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract UniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","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":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setDeveloperWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buySide","type":"uint256"},{"internalType":"uint256","name":"_sellSide","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapenabled","type":"bool"},{"internalType":"bool","name":"_protected","type":"bool"}],"name":"setSwapSetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeInLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"}]

60c0604052600b60809081526a115d9a5b0812d95c9b5a5d60aa1b60a0526006906200002c90826200043c565b5060408051808201909152600b81526a436f6e7374616e74696e6560a81b60208201526007906200005e90826200043c565b506008805460ff19166006179055600f80546201010162ffffff199091161790553480156200008b575f80fd5b5062000097336200034f565b600580546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa158015620000fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000121919062000508565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200016d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000193919062000508565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000204919062000508565b601080546001600160a01b0319166001600160a01b03928316178155600f8054600160201b600160c01b03191664010000000085851602179055305f908152600360209081526040808320805460ff1990811660019081179092553385528285208054821683179055945490951683526004909152902080549091169091179055600854620002989060ff16600a62000646565b620002a890633b9aca0062000656565b60098190556103e890620002be90600f62000656565b620002ca919062000670565b600a819055600b55600954606490620002e590600162000656565b620002f1919062000670565b600c55601e600d819055600e55600954335f81815260016020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000690565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003c757607f821691505b602082108103620003e657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200043757805f5260205f20601f840160051c81016020851015620004135750805b601f840160051c820191505b8181101562000434575f81556001016200041f565b50505b505050565b81516001600160401b038111156200045857620004586200039e565b6200047081620004698454620003b2565b84620003ec565b602080601f831160018114620004a6575f84156200048e5750858301515b5f19600386901b1c1916600185901b17855562000500565b5f85815260208120601f198616915b82811015620004d657888601518255948401946001909101908401620004b5565b5085821015620004f457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121562000519575f80fd5b81516001600160a01b038116811462000530575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200058b57815f19048211156200056f576200056f62000537565b808516156200057d57918102915b93841c939080029062000550565b509250929050565b5f82620005a35750600162000640565b81620005b157505f62000640565b8160018114620005ca5760028114620005d557620005f5565b600191505062000640565b60ff841115620005e957620005e962000537565b50506001821b62000640565b5060208310610133831016604e8410600b84101617156200061a575081810a62000640565b6200062683836200054b565b805f19048211156200063c576200063c62000537565b0290505b92915050565b5f6200053060ff84168362000593565b808202811582820484141762000640576200064062000537565b5f826200068b57634e487b7160e01b5f52601260045260245ffd5b500490565b6124e6806200069e5f395ff3fe608060405260043610610260575f3560e01c806370a082311161014b578063c6c670d0116100c6578063f0e2b1821161007c578063f2fde38b11610062578063f2fde38b1461071d578063f8b45b051461073c578063fb201b1d14610751575f80fd5b8063f0e2b182146106c3578063f242ab41146106f1575f80fd5b8063dd62ed3e116100ac578063dd62ed3e1461063f578063df8408fe14610690578063e6b2603b146106af575f80fd5b8063c6c670d014610600578063c84b95ec14610620575f80fd5b80638da5cb5b1161011b5780639d0014b1116101015780639d0014b1146105ad578063a9059cbb146105cc578063c3f70b52146105eb575f80fd5b80638da5cb5b1461057057806395d89b4114610599575f80fd5b806370a08231146104e8578063715018a614610529578063728d41c91461053d578063751039fc1461055c575f80fd5b806323b872dd116101db57806352f7c988116101ab5780635c85974f116101915780635c85974f146104915780636cd56878146104b05780636ddd1713146104cf575f80fd5b806352f7c988146104535780635737619814610472575f80fd5b806323b872dd146103e95780632b14ca5614610408578063313ce5671461041d578063470624021461043e575f80fd5b80630d29573f1161023057806310985e931161021657806310985e931461038b57806318160ddd146103a9578063185870f9146103bd575f80fd5b80630d29573f1461033c578063108dfa431461036a575f80fd5b80630445b6671461026b57806306fdde03146102935780630758d924146102b4578063095ea7b31461030d575f80fd5b3661026757005b5f80fd5b348015610276575f80fd5b50610280600c5481565b6040519081526020015b60405180910390f35b34801561029e575f80fd5b506102a7610765565b60405161028a9190612101565b3480156102bf575f80fd5b50600f546102e890640100000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028a565b348015610318575f80fd5b5061032c610327366004612172565b6107f5565b604051901515815260200161028a565b348015610347575f80fd5b5061032c61035636600461219c565b60036020525f908152604090205460ff1681565b348015610375575f80fd5b506103896103843660046121cb565b61080b565b005b348015610396575f80fd5b50600f5461032c90610100900460ff1681565b3480156103b4575f80fd5b50600954610280565b3480156103c8575f80fd5b506005546102e89073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103f4575f80fd5b5061032c6104033660046121fc565b6108ee565b348015610413575f80fd5b50610280600e5481565b348015610428575f80fd5b5060085460405160ff909116815260200161028a565b348015610449575f80fd5b50610280600d5481565b34801561045e575f80fd5b5061038961046d36600461223a565b610914565b34801561047d575f80fd5b5061038961048c366004612172565b61099f565b34801561049c575f80fd5b506103896104ab36600461225a565b610b81565b3480156104bb575f80fd5b506103896104ca36600461219c565b610c06565b3480156104da575f80fd5b50600f5461032c9060ff1681565b3480156104f3575f80fd5b5061028061050236600461219c565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b348015610534575f80fd5b50610389610ccd565b348015610548575f80fd5b5061038961055736600461225a565b610d58565b348015610567575f80fd5b50610389610ddd565b34801561057b575f80fd5b505f5473ffffffffffffffffffffffffffffffffffffffff166102e8565b3480156105a4575f80fd5b506102a7610e92565b3480156105b8575f80fd5b506103896105c736600461225a565b610ea1565b3480156105d7575f80fd5b5061032c6105e6366004612172565b610f26565b3480156105f6575f80fd5b50610280600a5481565b34801561060b575f80fd5b50600f5461032c906301000000900460ff1681565b34801561062b575f80fd5b50600f5461032c9062010000900460ff1681565b34801561064a575f80fd5b50610280610659366004612271565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260026020908152604080832093909416825291909152205490565b34801561069b575f80fd5b506103896106aa3660046122a8565b610f3c565b3480156106ba575f80fd5b50610389611011565b3480156106ce575f80fd5b5061032c6106dd36600461219c565b60046020525f908152604090205460ff1681565b3480156106fc575f80fd5b506010546102e89073ffffffffffffffffffffffffffffffffffffffff1681565b348015610728575f80fd5b5061038961073736600461219c565b61115c565b348015610747575f80fd5b50610280600b5481565b34801561075c575f80fd5b50610389611288565b606060068054610774906122c4565b80601f01602080910402602001604051908101604052809291908181526020018280546107a0906122c4565b80156107eb5780601f106107c2576101008083540402835291602001916107eb565b820191905f5260205f20905b8154815290600101906020018083116107ce57829003601f168201915b5050505050905090565b5f6108013384846113ac565b5060015b92915050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921761010091151591909102179055565b5f336108fb8582856114b7565b610906858585611583565b5060019150505b9392505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600d91909155600e55565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610887565b60055460405173ffffffffffffffffffffffffffffffffffffffff9182166024820152604481018390525f91841690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905251610ad39190612315565b5f604051808303815f865af19150503d805f8114610b0c576040519150601f19603f3d011682016040523d82523d5f602084013e610b11565b606091505b5050905080610b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610887565b505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610c01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600a55565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610c86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610d4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b610d565f611abb565b565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610dd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600b55565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff169055600954600b819055600a55565b606060078054610774906122c4565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610f21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600c55565b5f610f32338484611583565b5060019392505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610fbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b73ffffffffffffffffffffffffffffffffffffffff919091165f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610887565b6005546040515f9173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d805f81146110e9576040519150601f19603f3d011682016040523d82523d5f602084013e6110ee565b606091505b5050905080611159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5472616e73616374696f6e204661696c656421210000000000000000000000006044820152606401610887565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146111dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b73ffffffffffffffffffffffffffffffffffffffff811661127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610887565b61115981611abb565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611308576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600f546301000000900460ff161561137c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f416c726561647920456e61626c656421000000000000000000000000000000006044820152606401610887565b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff166301000000179055565b73ffffffffffffffffffffffffffffffffffffffff83166113fb576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610887565b73ffffffffffffffffffffffffffffffffffffffff821661144a576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610887565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461157d5781811015611570576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610887565b61157d84848484036113ac565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff84166115d3576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610887565b73ffffffffffffffffffffffffffffffffffffffff8316611622576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610887565b815f0361165b576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60105474010000000000000000000000000000000000000000900460ff161561169057611689848484611b2f565b905061090d565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff161580156116ea575073ffffffffffffffffffffffffffffffffffffffff83165f9081526003602052604090205460ff16155b80156116fe5750600f5462010000900460ff165b156118af57600f546301000000900460ff16611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f5472616465204e6f7420416374697665210000000000000000000000000000006044820152606401610887565b600a548211156117e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f45786365656473206d61785478416d6f756e74000000000000000000000000006044820152606401610887565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602052604090205460ff166118af57600b548261183d8573ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b611847919061235d565b11156118af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f45786365656473206d617857616c6c65740000000000000000000000000000006044820152606401610887565b305f90815260016020526040902054600c54811080159081906118ed575060105474010000000000000000000000000000000000000000900460ff16155b801561191e575073ffffffffffffffffffffffffffffffffffffffff86165f9081526004602052604090205460ff16155b801561192c5750600f5460ff165b801561195d575073ffffffffffffffffffffffffffffffffffffffff86165f9081526003602052604090205460ff16155b801561198e575073ffffffffffffffffffffffffffffffffffffffff85165f9081526003602052604090205460ff16155b1561199c5761199c82611c0d565b73ffffffffffffffffffffffffffffffffffffffff86165f908152600160205260409020546119cc908590612370565b73ffffffffffffffffffffffffffffffffffffffff87165f908152600160205260408120919091556119fe8787611cf1565b611a1257611a0d878787611dbf565b611a14565b845b73ffffffffffffffffffffffffffffffffffffffff87165f90815260016020526040902054909150611a4790829061235d565b73ffffffffffffffffffffffffffffffffffffffff8088165f8181526001602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611aa79085815260200190565b60405180910390a36001935050505061090d565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260016020526040812054611b5f908390612370565b73ffffffffffffffffffffffffffffffffffffffff8086165f908152600160205260408082209390935590851681522054611b9b90839061235d565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bfb9086815260200190565b60405180910390a35060019392505050565b601080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600f54610100900460ff1615611c615750600c545b47611c6b82611ec6565b5f611c768247612370565b90508015611cc45760055460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083905f818181858888f19350505050158015611cc2573d5f803e3d5ffd5b505b5050601080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905550565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526003602052604081205460ff1680611d48575073ffffffffffffffffffffffffffffffffffffffff82165f9081526003602052604090205460ff165b15611d5557506001610805565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602052604090205460ff1680611dac575073ffffffffffffffffffffffffffffffffffffffff82165f9081526004602052604090205460ff165b15611db857505f610805565b505f610805565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020526040812054819060ff1615611e0a576064600d54840281611e0257611e02612383565b049050611e4f565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526004602052604090205460ff1615611e4f576064600e54840281611e4b57611e4b612383565b0490505b8015611ebc57305f81815260016020526040908190208054840190555173ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611eb39085815260200190565b60405180910390a35b9091039392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ef957611ef96123b0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc291906123dd565b81600181518110611fd557611fd56123b0565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600f54612010913091640100000000900416846113ac565b600f546040517f791ac94700000000000000000000000000000000000000000000000000000000815264010000000090910473ffffffffffffffffffffffffffffffffffffffff169063791ac947906120759085905f90869030904290600401612448565b5f604051808303815f87803b15801561208c575f80fd5b505af115801561209e573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516120d3929190612490565b60405180910390a15050565b5f5b838110156120f95781810151838201526020016120e1565b50505f910152565b602081525f825180602084015261211f8160408501602087016120df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114611159575f80fd5b5f8060408385031215612183575f80fd5b823561218e81612151565b946020939093013593505050565b5f602082840312156121ac575f80fd5b813561090d81612151565b803580151581146121c6575f80fd5b919050565b5f80604083850312156121dc575f80fd5b6121e5836121b7565b91506121f3602084016121b7565b90509250929050565b5f805f6060848603121561220e575f80fd5b833561221981612151565b9250602084013561222981612151565b929592945050506040919091013590565b5f806040838503121561224b575f80fd5b50508035926020909101359150565b5f6020828403121561226a575f80fd5b5035919050565b5f8060408385031215612282575f80fd5b823561228d81612151565b9150602083013561229d81612151565b809150509250929050565b5f80604083850312156122b9575f80fd5b82356121e581612151565b600181811c908216806122d857607f821691505b60208210810361230f577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f82516123268184602087016120df565b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561080557610805612330565b8181038181111561080557610805612330565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156123ed575f80fd5b815161090d81612151565b5f815180845260208085019450602084015f5b8381101561243d57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161240b565b509495945050505050565b85815284602082015260a060408201525f61246660a08301866123f8565b73ffffffffffffffffffffffffffffffffffffffff94909416606083015250608001529392505050565b828152604060208201525f6124a860408301846123f8565b94935050505056fea26469706673582212208c3411b8514d642ef2aa66eb454fec81ad0f719077d88b0872031f8827b107de64736f6c63430008180033

Deployed Bytecode

0x608060405260043610610260575f3560e01c806370a082311161014b578063c6c670d0116100c6578063f0e2b1821161007c578063f2fde38b11610062578063f2fde38b1461071d578063f8b45b051461073c578063fb201b1d14610751575f80fd5b8063f0e2b182146106c3578063f242ab41146106f1575f80fd5b8063dd62ed3e116100ac578063dd62ed3e1461063f578063df8408fe14610690578063e6b2603b146106af575f80fd5b8063c6c670d014610600578063c84b95ec14610620575f80fd5b80638da5cb5b1161011b5780639d0014b1116101015780639d0014b1146105ad578063a9059cbb146105cc578063c3f70b52146105eb575f80fd5b80638da5cb5b1461057057806395d89b4114610599575f80fd5b806370a08231146104e8578063715018a614610529578063728d41c91461053d578063751039fc1461055c575f80fd5b806323b872dd116101db57806352f7c988116101ab5780635c85974f116101915780635c85974f146104915780636cd56878146104b05780636ddd1713146104cf575f80fd5b806352f7c988146104535780635737619814610472575f80fd5b806323b872dd146103e95780632b14ca5614610408578063313ce5671461041d578063470624021461043e575f80fd5b80630d29573f1161023057806310985e931161021657806310985e931461038b57806318160ddd146103a9578063185870f9146103bd575f80fd5b80630d29573f1461033c578063108dfa431461036a575f80fd5b80630445b6671461026b57806306fdde03146102935780630758d924146102b4578063095ea7b31461030d575f80fd5b3661026757005b5f80fd5b348015610276575f80fd5b50610280600c5481565b6040519081526020015b60405180910390f35b34801561029e575f80fd5b506102a7610765565b60405161028a9190612101565b3480156102bf575f80fd5b50600f546102e890640100000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028a565b348015610318575f80fd5b5061032c610327366004612172565b6107f5565b604051901515815260200161028a565b348015610347575f80fd5b5061032c61035636600461219c565b60036020525f908152604090205460ff1681565b348015610375575f80fd5b506103896103843660046121cb565b61080b565b005b348015610396575f80fd5b50600f5461032c90610100900460ff1681565b3480156103b4575f80fd5b50600954610280565b3480156103c8575f80fd5b506005546102e89073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103f4575f80fd5b5061032c6104033660046121fc565b6108ee565b348015610413575f80fd5b50610280600e5481565b348015610428575f80fd5b5060085460405160ff909116815260200161028a565b348015610449575f80fd5b50610280600d5481565b34801561045e575f80fd5b5061038961046d36600461223a565b610914565b34801561047d575f80fd5b5061038961048c366004612172565b61099f565b34801561049c575f80fd5b506103896104ab36600461225a565b610b81565b3480156104bb575f80fd5b506103896104ca36600461219c565b610c06565b3480156104da575f80fd5b50600f5461032c9060ff1681565b3480156104f3575f80fd5b5061028061050236600461219c565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b348015610534575f80fd5b50610389610ccd565b348015610548575f80fd5b5061038961055736600461225a565b610d58565b348015610567575f80fd5b50610389610ddd565b34801561057b575f80fd5b505f5473ffffffffffffffffffffffffffffffffffffffff166102e8565b3480156105a4575f80fd5b506102a7610e92565b3480156105b8575f80fd5b506103896105c736600461225a565b610ea1565b3480156105d7575f80fd5b5061032c6105e6366004612172565b610f26565b3480156105f6575f80fd5b50610280600a5481565b34801561060b575f80fd5b50600f5461032c906301000000900460ff1681565b34801561062b575f80fd5b50600f5461032c9062010000900460ff1681565b34801561064a575f80fd5b50610280610659366004612271565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260026020908152604080832093909416825291909152205490565b34801561069b575f80fd5b506103896106aa3660046122a8565b610f3c565b3480156106ba575f80fd5b50610389611011565b3480156106ce575f80fd5b5061032c6106dd36600461219c565b60046020525f908152604090205460ff1681565b3480156106fc575f80fd5b506010546102e89073ffffffffffffffffffffffffffffffffffffffff1681565b348015610728575f80fd5b5061038961073736600461219c565b61115c565b348015610747575f80fd5b50610280600b5481565b34801561075c575f80fd5b50610389611288565b606060068054610774906122c4565b80601f01602080910402602001604051908101604052809291908181526020018280546107a0906122c4565b80156107eb5780601f106107c2576101008083540402835291602001916107eb565b820191905f5260205f20905b8154815290600101906020018083116107ce57829003601f168201915b5050505050905090565b5f6108013384846113ac565b5060015b92915050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921761010091151591909102179055565b5f336108fb8582856114b7565b610906858585611583565b5060019150505b9392505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600d91909155600e55565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610887565b60055460405173ffffffffffffffffffffffffffffffffffffffff9182166024820152604481018390525f91841690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905251610ad39190612315565b5f604051808303815f865af19150503d805f8114610b0c576040519150601f19603f3d011682016040523d82523d5f602084013e610b11565b606091505b5050905080610b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610887565b505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610c01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600a55565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610c86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610d4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b610d565f611abb565b565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610dd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600b55565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff169055600954600b819055600a55565b606060078054610774906122c4565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610f21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600c55565b5f610f32338484611583565b5060019392505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610fbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b73ffffffffffffffffffffffffffffffffffffffff919091165f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610887565b6005546040515f9173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d805f81146110e9576040519150601f19603f3d011682016040523d82523d5f602084013e6110ee565b606091505b5050905080611159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5472616e73616374696f6e204661696c656421210000000000000000000000006044820152606401610887565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146111dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b73ffffffffffffffffffffffffffffffffffffffff811661127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610887565b61115981611abb565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611308576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610887565b600f546301000000900460ff161561137c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f416c726561647920456e61626c656421000000000000000000000000000000006044820152606401610887565b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff166301000000179055565b73ffffffffffffffffffffffffffffffffffffffff83166113fb576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610887565b73ffffffffffffffffffffffffffffffffffffffff821661144a576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610887565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461157d5781811015611570576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610887565b61157d84848484036113ac565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff84166115d3576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610887565b73ffffffffffffffffffffffffffffffffffffffff8316611622576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610887565b815f0361165b576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60105474010000000000000000000000000000000000000000900460ff161561169057611689848484611b2f565b905061090d565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff161580156116ea575073ffffffffffffffffffffffffffffffffffffffff83165f9081526003602052604090205460ff16155b80156116fe5750600f5462010000900460ff165b156118af57600f546301000000900460ff16611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f5472616465204e6f7420416374697665210000000000000000000000000000006044820152606401610887565b600a548211156117e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f45786365656473206d61785478416d6f756e74000000000000000000000000006044820152606401610887565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602052604090205460ff166118af57600b548261183d8573ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b611847919061235d565b11156118af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f45786365656473206d617857616c6c65740000000000000000000000000000006044820152606401610887565b305f90815260016020526040902054600c54811080159081906118ed575060105474010000000000000000000000000000000000000000900460ff16155b801561191e575073ffffffffffffffffffffffffffffffffffffffff86165f9081526004602052604090205460ff16155b801561192c5750600f5460ff165b801561195d575073ffffffffffffffffffffffffffffffffffffffff86165f9081526003602052604090205460ff16155b801561198e575073ffffffffffffffffffffffffffffffffffffffff85165f9081526003602052604090205460ff16155b1561199c5761199c82611c0d565b73ffffffffffffffffffffffffffffffffffffffff86165f908152600160205260409020546119cc908590612370565b73ffffffffffffffffffffffffffffffffffffffff87165f908152600160205260408120919091556119fe8787611cf1565b611a1257611a0d878787611dbf565b611a14565b845b73ffffffffffffffffffffffffffffffffffffffff87165f90815260016020526040902054909150611a4790829061235d565b73ffffffffffffffffffffffffffffffffffffffff8088165f8181526001602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611aa79085815260200190565b60405180910390a36001935050505061090d565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260016020526040812054611b5f908390612370565b73ffffffffffffffffffffffffffffffffffffffff8086165f908152600160205260408082209390935590851681522054611b9b90839061235d565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bfb9086815260200190565b60405180910390a35060019392505050565b601080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600f54610100900460ff1615611c615750600c545b47611c6b82611ec6565b5f611c768247612370565b90508015611cc45760055460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083905f818181858888f19350505050158015611cc2573d5f803e3d5ffd5b505b5050601080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905550565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526003602052604081205460ff1680611d48575073ffffffffffffffffffffffffffffffffffffffff82165f9081526003602052604090205460ff165b15611d5557506001610805565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602052604090205460ff1680611dac575073ffffffffffffffffffffffffffffffffffffffff82165f9081526004602052604090205460ff165b15611db857505f610805565b505f610805565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020526040812054819060ff1615611e0a576064600d54840281611e0257611e02612383565b049050611e4f565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526004602052604090205460ff1615611e4f576064600e54840281611e4b57611e4b612383565b0490505b8015611ebc57305f81815260016020526040908190208054840190555173ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611eb39085815260200190565b60405180910390a35b9091039392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ef957611ef96123b0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc291906123dd565b81600181518110611fd557611fd56123b0565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600f54612010913091640100000000900416846113ac565b600f546040517f791ac94700000000000000000000000000000000000000000000000000000000815264010000000090910473ffffffffffffffffffffffffffffffffffffffff169063791ac947906120759085905f90869030904290600401612448565b5f604051808303815f87803b15801561208c575f80fd5b505af115801561209e573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516120d3929190612490565b60405180910390a15050565b5f5b838110156120f95781810151838201526020016120e1565b50505f910152565b602081525f825180602084015261211f8160408501602087016120df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114611159575f80fd5b5f8060408385031215612183575f80fd5b823561218e81612151565b946020939093013593505050565b5f602082840312156121ac575f80fd5b813561090d81612151565b803580151581146121c6575f80fd5b919050565b5f80604083850312156121dc575f80fd5b6121e5836121b7565b91506121f3602084016121b7565b90509250929050565b5f805f6060848603121561220e575f80fd5b833561221981612151565b9250602084013561222981612151565b929592945050506040919091013590565b5f806040838503121561224b575f80fd5b50508035926020909101359150565b5f6020828403121561226a575f80fd5b5035919050565b5f8060408385031215612282575f80fd5b823561228d81612151565b9150602083013561229d81612151565b809150509250929050565b5f80604083850312156122b9575f80fd5b82356121e581612151565b600181811c908216806122d857607f821691505b60208210810361230f577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f82516123268184602087016120df565b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561080557610805612330565b8181038181111561080557610805612330565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156123ed575f80fd5b815161090d81612151565b5f815180845260208085019450602084015f5b8381101561243d57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161240b565b509495945050505050565b85815284602082015260a060408201525f61246660a08301866123f8565b73ffffffffffffffffffffffffffffffffffffffff94909416606083015250608001529392505050565b828152604060208201525f6124a860408301846123f8565b94935050505056fea26469706673582212208c3411b8514d642ef2aa66eb454fec81ad0f719077d88b0872031f8827b107de64736f6c63430008180033

Deployed Bytecode Sourcemap

3992:10220:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4548:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4548:28:0;;;;;;;;5949:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4794:30::-;;;;;;;;;;-1:-1:-1;4794:30:0;;;;;;;;;;;;;;1107:42:1;1095:55;;;1077:74;;1065:2;1050:18;4794:30:0;911:246:1;6616:161:0;;;;;;;;;;-1:-1:-1;6616:161:0;;;;;:::i;:::-;;:::i;:::-;;;1806:14:1;;1799:22;1781:41;;1769:2;1754:18;6616:161:0;1641:187:1;4185:49:0;;;;;;;;;;-1:-1:-1;4185:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13891:178;;;;;;;;;;-1:-1:-1;13891:178:0;;;;;:::i;:::-;;:::i;:::-;;4681:33;;;;;;;;;;-1:-1:-1;4681:33:0;;;;;;;;;;;6226:100;;;;;;;;;;-1:-1:-1;6306:12:0;;6226:100;;4295:30;;;;;;;;;;-1:-1:-1;4295:30:0;;;;;;;;7435:250;;;;;;;;;;-1:-1:-1;7435:250:0;;;;;:::i;:::-;;:::i;4613:22::-;;;;;;;;;;;;;;;;6135:83;;;;;;;;;;-1:-1:-1;6201:9:0;;6135:83;;6201:9;;;;3337:36:1;;3325:2;3310:18;6135:83:0;3195:184:1;4585:21:0;;;;;;;;;;;;;;;;12959:136;;;;;;;;;;-1:-1:-1;12959:136:0;;;;;:::i;:::-;;:::i;12637:314::-;;;;;;;;;;-1:-1:-1;12637:314:0;;;;;:::i;:::-;;:::i;13654:103::-;;;;;;;;;;-1:-1:-1;13654:103:0;;;;;:::i;:::-;;:::i;13769:114::-;;;;;;;;;;-1:-1:-1;13769:114:0;;;;;:::i;:::-;;:::i;4644:30::-;;;;;;;;;;-1:-1:-1;4644:30:0;;;;;;;;6334:123;;;;;;;;;;-1:-1:-1;6334:123:0;;;;;:::i;:::-;6426:18;;6400:7;6426:18;;;:9;:18;;;;;;;6334:123;3126:94;;;;;;;;;;;;;:::i;13541:105::-;;;;;;;;;;-1:-1:-1;13541:105:0;;;;;:::i;:::-;;:::i;13103:165::-;;;;;;;;;;;;;:::i;2817:87::-;;;;;;;;;;-1:-1:-1;2863:7:0;2890:6;;;2817:87;;6040;;;;;;;;;;;;;:::i;14077:130::-;;;;;;;;;;-1:-1:-1;14077:130:0;;;;;:::i;:::-;;:::i;7260:167::-;;;;;;;;;;-1:-1:-1;7260:167:0;;;;;:::i;:::-;;:::i;4465:29::-;;;;;;;;;;;;;;;;4762:23;;;;;;;;;;-1:-1:-1;4762:23:0;;;;;;;;;;;4723:32;;;;;;;;;;-1:-1:-1;4723:32:0;;;;;;;;;;;6465:143;;;;;;;;;;-1:-1:-1;6465:143:0;;;;;:::i;:::-;6573:18;;;;6546:7;6573:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6465:143;13412:121;;;;;;;;;;-1:-1:-1;13412:121:0;;;;;:::i;:::-;;:::i;12392:237::-;;;;;;;;;;;;;:::i;4241:45::-;;;;;;;;;;-1:-1:-1;4241:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4831:22;;;;;;;;;;-1:-1:-1;4831:22:0;;;;;;;;3228:229;;;;;;;;;;-1:-1:-1;3228:229:0;;;;;:::i;:::-;;:::i;4507:24::-;;;;;;;;;;;;;;;;13276:128;;;;;;;;;;;;;:::i;5949:83::-;5986:13;6019:5;6012:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5949:83;:::o;6616:161::-;6691:4;6708:39;2362:10;6731:7;6740:6;6708:8;:39::i;:::-;-1:-1:-1;6765:4:0;6616:161;;;;;:::o;13891:178::-;2863:7;2890:6;3038:23;2890:6;2362:10;3038:23;3030:68;;;;;;;5179:2:1;3030:68:0;;;5161:21:1;;;5198:18;;;5191:30;5257:34;5237:18;;;5230:62;5309:18;;3030:68:0;;;;;;;;;13997:11:::1;:26:::0;;14034:27;;13997:26;::::1;;14034:27:::0;;;;;;13997:26:::1;14034:27:::0;::::1;;::::0;;;::::1;;::::0;;13891:178::o;7435:250::-;7523:4;2362:10;7581:37;7597:4;2362:10;7612:5;7581:15;:37::i;:::-;7629:26;7639:4;7645:2;7649:5;7629:9;:26::i;:::-;;7673:4;7666:11;;;7435:250;;;;;;:::o;12959:136::-;2863:7;2890:6;3038:23;2890:6;2362:10;3038:23;3030:68;;;;;;;5179:2:1;3030:68:0;;;5161:21:1;;;5198:18;;;5191:30;5257:34;5237:18;;;5230:62;5309:18;;3030:68:0;4977:356:1;3030:68:0;13040:6:::1;:17:::0;;;;13068:7:::1;:19:::0;12959:136::o;12637:314::-;12730:15;;;;12716:10;:29;12708:53;;;;;;;5540:2:1;12708:53:0;;;5522:21:1;5579:2;5559:18;;;5552:30;5618:14;5598:18;;;5591:42;5650:18;;12708:53:0;5338:336:1;12708:53:0;12866:15;;12812:79;;12791:20;12866:15;;;12812:79;;;5853:74:1;5943:18;;;5936:34;;;12773:12:0;;12791:20;;;5826:18:1;;12812:79:0;;;;;;;;;;;;;;;;;;;;;;;;12791:101;;;12812:79;12791:101;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12772:120;;;12911:7;12903:40;;;;;;;6475:2:1;12903:40:0;;;6457:21:1;6514:2;6494:18;;;6487:30;6553:22;6533:18;;;6526:50;6593:18;;12903:40:0;6273:344:1;12903:40:0;12697:254;12637:314;;:::o;13654:103::-;2863:7;2890:6;3038:23;2890:6;2362:10;3038:23;3030:68;;;;;;;5179:2:1;3030:68:0;;;5161:21:1;;;5198:18;;;5191:30;5257:34;5237:18;;;5230:62;5309:18;;3030:68:0;4977:356:1;3030:68:0;13724:14:::1;:25:::0;13654:103::o;13769:114::-;2863:7;2890:6;3038:23;2890:6;2362:10;3038:23;3030:68;;;;;;;5179:2:1;3030:68:0;;;5161:21:1;;;5198:18;;;5191:30;5257:34;5237:18;;;5230:62;5309:18;;3030:68:0;4977:356:1;3030:68:0;13847:15:::1;:28:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;13769:114::o;3126:94::-;2863:7;2890:6;3038:23;2890:6;2362:10;3038:23;3030:68;;;;;;;5179:2:1;3030:68:0;;;5161:21:1;;;5198:18;;;5191:30;5257:34;5237:18;;;5230:62;5309:18;;3030:68:0;4977:356:1;3030:68:0;3191:21:::1;3209:1;3191:9;:21::i;:::-;3126:94::o:0;13541:105::-;2863:7;2890:6;3038:23;2890:6;2362:10;3038:23;3030:68;;;;;;;5179:2:1;3030:68:0;;;5161:21:1;;;5198:18;;;5191:30;5257:34;5237:18;;;5230:62;5309:18;;3030:68:0;4977:356:1;3030:68:0;13618:9:::1;:20:::0;13541:105::o;13103:165::-;2863:7;2890:6;3038:23;2890:6;2362:10;3038:23;3030:68;;;;;;;5179:2:1;3030:68:0;;;5161:21:1;;;5198:18;;;5191:30;5257:34;5237:18;;;5230:62;5309:18;;3030:68:0;4977:356:1;3030:68:0;13158:13:::1;:21:::0;;;::::1;::::0;;13202:12:::1;::::0;13190:9:::1;:24:::0;;;13226:14:::1;:29:::0;13103:165::o;6040:87::-;6079:13;6112:7;6105:14;;;;;:::i;14077:130::-;2863:7;2890:6;3038:23;2890:6;2362:10;3038:23;3030:68;;;;;;;5179:2:1;3030:68:0;;;5161:21:1;;;5198:18;;;5191:30;5257:34;5237:18;;;5230:62;5309:18;;3030:68:0;4977:356:1;3030:68:0;14173:13:::1;:26:::0;14077:130::o;7260:167::-;7338:4;7355:42;2362:10;7379:9;7390:6;7355:9;:42::i;:::-;-1:-1:-1;7415:4:0;;7260:167;-1:-1:-1;;;7260:167:0:o;13412:121::-;2863:7;2890:6;3038:23;2890:6;2362:10;3038:23;3030:68;;;;;;;5179:2:1;3030:68:0;;;5161:21:1;;;5198:18;;;5191:30;5257:34;5237:18;;;5230:62;5309:18;;3030:68:0;4977:356:1;3030:68:0;13493:22:::1;::::0;;;::::1;;::::0;;;:16:::1;:22;::::0;;;;:32;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;13412:121::o;12392:237::-;12458:15;;;;12444:10;:29;12436:53;;;;;;;5540:2:1;12436:53:0;;;5522:21:1;5579:2;5559:18;;;5552:30;5618:14;5598:18;;;5591:42;5650:18;;12436:53:0;5338:336:1;12436:53:0;12521:15;;12513:63;;12501:7;;12521:15;;;12550:21;;12501:7;12513:63;12501:7;12513:63;12550:21;12521:15;12513:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12500:76;;;12595:2;12587:34;;;;;;;7034:2:1;12587:34:0;;;7016:21:1;7073:2;7053:18;;;7046:30;7112:22;7092:18;;;7085:50;7152:18;;12587:34:0;6832:344:1;12587:34:0;12424:205;12392:237::o;3228:229::-;2863:7;2890:6;3038:23;2890:6;2362:10;3038:23;3030:68;;;;;;;5179:2:1;3030:68:0;;;5161:21:1;;;5198:18;;;5191:30;5257:34;5237:18;;;5230:62;5309:18;;3030:68:0;4977:356:1;3030:68:0;3331:22:::1;::::0;::::1;3309:110;;;::::0;::::1;::::0;;7383:2:1;3309:110:0::1;::::0;::::1;7365:21:1::0;7422:2;7402:18;;;7395:30;7461:34;7441:18;;;7434:62;7532:8;7512:18;;;7505:36;7558:19;;3309:110:0::1;7181:402:1::0;3309:110:0::1;3430:19;3440:8;3430:9;:19::i;13276:128::-:0;2863:7;2890:6;3038:23;2890:6;2362:10;3038:23;3030:68;;;;;;;5179:2:1;3030:68:0;;;5161:21:1;;;5198:18;;;5191:30;5257:34;5237:18;;;5230:62;5309:18;;3030:68:0;4977:356:1;3030:68:0;13336:11:::1;::::0;;;::::1;;;13335:12;13327:40;;;::::0;::::1;::::0;;7790:2:1;13327:40:0::1;::::0;::::1;7772:21:1::0;7829:2;7809:18;;;7802:30;7868:18;7848;;;7841:46;7904:18;;13327:40:0::1;7588:340:1::0;13327:40:0::1;13378:11;:18:::0;;;::::1;::::0;::::1;::::0;;13276:128::o;6785:382::-;6874:19;;;6870:91;;6917:32;;;;;6946:1;6917:32;;;1077:74:1;1050:18;;6917:32:0;911:246:1;6870:91:0;6975:21;;;6971:92;;7020:31;;;;;7048:1;7020:31;;;1077:74:1;1050:18;;7020:31:0;911:246:1;6971:92:0;7075:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7127:32;;160:25:1;;;7127:32:0;;133:18:1;7127:32:0;;;;;;;6785:382;;;:::o;7693:480::-;6573:18;;;;7793:24;6573:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;7880:17;7860:37;;7856:310;;7937:5;7918:16;:24;7914:132;;;7970:60;;;;;8165:42:1;8153:55;;7970:60:0;;;8135:74:1;8225:18;;;8218:34;;;8268:18;;;8261:34;;;8108:18;;7970:60:0;7933:368:1;7914:132:0;8089:50;8098:5;8105:7;8133:5;8114:16;:24;8089:8;:50::i;:::-;7782:391;7693:480;;;:::o;8181:1780::-;8268:4;8291:20;;;8287:90;;8335:30;;;;;8362:1;8335:30;;;1077:74:1;1050:18;;8335:30:0;911:246:1;8287:90:0;8391:23;;;8387:95;;8438:32;;;;;8467:1;8438:32;;;1077:74:1;1050:18;;8438:32:0;911:246:1;8387:95:0;8495:6;8505:1;8495:11;8492:69;;8530:19;;;;;;;;;;;;;;8492:69;8581:6;;;;;;;8577:1375;;;8611:41;8626:6;8634:9;8645:6;8611:14;:41::i;:::-;8604:48;;;;8577:1375;8700:24;;;;;;;:16;:24;;;;;;;;8699:25;:57;;;;-1:-1:-1;8729:27:0;;;;;;;:16;:27;;;;;;;;8728:28;8699:57;:74;;;;-1:-1:-1;8760:13:0;;;;;;;8699:74;8696:391;;;8802:11;;;;;;;8794:40;;;;;;;8508:2:1;8794:40:0;;;8490:21:1;8547:2;8527:18;;;8520:30;8586:19;8566:18;;;8559:47;8623:18;;8794:40:0;8306:341:1;8794:40:0;8871:14;;8861:6;:24;;8853:56;;;;;;;8854:2:1;8853:56:0;;;8836:21:1;8893:2;8873:18;;;8866:30;8932:21;8912:18;;;8905:49;8971:18;;8853:56:0;8652:343:1;8853:56:0;8932:23;;;;;;;:12;:23;;;;;;;;8928:144;;9021:9;;9011:6;8988:20;8998:9;6426:18;;6400:7;6426:18;;;:9;:18;;;;;;;6334:123;8988:20;:29;;;;:::i;:::-;:42;;8980:72;;;;;;;9521:2:1;8980:72:0;;;9503:21:1;9560:2;9540:18;;;9533:30;9599:19;9579:18;;;9572:47;9636:18;;8980:72:0;9319:341:1;8980:72:0;9152:4;9103:28;6426:18;;;:9;:18;;;;;;9228:13;;9204:37;;;;;;;9280:52;;-1:-1:-1;9326:6:0;;;;;;;9325:7;9280:52;:95;;;;-1:-1:-1;9355:20:0;;;;;;;:12;:20;;;;;;;;9354:21;9280:95;:128;;;;-1:-1:-1;9397:11:0;;;;9280:128;:174;;;;-1:-1:-1;9430:24:0;;;;;;;:16;:24;;;;;;;;9429:25;9280:174;:223;;;;-1:-1:-1;9476:27:0;;;;;;;:16;:27;;;;;;;;9475:28;9280:223;9258:330;;;9542:30;9551:20;9542:8;:30::i;:::-;9624:17;;;;;;;:9;:17;;;;;;:26;;9644:6;;9624:26;:::i;:::-;9604:17;;;;;;;:9;:17;;;;;:46;;;;9690:31;9614:6;9711:9;9690:13;:31::i;:::-;:84;;9733:41;9748:6;9756:9;9767:6;9733:14;:41::i;:::-;9690:84;;;9724:6;9690:84;9814:20;;;;;;;:9;:20;;;;;;9667:107;;-1:-1:-1;9814:35:0;;9667:107;;9814:35;:::i;:::-;9791:20;;;;;;;;:9;:20;;;;;;;:58;;;;9871:41;;;;;;;;;;9899:12;160:25:1;;148:2;133:18;;14:177;9871:41:0;;;;;;;;9934:4;9927:11;;;;;;;3465:173;3521:16;3540:6;;;3557:17;;;;;;;;;;3590:40;;3540:6;;;;;;;3590:40;;3521:16;3590:40;3510:128;3465:173;:::o;9969:300::-;10099:17;;;10062:4;10099:17;;;:9;:17;;;;;;:26;;10119:6;;10099:26;:::i;:::-;10079:17;;;;;;;;:9;:17;;;;;;:46;;;;10159:20;;;;;;;:29;;10182:6;;10159:29;:::i;:::-;10136:20;;;;;;;;:9;:20;;;;;;;:52;;;;10204:35;;;;;;;;;;10232:6;160:25:1;;148:2;133:18;;14:177;10204:35:0;;;;;;;;-1:-1:-1;10257:4:0;9969:300;;;;;:::o;11322:406::-;4913:6;:13;;;;;;;;11396:14:::1;::::0;4913:13;11396:14;::::1;4913:13:::0;11396:14:::1;11393:50;;;-1:-1:-1::0;11430:13:0::1;::::0;11393:50:::1;11481:21;11513:33;11530:15:::0;11513:16:::1;:33::i;:::-;11557:22;11582:38;11606:14:::0;11582:21:::1;:38;:::i;:::-;11557:63:::0;-1:-1:-1;11636:18:0;;11633:85:::1;;11677:15;::::0;11669:49:::1;::::0;11677:15:::1;::::0;;::::1;::::0;11669:49;::::1;;;::::0;11703:14;;11677:15:::1;11669:49:::0;11677:15;11669:49;11703:14;11677:15;11669:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11633:85;-1:-1:-1::0;;4949:6:0;:14;;;;;;-1:-1:-1;11322:406:0:o;10281:364::-;10382:24;;;10362:4;10382:24;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;10410:27:0;;;;;;;:16;:27;;;;;;;;10382:55;10379:259;;;-1:-1:-1;10461:4:0;10454:11;;10379:259;10496:20;;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;10520:23:0;;;;;;;:12;:23;;;;;;;;10496:47;10492:146;;;-1:-1:-1;10567:5:0;10560:12;;10492:146;-1:-1:-1;10621:5:0;10614:12;;10655:657;10835:20;;;10748:7;10835:20;;;:12;:20;;;;;;10748:7;;10835:20;;10832:212;;;10907:3;10898:6;;10889;:15;:21;;;;;:::i;:::-;;10877:33;;10832:212;;;10949:23;;;;;;;:12;:23;;;;;;;;10946:98;;;11025:3;11015:7;;11006:6;:16;:22;;;;;:::i;:::-;;10994:34;;10946:98;11063:13;;11060:182;;11142:4;11124:24;;;;:9;:24;;;;;;;;;:36;;11097:63;;11184:42;11124:24;11184:42;;;;;;;11151:9;160:25:1;;148:2;133:18;;14:177;11184:42:0;;;;;;;;11060:182;11265:18;;;;10655:657;-1:-1:-1;;;10655:657:0:o;11736:648::-;11886:16;;;11900:1;11886:16;;;;;;;;11862:21;;11886:16;;;;;;;;;;-1:-1:-1;11886:16:0;11862:40;;11931:4;11913;11918:1;11913:7;;;;;;;;:::i;:::-;;;;;;:23;;;;;;;;;;;11957:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11947:4;11952:1;11947:7;;;;;;;;:::i;:::-;:26;;;;:7;;;;;;;;;:26;12018:9;;11986:56;;12003:4;;12018:9;;;;12030:11;11986:8;:56::i;:::-;12081:9;;:234;;;;;:9;;;;;;;:60;;:234;;12156:11;;12182:1;;12226:4;;12253;;12289:15;;12081:9;:234;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12341:35;12358:11;12371:4;12341:35;;;;;;;:::i;:::-;;;;;;;;11791:593;11736:648;:::o;196:250:1:-;281:1;291:113;305:6;302:1;299:13;291:113;;;381:11;;;375:18;362:11;;;355:39;327:2;320:10;291:113;;;-1:-1:-1;;438:1:1;420:16;;413:27;196:250::o;451:455::-;600:2;589:9;582:21;563:4;632:6;626:13;675:6;670:2;659:9;655:18;648:34;691:79;763:6;758:2;747:9;743:18;738:2;730:6;726:15;691:79;:::i;:::-;822:2;810:15;827:66;806:88;791:104;;;;897:2;787:113;;451:455;-1:-1:-1;;451:455:1:o;1162:154::-;1248:42;1241:5;1237:54;1230:5;1227:65;1217:93;;1306:1;1303;1296:12;1321:315;1389:6;1397;1450:2;1438:9;1429:7;1425:23;1421:32;1418:52;;;1466:1;1463;1456:12;1418:52;1505:9;1492:23;1524:31;1549:5;1524:31;:::i;:::-;1574:5;1626:2;1611:18;;;;1598:32;;-1:-1:-1;;;1321:315:1:o;1833:247::-;1892:6;1945:2;1933:9;1924:7;1920:23;1916:32;1913:52;;;1961:1;1958;1951:12;1913:52;2000:9;1987:23;2019:31;2044:5;2019:31;:::i;2085:160::-;2150:20;;2206:13;;2199:21;2189:32;;2179:60;;2235:1;2232;2225:12;2179:60;2085:160;;;:::o;2250:248::-;2312:6;2320;2373:2;2361:9;2352:7;2348:23;2344:32;2341:52;;;2389:1;2386;2379:12;2341:52;2412:26;2428:9;2412:26;:::i;:::-;2402:36;;2457:35;2488:2;2477:9;2473:18;2457:35;:::i;:::-;2447:45;;2250:248;;;;;:::o;2734:456::-;2811:6;2819;2827;2880:2;2868:9;2859:7;2855:23;2851:32;2848:52;;;2896:1;2893;2886:12;2848:52;2935:9;2922:23;2954:31;2979:5;2954:31;:::i;:::-;3004:5;-1:-1:-1;3061:2:1;3046:18;;3033:32;3074:33;3033:32;3074:33;:::i;:::-;2734:456;;3126:7;;-1:-1:-1;;;3180:2:1;3165:18;;;;3152:32;;2734:456::o;3384:248::-;3452:6;3460;3513:2;3501:9;3492:7;3488:23;3484:32;3481:52;;;3529:1;3526;3519:12;3481:52;-1:-1:-1;;3552:23:1;;;3622:2;3607:18;;;3594:32;;-1:-1:-1;3384:248:1:o;3637:180::-;3696:6;3749:2;3737:9;3728:7;3724:23;3720:32;3717:52;;;3765:1;3762;3755:12;3717:52;-1:-1:-1;3788:23:1;;3637:180;-1:-1:-1;3637:180:1:o;3822:388::-;3890:6;3898;3951:2;3939:9;3930:7;3926:23;3922:32;3919:52;;;3967:1;3964;3957:12;3919:52;4006:9;3993:23;4025:31;4050:5;4025:31;:::i;:::-;4075:5;-1:-1:-1;4132:2:1;4117:18;;4104:32;4145:33;4104:32;4145:33;:::i;:::-;4197:7;4187:17;;;3822:388;;;;;:::o;4215:315::-;4280:6;4288;4341:2;4329:9;4320:7;4316:23;4312:32;4309:52;;;4357:1;4354;4347:12;4309:52;4396:9;4383:23;4415:31;4440:5;4415:31;:::i;4535:437::-;4614:1;4610:12;;;;4657;;;4678:61;;4732:4;4724:6;4720:17;4710:27;;4678:61;4785:2;4777:6;4774:14;4754:18;4751:38;4748:218;;4822:77;4819:1;4812:88;4923:4;4920:1;4913:15;4951:4;4948:1;4941:15;4748:218;;4535:437;;;:::o;5981:287::-;6110:3;6148:6;6142:13;6164:66;6223:6;6218:3;6211:4;6203:6;6199:17;6164:66;:::i;:::-;6246:16;;;;;5981:287;-1:-1:-1;;5981:287:1:o;9000:184::-;9052:77;9049:1;9042:88;9149:4;9146:1;9139:15;9173:4;9170:1;9163:15;9189:125;9254:9;;;9275:10;;;9272:36;;;9288:18;;:::i;9665:128::-;9732:9;;;9753:11;;;9750:37;;;9767:18;;:::i;9798:184::-;9850:77;9847:1;9840:88;9947:4;9944:1;9937:15;9971:4;9968:1;9961:15;10176:184;10228:77;10225:1;10218:88;10325:4;10322:1;10315:15;10349:4;10346:1;10339:15;10365:251;10435:6;10488:2;10476:9;10467:7;10463:23;10459:32;10456:52;;;10504:1;10501;10494:12;10456:52;10536:9;10530:16;10555:31;10580:5;10555:31;:::i;10621:488::-;10674:3;10712:5;10706:12;10739:6;10734:3;10727:19;10765:4;10794;10789:3;10785:14;10778:21;;10833:4;10826:5;10822:16;10856:1;10866:218;10880:6;10877:1;10874:13;10866:218;;;10945:13;;10960:42;10941:62;10929:75;;11024:12;;;;11059:15;;;;10902:1;10895:9;10866:218;;;-1:-1:-1;11100:3:1;;10621:488;-1:-1:-1;;;;;10621:488:1:o;11114:605::-;11413:6;11402:9;11395:25;11456:6;11451:2;11440:9;11436:18;11429:34;11499:3;11494:2;11483:9;11479:18;11472:31;11376:4;11520:57;11572:3;11561:9;11557:19;11549:6;11520:57;:::i;:::-;11625:42;11613:55;;;;11608:2;11593:18;;11586:83;-1:-1:-1;11700:3:1;11685:19;11678:35;11512:65;11114:605;-1:-1:-1;;;11114:605:1:o;11724:332::-;11931:6;11920:9;11913:25;11974:2;11969;11958:9;11954:18;11947:30;11894:4;11994:56;12046:2;12035:9;12031:18;12023:6;11994:56;:::i;:::-;11986:64;11724:332;-1:-1:-1;;;;11724:332:1:o

Swarm Source

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