ETH Price: $3,336.01 (-1.27%)

Token

Dynasties Ecosystem ($HAN)
 

Overview

Max Total Supply

900,000,000 $HAN

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
500 $HAN

Value
$0.00
0x0d1dccb92dd07830879a3fe8fda98bac8a1a635a
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xe203ca92...fc1F93Fb3
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
DynastiesEcosystem

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-23
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function setLpPair(address pair, bool enabled) external;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
}

contract DynastiesEcosystem is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromLimits;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 900_000_000;
    string constant private _name = "Dynasties Ecosystem";
    string constant private _symbol = "$HAN";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    IRouter02 public dexRouter;
    address public lpPair;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        originalDeployer = msg.sender;
        
        _liquidityHolders[_owner] = true;
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

    address public originalDeployer;
    address public operator;

    // Function to set an operator to allow someone other the deployer to create things such as launchpads.
    // Only callable by original deployer.
    function setOperator(address newOperator) public {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        address oldOperator = operator;
        if (oldOperator != address(0)) {
            _liquidityHolders[oldOperator] = false;
        }
        operator = newOperator;
        _liquidityHolders[newOperator] = true;
    }

    function renounceOriginalDeployer() external {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        setOperator(address(0));
        originalDeployer = address(0);
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external pure override returns (uint8) { if (_tTotal == 0) { revert(); } return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveContractContingency() external onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }
    
    function setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        lpPairs[lpPair] = false;
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            initializer.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            require(!lpPairs[pair], "Pair already added to list.");
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            initializer.setLpPair(pair, true);
        }
    }

    function setInitializer(address _initializer) public onlyOwner {
        require(!tradingEnabled);
        require(_initializer != address(this), "Can't be self.");
        initializer = Initializer(_initializer);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[constructorLP] = true;
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

    function isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

//================================================ BLACKLIST

    function setBlacklistEnabled(address account, bool enabled) external {
        require(msg.sender == originalDeployer, "Must be called by SAFU dev.");
        initializer.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        require(accounts.length <= 100, "Too many at once.");
        initializer.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function isBlacklisted(address account) external view returns (bool) {
        return initializer.isBlacklisted(account);
    }

    function removeBlacklisted(address account) external onlyOwner {
        // To remove from the pre-built blacklist ONLY. Cannot add to blacklist.
        initializer.removeBlacklisted(account);
    }

//================================================ BLACKLIST

    function removeSniper(address account) external onlyOwner {
        initializer.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        initializer.setProtections(_antiSnipe, _antiBlock);
    }

    function excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "Just don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
        }
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(initializer)
            && to != address(initializer);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
        }

        return finalizeTransfer(from, to, amount, other);
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (address(initializer) == address(0)){
                initializer = Initializer(address(this));
            } else {
                _liquidityHolders[from] = true;
                _hasLiqBeenAdded = true;
            }
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
    }

    function sweepBalance() external onlyOwner {
        payable(_owner).transfer(address(this).balance);
    }
    
    function sweepExternalTokens(address token) external onlyOwner {
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try initializer.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        _tOwned[from] -= amount;
        _tOwned[to] += amount;
        emit Transfer(from, to, amount);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }

        return true;
    }
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"approveContractContingency","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":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originalDeployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOriginalDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sweepBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060409081526000600281905560078054600160ff1991821681179092556008805461ffff60a01b19169055600a8054336001600160a01b031991821681178355600b80549092168117909155845260046020529390922080549092161790556200006e9060099062000210565b6200007e906335a4e90062000228565b600a80546001600160a01b0390811660009081526020819052604081209390935581541691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620000d49060099062000210565b620000e4906335a4e90062000228565b60405190815260200160405180910390a362000242565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000152578160001904821115620001365762000136620000fb565b808516156200014457918102915b93841c939080029062000116565b509250929050565b6000826200016b575060016200020a565b816200017a575060006200020a565b81600181146200019357600281146200019e57620001be565b60019150506200020a565b60ff841115620001b257620001b2620000fb565b50506001821b6200020a565b5060208310610133831016604e8410600b8410161715620001e3575081810a6200020a565b620001ef838362000111565b8060001904821115620002065762000206620000fb565b0290505b92915050565b60006200022160ff8416836200015a565b9392505050565b80820281158282048414176200020a576200020a620000fb565b612bfb80620002526000396000f3fe60806040526004361061024a5760003560e01c8063570ca7351161013957806395d89b41116100b6578063c6a276c21161007a578063c6a276c214610722578063dd62ed3e14610742578063eafb5a3c14610788578063eec2744e146107a8578063fe575a87146107c8578063feadde9c146107e857600080fd5b806395d89b4114610680578063a9059cbb146106ad578063ab558e4d146106cd578063b3ab15fb146106ed578063c3513f6d1461070d57600080fd5b806380c581d1116100fd57806380c581d1146105f857806381cf58a914610618578063893d20e8146106385780638a63bd9b146106565780638a8c523c1461066b57600080fd5b8063570ca735146105345780635c24b074146105545780635cce86cd1461057457806370a08231146105ad578063715018a6146105e357600080fd5b80632610eaca116101c757806339a059021161018b57806339a059021461049d578063452ed4f1146104b25780634ada218b146104d25780634fb2e45d146104f357806350a8e0161461051357600080fd5b80632610eaca146104015780632b112e4914610421578063313ce5671461043657806333251a0b1461045d57806336fddb041461047d57600080fd5b8063095ea7b31161020e578063095ea7b3146103355780630dcbcf1c1461036557806313b4a7f41461039e57806318160ddd146103be57806323b872dd146103e157600080fd5b806303fd2a4514610256578063044df7261461028957806305bbedb6146102ab57806306fdde03146102cb5780630758d9241461031057600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561029557600080fd5b506102a96102a436600461254f565b610808565b005b3480156102b757600080fd5b506102a96102c636600461267c565b6108a7565b3480156102d757600080fd5b5060408051808201909152601381527244796e6173746965732045636f73797374656d60681b60208201525b60405161028091906126c3565b34801561031c57600080fd5b5060075461026c9061010090046001600160a01b031681565b34801561034157600080fd5b50610355610350366004612711565b61091f565b6040519015158152602001610280565b34801561037157600080fd5b5061035561038036600461273d565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103aa57600080fd5b506102a96103b936600461275a565b610936565b3480156103ca57600080fd5b506103d3610a7c565b604051908152602001610280565b3480156103ed57600080fd5b506103556103fc366004612788565b610ac3565b34801561040d57600080fd5b506102a961041c3660046127c9565b610b3b565b34801561042d57600080fd5b506103d3610cbc565b34801561044257600080fd5b5061044b610d3a565b60405160ff9091168152602001610280565b34801561046957600080fd5b506102a961047836600461273d565b610d68565b34801561048957600080fd5b506102a9610498366004612884565b610df5565b3480156104a957600080fd5b506102a9610e4a565b3480156104be57600080fd5b5060085461026c906001600160a01b031681565b3480156104de57600080fd5b5060085461035590600160a01b900460ff1681565b3480156104ff57600080fd5b506102a961050e36600461273d565b610e90565b34801561051f57600080fd5b5060085461035590600160a81b900460ff1681565b34801561054057600080fd5b50600c5461026c906001600160a01b031681565b34801561056057600080fd5b506102a961056f36600461273d565b610fa6565b34801561058057600080fd5b5061035561058f36600461273d565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105b957600080fd5b506103d36105c836600461273d565b6001600160a01b031660009081526020819052604090205490565b3480156105ef57600080fd5b506102a961113f565b34801561060457600080fd5b506102a9610613366004612884565b611228565b34801561062457600080fd5b50600b5461026c906001600160a01b031681565b34801561064457600080fd5b50600a546001600160a01b031661026c565b34801561066257600080fd5b506103556113c5565b34801561067757600080fd5b506102a9611417565b34801561068c57600080fd5b50604080518082019091526004815263122420a760e11b6020820152610303565b3480156106b957600080fd5b506103556106c8366004612711565b6115b5565b3480156106d957600080fd5b506102a96106e836600461273d565b6115cc565b3480156106f957600080fd5b506102a961070836600461273d565b6116e0565b34801561071957600080fd5b506102a9611778565b34801561072e57600080fd5b506102a961073d36600461273d565b6117db565b34801561074e57600080fd5b506103d361075d36600461275a565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561079457600080fd5b506102a96107a336600461273d565b611837565b3480156107b457600080fd5b506102a96107c3366004612884565b611c0d565b3480156107d457600080fd5b506103556107e336600461273d565b611ca1565b3480156107f457600080fd5b506102a9610803366004612884565b611d10565b600a546001600160a01b0316331461083b5760405162461bcd60e51b8152600401610832906128a2565b60405180910390fd5b60095460405163efbdbabd60e01b8152831515600482015282151560248201526001600160a01b039091169063efbdbabd906044015b600060405180830381600087803b15801561088b57600080fd5b505af115801561089f573d6000803e3d6000fd5b505050505050565b6064825111156108ed5760405162461bcd60e51b81526020600482015260116024820152702a37b79036b0b73c9030ba1037b731b29760791b6044820152606401610832565b6009546040516302ddf6db60e11b81526001600160a01b03909116906305bbedb69061087190859085906004016128cd565b600061092c338484611d65565b5060015b92915050565b600a546001600160a01b031633146109605760405162461bcd60e51b8152600401610832906128a2565b60075460ff1661096f57600080fd5b6001600160a01b038216301480159061099157506001600160a01b0381163014155b80156109ab57506008546001600160a01b03838116911614155b80156109c557506008546001600160a01b03828116911614155b6109ff5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610832565b806001600160a01b0316826001600160a01b031603610a3f576001600160a01b0381166000908152600460205260409020805460ff191660011790555050565b6001600160a01b038281166000908152600460205260408082208054600160ff1991821681179092559385168352912080549092161790555b5050565b6000610a8a6009600a612a1b565b610a98906335a4e900612a2a565b600003610aa457600080fd5b610ab06009600a612a1b565b610abe906335a4e900612a2a565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610b28576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610b22908490612a41565b90915550505b610b33848484611e5e565b949350505050565b600a546001600160a01b03163314610b655760405162461bcd60e51b8152600401610832906128a2565b8051825114610bae5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610832565b60005b82518161ffff161015610cb757610bca6009600a612a1b565b828261ffff1681518110610be057610be0612a54565b6020026020010151610bf29190612a2a565b336000908152602081905260409020541015610c455760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610832565b610ca433848361ffff1681518110610c5f57610c5f612a54565b60200260200101516009600a610c759190612a1b565b858561ffff1681518110610c8b57610c8b612a54565b6020026020010151610c9d9190612a2a565b600161210d565b5080610caf81612a6a565b915050610bb1565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610d169190612a8b565b610d226009600a612a1b565b610d30906335a4e900612a2a565b610abe9190612a41565b6000610d486009600a612a1b565b610d56906335a4e900612a2a565b600003610d6257600080fd5b50600990565b600a546001600160a01b03163314610d925760405162461bcd60e51b8152600401610832906128a2565b6009546040516333251a0b60e01b81526001600160a01b038381166004830152909116906333251a0b906024015b600060405180830381600087803b158015610dda57600080fd5b505af1158015610dee573d6000803e3d6000fd5b5050505050565b600a546001600160a01b03163314610e1f5760405162461bcd60e51b8152600401610832906128a2565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600b546001600160a01b03163314610e745760405162461bcd60e51b815260040161083290612a9e565b610e7e60006116e0565b600b80546001600160a01b0319169055565b600a546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610832906128a2565b6001600160a01b038116610ee05760405162461bcd60e51b815260040161083290612ae6565b61deac196001600160a01b03821601610f0b5760405162461bcd60e51b815260040161083290612ae6565b600a546001600160a01b031660009081526020819052604090205415610f5457600a546001600160a01b0316600081815260208190526040902054610f5291908390610c9d565b505b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b03163314610fd05760405162461bcd60e51b8152600401610832906128a2565b600854600160a01b900460ff1615610fe757600080fd5b306001600160a01b038216036110305760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610832565b600980546001600160a01b0319166001600160a01b038316908117909155604080516330fe427560e21b8152815163c3f909d49260048084019391929182900301816000875af19250505080156110a4575060408051601f3d908101601f191682019092526110a191810190612b43565b60015b6110ad57600080fd5b60078054610100600160a81b0319166101006001600160a01b038581168202929092178355600880546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055600a54925461111d9383169291900416600019611d65565b600754610cb790309061010090046001600160a01b0316600019611d65565b50565b600a546001600160a01b031633146111695760405162461bcd60e51b8152600401610832906128a2565b600854600160a01b900460ff166111da5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610832565b600a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600a546001600160a01b031633146112525760405162461bcd60e51b8152600401610832906128a2565b806112aa576001600160a01b03828116600081815260016020526040808220805460ff1916905560095490516380c581d160e01b815260048101939093526024830191909152909116906380c581d190604401610871565b60025415611303576203f480600254426112c49190612a41565b116113035760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610832565b6001600160a01b03821660009081526001602052604090205460ff161561136c5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610832565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560095491516380c581d160e01b815260048101939093526024830152909116906380c581d190604401610871565b600a546000906001600160a01b031633146113f25760405162461bcd60e51b8152600401610832906128a2565b60075461141190309061010090046001600160a01b0316600019611d65565b50600190565b600a546001600160a01b031633146114415760405162461bcd60e51b8152600401610832906128a2565b600854600160a01b900460ff161561149b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610832565b600854600160a81b900460ff166114f45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610832565b6009546001600160a01b031661151757600980546001600160a01b031916301790555b60098054600854604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260648101939093521690636c115c3490608401600060405180830381600087803b15801561158457600080fd5b505af1925050508015611595575060015b506008805460ff60a01b1916600160a01b1790556007805460ff19169055565b60006115c2338484611e5e565b5060019392505050565b600a546001600160a01b031633146115f65760405162461bcd60e51b8152600401610832906128a2565b600a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561164d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116719190612b72565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb79190612b8b565b600b546001600160a01b0316331461170a5760405162461bcd60e51b815260040161083290612a9e565b600c546001600160a01b0316801561173d576001600160a01b0381166000908152600460205260409020805460ff191690555b50600c80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b600a546001600160a01b031633146117a25760405162461bcd60e51b8152600401610832906128a2565b600a546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561113c573d6000803e3d6000fd5b600a546001600160a01b031633146118055760405162461bcd60e51b8152600401610832906128a2565b6009546040516363513b6160e11b81526001600160a01b0383811660048301529091169063c6a276c290602401610dc0565b600a546001600160a01b031633146118615760405162461bcd60e51b8152600401610832906128a2565b600854600160a81b900460ff16156118bb5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610832565b6008546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa15801561191b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193f9190612ba8565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b09190612ba8565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156119fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1f9190612ba8565b90506001600160a01b038116611b9857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190612ba8565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b029190612ba8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b739190612ba8565b600880546001600160a01b0319166001600160a01b0392909216919091179055611bb4565b600880546001600160a01b0319166001600160a01b0383161790555b60078054610100600160a81b0319166101006001600160a01b03858116820292909217835560085482166000908152600160208190526040909120805460ff191690911790559154610cb7923092910416600019611d65565b600b546001600160a01b03163314611c675760405162461bcd60e51b815260206004820152601b60248201527f4d7573742062652063616c6c65642062792053414655206465762e00000000006044820152606401610832565b6009546040516377613a2760e11b81526001600160a01b03848116600483015283151560248301529091169063eec2744e90604401610871565b60095460405163fe575a8760e01b81526001600160a01b038381166004830152600092169063fe575a8790602401602060405180830381865afa158015611cec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109309190612b8b565b600a546001600160a01b03163314611d3a5760405162461bcd60e51b8152600401610832906128a2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611db15760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610832565b6001600160a01b038216611dfd5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610832565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611ec45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610832565b6001600160a01b038316611f265760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610832565b60008211611f885760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610832565b6001600160a01b0384166000908152600160205260408120548190819060ff1615611fb65760019250611fe4565b6001600160a01b03861660009081526001602052604090205460ff1615611fe05760019150611fe4565b5060015b611fee8787612347565b156120f657600854600160a01b900460ff166120f657806120515760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610832565b6001600160a01b03871660009081526005602052604090205460ff1615801561209357506001600160a01b03861660009081526005602052604090205460ff16155b156120f65760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610832565b6121028787878461210d565b979650505050505050565b60006121198585612347565b156121ad5760095460405163ecd07a5360e01b81526001600160a01b038781166004830152868116602483015260448201869052600092169063ecd07a53906064016020604051808303816000875af1925050508015612196575060408051601f3d908101601f1916820190925261219391810190612b8b565b60015b61219f57600080fd5b9050806121ab57600080fd5b505b6001600160a01b038516600090815260208190526040812080548592906121d5908490612a41565b90915550506001600160a01b03841660009081526020819052604081208054859290612202908490612a8b565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161224e91815260200190565b60405180910390a3600854600160a81b900460ff1661233c576122718585612452565b600854600160a81b900460ff1615801561229057506122908585612347565b80156122b557506001600160a01b03851660009081526005602052604090205460ff16155b80156122da57506001600160a01b03841660009081526005602052604090205460ff16155b80156122e4575081155b1561233c5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610832565b506001949350505050565b600a546000906001600160a01b038481169116148015906123765750600a546001600160a01b03838116911614155b801561238d5750600a546001600160a01b03163214155b80156123b257506001600160a01b03821660009081526004602052604090205460ff16155b80156123d757506001600160a01b03831660009081526004602052604090205460ff16155b80156123ee57506001600160a01b03821661dead14155b801561240257506001600160a01b03821615155b801561241757506001600160a01b0383163014155b801561243157506009546001600160a01b03848116911614155b801561244b57506009546001600160a01b03838116911614155b9392505050565b600854600160a81b900460ff16156124b85760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610832565b6124c28282612347565b1580156124dc57506008546001600160a01b038281169116145b15610a78576009546001600160a01b031661250757600980546001600160a01b031916301790555050565b6001600160a01b0382166000908152600460205260409020805460ff191660011790556008805460ff60a81b1916600160a81b1790555050565b801515811461113c57600080fd5b6000806040838503121561256257600080fd5b823561256d81612541565b9150602083013561257d81612541565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125c7576125c7612588565b604052919050565b600067ffffffffffffffff8211156125e9576125e9612588565b5060051b60200190565b6001600160a01b038116811461113c57600080fd5b600082601f83011261261957600080fd5b8135602061262e612629836125cf565b61259e565b82815260059290921b8401810191818101908684111561264d57600080fd5b8286015b84811015612671578035612664816125f3565b8352918301918301612651565b509695505050505050565b6000806040838503121561268f57600080fd5b823567ffffffffffffffff8111156126a657600080fd5b6126b285828601612608565b925050602083013561257d81612541565b600060208083528351808285015260005b818110156126f0578581018301518582016040015282016126d4565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561272457600080fd5b823561272f816125f3565b946020939093013593505050565b60006020828403121561274f57600080fd5b813561244b816125f3565b6000806040838503121561276d57600080fd5b8235612778816125f3565b9150602083013561257d816125f3565b60008060006060848603121561279d57600080fd5b83356127a8816125f3565b925060208401356127b8816125f3565b929592945050506040919091013590565b600080604083850312156127dc57600080fd5b823567ffffffffffffffff808211156127f457600080fd5b61280086838701612608565b935060209150818501358181111561281757600080fd5b85019050601f8101861361282a57600080fd5b8035612838612629826125cf565b81815260059190911b8201830190838101908883111561285757600080fd5b928401925b828410156128755783358252928401929084019061285c565b80955050505050509250929050565b6000806040838503121561289757600080fd5b823561256d816125f3565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b604080825283519082018190526000906020906060840190828701845b8281101561290f5781516001600160a01b0316845292840192908401906001016128ea565b50505093151592019190915250919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561297257816000190482111561295857612958612921565b8085161561296557918102915b93841c939080029061293c565b509250929050565b60008261298957506001610930565b8161299657506000610930565b81600181146129ac57600281146129b6576129d2565b6001915050610930565b60ff8411156129c7576129c7612921565b50506001821b610930565b5060208310610133831016604e8410600b84101617156129f5575081810a610930565b6129ff8383612937565b8060001904821115612a1357612a13612921565b029392505050565b600061244b60ff84168361297a565b808202811582820484141761093057610930612921565b8181038181111561093057610930612921565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103612a8157612a81612921565b6001019392505050565b8082018082111561093057610930612921565b60208082526028908201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460408201526732b83637bcb2b91760c11b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60008060408385031215612b5657600080fd5b8251612b61816125f3565b602084015190925061257d816125f3565b600060208284031215612b8457600080fd5b5051919050565b600060208284031215612b9d57600080fd5b815161244b81612541565b600060208284031215612bba57600080fd5b815161244b816125f356fea2646970667358221220844e059fafb8baeb3737f5d1c9d1a537e4692cd42cd9d658873856516c5812b364736f6c63430008130033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c8063570ca7351161013957806395d89b41116100b6578063c6a276c21161007a578063c6a276c214610722578063dd62ed3e14610742578063eafb5a3c14610788578063eec2744e146107a8578063fe575a87146107c8578063feadde9c146107e857600080fd5b806395d89b4114610680578063a9059cbb146106ad578063ab558e4d146106cd578063b3ab15fb146106ed578063c3513f6d1461070d57600080fd5b806380c581d1116100fd57806380c581d1146105f857806381cf58a914610618578063893d20e8146106385780638a63bd9b146106565780638a8c523c1461066b57600080fd5b8063570ca735146105345780635c24b074146105545780635cce86cd1461057457806370a08231146105ad578063715018a6146105e357600080fd5b80632610eaca116101c757806339a059021161018b57806339a059021461049d578063452ed4f1146104b25780634ada218b146104d25780634fb2e45d146104f357806350a8e0161461051357600080fd5b80632610eaca146104015780632b112e4914610421578063313ce5671461043657806333251a0b1461045d57806336fddb041461047d57600080fd5b8063095ea7b31161020e578063095ea7b3146103355780630dcbcf1c1461036557806313b4a7f41461039e57806318160ddd146103be57806323b872dd146103e157600080fd5b806303fd2a4514610256578063044df7261461028957806305bbedb6146102ab57806306fdde03146102cb5780630758d9241461031057600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561029557600080fd5b506102a96102a436600461254f565b610808565b005b3480156102b757600080fd5b506102a96102c636600461267c565b6108a7565b3480156102d757600080fd5b5060408051808201909152601381527244796e6173746965732045636f73797374656d60681b60208201525b60405161028091906126c3565b34801561031c57600080fd5b5060075461026c9061010090046001600160a01b031681565b34801561034157600080fd5b50610355610350366004612711565b61091f565b6040519015158152602001610280565b34801561037157600080fd5b5061035561038036600461273d565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103aa57600080fd5b506102a96103b936600461275a565b610936565b3480156103ca57600080fd5b506103d3610a7c565b604051908152602001610280565b3480156103ed57600080fd5b506103556103fc366004612788565b610ac3565b34801561040d57600080fd5b506102a961041c3660046127c9565b610b3b565b34801561042d57600080fd5b506103d3610cbc565b34801561044257600080fd5b5061044b610d3a565b60405160ff9091168152602001610280565b34801561046957600080fd5b506102a961047836600461273d565b610d68565b34801561048957600080fd5b506102a9610498366004612884565b610df5565b3480156104a957600080fd5b506102a9610e4a565b3480156104be57600080fd5b5060085461026c906001600160a01b031681565b3480156104de57600080fd5b5060085461035590600160a01b900460ff1681565b3480156104ff57600080fd5b506102a961050e36600461273d565b610e90565b34801561051f57600080fd5b5060085461035590600160a81b900460ff1681565b34801561054057600080fd5b50600c5461026c906001600160a01b031681565b34801561056057600080fd5b506102a961056f36600461273d565b610fa6565b34801561058057600080fd5b5061035561058f36600461273d565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105b957600080fd5b506103d36105c836600461273d565b6001600160a01b031660009081526020819052604090205490565b3480156105ef57600080fd5b506102a961113f565b34801561060457600080fd5b506102a9610613366004612884565b611228565b34801561062457600080fd5b50600b5461026c906001600160a01b031681565b34801561064457600080fd5b50600a546001600160a01b031661026c565b34801561066257600080fd5b506103556113c5565b34801561067757600080fd5b506102a9611417565b34801561068c57600080fd5b50604080518082019091526004815263122420a760e11b6020820152610303565b3480156106b957600080fd5b506103556106c8366004612711565b6115b5565b3480156106d957600080fd5b506102a96106e836600461273d565b6115cc565b3480156106f957600080fd5b506102a961070836600461273d565b6116e0565b34801561071957600080fd5b506102a9611778565b34801561072e57600080fd5b506102a961073d36600461273d565b6117db565b34801561074e57600080fd5b506103d361075d36600461275a565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561079457600080fd5b506102a96107a336600461273d565b611837565b3480156107b457600080fd5b506102a96107c3366004612884565b611c0d565b3480156107d457600080fd5b506103556107e336600461273d565b611ca1565b3480156107f457600080fd5b506102a9610803366004612884565b611d10565b600a546001600160a01b0316331461083b5760405162461bcd60e51b8152600401610832906128a2565b60405180910390fd5b60095460405163efbdbabd60e01b8152831515600482015282151560248201526001600160a01b039091169063efbdbabd906044015b600060405180830381600087803b15801561088b57600080fd5b505af115801561089f573d6000803e3d6000fd5b505050505050565b6064825111156108ed5760405162461bcd60e51b81526020600482015260116024820152702a37b79036b0b73c9030ba1037b731b29760791b6044820152606401610832565b6009546040516302ddf6db60e11b81526001600160a01b03909116906305bbedb69061087190859085906004016128cd565b600061092c338484611d65565b5060015b92915050565b600a546001600160a01b031633146109605760405162461bcd60e51b8152600401610832906128a2565b60075460ff1661096f57600080fd5b6001600160a01b038216301480159061099157506001600160a01b0381163014155b80156109ab57506008546001600160a01b03838116911614155b80156109c557506008546001600160a01b03828116911614155b6109ff5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610832565b806001600160a01b0316826001600160a01b031603610a3f576001600160a01b0381166000908152600460205260409020805460ff191660011790555050565b6001600160a01b038281166000908152600460205260408082208054600160ff1991821681179092559385168352912080549092161790555b5050565b6000610a8a6009600a612a1b565b610a98906335a4e900612a2a565b600003610aa457600080fd5b610ab06009600a612a1b565b610abe906335a4e900612a2a565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610b28576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610b22908490612a41565b90915550505b610b33848484611e5e565b949350505050565b600a546001600160a01b03163314610b655760405162461bcd60e51b8152600401610832906128a2565b8051825114610bae5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610832565b60005b82518161ffff161015610cb757610bca6009600a612a1b565b828261ffff1681518110610be057610be0612a54565b6020026020010151610bf29190612a2a565b336000908152602081905260409020541015610c455760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610832565b610ca433848361ffff1681518110610c5f57610c5f612a54565b60200260200101516009600a610c759190612a1b565b858561ffff1681518110610c8b57610c8b612a54565b6020026020010151610c9d9190612a2a565b600161210d565b5080610caf81612a6a565b915050610bb1565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610d169190612a8b565b610d226009600a612a1b565b610d30906335a4e900612a2a565b610abe9190612a41565b6000610d486009600a612a1b565b610d56906335a4e900612a2a565b600003610d6257600080fd5b50600990565b600a546001600160a01b03163314610d925760405162461bcd60e51b8152600401610832906128a2565b6009546040516333251a0b60e01b81526001600160a01b038381166004830152909116906333251a0b906024015b600060405180830381600087803b158015610dda57600080fd5b505af1158015610dee573d6000803e3d6000fd5b5050505050565b600a546001600160a01b03163314610e1f5760405162461bcd60e51b8152600401610832906128a2565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600b546001600160a01b03163314610e745760405162461bcd60e51b815260040161083290612a9e565b610e7e60006116e0565b600b80546001600160a01b0319169055565b600a546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610832906128a2565b6001600160a01b038116610ee05760405162461bcd60e51b815260040161083290612ae6565b61deac196001600160a01b03821601610f0b5760405162461bcd60e51b815260040161083290612ae6565b600a546001600160a01b031660009081526020819052604090205415610f5457600a546001600160a01b0316600081815260208190526040902054610f5291908390610c9d565b505b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b03163314610fd05760405162461bcd60e51b8152600401610832906128a2565b600854600160a01b900460ff1615610fe757600080fd5b306001600160a01b038216036110305760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610832565b600980546001600160a01b0319166001600160a01b038316908117909155604080516330fe427560e21b8152815163c3f909d49260048084019391929182900301816000875af19250505080156110a4575060408051601f3d908101601f191682019092526110a191810190612b43565b60015b6110ad57600080fd5b60078054610100600160a81b0319166101006001600160a01b038581168202929092178355600880546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055600a54925461111d9383169291900416600019611d65565b600754610cb790309061010090046001600160a01b0316600019611d65565b50565b600a546001600160a01b031633146111695760405162461bcd60e51b8152600401610832906128a2565b600854600160a01b900460ff166111da5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610832565b600a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600a546001600160a01b031633146112525760405162461bcd60e51b8152600401610832906128a2565b806112aa576001600160a01b03828116600081815260016020526040808220805460ff1916905560095490516380c581d160e01b815260048101939093526024830191909152909116906380c581d190604401610871565b60025415611303576203f480600254426112c49190612a41565b116113035760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610832565b6001600160a01b03821660009081526001602052604090205460ff161561136c5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610832565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560095491516380c581d160e01b815260048101939093526024830152909116906380c581d190604401610871565b600a546000906001600160a01b031633146113f25760405162461bcd60e51b8152600401610832906128a2565b60075461141190309061010090046001600160a01b0316600019611d65565b50600190565b600a546001600160a01b031633146114415760405162461bcd60e51b8152600401610832906128a2565b600854600160a01b900460ff161561149b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610832565b600854600160a81b900460ff166114f45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610832565b6009546001600160a01b031661151757600980546001600160a01b031916301790555b60098054600854604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260648101939093521690636c115c3490608401600060405180830381600087803b15801561158457600080fd5b505af1925050508015611595575060015b506008805460ff60a01b1916600160a01b1790556007805460ff19169055565b60006115c2338484611e5e565b5060019392505050565b600a546001600160a01b031633146115f65760405162461bcd60e51b8152600401610832906128a2565b600a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561164d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116719190612b72565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb79190612b8b565b600b546001600160a01b0316331461170a5760405162461bcd60e51b815260040161083290612a9e565b600c546001600160a01b0316801561173d576001600160a01b0381166000908152600460205260409020805460ff191690555b50600c80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b600a546001600160a01b031633146117a25760405162461bcd60e51b8152600401610832906128a2565b600a546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561113c573d6000803e3d6000fd5b600a546001600160a01b031633146118055760405162461bcd60e51b8152600401610832906128a2565b6009546040516363513b6160e11b81526001600160a01b0383811660048301529091169063c6a276c290602401610dc0565b600a546001600160a01b031633146118615760405162461bcd60e51b8152600401610832906128a2565b600854600160a81b900460ff16156118bb5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610832565b6008546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa15801561191b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193f9190612ba8565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b09190612ba8565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156119fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1f9190612ba8565b90506001600160a01b038116611b9857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190612ba8565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b029190612ba8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b739190612ba8565b600880546001600160a01b0319166001600160a01b0392909216919091179055611bb4565b600880546001600160a01b0319166001600160a01b0383161790555b60078054610100600160a81b0319166101006001600160a01b03858116820292909217835560085482166000908152600160208190526040909120805460ff191690911790559154610cb7923092910416600019611d65565b600b546001600160a01b03163314611c675760405162461bcd60e51b815260206004820152601b60248201527f4d7573742062652063616c6c65642062792053414655206465762e00000000006044820152606401610832565b6009546040516377613a2760e11b81526001600160a01b03848116600483015283151560248301529091169063eec2744e90604401610871565b60095460405163fe575a8760e01b81526001600160a01b038381166004830152600092169063fe575a8790602401602060405180830381865afa158015611cec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109309190612b8b565b600a546001600160a01b03163314611d3a5760405162461bcd60e51b8152600401610832906128a2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611db15760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610832565b6001600160a01b038216611dfd5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610832565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611ec45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610832565b6001600160a01b038316611f265760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610832565b60008211611f885760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610832565b6001600160a01b0384166000908152600160205260408120548190819060ff1615611fb65760019250611fe4565b6001600160a01b03861660009081526001602052604090205460ff1615611fe05760019150611fe4565b5060015b611fee8787612347565b156120f657600854600160a01b900460ff166120f657806120515760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610832565b6001600160a01b03871660009081526005602052604090205460ff1615801561209357506001600160a01b03861660009081526005602052604090205460ff16155b156120f65760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610832565b6121028787878461210d565b979650505050505050565b60006121198585612347565b156121ad5760095460405163ecd07a5360e01b81526001600160a01b038781166004830152868116602483015260448201869052600092169063ecd07a53906064016020604051808303816000875af1925050508015612196575060408051601f3d908101601f1916820190925261219391810190612b8b565b60015b61219f57600080fd5b9050806121ab57600080fd5b505b6001600160a01b038516600090815260208190526040812080548592906121d5908490612a41565b90915550506001600160a01b03841660009081526020819052604081208054859290612202908490612a8b565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161224e91815260200190565b60405180910390a3600854600160a81b900460ff1661233c576122718585612452565b600854600160a81b900460ff1615801561229057506122908585612347565b80156122b557506001600160a01b03851660009081526005602052604090205460ff16155b80156122da57506001600160a01b03841660009081526005602052604090205460ff16155b80156122e4575081155b1561233c5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610832565b506001949350505050565b600a546000906001600160a01b038481169116148015906123765750600a546001600160a01b03838116911614155b801561238d5750600a546001600160a01b03163214155b80156123b257506001600160a01b03821660009081526004602052604090205460ff16155b80156123d757506001600160a01b03831660009081526004602052604090205460ff16155b80156123ee57506001600160a01b03821661dead14155b801561240257506001600160a01b03821615155b801561241757506001600160a01b0383163014155b801561243157506009546001600160a01b03848116911614155b801561244b57506009546001600160a01b03838116911614155b9392505050565b600854600160a81b900460ff16156124b85760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610832565b6124c28282612347565b1580156124dc57506008546001600160a01b038281169116145b15610a78576009546001600160a01b031661250757600980546001600160a01b031916301790555050565b6001600160a01b0382166000908152600460205260409020805460ff191660011790556008805460ff60a81b1916600160a81b1790555050565b801515811461113c57600080fd5b6000806040838503121561256257600080fd5b823561256d81612541565b9150602083013561257d81612541565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125c7576125c7612588565b604052919050565b600067ffffffffffffffff8211156125e9576125e9612588565b5060051b60200190565b6001600160a01b038116811461113c57600080fd5b600082601f83011261261957600080fd5b8135602061262e612629836125cf565b61259e565b82815260059290921b8401810191818101908684111561264d57600080fd5b8286015b84811015612671578035612664816125f3565b8352918301918301612651565b509695505050505050565b6000806040838503121561268f57600080fd5b823567ffffffffffffffff8111156126a657600080fd5b6126b285828601612608565b925050602083013561257d81612541565b600060208083528351808285015260005b818110156126f0578581018301518582016040015282016126d4565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561272457600080fd5b823561272f816125f3565b946020939093013593505050565b60006020828403121561274f57600080fd5b813561244b816125f3565b6000806040838503121561276d57600080fd5b8235612778816125f3565b9150602083013561257d816125f3565b60008060006060848603121561279d57600080fd5b83356127a8816125f3565b925060208401356127b8816125f3565b929592945050506040919091013590565b600080604083850312156127dc57600080fd5b823567ffffffffffffffff808211156127f457600080fd5b61280086838701612608565b935060209150818501358181111561281757600080fd5b85019050601f8101861361282a57600080fd5b8035612838612629826125cf565b81815260059190911b8201830190838101908883111561285757600080fd5b928401925b828410156128755783358252928401929084019061285c565b80955050505050509250929050565b6000806040838503121561289757600080fd5b823561256d816125f3565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b604080825283519082018190526000906020906060840190828701845b8281101561290f5781516001600160a01b0316845292840192908401906001016128ea565b50505093151592019190915250919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561297257816000190482111561295857612958612921565b8085161561296557918102915b93841c939080029061293c565b509250929050565b60008261298957506001610930565b8161299657506000610930565b81600181146129ac57600281146129b6576129d2565b6001915050610930565b60ff8411156129c7576129c7612921565b50506001821b610930565b5060208310610133831016604e8410600b84101617156129f5575081810a610930565b6129ff8383612937565b8060001904821115612a1357612a13612921565b029392505050565b600061244b60ff84168361297a565b808202811582820484141761093057610930612921565b8181038181111561093057610930612921565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103612a8157612a81612921565b6001019392505050565b8082018082111561093057610930612921565b60208082526028908201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460408201526732b83637bcb2b91760c11b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60008060408385031215612b5657600080fd5b8251612b61816125f3565b602084015190925061257d816125f3565b600060208284031215612b8457600080fd5b5051919050565b600060208284031215612b9d57600080fd5b815161244b81612541565b600060208284031215612bba57600080fd5b815161244b816125f356fea2646970667358221220844e059fafb8baeb3737f5d1c9d1a537e4692cd42cd9d658873856516c5812b364736f6c63430008130033

