ETH Price: $3,208.33 (-1.43%)
Gas: 1 Gwei

Token

NONO (NONO)
 

Overview

Max Total Supply

21,000 NONO

Holders

204

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
967.659318729587730033 NONO

Value
$0.00
0x9bec7a0bafeead2eaaef71c7e0ee8eade0e6b33c
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:
NONO

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
    web:https://nono.finance
*/
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.16;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; }
    function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; }
}

library TransferHelper {
    function safeApprove(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::safeApprove: approve failed'); }
    function safeTransfer(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::safeTransfer: transfer failed'); }
    function safeTransferFrom(address token, address from, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::transferFrom: transferFrom failed'); }
    function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, 'TransferHelper::safeTransferETH: ETH transfer failed'); }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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 IRouter {
    function WETH() external view returns (address);
    function factory() external view returns (address);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable;
    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

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

interface IPair {
    function totalSupply() external view returns (uint256);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

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

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

abstract contract ERC20 is Context, IERC20 {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    uint8 private _decimals;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_, uint8 decimals_) { _name = name_; _symbol = symbol_; _decimals = decimals_; }
    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 _decimals; }
    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; _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 { _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; _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 {}
}

abstract contract TOKEN is ERC20, Ownable {
    using SafeMath for uint256;

    address public WETH;
    address public LP;

    address public routerAddr;
    address public marketingAddr;

    bool    public launched;
    bool    private _swapping;
    uint256 public swapThreshold = 500 * (10**18);

    mapping(address => bool) public _isExcludedFromFees;
    mapping(address => bool) public _isBlacklisted;

    uint256 private offset = 0;
    uint256 public round = 1;
    uint256 public prizePoolCondition = 1 ether; // First round, prize pool need to reach 1 ETH
    uint256 public prizePoolConditionIncrease = 0.5 ether; // 0.5 ETH more than the previous round
    uint256 public holdCondition = 100 * (10**18); // First round, need to hold 100 TTT
    address[] public waitingList;
    mapping(address => uint256) public waitingIdx; // waitingList index, first index is 1
    mapping(address => bool) public _hasOut; // Any out will not be allowed to participate in the lottery.

    address[] public _winners;

    modifier lockSwap() { _swapping = true; _; _swapping = false; }

    event Winning(address indexed to, uint256 amount);

    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_,
        uint256 totalSupply_,
        address routerAddr_,
        address marketingAddr_
    ) ERC20(name_, symbol_, decimals_) {
        WETH = IRouter(routerAddr_).WETH();
        routerAddr = routerAddr_;
        marketingAddr = marketingAddr_;

        _isExcludedFromFees[marketingAddr] = true;
        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[address(0xdead)] = true;

        _mint(msg.sender, totalSupply_);
        _approve(address(this), routerAddr, ~uint256(0));
    }

    receive() external payable {}

    function launch() external payable onlyOwner { 
        LP = IFactory(IRouter(routerAddr).factory()).getPair(address(this), WETH);
        launched = true;
    }

    function excludeFromFees(address[] memory accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }
    }

    function set_marketingAddr(address _marketingAddr) public onlyOwner {
        marketingAddr = _marketingAddr;
    }

    function set_swapThreshold(uint256 _swapThreshold) public onlyOwner {
        swapThreshold = _swapThreshold;
    }

    // For emergency
    function sweep(address token_, uint256 amount) public onlyOwner {
        if (token_ == address(0)) TransferHelper.safeTransferETH(owner(), amount == 0 ? address(this).balance : amount);
        else TransferHelper.safeTransfer(token_, owner(), amount == 0 ? IERC20(token_).balanceOf(address(this)) : amount);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0) && to != address(0) && amount != 0);
        require(from != to);
        require(_isBlacklisted[from] == false);

        if (_swapping || _isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            super._transfer(from, to, amount);
            return;
        }

        require(launched, "not launched");
        
        bool tokenToLP = to == LP;
        uint256 feeAmount = amount.mul(100).div(1000); // all transfer fee is 10%

        amount = amount.sub(feeAmount);
        updateWaiting(from, to, amount);

        super._transfer(from, address(this), feeAmount);

        uint256 contractTokenBalance = balanceOf(address(this));
        if (tokenToLP && contractTokenBalance > holdCondition) {
            uint256 preETH = address(this).balance;
            uint256 swapAmount = contractTokenBalance;
            if (swapThreshold > 0 && swapAmount > swapThreshold) swapAmount = swapThreshold;
            swapTokensForEth(swapAmount, address(this));
            uint256 ethAmount = address(this).balance - preETH;
            TransferHelper.safeTransferETH(marketingAddr, ethAmount / 4); // 25% to marketing, 75% to prize pool
            tryRound(); // attempt to draw the lottery
        }

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

    function swapTokensForEth(uint256 amount, address to) internal lockSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
        IRouter(routerAddr).swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            to,
            block.timestamp
        );
    }

    function _isContract(address adr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(adr)
        }
        return size > 0;
    }

    function updateWaiting(address from, address to, uint256 amount) internal {
        bool fromIsLP = from == LP; // buy or remove liquidity
        bool toIsLP = to == LP;     // sell or add liquidity
        uint256 idx;
        uint256 balance;

        if (fromIsLP && _isContract(to) == false && _hasOut[to] == false) {
            idx = waitingIdx[to];
            if (idx == 0) {
                // push to waitingList end
                waitingList.push(to);
                waitingIdx[to] = waitingList.length;
            } else {
                // move to waitingList end
                balance = balanceOf(to);
                if (balance + amount >= holdCondition && balance < holdCondition) {
                    waitingList.push(to);
                    waitingList[idx - 1] = address(0);
                    waitingIdx[to] = waitingList.length;
                }
            }
        }

        if (toIsLP && _isContract(from) == false) {
            idx = waitingIdx[from];
            if (idx != 0) {
                waitingList[idx - 1] = address(0);
                waitingIdx[from] = 0;
                _hasOut[from] = true;
            }
        }

        if (!toIsLP && !fromIsLP) {
            idx = waitingIdx[from];
            if (idx != 0) {
                waitingList[idx - 1] = address(0);
                waitingIdx[from] = 0;
                _hasOut[from] = true;
            }

            idx = waitingIdx[to];
            if (idx != 0) {
                // move to waitingList end
                balance = balanceOf(to);
                if (balance + amount >= holdCondition && balance < holdCondition) {
                    waitingList.push(to);
                    waitingList[idx - 1] = address(0);
                    waitingIdx[to] = waitingList.length;
                }
            }
        }
    }

    function tryRound() internal {
        if (address(this).balance < prizePoolCondition) return;

        // find the winner, and update offset
        address winner;
        for (uint256 i = offset; i < waitingList.length; i++) {
            // first blance more then holdCondition
            if (waitingList[i] != address(0) && balanceOf(waitingList[i]) >= holdCondition) {
                winner = waitingList[i];
                offset = i + 1; // update offset
                break;
            }
        }

        if (winner != address(0)) {
            emit Winning(winner, prizePoolCondition);
            _isBlacklisted[winner] = true; // winner will be blacklisted
            _winners.push(winner);
            TransferHelper.safeTransferETH(winner, prizePoolCondition);
            round += 1;
            holdCondition = holdCondition.mul(95).div(100); // 5% less than the previous round
            prizePoolCondition = prizePoolCondition.add(prizePoolConditionIncrease); // 0.5 ETH more than the previous round
        }
    }

    function getRank(address addr) public view returns (uint256 rank) {
        if (waitingIdx[addr] == 0) return 0;
        for (uint256 i = offset; i < waitingList.length; i++) {
            address _addr = waitingList[i];
            if (_addr == address(0)) continue;
            rank ++;
            if (_addr == addr) {
                return rank;
            }
        }
        return 0;
    }

    function getTopWaitingList(uint256 maxLen) public view returns (address[] memory, uint256[] memory) {
        uint256[] memory _balances = new uint256[](maxLen);
        address[] memory _waitingList = new address[](maxLen);
        uint256 idx = 0;
        for (uint256 i = offset; i < waitingList.length; i++) {
            address _addr = waitingList[i];
            if (_addr == address(0)) continue;
            _waitingList[idx] = _addr;
            _balances[idx] = balanceOf(_addr);
            idx ++;
            if (idx >= maxLen) break;
        }
        return (_waitingList, _balances);
    }

    function getWinners() public view returns (address[] memory) {
        return _winners;
    }
}

