ETH Price: $2,472.33 (+0.72%)
 

Overview

Max Total Supply

10,000,000 MESS

Holders

124 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: MESS 3
Balance
0.000000000000226747 MESS

Value
$0.00
0x49d97aa9e2395951e990070436e09e385cad7f91
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

MMMM(Make Music Make Mess) is a creator-fi, music and entertainment app for people who love singing.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MESS

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 9 : Mess.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;

import "./ContextMess.sol"; 
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/security/Pausable.sol";


contract MESS is ContextMess, ERC20 ,Pausable{

    struct TransferParam {
        address to;
        uint256 amount;
    }

    constructor(address config_) ERC20("MESS", "MESS") {
        _checkConfig(IConfig(config_));
    } 

    // =============================================================
    // about mint burn and transfer
    // relate with "@openzeppelin/contracts/security/Pausable.sol";
    // =============================================================

    // mint token to treasury wallet,only minter can do this.
    function mint(uint256 amount) public isMinter {
        address to = _TreasuryWalletContract();
        super._mint(to, amount);
    }

    //burn token , only burner can do this.
    function burn(uint256 amount) public isBurner {
        _burn(_msgSender(), amount);
    }

    //batch transfer token to other address
    function batchTransfer(TransferParam[] memory transfers) public isTransferer {
        for (uint256 i = 0; i < transfers.length; i++) {
            super._transfer(_TreasuryWalletContract(), transfers[i].to, transfers[i].amount);
        }
    }

    //deny transfer when paused or address in the blacklist
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal override whenNotPaused isNotInTheBlacklist(from) isNotInTheBlacklist(to) {
        super._beforeTokenTransfer(from, to, amount);
    }

    // =============================================================
    // about pause and unpause
    // relate with "@openzeppelin/contracts/security/Pausable.sol";
    // =============================================================

    //pause transfer function,only pauser can do this.
    function pause() public isPauser {
        _pause();
    }

    //unpause transfer function
    function unpause() public isPauser {
        _unpause();
    }
}

File 2 of 9 : Pausable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        _requirePaused();
        _;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

