ETH Price: $3,505.58 (+2.48%)
Gas: 2 Gwei

Token

WAGYU (WAGYU)
 

Overview

Max Total Supply

1,000,000,000 WAGYU

Holders

368

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,258,429.925204852 WAGYU

Value
$0.00
0x53bc9dc4d99a6c77448dd612a1ca1f1f17ecc8fa
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:
WAGYU

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-29
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.23;

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called C.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event U.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

    uint256 internal _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 recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(msg.sender, recipient, 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)
    {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        if(currentAllowance != type(uint256).max) { 
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, msg.sender, currentAllowance - amount);
            }
        }
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            msg.sender,
            spender,
            _allowances[msg.sender][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(msg.sender, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, 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);
    }
}

contract Ownable {
    address private _owner;

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

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IPair {
    function sync() external;
}

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

    function WETH() external pure returns (address);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

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

contract WAGYU is ERC20, Ownable {
    IDexRouter public immutable dexRouter;
    address public immutable pair;

    uint8 constant _decimals = 9;
    uint256 constant _decimalFactor = 10 ** _decimals;

    bool private swapping;
    uint256 public swapTokensAtAmount;
    uint256 public swapTokensMax;

    address public immutable taxAddress;

    bool public swapEnabled = true;

    bool public limits = true;
    bool public delay = true;

    uint256 public tradingActiveTime;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => uint256) private _transferDelay;

    event ExcludeFromFees(address indexed account, bool isExcluded);

    constructor() ERC20("WAGYU", "WAGYU") payable {
        address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        dexRouter = IDexRouter(routerAddress);
        pair = IDexFactory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));

        _approve(msg.sender, routerAddress, type(uint256).max);
        _approve(address(this), routerAddress, type(uint256).max);

        uint256 totalSupply = 1_000_000_000 * _decimalFactor;

        swapTokensAtAmount = totalSupply / 10000;
        swapTokensMax = totalSupply / 200;

        taxAddress = 0x7dBBdD011eAEeBd7F60A6605505D4a3d94DD3238;

        excludeFromFees(msg.sender, true);
        excludeFromFees(taxAddress, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _balances[0x580558dbeD09eD100Cc5f921AA227c2144F2de47] = 15 * totalSupply / 1000;
        emit Transfer(address(0), 0x580558dbeD09eD100Cc5f921AA227c2144F2de47, 15 * totalSupply / 1000);
        _balances[0x3c3bfe870c59069B0c4BFbA9Ae225635CC6c3c87] = 15 * totalSupply / 1000;
        emit Transfer(address(0), 0x3c3bfe870c59069B0c4BFbA9Ae225635CC6c3c87, 15 * totalSupply / 1000);

        _balances[msg.sender] = (97 * totalSupply / 100);
        emit Transfer(address(0), msg.sender, (97 * totalSupply / 100));
        _totalSupply = totalSupply;
    }

    receive() external payable {}

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

    function setSwap(bool value) external onlyOwner {
        swapEnabled = value;
    }

    function getSellFees() public view returns (uint256) {
        uint256 elapsed = block.timestamp - tradingActiveTime;
        if(elapsed > 30 minutes) return 0;
        if(elapsed <= 10 minutes) return 30;
        if(elapsed <= 30 minutes) return 20;
        return 0;
    }

    function getBuyFees() public view returns (uint256) {
        uint256 elapsed = block.timestamp - tradingActiveTime;
        if(elapsed > 30 minutes) return 0;
        if(elapsed <= 10 minutes) return 20;
        if(elapsed <= 20 minutes) return 10;
        if(elapsed <= 30 minutes) return 2;
        return 0;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (tradingActiveTime == 0){
            require(amount > 0, "amount must be greater than 0");
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not open yet");
        }
        else if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            bool toPair = pair == to;
            if (limits) {
                if (!toPair && to != address(0xdead)) {
                    require(balanceOf(to) + amount <= totalSupply() / 50, "Wallet exceeds the max size.");
                }
                if (delay) {
                    if (to != address(dexRouter) && !toPair) {
                        require(_transferDelay[tx.origin] < block.number,"One transfer per block for launch.");
                        _transferDelay[tx.origin] = block.number;
                    }

                    if (from == pair && to != address(dexRouter) ) {
                        require(!isContract(to), "Contract trading restricted at launch");
                    }
                }
            }

            uint256 fees = 0;
            uint256 _sf = getSellFees();
            uint256 _bf = getBuyFees();

            if (toPair &&_sf > 0) {
                fees = (amount * _sf) / 100;
            }
            else if (_bf > 0 && pair == from) {
                
                fees = (amount * _bf) / 100;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
            
            if (swapEnabled && !swapping && toPair) {
                swapping = true;
                swapBack(amount);
                swapping = false;
            }

            amount -= fees;
        }

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

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

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

    function swapBack(uint256 amount) private {
        uint256 amountToSwap = balanceOf(address(this));
        if (amountToSwap < swapTokensAtAmount) return;
        if (amountToSwap > swapTokensMax) amountToSwap = swapTokensMax;
        if (amountToSwap > amount) amountToSwap = amount;
        if (amountToSwap == 0) return;

        bool success;
        swapTokensForEth(amountToSwap);

        (success, ) = taxAddress.call{value: address(this).balance}("");
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}("");
    }

    function addLP(address lpOwner, uint256 tokensToLP) external payable {
        require(_isExcludedFromFees[msg.sender]);
        require(tradingActiveTime == 0);
        super._transfer(msg.sender, address(this), tokensToLP * _decimalFactor);
        dexRouter.addLiquidityETH{value: address(this).balance}(address(this),tokensToLP * _decimalFactor,0,0,lpOwner,block.timestamp);
    }

    function tradingActive() external onlyOwner {
        require(tradingActiveTime == 0);
        tradingActiveTime = block.timestamp;
    }

    function disableLimits() external onlyOwner() {
        limits = false;
    }

    function updateSwapTokensAtAmount(uint256 newMinAmount, uint256 newMaxAmount) external onlyOwner {
        require(newMinAmount >= _totalSupply / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newMaxAmount <= _totalSupply / 100, "Swap amount cannot be higher than 1% total supply.");
        swapTokensAtAmount = newMinAmount;
        swapTokensMax = newMaxAmount;
    }

    function airdrop(address[] calldata wallets, uint256[] calldata amountsInTokens) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "Arrays must be the same length");
        for (uint256 i = 0; i < wallets.length; i++) {
            super._transfer(msg.sender, wallets[i], amountsInTokens[i] * _decimalFactor);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":[{"internalType":"address","name":"lpOwner","type":"address"},{"internalType":"uint256","name":"tokensToLP","type":"uint256"}],"name":"addLP","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFees","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":"limits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensMax","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":"taxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tradingActiveTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinAmount","type":"uint256"},{"internalType":"uint256","name":"newMaxAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6008805462ffffff191662010101179055600560e081815264574147595560d81b61010081905261016060405261012092835261014052906003620000458382620006e2565b506004620000548282620006e2565b5050600580546001600160a01b0319163390811790915560405190915081905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015620000f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001169190620007ae565b6001600160a01b031663c9c653966080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000163573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001899190620007ae565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af1158015620001d3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f99190620007ae565b6001600160a01b031660a0526200021333825f196200045f565b6200022130825f196200045f565b5f620002306009600a620008ec565b6200024090633b9aca00620008fc565b9050620002506127108262000916565b6006556200026060c88262000916565b600755737dbbdd011eaeebd7f60a6605505d4a3d94dd323860c052620002883360016200058a565b60c051620002989060016200058a565b620002a53060016200058a565b620002b461dead60016200058a565b6103e8620002c482600f620008fc565b620002d0919062000916565b73580558dbed09ed100cc5f921aa227c2144f2de475f81815260208190527f9b7e8ce4d3a9d507c82577465832d9a730f6ab602f3b8ff61747dc41999f45dd92909255905f80516020620028588339815191526103e86200033385600f620008fc565b6200033f919062000916565b60405190815260200160405180910390a36103e86200036082600f620008fc565b6200036c919062000916565b733c3bfe870c59069b0c4bfba9ae225635cc6c3c875f81815260208190527feb6d72613f47a41a514bb684a01b465f466ac2548e1a1c3f6e7507bcebb382c192909255905f80516020620028588339815191526103e8620003cf85600f620008fc565b620003db919062000916565b60405190815260200160405180910390a36064620003fb826061620008fc565b62000407919062000916565b335f81815260208190526040812092909255905f8051602062002858833981519152606462000438856061620008fc565b62000444919062000916565b60405190815260200160405180910390a36002555062000936565b6001600160a01b038316620004c75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200052a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004be565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314620005e65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620004be565b6001600160a01b0382165f818152600a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200066d57607f821691505b6020821081036200068c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620006dd57805f5260205f20601f840160051c81016020851015620006b95750805b601f840160051c820191505b81811015620006da575f8155600101620006c5565b50505b505050565b81516001600160401b03811115620006fe57620006fe62000644565b62000716816200070f845462000658565b8462000692565b602080601f8311600181146200074c575f8415620007345750858301515b5f19600386901b1c1916600185901b178555620007a6565b5f85815260208120601f198616915b828110156200077c578886015182559484019460019091019084016200075b565b50858210156200079a57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215620007bf575f80fd5b81516001600160a01b0381168114620007d6575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200083157815f1904821115620008155762000815620007dd565b808516156200082357918102915b93841c9390800290620007f6565b509250929050565b5f826200084957506001620008e6565b816200085757505f620008e6565b81600181146200087057600281146200087b576200089b565b6001915050620008e6565b60ff8411156200088f576200088f620007dd565b50506001821b620008e6565b5060208310610133831016604e8410600b8410161715620008c0575081810a620008e6565b620008cc8383620007f1565b805f1904821115620008e257620008e2620007dd565b0290505b92915050565b5f620007d660ff84168362000839565b8082028115828204841417620008e657620008e6620007dd565b5f826200093157634e487b7160e01b5f52601260045260245ffd5b500490565b60805160a05160c051611eb8620009a05f395f8181610524015261173801525f81816104d2015281816111d70152818161139001526114be01525f8181610262015281816109c9015281816112d1015281816113cc015281816117f301526118a90152611eb85ff3fe6080604052600436106101e9575f3560e01c80636ddd171311610108578063a9059cbb1161009d578063dd62ed3e1161006d578063dd62ed3e14610579578063e2f45605146105bd578063f2fde38b146105d2578063f5648a4f146105f1578063f928364c14610605575f80fd5b8063a9059cbb146104f4578063b7bda68f14610513578063bbc0c74214610546578063c02466681461055a575f80fd5b80638da5cb5b116100d85780638da5cb5b1461047157806395d89b411461048e578063a457c2d7146104a2578063a8aa1b31146104c1575f80fd5b80636ddd1713146103f257806370a082311461040b578063715018a61461043f578063860aefcf14610453575f80fd5b80632c0e22cc1161017e5780635031595f1161014e5780635031595f1461038b57806367243482146103a0578063685fc568146103bf5780636a42b8f8146103d3575f80fd5b80632c0e22cc1461031f578063313ce5671461033e578063395093511461035957806341a23daf14610378575f80fd5b8063095ea7b3116101b9578063095ea7b31461029c57806314f89c98146102cb57806318160ddd146102ec57806323b872dd14610300575f80fd5b806302075e55146101f45780630644e7571461021c57806306fdde03146102305780630758d92414610251575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b5061020960075481565b6040519081526020015b60405180910390f35b348015610227575f80fd5b50610209610619565b34801561023b575f80fd5b50610244610676565b6040516102139190611911565b34801561025c575f80fd5b506102847f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610213565b3480156102a7575f80fd5b506102bb6102b6366004611974565b610706565b6040519015158152602001610213565b3480156102d6575f80fd5b506102ea6102e53660046119b2565b61071c565b005b3480156102f7575f80fd5b50600254610209565b34801561030b575f80fd5b506102bb61031a3660046119d2565b610762565b34801561032a575f80fd5b506102ea610339366004611a10565b610812565b348015610349575f80fd5b5060405160098152602001610213565b348015610364575f80fd5b506102bb610373366004611974565b61093e565b6102ea610386366004611974565b610979565b348015610396575f80fd5b5061020960095481565b3480156103ab575f80fd5b506102ea6103ba366004611a78565b610a98565b3480156103ca575f80fd5b50610209610b7d565b3480156103de575f80fd5b506008546102bb9062010000900460ff1681565b3480156103fd575f80fd5b506008546102bb9060ff1681565b348015610416575f80fd5b50610209610425366004611adf565b6001600160a01b03165f9081526020819052604090205490565b34801561044a575f80fd5b506102ea610bc2565b34801561045e575f80fd5b506008546102bb90610100900460ff1681565b34801561047c575f80fd5b506005546001600160a01b0316610284565b348015610499575f80fd5b50610244610c35565b3480156104ad575f80fd5b506102bb6104bc366004611974565b610c44565b3480156104cc575f80fd5b506102847f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ff575f80fd5b506102bb61050e366004611974565b610cdc565b34801561051e575f80fd5b506102847f000000000000000000000000000000000000000000000000000000000000000081565b348015610551575f80fd5b506102ea610ce8565b348015610565575f80fd5b506102ea610574366004611afa565b610d24565b348015610584575f80fd5b50610209610593366004611b2d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156105c8575f80fd5b5061020960065481565b3480156105dd575f80fd5b506102ea6105ec366004611adf565b610dac565b3480156105fc575f80fd5b506102ea610e96565b348015610610575f80fd5b506102ea610f0a565b5f80600954426106299190611b78565b905061070881111561063c575f91505090565b610258811161064d57601491505090565b6104b0811161065e57600a91505090565b610708811161066f57600291505090565b5f91505090565b60606003805461068590611b8b565b80601f01602080910402602001604051908101604052809291908181526020018280546106b190611b8b565b80156106fc5780601f106106d3576101008083540402835291602001916106fc565b820191905f5260205f20905b8154815290600101906020018083116106df57829003601f168201915b5050505050905090565b5f610712338484610f41565b5060015b92915050565b6005546001600160a01b0316331461074f5760405162461bcd60e51b815260040161074690611bc3565b60405180910390fd5b6008805460ff1916911515919091179055565b5f61076e848484611064565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f19811461080757828110156107fa5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610746565b6108078533858403610f41565b506001949350505050565b6005546001600160a01b0316331461083c5760405162461bcd60e51b815260040161074690611bc3565b620186a060025461084d9190611bf8565b8210156108ba5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610746565b60646002546108c99190611bf8565b8111156109335760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101892903a37ba30b61039bab838363c9760711b6064820152608401610746565b600691909155600755565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610712918590610974908690611c17565b610f41565b335f908152600a602052604090205460ff16610993575f80fd5b6009541561099f575f80fd5b6109bf33306109b06009600a611d0a565b6109ba9085611d18565b61158c565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663f305d71947306109fc6009600a611d0a565b610a069086611d18565b6040516001600160e01b031960e086901b1681526001600160a01b03928316600482015260248101919091525f60448201819052606482015290861660848201524260a482015260c40160606040518083038185885af1158015610a6c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a919190611d2f565b5050505050565b6005546001600160a01b03163314610ac25760405162461bcd60e51b815260040161074690611bc3565b828114610b115760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610746565b5f5b83811015610a9157610b7533868684818110610b3157610b31611d5a565b9050602002016020810190610b469190611adf565b610b526009600a611d0a565b868686818110610b6457610b64611d5a565b905060200201356109ba9190611d18565b600101610b13565b5f8060095442610b8d9190611b78565b9050610708811115610ba0575f91505090565b6102588111610bb157601e91505090565b610708811161066f57601491505090565b6005546001600160a01b03163314610bec5760405162461bcd60e51b815260040161074690611bc3565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b60606004805461068590611b8b565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610cc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610746565b610cd23385858403610f41565b5060019392505050565b5f610712338484611064565b6005546001600160a01b03163314610d125760405162461bcd60e51b815260040161074690611bc3565b60095415610d1e575f80fd5b42600955565b6005546001600160a01b03163314610d4e5760405162461bcd60e51b815260040161074690611bc3565b6001600160a01b0382165f818152600a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610dd65760405162461bcd60e51b815260040161074690611bc3565b6001600160a01b038116610e3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610746565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ec05760405162461bcd60e51b815260040161074690611bc3565b6040515f90339047908381818185875af1925050503d805f8114610eff576040519150601f19603f3d011682016040523d82523d5f602084013e610f04565b606091505b50505050565b6005546001600160a01b03163314610f345760405162461bcd60e51b815260040161074690611bc3565b6008805461ff0019169055565b6001600160a01b038316610fa35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610746565b6001600160a01b0382166110045760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610746565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661108a5760405162461bcd60e51b815260040161074690611d6e565b6001600160a01b0382166110b05760405162461bcd60e51b815260040161074690611db3565b6009545f0361118d575f81116111085760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610746565b6001600160a01b0383165f908152600a602052604090205460ff168061114557506001600160a01b0382165f908152600a602052604090205460ff165b6111885760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610746565b61157c565b6001600160a01b0383165f908152600a602052604090205460ff161580156111cd57506001600160a01b0382165f908152600a602052604090205460ff16155b1561157c576008547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416149060ff6101009091041615611463578015801561122d57506001600160a01b03831661dead14155b156112be57603261123d60025490565b6112479190611bf8565b82611266856001600160a01b03165f9081526020819052604090205490565b6112709190611c17565b11156112be5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206578636565647320746865206d61782073697a652e000000006044820152606401610746565b60085462010000900460ff1615611463577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561130f575080155b1561138e57325f908152600b6020526040902054431161137c5760405162461bcd60e51b815260206004820152602260248201527f4f6e65207472616e736665722070657220626c6f636b20666f72206c61756e63604482015261341760f11b6064820152608401610746565b325f908152600b602052604090204390555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614801561140157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561146357823b156114635760405162461bcd60e51b815260206004820152602560248201527f436f6e74726163742074726164696e672072657374726963746564206174206c6044820152640c2eadcc6d60db1b6064820152608401610746565b5f8061146d610b7d565b90505f611478610619565b905083801561148657505f82115b156114a85760646114978387611d18565b6114a19190611bf8565b9250611506565b5f811180156114e85750866001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316145b156115065760646114f98287611d18565b6115039190611bf8565b92505b82156115175761151787308561158c565b60085460ff1680156115335750600554600160a01b900460ff16155b801561153c5750835b1561156b576005805460ff60a01b1916600160a01b17905561155d856116df565b6005805460ff60a01b191690555b6115758386611b78565b9450505050505b61158783838361158c565b505050565b6001600160a01b0383166115b25760405162461bcd60e51b815260040161074690611d6e565b6001600160a01b0382166115d85760405162461bcd60e51b815260040161074690611db3565b6001600160a01b0383165f908152602081905260409020548181101561164f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610746565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611685908490611c17565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116d191815260200190565b60405180910390a350505050565b305f908152602081905260409020546006548110156116fc575050565b60075481111561170b57506007545b818111156117165750805b805f03611721575050565b5f61172b8261179e565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169047905f81818185875af1925050503d805f8114611791576040519150601f19603f3d011682016040523d82523d5f602084013e611796565b606091505b505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106117d1576117d1611d5a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561184d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118719190611df6565b8160018151811061188457611884611d5a565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac947906118e89085905f90869030904290600401611e11565b5f604051808303815f87803b1580156118ff575f80fd5b505af1158015611796573d5f803e3d5ffd5b5f602080835283518060208501525f5b8181101561193d57858101830151858201604001528201611921565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611971575f80fd5b50565b5f8060408385031215611985575f80fd5b82356119908161195d565b946020939093013593505050565b803580151581146119ad575f80fd5b919050565b5f602082840312156119c2575f80fd5b6119cb8261199e565b9392505050565b5f805f606084860312156119e4575f80fd5b83356119ef8161195d565b925060208401356119ff8161195d565b929592945050506040919091013590565b5f8060408385031215611a21575f80fd5b50508035926020909101359150565b5f8083601f840112611a40575f80fd5b50813567ffffffffffffffff811115611a57575f80fd5b6020830191508360208260051b8501011115611a71575f80fd5b9250929050565b5f805f8060408587031215611a8b575f80fd5b843567ffffffffffffffff80821115611aa2575f80fd5b611aae88838901611a30565b90965094506020870135915080821115611ac6575f80fd5b50611ad387828801611a30565b95989497509550505050565b5f60208284031215611aef575f80fd5b81356119cb8161195d565b5f8060408385031215611b0b575f80fd5b8235611b168161195d565b9150611b246020840161199e565b90509250929050565b5f8060408385031215611b3e575f80fd5b8235611b498161195d565b91506020830135611b598161195d565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561071657610716611b64565b600181811c90821680611b9f57607f821691505b602082108103611bbd57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f82611c1257634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561071657610716611b64565b600181815b80851115611c6457815f1904821115611c4a57611c4a611b64565b80851615611c5757918102915b93841c9390800290611c2f565b509250929050565b5f82611c7a57506001610716565b81611c8657505f610716565b8160018114611c9c5760028114611ca657611cc2565b6001915050610716565b60ff841115611cb757611cb7611b64565b50506001821b610716565b5060208310610133831016604e8410600b8410161715611ce5575081810a610716565b611cef8383611c2a565b805f1904821115611d0257611d02611b64565b029392505050565b5f6119cb60ff841683611c6c565b808202811582820484141761071657610716611b64565b5f805f60608486031215611d41575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60208284031215611e06575f80fd5b81516119cb8161195d565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e615784516001600160a01b031683529383019391830191600101611e3c565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204a2062956c9497f599f29d61e76b8599642734e938ff70a78fda8ce0bd1e92d364736f6c63430008170033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106101e9575f3560e01c80636ddd171311610108578063a9059cbb1161009d578063dd62ed3e1161006d578063dd62ed3e14610579578063e2f45605146105bd578063f2fde38b146105d2578063f5648a4f146105f1578063f928364c14610605575f80fd5b8063a9059cbb146104f4578063b7bda68f14610513578063bbc0c74214610546578063c02466681461055a575f80fd5b80638da5cb5b116100d85780638da5cb5b1461047157806395d89b411461048e578063a457c2d7146104a2578063a8aa1b31146104c1575f80fd5b80636ddd1713146103f257806370a082311461040b578063715018a61461043f578063860aefcf14610453575f80fd5b80632c0e22cc1161017e5780635031595f1161014e5780635031595f1461038b57806367243482146103a0578063685fc568146103bf5780636a42b8f8146103d3575f80fd5b80632c0e22cc1461031f578063313ce5671461033e578063395093511461035957806341a23daf14610378575f80fd5b8063095ea7b3116101b9578063095ea7b31461029c57806314f89c98146102cb57806318160ddd146102ec57806323b872dd14610300575f80fd5b806302075e55146101f45780630644e7571461021c57806306fdde03146102305780630758d92414610251575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b5061020960075481565b6040519081526020015b60405180910390f35b348015610227575f80fd5b50610209610619565b34801561023b575f80fd5b50610244610676565b6040516102139190611911565b34801561025c575f80fd5b506102847f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610213565b3480156102a7575f80fd5b506102bb6102b6366004611974565b610706565b6040519015158152602001610213565b3480156102d6575f80fd5b506102ea6102e53660046119b2565b61071c565b005b3480156102f7575f80fd5b50600254610209565b34801561030b575f80fd5b506102bb61031a3660046119d2565b610762565b34801561032a575f80fd5b506102ea610339366004611a10565b610812565b348015610349575f80fd5b5060405160098152602001610213565b348015610364575f80fd5b506102bb610373366004611974565b61093e565b6102ea610386366004611974565b610979565b348015610396575f80fd5b5061020960095481565b3480156103ab575f80fd5b506102ea6103ba366004611a78565b610a98565b3480156103ca575f80fd5b50610209610b7d565b3480156103de575f80fd5b506008546102bb9062010000900460ff1681565b3480156103fd575f80fd5b506008546102bb9060ff1681565b348015610416575f80fd5b50610209610425366004611adf565b6001600160a01b03165f9081526020819052604090205490565b34801561044a575f80fd5b506102ea610bc2565b34801561045e575f80fd5b506008546102bb90610100900460ff1681565b34801561047c575f80fd5b506005546001600160a01b0316610284565b348015610499575f80fd5b50610244610c35565b3480156104ad575f80fd5b506102bb6104bc366004611974565b610c44565b3480156104cc575f80fd5b506102847f000000000000000000000000e99875cb4db57d398e1b1e7cb69e3481b8f8217481565b3480156104ff575f80fd5b506102bb61050e366004611974565b610cdc565b34801561051e575f80fd5b506102847f0000000000000000000000007dbbdd011eaeebd7f60a6605505d4a3d94dd323881565b348015610551575f80fd5b506102ea610ce8565b348015610565575f80fd5b506102ea610574366004611afa565b610d24565b348015610584575f80fd5b50610209610593366004611b2d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156105c8575f80fd5b5061020960065481565b3480156105dd575f80fd5b506102ea6105ec366004611adf565b610dac565b3480156105fc575f80fd5b506102ea610e96565b348015610610575f80fd5b506102ea610f0a565b5f80600954426106299190611b78565b905061070881111561063c575f91505090565b610258811161064d57601491505090565b6104b0811161065e57600a91505090565b610708811161066f57600291505090565b5f91505090565b60606003805461068590611b8b565b80601f01602080910402602001604051908101604052809291908181526020018280546106b190611b8b565b80156106fc5780601f106106d3576101008083540402835291602001916106fc565b820191905f5260205f20905b8154815290600101906020018083116106df57829003601f168201915b5050505050905090565b5f610712338484610f41565b5060015b92915050565b6005546001600160a01b0316331461074f5760405162461bcd60e51b815260040161074690611bc3565b60405180910390fd5b6008805460ff1916911515919091179055565b5f61076e848484611064565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f19811461080757828110156107fa5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610746565b6108078533858403610f41565b506001949350505050565b6005546001600160a01b0316331461083c5760405162461bcd60e51b815260040161074690611bc3565b620186a060025461084d9190611bf8565b8210156108ba5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610746565b60646002546108c99190611bf8565b8111156109335760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101892903a37ba30b61039bab838363c9760711b6064820152608401610746565b600691909155600755565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610712918590610974908690611c17565b610f41565b335f908152600a602052604090205460ff16610993575f80fd5b6009541561099f575f80fd5b6109bf33306109b06009600a611d0a565b6109ba9085611d18565b61158c565b6001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663f305d71947306109fc6009600a611d0a565b610a069086611d18565b6040516001600160e01b031960e086901b1681526001600160a01b03928316600482015260248101919091525f60448201819052606482015290861660848201524260a482015260c40160606040518083038185885af1158015610a6c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a919190611d2f565b5050505050565b6005546001600160a01b03163314610ac25760405162461bcd60e51b815260040161074690611bc3565b828114610b115760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610746565b5f5b83811015610a9157610b7533868684818110610b3157610b31611d5a565b9050602002016020810190610b469190611adf565b610b526009600a611d0a565b868686818110610b6457610b64611d5a565b905060200201356109ba9190611d18565b600101610b13565b5f8060095442610b8d9190611b78565b9050610708811115610ba0575f91505090565b6102588111610bb157601e91505090565b610708811161066f57601491505090565b6005546001600160a01b03163314610bec5760405162461bcd60e51b815260040161074690611bc3565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b60606004805461068590611b8b565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610cc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610746565b610cd23385858403610f41565b5060019392505050565b5f610712338484611064565b6005546001600160a01b03163314610d125760405162461bcd60e51b815260040161074690611bc3565b60095415610d1e575f80fd5b42600955565b6005546001600160a01b03163314610d4e5760405162461bcd60e51b815260040161074690611bc3565b6001600160a01b0382165f818152600a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610dd65760405162461bcd60e51b815260040161074690611bc3565b6001600160a01b038116610e3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610746565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ec05760405162461bcd60e51b815260040161074690611bc3565b6040515f90339047908381818185875af1925050503d805f8114610eff576040519150601f19603f3d011682016040523d82523d5f602084013e610f04565b606091505b50505050565b6005546001600160a01b03163314610f345760405162461bcd60e51b815260040161074690611bc3565b6008805461ff0019169055565b6001600160a01b038316610fa35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610746565b6001600160a01b0382166110045760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610746565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661108a5760405162461bcd60e51b815260040161074690611d6e565b6001600160a01b0382166110b05760405162461bcd60e51b815260040161074690611db3565b6009545f0361118d575f81116111085760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610746565b6001600160a01b0383165f908152600a602052604090205460ff168061114557506001600160a01b0382165f908152600a602052604090205460ff165b6111885760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610746565b61157c565b6001600160a01b0383165f908152600a602052604090205460ff161580156111cd57506001600160a01b0382165f908152600a602052604090205460ff16155b1561157c576008547f000000000000000000000000e99875cb4db57d398e1b1e7cb69e3481b8f821746001600160a01b03908116908416149060ff6101009091041615611463578015801561122d57506001600160a01b03831661dead14155b156112be57603261123d60025490565b6112479190611bf8565b82611266856001600160a01b03165f9081526020819052604090205490565b6112709190611c17565b11156112be5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206578636565647320746865206d61782073697a652e000000006044820152606401610746565b60085462010000900460ff1615611463577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316836001600160a01b03161415801561130f575080155b1561138e57325f908152600b6020526040902054431161137c5760405162461bcd60e51b815260206004820152602260248201527f4f6e65207472616e736665722070657220626c6f636b20666f72206c61756e63604482015261341760f11b6064820152608401610746565b325f908152600b602052604090204390555b7f000000000000000000000000e99875cb4db57d398e1b1e7cb69e3481b8f821746001600160a01b0316846001600160a01b031614801561140157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316836001600160a01b031614155b1561146357823b156114635760405162461bcd60e51b815260206004820152602560248201527f436f6e74726163742074726164696e672072657374726963746564206174206c6044820152640c2eadcc6d60db1b6064820152608401610746565b5f8061146d610b7d565b90505f611478610619565b905083801561148657505f82115b156114a85760646114978387611d18565b6114a19190611bf8565b9250611506565b5f811180156114e85750866001600160a01b03167f000000000000000000000000e99875cb4db57d398e1b1e7cb69e3481b8f821746001600160a01b0316145b156115065760646114f98287611d18565b6115039190611bf8565b92505b82156115175761151787308561158c565b60085460ff1680156115335750600554600160a01b900460ff16155b801561153c5750835b1561156b576005805460ff60a01b1916600160a01b17905561155d856116df565b6005805460ff60a01b191690555b6115758386611b78565b9450505050505b61158783838361158c565b505050565b6001600160a01b0383166115b25760405162461bcd60e51b815260040161074690611d6e565b6001600160a01b0382166115d85760405162461bcd60e51b815260040161074690611db3565b6001600160a01b0383165f908152602081905260409020548181101561164f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610746565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611685908490611c17565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116d191815260200190565b60405180910390a350505050565b305f908152602081905260409020546006548110156116fc575050565b60075481111561170b57506007545b818111156117165750805b805f03611721575050565b5f61172b8261179e565b6040516001600160a01b037f0000000000000000000000007dbbdd011eaeebd7f60a6605505d4a3d94dd3238169047905f81818185875af1925050503d805f8114611791576040519150601f19603f3d011682016040523d82523d5f602084013e611796565b606091505b505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106117d1576117d1611d5a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561184d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118719190611df6565b8160018151811061188457611884611d5a565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac947906118e89085905f90869030904290600401611e11565b5f604051808303815f87803b1580156118ff575f80fd5b505af1158015611796573d5f803e3d5ffd5b5f602080835283518060208501525f5b8181101561193d57858101830151858201604001528201611921565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611971575f80fd5b50565b5f8060408385031215611985575f80fd5b82356119908161195d565b946020939093013593505050565b803580151581146119ad575f80fd5b919050565b5f602082840312156119c2575f80fd5b6119cb8261199e565b9392505050565b5f805f606084860312156119e4575f80fd5b83356119ef8161195d565b925060208401356119ff8161195d565b929592945050506040919091013590565b5f8060408385031215611a21575f80fd5b50508035926020909101359150565b5f8083601f840112611a40575f80fd5b50813567ffffffffffffffff811115611a57575f80fd5b6020830191508360208260051b8501011115611a71575f80fd5b9250929050565b5f805f8060408587031215611a8b575f80fd5b843567ffffffffffffffff80821115611aa2575f80fd5b611aae88838901611a30565b90965094506020870135915080821115611ac6575f80fd5b50611ad387828801611a30565b95989497509550505050565b5f60208284031215611aef575f80fd5b81356119cb8161195d565b5f8060408385031215611b0b575f80fd5b8235611b168161195d565b9150611b246020840161199e565b90509250929050565b5f8060408385031215611b3e575f80fd5b8235611b498161195d565b91506020830135611b598161195d565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561071657610716611b64565b600181811c90821680611b9f57607f821691505b602082108103611bbd57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f82611c1257634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561071657610716611b64565b600181815b80851115611c6457815f1904821115611c4a57611c4a611b64565b80851615611c5757918102915b93841c9390800290611c2f565b509250929050565b5f82611c7a57506001610716565b81611c8657505f610716565b8160018114611c9c5760028114611ca657611cc2565b6001915050610716565b60ff841115611cb757611cb7611b64565b50506001821b610716565b5060208310610133831016604e8410600b8410161715611ce5575081810a610716565b611cef8383611c2a565b805f1904821115611d0257611d02611b64565b029392505050565b5f6119cb60ff841683611c6c565b808202811582820484141761071657610716611b64565b5f805f60608486031215611d41575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60208284031215611e06575f80fd5b81516119cb8161195d565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e615784516001600160a01b031683529383019391830191600101611e3c565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204a2062956c9497f599f29d61e76b8599642734e938ff70a78fda8ce0bd1e92d364736f6c63430008170033

Deployed Bytecode Sourcemap

10012:7875:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10295:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;10295:28:0;;;;;;;;12626:324;;;;;;;;;;;;;:::i;3641:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10052:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;931:32:1;;;913:51;;901:2;886:18;10052:37:0;749:221:1;4694:208:0;;;;;;;;;;-1:-1:-1;4694:208:0;;;;;:::i;:::-;;:::i;:::-;;;1596:14:1;;1589:22;1571:41;;1559:2;1544:18;4694:208:0;1431:187:1;12244:86:0;;;;;;;;;;-1:-1:-1;12244:86:0;;;;;:::i;:::-;;:::i;:::-;;3962:108;;;;;;;;;;-1:-1:-1;4050:12:0;;3962:108;;4910:616;;;;;;;;;;-1:-1:-1;4910:616:0;;;;;:::i;:::-;;:::i;17106:410::-;;;;;;;;;;-1:-1:-1;17106:410:0;;;;;:::i;:::-;;:::i;12144:92::-;;;;;;;;;;-1:-1:-1;12144:92:0;;10161:1;2829:36:1;;2817:2;2802:18;12144:92:0;2687:184:1;5534:293:0;;;;;;;;;;-1:-1:-1;5534:293:0;;;;;:::i;:::-;;:::i;16474:389::-;;;;;;:::i;:::-;;:::i;10480:32::-;;;;;;;;;;;;;;;;17524:360;;;;;;;;;;-1:-1:-1;17524:360:0;;;;;:::i;:::-;;:::i;12338:280::-;;;;;;;;;;;;;:::i;10447:24::-;;;;;;;;;;-1:-1:-1;10447:24:0;;;;;;;;;;;10376:30;;;;;;;;;;-1:-1:-1;10376:30:0;;;;;;;;4078:177;;;;;;;;;;-1:-1:-1;4078:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;4229:18:0;4197:7;4229:18;;;;;;;;;;;;4078:177;7910:148;;;;;;;;;;;;;:::i;10415:25::-;;;;;;;;;;-1:-1:-1;10415:25:0;;;;;;;;;;;7698:79;;;;;;;;;;-1:-1:-1;7763:6:0;;-1:-1:-1;;;;;7763:6:0;7698:79;;3749:104;;;;;;;;;;;;;:::i;5835:478::-;;;;;;;;;;-1:-1:-1;5835:478:0;;;;;:::i;:::-;;:::i;10096:29::-;;;;;;;;;;;;;;;4263:214;;;;;;;;;;-1:-1:-1;4263:214:0;;;;;:::i;:::-;;:::i;10332:35::-;;;;;;;;;;;;;;;16871:140;;;;;;;;;;;;;:::i;12958:182::-;;;;;;;;;;-1:-1:-1;12958:182:0;;;;;:::i;:::-;;:::i;4485:201::-;;;;;;;;;;-1:-1:-1;4485:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4651:18:0;;;4619:7;4651:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4485:201;10255:33;;;;;;;;;;;;;;;;8066:281;;;;;;;;;;-1:-1:-1;8066:281:0;;;;;:::i;:::-;;:::i;16305:161::-;;;;;;;;;;;;;:::i;17019:79::-;;;;;;;;;;;;;:::i;12626:324::-;12669:7;12689:15;12725:17;;12707:15;:35;;;;:::i;:::-;12689:53;;12766:10;12756:7;:20;12753:33;;;12785:1;12778:8;;;12626:324;:::o;12753:33::-;12811:10;12800:7;:21;12797:35;;12830:2;12823:9;;;12626:324;:::o;12797:35::-;12857:10;12846:7;:21;12843:35;;12876:2;12869:9;;;12626:324;:::o;12843:35::-;12903:10;12892:7;:21;12889:34;;12922:1;12915:8;;;12626:324;:::o;12889:34::-;12941:1;12934:8;;;12626:324;:::o;3641:100::-;3695:13;3728:5;3721:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3641:100;:::o;4694:208::-;4813:4;4835:37;4844:10;4856:7;4865:6;4835:8;:37::i;:::-;-1:-1:-1;4890:4:0;4694:208;;;;;:::o;12244:86::-;7825:6;;-1:-1:-1;;;;;7825:6:0;7835:10;7825:20;7817:65;;;;-1:-1:-1;;;7817:65:0;;;;;;;:::i;:::-;;;;;;;;;12303:11:::1;:19:::0;;-1:-1:-1;;12303:19:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12244:86::o;4910:616::-;5050:4;5067:36;5077:6;5085:9;5096:6;5067:9;:36::i;:::-;-1:-1:-1;;;;;5143:19:0;;5116:24;5143:19;;;:11;:19;;;;;;;;5163:10;5143:31;;;;;;;;-1:-1:-1;;5188:37:0;;5185:312;;5289:6;5269:16;:26;;5243:128;;;;-1:-1:-1;;;5243:128:0;;6412:2:1;5243:128:0;;;6394:21:1;6451:2;6431:18;;;6424:30;6490:34;6470:18;;;6463:62;-1:-1:-1;;;6541:18:1;;;6534:38;6589:19;;5243:128:0;6210:404:1;5243:128:0;5415:55;5424:6;5432:10;5463:6;5444:16;:25;5415:8;:55::i;:::-;-1:-1:-1;5514:4:0;;4910:616;-1:-1:-1;;;;4910:616:0:o;17106:410::-;7825:6;;-1:-1:-1;;;;;7825:6:0;7835:10;7825:20;7817:65;;;;-1:-1:-1;;;7817:65:0;;;;;;;:::i;:::-;17253:6:::1;17238:12;;:21;;;;:::i;:::-;17222:12;:37;;17214:103;;;::::0;-1:-1:-1;;;17214:103:0;;7043:2:1;17214:103:0::1;::::0;::::1;7025:21:1::0;7082:2;7062:18;;;7055:30;7121:34;7101:18;;;7094:62;-1:-1:-1;;;7172:18:1;;;7165:51;7233:19;;17214:103:0::1;6841:417:1::0;17214:103:0::1;17367:3;17352:12;;:18;;;;:::i;:::-;17336:12;:34;;17328:97;;;::::0;-1:-1:-1;;;17328:97:0;;7465:2:1;17328:97:0::1;::::0;::::1;7447:21:1::0;7504:2;7484:18;;;7477:30;7543:34;7523:18;;;7516:62;-1:-1:-1;;;7594:18:1;;;7587:48;7652:19;;17328:97:0::1;7263:414:1::0;17328:97:0::1;17436:18;:33:::0;;;;17480:13:::1;:28:::0;17106:410::o;5534:293::-;5694:10;5649:4;5741:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5741:32:0;;;;;;;;;;5649:4;;5671:126;;5719:7;;5741:45;;5776:10;;5741:45;:::i;:::-;5671:8;:126::i;16474:389::-;16582:10;16562:31;;;;:19;:31;;;;;;;;16554:40;;;;;;16613:17;;:22;16605:31;;;;;;16647:71;16663:10;16683:4;10203:15;10161:1;10203:2;:15;:::i;:::-;16690:27;;:10;:27;:::i;:::-;16647:15;:71::i;:::-;-1:-1:-1;;;;;16729:9:0;:25;;16762:21;16793:4;10203:15;10161:1;10203:2;:15;:::i;:::-;16799:27;;:10;:27;:::i;:::-;16729:126;;-1:-1:-1;;;;;;16729:126:0;;;;;;;-1:-1:-1;;;;;9721:15:1;;;16729:126:0;;;9703:34:1;9753:18;;;9746:34;;;;16827:1:0;9796:18:1;;;9789:34;;;9839:18;;;9832:34;9903:15;;;9882:19;;;9875:44;16839:15:0;9935:19:1;;;9928:35;9637:19;;16729:126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16474:389;;:::o;17524:360::-;7825:6;;-1:-1:-1;;;;;7825:6:0;7835:10;7825:20;7817:65;;;;-1:-1:-1;;;7817:65:0;;;;;;;:::i;:::-;17643:40;;::::1;17635:83;;;::::0;-1:-1:-1;;;17635:83:0;;10487:2:1;17635:83:0::1;::::0;::::1;10469:21:1::0;10526:2;10506:18;;;10499:30;10565:32;10545:18;;;10538:60;10615:18;;17635:83:0::1;10285:354:1::0;17635:83:0::1;17734:9;17729:148;17749:18:::0;;::::1;17729:148;;;17789:76;17805:10;17817:7;;17825:1;17817:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;10203:15;10161:1;10203:2;:15;:::i;:::-;17829;;17845:1;17829:18;;;;;;;:::i;:::-;;;;;;;:35;;;;:::i;17789:76::-;17769:3;;17729:148;;12338:280:::0;12382:7;12402:15;12438:17;;12420:15;:35;;;;:::i;:::-;12402:53;;12479:10;12469:7;:20;12466:33;;;12498:1;12491:8;;;12338:280;:::o;12466:33::-;12524:10;12513:7;:21;12510:35;;12543:2;12536:9;;;12338:280;:::o;12510:35::-;12570:10;12559:7;:21;12556:35;;12589:2;12582:9;;;12338:280;:::o;7910:148::-;7825:6;;-1:-1:-1;;;;;7825:6:0;7835:10;7825:20;7817:65;;;;-1:-1:-1;;;7817:65:0;;;;;;;:::i;:::-;8001:6:::1;::::0;7980:40:::1;::::0;8017:1:::1;::::0;-1:-1:-1;;;;;8001:6:0::1;::::0;7980:40:::1;::::0;8017:1;;7980:40:::1;8031:6;:19:::0;;-1:-1:-1;;;;;;8031:19:0::1;::::0;;7910:148::o;3749:104::-;3805:13;3838:7;3831:14;;;;;:::i;5835:478::-;6016:10;5955:4;6004:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6004:32:0;;;;;;;;;;6069:35;;;;6047:122;;;;-1:-1:-1;;;6047:122:0;;10978:2:1;6047:122:0;;;10960:21:1;11017:2;10997:18;;;10990:30;11056:34;11036:18;;;11029:62;-1:-1:-1;;;11107:18:1;;;11100:35;11152:19;;6047:122:0;10776:401:1;6047:122:0;6205:65;6214:10;6226:7;6254:15;6235:16;:34;6205:8;:65::i;:::-;-1:-1:-1;6301:4:0;;5835:478;-1:-1:-1;;;5835:478:0:o;4263:214::-;4385:4;4407:40;4417:10;4429:9;4440:6;4407:9;:40::i;16871:140::-;7825:6;;-1:-1:-1;;;;;7825:6:0;7835:10;7825:20;7817:65;;;;-1:-1:-1;;;7817:65:0;;;;;;;:::i;:::-;16934:17:::1;::::0;:22;16926:31:::1;;;::::0;::::1;;16988:15;16968:17;:35:::0;16871:140::o;12958:182::-;7825:6;;-1:-1:-1;;;;;7825:6:0;7835:10;7825:20;7817:65;;;;-1:-1:-1;;;7817:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13043:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;13043:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;13098:34;;1571:41:1;;;13098:34:0::1;::::0;1544:18:1;13098:34:0::1;;;;;;;12958:182:::0;;:::o;8066:281::-;7825:6;;-1:-1:-1;;;;;7825:6:0;7835:10;7825:20;7817:65;;;;-1:-1:-1;;;7817:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8169:22:0;::::1;8147:110;;;::::0;-1:-1:-1;;;8147:110:0;;11384:2:1;8147:110:0::1;::::0;::::1;11366:21:1::0;11423:2;11403:18;;;11396:30;11462:34;11442:18;;;11435:62;-1:-1:-1;;;11513:18:1;;;11506:36;11559:19;;8147:110:0::1;11182:402:1::0;8147:110:0::1;8294:6;::::0;8273:38:::1;::::0;-1:-1:-1;;;;;8273:38:0;;::::1;::::0;8294:6:::1;::::0;8273:38:::1;::::0;8294:6:::1;::::0;8273:38:::1;8322:6;:17:::0;;-1:-1:-1;;;;;;8322:17:0::1;-1:-1:-1::0;;;;;8322:17:0;;;::::1;::::0;;;::::1;::::0;;8066:281::o;16305:161::-;7825:6;;-1:-1:-1;;;;;7825:6:0;7835:10;7825:20;7817:65;;;;-1:-1:-1;;;7817:65:0;;;;;;;:::i;:::-;16400:58:::1;::::0;16363:12:::1;::::0;16408:10:::1;::::0;16432:21:::1;::::0;16363:12;16400:58;16363:12;16400:58;16432:21;16408:10;16400:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;16305:161:0:o;17019:79::-;7825:6;;-1:-1:-1;;;;;7825:6:0;7835:10;7825:20;7817:65;;;;-1:-1:-1;;;7817:65:0;;;;;;;:::i;:::-;17076:6:::1;:14:::0;;-1:-1:-1;;17076:14:0::1;::::0;;17019:79::o;6980:380::-;-1:-1:-1;;;;;7116:19:0;;7108:68;;;;-1:-1:-1;;;7108:68:0;;12001:2:1;7108:68:0;;;11983:21:1;12040:2;12020:18;;;12013:30;12079:34;12059:18;;;12052:62;-1:-1:-1;;;12130:18:1;;;12123:34;12174:19;;7108:68:0;11799:400:1;7108:68:0;-1:-1:-1;;;;;7195:21:0;;7187:68;;;;-1:-1:-1;;;7187:68:0;;12406:2:1;7187:68:0;;;12388:21:1;12445:2;12425:18;;;12418:30;12484:34;12464:18;;;12457:62;-1:-1:-1;;;12535:18:1;;;12528:32;12577:19;;7187:68:0;12204:398:1;7187:68:0;-1:-1:-1;;;;;7268:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7320:32;;160:25:1;;;7320:32:0;;133:18:1;7320:32:0;;;;;;;6980:380;;;:::o;13148:2064::-;-1:-1:-1;;;;;13280:18:0;;13272:68;;;;-1:-1:-1;;;13272:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13359:16:0;;13351:64;;;;-1:-1:-1;;;13351:64:0;;;;;;;:::i;:::-;13432:17;;13453:1;13432:22;13428:1731;;13487:1;13478:6;:10;13470:52;;;;-1:-1:-1;;;13470:52:0;;13619:2:1;13470:52:0;;;13601:21:1;13658:2;13638:18;;;13631:30;13697:31;13677:18;;;13670:59;13746:18;;13470:52:0;13417:353:1;13470:52:0;-1:-1:-1;;;;;13545:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;13574:23:0;;;;;;:19;:23;;;;;;;;13545:52;13537:85;;;;-1:-1:-1;;;13537:85:0;;13977:2:1;13537:85:0;;;13959:21:1;14016:2;13996:18;;;13989:30;-1:-1:-1;;;14035:18:1;;;14028:50;14095:18;;13537:85:0;13775:344:1;13537:85:0;13428:1731;;;-1:-1:-1;;;;;13654:25:0;;;;;;:19;:25;;;;;;;;13653:26;:54;;;;-1:-1:-1;;;;;;13684:23:0;;;;;;:19;:23;;;;;;;;13683:24;13653:54;13649:1510;;;13767:6;;13738:4;-1:-1:-1;;;;;13738:10:0;;;;;;;;13767:6;;;;;;13763:715;;;13799:6;13798:7;:32;;;;-1:-1:-1;;;;;;13809:21:0;;13823:6;13809:21;;13798:32;13794:166;;;13905:2;13889:13;4050:12;;;3962:108;13889:13;:18;;;;:::i;:::-;13879:6;13863:13;13873:2;-1:-1:-1;;;;;4229:18:0;4197:7;4229:18;;;;;;;;;;;;4078:177;13863:13;:22;;;;:::i;:::-;:44;;13855:85;;;;-1:-1:-1;;;13855:85:0;;14326:2:1;13855:85:0;;;14308:21:1;14365:2;14345:18;;;14338:30;14404;14384:18;;;14377:58;14452:18;;13855:85:0;14124:352:1;13855:85:0;13982:5;;;;;;;13978:485;;;14030:9;-1:-1:-1;;;;;14016:24:0;:2;-1:-1:-1;;;;;14016:24:0;;;:35;;;;;14045:6;14044:7;14016:35;14012:245;;;14103:9;14088:25;;;;:14;:25;;;;;;14116:12;-1:-1:-1;14080:86:0;;;;-1:-1:-1;;;14080:86:0;;14683:2:1;14080:86:0;;;14665:21:1;14722:2;14702:18;;;14695:30;14761:34;14741:18;;;14734:62;-1:-1:-1;;;14812:18:1;;;14805:32;14854:19;;14080:86:0;14481:398:1;14080:86:0;14208:9;14193:25;;;;:14;:25;;;;;14221:12;14193:40;;14012:245;14293:4;-1:-1:-1;;;;;14285:12:0;:4;-1:-1:-1;;;;;14285:12:0;;:40;;;;;14315:9;-1:-1:-1;;;;;14301:24:0;:2;-1:-1:-1;;;;;14301:24:0;;;14285:40;14281:163;;;16233:20;;16281:8;14355:65;;;;-1:-1:-1;;;14355:65:0;;15086:2:1;14355:65:0;;;15068:21:1;15125:2;15105:18;;;15098:30;15164:34;15144:18;;;15137:62;-1:-1:-1;;;15215:18:1;;;15208:35;15260:19;;14355:65:0;14884:401:1;14355:65:0;14494:12;14525:11;14539:13;:11;:13::i;:::-;14525:27;;14567:11;14581:12;:10;:12::i;:::-;14567:26;;14614:6;:16;;;;;14629:1;14623:3;:7;14614:16;14610:212;;;14675:3;14659:12;14668:3;14659:6;:12;:::i;:::-;14658:20;;;;:::i;:::-;14651:27;;14610:212;;;14723:1;14717:3;:7;:23;;;;;14736:4;-1:-1:-1;;;;;14728:12:0;:4;-1:-1:-1;;;;;14728:12:0;;14717:23;14713:109;;;14803:3;14787:12;14796:3;14787:6;:12;:::i;:::-;14786:20;;;;:::i;:::-;14779:27;;14713:109;14842:8;;14838:91;;14871:42;14887:4;14901;14908;14871:15;:42::i;:::-;14961:11;;;;:24;;;;-1:-1:-1;14977:8:0;;-1:-1:-1;;;14977:8:0;;;;14976:9;14961:24;:34;;;;;14989:6;14961:34;14957:160;;;15016:8;:15;;-1:-1:-1;;;;15016:15:0;-1:-1:-1;;;15016:15:0;;;15050:16;15059:6;15050:8;:16::i;:::-;15085:8;:16;;-1:-1:-1;;;;15085:16:0;;;14957:160;15133:14;15143:4;15133:14;;:::i;:::-;;;13709:1450;;;;13649:1510;15171:33;15187:4;15193:2;15197:6;15171:15;:33::i;:::-;13148:2064;;;:::o;6321:651::-;-1:-1:-1;;;;;6461:20:0;;6453:70;;;;-1:-1:-1;;;6453:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6542:23:0;;6534:71;;;;-1:-1:-1;;;6534:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6642:17:0;;6618:21;6642:17;;;;;;;;;;;6692:23;;;;6670:111;;;;-1:-1:-1;;;6670:111:0;;15492:2:1;6670:111:0;;;15474:21:1;15531:2;15511:18;;;15504:30;15570:34;15550:18;;;15543:62;-1:-1:-1;;;15621:18:1;;;15614:36;15667:19;;6670:111:0;15290:402:1;6670:111:0;-1:-1:-1;;;;;6817:17:0;;;:9;:17;;;;;;;;;;;6837:22;;;6817:42;;6881:20;;;;;;;;:30;;6853:6;;6817:9;6881:30;;6853:6;;6881:30;:::i;:::-;;;;;;;;6946:9;-1:-1:-1;;;;;6929:35:0;6938:6;-1:-1:-1;;;;;6929:35:0;;6957:6;6929:35;;;;160:25:1;;148:2;133:18;;14:177;6929:35:0;;;;;;;;6442:530;6321:651;;;:::o;15616:478::-;15710:4;15669:20;4229:18;;;;;;;;;;;15746;;15731:33;;15727:46;;;15766:7;15616:478;:::o;15727:46::-;15802:13;;15787:12;:28;15783:62;;;-1:-1:-1;15832:13:0;;15783:62;15875:6;15860:12;:21;15856:48;;;-1:-1:-1;15898:6:0;15856:48;15919:12;15935:1;15919:17;15915:30;;15938:7;15616:478;:::o;15915:30::-;15957:12;15980:30;15997:12;15980:16;:30::i;:::-;16037:49;;-1:-1:-1;;;;;16037:10:0;:15;;16060:21;;16037:49;;;;16060:21;16037:15;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15616:478:0:o;15220:388::-;15310:16;;;15324:1;15310:16;;;;;;;;15286:21;;15310:16;;;;;;;;;;-1:-1:-1;15310:16:0;15286:40;;15355:4;15337;15342:1;15337:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15337:23:0;;;-1:-1:-1;;;;;15337:23:0;;;;;15381:9;-1:-1:-1;;;;;15381:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15371:4;15376:1;15371:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15371:26:0;;;:7;;;;;;;;;:26;15410:190;;-1:-1:-1;;;15410:190:0;;:9;:60;;;;;;:190;;15485:11;;15511:1;;15527:4;;15554;;15574:15;;15410:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;196:548:1;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;975:131::-;-1:-1:-1;;;;;1050:31:1;;1040:42;;1030:70;;1096:1;1093;1086:12;1030:70;975:131;:::o;1111:315::-;1179:6;1187;1240:2;1228:9;1219:7;1215:23;1211:32;1208:52;;;1256:1;1253;1246:12;1208:52;1295:9;1282:23;1314:31;1339:5;1314:31;:::i;:::-;1364:5;1416:2;1401:18;;;;1388:32;;-1:-1:-1;;;1111:315:1:o;1623:160::-;1688:20;;1744:13;;1737:21;1727:32;;1717:60;;1773:1;1770;1763:12;1717:60;1623:160;;;:::o;1788:180::-;1844:6;1897:2;1885:9;1876:7;1872:23;1868:32;1865:52;;;1913:1;1910;1903:12;1865:52;1936:26;1952:9;1936:26;:::i;:::-;1926:36;1788:180;-1:-1:-1;;;1788:180:1:o;1973:456::-;2050:6;2058;2066;2119:2;2107:9;2098:7;2094:23;2090:32;2087:52;;;2135:1;2132;2125:12;2087:52;2174:9;2161:23;2193:31;2218:5;2193:31;:::i;:::-;2243:5;-1:-1:-1;2300:2:1;2285:18;;2272:32;2313:33;2272:32;2313:33;:::i;:::-;1973:456;;2365:7;;-1:-1:-1;;;2419:2:1;2404:18;;;;2391:32;;1973:456::o;2434:248::-;2502:6;2510;2563:2;2551:9;2542:7;2538:23;2534:32;2531:52;;;2579:1;2576;2569:12;2531:52;-1:-1:-1;;2602:23:1;;;2672:2;2657:18;;;2644:32;;-1:-1:-1;2434:248:1:o;2876:367::-;2939:8;2949:6;3003:3;2996:4;2988:6;2984:17;2980:27;2970:55;;3021:1;3018;3011:12;2970:55;-1:-1:-1;3044:20:1;;3087:18;3076:30;;3073:50;;;3119:1;3116;3109:12;3073:50;3156:4;3148:6;3144:17;3132:29;;3216:3;3209:4;3199:6;3196:1;3192:14;3184:6;3180:27;3176:38;3173:47;3170:67;;;3233:1;3230;3223:12;3170:67;2876:367;;;;;:::o;3248:773::-;3370:6;3378;3386;3394;3447:2;3435:9;3426:7;3422:23;3418:32;3415:52;;;3463:1;3460;3453:12;3415:52;3503:9;3490:23;3532:18;3573:2;3565:6;3562:14;3559:34;;;3589:1;3586;3579:12;3559:34;3628:70;3690:7;3681:6;3670:9;3666:22;3628:70;:::i;:::-;3717:8;;-1:-1:-1;3602:96:1;-1:-1:-1;3805:2:1;3790:18;;3777:32;;-1:-1:-1;3821:16:1;;;3818:36;;;3850:1;3847;3840:12;3818:36;;3889:72;3953:7;3942:8;3931:9;3927:24;3889:72;:::i;:::-;3248:773;;;;-1:-1:-1;3980:8:1;-1:-1:-1;;;;3248:773:1:o;4026:247::-;4085:6;4138:2;4126:9;4117:7;4113:23;4109:32;4106:52;;;4154:1;4151;4144:12;4106:52;4193:9;4180:23;4212:31;4237:5;4212:31;:::i;4486:315::-;4551:6;4559;4612:2;4600:9;4591:7;4587:23;4583:32;4580:52;;;4628:1;4625;4618:12;4580:52;4667:9;4654:23;4686:31;4711:5;4686:31;:::i;:::-;4736:5;-1:-1:-1;4760:35:1;4791:2;4776:18;;4760:35;:::i;:::-;4750:45;;4486:315;;;;;:::o;4806:388::-;4874:6;4882;4935:2;4923:9;4914:7;4910:23;4906:32;4903:52;;;4951:1;4948;4941:12;4903:52;4990:9;4977:23;5009:31;5034:5;5009:31;:::i;:::-;5059:5;-1:-1:-1;5116:2:1;5101:18;;5088:32;5129:33;5088:32;5129:33;:::i;:::-;5181:7;5171:17;;;4806:388;;;;;:::o;5199:127::-;5260:10;5255:3;5251:20;5248:1;5241:31;5291:4;5288:1;5281:15;5315:4;5312:1;5305:15;5331:128;5398:9;;;5419:11;;;5416:37;;;5433:18;;:::i;5464:380::-;5543:1;5539:12;;;;5586;;;5607:61;;5661:4;5653:6;5649:17;5639:27;;5607:61;5714:2;5706:6;5703:14;5683:18;5680:38;5677:161;;5760:10;5755:3;5751:20;5748:1;5741:31;5795:4;5792:1;5785:15;5823:4;5820:1;5813:15;5677:161;;5464:380;;;:::o;5849:356::-;6051:2;6033:21;;;6070:18;;;6063:30;6129:34;6124:2;6109:18;;6102:62;6196:2;6181:18;;5849:356::o;6619:217::-;6659:1;6685;6675:132;;6729:10;6724:3;6720:20;6717:1;6710:31;6764:4;6761:1;6754:15;6792:4;6789:1;6782:15;6675:132;-1:-1:-1;6821:9:1;;6619:217::o;7682:125::-;7747:9;;;7768:10;;;7765:36;;;7781:18;;:::i;7812:416::-;7901:1;7938:5;7901:1;7952:270;7973:7;7963:8;7960:21;7952:270;;;8032:4;8028:1;8024:6;8020:17;8014:4;8011:27;8008:53;;;8041:18;;:::i;:::-;8091:7;8081:8;8077:22;8074:55;;;8111:16;;;;8074:55;8190:22;;;;8150:15;;;;7952:270;;;7956:3;7812:416;;;;;:::o;8233:806::-;8282:5;8312:8;8302:80;;-1:-1:-1;8353:1:1;8367:5;;8302:80;8401:4;8391:76;;-1:-1:-1;8438:1:1;8452:5;;8391:76;8483:4;8501:1;8496:59;;;;8569:1;8564:130;;;;8476:218;;8496:59;8526:1;8517:10;;8540:5;;;8564:130;8601:3;8591:8;8588:17;8585:43;;;8608:18;;:::i;:::-;-1:-1:-1;;8664:1:1;8650:16;;8679:5;;8476:218;;8778:2;8768:8;8765:16;8759:3;8753:4;8750:13;8746:36;8740:2;8730:8;8727:16;8722:2;8716:4;8713:12;8709:35;8706:77;8703:159;;;-1:-1:-1;8815:19:1;;;8847:5;;8703:159;8894:34;8919:8;8913:4;8894:34;:::i;:::-;8964:6;8960:1;8956:6;8952:19;8943:7;8940:32;8937:58;;;8975:18;;:::i;:::-;9013:20;;8233:806;-1:-1:-1;;;8233:806:1:o;9044:140::-;9102:5;9131:47;9172:4;9162:8;9158:19;9152:4;9131:47;:::i;9189:168::-;9262:9;;;9293;;9310:15;;;9304:22;;9290:37;9280:71;;9331:18;;:::i;9974:306::-;10062:6;10070;10078;10131:2;10119:9;10110:7;10106:23;10102:32;10099:52;;;10147:1;10144;10137:12;10099:52;10176:9;10170:16;10160:26;;10226:2;10215:9;10211:18;10205:25;10195:35;;10270:2;10259:9;10255:18;10249:25;10239:35;;9974:306;;;;;:::o;10644:127::-;10705:10;10700:3;10696:20;10693:1;10686:31;10736:4;10733:1;10726:15;10760:4;10757:1;10750:15;12607:401;12809:2;12791:21;;;12848:2;12828:18;;;12821:30;12887:34;12882:2;12867:18;;12860:62;-1:-1:-1;;;12953:2:1;12938:18;;12931:35;12998:3;12983:19;;12607:401::o;13013:399::-;13215:2;13197:21;;;13254:2;13234:18;;;13227:30;13293:34;13288:2;13273:18;;13266:62;-1:-1:-1;;;13359:2:1;13344:18;;13337:33;13402:3;13387:19;;13013:399::o;15829:251::-;15899:6;15952:2;15940:9;15931:7;15927:23;15923:32;15920:52;;;15968:1;15965;15958:12;15920:52;16000:9;15994:16;16019:31;16044:5;16019:31;:::i;16085:980::-;16347:4;16395:3;16384:9;16380:19;16426:6;16415:9;16408:25;16452:2;16490:6;16485:2;16474:9;16470:18;16463:34;16533:3;16528:2;16517:9;16513:18;16506:31;16557:6;16592;16586:13;16623:6;16615;16608:22;16661:3;16650:9;16646:19;16639:26;;16700:2;16692:6;16688:15;16674:29;;16721:1;16731:195;16745:6;16742:1;16739:13;16731:195;;;16810:13;;-1:-1:-1;;;;;16806:39:1;16794:52;;16901:15;;;;16866:12;;;;16842:1;16760:9;16731:195;;;-1:-1:-1;;;;;;;16982:32:1;;;;16977:2;16962:18;;16955:60;-1:-1:-1;;;17046:3:1;17031:19;17024:35;16943:3;16085:980;-1:-1:-1;;;16085:980:1:o

Swarm Source

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