contract NONO is TOKEN {
    constructor()
    TOKEN(
        /* name */             "NONO",
        /* symbol */           "NONO",
        /* decimals */         18,
        /* totalSupply */      21000 * (10**18),
        /* router */           0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
        /* marketingAddr */    0x9b3B35EB260F903BDb717170ab1b6BcBC83B695C
    )
    {}
}

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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Winning","type":"event"},{"inputs":[],"name":"LP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_hasOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_winners","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getRank","outputs":[{"internalType":"uint256","name":"rank","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxLen","type":"uint256"}],"name":"getTopWaitingList","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWinners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holdCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"prizePoolCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prizePoolConditionIncrease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"round","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"routerAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddr","type":"address"}],"name":"set_marketingAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"set_swapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"address","name":"","type":"address"}],"name":"waitingIdx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"waitingList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052681b1ae4d6e2ef500000600b556000600e556001600f55670de0b6b3a76400006010556706f05b59d3b2000060115568056bc75e2d631000006012553480156200004d57600080fd5b50604051806040016040528060048152602001634e4f4e4f60e01b815250604051806040016040528060048152602001634e4f4e4f60e01b8152506012690472698b413b43200000737a250d5630b4cf539739df2c5dacb4c659f2488d739b3b35eb260f903bdb717170ab1b6bcbc83b695c8585858260049081620000d3919062000535565b506005620000e2838262000535565b506003805460ff191660ff92909216919091179055506200010c9050620001063390565b6200024b565b816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200014b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000171919062000601565b600780546001600160a01b03199081166001600160a01b0393841617909155600980548216858416179055600a805490911691831691821790556000908152600c6020526040808220805460ff199081166001908117909255338085528385208054831684179055308552928420805482168317905561dead9093527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c8054909316179091556200022390846200029d565b6009546200023f9030906001600160a01b031660001962000364565b5050505050506200065b565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002f95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b80600260008282546200030d919062000633565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316620003c85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620002f0565b6001600160a01b0382166200042b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620002f0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004bc57607f821691505b602082108103620004dd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200048c57600081815260208120601f850160051c810160208610156200050c5750805b601f850160051c820191505b818110156200052d5782815560010162000518565b505050505050565b81516001600160401b0381111562000551576200055162000491565b6200056981620005628454620004a7565b84620004e3565b602080601f831160018114620005a15760008415620005885750858301515b600019600386901b1c1916600185901b1785556200052d565b600085815260208120601f198616915b82811015620005d257888601518255948401946001909101908401620005b1565b5085821015620005f15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200061457600080fd5b81516001600160a01b03811681146200062c57600080fd5b9392505050565b808201808211156200065557634e487b7160e01b600052601160045260246000fd5b92915050565b6122e6806200066b6000396000f3fe6080604052600436106102295760003560e01c80638da5cb5b11610123578063c00e1047116100ab578063e7a20f3f1161006f578063e7a20f3f14610697578063efe796f9146106b7578063f2fde38b146106cd578063f6903411146106ed578063fa88c4421461070d57600080fd5b8063c00e1047146105ef578063dd0b26661461060f578063dd62ed3e14610625578063df15c37e14610645578063e0bf7fd11461066757600080fd5b8063a83be185116100f2578063a83be18514610559578063a9059cbb1461056f578063ad29ffde1461058f578063ad5c4648146105af578063b6fccf8a146105cf57600080fd5b80638da5cb5b146104d857806392fe0f65146104f657806395d89b4114610524578063a457c2d71461053957600080fd5b8063313ce567116101b15780636b90694c116101755780636b90694c1461042c5780636ea056a91461044c57806370a082311461046c578063715018a6146104a25780638091f3bf146104b757600080fd5b8063313ce5671461036557806339509351146103875780633ff42b92146103a7578063548c0ef4146103df57806360ce2fb0146103ff57600080fd5b8063146ca531116101f8578063146ca531146102ba57806316a906bf146102d057806318160ddd146103005780631cdd3be31461031557806323b872dd1461034557600080fd5b806301339c21146102355780630445b6671461023f57806306fdde0314610268578063095ea7b31461028a57600080fd5b3661023057005b600080fd5b61023d61072d565b005b34801561024b57600080fd5b50610255600b5481565b6040519081526020015b60405180910390f35b34801561027457600080fd5b5061027d610856565b60405161025f9190611e37565b34801561029657600080fd5b506102aa6102a5366004611e8f565b6108e8565b604051901515815260200161025f565b3480156102c657600080fd5b50610255600f5481565b3480156102dc57600080fd5b506102aa6102eb366004611ebb565b60156020526000908152604090205460ff1681565b34801561030c57600080fd5b50600254610255565b34801561032157600080fd5b506102aa610330366004611ebb565b600d6020526000908152604090205460ff1681565b34801561035157600080fd5b506102aa610360366004611ed8565b610902565b34801561037157600080fd5b5060035460405160ff909116815260200161025f565b34801561039357600080fd5b506102aa6103a2366004611e8f565b610926565b3480156103b357600080fd5b50600a546103c7906001600160a01b031681565b6040516001600160a01b03909116815260200161025f565b3480156103eb57600080fd5b506102556103fa366004611ebb565b610948565b34801561040b57600080fd5b5061025561041a366004611ebb565b60146020526000908152604090205481565b34801561043857600080fd5b506009546103c7906001600160a01b031681565b34801561045857600080fd5b5061023d610467366004611e8f565b6109fe565b34801561047857600080fd5b50610255610487366004611ebb565b6001600160a01b031660009081526020819052604090205490565b3480156104ae57600080fd5b5061023d610acf565b3480156104c357600080fd5b50600a546102aa90600160a01b900460ff1681565b3480156104e457600080fd5b506006546001600160a01b03166103c7565b34801561050257600080fd5b50610516610511366004611f19565b610ae3565b60405161025f929190611f76565b34801561053057600080fd5b5061027d610c67565b34801561054557600080fd5b506102aa610554366004611e8f565b610c76565b34801561056557600080fd5b5061025560105481565b34801561057b57600080fd5b506102aa61058a366004611e8f565b610cf6565b34801561059b57600080fd5b5061023d6105aa366004611ffc565b610d04565b3480156105bb57600080fd5b506007546103c7906001600160a01b031681565b3480156105db57600080fd5b506008546103c7906001600160a01b031681565b3480156105fb57600080fd5b5061023d61060a366004611ebb565b610d78565b34801561061b57600080fd5b5061025560115481565b34801561063157600080fd5b506102556106403660046120d3565b610da2565b34801561065157600080fd5b5061065a610dcd565b60405161025f919061210c565b34801561067357600080fd5b506102aa610682366004611ebb565b600c6020526000908152604090205460ff1681565b3480156106a357600080fd5b506103c76106b2366004611f19565b610e2e565b3480156106c357600080fd5b5061025560125481565b3480156106d957600080fd5b5061023d6106e8366004611ebb565b610e58565b3480156106f957600080fd5b506103c7610708366004611f19565b610ed1565b34801561071957600080fd5b5061023d610728366004611f19565b610ee1565b610735610eee565b600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ac919061211f565b60075460405163e6a4390560e01b81523060048201526001600160a01b03918216602482015291169063e6a4390590604401602060405180830381865afa1580156107fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081f919061211f565b600880546001600160a01b03929092166001600160a01b0319909216919091179055600a805460ff60a01b1916600160a01b179055565b6060600480546108659061213c565b80601f01602080910402602001604051908101604052809291908181526020018280546108919061213c565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b5050505050905090565b6000336108f6818585610f48565b60019150505b92915050565b60003361091085828561106c565b61091b8585856110e6565b506001949350505050565b6000336108f68185856109398383610da2565b610943919061218c565b610f48565b6001600160a01b038116600090815260146020526040812054810361096f57506000919050565b600e545b6013548110156109f5576000601382815481106109925761099261219f565b6000918252602090912001546001600160a01b03169050806109b457506109e3565b826109be816121b5565b935050836001600160a01b0316816001600160a01b0316036109e1575050919050565b505b806109ed816121b5565b915050610973565b50600092915050565b610a06610eee565b6001600160a01b038216610a4057610a3c610a296006546001600160a01b031690565b8215610a3557826112ed565b475b6112ed565b5050565b610a3c82610a566006546001600160a01b031690565b8315610a6257836113c7565b6040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca91906121ce565b6113c7565b610ad7610eee565b610ae160006114f8565b565b60608060008367ffffffffffffffff811115610b0157610b01611fcd565b604051908082528060200260200182016040528015610b2a578160200160208202803683370190505b50905060008467ffffffffffffffff811115610b4857610b48611fcd565b604051908082528060200260200182016040528015610b71578160200160208202803683370190505b50600e549091506000905b601354811015610c5a57600060138281548110610b9b57610b9b61219f565b6000918252602090912001546001600160a01b0316905080610bbd5750610c48565b80848481518110610bd057610bd061219f565b60200260200101906001600160a01b031690816001600160a01b031681525050610c0f816001600160a01b031660009081526020819052604090205490565b858481518110610c2157610c2161219f565b602090810291909101015282610c36816121b5565b935050878310610c465750610c5a565b505b80610c52816121b5565b915050610b7c565b5090959194509092505050565b6060600580546108659061213c565b60003381610c848286610da2565b905083811015610ce95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61091b8286868403610f48565b6000336108f68185856110e6565b610d0c610eee565b60005b8251811015610d735781600c6000858481518110610d2f57610d2f61219f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610d6b816121b5565b915050610d0f565b505050565b610d80610eee565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b606060168054806020026020016040519081016040528092919081815260200182805480156108de57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e07575050505050905090565b60138181548110610e3e57600080fd5b6000918252602090912001546001600160a01b0316905081565b610e60610eee565b6001600160a01b038116610ec55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ce0565b610ece816114f8565b50565b60168181548110610e3e57600080fd5b610ee9610eee565b600b55565b6006546001600160a01b03163314610ae15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ce0565b6001600160a01b038316610faa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ce0565b6001600160a01b03821661100b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ce0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110788484610da2565b905060001981146110e057818110156110d35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ce0565b6110e08484848403610f48565b50505050565b6001600160a01b0383161580159061110657506001600160a01b03821615155b801561111157508015155b61111a57600080fd5b816001600160a01b0316836001600160a01b03160361113857600080fd5b6001600160a01b0383166000908152600d602052604090205460ff161561115e57600080fd5b600a54600160a81b900460ff168061118e57506001600160a01b0383166000908152600c602052604090205460ff165b806111b157506001600160a01b0382166000908152600c602052604090205460ff165b156111c157610d7383838361154a565b600a54600160a01b900460ff166112095760405162461bcd60e51b815260206004820152600c60248201526b1b9bdd081b185d5b98da195960a21b6044820152606401610ce0565b6008546001600160a01b0383811691161460006112336103e861122d8560646116ee565b90611701565b905061123f838261170d565b925061124c858585611719565b61125785308361154a565b30600090815260208190526040902054828015611275575060125481115b156112da57600b5447908290158015906112905750600b5481115b1561129a5750600b545b6112a48130611b0a565b60006112b083476121e7565b600a549091506112ce906001600160a01b0316610a376004846121fa565b6112d6611c0d565b5050505b6112e586868661154a565b505050505050565b604080516000808252602082019092526001600160a01b038416908390604051611317919061221c565b60006040518083038185875af1925050503d8060008114611354576040519150601f19603f3d011682016040523d82523d6000602084013e611359565b606091505b5050905080610d735760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b6064820152608401610ce0565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611423919061221c565b6000604051808303816000865af19150503d8060008114611460576040519150601f19603f3d011682016040523d82523d6000602084013e611465565b606091505b509150915081801561148f57508051158061148f57508080602001905181019061148f9190612238565b6114f15760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b6064820152608401610ce0565b5050505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166115ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ce0565b6001600160a01b0382166116105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ce0565b6001600160a01b038316600090815260208190526040902054818110156116885760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ce0565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36110e0565b60006116fa8284612255565b9392505050565b60006116fa82846121fa565b60006116fa82846121e7565b6008546001600160a01b0390811684821681149184161460008083801561173f5750853b155b801561176457506001600160a01b03861660009081526015602052604090205460ff16155b156118c9576001600160a01b03861660009081526014602052604081205492508290036117ea57601380546001810182557f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b0319166001600160a01b0389169081179091559054600091825260146020526040909120556118c9565b506001600160a01b038516600090815260208190526040902054601254611811868361218c565b10158015611820575060125481105b156118c957601380546001808201835560008381527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09090920180546001600160a01b0319166001600160a01b038b1617905590919061187f90856121e7565b8154811061188f5761188f61219f565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905560135492891682526014905260409020555b8280156118d55750863b155b15611965576001600160a01b03871660009081526014602052604090205491508115611965576000601361190a6001856121e7565b8154811061191a5761191a61219f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559189168152601482526040808220829055601590925220805460ff191660011790555b82158015611971575083155b15611b01576001600160a01b03871660009081526014602052604090205491508115611a0157600060136119a66001856121e7565b815481106119b6576119b661219f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559189168152601482526040808220829055601590925220805460ff191660011790555b6001600160a01b03861660009081526014602052604090205491508115611b0157506001600160a01b038516600090815260208190526040902054601254611a49868361218c565b10158015611a58575060125481105b15611b0157601380546001808201835560008381527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09090920180546001600160a01b0319166001600160a01b038b16179055909190611ab790856121e7565b81548110611ac757611ac761219f565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905560135492891682526014905260409020555b50505050505050565b600a805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611b5257611b5261219f565b6001600160a01b039283166020918202929092010152600754825191169082906001908110611b8357611b8361219f565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b815291169063791ac94790611bc9908690600090869088904290600401612274565b600060405180830381600087803b158015611be357600080fd5b505af1158015611bf7573d6000803e3d6000fd5b5050600a805460ff60a81b191690555050505050565b601054471015611c1957565b600e546000905b601354811015611cfa5760006001600160a01b031660138281548110611c4857611c4861219f565b6000918252602090912001546001600160a01b031614801590611ca65750601254611ca360138381548110611c7f57611c7f61219f565b60009182526020808320909101546001600160a01b03168252819052604090205490565b10155b15611ce85760138181548110611cbe57611cbe61219f565b6000918252602090912001546001600160a01b03169150611ce081600161218c565b600e55611cfa565b80611cf2816121b5565b915050611c20565b506001600160a01b03811615610ece57806001600160a01b03167fec6267cf214b8cfdcff28b92dbd18a17376e877ffc27b94042e881021be878d4601054604051611d4791815260200190565b60405180910390a26001600160a01b0381166000818152600d60205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b0319169091179055601054611dc29082906112ed565b6001600f6000828254611dd5919061218c565b9091555050601254611def9060649061122d90605f6116ee565b601255601154601054611e0191611e07565b60105550565b60006116fa828461218c565b60005b83811015611e2e578181015183820152602001611e16565b50506000910152565b6020815260008251806020840152611e56816040850160208701611e13565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610ece57600080fd5b8035611e8a81611e6a565b919050565b60008060408385031215611ea257600080fd5b8235611ead81611e6a565b946020939093013593505050565b600060208284031215611ecd57600080fd5b81356116fa81611e6a565b600080600060608486031215611eed57600080fd5b8335611ef881611e6a565b92506020840135611f0881611e6a565b929592945050506040919091013590565b600060208284031215611f2b57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611f6b5781516001600160a01b031687529582019590820190600101611f46565b509495945050505050565b604081526000611f896040830185611f32565b82810360208481019190915284518083528582019282019060005b81811015611fc057845183529383019391830191600101611fa4565b5090979650505050505050565b634e487b7160e01b600052604160045260246000fd5b8015158114610ece57600080fd5b8035611e8a81611fe3565b6000806040838503121561200f57600080fd5b823567ffffffffffffffff8082111561202757600080fd5b818501915085601f83011261203b57600080fd5b813560208282111561204f5761204f611fcd565b8160051b604051601f19603f8301168101818110868211171561207457612074611fcd565b60405292835281830193508481018201928984111561209257600080fd5b948201945b838610156120b7576120a886611e7f565b85529482019493820193612097565b96506120c69050878201611ff1565b9450505050509250929050565b600080604083850312156120e657600080fd5b82356120f181611e6a565b9150602083013561210181611e6a565b809150509250929050565b6020815260006116fa6020830184611f32565b60006020828403121561213157600080fd5b81516116fa81611e6a565b600181811c9082168061215057607f821691505b60208210810361217057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108fc576108fc612176565b634e487b7160e01b600052603260045260246000fd5b6000600182016121c7576121c7612176565b5060010190565b6000602082840312156121e057600080fd5b5051919050565b818103818111156108fc576108fc612176565b60008261221757634e487b7160e01b600052601260045260246000fd5b500490565b6000825161222e818460208701611e13565b9190910192915050565b60006020828403121561224a57600080fd5b81516116fa81611fe3565b600081600019048311821515161561226f5761226f612176565b500290565b85815284602082015260a06040820152600061229360a0830186611f32565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220b39fb6d10323fb8151010b39a189ad6ae650b63c3e6d077a9a8d851a988987a164736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80638da5cb5b11610123578063c00e1047116100ab578063e7a20f3f1161006f578063e7a20f3f14610697578063efe796f9146106b7578063f2fde38b146106cd578063f6903411146106ed578063fa88c4421461070d57600080fd5b8063c00e1047146105ef578063dd0b26661461060f578063dd62ed3e14610625578063df15c37e14610645578063e0bf7fd11461066757600080fd5b8063a83be185116100f2578063a83be18514610559578063a9059cbb1461056f578063ad29ffde1461058f578063ad5c4648146105af578063b6fccf8a146105cf57600080fd5b80638da5cb5b146104d857806392fe0f65146104f657806395d89b4114610524578063a457c2d71461053957600080fd5b8063313ce567116101b15780636b90694c116101755780636b90694c1461042c5780636ea056a91461044c57806370a082311461046c578063715018a6146104a25780638091f3bf146104b757600080fd5b8063313ce5671461036557806339509351146103875780633ff42b92146103a7578063548c0ef4146103df57806360ce2fb0146103ff57600080fd5b8063146ca531116101f8578063146ca531146102ba57806316a906bf146102d057806318160ddd146103005780631cdd3be31461031557806323b872dd1461034557600080fd5b806301339c21146102355780630445b6671461023f57806306fdde0314610268578063095ea7b31461028a57600080fd5b3661023057005b600080fd5b61023d61072d565b005b34801561024b57600080fd5b50610255600b5481565b6040519081526020015b60405180910390f35b34801561027457600080fd5b5061027d610856565b60405161025f9190611e37565b34801561029657600080fd5b506102aa6102a5366004611e8f565b6108e8565b604051901515815260200161025f565b3480156102c657600080fd5b50610255600f5481565b3480156102dc57600080fd5b506102aa6102eb366004611ebb565b60156020526000908152604090205460ff1681565b34801561030c57600080fd5b50600254610255565b34801561032157600080fd5b506102aa610330366004611ebb565b600d6020526000908152604090205460ff1681565b34801561035157600080fd5b506102aa610360366004611ed8565b610902565b34801561037157600080fd5b5060035460405160ff909116815260200161025f565b34801561039357600080fd5b506102aa6103a2366004611e8f565b610926565b3480156103b357600080fd5b50600a546103c7906001600160a01b031681565b6040516001600160a01b03909116815260200161025f565b3480156103eb57600080fd5b506102556103fa366004611ebb565b610948565b34801561040b57600080fd5b5061025561041a366004611ebb565b60146020526000908152604090205481565b34801561043857600080fd5b506009546103c7906001600160a01b031681565b34801561045857600080fd5b5061023d610467366004611e8f565b6109fe565b34801561047857600080fd5b50610255610487366004611ebb565b6001600160a01b031660009081526020819052604090205490565b3480156104ae57600080fd5b5061023d610acf565b3480156104c357600080fd5b50600a546102aa90600160a01b900460ff1681565b3480156104e457600080fd5b506006546001600160a01b03166103c7565b34801561050257600080fd5b50610516610511366004611f19565b610ae3565b60405161025f929190611f76565b34801561053057600080fd5b5061027d610c67565b34801561054557600080fd5b506102aa610554366004611e8f565b610c76565b34801561056557600080fd5b5061025560105481565b34801561057b57600080fd5b506102aa61058a366004611e8f565b610cf6565b34801561059b57600080fd5b5061023d6105aa366004611ffc565b610d04565b3480156105bb57600080fd5b506007546103c7906001600160a01b031681565b3480156105db57600080fd5b506008546103c7906001600160a01b031681565b3480156105fb57600080fd5b5061023d61060a366004611ebb565b610d78565b34801561061b57600080fd5b5061025560115481565b34801561063157600080fd5b506102556106403660046120d3565b610da2565b34801561065157600080fd5b5061065a610dcd565b60405161025f919061210c565b34801561067357600080fd5b506102aa610682366004611ebb565b600c6020526000908152604090205460ff1681565b3480156106a357600080fd5b506103c76106b2366004611f19565b610e2e565b3480156106c357600080fd5b5061025560125481565b3480156106d957600080fd5b5061023d6106e8366004611ebb565b610e58565b3480156106f957600080fd5b506103c7610708366004611f19565b610ed1565b34801561071957600080fd5b5061023d610728366004611f19565b610ee1565b610735610eee565b600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ac919061211f565b60075460405163e6a4390560e01b81523060048201526001600160a01b03918216602482015291169063e6a4390590604401602060405180830381865afa1580156107fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081f919061211f565b600880546001600160a01b03929092166001600160a01b0319909216919091179055600a805460ff60a01b1916600160a01b179055565b6060600480546108659061213c565b80601f01602080910402602001604051908101604052809291908181526020018280546108919061213c565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b5050505050905090565b6000336108f6818585610f48565b60019150505b92915050565b60003361091085828561106c565b61091b8585856110e6565b506001949350505050565b6000336108f68185856109398383610da2565b610943919061218c565b610f48565b6001600160a01b038116600090815260146020526040812054810361096f57506000919050565b600e545b6013548110156109f5576000601382815481106109925761099261219f565b6000918252602090912001546001600160a01b03169050806109b457506109e3565b826109be816121b5565b935050836001600160a01b0316816001600160a01b0316036109e1575050919050565b505b806109ed816121b5565b915050610973565b50600092915050565b610a06610eee565b6001600160a01b038216610a4057610a3c610a296006546001600160a01b031690565b8215610a3557826112ed565b475b6112ed565b5050565b610a3c82610a566006546001600160a01b031690565b8315610a6257836113c7565b6040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca91906121ce565b6113c7565b610ad7610eee565b610ae160006114f8565b565b60608060008367ffffffffffffffff811115610b0157610b01611fcd565b604051908082528060200260200182016040528015610b2a578160200160208202803683370190505b50905060008467ffffffffffffffff811115610b4857610b48611fcd565b604051908082528060200260200182016040528015610b71578160200160208202803683370190505b50600e549091506000905b601354811015610c5a57600060138281548110610b9b57610b9b61219f565b6000918252602090912001546001600160a01b0316905080610bbd5750610c48565b80848481518110610bd057610bd061219f565b60200260200101906001600160a01b031690816001600160a01b031681525050610c0f816001600160a01b031660009081526020819052604090205490565b858481518110610c2157610c2161219f565b602090810291909101015282610c36816121b5565b935050878310610c465750610c5a565b505b80610c52816121b5565b915050610b7c565b5090959194509092505050565b6060600580546108659061213c565b60003381610c848286610da2565b905083811015610ce95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61091b8286868403610f48565b6000336108f68185856110e6565b610d0c610eee565b60005b8251811015610d735781600c6000858481518110610d2f57610d2f61219f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610d6b816121b5565b915050610d0f565b505050565b610d80610eee565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b606060168054806020026020016040519081016040528092919081815260200182805480156108de57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e07575050505050905090565b60138181548110610e3e57600080fd5b6000918252602090912001546001600160a01b0316905081565b610e60610eee565b6001600160a01b038116610ec55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ce0565b610ece816114f8565b50565b60168181548110610e3e57600080fd5b610ee9610eee565b600b55565b6006546001600160a01b03163314610ae15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ce0565b6001600160a01b038316610faa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ce0565b6001600160a01b03821661100b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ce0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110788484610da2565b905060001981146110e057818110156110d35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ce0565b6110e08484848403610f48565b50505050565b6001600160a01b0383161580159061110657506001600160a01b03821615155b801561111157508015155b61111a57600080fd5b816001600160a01b0316836001600160a01b03160361113857600080fd5b6001600160a01b0383166000908152600d602052604090205460ff161561115e57600080fd5b600a54600160a81b900460ff168061118e57506001600160a01b0383166000908152600c602052604090205460ff165b806111b157506001600160a01b0382166000908152600c602052604090205460ff165b156111c157610d7383838361154a565b600a54600160a01b900460ff166112095760405162461bcd60e51b815260206004820152600c60248201526b1b9bdd081b185d5b98da195960a21b6044820152606401610ce0565b6008546001600160a01b0383811691161460006112336103e861122d8560646116ee565b90611701565b905061123f838261170d565b925061124c858585611719565b61125785308361154a565b30600090815260208190526040902054828015611275575060125481115b156112da57600b5447908290158015906112905750600b5481115b1561129a5750600b545b6112a48130611b0a565b60006112b083476121e7565b600a549091506112ce906001600160a01b0316610a376004846121fa565b6112d6611c0d565b5050505b6112e586868661154a565b505050505050565b604080516000808252602082019092526001600160a01b038416908390604051611317919061221c565b60006040518083038185875af1925050503d8060008114611354576040519150601f19603f3d011682016040523d82523d6000602084013e611359565b606091505b5050905080610d735760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b6064820152608401610ce0565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611423919061221c565b6000604051808303816000865af19150503d8060008114611460576040519150601f19603f3d011682016040523d82523d6000602084013e611465565b606091505b509150915081801561148f57508051158061148f57508080602001905181019061148f9190612238565b6114f15760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b6064820152608401610ce0565b5050505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166115ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ce0565b6001600160a01b0382166116105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ce0565b6001600160a01b038316600090815260208190526040902054818110156116885760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ce0565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36110e0565b60006116fa8284612255565b9392505050565b60006116fa82846121fa565b60006116fa82846121e7565b6008546001600160a01b0390811684821681149184161460008083801561173f5750853b155b801561176457506001600160a01b03861660009081526015602052604090205460ff16155b156118c9576001600160a01b03861660009081526014602052604081205492508290036117ea57601380546001810182557f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b0319166001600160a01b0389169081179091559054600091825260146020526040909120556118c9565b506001600160a01b038516600090815260208190526040902054601254611811868361218c565b10158015611820575060125481105b156118c957601380546001808201835560008381527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09090920180546001600160a01b0319166001600160a01b038b1617905590919061187f90856121e7565b8154811061188f5761188f61219f565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905560135492891682526014905260409020555b8280156118d55750863b155b15611965576001600160a01b03871660009081526014602052604090205491508115611965576000601361190a6001856121e7565b8154811061191a5761191a61219f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559189168152601482526040808220829055601590925220805460ff191660011790555b82158015611971575083155b15611b01576001600160a01b03871660009081526014602052604090205491508115611a0157600060136119a66001856121e7565b815481106119b6576119b661219f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559189168152601482526040808220829055601590925220805460ff191660011790555b6001600160a01b03861660009081526014602052604090205491508115611b0157506001600160a01b038516600090815260208190526040902054601254611a49868361218c565b10158015611a58575060125481105b15611b0157601380546001808201835560008381527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09090920180546001600160a01b0319166001600160a01b038b16179055909190611ab790856121e7565b81548110611ac757611ac761219f565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905560135492891682526014905260409020555b50505050505050565b600a805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611b5257611b5261219f565b6001600160a01b039283166020918202929092010152600754825191169082906001908110611b8357611b8361219f565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b815291169063791ac94790611bc9908690600090869088904290600401612274565b600060405180830381600087803b158015611be357600080fd5b505af1158015611bf7573d6000803e3d6000fd5b5050600a805460ff60a81b191690555050505050565b601054471015611c1957565b600e546000905b601354811015611cfa5760006001600160a01b031660138281548110611c4857611c4861219f565b6000918252602090912001546001600160a01b031614801590611ca65750601254611ca360138381548110611c7f57611c7f61219f565b60009182526020808320909101546001600160a01b03168252819052604090205490565b10155b15611ce85760138181548110611cbe57611cbe61219f565b6000918252602090912001546001600160a01b03169150611ce081600161218c565b600e55611cfa565b80611cf2816121b5565b915050611c20565b506001600160a01b03811615610ece57806001600160a01b03167fec6267cf214b8cfdcff28b92dbd18a17376e877ffc27b94042e881021be878d4601054604051611d4791815260200190565b60405180910390a26001600160a01b0381166000818152600d60205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b0319169091179055601054611dc29082906112ed565b6001600f6000828254611dd5919061218c565b9091555050601254611def9060649061122d90605f6116ee565b601255601154601054611e0191611e07565b60105550565b60006116fa828461218c565b60005b83811015611e2e578181015183820152602001611e16565b50506000910152565b6020815260008251806020840152611e56816040850160208701611e13565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610ece57600080fd5b8035611e8a81611e6a565b919050565b60008060408385031215611ea257600080fd5b8235611ead81611e6a565b946020939093013593505050565b600060208284031215611ecd57600080fd5b81356116fa81611e6a565b600080600060608486031215611eed57600080fd5b8335611ef881611e6a565b92506020840135611f0881611e6a565b929592945050506040919091013590565b600060208284031215611f2b57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611f6b5781516001600160a01b031687529582019590820190600101611f46565b509495945050505050565b604081526000611f896040830185611f32565b82810360208481019190915284518083528582019282019060005b81811015611fc057845183529383019391830191600101611fa4565b5090979650505050505050565b634e487b7160e01b600052604160045260246000fd5b8015158114610ece57600080fd5b8035611e8a81611fe3565b6000806040838503121561200f57600080fd5b823567ffffffffffffffff8082111561202757600080fd5b818501915085601f83011261203b57600080fd5b813560208282111561204f5761204f611fcd565b8160051b604051601f19603f8301168101818110868211171561207457612074611fcd565b60405292835281830193508481018201928984111561209257600080fd5b948201945b838610156120b7576120a886611e7f565b85529482019493820193612097565b96506120c69050878201611ff1565b9450505050509250929050565b600080604083850312156120e657600080fd5b82356120f181611e6a565b9150602083013561210181611e6a565b809150509250929050565b6020815260006116fa6020830184611f32565b60006020828403121561213157600080fd5b81516116fa81611e6a565b600181811c9082168061215057607f821691505b60208210810361217057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108fc576108fc612176565b634e487b7160e01b600052603260045260246000fd5b6000600182016121c7576121c7612176565b5060010190565b6000602082840312156121e057600080fd5b5051919050565b818103818111156108fc576108fc612176565b60008261221757634e487b7160e01b600052601260045260246000fd5b500490565b6000825161222e818460208701611e13565b9190910192915050565b60006020828403121561224a57600080fd5b81516116fa81611fe3565b600081600019048311821515161561226f5761226f612176565b500290565b85815284602082015260a06040820152600061229360a0830186611f32565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220b39fb6d10323fb8151010b39a189ad6ae650b63c3e6d077a9a8d851a988987a164736f6c63430008100033

