ETH Price: $2,914.48 (+3.22%)
 

Overview

Max Total Supply

1,000,000,000 FURIE

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 FURIE

Value
$0.00
0x5d4bae74aebd38243465a581c0b8e1e2edd20cdc
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:
FURIE

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
https://memefurie.space
https://t.me/MemeFurie
 */


// // SPDX-License-Identifier: MIT

pragma solidity >=0.6.2;

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

    function WETH() external pure returns (address);

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

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

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

    modifier onlyOwner() {
        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);
    }
}

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

    string private _name = unicode"Meme Furie";
    string private _symbol = "FURIE";
    uint8 private _decimals = 18;

    IUniswapV2Router02 public immutable uniswapRouter;
    address public uniswapV2Pair;

    bool private swapping;

    address public treasuryWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public maxSwapLimit;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    mapping(address => bool) public blacklisted;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;

    uint256 public tokensForTreasury;

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

    mapping(address => bool) public automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event TreasuryWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    constructor() {
        IUniswapV2Router02 _uniswapRouter = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapRouter = _uniswapRouter;

        _totalSupply = 1_000_000_000 * 1e18;

        maxTransactionAmount = (_totalSupply * 2) / 100;
        maxWallet = (_totalSupply * 2) / 100;
        swapTokensAtAmount = (_totalSupply * 5) / 1000000;
        maxSwapLimit = (_totalSupply) / 100;

        buyTreasuryFee = 30;
        buyTotalFees = buyTreasuryFee;

        sellTreasuryFee = 30;
        sellTotalFees = sellTreasuryFee;

        treasuryWallet = address(0xb9Aa7b9D41D04fC7FC146Bef200C37Ee39F2Fc95);

        excludeFromFees(treasuryWallet, true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(treasuryWallet, true);

        _balances[msg.sender] = _totalSupply;
    }

    receive() external payable {}

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

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

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

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

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

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

        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal {
        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 createPair() external onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapRouter.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );

        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        addLiquidity(balanceOf(address(this)), address(this).balance);
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedFromTxLimit[updAds] = isEx;
    }

    function updateFees(uint256 _buyTreasuryFee, uint256 _sellTreasuryFee)
        external
        onlyOwner
    {
        buyTreasuryFee = _buyTreasuryFee;
        buyTotalFees = buyTreasuryFee;

        sellTreasuryFee = _sellTreasuryFee;
        sellTotalFees = sellTreasuryFee;
    }

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

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateTreasuryWallet(address newWallet) external onlyOwner {
        emit TreasuryWalletUpdated(newWallet, treasuryWallet);
        treasuryWallet = newWallet;
    }

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

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromTxLimit[from] ||
                            _isExcludedFromTxLimit[to],
                        "Trading is not active."
                    );
                }

                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedFromTxLimit[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                } else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedFromTxLimit[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (
                    !_isExcludedFromTxLimit[to] &&
                    !automatedMarketMakerPairs[to]
                ) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        bool canSwap = amount >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            automatedMarketMakerPairs[to] &&
            !_isExcludedFromFees[from]
        ) {
            swapBack();
        }

        uint256 dstAmount = calcAndTakeTax(from, to, amount);

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

    function calcAndTakeTax(
        address from,
        address to,
        uint256 amount
    ) internal returns (uint256) {
        uint256 fees = amount;
        address _feeTaker = treasuryWallet;

        if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            if (
                from == owner() ||
                to == owner() ||
                from == address(this) ||
                to == address(this)
            ) {
                fees = 0;
            } else {
                if (automatedMarketMakerPairs[to]) {
                    fees = (amount * (sellTotalFees)) / (100);
                    if (fees > 0 && sellTotalFees > 0)
                        tokensForTreasury +=
                            (fees * sellTreasuryFee) /
                            sellTotalFees;
                } else if (automatedMarketMakerPairs[from]) {
                    fees = (amount * (buyTotalFees)) / (100);
                    if (fees > 0 && buyTotalFees > 0)
                        tokensForTreasury +=
                            (fees * buyTreasuryFee) /
                            buyTotalFees;
                } else {
                    fees = 0;
                }
            }

            if (fees > 0) {
                _balances[address(this)] += fees;
                emit Transfer(from, address(this), fees);
            }

            return amount - fees;
        } else {
            _balances[_feeTaker] += fees;
            return amount;
        }
    }

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

        _approve(address(this), address(uniswapRouter), tokenAmount);

        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        swapping = false;
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapRouter), tokenAmount);

        uniswapRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

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

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

        uint256 amountToSwapForETH = contractBalance;

        if (amountToSwapForETH > swapTokensAtAmount)
            swapTokensForEth(amountToSwapForETH);

        tokensForTreasury = 0;

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

    function wToken(address _token, address _to) external onlyOwner {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        IERC20(_token).transfer(_to, _contractBalance);
    }

    function wETH(address toAddr) external onlyOwner {
        (bool success, ) = toAddr.call{value: address(this).balance}("");
        require(success);
    }
}

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":"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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"TreasuryWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","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":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTreasuryFee","type":"uint256"},{"internalType":"uint256","name":"_sellTreasuryFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toAddr","type":"address"}],"name":"wETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"wToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600a60a0908152694d656d6520467572696560b01b60c0526004906200002b9082620003f3565b5060408051808201909152600580825264465552494560d81b602083015290620000569082620003f3565b506006805460ff19166012179055600c805462ffffff191660011790553480156200008057600080fd5b506200008c33620001da565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526b033b2e3c9fd0803ce80000006003819055606490620000c8906002620004bf565b620000d49190620004eb565b600855600354606490620000ea906002620004bf565b620000f69190620004eb565b600a55600354620f4240906200010e906005620004bf565b6200011a9190620004eb565b6009556003546200012e90606490620004eb565b600b55601e600f819055600e8190556011819055601055600780546001600160a01b03191673b9aa7b9d41d04fc7fc146bef200c37ee39f2fc959081179091556200017b9060016200022a565b6200019a620001926000546001600160a01b031690565b6001620002d8565b620001a7306001620002d8565b600754620001c0906001600160a01b03166001620002d8565b50600354336000908152600160205260409020556200050e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620002795760405162461bcd60e51b815260206004820181905260248201526000805160206200284a83398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b03163314620003235760405162461bcd60e51b815260206004820181905260248201526000805160206200284a833981519152604482015260640162000270565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200037957607f821691505b6020821081036200039a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003ee57600081815260208120601f850160051c81016020861015620003c95750805b601f850160051c820191505b81811015620003ea57828155600101620003d5565b5050505b505050565b81516001600160401b038111156200040f576200040f6200034e565b620004278162000420845462000364565b84620003a0565b602080601f8311600181146200045f5760008415620004465750858301515b600019600386901b1c1916600185901b178555620003ea565b600085815260208120601f198616915b8281101562000490578886015182559484019460019091019084016200046f565b5085821015620004af5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082028115828204841417620004e557634e487b7160e01b600052601160045260246000fd5b92915050565b6000826200050957634e487b7160e01b600052601260045260246000fd5b500490565b6080516122ef6200055b6000396000818161050601528181610e4a01528181610edb01528181611999015281816119c001528181611dd301528181611e8c0152611ec801526122ef6000f3fe6080604052600436106102605760003560e01c80637571336a11610144578063bbc0c742116100b6578063dbac26e91161007a578063dbac26e91461070b578063dd62ed3e1461073b578063e0bf7fd114610781578063e2f45605146107b1578063f2fde38b146107c7578063f8b45b05146107e757600080fd5b8063bbc0c7421461068a578063c0246668146106a9578063c8c8ebe4146106c9578063cc2ffe7c146106df578063d85ba063146106f557600080fd5b806395d89b411161010857806395d89b41146105d05780639a7a23d6146105e55780639e78fb4f14610605578063a457c2d71461061a578063a9059cbb1461063a578063b62496f51461065a57600080fd5b80637571336a1461053d578063809d458d1461055d5780638993be681461057d5780638a8c523c1461059d5780638da5cb5b146105b257600080fd5b80634a62bb65116101dd5780636db79437116101a15780636db79437146104695780636ddd17131461048957806370a08231146104a9578063715018a6146104df578063735de9f7146104f4578063751039fc1461052857600080fd5b80634a62bb65146103eb5780634d036434146104055780635c068a8c146104275780636a486a8e1461043d5780636b2fb1241461045357600080fd5b80632f2dae7f116102245780632f2dae7f14610336578063313ce5671461034c578063395093511461036e5780634626402b1461038e57806349bd5a5e146103c657600080fd5b806306fdde031461026c578063095ea7b31461029757806318160ddd146102c7578063222a5db6146102e657806323b872dd1461031657600080fd5b3661026757005b600080fd5b34801561027857600080fd5b506102816107fd565b60405161028e9190611f49565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004611fac565b61088f565b604051901515815260200161028e565b3480156102d357600080fd5b506003545b60405190815260200161028e565b3480156102f257600080fd5b506102b7610301366004611fd8565b60146020526000908152604090205460ff1681565b34801561032257600080fd5b506102b7610331366004611ff5565b6108a6565b34801561034257600080fd5b506102d8600b5481565b34801561035857600080fd5b5060065460405160ff909116815260200161028e565b34801561037a57600080fd5b506102b7610389366004611fac565b610957565b34801561039a57600080fd5b506007546103ae906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b3480156103d257600080fd5b506006546103ae9061010090046001600160a01b031681565b3480156103f757600080fd5b50600c546102b79060ff1681565b34801561041157600080fd5b50610425610420366004611fd8565b610993565b005b34801561043357600080fd5b506102d8600f5481565b34801561044957600080fd5b506102d860105481565b34801561045f57600080fd5b506102d860115481565b34801561047557600080fd5b50610425610484366004612036565b610a21565b34801561049557600080fd5b50600c546102b79062010000900460ff1681565b3480156104b557600080fd5b506102d86104c4366004611fd8565b6001600160a01b031660009081526001602052604090205490565b3480156104eb57600080fd5b50610425610a60565b34801561050057600080fd5b506103ae7f000000000000000000000000000000000000000000000000000000000000000081565b34801561053457600080fd5b506102b7610a96565b34801561054957600080fd5b50610425610558366004612066565b610ad1565b34801561056957600080fd5b50610425610578366004611fd8565b610b26565b34801561058957600080fd5b5061042561059836600461209f565b610bad565b3480156105a957600080fd5b50610425610d15565b3480156105be57600080fd5b506000546001600160a01b03166103ae565b3480156105dc57600080fd5b50610281610d52565b3480156105f157600080fd5b50610425610600366004612066565b610d61565b34801561061157600080fd5b50610425610e1e565b34801561062657600080fd5b506102b7610635366004611fac565b61101b565b34801561064657600080fd5b506102b7610655366004611fac565b6110b4565b34801561066657600080fd5b506102b7610675366004611fd8565b60156020526000908152604090205460ff1681565b34801561069657600080fd5b50600c546102b790610100900460ff1681565b3480156106b557600080fd5b506104256106c4366004612066565b6110c1565b3480156106d557600080fd5b506102d860085481565b3480156106eb57600080fd5b506102d860125481565b34801561070157600080fd5b506102d8600e5481565b34801561071757600080fd5b506102b7610726366004611fd8565b600d6020526000908152604090205460ff1681565b34801561074757600080fd5b506102d861075636600461209f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561078d57600080fd5b506102b761079c366004611fd8565b60136020526000908152604090205460ff1681565b3480156107bd57600080fd5b506102d860095481565b3480156107d357600080fd5b506104256107e2366004611fd8565b61114a565b3480156107f357600080fd5b506102d8600a5481565b60606004805461080c906120cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610838906120cd565b80156108855780601f1061085a57610100808354040283529160200191610885565b820191906000526020600020905b81548152906001019060200180831161086857829003601f168201915b5050505050905090565b600061089c3384846111e5565b5060015b92915050565b60006108b3848484611309565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561093d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61094a85338584036111e5565b60019150505b9392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161089c91859061098e90869061211d565b6111e5565b6000546001600160a01b031633146109bd5760405162461bcd60e51b815260040161093490612130565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610a0a576040519150601f19603f3d011682016040523d82523d6000602084013e610a0f565b606091505b5050905080610a1d57600080fd5b5050565b6000546001600160a01b03163314610a4b5760405162461bcd60e51b815260040161093490612130565b600f829055600e919091556011819055601055565b6000546001600160a01b03163314610a8a5760405162461bcd60e51b815260040161093490612130565b610a9460006118ef565b565b600080546001600160a01b03163314610ac15760405162461bcd60e51b815260040161093490612130565b50600c805460ff19169055600190565b6000546001600160a01b03163314610afb5760405162461bcd60e51b815260040161093490612130565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b505760405162461bcd60e51b815260040161093490612130565b6007546040516001600160a01b03918216918316907fa982575859d7ad2f390dc12b23f7dab8bbda047f9d0140ac68344b27bf34bfb490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bd75760405162461bcd60e51b815260040161093490612130565b6001600160a01b038216610c2d5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610934565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c989190612165565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0f919061217e565b50505050565b6000546001600160a01b03163314610d3f5760405162461bcd60e51b815260040161093490612130565b600c805462ffff00191662010100179055565b60606005805461080c906120cd565b6000546001600160a01b03163314610d8b5760405162461bcd60e51b815260040161093490612130565b6006546001600160a01b03610100909104811690831603610e145760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610934565b610a1d828261193f565b6000546001600160a01b03163314610e485760405162461bcd60e51b815260040161093490612130565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eca919061219b565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5b919061219b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcc919061219b565b60068054610100600160a81b0319166101006001600160a01b039384168102919091179182905561100192910416600161193f565b30600090815260016020526040902054610a949047611993565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561109d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610934565b6110aa33858584036111e5565b5060019392505050565b600061089c338484611309565b6000546001600160a01b031633146110eb5760405162461bcd60e51b815260040161093490612130565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b031633146111745760405162461bcd60e51b815260040161093490612130565b6001600160a01b0381166111d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610934565b6111e2816118ef565b50565b6001600160a01b0383166112475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610934565b6001600160a01b0382166112a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610934565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661136d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610934565b6001600160a01b0382166113cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610934565b6000811161141f5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964207472616e7366657220616d6f756e740000000000000000006044820152606401610934565b600c5460ff16156117a5576000546001600160a01b0384811691161480159061145657506000546001600160a01b03838116911614155b801561146a57506001600160a01b03821615155b80156114805750600654600160a81b900460ff16155b156117a557600c54610100900460ff16611518576001600160a01b03831660009081526014602052604090205460ff16806114d357506001600160a01b03821660009081526014602052604090205460ff165b6115185760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610934565b6001600160a01b03831660009081526015602052604090205460ff16801561155957506001600160a01b03821660009081526014602052604090205460ff16155b1561163d576008548111156115ce5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610934565b600a546001600160a01b0383166000908152600160205260409020546115f4908361211d565b11156116385760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610934565b6117a5565b6001600160a01b03821660009081526015602052604090205460ff16801561167e57506001600160a01b03831660009081526014602052604090205460ff16155b156116f4576008548111156116385760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610934565b6001600160a01b03821660009081526014602052604090205460ff1615801561173657506001600160a01b03821660009081526015602052604090205460ff16155b156117a557600a546001600160a01b038316600090815260016020526040902054611761908361211d565b11156117a55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610934565b600954811080159081906117c15750600c5462010000900460ff165b80156117d75750600654600160a81b900460ff16155b80156117fb57506001600160a01b03831660009081526015602052604090205460ff165b801561182057506001600160a01b03841660009081526013602052604090205460ff16155b1561182d5761182d611a99565b600061183a858585611b12565b6001600160a01b0386166000908152600160205260408120805492935085929091906118679084906121b8565b90915550506001600160a01b0384166000908152600160205260408120805483929061189490849061211d565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118e091815260200190565b60405180910390a35050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6119be307f0000000000000000000000000000000000000000000000000000000000000000846111e5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080611a056000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611a6d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a9291906121cb565b5050505050565b30600090815260016020526040902054600b54811115611ab85750600b545b6009548190811115611acd57611acd81611d69565b600060128190556007546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611b0d573d6000803e3d6000fd5b505050565b6007546001600160a01b0384811660009081526013602052604081205490928492169060ff16158015611b5e57506001600160a01b03851660009081526013602052604090205460ff16155b15611d31576000546001600160a01b0387811691161480611b8c57506000546001600160a01b038681169116145b80611b9f57506001600160a01b03861630145b80611bb257506001600160a01b03851630145b15611bc05760009150611cb3565b6001600160a01b03851660009081526015602052604090205460ff1615611c4a57606460105485611bf191906121f9565b611bfb9190612210565b9150600082118015611c0f57506000601054115b15611c4557601054601154611c2490846121f9565b611c2e9190612210565b60126000828254611c3f919061211d565b90915550505b611cb3565b6001600160a01b03861660009081526015602052604090205460ff1615611cae576064600e5485611c7b91906121f9565b611c859190612210565b9150600082118015611c9957506000600e54115b15611c4557600e54600f54611c2490846121f9565b600091505b8115611d1e573060009081526001602052604081208054849290611cd890849061211d565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611d2882856121b8565b92505050610950565b6001600160a01b03811660009081526001602052604081208054849290611d5990849061211d565b9091555084935061095092505050565b6006805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611db157611db1612232565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e53919061219b565b81600181518110611e6657611e66612232565b60200260200101906001600160a01b031690816001600160a01b031681525050611eb1307f0000000000000000000000000000000000000000000000000000000000000000846111e5565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611f06908590600090869030904290600401612248565b600060405180830381600087803b158015611f2057600080fd5b505af1158015611f34573d6000803e3d6000fd5b50506006805460ff60a81b1916905550505050565b600060208083528351808285015260005b81811015611f7657858101830151858201604001528201611f5a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146111e257600080fd5b60008060408385031215611fbf57600080fd5b8235611fca81611f97565b946020939093013593505050565b600060208284031215611fea57600080fd5b813561095081611f97565b60008060006060848603121561200a57600080fd5b833561201581611f97565b9250602084013561202581611f97565b929592945050506040919091013590565b6000806040838503121561204957600080fd5b50508035926020909101359150565b80151581146111e257600080fd5b6000806040838503121561207957600080fd5b823561208481611f97565b9150602083013561209481612058565b809150509250929050565b600080604083850312156120b257600080fd5b82356120bd81611f97565b9150602083013561209481611f97565b600181811c908216806120e157607f821691505b60208210810361210157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108a0576108a0612107565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561217757600080fd5b5051919050565b60006020828403121561219057600080fd5b815161095081612058565b6000602082840312156121ad57600080fd5b815161095081611f97565b818103818111156108a0576108a0612107565b6000806000606084860312156121e057600080fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176108a0576108a0612107565b60008261222d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122985784516001600160a01b031683529383019391830191600101612273565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c3bd57f7de0cd354e5eb417fe6f4c090438695a91004a7fe273fafa0b86e08ca64736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102605760003560e01c80637571336a11610144578063bbc0c742116100b6578063dbac26e91161007a578063dbac26e91461070b578063dd62ed3e1461073b578063e0bf7fd114610781578063e2f45605146107b1578063f2fde38b146107c7578063f8b45b05146107e757600080fd5b8063bbc0c7421461068a578063c0246668146106a9578063c8c8ebe4146106c9578063cc2ffe7c146106df578063d85ba063146106f557600080fd5b806395d89b411161010857806395d89b41146105d05780639a7a23d6146105e55780639e78fb4f14610605578063a457c2d71461061a578063a9059cbb1461063a578063b62496f51461065a57600080fd5b80637571336a1461053d578063809d458d1461055d5780638993be681461057d5780638a8c523c1461059d5780638da5cb5b146105b257600080fd5b80634a62bb65116101dd5780636db79437116101a15780636db79437146104695780636ddd17131461048957806370a08231146104a9578063715018a6146104df578063735de9f7146104f4578063751039fc1461052857600080fd5b80634a62bb65146103eb5780634d036434146104055780635c068a8c146104275780636a486a8e1461043d5780636b2fb1241461045357600080fd5b80632f2dae7f116102245780632f2dae7f14610336578063313ce5671461034c578063395093511461036e5780634626402b1461038e57806349bd5a5e146103c657600080fd5b806306fdde031461026c578063095ea7b31461029757806318160ddd146102c7578063222a5db6146102e657806323b872dd1461031657600080fd5b3661026757005b600080fd5b34801561027857600080fd5b506102816107fd565b60405161028e9190611f49565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004611fac565b61088f565b604051901515815260200161028e565b3480156102d357600080fd5b506003545b60405190815260200161028e565b3480156102f257600080fd5b506102b7610301366004611fd8565b60146020526000908152604090205460ff1681565b34801561032257600080fd5b506102b7610331366004611ff5565b6108a6565b34801561034257600080fd5b506102d8600b5481565b34801561035857600080fd5b5060065460405160ff909116815260200161028e565b34801561037a57600080fd5b506102b7610389366004611fac565b610957565b34801561039a57600080fd5b506007546103ae906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b3480156103d257600080fd5b506006546103ae9061010090046001600160a01b031681565b3480156103f757600080fd5b50600c546102b79060ff1681565b34801561041157600080fd5b50610425610420366004611fd8565b610993565b005b34801561043357600080fd5b506102d8600f5481565b34801561044957600080fd5b506102d860105481565b34801561045f57600080fd5b506102d860115481565b34801561047557600080fd5b50610425610484366004612036565b610a21565b34801561049557600080fd5b50600c546102b79062010000900460ff1681565b3480156104b557600080fd5b506102d86104c4366004611fd8565b6001600160a01b031660009081526001602052604090205490565b3480156104eb57600080fd5b50610425610a60565b34801561050057600080fd5b506103ae7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561053457600080fd5b506102b7610a96565b34801561054957600080fd5b50610425610558366004612066565b610ad1565b34801561056957600080fd5b50610425610578366004611fd8565b610b26565b34801561058957600080fd5b5061042561059836600461209f565b610bad565b3480156105a957600080fd5b50610425610d15565b3480156105be57600080fd5b506000546001600160a01b03166103ae565b3480156105dc57600080fd5b50610281610d52565b3480156105f157600080fd5b50610425610600366004612066565b610d61565b34801561061157600080fd5b50610425610e1e565b34801561062657600080fd5b506102b7610635366004611fac565b61101b565b34801561064657600080fd5b506102b7610655366004611fac565b6110b4565b34801561066657600080fd5b506102b7610675366004611fd8565b60156020526000908152604090205460ff1681565b34801561069657600080fd5b50600c546102b790610100900460ff1681565b3480156106b557600080fd5b506104256106c4366004612066565b6110c1565b3480156106d557600080fd5b506102d860085481565b3480156106eb57600080fd5b506102d860125481565b34801561070157600080fd5b506102d8600e5481565b34801561071757600080fd5b506102b7610726366004611fd8565b600d6020526000908152604090205460ff1681565b34801561074757600080fd5b506102d861075636600461209f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561078d57600080fd5b506102b761079c366004611fd8565b60136020526000908152604090205460ff1681565b3480156107bd57600080fd5b506102d860095481565b3480156107d357600080fd5b506104256107e2366004611fd8565b61114a565b3480156107f357600080fd5b506102d8600a5481565b60606004805461080c906120cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610838906120cd565b80156108855780601f1061085a57610100808354040283529160200191610885565b820191906000526020600020905b81548152906001019060200180831161086857829003601f168201915b5050505050905090565b600061089c3384846111e5565b5060015b92915050565b60006108b3848484611309565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561093d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61094a85338584036111e5565b60019150505b9392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161089c91859061098e90869061211d565b6111e5565b6000546001600160a01b031633146109bd5760405162461bcd60e51b815260040161093490612130565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610a0a576040519150601f19603f3d011682016040523d82523d6000602084013e610a0f565b606091505b5050905080610a1d57600080fd5b5050565b6000546001600160a01b03163314610a4b5760405162461bcd60e51b815260040161093490612130565b600f829055600e919091556011819055601055565b6000546001600160a01b03163314610a8a5760405162461bcd60e51b815260040161093490612130565b610a9460006118ef565b565b600080546001600160a01b03163314610ac15760405162461bcd60e51b815260040161093490612130565b50600c805460ff19169055600190565b6000546001600160a01b03163314610afb5760405162461bcd60e51b815260040161093490612130565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b505760405162461bcd60e51b815260040161093490612130565b6007546040516001600160a01b03918216918316907fa982575859d7ad2f390dc12b23f7dab8bbda047f9d0140ac68344b27bf34bfb490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bd75760405162461bcd60e51b815260040161093490612130565b6001600160a01b038216610c2d5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610934565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c989190612165565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0f919061217e565b50505050565b6000546001600160a01b03163314610d3f5760405162461bcd60e51b815260040161093490612130565b600c805462ffff00191662010100179055565b60606005805461080c906120cd565b6000546001600160a01b03163314610d8b5760405162461bcd60e51b815260040161093490612130565b6006546001600160a01b03610100909104811690831603610e145760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610934565b610a1d828261193f565b6000546001600160a01b03163314610e485760405162461bcd60e51b815260040161093490612130565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eca919061219b565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5b919061219b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcc919061219b565b60068054610100600160a81b0319166101006001600160a01b039384168102919091179182905561100192910416600161193f565b30600090815260016020526040902054610a949047611993565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561109d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610934565b6110aa33858584036111e5565b5060019392505050565b600061089c338484611309565b6000546001600160a01b031633146110eb5760405162461bcd60e51b815260040161093490612130565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b031633146111745760405162461bcd60e51b815260040161093490612130565b6001600160a01b0381166111d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610934565b6111e2816118ef565b50565b6001600160a01b0383166112475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610934565b6001600160a01b0382166112a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610934565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661136d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610934565b6001600160a01b0382166113cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610934565b6000811161141f5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964207472616e7366657220616d6f756e740000000000000000006044820152606401610934565b600c5460ff16156117a5576000546001600160a01b0384811691161480159061145657506000546001600160a01b03838116911614155b801561146a57506001600160a01b03821615155b80156114805750600654600160a81b900460ff16155b156117a557600c54610100900460ff16611518576001600160a01b03831660009081526014602052604090205460ff16806114d357506001600160a01b03821660009081526014602052604090205460ff165b6115185760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610934565b6001600160a01b03831660009081526015602052604090205460ff16801561155957506001600160a01b03821660009081526014602052604090205460ff16155b1561163d576008548111156115ce5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610934565b600a546001600160a01b0383166000908152600160205260409020546115f4908361211d565b11156116385760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610934565b6117a5565b6001600160a01b03821660009081526015602052604090205460ff16801561167e57506001600160a01b03831660009081526014602052604090205460ff16155b156116f4576008548111156116385760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610934565b6001600160a01b03821660009081526014602052604090205460ff1615801561173657506001600160a01b03821660009081526015602052604090205460ff16155b156117a557600a546001600160a01b038316600090815260016020526040902054611761908361211d565b11156117a55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610934565b600954811080159081906117c15750600c5462010000900460ff165b80156117d75750600654600160a81b900460ff16155b80156117fb57506001600160a01b03831660009081526015602052604090205460ff165b801561182057506001600160a01b03841660009081526013602052604090205460ff16155b1561182d5761182d611a99565b600061183a858585611b12565b6001600160a01b0386166000908152600160205260408120805492935085929091906118679084906121b8565b90915550506001600160a01b0384166000908152600160205260408120805483929061189490849061211d565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118e091815260200190565b60405180910390a35050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6119be307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846111e5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080611a056000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611a6d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a9291906121cb565b5050505050565b30600090815260016020526040902054600b54811115611ab85750600b545b6009548190811115611acd57611acd81611d69565b600060128190556007546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611b0d573d6000803e3d6000fd5b505050565b6007546001600160a01b0384811660009081526013602052604081205490928492169060ff16158015611b5e57506001600160a01b03851660009081526013602052604090205460ff16155b15611d31576000546001600160a01b0387811691161480611b8c57506000546001600160a01b038681169116145b80611b9f57506001600160a01b03861630145b80611bb257506001600160a01b03851630145b15611bc05760009150611cb3565b6001600160a01b03851660009081526015602052604090205460ff1615611c4a57606460105485611bf191906121f9565b611bfb9190612210565b9150600082118015611c0f57506000601054115b15611c4557601054601154611c2490846121f9565b611c2e9190612210565b60126000828254611c3f919061211d565b90915550505b611cb3565b6001600160a01b03861660009081526015602052604090205460ff1615611cae576064600e5485611c7b91906121f9565b611c859190612210565b9150600082118015611c9957506000600e54115b15611c4557600e54600f54611c2490846121f9565b600091505b8115611d1e573060009081526001602052604081208054849290611cd890849061211d565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611d2882856121b8565b92505050610950565b6001600160a01b03811660009081526001602052604081208054849290611d5990849061211d565b9091555084935061095092505050565b6006805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611db157611db1612232565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e53919061219b565b81600181518110611e6657611e66612232565b60200260200101906001600160a01b031690816001600160a01b031681525050611eb1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846111e5565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611f06908590600090869030904290600401612248565b600060405180830381600087803b158015611f2057600080fd5b505af1158015611f34573d6000803e3d6000fd5b50506006805460ff60a81b1916905550505050565b600060208083528351808285015260005b81811015611f7657858101830151858201604001528201611f5a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146111e257600080fd5b60008060408385031215611fbf57600080fd5b8235611fca81611f97565b946020939093013593505050565b600060208284031215611fea57600080fd5b813561095081611f97565b60008060006060848603121561200a57600080fd5b833561201581611f97565b9250602084013561202581611f97565b929592945050506040919091013590565b6000806040838503121561204957600080fd5b50508035926020909101359150565b80151581146111e257600080fd5b6000806040838503121561207957600080fd5b823561208481611f97565b9150602083013561209481612058565b809150509250929050565b600080604083850312156120b257600080fd5b82356120bd81611f97565b9150602083013561209481611f97565b600181811c908216806120e157607f821691505b60208210810361210157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108a0576108a0612107565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561217757600080fd5b5051919050565b60006020828403121561219057600080fd5b815161095081612058565b6000602082840312156121ad57600080fd5b815161095081611f97565b818103818111156108a0576108a0612107565b6000806000606084860312156121e057600080fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176108a0576108a0612107565b60008261222d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122985784516001600160a01b031683529383019391830191600101612273565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c3bd57f7de0cd354e5eb417fe6f4c090438695a91004a7fe273fafa0b86e08ca64736f6c63430008130033

