ETH Price: $3,401.20 (+2.14%)

Token

Pekker Token (PKR)
 

Overview

Max Total Supply

100,000,000,000,000,000 PKR

Holders

481 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
501,376,452,622,663.412885199 PKR

Value
$0.00
0x5393a756e4bc653d7e81ac8ba24b120b91906c1c
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Pekkers’s deflationary mechanisms include a burn and redistribution system. 1% of each transaction is burned, and 1% is distributed as rewards to holders automatically and in real-time.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PekkerToken

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-06-09
*/

/**
 *Submitted for verification at Etherscan.io on 2021-06-09
*/

// 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 PekkerToken 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 = 'Pekker Token';
    string private _symbol = 'PKR';
    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) * 2);
        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"}]

60806040526a52b7d2dcc80cd2e40000006000196200001f9190620003f3565b6000196200002e919062000378565b6006556040518060400160405280600c81526020017f50656b6b657220546f6b656e0000000000000000000000000000000000000000815250600890805190602001906200007e9291906200029a565b506040518060400160405280600381526020017f504b52000000000000000000000000000000000000000000000000000000000081525060099080519060200190620000cc9291906200029a565b506009600a60006101000a81548160ff021916908360ff16021790555069152d02c7e14af6800000600b553480156200010457600080fd5b506000620001176200029260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460016000620001cc6200029260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021a6200029260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a52b7d2dcc80cd2e40000006040516200028491906200035b565b60405180910390a3620004b8565b600033905090565b828054620002a890620003bd565b90600052602060002090601f016020900481019282620002cc576000855562000318565b82601f10620002e757805160ff191683800117855562000318565b8280016001018555821562000318579182015b8281111562000317578251825591602001919060010190620002fa565b5b5090506200032791906200032b565b5090565b5b80821115620003465760008160009055506001016200032c565b5090565b6200035581620003b3565b82525050565b60006020820190506200037260008301846200034a565b92915050565b60006200038582620003b3565b91506200039283620003b3565b925082821015620003a857620003a76200042b565b5b828203905092915050565b6000819050919050565b60006002820490506001821680620003d657607f821691505b60208210811415620003ed57620003ec62000489565b5b50919050565b60006200040082620003b3565b91506200040d83620003b3565b92508262000420576200041f6200045a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6139a580620004c86000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063cba0e9961161007c578063cba0e996146103ca578063d543dbeb146103fa578063dd62ed3e14610416578063f2cc0c1814610446578063f2fde38b14610462578063f84354f11461047e5761014d565b8063715018a6146103065780637d1db4a5146103105780638da5cb5b1461032e57806395d89b411461034c578063a457c2d71461036a578063a9059cbb1461039a5761014d565b806323b872dd1161011557806323b872dd146101f85780632d83811914610228578063313ce5671461025857806339509351146102765780634549b039146102a657806370a08231146102d65761014d565b8063053ab1821461015257806306fdde031461016e578063095ea7b31461018c57806313114a9d146101bc57806318160ddd146101da575b600080fd5b61016c60048036038101906101679190612d66565b61049a565b005b6101766105ff565b6040516101839190613060565b60405180910390f35b6101a660048036038101906101a19190612d2a565b610691565b6040516101b39190613045565b60405180910390f35b6101c46106af565b6040516101d19190613242565b60405180910390f35b6101e26106b9565b6040516101ef9190613242565b60405180910390f35b610212600480360381019061020d9190612cdb565b6106cc565b60405161021f9190613045565b60405180910390f35b610242600480360381019061023d9190612d66565b61084a565b60405161024f9190613242565b60405180910390f35b6102606108b1565b60405161026d919061325d565b60405180910390f35b610290600480360381019061028b9190612d2a565b6108c8565b60405161029d9190613045565b60405180910390f35b6102c060048036038101906102bb9190612d8f565b610974565b6040516102cd9190613242565b60405180910390f35b6102f060048036038101906102eb9190612c76565b6109ff565b6040516102fd9190613242565b60405180910390f35b61030e610aea565b005b610318610c24565b6040516103259190613242565b60405180910390f35b610336610c2a565b604051610343919061302a565b60405180910390f35b610354610c53565b6040516103619190613060565b60405180910390f35b610384600480360381019061037f9190612d2a565b610ce5565b6040516103919190613045565b60405180910390f35b6103b460048036038101906103af9190612d2a565b610e57565b6040516103c19190613045565b60405180910390f35b6103e460048036038101906103df9190612c76565b610e75565b6040516103f19190613045565b60405180910390f35b610414600480360381019061040f9190612d66565b610ecb565b005b610430600480360381019061042b9190612c9f565b610f73565b60405161043d9190613242565b60405180910390f35b610460600480360381019061045b9190612c76565b610ffa565b005b61047c60048036038101906104779190612c76565b611295565b005b61049860048036038101906104939190612c76565b61143e565b005b60006104a461180c565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052a90613202565b60405180910390fd5b600061053e83611814565b50505050905080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461058f9190613375565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806006546105e09190613375565b600681905550826007546105f49190613294565b600781905550505050565b60606008805461060e90613431565b80601f016020809104026020016040519081016040528092919081815260200182805461063a90613431565b80156106875780601f1061065c57610100808354040283529160200191610687565b820191906000526020600020905b81548152906001019060200180831161066a57829003601f168201915b5050505050905090565b60006106a561069e61180c565b848461186c565b6001905092915050565b6000600754905090565b60006a52b7d2dcc80cd2e4000000905090565b60006106d9848484611a37565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061072261180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690613162565b60405180910390fd5b61083f846107ab61180c565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107f561180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461083a9190613375565b61186c565b600190509392505050565b6000600654821115610891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610888906130a2565b60405180910390fd5b600061089b611f0f565b905080836108a991906132ea565b915050919050565b6000600a60009054906101000a900460ff16905090565b600061096a6108d561180c565b8484600360006108e361180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109659190613294565b61186c565b6001905092915050565b60006a52b7d2dcc80cd2e40000008311156109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90613122565b60405180910390fd5b816109e35760006109d484611814565b505050509050809150506109f9565b60006109ee84611814565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a9a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ae5565b610ae2600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461084a565b90505b919050565b610af261180c565b73ffffffffffffffffffffffffffffffffffffffff16610b10610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d90613182565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610c6290613431565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8e90613431565b8015610cdb5780601f10610cb057610100808354040283529160200191610cdb565b820191906000526020600020905b815481529060010190602001808311610cbe57829003601f168201915b5050505050905090565b600060036000610cf361180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da490613222565b60405180910390fd5b610e4d610db861180c565b848460036000610dc661180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e489190613375565b61186c565b6001905092915050565b6000610e6b610e6461180c565b8484611a37565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ed361180c565b73ffffffffffffffffffffffffffffffffffffffff16610ef1610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e90613182565b60405180910390fd5b6064816a52b7d2dcc80cd2e4000000610f60919061331b565b610f6a91906132ea565b600b8190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61100261180c565b73ffffffffffffffffffffffffffffffffffffffff16611020610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d90613182565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613102565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156111d757611193600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461084a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61129d61180c565b73ffffffffffffffffffffffffffffffffffffffff166112bb610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130890613182565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611381576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611378906130c2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61144661180c565b73ffffffffffffffffffffffffffffffffffffffff16611464610c2a565b73ffffffffffffffffffffffffffffffffffffffff16146114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b190613182565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613102565b60405180910390fd5b60005b600580549050811015611808578173ffffffffffffffffffffffffffffffffffffffff16600582815481106115a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156117f557600560016005805490506116029190613375565b81548110611639577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061169e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806117bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611808565b808061180090613463565b915050611549565b5050565b600033905090565b600080600080600080600061182888611f33565b915091506000611836611f0f565b905060008060006118488c8686611f70565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d3906131e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561194c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611943906130e2565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a2a9190613242565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e906131c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0e90613082565b60405180910390fd5b60008111611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b51906131a2565b60405180910390fd5b611b62610c2a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bd05750611ba0610c2a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c1b57600b54811115611c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1190613142565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611cbe5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cd357611cce838383611fb9565b611f0a565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d765750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d8b57611d868383836121f7565b611f09565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e2f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e4457611e3f838383612435565b611f08565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ee65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611efb57611ef68383836125e5565b611f07565b611f06838383612435565b5b5b5b5b505050565b6000806000611f1c6128b1565b915091508082611f2c91906132ea565b9250505090565b60008060006002606485611f4791906132ea565b611f51919061331b565b905060008185611f619190613375565b90508082935093505050915091565b6000806000808487611f82919061331b565b905060008587611f92919061331b565b905060008183611fa29190613375565b905082818395509550955050505093509350939050565b6000806000806000611fca86611814565b9450945094509450945085600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201f9190613375565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ad9190613375565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213b9190613294565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121888382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121e59190613242565b60405180910390a35050505050505050565b600080600080600061220886611814565b9450945094509450945084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225d9190613375565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122eb9190613294565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123799190613294565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123c68382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124239190613242565b60405180910390a35050505050505050565b600080600080600061244686611814565b9450945094509450945084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249b9190613375565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125299190613294565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125768382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125d39190613242565b60405180910390a35050505050505050565b60008060008060006125f686611814565b9450945094509450945085600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264b9190613375565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d99190613375565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127679190613294565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f59190613294565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128428382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161289f9190613242565b60405180910390a35050505050505050565b6000806000600654905060006a52b7d2dcc80cd2e4000000905060005b600580549050811015612bc35782600160006005848154811061291a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612a2e57508160026000600584815481106129c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612a4e576006546a52b7d2dcc80cd2e400000094509450505050612c07565b6001600060058381548110612a8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612afd9190613375565b92506002600060058381548110612b3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612bae9190613375565b91508080612bbb90613463565b9150506128ce565b506a52b7d2dcc80cd2e4000000600654612bdd91906132ea565b821015612bfe576006546a52b7d2dcc80cd2e4000000935093505050612c07565b81819350935050505b9091565b81600654612c199190613375565b60068190555080600754612c2d9190613294565b6007819055505050565b600081359050612c468161392a565b92915050565b600081359050612c5b81613941565b92915050565b600081359050612c7081613958565b92915050565b600060208284031215612c8857600080fd5b6000612c9684828501612c37565b91505092915050565b60008060408385031215612cb257600080fd5b6000612cc085828601612c37565b9250506020612cd185828601612c37565b9150509250929050565b600080600060608486031215612cf057600080fd5b6000612cfe86828701612c37565b9350506020612d0f86828701612c37565b9250506040612d2086828701612c61565b9150509250925092565b60008060408385031215612d3d57600080fd5b6000612d4b85828601612c37565b9250506020612d5c85828601612c61565b9150509250929050565b600060208284031215612d7857600080fd5b6000612d8684828501612c61565b91505092915050565b60008060408385031215612da257600080fd5b6000612db085828601612c61565b9250506020612dc185828601612c4c565b9150509250929050565b612dd4816133a9565b82525050565b612de3816133bb565b82525050565b6000612df482613278565b612dfe8185613283565b9350612e0e8185602086016133fe565b612e1781613539565b840191505092915050565b6000612e2f602383613283565b9150612e3a8261354a565b604082019050919050565b6000612e52602a83613283565b9150612e5d82613599565b604082019050919050565b6000612e75602683613283565b9150612e80826135e8565b604082019050919050565b6000612e98602283613283565b9150612ea382613637565b604082019050919050565b6000612ebb601b83613283565b9150612ec682613686565b602082019050919050565b6000612ede601f83613283565b9150612ee9826136af565b602082019050919050565b6000612f01602883613283565b9150612f0c826136d8565b604082019050919050565b6000612f24602883613283565b9150612f2f82613727565b604082019050919050565b6000612f47602083613283565b9150612f5282613776565b602082019050919050565b6000612f6a602983613283565b9150612f758261379f565b604082019050919050565b6000612f8d602583613283565b9150612f98826137ee565b604082019050919050565b6000612fb0602483613283565b9150612fbb8261383d565b604082019050919050565b6000612fd3602c83613283565b9150612fde8261388c565b604082019050919050565b6000612ff6602583613283565b9150613001826138db565b604082019050919050565b613015816133e7565b82525050565b613024816133f1565b82525050565b600060208201905061303f6000830184612dcb565b92915050565b600060208201905061305a6000830184612dda565b92915050565b6000602082019050818103600083015261307a8184612de9565b905092915050565b6000602082019050818103600083015261309b81612e22565b9050919050565b600060208201905081810360008301526130bb81612e45565b9050919050565b600060208201905081810360008301526130db81612e68565b9050919050565b600060208201905081810360008301526130fb81612e8b565b9050919050565b6000602082019050818103600083015261311b81612eae565b9050919050565b6000602082019050818103600083015261313b81612ed1565b9050919050565b6000602082019050818103600083015261315b81612ef4565b9050919050565b6000602082019050818103600083015261317b81612f17565b9050919050565b6000602082019050818103600083015261319b81612f3a565b9050919050565b600060208201905081810360008301526131bb81612f5d565b9050919050565b600060208201905081810360008301526131db81612f80565b9050919050565b600060208201905081810360008301526131fb81612fa3565b9050919050565b6000602082019050818103600083015261321b81612fc6565b9050919050565b6000602082019050818103600083015261323b81612fe9565b9050919050565b6000602082019050613257600083018461300c565b92915050565b6000602082019050613272600083018461301b565b92915050565b600081519050919050565b600082825260208201905092915050565b600061329f826133e7565b91506132aa836133e7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132df576132de6134ac565b5b828201905092915050565b60006132f5826133e7565b9150613300836133e7565b9250826133105761330f6134db565b5b828204905092915050565b6000613326826133e7565b9150613331836133e7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561336a576133696134ac565b5b828202905092915050565b6000613380826133e7565b915061338b836133e7565b92508282101561339e5761339d6134ac565b5b828203905092915050565b60006133b4826133c7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561341c578082015181840152602081019050613401565b8381111561342b576000848401525b50505050565b6000600282049050600182168061344957607f821691505b6020821081141561345d5761345c61350a565b5b50919050565b600061346e826133e7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134a1576134a06134ac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b613933816133a9565b811461393e57600080fd5b50565b61394a816133bb565b811461395557600080fd5b50565b613961816133e7565b811461396c57600080fd5b5056fea264697066735822122078939c10cfaa76ae6f17b9b3c74277b98eee81ec28ff800d4a7b85b40943a19964736f6c63430008010033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063cba0e9961161007c578063cba0e996146103ca578063d543dbeb146103fa578063dd62ed3e14610416578063f2cc0c1814610446578063f2fde38b14610462578063f84354f11461047e5761014d565b8063715018a6146103065780637d1db4a5146103105780638da5cb5b1461032e57806395d89b411461034c578063a457c2d71461036a578063a9059cbb1461039a5761014d565b806323b872dd1161011557806323b872dd146101f85780632d83811914610228578063313ce5671461025857806339509351146102765780634549b039146102a657806370a08231146102d65761014d565b8063053ab1821461015257806306fdde031461016e578063095ea7b31461018c57806313114a9d146101bc57806318160ddd146101da575b600080fd5b61016c60048036038101906101679190612d66565b61049a565b005b6101766105ff565b6040516101839190613060565b60405180910390f35b6101a660048036038101906101a19190612d2a565b610691565b6040516101b39190613045565b60405180910390f35b6101c46106af565b6040516101d19190613242565b60405180910390f35b6101e26106b9565b6040516101ef9190613242565b60405180910390f35b610212600480360381019061020d9190612cdb565b6106cc565b60405161021f9190613045565b60405180910390f35b610242600480360381019061023d9190612d66565b61084a565b60405161024f9190613242565b60405180910390f35b6102606108b1565b60405161026d919061325d565b60405180910390f35b610290600480360381019061028b9190612d2a565b6108c8565b60405161029d9190613045565b60405180910390f35b6102c060048036038101906102bb9190612d8f565b610974565b6040516102cd9190613242565b60405180910390f35b6102f060048036038101906102eb9190612c76565b6109ff565b6040516102fd9190613242565b60405180910390f35b61030e610aea565b005b610318610c24565b6040516103259190613242565b60405180910390f35b610336610c2a565b604051610343919061302a565b60405180910390f35b610354610c53565b6040516103619190613060565b60405180910390f35b610384600480360381019061037f9190612d2a565b610ce5565b6040516103919190613045565b60405180910390f35b6103b460048036038101906103af9190612d2a565b610e57565b6040516103c19190613045565b60405180910390f35b6103e460048036038101906103df9190612c76565b610e75565b6040516103f19190613045565b60405180910390f35b610414600480360381019061040f9190612d66565b610ecb565b005b610430600480360381019061042b9190612c9f565b610f73565b60405161043d9190613242565b60405180910390f35b610460600480360381019061045b9190612c76565b610ffa565b005b61047c60048036038101906104779190612c76565b611295565b005b61049860048036038101906104939190612c76565b61143e565b005b60006104a461180c565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052a90613202565b60405180910390fd5b600061053e83611814565b50505050905080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461058f9190613375565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806006546105e09190613375565b600681905550826007546105f49190613294565b600781905550505050565b60606008805461060e90613431565b80601f016020809104026020016040519081016040528092919081815260200182805461063a90613431565b80156106875780601f1061065c57610100808354040283529160200191610687565b820191906000526020600020905b81548152906001019060200180831161066a57829003601f168201915b5050505050905090565b60006106a561069e61180c565b848461186c565b6001905092915050565b6000600754905090565b60006a52b7d2dcc80cd2e4000000905090565b60006106d9848484611a37565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061072261180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690613162565b60405180910390fd5b61083f846107ab61180c565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107f561180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461083a9190613375565b61186c565b600190509392505050565b6000600654821115610891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610888906130a2565b60405180910390fd5b600061089b611f0f565b905080836108a991906132ea565b915050919050565b6000600a60009054906101000a900460ff16905090565b600061096a6108d561180c565b8484600360006108e361180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109659190613294565b61186c565b6001905092915050565b60006a52b7d2dcc80cd2e40000008311156109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90613122565b60405180910390fd5b816109e35760006109d484611814565b505050509050809150506109f9565b60006109ee84611814565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a9a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ae5565b610ae2600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461084a565b90505b919050565b610af261180c565b73ffffffffffffffffffffffffffffffffffffffff16610b10610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d90613182565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610c6290613431565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8e90613431565b8015610cdb5780601f10610cb057610100808354040283529160200191610cdb565b820191906000526020600020905b815481529060010190602001808311610cbe57829003601f168201915b5050505050905090565b600060036000610cf361180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da490613222565b60405180910390fd5b610e4d610db861180c565b848460036000610dc661180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e489190613375565b61186c565b6001905092915050565b6000610e6b610e6461180c565b8484611a37565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ed361180c565b73ffffffffffffffffffffffffffffffffffffffff16610ef1610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e90613182565b60405180910390fd5b6064816a52b7d2dcc80cd2e4000000610f60919061331b565b610f6a91906132ea565b600b8190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61100261180c565b73ffffffffffffffffffffffffffffffffffffffff16611020610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d90613182565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613102565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156111d757611193600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461084a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61129d61180c565b73ffffffffffffffffffffffffffffffffffffffff166112bb610c2a565b73ffffffffffffffffffffffffffffffffffffffff1614611311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130890613182565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611381576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611378906130c2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61144661180c565b73ffffffffffffffffffffffffffffffffffffffff16611464610c2a565b73ffffffffffffffffffffffffffffffffffffffff16146114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b190613182565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613102565b60405180910390fd5b60005b600580549050811015611808578173ffffffffffffffffffffffffffffffffffffffff16600582815481106115a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156117f557600560016005805490506116029190613375565b81548110611639577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061169e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806117bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611808565b808061180090613463565b915050611549565b5050565b600033905090565b600080600080600080600061182888611f33565b915091506000611836611f0f565b905060008060006118488c8686611f70565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d3906131e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561194c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611943906130e2565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a2a9190613242565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e906131c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0e90613082565b60405180910390fd5b60008111611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b51906131a2565b60405180910390fd5b611b62610c2a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bd05750611ba0610c2a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c1b57600b54811115611c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1190613142565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611cbe5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cd357611cce838383611fb9565b611f0a565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d765750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d8b57611d868383836121f7565b611f09565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e2f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e4457611e3f838383612435565b611f08565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ee65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611efb57611ef68383836125e5565b611f07565b611f06838383612435565b5b5b5b5b505050565b6000806000611f1c6128b1565b915091508082611f2c91906132ea565b9250505090565b60008060006002606485611f4791906132ea565b611f51919061331b565b905060008185611f619190613375565b90508082935093505050915091565b6000806000808487611f82919061331b565b905060008587611f92919061331b565b905060008183611fa29190613375565b905082818395509550955050505093509350939050565b6000806000806000611fca86611814565b9450945094509450945085600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201f9190613375565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ad9190613375565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213b9190613294565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121888382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121e59190613242565b60405180910390a35050505050505050565b600080600080600061220886611814565b9450945094509450945084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225d9190613375565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122eb9190613294565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123799190613294565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123c68382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124239190613242565b60405180910390a35050505050505050565b600080600080600061244686611814565b9450945094509450945084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249b9190613375565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125299190613294565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125768382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125d39190613242565b60405180910390a35050505050505050565b60008060008060006125f686611814565b9450945094509450945085600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264b9190613375565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d99190613375565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127679190613294565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f59190613294565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128428382612c0b565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161289f9190613242565b60405180910390a35050505050505050565b6000806000600654905060006a52b7d2dcc80cd2e4000000905060005b600580549050811015612bc35782600160006005848154811061291a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612a2e57508160026000600584815481106129c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612a4e576006546a52b7d2dcc80cd2e400000094509450505050612c07565b6001600060058381548110612a8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612afd9190613375565b92506002600060058381548110612b3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612bae9190613375565b91508080612bbb90613463565b9150506128ce565b506a52b7d2dcc80cd2e4000000600654612bdd91906132ea565b821015612bfe576006546a52b7d2dcc80cd2e4000000935093505050612c07565b81819350935050505b9091565b81600654612c199190613375565b60068190555080600754612c2d9190613294565b6007819055505050565b600081359050612c468161392a565b92915050565b600081359050612c5b81613941565b92915050565b600081359050612c7081613958565b92915050565b600060208284031215612c8857600080fd5b6000612c9684828501612c37565b91505092915050565b60008060408385031215612cb257600080fd5b6000612cc085828601612c37565b9250506020612cd185828601612c37565b9150509250929050565b600080600060608486031215612cf057600080fd5b6000612cfe86828701612c37565b9350506020612d0f86828701612c37565b9250506040612d2086828701612c61565b9150509250925092565b60008060408385031215612d3d57600080fd5b6000612d4b85828601612c37565b9250506020612d5c85828601612c61565b9150509250929050565b600060208284031215612d7857600080fd5b6000612d8684828501612c61565b91505092915050565b60008060408385031215612da257600080fd5b6000612db085828601612c61565b9250506020612dc185828601612c4c565b9150509250929050565b612dd4816133a9565b82525050565b612de3816133bb565b82525050565b6000612df482613278565b612dfe8185613283565b9350612e0e8185602086016133fe565b612e1781613539565b840191505092915050565b6000612e2f602383613283565b9150612e3a8261354a565b604082019050919050565b6000612e52602a83613283565b9150612e5d82613599565b604082019050919050565b6000612e75602683613283565b9150612e80826135e8565b604082019050919050565b6000612e98602283613283565b9150612ea382613637565b604082019050919050565b6000612ebb601b83613283565b9150612ec682613686565b602082019050919050565b6000612ede601f83613283565b9150612ee9826136af565b602082019050919050565b6000612f01602883613283565b9150612f0c826136d8565b604082019050919050565b6000612f24602883613283565b9150612f2f82613727565b604082019050919050565b6000612f47602083613283565b9150612f5282613776565b602082019050919050565b6000612f6a602983613283565b9150612f758261379f565b604082019050919050565b6000612f8d602583613283565b9150612f98826137ee565b604082019050919050565b6000612fb0602483613283565b9150612fbb8261383d565b604082019050919050565b6000612fd3602c83613283565b9150612fde8261388c565b604082019050919050565b6000612ff6602583613283565b9150613001826138db565b604082019050919050565b613015816133e7565b82525050565b613024816133f1565b82525050565b600060208201905061303f6000830184612dcb565b92915050565b600060208201905061305a6000830184612dda565b92915050565b6000602082019050818103600083015261307a8184612de9565b905092915050565b6000602082019050818103600083015261309b81612e22565b9050919050565b600060208201905081810360008301526130bb81612e45565b9050919050565b600060208201905081810360008301526130db81612e68565b9050919050565b600060208201905081810360008301526130fb81612e8b565b9050919050565b6000602082019050818103600083015261311b81612eae565b9050919050565b6000602082019050818103600083015261313b81612ed1565b9050919050565b6000602082019050818103600083015261315b81612ef4565b9050919050565b6000602082019050818103600083015261317b81612f17565b9050919050565b6000602082019050818103600083015261319b81612f3a565b9050919050565b600060208201905081810360008301526131bb81612f5d565b9050919050565b600060208201905081810360008301526131db81612f80565b9050919050565b600060208201905081810360008301526131fb81612fa3565b9050919050565b6000602082019050818103600083015261321b81612fc6565b9050919050565b6000602082019050818103600083015261323b81612fe9565b9050919050565b6000602082019050613257600083018461300c565b92915050565b6000602082019050613272600083018461301b565b92915050565b600081519050919050565b600082825260208201905092915050565b600061329f826133e7565b91506132aa836133e7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132df576132de6134ac565b5b828201905092915050565b60006132f5826133e7565b9150613300836133e7565b9250826133105761330f6134db565b5b828204905092915050565b6000613326826133e7565b9150613331836133e7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561336a576133696134ac565b5b828202905092915050565b6000613380826133e7565b915061338b836133e7565b92508282101561339e5761339d6134ac565b5b828203905092915050565b60006133b4826133c7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561341c578082015181840152602081019050613401565b8381111561342b576000848401525b50505050565b6000600282049050600182168061344957607f821691505b6020821081141561345d5761345c61350a565b5b50919050565b600061346e826133e7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134a1576134a06134ac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b613933816133a9565b811461393e57600080fd5b50565b61394a816133bb565b811461395557600080fd5b50565b613961816133e7565b811461396c57600080fd5b5056fea264697066735822122078939c10cfaa76ae6f17b9b3c74277b98eee81ec28ff800d4a7b85b40943a19964736f6c63430008010033

