ETH Price: $3,340.19 (-1.71%)

Token

Puppy AI (PUPPY)
 

Overview

Max Total Supply

1,000,000,000 PUPPY

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,364,481.921012177 PUPPY

Value
$0.00
0x9e5aaa8771e37f5a01addb77438a8b4b4e4b2e15
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:
PUPPY

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**

In the cryptoverse's arena, Puppy the AI, a guardian of digital realms, 
faced off against Floki and Shiba Inu, 
titans of meme coin fame. Unlike any ordinary Scottish Terrier, 
Puppy's jet-black fur and advanced AI made him a formidable opponent. 
This wasn't just a clash; it was a showdown of wit over might. 
Puppy, with his deep understanding of the blockchain's intricacies, 
outmaneuvered the duo, safeguarding the cryptoverse's balance. 
His victory wasn't about dominance but ensuring the digital world remained a place for all,
showcasing his role not just as a protector but as a wise guardian always steps ahead.

Website:  https://www.puppyai.tech
Telegram: https://t.me/puppyai_erc
Twitter:  https://twitter.com/puppyai_erc

**/

pragma solidity 0.8.18;

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

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

interface IDEXFactory {
    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 feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
}

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

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract PUPPY is Context, IERC20, Ownable {
    mapping(address => uint256) private pupValues;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private excludedFromFees;

    IDEXRouter public uniswapV2Router;
    address private uniswapV2Pair;
    bool private inSwapLP = false;
    bool public tradeEnabled = false;
    bool private swapEnabled = false;

    modifier lockTheSwap() {
        inSwapLP = true;
        _;
        inSwapLP = false;
    }

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = unicode"Puppy AI";
    string private constant _symbol = unicode"PUPPY";
    uint256 public txMaxLimits = 20_000_000 * 10 ** _decimals;
    uint256 private minSwapCounts = 10_000 * 10 ** _decimals;
    uint256 private maxSwapCounts = 10_000_000 * 10 ** _decimals;
    uint256 private _buyMAXs = 0;
    uint256 private _buyTAXs = 19;
    uint256 private _sellTAXs = 24;

    address payable private opSender;
    address payable private pupSender;
    address public constant deadWallet =
        0x000000000000000000000000000000000000dEaD;

    event ExcludeFromFeeUpdated(address indexed account);
    event includeFromFeeUpdated(address indexed account);
    event ERC20TokensRecovered(uint256 indexed _amount);
    event TradingOpenUpdated();
    event ETHBalanceRecovered();

    constructor() {
        excludedFromFees[_msgSender()] = true;
        excludedFromFees[address(this)] = true;
        excludedFromFees[deadWallet] = true;
        pupValues[_msgSender()] = _tTotal;
        opSender = payable(0x95994A5b95505094fb955402E126a7dCb06E4958);
        pupSender = payable(0x8B42e27D448F762Edc22Dd1cC7D2708Ecb9Ce3f0);
        excludedFromFees[pupSender] = true;
        excludedFromFees[opSender] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function 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) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    
    function enablePUPPY() external onlyOwner {
        require(!tradeEnabled, "trading is already open");
        swapEnabled = true;
        tradeEnabled = true;
        emit TradingOpenUpdated();
    }

    receive() external payable {}

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

    function _SwapTokenForETH(uint256 tokenAmount) private lockTheSwap {
        require(tokenAmount > 0, "amount must be greeter than 0");
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _UpdateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 100 && _sellFee <= 100, "revert wrong fee settings");
        _buyTAXs = _buyFee;
        _sellTAXs = _sellFee;
    }

    function _ExcludeFromFees(address account) external onlyOwner {
        require(
            excludedFromFees[account] != true,
            "Account is already excluded"
        );
        excludedFromFees[account] = true;
        emit ExcludeFromFeeUpdated(account);
    }

    function _IncludeFromFees(address account) external onlyOwner {
        require(
            excludedFromFees[account] != false,
            "Account is already included"
        );
        excludedFromFees[account] = false;
        emit includeFromFeeUpdated(account);
    }

    function sendETHPUP(uint256 amount) private {
        require(amount > 0, "amount must be greeter than 0");
        pupSender.transfer(amount / 2);
        opSender.transfer(amount / 2);
    }

    function removeLimit() external onlyOwner {
        _buyTAXs = 2;
        _sellTAXs = 2;
        txMaxLimits = _tTotal;
    }

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

        uint256 totalTAXs = 0;
        totalTAXs = _buyTAXs;

        if (!excludedFromFees[from] && !excludedFromFees[to]) {
            require(tradeEnabled, "Trading not enabled");
        }

        if (inSwapLP || !swapEnabled) {
            pupValues[from] -= amount;
            pupValues[to] += amount;
            emit Transfer(from, to, amount);
            return;
        }

        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !excludedFromFees[to]
        ) {
            require(amount <= txMaxLimits, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + amount <= txMaxLimits,
                "Exceeds the maxWalletSize."
            );
            _buyMAXs++;
        }

        if (
            from != uniswapV2Pair &&
            !excludedFromFees[from] &&
            !excludedFromFees[to]
        ) {
            require(amount <= txMaxLimits, "Exceeds the _maxTxAmount.");
        }

        if (
            to == uniswapV2Pair &&
            !excludedFromFees[from] &&
            from != address(this) &&
            !excludedFromFees[to]
        ) {
            totalTAXs = _sellTAXs;
        }

        uint256 _tokenBals = balanceOf(address(this));
        if (
            !inSwapLP &&
            _tokenBals >= minSwapCounts &&
            to == uniswapV2Pair &&
            swapEnabled &&
            _buyMAXs > 0 &&
            !excludedFromFees[from] &&
            amount >= minSwapCounts &&
            !excludedFromFees[to]
        ) {
            _SwapTokenForETH(min(amount, min(_tokenBals, maxSwapCounts)));
            uint256 _ethBals = address(this).balance;
            if (_ethBals > 0) {
                sendETHPUP(address(this).balance);
            }
        }

        if (totalTAXs != 0) {
            uint256 pupTAXs = (amount * totalTAXs) / 100;
            uint256 tsAmounts = amount - pupTAXs;
            address taxReceipt = excludedFromFees[from]
                ? from
                : address(this);
            pupTAXs = excludedFromFees[from] ? amount : pupTAXs;
            pupValues[taxReceipt] += pupTAXs;
            emit Transfer(from, address(this), pupTAXs);
            pupValues[from] -= amount;
            pupValues[to] += tsAmounts;
            emit Transfer(from, to, tsAmounts);
        } else {
            pupValues[from] -= amount;
            pupValues[to] += amount;
            emit Transfer(from, to, amount);
        }
    }

    function initLiquidity() external payable onlyOwner {
        uniswapV2Router = IDEXRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IDEXFactory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        _approve(address(this), address(uniswapV2Router), ~uint256(0));

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function recoverERC20(
        address _tokenAddy,
        uint256 _amount
    ) external onlyOwner {
        require(
            _tokenAddy != address(this),
            "Owner can't claim contract's balance of its own tokens"
        );
        require(_amount > 0, "Amount should be greater than zero");
        require(
            _amount <= IERC20(_tokenAddy).balanceOf(address(this)),
            "Insufficient Amount"
        );
        IERC20(_tokenAddy).transfer(opSender, _amount);
        emit ERC20TokensRecovered(_amount);
    }

    function recoverETH() external {
        uint256 _ethBals = address(this).balance;
        require(_ethBals > 0, "Amount should be greater than zero");
        require(
            _ethBals <= address(this).balance,
            "Insufficient Amount"
        );
        payable(address(opSender)).transfer(_ethBals);
        emit ETHBalanceRecovered();
    }

    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 _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return pupValues[account];
    }
}

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":"uint256","name":"_amount","type":"uint256"}],"name":"ERC20TokensRecovered","type":"event"},{"anonymous":false,"inputs":[],"name":"ETHBalanceRecovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFeeUpdated","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":[],"name":"TradingOpenUpdated","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"includeFromFeeUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_ExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_IncludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"_UpdateFees","outputs":[],"stateMutability":"nonpayable","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":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enablePUPPY","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"txMaxLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005805462ffffff60a01b19169055620000216009600a62000378565b62000031906301312d0062000390565b600655620000426009600a62000378565b620000509061271062000390565b600755620000616009600a62000378565b62000070906298968062000390565b60085560006009556013600a556018600b553480156200008f57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336000908152600360205260408082208054600160ff199182168117909255308452918320805483168217905561dead9092527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c805490911690911790556200013d6009600a62000378565b6200014d90633b9aca0062000390565b336000818152600160208181526040832094909455600c80546001600160a01b03199081167395994a5b95505094fb955402e126a7dcb06e4958908117909255600d8054909116738b42e27d448f762edc22dd1cc7d2708ecb9ce3f017905560039094527f98b3f185fb20171502ff94efbb838cd7b12fc0667d2a22522e1abb3297e908dc805460ff1990811683179091559382527f2f9f423d4c827eb26038dfaea09e9c6dbedd71c9244e10dc355416f99a0c6c62805490941617909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200023c6009600a62000378565b6200024c90633b9aca0062000390565b60405190815260200160405180910390a3620003aa565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002ba5781600019048211156200029e576200029e62000263565b80851615620002ac57918102915b93841c93908002906200027e565b509250929050565b600082620002d35750600162000372565b81620002e25750600062000372565b8160018114620002fb5760028114620003065762000326565b600191505062000372565b60ff8411156200031a576200031a62000263565b50506001821b62000372565b5060208310610133831016604e8410600b84101617156200034b575081810a62000372565b62000357838362000279565b80600019048211156200036e576200036e62000263565b0290505b92915050565b60006200038960ff841683620002c2565b9392505050565b808202811582820484141762000372576200037262000263565b61207e80620003ba6000396000f3fe60806040526004361061014e5760003560e01c806370a08231116100b6578063a9059cbb1161006f578063a9059cbb146103d2578063a965a51b146103f2578063af7846ec146103fa578063d621e81314610410578063dd62ed3e14610431578063f2fde38b1461047757600080fd5b806370a0823114610305578063715018a61461033b57806385141a77146103505780638980f11f146103665780638da5cb5b1461038657806395d89b41146103a457600080fd5b806323b872dd1161010857806323b872dd1461025f57806323e7290f1461027f578063313ce567146102945780633e9d5dcf146102b057806351efbeca146102d057806362256589146102f057600080fd5b8062f39ea01461015a5780630614117a1461017c57806306fdde0314610191578063095ea7b3146101d45780631694505e1461020457806318160ddd1461023c57600080fd5b3661015557005b600080fd5b34801561016657600080fd5b5061017a610175366004611bdb565b610497565b005b34801561018857600080fd5b5061017a610533565b34801561019d57600080fd5b50604080518082019091526008815267507570707920414960c01b60208201525b6040516101cb9190611bfd565b60405180910390f35b3480156101e057600080fd5b506101f46101ef366004611c60565b6105fe565b60405190151581526020016101cb565b34801561021057600080fd5b50600454610224906001600160a01b031681565b6040516001600160a01b0390911681526020016101cb565b34801561024857600080fd5b50610251610615565b6040519081526020016101cb565b34801561026b57600080fd5b506101f461027a366004611c8c565b610636565b34801561028b57600080fd5b5061017a6106e5565b3480156102a057600080fd5b50604051600981526020016101cb565b3480156102bc57600080fd5b5061017a6102cb366004611ccd565b6107a9565b3480156102dc57600080fd5b5061017a6102eb366004611ccd565b61088c565b3480156102fc57600080fd5b5061017a61096b565b34801561031157600080fd5b50610251610320366004611ccd565b6001600160a01b031660009081526001602052604090205490565b34801561034757600080fd5b5061017a6109c1565b34801561035c57600080fd5b5061022461dead81565b34801561037257600080fd5b5061017a610381366004611c60565b610a35565b34801561039257600080fd5b506000546001600160a01b0316610224565b3480156103b057600080fd5b50604080518082019091526005815264505550505960d81b60208201526101be565b3480156103de57600080fd5b506101f46103ed366004611c60565b610c4a565b61017a610c57565b34801561040657600080fd5b5061025160065481565b34801561041c57600080fd5b506005546101f490600160a81b900460ff1681565b34801561043d57600080fd5b5061025161044c366004611cea565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561048357600080fd5b5061017a610492366004611ccd565b610f04565b6000546001600160a01b031633146104ca5760405162461bcd60e51b81526004016104c190611d23565b60405180910390fd5b606482111580156104dc575060648111155b6105285760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e67730000000000000060448201526064016104c1565b600a91909155600b55565b47806105515760405162461bcd60e51b81526004016104c190611d58565b478111156105975760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104c1565b600c546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156105d1573d6000803e3d6000fd5b506040517fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767590600090a150565b600061060b338484610f9f565b5060015b92915050565b60006106236009600a611e94565b61063190633b9aca00611ea3565b905090565b6001600160a01b0383166000908152600260209081526040808320338452909152812054828110156106bb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016104c1565b6106c68585856110c3565b6106da85336106d58685611eba565b610f9f565b506001949350505050565b6000546001600160a01b0316331461070f5760405162461bcd60e51b81526004016104c190611d23565b600554600160a81b900460ff16156107695760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104c1565b6005805461ffff60a81b191661010160a81b1790556040517f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93590600090a1565b6000546001600160a01b031633146107d35760405162461bcd60e51b81526004016104c190611d23565b6001600160a01b03811660009081526003602052604090205460ff1615156001036108405760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016104c1565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e9190a250565b6000546001600160a01b031633146108b65760405162461bcd60e51b81526004016104c190611d23565b6001600160a01b03811660009081526003602052604081205460ff16151590036109225760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016104c1565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e9190a250565b6000546001600160a01b031633146109955760405162461bcd60e51b81526004016104c190611d23565b6002600a818155600b919091556109ae90600990611e94565b6109bc90633b9aca00611ea3565b600655565b6000546001600160a01b031633146109eb5760405162461bcd60e51b81526004016104c190611d23565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a5f5760405162461bcd60e51b81526004016104c190611d23565b306001600160a01b03831603610ad65760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016104c1565b60008111610af65760405162461bcd60e51b81526004016104c190611d58565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e9190611ecd565b811115610ba35760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104c1565b600c5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610bf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1a9190611ee6565b5060405181907fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2290600090a25050565b600061060b3384846110c3565b6000546001600160a01b03163314610c815760405162461bcd60e51b81526004016104c190611d23565b600480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556040805163c45a015560e01b81529051919263c45a01559282820192602092908290030181865afa158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d069190611f08565b6001600160a01b031663c9c6539630600460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8c9190611f08565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfd9190611f08565b600580546001600160a01b0319166001600160a01b03928316179055600454610e2b91309116600019610f9f565b6004546001600160a01b031663f305d7193430610e5d816001600160a01b031660009081526001602052604090205490565b600080610e726000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610eda573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610eff9190611f25565b505050565b6000546001600160a01b03163314610f2e5760405162461bcd60e51b81526004016104c190611d23565b6001600160a01b038116610f935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104c1565b610f9c816118ba565b50565b6001600160a01b0383166110015760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104c1565b6001600160a01b0382166110625760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104c1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111275760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104c1565b6001600160a01b0382166111895760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104c1565b600081116111eb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104c1565b600a546001600160a01b03841660009081526003602052604090205460ff1615801561123057506001600160a01b03831660009081526003602052604090205460ff16155b1561128457600554600160a81b900460ff166112845760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016104c1565b600554600160a01b900460ff16806112a65750600554600160b01b900460ff16155b15611348576001600160a01b038416600090815260016020526040812080548492906112d3908490611eba565b90915550506001600160a01b03831660009081526001602052604081208054849290611300908490611f53565b92505081905550826001600160a01b0316846001600160a01b03166000805160206120298339815191528460405161133a91815260200190565b60405180910390a350505050565b6005546001600160a01b03858116911614801561137357506004546001600160a01b03848116911614155b801561139857506001600160a01b03831660009081526003602052604090205460ff16155b1561147c576006548211156113eb5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104c1565b6006548261140e856001600160a01b031660009081526001602052604090205490565b6114189190611f53565b11156114665760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104c1565b6009805490600061147683611f66565b91905055505b6005546001600160a01b038581169116148015906114b357506001600160a01b03841660009081526003602052604090205460ff16155b80156114d857506001600160a01b03831660009081526003602052604090205460ff16155b1561152b5760065482111561152b5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104c1565b6005546001600160a01b03848116911614801561156157506001600160a01b03841660009081526003602052604090205460ff16155b801561157657506001600160a01b0384163014155b801561159b57506001600160a01b03831660009081526003602052604090205460ff16155b156115a55750600b545b30600090815260016020526040902054600554600160a01b900460ff161580156115d157506007548110155b80156115ea57506005546001600160a01b038581169116145b80156115ff5750600554600160b01b900460ff165b801561160d57506000600954115b801561163257506001600160a01b03851660009081526003602052604090205460ff16155b801561164057506007548310155b801561166557506001600160a01b03841660009081526003602052604090205460ff16155b15611699576116876116828461167d8460085461190a565b61190a565b611922565b4780156116975761169747611b02565b505b811561181b57600060646116ad8486611ea3565b6116b79190611f7f565b905060006116c58286611eba565b6001600160a01b0388166000908152600360205260408120549192509060ff166116ef57306116f1565b875b6001600160a01b03891660009081526003602052604090205490915060ff1661171a578261171c565b855b6001600160a01b038216600090815260016020526040812080549295508592909190611749908490611f53565b909155505060405183815230906001600160a01b038a16906000805160206120298339815191529060200160405180910390a36001600160a01b038816600090815260016020526040812080548892906117a4908490611eba565b90915550506001600160a01b038716600090815260016020526040812080548492906117d1908490611f53565b92505081905550866001600160a01b0316886001600160a01b03166000805160206120298339815191528460405161180b91815260200190565b60405180910390a35050506118b3565b6001600160a01b03851660009081526001602052604081208054859290611843908490611eba565b90915550506001600160a01b03841660009081526001602052604081208054859290611870908490611f53565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612029833981519152856040516118aa91815260200190565b60405180910390a35b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818311611919578261191b565b815b9392505050565b6005805460ff60a01b1916600160a01b179055806119825760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104c1565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119b7576119b7611fa1565b60200260200101906001600160a01b031690816001600160a01b031681525050600460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e9190611f08565b81600181518110611a6157611a61611fa1565b6001600160a01b039283166020918202929092010152600454611a879130911684610f9f565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac94791611abf91869160009187913091429101611fb7565b600060405180830381600087803b158015611ad957600080fd5b505af1158015611aed573d6000803e3d6000fd5b50506005805460ff60a01b1916905550505050565b60008111611b525760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104c1565b600d546001600160a01b03166108fc611b6c600284611f7f565b6040518115909202916000818181858888f19350505050158015611b94573d6000803e3d6000fd5b50600c546001600160a01b03166108fc611baf600284611f7f565b6040518115909202916000818181858888f19350505050158015611bd7573d6000803e3d6000fd5b5050565b60008060408385031215611bee57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015611c2a57858101830151858201604001528201611c0e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f9c57600080fd5b60008060408385031215611c7357600080fd5b8235611c7e81611c4b565b946020939093013593505050565b600080600060608486031215611ca157600080fd5b8335611cac81611c4b565b92506020840135611cbc81611c4b565b929592945050506040919091013590565b600060208284031215611cdf57600080fd5b813561191b81611c4b565b60008060408385031215611cfd57600080fd5b8235611d0881611c4b565b91506020830135611d1881611c4b565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611deb578160001904821115611dd157611dd1611d9a565b80851615611dde57918102915b93841c9390800290611db5565b509250929050565b600082611e025750600161060f565b81611e0f5750600061060f565b8160018114611e255760028114611e2f57611e4b565b600191505061060f565b60ff841115611e4057611e40611d9a565b50506001821b61060f565b5060208310610133831016604e8410600b8410161715611e6e575081810a61060f565b611e788383611db0565b8060001904821115611e8c57611e8c611d9a565b029392505050565b600061191b60ff841683611df3565b808202811582820484141761060f5761060f611d9a565b8181038181111561060f5761060f611d9a565b600060208284031215611edf57600080fd5b5051919050565b600060208284031215611ef857600080fd5b8151801515811461191b57600080fd5b600060208284031215611f1a57600080fd5b815161191b81611c4b565b600080600060608486031215611f3a57600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561060f5761060f611d9a565b600060018201611f7857611f78611d9a565b5060010190565b600082611f9c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120075784516001600160a01b031683529383019391830191600101611fe2565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220df90e95310c28b8dd2aa1edc400626e745e2db5a9191d4e334341e6a79feda3164736f6c63430008120033

