Token Statera

 

Overview ERC-20

Price
$0.00 @ 0.000000 FTM
Fully Diluted Market Cap
Total Supply:
4,565,974.110139 STA

Holders:
1,324 addresses

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

Statera (STA) is a smart contract powered Indexed Deflationary Token, which synergizes with a trustless and community-driven portfolio of class-leading cryptocurrencies.


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

Contract Source Code Verified (Exact Match)

Contract Name:
Statera

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-31
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.8.2;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
    function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    // Statera - Return the amount of STA permanently removed from circulation
    function burnedSupply() external view returns (uint256);
}

/**
 * @dev Interface of the ERC2612 standard as defined in the EIP.
 *
 * Adds the {permit} method, which can be used to change one's
 * {IERC20-allowance} without having to send a transaction, by signing a
 * message. This allows users to spend tokens without having to hold Ether.
 *
 * See https://eips.ethereum.org/EIPS/eip-2612.
 */
interface IERC2612 {

    /**
     * @dev Returns the current ERC2612 nonce for `owner`. This value must be
     * included whenever a signature is generated for {permit}.
     *
     * Every successful call to {permit} increases ``owner``'s nonce by one. This
     * prevents a signature from being used multiple times.
     */
    function nonces(address owner) external view returns (uint256);
}

/// @dev Wrapped ERC-20 v10 (AnyswapV3ERC20) is an ERC-20 ERC-20 wrapper. You can `deposit` ERC-20 and obtain an AnyswapV3ERC20 balance which can then be operated as an ERC-20 token. You can
/// `withdraw` ERC-20 from AnyswapV3ERC20, which will then burn AnyswapV3ERC20 token in your wallet. The amount of AnyswapV3ERC20 token in any wallet is always identical to the
/// balance of ERC-20 deposited minus the ERC-20 withdrawn with that specific wallet.
interface IAnyswapV3ERC20 is IERC20, IERC2612 {

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token,
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);

    /// @dev Moves `value` tokens from caller's account to account (`to`),
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// A transfer to `address(0)` triggers an ERC-20 withdraw matching the sent tokens in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` tokens.
    /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function transferAndCall(address to, uint value, bytes calldata data) external returns (bool);
}

interface ITransferReceiver {
    function onTokenTransfer(address, uint, bytes calldata) external returns (bool);
}

interface IApprovalReceiver {
    function onTokenApproval(address, uint, bytes calldata) external returns (bool);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract Statera is IAnyswapV3ERC20 {
    using SafeERC20 for IERC20;
    string public name;
    string public symbol;
    uint8  public immutable override decimals;

    address public immutable underlying;

    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant TRANSFER_TYPEHASH = keccak256("Transfer(address owner,address to,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public immutable DOMAIN_SEPARATOR;

    /// @dev Records amount of tokens owned by account.
    mapping (address => uint256) public override balanceOf;
    uint256 private _totalSupply;

    // Statera - Records amount of tokens permanently removed from supply
    uint256 private _burnedSupply;

    // init flag for setting immediate vault, needed for CREATE2 support
    bool private _init;

    // flag to enable/disable swapout vs vault.burn so multiple events are triggered
    bool private _vaultOnly;

    // configurable delay for timelock functions
    uint public delay = 2*24*3600;


    // set of minters, can be this bridge or other bridges
    mapping(address => bool) public isMinter;
    address[] public minters;

    // primary controller of the token contract
    address public vault;

    address public pendingMinter;
    uint public delayMinter;

    address public pendingVault;
    uint public delayVault;

    uint public pendingDelay;
    uint public delayDelay;


    modifier onlyAuth() {
        require(isMinter[msg.sender], "Statera: FORBIDDEN");
        _;
    }

    modifier onlyVault() {
        require(msg.sender == mpc(), "Statera: FORBIDDEN");
        _;
    }

    function owner() public view returns (address) {
        return mpc();
    }

    function mpc() public view returns (address) {
        if (block.timestamp >= delayVault) {
            return pendingVault;
        }
        return vault;
    }

    function setVaultOnly(bool enabled) external onlyVault {
        _vaultOnly = enabled;
    }

    function initVault(address _vault) external onlyVault {
        require(_init);
        vault = _vault;
        pendingVault = _vault;
        isMinter[_vault] = true;
        minters.push(_vault);
        delayVault = block.timestamp;
        _init = false;
    }

    function setMinter(address _auth) external onlyVault {
        pendingMinter = _auth;
        delayMinter = block.timestamp + delay;
    }

    function setVault(address _vault) external onlyVault {
        pendingVault = _vault;
        delayVault = block.timestamp + delay;
    }

    function applyVault() external onlyVault {
        require(block.timestamp >= delayVault);
        vault = pendingVault;
    }

    function applyMinter() external onlyVault {
        require(block.timestamp >= delayMinter);
        isMinter[pendingMinter] = true;
        minters.push(pendingMinter);
    }

    // No time delay revoke minter emergency function
    function revokeMinter(address _auth) external onlyVault {
        isMinter[_auth] = false;
    }

    function getAllMinters() external view returns (address[] memory) {
        return minters;
    }


    function changeVault(address newVault) external onlyVault returns (bool) {
        require(newVault != address(0), "Statera: address(0x0)");
        pendingVault = newVault;
        delayVault = block.timestamp + delay;
        emit LogChangeVault(vault, pendingVault, delayVault);
        return true;
    }

    function changeMPCOwner(address newVault) public onlyVault returns (bool) {
        require(newVault != address(0), "Statera: address(0x0)");
        pendingVault = newVault;
        delayVault = block.timestamp + delay;
        emit LogChangeMPCOwner(vault, pendingVault, delayVault);
        return true;
    }

    function mint(address to, uint256 amount) external onlyAuth returns (bool) {
        _mint(to, amount);
        return true;
    }

    function burn(address from, uint256 amount) external onlyAuth returns (bool) {
        require(from != address(0), "Statera: address(0x0)");
        _burn(from, amount);
        return true;
    }

    function Swapin(bytes32 txhash, address account, uint256 amount) public onlyAuth returns (bool) {
        _mint(account, amount);
        emit LogSwapin(txhash, account, amount);
        return true;
    }

    function Swapout(uint256 amount, address bindaddr) public returns (bool) {
        require(!_vaultOnly, "Statera: onlyAuth");
        require(bindaddr != address(0), "Statera: address(0x0)");
        _burn(msg.sender, amount);
        emit LogSwapout(msg.sender, bindaddr, amount);
        return true;
    }

    /// @dev Records current ERC2612 nonce for account. This value must be included whenever signature is generated for {permit}.
    /// Every successful call to {permit} increases account's nonce by one. This prevents signature from being used multiple times.
    mapping (address => uint256) public override nonces;

    /// @dev Records number of tokens that account (second) will be allowed to spend on behalf of another account (first) through {transferFrom}.
    mapping (address => mapping (address => uint256)) public override allowance;

    event LogChangeVault(address indexed oldVault, address indexed newVault, uint indexed effectiveTime);
    event LogChangeMPCOwner(address indexed oldOwner, address indexed newOwner, uint indexed effectiveHeight);
    event LogSwapin(bytes32 indexed txhash, address indexed account, uint amount);
    event LogSwapout(address indexed account, address indexed bindaddr, uint amount);
    event LogAddAuth(address indexed auth, uint timestamp);

    constructor(string memory _name, string memory _symbol, uint8 _decimals, address _underlying, address _vault) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        underlying = _underlying;
        if (_underlying != address(0x0)) {
            require(_decimals == IERC20(_underlying).decimals());
        }

        // Use init to allow for CREATE2 accross all chains
        _init = true;

        // Disable/Enable swapout for v1 tokens vs mint/burn for v3 tokens
        _vaultOnly = false;

        vault = _vault;
        pendingVault = _vault;
        delayVault = block.timestamp;

        uint256 chainId;
        assembly {chainId := chainid()}
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                keccak256(bytes(name)),
                keccak256(bytes("1")),
                chainId,
                address(this)));
    }

    /// @dev Returns the total supply of AnyswapV3ERC20 token as the ETH held in this contract.
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    // Statera - Returns the amount of STA permanently removed from supply via token burn
    function burnedSupply() external view override returns (uint256) {
        return _burnedSupply;
    }

    function depositWithPermit(address target, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s, address to) external returns (uint) {
        IERC20(underlying).permit(target, address(this), value, deadline, v, r, s);
        IERC20(underlying).safeTransferFrom(target, address(this), value);
        return _deposit(value, to);
    }

    function depositWithTransferPermit(address target, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s, address to) external returns (uint) {
        IERC20(underlying).transferWithPermit(target, address(this), value, deadline, v, r, s);
        return _deposit(value, to);
    }

    function deposit() external returns (uint) {
        uint _amount = IERC20(underlying).balanceOf(msg.sender);
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), _amount);
        return _deposit(_amount, msg.sender);
    }

    function deposit(uint amount) external returns (uint) {
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        return _deposit(amount, msg.sender);
    }

    function deposit(uint amount, address to) external returns (uint) {
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        return _deposit(amount, to);
    }

    function depositVault(uint amount, address to) external onlyVault returns (uint) {
        return _deposit(amount, to);
    }

    function _deposit(uint amount, address to) internal returns (uint) {
        require(underlying != address(0x0) && underlying != address(this));
        _mint(to, amount);
        return amount;
    }

    function withdraw() external returns (uint) {
        return _withdraw(msg.sender, balanceOf[msg.sender], msg.sender);
    }

    function withdraw(uint amount) external returns (uint) {
        return _withdraw(msg.sender, amount, msg.sender);
    }

    function withdraw(uint amount, address to) external returns (uint) {
        return _withdraw(msg.sender, amount, to);
    }

    function withdrawVault(address from, uint amount, address to) external onlyVault returns (uint) {
        return _withdraw(from, amount, to);
    }

    function _withdraw(address from, uint amount, address to) internal returns (uint) {
        _burn(from, amount);
        IERC20(underlying).safeTransfer(to, amount);
        return amount;
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "Statera: Can not mint to the zero address");

        _totalSupply += amount;
        balanceOf[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "Statera: Can not burn from the zero address");

        balanceOf[account] -= amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

    // Statera - Destroy 'amount' tokens from 'account', reducing the total supply and increasing the burned supply

    function _removeFromSupply(address account, uint256 amount) internal{
        require(account != address(0), "Statera: Can not burn from the zero address");

        balanceOf[account] -= amount;
        _totalSupply -= amount;
        _burnedSupply += amount;
        emit Transfer(account, address(0), amount);
    }

    /// @dev Sets `value` as allowance of `spender` account over caller account's token.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    function approve(address spender, uint256 value) external override returns (bool) {
        // _approve(msg.sender, spender, value);
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);

        return true;
    }

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token,
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function approveAndCall(address spender, uint256 value, bytes calldata data) external override returns (bool) {
        // _approve(msg.sender, spender, value);
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);

        return IApprovalReceiver(spender).onTokenApproval(msg.sender, value, data);
    }

    /// @dev Sets `value` as allowance of `spender` account over `owner` account's AnyswapV3ERC20 token, given `owner` account's signed approval.
    /// Emits {Approval} event.
    /// Requirements:
    ///   - `deadline` must be timestamp in future.
    ///   - `v`, `r` and `s` must be valid `secp256k1` signature from `owner` account over EIP712-formatted function arguments.
    ///   - the signature must use `owner` account's current nonce (see {nonces}).
    ///   - the signer cannot be zero address and must be `owner` account.
    /// For more information on signature format, see https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].
    /// AnyswapV3ERC20 token implementation adapted from https://github.com/albertocuestacanada/ERC20Permit/blob/master/contracts/ERC20Permit.sol.
    function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override {
        require(block.timestamp <= deadline, "Statera: Expired permit");

        bytes32 hashStruct = keccak256(
            abi.encode(
                PERMIT_TYPEHASH,
                target,
                spender,
                value,
                nonces[target]++,
                deadline));

        require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s));

        // _approve(owner, spender, value);
        allowance[target][spender] = value;
        emit Approval(target, spender, value);
    }

    function cut(uint256 value) pure public returns (uint256)  {
        uint256 cutValue;
        cutValue = value / 100;
        return cutValue;
    }

    function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override returns (bool) {
        require(block.timestamp <= deadline, "Statera: Expired permit");

        bytes32 hashStruct = keccak256(
            abi.encode(
                TRANSFER_TYPEHASH,
                target,
                to,
                value,
                nonces[target]++,
                deadline));

        require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s));

        require(to != address(0) || to != address(this));

        uint256 balance = balanceOf[target];
        require(balance >= value, "Statera: transfer amount exceeds balance");

        // Statera - Calculate 1% of transferred value
        uint256 burnValue = cut(value);
        // Statera - Permanently burn 1% of transferred value
        _removeFromSupply(target, burnValue);
        // Statera - Calculate remaining 99% of transferred value
        uint256 transferValue = value - burnValue;
        // Statera - Decrement sender's balance
        balanceOf[target] = balance - value;
        // Statera - Increase recipient's balance by transferValue
        balanceOf[to] += transferValue;

        emit Transfer(target, to, transferValue);

        return true;
    }

    function verifyEIP712(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal view returns (bool) {
        bytes32 hash = keccak256(
            abi.encodePacked(
                "\x19\x01",
                DOMAIN_SEPARATOR,
                hashStruct));
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }

    function verifyPersonalSign(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal view returns (bool) {
        bytes32 hash = prefixed(hashStruct);
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }

    // Builds a prefixed hash to mimic the behavior of eth_sign.
    function prefixed(bytes32 hash) internal view returns (bytes32) {
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", DOMAIN_SEPARATOR, hash));
    }

    /// @dev Moves `value`  token from caller's account, with 1% being burned and 99% to account (`to`).
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` token.
    function transfer(address to, uint256 value) external override returns (bool) {
        require(to != address(0) || to != address(this));
        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "Statera: transfer amount exceeds balance");

        // Statera - Calculate 1% of transferred value
        uint256 burnValue = cut(value);
        // Statera - Burn 1% of transferred value
        _removeFromSupply(msg.sender, burnValue);
        // Statera - Calculate remaining 99% of transferred value
        uint256 transferValue = value - burnValue;
        // Statera - Decrement sender's balance
        balanceOf[msg.sender] = balance - value;
        // Statera - Increase recipient's balance by transferValue
        balanceOf[to] += transferValue;

        emit Transfer(msg.sender, to, transferValue);

        return true;
    }

    /// @dev Moves `value` token from account (`from`), with 1% being burned and 99% to account (`to`) using allowance mechanism.
    /// `value` is then deducted from caller account's allowance, unless set to `type(uint256).max`.
    /// Emits {Approval} event to reflect reduced allowance `value` for caller account to spend from account (`from`),
    /// unless allowance is set to `type(uint256).max`
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - `from` account must have at least `value` balance of token.
    ///   - `from` account must have approved caller to spend at least `value` of token, unless `from` and caller are the same account.
    function transferFrom(address from, address to, uint256 value) external override returns (bool) {
        require(to != address(0) || to != address(this));
        if (from != msg.sender) {
            // _decreaseAllowance(from, msg.sender, value);
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "Statera: request exceeds allowance");
                uint256 reduced = allowed - value;
                allowance[from][msg.sender] = reduced;
                emit Approval(from, msg.sender, reduced);
            }
        }

        uint256 balance = balanceOf[from];
        require(balance >= value, "Statera: transfer amount exceeds balance");

        // Statera - Calculate 1% of transferred value
        uint256 burnValue = cut(value);
        // Statera - Burn 1% of transferred value
        _removeFromSupply(from, burnValue);
        // Statera - Calculate remaining 99% of transferred value
        uint256 transferValue = value - burnValue;
        // Statera - Decrement sender's balance
        balanceOf[from] = balance - value;
        // Statera - Increase recipient's balance by transferValue
        balanceOf[to] += transferValue;

        emit Transfer(from, to, transferValue);

        return true;
    }

    /// @dev Moves `value` token from caller's account, with 1% being burned and 99% to account (`to`),
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent  token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value`  token.
    /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function transferAndCall(address to, uint value, bytes calldata data) external override returns (bool) {
        require(to != address(0) || to != address(this));

        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "Statera: transfer amount exceeds balance");

        // Statera - Calculate 1% of transferred value
        uint256 burnValue = cut(value);
        // Statera - Burn 1% of transferred value
        _removeFromSupply(msg.sender, burnValue);
        // Statera - Calculate remaining 99% of transferred value
        uint256 transferValue = value - burnValue;
        // Statera - Decrement sender's balance
        balanceOf[msg.sender] = balance - value;
        // Statera - Increase recipient's balance by transferValue
        balanceOf[to] += transferValue;

        emit Transfer(msg.sender, to, transferValue);

        return ITransferReceiver(to).onTokenTransfer(msg.sender, value, data);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"address","name":"_vault","type":"address"}],"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":"auth","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LogAddAuth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveHeight","type":"uint256"}],"name":"LogChangeMPCOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldVault","type":"address"},{"indexed":true,"internalType":"address","name":"newVault","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"}],"name":"LogChangeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"bindaddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapout","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":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txhash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swapin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"bindaddr","type":"address"}],"name":"Swapout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TRANSFER_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeMPCOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"cut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayMinter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"depositVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithTransferPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllMinters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"initVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"minters","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mpc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"revokeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setVaultOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"transferWithPermit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

