Token Ripae

 

Overview ERC20

Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
80,362.19107 PAE

Holders:
164 addresses
Contract:
0xae8627db72d7fc6241f2e2b87eb2bbc7cafb16610xae8627dB72d7Fc6241f2E2B87EB2BbC7cAfB1661

Decimals:
18

Social Profiles:
Not Available, Update ?

Balance
0 PAE

Value
$0.00
0x2ba3c3e9d61c776b415eccd753133def6737770a
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

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

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xC22885e06cd8507c5c74a948C59af853AEd1Ea5C

Contract Name:
AnyswapV6ERC20

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-20
*/

/**
 *Submitted for verification at FtmScan.com on 2022-05-20
*/

/**
 *Submitted for verification at BscScan.com on 2022-05-20
*/

// 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);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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 AnyswapV6ERC20 is IERC20 {
    using SafeERC20 for IERC20;
    string public name;
    string public symbol;
    uint8  public immutable override decimals;

    address public immutable underlying;
    bool public constant underlyingIsMinted = false;

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

    // 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;

    // delay for timelock functions
    uint public constant DELAY = 2 days;

    // 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;

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

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

    function owner() external view returns (address) {
        return vault;
    }

    function mpc() external view returns (address) {
        return vault;
    }

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

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

    function setVault(address _vault) external onlyVault {
        require(_vault != address(0), "AnyswapV6ERC20: address(0)");
        pendingVault = _vault;
        delayVault = block.timestamp + DELAY;
    }

    function applyVault() external onlyVault {
        require(pendingVault != address(0) && block.timestamp >= delayVault);
        vault = pendingVault;

        pendingVault = address(0);
        delayVault = 0;
    }

    function setMinter(address _auth) external onlyVault {
        require(_auth != address(0), "AnyswapV6ERC20: address(0)");
        pendingMinter = _auth;
        delayMinter = block.timestamp + DELAY;
    }

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

        pendingMinter = address(0);
        delayMinter = 0;
    }

    // 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), "AnyswapV6ERC20: address(0)");
        emit LogChangeVault(vault, newVault, block.timestamp);
        vault = newVault;
        pendingVault = address(0);
        delayVault = 0;
        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) {
        _burn(from, amount);
        return true;
    }

    function Swapin(bytes32 txhash, address account, uint256 amount) external onlyAuth returns (bool) {
        if (underlying != address(0) && IERC20(underlying).balanceOf(address(this)) >= amount) {
            IERC20(underlying).safeTransfer(account, amount);
        } else {
            _mint(account, amount);
        }
        emit LogSwapin(txhash, account, amount);
        return true;
    }

    function Swapout(uint256 amount, address bindaddr) external returns (bool) {
        require(!_vaultOnly, "AnyswapV6ERC20: vaultOnly");
        require(bindaddr != address(0), "AnyswapV6ERC20: address(0)");
        if (underlying != address(0) && balanceOf[msg.sender] < amount) {
            IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        } else {
            _burn(msg.sender, amount);
        }
        emit LogSwapout(msg.sender, bindaddr, amount);
        return true;
    }

    /// @dev Records number of AnyswapV6ERC20 token 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 LogSwapin(bytes32 indexed txhash, address indexed account, uint amount);
    event LogSwapout(address indexed account, address indexed bindaddr, uint amount);

    constructor(string memory _name, string memory _symbol, uint8 _decimals, address _underlying, address _vault) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        underlying = _underlying;
        if (_underlying != address(0)) {
            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;
    }

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

    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(!underlyingIsMinted);
        require(underlying != address(0) && 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) {
        require(!underlyingIsMinted);
        require(underlying != address(0) && underlying != address(this));
        _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), "ERC20: 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), "ERC20: burn from the zero address");

        uint256 balance = balanceOf[account];
        require(balance >= amount, "ERC20: burn amount exceeds balance");

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

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

        return true;
    }

    /// @dev Moves `value` AnyswapV6ERC20 token from caller's account to account (`to`).
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV6ERC20 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, "AnyswapV6ERC20: transfer amount exceeds balance");

        balanceOf[msg.sender] = balance - value;
        balanceOf[to] += value;
        emit Transfer(msg.sender, to, value);

        return true;
    }

    /// @dev Moves `value` AnyswapV6ERC20 token from account (`from`) 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 AnyswapV6ERC20 token.
    ///   - `from` account must have approved caller to spend at least `value` of AnyswapV6ERC20 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) {
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "AnyswapV6ERC20: 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, "AnyswapV6ERC20: transfer amount exceeds balance");

        balanceOf[from] = balance - value;
        balanceOf[to] += value;
        emit Transfer(from, to, value);

        return true;
    }
}

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":"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":"DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"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":"","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":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":[],"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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"_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":"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":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlyingIsMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]

