ETH Price: $3,122.23 (-0.73%)

Token

LUCKY STAR (LUCKY)
 

Overview

Max Total Supply

2,000,000 LUCKY

Holders

286

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 LUCKY

Value
$0.00
0xcbe20c9bd64b068e3d26d4204ec28ddc8c764ee6
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:
LUCKY

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-29
*/

//SPDX-License-Identifier: MIT

//Telegram: https://t.me/LuckyStar_ETH
//X: https://x.com/LuckyStar_ETH

pragma solidity ^0.8.4;

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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 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 _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

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

abstract contract NoDelegateCall {
    /// @dev The original address of this contract
    address private immutable original;

    constructor() {
        // Immutables are computed in the init code of the contract, and then inlined into the deployed bytecode.
        // In other words, this variable won't change when it's checked at runtime.
        original = address(this);
    }

    /// @dev Private method is used instead of inlining into modifier because modifiers are copied into each method,
    ///     and the use of immutable means the address bytes are copied in every place the modifier is used.
    function checkNotDelegateCall() private view {
        require(address(this) == original);
    }

    /// @notice Prevents delegatecall into the modified method
    modifier noDelegateCall() {
        checkNotDelegateCall();
        _;
    }
}

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract LUCKY is ERC20, Ownable, NoDelegateCall {
    address constant SWAP_ROUTER_V2 = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    uint256 public projectStartBlockNum = 99999999999;

    uint256 public constant LOTTERY_VALUE = 0.02 ether;
    IUniswapSwapRouterV2 private constant router = IUniswapSwapRouterV2(SWAP_ROUTER_V2);

    uint256 public constant TOKEN_AMOUNT_PER_SEED = 1000 * 1e18;

    mapping(address => uint256) public SeedTimesOfAddress;
    uint256 public curSeedUnit = 0;
    uint256 public totalUnit = 1000;
    uint256 private blockSendingIndex = 1;
    mapping(uint256 => mapping(uint256 => address)) public txBlockUnitPostionByBlockNum;
    uint256 private lastLotteryBlockNum = 0;
    mapping(uint256 => uint256) public blockSentLength;
    mapping(address => uint256) public seedAddressByBlockNum;
    address[] public allSeedAddresses;
    bool public tradingEnabled = false;
    mapping(address => bool) private isV2Pair;

    address private uniswapV2air;
    mapping(address => bool) private _isExcluded;
    mapping(address => uint256) public lotteryTimesCertainAddress;

    uint256 public totalLotteryTimes=0;

    constructor() ERC20("LUCKY STAR", "LUCKY") {
        _mint(owner(), 2_000_000 * 1e18);
        _isExcluded[owner()] = true;
        _isExcluded[address(this)] = true;
        uniswapV2air = IUniswapV2Factory(router.factory()).createPair(
            address(this),
            router.WETH()
        );
        isV2Pair[address(uniswapV2air)] = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        if (!_isExcluded[from] && !_isExcluded[to]) {
            //used to add initial liquidity
            if (isV2Pair[from] || isV2Pair[to]) {
                require(tradingEnabled, "trading not started!!!");
            }
        }

        super._transfer(from, to, amount);
    }

    function allSeedAddressesLength() public view returns (uint256) {
        return allSeedAddresses.length;
    }

    function toggleLaunchTrade() external onlyOwner {
        require(!tradingEnabled, "trading has started!!!");
        tradingEnabled = true;
    }

    function toggleLiquidity() external onlyOwner {
        IERC20(address(this)).approve(address(router), totalSupply());

        require(address(this).balance > 0, " no balance to add liquidity!!!");

        router.addLiquidityETH{value: address(this).balance}(
            address(this),
            totalSupply() / 2,
            0,
            0,
            owner(),
            block.timestamp + 6000
        );
    }

    function toggleLottory() external onlyOwner {
        projectStartBlockNum = block.number + 2;
        lastLotteryBlockNum = block.number + 2;
    }

    function claim() external {
        require(
            tradingEnabled,
            "claiming is available only after trading started!!!"
        );
        require(
            SeedTimesOfAddress[msg.sender] > 0,
            "None to claim for this address!"
        );
        uint256 amountToClaimByAddress = SeedTimesOfAddress[msg.sender] * TOKEN_AMOUNT_PER_SEED;
        require(
            amountToClaimByAddress > balanceOf(address(this)),
            "not enough balance to claim!"
        );
        IERC20(address(this)).transfer(msg.sender, amountToClaimByAddress);
        SeedTimesOfAddress[msg.sender]=0;
    }

    receive() external payable noDelegateCall {
        require(block.number >= projectStartBlockNum, "not lauch yet!!!");
        require(tx.origin == msg.sender, "not support send from contract.");

        require(curSeedUnit+1 <= totalUnit, "no seed balance left!");

        if (block.number - lastLotteryBlockNum >= 1) {
            blockSentLength[lastLotteryBlockNum] = blockSendingIndex - 1;
            lottery(lastLotteryBlockNum, blockSendingIndex - 1);
            totalLotteryTimes+=blockSendingIndex - 1;
            blockSendingIndex = 1;
            lastLotteryBlockNum = block.number;
        }

        if (msg.value == LOTTERY_VALUE) {
            txBlockUnitPostionByBlockNum[block.number][blockSendingIndex] = msg.sender;
            lotteryTimesCertainAddress[msg.sender]++;
            blockSendingIndex++;
        }
    }

    function lottery(uint256 blockNum, uint256 length) internal {
        if (length == 0) {
            return;
        }
        if (length <= 5) {
            for (uint256 i = 1; i <= length; i++) {
                address ltAddress = txBlockUnitPostionByBlockNum[blockNum][i];
                if (ltAddress == address(0)) continue;

                if (seedAddressByBlockNum[ltAddress] != blockNum) {
                    if (curSeedUnit >= totalUnit) continue;

                    curSeedUnit++;
                    seedAddressByBlockNum[ltAddress] = blockNum;
                    SeedTimesOfAddress[ltAddress]++;

                    if (SeedTimesOfAddress[ltAddress] == 1) {
                        allSeedAddresses.push(ltAddress);
                    }
                }
            }
        } else {
            uint256 modFive = length % 5;
            uint256 interval = length / 5;

            uint256 factor = modFive == 0 ? interval : interval + modFive;

            for (uint256 i = factor; i <= length; i = i + interval) {
                address ltAddress = txBlockUnitPostionByBlockNum[blockNum][i];

                if (ltAddress == address(0)) continue;

                if (seedAddressByBlockNum[ltAddress] != blockNum) {
                    if (curSeedUnit >= totalUnit) continue;

                    curSeedUnit++;
                    seedAddressByBlockNum[ltAddress] = blockNum;
                    SeedTimesOfAddress[ltAddress]++;

                    if (SeedTimesOfAddress[ltAddress] == 1) {
                        allSeedAddresses.push(ltAddress);
                    }
                }
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LOTTERY_VALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"SeedTimesOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_AMOUNT_PER_SEED","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allSeedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allSeedAddressesLength","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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"blockSentLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"curSeedUnit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"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":"lotteryTimesCertainAddress","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":"projectStartBlockNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"seedAddressByBlockNum","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":"toggleLaunchTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleLottory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalLotteryTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","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":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"txBlockUnitPostionByBlockNum","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405264174876e7ff6006555f60088190556103e86009556001600a55600c8190556010805460ff1916905560155534801561003b575f80fd5b506040518060400160405280600a815260200169262aa1a5ac9029aa20a960b11b815250604051806040016040528060058152602001644c55434b5960d81b815250816003908161008c9190610474565b5060046100998282610474565b5050505f6100ab61031360201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350306080526101226101116005546001600160a01b031690565b6a01a784379d99db42000000610317565b600160135f6101396005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff19958616179055308152601383528190208054909316600117909255815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d9263c45a01559260048083019391928290030181865afa1580156101c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e6919061052e565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610245573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610269919061052e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156102b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d7919061052e565b601280546001600160a01b0319166001600160a01b039290921691821790555f908152601160205260409020805460ff19166001179055610580565b3390565b6001600160a01b0382166103715760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f828254610382919061055b565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061040557607f821691505b60208210810361042357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103d857805f5260205f20601f840160051c8101602085101561044e5750805b601f840160051c820191505b8181101561046d575f815560010161045a565b5050505050565b81516001600160401b0381111561048d5761048d6103dd565b6104a18161049b84546103f1565b84610429565b6020601f8211600181146104d3575f83156104bc5750848201515b5f19600385901b1c1916600184901b17845561046d565b5f84815260208120601f198516915b8281101561050257878501518255602094850194600190920191016104e2565b508482101561051f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f6020828403121561053e575f80fd5b81516001600160a01b0381168114610554575f80fd5b9392505050565b8082018082111561057a57634e487b7160e01b5f52601160045260245ffd5b92915050565b6080516119066105985f395f6107ca01526119065ff3fe6080604052600436106101de575f3560e01c806363b58233116100fd5780638da5cb5b11610092578063a9059cbb11610062578063a9059cbb1461074d578063c9d94f901461076c578063dd62ed3e14610781578063f2fde38b146107a0575f80fd5b80638da5cb5b146106e957806395d89b411461070657806397163a8a1461071a578063a457c2d71461072e575f80fd5b8063715018a6116100cd578063715018a6146106805780637d9a73cd14610694578063848c6a8a146106a957806389c08c70146106be575f80fd5b806363b58233146105d757806366a32351146105f6578063708bd2bc1461062157806370a082311461064c575f80fd5b80633534c0fe116101735780633fd390e5116101435780633fd390e5146105655780634ada218b146105905780634e71d92d146105a9578063603a4f38146105bd575f80fd5b80633534c0fe146104c75780633663049c146104db57806339509351146104ef5780633df486f41461050e575f80fd5b806323b872dd116101ae57806323b872dd1461045d5780632eb8ac3c1461047c5780632f0660d414610498578063313ce567146104ac575f80fd5b806306fdde03146103cd578063094580e4146103f7578063095ea7b31461041a57806318160ddd14610449575f80fd5b366103c9576101eb6107bf565b6006544310156102355760405162461bcd60e51b815260206004820152601060248201526f6e6f74206c617563682079657421212160801b60448201526064015b60405180910390fd5b3233146102845760405162461bcd60e51b815260206004820152601f60248201527f6e6f7420737570706f72742073656e642066726f6d20636f6e74726163742e00604482015260640161022c565b600954600854610295906001611650565b11156102db5760405162461bcd60e51b81526020600482015260156024820152746e6f20736565642062616c616e6365206c6566742160581b604482015260640161022c565b6001600c54436102eb9190611663565b1061035c576001600a546102ff9190611663565b600c80545f908152600d602052604090209190915554600a5461032e919061032990600190611663565b6107f5565b6001600a5461033d9190611663565b60155f82825461034d9190611650565b90915550506001600a5543600c555b66470de4df82000034036103c757435f908152600b60209081526040808320600a548452825280832080546001600160a01b031916339081179091558352601490915281208054916103ad83611676565b9091555050600a8054905f6103c183611676565b91905055505b005b5f80fd5b3480156103d8575f80fd5b506103e1610aa3565b6040516103ee919061168e565b60405180910390f35b348015610402575f80fd5b5061040c60155481565b6040519081526020016103ee565b348015610425575f80fd5b506104396104343660046116de565b610b33565b60405190151581526020016103ee565b348015610454575f80fd5b5060025461040c565b348015610468575f80fd5b50610439610477366004611706565b610b4c565b348015610487575f80fd5b5061040c683635c9adc5dea0000081565b3480156104a3575f80fd5b506103c7610b6f565b3480156104b7575f80fd5b50604051601281526020016103ee565b3480156104d2575f80fd5b50600f5461040c565b3480156104e6575f80fd5b506103c7610bb7565b3480156104fa575f80fd5b506104396105093660046116de565b610da2565b348015610519575f80fd5b5061054d610528366004611740565b600b60209081525f92835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b0390911681526020016103ee565b348015610570575f80fd5b5061040c61057f366004611760565b600d6020525f908152604090205481565b34801561059b575f80fd5b506010546104399060ff1681565b3480156105b4575f80fd5b506103c7610dc3565b3480156105c8575f80fd5b5061040c66470de4df82000081565b3480156105e2575f80fd5b5061054d6105f1366004611760565b610f87565b348015610601575f80fd5b5061040c610610366004611777565b600e6020525f908152604090205481565b34801561062c575f80fd5b5061040c61063b366004611777565b60076020525f908152604090205481565b348015610657575f80fd5b5061040c610666366004611777565b6001600160a01b03165f9081526020819052604090205490565b34801561068b575f80fd5b506103c7610faf565b34801561069f575f80fd5b5061040c60095481565b3480156106b4575f80fd5b5061040c60085481565b3480156106c9575f80fd5b5061040c6106d8366004611777565b60146020525f908152604090205481565b3480156106f4575f80fd5b506005546001600160a01b031661054d565b348015610711575f80fd5b506103e1611022565b348015610725575f80fd5b506103c7611031565b348015610739575f80fd5b506104396107483660046116de565b6110b6565b348015610758575f80fd5b506104396107673660046116de565b611130565b348015610777575f80fd5b5061040c60065481565b34801561078c575f80fd5b5061040c61079b366004611797565b61113d565b3480156107ab575f80fd5b506103c76107ba366004611777565b611167565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f3575f80fd5b565b805f03610800575050565b6005811161093a5760015b818111610935575f838152600b602090815260408083208484529091529020546001600160a01b03168061083f5750610923565b6001600160a01b0381165f908152600e60205260409020548414610921576009546008541061086e5750610923565b60088054905f61087d83611676565b90915550506001600160a01b0381165f908152600e60209081526040808320879055600790915281208054916108b283611676565b90915550506001600160a01b0381165f9081526007602052604090205460010361092157600f80546001810182555f919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319166001600160a01b0383161790555b505b8061092d81611676565b91505061080b565b505050565b5f6109466005836117dc565b90505f6109546005846117ef565b90505f821561096c576109678383611650565b61096e565b815b9050805b848111610a9b575f868152600b602090815260408083208484529091529020546001600160a01b0316806109a65750610a8a565b6001600160a01b0381165f908152600e60205260409020548714610a8857600954600854106109d55750610a8a565b60088054905f6109e483611676565b90915550506001600160a01b0381165f908152600e602090815260408083208a905560079091528120805491610a1983611676565b90915550506001600160a01b0381165f90815260076020526040902054600103610a8857600f80546001810182555f919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319166001600160a01b0383161790555b505b610a948382611650565b9050610972565b505050505050565b606060038054610ab290611802565b80601f0160208091040260200160405190810160405280929190818152602001828054610ade90611802565b8015610b295780601f10610b0057610100808354040283529160200191610b29565b820191905f5260205f20905b815481529060010190602001808311610b0c57829003601f168201915b5050505050905090565b5f33610b40818585611227565b60019150505b92915050565b5f33610b5985828561134a565b610b648585856113c2565b506001949350505050565b6005546001600160a01b03163314610b995760405162461bcd60e51b815260040161022c9061183a565b610ba4436002611650565b600655610bb2436002611650565b600c55565b6005546001600160a01b03163314610be15760405162461bcd60e51b815260040161022c9061183a565b3063095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d610c0560025490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610c4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c71919061186f565b505f4711610cc15760405162461bcd60e51b815260206004820152601f60248201527f206e6f2062616c616e636520746f20616464206c697175696469747921212100604482015260640161022c565b737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d71947306002610ce860025490565b610cf291906117ef565b5f80610d066005546001600160a01b031690565b610d1242611770611650565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015610d7d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610935919061188e565b5f33610b40818585610db4838361113d565b610dbe9190611650565b611227565b60105460ff16610e315760405162461bcd60e51b815260206004820152603360248201527f636c61696d696e6720697320617661696c61626c65206f6e6c792061667465726044820152722074726164696e67207374617274656421212160681b606482015260840161022c565b335f90815260076020526040902054610e8c5760405162461bcd60e51b815260206004820152601f60248201527f4e6f6e6520746f20636c61696d20666f72207468697320616464726573732100604482015260640161022c565b335f90815260076020526040812054610eaf90683635c9adc5dea00000906118b9565b305f908152602081905260409020549091508111610f0f5760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420656e6f7567682062616c616e636520746f20636c61696d2100000000604482015260640161022c565b60405163a9059cbb60e01b815233600482015260248101829052309063a9059cbb906044016020604051808303815f875af1158015610f50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f74919061186f565b5050335f90815260076020526040812055565b600f8181548110610f96575f80fd5b5f918252602090912001546001600160a01b0316905081565b6005546001600160a01b03163314610fd95760405162461bcd60e51b815260040161022c9061183a565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b606060048054610ab290611802565b6005546001600160a01b0316331461105b5760405162461bcd60e51b815260040161022c9061183a565b60105460ff16156110a75760405162461bcd60e51b815260206004820152601660248201527574726164696e6720686173207374617274656421212160501b604482015260640161022c565b6010805460ff19166001179055565b5f33816110c3828661113d565b9050838110156111235760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161022c565b610b648286868403611227565b5f33610b408185856113c2565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0381166111cc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161022c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166112895760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161022c565b6001600160a01b0382166112ea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161022c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611355848461113d565b90505f1981146113bc57818110156113af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161022c565b6113bc8484848403611227565b50505050565b6001600160a01b0383165f9081526013602052604090205460ff1615801561140257506001600160a01b0382165f9081526013602052604090205460ff16155b15611494576001600160a01b0383165f9081526011602052604090205460ff168061144457506001600160a01b0382165f9081526011602052604090205460ff165b156114945760105460ff166114945760405162461bcd60e51b815260206004820152601660248201527574726164696e67206e6f74207374617274656421212160501b604482015260640161022c565b6109358383836001600160a01b0383166114fe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161022c565b6001600160a01b0382166115605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161022c565b6001600160a01b0383165f90815260208190526040902054818110156115d75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161022c565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36113bc565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b4657610b4661163c565b81810381811115610b4657610b4661163c565b5f600182016116875761168761163c565b5060010190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146116d9575f80fd5b919050565b5f80604083850312156116ef575f80fd5b6116f8836116c3565b946020939093013593505050565b5f805f60608486031215611718575f80fd5b611721846116c3565b925061172f602085016116c3565b929592945050506040919091013590565b5f8060408385031215611751575f80fd5b50508035926020909101359150565b5f60208284031215611770575f80fd5b5035919050565b5f60208284031215611787575f80fd5b611790826116c3565b9392505050565b5f80604083850312156117a8575f80fd5b6117b1836116c3565b91506117bf602084016116c3565b90509250929050565b634e487b7160e01b5f52601260045260245ffd5b5f826117ea576117ea6117c8565b500690565b5f826117fd576117fd6117c8565b500490565b600181811c9082168061181657607f821691505b60208210810361183457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561187f575f80fd5b81518015158114611790575f80fd5b5f805f606084860312156118a0575f80fd5b5050815160208301516040909301519094929350919050565b8082028115828204841417610b4657610b4661163c56fea2646970667358221220d070b562c292648e7174551eb3a56ccc1f0308496fd654e57238be740c3f5e3e64736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101de575f3560e01c806363b58233116100fd5780638da5cb5b11610092578063a9059cbb11610062578063a9059cbb1461074d578063c9d94f901461076c578063dd62ed3e14610781578063f2fde38b146107a0575f80fd5b80638da5cb5b146106e957806395d89b411461070657806397163a8a1461071a578063a457c2d71461072e575f80fd5b8063715018a6116100cd578063715018a6146106805780637d9a73cd14610694578063848c6a8a146106a957806389c08c70146106be575f80fd5b806363b58233146105d757806366a32351146105f6578063708bd2bc1461062157806370a082311461064c575f80fd5b80633534c0fe116101735780633fd390e5116101435780633fd390e5146105655780634ada218b146105905780634e71d92d146105a9578063603a4f38146105bd575f80fd5b80633534c0fe146104c75780633663049c146104db57806339509351146104ef5780633df486f41461050e575f80fd5b806323b872dd116101ae57806323b872dd1461045d5780632eb8ac3c1461047c5780632f0660d414610498578063313ce567146104ac575f80fd5b806306fdde03146103cd578063094580e4146103f7578063095ea7b31461041a57806318160ddd14610449575f80fd5b366103c9576101eb6107bf565b6006544310156102355760405162461bcd60e51b815260206004820152601060248201526f6e6f74206c617563682079657421212160801b60448201526064015b60405180910390fd5b3233146102845760405162461bcd60e51b815260206004820152601f60248201527f6e6f7420737570706f72742073656e642066726f6d20636f6e74726163742e00604482015260640161022c565b600954600854610295906001611650565b11156102db5760405162461bcd60e51b81526020600482015260156024820152746e6f20736565642062616c616e6365206c6566742160581b604482015260640161022c565b6001600c54436102eb9190611663565b1061035c576001600a546102ff9190611663565b600c80545f908152600d602052604090209190915554600a5461032e919061032990600190611663565b6107f5565b6001600a5461033d9190611663565b60155f82825461034d9190611650565b90915550506001600a5543600c555b66470de4df82000034036103c757435f908152600b60209081526040808320600a548452825280832080546001600160a01b031916339081179091558352601490915281208054916103ad83611676565b9091555050600a8054905f6103c183611676565b91905055505b005b5f80fd5b3480156103d8575f80fd5b506103e1610aa3565b6040516103ee919061168e565b60405180910390f35b348015610402575f80fd5b5061040c60155481565b6040519081526020016103ee565b348015610425575f80fd5b506104396104343660046116de565b610b33565b60405190151581526020016103ee565b348015610454575f80fd5b5060025461040c565b348015610468575f80fd5b50610439610477366004611706565b610b4c565b348015610487575f80fd5b5061040c683635c9adc5dea0000081565b3480156104a3575f80fd5b506103c7610b6f565b3480156104b7575f80fd5b50604051601281526020016103ee565b3480156104d2575f80fd5b50600f5461040c565b3480156104e6575f80fd5b506103c7610bb7565b3480156104fa575f80fd5b506104396105093660046116de565b610da2565b348015610519575f80fd5b5061054d610528366004611740565b600b60209081525f92835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b0390911681526020016103ee565b348015610570575f80fd5b5061040c61057f366004611760565b600d6020525f908152604090205481565b34801561059b575f80fd5b506010546104399060ff1681565b3480156105b4575f80fd5b506103c7610dc3565b3480156105c8575f80fd5b5061040c66470de4df82000081565b3480156105e2575f80fd5b5061054d6105f1366004611760565b610f87565b348015610601575f80fd5b5061040c610610366004611777565b600e6020525f908152604090205481565b34801561062c575f80fd5b5061040c61063b366004611777565b60076020525f908152604090205481565b348015610657575f80fd5b5061040c610666366004611777565b6001600160a01b03165f9081526020819052604090205490565b34801561068b575f80fd5b506103c7610faf565b34801561069f575f80fd5b5061040c60095481565b3480156106b4575f80fd5b5061040c60085481565b3480156106c9575f80fd5b5061040c6106d8366004611777565b60146020525f908152604090205481565b3480156106f4575f80fd5b506005546001600160a01b031661054d565b348015610711575f80fd5b506103e1611022565b348015610725575f80fd5b506103c7611031565b348015610739575f80fd5b506104396107483660046116de565b6110b6565b348015610758575f80fd5b506104396107673660046116de565b611130565b348015610777575f80fd5b5061040c60065481565b34801561078c575f80fd5b5061040c61079b366004611797565b61113d565b3480156107ab575f80fd5b506103c76107ba366004611777565b611167565b306001600160a01b037f00000000000000000000000048d765a9e03333bc03c4f242219af0194144485216146107f3575f80fd5b565b805f03610800575050565b6005811161093a5760015b818111610935575f838152600b602090815260408083208484529091529020546001600160a01b03168061083f5750610923565b6001600160a01b0381165f908152600e60205260409020548414610921576009546008541061086e5750610923565b60088054905f61087d83611676565b90915550506001600160a01b0381165f908152600e60209081526040808320879055600790915281208054916108b283611676565b90915550506001600160a01b0381165f9081526007602052604090205460010361092157600f80546001810182555f919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319166001600160a01b0383161790555b505b8061092d81611676565b91505061080b565b505050565b5f6109466005836117dc565b90505f6109546005846117ef565b90505f821561096c576109678383611650565b61096e565b815b9050805b848111610a9b575f868152600b602090815260408083208484529091529020546001600160a01b0316806109a65750610a8a565b6001600160a01b0381165f908152600e60205260409020548714610a8857600954600854106109d55750610a8a565b60088054905f6109e483611676565b90915550506001600160a01b0381165f908152600e602090815260408083208a905560079091528120805491610a1983611676565b90915550506001600160a01b0381165f90815260076020526040902054600103610a8857600f80546001810182555f919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319166001600160a01b0383161790555b505b610a948382611650565b9050610972565b505050505050565b606060038054610ab290611802565b80601f0160208091040260200160405190810160405280929190818152602001828054610ade90611802565b8015610b295780601f10610b0057610100808354040283529160200191610b29565b820191905f5260205f20905b815481529060010190602001808311610b0c57829003601f168201915b5050505050905090565b5f33610b40818585611227565b60019150505b92915050565b5f33610b5985828561134a565b610b648585856113c2565b506001949350505050565b6005546001600160a01b03163314610b995760405162461bcd60e51b815260040161022c9061183a565b610ba4436002611650565b600655610bb2436002611650565b600c55565b6005546001600160a01b03163314610be15760405162461bcd60e51b815260040161022c9061183a565b3063095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d610c0560025490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610c4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c71919061186f565b505f4711610cc15760405162461bcd60e51b815260206004820152601f60248201527f206e6f2062616c616e636520746f20616464206c697175696469747921212100604482015260640161022c565b737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d71947306002610ce860025490565b610cf291906117ef565b5f80610d066005546001600160a01b031690565b610d1242611770611650565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015610d7d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610935919061188e565b5f33610b40818585610db4838361113d565b610dbe9190611650565b611227565b60105460ff16610e315760405162461bcd60e51b815260206004820152603360248201527f636c61696d696e6720697320617661696c61626c65206f6e6c792061667465726044820152722074726164696e67207374617274656421212160681b606482015260840161022c565b335f90815260076020526040902054610e8c5760405162461bcd60e51b815260206004820152601f60248201527f4e6f6e6520746f20636c61696d20666f72207468697320616464726573732100604482015260640161022c565b335f90815260076020526040812054610eaf90683635c9adc5dea00000906118b9565b305f908152602081905260409020549091508111610f0f5760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420656e6f7567682062616c616e636520746f20636c61696d2100000000604482015260640161022c565b60405163a9059cbb60e01b815233600482015260248101829052309063a9059cbb906044016020604051808303815f875af1158015610f50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f74919061186f565b5050335f90815260076020526040812055565b600f8181548110610f96575f80fd5b5f918252602090912001546001600160a01b0316905081565b6005546001600160a01b03163314610fd95760405162461bcd60e51b815260040161022c9061183a565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b606060048054610ab290611802565b6005546001600160a01b0316331461105b5760405162461bcd60e51b815260040161022c9061183a565b60105460ff16156110a75760405162461bcd60e51b815260206004820152601660248201527574726164696e6720686173207374617274656421212160501b604482015260640161022c565b6010805460ff19166001179055565b5f33816110c3828661113d565b9050838110156111235760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161022c565b610b648286868403611227565b5f33610b408185856113c2565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0381166111cc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161022c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166112895760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161022c565b6001600160a01b0382166112ea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161022c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611355848461113d565b90505f1981146113bc57818110156113af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161022c565b6113bc8484848403611227565b50505050565b6001600160a01b0383165f9081526013602052604090205460ff1615801561140257506001600160a01b0382165f9081526013602052604090205460ff16155b15611494576001600160a01b0383165f9081526011602052604090205460ff168061144457506001600160a01b0382165f9081526011602052604090205460ff165b156114945760105460ff166114945760405162461bcd60e51b815260206004820152601660248201527574726164696e67206e6f74207374617274656421212160501b604482015260640161022c565b6109358383836001600160a01b0383166114fe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161022c565b6001600160a01b0382166115605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161022c565b6001600160a01b0383165f90815260208190526040902054818110156115d75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161022c565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36113bc565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b4657610b4661163c565b81810381811115610b4657610b4661163c565b5f600182016116875761168761163c565b5060010190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146116d9575f80fd5b919050565b5f80604083850312156116ef575f80fd5b6116f8836116c3565b946020939093013593505050565b5f805f60608486031215611718575f80fd5b611721846116c3565b925061172f602085016116c3565b929592945050506040919091013590565b5f8060408385031215611751575f80fd5b50508035926020909101359150565b5f60208284031215611770575f80fd5b5035919050565b5f60208284031215611787575f80fd5b611790826116c3565b9392505050565b5f80604083850312156117a8575f80fd5b6117b1836116c3565b91506117bf602084016116c3565b90509250929050565b634e487b7160e01b5f52601260045260245ffd5b5f826117ea576117ea6117c8565b500690565b5f826117fd576117fd6117c8565b500490565b600181811c9082168061181657607f821691505b60208210810361183457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561187f575f80fd5b81518015158114611790575f80fd5b5f805f606084860312156118a0575f80fd5b5050815160208301516040909301519094929350919050565b8082028115828204841417610b4657610b4661163c56fea2646970667358221220d070b562c292648e7174551eb3a56ccc1f0308496fd654e57238be740c3f5e3e64736f6c634300081a0033

Deployed Bytecode Sourcemap

11500:6073:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9712:22;:20;:22::i;:::-;15086:20:::1;;15070:12;:36;;15062:65;;;::::0;-1:-1:-1;;;15062:65:0;;216:2:1;15062:65:0::1;::::0;::::1;198:21:1::0;255:2;235:18;;;228:30;-1:-1:-1;;;274:18:1;;;267:46;330:18;;15062:65:0::1;;;;;;;;;15146:9;15159:10;15146:23;15138:67;;;::::0;-1:-1:-1;;;15138:67:0;;561:2:1;15138:67:0::1;::::0;::::1;543:21:1::0;600:2;580:18;;;573:30;639:33;619:18;;;612:61;690:18;;15138:67:0::1;359:355:1::0;15138:67:0::1;15243:9;::::0;15226:11:::1;::::0;:13:::1;::::0;15238:1:::1;15226:13;:::i;:::-;:26;;15218:60;;;::::0;-1:-1:-1;;;15218:60:0;;1183:2:1;15218:60:0::1;::::0;::::1;1165:21:1::0;1222:2;1202:18;;;1195:30;-1:-1:-1;;;1241:18:1;;;1234:51;1302:18;;15218:60:0::1;981:345:1::0;15218:60:0::1;15333:1;15310:19;;15295:12;:34;;;;:::i;:::-;:39;15291:338;;15410:1;15390:17;;:21;;;;:::i;:::-;15367:19;::::0;;15351:36:::1;::::0;;;:15:::1;:36;::::0;;;;:60;;;;15434:19;15455:17:::1;::::0;15426:51:::1;::::0;15434:19;15455:21:::1;::::0;15475:1:::1;::::0;15455:21:::1;:::i;:::-;15426:7;:51::i;:::-;15531:1;15511:17;;:21;;;;:::i;:::-;15492:17;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15567:1:0::1;15547:17;:21:::0;15605:12:::1;15583:19;:34:::0;15291:338:::1;11737:10;15645:9;:26:::0;15641:222:::1;;15717:12;15688:42;::::0;;;:28:::1;:42;::::0;;;;;;;15731:17:::1;::::0;15688:61;;;;;;;:74;;-1:-1:-1;;;;;;15688:74:0::1;15752:10;15688:74:::0;;::::1;::::0;;;15777:38;;:26:::1;:38:::0;;;;;:40;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;15832:17:0::1;:19:::0;;;:17:::1;:19;::::0;::::1;:::i;:::-;;;;;;15641:222;11500:6073:::0;;;;;1984:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12636:34;;;;;;;;;;;;;;;;;;;2173:25:1;;;2161:2;2146:18;12636:34:0;2027:177:1;3057:242:0;;;;;;;;;;-1:-1:-1;3057:242:0;;;;;:::i;:::-;;:::i;:::-;;;2857:14:1;;2850:22;2832:41;;2820:2;2805:18;3057:242:0;2692:187:1;2305:108:0;;;;;;;;;;-1:-1:-1;2393:12:0;;2305:108;;3307:295;;;;;;;;;;-1:-1:-1;3307:295:0;;;;;:::i;:::-;;:::i;11846:59::-;;;;;;;;;;;;11894:11;11846:59;;14200:151;;;;;;;;;;;;;:::i;2204:93::-;;;;;;;;;;-1:-1:-1;2204:93:0;;2287:2;3405:36:1;;3393:2;3378:18;2204:93:0;3263:184:1;13479:113:0;;;;;;;;;;-1:-1:-1;13561:16:0;:23;13479:113;;13757:435;;;;;;;;;;;;;:::i;3610:270::-;;;;;;;;;;-1:-1:-1;3610:270:0;;;;;:::i;:::-;;:::i;12093:83::-;;;;;;;;;;-1:-1:-1;12093:83:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12093:83:0;;;;;;-1:-1:-1;;;;;3967:32:1;;;3949:51;;3937:2;3922:18;12093:83:0;3803:203:1;12229:50:0;;;;;;;;;;-1:-1:-1;12229:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;12389:34;;;;;;;;;;-1:-1:-1;12389:34:0;;;;;;;;14359:642;;;;;;;;;;;;;:::i;11697:50::-;;;;;;;;;;;;11737:10;11697:50;;12349:33;;;;;;;;;;-1:-1:-1;12349:33:0;;;;;:::i;:::-;;:::i;12286:56::-;;;;;;;;;;-1:-1:-1;12286:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;11914:53;;;;;;;;;;-1:-1:-1;11914:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;2421:177;;;;;;;;;;-1:-1:-1;2421:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;2572:18:0;2540:7;2572:18;;;;;;;;;;;;2421:177;10919:148;;;;;;;;;;;;;:::i;12011:31::-;;;;;;;;;;;;;;;;11974:30;;;;;;;;;;;;;;;;12566:61;;;;;;;;;;-1:-1:-1;12566:61:0;;;;;:::i;:::-;;;;;;;;;;;;;;10277:79;;;;;;;;;;-1:-1:-1;10342:6:0;;-1:-1:-1;;;;;10342:6:0;10277:79;;2092:104;;;;;;;;;;;;;:::i;13600:149::-;;;;;;;;;;;;;:::i;3888:505::-;;;;;;;;;;-1:-1:-1;3888:505:0;;;;;:::i;:::-;;:::i;2606:234::-;;;;;;;;;;-1:-1:-1;2606:234:0;;;;;:::i;:::-;;:::i;11639:49::-;;;;;;;;;;;;;;;;2848:201;;;;;;;;;;-1:-1:-1;2848:201:0;;;;;:::i;:::-;;:::i;11222:271::-;;;;;;;;;;-1:-1:-1;11222:271:0;;;;;:::i;:::-;;:::i;9505:98::-;9577:4;-1:-1:-1;;;;;9586:8:0;9569:25;;9561:34;;;;;;9505:98::o;15878:1692::-;15953:6;15963:1;15953:11;15949:50;;15878:1692;;:::o;15949:50::-;16023:1;16013:6;:11;16009:1554;;16058:1;16041:646;16066:6;16061:1;:11;16041:646;;16098:17;16118:38;;;:28;:38;;;;;;;;:41;;;;;;;;;-1:-1:-1;;;;;16118:41:0;;16178:37;;16207:8;;;16178:37;-1:-1:-1;;;;;16240:32:0;;;;;;:21;:32;;;;;;:44;;16236:436;;16328:9;;16313:11;;:24;16309:38;;16339:8;;;16309:38;16372:11;:13;;;:11;:13;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16408:32:0;;;;;;:21;:32;;;;;;;;:43;;;16474:18;:29;;;;;:31;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16534:29:0;;;;;;:18;:29;;;;;;16567:1;16534:34;16530:123;;16597:16;:32;;;;;;;-1:-1:-1;16597:32:0;;;;;;;;-1:-1:-1;;;;;;16597:32:0;-1:-1:-1;;;;;16597:32:0;;;;;16530:123;16079:608;16041:646;16074:3;;;;:::i;:::-;;;;16041:646;;;;15878:1692;;:::o;16009:1554::-;16719:15;16737:10;16746:1;16737:6;:10;:::i;:::-;16719:28;-1:-1:-1;16762:16:0;16781:10;16790:1;16781:6;:10;:::i;:::-;16762:29;-1:-1:-1;16808:14:0;16825:12;;:44;;16851:18;16862:7;16851:8;:18;:::i;:::-;16825:44;;;16840:8;16825:44;16808:61;-1:-1:-1;16808:61:0;16886:666;16916:6;16911:1;:11;16886:666;;16961:17;16981:38;;;:28;:38;;;;;;;;:41;;;;;;;;;-1:-1:-1;;;;;16981:41:0;;17043:37;;17072:8;;;17043:37;-1:-1:-1;;;;;17105:32:0;;;;;;:21;:32;;;;;;:44;;17101:436;;17193:9;;17178:11;;:24;17174:38;;17204:8;;;17174:38;17237:11;:13;;;:11;:13;;;:::i;:::-;;;;-1:-1:-1;;;;;;;17273:32:0;;;;;;:21;:32;;;;;;;;:43;;;17339:18;:29;;;;;:31;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;17399:29:0;;;;;;:18;:29;;;;;;17432:1;17399:34;17395:123;;17462:16;:32;;;;;;;-1:-1:-1;17462:32:0;;;;;;;;-1:-1:-1;;;;;;17462:32:0;-1:-1:-1;;;;;17462:32:0;;;;;17395:123;16942:610;16886:666;16928:12;16932:8;16928:1;:12;:::i;:::-;16924:16;;16886:666;;;;16704:859;;;15878:1692;;:::o;1984:100::-;2038:13;2071:5;2064:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:100;:::o;3057:242::-;3176:4;1444:10;3237:32;1444:10;3253:7;3262:6;3237:8;:32::i;:::-;3287:4;3280:11;;;3057:242;;;;;:::o;3307:295::-;3438:4;1444:10;3496:38;3512:4;1444:10;3527:6;3496:15;:38::i;:::-;3545:27;3555:4;3561:2;3565:6;3545:9;:27::i;:::-;-1:-1:-1;3590:4:0;;3307:295;-1:-1:-1;;;;3307:295:0:o;14200:151::-;10489:6;;-1:-1:-1;;;;;10489:6:0;1444:10;10489:22;10481:67;;;;-1:-1:-1;;;10481:67:0;;;;;;;:::i;:::-;14278:16:::1;:12;14293:1;14278:16;:::i;:::-;14255:20;:39:::0;14327:16:::1;:12;14342:1;14327:16;:::i;:::-;14305:19;:38:::0;14200:151::o;13757:435::-;10489:6;;-1:-1:-1;;;;;10489:6:0;1444:10;10489:22;10481:67;;;;-1:-1:-1;;;10481:67:0;;;;;;;:::i;:::-;13829:4:::1;13814:29;11590:42;13861:13;2393:12:::0;;;2305:108;13861:13:::1;13814:61;::::0;-1:-1:-1;;;;;;13814:61:0::1;::::0;;;;;;-1:-1:-1;;;;;6010:32:1;;;13814:61:0::1;::::0;::::1;5992:51:1::0;6059:18;;;6052:34;5965:18;;13814:61:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13920:1;13896:21;:25;13888:69;;;::::0;-1:-1:-1;;;13888:69:0;;6581:2:1;13888:69:0::1;::::0;::::1;6563:21:1::0;6620:2;6600:18;;;6593:30;6659:33;6639:18;;;6632:61;6710:18;;13888:69:0::1;6379:355:1::0;13888:69:0::1;11590:42;13970:22;14000:21;14045:4;14081:1;14065:13;2393:12:::0;;;2305:108;14065:13:::1;:17;;;;:::i;:::-;14097:1;14113::::0;14129:7:::1;10342:6:::0;;-1:-1:-1;;;;;10342:6:0;;10277:79;14129:7:::1;14151:22;:15;14169:4;14151:22;:::i;:::-;13970:214;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13970:214:0;;;-1:-1:-1;;;;;7060:32:1;;;13970:214:0::1;::::0;::::1;7042:51:1::0;7109:18;;;7102:34;;;;7152:18;;;7145:34;;;;7195:18;;;7188:34;;;;7259:32;;;7238:19;;;7231:61;7308:19;;;7301:35;;;;7014:19;;13970:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3610:270::-:0;3725:4;1444:10;3786:64;1444:10;3802:7;3839:10;3811:25;1444:10;3802:7;3811:9;:25::i;:::-;:38;;;;:::i;:::-;3786:8;:64::i;14359:642::-;14418:14;;;;14396:115;;;;-1:-1:-1;;;14396:115:0;;8010:2:1;14396:115:0;;;7992:21:1;8049:2;8029:18;;;8022:30;8088:34;8068:18;;;8061:62;-1:-1:-1;;;8139:18:1;;;8132:49;8198:19;;14396:115:0;7808:415:1;14396:115:0;14563:10;14577:1;14544:30;;;:18;:30;;;;;;14522:115;;;;-1:-1:-1;;;14522:115:0;;8430:2:1;14522:115:0;;;8412:21:1;8469:2;8449:18;;;8442:30;8508:33;8488:18;;;8481:61;8559:18;;14522:115:0;8228:355:1;14522:115:0;14700:10;14648:30;14681;;;:18;:30;;;;;;:54;;11894:11;;14681:54;:::i;:::-;14811:4;2540:7;2572:18;;;;;;;;;;;14648:87;;-1:-1:-1;14768:22:0;:49;14746:127;;;;-1:-1:-1;;;14746:127:0;;8963:2:1;14746:127:0;;;8945:21:1;9002:2;8982:18;;;8975:30;9041;9021:18;;;9014:58;9089:18;;14746:127:0;8761:352:1;14746:127:0;14884:66;;-1:-1:-1;;;14884:66:0;;14915:10;14884:66;;;5992:51:1;6059:18;;;6052:34;;;14899:4:0;;14884:30;;5965:18:1;;14884:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;14980:10:0;14992:1;14961:30;;;:18;:30;;;;;:32;14359:642::o;12349:33::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12349:33:0;;-1:-1:-1;12349:33:0;:::o;10919:148::-;10489:6;;-1:-1:-1;;;;;10489:6:0;1444:10;10489:22;10481:67;;;;-1:-1:-1;;;10481:67:0;;;;;;;:::i;:::-;11010:6:::1;::::0;10989:40:::1;::::0;11026:1:::1;::::0;-1:-1:-1;;;;;11010:6:0::1;::::0;10989:40:::1;::::0;11026:1;;10989:40:::1;11040:6;:19:::0;;-1:-1:-1;;;;;;11040:19:0::1;::::0;;10919:148::o;2092:104::-;2148:13;2181:7;2174:14;;;;;:::i;13600:149::-;10489:6;;-1:-1:-1;;;;;10489:6:0;1444:10;10489:22;10481:67;;;;-1:-1:-1;;;10481:67:0;;;;;;;:::i;:::-;13668:14:::1;::::0;::::1;;13667:15;13659:50;;;::::0;-1:-1:-1;;;13659:50:0;;9320:2:1;13659:50:0::1;::::0;::::1;9302:21:1::0;9359:2;9339:18;;;9332:30;-1:-1:-1;;;9378:18:1;;;9371:52;9440:18;;13659:50:0::1;9118:346:1::0;13659:50:0::1;13720:14;:21:::0;;-1:-1:-1;;13720:21:0::1;13737:4;13720:21;::::0;;13600:149::o;3888:505::-;4008:4;1444:10;4008:4;4096:25;1444:10;4113:7;4096:9;:25::i;:::-;4069:52;;4174:15;4154:16;:35;;4132:122;;;;-1:-1:-1;;;4132:122:0;;9671:2:1;4132:122:0;;;9653:21:1;9710:2;9690:18;;;9683:30;9749:34;9729:18;;;9722:62;-1:-1:-1;;;9800:18:1;;;9793:35;9845:19;;4132:122:0;9469:401:1;4132:122:0;4290:60;4299:5;4306:7;4334:15;4315:16;:34;4290:8;:60::i;2606:234::-;2721:4;1444:10;2782:28;1444:10;2799:2;2803:6;2782:9;:28::i;2848:201::-;-1:-1:-1;;;;;3014:18:0;;;2982:7;3014:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2848:201::o;11222:271::-;-1:-1:-1;;;;;11315:22:0;;11293:110;;;;-1:-1:-1;;;11293:110:0;;10077:2:1;11293:110:0;;;10059:21:1;10116:2;10096:18;;;10089:30;10155:34;10135:18;;;10128:62;-1:-1:-1;;;10206:18:1;;;10199:36;10252:19;;11293:110:0;9875:402:1;11293:110:0;11440:6;;11419:38;;-1:-1:-1;;;;;11419:38:0;;;;11440:6;;11419:38;;11440:6;;11419:38;11468:6;:17;;-1:-1:-1;;;;;;11468:17:0;-1:-1:-1;;;;;11468:17:0;;;;;;;;;;11222:271::o;6525:380::-;-1:-1:-1;;;;;6661:19:0;;6653:68;;;;-1:-1:-1;;;6653:68:0;;10484:2:1;6653:68:0;;;10466:21:1;10523:2;10503:18;;;10496:30;10562:34;10542:18;;;10535:62;-1:-1:-1;;;10613:18:1;;;10606:34;10657:19;;6653:68:0;10282:400:1;6653:68:0;-1:-1:-1;;;;;6740:21:0;;6732:68;;;;-1:-1:-1;;;6732:68:0;;10889:2:1;6732:68:0;;;10871:21:1;10928:2;10908:18;;;10901:30;10967:34;10947:18;;;10940:62;-1:-1:-1;;;11018:18:1;;;11011:32;11060:19;;6732:68:0;10687:398:1;6732:68:0;-1:-1:-1;;;;;6813:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6865:32;;2173:25:1;;;6865:32:0;;2146:18:1;6865:32:0;;;;;;;6525:380;;;:::o;6913:502::-;7048:24;7075:25;7085:5;7092:7;7075:9;:25::i;:::-;7048:52;;-1:-1:-1;;7115:16:0;:37;7111:297;;7215:6;7195:16;:26;;7169:117;;;;-1:-1:-1;;;7169:117:0;;11292:2:1;7169:117:0;;;11274:21:1;11331:2;11311:18;;;11304:30;11370:31;11350:18;;;11343:59;11419:18;;7169:117:0;11090:353:1;7169:117:0;7330:51;7339:5;7346:7;7374:6;7355:16;:25;7330:8;:51::i;:::-;7037:378;6913:502;;;:::o;13051:420::-;-1:-1:-1;;;;;13188:17:0;;;;;;:11;:17;;;;;;;;13187:18;:38;;;;-1:-1:-1;;;;;;13210:15:0;;;;;;:11;:15;;;;;;;;13209:16;13187:38;13183:235;;;-1:-1:-1;;;;;13291:14:0;;;;;;:8;:14;;;;;;;;;:30;;-1:-1:-1;;;;;;13309:12:0;;;;;;:8;:12;;;;;;;;13291:30;13287:120;;;13350:14;;;;13342:49;;;;-1:-1:-1;;;13342:49:0;;11650:2:1;13342:49:0;;;11632:21:1;11689:2;11669:18;;;11662:30;-1:-1:-1;;;11708:18:1;;;11701:52;11770:18;;13342:49:0;11448:346:1;13342:49:0;13430:33;13446:4;13452:2;13456:6;-1:-1:-1;;;;;4532:18:0;;4524:68;;;;-1:-1:-1;;;4524:68:0;;12001:2:1;4524:68:0;;;11983:21:1;12040:2;12020:18;;;12013:30;12079:34;12059:18;;;12052:62;-1:-1:-1;;;12130:18:1;;;12123:35;12175:19;;4524:68:0;11799:401:1;4524:68:0;-1:-1:-1;;;;;4611:16:0;;4603:64;;;;-1:-1:-1;;;4603:64:0;;12407:2:1;4603:64:0;;;12389:21:1;12446:2;12426:18;;;12419:30;12485:34;12465:18;;;12458:62;-1:-1:-1;;;12536:18:1;;;12529:33;12579:19;;4603:64:0;12205:399:1;4603:64:0;-1:-1:-1;;;;;4753:15:0;;4731:19;4753:15;;;;;;;;;;;4801:21;;;;4779:109;;;;-1:-1:-1;;;4779:109:0;;12811:2:1;4779:109:0;;;12793:21:1;12850:2;12830:18;;;12823:30;12889:34;12869:18;;;12862:62;-1:-1:-1;;;12940:18:1;;;12933:36;12986:19;;4779:109:0;12609:402:1;4779:109:0;-1:-1:-1;;;;;4924:15:0;;;:9;:15;;;;;;;;;;;4942:20;;;4924:38;;5142:13;;;;;;;;;;:23;;;;;;5194:26;;2173:25:1;;;5142:13:0;;5194:26;;2146:18:1;5194:26:0;;;;;;;5233:37;13757:435;719:127:1;780:10;775:3;771:20;768:1;761:31;811:4;808:1;801:15;835:4;832:1;825:15;851:125;916:9;;;937:10;;;934:36;;;950:18;;:::i;1331:128::-;1398:9;;;1419:11;;;1416:37;;;1433:18;;:::i;1464:135::-;1503:3;1524:17;;;1521:43;;1544:18;;:::i;:::-;-1:-1:-1;1591:1:1;1580:13;;1464:135::o;1604:418::-;1753:2;1742:9;1735:21;1716:4;1785:6;1779:13;1828:6;1823:2;1812:9;1808:18;1801:34;1887:6;1882:2;1874:6;1870:15;1865:2;1854:9;1850:18;1844:50;1943:1;1938:2;1929:6;1918:9;1914:22;1910:31;1903:42;2013:2;2006;2002:7;1997:2;1989:6;1985:15;1981:29;1970:9;1966:45;1962:54;1954:62;;;1604:418;;;;:::o;2209:173::-;2277:20;;-1:-1:-1;;;;;2326:31:1;;2316:42;;2306:70;;2372:1;2369;2362:12;2306:70;2209:173;;;:::o;2387:300::-;2455:6;2463;2516:2;2504:9;2495:7;2491:23;2487:32;2484:52;;;2532:1;2529;2522:12;2484:52;2555:29;2574:9;2555:29;:::i;:::-;2545:39;2653:2;2638:18;;;;2625:32;;-1:-1:-1;;;2387:300:1:o;2884:374::-;2961:6;2969;2977;3030:2;3018:9;3009:7;3005:23;3001:32;2998:52;;;3046:1;3043;3036:12;2998:52;3069:29;3088:9;3069:29;:::i;:::-;3059:39;;3117:38;3151:2;3140:9;3136:18;3117:38;:::i;:::-;2884:374;;3107:48;;-1:-1:-1;;;3224:2:1;3209:18;;;;3196:32;;2884:374::o;3452:346::-;3520:6;3528;3581:2;3569:9;3560:7;3556:23;3552:32;3549:52;;;3597:1;3594;3587:12;3549:52;-1:-1:-1;;3642:23:1;;;3762:2;3747:18;;;3734:32;;-1:-1:-1;3452:346:1:o;4011:226::-;4070:6;4123:2;4111:9;4102:7;4098:23;4094:32;4091:52;;;4139:1;4136;4129:12;4091:52;-1:-1:-1;4184:23:1;;4011:226;-1:-1:-1;4011:226:1:o;4242:186::-;4301:6;4354:2;4342:9;4333:7;4329:23;4325:32;4322:52;;;4370:1;4367;4360:12;4322:52;4393:29;4412:9;4393:29;:::i;:::-;4383:39;4242:186;-1:-1:-1;;;4242:186:1:o;4433:260::-;4501:6;4509;4562:2;4550:9;4541:7;4537:23;4533:32;4530:52;;;4578:1;4575;4568:12;4530:52;4601:29;4620:9;4601:29;:::i;:::-;4591:39;;4649:38;4683:2;4672:9;4668:18;4649:38;:::i;:::-;4639:48;;4433:260;;;;;:::o;4698:127::-;4759:10;4754:3;4750:20;4747:1;4740:31;4790:4;4787:1;4780:15;4814:4;4811:1;4804:15;4830:112;4862:1;4888;4878:35;;4893:18;;:::i;:::-;-1:-1:-1;4927:9:1;;4830:112::o;4947:120::-;4987:1;5013;5003:35;;5018:18;;:::i;:::-;-1:-1:-1;5052:9:1;;4947:120::o;5072:380::-;5151:1;5147:12;;;;5194;;;5215:61;;5269:4;5261:6;5257:17;5247:27;;5215:61;5322:2;5314:6;5311:14;5291:18;5288:38;5285:161;;5368:10;5363:3;5359:20;5356:1;5349:31;5403:4;5400:1;5393:15;5431:4;5428:1;5421:15;5285:161;;5072:380;;;:::o;5457:356::-;5659:2;5641:21;;;5678:18;;;5671:30;5737:34;5732:2;5717:18;;5710:62;5804:2;5789:18;;5457:356::o;6097:277::-;6164:6;6217:2;6205:9;6196:7;6192:23;6188:32;6185:52;;;6233:1;6230;6223:12;6185:52;6265:9;6259:16;6318:5;6311:13;6304:21;6297:5;6294:32;6284:60;;6340:1;6337;6330:12;7347:456;7435:6;7443;7451;7504:2;7492:9;7483:7;7479:23;7475:32;7472:52;;;7520:1;7517;7510:12;7472:52;-1:-1:-1;;7565:16:1;;7671:2;7656:18;;7650:25;7767:2;7752:18;;;7746:25;7565:16;;7650:25;;-1:-1:-1;7746:25:1;7347:456;-1:-1:-1;7347:456:1:o;8588:168::-;8661:9;;;8692;;8709:15;;;8703:22;;8689:37;8679:71;;8730:18;;:::i

Swarm Source

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