ETH Price: $2,465.34 (+5.73%)

Token

Rosa Inu (ROSA)
 

Overview

Max Total Supply

100,000,000,000,000,000 ROSA

Holders

499

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
40,403,981,007.826919145 ROSA

Value
$0.00
0xbe513d07929b6b5a938bf6e75cdaedffbaaa590c
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:
RosaInu

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-05-26
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


contract RosaInu is Context, IERC20, IERC20Metadata, Ownable {
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000000 * 10**6 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = 'Rosa Inu';
    string private _symbol = 'ROSA';
    uint8 private _decimals = 9;
    
    uint256 public _maxTxAmount = 100000000 * 10**6 * 10**9;

    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()]- amount);
        return true;
    }

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

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

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        _maxTxAmount = ((_tTotal * maxTxPercent) / 10**2);
    }

    function reflect(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender] - rAmount;
        _rTotal = _rTotal - rAmount;
        _tFeeTotal = _tFeeTotal + tAmount;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return (rAmount / currentRate);
    }

    function excludeAccount(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(sender != owner() && recipient != owner()) {
          require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }
            
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender] - rAmount;
        _rOwned[recipient] = _rOwned[recipient] + rTransferAmount;       
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender] - rAmount;
        _tOwned[recipient] = _tOwned[recipient] + tTransferAmount;
        _rOwned[recipient] = _rOwned[recipient] + rTransferAmount;           
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender] - tAmount;
        _rOwned[sender] = _rOwned[sender] - rAmount;
        _rOwned[recipient] = _rOwned[recipient] + rTransferAmount;   
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender] - tAmount;
        _rOwned[sender] = _rOwned[sender] - rAmount;
        _tOwned[recipient] = _tOwned[recipient] + tTransferAmount;
        _rOwned[recipient] = _rOwned[recipient] + rTransferAmount;        
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal - rFee;
        _tFeeTotal = _tFeeTotal + tFee;
    }
    
    

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee);
    }

    function _getTValues(uint256 tAmount) private pure returns (uint256, uint256) {
        uint256 tFee = ((tAmount / 100) * 5);
        uint256 tTransferAmount = tAmount - tFee;
        return (tTransferAmount, tFee);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount * currentRate;
        uint256 rFee = tFee * currentRate;
        uint256 rTransferAmount = rAmount - rFee;
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return (rSupply / tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < (_rTotal / _tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526a52b7d2dcc80cd2e40000006000196200001f9190620003f3565b6000196200002e919062000378565b6006556040518060400160405280600881526020017f526f736120496e75000000000000000000000000000000000000000000000000815250600890805190602001906200007e9291906200029a565b506040518060400160405280600481526020017f524f53410000000000000000000000000000000000000000000000000000000081525060099080519060200190620000cc9291906200029a565b506009600a60006101000a81548160ff021916908360ff16021790555069152d02c7e14af6800000600b553480156200010457600080fd5b506000620001176200029260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460016000620001cc6200029260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021a6200029260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a52b7d2dcc80cd2e40000006040516200028491906200035b565b60405180910390a3620004b8565b600033905090565b828054620002a890620003bd565b90600052602060002090601f016020900481019282620002cc576000855562000318565b82601f10620002e757805160ff191683800117855562000318565b8280016001018555821562000318579182015b8281111562000317578251825591602001919060010190620002fa565b5b5090506200032791906200032b565b5090565b5b80821115620003465760008160009055506001016200032c565b5090565b6200035581620003b3565b82525050565b60006020820190506200037260008301846200034a565b92915050565b60006200038582620003b3565b91506200039283620003b3565b925082821015620003a857620003a76200042b565b5b828203905092915050565b6000819050919050565b60006002820490506001821680620003d657607f821691505b60208210811415620003ed57620003ec62000489565b5b50919050565b60006200040082620003b3565b91506200040d83620003b3565b92508262000420576200041f6200045a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6138fd80620004c86000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063cba0e9961161007c578063cba0e996146103ca578063d543dbeb146103fa578063dd62ed3e14610416578063f2cc0c1814610446578063f2fde38b14610462578063f84354f11461047e5761014d565b8063715018a6146103065780637d1db4a5146103105780638da5cb5b1461032e57806395d89b411461034c578063a457c2d71461036a578063a9059cbb1461039a5761014d565b806323b872dd1161011557806323b872dd146101f85780632d83811914610228578063313ce5671461025857806339509351146102765780634549b039146102a657806370a08231146102d65761014d565b8063053ab1821461015257806306fdde031461016e578063095ea7b31461018c57806313114a9d146101bc57806318160ddd146101da575b600080fd5b61016c60048036038101906101679190612d66565b61049a565b005b6101766105ff565b6040516101839190613398565b60405180910390f35b6101a660048036038101906101a19190612d2a565b610691565b6040516101b3919061337d565b60405180910390f35b6101c46106af565b6040516101d1919061357a565b60405180910390f35b6101e26106b9565b6040516101ef919061357a565b60405180910390f35b610212600480360381019061020d9190612cdb565b6106cc565b60405161021f919061337d565b60405180910390f35b610242600480360381019061023d9190612d66565b61084a565b60405161024f919061357a565b60405180910390f35b6102606108b1565b60405161026d9190613595565b60405180910390f35b610290600480360381019061028b9190612d2a565b6108c8565b60405161029d919061337d565b60405180910390f35b6102c060048036038101906102bb9190612d8f565b610974565b6040516102cd919061357a565b60405180910390f35b6102f060048036038101906102eb9190612c76565b6109ff565b6040516102fd919061357a565b60405180910390f35b61030e610aea565b005b610318610c24565b604051610325919061357a565b60405180910390f35b610336610c2a565b6040516103439190613362565b60405180910390f35b610354610c53565b6040516103619190613398565b60405180910390f35b610384600480360381019061037f9190612d2a565b610ce5565b604051610391919061337d565b60405180910390f35b6103b460048036038101906103af9190612d2a565b610e57565b6040516103c1919061337d565b60405180910390f35b6103e460048036038101906103df9190612c76565b610e75565b6040516103f1919061337d565b60405180910390f35b610414600480360381019061040f9190612d66565b610ecb565b005b610430600480360381019061042b9190612c9f565b610f73565b60405161043d919061357a565b60405180910390f35b610460600480360381019061045b9190612c76565b610ffa565b005b61047c60048036038101906104779190612c76565b611295565b005b61049860048036038101906104939190612c76565b61143e565b005b60006104a461180c565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052a9061353a565b60405180910390fd5b600061053e83611814565b50505050905080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461058f91906136ad565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806006546105e091906136ad565b600681905550826007546105f491906135cc565b600781905550505050565b60606008805461060e90613769565b80601f016020809104026020016040519081016040528092919081815260200182805461063a90613769565b80156106875780601f1061065c57610100808354040283529160200191610687565b820191906000526020600020905b81548152906001019060200180831161066a57829003601f168201915b5050505050905090565b60006106a561069e61180c565b848461186c565b6001905092915050565b6000600754905090565b60006a52b7d2dcc80cd2e4000000905090565b60006106d9848484611a37565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061072261180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561079f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107969061349a565b60405180910390fd5b61083f846107ab61180c565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107f561180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461083a91906136ad565b61186c565b600190509392505050565b6000600654821115610891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610888906133da565b60405180910390fd5b600061089b611f0f565b905080836108a99190613622565b915050919050565b6000600a60009054906101000a900460ff16905090565b600061096a6108d561180c565b8484600360006108e361180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461096591906135cc565b61186c565b6001905092915050565b60006a52b7d2dcc80cd2e40000008311156109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9061345a565b60405180910390fd5b816109e35760006109d484611814565b505050509050809150506109f9565b60006109ee84611814565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a9a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ae5565b610ae2600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461084a565b90505b919050565b610af261180c565b73ffffffffffffffffffffffffffffffffffffffff16610b10610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d906134ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610c6290613769565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8e90613769565b8015610cdb5780601f10610cb057610100808354040283529160200191610cdb565b820191906000526020600020905b815481529060010190602001808311610cbe57829003601f168201915b5050505050905090565b600060036000610cf361180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da49061355a565b60405180910390fd5b610e4d610db861180c565b848460036000610dc661180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e4891906136ad565b61186c565b6001905092915050565b6000610e6b610e6461180c565b8484611a37565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ed361180c565b73ffffffffffffffffffffffffffffffffffffffff16610ef1610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e906134ba565b60405180910390fd5b6064816a52b7d2dcc80cd2e4000000610f609190613653565b610f6a9190613622565b600b8190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61100261180c565b73ffffffffffffffffffffffffffffffffffffffff16611020610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d906134ba565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa9061343a565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156111d757611193600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461084a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61129d61180c565b73ffffffffffffffffffffffffffffffffffffffff166112bb610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611311576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611308906134ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611381576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611378906133fa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61144661180c565b73ffffffffffffffffffffffffffffffffffffffff16611464610c2a565b73ffffffffffffffffffffffffffffffffffffffff16146114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b1906134ba565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d9061343a565b60405180910390fd5b60005b600580549050811015611808578173ffffffffffffffffffffffffffffffffffffffff16600582815481106115a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156117f5576005600160058054905061160291906136ad565b81548110611639577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061169e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806117bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611808565b80806118009061379b565b915050611549565b5050565b600033905090565b600080600080600080600061182888611f33565b915091506000611836611f0f565b905060008060006118488c8686611f70565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d39061351a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561194c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119439061341a565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a2a919061357a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e906134fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0e906133ba565b60405180910390fd5b60008111611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b51906134da565b60405180910390fd5b611b62610c2a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bd05750611ba0610c2a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c1b57600b54811115611c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c119061347a565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611cbe5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cd357611cce838383611fb9565b611f0a565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d765750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d8b57611d868383836121f7565b611f09565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e2f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e4457611e3f838383612435565b611f08565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ee65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611efb57611ef68383836125e5565b611f07565b611f06838383612435565b5b5b5b5b505050565b6000806000611f1c6128b1565b915091508082611f2c9190613622565b9250505090565b60008060006005606485611f479190613622565b611f519190613653565b905060008185611f6191906136ad565b90508082935093505050915091565b6000806000808487611f829190613653565b905060008587611f929190613653565b905060008183611fa291906136ad565b905082818395509550955050505093509350939050565b6000806000806000611fca86611814565b9450945094509450945085600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201f91906136ad565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ad91906136ad565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213b91906135cc565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121888382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121e5919061357a565b60405180910390a35050505050505050565b600080600080600061220886611814565b9450945094509450945084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225d91906136ad565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122eb91906135cc565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461237991906135cc565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123c68382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612423919061357a565b60405180910390a35050505050505050565b600080600080600061244686611814565b9450945094509450945084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249b91906136ad565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252991906135cc565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125768382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125d3919061357a565b60405180910390a35050505050505050565b60008060008060006125f686611814565b9450945094509450945085600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264b91906136ad565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d991906136ad565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276791906135cc565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f591906135cc565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128428382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161289f919061357a565b60405180910390a35050505050505050565b6000806000600654905060006a52b7d2dcc80cd2e4000000905060005b600580549050811015612bc35782600160006005848154811061291a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612a2e57508160026000600584815481106129c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612a4e576006546a52b7d2dcc80cd2e400000094509450505050612c07565b6001600060058381548110612a8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612afd91906136ad565b92506002600060058381548110612b3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612bae91906136ad565b91508080612bbb9061379b565b9150506128ce565b506a52b7d2dcc80cd2e4000000600654612bdd9190613622565b821015612bfe576006546a52b7d2dcc80cd2e4000000935093505050612c07565b81819350935050505b9091565b81600654612c1991906136ad565b60068190555080600754612c2d91906135cc565b6007819055505050565b600081359050612c4681613882565b92915050565b600081359050612c5b81613899565b92915050565b600081359050612c70816138b0565b92915050565b600060208284031215612c8857600080fd5b6000612c9684828501612c37565b91505092915050565b60008060408385031215612cb257600080fd5b6000612cc085828601612c37565b9250506020612cd185828601612c37565b9150509250929050565b600080600060608486031215612cf057600080fd5b6000612cfe86828701612c37565b9350506020612d0f86828701612c37565b9250506040612d2086828701612c61565b9150509250925092565b60008060408385031215612d3d57600080fd5b6000612d4b85828601612c37565b9250506020612d5c85828601612c61565b9150509250929050565b600060208284031215612d7857600080fd5b6000612d8684828501612c61565b91505092915050565b60008060408385031215612da257600080fd5b6000612db085828601612c61565b9250506020612dc185828601612c4c565b9150509250929050565b612dd4816136e1565b82525050565b612de3816136f3565b82525050565b6000612df4826135b0565b612dfe81856135bb565b9350612e0e818560208601613736565b612e1781613871565b840191505092915050565b6000612e2f6023836135bb565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e95602a836135bb565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b6000612efb6026836135bb565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612f616022836135bb565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612fc7601b836135bb565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000613007601f836135bb565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b60006130476028836135bb565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130ad6028836135bb565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131136020836135bb565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006131536029836135bb565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b60006131b96025836135bb565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061321f6024836135bb565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613285602c836135bb565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b60006132eb6025836135bb565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61334d8161371f565b82525050565b61335c81613729565b82525050565b60006020820190506133776000830184612dcb565b92915050565b60006020820190506133926000830184612dda565b92915050565b600060208201905081810360008301526133b28184612de9565b905092915050565b600060208201905081810360008301526133d381612e22565b9050919050565b600060208201905081810360008301526133f381612e88565b9050919050565b6000602082019050818103600083015261341381612eee565b9050919050565b6000602082019050818103600083015261343381612f54565b9050919050565b6000602082019050818103600083015261345381612fba565b9050919050565b6000602082019050818103600083015261347381612ffa565b9050919050565b600060208201905081810360008301526134938161303a565b9050919050565b600060208201905081810360008301526134b3816130a0565b9050919050565b600060208201905081810360008301526134d381613106565b9050919050565b600060208201905081810360008301526134f381613146565b9050919050565b60006020820190508181036000830152613513816131ac565b9050919050565b6000602082019050818103600083015261353381613212565b9050919050565b6000602082019050818103600083015261355381613278565b9050919050565b60006020820190508181036000830152613573816132de565b9050919050565b600060208201905061358f6000830184613344565b92915050565b60006020820190506135aa6000830184613353565b92915050565b600081519050919050565b600082825260208201905092915050565b60006135d78261371f565b91506135e28361371f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613617576136166137e4565b5b828201905092915050565b600061362d8261371f565b91506136388361371f565b92508261364857613647613813565b5b828204905092915050565b600061365e8261371f565b91506136698361371f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136a2576136a16137e4565b5b828202905092915050565b60006136b88261371f565b91506136c38361371f565b9250828210156136d6576136d56137e4565b5b828203905092915050565b60006136ec826136ff565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015613754578082015181840152602081019050613739565b83811115613763576000848401525b50505050565b6000600282049050600182168061378157607f821691505b6020821081141561379557613794613842565b5b50919050565b60006137a68261371f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137d9576137d86137e4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61388b816136e1565b811461389657600080fd5b50565b6138a2816136f3565b81146138ad57600080fd5b50565b6138b98161371f565b81146138c457600080fd5b5056fea2646970667358221220e4141949c61ef70b0f998925e04d76406d5839a49a28e88d4e1c02604ce3cfa364736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063cba0e9961161007c578063cba0e996146103ca578063d543dbeb146103fa578063dd62ed3e14610416578063f2cc0c1814610446578063f2fde38b14610462578063f84354f11461047e5761014d565b8063715018a6146103065780637d1db4a5146103105780638da5cb5b1461032e57806395d89b411461034c578063a457c2d71461036a578063a9059cbb1461039a5761014d565b806323b872dd1161011557806323b872dd146101f85780632d83811914610228578063313ce5671461025857806339509351146102765780634549b039146102a657806370a08231146102d65761014d565b8063053ab1821461015257806306fdde031461016e578063095ea7b31461018c57806313114a9d146101bc57806318160ddd146101da575b600080fd5b61016c60048036038101906101679190612d66565b61049a565b005b6101766105ff565b6040516101839190613398565b60405180910390f35b6101a660048036038101906101a19190612d2a565b610691565b6040516101b3919061337d565b60405180910390f35b6101c46106af565b6040516101d1919061357a565b60405180910390f35b6101e26106b9565b6040516101ef919061357a565b60405180910390f35b610212600480360381019061020d9190612cdb565b6106cc565b60405161021f919061337d565b60405180910390f35b610242600480360381019061023d9190612d66565b61084a565b60405161024f919061357a565b60405180910390f35b6102606108b1565b60405161026d9190613595565b60405180910390f35b610290600480360381019061028b9190612d2a565b6108c8565b60405161029d919061337d565b60405180910390f35b6102c060048036038101906102bb9190612d8f565b610974565b6040516102cd919061357a565b60405180910390f35b6102f060048036038101906102eb9190612c76565b6109ff565b6040516102fd919061357a565b60405180910390f35b61030e610aea565b005b610318610c24565b604051610325919061357a565b60405180910390f35b610336610c2a565b6040516103439190613362565b60405180910390f35b610354610c53565b6040516103619190613398565b60405180910390f35b610384600480360381019061037f9190612d2a565b610ce5565b604051610391919061337d565b60405180910390f35b6103b460048036038101906103af9190612d2a565b610e57565b6040516103c1919061337d565b60405180910390f35b6103e460048036038101906103df9190612c76565b610e75565b6040516103f1919061337d565b60405180910390f35b610414600480360381019061040f9190612d66565b610ecb565b005b610430600480360381019061042b9190612c9f565b610f73565b60405161043d919061357a565b60405180910390f35b610460600480360381019061045b9190612c76565b610ffa565b005b61047c60048036038101906104779190612c76565b611295565b005b61049860048036038101906104939190612c76565b61143e565b005b60006104a461180c565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052a9061353a565b60405180910390fd5b600061053e83611814565b50505050905080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461058f91906136ad565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806006546105e091906136ad565b600681905550826007546105f491906135cc565b600781905550505050565b60606008805461060e90613769565b80601f016020809104026020016040519081016040528092919081815260200182805461063a90613769565b80156106875780601f1061065c57610100808354040283529160200191610687565b820191906000526020600020905b81548152906001019060200180831161066a57829003601f168201915b5050505050905090565b60006106a561069e61180c565b848461186c565b6001905092915050565b6000600754905090565b60006a52b7d2dcc80cd2e4000000905090565b60006106d9848484611a37565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061072261180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561079f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107969061349a565b60405180910390fd5b61083f846107ab61180c565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107f561180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461083a91906136ad565b61186c565b600190509392505050565b6000600654821115610891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610888906133da565b60405180910390fd5b600061089b611f0f565b905080836108a99190613622565b915050919050565b6000600a60009054906101000a900460ff16905090565b600061096a6108d561180c565b8484600360006108e361180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461096591906135cc565b61186c565b6001905092915050565b60006a52b7d2dcc80cd2e40000008311156109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9061345a565b60405180910390fd5b816109e35760006109d484611814565b505050509050809150506109f9565b60006109ee84611814565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a9a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ae5565b610ae2600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461084a565b90505b919050565b610af261180c565b73ffffffffffffffffffffffffffffffffffffffff16610b10610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d906134ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610c6290613769565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8e90613769565b8015610cdb5780601f10610cb057610100808354040283529160200191610cdb565b820191906000526020600020905b815481529060010190602001808311610cbe57829003601f168201915b5050505050905090565b600060036000610cf361180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da49061355a565b60405180910390fd5b610e4d610db861180c565b848460036000610dc661180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e4891906136ad565b61186c565b6001905092915050565b6000610e6b610e6461180c565b8484611a37565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ed361180c565b73ffffffffffffffffffffffffffffffffffffffff16610ef1610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e906134ba565b60405180910390fd5b6064816a52b7d2dcc80cd2e4000000610f609190613653565b610f6a9190613622565b600b8190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61100261180c565b73ffffffffffffffffffffffffffffffffffffffff16611020610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d906134ba565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa9061343a565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156111d757611193600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461084a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61129d61180c565b73ffffffffffffffffffffffffffffffffffffffff166112bb610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611311576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611308906134ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611381576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611378906133fa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61144661180c565b73ffffffffffffffffffffffffffffffffffffffff16611464610c2a565b73ffffffffffffffffffffffffffffffffffffffff16146114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b1906134ba565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d9061343a565b60405180910390fd5b60005b600580549050811015611808578173ffffffffffffffffffffffffffffffffffffffff16600582815481106115a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156117f5576005600160058054905061160291906136ad565b81548110611639577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061169e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806117bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611808565b80806118009061379b565b915050611549565b5050565b600033905090565b600080600080600080600061182888611f33565b915091506000611836611f0f565b905060008060006118488c8686611f70565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d39061351a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561194c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119439061341a565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a2a919061357a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e906134fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0e906133ba565b60405180910390fd5b60008111611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b51906134da565b60405180910390fd5b611b62610c2a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bd05750611ba0610c2a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c1b57600b54811115611c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c119061347a565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611cbe5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cd357611cce838383611fb9565b611f0a565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d765750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d8b57611d868383836121f7565b611f09565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e2f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e4457611e3f838383612435565b611f08565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ee65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611efb57611ef68383836125e5565b611f07565b611f06838383612435565b5b5b5b5b505050565b6000806000611f1c6128b1565b915091508082611f2c9190613622565b9250505090565b60008060006005606485611f479190613622565b611f519190613653565b905060008185611f6191906136ad565b90508082935093505050915091565b6000806000808487611f829190613653565b905060008587611f929190613653565b905060008183611fa291906136ad565b905082818395509550955050505093509350939050565b6000806000806000611fca86611814565b9450945094509450945085600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201f91906136ad565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ad91906136ad565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213b91906135cc565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121888382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121e5919061357a565b60405180910390a35050505050505050565b600080600080600061220886611814565b9450945094509450945084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225d91906136ad565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122eb91906135cc565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461237991906135cc565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123c68382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612423919061357a565b60405180910390a35050505050505050565b600080600080600061244686611814565b9450945094509450945084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249b91906136ad565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252991906135cc565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125768382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125d3919061357a565b60405180910390a35050505050505050565b60008060008060006125f686611814565b9450945094509450945085600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264b91906136ad565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d991906136ad565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276791906135cc565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f591906135cc565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128428382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161289f919061357a565b60405180910390a35050505050505050565b6000806000600654905060006a52b7d2dcc80cd2e4000000905060005b600580549050811015612bc35782600160006005848154811061291a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612a2e57508160026000600584815481106129c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612a4e576006546a52b7d2dcc80cd2e400000094509450505050612c07565b6001600060058381548110612a8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612afd91906136ad565b92506002600060058381548110612b3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612bae91906136ad565b91508080612bbb9061379b565b9150506128ce565b506a52b7d2dcc80cd2e4000000600654612bdd9190613622565b821015612bfe576006546a52b7d2dcc80cd2e4000000935093505050612c07565b81819350935050505b9091565b81600654612c1991906136ad565b60068190555080600754612c2d91906135cc565b6007819055505050565b600081359050612c4681613882565b92915050565b600081359050612c5b81613899565b92915050565b600081359050612c70816138b0565b92915050565b600060208284031215612c8857600080fd5b6000612c9684828501612c37565b91505092915050565b60008060408385031215612cb257600080fd5b6000612cc085828601612c37565b9250506020612cd185828601612c37565b9150509250929050565b600080600060608486031215612cf057600080fd5b6000612cfe86828701612c37565b9350506020612d0f86828701612c37565b9250506040612d2086828701612c61565b9150509250925092565b60008060408385031215612d3d57600080fd5b6000612d4b85828601612c37565b9250506020612d5c85828601612c61565b9150509250929050565b600060208284031215612d7857600080fd5b6000612d8684828501612c61565b91505092915050565b60008060408385031215612da257600080fd5b6000612db085828601612c61565b9250506020612dc185828601612c4c565b9150509250929050565b612dd4816136e1565b82525050565b612de3816136f3565b82525050565b6000612df4826135b0565b612dfe81856135bb565b9350612e0e818560208601613736565b612e1781613871565b840191505092915050565b6000612e2f6023836135bb565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e95602a836135bb565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b6000612efb6026836135bb565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612f616022836135bb565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612fc7601b836135bb565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000613007601f836135bb565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b60006130476028836135bb565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130ad6028836135bb565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131136020836135bb565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006131536029836135bb565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b60006131b96025836135bb565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061321f6024836135bb565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613285602c836135bb565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b60006132eb6025836135bb565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61334d8161371f565b82525050565b61335c81613729565b82525050565b60006020820190506133776000830184612dcb565b92915050565b60006020820190506133926000830184612dda565b92915050565b600060208201905081810360008301526133b28184612de9565b905092915050565b600060208201905081810360008301526133d381612e22565b9050919050565b600060208201905081810360008301526133f381612e88565b9050919050565b6000602082019050818103600083015261341381612eee565b9050919050565b6000602082019050818103600083015261343381612f54565b9050919050565b6000602082019050818103600083015261345381612fba565b9050919050565b6000602082019050818103600083015261347381612ffa565b9050919050565b600060208201905081810360008301526134938161303a565b9050919050565b600060208201905081810360008301526134b3816130a0565b9050919050565b600060208201905081810360008301526134d381613106565b9050919050565b600060208201905081810360008301526134f381613146565b9050919050565b60006020820190508181036000830152613513816131ac565b9050919050565b6000602082019050818103600083015261353381613212565b9050919050565b6000602082019050818103600083015261355381613278565b9050919050565b60006020820190508181036000830152613573816132de565b9050919050565b600060208201905061358f6000830184613344565b92915050565b60006020820190506135aa6000830184613353565b92915050565b600081519050919050565b600082825260208201905092915050565b60006135d78261371f565b91506135e28361371f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613617576136166137e4565b5b828201905092915050565b600061362d8261371f565b91506136388361371f565b92508261364857613647613813565b5b828204905092915050565b600061365e8261371f565b91506136698361371f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136a2576136a16137e4565b5b828202905092915050565b60006136b88261371f565b91506136c38361371f565b9250828210156136d6576136d56137e4565b5b828203905092915050565b60006136ec826136ff565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015613754578082015181840152602081019050613739565b83811115613763576000848401525b50505050565b6000600282049050600182168061378157607f821691505b6020821081141561379557613794613842565b5b50919050565b60006137a68261371f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137d9576137d86137e4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61388b816136e1565b811461389657600080fd5b50565b6138a2816136f3565b81146138ad57600080fd5b50565b6138b98161371f565b81146138c457600080fd5b5056fea2646970667358221220e4141949c61ef70b0f998925e04d76406d5839a49a28e88d4e1c02604ce3cfa364736f6c63430008000033

Deployed Bytecode Sourcemap

6425:10609:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9719:367;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7294:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8233:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9470:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7598:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8402:372;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10536:252;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7498:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8782:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10094:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7701:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5869:148;;;:::i;:::-;;7098:55;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5218:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7394:96;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9005:339;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7907:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9352:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9575:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8082:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10796:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6172:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11136:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9719:367;9771:14;9788:12;:10;:12::i;:::-;9771:29;;9820:11;:19;9832:6;9820:19;;;;;;;;;;;;;;;;;;;;;;;;;9819:20;9811:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;9900:15;9923:19;9934:7;9923:10;:19::i;:::-;9899:43;;;;;;9989:7;9971;:15;9979:6;9971:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;9953:7;:15;9961:6;9953:15;;;;;;;;;;;;;;;:43;;;;10027:7;10017;;:17;;;;:::i;:::-;10007:7;:27;;;;10071:7;10058:10;;:20;;;;:::i;:::-;10045:10;:33;;;;9719:367;;;:::o;7294:92::-;7340:13;7373:5;7366:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7294:92;:::o;8233:161::-;8308:4;8325:39;8334:12;:10;:12::i;:::-;8348:7;8357:6;8325:8;:39::i;:::-;8382:4;8375:11;;8233:161;;;;:::o;9470:87::-;9512:7;9539:10;;9532:17;;9470:87;:::o;7598:95::-;7651:7;6854:28;7671:14;;7598:95;:::o;8402:372::-;8500:4;8517:36;8527:6;8535:9;8546:6;8517:9;:36::i;:::-;8582:11;:19;8594:6;8582:19;;;;;;;;;;;;;;;:33;8602:12;:10;:12::i;:::-;8582:33;;;;;;;;;;;;;;;;8572:6;:43;;8564:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;8671:73;8680:6;8688:12;:10;:12::i;:::-;8737:6;8702:11;:19;8714:6;8702:19;;;;;;;;;;;;;;;:33;8722:12;:10;:12::i;:::-;8702:33;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;8671:8;:73::i;:::-;8762:4;8755:11;;8402:372;;;;;:::o;10536:252::-;10602:7;10641;;10630;:18;;10622:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10706:19;10729:10;:8;:10::i;:::-;10706:33;;10768:11;10758:7;:21;;;;:::i;:::-;10750:30;;;10536:252;;;:::o;7498:92::-;7548:5;7573:9;;;;;;;;;;;7566:16;;7498:92;:::o;8782:215::-;8870:4;8887:80;8896:12;:10;:12::i;:::-;8910:7;8956:10;8919:11;:25;8931:12;:10;:12::i;:::-;8919:25;;;;;;;;;;;;;;;:34;8945:7;8919:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8887:8;:80::i;:::-;8985:4;8978:11;;8782:215;;;;:::o;10094:434::-;10184:7;6854:28;10212:7;:18;;10204:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10282:17;10277:244;;10317:15;10340:19;10351:7;10340:10;:19::i;:::-;10316:43;;;;;;10381:7;10374:14;;;;;10277:244;10423:23;10453:19;10464:7;10453:10;:19::i;:::-;10421:51;;;;;;10494:15;10487:22;;;10094:434;;;;;:::o;7701:198::-;7767:7;7791:11;:20;7803:7;7791:20;;;;;;;;;;;;;;;;;;;;;;;;;7787:49;;;7820:7;:16;7828:7;7820:16;;;;;;;;;;;;;;;;7813:23;;;;7787:49;7854:37;7874:7;:16;7882:7;7874:16;;;;;;;;;;;;;;;;7854:19;:37::i;:::-;7847:44;;7701:198;;;;:::o;5869:148::-;5449:12;:10;:12::i;:::-;5438:23;;:7;:5;:7::i;:::-;:23;;;5430:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5976:1:::1;5939:40;;5960:6;::::0;::::1;;;;;;;;5939:40;;;;;;;;;;;;6007:1;5990:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5869:148::o:0;7098:55::-;;;;:::o;5218:87::-;5264:7;5291:6;;;;;;;;;;;5284:13;;5218:87;:::o;7394:96::-;7442:13;7475:7;7468:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7394:96;:::o;9005:339::-;9098:4;9142:11;:25;9154:12;:10;:12::i;:::-;9142:25;;;;;;;;;;;;;;;:34;9168:7;9142:34;;;;;;;;;;;;;;;;9123:15;:53;;9115:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;9229:85;9238:12;:10;:12::i;:::-;9252:7;9298:15;9261:11;:25;9273:12;:10;:12::i;:::-;9261:25;;;;;;;;;;;;;;;:34;9287:7;9261:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;9229:8;:85::i;:::-;9332:4;9325:11;;9005:339;;;;:::o;7907:167::-;7985:4;8002:42;8012:12;:10;:12::i;:::-;8026:9;8037:6;8002:9;:42::i;:::-;8062:4;8055:11;;7907:167;;;;:::o;9352:110::-;9410:4;9434:11;:20;9446:7;9434:20;;;;;;;;;;;;;;;;;;;;;;;;;9427:27;;9352:110;;;:::o;9575:136::-;5449:12;:10;:12::i;:::-;5438:23;;:7;:5;:7::i;:::-;:23;;;5430:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9697:5:::1;9681:12;6854:28;9671:22;;;;:::i;:::-;9670:32;;;;:::i;:::-;9654:12;:49;;;;9575:136:::0;:::o;8082:143::-;8163:7;8190:11;:18;8202:5;8190:18;;;;;;;;;;;;;;;:27;8209:7;8190:27;;;;;;;;;;;;;;;;8183:34;;8082:143;;;;:::o;10796:332::-;5449:12;:10;:12::i;:::-;5438:23;;:7;:5;:7::i;:::-;:23;;;5430:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10878:11:::1;:20;10890:7;10878:20;;;;;;;;;;;;;;;;;;;;;;;;;10877:21;10869:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10963:1;10944:7;:16;10952:7;10944:16;;;;;;;;;;;;;;;;:20;10941:108;;;11000:37;11020:7;:16;11028:7;11020:16;;;;;;;;;;;;;;;;11000:19;:37::i;:::-;10981:7;:16;10989:7;10981:16;;;;;;;;;;;;;;;:56;;;;10941:108;11082:4;11059:11;:20;11071:7;11059:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11097:9;11112:7;11097:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10796:332:::0;:::o;6172:244::-;5449:12;:10;:12::i;:::-;5438:23;;:7;:5;:7::i;:::-;:23;;;5430:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6281:1:::1;6261:22;;:8;:22;;;;6253:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6371:8;6342:38;;6363:6;::::0;::::1;;;;;;;;6342:38;;;;;;;;;;;;6400:8;6391:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6172:244:::0;:::o;11136:478::-;5449:12;:10;:12::i;:::-;5438:23;;:7;:5;:7::i;:::-;:23;;;5430:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11217:11:::1;:20;11229:7;11217:20;;;;;;;;;;;;;;;;;;;;;;;;;11209:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11285:9;11280:327;11304:9;:16;;;;11300:1;:20;11280:327;;;11362:7;11346:23;;:9;11356:1;11346:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;11342:254;;;11405:9;11434:1;11415:9;:16;;;;:20;;;;:::i;:::-;11405:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11390:9;11400:1;11390:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11474:1;11455:7;:16;11463:7;11455:16;;;;;;;;;;;;;;;:20;;;;11517:5;11494:11;:20;11506:7;11494:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11541:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11575:5;;11342:254;11322:3;;;;;:::i;:::-;;;;11280:327;;;;11136:478:::0;:::o;601:98::-;654:7;681:10;674:17;;601:98;:::o;15322:411::-;15381:7;15390;15399;15408;15417;15438:23;15463:12;15479:20;15491:7;15479:11;:20::i;:::-;15437:62;;;;15510:19;15533:10;:8;:10::i;:::-;15510:33;;15555:15;15572:23;15597:12;15613:39;15625:7;15634:4;15640:11;15613;:39::i;:::-;15554:98;;;;;;15671:7;15680:15;15697:4;15703:15;15720:4;15663:62;;;;;;;;;;;;;;;;15322:411;;;;;;;:::o;11622:337::-;11732:1;11715:19;;:5;:19;;;;11707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11813:1;11794:21;;:7;:21;;;;11786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11897:6;11867:11;:18;11879:5;11867:18;;;;;;;;;;;;;;;:27;11886:7;11867:27;;;;;;;;;;;;;;;:36;;;;11935:7;11919:32;;11928:5;11919:32;;;11944:6;11919:32;;;;;;:::i;:::-;;;;;;;;11622:337;;;:::o;11971:1111::-;12086:1;12068:20;;:6;:20;;;;12060:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12170:1;12149:23;;:9;:23;;;;12141:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12240:1;12231:6;:10;12223:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12321:7;:5;:7::i;:::-;12311:17;;:6;:17;;;;:41;;;;;12345:7;:5;:7::i;:::-;12332:20;;:9;:20;;;;12311:41;12308:146;;;12385:12;;12375:6;:22;;12367:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12308:146;12482:11;:19;12494:6;12482:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;12506:11;:22;12518:9;12506:22;;;;;;;;;;;;;;;;;;;;;;;;;12505:23;12482:46;12478:597;;;12545:48;12567:6;12575:9;12586:6;12545:21;:48::i;:::-;12478:597;;;12616:11;:19;12628:6;12616:19;;;;;;;;;;;;;;;;;;;;;;;;;12615:20;:46;;;;;12639:11;:22;12651:9;12639:22;;;;;;;;;;;;;;;;;;;;;;;;;12615:46;12611:464;;;12678:46;12698:6;12706:9;12717:6;12678:19;:46::i;:::-;12611:464;;;12747:11;:19;12759:6;12747:19;;;;;;;;;;;;;;;;;;;;;;;;;12746:20;:47;;;;;12771:11;:22;12783:9;12771:22;;;;;;;;;;;;;;;;;;;;;;;;;12770:23;12746:47;12742:333;;;12810:44;12828:6;12836:9;12847:6;12810:17;:44::i;:::-;12742:333;;;12876:11;:19;12888:6;12876:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;12899:11;:22;12911:9;12899:22;;;;;;;;;;;;;;;;;;;;;;;;;12876:45;12872:203;;;12938:48;12960:6;12968:9;12979:6;12938:21;:48::i;:::-;12872:203;;;13019:44;13037:6;13045:9;13056:6;13019:17;:44::i;:::-;12872:203;12742:333;12611:464;12478:597;11971:1111;;;:::o;16307:162::-;16348:7;16369:15;16386;16405:19;:17;:19::i;:::-;16368:56;;;;16453:7;16443;:17;;;;:::i;:::-;16435:26;;;;16307:162;:::o;15741:225::-;15801:7;15810;15830:12;15864:1;15857:3;15847:7;:13;;;;:::i;:::-;15846:19;;;;:::i;:::-;15830:36;;15877:23;15913:4;15903:7;:14;;;;:::i;:::-;15877:40;;15936:15;15953:4;15928:30;;;;;;15741:225;;;:::o;15974:325::-;16069:7;16078;16087;16107:15;16135:11;16125:7;:21;;;;:::i;:::-;16107:39;;16157:12;16179:11;16172:4;:18;;;;:::i;:::-;16157:33;;16201:23;16237:4;16227:7;:14;;;;:::i;:::-;16201:40;;16260:7;16269:15;16286:4;16252:39;;;;;;;;;15974:325;;;;;;;:::o;14072:500::-;14175:15;14192:23;14217:12;14231:23;14256:12;14272:19;14283:7;14272:10;:19::i;:::-;14174:117;;;;;;;;;;14338:7;14320;:15;14328:6;14320:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;14302:7;:15;14310:6;14302:15;;;;;;;;;;;;;;;:43;;;;14392:7;14374;:15;14382:6;14374:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;14356:7;:15;14364:6;14356:15;;;;;;;;;;;;;;;:43;;;;14452:15;14431:7;:18;14439:9;14431:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;14410:7;:18;14418:9;14410:18;;;;;;;;;;;;;;;:57;;;;14481:23;14493:4;14499;14481:11;:23::i;:::-;14537:9;14520:44;;14529:6;14520:44;;;14548:15;14520:44;;;;;;:::i;:::-;;;;;;;;14072:500;;;;;;;;:::o;13544:520::-;13645:15;13662:23;13687:12;13701:23;13726:12;13742:19;13753:7;13742:10;:19::i;:::-;13644:117;;;;;;;;;;13808:7;13790;:15;13798:6;13790:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;13772:7;:15;13780:6;13772:15;;;;;;;;;;;;;;;:43;;;;13868:15;13847:7;:18;13855:9;13847:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;13826:7;:18;13834:9;13826:18;;;;;;;;;;;;;;;:57;;;;13936:15;13915:7;:18;13923:9;13915:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;13894:7;:18;13902:9;13894:18;;;;;;;;;;;;;;;:57;;;;13973:23;13985:4;13991;13973:11;:23::i;:::-;14029:9;14012:44;;14021:6;14012:44;;;14040:15;14012:44;;;;;;:::i;:::-;;;;;;;;13544:520;;;;;;;;:::o;13090:446::-;13189:15;13206:23;13231:12;13245:23;13270:12;13286:19;13297:7;13286:10;:19::i;:::-;13188:117;;;;;;;;;;13352:7;13334;:15;13342:6;13334:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;13316:7;:15;13324:6;13316:15;;;;;;;;;;;;;;;:43;;;;13412:15;13391:7;:18;13399:9;13391:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;13370:7;:18;13378:9;13370:18;;;;;;;;;;;;;;;:57;;;;13445:23;13457:4;13463;13445:11;:23::i;:::-;13501:9;13484:44;;13493:6;13484:44;;;13512:15;13484:44;;;;;;:::i;:::-;;;;;;;;13090:446;;;;;;;;:::o;14580:573::-;14683:15;14700:23;14725:12;14739:23;14764:12;14780:19;14791:7;14780:10;:19::i;:::-;14682:117;;;;;;;;;;14846:7;14828;:15;14836:6;14828:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;14810:7;:15;14818:6;14810:15;;;;;;;;;;;;;;;:43;;;;14900:7;14882;:15;14890:6;14882:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;14864:7;:15;14872:6;14864:15;;;;;;;;;;;;;;;:43;;;;14960:15;14939:7;:18;14947:9;14939:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;14918:7;:18;14926:9;14918:18;;;;;;;;;;;;;;;:57;;;;15028:15;15007:7;:18;15015:9;15007:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;14986:7;:18;14994:9;14986:18;;;;;;;;;;;;;;;:57;;;;15062:23;15074:4;15080;15062:11;:23::i;:::-;15118:9;15101:44;;15110:6;15101:44;;;15129:15;15101:44;;;;;;:::i;:::-;;;;;;;;14580:573;;;;;;;;:::o;16477:554::-;16527:7;16536;16556:15;16574:7;;16556:25;;16592:15;6854:28;16592:25;;16639:9;16634:283;16658:9;:16;;;;16654:1;:20;16634:283;;;16724:7;16700;:21;16708:9;16718:1;16708:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16700:21;;;;;;;;;;;;;;;;:31;:66;;;;16759:7;16735;:21;16743:9;16753:1;16743:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16735:21;;;;;;;;;;;;;;;;:31;16700:66;16696:97;;;16776:7;;6854:28;16768:25;;;;;;;;;16696:97;16828:7;:21;16836:9;16846:1;16836:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16828:21;;;;;;;;;;;;;;;;16818:7;:31;;;;:::i;:::-;16808:41;;16884:7;:21;16892:9;16902:1;16892:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16884:21;;;;;;;;;;;;;;;;16874:7;:31;;;;:::i;:::-;16864:41;;16676:3;;;;;:::i;:::-;;;;16634:283;;;;6854:28;16942:7;;:17;;;;:::i;:::-;16931:7;:29;16927:60;;;16970:7;;6854:28;16962:25;;;;;;;;16927:60;17006:7;17015;16998:25;;;;;;16477:554;;;:::o;15161:141::-;15249:4;15239:7;;:14;;;;:::i;:::-;15229:7;:24;;;;15290:4;15277:10;;:17;;;;:::i;:::-;15264:10;:30;;;;15161:141;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;;;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;;;;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:407::-;;;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1859:1;1884:53;1929:7;1920:6;1909:9;1905:22;1884:53;:::i;:::-;1874:63;;1830:117;1986:2;2012:53;2057:7;2048:6;2037:9;2033:22;2012:53;:::i;:::-;2002:63;;1957:118;1758:324;;;;;:::o;2088:262::-;;2196:2;2184:9;2175:7;2171:23;2167:32;2164:2;;;2212:1;2209;2202:12;2164:2;2255:1;2280:53;2325:7;2316:6;2305:9;2301:22;2280:53;:::i;:::-;2270:63;;2226:117;2154:196;;;;:::o;2356:401::-;;;2478:2;2466:9;2457:7;2453:23;2449:32;2446:2;;;2494:1;2491;2484:12;2446:2;2537:1;2562:53;2607:7;2598:6;2587:9;2583:22;2562:53;:::i;:::-;2552:63;;2508:117;2664:2;2690:50;2732:7;2723:6;2712:9;2708:22;2690:50;:::i;:::-;2680:60;;2635:115;2436:321;;;;;:::o;2763:118::-;2850:24;2868:5;2850:24;:::i;:::-;2845:3;2838:37;2828:53;;:::o;2887:109::-;2968:21;2983:5;2968:21;:::i;:::-;2963:3;2956:34;2946:50;;:::o;3002:364::-;;3118:39;3151:5;3118:39;:::i;:::-;3173:71;3237:6;3232:3;3173:71;:::i;:::-;3166:78;;3253:52;3298:6;3293:3;3286:4;3279:5;3275:16;3253:52;:::i;:::-;3330:29;3352:6;3330:29;:::i;:::-;3325:3;3321:39;3314:46;;3094:272;;;;;:::o;3372:367::-;;3535:67;3599:2;3594:3;3535:67;:::i;:::-;3528:74;;3632:34;3628:1;3623:3;3619:11;3612:55;3698:5;3693:2;3688:3;3684:12;3677:27;3730:2;3725:3;3721:12;3714:19;;3518:221;;;:::o;3745:374::-;;3908:67;3972:2;3967:3;3908:67;:::i;:::-;3901:74;;4005:34;4001:1;3996:3;3992:11;3985:55;4071:12;4066:2;4061:3;4057:12;4050:34;4110:2;4105:3;4101:12;4094:19;;3891:228;;;:::o;4125:370::-;;4288:67;4352:2;4347:3;4288:67;:::i;:::-;4281:74;;4385:34;4381:1;4376:3;4372:11;4365:55;4451:8;4446:2;4441:3;4437:12;4430:30;4486:2;4481:3;4477:12;4470:19;;4271:224;;;:::o;4501:366::-;;4664:67;4728:2;4723:3;4664:67;:::i;:::-;4657:74;;4761:34;4757:1;4752:3;4748:11;4741:55;4827:4;4822:2;4817:3;4813:12;4806:26;4858:2;4853:3;4849:12;4842:19;;4647:220;;;:::o;4873:325::-;;5036:67;5100:2;5095:3;5036:67;:::i;:::-;5029:74;;5133:29;5129:1;5124:3;5120:11;5113:50;5189:2;5184:3;5180:12;5173:19;;5019:179;;;:::o;5204:329::-;;5367:67;5431:2;5426:3;5367:67;:::i;:::-;5360:74;;5464:33;5460:1;5455:3;5451:11;5444:54;5524:2;5519:3;5515:12;5508:19;;5350:183;;;:::o;5539:372::-;;5702:67;5766:2;5761:3;5702:67;:::i;:::-;5695:74;;5799:34;5795:1;5790:3;5786:11;5779:55;5865:10;5860:2;5855:3;5851:12;5844:32;5902:2;5897:3;5893:12;5886:19;;5685:226;;;:::o;5917:372::-;;6080:67;6144:2;6139:3;6080:67;:::i;:::-;6073:74;;6177:34;6173:1;6168:3;6164:11;6157:55;6243:10;6238:2;6233:3;6229:12;6222:32;6280:2;6275:3;6271:12;6264:19;;6063:226;;;:::o;6295:330::-;;6458:67;6522:2;6517:3;6458:67;:::i;:::-;6451:74;;6555:34;6551:1;6546:3;6542:11;6535:55;6616:2;6611:3;6607:12;6600:19;;6441:184;;;:::o;6631:373::-;;6794:67;6858:2;6853:3;6794:67;:::i;:::-;6787:74;;6891:34;6887:1;6882:3;6878:11;6871:55;6957:11;6952:2;6947:3;6943:12;6936:33;6995:2;6990:3;6986:12;6979:19;;6777:227;;;:::o;7010:369::-;;7173:67;7237:2;7232:3;7173:67;:::i;:::-;7166:74;;7270:34;7266:1;7261:3;7257:11;7250:55;7336:7;7331:2;7326:3;7322:12;7315:29;7370:2;7365:3;7361:12;7354:19;;7156:223;;;:::o;7385:368::-;;7548:67;7612:2;7607:3;7548:67;:::i;:::-;7541:74;;7645:34;7641:1;7636:3;7632:11;7625:55;7711:6;7706:2;7701:3;7697:12;7690:28;7744:2;7739:3;7735:12;7728:19;;7531:222;;;:::o;7759:376::-;;7922:67;7986:2;7981:3;7922:67;:::i;:::-;7915:74;;8019:34;8015:1;8010:3;8006:11;7999:55;8085:14;8080:2;8075:3;8071:12;8064:36;8126:2;8121:3;8117:12;8110:19;;7905:230;;;:::o;8141:369::-;;8304:67;8368:2;8363:3;8304:67;:::i;:::-;8297:74;;8401:34;8397:1;8392:3;8388:11;8381:55;8467:7;8462:2;8457:3;8453:12;8446:29;8501:2;8496:3;8492:12;8485:19;;8287:223;;;:::o;8516:118::-;8603:24;8621:5;8603:24;:::i;:::-;8598:3;8591:37;8581:53;;:::o;8640:112::-;8723:22;8739:5;8723:22;:::i;:::-;8718:3;8711:35;8701:51;;:::o;8758:222::-;;8889:2;8878:9;8874:18;8866:26;;8902:71;8970:1;8959:9;8955:17;8946:6;8902:71;:::i;:::-;8856:124;;;;:::o;8986:210::-;;9111:2;9100:9;9096:18;9088:26;;9124:65;9186:1;9175:9;9171:17;9162:6;9124:65;:::i;:::-;9078:118;;;;:::o;9202:313::-;;9353:2;9342:9;9338:18;9330:26;;9402:9;9396:4;9392:20;9388:1;9377:9;9373:17;9366:47;9430:78;9503:4;9494:6;9430:78;:::i;:::-;9422:86;;9320:195;;;;:::o;9521:419::-;;9725:2;9714:9;9710:18;9702:26;;9774:9;9768:4;9764:20;9760:1;9749:9;9745:17;9738:47;9802:131;9928:4;9802:131;:::i;:::-;9794:139;;9692:248;;;:::o;9946:419::-;;10150:2;10139:9;10135:18;10127:26;;10199:9;10193:4;10189:20;10185:1;10174:9;10170:17;10163:47;10227:131;10353:4;10227:131;:::i;:::-;10219:139;;10117:248;;;:::o;10371:419::-;;10575:2;10564:9;10560:18;10552:26;;10624:9;10618:4;10614:20;10610:1;10599:9;10595:17;10588:47;10652:131;10778:4;10652:131;:::i;:::-;10644:139;;10542:248;;;:::o;10796:419::-;;11000:2;10989:9;10985:18;10977:26;;11049:9;11043:4;11039:20;11035:1;11024:9;11020:17;11013:47;11077:131;11203:4;11077:131;:::i;:::-;11069:139;;10967:248;;;:::o;11221:419::-;;11425:2;11414:9;11410:18;11402:26;;11474:9;11468:4;11464:20;11460:1;11449:9;11445:17;11438:47;11502:131;11628:4;11502:131;:::i;:::-;11494:139;;11392:248;;;:::o;11646:419::-;;11850:2;11839:9;11835:18;11827:26;;11899:9;11893:4;11889:20;11885:1;11874:9;11870:17;11863:47;11927:131;12053:4;11927:131;:::i;:::-;11919:139;;11817:248;;;:::o;12071:419::-;;12275:2;12264:9;12260:18;12252:26;;12324:9;12318:4;12314:20;12310:1;12299:9;12295:17;12288:47;12352:131;12478:4;12352:131;:::i;:::-;12344:139;;12242:248;;;:::o;12496:419::-;;12700:2;12689:9;12685:18;12677:26;;12749:9;12743:4;12739:20;12735:1;12724:9;12720:17;12713:47;12777:131;12903:4;12777:131;:::i;:::-;12769:139;;12667:248;;;:::o;12921:419::-;;13125:2;13114:9;13110:18;13102:26;;13174:9;13168:4;13164:20;13160:1;13149:9;13145:17;13138:47;13202:131;13328:4;13202:131;:::i;:::-;13194:139;;13092:248;;;:::o;13346:419::-;;13550:2;13539:9;13535:18;13527:26;;13599:9;13593:4;13589:20;13585:1;13574:9;13570:17;13563:47;13627:131;13753:4;13627:131;:::i;:::-;13619:139;;13517:248;;;:::o;13771:419::-;;13975:2;13964:9;13960:18;13952:26;;14024:9;14018:4;14014:20;14010:1;13999:9;13995:17;13988:47;14052:131;14178:4;14052:131;:::i;:::-;14044:139;;13942:248;;;:::o;14196:419::-;;14400:2;14389:9;14385:18;14377:26;;14449:9;14443:4;14439:20;14435:1;14424:9;14420:17;14413:47;14477:131;14603:4;14477:131;:::i;:::-;14469:139;;14367:248;;;:::o;14621:419::-;;14825:2;14814:9;14810:18;14802:26;;14874:9;14868:4;14864:20;14860:1;14849:9;14845:17;14838:47;14902:131;15028:4;14902:131;:::i;:::-;14894:139;;14792:248;;;:::o;15046:419::-;;15250:2;15239:9;15235:18;15227:26;;15299:9;15293:4;15289:20;15285:1;15274:9;15270:17;15263:47;15327:131;15453:4;15327:131;:::i;:::-;15319:139;;15217:248;;;:::o;15471:222::-;;15602:2;15591:9;15587:18;15579:26;;15615:71;15683:1;15672:9;15668:17;15659:6;15615:71;:::i;:::-;15569:124;;;;:::o;15699:214::-;;15826:2;15815:9;15811:18;15803:26;;15839:67;15903:1;15892:9;15888:17;15879:6;15839:67;:::i;:::-;15793:120;;;;:::o;15919:99::-;;16005:5;15999:12;15989:22;;15978:40;;;:::o;16024:169::-;;16142:6;16137:3;16130:19;16182:4;16177:3;16173:14;16158:29;;16120:73;;;;:::o;16199:305::-;;16258:20;16276:1;16258:20;:::i;:::-;16253:25;;16292:20;16310:1;16292:20;:::i;:::-;16287:25;;16446:1;16378:66;16374:74;16371:1;16368:81;16365:2;;;16452:18;;:::i;:::-;16365:2;16496:1;16493;16489:9;16482:16;;16243:261;;;;:::o;16510:185::-;;16567:20;16585:1;16567:20;:::i;:::-;16562:25;;16601:20;16619:1;16601:20;:::i;:::-;16596:25;;16640:1;16630:2;;16645:18;;:::i;:::-;16630:2;16687:1;16684;16680:9;16675:14;;16552:143;;;;:::o;16701:348::-;;16764:20;16782:1;16764:20;:::i;:::-;16759:25;;16798:20;16816:1;16798:20;:::i;:::-;16793:25;;16986:1;16918:66;16914:74;16911:1;16908:81;16903:1;16896:9;16889:17;16885:105;16882:2;;;16993:18;;:::i;:::-;16882:2;17041:1;17038;17034:9;17023:20;;16749:300;;;;:::o;17055:191::-;;17115:20;17133:1;17115:20;:::i;:::-;17110:25;;17149:20;17167:1;17149:20;:::i;:::-;17144:25;;17188:1;17185;17182:8;17179:2;;;17193:18;;:::i;:::-;17179:2;17238:1;17235;17231:9;17223:17;;17100:146;;;;:::o;17252:96::-;;17318:24;17336:5;17318:24;:::i;:::-;17307:35;;17297:51;;;:::o;17354:90::-;;17431:5;17424:13;17417:21;17406:32;;17396:48;;;:::o;17450:126::-;;17527:42;17520:5;17516:54;17505:65;;17495:81;;;:::o;17582:77::-;;17648:5;17637:16;;17627:32;;;:::o;17665:86::-;;17740:4;17733:5;17729:16;17718:27;;17708:43;;;:::o;17757:307::-;17825:1;17835:113;17849:6;17846:1;17843:13;17835:113;;;17934:1;17929:3;17925:11;17919:18;17915:1;17910:3;17906:11;17899:39;17871:2;17868:1;17864:10;17859:15;;17835:113;;;17966:6;17963:1;17960:13;17957:2;;;18046:1;18037:6;18032:3;18028:16;18021:27;17957:2;17806:258;;;;:::o;18070:320::-;;18151:1;18145:4;18141:12;18131:22;;18198:1;18192:4;18188:12;18219:18;18209:2;;18275:4;18267:6;18263:17;18253:27;;18209:2;18337;18329:6;18326:14;18306:18;18303:38;18300:2;;;18356:18;;:::i;:::-;18300:2;18121:269;;;;:::o;18396:233::-;;18458:24;18476:5;18458:24;:::i;:::-;18449:33;;18504:66;18497:5;18494:77;18491:2;;;18574:18;;:::i;:::-;18491:2;18621:1;18614:5;18610:13;18603:20;;18439:190;;;:::o;18635:180::-;18683:77;18680:1;18673:88;18780:4;18777:1;18770:15;18804:4;18801:1;18794:15;18821:180;18869:77;18866:1;18859:88;18966:4;18963:1;18956:15;18990:4;18987:1;18980:15;19007:180;19055:77;19052:1;19045:88;19152:4;19149:1;19142:15;19176:4;19173:1;19166:15;19193:102;;19285:2;19281:7;19276:2;19269:5;19265:14;19261:28;19251:38;;19241:54;;;:::o;19301:122::-;19374:24;19392:5;19374:24;:::i;:::-;19367:5;19364:35;19354:2;;19413:1;19410;19403:12;19354:2;19344:79;:::o;19429:116::-;19499:21;19514:5;19499:21;:::i;:::-;19492:5;19489:32;19479:2;;19535:1;19532;19525:12;19479:2;19469:76;:::o;19551:122::-;19624:24;19642:5;19624:24;:::i;:::-;19617:5;19614:35;19604:2;;19663:1;19660;19653:12;19604:2;19594:79;:::o

Swarm Source

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