60e06040526202a3006006553480156200001857600080fd5b5060405162005b7a38038062005b7a83398181016040528101906200003e91906200044e565b846000908051906020019062000056929190620002fe565b5083600190805190602001906200006f929190620002fe565b508260ff1660808160ff1660f81b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000182578173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200013457600080fd5b505afa15801562000149573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016f919062000502565b60ff168360ff16146200018157600080fd5b5b6001600560006101000a81548160ff0219169083151502179055506000600560016101000a81548160ff02191690831515021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600d8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620002789190620005ec565b60405180910390206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001620002d595949392919062000605565b6040516020818303038152906040528051906020012060c081815250505050505050506200087b565b8280546200030c906200076c565b90600052602060002090601f0160209004810192826200033057600085556200037c565b82601f106200034b57805160ff19168380011785556200037c565b828001600101855582156200037c579182015b828111156200037b5782518255916020019190600101906200035e565b5b5090506200038b91906200038f565b5090565b5b80821115620003aa57600081600090555060010162000390565b5090565b6000620003c5620003bf846200068b565b62000662565b905082815260208101848484011115620003de57600080fd5b620003eb84828562000736565b509392505050565b600081519050620004048162000847565b92915050565b600082601f8301126200041c57600080fd5b81516200042e848260208601620003ae565b91505092915050565b600081519050620004488162000861565b92915050565b600080600080600060a086880312156200046757600080fd5b600086015167ffffffffffffffff8111156200048257600080fd5b62000490888289016200040a565b955050602086015167ffffffffffffffff811115620004ae57600080fd5b620004bc888289016200040a565b9450506040620004cf8882890162000437565b9350506060620004e288828901620003f3565b9250506080620004f588828901620003f3565b9150509295509295909350565b6000602082840312156200051557600080fd5b6000620005258482850162000437565b91505092915050565b6200053981620006e1565b82525050565b6200054a81620006f5565b82525050565b600081546200055f816200076c565b6200056b8186620006d6565b945060018216600081146200058957600181146200059b57620005d2565b60ff19831686528186019350620005d2565b620005a685620006c1565b60005b83811015620005ca57815481890152600182019150602081019050620005a9565b838801955050505b50505092915050565b620005e6816200071f565b82525050565b6000620005fa828462000550565b915081905092915050565b600060a0820190506200061c60008301886200053f565b6200062b60208301876200053f565b6200063a60408301866200053f565b620006496060830185620005db565b6200065860808301846200052e565b9695505050505050565b60006200066e62000681565b90506200067c8282620007a2565b919050565b6000604051905090565b600067ffffffffffffffff821115620006a957620006a862000807565b5b620006b48262000836565b9050602081019050919050565b60008190508160005260206000209050919050565b600081905092915050565b6000620006ee82620006ff565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200075657808201518184015260208101905062000739565b8381111562000766576000848401525b50505050565b600060028204905060018216806200078557607f821691505b602082108114156200079c576200079b620007d8565b5b50919050565b620007ad8262000836565b810181811067ffffffffffffffff82111715620007cf57620007ce62000807565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6200085281620006e1565b81146200085e57600080fd5b50565b6200086c8162000729565b81146200087857600080fd5b50565b60805160f81c60a05160601c60c0516152756200090560003960008181611636015281816138430152613d4c015260008181612380015281816123d90152818161242f015281816124cc01528181612a3701528181612e0501528181612eb6015281816133720152818161354501528181613c170152613c6e0152600061161201526152756000f3fe608060405234801561001057600080fd5b50600436106103755760003560e01c806370a08231116101d3578063bebbf4d011610104578063d93f2445116100a2578063f75c26641161007c578063f75c266414610b22578063f954734e14610b40578063fbfa77cf14610b70578063fca3b5aa14610b8e57610375565b8063d93f244514610ab8578063dd62ed3e14610ac2578063ec126c7714610af257610375565b8063cae9ca51116100de578063cae9ca5114610a32578063cfbd488514610a62578063d0e30db014610a7e578063d505accf14610a9c57610375565b8063bebbf4d0146109c8578063c3081240146109f8578063c4b740f514610a1657610375565b806395d89b4111610171578063a29dff721161014b578063a29dff721461091a578063a9059cbb14610938578063aa271e1a14610968578063b6b55f251461099857610375565b806395d89b41146108ae5780639dc29fac146108cc578063a045442c146108fc57610375565b80638623ec7b116101ad5780638623ec7b1461082457806387689e28146108545780638da5cb5b1461087257806391c5df491461089057610375565b806370a08231146107945780637ecebe00146107c457806381a37c18146107f457610375565b80633ccfd60b116102ad578063605629d61161024b5780636817031b116102255780636817031b1461070c5780636a42b8f8146107285780636e553f65146107465780636f307dc31461077657610375565b8063605629d61461067c57806360e232a9146106ac578063628d6cba146106dc57610375565b80634ca8f0ed116102875780634ca8f0ed146105f257806352113ba71461061057806355d0a1d01461062e5780635f9b105d1461064c57610375565b80633ccfd60b146105745780634000aea01461059257806340c10f19146105c257610375565b806318160ddd1161031a5780632ebe3fbb116102f45780632ebe3fbb146104fe57806330adf81f1461051a578063313ce567146105385780633644e5151461055657610375565b806318160ddd1461048057806323b872dd1461049e5780632e1a7d4d146104ce57610375565b806306fdde031161035657806306fdde03146103f857806309260db714610416578063095ea7b3146104465780630d707df81461047657610375565b806239d6ec1461037a578062bf26f4146103aa578062f714ce146103c8575b600080fd5b610394600480360381019061038f91906141c1565b610baa565b6040516103a19190614bbd565b60405180910390f35b6103b2610c35565b6040516103bf919061497a565b60405180910390f35b6103e260048036038101906103dd919061440d565b610c59565b6040516103ef9190614bbd565b60405180910390f35b610400610c6e565b60405161040d9190614a3b565b60405180910390f35b610430600480360381019061042b91906143bb565b610cfc565b60405161043d9190614bbd565b60405180910390f35b610460600480360381019061045b9190614185565b610d17565b60405161046d919061495f565b60405180910390f35b61047e610e09565b005b610488610f8e565b6040516104959190614bbd565b60405180910390f35b6104b860048036038101906104b39190614098565b610f98565b6040516104c5919061495f565b60405180910390f35b6104e860048036038101906104e391906143bb565b6113e8565b6040516104f59190614bbd565b60405180910390f35b61051860048036038101906105139190614033565b6113fc565b005b6105226115ec565b60405161052f919061497a565b60405180910390f35b610540611610565b60405161054d9190614bd8565b60405180910390f35b61055e611634565b60405161056b919061497a565b60405180910390f35b61057c611658565b6040516105899190614bbd565b60405180910390f35b6105ac60048036038101906105a79190614210565b6116a9565b6040516105b9919061495f565b60405180910390f35b6105dc60048036038101906105d79190614185565b611971565b6040516105e9919061495f565b60405180910390f35b6105fa611a13565b6040516106079190614bbd565b60405180910390f35b610618611a19565b6040516106259190614813565b60405180910390f35b610636611a3f565b6040516106439190614bbd565b60405180910390f35b61066660048036038101906106619190614033565b611a49565b604051610673919061495f565b60405180910390f35b610696600480360381019061069191906140e7565b611c2f565b6040516106a3919061495f565b60405180910390f35b6106c660048036038101906106c19190614033565b611f82565b6040516106d3919061495f565b60405180910390f35b6106f660048036038101906106f1919061440d565b612168565b604051610703919061495f565b60405180910390f35b61072660048036038101906107219190614033565b6122a3565b005b610730612370565b60405161073d9190614bbd565b60405180910390f35b610760600480360381019061075b919061440d565b612376565b60405161076d9190614bbd565b60405180910390f35b61077e6123d7565b60405161078b9190614813565b60405180910390f35b6107ae60048036038101906107a99190614033565b6123fb565b6040516107bb9190614bbd565b60405180910390f35b6107de60048036038101906107d99190614033565b612413565b6040516107eb9190614bbd565b60405180910390f35b61080e6004803603810190610809919061427c565b61242b565b60405161081b9190614bbd565b60405180910390f35b61083e600480360381019061083991906143bb565b612528565b60405161084b9190614813565b60405180910390f35b61085c612567565b6040516108699190614bbd565b60405180910390f35b61087a61256d565b6040516108879190614813565b60405180910390f35b61089861257c565b6040516108a59190614813565b60405180910390f35b6108b66125a2565b6040516108c39190614a3b565b60405180910390f35b6108e660048036038101906108e19190614185565b612630565b6040516108f3919061495f565b60405180910390f35b610904612742565b604051610911919061493d565b60405180910390f35b6109226127d0565b60405161092f9190614bbd565b60405180910390f35b610952600480360381019061094d9190614185565b6127d6565b60405161095f919061495f565b60405180910390f35b610982600480360381019061097d9190614033565b612a0d565b60405161098f919061495f565b60405180910390f35b6109b260048036038101906109ad91906143bb565b612a2d565b6040516109bf9190614bbd565b60405180910390f35b6109e260048036038101906109dd919061440d565b612a8d565b6040516109ef9190614bbd565b60405180910390f35b610a00612b16565b604051610a0d9190614bbd565b60405180910390f35b610a306004803603810190610a2b919061431a565b612b1c565b005b610a4c6004803603810190610a479190614210565b612bae565b604051610a59919061495f565b60405180910390f35b610a7c6004803603810190610a779190614033565b612d30565b005b610a86612e00565b604051610a939190614bbd565b60405180910390f35b610ab66004803603810190610ab191906140e7565b612f0b565b005b610ac0613110565b005b610adc6004803603810190610ad7919061405c565b6131f9565b604051610ae99190614bbd565b60405180910390f35b610b0c6004803603810190610b07919061436c565b61321e565b604051610b19919061495f565b60405180910390f35b610b2a613310565b604051610b379190614813565b60405180910390f35b610b5a6004803603810190610b55919061427c565b61336e565b604051610b679190614bbd565b60405180910390f35b610b7861343f565b604051610b859190614813565b60405180910390f35b610ba86004803603810190610ba39190614033565b613465565b005b6000610bb4613310565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890614a5d565b60405180910390fd5b610c2c848484613532565b90509392505050565b7f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b6000610c66338484613532565b905092915050565b60008054610c7b90614dd6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca790614dd6565b8015610cf45780601f10610cc957610100808354040283529160200191610cf4565b820191906000526020600020905b815481529060010190602001808311610cd757829003601f168201915b505050505081565b600080606483610d0c9190614cd0565b905080915050919050565b600081601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610df79190614bbd565b60405180910390a36001905092915050565b610e11613310565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7590614a5d565b60405180910390fd5b600b54421015610e8d57600080fd5b600160076000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600354905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158061100157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b61100a57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611222576000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112205782811015611128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111f90614a9d565b60405180910390fd5b600083826111369190614d01565b905080601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112169190614bbd565b60405180910390a3505b505b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a090614b1d565b60405180910390fd5b60006112b484610cfc565b90506112c08682613593565b600081856112ce9190614d01565b905084836112dc9190614d01565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461136e9190614c7a565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113d29190614bbd565b60405180910390a3600193505050509392505050565b60006113f5338333613532565b9050919050565b611404613310565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146890614a5d565b60405180910390fd5b600560009054906101000a900460ff1661148a57600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600d819055506000600560006101000a81548160ff02191690831515021790555050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006116a433600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205433613532565b905090565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158061171257503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b61171b57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050848110156117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990614b1d565b60405180910390fd5b60006117ad86610cfc565b90506117b93382613593565b600081876117c79190614d01565b905086836117d59190614d01565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118679190614c7a565b925050819055508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118cb9190614bbd565b60405180910390a38773ffffffffffffffffffffffffffffffffffffffff1663a4c0ed36338989896040518563ffffffff1660e01b815260040161191294939291906148fd565b602060405180830381600087803b15801561192c57600080fd5b505af1158015611940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119649190614343565b9350505050949350505050565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f690614a5d565b60405180910390fd5b611a0983836136f5565b6001905092915050565b600e5481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454905090565b6000611a53613310565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab790614a5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2790614afd565b60405180910390fd5b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065442611b7f9190614c7a565b600d81905550600d54600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1d065115f314fb9bad9557bd5460b9e3c66f7223b1dd04e73e828f0bb5afe89f60405160405180910390a460019050919050565b600084421115611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b90614b5d565b60405180910390fd5b60007f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59898989601060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611cea90614e08565b919050558a604051602001611d0496959493929190614995565b604051602081830303815290604052805190602001209050611d29898287878761383e565b80611d3d5750611d3c8982878787613954565b5b611d4657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580611dae57503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b611db757600080fd5b6000600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905087811015611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3590614b1d565b60405180910390fd5b6000611e4989610cfc565b9050611e558b82613593565b6000818a611e639190614d01565b90508983611e719190614d01565b600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f039190614c7a565b925050819055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f679190614bbd565b60405180910390a36001945050505050979650505050505050565b6000611f8c613310565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff090614a5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206090614afd565b60405180910390fd5b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654426120b89190614c7a565b600d81905550600d54600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac60405160405180910390a460019050919050565b6000600560019054906101000a900460ff16156121ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b190614add565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222190614afd565b60405180910390fd5b6122343384613a2a565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c888856040516122919190614bbd565b60405180910390a36001905092915050565b6122ab613310565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f90614a5d565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654426123679190614c7a565b600d8190555050565b60065481565b60006123c53330857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16613b73909392919063ffffffff16565b6123cf8383613bfc565b905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60026020528060005260406000206000915090505481565b60106020528060005260406000206000915090505481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d505accf89308a8a8a8a8a6040518863ffffffff1660e01b81526004016124929796959493929190614865565b600060405180830381600087803b1580156124ac57600080fd5b505af11580156124c0573d6000803e3d6000fd5b505050506125118830897f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16613b73909392919063ffffffff16565b61251b8783613bfc565b9050979650505050505050565b6008818154811061253857600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6000612577613310565b905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600180546125af90614dd6565b80601f01602080910402602001604051908101604052809291908181526020018280546125db90614dd6565b80156126285780601f106125fd57610100808354040283529160200191612628565b820191906000526020600020905b81548152906001019060200180831161260b57829003601f168201915b505050505081565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b590614a5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561272e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272590614afd565b60405180910390fd5b6127388383613a2a565b6001905092915050565b606060088054806020026020016040519081016040528092919081815260200182805480156127c657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161277c575b5050505050905090565b600f5481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158061283f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b61284857600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156128cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c690614b1d565b60405180910390fd5b60006128da84610cfc565b90506128e63382613593565b600081856128f49190614d01565b905084836129029190614d01565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129949190614c7a565b925050819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129f89190614bbd565b60405180910390a36001935050505092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000612a7c3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16613b73909392919063ffffffff16565b612a868233613bfc565b9050919050565b6000612a97613310565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afb90614a5d565b60405180910390fd5b612b0e8383613bfc565b905092915050565b600b5481565b612b24613310565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8890614a5d565b60405180910390fd5b80600560016101000a81548160ff02191690831515021790555050565b600083601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92586604051612c8e9190614bbd565b60405180910390a38473ffffffffffffffffffffffffffffffffffffffff1662ba451f338686866040518563ffffffff1660e01b8152600401612cd494939291906148fd565b602060405180830381600087803b158015612cee57600080fd5b505af1158015612d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d269190614343565b9050949350505050565b612d38613310565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9c90614a5d565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401612e5c9190614813565b60206040518083038186803b158015612e7457600080fd5b505afa158015612e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eac91906143e4565b9050612efb3330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16613b73909392919063ffffffff16565b612f058133613bfc565b91505090565b83421115612f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4590614b5d565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888601060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612fc490614e08565b9190505589604051602001612fde96959493929190614995565b604051602081830303815290604052805190602001209050613003888286868661383e565b8061301757506130168882868686613954565b5b61302057600080fd5b85601160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925886040516130fe9190614bbd565b60405180910390a35050505050505050565b613118613310565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317c90614a5d565b60405180910390fd5b600d5442101561319457600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6011602052816000526040600020602052806000526040600020600091509150505481565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166132ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a390614a5d565b60405180910390fd5b6132b683836136f5565b8273ffffffffffffffffffffffffffffffffffffffff16847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d61846040516132fd9190614bbd565b60405180910390a3600190509392505050565b6000600d54421061334557600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061336b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b90565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663605629d689308a8a8a8a8a6040518863ffffffff1660e01b81526004016133d59796959493929190614865565b602060405180830381600087803b1580156133ef57600080fd5b505af1158015613403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134279190614343565b506134328783613bfc565b9050979650505050505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61346d613310565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146134da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d190614a5d565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654426135299190614c7a565b600b8190555050565b600061353e8484613a2a565b61358982847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16613cc29092919063ffffffff16565b8290509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135fa90614b3d565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136529190614d01565b92505081905550806003600082825461366b9190614d01565b9250508190555080600460008282546136849190614c7a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136e99190614bbd565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161375c90614a7d565b60405180910390fd5b80600360008282546137779190614c7a565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137cd9190614c7a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138329190614bbd565b60405180910390a35050565b6000807f0000000000000000000000000000000000000000000000000000000000000000866040516020016138749291906147dc565b6040516020818303038152906040528051906020012090506000600182878787604051600081526020016040526040516138b194939291906149f6565b6020604051602081039080840390855afa1580156138d3573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561394757508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b9250505095945050505050565b60008061396086613d48565b905060006001828787876040516000815260200160405260405161398794939291906149f6565b6020604051602081039080840390855afa1580156139a9573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613a1d57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b9250505095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a9190614b3d565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ae99190614d01565b925050819055508060036000828254613b029190614d01565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b679190614bbd565b60405180910390a35050565b613bf6846323b872dd60e01b858585604051602401613b949392919061482e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613d9a565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614158015613ca657503073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b613caf57600080fd5b613cb982846136f5565b82905092915050565b613d438363a9059cbb60e01b8484604051602401613ce19291906148d4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613d9a565b505050565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001613d7d9291906147a5565b604051602081830303815290604052805190602001209050919050565b613db98273ffffffffffffffffffffffffffffffffffffffff16613f0b565b613df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613def90614b9d565b60405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051613e20919061478e565b6000604051808303816000865af19150503d8060008114613e5d576040519150601f19603f3d011682016040523d82523d6000602084013e613e62565b606091505b509150915081613ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e9e90614abd565b60405180910390fd5b600081511115613f055780806020019051810190613ec59190614343565b613f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613efb90614b7d565b60405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015613f4d5750808214155b92505050919050565b600081359050613f65816151cc565b92915050565b600081359050613f7a816151e3565b92915050565b600081519050613f8f816151e3565b92915050565b600081359050613fa4816151fa565b92915050565b60008083601f840112613fbc57600080fd5b8235905067ffffffffffffffff811115613fd557600080fd5b602083019150836001820283011115613fed57600080fd5b9250929050565b60008135905061400381615211565b92915050565b60008151905061401881615211565b92915050565b60008135905061402d81615228565b92915050565b60006020828403121561404557600080fd5b600061405384828501613f56565b91505092915050565b6000806040838503121561406f57600080fd5b600061407d85828601613f56565b925050602061408e85828601613f56565b9150509250929050565b6000806000606084860312156140ad57600080fd5b60006140bb86828701613f56565b93505060206140cc86828701613f56565b92505060406140dd86828701613ff4565b9150509250925092565b600080600080600080600060e0888a03121561410257600080fd5b60006141108a828b01613f56565b97505060206141218a828b01613f56565b96505060406141328a828b01613ff4565b95505060606141438a828b01613ff4565b94505060806141548a828b0161401e565b93505060a06141658a828b01613f95565b92505060c06141768a828b01613f95565b91505092959891949750929550565b6000806040838503121561419857600080fd5b60006141a685828601613f56565b92505060206141b785828601613ff4565b9150509250929050565b6000806000606084860312156141d657600080fd5b60006141e486828701613f56565b93505060206141f586828701613ff4565b925050604061420686828701613f56565b9150509250925092565b6000806000806060858703121561422657600080fd5b600061423487828801613f56565b945050602061424587828801613ff4565b935050604085013567ffffffffffffffff81111561426257600080fd5b61426e87828801613faa565b925092505092959194509250565b600080600080600080600060e0888a03121561429757600080fd5b60006142a58a828b01613f56565b97505060206142b68a828b01613ff4565b96505060406142c78a828b01613ff4565b95505060606142d88a828b0161401e565b94505060806142e98a828b01613f95565b93505060a06142fa8a828b01613f95565b92505060c061430b8a828b01613f56565b91505092959891949750929550565b60006020828403121561432c57600080fd5b600061433a84828501613f6b565b91505092915050565b60006020828403121561435557600080fd5b600061436384828501613f80565b91505092915050565b60008060006060848603121561438157600080fd5b600061438f86828701613f95565b93505060206143a086828701613f56565b92505060406143b186828701613ff4565b9150509250925092565b6000602082840312156143cd57600080fd5b60006143db84828501613ff4565b91505092915050565b6000602082840312156143f657600080fd5b600061440484828501614009565b91505092915050565b6000806040838503121561442057600080fd5b600061442e85828601613ff4565b925050602061443f85828601613f56565b9150509250929050565b60006144558383614461565b60208301905092915050565b61446a81614d35565b82525050565b61447981614d35565b82525050565b600061448a82614c03565b6144948185614c31565b935061449f83614bf3565b8060005b838110156144d05781516144b78882614449565b97506144c283614c24565b9250506001810190506144a3565b5085935050505092915050565b6144e681614d47565b82525050565b6144f581614d53565b82525050565b61450c61450782614d53565b614e51565b82525050565b600061451e8385614c42565b935061452b838584614d94565b61453483614ee8565b840190509392505050565b600061454a82614c0e565b6145548185614c53565b9350614564818560208601614da3565b80840191505092915050565b600061457b82614c19565b6145858185614c5e565b9350614595818560208601614da3565b61459e81614ee8565b840191505092915050565b60006145b6601283614c5e565b91506145c182614ef9565b602082019050919050565b60006145d9601c83614c6f565b91506145e482614f22565b601c82019050919050565b60006145fc602983614c5e565b915061460782614f4b565b604082019050919050565b600061461f602283614c5e565b915061462a82614f9a565b604082019050919050565b6000614642600283614c6f565b915061464d82614fe9565b600282019050919050565b6000614665602083614c5e565b915061467082615012565b602082019050919050565b6000614688601183614c5e565b91506146938261503b565b602082019050919050565b60006146ab601583614c5e565b91506146b682615064565b602082019050919050565b60006146ce602883614c5e565b91506146d98261508d565b604082019050919050565b60006146f1602b83614c5e565b91506146fc826150dc565b604082019050919050565b6000614714601783614c5e565b915061471f8261512b565b602082019050919050565b6000614737602a83614c5e565b915061474282615154565b604082019050919050565b600061475a601f83614c5e565b9150614765826151a3565b602082019050919050565b61477981614d7d565b82525050565b61478881614d87565b82525050565b600061479a828461453f565b915081905092915050565b60006147b0826145cc565b91506147bc82856144fb565b6020820191506147cc82846144fb565b6020820191508190509392505050565b60006147e782614635565b91506147f382856144fb565b60208201915061480382846144fb565b6020820191508190509392505050565b60006020820190506148286000830184614470565b92915050565b60006060820190506148436000830186614470565b6148506020830185614470565b61485d6040830184614770565b949350505050565b600060e08201905061487a600083018a614470565b6148876020830189614470565b6148946040830188614770565b6148a16060830187614770565b6148ae608083018661477f565b6148bb60a08301856144ec565b6148c860c08301846144ec565b98975050505050505050565b60006040820190506148e96000830185614470565b6148f66020830184614770565b9392505050565b60006060820190506149126000830187614470565b61491f6020830186614770565b8181036040830152614932818486614512565b905095945050505050565b60006020820190508181036000830152614957818461447f565b905092915050565b600060208201905061497460008301846144dd565b92915050565b600060208201905061498f60008301846144ec565b92915050565b600060c0820190506149aa60008301896144ec565b6149b76020830188614470565b6149c46040830187614470565b6149d16060830186614770565b6149de6080830185614770565b6149eb60a0830184614770565b979650505050505050565b6000608082019050614a0b60008301876144ec565b614a18602083018661477f565b614a2560408301856144ec565b614a3260608301846144ec565b95945050505050565b60006020820190508181036000830152614a558184614570565b905092915050565b60006020820190508181036000830152614a76816145a9565b9050919050565b60006020820190508181036000830152614a96816145ef565b9050919050565b60006020820190508181036000830152614ab681614612565b9050919050565b60006020820190508181036000830152614ad681614658565b9050919050565b60006020820190508181036000830152614af68161467b565b9050919050565b60006020820190508181036000830152614b168161469e565b9050919050565b60006020820190508181036000830152614b36816146c1565b9050919050565b60006020820190508181036000830152614b56816146e4565b9050919050565b60006020820190508181036000830152614b7681614707565b9050919050565b60006020820190508181036000830152614b968161472a565b9050919050565b60006020820190508181036000830152614bb68161474d565b9050919050565b6000602082019050614bd26000830184614770565b92915050565b6000602082019050614bed600083018461477f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614c8582614d7d565b9150614c9083614d7d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614cc557614cc4614e5b565b5b828201905092915050565b6000614cdb82614d7d565b9150614ce683614d7d565b925082614cf657614cf5614e8a565b5b828204905092915050565b6000614d0c82614d7d565b9150614d1783614d7d565b925082821015614d2a57614d29614e5b565b5b828203905092915050565b6000614d4082614d5d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015614dc1578082015181840152602081019050614da6565b83811115614dd0576000848401525b50505050565b60006002820490506001821680614dee57607f821691505b60208210811415614e0257614e01614eb9565b5b50919050565b6000614e1382614d7d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614e4657614e45614e5b565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f537461746572613a20464f5242494444454e0000000000000000000000000000600082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f537461746572613a2043616e206e6f74206d696e7420746f20746865207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b7f537461746572613a2072657175657374206578636565647320616c6c6f77616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564600082015250565b7f537461746572613a206f6e6c7941757468000000000000000000000000000000600082015250565b7f537461746572613a206164647265737328307830290000000000000000000000600082015250565b7f537461746572613a207472616e7366657220616d6f756e74206578636565647360008201527f2062616c616e6365000000000000000000000000000000000000000000000000602082015250565b7f537461746572613a2043616e206e6f74206275726e2066726f6d20746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f537461746572613a2045787069726564207065726d6974000000000000000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400600082015250565b6151d581614d35565b81146151e057600080fd5b50565b6151ec81614d47565b81146151f757600080fd5b50565b61520381614d53565b811461520e57600080fd5b50565b61521a81614d7d565b811461522557600080fd5b50565b61523181614d87565b811461523c57600080fd5b5056fea264697066735822122004e7d7ba16cde8abe1dd8c6328ae083c16940e572eb901a3ab701ce861a5f02464736f6c6343000802003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043189898d712df36d37c41d2897843482f729c650000000000000000000000000000000000000000000000000000000000000007537461746572610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035354410000000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043189898d712df36d37c41d2897843482f729c650000000000000000000000000000000000000000000000000000000000000007537461746572610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035354410000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Statera
Arg [1] : _symbol (string): STA
Arg [2] : _decimals (uint8): 18
Arg [3] : _underlying (address): 0x0000000000000000000000000000000000000000
Arg [4] : _vault (address): 0x43189898d712df36d37c41d2897843482f729c65

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 00000000000000000000000043189898d712df36d37c41d2897843482f729c65
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 5374617465726100000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [8] : 5354410000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