Deployed Bytecode Sourcemap

3116:13123:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5571:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6464:193;;;;;;;;;;-1:-1:-1;6464:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6464:193:0;1023:187:1;5848:91:0;;;;;;;;;;-1:-1:-1;5919:12:0;;5848:91;;;1361:25:1;;;1349:2;1334:18;5848:91:0;1215:177:1;4172:54:0;;;;;;;;;;-1:-1:-1;4172:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6665:521;;;;;;;;;;-1:-1:-1;6665:521:0;;;;;:::i;:::-;;:::i;3719:27::-;;;;;;;;;;;;;;;;5757:83;;;;;;;;;;-1:-1:-1;5823:9:0;;5757:83;;5823:9;;;;2252:36:1;;2240:2;2225:18;5757:83:0;2110:184:1;7194:280:0;;;;;;;;;;-1:-1:-1;7194:280:0;;;;;:::i;:::-;;:::i;3568:29::-;;;;;;;;;;-1:-1:-1;3568:29:0;;;;-1:-1:-1;;;;;3568:29:0;;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;3568:29:0;2299:203:1;3501:28:0;;;;;;;;;;-1:-1:-1;3501:28:0;;;;;;;-1:-1:-1;;;;;3501:28:0;;;3755:33;;;;;;;;;;-1:-1:-1;3755:33:0;;;;;;;;16077:159;;;;;;;;;;-1:-1:-1;16077:159:0;;;;;:::i;:::-;;:::i;:::-;;3961:29;;;;;;;;;;;;;;;;3999:28;;;;;;;;;;;;;;;;4034:30;;;;;;;;;;;;;;;;9106:293;;;;;;;;;;-1:-1:-1;9106:293:0;;;;;:::i;:::-;;:::i;3835:31::-;;;;;;;;;;-1:-1:-1;3835:31:0;;;;;;;;;;;5947:110;;;;;;;;;;-1:-1:-1;5947:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;6031:18:0;6004:7;6031:18;;;:9;:18;;;;;;;5947:110;2561:103;;;;;;;;;;;;;:::i;3445:49::-;;;;;;;;;;;;;;;8811:121;;;;;;;;;;;;;:::i;8940:158::-;;;;;;;;;;-1:-1:-1;8940:158:0;;;;;:::i;:::-;;:::i;10105:177::-;;;;;;;;;;-1:-1:-1;10105:177:0;;;;;:::i;:::-;;:::i;15793:276::-;;;;;;;;;;-1:-1:-1;15793:276:0;;;;;:::i;:::-;;:::i;8691:112::-;;;;;;;;;;;;;:::i;2338:87::-;;;;;;;;;;-1:-1:-1;2384:7:0;2411:6;-1:-1:-1;;;;;2411:6:0;2338:87;;5662;;;;;;;;;;;;;:::i;9597:304::-;;;;;;;;;;-1:-1:-1;9597:304:0;;;;;:::i;:::-;;:::i;8335:348::-;;;;;;;;;;;;;:::i;7482:465::-;;;;;;;;;;-1:-1:-1;7482:465:0;;;;;:::i;:::-;;:::i;6065:199::-;;;;;;;;;;-1:-1:-1;6065:199:0;;;;;:::i;:::-;;:::i;4235:57::-;;;;;;;;;;-1:-1:-1;4235:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3795:33;;;;;;;;;;-1:-1:-1;3795:33:0;;;;;;;;;;;9407:182;;;;;;;;;;-1:-1:-1;9407:182:0;;;;;:::i;:::-;;:::i;3606:35::-;;;;;;;;;;;;;;;;4073:32;;;;;;;;;;;;;;;;3927:27;;;;;;;;;;;;;;;;3875:43;;;;;;;;;;-1:-1:-1;3875:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6272:184;;;;;;;;;;-1:-1:-1;6272:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;6421:18:0;;;6389:7;6421:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6272:184;4114:51;;;;;;;;;;-1:-1:-1;4114:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3648:33;;;;;;;;;;;;;;;;2672:238;;;;;;;;;;-1:-1:-1;2672:238:0;;;;;:::i;:::-;;:::i;3688:24::-;;;;;;;;;;;;;;;;5571:83;5608:13;5641:5;5634:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5571:83;:::o;6464:193::-;6566:4;6588:39;1939:10;6611:7;6620:6;6588:8;:39::i;:::-;-1:-1:-1;6645:4:0;6464:193;;;;;:::o;6665:521::-;6797:4;6814:36;6824:6;6832:9;6843:6;6814:9;:36::i;:::-;-1:-1:-1;;;;;6890:19:0;;6863:24;6890:19;;;:11;:19;;;;;;;;1939:10;6890:33;;;;;;;;6956:26;;;;6934:116;;;;-1:-1:-1;;;6934:116:0;;4483:2:1;6934:116:0;;;4465:21:1;4522:2;4502:18;;;4495:30;4561:34;4541:18;;;4534:62;-1:-1:-1;;;4612:18:1;;;4605:38;4660:19;;6934:116:0;;;;;;;;;7086:57;7095:6;1939:10;7136:6;7117:16;:25;7086:8;:57::i;:::-;7174:4;7167:11;;;6665:521;;;;;;:::o;7194:280::-;1939:10;7292:4;7386:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7386:34:0;;;;;;;;;;7292:4;;7314:130;;7364:7;;7386:47;;7423:10;;7386:47;:::i;:::-;7314:8;:130::i;16077:159::-;2384:7;2411:6;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;16138:12:::1;16156:6;-1:-1:-1::0;;;;;16156:11:0::1;16175:21;16156:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16137:64;;;16220:7;16212:16;;;::::0;::::1;;16126:110;16077:159:::0;:::o;9106:293::-;2384:7;2411:6;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;9230:14:::1;:32:::0;;;9273:12:::1;:29:::0;;;;9315:15:::1;:34:::0;;;9360:13:::1;:31:::0;9106:293::o;2561:103::-;2384:7;2411:6;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;2626:30:::1;2653:1;2626:18;:30::i;:::-;2561:103::o:0;8811:121::-;8863:4;2411:6;;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;-1:-1:-1;8880:14:0::1;:22:::0;;-1:-1:-1;;8880:22:0::1;::::0;;;8811:121;:::o;8940:158::-;2384:7;2411:6;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9053:30:0;;;::::1;;::::0;;;:22:::1;:30;::::0;;;;:37;;-1:-1:-1;;9053:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8940:158::o;10105:177::-;2384:7;2411:6;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;10222:14:::1;::::0;10189:48:::1;::::0;-1:-1:-1;;;;;10222:14:0;;::::1;::::0;10189:48;::::1;::::0;::::1;::::0;10222:14:::1;::::0;10189:48:::1;10248:14;:26:::0;;-1:-1:-1;;;;;;10248:26:0::1;-1:-1:-1::0;;;;;10248:26:0;;;::::1;::::0;;;::::1;::::0;;10105:177::o;15793:276::-;2384:7;2411:6;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15876:20:0;::::1;15868:59;;;::::0;-1:-1:-1;;;15868:59:0;;5725:2:1;15868:59:0::1;::::0;::::1;5707:21:1::0;5764:2;5744:18;;;5737:30;5803:28;5783:18;;;5776:56;5849:18;;15868:59:0::1;5523:350:1::0;15868:59:0::1;15965:39;::::0;-1:-1:-1;;;15965:39:0;;15998:4:::1;15965:39;::::0;::::1;2445:51:1::0;15938:24:0::1;::::0;-1:-1:-1;;;;;15965:24:0;::::1;::::0;::::1;::::0;2418:18:1;;15965:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16015:46;::::0;-1:-1:-1;;;16015:46:0;;-1:-1:-1;;;;;6259:32:1;;;16015:46:0::1;::::0;::::1;6241:51:1::0;6308:18;;;6301:34;;;15938:66:0;;-1:-1:-1;16015:23:0;;::::1;::::0;::::1;::::0;6214:18:1;;16015:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15857:212;15793:276:::0;;:::o;8691:112::-;2384:7;2411:6;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;8746:13:::1;:20:::0;;-1:-1:-1;;8777:18:0;;;;;8691:112::o;5662:87::-;5701:13;5734:7;5727:14;;;;;:::i;9597:304::-;2384:7;2411:6;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;9741:13:::1;::::0;-1:-1:-1;;;;;9741:13:0::1;::::0;;::::1;::::0;::::1;9733:21:::0;;::::1;::::0;9711:128:::1;;;::::0;-1:-1:-1;;;9711:128:0;;6798:2:1;9711:128:0::1;::::0;::::1;6780:21:1::0;6837:2;6817:18;;;6810:30;6876:34;6856:18;;;6849:62;6947:27;6927:18;;;6920:55;6992:19;;9711:128:0::1;6596:421:1::0;9711:128:0::1;9852:41;9881:4;9887:5;9852:28;:41::i;8335:348::-:0;2384:7;2411:6;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;8421:13:::1;-1:-1:-1::0;;;;;8421:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8403:53:0::1;;8479:4;8499:13;-1:-1:-1::0;;;;;8499:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8403:127;::::0;-1:-1:-1;;;;;;8403:127:0::1;::::0;;;;;;-1:-1:-1;;;;;7508:15:1;;;8403:127:0::1;::::0;::::1;7490:34:1::0;7560:15;;7540:18;;;7533:43;7425:18;;8403:127:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8387:13;:143:::0;;-1:-1:-1;;;;;;8387:143:0::1;;-1:-1:-1::0;;;;;8387:143:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;8543:58:::1;::::0;8580:13;::::1;;-1:-1:-1::0;8543:28:0::1;:58::i;:::-;8645:4;6004:7:::0;6031:18;;;:9;:18;;;;;;8614:61:::1;::::0;8653:21:::1;8614:12;:61::i;7482:465::-:0;1939:10;7585:4;7634:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7634:34:0;;;;;;;;;;7701:35;;;;7679:122;;;;-1:-1:-1;;;7679:122:0;;7789:2:1;7679:122:0;;;7771:21:1;7828:2;7808:18;;;7801:30;7867:34;7847:18;;;7840:62;-1:-1:-1;;;7918:18:1;;;7911:35;7963:19;;7679:122:0;7587:401:1;7679:122:0;7837:67;1939:10;7860:7;7888:15;7869:16;:34;7837:8;:67::i;:::-;-1:-1:-1;7935:4:0;;7482:465;-1:-1:-1;;;7482:465:0:o;6065:199::-;6170:4;6192:42;1939:10;6216:9;6227:6;6192:9;:42::i;9407:182::-;2384:7;2411:6;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9492:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;9492:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;9547:34;;1163:41:1;;;9547:34:0::1;::::0;1136:18:1;9547:34:0::1;;;;;;;9407:182:::0;;:::o;2672:238::-;2384:7;2411:6;-1:-1:-1;;;;;2411:6:0;1939:10;2473:23;2465:68;;;;-1:-1:-1;;;2465:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2775:22:0;::::1;2753:110;;;::::0;-1:-1:-1;;;2753:110:0;;8195:2:1;2753:110:0::1;::::0;::::1;8177:21:1::0;8234:2;8214:18;;;8207:30;8273:34;8253:18;;;8246:62;-1:-1:-1;;;8324:18:1;;;8317:36;8370:19;;2753:110:0::1;7993:402:1::0;2753:110:0::1;2874:28;2893:8;2874:18;:28::i;:::-;2672:238:::0;:::o;7955:372::-;-1:-1:-1;;;;;8083:19:0;;8075:68;;;;-1:-1:-1;;;8075:68:0;;8602:2:1;8075:68:0;;;8584:21:1;8641:2;8621:18;;;8614:30;8680:34;8660:18;;;8653:62;-1:-1:-1;;;8731:18:1;;;8724:34;8775:19;;8075:68:0;8400:400:1;8075:68:0;-1:-1:-1;;;;;8162:21:0;;8154:68;;;;-1:-1:-1;;;8154:68:0;;9007:2:1;8154:68:0;;;8989:21:1;9046:2;9026:18;;;9019:30;9085:34;9065:18;;;9058:62;-1:-1:-1;;;9136:18:1;;;9129:32;9178:19;;8154:68:0;8805:398:1;8154:68:0;-1:-1:-1;;;;;8235:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8287:32;;1361:25:1;;;8287:32:0;;1334:18:1;8287:32:0;;;;;;;7955:372;;;:::o;10290:2486::-;-1:-1:-1;;;;;10413:18:0;;10405:68;;;;-1:-1:-1;;;10405:68:0;;9410:2:1;10405:68:0;;;9392:21:1;9449:2;9429:18;;;9422:30;9488:34;9468:18;;;9461:62;-1:-1:-1;;;9539:18:1;;;9532:35;9584:19;;10405:68:0;9208:401:1;10405:68:0;-1:-1:-1;;;;;10492:16:0;;10484:64;;;;-1:-1:-1;;;10484:64:0;;9816:2:1;10484:64:0;;;9798:21:1;9855:2;9835:18;;;9828:30;9894:34;9874:18;;;9867:62;-1:-1:-1;;;9945:18:1;;;9938:33;9988:19;;10484:64:0;9614:399:1;10484:64:0;10576:1;10567:6;:10;10559:46;;;;-1:-1:-1;;;10559:46:0;;10220:2:1;10559:46:0;;;10202:21:1;10259:2;10239:18;;;10232:30;10298:25;10278:18;;;10271:53;10341:18;;10559:46:0;10018:347:1;10559:46:0;10622:14;;;;10618:1681;;;2384:7;2411:6;-1:-1:-1;;;;;10675:15:0;;;2411:6;;10675:15;;;;:49;;-1:-1:-1;2384:7:0;2411:6;-1:-1:-1;;;;;10711:13:0;;;2411:6;;10711:13;;10675:49;:86;;;;-1:-1:-1;;;;;;10745:16:0;;;;10675:86;:116;;;;-1:-1:-1;10783:8:0;;-1:-1:-1;;;10783:8:0;;;;10782:9;10675:116;10653:1635;;;10831:13;;;;;;;10826:258;;-1:-1:-1;;;;;10903:28:0;;;;;;:22;:28;;;;;;;;;:87;;-1:-1:-1;;;;;;10964:26:0;;;;;;:22;:26;;;;;;;;10903:87;10869:195;;;;-1:-1:-1;;;10869:195:0;;10572:2:1;10869:195:0;;;10554:21:1;10611:2;10591:18;;;10584:30;-1:-1:-1;;;10630:18:1;;;10623:52;10692:18;;10869:195:0;10370:346:1;10869:195:0;-1:-1:-1;;;;;11130:31:0;;;;;;:25;:31;;;;;;;;:83;;;;-1:-1:-1;;;;;;11187:26:0;;;;;;:22;:26;;;;;;;;11186:27;11130:83;11104:1169;;;11300:20;;11290:6;:30;;11256:169;;;;-1:-1:-1;;;11256:169:0;;10923:2:1;11256:169:0;;;10905:21:1;10962:2;10942:18;;;10935:30;11001:34;10981:18;;;10974:62;-1:-1:-1;;;11052:18:1;;;11045:51;11113:19;;11256:169:0;10721:417:1;11256:169:0;11508:9;;-1:-1:-1;;;;;6031:18:0;;6004:7;6031:18;;;:9;:18;;;;;;11482:22;;:6;:22;:::i;:::-;:35;;11448:140;;;;-1:-1:-1;;;11448:140:0;;11345:2:1;11448:140:0;;;11327:21:1;11384:2;11364:18;;;11357:30;-1:-1:-1;;;11403:18:1;;;11396:49;11462:18;;11448:140:0;11143:343:1;11448:140:0;11104:1169;;;-1:-1:-1;;;;;11640:29:0;;;;;;:25;:29;;;;;;;;:83;;;;-1:-1:-1;;;;;;11695:28:0;;;;;;:22;:28;;;;;;;;11694:29;11640:83;11614:659;;;11810:20;;11800:6;:30;;11766:170;;;;-1:-1:-1;;;11766:170:0;;11693:2:1;11766:170:0;;;11675:21:1;11732:2;11712:18;;;11705:30;11771:34;11751:18;;;11744:62;-1:-1:-1;;;11822:18:1;;;11815:52;11884:19;;11766:170:0;11491:418:1;11614:659:0;-1:-1:-1;;;;;11989:26:0;;;;;;:22;:26;;;;;;;;11988:27;:82;;;;-1:-1:-1;;;;;;12041:29:0;;;;;;:25;:29;;;;;;;;12040:30;11988:82;11962:311;;;12173:9;;-1:-1:-1;;;;;6031:18:0;;6004:7;6031:18;;;:9;:18;;;;;;12147:22;;:6;:22;:::i;:::-;:35;;12113:140;;;;-1:-1:-1;;;12113:140:0;;11345:2:1;12113:140:0;;;11327:21:1;11384:2;11364:18;;;11357:30;-1:-1:-1;;;11403:18:1;;;11396:49;11462:18;;12113:140:0;11143:343:1;12113:140:0;12336:18;;12326:28;;;;;;;12385:35;;-1:-1:-1;12409:11:0;;;;;;;12385:35;:61;;;;-1:-1:-1;12438:8:0;;-1:-1:-1;;;12438:8:0;;;;12437:9;12385:61;:107;;;;-1:-1:-1;;;;;;12463:29:0;;;;;;:25;:29;;;;;;;;12385:107;:150;;;;-1:-1:-1;;;;;;12510:25:0;;;;;;:19;:25;;;;;;;;12509:26;12385:150;12367:217;;;12562:10;:8;:10::i;:::-;12596:17;12616:32;12631:4;12637:2;12641:6;12616:14;:32::i;:::-;-1:-1:-1;;;;;12661:15:0;;;;;;:9;:15;;;;;:25;;12596:52;;-1:-1:-1;12680:6:0;;12661:15;;;:25;;12680:6;;12661:25;:::i;:::-;;;;-1:-1:-1;;;;;;;12697:13:0;;;;;;:9;:13;;;;;:26;;12714:9;;12697:13;:26;;12714:9;;12697:26;:::i;:::-;;;;;;;;12754:2;-1:-1:-1;;;;;12739:29:0;12748:4;-1:-1:-1;;;;;12739:29:0;;12758:9;12739:29;;;;1361:25:1;;1349:2;1334:18;;1215:177;12739:29:0;;;;;;;;10394:2382;;10290:2486;;;:::o;2918:191::-;2992:16;3011:6;;-1:-1:-1;;;;;3028:17:0;;;-1:-1:-1;;;;;;3028:17:0;;;;;;3061:40;;3011:6;;;;;;;3061:40;;2992:16;3061:40;2981:128;2918:191;:::o;9909:188::-;-1:-1:-1;;;;;9992:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;9992:39:0;;;;;;;;;;10049:40;;9992:39;;:31;10049:40;;;9909:188;;:::o;14897:412::-;14978:60;14995:4;15010:13;15026:11;14978:8;:60::i;:::-;15051:13;-1:-1:-1;;;;;15051:29:0;;15088:9;15121:4;15141:11;15167:1;15210;15253:7;2384;2411:6;-1:-1:-1;;;;;2411:6:0;;2338:87;15253:7;15051:250;;;;;;-1:-1:-1;;;;;;15051:250:0;;;-1:-1:-1;;;;;12406:15:1;;;15051:250:0;;;12388:34:1;12438:18;;;12431:34;;;;12481:18;;;12474:34;;;;12524:18;;;12517:34;12588:15;;;12567:19;;;12560:44;15275:15:0;12620:19:1;;;12613:35;12322:19;;15051:250:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14897:412;;:::o;15317:468::-;15400:4;15356:23;6031:18;;;:9;:18;;;;;;15441:12;;15423:30;;15419:93;;;-1:-1:-1;15488:12:0;;15419:93;15606:18;;15553:15;;15585:39;;15581:94;;;15639:36;15656:18;15639:16;:36::i;:::-;15708:1;15688:17;:21;;;15730:14;;15722:55;;-1:-1:-1;;;;;15730:14:0;;;;15755:21;15722:55;;;;;15755:21;;15722:55;15708:1;15722:55;15755:21;15730:14;15722:55;;;;;;;;;;;;;;;;;;;;;15345:440;;15317:468::o;12784:1547::-;12974:14;;-1:-1:-1;;;;;13006:25:0;;;12902:7;13006:25;;;:19;:25;;;;;;12902:7;;12937:6;;12974:14;;13006:25;;13005:26;:54;;;;-1:-1:-1;;;;;;13036:23:0;;;;;;:19;:23;;;;;;;;13035:24;13005:54;13001:1323;;;2384:7;2411:6;-1:-1:-1;;;;;13098:15:0;;;2411:6;;13098:15;;:49;;-1:-1:-1;2384:7:0;2411:6;-1:-1:-1;;;;;13134:13:0;;;2411:6;;13134:13;13098:49;:91;;;-1:-1:-1;;;;;;13168:21:0;;13184:4;13168:21;13098:91;:131;;;-1:-1:-1;;;;;;13210:19:0;;13224:4;13210:19;13098:131;13076:955;;;13271:1;13264:8;;13076:955;;;-1:-1:-1;;;;;13317:29:0;;;;;;:25;:29;;;;;;;;13313:703;;;13408:3;13389:13;;13379:6;:24;;;;:::i;:::-;13378:34;;;;:::i;:::-;13371:41;;13446:1;13439:4;:8;:29;;;;;13467:1;13451:13;;:17;13439:29;13435:179;;;13601:13;;13553:15;;13546:22;;:4;:22;:::i;:::-;13545:69;;;;:::i;:::-;13495:17;;:119;;;;;;;:::i;:::-;;;;-1:-1:-1;;13435:179:0;13313:703;;;-1:-1:-1;;;;;13644:31:0;;;;;;:25;:31;;;;;;;;13640:376;;;13736:3;13718:12;;13708:6;:23;;;;:::i;:::-;13707:33;;;;:::i;:::-;13700:40;;13774:1;13767:4;:8;:28;;;;;13794:1;13779:12;;:16;13767:28;13763:176;;;13927:12;;13880:14;;13873:21;;:4;:21;:::i;13640:376::-;13995:1;13988:8;;13640:376;14051:8;;14047:140;;14098:4;14080:24;;;;:9;:24;;;;;:32;;14108:4;;14080:24;:32;;14108:4;;14080:32;:::i;:::-;;;;-1:-1:-1;;14136:35:0;;1361:25:1;;;14159:4:0;;-1:-1:-1;;;;;14136:35:0;;;;;1349:2:1;1334:18;14136:35:0;;;;;;;14047:140;14210:13;14219:4;14210:6;:13;:::i;:::-;14203:20;;;;;;13001:1323;-1:-1:-1;;;;;14256:20:0;;;;;;:9;:20;;;;;:28;;14280:4;;14256:20;:28;;14280:4;;14256:28;:::i;:::-;;;;-1:-1:-1;14306:6:0;;-1:-1:-1;14299:13:0;;-1:-1:-1;;;14299:13:0;14339:550;14405:8;:15;;-1:-1:-1;;;;14405:15:0;-1:-1:-1;;;14405:15:0;;;14455:16;;;14469:1;14455:16;;;;;;;;-1:-1:-1;;14455:16:0;;;;;;;;;;-1:-1:-1;14455:16:0;14431:40;;14500:4;14482;14487:1;14482:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14482:23:0;;;-1:-1:-1;;;;;14482:23:0;;;;;14526:13;-1:-1:-1;;;;;14526:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14516:4;14521:1;14516:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;14516:30:0;;;-1:-1:-1;;;;;14516:30:0;;;;;14559:60;14576:4;14591:13;14607:11;14559:8;:60::i;:::-;14632:222;;-1:-1:-1;;;14632:222:0;;-1:-1:-1;;;;;14632:13:0;:64;;;;:222;;14711:11;;14737:1;;14781:4;;14808;;14828:15;;14632:222;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14865:8:0;:16;;-1:-1:-1;;;;14865:16:0;;;-1:-1:-1;;;;14339:550:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2507:248::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;-1:-1:-1;;2675:23:1;;;2745:2;2730:18;;;2717:32;;-1:-1:-1;2507:248:1:o;2993:118::-;3079:5;3072:13;3065:21;3058:5;3055:32;3045:60;;3101:1;3098;3091:12;3116:382;3181:6;3189;3242:2;3230:9;3221:7;3217:23;3213:32;3210:52;;;3258:1;3255;3248:12;3210:52;3297:9;3284:23;3316:31;3341:5;3316:31;:::i;:::-;3366:5;-1:-1:-1;3423:2:1;3408:18;;3395:32;3436:30;3395:32;3436:30;:::i;:::-;3485:7;3475:17;;;3116:382;;;;;:::o;3503:388::-;3571:6;3579;3632:2;3620:9;3611:7;3607:23;3603:32;3600:52;;;3648:1;3645;3638:12;3600:52;3687:9;3674:23;3706:31;3731:5;3706:31;:::i;:::-;3756:5;-1:-1:-1;3813:2:1;3798:18;;3785:32;3826:33;3785:32;3826:33;:::i;3896:380::-;3975:1;3971:12;;;;4018;;;4039:61;;4093:4;4085:6;4081:17;4071:27;;4039:61;4146:2;4138:6;4135:14;4115:18;4112:38;4109:161;;4192:10;4187:3;4183:20;4180:1;4173:31;4227:4;4224:1;4217:15;4255:4;4252:1;4245:15;4109:161;;3896:380;;;:::o;4690:127::-;4751:10;4746:3;4742:20;4739:1;4732:31;4782:4;4779:1;4772:15;4806:4;4803:1;4796:15;4822:125;4887:9;;;4908:10;;;4905:36;;;4921:18;;:::i;4952:356::-;5154:2;5136:21;;;5173:18;;;5166:30;5232:34;5227:2;5212:18;;5205:62;5299:2;5284:18;;4952:356::o;5878:184::-;5948:6;6001:2;5989:9;5980:7;5976:23;5972:32;5969:52;;;6017:1;6014;6007:12;5969:52;-1:-1:-1;6040:16:1;;5878:184;-1:-1:-1;5878:184:1:o;6346:245::-;6413:6;6466:2;6454:9;6445:7;6441:23;6437:32;6434:52;;;6482:1;6479;6472:12;6434:52;6514:9;6508:16;6533:28;6555:5;6533:28;:::i;7022:251::-;7092:6;7145:2;7133:9;7124:7;7120:23;7116:32;7113:52;;;7161:1;7158;7151:12;7113:52;7193:9;7187:16;7212:31;7237:5;7212:31;:::i;11914:128::-;11981:9;;;12002:11;;;11999:37;;;12016:18;;:::i;12659:306::-;12747:6;12755;12763;12816:2;12804:9;12795:7;12791:23;12787:32;12784:52;;;12832:1;12829;12822:12;12784:52;12861:9;12855:16;12845:26;;12911:2;12900:9;12896:18;12890:25;12880:35;;12955:2;12944:9;12940:18;12934:25;12924:35;;12659:306;;;;;:::o;12970:168::-;13043:9;;;13074;;13091:15;;;13085:22;;13071:37;13061:71;;13112:18;;:::i;13143:217::-;13183:1;13209;13199:132;;13253:10;13248:3;13244:20;13241:1;13234:31;13288:4;13285:1;13278:15;13316:4;13313:1;13306:15;13199:132;-1:-1:-1;13345:9:1;;13143:217::o;13497:127::-;13558:10;13553:3;13549:20;13546:1;13539:31;13589:4;13586:1;13579:15;13613:4;13610:1;13603:15;13629:980;13891:4;13939:3;13928:9;13924:19;13970:6;13959:9;13952:25;13996:2;14034:6;14029:2;14018:9;14014:18;14007:34;14077:3;14072:2;14061:9;14057:18;14050:31;14101:6;14136;14130:13;14167:6;14159;14152:22;14205:3;14194:9;14190:19;14183:26;;14244:2;14236:6;14232:15;14218:29;;14265:1;14275:195;14289:6;14286:1;14283:13;14275:195;;;14354:13;;-1:-1:-1;;;;;14350:39:1;14338:52;;14445:15;;;;14410:12;;;;14386:1;14304:9;14275:195;;;-1:-1:-1;;;;;;;14526:32:1;;;;14521:2;14506:18;;14499:60;-1:-1:-1;;;14590:3:1;14575:19;14568:35;14487:3;13629:980;-1:-1:-1;;;13629:980:1:o

Swarm Source

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