Deployed Bytecode Sourcemap

18636:390:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11507:164;;;:::i;:::-;;9871:45;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9871:45:0;;;;;;;;5250:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6059:169::-;;;;;;;;;;-1:-1:-1;6059:169:0;;;;;:::i;:::-;;:::i;:::-;;;1612:14:1;;1605:22;1587:41;;1575:2;1560:18;6059:169:0;1447:187:1;10071:24:0;;;;;;;;;;;;;;;;10514:39;;;;;;;;;;-1:-1:-1;10514:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5530:94;;;;;;;;;;-1:-1:-1;5609:12:0;;5530:94;;9983:46;;;;;;;;;;-1:-1:-1;9983:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6234:220;;;;;;;;;;-1:-1:-1;6234:220:0;;;;;:::i;:::-;;:::i;5438:86::-;;;;;;;;;;-1:-1:-1;5512:9:0;;5438:86;;5512:9;;;;2494:36:1;;2482:2;2467:18;5438:86:0;2352:184:1;6460:206:0;;;;;;;;;;-1:-1:-1;6460:206:0;;;;;:::i;:::-;;:::i;9772:28::-;;;;;;;;;;-1:-1:-1;9772:28:0;;;;-1:-1:-1;;;;;9772:28:0;;;;;;-1:-1:-1;;;;;2705:32:1;;;2687:51;;2675:2;2660:18;9772:28:0;2541:203:1;17490:409:0;;;;;;;;;;-1:-1:-1;17490:409:0;;;;;:::i;:::-;;:::i;10423:45::-;;;;;;;;;;-1:-1:-1;10423:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;9740:25;;;;;;;;;;-1:-1:-1;9740:25:0;;;;-1:-1:-1;;;;;9740:25:0;;;12177:318;;;;;;;;;;-1:-1:-1;12177:318:0;;;;;:::i;:::-;;:::i;5630:113::-;;;;;;;;;;-1:-1:-1;5630:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;5722:18:0;5704:7;5722:18;;;;;;;;;;;;5630:113;4367:89;;;;;;;;;;;;;:::i;9809:23::-;;;;;;;;;;-1:-1:-1;9809:23:0;;;;-1:-1:-1;;;9809:23:0;;;;;;4164:73;;;;;;;;;;-1:-1:-1;4228:6:0;;-1:-1:-1;;;;;4228:6:0;4164:73;;17907:619;;;;;;;;;;-1:-1:-1;17907:619:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;5342:90::-;;;;;;;;;;;;;:::i;6672:412::-;;;;;;;;;;-1:-1:-1;6672:412:0;;;;;:::i;:::-;;:::i;10102:43::-;;;;;;;;;;;;;;;;5749:161;;;;;;;;;;-1:-1:-1;5749:161:0;;;;;:::i;:::-;;:::i;11679:218::-;;;;;;;;;;-1:-1:-1;11679:218:0;;;;;:::i;:::-;;:::i;9688:19::-;;;;;;;;;;-1:-1:-1;9688:19:0;;;;-1:-1:-1;;;;;9688:19:0;;;9714:17;;;;;;;;;;-1:-1:-1;9714:17:0;;;;-1:-1:-1;;;;;9714:17:0;;;11905:117;;;;;;;;;;-1:-1:-1;11905:117:0;;;;;:::i;:::-;;:::i;10199:53::-;;;;;;;;;;;;;;;;5916:137;;;;;;;;;;-1:-1:-1;5916:137:0;;;;;:::i;:::-;;:::i;18534:95::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9925:51::-;;;;;;;;;;-1:-1:-1;9925:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10388:28;;;;;;;;;;-1:-1:-1;10388:28:0;;;;;:::i;:::-;;:::i;10299:45::-;;;;;;;;;;;;;;;;4462:178;;;;;;;;;;-1:-1:-1;4462:178:0;;;;;:::i;:::-;;:::i;10624:25::-;;;;;;;;;;-1:-1:-1;10624:25:0;;;;;:::i;:::-;;:::i;12030:117::-;;;;;;;;;;-1:-1:-1;12030:117:0;;;;;:::i;:::-;;:::i;11507:164::-;4139:13;:11;:13::i;:::-;11586:10:::1;;;;;;;;;-1:-1:-1::0;;;;;11586:10:0::1;-1:-1:-1::0;;;;;11578:27:0::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11632:4;::::0;11569:68:::1;::::0;-1:-1:-1;;;11569:68:0;;11625:4:::1;11569:68;::::0;::::1;6920:34:1::0;-1:-1:-1;;;;;11632:4:0;;::::1;6970:18:1::0;;;6963:43;11569:47:0;::::1;::::0;::::1;::::0;6855:18:1;;11569:68:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11564:2;:73:::0;;-1:-1:-1;;;;;11564:73:0;;;::::1;-1:-1:-1::0;;;;;;11564:73:0;;::::1;::::0;;;::::1;::::0;;11648:8:::1;:15:::0;;-1:-1:-1;;;;11648:15:0::1;-1:-1:-1::0;;;11648:15:0::1;::::0;;11507:164::o;5250:86::-;5304:13;5328:5;5321:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5250:86;:::o;6059:169::-;6142:4;3783:10;6180:32;3783:10;6196:7;6205:6;6180:8;:32::i;:::-;6221:4;6214:11;;;6059:169;;;;;:::o;6234:220::-;6331:4;3783:10;6371:38;6387:4;3783:10;6402:6;6371:15;:38::i;:::-;6411:27;6421:4;6427:2;6431:6;6411:9;:27::i;:::-;-1:-1:-1;6447:4:0;;6234:220;-1:-1:-1;;;;6234:220:0:o;6460:206::-;6548:4;3783:10;6586:64;3783:10;6602:7;6639:10;6611:25;3783:10;6602:7;6611:9;:25::i;:::-;:38;;;;:::i;:::-;6586:8;:64::i;17490:409::-;-1:-1:-1;;;;;17571:16:0;;17542:12;17571:16;;;:10;:16;;;;;;:21;;17567:35;;-1:-1:-1;17601:1:0;;17490:409;-1:-1:-1;17490:409:0:o;17567:35::-;17630:6;;17613:260;17642:11;:18;17638:22;;17613:260;;;17682:13;17698:11;17710:1;17698:14;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;17698:14:0;;-1:-1:-1;17698:14:0;17727:33;;17752:8;;;17727:33;17775:7;;;;:::i;:::-;;;;17810:4;-1:-1:-1;;;;;17801:13:0;:5;-1:-1:-1;;;;;17801:13:0;;17797:65;;17835:11;;17490:409;;;:::o;17797:65::-;17667:206;17613:260;17662:3;;;;:::i;:::-;;;;17613:260;;;-1:-1:-1;17890:1:0;;17490:409;-1:-1:-1;;17490:409:0:o;12177:318::-;4139:13;:11;:13::i;:::-;-1:-1:-1;;;;;12256:20:0;::::1;12252:235;;12278:85;12309:7;4228:6:::0;;-1:-1:-1;;;;;4228:6:0;;4164:73;12309:7:::1;12318:11:::0;;:44:::1;;12356:6;12278:30;:85::i;12318:44::-;12332:21;12318:44;12278:30;:85::i;:::-;12177:318:::0;;:::o;12252:235::-:1;12379:108;12407:6;12415:7;4228:6:::0;;-1:-1:-1;;;;;4228:6:0;;4164:73;12415:7:::1;12424:11:::0;;:62:::1;;12480:6;12379:27;:108::i;12424:62::-;12438:39;::::0;-1:-1:-1;;;12438:39:0;;12471:4:::1;12438:39;::::0;::::1;2687:51:1::0;-1:-1:-1;;;;;12438:24:0;::::1;::::0;::::1;::::0;2660:18:1;;12438:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12379:27;:108::i;4367:89::-:0;4139:13;:11;:13::i;:::-;4423:30:::1;4450:1;4423:18;:30::i;:::-;4367:89::o:0;17907:619::-;17971:16;17989;18018:26;18061:6;18047:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18047:21:0;;18018:50;;18079:29;18125:6;18111:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18111:21:0;-1:-1:-1;18186:6:0;;18079:53;;-1:-1:-1;18143:11:0;;18169:307;18198:11;:18;18194:22;;18169:307;;;18238:13;18254:11;18266:1;18254:14;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;18254:14:0;;-1:-1:-1;18254:14:0;18283:33;;18308:8;;;18283:33;18351:5;18331:12;18344:3;18331:17;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;18331:25:0;;;-1:-1:-1;;;;;18331:25:0;;;;;18388:16;18398:5;-1:-1:-1;;;;;5722:18:0;5704:7;5722:18;;;;;;;;;;;;5630:113;18388:16;18371:9;18381:3;18371:14;;;;;;;;:::i;:::-;;;;;;;;;;:33;18419:6;;;;:::i;:::-;;;;18451;18444:3;:13;18440:24;;18459:5;;;18440:24;18223:253;18169:307;18218:3;;;;:::i;:::-;;;;18169:307;;;-1:-1:-1;18494:12:0;;18508:9;;-1:-1:-1;17907:619:0;;-1:-1:-1;;;17907:619:0:o;5342:90::-;5398:13;5422:7;5415:14;;;;;:::i;6672:412::-;6765:4;3783:10;6765:4;6848:25;3783:10;6865:7;6848:9;:25::i;:::-;6821:52;;6912:15;6892:16;:35;;6884:85;;;;-1:-1:-1;;;6884:85:0;;8327:2:1;6884:85:0;;;8309:21:1;8366:2;8346:18;;;8339:30;8405:34;8385:18;;;8378:62;-1:-1:-1;;;8456:18:1;;;8449:35;8501:19;;6884:85:0;;;;;;;;;6992:60;7001:5;7008:7;7036:15;7017:16;:34;6992:8;:60::i;5749:161::-;5828:4;3783:10;5866:28;3783:10;5883:2;5887:6;5866:9;:28::i;11679:218::-;4139:13;:11;:13::i;:::-;11779:9:::1;11774:116;11798:8;:15;11794:1;:19;11774:116;;;11870:8;11835:19;:32;11855:8;11864:1;11855:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;11835:32:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;11835:32:0;:43;;-1:-1:-1;;11835:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11815:3;::::1;::::0;::::1;:::i;:::-;;;;11774:116;;;;11679:218:::0;;:::o;11905:117::-;4139:13;:11;:13::i;:::-;11984::::1;:30:::0;;-1:-1:-1;;;;;;11984:30:0::1;-1:-1:-1::0;;;;;11984:30:0;;;::::1;::::0;;;::::1;::::0;;11905:117::o;5916:137::-;-1:-1:-1;;;;;6023:18:0;;;6005:7;6023:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5916:137::o;18534:95::-;18577:16;18613:8;18606:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18606:15:0;;;;;;;;;;;;;;;;;;;;;;18534:95;:::o;10388:28::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10388:28:0;;-1:-1:-1;10388:28:0;:::o;4462:178::-;4139:13;:11;:13::i;:::-;-1:-1:-1;;;;;4542:22:0;::::1;4534:73;;;::::0;-1:-1:-1;;;4534:73:0;;8733:2:1;4534:73:0::1;::::0;::::1;8715:21:1::0;8772:2;8752:18;;;8745:30;8811:34;8791:18;;;8784:62;-1:-1:-1;;;8862:18:1;;;8855:36;8908:19;;4534:73:0::1;8531:402:1::0;4534:73:0::1;4609:28;4628:8;4609:18;:28::i;:::-;4462:178:::0;:::o;10624:25::-;;;;;;;;;;;;12030:117;4139:13;:11;:13::i;:::-;12109::::1;:30:::0;12030:117::o;4243:118::-;4228:6;;-1:-1:-1;;;;;4228:6:0;3783:10;4298:23;4290:68;;;;-1:-1:-1;;;4290:68:0;;9140:2:1;4290:68:0;;;9122:21:1;;;9159:18;;;9152:30;9218:34;9198:18;;;9191:62;9270:18;;4290:68:0;8938:356:1;8665:344:0;-1:-1:-1;;;;;8767:19:0;;8759:68;;;;-1:-1:-1;;;8759:68:0;;9501:2:1;8759:68:0;;;9483:21:1;9540:2;9520:18;;;9513:30;9579:34;9559:18;;;9552:62;-1:-1:-1;;;9630:18:1;;;9623:34;9674:19;;8759:68:0;9299:400:1;8759:68:0;-1:-1:-1;;;;;8846:21:0;;8838:68;;;;-1:-1:-1;;;8838:68:0;;9906:2:1;8838:68:0;;;9888:21:1;9945:2;9925:18;;;9918:30;9984:34;9964:18;;;9957:62;-1:-1:-1;;;10035:18:1;;;10028:32;10077:19;;8838:68:0;9704:398:1;8838:68:0;-1:-1:-1;;;;;8917:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8969:32;;160:25:1;;;8969:32:0;;133:18:1;8969:32:0;;;;;;;8665:344;;;:::o;9015:389::-;9116:24;9143:25;9153:5;9160:7;9143:9;:25::i;:::-;9116:52;;-1:-1:-1;;9183:16:0;:37;9179:218;;9265:6;9245:16;:26;;9237:68;;;;-1:-1:-1;;;9237:68:0;;10309:2:1;9237:68:0;;;10291:21:1;10348:2;10328:18;;;10321:30;10387:31;10367:18;;;10360:59;10436:18;;9237:68:0;10107:353:1;9237:68:0;9332:51;9341:5;9348:7;9376:6;9357:16;:25;9332:8;:51::i;:::-;9105:299;9015:389;;;:::o;12503:1410::-;-1:-1:-1;;;;;12601:18:0;;;;;;:38;;-1:-1:-1;;;;;;12623:16:0;;;;12601:38;:53;;;;-1:-1:-1;12643:11:0;;;12601:53;12593:62;;;;;;12682:2;-1:-1:-1;;;;;12674:10:0;:4;-1:-1:-1;;;;;12674:10:0;;12666:19;;;;;;-1:-1:-1;;;;;12704:20:0;;;;;;:14;:20;;;;;;;;:29;12696:38;;;;;;12751:9;;-1:-1:-1;;;12751:9:0;;;;;:38;;-1:-1:-1;;;;;;12764:25:0;;;;;;:19;:25;;;;;;;;12751:38;:65;;;-1:-1:-1;;;;;;12793:23:0;;;;;;:19;:23;;;;;;;;12751:65;12747:152;;;12833:33;12849:4;12855:2;12859:6;12833:15;:33::i;12747:152::-;12919:8;;-1:-1:-1;;;12919:8:0;;;;12911:33;;;;-1:-1:-1;;;12911:33:0;;10667:2:1;12911:33:0;;;10649:21:1;10706:2;10686:18;;;10679:30;-1:-1:-1;;;10725:18:1;;;10718:42;10777:18;;12911:33:0;10465:336:1;12911:33:0;12988:2;;-1:-1:-1;;;;;12982:8:0;;;12988:2;;12982:8;12965:14;13021:25;13041:4;13021:15;:6;13032:3;13021:10;:15::i;:::-;:19;;:25::i;:::-;13001:45;-1:-1:-1;13095:21:0;:6;13001:45;13095:10;:21::i;:::-;13086:30;;13127:31;13141:4;13147:2;13151:6;13127:13;:31::i;:::-;13171:47;13187:4;13201;13208:9;13171:15;:47::i;:::-;13280:4;13231:28;5722:18;;;;;;;;;;;13301:9;:49;;;;;13337:13;;13314:20;:36;13301:49;13297:563;;;13480:13;;13384:21;;13441:20;;13480:17;;;;:47;;;13514:13;;13501:10;:26;13480:47;13476:79;;;-1:-1:-1;13542:13:0;;13476:79;13570:43;13587:10;13607:4;13570:16;:43::i;:::-;13628:17;13648:30;13672:6;13648:21;:30;:::i;:::-;13724:13;;13628:50;;-1:-1:-1;13693:60:0;;-1:-1:-1;;;;;13724:13:0;13739;13751:1;13628:50;13739:13;:::i;13693:60::-;13807:10;:8;:10::i;:::-;13352:508;;;13297:563;13872:33;13888:4;13894:2;13898:6;13872:15;:33::i;:::-;12582:1331;;;12503:1410;;;:::o;1423:194::-;1527:12;;;1487;1527;;;;;;;;;-1:-1:-1;;;;;1505:7:0;;;1520:5;;1505:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1486:54;;;1550:7;1542:72;;;;-1:-1:-1;;;1542:72:0;;11655:2:1;1542:72:0;;;11637:21:1;11694:2;11674:18;;;11667:30;11733:34;11713:18;;;11706:62;-1:-1:-1;;;11784:18:1;;;11777:50;11844:19;;1542:72:0;11453:416:1;807:288:0;929:45;;;-1:-1:-1;;;;;12066:32:1;;;929:45:0;;;12048:51:1;12115:18;;;;12108:34;;;929:45:0;;;;;;;;;;12021:18:1;;;;929:45:0;;;;;;;-1:-1:-1;;;;;929:45:0;-1:-1:-1;;;929:45:0;;;918:57;;-1:-1:-1;;;;918:10:0;;;;:57;;929:45;918:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;882:93;;;;985:7;:57;;;;-1:-1:-1;997:11:0;;:16;;:44;;;1028:4;1017:24;;;;;;;;;;;;:::i;:::-;977:115;;;;-1:-1:-1;;;977:115:0;;12605:2:1;977:115:0;;;12587:21:1;12644:2;12624:18;;;12617:30;12683:34;12663:18;;;12656:62;-1:-1:-1;;;12734:18:1;;;12727:43;12787:19;;977:115:0;12403:409:1;977:115:0;880:215;;807:288;;;:::o;4646:159::-;4730:6;;;-1:-1:-1;;;;;4738:17:0;;;-1:-1:-1;;;;;;4738:17:0;;;;;;;4762:40;;4730:6;;;4738:17;4730:6;;4762:40;;4711:16;;4762:40;4709:96;4646:159;:::o;7090:598::-;-1:-1:-1;;;;;7187:18:0;;7179:68;;;;-1:-1:-1;;;7179:68:0;;13019:2:1;7179:68:0;;;13001:21:1;13058:2;13038:18;;;13031:30;13097:34;13077:18;;;13070:62;-1:-1:-1;;;13148:18:1;;;13141:35;13193:19;;7179:68:0;12817:401:1;7179:68:0;-1:-1:-1;;;;;7266:16:0;;7258:64;;;;-1:-1:-1;;;7258:64:0;;13425:2:1;7258:64:0;;;13407:21:1;13464:2;13444:18;;;13437:30;13503:34;13483:18;;;13476:62;-1:-1:-1;;;13554:18:1;;;13547:33;13597:19;;7258:64:0;13223:399:1;7258:64:0;-1:-1:-1;;;;;7404:15:0;;7382:19;7404:15;;;;;;;;;;;7438:21;;;;7430:72;;;;-1:-1:-1;;;7430:72:0;;13829:2:1;7430:72:0;;;13811:21:1;13868:2;13848:18;;;13841:30;13907:34;13887:18;;;13880:62;-1:-1:-1;;;13958:18:1;;;13951:36;14004:19;;7430:72:0;13627:402:1;7430:72:0;-1:-1:-1;;;;;7525:15:0;;;:9;:15;;;;;;;;;;;7543:20;;;7525:38;;7565:13;;;;;;;;;;:23;;;;;;7606:26;;160:25:1;;;7565:13:0;;7606:26;;133:18:1;7606:26:0;;;;;;;7643:37;11679:218;305:84;363:7;381:5;385:1;381;:5;:::i;:::-;374:12;305:84;-1:-1:-1;;;305:84:0:o;395:::-;453:7;471:5;475:1;471;:5;:::i;215:84::-;273:7;291:5;295:1;291;:5;:::i;14511:1897::-;14620:2;;-1:-1:-1;;;;;14620:2:0;;;14612:10;;;;;;14674:8;;;14596:13;;14612:10;14776:36;;;;-1:-1:-1;14443:16:0;;14487:8;14776:36;:60;;;;-1:-1:-1;;;;;;14816:11:0;;;;;;:7;:11;;;;;;;;:20;14776:60;14772:663;;;-1:-1:-1;;;;;14859:14:0;;;;;;:10;:14;;;;;;;-1:-1:-1;14892:8:0;;;14888:536;;14965:11;:20;;;;;;;;;;;-1:-1:-1;;;;;;14965:20:0;-1:-1:-1;;;;;14965:20:0;;;;;;;;15021:18;;-1:-1:-1;15004:14:0;;;:10;14965:20;15004:14;;;;;:35;14888:536;;;-1:-1:-1;;;;;;5722:18:0;;5704:7;5722:18;;;;;;;;;;;15190:13;;15170:16;15180:6;5722:18;15170:16;:::i;:::-;:33;;:60;;;;;15217:13;;15207:7;:23;15170:60;15166:243;;;15255:11;:20;;;;;;;;-1:-1:-1;15255:20:0;;;;;;;;;-1:-1:-1;;;;;;15255:20:0;-1:-1:-1;;;;;15255:20:0;;;;;-1:-1:-1;;15255:11:0;15310:7;;:3;:7;:::i;:::-;15298:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;:33;;-1:-1:-1;;;;;;15298:33:0;-1:-1:-1;;;;;15298:33:0;;;;;;15371:11;:18;15354:14;;;;;:10;:14;;;;;:35;15166:243;15451:6;:36;;;;-1:-1:-1;14443:16:0;;14487:8;15451:36;15447:265;;;-1:-1:-1;;;;;15510:16:0;;;;;;:10;:16;;;;;;;-1:-1:-1;15545:8:0;;15541:160;;15605:1;15574:11;15586:7;15592:1;15586:3;:7;:::i;:::-;15574:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;:33;;-1:-1:-1;;;;;;15574:33:0;-1:-1:-1;;;;;15574:33:0;;;;;;15626:16;;;;;:10;:16;;;;;;:20;;;15665:7;:13;;;;:20;;-1:-1:-1;;15665:20:0;-1:-1:-1;15665:20:0;;;15541:160;15729:6;15728:7;:20;;;;;15740:8;15739:9;15728:20;15724:677;;;-1:-1:-1;;;;;15771:16:0;;;;;;:10;:16;;;;;;;-1:-1:-1;15806:8:0;;15802:160;;15866:1;15835:11;15847:7;15853:1;15847:3;:7;:::i;:::-;15835:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;:33;;-1:-1:-1;;;;;;15835:33:0;-1:-1:-1;;;;;15835:33:0;;;;;;15887:16;;;;;:10;:16;;;;;;:20;;;15926:7;:13;;;;:20;;-1:-1:-1;;15926:20:0;-1:-1:-1;15926:20:0;;;15802:160;-1:-1:-1;;;;;15984:14:0;;;;;;:10;:14;;;;;;;-1:-1:-1;16017:8:0;;16013:377;;-1:-1:-1;;;;;;5722:18:0;;5704:7;5722:18;;;;;;;;;;;16156:13;;16136:16;16146:6;5722:18;16136:16;:::i;:::-;:33;;:60;;;;;16183:13;;16173:7;:23;16136:60;16132:243;;;16221:11;:20;;;;;;;;-1:-1:-1;16221:20:0;;;;;;;;;-1:-1:-1;;;;;;16221:20:0;-1:-1:-1;;;;;16221:20:0;;;;;-1:-1:-1;;16221:11:0;16276:7;;:3;:7;:::i;:::-;16264:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;:33;;-1:-1:-1;;;;;;16264:33:0;-1:-1:-1;;;;;16264:33:0;;;;;;16337:11;:18;16320:14;;;;;:10;:14;;;;;:35;16132:243;14585:1823;;;;14511:1897;;;:::o;13921:385::-;10680:9;:16;;-1:-1:-1;;;;10680:16:0;-1:-1:-1;;;10680:16:0;;;14028::::1;::::0;;14042:1:::1;14028:16:::0;;;;;::::1;::::0;;-1:-1:-1;;14028:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14028:16:0::1;14004:40;;14073:4;14055;14060:1;14055:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14055:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14099:4:::1;::::0;14089:7;;14099:4;::::1;::::0;14089;;14099;;14089:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;14089:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14122:10:::1;::::0;14114:184:::1;::::0;-1:-1:-1;;;14114:184:0;;14122:10;::::1;::::0;14114:70:::1;::::0;:184:::1;::::0;14199:6;;14122:10:::1;::::0;14236:4;;14255:2;;14272:15:::1;::::0;14114:184:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10701:9:0;:17;;-1:-1:-1;;;;10701:17:0;;;-1:-1:-1;;;;;13921:385:0:o;16416:1066::-;16484:18;;16460:21;:42;16456:55;;;16416:1066::o;16456:55::-;16612:6;;16570:14;;16595:345;16624:11;:18;16620:22;;16595:345;;;16747:1;-1:-1:-1;;;;;16721:28:0;:11;16733:1;16721:14;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;16721:14:0;:28;;;;:74;;;16782:13;;16753:25;16763:11;16775:1;16763:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16763:14:0;5722:18;;;;;;;;;;5630:113;16753:25;:42;;16721:74;16717:212;;;16825:11;16837:1;16825:14;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;16825:14:0;;-1:-1:-1;16867:5:0;:1;16825:14;16867:5;:::i;:::-;16858:6;:14;16908:5;;16717:212;16644:3;;;;:::i;:::-;;;;16595:345;;;-1:-1:-1;;;;;;16956:20:0;;;16952:523;;17006:6;-1:-1:-1;;;;;16998:35:0;;17014:18;;16998:35;;;;160:25:1;;148:2;133:18;;14:177;16998:35:0;;;;;;;;-1:-1:-1;;;;;17048:22:0;;;;;;:14;:22;;;;;:29;;-1:-1:-1;;17048:29:0;17073:4;17048:29;;;;;;17122:8;:21;;;;;;;;;;;;;;-1:-1:-1;;;;;;17122:21:0;;;;;;17197:18;;17158:58;;17063:6;;17158:30;:58::i;:::-;17240:1;17231:5;;:10;;;;;;;:::i;:::-;;;;-1:-1:-1;;17272:13:0;;:30;;17298:3;;17272:21;;17290:2;17272:17;:21::i;:30::-;17256:13;:46;17396:26;;17373:18;;:50;;:22;:50::i;:::-;17352:18;:71;16445:1037;16416:1066::o;125:84::-;183:7;201:5;205:1;201;:5;:::i;196:250:1:-;281:1;291:113;305:6;302:1;299:13;291:113;;;381:11;;;375:18;362:11;;;355:39;327:2;320:10;291:113;;;-1:-1:-1;;438:1:1;420:16;;413:27;196:250::o;451:396::-;600:2;589:9;582:21;563:4;632:6;626:13;675:6;670:2;659:9;655:18;648:34;691:79;763:6;758:2;747:9;743:18;738:2;730:6;726:15;691:79;:::i;:::-;831:2;810:15;-1:-1:-1;;806:29:1;791:45;;;;838:2;787:54;;451:396;-1:-1:-1;;451:396:1:o;852:131::-;-1:-1:-1;;;;;927:31:1;;917:42;;907:70;;973:1;970;963:12;988:134;1056:20;;1085:31;1056:20;1085:31;:::i;:::-;988:134;;;:::o;1127:315::-;1195:6;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:52;;;1272:1;1269;1262:12;1224:52;1311:9;1298:23;1330:31;1355:5;1330:31;:::i;:::-;1380:5;1432:2;1417:18;;;;1404:32;;-1:-1:-1;;;1127:315:1:o;1639:247::-;1698:6;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1806:9;1793:23;1825:31;1850:5;1825:31;:::i;1891:456::-;1968:6;1976;1984;2037:2;2025:9;2016:7;2012:23;2008:32;2005:52;;;2053:1;2050;2043:12;2005:52;2092:9;2079:23;2111:31;2136:5;2111:31;:::i;:::-;2161:5;-1:-1:-1;2218:2:1;2203:18;;2190:32;2231:33;2190:32;2231:33;:::i;:::-;1891:456;;2283:7;;-1:-1:-1;;;2337:2:1;2322:18;;;;2309:32;;1891:456::o;2749:180::-;2808:6;2861:2;2849:9;2840:7;2836:23;2832:32;2829:52;;;2877:1;2874;2867:12;2829:52;-1:-1:-1;2900:23:1;;2749:180;-1:-1:-1;2749:180:1:o;2934:461::-;2987:3;3025:5;3019:12;3052:6;3047:3;3040:19;3078:4;3107:2;3102:3;3098:12;3091:19;;3144:2;3137:5;3133:14;3165:1;3175:195;3189:6;3186:1;3183:13;3175:195;;;3254:13;;-1:-1:-1;;;;;3250:39:1;3238:52;;3310:12;;;;3345:15;;;;3286:1;3204:9;3175:195;;;-1:-1:-1;3386:3:1;;2934:461;-1:-1:-1;;;;;2934:461:1:o;3400:804::-;3657:2;3646:9;3639:21;3620:4;3683:56;3735:2;3724:9;3720:18;3712:6;3683:56;:::i;:::-;3796:22;;;3758:2;3776:18;;;3769:50;;;;3868:13;;3890:22;;;3966:15;;;;3928;;;3999:1;4009:169;4023:6;4020:1;4017:13;4009:169;;;4084:13;;4072:26;;4153:15;;;;4118:12;;;;4045:1;4038:9;4009:169;;;-1:-1:-1;4195:3:1;;3400:804;-1:-1:-1;;;;;;;3400:804:1:o;4209:127::-;4270:10;4265:3;4261:20;4258:1;4251:31;4301:4;4298:1;4291:15;4325:4;4322:1;4315:15;4341:118;4427:5;4420:13;4413:21;4406:5;4403:32;4393:60;;4449:1;4446;4439:12;4464:128;4529:20;;4558:28;4529:20;4558:28;:::i;4597:1191::-;4687:6;4695;4748:2;4736:9;4727:7;4723:23;4719:32;4716:52;;;4764:1;4761;4754:12;4716:52;4804:9;4791:23;4833:18;4874:2;4866:6;4863:14;4860:34;;;4890:1;4887;4880:12;4860:34;4928:6;4917:9;4913:22;4903:32;;4973:7;4966:4;4962:2;4958:13;4954:27;4944:55;;4995:1;4992;4985:12;4944:55;5031:2;5018:16;5053:4;5076:2;5072;5069:10;5066:36;;;5082:18;;:::i;:::-;5128:2;5125:1;5121:10;5160:2;5154:9;5223:2;5219:7;5214:2;5210;5206:11;5202:25;5194:6;5190:38;5278:6;5266:10;5263:22;5258:2;5246:10;5243:18;5240:46;5237:72;;;5289:18;;:::i;:::-;5325:2;5318:22;5375:18;;;5409:15;;;;-1:-1:-1;5451:11:1;;;5447:20;;;5479:19;;;5476:39;;;5511:1;5508;5501:12;5476:39;5535:11;;;;5555:148;5571:6;5566:3;5563:15;5555:148;;;5637:23;5656:3;5637:23;:::i;:::-;5625:36;;5588:12;;;;5681;;;;5555:148;;;5722:6;-1:-1:-1;5747:35:1;;-1:-1:-1;5763:18:1;;;5747:35;:::i;:::-;5737:45;;;;;;4597:1191;;;;;:::o;5793:388::-;5861:6;5869;5922:2;5910:9;5901:7;5897:23;5893:32;5890:52;;;5938:1;5935;5928:12;5890:52;5977:9;5964:23;5996:31;6021:5;5996:31;:::i;:::-;6046:5;-1:-1:-1;6103:2:1;6088:18;;6075:32;6116:33;6075:32;6116:33;:::i;:::-;6168:7;6158:17;;;5793:388;;;;;:::o;6186:261::-;6365:2;6354:9;6347:21;6328:4;6385:56;6437:2;6426:9;6422:18;6414:6;6385:56;:::i;6452:251::-;6522:6;6575:2;6563:9;6554:7;6550:23;6546:32;6543:52;;;6591:1;6588;6581:12;6543:52;6623:9;6617:16;6642:31;6667:5;6642:31;:::i;7017:380::-;7096:1;7092:12;;;;7139;;;7160:61;;7214:4;7206:6;7202:17;7192:27;;7160:61;7267:2;7259:6;7256:14;7236:18;7233:38;7230:161;;7313:10;7308:3;7304:20;7301:1;7294:31;7348:4;7345:1;7338:15;7376:4;7373:1;7366:15;7230:161;;7017:380;;;:::o;7402:127::-;7463:10;7458:3;7454:20;7451:1;7444:31;7494:4;7491:1;7484:15;7518:4;7515:1;7508:15;7534:125;7599:9;;;7620:10;;;7617:36;;;7633:18;;:::i;7664:127::-;7725:10;7720:3;7716:20;7713:1;7706:31;7756:4;7753:1;7746:15;7780:4;7777:1;7770:15;7796:135;7835:3;7856:17;;;7853:43;;7876:18;;:::i;:::-;-1:-1:-1;7923:1:1;7912:13;;7796:135::o;7936:184::-;8006:6;8059:2;8047:9;8038:7;8034:23;8030:32;8027:52;;;8075:1;8072;8065:12;8027:52;-1:-1:-1;8098:16:1;;7936:184;-1:-1:-1;7936:184:1:o;10806:128::-;10873:9;;;10894:11;;;10891:37;;;10908:18;;:::i;10939:217::-;10979:1;11005;10995:132;;11049:10;11044:3;11040:20;11037:1;11030:31;11084:4;11081:1;11074:15;11112:4;11109:1;11102:15;10995:132;-1:-1:-1;11141:9:1;;10939:217::o;11161:287::-;11290:3;11328:6;11322:13;11344:66;11403:6;11398:3;11391:4;11383:6;11379:17;11344:66;:::i;:::-;11426:16;;;;;11161:287;-1:-1:-1;;11161:287:1:o;12153:245::-;12220:6;12273:2;12261:9;12252:7;12248:23;12244:32;12241:52;;;12289:1;12286;12279:12;12241:52;12321:9;12315:16;12340:28;12362:5;12340:28;:::i;14034:168::-;14074:7;14140:1;14136;14132:6;14128:14;14125:1;14122:21;14117:1;14110:9;14103:17;14099:45;14096:71;;;14147:18;;:::i;:::-;-1:-1:-1;14187:9:1;;14034:168::o;14207:582::-;14506:6;14495:9;14488:25;14549:6;14544:2;14533:9;14529:18;14522:34;14592:3;14587:2;14576:9;14572:18;14565:31;14469:4;14613:57;14665:3;14654:9;14650:19;14642:6;14613:57;:::i;:::-;-1:-1:-1;;;;;14706:32:1;;;;14701:2;14686:18;;14679:60;-1:-1:-1;14770:3:1;14755:19;14748:35;14605:65;14207:582;-1:-1:-1;;;14207:582:1:o

Swarm Source

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