Deployed Bytecode Sourcemap

6496:10600:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9797:367;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7372:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8311:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9548:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7676:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8480:372;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10614:252;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7576:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8860:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10172:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7779:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5940:148;;;:::i;:::-;;7176:55;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5289:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7472:96;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9083:339;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7985:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9430:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9653:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8160:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10874:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6243:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11214:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9797:367;9849:14;9866:12;:10;:12::i;:::-;9849:29;;9898:11;:19;9910:6;9898:19;;;;;;;;;;;;;;;;;;;;;;;;;9897:20;9889:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;9978:15;10001:19;10012:7;10001:10;:19::i;:::-;9977:43;;;;;;10067:7;10049;:15;10057:6;10049:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;10031:7;:15;10039:6;10031:15;;;;;;;;;;;;;;;:43;;;;10105:7;10095;;:17;;;;:::i;:::-;10085:7;:27;;;;10149:7;10136:10;;:20;;;;:::i;:::-;10123:10;:33;;;;9797:367;;;:::o;7372:92::-;7418:13;7451:5;7444:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7372:92;:::o;8311:161::-;8386:4;8403:39;8412:12;:10;:12::i;:::-;8426:7;8435:6;8403:8;:39::i;:::-;8460:4;8453:11;;8311:161;;;;:::o;9548:87::-;9590:7;9617:10;;9610:17;;9548:87;:::o;7676:95::-;7729:7;6929:28;7749:14;;7676:95;:::o;8480:372::-;8578:4;8595:36;8605:6;8613:9;8624:6;8595:9;:36::i;:::-;8660:11;:19;8672:6;8660:19;;;;;;;;;;;;;;;:33;8680:12;:10;:12::i;:::-;8660:33;;;;;;;;;;;;;;;;8650:6;:43;;8642:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;8749:73;8758:6;8766:12;:10;:12::i;:::-;8815:6;8780:11;:19;8792:6;8780:19;;;;;;;;;;;;;;;:33;8800:12;:10;:12::i;:::-;8780:33;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;8749:8;:73::i;:::-;8840:4;8833:11;;8480:372;;;;;:::o;10614:252::-;10680:7;10719;;10708;:18;;10700:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10784:19;10807:10;:8;:10::i;:::-;10784:33;;10846:11;10836:7;:21;;;;:::i;:::-;10828:30;;;10614:252;;;:::o;7576:92::-;7626:5;7651:9;;;;;;;;;;;7644:16;;7576:92;:::o;8860:215::-;8948:4;8965:80;8974:12;:10;:12::i;:::-;8988:7;9034:10;8997:11;:25;9009:12;:10;:12::i;:::-;8997:25;;;;;;;;;;;;;;;:34;9023:7;8997:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8965:8;:80::i;:::-;9063:4;9056:11;;8860:215;;;;:::o;10172:434::-;10262:7;6929:28;10290:7;:18;;10282:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10360:17;10355:244;;10395:15;10418:19;10429:7;10418:10;:19::i;:::-;10394:43;;;;;;10459:7;10452:14;;;;;10355:244;10501:23;10531:19;10542:7;10531:10;:19::i;:::-;10499:51;;;;;;10572:15;10565:22;;;10172:434;;;;;:::o;7779:198::-;7845:7;7869:11;:20;7881:7;7869:20;;;;;;;;;;;;;;;;;;;;;;;;;7865:49;;;7898:7;:16;7906:7;7898:16;;;;;;;;;;;;;;;;7891:23;;;;7865:49;7932:37;7952:7;:16;7960:7;7952:16;;;;;;;;;;;;;;;;7932:19;:37::i;:::-;7925:44;;7779:198;;;;:::o;5940:148::-;5520:12;:10;:12::i;:::-;5509:23;;:7;:5;:7::i;:::-;:23;;;5501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6047:1:::1;6010:40;;6031:6;::::0;::::1;;;;;;;;6010:40;;;;;;;;;;;;6078:1;6061:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5940:148::o:0;7176:55::-;;;;:::o;5289:87::-;5335:7;5362:6;;;;;;;;;;;5355:13;;5289:87;:::o;7472:96::-;7520:13;7553:7;7546:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7472:96;:::o;9083:339::-;9176:4;9220:11;:25;9232:12;:10;:12::i;:::-;9220:25;;;;;;;;;;;;;;;:34;9246:7;9220:34;;;;;;;;;;;;;;;;9201:15;:53;;9193:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;9307:85;9316:12;:10;:12::i;:::-;9330:7;9376:15;9339:11;:25;9351:12;:10;:12::i;:::-;9339:25;;;;;;;;;;;;;;;:34;9365:7;9339:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;9307:8;:85::i;:::-;9410:4;9403:11;;9083:339;;;;:::o;7985:167::-;8063:4;8080:42;8090:12;:10;:12::i;:::-;8104:9;8115:6;8080:9;:42::i;:::-;8140:4;8133:11;;7985:167;;;;:::o;9430:110::-;9488:4;9512:11;:20;9524:7;9512:20;;;;;;;;;;;;;;;;;;;;;;;;;9505:27;;9430:110;;;:::o;9653:136::-;5520:12;:10;:12::i;:::-;5509:23;;:7;:5;:7::i;:::-;:23;;;5501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9775:5:::1;9759:12;6929:28;9749:22;;;;:::i;:::-;9748:32;;;;:::i;:::-;9732:12;:49;;;;9653:136:::0;:::o;8160:143::-;8241:7;8268:11;:18;8280:5;8268:18;;;;;;;;;;;;;;;:27;8287:7;8268:27;;;;;;;;;;;;;;;;8261:34;;8160:143;;;;:::o;10874:332::-;5520:12;:10;:12::i;:::-;5509:23;;:7;:5;:7::i;:::-;:23;;;5501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10956:11:::1;:20;10968:7;10956:20;;;;;;;;;;;;;;;;;;;;;;;;;10955:21;10947:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11041:1;11022:7;:16;11030:7;11022:16;;;;;;;;;;;;;;;;:20;11019:108;;;11078:37;11098:7;:16;11106:7;11098:16;;;;;;;;;;;;;;;;11078:19;:37::i;:::-;11059:7;:16;11067:7;11059:16;;;;;;;;;;;;;;;:56;;;;11019:108;11160:4;11137:11;:20;11149:7;11137:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11175:9;11190:7;11175:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10874:332:::0;:::o;6243:244::-;5520:12;:10;:12::i;:::-;5509:23;;:7;:5;:7::i;:::-;:23;;;5501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6352:1:::1;6332:22;;:8;:22;;;;6324:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6442:8;6413:38;;6434:6;::::0;::::1;;;;;;;;6413:38;;;;;;;;;;;;6471:8;6462:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6243:244:::0;:::o;11214:478::-;5520:12;:10;:12::i;:::-;5509:23;;:7;:5;:7::i;:::-;:23;;;5501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11295:11:::1;:20;11307:7;11295:20;;;;;;;;;;;;;;;;;;;;;;;;;11287:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11363:9;11358:327;11382:9;:16;;;;11378:1;:20;11358:327;;;11440:7;11424:23;;:9;11434:1;11424:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;11420:254;;;11483:9;11512:1;11493:9;:16;;;;:20;;;;:::i;:::-;11483:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11468:9;11478:1;11468:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11552:1;11533:7;:16;11541:7;11533:16;;;;;;;;;;;;;;;:20;;;;11595:5;11572:11;:20;11584:7;11572:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11619:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11653:5;;11420:254;11400:3;;;;;:::i;:::-;;;;11358:327;;;;11214:478:::0;:::o;672:98::-;725:7;752:10;745:17;;672:98;:::o;15384:411::-;15443:7;15452;15461;15470;15479;15500:23;15525:12;15541:20;15553:7;15541:11;:20::i;:::-;15499:62;;;;15572:19;15595:10;:8;:10::i;:::-;15572:33;;15617:15;15634:23;15659:12;15675:39;15687:7;15696:4;15702:11;15675;:39::i;:::-;15616:98;;;;;;15733:7;15742:15;15759:4;15765:15;15782:4;15725:62;;;;;;;;;;;;;;;;15384:411;;;;;;;:::o;11700:337::-;11810:1;11793:19;;:5;:19;;;;11785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11891:1;11872:21;;:7;:21;;;;11864:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11975:6;11945:11;:18;11957:5;11945:18;;;;;;;;;;;;;;;:27;11964:7;11945:27;;;;;;;;;;;;;;;:36;;;;12013:7;11997:32;;12006:5;11997:32;;;12022:6;11997:32;;;;;;:::i;:::-;;;;;;;;11700:337;;;:::o;12045:1111::-;12160:1;12142:20;;:6;:20;;;;12134:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12244:1;12223:23;;:9;:23;;;;12215:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12314:1;12305:6;:10;12297:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12395:7;:5;:7::i;:::-;12385:17;;:6;:17;;;;:41;;;;;12419:7;:5;:7::i;:::-;12406:20;;:9;:20;;;;12385:41;12382:146;;;12459:12;;12449:6;:22;;12441:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12382:146;12556:11;:19;12568:6;12556:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;12580:11;:22;12592:9;12580:22;;;;;;;;;;;;;;;;;;;;;;;;;12579:23;12556:46;12552:597;;;12619:48;12641:6;12649:9;12660:6;12619:21;:48::i;:::-;12552:597;;;12690:11;:19;12702:6;12690:19;;;;;;;;;;;;;;;;;;;;;;;;;12689:20;:46;;;;;12713:11;:22;12725:9;12713:22;;;;;;;;;;;;;;;;;;;;;;;;;12689:46;12685:464;;;12752:46;12772:6;12780:9;12791:6;12752:19;:46::i;:::-;12685:464;;;12821:11;:19;12833:6;12821:19;;;;;;;;;;;;;;;;;;;;;;;;;12820:20;:47;;;;;12845:11;:22;12857:9;12845:22;;;;;;;;;;;;;;;;;;;;;;;;;12844:23;12820:47;12816:333;;;12884:44;12902:6;12910:9;12921:6;12884:17;:44::i;:::-;12816:333;;;12950:11;:19;12962:6;12950:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;12973:11;:22;12985:9;12973:22;;;;;;;;;;;;;;;;;;;;;;;;;12950:45;12946:203;;;13012:48;13034:6;13042:9;13053:6;13012:21;:48::i;:::-;12946:203;;;13093:44;13111:6;13119:9;13130:6;13093:17;:44::i;:::-;12946:203;12816:333;12685:464;12552:597;12045:1111;;;:::o;16369:162::-;16410:7;16431:15;16448;16467:19;:17;:19::i;:::-;16430:56;;;;16515:7;16505;:17;;;;:::i;:::-;16497:26;;;;16369:162;:::o;15803:225::-;15863:7;15872;15892:12;15926:1;15919:3;15909:7;:13;;;;:::i;:::-;15908:19;;;;:::i;:::-;15892:36;;15939:23;15975:4;15965:7;:14;;;;:::i;:::-;15939:40;;15998:15;16015:4;15990:30;;;;;;15803:225;;;:::o;16036:325::-;16131:7;16140;16149;16169:15;16197:11;16187:7;:21;;;;:::i;:::-;16169:39;;16219:12;16241:11;16234:4;:18;;;;:::i;:::-;16219:33;;16263:23;16299:4;16289:7;:14;;;;:::i;:::-;16263:40;;16322:7;16331:15;16348:4;16314:39;;;;;;;;;16036:325;;;;;;;:::o;14146:500::-;14249:15;14266:23;14291:12;14305:23;14330:12;14346:19;14357:7;14346:10;:19::i;:::-;14248:117;;;;;;;;;;14412:7;14394;:15;14402:6;14394:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;14376:7;:15;14384:6;14376:15;;;;;;;;;;;;;;;:43;;;;14466:7;14448;:15;14456:6;14448:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;14430:7;:15;14438:6;14430:15;;;;;;;;;;;;;;;:43;;;;14526:15;14505:7;:18;14513:9;14505:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;14484:7;:18;14492:9;14484:18;;;;;;;;;;;;;;;:57;;;;14555:23;14567:4;14573;14555:11;:23::i;:::-;14611:9;14594:44;;14603:6;14594:44;;;14622:15;14594:44;;;;;;:::i;:::-;;;;;;;;14146:500;;;;;;;;:::o;13618:520::-;13719:15;13736:23;13761:12;13775:23;13800:12;13816:19;13827:7;13816:10;:19::i;:::-;13718:117;;;;;;;;;;13882:7;13864;:15;13872:6;13864:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;13846:7;:15;13854:6;13846:15;;;;;;;;;;;;;;;:43;;;;13942:15;13921:7;:18;13929:9;13921:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;13900:7;:18;13908:9;13900:18;;;;;;;;;;;;;;;:57;;;;14010:15;13989:7;:18;13997:9;13989:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;13968:7;:18;13976:9;13968:18;;;;;;;;;;;;;;;:57;;;;14047:23;14059:4;14065;14047:11;:23::i;:::-;14103:9;14086:44;;14095:6;14086:44;;;14114:15;14086:44;;;;;;:::i;:::-;;;;;;;;13618:520;;;;;;;;:::o;13164:446::-;13263:15;13280:23;13305:12;13319:23;13344:12;13360:19;13371:7;13360:10;:19::i;:::-;13262:117;;;;;;;;;;13426:7;13408;:15;13416:6;13408:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;13390:7;:15;13398:6;13390:15;;;;;;;;;;;;;;;:43;;;;13486:15;13465:7;:18;13473:9;13465:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;13444:7;:18;13452:9;13444:18;;;;;;;;;;;;;;;:57;;;;13519:23;13531:4;13537;13519:11;:23::i;:::-;13575:9;13558:44;;13567:6;13558:44;;;13586:15;13558:44;;;;;;:::i;:::-;;;;;;;;13164:446;;;;;;;;:::o;14654:573::-;14757:15;14774:23;14799:12;14813:23;14838:12;14854:19;14865:7;14854:10;:19::i;:::-;14756:117;;;;;;;;;;14920:7;14902;:15;14910:6;14902:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;14884:7;:15;14892:6;14884:15;;;;;;;;;;;;;;;:43;;;;14974:7;14956;:15;14964:6;14956:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;14938:7;:15;14946:6;14938:15;;;;;;;;;;;;;;;:43;;;;15034:15;15013:7;:18;15021:9;15013:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;14992:7;:18;15000:9;14992:18;;;;;;;;;;;;;;;:57;;;;15102:15;15081:7;:18;15089:9;15081:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;15060:7;:18;15068:9;15060:18;;;;;;;;;;;;;;;:57;;;;15136:23;15148:4;15154;15136:11;:23::i;:::-;15192:9;15175:44;;15184:6;15175:44;;;15203:15;15175:44;;;;;;:::i;:::-;;;;;;;;14654:573;;;;;;;;:::o;16539:554::-;16589:7;16598;16618:15;16636:7;;16618:25;;16654:15;6929:28;16654:25;;16701:9;16696:283;16720:9;:16;;;;16716:1;:20;16696:283;;;16786:7;16762;:21;16770:9;16780:1;16770:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16762:21;;;;;;;;;;;;;;;;:31;:66;;;;16821:7;16797;:21;16805:9;16815:1;16805:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16797:21;;;;;;;;;;;;;;;;:31;16762:66;16758:97;;;16838:7;;6929:28;16830:25;;;;;;;;;16758:97;16890:7;:21;16898:9;16908:1;16898:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16890:21;;;;;;;;;;;;;;;;16880:7;:31;;;;:::i;:::-;16870:41;;16946:7;:21;16954:9;16964:1;16954:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16946:21;;;;;;;;;;;;;;;;16936:7;:31;;;;:::i;:::-;16926:41;;16738:3;;;;;:::i;:::-;;;;16696:283;;;;6929:28;17004:7;;:17;;;;:::i;:::-;16993:7;:29;16989:60;;;17032:7;;6929:28;17024:25;;;;;;;;16989:60;17068:7;17077;17060:25;;;;;;16539:554;;;:::o;15235:141::-;15323:4;15313:7;;:14;;;;:::i;:::-;15303:7;:24;;;;15364:4;15351:10;;:17;;;;:::i;:::-;15338:10;:30;;;;15235: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:366::-;;3535:67;3599:2;3594:3;3535:67;:::i;:::-;3528:74;;3611:93;3700:3;3611:93;:::i;:::-;3729:2;3724:3;3720:12;3713:19;;3518:220;;;:::o;3744:366::-;;3907:67;3971:2;3966:3;3907:67;:::i;:::-;3900:74;;3983:93;4072:3;3983:93;:::i;:::-;4101:2;4096:3;4092:12;4085:19;;3890:220;;;:::o;4116:366::-;;4279:67;4343:2;4338:3;4279:67;:::i;:::-;4272:74;;4355:93;4444:3;4355:93;:::i;:::-;4473:2;4468:3;4464:12;4457:19;;4262:220;;;:::o;4488:366::-;;4651:67;4715:2;4710:3;4651:67;:::i;:::-;4644:74;;4727:93;4816:3;4727:93;:::i;:::-;4845:2;4840:3;4836:12;4829:19;;4634:220;;;:::o;4860:366::-;;5023:67;5087:2;5082:3;5023:67;:::i;:::-;5016:74;;5099:93;5188:3;5099:93;:::i;:::-;5217:2;5212:3;5208:12;5201:19;;5006:220;;;:::o;5232:366::-;;5395:67;5459:2;5454:3;5395:67;:::i;:::-;5388:74;;5471:93;5560:3;5471:93;:::i;:::-;5589:2;5584:3;5580:12;5573:19;;5378:220;;;:::o;5604:366::-;;5767:67;5831:2;5826:3;5767:67;:::i;:::-;5760:74;;5843:93;5932:3;5843:93;:::i;:::-;5961:2;5956:3;5952:12;5945:19;;5750:220;;;:::o;5976:366::-;;6139:67;6203:2;6198:3;6139:67;:::i;:::-;6132:74;;6215:93;6304:3;6215:93;:::i;:::-;6333:2;6328:3;6324:12;6317:19;;6122:220;;;:::o;6348:366::-;;6511:67;6575:2;6570:3;6511:67;:::i;:::-;6504:74;;6587:93;6676:3;6587:93;:::i;:::-;6705:2;6700:3;6696:12;6689:19;;6494:220;;;:::o;6720:366::-;;6883:67;6947:2;6942:3;6883:67;:::i;:::-;6876:74;;6959:93;7048:3;6959:93;:::i;:::-;7077:2;7072:3;7068:12;7061:19;;6866:220;;;:::o;7092:366::-;;7255:67;7319:2;7314:3;7255:67;:::i;:::-;7248:74;;7331:93;7420:3;7331:93;:::i;:::-;7449:2;7444:3;7440:12;7433:19;;7238:220;;;:::o;7464:366::-;;7627:67;7691:2;7686:3;7627:67;:::i;:::-;7620:74;;7703:93;7792:3;7703:93;:::i;:::-;7821:2;7816:3;7812:12;7805:19;;7610:220;;;:::o;7836:366::-;;7999:67;8063:2;8058:3;7999:67;:::i;:::-;7992:74;;8075:93;8164:3;8075:93;:::i;:::-;8193:2;8188:3;8184:12;8177:19;;7982:220;;;:::o;8208:366::-;;8371:67;8435:2;8430:3;8371:67;:::i;:::-;8364:74;;8447:93;8536:3;8447:93;:::i;:::-;8565:2;8560:3;8556:12;8549:19;;8354:220;;;:::o;8580:118::-;8667:24;8685:5;8667:24;:::i;:::-;8662:3;8655:37;8645:53;;:::o;8704:112::-;8787:22;8803:5;8787:22;:::i;:::-;8782:3;8775:35;8765:51;;:::o;8822:222::-;;8953:2;8942:9;8938:18;8930:26;;8966:71;9034:1;9023:9;9019:17;9010:6;8966:71;:::i;:::-;8920:124;;;;:::o;9050:210::-;;9175:2;9164:9;9160:18;9152:26;;9188:65;9250:1;9239:9;9235:17;9226:6;9188:65;:::i;:::-;9142:118;;;;:::o;9266:313::-;;9417:2;9406:9;9402:18;9394:26;;9466:9;9460:4;9456:20;9452:1;9441:9;9437:17;9430:47;9494:78;9567:4;9558:6;9494:78;:::i;:::-;9486:86;;9384:195;;;;:::o;9585:419::-;;9789:2;9778:9;9774:18;9766:26;;9838:9;9832:4;9828:20;9824:1;9813:9;9809:17;9802:47;9866:131;9992:4;9866:131;:::i;:::-;9858:139;;9756:248;;;:::o;10010:419::-;;10214:2;10203:9;10199:18;10191:26;;10263:9;10257:4;10253:20;10249:1;10238:9;10234:17;10227:47;10291:131;10417:4;10291:131;:::i;:::-;10283:139;;10181:248;;;:::o;10435:419::-;;10639:2;10628:9;10624:18;10616:26;;10688:9;10682:4;10678:20;10674:1;10663:9;10659:17;10652:47;10716:131;10842:4;10716:131;:::i;:::-;10708:139;;10606:248;;;:::o;10860:419::-;;11064:2;11053:9;11049:18;11041:26;;11113:9;11107:4;11103:20;11099:1;11088:9;11084:17;11077:47;11141:131;11267:4;11141:131;:::i;:::-;11133:139;;11031:248;;;:::o;11285:419::-;;11489:2;11478:9;11474:18;11466:26;;11538:9;11532:4;11528:20;11524:1;11513:9;11509:17;11502:47;11566:131;11692:4;11566:131;:::i;:::-;11558:139;;11456:248;;;:::o;11710:419::-;;11914:2;11903:9;11899:18;11891:26;;11963:9;11957:4;11953:20;11949:1;11938:9;11934:17;11927:47;11991:131;12117:4;11991:131;:::i;:::-;11983:139;;11881:248;;;:::o;12135:419::-;;12339:2;12328:9;12324:18;12316:26;;12388:9;12382:4;12378:20;12374:1;12363:9;12359:17;12352:47;12416:131;12542:4;12416:131;:::i;:::-;12408:139;;12306:248;;;:::o;12560:419::-;;12764:2;12753:9;12749:18;12741:26;;12813:9;12807:4;12803:20;12799:1;12788:9;12784:17;12777:47;12841:131;12967:4;12841:131;:::i;:::-;12833:139;;12731:248;;;:::o;12985:419::-;;13189:2;13178:9;13174:18;13166:26;;13238:9;13232:4;13228:20;13224:1;13213:9;13209:17;13202:47;13266:131;13392:4;13266:131;:::i;:::-;13258:139;;13156:248;;;:::o;13410:419::-;;13614:2;13603:9;13599:18;13591:26;;13663:9;13657:4;13653:20;13649:1;13638:9;13634:17;13627:47;13691:131;13817:4;13691:131;:::i;:::-;13683:139;;13581:248;;;:::o;13835:419::-;;14039:2;14028:9;14024:18;14016:26;;14088:9;14082:4;14078:20;14074:1;14063:9;14059:17;14052:47;14116:131;14242:4;14116:131;:::i;:::-;14108:139;;14006:248;;;:::o;14260:419::-;;14464:2;14453:9;14449:18;14441:26;;14513:9;14507:4;14503:20;14499:1;14488:9;14484:17;14477:47;14541:131;14667:4;14541:131;:::i;:::-;14533:139;;14431:248;;;:::o;14685:419::-;;14889:2;14878:9;14874:18;14866:26;;14938:9;14932:4;14928:20;14924:1;14913:9;14909:17;14902:47;14966:131;15092:4;14966:131;:::i;:::-;14958:139;;14856:248;;;:::o;15110:419::-;;15314:2;15303:9;15299:18;15291:26;;15363:9;15357:4;15353:20;15349:1;15338:9;15334:17;15327:47;15391:131;15517:4;15391:131;:::i;:::-;15383:139;;15281:248;;;:::o;15535:222::-;;15666:2;15655:9;15651:18;15643:26;;15679:71;15747:1;15736:9;15732:17;15723:6;15679:71;:::i;:::-;15633:124;;;;:::o;15763:214::-;;15890:2;15879:9;15875:18;15867:26;;15903:67;15967:1;15956:9;15952:17;15943:6;15903:67;:::i;:::-;15857:120;;;;:::o;15983:99::-;;16069:5;16063:12;16053:22;;16042:40;;;:::o;16088:169::-;;16206:6;16201:3;16194:19;16246:4;16241:3;16237:14;16222:29;;16184:73;;;;:::o;16263:305::-;;16322:20;16340:1;16322:20;:::i;:::-;16317:25;;16356:20;16374:1;16356:20;:::i;:::-;16351:25;;16510:1;16442:66;16438:74;16435:1;16432:81;16429:2;;;16516:18;;:::i;:::-;16429:2;16560:1;16557;16553:9;16546:16;;16307:261;;;;:::o;16574:185::-;;16631:20;16649:1;16631:20;:::i;:::-;16626:25;;16665:20;16683:1;16665:20;:::i;:::-;16660:25;;16704:1;16694:2;;16709:18;;:::i;:::-;16694:2;16751:1;16748;16744:9;16739:14;;16616:143;;;;:::o;16765:348::-;;16828:20;16846:1;16828:20;:::i;:::-;16823:25;;16862:20;16880:1;16862:20;:::i;:::-;16857:25;;17050:1;16982:66;16978:74;16975:1;16972:81;16967:1;16960:9;16953:17;16949:105;16946:2;;;17057:18;;:::i;:::-;16946:2;17105:1;17102;17098:9;17087:20;;16813:300;;;;:::o;17119:191::-;;17179:20;17197:1;17179:20;:::i;:::-;17174:25;;17213:20;17231:1;17213:20;:::i;:::-;17208:25;;17252:1;17249;17246:8;17243:2;;;17257:18;;:::i;:::-;17243:2;17302:1;17299;17295:9;17287:17;;17164:146;;;;:::o;17316:96::-;;17382:24;17400:5;17382:24;:::i;:::-;17371:35;;17361:51;;;:::o;17418:90::-;;17495:5;17488:13;17481:21;17470:32;;17460:48;;;:::o;17514:126::-;;17591:42;17584:5;17580:54;17569:65;;17559:81;;;:::o;17646:77::-;;17712:5;17701:16;;17691:32;;;:::o;17729:86::-;;17804:4;17797:5;17793:16;17782:27;;17772:43;;;:::o;17821:307::-;17889:1;17899:113;17913:6;17910:1;17907:13;17899:113;;;17998:1;17993:3;17989:11;17983:18;17979:1;17974:3;17970:11;17963:39;17935:2;17932:1;17928:10;17923:15;;17899:113;;;18030:6;18027:1;18024:13;18021:2;;;18110:1;18101:6;18096:3;18092:16;18085:27;18021:2;17870:258;;;;:::o;18134:320::-;;18215:1;18209:4;18205:12;18195:22;;18262:1;18256:4;18252:12;18283:18;18273:2;;18339:4;18331:6;18327:17;18317:27;;18273:2;18401;18393:6;18390:14;18370:18;18367:38;18364:2;;;18420:18;;:::i;:::-;18364:2;18185:269;;;;:::o;18460:233::-;;18522:24;18540:5;18522:24;:::i;:::-;18513:33;;18568:66;18561:5;18558:77;18555:2;;;18638:18;;:::i;:::-;18555:2;18685:1;18678:5;18674:13;18667:20;;18503:190;;;:::o;18699:180::-;18747:77;18744:1;18737:88;18844:4;18841:1;18834:15;18868:4;18865:1;18858:15;18885:180;18933:77;18930:1;18923:88;19030:4;19027:1;19020:15;19054:4;19051:1;19044:15;19071:180;19119:77;19116:1;19109:88;19216:4;19213:1;19206:15;19240:4;19237:1;19230:15;19257:102;;19349:2;19345:7;19340:2;19333:5;19329:14;19325:28;19315:38;;19305:54;;;:::o;19365:222::-;19505:34;19501:1;19493:6;19489:14;19482:58;19574:5;19569:2;19561:6;19557:15;19550:30;19471:116;:::o;19593:229::-;19733:34;19729:1;19721:6;19717:14;19710:58;19802:12;19797:2;19789:6;19785:15;19778:37;19699:123;:::o;19828:225::-;19968:34;19964:1;19956:6;19952:14;19945:58;20037:8;20032:2;20024:6;20020:15;20013:33;19934:119;:::o;20059:221::-;20199:34;20195:1;20187:6;20183:14;20176:58;20268:4;20263:2;20255:6;20251:15;20244:29;20165:115;:::o;20286:177::-;20426:29;20422:1;20414:6;20410:14;20403:53;20392:71;:::o;20469:181::-;20609:33;20605:1;20597:6;20593:14;20586:57;20575:75;:::o;20656:227::-;20796:34;20792:1;20784:6;20780:14;20773:58;20865:10;20860:2;20852:6;20848:15;20841:35;20762:121;:::o;20889:227::-;21029:34;21025:1;21017:6;21013:14;21006:58;21098:10;21093:2;21085:6;21081:15;21074:35;20995:121;:::o;21122:182::-;21262:34;21258:1;21250:6;21246:14;21239:58;21228:76;:::o;21310:228::-;21450:34;21446:1;21438:6;21434:14;21427:58;21519:11;21514:2;21506:6;21502:15;21495:36;21416:122;:::o;21544:224::-;21684:34;21680:1;21672:6;21668:14;21661:58;21753:7;21748:2;21740:6;21736:15;21729:32;21650:118;:::o;21774:223::-;21914:34;21910:1;21902:6;21898:14;21891:58;21983:6;21978:2;21970:6;21966:15;21959:31;21880:117;:::o;22003:231::-;22143:34;22139:1;22131:6;22127:14;22120:58;22212:14;22207:2;22199:6;22195:15;22188:39;22109:125;:::o;22240:224::-;22380:34;22376:1;22368:6;22364:14;22357:58;22449:7;22444:2;22436:6;22432:15;22425:32;22346:118;:::o;22470:122::-;22543:24;22561:5;22543:24;:::i;:::-;22536:5;22533:35;22523:2;;22582:1;22579;22572:12;22523:2;22513:79;:::o;22598:116::-;22668:21;22683:5;22668:21;:::i;:::-;22661:5;22658:32;22648:2;;22704:1;22701;22694:12;22648:2;22638:76;:::o;22720:122::-;22793:24;22811:5;22793:24;:::i;:::-;22786:5;22783:35;22773:2;;22832:1;22829;22822:12;22773:2;22763:79;:::o

Swarm Source

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