5829:21516:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15185:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6195:136;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15051:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5905:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19956:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17365:265;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8676:179;;;:::i;:::-;;12817:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24399:1360;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14921:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7962:272;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6051:137;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5957:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6338;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14787:126;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26373:969;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9781:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7315:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7250:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13018:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9455:318;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20117:1385;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9133:314;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10347;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8391:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6925:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14239:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6007:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6445:54;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10933:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13130:349;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7072:24;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7284:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7599:78;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7183:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5930:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9922:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9024:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7346:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22761:884;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7025:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14042:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14440:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7218:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7860:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18051:356;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8918:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13788:246;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19240:708;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8539:129;;;:::i;:::-;;11140:75;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10130:209;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7685:167;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13487:293;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7154:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8242:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15185:149;15275:4;7543:5;:3;:5::i;:::-;7529:19;;:10;:19;;;7521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15299:27:::1;15309:4;15315:6;15323:2;15299:9;:27::i;:::-;15292:34;;15185:149:::0;;;;;:::o;6195:136::-;6239:92;6195:136;:::o;15051:126::-;15112:4;15136:33;15146:10;15158:6;15166:2;15136:9;:33::i;:::-;15129:40;;15051:126;;;;:::o;5905:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19956:153::-;20005:7;20026:16;20072:3;20064:5;:11;;;;:::i;:::-;20053:22;;20093:8;20086:15;;;19956:153;;;:::o;17365:265::-;17441:4;17541:5;17508:9;:21;17518:10;17508:21;;;;;;;;;;;;;;;:30;17530:7;17508:30;;;;;;;;;;;;;;;:38;;;;17583:7;17562:36;;17571:10;17562:36;;;17592:5;17562:36;;;;;;:::i;:::-;;;;;;;;17618:4;17611:11;;17365:265;;;;:::o;8676:179::-;7543:5;:3;:5::i;:::-;7529:19;;:10;:19;;;7521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8756:11:::1;;8737:15;:30;;8729:39;;;::::0;::::1;;8805:4;8779:8;:23;8788:13;;;;;;;;;;;8779:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;8820:7;8833:13;;;;;;;;;;;8820:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8676:179::o:0;12817:102::-;12872:7;12899:12;;12892:19;;12817:102;:::o;24399:1360::-;24489:4;24528:1;24514:16;;:2;:16;;;;:39;;;;24548:4;24534:19;;:2;:19;;;;24514:39;24506:48;;;;;;24577:10;24569:18;;:4;:18;;;24565:470;;24665:15;24683:9;:15;24693:4;24683:15;;;;;;;;;;;;;;;:27;24699:10;24683:27;;;;;;;;;;;;;;;;24665:45;;24740:17;24729:7;:28;24725:299;;24797:5;24786:7;:16;;24778:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;24860:15;24888:5;24878:7;:15;;;;:::i;:::-;24860:33;;24942:7;24912:9;:15;24922:4;24912:15;;;;;;;;;;;;;;;:27;24928:10;24912:27;;;;;;;;;;;;;;;:37;;;;24988:10;24973:35;;24982:4;24973:35;;;25000:7;24973:35;;;;;;:::i;:::-;;;;;;;;24725:299;;24565:470;;25047:15;25065:9;:15;25075:4;25065:15;;;;;;;;;;;;;;;;25047:33;;25110:5;25099:7;:16;;25091:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;25229:17;25249:10;25253:5;25249:3;:10::i;:::-;25229:30;;25321:34;25339:4;25345:9;25321:17;:34::i;:::-;25433:21;25465:9;25457:5;:17;;;;:::i;:::-;25433:41;;25562:5;25552:7;:15;;;;:::i;:::-;25534:9;:15;25544:4;25534:15;;;;;;;;;;;;;;;:33;;;;25663:13;25646:9;:13;25656:2;25646:13;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;25709:2;25694:33;;25703:4;25694:33;;;25713:13;25694:33;;;;;;:::i;:::-;;;;;;;;25747:4;25740:11;;;;;24399:1360;;;;;:::o;14921:122::-;14970:4;14994:41;15004:10;15016:6;15024:10;14994:9;:41::i;:::-;14987:48;;14921:122;;;:::o;7962:272::-;7543:5;:3;:5::i;:::-;7529:19;;:10;:19;;;7521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8035:5:::1;;;;;;;;;;;8027:14;;;::::0;::::1;;8060:6;8052:5;;:14;;;;;;;;;;;;;;;;;;8092:6;8077:12;;:21;;;;;;;;;;;;;;;;;;8128:4;8109:8;:16;8118:6;8109:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;8143:7;8156:6;8143:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8187:15;8174:10;:28;;;;8221:5;8213;;:13;;;;;;;;;;;;;;;;;;7962:272:::0;:::o;6051:137::-;6093:95;6051:137;:::o;5957:41::-;;;:::o;6338:::-;;;:::o;14787:126::-;14825:4;14849:56;14859:10;14871:9;:21;14881:10;14871:21;;;;;;;;;;;;;;;;14894:10;14849:9;:56::i;:::-;14842:63;;14787:126;:::o;26373:969::-;26470:4;26509:1;26495:16;;:2;:16;;;;:39;;;;26529:4;26515:19;;:2;:19;;;;26495:39;26487:48;;;;;;26548:15;26566:9;:21;26576:10;26566:21;;;;;;;;;;;;;;;;26548:39;;26617:5;26606:7;:16;;26598:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;26736:17;26756:10;26760:5;26756:3;:10::i;:::-;26736:30;;26828:40;26846:10;26858:9;26828:17;:40::i;:::-;26946:21;26978:9;26970:5;:17;;;;:::i;:::-;26946:41;;27081:5;27071:7;:15;;;;:::i;:::-;27047:9;:21;27057:10;27047:21;;;;;;;;;;;;;;;:39;;;;27182:13;27165:9;:13;27175:2;27165:13;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;27234:2;27213:39;;27222:10;27213:39;;;27238:13;27213:39;;;;;;:::i;:::-;;;;;;;;27290:2;27272:37;;;27310:10;27322:5;27329:4;;27272:62;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27265:69;;;;;26373:969;;;;;;:::o;9781:133::-;9850:4;7418:8;:20;7427:10;7418:20;;;;;;;;;;;;;;;;;;;;;;;;;7410:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;9867:17:::1;9873:2;9877:6;9867:5;:17::i;:::-;9902:4;9895:11;;9781:133:::0;;;;:::o;7315:24::-;;;;:::o;7250:27::-;;;;;;;;;;;;;:::o;13018:104::-;13074:7;13101:13;;13094:20;;13018:104;:::o;9455:318::-;9523:4;7543:5;:3;:5::i;:::-;7529:19;;:10;:19;;;7521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;9568:1:::1;9548:22;;:8;:22;;;;9540:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9622:8;9607:12;;:23;;;;;;;;;;;;;;;;;;9672:5;;9654:15;:23;;;;:::i;:::-;9641:10;:36;;;;9732:10;;9718:12;;;;;;;;;;;9693:50;;9711:5;;;;;;;;;;;9693:50;;;;;;;;;;;;9761:4;9754:11;;9455:318:::0;;;:::o;20117:1385::-;20264:4;20308:8;20289:15;:27;;20281:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;20357:18;6239:92;20467:6;20492:2;20513:5;20537:6;:14;20544:6;20537:14;;;;;;;;;;;;;;;;:16;;;;;;;;;:::i;:::-;;;;;20572:8;20402:179;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20378:204;;;;;;20357:225;;20603:41;20616:6;20624:10;20636:1;20639;20642;20603:12;:41::i;:::-;:92;;;;20648:47;20667:6;20675:10;20687:1;20690;20693;20648:18;:47::i;:::-;20603:92;20595:101;;;;;;20731:1;20717:16;;:2;:16;;;;:39;;;;20751:4;20737:19;;:2;:19;;;;20717:39;20709:48;;;;;;20770:15;20788:9;:17;20798:6;20788:17;;;;;;;;;;;;;;;;20770:35;;20835:5;20824:7;:16;;20816:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;20954:17;20974:10;20978:5;20974:3;:10::i;:::-;20954:30;;21058:36;21076:6;21084:9;21058:17;:36::i;:::-;21172:21;21204:9;21196:5;:17;;;;:::i;:::-;21172:41;;21303:5;21293:7;:15;;;;:::i;:::-;21273:9;:17;21283:6;21273:17;;;;;;;;;;;;;;;:35;;;;21404:13;21387:9;:13;21397:2;21387:13;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;21452:2;21435:35;;21444:6;21435:35;;;21456:13;21435:35;;;;;;:::i;:::-;;;;;;;;21490:4;21483:11;;;;;;20117:1385;;;;;;;;;:::o;9133:314::-;9200:4;7543:5;:3;:5::i;:::-;7529:19;;:10;:19;;;7521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;9245:1:::1;9225:22;;:8;:22;;;;9217:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9299:8;9284:12;;:23;;;;;;;;;;;;;;;;;;9349:5;;9331:15;:23;;;;:::i;:::-;9318:10;:36;;;;9406:10;;9392:12;;;;;;;;;;;9370:47;;9385:5;;;;;;;;;;;9370:47;;;;;;;;;;;;9435:4;9428:11;;9133:314:::0;;;:::o;10347:::-;10414:4;10440:10;;;;;;;;;;;10439:11;10431:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;10511:1;10491:22;;:8;:22;;;;10483:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10550:25;10556:10;10568:6;10550:5;:25::i;:::-;10614:8;10591:40;;10602:10;10591:40;;;10624:6;10591:40;;;;;;:::i;:::-;;;;;;;;10649:4;10642:11;;10347:314;;;;:::o;8391:140::-;7543:5;:3;:5::i;:::-;7529:19;;:10;:19;;;7521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8470:6:::1;8455:12;;:21;;;;;;;;;;;;;;;;;;8518:5;;8500:15;:23;;;;:::i;:::-;8487:10;:36;;;;8391:140:::0;:::o;6925:29::-;;;;:::o;14239:193::-;14299:4;14316:70;14352:10;14372:4;14379:6;14323:10;14316:35;;;;:70;;;;;;:::i;:::-;14404:20;14413:6;14421:2;14404:8;:20::i;:::-;14397:27;;14239:193;;;;:::o;6007:35::-;;;:::o;6445:54::-;;;;;;;;;;;;;;;;;:::o;10933:51::-;;;;;;;;;;;;;;;;;:::o;13130:349::-;13267:4;13291:10;13284:25;;;13310:6;13326:4;13333:5;13340:8;13350:1;13353;13356;13284:74;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13369:65;13405:6;13421:4;13428:5;13376:10;13369:35;;;;:65;;;;;;:::i;:::-;13452:19;13461:5;13468:2;13452:8;:19::i;:::-;13445:26;;13130:349;;;;;;;;;:::o;7072:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7284:22::-;;;;:::o;7599:78::-;7637:7;7664:5;:3;:5::i;:::-;7657:12;;7599:78;:::o;7183:28::-;;;;;;;;;;;;;:::o;5930:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9922:200::-;9993:4;7418:8;:20;7427:10;7418:20;;;;;;;;;;;;;;;;;;;;;;;;;7410:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;10034:1:::1;10018:18;;:4;:18;;;;10010:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;10073:19;10079:4;10085:6;10073:5;:19::i;:::-;10110:4;10103:11;;9922:200:::0;;;;:::o;9024:99::-;9072:16;9108:7;9101:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9024:99;:::o;7346:22::-;;;;:::o;22761:884::-;22833:4;22872:1;22858:16;;:2;:16;;;;:39;;;;22892:4;22878:19;;:2;:19;;;;22858:39;22850:48;;;;;;22909:15;22927:9;:21;22937:10;22927:21;;;;;;;;;;;;;;;;22909:39;;22978:5;22967:7;:16;;22959:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23097:17;23117:10;23121:5;23117:3;:10::i;:::-;23097:30;;23189:40;23207:10;23219:9;23189:17;:40::i;:::-;23307:21;23339:9;23331:5;:17;;;;:::i;:::-;23307:41;;23442:5;23432:7;:15;;;;:::i;:::-;23408:9;:21;23418:10;23408:21;;;;;;;;;;;;;;;:39;;;;23543:13;23526:9;:13;23536:2;23526:13;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;23595:2;23574:39;;23583:10;23574:39;;;23599:13;23574:39;;;;;;:::i;:::-;;;;;;;;23633:4;23626:11;;;;;22761:884;;;;:::o;7025:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;14042:189::-;14090:4;14107:70;14143:10;14163:4;14170:6;14114:10;14107:35;;;;:70;;;;;;:::i;:::-;14195:28;14204:6;14212:10;14195:8;:28::i;:::-;14188:35;;14042:189;;;:::o;14440:127::-;14515:4;7543:5;:3;:5::i;:::-;7529:19;;:10;:19;;;7521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14539:20:::1;14548:6;14556:2;14539:8;:20::i;:::-;14532:27;;14440:127:::0;;;;:::o;7218:23::-;;;;:::o;7860:94::-;7543:5;:3;:5::i;:::-;7529:19;;:10;:19;;;7521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;7939:7:::1;7926:10;;:20;;;;;;;;;;;;;;;;;;7860:94:::0;:::o;18051:356::-;18155:4;18255:5;18222:9;:21;18232:10;18222:21;;;;;;;;;;;;;;;:30;18244:7;18222:30;;;;;;;;;;;;;;;:38;;;;18297:7;18276:36;;18285:10;18276:36;;;18306:5;18276:36;;;;;;:::i;:::-;;;;;;;;18350:7;18332:42;;;18375:10;18387:5;18394:4;;18332:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18325:74;;18051:356;;;;;;:::o;8918:98::-;7543:5;:3;:5::i;:::-;7529:19;;:10;:19;;;7521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;9003:5:::1;8985:8;:15;8994:5;8985:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;8918:98:::0;:::o;13788:246::-;13825:4;13842:12;13864:10;13857:28;;;13886:10;13857:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13842:55;;13908:71;13944:10;13964:4;13971:7;13915:10;13908:35;;;;:71;;;;;;:::i;:::-;13997:29;14006:7;14015:10;13997:8;:29::i;:::-;13990:36;;;13788:246;:::o;19240:708::-;19409:8;19390:15;:27;;19382:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;19458:18;6093:95;19566:6;19591:7;19617:5;19641:6;:14;19648:6;19641:14;;;;;;;;;;;;;;;;:16;;;;;;;;;:::i;:::-;;;;;19676:8;19503:182;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19479:207;;;;;;19458:228;;19707:41;19720:6;19728:10;19740:1;19743;19746;19707:12;:41::i;:::-;:92;;;;19752:47;19771:6;19779:10;19791:1;19794;19797;19752:18;:47::i;:::-;19707:92;19699:101;;;;;;19887:5;19858:9;:17;19868:6;19858:17;;;;;;;;;;;;;;;:26;19876:7;19858:26;;;;;;;;;;;;;;;:34;;;;19925:7;19908:32;;19917:6;19908:32;;;19934:5;19908:32;;;;;;:::i;:::-;;;;;;;;19240:708;;;;;;;;:::o;8539:129::-;7543:5;:3;:5::i;:::-;7529:19;;:10;:19;;;7521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8618:10:::1;;8599:15;:29;;8591:38;;;::::0;::::1;;8648:12;;;;;;;;;;;8640:5;;:20;;;;;;;;;;;;;;;;;;8539:129::o:0;11140:75::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10130:209::-;10220:4;7418:8;:20;7427:10;7418:20;;;;;;;;;;;;;;;;;;;;;;;;;7410:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;10237:22:::1;10243:7;10252:6;10237:5;:22::i;:::-;10293:7;10275:34;;10285:6;10275:34;10302:6;10275:34;;;;;;:::i;:::-;;;;;;;;10327:4;10320:11;;10130:209:::0;;;;;:::o;7685:167::-;7721:7;7764:10;;7745:15;:29;7741:81;;7798:12;;;;;;;;;;;7791:19;;;;7741:81;7839:5;;;;;;;;;;;7832:12;;7685:167;;:::o;13487:293::-;13632:4;13656:10;13649:37;;;13687:6;13703:4;13710:5;13717:8;13727:1;13730;13733;13649:86;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13753:19;13762:5;13769:2;13753:8;:19::i;:::-;13746:26;;13487:293;;;;;;;;;:::o;7154:20::-;;;;;;;;;;;;;:::o;8242:141::-;7543:5;:3;:5::i;:::-;7529:19;;:10;:19;;;7521:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8322:5:::1;8306:13;;:21;;;;;;;;;;;;;;;;;;8370:5;;8352:15;:23;;;;:::i;:::-;8338:11;:37;;;;8242:141:::0;:::o;15342:198::-;15418:4;15435:19;15441:4;15447:6;15435:5;:19::i;:::-;15465:43;15497:2;15501:6;15472:10;15465:31;;;;:43;;;;;:::i;:::-;15526:6;15519:13;;15342:198;;;;;:::o;16838:325::-;16944:1;16925:21;;:7;:21;;;;16917:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;17029:6;17007:9;:18;17017:7;17007:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;17062:6;17046:12;;:22;;;;;;;:::i;:::-;;;;;;;;17096:6;17079:13;;:23;;;;;;;:::i;:::-;;;;;;;;17144:1;17118:37;;17127:7;17118:37;;;17148:6;17118:37;;;;;;:::i;:::-;;;;;;;;16838:325;;:::o;15821:278::-;15916:1;15897:21;;:7;:21;;;;15889:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15993:6;15977:12;;:22;;;;;;;:::i;:::-;;;;;;;;16032:6;16010:9;:18;16020:7;16010:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;16075:7;16054:37;;16071:1;16054:37;;;16084:6;16054:37;;;;;;:::i;:::-;;;;;;;;15821:278;;:::o;21510:399::-;21622:4;21639:12;21742:16;21777:10;21678:110;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21654:135;;;;;;21639:150;;21800:14;21817:24;21827:4;21833:1;21836;21839;21817:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21800:41;;21878:1;21860:20;;:6;:20;;;;:40;;;;;21894:6;21884:16;;:6;:16;;;21860:40;21852:49;;;;21510:399;;;;;;;:::o;21917:290::-;22035:4;22052:12;22067:20;22076:10;22067:8;:20::i;:::-;22052:35;;22098:14;22115:24;22125:4;22131:1;22134;22137;22115:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22098:41;;22176:1;22158:20;;:6;:20;;;;:40;;;;;22192:6;22182:16;;:6;:16;;;22158:40;22150:49;;;;21917:290;;;;;;;:::o;16431:280::-;16526:1;16507:21;;:7;:21;;;;16499:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;16611:6;16589:9;:18;16599:7;16589:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;16644:6;16628:12;;:22;;;;;;;:::i;:::-;;;;;;;;16692:1;16666:37;;16675:7;16666:37;;;16696:6;16666:37;;;;;;:::i;:::-;;;;;;;;16431:280;;:::o;4665:201::-;4763:95;4782:5;4812:27;;;4841:4;4847:2;4851:5;4789:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4763:18;:95::i;:::-;4665:201;;;;:::o;14575:204::-;14636:4;14683:3;14661:26;;:10;:26;;;;:57;;;;;14713:4;14691:27;;:10;:27;;;;14661:57;14653:66;;;;;;14730:17;14736:2;14740:6;14730:5;:17::i;:::-;14765:6;14758:13;;14575:204;;;;:::o;4484:173::-;4564:85;4583:5;4613:23;;;4638:2;4642:5;4590:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4564:18;:85::i;:::-;4484:173;;;:::o;22281:177::-;22336:7;22426:16;22444:4;22373:76;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22363:87;;;;;;22356:94;;22281:177;;;:::o;5224:598::-;5312:27;5320:5;5312:25;;;:27::i;:::-;5304:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5449:12;5463:23;5498:5;5490:19;;5510:4;5490:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5448:67;;;;5534:7;5526:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;5615:1;5595:10;:17;:21;5591:224;;;5737:10;5726:30;;;;;;;;;;;;:::i;:::-;5718:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5591:224;5224:598;;;;:::o;4044:374::-;4104:4;4121:16;4148:19;4170:66;4148:88;;;;4339:7;4327:20;4315:32;;4379:3;4367:15;;:8;:15;;:42;;;;;4398:11;4386:8;:23;;4367:42;4359:51;;;;4044:374;;;:::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:137::-;;376:6;370:13;361:22;;392:30;416:5;392:30;:::i;:::-;351:77;;;;:::o;434:139::-;;518:6;505:20;496:29;;534:33;561:5;534:33;:::i;:::-;486:87;;;;:::o;592:351::-;;;709:3;702:4;694:6;690:17;686:27;676:2;;727:1;724;717:12;676:2;763:6;750:20;740:30;;793:18;785:6;782:30;779:2;;;825:1;822;815:12;779:2;862:4;854:6;850:17;838:29;;916:3;908:4;900:6;896:17;886:8;882:32;879:41;876:2;;;933:1;930;923:12;876:2;666:277;;;;;:::o;949:139::-;;1033:6;1020:20;1011:29;;1049:33;1076:5;1049:33;:::i;:::-;1001:87;;;;:::o;1094:143::-;;1182:6;1176:13;1167:22;;1198:33;1225:5;1198:33;:::i;:::-;1157:80;;;;:::o;1243:135::-;;1325:6;1312:20;1303:29;;1341:31;1366:5;1341:31;:::i;:::-;1293:85;;;;:::o;1384:262::-;;1492:2;1480:9;1471:7;1467:23;1463:32;1460:2;;;1508:1;1505;1498:12;1460:2;1551:1;1576:53;1621:7;1612:6;1601:9;1597:22;1576:53;:::i;:::-;1566:63;;1522:117;1450:196;;;;:::o;1652:407::-;;;1777:2;1765:9;1756:7;1752:23;1748:32;1745:2;;;1793:1;1790;1783:12;1745:2;1836:1;1861:53;1906:7;1897:6;1886:9;1882:22;1861:53;:::i;:::-;1851:63;;1807:117;1963:2;1989:53;2034:7;2025:6;2014:9;2010:22;1989:53;:::i;:::-;1979:63;;1934:118;1735:324;;;;;:::o;2065:552::-;;;;2207:2;2195:9;2186:7;2182:23;2178:32;2175:2;;;2223:1;2220;2213:12;2175:2;2266:1;2291:53;2336:7;2327:6;2316:9;2312:22;2291:53;:::i;:::-;2281:63;;2237:117;2393:2;2419:53;2464:7;2455:6;2444:9;2440:22;2419:53;:::i;:::-;2409:63;;2364:118;2521:2;2547:53;2592:7;2583:6;2572:9;2568:22;2547:53;:::i;:::-;2537:63;;2492:118;2165:452;;;;;:::o;2623:1132::-;;;;;;;;2831:3;2819:9;2810:7;2806:23;2802:33;2799:2;;;2848:1;2845;2838:12;2799:2;2891:1;2916:53;2961:7;2952:6;2941:9;2937:22;2916:53;:::i;:::-;2906:63;;2862:117;3018:2;3044:53;3089:7;3080:6;3069:9;3065:22;3044:53;:::i;:::-;3034:63;;2989:118;3146:2;3172:53;3217:7;3208:6;3197:9;3193:22;3172:53;:::i;:::-;3162:63;;3117:118;3274:2;3300:53;3345:7;3336:6;3325:9;3321:22;3300:53;:::i;:::-;3290:63;;3245:118;3402:3;3429:51;3472:7;3463:6;3452:9;3448:22;3429:51;:::i;:::-;3419:61;;3373:117;3529:3;3556:53;3601:7;3592:6;3581:9;3577:22;3556:53;:::i;:::-;3546:63;;3500:119;3658:3;3685:53;3730:7;3721:6;3710:9;3706:22;3685:53;:::i;:::-;3675:63;;3629:119;2789:966;;;;;;;;;;:::o;3761:407::-;;;3886:2;3874:9;3865:7;3861:23;3857:32;3854:2;;;3902:1;3899;3892:12;3854:2;3945:1;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;:::i;:::-;3960:63;;3916:117;4072:2;4098:53;4143:7;4134:6;4123:9;4119:22;4098:53;:::i;:::-;4088:63;;4043:118;3844:324;;;;;:::o;4174:552::-;;;;4316:2;4304:9;4295:7;4291:23;4287:32;4284:2;;;4332:1;4329;4322:12;4284:2;4375:1;4400:53;4445:7;4436:6;4425:9;4421:22;4400:53;:::i;:::-;4390:63;;4346:117;4502:2;4528:53;4573:7;4564:6;4553:9;4549:22;4528:53;:::i;:::-;4518:63;;4473:118;4630:2;4656:53;4701:7;4692:6;4681:9;4677:22;4656:53;:::i;:::-;4646:63;;4601:118;4274:452;;;;;:::o;4732:683::-;;;;;4893:2;4881:9;4872:7;4868:23;4864:32;4861:2;;;4909:1;4906;4899:12;4861:2;4952:1;4977:53;5022:7;5013:6;5002:9;4998:22;4977:53;:::i;:::-;4967:63;;4923:117;5079:2;5105:53;5150:7;5141:6;5130:9;5126:22;5105:53;:::i;:::-;5095:63;;5050:118;5235:2;5224:9;5220:18;5207:32;5266:18;5258:6;5255:30;5252:2;;;5298:1;5295;5288:12;5252:2;5334:64;5390:7;5381:6;5370:9;5366:22;5334:64;:::i;:::-;5316:82;;;;5178:230;4851:564;;;;;;;:::o;5421:1132::-;;;;;;;;5629:3;5617:9;5608:7;5604:23;5600:33;5597:2;;;5646:1;5643;5636:12;5597:2;5689:1;5714:53;5759:7;5750:6;5739:9;5735:22;5714:53;:::i;:::-;5704:63;;5660:117;5816:2;5842:53;5887:7;5878:6;5867:9;5863:22;5842:53;:::i;:::-;5832:63;;5787:118;5944:2;5970:53;6015:7;6006:6;5995:9;5991:22;5970:53;:::i;:::-;5960:63;;5915:118;6072:2;6098:51;6141:7;6132:6;6121:9;6117:22;6098:51;:::i;:::-;6088:61;;6043:116;6198:3;6225:53;6270:7;6261:6;6250:9;6246:22;6225:53;:::i;:::-;6215:63;;6169:119;6327:3;6354:53;6399:7;6390:6;6379:9;6375:22;6354:53;:::i;:::-;6344:63;;6298:119;6456:3;6483:53;6528:7;6519:6;6508:9;6504:22;6483:53;:::i;:::-;6473:63;;6427:119;5587:966;;;;;;;;;;:::o;6559:256::-;;6664:2;6652:9;6643:7;6639:23;6635:32;6632:2;;;6680:1;6677;6670:12;6632:2;6723:1;6748:50;6790:7;6781:6;6770:9;6766:22;6748:50;:::i;:::-;6738:60;;6694:114;6622:193;;;;:::o;6821:278::-;;6937:2;6925:9;6916:7;6912:23;6908:32;6905:2;;;6953:1;6950;6943:12;6905:2;6996:1;7021:61;7074:7;7065:6;7054:9;7050:22;7021:61;:::i;:::-;7011:71;;6967:125;6895:204;;;;:::o;7105:552::-;;;;7247:2;7235:9;7226:7;7222:23;7218:32;7215:2;;;7263:1;7260;7253:12;7215:2;7306:1;7331:53;7376:7;7367:6;7356:9;7352:22;7331:53;:::i;:::-;7321:63;;7277:117;7433:2;7459:53;7504:7;7495:6;7484:9;7480:22;7459:53;:::i;:::-;7449:63;;7404:118;7561:2;7587:53;7632:7;7623:6;7612:9;7608:22;7587:53;:::i;:::-;7577:63;;7532:118;7205:452;;;;;:::o;7663:262::-;;7771:2;7759:9;7750:7;7746:23;7742:32;7739:2;;;7787:1;7784;7777:12;7739:2;7830:1;7855:53;7900:7;7891:6;7880:9;7876:22;7855:53;:::i;:::-;7845:63;;7801:117;7729:196;;;;:::o;7931:284::-;;8050:2;8038:9;8029:7;8025:23;8021:32;8018:2;;;8066:1;8063;8056:12;8018:2;8109:1;8134:64;8190:7;8181:6;8170:9;8166:22;8134:64;:::i;:::-;8124:74;;8080:128;8008:207;;;;:::o;8221:407::-;;;8346:2;8334:9;8325:7;8321:23;8317:32;8314:2;;;8362:1;8359;8352:12;8314:2;8405:1;8430:53;8475:7;8466:6;8455:9;8451:22;8430:53;:::i;:::-;8420:63;;8376:117;8532:2;8558:53;8603:7;8594:6;8583:9;8579:22;8558:53;:::i;:::-;8548:63;;8503:118;8304:324;;;;;:::o;8634:179::-;;8724:46;8766:3;8758:6;8724:46;:::i;:::-;8802:4;8797:3;8793:14;8779:28;;8714:99;;;;:::o;8819:108::-;8896:24;8914:5;8896:24;:::i;:::-;8891:3;8884:37;8874:53;;:::o;8933:118::-;9020:24;9038:5;9020:24;:::i;:::-;9015:3;9008:37;8998:53;;:::o;9087:732::-;;9235:54;9283:5;9235:54;:::i;:::-;9305:86;9384:6;9379:3;9305:86;:::i;:::-;9298:93;;9415:56;9465:5;9415:56;:::i;:::-;9494:7;9525:1;9510:284;9535:6;9532:1;9529:13;9510:284;;;9611:6;9605:13;9638:63;9697:3;9682:13;9638:63;:::i;:::-;9631:70;;9724:60;9777:6;9724:60;:::i;:::-;9714:70;;9570:224;9557:1;9554;9550:9;9545:14;;9510:284;;;9514:14;9810:3;9803:10;;9211:608;;;;;;;:::o;9825:109::-;9906:21;9921:5;9906:21;:::i;:::-;9901:3;9894:34;9884:50;;:::o;9940:118::-;10027:24;10045:5;10027:24;:::i;:::-;10022:3;10015:37;10005:53;;:::o;10064:157::-;10169:45;10189:24;10207:5;10189:24;:::i;:::-;10169:45;:::i;:::-;10164:3;10157:58;10147:74;;:::o;10249:301::-;;10366:70;10429:6;10424:3;10366:70;:::i;:::-;10359:77;;10446:43;10482:6;10477:3;10470:5;10446:43;:::i;:::-;10514:29;10536:6;10514:29;:::i;:::-;10509:3;10505:39;10498:46;;10349:201;;;;;:::o;10556:373::-;;10688:38;10720:5;10688:38;:::i;:::-;10742:88;10823:6;10818:3;10742:88;:::i;:::-;10735:95;;10839:52;10884:6;10879:3;10872:4;10865:5;10861:16;10839:52;:::i;:::-;10916:6;10911:3;10907:16;10900:23;;10664:265;;;;;:::o;10935:364::-;;11051:39;11084:5;11051:39;:::i;:::-;11106:71;11170:6;11165:3;11106:71;:::i;:::-;11099:78;;11186:52;11231:6;11226:3;11219:4;11212:5;11208:16;11186:52;:::i;:::-;11263:29;11285:6;11263:29;:::i;:::-;11258:3;11254:39;11247:46;;11027:272;;;;;:::o;11305:366::-;;11468:67;11532:2;11527:3;11468:67;:::i;:::-;11461:74;;11544:93;11633:3;11544:93;:::i;:::-;11662:2;11657:3;11653:12;11646:19;;11451:220;;;:::o;11677:402::-;;11858:85;11940:2;11935:3;11858:85;:::i;:::-;11851:92;;11952:93;12041:3;11952:93;:::i;:::-;12070:2;12065:3;12061:12;12054:19;;11841:238;;;:::o;12085:366::-;;12248:67;12312:2;12307:3;12248:67;:::i;:::-;12241:74;;12324:93;12413:3;12324:93;:::i;:::-;12442:2;12437:3;12433:12;12426:19;;12231:220;;;:::o;12457:366::-;;12620:67;12684:2;12679:3;12620:67;:::i;:::-;12613:74;;12696:93;12785:3;12696:93;:::i;:::-;12814:2;12809:3;12805:12;12798:19;;12603:220;;;:::o;12829:400::-;;13010:84;13092:1;13087:3;13010:84;:::i;:::-;13003:91;;13103:93;13192:3;13103:93;:::i;:::-;13221:1;13216:3;13212:11;13205:18;;12993:236;;;:::o;13235:366::-;;13398:67;13462:2;13457:3;13398:67;:::i;:::-;13391:74;;13474:93;13563:3;13474:93;:::i;:::-;13592:2;13587:3;13583:12;13576:19;;13381:220;;;:::o;13607:366::-;;13770:67;13834:2;13829:3;13770:67;:::i;:::-;13763:74;;13846:93;13935:3;13846:93;:::i;:::-;13964:2;13959:3;13955:12;13948:19;;13753:220;;;:::o;13979:366::-;;14142:67;14206:2;14201:3;14142:67;:::i;:::-;14135:74;;14218:93;14307:3;14218:93;:::i;:::-;14336:2;14331:3;14327:12;14320:19;;14125:220;;;:::o;14351:366::-;;14514:67;14578:2;14573:3;14514:67;:::i;:::-;14507:74;;14590:93;14679:3;14590:93;:::i;:::-;14708:2;14703:3;14699:12;14692:19;;14497:220;;;:::o;14723:366::-;;14886:67;14950:2;14945:3;14886:67;:::i;:::-;14879:74;;14962:93;15051:3;14962:93;:::i;:::-;15080:2;15075:3;15071:12;15064:19;;14869:220;;;:::o;15095:366::-;;15258:67;15322:2;15317:3;15258:67;:::i;:::-;15251:74;;15334:93;15423:3;15334:93;:::i;:::-;15452:2;15447:3;15443:12;15436:19;;15241:220;;;:::o;15467:366::-;;15630:67;15694:2;15689:3;15630:67;:::i;:::-;15623:74;;15706:93;15795:3;15706:93;:::i;:::-;15824:2;15819:3;15815:12;15808:19;;15613:220;;;:::o;15839:366::-;;16002:67;16066:2;16061:3;16002:67;:::i;:::-;15995:74;;16078:93;16167:3;16078:93;:::i;:::-;16196:2;16191:3;16187:12;16180:19;;15985:220;;;:::o;16211:118::-;16298:24;16316:5;16298:24;:::i;:::-;16293:3;16286:37;16276:53;;:::o;16335:112::-;16418:22;16434:5;16418:22;:::i;:::-;16413:3;16406:35;16396:51;;:::o;16453:271::-;;16605:93;16694:3;16685:6;16605:93;:::i;:::-;16598:100;;16715:3;16708:10;;16587:137;;;;:::o;16730:663::-;;16993:148;17137:3;16993:148;:::i;:::-;16986:155;;17151:75;17222:3;17213:6;17151:75;:::i;:::-;17251:2;17246:3;17242:12;17235:19;;17264:75;17335:3;17326:6;17264:75;:::i;:::-;17364:2;17359:3;17355:12;17348:19;;17384:3;17377:10;;16975:418;;;;;:::o;17399:663::-;;17662:148;17806:3;17662:148;:::i;:::-;17655:155;;17820:75;17891:3;17882:6;17820:75;:::i;:::-;17920:2;17915:3;17911:12;17904:19;;17933:75;18004:3;17995:6;17933:75;:::i;:::-;18033:2;18028:3;18024:12;18017:19;;18053:3;18046:10;;17644:418;;;;;:::o;18068:222::-;;18199:2;18188:9;18184:18;18176:26;;18212:71;18280:1;18269:9;18265:17;18256:6;18212:71;:::i;:::-;18166:124;;;;:::o;18296:442::-;;18483:2;18472:9;18468:18;18460:26;;18496:71;18564:1;18553:9;18549:17;18540:6;18496:71;:::i;:::-;18577:72;18645:2;18634:9;18630:18;18621:6;18577:72;:::i;:::-;18659;18727:2;18716:9;18712:18;18703:6;18659:72;:::i;:::-;18450:288;;;;;;:::o;18744:878::-;;19039:3;19028:9;19024:19;19016:27;;19053:71;19121:1;19110:9;19106:17;19097:6;19053:71;:::i;:::-;19134:72;19202:2;19191:9;19187:18;19178:6;19134:72;:::i;:::-;19216;19284:2;19273:9;19269:18;19260:6;19216:72;:::i;:::-;19298;19366:2;19355:9;19351:18;19342:6;19298:72;:::i;:::-;19380:69;19444:3;19433:9;19429:19;19420:6;19380:69;:::i;:::-;19459:73;19527:3;19516:9;19512:19;19503:6;19459:73;:::i;:::-;19542;19610:3;19599:9;19595:19;19586:6;19542:73;:::i;:::-;19006:616;;;;;;;;;;:::o;19628:332::-;;19787:2;19776:9;19772:18;19764:26;;19800:71;19868:1;19857:9;19853:17;19844:6;19800:71;:::i;:::-;19881:72;19949:2;19938:9;19934:18;19925:6;19881:72;:::i;:::-;19754:206;;;;;:::o;19966:549::-;;20181:2;20170:9;20166:18;20158:26;;20194:71;20262:1;20251:9;20247:17;20238:6;20194:71;:::i;:::-;20275:72;20343:2;20332:9;20328:18;20319:6;20275:72;:::i;:::-;20394:9;20388:4;20384:20;20379:2;20368:9;20364:18;20357:48;20422:86;20503:4;20494:6;20486;20422:86;:::i;:::-;20414:94;;20148:367;;;;;;;:::o;20521:373::-;;20702:2;20691:9;20687:18;20679:26;;20751:9;20745:4;20741:20;20737:1;20726:9;20722:17;20715:47;20779:108;20882:4;20873:6;20779:108;:::i;:::-;20771:116;;20669:225;;;;:::o;20900:210::-;;21025:2;21014:9;21010:18;21002:26;;21038:65;21100:1;21089:9;21085:17;21076:6;21038:65;:::i;:::-;20992:118;;;;:::o;21116:222::-;;21247:2;21236:9;21232:18;21224:26;;21260:71;21328:1;21317:9;21313:17;21304:6;21260:71;:::i;:::-;21214:124;;;;:::o;21344:775::-;;21615:3;21604:9;21600:19;21592:27;;21629:71;21697:1;21686:9;21682:17;21673:6;21629:71;:::i;:::-;21710:72;21778:2;21767:9;21763:18;21754:6;21710:72;:::i;:::-;21792;21860:2;21849:9;21845:18;21836:6;21792:72;:::i;:::-;21874;21942:2;21931:9;21927:18;21918:6;21874:72;:::i;:::-;21956:73;22024:3;22013:9;22009:19;22000:6;21956:73;:::i;:::-;22039;22107:3;22096:9;22092:19;22083:6;22039:73;:::i;:::-;21582:537;;;;;;;;;:::o;22125:545::-;;22336:3;22325:9;22321:19;22313:27;;22350:71;22418:1;22407:9;22403:17;22394:6;22350:71;:::i;:::-;22431:68;22495:2;22484:9;22480:18;22471:6;22431:68;:::i;:::-;22509:72;22577:2;22566:9;22562:18;22553:6;22509:72;:::i;:::-;22591;22659:2;22648:9;22644:18;22635:6;22591:72;:::i;:::-;22303:367;;;;;;;:::o;22676:313::-;;22827:2;22816:9;22812:18;22804:26;;22876:9;22870:4;22866:20;22862:1;22851:9;22847:17;22840:47;22904:78;22977:4;22968:6;22904:78;:::i;:::-;22896:86;;22794:195;;;;:::o;22995:419::-;;23199:2;23188:9;23184:18;23176:26;;23248:9;23242:4;23238:20;23234:1;23223:9;23219:17;23212:47;23276:131;23402:4;23276:131;:::i;:::-;23268:139;;23166:248;;;:::o;23420:419::-;;23624:2;23613:9;23609:18;23601:26;;23673:9;23667:4;23663:20;23659:1;23648:9;23644:17;23637:47;23701:131;23827:4;23701:131;:::i;:::-;23693:139;;23591:248;;;:::o;23845:419::-;;24049:2;24038:9;24034:18;24026:26;;24098:9;24092:4;24088:20;24084:1;24073:9;24069:17;24062:47;24126:131;24252:4;24126:131;:::i;:::-;24118:139;;24016:248;;;:::o;24270:419::-;;24474:2;24463:9;24459:18;24451:26;;24523:9;24517:4;24513:20;24509:1;24498:9;24494:17;24487:47;24551:131;24677:4;24551:131;:::i;:::-;24543:139;;24441:248;;;:::o;24695:419::-;;24899:2;24888:9;24884:18;24876:26;;24948:9;24942:4;24938:20;24934:1;24923:9;24919:17;24912:47;24976:131;25102:4;24976:131;:::i;:::-;24968:139;;24866:248;;;:::o;25120:419::-;;25324:2;25313:9;25309:18;25301:26;;25373:9;25367:4;25363:20;25359:1;25348:9;25344:17;25337:47;25401:131;25527:4;25401:131;:::i;:::-;25393:139;;25291:248;;;:::o;25545:419::-;;25749:2;25738:9;25734:18;25726:26;;25798:9;25792:4;25788:20;25784:1;25773:9;25769:17;25762:47;25826:131;25952:4;25826:131;:::i;:::-;25818:139;;25716:248;;;:::o;25970:419::-;;26174:2;26163:9;26159:18;26151:26;;26223:9;26217:4;26213:20;26209:1;26198:9;26194:17;26187:47;26251:131;26377:4;26251:131;:::i;:::-;26243:139;;26141:248;;;:::o;26395:419::-;;26599:2;26588:9;26584:18;26576:26;;26648:9;26642:4;26638:20;26634:1;26623:9;26619:17;26612:47;26676:131;26802:4;26676:131;:::i;:::-;26668:139;;26566:248;;;:::o;26820:419::-;;27024:2;27013:9;27009:18;27001:26;;27073:9;27067:4;27063:20;27059:1;27048:9;27044:17;27037:47;27101:131;27227:4;27101:131;:::i;:::-;27093:139;;26991:248;;;:::o;27245:419::-;;27449:2;27438:9;27434:18;27426:26;;27498:9;27492:4;27488:20;27484:1;27473:9;27469:17;27462:47;27526:131;27652:4;27526:131;:::i;:::-;27518:139;;27416:248;;;:::o;27670:222::-;;27801:2;27790:9;27786:18;27778:26;;27814:71;27882:1;27871:9;27867:17;27858:6;27814:71;:::i;:::-;27768:124;;;;:::o;27898:214::-;;28025:2;28014:9;28010:18;28002:26;;28038:67;28102:1;28091:9;28087:17;28078:6;28038:67;:::i;:::-;27992:120;;;;:::o;28118:132::-;;28208:3;28200:11;;28238:4;28233:3;28229:14;28221:22;;28190:60;;;:::o;28256:114::-;;28357:5;28351:12;28341:22;;28330:40;;;:::o;28376:98::-;;28461:5;28455:12;28445:22;;28434:40;;;:::o;28480:99::-;;28566:5;28560:12;28550:22;;28539:40;;;:::o;28585:113::-;;28687:4;28682:3;28678:14;28670:22;;28660:38;;;:::o;28704:184::-;;28837:6;28832:3;28825:19;28877:4;28872:3;28868:14;28853:29;;28815:73;;;;:::o;28894:168::-;;29011:6;29006:3;28999:19;29051:4;29046:3;29042:14;29027:29;;28989:73;;;;:::o;29068:147::-;;29206:3;29191:18;;29181:34;;;;:::o;29221:169::-;;29339:6;29334:3;29327:19;29379:4;29374:3;29370:14;29355:29;;29317:73;;;;:::o;29396:148::-;;29535:3;29520:18;;29510:34;;;;:::o;29550:305::-;;29609:20;29627:1;29609:20;:::i;:::-;29604:25;;29643:20;29661:1;29643:20;:::i;:::-;29638:25;;29797:1;29729:66;29725:74;29722:1;29719:81;29716:2;;;29803:18;;:::i;:::-;29716:2;29847:1;29844;29840:9;29833:16;;29594:261;;;;:::o;29861:185::-;;29918:20;29936:1;29918:20;:::i;:::-;29913:25;;29952:20;29970:1;29952:20;:::i;:::-;29947:25;;29991:1;29981:2;;29996:18;;:::i;:::-;29981:2;30038:1;30035;30031:9;30026:14;;29903:143;;;;:::o;30052:191::-;;30112:20;30130:1;30112:20;:::i;:::-;30107:25;;30146:20;30164:1;30146:20;:::i;:::-;30141:25;;30185:1;30182;30179:8;30176:2;;;30190:18;;:::i;:::-;30176:2;30235:1;30232;30228:9;30220:17;;30097:146;;;;:::o;30249:96::-;;30315:24;30333:5;30315:24;:::i;:::-;30304:35;;30294:51;;;:::o;30351:90::-;;30428:5;30421:13;30414:21;30403:32;;30393:48;;;:::o;30447:77::-;;30513:5;30502:16;;30492:32;;;:::o;30530:126::-;;30607:42;30600:5;30596:54;30585:65;;30575:81;;;:::o;30662:77::-;;30728:5;30717:16;;30707:32;;;:::o;30745:86::-;;30820:4;30813:5;30809:16;30798:27;;30788:43;;;:::o;30837:154::-;30921:6;30916:3;30911;30898:30;30983:1;30974:6;30969:3;30965:16;30958:27;30888:103;;;:::o;30997:307::-;31065:1;31075:113;31089:6;31086:1;31083:13;31075:113;;;31174:1;31169:3;31165:11;31159:18;31155:1;31150:3;31146:11;31139:39;31111:2;31108:1;31104:10;31099:15;;31075:113;;;31206:6;31203:1;31200:13;31197:2;;;31286:1;31277:6;31272:3;31268:16;31261:27;31197:2;31046:258;;;;:::o;31310:320::-;;31391:1;31385:4;31381:12;31371:22;;31438:1;31432:4;31428:12;31459:18;31449:2;;31515:4;31507:6;31503:17;31493:27;;31449:2;31577;31569:6;31566:14;31546:18;31543:38;31540:2;;;31596:18;;:::i;:::-;31540:2;31361:269;;;;:::o;31636:233::-;;31698:24;31716:5;31698:24;:::i;:::-;31689:33;;31744:66;31737:5;31734:77;31731:2;;;31814:18;;:::i;:::-;31731:2;31861:1;31854:5;31850:13;31843:20;;31679:190;;;:::o;31875:79::-;;31943:5;31932:16;;31922:32;;;:::o;31960:180::-;32008:77;32005:1;31998:88;32105:4;32102:1;32095:15;32129:4;32126:1;32119:15;32146:180;32194:77;32191:1;32184:88;32291:4;32288:1;32281:15;32315:4;32312:1;32305:15;32332:180;32380:77;32377:1;32370:88;32477:4;32474:1;32467:15;32501:4;32498:1;32491:15;32518:102;;32610:2;32606:7;32601:2;32594:5;32590:14;32586:28;32576:38;;32566:54;;;:::o;32626:168::-;32766:20;32762:1;32754:6;32750:14;32743:44;32732:62;:::o;32800:214::-;32940:66;32936:1;32928:6;32924:14;32917:90;32906:108;:::o;33020:228::-;33160:34;33156:1;33148:6;33144:14;33137:58;33229:11;33224:2;33216:6;33212:15;33205:36;33126:122;:::o;33254:221::-;33394:34;33390:1;33382:6;33378:14;33371:58;33463:4;33458:2;33450:6;33446:15;33439:29;33360:115;:::o;33481:214::-;33621:66;33617:1;33609:6;33605:14;33598:90;33587:108;:::o;33701:182::-;33841:34;33837:1;33829:6;33825:14;33818:58;33807:76;:::o;33889:167::-;34029:19;34025:1;34017:6;34013:14;34006:43;33995:61;:::o;34062:171::-;34202:23;34198:1;34190:6;34186:14;34179:47;34168:65;:::o;34239:227::-;34379:34;34375:1;34367:6;34363:14;34356:58;34448:10;34443:2;34435:6;34431:15;34424:35;34345:121;:::o;34472:230::-;34612:34;34608:1;34600:6;34596:14;34589:58;34681:13;34676:2;34668:6;34664:15;34657:38;34578:124;:::o;34708:173::-;34848:25;34844:1;34836:6;34832:14;34825:49;34814:67;:::o;34887:229::-;35027:34;35023:1;35015:6;35011:14;35004:58;35096:12;35091:2;35083:6;35079:15;35072:37;34993:123;:::o;35122:181::-;35262:33;35258:1;35250:6;35246:14;35239:57;35228:75;:::o;35309:122::-;35382:24;35400:5;35382:24;:::i;:::-;35375:5;35372:35;35362:2;;35421:1;35418;35411:12;35362:2;35352:79;:::o;35437:116::-;35507:21;35522:5;35507:21;:::i;:::-;35500:5;35497:32;35487:2;;35543:1;35540;35533:12;35487:2;35477:76;:::o;35559:122::-;35632:24;35650:5;35632:24;:::i;:::-;35625:5;35622:35;35612:2;;35671:1;35668;35661:12;35612:2;35602:79;:::o;35687:122::-;35760:24;35778:5;35760:24;:::i;:::-;35753:5;35750:35;35740:2;;35799:1;35796;35789:12;35740:2;35730:79;:::o;35815:118::-;35886:22;35902:5;35886:22;:::i;:::-;35879:5;35876:33;35866:2;;35923:1;35920;35913:12;35866:2;35856:77;:::o

Swarm Source

ipfs://04e7d7ba16cde8abe1dd8c6328ae083c16940e572eb901a3ab701ce861a5f024
Loading