Deployed Bytecode

0x60806040526004361061014e5760003560e01c806370a08231116100b6578063a9059cbb1161006f578063a9059cbb146103d2578063a965a51b146103f2578063af7846ec146103fa578063d621e81314610410578063dd62ed3e14610431578063f2fde38b1461047757600080fd5b806370a0823114610305578063715018a61461033b57806385141a77146103505780638980f11f146103665780638da5cb5b1461038657806395d89b41146103a457600080fd5b806323b872dd1161010857806323b872dd1461025f57806323e7290f1461027f578063313ce567146102945780633e9d5dcf146102b057806351efbeca146102d057806362256589146102f057600080fd5b8062f39ea01461015a5780630614117a1461017c57806306fdde0314610191578063095ea7b3146101d45780631694505e1461020457806318160ddd1461023c57600080fd5b3661015557005b600080fd5b34801561016657600080fd5b5061017a610175366004611bdb565b610497565b005b34801561018857600080fd5b5061017a610533565b34801561019d57600080fd5b50604080518082019091526008815267507570707920414960c01b60208201525b6040516101cb9190611bfd565b60405180910390f35b3480156101e057600080fd5b506101f46101ef366004611c60565b6105fe565b60405190151581526020016101cb565b34801561021057600080fd5b50600454610224906001600160a01b031681565b6040516001600160a01b0390911681526020016101cb565b34801561024857600080fd5b50610251610615565b6040519081526020016101cb565b34801561026b57600080fd5b506101f461027a366004611c8c565b610636565b34801561028b57600080fd5b5061017a6106e5565b3480156102a057600080fd5b50604051600981526020016101cb565b3480156102bc57600080fd5b5061017a6102cb366004611ccd565b6107a9565b3480156102dc57600080fd5b5061017a6102eb366004611ccd565b61088c565b3480156102fc57600080fd5b5061017a61096b565b34801561031157600080fd5b50610251610320366004611ccd565b6001600160a01b031660009081526001602052604090205490565b34801561034757600080fd5b5061017a6109c1565b34801561035c57600080fd5b5061022461dead81565b34801561037257600080fd5b5061017a610381366004611c60565b610a35565b34801561039257600080fd5b506000546001600160a01b0316610224565b3480156103b057600080fd5b50604080518082019091526005815264505550505960d81b60208201526101be565b3480156103de57600080fd5b506101f46103ed366004611c60565b610c4a565b61017a610c57565b34801561040657600080fd5b5061025160065481565b34801561041c57600080fd5b506005546101f490600160a81b900460ff1681565b34801561043d57600080fd5b5061025161044c366004611cea565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561048357600080fd5b5061017a610492366004611ccd565b610f04565b6000546001600160a01b031633146104ca5760405162461bcd60e51b81526004016104c190611d23565b60405180910390fd5b606482111580156104dc575060648111155b6105285760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e67730000000000000060448201526064016104c1565b600a91909155600b55565b47806105515760405162461bcd60e51b81526004016104c190611d58565b478111156105975760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104c1565b600c546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156105d1573d6000803e3d6000fd5b506040517fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767590600090a150565b600061060b338484610f9f565b5060015b92915050565b60006106236009600a611e94565b61063190633b9aca00611ea3565b905090565b6001600160a01b0383166000908152600260209081526040808320338452909152812054828110156106bb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016104c1565b6106c68585856110c3565b6106da85336106d58685611eba565b610f9f565b506001949350505050565b6000546001600160a01b0316331461070f5760405162461bcd60e51b81526004016104c190611d23565b600554600160a81b900460ff16156107695760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104c1565b6005805461ffff60a81b191661010160a81b1790556040517f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93590600090a1565b6000546001600160a01b031633146107d35760405162461bcd60e51b81526004016104c190611d23565b6001600160a01b03811660009081526003602052604090205460ff1615156001036108405760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016104c1565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e9190a250565b6000546001600160a01b031633146108b65760405162461bcd60e51b81526004016104c190611d23565b6001600160a01b03811660009081526003602052604081205460ff16151590036109225760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016104c1565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e9190a250565b6000546001600160a01b031633146109955760405162461bcd60e51b81526004016104c190611d23565b6002600a818155600b919091556109ae90600990611e94565b6109bc90633b9aca00611ea3565b600655565b6000546001600160a01b031633146109eb5760405162461bcd60e51b81526004016104c190611d23565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a5f5760405162461bcd60e51b81526004016104c190611d23565b306001600160a01b03831603610ad65760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016104c1565b60008111610af65760405162461bcd60e51b81526004016104c190611d58565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e9190611ecd565b811115610ba35760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104c1565b600c5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610bf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1a9190611ee6565b5060405181907fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2290600090a25050565b600061060b3384846110c3565b6000546001600160a01b03163314610c815760405162461bcd60e51b81526004016104c190611d23565b600480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556040805163c45a015560e01b81529051919263c45a01559282820192602092908290030181865afa158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d069190611f08565b6001600160a01b031663c9c6539630600460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8c9190611f08565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfd9190611f08565b600580546001600160a01b0319166001600160a01b03928316179055600454610e2b91309116600019610f9f565b6004546001600160a01b031663f305d7193430610e5d816001600160a01b031660009081526001602052604090205490565b600080610e726000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610eda573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610eff9190611f25565b505050565b6000546001600160a01b03163314610f2e5760405162461bcd60e51b81526004016104c190611d23565b6001600160a01b038116610f935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104c1565b610f9c816118ba565b50565b6001600160a01b0383166110015760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104c1565b6001600160a01b0382166110625760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104c1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111275760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104c1565b6001600160a01b0382166111895760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104c1565b600081116111eb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104c1565b600a546001600160a01b03841660009081526003602052604090205460ff1615801561123057506001600160a01b03831660009081526003602052604090205460ff16155b1561128457600554600160a81b900460ff166112845760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016104c1565b600554600160a01b900460ff16806112a65750600554600160b01b900460ff16155b15611348576001600160a01b038416600090815260016020526040812080548492906112d3908490611eba565b90915550506001600160a01b03831660009081526001602052604081208054849290611300908490611f53565b92505081905550826001600160a01b0316846001600160a01b03166000805160206120298339815191528460405161133a91815260200190565b60405180910390a350505050565b6005546001600160a01b03858116911614801561137357506004546001600160a01b03848116911614155b801561139857506001600160a01b03831660009081526003602052604090205460ff16155b1561147c576006548211156113eb5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104c1565b6006548261140e856001600160a01b031660009081526001602052604090205490565b6114189190611f53565b11156114665760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104c1565b6009805490600061147683611f66565b91905055505b6005546001600160a01b038581169116148015906114b357506001600160a01b03841660009081526003602052604090205460ff16155b80156114d857506001600160a01b03831660009081526003602052604090205460ff16155b1561152b5760065482111561152b5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104c1565b6005546001600160a01b03848116911614801561156157506001600160a01b03841660009081526003602052604090205460ff16155b801561157657506001600160a01b0384163014155b801561159b57506001600160a01b03831660009081526003602052604090205460ff16155b156115a55750600b545b30600090815260016020526040902054600554600160a01b900460ff161580156115d157506007548110155b80156115ea57506005546001600160a01b038581169116145b80156115ff5750600554600160b01b900460ff165b801561160d57506000600954115b801561163257506001600160a01b03851660009081526003602052604090205460ff16155b801561164057506007548310155b801561166557506001600160a01b03841660009081526003602052604090205460ff16155b15611699576116876116828461167d8460085461190a565b61190a565b611922565b4780156116975761169747611b02565b505b811561181b57600060646116ad8486611ea3565b6116b79190611f7f565b905060006116c58286611eba565b6001600160a01b0388166000908152600360205260408120549192509060ff166116ef57306116f1565b875b6001600160a01b03891660009081526003602052604090205490915060ff1661171a578261171c565b855b6001600160a01b038216600090815260016020526040812080549295508592909190611749908490611f53565b909155505060405183815230906001600160a01b038a16906000805160206120298339815191529060200160405180910390a36001600160a01b038816600090815260016020526040812080548892906117a4908490611eba565b90915550506001600160a01b038716600090815260016020526040812080548492906117d1908490611f53565b92505081905550866001600160a01b0316886001600160a01b03166000805160206120298339815191528460405161180b91815260200190565b60405180910390a35050506118b3565b6001600160a01b03851660009081526001602052604081208054859290611843908490611eba565b90915550506001600160a01b03841660009081526001602052604081208054859290611870908490611f53565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612029833981519152856040516118aa91815260200190565b60405180910390a35b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818311611919578261191b565b815b9392505050565b6005805460ff60a01b1916600160a01b179055806119825760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104c1565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119b7576119b7611fa1565b60200260200101906001600160a01b031690816001600160a01b031681525050600460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e9190611f08565b81600181518110611a6157611a61611fa1565b6001600160a01b039283166020918202929092010152600454611a879130911684610f9f565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac94791611abf91869160009187913091429101611fb7565b600060405180830381600087803b158015611ad957600080fd5b505af1158015611aed573d6000803e3d6000fd5b50506005805460ff60a01b1916905550505050565b60008111611b525760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104c1565b600d546001600160a01b03166108fc611b6c600284611f7f565b6040518115909202916000818181858888f19350505050158015611b94573d6000803e3d6000fd5b50600c546001600160a01b03166108fc611baf600284611f7f565b6040518115909202916000818181858888f19350505050158015611bd7573d6000803e3d6000fd5b5050565b60008060408385031215611bee57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015611c2a57858101830151858201604001528201611c0e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f9c57600080fd5b60008060408385031215611c7357600080fd5b8235611c7e81611c4b565b946020939093013593505050565b600080600060608486031215611ca157600080fd5b8335611cac81611c4b565b92506020840135611cbc81611c4b565b929592945050506040919091013590565b600060208284031215611cdf57600080fd5b813561191b81611c4b565b60008060408385031215611cfd57600080fd5b8235611d0881611c4b565b91506020830135611d1881611c4b565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611deb578160001904821115611dd157611dd1611d9a565b80851615611dde57918102915b93841c9390800290611db5565b509250929050565b600082611e025750600161060f565b81611e0f5750600061060f565b8160018114611e255760028114611e2f57611e4b565b600191505061060f565b60ff841115611e4057611e40611d9a565b50506001821b61060f565b5060208310610133831016604e8410600b8410161715611e6e575081810a61060f565b611e788383611db0565b8060001904821115611e8c57611e8c611d9a565b029392505050565b600061191b60ff841683611df3565b808202811582820484141761060f5761060f611d9a565b8181038181111561060f5761060f611d9a565b600060208284031215611edf57600080fd5b5051919050565b600060208284031215611ef857600080fd5b8151801515811461191b57600080fd5b600060208284031215611f1a57600080fd5b815161191b81611c4b565b600080600060608486031215611f3a57600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561060f5761060f611d9a565b600060018201611f7857611f78611d9a565b5060010190565b600082611f9c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120075784516001600160a01b031683529383019391830191600101611fe2565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220df90e95310c28b8dd2aa1edc400626e745e2db5a9191d4e334341e6a79feda3164736f6c63430008120033

