ETH Price: $3,501.40 (+4.65%)

Token

SHIDO Finance (SHIDO)
 

Overview

Max Total Supply

1,000,000,000 SHIDO

Holders

139

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
SHIDO

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-15
*/

/**
Building an infinitely scalable Layer 1 in the interoperable Cosmos, powered by EVM & CosmWasm.

Website: https://www.shidofi.com
Telegram: https://t.me/shido_erc
Twitter: https://twitter.com/shido_erc
Dapp: https://app.shidofi.com
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

contract Ownable is BaseContext {
    address private _owner;
    address private _previousOwner;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IUniswapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IUniswapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

contract SHIDO is BaseContext, IERC20Simple, Ownable {
    using SafeMathInt for uint256;
    
    string private _name = "SHIDO Finance";
    string private _symbol = "SHIDO";
    uint8 private _decimals = 9;

    uint256 private _totalSupply = 10 ** 9 * 10 ** 9;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 30;
    uint256 public _buyDevFee = 0;

    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 30;
    uint256 public _sellDevFee = 0;

    uint256 public lpFeeWei = 0;
    uint256 public marketingFeeWei = 10;
    uint256 public DevFeeWei = 0;

    uint256 public buyFeeTotal = 30;
    uint256 public sellFeeTotal = 30;
    uint256 public totalFeeWeight = 10;

    uint256 public maxTxAmount = 20 * 10 ** 6 * 10 ** 9;
    uint256 public maxWallet = 20 * 10 ** 6 * 10 ** 9;
    uint256 private _feeSwapThreshold = 10 ** 5 * 10 ** 9; 

    address payable private teamAddress1;
    address payable private teamAddress2;

    IUniswapRouter public uniswapRouter;
    address public uniswapPair;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromLimits;
    mapping (address => bool) public _isMaxWalletExcluded;
    mapping (address => bool) public _isMaxTxExcluded;
    mapping (address => bool) public _ammPairs;
    
    bool _swapping;
    bool public swapFeeEnabled = true;
    bool public swapLimitEnabled = false;
    bool public maxWalletEnabled = true;

    modifier lockTheSwap {
        _swapping = true;
        _;
        _swapping = false;
    }
    
    constructor () {
        IUniswapRouter _uniswapV2Router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapPair = IUniswapFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapRouter = _uniswapV2Router;
        _allowances[address(this)][address(uniswapRouter)] = _totalSupply;
        teamAddress1 = payable(0xECf0D790541cDBFC45846B305964E0E696b4b41D);
        teamAddress2 = payable(0xECf0D790541cDBFC45846B305964E0E696b4b41D);
        _isExcludedFromLimits[owner()] = true;
        _isExcludedFromLimits[teamAddress1] = true;
        _isExcludedFromLimits[teamAddress2] = true;
        buyFeeTotal = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDevFee);
        sellFeeTotal = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDevFee);
        totalFeeWeight = lpFeeWei.add(marketingFeeWei).add(DevFeeWei);
        _isMaxWalletExcluded[owner()] = true;
        _isMaxWalletExcluded[address(uniswapPair)] = true;
        _isMaxWalletExcluded[address(this)] = true;
        _isMaxTxExcluded[owner()] = true;
        _isMaxTxExcluded[teamAddress1] = true;
        _isMaxTxExcluded[teamAddress2] = true;
        _isMaxTxExcluded[address(this)] = true;
        _ammPairs[address(uniswapPair)] = true;
        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _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 swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();

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

        // make the swapBack
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }
    
    function sendETHToFee(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    receive() external payable {}

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

    function removeLimits() external onlyOwner {
        maxTxAmount = _totalSupply;
        maxWalletEnabled = false;
        _buyMarketingFee = 1;
        _sellMarketingFee = 1;
        buyFeeTotal = 1;
        sellFeeTotal = 1;
    }

    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 addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapRouter), tokenAmount);

        uniswapRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(_swapping)
        { 
            return _transferBasic(sender, recipient, amount); 
        }
        else
        {
            if(!_isMaxTxExcluded[sender] && !_isMaxTxExcluded[recipient]) {
                require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }            

            uint256 swapAmount = balanceOf(address(this));
            bool minimumSwap = swapAmount >= _feeSwapThreshold;
            
            if (minimumSwap && !_swapping && _ammPairs[recipient] && swapFeeEnabled && !_isExcludedFromLimits[sender] && amount > _feeSwapThreshold) 
            {
                if(swapLimitEnabled)
                    swapAmount = _feeSwapThreshold;
                swapBack(swapAmount);    
            }

            uint256 receiverAmount = (_isExcludedFromLimits[sender] || _isExcludedFromLimits[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(maxWalletEnabled && !_isMaxWalletExcluded[recipient])
                require(balanceOf(recipient).add(receiverAmount) <= maxWallet);

            uint256 sAmount = (!maxWalletEnabled && _isExcludedFromLimits[sender]) ? amount.sub(receiverAmount) : amount;
            _balances[sender] = _balances[sender].sub(sAmount, "Insufficient Balance");
            _balances[recipient] = _balances[recipient].add(receiverAmount);

            emit Transfer(sender, recipient, receiverAmount);
            return true;
        }
    }
    
    function _transferBasic(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(_ammPairs[sender]) {
            feeAmount = amount.mul(buyFeeTotal).div(100);
        }
        else if(_ammPairs[recipient]) {
            feeAmount = amount.mul(sellFeeTotal).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function swapBack(uint256 tAmount) private lockTheSwap {
        uint256 tokensForLP = tAmount.mul(lpFeeWei).div(totalFeeWeight).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForETH(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalETHFee = totalFeeWeight.sub(lpFeeWei.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(lpFeeWei).div(totalETHFee).div(2);
        uint256 amountETHDevelopment = amountReceived.mul(DevFeeWei).div(totalETHFee);
        uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHDevelopment);

        if(amountETHMarketing > 0)
            sendETHToFee(teamAddress1, amountETHMarketing);

        if(amountETHDevelopment > 0)
            sendETHToFee(teamAddress2, amountETHDevelopment);

        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);
    }
}

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":"DevFeeWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isMaxTxExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isMaxWalletExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","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":"buyFeeTotal","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":"lpFeeWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeWei","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":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"sellFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600d60809081526c534849444f2046696e616e636560981b60a0526002906200002e908262000684565b50604080518082019091526005815264534849444f60d81b60208201526003906200005a908262000684565b5060048054600960ff199091168117909155670de0b6b3a764000060055560006006819055601e6007819055600882905591819055600a828155600b829055600c829055600d819055600e91909155600f82905560109190915560115566470de4df8200006012819055601355655af3107a4000601455601f805463ffffff0019166301000100179055348015620000f157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b1919062000750565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000225919062000750565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000299919062000750565b601880546001600160a01b039283166001600160a01b0319918216179091556017805492841692821683179055600554306000908152601a602090815260408083209583529490529283205560158054821673ecf0d790541cdbfc45846b305964e0e696b4b41d90811790915560168054909216179055600190601b90620003296000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560155482168152601b909352818320805485166001908117909155601654909116835291208054909216179055600854600754600654620003a692916200039f919062000570565b9062000570565b600f55600b54600a54600954620003c492916200039f919062000570565b601055600e54600d54600c54620003e292916200039f919062000570565b6011556001601c6000620003fe6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556018549091168152601c90925280822080548416600190811790915530835290822080549093168117909255601d906200046e6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560155482168152601d845282812080548616600190811790915560165483168252838220805487168217905530825283822080548716821790556018549092168152601e90935290822080549093161790915560055490601990620004fe3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200056191815260200190565b60405180910390a3506200079d565b6000806200057f83856200077b565b905083811015620005d65760405162461bcd60e51b815260206004820152601e60248201527f536166654d617468496e743a206164646974696f6e206f766572666c6f770000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060a57607f821691505b6020821081036200062b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067f57600081815260208120601f850160051c810160208610156200065a5750805b601f850160051c820191505b818110156200067b5782815560010162000666565b5050505b505050565b81516001600160401b03811115620006a057620006a0620005df565b620006b881620006b18454620005f5565b8462000631565b602080601f831160018114620006f05760008415620006d75750858301515b600019600386901b1c1916600185901b1785556200067b565b600085815260208120601f198616915b82811015620007215788860151825594840194600190910190840162000700565b5085821015620007405787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200076357600080fd5b81516001600160a01b0381168114620005d657600080fd5b80820180821115620005d957634e487b7160e01b600052601160045260246000fd5b61199680620007ad6000396000f3fe6080604052600436106102135760003560e01c8063751039fc11610118578063c8607952116100a0578063dd62ed3e1161006f578063dd62ed3e146105e0578063e550573d14610626578063e907e86014610656578063f2fde38b1461066c578063f8b45b051461068c57600080fd5b8063c86079521461057d578063c9cf778914610593578063d045a329146105a9578063dc44b6a0146105ca57600080fd5b806395d89b41116100e757806395d89b41146104fc578063a9059cbb14610511578063b30d194c14610531578063c5d2418914610547578063c816841b1461055d57600080fd5b8063751039fc1461049d57806388790a68146104b25780638c0b5e22146104c85780638da5cb5b146104de57600080fd5b8063489d85591161019b578063620158521161016a57806362015852146103ec5780636c6c3ccf1461040257806370a0823114610418578063715018a61461044e578063735de9f71461046557600080fd5b8063489d855914610367578063506162131461037d57806351c221f41461039d57806359eedafd146103cd57600080fd5b806323b872dd116101e257806323b872dd146102af5780632d865f85146102cf578063313ce567146102ff57806339ee94f7146103215780633d10a2ac1461033757600080fd5b80630476073b1461021f57806306fdde0314610248578063095ea7b31461026a57806318160ddd1461029a57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b50610235600d5481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b5061025d6106a2565b60405161023f9190611638565b34801561027657600080fd5b5061028a61028536600461169e565b610734565b604051901515815260200161023f565b3480156102a657600080fd5b50600554610235565b3480156102bb57600080fd5b5061028a6102ca3660046116ca565b61074b565b3480156102db57600080fd5b5061028a6102ea36600461170b565b601e6020526000908152604090205460ff1681565b34801561030b57600080fd5b5060045460405160ff909116815260200161023f565b34801561032d57600080fd5b5061023560115481565b34801561034357600080fd5b5061028a61035236600461170b565b601d6020526000908152604090205460ff1681565b34801561037357600080fd5b50610235600e5481565b34801561038957600080fd5b50601f5461028a9062010000900460ff1681565b3480156103a957600080fd5b5061028a6103b836600461170b565b601c6020526000908152604090205460ff1681565b3480156103d957600080fd5b50601f5461028a90610100900460ff1681565b3480156103f857600080fd5b5061023560085481565b34801561040e57600080fd5b50610235600f5481565b34801561042457600080fd5b5061023561043336600461170b565b6001600160a01b031660009081526019602052604090205490565b34801561045a57600080fd5b506104636107b6565b005b34801561047157600080fd5b50601754610485906001600160a01b031681565b6040516001600160a01b03909116815260200161023f565b3480156104a957600080fd5b50610463610833565b3480156104be57600080fd5b5061023560095481565b3480156104d457600080fd5b5061023560125481565b3480156104ea57600080fd5b506000546001600160a01b0316610485565b34801561050857600080fd5b5061025d610886565b34801561051d57600080fd5b5061028a61052c36600461169e565b610895565b34801561053d57600080fd5b5061023560105481565b34801561055357600080fd5b5061023560075481565b34801561056957600080fd5b50601854610485906001600160a01b031681565b34801561058957600080fd5b50610235600a5481565b34801561059f57600080fd5b50610235600b5481565b3480156105b557600080fd5b50601f5461028a906301000000900460ff1681565b3480156105d657600080fd5b5061023560065481565b3480156105ec57600080fd5b506102356105fb366004611728565b6001600160a01b039182166000908152601a6020908152604080832093909416825291909152205490565b34801561063257600080fd5b5061028a61064136600461170b565b601b6020526000908152604090205460ff1681565b34801561066257600080fd5b50610235600c5481565b34801561067857600080fd5b5061046361068736600461170b565b6108a2565b34801561069857600080fd5b5061023560135481565b6060600280546106b190611761565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611761565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b5050505050905090565b600061074133848461098c565b5060015b92915050565b6000610758848484610ab0565b506107ab84336107a685604051806060016040528060288152602001611918602891396001600160a01b038a166000908152601a602090815260408083203384529091529020549190610f03565b61098c565b5060015b9392505050565b6000546001600160a01b031633146107e95760405162461bcd60e51b81526004016107e09061179b565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461085d5760405162461bcd60e51b81526004016107e09061179b565b600554601255601f805463ff0000001916905560016007819055600a819055600f819055601055565b6060600380546106b190611761565b60006107ab338484610ab0565b6000546001600160a01b031633146108cc5760405162461bcd60e51b81526004016107e09061179b565b6001600160a01b0381166109315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107e0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109ee5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e0565b6001600160a01b038216610a4f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e0565b6001600160a01b038381166000818152601a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416610b165760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e0565b6001600160a01b038316610b785760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e0565b601f5460ff1615610b9557610b8e848484610f3d565b90506107af565b6001600160a01b0384166000908152601d602052604090205460ff16158015610bd757506001600160a01b0383166000908152601d602052604090205460ff16155b15610c3f57601254821115610c3f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107e0565b3060009081526019602052604090205460145481108015908190610c665750601f5460ff16155b8015610c8a57506001600160a01b0385166000908152601e602052604090205460ff165b8015610c9d5750601f54610100900460ff165b8015610cc257506001600160a01b0386166000908152601b602052604090205460ff16155b8015610ccf575060145484115b15610cf457601f5462010000900460ff1615610ceb5760145491505b610cf482611023565b6001600160a01b0386166000908152601b602052604081205460ff1680610d3357506001600160a01b0386166000908152601b602052604090205460ff165b610d4757610d42878787611150565b610d49565b845b601f549091506301000000900460ff168015610d7e57506001600160a01b0386166000908152601c602052604090205460ff16155b15610dba57601354610daf82610da9896001600160a01b031660009081526019602052604090205490565b90611256565b1115610dba57600080fd5b601f546000906301000000900460ff16158015610def57506001600160a01b0388166000908152601b602052604090205460ff165b610df95785610e03565b610e0386836112b5565b9050610e6b8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250601960008c6001600160a01b03166001600160a01b0316815260200190815260200160002054610f039092919063ffffffff16565b6001600160a01b03808a166000908152601960205260408082209390935590891681522054610e9a9083611256565b6001600160a01b0380891660008181526019602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610eee9086815260200190565b60405180910390a360019450505050506107af565b60008184841115610f275760405162461bcd60e51b81526004016107e09190611638565b506000610f3484866117e6565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601990915291822054610f8e918490610f03565b6001600160a01b038086166000908152601960205260408082209390935590851681522054610fbd9083611256565b6001600160a01b0380851660008181526019602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110119086815260200190565b60405180910390a35060019392505050565b601f805460ff19166001179055601154600c546000916110539160029161104d91829087906112da565b9061135e565b9050600061106183836112b5565b905061106c816113a0565b600c54479060009061108c9061108390600261135e565b601154906112b5565b905060006110ae600261104d8461104d600c54886112da90919063ffffffff16565b905060006110cb8361104d600e54876112da90919063ffffffff16565b905060006110e3826110dd87866112b5565b906112b5565b9050801561110157601554611101906001600160a01b0316826114fa565b811561111d5760165461111d906001600160a01b0316836114fa565b60008311801561112d5750600087115b1561113c5761113c8784611535565b5050601f805460ff19169055505050505050565b6001600160a01b0383166000908152601e6020526040812054819060ff16156111945761118d606461104d600f54866112da90919063ffffffff16565b90506111d2565b6001600160a01b0384166000908152601e602052604090205460ff16156111d2576111cf606461104d601054866112da90919063ffffffff16565b90505b801561124c57306000908152601960205260409020546111f29082611256565b30600081815260196020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112439085815260200190565b60405180910390a35b610f3483826112b5565b60008061126383856117f9565b9050838110156107af5760405162461bcd60e51b815260206004820152601e60248201527f536166654d617468496e743a206164646974696f6e206f766572666c6f77000060448201526064016107e0565b60006107af838360405180606001604052806021815260200161194060219139610f03565b6000826000036112ec57506000610745565b60006112f8838561180c565b9050826113058583611823565b146107af5760405162461bcd60e51b8152602060048201526024808201527f536166654d617468496e743a206d756c7469706c69636174696f6e206f766572604482015263666c6f7760e01b60648201526084016107e0565b60006107af83836040518060400160405280601d81526020017f536166654d617468496e743a206469766973696f6e206279207a65726f00000081525061160a565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106113d5576113d5611845565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561142e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611452919061185b565b8160018151811061146557611465611845565b6001600160a01b03928316602091820292909201015260175461148b913091168461098c565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906114c4908590600090869030904290600401611878565b600060405180830381600087803b1580156114de57600080fd5b505af11580156114f2573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611530573d6000803e3d6000fd5b505050565b60175461154d9030906001600160a01b03168461098c565b6017546001600160a01b031663f305d7198230856000806115766000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156115de573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061160391906118e9565b5050505050565b6000818361162b5760405162461bcd60e51b81526004016107e09190611638565b506000610f348486611823565b600060208083528351808285015260005b8181101561166557858101830151858201604001528201611649565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461169b57600080fd5b50565b600080604083850312156116b157600080fd5b82356116bc81611686565b946020939093013593505050565b6000806000606084860312156116df57600080fd5b83356116ea81611686565b925060208401356116fa81611686565b929592945050506040919091013590565b60006020828403121561171d57600080fd5b81356107af81611686565b6000806040838503121561173b57600080fd5b823561174681611686565b9150602083013561175681611686565b809150509250929050565b600181811c9082168061177557607f821691505b60208210810361179557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610745576107456117d0565b80820180821115610745576107456117d0565b8082028115828204841417610745576107456117d0565b60008261184057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561186d57600080fd5b81516107af81611686565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118c85784516001600160a01b0316835293830193918301916001016118a3565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156118fe57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d617468496e743a207375627472616374696f6e206f766572666c6f77a2646970667358221220cc91ff3ca727fe9a7c1d21815afaec4860139fe27dc14140d19bb670f06c811164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102135760003560e01c8063751039fc11610118578063c8607952116100a0578063dd62ed3e1161006f578063dd62ed3e146105e0578063e550573d14610626578063e907e86014610656578063f2fde38b1461066c578063f8b45b051461068c57600080fd5b8063c86079521461057d578063c9cf778914610593578063d045a329146105a9578063dc44b6a0146105ca57600080fd5b806395d89b41116100e757806395d89b41146104fc578063a9059cbb14610511578063b30d194c14610531578063c5d2418914610547578063c816841b1461055d57600080fd5b8063751039fc1461049d57806388790a68146104b25780638c0b5e22146104c85780638da5cb5b146104de57600080fd5b8063489d85591161019b578063620158521161016a57806362015852146103ec5780636c6c3ccf1461040257806370a0823114610418578063715018a61461044e578063735de9f71461046557600080fd5b8063489d855914610367578063506162131461037d57806351c221f41461039d57806359eedafd146103cd57600080fd5b806323b872dd116101e257806323b872dd146102af5780632d865f85146102cf578063313ce567146102ff57806339ee94f7146103215780633d10a2ac1461033757600080fd5b80630476073b1461021f57806306fdde0314610248578063095ea7b31461026a57806318160ddd1461029a57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b50610235600d5481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b5061025d6106a2565b60405161023f9190611638565b34801561027657600080fd5b5061028a61028536600461169e565b610734565b604051901515815260200161023f565b3480156102a657600080fd5b50600554610235565b3480156102bb57600080fd5b5061028a6102ca3660046116ca565b61074b565b3480156102db57600080fd5b5061028a6102ea36600461170b565b601e6020526000908152604090205460ff1681565b34801561030b57600080fd5b5060045460405160ff909116815260200161023f565b34801561032d57600080fd5b5061023560115481565b34801561034357600080fd5b5061028a61035236600461170b565b601d6020526000908152604090205460ff1681565b34801561037357600080fd5b50610235600e5481565b34801561038957600080fd5b50601f5461028a9062010000900460ff1681565b3480156103a957600080fd5b5061028a6103b836600461170b565b601c6020526000908152604090205460ff1681565b3480156103d957600080fd5b50601f5461028a90610100900460ff1681565b3480156103f857600080fd5b5061023560085481565b34801561040e57600080fd5b50610235600f5481565b34801561042457600080fd5b5061023561043336600461170b565b6001600160a01b031660009081526019602052604090205490565b34801561045a57600080fd5b506104636107b6565b005b34801561047157600080fd5b50601754610485906001600160a01b031681565b6040516001600160a01b03909116815260200161023f565b3480156104a957600080fd5b50610463610833565b3480156104be57600080fd5b5061023560095481565b3480156104d457600080fd5b5061023560125481565b3480156104ea57600080fd5b506000546001600160a01b0316610485565b34801561050857600080fd5b5061025d610886565b34801561051d57600080fd5b5061028a61052c36600461169e565b610895565b34801561053d57600080fd5b5061023560105481565b34801561055357600080fd5b5061023560075481565b34801561056957600080fd5b50601854610485906001600160a01b031681565b34801561058957600080fd5b50610235600a5481565b34801561059f57600080fd5b50610235600b5481565b3480156105b557600080fd5b50601f5461028a906301000000900460ff1681565b3480156105d657600080fd5b5061023560065481565b3480156105ec57600080fd5b506102356105fb366004611728565b6001600160a01b039182166000908152601a6020908152604080832093909416825291909152205490565b34801561063257600080fd5b5061028a61064136600461170b565b601b6020526000908152604090205460ff1681565b34801561066257600080fd5b50610235600c5481565b34801561067857600080fd5b5061046361068736600461170b565b6108a2565b34801561069857600080fd5b5061023560135481565b6060600280546106b190611761565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611761565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b5050505050905090565b600061074133848461098c565b5060015b92915050565b6000610758848484610ab0565b506107ab84336107a685604051806060016040528060288152602001611918602891396001600160a01b038a166000908152601a602090815260408083203384529091529020549190610f03565b61098c565b5060015b9392505050565b6000546001600160a01b031633146107e95760405162461bcd60e51b81526004016107e09061179b565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461085d5760405162461bcd60e51b81526004016107e09061179b565b600554601255601f805463ff0000001916905560016007819055600a819055600f819055601055565b6060600380546106b190611761565b60006107ab338484610ab0565b6000546001600160a01b031633146108cc5760405162461bcd60e51b81526004016107e09061179b565b6001600160a01b0381166109315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107e0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109ee5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e0565b6001600160a01b038216610a4f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e0565b6001600160a01b038381166000818152601a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416610b165760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e0565b6001600160a01b038316610b785760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e0565b601f5460ff1615610b9557610b8e848484610f3d565b90506107af565b6001600160a01b0384166000908152601d602052604090205460ff16158015610bd757506001600160a01b0383166000908152601d602052604090205460ff16155b15610c3f57601254821115610c3f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107e0565b3060009081526019602052604090205460145481108015908190610c665750601f5460ff16155b8015610c8a57506001600160a01b0385166000908152601e602052604090205460ff165b8015610c9d5750601f54610100900460ff165b8015610cc257506001600160a01b0386166000908152601b602052604090205460ff16155b8015610ccf575060145484115b15610cf457601f5462010000900460ff1615610ceb5760145491505b610cf482611023565b6001600160a01b0386166000908152601b602052604081205460ff1680610d3357506001600160a01b0386166000908152601b602052604090205460ff165b610d4757610d42878787611150565b610d49565b845b601f549091506301000000900460ff168015610d7e57506001600160a01b0386166000908152601c602052604090205460ff16155b15610dba57601354610daf82610da9896001600160a01b031660009081526019602052604090205490565b90611256565b1115610dba57600080fd5b601f546000906301000000900460ff16158015610def57506001600160a01b0388166000908152601b602052604090205460ff165b610df95785610e03565b610e0386836112b5565b9050610e6b8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250601960008c6001600160a01b03166001600160a01b0316815260200190815260200160002054610f039092919063ffffffff16565b6001600160a01b03808a166000908152601960205260408082209390935590891681522054610e9a9083611256565b6001600160a01b0380891660008181526019602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610eee9086815260200190565b60405180910390a360019450505050506107af565b60008184841115610f275760405162461bcd60e51b81526004016107e09190611638565b506000610f3484866117e6565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601990915291822054610f8e918490610f03565b6001600160a01b038086166000908152601960205260408082209390935590851681522054610fbd9083611256565b6001600160a01b0380851660008181526019602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110119086815260200190565b60405180910390a35060019392505050565b601f805460ff19166001179055601154600c546000916110539160029161104d91829087906112da565b9061135e565b9050600061106183836112b5565b905061106c816113a0565b600c54479060009061108c9061108390600261135e565b601154906112b5565b905060006110ae600261104d8461104d600c54886112da90919063ffffffff16565b905060006110cb8361104d600e54876112da90919063ffffffff16565b905060006110e3826110dd87866112b5565b906112b5565b9050801561110157601554611101906001600160a01b0316826114fa565b811561111d5760165461111d906001600160a01b0316836114fa565b60008311801561112d5750600087115b1561113c5761113c8784611535565b5050601f805460ff19169055505050505050565b6001600160a01b0383166000908152601e6020526040812054819060ff16156111945761118d606461104d600f54866112da90919063ffffffff16565b90506111d2565b6001600160a01b0384166000908152601e602052604090205460ff16156111d2576111cf606461104d601054866112da90919063ffffffff16565b90505b801561124c57306000908152601960205260409020546111f29082611256565b30600081815260196020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112439085815260200190565b60405180910390a35b610f3483826112b5565b60008061126383856117f9565b9050838110156107af5760405162461bcd60e51b815260206004820152601e60248201527f536166654d617468496e743a206164646974696f6e206f766572666c6f77000060448201526064016107e0565b60006107af838360405180606001604052806021815260200161194060219139610f03565b6000826000036112ec57506000610745565b60006112f8838561180c565b9050826113058583611823565b146107af5760405162461bcd60e51b8152602060048201526024808201527f536166654d617468496e743a206d756c7469706c69636174696f6e206f766572604482015263666c6f7760e01b60648201526084016107e0565b60006107af83836040518060400160405280601d81526020017f536166654d617468496e743a206469766973696f6e206279207a65726f00000081525061160a565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106113d5576113d5611845565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561142e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611452919061185b565b8160018151811061146557611465611845565b6001600160a01b03928316602091820292909201015260175461148b913091168461098c565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906114c4908590600090869030904290600401611878565b600060405180830381600087803b1580156114de57600080fd5b505af11580156114f2573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611530573d6000803e3d6000fd5b505050565b60175461154d9030906001600160a01b03168461098c565b6017546001600160a01b031663f305d7198230856000806115766000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156115de573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061160391906118e9565b5050505050565b6000818361162b5760405162461bcd60e51b81526004016107e09190611638565b506000610f348486611823565b600060208083528351808285015260005b8181101561166557858101830151858201604001528201611649565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461169b57600080fd5b50565b600080604083850312156116b157600080fd5b82356116bc81611686565b946020939093013593505050565b6000806000606084860312156116df57600080fd5b83356116ea81611686565b925060208401356116fa81611686565b929592945050506040919091013590565b60006020828403121561171d57600080fd5b81356107af81611686565b6000806040838503121561173b57600080fd5b823561174681611686565b9150602083013561175681611686565b809150509250929050565b600181811c9082168061177557607f821691505b60208210810361179557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610745576107456117d0565b80820180821115610745576107456117d0565b8082028115828204841417610745576107456117d0565b60008261184057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561186d57600080fd5b81516107af81611686565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118c85784516001600160a01b0316835293830193918301916001016118a3565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156118fe57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d617468496e743a207375627472616374696f6e206f766572666c6f77a2646970667358221220cc91ff3ca727fe9a7c1d21815afaec4860139fe27dc14140d19bb670f06c811164736f6c63430008130033

Deployed Bytecode Sourcemap

5252:9984:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5814:35;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5814:35:0;;;;;;;;8407:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9641:161::-;;;;;;;;;;-1:-1:-1;9641:161:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;9641:161:0;1205:187:1;8684:100:0;;;;;;;;;;-1:-1:-1;8764:12:0;;8684:100;;10826:313;;;;;;;;;;-1:-1:-1;10826:313:0;;;;;:::i;:::-;;:::i;6657:42::-;;;;;;;;;;-1:-1:-1;6657:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8593:83;;;;;;;;;;-1:-1:-1;8659:9:0;;8593:83;;8659:9;;;;2252:36:1;;2240:2;2225:18;8593:83:0;2110:184:1;5970:34:0;;;;;;;;;;;;;;;;6601:49;;;;;;;;;;-1:-1:-1;6601:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5856:28;;;;;;;;;;;;;;;;6773:36;;;;;;;;;;-1:-1:-1;6773:36:0;;;;;;;;;;;6541:53;;;;;;;;;;-1:-1:-1;6541:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6733:33;;;;;;;;;;-1:-1:-1;6733:33:0;;;;;;;;;;;5616:29;;;;;;;;;;;;;;;;5893:31;;;;;;;;;;;;;;;;8792:119;;;;;;;;;;-1:-1:-1;8792:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8885:18:0;8858:7;8885:18;;;:9;:18;;;;;;;8792:119;3555:148;;;;;;;;;;;;;:::i;:::-;;6278:35;;;;;;;;;;-1:-1:-1;6278:35:0;;;;-1:-1:-1;;;;;6278:35:0;;;;;;-1:-1:-1;;;;;2485:32:1;;;2467:51;;2455:2;2440:18;6278:35:0;2299:225:1;9810:239:0;;;;;;;;;;;;;:::i;5654:36::-;;;;;;;;;;;;;;;;6013:51;;;;;;;;;;;;;;;;3330:79;;;;;;;;;;-1:-1:-1;3368:7:0;3395:6;-1:-1:-1;;;;;3395:6:0;3330:79;;8498:87;;;;;;;;;;;;;:::i;13916:167::-;;;;;;;;;;-1:-1:-1;13916:167:0;;;;;:::i;:::-;;:::i;5931:32::-;;;;;;;;;;;;;;;;5573:36;;;;;;;;;;;;;;;;6320:26;;;;;;;;;;-1:-1:-1;6320:26:0;;;;-1:-1:-1;;;;;6320:26:0;;;5697:37;;;;;;;;;;;;;;;;5741:30;;;;;;;;;;;;;;;;6816:35;;;;;;;;;;-1:-1:-1;6816:35:0;;;;;;;;;;;5531;;;;;;;;;;;;;;;;14095:143;;;;;;;;;;-1:-1:-1;14095:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;14203:18:0;;;14176:7;14203:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14095:143;6480:54;;;;;;;;;;-1:-1:-1;6480:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5780:27;;;;;;;;;;;;;;;;3711:244;;;;;;;;;;-1:-1:-1;3711:244:0;;;;;:::i;:::-;;:::i;6071:49::-;;;;;;;;;;;;;;;;8407:83;8444:13;8477:5;8470:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8407:83;:::o;9641:161::-;9716:4;9733:39;449:10;9756:7;9765:6;9733:8;:39::i;:::-;-1:-1:-1;9790:4:0;9641:161;;;;;:::o;10826:313::-;10924:4;10941:36;10951:6;10959:9;10970:6;10941:9;:36::i;:::-;-1:-1:-1;10988:121:0;10997:6;449:10;11019:89;11057:6;11019:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11019:19:0;;;;;;:11;:19;;;;;;;;449:10;11019:33;;;;;;;;;;:37;:89::i;:::-;10988:8;:121::i;:::-;-1:-1:-1;11127:4:0;10826:313;;;;;;:::o;3555:148::-;3464:6;;-1:-1:-1;;;;;3464:6:0;449:10;3464:22;3456:67;;;;-1:-1:-1;;;3456:67:0;;;;;;;:::i;:::-;;;;;;;;;3662:1:::1;3646:6:::0;;3625:40:::1;::::0;-1:-1:-1;;;;;3646:6:0;;::::1;::::0;3625:40:::1;::::0;3662:1;;3625:40:::1;3693:1;3676:19:::0;;-1:-1:-1;;;;;;3676:19:0::1;::::0;;3555:148::o;9810:239::-;3464:6;;-1:-1:-1;;;;;3464:6:0;449:10;3464:22;3456:67;;;;-1:-1:-1;;;3456:67:0;;;;;;;:::i;:::-;9878:12:::1;::::0;9864:11:::1;:26:::0;9901:16:::1;:24:::0;;-1:-1:-1;;9901:24:0::1;::::0;;;9936:16:::1;:20:::0;;;9967:17:::1;:21:::0;;;9999:11:::1;:15:::0;;;-1:-1:-1;10025:16:0;9810:239::o;8498:87::-;8537:13;8570:7;8563:14;;;;;:::i;13916:167::-;13994:4;14011:42;449:10;14035:9;14046:6;14011:9;:42::i;3711:244::-;3464:6;;-1:-1:-1;;;;;3464:6:0;449:10;3464:22;3456:67;;;;-1:-1:-1;;;3456:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3800:22:0;::::1;3792:73;;;::::0;-1:-1:-1;;;3792:73:0;;4078:2:1;3792:73:0::1;::::0;::::1;4060:21:1::0;4117:2;4097:18;;;4090:30;4156:34;4136:18;;;4129:62;-1:-1:-1;;;4207:18:1;;;4200:36;4253:19;;3792:73:0::1;3876:402:1::0;3792:73:0::1;3902:6;::::0;;3881:38:::1;::::0;-1:-1:-1;;;;;3881:38:0;;::::1;::::0;3902:6;::::1;::::0;3881:38:::1;::::0;::::1;3930:6;:17:::0;;-1:-1:-1;;;;;;3930:17:0::1;-1:-1:-1::0;;;;;3930:17:0;;;::::1;::::0;;;::::1;::::0;;3711:244::o;10057:337::-;-1:-1:-1;;;;;10150:19:0;;10142:68;;;;-1:-1:-1;;;10142:68:0;;4485:2:1;10142:68:0;;;4467:21:1;4524:2;4504:18;;;4497:30;4563:34;4543:18;;;4536:62;-1:-1:-1;;;4614:18:1;;;4607:34;4658:19;;10142:68:0;4283:400:1;10142:68:0;-1:-1:-1;;;;;10229:21:0;;10221:68;;;;-1:-1:-1;;;10221:68:0;;4890:2:1;10221:68:0;;;4872:21:1;4929:2;4909:18;;;4902:30;4968:34;4948:18;;;4941:62;-1:-1:-1;;;5019:18:1;;;5012:32;5061:19;;10221:68:0;4688:398:1;10221:68:0;-1:-1:-1;;;;;10302:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10354:32;;160:25:1;;;10354:32:0;;133:18:1;10354:32:0;;;;;;;10057:337;;;:::o;11147:1801::-;11234:4;-1:-1:-1;;;;;11261:20:0;;11253:70;;;;-1:-1:-1;;;11253:70:0;;5293:2:1;11253:70:0;;;5275:21:1;5332:2;5312:18;;;5305:30;5371:34;5351:18;;;5344:62;-1:-1:-1;;;5422:18:1;;;5415:35;5467:19;;11253:70:0;5091:401:1;11253:70:0;-1:-1:-1;;;;;11342:23:0;;11334:71;;;;-1:-1:-1;;;11334:71:0;;5699:2:1;11334:71:0;;;5681:21:1;5738:2;5718:18;;;5711:30;5777:34;5757:18;;;5750:62;-1:-1:-1;;;5828:18:1;;;5821:33;5871:19;;11334:71:0;5497:399:1;11334:71:0;11421:9;;;;11418:1523;;;11464:41;11479:6;11487:9;11498:6;11464:14;:41::i;:::-;11457:48;;;;11418:1523;-1:-1:-1;;;;;11561:24:0;;;;;;:16;:24;;;;;;;;11560:25;:57;;;;-1:-1:-1;;;;;;11590:27:0;;;;;;:16;:27;;;;;;;;11589:28;11560:57;11557:171;;;11656:11;;11646:6;:21;;11638:74;;;;-1:-1:-1;;;11638:74:0;;6103:2:1;11638:74:0;;;6085:21:1;6142:2;6122:18;;;6115:30;6181:34;6161:18;;;6154:62;-1:-1:-1;;;6232:18:1;;;6225:38;6280:19;;11638:74:0;5901:404:1;11638:74:0;11795:4;11756:18;8885;;;:9;:18;;;;;;11849:17;;11835:31;;;;;;;11899:25;;-1:-1:-1;11915:9:0;;;;11914:10;11899:25;:49;;;;-1:-1:-1;;;;;;11928:20:0;;;;;;:9;:20;;;;;;;;11899:49;:67;;;;-1:-1:-1;11952:14:0;;;;;;;11899:67;:101;;;;-1:-1:-1;;;;;;11971:29:0;;;;;;:21;:29;;;;;;;;11970:30;11899:101;:131;;;;;12013:17;;12004:6;:26;11899:131;11895:301;;;12068:16;;;;;;;12065:72;;;12120:17;;12107:30;;12065:72;12156:20;12165:10;12156:8;:20::i;:::-;-1:-1:-1;;;;;12238:29:0;;12212:22;12238:29;;;:21;:29;;;;;;;;;:65;;-1:-1:-1;;;;;;12271:32:0;;;;;;:21;:32;;;;;;;;12238:65;12237:156;;12359:34;12367:6;12375:9;12386:6;12359:7;:34::i;:::-;12237:156;;;12350:6;12237:156;12413:16;;12212:181;;-1:-1:-1;12413:16:0;;;;;:52;;;;-1:-1:-1;;;;;;12434:31:0;;;;;;:20;:31;;;;;;;;12433:32;12413:52;12410:136;;;12536:9;;12492:40;12517:14;12492:20;12502:9;-1:-1:-1;;;;;8885:18:0;8858:7;8885:18;;;:9;:18;;;;;;;8792:119;12492:20;:24;;:40::i;:::-;:53;;12484:62;;;;;;12583:16;;12563:15;;12583:16;;;;;12582:17;:50;;;;-1:-1:-1;;;;;;12603:29:0;;;;;;:21;:29;;;;;;;;12582:50;12581:90;;12665:6;12581:90;;;12636:26;:6;12647:14;12636:10;:26::i;:::-;12563:108;;12706:54;12728:7;12706:54;;;;;;;;;;;;;-1:-1:-1;;;12706:54:0;;;:9;:17;12716:6;-1:-1:-1;;;;;12706:17:0;-1:-1:-1;;;;;12706:17:0;;;;;;;;;;;;;:21;;:54;;;;;:::i;:::-;-1:-1:-1;;;;;12686:17:0;;;;;;;:9;:17;;;;;;:74;;;;12798:20;;;;;;;:40;;12823:14;12798:24;:40::i;:::-;-1:-1:-1;;;;;12775:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12860:43;;;;;;;;;;12888:14;160:25:1;;148:2;133:18;;14:177;12860:43:0;;;;;;;;12925:4;12918:11;;;;;;;;1765:192;1851:7;1887:12;1879:6;;;;1871:29;;;;-1:-1:-1;;;1871:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1911:9:0;1923:5;1927:1;1923;:5;:::i;:::-;1911:17;1765:192;-1:-1:-1;;;;;1765:192:0:o;12960:330::-;13090:53;;;;;;;;;;;-1:-1:-1;;;13090:53:0;;;;;;;;-1:-1:-1;;;;;13090:17:0;;13053:4;13090:17;;;:9;:17;;;;;;;:53;;13112:6;;13090:21;:53::i;:::-;-1:-1:-1;;;;;13070:17:0;;;;;;;:9;:17;;;;;;:73;;;;13177:20;;;;;;;:32;;13202:6;13177:24;:32::i;:::-;-1:-1:-1;;;;;13154:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13225:35;;;;;;;;;;13253:6;160:25:1;;148:2;133:18;;14:177;13225:35:0;;;;;;;;-1:-1:-1;13278:4:0;12960:330;;;;;:::o;14246:987::-;6892:9;:16;;-1:-1:-1;;6892:16:0;6904:4;6892:16;;;14360:14:::1;::::0;14346:8:::1;::::0;6892:9;;14334:48:::1;::::0;14380:1:::1;::::0;14334:41:::1;::::0;;;:7;;:11:::1;:21::i;:::-;:25:::0;::::1;:41::i;:48::-;14312:70:::0;-1:-1:-1;14393:21:0::1;14417:24;:7:::0;14312:70;14417:11:::1;:24::i;:::-;14393:48;;14454:31;14471:13;14454:16;:31::i;:::-;14596:8;::::0;14521:21:::1;::::0;14496:22:::1;::::0;14577:35:::1;::::0;14596:15:::1;::::0;14609:1:::1;14596:12;:15::i;:::-;14577:14;::::0;;:18:::1;:35::i;:::-;14555:57;;14633:26;14662:52;14712:1;14662:45;14695:11;14662:28;14681:8;;14662:14;:18;;:28;;;;:::i;:52::-;14633:81;;14725:28;14756:46;14790:11;14756:29;14775:9;;14756:14;:18;;:29;;;;:::i;:46::-;14725:77:::0;-1:-1:-1;14813:26:0::1;14842:64;14725:77:::0;14842:38:::1;:14:::0;14861:18;14842::::1;:38::i;:::-;:42:::0;::::1;:64::i;:::-;14813:93:::0;-1:-1:-1;14922:22:0;;14919:86:::1;;14972:12;::::0;14959:46:::1;::::0;-1:-1:-1;;;;;14972:12:0::1;14986:18:::0;14959:12:::1;:46::i;:::-;15021:24:::0;;15018:90:::1;;15073:12;::::0;15060:48:::1;::::0;-1:-1:-1;;;;;15073:12:0::1;15087:20:::0;15060:12:::1;:48::i;:::-;15145:1;15124:18;:22;:41;;;;;15164:1;15150:11;:15;15124:41;15121:104;;;15180:45;15193:11;15206:18;15180:12;:45::i;:::-;-1:-1:-1::0;;6931:9:0;:17;;-1:-1:-1;;6931:17:0;;;-1:-1:-1;;;;;;14246:987:0:o;13304:604::-;-1:-1:-1;;;;;13465:17:0;;13390:7;13465:17;;;:9;:17;;;;;;13390:7;;13465:17;;13462:205;;;13511:32;13539:3;13511:23;13522:11;;13511:6;:10;;:23;;;;:::i;:32::-;13499:44;;13462:205;;;-1:-1:-1;;;;;13573:20:0;;;;;;:9;:20;;;;;;;;13570:97;;;13622:33;13651:3;13622:24;13633:12;;13622:6;:10;;:24;;;;:::i;:33::-;13610:45;;13570:97;13690:13;;13687:173;;13765:4;13747:24;;;;:9;:24;;;;;;:39;;13776:9;13747:28;:39::i;:::-;13738:4;13720:24;;;;:9;:24;;;;;;;:66;;;;13806:42;;-1:-1:-1;;;;;13806:42:0;;;;;;;13838:9;160:25:1;;148:2;133:18;;14:177;13806:42:0;;;;;;;;13687:173;13879:21;:6;13890:9;13879:10;:21::i;1426:184::-;1484:7;;1516:5;1520:1;1516;:5;:::i;:::-;1504:17;;1545:1;1540;:6;;1532:49;;;;-1:-1:-1;;;1532:49:0;;6907:2:1;1532:49:0;;;6889:21:1;6946:2;6926:18;;;6919:30;6985:32;6965:18;;;6958:60;7035:18;;1532:49:0;6705:354:1;1618:139:0;1676:7;1703:46;1707:1;1710;1703:46;;;;;;;;;;;;;;;;;:3;:46::i;1965:253::-;2023:7;2047:1;2052;2047:6;2043:47;;-1:-1:-1;2077:1:0;2070:8;;2043:47;2102:9;2114:5;2118:1;2114;:5;:::i;:::-;2102:17;-1:-1:-1;2147:1:0;2138:5;2142:1;2102:17;2138:5;:::i;:::-;:10;2130:59;;;;-1:-1:-1;;;2130:59:0;;7661:2:1;2130:59:0;;;7643:21:1;7700:2;7680:18;;;7673:30;7739:34;7719:18;;;7712:62;-1:-1:-1;;;7790:18:1;;;7783:34;7834:19;;2130:59:0;7459:400:1;2226:135:0;2284:7;2311:42;2315:1;2318;2311:42;;;;;;;;;;;;;;;;;:3;:42::i;8923:543::-;9013:16;;;9027:1;9013:16;;;;;;;;8989:21;;9013:16;;;;;;;;;;-1:-1:-1;9013:16:0;8989:40;;9058:4;9040;9045:1;9040:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9040:23:0;;;:7;;;;;;;;;;:23;;;;9084:13;;:20;;;-1:-1:-1;;;9084:20:0;;;;:13;;;;;:18;;:20;;;;;9040:7;;9084:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9074:4;9079:1;9074:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9074:30:0;;;:7;;;;;;;;;:30;9149:13;;9117:60;;9134:4;;9149:13;9165:11;9117:8;:60::i;:::-;9220:13;;:238;;-1:-1:-1;;;9220:238:0;;-1:-1:-1;;;;;9220:13:0;;;;:64;;:238;;9299:11;;9220:13;;9369:4;;9396;;9432:15;;9220:238;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8978:488;8923:543;:::o;9478:118::-;9562:26;;-1:-1:-1;;;;;9562:18:0;;;:26;;;;;9581:6;;9562:26;;;;9581:6;9562:18;:26;;;;;;;;;;;;;;;;;;;;;9478:118;;:::o;10402:412::-;10515:13;;10483:60;;10500:4;;-1:-1:-1;;;;;10515:13:0;10531:11;10483:8;:60::i;:::-;10556:13;;-1:-1:-1;;;;;10556:13:0;:29;10593:9;10626:4;10646:11;10556:13;;10758:7;3368;3395:6;-1:-1:-1;;;;;3395:6:0;;3330:79;10758:7;10556:250;;;;;;-1:-1:-1;;;;;;10556:250:0;;;-1:-1:-1;;;;;9728:15:1;;;10556:250:0;;;9710:34:1;9760:18;;;9753:34;;;;9803:18;;;9796:34;;;;9846:18;;;9839:34;9910:15;;;9889:19;;;9882:44;10780:15:0;9942:19:1;;;9935:35;9644:19;;10556:250:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10402:412;;:::o;2369:278::-;2455:7;2490:12;2483:5;2475:28;;;;-1:-1:-1;;;2475:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2514:9:0;2526:5;2530:1;2526;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;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;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2737:388::-;2805:6;2813;2866:2;2854:9;2845:7;2841:23;2837:32;2834:52;;;2882:1;2879;2872:12;2834:52;2921:9;2908:23;2940:31;2965:5;2940:31;:::i;:::-;2990:5;-1:-1:-1;3047:2:1;3032:18;;3019:32;3060:33;3019:32;3060:33;:::i;:::-;3112:7;3102:17;;;2737:388;;;;;:::o;3130:380::-;3209:1;3205:12;;;;3252;;;3273:61;;3327:4;3319:6;3315:17;3305:27;;3273:61;3380:2;3372:6;3369:14;3349:18;3346:38;3343:161;;3426:10;3421:3;3417:20;3414:1;3407:31;3461:4;3458:1;3451:15;3489:4;3486:1;3479:15;3343:161;;3130:380;;;:::o;3515:356::-;3717:2;3699:21;;;3736:18;;;3729:30;3795:34;3790:2;3775:18;;3768:62;3862:2;3847:18;;3515:356::o;6310:127::-;6371:10;6366:3;6362:20;6359:1;6352:31;6402:4;6399:1;6392:15;6426:4;6423:1;6416:15;6442:128;6509:9;;;6530:11;;;6527:37;;;6544:18;;:::i;6575:125::-;6640:9;;;6661:10;;;6658:36;;;6674:18;;:::i;7064:168::-;7137:9;;;7168;;7185:15;;;7179:22;;7165:37;7155:71;;7206:18;;:::i;7237:217::-;7277:1;7303;7293:132;;7347:10;7342:3;7338:20;7335:1;7328:31;7382:4;7379:1;7372:15;7410:4;7407:1;7400:15;7293:132;-1:-1:-1;7439:9:1;;7237:217::o;7996:127::-;8057:10;8052:3;8048:20;8045:1;8038:31;8088:4;8085:1;8078:15;8112:4;8109:1;8102:15;8128:251;8198:6;8251:2;8239:9;8230:7;8226:23;8222:32;8219:52;;;8267:1;8264;8257:12;8219:52;8299:9;8293:16;8318:31;8343:5;8318:31;:::i;8384:980::-;8646:4;8694:3;8683:9;8679:19;8725:6;8714:9;8707:25;8751:2;8789:6;8784:2;8773:9;8769:18;8762:34;8832:3;8827:2;8816:9;8812:18;8805:31;8856:6;8891;8885:13;8922:6;8914;8907:22;8960:3;8949:9;8945:19;8938:26;;8999:2;8991:6;8987:15;8973:29;;9020:1;9030:195;9044:6;9041:1;9038:13;9030:195;;;9109:13;;-1:-1:-1;;;;;9105:39:1;9093:52;;9200:15;;;;9165:12;;;;9141:1;9059:9;9030:195;;;-1:-1:-1;;;;;;;9281:32:1;;;;9276:2;9261:18;;9254:60;-1:-1:-1;;;9345:3:1;9330:19;9323:35;9242:3;8384:980;-1:-1:-1;;;8384:980:1:o;9981:306::-;10069:6;10077;10085;10138:2;10126:9;10117:7;10113:23;10109:32;10106:52;;;10154:1;10151;10144:12;10106:52;10183:9;10177:16;10167:26;;10233:2;10222:9;10218:18;10212:25;10202:35;;10277:2;10266:9;10262:18;10256:25;10246:35;;9981:306;;;;;:::o

Swarm Source

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