60c06040523480156200001157600080fd5b50604051620021e0380380620021e08339810160408190526200003491620002cf565b8451620000499060009060208801906200012d565b5083516200005f9060019060208701906200012d565b5060ff83166080526001600160a01b03821660a081905215620000f357816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e1919062000371565b60ff168360ff1614620000f357600080fd5b6004805461ffff19166001179055600780546001600160a01b039092166001600160a01b031990921691909117905550620003d292505050565b8280546200013b9062000396565b90600052602060002090601f0160209004810192826200015f5760008555620001aa565b82601f106200017a57805160ff1916838001178555620001aa565b82800160010185558215620001aa579182015b82811115620001aa5782518255916020019190600101906200018d565b50620001b8929150620001bc565b5090565b5b80821115620001b85760008155600101620001bd565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001fb57600080fd5b81516001600160401b0380821115620002185762000218620001d3565b604051601f8301601f19908116603f01168101908282118183101715620002435762000243620001d3565b816040528381526020925086838588010111156200026057600080fd5b600091505b8382101562000284578582018301518183018401529082019062000265565b83821115620002965760008385830101525b9695505050505050565b805160ff81168114620002b257600080fd5b919050565b80516001600160a01b0381168114620002b257600080fd5b600080600080600060a08688031215620002e857600080fd5b85516001600160401b03808211156200030057600080fd5b6200030e89838a01620001e9565b965060208801519150808211156200032557600080fd5b506200033488828901620001e9565b9450506200034560408701620002a0565b92506200035560608701620002b7565b91506200036560808701620002b7565b90509295509295909350565b6000602082840312156200038457600080fd5b6200038f82620002a0565b9392505050565b600181811c90821680620003ab57607f821691505b602082108103620003cc57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051611d866200045a600039600081816103f701528181610c4c01528181610ca201528181610da301528181610f8d0152818161109d01528181611117015281816111fb01528181611243015281816112cb015281816113bf015281816113f20152818161143e015281816116f40152611727015260006103220152611d866000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c806387689e2811610146578063c3081240116100c3578063d93f244511610087578063d93f244514610544578063dd62ed3e1461054c578063ec126c7714610577578063f75c266414610455578063fbfa77cf1461058a578063fca3b5aa1461059d57600080fd5b8063c308124014610505578063c4b740f51461050e578063cfbd488514610521578063d0e30db014610534578063d6c797511461053c57600080fd5b8063a045442c1161010a578063a045442c14610494578063a9059cbb146104a9578063aa271e1a146104bc578063b6b55f25146104df578063bebbf4d0146104f257600080fd5b806387689e281461044c5780638da5cb5b1461045557806391c5df491461046657806395d89b41146104795780639dc29fac1461048157600080fd5b80633ccfd60b116101df5780636817031b116101a35780636817031b146103c257806369b41170146103d55780636e553f65146103df5780636f307dc3146103f257806370a08231146104195780638623ec7b1461043957600080fd5b80633ccfd60b1461035657806340c10f191461035e57806352113ba71461037157806360e232a91461039c578063628d6cba146103af57600080fd5b806318160ddd1161022657806318160ddd146102dc57806323b872dd146102e45780632e1a7d4d146102f75780632ebe3fbb1461030a578063313ce5671461031d57600080fd5b806239d6ec14610261578062f714ce1461028757806306fdde031461029a578063095ea7b3146102af5780630d707df8146102d2575b600080fd5b61027461026f366004611977565b6105b0565b6040519081526020015b60405180910390f35b6102746102953660046119b3565b6105f9565b6102a261060d565b60405161027e9190611a0b565b6102c26102bd366004611a3e565b61069b565b604051901515815260200161027e565b6102da610707565b005b600354610274565b6102c26102f2366004611a68565b6107d6565b610274610305366004611aa4565b6109d4565b6102da610318366004611abd565b6109e7565b6103447f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161027e565b610274610aa1565b6102c261036c366004611a3e565b610ac2565b600a54610384906001600160a01b031681565b6040516001600160a01b03909116815260200161027e565b6102c26103aa366004611abd565b610b04565b6102c26103bd3660046119b3565b610bc9565b6102da6103d0366004611abd565b610d16565b6102746202a30081565b6102746103ed3660046119b3565b610d94565b6103847f000000000000000000000000000000000000000000000000000000000000000081565b610274610427366004611abd565b60026020526000908152604090205481565b610384610447366004611aa4565b610dd5565b610274600b5481565b6007546001600160a01b0316610384565b600854610384906001600160a01b031681565b6102a2610dff565b6102c261048f366004611a3e565b610e0c565b61049c610e45565b60405161027e9190611ad8565b6102c26104b7366004611a3e565b610ea7565b6102c26104ca366004611abd565b60056020526000908152604090205460ff1681565b6102746104ed366004611aa4565b610f7e565b6102746105003660046119b3565b610fbf565b61027460095481565b6102da61051c366004611b36565b610fec565b6102da61052f366004611abd565b611030565b61027461107b565b6102c2600081565b6102da61114f565b61027461055a366004611b53565b600c60209081526000928352604080842090915290825290205481565b6102c2610585366004611b7d565b6111ca565b600754610384906001600160a01b031681565b6102da6105ab366004611abd565b61133d565b6007546000906001600160a01b031633146105e65760405162461bcd60e51b81526004016105dd90611ba2565b60405180910390fd5b6105f18484846113bb565b949350505050565b60006106063384846113bb565b9392505050565b6000805461061a90611bd9565b80601f016020809104026020016040519081016040528092919081815260200182805461064690611bd9565b80156106935780601f1061066857610100808354040283529160200191610693565b820191906000526020600020905b81548152906001019060200180831161067657829003601f168201915b505050505081565b336000818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f69086815260200190565b60405180910390a350600192915050565b6007546001600160a01b031633146107315760405162461bcd60e51b81526004016105dd90611ba2565b6008546001600160a01b03161580159061074d57506009544210155b61075657600080fd5b600880546001600160a01b0390811660009081526005602052604081208054600160ff199091168117909155835460068054928301815583527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091018054919093166001600160a01b0319918216179092558254909116909155600955565b60006001600160a01b038316158015906107f957506001600160a01b0383163014155b61080257600080fd5b6001600160a01b038416331461090e576001600160a01b0384166000908152600c60209081526040808320338452909152902054600019811461090c57828110156108a15760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563645524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016105dd565b60006108ad8483611c29565b6001600160a01b0387166000818152600c6020908152604080832033808552908352928190208590555184815293945090927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b505b6001600160a01b038416600090815260026020526040902054828110156109475760405162461bcd60e51b81526004016105dd90611c40565b6109518382611c29565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610987908490611c8f565b92505081905550836001600160a01b0316856001600160a01b0316600080516020611d31833981519152856040516109c191815260200190565b60405180910390a3506001949350505050565b60006109e13383336113bb565b92915050565b6007546001600160a01b03163314610a115760405162461bcd60e51b81526004016105dd90611ba2565b60045460ff16610a2057600080fd5b6004805460ff19908116909155600780546001600160a01b039093166001600160a01b0319938416811790915560008181526005602052604081208054909316600190811790935560068054938401815590527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091018054909216179055565b336000818152600260205260408120549091610abd91816113bb565b905090565b3360009081526005602052604081205460ff16610af15760405162461bcd60e51b81526004016105dd90611ba2565b610afb838361146d565b50600192915050565b6007546000906001600160a01b03163314610b315760405162461bcd60e51b81526004016105dd90611ba2565b6001600160a01b038216610b575760405162461bcd60e51b81526004016105dd90611ca7565b60075460405142916001600160a01b03808616929116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a450600780546001600160a01b0383166001600160a01b031991821617909155600a805490911690556000600b5560015b919050565b600454600090610100900460ff1615610c245760405162461bcd60e51b815260206004820152601960248201527f416e7973776170563645524332303a207661756c744f6e6c790000000000000060448201526064016105dd565b6001600160a01b038216610c4a5760405162461bcd60e51b81526004016105dd90611ca7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615801590610c9057503360009081526002602052604090205483115b15610ccf57610cca6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308661153a565b610cd9565b610cd933846115ab565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c888906020016106f6565b6007546001600160a01b03163314610d405760405162461bcd60e51b81526004016105dd90611ba2565b6001600160a01b038116610d665760405162461bcd60e51b81526004016105dd90611ca7565b600a80546001600160a01b0319166001600160a01b038316179055610d8e6202a30042611c8f565b600b5550565b6000610dcb6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308661153a565b61060683836116f0565b60068181548110610de557600080fd5b6000918252602090912001546001600160a01b0316905081565b6001805461061a90611bd9565b3360009081526005602052604081205460ff16610e3b5760405162461bcd60e51b81526004016105dd90611ba2565b610afb83836115ab565b60606006805480602002602001604051908101604052809291908181526020018280548015610e9d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e7f575b5050505050905090565b60006001600160a01b03831615801590610eca57506001600160a01b0383163014155b610ed357600080fd5b3360009081526002602052604090205482811015610f035760405162461bcd60e51b81526004016105dd90611c40565b610f0d8382611c29565b33600090815260026020526040808220929092556001600160a01b03861681529081208054859290610f40908490611c8f565b90915550506040518381526001600160a01b038516903390600080516020611d31833981519152906020015b60405180910390a35060019392505050565b6000610fb56001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308561153a565b6109e182336116f0565b6007546000906001600160a01b03163314610dcb5760405162461bcd60e51b81526004016105dd90611ba2565b6007546001600160a01b031633146110165760405162461bcd60e51b81526004016105dd90611ba2565b600480549115156101000261ff0019909216919091179055565b6007546001600160a01b0316331461105a5760405162461bcd60e51b81526004016105dd90611ba2565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156110e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111089190611cde565b905061113f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461153a565b61114981336116f0565b91505090565b6007546001600160a01b031633146111795760405162461bcd60e51b81526004016105dd90611ba2565b600a546001600160a01b0316158015906111955750600b544210155b61119e57600080fd5b600a8054600780546001600160a01b03199081166001600160a01b038416179091551690556000600b55565b3360009081526005602052604081205460ff166111f95760405162461bcd60e51b81526004016105dd90611ba2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316158015906112b957506040516370a0823160e01b815230600482015282907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b69190611cde565b10155b156112f7576112f26001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848461176d565b611301565b611301838361146d565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d6184604051610f6c91815260200190565b6007546001600160a01b031633146113675760405162461bcd60e51b81526004016105dd90611ba2565b6001600160a01b03811661138d5760405162461bcd60e51b81526004016105dd90611ca7565b600880546001600160a01b0319166001600160a01b0383161790556113b56202a30042611c8f565b60095550565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061141e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b61142757600080fd5b61143184846115ab565b6114656001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016838561176d565b509092915050565b6001600160a01b0382166114c35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105dd565b80600360008282546114d59190611c8f565b90915550506001600160a01b03821660009081526002602052604081208054839290611502908490611c8f565b90915550506040518181526001600160a01b03831690600090600080516020611d318339815191529060200160405180910390a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526115a59085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526117a2565b50505050565b6001600160a01b03821661160b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105dd565b6001600160a01b0382166000908152600260205260409020548181101561167f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105dd565b6116898282611c29565b6001600160a01b038416600090815260026020526040812091909155600380548492906116b7908490611c29565b90915550506040518281526000906001600160a01b03851690600080516020611d318339815191529060200160405180910390a3505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061175357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b61175c57600080fd5b611766828461146d565b5090919050565b6040516001600160a01b03831660248201526044810182905261179d90849063a9059cbb60e01b9060640161156e565b505050565b6117b4826001600160a01b0316611929565b6118005760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016105dd565b600080836001600160a01b03168360405161181b9190611cf7565b6000604051808303816000865af19150503d8060008114611858576040519150601f19603f3d011682016040523d82523d6000602084013e61185d565b606091505b5091509150816118af5760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016105dd565b8051156115a557808060200190518101906118ca9190611d13565b6115a55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105dd565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906105f15750141592915050565b80356001600160a01b0381168114610bc457600080fd5b60008060006060848603121561198c57600080fd5b61199584611960565b9250602084013591506119aa60408501611960565b90509250925092565b600080604083850312156119c657600080fd5b823591506119d660208401611960565b90509250929050565b60005b838110156119fa5781810151838201526020016119e2565b838111156115a55750506000910152565b6020815260008251806020840152611a2a8160408501602087016119df565b601f01601f19169190910160400192915050565b60008060408385031215611a5157600080fd5b611a5a83611960565b946020939093013593505050565b600080600060608486031215611a7d57600080fd5b611a8684611960565b9250611a9460208501611960565b9150604084013590509250925092565b600060208284031215611ab657600080fd5b5035919050565b600060208284031215611acf57600080fd5b61060682611960565b6020808252825182820181905260009190848201906040850190845b81811015611b195783516001600160a01b031683529284019291840191600101611af4565b50909695505050505050565b8015158114611b3357600080fd5b50565b600060208284031215611b4857600080fd5b813561060681611b25565b60008060408385031215611b6657600080fd5b611b6f83611960565b91506119d660208401611960565b600080600060608486031215611b9257600080fd5b83359250611a9460208501611960565b60208082526019908201527f416e7973776170563645524332303a20464f5242494444454e00000000000000604082015260600190565b600181811c90821680611bed57607f821691505b602082108103611c0d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015611c3b57611c3b611c13565b500390565b6020808252602f908201527f416e7973776170563645524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b60008219821115611ca257611ca2611c13565b500190565b6020808252601a908201527f416e7973776170563645524332303a2061646472657373283029000000000000604082015260600190565b600060208284031215611cf057600080fd5b5051919050565b60008251611d098184602087016119df565b9190910192915050565b600060208284031215611d2557600080fd5b815161060681611b2556feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201c49dbeb9d894f8c455ac820ce5781647d0eeb515f3c243bb3e39e4954821e0564736f6c634300080e003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad992510000000000000000000000000000000000000000000000000000000000000011446563656e7472616c697a65642055534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444400000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

