ETH Price: $2,525.38 (+1.26%)

Token

Freddo (FRED)
 

Overview

Max Total Supply

1,000,000,000 FRED

Holders

87

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.612940813998200663 FRED

Value
$0.00
0x1e784b60024f5c3f0866e0d2f1ecbf33ac3d5f42
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Freddo

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-25
*/

// 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 Protections {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract Freddo 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 = 1_000_000_000;
    string constant private _name = "Freddo";
    string constant private _symbol = "FRED";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant public developmentWallet = 0xdF76bdE88180A416161F0774098aD08fEfA6872E;
    
    uint256 private _maxTxAmount = (_tTotal * 2) / 100;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Protections protections;

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

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);
        _liquidityHolders[_owner] = true;
    }

    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 setInitializer(address initializer) external onlyOwner {
        require(!tradingEnabled);
        require(initializer != address(this), "Can't be self.");
        protections = Protections(initializer);
    }

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

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

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

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    function getMaxTX() external view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() external view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    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(protections)
            && to != address(protections);
    }

    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.");
                }
            }
            if (buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if (to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        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) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if (address(protections) == address(0)){
                protections = Protections(address(this));
            }
        }
    }

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

    function sweepBalance() external {
        payable(developmentWallet).transfer(address(this).balance);
    }
    
    function sweepExternalTokens(address token) external {
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(developmentWallet, 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 protections.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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","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":"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":"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":"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":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","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":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

608060405260006002556007805460ff191660011790556064620000266012600a620006cb565b6200003690633b9aca00620006e3565b62000043906002620006e3565b6200004f9190620006fd565b6009556064620000626012600a620006cb565b6200007290633b9aca00620006e3565b6200007f906002620006e3565b6200008b9190620006fd565b600a908155600b805461ffff19169055600c8054336001600160a01b03199182168117909255600d80549091169091179055620000cb90601290620006cb565b620000db90633b9aca00620006e3565b600c80546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200012f6012600a620006cb565b6200013f90633b9aca00620006e3565b60405190815260200160405180910390a34660380362000189576007805462010000600160b01b0319167510ed43c718714eb63d5aa57b78b54704e256024e000017905562000298565b46606103620001c2576007805462010000600160b01b03191675d99d1c33f9fc3444f8101754abc46c52416550d1000017905562000298565b4660011480620001d25750466004145b80620001de5750466003145b80620001ea5750466005145b1562000220576007805462010000600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d000017905562000298565b4661a86a036200025a576007805462010000600160b01b0319167560ae616a2155ee3d9a68541ba4544862310933d4000017905562000298565b4660fa0362000293576007805462010000600160b01b03191675f491e7b69e4244ad4002bc14e878a34207e38c29000017905562000298565b600080fd5b600760029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000312919062000720565b6001600160a01b031663c9c65396600760029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039a919062000720565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620003e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040d919062000720565b600880546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055600c546007546200046892918216916201000090910416600019620004b5565b6007546200048a9030906201000090046001600160a01b0316600019620004b5565b600c546001600160a01b03166000908152600460205260409020805460ff191660011790556200074b565b6001600160a01b038316620005075760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005555760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620004fe565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200060d578160001904821115620005f157620005f1620005b6565b80851615620005ff57918102915b93841c9390800290620005d1565b509250929050565b6000826200062657506001620006c5565b816200063557506000620006c5565b81600181146200064e5760028114620006595762000679565b6001915050620006c5565b60ff8411156200066d576200066d620005b6565b50506001821b620006c5565b5060208310610133831016604e8410600b84101617156200069e575081810a620006c5565b620006aa8383620005cc565b8060001904821115620006c157620006c1620005b6565b0290505b92915050565b6000620006dc60ff84168362000615565b9392505050565b8082028115828204841417620006c557620006c5620005b6565b6000826200071b57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200073357600080fd5b81516001600160a01b0381168114620006dc57600080fd5b612974806200075b6000396000f3fe60806040526004361061025a5760003560e01c80634ada218b11610149578063893d20e8116100c6578063ab558e4d1161008a578063c3513f6d11610064578063c3513f6d14610779578063dd62ed3e1461078e578063feadde9c146107d457600080fd5b8063ab558e4d14610711578063b3ab15fb14610731578063c04a54141461075157600080fd5b8063893d20e81461067c5780638a63bd9b1461069a5780638a8c523c146106af57806395d89b41146106c4578063a9059cbb146106f157600080fd5b80635cce86cd1161010d5780635cce86cd146105c35780636ebd0078146105fc57806370a0823114610611578063715018a61461064757806381cf58a91461065c57600080fd5b80634ada218b1461052a5780634fb2e45d1461054457806350a8e01614610564578063570ca735146105835780635c24b074146105a357600080fd5b806323b872dd116101d757806333251a0b1161019b57806333251a0b1461049557806336fddb04146104b557806339a05902146104d55780633f3cf56c146104ea578063452ed4f11461050a57600080fd5b806323b872dd146103f957806326003957146104195780632610eaca146104395780632b112e4914610459578063313ce5671461046e57600080fd5b8063095ea7b31161021e578063095ea7b3146103485780630dcbcf1c146103685780630fa604e4146103a157806313b4a7f4146103c457806318160ddd146103e457600080fd5b806303fd2a4514610266578063044df7261461029957806306fdde03146102bb5780630758d924146102f357806307dd79e01461031957600080fd5b3661026157005b600080fd5b34801561027257600080fd5b5061027c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a557600080fd5b506102b96102b436600461243e565b6107f4565b005b3480156102c757600080fd5b5060408051808201909152600681526546726564646f60d01b60208201525b6040516102909190612477565b3480156102ff57600080fd5b5060075461027c906201000090046001600160a01b031681565b34801561032557600080fd5b5060075461033890610100900460ff1681565b6040519015158152602001610290565b34801561035457600080fd5b506103386103633660046124e1565b6108b7565b34801561037457600080fd5b5061033861038336600461250b565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103ad57600080fd5b506103b66108ce565b604051908152602001610290565b3480156103d057600080fd5b506102b96103df366004612526565b6108ee565b3480156103f057600080fd5b506103b6610a58565b34801561040557600080fd5b50610338610414366004612559565b610a9a565b34801561042557600080fd5b506102b9610434366004612595565b610b12565b34801561044557600080fd5b506102b961045436600461268d565b610c61565b34801561046557600080fd5b506103b6610e19565b34801561047a57600080fd5b50610483610e97565b60405160ff9091168152602001610290565b3480156104a157600080fd5b506102b96104b036600461250b565b610ec5565b3480156104c157600080fd5b506102b96104d036600461274d565b610f7c565b3480156104e157600080fd5b506102b9610ff5565b3480156104f657600080fd5b506102b9610505366004612595565b61107c565b34801561051657600080fd5b5060085461027c906001600160a01b031681565b34801561053657600080fd5b50600b546103389060ff1681565b34801561055057600080fd5b506102b961055f36600461250b565b6111d7565b34801561057057600080fd5b50600b5461033890610100900460ff1681565b34801561058f57600080fd5b50600e5461027c906001600160a01b031681565b3480156105af57600080fd5b506102b96105be36600461250b565b6113bd565b3480156105cf57600080fd5b506103386105de36600461250b565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561060857600080fd5b506103b661149d565b34801561061d57600080fd5b506103b661062c36600461250b565b6001600160a01b031660009081526020819052604090205490565b34801561065357600080fd5b506102b96114b8565b34801561066857600080fd5b50600d5461027c906001600160a01b031681565b34801561068857600080fd5b50600c546001600160a01b031661027c565b3480156106a657600080fd5b506103386115cc565b3480156106bb57600080fd5b506102b9611643565b3480156106d057600080fd5b506040805180820190915260048152631194915160e21b60208201526102e6565b3480156106fd57600080fd5b5061033861070c3660046124e1565b61180a565b34801561071d57600080fd5b506102b961072c36600461250b565b611821565b34801561073d57600080fd5b506102b961074c36600461250b565b611930565b34801561075d57600080fd5b5061027c73df76bde88180a416161f0774098ad08fefa6872e81565b34801561078557600080fd5b506102b9611a09565b34801561079a57600080fd5b506103b66107a9366004612526565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107e057600080fd5b506102b96107ef36600461274d565b611a4c565b600c546001600160a01b031633146108475760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b600b5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd90604401600060405180830381600087803b15801561089b57600080fd5b505af11580156108af573d6000803e3d6000fd5b505050505050565b60006108c4338484611ac5565b5060015b92915050565b60006108dc6012600a612863565b600a546108e99190612872565b905090565b600c546001600160a01b0316331461093c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b60075460ff1661094b57600080fd5b6001600160a01b038216301480159061096d57506001600160a01b0381163014155b801561098757506008546001600160a01b03838116911614155b80156109a157506008546001600160a01b03828116911614155b6109db5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b604482015260640161083e565b806001600160a01b0316826001600160a01b031603610a1b576001600160a01b0381166000908152600460205260409020805460ff191660011790555050565b6001600160a01b038281166000908152600460205260408082208054600160ff1991821681179092559385168352912080549092161790555b5050565b6000610a666012600a612863565b610a7490633b9aca00612894565b600003610a8057600080fd5b610a8c6012600a612863565b6108e990633b9aca00612894565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610aff576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610af99084906128ab565b90915550505b610b0a848484611bbe565b949350505050565b600c546001600160a01b03163314610b605760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b6064610b6e6012600a612863565b610b7c90633b9aca00612894565b610b869190612872565b8183610b946012600a612863565b610ba290633b9aca00612894565b610bac9190612894565b610bb69190612872565b1015610c2a5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e00000000000000000000000000000000606482015260840161083e565b8082610c386012600a612863565b610c4690633b9aca00612894565b610c509190612894565b610c5a9190612872565b600a555050565b600c546001600160a01b03163314610caf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b8051825114610d005760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e0000000000000000000000604482015260640161083e565b60005b82518161ffff161015610e1457610d1c6012600a612863565b828261ffff1681518110610d3257610d326128be565b6020026020010151610d449190612894565b336000908152602081905260409020541015610da25760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e0000000000000000000000000000604482015260640161083e565b610e0133848361ffff1681518110610dbc57610dbc6128be565b60200260200101516012600a610dd29190612863565b858561ffff1681518110610de857610de86128be565b6020026020010151610dfa9190612894565b6001611ff3565b5080610e0c816128d4565b915050610d03565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610e7391906128f5565b610e7f6012600a612863565b610e8d90633b9aca00612894565b6108e991906128ab565b6000610ea56012600a612863565b610eb390633b9aca00612894565b600003610ebf57600080fd5b50601290565b600c546001600160a01b03163314610f135760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b600b546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b158015610f6157600080fd5b505af1158015610f75573d6000803e3d6000fd5b5050505050565b600c546001600160a01b03163314610fca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600d546001600160a01b031633146110605760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b606482015260840161083e565b61106a6000611930565b600d80546001600160a01b0319169055565b600c546001600160a01b031633146110ca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b6103e86110d96012600a612863565b6110e790633b9aca00612894565b6110f2906005612894565b6110fc9190612872565b818361110a6012600a612863565b61111890633b9aca00612894565b6111229190612894565b61112c9190612872565b10156111a05760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e000000000000000000606482015260840161083e565b80826111ae6012600a612863565b6111bc90633b9aca00612894565b6111c69190612894565b6111d09190612872565b6009555050565b600c546001600160a01b031633146112255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b6001600160a01b0381166112a15760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606482015260840161083e565b61deac196001600160a01b038216016113225760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606482015260840161083e565b600c546001600160a01b03166000908152602081905260409020541561136b57600c546001600160a01b031660008181526020819052604090205461136991908390610dfa565b505b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c546001600160a01b0316331461140b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b600b5460ff161561141b57600080fd5b306001600160a01b038216036114735760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e000000000000000000000000000000000000604482015260640161083e565b600b80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006114ab6012600a612863565b6009546108e99190612872565b600c546001600160a01b031633146115065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b600b5460ff1661157e5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e0000000000000000000000000000000000606482015260840161083e565b600c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600c546000906001600160a01b0316331461161d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b60075461163d9030906201000090046001600160a01b0316600019611ac5565b50600190565b600c546001600160a01b031633146116915760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b600b5460ff16156116e45760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c6564210000000000000000604482015260640161083e565b600b54610100900460ff1661173b5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e0000000000000000604482015260640161083e565b600b546201000090046001600160a01b031661176b57600b805462010000600160b01b0319163062010000021790555b600b54600854604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156117dd57600080fd5b505af19250505080156117ee575060015b50600b805460ff19908116600117909155600780549091169055565b6000611817338484611bbe565b5060019392505050565b6040516370a0823160e01b815230600482015281906001600160a01b0382169063a9059cbb9073df76bde88180a416161f0774098ad08fefa6872e9083906370a0823190602401602060405180830381865afa158015611885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a99190612908565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561190c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e149190612921565b600d546001600160a01b0316331461199b5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b606482015260840161083e565b600e546001600160a01b031680156119ce576001600160a01b0381166000908152600460205260409020805460ff191690555b50600e80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b60405173df76bde88180a416161f0774098ad08fefa6872e904780156108fc02916000818181858888f19350505050158015611a49573d6000803e3d6000fd5b50565b600c546001600160a01b03163314611a9a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611b115760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161083e565b6001600160a01b038216611b5d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161083e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161083e565b6001600160a01b038316611c865760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161083e565b60008211611ce85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161083e565b6001600160a01b0384166000908152600160205260408120548190819060ff1615611d165760019250611d44565b6001600160a01b03861660009081526001602052604090205460ff1615611d405760019150611d44565b5060015b611d4e878761222f565b15611fdc57600b5460ff16611e4f5780611daa5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c6564210000000000000000604482015260640161083e565b6001600160a01b03871660009081526005602052604090205460ff16158015611dec57506001600160a01b03861660009081526005602052604090205460ff16155b15611e4f5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b606482015260840161083e565b8280611e585750815b15611f07576001600160a01b03871660009081526006602052604090205460ff16158015611e9f57506001600160a01b03861660009081526006602052604090205460ff16155b15611f0757600954851115611f075760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161083e565b6007546001600160a01b03878116620100009092041614801590611f29575081155b15611fdc576001600160a01b03861660009081526006602052604090205460ff16611fdc57600a5485611f71886001600160a01b031660009081526020819052604090205490565b611f7b91906128f5565b1115611fdc5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b606482015260840161083e565b611fe887878784611ff3565b979650505050505050565b6000611fff858561222f565b1561209957600b5460405163ecd07a5360e01b81526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612082575060408051601f3d908101601f1916820190925261207f91810190612921565b60015b61208b57600080fd5b90508061209757600080fd5b505b6001600160a01b038516600090815260208190526040812080548592906120c19084906128ab565b90915550506001600160a01b038416600090815260208190526040812080548592906120ee9084906128f5565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161213a91815260200190565b60405180910390a3600b54610100900460ff166122245761215b8585612346565b600b54610100900460ff161580156121785750612178858561222f565b801561219d57506001600160a01b03851660009081526005602052604090205460ff16155b80156121c257506001600160a01b03841660009081526005602052604090205460ff16155b80156121cc575081155b156122245760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b606482015260840161083e565b506001949350505050565b600c546000906001600160a01b0384811691161480159061225e5750600c546001600160a01b03838116911614155b80156122755750600c546001600160a01b03163214155b801561229a57506001600160a01b03821660009081526004602052604090205460ff16155b80156122bf57506001600160a01b03831660009081526004602052604090205460ff16155b80156122d657506001600160a01b03821661dead14155b80156122ea57506001600160a01b03821615155b80156122ff57506001600160a01b0383163014155b801561231f5750600b546001600160a01b03848116620100009092041614155b801561233f5750600b546001600160a01b03838116620100009092041614155b9392505050565b600b54610100900460ff16156123aa5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840161083e565b6123b4828261222f565b1580156123ce57506008546001600160a01b038281169116145b15610a54576001600160a01b038083166000908152600460205260409020805460ff19166001179055600b805461ff001916610100179081905562010000900416610a54575050600b805462010000600160b01b031916306201000002179055565b8015158114611a4957600080fd5b6000806040838503121561245157600080fd5b823561245c81612430565b9150602083013561246c81612430565b809150509250929050565b600060208083528351808285015260005b818110156124a457858101830151858201604001528201612488565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146124dc57600080fd5b919050565b600080604083850312156124f457600080fd5b6124fd836124c5565b946020939093013593505050565b60006020828403121561251d57600080fd5b61233f826124c5565b6000806040838503121561253957600080fd5b612542836124c5565b9150612550602084016124c5565b90509250929050565b60008060006060848603121561256e57600080fd5b612577846124c5565b9250612585602085016124c5565b9150604084013590509250925092565b600080604083850312156125a857600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125f6576125f66125b7565b604052919050565b600067ffffffffffffffff821115612618576126186125b7565b5060051b60200190565b600082601f83011261263357600080fd5b81356020612648612643836125fe565b6125cd565b82815260059290921b8401810191818101908684111561266757600080fd5b8286015b84811015612682578035835291830191830161266b565b509695505050505050565b600080604083850312156126a057600080fd5b823567ffffffffffffffff808211156126b857600080fd5b818501915085601f8301126126cc57600080fd5b813560206126dc612643836125fe565b82815260059290921b840181019181810190898411156126fb57600080fd5b948201945b8386101561272057612711866124c5565b82529482019490820190612700565b9650508601359250508082111561273657600080fd5b5061274385828601612622565b9150509250929050565b6000806040838503121561276057600080fd5b61245c836124c5565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156127ba5781600019048211156127a0576127a0612769565b808516156127ad57918102915b93841c9390800290612784565b509250929050565b6000826127d1575060016108c8565b816127de575060006108c8565b81600181146127f457600281146127fe5761281a565b60019150506108c8565b60ff84111561280f5761280f612769565b50506001821b6108c8565b5060208310610133831016604e8410600b841016171561283d575081810a6108c8565b612847838361277f565b806000190482111561285b5761285b612769565b029392505050565b600061233f60ff8416836127c2565b60008261288f57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176108c8576108c8612769565b818103818111156108c8576108c8612769565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036128eb576128eb612769565b6001019392505050565b808201808211156108c8576108c8612769565b60006020828403121561291a57600080fd5b5051919050565b60006020828403121561293357600080fd5b815161233f8161243056fea2646970667358221220970b36ee441099d45b24a27a8560ade189a3da1318082e89f568a0b90575afca64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061025a5760003560e01c80634ada218b11610149578063893d20e8116100c6578063ab558e4d1161008a578063c3513f6d11610064578063c3513f6d14610779578063dd62ed3e1461078e578063feadde9c146107d457600080fd5b8063ab558e4d14610711578063b3ab15fb14610731578063c04a54141461075157600080fd5b8063893d20e81461067c5780638a63bd9b1461069a5780638a8c523c146106af57806395d89b41146106c4578063a9059cbb146106f157600080fd5b80635cce86cd1161010d5780635cce86cd146105c35780636ebd0078146105fc57806370a0823114610611578063715018a61461064757806381cf58a91461065c57600080fd5b80634ada218b1461052a5780634fb2e45d1461054457806350a8e01614610564578063570ca735146105835780635c24b074146105a357600080fd5b806323b872dd116101d757806333251a0b1161019b57806333251a0b1461049557806336fddb04146104b557806339a05902146104d55780633f3cf56c146104ea578063452ed4f11461050a57600080fd5b806323b872dd146103f957806326003957146104195780632610eaca146104395780632b112e4914610459578063313ce5671461046e57600080fd5b8063095ea7b31161021e578063095ea7b3146103485780630dcbcf1c146103685780630fa604e4146103a157806313b4a7f4146103c457806318160ddd146103e457600080fd5b806303fd2a4514610266578063044df7261461029957806306fdde03146102bb5780630758d924146102f357806307dd79e01461031957600080fd5b3661026157005b600080fd5b34801561027257600080fd5b5061027c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a557600080fd5b506102b96102b436600461243e565b6107f4565b005b3480156102c757600080fd5b5060408051808201909152600681526546726564646f60d01b60208201525b6040516102909190612477565b3480156102ff57600080fd5b5060075461027c906201000090046001600160a01b031681565b34801561032557600080fd5b5060075461033890610100900460ff1681565b6040519015158152602001610290565b34801561035457600080fd5b506103386103633660046124e1565b6108b7565b34801561037457600080fd5b5061033861038336600461250b565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103ad57600080fd5b506103b66108ce565b604051908152602001610290565b3480156103d057600080fd5b506102b96103df366004612526565b6108ee565b3480156103f057600080fd5b506103b6610a58565b34801561040557600080fd5b50610338610414366004612559565b610a9a565b34801561042557600080fd5b506102b9610434366004612595565b610b12565b34801561044557600080fd5b506102b961045436600461268d565b610c61565b34801561046557600080fd5b506103b6610e19565b34801561047a57600080fd5b50610483610e97565b60405160ff9091168152602001610290565b3480156104a157600080fd5b506102b96104b036600461250b565b610ec5565b3480156104c157600080fd5b506102b96104d036600461274d565b610f7c565b3480156104e157600080fd5b506102b9610ff5565b3480156104f657600080fd5b506102b9610505366004612595565b61107c565b34801561051657600080fd5b5060085461027c906001600160a01b031681565b34801561053657600080fd5b50600b546103389060ff1681565b34801561055057600080fd5b506102b961055f36600461250b565b6111d7565b34801561057057600080fd5b50600b5461033890610100900460ff1681565b34801561058f57600080fd5b50600e5461027c906001600160a01b031681565b3480156105af57600080fd5b506102b96105be36600461250b565b6113bd565b3480156105cf57600080fd5b506103386105de36600461250b565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561060857600080fd5b506103b661149d565b34801561061d57600080fd5b506103b661062c36600461250b565b6001600160a01b031660009081526020819052604090205490565b34801561065357600080fd5b506102b96114b8565b34801561066857600080fd5b50600d5461027c906001600160a01b031681565b34801561068857600080fd5b50600c546001600160a01b031661027c565b3480156106a657600080fd5b506103386115cc565b3480156106bb57600080fd5b506102b9611643565b3480156106d057600080fd5b506040805180820190915260048152631194915160e21b60208201526102e6565b3480156106fd57600080fd5b5061033861070c3660046124e1565b61180a565b34801561071d57600080fd5b506102b961072c36600461250b565b611821565b34801561073d57600080fd5b506102b961074c36600461250b565b611930565b34801561075d57600080fd5b5061027c73df76bde88180a416161f0774098ad08fefa6872e81565b34801561078557600080fd5b506102b9611a09565b34801561079a57600080fd5b506103b66107a9366004612526565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107e057600080fd5b506102b96107ef36600461274d565b611a4c565b600c546001600160a01b031633146108475760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b600b5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd90604401600060405180830381600087803b15801561089b57600080fd5b505af11580156108af573d6000803e3d6000fd5b505050505050565b60006108c4338484611ac5565b5060015b92915050565b60006108dc6012600a612863565b600a546108e99190612872565b905090565b600c546001600160a01b0316331461093c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b60075460ff1661094b57600080fd5b6001600160a01b038216301480159061096d57506001600160a01b0381163014155b801561098757506008546001600160a01b03838116911614155b80156109a157506008546001600160a01b03828116911614155b6109db5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b604482015260640161083e565b806001600160a01b0316826001600160a01b031603610a1b576001600160a01b0381166000908152600460205260409020805460ff191660011790555050565b6001600160a01b038281166000908152600460205260408082208054600160ff1991821681179092559385168352912080549092161790555b5050565b6000610a666012600a612863565b610a7490633b9aca00612894565b600003610a8057600080fd5b610a8c6012600a612863565b6108e990633b9aca00612894565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610aff576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610af99084906128ab565b90915550505b610b0a848484611bbe565b949350505050565b600c546001600160a01b03163314610b605760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b6064610b6e6012600a612863565b610b7c90633b9aca00612894565b610b869190612872565b8183610b946012600a612863565b610ba290633b9aca00612894565b610bac9190612894565b610bb69190612872565b1015610c2a5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e00000000000000000000000000000000606482015260840161083e565b8082610c386012600a612863565b610c4690633b9aca00612894565b610c509190612894565b610c5a9190612872565b600a555050565b600c546001600160a01b03163314610caf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b8051825114610d005760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e0000000000000000000000604482015260640161083e565b60005b82518161ffff161015610e1457610d1c6012600a612863565b828261ffff1681518110610d3257610d326128be565b6020026020010151610d449190612894565b336000908152602081905260409020541015610da25760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e0000000000000000000000000000604482015260640161083e565b610e0133848361ffff1681518110610dbc57610dbc6128be565b60200260200101516012600a610dd29190612863565b858561ffff1681518110610de857610de86128be565b6020026020010151610dfa9190612894565b6001611ff3565b5080610e0c816128d4565b915050610d03565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610e7391906128f5565b610e7f6012600a612863565b610e8d90633b9aca00612894565b6108e991906128ab565b6000610ea56012600a612863565b610eb390633b9aca00612894565b600003610ebf57600080fd5b50601290565b600c546001600160a01b03163314610f135760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b600b546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b158015610f6157600080fd5b505af1158015610f75573d6000803e3d6000fd5b5050505050565b600c546001600160a01b03163314610fca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600d546001600160a01b031633146110605760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b606482015260840161083e565b61106a6000611930565b600d80546001600160a01b0319169055565b600c546001600160a01b031633146110ca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b6103e86110d96012600a612863565b6110e790633b9aca00612894565b6110f2906005612894565b6110fc9190612872565b818361110a6012600a612863565b61111890633b9aca00612894565b6111229190612894565b61112c9190612872565b10156111a05760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e000000000000000000606482015260840161083e565b80826111ae6012600a612863565b6111bc90633b9aca00612894565b6111c69190612894565b6111d09190612872565b6009555050565b600c546001600160a01b031633146112255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b6001600160a01b0381166112a15760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606482015260840161083e565b61deac196001600160a01b038216016113225760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606482015260840161083e565b600c546001600160a01b03166000908152602081905260409020541561136b57600c546001600160a01b031660008181526020819052604090205461136991908390610dfa565b505b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c546001600160a01b0316331461140b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b600b5460ff161561141b57600080fd5b306001600160a01b038216036114735760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e000000000000000000000000000000000000604482015260640161083e565b600b80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006114ab6012600a612863565b6009546108e99190612872565b600c546001600160a01b031633146115065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b600b5460ff1661157e5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e0000000000000000000000000000000000606482015260840161083e565b600c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600c546000906001600160a01b0316331461161d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b60075461163d9030906201000090046001600160a01b0316600019611ac5565b50600190565b600c546001600160a01b031633146116915760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b600b5460ff16156116e45760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c6564210000000000000000604482015260640161083e565b600b54610100900460ff1661173b5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e0000000000000000604482015260640161083e565b600b546201000090046001600160a01b031661176b57600b805462010000600160b01b0319163062010000021790555b600b54600854604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156117dd57600080fd5b505af19250505080156117ee575060015b50600b805460ff19908116600117909155600780549091169055565b6000611817338484611bbe565b5060019392505050565b6040516370a0823160e01b815230600482015281906001600160a01b0382169063a9059cbb9073df76bde88180a416161f0774098ad08fefa6872e9083906370a0823190602401602060405180830381865afa158015611885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a99190612908565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561190c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e149190612921565b600d546001600160a01b0316331461199b5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b606482015260840161083e565b600e546001600160a01b031680156119ce576001600160a01b0381166000908152600460205260409020805460ff191690555b50600e80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b60405173df76bde88180a416161f0774098ad08fefa6872e904780156108fc02916000818181858888f19350505050158015611a49573d6000803e3d6000fd5b50565b600c546001600160a01b03163314611a9a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161083e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611b115760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161083e565b6001600160a01b038216611b5d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161083e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161083e565b6001600160a01b038316611c865760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161083e565b60008211611ce85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161083e565b6001600160a01b0384166000908152600160205260408120548190819060ff1615611d165760019250611d44565b6001600160a01b03861660009081526001602052604090205460ff1615611d405760019150611d44565b5060015b611d4e878761222f565b15611fdc57600b5460ff16611e4f5780611daa5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c6564210000000000000000604482015260640161083e565b6001600160a01b03871660009081526005602052604090205460ff16158015611dec57506001600160a01b03861660009081526005602052604090205460ff16155b15611e4f5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b606482015260840161083e565b8280611e585750815b15611f07576001600160a01b03871660009081526006602052604090205460ff16158015611e9f57506001600160a01b03861660009081526006602052604090205460ff16155b15611f0757600954851115611f075760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161083e565b6007546001600160a01b03878116620100009092041614801590611f29575081155b15611fdc576001600160a01b03861660009081526006602052604090205460ff16611fdc57600a5485611f71886001600160a01b031660009081526020819052604090205490565b611f7b91906128f5565b1115611fdc5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b606482015260840161083e565b611fe887878784611ff3565b979650505050505050565b6000611fff858561222f565b1561209957600b5460405163ecd07a5360e01b81526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612082575060408051601f3d908101601f1916820190925261207f91810190612921565b60015b61208b57600080fd5b90508061209757600080fd5b505b6001600160a01b038516600090815260208190526040812080548592906120c19084906128ab565b90915550506001600160a01b038416600090815260208190526040812080548592906120ee9084906128f5565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161213a91815260200190565b60405180910390a3600b54610100900460ff166122245761215b8585612346565b600b54610100900460ff161580156121785750612178858561222f565b801561219d57506001600160a01b03851660009081526005602052604090205460ff16155b80156121c257506001600160a01b03841660009081526005602052604090205460ff16155b80156121cc575081155b156122245760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b606482015260840161083e565b506001949350505050565b600c546000906001600160a01b0384811691161480159061225e5750600c546001600160a01b03838116911614155b80156122755750600c546001600160a01b03163214155b801561229a57506001600160a01b03821660009081526004602052604090205460ff16155b80156122bf57506001600160a01b03831660009081526004602052604090205460ff16155b80156122d657506001600160a01b03821661dead14155b80156122ea57506001600160a01b03821615155b80156122ff57506001600160a01b0383163014155b801561231f5750600b546001600160a01b03848116620100009092041614155b801561233f5750600b546001600160a01b03838116620100009092041614155b9392505050565b600b54610100900460ff16156123aa5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840161083e565b6123b4828261222f565b1580156123ce57506008546001600160a01b038281169116145b15610a54576001600160a01b038083166000908152600460205260409020805460ff19166001179055600b805461ff001916610100179081905562010000900416610a54575050600b805462010000600160b01b031916306201000002179055565b8015158114611a4957600080fd5b6000806040838503121561245157600080fd5b823561245c81612430565b9150602083013561246c81612430565b809150509250929050565b600060208083528351808285015260005b818110156124a457858101830151858201604001528201612488565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146124dc57600080fd5b919050565b600080604083850312156124f457600080fd5b6124fd836124c5565b946020939093013593505050565b60006020828403121561251d57600080fd5b61233f826124c5565b6000806040838503121561253957600080fd5b612542836124c5565b9150612550602084016124c5565b90509250929050565b60008060006060848603121561256e57600080fd5b612577846124c5565b9250612585602085016124c5565b9150604084013590509250925092565b600080604083850312156125a857600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125f6576125f66125b7565b604052919050565b600067ffffffffffffffff821115612618576126186125b7565b5060051b60200190565b600082601f83011261263357600080fd5b81356020612648612643836125fe565b6125cd565b82815260059290921b8401810191818101908684111561266757600080fd5b8286015b84811015612682578035835291830191830161266b565b509695505050505050565b600080604083850312156126a057600080fd5b823567ffffffffffffffff808211156126b857600080fd5b818501915085601f8301126126cc57600080fd5b813560206126dc612643836125fe565b82815260059290921b840181019181810190898411156126fb57600080fd5b948201945b8386101561272057612711866124c5565b82529482019490820190612700565b9650508601359250508082111561273657600080fd5b5061274385828601612622565b9150509250929050565b6000806040838503121561276057600080fd5b61245c836124c5565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156127ba5781600019048211156127a0576127a0612769565b808516156127ad57918102915b93841c9390800290612784565b509250929050565b6000826127d1575060016108c8565b816127de575060006108c8565b81600181146127f457600281146127fe5761281a565b60019150506108c8565b60ff84111561280f5761280f612769565b50506001821b6108c8565b5060208310610133831016604e8410600b841016171561283d575081810a6108c8565b612847838361277f565b806000190482111561285b5761285b612769565b029392505050565b600061233f60ff8416836127c2565b60008261288f57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176108c8576108c8612769565b818103818111156108c8576108c8612769565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036128eb576128eb612769565b6001019392505050565b808201808211156108c8576108c8612769565b60006020828403121561291a57600080fd5b5051919050565b60006020828403121561293357600080fd5b815161233f8161243056fea2646970667358221220970b36ee441099d45b24a27a8560ade189a3da1318082e89f568a0b90575afca64736f6c63430008130033

Deployed Bytecode Sourcemap

3951:14351:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4804:73;;;;;;;;;;;;4835:42;4804:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;4804:73:0;;;;;;;;12375:153;;;;;;;;;;-1:-1:-1;12375:153:0;;;;;:::i;:::-;;:::i;:::-;;9694:80;;;;;;;;;;-1:-1:-1;9766:5:0;;;;;;;;;;;;-1:-1:-1;;;9766:5:0;;;;9694:80;;;;;;;:::i;4743:26::-;;;;;;;;;;-1:-1:-1;4743:26:0;;;;;;;-1:-1:-1;;;;;4743:26:0;;;4710;;;;;;;;;;-1:-1:-1;4710:26:0;;;;;;;;;;;;;;1715:14:1;;1708:22;1690:41;;1678:2;1663:18;4710:26:0;1550:187:1;10302:161:0;;;;;;;;;;-1:-1:-1;10302:161:0;;;;;:::i;:::-;;:::i;11804:140::-;;;;;;;;;;-1:-1:-1;11804:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;11902:34:0;11878:4;11902:34;;;:25;:34;;;;;;;;;11804:140;13205:114;;;;;;;;;;;;;:::i;:::-;;;2539:25:1;;;2527:2;2512:18;13205:114:0;2393:177:1;13327:523:0;;;;;;;;;;-1:-1:-1;13327:523:0;;;;;:::i;:::-;;:::i;9365:115::-;;;;;;;;;;;;;:::i;10972:306::-;;;;;;;;;;-1:-1:-1;10972:306:0;;;;;:::i;:::-;;:::i;12817:264::-;;;;;;;;;;-1:-1:-1;12817:264:0;;;;;:::i;:::-;;:::i;17068:433::-;;;;;;;;;;-1:-1:-1;17068:433:0;;;;;:::i;:::-;;:::i;12108:141::-;;;;;;;;;;;;;:::i;9486:112::-;;;;;;;;;;;;;:::i;:::-;;;6016:4:1;6004:17;;;5986:36;;5974:2;5959:18;9486:112:0;5844:184:1;12257:110:0;;;;;;;;;;-1:-1:-1;12257:110:0;;;;;:::i;:::-;;:::i;11656:140::-;;;;;;;;;;-1:-1:-1;11656:140:0;;;;;:::i;:::-;;:::i;8789:221::-;;;;;;;;;;;;;:::i;12536:273::-;;;;;;;;;;-1:-1:-1;12536:273:0;;;;;:::i;:::-;;:::i;4776:21::-;;;;;;;;;;-1:-1:-1;4776:21:0;;;;-1:-1:-1;;;;;4776:21:0;;;5101:34;;;;;;;;;;-1:-1:-1;5101:34:0;;;;;;;;7359:539;;;;;;;;;;-1:-1:-1;7359:539:0;;;;;:::i;:::-;;:::i;5142:36::-;;;;;;;;;;-1:-1:-1;5142:36:0;;;;;;;;;;;8217:23;;;;;;;;;;-1:-1:-1;8217:23:0;;;;-1:-1:-1;;;;;8217:23:0;;;11286:222;;;;;;;;;;-1:-1:-1;11286:222:0;;;;;:::i;:::-;;:::i;11516:132::-;;;;;;;;;;-1:-1:-1;11516:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;11610:30:0;11586:4;11610:30;;;:21;:30;;;;;;;;;11516:132;13089:108;;;;;;;;;;;;;:::i;10004:117::-;;;;;;;;;;-1:-1:-1;10004:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10097:16:0;10070:7;10097:16;;;;;;;;;;;;10004:117;7906:265;;;;;;;;;;;;;:::i;8179:31::-;;;;;;;;;;-1:-1:-1;8179:31:0;;;;-1:-1:-1;;;;;8179:31:0;;;9780:79;;;;;;;;;;-1:-1:-1;9850:6:0;;-1:-1:-1;;;;;9850:6:0;9780:79;;10789:175;;;;;;;;;;;;;:::i;16274:480::-;;;;;;;;;;;;;:::i;9604:84::-;;;;;;;;;;-1:-1:-1;9678:7:0;;;;;;;;;;;;-1:-1:-1;;;9678:7:0;;;;9604:84;;10129:165;;;;;;;;;;-1:-1:-1;10129:165:0;;;;;:::i;:::-;;:::i;16884:176::-;;;;;;;;;;-1:-1:-1;16884:176:0;;;;;:::i;:::-;;:::i;8402:379::-;;;;;;;;;;-1:-1:-1;8402:379:0;;;;;:::i;:::-;;:::i;4884:86::-;;;;;;;;;;;;4928:42;4884:86;;16762:110;;;;;;;;;;;;;:::i;9865:133::-;;;;;;;;;;-1:-1:-1;9865:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9967:19:0;;;9949:7;9967:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9865:133;11952:148;;;;;;;;;;-1:-1:-1;11952:148:0;;;;;:::i;:::-;;:::i;12375:153::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;;;;;;;;;12470:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;12470:50:0;;6886:14:1;;6879:22;12470:50:0::1;::::0;::::1;6861:41:1::0;6945:14;;6938:22;6918:18;;;6911:50;12470:11:0;;;::::1;-1:-1:-1::0;;;;;12470:11:0::1;::::0;:26:::1;::::0;6834:18:1;;12470:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12375:153:::0;;:::o;10302:161::-;10379:4;10396:37;10405:10;10417:7;10426:6;10396:8;:37::i;:::-;-1:-1:-1;10451:4:0;10302:161;;;;;:::o;13205:114::-;13252:7;13297:13;4627:2;13297;:13;:::i;:::-;13279:14;;:32;;;;:::i;:::-;13272:39;;13205:114;:::o;13327:523::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;13431:23:::1;::::0;::::1;;13423:32;;;::::0;::::1;;-1:-1:-1::0;;;;;13474:23:0;::::1;13492:4;13474:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;13519:24:0;::::1;13538:4;13519:24;;13474:69;:107;;;;-1:-1:-1::0;13565:6:0::1;::::0;-1:-1:-1;;;;;13565:16:0;;::::1;:6:::0;::::1;:16;;13474:107;:146;;;;-1:-1:-1::0;13603:6:0::1;::::0;-1:-1:-1;;;;;13603:17:0;;::::1;:6:::0;::::1;:17;;13474:146;13466:170;;;::::0;-1:-1:-1;;;13466:170:0;;8911:2:1;13466:170:0::1;::::0;::::1;8893:21:1::0;8950:2;8930:18;;;8923:30;-1:-1:-1;;;8969:18:1;;;8962:41;9020:18;;13466:170:0::1;8709:335:1::0;13466:170:0::1;13661:7;-1:-1:-1::0;;;;;13651:17:0::1;:6;-1:-1:-1::0;;;;;13651:17:0::1;::::0;13647:196:::1;;-1:-1:-1::0;;;;;13685:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;13685:33:0::1;13714:4;13685:33;::::0;;13327:523;;:::o;13647:196::-:1;-1:-1:-1::0;;;;;13751:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;:32;;13779:4:::1;-1:-1:-1::0;;13751:32:0;;::::1;::::0;::::1;::::0;;;13798:26;;::::1;::::0;;;;:33;;;;::::1;;::::0;;13647:196:::1;13327:523:::0;;:::o;9365:115::-;9420:7;4688:13;4627:2;4688;:13;:::i;:::-;4671:30;;4478:13;4671:30;:::i;:::-;9446:1;9435:12;9431:31;;9451:8;;;9431:31;4688:13;4627:2;4688;:13;:::i;:::-;4671:30;;4478:13;4671:30;:::i;10972:306::-;-1:-1:-1;;;;;11093:19:0;;11072:4;11093:19;;;:11;:19;;;;;;;;11113:10;11093:31;;;;;;;;-1:-1:-1;;11093:52:0;11089:126;;-1:-1:-1;;;;;11162:19:0;;;;;;:11;:19;;;;;;;;11182:10;11162:31;;;;;;;:41;;11197:6;;11162:19;:41;;11197:6;;11162:41;:::i;:::-;;;;-1:-1:-1;;11089:126:0;11234:36;11244:6;11252:9;11263:6;11234:9;:36::i;:::-;11227:43;10972:306;-1:-1:-1;;;;10972:306:0:o;12817:264::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;12959:3:::1;4688:13;4627:2;4688;:13;:::i;:::-;4671:30;::::0;4478:13:::1;4671:30;:::i;:::-;12949:13;;;;:::i;:::-;12937:7:::0;12926;4688:13:::1;4627:2;4688;:13;:::i;:::-;4671:30;::::0;4478:13:::1;4671:30;:::i;:::-;12916:17;;;;:::i;:::-;12915:29;;;;:::i;:::-;:48;;12907:109;;;::::0;-1:-1:-1;;;12907:109:0;;9557:2:1;12907:109:0::1;::::0;::::1;9539:21:1::0;9596:2;9576:18;;;9569:30;9635:34;9615:18;;;9608:62;9706:18;9686;;;9679:46;9742:19;;12907:109:0::1;9355:412:1::0;12907:109:0::1;13066:7:::0;13055;4688:13:::1;4627:2;4688;:13;:::i;:::-;4671:30;::::0;4478:13:::1;4671:30;:::i;:::-;13045:17;;;;:::i;:::-;13044:29;;;;:::i;:::-;13027:14;:46:::0;-1:-1:-1;;12817:264:0:o;17068:433::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;17203:7:::1;:14;17184:8;:15;:33;17176:67;;;::::0;-1:-1:-1;;;17176:67:0;;9974:2:1;17176:67:0::1;::::0;::::1;9956:21:1::0;10013:2;9993:18;;;9986:30;10052:23;10032:18;;;10025:51;10093:18;;17176:67:0::1;9772:345:1::0;17176:67:0::1;17259:8;17254:240;17277:8;:15;17273:1;:19;;;17254:240;;;17358:13;4627:2;17358;:13;:::i;:::-;17347:7;17355:1;17347:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;17332:10;10070:7:::0;10097:16;;;;;;;;;;;17322:49:::1;;17314:80;;;::::0;-1:-1:-1;;;17314:80:0;;10456:2:1;17314:80:0::1;::::0;::::1;10438:21:1::0;10495:2;10475:18;;;10468:30;10534:20;10514:18;;;10507:48;10572:18;;17314:80:0::1;10254:342:1::0;17314:80:0::1;17409:73;17426:10;17438:8;17447:1;17438:11;;;;;;;;;;:::i;:::-;;;;;;;4627:2;17462;:13;;;;:::i;:::-;17451:7;17459:1;17451:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;17477:4;17409:16;:73::i;:::-;-1:-1:-1::0;17294:3:0;::::1;::::0;::::1;:::i;:::-;;;;17254:240;;;;17068:433:::0;;:::o;12108:141::-;12161:7;10097:16;;;;;;4835:42;10097:16;;;;12200:39;;10097:16;12200:39;:::i;:::-;4688:13;4627:2;4688;:13;:::i;:::-;4671:30;;4478:13;4671:30;:::i;:::-;12189:51;;;;:::i;9486:112::-;9538:5;4688:13;4627:2;4688;:13;:::i;:::-;4671:30;;4478:13;4671:30;:::i;:::-;9562:1;9551:12;9547:31;;9567:8;;;9547:31;-1:-1:-1;4627:2:0;;9486:112::o;12257:110::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;12326:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;12326:33:0;;-1:-1:-1;;;;;178:55:1;;;12326:33:0::1;::::0;::::1;160:74:1::0;12326:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;12326:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12257:110:::0;:::o;11656:140::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;-1:-1:-1;;;;;11748:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;11748:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11656:140::o;8789:221::-;8867:16;;-1:-1:-1;;;;;8867:16:0;8853:10;:30;8845:83;;;;-1:-1:-1;;;8845:83:0;;11135:2:1;8845:83:0;;;11117:21:1;11174:2;11154:18;;;11147:30;11213:34;11193:18;;;11186:62;-1:-1:-1;;;11264:18:1;;;11257:38;11312:19;;8845:83:0;10933:404:1;8845:83:0;8939:23;8959:1;8939:11;:23::i;:::-;8973:16;:29;;-1:-1:-1;;;;;;8973:29:0;;;8789:221::o;12536:273::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;12681:4:::1;4688:13;4627:2;4688;:13;:::i;:::-;4671:30;::::0;4478:13:::1;4671:30;:::i;:::-;12667:11;::::0;12677:1:::1;12667:11;:::i;:::-;:18;;;;:::i;:::-;12655:7:::0;12644;4688:13:::1;4627:2;4688;:13;:::i;:::-;4671:30;::::0;4478:13:::1;4671:30;:::i;:::-;12634:17;;;;:::i;:::-;12633:29;;;;:::i;:::-;:53;;12625:121;;;::::0;-1:-1:-1;;;12625:121:0;;11544:2:1;12625:121:0::1;::::0;::::1;11526:21:1::0;11583:2;11563:18;;;11556:30;11622:34;11602:18;;;11595:62;11693:25;11673:18;;;11666:53;11736:19;;12625:121:0::1;11342:419:1::0;12625:121:0::1;12794:7:::0;12783;4688:13:::1;4627:2;4688;:13;:::i;:::-;4671:30;::::0;4478:13:::1;4671:30;:::i;:::-;12773:17;;;;:::i;:::-;12772:29;;;;:::i;:::-;12757:12;:44:::0;-1:-1:-1;;12536:273:0:o;7359:539::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;-1:-1:-1;;;;;7438:22:0;::::1;7430:96;;;::::0;-1:-1:-1;;;7430:96:0;;11968:2:1;7430:96:0::1;::::0;::::1;11950:21:1::0;12007:2;11987:18;;;11980:30;12046:34;12026:18;;;12019:62;12117:31;12097:18;;;12090:59;12166:19;;7430:96:0::1;11766:425:1::0;7430:96:0::1;-1:-1:-1::0;;;;;;;7545:16:0;::::1;::::0;7537:90:::1;;;::::0;-1:-1:-1;;;7537:90:0;;11968:2:1;7537:90:0::1;::::0;::::1;11950:21:1::0;12007:2;11987:18;;;11980:30;12046:34;12026:18;;;12019:62;12117:31;12097:18;;;12090:59;12166:19;;7537:90:0::1;11766:425:1::0;7537:90:0::1;7652:6;::::0;-1:-1:-1;;;;;7652:6:0::1;7662:1;10097:16:::0;;;;;;;;;;;7642:21;7638:113:::1;;7697:6;::::0;-1:-1:-1;;;;;7697:6:0::1;10070:7:::0;10097:16;;;;;;;;;;;7680:59:::1;::::0;7697:6;7705:8;;7715:17:::1;10004:117:::0;7680:59:::1;;7638:113;7790:6;::::0;;-1:-1:-1;;;;;7807:17:0;;::::1;-1:-1:-1::0;;;;;;7807:17:0;::::1;::::0;::::1;::::0;;;7840:40:::1;::::0;7790:6;::::1;::::0;7807:17;7790:6;;7840:40:::1;::::0;7771:16:::1;::::0;7840:40:::1;7419:479;7359:539:::0;:::o;11286:222::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;11370:14:::1;::::0;::::1;;11369:15;11361:24;;;::::0;::::1;;11427:4;-1:-1:-1::0;;;;;11404:28:0;::::1;::::0;11396:55:::1;;;::::0;-1:-1:-1;;;11396:55:0;;12398:2:1;11396:55:0::1;::::0;::::1;12380:21:1::0;12437:2;12417:18;;;12410:30;12476:16;12456:18;;;12449:44;12510:18;;11396:55:0::1;12196:338:1::0;11396:55:0::1;11462:11;:38:::0;;-1:-1:-1;;;;;11462:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;11462:38:0;;::::1;::::0;;;::::1;::::0;;11286:222::o;13089:108::-;13132:7;13175:13;4627:2;13175;:13;:::i;:::-;13159:12;;:30;;;;:::i;7906:265::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;7973:14:::1;::::0;::::1;;7965:74;;;::::0;-1:-1:-1;;;7965:74:0;;12741:2:1;7965:74:0::1;::::0;::::1;12723:21:1::0;12780:2;12760:18;;;12753:30;12819:34;12799:18;;;12792:62;12890:17;12870:18;;;12863:45;12925:19;;7965:74:0::1;12539:411:1::0;7965:74:0::1;8069:6;::::0;;-1:-1:-1;;;;;;8086:19:0;::::1;::::0;;;8121:42:::1;::::0;-1:-1:-1;;;;;8069:6:0;;::::1;::::0;8050:16:::1;::::0;8069:6;;8121:42:::1;::::0;8050:16;;8121:42:::1;7954:217;7906:265::o:0;10789:175::-;7213:6;;10855:4;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;10904:9:::1;::::0;10872:62:::1;::::0;10889:4:::1;::::0;10904:9;;::::1;-1:-1:-1::0;;;;;10904:9:0::1;-1:-1:-1::0;;10872:8:0::1;:62::i;:::-;-1:-1:-1::0;10952:4:0::1;10789:175:::0;:::o;16274:480::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;16336:14:::1;::::0;::::1;;16335:15;16327:52;;;::::0;-1:-1:-1;;;16327:52:0;;13157:2:1;16327:52:0::1;::::0;::::1;13139:21:1::0;13196:2;13176:18;;;13169:30;13235:26;13215:18;;;13208:54;13279:18;;16327:52:0::1;12955:348:1::0;16327:52:0::1;16398:16;::::0;::::1;::::0;::::1;;;16390:53;;;::::0;-1:-1:-1;;;16390:53:0;;13510:2:1;16390:53:0::1;::::0;::::1;13492:21:1::0;13549:2;13529:18;;;13522:30;13588:26;13568:18;;;13561:54;13632:18;;16390:53:0::1;13308:348:1::0;16390:53:0::1;16466:11;::::0;;;::::1;-1:-1:-1::0;;;;;16466:11:0::1;16454:106;;16508:11;:40:::0;;-1:-1:-1;;;;;;16508:40:0::1;16542:4;16508:40:::0;::::1;;::::0;;16454:106:::1;16574:11;::::0;16596:6:::1;::::0;16574:87:::1;::::0;-1:-1:-1;;;16574:87:0;;-1:-1:-1;;;;;16596:6:0;;::::1;16574:87;::::0;::::1;13884:74:1::0;14006:10;16611:12:0::1;13994:23:1::0;13974:18;;;13967:51;14066:18;16633:15:0::1;14054:31:1::0;14034:18;;;14027:59;4627:2:0::1;14102:18:1::0;;;14095:45;16574:11:0;;;::::1;;::::0;:21:::1;::::0;13856:19:1;;16574:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;16570:103:::0;16683:14:::1;:21:::0;;-1:-1:-1;;16683:21:0;;::::1;16700:4;16683:21;::::0;;;16715:23:::1;:31:::0;;;;::::1;::::0;;16274:480::o;10129:165::-;10207:4;10224:40;10234:10;10246:9;10257:6;10224:9;:40::i;:::-;-1:-1:-1;10282:4:0;;10129:165;-1:-1:-1;;;10129:165:0:o;16884:176::-;17021:30;;-1:-1:-1;;;17021:30:0;;17045:4;17021:30;;;160:74:1;16970:5:0;;-1:-1:-1;;;;;16987:14:0;;;;;4928:42;;16987:14;;17021:15;;133:18:1;;17021:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16987:65;;;;;;;;;;-1:-1:-1;;;;;14532:55:1;;;16987:65:0;;;14514:74:1;14604:18;;;14597:34;14487:18;;16987:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8402:379::-;8484:16;;-1:-1:-1;;;;;8484:16:0;8470:10;:30;8462:83;;;;-1:-1:-1;;;8462:83:0;;11135:2:1;8462:83:0;;;11117:21:1;11174:2;11154:18;;;11147:30;11213:34;11193:18;;;11186:62;-1:-1:-1;;;11264:18:1;;;11257:38;11312:19;;8462:83:0;10933:404:1;8462:83:0;8578:8;;-1:-1:-1;;;;;8578:8:0;8601:25;;8597:96;;-1:-1:-1;;;;;8643:30:0;;8676:5;8643:30;;;:17;:30;;;;;:38;;-1:-1:-1;;8643:38:0;;;8597:96;-1:-1:-1;8703:8:0;:22;;-1:-1:-1;;;;;8703:22:0;;;-1:-1:-1;;;;;;8703:22:0;;;;;;;:8;8736:30;;;:17;:30;;;;;:37;;-1:-1:-1;;8736:37:0;8703:22;8736:37;;;8402:379::o;16762:110::-;16806:58;;4928:42;;16842:21;16806:58;;;;;;;;;16842:21;4928:42;16806:58;;;;;;;;;;;;;;;;;;;;;16762:110::o;11952:148::-;7213:6;;-1:-1:-1;;;;;7213:6:0;7223:10;7213:20;7205:50;;;;-1:-1:-1;;;7205:50:0;;6555:2:1;7205:50:0;;;6537:21:1;6594:2;6574:18;;;6567:30;-1:-1:-1;;;6613:18:1;;;6606:47;6670:18;;7205:50:0;6353:341:1;7205:50:0;-1:-1:-1;;;;;12048:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;12048:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11952:148::o;10471:310::-;-1:-1:-1;;;;;10566:20:0;;10558:52;;;;-1:-1:-1;;;10558:52:0;;15094:2:1;10558:52:0;;;15076:21:1;15133:2;15113:18;;;15106:30;-1:-1:-1;;;15152:18:1;;;15145:49;15211:18;;10558:52:0;14892:343:1;10558:52:0;-1:-1:-1;;;;;10629:21:0;;10621:53;;;;-1:-1:-1;;;10621:53:0;;15094:2:1;10621:53:0;;;15076:21:1;15133:2;15113:18;;;15106:30;-1:-1:-1;;;15152:18:1;;;15145:49;15211:18;;10621:53:0;14892:343:1;10621:53:0;-1:-1:-1;;;;;10687:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10740:33;;2539:25:1;;;10740:33:0;;2512:18:1;10740:33:0;;;;;;;10471:310;;;:::o;14312:1523::-;14391:4;-1:-1:-1;;;;;14416:18:0;;14408:68;;;;-1:-1:-1;;;14408:68:0;;15442:2:1;14408:68:0;;;15424:21:1;15481:2;15461:18;;;15454:30;15520:34;15500:18;;;15493:62;-1:-1:-1;;;15571:18:1;;;15564:35;15616:19;;14408:68:0;15240:401:1;14408:68:0;-1:-1:-1;;;;;14495:16:0;;14487:64;;;;-1:-1:-1;;;14487:64:0;;15848:2:1;14487:64:0;;;15830:21:1;15887:2;15867:18;;;15860:30;15926:34;15906:18;;;15899:62;-1:-1:-1;;;15977:18:1;;;15970:33;16020:19;;14487:64:0;15646:399:1;14487:64:0;14579:1;14570:6;:10;14562:64;;;;-1:-1:-1;;;14562:64:0;;16252:2:1;14562:64:0;;;16234:21:1;16291:2;16271:18;;;16264:30;16330:34;16310:18;;;16303:62;-1:-1:-1;;;16381:18:1;;;16374:39;16430:19;;14562:64:0;16050:405:1;14562:64:0;-1:-1:-1;;;;;14725:13:0;;14637:8;14725:13;;;:7;:13;;;;;;14637:8;;;;14725:13;;14721:162;;;14761:4;14755:10;;14721:162;;;-1:-1:-1;;;;;14787:11:0;;;;;;:7;:11;;;;;;;;14783:100;;;14822:4;14815:11;;14783:100;;;-1:-1:-1;14867:4:0;14783:100;14897:20;14908:4;14914:2;14897:10;:20::i;:::-;14893:874;;;14938:14;;;;14934:319;;14978:5;14973:265;;15008:34;;-1:-1:-1;;;15008:34:0;;16662:2:1;15008:34:0;;;16644:21:1;16701:2;16681:18;;;16674:30;16740:26;16720:18;;;16713:54;16784:18;;15008:34:0;16460:348:1;14973:265:0;-1:-1:-1;;;;;15073:31:0;;;;;;:25;:31;;;;;;;;15072:32;:66;;;;-1:-1:-1;;;;;;15109:29:0;;;;;;:25;:29;;;;;;;;15108:30;15072:66;15068:170;;;15163:55;;-1:-1:-1;;;15163:55:0;;17015:2:1;15163:55:0;;;16997:21:1;17054:2;17034:18;;;17027:30;17093:34;17073:18;;;17066:62;-1:-1:-1;;;17144:18:1;;;17137:43;17197:19;;15163:55:0;16813:409:1;15068:170:0;15271:3;:11;;;;15278:4;15271:11;15267:232;;;-1:-1:-1;;;;;15307:27:0;;;;;;:21;:27;;;;;;;;15306:28;:58;;;;-1:-1:-1;;;;;;15339:25:0;;;;;;:21;:25;;;;;;;;15338:26;15306:58;15302:182;;;15407:12;;15397:6;:22;;15389:75;;;;-1:-1:-1;;;15389:75:0;;17429:2:1;15389:75:0;;;17411:21:1;17468:2;17448:18;;;17441:30;17507:34;17487:18;;;17480:62;-1:-1:-1;;;17558:18:1;;;17551:38;17606:19;;15389:75:0;17227:404:1;15389:75:0;15531:9;;-1:-1:-1;;;;;15517:24:0;;;15531:9;;;;;15517:24;;;;:33;;;15546:4;15545:5;15517:33;15513:243;;;-1:-1:-1;;;;;15576:25:0;;;;;;:21;:25;;;;;;;;15571:170;;15660:14;;15650:6;15634:13;15644:2;-1:-1:-1;;;;;10097:16:0;10070:7;10097:16;;;;;;;;;;;;10004:117;15634:13;:22;;;;:::i;:::-;:40;;15626:95;;;;-1:-1:-1;;;15626:95:0;;17838:2:1;15626:95:0;;;17820:21:1;17877:2;17857:18;;;17850:30;17916:34;17896:18;;;17889:62;-1:-1:-1;;;17967:18:1;;;17960:40;18017:19;;15626:95:0;17636:406:1;15626:95:0;15786:41;15803:4;15809:2;15813:6;15821:5;15786:16;:41::i;:::-;15779:48;14312:1523;-1:-1:-1;;;;;;;14312:1523:0:o;17509:790::-;17607:4;17628:20;17639:4;17645:2;17628:10;:20::i;:::-;17624:228;;;17683:11;;:39;;-1:-1:-1;;;17683:39:0;;-1:-1:-1;;;;;18328:15:1;;;17683:39:0;;;18310:34:1;18380:15;;;18360:18;;;18353:43;18412:18;;;18405:34;;;17652:12:0;;17683:11;;;;;:21;;18222:18:1;;17683:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;17683:39:0;;;;;;;;-1:-1:-1;;17683:39:0;;;;;;;;;;;;:::i;:::-;;;17679:122;;17790:8;;;17679:122;17773:5;-1:-1:-1;17819:7:0;17815:26;;17830:8;;;17815:26;17650:202;17624:228;-1:-1:-1;;;;;17862:13:0;;:7;:13;;;;;;;;;;:23;;17879:6;;17862:7;:23;;17879:6;;17862:23;:::i;:::-;;;;-1:-1:-1;;;;;;;17896:11:0;;:7;:11;;;;;;;;;;:21;;17911:6;;17896:7;:21;;17911:6;;17896:21;:::i;:::-;;;;;;;;17948:2;-1:-1:-1;;;;;17933:26:0;17942:4;-1:-1:-1;;;;;17933:26:0;;17952:6;17933:26;;;;2539:25:1;;2527:2;2512:18;;2393:177;17933:26:0;;;;;;;;17975:16;;;;;;;17970:298;;18008:28;18027:4;18033:2;18008:18;:28::i;:::-;18056:16;;;;;;;18055:17;:41;;;;;18076:20;18087:4;18093:2;18076:10;:20::i;:::-;18055:77;;;;-1:-1:-1;;;;;;18101:31:0;;;;;;:25;:31;;;;;;;;18100:32;18055:77;:111;;;;-1:-1:-1;;;;;;18137:29:0;;;;;;:25;:29;;;;;;;;18136:30;18055:111;:121;;;;;18171:5;18170:6;18055:121;18051:206;;;18197:44;;-1:-1:-1;;;18197:44:0;;18652:2:1;18197:44:0;;;18634:21:1;18691:2;18671:18;;;18664:30;18730:34;18710:18;;;18703:62;-1:-1:-1;;;18781:18:1;;;18774:32;18823:19;;18197:44:0;18450:398:1;18051:206:0;-1:-1:-1;18287:4:0;17509:790;;;;;;:::o;13858:446::-;13959:6;;13927:4;;-1:-1:-1;;;;;13951:14:0;;;13959:6;;13951:14;;;;:43;;-1:-1:-1;13988:6:0;;-1:-1:-1;;;;;13982:12:0;;;13988:6;;13982:12;;13951:43;:79;;;;-1:-1:-1;14024:6:0;;-1:-1:-1;;;;;14024:6:0;14011:9;:19;;13951:79;:118;;;;-1:-1:-1;;;;;;14048:21:0;;;;;;:17;:21;;;;;;;;14047:22;13951:118;:159;;;;-1:-1:-1;;;;;;14087:23:0;;;;;;:17;:23;;;;;;;;14086:24;13951:159;:186;;;;-1:-1:-1;;;;;;14127:10:0;;4835:42;14127:10;;13951:186;:219;;;;-1:-1:-1;;;;;;14154:16:0;;;;13951:219;:257;;;;-1:-1:-1;;;;;;14187:21:0;;14203:4;14187:21;;13951:257;:302;;;;-1:-1:-1;14241:11:0;;-1:-1:-1;;;;;14225:28:0;;;14241:11;;;;;14225:28;;13951:302;:345;;;;-1:-1:-1;14284:11:0;;-1:-1:-1;;;;;14270:26:0;;;14284:11;;;;;14270:26;;13951:345;13944:352;13858:446;-1:-1:-1;;;13858:446:0:o;15843:423::-;15926:16;;;;;;;15925:17;15917:65;;;;-1:-1:-1;;;15917:65:0;;19055:2:1;15917:65:0;;;19037:21:1;19094:2;19074:18;;;19067:30;19133:34;19113:18;;;19106:62;-1:-1:-1;;;19184:18:1;;;19177:33;19227:19;;15917:65:0;18853:399:1;15917:65:0;15998:20;16009:4;16015:2;15998:10;:20::i;:::-;15997:21;:37;;;;-1:-1:-1;16028:6:0;;-1:-1:-1;;;;;16022:12:0;;;16028:6;;16022:12;15997:37;15993:266;;;-1:-1:-1;;;;;16051:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;16051:30:0;16077:4;16051:30;;;16096:16;:23;;-1:-1:-1;;16096:23:0;16051:30;16096:23;;;;;16146:11;;;;16134:114;;-1:-1:-1;;16192:11:0;:40;;-1:-1:-1;;;;;;16192:40:0;16226:4;16192:40;;;;;15843:423::o;245:118:1:-;331:5;324:13;317:21;310:5;307:32;297:60;;353:1;350;343:12;368:376;430:6;438;491:2;479:9;470:7;466:23;462:32;459:52;;;507:1;504;497:12;459:52;546:9;533:23;565:28;587:5;565:28;:::i;:::-;612:5;-1:-1:-1;669:2:1;654:18;;641:32;682:30;641:32;682:30;:::i;:::-;731:7;721:17;;;368:376;;;;;:::o;749:548::-;861:4;890:2;919;908:9;901:21;951:6;945:13;994:6;989:2;978:9;974:18;967:34;1019:1;1029:140;1043:6;1040:1;1037:13;1029:140;;;1138:14;;;1134:23;;1128:30;1104:17;;;1123:2;1100:26;1093:66;1058:10;;1029:140;;;1033:3;1218:1;1213:2;1204:6;1193:9;1189:22;1185:31;1178:42;1288:2;1281;1277:7;1272:2;1264:6;1260:15;1256:29;1245:9;1241:45;1237:54;1229:62;;;;749:548;;;;:::o;1742:196::-;1810:20;;-1:-1:-1;;;;;1859:54:1;;1849:65;;1839:93;;1928:1;1925;1918:12;1839:93;1742:196;;;:::o;1943:254::-;2011:6;2019;2072:2;2060:9;2051:7;2047:23;2043:32;2040:52;;;2088:1;2085;2078:12;2040:52;2111:29;2130:9;2111:29;:::i;:::-;2101:39;2187:2;2172:18;;;;2159:32;;-1:-1:-1;;;1943:254:1:o;2202:186::-;2261:6;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;2353:29;2372:9;2353:29;:::i;2575:260::-;2643:6;2651;2704:2;2692:9;2683:7;2679:23;2675:32;2672:52;;;2720:1;2717;2710:12;2672:52;2743:29;2762:9;2743:29;:::i;:::-;2733:39;;2791:38;2825:2;2814:9;2810:18;2791:38;:::i;:::-;2781:48;;2575:260;;;;;:::o;2840:328::-;2917:6;2925;2933;2986:2;2974:9;2965:7;2961:23;2957:32;2954:52;;;3002:1;2999;2992:12;2954:52;3025:29;3044:9;3025:29;:::i;:::-;3015:39;;3073:38;3107:2;3096:9;3092:18;3073:38;:::i;:::-;3063:48;;3158:2;3147:9;3143:18;3130:32;3120:42;;2840:328;;;;;:::o;3173:248::-;3241:6;3249;3302:2;3290:9;3281:7;3277:23;3273:32;3270:52;;;3318:1;3315;3308:12;3270:52;-1:-1:-1;;3341:23:1;;;3411:2;3396:18;;;3383:32;;-1:-1:-1;3173:248:1:o;3426:127::-;3487:10;3482:3;3478:20;3475:1;3468:31;3518:4;3515:1;3508:15;3542:4;3539:1;3532:15;3558:275;3629:2;3623:9;3694:2;3675:13;;-1:-1:-1;;3671:27:1;3659:40;;3729:18;3714:34;;3750:22;;;3711:62;3708:88;;;3776:18;;:::i;:::-;3812:2;3805:22;3558:275;;-1:-1:-1;3558:275:1:o;3838:183::-;3898:4;3931:18;3923:6;3920:30;3917:56;;;3953:18;;:::i;:::-;-1:-1:-1;3998:1:1;3994:14;4010:4;3990:25;;3838:183::o;4026:662::-;4080:5;4133:3;4126:4;4118:6;4114:17;4110:27;4100:55;;4151:1;4148;4141:12;4100:55;4187:6;4174:20;4213:4;4237:60;4253:43;4293:2;4253:43;:::i;:::-;4237:60;:::i;:::-;4331:15;;;4417:1;4413:10;;;;4401:23;;4397:32;;;4362:12;;;;4441:15;;;4438:35;;;4469:1;4466;4459:12;4438:35;4505:2;4497:6;4493:15;4517:142;4533:6;4528:3;4525:15;4517:142;;;4599:17;;4587:30;;4637:12;;;;4550;;4517:142;;;-1:-1:-1;4677:5:1;4026:662;-1:-1:-1;;;;;;4026:662:1:o;4693:1146::-;4811:6;4819;4872:2;4860:9;4851:7;4847:23;4843:32;4840:52;;;4888:1;4885;4878:12;4840:52;4928:9;4915:23;4957:18;4998:2;4990:6;4987:14;4984:34;;;5014:1;5011;5004:12;4984:34;5052:6;5041:9;5037:22;5027:32;;5097:7;5090:4;5086:2;5082:13;5078:27;5068:55;;5119:1;5116;5109:12;5068:55;5155:2;5142:16;5177:4;5201:60;5217:43;5257:2;5217:43;:::i;5201:60::-;5295:15;;;5377:1;5373:10;;;;5365:19;;5361:28;;;5326:12;;;;5401:19;;;5398:39;;;5433:1;5430;5423:12;5398:39;5457:11;;;;5477:148;5493:6;5488:3;5485:15;5477:148;;;5559:23;5578:3;5559:23;:::i;:::-;5547:36;;5510:12;;;;5603;;;;5477:148;;;5644:5;-1:-1:-1;;5687:18:1;;5674:32;;-1:-1:-1;;5718:16:1;;;5715:36;;;5747:1;5744;5737:12;5715:36;;5770:63;5825:7;5814:8;5803:9;5799:24;5770:63;:::i;:::-;5760:73;;;4693:1146;;;;;:::o;6033:315::-;6098:6;6106;6159:2;6147:9;6138:7;6134:23;6130:32;6127:52;;;6175:1;6172;6165:12;6127:52;6198:29;6217:9;6198:29;:::i;6972:127::-;7033:10;7028:3;7024:20;7021:1;7014:31;7064:4;7061:1;7054:15;7088:4;7085:1;7078:15;7104:422;7193:1;7236:5;7193:1;7250:270;7271:7;7261:8;7258:21;7250:270;;;7330:4;7326:1;7322:6;7318:17;7312:4;7309:27;7306:53;;;7339:18;;:::i;:::-;7389:7;7379:8;7375:22;7372:55;;;7409:16;;;;7372:55;7488:22;;;;7448:15;;;;7250:270;;;7254:3;7104:422;;;;;:::o;7531:806::-;7580:5;7610:8;7600:80;;-1:-1:-1;7651:1:1;7665:5;;7600:80;7699:4;7689:76;;-1:-1:-1;7736:1:1;7750:5;;7689:76;7781:4;7799:1;7794:59;;;;7867:1;7862:130;;;;7774:218;;7794:59;7824:1;7815:10;;7838:5;;;7862:130;7899:3;7889:8;7886:17;7883:43;;;7906:18;;:::i;:::-;-1:-1:-1;;7962:1:1;7948:16;;7977:5;;7774:218;;8076:2;8066:8;8063:16;8057:3;8051:4;8048:13;8044:36;8038:2;8028:8;8025:16;8020:2;8014:4;8011:12;8007:35;8004:77;8001:159;;;-1:-1:-1;8113:19:1;;;8145:5;;8001:159;8192:34;8217:8;8211:4;8192:34;:::i;:::-;8262:6;8258:1;8254:6;8250:19;8241:7;8238:32;8235:58;;;8273:18;;:::i;:::-;8311:20;;7531:806;-1:-1:-1;;;7531:806:1:o;8342:140::-;8400:5;8429:47;8470:4;8460:8;8456:19;8450:4;8429:47;:::i;8487:217::-;8527:1;8553;8543:132;;8597:10;8592:3;8588:20;8585:1;8578:31;8632:4;8629:1;8622:15;8660:4;8657:1;8650:15;8543:132;-1:-1:-1;8689:9:1;;8487:217::o;9049:168::-;9122:9;;;9153;;9170:15;;;9164:22;;9150:37;9140:71;;9191:18;;:::i;9222:128::-;9289:9;;;9310:11;;;9307:37;;;9324:18;;:::i;10122:127::-;10183:10;10178:3;10174:20;10171:1;10164:31;10214:4;10211:1;10204:15;10238:4;10235:1;10228:15;10601:197;10639:3;10667:6;10708:2;10701:5;10697:14;10735:2;10726:7;10723:15;10720:41;;10741:18;;:::i;:::-;10790:1;10777:15;;10601:197;-1:-1:-1;;;10601:197:1:o;10803:125::-;10868:9;;;10889:10;;;10886:36;;;10902:18;;:::i;14151:184::-;14221:6;14274:2;14262:9;14253:7;14249:23;14245:32;14242:52;;;14290:1;14287;14280:12;14242:52;-1:-1:-1;14313:16:1;;14151:184;-1:-1:-1;14151:184:1:o;14642:245::-;14709:6;14762:2;14750:9;14741:7;14737:23;14733:32;14730:52;;;14778:1;14775;14768:12;14730:52;14810:9;14804:16;14829:28;14851:5;14829:28;:::i

Swarm Source

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