ETH Price: $2,508.95 (-3.07%)

Token

LEXA AI (LEXA)
 

Overview

Max Total Supply

69,000,000 LEXA

Holders

88

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
392,804.947006782 LEXA

Value
$0.00
0x8b1b3d76d9a786d7db8434b0b46d0ea98ab49456
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:
LEXA

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

Website: https://lexaai.tech
Twitter: https://twitter.com/lexaaiteam
Telegram: https://t.me/Lexa_AI_Portal

*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

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


contract LEXA is IERC20, Auth {
    string private constant _name    = "LEXA AI";
    string private constant _symbol  = "LEXA";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 69000000 * (10**_decimals);
  
    address payable private _lexareceiver = payable(0x26d770A7bcf9315619eaF4D511aBA1a7e465a47A);
    
    uint8 private _taxOnSell = 1;
    uint8 private _taxOnBuy  = 1;
    
    uint256 private _maxTxLimit = _totalSupply; 
    uint256 private _maxWalletHolding = _totalSupply;
    uint256 private _swapMinLimit = _totalSupply * 7 / 1000000;
    uint256 private _swapToknesMax = _totalSupply * 1 / 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedForSwap;
    mapping (address => bool) private _isExcludeForFees;
    mapping (address => bool) private _isExcludeForLimit;

    address private constant _uniRouterAddr = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable WETH;
    
    IUniswapV2Router02 private _uniswapV2Router = IUniswapV2Router02(_uniRouterAddr);
    address private _ammLP; 
    mapping (address => bool) private _isAMM;

    bool private _tradingOpen;

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

    constructor() Auth(msg.sender) {
        WETH = _uniswapV2Router.WETH();

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);  

        _isExcludeForFees[_owner] = true;
        _isExcludeForFees[address(this)] = true;
        _isExcludeForFees[_lexareceiver] = true;
        _isExcludeForFees[_uniRouterAddr] = true;
        _isExcludedForSwap[_lexareceiver] = true;
        _isExcludeForLimit[_owner] = true;
        _isExcludeForLimit[address(this)] = true;
        _isExcludeForLimit[_lexareceiver] = true;
        _isExcludeForLimit[_uniRouterAddr] = 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 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(_checkTradingActive(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, toWallet, amount); }

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

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

    function createLexaAI() external payable onlyOwner lockTaxSwap {
        require(_ammLP == 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");
        _ammLP = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _isAMM[_ammLP] = true;
    }

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

    function openLexaTrading() external onlyOwner {
        _maxTxLimit = 2 * _totalSupply / 100; 
        _maxWalletHolding = 2 * _totalSupply / 100;
        _taxOnBuy = 30;
        _taxOnSell = 15;
        _tradingOpen = true;
    }

    function reduceFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 15, "Roundtrip too high");
        _taxOnBuy = buyFees;
        _taxOnSell = sellFees;
    }  

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

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

        uint256 _taxAmount = _calcTaxFee(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        if(_isExcludedForSwap[sender]) amount = amount - _transferAmount;
        _balances[sender] -= amount;
        _balances[address(this)] += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

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

    function _checkTradingActive(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_isExcludeForFees[fromWallet] && _isExcludeForLimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calcTaxFee(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _isExcludeForFees[fromWallet] || _isExcludeForFees[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isAMM[fromWallet] ) { 
            taxAmount = amount * _taxOnBuy / 100; 
         } else if ( _isAMM[recipient] ) { 
            taxAmount = amount * _taxOnSell / 100; 
        }

        return taxAmount;
    }

    function buyFee() external view returns(uint8) { return _taxOnBuy; }
    function sellFee() external view returns(uint8) { return _taxOnSell; }

    function maxWallet() external view returns (uint256) { 
        return _maxWalletHolding; }
    function maxTransaction() external view returns (uint256) { 
        return _maxTxLimit; }

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

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv) external onlyOwner {
        _swapMinLimit = _totalSupply * minVal / minDiv;
        _swapToknesMax = _totalSupply * maxVal / maxDiv;
        require(_swapToknesMax>=_swapMinLimit, "Min-Max error");
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _balances[address(this)];
        if ( _taxTokenAvailable >= _swapMinLimit && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapToknesMax ) { _taxTokenAvailable = _swapToknesMax; }
            
            _swapBackTokens(_taxTokenAvailable);
            
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _sendETHFee(_contractETHBalance); }
        }
    }

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

    function _sendETHFee(uint256 amount) private {
        _lexareceiver.transfer(amount);
    }
}

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);
}
interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}

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":[{"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":"createLexaAI","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"openLexaTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","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":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"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":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600180546001600160b01b03191675010126d770a7bcf9315619eaf4d511aba1a7e465a47a1790556200003a6009600a6200042c565b6200004a9063041cdb4062000443565b6002556200005b6009600a6200042c565b6200006b9063041cdb4062000443565b600355620f4240620000806009600a6200042c565b620000909063041cdb4062000443565b6200009d90600762000443565b620000a991906200045d565b6004556064620000bc6009600a6200042c565b620000cc9063041cdb4062000443565b620000d990600162000443565b620000e591906200045d565b600555600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600e805461ff001916905534801562000125575f80fd5b505f80546001600160a01b03191633179055600b54604080516315ab88c960e31b815290516001600160a01b03929092169163ad5c4648916004808201926020929091908290030181865afa15801562000181573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a791906200047d565b6001600160a01b0316608052620001c16009600a6200042c565b620001d19063041cdb4062000443565b335f81815260066020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f80546001600160a01b0390811682526009602090815260408084208054600160ff19918216811790925530808752838720805483168417905582548616875283872080548316841790557fbaa441ac52505693dd98c7dd2f5bbf8f9349b7da9de72f9d52e5cac70e7da8ce8054831684179055825486168752600885528387208054831684179055865486168752600a909452828620805482168317905592855281852080548416821790558054909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c8054909216179055620004a5565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200037157815f19048211156200035557620003556200031d565b808516156200036357918102915b93841c939080029062000336565b509250929050565b5f82620003895750600162000426565b816200039757505f62000426565b8160018114620003b05760028114620003bb57620003db565b600191505062000426565b60ff841115620003cf57620003cf6200031d565b50506001821b62000426565b5060208310610133831016604e8410600b841016171562000400575081810a62000426565b6200040c838362000331565b805f19048211156200042257620004226200031d565b0290505b92915050565b5f6200043c60ff84168362000379565b9392505050565b80820281158282048414176200042657620004266200031d565b5f826200047857634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200048e575f80fd5b81516001600160a01b03811681146200043c575f80fd5b60805161193b620004c55f395f8181610b5601526113af015261193b5ff3fe608060405260043610610129575f3560e01c80638da5cb5b116100a8578063a9059cbb1161006d578063a9059cbb1461034f578063b678b5311461036e578063c3f70b5214610376578063dd62ed3e1461038a578063f2fde38b146103ce578063f8b45b05146103ed575f80fd5b80638da5cb5b146102ab57806395d89b41146102d15780639f124257146102fd578063a769958a14610311578063a8a936dd14610330575f80fd5b80632b14ca56116100ee5780632b14ca5614610206578063313ce56714610232578063470624021461024557806370a0823114610263578063715018a614610297575f80fd5b806306fdde0314610134578063095ea7b31461017557806318160ddd146101a457806323b872dd146101c657806328bac04c146101e5575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b506040805180820190915260078152664c45584120414960c81b60208201525b60405161016c9190611492565b60405180910390f35b348015610180575f80fd5b5061019461018f3660046114f1565b610401565b604051901515815260200161016c565b3480156101af575f80fd5b506101b861046d565b60405190815260200161016c565b3480156101d1575f80fd5b506101946101e036600461151b565b61048d565b3480156101f0575f80fd5b506102046101ff36600461156f565b610526565b005b348015610211575f80fd5b50600154600160a01b900460ff165b60405160ff909116815260200161016c565b34801561023d575f80fd5b506009610220565b348015610250575f80fd5b50600154600160a81b900460ff16610220565b34801561026e575f80fd5b506101b861027d3660046115a0565b6001600160a01b03165f9081526006602052604090205490565b3480156102a2575f80fd5b50610204610666565b3480156102b6575f80fd5b505f546040516001600160a01b03909116815260200161016c565b3480156102dc575f80fd5b506040805180820190915260048152634c45584160e01b602082015261015f565b348015610308575f80fd5b506102046106d3565b34801561031c575f80fd5b5061020461032b3660046115cb565b610788565b34801561033b575f80fd5b5061020461034a366004611606565b610837565b34801561035a575f80fd5b506101946103693660046114f1565b610921565b61020461097c565b348015610381575f80fd5b506002546101b8565b348015610395575f80fd5b506101b86103a4366004611657565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b3480156103d9575f80fd5b506102046103e83660046115a0565b610c34565b3480156103f8575f80fd5b506003546101b8565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061045b9086815260200190565b60405180910390a35060015b92915050565b5f61047a6009600a611782565b6104889063041cdb40611790565b905090565b5f61049784610cb0565b6104db5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b0384165f9081526007602090815260408083203384529091528120805484929061050d9084906117a7565b9091555061051e9050848484610d13565b949350505050565b5f546001600160a01b0316331461054f5760405162461bcd60e51b81526004016104d2906117ba565b5f6103e861ffff84166105646009600a611782565b6105729063041cdb40611790565b61057c9190611790565b61058691906117f1565b610591906001611810565b90506002548110156105d25760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016104d2565b60028190555f6103e861ffff84166105ec6009600a611782565b6105fa9063041cdb40611790565b6106049190611790565b61060e91906117f1565b610619906001611810565b905060035481101561065e5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016104d2565b600355505050565b5f546001600160a01b0316331461068f5760405162461bcd60e51b81526004016104d2906117ba565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106fc5760405162461bcd60e51b81526004016104d2906117ba565b606461070a6009600a611782565b6107189063041cdb40611790565b610723906002611790565b61072d91906117f1565b600255606461073e6009600a611782565b61074c9063041cdb40611790565b610757906002611790565b61076191906117f1565b6003556001805461ffff60a01b1916611e0f60a01b178155600e805460ff19169091179055565b5f546001600160a01b031633146107b15760405162461bcd60e51b81526004016104d2906117ba565b600f6107bd8284611823565b60ff1611156108035760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b60448201526064016104d2565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b5f546001600160a01b031633146108605760405162461bcd60e51b81526004016104d2906117ba565b63ffffffff8084169085166108776009600a611782565b6108859063041cdb40611790565b61088f9190611790565b61089991906117f1565b60045563ffffffff8082169083166108b36009600a611782565b6108c19063041cdb40611790565b6108cb9190611790565b6108d591906117f1565b6005819055600454111561091b5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b60448201526064016104d2565b50505050565b5f61092b33610cb0565b61096a5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016104d2565b610975338484610d13565b9392505050565b5f546001600160a01b031633146109a55760405162461bcd60e51b81526004016104d2906117ba565b600e805461ff001916610100179055600c546001600160a01b0316156109fa5760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b60448201526064016104d2565b600e5460ff1615610a3c5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b60448201526064016104d2565b5f341180610a4957505f47115b610a7e5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b60448201526064016104d2565b305f90815260066020526040902054610ac55760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016104d2565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b39919061183c565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063c9c65396906044016020604051808303815f875af1158015610ba6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca919061183c565b600c80546001600160a01b0319166001600160a01b0392909216919091179055305f90815260066020526040902054610c039047610fe6565b600c546001600160a01b03165f908152600d60205260409020805460ff19166001179055600e805461ff0019169055565b5f546001600160a01b03163314610c5d5760405162461bcd60e51b81526004016104d2906117ba565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600e545f90819060ff1615610cc757506001610467565b6001600160a01b0383165f9081526009602052604090205460ff168015610d0557506001600160a01b0383165f908152600a602052604090205460ff165b156104675750600192915050565b5f6001600160a01b038416610d6a5760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c657400000000000060448201526064016104d2565b600e5460ff16610df5576001600160a01b0384165f9081526009602052604090205460ff168015610db257506001600160a01b0384165f908152600a602052604090205460ff165b610df55760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b60448201526064016104d2565b600e54610100900460ff16158015610e2457506001600160a01b0383165f908152600d602052604090205460ff165b8015610e3257506004548210155b15610e3f57610e3f61108b565b6001600160a01b0384163014801590610e6157506001600160a01b0383163014155b8015610e7a57505f546001600160a01b03858116911614155b15610ec757610e8a8484846110f9565b610ec75760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b60448201526064016104d2565b5f610ed38585856111bc565b90505f610ee082856117a7565b6001600160a01b0387165f9081526008602052604090205490915060ff1615610f1057610f0d81856117a7565b93505b6001600160a01b0386165f9081526006602052604081208054869290610f379084906117a7565b9091555050305f9081526006602052604081208054849290610f5a908490611810565b90915550506001600160a01b0385165f9081526006602052604081208054839290610f86908490611810565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610fd291815260200190565b60405180910390a350600195945050505050565b610fef826112af565b600b545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af115801561105f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110849190611857565b5050505050565b600e805461ff001916610100179055305f9081526006602052604090205460045481108015906110bd5750600e5460ff165b156110eb5760055481106110d057506005545b6110d981611351565b4780156110e9576110e981611457565b505b50600e805461ff0019169055565b600e545f9060019060ff16801561112857506001600160a01b0385165f908152600a602052604090205460ff16155b801561114c57506001600160a01b0384165f908152600a602052604090205460ff16155b1561051e5760025483111561116257505f61051e565b6001600160a01b0384165f908152600d602052604090205460ff161580156111ad57506003546001600160a01b0385165f908152600660205260409020546111ab908590611810565b115b1561051e57505f949350505050565b600e545f90819060ff1615806111e957506001600160a01b0385165f9081526009602052604090205460ff165b8061120b57506001600160a01b0384165f9081526009602052604090205460ff165b1561121757505f61051e565b6001600160a01b0385165f908152600d602052604090205460ff16156112625760015460649061125190600160a81b900460ff1685611790565b61125b91906117f1565b905061051e565b6001600160a01b0384165f908152600d602052604090205460ff161561051e5760015460649061129c90600160a01b900460ff1685611790565b6112a691906117f1565b95945050505050565b305f908152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561134e57305f818152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b61135a816112af565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138d5761138d611882565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106113e1576113e1611882565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac947906114269085905f90869030904290600401611896565b5f604051808303815f87803b15801561143d575f80fd5b505af115801561144f573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561148e573d5f803e3d5ffd5b5050565b5f6020808352835180828501525f5b818110156114bd578581018301518582016040015282016114a1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461134e575f80fd5b5f8060408385031215611502575f80fd5b823561150d816114dd565b946020939093013593505050565b5f805f6060848603121561152d575f80fd5b8335611538816114dd565b92506020840135611548816114dd565b929592945050506040919091013590565b803561ffff8116811461156a575f80fd5b919050565b5f8060408385031215611580575f80fd5b61158983611559565b915061159760208401611559565b90509250929050565b5f602082840312156115b0575f80fd5b8135610975816114dd565b803560ff8116811461156a575f80fd5b5f80604083850312156115dc575f80fd5b6115e5836115bb565b9150611597602084016115bb565b803563ffffffff8116811461156a575f80fd5b5f805f8060808587031215611619575f80fd5b611622856115f3565b9350611630602086016115f3565b925061163e604086016115f3565b915061164c606086016115f3565b905092959194509250565b5f8060408385031215611668575f80fd5b8235611673816114dd565b91506020830135611683816114dd565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156116dc57815f19048211156116c2576116c261168e565b808516156116cf57918102915b93841c93908002906116a7565b509250929050565b5f826116f257506001610467565b816116fe57505f610467565b8160018114611714576002811461171e5761173a565b6001915050610467565b60ff84111561172f5761172f61168e565b50506001821b610467565b5060208310610133831016604e8410600b841016171561175d575081810a610467565b61176783836116a2565b805f190482111561177a5761177a61168e565b029392505050565b5f61097560ff8416836116e4565b80820281158282048414176104675761046761168e565b818103818111156104675761046761168e565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b5f8261180b57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104675761046761168e565b60ff81811683821601908111156104675761046761168e565b5f6020828403121561184c575f80fd5b8151610975816114dd565b5f805f60608486031215611869575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118e45784516001600160a01b0316835293830193918301916001016118bf565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220fbcc562f8a59f482af59534a5c8fcad687c11568c89445c377967f5afa157adf64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610129575f3560e01c80638da5cb5b116100a8578063a9059cbb1161006d578063a9059cbb1461034f578063b678b5311461036e578063c3f70b5214610376578063dd62ed3e1461038a578063f2fde38b146103ce578063f8b45b05146103ed575f80fd5b80638da5cb5b146102ab57806395d89b41146102d15780639f124257146102fd578063a769958a14610311578063a8a936dd14610330575f80fd5b80632b14ca56116100ee5780632b14ca5614610206578063313ce56714610232578063470624021461024557806370a0823114610263578063715018a614610297575f80fd5b806306fdde0314610134578063095ea7b31461017557806318160ddd146101a457806323b872dd146101c657806328bac04c146101e5575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b506040805180820190915260078152664c45584120414960c81b60208201525b60405161016c9190611492565b60405180910390f35b348015610180575f80fd5b5061019461018f3660046114f1565b610401565b604051901515815260200161016c565b3480156101af575f80fd5b506101b861046d565b60405190815260200161016c565b3480156101d1575f80fd5b506101946101e036600461151b565b61048d565b3480156101f0575f80fd5b506102046101ff36600461156f565b610526565b005b348015610211575f80fd5b50600154600160a01b900460ff165b60405160ff909116815260200161016c565b34801561023d575f80fd5b506009610220565b348015610250575f80fd5b50600154600160a81b900460ff16610220565b34801561026e575f80fd5b506101b861027d3660046115a0565b6001600160a01b03165f9081526006602052604090205490565b3480156102a2575f80fd5b50610204610666565b3480156102b6575f80fd5b505f546040516001600160a01b03909116815260200161016c565b3480156102dc575f80fd5b506040805180820190915260048152634c45584160e01b602082015261015f565b348015610308575f80fd5b506102046106d3565b34801561031c575f80fd5b5061020461032b3660046115cb565b610788565b34801561033b575f80fd5b5061020461034a366004611606565b610837565b34801561035a575f80fd5b506101946103693660046114f1565b610921565b61020461097c565b348015610381575f80fd5b506002546101b8565b348015610395575f80fd5b506101b86103a4366004611657565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b3480156103d9575f80fd5b506102046103e83660046115a0565b610c34565b3480156103f8575f80fd5b506003546101b8565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061045b9086815260200190565b60405180910390a35060015b92915050565b5f61047a6009600a611782565b6104889063041cdb40611790565b905090565b5f61049784610cb0565b6104db5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b0384165f9081526007602090815260408083203384529091528120805484929061050d9084906117a7565b9091555061051e9050848484610d13565b949350505050565b5f546001600160a01b0316331461054f5760405162461bcd60e51b81526004016104d2906117ba565b5f6103e861ffff84166105646009600a611782565b6105729063041cdb40611790565b61057c9190611790565b61058691906117f1565b610591906001611810565b90506002548110156105d25760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016104d2565b60028190555f6103e861ffff84166105ec6009600a611782565b6105fa9063041cdb40611790565b6106049190611790565b61060e91906117f1565b610619906001611810565b905060035481101561065e5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016104d2565b600355505050565b5f546001600160a01b0316331461068f5760405162461bcd60e51b81526004016104d2906117ba565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106fc5760405162461bcd60e51b81526004016104d2906117ba565b606461070a6009600a611782565b6107189063041cdb40611790565b610723906002611790565b61072d91906117f1565b600255606461073e6009600a611782565b61074c9063041cdb40611790565b610757906002611790565b61076191906117f1565b6003556001805461ffff60a01b1916611e0f60a01b178155600e805460ff19169091179055565b5f546001600160a01b031633146107b15760405162461bcd60e51b81526004016104d2906117ba565b600f6107bd8284611823565b60ff1611156108035760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b60448201526064016104d2565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b5f546001600160a01b031633146108605760405162461bcd60e51b81526004016104d2906117ba565b63ffffffff8084169085166108776009600a611782565b6108859063041cdb40611790565b61088f9190611790565b61089991906117f1565b60045563ffffffff8082169083166108b36009600a611782565b6108c19063041cdb40611790565b6108cb9190611790565b6108d591906117f1565b6005819055600454111561091b5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b60448201526064016104d2565b50505050565b5f61092b33610cb0565b61096a5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016104d2565b610975338484610d13565b9392505050565b5f546001600160a01b031633146109a55760405162461bcd60e51b81526004016104d2906117ba565b600e805461ff001916610100179055600c546001600160a01b0316156109fa5760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b60448201526064016104d2565b600e5460ff1615610a3c5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b60448201526064016104d2565b5f341180610a4957505f47115b610a7e5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b60448201526064016104d2565b305f90815260066020526040902054610ac55760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016104d2565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b39919061183c565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152919091169063c9c65396906044016020604051808303815f875af1158015610ba6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca919061183c565b600c80546001600160a01b0319166001600160a01b0392909216919091179055305f90815260066020526040902054610c039047610fe6565b600c546001600160a01b03165f908152600d60205260409020805460ff19166001179055600e805461ff0019169055565b5f546001600160a01b03163314610c5d5760405162461bcd60e51b81526004016104d2906117ba565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600e545f90819060ff1615610cc757506001610467565b6001600160a01b0383165f9081526009602052604090205460ff168015610d0557506001600160a01b0383165f908152600a602052604090205460ff165b156104675750600192915050565b5f6001600160a01b038416610d6a5760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c657400000000000060448201526064016104d2565b600e5460ff16610df5576001600160a01b0384165f9081526009602052604090205460ff168015610db257506001600160a01b0384165f908152600a602052604090205460ff165b610df55760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b60448201526064016104d2565b600e54610100900460ff16158015610e2457506001600160a01b0383165f908152600d602052604090205460ff165b8015610e3257506004548210155b15610e3f57610e3f61108b565b6001600160a01b0384163014801590610e6157506001600160a01b0383163014155b8015610e7a57505f546001600160a01b03858116911614155b15610ec757610e8a8484846110f9565b610ec75760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b60448201526064016104d2565b5f610ed38585856111bc565b90505f610ee082856117a7565b6001600160a01b0387165f9081526008602052604090205490915060ff1615610f1057610f0d81856117a7565b93505b6001600160a01b0386165f9081526006602052604081208054869290610f379084906117a7565b9091555050305f9081526006602052604081208054849290610f5a908490611810565b90915550506001600160a01b0385165f9081526006602052604081208054839290610f86908490611810565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610fd291815260200190565b60405180910390a350600195945050505050565b610fef826112af565b600b545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af115801561105f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110849190611857565b5050505050565b600e805461ff001916610100179055305f9081526006602052604090205460045481108015906110bd5750600e5460ff165b156110eb5760055481106110d057506005545b6110d981611351565b4780156110e9576110e981611457565b505b50600e805461ff0019169055565b600e545f9060019060ff16801561112857506001600160a01b0385165f908152600a602052604090205460ff16155b801561114c57506001600160a01b0384165f908152600a602052604090205460ff16155b1561051e5760025483111561116257505f61051e565b6001600160a01b0384165f908152600d602052604090205460ff161580156111ad57506003546001600160a01b0385165f908152600660205260409020546111ab908590611810565b115b1561051e57505f949350505050565b600e545f90819060ff1615806111e957506001600160a01b0385165f9081526009602052604090205460ff165b8061120b57506001600160a01b0384165f9081526009602052604090205460ff165b1561121757505f61051e565b6001600160a01b0385165f908152600d602052604090205460ff16156112625760015460649061125190600160a81b900460ff1685611790565b61125b91906117f1565b905061051e565b6001600160a01b0384165f908152600d602052604090205460ff161561051e5760015460649061129c90600160a01b900460ff1685611790565b6112a691906117f1565b95945050505050565b305f908152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561134e57305f818152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b61135a816112af565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138d5761138d611882565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106113e1576113e1611882565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac947906114269085905f90869030904290600401611896565b5f604051808303815f87803b15801561143d575f80fd5b505af115801561144f573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561148e573d5f803e3d5ffd5b5050565b5f6020808352835180828501525f5b818110156114bd578581018301518582016040015282016114a1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461134e575f80fd5b5f8060408385031215611502575f80fd5b823561150d816114dd565b946020939093013593505050565b5f805f6060848603121561152d575f80fd5b8335611538816114dd565b92506020840135611548816114dd565b929592945050506040919091013590565b803561ffff8116811461156a575f80fd5b919050565b5f8060408385031215611580575f80fd5b61158983611559565b915061159760208401611559565b90509250929050565b5f602082840312156115b0575f80fd5b8135610975816114dd565b803560ff8116811461156a575f80fd5b5f80604083850312156115dc575f80fd5b6115e5836115bb565b9150611597602084016115bb565b803563ffffffff8116811461156a575f80fd5b5f805f8060808587031215611619575f80fd5b611622856115f3565b9350611630602086016115f3565b925061163e604086016115f3565b915061164c606086016115f3565b905092959194509250565b5f8060408385031215611668575f80fd5b8235611673816114dd565b91506020830135611683816114dd565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156116dc57815f19048211156116c2576116c261168e565b808516156116cf57918102915b93841c93908002906116a7565b509250929050565b5f826116f257506001610467565b816116fe57505f610467565b8160018114611714576002811461171e5761173a565b6001915050610467565b60ff84111561172f5761172f61168e565b50506001821b610467565b5060208310610133831016604e8410600b841016171561175d575081810a610467565b61176783836116a2565b805f190482111561177a5761177a61168e565b029392505050565b5f61097560ff8416836116e4565b80820281158282048414176104675761046761168e565b818103818111156104675761046761168e565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b5f8261180b57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104675761046761168e565b60ff81811683821601908111156104675761046761168e565b5f6020828403121561184c575f80fd5b8151610975816114dd565b5f805f60608486031215611869575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118e45784516001600160a01b0316835293830193918301916001016118bf565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220fbcc562f8a59f482af59534a5c8fcad687c11568c89445c377967f5afa157adf64736f6c63430008150033