Deployed Bytecode Sourcemap

4316:14455:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5274:73;;;;;;;;;;;;5305:42;5274:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5274:73:0;;;;;;;;14110:153;;;;;;;;;;-1:-1:-1;14110:153:0;;;;;:::i;:::-;;:::i;:::-;;13242:331;;;;;;;;;;-1:-1:-1;13242:331:0;;;;;:::i;:::-;;:::i;8760:80::-;;;;;;;;;;-1:-1:-1;8832:5:0;;;;;;;;;;;;-1:-1:-1;;;8832:5:0;;;;8760:80;;;;;;;:::i;5097:26::-;;;;;;;;;;-1:-1:-1;5097:26:0;;;;;;;-1:-1:-1;;;;;5097:26:0;;;9368:161;;;;;;;;;;-1:-1:-1;9368:161:0;;;;;:::i;:::-;;:::i;:::-;;;3949:14:1;;3942:22;3924:41;;3912:2;3897:18;9368:161:0;3784:187:1;12499:140:0;;;;;;;;;;-1:-1:-1;12499:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;12597:34:0;12573:4;12597:34;;;:25;:34;;;;;;;;;12499:140;14271:523;;;;;;;;;;-1:-1:-1;14271:523:0;;;;;:::i;:::-;;:::i;8431:115::-;;;;;;;;;;;;;:::i;:::-;;;4767:25:1;;;4755:2;4740:18;8431:115:0;4621:177:1;10038:306:0;;;;;;;;;;-1:-1:-1;10038:306:0;;;;;:::i;:::-;;:::i;17537:433::-;;;;;;;;;;-1:-1:-1;17537:433:0;;;;;:::i;:::-;;:::i;12803:141::-;;;;;;;;;;;;;:::i;8552:112::-;;;;;;;;;;;;;:::i;:::-;;;6579:4:1;6567:17;;;6549:36;;6537:2;6522:18;8552:112:0;6407:184:1;13992:110:0;;;;;;;;;;-1:-1:-1;13992:110:0;;;;;:::i;:::-;;:::i;12351:140::-;;;;;;;;;;-1:-1:-1;12351:140:0;;;;;:::i;:::-;;:::i;7855:221::-;;;;;;;;;;;;;:::i;5130:21::-;;;;;;;;;;-1:-1:-1;5130:21:0;;;;-1:-1:-1;;;;;5130:21:0;;;5158:34;;;;;;;;;;-1:-1:-1;5158:34:0;;;;-1:-1:-1;;;5158:34:0;;;;;;6425:539;;;;;;;;;;-1:-1:-1;6425:539:0;;;;;:::i;:::-;;:::i;5199:36::-;;;;;;;;;;-1:-1:-1;5199:36:0;;;;-1:-1:-1;;;5199:36:0;;;;;;7283:23;;;;;;;;;;-1:-1:-1;7283:23:0;;;;-1:-1:-1;;;;;7283:23:0;;;11616:587;;;;;;;;;;-1:-1:-1;11616:587:0;;;;;:::i;:::-;;:::i;12211:132::-;;;;;;;;;;-1:-1:-1;12211:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;12305:30:0;12281:4;12305:30;;;:21;:30;;;;;;;;;12211:132;9070:117;;;;;;;;;;-1:-1:-1;9070:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;9163:16:0;9136:7;9163:16;;;;;;;;;;;;9070:117;6972:265;;;;;;;;;;;;;:::i;11044:564::-;;;;;;;;;;-1:-1:-1;11044:564:0;;;;;:::i;:::-;;:::i;7245:31::-;;;;;;;;;;-1:-1:-1;7245:31:0;;;;-1:-1:-1;;;;;7245:31:0;;;8846:79;;;;;;;;;;-1:-1:-1;8916:6:0;;-1:-1:-1;;;;;8916:6:0;8846:79;;9855:175;;;;;;;;;;;;;:::i;16745:480::-;;;;;;;;;;;;;:::i;8670:84::-;;;;;;;;;;-1:-1:-1;8744:7:0;;;;;;;;;;;;-1:-1:-1;;;8744:7:0;;;;8670:84;;9195:165;;;;;;;;;;-1:-1:-1;9195:165:0;;;;;:::i;:::-;;:::i;17354:175::-;;;;;;;;;;-1:-1:-1;17354:175:0;;;;;:::i;:::-;;:::i;7468:379::-;;;;;;;;;;-1:-1:-1;7468:379:0;;;;;:::i;:::-;;:::i;17233:109::-;;;;;;;;;;;;;:::i;13718:202::-;;;;;;;;;;-1:-1:-1;13718:202:0;;;;;:::i;:::-;;:::i;8931:133::-;;;;;;;;;;-1:-1:-1;8931:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9033:19:0;;;9015:7;9033:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8931:133;10356:680;;;;;;;;;;-1:-1:-1;10356:680:0;;;;;:::i;:::-;;:::i;13016:218::-;;;;;;;;;;-1:-1:-1;13016:218:0;;;;;:::i;:::-;;:::i;13581:129::-;;;;;;;;;;-1:-1:-1;13581:129:0;;;;;:::i;:::-;;:::i;12647:148::-;;;;;;;;;;-1:-1:-1;12647:148:0;;;;;:::i;:::-;;:::i;14110:153::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;;;;;;;;;14205:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;14205:50:0;;7516:14:1;;7509:22;14205:50:0::1;::::0;::::1;7491:41:1::0;7575:14;;7568:22;7548:18;;;7541:50;-1:-1:-1;;;;;14205:11:0;;::::1;::::0;:26:::1;::::0;7464:18:1;;14205:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14110:153:::0;;:::o;13242:331::-;13471:3;13452:8;:15;:22;;13444:52;;;;-1:-1:-1;;;13444:52:0;;7804:2:1;13444:52:0;;;7786:21:1;7843:2;7823:18;;;7816:30;-1:-1:-1;;;7862:18:1;;;7855:47;7919:18;;13444:52:0;7602:341:1;13444:52:0;13507:11;;:58;;-1:-1:-1;;;13507:58:0;;-1:-1:-1;;;;;13507:11:0;;;;:39;;:58;;13547:8;;13557:7;;13507:58;;;:::i;9368:161::-;9445:4;9462:37;9471:10;9483:7;9492:6;9462:8;:37::i;:::-;-1:-1:-1;9517:4:0;9368:161;;;;;:::o;14271:523::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;14375:23:::1;::::0;::::1;;14367:32;;;::::0;::::1;;-1:-1:-1::0;;;;;14418:23:0;::::1;14436:4;14418:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;14463:24:0;::::1;14482:4;14463:24;;14418:69;:107;;;;-1:-1:-1::0;14509:6:0::1;::::0;-1:-1:-1;;;;;14509:16:0;;::::1;:6:::0;::::1;:16;;14418:107;:146;;;;-1:-1:-1::0;14547:6:0::1;::::0;-1:-1:-1;;;;;14547:17:0;;::::1;:6:::0;::::1;:17;;14418:146;14410:170;;;::::0;-1:-1:-1;;;14410:170:0;;8896:2:1;14410:170:0::1;::::0;::::1;8878:21:1::0;8935:2;8915:18;;;8908:30;-1:-1:-1;;;8954:18:1;;;8947:41;9005:18;;14410:170:0::1;8694:335:1::0;14410:170:0::1;14605:7;-1:-1:-1::0;;;;;14595:17:0::1;:6;-1:-1:-1::0;;;;;14595:17:0::1;::::0;14591:196:::1;;-1:-1:-1::0;;;;;14629:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;14629:33:0::1;14658:4;14629:33;::::0;;14271:523;;:::o;14591:196::-:1;-1:-1:-1::0;;;;;14695:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;:32;;14723:4:::1;-1:-1:-1::0;;14695:32:0;;::::1;::::0;::::1;::::0;;;14742:26;;::::1;::::0;;;;:33;;;;::::1;;::::0;;14591:196:::1;14271:523:::0;;:::o;8431:115::-;8486:7;5075:13;5015:1;5075:2;:13;:::i;:::-;5058:30;;4855:11;5058:30;:::i;:::-;8512:1;8501:12;8497:31;;8517:8;;;8497:31;5075:13;5015:1;5075:2;:13;:::i;:::-;5058:30;;4855:11;5058:30;:::i;:::-;8529:14;;8431:115;:::o;10038:306::-;-1:-1:-1;;;;;10159:19:0;;10138:4;10159:19;;;:11;:19;;;;;;;;10179:10;10159:31;;;;;;;;-1:-1:-1;;10159:52:0;10155:126;;-1:-1:-1;;;;;10228:19:0;;;;;;:11;:19;;;;;;;;10248:10;10228:31;;;;;;;:41;;10263:6;;10228:19;:41;;10263:6;;10228:41;:::i;:::-;;;;-1:-1:-1;;10155:126:0;10300:36;10310:6;10318:9;10329:6;10300:9;:36::i;:::-;10293:43;10038:306;-1:-1:-1;;;;10038:306:0:o;17537:433::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;17672:7:::1;:14;17653:8;:15;:33;17645:67;;;::::0;-1:-1:-1;;;17645:67:0;;11057:2:1;17645:67:0::1;::::0;::::1;11039:21:1::0;11096:2;11076:18;;;11069:30;-1:-1:-1;;;11115:18:1;;;11108:51;11176:18;;17645:67:0::1;10855:345:1::0;17645:67:0::1;17728:8;17723:240;17746:8;:15;17742:1;:19;;;17723:240;;;17827:13;5015:1;17827:2;:13;:::i;:::-;17816:7;17824:1;17816:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;17801:10;9136:7:::0;9163:16;;;;;;;;;;;17791:49:::1;;17783:80;;;::::0;-1:-1:-1;;;17783:80:0;;11539:2:1;17783:80:0::1;::::0;::::1;11521:21:1::0;11578:2;11558:18;;;11551:30;-1:-1:-1;;;11597:18:1;;;11590:48;11655:18;;17783:80:0::1;11337:342:1::0;17783:80:0::1;17878:73;17895:10;17907:8;17916:1;17907:11;;;;;;;;;;:::i;:::-;;;;;;;5015:1;17931:2;:13;;;;:::i;:::-;17920:7;17928:1;17920:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;17946:4;17878:16;:73::i;:::-;-1:-1:-1::0;17763:3:0;::::1;::::0;::::1;:::i;:::-;;;;17723:240;;;;17537:433:::0;;:::o;12803:141::-;12856:7;9163:16;;;;;;5305:42;9163:16;;;;12895:39;;9163:16;12895:39;:::i;:::-;5075:13;5015:1;5075:2;:13;:::i;:::-;5058:30;;4855:11;5058:30;:::i;:::-;12884:51;;;;:::i;8552:112::-;8604:5;5075:13;5015:1;5075:2;:13;:::i;:::-;5058:30;;4855:11;5058:30;:::i;:::-;8628:1;8617:12;8613:31;;8633:8;;;8613:31;-1:-1:-1;5015:1:0;;8552:112::o;13992:110::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;14061:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;14061:33:0;;-1:-1:-1;;;;;178:32:1;;;14061:33:0::1;::::0;::::1;160:51:1::0;14061:11:0;;::::1;::::0;:24:::1;::::0;133:18:1;;14061:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13992:110:::0;:::o;12351:140::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12443:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;12443:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12351:140::o;7855:221::-;7933:16;;-1:-1:-1;;;;;7933:16:0;7919:10;:30;7911:83;;;;-1:-1:-1;;;7911:83:0;;;;;;;:::i;:::-;8005:23;8025:1;8005:11;:23::i;:::-;8039:16;:29;;-1:-1:-1;;;;;;8039:29:0;;;7855:221::o;6425:539::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6504:22:0;::::1;6496:96;;;;-1:-1:-1::0;;;6496:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;6611:16:0;::::1;::::0;6603:90:::1;;;;-1:-1:-1::0;;;6603:90:0::1;;;;;;;:::i;:::-;6718:6;::::0;-1:-1:-1;;;;;6718:6:0::1;6728:1;9163:16:::0;;;;;;;;;;;6708:21;6704:113:::1;;6763:6;::::0;-1:-1:-1;;;;;6763:6:0::1;9136:7:::0;9163:16;;;;;;;;;;;6746:59:::1;::::0;6763:6;6771:8;;6781:17:::1;9070:117:::0;6746:59:::1;;6704:113;6856:6;::::0;;-1:-1:-1;;;;;6873:17:0;;::::1;-1:-1:-1::0;;;;;;6873:17:0;::::1;::::0;::::1;::::0;;;6906:40:::1;::::0;6856:6;::::1;::::0;6873:17;6856:6;;6906:40:::1;::::0;6837:16:::1;::::0;6906:40:::1;6485:479;6425:539:::0;:::o;11616:587::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;11699:14:::1;::::0;-1:-1:-1;;;11699:14:0;::::1;;;11698:15;11690:24;;;::::0;::::1;;11757:4;-1:-1:-1::0;;;;;11733:29:0;::::1;::::0;11725:56:::1;;;::::0;-1:-1:-1;;;11725:56:0;;13057:2:1;11725:56:0::1;::::0;::::1;13039:21:1::0;13096:2;13076:18;;;13069:30;-1:-1:-1;;;13115:18:1;;;13108:44;13169:18;;11725:56:0::1;12855:338:1::0;11725:56:0::1;11792:11;:39:::0;;-1:-1:-1;;;;;;11792:39:0::1;-1:-1:-1::0;;;;;11792:39:0;::::1;::::0;;::::1;::::0;;;11846:23:::1;::::0;;-1:-1:-1;;;11846:23:0;;;;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;;-1:-1:-1;11792:39:0;11846:23:::1;;;;;;;;;;-1:-1:-1::0;11846:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;11846:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;11842:354;;12185:8;::::0;::::1;11842:354;11933:9;:29:::0;;-1:-1:-1;;;;;;11933:29:0::1;;-1:-1:-1::0;;;;;11933:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11964:6:::1;:22:::0;;-1:-1:-1;;;;;;11964:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;11988:22:0;;;-1:-1:-1;11988:22:0::1;::::0;;;;;;;:29;;-1:-1:-1;;11988:29:0::1;::::0;;::::1;::::0;;12041:6:::1;::::0;12057:9;;12032:55:::1;::::0;12041:6;::::1;::::0;12057:9;;::::1;;-1:-1:-1::0;;12032:8:0::1;:55::i;:::-;12134:9;::::0;12102:62:::1;::::0;12119:4:::1;::::0;12134:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12134:9:0::1;-1:-1:-1::0;;12102:8:0::1;:62::i;11842:354::-;11616:587:::0;:::o;6972:265::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;7039:14:::1;::::0;-1:-1:-1;;;7039:14:0;::::1;;;7031:74;;;::::0;-1:-1:-1;;;7031:74:0;;13790:2:1;7031:74:0::1;::::0;::::1;13772:21:1::0;13829:2;13809:18;;;13802:30;13868:34;13848:18;;;13841:62;-1:-1:-1;;;13919:18:1;;;13912:45;13974:19;;7031:74:0::1;13588:411:1::0;7031:74:0::1;7135:6;::::0;;-1:-1:-1;;;;;;7152:19:0;::::1;::::0;;;7187:42:::1;::::0;-1:-1:-1;;;;;7135:6:0;;::::1;::::0;7116:16:::1;::::0;7135:6;;7187:42:::1;::::0;7116:16;;7187:42:::1;7020:217;6972:265::o:0;11044:564::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;11126:7:::1;11121:480;;-1:-1:-1::0;;;;;11150:13:0;;::::1;11166:5;11150:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;11150:21:0::1;::::0;;11186:11:::1;::::0;:34;;-1:-1:-1;;;11186:34:0;;::::1;::::0;::::1;14172:51:1::0;;;;14239:18;;;14232:50;;;;11186:11:0;;::::1;::::0;:21:::1;::::0;14145:18:1;;11186:34:0::1;14004:284:1::0;11121:480:0::1;11257:17;::::0;:22;11253:135:::1;;11346:6;11326:17;;11308:15;:35;;;;:::i;:::-;:44;11300:72;;;::::0;-1:-1:-1;;;11300:72:0;;14495:2:1;11300:72:0::1;::::0;::::1;14477:21:1::0;14534:2;14514:18;;;14507:30;-1:-1:-1;;;14553:18:1;;;14546:45;14608:18;;11300:72:0::1;14293:339:1::0;11300:72:0::1;-1:-1:-1::0;;;;;11411:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;11410:14;11402:54;;;::::0;-1:-1:-1;;;11402:54:0;;14839:2:1;11402:54:0::1;::::0;::::1;14821:21:1::0;14878:2;14858:18;;;14851:30;14917:29;14897:18;;;14890:57;14964:18;;11402:54:0::1;14637:351:1::0;11402:54:0::1;-1:-1:-1::0;;;;;11471:13:0;;::::1;;::::0;;;11487:4:::1;11471:13;::::0;;;;;;;;:20;;-1:-1:-1;;11471:20:0::1;::::0;::::1;::::0;;11526:15:::1;11506:17;:35:::0;11556:11:::1;::::0;:33;;-1:-1:-1;;;11556:33:0;;::::1;::::0;::::1;14172:51:1::0;;;;14239:18;;;14232:50;11556:11:0;;::::1;::::0;:21:::1;::::0;14145:18:1;;11556:33:0::1;14004:284:1::0;9855:175:0;6279:6;;9921:4;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;9970:9:::1;::::0;9938:62:::1;::::0;9955:4:::1;::::0;9970:9:::1;::::0;::::1;-1:-1:-1::0;;;;;9970:9:0::1;-1:-1:-1::0;;9938:8:0::1;:62::i;:::-;-1:-1:-1::0;10018:4:0::1;9855:175:::0;:::o;16745:480::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;16807:14:::1;::::0;-1:-1:-1;;;16807:14:0;::::1;;;16806:15;16798:52;;;::::0;-1:-1:-1;;;16798:52:0;;15195:2:1;16798:52:0::1;::::0;::::1;15177:21:1::0;15234:2;15214:18;;;15207:30;15273:26;15253:18;;;15246:54;15317:18;;16798:52:0::1;14993:348:1::0;16798:52:0::1;16869:16;::::0;-1:-1:-1;;;16869:16:0;::::1;;;16861:53;;;::::0;-1:-1:-1;;;16861:53:0;;15548:2:1;16861:53:0::1;::::0;::::1;15530:21:1::0;15587:2;15567:18;;;15560:30;15626:26;15606:18;;;15599:54;15670:18;;16861:53:0::1;15346:348:1::0;16861:53:0::1;16937:11;::::0;-1:-1:-1;;;;;16937:11:0::1;16925:106;;16979:11;:40:::0;;-1:-1:-1;;;;;;16979:40:0::1;17013:4;16979:40;::::0;;16925:106:::1;17045:11;::::0;;17067:6:::1;::::0;17045:87:::1;::::0;-1:-1:-1;;;17045:87:0;;-1:-1:-1;;;;;17067:6:0;;::::1;17045:87;::::0;::::1;15922:51:1::0;16021:10;17082:12:0::1;16009:23:1::0;15989:18;;;15982:51;16081:18;17104:15:0::1;16069:31:1::0;16049:18;;;16042:59;16117:18;;;16110:45;;;;17045:11:0::1;::::0;:21:::1;::::0;15894:19:1;;17045:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;17041:103:::0;17154:14:::1;:21:::0;;-1:-1:-1;;;;17154:21:0::1;-1:-1:-1::0;;;17154:21:0::1;::::0;;17186:23:::1;:31:::0;;-1:-1:-1;;17186:31:0::1;::::0;;16745:480::o;9195:165::-;9273:4;9290:40;9300:10;9312:9;9323:6;9290:9;:40::i;:::-;-1:-1:-1;9348:4:0;;9195:165;-1:-1:-1;;;9195:165:0:o;17354:175::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;17482:6:::1;::::0;17490:30:::1;::::0;-1:-1:-1;;;17490:30:0;;17514:4:::1;17490:30;::::0;::::1;160:51:1::0;17450:5:0;;-1:-1:-1;;;;;17467:14:0;;::::1;::::0;::::1;::::0;17482:6;;;::::1;::::0;17467:14;;17490:15:::1;::::0;133:18:1;;17490:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17467:54;::::0;-1:-1:-1;;;;;;17467:54:0::1;::::0;;;;;;-1:-1:-1;;;;;16547:32:1;;;17467:54:0::1;::::0;::::1;16529:51:1::0;16596:18;;;16589:34;16502:18;;17467:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7468:379::-:0;7550:16;;-1:-1:-1;;;;;7550:16:0;7536:10;:30;7528:83;;;;-1:-1:-1;;;7528:83:0;;;;;;;:::i;:::-;7644:8;;-1:-1:-1;;;;;7644:8:0;7667:25;;7663:96;;-1:-1:-1;;;;;7709:30:0;;7742:5;7709:30;;;:17;:30;;;;;:38;;-1:-1:-1;;7709:38:0;;;7663:96;-1:-1:-1;7769:8:0;:22;;-1:-1:-1;;;;;7769:22:0;;;-1:-1:-1;;;;;;7769:22:0;;;;;;;:8;7802:30;;;:17;:30;;;;;:37;;-1:-1:-1;;7802:37:0;7769:22;7802:37;;;7468:379::o;17233:109::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;17295:6:::1;::::0;17287:47:::1;::::0;-1:-1:-1;;;;;17295:6:0;;::::1;::::0;17312:21:::1;17287:47:::0;::::1;;;::::0;17295:6:::1;17287:47:::0;17295:6;17287:47;17312:21;17295:6;17287:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;13718:202:::0;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;13874:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;13874:38:0;;-1:-1:-1;;;;;178:32:1;;;13874:38:0::1;::::0;::::1;160:51:1::0;13874:11:0;;::::1;::::0;:29:::1;::::0;133:18:1;;13874:38:0::1;14:203:1::0;10356:680:0;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;10436:16:::1;::::0;-1:-1:-1;;;10436:16:0;::::1;;;10435:17;10427:60;;;::::0;-1:-1:-1;;;10427:60:0;;17086:2:1;10427:60:0::1;::::0;::::1;17068:21:1::0;17125:2;17105:18;;;17098:30;17164:32;17144:18;;;17137:60;17214:18;;10427:60:0::1;16884:354:1::0;10427:60:0::1;10560:6;::::0;-1:-1:-1;;;;;10560:6:0;;::::1;10498:20;10552:15:::0;;;:7:::1;:15;::::0;;;;;;;:23;;-1:-1:-1;;10552:23:0::1;::::0;;10616:20;;-1:-1:-1;;;10616:20:0;;;;10531:9;;10616:18;::::1;::::0;::::1;::::0;:20:::1;::::0;;::::1;::::0;;;;;;;:18;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10605:40:0::1;;10654:4;10661:10;-1:-1:-1::0;;;;;10661:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10605:74;::::0;-1:-1:-1;;;;;;10605:74:0::1;::::0;;;;;;-1:-1:-1;;;;;17729:15:1;;;10605:74:0::1;::::0;::::1;17711:34:1::0;17781:15;;17761:18;;;17754:43;17646:18;;10605:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10586:93:::0;-1:-1:-1;;;;;;10694:22:0;::::1;10690:200;;10753:10;-1:-1:-1::0;;;;;10753:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10742:43:0::1;;10794:4;10801:10;-1:-1:-1::0;;;;;10801:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10742:77;::::0;-1:-1:-1;;;;;;10742:77:0::1;::::0;;;;;;-1:-1:-1;;;;;17729:15:1;;;10742:77:0::1;::::0;::::1;17711:34:1::0;17781:15;;17761:18;;;17754:43;17646:18;;10742:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10733:6;:86:::0;;-1:-1:-1;;;;;;10733:86:0::1;-1:-1:-1::0;;;;;10733:86:0;;;::::1;::::0;;;::::1;::::0;;10690:200:::1;;;10861:6;:17:::0;;-1:-1:-1;;;;;;10861:17:0::1;-1:-1:-1::0;;;;;10861:17:0;::::1;;::::0;;10690:200:::1;10900:9;:22:::0;;-1:-1:-1;;;;;;10900:22:0::1;;-1:-1:-1::0;;;;;10900:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;10941:6:::1;::::0;;::::1;-1:-1:-1::0;10933:15:0;;;-1:-1:-1;10933:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;10933:22:0::1;::::0;;::::1;::::0;;10998:9;;10966:62:::1;::::0;10983:4:::1;::::0;10998:9;::::1;;-1:-1:-1::0;;10966:8:0::1;:62::i;13016:218::-:0;13118:16;;-1:-1:-1;;;;;13118:16:0;13104:10;:30;13096:70;;;;-1:-1:-1;;;13096:70:0;;18010:2:1;13096:70:0;;;17992:21:1;18049:2;18029:18;;;18022:30;18088:29;18068:18;;;18061:57;18135:18;;13096:70:0;17808:351:1;13096:70:0;13177:11;;:49;;-1:-1:-1;;;13177:49:0;;-1:-1:-1;;;;;14190:32:1;;;13177:49:0;;;14172:51:1;14266:14;;14259:22;14239:18;;;14232:50;13177:11:0;;;;:31;;14145:18:1;;13177:49:0;14004:284:1;13581:129:0;13668:11;;:34;;-1:-1:-1;;;13668:34:0;;-1:-1:-1;;;;;178:32:1;;;13668:34:0;;;160:51:1;13644:4:0;;13668:11;;:25;;133:18:1;;13668:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12647:148::-;6279:6;;-1:-1:-1;;;;;6279:6:0;6289:10;6279:20;6271:50;;;;-1:-1:-1;;;6271:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12743:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;12743:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12647:148::o;9537:310::-;-1:-1:-1;;;;;9632:20:0;;9624:52;;;;-1:-1:-1;;;9624:52:0;;18366:2:1;9624:52:0;;;18348:21:1;18405:2;18385:18;;;18378:30;-1:-1:-1;;;18424:18:1;;;18417:49;18483:18;;9624:52:0;18164:343:1;9624:52:0;-1:-1:-1;;;;;9695:21:0;;9687:53;;;;-1:-1:-1;;;9687:53:0;;18366:2:1;9687:53:0;;;18348:21:1;18405:2;18385:18;;;18378:30;-1:-1:-1;;;18424:18:1;;;18417:49;18483:18;;9687:53:0;18164:343:1;9687:53:0;-1:-1:-1;;;;;9753:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;9806:33;;4767:25:1;;;9806:33:0;;4740:18:1;9806:33:0;;;;;;;9537:310;;;:::o;15256:1020::-;15335:4;-1:-1:-1;;;;;15360:18:0;;15352:68;;;;-1:-1:-1;;;15352:68:0;;18714:2:1;15352:68:0;;;18696:21:1;18753:2;18733:18;;;18726:30;18792:34;18772:18;;;18765:62;-1:-1:-1;;;18843:18:1;;;18836:35;18888:19;;15352:68:0;18512:401:1;15352:68:0;-1:-1:-1;;;;;15439:16:0;;15431:64;;;;-1:-1:-1;;;15431:64:0;;19120:2:1;15431:64:0;;;19102:21:1;19159:2;19139:18;;;19132:30;19198:34;19178:18;;;19171:62;-1:-1:-1;;;19249:18:1;;;19242:33;19292:19;;15431:64:0;18918:399:1;15431:64:0;15523:1;15514:6;:10;15506:64;;;;-1:-1:-1;;;15506:64:0;;19524:2:1;15506:64:0;;;19506:21:1;19563:2;19543:18;;;19536:30;19602:34;19582:18;;;19575:62;-1:-1:-1;;;19653:18:1;;;19646:39;19702:19;;15506:64:0;19322:405:1;15506:64:0;-1:-1:-1;;;;;15669:13:0;;15581:8;15669:13;;;:7;:13;;;;;;15581:8;;;;15669:13;;15665:162;;;15705:4;15699:10;;15665:162;;;-1:-1:-1;;;;;15731:11:0;;;;;;:7;:11;;;;;;;;15727:100;;;15766:4;15759:11;;15727:100;;;-1:-1:-1;15811:4:0;15727:100;15841:20;15852:4;15858:2;15841:10;:20::i;:::-;15837:371;;;15882:14;;-1:-1:-1;;;15882:14:0;;;;15878:319;;15922:5;15917:265;;15952:34;;-1:-1:-1;;;15952:34:0;;19934:2:1;15952:34:0;;;19916:21:1;19973:2;19953:18;;;19946:30;20012:26;19992:18;;;19985:54;20056:18;;15952:34:0;19732:348:1;15917:265:0;-1:-1:-1;;;;;16017:31:0;;;;;;:25;:31;;;;;;;;16016:32;:66;;;;-1:-1:-1;;;;;;16053:29:0;;;;;;:25;:29;;;;;;;;16052:30;16016:66;16012:170;;;16107:55;;-1:-1:-1;;;16107:55:0;;20287:2:1;16107:55:0;;;20269:21:1;20326:2;20306:18;;;20299:30;20365:34;20345:18;;;20338:62;-1:-1:-1;;;20416:18:1;;;20409:43;20469:19;;16107:55:0;20085:409:1;16012:170:0;16227:41;16244:4;16250:2;16254:6;16262:5;16227:16;:41::i;:::-;16220:48;15256:1020;-1:-1:-1;;;;;;;15256:1020:0:o;17978:790::-;18076:4;18097:20;18108:4;18114:2;18097:10;:20::i;:::-;18093:228;;;18152:11;;:39;;-1:-1:-1;;;18152:39:0;;-1:-1:-1;;;;;20757:15:1;;;18152:39:0;;;20739:34:1;20809:15;;;20789:18;;;20782:43;20841:18;;;20834:34;;;18121:12:0;;18152:11;;:21;;20674:18:1;;18152:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;18152:39:0;;;;;;;;-1:-1:-1;;18152:39:0;;;;;;;;;;;;:::i;:::-;;;18148:122;;18259:8;;;18148:122;18242:5;-1:-1:-1;18288:7:0;18284:26;;18299:8;;;18284:26;18119:202;18093:228;-1:-1:-1;;;;;18331:13:0;;:7;:13;;;;;;;;;;:23;;18348:6;;18331:7;:23;;18348:6;;18331:23;:::i;:::-;;;;-1:-1:-1;;;;;;;18365:11:0;;:7;:11;;;;;;;;;;:21;;18380:6;;18365:7;:21;;18380:6;;18365:21;:::i;:::-;;;;;;;;18417:2;-1:-1:-1;;;;;18402:26:0;18411:4;-1:-1:-1;;;;;18402:26:0;;18421:6;18402:26;;;;4767:25:1;;4755:2;4740:18;;4621:177;18402:26:0;;;;;;;;18444:16;;-1:-1:-1;;;18444:16:0;;;;18439:298;;18477:28;18496:4;18502:2;18477:18;:28::i;:::-;18525:16;;-1:-1:-1;;;18525:16:0;;;;18524:17;:41;;;;;18545:20;18556:4;18562:2;18545:10;:20::i;:::-;18524:77;;;;-1:-1:-1;;;;;;18570:31:0;;;;;;:25;:31;;;;;;;;18569:32;18524:77;:111;;;;-1:-1:-1;;;;;;18606:29:0;;;;;;:25;:29;;;;;;;;18605:30;18524:111;:121;;;;;18640:5;18639:6;18524:121;18520:206;;;18666:44;;-1:-1:-1;;;18666:44:0;;21081:2:1;18666:44:0;;;21063:21:1;21120:2;21100:18;;;21093:30;21159:34;21139:18;;;21132:62;-1:-1:-1;;;21210:18:1;;;21203:32;21252:19;;18666:44:0;20879:398:1;18520:206:0;-1:-1:-1;18756:4:0;17978:790;;;;;;:::o;14802:446::-;14903:6;;14871:4;;-1:-1:-1;;;;;14895:14:0;;;14903:6;;14895:14;;;;:43;;-1:-1:-1;14932:6:0;;-1:-1:-1;;;;;14926:12:0;;;14932:6;;14926:12;;14895:43;:79;;;;-1:-1:-1;14968:6:0;;-1:-1:-1;;;;;14968:6:0;14955:9;:19;;14895:79;:118;;;;-1:-1:-1;;;;;;14992:21:0;;;;;;:17;:21;;;;;;;;14991:22;14895:118;:159;;;;-1:-1:-1;;;;;;15031:23:0;;;;;;:17;:23;;;;;;;;15030:24;14895:159;:186;;;;-1:-1:-1;;;;;;15071:10:0;;5305:42;15071:10;;14895:186;:219;;;;-1:-1:-1;;;;;;15098:16:0;;;;14895:219;:257;;;;-1:-1:-1;;;;;;15131:21:0;;15147:4;15131:21;;14895:257;:302;;;;-1:-1:-1;15185:11:0;;-1:-1:-1;;;;;15169:28:0;;;15185:11;;15169:28;;14895:302;:345;;;;-1:-1:-1;15228:11:0;;-1:-1:-1;;;;;15214:26:0;;;15228:11;;15214:26;;14895:345;14888:352;14802:446;-1:-1:-1;;;14802:446:0:o;16284:453::-;16367:16;;-1:-1:-1;;;16367:16:0;;;;16366:17;16358:65;;;;-1:-1:-1;;;16358:65:0;;21484:2:1;16358:65:0;;;21466:21:1;21523:2;21503:18;;;21496:30;21562:34;21542:18;;;21535:62;-1:-1:-1;;;21613:18:1;;;21606:33;21656:19;;16358:65:0;21282:399:1;16358:65:0;16439:20;16450:4;16456:2;16439:10;:20::i;:::-;16438:21;:37;;;;-1:-1:-1;16469:6:0;;-1:-1:-1;;;;;16463:12:0;;;16469:6;;16463:12;16438:37;16434:296;;;16504:11;;-1:-1:-1;;;;;16504:11:0;16492:227;;16550:11;:40;;-1:-1:-1;;;;;;16550:40:0;16584:4;16550:40;;;14271:523;;:::o;16492:227::-;-1:-1:-1;;;;;16631:23:0;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;16631:30:0;16657:4;16631:30;;;16680:16;:23;;-1:-1:-1;;;;16680:23:0;-1:-1:-1;;;16680:23:0;;;16284:453;;:::o;222:118:1:-;308:5;301:13;294:21;287:5;284:32;274:60;;330:1;327;320:12;345:376;407:6;415;468:2;456:9;447:7;443:23;439:32;436:52;;;484:1;481;474:12;436:52;523:9;510:23;542:28;564:5;542:28;:::i;:::-;589:5;-1:-1:-1;646:2:1;631:18;;618:32;659:30;618:32;659:30;:::i;:::-;708:7;698:17;;;345:376;;;;;:::o;726:127::-;787:10;782:3;778:20;775:1;768:31;818:4;815:1;808:15;842:4;839:1;832:15;858:275;929:2;923:9;994:2;975:13;;-1:-1:-1;;971:27:1;959:40;;1029:18;1014:34;;1050:22;;;1011:62;1008:88;;;1076:18;;:::i;:::-;1112:2;1105:22;858:275;;-1:-1:-1;858:275:1:o;1138:183::-;1198:4;1231:18;1223:6;1220:30;1217:56;;;1253:18;;:::i;:::-;-1:-1:-1;1298:1:1;1294:14;1310:4;1290:25;;1138:183::o;1326:131::-;-1:-1:-1;;;;;1401:31:1;;1391:42;;1381:70;;1447:1;1444;1437:12;1462:737;1516:5;1569:3;1562:4;1554:6;1550:17;1546:27;1536:55;;1587:1;1584;1577:12;1536:55;1623:6;1610:20;1649:4;1673:60;1689:43;1729:2;1689:43;:::i;:::-;1673:60;:::i;:::-;1767:15;;;1853:1;1849:10;;;;1837:23;;1833:32;;;1798:12;;;;1877:15;;;1874:35;;;1905:1;1902;1895:12;1874:35;1941:2;1933:6;1929:15;1953:217;1969:6;1964:3;1961:15;1953:217;;;2049:3;2036:17;2066:31;2091:5;2066:31;:::i;:::-;2110:18;;2148:12;;;;1986;;1953:217;;;-1:-1:-1;2188:5:1;1462:737;-1:-1:-1;;;;;;1462:737:1:o;2204:477::-;2294:6;2302;2355:2;2343:9;2334:7;2330:23;2326:32;2323:52;;;2371:1;2368;2361:12;2323:52;2411:9;2398:23;2444:18;2436:6;2433:30;2430:50;;;2476:1;2473;2466:12;2430:50;2499:61;2552:7;2543:6;2532:9;2528:22;2499:61;:::i;:::-;2489:71;;;2610:2;2599:9;2595:18;2582:32;2623:28;2645:5;2623:28;:::i;2686:548::-;2798:4;2827:2;2856;2845:9;2838:21;2888:6;2882:13;2931:6;2926:2;2915:9;2911:18;2904:34;2956:1;2966:140;2980:6;2977:1;2974:13;2966:140;;;3075:14;;;3071:23;;3065:30;3041:17;;;3060:2;3037:26;3030:66;2995:10;;2966:140;;;2970:3;3155:1;3150:2;3141:6;3130:9;3126:22;3122:31;3115:42;3225:2;3218;3214:7;3209:2;3201:6;3197:15;3193:29;3182:9;3178:45;3174:54;3166:62;;;;2686:548;;;;:::o;3464:315::-;3532:6;3540;3593:2;3581:9;3572:7;3568:23;3564:32;3561:52;;;3609:1;3606;3599:12;3561:52;3648:9;3635:23;3667:31;3692:5;3667:31;:::i;:::-;3717:5;3769:2;3754:18;;;;3741:32;;-1:-1:-1;;;3464:315:1:o;3976:247::-;4035:6;4088:2;4076:9;4067:7;4063:23;4059:32;4056:52;;;4104:1;4101;4094:12;4056:52;4143:9;4130:23;4162:31;4187:5;4162:31;:::i;4228:388::-;4296:6;4304;4357:2;4345:9;4336:7;4332:23;4328:32;4325:52;;;4373:1;4370;4363:12;4325:52;4412:9;4399:23;4431:31;4456:5;4431:31;:::i;:::-;4481:5;-1:-1:-1;4538:2:1;4523:18;;4510:32;4551:33;4510:32;4551:33;:::i;4803:456::-;4880:6;4888;4896;4949:2;4937:9;4928:7;4924:23;4920:32;4917:52;;;4965:1;4962;4955:12;4917:52;5004:9;4991:23;5023:31;5048:5;5023:31;:::i;:::-;5073:5;-1:-1:-1;5130:2:1;5115:18;;5102:32;5143:33;5102:32;5143:33;:::i;:::-;4803:456;;5195:7;;-1:-1:-1;;;5249:2:1;5234:18;;;;5221:32;;4803:456::o;5264:1138::-;5382:6;5390;5443:2;5431:9;5422:7;5418:23;5414:32;5411:52;;;5459:1;5456;5449:12;5411:52;5499:9;5486:23;5528:18;5569:2;5561:6;5558:14;5555:34;;;5585:1;5582;5575:12;5555:34;5608:61;5661:7;5652:6;5641:9;5637:22;5608:61;:::i;:::-;5598:71;;5688:2;5678:12;;5743:2;5732:9;5728:18;5715:32;5772:2;5762:8;5759:16;5756:36;;;5788:1;5785;5778:12;5756:36;5811:24;;;-1:-1:-1;5866:4:1;5858:13;;5854:27;-1:-1:-1;5844:55:1;;5895:1;5892;5885:12;5844:55;5931:2;5918:16;5954:60;5970:43;6010:2;5970:43;:::i;5954:60::-;6048:15;;;6130:1;6126:10;;;;6118:19;;6114:28;;;6079:12;;;;6154:19;;;6151:39;;;6186:1;6183;6176:12;6151:39;6210:11;;;;6230:142;6246:6;6241:3;6238:15;6230:142;;;6312:17;;6300:30;;6263:12;;;;6350;;;;6230:142;;;6391:5;6381:15;;;;;;;5264:1138;;;;;:::o;6596:382::-;6661:6;6669;6722:2;6710:9;6701:7;6697:23;6693:32;6690:52;;;6738:1;6735;6728:12;6690:52;6777:9;6764:23;6796:31;6821:5;6796:31;:::i;6983:341::-;7185:2;7167:21;;;7224:2;7204:18;;;7197:30;-1:-1:-1;;;7258:2:1;7243:18;;7236:47;7315:2;7300:18;;6983:341::o;7948:741::-;8160:2;8172:21;;;8242:13;;8145:18;;;8264:22;;;8112:4;;8339;;8317:2;8302:18;;;8366:15;;;8112:4;8409:195;8423:6;8420:1;8417:13;8409:195;;;8488:13;;-1:-1:-1;;;;;8484:39:1;8472:52;;8544:12;;;;8579:15;;;;8520:1;8438:9;8409:195;;;-1:-1:-1;;;8667:14:1;;8660:22;8640:18;;8633:50;;;;-1:-1:-1;8621:3:1;7948:741;-1:-1:-1;7948:741:1:o;9034:127::-;9095:10;9090:3;9086:20;9083:1;9076:31;9126:4;9123:1;9116:15;9150:4;9147:1;9140:15;9166:422;9255:1;9298:5;9255:1;9312:270;9333:7;9323:8;9320:21;9312:270;;;9392:4;9388:1;9384:6;9380:17;9374:4;9371:27;9368:53;;;9401:18;;:::i;:::-;9451:7;9441:8;9437:22;9434:55;;;9471:16;;;;9434:55;9550:22;;;;9510:15;;;;9312:270;;;9316:3;9166:422;;;;;:::o;9593:806::-;9642:5;9672:8;9662:80;;-1:-1:-1;9713:1:1;9727:5;;9662:80;9761:4;9751:76;;-1:-1:-1;9798:1:1;9812:5;;9751:76;9843:4;9861:1;9856:59;;;;9929:1;9924:130;;;;9836:218;;9856:59;9886:1;9877:10;;9900:5;;;9924:130;9961:3;9951:8;9948:17;9945:43;;;9968:18;;:::i;:::-;-1:-1:-1;;10024:1:1;10010:16;;10039:5;;9836:218;;10138:2;10128:8;10125:16;10119:3;10113:4;10110:13;10106:36;10100:2;10090:8;10087:16;10082:2;10076:4;10073:12;10069:35;10066:77;10063:159;;;-1:-1:-1;10175:19:1;;;10207:5;;10063:159;10254:34;10279:8;10273:4;10254:34;:::i;:::-;10324:6;10320:1;10316:6;10312:19;10303:7;10300:32;10297:58;;;10335:18;;:::i;:::-;10373:20;;9593:806;-1:-1:-1;;;9593:806:1:o;10404:140::-;10462:5;10491:47;10532:4;10522:8;10518:19;10512:4;10491:47;:::i;10549:168::-;10622:9;;;10653;;10670:15;;;10664:22;;10650:37;10640:71;;10691:18;;:::i;10722:128::-;10789:9;;;10810:11;;;10807:37;;;10824:18;;:::i;11205:127::-;11266:10;11261:3;11257:20;11254:1;11247:31;11297:4;11294:1;11287:15;11321:4;11318:1;11311:15;11684:197;11722:3;11750:6;11791:2;11784:5;11780:14;11818:2;11809:7;11806:15;11803:41;;11824:18;;:::i;:::-;11873:1;11860:15;;11684:197;-1:-1:-1;;;11684:197:1:o;11886:125::-;11951:9;;;11972:10;;;11969:36;;;11985:18;;:::i;12016:404::-;12218:2;12200:21;;;12257:2;12237:18;;;12230:30;12296:34;12291:2;12276:18;;12269:62;-1:-1:-1;;;12362:2:1;12347:18;;12340:38;12410:3;12395:19;;12016:404::o;12425:425::-;12627:2;12609:21;;;12666:2;12646:18;;;12639:30;12705:34;12700:2;12685:18;;12678:62;12776:31;12771:2;12756:18;;12749:59;12840:3;12825:19;;12425:425::o;13198:385::-;13277:6;13285;13338:2;13326:9;13317:7;13313:23;13309:32;13306:52;;;13354:1;13351;13344:12;13306:52;13386:9;13380:16;13405:31;13430:5;13405:31;:::i;:::-;13505:2;13490:18;;13484:25;13455:5;;-1:-1:-1;13518:33:1;13484:25;13518:33;:::i;16166:184::-;16236:6;16289:2;16277:9;16268:7;16264:23;16260:32;16257:52;;;16305:1;16302;16295:12;16257:52;-1:-1:-1;16328:16:1;;16166:184;-1:-1:-1;16166:184:1:o;16634:245::-;16701:6;16754:2;16742:9;16733:7;16729:23;16725:32;16722:52;;;16770:1;16767;16760:12;16722:52;16802:9;16796:16;16821:28;16843:5;16821:28;:::i;17243:251::-;17313:6;17366:2;17354:9;17345:7;17341:23;17337:32;17334:52;;;17382:1;17379;17372:12;17334:52;17414:9;17408:16;17433:31;17458:5;17433:31;:::i

Swarm Source

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