ETH Price: $2,375.45 (-3.26%)

Token

Billy (BILLY)
 

Overview

Max Total Supply

1,000,000,000 BILLY

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
17,969,339.540201622839907983 BILLY

Value
$0.00
0x89bc801e73145ac6684c7543454243fd2fed5337
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:
BILLY

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-15
*/

/**
 *
 * https://t.me/billycoinerc
 * https://billycoin.vip
 *
 */

pragma solidity ^0.8.19;

// SPDX-License-Identifier: MIT

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

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

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

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 renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

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

contract BILLY is IERC20, Ownable {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply = 1e9 * 10**18;

    string private _name = "Billy";
    string private _symbol = "BILLY";

    mapping(address => bool) public exemptFromFees;
    mapping(address => bool) public exemptFromLimits;

    bool public tradingActive;

    mapping(address => bool) public isAMMPair;

    uint256 public maxTransaction;
    uint256 public maxWallet;

    address public taxReceiverAddress;

    uint256 public buyTotalTax;

    uint256 public sellTotalTax;

    bool public limitsInEffect = true;

    bool public swapEnabled = false;
    bool private swapping;
    uint256 public swapTokensAtAmt;
    uint256 public swapTokensMaxAmt;

    address public lpPair;
    IDexRouter public dexRouter;

    uint256 public constant FEE_DIVISOR = 10000;

    // events

    event UpdatedMaxTransaction(uint256 newMax);
    event UpdatedMaxWallet(uint256 newMax);
    event SetExemptFromFees(address _address, bool _isExempt);
    event SetExemptFromLimits(address _address, bool _isExempt);
    event RemovedLimits();
    event UpdatedTaxes(uint256 newBuyAmt, uint256 newSellAmt);

    // constructor

    constructor() {
        address newOwner = msg.sender;
        _balances[newOwner] = _totalSupply;

        dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        maxTransaction = (_totalSupply * 20) / 1000;
        maxWallet = (_totalSupply * 20) / 1000;
        swapTokensAtAmt = (_totalSupply * 5) / 1000000;
        swapTokensMaxAmt = _totalSupply / 100;

        taxReceiverAddress = 0x84e7C44df2c43Ee57549cfb328d5B8214cc77605;

        buyTotalTax = 5000;

        sellTotalTax = 5000;

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

        exemptFromFees[taxReceiverAddress] = true;

        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    receive() external payable {}

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

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

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        if (
            from == owner() ||
            to == owner() ||
            from == address(this) ||
            to == address(this)
        ) {
            _balances[from] = _balances[from] - amount;
            _balances[to] = _balances[to] + amount;
            emit Transfer(from, to, amount);
            return;
        }

        checkLimits(from, to, amount);

        amount -= handleTax(from, to, amount);

        _balances[from] = _balances[from] - amount;
        _balances[to] = _balances[to] + amount;
        emit Transfer(from, to, amount);
    }

    function checkLimits(
        address from,
        address to,
        uint256 amount
    ) internal view {
        require(tradingActive, "Trading not active");

        if (limitsInEffect) {
            // buy
            if (isAMMPair[from] && !exemptFromLimits[to]) {
                require(
                    amount <= maxTransaction,
                    "Buy transfer amount exceeded."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Unable to exceed Max Wallet"
                );
            }
            // sell
            else if (isAMMPair[to] && !exemptFromLimits[from]) {
                require(
                    amount <= maxTransaction,
                    "Sell transfer amount exceeds the maxTransactionAmt."
                );
            } else if (!exemptFromLimits[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Unable to exceed Max Wallet"
                );
            }
        }
    }

    function handleTax(
        address from,
        address to,
        uint256 amount
    ) internal returns (uint256) {
        if (
            amount >= swapTokensAtAmt &&
            swapEnabled &&
            !swapping &&
            isAMMPair[to] &&
            !exemptFromFees[from]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        uint256 tax = 0;

        if (!exemptFromFees[from] && !exemptFromFees[to]) {
            // on sell
            if (isAMMPair[to] && sellTotalTax > 0) {
                tax = (amount * sellTotalTax) / FEE_DIVISOR;
            }
            // on buy
            else if (isAMMPair[from] && buyTotalTax > 0) {
                tax = (amount * buyTotalTax) / FEE_DIVISOR;
            }

            if (tax > 0) {
                _balances[from] = _balances[from] - tax;
                _balances[address(this)] = _balances[address(this)] + tax;
                emit Transfer(from, address(this), tax);
            }
        } else {
            _balances[from] = _balances[from] + (amount - tax);
        }

        return tax;
    }

    function swapTokensForETH(uint256 tokenAmt) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = address(dexRouter.WETH());

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmt,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance > swapTokensMaxAmt) {
            contractBalance = swapTokensMaxAmt;
        }

        if (contractBalance > swapTokensAtAmt)
            swapTokensForETH(contractBalance);

        payable(taxReceiverAddress).transfer(address(this).balance);
    }

    function createPair() external onlyOwner {
        lpPair = IDexFactory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );

        isAMMPair[lpPair] = true;

        exemptFromLimits[lpPair] = true;

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

        tradingActive = true;
        swapEnabled = true;
    }

    function updateTaxes(uint256 _buyTax, uint256 _sellTax) external onlyOwner {
        buyTotalTax = _buyTax;
        sellTotalTax = _sellTax;
        require(
            buyTotalTax <= 9900 && sellTotalTax <= 9900,
            "Keep tax below 99%"
        );
        emit UpdatedTaxes(buyTotalTax, sellTotalTax);
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        maxTransaction = totalSupply();
        maxWallet = totalSupply();
        emit RemovedLimits();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromLimits","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":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedMaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyAmt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellAmt","type":"uint256"}],"name":"UpdatedTaxes","type":"event"},{"inputs":[],"name":"FEE_DIVISOR","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":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensMaxAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxReceiverAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":[{"internalType":"uint256","name":"_buyTax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6b033b2e3c9fd0803ce800000060035560c0604052600560809081526442696c6c7960d81b60a0526004906200003690826200040c565b506040805180820190915260058082526442494c4c5960d81b6020830152906200006190826200040c565b50600f805461ffff191660011790553480156200007d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600354336000818152600160205260409020829055601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055906103e8906200010c906014620004d8565b62000118919062000504565b600a556003546103e8906200012f906014620004d8565b6200013b919062000504565b600b55600354620f42409062000153906005620004d8565b6200015f919062000504565b601055600354620001739060649062000504565b601155600c80546001600160a01b0319167384e7c44df2c43ee57549cfb328d5b8214cc77605178155611388600d819055600e55600760209081527f5d5c75a22033aa009026fe1dc553070f1c4fc42d421c0786685e1f465d6b78e5805460ff1990811660019081179092553360009081526040808220805484168517905530808352818320805485168617905595546001600160a01b0390811683526006909552902080549091169091179055601354620002349291166000196200023b565b5062000527565b6001600160a01b038316620002a35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620003065760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200029a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200039257607f821691505b602082108103620003b357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200040757600081815260208120601f850160051c81016020861015620003e25750805b601f850160051c820191505b818110156200040357828155600101620003ee565b5050505b505050565b81516001600160401b0381111562000428576200042862000367565b62000440816200043984546200037d565b84620003b9565b602080601f8311600181146200047857600084156200045f5750858301515b600019600386901b1c1916600185901b17855562000403565b600085815260208120601f198616915b82811015620004a95788860151825594840194600190910190840162000488565b5085821015620004c85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082028115828204841417620004fe57634e487b7160e01b600052601160045260246000fd5b92915050565b6000826200052257634e487b7160e01b600052601260045260246000fd5b500490565b611a0b80620005376000396000f3fe6080604052600436106101f25760003560e01c8063751039fc1161010d578063a9059cbb116100a0578063c78d0fa01161006f578063c78d0fa014610591578063dd62ed3e146105a7578063e27a55fe146105c7578063f2fde38b146105dd578063f8b45b05146105fd57600080fd5b8063a9059cbb14610511578063b0249cc614610531578063bbc0c74214610561578063c3f70b521461057b57600080fd5b80639e78fb4f116100dc5780639e78fb4f146104b05780639e93ad8e146104c5578063a24f47dc146104db578063a457c2d7146104f157600080fd5b8063751039fc146104385780638d3e6e401461044d5780638da5cb5b1461047d57806395d89b411461049b57600080fd5b806339509351116101855780635df6e68e116101545780635df6e68e146103b85780636ddd1713146103ce57806370a08231146103ed578063715018a61461042357600080fd5b8063395093511461032e578063452ed4f11461034e5780634a62bb651461036e5780635a90a49e1461038857600080fd5b8063114ca2ed116101c1578063114ca2ed146102b357806318160ddd146102d357806323b872dd146102f2578063313ce5671461031257600080fd5b806306fdde03146101fe5780630758d92414610229578063095ea7b3146102615780631006ee0c1461029157600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50610213610613565b60405161022091906116cd565b60405180910390f35b34801561023557600080fd5b50601354610249906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b34801561026d57600080fd5b5061028161027c366004611733565b6106a5565b6040519015158152602001610220565b34801561029d57600080fd5b506102b16102ac36600461175f565b6106bc565b005b3480156102bf57600080fd5b50600c54610249906001600160a01b031681565b3480156102df57600080fd5b506003545b604051908152602001610220565b3480156102fe57600080fd5b5061028161030d366004611781565b61079a565b34801561031e57600080fd5b5060405160128152602001610220565b34801561033a57600080fd5b50610281610349366004611733565b6107be565b34801561035a57600080fd5b50601254610249906001600160a01b031681565b34801561037a57600080fd5b50600f546102819060ff1681565b34801561039457600080fd5b506102816103a33660046117c2565b60066020526000908152604090205460ff1681565b3480156103c457600080fd5b506102e4600d5481565b3480156103da57600080fd5b50600f5461028190610100900460ff1681565b3480156103f957600080fd5b506102e46104083660046117c2565b6001600160a01b031660009081526001602052604090205490565b34801561042f57600080fd5b506102b16107ea565b34801561044457600080fd5b506102b161085e565b34801561045957600080fd5b506102816104683660046117c2565b60076020526000908152604090205460ff1681565b34801561048957600080fd5b506000546001600160a01b0316610249565b3480156104a757600080fd5b506102136108c9565b3480156104bc57600080fd5b506102b16108d8565b3480156104d157600080fd5b506102e461271081565b3480156104e757600080fd5b506102e460115481565b3480156104fd57600080fd5b5061028161050c366004611733565b610bb3565b34801561051d57600080fd5b5061028161052c366004611733565b610c2e565b34801561053d57600080fd5b5061028161054c3660046117c2565b60096020526000908152604090205460ff1681565b34801561056d57600080fd5b506008546102819060ff1681565b34801561058757600080fd5b506102e4600a5481565b34801561059d57600080fd5b506102e460105481565b3480156105b357600080fd5b506102e46105c23660046117e6565b610c3b565b3480156105d357600080fd5b506102e4600e5481565b3480156105e957600080fd5b506102b16105f83660046117c2565b610c66565b34801561060957600080fd5b506102e4600b5481565b6060600480546106229061181f565b80601f016020809104026020016040519081016040528092919081815260200182805461064e9061181f565b801561069b5780601f106106705761010080835404028352916020019161069b565b820191906000526020600020905b81548152906001019060200180831161067e57829003601f168201915b5050505050905090565b60006106b2338484610d50565b5060015b92915050565b6000546001600160a01b031633146106ef5760405162461bcd60e51b81526004016106e690611859565b60405180910390fd5b600d829055600e8190556126ac821180159061070f57506126ac600e5411155b6107505760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772039392560701b60448201526064016106e6565b7f034725a2f486d2464b0dc0c97e15c08b40029be4f071c7ce505dfb6336989d4a600d54600e5460405161078e929190918252602082015260400190565b60405180910390a15050565b6000336107a8858285610e75565b6107b3858585610eef565b506001949350505050565b6000336107e08185856107d18383610c3b565b6107db91906118a4565b610d50565b5060019392505050565b6000546001600160a01b031633146108145760405162461bcd60e51b81526004016106e690611859565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108885760405162461bcd60e51b81526004016106e690611859565b600f805460ff19169055600354600a55600354600b556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6060600580546106229061181f565b6000546001600160a01b031633146109025760405162461bcd60e51b81526004016106e690611859565b601360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610955573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097991906118b7565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff91906118b7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7091906118b7565b601280546001600160a01b039283166001600160a01b0319909116811782556000908152600960209081526040808320805460ff199081166001908117909255945486168452600790925290912080549092161790556013541663f305d7194730610af0816001600160a01b031660009081526001602052604090205490565b600080610b056000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b6d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b9291906118d4565b50506008805460ff1916600117905550600f805461ff001916610100179055565b60003381610bc18286610c3b565b905083811015610c215760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106e6565b6107b38286868403610d50565b60006106b2338484610eef565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000546001600160a01b03163314610c905760405162461bcd60e51b81526004016106e690611859565b6001600160a01b038116610cf55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610db25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106e6565b6001600160a01b038216610e135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106e6565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610e818484610c3b565b90506000198114610ee95781811015610edc5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106e6565b610ee98484848403610d50565b50505050565b6000546001600160a01b0384811691161480610f1857506000546001600160a01b038381169116145b80610f2b57506001600160a01b03831630145b80610f3e57506001600160a01b03821630145b15610feb576001600160a01b038316600090815260016020526040902054610f67908290611902565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610f979082906118a4565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e689085815260200190565b610ff6838383611032565b61100183838361128f565b61100b9082611902565b6001600160a01b038416600090815260016020526040902054909150610f67908290611902565b60085460ff166110795760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016106e6565b600f5460ff1615611190576001600160a01b03831660009081526009602052604090205460ff1680156110c557506001600160a01b03821660009081526007602052604090205460ff16155b1561119557600a5481111561111c5760405162461bcd60e51b815260206004820152601d60248201527f427579207472616e7366657220616d6f756e742065786365656465642e00000060448201526064016106e6565b600b546001600160a01b03831660009081526001602052604090205461114290836118a4565b11156111905760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c6574000000000060448201526064016106e6565b505050565b6001600160a01b03821660009081526009602052604090205460ff1680156111d657506001600160a01b03831660009081526007602052604090205460ff16155b1561124957600a548111156111905760405162461bcd60e51b815260206004820152603360248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152721036b0bc2a3930b739b0b1ba34b7b720b6ba1760691b60648201526084016106e6565b6001600160a01b03821660009081526007602052604090205460ff1661119057600b546001600160a01b03831660009081526001602052604090205461114290836118a4565b600060105482101580156112aa5750600f54610100900460ff165b80156112bf5750600f5462010000900460ff16155b80156112e357506001600160a01b03831660009081526009602052604090205460ff165b801561130857506001600160a01b03841660009081526006602052604090205460ff16155b1561133357600f805462ff000019166201000017905561132661151d565b600f805462ff0000191690555b6001600160a01b03841660009081526006602052604081205460ff1615801561137557506001600160a01b03841660009081526006602052604090205460ff16155b156114ce576001600160a01b03841660009081526009602052604090205460ff1680156113a457506000600e54115b156113cb57612710600e54846113ba9190611915565b6113c4919061192c565b9050611418565b6001600160a01b03851660009081526009602052604090205460ff1680156113f557506000600d54115b1561141857612710600d548461140b9190611915565b611415919061192c565b90505b80156114c9576001600160a01b038516600090815260016020526040902054611442908290611902565b6001600160a01b03861660009081526001602052604080822092909255308152205461146f9082906118a4565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114c09085815260200190565b60405180910390a35b611515565b6114d88184611902565b6001600160a01b0386166000908152600160205260409020546114fb91906118a4565b6001600160a01b0386166000908152600160205260409020555b949350505050565b3060009081526001602052604090205460115481111561153c57506011545b60105481111561154f5761154f8161158c565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611588573d6000803e3d6000fd5b5050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115c1576115c161194e565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561161a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163e91906118b7565b816001815181106116515761165161194e565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac94790611697908590600090869030904290600401611964565b600060405180830381600087803b1580156116b157600080fd5b505af11580156116c5573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b818110156116fa578581018301518582016040015282016116de565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461173057600080fd5b50565b6000806040838503121561174657600080fd5b82356117518161171b565b946020939093013593505050565b6000806040838503121561177257600080fd5b50508035926020909101359150565b60008060006060848603121561179657600080fd5b83356117a18161171b565b925060208401356117b18161171b565b929592945050506040919091013590565b6000602082840312156117d457600080fd5b81356117df8161171b565b9392505050565b600080604083850312156117f957600080fd5b82356118048161171b565b915060208301356118148161171b565b809150509250929050565b600181811c9082168061183357607f821691505b60208210810361185357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156106b6576106b661188e565b6000602082840312156118c957600080fd5b81516117df8161171b565b6000806000606084860312156118e957600080fd5b8351925060208401519150604084015190509250925092565b818103818111156106b6576106b661188e565b80820281158282048414176106b6576106b661188e565b60008261194957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119b45784516001600160a01b03168352938301939183019160010161198f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206d990c8995bebd688193e50150b38b161773c3f839129af0ddc4498bbff69e4f64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c8063751039fc1161010d578063a9059cbb116100a0578063c78d0fa01161006f578063c78d0fa014610591578063dd62ed3e146105a7578063e27a55fe146105c7578063f2fde38b146105dd578063f8b45b05146105fd57600080fd5b8063a9059cbb14610511578063b0249cc614610531578063bbc0c74214610561578063c3f70b521461057b57600080fd5b80639e78fb4f116100dc5780639e78fb4f146104b05780639e93ad8e146104c5578063a24f47dc146104db578063a457c2d7146104f157600080fd5b8063751039fc146104385780638d3e6e401461044d5780638da5cb5b1461047d57806395d89b411461049b57600080fd5b806339509351116101855780635df6e68e116101545780635df6e68e146103b85780636ddd1713146103ce57806370a08231146103ed578063715018a61461042357600080fd5b8063395093511461032e578063452ed4f11461034e5780634a62bb651461036e5780635a90a49e1461038857600080fd5b8063114ca2ed116101c1578063114ca2ed146102b357806318160ddd146102d357806323b872dd146102f2578063313ce5671461031257600080fd5b806306fdde03146101fe5780630758d92414610229578063095ea7b3146102615780631006ee0c1461029157600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50610213610613565b60405161022091906116cd565b60405180910390f35b34801561023557600080fd5b50601354610249906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b34801561026d57600080fd5b5061028161027c366004611733565b6106a5565b6040519015158152602001610220565b34801561029d57600080fd5b506102b16102ac36600461175f565b6106bc565b005b3480156102bf57600080fd5b50600c54610249906001600160a01b031681565b3480156102df57600080fd5b506003545b604051908152602001610220565b3480156102fe57600080fd5b5061028161030d366004611781565b61079a565b34801561031e57600080fd5b5060405160128152602001610220565b34801561033a57600080fd5b50610281610349366004611733565b6107be565b34801561035a57600080fd5b50601254610249906001600160a01b031681565b34801561037a57600080fd5b50600f546102819060ff1681565b34801561039457600080fd5b506102816103a33660046117c2565b60066020526000908152604090205460ff1681565b3480156103c457600080fd5b506102e4600d5481565b3480156103da57600080fd5b50600f5461028190610100900460ff1681565b3480156103f957600080fd5b506102e46104083660046117c2565b6001600160a01b031660009081526001602052604090205490565b34801561042f57600080fd5b506102b16107ea565b34801561044457600080fd5b506102b161085e565b34801561045957600080fd5b506102816104683660046117c2565b60076020526000908152604090205460ff1681565b34801561048957600080fd5b506000546001600160a01b0316610249565b3480156104a757600080fd5b506102136108c9565b3480156104bc57600080fd5b506102b16108d8565b3480156104d157600080fd5b506102e461271081565b3480156104e757600080fd5b506102e460115481565b3480156104fd57600080fd5b5061028161050c366004611733565b610bb3565b34801561051d57600080fd5b5061028161052c366004611733565b610c2e565b34801561053d57600080fd5b5061028161054c3660046117c2565b60096020526000908152604090205460ff1681565b34801561056d57600080fd5b506008546102819060ff1681565b34801561058757600080fd5b506102e4600a5481565b34801561059d57600080fd5b506102e460105481565b3480156105b357600080fd5b506102e46105c23660046117e6565b610c3b565b3480156105d357600080fd5b506102e4600e5481565b3480156105e957600080fd5b506102b16105f83660046117c2565b610c66565b34801561060957600080fd5b506102e4600b5481565b6060600480546106229061181f565b80601f016020809104026020016040519081016040528092919081815260200182805461064e9061181f565b801561069b5780601f106106705761010080835404028352916020019161069b565b820191906000526020600020905b81548152906001019060200180831161067e57829003601f168201915b5050505050905090565b60006106b2338484610d50565b5060015b92915050565b6000546001600160a01b031633146106ef5760405162461bcd60e51b81526004016106e690611859565b60405180910390fd5b600d829055600e8190556126ac821180159061070f57506126ac600e5411155b6107505760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772039392560701b60448201526064016106e6565b7f034725a2f486d2464b0dc0c97e15c08b40029be4f071c7ce505dfb6336989d4a600d54600e5460405161078e929190918252602082015260400190565b60405180910390a15050565b6000336107a8858285610e75565b6107b3858585610eef565b506001949350505050565b6000336107e08185856107d18383610c3b565b6107db91906118a4565b610d50565b5060019392505050565b6000546001600160a01b031633146108145760405162461bcd60e51b81526004016106e690611859565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108885760405162461bcd60e51b81526004016106e690611859565b600f805460ff19169055600354600a55600354600b556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6060600580546106229061181f565b6000546001600160a01b031633146109025760405162461bcd60e51b81526004016106e690611859565b601360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610955573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097991906118b7565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff91906118b7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7091906118b7565b601280546001600160a01b039283166001600160a01b0319909116811782556000908152600960209081526040808320805460ff199081166001908117909255945486168452600790925290912080549092161790556013541663f305d7194730610af0816001600160a01b031660009081526001602052604090205490565b600080610b056000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b6d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b9291906118d4565b50506008805460ff1916600117905550600f805461ff001916610100179055565b60003381610bc18286610c3b565b905083811015610c215760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106e6565b6107b38286868403610d50565b60006106b2338484610eef565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000546001600160a01b03163314610c905760405162461bcd60e51b81526004016106e690611859565b6001600160a01b038116610cf55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610db25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106e6565b6001600160a01b038216610e135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106e6565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610e818484610c3b565b90506000198114610ee95781811015610edc5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106e6565b610ee98484848403610d50565b50505050565b6000546001600160a01b0384811691161480610f1857506000546001600160a01b038381169116145b80610f2b57506001600160a01b03831630145b80610f3e57506001600160a01b03821630145b15610feb576001600160a01b038316600090815260016020526040902054610f67908290611902565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610f979082906118a4565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e689085815260200190565b610ff6838383611032565b61100183838361128f565b61100b9082611902565b6001600160a01b038416600090815260016020526040902054909150610f67908290611902565b60085460ff166110795760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016106e6565b600f5460ff1615611190576001600160a01b03831660009081526009602052604090205460ff1680156110c557506001600160a01b03821660009081526007602052604090205460ff16155b1561119557600a5481111561111c5760405162461bcd60e51b815260206004820152601d60248201527f427579207472616e7366657220616d6f756e742065786365656465642e00000060448201526064016106e6565b600b546001600160a01b03831660009081526001602052604090205461114290836118a4565b11156111905760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c6574000000000060448201526064016106e6565b505050565b6001600160a01b03821660009081526009602052604090205460ff1680156111d657506001600160a01b03831660009081526007602052604090205460ff16155b1561124957600a548111156111905760405162461bcd60e51b815260206004820152603360248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152721036b0bc2a3930b739b0b1ba34b7b720b6ba1760691b60648201526084016106e6565b6001600160a01b03821660009081526007602052604090205460ff1661119057600b546001600160a01b03831660009081526001602052604090205461114290836118a4565b600060105482101580156112aa5750600f54610100900460ff165b80156112bf5750600f5462010000900460ff16155b80156112e357506001600160a01b03831660009081526009602052604090205460ff165b801561130857506001600160a01b03841660009081526006602052604090205460ff16155b1561133357600f805462ff000019166201000017905561132661151d565b600f805462ff0000191690555b6001600160a01b03841660009081526006602052604081205460ff1615801561137557506001600160a01b03841660009081526006602052604090205460ff16155b156114ce576001600160a01b03841660009081526009602052604090205460ff1680156113a457506000600e54115b156113cb57612710600e54846113ba9190611915565b6113c4919061192c565b9050611418565b6001600160a01b03851660009081526009602052604090205460ff1680156113f557506000600d54115b1561141857612710600d548461140b9190611915565b611415919061192c565b90505b80156114c9576001600160a01b038516600090815260016020526040902054611442908290611902565b6001600160a01b03861660009081526001602052604080822092909255308152205461146f9082906118a4565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114c09085815260200190565b60405180910390a35b611515565b6114d88184611902565b6001600160a01b0386166000908152600160205260409020546114fb91906118a4565b6001600160a01b0386166000908152600160205260409020555b949350505050565b3060009081526001602052604090205460115481111561153c57506011545b60105481111561154f5761154f8161158c565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611588573d6000803e3d6000fd5b5050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115c1576115c161194e565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561161a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163e91906118b7565b816001815181106116515761165161194e565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac94790611697908590600090869030904290600401611964565b600060405180830381600087803b1580156116b157600080fd5b505af11580156116c5573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b818110156116fa578581018301518582016040015282016116de565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461173057600080fd5b50565b6000806040838503121561174657600080fd5b82356117518161171b565b946020939093013593505050565b6000806040838503121561177257600080fd5b50508035926020909101359150565b60008060006060848603121561179657600080fd5b83356117a18161171b565b925060208401356117b18161171b565b929592945050506040919091013590565b6000602082840312156117d457600080fd5b81356117df8161171b565b9392505050565b600080604083850312156117f957600080fd5b82356118048161171b565b915060208301356118148161171b565b809150509250929050565b600181811c9082168061183357607f821691505b60208210810361185357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156106b6576106b661188e565b6000602082840312156118c957600080fd5b81516117df8161171b565b6000806000606084860312156118e957600080fd5b8351925060208401519150604084015190509250925092565b818103818111156106b6576106b661188e565b80820281158282048414176106b6576106b661188e565b60008261194957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119b45784516001600160a01b03168352938301939183019160010161198f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212206d990c8995bebd688193e50150b38b161773c3f839129af0ddc4498bbff69e4f64736f6c63430008130033

Deployed Bytecode Sourcemap

3088:10179:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5284:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3978:27;;;;;;;;;;-1:-1:-1;3978:27:0;;;;-1:-1:-1;;;;;3978:27:0;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;3978:27:0;567:221:1;5979:193:0;;;;;;;;;;-1:-1:-1;5979:193:0;;;;;:::i;:::-;;:::i;:::-;;;1414:14:1;;1407:22;1389:41;;1377:2;1362:18;5979:193:0;1249:187:1;12738:326:0;;;;;;;;;;-1:-1:-1;12738:326:0;;;;;:::i;:::-;;:::i;:::-;;3652:33;;;;;;;;;;-1:-1:-1;3652:33:0;;;;-1:-1:-1;;;;;3652:33:0;;;5578:99;;;;;;;;;;-1:-1:-1;5657:12:0;;5578:99;;;2048:25:1;;;2036:2;2021:18;5578:99:0;1902:177:1;5685:286:0;;;;;;;;;;-1:-1:-1;5685:286:0;;;;;:::i;:::-;;:::i;5486:84::-;;;;;;;;;;-1:-1:-1;5486:84:0;;5560:2;2687:36:1;;2675:2;2660:18;5486:84:0;2545:184:1;6180:270:0;;;;;;;;;;-1:-1:-1;6180:270:0;;;;;:::i;:::-;;:::i;3950:21::-;;;;;;;;;;-1:-1:-1;3950:21:0;;;;-1:-1:-1;;;;;3950:21:0;;;3765:33;;;;;;;;;;-1:-1:-1;3765:33:0;;;;;;;;3389:46;;;;;;;;;;-1:-1:-1;3389:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3694:26;;;;;;;;;;;;;;;;3807:31;;;;;;;;;;-1:-1:-1;3807:31:0;;;;;;;;;;;7163:119;;;;;;;;;;-1:-1:-1;7163:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7256:18:0;7229:7;7256:18;;;:9;:18;;;;;;;7163:119;1763:150;;;;;;;;;;;;;:::i;13072:192::-;;;;;;;;;;;;;:::i;3442:48::-;;;;;;;;;;-1:-1:-1;3442:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1549:79;;;;;;;;;;-1:-1:-1;1587:7:0;1614:6;-1:-1:-1;;;;;1614:6:0;1549:79;;5383:95;;;;;;;;;;;;;:::i;12175:555::-;;;;;;;;;;;;;:::i;4014:43::-;;;;;;;;;;;;4052:5;4014:43;;3910:31;;;;;;;;;;;;;;;;6650:505;;;;;;;;;;-1:-1:-1;6650:505:0;;;;;:::i;:::-;;:::i;8188:199::-;;;;;;;;;;-1:-1:-1;8188:199:0;;;;;:::i;:::-;;:::i;3533:41::-;;;;;;;;;;-1:-1:-1;3533:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3499:25;;;;;;;;;;-1:-1:-1;3499:25:0;;;;;;;;3583:29;;;;;;;;;;;;;;;;3873:30;;;;;;;;;;;;;;;;6458:184;;;;;;;;;;-1:-1:-1;6458:184:0;;;;;:::i;:::-;;:::i;3729:27::-;;;;;;;;;;;;;;;;1921:281;;;;;;;;;;-1:-1:-1;1921:281:0;;;;;:::i;:::-;;:::i;3619:24::-;;;;;;;;;;;;;;;;5284:91;5329:13;5362:5;5355:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5284:91;:::o;5979:193::-;6081:4;6103:39;252:10;6126:7;6135:6;6103:8;:39::i;:::-;-1:-1:-1;6160:4:0;5979:193;;;;;:::o;12738:326::-;1676:6;;-1:-1:-1;;;;;1676:6:0;252:10;1676:22;1668:67;;;;-1:-1:-1;;;1668:67:0;;;;;;;:::i;:::-;;;;;;;;;12824:11:::1;:21:::0;;;12856:12:::1;:23:::0;;;12927:4:::1;12912:19:::0;::::1;::::0;::::1;::::0;:43:::1;;;12951:4;12935:12;;:20;;12912:43;12890:111;;;::::0;-1:-1:-1;;;12890:111:0;;4327:2:1;12890:111:0::1;::::0;::::1;4309:21:1::0;4366:2;4346:18;;;4339:30;-1:-1:-1;;;4385:18:1;;;4378:48;4443:18;;12890:111:0::1;4125:342:1::0;12890:111:0::1;13017:39;13030:11;;13043:12;;13017:39;;;;;;4646:25:1::0;;;4702:2;4687:18;;4680:34;4634:2;4619:18;;4472:248;13017:39:0::1;;;;;;;;12738:326:::0;;:::o;5685:286::-;5807:4;252:10;5865:38;5881:4;252:10;5896:6;5865:15;:38::i;:::-;5914:27;5924:4;5930:2;5934:6;5914:9;:27::i;:::-;-1:-1:-1;5959:4:0;;5685:286;-1:-1:-1;;;;5685:286:0:o;6180:270::-;6295:4;252:10;6356:64;252:10;6372:7;6409:10;6381:25;252:10;6372:7;6381:9;:25::i;:::-;:38;;;;:::i;:::-;6356:8;:64::i;:::-;-1:-1:-1;6438:4:0;;6180:270;-1:-1:-1;;;6180:270:0:o;1763:150::-;1676:6;;-1:-1:-1;;;;;1676:6:0;252:10;1676:22;1668:67;;;;-1:-1:-1;;;1668:67:0;;;;;;;:::i;:::-;1872:1:::1;1856:6:::0;;1835:40:::1;::::0;-1:-1:-1;;;;;1856:6:0;;::::1;::::0;1835:40:::1;::::0;1872:1;;1835:40:::1;1903:1;1886:19:::0;;-1:-1:-1;;;;;;1886:19:0::1;::::0;;1763:150::o;13072:192::-;1676:6;;-1:-1:-1;;;;;1676:6:0;252:10;1676:22;1668:67;;;;-1:-1:-1;;;1668:67:0;;;;;;;:::i;:::-;13126:14:::1;:22:::0;;-1:-1:-1;;13126:22:0::1;::::0;;5657:12;;13159:14:::1;:30:::0;5657:12;;13200:9:::1;:25:::0;13241:15:::1;::::0;::::1;::::0;;;::::1;13072:192::o:0;5383:95::-;5430:13;5463:7;5456:14;;;;;:::i;12175:555::-;1676:6;;-1:-1:-1;;;;;1676:6:0;252:10;1676:22;1668:67;;;;-1:-1:-1;;;1668:67:0;;;;;;;:::i;:::-;12248:9:::1;;;;;;;;;-1:-1:-1::0;;;;;12248:9:0::1;-1:-1:-1::0;;;;;12248:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12236:43:0::1;;12302:4;12322:9;;;;;;;;;-1:-1:-1::0;;;;;12322:9:0::1;-1:-1:-1::0;;;;;12322:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12236:113;::::0;-1:-1:-1;;;;;;12236:113:0::1;::::0;;;;;;-1:-1:-1;;;;;5473:15:1;;;12236:113:0::1;::::0;::::1;5455:34:1::0;5525:15;;5505:18;;;5498:43;5390:18;;12236:113:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12227:6;:122:::0;;-1:-1:-1;;;;;12227:122:0;;::::1;-1:-1:-1::0;;;;;;12227:122:0;;::::1;::::0;::::1;::::0;;:6:::1;12362:17:::0;;;:9:::1;:17;::::0;;;;;;;:24;;-1:-1:-1;;12362:24:0;;::::1;12227:122:::0;12362:24;;::::1;::::0;;;12416:6;;;::::1;12399:24:::0;;:16:::1;:24:::0;;;;;;:31;;;;::::1;;::::0;;12443:9:::1;::::0;::::1;:25;12476:21;12521:4;12541:24;12521:4:::0;-1:-1:-1;;;;;7256:18:0;7229:7;7256:18;;;:9;:18;;;;;;;7163:119;12541:24:::1;12580:1;12596::::0;12612:7:::1;1587::::0;1614:6;-1:-1:-1;;;;;1614:6:0;;1549:79;12612:7:::1;12443:217;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12443:217:0;;;-1:-1:-1;;;;;5911:15:1;;;12443:217:0::1;::::0;::::1;5893:34:1::0;5943:18;;;5936:34;;;;5986:18;;;5979:34;;;;6029:18;;;6022:34;6093:15;;;6072:19;;;6065:44;12634:15:0::1;6125:19:1::0;;;6118:35;5827:19;;12443:217:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12673:13:0::1;:20:::0;;-1:-1:-1;;12673:20:0::1;12689:4;12673:20;::::0;;-1:-1:-1;12704:11:0::1;:18:::0;;-1:-1:-1;;12704:18:0::1;12673:20;12704:18;::::0;;12175:555::o;6650:505::-;6770:4;252:10;6770:4;6858:25;252:10;6875:7;6858:9;:25::i;:::-;6831:52;;6936:15;6916:16;:35;;6894:122;;;;-1:-1:-1;;;6894:122:0;;6677:2:1;6894:122:0;;;6659:21:1;6716:2;6696:18;;;6689:30;6755:34;6735:18;;;6728:62;-1:-1:-1;;;6806:18:1;;;6799:35;6851:19;;6894:122:0;6475:401:1;6894:122:0;7052:60;7061:5;7068:7;7096:15;7077:16;:34;7052:8;:60::i;8188:199::-;8293:4;8315:42;252:10;8339:9;8350:6;8315:9;:42::i;6458:184::-;-1:-1:-1;;;;;6607:18:0;;;6575:7;6607:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6458:184::o;1921:281::-;1676:6;;-1:-1:-1;;;;;1676:6:0;252:10;1676:22;1668:67;;;;-1:-1:-1;;;1668:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2024:22:0;::::1;2002:110;;;::::0;-1:-1:-1;;;2002:110:0;;7083:2:1;2002:110:0::1;::::0;::::1;7065:21:1::0;7122:2;7102:18;;;7095:30;7161:34;7141:18;;;7134:62;-1:-1:-1;;;7212:18:1;;;7205:36;7258:19;;2002:110:0::1;6881:402:1::0;2002:110:0::1;2149:6;::::0;;2128:38:::1;::::0;-1:-1:-1;;;;;2128:38:0;;::::1;::::0;2149:6;::::1;::::0;2128:38:::1;::::0;::::1;2177:6;:17:::0;;-1:-1:-1;;;;;;2177:17:0::1;-1:-1:-1::0;;;;;2177:17:0;;;::::1;::::0;;;::::1;::::0;;1921:281::o;7290:380::-;-1:-1:-1;;;;;7426:19:0;;7418:68;;;;-1:-1:-1;;;7418:68:0;;7490:2:1;7418:68:0;;;7472:21:1;7529:2;7509:18;;;7502:30;7568:34;7548:18;;;7541:62;-1:-1:-1;;;7619:18:1;;;7612:34;7663:19;;7418:68:0;7288:400:1;7418:68:0;-1:-1:-1;;;;;7505:21:0;;7497:68;;;;-1:-1:-1;;;7497:68:0;;7895:2:1;7497:68:0;;;7877:21:1;7934:2;7914:18;;;7907:30;7973:34;7953:18;;;7946:62;-1:-1:-1;;;8024:18:1;;;8017:32;8066:19;;7497:68:0;7693:398:1;7497:68:0;-1:-1:-1;;;;;7578:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7630:32;;2048:25:1;;;7630:32:0;;2021:18:1;7630:32:0;;;;;;;;7290:380;;;:::o;7678:502::-;7813:24;7840:25;7850:5;7857:7;7840:9;:25::i;:::-;7813:52;;-1:-1:-1;;7880:16:0;:37;7876:297;;7980:6;7960:16;:26;;7934:117;;;;-1:-1:-1;;;7934:117:0;;8298:2:1;7934:117:0;;;8280:21:1;8337:2;8317:18;;;8310:30;8376:31;8356:18;;;8349:59;8425:18;;7934:117:0;8096:353:1;7934:117:0;8095:51;8104:5;8111:7;8139:6;8120:16;:25;8095:8;:51::i;:::-;7802:378;7678:502;;;:::o;8395:706::-;1587:7;1614:6;-1:-1:-1;;;;;8536:15:0;;;1614:6;;8536:15;;:45;;-1:-1:-1;1587:7:0;1614:6;-1:-1:-1;;;;;8568:13:0;;;1614:6;;8568:13;8536:45;:83;;;-1:-1:-1;;;;;;8598:21:0;;8614:4;8598:21;8536:83;:119;;;-1:-1:-1;;;;;;8636:19:0;;8650:4;8636:19;8536:119;8518:338;;;-1:-1:-1;;;;;8700:15:0;;;;;;:9;:15;;;;;;:24;;8718:6;;8700:24;:::i;:::-;-1:-1:-1;;;;;8682:15:0;;;;;;;:9;:15;;;;;;:42;;;;8755:13;;;;;;;:22;;8771:6;;8755:22;:::i;:::-;-1:-1:-1;;;;;8739:13:0;;;;;;;:9;:13;;;;;;;:38;;;;8797:26;;;;;;;;;;8816:6;2048:25:1;;2036:2;2021:18;;1902:177;8518:338:0;8868:29;8880:4;8886:2;8890:6;8868:11;:29::i;:::-;8920:27;8930:4;8936:2;8940:6;8920:9;:27::i;:::-;8910:37;;;;:::i;:::-;-1:-1:-1;;;;;8978:15:0;;;;;;:9;:15;;;;;;8910:37;;-1:-1:-1;8978:24:0;;8910:37;;8978:24;:::i;9109:1089::-;9239:13;;;;9231:44;;;;-1:-1:-1;;;9231:44:0;;8789:2:1;9231:44:0;;;8771:21:1;8828:2;8808:18;;;8801:30;-1:-1:-1;;;8847:18:1;;;8840:48;8905:18;;9231:44:0;8587:342:1;9231:44:0;9292:14;;;;9288:903;;;-1:-1:-1;;;;;9347:15:0;;;;;;:9;:15;;;;;;;;:40;;;;-1:-1:-1;;;;;;9367:20:0;;;;;;:16;:20;;;;;;;;9366:21;9347:40;9343:837;;;9448:14;;9438:6;:24;;9408:127;;;;-1:-1:-1;;;9408:127:0;;9136:2:1;9408:127:0;;;9118:21:1;9175:2;9155:18;;;9148:30;9214:31;9194:18;;;9187:59;9263:18;;9408:127:0;8934:353:1;9408:127:0;9610:9;;-1:-1:-1;;;;;7256:18:0;;7229:7;7256:18;;;:9;:18;;;;;;9584:22;;:6;:22;:::i;:::-;:35;;9554:136;;;;-1:-1:-1;;;9554:136:0;;9494:2:1;9554:136:0;;;9476:21:1;9533:2;9513:18;;;9506:30;9572:29;9552:18;;;9545:57;9619:18;;9554:136:0;9292:351:1;9554:136:0;9109:1089;;;:::o;9343:837::-;-1:-1:-1;;;;;9750:13:0;;;;;;:9;:13;;;;;;;;:40;;;;-1:-1:-1;;;;;;9768:22:0;;;;;;:16;:22;;;;;;;;9767:23;9750:40;9746:434;;;9851:14;;9841:6;:24;;9811:149;;;;-1:-1:-1;;;9811:149:0;;9850:2:1;9811:149:0;;;9832:21:1;9889:2;9869:18;;;9862:30;9928:34;9908:18;;;9901:62;-1:-1:-1;;;9979:18:1;;;9972:49;10038:19;;9811:149:0;9648:415:1;9746:434:0;-1:-1:-1;;;;;9987:20:0;;;;;;:16;:20;;;;;;;;9982:198;;10084:9;;-1:-1:-1;;;;;7256:18:0;;7229:7;7256:18;;;:9;:18;;;;;;10058:22;;:6;:22;:::i;10206:1174::-;10319:7;10367:15;;10357:6;:25;;:53;;;;-1:-1:-1;10399:11:0;;;;;;;10357:53;:79;;;;-1:-1:-1;10428:8:0;;;;;;;10427:9;10357:79;:109;;;;-1:-1:-1;;;;;;10453:13:0;;;;;;:9;:13;;;;;;;;10357:109;:147;;;;-1:-1:-1;;;;;;10484:20:0;;;;;;:14;:20;;;;;;;;10483:21;10357:147;10339:275;;;10531:8;:15;;-1:-1:-1;;10531:15:0;;;;;10561:10;:8;:10::i;:::-;10586:8;:16;;-1:-1:-1;;10586:16:0;;;10339:275;-1:-1:-1;;;;;10659:20:0;;10626:11;10659:20;;;:14;:20;;;;;;;;10658:21;:44;;;;-1:-1:-1;;;;;;10684:18:0;;;;;;:14;:18;;;;;;;;10683:19;10658:44;10654:696;;;-1:-1:-1;;;;;10747:13:0;;;;;;:9;:13;;;;;;;;:33;;;;;10779:1;10764:12;;:16;10747:33;10743:276;;;4052:5;10817:12;;10808:6;:21;;;;:::i;:::-;10807:37;;;;:::i;:::-;10801:43;;10743:276;;;-1:-1:-1;;;;;10906:15:0;;;;;;:9;:15;;;;;;;;:34;;;;;10939:1;10925:11;;:15;10906:34;10902:117;;;4052:5;10977:11;;10968:6;:20;;;;:::i;:::-;10967:36;;;;:::i;:::-;10961:42;;10902:117;11039:7;;11035:221;;-1:-1:-1;;;;;11085:15:0;;;;;;:9;:15;;;;;;:21;;11103:3;;11085:21;:::i;:::-;-1:-1:-1;;;;;11067:15:0;;;;;;:9;:15;;;;;;:39;;;;11170:4;11152:24;;;;:30;;11179:3;;11152:30;:::i;:::-;11143:4;11125:24;;;;:9;:24;;;;;;;:57;;;;11206:34;;-1:-1:-1;;;;;11206:34:0;;;;;;;11236:3;2048:25:1;;2036:2;2021:18;;1902:177;11206:34:0;;;;;;;;11035:221;10654:696;;;11325:12;11334:3;11325:6;:12;:::i;:::-;-1:-1:-1;;;;;11306:15:0;;;;;;:9;:15;;;;;;:32;;;;:::i;:::-;-1:-1:-1;;;;;11288:15:0;;;;;;:9;:15;;;;;:50;10654:696;11369:3;10206:1174;-1:-1:-1;;;;10206:1174:0:o;11787:380::-;11870:4;11826:23;7256:18;;;:9;:18;;;;;;11911:16;;11893:34;;11889:101;;;-1:-1:-1;11962:16:0;;11889:101;12024:15;;12006;:33;12002:85;;;12054:33;12071:15;12054:16;:33::i;:::-;12108:18;;12100:59;;-1:-1:-1;;;;;12108:18:0;;;;12137:21;12100:59;;;;;12108:18;12100:59;12108:18;12100:59;12137:21;12108:18;12100:59;;;;;;;;;;;;;;;;;;;;;11815:352;11787:380::o;11388:391::-;11475:16;;;11489:1;11475:16;;;;;;;;11451:21;;11475:16;;;;;;;;;;-1:-1:-1;11475:16:0;11451:40;;11520:4;11502;11507:1;11502:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11502:23:0;;;:7;;;;;;;;;;:23;;;;11554:9;;:16;;;-1:-1:-1;;;11554:16:0;;;;:9;;;;;:14;;:16;;;;;11502:7;;11554:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11536:4;11541:1;11536:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11536:35:0;;;:7;;;;;;;;;:35;11584:9;;:187;;-1:-1:-1;;;11584:187:0;;:9;;;:60;;:187;;11659:8;;11584:9;;11698:4;;11725;;11745:15;;11584:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11440:339;11388:391;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:1;;858:42;;848:70;;914:1;911;904:12;848:70;793:131;:::o;929:315::-;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;1113:9;1100:23;1132:31;1157:5;1132:31;:::i;:::-;1182:5;1234:2;1219:18;;;;1206:32;;-1:-1:-1;;;929:315:1:o;1441:248::-;1509:6;1517;1570:2;1558:9;1549:7;1545:23;1541:32;1538:52;;;1586:1;1583;1576:12;1538:52;-1:-1:-1;;1609:23:1;;;1679:2;1664:18;;;1651:32;;-1:-1:-1;1441:248:1:o;2084:456::-;2161:6;2169;2177;2230:2;2218:9;2209:7;2205:23;2201:32;2198:52;;;2246:1;2243;2236:12;2198:52;2285:9;2272:23;2304:31;2329:5;2304:31;:::i;:::-;2354:5;-1:-1:-1;2411:2:1;2396:18;;2383:32;2424:33;2383:32;2424:33;:::i;:::-;2084:456;;2476:7;;-1:-1:-1;;;2530:2:1;2515:18;;;;2502:32;;2084:456::o;2734:247::-;2793:6;2846:2;2834:9;2825:7;2821:23;2817:32;2814:52;;;2862:1;2859;2852:12;2814:52;2901:9;2888:23;2920:31;2945:5;2920:31;:::i;:::-;2970:5;2734:247;-1:-1:-1;;;2734:247:1:o;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:380::-;3458:1;3454:12;;;;3501;;;3522:61;;3576:4;3568:6;3564:17;3554:27;;3522:61;3629:2;3621:6;3618:14;3598:18;3595:38;3592:161;;3675:10;3670:3;3666:20;3663:1;3656:31;3710:4;3707:1;3700:15;3738:4;3735:1;3728:15;3592:161;;3379:380;;;:::o;3764:356::-;3966:2;3948:21;;;3985:18;;;3978:30;4044:34;4039:2;4024:18;;4017:62;4111:2;4096:18;;3764:356::o;4725:127::-;4786:10;4781:3;4777:20;4774:1;4767:31;4817:4;4814:1;4807:15;4841:4;4838:1;4831:15;4857:125;4922:9;;;4943:10;;;4940:36;;;4956:18;;:::i;4987:251::-;5057:6;5110:2;5098:9;5089:7;5085:23;5081:32;5078:52;;;5126:1;5123;5116:12;5078:52;5158:9;5152:16;5177:31;5202:5;5177:31;:::i;6164:306::-;6252:6;6260;6268;6321:2;6309:9;6300:7;6296:23;6292:32;6289:52;;;6337:1;6334;6327:12;6289:52;6366:9;6360:16;6350:26;;6416:2;6405:9;6401:18;6395:25;6385:35;;6460:2;6449:9;6445:18;6439:25;6429:35;;6164:306;;;;;:::o;8454:128::-;8521:9;;;8542:11;;;8539:37;;;8556:18;;:::i;10068:168::-;10141:9;;;10172;;10189:15;;;10183:22;;10169:37;10159:71;;10210:18;;:::i;10241:217::-;10281:1;10307;10297:132;;10351:10;10346:3;10342:20;10339:1;10332:31;10386:4;10383:1;10376:15;10414:4;10411:1;10404:15;10297:132;-1:-1:-1;10443:9:1;;10241:217::o;10595:127::-;10656:10;10651:3;10647:20;10644:1;10637:31;10687:4;10684:1;10677:15;10711:4;10708:1;10701:15;10727:980;10989:4;11037:3;11026:9;11022:19;11068:6;11057:9;11050:25;11094:2;11132:6;11127:2;11116:9;11112:18;11105:34;11175:3;11170:2;11159:9;11155:18;11148:31;11199:6;11234;11228:13;11265:6;11257;11250:22;11303:3;11292:9;11288:19;11281:26;;11342:2;11334:6;11330:15;11316:29;;11363:1;11373:195;11387:6;11384:1;11381:13;11373:195;;;11452:13;;-1:-1:-1;;;;;11448:39:1;11436:52;;11543:15;;;;11508:12;;;;11484:1;11402:9;11373:195;;;-1:-1:-1;;;;;;;11624:32:1;;;;11619:2;11604:18;;11597:60;-1:-1:-1;;;11688:3:1;11673:19;11666:35;11585:3;10727:980;-1:-1:-1;;;10727:980:1:o

Swarm Source

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