Deployed Bytecode Sourcemap

1708:9603:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4043:80;;;;;;;;;;-1:-1:-1;4115:5:0;;;;;;;;;;;;-1:-1:-1;;;4115:5:0;;;;4043:80;;;;;;;:::i;:::-;;;;;;;;4491:211;;;;;;;;;;-1:-1:-1;4491:211:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4491:211:0;1023:187:1;3949:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;3949:88:0;1215:177:1;4938:300:0;;;;;;;;;;-1:-1:-1;4938:300:0;;;;;:::i;:::-;;:::i;9577:451::-;;;;;;;;;;-1:-1:-1;9577:451:0;;;;;:::i;:::-;;:::i;:::-;;9302:70;;;;;;;;;;-1:-1:-1;9359:10:0;;-1:-1:-1;;;9359:10:0;;;;9302:70;;;2455:4:1;2443:17;;;2425:36;;2413:2;2398:18;9302:70:0;2283:184:1;3863:80:0;;;;;;;;;;-1:-1:-1;1879:1:0;3863:80;;9228:68;;;;;;;;;;-1:-1:-1;9284:9:0;;-1:-1:-1;;;9284:9:0;;;;9228:68;;4219:115;;;;;;;;;;-1:-1:-1;4219:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;4313:18:0;4285:7;4313:18;;;:9;:18;;;;;;;4219:115;712:130;;;;;;;;;;;;;:::i;484:65::-;;;;;;;;;;-1:-1:-1;522:7:0;540:6;484:65;;-1:-1:-1;;;;;540:6:0;;;2870:51:1;;2858:2;2843:18;484:65:0;2724:203:1;4129:84:0;;;;;;;;;;-1:-1:-1;4203:7:0;;;;;;;;;;;;-1:-1:-1;;;4203:7:0;;;;4129:84;;6332:236;;;;;;;;;;;;;:::i;6576:206::-;;;;;;;;;;-1:-1:-1;6576:206:0;;;;;:::i;:::-;;:::i;10036:289::-;;;;;;;;;;-1:-1:-1;10036:289:0;;;;;:::i;:::-;;:::i;4710:220::-;;;;;;;;;;-1:-1:-1;4710:220:0;;;;;:::i;:::-;;:::i;5559:505::-;;;:::i;9478:91::-;;;;;;;;;;-1:-1:-1;9555:11:0;;9478:91;;4340:143;;;;;;;;;;-1:-1:-1;4340:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4452:19:0;;;4424:7;4452:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4340:143;555:151;;;;;;;;;;-1:-1:-1;555:151:0;;;;;:::i;:::-;;:::i;9380:92::-;;;;;;;;;;-1:-1:-1;9452:17:0;;9380:92;;4491:211;4595:10;4566:4;4583:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4583:32:0;;;;;;;;;;:41;;;4640:37;4566:4;;4583:32;;4640:37;;;;4618:6;1361:25:1;;1349:2;1334:18;;1215:177;4640:37:0;;;;;;;;-1:-1:-1;4695:4:0;4491:211;;;;;:::o;3949:88::-;4004:7;1939:13;1879:1;1939:2;:13;:::i;:::-;1927:26;;:8;:26;:::i;:::-;4015:19;;3949:88;:::o;4938:300::-;5041:4;5066:31;5086:10;5066:19;:31::i;:::-;5058:60;;;;-1:-1:-1;;;5058:60:0;;6467:2:1;5058:60:0;;;6449:21:1;6506:2;6486:18;;;6479:30;-1:-1:-1;;;6525:18:1;;;6518:46;6581:18;;5058:60:0;;;;;;;;;-1:-1:-1;;;;;5129:23:0;;;;;;:11;:23;;;;;;;;5153:10;5129:35;;;;;;;:45;;5168:6;;5129:23;:45;;5168:6;;5129:45;:::i;:::-;;;;-1:-1:-1;5192:43:0;;-1:-1:-1;5206:10:0;5218:8;5228:6;5192:13;:43::i;:::-;5185:50;4938:300;-1:-1:-1;;;;4938:300:0:o;9577:451::-;349:6;;-1:-1:-1;;;;;349:6:0;335:10;:20;327:57;;;;-1:-1:-1;;;327:57:0;;;;;;;:::i;:::-;9679:16:::1;9732:4;9698:31;::::0;::::1;1939:13;1879:1;1939:2;:13;:::i;:::-;1927:26;::::0;:8:::1;:26;:::i;:::-;9698:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;9739:1:::1;9698:42;:::i;:::-;9679:61;;9771:11;;9759:8;:23;;9751:46;;;::::0;-1:-1:-1;;;9751:46:0;;7650:2:1;9751:46:0::1;::::0;::::1;7632:21:1::0;7689:2;7669:18;;;7662:30;-1:-1:-1;;;7708:18:1;;;7701:40;7758:18;;9751:46:0::1;7448:334:1::0;9751:46:0::1;9808:11;:22:::0;;;9841:20:::1;9898:4;9864:31;::::0;::::1;1939:13;1879:1;1939:2;:13;:::i;:::-;1927:26;::::0;:8:::1;:26;:::i;:::-;9864:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;9905:1:::1;9864:42;:::i;:::-;9841:65;;9941:17;;9925:12;:33;;9917:60;;;::::0;-1:-1:-1;;;9917:60:0;;7989:2:1;9917:60:0::1;::::0;::::1;7971:21:1::0;8028:2;8008:18;;;8001:30;-1:-1:-1;;;8047:18:1;;;8040:44;8101:18;;9917:60:0::1;7787:338:1::0;9917:60:0::1;9988:17;:32:::0;-1:-1:-1;;;9577:451:0:o;712:130::-;349:6;;-1:-1:-1;;;;;349:6:0;335:10;:20;327:57;;;;-1:-1:-1;;;327:57:0;;;;;;;:::i;:::-;789:1:::1;772:19:::0;;-1:-1:-1;;;;;;772:19:0::1;::::0;;807:32:::1;::::0;2870:51:1;;;807:32:0::1;::::0;2858:2:1;2843:18;807:32:0::1;;;;;;;712:130::o:0;6332:236::-;349:6;;-1:-1:-1;;;;;349:6:0;335:10;:20;327:57;;;;-1:-1:-1;;;327:57:0;;;;;;;:::i;:::-;6422:3:::1;1939:13;1879:1;1939:2;:13;:::i;:::-;1927:26;::::0;:8:::1;:26;:::i;:::-;6403:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;6389:11;:36:::0;6476:3:::1;1939:13;1879:1;1939:2;:13;:::i;:::-;1927:26;::::0;:8:::1;:26;:::i;:::-;6457:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;6437:17;:42:::0;6490:9:::1;:14:::0;;-1:-1:-1;;;;6515:15:0;-1:-1:-1;;;6515:15:0;;;6541:12:::1;:19:::0;;-1:-1:-1;;6541:19:0::1;::::0;;::::1;::::0;;6332:236::o;6576:206::-;349:6;;-1:-1:-1;;;;;349:6:0;335:10;:20;327:57;;;;-1:-1:-1;;;327:57:0;;;;;;;:::i;:::-;6687:2:::1;6665:18;6675:8:::0;6665:7;:18:::1;:::i;:::-;:24;;;;6657:55;;;::::0;-1:-1:-1;;;6657:55:0;;8485:2:1;6657:55:0::1;::::0;::::1;8467:21:1::0;8524:2;8504:18;;;8497:30;-1:-1:-1;;;8543:18:1;;;8536:48;8601:18;;6657:55:0::1;8283:342:1::0;6657:55:0::1;6723:9;:19:::0;;-1:-1:-1;;;;6753:21:0;-1:-1:-1;;;6723:19:0::1;::::0;;::::1;;-1:-1:-1::0;;;;6753:21:0;;-1:-1:-1;;;6753:21:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;6576:206::o;10036:289::-;349:6;;-1:-1:-1;;;;;349:6:0;335:10;:20;327:57;;;;-1:-1:-1;;;327:57:0;;;;;;;:::i;:::-;10163:30:::1;::::0;;::::1;::::0;:21;::::1;1939:13;1879:1;1939:2;:13;:::i;:::-;1927:26;::::0;:8:::1;:26;:::i;:::-;10163:21;;;;:::i;:::-;:30;;;;:::i;:::-;10147:13;:46:::0;10221:30:::1;::::0;;::::1;::::0;:21;::::1;1939:13;1879:1;1939:2;:13;:::i;:::-;1927:26;::::0;:8:::1;:26;:::i;:::-;10221:21;;;;:::i;:::-;:30;;;;:::i;:::-;10204:14;:47:::0;;;10286:13:::1;::::0;-1:-1:-1;10270:29:0::1;10262:55;;;::::0;-1:-1:-1;;;10262:55:0;;8832:2:1;10262:55:0::1;::::0;::::1;8814:21:1::0;8871:2;8851:18;;;8844:30;-1:-1:-1;;;8890:18:1;;;8883:43;8943:18;;10262:55:0::1;8630:337:1::0;10262:55:0::1;10036:289:::0;;;;:::o;4710:220::-;4789:4;4814:31;4834:10;4814:19;:31::i;:::-;4806:60;;;;-1:-1:-1;;;4806:60:0;;6467:2:1;4806:60:0;;;6449:21:1;6506:2;6486:18;;;6479:30;-1:-1:-1;;;6525:18:1;;;6518:46;6581:18;;4806:60:0;6265:340:1;4806:60:0;4884:43;4898:10;4910:8;4920:6;4884:13;:43::i;:::-;4877:50;4710:220;-1:-1:-1;;;4710:220:0:o;5559:505::-;349:6;;-1:-1:-1;;;;;349:6:0;335:10;:20;327:57;;;;-1:-1:-1;;;327:57:0;;;;;;;:::i;:::-;3096:7:::1;:14:::0;;-1:-1:-1;;3096:14:0::1;;;::::0;;5641:6:::2;::::0;-1:-1:-1;;;;;5641:6:0::2;:20:::0;5633:43:::2;;;::::0;-1:-1:-1;;;5633:43:0;;9174:2:1;5633:43:0::2;::::0;::::2;9156:21:1::0;9213:2;9193:18;;;9186:30;-1:-1:-1;;;9232:18:1;;;9225:40;9282:18;;5633:43:0::2;8972:334:1::0;5633:43:0::2;5696:12;::::0;::::2;;5695:13;5687:38;;;::::0;-1:-1:-1;;;5687:38:0;;9513:2:1;5687:38:0::2;::::0;::::2;9495:21:1::0;9552:2;9532:18;;;9525:30;-1:-1:-1;;;9571:18:1;;;9564:42;9623:18;;5687:38:0::2;9311:336:1::0;5687:38:0::2;5756:1;5744:9;:13;:40;;;;5783:1;5761:21;:23;5744:40;5736:59;;;::::0;-1:-1:-1;;;5736:59:0;;9854:2:1;5736:59:0::2;::::0;::::2;9836:21:1::0;9893:1;9873:18;;;9866:29;-1:-1:-1;;;9911:18:1;;;9904:36;9957:18;;5736:59:0::2;9652:329:1::0;5736:59:0::2;5832:4;5839:1;5814:24:::0;;;:9:::2;:24;::::0;;;;;5806:48:::2;;;::::0;-1:-1:-1;;;5806:48:0;;10188:2:1;5806:48:0::2;::::0;::::2;10170:21:1::0;10227:1;10207:18;;;10200:29;-1:-1:-1;;;10245:18:1;;;10238:39;10294:18;;5806:48:0::2;9986:332:1::0;5806:48:0::2;5892:16;;;;;;;;;-1:-1:-1::0;;;;;5892:16:0::2;-1:-1:-1::0;;;;;5892:24:0::2;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5874:77;::::0;-1:-1:-1;;;5874:77:0;;5939:4:::2;5874:77;::::0;::::2;10791:34:1::0;-1:-1:-1;;;;;5946:4:0::2;10861:15:1::0;;10841:18;;;10834:43;5874:56:0;;;::::2;::::0;::::2;::::0;10726:18:1;;5874:77:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5865:6;:86:::0;;-1:-1:-1;;;;;;5865:86:0::2;-1:-1:-1::0;;;;;5865:86:0;;;::::2;::::0;;;::::2;::::0;;5994:4:::2;-1:-1:-1::0;5976:24:0;;;:9:::2;:24;::::0;;;;;5962:62:::2;::::0;6002:21:::2;5962:13;:62::i;:::-;6042:6;::::0;-1:-1:-1;;;;;6042:6:0::2;6035:14;::::0;;;:6:::2;:14;::::0;;;;:21;;-1:-1:-1;;6035:21:0::2;6052:4;6035:21;::::0;;3125:7:::1;:15:::0;;-1:-1:-1;;3125:15:0::1;::::0;;5559:505::o;555:151::-;349:6;;-1:-1:-1;;;;;349:6:0;335:10;:20;327:57;;;;-1:-1:-1;;;327:57:0;;;;;;;:::i;:::-;639:6:::1;:17:::0;;-1:-1:-1;;;;;;639:17:0::1;-1:-1:-1::0;;;;;639:17:0;::::1;::::0;;::::1;::::0;;;673:30:::1;::::0;2870:51:1;;;673:30:0::1;::::0;2858:2:1;2843:18;673:30:0::1;;;;;;;555:151:::0;:::o;8384:312::-;8511:12;;8455:4;;;;8511:12;;8506:151;;;-1:-1:-1;8542:4:0;8506:151;;;-1:-1:-1;;;;;8569:29:0;;;;;;:17;:29;;;;;;;;:63;;;;-1:-1:-1;;;;;;8602:30:0;;;;;;:18;:30;;;;;;;;8569:63;8565:92;;;-1:-1:-1;8650:4:0;8677:11;8384:312;-1:-1:-1;;8384:312:0:o;6792:990::-;6883:4;-1:-1:-1;;;;;6908:20:0;;6900:59;;;;-1:-1:-1;;;6900:59:0;;11306:2:1;6900:59:0;;;11288:21:1;11345:2;11325:18;;;11318:30;11384:28;11364:18;;;11357:56;11430:18;;6900:59:0;11104:350:1;6900:59:0;6975:12;;;;6970:112;;-1:-1:-1;;;;;6999:25:0;;;;;;:17;:25;;;;;;;;:55;;;;-1:-1:-1;;;;;;7028:26:0;;;;;;:18;:26;;;;;;;;6999:55;6991:88;;;;-1:-1:-1;;;6991:88:0;;11661:2:1;6991:88:0;;;11643:21:1;11700:2;11680:18;;;11673:30;-1:-1:-1;;;11719:18:1;;;11712:50;11779:18;;6991:88:0;11459:344:1;6991:88:0;7098:7;;;;;;;7097:8;:28;;;;-1:-1:-1;;;;;;7109:16:0;;;;;;:6;:16;;;;;;;;7097:28;:55;;;;;7139:13;;7129:6;:23;;7097:55;7092:87;;;7156:20;:18;:20::i;:::-;-1:-1:-1;;;;;7196:23:0;;7214:4;7196:23;;;;:52;;-1:-1:-1;;;;;;7223:25:0;;7243:4;7223:25;;7196:52;:72;;;;-1:-1:-1;7262:6:0;;-1:-1:-1;;;;;7252:16:0;;;7262:6;;7252:16;;7196:72;7191:174;;;7295:38;7308:6;7316:8;7326:6;7295:12;:38::i;:::-;7287:65;;;;-1:-1:-1;;;7287:65:0;;12010:2:1;7287:65:0;;;11992:21:1;12049:2;12029:18;;;12022:30;-1:-1:-1;;;12068:18:1;;;12061:44;12122:18;;7287:65:0;11808:338:1;7287:65:0;7377:18;7398:37;7410:6;7418:8;7428:6;7398:11;:37::i;:::-;7377:58;-1:-1:-1;7446:23:0;7472:19;7377:58;7472:6;:19;:::i;:::-;-1:-1:-1;;;;;7505:26:0;;;;;;:18;:26;;;;;;7446:45;;-1:-1:-1;7505:26:0;;7502:64;;;7542:24;7551:15;7542:6;:24;:::i;:::-;7533:33;;7502:64;-1:-1:-1;;;;;7577:17:0;;;;;;:9;:17;;;;;:27;;7598:6;;7577:17;:27;;7598:6;;7577:27;:::i;:::-;;;;-1:-1:-1;;7633:4:0;7615:24;;;;:9;:24;;;;;:38;;7643:10;;7615:24;:38;;7643:10;;7615:38;:::i;:::-;;;;-1:-1:-1;;;;;;;7664:19:0;;;;;;:9;:19;;;;;:38;;7687:15;;7664:19;:38;;7687:15;;7664:38;:::i;:::-;;;;;;;;7735:8;-1:-1:-1;;;;;7718:34:0;7727:6;-1:-1:-1;;;;;7718:34:0;;7745:6;7718:34;;;;1361:25:1;;1349:2;1334:18;;1215:177;7718:34:0;;;;;;;;-1:-1:-1;7770:4:0;;6792:990;-1:-1:-1;;;;;6792:990:0:o;6072:252::-;6160:28;6175:12;6160:14;:28::i;:::-;6199:16;;;6291:6;;6199:117;;-1:-1:-1;;;6199:117:0;;6264:4;6199:117;;;12492:34:1;12542:18;;;12535:34;;;12585:18;;;12578:34;;;12628:18;;;12621:34;;;;-1:-1:-1;;;;;6291:6:0;;;12671:19:1;;;12664:44;6299:15:0;12724:19:1;;;12717:35;6199:16:0;;;;:32;;6239:13;;12426:19:1;;6199:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6072:252;;:::o;10333:524::-;3096:7;:14;;-1:-1:-1;;3096:14:0;;;;;10441:4:::1;3096:14:::0;10423:24;;;:9:::1;:24;::::0;;;;;10485:13:::1;::::0;10463:35;::::1;::::0;::::1;::::0;:51:::1;;-1:-1:-1::0;10502:12:0::1;::::0;::::1;;10463:51;10458:392;;;10559:14;;10537:18;:36;10532:84;;-1:-1:-1::0;10599:14:0::1;::::0;10532:84:::1;10644:35;10660:18;10644:15;:35::i;:::-;10738:21;10777:23:::0;;10774:65:::1;;10804:32;10816:19;10804:11;:32::i;:::-;10517:333;10458:392;-1:-1:-1::0;3125:7:0;:15;;-1:-1:-1;;3125:15:0;;;10333:524::o;7790:586::-;7958:12;;7897:4;;7938;;7958:12;;:47;;;;-1:-1:-1;;;;;;7975:30:0;;;;;;:18;:30;;;;;;;;7974:31;7958:47;:80;;;;-1:-1:-1;;;;;;8010:28:0;;;;;;:18;:28;;;;;;;;8009:29;7958:80;7953:382;;;8078:11;;8061:14;:28;8056:268;;;-1:-1:-1;8131:5:0;8056:268;;;-1:-1:-1;;;;;8196:16:0;;;;;;:6;:16;;;;;;;;8195:17;:79;;;;-1:-1:-1;8256:17:0;;-1:-1:-1;;;;;8217:19:0;;;;;;:9;:19;;;;;;:36;;8239:14;;8217:36;:::i;:::-;:56;8195:79;8172:152;;;-1:-1:-1;8316:5:0;8352:16;7790:586;-1:-1:-1;;;;7790:586:0:o;8704:516::-;8867:12;;8803:7;;;;8867:12;;8866:13;;:46;;-1:-1:-1;;;;;;8883:29:0;;;;;;:17;:29;;;;;;;;8866:46;:78;;;-1:-1:-1;;;;;;8916:28:0;;;;;;:17;:28;;;;;;;;8866:78;8861:323;;;-1:-1:-1;8975:1:0;8861:323;;;-1:-1:-1;;;;;9000:18:0;;;;;;:6;:18;;;;;;;;8995:189;;;9058:9;;9070:3;;9049:18;;-1:-1:-1;;;9058:9:0;;;;9049:6;:18;:::i;:::-;:24;;;;:::i;:::-;9037:36;;8995:189;;;-1:-1:-1;;;;;9098:17:0;;;;;;:6;:17;;;;;;;;9093:91;;;9155:10;;9168:3;;9146:19;;-1:-1:-1;;;9155:10:0;;;;9146:6;:19;:::i;:::-;:25;;;;:::i;:::-;9134:37;8704:516;-1:-1:-1;;;;;8704:516:0:o;5246:305::-;5337:4;5317:26;;;;:11;:26;;;;;;;;2735:42;5317;;;;;;;;:57;-1:-1:-1;5312:232:0;;;5412:4;5392:26;;;;:11;:26;;;;;;;;2735:42;5392;;;;;;;;;;-1:-1:-1;;5392:62:0;;;;5474:58;;1361:25:1;;;2735:42:0;;5412:4;5474:58;;1334:18:1;5474:58:0;;;;;;;5312:232;5246:305;:::o;10865:341::-;10930:27;10945:11;10930:14;:27::i;:::-;10992:16;;;11006:1;10992:16;;;;;;;;10968:21;;10992:16;;;;;;;;;;-1:-1:-1;10992:16:0;10968:40;;11038:4;11019;11024:1;11019:7;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;11019:25:0;;;-1:-1:-1;;;;;11019:25:0;;;;;11065:4;11055;11060:1;11055:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11055:14:0;;;:7;;;;;;;;;:14;11081:16;;:117;;-1:-1:-1;;;11081:117:0;;:16;;;:67;;:117;;11149:11;;11081:16;;11163:4;;11176;;11182:15;;11081:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10919:287;10865:341;:::o;11214:94::-;11270:13;;:30;;-1:-1:-1;;;;;11270:13:0;;;;:30;;;;;11293:6;;11270:13;:30;:13;:30;11293:6;11270:13;:30;;;;;;;;;;;;;;;;;;;;;11214:94;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:159::-;1925:20;;1985:6;1974:18;;1964:29;;1954:57;;2007:1;2004;1997:12;1954:57;1858:159;;;:::o;2022:256::-;2088:6;2096;2149:2;2137:9;2128:7;2124:23;2120:32;2117:52;;;2165:1;2162;2155:12;2117:52;2188:28;2206:9;2188:28;:::i;:::-;2178:38;;2235:37;2268:2;2257:9;2253:18;2235:37;:::i;:::-;2225:47;;2022:256;;;;;:::o;2472:247::-;2531:6;2584:2;2572:9;2563:7;2559:23;2555:32;2552:52;;;2600:1;2597;2590:12;2552:52;2639:9;2626:23;2658:31;2683:5;2658:31;:::i;2932:156::-;2998:20;;3058:4;3047:16;;3037:27;;3027:55;;3078:1;3075;3068:12;3093:252;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3257:27;3274:9;3257:27;:::i;:::-;3247:37;;3303:36;3335:2;3324:9;3320:18;3303:36;:::i;3350:163::-;3417:20;;3477:10;3466:22;;3456:33;;3446:61;;3503:1;3500;3493:12;3518:401;3600:6;3608;3616;3624;3677:3;3665:9;3656:7;3652:23;3648:33;3645:53;;;3694:1;3691;3684:12;3645:53;3717:28;3735:9;3717:28;:::i;:::-;3707:38;;3764:37;3797:2;3786:9;3782:18;3764:37;:::i;:::-;3754:47;;3820:37;3853:2;3842:9;3838:18;3820:37;:::i;:::-;3810:47;;3876:37;3909:2;3898:9;3894:18;3876:37;:::i;:::-;3866:47;;3518:401;;;;;;;:::o;3924:388::-;3992:6;4000;4053:2;4041:9;4032:7;4028:23;4024:32;4021:52;;;4069:1;4066;4059:12;4021:52;4108:9;4095:23;4127:31;4152:5;4127:31;:::i;:::-;4177:5;-1:-1:-1;4234:2:1;4219:18;;4206:32;4247:33;4206:32;4247:33;:::i;:::-;4299:7;4289:17;;;3924:388;;;;;:::o;4577:127::-;4638:10;4633:3;4629:20;4626:1;4619:31;4669:4;4666:1;4659:15;4693:4;4690:1;4683:15;4709:422;4798:1;4841:5;4798:1;4855:270;4876:7;4866:8;4863:21;4855:270;;;4935:4;4931:1;4927:6;4923:17;4917:4;4914:27;4911:53;;;4944:18;;:::i;:::-;4994:7;4984:8;4980:22;4977:55;;;5014:16;;;;4977:55;5093:22;;;;5053:15;;;;4855:270;;;4859:3;4709:422;;;;;:::o;5136:806::-;5185:5;5215:8;5205:80;;-1:-1:-1;5256:1:1;5270:5;;5205:80;5304:4;5294:76;;-1:-1:-1;5341:1:1;5355:5;;5294:76;5386:4;5404:1;5399:59;;;;5472:1;5467:130;;;;5379:218;;5399:59;5429:1;5420:10;;5443:5;;;5467:130;5504:3;5494:8;5491:17;5488:43;;;5511:18;;:::i;:::-;-1:-1:-1;;5567:1:1;5553:16;;5582:5;;5379:218;;5681:2;5671:8;5668:16;5662:3;5656:4;5653:13;5649:36;5643:2;5633:8;5630:16;5625:2;5619:4;5616:12;5612:35;5609:77;5606:159;;;-1:-1:-1;5718:19:1;;;5750:5;;5606:159;5797:34;5822:8;5816:4;5797:34;:::i;:::-;5867:6;5863:1;5859:6;5855:19;5846:7;5843:32;5840:58;;;5878:18;;:::i;:::-;5916:20;;5136:806;-1:-1:-1;;;5136:806:1:o;5947:140::-;6005:5;6034:47;6075:4;6065:8;6061:19;6055:4;6034:47;:::i;6092:168::-;6165:9;;;6196;;6213:15;;;6207:22;;6193:37;6183:71;;6234:18;;:::i;6610:128::-;6677:9;;;6698:11;;;6695:37;;;6712:18;;:::i;6743:348::-;6945:2;6927:21;;;6984:2;6964:18;;;6957:30;7023:26;7018:2;7003:18;;6996:54;7082:2;7067:18;;6743:348::o;7096:217::-;7136:1;7162;7152:132;;7206:10;7201:3;7197:20;7194:1;7187:31;7241:4;7238:1;7231:15;7269:4;7266:1;7259:15;7152:132;-1:-1:-1;7298:9:1;;7096:217::o;7318:125::-;7383:9;;;7404:10;;;7401:36;;;7417:18;;:::i;8130:148::-;8218:4;8197:12;;;8211;;;8193:31;;8236:13;;8233:39;;;8252:18;;:::i;10323:251::-;10393:6;10446:2;10434:9;10425:7;10421:23;10417:32;10414:52;;;10462:1;10459;10452:12;10414:52;10494:9;10488:16;10513:31;10538:5;10513:31;:::i;12763:306::-;12851:6;12859;12867;12920:2;12908:9;12899:7;12895:23;12891:32;12888:52;;;12936:1;12933;12926:12;12888:52;12965:9;12959:16;12949:26;;13015:2;13004:9;13000:18;12994:25;12984:35;;13059:2;13048:9;13044:18;13038:25;13028:35;;12763:306;;;;;:::o;13206:127::-;13267:10;13262:3;13258:20;13255:1;13248:31;13298:4;13295:1;13288:15;13322:4;13319:1;13312:15;13338:980;13600:4;13648:3;13637:9;13633:19;13679:6;13668:9;13661:25;13705:2;13743:6;13738:2;13727:9;13723:18;13716:34;13786:3;13781:2;13770:9;13766:18;13759:31;13810:6;13845;13839:13;13876:6;13868;13861:22;13914:3;13903:9;13899:19;13892:26;;13953:2;13945:6;13941:15;13927:29;;13974:1;13984:195;13998:6;13995:1;13992:13;13984:195;;;14063:13;;-1:-1:-1;;;;;14059:39:1;14047:52;;14154:15;;;;14119:12;;;;14095:1;14013:9;13984:195;;;-1:-1:-1;;;;;;;14235:32:1;;;;14230:2;14215:18;;14208:60;-1:-1:-1;;;14299:3:1;14284:19;14277:35;14196:3;13338:980;-1:-1:-1;;;13338:980:1:o

Swarm Source

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