File 3 of 9 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(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 virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

File 4 of 9 : ContextMess.sol
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;

import "../IConfig.sol";
import "../Registry.sol";

contract ContextMess  {
    
    IConfig public config;

    function _checkConfig(IConfig config_) internal {
        require(config_.version() > 0 || config_.supportsInterface(type(IConfig).interfaceId), "ERC20: not a valid config contract");
        config = config_;
    }

    function _TreasuryWalletContract() internal view returns (address) {
        bytes32 _key = Registry.TREASURYWALLET_KEY;
        address to = _getContractAddress(_key);
        require(to != address(0), "ERC20: treasurywallet contract not found");
        return to;
    }

    function _getContractAddress(bytes32 key) internal view returns (address) {
        (bytes32 typeID, bytes memory data) = config.getRawValue(key);
        return bytesToAddress(typeID, data);
    }

    function bytesToAddress(bytes32 typeID, bytes memory data) internal pure returns (address addr) {
        require(typeID == Registry.ADDRESS_HASH, "ERC20: wrong typeID");
        addr = abi.decode(data, (address));
    }

    modifier onlyAdmin() {
        require(config.hasRole(Registry.ADMIN_ROLE, msg.sender), "ERC20: caller is not the admin role");
        _;
    }

    modifier isMinter() {
        require(config.hasRole(Registry.MINTER_ROLE, msg.sender), "ERC20: caller is not the minter role");
        _;
    }

    modifier isBurner() {
        require(config.hasRole(Registry.BURNER_ROLE, msg.sender), "ERC20: caller is not the burner role");
        _;
    }

    modifier isTransferer() {
        require(config.hasRole(Registry.TRANSFER_ROLE, msg.sender), "ERC20: caller is not the transferer role");
        _;
    }

    modifier isNotInTheBlacklist(address account) {
        require(config.hasRole(Registry.SUPER_ADMIN_ROLE, account) || config.hasRole(Registry.ADMIN_ROLE, account)  || !config.hasRole(Registry.BLACKLIST_ROLE, account), "SN119:  address is restricted at the moment");
        _;
    }

    modifier isPauser() {
        require(config.hasRole(Registry.PAUSER_ROLE, msg.sender), "ERC20: caller is not the pauser role");
        _;
    }
}

File 5 of 9 : Registry.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;


library Registry {
    
    // =============================================================
    // about role
    // =============================================================

    // SUPER_ADMIN_ROLE
    bytes32 internal constant SUPER_ADMIN_ROLE = 0x0000000000000000000000000000000000000000000000000000000000000000;

    // keccak256("ADMIN_ROLE");
    bytes32 internal constant ADMIN_ROLE = 0xa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775;

    // keccak256("minter.role")
    bytes32 internal constant MINTER_ROLE = 0xb7400b17e52d343f741138df9e91f7b1f847b285f261edc36ddf5d104892f80d;
    // keccak256("burner.role")
    bytes32 internal constant BURNER_ROLE = 0x67ddb8e48ce0d66032a44701598dde318e9e357db26bb3a846b15f87ffdb8369;
    // keccak256("transfer.role")
    bytes32 internal constant TRANSFER_ROLE = 0xd9075b04fc9576b33d6513403323ecc334609c7afb3004ab47244ebef1d5ccd1;

    // keccak256("blacklist.role")
    bytes32 internal constant BLACKLIST_ROLE = 0xeceef7797af2e02f3081f740231d7a12b7f97400383d3ffdfa8953c62acb4708;

    // keccak256("pauser.role")
    bytes32 internal constant PAUSER_ROLE = 0xa67d36adcd6e3e45eaf6d65fa285a008bff25153247f18ac567589f1f32c3460;

    // =============================================================
    // about KV
    // =============================================================

    // keccak256("treasurywallet.key");
    bytes32 internal constant TREASURYWALLET_KEY = 0xe3bb4fe41787a18688c48ea64caf92a2bae2555227aaef6d464b886efb453118;
    // keccak256("operationwallet.key")
    bytes32 internal constant OPERATIONWALLET_KEY = 0x265545640c0c4e566d10fc3f1073314df9d9f30336f39c054903d28124930538;
    // keccak256("hotwallet.key")
    bytes32 internal constant HOTWALLET_KEY = 0x5a9627b84796698a4e50d2d61a91ce59358fe3945a467b2b94968cb135c41531;


    // keccak256("uint256");
    bytes32 internal constant UINT256_HASH = 0xec13d6d12b88433319b64e1065a96ea19cd330ef6603f5f6fb685dde3959a320;
    // keccak256("address");
    bytes32 internal constant ADDRESS_HASH = 0x421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b;

}

File 6 of 9 : IConfig.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;

interface IConfig {
  function version() external pure returns (uint256 v);
  function getRawValue(bytes32 key) external view returns(bytes32 typeID, bytes memory data);
  function hasRole(bytes32 role, address account) external view returns(bool has);
  function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

File 7 of 9 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 8 of 9 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

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

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

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

File 9 of 9 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"config_","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct MESS.TransferParam[]","name":"transfers","type":"tuple[]"}],"name":"batchTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"config","outputs":[{"internalType":"contract IConfig","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"amount","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":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620036c6380380620036c68339818101604052810190620000379190620003c5565b6040518060400160405280600481526020017f4d455353000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d455353000000000000000000000000000000000000000000000000000000008152508160049080519060200190620000bb929190620002ab565b508060059080519060200190620000d4929190620002ab565b5050506000600660006101000a81548160ff02191690831515021790555062000103816200010a60201b60201c565b506200063a565b60008173ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000158573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017e919062000432565b11806200022657508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fb64394f6000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401620001e19190620004a1565b602060405180830381865afa158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002259190620004fb565b5b62000268576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200025f90620005b4565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054620002b99062000605565b90600052602060002090601f016020900481019282620002dd576000855562000329565b82601f10620002f857805160ff191683800117855562000329565b8280016001018555821562000329579182015b82811115620003285782518255916020019190600101906200030b565b5b5090506200033891906200033c565b5090565b5b80821115620003575760008160009055506001016200033d565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200038d8262000360565b9050919050565b6200039f8162000380565b8114620003ab57600080fd5b50565b600081519050620003bf8162000394565b92915050565b600060208284031215620003de57620003dd6200035b565b5b6000620003ee84828501620003ae565b91505092915050565b6000819050919050565b6200040c81620003f7565b81146200041857600080fd5b50565b6000815190506200042c8162000401565b92915050565b6000602082840312156200044b576200044a6200035b565b5b60006200045b848285016200041b565b91505092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6200049b8162000464565b82525050565b6000602082019050620004b8600083018462000490565b92915050565b60008115159050919050565b620004d581620004be565b8114620004e157600080fd5b50565b600081519050620004f581620004ca565b92915050565b6000602082840312156200051457620005136200035b565b5b60006200052484828501620004e4565b91505092915050565b600082825260208201905092915050565b7f45524332303a206e6f7420612076616c696420636f6e66696720636f6e74726160008201527f6374000000000000000000000000000000000000000000000000000000000000602082015250565b60006200059c6022836200052d565b9150620005a9826200053e565b604082019050919050565b60006020820190508181036000830152620005cf816200058d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200061e57607f821691505b602082108103620006345762000633620005d6565b5b50919050565b61307c806200064a6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a0712d6811610071578063a0712d68146102bf578063a457c2d7146102db578063a9059cbb1461030b578063dd62ed3e1461033b578063faa552a81461036b57610116565b806370a082311461024957806379502c55146102795780638456cb591461029757806395d89b41146102a157610116565b8063313ce567116100e9578063313ce567146101b757806339509351146101d55780633f4ba83a1461020557806342966c681461020f5780635c975abb1461022b57610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b610123610387565b6040516101309190611d6b565b60405180910390f35b610153600480360381019061014e9190611e35565b610419565b6040516101609190611e90565b60405180910390f35b61017161043c565b60405161017e9190611eba565b60405180910390f35b6101a1600480360381019061019c9190611ed5565b610446565b6040516101ae9190611e90565b60405180910390f35b6101bf610475565b6040516101cc9190611f44565b60405180910390f35b6101ef60048036038101906101ea9190611e35565b61047e565b6040516101fc9190611e90565b60405180910390f35b61020d6104b5565b005b61022960048036038101906102249190611f5f565b6105bd565b005b6102336106cf565b6040516102409190611e90565b60405180910390f35b610263600480360381019061025e9190611f8c565b6106e6565b6040516102709190611eba565b60405180910390f35b61028161072f565b60405161028e9190612018565b60405180910390f35b61029f610753565b005b6102a961085b565b6040516102b69190611d6b565b60405180910390f35b6102d960048036038101906102d49190611f5f565b6108ed565b005b6102f560048036038101906102f09190611e35565b610a05565b6040516103029190611e90565b60405180910390f35b61032560048036038101906103209190611e35565b610a7c565b6040516103329190611e90565b60405180910390f35b61035560048036038101906103509190612033565b610a9f565b6040516103629190611eba565b60405180910390f35b61038560048036038101906103809190612210565b610b26565b005b60606004805461039690612288565b80601f01602080910402602001604051908101604052809291908181526020018280546103c290612288565b801561040f5780601f106103e45761010080835404028352916020019161040f565b820191906000526020600020905b8154815290600101906020018083116103f257829003601f168201915b5050505050905090565b600080610424610c95565b9050610431818585610c9d565b600191505092915050565b6000600354905090565b600080610451610c95565b905061045e858285610e66565b610469858585610ef2565b60019150509392505050565b60006012905090565b600080610489610c95565b90506104aa81858561049b8589610a9f565b6104a591906122e8565b610c9d565b600191505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fa67d36adcd6e3e45eaf6d65fa285a008bff25153247f18ac567589f1f32c346060001b336040518363ffffffff1660e01b8152600401610533929190612366565b602060405180830381865afa158015610550573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057491906123bb565b6105b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105aa9061245a565b60405180910390fd5b6105bb61116b565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547f67ddb8e48ce0d66032a44701598dde318e9e357db26bb3a846b15f87ffdb836960001b336040518363ffffffff1660e01b815260040161063b929190612366565b602060405180830381865afa158015610658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067c91906123bb565b6106bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b2906124ec565b60405180910390fd5b6106cc6106c6610c95565b826111ce565b50565b6000600660009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fa67d36adcd6e3e45eaf6d65fa285a008bff25153247f18ac567589f1f32c346060001b336040518363ffffffff1660e01b81526004016107d1929190612366565b602060405180830381865afa1580156107ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081291906123bb565b610851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108489061245a565b60405180910390fd5b61085961139d565b565b60606005805461086a90612288565b80601f016020809104026020016040519081016040528092919081815260200182805461089690612288565b80156108e35780601f106108b8576101008083540402835291602001916108e3565b820191906000526020600020905b8154815290600101906020018083116108c657829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fb7400b17e52d343f741138df9e91f7b1f847b285f261edc36ddf5d104892f80d60001b336040518363ffffffff1660e01b815260040161096b929190612366565b602060405180830381865afa158015610988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ac91906123bb565b6109eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e29061257e565b60405180910390fd5b60006109f5611400565b9050610a0181836114ad565b5050565b600080610a10610c95565b90506000610a1e8286610a9f565b905083811015610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a90612610565b60405180910390fd5b610a708286868403610c9d565b60019250505092915050565b600080610a87610c95565b9050610a94818585610ef2565b600191505092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fd9075b04fc9576b33d6513403323ecc334609c7afb3004ab47244ebef1d5ccd160001b336040518363ffffffff1660e01b8152600401610ba4929190612366565b602060405180830381865afa158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be591906123bb565b610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b906126a2565b60405180910390fd5b60005b8151811015610c9157610c7e610c3b611400565b838381518110610c4e57610c4d6126c2565b5b602002602001015160000151848481518110610c6d57610c6c6126c2565b5b602002602001015160200151610ef2565b8080610c89906126f1565b915050610c27565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d03906127ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d729061283d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e599190611eba565b60405180910390a3505050565b6000610e728484610a9f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610eec5781811015610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed5906128a9565b60405180910390fd5b610eeb8484848403610c9d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f589061293b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc7906129cd565b60405180910390fd5b610fdb838383611604565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105990612a5f565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111529190611eba565b60405180910390a3611165848484611af6565b50505050565b611173611afb565b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6111b7610c95565b6040516111c49190612a7f565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361123d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123490612b0c565b60405180910390fd5b61124982600083611604565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c790612b9e565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113849190611eba565b60405180910390a361139883600084611af6565b505050565b6113a5611b44565b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113e9610c95565b6040516113f69190612a7f565b60405180910390a1565b6000807fe3bb4fe41787a18688c48ea64caf92a2bae2555227aaef6d464b886efb45311860001b9050600061143482611b8e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90612c30565b60405180910390fd5b809250505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151390612c9c565b60405180910390fd5b61152860008383611604565b806003600082825461153a91906122e8565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115ec9190611eba565b60405180910390a361160060008383611af6565b5050565b61160c611b44565b8260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148546000801b836040518363ffffffff1660e01b815260040161166b929190612366565b602060405180830381865afa158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac91906123bb565b80611772575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560001b836040518363ffffffff1660e01b8152600401611730929190612366565b602060405180830381865afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177191906123bb565b5b80611839575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547feceef7797af2e02f3081f740231d7a12b7f97400383d3ffdfa8953c62acb470860001b836040518363ffffffff1660e01b81526004016117f6929190612366565b602060405180830381865afa158015611813573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183791906123bb565b155b611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90612d2e565b60405180910390fd5b8260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148546000801b836040518363ffffffff1660e01b81526004016118d7929190612366565b602060405180830381865afa1580156118f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191891906123bb565b806119de575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560001b836040518363ffffffff1660e01b815260040161199c929190612366565b602060405180830381865afa1580156119b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dd91906123bb565b5b80611aa5575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547feceef7797af2e02f3081f740231d7a12b7f97400383d3ffdfa8953c62acb470860001b836040518363ffffffff1660e01b8152600401611a62929190612366565b602060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa391906123bb565b155b611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90612d2e565b60405180910390fd5b611aef858585611c4a565b5050505050565b505050565b611b036106cf565b611b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3990612d9a565b60405180910390fd5b565b611b4c6106cf565b15611b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8390612e06565b60405180910390fd5b565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166372905855856040518263ffffffff1660e01b8152600401611bed9190612e26565b600060405180830381865afa158015611c0a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611c339190612f13565b91509150611c418282611c4f565b92505050919050565b505050565b60007f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b60001b8314611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad90612fbb565b60405180910390fd5b81806020019051810190611cca9190613019565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d0c578082015181840152602081019050611cf1565b83811115611d1b576000848401525b50505050565b6000601f19601f8301169050919050565b6000611d3d82611cd2565b611d478185611cdd565b9350611d57818560208601611cee565b611d6081611d21565b840191505092915050565b60006020820190508181036000830152611d858184611d32565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611dcc82611da1565b9050919050565b611ddc81611dc1565b8114611de757600080fd5b50565b600081359050611df981611dd3565b92915050565b6000819050919050565b611e1281611dff565b8114611e1d57600080fd5b50565b600081359050611e2f81611e09565b92915050565b60008060408385031215611e4c57611e4b611d97565b5b6000611e5a85828601611dea565b9250506020611e6b85828601611e20565b9150509250929050565b60008115159050919050565b611e8a81611e75565b82525050565b6000602082019050611ea56000830184611e81565b92915050565b611eb481611dff565b82525050565b6000602082019050611ecf6000830184611eab565b92915050565b600080600060608486031215611eee57611eed611d97565b5b6000611efc86828701611dea565b9350506020611f0d86828701611dea565b9250506040611f1e86828701611e20565b9150509250925092565b600060ff82169050919050565b611f3e81611f28565b82525050565b6000602082019050611f596000830184611f35565b92915050565b600060208284031215611f7557611f74611d97565b5b6000611f8384828501611e20565b91505092915050565b600060208284031215611fa257611fa1611d97565b5b6000611fb084828501611dea565b91505092915050565b6000819050919050565b6000611fde611fd9611fd484611da1565b611fb9565b611da1565b9050919050565b6000611ff082611fc3565b9050919050565b600061200282611fe5565b9050919050565b61201281611ff7565b82525050565b600060208201905061202d6000830184612009565b92915050565b6000806040838503121561204a57612049611d97565b5b600061205885828601611dea565b925050602061206985828601611dea565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120b082611d21565b810181811067ffffffffffffffff821117156120cf576120ce612078565b5b80604052505050565b60006120e2611d8d565b90506120ee82826120a7565b919050565b600067ffffffffffffffff82111561210e5761210d612078565b5b602082029050602081019050919050565b600080fd5b600080fd5b60006040828403121561213f5761213e612124565b5b61214960406120d8565b9050600061215984828501611dea565b600083015250602061216d84828501611e20565b60208301525092915050565b600061218c612187846120f3565b6120d8565b905080838252602082019050604084028301858111156121af576121ae61211f565b5b835b818110156121d857806121c48882612129565b8452602084019350506040810190506121b1565b5050509392505050565b600082601f8301126121f7576121f6612073565b5b8135612207848260208601612179565b91505092915050565b60006020828403121561222657612225611d97565b5b600082013567ffffffffffffffff81111561224457612243611d9c565b5b612250848285016121e2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122a057607f821691505b6020821081036122b3576122b2612259565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006122f382611dff565b91506122fe83611dff565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612333576123326122b9565b5b828201905092915050565b6000819050919050565b6123518161233e565b82525050565b61236081611dc1565b82525050565b600060408201905061237b6000830185612348565b6123886020830184612357565b9392505050565b61239881611e75565b81146123a357600080fd5b50565b6000815190506123b58161238f565b92915050565b6000602082840312156123d1576123d0611d97565b5b60006123df848285016123a6565b91505092915050565b7f45524332303a2063616c6c6572206973206e6f7420746865207061757365722060008201527f726f6c6500000000000000000000000000000000000000000000000000000000602082015250565b6000612444602483611cdd565b915061244f826123e8565b604082019050919050565b6000602082019050818103600083015261247381612437565b9050919050565b7f45524332303a2063616c6c6572206973206e6f7420746865206275726e65722060008201527f726f6c6500000000000000000000000000000000000000000000000000000000602082015250565b60006124d6602483611cdd565b91506124e18261247a565b604082019050919050565b60006020820190508181036000830152612505816124c9565b9050919050565b7f45524332303a2063616c6c6572206973206e6f7420746865206d696e7465722060008201527f726f6c6500000000000000000000000000000000000000000000000000000000602082015250565b6000612568602483611cdd565b91506125738261250c565b604082019050919050565b600060208201905081810360008301526125978161255b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006125fa602583611cdd565b91506126058261259e565b604082019050919050565b60006020820190508181036000830152612629816125ed565b9050919050565b7f45524332303a2063616c6c6572206973206e6f7420746865207472616e73666560008201527f72657220726f6c65000000000000000000000000000000000000000000000000602082015250565b600061268c602883611cdd565b915061269782612630565b604082019050919050565b600060208201905081810360008301526126bb8161267f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006126fc82611dff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361272e5761272d6122b9565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612795602483611cdd565b91506127a082612739565b604082019050919050565b600060208201905081810360008301526127c481612788565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612827602283611cdd565b9150612832826127cb565b604082019050919050565b600060208201905081810360008301526128568161281a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612893601d83611cdd565b915061289e8261285d565b602082019050919050565b600060208201905081810360008301526128c281612886565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612925602583611cdd565b9150612930826128c9565b604082019050919050565b6000602082019050818103600083015261295481612918565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006129b7602383611cdd565b91506129c28261295b565b604082019050919050565b600060208201905081810360008301526129e6816129aa565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a49602683611cdd565b9150612a54826129ed565b604082019050919050565b60006020820190508181036000830152612a7881612a3c565b9050919050565b6000602082019050612a946000830184612357565b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612af6602183611cdd565b9150612b0182612a9a565b604082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b88602283611cdd565b9150612b9382612b2c565b604082019050919050565b60006020820190508181036000830152612bb781612b7b565b9050919050565b7f45524332303a20747265617375727977616c6c657420636f6e7472616374206e60008201527f6f7420666f756e64000000000000000000000000000000000000000000000000602082015250565b6000612c1a602883611cdd565b9150612c2582612bbe565b604082019050919050565b60006020820190508181036000830152612c4981612c0d565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612c86601f83611cdd565b9150612c9182612c50565b602082019050919050565b60006020820190508181036000830152612cb581612c79565b9050919050565b7f534e3131393a202061646472657373206973207265737472696374656420617460008201527f20746865206d6f6d656e74000000000000000000000000000000000000000000602082015250565b6000612d18602b83611cdd565b9150612d2382612cbc565b604082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000612d84601483611cdd565b9150612d8f82612d4e565b602082019050919050565b60006020820190508181036000830152612db381612d77565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612df0601083611cdd565b9150612dfb82612dba565b602082019050919050565b60006020820190508181036000830152612e1f81612de3565b9050919050565b6000602082019050612e3b6000830184612348565b92915050565b612e4a8161233e565b8114612e5557600080fd5b50565b600081519050612e6781612e41565b92915050565b600080fd5b600067ffffffffffffffff821115612e8d57612e8c612078565b5b612e9682611d21565b9050602081019050919050565b6000612eb6612eb184612e72565b6120d8565b905082815260208101848484011115612ed257612ed1612e6d565b5b612edd848285611cee565b509392505050565b600082601f830112612efa57612ef9612073565b5b8151612f0a848260208601612ea3565b91505092915050565b60008060408385031215612f2a57612f29611d97565b5b6000612f3885828601612e58565b925050602083015167ffffffffffffffff811115612f5957612f58611d9c565b5b612f6585828601612ee5565b9150509250929050565b7f45524332303a2077726f6e672074797065494400000000000000000000000000600082015250565b6000612fa5601383611cdd565b9150612fb082612f6f565b602082019050919050565b60006020820190508181036000830152612fd481612f98565b9050919050565b6000612fe682611da1565b9050919050565b612ff681612fdb565b811461300157600080fd5b50565b60008151905061301381612fed565b92915050565b60006020828403121561302f5761302e611d97565b5b600061303d84828501613004565b9150509291505056fea264697066735822122005ea81d35350993eeb8bb602e8e07926e5558af80e57f7c48779a8f2f601e55664736f6c634300080d0033000000000000000000000000f86cf46a6a9cf508362773eb1cf1f3ebf93373ce

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a0712d6811610071578063a0712d68146102bf578063a457c2d7146102db578063a9059cbb1461030b578063dd62ed3e1461033b578063faa552a81461036b57610116565b806370a082311461024957806379502c55146102795780638456cb591461029757806395d89b41146102a157610116565b8063313ce567116100e9578063313ce567146101b757806339509351146101d55780633f4ba83a1461020557806342966c681461020f5780635c975abb1461022b57610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b610123610387565b6040516101309190611d6b565b60405180910390f35b610153600480360381019061014e9190611e35565b610419565b6040516101609190611e90565b60405180910390f35b61017161043c565b60405161017e9190611eba565b60405180910390f35b6101a1600480360381019061019c9190611ed5565b610446565b6040516101ae9190611e90565b60405180910390f35b6101bf610475565b6040516101cc9190611f44565b60405180910390f35b6101ef60048036038101906101ea9190611e35565b61047e565b6040516101fc9190611e90565b60405180910390f35b61020d6104b5565b005b61022960048036038101906102249190611f5f565b6105bd565b005b6102336106cf565b6040516102409190611e90565b60405180910390f35b610263600480360381019061025e9190611f8c565b6106e6565b6040516102709190611eba565b60405180910390f35b61028161072f565b60405161028e9190612018565b60405180910390f35b61029f610753565b005b6102a961085b565b6040516102b69190611d6b565b60405180910390f35b6102d960048036038101906102d49190611f5f565b6108ed565b005b6102f560048036038101906102f09190611e35565b610a05565b6040516103029190611e90565b60405180910390f35b61032560048036038101906103209190611e35565b610a7c565b6040516103329190611e90565b60405180910390f35b61035560048036038101906103509190612033565b610a9f565b6040516103629190611eba565b60405180910390f35b61038560048036038101906103809190612210565b610b26565b005b60606004805461039690612288565b80601f01602080910402602001604051908101604052809291908181526020018280546103c290612288565b801561040f5780601f106103e45761010080835404028352916020019161040f565b820191906000526020600020905b8154815290600101906020018083116103f257829003601f168201915b5050505050905090565b600080610424610c95565b9050610431818585610c9d565b600191505092915050565b6000600354905090565b600080610451610c95565b905061045e858285610e66565b610469858585610ef2565b60019150509392505050565b60006012905090565b600080610489610c95565b90506104aa81858561049b8589610a9f565b6104a591906122e8565b610c9d565b600191505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fa67d36adcd6e3e45eaf6d65fa285a008bff25153247f18ac567589f1f32c346060001b336040518363ffffffff1660e01b8152600401610533929190612366565b602060405180830381865afa158015610550573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057491906123bb565b6105b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105aa9061245a565b60405180910390fd5b6105bb61116b565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547f67ddb8e48ce0d66032a44701598dde318e9e357db26bb3a846b15f87ffdb836960001b336040518363ffffffff1660e01b815260040161063b929190612366565b602060405180830381865afa158015610658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067c91906123bb565b6106bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b2906124ec565b60405180910390fd5b6106cc6106c6610c95565b826111ce565b50565b6000600660009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fa67d36adcd6e3e45eaf6d65fa285a008bff25153247f18ac567589f1f32c346060001b336040518363ffffffff1660e01b81526004016107d1929190612366565b602060405180830381865afa1580156107ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081291906123bb565b610851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108489061245a565b60405180910390fd5b61085961139d565b565b60606005805461086a90612288565b80601f016020809104026020016040519081016040528092919081815260200182805461089690612288565b80156108e35780601f106108b8576101008083540402835291602001916108e3565b820191906000526020600020905b8154815290600101906020018083116108c657829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fb7400b17e52d343f741138df9e91f7b1f847b285f261edc36ddf5d104892f80d60001b336040518363ffffffff1660e01b815260040161096b929190612366565b602060405180830381865afa158015610988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ac91906123bb565b6109eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e29061257e565b60405180910390fd5b60006109f5611400565b9050610a0181836114ad565b5050565b600080610a10610c95565b90506000610a1e8286610a9f565b905083811015610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a90612610565b60405180910390fd5b610a708286868403610c9d565b60019250505092915050565b600080610a87610c95565b9050610a94818585610ef2565b600191505092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fd9075b04fc9576b33d6513403323ecc334609c7afb3004ab47244ebef1d5ccd160001b336040518363ffffffff1660e01b8152600401610ba4929190612366565b602060405180830381865afa158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be591906123bb565b610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b906126a2565b60405180910390fd5b60005b8151811015610c9157610c7e610c3b611400565b838381518110610c4e57610c4d6126c2565b5b602002602001015160000151848481518110610c6d57610c6c6126c2565b5b602002602001015160200151610ef2565b8080610c89906126f1565b915050610c27565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d03906127ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d729061283d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e599190611eba565b60405180910390a3505050565b6000610e728484610a9f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610eec5781811015610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed5906128a9565b60405180910390fd5b610eeb8484848403610c9d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f589061293b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc7906129cd565b60405180910390fd5b610fdb838383611604565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105990612a5f565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111529190611eba565b60405180910390a3611165848484611af6565b50505050565b611173611afb565b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6111b7610c95565b6040516111c49190612a7f565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361123d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123490612b0c565b60405180910390fd5b61124982600083611604565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c790612b9e565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113849190611eba565b60405180910390a361139883600084611af6565b505050565b6113a5611b44565b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113e9610c95565b6040516113f69190612a7f565b60405180910390a1565b6000807fe3bb4fe41787a18688c48ea64caf92a2bae2555227aaef6d464b886efb45311860001b9050600061143482611b8e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90612c30565b60405180910390fd5b809250505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151390612c9c565b60405180910390fd5b61152860008383611604565b806003600082825461153a91906122e8565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115ec9190611eba565b60405180910390a361160060008383611af6565b5050565b61160c611b44565b8260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148546000801b836040518363ffffffff1660e01b815260040161166b929190612366565b602060405180830381865afa158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac91906123bb565b80611772575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560001b836040518363ffffffff1660e01b8152600401611730929190612366565b602060405180830381865afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177191906123bb565b5b80611839575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547feceef7797af2e02f3081f740231d7a12b7f97400383d3ffdfa8953c62acb470860001b836040518363ffffffff1660e01b81526004016117f6929190612366565b602060405180830381865afa158015611813573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183791906123bb565b155b611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90612d2e565b60405180910390fd5b8260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148546000801b836040518363ffffffff1660e01b81526004016118d7929190612366565b602060405180830381865afa1580156118f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191891906123bb565b806119de575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560001b836040518363ffffffff1660e01b815260040161199c929190612366565b602060405180830381865afa1580156119b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dd91906123bb565b5b80611aa5575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391d148547feceef7797af2e02f3081f740231d7a12b7f97400383d3ffdfa8953c62acb470860001b836040518363ffffffff1660e01b8152600401611a62929190612366565b602060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa391906123bb565b155b611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90612d2e565b60405180910390fd5b611aef858585611c4a565b5050505050565b505050565b611b036106cf565b611b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3990612d9a565b60405180910390fd5b565b611b4c6106cf565b15611b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8390612e06565b60405180910390fd5b565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166372905855856040518263ffffffff1660e01b8152600401611bed9190612e26565b600060405180830381865afa158015611c0a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611c339190612f13565b91509150611c418282611c4f565b92505050919050565b505050565b60007f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b60001b8314611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad90612fbb565b60405180910390fd5b81806020019051810190611cca9190613019565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d0c578082015181840152602081019050611cf1565b83811115611d1b576000848401525b50505050565b6000601f19601f8301169050919050565b6000611d3d82611cd2565b611d478185611cdd565b9350611d57818560208601611cee565b611d6081611d21565b840191505092915050565b60006020820190508181036000830152611d858184611d32565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611dcc82611da1565b9050919050565b611ddc81611dc1565b8114611de757600080fd5b50565b600081359050611df981611dd3565b92915050565b6000819050919050565b611e1281611dff565b8114611e1d57600080fd5b50565b600081359050611e2f81611e09565b92915050565b60008060408385031215611e4c57611e4b611d97565b5b6000611e5a85828601611dea565b9250506020611e6b85828601611e20565b9150509250929050565b60008115159050919050565b611e8a81611e75565b82525050565b6000602082019050611ea56000830184611e81565b92915050565b611eb481611dff565b82525050565b6000602082019050611ecf6000830184611eab565b92915050565b600080600060608486031215611eee57611eed611d97565b5b6000611efc86828701611dea565b9350506020611f0d86828701611dea565b9250506040611f1e86828701611e20565b9150509250925092565b600060ff82169050919050565b611f3e81611f28565b82525050565b6000602082019050611f596000830184611f35565b92915050565b600060208284031215611f7557611f74611d97565b5b6000611f8384828501611e20565b91505092915050565b600060208284031215611fa257611fa1611d97565b5b6000611fb084828501611dea565b91505092915050565b6000819050919050565b6000611fde611fd9611fd484611da1565b611fb9565b611da1565b9050919050565b6000611ff082611fc3565b9050919050565b600061200282611fe5565b9050919050565b61201281611ff7565b82525050565b600060208201905061202d6000830184612009565b92915050565b6000806040838503121561204a57612049611d97565b5b600061205885828601611dea565b925050602061206985828601611dea565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120b082611d21565b810181811067ffffffffffffffff821117156120cf576120ce612078565b5b80604052505050565b60006120e2611d8d565b90506120ee82826120a7565b919050565b600067ffffffffffffffff82111561210e5761210d612078565b5b602082029050602081019050919050565b600080fd5b600080fd5b60006040828403121561213f5761213e612124565b5b61214960406120d8565b9050600061215984828501611dea565b600083015250602061216d84828501611e20565b60208301525092915050565b600061218c612187846120f3565b6120d8565b905080838252602082019050604084028301858111156121af576121ae61211f565b5b835b818110156121d857806121c48882612129565b8452602084019350506040810190506121b1565b5050509392505050565b600082601f8301126121f7576121f6612073565b5b8135612207848260208601612179565b91505092915050565b60006020828403121561222657612225611d97565b5b600082013567ffffffffffffffff81111561224457612243611d9c565b5b612250848285016121e2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122a057607f821691505b6020821081036122b3576122b2612259565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006122f382611dff565b91506122fe83611dff565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612333576123326122b9565b5b828201905092915050565b6000819050919050565b6123518161233e565b82525050565b61236081611dc1565b82525050565b600060408201905061237b6000830185612348565b6123886020830184612357565b9392505050565b61239881611e75565b81146123a357600080fd5b50565b6000815190506123b58161238f565b92915050565b6000602082840312156123d1576123d0611d97565b5b60006123df848285016123a6565b91505092915050565b7f45524332303a2063616c6c6572206973206e6f7420746865207061757365722060008201527f726f6c6500000000000000000000000000000000000000000000000000000000602082015250565b6000612444602483611cdd565b915061244f826123e8565b604082019050919050565b6000602082019050818103600083015261247381612437565b9050919050565b7f45524332303a2063616c6c6572206973206e6f7420746865206275726e65722060008201527f726f6c6500000000000000000000000000000000000000000000000000000000602082015250565b60006124d6602483611cdd565b91506124e18261247a565b604082019050919050565b60006020820190508181036000830152612505816124c9565b9050919050565b7f45524332303a2063616c6c6572206973206e6f7420746865206d696e7465722060008201527f726f6c6500000000000000000000000000000000000000000000000000000000602082015250565b6000612568602483611cdd565b91506125738261250c565b604082019050919050565b600060208201905081810360008301526125978161255b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006125fa602583611cdd565b91506126058261259e565b604082019050919050565b60006020820190508181036000830152612629816125ed565b9050919050565b7f45524332303a2063616c6c6572206973206e6f7420746865207472616e73666560008201527f72657220726f6c65000000000000000000000000000000000000000000000000602082015250565b600061268c602883611cdd565b915061269782612630565b604082019050919050565b600060208201905081810360008301526126bb8161267f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006126fc82611dff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361272e5761272d6122b9565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612795602483611cdd565b91506127a082612739565b604082019050919050565b600060208201905081810360008301526127c481612788565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612827602283611cdd565b9150612832826127cb565b604082019050919050565b600060208201905081810360008301526128568161281a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612893601d83611cdd565b915061289e8261285d565b602082019050919050565b600060208201905081810360008301526128c281612886565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612925602583611cdd565b9150612930826128c9565b604082019050919050565b6000602082019050818103600083015261295481612918565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006129b7602383611cdd565b91506129c28261295b565b604082019050919050565b600060208201905081810360008301526129e6816129aa565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a49602683611cdd565b9150612a54826129ed565b604082019050919050565b60006020820190508181036000830152612a7881612a3c565b9050919050565b6000602082019050612a946000830184612357565b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612af6602183611cdd565b9150612b0182612a9a565b604082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b88602283611cdd565b9150612b9382612b2c565b604082019050919050565b60006020820190508181036000830152612bb781612b7b565b9050919050565b7f45524332303a20747265617375727977616c6c657420636f6e7472616374206e60008201527f6f7420666f756e64000000000000000000000000000000000000000000000000602082015250565b6000612c1a602883611cdd565b9150612c2582612bbe565b604082019050919050565b60006020820190508181036000830152612c4981612c0d565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612c86601f83611cdd565b9150612c9182612c50565b602082019050919050565b60006020820190508181036000830152612cb581612c79565b9050919050565b7f534e3131393a202061646472657373206973207265737472696374656420617460008201527f20746865206d6f6d656e74000000000000000000000000000000000000000000602082015250565b6000612d18602b83611cdd565b9150612d2382612cbc565b604082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000612d84601483611cdd565b9150612d8f82612d4e565b602082019050919050565b60006020820190508181036000830152612db381612d77565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612df0601083611cdd565b9150612dfb82612dba565b602082019050919050565b60006020820190508181036000830152612e1f81612de3565b9050919050565b6000602082019050612e3b6000830184612348565b92915050565b612e4a8161233e565b8114612e5557600080fd5b50565b600081519050612e6781612e41565b92915050565b600080fd5b600067ffffffffffffffff821115612e8d57612e8c612078565b5b612e9682611d21565b9050602081019050919050565b6000612eb6612eb184612e72565b6120d8565b905082815260208101848484011115612ed257612ed1612e6d565b5b612edd848285611cee565b509392505050565b600082601f830112612efa57612ef9612073565b5b8151612f0a848260208601612ea3565b91505092915050565b60008060408385031215612f2a57612f29611d97565b5b6000612f3885828601612e58565b925050602083015167ffffffffffffffff811115612f5957612f58611d9c565b5b612f6585828601612ee5565b9150509250929050565b7f45524332303a2077726f6e672074797065494400000000000000000000000000600082015250565b6000612fa5601383611cdd565b9150612fb082612f6f565b602082019050919050565b60006020820190508181036000830152612fd481612f98565b9050919050565b6000612fe682611da1565b9050919050565b612ff681612fdb565b811461300157600080fd5b50565b60008151905061301381612fed565b92915050565b60006020828403121561302f5761302e611d97565b5b600061303d84828501613004565b9150509291505056fea264697066735822122005ea81d35350993eeb8bb602e8e07926e5558af80e57f7c48779a8f2f601e55664736f6c634300080d0033

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

