ETH Price: $3,288.33 (-1.26%)

Token

Do Only Good Everyday (DOGE)
 

Overview

Max Total Supply

420,690,000,000 DOGE

Holders

93

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000099 DOGE

Value
$0.00
0xde116cb90bc5a99dc679bdd43eccc3ef5d1a0ceb
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:
DOGE

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-24
*/

// SPDX-License-Identifier: MIT

/*
Do Only Good Everyday 

Billy's Tweet -> https://x.com/BillyM2k/status/1366314363716395011?t=X27m_JuEb8Gp44_MnXWaxw&s=19

Website: https://www.dogemovement.com/
Telegram: https://t.me/DoOnlyGoodEverydayERC20
Twitter: https://x.com/DoOnlyGevrdy
*/

pragma solidity 0.8.23;

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

interface IToken {
    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 MathLib {
    function safeAdd(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "MathLib: addition overflow");
        return c;
    }

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

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

    function safeMul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "MathLib: multiplication overflow");
        return c;
    }

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

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

contract Ownable is Context {
    address private _owner;
    event OwnershipChanged(address indexed previousOwner, address indexed newOwner);

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipChanged(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 OwnershipChanged(_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 OwnershipChanged(_owner, newOwner);
        _owner = newOwner;
    }
}

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

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

contract DOGE is Context, IToken, Ownable {
    using MathLib for uint256;
    
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private allowances;
    mapping (address => bool) private noLimits;
    mapping (uint256 => uint256) private counts_OfBuyTxn; 
    address payable private addrTaxWallet;

    uint256 private firstBlock = 0; uint256 private _buyCount = 0;
    uint256 private _sellCount = 0; uint256 private lastSellBlock = 0;

    uint8 private constant DECIMALS = 9;
    uint256 private constant TOTAL_SUPPLY = 420690000000 * 10 ** DECIMALS;
    string private constant NAME = unicode"Do Only Good Everyday";
    string private constant SYMBOL = unicode"DOGE";
    
    uint256 public _maxTxnAmt = 4206900000 * 10 ** DECIMALS;
    uint256 public _maxWalletSize = 4206900000 * 10 ** DECIMALS;
    uint256 public _taxSwapThreshold = 4200000000 * 10 ** DECIMALS;
    uint256 public _maxTaxSwap = 4206900000 * 10 ** DECIMALS;

    IUniswapRouter private uniswapRouter;
    address public uniswapPair;
    bool private isTradingOpen;
    uint256 public caLimitNbr = 4;
    bool private isSwapping = false;
    bool private swapEnabled = false;
    bool public _t_CaSwap = true;

    event MaxTransactionAmountUpdated(uint256 maxTransactionAmount);
    
    modifier swapLock {
        isSwapping = true;
        _;
        isSwapping = false;
    }

    uint256 private _initialBuyTax = 20;
    uint256 private _initialSellTax = 20;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;

    uint256 private _reduceBuyTaxAt = 25;
    uint256 private _reduceSellTaxAt = 25;
    uint256 private _preventSwapBefore = 25;

    constructor() {
        addrTaxWallet = payable(owner());
        balances[_msgSender()] = TOTAL_SUPPLY;
        noLimits[owner()] = true;
        noLimits[address(this)] = true;
        noLimits[address(uniswapPair)] = true;
        
        emit Transfer(address(0), _msgSender(), TOTAL_SUPPLY);
    }

    function name() public pure returns (string memory) {
        return NAME;
    }

    function symbol() public pure returns (string memory) {
        return SYMBOL;
    }

    function decimals() public pure returns (uint8) {
        return DECIMALS;
    }

    function totalSupply() public pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _setApproval(sender, _msgSender(), allowances[sender][_msgSender()].safeSub(amount, "transfer exceeds allowance"));
        return true;
    }

    function _setApproval(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "approve from zero address");
        require(spender != address(0), "approve to zero address");
        allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "transfer from zero address");
        require(to != address(0), "transfer to zero address");
        require(amount > 0, "transfer amount must be greater than zero");
        
        uint256 _taxAmount = 0;

        if (from != owner() && to != owner()) {
            _taxAmount = amount.safeMul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).safeDiv(100);

            if (block.number == firstBlock) {
                require(counts_OfBuyTxn[block.number] < 40, "exceeds buy limit for initial block.");
                counts_OfBuyTxn[block.number]++;
            }

            if (from == uniswapPair && to != address(uniswapRouter) && !noLimits[to]) {
                require(amount <= _maxTxnAmt, "exceeds max transaction amount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "exceeds max wallet size.");
                _buyCount++;
            }

            if (to != uniswapPair && !noLimits[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "exceeds max wallet size.");
            }

            if (to == uniswapPair && from != address(this)) {
                _taxAmount = amount.safeMul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).safeDiv(100);
            }

            if (from != uniswapPair && to != uniswapPair && from != address(this)) {
                _taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (_t_CaSwap && !isSwapping && to == uniswapPair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    _sellCount = 0;
                }
                require(_sellCount < caLimitNbr, "CA balance sell limit reached");
                _swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                _sellCount++;
                lastSellBlock = block.number;
            } else if (!isSwapping && to == uniswapPair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                _swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if (_taxAmount > 0) {
            balances[address(this)] = balances[address(this)].safeAdd(_taxAmount);
            emit Transfer(from, address(this), _taxAmount);
        }
        balances[from] = balances[from].safeSub(amount);
        balances[to] = balances[to].safeAdd(amount.safeSub(_taxAmount));
        emit Transfer(from, to, amount.safeSub(_taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function _swapTokensForEth(uint256 tokenAmount) private swapLock {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _setApproval(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function setMaxTaxSwap(bool enable, uint256 amount, bool _enable, uint256 _amount) external onlyOwner {
        swapEnabled = enable;
        _maxTaxSwap = amount;
        _t_CaSwap = _enable;
        caLimitNbr = _amount;
    }

    function rescueStuckETH() external onlyOwner {
        payable(addrTaxWallet).transfer(address(this).balance);
    }

    function rescueUnknownERC20Tokens(address tokenAddr, uint amount) external onlyOwner {
        IToken(tokenAddr).transfer(addrTaxWallet, amount);
    }

    function freeLimits() external onlyOwner {
        _maxTxnAmt = TOTAL_SUPPLY;
        _maxWalletSize = TOTAL_SUPPLY;
        emit MaxTransactionAmountUpdated(TOTAL_SUPPLY);
    }

    function enableTrading() external onlyOwner() {
        require(!isTradingOpen, "trading is already open");
        uniswapRouter = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _setApproval(address(this), address(uniswapRouter), TOTAL_SUPPLY);
        uniswapPair = IUniswapFactory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH());
        noLimits[address(uniswapPair)] = true;
        uniswapRouter.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp);
        IToken(uniswapPair).approve(address(uniswapRouter), type(uint).max);
        swapEnabled = true;
        isTradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransactionAmount","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipChanged","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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxnAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_t_CaSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":"caLimitNbr","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueUnknownERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"_enable","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6006555f6007555f6008555f6009556009600a62000024919062000359565b620000349063fac0332062000370565b600a556009600a62000047919062000359565b620000579063fac0332062000370565b600b55620000686009600a62000359565b620000789063fa56ea0062000370565b600c55620000896009600a62000359565b620000999063fac0332062000370565b600d5560046010556011805462ffffff1916620100001790556014601281905560138190555f90819055601555601960168190556017819055601855348015620000e1575f80fd5b505f80546001600160a01b031916339081178255604051909182917f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908290a3505f54600580546001600160a01b0319166001600160a01b03909216919091179055620001516009600a62000359565b62000162906461f313f88062000370565b335f9081526001602081905260408220929092556003906200018b5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600f54909116835291208054909216179055620001e93390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002226009600a62000359565b62000233906461f313f88062000370565b60405190815260200160405180910390a36200038a565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200029e57815f19048211156200028257620002826200024a565b808516156200029057918102915b93841c939080029062000263565b509250929050565b5f82620002b65750600162000353565b81620002c457505f62000353565b8160018114620002dd5760028114620002e85762000308565b600191505062000353565b60ff841115620002fc57620002fc6200024a565b50506001821b62000353565b5060208310610133831016604e8410600b84101617156200032d575081810a62000353565b6200033983836200025e565b805f19048211156200034f576200034f6200024a565b0290505b92915050565b5f6200036960ff841683620002a6565b9392505050565b80820281158282048414176200035357620003536200024a565b611cba80620003985f395ff3fe60806040526004361061014a575f3560e01c806388e5f891116100b3578063bc38a0b81161006d578063bc38a0b8146103ae578063bf474bed146103cd578063c816841b146103e2578063dd62ed3e14610401578063e12b953114610445578063f2fde38b14610459575f80fd5b806388e5f891146102eb5780638a8c523c1461030a5780638da5cb5b1461031e5780638f9a55c01461034e57806395d89b4114610363578063a9059cbb1461038f575f80fd5b8063313ce56711610104578063313ce5671461023f57806344bd98071461025a57806346e44020146102795780635fb8dca01461028e57806370a08231146102a3578063715018a6146102d7575f80fd5b80630150fe4c1461015557806306fdde031461016b578063095ea7b3146101ba5780630faee56f146101e957806318160ddd1461020c57806323b872dd14610220575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b50610169610478565b005b348015610176575f80fd5b50604080518082019091526015815274446f204f6e6c7920476f6f6420457665727964617960581b60208201525b6040516101b19190611887565b60405180910390f35b3480156101c5575f80fd5b506101d96101d43660046118e7565b6104e3565b60405190151581526020016101b1565b3480156101f4575f80fd5b506101fe600d5481565b6040519081526020016101b1565b348015610217575f80fd5b506101fe6104f9565b34801561022b575f80fd5b506101d961023a366004611911565b61051a565b34801561024a575f80fd5b50604051600981526020016101b1565b348015610265575f80fd5b506011546101d99062010000900460ff1681565b348015610284575f80fd5b506101fe600a5481565b348015610299575f80fd5b506101fe60105481565b3480156102ae575f80fd5b506101fe6102bd36600461194f565b6001600160a01b03165f9081526001602052604090205490565b3480156102e2575f80fd5b506101696105bf565b3480156102f6575f80fd5b50610169610305366004611977565b610630565b348015610315575f80fd5b50610169610692565b348015610329575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101b1565b348015610359575f80fd5b506101fe600b5481565b34801561036e575f80fd5b50604080518082019091526004815263444f474560e01b60208201526101a4565b34801561039a575f80fd5b506101d96103a93660046118e7565b610a65565b3480156103b9575f80fd5b506101696103c83660046118e7565b610a71565b3480156103d8575f80fd5b506101fe600c5481565b3480156103ed575f80fd5b50600f54610336906001600160a01b031681565b34801561040c575f80fd5b506101fe61041b3660046119bc565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610450575f80fd5b50610169610b13565b348015610464575f80fd5b5061016961047336600461194f565b610bc9565b5f546001600160a01b031633146104aa5760405162461bcd60e51b81526004016104a1906119f3565b60405180910390fd5b6005546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156104e0573d5f803e3d5ffd5b50565b5f6104ef338484610cb0565b5060015b92915050565b5f6105066009600a611b1c565b610515906461f313f880611b2a565b905090565b5f610526848484610dbc565b6105b584336105b0856040518060400160405280601a81526020017f7472616e73666572206578636565647320616c6c6f77616e636500000000000081525060025f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f6105903390565b6001600160a01b0316815260208101919091526040015f20549190611512565b610cb0565b5060019392505050565b5f546001600160a01b031633146105e85760405162461bcd60e51b81526004016104a1906119f3565b5f80546040516001600160a01b03909116907f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106595760405162461bcd60e51b81526004016104a1906119f3565b60118054600d9490945562ffff00199093166101009415159490940262ff00001916939093176201000091151591909102179055601055565b5f546001600160a01b031633146106bb5760405162461bcd60e51b81526004016104a1906119f3565b600f54600160a01b900460ff16156107155760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104a1565b600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561075f9030906107506009600a611b1c565b6105b0906461f313f880611b2a565b600e5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d39190611b41565b6001600160a01b031663c9c6539630600e5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610832573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108569190611b41565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156108a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c49190611b41565b600f80546001600160a01b039283166001600160a01b031990911681179091555f908152600360205260409020805460ff19166001179055600e541663f305d7194730610925816001600160a01b03165f9081526001602052604090205490565b5f806109385f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561099e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906109c39190611b5c565b5050600f54600e5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610a18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611b87565b506011805461ff001916610100179055600f805460ff60a01b1916600160a01b17905543600655565b5f6104ef338484610dbc565b5f546001600160a01b03163314610a9a5760405162461bcd60e51b81526004016104a1906119f3565b60055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610aea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0e9190611b87565b505050565b5f546001600160a01b03163314610b3c5760405162461bcd60e51b81526004016104a1906119f3565b610b486009600a611b1c565b610b57906461f313f880611b2a565b600a908155610b6890600990611b1c565b610b77906461f313f880611b2a565b600b557f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac610ba76009600a611b1c565b610bb6906461f313f880611b2a565b60405190815260200160405180910390a1565b5f546001600160a01b03163314610bf25760405162461bcd60e51b81526004016104a1906119f3565b6001600160a01b038116610c575760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a1565b5f80546040516001600160a01b03808516939216917f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b91a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d065760405162461bcd60e51b815260206004820152601960248201527f617070726f76652066726f6d207a65726f20616464726573730000000000000060448201526064016104a1565b6001600160a01b038216610d5c5760405162461bcd60e51b815260206004820152601760248201527f617070726f766520746f207a65726f206164647265737300000000000000000060448201526064016104a1565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e125760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f206164647265737300000000000060448201526064016104a1565b6001600160a01b038216610e685760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f2061646472657373000000000000000060448201526064016104a1565b5f8111610ec95760405162461bcd60e51b815260206004820152602960248201527f7472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104a1565b5f80546001600160a01b03858116911614801590610ef457505f546001600160a01b03848116911614155b156113d557610f256064610f1f60165460075411610f1457601254610f18565b6014545b859061154a565b906115c5565b90506006544303610fba57435f90815260046020526040902054602811610f9a5760405162461bcd60e51b8152602060048201526024808201527f6578636565647320627579206c696d697420666f7220696e697469616c20626c60448201526337b1b59760e11b60648201526084016104a1565b435f908152600460205260408120805491610fb483611ba2565b91905055505b600f546001600160a01b038581169116148015610fe55750600e546001600160a01b03848116911614155b801561100957506001600160a01b0383165f9081526003602052604090205460ff16155b156110ea57600a548211156110605760405162461bcd60e51b815260206004820152601f60248201527f65786365656473206d6178207472616e73616374696f6e20616d6f756e742e0060448201526064016104a1565b600b5482611082856001600160a01b03165f9081526001602052604090205490565b61108c9190611bba565b11156110d55760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b60448201526064016104a1565b60078054905f6110e483611ba2565b91905055505b600f546001600160a01b0384811691161480159061112057506001600160a01b0383165f9081526003602052604090205460ff16155b1561119a57600b5482611147856001600160a01b03165f9081526001602052604090205490565b6111519190611bba565b111561119a5760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b60448201526064016104a1565b600f546001600160a01b0384811691161480156111c057506001600160a01b0384163014155b156111ed576111ea6064610f1f601754600754116111e057601354610f18565b601554859061154a565b90505b600f546001600160a01b038581169116148015906112195750600f546001600160a01b03848116911614155b801561122e57506001600160a01b0384163014155b1561123657505f5b305f9081526001602052604090205460115462010000900460ff168015611260575060115460ff16155b80156112795750600f546001600160a01b038581169116145b801561128c5750601154610100900460ff165b80156112995750600c5481115b80156112a85750601854600754115b1561135a576009544311156112bc575f6008555b6010546008541061130f5760405162461bcd60e51b815260206004820152601d60248201527f43412062616c616e63652073656c6c206c696d6974207265616368656400000060448201526064016104a1565b61132c6113278461132284600d54611606565b611606565b61161a565b47801561133c5761133c47611781565b60088054905f61134b83611ba2565b909155505043600955506113d3565b60115460ff1615801561137a5750600f546001600160a01b038581169116145b801561138d5750601154610100900460ff165b801561139a5750600c5481115b80156113a95750601854600754115b156113d3576113c16113278461132284600d54611606565b4780156113d1576113d147611781565b505b505b801561144d57305f908152600160205260409020546113f490826117bc565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114449085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461146f908361181a565b6001600160a01b0385165f908152600160205260409020556114b2611494838361181a565b6001600160a01b0385165f90815260016020526040902054906117bc565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114fb858561181a565b60405190815260200160405180910390a350505050565b5f81848411156115355760405162461bcd60e51b81526004016104a19190611887565b505f6115418486611bcd565b95945050505050565b5f825f0361155957505f6104f3565b5f6115648385611b2a565b9050826115718583611be0565b146115be5760405162461bcd60e51b815260206004820181905260248201527f4d6174684c69623a206d756c7469706c69636174696f6e206f766572666c6f7760448201526064016104a1565b9392505050565b5f6115be83836040518060400160405280601981526020017f4d6174684c69623a206469766973696f6e206279207a65726f0000000000000081525061185b565b5f81831161161457826115be565b50919050565b6011805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061165a5761165a611bff565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d59190611b41565b816001815181106116e8576116e8611bff565b6001600160a01b039283166020918202929092010152600e5461170e9130911684610cb0565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906117469085905f90869030904290600401611c13565b5f604051808303815f87803b15801561175d575f80fd5b505af115801561176f573d5f803e3d5ffd5b50506011805460ff1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156117b8573d5f803e3d5ffd5b5050565b5f806117c88385611bba565b9050838110156115be5760405162461bcd60e51b815260206004820152601a60248201527f4d6174684c69623a206164646974696f6e206f766572666c6f7700000000000060448201526064016104a1565b5f6115be83836040518060400160405280601d81526020017f4d6174684c69623a207375627472616374696f6e206f766572666c6f77000000815250611512565b5f818361187b5760405162461bcd60e51b81526004016104a19190611887565b505f6115418486611be0565b5f602080835283518060208501525f5b818110156118b357858101830151858201604001528201611897565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146104e0575f80fd5b5f80604083850312156118f8575f80fd5b8235611903816118d3565b946020939093013593505050565b5f805f60608486031215611923575f80fd5b833561192e816118d3565b9250602084013561193e816118d3565b929592945050506040919091013590565b5f6020828403121561195f575f80fd5b81356115be816118d3565b80151581146104e0575f80fd5b5f805f806080858703121561198a575f80fd5b84356119958161196a565b93506020850135925060408501356119ac8161196a565b9396929550929360600135925050565b5f80604083850312156119cd575f80fd5b82356119d8816118d3565b915060208301356119e8816118d3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a7657815f1904821115611a5c57611a5c611a28565b80851615611a6957918102915b93841c9390800290611a41565b509250929050565b5f82611a8c575060016104f3565b81611a9857505f6104f3565b8160018114611aae5760028114611ab857611ad4565b60019150506104f3565b60ff841115611ac957611ac9611a28565b50506001821b6104f3565b5060208310610133831016604e8410600b8410161715611af7575081810a6104f3565b611b018383611a3c565b805f1904821115611b1457611b14611a28565b029392505050565b5f6115be60ff841683611a7e565b80820281158282048414176104f3576104f3611a28565b5f60208284031215611b51575f80fd5b81516115be816118d3565b5f805f60608486031215611b6e575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611b97575f80fd5b81516115be8161196a565b5f60018201611bb357611bb3611a28565b5060010190565b808201808211156104f3576104f3611a28565b818103818111156104f3576104f3611a28565b5f82611bfa57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c635784516001600160a01b031683529383019391830191600101611c3e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202ca12ae0bb294d5127bcd45c69f7611cd7bd544a5c526d6a632c5bda80d42f8f64736f6c63430008170033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c806388e5f891116100b3578063bc38a0b81161006d578063bc38a0b8146103ae578063bf474bed146103cd578063c816841b146103e2578063dd62ed3e14610401578063e12b953114610445578063f2fde38b14610459575f80fd5b806388e5f891146102eb5780638a8c523c1461030a5780638da5cb5b1461031e5780638f9a55c01461034e57806395d89b4114610363578063a9059cbb1461038f575f80fd5b8063313ce56711610104578063313ce5671461023f57806344bd98071461025a57806346e44020146102795780635fb8dca01461028e57806370a08231146102a3578063715018a6146102d7575f80fd5b80630150fe4c1461015557806306fdde031461016b578063095ea7b3146101ba5780630faee56f146101e957806318160ddd1461020c57806323b872dd14610220575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b50610169610478565b005b348015610176575f80fd5b50604080518082019091526015815274446f204f6e6c7920476f6f6420457665727964617960581b60208201525b6040516101b19190611887565b60405180910390f35b3480156101c5575f80fd5b506101d96101d43660046118e7565b6104e3565b60405190151581526020016101b1565b3480156101f4575f80fd5b506101fe600d5481565b6040519081526020016101b1565b348015610217575f80fd5b506101fe6104f9565b34801561022b575f80fd5b506101d961023a366004611911565b61051a565b34801561024a575f80fd5b50604051600981526020016101b1565b348015610265575f80fd5b506011546101d99062010000900460ff1681565b348015610284575f80fd5b506101fe600a5481565b348015610299575f80fd5b506101fe60105481565b3480156102ae575f80fd5b506101fe6102bd36600461194f565b6001600160a01b03165f9081526001602052604090205490565b3480156102e2575f80fd5b506101696105bf565b3480156102f6575f80fd5b50610169610305366004611977565b610630565b348015610315575f80fd5b50610169610692565b348015610329575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101b1565b348015610359575f80fd5b506101fe600b5481565b34801561036e575f80fd5b50604080518082019091526004815263444f474560e01b60208201526101a4565b34801561039a575f80fd5b506101d96103a93660046118e7565b610a65565b3480156103b9575f80fd5b506101696103c83660046118e7565b610a71565b3480156103d8575f80fd5b506101fe600c5481565b3480156103ed575f80fd5b50600f54610336906001600160a01b031681565b34801561040c575f80fd5b506101fe61041b3660046119bc565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610450575f80fd5b50610169610b13565b348015610464575f80fd5b5061016961047336600461194f565b610bc9565b5f546001600160a01b031633146104aa5760405162461bcd60e51b81526004016104a1906119f3565b60405180910390fd5b6005546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156104e0573d5f803e3d5ffd5b50565b5f6104ef338484610cb0565b5060015b92915050565b5f6105066009600a611b1c565b610515906461f313f880611b2a565b905090565b5f610526848484610dbc565b6105b584336105b0856040518060400160405280601a81526020017f7472616e73666572206578636565647320616c6c6f77616e636500000000000081525060025f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f6105903390565b6001600160a01b0316815260208101919091526040015f20549190611512565b610cb0565b5060019392505050565b5f546001600160a01b031633146105e85760405162461bcd60e51b81526004016104a1906119f3565b5f80546040516001600160a01b03909116907f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106595760405162461bcd60e51b81526004016104a1906119f3565b60118054600d9490945562ffff00199093166101009415159490940262ff00001916939093176201000091151591909102179055601055565b5f546001600160a01b031633146106bb5760405162461bcd60e51b81526004016104a1906119f3565b600f54600160a01b900460ff16156107155760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104a1565b600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561075f9030906107506009600a611b1c565b6105b0906461f313f880611b2a565b600e5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d39190611b41565b6001600160a01b031663c9c6539630600e5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610832573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108569190611b41565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156108a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c49190611b41565b600f80546001600160a01b039283166001600160a01b031990911681179091555f908152600360205260409020805460ff19166001179055600e541663f305d7194730610925816001600160a01b03165f9081526001602052604090205490565b5f806109385f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561099e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906109c39190611b5c565b5050600f54600e5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610a18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611b87565b506011805461ff001916610100179055600f805460ff60a01b1916600160a01b17905543600655565b5f6104ef338484610dbc565b5f546001600160a01b03163314610a9a5760405162461bcd60e51b81526004016104a1906119f3565b60055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610aea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0e9190611b87565b505050565b5f546001600160a01b03163314610b3c5760405162461bcd60e51b81526004016104a1906119f3565b610b486009600a611b1c565b610b57906461f313f880611b2a565b600a908155610b6890600990611b1c565b610b77906461f313f880611b2a565b600b557f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac610ba76009600a611b1c565b610bb6906461f313f880611b2a565b60405190815260200160405180910390a1565b5f546001600160a01b03163314610bf25760405162461bcd60e51b81526004016104a1906119f3565b6001600160a01b038116610c575760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a1565b5f80546040516001600160a01b03808516939216917f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b91a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d065760405162461bcd60e51b815260206004820152601960248201527f617070726f76652066726f6d207a65726f20616464726573730000000000000060448201526064016104a1565b6001600160a01b038216610d5c5760405162461bcd60e51b815260206004820152601760248201527f617070726f766520746f207a65726f206164647265737300000000000000000060448201526064016104a1565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e125760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f206164647265737300000000000060448201526064016104a1565b6001600160a01b038216610e685760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f2061646472657373000000000000000060448201526064016104a1565b5f8111610ec95760405162461bcd60e51b815260206004820152602960248201527f7472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104a1565b5f80546001600160a01b03858116911614801590610ef457505f546001600160a01b03848116911614155b156113d557610f256064610f1f60165460075411610f1457601254610f18565b6014545b859061154a565b906115c5565b90506006544303610fba57435f90815260046020526040902054602811610f9a5760405162461bcd60e51b8152602060048201526024808201527f6578636565647320627579206c696d697420666f7220696e697469616c20626c60448201526337b1b59760e11b60648201526084016104a1565b435f908152600460205260408120805491610fb483611ba2565b91905055505b600f546001600160a01b038581169116148015610fe55750600e546001600160a01b03848116911614155b801561100957506001600160a01b0383165f9081526003602052604090205460ff16155b156110ea57600a548211156110605760405162461bcd60e51b815260206004820152601f60248201527f65786365656473206d6178207472616e73616374696f6e20616d6f756e742e0060448201526064016104a1565b600b5482611082856001600160a01b03165f9081526001602052604090205490565b61108c9190611bba565b11156110d55760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b60448201526064016104a1565b60078054905f6110e483611ba2565b91905055505b600f546001600160a01b0384811691161480159061112057506001600160a01b0383165f9081526003602052604090205460ff16155b1561119a57600b5482611147856001600160a01b03165f9081526001602052604090205490565b6111519190611bba565b111561119a5760405162461bcd60e51b815260206004820152601860248201527732bc31b2b2b2399036b0bc103bb0b63632ba1039b4bd329760411b60448201526064016104a1565b600f546001600160a01b0384811691161480156111c057506001600160a01b0384163014155b156111ed576111ea6064610f1f601754600754116111e057601354610f18565b601554859061154a565b90505b600f546001600160a01b038581169116148015906112195750600f546001600160a01b03848116911614155b801561122e57506001600160a01b0384163014155b1561123657505f5b305f9081526001602052604090205460115462010000900460ff168015611260575060115460ff16155b80156112795750600f546001600160a01b038581169116145b801561128c5750601154610100900460ff165b80156112995750600c5481115b80156112a85750601854600754115b1561135a576009544311156112bc575f6008555b6010546008541061130f5760405162461bcd60e51b815260206004820152601d60248201527f43412062616c616e63652073656c6c206c696d6974207265616368656400000060448201526064016104a1565b61132c6113278461132284600d54611606565b611606565b61161a565b47801561133c5761133c47611781565b60088054905f61134b83611ba2565b909155505043600955506113d3565b60115460ff1615801561137a5750600f546001600160a01b038581169116145b801561138d5750601154610100900460ff165b801561139a5750600c5481115b80156113a95750601854600754115b156113d3576113c16113278461132284600d54611606565b4780156113d1576113d147611781565b505b505b801561144d57305f908152600160205260409020546113f490826117bc565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114449085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461146f908361181a565b6001600160a01b0385165f908152600160205260409020556114b2611494838361181a565b6001600160a01b0385165f90815260016020526040902054906117bc565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114fb858561181a565b60405190815260200160405180910390a350505050565b5f81848411156115355760405162461bcd60e51b81526004016104a19190611887565b505f6115418486611bcd565b95945050505050565b5f825f0361155957505f6104f3565b5f6115648385611b2a565b9050826115718583611be0565b146115be5760405162461bcd60e51b815260206004820181905260248201527f4d6174684c69623a206d756c7469706c69636174696f6e206f766572666c6f7760448201526064016104a1565b9392505050565b5f6115be83836040518060400160405280601981526020017f4d6174684c69623a206469766973696f6e206279207a65726f0000000000000081525061185b565b5f81831161161457826115be565b50919050565b6011805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061165a5761165a611bff565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d59190611b41565b816001815181106116e8576116e8611bff565b6001600160a01b039283166020918202929092010152600e5461170e9130911684610cb0565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906117469085905f90869030904290600401611c13565b5f604051808303815f87803b15801561175d575f80fd5b505af115801561176f573d5f803e3d5ffd5b50506011805460ff1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156117b8573d5f803e3d5ffd5b5050565b5f806117c88385611bba565b9050838110156115be5760405162461bcd60e51b815260206004820152601a60248201527f4d6174684c69623a206164646974696f6e206f766572666c6f7700000000000060448201526064016104a1565b5f6115be83836040518060400160405280601d81526020017f4d6174684c69623a207375627472616374696f6e206f766572666c6f77000000815250611512565b5f818361187b5760405162461bcd60e51b81526004016104a19190611887565b505f6115418486611be0565b5f602080835283518060208501525f5b818110156118b357858101830151858201604001528201611897565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146104e0575f80fd5b5f80604083850312156118f8575f80fd5b8235611903816118d3565b946020939093013593505050565b5f805f60608486031215611923575f80fd5b833561192e816118d3565b9250602084013561193e816118d3565b929592945050506040919091013590565b5f6020828403121561195f575f80fd5b81356115be816118d3565b80151581146104e0575f80fd5b5f805f806080858703121561198a575f80fd5b84356119958161196a565b93506020850135925060408501356119ac8161196a565b9396929550929360600135925050565b5f80604083850312156119cd575f80fd5b82356119d8816118d3565b915060208301356119e8816118d3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a7657815f1904821115611a5c57611a5c611a28565b80851615611a6957918102915b93841c9390800290611a41565b509250929050565b5f82611a8c575060016104f3565b81611a9857505f6104f3565b8160018114611aae5760028114611ab857611ad4565b60019150506104f3565b60ff841115611ac957611ac9611a28565b50506001821b6104f3565b5060208310610133831016604e8410600b8410161715611af7575081810a6104f3565b611b018383611a3c565b805f1904821115611b1457611b14611a28565b029392505050565b5f6115be60ff841683611a7e565b80820281158282048414176104f3576104f3611a28565b5f60208284031215611b51575f80fd5b81516115be816118d3565b5f805f60608486031215611b6e575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611b97575f80fd5b81516115be8161196a565b5f60018201611bb357611bb3611a28565b5060010190565b808201808211156104f3576104f3611a28565b818103818111156104f3576104f3611a28565b5f82611bfa57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c635784516001600160a01b031683529383019391830191600101611c3e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202ca12ae0bb294d5127bcd45c69f7611cd7bd544a5c526d6a632c5bda80d42f8f64736f6c63430008170033

Deployed Bytecode Sourcemap

3986:9101:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11816:118;;;;;;;;;;;;;:::i;:::-;;6062:82;;;;;;;;;;-1:-1:-1;6132:4:0;;;;;;;;;;;;-1:-1:-1;;;6132:4:0;;;;6062:82;;;;;;;:::i;:::-;;;;;;;;6896:165;;;;;;;;;;-1:-1:-1;6896:165:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6896:165:0;1023:187:1;4939:56:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;4939:56:0;1215:177:1;6336:100:0;;;;;;;;;;;;;:::i;7069:306::-;;;;;;;;;;-1:-1:-1;7069:306:0;;;;;:::i;:::-;;:::i;6246:82::-;;;;;;;;;;-1:-1:-1;6246:82:0;;4531:1;2000:36:1;;1988:2;1973:18;6246:82:0;1858:184:1;5226:28:0;;;;;;;;;;-1:-1:-1;5226:28:0;;;;;;;;;;;4742:55;;;;;;;;;;;;;;;;5113:29;;;;;;;;;;;;;;;;6444:118;;;;;;;;;;-1:-1:-1;6444:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;6537:17:0;6510:7;6537:17;;;:8;:17;;;;;;;6444:118;2831:144;;;;;;;;;;;;;:::i;11575:233::-;;;;;;;;;;-1:-1:-1;11575:233:0;;;;;:::i;:::-;;:::i;12293:754::-;;;;;;;;;;;;;:::i;2617:79::-;;;;;;;;;;-1:-1:-1;2655:7:0;2682:6;-1:-1:-1;;;;;2682:6:0;2617:79;;;-1:-1:-1;;;;;3104:32:1;;;3086:51;;3074:2;3059:18;2617:79:0;2940:203:1;4804:59:0;;;;;;;;;;;;;;;;6152:86;;;;;;;;;;-1:-1:-1;6224:6:0;;;;;;;;;;;;-1:-1:-1;;;6224:6:0;;;;6152:86;;6571:167;;;;;;;;;;-1:-1:-1;6571:167:0;;;;;:::i;:::-;;:::i;11942:153::-;;;;;;;;;;-1:-1:-1;11942:153:0;;;;;:::i;:::-;;:::i;4870:62::-;;;;;;;;;;;;;;;;5047:26;;;;;;;;;;-1:-1:-1;5047:26:0;;;;-1:-1:-1;;;;;5047:26:0;;;6746:142;;;;;;;;;;-1:-1:-1;6746:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;6854:17:0;;;6827:7;6854:17;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;6746:142;12103:182;;;;;;;;;;;;;:::i;2983:240::-;;;;;;;;;;-1:-1:-1;2983:240:0;;;;;:::i;:::-;;:::i;11816:118::-;2744:6;;-1:-1:-1;;;;;2744:6:0;436:10;2744:22;2736:67;;;;-1:-1:-1;;;2736:67:0;;;;;;;:::i;:::-;;;;;;;;;11880:13:::1;::::0;11872:54:::1;::::0;-1:-1:-1;;;;;11880:13:0;;::::1;::::0;11904:21:::1;11872:54:::0;::::1;;;::::0;11880:13:::1;11872:54:::0;11880:13;11872:54;11904:21;11880:13;11872:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11816:118::o:0;6896:165::-;6971:4;6988:43;436:10;7015:7;7024:6;6988:12;:43::i;:::-;-1:-1:-1;7049:4:0;6896:165;;;;;:::o;6336:100::-;6389:7;4594:14;4531:1;4594:2;:14;:::i;:::-;4579:29;;:12;:29;:::i;:::-;6409:19;;6336:100;:::o;7069:306::-;7167:4;7184:36;7194:6;7202:9;7213:6;7184:9;:36::i;:::-;7231:114;7244:6;436:10;7266:78;7307:6;7266:78;;;;;;;;;;;;;;;;;:10;:18;7277:6;-1:-1:-1;;;;;7266:18:0;-1:-1:-1;;;;;7266:18:0;;;;;;;;;;;;:32;7285:12;436:10;;356:98;7285:12;-1:-1:-1;;;;;7266:32:0;;;;;;;;;;;;-1:-1:-1;7266:32:0;;;:78;:40;:78::i;:::-;7231:12;:114::i;:::-;-1:-1:-1;7363:4:0;7069:306;;;;;:::o;2831:144::-;2744:6;;-1:-1:-1;;;;;2744:6:0;436:10;2744:22;2736:67;;;;-1:-1:-1;;;2736:67:0;;;;;;;:::i;:::-;2934:1:::1;2918:6:::0;;2901:36:::1;::::0;-1:-1:-1;;;;;2918:6:0;;::::1;::::0;2901:36:::1;::::0;2934:1;;2901:36:::1;2965:1;2948:19:::0;;-1:-1:-1;;;;;;2948:19:0::1;::::0;;2831:144::o;11575:233::-;2744:6;;-1:-1:-1;;;;;2744:6:0;436:10;2744:22;2736:67;;;;-1:-1:-1;;;2736:67:0;;;;;;;:::i;:::-;11688:11:::1;:20:::0;;11719:11:::1;:20:::0;;;;-1:-1:-1;;11750:19:0;;;11688:20:::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;11750:19:0;;;;;;;::::1;;::::0;;;::::1;;::::0;;11780:10:::1;:20:::0;11575:233::o;12293:754::-;2744:6;;-1:-1:-1;;;;;2744:6:0;436:10;2744:22;2736:67;;;;-1:-1:-1;;;2736:67:0;;;;;;;:::i;:::-;12359:13:::1;::::0;-1:-1:-1;;;12359:13:0;::::1;;;12358:14;12350:50;;;::::0;-1:-1:-1;;;12350:50:0;;5786:2:1;12350:50:0::1;::::0;::::1;5768:21:1::0;5825:2;5805:18;;;5798:30;5864:25;5844:18;;;5837:53;5907:18;;12350:50:0::1;5584:347:1::0;12350:50:0::1;12411:13;:74:::0;;-1:-1:-1;;;;;;12411:74:0::1;12442:42;12411:74:::0;;::::1;::::0;;;12496:65:::1;::::0;12517:4:::1;::::0;4594:14:::1;4531:1;4594:2;:14;:::i;:::-;4579:29;::::0;:12:::1;:29;:::i;12496:65::-;12602:13;;;;;;;;;-1:-1:-1::0;;;;;12602:13:0::1;-1:-1:-1::0;;;;;12602:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12586:51:0::1;;12646:4;12653:13;;;;;;;;;-1:-1:-1::0;;;;;12653:13:0::1;-1:-1:-1::0;;;;;12653:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12586:88;::::0;-1:-1:-1;;;;;;12586:88:0::1;::::0;;;;;;-1:-1:-1;;;;;6422:15:1;;;12586:88:0::1;::::0;::::1;6404:34:1::0;6474:15;;6454:18;;;6447:43;6339:18;;12586:88:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12572:11;:102:::0;;-1:-1:-1;;;;;12572:102:0;;::::1;-1:-1:-1::0;;;;;;12572:102:0;;::::1;::::0;::::1;::::0;;;:11:::1;12685:30:::0;;;:8:::1;:30;::::0;;;;:37;;-1:-1:-1;;12685:37:0::1;12572:102:::0;12685:37:::1;::::0;;12733:13:::1;::::0;::::1;:29;12770:21;12801:4;12808:24;12801:4:::0;-1:-1:-1;;;;;6537:17:0;6510:7;6537:17;;;:8;:17;;;;;;;6444:118;12808:24:::1;12834:1;12837::::0;12840:7:::1;2655::::0;2682:6;-1:-1:-1;;;;;2682:6:0;;2617:79;12840:7:::1;12733:132;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12733:132:0;;;-1:-1:-1;;;;;6860:15:1;;;12733:132:0::1;::::0;::::1;6842:34:1::0;6892:18;;;6885:34;;;;6935:18;;;6928:34;;;;6978:18;;;6971:34;7042:15;;;7021:19;;;7014:44;12849:15:0::1;7074:19:1::0;;;7067:35;6776:19;;12733:132:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12883:11:0::1;::::0;12912:13:::1;::::0;12876:67:::1;::::0;-1:-1:-1;;;12876:67:0;;-1:-1:-1;;;;;12912:13:0;;::::1;12876:67;::::0;::::1;7598:51:1::0;-1:-1:-1;;7665:18:1;;;7658:34;12883:11:0;::::1;::::0;-1:-1:-1;12876:27:0::1;::::0;7571:18:1;;12876:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;12954:11:0::1;:18:::0;;-1:-1:-1;;12954:18:0::1;;;::::0;;12983:13:::1;:20:::0;;-1:-1:-1;;;;12983:20:0::1;-1:-1:-1::0;;;12983:20:0::1;::::0;;13027:12:::1;13014:10;:25:::0;12293:754::o;6571:167::-;6649:4;6666:42;436:10;6690:9;6701:6;6666:9;:42::i;11942:153::-;2744:6;;-1:-1:-1;;;;;2744:6:0;436:10;2744:22;2736:67;;;;-1:-1:-1;;;2736:67:0;;;;;;;:::i;:::-;12065:13:::1;::::0;12038:49:::1;::::0;-1:-1:-1;;;12038:49:0;;-1:-1:-1;;;;;12065:13:0;;::::1;12038:49;::::0;::::1;7598:51:1::0;7665:18;;;7658:34;;;12038:26:0;;::::1;::::0;::::1;::::0;7571:18:1;;12038:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11942:153:::0;;:::o;12103:182::-;2744:6;;-1:-1:-1;;;;;2744:6:0;436:10;2744:22;2736:67;;;;-1:-1:-1;;;2736:67:0;;;;;;;:::i;:::-;4594:14:::1;4531:1;4594:2;:14;:::i;:::-;4579:29;::::0;:12:::1;:29;:::i;:::-;12155:10;:25:::0;;;4594:14:::1;::::0;4531:1:::1;::::0;4594:14:::1;:::i;:::-;4579:29;::::0;:12:::1;:29;:::i;:::-;12191:14;:29:::0;12236:41:::1;4594:14;4531:1;4594:2;:14;:::i;:::-;4579:29;::::0;:12:::1;:29;:::i;:::-;12236:41;::::0;1361:25:1;;;1349:2;1334:18;12236:41:0::1;;;;;;;12103:182::o:0;2983:240::-;2744:6;;-1:-1:-1;;;;;2744:6:0;436:10;2744:22;2736:67;;;;-1:-1:-1;;;2736:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3072:22:0;::::1;3064:73;;;::::0;-1:-1:-1;;;3064:73:0;;8442:2:1;3064:73:0::1;::::0;::::1;8424:21:1::0;8481:2;8461:18;;;8454:30;8520:34;8500:18;;;8493:62;-1:-1:-1;;;8571:18:1;;;8564:36;8617:19;;3064:73:0::1;8240:402:1::0;3064:73:0::1;3170:6;::::0;;3153:34:::1;::::0;-1:-1:-1;;;;;3153:34:0;;::::1;::::0;3170:6;::::1;::::0;3153:34:::1;::::0;::::1;3198:6;:17:::0;;-1:-1:-1;;;;;;3198:17:0::1;-1:-1:-1::0;;;;;3198:17:0;;;::::1;::::0;;;::::1;::::0;;2983:240::o;7383:316::-;-1:-1:-1;;;;;7480:19:0;;7472:57;;;;-1:-1:-1;;;7472:57:0;;8849:2:1;7472:57:0;;;8831:21:1;8888:2;8868:18;;;8861:30;8927:27;8907:18;;;8900:55;8972:18;;7472:57:0;8647:349:1;7472:57:0;-1:-1:-1;;;;;7548:21:0;;7540:57;;;;-1:-1:-1;;;7540:57:0;;9203:2:1;7540:57:0;;;9185:21:1;9242:2;9222:18;;;9215:30;9281:25;9261:18;;;9254:53;9324:18;;7540:57:0;9001:347:1;7540:57:0;-1:-1:-1;;;;;7608:17:0;;;;;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;:35;;;7659:32;;1361:25:1;;;7659:32:0;;1334:18:1;7659:32:0;;;;;;;7383:316;;;:::o;7707:3164::-;-1:-1:-1;;;;;7795:18:0;;7787:57;;;;-1:-1:-1;;;7787:57:0;;9555:2:1;7787:57:0;;;9537:21:1;9594:2;9574:18;;;9567:30;9633:28;9613:18;;;9606:56;9679:18;;7787:57:0;9353:350:1;7787:57:0;-1:-1:-1;;;;;7863:16:0;;7855:53;;;;-1:-1:-1;;;7855:53:0;;9910:2:1;7855:53:0;;;9892:21:1;9949:2;9929:18;;;9922:30;9988:26;9968:18;;;9961:54;10032:18;;7855:53:0;9708:348:1;7855:53:0;7936:1;7927:6;:10;7919:64;;;;-1:-1:-1;;;7919:64:0;;10263:2:1;7919:64:0;;;10245:21:1;10302:2;10282:18;;;10275:30;10341:34;10321:18;;;10314:62;-1:-1:-1;;;10392:18:1;;;10385:39;10441:19;;7919:64:0;10061:405:1;7919:64:0;8004:18;2682:6;;-1:-1:-1;;;;;8043:15:0;;;2682:6;;8043:15;;;;:32;;-1:-1:-1;2655:7:0;2682:6;-1:-1:-1;;;;;8062:13:0;;;2682:6;;8062:13;;8043:32;8039:2442;;;8105:90;8191:3;8105:77;8133:15;;8121:9;;:27;8120:61;;8167:14;;8120:61;;;8152:12;;8120:61;8105:6;;:14;:77::i;:::-;:85;;:90::i;:::-;8092:103;;8232:10;;8216:12;:26;8212:200;;8287:12;8271:29;;;;:15;:29;;;;;;8303:2;-1:-1:-1;8263:83:0;;;;-1:-1:-1;;;8263:83:0;;10673:2:1;8263:83:0;;;10655:21:1;10712:2;10692:18;;;10685:30;10751:34;10731:18;;;10724:62;-1:-1:-1;;;10802:18:1;;;10795:34;10846:19;;8263:83:0;10471:400:1;8263:83:0;8381:12;8365:29;;;;:15;:29;;;;;:31;;;;;;:::i;:::-;;;;;;8212:200;8440:11;;-1:-1:-1;;;;;8432:19:0;;;8440:11;;8432:19;:51;;;;-1:-1:-1;8469:13:0;;-1:-1:-1;;;;;8455:28:0;;;8469:13;;8455:28;;8432:51;:68;;;;-1:-1:-1;;;;;;8488:12:0;;;;;;:8;:12;;;;;;;;8487:13;8432:68;8428:299;;;8539:10;;8529:6;:20;;8521:64;;;;-1:-1:-1;;;8521:64:0;;11218:2:1;8521:64:0;;;11200:21:1;11257:2;11237:18;;;11230:30;11296:33;11276:18;;;11269:61;11347:18;;8521:64:0;11016:355:1;8521:64:0;8638:14;;8628:6;8612:13;8622:2;-1:-1:-1;;;;;6537:17:0;6510:7;6537:17;;;:8;:17;;;;;;;6444:118;8612:13;:22;;;;:::i;:::-;:40;;8604:77;;;;-1:-1:-1;;;8604:77:0;;11708:2:1;8604:77:0;;;11690:21:1;11747:2;11727:18;;;11720:30;-1:-1:-1;;;11766:18:1;;;11759:54;11830:18;;8604:77:0;11506:348:1;8604:77:0;8700:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8428:299;8753:11;;-1:-1:-1;;;;;8747:17:0;;;8753:11;;8747:17;;;;:34;;-1:-1:-1;;;;;;8769:12:0;;;;;;:8;:12;;;;;;;;8768:13;8747:34;8743:152;;;8836:14;;8826:6;8810:13;8820:2;-1:-1:-1;;;;;6537:17:0;6510:7;6537:17;;;:8;:17;;;;;;;6444:118;8810:13;:22;;;;:::i;:::-;:40;;8802:77;;;;-1:-1:-1;;;8802:77:0;;11708:2:1;8802:77:0;;;11690:21:1;11747:2;11727:18;;;11720:30;-1:-1:-1;;;11766:18:1;;;11759:54;11830:18;;8802:77:0;11506:348:1;8802:77:0;8921:11;;-1:-1:-1;;;;;8915:17:0;;;8921:11;;8915:17;:42;;;;-1:-1:-1;;;;;;8936:21:0;;8952:4;8936:21;;8915:42;8911:189;;;8991:93;9080:3;8991:80;9019:16;;9007:9;;:28;9006:64;;9055:15;;9006:64;;;9039:13;;8991:6;;:14;:80::i;:93::-;8978:106;;8911:189;9128:11;;-1:-1:-1;;;;;9120:19:0;;;9128:11;;9120:19;;;;:40;;-1:-1:-1;9149:11:0;;-1:-1:-1;;;;;9143:17:0;;;9149:11;;9143:17;;9120:40;:65;;;;-1:-1:-1;;;;;;9164:21:0;;9180:4;9164:21;;9120:65;9116:120;;;-1:-1:-1;9219:1:0;9116:120;9301:4;9252:28;6537:17;;;:8;:17;;;;;;9326:9;;;;;;;:24;;;;-1:-1:-1;9340:10:0;;;;9339:11;9326:24;:45;;;;-1:-1:-1;9360:11:0;;-1:-1:-1;;;;;9354:17:0;;;9360:11;;9354:17;9326:45;:60;;;;-1:-1:-1;9375:11:0;;;;;;;9326:60;:104;;;;;9413:17;;9390:20;:40;9326:104;:138;;;;;9446:18;;9434:9;;:30;9326:138;9322:1148;;;9504:13;;9489:12;:28;9485:91;;;9555:1;9542:10;:14;9485:91;9615:10;;9602;;:23;9594:65;;;;-1:-1:-1;;;9594:65:0;;12061:2:1;9594:65:0;;;12043:21:1;12100:2;12080:18;;;12073:30;12139:31;12119:18;;;12112:59;12188:18;;9594:65:0;11859:353:1;9594:65:0;9678:70;9696:51;9700:6;9708:38;9712:20;9734:11;;9708:3;:38::i;:::-;9696:3;:51::i;:::-;9678:17;:70::i;:::-;9796:21;9840:22;;9836:106;;9887:35;9900:21;9887:12;:35::i;:::-;9960:10;:12;;;:10;:12;;;:::i;:::-;;;;-1:-1:-1;;10007:12:0;9991:13;:28;-1:-1:-1;9322:1148:0;;;10046:10;;;;10045:11;:32;;;;-1:-1:-1;10066:11:0;;-1:-1:-1;;;;;10060:17:0;;;10066:11;;10060:17;10045:32;:47;;;;-1:-1:-1;10081:11:0;;;;;;;10045:47;:91;;;;;10119:17;;10096:20;:40;10045:91;:125;;;;;10152:18;;10140:9;;:30;10045:125;10041:429;;;10191:70;10209:51;10213:6;10221:38;10225:20;10247:11;;10221:3;:38::i;10191:70::-;10309:21;10353:22;;10349:106;;10400:35;10413:21;10400:12;:35::i;:::-;10172:298;10041:429;8077:2404;8039:2442;10497:14;;10493:177;;10571:4;10554:23;;;;:8;:23;;;;;;:43;;10586:10;10554:31;:43::i;:::-;10545:4;10528:23;;;;:8;:23;;;;;;;:69;;;;10617:41;;-1:-1:-1;;;;;10617:41:0;;;;;;;10647:10;1361:25:1;;1349:2;1334:18;;1215:177;10617:41:0;;;;;;;;10493:177;-1:-1:-1;;;;;10697:14:0;;;;;;:8;:14;;;;;;:30;;10720:6;10697:22;:30::i;:::-;-1:-1:-1;;;;;10680:14:0;;;;;;:8;:14;;;;;:47;10753:48;10774:26;:6;10789:10;10774:14;:26::i;:::-;-1:-1:-1;;;;;10753:12:0;;;;;;:8;:12;;;;;;;:20;:48::i;:::-;-1:-1:-1;;;;;10738:12:0;;;;;;;:8;:12;;;;;:63;;;;10817:46;;;10836:26;:6;10851:10;10836:14;:26::i;:::-;10817:46;;1361:25:1;;;1349:2;1334:18;10817:46:0;;;;;;;7776:3095;7707:3164;;;:::o;1502:194::-;1592:7;1628:12;1620:6;;;;1612:29;;;;-1:-1:-1;;;1612:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1652:9:0;1664:5;1668:1;1664;:5;:::i;:::-;1652:17;1502:194;-1:-1:-1;;;;;1502:194:0:o;1704:249::-;1766:7;1790:1;1795;1790:6;1786:47;;-1:-1:-1;1820:1:0;1813:8;;1786:47;1843:9;1855:5;1859:1;1855;:5;:::i;:::-;1843:17;-1:-1:-1;1888:1:0;1879:5;1883:1;1843:17;1879:5;:::i;:::-;:10;1871:55;;;;-1:-1:-1;;;1871:55:0;;12774:2:1;1871:55:0;;;12756:21:1;;;12793:18;;;12786:30;12852:34;12832:18;;;12825:62;12904:18;;1871:55:0;12572:356:1;1871:55:0;1944:1;1704:249;-1:-1:-1;;;1704:249:0:o;1961:139::-;2023:7;2050:42;2058:1;2061;2050:42;;;;;;;;;;;;;;;;;:7;:42::i;10879:98::-;10936:7;10963:1;10961;:3;10960:9;;10968:1;10960:9;;;-1:-1:-1;10966:1:0;10879:98;-1:-1:-1;10879:98:0:o;10985:479::-;5368:10;:17;;-1:-1:-1;;5368:17:0;5381:4;5368:17;;;11085:16:::1;::::0;;11099:1:::1;11085:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11085:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11085:16:0::1;11061:40;;11130:4;11112;11117:1;11112:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11112:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11156:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;11156:20:0;;;;:13;;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;11112:7;;11156:20;;;;;:13;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11146:4;11151:1;11146:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11146:30:0;;::::1;:7;::::0;;::::1;::::0;;;;;:30;11223:13:::1;::::0;11187:64:::1;::::0;11208:4:::1;::::0;11223:13:::1;11239:11:::0;11187:12:::1;:64::i;:::-;11262:13;::::0;:194:::1;::::0;-1:-1:-1;;;11262:194:0;;-1:-1:-1;;;;;11262:13:0;;::::1;::::0;:64:::1;::::0;:194:::1;::::0;11341:11;;11262:13:::1;::::0;11383:4;;11410::::1;::::0;11430:15:::1;::::0;11262:194:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5408:10:0;:18;;-1:-1:-1;;5408:18:0;;;-1:-1:-1;;;;10985:479:0:o;11472:95::-;11529:13;;:30;;-1:-1:-1;;;;;11529:13:0;;;;:30;;;;;11552:6;;11529:13;:30;:13;:30;11552:6;11529:13;:30;;;;;;;;;;;;;;;;;;;;;11472:95;:::o;1161:182::-;1223:7;;1255:5;1259:1;1255;:5;:::i;:::-;1243:17;;1284:1;1279;:6;;1271:45;;;;-1:-1:-1;;;1271:45:0;;14384:2:1;1271:45:0;;;14366:21:1;14423:2;14403:18;;;14396:30;14462:28;14442:18;;;14435:56;14508:18;;1271:45:0;14182:350:1;1351:143:0;1413:7;1440:46;1448:1;1451;1440:46;;;;;;;;;;;;;;;;;:7;:46::i;2108:193::-;2198:7;2233:12;2226:5;2218:28;;;;-1:-1:-1;;;2218:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2257:9:0;2269:5;2273:1;2269;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2299:118::-;2385:5;2378:13;2371:21;2364:5;2361:32;2351:60;;2407:1;2404;2397:12;2422:513;2502:6;2510;2518;2526;2579:3;2567:9;2558:7;2554:23;2550:33;2547:53;;;2596:1;2593;2586:12;2547:53;2635:9;2622:23;2654:28;2676:5;2654:28;:::i;:::-;2701:5;-1:-1:-1;2753:2:1;2738:18;;2725:32;;-1:-1:-1;2809:2:1;2794:18;;2781:32;2822:30;2781:32;2822:30;:::i;:::-;2422:513;;;;-1:-1:-1;2871:7:1;;2925:2;2910:18;2897:32;;-1:-1:-1;;2422:513:1:o;3148:388::-;3216:6;3224;3277:2;3265:9;3256:7;3252:23;3248:32;3245:52;;;3293:1;3290;3283:12;3245:52;3332:9;3319:23;3351:31;3376:5;3351:31;:::i;:::-;3401:5;-1:-1:-1;3458:2:1;3443:18;;3430:32;3471:33;3430:32;3471:33;:::i;:::-;3523:7;3513:17;;;3148:388;;;;;:::o;3541:356::-;3743:2;3725:21;;;3762:18;;;3755:30;3821:34;3816:2;3801:18;;3794:62;3888:2;3873:18;;3541:356::o;3902:127::-;3963:10;3958:3;3954:20;3951:1;3944:31;3994:4;3991:1;3984:15;4018:4;4015:1;4008:15;4034:416;4123:1;4160:5;4123:1;4174:270;4195:7;4185:8;4182:21;4174:270;;;4254:4;4250:1;4246:6;4242:17;4236:4;4233:27;4230:53;;;4263:18;;:::i;:::-;4313:7;4303:8;4299:22;4296:55;;;4333:16;;;;4296:55;4412:22;;;;4372:15;;;;4174:270;;;4178:3;4034:416;;;;;:::o;4455:806::-;4504:5;4534:8;4524:80;;-1:-1:-1;4575:1:1;4589:5;;4524:80;4623:4;4613:76;;-1:-1:-1;4660:1:1;4674:5;;4613:76;4705:4;4723:1;4718:59;;;;4791:1;4786:130;;;;4698:218;;4718:59;4748:1;4739:10;;4762:5;;;4786:130;4823:3;4813:8;4810:17;4807:43;;;4830:18;;:::i;:::-;-1:-1:-1;;4886:1:1;4872:16;;4901:5;;4698:218;;5000:2;4990:8;4987:16;4981:3;4975:4;4972:13;4968:36;4962:2;4952:8;4949:16;4944:2;4938:4;4935:12;4931:35;4928:77;4925:159;;;-1:-1:-1;5037:19:1;;;5069:5;;4925:159;5116:34;5141:8;5135:4;5116:34;:::i;:::-;5186:6;5182:1;5178:6;5174:19;5165:7;5162:32;5159:58;;;5197:18;;:::i;:::-;5235:20;;4455:806;-1:-1:-1;;;4455:806:1:o;5266:140::-;5324:5;5353:47;5394:4;5384:8;5380:19;5374:4;5353:47;:::i;5411:168::-;5484:9;;;5515;;5532:15;;;5526:22;;5512:37;5502:71;;5553:18;;:::i;5936:251::-;6006:6;6059:2;6047:9;6038:7;6034:23;6030:32;6027:52;;;6075:1;6072;6065:12;6027:52;6107:9;6101:16;6126:31;6151:5;6126:31;:::i;7113:306::-;7201:6;7209;7217;7270:2;7258:9;7249:7;7245:23;7241:32;7238:52;;;7286:1;7283;7276:12;7238:52;7315:9;7309:16;7299:26;;7365:2;7354:9;7350:18;7344:25;7334:35;;7409:2;7398:9;7394:18;7388:25;7378:35;;7113:306;;;;;:::o;7703:245::-;7770:6;7823:2;7811:9;7802:7;7798:23;7794:32;7791:52;;;7839:1;7836;7829:12;7791:52;7871:9;7865:16;7890:28;7912:5;7890:28;:::i;10876:135::-;10915:3;10936:17;;;10933:43;;10956:18;;:::i;:::-;-1:-1:-1;11003:1:1;10992:13;;10876:135::o;11376:125::-;11441:9;;;11462:10;;;11459:36;;;11475:18;;:::i;12217:128::-;12284:9;;;12305:11;;;12302:37;;;12319:18;;:::i;12350:217::-;12390:1;12416;12406:132;;12460:10;12455:3;12451:20;12448:1;12441:31;12495:4;12492:1;12485:15;12523:4;12520:1;12513:15;12406:132;-1:-1:-1;12552:9:1;;12350:217::o;13065:127::-;13126:10;13121:3;13117:20;13114:1;13107:31;13157:4;13154:1;13147:15;13181:4;13178:1;13171:15;13197:980;13459:4;13507:3;13496:9;13492:19;13538:6;13527:9;13520:25;13564:2;13602:6;13597:2;13586:9;13582:18;13575:34;13645:3;13640:2;13629:9;13625:18;13618:31;13669:6;13704;13698:13;13735:6;13727;13720:22;13773:3;13762:9;13758:19;13751:26;;13812:2;13804:6;13800:15;13786:29;;13833:1;13843:195;13857:6;13854:1;13851:13;13843:195;;;13922:13;;-1:-1:-1;;;;;13918:39:1;13906:52;;14013:15;;;;13978:12;;;;13954:1;13872:9;13843:195;;;-1:-1:-1;;;;;;;14094:32:1;;;;14089:2;14074:18;;14067:60;-1:-1:-1;;;14158:3:1;14143:19;14136:35;14055:3;13197:980;-1:-1:-1;;;13197:980:1:o

Swarm Source

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