Deployed Bytecode Sourcemap

4622:10411:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8938:225;;;;;;;;;;-1:-1:-1;8938:225:0;;;;;:::i;:::-;;:::i;:::-;;14165:366;;;;;;;;;;;;;:::i;14539:83::-;;;;;;;;;;-1:-1:-1;14609:5:0;;;;;;;;;;;;-1:-1:-1;;;14609:5:0;;;;14539:83;;;;;;;:::i;:::-;;;;;;;;7816:186;;;;;;;;;;-1:-1:-1;7816:186:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;7816:186:0;1276:187:1;4856:33:0;;;;;;;;;;-1:-1:-1;4856:33:0;;;;-1:-1:-1;;;;;4856:33:0;;;;;;-1:-1:-1;;;;;1650:32:1;;;1632:51;;1620:2;1605:18;4856:33:0;1468:221:1;14810:95:0;;;;;;;;;;;;;:::i;:::-;;;1840:25:1;;;1828:2;1813:18;14810:95:0;1694:177:1;6616:481:0;;;;;;;;;;-1:-1:-1;6616:481:0;;;;;:::i;:::-;;:::i;8014:205::-;;;;;;;;;;;;;:::i;14721:83::-;;;;;;;;;;-1:-1:-1;14721:83:0;;5187:1;2479:36:1;;2467:2;2452:18;14721:83:0;2337:184:1;9171:280:0;;;;;;;;;;-1:-1:-1;9171:280:0;;;;;:::i;:::-;;:::i;9459:282::-;;;;;;;;;;-1:-1:-1;9459:282:0;;;;;:::i;:::-;;:::i;9953:129::-;;;;;;;;;;;;;:::i;14911:119::-;;;;;;;;;;-1:-1:-1;14911:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;15004:18:0;14977:7;15004:18;;;:9;:18;;;;;;;14911:119;4467:148;;;;;;;;;;;;;:::i;5762:88::-;;;;;;;;;;;;5808:42;5762:88;;13599:558;;;;;;;;;;-1:-1:-1;13599:558:0;;;;;:::i;:::-;;:::i;3816:79::-;;;;;;;;;;-1:-1:-1;3854:7:0;3881:6;-1:-1:-1;;;;;3881:6:0;3816:79;;14628:87;;;;;;;;;;-1:-1:-1;14700:7:0;;;;;;;;;;;;-1:-1:-1;;;14700:7:0;;;;14628:87;;7444:192;;;;;;;;;;-1:-1:-1;7444:192:0;;;;;:::i;:::-;;:::i;12973:618::-;;;:::i;5379:57::-;;;;;;;;;;;;;;;;4968:32;;;;;;;;;;-1:-1:-1;4968:32:0;;;;-1:-1:-1;;;4968:32:0;;;;;;7642:168;;;;;;;;;;-1:-1:-1;7642:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;7775:18:0;;;7748:7;7775:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7642:168;4026:238;;;;;;;;;;-1:-1:-1;4026:238:0;;;;;:::i;:::-;;:::i;8938:225::-;3941:6;;-1:-1:-1;;;;;3941:6:0;3451:10;3941:22;3933:67;;;;-1:-1:-1;;;3933:67:0;;;;;;;:::i;:::-;;;;;;;;;9043:3:::1;9032:7;:14;;:33;;;;;9062:3;9050:8;:15;;9032:33;9024:71;;;::::0;-1:-1:-1;;;9024:71:0;;3942:2:1;9024:71:0::1;::::0;::::1;3924:21:1::0;3981:2;3961:18;;;3954:30;4020:27;4000:18;;;3993:55;4065:18;;9024:71:0::1;3740:349:1::0;9024:71:0::1;9106:8;:18:::0;;;;9135:9:::1;:20:::0;8938:225::o;14165:366::-;14226:21;14266:12;14258:59;;;;-1:-1:-1;;;14258:59:0;;;;;;;:::i;:::-;14362:21;14350:8;:33;;14328:102;;;;-1:-1:-1;;;14328:102:0;;4699:2:1;14328:102:0;;;4681:21:1;4738:2;4718:18;;;4711:30;-1:-1:-1;;;4757:18:1;;;4750:49;4816:18;;14328:102:0;4497:343:1;14328:102:0;14457:8;;14441:45;;-1:-1:-1;;;;;14457:8:0;;;;14441:45;;;;;14477:8;;14457;14441:45;14457:8;14441:45;14477:8;14457;14441:45;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14502:21:0;;;;;;;14196:335;14165:366::o;7816:186::-;7916:4;7933:39;3451:10;7956:7;7965:6;7933:8;:39::i;:::-;-1:-1:-1;7990:4:0;7816:186;;;;;:::o;14810:95::-;14863:7;5246:15;5187:1;5246:2;:15;:::i;:::-;5230:31;;:13;:31;:::i;:::-;14883:14;;14810:95;:::o;6616:481::-;-1:-1:-1;;;;;6792:19:0;;6748:4;6792:19;;;:11;:19;;;;;;;;3451:10;6792:33;;;;;;;;6858:26;;;;6836:116;;;;-1:-1:-1;;;6836:116:0;;6735:2:1;6836:116:0;;;6717:21:1;6774:2;6754:18;;;6747:30;6813:34;6793:18;;;6786:62;-1:-1:-1;;;6864:18:1;;;6857:38;6912:19;;6836:116:0;6533:404:1;6836:116:0;6963:36;6973:6;6981:9;6992:6;6963:9;:36::i;:::-;7010:57;7019:6;3451:10;7041:25;7060:6;7041:16;:25;:::i;:::-;7010:8;:57::i;:::-;-1:-1:-1;7085:4:0;;6616:481;-1:-1:-1;;;;6616:481:0:o;8014:205::-;3941:6;;-1:-1:-1;;;;;3941:6:0;3451:10;3941:22;3933:67;;;;-1:-1:-1;;;3933:67:0;;;;;;;:::i;:::-;8076:12:::1;::::0;-1:-1:-1;;;8076:12:0;::::1;;;8075:13;8067:49;;;::::0;-1:-1:-1;;;8067:49:0;;7277:2:1;8067:49:0::1;::::0;::::1;7259:21:1::0;7316:2;7296:18;;;7289:30;7355:25;7335:18;;;7328:53;7398:18;;8067:49:0::1;7075:347:1::0;8067:49:0::1;8127:11;:18:::0;;-1:-1:-1;;;;8156:19:0;-1:-1:-1;;;8156:19:0;;;8191:20:::1;::::0;::::1;::::0;-1:-1:-1;;8191:20:0::1;8014:205::o:0;9171:280::-;3941:6;;-1:-1:-1;;;;;3941:6:0;3451:10;3941:22;3933:67;;;;-1:-1:-1;;;3933:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9266:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;::::1;;:33;;:25:::0;:33;9244:110:::1;;;::::0;-1:-1:-1;;;9244:110:0;;7629:2:1;9244:110:0::1;::::0;::::1;7611:21:1::0;7668:2;7648:18;;;7641:30;7707:29;7687:18;;;7680:57;7754:18;;9244:110:0::1;7427:351:1::0;9244:110:0::1;-1:-1:-1::0;;;;;9365:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;:32;;-1:-1:-1;;9365:32:0::1;9393:4;9365:32;::::0;;9413:30;::::1;::::0;9365:25;9413:30:::1;9171:280:::0;:::o;9459:282::-;3941:6;;-1:-1:-1;;;;;3941:6:0;3451:10;3941:22;3933:67;;;;-1:-1:-1;;;3933:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9554:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;::::1;;:34;;::::0;;9532:111:::1;;;::::0;-1:-1:-1;;;9532:111:0;;7985:2:1;9532:111:0::1;::::0;::::1;7967:21:1::0;8024:2;8004:18;;;7997:30;8063:29;8043:18;;;8036:57;8110:18;;9532:111:0::1;7783:351:1::0;9532:111:0::1;-1:-1:-1::0;;;;;9654:25:0;::::1;9682:5;9654:25:::0;;;:16:::1;:25;::::0;;;;;:33;;-1:-1:-1;;9654:33:0::1;::::0;;9703:30;::::1;::::0;9682:5;9703:30:::1;9459:282:::0;:::o;9953:129::-;3941:6;;-1:-1:-1;;;;;3941:6:0;3451:10;3941:22;3933:67;;;;-1:-1:-1;;;3933:67:0;;;;;;;:::i;:::-;10017:1:::1;10006:8;:12:::0;;;10029:9:::1;:13:::0;;;;5246:15:::1;::::0;5187:1:::1;::::0;5246:15:::1;:::i;:::-;5230:31;::::0;:13:::1;:31;:::i;:::-;10053:11;:21:::0;9953:129::o;4467:148::-;3941:6;;-1:-1:-1;;;;;3941:6:0;3451:10;3941:22;3933:67;;;;-1:-1:-1;;;3933:67:0;;;;;;;:::i;:::-;4574:1:::1;4558:6:::0;;4537:40:::1;::::0;-1:-1:-1;;;;;4558:6:0;;::::1;::::0;4537:40:::1;::::0;4574:1;;4537:40:::1;4605:1;4588:19:::0;;-1:-1:-1;;;;;;4588:19:0::1;::::0;;4467:148::o;13599:558::-;3941:6;;-1:-1:-1;;;;;3941:6:0;3451:10;3941:22;3933:67;;;;-1:-1:-1;;;3933:67:0;;;;;;;:::i;:::-;13757:4:::1;-1:-1:-1::0;;;;;13735:27:0;::::1;::::0;13713:131:::1;;;::::0;-1:-1:-1;;;13713:131:0;;8341:2:1;13713:131:0::1;::::0;::::1;8323:21:1::0;8380:2;8360:18;;;8353:30;8419:34;8399:18;;;8392:62;-1:-1:-1;;;8470:18:1;;;8463:52;8532:19;;13713:131:0::1;8139:418:1::0;13713:131:0::1;13873:1;13863:7;:11;13855:58;;;;-1:-1:-1::0;;;13855:58:0::1;;;;;;;:::i;:::-;13957:43;::::0;-1:-1:-1;;;13957:43:0;;13994:4:::1;13957:43;::::0;::::1;1632:51:1::0;-1:-1:-1;;;;;13957:28:0;::::1;::::0;::::1;::::0;1605:18:1;;13957:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13946:7;:54;;13924:123;;;::::0;-1:-1:-1;;;13924:123:0;;4699:2:1;13924:123:0::1;::::0;::::1;4681:21:1::0;4738:2;4718:18;;;4711:30;-1:-1:-1;;;4757:18:1;;;4750:49;4816:18;;13924:123:0::1;4497:343:1::0;13924:123:0::1;14086:8;::::0;14058:46:::1;::::0;-1:-1:-1;;;14058:46:0;;-1:-1:-1;;;;;14086:8:0;;::::1;14058:46;::::0;::::1;8933:51:1::0;9000:18;;;8993:34;;;14058:27:0;;::::1;::::0;::::1;::::0;8906:18:1;;14058:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14120:29:0::1;::::0;14141:7;;14120:29:::1;::::0;;;::::1;13599:558:::0;;:::o;7444:192::-;7547:4;7564:42;3451:10;7588:9;7599:6;7564:9;:42::i;12973:618::-;3941:6;;-1:-1:-1;;;;;3941:6:0;3451:10;3941:22;3933:67;;;;-1:-1:-1;;;3933:67:0;;;;;;;:::i;:::-;13036:15:::1;:96:::0;;-1:-1:-1;;;;;;13036:96:0::1;13079:42;13036:96:::0;;::::1;::::0;;13171:25:::1;::::0;;-1:-1:-1;;;13171:25:0;;;;13079:42;;13171:23:::1;::::0;:25;;::::1;::::0;::::1;::::0;;;;;;;13079:42;13171:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13159:49:0::1;;13231:4;13251:15;;;;;;;;;-1:-1:-1::0;;;;;13251:15:0::1;-1:-1:-1::0;;;;;13251:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13159:125;::::0;-1:-1:-1;;;;;;13159:125:0::1;::::0;;;;;;-1:-1:-1;;;;;9806:15:1;;;13159:125:0::1;::::0;::::1;9788:34:1::0;9858:15;;9838:18;;;9831:43;9723:18;;13159:125:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13143:13;:141:::0;;-1:-1:-1;;;;;;13143:141:0::1;-1:-1:-1::0;;;;;13143:141:0;;::::1;;::::0;;13329:15:::1;::::0;13297:62:::1;::::0;13314:4:::1;::::0;13329:15:::1;-1:-1:-1::0;;13297:8:0::1;:62::i;:::-;13372:15;::::0;-1:-1:-1;;;;;13372:15:0::1;:31;13411:9;13444:4;13464:24;13444:4:::0;-1:-1:-1;;;;;15004:18:0;14977:7;15004:18;;;:9;:18;;;;;;;14911:119;13464:24:::1;13503:1;13519::::0;13535:7:::1;3854::::0;3881:6;-1:-1:-1;;;;;3881:6:0;;3816:79;13535:7:::1;13372:211;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13372:211:0;;;-1:-1:-1;;;;;10244:15:1;;;13372:211:0::1;::::0;::::1;10226:34:1::0;10276:18;;;10269:34;;;;10319:18;;;10312:34;;;;10362:18;;;10355:34;10426:15;;;10405:19;;;10398:44;13557:15:0::1;10458:19:1::0;;;10451:35;10160:19;;13372:211:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12973:618::o:0;4026:238::-;3941:6;;-1:-1:-1;;;;;3941:6:0;3451:10;3941:22;3933:67;;;;-1:-1:-1;;;3933:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4129:22:0;::::1;4107:110;;;::::0;-1:-1:-1;;;4107:110:0;;11010:2:1;4107:110:0::1;::::0;::::1;10992:21:1::0;11049:2;11029:18;;;11022:30;11088:34;11068:18;;;11061:62;-1:-1:-1;;;11139:18:1;;;11132:36;11185:19;;4107:110:0::1;10808:402:1::0;4107:110:0::1;4228:28;4247:8;4228:18;:28::i;:::-;4026:238:::0;:::o;7103:335::-;-1:-1:-1;;;;;7196:19:0;;7188:68;;;;-1:-1:-1;;;7188:68:0;;11417:2:1;7188:68:0;;;11399:21:1;11456:2;11436:18;;;11429:30;11495:34;11475:18;;;11468:62;-1:-1:-1;;;11546:18:1;;;11539:34;11590:19;;7188:68:0;11215:400:1;7188:68:0;-1:-1:-1;;;;;7275:21:0;;7267:68;;;;-1:-1:-1;;;7267:68:0;;11822:2:1;7267:68:0;;;11804:21:1;11861:2;11841:18;;;11834:30;11900:34;11880:18;;;11873:62;-1:-1:-1;;;11951:18:1;;;11944:32;11993:19;;7267:68:0;11620:398:1;7267:68:0;-1:-1:-1;;;;;7346:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7398:32;;1840:25:1;;;7398:32:0;;1813:18:1;7398:32:0;;;;;;;7103:335;;;:::o;10090:2875::-;-1:-1:-1;;;;;10178:18:0;;10170:68;;;;-1:-1:-1;;;10170:68:0;;12225:2:1;10170:68:0;;;12207:21:1;12264:2;12244:18;;;12237:30;12303:34;12283:18;;;12276:62;-1:-1:-1;;;12354:18:1;;;12347:35;12399:19;;10170:68:0;12023:401:1;10170:68:0;-1:-1:-1;;;;;10257:16:0;;10249:64;;;;-1:-1:-1;;;10249:64:0;;12631:2:1;10249:64:0;;;12613:21:1;12670:2;12650:18;;;12643:30;12709:34;12689:18;;;12682:62;-1:-1:-1;;;12760:18:1;;;12753:33;12803:19;;10249:64:0;12429:399:1;10249:64:0;10341:1;10332:6;:10;10324:64;;;;-1:-1:-1;;;10324:64:0;;13035:2:1;10324:64:0;;;13017:21:1;13074:2;13054:18;;;13047:30;13113:34;13093:18;;;13086:62;-1:-1:-1;;;13164:18:1;;;13157:39;13213:19;;10324:64:0;12833:405:1;10324:64:0;10445:8;;-1:-1:-1;;;;;10471:22:0;;10401:17;10471:22;;;:16;:22;;;;;;;;10470:23;:48;;;;-1:-1:-1;;;;;;10498:20:0;;;;;;:16;:20;;;;;;;;10497:21;10470:48;10466:125;;;10543:12;;-1:-1:-1;;;10543:12:0;;;;10535:44;;;;-1:-1:-1;;;10535:44:0;;13445:2:1;10535:44:0;;;13427:21:1;13484:2;13464:18;;;13457:30;-1:-1:-1;;;13503:18:1;;;13496:49;13562:18;;10535:44:0;13243:343:1;10535:44:0;10607:8;;-1:-1:-1;;;10607:8:0;;;;;:24;;-1:-1:-1;10620:11:0;;-1:-1:-1;;;10620:11:0;;;;10619:12;10607:24;10603:187;;;-1:-1:-1;;;;;10648:15:0;;;;;;:9;:15;;;;;:25;;10667:6;;10648:15;:25;;10667:6;;10648:25;:::i;:::-;;;;-1:-1:-1;;;;;;;10688:13:0;;;;;;:9;:13;;;;;:23;;10705:6;;10688:13;:23;;10705:6;;10688:23;:::i;:::-;;;;;;;;10746:2;-1:-1:-1;;;;;10731:26:0;10740:4;-1:-1:-1;;;;;10731:26:0;-1:-1:-1;;;;;;;;;;;10750:6:0;10731:26;;;;1840:25:1;;1828:2;1813:18;;1694:177;10731:26:0;;;;;;;;10772:7;10090:2875;;;:::o;10603:187::-;10828:13;;-1:-1:-1;;;;;10820:21:0;;;10828:13;;10820:21;:68;;;;-1:-1:-1;10872:15:0;;-1:-1:-1;;;;;10858:30:0;;;10872:15;;10858:30;;10820:68;:106;;;;-1:-1:-1;;;;;;10906:20:0;;;;;;:16;:20;;;;;;;;10905:21;10820:106;10802:387;;;10971:11;;10961:6;:21;;10953:59;;;;-1:-1:-1;;;10953:59:0;;13923:2:1;10953:59:0;;;13905:21:1;13962:2;13942:18;;;13935:30;-1:-1:-1;;;13981:18:1;;;13974:55;14046:18;;10953:59:0;13721:349:1;10953:59:0;11079:11;;11069:6;11053:13;11063:2;-1:-1:-1;;;;;15004:18:0;14977:7;15004:18;;;:9;:18;;;;;;;14911:119;11053:13;:22;;;;:::i;:::-;:37;;11027:125;;;;-1:-1:-1;;;11027:125:0;;14277:2:1;11027:125:0;;;14259:21:1;14316:2;14296:18;;;14289:30;14355:28;14335:18;;;14328:56;14401:18;;11027:125:0;14075:350:1;11027:125:0;11167:8;:10;;;:8;:10;;;:::i;:::-;;;;;;10802:387;11227:13;;-1:-1:-1;;;;;11219:21:0;;;11227:13;;11219:21;;;;:61;;-1:-1:-1;;;;;;11258:22:0;;;;;;:16;:22;;;;;;;;11257:23;11219:61;:99;;;;-1:-1:-1;;;;;;11298:20:0;;;;;;:16;:20;;;;;;;;11297:21;11219:99;11201:215;;;11363:11;;11353:6;:21;;11345:59;;;;-1:-1:-1;;;11345:59:0;;13923:2:1;11345:59:0;;;13905:21:1;13962:2;13942:18;;;13935:30;-1:-1:-1;;;13981:18:1;;;13974:55;14046:18;;11345:59:0;13721:349:1;11345:59:0;11452:13;;-1:-1:-1;;;;;11446:19:0;;;11452:13;;11446:19;:59;;;;-1:-1:-1;;;;;;11483:22:0;;;;;;:16;:22;;;;;;;;11482:23;11446:59;:97;;;;-1:-1:-1;;;;;;11522:21:0;;11538:4;11522:21;;11446:97;:135;;;;-1:-1:-1;;;;;;11561:20:0;;;;;;:16;:20;;;;;;;;11560:21;11446:135;11428:213;;;-1:-1:-1;11620:9:0;;11428:213;11692:4;11653:18;15004;;;:9;:18;;;;;;11728:8;;-1:-1:-1;;;11728:8:0;;;;11727:9;:53;;;;;11767:13;;11753:10;:27;;11727:53;:89;;;;-1:-1:-1;11803:13:0;;-1:-1:-1;;;;;11797:19:0;;;11803:13;;11797:19;11727:89;:117;;;;-1:-1:-1;11833:11:0;;-1:-1:-1;;;11833:11:0;;;;11727:117;:146;;;;;11872:1;11861:8;;:12;11727:146;:186;;;;-1:-1:-1;;;;;;11891:22:0;;;;;;:16;:22;;;;;;;;11890:23;11727:186;:226;;;;;11940:13;;11930:6;:23;;11727:226;:264;;;;-1:-1:-1;;;;;;11971:20:0;;;;;;:16;:20;;;;;;;;11970:21;11727:264;11709:537;;;12018:61;12035:43;12039:6;12047:30;12051:10;12063:13;;12047:3;:30::i;:::-;12035:3;:43::i;:::-;12018:16;:61::i;:::-;12113:21;12153:12;;12149:86;;12186:33;12197:21;12186:10;:33::i;:::-;12003:243;11709:537;12262:14;;12258:700;;12293:15;12334:3;12312:18;12321:9;12312:6;:18;:::i;:::-;12311:26;;;;:::i;:::-;12293:44;-1:-1:-1;12352:17:0;12372:16;12293:44;12372:6;:16;:::i;:::-;-1:-1:-1;;;;;12424:22:0;;12403:18;12424:22;;;:16;:22;;;;;;12352:36;;-1:-1:-1;12403:18:0;12424:22;;:79;;12498:4;12424:79;;;12466:4;12424:79;-1:-1:-1;;;;;12528:22:0;;;;;;:16;:22;;;;;;12403:100;;-1:-1:-1;12528:22:0;;:41;;12562:7;12528:41;;;12553:6;12528:41;-1:-1:-1;;;;;12584:21:0;;;;;;:9;:21;;;;;:32;;12518:51;;-1:-1:-1;12518:51:0;;12584:21;;;:32;;12518:51;;12584:32;:::i;:::-;;;;-1:-1:-1;;12636:38:0;;1840:25:1;;;12659:4:0;;-1:-1:-1;;;;;12636:38:0;;;-1:-1:-1;;;;;;;;;;;12636:38:0;1828:2:1;1813:18;12636:38:0;;;;;;;-1:-1:-1;;;;;12689:15:0;;;;;;:9;:15;;;;;:25;;12708:6;;12689:15;:25;;12708:6;;12689:25;:::i;:::-;;;;-1:-1:-1;;;;;;;12729:13:0;;;;;;:9;:13;;;;;:26;;12746:9;;12729:13;:26;;12746:9;;12729:26;:::i;:::-;;;;;;;;12790:2;-1:-1:-1;;;;;12775:29:0;12784:4;-1:-1:-1;;;;;12775:29:0;-1:-1:-1;;;;;;;;;;;12794:9:0;12775:29;;;;1840:25:1;;1828:2;1813:18;;1694:177;12775:29:0;;;;;;;;12278:538;;;12258:700;;;-1:-1:-1;;;;;12837:15:0;;;;;;:9;:15;;;;;:25;;12856:6;;12837:15;:25;;12856:6;;12837:25;:::i;:::-;;;;-1:-1:-1;;;;;;;12877:13:0;;;;;;:9;:13;;;;;:23;;12894:6;;12877:13;:23;;12894:6;;12877:23;:::i;:::-;;;;;;;;12935:2;-1:-1:-1;;;;;12920:26:0;12929:4;-1:-1:-1;;;;;12920:26:0;-1:-1:-1;;;;;;;;;;;12939:6:0;12920:26;;;;1840:25:1;;1828:2;1813:18;;1694:177;12920:26:0;;;;;;;;12258:700;10159:2806;;10090:2875;;;:::o;4270:191::-;4344:16;4363:6;;-1:-1:-1;;;;;4380:17:0;;;-1:-1:-1;;;;;;4380:17:0;;;;;;4413:40;;4363:6;;;;;;;4413:40;;4344:16;4413:40;4333:128;4270:191;:::o;8264:107::-;8321:7;8353:1;8349;:5;8348:15;;8362:1;8348:15;;;8358:1;8348:15;8341:22;8264:107;-1:-1:-1;;;8264:107:0:o;8379:551::-;5082:8;:15;;-1:-1:-1;;;;5082:15:0;-1:-1:-1;;;5082:15:0;;;8465;8457:57:::1;;;::::0;-1:-1:-1;;;8457:57:0;;14994:2:1;8457:57:0::1;::::0;::::1;14976:21:1::0;15033:2;15013:18;;;15006:30;15072:31;15052:18;;;15045:59;15121:18;;8457:57:0::1;14792:353:1::0;8457:57:0::1;8549:16;::::0;;8563:1:::1;8549:16:::0;;;;;::::1;::::0;;8525:21:::1;::::0;8549:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;8549:16:0::1;8525:40;;8594:4;8576;8581:1;8576:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;8576:23:0::1;;;-1:-1:-1::0;;;;;8576:23:0::1;;;::::0;::::1;8620:15;;;;;;;;;-1:-1:-1::0;;;;;8620:15:0::1;-1:-1:-1::0;;;;;8620:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8610:4;8615:1;8610:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8610:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;8685:15:::1;::::0;8653:62:::1;::::0;8670:4:::1;::::0;8685:15:::1;8703:11:::0;8653:8:::1;:62::i;:::-;8726:15;::::0;;:196:::1;::::0;-1:-1:-1;;;8726:196:0;;-1:-1:-1;;;;;8726:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;8807:11;;8726:15:::1;::::0;8849:4;;8876::::1;::::0;8896:15:::1;::::0;8726:196:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5120:8:0;:16;;-1:-1:-1;;;;5120:16:0;;;-1:-1:-1;;;;8379:551:0:o;9749:196::-;9821:1;9812:6;:10;9804:52;;;;-1:-1:-1;;;9804:52:0;;14994:2:1;9804:52:0;;;14976:21:1;15033:2;15013:18;;;15006:30;15072:31;15052:18;;;15045:59;15121:18;;9804:52:0;14792:353:1;9804:52:0;9867:9;;-1:-1:-1;;;;;9867:9:0;:30;9886:10;9895:1;9886:6;:10;:::i;:::-;9867:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9908:8:0;;-1:-1:-1;;;;;9908:8:0;:29;9926:10;9935:1;9926:6;:10;:::i;:::-;9908:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9749:196;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;956:315;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1876:456::-;1953:6;1961;1969;2022:2;2010:9;2001:7;1997:23;1993:32;1990:52;;;2038:1;2035;2028:12;1990:52;2077:9;2064:23;2096:31;2121:5;2096:31;:::i;:::-;2146:5;-1:-1:-1;2203:2:1;2188:18;;2175:32;2216:33;2175:32;2216:33;:::i;:::-;1876:456;;2268:7;;-1:-1:-1;;;2322:2:1;2307:18;;;;2294:32;;1876:456::o;2526:247::-;2585:6;2638:2;2626:9;2617:7;2613:23;2609:32;2606:52;;;2654:1;2651;2644:12;2606:52;2693:9;2680:23;2712:31;2737:5;2712:31;:::i;2986:388::-;3054:6;3062;3115:2;3103:9;3094:7;3090:23;3086:32;3083:52;;;3131:1;3128;3121:12;3083:52;3170:9;3157:23;3189:31;3214:5;3189:31;:::i;:::-;3239:5;-1:-1:-1;3296:2:1;3281:18;;3268:32;3309:33;3268:32;3309:33;:::i;:::-;3361:7;3351:17;;;2986:388;;;;;:::o;3379:356::-;3581:2;3563:21;;;3600:18;;;3593:30;3659:34;3654:2;3639:18;;3632:62;3726:2;3711:18;;3379:356::o;4094:398::-;4296:2;4278:21;;;4335:2;4315:18;;;4308:30;4374:34;4369:2;4354:18;;4347:62;-1:-1:-1;;;4440:2:1;4425:18;;4418:32;4482:3;4467:19;;4094:398::o;4845:127::-;4906:10;4901:3;4897:20;4894:1;4887:31;4937:4;4934:1;4927:15;4961:4;4958:1;4951:15;4977:422;5066:1;5109:5;5066:1;5123:270;5144:7;5134:8;5131:21;5123:270;;;5203:4;5199:1;5195:6;5191:17;5185:4;5182:27;5179:53;;;5212:18;;:::i;:::-;5262:7;5252:8;5248:22;5245:55;;;5282:16;;;;5245:55;5361:22;;;;5321:15;;;;5123:270;;;5127:3;4977:422;;;;;:::o;5404:806::-;5453:5;5483:8;5473:80;;-1:-1:-1;5524:1:1;5538:5;;5473:80;5572:4;5562:76;;-1:-1:-1;5609:1:1;5623:5;;5562:76;5654:4;5672:1;5667:59;;;;5740:1;5735:130;;;;5647:218;;5667:59;5697:1;5688:10;;5711:5;;;5735:130;5772:3;5762:8;5759:17;5756:43;;;5779:18;;:::i;:::-;-1:-1:-1;;5835:1:1;5821:16;;5850:5;;5647:218;;5949:2;5939:8;5936:16;5930:3;5924:4;5921:13;5917:36;5911:2;5901:8;5898:16;5893:2;5887:4;5884:12;5880:35;5877:77;5874:159;;;-1:-1:-1;5986:19:1;;;6018:5;;5874:159;6065:34;6090:8;6084:4;6065:34;:::i;:::-;6135:6;6131:1;6127:6;6123:19;6114:7;6111:32;6108:58;;;6146:18;;:::i;:::-;6184:20;;5404:806;-1:-1:-1;;;5404:806:1:o;6215:140::-;6273:5;6302:47;6343:4;6333:8;6329:19;6323:4;6302:47;:::i;6360:168::-;6433:9;;;6464;;6481:15;;;6475:22;;6461:37;6451:71;;6502:18;;:::i;6942:128::-;7009:9;;;7030:11;;;7027:37;;;7044:18;;:::i;8562:184::-;8632:6;8685:2;8673:9;8664:7;8660:23;8656:32;8653:52;;;8701:1;8698;8691:12;8653:52;-1:-1:-1;8724:16:1;;8562:184;-1:-1:-1;8562:184:1:o;9038:277::-;9105:6;9158:2;9146:9;9137:7;9133:23;9129:32;9126:52;;;9174:1;9171;9164:12;9126:52;9206:9;9200:16;9259:5;9252:13;9245:21;9238:5;9235:32;9225:60;;9281:1;9278;9271:12;9320:251;9390:6;9443:2;9431:9;9422:7;9418:23;9414:32;9411:52;;;9459:1;9456;9449:12;9411:52;9491:9;9485:16;9510:31;9535:5;9510:31;:::i;10497:306::-;10585:6;10593;10601;10654:2;10642:9;10633:7;10629:23;10625:32;10622:52;;;10670:1;10667;10660:12;10622:52;10699:9;10693:16;10683:26;;10749:2;10738:9;10734:18;10728:25;10718:35;;10793:2;10782:9;10778:18;10772:25;10762:35;;10497:306;;;;;:::o;13591:125::-;13656:9;;;13677:10;;;13674:36;;;13690:18;;:::i;14430:135::-;14469:3;14490:17;;;14487:43;;14510:18;;:::i;:::-;-1:-1:-1;14557:1:1;14546:13;;14430:135::o;14570:217::-;14610:1;14636;14626:132;;14680:10;14675:3;14671:20;14668:1;14661:31;14715:4;14712:1;14705:15;14743:4;14740:1;14733:15;14626:132;-1:-1:-1;14772:9:1;;14570:217::o;15282:127::-;15343:10;15338:3;15334:20;15331:1;15324:31;15374:4;15371:1;15364:15;15398:4;15395:1;15388:15;15414:980;15676:4;15724:3;15713:9;15709:19;15755:6;15744:9;15737:25;15781:2;15819:6;15814:2;15803:9;15799:18;15792:34;15862:3;15857:2;15846:9;15842:18;15835:31;15886:6;15921;15915:13;15952:6;15944;15937:22;15990:3;15979:9;15975:19;15968:26;;16029:2;16021:6;16017:15;16003:29;;16050:1;16060:195;16074:6;16071:1;16068:13;16060:195;;;16139:13;;-1:-1:-1;;;;;16135:39:1;16123:52;;16230:15;;;;16195:12;;;;16171:1;16089:9;16060:195;;;-1:-1:-1;;;;;;;16311:32:1;;;;16306:2;16291:18;;16284:60;-1:-1:-1;;;16375:3:1;16360:19;16353:35;16272:3;15414:980;-1:-1:-1;;;15414:980:1:o

Swarm Source

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