000000000000000000000000f86cf46a6a9cf508362773eb1cf1f3ebf93373ce

-----Decoded View---------------
Arg [0] : config_ (address): 0xf86cf46A6a9cF508362773eB1Cf1f3eBF93373CE

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f86cf46a6a9cf508362773eb1cf1f3ebf93373ce


Deployed Bytecode Sourcemap

208:1883:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3242:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5190:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3091:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5871:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2027:62:8;;;:::i;:::-;;934:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1615:84:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3406:125:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;149:21:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1931:58:8;;;:::i;:::-;;2365:102:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;750:134:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6592:427:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3727:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3974:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1074:245:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2154:98:1;2208:13;2240:5;2233:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;:::o;4431:197::-;4514:4;4530:13;4546:12;:10;:12::i;:::-;4530:28;;4568:32;4577:5;4584:7;4593:6;4568:8;:32::i;:::-;4617:4;4610:11;;;4431:197;;;;:::o;3242:106::-;3303:7;3329:12;;3322:19;;3242:106;:::o;5190:286::-;5317:4;5333:15;5351:12;:10;:12::i;:::-;5333:30;;5373:38;5389:4;5395:7;5404:6;5373:15;:38::i;:::-;5421:27;5431:4;5437:2;5441:6;5421:9;:27::i;:::-;5465:4;5458:11;;;5190:286;;;;;:::o;3091:91::-;3149:5;3173:2;3166:9;;3091:91;:::o;5871:234::-;5959:4;5975:13;5991:12;:10;:12::i;:::-;5975:28;;6013:64;6022:5;6029:7;6066:10;6038:25;6048:5;6055:7;6038:9;:25::i;:::-;:38;;;;:::i;:::-;6013:8;:64::i;:::-;6094:4;6087:11;;;5871:234;;;;:::o;2027:62:8:-;2044:6:7;;;;;;;;;;:14;;;1197:66:6;2059:20:7;;2081:10;2044:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2036:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;2072:10:8::1;:8;:10::i;:::-;2027:62::o:0;934:90::-;1444:6:7;;;;;;;;;;:14;;;753:66:6;1459:20:7;;1481:10;1444:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1436:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;990:27:8::1;996:12;:10;:12::i;:::-;1010:6;990:5;:27::i;:::-;934:90:::0;:::o;1615:84:0:-;1662:4;1685:7;;;;;;;;;;;1678:14;;1615:84;:::o;3406:125:1:-;3480:7;3506:9;:18;3516:7;3506:18;;;;;;;;;;;;;;;;3499:25;;3406:125;;;:::o;149:21:7:-;;;;;;;;;;;;:::o;1931:58:8:-;2044:6:7;;;;;;;;;;:14;;;1197:66:6;2059:20:7;;2081:10;2044:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2036:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;1974:8:8::1;:6;:8::i;:::-;1931:58::o:0;2365:102:1:-;2421:13;2453:7;2446:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:102;:::o;750:134:8:-;1293:6:7;;;;;;;;;;:14;;;609:66:6;1308:20:7;;1330:10;1293:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1285:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;806:10:8::1;819:25;:23;:25::i;:::-;806:38;;854:23;866:2;870:6;854:11;:23::i;:::-;796:88;750:134:::0;:::o;6592:427:1:-;6685:4;6701:13;6717:12;:10;:12::i;:::-;6701:28;;6739:24;6766:25;6776:5;6783:7;6766:9;:25::i;:::-;6739:52;;6829:15;6809:16;:35;;6801:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6920:60;6929:5;6936:7;6964:15;6945:16;:34;6920:8;:60::i;:::-;7008:4;7001:11;;;;6592:427;;;;:::o;3727:189::-;3806:4;3822:13;3838:12;:10;:12::i;:::-;3822:28;;3860;3870:5;3877:2;3881:6;3860:9;:28::i;:::-;3905:4;3898:11;;;3727:189;;;;:::o;3974:149::-;4063:7;4089:11;:18;4101:5;4089:18;;;;;;;;;;;;;;;:27;4108:7;4089:27;;;;;;;;;;;;;;;;4082:34;;3974:149;;;;:::o;1074:245:8:-;1599:6:7;;;;;;;;;;:14;;;901:66:6;1614:22:7;;1638:10;1599:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1591:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;1166:9:8::1;1161:152;1185:9;:16;1181:1;:20;1161:152;;;1222:80;1238:25;:23;:25::i;:::-;1265:9;1275:1;1265:12;;;;;;;;:::i;:::-;;;;;;;;:15;;;1282:9;1292:1;1282:12;;;;;;;;:::i;:::-;;;;;;;;:19;;;1222:15;:80::i;:::-;1203:3;;;;;:::i;:::-;;;;1161:152;;;;1074:245:::0;:::o;640:96:4:-;693:7;719:10;712:17;;640:96;:::o;10504:370:1:-;10652:1;10635:19;;:5;:19;;;10627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10732:1;10713:21;;:7;:21;;;10705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10814:6;10784:11;:18;10796:5;10784:18;;;;;;;;;;;;;;;:27;10803:7;10784:27;;;;;;;;;;;;;;;:36;;;;10851:7;10835:32;;10844:5;10835:32;;;10860:6;10835:32;;;;;;:::i;:::-;;;;;;;;10504:370;;;:::o;11155:441::-;11285:24;11312:25;11322:5;11329:7;11312:9;:25::i;:::-;11285:52;;11371:17;11351:16;:37;11347:243;;11432:6;11412:16;:26;;11404:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11514:51;11523:5;11530:7;11558:6;11539:16;:25;11514:8;:51::i;:::-;11347:243;11275:321;11155:441;;;:::o;7473:818::-;7615:1;7599:18;;:4;:18;;;7591:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7691:1;7677:16;;:2;:16;;;7669:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7744:38;7765:4;7771:2;7775:6;7744:20;:38::i;:::-;7793:19;7815:9;:15;7825:4;7815:15;;;;;;;;;;;;;;;;7793:37;;7863:6;7848:11;:21;;7840:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7978:6;7964:11;:20;7946:9;:15;7956:4;7946:15;;;;;;;;;;;;;;;:38;;;;8178:6;8161:9;:13;8171:2;8161:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8225:2;8210:26;;8219:4;8210:26;;;8229:6;8210:26;;;;;;:::i;:::-;;;;;;;;8247:37;8267:4;8273:2;8277:6;8247:19;:37::i;:::-;7581:710;7473:818;;;:::o;2433:117:0:-;1486:16;:14;:16::i;:::-;2501:5:::1;2491:7;;:15;;;;;;;;;;;;;;;;;;2521:22;2530:12;:10;:12::i;:::-;2521:22;;;;;;:::i;:::-;;;;;;;;2433:117::o:0;9422:659:1:-;9524:1;9505:21;;:7;:21;;;9497:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9575:49;9596:7;9613:1;9617:6;9575:20;:49::i;:::-;9635:22;9660:9;:18;9670:7;9660:18;;;;;;;;;;;;;;;;9635:43;;9714:6;9696:14;:24;;9688:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9831:6;9814:14;:23;9793:9;:18;9803:7;9793:18;;;;;;;;;;;;;;;:44;;;;9946:6;9930:12;;:22;;;;;;;;;;;10004:1;9978:37;;9987:7;9978:37;;;10008:6;9978:37;;;;;;:::i;:::-;;;;;;;;10026:48;10046:7;10063:1;10067:6;10026:19;:48::i;:::-;9487:594;9422:659;;:::o;2186:115:0:-;1239:19;:17;:19::i;:::-;2255:4:::1;2245:7;;:14;;;;;;;;;;;;;;;;;;2274:20;2281:12;:10;:12::i;:::-;2274:20;;;;;;:::i;:::-;;;;;;;;2186:115::o:0;398:272:7:-;456:7;475:12;1512:66:6;490:27:7;;475:42;;527:10;540:25;560:4;540:19;:25::i;:::-;527:38;;597:1;583:16;;:2;:16;;;575:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;661:2;654:9;;;;398:272;:::o;8567:535:1:-;8669:1;8650:21;;:7;:21;;;8642:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8718:49;8747:1;8751:7;8760:6;8718:20;:49::i;:::-;8794:6;8778:12;;:22;;;;;;;:::i;:::-;;;;;;;;8968:6;8946:9;:18;8956:7;8946:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;9020:7;8999:37;;9016:1;8999:37;;;9029:6;8999:37;;;;;;:::i;:::-;;;;;;;;9047:48;9075:1;9079:7;9088:6;9047:19;:48::i;:::-;8567:535;;:::o;1385:245:8:-;1239:19:0;:17;:19::i;:::-;1539:4:8::1;1782:6:7;::::0;::::1;;;;;;;;:14;;;320:66:6;1797:25:7::0;::::1;1824:7;1782:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:98;;;;1836:6;::::0;::::1;;;;;;;;:14;;;464:66:6;1851:19:7;;1872:7;1836:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1782:98;:152;;;;1886:6;::::0;::::1;;;;;;;;:14;;;1052:66:6;1901:23:7;;1926:7;1886:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1885:49;1782:152;1774:208;;;;;;;;;;;;:::i;:::-;;;;;;;;;1565:2:8::2;1782:6:7;::::0;::::2;;;;;;;;:14;;;320:66:6;1797:25:7::0;::::2;1824:7;1782:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:98;;;;1836:6;::::0;::::2;;;;;;;;:14;;;464:66:6;1851:19:7;;1872:7;1836:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1782:98;:152;;;;1886:6;::::0;::::2;;;;;;;;:14;;;1052:66:6;1901:23:7;;1926:7;1886:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1885:49;1782:152;1774:208;;;;;;;;;;;;:::i;:::-;;;;;;;;;1579:44:8::3;1606:4;1612:2;1616:6;1579:26;:44::i;:::-;1992:1:7::2;1268::0::1;1385:245:8::0;;;:::o;12889:120:1:-;;;;:::o;1945:106:0:-;2011:8;:6;:8::i;:::-;2003:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;1945:106::o;1767:::-;1837:8;:6;:8::i;:::-;1836:9;1828:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1767:106::o;676:197:7:-;741:7;761:14;777:17;798:6;;;;;;;;;;;:18;;;817:3;798:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;760:61;;;;838:28;853:6;861:4;838:14;:28::i;:::-;831:35;;;;676:197;;;:::o;12180:121:1:-;;;;:::o;879:220:7:-;961:12;2106:66:6;1003:21:7;;993:6;:31;985:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1076:4;1065:27;;;;;;;;;;;;:::i;:::-;1058:34;;879:220;;;;:::o;7:99:9:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:::-;5295:6;5344:2;5332:9;5323:7;5319:23;5315:32;5312:119;;;5350:79;;:::i;:::-;5312:119;5470:1;5495:53;5540:7;5531:6;5520:9;5516:22;5495:53;:::i;:::-;5485:63;;5441:117;5236:329;;;;:::o;5571:60::-;5599:3;5620:5;5613:12;;5571:60;;;:::o;5637:142::-;5687:9;5720:53;5738:34;5747:24;5765:5;5747:24;:::i;:::-;5738:34;:::i;:::-;5720:53;:::i;:::-;5707:66;;5637:142;;;:::o;5785:126::-;5835:9;5868:37;5899:5;5868:37;:::i;:::-;5855:50;;5785:126;;;:::o;5917:141::-;5982:9;6015:37;6046:5;6015:37;:::i;:::-;6002:50;;5917:141;;;:::o;6064:161::-;6166:52;6212:5;6166:52;:::i;:::-;6161:3;6154:65;6064:161;;:::o;6231:252::-;6339:4;6377:2;6366:9;6362:18;6354:26;;6390:86;6473:1;6462:9;6458:17;6449:6;6390:86;:::i;:::-;6231:252;;;;:::o;6489:474::-;6557:6;6565;6614:2;6602:9;6593:7;6589:23;6585:32;6582:119;;;6620:79;;:::i;:::-;6582:119;6740:1;6765:53;6810:7;6801:6;6790:9;6786:22;6765:53;:::i;:::-;6755:63;;6711:117;6867:2;6893:53;6938:7;6929:6;6918:9;6914:22;6893:53;:::i;:::-;6883:63;;6838:118;6489:474;;;;;:::o;6969:117::-;7078:1;7075;7068:12;7092:180;7140:77;7137:1;7130:88;7237:4;7234:1;7227:15;7261:4;7258:1;7251:15;7278:281;7361:27;7383:4;7361:27;:::i;:::-;7353:6;7349:40;7491:6;7479:10;7476:22;7455:18;7443:10;7440:34;7437:62;7434:88;;;7502:18;;:::i;:::-;7434:88;7542:10;7538:2;7531:22;7321:238;7278:281;;:::o;7565:129::-;7599:6;7626:20;;:::i;:::-;7616:30;;7655:33;7683:4;7675:6;7655:33;:::i;:::-;7565:129;;;:::o;7700:342::-;7808:4;7898:18;7890:6;7887:30;7884:56;;;7920:18;;:::i;:::-;7884:56;7970:4;7962:6;7958:17;7950:25;;8030:4;8024;8020:15;8012:23;;7700:342;;;:::o;8048:117::-;8157:1;8154;8147:12;8171:117;8280:1;8277;8270:12;8450:580;8530:5;8574:4;8562:9;8557:3;8553:19;8549:30;8546:117;;;8582:79;;:::i;:::-;8546:117;8681:21;8697:4;8681:21;:::i;:::-;8672:30;;8759:1;8799:49;8844:3;8835:6;8824:9;8820:22;8799:49;:::i;:::-;8792:4;8785:5;8781:16;8774:75;8712:148;8921:2;8962:49;9007:3;8998:6;8987:9;8983:22;8962:49;:::i;:::-;8955:4;8948:5;8944:16;8937:75;8870:153;8450:580;;;;:::o;9071:803::-;9198:5;9223:112;9239:95;9327:6;9239:95;:::i;:::-;9223:112;:::i;:::-;9214:121;;9355:5;9384:6;9377:5;9370:21;9418:4;9411:5;9407:16;9400:23;;9471:4;9463:6;9459:17;9451:6;9447:30;9500:3;9492:6;9489:15;9486:122;;;9519:79;;:::i;:::-;9486:122;9634:6;9617:251;9651:6;9646:3;9643:15;9617:251;;;9726:3;9755:68;9819:3;9807:10;9755:68;:::i;:::-;9750:3;9743:81;9853:4;9848:3;9844:14;9837:21;;9693:175;9677:4;9672:3;9668:14;9661:21;;9617:251;;;9621:21;9204:670;;9071:803;;;;;:::o;9915:432::-;10017:5;10066:3;10059:4;10051:6;10047:17;10043:27;10033:122;;10074:79;;:::i;:::-;10033:122;10191:6;10178:20;10216:125;10337:3;10329:6;10322:4;10314:6;10310:17;10216:125;:::i;:::-;10207:134;;10023:324;9915:432;;;;:::o;10353:601::-;10468:6;10517:2;10505:9;10496:7;10492:23;10488:32;10485:119;;;10523:79;;:::i;:::-;10485:119;10671:1;10660:9;10656:17;10643:31;10701:18;10693:6;10690:30;10687:117;;;10723:79;;:::i;:::-;10687:117;10828:109;10929:7;10920:6;10909:9;10905:22;10828:109;:::i;:::-;10818:119;;10614:333;10353:601;;;;:::o;10960:180::-;11008:77;11005:1;10998:88;11105:4;11102:1;11095:15;11129:4;11126:1;11119:15;11146:320;11190:6;11227:1;11221:4;11217:12;11207:22;;11274:1;11268:4;11264:12;11295:18;11285:81;;11351:4;11343:6;11339:17;11329:27;;11285:81;11413:2;11405:6;11402:14;11382:18;11379:38;11376:84;;11432:18;;:::i;:::-;11376:84;11197:269;11146:320;;;:::o;11472:180::-;11520:77;11517:1;11510:88;11617:4;11614:1;11607:15;11641:4;11638:1;11631:15;11658:305;11698:3;11717:20;11735:1;11717:20;:::i;:::-;11712:25;;11751:20;11769:1;11751:20;:::i;:::-;11746:25;;11905:1;11837:66;11833:74;11830:1;11827:81;11824:107;;;11911:18;;:::i;:::-;11824:107;11955:1;11952;11948:9;11941:16;;11658:305;;;;:::o;11969:77::-;12006:7;12035:5;12024:16;;11969:77;;;:::o;12052:118::-;12139:24;12157:5;12139:24;:::i;:::-;12134:3;12127:37;12052:118;;:::o;12176:::-;12263:24;12281:5;12263:24;:::i;:::-;12258:3;12251:37;12176:118;;:::o;12300:332::-;12421:4;12459:2;12448:9;12444:18;12436:26;;12472:71;12540:1;12529:9;12525:17;12516:6;12472:71;:::i;:::-;12553:72;12621:2;12610:9;12606:18;12597:6;12553:72;:::i;:::-;12300:332;;;;;:::o;12638:116::-;12708:21;12723:5;12708:21;:::i;:::-;12701:5;12698:32;12688:60;;12744:1;12741;12734:12;12688:60;12638:116;:::o;12760:137::-;12814:5;12845:6;12839:13;12830:22;;12861:30;12885:5;12861:30;:::i;:::-;12760:137;;;;:::o;12903:345::-;12970:6;13019:2;13007:9;12998:7;12994:23;12990:32;12987:119;;;13025:79;;:::i;:::-;12987:119;13145:1;13170:61;13223:7;13214:6;13203:9;13199:22;13170:61;:::i;:::-;13160:71;;13116:125;12903:345;;;;:::o;13254:223::-;13394:34;13390:1;13382:6;13378:14;13371:58;13463:6;13458:2;13450:6;13446:15;13439:31;13254:223;:::o;13483:366::-;13625:3;13646:67;13710:2;13705:3;13646:67;:::i;:::-;13639:74;;13722:93;13811:3;13722:93;:::i;:::-;13840:2;13835:3;13831:12;13824:19;;13483:366;;;:::o;13855:419::-;14021:4;14059:2;14048:9;14044:18;14036:26;;14108:9;14102:4;14098:20;14094:1;14083:9;14079:17;14072:47;14136:131;14262:4;14136:131;:::i;:::-;14128:139;;13855:419;;;:::o;14280:223::-;14420:34;14416:1;14408:6;14404:14;14397:58;14489:6;14484:2;14476:6;14472:15;14465:31;14280:223;:::o;14509:366::-;14651:3;14672:67;14736:2;14731:3;14672:67;:::i;:::-;14665:74;;14748:93;14837:3;14748:93;:::i;:::-;14866:2;14861:3;14857:12;14850:19;;14509:366;;;:::o;14881:419::-;15047:4;15085:2;15074:9;15070:18;15062:26;;15134:9;15128:4;15124:20;15120:1;15109:9;15105:17;15098:47;15162:131;15288:4;15162:131;:::i;:::-;15154:139;;14881:419;;;:::o;15306:223::-;15446:34;15442:1;15434:6;15430:14;15423:58;15515:6;15510:2;15502:6;15498:15;15491:31;15306:223;:::o;15535:366::-;15677:3;15698:67;15762:2;15757:3;15698:67;:::i;:::-;15691:74;;15774:93;15863:3;15774:93;:::i;:::-;15892:2;15887:3;15883:12;15876:19;;15535:366;;;:::o;15907:419::-;16073:4;16111:2;16100:9;16096:18;16088:26;;16160:9;16154:4;16150:20;16146:1;16135:9;16131:17;16124:47;16188:131;16314:4;16188:131;:::i;:::-;16180:139;;15907:419;;;:::o;16332:224::-;16472:34;16468:1;16460:6;16456:14;16449:58;16541:7;16536:2;16528:6;16524:15;16517:32;16332:224;:::o;16562:366::-;16704:3;16725:67;16789:2;16784:3;16725:67;:::i;:::-;16718:74;;16801:93;16890:3;16801:93;:::i;:::-;16919:2;16914:3;16910:12;16903:19;;16562:366;;;:::o;16934:419::-;17100:4;17138:2;17127:9;17123:18;17115:26;;17187:9;17181:4;17177:20;17173:1;17162:9;17158:17;17151:47;17215:131;17341:4;17215:131;:::i;:::-;17207:139;;16934:419;;;:::o;17359:227::-;17499:34;17495:1;17487:6;17483:14;17476:58;17568:10;17563:2;17555:6;17551:15;17544:35;17359:227;:::o;17592:366::-;17734:3;17755:67;17819:2;17814:3;17755:67;:::i;:::-;17748:74;;17831:93;17920:3;17831:93;:::i;:::-;17949:2;17944:3;17940:12;17933:19;;17592:366;;;:::o;17964:419::-;18130:4;18168:2;18157:9;18153:18;18145:26;;18217:9;18211:4;18207:20;18203:1;18192:9;18188:17;18181:47;18245:131;18371:4;18245:131;:::i;:::-;18237:139;;17964:419;;;:::o;18389:180::-;18437:77;18434:1;18427:88;18534:4;18531:1;18524:15;18558:4;18555:1;18548:15;18575:233;18614:3;18637:24;18655:5;18637:24;:::i;:::-;18628:33;;18683:66;18676:5;18673:77;18670:103;;18753:18;;:::i;:::-;18670:103;18800:1;18793:5;18789:13;18782:20;;18575:233;;;:::o;18814:223::-;18954:34;18950:1;18942:6;18938:14;18931:58;19023:6;19018:2;19010:6;19006:15;18999:31;18814:223;:::o;19043:366::-;19185:3;19206:67;19270:2;19265:3;19206:67;:::i;:::-;19199:74;;19282:93;19371:3;19282:93;:::i;:::-;19400:2;19395:3;19391:12;19384:19;;19043:366;;;:::o;19415:419::-;19581:4;19619:2;19608:9;19604:18;19596:26;;19668:9;19662:4;19658:20;19654:1;19643:9;19639:17;19632:47;19696:131;19822:4;19696:131;:::i;:::-;19688:139;;19415:419;;;:::o;19840:221::-;19980:34;19976:1;19968:6;19964:14;19957:58;20049:4;20044:2;20036:6;20032:15;20025:29;19840:221;:::o;20067:366::-;20209:3;20230:67;20294:2;20289:3;20230:67;:::i;:::-;20223:74;;20306:93;20395:3;20306:93;:::i;:::-;20424:2;20419:3;20415:12;20408:19;;20067:366;;;:::o;20439:419::-;20605:4;20643:2;20632:9;20628:18;20620:26;;20692:9;20686:4;20682:20;20678:1;20667:9;20663:17;20656:47;20720:131;20846:4;20720:131;:::i;:::-;20712:139;;20439:419;;;:::o;20864:179::-;21004:31;21000:1;20992:6;20988:14;20981:55;20864:179;:::o;21049:366::-;21191:3;21212:67;21276:2;21271:3;21212:67;:::i;:::-;21205:74;;21288:93;21377:3;21288:93;:::i;:::-;21406:2;21401:3;21397:12;21390:19;;21049:366;;;:::o;21421:419::-;21587:4;21625:2;21614:9;21610:18;21602:26;;21674:9;21668:4;21664:20;21660:1;21649:9;21645:17;21638:47;21702:131;21828:4;21702:131;:::i;:::-;21694:139;;21421:419;;;:::o;21846:224::-;21986:34;21982:1;21974:6;21970:14;21963:58;22055:7;22050:2;22042:6;22038:15;22031:32;21846:224;:::o;22076:366::-;22218:3;22239:67;22303:2;22298:3;22239:67;:::i;:::-;22232:74;;22315:93;22404:3;22315:93;:::i;:::-;22433:2;22428:3;22424:12;22417:19;;22076:366;;;:::o;22448:419::-;22614:4;22652:2;22641:9;22637:18;22629:26;;22701:9;22695:4;22691:20;22687:1;22676:9;22672:17;22665:47;22729:131;22855:4;22729:131;:::i;:::-;22721:139;;22448:419;;;:::o;22873:222::-;23013:34;23009:1;23001:6;22997:14;22990:58;23082:5;23077:2;23069:6;23065:15;23058:30;22873:222;:::o;23101:366::-;23243:3;23264:67;23328:2;23323:3;23264:67;:::i;:::-;23257:74;;23340:93;23429:3;23340:93;:::i;:::-;23458:2;23453:3;23449:12;23442:19;;23101:366;;;:::o;23473:419::-;23639:4;23677:2;23666:9;23662:18;23654:26;;23726:9;23720:4;23716:20;23712:1;23701:9;23697:17;23690:47;23754:131;23880:4;23754:131;:::i;:::-;23746:139;;23473:419;;;:::o;23898:225::-;24038:34;24034:1;24026:6;24022:14;24015:58;24107:8;24102:2;24094:6;24090:15;24083:33;23898:225;:::o;24129:366::-;24271:3;24292:67;24356:2;24351:3;24292:67;:::i;:::-;24285:74;;24368:93;24457:3;24368:93;:::i;:::-;24486:2;24481:3;24477:12;24470:19;;24129:366;;;:::o;24501:419::-;24667:4;24705:2;24694:9;24690:18;24682:26;;24754:9;24748:4;24744:20;24740:1;24729:9;24725:17;24718:47;24782:131;24908:4;24782:131;:::i;:::-;24774:139;;24501:419;;;:::o;24926:222::-;25019:4;25057:2;25046:9;25042:18;25034:26;;25070:71;25138:1;25127:9;25123:17;25114:6;25070:71;:::i;:::-;24926:222;;;;:::o;25154:220::-;25294:34;25290:1;25282:6;25278:14;25271:58;25363:3;25358:2;25350:6;25346:15;25339:28;25154:220;:::o;25380:366::-;25522:3;25543:67;25607:2;25602:3;25543:67;:::i;:::-;25536:74;;25619:93;25708:3;25619:93;:::i;:::-;25737:2;25732:3;25728:12;25721:19;;25380:366;;;:::o;25752:419::-;25918:4;25956:2;25945:9;25941:18;25933:26;;26005:9;25999:4;25995:20;25991:1;25980:9;25976:17;25969:47;26033:131;26159:4;26033:131;:::i;:::-;26025:139;;25752:419;;;:::o;26177:221::-;26317:34;26313:1;26305:6;26301:14;26294:58;26386:4;26381:2;26373:6;26369:15;26362:29;26177:221;:::o;26404:366::-;26546:3;26567:67;26631:2;26626:3;26567:67;:::i;:::-;26560:74;;26643:93;26732:3;26643:93;:::i;:::-;26761:2;26756:3;26752:12;26745:19;;26404:366;;;:::o;26776:419::-;26942:4;26980:2;26969:9;26965:18;26957:26;;27029:9;27023:4;27019:20;27015:1;27004:9;27000:17;26993:47;27057:131;27183:4;27057:131;:::i;:::-;27049:139;;26776:419;;;:::o;27201:227::-;27341:34;27337:1;27329:6;27325:14;27318:58;27410:10;27405:2;27397:6;27393:15;27386:35;27201:227;:::o;27434:366::-;27576:3;27597:67;27661:2;27656:3;27597:67;:::i;:::-;27590:74;;27673:93;27762:3;27673:93;:::i;:::-;27791:2;27786:3;27782:12;27775:19;;27434:366;;;:::o;27806:419::-;27972:4;28010:2;27999:9;27995:18;27987:26;;28059:9;28053:4;28049:20;28045:1;28034:9;28030:17;28023:47;28087:131;28213:4;28087:131;:::i;:::-;28079:139;;27806:419;;;:::o;28231:181::-;28371:33;28367:1;28359:6;28355:14;28348:57;28231:181;:::o;28418:366::-;28560:3;28581:67;28645:2;28640:3;28581:67;:::i;:::-;28574:74;;28657:93;28746:3;28657:93;:::i;:::-;28775:2;28770:3;28766:12;28759:19;;28418:366;;;:::o;28790:419::-;28956:4;28994:2;28983:9;28979:18;28971:26;;29043:9;29037:4;29033:20;29029:1;29018:9;29014:17;29007:47;29071:131;29197:4;29071:131;:::i;:::-;29063:139;;28790:419;;;:::o;29215:230::-;29355:34;29351:1;29343:6;29339:14;29332:58;29424:13;29419:2;29411:6;29407:15;29400:38;29215:230;:::o;29451:366::-;29593:3;29614:67;29678:2;29673:3;29614:67;:::i;:::-;29607:74;;29690:93;29779:3;29690:93;:::i;:::-;29808:2;29803:3;29799:12;29792:19;;29451:366;;;:::o;29823:419::-;29989:4;30027:2;30016:9;30012:18;30004:26;;30076:9;30070:4;30066:20;30062:1;30051:9;30047:17;30040:47;30104:131;30230:4;30104:131;:::i;:::-;30096:139;;29823:419;;;:::o;30248:170::-;30388:22;30384:1;30376:6;30372:14;30365:46;30248:170;:::o;30424:366::-;30566:3;30587:67;30651:2;30646:3;30587:67;:::i;:::-;30580:74;;30663:93;30752:3;30663:93;:::i;:::-;30781:2;30776:3;30772:12;30765:19;;30424:366;;;:::o;30796:419::-;30962:4;31000:2;30989:9;30985:18;30977:26;;31049:9;31043:4;31039:20;31035:1;31024:9;31020:17;31013:47;31077:131;31203:4;31077:131;:::i;:::-;31069:139;;30796:419;;;:::o;31221:166::-;31361:18;31357:1;31349:6;31345:14;31338:42;31221:166;:::o;31393:366::-;31535:3;31556:67;31620:2;31615:3;31556:67;:::i;:::-;31549:74;;31632:93;31721:3;31632:93;:::i;:::-;31750:2;31745:3;31741:12;31734:19;;31393:366;;;:::o;31765:419::-;31931:4;31969:2;31958:9;31954:18;31946:26;;32018:9;32012:4;32008:20;32004:1;31993:9;31989:17;31982:47;32046:131;32172:4;32046:131;:::i;:::-;32038:139;;31765:419;;;:::o;32190:222::-;32283:4;32321:2;32310:9;32306:18;32298:26;;32334:71;32402:1;32391:9;32387:17;32378:6;32334:71;:::i;:::-;32190:222;;;;:::o;32418:122::-;32491:24;32509:5;32491:24;:::i;:::-;32484:5;32481:35;32471:63;;32530:1;32527;32520:12;32471:63;32418:122;:::o;32546:143::-;32603:5;32634:6;32628:13;32619:22;;32650:33;32677:5;32650:33;:::i;:::-;32546:143;;;;:::o;32695:117::-;32804:1;32801;32794:12;32818:307;32879:4;32969:18;32961:6;32958:30;32955:56;;;32991:18;;:::i;:::-;32955:56;33029:29;33051:6;33029:29;:::i;:::-;33021:37;;33113:4;33107;33103:15;33095:23;;32818:307;;;:::o;33131:419::-;33219:5;33244:65;33260:48;33301:6;33260:48;:::i;:::-;33244:65;:::i;:::-;33235:74;;33332:6;33325:5;33318:21;33370:4;33363:5;33359:16;33408:3;33399:6;33394:3;33390:16;33387:25;33384:112;;;33415:79;;:::i;:::-;33384:112;33505:39;33537:6;33532:3;33527;33505:39;:::i;:::-;33225:325;33131:419;;;;;:::o;33569:353::-;33635:5;33684:3;33677:4;33669:6;33665:17;33661:27;33651:122;;33692:79;;:::i;:::-;33651:122;33802:6;33796:13;33827:89;33912:3;33904:6;33897:4;33889:6;33885:17;33827:89;:::i;:::-;33818:98;;33641:281;33569:353;;;;:::o;33928:678::-;34016:6;34024;34073:2;34061:9;34052:7;34048:23;34044:32;34041:119;;;34079:79;;:::i;:::-;34041:119;34199:1;34224:64;34280:7;34271:6;34260:9;34256:22;34224:64;:::i;:::-;34214:74;;34170:128;34358:2;34347:9;34343:18;34337:25;34389:18;34381:6;34378:30;34375:117;;;34411:79;;:::i;:::-;34375:117;34516:73;34581:7;34572:6;34561:9;34557:22;34516:73;:::i;:::-;34506:83;;34308:291;33928:678;;;;;:::o;34612:169::-;34752:21;34748:1;34740:6;34736:14;34729:45;34612:169;:::o;34787:366::-;34929:3;34950:67;35014:2;35009:3;34950:67;:::i;:::-;34943:74;;35026:93;35115:3;35026:93;:::i;:::-;35144:2;35139:3;35135:12;35128:19;;34787:366;;;:::o;35159:419::-;35325:4;35363:2;35352:9;35348:18;35340:26;;35412:9;35406:4;35402:20;35398:1;35387:9;35383:17;35376:47;35440:131;35566:4;35440:131;:::i;:::-;35432:139;;35159:419;;;:::o;35584:104::-;35629:7;35658:24;35676:5;35658:24;:::i;:::-;35647:35;;35584:104;;;:::o;35694:138::-;35775:32;35801:5;35775:32;:::i;:::-;35768:5;35765:43;35755:71;;35822:1;35819;35812:12;35755:71;35694:138;:::o;35838:159::-;35903:5;35934:6;35928:13;35919:22;;35950:41;35985:5;35950:41;:::i;:::-;35838:159;;;;:::o;36003:367::-;36081:6;36130:2;36118:9;36109:7;36105:23;36101:32;36098:119;;;36136:79;;:::i;:::-;36098:119;36256:1;36281:72;36345:7;36336:6;36325:9;36321:22;36281:72;:::i;:::-;36271:82;;36227:136;36003:367;;;;:::o

Swarm Source

ipfs://05ea81d35350993eeb8bb602e8e07926e5558af80e57f7c48779a8f2f601e556
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.