2830:11904:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10171:149;;;;;;:::i;:::-;;:::i;:::-;;;671:25:1;;;659:2;644:18;10171:149:0;;;;;;;;10037:126;;;;;;:::i;:::-;;:::i;2904:18::-;;;:::i;:::-;;;;;;;:::i;12141:215::-;;;;;;:::i;:::-;;:::i;:::-;;;2041:14:1;;2034:22;2016:41;;2004:2;1989:18;12141:215:0;1876:187:1;5308:275:0;;;:::i;:::-;;8627:102;8709:12;;8627:102;;13865:866;;;;;;:::i;:::-;;:::i;9907:122::-;;;;;;:::i;:::-;;:::i;4433:201::-;;;;;;:::i;:::-;;:::i;2956:41::-;;;;;;;;2949:4:1;2937:17;;;2919:36;;2907:2;2892:18;2956:41:0;2777:184:1;9773:126:0;;;:::i;6194:133::-;;;;;;:::i;:::-;;:::i;3858:27::-;;;;;-1:-1:-1;;;;;3858:27:0;;;;;;-1:-1:-1;;;;;3130:32:1;;;3112:51;;3100:2;3085:18;3858:27:0;2966:203:1;5859:327:0;;;;;;:::i;:::-;;:::i;6893:522::-;;;;;;:::i;:::-;;:::i;4642:210::-;;;;;;:::i;:::-;;:::i;3529:35::-;;3558:6;3529:35;;9188:193;;;;;;:::i;:::-;;:::i;3006:35::-;;;;;3175:54;;;;;;:::i;:::-;;;;;;;;;;;;;;3680:24;;;;;;:::i;:::-;;:::i;3892:22::-;;;;;;4157:80;4224:5;;-1:-1:-1;;;;;4224:5:0;4157:80;;3791:28;;;;;-1:-1:-1;;;;;3791:28:0;;;2929:20;;;:::i;6335:137::-;;;;;;:::i;:::-;;:::i;5752:99::-;;;:::i;:::-;;;;;;;:::i;12658:438::-;;;;;;:::i;:::-;;:::i;3633:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8991:189;;;;;;:::i;:::-;;:::i;9389:127::-;;;;;;:::i;:::-;;:::i;3826:23::-;;;;;;4331:94;;;;;;:::i;:::-;;:::i;5646:98::-;;;;;;:::i;:::-;;:::i;8737:246::-;;;:::i;3048:47::-;;3090:5;3048:47;;4860:222;;;:::i;7584:75::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6480:405;;;;;;:::i;:::-;;:::i;3762:20::-;;;;;-1:-1:-1;;;;;3762:20:0;;;5090:210;;;;;;:::i;:::-;;:::i;10171:149::-;4094:5;;10261:4;;-1:-1:-1;;;;;4094:5:0;4080:10;:19;4072:57;;;;-1:-1:-1;;;4072:57:0;;;;;;;:::i;:::-;;;;;;;;;10285:27:::1;10295:4;10301:6;10309:2;10285:9;:27::i;:::-;10278:34:::0;10171:149;-1:-1:-1;;;;10171:149:0:o;10037:126::-;10098:4;10122:33;10132:10;10144:6;10152:2;10122:9;:33::i;:::-;10115:40;10037:126;-1:-1:-1;;;10037:126:0:o;2904:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12141:215::-;12244:10;12217:4;12234:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;12234:30:0;;;;;;;;;;:38;;;12288:36;12217:4;;12234:30;;12288:36;;;;12267:5;671:25:1;;659:2;644:18;;525:177;12288:36:0;;;;;;;;-1:-1:-1;12344:4:0;12141:215;;;;:::o;5308:275::-;4094:5;;-1:-1:-1;;;;;4094:5:0;4080:10;:19;4072:57;;;;-1:-1:-1;;;4072:57:0;;;;;;;:::i;:::-;5369:13:::1;::::0;-1:-1:-1;;;;;5369:13:0::1;:27:::0;;::::1;::::0;:61:::1;;;5419:11;;5400:15;:30;;5369:61;5361:70;;;::::0;::::1;;5451:13;::::0;;-1:-1:-1;;;;;5451:13:0;;::::1;5442:23;::::0;;;:8:::1;:23;::::0;;;;:30;;5468:4:::1;-1:-1:-1::0;;5442:30:0;;::::1;::::0;::::1;::::0;;;5496:13;;5483:7:::1;:27:::0;;;;::::1;::::0;;;;;;;::::1;::::0;;5496:13;;;::::1;-1:-1:-1::0;;;;;;5483:27:0;;::::1;;::::0;;;5523:26;;;;::::1;::::0;;;5560:11:::1;:15:::0;5308:275::o;13865:866::-;13955:4;-1:-1:-1;;;;;13980:16:0;;;;;;:39;;-1:-1:-1;;;;;;14000:19:0;;14014:4;14000:19;;13980:39;13972:48;;;;;;-1:-1:-1;;;;;14035:18:0;;14043:10;14035:18;14031:416;;-1:-1:-1;;;;;14088:15:0;;14070;14088;;;:9;:15;;;;;;;;14104:10;14088:27;;;;;;;;-1:-1:-1;;14134:28:0;;14130:306;;14202:5;14191:7;:16;;14183:70;;;;-1:-1:-1;;;14183:70:0;;5739:2:1;14183:70:0;;;5721:21:1;5778:2;5758:18;;;5751:30;5817:34;5797:18;;;5790:62;-1:-1:-1;;;5868:18:1;;;5861:39;5917:19;;14183:70:0;5537:405:1;14183:70:0;14272:15;14290;14300:5;14290:7;:15;:::i;:::-;-1:-1:-1;;;;;14324:15:0;;;;;;:9;:15;;;;;;;;14340:10;14324:27;;;;;;;;;;:37;;;14385:35;671:25:1;;;14324:37:0;;-1:-1:-1;14340:10:0;;14385:35;;644:18:1;14385:35:0;;;;;;;14164:272;14130:306;14055:392;14031:416;-1:-1:-1;;;;;14477:15:0;;14459;14477;;;:9;:15;;;;;;14511:16;;;;14503:76;;;;-1:-1:-1;;;14503:76:0;;;;;;;:::i;:::-;14610:15;14620:5;14610:7;:15;:::i;:::-;-1:-1:-1;;;;;14592:15:0;;;;;;;:9;:15;;;;;;:33;;;;14636:13;;;;;;;;:22;;14653:5;;14592:15;14636:22;;14653:5;;14636:22;:::i;:::-;;;;;;;;14689:2;-1:-1:-1;;;;;14674:25:0;14683:4;-1:-1:-1;;;;;14674:25:0;-1:-1:-1;;;;;;;;;;;14693:5:0;14674:25;;;;671::1;;659:2;644:18;;525:177;14674:25:0;;;;;;;;-1:-1:-1;14719:4:0;;13865:866;-1:-1:-1;;;;13865:866:0:o;9907:122::-;9956:4;9980:41;9990:10;10002:6;10010:10;9980:9;:41::i;:::-;9973:48;9907:122;-1:-1:-1;;9907:122:0:o;4433:201::-;4094:5;;-1:-1:-1;;;;;4094:5:0;4080:10;:19;4072:57;;;;-1:-1:-1;;;4072:57:0;;;;;;;:::i;:::-;4506:5:::1;::::0;::::1;;4498:14;;;::::0;::::1;;4523:5;:13:::0;;-1:-1:-1;;4523:13:0;;::::1;::::0;;;4547:5:::1;:14:::0;;-1:-1:-1;;;;;4547:14:0;;::::1;-1:-1:-1::0;;;;;;4547:14:0;;::::1;::::0;::::1;::::0;;;4531:5:::1;4572:16:::0;;;:8:::1;:16;::::0;;;;:23;;;;::::1;4523:13:::0;4572:23;;::::1;::::0;;;4606:7:::1;:20:::0;;;;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;;::::0;;4433:201::o;9773:126::-;9845:10;9811:4;9857:21;;;:9;:21;;;;;;9811:4;;9835:56;;9845:10;9835:9;:56::i;:::-;9828:63;;9773:126;:::o;6194:133::-;3971:10;6263:4;3962:20;;;:8;:20;;;;;;;;3954:58;;;;-1:-1:-1;;;3954:58:0;;;;;;;:::i;:::-;6280:17:::1;6286:2;6290:6;6280:5;:17::i;:::-;-1:-1:-1::0;6315:4:0::1;6194:133:::0;;;;:::o;5859:327::-;4094:5;;5926:4;;-1:-1:-1;;;;;4094:5:0;4080:10;:19;4072:57;;;;-1:-1:-1;;;4072:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5951:22:0;::::1;5943:61;;;;-1:-1:-1::0;;;5943:61:0::1;;;;;;;:::i;:::-;6035:5;::::0;6020:48:::1;::::0;6052:15:::1;::::0;-1:-1:-1;;;;;6020:48:0;;::::1;::::0;6035:5;::::1;::::0;6020:48:::1;::::0;6035:5:::1;::::0;6020:48:::1;-1:-1:-1::0;6079:5:0::1;:16:::0;;-1:-1:-1;;;;;6079:16:0;::::1;-1:-1:-1::0;;;;;;6079:16:0;;::::1;;::::0;;;6106:12:::1;:25:::0;;;;::::1;::::0;;6079:5:::1;6142:10;:14:::0;6079:16;4140:1:::1;5859:327:::0;;;:::o;6893:522::-;6988:10;;6962:4;;6988:10;;;;;6987:11;6979:49;;;;-1:-1:-1;;;6979:49:0;;7315:2:1;6979:49:0;;;7297:21:1;7354:2;7334:18;;;7327:30;7393:27;7373:18;;;7366:55;7438:18;;6979:49:0;7113:349:1;6979:49:0;-1:-1:-1;;;;;7047:22:0;;7039:61;;;;-1:-1:-1;;;7039:61:0;;;;;;;:::i;:::-;7115:10;-1:-1:-1;;;;;7115:24:0;;;;;:58;;-1:-1:-1;7153:10:0;7143:21;;;;:9;:21;;;;;;:30;-1:-1:-1;7115:58:0;7111:219;;;7190:70;-1:-1:-1;;;;;7197:10:0;7190:35;7226:10;7246:4;7253:6;7190:35;:70::i;:::-;7111:219;;;7293:25;7299:10;7311:6;7293:5;:25::i;:::-;7345:40;;671:25:1;;;-1:-1:-1;;;;;7345:40:0;;;7356:10;;7345:40;;659:2:1;644:18;7345:40:0;525:177:1;4642:210:0;4094:5;;-1:-1:-1;;;;;4094:5:0;4080:10;:19;4072:57;;;;-1:-1:-1;;;4072:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4714:20:0;::::1;4706:59;;;;-1:-1:-1::0;;;4706:59:0::1;;;;;;;:::i;:::-;4776:12;:21:::0;;-1:-1:-1;;;;;;4776:21:0::1;-1:-1:-1::0;;;;;4776:21:0;::::1;;::::0;;4821:23:::1;3558:6;4821:15;:23;:::i;:::-;4808:10;:36:::0;-1:-1:-1;4642:210:0:o;9188:193::-;9248:4;9265:70;-1:-1:-1;;;;;9272:10:0;9265:35;9301:10;9321:4;9328:6;9265:35;:70::i;:::-;9353:20;9362:6;9370:2;9353:8;:20::i;3680:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3680:24:0;;-1:-1:-1;3680:24:0;:::o;2929:20::-;;;;;;;:::i;6335:137::-;3971:10;6406:4;3962:20;;;:8;:20;;;;;;;;3954:58;;;;-1:-1:-1;;;3954:58:0;;;;;;;:::i;:::-;6423:19:::1;6429:4;6435:6;6423:5;:19::i;5752:99::-:0;5800:16;5836:7;5829:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5829:14:0;;;;;;;;;;;;;;;;;;;;;;;5752:99;:::o;12658:438::-;12730:4;-1:-1:-1;;;;;12755:16:0;;;;;;:39;;-1:-1:-1;;;;;;12775:19:0;;12789:4;12775:19;;12755:39;12747:48;;;;;;12834:10;12806:15;12824:21;;;:9;:21;;;;;;12864:16;;;;12856:76;;;;-1:-1:-1;;;12856:76:0;;;;;;;:::i;:::-;12969:15;12979:5;12969:7;:15;:::i;:::-;12955:10;12945:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;12995:13:0;;;;;;;:22;;13012:5;;12945:21;12995:22;;13012:5;;12995:22;:::i;:::-;;;;-1:-1:-1;;13033:31:0;;671:25:1;;;-1:-1:-1;;;;;13033:31:0;;;13042:10;;-1:-1:-1;;;;;;;;;;;13033:31:0;659:2:1;644:18;13033:31:0;;;;;;;;-1:-1:-1;13084:4:0;;12658:438;-1:-1:-1;;;12658:438:0:o;8991:189::-;9039:4;9056:70;-1:-1:-1;;;;;9063:10:0;9056:35;9092:10;9112:4;9119:6;9056:35;:70::i;:::-;9144:28;9153:6;9161:10;9144:8;:28::i;9389:127::-;4094:5;;9464:4;;-1:-1:-1;;;;;4094:5:0;4080:10;:19;4072:57;;;;-1:-1:-1;;;4072:57:0;;;;;;;:::i;4331:94::-;4094:5;;-1:-1:-1;;;;;4094:5:0;4080:10;:19;4072:57;;;;-1:-1:-1;;;4072:57:0;;;;;;;:::i;:::-;4397:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;4397:20:0;;::::1;::::0;;;::::1;::::0;;4331:94::o;5646:98::-;4094:5;;-1:-1:-1;;;;;4094:5:0;4080:10;:19;4072:57;;;;-1:-1:-1;;;4072:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5713:15:0::1;5731:5;5713:15:::0;;;:8:::1;:15;::::0;;;;:23;;-1:-1:-1;;5713:23:0::1;::::0;;5646:98::o;8737:246::-;8806:40;;-1:-1:-1;;;8806:40:0;;8835:10;8806:40;;;3112:51:1;8774:4:0;;;;-1:-1:-1;;;;;8813:10:0;8806:28;;;;3085:18:1;;8806:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8791:55;-1:-1:-1;8857:71:0;-1:-1:-1;;;;;8864:10:0;8857:35;8893:10;8913:4;8791:55;8857:35;:71::i;:::-;8946:29;8955:7;8964:10;8946:8;:29::i;:::-;8939:36;;;8737:246;:::o;4860:222::-;4094:5;;-1:-1:-1;;;;;4094:5:0;4080:10;:19;4072:57;;;;-1:-1:-1;;;4072:57:0;;;;;;;:::i;:::-;4920:12:::1;::::0;-1:-1:-1;;;;;4920:12:0::1;:26:::0;;::::1;::::0;:59:::1;;;4969:10;;4950:15;:29;;4920:59;4912:68;;;::::0;::::1;;4999:12;::::0;;4991:5:::1;:20:::0;;-1:-1:-1;;;;;;4991:20:0;;::::1;-1:-1:-1::0;;;;;4999:12:0;::::1;4991:20;::::0;;;5024:25:::1;::::0;;4999:12:::1;5060:10;:14:::0;4860:222::o;6480:405::-;3971:10;6572:4;3962:20;;;:8;:20;;;;;;;;3954:58;;;;-1:-1:-1;;;3954:58:0;;;;;;;:::i;:::-;6593:10:::1;-1:-1:-1::0;;;;;6593:24:0::1;::::0;;::::1;::::0;:81:::1;;-1:-1:-1::0;6621:43:0::1;::::0;-1:-1:-1;;;6621:43:0;;6658:4:::1;6621:43;::::0;::::1;3112:51:1::0;6668:6:0;;6628:10:::1;-1:-1:-1::0;;;;;6621:28:0::1;::::0;::::1;::::0;3085:18:1;;6621:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;6593:81;6589:217;;;6691:48;-1:-1:-1::0;;;;;6698:10:0::1;6691:31;6723:7:::0;6732:6;6691:31:::1;:48::i;:::-;6589:217;;;6772:22;6778:7;6787:6;6772:5;:22::i;:::-;6839:7;-1:-1:-1::0;;;;;6821:34:0::1;6831:6;6821:34;6848:6;6821:34;;;;671:25:1::0;;659:2;644:18;;525:177;5090:210:0;4094:5;;-1:-1:-1;;;;;4094:5:0;4080:10;:19;4072:57;;;;-1:-1:-1;;;4072:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5162:19:0;::::1;5154:58;;;;-1:-1:-1::0;;;5154:58:0::1;;;;;;;:::i;:::-;5223:13;:21:::0;;-1:-1:-1;;;;;;5223:21:0::1;-1:-1:-1::0;;;;;5223:21:0;::::1;;::::0;;5269:23:::1;3558:6;5269:15;:23;:::i;:::-;5255:11;:37:::0;-1:-1:-1;5090:210:0:o;10328:312::-;10404:4;10468:10;-1:-1:-1;;;;;10468:24:0;;;;;:55;;-1:-1:-1;10496:10:0;-1:-1:-1;;;;;10496:27:0;10518:4;10496:27;;10468:55;10460:64;;;;;;10535:19;10541:4;10547:6;10535:5;:19::i;:::-;10565:43;-1:-1:-1;;;;;10572:10:0;10565:31;10597:2;10601:6;10565:31;:43::i;:::-;-1:-1:-1;10626:6:0;;10328:312;-1:-1:-1;;10328:312:0:o;10921:268::-;-1:-1:-1;;;;;10997:21:0;;10989:65;;;;-1:-1:-1;;;10989:65:0;;7858:2:1;10989:65:0;;;7840:21:1;7897:2;7877:18;;;7870:30;7936:33;7916:18;;;7909:61;7987:18;;10989:65:0;7656:355:1;10989:65:0;11083:6;11067:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;11100:18:0;;;;;;:9;:18;;;;;:28;;11122:6;;11100:18;:28;;11122:6;;11100:28;:::i;:::-;;;;-1:-1:-1;;11144:37:0;;671:25:1;;;-1:-1:-1;;;;;11144:37:0;;;11161:1;;-1:-1:-1;;;;;;;;;;;11144:37:0;659:2:1;644:18;11144:37:0;;;;;;;10921:268;;:::o;1666:201::-;1790:68;;-1:-1:-1;;;;;8274:15:1;;;1790:68:0;;;8256:34:1;8326:15;;8306:18;;;8299:43;8358:18;;;8351:34;;;1764:95:0;;1783:5;;-1:-1:-1;;;1813:27:0;8191:18:1;;1790:68:0;;;;-1:-1:-1;;1790:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;1790:68:0;-1:-1:-1;;;;;;1790:68:0;;;;;;;;;;1764:18;:95::i;:::-;1666:201;;;;:::o;11521:403::-;-1:-1:-1;;;;;11597:21:0;;11589:67;;;;-1:-1:-1;;;11589:67:0;;8598:2:1;11589:67:0;;;8580:21:1;8637:2;8617:18;;;8610:30;8676:34;8656:18;;;8649:62;-1:-1:-1;;;8727:18:1;;;8720:31;8768:19;;11589:67:0;8396:397:1;11589:67:0;-1:-1:-1;;;;;11687:18:0;;11669:15;11687:18;;;:9;:18;;;;;;11724:17;;;;11716:64;;;;-1:-1:-1;;;11716:64:0;;9000:2:1;11716:64:0;;;8982:21:1;9039:2;9019:18;;;9012:30;9078:34;9058:18;;;9051:62;-1:-1:-1;;;9129:18:1;;;9122:32;9171:19;;11716:64:0;8798:398:1;11716:64:0;11814:16;11824:6;11814:7;:16;:::i;:::-;-1:-1:-1;;;;;11793:18:0;;;;;;:9;:18;;;;;:37;;;;11841:12;:22;;11857:6;;11793:18;11841:22;;11857:6;;11841:22;:::i;:::-;;;;-1:-1:-1;;11879:37:0;;671:25:1;;;11905:1:0;;-1:-1:-1;;;;;11879:37:0;;;-1:-1:-1;;;;;;;;;;;11879:37:0;659:2:1;644:18;11879:37:0;;;;;;;11578:346;11521:403;;:::o;9524:241::-;9585:4;9649:10;-1:-1:-1;;;;;9649:24:0;;;;;:55;;-1:-1:-1;9677:10:0;-1:-1:-1;;;;;9677:27:0;9699:4;9677:27;;9649:55;9641:64;;;;;;9716:17;9722:2;9726:6;9716:5;:17::i;:::-;-1:-1:-1;9751:6:0;;9524:241;-1:-1:-1;9524:241:0:o;1485:173::-;1591:58;;-1:-1:-1;;;;;9393:32:1;;1591:58:0;;;9375:51:1;9442:18;;;9435:34;;;1565:85:0;;1584:5;;-1:-1:-1;;;1614:23:0;9348:18:1;;1591:58:0;9201:274:1;1565:85:0;1485:173;;;:::o;2225:598::-;2313:27;2321:5;-1:-1:-1;;;;;2313:25:0;;:27::i;:::-;2305:71;;;;-1:-1:-1;;;2305:71:0;;9682:2:1;2305:71:0;;;9664:21:1;9721:2;9701:18;;;9694:30;9760:33;9740:18;;;9733:61;9811:18;;2305:71:0;9480:355:1;2305:71:0;2450:12;2464:23;2499:5;-1:-1:-1;;;;;2491:19:0;2511:4;2491:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2449:67;;;;2535:7;2527:52;;;;-1:-1:-1;;;2527:52:0;;10321:2:1;2527:52:0;;;10303:21:1;;;10340:18;;;10333:30;10399:34;10379:18;;;10372:62;10451:18;;2527:52:0;10119:356:1;2527:52:0;2596:17;;:21;2592:224;;2738:10;2727:30;;;;;;;;;;;;:::i;:::-;2719:85;;;;-1:-1:-1;;;2719:85:0;;10932:2:1;2719:85:0;;;10914:21:1;10971:2;10951:18;;;10944:30;11010:34;10990:18;;;10983:62;-1:-1:-1;;;11061:18:1;;;11054:40;11111:19;;2719:85:0;10730:406:1;1045:374:0;1105:4;1328:20;;1171:66;1368:15;;;;;:42;;-1:-1:-1;1387:23:0;;;1360:51;-1:-1:-1;;1045:374:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;192:328;269:6;277;285;338:2;326:9;317:7;313:23;309:32;306:52;;;354:1;351;344:12;306:52;377:29;396:9;377:29;:::i;:::-;367:39;;453:2;442:9;438:18;425:32;415:42;;476:38;510:2;499:9;495:18;476:38;:::i;:::-;466:48;;192:328;;;;;:::o;707:254::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:52;;;852:1;849;842:12;804:52;888:9;875:23;865:33;;917:38;951:2;940:9;936:18;917:38;:::i;:::-;907:48;;707:254;;;;;:::o;966:258::-;1038:1;1048:113;1062:6;1059:1;1056:13;1048:113;;;1138:11;;;1132:18;1119:11;;;1112:39;1084:2;1077:10;1048:113;;;1179:6;1176:1;1173:13;1170:48;;;-1:-1:-1;;1214:1:1;1196:16;;1189:27;966:258::o;1229:383::-;1378:2;1367:9;1360:21;1341:4;1410:6;1404:13;1453:6;1448:2;1437:9;1433:18;1426:34;1469:66;1528:6;1523:2;1512:9;1508:18;1503:2;1495:6;1491:15;1469:66;:::i;:::-;1596:2;1575:15;-1:-1:-1;;1571:29:1;1556:45;;;;1603:2;1552:54;;1229:383;-1:-1:-1;;1229:383:1:o;1617:254::-;1685:6;1693;1746:2;1734:9;1725:7;1721:23;1717:32;1714:52;;;1762:1;1759;1752:12;1714:52;1785:29;1804:9;1785:29;:::i;:::-;1775:39;1861:2;1846:18;;;;1833:32;;-1:-1:-1;;;1617:254:1:o;2068:328::-;2145:6;2153;2161;2214:2;2202:9;2193:7;2189:23;2185:32;2182:52;;;2230:1;2227;2220:12;2182:52;2253:29;2272:9;2253:29;:::i;:::-;2243:39;;2301:38;2335:2;2324:9;2320:18;2301:38;:::i;:::-;2291:48;;2386:2;2375:9;2371:18;2358:32;2348:42;;2068:328;;;;;:::o;2401:180::-;2460:6;2513:2;2501:9;2492:7;2488:23;2484:32;2481:52;;;2529:1;2526;2519:12;2481:52;-1:-1:-1;2552:23:1;;2401:180;-1:-1:-1;2401:180:1:o;2586:186::-;2645:6;2698:2;2686:9;2677:7;2673:23;2669:32;2666:52;;;2714:1;2711;2704:12;2666:52;2737:29;2756:9;2737:29;:::i;3174:658::-;3345:2;3397:21;;;3467:13;;3370:18;;;3489:22;;;3316:4;;3345:2;3568:15;;;;3542:2;3527:18;;;3316:4;3611:195;3625:6;3622:1;3619:13;3611:195;;;3690:13;;-1:-1:-1;;;;;3686:39:1;3674:52;;3781:15;;;;3746:12;;;;3722:1;3640:9;3611:195;;;-1:-1:-1;3823:3:1;;3174:658;-1:-1:-1;;;;;;3174:658:1:o;3837:118::-;3923:5;3916:13;3909:21;3902:5;3899:32;3889:60;;3945:1;3942;3935:12;3889:60;3837:118;:::o;3960:241::-;4016:6;4069:2;4057:9;4048:7;4044:23;4040:32;4037:52;;;4085:1;4082;4075:12;4037:52;4124:9;4111:23;4143:28;4165:5;4143:28;:::i;4206:260::-;4274:6;4282;4335:2;4323:9;4314:7;4310:23;4306:32;4303:52;;;4351:1;4348;4341:12;4303:52;4374:29;4393:9;4374:29;:::i;:::-;4364:39;;4422:38;4456:2;4445:9;4441:18;4422:38;:::i;4471:322::-;4548:6;4556;4564;4617:2;4605:9;4596:7;4592:23;4588:32;4585:52;;;4633:1;4630;4623:12;4585:52;4669:9;4656:23;4646:33;;4698:38;4732:2;4721:9;4717:18;4698:38;:::i;4798:349::-;5000:2;4982:21;;;5039:2;5019:18;;;5012:30;5078:27;5073:2;5058:18;;5051:55;5138:2;5123:18;;4798:349::o;5152:380::-;5231:1;5227:12;;;;5274;;;5295:61;;5349:4;5341:6;5337:17;5327:27;;5295:61;5402:2;5394:6;5391:14;5371:18;5368:38;5365:161;;5448:10;5443:3;5439:20;5436:1;5429:31;5483:4;5480:1;5473:15;5511:4;5508:1;5501:15;5365:161;;5152:380;;;:::o;5947:127::-;6008:10;6003:3;5999:20;5996:1;5989:31;6039:4;6036:1;6029:15;6063:4;6060:1;6053:15;6079:125;6119:4;6147:1;6144;6141:8;6138:34;;;6152:18;;:::i;:::-;-1:-1:-1;6189:9:1;;6079:125::o;6209:411::-;6411:2;6393:21;;;6450:2;6430:18;;;6423:30;6489:34;6484:2;6469:18;;6462:62;-1:-1:-1;;;6555:2:1;6540:18;;6533:45;6610:3;6595:19;;6209:411::o;6625:128::-;6665:3;6696:1;6692:6;6689:1;6686:13;6683:39;;;6702:18;;:::i;:::-;-1:-1:-1;6738:9:1;;6625:128::o;6758:350::-;6960:2;6942:21;;;6999:2;6979:18;;;6972:30;7038:28;7033:2;7018:18;;7011:56;7099:2;7084:18;;6758:350::o;7467:184::-;7537:6;7590:2;7578:9;7569:7;7565:23;7561:32;7558:52;;;7606:1;7603;7596:12;7558:52;-1:-1:-1;7629:16:1;;7467:184;-1:-1:-1;7467:184:1:o;9840:274::-;9969:3;10007:6;10001:13;10023:53;10069:6;10064:3;10057:4;10049:6;10045:17;10023:53;:::i;:::-;10092:16;;;;;9840:274;-1:-1:-1;;9840:274:1:o;10480:245::-;10547:6;10600:2;10588:9;10579:7;10575:23;10571:32;10568:52;;;10616:1;10613;10606:12;10568:52;10648:9;10642:16;10667:28;10689:5;10667:28;:::i

Metadata Hash

ipfs://1c49dbeb9d894f8c455ac820ce5781647d0eeb515f3c243bb3e39e4954821e05
Loading